作者divus (none)
看板Grad-ProbAsk
標題Re: [理工] 計組管線的一些題目
時間Wed Nov 13 22:55:49 2013
※ 引述《john2557 (WANG)》之銘言:
: [101交大資聯] 張凡上P534
: For the code sequence below,assume the two "bne" instructions are predicted as "taken",
: but actually they are "not taken".How many cycles does it take to complete?
: Also indentify which cycle(s) will become bubble when execute the code
: 1. lw $to,$s1,$s2
: 2. add $s0,$t0,$t1
: 3. lw $s1,0($t0)
: 4. bne $s0,$s1,10
: 5. add $s2,$s0,$s1
: 6. add $s3,$s1,$s0
: 7. bne $s2,$s3,10
: 8. add $s3,$s2,$s3
這一題我覺得除非是像張凡那樣對pipeline熟到不行
否則很難直接用想的想通 (特別是stall 哪幾個cycle)
最好的方法就是把圖畫出來
但是一般周期圖太難畫 畫到20cycle不可能
我想到的方法就是只畫一個pipeline
然後用數字表示該指令第幾個cycle在該階段
例如
IF ID EX ME WB
lw 1 2 3 4 5
add 2 3 4 5 6
lw 3 4 5 6 7
所以可以看出第七個cycle lw在WB
第七個cycle結束 就做完了
如果有load use 必須 stall one cycle (S1C)
因為前面的lw會繼續走 但是後面的add要停一個clock
那就ID 畫3,4 (表示cycle 3 4 add都在ID)
IF ID EX ME WB
lw 1 2 3 4 5
add 2 3,4 5 6 7
lw 3,4 5 6 7 8
假如bne在MEM決定 但是跳錯 那會需要flush三個 cycle
原本這樣
bne 5 6 8 9 10
add 6 8 9 10 11
但是add的 cycle 6 8 9 被flush 只能從cycle 10開始
所以變成
bne 5 6 8 9 10
add 10 11 12 13 14
又根據題目
(a) branch 在 MEM =>load use 要stall one cycle => S1C
=>bne 後面flush three cycle=> F3C
(b) branch 在 ID =>load use =>S1C
=>R-branch =>S1C
=>load-branch =>S2C
=>bne後面 =>F1C
(a)
IF ID EX ME WB
lw 1 2 3 4 5
S1C
add 2 3 5 6 7
lw 3 5 6 7 8
S1C
bne 5 6 8 9 10
F3C
add 10 11 12 13 14
add 11 12 13 14 15
bne 12 13 14 15 16
F3C
add 16 17 18 19 20
可以看出c4 c7 被stall
但是c6 8 9 13 14 15 是被flush的 故不算stall
(b)
IF ID EX ME WB
lw 1 2 3 4 5
S1C
add 2 3 5 6 7
lw 3 5 6 7 8
S2C
bne 5 6 9 10 11
F1C
add 9 10 11 12 13
add 10 11 12 13 14
S1C
bne 11 12 14 15 16
F1C
add 14 15 16 17 18
可以看出c4 c7 c8 c13被stall
結論:可以用確定可行穩定的方式 把整個周期怎麼走算出來
答案也和張凡符合
只是(b)最後面還是跟張凡的答案差一個c12
可能真的要把18個cycle的周期圖畫出來看看了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.172.226
※ 編輯: divus 來自: 118.160.172.226 (11/13 22:58)
※ 編輯: divus 來自: 118.160.172.226 (11/13 23:00)
推 john2557:感謝d大你提供的方法 11/13 23:16
推 kiki86151:推猛 有點懂原來有這招 我畫圖都習慣把整個畫出來== 11/13 23:16
→ kiki86151:不過有疑問為什麼 bne是5689?不是stall2在ex就stall? 11/13 23:17
※ 編輯: divus 來自: 118.160.172.226 (11/13 23:38)
→ kiki86151:啊蠢了==誤解就變整個鬼打牆 張凡算法沒錯 11/14 00:00
推 WashFreeID:感謝!不過這樣我覺得是c12 stall bne等上個add的資料 11/14 12:59
→ WashFreeID:然後c13是flush 這樣就跟解答一樣了?? 11/14 12:59