2016-03-08 84 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)。