看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《blackZ2 (BB)》之銘言: : ※ 引述《mqazz1 (無法顯示)》之銘言: : assume that the breakdown of dynamic instructions into various instruction : categories is as follows: : R-type 50%, beq 15%, jump 10%, lw 15%, sw 10% : branch predictor accuracies: always-taken 40%, always not-taken 60%, 2-bit 80% : (1) with the 2-bit prdictor, what speed-up would be achieved if we could : convert half of the branch instructions in a way that replaces a branch : instruction with an ALU instruction? : assume that correctly and incorrectly predicted instructions have the same : chance of being replaced : 1 + 3*(1-0.8)*0.15 : -------------------------------- : 1 + 3*(1-0.8)*0.15*0.5 : 請問這題為什麼要加1? : 因為理想CPI為1,然後加上branches penalty 就是實際CPI : (2)同上,把黃字改成two ALU : 1 + 3*(1-0.8))*0.15 : -------------------------------- : 1 + (1 + 3*(1-0.8))*0.15*0.5 : 請問為什麼還要再加1? : 因為這各式子化簡了,所以看起來很怪 : 請想成 1 + 0.15*0.5*0.2*3 + 0.15*0.5*1 : 理想CPI 沒有轉換的一半branch 一半branch轉成兩個ALU,指令會變多 : 化簡之後就是 1+(1+0.2*3)*0.15*0.5 : 這是我自己的想法,希望是對的 這樣說好精簡,我來幫你多做補充。 1      + 0.15*0.5*0.2*3 + 0.15*0.5*1     理想CPI, 猜錯的branch中   猜對和猜錯的branch轉成兩個ALU 已經包含猜對的branch  未轉換的一半branch  的部分,若把它拆成  中未轉換成ALU的部分。             0.15*0.5*0.8*1+ 0.15*0.5*0.2*1將會更清楚。                         對於猜對的部分,原本只需花一次                         執行,但轉成ALU後要花兩次執行                         這一項就是指多做的那一次。                         原本花的那一次已經包含在理想                         的CPI裡面。                         對於猜錯的部分,原本要有3的                         penalty,但是轉成ALU後可以想為                         執行兩次ALU即可取代penalty, 而原本就需要做一次了,剩下的那                         次是多做的,整體來看就跟上面那                         段是一樣的。 其實這題答案有問題,因為一個branch轉換成兩個ALU, 勢必會造成指令的比例改變,所以真正的答案應該是: 1 + 1*(0.15/1.075)*0.5 + 3*0.2*(0.15/1.075)*0.5 因為現在所有指令加起來是107.5%,所以原本比例要除掉1.075做修正, 我有把上面這個想法寄信跟張凡說過,張凡也拿去問同事後最後的結論還是, "照課本吧XD" 所以就當我沒說過這段吧XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.249.12.39 ※ 編輯: wheels 來自: 111.249.12.39 (08/22 13:34)
blackZ2:"照課本吧XD" 張凡每次都很無奈的講這一句 08/23 00:48
wheels:白算盤的錯誤率真的還滿高的感覺@_@ 08/23 01:11
flygey:這題可改成3個ALU嗎 如果可以的話那公式是怎麼算? 08/24 01:08
wheels:如果改成3個ALU取代的話就是多做兩次,所以最後那邊改成 08/25 00:38
wheels:0.15*0.5*2就可以了 08/25 00:39
wheels:當然也是忽略掉比例有變的情況下啦! 08/25 00:57
flygey:有個地方想再請問 為何一個alu取代時 只把原式*0.5 08/25 22:47
flygey:然後 兩個ALU才多加一個 0.15*0.5*1 ? 08/25 22:48
wheels:不是不是,原式是0.15*0.5*1,是把最後乘1改成乘2,因為變 08/25 22:53
wheels:成多作兩次了! 08/25 22:53
wheels:唉呀我看錯你的問題了,我以為你問的是是3個ALU 08/25 22:59
wheels:用一個alu取代時,因為原本就需要作一次啦,已經算在理想 08/25 22:59
wheels:CPI裡面了,後面有加的都是額外的 08/25 23:00
flygey:原本ALU需要做一次? 是指跑過5個stage? 還是在哪裡的ALU? 08/26 00:08
wheels:在0.15*0.5*0.2*3裡面最後乘上的那個3是因為如果wrong的時 08/26 01:14
wheels:候將造成管線空了三個clock cycle time,而在0.15*0.5*1裡 08/26 01:15
wheels:最後乘上那個1是因為管線裡原本預測對的話一個clock cycle 08/26 01:16
wheels:time將完成一個指令,但是branch因為置換的關係會讓這個指 08/26 01:17
wheels:令實際上要兩個clock cycle time才能跑完,所以多一次。 08/26 01:17
wheels:因為pipeline裡面在指令數很多的時候每一個clock cycle 08/26 01:18
wheels:time都會有一個指令完成才能這樣看的。 08/26 01:19
flygey:第三部份 0.15*0.5* 1(=0.8*1+.02*1) 是說換成ALU 所以沒有 08/26 01:35
flygey:pently 這樣嗎? 08/26 01:36
flygey:只是單純把 猜對和猜錯的 加起來 08/26 01:37
wheels:因為已經整個用兩個ALU取代了,你可以想成已經沒有penalty 08/26 20:21
wheels:這個概念在裡面,只有多做一次所以才造成要多加的部分。 08/26 20:22
wheels:我發現你可能卡在為啥換過去就沒有penalty了這個想法裡, 08/26 20:22
wheels:想乘換過去就只有多做一次,管線內沒有需要停的時候,這樣 08/26 20:23
wheels:可能會比較清楚,而0.15*0.5*0.2*3後面乘上3是因為wrong將 08/26 20:24
wheels:造成管線要清空後面三個指令,才會有所謂的penalty的概念! 08/26 20:24
wheels:希望有幫助到你。 08/26 20:25
bahamut5461:看完推!!! 01/01 20:47
sneak: 希望有幫助到你。 https://daxiv.com 09/11 14:29