※ 引述《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 呢?
以上疑問