Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

mactinkerlover

macrumors regular
Original poster
Sep 20, 2020
176
115
Okay, so I was tinkering around with my m1 macbook pro today. Obviously, I use the sudo powermetrics to look at power consumption. So during a normal cinebench r23 multicore run, the performance cores use about 13 to 14 watts. However, i noticed that when I was running this cpu stress test in chrome: https://cpux.net/cpu-stress-test-online The fan got a lot louder and it got a lot hotter. I then went back to the terminal and saw the performance cores were now using anywhere from 17 to 20 watts. I then went and used the yes command in terminal and had the same findings. So my question is why is cinebench or blender not utizlizing all of the cpu? And why does it say 0 percent idle in activity monitor and terminal in either test even though it is allowed to consume more power in the other tests? Any thoughts especially from developers here?
Edit: I ran the numbers. So the performance cores give about 5500 in cinebench, while the efficiency cores give about 2200. If we run the numbers, 5500 at 13 watts gives us 423 points per watt. If we bump that up to 17 I'm getting in the other tests, that gives a score of 7191 for the performance cores. add the 2200 of the efficiency cores and you have an astounding score of 9391, which is faster than a core i9 in a 16 inch macbook pro. So my question, maybe this is the separation between the air and pro.
 
The CPU contains a number of different types of execution units in differing numbers. It contains quite a lot of integer units, a smaller number of floating point units and some other more specialised vector units etc. Different types of code will use this in different patterns. Some code will be all integer, some all floating point etc. The energy consumption for different units will also be different

So the CPU may be 100% utilised (all dispatch ports fully utilised so maximum instruction throughput) in both cases but different energy profiles

As an example let’s imagine the CPU had 4 dispatch ports, all instructions take 1 cycle (to keep things simple), 4 Integer Units, 1FP unit, 1 Branch Unit. Integer units consume 3W, FP 5 and branch 4. A fully active CPU could consume 12-15W (+ overhead for memory controllers, scheduling etc). The CPU is executing as much as possible when executing 4 Int instructions. It is also executing as much as possible for with 2 Int, 1FP, 1 Branch

Clearly this is overly simplified but it gives a good idea of why you can see 13-14W in one test you think is flat out at 17-18 in another.

What is important to remember is that the lower energy benchmark could not run 18% faster if it used 17W as it simply is not able to use the higher energy cost units and in fact might well run slower if it did use them (using floating point units for internet operations is way slower and higher energy cost that just using the integer units). Looking at your specific example: Chrome is probably really a JavaScript benchmark. In JavaScript all numbers are always stored as Floating Point. So lots of “integer” maths in JavaScript will actually be lots of high energy cost floating point. Hence the higher readings...
 
  • Like
Reactions: Tenkaykev
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.