看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《winnie48 (winnie)》之銘言: : 先附上題目連結: : http://exam.lib.ntu.edu.tw/sites/default/files/exam/graduate/101/101404.pdf : 想要問第7題和第18題(答案分別是AD及CE) 第7 首先沒有stall時CPI是1 題目說系統執行指令是假定j跟beq都不會更改原有流程 直接把剩下的指令都拿進pipeline跑 => 如果流程有變(jump換了位置 beq成立換了位置) => 原本吃進來的指令都是錯的 => 系統就要stall 把錯誤的指令清出pipeline 先了解一下清除這些指令的所需花費 j =>一定要清除 j是在第二個時脈就跳走了 =>pipeline的IF階段是個錯誤的指令 =>stall一個 beq =>第三階段跳 =>stall兩個 這台機器上的程式有 5%jump 20%branch,其中的60%會跳 5%的指令 (j)會stall 1個cycle=>多 5%的cycle在stall上 12%的指令(br)會stall 2個cycle=>多24%的cycle在stall上 總cycle129% 又指令數不變,CPI => 129% 原本的執行時間就是(Ins指令數先不管它 反正執行的都一樣多) CPI * Ins * CycleTime 129% * ins * 10ns 看看後來 把第一個階段改成兩階段,stall多一個cycle了 j的stall變成2個cycle=>多10% cycle b的stall變成3個cycle=>多36% cycle 總cycle:146% 後來的執行時間 CPI * Ins * CycleTime 146% * Ins * 8ns 就是1290%ins vs 1168%ins(時間)(ins是指令數) 速度差異是1.1倍,後來的較快 第8 TLB找到了=>知道他在mem中的哪個位置,直接去那個位置找 =>1次TLB,1次mem TLB找不到=>先去查表,表幾層就查幾次 =>例如one-level: =>一次查TLB 一次查表(mem) 最後一次知道在哪了去拿(mem) =>1次TLB,2次mem 存取的花費=>TLB:50ns , Mem:300ns (A)90%hit , one-level 90%*(50+300) + 10%*(50+300+300) = 380 題目說390,錯 (B)99%hit , one-level 99%*(50+300) + 1% *(50+300+300) = 353 題目說356,錯 (C)90%hit , two-level 90%*(50+300) + 10%*(50+300+300+300) =410 對 (D)一樣的算式... 356 (E)99%hit , three-level 359 : 遇到這種計算都不太會算(但是好像蠻常考...) : 拜託能給我詳細的解法,謝謝大家!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.36.107 ※ 文章網址: http://www.ptt.cc/bbs/Grad-ProbAsk/M.1420794771.A.73D.html
shanbb: 好詳細的第七題 感謝~~ 01/09 17:23
※ 編輯: kather (36.237.36.107), 01/09/2015 17:27:38
skellroyal: 原來我想錯j和b跳走的stage,答案算出來還對XD 感謝K大 01/09 18:41
winnie48: 太感謝了!我都懂了! 01/09 19:14