第 19 题
在无转发机制的五段基本流水线中,下列指令序列存在数据冒险的指令对是()。
I1:add R1,R2,R3; / /(R2)+(R3)→R1
I2:add R5,R2,R4; //(R2)+(R4)→R5
I3:add R4,R5,R3; / /(R5)+(R3)→R4
I4:add R5,R2,R6; //(R2)+(R6)→R5
A. I1 和 I2 B. I2 和 I3 C. I2 和 I4 D. I3 和 I4
[tag_link]
正确答案:B
数据冒险 ,即数据相关,指在一个程序中存在必须等前一条指令执行完才能执行后一条指令的情况,则 这两条指令即为数据相关。当多条指令重叠处理时就会发生冲突。首先这两条指令发生写后读相关,并且两条指令在流水线中执行情况(发生数据冒险)如下表所示: I1 I2 时钟 指令 1 2 3 4 5 6 7 取指 译码 运算 访存 写回 取指 译码 运算 访存 写回 指令 I2 在时钟 5 时将结果写入寄存器 (R5),但指令 I3 在时钟 3 时读寄存器(R5)。本来指令 I2 应先写入 R5,指令 I3 后读 R5,结果变成指令 I3 先读 R5,指令 12 后写入 R5,因而发生数据冲突。