4.1.6 · D2Memory Technologies

Visual walkthrough — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

1,877 words9 min readBack to topic

We will only use two ideas from outside: a clock (a signal that ticks) and a byte (8 bits). Everything else is built here.


Step 1 — The one slow thing: a capacitor cell

WHAT: we look at how long one read takes. WHY: because this single number is the villain of the entire story — if it were small, no DDR trickery would be needed. PICTURE:

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

The bucket fills the wire slowly. The time from "open switch" to "voltage is readable" is the column access time, and it has sat near

  • — the delay you cannot avoid, set by physics of charge, not by cleverness.
  • — nanoseconds, billionths of a second. means about million reads per second from one cell path.

Step 2 — Turn "time per read" into a core clock

WHAT: we convert that delay into a clock frequency the array can sustain. WHY: so we can compare it with the fast bus clock and see the gap we must bridge. PICTURE:

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

A clock is a square wave: up, down, up, down. If one tick must be at least long, the fastest the core can tick is:

In real chips the array is clocked around MHz once many cells work together.

  • — how often the slow array can produce a fresh chunk.
  • — "one read per seconds" flipped into "reads per second". We invert because frequency is the reciprocal of period — a small period means a high frequency.

Hold this: MHz. It will never change for the rest of the page.


Step 3 — Why one wire per read is hopelessly slow

WHAT: we imagine feeding the CPU straight from the core, one bit at a time. WHY: to expose exactly how much faster the bus wants to run than the core can supply. PICTURE:

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

The CPU's bus wants to run at, say, MHz. The core delivers at MHz. So the bus sits starving three ticks out of four — the fast conveyor belt has nothing to carry.

  • — how fast the wires can toggle.
  • The ratio means: to keep the belt full, each core read must hand over 4 things at once. That "4 at once" is the seed of prefetch.

Step 4 — Prefetch: fill many buckets in one slow trip

WHAT: widen the read inside the chip so one slow trip yields several bits. WHY: because we can't speed the trip up, but we can make each trip carry more — the bucket-brigade trick. PICTURE:

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

One slow read grabs bits at once (top). A small fast shift register (bottom) then spits them out at bus speed. The core ticked once; the bus ticked times.

  • — the prefetch width: across the generations.
  • The register is what decouples slow-inside from fast-outside: it absorbs a big gulp, releases a fast stream.

Step 5 — The "D" in DDR: use the falling edge too

WHAT: send data on both the rising and falling edge of the bus clock. WHY: SDR (single data rate) wastes half the clock — the falling edge carries nothing. Using it doubles output for zero extra clock speed. PICTURE:

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

Top = SDR: a bit only on the ▲ up-edges. Bottom = DDR: a bit on ▲ and ▼. Same clock, twice the bits.

  • The clock frequency is identical in both rows.
  • We double throughput by counting both edges — that's why the metric splits into two names. See below.

Step 6 — Assemble the master formula

WHAT: multiply the three independent multipliers we just built. WHY: each one answers a different question, so they stack cleanly. PICTURE:

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

Three gears in a chain — core, prefetch, edges — turning the slow MHz into a fast data rate:

  • — the frozen villain, MHz.
  • — how many bits one slow read yields (Step 4).
  • — 1 for SDR, 2 for DDR (Step 5).

Then bandwidth just tacks on the bus width :

  • — bytes per transfer ( bits ÷ 8 bits/byte). We divide by 8 to convert bits to bytes, the unit modules are stamped in. See Memory bandwidth vs latency.

Check DDR3-1600 (Step-by-step reverse): core × prefetch × edges... wait — DDR3 also runs the I/O clock at 4× core, then doubles again on both edges. So MHz I/O clock, edges MT/s. ✓ The slow core is still MHz.


Step 7 — Edge case: why prefetch stops at 8n

WHAT: we test what happens if we keep doubling prefetch forever. WHY: the pattern "double prefetch → double speed" breaks, and a good derivation must show where its own rule dies. PICTURE:

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

Prefetch forces a minimum burst of bits — you always fetch that many even if the CPU wanted fewer. At , the burst overshoots typical cache-line needs: the extra bits are thrown away → wasted bandwidth (grey bits in the figure).

  • When fetched > needed, the difference is pure waste.
  • So DDR4 froze prefetch at 8n and instead added bank groups; DDR5 split the channel into two 32-bit subchannels, each 8n → effectively 16n without a 16-bit-wide burst. Evolution shifted from bigger gulps to more independent gulps — concurrency, not burst size.

Step 8 — Degenerate case: SDR falls out for free

WHAT: set edges and prefetch in the master formula. WHY: a formula you trust must reproduce the simplest case with no special handling. PICTURE:

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

At PC100: MHz, bits:

Exactly the parent's "PC100 = 800 MB/s". The gears simply have ratio 1 — the machine still works, it just isn't geared up yet.


The one-picture summary

Figure — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution

One slow well ( MHz core) → a wide prefetch scoop (fill buckets at once) → a fast double-edge belt (drop a bucket on ▲ and ▼) → the CPU. Each generation only enlarges the scoop and speeds the belt; the well never gets faster.

Recall Feynman retelling — say it to a 12-year-old

There's a slow well and a fast conveyor belt. You can't make the well fill faster — that's the nanosecond capacitor, frozen for 25 years. So two tricks: (1) every time you go to the well, scoop up many buckets at once (that's prefetch — 1, then 2, 4, 8, 16 buckets). (2) Put a bucket on the belt every time the belt-arm goes up AND down, not just up (that's the double in DDR). Multiply: buckets-per-trip × edges-per-tick × how-often-the-well-runs = your speed. Every new DDR just scoops more or runs the belt faster — until the scoop got too big () and you'd carry buckets nobody ordered, so instead they dug more independent wells (bank groups, subchannels). Same water, cleverer plumbing.

Recall Quick self-test

Master formula in words? ::: data rate = core clock × prefetch × edges per cycle DDR3-1600 core clock? ::: 200 MHz (÷2 edges = 800 I/O, ÷4 prefetch-clock = 200) Why did prefetch freeze at 8n? ::: bigger bursts fetch data nobody needs → wasted bandwidth SDR from the master formula? ::: prefetch=1, edges=1 → data rate = core clock


Connections