问答题
流水线中有三类数据相关冲突:写后读(RAW)相关;读后写(WAR)相关;写后写(WAW)相关。判断以下三组指令各存在哪种类型的数据相关。
(1)I
1
ADD R,R2,R3;(R
2
+R
3
)→R
1
I
2
SUB R4,R1,R5;(R
1
-R
5
)→R
4
(2)I
3
STA M(x),R3;(R
3
)→M(x),M(x)是存储器单元
I
4
ADD R3,R4,R5;(R
4
+R
5
)→R
3
(3)I
5
MUL R3,R1,R2;(R
1
)×(R
2
)→R
3
I
6
ADD R3,R4,R5;(R
4
+R
5
)→R
3
【正确答案】正确答案:第(1)组指令中,I
1
指令运算结果应先写入R
1
然后在I
2
指令中读出R
1
内容。由于I
3
指令进入流水线,变成I
2
指令在I
1
指令写入R
1
前就读出R
1
内容,发生RAW相关。 第(2)组指令中,I
3
指令应先读出R
3
内容并存入存储单元M(x),然后在I
4
指令中将运算结果写入R
3
。但由于I
4
指令进入流水线,变成I
4
指令在I
3
指令读出R
3
内容前就写入R
3
,发生WAR相关。 第(3)组指令中,如果I
6
指令的加法运算完成时间早于I
5
指令的乘法运算时间,变成指令I
6
在指令I
5
写入R
3
前就写入R
3
,导致R
3
的内容错误,发生WAW相关。
【答案解析】