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

Why a Phone Chip Shares Its Memory

~13 min · mouse, history, unified-memory, iphone, power, board-area

Level 0Spec-Sheet Skimmer
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"Nobody at Apple in 2010 was thinking about a 512 GB language model. They were thinking about a battery and a board the size of a stick of gum."

The Constraints of a Phone

Track one said it and this track tells it as history: the unified memory that makes a Mac Studio interesting to a language model was designed for the iPhone, under three constraints that have nothing to do with AI. Board area. A phone's logic board has no room for a discrete GPU with its own memory chips and a bus between them; the only layout that fits is one pool beside one chip. Power. Every byte moved across a board costs energy a battery cannot spare; the cheapest byte is the one that never leaves the package, and the cheapest copy is the one that never happens. Cost. One memory system is cheaper to buy, route and test than two. Under those constraints a shared pool is not a clever choice; it is the only choice, and every phone SoC made by anyone shares memory between its CPU and GPU for the same reasons.

What Apple did that the rest of the phone industry did not was carry that layout up, unchanged, into machines where the constraints no longer bind — first the iPad Pro, then in November 2020 the Mac. The M1 release describes it in one sentence, quoted throughout this quest: "a unified memory architecture that brings together high-bandwidth, low-latency memory into a single pool within a custom package." Nothing in that release, or in the year that followed, mentions language models, because in November 2020 the largest publicly discussed model was a research artifact and the idea of running one on a laptop was not on anyone's roadmap.

The Foot Was Deliberate

This matters for the founder's phrase. "Stepped on a mouse" implies a foot that was going somewhere on purpose. It was: Apple wanted its laptops to have the iPhone's performance per watt, its fanless silence, its instant wake, and the design that delivered those was the one-pool package. The follow-through in 2021 — the M1 Pro and Max — widened the bus and grew the pool to 64 GB, and the next lesson reads that release's own words for what the growth was for. The foot was heading toward video editors and 3D artists on battery. The mouse was somewhere else entirely.

Dates, Because Order Is the Argument

The code block is a timeline: every entry a primary-source date, every gap computed. It is short on purpose. The whole track is an argument about order — layout before workload, community before vendor, follow-through after the accident — and a timeline is the only honest form for it.

Code

timeline.py — the mouse, in primary-source dates·python
#!/usr/bin/env python3
"""Every date is a primary source (Apple newsroom, a repository's first commit,
a PyPI upload, an Apple support page). Gaps are computed, not remembered."""
from datetime import date

EVENTS = [
    (date(2020, 11, 10), "M1: unified memory on a Mac",                        "Apple newsroom"),
    (date(2021, 10, 18), "M1 Pro / M1 Max: 400 GB/s, 64 GB, pitched at video",  "Apple newsroom"),
    (date(2022,  3,  8), "M1 Ultra: two dies, 128 GB, 800 GB/s",               "Apple newsroom"),
    (date(2022, 11, 30), "ChatGPT released",                                   "OpenAI"),
    (date(2023,  3, 10), "llama.cpp repository created",                       "GitHub"),
    (date(2023, 11, 28), "MLX repository created",                             "GitHub"),
    (date(2023, 12,  5), "MLX 0.0.2 on PyPI",                                  "PyPI"),
    (date(2025,  3,  5), "M3 Ultra announced with 512 GB",                     "Apple newsroom"),
    (date(2025, 10, 15), "M5: Neural Accelerators in every GPU core",          "Apple newsroom"),
    (date(2025, 12, 12), "macOS 26.2: RDMA over Thunderbolt 5",                "Apple support"),
    (date(2026,  8, 25), "M5 Ultra: quad-die, 1.2 TB/s, 512 GB",               "Apple newsroom"),
]

prev = None
for d, what, src in EVENTS:
    gap = f"+{(d - prev).days:4d} d" if prev else "        "
    print(f"{d}  {gap}  {what:52} [{src}]")
    prev = d

m1, chatgpt, llama, mlx = EVENTS[0][0], EVENTS[3][0], EVENTS[4][0], EVENTS[5][0]
print(f"\nunified memory on the Mac predates ChatGPT by {(chatgpt - m1).days} days")
print(f"the community's runtime predates Apple's by {(mlx - llama).days} days")

External links

Exercise

Run timeline.py and add the two computed gaps to your card. Then find one more primary-source date that belongs on this timeline — a release, a first commit, a spec page — and insert it with its source. Say in one sentence whether it strengthens the 'foot before mouse' reading or complicates it.
Hint
Candidates: the first Metal-backend commit in llama.cpp, the first mlx-community model upload, the macOS release that added MLX's requirements, the iPad Pro with an M1. Anything that dates intent — Apple's or the community's — is evidence; anything that dates a rumour is not.

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.