[理工] 關於管線的一個蠢問題

作者: DoubleFish (他和她的童話故事)   2014-02-21 15:04:05
最近又重複習了pipeline部分
突然冒出一個疑問
可能是問題太蠢了所以爬不到有人問過的文章
只好上來請各位專家釋疑
問題:
pipeline架構下
WB階段會回寫Register File所用到的register number
其決定來源為
Instruction的[20:16]rt與[15:11]rd,
以及
Control讀入[31:26]op後所產生的RegDst控制信號
這三者在ID階段都已經產生出來
為何還要都pass到EX階段才決定出最後的register number
若在ID階段就先產生出來 那ID/EX register就可以省下 5+1 bits
粗略看起來會在Control產生信號後多一個Mux的時間
難道是因為Control+Mux的時間會>Register File access time
所以才捨棄的嘛@@?
但pipeline架構裡通常是由其他存取時間更長的stage來決定cycle time
這樣想上面的理由好像不太合理呀
還請大大們不吝指教
作者: kather (Kather)   2014-02-21 15:21:00
你的問題是想把rt跟rd在ID階段就生出來 然後把結果給EX?也就是兩條線傳兩串資料變成一條線傳一串資料?如果我沒有誤解你的意思的話 你EX階段只會剩下"目的地"而不是原本的rt跟rd , 這樣的話沒辦法做EX的forwarding
作者: DoubleFish (他和她的童話故事)   2014-02-21 15:41:00
謝謝大大解釋,不過我看白算盤(e4)的370的Figure4.56為了作Forwarding特別從ID階段把RsRt的兩個值拉到ID/EX中供forwarding使用而原本的rt,rd仍然使用於mux產出rd並未用於forwarding中耶
作者: kather (Kather)   2014-02-21 15:52:00
假設現在沒有forwarding unit好了那麼你的hazard detection還是需要EX階段的rt好像怪怪的 應該不是這樣 囧

Links booklink

Contact Us: admin [ a t ] ucptt.com