Joseph.to

Ultimate guide to undervolt Ryzen 5000 zen 3 CPUs

March 06, 2021

Intro

I’ve spent countless hours recently, after having built my Small Form Factor PC, researching how I could improve the performance and temps. The solution to my optimization quest was what’s known as PBO2 or Precision Boost Overdrive v2. Coming from 15 years of Mac usage all of this was new. Nevertheless it was interesting to understand how processors function, and how actually every processor comes out of the box with basic performance levels that will ensure stable operation for each user but also allow a willing user to experiment (and even AMD provides a guide to overclock using PBO2) with the goal to find out the performance limits that their processors can reach while keeping stable operations and avoiding crashes. AMD and any CPU manufacturer for that matter, are unfortunately unable to optimize each and every chip at 100% of their performance due to the time it would take since every chip, even of the same model, is different and not binned to operate at those frequencies.

pbo2-bios

PC Specs

Case: NCase M1 13~L CPU: 5900x GPU: Asus RTX 3090 TUF Motherboard: Asus X570-i CPU Cooler: NZXT Kraken X53 RAM: Corsair Vengeance 64G 3600mhz PSU: Corsair SF750 Platinum

Undervolting

First of all remember to take note about your benchmark and temp data. I personally used Cinebench R23 each time I did changes and monitored my temperatures with Ryzen Master. Below you’ll find my results (I’m only giving you my multicore stats because I forgot to note my single core results but they increased and decreased at a similar rate):

Cinebench R23 room temp 23C degrees

best undervolt: 21k multicore | cinebench temps: 67C degrees overclock: 22.5k multicore | cinebench temps: 84C degrees stock: 19.5k multicore | cinebench temps 80C degrees

Process

  • SKIP THE FOLLOWING POINT IF DONT WANT TO POTENTIALLY SPEND DAYS TRYING TO OPTIMIZE AND REACH THE BEST SETTINGS: Begin by downloading the Ryzen Master software from AMD, once opened click on Advanced View. Here you’ll be able to view your Best and Second fastest Cores under the Cores Section tab. Write down your best performing cores (with a gold star next to them) and your second fastest cores (with a dot). If you’re able to, try to monitor which cores are most used during light load. For me, even though my best and second fastest core were 1-6-7-8 I noticed that the most used cores in light CPU load were 1-6-8-9. This will turn out useful in the undervolting process.

ryzen-master-best-cores

  • Open the BIOS and proceed to Advanced - AMD Overclock - Precision Boost Overdrive. Here input the following settings:
Precision Boost Overdrive: ADVANCED PBO Limits: DISABLED PBO Scalar: Auto MAX CPU PBO: 0MHz Platform Thermal Throttle Limit: Auto
  • Once this is done proceed to Curve Optimizer, here you will have two choices based on how much work and time you want to put in the undervolting process.

    • if you skipped the first step select All Cores
    • if you wrote down all your best cores and want to find the best optimization settings select Per Core.
  • All Cores will allow you to undervolt each core at the same negative offset. I’ve personally started by doing this. Change the All Core Curve Optimizer Sign to Negative and finally change the All Core Curve Optimizer Magnitude with a level from 0 to 30. Each unit represent around 5 millivolts. Setting a level of 30 will be the best undervolting scenario however if you encounter crashes you will have to dial it down until you find a setting that works for you. Remember that its going to be easier to undervolt a cpu like the 5600x with up to -30 due to the fact that CPUs like the 5900x and 5950x are already pushed to their limits out of the box.

  • Per Core will allow you to undervolt each core individually at different negative offsets. I would use this mode only if after having attempted the All Cores setting you found out that the CPU only handles a negative offset that’s lower than you would like without encountering BSOD or WHEA crashes (such as negative 15 in my case).

In this case start by setting a Negative 13 (you can change my suggested numbers to what you think would suit your CPU best) to all the Best cores (with a gold star based on the first step), then a Negative 16 to all Second Fastest Cores (with a dot) and if you noticed another core being used regularly that wasn’t your best or second performing core set a Negative 16 to that too. Usually the cores that cause reboots are the best cores. For all other cores you can set a Negative offset of 24 if you want higher chances of stability. Or Negative 30 if you want to test more (or feel lucky). And remember I was using a 5900x, might be different for you, especially if you are using another model.

  • If after restarting and having used your pc for multiple hours you didn’t encounter any shutdown/crash/errors you can evaluate if you’d like to increase the Negative offset or just enjoy your undervolted pc.

  • If instead you have Blue Screen Of Death or other crashes, open the BIOS and experiment by lowering down your Negative values.

Again, every chip is different, therefore someone might be able to undervolt up of a negative 30 while other Ryzen owners might only be able to do it at negative 10 without experiencing crashes. I’ve initially attempted with a negative 23 for all cores which ended up giving me multiple crashes while I was playing Doom Eternal or while working. I’ve tried a negative 30 at some point hoping for it to work but in that scenario I would get WHEA errors and BSODs when idle or under light load.

Crashes explained (credits)

Once the CPU reaches low loads it has more headroom to clock at higher frequencies without exceeding thermal thresholds, therefore it proceeds to do so. In heavy workloads that use all cores so you’ll get a nice sized boost, but the boosted clock speed for all core is still lower than the old boost speed for single core. Consequently it is running stable and within power/thermal limits. But with lighter workloads you have a lot more thermal headroom, so it pushes the single core boost higher than it would usually handle and that causes the crash.

For example, say your 5600x has a base clock of 3.7 GHz and a boost max of 4.6 GHz. Most likely it’s going to be a single core boost max of 4.6 GHz and an all-core boost max of 4.3 or 4.4 GHz. Now let’s assume that you have a pretty nice chip and it could potentially be overclocked to a max of 4.8 GHz single core while being stable. If you run through the PBO and CO settings you’re running cooler, which will allow all-core max boost to go to 4.6 GHz, a speed that we know the chip can accommodate because it is within the max boost range. But in single core you have a lot more power/thermal headroom, which could see your system trying to boost the single core to 4.8 or 4.9 GHz, depending on power/thermal conditions. If your CPU is only stable up to 4.8 GHz and it tries to boost it to 4.9 GHz because there is sufficient power/thermal headroom to do so, then you’re going to get instability and crashes just like we would in the old days of overclocking.


This is the reason why usually your system doesn’t crash while benchtesting, but on very light workloads.

Follow on twitter if you have questions: @joseph__to


Personal blog of Joseph, co-founder of Polar.io. With a focus on node and javascript development, blockchain and photography.