MIPS管道停顿:LW之后进入SW

问题描述 投票:0回答:1

我对使用相同$ 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阶段需要它,难道不通过转发而不解决管道问题就解决了吗?

mips pipeline cpu-architecture forwarding
1个回答
0
投票

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

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

MIPS pipeline

© www.soinside.com 2019 - 2024. All rights reserved.