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

AMD's Big APU

~13 min · convergence, amd, strix-halo, lpddr5x, bus-width, vendor-claim

Level 0Spec-Sheet Skimmer
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"The first serious copy is a 256-bit bus on one die with 128 gigabytes soldered to it. Read it as an M-series Ultra with a quarter of the pins — a Max with half — and its numbers stop being surprising."

Strix Halo, in the Vendor's Words

AMD's Ryzen AI Max+ 395 — the part the press calls Strix Halo — is the first x86 chip built at the M1 Max's scale — a CPU, a large integrated GPU and an NPU on one package, sharing one 128 GB pool over a 256-bit bus (Intel's Lunar Lake, the next lesson, copied the M1's diagram a year earlier at laptop size). AMD's specification page lists "256-bit LPDDR5x", "Max. Memory 128 GB", "LPDDR5x-8000", an NPU of "Up to 50 TOPS", and a "Default TDP 55W" configurable to 120. The bandwidth follows from the first three numbers: 256 bits × 8,000 MT/s ÷ 8 is 256 GB/s, which is what AMD says it "doubles the bandwidth to". That is a shade under an M4 Pro's 273 (the same 256-bit bus, on LPDDR5X-8533), under two-thirds of an M3 Max's 400 and under a third of an M3 Ultra's 819 — and those two run LPDDR5-6400, slower pins than AMD's. Against the big Macs the difference is the bus, 256 bits against the Max's 512 and the Ultra's 1,024, not the memory technology; against the M4 Pro there is no difference to speak of. The bus width is the story of this track.

Why It Is Soldered, in the OEM's Words

The Framework Desktop, the first small computer built on the chip, was announced with an unusual explanation. Its founder, reporting what AMD's engineers told him: "fanning out that giant 256-bit memory bus requires the LPDDR5x to be soldered"; a socketed layout was "not possible without massively downclocking the memory". That is the memory track's argument from the other side of the industry. The first company to put memory on a module in a modular PC tried to keep it modular and could not, because signal integrity on a 256-bit bus at 8,000 MT/s does not survive a connector — and Apple's bus is twice as wide on the Max, four times on the Ultra. The pool's shape forces the package's shape; AMD arrived at Apple's conclusion by the same physics, and said so through its partner.

What the Pool Can Address, and the Successor

On Windows, AMD's "Variable Graphics Memory" lets the user "reallocate a % of the system RAM to integrated graphics", up to "96GB VGM" for a "total graphics memory size of 112GB"; on Linux, AMD's developers describe raising the allocator's limit to "120GB per node". Those are the GPU track's claimant-discipline knobs, exposed as settings instead of an OS recommendation — the same problem the Mac's recommended working set solves, solved by hand. The 2026 refresh the press calls Gorgon Halo lifts the ceiling to 192 GB with up to 160 GB addressable as VRAM and the same bus, and AMD describes its flagship as the first x86 client part able to run a 300-billion-parameter model locally — at 256 GB/s, a ceiling the physics track can compute in a line: a 300B at the lab's 4.7 bits per weight is about 175 GB per token if dense, so about 1.5 tokens a second; a mixture reads far less and runs far faster, which is the experts lesson and the reason the marketing sentence chose a mixture. The copy is real, honest about its physics, and a quarter of the Ultra's width; the next lesson is the vendor that tried and stepped back.

Code

copies.py — every PC-class pool since the M1, bandwidth recomputed from bus width and rate·python
#!/usr/bin/env python3
"""Everyone converges on unified memory. Every PC-class pool announced since the M1,
with the two numbers that decide a pool: bus width x transfer rate = bandwidth, and
the maximum memory the vendor will sell. Vendor figures where stated; bandwidth is
also recomputed from width x rate / 8 so a spec-sheet number can be checked."""
pools = [  # name, year, bus bits, MT/s, vendor GB/s (or None), max GB, source
    ("Apple M1",                         2020, 128,  4266, None, 16,  "derived: Apple published no M1 bandwidth figure"),
    ("Apple M3 Ultra",                   2025, 1024, 6400, 819,  512, "Apple: 819GB/s"),
    ("Apple M5 Max",                     2026, 512,  9600, 614,  128, "Apple: 614GB/s"),
    ("Apple M5 Ultra",                   2026, 1024, 9600, 1229, 512, "Apple: 1.2TB/s"),
    ("AMD Ryzen AI Max+ 395 (Strix Halo)", 2025, 256, 8000, 256, 128, "AMD: 256-bit LPDDR5x-8000, 128 GB"),
    ("AMD Ryzen AI Max 400 (Gorgon Halo)", 2026, 256, 8000, 256, 192, "press: 192 GB, up to 160 GB as VRAM"),
    ("Intel Core Ultra 200V (Lunar Lake)", 2024, 128, 8533, None, 32, "Intel: memory on package, LPDDR5x-8533, up to 32 GB"),
    ("Qualcomm Snapdragon X Elite",      2024, 128,  8448, 135,  64,  "Qualcomm brief: 135 GB/s, up to 64 GB"),
    ("Qualcomm Snapdragon X2 Elite Extreme", 2026, 192, 9523, 228, 128, "Qualcomm brief: 228 GB/s, 128+ GB"),
    ("NVIDIA GB10 (DGX Spark)",          2025, 256,  8533, 273,  128, "NVIDIA: 273 GB/s, 128 GB"),
    ("NVIDIA RTX Spark (N1X)",           2026, 256,  8533, None, 128, "press: 128 GB unified LPDDR5X, NVLink-C2C; bus width ASSUMED equal to GB10"),
]
print(f"{'pool':40} {'year':>4} {'bus':>5} {'MT/s':>5} {'width x rate':>12} {'vendor':>7} {'max GB':>6} {'27B ceiling':>11}")
for name, yr, bits, mts, vendor, gb, src in pools:
    calc = bits * mts / 8 / 1000
    bw = vendor if vendor else calc
    ceil = f"{bw/14.42:11.0f}" if gb >= 20 else f"{'no fit':>11}"
    print(f"{name:40} {yr:4d} {bits:5d} {mts:5d} {calc:12.0f} {(vendor if vendor else '—'):>7} {gb:6d} {ceil}")
print("\nwidth x rate / 8 reproduces every stated figure within a per cent; against the Max and Ultra the copies differ by bus width and die count, not memory technology; against the M4 Pro they are the same 256-bit bus.")

# pool                                     year   bus  MT/s width x rate  vendor max GB 27B ceiling
# Apple M1                                 2020   128  4266           68       -     16      no fit   (derived; Apple published no figure)
# Apple M3 Ultra                           2025  1024  6400          819     819    512          57
# Apple M5 Max                             2026   512  9600          614     614    128          43
# Apple M5 Ultra                           2026  1024  9600         1229    1229    512          85
# AMD Ryzen AI Max+ 395 (Strix Halo)       2025   256  8000          256     256    128          18
# AMD Ryzen AI Max 400 (Gorgon Halo)       2026   256  8000          256     256    192          18   (rate assumed equal to Strix Halo; press)
# Intel Core Ultra 200V (Lunar Lake)       2024   128  8533          137       -     32           9
# Qualcomm Snapdragon X Elite              2024   128  8448          135     135     64           9
# Qualcomm Snapdragon X2 Elite Extreme     2026   192  9523          229     228    128          16
# NVIDIA GB10 (DGX Spark)                  2025   256  8533          273     273    128          19
# NVIDIA RTX Spark (N1X)                   2026   256  8533          273       -    128          19   (press; bus width assumed = GB10)

External links

Exercise

Run copies.py and add one pool you can find a spec sheet for — any laptop or mini PC sold with 'unified' memory. Compute its bandwidth from width and rate before you look for the vendor's number, then compare. Write both on your card with the 27B ceiling.
Hint
If width × rate ÷ 8 misses the vendor's figure by more than a few per cent, the sheet is quoting a different bus width than the one populated in that SKU (Qualcomm's lower X2 SKUs are 128-bit where the Extreme is 192) or a different memory type. The mismatch is the finding.

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.