MIPS管道在有和没有转发的情况下停止

时间:2013-12-24 04:56:15

标签: mips pipeline

在以下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阶段检查是否相等)。

如果以上两个答案都正确,有人可以告诉我。

感谢。

1 个答案:

答案 0 :(得分:3)

你是对的。有疑问,总是制作显示各种管道阶段的时间线图。在这种情况下,如图所示,这是发生的事情:

enter image description here

时间从左向右移动。转发版本中跨越表行的箭头显示转发的位置。

因此,对于情况(a),浪费了2个周期;对于情况(b),没有浪费循环而且管道没有停止。