Did some CoreMark testing on various x86 and Arm CPUs.
I started down the rabbit hole of Arm CPU cores and wanted to see how they all compare to each other on various devices I have in my house. I ended up comparing them to x86 CPUs on Windows as well since CoreMark can be compiled against both Windows, Linux, and Android. These are the results sorted by average speed:
I compiled the benchmarking binary using the following command in Android and Linux: `make PORT_DIR=linux CC=gcc XCFLAGS="-O2 -march=armv8-a" NO_LIBRT=1 run`
For Windows, I ran the following command to build the executable: `make PORT_DIR=linux CC=gcc XCFLAGS="-O2 -march=x86-64" NO_LIBRT=1 run`
My rudimentary understanding is that CoreMark primarily stresses the ALUs of a CPU and that these results reflect the cores' ALU performance. Is this accurate?
I find it interesting that some Arm cores are shared in different devices, such as the Cortex-A53 in the Amazon Fire HD 8 8th Gen and the Samsung Galaxy A51515U. Interestingly, the Galaxy's Cortex-A53 is \~50% more performant than the Fire HD 8's Cortex-A53 even though the maximum core boost clock is only \~31% faster (1.7 GHz vs 1.3 GHz). Anyone have an idea as to why the ALU performance of the Cortex-A53 doesn't scale perfectly with clock speed?
I'm starting to get really interested in this stuff. What other benchmarks can I use to test other functional units of a CPU? I'd like some benchmarks that are:
* Cross platform between Windows, Android, Linux, and MacOS * FOSS * Usable on >=armv6 and >=x86-32 #hardware #technology source