作者oldelette (oldelette)
看板Grad-ProbAsk
標題[理工]計組 Data Hazard
時間Wed Nov 14 11:04:08 2018
請問這題的hazard
為什麼(D&O) (O&B)要使用Hazard detection unit
不是load 指令才會使用嗎
還有解答最下面那行
它說不能Forward 任何資料到ID stage
是它少拉了哪條線? 看不太出來
https://imgur.com/eiEIJ3l
https://imgur.com/PIsR1Oo
感謝大家了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.41.247
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1542164650.A.242.html
※ 編輯: oldelette (36.239.41.247), 11/14/2018 11:07:06
1F:推 TEPLUN: R tpye接beq也要hazard detection unit偵測做stall 因為be 11/14 12:37
2F:→ TEPLUN: q在第二階段決定要不要跳 等前面ori算出來 beq也用錯的暫 11/14 12:37
3F:→ TEPLUN: 存器比較出結果了 但是那個結果沒辦法forward到Id階段給be 11/14 12:37
4F:→ TEPLUN: q 也就是說即使stall了 下一cycle ori跑到mem beq在Id仍然 11/14 12:37
5F:→ TEPLUN: 無法取得ori運算的結果(如果有forwarding 他要畫一條從Ex 11/14 12:37
6F:→ TEPLUN: /Mem到ID階段那個給beq用的比較器的datapath) 11/14 12:37
7F:推 TEPLUN: D&O為什麼要 等高手解答... 11/14 12:38
9F:→ seika555: 我版本的解答長這樣耶 是因爲mem前寫後讀嗎 11/14 14:58
10F:推 y2j60537: PIPELINE偵測到LO和OB兩個HARZARD並STALL後,應該就偵測 11/14 15:28
11F:→ y2j60537: 不到LB的吧,指令間隔已經大於2了,正確解答應該是哪個? 11/14 15:28
12F:推 skyHuan: 如果偵測hazard的是硬體不是compiler插nop,在ID解碼後才 11/14 16:23
13F:→ skyHuan: 會stall,這時候之後的指令已經進來了hazard detection 11/14 16:23
14F:→ skyHuan: 還是會判斷有hazard 11/14 16:23
15F:推 skyHuan: 但stall是把control的9個bit清成0,指令的32個bit還是在 11/14 16:26
16F:→ skyHuan: ,而forward unit是看指令的32個bit判斷要不要forwarding 11/14 16:26
17F:→ skyHuan: 的,應該還是會forwarding只是control都是0所以forwardin 11/14 16:26
18F:→ skyHuan: g不影響(? 11/14 16:26
19F:→ skyHuan: 不太確定是不是這樣因為解答也沒寫有forwarding >< 11/14 16:26
21F:→ y2j60537: 我的理解是beq在ID時lw已經在WB了所以偵測不到,我還是 11/14 17:54
22F:→ y2j60537: 不理解lw跟beq會被偵測到的原因,請大神幫忙糾正 11/14 17:54
23F:→ oldelette: 所以說答案錯嗎 沒有DO跟LB 圖的解答來自張凡題庫書 11/14 19:15
24F:推 seika555: 借問一下 他remark所說的那句話是因為他已經是改良版的b 11/14 20:58
25F:→ seika555: ranch因此需在ID階段算出branch target addr. 所以hazar 11/14 20:58
26F:→ seika555: d-detect-unit才直接做nop而不是用forwarding來解決嗎 11/14 20:58
27F:推 nannnnn: 會不會是因為原本有hazard只是剛好被另外一組load use解 11/15 19:00
28F:→ nannnnn: 決掉了才這樣寫 11/15 19:00