在以下MIPS指令序列中(整个程序未显示):
DADDUI R1, R1, #-8
BNE R1, R2, Loop
我想确认两个指令之间所需的停顿次数(在5级MIPS流水线的背景下 - IF,ID / Reg,EX,MEM,WB),有无转发。
我的理解:
(a)如果没有转发:
在这种情况下,需要2个档位(在周期5中,可以使用寄存器的分相访问在ID阶段读取第二个指令的R1)
(b)如果有转发:
在这种情况下,不需要停顿(第4周期第二条指令的EX阶段可以从第3周期第一条指令的EX阶段的ALU结果转发R1 - 8;这是假设分支在EX阶段检查是否相等)。
如果以上两个答案都正确,有人可以告诉我。
感谢。
答案 0 :(得分:3)
你是对的。有疑问,总是制作显示各种管道阶段的时间线图。在这种情况下,如图所示,这是发生的事情:
时间从左向右移动。转发版本中跨越表行的箭头显示转发的位置。
因此,对于情况(a),浪费了2个周期;对于情况(b),没有浪费循环而且管道没有停止。