看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《wsx02 ()》之銘言: : Exexute the following Copy loop on a pipelined machin: : Copy: lw $10, 1000($20) : sw $10, 2000($20) : addiu $20, $20 , -4 : bne $20, $0 , Copy : Assume that the machin datapath neither stalls nor forwards on hazards , : so you must add nop instructions. 解答: lw $10, 1000($20) addiu $20, $20 , -4 nop sw $10 2000($20) bne $20 $0 , Copy lw $10 1000($20) 問題:請問為什麼在sw下面不用再插入一個nop?題目說沒有fowarding,不是代表 只能到最後WB才可以回傳對的值?下圖是插兩個nop的pipeline stage圖,不曉得 在觀念上哪裡錯了?謝謝。 lw IF ID EX ME WB-| addiu IF ID EX ME | WB-| sw IF ID X |- EX | ME WB bne IF X X |- ID EX ME WB (lw和sw有hazard,addiu和bne有hazard) 感謝各位耐心看完問題,謝謝。 ※ 編輯: numin 來自: 123.193.221.223 (09/20 21:10)
wsx02:你的圖 addiu和sw少畫了nop 09/20 21:22
wsx02:對耶..這樣addiu和sw有data hazard 09/20 21:22
ddczx:暫存器可在前半cycle寫入,後半cycle讀取,故WB跟ID可重疊 09/20 21:23
ddczx:另外,你的畫法是stall,nop是1個指令,故還是要畫出5個stage 09/20 21:26
wsx02:請問cycle 6時 addiu做WB 09/20 21:29
wsx02:可是sw在cycle 5就要ID解碼暫存器 這樣是data hazard嗎? 09/20 21:30
ddczx:沒,你看看原本的程式碼順序,應該要先sw再addiu 09/20 21:40
wsx02:恩 原本的程式碼sw和addiu沒有data hazard的問題 09/20 21:46
wsx02:可是題目說要rewrite 變成addiu在sw之前執行 09/20 21:46
wsx02:這樣不是就產生了data hazard? 謝謝! 09/20 21:46
ddczx:重寫後addiu然後sw是有hazard,不過那是故意的,sw抓的是addiu 09/20 21:55
ddczx:在WB前未-4的值,和原題目的先sw再addiu達到同效果 09/20 21:55
numin:我也有這個疑問,我是將原來code先解control hazard後, 09/20 21:55
numin:然後在判斷有無data hazard,在加nop,之後若有hazard也覺得 09/20 21:56
numin:怪怪的。 09/20 21:57
wsx02:謝謝 我搞懂了 感謝 09/20 21:59
numin:感謝d大講解,也謝謝w大提出相關問題一起討論,謝謝。 09/20 22:05
numin:我也懂了,原來在畫圖時,沒有注意到WB和ID可重疊,也更清楚 09/20 22:06
numin:後來有的hazard和原先hazard地方之疑問,謝謝。 09/20 22:07