看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《wsx02 (無酒罐)》之銘言: : functional unit times : memory access:200ps, ALU operation:100ps, register:50ps : instruction frequencies : 25%loads, 10%stores, 11%branches, 2%jumps, 52%ALU operations : suppose the memory access became 2 clock cycles long : half of the load instructions are immediately followed by an instruction that : uses the result, that the branch delay on misprediction is 1 clock cycle, : and that one-quarter of the branches are misspredicted. Assume that jumps : always pay 1 full clock cycle of delay, so their average time is 2 clock cyles : for branches assume the sasme prediction accuracy, but increase the penalty as : appropriate. For loads, assume that the subsequent instructions depend on the : load with a probability of 1/2, 1/4, 1/8, 1/16, and so on. That is, the : instruction following a load by two has a 25% probability of using the load : result as one of its sources. : 求pipeline的execution time : 這是張凡下冊63頁(4)的題目 你的題目是(1)跟(4)的混合版本... 如果是用(3)的架構來看的話,IM有兩個stage並非一個, 所以mispredition跟jump的penalty都會是2不會是1。 我用原本(4)的題目回你吧,如果想照你的題目就把關鍵數字改回來就好。 這題有一個重要的假設它沒寫, 就是沒有structure hazard產生,不然答案不會像是他寫的那樣。 這點我有去問過張凡。 如果現在沒有structure hazard產生, 也就是只有data hazard跟control hazard,而且是full forwarding, 現在我們已經有了各個指令的比例和執行時間, 而且題目還說memory access花2個clock cycles, 很明顯的clock cycle time = 100ps, 所以我們打算把每個指令的CPI算出來乘上它的比例再相加,最後乘上cycle time即可。 一開始先找出不會有hazard的指令:sotre跟ALU。 這兩個指令就直接設CPI = 1就好了。 第二步來找control hazard的指令:jump跟branch。 jump因為penalty為2,所以一定會多兩個clock的penalty,所以CPI = 3。 branch就要分開來看了,misprediction的penalty為2, 所以猜錯的CPI為3,猜對的話CPI為1, 又猜錯的比例是1/4 = 0.25,所以branch的CPI = (1 - 0.25) * 1 + 0.25 * 3 = 1.5 第三步最麻煩了,就是data hazard的部分:load load-use data hazard有兩種:EX hazard跟MEM hazard。 原本的MEM hazard可以用forwarding解,EX hazard也只要停一個clock, 但是改成(3)的架構後, MEM hazard也需要停一個clock才能把memory load出的東西forward給EX, EX hazard更是要停兩個clock才能forward。 知道了要停多少後,接下來就要算這兩種出現的機率了! EX hazard題目說出現的機率是1/2 = 0.5, MEM hazard雖然題目說是1/4 = 0.25, 但是真正出現的前提是不能有EX hazard出現,所以機率是(1 - 0.5) *0.25 = 0.125, 剩下的load指令不會有hazard出現,其機率就是(1 - 0.5 - 0.125) = 0.325。 於是load的CPI = 3 * 0.5 + 2 * 0.125 + 1 * 0.325 = 2.125。 終於可以算avg CPI了,把各個指令的比例乘上上面算出來的各個CPI就是答案! : 另外還想請問63頁的(3) pipeline的EX階段是同時進行讀和寫嗎? EX階段一次只有一個指令會用到啊,不懂你的意思@_@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.157.177
qwertz:推台大軟今天 11/30 01:57
hochiko:真的很強堅持下去 11/30 02:04
showyoulovex:好強 推w大 猛 11/30 02:37
i78524:原來W大是台大的...難怪強到逆天.... 11/30 11:11
wheels:噗,你被我朋友騙了,我只是現在在台大念書而已= = 11/30 12:43
showyoulovex:w真的很猛 神人也~ 11/30 13:05