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

看板Grad-ProbAsk作者 (他和她的童話故事)時間12年前 (2014/02/21 15:04), 編輯推噓0(0011)
留言11則, 2人參與, 最新討論串1/1
最近又重複習了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 這樣想上面的理由好像不太合理呀 還請大大們不吝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.60.9

02/21 15:21, , 1F
你的問題是想把rt跟rd在ID階段就生出來 然後把結果給EX?
02/21 15:21, 1F

02/21 15:22, , 2F
也就是兩條線傳兩串資料變成一條線傳一串資料?
02/21 15:22, 2F

02/21 15:29, , 3F
如果我沒有誤解你的意思的話 你EX階段只會剩下"目的地"
02/21 15:29, 3F

02/21 15:30, , 4F
而不是原本的rt跟rd , 這樣的話沒辦法做EX的forwarding
02/21 15:30, 4F

02/21 15:41, , 5F
謝謝大大解釋,不過我看白算盤(e4)的370的Figure4.56
02/21 15:41, 5F

02/21 15:42, , 6F
為了作Forwarding特別從ID階段把RsRt的兩個值拉到ID/EX
02/21 15:42, 6F

02/21 15:43, , 7F
中供forwarding使用而原本的rt,rd仍然使用於mux產出rd
02/21 15:43, 7F

02/21 15:43, , 8F
並未用於forwarding中耶
02/21 15:43, 8F

02/21 15:52, , 9F
假設現在沒有forwarding unit好了
02/21 15:52, 9F

02/21 15:54, , 10F
那麼你的hazard detection還是需要EX階段的rt
02/21 15:54, 10F

02/21 16:00, , 11F
好像怪怪的 應該不是這樣 囧
02/21 16:00, 11F
文章代碼(AID): #1J1lfel1 (Grad-ProbAsk)