AMD Ryzens, their memory speed peculiarities, and ECC

November 18, 2017

Intel's Core i7 CPUs, such as the one I'm planning to use in my next PC, have a nice simple memory support story; there's no ECC support and regardless of how many DDR4 DIMMs you use, they'll run at an officially supported maximum rate of 2666 MHz. Unfortunately AMD Ryzen memory support is nowhere near that simple and some of its complexities create hassles. Since I've recently been putting together a Ryzen system configuration for reasons beyond the scope of this entry, I want to write down what I've learned.

To start out with, Ryzens (and apparently everything made from AMD's Zen microarchitecture) have restrictions on what memory speeds they can achieve with various types and numbers of DIMMs. Current Ryzens support four DIMM slots and from the charts, if you have two DIMMs, single rank DIMMs give you a maximum memory speed of 2666 MHz and double rank DIMMs a maximum of 2400 Mhz, while with four DIMMs the single rank maximum is 2133 Mhz and the double rank maximum is 1866 Mhz. This is without overclocking; if you overclock, apparently you can significantly improve the four DIMM cases.

(I couldn't dig up a clear answer about maximum memory speeds for single-channel mode, but I believe they're probably the same and it's just that your bandwidth drops. Most people install DIMMs in pairs these days.)

Many DDR4 DIMMs appear to be double rank, although it's often hard to tell; memory vendors generally aren't clear about this. Kingston is a noteworthy exception, as they let you search their DDR4 modules based on rank (among other things, and note that you need unbuffered DDR4 DIMMs for Ryzen). Where single rank DDR4 DIMMs are available, they appear to only go up to 8 GB sizes; in 16 GB, you only have double rank DIMMs. This means that if you want 32 GB of RAM with a Ryzen, your maximum memory speed is 2400 MHz using two 16 GB DDR4-2400 DIMMs. Using single ranked 8 GB DIMMs is actually worse, since four DIMMs pushes you down to a maximum of 2133 MHz.

Before I started writing this entry, I was going to say that you could only get ECC memory for Ryzens in DIMMs of at most 8 GB. More extensive research shows that this is not the case; both Kingston and Crucial have 16 GB ECC DDR4-2400 UDIMMs that their websites consider compatible with some Ryzen motherboards such as the ASRock X370 Taichi (taken from here, which tested Ryzen ECC with 8 GB Crucial single rank ECC UDIMMs) or the Asus PRIME X370-PRO. However, the available ECC UDIMMs appear to have conservative timings and thus I believe slightly higher latency than other DDR4 UDIMMs (eg, CL 17 versus CL15 for more performance focused non-ECC DDR4-2400 UDIMMs). Whether this will make a practical difference for most uses is an open question, especially for a non-gaming workstation.

(A casual check suggests that ECC DDR4-2400 also appears to be clearly higher priced than non-ECC DDR4-2400, which is already annoyingly expensive.)

PS: I believe that much of this applies to AMD Threadripper and even Epyc CPUs and systems, because they're all built around the same microarchitecture. Threadrippers are quad channel instead of dual channel, so you get twice as many DIMMs before you run into these limitations, but that still means that if you want fast memory you're stuck with at most 64 GB of RAM in a Threadripper system. 64 GB is probably lots for a desktop, but we're looking at Threadripper based compute servers and our users like memory.


Comments on this page:

By Walex at 2017-11-20 07:14:48:

«Intel's Core i7 CPUs, such as the one I'm planning to use in my next PC, have a nice simple memory support story; there's no ECC support and regardless of how many DDR4 DIMMs you use, they'll run at an officially supported maximum rate of 2666 MHz.»

That seems an optimistic reading as bus loads are an electrical thing from which intel CPUs are not exempt. That's why there are buffered RAM sticks. The Ryzen specs are typical of pretty much all unbuffered memory bus controllers.

https://en.wikipedia.org/wiki/Registered_memory#Buffered_memory

The other issue is that small differences in memory speeds are indeed not that important anyhow, with latency going always up (and cache sizes being more important).

By cks at 2017-11-20 13:27:28:

All I know is that Intel claims that the current Core i5, i7, and so on have a memory speed of 2666 Mhz (if your memory supports it) no matter how many (unbuffered) DDR4 DIMMs you put in or whether they're single or double rank. Perhaps there's a footnote somewhere, but if so I haven't seen it and I haven't seen anyone comment about it.

Written on 18 November 2017.
« When you should run an NTP daemon on your servers
Getting some information about the NUMA memory hierarchy of your server »

Page tools: View Source, View Normal, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sat Nov 18 02:58:51 2017
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.