There is very little kown about the power consumption of desktop Ryzen 5000 (Zen 3) systems. The usual tools show 3-4W of SoC power in idle and anothe 2W for the core when playing a YT video. Yet, people struggle to get acceptable energy figures for the complete system besides all claims of high energy efficieny. I look deper into the topic and reverse-engineered where all that power goes to.
For my analysis I used a Ryzen 9 5900X.
Why would you care?
This is those who want the expandability, thermal headroom and peak performance of a desktop PC but at the same time have it running 24/7 as a server, be always available and care for the energy consumption. A laptop is able to do the average daily workload with very little energy, so why shouldn’t a desktop be able to do the same?
TL;DR; Will it be my new always-on low idle power machine?
No, it will not. For my very minimal Ryzen 9 5900X machine with dedicated GPU I could get it down to these numbers:
- 27W in complete idle, monitor off
- ~53W for rapid mouse curser movement and no other load
- 57W at playing a YouTube video
That already includes 8W (idle) / 10W (otherwise) for a RTX1650 Super grapcis card, since the CPU doesn’t include an iGPU. You might get lower numbers if you find a graphics card with lower idle consumption.
For comparison here are the same tests for an Intel i7-4790T based system I built 6 years ago:
- 6W in complete idle
- 6.5W rapid mouse movement
- 9W playing a YouTube video
This system has an iGPU, but also runs two gigabit ethernet ports, three SSDs and several background tasks.
Whats the point here?
AMD praises the high power efficiency of their new Ryzen 5000 desktop CPUs. And than is true, they are efficient, but only under full load (and especially in ECO mode).
At the same time low power entuenthusiasts wonder about the unexpectedly high power consumption under no or light load. The power-performance values that are accessible by diagnostic software do not reflect this ineffciency. They show very good efficiency for low loads, while actual power „magically vanishes“ inside the system. I found out where it hides.
The fact that a significant amout of power consumption does not get reflected in common tuning software (like HWiNFO or Ryzen Master) is a nuisance at best. In the worst interpretation it might suggest something gets hidden from users and reviewers.
Spoiler from the future: Read my next blog entry to find out that several additional power counters actually exist. They only need to get exposed by software to get a much more complete picture of the actual system performance.
Where all the power goes
Preface: All results shown from here on are for a headless system (ie. without a graphics card) to not pollute the power measurements with the extra power consumption of the GPU.
In the typical tools like HWiNFO, Ryzen Master and zenpower it looks like in idle the CPU only consumes 0W of P_Core and ~4W of P_SoC. The reported „package power“ is mysteriously higher, but still doesn’t justify the actual consumption of around 22W. Furtermore, for very light loads P_Core=0.5W and P_SoC=4.5W are reported, but the overall system’s power draw jumps right up to well beyond 40W. All this additional power isn’t reflected anywhere in the numbers that are provided by the usual software tools.
There is no way the other components on the motherboard burn that amount of power without getting extremly hot (which they don’t). So all the missing power has to go into the CPU package.
The question is:
- Where and why?
- Can we somehow stop it or maybe enable additional power saving functions?
- If it is inside the CPU package, why would AMD not include power measurement facilities for such a significant consumer?
- Or do they and only hide it from the users and testers?
The second question might be especially fruitful, beacuse while desktop and laptop CPUs are different, their differences in design are normally not that huge. If they manage to get idle powers of less than 3W for the whole laptop and reasonable run times for light loads, maybe we can enable the same or similar power saving features on the desktop as well. I got the Intel down to single-digit watts, so why should the AMD system use >50W with the slightest load?
I’m curious, let’s dig deeper into this!
For various different load szenarios I’m measuring the power going into the 8-pin power connector („P8“) of the mainboard and the 24-pin ATX connector („P24“) sperately. There are no other power supply connections to the test system. This system is headless, i.e. runs linux without a graphics card.
I verfied the P8 connecter is electrically isolated from the connections in the P24 conenctor and only powers the VRMs for P_Core ans P_SoC. What I see on this input should match P_Core + P_Soc as reported by the CPU plus some percent of conversion losses inside the VRMs. (But it doesn’t.)
Idle power and 1 thread load
Lets look at my hardware measurements for complete idle first:
This is the first suprise. On the software side the CPU itself reports P_Core=0W and P_SoC=4.2W when in idle. It even specifically claims I_SoC to be 4.2A at 1.004V. This can’t be right, because there is no way I measure less total power at P8 than what goes into the CPU package via the VDD_SoC lines. So that is a first discrepancy.
For a 1 thread load there is a sudden jump of 29W on P8 and 13W on P24. Only 4W of core activity are reflected in the P_Core value, while P_SoC increases by 1.3W to 5.5W. Looks like a very efficient CPU, but somehow 25W(P9) + 12W(P24) = 37W get lost somewhere on the mainbaord.
To shed some more light on this, I reverse engineered the power distribution of my mainboard (Gigabyte B550M AORUS PRO-P). Luckily the AM4 socket pinout got leaked, which was a big help in identifying the various power rails the CPU actually has. (No idea why one would consider even the pinout confidential in the first place TBH.)
Here is a diagram of the power distribution system:
The numbers next to the CPU package denote the number of pins for the given power rail. The number of pralleled pins sets an uppper limit on the current capability of that net. That way we can ignore the small contributors with only two pins for now and check for the planes with higher power draw potential (i.e. more pins) first.
Here is the complete data set I recorded for different load points. For loading the cores I use the command
yes > /dev/null. Each instance loads one core and leaves the ram untouched. In fact, the ram stays cool for all tests from which we can conclude that the ram sticks themselves don’t significantly contribute to the overall power draw in this test. (I double-checked with only one stick installed: No difference in idle and less than 1W difference under 1T – 24T load.)
VDDIO_MEM is responsible for high P24 power draw
Fact one: The only thing on the mainboard that manages to burn any relevant amout of power besides the CPU package itself and the P_Core + PSoC VRMs (both connectd to P8) is the M550 chipset (conneted to P24). I measured the B550’s thermal output to be ~2.3W (+/-0.5W). So that one is not our main culprit.
Since nothing else on the board produces any significant amout of thermal output, that power has to go into the CPU package. The only connection between P24 and the CPU package with the potential to transport more than ~2-3W of power is VDDIO_MEM_S3. The fact that there are 84 pins for VDDIO_MEM_S3 (more than for VDDCR_SoC!) confirms they expect quite some current draw on that net. The VRM for VDDIO_MEM_S3 is a RT8120 conroller, which is intended for 30A VRMs. At 1.35V up to 40W can be delivered to the CPU package! AHA!
And really, using an oscilloscope, one can see an additional voltage drop of ~200mV between drain and source of the switching transistors of the VDDIO_MEM_S3 VRM as soon as the CPU leaves complete idle. 200mV indicate a current draw in the area of roughly 5-15A for this VRM design. So that is where all the power goes to! The Ryzens Memory controller!
Not the biggest surprise in hindsight, but it makes you wonder why there is no power counter in common software if the power draw is that significant and even higher than the P_SoC power draw for which there is a counter.
To double-check my findings I reduced VDDIO_MEM_S3 from between test 2 and test 3:
Indeed, the additional P24 power consumption between idle and load (ΔP24) goes down by about 25%.
Vanishing P8 power
On P8 we would expect an additional current draw of 8-10W per core until all 12 physical cores are loaded. And indeed, the measurements show exactly this value between 2T and 12T laod (cell C6-C15 in calc sheet). The delta-value for idle->1T and 1T->2T is higher, but that can be easily explained:
The 5900X has two CCDs. The first active thread activates the first CCD, the second thread gets loaded into the second CCD and enables this one as well. Also the SoC has to activate the links to the CCDs. Thats nothing too spectacular. Only the amout of this additional power is much higher than what I am used from team blue. Granted, team blue uses a very different internal architecture, but they also have to have some interconnection between the cores and to the outside world that needs to be powered.
So, what this leaves is:
- The additional power draw for the framework is enormous.
- This additional power is not reported in software. Making the CPU look much more energy efficient than it it, especially at light load.
I have no clue how this problem is solved on the mobile platforms and couldn’t find any documentation on this topic either. Can the power draw influcened that heavily by (possible undocumented) software switches? Or do they use a completely different SoC architecture and process for their mobile platforms? If you know more, let me know.
- The „mysteriously vanishing“ power actually goes into the CPU package.
- It is absolutely unclear to me, why there is no software accessible measurement of the VDDIO_MEM_S3 power. (Note from future: It exists, even many more, but they are hidden in the official software.)
- Also, under the lightest load >20W more power are consumed from P8 than what is reported in P_Core and P_SoC. This can’t be explained by VRM losses. The majority has to go to parts inside the CPU which are not included in the internal P_Core and P_SoC measurement.
- The reported „Package Power“ and „PPT“ under-estimate the actual power consumption and thermal output as well.
- Even with only partial load on one core, the CPU package actually draws >35W from all power planes combined, making it a bad choice for low-power desktop PCs.
- There is not much we can do about the high low-load power right now, unless somebody finds switches to enable additional power saving options. I didn’t have much luck with what the BIOS / AGESA exposes.
- I couldn’t find any in depth information on the difference between the SoCs for mobile and desktop use.
- In complete idle, software over-estimates P_SoC (but only by a few Watts).