--- id: P-REINFORCE-AUTO-4D7707 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Branch Prediction" --- # [[Branch Prediction|Branch Prediction]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Branch prediction(๋ถ„๊ธฐ ์˜ˆ์ธก)์€ ํ˜„๋Œ€ CPU๊ฐ€ ๋ถ„๊ธฐ ๋ช…๋ น์–ด์˜ ๊ณผ๊ฑฐ ๊ธฐ๋ก์„ ํ”„๋กœํŒŒ์ผ๋งํ•˜์—ฌ(์˜ˆ: ๋ถ„๊ธฐ๊ฐ€ ํ•ญ์ƒ ํ†ต๊ณผ๋˜๋Š”์ง€ ๊ด€์ฐฐ) ๋‹ค์Œ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•˜๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค [1]. ์ด๋Š” ์ถ”์ธก ์‹คํ–‰(Speculative Execution)๊ณผ ๊ฒฐํ•ฉ๋˜์–ด CPU์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋น„์•ฝ์ ์œผ๋กœ ๋†’์ด์ง€๋งŒ, ๊ณต๊ฒฉ์ž๊ฐ€ ๋ถ„๊ธฐ ๊ธฐ๋ก์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์  ๋•Œ๋ฌธ์— ์ŠคํŽ™ํ„ฐ(Spectre)์™€ ๊ฐ™์€ ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์ ์˜ ๊ณต๊ฒฉ ๊ฒฝ๋กœ๋กœ ์•…์šฉ๋ฉ๋‹ˆ๋‹ค [1, 2]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๋ถ„๊ธฐ ์˜ˆ์ธก๊ณผ ์ถ”์ธก ์‹คํ–‰(Speculative Execution):** ํ˜„๋Œ€ CPU๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ถ„๊ธฐ๋ฅผ ํ”„๋กœํŒŒ์ผ๋งํ•˜์—ฌ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค [1]. CPU๋Š” ๋ถ„๊ธฐ ์กฐ๊ฑด์ด ์‹ค์ œ๋กœ ๊ฒ€์ฆ๋˜๊ธฐ ์ „์— ์˜ˆ์ธก๋œ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๋กœ๋“œ ๋“ฑ์˜ ๋ช…๋ น์„ ๋ฏธ๋ฆฌ ์‹คํ–‰(์ถ”์ธก ์‹คํ–‰)ํ•˜๋ฉฐ, ์˜ˆ์ธก์ด ํ‹€๋ฆฐ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜๋ฉด ๋ถ„๊ธฐ ์ดํ›„์— ์ผ์–ด๋‚œ ์ž‘์—…์„ ๋กค๋ฐฑ(Roll back)ํ•ฉ๋‹ˆ๋‹ค [1]. - **์ŠคํŽ™ํ„ฐ(Spectre) ๊ณต๊ฒฉ์˜ ์›๋ฆฌ:** ์ŠคํŽ™ํ„ฐ ์ทจ์•ฝ์ ์€ ๋ถ„๊ธฐ ์˜ˆ์ธก์„ ์•…์šฉํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ธก ์‹คํ–‰์€ ๊ณผ๊ฑฐ์˜ ๊ธฐ๋ก์— ๋”ฐ๋ผ ๋ถ„๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ๊ณต๊ฒฉ์ž๋Š” ์ด ๊ณผ๊ฑฐ ๊ธฐ๋ก์„ ํ†ต์ œํ•จ์œผ๋กœ์จ CPU๊ฐ€ ์ถ”์ธก ์‹คํ–‰ ์ค‘์— ์–ด๋–ค ๋ถ„๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ• ์ง€ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2]. ์ถ”์ธก ์‹คํ–‰์ด ๋กค๋ฐฑ๋˜๋”๋ผ๋„ L1 ์บ์‹œ์— ๋กœ๋“œ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ทจ์†Œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ์ด์šฉํ•ด ํƒ€์ด๋ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด๋ฅผ ์œ ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 3]. - **๋ธŒ๋ผ์šฐ์ € ์—”์ง„(WebKit)์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ:** WebKit์˜ JavaScriptCore๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” JavaScript๋‚˜ WebAssembly ์ฝ”๋“œ์˜ ๋ณด์•ˆ(์˜ˆ: ๋ฐฐ์—ด ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ, ํƒ€์ž… ๊ฒ€์‚ฌ)์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด '๋ถ„๊ธฐ ๋ช…๋ น์–ด'์— ์˜์กดํ•ด์™”์Šต๋‹ˆ๋‹ค [4-6]. ๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๊ธฐ ์˜ˆ์ธก์„ ์•…์šฉํ•œ ์ŠคํŽ™ํ„ฐ ๊ณต๊ฒฉ์œผ๋กœ ์ธํ•ด, ๋ถ„๊ธฐ ๋ช…๋ น์–ด๋งŒ์œผ๋กœ๋Š” ๋” ์ด์ƒ ๋ณด์•ˆ ์†์„ฑ์„ ๊ฐ•์ œํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [4, 5]. - **๋Œ€์‘ ๋ฐ ์™„ํ™” ์กฐ์น˜:** ๋ถ„๊ธฐ ์˜ˆ์ธก์„ ์•…์šฉํ•˜๋Š” ๊ณต๊ฒฉ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด WebKit์€ ๊ธฐ์กด์˜ ๋ถ„๊ธฐ ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ๊ฒ€์‚ฌ ์™ธ์—๋„, ์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น(Index masking)์ด๋‚˜ ํฌ์ธํ„ฐ ํฌ์ด์ฆˆ๋‹(Pointer poisoning)๊ณผ ๊ฐ™์€ '๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ(Branchless Security Checks)' ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [7-9]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Speculative Execution|Speculative Execution]], [[Spectre|Spectre]], [[Branchless Security Checks|Branchless Security Checks]] - **Projects/Contexts:** [[WebKit|WebKit]], [[JavaScriptCore|JavaScriptCore]] - **Contradictions/Notes:** ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. (์†Œ์Šค ๋‚ด์— ์ƒ์ถฉํ•˜๋Š” ์˜๊ฒฌ์€ ์—†์œผ๋ฉฐ, ๊ณผ๊ฑฐ์—๋Š” ๋ถ„๊ธฐ ๋ช…๋ น์–ด๊ฐ€ ๋ณด์•ˆ ๊ฐ•์ œ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์—ฌ๊ฒจ์กŒ์œผ๋‚˜ ์ŠคํŽ™ํ„ฐ์˜ ๋“ฑ์žฅ์œผ๋กœ ์ธํ•ด ๋” ์ด์ƒ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ๋งฅ๋ฝ์  ๋ณ€ํ™”๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [4]). --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Branch Prediction.md ---