在下面显示的伊利诺伊 MESI 协议的状态转换图中,为什么在观察 BusRdX 信号时从状态 S 转换到状态 I 时会出现 Flush 信号,而当从状态 E 转换到状态 I 时会出现 Flush 信号。这些状态下处理器的缓存内容会不会与主内存中的内容相同?如果是这样,这些缓存将状态 I 刷新其数据的意义何在?另外,Flush和Flush'之间到底有什么区别。只是在Flush'中,数据交换由一个缓存传输吗?
过渡图:
在下面显示的伊利诺伊 MESI 协议的状态转换图中,为什么在观察 BusRdX 信号时从状态 S 转换到状态 I 时会出现 Flush 信号,而当从状态 E 转换到状态 I 时会出现 Flush 信号。这些状态下处理器的缓存内容会不会与主内存中的内容相同?如果是这样,这些缓存将状态 I 刷新其数据的意义何在?另外,Flush和Flush'之间到底有什么区别。只是在Flush'中,数据交换由一个缓存传输吗?
过渡图:
这些状态下处理器的缓存内容会不会与主内存中的内容相同?
这取决于写策略。
如果使用直写策略并且所有更改都直接写回主存,那么您是对的。
但对于write-back来说,情况并非如此。通过窥探读取(或与您的图表有关:BusRd,即从总线读取请求而无意修改),可能存在从M到S的状态转换,此时缓存与主存储器不一致,因此如果缓存无效,则必须将内容写回主内存。
另外,Flush 和 Flush 之间到底有什么区别?
我假设你有来自维基百科的图表;有一个更新版本,我在上面链接到它,它没有区别。