SkatterBencher #85: Ryzen 9 9950X3D Overclocked to 5900 MHz

We overclock and undervolt the AMD Ryzen 9 9950X3D to 5900 MHz with the ASUS ROG Crosshair X870E Hero motherboard and AIO liquid cooling.
I do this by leveraging advanced Precision Boost Overdrive tuning tools like Curve Shaper. In this video, I break down the Ryzen 9 9950X3D tuning process into five 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,
- Fourth, we try out the new Curve Shaper overclocking tool,
- And, finally, we a static manual overclock.
However, before we jump into overclocking, let us quickly review the hardware and benchmarks used in this video.
Table of Contents
AMD Ryzen 9 9950X3D: Introduction
The AMD Ryzen 9 9950X3D 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.

The Ryzen 9 9950X3D succeeds the 16-core Zen 4 Ryzen 9 7950X3D which we overclocked in SkatterBencher #56. It has a base clock of 4.3 GHz and a listed boost frequency of up to 5.7 GHz. Unlike its predecessor, the TDP is now 170W.
Platform Overview
The system we’re overclocking today consists of the following hardware.
Item | SKU | Price (USD) |
CPU | AMD Ryzen 9 9950X3D | 699 |
Motherboard | ASUS ROG Crosshair X870E Hero | 699 |
CPU Cooling | Enermax LIQMAXFLO 420 | 232 |
Memory | G.SKILL Trident Z5 Neo DDR5-8000 32GB | 170 |
Power Supply | XPG Fusion 1600W Titanium | 600 |
Graphics Card | GALAX GeForce RTX 4090 HOF | 3000 |
Storage | AGI 512GB NVMe M.2 Gen3 | 75 |
Chassis | Open Benchtable V2 | 200 |
Telemetry | BENCHLAB | 200 |
Benchmark Software
We use Windows 11 and the following benchmark applications to measure performance and ensure system stability.
AMD Ryzen 9 9950X3D: Stock Performance
Before starting overclocking, we must check the system performance at default settings. The default Precision Boost 2 parameters for the Ryzen 9 9950X3D are as follows:
- PPT: 200 W
- TDP: 170 W
- PCC: 244 W
- TDC CPU: 160 A
- EDC CPU: 225 A
- THM: 95 C
- VID: 1.40 V
- FMAX: 5550 MHz (CCD0), 5750 MHz (CCD1)
- FIT: 6838.1

Here is the benchmark performance at stock.



When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 4292 MHz and CCD1 effective clock is 4326 MHz with 1.000 volts. The average CPU temperature is 68.9 degrees Celsius. The average CPU package power is 184.3 watts.

When running the OCCT CPU SSE Stability Test, the average CPU CCD0 effective clock is 4681 MHz and CCD1 effective clock is 4783 MHz with 1.085 volts. The average CPU temperature is 71.7 degrees Celsius. The average CPU package power is 197.4 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.

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.

There are essentially 3 levels of Precision Boost Overdrive
- AMD’s stock values, which can be set by disabling PBO
- The motherboard vendor values, which are programmed into the BIOS to match the motherboard VRM specification and can be set by enabling PBO
- 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:

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.

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 I had to enable EXPO I to ensure my memory kit passed the OCCT Memory Stress test as EXPO II didn’t pass the stress test. By enabling EXPO I, we let the motherboard take care of the secondary and tertiary memory timings as opposed to strictly following the kit’s EXPO profile.
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 5522 MHZ and the average boost frequency gradually trails off to 5074 MHz when all cores are active. In light single-threaded workloads, all cores in CCD0 can boost to over 5.55 GHz and all cores in CCD1 boost to over 5.7 GHz.

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




While the 9950X3D is limited by power as we’ll see in the OCCT stress test results, in normal workloads it doesn’t seem to be too limited. We see a little improvement in multi-threaded applications and, thanks to the extra memory performance, a little more improvements in workloads that are also memory-dependent. The Geomean performance improvement is +1.99%, and we get a maximum improvement of +22.43% in PyPrime.
When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 4692 MHz and CCD1 effective clock is 4786 MHz with 1.101 volts. The average CPU temperature is 87.9 degrees Celsius. The average CPU package power is 270.4 watts.

When running the OCCT CPU SSE Stability Test, the average CPU CCD0 effective clock is 4988 MHz and CCD1 effective clock is 5108 MHz with 1.208 volts. The average CPU temperature is 93.6 degrees Celsius. The average CPU package power is 294.4 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 2 infrastructure limiters constraining the CPU performance. The limiter determines the maximum allowed processor frequency across all CPU cores inside your CPU.
On dual-CCD processors like the Ryzen 9 9950X3D, each CCD will have its own Fmax. The Fmax for CCD0 – the one with the 3D V-Cache – is 5550 MHz and the Fmax for CCD1 is 5750 MHz.
Boost Clock Override or Fmax Override is one of the tools available in the PBO 2 overclocker’s toolkit. It allows the user to override the arbitrary clock frequency limit between -1000 MHz and +200 MHz in steps of 25 MHz. The programmed Fmax limits of the Ryzen 9 9950X3D is 5550 and 5750 MHz. So, with a +200 Fmax Boost Override, the new maximum boost frequency for the CCDs is 5750 MHz and 5950 MHz..

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. Ultimately, the Precision Boost 2 algorithm still determines the actual operating frequency.
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.35V. The maximum voltage when a single core is active is 1.40V
The programmed FIT value of this particular Ryzen 9 9950X3D is 6838.1. So, with a 10X scaler, the new FIT value is 68381. We find that in an all-core workload, the maximum voltage increased from 1.35V to 1.36V. That’s not a big increase, but in voltage-constraint scenarios, every little bit helps!
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 the power consumption depending on the workload needs.
Here’s the default voltage-frequency curve of my Ryzen 9 9950X3D processor. You’ll notice that there are in fact two curves. That’s because the Ryzen 9 9950X3D has two CCDs with quite different characteristics.

We can immediately make a simple and redundant observation: the higher the frequency, the higher the voltage. For example: CCD0 requires only 1.1V for 4850 MHz. However, we need over 1.25V for 5350 MHz. This also applies to CCD1: 1.1V gets us 4925 MHz whereas we need 1.25V for 5550 MHz.

Although it’s not obvious from the V/F curve, the maximum allowed voltage is 1.35V when all cores are active. The Precision Boost 2 algorithm utilizes the V/F curve to find what’s the maximum possible frequency at 1.35V. With the default curve, that’s 5500 MHz for CCD0 and 5675 MHz for CCD1.

As I showed just a minute ago, we can use the Fmax Boost Override tool to increase the Fmax by another 200 MHz. That further extends the default V/F curves from 5550 MHz and 5750 MHz to 5950 MHz. Note that all the other Precision Boost rules still apply. So, even though we have a higher frequency ceiling, because the frequency points are above the 1.35V threshold we won’t see those frequency boosts in all-core workloads, however light they may be.

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, for 5.4 GHz CCD0 needed about 1.273V and CCD1 needed 1.199V by default, but with a -20 Curve Optimizer, now we only need 1.157V and 1.124V respectively!

Moreover, the frequency is also boosting higher! The highest frequency with all sixteen cores active has increased by 100 MHz from 5500 to 5600 MHz on CCD0 and from 5675 to 5775 MHz on CCD1. These higher frequencies are now possible because our Curve Optimizer undervolting pulled them below the 1.350V threshold.

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.
- First, undervolting lowers the operating voltage, temperature, and power consumption.
- 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:
- Curve Optimizer impacts the entire voltage-frequency curve. So, it affects stability across the entire range of operating frequencies: from 600 to 6000 MHz.
- 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.
Of course, having a CPU with two CCDs which each have their own V/F curve makes the tuning process less straightforward than with CPUs that have a single CCD.
Curve Optimizer is available on a per CPU, per CCD, and per Core basis.
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 a dynamic voltage-frequency scaling technology 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.

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
So, when I increase the negative Curve Optimizer setting in steps of 5 points, I quickly 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.
For dual-CCD Ryzen CPUs I strongly recommend to set a per-CCD Curve Optimizer because the CCDs are usually quite different in quality. They have a different Fmax after all. With this CPU, I could set CCD0 to -25 and CCD1 to -20.
Be aware, however, that the Curve Optimizer will impact the entire curve, including the part of the curve we extended with Fmax Boost Override. In some cases that can introduce instability because those really high frequencies need high voltage. I found that for my CPU, with the -25 and -20 Curve Optimizer settings, I couldn’t increase the Fmax boost override beyond +50 MHz.
Practically, that means the CPU would boost more aggressively in all-core workloads but would be limited to 5600 and 5800 MHz for CCD0 and CCD1 respectively.
BIOS Settings & Benchmark Results
Upon entering 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 Advanced
- Set PBO Limits to Motherboard
- Set 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 50
- Enter the Curve Optimizer submenu
- Set Curve Optimizer to Per CCD
- Set CCD 0 Curve Optimizer Sign to Negative
- Set CCD 0 Curve Optimizer Magnitude to 25
- Set CCD 1 Curve Optimizer Sign to Negative
- Set CCD 1 Curve Optimizer Magnitude to 20
- Set Curve Optimizer to Per CCD
- Leave the Curve Optimizer submenu
- Enter the Precision Boost Overdrive submenu
Then save and exit the BIOS.
The boost frequency at 1 active thread is about 5675 MHZ and the average boost frequency gradually trails off to 5138 MHz when all cores are active. In light single-threaded workloads, all cores in CCD0 can boost to over 5.6 GHz and all cores in CCD1 boost to about 5775 MHz.

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




Fmax Boost Override, Scalar, and Curve Optimizer work together to provide us with higher and longer frequency boosts in all kinds of workloads. We find that the performance improves across the board in pretty much every workload, except gaming where the improvement is not so visible. The geomean performance improves another 2 percentage points and we get a maximum improvement of +23.45% in PyPrime.
When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 4988 MHz and CCD1 effective clock is 5086 MHz with 1.083 volts. The average CPU temperature is 89.1 degrees Celsius. The average CPU package power is 267.3 watts.

When running the OCCT CPU SSE Stability Test, the average CPU CCD0 effective clock is 5129 MHz and CCD1 effective clock is 5177 MHz with 1.114 volts. The average CPU temperature is 78.7 degrees Celsius. The average CPU package power is 236.9 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 9950X3D, 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.

The standard operating frequency of the infinity fabric is 1800 MHz, but on many boards, you’ll find it runs over 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.
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.
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.


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.
DRAM Timings 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.
Timing Tuning
It’s the first time I’m trying DDR5-8000 with AMD processors and, fortunately, I was able to run it out of the box by enabling this G.SKILL kit’s EXPO profile. However, for tuning the sub-timings I had to start from scratch.
The Hynix 7600 memory preset turned out not to be stable as it would throw errors in the OCCT Memory Stress test almost instantly. To fine-tune the timings, I try setting certain timings back to its EXPO value until I found 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: tRDDL, tRDDS,tWTRL,tWTRS
By checking the impact of adjusting each group’s timings I found that it were the -L and -S suffix sub-timings causing the memory instability. By relaxing those just a bit, the memory was stable.

Here are the final optimized memory timings for this memory kit.
Memory Kit
VENDOR G.SKILL
SKU F5-8000J3848H16GX2-TZ5RK
DRAM IC Hynix A-DIE
PMIC Richtek
Frequency
MCLK 4000 (DDR5-8000)
UCLK 2000
Voltage
DRAM VDD 1.45
DRAM VDDQ 1.45
DRAM VPP 1.80
SOC 1.25
VDDIO 1.40
VDDP 1.05
Primary Timings
tCL 36
tRCD 46
tRCDWR 46
tRP 46
tRAS 38
Secondary Timings
tRC 62
tWR 48
tREFI 65535
tRFC1 470
tRFC2 430
tRFCsb 410
tRTP 12
tRRDL 12
tRDDS 8
tFAW 16
tWTRL 20
tWTRS 8
tRDRDSCL 8
tRDRDSC 1
tRDRDSD 1
tRDRDDD 1
tWRWRSCL 8
tWRWRSC 1
tWRWRSD 1
tWRWRDD 1
tWRRD 4
tRDWR 14
Tertiary Timings
tMOD 56
tPHYWRD 6
tPHYWRL 22
tCWL 34
tCKE 0
tSTAG 7
tMRD 56
tMRDPDA 32
tPHYRDL 38
After the tuning, our AIDA64 performance improved quite significantly. We got about +50% extra bandwidth and +25% better latency by enabling EXPO. The memory tuning then added another 12-15% on top of that.

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 tRRDL to 12
- Set tRDDS to 8
- Set tWRTL to 20
- Set tWRTS to 8
- Enter the Memory Presets submenu
- Leave the DRAM Timing Control submenu
- 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
- Enter the Infinity Fabric Frequency and Dividers submenu
- Leave the DDR and Infinity Fabric Frequency/Timings submenu
- Enter the Precision Boost Overdrive submenu
- Set Precision Boost Overdrive to Advanced
- Set PBO Limits to Motherboard
- Set 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 50
- Enter the Curve Optimizer submenu
- Set Curve Optimizer to Per CCD
- Set CCD 0 Curve Optimizer Sign to Negative
- Set CCD 0 Curve Optimizer Magnitude to 25
- Set CCD 1 Curve Optimizer Sign to Negative
- Set CCD 1 Curve Optimizer Magnitude to 20
- Set Curve Optimizer to Per CCD
- Leave the Curve Optimizer submenu
- Enter the DDR and Infinity Fabric Frequency/Timings submenu
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 some smaller impact in certain games. The Geomean performance improves another 1.85 percentage points and we get a maximum improvement of +47.85% in PyPrime.
OC Strategy #4: Curve Shaper
In our fourth overclocking strategy, we turn to Curve Shaper to address the tuning limits we encountered in OC Strategy #2. Specifically, we want to find a path to enable the maximum Fmax boost override and, if possible, increase the undervolt for certain workloads.
Curve Shaper
Curve Shaper is the newly introduced tool of the Precision Boost Overdrive 2 toolkit. It was introduced alongside the Zen 5 Ryzen 9000 “Granite Ridge” processors. I had an in-depth look at the tool in a different post on this blog.

In theory, it seems Curve Shaper is pretty straightforward: you get fifteen additional tunable points across the V/F curve. But the devil is in the details because AMD’s Precision Boost 2 technology doesn’t really work with V/F points. So, instead of getting a list of specific tunable V/F points, we get five frequency regions and three temperatures:
Frequency Regions:
- Minimum frequency (“idle”)
- Low frequency (“background tasks”)
- Medium frequency (“high core count workloads”)
- High frequency (“gaming workloads”)
- Max frequency (“1T workloads”)
Temperatures:
- Low temperature (“idle”) = -5°C
- Medium temperature (“1T gaming workloads”) = 50°C
- High temperature (“stress test workloads”) = 90°C
The regions have a bit of a vague terminology and are not clearly defined. I will get back to that in a minute. The temperature points are more straightforward as they’re defined as -5, 50, and 90 degrees Celsius.
The idea of Curve Shaper is that you can adjust the voltage-frequency curve in more specific areas than with Curve Optimizer. For example, you could say that you only want to undervolt in the High Frequency region for temperatures between 50 to 90 degrees Celsius. That would be a common approach to increase the operating frequency in gaming workloads.
In our case, we want to use Curve Shaper for two reasons:
- Constrain the undervolt in the peak frequency region to stabilize the Fmax +200 setting.
- Explore additional undervolting opportunities for all-core workloads.

For the first objective, we can use Curve Shaper values for high and maximum frequency regions. For the second objective, we can use negative Curve Shaper values for low and medium frequency regions.
Let’s get a bit more practical with the process.
Curve Shaper Tuning Process
Similar to Curve Optimizer, the manual tuning process for Curve Shaper can become quite convoluted since it affects the CPU core stability in all scenarios ranging from very light single-threaded workloads to heavy all-core workloads.
The first goal was to ensure stability at the highest peak frequencies. So, I set Fmax Boost Override to +200 and look to adjust the High Frequency and Max Frequency Curve Shaper parameters. Appropriate stability tests for this purpose are single-threaded and all-core light workloads such as Cinebench R23 1T and Y-Cruncher BKT.
I found it very tricky to get stability with Max Frequency Curve Shaper below -10 while the High Frequency Curve Shaper point could go to -25. That lines up with the instability issues we saw in OC Strategy #2 with a more aggressive Curve Optimizer and a big Fmax boost override.
The second goal was to explore any additional undervolt opportunity in heavier all-core workloads. For this purpose, we can use the Low and Medium Frequency Curve Shaper Points. The typical workloads are used for stability checking, including OCCT, Y-Cruncher, AI Benchmark, and Cinebench. I found that I could max out the undervolt at -30 Curve Shaper.
The Min Frequency Curve Shaper point isn’t that useful as we typically don’t go that low in boost frequency in any kind of workload. Since it would affect the voltage at idle, it’s recommended to keep it at default. That can also help rare instabilities where the frequency is boosting from idle to max frequency in ultra light loads.
Here’s the resulting curve with a Low and Medium Curve Shaper of -30, a High Frequency Curve Shaper of -25, and a Max Frequency Curve Shaper of -10.


Curve Shaper is a very powerful tuning tool, and this example perfectly captures its core strength: adjusting the under- and overvolt at different parts of the curve which maximizes the frequency in light and heavy workloads.
We can compare it with the Curve Optimized curve from OC Strategy #2. We can clearly see the trade-off between extended frequency range and the use of less aggressive undervolting at the upper end of the curve. However, we squeeze a little more frequency at the lower end of the curve because of the more aggressive undervolt with Curve Shaper.
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 tRRDL to 12
- Set tRDDS to 8
- Set tWRTL to 20
- Set tWRTS to 8
- Enter the Memory Presets submenu
- Leave the DRAM Timing Control submenu
- 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
- Enter the Infinity Fabric Frequency and Dividers submenu
- Leave the DDR and Infinity Fabric Frequency/Timings submenu
- Enter the Precision Boost Overdrive submenu
- Set Precision Boost Overdrive to Advanced
- Set PBO Limits to Motherboard
- Set 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 Shaper submenu
- For all except Min Frequency, set Low, Med, and High Temperature to Enable
- For Low and Med frequency, set Sign to Negative and Magnitude to 30
- For High frequency, set Sign to Negative and Magnitude to 25
- For Max frequency, set Sign to Negative and Magnitude to 10
- Enter the DDR and Infinity Fabric Frequency/Timings submenu
Then save and exit the BIOS.
The boost frequency at 1 active thread is about 5588 MHZ and the average boost frequency gradually trails off to 5160 MHz when all cores are active. In light single-threaded workloads, all cores in CCD0 can boost to over 5630 MHz and all cores in CCD1 boost to over 5.8 GHz.

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




While we’re now seeing a maximum frequency boost higher than when using Curve Optimizer, the impact in actual workloads is rather limited due the voltage constraint. So, we get ever so slightly better performance across the board but nothing to write home about. The Geomean performance improves another 0.5 percentage points, and we get a maximum improvement of +47.00% in PyPrime.
When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 5021 MHz and CCD1 effective clock is 5088 MHz with 1.082 volts. The average CPU temperature is 89.4 degrees Celsius. The average CPU package power is 272.2 watts.

When running the OCCT CPU SSE Stability Test, the average CPU CCD0 effective clock is 5155 MHz and CCD1 effective clock is 5209 MHz with 1.126 volts. The average CPU temperature is 77.4 degrees Celsius. The average CPU package power is 240.7 watts.

OC Strategy #5: 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 technology in low-threaded benchmark applications. So, whereas this 9950X3D can boost up to 5750 MHz with Precision Boost, it will be limited to your set fixed frequency when manually overclocking.
To better understand the performance tuning opportunities embedded in the Ryzen 9 9950X3D processor, let’s look at its 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.
The CCLK PLL 100MHz reference clock drives the 200 MHz VCO, which is then multiplied by an FID and divided by a DID. As a whole, this provides CPU clock frequency granularity of 25 MHz.
As with Zen 4 Raphael, 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. 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 the 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. On CPUs with multiple CCXs, like this Ryzen 9 9950X3D, each CCX has its own VDDCR_CPU voltage rail, but the voltage will be identical. The voltage rails 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. On CPUs where there are multiple CCXs, each CCX has its own VDDCR_VDDM voltage rail. 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.
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 by itself and instead we have to correctly configure it by ourselves.
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 pick the 30 min OCCT AVX2 CPU Stability Test.
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.
In my case, I pick a CCX ratio of 48X for both CCDs and a VID of 1.10V and level 6 voltage load-line. We find that this gives a temperature of 70 degrees Celsius and an effective voltage of 1.0V. That means we can further increase the voltage until we get to about 90 degrees.
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 a CPU ratio of 52.00X for CCD0, 52.50X for CCD1, and a Core VID of 1.235V which under high load drops to about 1.13V.

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

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 CPU Core Ratio (Per CCX) submenu
- Set Core VID to 1.235
- Set CCX0 Ratio to 52.00
- Set CCX1 Ratio to 52.50
- Leave the CPU Core Ratio (Per CCX) submenu
- 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 tRRDL to 12
- Set tRDDS to 8
- Set tWRTL to 20
- Set tWRTS to 8
- Enter the Memory Presets submenu
- Leave the DRAM Timing Control submenu
- Enter the DIGI+ VRM submenu
- Set CPU Load-line Calibration to Level 6
- Leave the DIGI+ VRM submenu
Then save and exit the BIOS.
The boost frequency at 1 active thread is about 5250 MHZ and the average boost frequency gradually trails off to 5226 MHz when all cores are active. In light single-threaded workloads, all cores in CCD0 can boost to over 5.2 GHz and all cores in CCD1 boost to about 5.25 GHz.

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 5250 MHz which is 500 MHz lower than the maximum 1T boost frequency with Precision Boost enabled. We got a maximum improvement of +43.83% in PyPrime.
When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 5200 MHz and CCD1 effective clock is 5250 MHz with 1.127 volts. The average CPU temperature is 91.0 degrees Celsius. The average CPU package power is 292.1 watts.

When running the OCCT CPU AVX2 Stability Test, the average CPU CCD0 effective clock is 5200 MHz and CCD1 effective clock is 5250 MHz with 1.138 volts. The average CPU temperature is 79.7 degrees Celsius. The average CPU package power is 264.5 watts.

AMD Ryzen 9 9950X3D: Conclusion
Alright, let us wrap this up.
The Ryzen 9 9950X3D is AMD’s flagship processor model for Ryzen 9000 on desktop. The dual-CCD chip once again features one CCD with 3D V-cache and one without.
The 3D V-Cache chip actually has pretty decent overclocking headroom but that’s held back by the other CCD which has limited headroom. Since we only have one Fmax boost override parameter, it’s not possible to push the 3D V-cache cores to their maximum potential.
The non-V-Cache CCD was the best I’ve seen so far in terms of default V/F curve. It boosts to 5.6 GHz with 1.3V which is higher than any other Ryzen 9000 CCD I’ve tried before. Unfortunately, the overclocking headroom is pretty limited and I couldn’t get it to boost much higher except for when using Curve Shaper.
Anyway, that’s it for this guide. 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!
arcanazen
Thanks for sharing things, I was able to push my 9950x3D with your PBO settings including curve shaper, first time I use it and I learned about it. It is rock solid, no crashes vs curve.
Miguel
Hello,
Thanks a lot, very use full. Just have a problem with exactly the samedi HW: can’t boot with Infinity Fabric Frequency and Dividers higher than 2000. I changed several times the ram modules to try but nothing to do. What can I try to archive the boot sequence? Thanks again.
Ryan
Thank you for posting. Would disabling the non-X3D CCD allow for better overclocking than a 9800X3D?
Pieter
In general, it seems the CCD0 (V-Cache) CCD of the 9950X3D is higher grade than the 98X3D CCD. So from that perspective, probably. However, it’s hard to say because it depends on the particular CPU.
I believe AMD’s strategy is to re-purpose some Ryzen 5 grade CCDs with lower Fmax capability to upsell as Ryzen 7 with V-Cache. However, if demand for the 9800X3D is much higher than the supply of low-Fmax-CCDs, then they’ll use higher frequency CCDs to fulfill the demand. That’s why we saw some dual-CCD 7800X3Ds in the market (repurposing Ryzen 9 7000X3D). So, you might find some high quality 9800X3D that have higher frequency headroom than the 9950X3D CCD0.
Excelsior
Why the massive power draw difference with the 9950X? Is the HTFmax still present?
Pieter
I didn’t spot the HTFmax limiter
SX
How about trying to disable the normal CCD and push X3D one to the max?