MESI:为什么我们需要 write-miss 来从共享转移到修改

问题描述 投票:0回答:1

Hennessy/Patterson 所著的《计算机架构》一书,第 6 版,第 394 页,包含一个使用 2 个处理器的真实共享和错误共享未命中的示例。

这是书中的示例

它表示最初(在时间戳 #1 之前),“假设单词 z1 和 z2 位于同一缓存块中,该块在 P1 和 P2 的缓存中处于共享状态。”

我假设本示例假设的底层一致性协议是 MSI。

我的问题:为什么在时间戳 #1 中我们有一个真正的共享miss,而不是真正的共享hit

更一般地说,为什么在 MSI 中从共享转移到修改需要处理器 P1(想要写入 Z1)的写入未命中,而不仅仅是总线上的命中 + 失效(以使 Z1 中同一缓存行的所有其他可能副本无效)其他处理器)?

如果缓存状态已经共享(意味着在缓存和主存储器)。

cpu cpu-architecture cpu-cache mesi
1个回答
0
投票

处于共享状态的行不可写,我们没有独占所有权。 (修改状态。或者 MESI 中的独占状态,它添加了未修改但独占拥有的 E 状态,可以在不与其他核心通信的情况下翻转到 M 状态。)

该行的存储无法立即提交到缓存,因此这是缓存未命中,因为核心(或存储缓冲区)必须等待,就像处于无效状态一样。

如果我们有一个有效的共享副本,我们可以只发送一个无效并等待响应,而不是一个读取所有权(RFO),所以我们不需要另一个核心或内存控制器来向我们发送该行的新副本。 但我们仍然必须等待所有其他缓存已使其副本失效的确认。

另请参阅 https://en.wikipedia.org/wiki/MESI_protocol

© www.soinside.com 2019 - 2024. All rights reserved.