首页 文章

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

提问于
浏览
1

在以下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阶段可以从第一周期第一条指令的EX阶段的ALU结果转发R1 - 8;这假设分支在EX阶段检查是否相等) .

如果以上两个答案都是正确的,请有人告诉我 .

谢谢 .

1 回答

  • 3

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

    enter image description here

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

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

相关问题