๐Ÿ–ฅ๏ธ System

Memory Controller

๊ฐœ์š”

Memory Controller๋Š” CPU์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(DRAM) ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ๋””์ง€ํ„ธ ํšŒ๋กœ์ด๋‹ค. DRAM์€ ์ฃผ๊ธฐ์ ์ธ ๋ฆฌํ”„๋ ˆ์‹œ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ๋ณต์žกํ•œ ํƒ€์ด๋ฐ ์ œ์•ฝ(tRCD, tCAS, tRP ๋“ฑ)์„ ๊ฐ€์ง€๋ฏ€๋กœ CPU๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. Memory Controller๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ bank/row/column์œผ๋กœ ํ•ด์„ํ•˜๊ณ  ๋ช…๋ น ์ƒ์„ฑ๊ณผ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹นํ•˜์—ฌ, CPU์—๋Š” ๋‹จ์ˆœํ•œ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

ํ˜„๋Œ€ ์‹œ์Šคํ…œ์—์„œ Memory Controller์˜ ์„ค๊ณ„๋Š” ์‹œ์Šคํ…œ ์ง€์—ฐ ์‹œ๊ฐ„, ๋Œ€์—ญํญ, ์ „๋ ฅ ์†Œ๋น„์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. Intel์€ 2008๋…„ Nehalem๋ถ€ํ„ฐ, AMD๋Š” 2003๋…„ K8๋ถ€ํ„ฐ Memory Controller๋ฅผ CPU ๋‹ค์ด ๋‚ด๋ถ€์— ํ†ตํ•ฉ(Integrated Memory Controller, IMC)ํ•˜์˜€์œผ๋ฉฐ, ์ด๋Š” ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ๋Œ€์—ญํญ์„ ํฌ๊ฒŒ ๊ฐœ์„ ํ–ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

Memory Controller ์•„ํ‚คํ…์ฒ˜

Memory Controller Architecture

Memory Controller๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค:

์ปดํฌ๋„ŒํŠธ ๊ธฐ๋Šฅ
Request Scheduler ๋Œ€๊ธฐ ์ค‘์ธ ์š”์ฒญ์„ ๋ฒ„ํผ๋งํ•˜๊ณ  ์ตœ์ ์˜ ์ˆœ์„œ๋กœ ์žฌ์ •๋ ฌ
Refresh Controller ์˜จ๋„์™€ ์„ธ๋Œ€ ์กฐ๊ฑด์— ๋งž์ถฐ ๋ฆฌํ”„๋ ˆ์‹œ ๋ช…๋ น์„ ์Šค์ผ€์ค„๋ง
Row Buffer Manager ์—ด ๋ฒ„ํผ(Sense Amplifiers)์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌ
ECC Engine ์˜ค๋ฅ˜ ์ •์ • ์ฝ”๋“œ ์ƒ์„ฑ/๊ฒ€์ฆ (SECDED)
Command/Address Decoder CPU ์š”์ฒญ์„ DRAM ๋ช…๋ น(ACT, RD, WR, PRE)์œผ๋กœ ๋ณ€ํ™˜
Data Path / PHY CPU์™€ DRAM ์‚ฌ์ด์˜ ๋ฌผ๋ฆฌ์  ์‹ ํ˜ธ ์ธํ„ฐํŽ˜์ด์Šค
Power Management Unit Self-refresh, CKE, ์ „์••/์ฃผํŒŒ์ˆ˜ ๊ด€๋ฆฌ

DRAM ํƒ€์ด๋ฐ ํŒŒ๋ผ๋ฏธํ„ฐ

DRAM Access Sequence

Memory Controller๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ํƒ€์ด๋ฐ ํŒŒ๋ผ๋ฏธํ„ฐ:

ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช… ๋น„๊ณ 
tCAS (CL) READ ํ›„ ์ฒซ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ค๊ธฐ๊นŒ์ง€์˜ ์ง€์—ฐ ๋ชจ๋“ˆ ํ”„๋กœํŒŒ์ผ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง
tRCD ACT ํ›„ RD/WR ๊ฐ€๋Šฅ๊นŒ์ง€์˜ ์ง€์—ฐ ๋ชจ๋“ˆ ํ”„๋กœํŒŒ์ผ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง
tRP PRE ํ›„ ์ƒˆ ํ–‰ ํ™œ์„ฑํ™”๊นŒ์ง€์˜ ์ง€์—ฐ ๋ชจ๋“ˆ ํ”„๋กœํŒŒ์ผ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง
tRC ๊ฐ™์€ ํ–‰์„ ๋‹ค์‹œ ์—ด๊ธฐ๊นŒ์ง€์˜ ์ „์ฒด ์ฃผ๊ธฐ ์ผ๋ฐ˜์ ์œผ๋กœ tRAS + tRP
tRAS ํ–‰์„ ์ตœ์†Œ๋กœ ์—ด์–ด ๋‘์–ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ„ tRC๋ฅผ ์ด๋ฃจ๋Š” ํ•ต์‹ฌ ์ œ์•ฝ
tREFI ํ‰๊ท  refresh ๊ฐ„๊ฒฉ DDR5๋Š” 85ยฐC ์ดํ•˜ 32ms, 85~95ยฐC 16ms
tRFC refresh ๋ช…๋ น ์ˆ˜ํ–‰ ์‹œ๊ฐ„ density์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง

์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

Memory Controller์˜ ์š”์ฒญ ์Šค์ผ€์ค„๋Ÿฌ๋Š” DRAM ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค:

  • FCFS (First-Come First-Served): ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ฐฉ์‹. ์š”์ฒญ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋‚˜ DRAM ํšจ์œจ์ด ๋‚ฎ๋‹ค.
  • FR-FCFS (First-Ready FCFS): Row-buffer hit์ธ ์š”์ฒญ์„ ์šฐ์„  ์ฒ˜๋ฆฌํ•˜์—ฌ ์ง€์—ฐ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค. ํ˜„๋Œ€ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋Œ€ํ‘œ ๋ฐฉ์‹.
  • Write-Back Scheduling: ์“ฐ๊ธฐ ์š”์ฒญ์„ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฒ„์Šค ๊ฒฝํ•ฉ์„ ์ค„์ธ๋‹ค.
  • Per-Bank Scheduling: ๊ฐ ์€ํ–‰(bank)๋ณ„๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์Šค์ผ€์ค„๋งํ•˜์—ฌ ์€ํ–‰ ๊ฐ„ ๋ณ‘๋ ฌ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•œ๋‹ค.

์„œ๋ฒ„์™€ GPU ๊ฐ€์†๊ธฐ์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ๋™์‹œ์„ฑ์ด ๋†’์€ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋‹จ์ˆœํžˆ ํ‰๊ท  ์ง€์—ฐ๋งŒ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ฝ๊ธฐ ์šฐ์„ ์ˆœ์œ„์™€ QoS๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ๊ธฐ ์ง€์—ฐ์— ๋ฏผ๊ฐํ•œ CPU ์ฝ”์–ด ์š”์ฒญ๊ณผ ๋Œ€์—ญํญ ์ง‘์•ฝ์ ์ธ DMA ์š”์ฒญ์ด ๋™์‹œ์— ๋“ค์–ด์˜ค๋ฉด, ์ปจํŠธ๋กค๋Ÿฌ๋Š” read draining๊ณผ write draining ๊ตฌ๊ฐ„์„ ๋‚˜๋ˆ„๊ณ  starvation ๋ฐฉ์ง€์šฉ age counter๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.

DDR5 ์ดํ›„์—๋Š” bank group, ์„œ๋ธŒ์ฑ„๋„, on-die ECC, PMIC ํŠน์„ฑ์ด ํ•จ๊ป˜ ์–ฝํžˆ๋ฏ€๋กœ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ œ์•ฝ๋„ ๋Š˜์–ด๋‚ฌ๋‹ค. ๊ฐ™์€ rank ์•ˆ์—์„œ๋„ bank group ๊ฐ„ ์ „ํ™˜ ํŽ˜๋„ํ‹ฐ์™€ refresh ํƒ€์ด๋ฐ์ด ๋‹ค๋ฅด๊ฒŒ ์ฒด๊ฐ๋  ์ˆ˜ ์žˆ์–ด, ์ฃผ์†Œ ์ธํ„ฐ๋ฆฌ๋น™ ์ •์ฑ…๊ณผ ๋ช…๋ น ๋ฐœํ–‰ ์ •์ฑ…์„ ํ•จ๊ป˜ ์ตœ์ ํ™”ํ•ด์•ผ ์‹ค์ œ ๋Œ€์—ญํญ์ด ๋‚˜์˜จ๋‹ค.

Row Buffer ์ •์ฑ…

Row Buffer States
์ •์ฑ… ๋™์ž‘ ์žฅ์  ๋‹จ์ 
Open-Page ์ ‘๊ทผ ํ›„ ํ–‰์„ ์—ด์–ด๋†“์Œ ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ(spatial locality)์— ํšจ๊ณผ์  ํ–‰ ์ถฉ๋Œ ์‹œ precharge ์˜ค๋ฒ„ํ—ค๋“œ
Closed-Page ์ ‘๊ทผ ์ฆ‰์‹œ precharge ์ž„์˜ ์ ‘๊ทผ์— ํšจ๊ณผ์  ํ–‰ ํ™œ์„ฑํ™” ์—๋„ˆ์ง€ ๋‚ญ๋น„
Adaptive ์ ‘๊ทผ ํŒจํ„ด์— ๋”ฐ๋ผ ๋™์  ์ „ํ™˜ ์ตœ์ ์˜ ๊ท ํ˜• ๊ตฌํ˜„ ๋ณต์žก๋„ ๋†’์Œ

๋ฆฌํ”„๋ ˆ์‹œ ๊ด€๋ฆฌ

DRAM ์…€์€ ์ปคํŒจ์‹œํ„ฐ์— ์ €์žฅ๋œ ์ „ํ•˜๊ฐ€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ˆ„์„ค๋˜๋ฏ€๋กœ, ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์˜จ๋„ ์กฐ๊ฑด์— ๋งž๋Š” ์ฃผ๊ธฐ๋กœ ๋ฆฌํ”„๋ ˆ์‹œ ๋ช…๋ น์„ ๋ฐœํ–‰ํ•ด์•ผ ํ•œ๋‹ค:

  • All-Bank Refresh (REFab): ๋ชจ๋“  ์€ํ–‰์„ ๋™์‹œ์— ๋ฆฌํ”„๋ ˆ์‹œ. ํ‘œ์ค€ ๋ฐฉ์‹.
  • Same-Bank Refresh (REFsb): DDR5 ๊ธฐ๋Šฅ. ๊ฐœ๋ณ„ ์€ํ–‰๋งŒ ๋ฆฌํ”„๋ ˆ์‹œํ•˜์—ฌ ๋‹ค๋ฅธ ์€ํ–‰์˜ ์„œ๋น„์Šค๋ฅผ ์œ ์ง€.
  • Temperature-Compensated Refresh: ์ €์˜จ ํ™˜๊ฒฝ์—์„œ ๋ฆฌํ”„๋ ˆ์‹œ ๋นˆ๋„๋ฅผ ๊ฐ์†Œ์‹œ์ผœ ์ „๋ ฅ ์ ˆ์•ฝ.
  • Targeted Row Refresh (TRR): RowHammer ๊ณต๊ฒฉ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ ‘ ํ–‰์„ ๋ฆฌํ”„๋ ˆ์‹œ.

๋น„๊ต/๋ถ„์„

DDR ์„ธ๋Œ€๋ณ„ Memory Controller ๋น„๊ต

ํ•ญ๋ชฉ DDR3 DDR4 DDR5
์ „์•• 1.5V 1.2V 1.1V
์ตœ๋Œ€ ์ „์†ก ์†๋„ 2133 MT/s 3200 MT/s 8800 MT/s
ํ”„๋ฆฌํŽ˜์น˜ 8n 8n 16n
Bank Groups โ€” 4 8
์ตœ๋Œ€ DIMM ์šฉ๋Ÿ‰ 8GB 64GB 512GB
๋ฒ„์ŠคํŠธ ๊ธธ์ด 8 8 16 (BL16)
On-die ECC ์—†์Œ ์—†์Œ ํ•„์ˆ˜
์„œ๋ธŒ์ฑ„๋„ ์—†์Œ ์—†์Œ ์žˆ์Œ (2ร—32-bit)
๋ฆฌํ”„๋ ˆ์‹œ ๊ฐ„๊ฒฉ 64ms 64ms 32ms (โ‰ค85ยฐC)

ํ†ตํ•ฉ vs ๋ถ„๋ฆฌ Memory Controller

ํ•ญ๋ชฉ ํ†ตํ•ฉ (IMC) ๋ถ„๋ฆฌ (Northbridge)
์ง€์—ฐ ์‹œ๊ฐ„ ๋‚ฎ์Œ (์นฉ์…‹ ํ™‰ ์—†์Œ) ๋†’์Œ (์ถ”๊ฐ€ ๋ฒ„์Šค ํ™‰)
๋Œ€์—ญํญ ๋†’์Œ (์งง์€ ํŠธ๋ ˆ์ด์Šค) ๋‚ฎ์Œ
์ „๋ ฅ ๋‚ฎ์Œ ๋†’์Œ
์œ ์—ฐ์„ฑ ํŠน์ • DRAM ํƒ€์ž…์— ๊ณ ์ • ๋‹ค์–‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํƒ€์ž… ์ง€์›
๋ฉ”์ธ๋ณด๋“œ ์„ค๊ณ„ ๋‹จ์ˆœ ๋ณต์žก
์‚ฌ์šฉ ์˜ˆ Intel Nehalem+, AMD K8+ ๊ตฌํ˜• ์‹œ์Šคํ…œ

์—๋Ÿฌ ์ •์ • ๊ธฐ๋Šฅ ๋น„๊ต

๊ธฐ๋Šฅ ๋Šฅ๋ ฅ ๊ตฌํ˜„
Parity 1๋น„ํŠธ ์˜ค๋ฅ˜ ๊ฒ€์ถœ ๋ฐ”์ดํŠธ๋‹น 1๋น„ํŠธ
SECDED ECC 1๋น„ํŠธ ์ •์ •, 2๋น„ํŠธ ๊ฒ€์ถœ 64๋น„ํŠธ ๋ฐ์ดํ„ฐ์— 8๋น„ํŠธ ECC (72๋น„ํŠธ ๋ฒ„์Šค)
Chipkill DRAM ์นฉ ๋‹จ์œ„ ๋‹ค๋น„ํŠธ ์˜ค๋ฅ˜ ์ •์ • ์—ฌ๋Ÿฌ ์นฉ์— ๊ฑธ์นœ ๊ณ ๊ธ‰ ECC
On-die ECC (DDR5) ๋‚ด๋ถ€ ์˜ค๋ฅ˜ ์ •์ • Memory Controller์— ํˆฌ๋ช…
CRC ๋ฒ„์ŠคํŠธ ์˜ค๋ฅ˜ ๊ฒ€์ถœ GDDR6/HBM์—์„œ ๋งํฌ ๋ฌด๊ฒฐ์„ฑ ์œ„ํ•ด ์‚ฌ์šฉ

๋™์ž‘ ์›๋ฆฌ

1๋‹จ๊ณ„: CPU ์š”์ฒญ ์ˆ˜์‹ 

CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด, MMU๋ฅผ ํ†ตํ•ด ๊ฐ€์ƒ ์ฃผ์†Œ๊ฐ€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. Memory Controller๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ๋‹ค์Œ์„ ๋””์ฝ”๋”ฉํ•œ๋‹ค:

  • Bank Address: DRAM์˜ ์–ด๋А ์€ํ–‰์— ์ ‘๊ทผํ• ์ง€
  • Row Address: ํ™œ์„ฑํ™”ํ•  ํ–‰ ๋ฒˆํ˜ธ
  • Column Address: ์ฝ๊ธฐ/์“ฐ๊ธฐํ•  ์—ด ๋ฒˆํ˜ธ

2๋‹จ๊ณ„: ์š”์ฒญ ์Šค์ผ€์ค„๋ง

Request Scheduler๋Š” ์ˆ˜์‹ ๋œ ์š”์ฒญ์„ ๋ฒ„ํผ๋งํ•˜๊ณ , DRAM ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ์ตœ์ ์˜ ์ˆœ์„œ๋กœ ์žฌ์ •๋ ฌํ•œ๋‹ค:

  1. Row-buffer hit ํ™•์ธ: ์—ด๋ ค ์žˆ๋Š” ํ–‰์— ์ ‘๊ทผํ•˜๋Š” ์š”์ฒญ์ด ์žˆ์œผ๋ฉด ์ตœ์šฐ์„  ์ฒ˜๋ฆฌ
  2. ์€ํ–‰ ๋ณ‘๋ ฌ์„ฑ ํ™œ์šฉ: ๋‹ค๋ฅธ ์€ํ–‰์˜ ์š”์ฒญ์„ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌ
  3. ์“ฐ๊ธฐ-์ฝ๊ธฐ ์ˆœ์„œ ์ตœ์ ํ™”: ๋ฒ„์Šค ๊ฒฝํ•ฉ ์ตœ์†Œํ™”

์ฃผ์†Œ ๋งคํ•‘ ๋ฐฉ์‹๋„ ์‹ค์ œ ์ฒด๊ฐ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์ค€๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ์˜ ์ผ๋ถ€ ๋น„ํŠธ๋ฅผ channel/rank/bank group/bank/row/column์— ๋ถ„์‚ฐ ๋ฐฐ์น˜ํ•˜์—ฌ ์—ฐ์† ์ ‘๊ทผ์ด ํŠน์ • bank์— ๋ชฐ๋ฆฌ์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค. ์šด์˜์ฒด์ œ์˜ ํŽ˜์ด์ง€ ํ• ๋‹น ํŒจํ„ด๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ‘๊ทผ ์ง€์—ญ์„ฑ์ด ์ด ๋งคํ•‘๊ณผ ๋งž๋ฌผ๋ฆฌ๋ฉด row-buffer hit์œจ๊ณผ bank-level parallelism์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค.

3๋‹จ๊ณ„: DRAM ๋ช…๋ น ์ƒ์„ฑ

์Šค์ผ€์ค„๋œ ์š”์ฒญ์— ๋”ฐ๋ผ Memory Controller๋Š” DRAM์— ๋ช…๋ น์„ ์ „์†กํ•œ๋‹ค:

  1. PRE (Precharge): ์€ํ–‰์˜ ์—ด๋ฆฐ ํ–‰์„ ๋‹ซ๋Š”๋‹ค (ํ•„์š” ์‹œ)
  2. ACT (Activate): ์›ํ•˜๋Š” ํ–‰์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์—ด ๋ฒ„ํผ์— ๋กœ๋“œ
  3. RD/WR (Read/Write): ํŠน์ • ์—ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ด๋‹ค
  4. BURST: BL8 ๋˜๋Š” BL16 ํฌ๊ธฐ์˜ ๋ฒ„์ŠคํŠธ ์ „์†ก ์ˆ˜ํ–‰

4๋‹จ๊ณ„: ๋ฆฌํ”„๋ ˆ์‹œ ๊ด€๋ฆฌ

Memory Controller๋Š” ์„ธ๋Œ€์™€ ์˜จ๋„ ์กฐ๊ฑด์— ๋งž๋Š” ์ฃผ๊ธฐ๋กœ ๋ชจ๋“  ํ–‰์„ ๋ฆฌํ”„๋ ˆ์‹œํ•ด์•ผ ํ•œ๋‹ค:

  • tREFI์— ๋งž์ถฐ ๋ฆฌํ”„๋ ˆ์‹œ ์š”์ฒญ ์ƒ์„ฑ
  • ๋ฆฌํ”„๋ ˆ์‹œ ์ค‘ ํ•ด๋‹น ์€ํ–‰์€ ์ ‘๊ทผ ๋ถˆ๊ฐ€
  • DDR5์—์„œ๋Š” Same-Bank Refresh๋กœ ๋‹ค๋ฅธ ์€ํ–‰์˜ ์„œ๋น„์Šค ์œ ์ง€ ๊ฐ€๋Šฅ
  • Self-refresh ๋ชจ๋“œ์—์„œ๋Š” DRAM์ด ์ž์ฒด์ ์œผ๋กœ ๋ฆฌํ”„๋ ˆ์‹œ ์ˆ˜ํ–‰

5๋‹จ๊ณ„: ๋ฐ์ดํ„ฐ ์ „์†ก

์ฝ๊ธฐ ์ž‘์—…์—์„œ ๋ฐ์ดํ„ฐ๋Š” DRAM โ†’ Memory Controller โ†’ CPU ์ˆœ์„œ๋กœ ์ „์†ก๋œ๋‹ค:

  • DQS (Data Strobe): ์†Œ์Šค ๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์ „์†ก
  • ODT (On-Die Termination): ์‹ ํ˜ธ ๋ฐ˜์‚ฌ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์ž„ํ”ผ๋˜์Šค ๋งค์นญ
  • DBI (Data Bus Inversion): ์ „๋ ฅ ์†Œ๋น„ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ฒ„์Šค ๋ฐ˜์ „

์žฅ๋‹จ์ 

์žฅ์  ๋‹จ์ 
DRAM ํƒ€์ด๋ฐ ๋ณต์žก์„ฑ์„ CPU์— ํˆฌ๋ช…ํ•˜๊ฒŒ ์ถ”์ƒํ™” ์นฉ ๋‹ค์ด ๋ฉด์ ์„ ์ƒ๋‹น ๋ถ€๋ถ„ ์ฐจ์ง€
์ฃผ๊ธฐ์  ๋ฆฌํ”„๋ ˆ์‹œ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ ์ƒˆ ๋ฉ”๋ชจ๋ฆฌ ํ‘œ์ค€ ์ง€์›์„ ์œ„ํ•ด ์žฌ์„ค๊ณ„ ํ•„์š”
ECC๋กœ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ ์—ด์  ๊ฒฐํ•ฉ์œผ๋กœ CPU ์ฟจ๋ง ๋ณต์žก๋„ ์ฆ๊ฐ€
์ „๋ ฅ ๊ด€๋ฆฌ(Self-refresh, CKE)๋กœ ์—๋„ˆ์ง€ ํšจ์œจํ™” ํŠน์ • DRAM ํƒ€์ž…์— ๊ณ ์ • (ํ†ตํ•ฉ ์‹œ)
์š”์ฒญ ์Šค์ผ€์ค„๋ง์œผ๋กœ ๋Œ€์—ญํญ ์ตœ์ ํ™” ์„ค๊ณ„ ๋ณต์žก๋„๊ฐ€ ๋†’์Œ
๋‹ค์ค‘ ์ฑ„๋„๋กœ ๋Œ€์—ญํญ ํ™•์žฅ ๊ฐ€๋Šฅ

๊ด€๋ จ ๊ธฐ์ˆ 

  • JEDEC JESD79-5: DDR5 SDRAM ์‚ฌ์–‘ ํ‘œ์ค€
  • JEDEC JESD209-5: LPDDR5 ์‚ฌ์–‘ ํ‘œ์ค€
  • JEDEC JESD235: HBM ์‚ฌ์–‘ ํ‘œ์ค€
  • Intel IMC: Nehalem(2008)๋ถ€ํ„ฐ ์ ์šฉ๋œ ํ†ตํ•ฉ ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ
  • AMD Infinity Fabric: Zen ์•„ํ‚คํ…์ฒ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค
  • CXL (Compute Express Link): ํ™•์žฅ ๋ฉ”๋ชจ๋ฆฌ ํ’€๋ง์„ ์œ„ํ•œ ์ฐจ์„ธ๋Œ€ ํ”„๋กœํ† ์ฝœ
  • RDIMM/LRDIMM Register: ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ช…๋ น/์ฃผ์†Œ ๋ฒ„ํผ๋ง
  • Rambus: ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ IP ๋ผ์ด์„ ์Šค ๋ฐ SerDes ๊ธฐ์ˆ 
  • DDR Generation Comparison: DDR3/4/5 ์„ธ๋Œ€๋ณ„ ๊ตฌ์กฐ์™€ ํƒ€์ด๋ฐ ๋ณ€ํ™”
  • ECC Error Correction: SECDED, Chipkill, On-die ECC ๋น„๊ต
  • HBM Generation Comparison: ๊ณ ๋Œ€์—ญํญ ๋ฉ”๋ชจ๋ฆฌ์—์„œ์˜ ์ปจํŠธ๋กค๋Ÿฌ ์ œ์•ฝ ๋น„๊ต
  • Jacob, Ng, Wang, Memory Systems: Cache, DRAM, Disk: ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ์™€ DRAM ์Šค์ผ€์ค„๋ง์˜ ๊ณ ์ „์  ์ฐธ๊ณ ์„œ
  • Micron DDR5 Technical Briefs: DDR5 bank group, refresh, on-die ECC ์šด์šฉ ๋ฐฐ๊ฒฝ ์„ค๋ช…

ํ•ต์‹ฌ ์ •๋ฆฌ

Memory Controller๋Š” CPU์™€ DRAM ์‚ฌ์ด์˜ ํ•„์ˆ˜์ ์ธ ๊ฐ€๊ต๋กœ, ๋ณต์žกํ•œ DRAM ํƒ€์ด๋ฐ๊ณผ ํ”„๋กœํ† ์ฝœ์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค. ํ˜„๋Œ€ ์‹œ์Šคํ…œ์—์„œ๋Š” CPU ๋‹ค์ด ๋‚ด๋ถ€ ํ†ตํ•ฉ(IMC)์ด ํ‘œ์ค€์ด ๋˜์—ˆ์œผ๋ฉฐ, DDR5์—์„œ๋Š” ์˜จ๋‹ค์ด ECC, ์„œ๋ธŒ์ฑ„๋„, ์˜จ๋ชจ๋“ˆ PMIC ๋“ฑ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. Memory Controller์˜ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ฆฌํ”„๋ ˆ์‹œ ๊ด€๋ฆฌ๋Š” ์‹œ์Šคํ…œ ๋Œ€์—ญํญ๊ณผ ์ง€์—ฐ ์‹œ๊ฐ„์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ECC ์—”์ง„์€ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค. ํ–ฅํ›„ CXL ๊ธฐ๋ฐ˜์˜ ๋ถ„์‚ฐ ๋ฉ”๋ชจ๋ฆฌ ์•„ํ‚คํ…์ฒ˜์—์„œ Memory Controller์˜ ์—ญํ• ์€ ๋”์šฑ ํ™•๋Œ€๋  ๊ฒƒ์ด๋‹ค.