作者q1qip123 (wtlee)
看板Grad-ProbAsk
標題[理工] 計組 data hazard相關問題
時間Mon Jan 1 19:06:39 2018
想請問
若發生load_use data hazard的,則load的下個指令add必須停在ID ,再下個cycle來才能在EX正確運算
http://i.imgur.com/ZgnPHbj.jpg
那發生branch跟前面指slti資料相依時,為甚麼是停在ID而不是IF
http://i.imgur.com/88Bx8kd.jpg
(圖表分別在張凡課本(上)553跟534)
-----
Sent from JPTT on my OPPO R7sf.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.74.199
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1514804802.A.40F.html
※ 編輯: q1qip123 (218.173.74.199), 01/01/2018 19:16:35
※ 編輯: q1qip123 (218.173.74.199), 01/01/2018 20:45:54
1F:推 PunchShadow: 要IF完才會知道有沒有Data Hazard吧 01/01 20:59
2F:→ q1qip123: 停在if代表解瑪完了啊 01/01 21:02
3F:→ PunchShadow: 所以所有Stall都會停在ID(如果我沒記錯的話) 01/01 21:02
4F:→ PunchShadow: 對呀,所以要IF後在Hazard Unit裡面再去設定Stall 01/01 21:10
5F:→ PunchShadow: 然後Hazard Control Unit我記得是在ID Stage裡 01/01 21:11
6F:→ q1qip123: 但是這樣不就不能重新從if拿到正確的指令了嗎? 01/01 21:15
7F:→ PunchShadow: 不用重新拿指令,它只是在等資料而已 01/01 21:19
8F:→ q1qip123: 啊啊 我錯了 我重新想一次 01/01 21:19
9F:→ PunchShadow: 除非是碰到Control Hazard才要Flush掉IF的指令 01/01 21:20
10F:推 olen0622: 重看管線圖 beq可以再ID stage判斷完 IF連指令都還不知 01/01 21:22
11F:→ olen0622: 道吧 01/01 21:23
12F:→ q1qip123: 因為課本沒畫branch資料相依的圖,只有文字敘述而已 01/01 21:40
13F:→ q1qip123: 那這樣其實我也可以把hazard detection移到ex stage只是 01/01 21:43
14F:→ q1qip123: 比較浪費這樣? 01/01 21:43
15F:→ PunchShadow: 不行,因為branch在ID就已經判斷出下個指令 01/01 21:58
16F:→ PunchShadow: 若在EX才進行Hazard訊號線的處理已經太遲 01/01 21:59
17F:→ q1qip123: 本來是想說連判斷也改到EX,不過這樣branch發生就又要fl 01/01 22:14
18F:→ q1qip123: ush,好像不會更好 01/01 22:14
19F:→ q1qip123: 我瞭解了 感謝!!! 01/01 22:15
20F:→ q1qip123: 新年快樂XD 01/01 22:16
21F:推 moneylon: 小弟想順便請問一下 上面那張圖的第4小題 src1 src2 是 01/04 23:20
22F:→ moneylon: 怎麼判斷的呢 01/04 23:20