在下面针对Illinois MESI协议所示的状态转换图中,为什么在从状态S转换到状态I时存在Flush'信号,并且在观察BusRdX信号时从状态E转到状态I时存在Flush信号。处于这些状态的处理器的缓存内容不会与主内存中的内容相同吗?如果是这样,这些缓存会指示我刷新他们的数据是什么意思?另外,Flush和Flush之间究竟有什么区别。只是在Flush中,数据是通过一个缓存传输的吗?
转换图:
答案 0 :(得分:1)
这些状态下处理器的缓存内容不会相同 作为主存中的内容?
这取决于写入策略。
如果使用直写策略并且所有更改都直接写回主内存,那么您是对的。
但回写并非如此。可以通过窥探读取(或与您的diagram:BusRd相关的状态从 M 过渡到 S ,即从总线读取请求而无意修改),此时缓存与主内存不一致,因此如果缓存无效,则必须将内容写回主内存。
另外,Flush和Flush'
之间究竟有什么区别
我假设你有来自维基百科的图表;有一个更新版本,我在上面链接到它,并没有做出这种区分。