Update on Ryzen 7000 C-State Boost Limiter
AGESA 1003 re-introduces Precision Boost C-State Boost Limiter which prevents boosting to over 5.5 GHz when more than 4 cores are active.
In this quick article, I want to shed more light on the Precision Boost C-State Boost limiter I discussed previously in my Raphael launch blog. Here is what I had to say about this feature:
Now, let us have a closer look at the Precision Boost infrastructure limiters exposed to the end user. While all these limiters are present on a Ryzen 7000 CPU, it does not mean they are all active or configured. Some limiters are not relevant to a desktop system and may be ignored.
C-state Boost is a specific boost limiter present on early engineering samples. Effectively, C-State Boost limits the maximum frequency when a certain number of active cores is exceeded. For the 16-core 7950X, the C-State Boost limit would force the CPU to run at 5.2 GHz when more than four cores are active. This Precision Boost limiter is not active on retail processors.
I was not wrong when stating the C-State Boost Limit was not present with the hardware and BIOSes available at launch. However, I should have clarified that this limiter may return, as with the latest AGESA 220.127.116.11.
Illustrating C-State Boost Limit Behavior
To illustrate the behavior, we primarily rely on a small benchmark application called NopBench, developed by ElmorLabs. NopBench helps us analyze the maximum boost frequency of our CPU cores. NOP stands for No Operation and is an x86 instruction that performs no operation.
NopBench iterates the NOP instruction and counts how many NOP instructions can be processed per second. As the NOP throughput varies by CPU architecture, we can adjust the total NOPs by an architecture-specific factor. For Raphael, that factor is 2.5X. Ultimately, the NopBench output is a proxy for the effective clock frequency over a specific period.
The NopBench version in this article iterates NOP instructions on increasingly more active cores. Precisely, we measure the NOP throughput for Core 0. First, when no cores are active, then when Core 1 is also active, then when Cores 1 and 2 are active, and so on.
The version of NopBench we are using today runs NOP instructions on increasing cores while measuring a target core’s NOP throughput. Effectively, we measure the effective clock frequency of a specific core as more cores get loaded. This allows us to clearly show the behavior of the C-State Boost limiter.
This information allows us to compile a boost curve for the Ryzen 9 7950X processor.
In this chart, you can see the effective clock frequency of Core 0 in a variety of test scenarios. I am using the ROG X670E Crosshair Extreme motherboard with BIOS 0611 for AGESA 18.104.22.168 and BIOS 0705 for AGESA 22.214.171.124.
We can make three key observations.
- First, with AGESA 1002, the CPU frequency drops off gradually as more cores become active. In contrast, with AGESA 1003, the frequency drops sharply when more than four cores are active. This is the Precision Boost C-State Boost Limit I discussed in my Raphael launch article.
- Second, disabling Global C-state Control impacts the CPU frequency in both AGESA 1002 and 1003. The impact is most drastic on AGESA 1003 as disabling C-States limits the frequency to 5.5 GHz.
- Third, for all AGESA and C-state combinations, when eight or more cores are active, the CPU frequency is the same as it is below the 5.5 GHz C-state boost limit threshold.
C-State Boost Limit Impact on Overclocking Strategies
The re-introduction of the C-state boost limit significantly impacts the choice of overclocking strategies as it limits the maximum frequency for workloads that use more than four cores to 5.5 GHz on the Ryzen 9 7950X.
As I explain in my Ryzen 7000 SkatterBencher guides, the most common method of extracting more performance from a Ryzen processor is using the overclocking tools provided by AMD with their Precision Boost Overdrive toolkit. The two most valuable tools are Boost Clock Override and Curve Optimizer.
To keep it as simple as possible:
Boost Clock Override, or Fmax Override, allows the user to override the factory-programmed CPU core clock frequency limit between -1000 MHz and +200 MHz in steps of 25 MHz. For the Ryzen 9 7950X, the programmed limit is 5850 MHz. It is important to note that the override only adjusts the upper ceiling of the frequency and does not function as a frequency offset. Ultimately, the Precision Boost 2 algorithm still determines the actual operating frequency.
Curve Optimizer is a tool that allows the user to adjust the voltage margin of each individual CPU core. It does this by offsetting the voltage of the CPU core VFT, or voltage-frequency-temperature, table. The VFT table is a unique lookup table for each core inside your CPU that defines the required voltage for a given frequency at a given temperature. Higher frequencies or higher operating temperatures require higher voltage.
The traditional overclocking approach for AMD Ryzen CPUs is to set a negative curve optimizer. When you adjust the VFT curve with a negative point offset, two things happen.
- First, you tell the CPU that it needs less voltage for a given frequency. And, as a consequence, at a given voltage, it can apply a higher frequency.
- Second, the CPU temperature will be lower because you use less voltage at a given frequency. That extra thermal headroom will also encourage the Precision Boost algorithm to target higher voltages and frequencies.
While both tools help increase the performance by increasing the CPU frequency, neither directly impacts the C-state Boost Limit. Therefore, the only viable overclocking strategy that allows you to get around the C-state Boost limit is using asynchronous ECLK.
To illustrate this, we can use the same NopBench to measure the effective clock frequency. I show two scenarios:
- Precision Boost Overdrive enabled with boost override set to +200 MHz and a curve optimizer of -15 for all cores.
- Precision Boost Overdrive enabled and an asynchronous eclk frequency of 103 MHz.
As you can see from the chart, when we only rely on boost override and curve optimizer, the frequency remains limited to 5.5 GHz when more than four cores are active. However, when we use asynchronous eclk, we can affect the entire boost curve.
On select ROG motherboards, however, there is another trick you can use.
Medium Load Boostit, a C-State Boost Limit Workaround
Attentive viewers will have noticed that in the Raphael overclocking example of my launch article, I specifically enabled an option called Medium Load Boostit.
The ROG OC team noticed the C-state boost limit during the initial testing with the engineering sample CPUs. It developed this specific option to work around it to enable higher performance. Since the C-State boost was not present on the launch motherboard and BIOSes, I ignored it in all my overclocking guides.
I will not dig into the details of how this function works as I am sure the ROG team considers this somewhat of a short-term competitive advantage
Anyway, with the re-introduction of the C-state boost limiter in AGESA 1003, this option is now relevant again. When we enable this option, the boost curve looks as follows.
As you can see, instead of the boost curve immediately dropping off to 5.5 GHz when more than four cores are active, the frequency boosts as high as the Precision Boost algorithm allows.
We can now rely on just Precision Boost Overdrive tuning to maximize the performance in all scenarios ranging from one active core to sixteen active cores.
Real-World Impact of C-State Boost Limit
While the NopBench results may seem shocking to some, I must emphasize that this is an artificial workload. While it is helpful to analyze the issue, it does not reflect the real-world performance impact. After all, with NopBench, we literally tell the CPU to do nothing as fast as possible.
The extent to which the C-State Boost Limiter will impact your performance depends on your CPU, the cooling system, and the workload.
- A good CPU is capable of boosting to higher frequencies. Thus, the more capable your CPU is of boosting beyond 5.5GHz, the more you will see a performance impact from this limiter.
- Better cooling will help provide the CPU with higher boosting opportunities by keeping the operating temperature in check.
- The heavier your workload, the more likely other Precision Boost limiters will kick in and limit the CPU frequency. So, while you may not be limited by the C-state boost limit, you might be limited by voltage.
To illustrate the performance impact, I use the 3DMark CPU Profile benchmark. This benchmark runs through a couple of scenarios as it gradually increases the number of CPU threads used. As a workload, it is among the lightest loads I include in my benchmark suite. Thus, the CPU should be able to boost to relatively high frequencies even with many cores active.
As you can see from the data, as long as you do not disable Global C-state Control, the performance decrease from the C-state boost limiter is relatively limited
Okay, let us wrap this up. Here are the main takeaways from this blog post.
First, enabling C-states is preferred as it provides higher performance for both AGESA 1002 and 1003.
Second, AGESA 1003 re-introduces the Precision Boost C-State Boost Limiter, which was not present on the launch motherboards & BIOSes
Third, the C-State Boost Limiter prevents the CPU from boosting to over 5.5 GHz when more than four cores are active. As the Ryzen 9 7950X has a programmed maximum frequency ceiling of 5.85 GHz, it means potential performance loss.
Fourth, on motherboards with the option, simply enabling “Medium Load Boostit” works around the C-State Boost Limiter.
Fifth, on motherboards that do not have this option, asynchronous eclk provides the only viable overclocking strategy to increase the frequency beyond 5.5 GHz when more than four cores are active.
Sixth, the real-world performance impact of the C-state Boost Limiter is minimal. That is because you need a good CPU capable of boosting over 5.5 GHz with many active cores. Furthermore, most workloads will trigger other Precision Boost limiters that restrict the operating frequency.
Anyway, that is it for today. See you next time!
Post Scriptum: Per-Core Boost Clock Limit
If you try a ROG board with AGESA 126.96.36.199., check out the Per-Core Boost Clock Limit feature. With this feature, you can set a maximum frequency for each of your cores. When tuning with Precision Boost Overdrive, this can help prevent weak cores from trying to boost to the maximum programmed frequency while letting the strong cores boost to infinity and beyond.
I do not have time to look into this now, but I will revisit this when more Ryzen 7000 CPUs hit the market.