缓存一致性MOESI协议

时间:2010-05-21 13:24:08

标签: multithreading caching

处理器A拥有与处理器B共享的高速缓存行 当B试图写入该行时会发生什么? 另外,如果它是'无效'而不是'共享'会有什么不同吗?
谢谢。

2 个答案:

答案 0 :(得分:1)

我发现了这个:
“如果处理器希望写入自己的缓存行,它必须通知共享该缓存行的其他处理器。根据实现,它可能只是告诉他们使其副本无效(将自己的副本移动到Modified状态),或者它可以告诉他们用新内容更新他们的副本(将自己的副本留在自己的状态)。“

答案 1 :(得分:1)

我假设你在说: - 处理器A使高速缓存行处于“O”状态 - 处理器B使缓存行处于“S”状态

如果处理器B打算修改线路,则处理器A将线路从“O”降级为“I”,处理器B将线路从“S”升级为“M”。有关这两个操作如何发生的详细信息取决于缓存一致性协议的实现方式。窥探或目录。

请注意,在上述情况下,处理器A /内存到处理器B没有数据传输,因为处理器B已经有数据(应该是最新的)。

现在来看,处理器B的行处于'I'状态而不是'S'。 处理器B可能只是修改高速缓存行的一部分。对于a,写入分配,写回缓存,在处理器B写入缓存行之前,缓存行应从处理器A传输到处理器B.

对您的问题的简单回答是:“处于'I'状态时涉及数据传输,而处于's”状态时没有数据传输“