
[理工] 101交大計組

如圖,第七題
想請教的是b小題,關於lw接著bne的stall
因為是在ID判別要不要跳,那這麼一來應該是要把ID延後到lw的ME做完才對吧?
那這樣stall應該是要在cycle6跟7才對吧@@
像這樣:
lw IF ID EX ME WB
bne IF XX XX ID EX WB
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.199.149
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1483086776.A.E6E.html
※ 編輯: ssssIssss (114.44.199.149), 12/30/2016 16:39:39
推
12/30 16:58, , 1F
12/30 16:58, 1F
→
12/30 16:58, , 2F
12/30 16:58, 2F
→
12/30 16:58, , 3F
12/30 16:58, 3F
可以講詳細一點嗎,抱歉因為我爬很久還是搞不太懂><
分支預測錯誤不就是在ID後把指令Flush為nop,而且不算在Stall裡嗎?
這樣和同一cycle有什麼關係呢?
※ 編輯: ssssIssss (114.44.199.149), 12/30/2016 17:06:41
推
12/30 18:00, , 4F
12/30 18:00, 4F
→
12/30 18:10, , 5F
12/30 18:10, 5F
但答案是cycle 7, 8 QQ
※ 編輯: ssssIssss (114.44.199.149), 12/30/2016 18:11:11
→
12/30 18:11, , 6F
12/30 18:11, 6F
→
12/30 18:12, , 7F
12/30 18:12, 7F
→
12/30 18:13, , 8F
12/30 18:13, 8F
→
12/30 18:13, , 9F
12/30 18:13, 9F
→
12/30 18:14, , 10F
12/30 18:14, 10F
→
12/30 18:14, , 11F
12/30 18:14, 11F
→
12/30 18:15, , 12F
12/30 18:15, 12F
→
12/30 18:15, , 13F
12/30 18:15, 13F
→
12/30 18:15, , 14F
12/30 18:15, 14F
→
12/30 18:18, , 15F
12/30 18:18, 15F
→
12/30 18:18, , 16F
12/30 18:18, 16F
太清楚了!感恩><
不過我還有個額外問題,那為何第二次bne的Stall算在12呢?
※ 編輯: ssssIssss (114.44.199.149), 12/30/2016 18:21:09
→
12/30 18:20, , 17F
12/30 18:20, 17F
→
12/30 18:20, , 18F
12/30 18:20, 18F
而且依這樣說的話,第一小題中的Stall都要算多一個cycle了@@?
※ 編輯: ssssIssss (114.44.199.149), 12/30/2016 18:23:11
→
12/30 18:22, , 19F
12/30 18:22, 19F
→
12/30 18:23, , 20F
12/30 18:23, 20F
→
12/30 18:23, , 21F
12/30 18:23, 21F
→
12/30 18:23, , 22F
12/30 18:23, 22F
→
12/30 18:23, , 23F
12/30 18:23, 23F
→
12/30 18:25, , 24F
12/30 18:25, 24F
→
12/30 18:26, , 25F
12/30 18:26, 25F
→
12/30 18:26, , 26F
12/30 18:26, 26F
→
12/30 18:28, , 27F
12/30 18:28, 27F
→
12/30 18:28, , 28F
12/30 18:28, 28F
→
12/30 18:29, , 29F
12/30 18:29, 29F
→
12/30 18:30, , 30F
12/30 18:30, 30F
→
12/30 18:30, , 31F
12/30 18:30, 31F
我記得只是不能提前到IF就forwarding而已?
還有,因為我本來以為的是,因為在ID判斷,所以要把ID延後到ME,確定好正確數值後再
判別。
那如果像大大們說的這樣,第一題中不也是bne直接連續執行到ME後再Stall ME重複判別
了嗎?
※ 編輯: ssssIssss (114.44.199.149), 12/30/2016 18:34:26
→
12/30 18:34, , 32F
12/30 18:34, 32F
→
12/30 18:34, , 33F
12/30 18:34, 33F
→
12/30 18:46, , 34F
12/30 18:46, 34F
→
12/30 18:47, , 35F
12/30 18:47, 35F
→
12/30 18:47, , 36F
12/30 18:47, 36F
→
12/30 18:48, , 37F
12/30 18:48, 37F
→
12/30 18:53, , 38F
12/30 18:53, 38F
→
12/30 18:53, , 39F
12/30 18:53, 39F
→
12/30 19:03, , 40F
12/30 19:03, 40F
→
12/30 19:05, , 41F
12/30 19:05, 41F
→
12/30 19:06, , 42F
12/30 19:06, 42F
→
12/30 19:11, , 43F
12/30 19:11, 43F
→
12/30 19:11, , 44F
12/30 19:11, 44F
推
12/30 19:59, , 45F
12/30 19:59, 45F
→
12/30 20:11, , 46F
12/30 20:11, 46F
答案是我用紅筆寫的而已唷
推
12/30 20:48, , 47F
12/30 20:48, 47F
→
12/30 20:48, , 48F
12/30 20:48, 48F
※ 編輯: ssssIssss (140.112.25.99), 12/30/2016 20:51:32
我畫第一題的流程好了,然後我想請問一下這樣子的話為何是Stall在cycle7?
因為若像是第二題這樣,那應該會是先IF ID EX ME ME WB 才是吧?
而這樣stall的地方就會是cycle9了?
lw IF ID EX ME WB
add IF ID XX EX ME WB
lw IF XX ID EX ME WB
bne XX IF ID XX EX ME WB
NOP IF
NOP XX IF
NOP IF
add IF ID EX ME WB
※ 編輯: ssssIssss (140.112.25.99), 12/30/2016 20:57:13
→
12/30 21:16, , 49F
12/30 21:16, 49F
→
12/30 21:17, , 50F
12/30 21:17, 50F
→
12/30 21:25, , 51F
12/30 21:25, 51F

→
12/30 21:28, , 52F
12/30 21:28, 52F

那我試著闡述我現在的理解,你們幫我確認是否為真感恩><
第一題中的load-use datahazard,等到lw的數值在MEM正確後便可forwarding給bne,
因此就如同其他datahazard的解決方式一樣,把要用到的stage延後到可forwarding
的地方即可。
而在第二題中,因為判別提早到ID便出現,因此情況便會是ID不斷Stall,持續判別
直到lw的reg正確傳遞給bne為止?
※ 編輯: ssssIssss (140.112.25.99), 12/30/2016 21:43:38
推
12/30 21:42, , 53F
12/30 21:42, 53F
→
12/30 21:43, , 54F
12/30 21:43, 54F
→
12/30 21:45, , 55F
12/30 21:45, 55F
→
12/30 21:46, , 56F
12/30 21:46, 56F
→
12/30 21:46, , 57F
12/30 21:46, 57F
→
12/30 21:50, , 58F
12/30 21:50, 58F
→
12/30 21:51, , 59F
12/30 21:51, 59F
→
12/30 21:51, , 60F
12/30 21:51, 60F
→
12/30 21:53, , 61F
12/30 21:53, 61F
→
12/30 21:53, , 62F
12/30 21:53, 62F
→
12/30 21:55, , 63F
12/30 21:55, 63F
→
12/30 21:55, , 64F
12/30 21:55, 64F
→
12/30 21:56, , 65F
12/30 21:56, 65F
→
12/30 21:58, , 66F
12/30 21:58, 66F
→
12/30 21:58, , 67F
12/30 21:58, 67F
→
12/30 21:59, , 68F
12/30 21:59, 68F
→
12/30 22:00, , 69F
12/30 22:00, 69F
→
12/30 22:01, , 70F
12/30 22:01, 70F
→
12/30 22:02, , 71F
12/30 22:02, 71F
→
12/30 22:03, , 72F
12/30 22:03, 72F
→
12/30 22:04, , 73F
12/30 22:04, 73F
→
12/30 22:04, , 74F
12/30 22:04, 74F
→
12/30 22:04, , 75F
12/30 22:04, 75F
→
12/30 22:07, , 76F
12/30 22:07, 76F
→
12/30 22:07, , 77F
12/30 22:07, 77F
→
12/30 22:08, , 78F
12/30 22:08, 78F
→
12/30 22:20, , 79F
12/30 22:20, 79F
→
12/30 22:20, , 80F
12/30 22:20, 80F
→
12/30 22:22, , 81F
12/30 22:22, 81F
討論串 (同標題文章)