题29
题目
Q:【2019 统考真题】在采用“取指、译码/取数、执行、访存、写回”5 段流水线的处理器中,执行如下指令序列,其中 s0、s1、s2、s3和t2表示寄存器编号。
下列指令对中, 不存在数据冒险的是 ( )。
A. I1 和 I3
B. I2 和 I3
C. I2 和 I4
D. I3 和 I4
分析
A:数据冒险即数据相关, 指在程序中存在必须等前一条指令执行完才能执行后一条指令的情况, 此时这两条指令即为数据相关。
解
C
画出这四条指令在流水线中执行的过程如下图所示。
| 指令 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| add s2, s1, s0 | 取指 | 译码/取数 | 执行 | 访存 | 写回 | |||||||||
| load s3, 0(t2) | 取指 | 译码/取数 | 执行 | 访存 | 写回 | |||||||||
| add s2, s2, s3 | 取指 | 译码/取数 | 执行 | 访存 | 写回 | |||||||||
| store s2, 0(t2) | 取指 | 译码/取数 | 执行 | 访存 | 写回 | |||||||||
| 其中 I1 和 I3、I2 和 I3、I3 和 I4 均发生了写后读相关, 因此必须等相关的前一条指令执行完才能执行后一条指令。 | ||||||||||||||
| 只有 I2 和 I4 不存在数据冒险。 |