在采用“取指、译码/取数、执行、访存、写回”5段流水线的处理器中,执行如下指令序列,其中s0、s1、s2、s3和t2表示寄存器编号。 I1: add s2, s1, s0 // R[s2]← R[s1] + R[s0] I2: load s3, 0(t2) // R[3]←M[R[t2] + 0] I3: add s2, s2, s3 // R[2J← R[s2」+ R[s3] I4: store s2, 0(t2) // M[R[t2] + 0]←R[s2] 下列指令对中,不存在数据冒险的是 I3和I4 I2和I3 I1和I3 I2和I4中的那一对,请说明原因
时间: 2023-12-20 16:04:54 浏览: 735
实验四:五级流水线与流水线冒险1
不存在数据冒险的指令对是I1和I3。原因是在I1执行完毕之后,即使在I2和I3执行期间s2的值也不会被修改,因为I2和I3中都没有对s2进行写操作。而在I3执行完毕之后,虽然I4会对s2进行写操作,但是I4的执行需要等到I2和I3执行完毕之后才能执行,因此不存在数据冒险。而I2和I4之间存在数据冒险,因为I2会将t2中的值加上0并存入s3,而在I4执行期间,s2的值可能还没有被计算出来,因此会出现数据冒险。
阅读全文