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

3
我在阅读有关高速缓存一致性协议的讲座幻灯片时遇到了以下问题: 如果使用具有写通策略的缓存,哪些MESI状态是相关的?
答案也已经给出:I(无效)和S(共享未修改)。
我知道M(修改独占)状态不相关,因为带有写通策略的缓存会将更改传播到主内存中。
状态E(独占未修改)不相关,因为它仅在独占读错失替换时发出(并且随着进一步的读命中而保留)。
有人能解释一下所给的答案吗?
1个回答

2
正如你所提到的,M状态显然是无用的,因为你从不在缓存中保留修改过的数据。
至于“独占”状态,请记住,在某种程度上,它比共享状态更强,因为在WB缓存中,它保证对该行的写入不需要先获取所有权并使其他副本失效,而是可以直接写入该行而无需离开本地缓存。换句话说,从E到M的转换很简单,而从S到M的转换更加复杂,需要首先使所有其他副本失效。
另一方面,在WT缓存中,你已经保证没有人持有该行的修改版本,并且更重要的是,你没有在本地缓存中进行简单的转换的好处(因为你必须将数据写出去),因此并不需要“独占”状态——你无法从中获得任何好处。事实上,你可能会因此而受到损失,因为拥有E状态会迫使你对任何读取相同行的其他核心发送嗅探(E->S转换)。
当然,在外部写入时,你仍需要使所有其他副本失效,但你不需要E和S之间的区别来告诉你是否存在它们,通常有一个嗅探过滤器或其他列表来告诉你哪些核心需要嗅探。

谢谢您的回答。独占状态已被删除,但即使缓存直接写入更改,为了正确读取,即决定何时从缓存或主内存中读取,仍然必须区分无效和有效的缓存行 - 这使得 IS 成为唯一相关的状态。 - mike
我并不完全认为在写回缓存中排他状态是无用的。能够立即提交写入可能会有一些优势。此外,对(独占)缓存命中的写入(不需要远程失效)可能比远程节点拥有数据的读取未命中更常见。此外,出于带宽或延迟原因,这样的读取未命中可能仍然希望从该缓存请求数据。内存一致性似乎进一步复杂了权衡(排他写入可以被积极地缓冲[b/w和延迟])。 - user2467198

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接