2014-11-14 77 views
1

这是一个基于总线的共享记忆多处理器系统,带有2个CPU,MESI(Illionois)协议和回写缓存。两个CPU访问共享变量B和C.我填写了以下状态缓存,但是我不确定变量修改后会发生什么。是否回到共享状态?缓存一致性MESI协议

enter image description here

回答

1

当高速缓存行被写入,该线的状态变为“M”。在所有其他缓存中,州成为'我'。

因此,表格的最后两行不正确。当P1写入C时,它使P0中的行无效。所以P0缓存中的'M' - VarC应该是'I'。

如果缓存中除写入该行的缓存以外的缓存执行读取操作,则会从“M”状态转换为“S”状态。

+2

还应该注意的是,对于MESI,从M到S的转换涉及对存储器的回写(因为S意味着未修改和共享)。添加拥有的(MOESI)或转发(MESIF)状态可以延迟此回写(理论上,脏块的“所有权”可以转移到进一步的延迟写回,但这增加了复杂性并且缓存一致性已经是“两个难题”之一在计算机科学“)。 –

+0

读取该行的另一个核心可能还会将M行直接转换为无效状态,如果读取请求的话(或者在一些MESI中,假定读取也有很高的导致写入的可能性) – Leeor