作者Transfat (Transfat)
看板Grad-ProbAsk
標題Re: [理工] 計組 branch stall的位置
時間Tue Dec 27 20:49:39 2016
※ 引述《sate1128 (小夯夯)》之銘言:
: 我最近在做題目的時候有個疑問
: Branch在ID判斷時
: 要和前面的R-type空一格 lw空兩格
: 但是詳細來看的話空的那個stall應該放在哪?
: 我舉一個例子:
: add後接bne 接下來bne predict 錯誤
: 我的想法是branch的stall接在它的IF之後
: http://i.imgur.com/Lsm84Xw.jpg
: 如此一來bne的ID有在add的EX後 拿到正確的值
: 之後的add(correct)的IF也接在bne的ID後 也很合理
: 但是有些題目好像把stall放在branch的ID後
: http://i.imgur.com/IV611EN.jpg
: 這樣add的EX的結果沒辦法給bne做判斷啊?
: 難道bne在stall還可以拿add的結果做運算?
: 但是這樣就沒有stall吧(暫停)
: 後面的add(correct)這樣接也蠻詭異
: 請問各位哪種才是對的?
: 如果是下面那種該怎麼解釋?
想問最後Ken大你畫的那張圖,為什麼第五個指令add 是從第九個cycle開始IF, 不是從第
18個cycle呀?同理還有最後一個指令add 為什麼是從cycle14 , 不是從cycle 13呢?
另外如果像答案(第(2)小題)所說的stall cycle 是 c4,c7,c8,c13, 那麼total number of cycles 不
應該是(5-1)+8+1+2+1+1=16 嗎?為什麼後面還要+兩個1 呢?
以上疑問
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1482842981.A.3F0.html
→ ken52011219: 怎麼辦XD我回在原文了 12/27 21:08
→ ken52011219: 那這邊我來澄清一下我蠻久以前的問題 12/27 21:09
→ ken52011219: 若將 branch 移到 ID ,forwarding 到底可不可以使 12/27 21:10
→ ken52011219: 用 12/27 21:10
→ ken52011219: 依照圖片所示我認為是不行,但實際上 add +beq 產生 12/27 21:15
→ ken52011219: 的data hazard 是可以藉由 forwarding 去解決的 (張 12/27 21:15
→ ken52011219: 凡課本) 12/27 21:15
→ ken52011219: 目前只能假設有更複雜的圖是聖經本沒有畫到,但可 12/27 21:17
→ ken52011219: 以藉由forwarding解決類似問題 12/27 21:17
推 yupog2003: 張凡說一共有四條forwarding path,聖經本只介紹其中兩 12/27 21:18
→ yupog2003: 條,也就是EX/MEM~EX、MEM/WB~EX這兩條 12/27 21:19
→ yupog2003: 另外還有K大說的這個情況EX/MEM~ID,還有一個是 12/27 21:20
→ yupog2003: 還有MEM/WB~MEM,這是用在這個情況的: 12/27 21:21
→ ken52011219: 聽你這麼說我記憶好像都回來了XD,感謝講解 12/27 21:22
→ yupog2003: lw $t0 16($t1) sw $t0 12($t2) 12/27 21:22
→ yupog2003: 他還說憑良心講這些細節都要加進課本的話會變厚2倍XD 12/27 21:23
→ yupog2003: 今天剛好看2015年tkb對這段有印象 12/27 21:23