→ BusterButter: 需要花三個cycle計算branch,到下一個cycle的時候, 01/12 15:55
→ BusterButter: branch指令進入MEM階段,這時候他才能告訴前面的sta 01/12 15:55
→ BusterButter: ge把指令flush掉,這時候已經有三個指令在前面,所 01/12 15:55
→ BusterButter: 以一個misprediction會造成3個cycle的stall 01/12 15:55
推 try66889: 樓上B大不好意思,但如果是這樣的話,原本beq在mem才判 01/12 19:37
→ try66889: 斷時,應該會有4個bubbles產生? 01/12 19:38
→ try66889: 但我記得在mem stage判斷的時候只會有3個bubbles @@ 01/12 19:39
→ try66889: 還是我有哪裡沒注意到的地方呢? 謝謝 > < 01/12 19:40
非常感謝B大的回答> <
但我跟T大也有同樣的疑惑@@
在課本4.8章的地方(p.316)
https://i.imgur.com/9d4KYBU.png
課本先假設說在MEM stage才知道是否跳躍
課本p.317也用這張圖做範例來說明
https://i.imgur.com/zPQUowP.png
然後課本p.318就有這樣的一段敘述> < (如下圖橘線標示的地方)
https://i.imgur.com/bgh1LjY.png
還是課本沒有提到說等到branch指令到WB stage的話,也要flush掉正在IF stage的指令
呢> <?
感謝大大T_T
※ 編輯: WishingTree (101.9.200.197 臺灣), 01/12/2022 20:01:21
推 foogty: 如果我的理解沒錯的話,課本這張圖可以參考一下,可以看 01/12 21:01
→ foogty: 到在mem stage才決定下一階段的PCSrc,至於題目說的assum 01/12 21:01
→ foogty: e branch out come determine at Ex stage 我認為他說的 01/12 21:01
→ foogty: 是判斷branch的結果,而在mem stage才將結果傳到pc src 01/12 21:01
→ foogty: 下面這張是實際的範例 01/12 21:01
推 jacksoncsie: 我剛看了一下,branch 的確是在 exe 算完沒錯, 01/12 21:48
→ jacksoncsie: 但因為要平衡 stage latency 會移 and gate 至 mem 01/12 21:48
→ jacksoncsie: 所以這題基本上就是原本 branch prediction 的版本 01/12 21:49
→ jacksoncsie: stall 3 cycles 沒毛病 01/12 21:49
→ try66889: 不過一樣的句子張凡這邊的解答 01/13 00:23
→ try66889: 是寫stall兩個cycle耶 > < 01/13 00:23
→ try66889: 都是branch outcome are determined in the EX stage 01/13 00:27
感謝各位大神熱心回答> <
看了f大跟j大的回答才知道自己的問題是在branch那個hardware component
1. 所以做題目的時候,如果題目沒特別敘述,都是預設branch在MEM stage嗎> <
2. 但是看到t大po的那題又好疑惑Q_Q(t大po的是課本習題4.10.3)
3. 是不是只有當是否跳躍移到ID stage決定,才是真的連branch都移到ID stage?
所以才只有一個stall?
以下節錄自課本p.319
https://i.imgur.com/g5Y0OPg.png
https://i.imgur.com/dlLkmy8.png
https://i.imgur.com/5d7IsrE.png
在此先跟各位熱心的大神說聲謝謝> <
※ 編輯: WishingTree (101.9.193.126 臺灣), 01/13/2022 00:47:07
※ 編輯: WishingTree (101.9.193.126 臺灣), 01/13/2022 01:27:25
推 jimmy1112111: 101交大也有類似的問題,而凡哥對於要flush個數的 01/13 01:57
→ jimmy1112111: 答案分別是3個cycle和1個cycle 01/13 01:57
→ jimmy1112111: 所以凡哥的看法 01/13 01:57
→ jimmy1112111: determine in ID -> flush 1 01/13 01:57
→ jimmy1112111: determine in EXE -> flush 2 01/13 01:57
→ jimmy1112111: determine in MEM -> flush 3 01/13 01:57
→ jimmy1112111: 建議照張凡的,因為他完全以考試為主 01/13 01:57
推 foogty: 1. 題目沒說的話是預設在mem stage 決定沒錯 01/13 11:10
→ foogty: 2. 我覺得是敘述理解問題,這邊是白算盤4.5節control haz 01/13 11:10
→ foogty: ard 介紹部分,可以看到課本把determine outcome 跟the b 01/13 11:10
→ foogty: ranch knows what address to fetch 視作兩個動作https:/ 01/13 11:10
→ foogty: /i.imgur.com/m2BIfcN.jpg 01/13 11:10
→ foogty: 4.8節 reduce the delay of branch 部分,課本也選擇使用 01/13 11:10
→ foogty: next PC select in mem 來說明 01/13 11:10
→ foogty: 如果是交大考卷出determine at exe stage 的話建議是可以 01/13 11:10
→ foogty: 按照原文書來做,如果要釋疑附上原文書的來源也較可能成 01/13 11:10
→ foogty: 功,至於其他學校的話我就不太清楚了,以上是個人淺見 01/13 11:10
推 try66889: 感謝樓上各位大大~有比較清楚惹! 01/13 11:38
非常感謝j大f大的解說> <
終於比較了解了Q_Q
※ 編輯: WishingTree (140.116.191.215 臺灣), 01/14/2022 10:30:24