[理工] 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