2020年後期の新型 MacBook Air (Apple M1 ARM) のビルド速度と vfpbench の結果です。2020年前期発売の Intel モデルと比べて 5倍高速でした。
Device | CPU | Thread | Time |
---|---|---|---|
MacBook Air Late2020 | Apple M1 arm64 | 8/8 | 9 sec |
MacBook Air Early2020 | Core i5-1030NG7 | 4/8 | 45 sec |
Mac mini L2012 | Core i7-3615QM | 4/8 | 47 sec |
MacBook Pro Late2012 | Core i5-3210M | 2/4 | 125 sec |
・↑コンパイル時間の比較。Time が小さい方が速い。
vfpbench の結果は下記の通りです。macOS では LITTLE core だけ Affinity で固定することができないので Multi-Thread の値はまだ不正確です。そのため Single Thread だけ比較しています。
↓vfpbench の Single Thread の結果のみ抜粋
Device | CPU | Thread | Half | Single | Double |
---|---|---|---|---|---|
MacBook Air Early2020 | Core i5-1030NG7 | 4/8 | — | 111.3 | 55.6 |
MacBook Air Late2020 | Apple M1 arm64 | 8/8 | 153.1 | 76.6 | 38.3 |
MacBook Air Late2020 | Apple M1 x86_64 | 8/8 | — | 34.1 | 17.1 |
Pixl 3 Snapdragon 845 | Cortex-A75+A55 | 8/8 | 44.4 | 22.3 | 11.2 |
PH-1 Snapdragon 835 | Cortex-A73+A53 | 8/8 | — | 19.5 | 9.8 |
・↑Half/Single/Double の数値は GFLOPS。値が大きい方が速い。
Apple M1 の結果詳細(抜粋)
TIME(s) MFLOPS MOPS FOP IPC FPU fmul (32bit x1) n8 : 0.157 12195.9 12195.9 ( 1.0 3.8) FPU fadd (32bit x1) n8 : 0.150 12799.9 12799.9 ( 1.0 4.0) FPU fmadd (32bit x1) n8 : 0.301 12753.6 6376.8 ( 2.0 2.0) NEON fmul.2s (32bit x2) n8 : 0.150 25593.3 12796.7 ( 2.0 4.0) NEON fadd.2s (32bit x2) n8 : 0.150 25570.3 12785.2 ( 2.0 4.0) NEON fmla.2s (32bit x2) n8 : 0.302 25441.6 6360.4 ( 4.0 2.0) NEON fmul.4s (32bit x4) n12 : 0.225 51167.5 12791.9 ( 4.0 4.0) NEON fadd.4s (32bit x4) n12 : 0.225 51086.7 12771.7 ( 4.0 4.0) NEON fmla.4s (32bit x4) n12 : 0.301 76531.6 9566.5 ( 8.0 3.0)
この結果より、SIMD (NEON) は 128bit FMA (fmla) が 3命令同時に走っており、ピーク値は 1 cycle あたり 24fop であることがわかります。256bit FMA が 2命令走る Haswell/Zen2/3 は 32 fop 、AVX512 では最大 64 fop なので、単 core でのピーク FLOPS はそれよりも落ちます。
その代わり注目すべきは IPC の方で、FMA で 3命令、ADD/MUL でサイクルあたりのスループットが 4命令です。Intel は 128bit でも最大 2命令、Zen2 では Add + Mul の組合わせのみ 4命令なので、スカラーや 128bit 演算は Apple M1 の方が速度出る可能性があります。
FLOPS 表の「Apple M1 x86_64」は Rosetta によるバイナリ変換で実行した場合のものです。AVX/FMA 命令が動かなかったので SSE4.2 までのオプションでビルドしています。FMA がないのでピーク値は半減していますが、加減算命令の IPC は 3~4 と高い値を維持していました。
コンパイル時間の比較を参考用に載せておきます。OS と SSD、使用したコンパイラが異なるので単純に比較できませんのでご了承ください。また必ずしもあらゆるタスクでこの性能差が生じるわけではありません。特にビルドに時間がかかる巨大なプロジェクトではかなり遅くなると思います。
Device | CPU | SSD | Thread | Time |
---|---|---|---|---|
Windows Desktop WSL2 | Ryzen 9 3950x | SATA | 16/32 | 8 sec |
MacBook Air Late2020 | Apple M1 arm64 | NVMe | 8/8 | 9 sec |
WIndows Desktop WSL2 | Ryzen 7 PRO 4750G | SATA | 8/16 | 18 sec |
Linux Desktop | Core i7-6700k | SATA | 4/8 | 29 sec |
Linux Desktop | Core i7-4790k | SATA | 4/8 | 31 sec |
Pxiel3 Snapdragon 845 | Coretex-A75+A55 | eMMC | 8/8 | 35 sec |
PH-1 Snapdragon 835 | Coretex-A73+A53 | eMMC | 8/8 | 40 sec |
MacBook Air Early2020 | Core i5-1030NG7 | NVMe | 8/8 | 45 sec |
Mac mini Late 2012 | Core i7-3615QM | SATA | 4/8 | 47 sec |
MacBook Pro Late 2012 | Core i5-3210M | SATA | 2/4 | 125 sec |
Raspberry Pi 4 | Coretex-A72 | SD | 4/4 | 146 sec |
上記以外の他のデバイスとの比較はこちら↓にあります。
関連ページ
・Hyperでんち: Compile Benchmark
・Hyperでんち: vfpbench 結果まとめ
関連エントリ
・Ice Lake の vfpbench 結果と AVX512 命令
・4倍速い Ryzen 9 3950X の UE4 コンパイル速度
・Snapdragon 845 ARMv8.2A 半精度 fp16 演算命令を使ってみる / Deep Learning 命令
・Snapdragon 835 と 845 のコンパイル時間の比較&浮動小数点演算能力
・Snapdragon 845 の浮動小数点演算速度
・ARM CPU の浮動小数点演算能力まとめ
・HTC 10 Snapdragon 820 Kyro の浮動小数点演算能力
・iPhone SE, Apple A9 の浮動小数点演算速度
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・iPod touch 6 の浮動小数点演算速度は Core 2 Duo ライン超え
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
・ARM cpu vfp の種類と fp16 命令を使ってみる