[理工] 計組 pipeline stall 相關問題

作者: q1qip123 (wtlee)   2018-01-01 19:06:39
想請問
若發生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)
作者: PunchShadow (PunchShadow)   2018-01-01 20:59:00
要IF完才會知道有沒有Data Hazard吧
作者: q1qip123 (wtlee)   2018-01-01 21:02:00
停在if代表解瑪完了啊
作者: PunchShadow (PunchShadow)   2018-01-01 21:02:00
所以所有Stall都會停在ID(如果我沒記錯的話)對呀,所以要IF後在Hazard Unit裡面再去設定Stall然後Hazard Control Unit我記得是在ID Stage裡
作者: q1qip123 (wtlee)   2018-01-01 21:15:00
但是這樣不就不能重新從if拿到正確的指令了嗎?
作者: PunchShadow (PunchShadow)   2018-01-01 21:19:00
不用重新拿指令,它只是在等資料而已
作者: q1qip123 (wtlee)   2018-01-01 21:19:00
啊啊 我錯了 我重新想一次
作者: PunchShadow (PunchShadow)   2018-01-01 21:20:00
除非是碰到Control Hazard才要Flush掉IF的指令
作者: olen0622 (hong)   2018-01-01 21:22:00
重看管線圖 beq可以再ID stage判斷完 IF連指令都還不知道吧
作者: q1qip123 (wtlee)   2018-01-01 21:40:00
因為課本沒畫branch資料相依的圖,只有文字敘述而已那這樣其實我也可以把hazard detection移到ex stage只是比較浪費這樣?
作者: PunchShadow (PunchShadow)   2018-01-01 21:58:00
不行,因為branch在ID就已經判斷出下個指令若在EX才進行Hazard訊號線的處理已經太遲
作者: q1qip123 (wtlee)   2018-01-01 22:14:00
本來是想說連判斷也改到EX,不過這樣branch發生就又要flush,好像不會更好我瞭解了 感謝!!!新年快樂XD
作者: moneylon (bencool)   2018-01-04 23:20:00
小弟想順便請問一下 上面那張圖的第4小題 src1 src2 是怎麼判斷的呢

Links booklink

Contact Us: admin [ a t ] ucptt.com