我对缓存一致性中的真/假共享缺失有疑问。
X1和X2在块B中。块B最初在处理器P1和P2的专用高速缓存中。系统使用MSI协议。给出了以下事件顺序我发现(3)将是错误的共享缺失,因为(1)即使X2的值没有变化,也会使P1中的B副本无效。并且(6)应该是True分享未命中,因为(5)更新了X2,并且需要将其传达给P2。
如何对其他人进行分类(如“真/假”分享失误)?赞赏对每个分类的很好的解释。
我真的对True分享小姐的概念感到困惑。错误的共享缺失很容易理解。
如果需要更多信息,请发表评论。
答案 0 :(得分:0)
我对您的术语不熟悉。在错误共享中, false 的含义是不正确,而不是布尔或逻辑谬误。通常,要对其进行分析,请查看每次操作后该块将位于的 state ;以及实现该状态的交易。例如,假设MESI缓存协议:
op# P1 P2 Trans
0 I I 0 -- assume invalid to start
1 I M R+I
2 I M 0
3 S S r
4 I M X
5 M I r+I
6 S S r
事务是R =系统读取,I =无效,r =本地读取。如果您是手臂型,则认为system =外部,local =内部。所以我们看到1 * Read + 3 * cacheread + 2 * Invalidate;或压缩的3个系统,3个本地。
现在,如果我们假设X1和X2位于不同的块中
op# P1 P2 Trans
0 I,I I,I
1 I,I M,I R+I
2 I,I M,S R
3 I,S M,S r
4 I,S M,S 0
5 I,M M,I R+I
6 I,S M,S r
我们看到3 *读取2 *读取2 *无效;或5个系统,2个本地。 由此看来,将X1,X2放在单独的块中并不会明显改善此工作量。即使Invalidate + Read已折叠,