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

看板Grad-ProbAsk作者 (什麼東西?!)時間6年前 (2018/05/20 18:35), 6年前編輯推噓18(18035)
留言53則, 2人參與, 6年前最新討論串1/1
最近兩天在寫白算盤的題目,遇到了幾題問題 因為在網路上找到的解答和我的想法不太一樣, 不確定是不是解答有誤還是我的觀念錯誤,希望版友可以幫忙指正 第一題:(來自白算盤第五版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而已嗎? 以上兩個問題再麻煩大大們幫解答,謝謝了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.115.180.73 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1526812502.A.B16.html

05/20 19:17, 6年前 , 1F
mem/wb 前饋至id/ex不用多1cycle
05/20 19:17, 1F

05/20 19:23, 6年前 , 2F
只要最遲到ex stage在進行alu前得到正確資料就好
05/20 19:23, 2F
T大你好,可是題目說no forwarding from MEM to EX stage 不是代表說沒辦法從MEM/WB前饋嗎? 還是是我理解錯誤了呢@@..

05/20 19:25, 6年前 , 3F
不用非得在id stage就馬上讀到正確資料
05/20 19:25, 3F

05/20 19:27, 6年前 , 4F
但若沒有前饋 指令1後方插入2個nop是對的
05/20 19:27, 4F

05/20 19:27, 6年前 , 5F
指令1後方插入2個nop是對的
05/20 19:27, 5F
那這題我的想法對嗎? 因為no forwarding from MEM to EX stage>代表沒辦法從MEM/WB前饋 >要在指令2後面插入兩個nop,讓指令3可以在ID STAGE正確讀到所需要的兩個暫存器 (如文中所敘述)

05/20 19:31, 6年前 , 6F
對 插入兩個nop後指令1在上升沿寫 指令2下降延讀
05/20 19:31, 6F
了解,謝謝T大!

05/20 19:33, 6年前 , 7F
至於指令3前方已有兩個nop就不會有data hazard
05/20 19:33, 7F
可是我的想法是在指令2後面插入2個nop,不是在指令1後面就插入, 跟您前面所講說插在指令1後面不太一樣@@.. 因為我的想法是指令1,2不會有 data hazard 就不要去更動 然後調整指令1,3和指令2,3的data hazard就好,所以插在指令2 後面而不是指令1後面

05/20 19:37, 6年前 , 8F
至於2不清楚 應該是他算上原本的cpi 1
05/20 19:37, 8F

05/20 19:40, 6年前 , 9F
指令2不是要讀指令1結果 raw阿
05/20 19:40, 9F
指令2要讀指令1的r1沒錯, 但是題目這句話:there is ALU-ALU forwarding only 我的理解是,這句話表示可以從EX/MEM stage前饋到EX STAGE 因此指令1,2就不會有data hazard 不知道這樣對不對呢?

05/20 19:44, 6年前 , 10F
喔喔沒看到 如果是fowarding only就可以了
05/20 19:44, 10F
好的,謝謝T大願意花時間替我解答,感激不盡!

05/20 19:57, 6年前 , 11F
至於他說只能從mem到id就不確定 應該是指令2後插1個就好
05/20 19:57, 11F

05/20 19:59, 6年前 , 12F
少打id/ex 就是ex stage
05/20 19:59, 12F
可是如果只在指令2後面插,會變成這樣: 指令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在ID stage的確可以讀到指令1正確的暫存器r1(RAW) 不過指令3也需要指令2的暫存器r2,但是如果只插一個nop, 又變成說指令2的r2要給指令3,只能從MEM/WB前饋給指令3了@@.. 所以我的想法是再插一個變成這樣: 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 延後兩個clock,讓指令3可以確實讀取指令1和2正確的暫存器 不過我也不太確定到底需不需要插到兩個nop 還是說有其他解法 囧

05/20 20:00, 6年前 , 13F
請問第一個問題他的解答為何沒有插NOP呀? 他不是說不
05/20 20:00, 13F

05/20 20:00, 6年前 , 14F
能用MEM/WB接forwarding到EX嗎? 那這樣只能用NOP解決
05/20 20:00, 14F

05/20 20:00, 6年前 , 15F
吧?
05/20 20:00, 15F
我就是不知道為什麼他解答上完全沒有插nop才來問的@@, 因為解答是我隨便在網路上找的,也不知道到底對不對 我自己的看法是要插兩個NOP才能讓三個指令的hazard都解決 不知道還有沒有可以插更少nop的方法..

05/20 21:16, 6年前 , 16F
我的意思可能讓你誤會 我猜這題原本意思是
05/20 21:16, 16F

05/20 21:17, 6年前 , 17F
沒有"從mem/wb register forwaring回id stage"
05/20 21:17, 17F

05/20 21:18, 6年前 , 18F
所以他的意思是無法從write back stage回給id stage
05/20 21:18, 18F

05/20 21:19, 6年前 , 19F
腦子錯亂說錯是回給"ex stage"
05/20 21:19, 19F

05/20 21:20, 6年前 , 20F
所以當指令1,2連續時 此時forwarding可以自ex/mem reg回
05/20 21:20, 20F

05/20 21:20, 6年前 , 21F
給ex stage
05/20 21:20, 21F

05/20 21:22, 6年前 , 22F
但如果1,2,3連續 此時ex/mem to ex stage不夠用
05/20 21:22, 22F

05/20 21:24, 6年前 , 23F
但只看指令2,3是仍足夠用 ex/mem reg 回ex stage
05/20 21:24, 23F

05/20 21:25, 6年前 , 24F
所以問題是出在指令1還要nop避開需要mem/wb reg 回ex
05/20 21:25, 24F

05/20 21:26, 6年前 , 25F
有錯還請大大糾正
05/20 21:26, 25F
我的想法跟你應該一樣 我的觀念是只要是"間隔"指令(如指令1和指令3),就無法用 EX/MEM reg去前饋, 需要使用到 MEM/WB reg前饋, 而若是連續指令(如指令1和指令2,指令2和指令3)只需要EX/MEM reg前饋即可 但是題目說只有EX/MEM reg可以前饋,MEM/WB reg不可以前饋, 因此只看指令1和2,還有指令2和3,都是可以用EX/MEM reg前饋解決 但是若看指令1和3,則需要使用MEM/WB reg前饋,但是題目說不行, 因此先插入一個nop,讓指令3可以在ID STAGE讀到指令1寫入後的暫存器值,如下: 指令1 指令2 ,這樣指令3可以順利的在ID STAGE讀取到指令1寫入後"正確的"暫存器值r1 nop 指令3 但是插入一個nop後,變成指令2和指令3有間隔了, 而不巧的是本題指令3也要讀取指令2的暫存器值r2, 而間隔指令又只能利用MEM/WB reg前饋,因此只好再插入一個nop,變成: 指令1 指令2 ,這樣指令3可以順利的在ID STAGE讀取到指令1寫入後"正確的"暫存器值r1 nop 還有指令2寫入後"正確的"暫存器值r2 nop 指令3 而不論nop是連插兩個在指令1後面,還是插兩個在指令2後面,應該都可以解決 但是好像就是要插兩個才行@@..不知道我這樣的想法有沒有誤? 再麻煩大大如果有其他想法的話提出來討論一下,謝謝

05/20 21:56, 6年前 , 26F
我畫了一次圖還有用code detect應該插入2個
05/20 21:56, 26F

05/20 21:57, 6年前 , 27F
不過剛查了一下 有外國學校答案是1個
05/20 21:57, 27F

05/20 21:59, 6年前 , 28F
我沒考慮周詳真抱歉qq
05/20 21:59, 28F

05/20 22:01, 6年前 , 29F
而且cc6寫回也來不及 指令3已經ex stage
05/20 22:01, 29F

05/20 22:10, 6年前 , 30F
我說是只插一個nop
05/20 22:10, 30F
喔喔,我搞錯了XD 的確是只插一個的話會來不及寫入, 目前看起來是要插兩個沒錯了,看看有沒有其他大大有更好解法了@@

05/20 22:44, 6年前 , 31F
剛查到亞大老師答案給兩個nop 理由一樣
05/20 22:44, 31F
大大你也太會查,我這題查了三四天都沒有.. 可以跟你要個網址或者關鍵字嗎,感謝

05/20 22:53, 6年前 , 32F

05/20 22:53, 6年前 , 33F
.pdf
05/20 22:53, 33F
感謝您~!

05/20 23:45, 6年前 , 34F
我突然看到23有hazard,那13應該會無hazard了
05/20 23:45, 34F

05/20 23:47, 6年前 , 35F
我記得所有hazard都可以用兩個nop去解決,且不用前饋
05/20 23:47, 35F

05/20 23:48, 6年前 , 36F
所以應該有很多種答案吧?不過我想說的是原文中的解答
05/20 23:48, 36F

05/20 23:49, 6年前 , 37F
應該是對的(?) 12和23都可以用前饋解決13因為23前饋
05/20 23:49, 37F

05/20 23:50, 6年前 , 38F
解決所以13會沒有hazard,所以答案才給都沒nop的答案
05/20 23:50, 38F

05/20 23:50, 6年前 , 39F
(我的想法)
05/20 23:50, 39F

05/20 23:54, 6年前 , 40F
更正:不是所有hazard我的意思是data和control hazard
05/20 23:54, 40F
data hazard可以用nop解決沒錯,但是我想這題應該是希望求出在只有 ALU-ALU前饋的狀況下,可以使用最少NOP的解法吧@@.. 另外我想大大你所說的:23有hazard會讓13沒有hazard的情況應該不適用此題 例如 : I1 add $1, $1 ,$2 I2 add $1 ,$1 ,$3 I3 add $1 ,$1 ,$4 這三個指令的確會因為I2和I3有hazard所以I1,I3不會有hazard 原因是因為I2,I3都是寫入$1然後讀取$1,所以I3讀的$1是I2寫的,不是I1寫的 因此I1和I3沒有hazard 但是這一題: 指令1: or r1,r2,r3 指令2: or r2,r1,r4 指令3: or r1,r1,r2 指令3會讀取兩個暫存器:r1和r2,而其中讀取的r1並不像上面舉的三個add的例子, 會先被指令2寫過,因此應該不會像三個add的例子一樣, 指令2,3有hazard,指令1,3就沒有hazard 我的想法是這樣,如果有誤再麻煩大大提出,謝謝!

05/21 01:17, 6年前 , 41F
我在張凡的課本上有寫到MEM HAZARD的情況其中要EX無
05/21 01:17, 41F

05/21 01:18, 6年前 , 42F
HAZARD
05/21 01:18, 42F

05/21 01:19, 6年前 , 43F
好像是因為EX是最新的資料(23指令)會蓋掉13的HAZARD
05/21 01:19, 43F

05/21 01:20, 6年前 , 44F
我是個新手而已,可以討論看看xd
05/21 01:20, 44F
恩恩,我在白算盤課本上也有看到這段 但是我想應該是因為3要讀的暫存器已經先被2寫過了,所以變成1,3沒有hazard 看看有沒有其他大大能解答了 (我也是新手,還有很多不懂XD) ※ 編輯: g1990822 (58.115.180.73), 05/21/2018 01:25:40

05/21 01:23, 6年前 , 45F
像是這題的13好像就
05/21 01:23, 45F

05/21 01:24, 6年前 , 46F
沒hazard,原因是因23有hazard,不知道跟你舉的那例子
05/21 01:24, 46F

05/21 01:24, 6年前 , 47F
是否相同?
05/21 01:24, 47F
這題1,3沒有應該是因為3所需要的t1已經被指令2:add t1,s2,t1蓋過去了 所以1,3沒有,但是2,3有 但是我這題 指令1: or r1,r2,r3 指令2: or r2,r1,r4 指令3: or r1,r1,r2 指令3要讀的r1,並沒有被指令2蓋過,好像不太一樣

05/21 01:28, 6年前 , 48F
阿對..不一樣 你這題12的hazard和23的hazard不同,所
05/21 01:28, 48F

05/21 01:28, 6年前 , 49F
以不能用這個看
05/21 01:28, 49F

05/21 01:29, 6年前 , 50F
靠..所以我的觀念是錯的,我還以為只要23有13就一定沒
05/21 01:29, 50F

05/21 01:29, 6年前 , 51F
不用管是怎樣的情況
05/21 01:29, 51F
我也不知道我的想法對不對,學校老師教得霧煞煞..

05/21 01:34, 6年前 , 52F
你可以拍那題給我看看嗎,我想去問別人
05/21 01:34, 52F
https://imgur.com/a/UlKNY0X 有問題的是4.9.5題 如果有問到再麻煩你跟我講一下XD 感謝!

05/21 01:40, 6年前 , 53F
恩恩 可能要下周六才能知道了(我問補習班老師)
05/21 01:40, 53F
好的,謝謝你~ ※ 編輯: g1990822 (58.115.180.73), 05/21/2018 01:54:26
文章代碼(AID): #1R0KzMiM (Grad-ProbAsk)