下面是一段MIPS指令序列: add$t1,$s1,$s0 #R[$t1]←R[$s1]+R[$s0] sub$t2,Ss0,$s3 #R[$t2]←R[$s0]-R[$s3] add$t1,St1,$t2 #R[$t1]←R[$t1]+

admin2017-11-20  19

问题 下面是一段MIPS指令序列:
add$t1,$s1,$s0    #R[$t1]←R[$s1]+R[$s0]
sub$t2,Ss0,$s3    #R[$t2]←R[$s0]-R[$s3]
add$t1,St1,$t2    #R[$t1]←R[$t1]+R[$t2]
    假定在一个采用“取指、译码/取数、执行、访存、写回”的五段流水线处理器中执行上述指令序列,请回答下列问题:
若不采用“转发”技术的话,需要在何处、加入几条nop指令能保证这段指令序列的执行避免数据冒险。

选项

答案不采用“转发”技术的话,就只能通过在第3条指令前加nop指令来延迟第3条指令的执行。因为只有第2条指令把数据写回到寄存器$t2后(因第1条指令比第2条早完成,故此时第一条指令已经把数据写回到寄存器$t1中),第3条指令才能从$t2取到正确的值,所以第2条指令的“写回”流水段后面才应该是第3条指令的“译码/取数”流水段,为此,在第2条和第3条指令之间必须插入3条nop指令,见表8-8。 [*]

解析
转载请注明原文地址:https://kaotiyun.com/show/tVRi777K
0

最新回复(0)