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

作者: Transfat (Transfat)   2016-12-27 20:49:39
※ 引述《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 呢?
以上疑問
作者: yupog2003 (屁股)   2016-12-27 21:22:00
lw $t0 16($t1) sw $t0 12($t2)他還說憑良心講這些細節都要加進課本的話會變厚2倍XD今天剛好看2015年tkb對這段有印象
作者: ken52011219 (呱)   2016-12-27 21:22:00
聽你這麼說我記憶好像都回來了XD,感謝講解
作者: yupog2003 (屁股)   2016-12-27 21:18:00
張凡說一共有四條forwarding path,聖經本只介紹其中兩條,也就是EX/MEM~EX、MEM/WB~EX這兩條另外還有K大說的這個情況EX/MEM~ID,還有一個是還有MEM/WB~MEM,這是用在這個情況的:
作者: ken52011219 (呱)   2016-12-27 21:08:00
怎麼辦XD我回在原文了那這邊我來澄清一下我蠻久以前的問題若將 branch 移到 ID ,forwarding 到底可不可以使用http://i.imgur.com/gcT3EHs.jpg依照圖片所示我認為是不行,但實際上 add +beq 產生的data hazard 是可以藉由 forwarding 去解決的 (張凡課本)目前只能假設有更複雜的圖是聖經本沒有畫到,但可以藉由forwarding解決類似問題

Links booklink

Contact Us: admin [ a t ] ucptt.com