PrimerGPU
Suppose you were told to evolve PrimerGPU into a real product. Here is the order that respects the dependencies — correctness first, memory second, throughput machinery after, specialisation last:
Notice the logic of the ordering: stages 1–2 are about being correct and tolerable on general code, stage 3 amplifies 1, and stages 4–5 are profitable specialisations that only make sense once the general machine underneath is sound.
This is the picture to keep: the titan is not a different kind of machine. It is your block diagram under a magnifying glass — with the five growth stages filling in the details.
| Quantity | PrimerGPU | A modern SM / GPU | Gulf |
|---|---|---|---|
| Lanes per core | 4 | 128 FP32 lanes per SM | 32× |
| Threads resident per core | 4 (one block) | up to 2,048 (64 warps) | 512× |
| Register file per core | 128 bytes | 256 KB per SM | 2,048× |
| Shared memory / L1 | none | ~228 KB per SM | ∞ |
| Cores on the chip | 2 | 100–150 SMs | ~60× |
| Threads on the chip | 8 | ~270,000 resident | ~34,000× |
| Memory system | 2 channels, 1 word / 4 cycles | HBM stacks, terabytes per second | ~10⁶× |
| Concepts | SIMT lockstep · index registers · block dispatch · arbitration · coalescing — identical | 1× | |
And the bottom row is not a joke — it is the audit's finding. What the toy got right is precisely the load-bearing skeleton: one decoder amortised over lockstep lanes; thread identity as read-only registers; blocks as the unit of scalable dispatch; scarce memory ports behind arbitration, made tolerable by coalescing; and a cycle budget dominated by WAIT, which is the very problem the titan's extra thousands of threads exist to bury. Someone who understands the left column has understood the right column's reasons. What remains is scale — and scale, as the next card insists, is not nothing.
Surprisingly little, structurally — which is the best evidence that the concepts truly carry.
Today one core holds one PC, one instruction register, one FSM position and four lanes of
registers. Warp support means turning that singular state into an array: per-warp PCs
and FSM positions, a register file partitioned per warp, and — the only genuinely new circuit —
a little scheduler that each cycle picks a warp whose state says "ready" and lets it use the
shared fetch/decode/lanes for that step. Our WAIT state already marks exactly the moments a warp
is not ready; the scheduler simply issues someone else then, and the idle cycles from
our budget table get eaten one by one. That is a weekend of simulator hacking and a very
instructive month of RTL — and it is precisely the
The audit says the ideas transfer; do not let that curdle into "so the rest is mere typing". The rest is a decade of team-years, and it goes where this course's other modules pointed: verification at a scale where the state space laughs at your testbench and a missed corner case ships in a hundred million devices; physical design, where clock distribution, power delivery and timing closure across an 800 mm² die are research problems, not chores; and manufacturing, where yield economics decide which architectures are even allowed to exist. The five growth stages are each "a lesson's worth of concept" and "a hundred engineer-years of execution" — and the ratio between those two numbers is exactly why the industry needs people who have walked the whole flow, RTL to GDSII, the way you now have. Conceptual mastery is the entry ticket, not the destination.