[理工] forwarding的問題

作者: wacheck (94不愛喝水)   2018-12-15 15:20:38
大家好
想請教一個問題
forwarding的偵測碼中有分為Ex hazard跟mem hazard
(分別是看執行指令與下一、下下一指令有沒有hazard)
EX Hazard
if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd ==
ID/EX.RegisterRs)) ForwardA = 10
if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd ==
ID/EX.RegisterRt)) ForwardB = 10
MEM Hazard
if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and (MEM/WB.RegisterRd ==
ID/EX.RegisterRs)) and not(Ex Hazard)ForwardA = 01
if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and (MEM/WB.RegisterRd ==
ID/EX.RegisterRt)) and not(Ex Hazard) ForwardB = 01
作者: skyHuan (Huan)   2018-12-15 15:43:00
如果你的$0不是0號暫存器就兩條都會forwardinghttps://i.imgur.com/kooTtKU.jpg指令三在EX stage會用到$3跟$0的結果但指令1, 2這時還沒寫回暫存器所以需要前饋紅色那條是來自指令1的前饋$3給rs用藍色那條是來自指令2的前饋$0給rt用看起來應該應該要設成forwardingB=10, forwardingA=01
作者: anonimo (unknown)   2018-12-15 16:17:00
在C.C.(clock cycle) 3時 forwardA=00 forwardB=10 此時and的$3傳給or的$3 在C.C.4時 forwardA=01 forwardB=10此時and的$3傳給or的$3且or的$0傳給xor的$0然後你的例子舉的不太好 因為$0不會做forwarding
作者: wacheck (94不愛喝水)   2018-12-15 16:47:00
對耶$0是存0 ORZ 我想確認一下not那個條件是在何種情形像(1)and $1,$2,$3 (2)and $1,$4,$5 (3)and $6,$1,$6這種看似(1),(3)指令有相依但實際上是2,3有相依 這樣的情形才需要加not條件嗎?
作者: anonimo (unknown)   2018-12-15 18:34:00
Yes
作者: wacheck (94不愛喝水)   2018-12-16 14:16:00
感謝多次救援

Links booklink

Contact Us: admin [ a t ] ucptt.com