How Storage Works

How Storage Works, Part 1: The Memory and Storage Hierarchy

Nine memories from registers to tape on latency, bandwidth, capacity and cost, and the rule that decides where data lives.

The hierarchy, interactive

Nine memories, four axes

Pick an axis to redraw the bars, then pick a memory for its real part, its numbers and where they come from. SRAM is split into L1, L2 and L3, so the chart draws eleven rows. Every value is sourced, and a row with no sourced figure on an axis says so instead of drawing a bar.

Access latency, log scale. A longer bar is slower.
Bandwidth of one part, log scale. A longer bar moves more.
Capacity of one part, log scale. A longer bar holds more.
Cost per GB, one 2017 price list, log scale. A longer bar costs more.
  1. Below this line, data survives a power cut
  • On the core
  • SRAM
  • DRAM
  • Persistent memory
  • NAND flash
  • Magnetic

† From a different part or generation than the row names; see its card. Cost bars all come from one 2017 price list.

DRAM · loses data with the power off

DRAM

DDR4 and DDR5 server memory

Main memory. One transistor and one capacitor per bit make it dense, but every row has to be refreshed within 64ms.

Latency
81ns random load on an Intel server (Izraelevitz et al.)
Bandwidth
38.4GB/s one DDR5-4800 channel (Sun et al.); about 1.6TB/s across a 16-channel AMD Venice socket with MRDIMMs (StorageReview)
Capacity
32GB one DDR4 module, as measured (Izraelevitz et al.)
Cost per GB
$5.00/GB a 16GB module for 80 USD in 2017; DDR5 modules averaged about 14.9 USD per GB at October 2026 spot
Go deeper: Working Memory, Part 2 Every generation: the DRAM die timeline

The five-minute rule, worked

A page is worth keeping in DRAM when it is read again within the break-even interval: pages per MB of DRAM divided by the drive’s reads per second, times the drive’s price divided by DRAM’s price per MB. Start from a published sum, then change any input.

Inputs

Break-even interval: 3.5 hours

Published figure for this preset: four hours.

The published sums, recomputed from their own inputs
Prices ofComputedPublished
1987, DRAM over disk6.8 minutes400 seconds, rounded to five minutes
2007, DRAM over disk1.5 hoursabout 90 minutes
2007, DRAM over flash15 minutesabout 15 minutes
2017, DRAM over disk3.5 hoursfour hours
2017, DRAM over a SATA SSD7.1 minutes7 minutes

One read, from the drive to the core

A file read that misses every cache starts at the drive. Each memory on the way keeps a copy, so the next read of the same data stops higher.

  1. NVMe SSDThe driver puts a read command in a submission queue in host DRAM and rings the drive’s doorbell. The drive reads its NAND.Moves 4KiB · 52µs on the XG8 at QD1
  2. PCIe, by DMAThe controller copies the data into host DRAM by direct memory access. The CPU does not move each byte.Moves 4KiB · inside the 52µs
  3. Page cache in DRAMLinux keeps file data in the page cache. The next read of the same data stops here and never reaches the drive.Moves 4KiB page · a later random load: 81ns
  4. L2 and L1The core pulls the lines it needs into L2 and L1. On Zen 5 the L3 fills with lines the L2 evicts, on the way out.Moves 64-byte line · later hits: 14+ cycles in L2, 4 to 5 in L1
  5. RegistersA load puts the value in a register, and the instruction that needs it runs.Moves 8 bytes · 1 cycle for a simple operation
On this page 10 sections

Every computer keeps its data in a hierarchy of memories. A register answers in one processor cycle, and a core’s integer registers hold about 2KB. A tape cartridge holds 40TB and takes tens of seconds to reach its first byte. Between them sit SRAM caches, DRAM, HBM, CXL memory, persistent memory, SSDs and hard drives, each one a different trade of speed, size, cost and whether the data survives a power cut. This guide puts sourced numbers on all nine, explains why each one exists, and follows data as it moves between them.

The memory and storage hierarchy: bandwidth from a hard drive to one GPU’s HBM, the five-minute rule from 1987 to 2017, and one SSD’s write speed through its phasesA three-panel schematic. Left: two bars on a log scale, a hard drive at 270MB/s and one GPU’s HBM at 19.2TB/s, the HBM bar far longer. Center: a line of the DRAM to hard drive break-even interval from 400 seconds in 1987 to 4 hours in 2017 on a log scale, with a dashed line at five minutes. Right: a line of one SSD’s write speed against data written, high while the cache absorbs writes, then a slower phase, then a steady middle speed.GUIDE / HOW STORAGE WORKS, PART 1Every memory wins on one axisBANDWIDTH · FIVE-MINUTE RULE · WRITE SPEED01 BANDWIDTHHDD 270MB/sHBM 19.2TB/slog scale02 BREAK-EVEN5 min400s4h1987201703 WRITE SPEEDcache, fold, then TLC

Why the hierarchy exists

No single memory technology wins on every axis. Inside the processor sit the fastest cells, which take up the most silicon per bit. Spinning platters and tape hold the cheapest bits, far from the processor and slow to reach. Every memory in between is a compromise, and a system stacks several of them so that most accesses hit a fast one while most bytes sit on a cheap one.

Programs reuse data, which is why a hierarchy works. A value read once is likely to be read again soon, and its neighbors are likely to be read next. Each tier keeps a copy of what the tier below served most recently, so a hit near the top saves a trip to the bottom. One line of the IEEE’s 2026 storage roadmap sums up the trade: memory performance is correlated with cost per bit.

Why the hierarchy exists

Each step down holds more and answers later

One real part per memory, log scales on both axes

A log-log chart of access latency against capacity, one dot per memory. Registers: Zen 5 integer register file, 240 integer registers, 1.9KB, 1 cycle, 0.2ns. L1: Zen 5 L1 data cache, 48KB per core, 4 cycles, 0.8ns. L2: Zen 5 L2, 1MB per core, 14 cycles, 2.8ns. L3: Zen 5 L3, up to 96MB, 46 cycles, 9.2ns. DRAM: DDR4 DIMM, random load, 32GB module, 81ns. HBM: HBM2 on an NVIDIA V100, 32GB per GPU, 375 GPU cycles, about 272ns. Optane PMem: Optane DC persistent memory, 256GB module, 305ns, random load. NVMe SSD: Kioxia XG8 2TB, 4KiB read at QD1, 2TB drive, 52µs. Hard drive: WD Red Pro 20TB, 4KiB read at QD1, 20TB drive, 4.2ms. Tape: LTO-10 cartridge in a library, 40TB native cartridge, 65s to load and wind (2017 library). Zen 5 cycle counts are converted at an assumed 5GHz clock. The dots climb from the lower left to the upper right in one rough line, with a gap of more than two orders of magnitude in latency between Optane persistent memory and the NAND SSD.Access latency, log scale10ns1µs100µs10ms1s100s1KB1MB1GB1TBCapacity of one part, log scaleRegisters 0.2nsL1 0.8nsL2 2.8nsL3 9.2nsDRAM 81nsHBM2 272nsOptane 305nsSSD 52µsHDD 4.2msTape 65sSRAMDRAM, HBMPersistent memoryFlashMagnetic
Figure 1 · From a register to a tape cartridge, capacity grows about 20 billion times and access time about 300 billion times. Source: AMD Zen 5 guide; Jia et al. 2018; Izraelevitz et al. 2019; IEEE IRDS 2026; Appuswamy et al.; SSD and HDD from Sean Webster’s own tests.

Each dot is a single real part, with one exception. The tape dot pairs a 40TB LTO-10 cartridge with the 65s access time of a 2017 LTO-7 library, which is the only tape access time in the sources. Zen 5 cache latencies are AMD’s cycle counts, converted at an assumed 5GHz clock. HBM2 on an NVIDIA V100 gives the HBM dot. The DRAM and Optane dots were measured on one Intel server, and the SSD and hard drive are my own CrystalDiskMark runs on my test system, four runs each. From the lower left to the upper right, the dots climb in one rough line, because every step down buys capacity with time. One wide break interrupts that line, between Optane persistent memory at 305ns and the NAND SSD at 52µs, and that gap is where most of the newer memories try to fit. CXL memory has no dot, because no source gives one device’s latency and capacity together, and Figure 4 places it.

Below, a table puts the same memories on the axes the chart leaves out, bandwidth and the capacity of one part. Latency repeats so each row reads across.

Memory Example part Access latency Bandwidth Capacity of one part
Registers AMD Zen 5 core 1 cycle n/a 240 integer registers, 1.9KB
SRAM caches AMD Zen 5 4–46 cycles (L1 to L3) 2TB/s to a stacked L3 die (Zen 3) 48KB L1 to 96MB L3
HBM NVIDIA V100 (HBM2); Rubin (HBM4) 375 GPU cycles, about 272ns (HBM2) 900GB/s (V100); 19.2TB/s (Rubin) 32GB (V100); 288GB (Rubin)
DRAM DDR4 and DDR5 server memory 80–81ns 1.6TB/s per socket (MRDIMM) 32GB module
CXL memory DRAM in a CXL pool (8–16 sockets) 151–171ns (estimate) 64GB/s each way, x16 DRAM modules on the card
Persistent memory Intel Optane DC PMem 305ns random, 169ns sequential 6.6GB/s read per module 128–512GB per module
NVMe SSD Kioxia XG8 2TB, my test system 52µs (4KiB, QD1) 7.1GB/s read 245.76TB in the largest drives
Hard drive WD Red Pro 20TB, my test system 4.2ms (4KiB, QD1) 270MB/s read up to 44TB, in volume to two cloud providers
Tape Linear Tape-Open (LTO-10) cartridge tens of seconds 400MB/s native per drive 40TB native

Rows mix kinds of number on purpose, and each section below says where its numbers come from. Treat the table as a scale of orders of magnitude.

Registers and SRAM caches

Registers and caches sit on the processor die and are built from static RAM (SRAM). In the IEEE’s 2022 More Moore roadmap, the six-transistor cell is the conventional SRAM cell. Six transistors per bit is fast and needs no refresh, but it is large, and an MIT lecture puts a DRAM cell at about a twentieth of an SRAM cell’s area. That area cost is why the caches stay small. Working Memory, Part 1 covers the SRAM cell and why it has stopped shrinking with logic.

AMD’s Zen 5 optimization guide gives every level its size and latency. Zen 5’s integer physical register file holds 240 registers of 64 bits, about 1.9KB, of which up to 40 per thread hold architectural state and the rest serve out-of-order renames. A simple integer operation on two registers completes in one cycle. An integer load from the 48KB L1 data cache takes 4 or 5 cycles. A hit in the 1MB L2 takes at least 14 cycles. The L3 (up to 96MB, shared by the cores in a complex) averages 46 cycles.

Registers and SRAM caches

Each step away from the core holds more and costs more cycles

AMD Zen 5: capacity as bar length on a log scale, load-to-use latency in cycles

Five rows, one per memory inside and just outside a Zen 5 core, each with a bar whose length is its capacity on a log scale, its capacity as a value and its latency on the right. Registers: 1.9KB, 1 cycle, 240 integer registers. L1 data: 48KB, 4 to 5 cycles, per core, 12-way. L2: 1MB, 14+ cycles, per core, holds L1’s lines. L3: up to 96MB, 46 cycles avg, shared by a complex. DRAM: 32GB module, about 400 cycles, 80ns at 5GHz. The cache line that moves between levels is 64 bytes.LevelCAPACITYLATENCY1KB1MB1GBCapacity of one level, log scaleRegisters240 integer registers1.9KB1 cycleL1 dataper core, 12-way48KB4 to 5 cyclesL2per core, holds L1’s lines1MB14+ cyclesL3shared by a complexup to 96MB46 cycles avgDRAM80ns at 5GHz32GB moduleabout 400 cyclesOn the processor dieOff the die, for comparison
Figure 2 · A load that misses every level waits about 100 times longer than one that hits L1. Every level moves data in 64-byte cache lines. Source: AMD, Software Optimization Guide for the Zen 5 microarchitecture; DRAM cycles at an assumed 5GHz clock.

Each step away from the core multiplies capacity and adds cycles. L1 to L2 is about 21 times the capacity for three to four times the latency. L2 to L3 is 96 times the capacity for about three times the latency. A load that misses all three caches goes to DRAM, about 80ns or roughly 400 cycles at the same assumed 5GHz clock, so a miss costs about 100 times an L1 hit. Data moves between all of these levels in 64-byte cache lines, never single bytes, and the L2 to L1 path is one line wide.

AMD also stacks extra L3 on top of the core die. On Zen 3, the hybrid-bonded V-Cache die in Wuu and colleagues’ ISSCC 2022 paper raised the L3 from 32MB to 96MB, with up to 2TB/s between the two dies. Stacking adds capacity without moving the cache further from the cores, which is the same move HBM makes for DRAM.

DRAM and HBM: main memory, and memory built for bandwidth

DRAM is main memory because its cell is small: one transistor and one capacitor. Its capacitor leaks, so every row has to be read and written back on a schedule. Micron’s DDR4 datasheet requires 8,192 refresh commands every 64ms. DRAM sits off the processor die, on modules, so a load that reaches it costs about 80ns. About 80ns is the system access time in the IEEE’s beyond-CMOS roadmap, and Izraelevitz and colleagues measured 81ns for a random load on an Intel server. Working Memory, Part 2 covers the cell and the bank.

How wide the path to DRAM is sets its bandwidth. AMD’s Venice server processor has 16 memory channels and, with MRDIMMs at 12,800MT/s, reaches about 1.6TB/s per socket, by StorageReview’s account. Sun and colleagues give a plain DDR5-4800 channel as 38.4GB/s, and that figure comes from a different platform.

High Bandwidth Memory uses the same kind of cell and changes the path. Stacks of DRAM dies sit beside the processor on one package, each with a very wide interface, and Photolithography Part 5 shows how that package is built. Samsung’s ISSCC 2026 HBM4 paper describes a 36GB stack at 3.3TB/s, and Samsung’s HBM4 announcement gives it 2,048 I/Os. NVIDIA’s Rubin GPU carries up to 288GB of HBM4, at 19.2TB/s in NVIDIA’s spec table.

DRAM and HBM: main memory, and memory built for bandwidth

HBM buys bandwidth, not speed

How many times better each memory is, on a log scale

Two rows on a log scale centered on parity, bars pointing toward the memory that does better. Bandwidth per processor: HBM 19.2TB/s, one Rubin GPU, DRAM 1.6TB/s, Venice (MRDIMM), so 12× HBM better. Access latency: HBM about 272ns, HBM2, DRAM 81ns, DDR4, so 3.4× DRAM better. The latency row compares HBM2 on an NVIDIA V100 with DDR4 on an Intel server, the closest measured pair in the sources. Below the chart, two sketches without values: DRAM on a module away from the processor, and HBM stacks beside the processor with a very wide interface.MeasureDRAM DOES BETTERHBM DOES BETTERBandwidth per processor12× HBMDRAM 1.6TB/s, Venice (MRDIMM)HBM 19.2TB/s, one Rubin GPUAccess latency3.4× DRAMDRAM 81ns, DDR4HBM about 272ns, HBM230×10×3×even3×10×30×How many times better, log scale01 DRAM ON A MODULEProcessorDRAM on a module02 HBM BESIDE THE PROCESSORProcessorstacks on the packageHBM does betterDRAM does better
Figure 3 · HBM moves 12 times the data of a DDR5 socket but takes longer to answer. Source: NVIDIA Rubin; AMD Venice via StorageReview; Jia et al. 2018 (HBM2 on V100); Izraelevitz et al. 2019 (DDR4).

Against one DDR5 socket, one Rubin GPU’s HBM moves 12 times as much data per second and holds up to 288GB per GPU, yet it is no faster to reach. Jia and colleagues measured an HBM2 access on a V100 at 375 GPU cycles when it was an L2 miss with a translation lookaside buffer (TLB) hit, about 272ns at the card’s 1,380MHz maximum graphics clock and about 3.4 times a CPU’s DRAM load. The two numbers come from a GPU and a CPU of different generations and never shared one system, but the order is clear. HBM is the memory for work that streams huge amounts of data, and its gain comes in bandwidth inside a fixed power budget and nothing in latency. Working Memory, Part 4 explains why the path is so wide.

Filling the gap between DRAM and flash

Between DRAM and NAND flash lies the widest gap in the hierarchy, at 81ns against 52µs, about 640 times. Two kinds of memory have tried to fill it. One adds more DRAM further away. Memory of the other kind uses a different cell that keeps its data with the power off.

Compute Express Link (CXL) attaches memory over the PCIe physical layer, with load and store access instead of block reads. Per the IEEE’s 2026 roadmap, CXL 1.0 to 2.0 sits on PCIe 5.0, at up to 64GB/s each way on a x16 link, and CXL 3.0 on PCIe 6.0, which doubles the lane rate to 64GT/s. Distance is the cost, and Microsoft’s Pond paper estimates that CXL adds 70 to 90ns over same-NUMA-node DRAM for a pool shared by 8 to 16 sockets, and more than 180ns for a pool shared across a rack. Sun and colleagues measured three real CXL memory devices and found load latency 35% to three times longer than DDR5 on the other socket, depending on the CXL controller.

Intel’s Optane persistent memory took the other route: a non-volatile memory on a module with the same physical and electrical interface as DDR4. Izraelevitz and colleagues measured it in 2019: 305ns for a random load against 81ns for DRAM on the same server, and 169ns for sequential loads. One module read at up to 6.6GB/s and wrote at 2.3GB/s, and modules came in 128GB, 256GB and 512GB.

Filling the gap between DRAM and flash

The memories in the gap sit next to DRAM, not halfway to flash

Access latency and bandwidth per device, log scales

Two log-scale strips. Latency: DRAM 81 nanoseconds on a random load; CXL memory about 151 to 171 nanoseconds, estimated from Pond’s 70 to 90 nanoseconds added over local DRAM; Optane DC persistent memory 305 nanoseconds on a random load; a Kioxia XG8 NAND SSD 52 microseconds on a 4KiB read at queue depth 1. Bandwidth: one Optane module reads at 6.6GB/s, the SSD at 7.1GB/s, one DDR5-4800 channel carries 38.4GB/s and a PCIe 5.0 x16 CXL link about 64GB/s each way.Access latency, log scale100ns1µs10µs100µs170 times furtherDRAM 81nsCXL 151 to 171ns (estimate)Optane 305nsNAND SSD 52µsBandwidth per device or link, log scale1GB/s10GB/s100GB/sOptane module 6.6GB/sSSD 7.1GB/sDDR5 channel 38.4GB/sCXL x16 64GB/sDRAMCXL memoryOptaneNAND SSD
Figure 4 · CXL memory and Optane land within four times DRAM’s latency, and a NAND SSD is still 170 times further out than Optane. Source: Izraelevitz et al. 2019; Pond (ASPLOS 2023); Sun et al. (MICRO 2023); CXL range estimated from Pond and Izraelevitz; SSD from Sean Webster’s own tests.

Both sit close to DRAM. Adding Pond’s estimate, made on a different platform, to the 81ns DRAM load puts CXL memory at about 151 to 171ns, and Optane sits under four times DRAM’s latency. Next to Optane, the NAND SSD is still 170 times further out. On bandwidth the order changes, and a CXL x16 link moves more than one DDR5 channel, while one Optane module reads at about the speed of the XG8 SSD.

Intel’s 10-Q for the quarter ended July 2, 2022 says it began winding down its Optane memory business that quarter, so Optane did not last. CXL is the one still growing, and it is mostly more DRAM reached over a different link. Beyond NAND, Part 2 covers phase-change memory and Optane, and Flash Foundations Part 1 covers CXL on the same bays as SSDs.

Flash, disk and tape: capacity priced by the gigabyte

All three bottom tiers keep data with the power off, and they are where most bytes live. They answer in microseconds, milliseconds and tens of seconds.

A NAND SSD reads a page of cells through a controller and a PCIe link. In CrystalDiskMark 8.0.4 on my test system, a Kioxia XG8 2TB answered a random 4KiB read at a queue depth (QD) of 1 in a median of 51.95µs over four runs and read sequentially at a median of 7.1GB/s over two runs. As of October 2026, the largest SSDs reach 245.76TB, in Kioxia’s LC9. A hard drive has to move its head and wait for the platter to turn. A WD Red Pro 20TB on the same system took a median of 4,215µs over four runs, about 81 times the SSD, and read at a median of 270MB/s over two runs. Seagate was sampling 36TB drives in 2025, and the IEEE’s 2026 roadmap reports a 40TB drive unveiled by Western Digital. By 2026 Seagate was delivering Mozaic 4+ drives of up to 44TB in volume to two hyperscale cloud providers, and Part 2 explains how those drives record.

Tape is the slowest to reach, and once a cartridge is loaded and positioned, it streams faster than a hard drive. Per the IEEE roadmap, Linear Tape-Open (LTO-10) cartridges are 30TB or 40TB native, drives stream at up to 400MB/s native, and access latencies run in the range of tens of seconds, because a robot has to load the cartridge and the drive has to wind to the data. Appuswamy and colleagues list a 65s access time for a small 2017 library.

Flash, disk and tape: capacity priced by the gigabyte

DRAM cost 200 times as much as a hard drive per gigabyte

US dollars per GB, log scale; one dated price set per strip

Two log-scale strips of US dollars per gigabyte. 2017 retail prices for whole devices: a 2TB hard drive 0.025 dollars, a 10-cartridge LTO-7 tape library with four drives 0.073 dollars at compressed capacity, a 1TB Intel 750 NVMe SSD 0.63, an 800GB SATA SSD 0.70, a 384GB Optane P4800X SSD 3.96 and a 16GB DRAM module 5.00. A bracket from the hard drive to DRAM marks about 200 times. 2026 media cost only, from the IRDS roadmap: tape under 5 dollars per terabyte, or 0.005 per gigabyte, and a hard drive over 10 dollars per terabyte, or 0.01 per gigabyte.2017 retail price of the whole device, USD per GB, log scale$0.001$0.01$0.10$1$10HDD $0.025NVMe $0.63, SATA $0.70Tape library $0.073 (compressed)Optane SSD $3.96, DRAM $5.002026 media cost only, per IRDS, USD per GB, log scale$0.001$0.01$0.10$1$10Tape under $0.005HDD over $0.01about 200 timesDRAMOptane SSDNAND SSDHard driveTape
Figure 5 · Tape media is the cheapest per GB, but a small 2017 library cost more per GB than a hard drive, and large libraries spread each drive over 50 to 100 cartridges. Source: Appuswamy, Borovica-Gajic, Graefe and Ailamaki (2017 prices); IEEE IRDS 2026 Mass Data Storage.

On one set of 2017 prices, from Appuswamy, Borovica-Gajic, Graefe and Ailamaki, DRAM cost 5.00 USD per gigabyte and a 2TB hard drive 0.025 USD, about 200 times less. NAND SSDs sat in between at 0.63 to 0.70 USD, and an Optane SSD at 3.96 USD, close to DRAM. A small 2017 tape library with four drives and 10 cartridges came to 0.073 USD per gigabyte compressed and 0.147 native, more than the hard drive either way, because four drives and a robot were spread over only 10 cartridges. Past a small library, the IEEE’s 2026 roadmap puts tape media under 5 USD per terabyte, against over 10 USD for hard drive media, and notes that a library spreads one drive over 50 to 100 cartridges.

Prices move. As of October 2026, DRAMeXchange’s spot average for a 16Gb DDR5 chip was 59.43 USD on October 12, about 29.7 USD per gigabyte, and a 16GB DDR5 module averaged 239 USD on October 5, about 14.9 USD per gigabyte. Those are 2026 shortage prices, three to six times the 2017 figure. In that roadmap, SSD and hard drive cost per gigabyte are not expected to cross, because hard drive areal density keeps rising too.

What the latency chart leaves out

Latency and capacity are only two of the axes. Each memory also has a bandwidth and an energy cost for every bit it moves, and those do not follow the same order. HBM is DRAM, but one GPU’s stacks move more than ten times the data of a server socket’s DDR5. A hard drive is slow to reach but still holds a byte for less than any chip.

What the latency chart leaves out

Each memory wins on a different axis

Example figures for each memory, log scales

Three horizontal log-scale strips, one per axis, with one dot per memory. Access time: DRAM 80 nanoseconds as a system access, HBM2 on an NVIDIA V100 about 272 nanoseconds, the Kioxia XG8 SSD 52 microseconds and a WD Red Pro hard drive 4.2 milliseconds on a 4KiB read at queue depth 1; the cache is listed as 4 to 5 cycles. Bandwidth: hard drive 270MB/s, SSD 7.1GB/s, DRAM 1.6TB/s per server socket with MRDIMMs, HBM 19.2TB/s per GPU; the cache has no comparable figure. Capacity: cache 96MB of L3, a 32GB DRAM module, HBM 288GB per GPU, a WD Red Pro hard drive 20TB, SSDs 245TB. Cost per gigabyte is in Figure 5.Access time, log scalecache: 4 to 5 cycles10ns1µs100µs10msDRAM 80nsHBM2 272nsSSD 52µsHDD 4.2msBandwidth, log scalecache: no comparable figure100MB/s10GB/s1TB/s100TB/sHDD 270MB/sSSD 7.1GB/sDRAM 1.6TB/sHBM 19.2TB/sCapacity of one part, log scaleDRAM per module, HBM per GPU10MB1GB100GB10TB1PBCache 96MBDRAM 32GB (one module)HBM 288GBHDD 20TBSSD 245TBCacheDRAMHBMSSDHDD
Figure 6 · Speed falls and capacity rises from the cache down to the drives, but the order is not the same on any two axes. Source: AMD, IEEE IRDS, NVIDIA, Jia et al. 2018, Izraelevitz et al. 2019, SSD and HDD from Sean Webster’s own tests.

Read the figure one strip at a time. On bandwidth, HBM leads and the hard drive trails by almost five orders of magnitude. On capacity the order flips, and the largest SSDs hold more than a million times what the cache holds. Cost per gigabyte (Figure 5) follows capacity and ignores speed.

Moving a bit costs energy, and the cost depends on how far the bit travels. O’Connor and colleagues at NVIDIA put GDDR5 at about 14.0pJ per bit and HBM2 at about 3.97pJ per bit, mostly data movement from the row buffer to the I/O pins plus activation energy. Sun and colleagues give PCIe 4.0 at about 6pJ per bit against 22pJ for DDR4, at the price of about 40ns of link latency against under 1ns. A serial link spends less energy per bit and more time, which is the trade CXL makes.

An SSD pays far more per bit, because the NAND array, the controller and the link all draw power. On my test system, the Kioxia XG8 took 36.6s at an average 3.99W in a 50GB copy test from and to the same drive, about 146J, or roughly 340pJ for every bit copied, each bit read once and written once. That figure is whole-drive power in a whole-drive test, the 1.6W idle draw included, so it is not an access energy and not a like-for-like match for HBM2’s. Still, 340pJ is about 86 times HBM2’s 3.97pJ and about 57 times PCIe 4.0’s 6pJ, and it buys data that stays put with the power off.

The five-minute rule and where data lives

If DRAM costs hundreds of times as much as a hard drive per gigabyte, data should sit in DRAM only when it is read often enough to pay for the space. Jim Gray and Franco Putzolu turned that into a rule in 1987. Their five-minute rule compares the cost of holding a page in memory against the cost of the disk reads it would take to fetch that page again.

It gives a break-even interval. A page read again within the interval is cheaper to keep in the faster memory. Appuswamy’s team writes it as two ratios multiplied together. One ratio is the pages per megabyte of DRAM divided by the reads per second one disk can serve, and the other is the price of a disk divided by the price of a megabyte of DRAM. Hardware sets the first ratio, and the market sets the second. With Tandem prices in 1987 the interval came to 400s, which Gray and Putzolu rounded down to five minutes.

The five-minute rule and where data lives

Disks pushed the DRAM interval up, and flash pulled it down

Break-even interval for caching a page one tier up, by year of the prices used

A chart of break-even intervals on a log time scale from 10 seconds to two days, against the year of the prices used, 1980 to 2020. A dashed horizontal line marks five minutes. DRAM in front of a hard disk starts at 400 seconds in 1987 with 1KB pages, then 9 minutes in 1997, 1.5 hours in 2007 and 4 hours in 2017, all with 4KB pages. DRAM in front of a SATA flash SSD falls from 15 minutes in 2007 to 7 minutes in 2017. DRAM in front of a PCIe NAND SSD is 41 seconds in 2017. An SSD in front of a hard disk rises from 2.25 hours in 2007 to one day in 2017.Break-even interval, log scale10s1min10min1h10h1 day19801990200020102020Year of the prices used5 min400s9min1.5hDRAM/HDD 4h2.25hSSD/HDD 24h15minDRAM/SATA 7minDRAM/PCIe 41sDRAM/HDDSSD/HDDDRAM/SATA SSDDRAM/PCIe SSDFive minutes
Figure 7 · Re-read a page more often than the interval and it is cheaper to keep it in the faster memory. 1987 uses 1KB pages and the later years 4KB pages. Source: Gray and Putzolu 1987; Graefe 2008; Appuswamy et al. (ADMS 2017).

Goetz Graefe redid the sum with 2007 prices and 4KB pages. A megabyte of RAM held 256 pages and cost about 0.047 USD. A hard disk served 83 reads per second for 80 USD, so the interval was 256 / 83 × 80 / 0.047, about 5,248s or 90 minutes. A flash disk served 6,200 reads per second for 999 USD, and the same sum gave 876s, about 15 minutes.

With 2017 prices the DRAM to hard drive interval had grown to four hours, because DRAM got much cheaper per megabyte while disk reads per second improved only from 83 to 200 a second in a decade. From DRAM to SSD, the interval went the other way, at 7 minutes for a SATA SSD and 41s for a PCIe NAND SSD, because those drives serve so many reads per second. The interval between an SSD and a hard drive grew to a full day. Tape sits beyond all of them, and Appuswamy’s DRAM to tape interval is over 300 years for a 4KB page, so tape holds data that is scanned in bulk and never read a page at a time.

On 2017 prices, those intervals draw the modern hierarchy. For 4KB pages, data read more often than about once a minute earns a place in DRAM in front of a fast SSD. Data read less often than that, but more than once a day, belongs on flash. Data read less than once a day is cheapest on a hard drive, and data kept for years and read in bulk belongs on tape. Dearer DRAM in the 2026 shortage shortens the DRAM intervals, because the formula divides by the price of DRAM. I haven’t recomputed the rule with 2026 prices, because that needs a drive’s rated random reads and its price from the same date. Part 7 of the series works the sum through for flash that answers in microseconds, taking one input at a time.

How data moves toward the processor

A program that reads a file does not reach into the SSD. Data moves up one tier at a time, and each tier keeps a copy. Along the way, the unit of transfer changes: blocks and pages from the drive, 4KB pages in memory, 64-byte lines in the caches, and single registers in the core.

First the application asks the operating system for the file. If the data is not already in memory, the NVMe driver places a read command in a submission queue in host DRAM and rings the drive’s doorbell. Next, the drive reads the flash and copies the data into host DRAM by direct memory access (DMA) over PCIe, without the CPU moving each byte. Flash Foundations Part 1 covers the NVMe queues and the link.

How data moves toward the processor

A file read stops in host DRAM, and a GPU read can skip it

The same read through the kernel, and through GPUDirect Storage

Two lanes of boxes from left to right. The top lane is a file read through the operating system: NAND flash on the SSD, the SSD controller, which reads the NAND and runs the DMA, then a DMA transfer over PCIe into the page cache in host DRAM, then the CPU caches, L2 and L1 (on Zen 5 the L3 fills with lines the L2 evicts), then the core. The page cache box is highlighted because the kernel keeps the data there for the next read. Under the lane, the unit moved at each step: blocks and pages from the drive, 4KB pages in the page cache, 64-byte lines in the CPU caches, registers in the core. The bottom lane is GPUDirect Storage: NAND flash and the SSD controller again, then a DMA transfer straight into GPU memory, a wide box under the last three columns, with a note that it skips the bounce buffer on the CPU side.01 FILE READ THROUGH THE KERNELNAND flashon the SSDControllerruns the DMAPage cachehost DRAMCPU cachesL2, L1CoreregistersDMA over PCIeUNIT MOVED AT EACH STEPblocks and pages4KB pages64-byte linesregisters02 GPUDIRECT STORAGENAND flashon the SSDControllerruns the DMAGPU memoryno bounce buffer on the CPU sideFlash, controller, cachesKernel keeps a copyDMA over PCIe
Figure 8 · Each memory on the way up keeps a copy, so the next read of the same data stops higher. Source: Linux kernel memory concepts; NVIDIA GPUDirect Storage overview.

On Linux the data goes into the page cache, the part of DRAM where the kernel keeps file data. While it stays cached, the next read does not touch the drive. Writes go into the page cache too and reach the drive later. When programs need the memory the kernel reclaims page cache, so the cache grows into whatever DRAM is free. The CPU pulls the 64-byte lines it needs from DRAM into L2 and L1, and the core loads them into registers. On Zen 5 the L3 fills with lines the L2 evicts, so a line reaches it only on the way out.

Some paths skip a tier. NVIDIA’s GPUDirect Storage sets up a direct DMA path between the drive and GPU memory, so data for a GPU no longer stops in a bounce buffer on the CPU side. A drive without its own DRAM can borrow a slice of host memory for its mapping table through the host memory buffer covered in Flash Foundations Part 6. CXL memory takes loads and stores like local DRAM, moving a cache line at a time, with no block read at all. Every copy on the way up is a cache. A read that hits a higher tier never reaches a lower one, and that is why a slow memory at the bottom can sit under a fast system.

Tiers inside an SSD: cache, fold, then TLC

An SSD is a small hierarchy of its own. Its controller holds the mapping table in DRAM, or in the host’s memory on a drive without DRAM. Below that, a triple-level cell (TLC) drive keeps part of its flash in single-level cell (SLC) mode with one bit per cell instead of three, as a fast landing zone for writes. An SLC cell needs only two charge levels, so it programs in a few coarse steps. A TLC cell needs eight, each placed with many small program and verify steps. Flash Foundations Part 3 shows the timing numbers, and Part 9 covers the cache.

Micron’s Dynamic Write Acceleration white paper describes how such a cache behaves on a long write. On a freshly erased 128GB M600, one sequential fill ran in three regions: fast while writes landed in SLC, slower while the drive wrote directly to the dense mode, and slowest while it converted SLC data into the dense mode with the host still writing. Flash Foundations Part 6 covers that folding step.

Tiers inside an SSD: cache, fold, then TLC

A long write steps through three speeds on an empty drive

Kioxia XG8 2TB, 1MiB sequential writes for 75 minutes, averaged per 20 gigabytes written

A line chart of write speed in MB/s against the total gigabytes written, from 0 to 10,000, for an empty Kioxia XG8 2TB under continuous 1MiB sequential writes. Speed holds near 6,035MB/s for the first 163GB, while writes land in the SLC cache. It then falls to about 1,738MB/s and stays there until about 1,700GB, a phase consistent with the drive moving cached data into TLC alongside new writes. After that it rises to about 2,204MB/s and holds to the end. From the second pass over the drive on, a shallow dip arrives about every 275GB.Write speed, MB/s01,0002,0003,0004,0005,0006,0007,00002,0004,0006,0008,00010,000Data written so far, GB163GB1,700GBSLC cache6,035MB/sLikely migrating1,738MB/sLikely direct to TLC2,204MB/sWrite speed, averaged per 20 gigabytesPhase change
Figure 9 · SLC cache, then a slower phase consistent with migration, then a faster steady phase with periodic dips. Source: Sean Webster’s own test data.

With Iometer I wrote 1MiB blocks to an empty Kioxia XG8 2TB without stopping for 4,529s, about 75 minutes, in one run, and logged the speed every second. For the first 27s it wrote at a median of 6,035MB/s, about 163GB into the SLC cache. Then it fell to a median of 1,738MB/s until about 1,700GB had been written, and after that rose to a median of 2,204MB/s to the end, 9,622GB in total. Micron’s third region matches the middle step. My reading is that the drive keeps borrowing free blocks as SLC and folding them into TLC while the host writes, until the free blocks run out at about 1,700GB, short of the drive’s 2,048GB. After that, writes go straight to TLC and the speed rises. I have no Kioxia document on the XG8’s cache policy, so this is my reading of the log and makes no claim about the firmware.

Even the steady phase isn’t perfectly flat. Once the writes wrap and start overwriting the speed dips about 7% for 23s every 275GB written, a pattern that resets at each wrap and so points at housekeeping the drive schedules by data written. The run’s saved log has no temperature readings. The XG8 log shows the three steps of SLC, folding and TLC, and Micron’s M600 note describes them on another drive, which is why one SSD can show three different write speeds in one test.

Why SI stretches the hierarchy

SI models made the gap between compute and memory bandwidth hard to ignore. Gholami and colleagues measured it over 20 years. Peak server compute grew about 60,000 times, or 3.0 times every two years. DRAM bandwidth grew about 100 times, 1.6 times every two years, and interconnect bandwidth about 30 times, 1.4 times every two years. They call the result the memory wall: a processor that can do more math than its memory can feed.

Why SI stretches the hierarchy

Compute grew far faster than the memory that feeds it

Growth from a common start, at the rates per two years measured over 20 years

A chart of growth on a log scale from 1 to 100,000 against years from 0 to 20, with three straight lines that start together at 1. Peak server compute grows 3.0 times every 2 years and reaches about 60,000 times after 20 years. DRAM bandwidth grows 1.6 times every 2 years and reaches about 100 times. Interconnect bandwidth grows 1.4 times every 2 years and reaches about 30 times. The shaded wedge between the compute line and the DRAM bandwidth line is the memory wall. The lines are the published growth rates drawn out, not individual measurements.Growth since the start, log scale1x10x100x1,000x10,000x100,000xStartYear 4Year 8Year 12Year 16Year 20Years from the startthe memory wallCompute 3.0xabout 60,000xDRAM bandwidth 1.6xabout 100xInterconnect 1.4xabout 30xComputeDRAM bandwidthInterconnectThe memory wall
Figure 10 · The gap between the top curve and the bottom two is the memory wall. Each curve is a published growth rate drawn out, not a measurement. Source: Gholami et al., AI and Memory Wall (IEEE Micro 2024).

From one starting point the curves split within a few years. After 20 years, compute has grown about 600 times as much as DRAM bandwidth, so every byte the memory delivers has to feed far more math. Across the industry, the answer is the memories this guide has walked through: HBM beside the processor for bandwidth, CXL for more DRAM behind it, and SSDs for everything that does not fit. Memory and Storage for SI, Part 2 follows flash moving up beside the GPU as High Bandwidth Flash, and The Memory Cycle shows what that demand does to memory prices.

As prices and parts change the memories keep their order, but the break-even lines between them move. Memory and Storage for SI, Part 8 places each memory family by the job it does, The memory map is the hierarchy with a first look at each family, and Flash Foundations follows flash from the cell to the drive.

KEEP GOING / NEXT CHAPTERContinue to Part 2

Sources

Primary is the original paper, standard or datasheet. Secondary is a review, a vendor summary or a news report. Measured is my own test data.

Show all 32 sources, 26 primary