MIPS管线失速:LW之后切换为SW

时间:2020-05-31 14:23:25

标签: mips pipeline cpu-architecture forwarding

对于使用相同$ rt的LW之后发出的存储字指令如何导致MIPS中的流水线停顿,我感到困惑。 考虑以下代码块:

  lw $s0,  0($t0)
  sw $s0, 12($t0)
  lw $s1,  4($t0)
  sw $s1, 16($t0)
  lw $s2,  8($t0)
  sw $s2, 20($t0)

这里有3个单词在内存中移动。例如,在前两行中,$ s0被加载到中, 然后将其内容保存回内存中。我不确定sw指令在EX阶段还是在MEM阶段是否需要$ s0。如果在MEM阶段需要它,难道不通过转发而不解决管道问题就可以解决它吗?

1 个答案:

答案 0 :(得分:1)

假设地,是的。直接转发到MEM阶段将使得有可能背对背执行相关的LWSW。只要加载的单词至少由SW 存储SW不可能在没有管道冒泡的情况下将加载的单词用作地址的基础,否则将需要及时转发。

但是通常情况下,您会看到如下所示的管道(来源:SIM-PL中的5级管道式MIPS模型),只有一个转发器馈入EX。有了这样的设置,就无法从LW转发到SW,那里没有所需的硬件。

MIPS pipeline

相关问题