作者qoojordon (穎川琦)
看板Grad-ProbAsk
標題[資工]交大102計算機系統第25題(計組/pipeline)
時間Mon Oct 6 20:09:05 2014
102交大資工 計組25題
http://ppt.cc/QBpD
我簡化題目敘述如下:
假設指令執行時 , beq都預測分支發生 , 但實際執行時分支不發生
在有forwarding機制下 , 討論以下條件下 , 指令片段執行完成之所需時間?
lw $s0,0($t0)
lw
$s1,0($t0)
beq $s0,
$s1 L1
add $s2,$s0,$s1
(1) 分支是否發生在 MEM 階段被決定 // 張凡ans:(5-1)+4+1+1=10
(2) 分支是否發生在 ID 階段決定 // 張凡ans:(5-1)+4+1+2=11
Q1:
完全不懂延後到MEM才能決定分支 , 可是所花執行週期數比較少
我自己畫的 分支於MEM階段決定的週期圖
黃色是暫停管線等lw做好 綠色是發生前饋後處理錯誤指令的時間
cc1 cc2 cc3 cc4 cc5 cc6 cc7 cc8 cc9 cc10 cc11 cc12
lw $s0,0($t0) IF ID EX MEM WB
lw $s1,0($t0) IF ID EX MEM WB
beq $s0,$s1 L1 IF
ID ID EX
MEM WB
猜錯的冤大頭#1 IF IF ID EX
NOP
猜錯的冤大頭#2 IF
ID
NOP
猜錯的冤大頭#3 IF
NOP
add $s2,$s0,$s1
IF ID EX MEM WB
共花12個cycle
------------------------------------------------------------------------
Q2:
第二小題可以理解 , load-ues碰上beq要停2個cycle,branch猜錯 , 浪費1個cycle
想和板友確認一下11個週期的多重時脈週期管線圖
cc1 cc2 cc3 cc4 cc5 cc6 cc7 cc8 cc9 cc10 cc11
lw $s0,0($t0) IF ID EX MEM WB
lw $s1,0($t0) IF ID EX MEM WB
beq $s0,$s1 L1 IF
ID ID ID EX MEM WB
猜錯的冤大頭 IF IF IF
NOP
add $s2,$s0,$s1
IF ID EX MEM WB
不曉得第一題有沒有錯誤 @@?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.74.110
※ 文章網址: http://www.ptt.cc/bbs/Grad-ProbAsk/M.1412597348.A.7E5.html
推 AgentSkye56: 第一題 感覺beq後只需要一個NOP 10/06 23:02
→ AgentSkye56: 應該只要清掉一個 add吧(不確定對不對XD) 10/06 23:04
推 AgentSkye56: 應該是移到ID後加上來比較的電路計算耗1個cycle吧?! 10/06 23:11
→ AgentSkye56: SORRY 我覺得你第一題寫得應該是對的 吧 10/07 20:20
→ qoojordon: 搜尋中 , 我多做幾年題目再跟你確認 , 或是看板上有沒 10/08 00:04
→ qoojordon: 有上題庫班的同學囉 QQ 10/08 00:04
推 happy8155: Q1的add的EX在beq 的MEM後即可(因為在MEM完就知道結果) 10/08 00:08
→ happy8155: 所以是10 10/08 00:09
→ happy8155: sorry沒看到預測錯誤xD 10/08 00:11
推 happy8155: 他應該有假設mem前半讀後半寫之類的東東吧@@ 這樣beq就 10/08 00:15
→ happy8155: 可以往前拉 我猜是這樣xD 10/08 00:15
今天做到一題類似的 , 101交大計組非選第二題
http://ppt.cc/F9xo
張凡給的答案
(a)5-1+8+1+1+3+3=20 stall cycle:4,7
(b)5-1+8+1+2+1+1+1=18 stall cycle:4,7,8,12
cycle數用我原本的做法跑起來是一樣的 , 我猜可能是102年的解答太趕了有打錯吧
不過stall cycle怪怪的 , 單純和原問題比較執行週期的話 , 大家可以參考這題做比較
※ 編輯: qoojordon (59.115.64.62), 10/08/2014 21:42:48
推 HiltonCool: 今天看了一下這題,我也覺得你的答案才是對的 10/16 23:59