[爆卦]Control hazard是什麼?優點缺點精華區懶人包

為什麼這篇Control hazard鄉民發文收入到精華區:因為在Control hazard這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者WishingTree (Tree)看板Grad-ProbAsk標題[理工] [計組] 白算盤習...


最近在做白算盤的習題~
對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://www.ptt.cc/bbs/Grad-ProbAsk/M.1641968510.A.8D3.html
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: https://i.imgur.com/p2tu1GS.jpg 01/12 21:01
foogty: 下面這張是實際的範例 01/12 21:01
foogty: https://i.imgur.com/e67SgER.jpg 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: https://i.imgur.com/dlBpcJT.jpg 01/13 00:23
try66889: https://i.imgur.com/zdn4TJB.jpg 01/13 00:23
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: https://i.imgur.com/xvRWZ24.jpg 01/13 01:57
jimmy1112111: https://i.imgur.com/zom8nHS.jpg 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: https://i.imgur.com/FJtov48.jpg 01/13 11:10
foogty: 如果是交大考卷出determine at exe stage 的話建議是可以 01/13 11:10
foogty: 按照原文書來做,如果要釋疑附上原文書的來源也較可能成 01/13 11:10
foogty: 功,至於其他學校的話我就不太清楚了,以上是個人淺見 01/13 11:10
foogty: 抱歉,補一下圖https://i.imgur.com/xkSNQ8b.jpg 01/13 11:11
try66889: 感謝樓上各位大大~有比較清楚惹! 01/13 11:38
非常感謝j大f大的解說> <
終於比較了解了Q_Q
※ 編輯: WishingTree (140.116.191.215 臺灣), 01/14/2022 10:30:24

你可能也想看看

搜尋相關網站