[理工] 計組 data與control hazard問題(白算盤)

作者: g1990822 (什麼東西?!)   2018-05-20 18:34:59
最近兩天在寫白算盤的題目,遇到了幾題問題
因為在網路上找到的解答和我的想法不太一樣,
不確定是不是解答有誤還是我的觀念錯誤,希望版友可以幫忙指正
第一題:(來自白算盤第五版4.9題)題目給三個指令:
指令1: or r1,r2,r3
指令2: or r2,r1,r4
指令3: or r1,r1,r2
其中4.9.5題:Add nop instructions to this code to eliminate hazards
if there is ALU-ALU forwarding only
( no forwarding from MEM to EX stage)
我在網路上找到的解答:
or r1,r2,r3
or r2,r1,r4
or r1,r1,r2
也就是解答似乎認為沒有任何的Data hazard,所以沒有插入任何nop
而我的問題是,在有ALU-ALU forwarding的情況下,指令1,2的data hazard(r1)
和指令2,3的data hazard(r2)可以被解決,應該沒有問題
但是指令1,3也有data hazard(r1)不是嗎?而此data hazard只能夠用
forwarding from MEM to EX stage解決吧?(因為相隔一個指令)
但是題目說""no ""forwarding from MEM to EX stage
因此不是應該要在中間插入一個nop,
讓第三個指令在第一個指令於WB stage時才能ID嗎?
像是: 指令1 IF ID EX MEM WB
指令2 IF ID EX MEM WB
nop IF ID EX MEM WB
指令3 IF ID EX MEM WB
這樣的形式,才能讓指令3讀到正確的r1的值,但是這樣的話,
指令2的r2又只能藉由forwarding from MEM to EX stage給指令三...
我想到的是要:再插入一個nop變成:
C1 C2 C3 C4 C5 C6 C7 C8 C9
指令1 IF ID EX MEM WB
指令2 IF ID EX MEM WB
nop IF ID EX MEM WB
nop IF ID EX MEM WB
指令3 IF ID EX MEM WB
這樣一來指令3可以在C6時讀到指令1,2已經寫入的r1與r2的正確值
但是不知道這樣想法對不對..
第二題:(來自白算盤第五版4.15題)
In this exercise,assume that the breakdown of dynamic instructions into
various instruction categories is as follows:
R-Type BEQ JMP LW SW
40% 25% 5% 25% 5%
Also , assume the following btanch predictor accuracies:
Always-Taken Always-Not-Taken 2-Bit
45% 55% 85%
其中4.15.1小題: Stall cycles due to mispredicted branches increase the CPI
What is the extra CPI due to mispredicted branches with the
always-taken predictor?Assume that branch outcomes are
determinid in the EX stage,that there are no hazards,and
no delay slots are used.
網路上解答: 3*(1-0.45)*0.25=0.41
我的問題是為什麼是"3"*(1-0.45)*0.25
而不是:"2"*(1-0.45)*0.25呢?
因為題目說是在EX stage決定要不要branch,
所以若猜錯的penalty不是應該是兩個CLK而已嗎?
以上兩個問題再麻煩大大們幫解答,謝謝了!
作者: TWkobe (中華柯比)   2018-05-20 19:17:00
mem/wb 前饋至id/ex不用多1cycle只要最遲到ex stage在進行alu前得到正確資料就好不用非得在id stage就馬上讀到正確資料但若沒有前饋 指令1後方插入2個nop是對的指令1後方插入2個nop是對的對 插入兩個nop後指令1在上升沿寫 指令2下降延讀至於指令3前方已有兩個nop就不會有data hazard至於2不清楚 應該是他算上原本的cpi 1指令2不是要讀指令1結果 raw阿喔喔沒看到 如果是fowarding only就可以了至於他說只能從mem到id就不確定 應該是指令2後插1個就好少打id/ex 就是ex stage
作者: SIGNAL2017 (信號2017)   2018-05-20 20:00:00
請問第一個問題他的解答為何沒有插NOP呀? 他不是說不能用MEM/WB接forwarding到EX嗎? 那這樣只能用NOP解決吧?
作者: TWkobe (中華柯比)   2018-05-20 21:16:00
我的意思可能讓你誤會 我猜這題原本意思是沒有"從mem/wb register forwaring回id stage"所以他的意思是無法從write back stage回給id stage腦子錯亂說錯是回給"ex stage"所以當指令1,2連續時 此時forwarding可以自ex/mem reg回給ex stage但如果1,2,3連續 此時ex/mem to ex stage不夠用但只看指令2,3是仍足夠用 ex/mem reg 回ex stage所以問題是出在指令1還要nop避開需要mem/wb reg 回ex有錯還請大大糾正我畫了一次圖還有用code detect應該插入2個不過剛查了一下 有外國學校答案是1個我沒考慮周詳真抱歉qq而且cc6寫回也來不及 指令3已經ex stage我說是只插一個nop剛查到亞大老師答案給兩個nop 理由一樣http://dns2.asia.edu.tw/~rikki/coa106/cod5-ch04-05_sol.pdf
作者: SIGNAL2017 (信號2017)   2018-05-20 23:45:00
我突然看到23有hazard,那13應該會無hazard了我記得所有hazard都可以用兩個nop去解決,且不用前饋所以應該有很多種答案吧?不過我想說的是原文中的解答應該是對的(?) 12和23都可以用前饋解決13因為23前饋解決所以13會沒有hazard,所以答案才給都沒nop的答案(我的想法)更正:不是所有hazard我的意思是data和control hazard我在張凡的課本上有寫到MEM HAZARD的情況其中要EX無HAZARD好像是因為EX是最新的資料(23指令)會蓋掉13的HAZARD我是個新手而已,可以討論看看xdhttps://i.imgur.com/oh9G0dG.jpg 像是這題的13好像就沒hazard,原因是因23有hazard,不知道跟你舉的那例子是否相同?阿對..不一樣 你這題12的hazard和23的hazard不同,所以不能用這個看靠..所以我的觀念是錯的,我還以為只要23有13就一定沒不用管是怎樣的情況你可以拍那題給我看看嗎,我想去問別人恩恩 可能要下周六才能知道了(我問補習班老師)

Links booklink

Contact Us: admin [ a t ] ucptt.com