推 TEPLUN: R tpye接beq也要hazard detection unit偵測做stall 因為be 11/14 12:37
→ TEPLUN: q在第二階段決定要不要跳 等前面ori算出來 beq也用錯的暫 11/14 12:37
→ TEPLUN: 存器比較出結果了 但是那個結果沒辦法forward到Id階段給be 11/14 12:37
→ TEPLUN: q 也就是說即使stall了 下一cycle ori跑到mem beq在Id仍然 11/14 12:37
→ TEPLUN: 無法取得ori運算的結果(如果有forwarding 他要畫一條從Ex 11/14 12:37
→ TEPLUN: /Mem到ID階段那個給beq用的比較器的datapath) 11/14 12:37
推 TEPLUN: D&O為什麼要 等高手解答... 11/14 12:38
→ seika555: 我版本的解答長這樣耶 是因爲mem前寫後讀嗎 11/14 14:58
推 y2j60537: PIPELINE偵測到LO和OB兩個HARZARD並STALL後,應該就偵測 11/14 15:28
→ y2j60537: 不到LB的吧,指令間隔已經大於2了,正確解答應該是哪個? 11/14 15:28
推 skyHuan: 如果偵測hazard的是硬體不是compiler插nop,在ID解碼後才 11/14 16:23
→ skyHuan: 會stall,這時候之後的指令已經進來了hazard detection 11/14 16:23
→ skyHuan: 還是會判斷有hazard 11/14 16:23
推 skyHuan: 但stall是把control的9個bit清成0,指令的32個bit還是在 11/14 16:26
→ skyHuan: ,而forward unit是看指令的32個bit判斷要不要forwarding 11/14 16:26
→ skyHuan: 的,應該還是會forwarding只是control都是0所以forwardin 11/14 16:26
→ skyHuan: g不影響(? 11/14 16:26
→ skyHuan: 不太確定是不是這樣因為解答也沒寫有forwarding >< 11/14 16:26
→ y2j60537: 我的理解是beq在ID時lw已經在WB了所以偵測不到,我還是 11/14 17:54
→ y2j60537: 不理解lw跟beq會被偵測到的原因,請大神幫忙糾正 11/14 17:54
→ oldelette: 所以說答案錯嗎 沒有DO跟LB 圖的解答來自張凡題庫書 11/14 19:15
推 seika555: 借問一下 他remark所說的那句話是因為他已經是改良版的b 11/14 20:58
→ seika555: ranch因此需在ID階段算出branch target addr. 所以hazar 11/14 20:58
→ seika555: d-detect-unit才直接做nop而不是用forwarding來解決嗎 11/14 20:58
推 nannnnn: 會不會是因為原本有hazard只是剛好被另外一組load use解 11/15 19:00
→ nannnnn: 決掉了才這樣寫 11/15 19:00