[TIL ํ”„๋กœ์ ํŠธ] 4์ผ์ฐจ - ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ณ„์ธต ๊ตฌ์กฐ

2025. 4. 7. 18:19ยท๊ณต๋ถ€
728x90


CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ์†๋„ ์ฐจ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๊ฒƒ์ด ์บ์‹œ(Cache)
๊ฒŒ์ž„์ฒ˜๋Ÿผ ์—ฐ์‚ฐ์ด ๋งŽ์€ ํ™˜๊ฒฝ์—์„œ๋Š” ์บ์‹œ์˜ ํ™œ์šฉ์ด ์„ฑ๋Šฅ์— ์—„์ฒญ๋‚œ ์˜ํ–ฅ์„ ์คŒ

1. ์™œ ์บ์‹œ๊ฐ€ ํ•„์š”ํ• ๊นŒ?

- CPU๋Š” ์—„์ฒญ ๋น ๋ฆ„
- RAM(๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ)์€ ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ
- ๋งค๋ฒˆ RAM์— ์ ‘๊ทผํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐœ์ƒ
-> ๊ทธ๋ž˜์„œ CPU ๊ทผ์ฒ˜์— ๋” ๋น ๋ฅด๊ณ  ์ž‘์€ ๊ธฐ์–ต์žฅ์น˜์ธ ์บ์‹œ๋ฅผ ๋‘ฌ์„œ ์„ฑ๋Šฅ์„ ๋†’์ž„

2. ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ

๋ณดํ†ต ์บ์‹œ๋Š” L1 -> L2 -> L3 ์ˆœ์„œ๋กœ ๊ตฌ์„ฑ๋จ
๊ณ„์ธต / ์œ„์น˜ / ํฌ๊ธฐ / ์†๋„ / ์—ญํ• 
L1 / CPU ๋‚ด๋ถ€ / ์ ์Œ(์ˆ˜์‹ญ KB) / ๊ฐ€์žฅ ๋น ๋ฆ„ / ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ช…๋ น๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
L2 / CPU ๋‚ด๋ถ€ or ์™ธ๋ถ€ / ์ˆ˜๋ฐฑ KB~MB / L1๋ณด๋‹ค ๋А๋ฆผ / L1์—์„œ ๋ชป ์ฐพ์„ ๋•Œ ์‚ฌ์šฉ
L3 / CPU ์™ธ๋ถ€ (๊ณต์œ ) / ์ˆ˜ MB / L2๋ณด๋‹ค ๋А๋ฆผ / ๋ชจ๋“  ์ฝ”์–ด๊ฐ€ ๊ณต์œ 

* RAM์€ ์บ์‹œ ๋ฏธ์Šค๊ฐ€ ๋‚ฌ์„ ๋•Œ ์ ‘๊ทผํ•˜๋Š” ์ฃผ ๊ธฐ์–ต์žฅ์น˜

3. ์บ์‹œ ํžˆํŠธ vs ์บ์‹œ ๋ฏธ์Šค

- ์บ์‹œ ํžˆํŠธ (Cache Hit)
-> ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์žˆ์Œ -> ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
- ์บ์‹œ ๋ฏธ์Šค (Cache Miss)
-> ์บ์‹œ์— ๋ฐ์ดํ„ฐ ์—†์Œ -> RAM ์ ‘๊ทผ -> ์†๋„ ๋А๋ฆผ

๊ฒŒ์ž„์—์„œ ์บ์‹œ ๋ฏธ์Šค๊ฐ€ ์žฆ์œผ๋ฉด
- FPS ํ•˜๋ฝ
- ์ž…๋ ฅ ์ง€์—ฐ
- ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ ๋А๋ ค์ง

4. ์บ์‹œ ์นœํ™”์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ (Cache-Friendly)

CPU๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•จ

๊ตฌ์กฐ์ฒด ์„ค๊ณ„ ํŒ
- SoA (Structure of Arrays) -> ์บ์‹œ ํšจ์œจ ๋†’์Œ
- AoS (Array of Structures) -> ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Œ

5. ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์—์„œ ์บ์‹œ ํ™œ์šฉ ์˜ˆ์‹œ

- Physics Simulation : ์ถฉ๋Œ ํŒ์ • ๊ณ„์‚ฐ ์‹œ ์บ์‹œ ํšจ์œจ์ด ์ค‘์š”
- Animation : ๋ณธ ์ •๋ณด์™€ ํŠธ๋žœ์Šคํผ ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์™€์•ผ ํ•จ
- AI Pathfinding : ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์‹œ ์บ์‹œ ์ตœ์ ํ™”
- Rendering : ๋ฒ„ํ…์Šค, ํ…์Šค์ฒ˜ ๋ฐ์ดํ„ฐ ์บ์‹ฑ

Unity ECS(Entity Component System)

1. ์ผ๋ฐ˜์ ์ธ OOP ๋ฐฉ์‹์˜ ๋ฌธ์ œ์  (MonoBehaviour ์ค‘์‹ฌ)

Unity์˜ ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์€ OOP(Object-Oriented Programming)๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์Œ
์ด ๊ฐ์ฒด๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ํฉ์–ด์ ธ ์žˆ์Œ (๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋ถˆ์—ฐ์†์ )
CPU์บ์‹œ ๋ฏธ์Šค ์ฆ๊ฐ€

2. CPU ์บ์‹œ๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜?

CPU๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(RAM)์—์„œ ์ง์ ‘ ์ฝ๊ธฐ๋ณด๋‹ค, L1~L3 ์บ์‹œ์— ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•จ
๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†๋œ ์ฃผ์†Œ(๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก)๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์—, ์บ์‹œ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ณดํ†ต 64๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋ฌถ์—ฌ์„œ ์ฒ˜๋ฆฌ๊ฐ€ ๋จ (์บ์‹œ ๋ผ์ธ ๋‹จ์œ„)
๋”ฐ๋ผ์„œ ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์ฃŒ์ˆ˜๋ก ์บ์‹œ ์ ์ค‘๋ฅ (Cache Hit Rate)์ด ๋†’์Œ

3. Unity ECS์˜ ๊ตฌ์กฐ: SoA (Structure of Arrays)

Unity ECS๋Š” ๋ฐ์ดํ„ฐ๋ฅผ SoA (Structure of Arrays) ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•จ
์ฆ‰, ์ปดํฌ๋„ŒํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ํฐ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•จ
Entity๋งˆ๋‹ค ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๊ฐ€์ง€๋ฉฐ, ์ด ๋ฐ์ดํ„ฐ๋“ค์€ Chunk๋ผ๋Š” ๋‹จ์œ„๋กœ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋จ
1Chunk = ์—ฌ๋Ÿฌ Entity์˜ ๋™์ผํ•œ ์ปดํฌ๋„ŒํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ณด๊ด€
Chunk๋Š” ECS ๋‚ด๋ถ€์—์„œ ์ปดํฌ๋„ŒํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณ ์ • ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก
ECS๋Š” ๋ชจ๋“  Entity์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ , ๋น„์Šทํ•œ ๊ตฌ์„ฑ์˜ Entity๋“ค์„ ๋ฌถ์–ด์„œ Chunk์— ์ €์žฅํ•จ
Chunk ํ•˜๋‚˜๋Š” ๋ณดํ†ต 16KB ํฌ๊ธฐ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์Œ (Unity ๊ธฐ๋ณธ ์„ค์ • ๊ธฐ์ค€)
Chunk๋Š” ๊ฐ™์€ Archetype(Entity ๊ตฌ์กฐ)๋ฅผ ๊ฐ€์ง„ Entity๋“ค์„ ๋‹ด๋Š” ์ปจํ…Œ์ด๋„ˆ
ํ•˜๋‚˜์˜ Chunk์— ๋‹ด๊ธด Entity๋“ค์€ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๊ฐ–๊ณ  ์žˆ์Œ
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์ƒ๊ธฐ๊ณ , CPU ์บ์‹œ ํšจ์œจ์ด ๊ทน๋Œ€ํ™” ๋จ
โ€œCPU ์บ์‹œ๋ฅผ ๊ณ ๋ คํ•œ ๋ฌผ๋ฆฌ์  ์ •๋ ฌ ๋ฐฉ์‹โ€

์ด ๊ตฌ์กฐ๊ฐ€ ์™œ ๋น ๋ฅธ๊ฐ€?
์—ฐ์†๋œ ๋ฐฐ์—ด ์ˆœํšŒ -> ์บ์‹œ ํžˆํŠธ -> ๋ฒกํ„ฐํ™” ๊ธฐ๋Šฅ (SIMD) -> ์ดˆ๊ณ ์† ์ฒ˜๋ฆฌ

4. Burst Compiler์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ๋•Œ

ECS๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋งŒ ๊ฐœ์„ ํ•œ ๊ฒŒ ์•„๋‹ˆ๋ผ, Burst Compiler์™€ ์กฐํ•ฉ๋˜๋ฉด ์„ฑ๋Šฅ์ด ๊ทน์ ์œผ๋กœ ํ–ฅ์ƒ๋จ
Burst๋Š” Low-level CPU ์ตœ์ ํ™”๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์คŒ
์—ฐ์†๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ SIMD(Vectorization) ์ตœ์ ํ™”๋„ ์ ์šฉ
์บ์‹œ ํžˆํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฃจํ”„๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ธ๋ผ์ธํ™” & ํŒŒ์ดํ”„๋ผ์ธํ™”


๋ฐ˜์‘ํ˜•

'๊ณต๋ถ€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL ํ”„๋กœ์ ํŠธ] 6์ผ์ฐจ - ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ & ์บ์‹œ ์ผ๊ด€์„ฑ (Memory Model & Cache Coherency)  (0) 2025.04.09
[TIL ํ”„๋กœ์ ํŠธ] 5์ผ์ฐจ - ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ์—์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ, ๊ฒฝ์Ÿ ์กฐ๊ฑด(Race Condition)  (0) 2025.04.08
[TIL ํ”„๋กœ์ ํŠธ] 3์ผ์ฐจ - ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฒŒ์ž„ ์ตœ์ ํ™”  (0) 2025.04.03
[TIL ํ”„๋กœ์ ํŠธ] 2์ผ์ฐจ - ์šด์˜์ฒด์ œ(OS)  (0) 2025.04.02
[TIL ํ”„๋กœ์ ํŠธ] 1์ผ์ฐจ - ์ปดํ“จํ„ฐ ๊ตฌ์กฐ (Computer Architecture)  (1) 2025.04.01
'๊ณต๋ถ€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [TIL ํ”„๋กœ์ ํŠธ] 6์ผ์ฐจ - ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ & ์บ์‹œ ์ผ๊ด€์„ฑ (Memory Model & Cache Coherency)
  • [TIL ํ”„๋กœ์ ํŠธ] 5์ผ์ฐจ - ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ์—์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ, ๊ฒฝ์Ÿ ์กฐ๊ฑด(Race Condition)
  • [TIL ํ”„๋กœ์ ํŠธ] 3์ผ์ฐจ - ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฒŒ์ž„ ์ตœ์ ํ™”
  • [TIL ํ”„๋กœ์ ํŠธ] 2์ผ์ฐจ - ์šด์˜์ฒด์ œ(OS)
KiTFOx
KiTFOx
  • KiTFOx
    KiTFOx's Notepad ๐Ÿ“
    KiTFOx
  • ๊ณต์ง€์‚ฌํ•ญ

    • ๐Ÿ“ข KiTFOx
  • 250x250
    • KiTFOx (118)
      • ๊ณต๋ถ€ (8)
        • Cใ†C++ (7)
        • Design Pattern (2)
        • Crowd Simulation (2)
        • LearnOpenGL ๋ฒˆ์—ญ (3)
        • OpenGL ์ž๋ฃŒ ๋ฒˆ์—ญ (2)
        • OpenGL (1)
        • UE ์ž๋ฃŒ ๋ฒˆ์—ญ (1)
        • AR (0)
        • OpenCV (0)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (50)
        • ์ž๋ฃŒ๊ตฌ์กฐ (3)
        • BaekJoon (35)
        • Programmers (11)
      • OpenGL ๋”ฐ๋ผ๊ฐ€๊ธฐ (2)
      • ๊ฒŒ์ž„์—”์ง„ (15)
        • Unity (13)
        • UE4 (0)
        • UE5 (2)
      • ๋ฉ”ํƒ€๋ฒ„์Šค (4)
        • Engage VR (3)
        • Altspace VR (1)
      • ํฌํŠธํด๋ฆฌ์˜ค ํ”„๋กœ์ ํŠธ (2)
        • NewRo (1)
        • Amaimon(Unity3D) (0)
        • ArenaSurvival(UE5) (0)
      • ๊ฐœ๋ฐœ์ผ์ง€ (1)
        • Pub-Simulator (1)
        • Project-B (0)
      • ๋„คํŠธ์›Œํฌ (4)
      • Etc Study (5)
      • ๋Œ€์™ธํ™œ๋™ (8)
        • ํฌ๋ž˜ํ”„ํ†ค ์ •๊ธ€ ๊ฒŒ์ž„๋žฉ (6)
      • ํšŒ๊ณ ๋ก (0)
      • ๊ฒŒ์ž„ ํ•œ๊ธ€ํŒจ์น˜ (0)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
KiTFOx
[TIL ํ”„๋กœ์ ํŠธ] 4์ผ์ฐจ - ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ณ„์ธต ๊ตฌ์กฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”