看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《gn123 (GnCtIlike)》之銘言: : 交大101年計組第二題http://www.lib.nctu.edu.tw/attach/download/id-1369/ : 第二小題: branch decide 在ID stage的情況,然後bne不管怎樣都猜跳 : 所以會flush後面一個指令 : 因為ID stage 不支援forwarding,所以遇到data hazard要stall兩個 : 然後張凡的這題解答 stall cycle:4,7,8,13(他這題後來更正是13) : 然後這是我的看法: : V代表該clock有stall : V V V V V : lw t0 s1 s2 IF ID EX ME WB : add s0 t0 t1 IF ID ID EX ME WB : lw s1 0(t0) IF IF ID EX ME WB : bne s0 s1 10 IF ID ID ID EX ME WB (不能forwarding,所以ID要等到WB) : add s2 s0 s1 IF IF IF ID ....(這個FLUSH) : add s3 s1 s0 IF ID EX ME WB : bne s3 s3 10 IF ID ID ID EX ME WB : add s3 s2 s3 (FKUSH) : 這樣不是12,13都有STALL了!? : 請板上高手解答一下T_T : 謝謝~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 lw F D E M W add F D X E M W lw F X D E M W bne X F D X X E M W add F X X X D E M W add X X X F D E M W bne F D X E M W add F X X D E M W 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 lw F D E M W add F D X E M W lw F X D E M W bne X F D X X E M W nop F X X D E M W add X X F D E M W add F D E M W bne F D X E M W nop F X D E M W add X F D E M W 改成這樣會不會比較好懂? 在第六cycle的時候錯誤的指令抓了進來 當這個指令執行完ID的時候 會stall (flush ID/EX reg ) 也就是在第九個cycle -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.156.20
gn123:感謝~! 來研究看看@@ 01/23 19:28
gn123:額 不太懂為什麼第五個指令,cycle 9時還是stall呢@@? 01/23 19:32
gn123:上一個bne的EX不是可以直接forwarding給add的EX? 01/23 19:32
ab170926:應該說真正的add是在第9cycle才fetch進來 01/23 20:47
※ 編輯: ab170926 來自: 59.127.156.20 (01/23 20:52) ※ 編輯: ab170926 來自: 59.127.156.20 (01/23 20:53) ※ 編輯: ab170926 來自: 59.127.156.20 (01/23 21:06)
cutemiller:想問,最後一個bne要用到上面 add的$3 01/23 21:18
cutemiller:為什麼 add 在 W 時 bne 不是 D ? 01/23 21:19
cutemiller:課本上沒有full forwarding.. 01/23 21:20
cutemiller:想不透..XD 01/23 21:20
cutemiller:所以我算出來還會多 stall 14 01/23 21:22
BaaaSwin:這個之前有討論過了xd爬文應該有 01/23 21:27
BuliBuchi:你要想像他有forward到ID那裡 01/23 21:33
BuliBuchi:不然課本上就不會說add beq只需要停一個cycle了 01/23 21:34
gn123:喔!!! 我之前以為flush完,原本那個add就忽略了XD 01/23 21:42
gn123:所以flush掉的指令,如果不跳,還是會繼續執行而非省略? 01/23 21:43
ab170926:flush是把ID/EX reg全清空 也就是執行sll,$0,$0,0 01/23 22:09
cutemiller:感謝,剛看了課本...真令人無言.. 01/23 22:50