๐Ÿ–ฅ๏ธ System

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ํด๋Ÿญ์ด๋‹ค. ๋ฉ€ํ‹ฐ์ฝ”์–ด ๊ฐ„ ์บ์‹œ ์ผ๊ด€์„ฑ ํ”„๋กœํ† ์ฝœ์ด ์ด ๊ณ„์ธต์—์„œ ์ž‘๋™ํ•œ๋‹ค.
CPU Cache Hierarchy

์บ์‹œ ์กฐ์ง ๋ฐฉ์‹ (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 ๋“ฑ)์—๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.
Cache Associativity

์ฃผ์†Œ ๋ณ€ํ™˜ (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 ํ”„๋กœํ† ์ฝœ์€ ์ด๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค:

MESI Protocol
  • 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% ๊ฐœ์„ ์ด ์ „์ฒด ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์ตœ๊ทผ์—๋Š” ๋ณด์•ˆ ๊ด€์ ์—์„œ ์บ์‹œ ๊ธฐ๋ฐ˜ ์‚ฌ์ด๋“œ ์ฑ„๋„ ๊ณต๊ฒฉ์ด ๋ถ€๊ฐ๋˜๋ฉด์„œ, ์บ์‹œ ํŒŒํ‹ฐ์…”๋‹ ๋ฐ ํƒ€์ด๋ฐ ๋ถˆ๋ณ€ ๊ธฐ๋ฒ•์ด ์—ฐ๊ตฌ๋˜๊ณ  ์žˆ๋‹ค.