有和没有转发的MIPS管道

时间:2015-11-19 18:45:17

标签: mips pipeline forwarding

我正在查看以下MIPS代码中有和没有转发的停顿数。我试图更好地了解数据路径中何时需要数据。

lw $10, 0($4)
sw $10, 24($5)

通过转发,我得到以下结论,理解在存储器阶段之后,从加载字指令进入寄存器10的值是可用的,并且在存储器阶段之前存储字指令需要该值。因此,零档位。

F D E M W
  F D E M W

如果没有转发,寄存器10将不会从加载字指令中获得正确的值,直到在写回阶段的时钟周期的前半部分写入为止。

在解码阶段,说存储字指令在时钟周期的后半部分需要正确的寄存器10值是否正确,产生以下两个档位:

F D E M W
  F F F D E M W

或者是存储字指令在执行阶段需要它产生这两个档位的序列:

F D E M W
  F D D D E M W

我想我想在脑海里用一种方法来表达我的理解。

1 个答案:

答案 0 :(得分:1)

在没有转发的情况下,加载字指令将在写回阶段的时钟周期的前半部分之后更新寄存器10。存储字指令需要在解码阶段的时钟周期的后半部分读取寄存器10中的值,在解码阶段产生以下2个停顿:

F D E M W
  F D D D E M W