假设我们有一台多核机器。核心 1 尝试写入变量 X,它的 L1d 缓存中没有该变量缓存行,因此它广播了一个 RFO 。同时,它将存储写入核心 1 中的存储缓冲区,因为它没有从每个核心获得对包含 X 的缓存行的独占所有权的确认。
现在,Core 1 获得了对 X 所在的缓存行所有权的请求。
(想象一下,现在核心 2 正在尝试修改变量 X - 也许这是线程正在执行的共享计数器x+=local_count
)
核心会确认这个请求并将其存储在失效队列中,还是核心不会响应它,因为它仍处于阶段转换到独占模式的中间?我觉得解决这两种情况都可能涉及一些开销和簿记,除非我遗漏了一些非常基本的东西。