如果使用具有直写策略的缓存,哪些MESI协议状态是相关的?

时间:2015-08-01 11:45:43

标签: caching multiprocessing cpu-architecture cpu-cache mesi

我在阅读有关缓存一致性协议的演讲幻灯片时遇到了以下问题: 如果使用具有直写策略的缓存,哪些MESI状态是相关的?

还给出了答案:我(无效) S(共享未修改)

我理解状态 M(修改独占)是不相关的,因为具有直写策略的缓存无论如何都会将更改传播到主内存。

状态 E(独家未修改)是不相关的,因为它仅在发生与替换的独占读取未命中时发出(并且与进一步的读取命中保持一致)。

有人可以解释给定的答案吗?

1 个答案:

答案 0 :(得分:2)

正如你所提到的,M状态显然是无用的,因为你永远不会在缓存中保留修改过的数据。

至于独家国家:请记住,在某种意义上,它更强大"比共享状态,因为在WB缓存中,它保证对该行的写入不需要首先获得所有权并使其他副本无效,而是可以直接写入该行而不必离开本地缓存。换句话说,从E到M的过渡很简单,而S到M则更复杂,需要先使其他所有复制失效。

另一方面,在WT缓存中,您已经确保没有其他人持有该线路的修改版本,更重要的是 - 您不具备在您的简单过渡中获益的好处本地缓存(因为你必须在外面写数据),所以真的不需要一个独占状态 - 你从中获得它没有任何好处。事实上,你实际上可能会失去它,因为拥有一个E状态会迫使你在同一条线上的任何其他核心发送窥探(E - > S过渡),

当然,在外面写东西时,你仍然需要使所有其他副本无效,但你不需要区分E和S来告诉你它们是否存在,通常在那里' sa snoop过滤器或其他一些列表告诉你哪些核心要窥探。