题11

题目

Q:下列关于数据冒险和转发技术的叙述中, 正确的是 ( )。
I. 并非所有数据冒险都能通过转发技术解决
II. 五段流水线中 load-use 数据冒险会引起至少一个时钟周期的阻塞
III. 前面的分支指令和后面的 ALU 运算指令之间肯定不会发生数据冒险
A. I、 II
B. I、III
C. II、 III
D. I、II、III

分析

A:数据冒险是,如果两个数据之间有依赖,比如后者需要前者
当后者已经启动了,但是前者还没完成,此时就会空等,也就是数据冒险
转发技术感觉和旁路技术是一个很相似的概念

  • 转发技术 (Data Forwarding): 主要目标是将前面指令的运算结果直接传递给后面需要使用该结果的指令,避免等待数据写入寄存器组,从而提高执行速度。
  • 旁路技术 (Data Bypassing): 除了传递运算结果,它还可能包含传递其他中间结果,例如:地址信息、状态信息等,以保证数据的完整性

A
部分数据冒险可以通过转发技术解决, 但有些数据冒险不行, 例如 load-use 类型的数据冒险 (当下一条指令需要用到本条指令的访存结果时)。
load-use 类型的数据冒险会引起一个或多个时钟周期的阻塞, 需要添加空操作指令解决。
若 ALU 运算指令的某个操作数是分支指令转移后的执行结果,就会发生数据冒险。
例如,分支指令 “slt r1,r2,r3”,其含义是如果(r2) ,则 ;
否则
如果紧挨着一条 ALU 运算指令要用到 的值,就会发生数据冒险。