AMD Curve Shaper

AMD Curve Shaper is the one of the tools of the Precision Boost Overdrive 2 toolkit allowing manual adjustment of the CPU V/F curve.

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 regions and three temperatures:

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.

curve shaper settings

The theory 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.

However, things are not that simple. Let’s have a closer look.

Curve Shaper in Practice

Let us first set up our drawing board: we begin with three voltage-frequency curves of CCD0 of this Ryzen 9 9950X processor: the default curve, the +30 curve optimized, and the -30 curve optimized. That gives us a nice graph with essentially two guard bands around the default voltage-frequency curve.

Now, let’s go into the BIOS and set a -30 Curve Shaper for all temperature points at Max Frequency and see what happens. We can see something exciting happen: the voltage-frequency curve is adjusted, but only at the very upper end of the curve near the maximum frequency. The voltage for frequencies below 5200 MHz is unaffected by our undervolt!

Now, let’s go into the BIOS and set a -30 Curve Shaper for all temperature points at High Frequency and see what happens. The voltage frequency curve is again adjusted, but this time the adjustment happens much earlier. In fact, the upper end of the voltage-frequency curve trends back to our default V/F curve. Only the voltages for frequencies between 4800 and 5700 MHz are affected.

Let’s continue and set a -30 Curve Shaper for all temperature points at Medium Frequency. The voltage-frequency curve is still adjusted, but now it happens early on. The peak offset from the default V/F curve appears to happen around 4800 MHz.

Lastly, let’s see what happens with the Low Frequency points at -30 Curve Shaper. Now we can see that the voltage-frequency curve is unaffected above 4700 MHz.

Shaper Points

Each of the regions appears to be defined by what we’ll call “Shaper Points.” A Shaper Point is defined by a Shaper frequency and a Shaper magnitude. The voltage for the frequencies around the Shaper Point behaves like they’re in a “gravitational” Shaper Field in the sense that, for frequencies within the Shaper Field, the closer to the Shaper Point, the larger the impact of the Shaper Magnitude.

The Shaper Points behave independently, so we can come up with some very wonky V/F curves. For example, let’s set the Med Freq point to -30, the High Freq point to 0, and the Max Freq point to +30. Now we have a curve that undervolts below and overvolts above 5200 MHz.

So, that’s it right? We’ve identified the Shaper Points and the Shaper Fields they impact, so we can move on! Not so fast.

Remember I mentioned there’s a significant difference between the two CCDs on this Ryzen 9 9950X. The difference isn’t just the factory-fused voltage-frequency curve, but also the Fmax: CCD0 has a programmed Fmax of 5750 MHz whereas CCD1 has a programmed Fmax of 5450 MHz. And that significantly impacts the Curve Shaper behavior!

Here’s a graph illustrating the Ryzen 9 9950X CCD0 and CCD1 with the Curve Shaper High Frequency point set to -30. We find that the Curve Shape for both CCDs is remarkably similar. Coincidence or not, that 300 MHz difference is also the difference of the Fmax.

Shaped Optimizer or Optimized Shaper

One final important piece of the Curve Shaper puzzle is that it stacks on top of Curve Optimizer. That means we can combine Curve Optimizer and Curve Shaper to finetune the voltage-frequency curve.

Let’s illustrate by comparing five different curves:

  • Default curve
  • -15 Curve Optimizer (CO_m15)
  • -30 Curve Optimizer (CO_m30)
  • -15 High Frequency Curve Shaper  (CShf_m15)
  • -15 Curve Optimizer & High Frequency Curve Shaper  (CO_CShf_m15)

We can make two key observations:

First, Curve Shaper indeed adjusts the voltage-frequency curve beyond the Curve Optimizer. That confirms the two settings stacks on top of each other.

Second, it appears Curve Optimizer is the more impactful of the two tools as it provides a larger voltage offset across the entire curve. That’s not unexpected, since with Curve Shaper multiple points are pulling t