Ryzen 9 9950X HTFmax
When the Ryzen 9 9950X exceeds 35 degrees Celsius, the maximum frequency is restricted by the Precision Boost HTFmax limiter.
In this short blog post, I explain how the HTFmax limiter works, its impact on performance, and how we can work around the limiter. Let’s get started!
Table of Contents
AMD Precision Boost 2
The AMD Precision Boost 2 technology automatically adjusts the operating frequency according to the workload needs and system operating parameters like power consumption and temperature. It’s been integrated into all AMD Ryzen CPUs since the 2018 Ryzen 2000 series. It’s an intricate algorithm governed by a large number of “performance limiters” putting constraints on the maximum allowed operating frequency.
Most of you are very well aware of the usual Precision Boost limiters such as PPT, TDC, EDC, and Fmax which, respectively, govern maximum socket power, the maximum thermal and electrical strain on the VRM, and the absolute frequency limit. However, there are also a ton of less well-known and undocumented limiters. That includes per-core EDC limits and the topic of this blog post, HTFmax.
HTFMax Limiter
High-temperature Fmax, or HTFMax, is one of the Precision Boost 2 performance limiters. I briefly discussed this limiter in my Ryzen 7000 launch content. It represents the maximum frequency allowed at high operating temperatures. This limiter is SKU-specific and may not be active or present on every CPU.
For example, we didn’t see this limiter on the Ryzen 9 7950X, however, it was present on the Ryzen 5 7600X and Ryzen 7 7700X. And while we didn’t see it on the Ryzen 5 9600X and Ryzen 7 9700X, we did see it on the Ryzen 7 8700G.
Usually, the HTFmax kicks in at very high operating temperatures and doesn’t have that big of a performance impact. However, that’s not the case with the Ryzen 9 9950X as the HTFmax performance limiter affects the maximum frequency starting from as low as 35 degrees Celsius!
In this chart, you can see how the maximum allowed frequency is around 5950 MHz (with +200 Fmax boost override) up until 35 degrees Celsius, then slowly decreases to 5375 MHz at around 85 degrees Celsius.
There is also a largely undocumented Precision Boost Limiter called “MTFmax” or “Medium Temperature” maximum frequency. I suppose, but cannot verify, that perhaps this limiter is used on other SKUs to prevent the HTFmax from affecting the maximum frequency at low and medium temperatures.
HTFmax Performance Impact
It’s not that easy to illustrate this frequency limit in the real world because, as I mentioned, there are many different limiters putting guardrails on the CPU performance. We got a first hint of the performance impact in the final OC Strategy of SkatterBencher #81.
In this chart, you can see the Shamino Boost Curve of this CPU. The boost curve illustrates the average frequency across all active threads. We can see that between 8 threads and 16 threads the frequency plateaus at around 5375 MHz.
Here I’ve got another example of the Ryzen 9 9950X running an all-core Y-Cruncher workload at about 90°C. You can see that the frequency limit as well as the average effective clock is about 5375 MHz.
This frequency limiter kicks in when just a few cores are active too. Here’s an example of the Ryzen 9 9950X with only 4 cores enabled running the Y-Cruncher workload. The frequency limit is 5500 MHz (not the advertised 5750 MHz) because the operating temperature is 70°C.
For reference, you can see that the voltage limiter would allow for 100 mV higher in this scenario. For the 9950X, that voltage headroom translates into an extra 100 MHz.
HTFmax Performance Workarounds
So, is there a way to overcome this Precision Boost limiter? In theory, there are three possible avenues: override the HTFmax limit itself, leverage the Fmax boost override or use asynchronous eCLK.
HTFmax Override
Even though it’s not exposed in most or any BIOS, in the AMD AGESA code there’s a configuration setting to override both the MTFmax and HTFmax limit. This setting takes frequency and temperature as inputs.
However, we’ve tried these options in a beta BIOS and, unfortunately, they don’t seem to work.
Fmax Boost Override
The Precision Boost C-State boost limiter topic came up shortly after the Ryzen 7000 launch and still affects performance on the latest Ryzen Threadripper CPUs today. In case you don’t remember, the C-State Boost Limit caps the frequency when more than four cores are active on Ryzen CPUs and more than eight cores are active on Threadripper CPUs.
During our discussion, we mentioned that the C-State boost limit increases with the Fmax boost override and, thus, could be increased by 200 MHz. Unfortunately, that’s not the case for the HTFMax limiter.
Asynchronous ECLK
A final approach to work around the performance limitation is to rely on Asynchronous eCLK. This is an overclocking strategy we’ve explained multiple times on this channel and hinges on increasing the reference clock frequency.
Long story short, by enabling asynchronous eCLK, we use an external clock generator as a source for just the CPU cores. That allows us to stretch the default VFT curve and increase the frequency for every voltage-temperature point.
For example, let’s say there’s a VFT point defined as 5000 MHz for 1.1V at 50°C. If we increase the eCLK to 105 MHz, then the resulting VFT point becomes 5250 MHz for 1.1V at 50°C. In the case of the HTFmax limiter, the limit becomes 5375 MHz x 1.05 = 5644 MHz.
To illustrate how it works, I run Cinebench R23 on this Ryzen 9 9950X with SMT disabled. Disabling SMT helps keep the temperatures slightly below TjMax. In idle the frequency limit is 5950 MHz. That’s the default 5750 MHz frequency limit with a +200 fmax boost override.
During the workload, the temperature increases to almost 90 degrees Celsius, the frequency limit is 5375 MHz, and all cores are also running at 5375 MHz. Our final score was 32,795 points.
Now, we enable asynchronous eCLK, set the eCLK to 103 MHz, and reduce the Fmax boost override to 5750-200 = 5550 MHz. Note that the actual Fmax limit will be 5550×1.03 = 5717 MHz. The HTFmax also increased from 5375 MHz to 5375×1.03 = 5536 MHz.
When we run the benchmark again. Now the temperature still increases to almost 90 degrees Celsius, the reported frequency limit is 5375 MHz, but all cores are running at 5470 MHz on average. That’s an increase of 1.7%. Our final score was 33,319 points, about 1.6% higher than before.
Conclusive Thoughts
This was a very brief look at an interesting performance limiter of the Ryzen 9 9950X processor. It’s hard to estimate how much of an impact this particular limiter has in the real world, but I hope you found it interesting, nonetheless.
I’d like to thank you for watching and my Patreon supporters for supporting my work. If you have any questions or comments, feel free to drop them in the comment section below. ‘Till the next time!