作者WishingTree (Tree)
看板Grad-ProbAsk
標題[理工] [計組] 白算盤習題4.15(control hazard)
時間Wed Jan 12 14:21:48 2022
最近在做白算盤的習題~
對4.15題的解答感到疑惑@@
題目:
https://i.imgur.com/1c7q6C3.png
解答:
https://i.imgur.com/W0eYkaY.png
4.15.1的題目說"Assume that branch outcomes are determined in the EX stage, that
there are no data hazards, and that no delay slots are used"
我想說是否跳躍既然是在EX stage才決定
那假如預測錯誤的話,不就是要把已經進入IF stage和ID stage的指令flush掉嗎@@
這樣應該是兩個stalls
但解答卻說會造成三個stalls
有點不能理解為什麼是三個stalls > <''
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.9.47.103 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1641968510.A.8D3.html
1F:→ BusterButter: 需要花三個cycle計算branch,到下一個cycle的時候, 01/12 15:55
2F:→ BusterButter: branch指令進入MEM階段,這時候他才能告訴前面的sta 01/12 15:55
3F:→ BusterButter: ge把指令flush掉,這時候已經有三個指令在前面,所 01/12 15:55
4F:→ BusterButter: 以一個misprediction會造成3個cycle的stall 01/12 15:55
5F:推 try66889: 樓上B大不好意思,但如果是這樣的話,原本beq在mem才判 01/12 19:37
6F:→ try66889: 斷時,應該會有4個bubbles產生? 01/12 19:38
7F:→ try66889: 但我記得在mem stage判斷的時候只會有3個bubbles @@ 01/12 19:39
8F:→ 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
9F:推 foogty: 如果我的理解沒錯的話,課本這張圖可以參考一下,可以看 01/12 21:01
10F:→ foogty: 到在mem stage才決定下一階段的PCSrc,至於題目說的assum 01/12 21:01
11F:→ foogty: e branch out come determine at Ex stage 我認為他說的 01/12 21:01
12F:→ foogty: 是判斷branch的結果,而在mem stage才將結果傳到pc src 01/12 21:01
14F:→ foogty: 下面這張是實際的範例 01/12 21:01
16F:推 jacksoncsie: 我剛看了一下,branch 的確是在 exe 算完沒錯, 01/12 21:48
17F:→ jacksoncsie: 但因為要平衡 stage latency 會移 and gate 至 mem 01/12 21:48
18F:→ jacksoncsie: 所以這題基本上就是原本 branch prediction 的版本 01/12 21:49
19F:→ jacksoncsie: stall 3 cycles 沒毛病 01/12 21:49
22F:→ try66889: 不過一樣的句子張凡這邊的解答 01/13 00:23
23F:→ try66889: 是寫stall兩個cycle耶 > < 01/13 00:23
24F:→ 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
25F:推 jimmy1112111: 101交大也有類似的問題,而凡哥對於要flush個數的 01/13 01:57
26F:→ jimmy1112111: 答案分別是3個cycle和1個cycle 01/13 01:57
29F:→ jimmy1112111: 所以凡哥的看法 01/13 01:57
30F:→ jimmy1112111: determine in ID -> flush 1 01/13 01:57
31F:→ jimmy1112111: determine in EXE -> flush 2 01/13 01:57
32F:→ jimmy1112111: determine in MEM -> flush 3 01/13 01:57
33F:→ jimmy1112111: 建議照張凡的,因為他完全以考試為主 01/13 01:57
34F:推 foogty: 1. 題目沒說的話是預設在mem stage 決定沒錯 01/13 11:10
35F:→ foogty: 2. 我覺得是敘述理解問題,這邊是白算盤4.5節control haz 01/13 11:10
36F:→ foogty: ard 介紹部分,可以看到課本把determine outcome 跟the b 01/13 11:10
37F:→ foogty: ranch knows what address to fetch 視作兩個動作https:/ 01/13 11:10
38F:→ foogty: /i.imgur.com/m2BIfcN.jpg 01/13 11:10
39F:→ foogty: 4.8節 reduce the delay of branch 部分,課本也選擇使用 01/13 11:10
40F:→ foogty: next PC select in mem 來說明 01/13 11:10
42F:→ foogty: 如果是交大考卷出determine at exe stage 的話建議是可以 01/13 11:10
43F:→ foogty: 按照原文書來做,如果要釋疑附上原文書的來源也較可能成 01/13 11:10
44F:→ foogty: 功,至於其他學校的話我就不太清楚了,以上是個人淺見 01/13 11:10
46F:推 try66889: 感謝樓上各位大大~有比較清楚惹! 01/13 11:38
非常感謝j大f大的解說> <
終於比較了解了Q_Q
※ 編輯: WishingTree (140.116.191.215 臺灣), 01/14/2022 10:30:24