推 YuxiWen: 2個load都有data hazard01/30 17:00
→ YuxiWen: 所以第一題2個101/30 17:01
因為第一個bne是在ex的時候compare,所以還是要等一回合才可以forwarding,是吧?!
※ 編輯: newpuma (114.136.71.187), 01/30/2017 17:04:22
可是這樣第二小題的1又是怎麼來的,lw+beq含在一起已經算2了@@
※ 編輯: newpuma (114.136.71.187), 01/30/2017 17:06:06
→ YuxiWen: 第二題我算16耶,要stall的只有load use 1+1, branch1+101/30 17:07
一開始的load use 1
第二個loaduse+beq 2
beq預測錯 1
後來的r type跟beq 1
beq預測錯 1?
→ YuxiWen: 而已01/30 17:07
→ YuxiWen: branch 在mem就是指使用exe時的alu相減做比較, 若0 flag01/30 17:09
→ YuxiWen: 有就讓branch跳01/30 17:09
→ YuxiWen: 應該說儲存0 flag訊號,到mem階段的時候和branch control01/30 17:14
→ YuxiWen: 訊號做and決定要不要跳01/30 17:14
※ 編輯: newpuma (114.136.71.187), 01/30/2017 17:18:25
→ YuxiWen: 第一個就跟你說的一樣,但第二個我就不知道為什麼多2了01/30 17:17
推 yupog2003: 第二個應該是因為預測錯誤浪費的cycle所以多2?01/30 17:50
→ yupog2003: 他總是預測taken,所以等到branch的ID stage結束後才會01/30 17:51
→ yupog2003: 執行下一個指令,結果都沒taken 01/30 17:52
總是失敗所以一定penalty
推 YuxiWen: 沒錯!!! 01/30 17:54
→ YuxiWen: 我是指原po算的沒錯,因為load從memory拿到資料要等2cycl 01/30 17:56
→ YuxiWen: e,branch才能在idstage拿到資料 01/30 17:56
我好像有點自問自答 不過感謝y大點出lw!!
※ 編輯: newpuma (114.136.71.187), 01/30/2017 18:08:54