AMD's Zen 6 Family: Feeding the Beast
chipsandcheese.com
chipsandcheese.com
Of all the things I'm looking forward to on Zen6, an improved memory controller is at the top of the list.
Edit: and yes, others may say the paltry few PCIE 5.0 lanes is the worst thing about AM5, but that doesn't affect my usage much, and unfortunately I think that's a limitation of AM5 itself rather than the I/O chiplet.
I've never gotten 4 sticks to pass training, no matter what I change. This is a well-known limitation. Some people, with newer AGESA on certain motherboards, have been able to get 4 sticks above 3600 MT/s but it's not possible for most people, and questionably stable even for those that have succeeded.
For reference I'm using vsoc 1.08v, vddp 0.98v, vddg 1.0v, vdimm 1.38v and couldn't get above 1900 uclk / 3800 MT/s without uncomfortable vsoc. I've seen lots of people claim 2000/4000 at 1.1-1.15v vsoc but I don't want to run that high daily.
Oh and don't push vsoc to 1.2v+ as per AMD.
Side note: At 2ghz IF, a single Zen4/5 CCD can saturate 7200 MT DDR5, but the io die is not restricted to that, so x16 and IGPU DMA can still saturate it at 8000.
https://www.amd.com/en/products/processors/desktops/ryzen/90...
Obviously, you can run memory faster than the officially supported speed, including 4 DIMMS, but the Zen 5 architecture has a reputation for being finicky trying to run 4 DIMMs at higher speeds and you need a bit of care in what you pick and how you tune it.
To take full advantage of it, folks likely will want A) a new motherboard with likely a new chipset to support the higher frequencies and B) <GULP> higher frequency DDR5.
I’d love more memory bandwidth with the limited 2-channels I have, but the 2x48GB (96GB) of “tuner memory” I bought in February 2025 I’m not even sure is manufactured anymore. I paid $440 back then, and my understanding is it’s not produced now, and commands $2500 - $3000 on the second-hand market.
Are PDEP and PEXT using the same (parts of) circuits as multiply (they are very different operations...), or are this just two independent drops of circuitry and the wording is just a bit unclear?
Multiplying by 2^n = shift by n.
The real star looks like the c cores though. 32 C cores per chiplet with increased l3 cache is impressive
Zen 4 and newer consumer chips have 4 memory controllers (for legacy reasons shown as 2) which handle 32bit wide LPDDR5 or DDR5 interfaces (2x per dimm for DDR5)
The AM5 (desktop) socket has in addition to the 4x 32bit memory lanes, 28 PCI-E lanes (generally 16x for GPU, two 4x general purpose, one 4x to chipset), 4x combined DP/HDMI outputs, USB 2.0 port, 4 USB 3.2 Gen 2 ports. And that's just the major buses, there's ton of other components exposed (simpler IO, sound, power)
All of that counts to staggering 1718 pins - anyone remember when moving dual-channel K8 from 940 pin to 939 allowed removal of whole layer from motherboard PCB, making them way cheaper?
The high-end performance server socket from AMD has 6096 pins, significant chunk of it being the 24x 32bit DDR5 interfaces.
So unfortunately it's very much not easy to add more memory, and that's before considering issues with routing it on motherboard even if you accept changing shapes
Perhaps it's better to stick on am5 for a while, but it's not clear if this number of pins is somehow cost effective, or if it's just enough to beat Intel.
The thing they're doing which is completely insane is using different sockets for Threadripper and Epyc.
The primary difference between them isn't the price -- they're both expensive -- it's that Epyc uses the power budget to reach higher core counts and Threadripper uses it to hit higher clock speeds. So for example, Zen5 Threadripper 9975WX has 32 cores with a 4 GHz base clock and 5.4 GHz boost clock. There is no equivalent Zen5 Epyc, the most similar is 9375F which is 3.8GHz/4.8GHz. Conversely, Epyc 9755 has 128 Zen5 cores and Epyc 9965 has 192 Zen5c cores and there is no Threadripper with that many cores.
The reason this matters is that the system boards themselves are pricey, not just the CPUs, but as the platform starts to age you start to get a lot of old servers on the used market that originally had a bottom-end Epyc in them. Which you'd then like to pull and replace with a Threadripper -- i.e. pay them more money to buy a new Threadripper -- except that they inexplicably decided to screw you and themselves by using a different socket.
And the same thing the other way around. It also means you can't find an older workstation with the bottom-end Threadripper and pay them money for a high core count Epyc with better performance per watt to use it as a server.
Whoever did it this way doesn't seem to understand that market segmentation is intended to separate price segments rather than just creating arbitrary compatibility impairment between things that have similar prices.
A pin on underside of CPU is reasonably cheaper especially with how they've got a sea of wires working for the humongous models replacing previous serdes-based approach
[0] https://en.algorithmica.org/hpc/cpu-cache/sharing/#saturatin...
It's absolutely wild that adjusting some l3 and using a smaller node goes from 12 to 32 cores for basically the same chip.
I wonder if the CCD will remain as monolithic as it does, for how long? The l3 latency being signficantly higher for 6c (10.3ns zen5 -> 10.7ns z6 -> 16.4ns z6c) feels like a symptom of a broader scaling challenge as the CCD hosts more and more. I can imagine dividing zen 7 or zen8 CCD into partitions, perhaps?
The unified L3 per CCD really helps on some key desktop loads (especially games). Most server throughput loads partition nicely into smaller partitions, but most games are hurt so bad by the latency penalty of crossing into a different partition that AMD's game drivers park the second CCD on their 2-CCD CPUs when they detect a game running. So long as games are an important target for them, I suspect they will not partition the CCD again. (It, of course, used to be parititioned for Zen 1 and 2.)
The Apple CPUs may be great for a personal computer, but they are not competitive with a server CPU.
Moreover, the SPEC floating-point results are not really representative for the floating-point performance of Zen 5 and Zen 6 that can be reached with optimized AVX-512 programs, which is much greater.
> AMD Ryzen 9 9950X 16-Core 63rd 4 40132379 +/- 2530724
> Apple M5 Pro 52nd 5 22108587 +/- 260160
I have absolutely no idea what this is benchmarking or how, but is there any reason not to just read this as the "consumer/low core ryzen" is twice as fast as the m5 pro?
It's the best chess engine used by millions of people and part of SPEC2026, natively compiled
The M5 Pro is doing shockingly well given the massive disparity in execution resources. But still, it's optimized for web/desktop-like loads, you shouldn't really run heavy number crunching on that CPU.
0: 2x FMA/MUL + 2X ADD
You don't get good performance out of this kind of code by just compiling with different options, the compute kernels must be tuned to fit the architecture, and nothing on the M-series but NEON fits the bill.
2. What flags & compiler?
3. Can't run Linux on that M5/M6 can we?
The 9950X3D2 was already tested. And was included as comparison point with the fastest possible version of its predecessor (Zen 5).
Some evidence that contextless numbers are meaningless is that your source, David Huang, does include the 9950X but in his results it scores much higher than everything on C&C's chart too (7.25/11.4)
A company like Hetzner isn't going to care an awful lot whether they deploy one big SP5 server or four small AM5 ones for the VM instances they rent out: the only thing that matters is TCO per performance.
Want to stick four NVMe SSDs, a 25Gbit NIC, 256GB of ECC RAM, and some OOB module on a Ryzen board? No problem whatsoever. Want to do the same with an Apple CPU? Ehhh, that's going to be slightly more challenging...
Different story when you're talking about the context of a desktop or mobile.
X86 should support no-branch-predict-if and dont-predict-goto
> X86 should support no-branch-predict-if
It almost does. You can use __builtin_expect to hint if the branch is predictable - like assertions. Don't annotate conditionals if they're truly unpredictable. The branch predictor will run, but it's not expensive.