看板 Grad-ProbAsk 關於我們 聯絡資訊
想請問一下這題的b.c小題 https://i.imgur.com/I4xbn9s.jpg 答案 https://i.imgur.com/3V0gwyk.jpg b.為什麼(O.D)跟(L.B)跟(D.B)的hazard可以只靠Hazard detection unit 就能解決,不需 要用到forwarding unit? c.題目說這個線路有提供stall跟forwarding,所以我只有在load use時stall一個clock, B行的branch 在ID階段決定要跳,所以停一個clock,請問這樣的想法錯在什麼地方 先感謝各位大大幫忙!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.187.53.86 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1515060263.A.64F.html
q1qip123: 因為hazard unit是在id跟ex stage偵測,foward是拿ex跟m 01/04 19:33
q1qip123: em/wb比 01/04 19:33
q1qip123: 然後他沒有畫從mem牽回I'd stage的線 所以才要停兩個吧 01/04 19:34
NCTUFAIWEN: L,D有load use,所以stall一個cycle之後就不需要forwd 01/04 19:36
NCTUFAIWEN: 建議把整個圖畫出來吧 這樣直接看很難看懂 才15個 01/04 19:37
NCTUFAIWEN: cycle而已 不難畫 01/04 19:37
NCTUFAIWEN: L,B也一樣 因為beq要在ID判斷 所以一定會停一cycle 01/04 19:39
NCTUFAIWEN: 在pipeline後面的指令就利用這個stall存回去惹 01/04 19:40
NCTUFAIWEN: 拍謝 眼殘 是D.B才對 and跟beq 01/04 19:45
moneylon: https://i.imgur.com/iwcXe53.jpg 01/04 20:31
moneylon: 我缺少了哪兩個cycle QQ 01/04 20:32
moneylon: 喔喔喔我懂了 因為沒有辦法從ex/mem前饋到Id 所以要stal 01/04 20:39
moneylon: l到上一行的add已經WB 是這樣吧 01/04 20:39
moneylon: and已經WB(修正 01/04 20:40
q1qip123: 對 然後beq是stall在id 不是IF,因為他要需要解瑪才能知 01/04 21:05
q1qip123: 道是beq 01/04 21:05
q1qip123: 啊我看錯了 不用理我 01/04 21:12
NCTUFAIWEN: and的alu算完才會給beq 所以中間要一個stall 01/04 21:30
NCTUFAIWEN: 另外一個我找不到== 感覺14個cycle而已啊 01/04 21:38
NCTUFAIWEN: 看起來是因為mem沒有前饋給ID 所以要等一個cycle 01/04 21:41
NCTUFAIWEN: 要等lw的write back才可以動beq 01/04 21:42
NCTUFAIWEN: 那就15個 01/04 21:42