缓存一致性中的MESI协议

时间:2014-07-17 19:26:18

标签: caching computer-architecture register-transfer-level mesi

我对MESI协议有疑问。

(1)考虑在实现MESI缓存一致性协议的单处理器系统上运行的以下代码片段:

I1:加载$ s1,[A] I2:加载$ s2,[B] I3:添加$ s1,$ s2,$ s3 I4:存储$ s3,[C] I5:sub $ s3,1,$ s4 I6:存储$ s3,[A]

假设写直通缓存策略。如果将内存块A,B和C加载(如果需要)到单个处理器上的两个不同的高速缓存块(最初为空),请完成下表以确定包含A,B,C的块的高速缓存状态。指令执行。

我对此的回答是:

Step/State                A                   B               C
I1                        E                   I               I
I2                        E                   E               I
I3                        E                   E               I
I4                        I                   I               E
I5                        I                   I               E
I6                        E                   I               I

(2)在以下RTL中

I1: R1 <-[6] 
I2: R2 <-[4] 
I3: R3 <- R1 + R2 
I4: [6]<- R3 
I5: R4 <- R4 - 1 
I6: [4]<- R4 

假设写直通缓存策略。如果内存块4和6加载到两个不同的 单个处理器上的缓存块(最初为空)

我的回答是

Step/state            Block 4                Block 6
Initial                 I                      I
I1                      I                      E
I2                      E                      E
I3                      E                      E
I4                      I                      E(write miss, AOW)
I5                      I                      E
I6                      E(write miss, AOW)     I

我的回答是否正确?非常感谢你提前。

1 个答案:

答案 0 :(得分:0)

第一个问题的答案取决于您的写入策略以及您的层次结构中是否有多个缓存级别。您使用的是写分配还是无写分配?假设你有回写的L2是公平的吗?

如果您假设没有写入分配,则存储(I4)将在缓存周围写入并且根本不请求该行,因此它将保持无效。

如果您假设写分配策略,则将在M状态下请求缓存行C(至少在一个缓存级别中,并且肯定在LLC中)。所以这里的答案取决于您拥有的缓存数量以及写入策略。

但是I4不应该使A或B无效,因此它们都保持独占模式。它们失效的唯一方法是,如果另一个处理器要写入它们或者您有冲突。我不清楚你的内存位置A,B和C是如何映射到缓存行的。如果它们是一对一且缓存中没有冲突,那么A和B将保持独占模式,如果存在冲突,则需要根据替换策略来决定。

第二个问题的答案还取决于缓存的数量以及您的LLC是否回写。当I4写入块6时,它已经在缓存中,这意味着它将修改此缓存和较低级缓存,它将被标记为M(假设较低级缓存是回写)。同时,块4不会失效。

当I6写入块4时,完全相同的事情发生。块将被写入此缓存中以及低级缓存中。较低级别的缓存将标记为M(同样,假设较低级别的缓存是回写)

如果你澄清所有这些假设,我可以勾勒出正确的(在我看来)图表。

希望这有帮助!