Re: [理工] 計組 branch stall的位置

看板Grad-ProbAsk作者 (Transfat)時間7年前 (2016/12/27 20:49), 編輯推噓1(1017)
留言18則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

12/27 21:08, , 1F
怎麼辦XD我回在原文了
12/27 21:08, 1F

12/27 21:09, , 2F
那這邊我來澄清一下我蠻久以前的問題
12/27 21:09, 2F

12/27 21:10, , 3F
若將 branch 移到 ID ,forwarding 到底可不可以使
12/27 21:10, 3F

12/27 21:10, , 4F
12/27 21:10, 4F

12/27 21:11, , 5F

12/27 21:15, , 6F
依照圖片所示我認為是不行,但實際上 add +beq 產生
12/27 21:15, 6F

12/27 21:15, , 7F
的data hazard 是可以藉由 forwarding 去解決的 (張
12/27 21:15, 7F

12/27 21:15, , 8F
凡課本)
12/27 21:15, 8F

12/27 21:17, , 9F
目前只能假設有更複雜的圖是聖經本沒有畫到,但可
12/27 21:17, 9F

12/27 21:17, , 10F
以藉由forwarding解決類似問題
12/27 21:17, 10F

12/27 21:18, , 11F
張凡說一共有四條forwarding path,聖經本只介紹其中兩
12/27 21:18, 11F

12/27 21:19, , 12F
條,也就是EX/MEM~EX、MEM/WB~EX這兩條
12/27 21:19, 12F

12/27 21:20, , 13F
另外還有K大說的這個情況EX/MEM~ID,還有一個是
12/27 21:20, 13F

12/27 21:21, , 14F
還有MEM/WB~MEM,這是用在這個情況的:
12/27 21:21, 14F

12/27 21:22, , 15F
聽你這麼說我記憶好像都回來了XD,感謝講解
12/27 21:22, 15F

12/27 21:22, , 16F
lw $t0 16($t1) sw $t0 12($t2)
12/27 21:22, 16F

12/27 21:23, , 17F
他還說憑良心講這些細節都要加進課本的話會變厚2倍XD
12/27 21:23, 17F

12/27 21:23, , 18F
今天剛好看2015年tkb對這段有印象
12/27 21:23, 18F
文章代碼(AID): #1OOcDbFm (Grad-ProbAsk)
文章代碼(AID): #1OOcDbFm (Grad-ProbAsk)