【问题标题】:Query about MIPS R3051 pipeline behaviour (MIPS-I architecture)查询 MIPS R3051 流水线行为(MIPS-I 架构)
【发布时间】:2016-06-21 18:45:25
【问题描述】:

我目前正在软件中实施 MIPS R3051,作为我大学项目的一部分。

我注意到在 IDT 的程序员手册中,它指定计算指令可以在 RD 阶段访问流水线中其他计算指令的结果,即使前面的指令尚未将其结果提交到相关寄存器在WB阶段。这是通过“执行引擎中的特殊逻辑”完成的,以防止出现必要的停顿。

我的疑问是这是否也适用于非计算指令(例如跳转类型指令)?

举个例子:如果一条 ADD 指令在其 ALU 阶段计算一个指向 r1 的值,在 RD 的流水线中后面有一条 JR [r1] 指令,JR 指令会得到:

(a) r1 的旧内容 或

(b) 这种“特殊逻辑”是否允许将 r1 的新值转发给它?或

(c) 在 WB 正确提交 r1 之前,管道会停止吗?

抱歉,如果在其他地方问到这个问题(我没有发现它)。非常感谢。

问候, 菲尔

【问题讨论】:

    标签: mips pipeline mips32


    【解决方案1】:

    这里的关键是要牢记,这种“特殊逻辑”只是一种优化:它使事情变得更快,这里绕过了一些东西以避免停顿,但它仍然必须确保结果不变。否则就不可能或至少很难用这种硬件进行编程。

    因此,要回答您的问题,您将看到大小写 (b) 或 (c),但绝不会看到大小写 (a)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-19
      • 2011-08-17
      • 2013-09-08
      • 2014-12-17
      • 2013-07-10
      • 2015-03-28
      • 2013-06-05
      • 2023-03-04
      相关资源
      最近更新 更多