【发布时间】: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 之前,管道会停止吗?
抱歉,如果在其他地方问到这个问题(我没有发现它)。非常感谢。
问候, 菲尔
【问题讨论】: