[理工] [計組]-forwarding
1. add $1,$5,$3
2. sw $1,0($2)
3. lw $1,4($2)
4. add $5,$5,$1
5. sw $1,0($2)
上面這段程式碼 存在有什麼樣的hazard?
(在full forwarding情況下 以及 5-stage pipelined datapath)
----------------------------
我大概畫的
1. add $1,$5,$3 IF ID EX ME WB
2. sw $1,0($2) IF ID EX ME WB
3. lw $1,4($2) IF ID EX ME WB
4. add $5,$5,$1 IF ID ** EX ME WB
5. sw $1,0($2) IF ** ID EX ME WB
從圖知道....
3與4 有load-use data hazard 指令4需要stall一個clock
3與5 原本兩者有MEM hazard 因為上述stall了一個clock 所以可以解決
但是
1與2 用hazard detection code判斷 應該是屬於EX hazard ???
但pipeline中把路徑畫出來 還蠻奇怪的
(在第三與第四stage間)
此時是把指令1的EX stage結果forward給指令2的 forward B這個Mux.
而ALU正處理指令2的 R[rs]+SignExt(imm16)??
此時將指令1 forward過來的$1值給ALU並無用處吧?? (要給data mem才對?)
(ALU的輸入二 應該是SignExt(imm16)吧??)
forwarding該如何把值傳至data memory 而不會經由Mux.跑進ALU
謝謝~!
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.71.231.220
※ 編輯: ggyyalex 來自: 219.71.231.220 (02/20 20:41)
※ 編輯: ggyyalex 來自: 219.71.231.220 (02/20 20:43)
→
02/20 21:21, , 1F
02/20 21:21, 1F
→
02/20 21:22, , 2F
02/20 21:22, 2F
推
02/21 00:26, , 3F
02/21 00:26, 3F
→
02/21 00:41, , 4F
02/21 00:41, 4F
推
02/21 16:28, , 5F
02/21 16:28, 5F