SkatterBencher #92: Ryzen 9 9900X Overclocked to 5825 MHz

ryzen 9 9900x skatterbencher guide

Today we undervolt and overclock the AMD Ryzen 9 9900X processor up to 5825 MHz with the ASUS ROG Crosshair X870E hero motherboard.

I do this by leveraging Precision Boost Overdrive tools like Fmax Boost Override, Curve Optimizer, but also delve into memory subsystem tuning. In this blog post, I break down the Ryzen 9 9900X tuning process into four unique overclocking strategies for beginner and advanced overclockers.

  • First, we enable Precision Boost Overdrive 2 and EXPO,
  • Second, we tune with the Precision Boost Overdrive 2 toolkit (incl. Curve Optimizer),
  • Third, we tune the memory subsystem performance,
  • And, finally, we a static manual overclock.

However, before we jump into overclocking, let us quickly review the hardware and benchmarks used in this guide.

AMD Ryzen 9 9900X: Introduction

The AMD Ryzen 9 9900X is part of AMD’s Zen 5-based Ryzen 9000 desktop processor product line codenamed “Granite Ridge.” The Granite Ridge processors were introduced on June 2, 2024, during Computex 2024.

ryzen 9000 series processors

The 12-core Ryzen 9 9900X is the successor to the Ryzen 9 7900X which we overclocked in SkatterBencher #46. It has a base clock of 4.4 GHz and a listed boost frequency of up to 5.6 GHz. Its TDP is 120W.

Platform Overview

The system we’re overclocking today consists of the following hardware.

ItemSKU
CPUAMD Ryzen 9 9900X
MotherboardASUS ROG Crosshair X870E Hero
CPU CoolingEnermax LIQMAXFLO 420
MemoryG.SKILL Trident Z5 Neo DDR5-8000 32GB
Power SupplyXPG Fusion 1600W Titanium
Graphics CardGALAX GeForce RTX 4090 HOF
StorageAORUS RGB NVMe M.2 512GB Gen4 AGI 512GB NVMe M.2 Gen3
ChassisOpen Benchtable V2
TelemetryBENCHLAB
ryzen 9 9900 overclocking setup

Benchmarks, Games & Tools

We use Windows 11 and the following benchmark applications and games to measure performance and ensure system stability.

BenchmarksLink
Pyprime 2.0https://github.com/mbntr/PYPrime-2.x
7-Zip 19.0https://www.7-zip.org/
IndigoBench Bedroomhttps://www.indigorenderer.com/indigobench
Geekbench 6https://www.geekbench.com/
Geekbench AIhttps://www.geekbench.com/ai/
Cinebench 2024.1https://www.maxon.net/en/cinebench/
CPU-Zhttps://www.cpuid.com/softwares/cpu-z.html
V-Ray 6https://www.chaosgroup.com/vray/benchmark
Corona 10 Benchmarkhttps://corona-renderer.com/benchmark
AI-Benchmarkhttps://ai-benchmark.com/
Y-Cruncher 5Bhttp://www.numberworld.org/y-cruncher/
PugetBench for Creatorshttps://www.pugetsystems.com/pugetbench/creators/
3DMark CPU Profilehttps://www.3dmark.com/
OCCThttps://www.ocbase.com/
AIDA64https://www.aida64.com/
GameLink
Counter Strike 2https://store.steampowered.com/app/730/CounterStrike_2/
Returnalhttps://store.steampowered.com/app/1649240/Returnal/
Shadow of the Tomb Raiderhttps://store.steampowered.com/app/750920/Shadow_of_the_Tomb_Raider_Definitive_Edition/
Monster Hunter Wildshttps://www.monsterhunter.com/wilds/en-us/benchmark/
Bright Memory: Infinitehttp://benchmark.finalfantasyxv.com/na/
Age of Mythology Retoldhttps://store.steampowered.com/app/1934680/Age_of_Mythology_Retold/
Forza Motorsporthttps://store.steampowered.com/app/2440510/Forza_Motorsport/
Homeworld 3https://store.steampowered.com/app/1840080/Homeworld_3/

I use the following tools to check and log system telemetry, adjust clock frequencies, and launch benchmarks.

ToolLink
Benchmatehttps://benchmate.org/
CPU-Zhttps://www.cpuid.com/softwares/cpu-z.html
HWiNFOhttps://www.hwinfo.com/
NopBenchhttps://skatterbencher.com/nopbench/
Shamino OCPakhttps://rog-forum.asus.com/t5/amd-600-series/x670-x870-resource-thread/m-p/901576/
Ryzen LoopFmaxhttps://skatterbencher.com/ryzen-loopfmax/

AMD Ryzen 9 9900X: Stock Performance

Before starting overclocking, we must check the system performance at default settings. The default Precision Boost 2 parameters for the Ryzen 9 9900X are as follows:

  • PPT: 162 W
  • TDP: 120 W
  • PCC: 244 W
  • TDC CPU: 120 A
  • EDC CPU: 180 A
  • THM: 95 C
  • VID: 1.40 V
  • CPU FMAX: 5650 MHz
  • CCD0 FMAX: 5625 MHz
  • CCD1 FMAX: 5350 MHz
  • FIT: 6017.8

The Ryzen 9 9900X has two CCDs, each following their own factory-fused V/F Curve.

ryzen 9 9900x vf curves

Here is the benchmark performance at stock:

  • PyPrime 2.0 32B: 220.206 sec
  • 7-Zip 19.0: 176,391 mips
  • Indigobench (Bedroom): 4.260 Msamples
  • Geekbench 6 (Single): 4,260 points
  • Geekbench 6 (Multi): 18,758 points
  • Geekbench AI (ONNX, Q): 12,065 points
  • Cinebench 2024.1 (Single): 134 points
  • Cinebench 2024.1 (Multi): 1,735 points
  • CPU-Z V17.01.64 (Single): 874.2 points
  • CPU-Z V17.01.64 (Multi): 13,034.1 points
  • V-Ray 6: 38,063 vsamples
  • Corona 10 Benchmark: 11,746,206 rays/s
  • AI Benchmark: 6,959 points
  • Y-Cruncher 5B: 109.687 sec
  • PugetBench for Creators (Resolve, Basic): 10,815 points

Here is the game performance at stock:

  • Counter Strike 2 (1080P, HIGH): 594.0 fps
  • Tomb Raider (HIGH, 1080P): 271 fps
  • Returnal (1080P, EPIC): 256 fps
  • Monster Hunter Wilds: (1080P, ULTRA, FG): 197.23 fps
  • Bright Memory (1080P): 306 fps
  • Age of Mythology: 121.19 fps
  • Forza Motorsport (1080P, ULTRA): 319.5 fps
  • Homeworld 3: 106.31 fps

Here are the 3DMark CPU Profile and OCCT Benchmark scores at stock:

  • 1 Thread: 1,287 points
  • 2 Threads: 2,537 points
  • 4 Threads: 4,916 points
  • 8 Threads: 9,285 points
  • 16 Threads: 13,017 points
  • Max Threads: 14,108 points
  • SSE Single: 115.77 points
  • SSE Multi: 1,229.16 points
  • AVX Single: 240.40 points
  • AVX Multi: 2,489.78 points

Here are the AIDA64 memory benchmark scores at stock:

  • Memory Read Bandwidth: 60,103 MB/s
  • Memory Write Bandwidth: 63,870 MB/s
  • Memory Copy Bandwidth: 56,677 MB/s
  • Memory Latency: 92.9 ns

When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 4242 MHz and CCD1 effective clock is 4236 MHz with 0.974 volts. The average CPU temperature is 68.4 degrees Celsius. The average CPU package power is 139.3 watts.

When running the OCCT CPU SSE Stability Test, the average CPU CCD0 effective clock is 4823 MHz and CCD1 effective clock is 4778 MHz with 1.061 volts. The average CPU temperature is 71.4 degrees Celsius. The average CPU package power is 148.8 watts.

Of course, we can increase the maximum power consumption limit using Precision Boost Overdrive. That’s what we’ll do in our first overclocking strategy.

However, before we get going, make sure to locate the CMOS Clear button.

Pressing the Clear CMOS button will reset all your BIOS settings to default, which is helpful if you want to start your BIOS configuration from scratch. The Clear CMOS button is located on the back I/O of the motherboard.

rog crosshair x870e cmos clear

OC Strategy #1: PBO + EXPO

In our first overclocking strategy, we simply take advantage of enabling AMD Precision Boost Overdrive 2 and AMD EXPO.

Precision Boost Overdrive 2

With the launch of Zen 5, AMD introduced a further improved version of the Precision Boost Overdrive overclocker’s toolkit, allowing for manual tuning of the parameters affecting the Precision Boost 2 frequency boost algorithm.

The Precision Boost Overdrive 2 toolkit for Zen 5 Ryzen processors includes the overclocking knobs from Zen+ (PPT, TDC, EDC), Zen 2 (Boost Override and Scalar), Zen 3 (Curve Optimizer), and the newly announced Curve Shaper for Zen 5.

amd precision boost overdrive 2 technology overview

There are essentially 3 levels of Precision Boost Overdrive

  1. AMD’s stock values, which can be set by disabling PBO
  2. The motherboard vendor values, which are programmed into BIOS to match the motherboard VRM specification and can be set by enabling PBO
  3. Custom values, which can be programmed by the end-user

In this overclocking strategy, we’re just enabling Precision Boost Overdrive, whereas, in the following strategies, we’ll explore tuning the parameters. By enabling Precision Boost Overdrive, we rely on the motherboard pre-programmed PBO parameters. We find that the following values have changed:

ryzen 9 9900x precision boost overdrive 2 enabled parameters

Increasing the PPT and, to a lesser extent, the TDC and EDC limit will help unleash the frequency in multi-threaded workloads previously limited by the PPT.

EXPO – Extended Profiles for Overclocking

EXPO stands for AMD Extended Profiles for Overclocking. It is an AMD technology that enables ubiquitous memory overclocking for AMD platforms supporting DDR5 memory.

amd expo

EXPO allows memory vendors such as G.SKILL to program higher performance settings onto the memory sticks. If the motherboard supports EXPO, you can enable higher performance with a single BIOS setting. So, it saves you lots of manual configuration.

Note that unlike in some other SkatterBencher guides, I could simply set EXPO I and run the memory kit at the EXPO-rated DDR5-8000.

BIOS Settings & Benchmark Results

Upon entering the BIOS

  • Go to the Extreme Tweaker menu
  • Set Ai Overclock Tuner to EXPO I
  • Enter the Precision Boost Overdrive submenu
    • Set Precision Boost Overdrive to enabled

Then save and exit the BIOS.

The boost frequency at 1 active thread is about 5463 MHZ and the average boost frequency gradually trails off to 5144 MHz when all cores are active. In light single-threaded workloads, all cores in CCD0 can boost to over 5.5 GHz and all cores in CCD1 boost over 5.4 GHz.

ryzen 9 9900x pbo enabled boost curve

We re-ran the benchmarks and checked the performance increase compared to the default operation.

Despite the Ryzen 9 9900X having a TDP of 120W, the performance is restricted by its power limit especially in heavy all-core workloads. By enabling PBO, we can pretty much double the power budget. Combined that with enabling higher memory speeds and it translates into pretty decent performance gains across the board. The Geomean performance improvement is +3.98%, and we get a maximum benchmark improvement of +28.60% in Y-Cruncher.

When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 4933 MHz and CCD1 effective clock is 4977 MHz with 1.158 volts. The average CPU temperature is 95.0 degrees Celsius. The average CPU package power is 229.2 watts.

When running the OCCT CPU SSE Stability Test, the average CPU CCD0 effective clock is 5083 MHz and CCD1 effective clock is 5152 MHz with 1.237 volts. The average CPU temperature is 95.0 degrees Celsius. The average CPU package power is 237.7 watts.

OC Strategy #2: PBO Tuned

In our second overclocking strategy, we tune the CPU’s Precision Boost dynamic frequency technology using the Precision Boost Overdrive 2 toolkit.

PBO 2: Fmax Boost Override

Fused maximum frequency, or Fmax, is one of the Precision Boost infrastructure limiters constraining the CPU performance. Each chip in your CPU has a factory-fused Fmax, including the two CCDs and the IOD.

The IOD typically governs the overall CPU Fmax. For the Ryzen 9 9900X, the IOD Fmax is 5650 MHz whereas CCD0 is limited to 5625 MHz and CCD1 is limited to 5350 MHz.

Boost Clock Override or Fmax Override is one of the tools available in the PBO 2 overclocker’s toolkit. It allows us to override the arbitrary clock frequency limit between -1000 MHz and +200 MHz. That’s been available in steps of 25 MHz since forever, but it seems that with Ryzen 9000 we can now set the Fmax in steps of as little as 1 MHz! The BIOS option still jumps in steps of 25 MHz, but with specialized tools we can set it to any frequency in the operating system.

The programmed CPU Fmax limit of the Ryzen 9 9900X is 5650 MHz. So, with a +200 Fmax Boost Override, the new maximum boost frequency is 5850 MHz. Note that the Fmax Boost Override applies to all chips on package, so the new CCD0 Fmax is 5825 MHz and the new CCD1 Fmax is 5550 MHz.

ryzen 9 9900x pbo fmax boost override

It’s important to note that the Fmax override only adjusts the upper ceiling of the frequency and doesn’t act as a frequency offset.

PBO 2: Scalar

Scalar is a tool that allows the user to override the warranted silicon stress level, or FIT, to achieve higher frequency. You can adjust the maximum allowed FIT level to 10 times higher than the factory-fused limit. While the tool offers precise granularity, typically, you’ll find the available options to range between 1X and 10X in steps of 1 multiple.

The effect of increasing Scalar is that the Precision Boost algorithm more aggressively pursues higher voltages as it is less concerned with CPU lifespan. The tool’s relevance shifts from architecture to architecture as the FIT is only one of the Precision Boost infrastructure limiters managing the maximum allowed voltage.

For the Zen 5 Granite Ridge processors, it appears Scalar is making a comeback in the overclocking strategies because the chips are voltage limited. When all cores are active, the maximum voltage is 1.355V. The maximum voltage when a single thread is active is 1.38V

ryzen 9 9900x pbo scalar 1x voltage curve

The programmed FIT value of this particular Ryzen 9 9900X is 6017.8. So, with a 10X scaler, the new FIT value is 60178. We find that in an all-core workload, the maximum voltage increased from 1.355V to 1.365V. That’s not a big increase, but in voltage-constraint scenarios, every little bit helps!

ryzen 9 9900x pbo scalar 10x voltage curve

PBO 2: Curve Optimizer

Curve Optimizer has been one of the most important overclocking tools of the Precision Boost Overdrive 2 toolkit. It is most commonly known for its undervolting capabilities, but on AMD Ryzen CPUs, it kind of also works as an overclocking tool.

To explain how it works, Let’s start with the basics: the voltage-frequency curve.

Simply put: a voltage-frequency curve describes the relationship between an operating frequency and the voltage required to operate at that frequency. Every modern SOC has a factory-fused voltage-frequency curve and uses this to dynamically adjust power consumption depending on the workload needs.

Here’s the default voltage-frequency curve of my Ryzen 9 9900X processor. You’ll find there’s in fact two distinct curves: one for each CCD. We can immediately make a simple and redundant observation: the higher the frequency, the higher the voltage. For example: CCD0 requires only 1.129V for 5000 MHz. However, we need 1.355V for 5500 MHz. This also applies to the other CCD. For example: 1.149V gets us 5000 MHz whereas we need 1.245V for 5350 MHz.

ryzen 9 9900x v/f curve ccd0 ccd1

Although it’s not obvious from the V/F curve, the maximum allowed voltage is 1.365V when all six cores in a CCD are active. The Precision Boost 2 algorithm utilizes the V/F curve to find what’s the maximum possible frequency at 1.355V.

ryzen 9 9900x v/f curve vlimit

As I showed just a minute ago, we can use the Fmax Boost Override tool to increase the Fmax by another 200 MHz and extend the maximum allowed voltage using Scalar. That further extends the default V/F curve from 5625 to 5825 MHz for CCD0 and 5350 to 5550 MHz for CCD1. However, the Precision Boost limiter rules such as the Vlimit still apply and may restrict the maximum possible frequency.

ryzen 9 9900x v/f curve fmax+200 scalar=10X

If we set a negative Curve Optimizer, we can shift the entire voltage-frequency curve along the voltage axis. And, suddenly, we need less voltage for every operating frequency. For example, at default, for 5.0 GHz CCD0 needed about 1.129V, However, with a -30 Curve Optimizer for CCD0, now we only need 1.035V! The same applies to the other CCD.

ryzen 9 9900x v/f curve ccd0 ccd1 curve optimized

Moreover, the frequency is also boosting higher! The highest frequency with all cores in the CCD active has increased to 5750 MHz in CCD0 and 5550 MHz in CCD1. These higher frequencies are now possible because our Curve Optimizer undervolting pulled them below the voltage threshold.

ryzen 9 9900x v/f curve ccd0 ccd1 curve optimized max frequency

Curve Optimizer is a powerful tuning tool. It’s simple but not simplistic. And the more you dig into the details of what it does, the more intricate it becomes to figure out how to apply it in a daily overclock.

The traditional overclocking approach for AMD Ryzen CPUs is to undervolt by setting a negative curve optimizer. That helps in two ways.

  1. First, undervolting lowers the operating voltage, temperature, and power consumption.
  2. Second, as a consequence, the Precision Boost 2 algorithm can leverage the additional headroom to boost to higher frequencies.

So, you tend to get lower temperatures and extra performance. It’s a win-win. However, there are a couple of caveats to tuning with Curve Optimizer:

  1. Curve Optimizer impacts the entire voltage-frequency curve. So, it affects stability across the entire range of operating frequencies: from 600 to 6000 MHz.
  2. The same Curve Optimizer value impacts differently across the curve

If you’re lucky, your CPU’s undervolt margin matches how Curve Optimizer offsets the voltage across the curve. Then you’ll maximize the performance gains. But if you’re unlucky, and one part of your CPU’s V/F curve has a lot less margin, then your Curve Optimizer tuning journey will be a rough ride.

Curve Optimizer is available on a per CPU, per CCD, and per Core basis. For multi-CCD CPUs, I typically use the Per CCD curve optimizer approach because the CCD undervolting capabilities can vary wildly.

Curve Optimizer Tuning Process

The manual tuning process for Curve Optimizer can become quite convoluted since it affects the CPU core voltage in all scenarios ranging from very light single-threaded workloads to heavy all-core workloads.

I want to emphasize this point and refer to my Ryzen 9 9950X overclocking guide, where I demonstrated that the V/F curve changes depending on the workload. With dynamic voltage-frequency scaling technologies like Precision Boost 2, it’s vital to test a wide variety of scenarios as opposed to just a heavy all-core workload pushing the power consumption to its limit. Sometimes your all-core AVX workload can be entirely stable, but you get bluescreens in games.

ryzen 9000 v/f behavior different applications

I identified four typical workloads that tend to show early signs of instability:

  • OCCT Memory Stress Test, which is an extremely light all-core workload
  • Y-Cruncher BKT, which is a light all-core workload
  • Y-Cruncher Benchmark, which is a moderate AVX all-core workload
  • OCCT AVX Stress Test, which is a heavy AVX all-core workload

In this particular case, I found that Y-Cruncher BKT was the earliest indicator of instability.

When testing, I increase the negative Curve Optimizer setting in steps of 5 points, then check stability with each of these applications. Once I find an instability, I back off on the Curve Optimizer and check stability across the benchmark suite.

I ultimately ended up with a Curve Optimizer setting of -30 for CCD0 and only -10 for CCD1.

BIOS Settings & Benchmark Results

Upon entering the BIOS

Then save and exit the BIOS.

  • Go to the Extreme Tweaker menu
  • Set Ai Overclock Tuner to EXPO I
  • Switch to the Advanced menu
  • Enter the AMD Overclocking submenu and click accept
    • Enter the Precision Boost Overdrive submenu
      • Set Precision Boost Overdrive to AdvancedSet PBO Limits to MotherboardSet Precision Boost Overdrive Scalar Ctrl to Manual
        • Set Precision Boost Overdrive Scalar to 10X
        Set CPU Boost Clock Override to Enabled (Positive)
        • Set Max CPU Boost Clock Override to 200
        Enter the Curve Optimizer submenu
        • Set Curve Optimizer to Per CCD
          • Set CCD0 and CCD1 Curve Optimizer Sign to NegativeSet CCD0 Curve Optimizer Magnitude to 30Set CCD1 Curve Optimizer Magnitude to 10
      • Leave the Curve Optimizer submenu

The boost frequency at 1 active thread is about 5661 MHZ and the average boost frequency gradually trails off to 5316 MHz when all cores are active. In light single-threaded workloads, five out of six cores in CCD0 can boost to over 5.8 GHz and all cores in CCD1 boost over 5.5 GHz.

ryzen 9 9900x pbo co tuned boost curve

We re-ran the benchmarks and checked the performance increase compared to the default operation.

Undervolting with Curve Optimizer is a Ryzen overclocker’s best friend and has been for a long time. It provides this Ryzen 9 9900X with a nice frequency and performance bump. The geomean performance improves by five and a half percentage points, and we get a maximum benchmark improvement of +29.09% in Y-Cruncher.

When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 5173 MHz and CCD1 effective clock is 5094 MHz with 1.103 volts. The average CPU temperature is 95.0 degrees Celsius. The average CPU package power is 227.8 watts.

When running the OCCT CPU SSE Stability Test, the average CPU CCD0 effective clock is 5376 MHz and CCD1 effective clock is 5238 MHz with 1.188 volts. The average CPU temperature is 95.0 degrees Celsius. The average CPU package power is 229.2 watts.

OC Strategy #3: Memory Tuned

In our third overclocking strategy, we delve into tuning the memory subsystem performance.

On AMD Granite Ridge processors, the memory subsystem consists of three major parts: the infinity fabric, the unified memory controller, and the system memory. They’re more commonly referred to as FCLK, UCLK, and MCLK.

First-generation Ryzen overclockers know that these parts used to be tightly coupled together, but on modern Ryzen processors like the Ryzen 9 9900X, we can tune them independently.

Infinity Fabric Tuning

The Fabric frequency, or FCLK, is generated by the SOC PLL, derived from a 100 MHz reference clock input. The reference clock is multiplied by the FCLK ratio, which you can configure in the BIOS.

ryzen 9000 fabric frequency topology

The standard operating frequency of the infinity fabric is 1800 MHz, but on many boards, you’ll find it runs at 2 GHz when Precision Boost Overdrive is enabled. That said, it doesn’t seem there’s much overclocking headroom beyond 2 GHz. I managed to set 2200 MHz for this overclocking strategy, however anything higher couldn’t boot reliably. Not even with voltage adjustments.

Speaking of voltage: the infinity fabric voltage is provided by the VDDG voltage supply, derived via an integrated voltage regulator from the VDDCR_MISC voltage rail. There is a total of four VDDG voltage rails available for manual adjustment:

  • CCD0-CCD VDDG: signals sent from CCD0 to IOD are sent at this voltage.
  • CCD0-IOD VDDG: signals sent from IOD to CCD0 are sent at this voltage.
  • CCD1-CCD VDDG: signals sent from CCD1 to IOD are sent at this voltage.
  • CCD1-IOD VDDG: signals sent from IOD to CCD1 are sent at this voltage.

Note that the VDDG voltage does not adjust automatically with VDDCR_MISC. So, if you need to increase VDDG, for example, to support higher memory frequency, you need to change it manually.

ryzen 9000 fabric voltage topology

Memory Controller Tuning

AMD Granite Ridge has two DDR5 Unified Memory Controllers, or UMC in short, and each provides two 32-bit memory channels. The memory controllers are located in the IO die and are identical to the memory controllers on Ryzen 7000 “Raphael” processors.

The Unified Memory Controller frequency, or UCLK, is derived from the UMCCLK, one of the SOC PLLs. The UMCCLK is driven by a 100 MHz reference clock derived from either an internal or external clock generator.

The memory controller frequency is tied directly to the system memory frequency. It can run either at the same or half its frequency. At default, the memory controller runs at the same frequency as the system memory at 2400 MHz. However, we find that when enabling EXPO, the motherboard auto-rules will drop the memory controller frequency to half the memory frequency.

ryzen 9000 memory controller and system memory frequency topology

We could easily force the memory controller to run at the same frequency as the system memory by setting UCLK DIV1 Mode to UCLK=MEMCLK. However, that’s only possible if we run the memory at around DDR5-6000. Since our memory is running at DDR5-8000, we’re forced to maintain a UCLK frequency that’s half that of the memory frequency.

The VDDCR_SOC voltage rail provides the external power for multiple internal voltage regulators on SOC for the various IP blocks, including the memory controller. The VDDIO_MEM voltage rail is related as it provides the external power for the VDDP DDR5 bus signaling.

ryzen 9000 memory controller voltage topology

A nice benefit of running DDR5-8000 with the memory controller at half the memory frequency is that we can run the SOC voltage lower as well. The BIOS auto-rules will usually increase the SOC voltage to 1.3V to increase the overclocking headroom, but with DDR5-8000 we don’t need that much voltage. In my case, I could lower it to 1.0V and still have a stable system.

It is essential to know that the VDDCR_SOC voltage must always be lower than VDDIO_MEM_S3 + 100mV. The default VDDCR_SOC voltage is 1.05V and can be set to 1.30V under ambient conditions. That’s typically required for running the memory controller in sync with the memory at DDR5-6400. However, we need LN2 mode enabled for higher voltages.

System Memory Tuning

The last piece of the memory subsystem performance tuning is tuning the memory timings. For this part, I rely in part on ASUS’ Memory Presets technology.

ASUS Memory Presets

ASUS Memory Presets is an ASUS overclocking technology that provides a selection of memory-tuning presets for specific memory ICs. The presets will adjust the memory timings and voltages.

The ROG Crosshair X870E Hero motherboard sports fourteen memory profiles for a variety of memory ICs and configurations. Since we’re interested in simply adjusting the memory timings, we can try the Hynix 7600MHz 1.45V 2x16GB SR preset.

asus rog crosshair x870e memory presets

Memory Timings Tuning

The Hynix 7600 memory preset turned out not to be stable as it would throw errors in the OCCT Memory Stress test almost instantly. But no cause for alarm because we’ve seen this in previous overclocking guides as well.

To fine-tune the timings, I try setting certain timings back to its EXPO value until I find the timings that caused the errors. To speed up the process, I group together the following timings:

  • Group 1: primary timings plus tRC
  • Group 2: all refresh-related timings
  • Group 3: tWR, tFaw, twrrd, and trdwr
  • Group 4: all -Scl, -Sc, -Sd, and -dd secondary timings
  • Group 5: TrrdL, TrrdS, TwrtL, TwtrS

Unfortunately, unlike with previous overclocking guides, I had to adjust quite a lot more timings to make the memory pass our target of 1 hour of OCCT stress testing.

memory tuned occt stability test

Here are the final optimized memory timings for this memory kit.

expo-8000 tuned memory timings

After the tuning, our AIDA64 performance improved quite significantly. We got about +40% extra bandwidth and 20% lower latency by enabling EXPO. The memory tuning then added another 20% improvement on top of that.

ryzen 9 9900x memory tuned aida64 performance

BIOS Settings & Benchmark Results

Upon entering the BIOS

  • Go to the Extreme Tweaker menu
  • Set Ai Overclock Tuner to EXPO I
  • Enter the DRAM Timing Control submenu
    • Enter the Memory Presets submenu
      • Select Load Hynix 7600MHz 1.45V 2x16GB SR and click OK
    • Leave the Memory Presets submenu
    • Set tCL to 38
    • Set tRCD WR to 48
    • Set tRCD RD to 48
    • Set tRP to 48
    • Set tRRDL to 12
    • Set tRDDS to 8
    • Set tWRTL to 20
    • Set tWRTS to 8
    • Set tWRRD to 8
    • Set tRDWR to 16
  • Leave the DRAM Timing Control submenu
  • Set CPU SOC Voltage to Offset Mode
    • Set VDDSOC Voltage Offset to 0.005
  • Switch to the Advanced menu
  • Enter the AMD Overclocking submenu and click accept
    • Enter the DDR and Infinity Fabric Frequency/Timings submenu
      • Enter the Infinity Fabric Frequency and Dividers submenu
        • Set Infinity Fabric Frequency and Dividers to 2200 MHz
        Leave the Infinity Fabric Frequency and Dividers submenu
      Leave the DDR and Infinity Fabric Frequency/Timings submenuEnter the Precision Boost Overdrive submenu
      • Set Precision Boost Overdrive to AdvancedSet PBO Limits to MotherboardSet Precision Boost Overdrive Scalar Ctrl to Manual
        • Set Precision Boost Overdrive Scalar to 10X
        Set CPU Boost Clock Override to Enabled (Positive)
        • Set Max CPU Boost Clock Override to 200
        Enter the Curve Optimizer submenu
        • Set Curve Optimizer to Per CCD
          • Set CCD0 and CCD1 Curve Optimizer Sign to NegativeSet CCD0 Curve Optimizer Magnitude to 30Set CCD1 Curve Optimizer Magnitude to 10
        Leave the Curve Optimizer submenu
      Leave the Precision Boost Overdrive submenu
    • Enter the SoC Voltage submenu
      • Set SoC Voltage to 1000

Then save and exit the BIOS.

We re-ran the benchmarks and checked the performance increase compared to the default operation.

As we’ve seen with other modern platforms, tuning the memory timings can have a not insignificant impact on system performance, especially in workloads which are memory dependent. We see this behavior in specific multi-threaded workloads like Y-Cruncher, AI Benchmark, and Geekbench. Also, we can see a decent impact in certain games like Homeworld 3 and Tomb Raider. The Geomean performance improves almost another three percentage points and we get a maximum benchmark performance improvement of +49.42% in Y-Cruncher.

OC Strategy #4: Manual Overclock

In our final overclocking strategy, we will pursue a manual overclock.

One could question the use-case for manual overclocking an AMD Ryzen CPU. Just like with all past Ryzen processors, the major downside of manual overclocking is that you lose the benefits of Precision Boost 2 technology in low-threaded benchmark applications. So, whereas this 9900X can boost up to 5625 MHz with Precision Boost 2, it will be limited to your set fixed frequency when manually overclocking.

However, manual overclocking is not all negative and even has a couple of benefits.

  • First, it’s much simpler and usually faster than tuning with the advanced overclocking tools from the Precision Boost Overdrive 2 toolkit like Curve Optimizer
  • Second, automatic overclocking and frequency boosting technologies can leave a little margin on the table. We can exploit this margin and fine-tune it for application stability when manually overclocking with our specific hardware configuration.
  • Lastly, sometimes the static voltage and frequency configuration runs cooler than using a dynamic, adaptive clocking technology.

To better understand the performance tuning opportunities embedded in the Ryzen 9 9900X processor, let’s look at its clocking and voltage topology in more detail.

Ryzen 9000 CPU Core Clocking Topology

The standard Granite Ridge platform has a 48 MHz crystal input to the integrated CGPLL clock generator. The CGPLL then generates a 48 MHz clock for the USB PLL and a 100 MHz reference clock for the FCH, which contains the CCLK PLL for the CPU cores and several SOC PLLs.

ryzen 9000 frequency topology

The CCLK PLL 100MHz reference clock drives the 200 MHz VCO, which is then multiplied by an FID and divided by a DID. This used to provide us with a 25 MHz clock granularity, but with Granite Ridge processors we can now set the frequency in steps of 5 MHz or 0.05X!

Each CCX has its own PLL, with the cores within that CCX running at the same frequency. In a typical operation, all cores within a CCX will run at the same frequency. The effective clock will differ if the core is in a different P-state.

When we switch to OC Mode, we disable all automatic Precision Boost frequency boosting technologies and rely solely on the manual frequency and voltage configuration.

Ryzen 9000 CPU Core Voltage Topology

The Ryzen 9000 voltage topology relies on a combination of internal and external power supply to generate the processor voltages.

ryzen 9000 voltage topology

There are four primary power supplies from the motherboard VRM to the processor: VDDCR, VDDCR_SOC, VDDCR_MISC, and VDDIO_MEM_S3. The VDDCR voltage rail provides external power for three internal voltage regulators: VDDCR_CPU, VDDCR_VDDM, and VDDCR_GFX.

  • VDDCR_CPU provides the voltage for the CPU cores in CCX. The voltage rail can work in either regular or bypass mode, but on Granite Ridge, it is always in bypass mode. That means the voltage is always equal to the VDDCR external voltage.
  • VDDCR_VDDM provides the voltage for the L2, L3, and, if present, 3D V-Cache on a CCX. This rail cannot work in bypass mode; therefore, it is internally regulated from the VDDCR external voltage rail. The default VDDM voltage is 0.95V
  • VDDCR_GFX provides the voltage for the integrated graphics.

The VDDCR voltage rail is directly controlled by the CPU SMU using an SVI3 interface. On this motherboard, we can configure this voltage regulator in the BIOS. A crucial parameter is the VRM loadline setting.

VRM loadline

The VRM loadline is essential for two reasons: the Vdroop and undershoot.

Vdroop is the decrease in voltage when the CPU goes from idle to load. You want your CPU to be stable in all scenarios, so knowing the lowest voltage the CPU runs at is very important. After all, if the voltage is too low, the overclock won’t be stable.

x870 hero vrm loadline

Undershoot and its counterpart, overshoot, is a brief voltage spike that occurs when the CPU switches from idle to load or from load to idle. These spikes cannot be measured easily and usually require an expensive oscilloscope to detect. I highly recommend the ElmorLabs article titled VRM Load-Line Visualized to see a great picture of undershoot and overshoot in action.

While undershoot and overshoot are temporary spikes, an undershoot that’s too low can cause instability.

The VRM loadline setting is relevant to this overclocking strategy because we’re switching from Precision Boost to OC Mode. That means the CPU is no longer regulating the loadline itself and instead we have to correctly configure it by ourselves.

Ryzen 9 9900X CCX Frequency Tuning Process

Choosing the proper manual voltage is always a matter of finding a suitable trade-off between increased overclocking potential, the thermal challenges that come with increased voltage, and of course, consideration of CPU lifespan. With that last thought, we kick off our manual overclocking process.

Our limiting factor will ultimately be the cooling solution as power consumption increases exponentially with operating voltage and temperature scales (somewhat) linearly with power consumption.

The maximum voltage will be determined by the application we’re tuning for. So, the first step in our tuning process would be deciding on the stress test representing our worst-case scenario. In this case, I picked the 30 min OCCT AVX-512 CPU Stability Test because we found that even if we’d pass the AVX2 workload, AVX-512 benchmarks like Y-Cruncher would fail.

The next step is to set a fixed CPU ratio and check the maximum temperature when running our workload. If there’s thermal headroom left, increase the operating voltage.

For the baseline settings, I look at the OCCT Stress Test results from OC Strategy #2. Here we find that the AVX2 workload ran at about 5.1 GHz with 1.1V. So, I started the manual tuning process with a CCX ratio of 50X for each CCD, a VID of 1.2V, and LLC set to Level 6. We find that this gives a temperature of about 85 degrees Celsius and an effective voltage of 1.106V in OCCT AVX512.

Once we know the maximum voltage, we can tune the CCX ratio. Simply increase the CPU ratio until the application shows instability, then back off. This approach will give you the maximum stable per-CCX frequency for a given voltage.

In our case, we end up with CCD0 at 53.35X , CCD1 at 52.15X, and a Core VID of 1.200V which under high load drops to about 1.12V with LoadLine Calibration set to Level 6.

ryzen 9 9900x manual overclock settings

If we’d try to compare the V/F configuration of this OC Strategy with the V/F curve from OC Strategy #2, we can see that we’ve configured a single V/F point on the V/F spectrum as opposed to define a curve that spans a range of voltage-frequency points.

ryzen 9 9900x manual overclock v/f curve

BIOS Settings & Benchmark Results

Upon entering the BIOS

  • Go to the Extreme Tweaker menu
  • Set Ai Overclock Tuner to EXPO I
  • Set FCLK Frequency to 2200 MHz
  • Enter the DRAM Timing Control submenu
    • Enter the Memory Presets submenu
      • Select Load Hynix 7600MHz 1.45V 2x16GB SR and click OK
    • Leave the Memory Presets submenu
    • Set tCL to 38
    • Set tRCD WR to 48
    • Set tRCD RD to 48
    • Set tRP to 48
    • Set tRRDL to 12
    • Set tRDDS to 8
    • Set tWRTL to 20
    • Set tWRTS to 8
    • Set tWRRD to 8
    • Set tRDWR to 16
  • Leave the DRAM Timing Control submenu
  • Enter the CPU Core Ratio (Per CCX) submenu
    • Set Core VID to 1.200
    • Set CCX0 Ratio to 53.35
    • Set CCX1 Ratio to 52.15
  • Leave the CPU Core Ratio (Per CCX) submenu
  • Enter the DIGI+ VRM submenu
    • Set CPU Load-line Calibration to Level 6
  • Leave the DIGI+ VRM submenu
  • Set CPU SOC Voltage to Manual Mode
    • Set VDDSOC Voltage Override to 1.000

Then save and exit the BIOS.

The boost frequency at 1 active thread is 5335 MHZ and the average boost frequency gradually trails off to 5275 MHz when all cores are active. In light single-threaded workloads, all cores in CCD0 run at 5335 MHz and all cores in CCD1 run at 5215 MHz.

ryzen 9 9900x manual overclock boost curve

We re-ran the benchmarks and checked the performance increase compared to the default operation.

We see a pretty decent performance uplift compared to stock performance in most benchmarks. However, as expected, we also see some performance regression since the maximum frequency is now 5335 MHz which is 290 MHz lower than the maximum 1T boost frequency with Precision Boost enabled. We got a maximum improvement of +39.44% in PyPrime.

When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 5335 MHz and CCD1 effective clock is 5215 MHz with 1.121 volts. The average CPU temperature is 85.9 degrees Celsius. The average CPU package power is 210.6 watts.

When running the OCCT CPU SSE Stability Test, the average CPU CCD0 effective clock is 5335 MHz and CCD1 effective clock is 5215 MHz with 1.126 volts. The average CPU temperature is 79.1 degrees Celsius. The average CPU package power is 198.5 watts.

AMD Ryzen 9 9900X: Conclusion

Alright, let’s wrap this up.

The Ryzen 9 9900X was one of the SKUs available when Ryzen 9000 launched in the market. To me, it’s not that interesting of a SKU because it seems to consist of two weaker CCDs.

The good thing is that we could quite easily run EXPO-8000 and squeeze higher performance with tuning the memory subsystem. Also, CCD0 could undervolt quite substantially. However, the weakest of the two CCDs, CCD1, can’t clock high and can’t undervolt much.

Anyway, that’s it for this blog post.

I want to thank my Patreon supporters and YouTube members for supporting my work. If you have any questions or comments, please drop them in the comment section below. 

See you next time!

Leave A Comment