2016-03-08 115 views
2

我目前在软件中使用MIPS R3051作为我的大学项目的一部分。关于MIPS R3051流水线行为(MIPS-I架构)的疑问

我在IDT的程序员手册中注意到,它指定计算指令可以在其RD阶段访问流水线之前的其他计算指令的结果,即使前进指令尚未将其结果提交给相关在WB阶段注册。这是通过“执行引擎内的特殊逻辑”来完成的,以防止失速。

我的查询是否也适用于非计算指令(例如跳转型指令)?

一个例子:如果ADD指令计算在其ALU级目的地为R1的值,与在管道在RD它后面的JR [R1]指令,将JR指令得到:

(a)中(b)这个“特殊逻辑”是否允许r1的新值被转发给它?或者

(c)流水线会一直停滞,直到r1在WB处被正确提交?如果在其他地方(我没有发现它)要求,道歉。非常感谢。

问候, 菲尔

回答

0

这里的关键是要记住清楚,这“特殊的逻辑”仅仅是一个优化:它使事情更快,这里绕过东西,以便避免失速,但它仍然必须确保结果不变。否则,用这个硬件编程是不可能的,或者至少是很难的。因此,要回答你的问题,你会看到案例(b)或(c),但从来没有案例(a)。