各位大大好:
想請教關於下題的一些討論
題目:
https://imgur.com/OLtR6UK
https://imgur.com/oVIgjmQ
根據題目的敘述,題目提供predict-taken beq predictor with a btb
根據張凡計概書內的敘述,btb可以用來消除 1 clk 的懲罰
https://imgur.com/M6VfZdN
想請教在解這題時,btb會在哪個環節產生影響嗎?
是代表消除掉 predict失敗的1 clk嗎?
或是其實btb消除的是其他地方的clk
也想請各位大大協助一下我是否過程還有沒算到的部分
以下為小弟的推題過程
(題目)
行數 指令
1 add r1,r2,r3
2 lw r2, 0(r1)
3 beq r2,r1,Label #not-taken
4 add r3 ,r2 ,r1
5 beq r2 ,r1 ,Label #taken
6 lw r2 0(r3)
7Label: lw r1,0(r2)
第一題:題目說beq在mem stage才決定,支持full forwarding
計算流程
1. 實際執行指令數為6行
完美執行clk數 = 6 + (5-1) = 10
2.Data Hazard判斷
(1,2)行有DH,但可透過Forwarding解決
(1,3)行有DH,也可透過Forwarding解決
(2,3)行有load-use DH,需stall +Forwarding可解 >> +1clk
(3) 行beq predict taken 但是實際not taken
又因為beq在mem階段才進行判讀,beq之後會接著NOP/ NOP/ NOP 共3clk
發現判讀錯誤後接續讀取第5行繼續執行
(4,5)無DH,不影響
(5)的beq,雖然predict成功,但因MEM階段才判斷,也需3 CLK
所以第一題為10 + 1 +3 +3 = 17 clk
第二題:BEQ 在 id stage 就決定
1.完美指令為10 clk
2.(2,3)行的hazard因id stage關係,變成需2clk
3.(3)的beq, predict taken but fail >>1 clk懲罰
4. predict正確 無影響
故第二題推論為10 +1 +2 = 13 clk
以上,再麻煩各位大大指點 感謝!