想請問一下這一題
我搜尋很多文章也有討論過這題
但還是無法釐清
我的理解與解答有點落差
想了解我哪裡的理解有誤
懇請大大幫忙解答
https://i.imgur.com/y6Rv5gh.png
https://i.imgur.com/PYhFEoG.png
https://i.imgur.com/Six8Vdz.png
1.第3小題 c5一開始的signal
答案Stall=0
IF ID EX ME WB
sub add lw add sll
我的理解是在c5一開始
Hazard detection unit還沒收到ID/EX.MemRead前
Stall還是前一個cycle的訊號
收到後才改設為1
如果這樣的理解沒錯
那Src1與Src2一開始應該也是前一個cycle的訊號
因為Forwarding unit也需要先收到EX/MEM.Write後才改Src1與Src2
所以答案應該是
c4的Src1=10,Src2=00
(add與sll有EX hazard在rs)
之後才改為c5的Src1=10,Src2=11
(lw與add有EX hazard在rs)
2.第4小題 c6一開始的signal
由於c5偵測到load-use
所以把ID/EX的signal全部清為0
此時c6的EX階段是要跑NOP
IF ID EX ME WB
sub add NOP lw add
Stall依上面的理解一開始是1
之後才變回0
Src1,Src2答案應該為一開始
c5的Src1=10,Src2=11
(lw與add有EX hazard在rs)
之後才改成
c6的Src1=10,Src2=00
(NOP與lw有EX hazard在rs)
(NOP實質上是add的data但signal清為0)
張凡是把答案改為Src1=10,Src2=00