用于回写的MESI协议。单个处理器上有2个内核,为简单起见只有L1缓存。
为什么核心1在主内存中保存了任何东西,浪费时间 - 它几乎立即被覆盖了?
我的消息来源:
http://upload.wikimedia.org/wikipedia/commons/9/99/MESI_protocol_activity_diagram.png
https://www.cs.utexas.edu/~pingali/CS395T/2009fa/lectures/mesi.pdf
答案 0 :(得分:1)
有两个原因:
请记住,没有任何共享缓存会过度简化。如果你有一个(并假设它是包容性的),那么核心1将简单地将修改写入其中,而核心2将更快地获得它。其他系统也可以为这种情况实现直接的核心到核心窥探。
一般来说,协议应该假设除了协议明确告诉它之外,没有任何一方知道任何事情。您必须使核心1的线路无效以保持一致性(没有2个核心可以同时修改同一条线路),并且由于您没有其他缓存级别 - 您必须将其写入内存并保证数据不会丢失(不要指望核心2,就核心1而言它不存在,你用你信任的唯一流回应一个神秘的窥探 - 回写到记忆中。)
最后一件事 - 这个流程结束了(在幻灯片中,据我所知),核心2在M状态的自己的缓存中安装线路,并进行修改。从这一点开始,系统可以以任何方式继续(如果线路稍后再被窥探,或者从Core 2的缓存中老化 - 这是另一回事)。该流程不需要Core 2将该行写回内存,因此没有双重写入。