Over the last two weeks we’ve been seeing various reports about how AMD’s Ryzen Master might be wrong in how it rates its cores for AMD’s Ryzen 3000 series CPUs. Simultaneously, we’ve also seen reports taking a stance on the other side, stating that in Windows 10 the wrong CPU cores are being boosted due to wrong information in CPPC, though those two are just part of the same problem. Meanwhile, it turns out that AMD has been researching this very problem for itself, and this morning published a statement on it.
To make a long story short, neither of the reports are entirely wrong. However, that doesn’t necessarily mean that there’s a problem. As it turns out, the way that Ryzen Master ranks the CPU cores differs from how CPPC rates them, and the windows scheduler follows the CPPC rating. Whereas Ryzen Master might indicate that one particular core is objectively the absolute fastest, the Windows scheduler won’t select which core to use based just on that. Rather, it will select the fastest core that has another core nearly just as fast on the same CCX.
That naturally complicates things a little, but there is a very good reason for this behavior: Windows’ scheduler wants to have two cores to split single-threaded tasks over, so that it can jump the task between the two cores in order to manage thermals and other variables to ensure that each of those cores can boost as high as possible. The two cores selected have to be on the same CCX because if they’re not, the delay in jumping the task between two cores further apart would induce too big a performance penalty, and consequently offset the benefit gained from the core-jumping behavior.
The question that remains then is: Why does Windows not select the fastest core, and the second-fastest core on the same CCX to jump the task back and forth with? For that, we give you AMD’s own example:
“Let’s take a hypothetical 16-core AMD CPU and pick out a few cores. Core 0 and Core 1 in the first CCX on the first die can boost to 2.2GHz and 2.15GHz, respectively, for 2.175GHz average frequency. Core 13 and 15 in the second CCX on the other die can boost to 2.25GHz and 2.05GHz, respectively, for an average of 2.150GHz. Core 0 and 1 would be the CPPC preferred cores for Windows, but Ryzen Master would assign the gold star to Core 13. Core 13 might be the fastest core in the chip, but you can see it’s not the fastest overall selection for automated boosting. Pairing Core 13 to Core 0, theoretically the highest average frequency, would potentially be offset by crossing CCX boundaries.”
The behavior described above is standard from the Windows May 2019 update and newer, and AMD’s recommendations on how to obtain optimum performance haven’t changed in light of this new information. They advise users to ensure that the following criteria are met:
- Global C-states and CPPC settings are set to ‘Auto On’ or forced on in the UEFI
- Run the May 2019 update or newer for their Windows 10 installation
- Use a BIOS firmware that carries the AGESA 22.214.171.124 microcode or newer
- Use an AMD X570 chipset driver from July 2019 or newer
This might seem like a relatively long checklist, but given that the 126.96.36.199 AGESA came out together with the Ryzen 3000 CPUs in July, along with the X570 motherboards and consequently their chipset drivers also in July, there’s a good chance that you already meet those criteria. Chances are also that you're already on the May 2019 Windows update, so all that remains is that you should ensure the UEFI CPPC settings are enabled. Thus, you should be seeing the correct scheduling behavior – provided that you don’t judge the choice of boosted cores based on what AMD’s Ryzen Master says are the best cores.
To resolve any further confusion, AMD is working on an update for Ryzen Master that will show information matching the CPPC2 data.
Advanced tab > AMD CBS > NBIO Common Options > SMU Common Options.
But I'm not sure why it took AMD so long to explain this.