PC RAM speed: JEDEC vs XMP/DOCP/EOCP

I had one hiccup on my new machine: the RAM wasn’t running as fast as it should. Long story short: I enabled DOCP (aka XMP) on my Asus X570-Pro motherboard and it runs right now. No detailed overclocking or anything, just one setting. The tech behind all this is fascinating so I’m going to write more.

First, a shout out to the bros at Corsair who branded my RAM with the name VENGEANCE. I feel more deadly already. You can also buy DOMINATOR memory with flashing LEDs on it. No, really.

VENGEANCE Platinum RGB RAM all lit up

Memory timings

Modern PC memory is defined by a complex set of memory timings. I bought two CMK32GX4M2Z3200C16 modules, the specs of which are DDR4-3200 CL16 (16-18-18-36). WTF do all those numbers that mean?

The most important stat is the DDR4-3200. That’s the basic speed of the RAM I/O channel and bigger is better. The actual clock is half the number so it’s 1600MHz or 0.625ns cycles. You get two 64 bit words through per cycle, so that results in 25,600 MB/second throughput. Modern memory tends to vary from DDR4-2400 to DDR4-4800, with my DDR4-3200 being typical. (That’s the spec fastest memory my Ryzen 3700X can drive, although many folks overclock to DDR-3600 at least.)

The second most important stat is the CL16. That’s the cache latency, the delay between when a column is selected and the bits can be delivered. 16 means 16 cycles of 0.625ns, or 10ns. That’s a significant amount of time; RAM is much slower than CPUs run. Which is why CPUs have such big caches now. Smaller CL is always better; DDR4-3200 comes in CL14 to CL22.

What about the 16-18-18-36? The first number is the cache latency, the CL16. The other numbers in the 16-18-18-36 describe the rest of the RAM latency. 16 is the best latency you’ll get accessing a new memory cell; the second number 18 means you need to tack on another 18 cycles if you have to change rows, too. I’m not sure what the last two numbers exactly mean but in all cases lower is better.

One last number I didn’t mention; the RAM voltage. DDR4 RAM is standardized at 1.2V. But modern motherboards can overvolt (or undervolt) RAM to try to juice more reliability out of them. A lot of RAM works better at 1.35V.

SPD: JEDEC, XMP, DOCP, and EOCP

So, you buy a RAM module with a bunch of speed, timing, and voltage requirements. How does the motherboard know what to do? It figures it out by reading the SPD, the Serial Presence Detect. That’s a little side channel that RAM uses to tell the motherboard what it can do. Your system BIOS will tell you what the SPD of your RAM is saying. Or you can use a program like CPU-Z to tell you.

My RAM has at least 4 advertised timings; three JEDEC timings at 1333MHz, and one XMP timing at 1600MHz. So my motherboard could choose to run the RAM at any of those settings. But I paid for 1600MHz RAM, I want it!

Unfortunately only the JEDEC timings are “standard”. The X in XMP literally stands for “Extreme” (because again, RAM is made by bros). To run at 1600MHz the RAM module wants a little more voltage than is officially allowed. Fortunately the motherboard can provide it nicely. But a motherboard playing by all the rules will only use JEDEC timings.

In an Intel motherboard you enable the XMP timings by turning on the XMP setting. This is 99.99% safe to do. Unfortunately the XMP term or technology, is Intel proprietary. So AMD systems have other names for these things: AMP (AMD’s name), DOCP (ASUS’ name), and EOCP (Gigabyte’s name). That’s why I couldn’t find any mention of XMP anywhere in the motherboard manual or BIOS. It’s called DOCP on my ASUS board.

So back to the bottom line. Once I turned on DOCP, the motherboard said “oh we can run this RAM much faster”, and I got a ~10% performance boost out of my computer. Technically this is a little bit overclocking but it’s all within published specs of the parts and the motherboard sets it all automatically, so I’m not worried. And now I’m running proper DDR4-3200, the maximum that this CPU officially supports.

But it’s possible to go further, to overclock more. Hardcore nerds buy DDR4-4800 RAM and slap a liquid cooler on their CPU and push everything 10, 20% past what it’s rated to do. I have no interest in doing that myself.