看板 Grad-ProbAsk 關於我們 聯絡資訊
http://i.imgur.com/HPhstHA.jpg 首先想問的是第一題 我算出來的cycle是19個 http://i.imgur.com/JknAtpk.jpg (5-1)stage數減一 cycle2因為load use要stall cycle4 7因為預測錯誤要stall3個 這樣多出來的1是發生在哪? 還有第二題也是被同樣問題困住 2(load+beq) 1(penalty) 1(R+beq) 1(penalty) 多出來的1是? 還有那個stall cycle是指什麼?cycle2時第二個指令不是還在fetch而已嗎? 另外想問一個很白痴的問題 有一點不是很清楚 就是branch在ID跟在mem branch在ID的時候不是ID才能透過comparison得到結果嗎 所以正確指令的IF應該會出現在第二個ID下方(假設預測錯誤) 這樣penalty只有1 那branch在mem呢?總感覺說branch在mem很難理解,因為理當在Ex階段就應該comparison 就已經算完了,這樣想想在mem階段時新的IF就進來了這樣penalty是3 但實際上不是可以把penalty壓到2嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.71.187 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1485764819.A.FB8.html
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