What are CPU core frequencies in Apple silicon Macs?

0

One of the features of CPU cores in Apple silicon Macs is that they aren’t run at a single standard frequency or clock speed, but that varies depending on macOS. Moreover, those frequencies not only differ between generations, so aren’t the same in M2 chips as in the M1, but they also differ between variants within the same family. This article gives frequencies for each of the chips released to date, and considers how and why they differ. This has only been made possible by the many readers who generously gave their time to provide me with this information: thank you all.

The most reliable method of discovering which frequencies are available is using the command tool powermetrics. This lists frequencies for P and E cores, and this article assumes that those it gives are correct. Although it’s most likely that these frequencies aren’t baked into silicon, so could be changed, I’ve seen no evidence to suggest that Apple has done that in any release Mac.

Frequencies

If powermetrics is to be believed, then the maximum frequencies of each of the CPU cores used in each generation differ from some of those you’ll see quoted elsewhere. Correct values should be:

M1 E 2064 MHz or 2.1 GHz; P 3228 MHz or 3.2 GHz;
M2 E 2424 MHz or 2.4 GHz; P 3696 MHz or 3.7 GHz;
M3 E 2748 MHz or 2.7 GHz; P 4056 MHz or 4.1 GHz;
M4 E 2892 MHz or 2.9 GHz; P 4512 MHz or 4.5 GHz.

However, not all variants within a family can use those maximum frequencies. The full table of frequencies reported by powermetrics is:

This is available for download as a Numbers spreadsheet and in CSV format here: mxfreqs

Why those frequencies?

Depending on workload, thread Quality of Service, power mode, and thermal status, macOS sets the frequency for each cluster of CPU cores. Those used range between the minimum or idle, and the maximum, usually given as the core’s ‘clock speed’ and an indication of its maximum potential performance. In between those are as many as 17 intermediate frequencies giving cores great flexibility in performance, power and energy use. Core design and development uses sophisticated models to select idle and maximum frequencies, and undoubtedly to determine those in between.

Looking at the table, it would be easy to assume those numbers are chosen arbitrarily, but when expressed appropriately I think you can see there’s more to them. To look at frequency steps and the frequencies chosen for them, let me explain how I have converted raw frequencies to make them comparable.

First, I work out the steps as evenly spaced points along a line from 0.0, representing idle, to 1.0, representing the core’s maximum frequency. For each of those evenly spaced steps, I calculate a normalised frequency, as
(FmaxFstep)/(FmaxFidle)
where Fidle is the idle (lowest) frequency value, Fmax is the highest, and Fstep is the actual frequency set for that step.

For example, say a core has an idle frequency of 500 MHz, a maximum of 1,500 MHz, and only one step between those. Its steps will be 0.0, 0.5 and 1.0, and if the relationship is linear, then the frequency set by that intermediate step will be 1,000 MHz. If it’s greater than that, the relationship will be non-linear, tending to higher frequency for that step.

I’ll start with the E cores, as they’re simplest and have fewer steps.

E cores

For the M1, Apple didn’t try any tricks with the frequency of its E cores. There are just three intermediate steps, evenly spaced at 0.25, 0.5 and 0.75, and that’s the same with all E cores regardless of variant, from the base up to the Ultra.

With the M2, shown here in red, Apple added an extra step, and in the base M2 there’s also a lower idle frequency, not shown here. What is obvious is that those intermediate frequencies have been increased relative to those of the M1, turning the straight line into a curve.

The M3, shown here in blue, and M4, in purple, deviate even further from the line of the M1, with more steps and relatively higher frequencies.

This shows progress from the M1 in black to the M4 in purple, whose frequencies follow the polynomial shown.

Across the families, intermediate frequencies are most apparent in the E cores, where background threads are run at lower frequencies, and high-QoS threads that should have been run on P cores are run at higher frequencies. In M1 Pro and Max variants, with their two-core E clusters, macOS increases the E cluster frequency when they are running two threads to improve performance and compensate for their small cluster size.

P cores

With P core frequencies, the initial design for the M1 is different. The majority of the frequency steps follow a straight line still, but with a steeper gradient (1.23 against 1.00). Then in the upper quarter of the frequency range, above the step at 0.71, that line eases off to the maximum. This gives finer control of frequency over higher frequencies, and those higher frequencies are also reduced slightly in the base M1 compared to those here from the Pro, Max and Ultra.

In the M2 family, Apple divided frequencies into two: base and Pro variants have two less steps, with the base having a lower idle frequency. Shown here in red are those for the M2 Max, which are faired into a polynomial curve. That increases frequencies lower down, reduces them slightly at the upper end, then has a significantly higher maximum frequency.

Apple continued to tweak the P curves in the M3 (blue) and M4 (purple), with increasing numbers of steps but the same finer control at the upper end.

Here’s the comparison between M1 Max and M4 Max, with the same underlying ideas, but substantial differences. In the M4, each of the three variants released so far is different. The base M4 has a lower idle and maximum, the M4 Pro has a higher idle and maximum but one less step between them, and the M4 Max adds another step to the Pro’s series.

Significance

Apple’s engineers have clearly put considerable effort into picking optimised frequencies for each of the families and variants within them. If you still think that this is all fine detail and only the maximum frequencies count, then you might like to ponder why so much care has gone into selecting those intermediate frequencies, and how they’ve changed since the M1. Both P and E cores spend a lot of their time running at these carefully chosen frequencies.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.