Exercises — SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution
This is the practice deck for the parent topic. Every problem states its level (L1 → L5). Solutions are hidden inside collapsible callouts so you can test yourself first. After each level there is a trap callout — the wrong turn most people take, why it feels right, and how to fix it.
Before you start, pin down the two symbols this whole page runs on. If you have not seen them written out plainly, read this first:
Keep Memory bandwidth vs latency in mind: everything below computes peak bandwidth, which is a ceiling, not the speed you actually feel.
Level 1 — Recognition
(Can you read a label and name what each number means?)
L1.1
DDR4-3200 is stamped on a module. State (a) its data rate in MT/s, and (b) its I/O clock in MHz.
Recall Solution L1.1
(a) The name is the data rate. So MT/s.
WHY: by convention the number after "DDR
L1.2
Match each generation to its prefetch width: SDR, DDR, DDR2, DDR3.
Recall Solution L1.2
- SDR
- DDR
- DDR2
- DDR3
WHY the doubling: each generation grabs twice as many bits in parallel from the slow array per read, so the faster interface never runs out of bits to stream. The mnemonic: "Single, Double, Double-Double, Triple-Eight."
L1.3
A stick reads PC3-12800. What generation is it, and what is the "12800"?
Recall Solution L1.3
- "PC3" DDR3.
- "12800" is the peak bandwidth in MB/s GB/s. WHY two names for one stick? "DDR3-1600" names the transfers (1600 MT/s); "PC3-12800" names the bandwidth (1600 × 8 bytes = 12800 MB/s). They describe the same stick from two angles.
Level 2 — Application
(Plug into the three tools.)
L2.1
DDR3-1600, 64-bit channel. Find peak bandwidth in GB/s.
Recall Solution L2.1
- transfers/sec (the name is the data rate).
- bytes per transfer . WHY divide by 8: the bus carries bits at once, but bandwidth is quoted in bytes, and bits byte.
L2.2
DDR5-6400, 64-bit module. Find peak bandwidth in GB/s.
Recall Solution L2.2
WHY the same formula works: peak bandwidth only cares about how many transfers and how wide. The subchannel split inside DDR5 does not change the peak — it changes the effective rate (see L3.2).
L2.3
A single DDR4-2400 chip is only 8 bits wide (an "x8" chip). What is one chip's peak bandwidth?
Recall Solution L2.3
WHY this matters: a 64-bit module is built from eight x8 chips side by side. GB/s — matching a full 64-bit DDR4-2400 module. See the figure below.

Level 3 — Analysis
(Peel back the interface to reveal the slow core, and reason about parallelism.)
L3.1
Show that DDR3-1600 and old plain DDR-400 have the same core clock (~200 MHz).
Recall Solution L3.1
DDR3-1600:
- Undo double-edge: MHz I/O clock.
- DDR3 I/O runs at core (prefetch ): MHz core.
DDR-400:
- Undo double-edge: MHz I/O clock.
- DDR I/O runs at core (prefetch ): MHz core.
Both cores MHz. This is the punchline of the whole topic: the slow capacitor array (~15 ns, see DRAM cell structure and refresh) never sped up. Every gain lives in the interface.

L3.2
DDR4-3200 vs DDR5-3200, both 64-bit modules, both 3200 MT/s. Their peak bandwidths are equal — prove it, then explain why DDR5 is still faster in real workloads.
Recall Solution L3.2
Peak (identical): Why DDR5 still wins: the DDR4 module is one -bit channel — one access at a time uses the whole width. The DDR5 module is two independent 32-bit subchannels. Two smaller, independent requests can be in flight at once, so while one subchannel waits on a busy bank the other keeps delivering. Same peak, higher effective bandwidth. This is Bank groups and interleaving taken to the channel level. What it looks like: one wide lane vs. two narrower lanes — same total width of asphalt, but two cars can move independently instead of queuing behind one.
L3.3
A DDR3-1600 read has a fixed burst length of 8 (BL8 — it always delivers transfers per read). How many bytes does one burst deliver on a 64-bit channel, and why can't you ask for fewer?
Recall Solution L3.3
- Bytes per burst bytes. WHY it is fixed at 8: the prefetch is — the array hands the interface chunks in parallel at once, so the interface is committed to streaming all out. You physically cannot stop after . Why 64 bytes is convenient: that is exactly one CPU cache line (see Cache and the memory hierarchy). The burst was designed to fill one cache line per read — no waste.
Level 4 — Synthesis
(Combine several ideas or work a formula backwards.)
L4.1
You measure a module's peak bandwidth as 21.3 GB/s on a 64-bit channel. Recover (a) its data rate in MT/s, and (b) its likely generation.
Recall Solution L4.1
(a) Reverse the bandwidth formula: (b) MT/s falls in the DDR4 range (1600–3200). It is DDR4-2666 (a very common speed). Its label would read PC4-21300. WHY work backwards: the same three tools run in either direction — bandwidth ↔ transfers ↔ clock are all one chain of multiplications you can invert.
L4.2
A DDR5-6400 module is two 32-bit subchannels. (a) What is each subchannel's data rate and bandwidth? (b) Show the two together equal the module's peak from L2.2.
Recall Solution L4.2
(a) Each subchannel still runs at the full data rate MT/s (the split is in width, not speed), but is only bits wide: (b) Two subchannels: GB/s — exactly the L2.2 module peak. ✓ WHY it adds up: splitting bits into bits keeps the total width , so total peak is unchanged; the win is that the two halves are independent (concurrency, not raw peak).
L4.3
Design check: prefetch doubled SDR→DDR3 (1n→2n→4n→8n) but froze at 8n. If DDR4 had used 16n prefetch on a 64-bit channel at BL16, how many bytes would each minimum read fetch, and why is that a problem?
Recall Solution L4.3
- transfers bytes bytes per forced burst.
- A CPU cache line is bytes. A -byte forced burst means every read drags in a second cache line you may not need — half the bandwidth can be wasted on random-access patterns. This is exactly why prefetch stopped at 8n. Instead of bigger bursts, DDR4 added bank groups and DDR5 added subchannels — both increase parallelism without inflating the minimum burst. See Bank groups and interleaving.
Level 5 — Mastery
(Full multi-step reasoning with a twist.)
L5.1
A DRAM array has a column access time of ns. (a) What core clock period does that imply, and what core frequency? (b) A DDR4 chip runs its I/O at core — what I/O clock and data rate does that give? (c) Comment: does the ns limit the bandwidth or the latency?
Recall Solution L5.1
(a) A ns access ≈ one core cycle, so period ns (Real cores pipeline sub-operations to reach ~200 MHz; ns is the full column-access latency, not one pipeline stage — that is why measured core clocks sit near MHz while access latency stays ~ ns.) (b) At core (using ~ MHz effective core): I/O MHz, data rate MT/s — a plausible DDR4 low bin. (c) The ns limits latency (how long until the first byte arrives), not bandwidth. Bandwidth is fixed by the streaming interface once data starts flowing. This is the core message of Memory bandwidth vs latency and CAS latency and memory timings: prefetch and DDR raise bandwidth, but first-access latency has barely moved in decades.
L5.2
Two systems, both 128 GB/s of memory bandwidth: System A = one DDR5 channel at very high MT/s; System B = two DDR4 channels at lower MT/s. Same peak. Give one workload where B wins and one where A wins, with reasoning.
Recall Solution L5.2
- B (two DDR4 channels) wins when many independent threads each issue small random requests: two fully independent physical channels means two requests truly proceed at once with separate command buses — maximum concurrency, hiding the ~15 ns latency of one busy bank.
- A (one fast DDR5 channel) wins on long sequential streaming from few threads: the higher raw MT/s streams a big contiguous block faster, and DDR5's built-in two subchannels already give it modest concurrency. WHY this is "mastery": peak bandwidth (a single number) hides the real question — how many independent requests can be in flight? Modern DDR evolution optimizes concurrency, not just the peak. That is the whole L3→L5 arc of this topic.
Wrap-up recall
Recall One-line answers to the whole set
- DDR4-3200 clock? ::: 1600 MHz (data rate ÷ 2).
- DDR3-1600, 64-bit BW? ::: 12.8 GB/s.
- DDR5-6400, 64-bit BW? ::: 51.2 GB/s.
- Core clock of DDR3-1600? ::: ~200 MHz (÷2 then ÷4).
- Bytes in a DDR3 BL8 burst (64-bit)? ::: 64 bytes = one cache line.
- Why did prefetch freeze at 8n? ::: bigger bursts waste bandwidth; use bank groups & subchannels instead.
- Two 32-bit DDR5 subchannels at 6400 → total? ::: 51.2 GB/s (2 × 25.6).
Connections
- 4.1.06 SDRAM and DDR (DDR2 - 3 - 4 - 5) evolution (Hinglish) — parent topic
- DRAM cell structure and refresh — the ~15 ns cell behind every latency number
- Memory bandwidth vs latency — why equal peak ≠ equal speed
- Bank groups and interleaving — the concurrency trick after prefetch froze
- Cache and the memory hierarchy — why 64-byte bursts exist
- CAS latency and memory timings — the "15 ns" expressed in cycles