3

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

也给出了答案:I (Invalid)S (Shared Unmodified)

我知道状态M(Modified Exclusive)是不相关的,因为带有直写策略的缓存无论如何都会将更改传播到主内存。

状态E (Exclusive Unmodified)是不相关的,因为它仅在发生替换的独占读取未命中时发布(并且与进一步的读取命中一起保留)。

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

4

1 回答 1

2

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

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

另一方面,在 WT 缓存中,您已经保证没有其他人持有该行的修改版本,更重要的是 - 您没有在本地缓存中进行简单转换的好处(因为您无论如何都必须将数据写入外部),因此确实不需要独占状态-拥有它没有任何好处。实际上,您实际上可能会因此而失败,因为拥有 E 状态会迫使您在读取同一行的任何其他核心上发送窥探(E -> S 转换),

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

于 2015-08-01T12:58:58.443 回答