I recently upgraded my desktop from Intel i7-7800X to AMD 9700X, because my old CPU was really hot and made the entire room very hot in the summer. It’s my first time to use an AMD CPU and DDR5 RAM, so I wrote this note for my future reference. This can be wrong as my main source is reddit posts, some of which are contradicting.

My hardware

Why overclocking?

Because my memory sticks can’t work efficiently at the default setting. To make them work faster, we need to adjust the voltage(s), which at the same time would affect CPU, so it means we need to tuning CPU and RAM together.

In DDR4 era, all we need is often to plug the RAM in, and it works at the advertised frequency. Done. However, DDR5 doesn’t work like that. It usually have two or more timing parameters: a default JEDEC one, and some XMP and/or EXPO profiles. For example, my RAM is advertised to run at up to 8400MT/s, with default JEDEC frequency only at 6400MT/s. Without tuning the BIOS, the RAM will run at the default 6400MT/s CL52-52-52, with is significantly slow because it trades performance for stability (in a non-Pareto sense in my opinion). In my case, the actual default is even worse than its JEDEC rate: it’s 5600MT/s CL 46-45-45. This is huge performance loss.

After tuning the RAM, CPU will be affected due to a higher voltage. I’m not interested in overclocking CPU per se, but under-voltaging it does benefit temperature, which is a main reason why I upgraded my rig.

Things to tune

Starting Point. Running RAM at a higher frequency needs higher voltages. DDR5 RAM often carries some “performance” profiles. These configurations set voltages, frequency, timing and everything for us, and are often a good starting point. Depending on the hardware, these settings may be called XMP, EXPO, or DOCP in BIOS. Before changing the profile, keep in mind that it may void AMD products warranty. ASUS AM5 motherboard warranty does cover these memory configurations, but it’s motherboard, not including CPU.

My RAM has three profiles: 8400 CL40-52-52, 8000 CL38-48-48, and 7600 CL38-46-46. The 8400MT/s one can’t boot (even if it falls inside support range). The 8000MT/s can boot and passes stability tests, but occasionally (like once a week) the desktop just freezes without BSOD at normal/low workload. The 7600MT/s profile is the only usable one.

Lower the Voltages. First, both VDDCR_SOC and VDDIO / MC feed memory controller and scales with memory overclocking. In fact, they control different voltages but anyways both of them should be tuned. Second, VDD and VDDQ power memory chips. Finally, as VDDCR_SOC powers the memory controller, which is physically inside the CPU package, changing it will have some (small) impact on CPU temperature. So we can lower CPU voltage through Curve Optimizer and CPU SoC and core voltage, and lower the temperature.1 I’m not interested in overclocking the CPU itself, so I didn’t explore anything beyond this.

Things to monitor

Generally speaking, for all voltages above, we want them to be low, as long as the computer is stable, and temperature is under control. So three things to monitor: voltage not too high, temperature not too hot, and system stability. HWiNFO and OCCT are good tools for this.

Voltage

  For what Dangerous limit (V)
CPU    
VDDCR_SOC (SVI3 TFN) Powers CPU SoC (memory controller, PCIe lanes, etc.) 1.3 (AMD and ASUS safety limit)
VDDCR_VDD (SVI3 TFN) CPU core voltage 1.4? (couldn’t find good source. Some posts says 1.4V is safe
VDDIO / MC Powers memory controller 1.5? (again couldn’t find good source. Use value from this)
Memory    
VDD Powers the memory 1.45
VDDQ Powers the communication between CPU and memory 1.45

Temperature

  What Dangerous limit (℃)
CPU    
Tctl/Tdie Hotspot temperature of the entire CPU 95 (AMD hard limit)
Memory    
SPD hub temperature Memory temperature 85 as official limit, but a more realistic limit is 45

Performance and stability

I use AIDA64 to measure memory bandwidth and latency, and use Cinebench for CPU performance. For stability, I use OCCT and y-cruncher with this config.2

How to tune

I started with the built-in DOCP 7600 CL38-46-46 DOCP profile. It passes stability test. Then I tried to lower all voltages above one by one, until it fails to boot or the stability test. I finally arrived at the following BIOS settings:

  • integrated GPU: disabled (as I have a proper GPU)
  • Curve Optimizer: -25 offset
  • CPU Core Voltage: -0.15 offset
  • CPU SOC Voltage: -0.15 offset
  • CPU VDDIO / MC Voltage: 1.35
  • DRAM VDD Voltage: 1.35
  • DRAM VDDQ Voltage: 1.35

All voltages and temperatures are below the dangerous level, and it has been stable for a couple of days. Relative to default, Cinebench benchmark gets better by 20+%, and memory latency drops 30+%.

Some weird things

Claude and many posts insist that running the memory at a lower frequency brings lower latency. I can’t reproduce this on my machine. I tried 5600 and 6000MT/s with many timing and voltage settings. None of them is better than the 7600MT/s DOCP profile. I’m not sure why.

  1. Curve Optimizer does not hard code the voltage reduction. Instead, it changes the factory-calibrated voltage-frequency curve. This curve tells CPU how many voltages it should request at any frequency. Curve Optimiser shifts the entire curve down. 

  2. You probably need to adjust the test items to run, depending on the y-cruncher version.