4.1.14 · D2Memory Technologies

Visual walkthrough — Memory bandwidth and latency metrics

1,953 words9 min readBack to topic

We assume you know nothing yet. Let's earn each piece.


Step 1 — One wire carries one bit

WHAT. The smallest unit of the whole story is a single wire — a metal line between the memory chip and the CPU. At any instant it holds one bit: a voltage that is either "high" (call it ) or "low" (call it ).

WHY start here. Everything else — bytes, buses, bandwidth — is just many wires and many instants stacked up. If we understand one wire in one instant, we can multiply our way to the full formula and never lose track of a factor.

PICTURE. Below, the blue line is the wire. The yellow dot is the voltage level right now. Flip it high or low and you have sent one bit.

Figure — Memory bandwidth and latency metrics

Step 2 — Eight wires side by side make one byte; bytes make the bus

WHAT. Put wires next to each other and let them all flip at the same instant. Together they carry bits one byte. A real memory bus has many such wires; we bundle them into bytes of width.

WHY. The CPU rarely wants a lone bit — it wants a chunk. Widening the road means more data crosses per instant without needing more time. This is the first place a number multiplies our bandwidth, so we name it .

PICTURE. Each blue line is a wire; a group of is bracketed as one byte. The whole stack is the bus width (here bytes wires — a typical single channel).

Figure — Memory bandwidth and latency metrics

Here is doing one job: telling us how fat each single transfer is. It has no time in it yet — that comes next.


Step 3 — Time enters: the clock ticks times a second

WHAT. The bus doesn't send data whenever it likes. A clock — a voltage that rises and falls like a heartbeat — paces it. The clock repeats times per second. is the frequency, measured in hertz ( ticks per second).

WHY this tool, and why now. Bandwidth is a rate — data per second. A rate needs a clock to count "per second" against. Width alone () told us how much per transfer; frequency tells us how often a transfer happens. Multiplying them is what turns a static width into a flowing rate.

PICTURE. The yellow wave is the clock. One full up-and-down is one cycle; its length in time is the period . The green dots mark the rising edges — one data transfer fires on each in plain (single-data-rate) memory.

Figure — Memory bandwidth and latency metrics

So far, single-data-rate bandwidth would be : fat road how often it fires.


Step 4 — Double data rate: use both edges of the clock

WHAT. Modern DDR ("Double Data Rate") memory sends data on the rising edge AND the falling edge of each clock cycle. Two transfers per cycle instead of one.

WHY the factor of 2. A clock cycle has exactly two edges. Wasting the falling edge is wasting half the clock. By firing on both, the effective transfer rate becomes without raising the clock frequency (which is hard and hot to do). That is precisely where the mysterious in the parent formula is born.

PICTURE. Same yellow clock, but now green dots sit on both the rising and falling edges. Count them in one cycle: two. Two data words leave per cycle.

Figure — Memory bandwidth and latency metrics

Step 5 — Parallel channels: several buses at once

WHAT. A memory channel is a whole independent bus (its own wires, its own clock behaviour). Motherboards run of them side by side, all moving data at the same time.

WHY they add (multiply). Channels are physically separate roads. They do not share wires, so their throughputs simply stack: channels move times the data every instant. This is the third and last multiplier.

PICTURE. Two blue buses (channel 0, channel 1), each with its own clock and its own byte-stack, both flowing simultaneously into the CPU. Nothing waits on anything.

Figure — Memory bandwidth and latency metrics

Now assemble the three pieces we earned — width, doubled rate, channels:


Step 6 — Latency is a different road: rebuild it from the clock's period

WHAT. Latency is time to the first byte, not a rate. RAM quotes it as CL (CAS Latency) — a count of clock cycles you must wait after asking for a column of data. To compare kits fairly we turn cycles into nanoseconds.

WHY a new derivation. Bandwidth counted "how many transfers per second". Latency asks "how long is the wait itself". Same clock, opposite question — so we use the period (seconds per cycle), not the rate. Multiply the wait-count by the length of one wait.

PICTURE. A timeline of clock cycles. The red bracket spans CL cycles — the stall before the first data word (green) arrives. Each cycle is seconds long.

Figure — Memory bandwidth and latency metrics

Step 7 — Edge and degenerate cases (never get surprised)

WHAT / WHY / PICTURE. Let's push every knob to its limit so no scenario ambushes you.

  • (single channel). Bandwidth halves versus dual; the factor is just . Latency is unchanged — a single request still waits CL cycles.
  • more channels. Bandwidth grows linearly. Latency stays flat — it is a per-request physical delay (see DRAM organization row buffer), independent of how many roads exist.
  • very high. Bandwidth rises and each cycle shortens. But CL usually rises too (the physical array didn't get faster), so barely moves — this is the CPU memory wall.
  • CL (degenerate). : impossible physically, but the formula correctly says "no wait". It confirms latency is purely the cycle-count times cycle-length.
  • Idle bus (Little's Law limit). If too few requests are in flight, the road sits empty and you never reach .

The last point is the bridge between the two roads. To keep a bandwidth busy across a latency , you must have this many bytes already in flight:

PICTURE. Left: bandwidth grows step-by-step as increases, while the latency line stays perfectly flat. Right: the Little's Law rectangle — area — is the amount of data that must be en route.

Figure — Memory bandwidth and latency metrics

The one-picture summary

Everything above compressed: width doubled rate channels builds the bandwidth road (green), while CL period builds the separate latency road (red). They share only the clock — and stay orthogonal.

Figure — Memory bandwidth and latency metrics
Recall Feynman retelling — the whole walkthrough in plain words

Start with one wire carrying one bit. Lay side by side and they carry a byte in one shot; a whole bundle of them is the width — how fat the road is. Now add a clock ticking times a second so we can say "per second". DDR memory is clever: it fires on both the up and the down of every tick, so the real transfer rate is — that's the famous . Bolt several independent roads together and you get channels, multiplying the flow. Stack those three multipliers and you have bytes per second.

Latency is a different question on the same clock. Instead of "how many per second", it asks "how long is the wait". Take one cycle's length ( seconds), multiply by the number of cycles you must stall (CL), and you get the real wait in nanoseconds. That's why a slower-labelled kit with fewer wait-cycles can respond just as fast, and why adding channels helps bandwidth but never shortens the wait. Keep enough data in flight (Little's Law: bytes) or the fat road sits empty.


Connections

  • DRAM organization row buffer — the physical source of the CL wait in Step 6.
  • Cache hierarchy — exists to hide the latency road of Step 6–7.
  • DDR SDRAM generations — each generation grows (Step 4), not CL.
  • Littles Law — the rectangle of Step 7.
  • Memory channels and interleaving — the multiplier of Step 5.
  • CPU memory wall — why bandwidth (Steps 2–5) outruns latency (Step 6).