月別アーカイブ: 2024年6月

ARM CPU の 64bit/32bit 命令対応

最近の ARM CPU Core は 32bit 命令への対応が徐々に無くなりつつあり 64bit 命令のみ動作するようになっています。

Apple はすでに iOS11 の段階で 64bit に完全移行しており 32bit のアプリが動作しません。同時にプロセッサも 32bit 命令が廃止されており、Apple A11 (iPhone8/X) 以降は AArch32(ARMv7) 命令非対応となっています。

同じように ARM の CPU Core も完全な 64bit 化が進んでいます。ARM Core の世代と 32bit/64bit への対応状況をまとめてみました。

ARMv8 世代の CPU までは 32bit/64bit 両方の命令に対応していますが、ARMv9 世代になってからは段階的に 32bit 命令が廃止されてきていることがわかります。

Apple の watchOS のように、ILP32 で 32bit OS ながら対応命令が 64bit (AArch64) のみとなっているものもあります。(詳しくはこちら「Apple Watch Series 6 と CPU 性能の測定」)

関連エントリ

IvyBridge と N100 を比較する

OS サポートが切れた 12年前の Mac mini をずっと Linux マシンとして使用していましたが、今なら Intel N100 の方が速いのではないかと思い速度を比べてみました。N100 は AlderLake (第12世代) の E-Core のみ搭載した CPU です。

以下は Ubuntu 22.04 におけるコンパイル時間 (clang 14) を比較したものです。

PCCPUTDPClockCoreThreadコンパイル時間
Mac mini Late2012Core i7-3615QM45W3.3GHzIvyBridge4C 8T69.57
Mini PCIntel N10020W3.2GHzAlderLake(E)4C 4T59.67
  • ↑コンパイル時間の数値が小さい方が高速

ストレージもメモリもクロックもちょうど同じくらいの性能でしたが、N100 の方が 10秒ほど早くビルドが終わっています。N100 は Atom 系の省電力コアながら、第3世代 Core の IvyBridge よりも速いことがわかります。

搭載されているメモリとストレージは以下の通りです。

PCCPURAM 容量メモリの種類メモリ速度STORAGE
Mac mini Late2012Core i7-3615QM16GBDDR3-1600 x225.6 GB/sSATA SSD
Mini PCIntel N10016GBDDR4-3200 x125.6 GB/sSATA SSD

なお N100 の TDP はスペックを見ると 6W ですが、テストした PC の UEFI (BIOS) では PL1=20W, PL2=無効 に設定されていたため今回の結果は 20W 時の値になっています。

さらに N100 で vfpbench の値も調べてみました。IvyBridge と比較してみます。

PCCPUTDPClockSingle SpSingle DpMulti SpMulti Dp
Mac mini Late2012Core i7-3615QM45W3.3GHz51.7G26.1G193.4G97.0G
Mini PCIntel N10020W3.2GHz54.2G27.1G185.0G92.6G
  • ↑数値の単位は FLOPS、値が大きい方が高速

すべての結果は以下の場所にあります。

掲載した表の数値はピーク値のみです。これを見るとどちらもあまり差が生じていないように見えますが、その内訳は大きく異なっています。

IvyBridge は 256bit の浮動小数点演算パイプを 2本持っており、それぞれ加算と乗算を受け持ちます。FMA には非対応ですが AVX 256bit の add と mul 命令を同時に実行できるため、この組み合わせがピーク値になります。add または mul 命令単独の場合は片方のみが使われるため効率は半減します。

N100 は FMA に対応しているため 1命令で積和演算が可能です。その代わり 256bit の AVX 命令はクロックあたりひとつしか実行できず、256bit fma がピーク値になります。128bit の AVX/SSE であれば 2命令実行できているため、浮動小数点演算の実行パイプラインは 128bit が 2本あることがわかります。この構成は AMD の Jaguar 系と似ています。

これらの結果より FMA や AVX2 があるので互換性の面でも N100 が有利ですが、fma 以外の 256bit AVX 浮動小数点演算が混在するようなケースでは IvyBridge の方がスループットが高くなる可能性があります。

大まかに両者の性能がわかったところで、他の PC ともコンパイル時間を比較してみたいと思います。

以下の表は同じ Linux 上での比較です。Ubuntu 22.04 Clang 14。SteamDeck は Distrobox を使用しています。

PCCPUTDPThreadCoreSTORAGEコンパイル時間
Mac mini Late2012Core i7-3615QM45W4C 8TIvyBridgeSATA SSD69.57 秒
Mini PCIntel N10020W4C 4TAlderLake(E)SATA SSD59.67 秒
SteamDeck LCDCustom APU 040515W4C 8TZen2NVMe 452.31 秒
Desktop PCRyzen 5 260065W6C 12TZen1+SATA SSD29.78 秒
  • ↑コンパイル時間の数値が小さい方が高速

以下の表は同じ Ubuntu 22.04 Clang 14 ですが Windows 上の WSL2 を使用しています。同じ N100 や Ryzen 5 2600 で比べるとわかるように、Native の Linux よりも若干遅めの数値になります。

CPUTDPTHREADCORESTORAGEコンパイル時間
Intel N10020W4C 4TAlderLake(E)NVMe 367.26 秒
Core i5-940065W6C 6TCoffeeLakeNVMe 355.86 秒
Core i7-4790K88W4C 8THaswellSATA SSD39.77 秒
Core i7-6700K65W4C 8TSKyLakeSATA SSD35.83 秒
Ryzen 5 5560U25W6C 12TZen3NVMe 335.04 秒
Ryzen 5 260065W6C 12TZen1+NVMe 332.10 秒
Ryzen 5 360065W6C 12TZen2NVMe 322.78 秒
Ryzen 7 4750G45W8C 16TZen2NVMe 322.36 秒
Ryzen Z1 Extreme25W8C 16TZen4NVMe 417.33 秒
Ryzen 9 3950X105W16C 32TZen2NVMe 39.17 秒
Core i7-1370065W16C 24TRaptorLakeNVMe 48.39 秒
  • ↑コンパイル時間の数値が小さい方が高速

やはりコア数が多い CPU や新しいアーキテクチャの CPU、消費電力の高い CPU は性能が上がります。

下の表はさらに Android 上の Termux (Clang 18.1.7) での計測してみた結果です。モバイルデバイスも CPU もコア数が多いので今回のケースでは速度が出ています。ただし RAM 容量が少ないことや放熱の問題があるので、大きなプロジェクトや長時間の連続稼働にはおそらく向きません。

PCCPUTHREADCOREコンパイル時間
iPlay 50 Mini ProHelio G998C 8T (2+6)A76 / A5553.68 秒
iPlay 50 ProHelio G998C 8T (2+6)A76 / A5547.45 秒
Huawei P30 ProKirin 9808C 8T (4+4)A76 / A5527.73 秒
Pixel 8aTensor G39C 9T (1+4+4)X3 / A715 / A51021.94 秒
Pixel 8Tensor G39C 9T (1+4+4)X3 / A715 / A51020.35 秒
  • ↑コンパイル時間の数値が小さい方が高速

N100 搭載 PC は安価で入手できることもあり人気があります。Raspberry Pi 5 を一通り揃えても同じくらいの価格帯になりますので、入手のしやすさは魅力といえます。IvyBridge の Core i7-3615QM との比較でも十分 N100 の方が速いことがわかりました。

ただし思ったよりも差は少なく、他の PC と比べると性能には限界があります。もし少ない価格差で Ryzen 5 5560U にアップグレードできるならビルド時間は約半分、浮動小数点演算性能も数倍になりますので、用途によってはこちらの方がコストパフォーマンスは良いかもしれません。

関連エントリ