๋ถ„๊ธฐ ์˜ˆ์ธก (Branch Prediction)

๋ถ„๊ธฐ ์˜ˆ์ธก์€ ์ปดํŒŒ์ผ ๋ฐ ์ตœ์ ํ™” ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๊ณ , ๋™์‹œ์— ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ถ€๋ถ„์ด๊ธฐ๋„ ํ•˜๋‹ค.

ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์กฐ์™€ ์—ฐ๊ด€์ด ๊นŠ๋‹ค.
https://blog.naver.com/sssang97/223940931299

CPU๋Š” branch ๋ช…๋ น์–ด๋ฅผ ๋งŒ๋‚˜๋ฉด, ์˜ˆ์ƒ ๋ถ„๊ธฐ ์ง€์ ์„ ์ถ”์ธกํ•ด์„œ ๊ฑฐ๊ธฐ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•ด์„œ ์‹คํ–‰ ์ค€๋น„๋ฅผ ํ•œ๋‹ค.
์˜ˆ์ธก์ด ๋งž๋‹ค๋ฉด ๊ต‰์žฅํžˆ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹คํŒจํ•œ๋‹ค๋ฉด ๊ทธ ์‹œ์ ์— ๋‹ค ๋ฒ„๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ถ„๊ธฐ์˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋”์ฐํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
๋Œ€์ฒด๋กœ ์˜ˆ์ธก์ด ์‹คํŒจํ–ˆ์„ ๋•Œ๋Š” ์ตœ์‹  ํ”„๋กœ์„ธ์Šค ๊ธฐ์ค€์œผ๋กœ ์ตœ์†Œ 10๊ฐœ ์ •๋„์˜ ๋ช…๋ น์–ด ์‹คํ–‰์„ ์†ํ•ด๋ณธ๋‹ค.




๊ทธ๋ž˜์„œ ์ง€๊ธˆ์€

๋งŽ์€ ํ˜„๋Œ€ CPU ์ œ์กฐ์‚ฌ๋“ค์€ branch prediction ์ตœ์ ํ™” ๊ด€๋ จ๋œ ๋ถ€๋ถ„์—์„œ ๋งŽ์€ ๋…ธ๋ ฅ์„ ํ•ด์™”๊ณ , ํ•˜๊ณ  ์žˆ๋‹ค.

์ด๊ฑด ์ง€๊ธˆ์— ์ด๋ฅด๋Ÿฌ์„œ๋„ ์™„์ „ํžˆ ํ•ด๊ฒฐ๋˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ์ด๊ณ , ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ์–‘์ชฝ์—์„œ ํ•จ๊ป˜ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ํž˜์„ ์“ฐ๊ณ  ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
CPU ์ œ์กฐ์‚ฌ์—์„œ๋Š” ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ณ ๊ฐœ์„ ์„ ์ด์–ด๋‚˜๊ฐ€๊ณ  ์žˆ๊ณ , ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ์‚ฌ์šฉ์ž๋Š” branch prediction์„ ๊ณ ๋ คํ•ด์„œ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.




CPU๊ฐ€ ํ•˜๋Š” ๋…ธ๋ ฅ

branch์— ๋Œ€ํ•œ ์˜ˆ์ธก์€ ์ˆœ์ „ํžˆ ํ™•๋ฅ ์„ ๋”ฐ๋ฅด๊ณ , ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.
๊ทธ๋ž˜๋„ CPU ์ œ์กฐ์‚ฌ๋“ค์€ ์–ด๋–ป๊ฒŒ๋“  branch ์˜ˆ์ธก ์ ์ค‘๋ฅ ์„ ๋†’์ด๋ ค๊ณ  ์• ๋ฅผ ์“ฐ๊ณ  ์žˆ๊ณ , ๊ทธ๊ฑด ํ˜„์žฌ์ง„ํ–‰ํ˜•์ด๋‹ค.

์ง€๋‚œํ•œ ์—ญ์‚ฌ์˜ ์ถ•์ ์œผ๋กœ ์ธํ•ด์„œ ์ตœ์‹  CPU๋“ค์€ branch ์˜ˆ์ธก ์ ์ค‘๋ฅ ์ด ๊ฝค ์ข‹๊ณ , ์ง์ ‘ branch prediction์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์„ธ๋ถ€์กฐ์ •์„ ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์„ฑ๋Šฅ์ด ์ž˜ ๋‚˜์˜ค๋Š” ํŽธ์ด๋‹ค.
๊ทธ๋ž˜์„œ ์˜คํžˆ๋ ค ์• ๋งคํ•˜๊ฒŒ ๊ฑด๋“œ๋ฆฌ๋ฉด ๋” ๋А๋ ค์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ๊ต‰์žฅํžˆ ๋งŽ์€ ์ ‘๊ทผ๋ฒ•๊ณผ ํŠธ๋ฆญ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

๊ณตํ†ต์ ์œผ๋กœ, ๋ถ„๊ธฐ๋ฅผ ์ตœ์ ํ™”ํ•˜๋ ค๋ฉด ๋ถ„๊ธฐ ์‹คํ–‰์— ๋Œ€ํ•œ ๊ธฐ๋ก์„ ๋‚จ๊ฒจ๋‘ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ถ€์ ์œผ๋กœ Branch History Table(BHT)์ด๋ผ๋Š” ๊ฒƒ์„ ๋‘”๋‹ค.




One-level branch prediction - 1๋น„ํŠธ ์นด์šดํ„ฐ(Last time prediction)

๋น„๊ต์  ๋‹จ์ˆœํ•œ ์ถ•์— ์†ํ•˜๋Š” ์˜ˆ์ธก ๋ฐฉ์‹์ด๋‹ค.

์ด๊ฒŒ ๋ญ๋ƒ๋ฉด, ๋งˆ์ง€๋ง‰์œผ๋กœ ํƒ„ ๋ถ„๊ธฐ๋ฅผ ์ ํ•ฉํ•œ ๋ถ„๊ธฐ๋กœ ํŒ๋‹จํ•˜๊ณ  ์˜ˆ์ธกํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ฒ˜์Œ ์‹คํ–‰ํ• ๋•Œ A/B ๋ถ„๊ธฐ ์ค‘ A ๊ฒฝ๋กœ๋ฅผ ํƒ”๋‹ค๋ฉด, ๋‹ค์‹œ ์žฌ์ง„์ž…ํ–ˆ์„ ๋•Œ๋„ A๋ฅผ ํƒˆ ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ธกํ•ด์„œ ๋ช…๋ น์–ด๋ฅผ ๋กœ๋“œํ•œ๋‹ค. ๋งŒ์•ฝ ๊ทธ ๋‹ค์Œ์— B ๋ถ„๊ธฐ๋ฅผ ํƒ„๋‹ค๋ฉด ๊ทธ ๋‹ค์Œ ์žฌ์ง„์ž… ์‹œ์—๋Š” B๋กœ ์˜ˆ์ธกํ•œ๋‹ค.

์‹ค์ œ ๋ถ„๊ธฐ ์‹คํ–‰ ํšŸ์ˆ˜์™€๋Š” ๊ด€๊ณ„๊ฐ€ ์—†๊ณ  ์ง€๋‚œ๋ฒˆ ์‹คํ–‰์„ ๊ธฐ๋ฐ˜์œผ๋กœ๋งŒ ์˜ˆ์ธก์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ถ„๊ธฐ๊ฐ€ ํ•œ์ชฝ์œผ๋กœ๋งŒ ์˜ค๋ž˜ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฝ์šฐ์— ํšจ์œจ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋‹ค.

์นด์šดํ„ฐ ๊ฐ’์€ 1๋น„ํŠธ ๊ฐ’์ด๋‹ค. ๊ธฐ๋‹ค ์•„๋‹ˆ๋‹ค ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๊ฑด ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์—์„œ ์„ฑ๋Šฅ์ด ๊ฑฐ์˜ ์ข‹์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„๋Œ€ ๊ตฌ์กฐ์—์„œ๋Š” ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
A ๋ถ„๊ธฐ๋กœ 100๋ฒˆ๋ฅผ ํƒ€๋‹ค๊ฐ€ B ๋ถ„๊ธฐ๋ฅผ ํ•œ๋ฒˆ๋งŒ ํƒ€๋”๋ผ๋„ ๋ฐ”๋กœ prediction์ด ๋ง๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜์˜จ ๊ฒƒ์ด ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋Š” 2๋น„ํŠธ ์นด์šดํ„ฐ ๋ฐฉ์‹์ด๋‹ค.




One-level branch prediction - 2๋น„ํŠธ ์นด์šดํ„ฐ

์ด๊ฑด ๊ทธ๋ ‡๋‹ค/์•„๋‹ˆ๋‹ค ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์—์„œ ๋” ๋‚˜์•„๊ฐ€์„œ, ๊ฐ•ํ•œ ์„ ํ˜ธ/๊ฐ•ํ•œ ๋น„์„ ํ˜ธ/์•ฝํ•œ ์„ ํ˜ธ/์•ฝํ•œ ๋น„์„ ํ˜ธ์˜ 4๊ฐ€์ง€๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

๋Œ€๋‹จํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
A/B ๋ธŒ๋žœ์น˜์˜ ์„ ํ˜ธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ๊ต์ฒดํ•˜๋Š” ํƒ€์ด๋ฐ์— ํ•œ๋ฒˆ์˜ ์œ ์˜ˆ๋ฅผ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, A ๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ•ํ•˜๊ฒŒ ์„ ํƒ๋œ ์ƒํƒœ์—์„œ B ๋ธŒ๋žœ์น˜๊ฐ€ ์‹คํ–‰๋˜๋”๋ผ๋„, ํ•œ๋ฒˆ์€ ๋ด์ฃผ๊ณ  ์•ฝํ•œ ์„ ํƒ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•œ๋‹ค. ๊ทธ ์ƒํƒœ์—์„œ ๋˜ B๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋ฉด B๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์ง€๋งŒ, A๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋ฉด ์˜ˆ์ธก์ด ์œ ์ง€๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ์ธก ์œ ์ง€์œจ์ด ๋” ๋†’์•„์„œ ์˜›๋‚ ์—๋Š” ๋‚˜๋ฆ„ ํ•œ๋™์•ˆ ๊ฝค ์“ฐ์˜€๋‹ค.




Two-level Adaptive Predictor

์—ฌ๊ธฐ์„œ๋Š” ๋‹จ์ˆœ ์ƒํƒœ ํ”Œ๋ž˜๊ทธ ์ฒ˜๋ฆฌ ์ˆ˜์ค€์—์„œ ๋ฒ—์–ด๋‚˜์„œ ์ ์‘ํ˜• ๊ฐœ๋…์„ ๋„์ž…ํ•œ๋‹ค.

์šฐ์„  ๋ธŒ๋žœ์น˜๋ณ„ ์‹คํ–‰ ๊ธฐ๋ก์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด Global History Register(GHR)๋ผ๋Š” ๊ฒƒ์„ ๋‘”๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๊ธฐ์กด ๋ฐฉ์‹๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.

์ฐจ์ด์ ์ด ์ƒ๊ธฐ๋Š” ๋ถ€๋ถ„์€, ๋‹จ์ˆœ ๋ธŒ๋žœ์น˜๋ณ„ ํžˆ์Šคํ† ๋ฆฌ ์™ธ์—๋„ ๊ฐ "์‹คํ–‰ ํ๋ฆ„", ํŒจํ„ด์— ๋Œ€ํ•œ ์˜ˆ์ธก ์ •๋ณด๊นŒ์ง€ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฑธ Pattern history table์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


์ด๊ฑด ํŠน์ • ์‹คํ–‰ ํ๋ฆ„, ๋ถ„๊ธฐ์˜ ์ง‘ํ•ฉ๋งˆ๋‹ค ๊ด€๋ฆฌ๋˜๋Š” ์ผ์ข…์˜ ํ•ด์‹œํ…Œ์ด๋ธ”์ด๋‹ค.
GHR์˜ ํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์‹œ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์ ‘๊ทผํ•ด์„œ ์˜ˆ์ธก ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์ฝ์–ด์„œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ์‘์šฉ๋œ๋‹ค.
"ํŒจํ„ด"์˜ ๋‹จ์œ„๋‚˜ ํฌ๊ธฐ, ํ•ด์‹œ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์ง€์ •ํ• ์ง€๋Š” ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๊ฐ€์žฅ ํŠน์ง•์€, ์˜ˆ์ธก์ด ๊ฐœ๋ณ„ ๋ถ„๊ธฐ ๋‹จ์œ„์—๋งŒ ๊ทธ์น˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์—ฌ๋Ÿฌ ๋ถ„๊ธฐ ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๊นŒ์ง€ ๊ณ ๋ คํ•ด์„œ ์˜ˆ์ธก์„ ์งค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

ํ˜„์กดํ•˜๋Š”/์ตœ์‹  CPU๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ด ๋ฐฉ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๊ฑฐ๋‚˜, ์ด ๋ฐฉ์‹์˜ ๋ณ€ํ˜• ์•„ํ‚คํ…์ณ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค.
branch predictor ๊ตฌ์กฐ์˜ ๋ผˆ๋Œ€ ๊ทธ ์ž์ฒด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

AMD์˜ ์ตœ์‹  ์•„ํ‚คํ…์ณ์ธ Zen 5๋งŒ ํ•ด๋„ Two-level Adaptive Predictor์˜ ์ง์ ‘์ ์ธ ๋ณ€ํ˜• ์„ค๊ณ„์ธ 2-Ahead Branch Predictor๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๊ฒƒ ์™ธ์—๋„ ๋ณ€ํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ตฌ์กฐ๋“ค์ด ์ƒ๋‹นํžˆ ๋งŽ์€๋ฐ, ์—ฌ๊ธฐ์„œ ๋‹ค ๋‹ค๋ฃจ์ง€๋Š” ์•Š๊ฒ ๋‹ค. ์ด๊ฒŒ ํ•ต์‹ฌ์ด๋‹ค.




์ปดํŒŒ์ผ๋Ÿฌ ์ˆ˜์ค€ ์ฒ˜๋ฆฌ

CPU๋„ ๋งŽ์€ ๋…ธ๋ ฅ์„ ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์ปดํŒŒ์ผ๋Ÿฌ๋„ ๋ถ„๊ธฐ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅ์„ ํ•œ๋‹ค.



๋ถˆํ•„์š”ํ•œ ๋ถ„๊ธฐ ์ œ๊ฑฐ

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๊ฐ€๊ธ‰์  ๋ถ„๊ธฐ๋ฅผ ์ œ๊ฑฐํ•œ ๋ฒ„์ „์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•œ๋‹ค.
ํ˜น์€ ์‚ฌ์šฉ์ž ์ˆ˜์ค€์—์„œ๋„ ์‹œ๋„๋ฅผ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.



branch prediction ํžŒํŠธ

GCC/Clang์˜ ๊ฒฝ์šฐ์—๋Š” __builtin_expect๋ผ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ํ™•์žฅ์„ ํ†ตํ•ด์„œ branch prediction์„ ์œ„ํ•œ ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

// ์ปดํŒŒ์ผ๋Ÿฌ ํžŒํŠธ ์ œ๊ณต
if (__builtin_expect(condition, 1)) {  // likely
    // ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
} else {  // unlikely
    // ๋“œ๋ฌผ๊ฒŒ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ
}

์ด๋Ÿฌ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” "likely" ๋ถ„๊ธฐ๋ฅผ ๋งŽ์ด ํƒˆ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค.



PGO

PGO๋Š” Branch Prediction๋ฅผ ์œ ๋„ํ•˜๋Š”๋ฐ์— ๊ฐ€์žฅ ํƒ์›”ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์ˆ˜์ค€ ์ ‘๊ทผ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋‹ค.

PGO๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์‹คํ–‰ ๊ธฐ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์ฃผ ๊ฑธ๋ฆฌ๋Š” hot branch์™€ ๋œ ๊ฑธ๋ฆฌ๋Š” cold branch๋ฅผ ํ†ต๊ณ„์ ์œผ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰ ๋นˆ๋„๊ฐ€ ๋†’์€ hot branch๋ฅผ ๊ฐ€๊นŒ์ด ๋ฐฐ์น˜ํ•ด์„œ ์บ์‹œ์— ํƒ€๋„๋ก ํ•˜๊ณ , ์‹คํ–‰ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ cold branch๋ฅผ ๋ฉ€๋ฆฌ ๋ฐฐ์น˜ํ•ด์„œ ๋ถ„๊ธฐ ์˜ˆ์ธก๋ฅ ์ด ๋†’์•„์ง€๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

https://blog.naver.com/sssang97/223937776756



์ฐธ์กฐ
https://chrisfeilbach.com/2025/07/05/understand-cpu-branch-instructions-better/
https://en.wikipedia.org/wiki/Branch_predictor
https://enesharman.medium.com/branch-prediction-algorithms-a7f8da1394b4
https://www.slideserve.com/bracha/two-level-adaptive-branch-prediction
https://m.blog.naver.com/ektjf731/223053617175
https://enesharman.medium.com/branch-prediction-algorithms-a7f8da1394b4