Every lesson in this module has fed the same appetite: more matrix engines, more ray-tracing units,
more HBM stacks, more GPUs on the
And even approaching the wall hurts, because of an equation you met in the
Put numbers in the exponent. At a defect density of
So the flagship GPU dissolves into parts, each sized and fabbed on its own terms:
This is not a paper exercise. MI300-class datacentre parts stack compute dice on top of IO base dice with eight HBM stacks alongside; dual-die flagships fuse two reticle-limit dice over a 10 TB/s die-to-die link and sell the pair as a single GPU. The package, not the die, is now the unit of product design.
What crosses between chiplets is not polite, occasional traffic — it is coherent memory traffic: cache lines, ownership requests, the L2's internal conversation, now walking between dice. A load issued on one compute die must reach an L2 slice on another and come back as if the seam did not exist. The die-to-die fabric (UCIe-class links, or proprietary equivalents) therefore runs at on-package energies and enormous width — and yet it is not free. Here is the hierarchy that rules every partitioning decision:
| Hop | Energy per bit | Relative |
|---|---|---|
| on-die wire (within a chiplet) | ~0.1 pJ/bit (100s of fJ) | 1× |
| die-to-die, on package (UCIe-class) | ~1 pJ/bit | ~10× |
| chip-to-chip, across the board | ~10+ pJ/bit | ~100× |
Read it as a law: every seam multiplies the energy of the traffic that crosses it by roughly ten. On-package beats the board by an order of magnitude — that is why chiplets work at all — but on-die beats on-package by another order — that is why where you cut matters more than whether you cut. A partition that forces the L2's hottest traffic across a seam burns the yield savings in the power budget.
Step through the assembly. Every layer is a separately fabbed, separately yielded chip — the interposer included — and the finished package presents itself to software as one GPU.
The marketing says one GPU; the physics disagrees. A thread running on compute die 0 reaches the HBM stack beside die 0 faster — and at higher bandwidth — than the stack beside die 1. Cache lines homed in a remote L2 slice cost extra hops and extra picojoules. That is non-uniform memory access, the classic multi-socket server disease, now living inside the package. The countermeasures are classic too, re-implemented in the GPU's hardware and driver: locality-aware placement (schedule a kernel's blocks on the die whose HBM holds their data), locality-aware allocation (put a buffer in the stack nearest its consumer), and interleaving for traffic with no locality to exploit.
Above it all sits a promise of software transparency: existing programs must run unchanged, seeing one device with one memory. Vendors mostly keep the promise — at the cost of enormous engineering in the fabric and scheduler — but the tuning guides tell the truth: peak numbers arrive only when data and compute land on the same die. And stacking brings a thermal bill: a compute die dissipating hundreds of watts sits on top of other silicon, so stacked cache hides under the coolest regions and power delivery must thread up through the stack.
The consolation payoffs are real. Mixed nodes: only the compute dice pay leading-edge wafer prices. Reuse: the same compute chiplet ships in four SKUs — two dice here, eight there — and the same IO die serves two generations. The die was a compromise forced on us by lithography; the package is a portfolio.
Here is the whole economic argument as a loop: a monolithic 700 mm² die versus four 180 mm²
chiplets carrying 15% packaging overhead, swept across defect density. Watch the crossover — and
notice which side wins when the fab is mature (low
Nobody chose it — it fell out of the optics. A scanner projects the mask onto the wafer through a lens at 4× reduction, and the largest image field the lens can hold in focus is about 26 × 33 mm — roughly 858 mm². One exposure, one field; a die must fit inside it. (High-NA EUV actually makes this worse: its optics halve the field, tightening the squeeze that pushes designs towards chiplets.) There is an escape hatch — reticle stitching, where adjacent exposures are aligned so precisely that wires run across the boundary — and wafer-scale outfits use it to pattern an entire wafer as one "chip". But stitching is slow, exacting and yield-hostile, so for everyone else the field size is simply the law: the largest die you will ever buy is a little over 800 mm², and past it the only road is more dice per package.
The seductive summary — "split the die, keep the yield, scale forever" — quietly assumes the seams cost nothing. They do not. A cross-die hop runs at roughly ten times the energy of an on-die wire and adds latency no protocol can hide; a partition that ignores this ships a GPU whose power budget and performance are eaten by its own fabric. The craft is to cut along the natural seams — boundaries the traffic already respects: compute/IO (media and PHYs rarely chat with shader cores), compute/cache (one wide, regular interface), GPU/HBM (already off-die). Cut through a hot interface — say, splitting an L2 whose slices exchange traffic constantly — and NUMA pain devours the yield win: kernels run at "remote" speeds, the scheduler fights placement forever, and the tuning guide grows a chapter of apologies. Chiplets moved the design problem; they did not remove it. The partition is the architecture.