想请问一下这一题
我搜寻很多文章也有讨论过这题
但还是无法厘清
我的理解与解答有点落差
想了解我哪里的理解有误
恳请大大帮忙解答
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