Gunjun's Blog
๐Ÿ˜€
Gunjun's Blog
/
Books
/
DRAM

DRAM

Created
Oct 11, 2025 12:43 PM
Tags

Dynamic Random Access Memory.

๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ refresh ํ•ด์ค˜์•ผํ•จ. ๊ทธ๋ž˜์„œ Dynamic

Double Data Rate: ํ•œ cycle ๋‹น 2๋ฒˆ (rising edge, falling edge) ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Œ

DDR4-3200 ์ด๋ฉด 1600 MHz ๋กœ ๋™์ž‘ํ•˜๋Š” memory ๋ผ๋Š” ๋œป. ํ•œ pin ์—์„œ 3200 Mb ๋กœ ๋™์ž‘ํ•จ (Double Data Rate).

tCK ๊ฐ€ 1 / 1600 ms

Memory controller ๋Š” CPU ์•ˆ์— ์žˆ์Œ. memory controller ๋Š” memory channel (wires on motherboard) ๋ฅผ ํ†ตํ•ด memory modules (Dual Inline Memory Modules, DIMMs) ๊ณผ ์—ฐ๊ฒฐ๋จ

image

DIMM ์€ PCB ๊ธฐํŒ์˜ ์•ž๋’ค์— Memory chip (DRAM chip) ๋“ค์ด ์žฅ์ฐฉ๋œ ํ˜•ํƒœ์ž„

image

์‚ฌ์ง„์— ๋ณด์ด๋Š” DIMM ๋“ค์€ 8๊ฐœ์˜ DRAM chip ์ด ๋ถ™์–ด ์žˆ์Œ. ์ด๋ ‡๊ฒŒ 8๊ฐœ DRAM chip ์ด ๋ชจ์—ฌ์„œ 1 rank ์„ ์ด๋ฃธ. ์ฆ‰ ์•ž๋’ค ๊ฐ๊ฐ 1rank ์”ฉ 2rank ์ธ DIMM ์ž„. 1 rank ๋ž€ ๋‹ค ๊ฐ™์ด ๋ชจ์—ฌ์„œ 64 bit data ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•˜๋‚˜์˜ ๊ณต๋™์ฒด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ. ๊ฐ DRAM chip ์€ ํ•œ๋ฒˆ์— 8 bit ์”ฉ output ํ•จ. x8 DRAM ์ž„.

๊ฐ๊ฐ์˜ RANK ๋Š” 8 ๊ฐœ์˜ Bank ๋กœ ๋‚˜๋‰จ. ์ด๊ฒŒ ์•ฝ๊ฐ„ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ชจ๋“  ์นฉ๋“ค์˜ 1 / 8 ์กฐ๊ฐ์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ Bank ์„ ์ด๋ฃธ. ํ•œ ์นฉ์˜ 1 bank ์ฆ‰ 1 / 8 ์กฐ๊ฐ์€ sub-bank ๋ผ ํ•จ. ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด x ์ถ• ๋”ฐ๋ผ์„œ ๊ตฌ๋ถ„ํ•˜๋ฉด chip, y ์ถ• ๋”ฐ๋ผ์„œ ๊ตฌ๋ถ„ํ•˜๋ฉด bank ๋ผ๊ณ ๋„ ํ•  ์ˆ˜ ์žˆ๊ฒ ์Œ.

image

rank ์—์„œ data ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์€ ๋งค์šฐ ๋А๋ฆฐ ์ž‘์—…์ž„. (about 40 ns) ์ด๋ฅผ ๊ฐ์ถ”๊ธฐ ์œ„ํ•ด memory ์ ‘๊ทผ์€ 3-stage pipeline ์œผ๋กœ ์ด๋ค„์ง.

  1. address / command bus ์„ ํ†ตํ•ด ์ฃผ์†Œ์™€ ๋ช…๋ น์„ DRAM chip ์— ๋ณด๋‚ธ๋‹ค. (1 ns)
  2. DRAM chip ์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. (35 ns)
  3. DRAM chip ์— ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ data bus ๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ๋‹ค. (5 ns)

๋ณด๋‹ค์‹ถ์ด 1st stage ๋Š” 1ns ๋ฉด ๋˜๋Š” ๋ฐ˜๋ฉด 2nd stage ๋Š” 35 ns ๋‚˜ ๊ฑธ๋ฆผ. ์ด๋ฅผ ๊ณ ์ž‘ 2-rank ๋‚˜ 4-rank ๋กœ fully utilize ํ•  ์ˆœ ์—†์Œ. ๊ทธ๋ž˜์„œ bank ๊ฐ€ ๋“ฑ์žฅํ•จ.

sub-bank ๋Š” ๋‹ค์‹œ ์—ฌ๋Ÿฌ๊ฐœ์˜ subarray ์™€ mat ์œผ๋กœ ๋‚˜๋‰จ. ํ•˜๋‚˜์˜ subarray ๋กœ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” interconnect overhead ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•จ์ž„

๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ• ๋•Œ bank ๋ณ„๋กœ 64B cacheline ๋‹จ์œ„๋กœ ์ ‘๊ทผ๋จ. 64B ๋Š” ํ•œ bank ๋‚ด์— ๋ฟŒ๋ ค์ ธ์žˆ์Œ 8 ๊ฐœ์˜ x8 DRAM chip ์œผ๋กœ 1 rank ๋ผ ํ•˜๋ฉด ๊ฐ DRAM chip ์€ 64B ์˜ 8B ์„ ๋‹ด๋‹นํ•จ. 64 bit ๋Š” sub-bank ์˜ ์—ฌ๋Ÿฌ mat ์œผ๋กœ ๋‚˜๋‰จ. 64B ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด 64bit 8๋ฒˆ์˜ ์ „์†ก์ด ํ•„์š”ํ•˜๊ณ  ๋”ฐ๋ผ์„œ 4clock ์ด ํ•„์š”ํ•จ. (burst length = 8)

์ฆ‰ 64 bit ๊ฐ€ 8๊ฐœ DRAM chip ์— ๋‚˜๋‰˜๋ฏ€๋กœ ํ•˜๋‚˜์˜ sub-bank ๊ฐ€ 8bit ๋ฅผ 8๋ฒˆ ์ „์†กํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋จ.

mat ์ด๋ž€ 512bit row, 512bit col ์„ ๊ฐ€์ง„ ๋‹จ์œ„์ž„ (256kb). horizontal line ์€ wordline, vertical line ์€ bitline ์ž„. ๊ฐ mat ์•„๋ž˜์—๋Š” sense amplifier ๊ฐ€ ์žˆ์Œ. row data ๋ฅผ sense amplifier ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ณผ์ •์€ row activtaion ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ command ๋Š” RAS, ๋”œ๋ ˆ์ด๋Š” 13 ns ์ •๋„ ๊ฑธ๋ฆผ.

ํ•œ cache line request ๋Š” 512 bit row ๋ฅผ 64๊ฐœ mat ์— ๊ฑธ์ณ์„œ ๋ถˆ๋Ÿฌ์˜ด. (4KB) ์ด๋“ค ์ค‘ valid ํ•œ column ์˜ ๋ฐ์ดํ„ฐ 8bit ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ช…๋ น์ด CAS ์ž„. ์›ํ•˜๋Š” row ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด bitline ์„ precharge ํ•˜๋Š” ์‹œ๊ฐ„์ด ํ•„์š”ํ•จ. 13 ns ๊ฐ€ ๊ฑธ๋ฆผ.

๋ฐ์ดํ„ฐ๋ฅผ sense amplifier ์—์„œ output pin ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ๋„ 13 ns ๊ฐ€ ๊ฑธ๋ฆผ.

  1. ์ด๋ฏธ activate ๋œ row ์—์„œ ๋‹ค๋ฅธ column ์„ ์ฝ๋Š” ๊ฒƒ: 13 ns
  2. precharged ์ƒํƒœ์—์„œ row ์—์„œ data ๋ฅผ ์ฝ๋Š” ๊ฒƒ: 26 ns
  3. activate ๋œ row ์™€ ๋‹ค๋ฅธ row ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ฒƒ: 39 ns

memctrl ์—์„œ Read ๊ฐ€ write ๋ณด๋‹ค ์šฐ์„  ๋จ. write ๋Š” write buffer ์— ์žˆ๋‹ค๊ฐ€ ์ฒ˜๋ฆฌ๋จ

memctrl ๊ฐ€ refresh ๋ช…๋ น์„ ๋‚ด๋ฆผ

time between column and column ์€ tCCD (= 5 ns)

time between row and row ์€ tRRD (= 6 ns)

time to activate Row ๋Š” tRCD (= 13 ns) (Row to Column)

time to precharge ๋Š” tRP (= 13 ns)

time to move data from row buffer to pins ๋Š” tCAS (= 13 ns)

time to precharge ์€ tRAS (= 35 ns)

latency between READ to output ๋Š” CL (= 16 cycle) ์ฆ‰ CL * tCK = tAA

minimum time between row activation and precharge ๋Š” tRAS. (RAS command ๋ž‘ ํ—ท๊ฐˆ๋ฆฌ์ง€ ๋ง์ž. RAS ๋Š” row access strobe. row ๋ฅผ identify ํ•˜๋Š” command)

refresh ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” cycle time ์€ tRFC (= 160 ns) tRFC ๋™์•ˆ ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๋ชปํ•จ

tREFI ๋Š” row refresh ๊ฐ„์˜ ๊ฐ„๊ฒฉ. tREFW ๋Š” refresh ๊ฐ„์˜ ๊ฐ„๊ฒฉ์˜ ์ตœ์†Œ๊ฐ’. tREFC ๋Š” ํ•œ row refresh ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„

refresh ํ•  ๋•Œ ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ row ๋ฅผ ํ•จ.

refresh ๋•Œ๋ฌธ์— DRAM latency ๋Š” ๊ฐ€๋”์”ฉ ํА

Thress cases of DRAM access time

  1. Activated and row buffer hit: tAA
  2. Precharged: tRCD+tAA
  3. ctivated but row buffer miss: tRP + tRCD + tAA
image

DDR3 ๋Š” ์ฑ„๋„๋‹น 64๊ฐœ data pin ๊ณผ 23๊ฐœ์˜ address/command pin ์„ ๊ฐ€์ง

๋ชจ๋“  address ์นฉ์„ dram chip ์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ  DIMM ์€ buffer chip ์„ ์‚ฌ์šฉํ•จ. ์ด๋Ÿฌ๋ฉด channel ์˜ load ๋ฅผ ๋Œ€ํญ ์ค„์ผ ์ˆ˜ ์žˆ์Œ. ์ด๋Ÿฐ buffered DIMM ์ค‘ ํ•˜๋‚˜๊ฐ€ RDIMM (Registered DIMM). address/command wire ๋งŒ buffer chip ์„ ํ†ตํ•จ

LRDIMM ์€ data wire ๋„ buffer chip ์— ์—ฐ๊ฒฐ

DDR5 ๋Š” ๋‘๊ฐœ์˜ 40bit channels ์„ ๊ฐ€์ง. 40bit ๋ผ์„œ access granularity ๋Š” 32 B

GDDR ์€ DIMM ๊ฐ™์€ ๊ฑธ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  chip ์— ๋ฐ”๋กœ ๋ถ™์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— freq ๊ฐ€ ๋” ๋†’์Œ. GDDR5 ์—์„  8Gbps ์˜€์Œ. GDDR ์˜ access granularity ๋Š” 32B

dram chip ์€ 8๊ฐœ (DDR3), 16๊ฐœ (DDR4) ํ˜น์€ ๊ทธ ์ด์ƒ(HBM) ์˜ bank ๋กœ ๊ตฌ์„ฑ๋จ. bank ๋Š” subarray ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ๊ฐ subarray ๋Š” mat ๋กœ ๊ตฌ์„ฑ๋จ. (row of mats ๊ฐ€ subarray)

๋งŒ์•ฝ subarray ๊ฐ€ 8๊ฐœ์˜ mat ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ฐ subarray ๊ฐ€ 4 ๊ฐœ์˜ local io wire ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด 32 bit ๊ฐ€ IO pin ํ•œ ๋ฒˆ์˜ local-IO cycle ๋งŒ์— ๋ณด๋‚ด์ง€๊ณ  IO pin ์—์„œ output pin ์œผ๋กœ x4 chip ์ด๋ผ ํ•˜๋ฉด 4 bit ์”ฉ 8 (burst length) ๋ฒˆ ๋ณด๋‚ด์ง„๋‹ค. local-IO cycle ์€ output pin cycle ์˜ 1/4๋ฐฐ.

8 (mat) * 4 (local wire) = x4 * 8(burst length)