SkatterBencher #90: Ryzen 7 9700F Overclocked to 5800 MHz

Today we undervolt and overclock the AMD Ryzen 7 9700F processor up to 5800 MHz. I do this by leveraging advanced AMD overclocking tools like asynchronous ECLK and Curve Shaper.
In this blog post, I break down the Ryzen 7 9700F 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 ECLK and Curve Shaper,
- 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 7 9700F: Introduction
The AMD Ryzen 7 9700F 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 8-core Ryzen 7 9700F is the IGP-less version of the Ryzen 7 9700X which we overclocked in SkatterBencher #78. It has a base clock of 3.8 GHz and a listed boost frequency of up to 5.55 GHz. Similar to the 9700X, its TDP is 65W.
To my surprise, it seems that the 9700F is equipped with a new GNR-B1 revision as opposed to B0 revision we’ve seen up to now. Unfortunately, I can’t tell you want the differences are because, well, I don’t know.

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

Item | SKU | Price (USD) |
CPU | AMD Ryzen 7 9700F | 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 | AORUS RGB NVMe M.2 512GB Gen4 | 75 |
Chassis | Open Benchtable V2 | 200 |
Telemetry | BENCHLAB | 200 |
Benchmarks, Games & Tools
We use Windows 11 and the following benchmark applications and games to measure performance and ensure system stability.
BENCHMARKS | LINK |
Pyprime 2.0 | https://github.com/mbntr/PYPrime-2.x |
7-Zip 19.0 | https://www.7-zip.org/ |
IndigoBench | https://www.indigorenderer.com/indigobench |
Geekbench 6 | https://www.geekbench.com/ |
Geekbench AI | https://www.geekbench.com/ai/ |
Cinebench 2024.1 | https://www.maxon.net/en/cinebench/ |
CPU-Z | https://www.cpuid.com/softwares/cpu-z.html |
V-Ray 6 | https://www.chaosgroup.com/vray/benchmark |
Corona 10 Benchmark | https://corona-renderer.com/benchmark |
AI-Benchmark | https://ai-benchmark.com/ |
Y-Cruncher 5B | http://www.numberworld.org/y-cruncher/ |
PugetBench for Creators | https://www.pugetsystems.com/pugetbench/creators/ |
3DMark CPU Profile | https://www.3dmark.com/ |
OCCT | https://www.ocbase.com/ |
AIDA64 | https://www.aida64.com/ |
GAMES | LINK |
Counter Strike 2 | https://store.steampowered.com/app/730/CounterStrike_2/ |
Returnal | https://store.steampowered.com/app/1649240/Returnal/ |
Black Myth: Wukong | https://store.steampowered.com/app/3132990/Black_Myth_Wukong_Benchmark_Tool/ |
Shadow of the Tomb Raider | https://store.steampowered.com/app/750920/Shadow_of_the_Tomb_Raider_Definitive_Edition/ |
Monster Hunter Wilds | https://www.monsterhunter.com/wilds/en-us/benchmark/ |
Bright Memory: Infinite | http://benchmark.finalfantasyxv.com/na/ |
Age of Mythology Retold | https://store.steampowered.com/app/1934680/Age_of_Mythology_Retold/ |
Forza Motorsport | https://store.steampowered.com/app/2440510/Forza_Motorsport/ |
Homeworld 3 | https://store.steampowered.com/app/1840080/Homeworld_3/ |
I use the following tools to check and log system telemetry, adjust clock frequencies, and launch benchmarks.
TOOLS | LINK |
Benchmate | https://benchmate.org/ |
CPU-Z | https://www.cpuid.com/softwares/cpu-z.html |
HWiNFO | https://www.hwinfo.com/ |
NopBench | https://skatterbencher.com/nopbench/ |
Shamino OCPak | https://rog-forum.asus.com/t5/amd-600-series/x670-x870-resource-thread/m-p/901576/ |
Ryzen LoopFmax | https://skatterbencher.com/ryzen-loopfmax/ |
AMD Ryzen 7 9700F: Stock Performance
Before starting overclocking, we must check the system performance at default settings. The default Precision Boost 2 parameters for the Ryzen 7 9700F are as follows:
- PPT: 88 W
- TDP: 65 W
- PCC: 244 W
- TDC CPU: 75 A
- EDC CPU: 150 A
- THM: 95 C
- VID: 1.40 V
- FMAX: 5550 MHz
- FIT: 1991.1

The default V/F curve clocks to 5 GHz at 1.1V and 5.4 GHz at 1.25 V.
Here is the benchmark performance at stock:
- PyPrime 2.0 32B: 221.440 sec
- 7-Zip 19.0: 119,782 mips
- Indigobench (Bedroom): 2.795 Msamples
- Geekbench 6 (Single): 3,342 points
- Geekbench 6 (Multi): 16,093 points
- Geekbench AI (ONNX, Q): 12,645 points
- Cinebench 2024.1 (Single): 135 points
- Cinebench 2024.1 (Multi): 1,195 points
- CPU-Z V17.01.64 (Single): 858.1 points
- CPU-Z V17.01.64 (Multi): 8,347.2 points
- V-Ray 6: 24,677 vsamples
- Corona 10 Benchmark: 7,450,705 rays/s
- AI Benchmark: 6,138 points
- Y-Cruncher 5B: 144.507 sec
- PugetBench for Creators (Resolve, Basic): 9,781 points
Here is the game performance at stock:
- Counter Strike 2 (1080P, HIGH): 598.9 fps
- Tomb Raider (HIGH, 1080P): 283 fps
- Returnal (1080P, EPIC): 240 fps
- Black Myth (1080P, CINEMATIC, RT, DLSS): 117 fps
- Monster Hunter Wilds: (1080P, ULTRA, FG): 201.15 fps
- Bright Memory (1080P): 306 fps
- Age of Mythology: 121.83 fps
- Forza Motorsport (1080P, ULTRA): 310.5 fps
- Homeworld 3: 113.32 fps
Here are the 3DMark CPU Profile and OCCT Benchmark scores at stock:
- 1 Thread: 1,281 points
- 2 Threads: 2,529 points
- 4 Threads: 4,910 points
- 8 Threads: 8,475 points
- 16 Threads: 9,352 points
- Max Threads: 9,382 points
- SSE Single: 114.86 points
- SSE Multi: 831.78 points
- AVX Single: 239.16 points
- AVX Multi: 1,688.55 points
Here are the AIDA64 memory benchmark scores at stock:
- Memory Read Bandwidth: 51,959 MB/s
- Memory Write Bandwidth: 63,542 MB/s
- Memory Copy Bandwidth: 47,909 MB/s
- Memory Latency: 93.1 ns




When running the OCCT CPU AVX2 Stability Test, the average CPU effective clock is 4098 MHz with 0.929 volts. The average CPU temperature is 62.4 degrees Celsius. The average CPU package power is 87.1 watts.

When running the OCCT CPU SSE Stability Test, the average CPU effective clock is 4496 MHz with 0.992 volts. The average CPU temperature is 62.9 degrees Celsius. The average CPU package power is 87.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.

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 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 reduce the memory frequency from the EXPO-rated DDR5-8000 to DDR5-7800 to ensure my memory kit passed the OCCT Memory Stress test.
BIOS Settings & Benchmark Results
Upon entering the BIOS
- Go to the Extreme Tweaker menu
- Set Ai Overclock Tuner to EXPO I
- Set Memory Frequency to DDR5-7800
- 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 5516 MHZ and the average boost frequency gradually trails off to 5221 MHz when all cores are active. In light single-threaded workloads, all cores can boost to over 5.55 GHz.

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





Despite the Ryzen 7 9700F having only 8 cores, the performance is restricted by its 65W TDP. By enabling PBO, we can easily more than double the power budget in all-core workloads. Combined that with enabling higher memory speeds and it translates into pretty decent performance gains across the board. The Geomean performance improvement is +3.68%, and we get a maximum benchmark improvement of +18.17% in PyPrime.
When running the OCCT CPU AVX2 Stability Test, the average CPU effective clock is 5175 MHz with 1.261 volts. The average CPU temperature is 95.2 degrees Celsius. The average CPU package power is 184.7 watts.

When running the OCCT CPU SSE Stability Test, the average CPU effective clock is 5169 MHz with 1.255 volts. The average CPU temperature is 95.2 degrees Celsius. The average CPU package power is 182.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 infrastructure limiters constraining the CPU performance. The limiter determines the maximum allowed processor frequency across all CPU cores inside your CPU.
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 Fmax limit of the Ryzen 7 9700F is 5550 MHz. So, with a +200 Fmax Boost Override, the new maximum boost frequency is 5750 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.335V. The maximum voltage when a single core is active is 1.375V.

The programmed FIT value of this particular Ryzen 7 9700F is 1991.1. So, with a 10X scaler, the new FIT value is 19911. We find that in an all-core workload, the maximum voltage increased from 1.335V to 1.35V. 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 power consumption depending on the workload needs.
Here’s the default voltage-frequency curve of my Ryzen 7 9700F processor. We can immediately make a simple and redundant observation: the higher the frequency, the higher the voltage. For example: 4650 MHz requires only 1.03V, whereas we need over 1.2V for 5300 MHz.

Although it’s not obvious from the V/F curve, the maximum allowed voltage in an all-core workload is 1.335V. The Precision Boost 2 algorithm utilizes the V/F curve to find what’s the maximum possible frequency at 1.335V. With the default curve, that’s 5500 MHz at 1.315V.

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 5550 MHz to 5750 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.1 GHz we needed about 1.125V by default, but with a -30 Curve Optimizer, now we only need 1.035V!

Moreover, the frequency is also boosting higher! The highest frequency with all sixteen cores active has increased to 5700 MHz. 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.
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 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.
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.
I ultimately ended up with a Curve Optimizer setting of -30.
BIOS Settings & Benchmark Results
Upon entering the BIOS
- Go to the Extreme Tweaker menu
- Set Ai Overclock Tuner to EXPO I
- Set Memory Frequency to DDR5-7800
- 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 200
- Enter the Curve Optimizer submenu
- Set Curve Optimizer to All Cores
- Set All Core Curve Optimizer Sign to Negative
- Set All Core Curve Optimizer Sign to 30
- Set Curve Optimizer to All Cores
- 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 5695 MHZ and the average boost frequency gradually trails off to 5379 MHz when all cores are active. In light single-threaded workloads, all cores can boost to over 5.75 GHz.

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 7 9700F with a nice frequency and performance bump. The Geomean performance improves by 4 and half percentage points, and we get a maximum benchmark improvement of +21.86% in AI Benchmark.
When running the OCCT CPU AVX2 Stability Test, the average CPU effective clock is 5189 MHz with 1.106 volts. The average CPU temperature is 95.2 degrees Celsius. The average CPU package power is 172.4 watts.

When running the OCCT CPU SSE Stability Test, the average CPU effective clock is 5355 MHz with 1.193 volts. The average CPU temperature is 95.2 degrees Celsius. The average CPU package power is 174.3 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 7 9700F, 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 two 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.

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.
System Memory 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.
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. 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
By checking the impact of adjusting each group’s timings I found that it was 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 3900 (DDR5-7800)
UCLK 1950
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 +20% extra bandwidth and lower latency by enabling EXPO. The memory tuning then added another 20% improvement 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
- Set Memory Frequency to DDR5-7800
- 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 Optimizer submenu
- Set Curve Optimizer to All Cores
- Set All Core Curve Optimizer Sign to Negative
- Set All Core Curve Optimizer Sign to 30
- Set Curve Optimizer to All Cores
- 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 a decent impact in certain games like Homeworld 3. The Geomean performance improves another 3 and a half percentage points and we get a maximum benchmark performance improvement of +45.14% in PyPrime.





OC Strategy #4: Async ECLK & Curve Shaper
In our fourth overclocking strategy, we take advantage of ECLK mode. ECLK stands for external clock and is precisely what the term suggests: an external clock generator. With the external clock generator, we can warp the Precision Boost V/F curve to achieve higher frequencies.
Granite Ridge ECLK Overview
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 external clocks are inputs to the FCH. There you can configure how you want to use the external clocks. In addition to the standard internal CGPLL, Granite Ridge supports up to two external clock modes. They’re called eCLK0 Mode and eCLK1 Mode.
In eCLK0 Mode, an external 100MHz reference clock is used for both the CPU and SOC PLLs. In other words, it’s a reference clock that affects the CPU core clocks and the PCIe and SATA clocks.
In eCLK1 Mode, there are two distinct external 100MHz reference clocks. One clock provides the 100MHz input for the CPU PLL, and another provides the 100MHz reference clock for the SOC PLLs.


The overclocking strategy with ECLK is the polar opposite of what we’re used to with Ryzen CPUs. OC Strategy #2 shows that Ryzen overclocking is typically done with a negative curve optimizer. That pushes the Precision Boost algorithm to reach higher boost frequencies.
With ECLK, we still build on the factory-fused VFT curve but adjust the frequency by adjusting the reference clock. A key challenge with using ECLK is that we’re applying a linear stretch on a non-linear V/F curve. Let me explain with an example.
Here you can see two V/F curves of the Ryzen 7 9700F: the default curve and the one from OC Strategy #2 with the -30 curve optimizer. We can see the law of diminishing marginal returns: the higher the frequency, the less additional frequency with every step of additional voltage. For example: on the default curve, increasing the voltage 40mV from 1.025V to 1.065V gives an extra 250 MHz (4875-4625), but increasing from 1.155V to 1.195V (also 40mV) only gives an extra 100 MHz (5275-5175).

The law of diminishing returns also applies to our undervolt. With a -30 curve optimizer we get an extra 400 MHz at 1.035V (5100-4700) but only +250 MHz at 1.2V (5550-5300).

We can simulate the V/F curve with adjusted ECLK by multiplying the stock V/F curve with our target ECLK frequency. For example, if we were to increase the ECLK by 5%, setting it to 105 MHz, then the resulting curve would look as follows.

We can make three key observations:
- The frequency increases by 225 to 275 MHz across the entire curve and doesn’t show any diminishing returns.
- While the voltage for a given frequency is lower than the default curve, it is higher than with our Curve Optimized curve. For example, for 5 GHz we need 1.1V by default, about 1.045V when using 105 MHz ECLK, but only 1.01V when Curve Optimized.
- The curve now extends well beyond the 5750 MHz Fmax for which there’s no guaranteed operating voltage defined by the factory-fused V/F curve. So, we don’t know if it’s stable there.
Here’s what the actual V/F curve looks like with 105 MHz ECLK. You can see it’s pretty close to our simulated curve.

Before Ryzen 9000, we could only rely on Curve Optimizer to tune the curve. That meant we could use a positive Curve Optimizer to squeeze higher frequency at the upper end of the curve by sacrificing frequency (and thus performance) at the lower end of the curve.
However, with Ryzen 9000 CPUs we have a critical new tool in the overclocking toolbox: Curve Shaper.
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 guide on this website.

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:
- Explore additional undervolting opportunities for all-core workloads.
- Constrain the undervolt in the peak frequency region to stabilize the max frequency targets.
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 explore any additional undervolt opportunity in heavier all-core workloads. For this purpose, we can use the Min, Low, and Medium Frequency Curve Shaper Points. The typical workloads used for stability checking include OCCT, Y-Cruncher, AI Benchmark, and Cinebench. I found that I could max out the undervolt at -30 Curve Shaper.

The new V/F curve looks very aggressive: it undervolts more than our Curve Optimized curve from OC Strategy #2. And, as it turns out, it wasn’t super stable in light, high-frequency scenarios like loading up a game.
The second 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 started off by setting them both to +30. Here’s what the new curve looks like: up to 5-ish GHz we’re on par with the previous curve, but then it deviates sharply and crosses the curve from OC Strategy #2 at around 5.35 GHz. Eventually it ends up significantly above the Curve Optimized curve at the high frequency regions.

This was stable, but we lost some frequency in light single threaded workloads. So, I started reducing the overvolt for the High Frequency Curve Shaper point. I found that +5 was the lowest stable setting.
Here’s the resulting curve with a Minimum, Low, and Medium Curve Shaper of -30, a High Frequency Curve Shaper of +5, and a Max Frequency Curve Shaper of +30. We can compare it with the Curve Optimized curve from OC Strategy #2. We can see there’s a little more undervolting at the lower end of the curve, then nearly the same undervolt at 5.5 GHz, then again more undervolt at the higher end of the curve.

Since the maximum allowed voltage is 1.4V, it doesn’t make much sense to set the Fmax Boost Override much higher than +25 either. In this case, +25 means a Fmax of 5575 MHz, which turns into 5853 MHz with 105 MHz ECLK. That’s still higher than the 5.8 GHz we see with the maximum allowed voltage.

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.
BIOS Settings & Benchmark Results
Upon entering the BIOS
- Go to the Extreme Tweaker menu
- Set Ai Overclock Tuner to EXPO I
- Set eCLK Mode to Asynchronous mode
- Set BCLK2 Frequency to 105
- Set Memory Frequency to DDR5-7800
- 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 25
- Enter the Curve Shaper submenu
- For all, set Low, Med, and High Temperature to Enable
- For Min, Low, and Med Frequency, set Sign to Negative and Magnitude to 30
- For High and Max Frequency, set Sign to Positive
- For High Frequency, set Magnitude to 5
- For Max Frequency, set Magnitude to 30
- Enter the DDR and Infinity Fabric Frequency/Timings submenu
Then save and exit the BIOS.
The boost frequency at 1 active thread is about 5757 MHZ and the average boost frequency gradually trails off to 5471 MHz when all cores are active. In light single-threaded workloads, six out of the eight Zen 5 cores can boost to over 5.8 GHz.

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





Overclocking with asynchronous eCLK is somewhat of an academic exercise because its main purpose is to overcome the Precision Boost Fmax limit in 1T scenarios. We can see there’s a small performance improvement in the single-threaded benchmark applications. But for the most part, the performance is identical to when we just use Curve Optimizer. The Geomean performance improves by another 0.8 percentage points, and we get a maximum benchmark improvement of +45.28% in PyPrime.
When running the OCCT CPU AVX2 Stability Test, the average CPU effective clock is 5323 MHz with 1.105 volts. The average CPU temperature is 95.2 degrees Celsius. The average CPU package power is 174.6 watts.

When running the OCCT CPU SSE Stability Test, the average CPU effective clock is 5458 MHz with 1.199 volts. The average CPU temperature is 95.2 degrees Celsius. The average CPU package power is 178.0 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 9700F can boost up to 5550 MHz with Precision Boost, 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.
- It’s much simpler and usually faster than tuning with the advanced overclocking tools from the Precision Boost Overdrive 2 toolkit.
- 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.
- 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 7 9700F 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.

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. 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 two internal voltage regulators: VDDCR_CPU and VDDCR_VDDM.
- 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
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.
ROG X870E Hero 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 itself and instead we have to correctly configure it by ourselves.
Ryzen 9 9700F 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 AVX2 CPU Stability Test. However, it turns out that wasn’t actually our limiting bottleneck because AVX-512 workloads like Y-Cruncher were much more sensitive than the all-core AVX2 stress 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.
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 5.2 GHz with about 1.1V. So, I started the manual tuning process with a CCX ratio of 52X, a VID of 1.2V, and LLC set to Level 6. We find that this gives a temperature of 85 degrees Celsius and an effective voltage of 1.13V in OCCT AVX512. That means we can slightly 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 54.35X and a Core VID of 1.225V which under high load drops to about 1.15V with LoadLine Calibration set to Level 6.

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 a 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 Memory Frequency to DDR5-7800
- 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 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 CPU Core Ratio (Per CCX) submenu
- Set Core VID to 1.225
- Set CCX0 Ratio to 54.35
- 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
Then save and exit the BIOS.
The boost frequency at 1 active thread is 5435 MHz and remains so even when all cores are active. Every Zen 5 core can boost to 5435 MHz in light workloads.

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 5435 MHz which is 115 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 AVX512 Stability Test, the average CPU effective clock is 5435 MHz with 1.165 volts. The average CPU temperature is 87.3 degrees Celsius. The average CPU package power is 170.9 watts.

When running the OCCT CPU AVX2 Stability Test, the average CPU effective clock is 5435 MHz with 1.164 volts. The average CPU temperature is 86.6 degrees Celsius. The average CPU package power is 172.5 watts.

When running the OCCT CPU SSE Stability Test, the average CPU effective clock is 5435 MHz with 1.166 volts. The average CPU temperature is 86.4 degrees Celsius. The average CPU package power is 168.7 watts.

AMD Ryzen 7 9700F: Conclusion
Alright, let’s wrap this up.
The Ryzen 7 9700F is the first IGP-less product in the Ryzen 9000 desktop lineup. It’s an interesting chip as it’s exceptionally good at low voltage, making it a good candidate for a 65W TDP. Overclocking-wise, there’s not much difference with other Ryzen 9000 CPUs. It was a bit annoying to see it struggle so much above 5.8 GHz, but overall, the performance gains from tuning the whole system (including the memory) are pretty nice.
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!