2019 组成原理 流水线冒险 选择题
第 18 题

在采用“取指、译码/取数、执行、访存、写回”5段流水线的处理器中,执行如下指令序列,其中s0、 s1、s2 、s3和t2 表示寄存器编号。

//R[s2]←R[s1]+R[s0] //R[s3]+M[R[t2]+0]

//R[s2]←R[s2]+R[s3] //M[R[t2]+0]<R[s2]

I1: add s2,s 1, so

I2: load s3,0 (t2)

I3: add s2,s2,s3

I4:store s2,0(t2)

下列指令对中,不存在数据冒险的是()。

A. I1 和 I3 B. I2 和 I3 C. I2 和 I4 D. I3 和 I4

[tag_link]

正确答案:C

出这四条指令在流水线中执行的过程如下图所示:

2018_Q7_3

数据冒险 指在程序中存在必须等前条指令执行完才能执行后一条指令的情况,此时这两条指令即为数据相关。其中 I1 和 I3、I2 和 I3、I3 和 I4 均发生了写后读相关,因此必须等相关的前条指令执行完才能执行后一条指令。只有 I2 和 I4 不存在数据冒险。所以答案选 C。