【发布时间】: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