Memory Hierarchy
๊ฐ์
์ปดํจํฐ ์์คํ ์์ ํ๋ก์ธ์์ ์ ์ฅ ์ฅ์น ์ฌ์ด์ ์๋ ์ฐจ์ด(Processor-Memory Gap)๋ ์์ญ ๋ ๊ฐ ์ปดํจํ ์ํคํ ์ฒ์ ํต์ฌ ๊ณผ์ ์๋ค. ๋ ์ง์คํฐ๋ ์ ํผ์ฝ์ด(ps) ๋ด์ ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ง, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(DRAM)๋ ์์ญ ๋๋ ธ์ด(ns), ์ ์ฅ ์ฅ์น๋ ์ ๋ง์ดํฌ๋ก์ด(ยตs) ์ด์์ด ์์๋๋ค. Memory Hierarchy๋ ์ด ์๋ ์ฐจ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๋ค์ํ ์๋์ ์ฉ๋์ ๊ฐ์ง ์ ์ฅ ๊ณ์ธต์ ๊ตฌ์กฐํํ ๊ฒ์ด๋ค. ๋น๋ ๋์ ๋ฐ์ดํฐ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ฅ์์, ๋น๋ ๋ฎ์ ๋ฐ์ดํฐ๋ ๋๋ฆฌ๊ณ ํฐ ์ ์ฅ์์ ๋ฐฐ์นํ์ฌ ์์คํ ์ ์ฒด ์ฑ๋ฅ์ ๊ทน๋ํํ๋ค. ๋ณธ ๋ฌธ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ๊ตฌ์กฐ, ๊ฐ ๊ณ์ธต์ ํน์ฑ, Locality ์๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๋์ ์๋ฆฌ๋ฅผ ๋ถ์ํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ๋จ์ํ ๋น ๋ฅธ ์ ์ฅ์๋ฅผ ์์ ๋๋ ๊ตฌ์กฐ๊ฐ ์๋๋ค. ์ง์ญ์ฑ(Locality), ํ๊ท ์ ๊ทผ ์๊ฐ(AMAT), ์บ์ ๋ฏธ์ค ํจ๋ํฐ, ์ฐ๊ธฐ ์ ์ฑ , ๋ฉํฐ์ฝ์ด ๊ณต์ ๋ฒ์๋ฅผ ํจ๊ป ๋ง์ถฐ์ผ ์ค์ ์ฑ๋ฅ์ด ๋์จ๋ค. ๊ฐ์ DRAM ์ฉ๋์ด๋ผ๋ ์บ์ ํฌ๊ธฐ์ ์ฐ๊ด๋, ํ๋ฆฌํ์น ๋ฐฉ์, ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ ์ค์ผ์ค๋ง์ ๋ฐ๋ผ ์ฒด๊ฐ ์ฑ๋ฅ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง๋ฉฐ, ํ๋ ์์คํ ์ L1/L2/L3 ์บ์์ NUMA, CXL ๋ฉ๋ชจ๋ฆฌ, SSD๊น์ง ํฌํจํ ๋์ ์๋ฏธ์ ๊ณ์ธต ๊ตฌ์กฐ๋ก ํด์๋๋ค.
ํต์ฌ ๊ฐ๋
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ
ํ๋ ์ปดํจํฐ ์์คํ ์ ์ ํ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต:
| ๊ณ์ธต | ์ ์ฅ ๋งค์ฒด | ์ ๊ทผ ์๊ฐ | ์ฉ๋ | ๋นํธ๋น ๋น์ฉ | ํน์ง |
|---|---|---|---|---|---|
| L1 Cache | SRAM | ~1 ns | ์์ญ KB | ๋งค์ฐ ๋์ | ํ๋ก์ธ์ ๋ด์ฅ, ๊ฐ์ฅ ๋น ๋ฆ |
| L2 Cache | SRAM | ~3-10 ns | ์๋ฐฑ KB~์ MB | ๋์ | ํ๋ก์ธ์ ๋ด์ฅ ๋๋ ๊ทผ์ |
| L3 Cache | SRAM | ~10-30 ns | ์ MB~์์ญ MB | ์ค๊ฐ | ๊ณต์ ์บ์ (๋ฉํฐ์ฝ์ด) |
| Main Memory | DRAM | ~50-100 ns | ์ GB~์ TB | ๋ฎ์ | ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ ๊ด๋ฆฌ |
| Secondary Storage | SSD (NAND) | ~10-100 ยตs | ์๋ฐฑ GB~์ TB | ๋งค์ฐ ๋ฎ์ | ๋นํ๋ฐ์ฑ, NAND ํ๋์ |
| Tertiary Storage | HDD | ~5-10 ms | ์ TB | ๊ทนํ ๋ฎ์ | ๊ธฐ๊ณ์, ๋์ฉ๋ ์์นด์ด๋ธ |
Locality ์๋ฆฌ
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ํจ์จ์ฑ์ ์ง์ญ์ฑ(Locality) ์๋ฆฌ์ ๊ธฐ๋ฐํ๋ค:
๊ทธ๋ฆผ 1. ์๊ฐ์ ยท๊ณต๊ฐ์ ์ง์ญ์ฑ ๊ฐ๋
| ์ง์ญ์ฑ ์ ํ | ์ ์ | ์์ |
|---|---|---|
| ์๊ฐ์ locality (Temporal) | ํ๋ฒ ์ ๊ทผ๋ ์ฃผ์๋ ๊ณง ๋ค์ ์ ๊ทผ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ | ๋ฐ๋ณต๋ฌธ, ํจ์ ํธ์ถ |
| ๊ณต๊ฐ์ locality (Spatial) | ํ๋ฒ ์ ๊ทผ๋ ์ฃผ์์ ์ธ์ ์ฃผ์๊ฐ ๊ณง ์ ๊ทผ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ | ๋ฐฐ์ด ์ํ, ์์ฐจ ์ฝ๋ ์คํ |
| ์์์ locality (Sequential) | ์ฝ๋๊ฐ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ ๊ฒฝํฅ | ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋จ ํ๋ฆ |
| ๋ถ๊ธฐ locality (Branch) | ๋ถ๊ธฐ ๊ฒฝ๋ก๊ฐ ๋ฐ๋ณต๋์ด ๊ฐ์ ์ฝ๋ ๋ธ๋ก์ด ์์ฃผ ์ ํ๋จ | ์กฐ๊ฑด๋ฌธ, ๋ฃจํ ๋ฐฑ์ฃ์ง |
SRAM vs DRAM ๋น๊ต
| ํญ๋ชฉ | SRAM (Static RAM) | DRAM (Dynamic RAM) |
|---|---|---|
| ์ ๊ตฌ์กฐ | 6 ํธ๋์ง์คํฐ (6T) | 1 ํธ๋์ง์คํฐ + 1 ์ปคํจ์ํฐ (1T1C) |
| ์๋ | ๋งค์ฐ ๋น ๋ฆ (~1 ns) | ์๋์ ์ผ๋ก ๋๋ฆผ (~50 ns) |
| ๋ฐ๋ | ๋ฎ์ (์ ํฌ๊ธฐ ํผ) | ๋์ (์ ์์) |
| ๋น์ฉ | ๋์ | ๋ฎ์ |
| ์ ๋ ฅ | ์ ์ ์ ๋ ฅ ์๋น ์์ | ๋ฆฌํ๋ ์ ํ์ (๋์ ) |
| ์ฉ๋ | ์บ์ ๋ฉ๋ชจ๋ฆฌ | ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ |
| ๋ฆฌํ๋ ์ | ๋ถํ์ | ์ฃผ๊ธฐ์ ๋ฆฌํ๋ ์ ํ์ (~64 ms) |
์บ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์๋ฆฌ
์บ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์์ ๊ฐ์ฅ ์ค์ํ ๊ตฌ์ฑ ์์๋ก, ์์ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๋ณต์ฌ๋ณธ์ ์ ์งํ๋ค:
๊ทธ๋ฆผ 2. ์บ์ ํํธ/๋ฏธ์ค ๋์ ํ๋ฆ
์บ์ ๋งคํ ๋ฐฉ์
| ๋ฐฉ์ | ์ค๋ช | ์ฅ์ | ๋จ์ |
|---|---|---|---|
| Direct Mapped | ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ด ์บ์์ ์ ํํ ํ ์์น์๋ง ๋งคํ | ๊ตฌํ ๋จ์, ๋น ๋ฆ | ์ถฉ๋ ๋ฏธ์ค ๋น๋ฐ |
| Fully Associative | ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ด ์บ์์ ์์ ์์น์ ๋งคํ ๊ฐ๋ฅ | ์ถฉ๋ ๋ฏธ์ค ์ต์ํ | ๋น๊ต ํ๋ก ๋ณต์ก, ๋๋ฆผ |
| Set Associative | N-way๋ก ๊ทธ๋ฃนํ (๋ณดํต 2~16-way) | ๊ตฌํ ๋ณต์ก๋์ ์ฑ๋ฅ์ ์ ์ถฉ | ์ค๊ฐ ๋ณต์ก๋ |
์บ์ ๊ต์ฒด ์ ์ฑ
์บ์๊ฐ ๊ฐ๋ ์ฐผ์ ๋ ์ด๋ค ๋ธ๋ก์ ๊ต์ฒดํ ์ง ๊ฒฐ์ ํ๋ ์ ์ฑ :
| ์ ์ฑ | ์ค๋ช | ํน์ง |
|---|---|---|
| LRU (Least Recently Used) | ๊ฐ์ฅ ์ค๋์ ์ ์ฌ์ฉ๋ ๋ธ๋ก ๊ต์ฒด | ๊ฐ์ฅ ์ผ๋ฐ์ , N-way์์ ๊ตฌํ |
| FIFO | ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ๋ธ๋ก ๊ต์ฒด | ๊ตฌํ ๋จ์ |
| Random | ๋ฌด์์ ๋ธ๋ก ๊ต์ฒด | ๊ตฌํ ๋งค์ฐ ๋จ์, ์์ธก ๋ถ๊ฐ๋ฅ |
| LFU (Least Frequently Used) | ๊ฐ์ฅ ์ ๊ฒ ์ฌ์ฉ๋ ๋ธ๋ก ๊ต์ฒด | ๋น๋ ๊ธฐ๋ฐ, ์นด์ดํฐ ํ์ |
์ฐ๊ธฐ ์ ์ฑ (Write Policy)
| ์ ์ฑ | ์ค๋ช | ์ฅ์ | ๋จ์ |
|---|---|---|---|
| Write-Through | ์บ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์์ ๊ธฐ๋ก | ์ผ๊ด์ฑ ๋ณด์ฅ, ๊ตฌํ ๋จ์ | ๋ฉ๋ชจ๋ฆฌ ์ฐ๊ธฐ ๋ณ๋ชฉ |
| Write-Back | ์บ์์๋ง ๊ธฐ๋ก, ์บ์ ๋ธ๋ก ๊ต์ฒด ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ๋ก | ์ฐ๊ธฐ ์ฑ๋ฅ ํฅ์ | ์ผ๊ด์ฑ ๊ด๋ฆฌ ๋ณต์ก |
| Write-Allocate | ์ฐ๊ธฐ ๋ฏธ์ค ์ ๋ธ๋ก์ ์บ์์ ๋ก๋ ํ ๊ธฐ๋ก | ์ง์ญ์ฑ ํ์ฉ | ์ถ๊ฐ ๋ก๋ ์ค๋ฒํค๋ |
| No-Write-Allocate | ์ฐ๊ธฐ ๋ฏธ์ค ์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ๊ธฐ๋ก | ์ฐ๊ธฐ ๋ณ๋ชฉ ์ต์ํ | ์บ์ ํ์ฉ๋ ๊ฐ์ |
๋ฉํฐ๋ ๋ฒจ ์บ์ ๊ตฌ์ฑ
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| Private cache | ํน์ ์ฝ์ด ์ ์ฉ ์บ์. L1์์ ํํ๋ฉฐ ์ง์ฐ ์๊ฐ์ด ์งง๋ค. |
| Shared cache | ์ฌ๋ฌ ์ฝ์ด๊ฐ ๊ณต์ ํ๋ ์บ์. L3์์ ํํ๋ฉฐ ์ฉ๋ ํจ์จ์ด ๋๋ค. |
| Inclusive | ์์ ๊ณ์ธต์ ๋ธ๋ก์ด ํ์ ๊ณ์ธต์๋ ๋ฐ๋์ ์กด์ฌํ๋ค. |
| Exclusive | ์์ ๊ณ์ธต๊ณผ ํ์ ๊ณ์ธต์ด ๊ฐ์ ๋ธ๋ก์ ์ค๋ณต ์ ์ฅํ์ง ์๋๋ค. |
| NINE | ํฌํจ/๋ฐฐํ ๊ท์น์ ๊ฐ์ ํ์ง ์๋ ๊ตฌ์ฑ์ด๋ค. |
์บ์ ๋ฏธ์ค ์ ํ
| ์ ํ | ์๋ฏธ | ๋ํ ์์ธ |
|---|---|---|
| Compulsory miss | ์ฒ์ ์ ๊ทผํด์ ์๊ธฐ๋ ๋ฏธ์ค | cold start, ์ต์ด ๋ก๋ |
| Capacity miss | ์บ์ ์ฉ๋์ด ์์ ์งํฉ๋ณด๋ค ๋ถ์กฑํ ๋ ๋ฐ์ | working set ๊ณผ๋ค |
| Conflict miss | ๋งคํ ์ถฉ๋๋ก ์๊ธฐ๋ ๋ฏธ์ค | direct-mapped, ๋ฎ์ associativity |
| Coherence miss | ๋ค๋ฅธ ์ฝ์ด์ ๊ฐฑ์ ์ผ๋ก ๋ฌดํจํ๋ ๋ผ์ธ์ ๋ค์ ๋ถ๋ฌ์ฌ ๋ ๋ฐ์ | ๋ฉํฐ์ฝ์ด ๊ณต์ ๋ฐ์ดํฐ |
๋น๊ต/๋ถ์
ํ๊ท ์ ๊ทผ ์๊ฐ (AMAT)
$$AMAT = Hit\ Time + Miss\ Rate \times Miss\ Penalty$$
์บ์ ๊ณ์ธต์ ํํธ ์๊ฐ์ ์ค์ด๋ ๊ฒ๋ง์ผ๋ก ๋๋์ง ์๋๋ค. ์์ ๊ณ์ธต์์์ ๋ฏธ์ค๊ฐ ํ์ ๊ณ์ธต์ผ๋ก ๋ด๋ ค๊ฐ ๋ ํจ๋ํฐ๊ฐ ๊ธ๊ฒฉํ ์ปค์ง๋ฏ๋ก, ํํธ์จ๊ณผ ๋ฏธ์ค ํจํด์ ํจ๊ป ๋ด์ผ ํ๋ค. L1 ๋ฏธ์ค๊ฐ L2 ํํธ๋ก ๋๋๋์ง, L2 ๋ฏธ์ค๊ฐ DRAM๊น์ง ๋ด๋ ค๊ฐ๋์ง์ ๋ฐ๋ผ ์ ์ฒด ์ง์ฐ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ์ฑ๋ฅ ๋น๊ต
| ํญ๋ชฉ | L1 Cache | L2 Cache | L3 Cache | DRAM | SSD | HDD |
|---|---|---|---|---|---|---|
| ์ง์ฐ ์๊ฐ | ~1 ns | ~3-10 ns | ~10-30 ns | ~50-100 ns | ~10-100 ยตs | ~5-10 ms |
| ๋์ญํญ | ~1 TB/s | ~500 GB/s | ~200 GB/s | ~50 GB/s | ~5 GB/s | ~200 MB/s |
| ์ฉ๋ | 32-128 KB | 256 KB-1 MB | 2-64 MB | 4-128 GB | 256 GB-4 TB | 1-20 TB |
| ์ง์ ๋ | ๋ฎ์ | ์ค๊ฐ | ์ค๊ฐ | ๋์ | ๋งค์ฐ ๋์ | ๊ทนํ ๋์ |
| ๋น์ฉ/๋นํธ | ๋งค์ฐ ๋์ | ๋์ | ์ค๊ฐ | ๋ฎ์ | ๋งค์ฐ ๋ฎ์ | ๊ทนํ ๋ฎ์ |
| ํ๋ฐ์ฑ | Yes | Yes | Yes | Yes | No | No |
๋ฉ๋ชจ๋ฆฌ ๊ธฐ์ ๋ฐ์ ์ถ์ธ
| ์๋ | ๊ธฐ์ | ์ฃผ์ ํน์ง |
|---|---|---|
| 1970s | SRAM/DRAM ํ์ | ์ต์ด์ ๋ฐ๋์ฒด ๋ฉ๋ชจ๋ฆฌ |
| 1990s | DDR DRAM | ๋๋ธ ๋ฐ์ดํฐ ๋ ์ดํธ |
| 2000s | Multi-level Cell (MLC) NAND | ์ ๋น 2๋นํธ ์ ์ฅ |
| 2010s | DDR4/DDR5, 3D NAND | ๊ณ ๋์ญํญ, ์์ง ์ ์ธต |
| 2020s | HBM, CXL ๋ฉ๋ชจ๋ฆฌ | ๊ณ ๋์ญํญ, ์ด๊ธฐ์ข ๋ฉ๋ชจ๋ฆฌ |
๋ฉ๋ชจ๋ฆฌ ๋ณ๋ชฉ ๋ฌธ์
ํ๋ก์ธ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ์๋ ์ฐจ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋ณ๋ชฉ(Memory Wall) ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๋ค:
- ํ๋ก์ธ์ ์ฑ๋ฅ: ๋งค๋ ~50% ํฅ์
- ๋ฉ๋ชจ๋ฆฌ ์ฑ๋ฅ: ๋งค๋ ~10% ํฅ์
- ๊ฒฐ๊ณผ: ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ํ๋ก์ธ์ ์ฑ๋ฅ์ ์ ์ฝ ์์๋ก ๋ถ์
ํด๊ฒฐ ๋ฐฉ์:
- ์บ์ ๊ณ์ธต ํ๋: ๋ ํฌ๊ณ ๋น ๋ฅธ ์บ์
- ๋ฉํฐ์ฑ๋ ๋ฉ๋ชจ๋ฆฌ: ๋ณ๋ ฌ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
- ํ๋ฆฌํ์น: ์์ธก ๊ธฐ๋ฐ ์ฌ์ ๋ฐ์ดํฐ ๋ก๋
- ๋ฉ๋ชจ๋ฆฌ ์์ถ: ์ ์ ๊ณต๊ฐ์ ๋ ๋ง์ ๋ฐ์ดํฐ
- ๋น๋๊ธฐ ๋ฉ๋ชจ๋ฆฌ: ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ๊ณผ ์ฐ์ฐ ๋์ ์ํ
๋์ ์๋ฆฌ
์บ์ ๋ผ์ธ (Cache Line)
์บ์๋ ๊ณ ์ ํฌ๊ธฐ ๋ธ๋ก์ธ ์บ์ ๋ผ์ธ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค:
์บ์ ์ฃผ์ = Tag + Index + Offset
- Tag: ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์์ ๋นํธ, ์บ์ ๋ธ๋ก ์๋ณ
- Index: ์บ์ ์ธํธ ์ ํ
- Offset: ์บ์ ๋ผ์ธ ๋ด ๋ฐ์ดํธ ์์น
์ผ๋ฐ์ ์ธ ์บ์ ๋ผ์ธ ํฌ๊ธฐ: 64๋ฐ์ดํธ (ํ๋ ํ๋ก์ธ์)
์บ์ ์ ๊ทผ ๊ณผ์
- Tag ๋น๊ต: ์์ฒญ๋ ์ฃผ์์ Tag์ ์บ์์ Tag๋ฅผ ๋ณ๋ ฌ ๋น๊ต
- Index ์ ํ: ์ฃผ์์ Index ๋นํธ๋ก ์บ์ ์ธํธ ์ ํ
- Valid ๊ฒ์ฌ: Valid ๋นํธ๊ฐ 1์ธ์ง ํ์ธ
- Hit/Miss ํ์ : Tag ์ผ์น + Valid = Hit, ๊ทธ ์ธ = Miss
- ๋ฐ์ดํฐ ๋ฐํ: Hit ์ ์บ์ ๋ผ์ธ์์ Offset ์์น์ ๋ฐ์ดํฐ ๋ฐํ
๋ฉ๋ชจ๋ฆฌ ์ธํฐ๋ฆฌ๋น (Memory Interleaving)
๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ ํฅ์์ํค๊ธฐ ์ํด ์ฌ๋ฌ ๋ฉ๋ชจ๋ฆฌ ๋ฑ ํฌ๋ฅผ ๋ณ๋ ฌ๋ก ์ ๊ทผ:
- ๋นํธ ์ธํฐ๋ฆฌ๋น: ์ธ์ ๋นํธ๊ฐ ๋ค๋ฅธ ๋ฑ ํฌ์ ๋ถ์ฐ
- ์๋ ์ธํฐ๋ฆฌ๋น: ์ธ์ ์๋๊ฐ ๋ค๋ฅธ ๋ฑ ํฌ์ ๋ถ์ฐ
- ๋ฑ ํฌ ์ธํฐ๋ฆฌ๋น: ์ฌ๋ฌ ๋ฑ ํฌ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ
ํ๋ฆฌํ์น (Prefetching)
| ๋ฐฉ์ | ์ค๋ช | ์ฅ์ | ๋จ์ |
|---|---|---|---|
| ํ๋์จ์ด ํ๋ฆฌํ์น | ํ๋ก์ธ์๊ฐ ์๋์ผ๋ก ๋ค์ ๋ธ๋ก ๋ก๋ | ํ๋ก๊ทธ๋๋จธ ๋ถ๋ด ์์ | ์ ํ๋ ์ ํ |
| ์ํํธ์จ์ด ํ๋ฆฌํ์น | ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ช ์์ ๋ช ๋ น ์ฝ์ | ์ ํํ ํ์ด๋ฐ ๊ฐ๋ฅ | ํ๋ก๊ทธ๋๋ฐ ๋ณต์ก๋ ์ฆ๊ฐ |
| Stride ํ๋ฆฌํ์น | ์ผ์ ๊ฐ๊ฒฉ ์ ๊ทผ ํจํด ์์ธก | ๋ฐฐ์ด ์ํ์ ํจ๊ณผ์ | ๋ถ๊ท์น ํจํด์ ์ฝํจ |
| PPB (Prefetch Prefetch Buffer) | ํ๋ฆฌํ์น๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ๋ฒํผ์ ์ ์ง | ํ๋ฆฌํ์น ์คํจ ์์๋ ์ฑ๋ฅ ์ ์ง | ์ถ๊ฐ ํ๋์จ์ด ํ์ |
์ฅ๋จ์
| ์ฅ์ | ๋จ์ |
|---|---|
| ํ๋ก์ธ์-๋ฉ๋ชจ๋ฆฌ ์๋ ์ฐจ์ด ์ํ | ์บ์ ๋ฏธ์ค ์ ์ค๋ฒํค๋ ๋ฐ์ |
| ์์คํ ์ ์ฒด ๋น์ฉ ์ ๊ฐ (์ ์ ๊ณ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ) | ์บ์ ์ผ๊ด์ฑ ๊ด๋ฆฌ ๋ณต์ก |
| ํ๋ก๊ทธ๋๋จธ์๊ฒ ํฌ๋ช ํ ์ฑ๋ฅ ํฅ์ | ์บ์ ํฌ๋ผ์(cache thrashing) ์ํ |
| ๋ค์ํ ์์ฉ์ ์ ์ฐํ ๊ตฌ์ฑ ๊ฐ๋ฅ | ์ปค๋ค๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ์บ์ ํจ์จ ์ ํ |
| ๊ธฐ์กด ์์คํ ๊ณผ์ ํธํ์ฑ ์ ์ง | ๋ฉ๋ชจ๋ฆฌ ๋ถํ ๋ก ์ธํ ๋ด๋ถ ๋จํธํ |
๊ด๋ จ ๊ธฐ์
๊ด๋ จ ๋ฌธ์
- CPU Cache Architecture: ์บ์ ๊ณ์ธต, ์ผ๊ด์ฑ, ํ๋ฆฌํ์น ์ค๊ณ
- Virtual Memory: ํ์ด์ง ํดํธ์ ์ ์ฅ ๊ณ์ธต ํ๊ฐ
- Memory Controller: DRAM ์ ๊ทผ ์ค์ผ์ค๋ง ๋ฐ ๋์ญํญ ๊ด๋ฆฌ
- ECC Error Correction: ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ ์ ์ ๊ณผ ์ ๋ขฐ์ฑ
- NVMe Architecture: SSD ๊ณ์ธต์ ๊ณ ์ ์ธํฐํ์ด์ค
- DDR Generation Comparison: DRAM ์ธ๋๋ณ ๊ตฌ์กฐ์ ๋์ญํญ ๋ณํ
- HBM Generation Comparison: ๊ณ ๋์ญํญ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๋น๊ต
์ฐธ๊ณ ์๋ฃ
- Hennessy & Patterson, Computer Architecture: A Quantitative Approach
- Agner Fog, The microarchitecture of Intel and AMD CPUs
- Wikipedia: Memory hierarchy, Cache hierarchy, Cache replacement policies
ํต์ฌ ์ ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ํ๋ก์ธ์์ ์ ์ฅ ์ฅ์น ์ฌ์ด์ ์๋ ์ฐจ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ์๋์ ์ฉ๋์ด ๋ค๋ฅธ ์ ์ฅ ๊ณ์ธต์ ๊ตฌ์กฐํํ ๊ฒ์ด๋ค. SRAM ์บ์(1-30 ns), DRAM ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(50-100 ns), SSD(10-100 ยตs), HDD(5-10 ms) ์์ผ๋ก ์๋๊ฐ ๊ฐ์ํ๊ณ ์ฉ๋๊ณผ ๋น์ฉ ํจ์จ์ด ํฅ์๋๋ค. Locality ์๋ฆฌ(์๊ฐ์ ยท๊ณต๊ฐ์ )๋ ์บ์์ ํจ์จ์ฑ์ ๊ธฐ์ฌํ๋ฉฐ, ์บ์ ๋งคํ ๋ฐฉ์(Direct, Fully Associative, Set Associative)๊ณผ ๊ต์ฒด ์ ์ฑ (LRU, FIFO, Random)์ ์บ์ ์ฑ๋ฅ์ ๊ฒฐ์ ํ๋ ํต์ฌ ์์์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ณ๋ชฉ(Memory Wall) ๋ฌธ์ ๋ ํ๋ก์ธ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋น๋์นญ์ ์ฑ์ฅ์ผ๋ก ์ธํด ์ง์์ ์ผ๋ก ์ ํ๋๊ณ ์์ผ๋ฉฐ, ์บ์ ๊ณ์ธต ํ๋, ํ๋ฆฌํ์น, ๋ฉ๋ชจ๋ฆฌ ์์ถ ๋ฑ์ ๊ธฐ์ ๋ก ๋์ํ๊ณ ์๋ค.