When Apple announced its M1 processor, the chip became the first design to feature this hybrid CPU core arrangement of bigger, high-performance cores paired with smaller, lower-power cores. Of course, we already know that these big cores perform well, but we haven't seen the small cores run through a head-to-head benchmarking gauntlet yet. The Eclectic Light Company blog has now shone a light on the matter, though, so we're getting a view of how these smaller cores perform at general tasks compared to their higher-power brethren.
The Apple M1 chip consists of four high-performance "Firestorm" cores and four low-power "Icestorm" cores. Both IPs work together, though each is designed to run certain types of code efficiently.
The smaller cores are usually devoted to basic OS processing tasks and handle the background code execution, leaving the big cores free to perform anything else — particularly high-performance work. However, when some major task like heavy floating-point calculation comes up, it is directed to the bigger Firestorm cores.
These tests put the small Icestorm cores under the floating-point dot product test suite. To ensure that only the IceStorm cores execute the workload, the tester set the Quality-of-Service (QoS) settings to 9, which only triggers these smaller cores and not the bigger Firestorm ones, as you can see in the image of the processor load monitoring tool below.
The outfit tested performance across four scenarios: "a tight loop of assembly language using mixed SIMD instructions on 4-wide arrays of single-precision floating-point numbers; the Apple SIMD (a relative of the Accelerate libraries) call simd_dot() on two simd_float4 arrays, using Swift; simple Swift for using nested loops; a more ‘idiomatic’ Swift nested loop using map and reduce."
If we compare it to the reference big Firestorm cores, which are used as the baseline for a 100% score, the Icestorm cores take the following percentage of time to complete these tasks: 190% for assembly language, 330% at SIMD (Accelerate) library functions, 280% for simple Swift, and 550% for "idiomatic" Swift processing. Note that the baseline is 100%, and the 200% result means twice the time for a specific task to complete. The idiomatic Swift code benchmark represented the worst-case scenario for Icestorm cores, taking over 5.5 times longer to complete than the Firestorm cores.
Nonetheless, this isn't unexpected as the Icestorm cores are built primarily for high efficiency. That means low power and heat output while still providing good performance is the word of the day. As the baseline FireStorm cores perform very well, being a few times slower doesn't mean much after accounting for the efficiency gains.