→ ken52011219: 試想 Forwarding 的用處是將ID傳進EX錯誤的值提前先 11/09 13:51
→ ken52011219: 把上一個指令OR上上個指令的正確值 直接傳回「EX」的 11/09 13:52
→ ken52011219: input端 那把BEQ運算提前改為由ID Stage就先行運算 11/09 13:54
→ ken52011219: 是否 Forwarding在「ID」內就失去功用了 11/09 13:55
→ ken52011219: 我認為 BEQ 必須乖乖等到 LW到WB才可以開始運算 @@ 11/09 13:56
→ ken52011219: 許久未碰Pipeline 有誤請更正 謝謝 11/09 13:57
推 gary19941208: Beq 要等到C6才能用forwarding 從lw的MEM拿到正確 11/09 14:00
→ gary19941208: 的s1,所以C6時beq還在ID,C7時add才會IF 11/09 14:00
→ Gabino: 大概了解兩位想表達的意思 若beq在X階段決定是否分支 前 11/09 14:17
→ Gabino: 提是在X階段 須拿到正確的資料 11/09 14:17
→ Gabino: 在書上都找不太到相關說明 不知道是不是太顯而易見..... 11/09 14:18
→ gary19941208: 應該吧...在哪個階段決定只是硬體不一樣,但是程式 11/09 14:38
→ gary19941208: 要正確執行input當然要是正確的資料 11/09 14:38
推 ken52011219: 再難的題目把原理攤開來看基本上都可以解決 11/09 14:39
→ ken52011219: 剩下的就是解題速度了 11/09 14:41
→ Gabino: 感謝兩位大大的指點 第一個問題 不知道有沒有什麼看法 還 11/09 14:56
→ Gabino: 是覺得我語焉不詳... 11/09 14:56
→ ken52011219: 第一個問題 是可以呀 並沒有衝突 11/09 15:29
→ gary19941208: 2.a或2.b吧 11/09 15:31
→ gary19941208: 不過 如果是lw連beq然後又是在ID決定的話就不是上述 11/09 15:35
→ gary19941208: 四種了 11/09 15:35
→ Gabino: 以lw連beq來說的話 forwarding 11/09 15:43
→ Gabino: 是該看 MEM/WB.RegisterRt ? 11/09 15:44
→ Gabino: 應該說從lw前饋回去都要看Rt不是嘛? 11/09 15:57
→ Gabino: 可是上述四種都是只有從Rd看 11/09 15:58
→ gary19941208: 噢對,lw要看rt,所以不行 11/09 16:10
→ ken52011219: Forwarding看Rd 呀@@ 跟hazard Detect Unit搞混了吧 11/09 16:48
→ ken52011219: If (ID/EX.MemRead and ((ID/EX.Register.Rt = IF/ID 11/09 16:49
→ ken52011219: .RegisterRs)or(ID/EX.RegisterRt =IF/ID.RigisterRt 11/09 16:50
→ ken52011219: ))) then stall Pipeline 11/09 16:51
→ ken52011219: 在ID中偵測是否為load-use 後 EXE 偵測是否需要For- 11/09 16:53
→ ken52011219: warding 這兩段偵測是不同的 沒有衝突 11/09 16:53
→ ken52011219: 若在ID偵測到是Load-use 就先Stall一次 11/09 16:56
→ Gabino: 可是lw不是沒有Rd嘛? 11/09 17:06
→ ken52011219: 我大概知道哪邊誤解了 所以Rd帶入0 不合forwarding 11/09 17:17
→ ken52011219: 但對於整個系統不會有衝突 我的意思是這個 11/09 17:18
→ Gabino: 那lw要怎在MEM/WB 前饋給 ID/EX ? 11/09 17:25
→ ken52011219: Load use 時 會先stall 也因此不用再帶入forwarding 11/09 17:25
→ ken52011219: 抱歉講錯 Rd不會為0 而是由IF/EXE RegisterRs Regis- 11/09 17:45
→ ken52011219: 更正 是由 ID/EXE RegisterRt,RegisterRd mux控制 11/09 17:46
→ ken52011219: 根據Mux來決定 哪一個為EXE/MEM RegisterRd 及 11/09 17:47
→ ken52011219: MEM/WB RegisterRd 隨意找一張擁有pipeline的圖便知 11/09 17:48
→ ken52011219: 啊啊啊 IF/ID 11/09 18:02
→ Gabino: 感謝大大 懂了~ 看到那個mux了QAQ 11/09 18:09
→ Gabino: 怎麼計組每張圖都東簡化一點西簡化一點... 找到快起笑 11/09 18:10
→ ken52011219: 不會 pipeline我也都忘記了QQ.. 11/09 18:31
推 gary19941208: 感謝大大,都忘了那個mux,雖然實際上是rt不過名字 11/09 20:37
→ gary19941208: 都是rd 11/09 20:37