โšก Circuit

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) ์›๋ฆฌ์— ๊ธฐ๋ฐ˜ํ•œ๋‹ค:

Locality Principle

๊ทธ๋ฆผ 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)

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋™์ž‘ ์›๋ฆฌ

์บ์‹œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ, ์ž‘์€ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋ณธ์„ ์œ ์ง€ํ•œ๋‹ค:

Cache Operation

๊ทธ๋ฆผ 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๋ฐ”์ดํŠธ (ํ˜„๋Œ€ ํ”„๋กœ์„ธ์„œ)

์บ์‹œ ์ ‘๊ทผ ๊ณผ์ •

  1. Tag ๋น„๊ต: ์š”์ฒญ๋œ ์ฃผ์†Œ์˜ Tag์™€ ์บ์‹œ์˜ Tag๋ฅผ ๋ณ‘๋ ฌ ๋น„๊ต
  2. Index ์„ ํƒ: ์ฃผ์†Œ์˜ Index ๋น„ํŠธ๋กœ ์บ์‹œ ์„ธํŠธ ์„ ํƒ
  3. Valid ๊ฒ€์‚ฌ: Valid ๋น„ํŠธ๊ฐ€ 1์ธ์ง€ ํ™•์ธ
  4. Hit/Miss ํŒ์ •: Tag ์ผ์น˜ + Valid = Hit, ๊ทธ ์™ธ = Miss
  5. ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜: 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) ๋ฌธ์ œ๋Š” ํ”„๋กœ์„ธ์„œ์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋น„๋Œ€์นญ์  ์„ฑ์žฅ์œผ๋กœ ์ธํ•ด ์ง€์†์ ์œผ๋กœ ์•…ํ™”๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์บ์‹œ ๊ณ„์ธต ํ™•๋Œ€, ํ”„๋ฆฌํŽ˜์น˜, ๋ฉ”๋ชจ๋ฆฌ ์••์ถ• ๋“ฑ์˜ ๊ธฐ์ˆ ๋กœ ๋Œ€์‘ํ•˜๊ณ  ์žˆ๋‹ค.