CPU Cache Architecture
๊ฐ์
CPU Cache Architecture๋ ํ๋ก์ธ์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(DRAM) ์ฌ์ด์ ์๋ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๊ธฐ ์ํ ํต์ฌ ํ๋์จ์ด ๋ฉ์ปค๋์ฆ์ด๋ค. ํ๋ CPU๋ ์ GHz ํด๋ญ์ผ๋ก ๋์ํ๋ ๋ฐ๋ฉด DRAM์ ์๋ฐฑ ์ฌ์ดํด์ ์ง์ฐ(latency)์ ๊ฐ์ง๋ฏ๋ก, ๋ ์ง์คํฐ์ DRAM ์ฌ์ด์ ๋ค์ธต ์บ์ ๊ณ์ธต(hierarchy)์ ๋ฐฐ์นํ์ฌ ํ๊ท ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ ์ต์ํํ๋ค.
์บ์ ์ํคํ ์ฒ์ ์ค๊ณ ๊ฒฐ์ ์ ํ๋ก์ธ์ ์ฑ๋ฅ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ฉฐ, ๋ฉํฐ์ฝ์ด ์์คํ ์์๋ ์บ์ ์ผ๊ด์ฑ(coherence) ๋ฌธ์ ๊น์ง ํด๊ฒฐํด์ผ ํ๋ค. ๋ฐ๋ผ์ CPU ์บ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ปดํจํฐ ์ํคํ ์ฒ ํ์ต์ ๊ธฐ์ด์ด์, ์ค๋ฆฌ์ฝ ์์ค์ ์ฑ๋ฅ ์ต์ ํ์ ํ์์ ์ธ ์ง์์ด๋ค.
ํต์ฌ ๊ฐ๋
์บ์ ๊ณ์ธต ๊ตฌ์กฐ (Cache Hierarchy)
ํ๋ ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์๋ ์ผ๋ฐ์ ์ผ๋ก 3๋จ๊ณ์ ์บ์ ๊ณ์ธต์ ์ฌ์ฉํ๋ค:
- L1 Cache (1์ฐจ ์บ์): CPU ์ฝ์ด์ ๊ฐ์ฅ ๊ฐ๊น์ด ์บ์. ๋ช ๋ น์ด/Instruction(L1I)๊ณผ ๋ฐ์ดํฐ(L1D)๋ก ๋ถ๋ฆฌ๋ ๊ตฌ์กฐ(ํ๋ฒ์คํธ ์ํคํ ์ฒ)๊ฐ ์ผ๋ฐ์ ์ด๋ค. ํฌ๊ธฐ๋ 32~64KB, ์ ๊ทผ ์ง์ฐ์ 3~5ํด๋ญ ์ฌ์ดํด์ด๋ค.
- L2 Cache (2์ฐจ ์บ์): ๊ฐ ์ฝ์ด์ ์ ์ฉ์ผ๋ก ๋ฐฐ์น๋๋ฉฐ, L1 miss ์ ์ ๊ทผ๋๋ค. ํฌ๊ธฐ๋ 256KB~1MB, ์ง์ฐ์ 10~20ํด๋ญ์ด๋ค. unified ๊ตฌ์กฐ(๋ช ๋ น์ด+๋ฐ์ดํฐ ํผ์ฉ)๊ฐ ์ผ๋ฐ์ ์ด๋ค.
- L3 Cache (3์ฐจ ์บ์ / LLC): ๋ชจ๋ ์ฝ์ด๊ฐ ๊ณต์ ํ๋ ๋ง์ง๋ง ์บ์ ๊ณ์ธต์ด๋ค. ํฌ๊ธฐ๋ ์MB~์์ญMB, ์ง์ฐ์ 30~50ํด๋ญ์ด๋ค. ๋ฉํฐ์ฝ์ด ๊ฐ ์บ์ ์ผ๊ด์ฑ ํ๋กํ ์ฝ์ด ์ด ๊ณ์ธต์์ ์๋ํ๋ค.
์บ์ ์กฐ์ง ๋ฐฉ์ (Associativity)
์บ์ ๋ธ๋ก์ด ์ด๋ค ์์น์ ์ ์ฅ๋ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์์ผ๋ก, ์ฑ๋ฅ๊ณผ ํ๋์จ์ด ๋ณต์ก๋์ ํธ๋ ์ด๋์คํ๋ฅผ ๊ฒฐ์ ํ๋ค.
- Direct-Mapped (1-way): ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์บ์์ ์ ํํ ํ ์์น์๋ง ๋งคํ๋๋ค.
index = address % num_sets. ํ๋์จ์ด๊ฐ ๊ฐ์ฅ ๋จ์ํ์ง๋ง, ์ถฉ๋ miss(conflict miss)๊ฐ ์ฆ๋ค. - Set-Associative (N-way): ๊ฐ ์ธํธ(set)์ N๊ฐ์ ๋ธ๋ก์ด ์ ์ฅ๋๋ค. ์ ๊ทผ ์ N๊ฐ ๋ธ๋ก์ ๋ณ๋ ฌ๋ก ๋น๊ตํ์ฌ hit ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ค. ์ผ๋ฐ์ ์ผ๋ก L1์ 8-way, L3๋ 16-way๊ฐ ์ฌ์ฉ๋๋ค.
- Fully Associative: ์บ์์ ๋ชจ๋ ๋ธ๋ก์ ์ด๋ค ์ฃผ์๋ ์ ์ฅ ๊ฐ๋ฅํ๋ค. ์ถฉ๋ miss๊ฐ ์์ง๋ง, N๊ฐ ๋น๊ต๊ธฐ(comparator)๊ฐ ํ์ํ๋ฏ๋ก ์ํ ์บ์(TLB ๋ฑ)์๋ง ์ฌ์ฉ๋๋ค.
์ฃผ์ ๋ณํ (Address Translation)
๋ฌผ๋ฆฌ ์ฃผ์(Physical Address)๋ ์บ์ ์ ๊ทผ ์ ๋ค์๊ณผ ๊ฐ์ด ๋ถํ ๋๋ค:
| ๋นํธ ํ๋ | ์ญํ | ์ค๋ช |
|---|---|---|
| Tag | ๋ธ๋ก ์๋ณ | ํด๋น ์ธํธ ๋ด์์ ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ธ์ง ํ๋ณ |
| Index | ์ธํธ ์ ํ | ์บ์์ ์ด๋ ์ธํธ์ ์ ๊ทผํ ์ง ๊ฒฐ์ (Direct-mapped: ์ ์ฒด ์บ์ ๋ผ์ธ ์, Set-assoc: ์ธํธ ์) |
| Offset | ๋ฐ์ดํธ ์์น | ๋ธ๋ก ๋ด์์ ํน์ ๋ฐ์ดํธ๋ฅผ ์ ํ (๋ธ๋ก ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ฒฐ์ ) |
์: 64KB L1D ์บ์, 64B ๋ธ๋ก, 8-way set-associative์ธ ๊ฒฝ์ฐ:
- Index = logโ(64KB / (8 ร 64B)) = logโ(128) = 7๋นํธ
- Offset = logโ(64) = 6๋นํธ
- Tag = ๋๋จธ์ง ๋นํธ
์บ์ ๋ผ์ธ๊ณผ ํฌํจ ์ ์ฑ (Cache Line & Inclusion Policy)
์บ์๋ ๋ณดํต ๊ณ ์ ํฌ๊ธฐ์ cache line ๋๋ block ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ๋ค. 64B ๋ผ์ธ์ ๊ณต๊ฐ ์ง์ญ์ฑ์ ์ ์ด๋ฆด ์ ์์ด ์ผ๋ฐ์ ์ธ ์ ํ์ด๋ฉฐ, ์ฃผ์์ Offset ๋นํธ ์์๋ ์ง์ ์ฐ๊ฒฐ๋๋ค.
๋ค์ค ๊ณ์ธต ์บ์์์๋ ์์ ์บ์์ ํ์ ์บ์์ ํฌํจ ๊ด๊ณ๊ฐ ์ค์ํ๋ค.
| ์ ์ฑ | ์ค๋ช | ์๋ฏธ |
|---|---|---|
| Inclusive | ์์ ์บ์์ ๋ผ์ธ์ด ํ์ ์บ์์ ๋ฐ๋์ ํฌํจ๋จ | ๋ฌดํจํ ์ ํ๊ฐ ์ฝ์ง๋ง ์ค๋ณต ์ ์ฅ์ด ์๊ธด๋ค |
| Exclusive | ๊ฐ์ ๋ผ์ธ์ด ์์/ํ์ ์บ์์ ์ค๋ณต ์ ์ฅ๋์ง ์์ | ์ฉ๋ ํจ์จ์ด ์ข์ง๋ง ์ด๋ ๊ด๋ฆฌ๊ฐ ๋ณต์กํ๋ค |
| Non-inclusive / Non-exclusive | ํฌํจ ๊ด๊ณ๋ฅผ ๊ฐ์ ํ์ง ์์ | ์ค๊ณ ์์ ๋๊ฐ ๋๊ณ ๊ตฌํ์ ๋ฐ๋ผ ์ ์ถฉ์ด ๋ฌ๋ผ์ง๋ค |
๋ํ LLC๋ ์ ํ๊ณผ ์ธ๋์ ๋ฐ๋ผ inclusive, exclusive, non-inclusive ์ค ํ๋๋ฅผ ์ ํํ๊ฑฐ๋ ํผํฉ ์ ์ฑ ์ ์ฌ์ฉํ๋ค. ์ด ์ ํ์ eviction ๋์, coherence ํธ๋ํฝ, ์คํจ ์ฉ๋์ ์ง์ ์ํฅ์ ์ค๋ค.
๊ต์ฒด ์ ์ฑ (Replacement Policy)
์บ์๊ฐ ๊ฐ๋ ์ฐผ์ ๋ ์ด๋ค ๋ธ๋ก์ ๊ต์ฒดํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค:
- LRU (Least Recently Used): ๊ฐ์ฅ ์ค๋์ ์ ์ ๊ทผ๋ ๋ธ๋ก์ ๊ต์ฒดํ๋ค. ์ผ๋ฐ์ ์ด๋ N-way์์ O(N) ํ๋์จ์ด ๋น์ฉ์ด ๋ ๋ค.
- Pseudo-LRU (Tree-PLRU): ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ทผ์ฌ LRU. ๋น์ฉ์ ์ค์ด๋ฉด์ ์ค์ง์ ์ผ๋ก LRU์ ๊ฐ๊น์ด ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
- Random: ์์๋ก ๋ธ๋ก์ ์ ํํ๋ค. ๊ตฌํ์ด ๊ฐ๋จํ๊ณ , ์ถฉ๋ ๊ณต๊ฒฉ์ ๊ฐํ๋ค. MIPS, AMD์์ ์ฌ์ฉ.
- FIFO: ๋จผ์ ๋ค์ด์จ ๋ธ๋ก๋ถํฐ ๊ต์ฒดํ๋ค.
๊ธฐ์ ์ ์ฑ (Write Policy)
๋ฐ์ดํฐ ์์ ์ ์บ์์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ ๋๊ธฐํ ๋ฐฉ์:
- Write-Through: ๋ชจ๋ ๊ธฐ์ ์ด ์บ์์ ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋์์ ๋ฐ์๋๋ค. ์ผ๊ด์ฑ์ ์ข์ง๋ง, ๋ชจ๋ ๊ธฐ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ํ์ํ์ฌ ๋๋ฆฌ๋ค.
- Write-Back: ์บ์์์๋ง ๊ธฐ์ ํ๊ณ , ํด๋น ๋ธ๋ก์ด ๊ต์ฒด๋ ๋๋ง ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์(dirty bit ์ฌ์ฉ). ์ฑ๋ฅ์ด ์ฐ์ํ์ง๋ง ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ค. ํ๋ CPU์ ํ์ค ๋ฐฉ์.
- Write-Allocate: Write miss ์ ํด๋น ๋ธ๋ก์ ์บ์์ ๋ก๋ํ ํ ๊ธฐ์ ํ๋ค (Write-back๊ณผ ํจ๊ป ์ฌ์ฉ).
- No-Write-Allocate: Write miss ์ ์บ์์ ๋ก๋ํ์ง ์๊ณ ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ์ ํ๋ค (Write-through์ ํจ๊ป ์ฌ์ฉ).
AMAT (Average Memory Access Time)
์บ์ ์ฑ๋ฅ์ ์ข ํฉ์ ์ผ๋ก ํ๊ฐํ๋ ์งํ:
AMAT = Hit Time + (Miss Rate ร Miss Penalty)
- Hit Time: ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ์๊ฐ (L1: ~1ns, L2: ~3ns, L3: ~10ns)
- Miss Rate: ์ ๊ทผ ๋๋น miss ๋น์จ (L1: 2~5%, L2: 10~20%, L3: 5~10%)
- Miss Penalty: miss ์ ์ถ๊ฐ ์์ ์๊ฐ (๋ค์ ๊ณ์ธต๊น์ง์ ์ ๊ทผ ๋น์ฉ)
๋ค์ธต ์บ์์ ๊ฒฝ์ฐ ์ค์ฒฉ์ผ๋ก ๊ณ์ฐ๋๋ค:
AMAT = L1_hit + L1_miss ร (L2_hit + L2_miss ร (L3_hit + L3_miss ร DRAM_access))
๋น๊ต/๋ถ์
์บ์ ๊ต์ฒด ์ ์ฑ ๋น๊ต
| ์ ์ฑ | ๊ตฌํ ๋ณต์ก๋ | ์ ํ๋ | ํ๋์จ์ด ๋น์ฉ | ์ฌ์ฉ์ฒ |
|---|---|---|---|---|
| LRU | ๋์ | ๋์ | O(N) | ์ํ ์บ์ |
| Pseudo-LRU | ์ค๊ฐ | ์ค๊ฐ | O(log N) | L1/L2 ์บ์ |
| Random | ๋ฎ์ | ์ค๊ฐ | O(1) | ๋ํ ์บ์ |
| FIFO | ๋ฎ์ | ๋ฎ์ | O(1) | ํน์ ์์คํ |
| RRIP (Re-Reference Interval Prediction) | ์ค๊ฐ | ๋์ | ์ค๊ฐ | LLC (Intel) |
๊ธฐ์ ์ ์ฑ ๋น๊ต
| ์ ์ฑ | ์ฐ๊ธฐ ์ง์ฐ | ๋์ญํญ ์ฌ์ฉ | ์ผ๊ด์ฑ | ๋ณต์ก๋ |
|---|---|---|---|---|
| Write-Through | ๋ฎ์ (์ฆ์ ๋ฐ์) | ๋์ (๋ชจ๋ ๊ธฐ์ ์ด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ) | ๋์ | ๋ฎ์ |
| Write-Back | ๋์ (๊ต์ฒด ์ ๋ฐ์) | ๋ฎ์ (๋ธ๋ก ๋จ์๋ก ๋ฐ์) | ์ค๊ฐ | ๋์ |
| Write-Allocate | ์ค๊ฐ | ์ค๊ฐ | ์ค๊ฐ | ์ค๊ฐ |
ํ๋ ํ๋ก์ธ์ ์บ์ ์ฌ์ ๋น๊ต (2024 ๊ธฐ์ค)
| ํ๋ก์ธ์ | L1I | L1D | L2 | L3 | ์บ์ ์ผ๊ด์ฑ |
|---|---|---|---|---|---|
| Intel Raptor Lake | 32KB ร 8-way | 48KB ร 12-way | 2MB ร 16-way | 36MB ร 12-way (๊ณต์ ) | MESIF |
| AMD Zen 4 | 32KB ร 8-way | 32KB ร 8-way | 1MB ร 8-way | 32MB ร 16-way (CCD ๋ด) | MOESI |
| Apple M3 | 192KB ร 8-way | 128KB ร 8-way | 16MB ร 12-way | 40MB (๊ณต์ ) | MESI+ |
| ARM Cortex-A720 | 64KB ร 4-way | 64KB ร 4-way | 256KB ร 8-way | 4~12MB (๊ณต์ ) | MOESI |
๋์ ์๋ฆฌ
1๋จ๊ณ: ์ฃผ์ ๋์ฝ๋ฉ ๋ฐ ์ ๊ทผ
CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์์ฒญํ๋ฉด:
1. Physical Address ์์ฑ: TLB๋ฅผ ํตํด ๊ฐ์ ์ฃผ์โ๋ฌผ๋ฆฌ ์ฃผ์ ๋ณํ
2. Index ์ถ์ถ: ๋ฌผ๋ฆฌ ์ฃผ์์์ Index ํ๋๋ฅผ ์ถ์ถํ์ฌ ์บ์ ์ธํธ๋ฅผ ์ ํ
3. ๋ณ๋ ฌ ํ๊ทธ ๋น๊ต: ์ ํ๋ ์ธํธ์ ๋ชจ๋ Way์ ๋ํด Tag๋ฅผ ๋ณ๋ ฌ ๋น๊ต
4. Hit/Miss ํ์ : ์ด๋ค Way์์ hitํ๋์ง, ์์ผ๋ฉด miss์ธ์ง ํ๋ณ
2๋จ๊ณ: Hit ์ฒ๋ฆฌ
Hit๊ฐ ๋ฐ์ํ๋ฉด:
1. ํด๋น Way์์ ๋ฐ์ดํฐ ๋ธ๋ก์ Offset ์์น๋ก ์ ๊ทผ
2. ์์ฒญ๋ ๋ฐ์ดํฐ๋ฅผ CPU์ ์ ๋ฌ
3. ๊ต์ฒด ์ ์ฑ
์ ๋ฐ๋ผ ์ ๊ทผ ์์ ์ ๋ณด ๊ฐฑ์ (LRU ๋ฑ)
4. Write Hit: Write-back์ด๋ฉด dirty bit ์ค์ , Write-through์ด๋ฉด ๋ฉ๋ชจ๋ฆฌ์๋ ๊ธฐ์
3๋จ๊ณ: Miss ์ฒ๋ฆฌ
Miss๊ฐ ๋ฐ์ํ๋ฉด:
1. L1 Miss โ L2 ์ ๊ทผ: L2์์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ํ์
2. L2 Miss โ L3 ์ ๊ทผ: L3์์ ํ์ (coherence check)
3. L3 Miss โ DRAM ์ ๊ทผ: ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๋ฅผ ํตํด ๋ธ๋ก ๋ก๋
4. ๊ต์ฒด: ํด๋น ์ธํธ์์ ๊ต์ฒดํ ๋ธ๋ก ์ ํ (LRU ๋ฑ)
5. Write-Back: ๊ต์ฒด ๋์์ด dirty์ด๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์
4๋จ๊ณ: ์บ์ ์ผ๊ด์ฑ (Cache Coherence)
๋ฉํฐ์ฝ์ด ํ๊ฒฝ์์ ๊ฐ ์ฝ์ด์ L1 ์บ์์ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ค๋ฅธ ๋ณต์ฌ๋ณธ์ด ์กด์ฌํ ์ ์๋ค. MESI ํ๋กํ ์ฝ์ ์ด๋ฅผ ํด๊ฒฐํ๋ค:
- Modified (M): ํด๋น ์บ์ ๋ผ์ธ๋ง ์์ ๋จ(dirty). ๋ค๋ฅธ ์บ์์๋ ์์. ๋ค๋ฅธ ์ฝ์ด๊ฐ ์ฝ์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ฐ๊ณ Shared๋ก ์ ์ด.
- Exclusive (E): ํด๋น ์บ์ ๋ผ์ธ๋ง ์กด์ฌ, ์์ ์ ๋จ(clean). ๊ฐ์ ์ฝ์ด๊ฐ ์ฐ๋ฉด Modified๋ก ์ ์ด.
- Shared (S): ์ฌ๋ฌ ์บ์์ ๋์ผํ ๋ธ๋ก์ด ์กด์ฌ. ์ฝ๊ธฐ๋ง ๊ฐ๋ฅ.
- Invalid (I): ์ ํจํ์ง ์์ ๋ธ๋ก.
snooping ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ ๋ชจ๋ ์บ์๊ฐ ๋ฒ์ค๋ฅผ ๊ฐ์(snoop)ํ์ฌ ๋ค๋ฅธ ์ฝ์ด์ ์ ๊ทผ์ ๊ฐ์งํ๊ณ , ํ์ ์ ์ํ๋ฅผ ์ ์ดํ๋ค. ๋ํ ์บ์์์๋ Directory ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋๋ค.
5๋จ๊ณ: Pre-fetching ๋ฐ ์ต์ ํ
์บ์ miss๋ฅผ ์ค์ด๊ธฐ ์ํ ๊ธฐ๋ฒ๋ค:
- HW Pre-fetcher: ์ ๊ทผ ํจํด์ ๋ถ์ํ์ฌ ์์ง ์์ฒญ๋์ง ์์ ๋ธ๋ก์ ๋ฏธ๋ฆฌ ๋ก๋
- Software Pre-fetch: ์ปดํ์ผ๋ฌ๊ฐ __builtin_prefetch ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ก๋ ์ง์
- Loop Streaming Detector (LSD): ๋ฐ๋ณต ์ ๊ทผ ํจํด์ ๊ฐ์งํ์ฌ ์ ์์ ๋ธ๋ก ๋ก๋
- Victim Cache: ๊ต์ฒด๋ ๋ธ๋ก์ ์์ ASSOCIATIVE ์บ์์ ์ ์ฅํ์ฌ ์ฌ์ ๊ทผ ์ ๋น ๋ฅด๊ฒ ๋ณต์
์ฅ๋จ์
| ์ฅ์ | ๋จ์ |
|---|---|
| DRAM ๋๋น ์์ญ~์๋ฐฑ๋ฐฐ ๋น ๋ฅธ ์ ๊ทผ ์๋ | ์นฉ ๋ฉด์ ์ ์๋น ๋ถ๋ถ์ ์ฐจ์ง (30~50%) |
| ๋ฉํฐ๋ ๋ฒจ ๊ตฌ์กฐ๋ก ํ๊ท ์ง์ฐ ์ต์ํ | ์บ์ ์ผ๊ด์ฑ ํ๋กํ ์ฝ์ ๋ณต์ก๋ |
| ๋ฉํฐ์ฝ์ด์์ ๋ฐ์ดํฐ ๊ณต์ ํจ์จํ | ์บ์ ํฌ๊ธฐ ์ฆ๊ฐ โ ์ง์ฐ ์ฆ๊ฐ (diminishing returns) |
| Pre-fetching์ผ๋ก ํจํด ๊ธฐ๋ฐ ์ต์ ํ ๊ฐ๋ฅ | Side-channel ๊ณต๊ฒฉ ๋ฒกํฐ (Spectre ๋ฑ) |
| ํ๋ก๊ทธ๋จ ์ฑ๋ฅ์ ๊ทน์ ์ธ ์ํฅ (hit/miss ์ฐจ์ด) | ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ 2~3๋ฐฐ ์ค๋ฒํค๋ (tag + metadata) |
๊ด๋ จ ๊ธฐ์
- Hennessy & Patterson: Computer Architecture: A Quantitative Approach - CPU ์บ์ ์ด๋ก ์ ๊ต๊ณผ์
- Intel 64 and IA-32 Architectures Software Developer's Manual: ์บ์ ๋ฌดํจํ, ๋ฉ๋ชจ๋ฆฌ ์์, TLB, ๋ฉํฐํ๋ก์ธ์ ๋์์ ๊ธฐ์ค ๋ฌธ์
- AMD MESI/MOESI ํ๋กํ ์ฝ: AMD64 ์ํคํ ์ฒ์์ ์บ์ ์ผ๊ด์ฑ ๊ตฌํ
- Intel MESIF ํ๋กํ ์ฝ: Intel ํ๋ก์ธ์์ F(Forward) ์ํ ์ถ๊ฐ๋ก ์ฝ๊ธฐ ํธ๋ํฝ ๊ฐ์
- Spectre/Meltdown (2018): ์บ์ ํ์ด๋ฐ ๊ธฐ๋ฐ ์ฌ์ด๋ ์ฑ๋ ๊ณต๊ฒฉ - ์บ์ ๋ณด์ ๋ฌธ์ ๋ถ๊ฐ
- ChampSim: ์บ์ ์๋ฎฌ๋ ์ดํฐ (์ฐ๊ตฌ์ฉ trace-driven simulation)
- gem5: ์ํคํ ์ฒ ์๋ฎฌ๋ ์ดํฐ์์ ์์ธํ ์บ์ ๋ชจ๋ธ๋ง ์ง์
ํต์ฌ ์ ๋ฆฌ
CPU Cache Architecture๋ ํ๋ก์ธ์ ์ฑ๋ฅ์ ํต์ฌ์ผ๋ก, L1/L2/L3์ผ๋ก ๊ตฌ๋ถ๋๋ ๋ค์ธต ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํตํด DRAM๊ณผ์ ์๋ ๊ฒฉ์ฐจ๋ฅผ ๊ทน๋ณตํ๋ค. Set-associativity๋ ์ถฉ๋ miss์ ํ๋์จ์ด ๋ณต์ก๋ ์ฌ์ด์ ํธ๋ ์ด๋์คํ๋ฅผ ๊ฒฐ์ ํ๋ฉฐ, MESI/MOESI ํ๋กํ ์ฝ์ ๋ฉํฐ์ฝ์ด ํ๊ฒฝ์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ค. Write-back + Pseudo-LRU ์กฐํฉ์ ํ๋ ํ๋ก์ธ์์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์บ์ ์ ๋ต์ด๋ค. ์บ์ ์ฑ๋ฅ์ AMAT ๊ณต์์ผ๋ก ํ๊ฐ๋๋ฉฐ, L1 miss rate 1% ๊ฐ์ ์ด ์ ์ฒด ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ค. ์ต๊ทผ์๋ ๋ณด์ ๊ด์ ์์ ์บ์ ๊ธฐ๋ฐ ์ฌ์ด๋ ์ฑ๋ ๊ณต๊ฒฉ์ด ๋ถ๊ฐ๋๋ฉด์, ์บ์ ํํฐ์ ๋ ๋ฐ ํ์ด๋ฐ ๋ถ๋ณ ๊ธฐ๋ฒ์ด ์ฐ๊ตฌ๋๊ณ ์๋ค.