关于 MIPS R3051 流水线行为的查询(MIPS-I 架构)

Query about MIPS R3051 pipeline behaviour (MIPS-I architecture)

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

我在 IDT 的程序员手册中注意到,它指定计算指令可以在其 RD 阶段访问管道中位于它们前面的其他计算指令的结果,即使前面的指令尚未将其结果提交给WB阶段的相关注册。这是通过 "special logic within the execution engine" 完成的,以防止出现停顿。

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

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

(a) r1 的旧内容 或者

(b) "special logic" 是否允许将 r1 的新值转发给它?或者

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

如果在别处问到这个问题(我还没有发现),我深表歉意。非常感谢。

此致, 菲尔

这里的关键是牢记这个"special logic"只是一个优化:它使事情变得更快,这里绕过一些东西以避免停顿,但它仍然必须确保结果不变.否则将不可能或至少难以使用此硬件进行编程。

因此,要回答您的问题,您会看到情况 (b) 或 (c),但绝不会看到情况 (a)。