看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《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