作者ab170926 (華胥)
看板Grad-ProbAsk
標題Re: [理工][計組] 101交大
時間Wed Jan 23 19:10:36 2013
※ 引述《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