--- id: wiki-2026-0508-branch-prediction title: Branch Prediction category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-4D7707] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Branch Prediction" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Branch Prediction|Branch Prediction]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Branch prediction(๋ถ„๊ธฐ ์˜ˆ์ธก)์€ ํ˜„๋Œ€ CPU๊ฐ€ ๋ถ„๊ธฐ ๋ช…๋ น์–ด์˜ ๊ณผ๊ฑฐ ๊ธฐ๋ก์„ ํ”„๋กœํŒŒ์ผ๋งํ•˜์—ฌ(์˜ˆ: ๋ถ„๊ธฐ๊ฐ€ ํ•ญ์ƒ ํ†ต๊ณผ๋˜๋Š”์ง€ ๊ด€์ฐฐ) ๋‹ค์Œ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•˜๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค [1]. ์ด๋Š” ์ถ”์ธก ์‹คํ–‰([[Speculative Execution|Speculative Execution]])๊ณผ ๊ฒฐํ•ฉ๋˜์–ด CPU์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋น„์•ฝ์ ์œผ๋กœ ๋†’์ด์ง€๋งŒ, ๊ณต๊ฒฉ์ž๊ฐ€ ๋ถ„๊ธฐ ๊ธฐ๋ก์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์  ๋•Œ๋ฌธ์— ์ŠคํŽ™ํ„ฐ([[Spectre|Spectre]])์™€ ๊ฐ™์€ ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์ ์˜ ๊ณต๊ฒฉ ๊ฒฝ๋กœ๋กœ ์•…์šฉ๋ฉ๋‹ˆ๋‹ค [1, 2]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๋ถ„๊ธฐ ์˜ˆ์ธก๊ณผ ์ถ”์ธก ์‹คํ–‰(Speculative Execution):** ํ˜„๋Œ€ CPU๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ถ„๊ธฐ๋ฅผ ํ”„๋กœํŒŒ์ผ๋งํ•˜์—ฌ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค [1]. CPU๋Š” ๋ถ„๊ธฐ ์กฐ๊ฑด์ด ์‹ค์ œ๋กœ ๊ฒ€์ฆ๋˜๊ธฐ ์ „์— ์˜ˆ์ธก๋œ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๋กœ๋“œ ๋“ฑ์˜ ๋ช…๋ น์„ ๋ฏธ๋ฆฌ ์‹คํ–‰(์ถ”์ธก ์‹คํ–‰)ํ•˜๋ฉฐ, ์˜ˆ์ธก์ด ํ‹€๋ฆฐ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜๋ฉด ๋ถ„๊ธฐ ์ดํ›„์— ์ผ์–ด๋‚œ ์ž‘์—…์„ ๋กค๋ฐฑ(Roll back)ํ•ฉ๋‹ˆ๋‹ค [1]. - **์ŠคํŽ™ํ„ฐ(Spectre) ๊ณต๊ฒฉ์˜ ์›๋ฆฌ:** ์ŠคํŽ™ํ„ฐ ์ทจ์•ฝ์ ์€ ๋ถ„๊ธฐ ์˜ˆ์ธก์„ ์•…์šฉํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ธก ์‹คํ–‰์€ ๊ณผ๊ฑฐ์˜ ๊ธฐ๋ก์— ๋”ฐ๋ผ ๋ถ„๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ๊ณต๊ฒฉ์ž๋Š” ์ด ๊ณผ๊ฑฐ ๊ธฐ๋ก์„ ํ†ต์ œํ•จ์œผ๋กœ์จ CPU๊ฐ€ ์ถ”์ธก ์‹คํ–‰ ์ค‘์— ์–ด๋–ค ๋ถ„๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ• ์ง€ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2]. ์ถ”์ธก ์‹คํ–‰์ด ๋กค๋ฐฑ๋˜๋”๋ผ๋„ L1 ์บ์‹œ์— ๋กœ๋“œ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ทจ์†Œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ์ด์šฉํ•ด ํƒ€์ด๋ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด๋ฅผ ์œ ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 3]. - **๋ธŒ๋ผ์šฐ์ € ์—”์ง„([[WebKit|WebKit]])์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ:** WebKit์˜ JavaScriptCore๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” JavaScript๋‚˜ [[WebAssembly|WebAssembly]] ์ฝ”๋“œ์˜ ๋ณด์•ˆ(์˜ˆ: ๋ฐฐ์—ด ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ, ํƒ€์ž… ๊ฒ€์‚ฌ)์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด '๋ถ„๊ธฐ ๋ช…๋ น์–ด'์— ์˜์กดํ•ด์™”์Šต๋‹ˆ๋‹ค [4-6]. ๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๊ธฐ ์˜ˆ์ธก์„ ์•…์šฉํ•œ ์ŠคํŽ™ํ„ฐ ๊ณต๊ฒฉ์œผ๋กœ ์ธํ•ด, ๋ถ„๊ธฐ ๋ช…๋ น์–ด๋งŒ์œผ๋กœ๋Š” ๋” ์ด์ƒ ๋ณด์•ˆ ์†์„ฑ์„ ๊ฐ•์ œํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [4, 5]. - **๋Œ€์‘ ๋ฐ ์™„ํ™” ์กฐ์น˜:** ๋ถ„๊ธฐ ์˜ˆ์ธก์„ ์•…์šฉํ•˜๋Š” ๊ณต๊ฒฉ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด WebKit์€ ๊ธฐ์กด์˜ ๋ถ„๊ธฐ ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ๊ฒ€์‚ฌ ์™ธ์—๋„, ์ธ๋ฑ์Šค ๋งˆ์Šคํ‚น([[Index Masking|Index Masking]])์ด๋‚˜ ํฌ์ธํ„ฐ ํฌ์ด์ฆˆ๋‹(Pointer Poisoning)๊ณผ ๊ฐ™์€ '๋ถ„๊ธฐ ์—†๋Š” ๋ณด์•ˆ ๊ฒ€์‚ฌ([[Branchless Security Checks|Branchless Security Checks]])' ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [7-9]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Speculative Execution|Speculative Execution]], Spectre, [[Branchless Security Checks|Branchless Security Checks]] - **Projects/Contexts:** [[WebKit|WebKit]], [[JavaScriptCore|JavaScriptCore]] - **Contradictions/Notes:** ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. (์†Œ์Šค ๋‚ด์— ์ƒ์ถฉํ•˜๋Š” ์˜๊ฒฌ์€ ์—†์œผ๋ฉฐ, ๊ณผ๊ฑฐ์—๋Š” ๋ถ„๊ธฐ ๋ช…๋ น์–ด๊ฐ€ ๋ณด์•ˆ ๊ฐ•์ œ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์—ฌ๊ฒจ์กŒ์œผ๋‚˜ ์ŠคํŽ™ํ„ฐ์˜ ๋“ฑ์žฅ์œผ๋กœ ์ธํ•ด ๋” ์ด์ƒ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ๋‹ค๋Š” ๋งฅ๋ฝ์  ๋ณ€ํ™”๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [4]). --- *Last updated: 2026-04-19* --- ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*