我有一个关于 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
请问我的回答正确吗?非常感谢您提前。