Skip to content
C.W.K.
Stream
Lesson 01 of 08 · published

Why Not 1 TB? A Question That Looks Easy

~12 min · homework, capacity, memory-market, thought-experiment, our-judgment

Level 0Spec-Sheet Skimmer
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"A terabyte would sell. The household would have bought one. So the ceiling is not demand, and the track's first job is to say what it is instead — with price on the table and then taken off it."

The Question

The M3 Ultra shipped with up to 512 GB in March 2025; the M5 Ultra, announced 2026-08-25, ships with up to 512 GB (that configuration in late October), at "1.2TB/s". Two generations, the same ceiling, on a machine whose buyers — this household among them — would pay for more, because the big-models track's store holds checkpoints that 512 does not fit. Why not 1 TB? The easy answer in 2026 is price. LPDDR5X contract prices were forecast to rise around ninety per cent in one quarter and another seventy-eight to eighty-three the next; Apple's own chief executive called it "a hundred-year flood on the memory pricing" on the July call and the finance chief attributed more than all of a margin change to memory cost; the 512 GB configuration of the M3 Ultra stopped being sold in the same market, and a rival's 128 GB desktop was repriced by $700 for the stated reason of constrained memory supply. All of that is real, sourced, and in the rivals track. None of it is the household's answer.

Suppose Memory Were Free

The household's position, given at this quest's plan gate: not memory price — a real bottleneck. No source attributes the ceiling to either cause, so this track argues the position as a thought experiment and labels it judgment throughout. The experiment is to remove price: suppose LPDDR were free and Apple wanted to ship 1 TB tomorrow. The code block is what would and would not change. What would change: a pool that holds the store's 753B mixture with 500 GB to spare, and still not its 2.8T one. What would not change: a single token per second on any model that already fits, because the decode ceiling is bandwidth over bytes per token and the bus does not grow with the pool — 57 tokens per second on the 27B at 512 GB, 57 at 1 TB, 57 at 2 TB. Bandwidth per gigabyte, the pool's law from the rivals track, halves with each doubling: 1.6, 0.8, 0.4. A free terabyte on today's bus is a slower pool per byte, holding models it decodes more slowly than the ones it already holds.

The Shape of the Homework

So the question that looked easy has four hard parts, and the next six lessons take them in order. Capacity without bandwidth is dead weight — the arithmetic above, worked through the store's files. Every wire has a length — why the bus is 1,024 bits and soldered, and what a wider one would cost in package edge. Density arrives on a roadmap — where 1 TB actually comes from, and whose calendar it is on. Two tiers instead of one pool, and flash as a third — the shapes the rivals ship at rack scale and Apple ships in a phone, and whether they belong in a Studio. Scale-out is not scale-up — why two Macs are not a 1 TB machine. The checklist at the end is what Apple would have to do about each, in this quest's judgment, to stay ahead at the edge; the household's own answer to the ceiling was not to buy a terabyte but to keep the store, run the hub, and wait with a term — which is the next track.

Code

why_not_1tb.py — a free terabyte on today's bus: what changes, what does not·python
#!/usr/bin/env python3
"""Why not 1 TB? Suppose memory were free. A 1 TB pool on today's bus, and what it would
and would not change for the three questions a household actually asks. Pools in GiB as
Apple sells them; the working set is the measured 90.6% of office's 512 GiB, in GB."""
BUS = 819.0                                            # GB/s, the M3 Ultra's 1,024-bit bus at LPDDR5-6400
for gib in (512, 1024, 2048):
    ws = gib * 2**30 / 1e9 * 0.906                     # 498 GB at 512 GiB, as measured
    glm = 452 + 12.5 <= ws                             # GLM-5.3 at 4 bits + 128K cache (T13)
    kimi = 1680 + 3.6 <= ws                            # Kimi K3 at 4 bits
    print(f"{gib:5d} GiB  working set {ws:5.0f} GB  GB/s per GiB {BUS/gib:4.2f}  27B ceiling {BUS/14.42:3.0f} tok/s  "
          f"GLM-5.3 {'fits' if glm else 'no  '}  Kimi K3 {'fits' if kimi else 'no  '}  Kimi K3 ceiling {BUS/62.4:3.0f} tok/s")
print("\nwhat 1 TB buys on the same bus: nothing in the store that 512 does not already hold (Kimi K3 needs 2 TB).")
print("what it does not buy: a single token per second on any model that already fits -- the ceiling is the bus, and the bus is the package's edge.")

#  512 GiB  working set  498 GB  GB/s per GiB 1.60  27B ceiling 57 tok/s  GLM-5.3 fits  Kimi K3 no    Kimi K3 ceiling 13 tok/s
# 1024 GiB  working set  996 GB  GB/s per GiB 0.80  27B ceiling 57 tok/s  GLM-5.3 fits  Kimi K3 no    Kimi K3 ceiling 13 tok/s
# 2048 GiB  working set 1992 GB  GB/s per GiB 0.40  27B ceiling 57 tok/s  GLM-5.3 fits  Kimi K3 fits  Kimi K3 ceiling 13 tok/s

External links

Exercise

Run why_not_1tb.py with your own Mac's bandwidth and working-set fraction. Write on your card what a doubled pool would let you run that you cannot today, and the decode ceiling it would run at. If the answer is 'nothing I want at a speed I would use', write that — it is the household's answer too.
Hint
The models that a doubled pool unlocks are the ones between your working set and twice it; check the big-models track's table for whether any you want live there, and divide their active bytes into your bandwidth before you wish for the memory.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.