单选题 流水线中有3类数据相关冲突:写后读相关、读后写相关、写后写相关。那么下列3组指令中存在读后写相关的是______。
  • A. I1 SUB R1,R2,R3; (R2)+(R3)→R1 I2 ADD R4,R5,R1; (R5)+(R1)→R4
  • B. I1 STA M,R2; (R2)→M,M为主存单元 I2 ADD R2,R4,R5; (R4)+(R5)→R2
  • C. I1 MUL R3,R2,R1; (R2)×(R1)→R3 I2 SUB R3,R4,R5; (R4)-(R5)→R3
  • D.以上都不是
【正确答案】 B
【答案解析】[解析] A选项,I1指令运算结果应先写入R1,然后在指令I2中读出R1内容。由于I2指令进入流水线,使得I2指令在I1指令写入R1前就读出R1的内容,发生“写后读相关”。
B选项,I1指令应先读出R2内容并存入存储单元M中,然后I2指令将运算结果写入R2中。但由于I2指令进入流水线,使得I2指令在I1指令读出R2之前就写入R2,发生“读后写相关”。
C选项,I2指令应该在I1指令写入R3之后,再写入R3。现由于I2指令进入流水线,如果I2指令减法运算在I1指令的乘法运算之前完成,使得I2指令在I1指令写入R3之前就写入R3,导致R3内容错误,发生“写后写相关”。
所以选B。