【问题标题】:MESI protocol in cache conherence缓存一致性中的 MESI 协议
【发布时间】:2014-07-17 19:26:18
【问题描述】:

我有一个关于 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

请问我的答案正确吗?非常感谢您。

【问题讨论】:

  • 为什么要使块 A 和 B 无效?

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


【解决方案1】:

第一个问题的答案取决于您的写入策略以及您的层次结构中是否有多个缓存级别。您使用的是 write-allocate 还是 No-write-allocate?假设您拥有可回写的 L2 是否公平?

如果您假设 NO-write-allocate,则存储 (I4) 将写入缓存并且根本不请求该行,因此它将保持无效。

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

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

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

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

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2021-06-18
    • 2015-01-23
    • 1970-01-01
    • 2020-03-13
    • 2015-10-30
    相关资源
    最近更新 更多