MacでのCPUアーキテクチャーの確認方法
Apple Silicon対応のMacが登場したことにより、OSやバイナリーのCPUアーキテクチャーがIntelとArmのどちらなのかを意識せざるを得ない場面が増えてしまった。そこで、CPU種類の確認方法を整理した。M1 macOS 11 Big Surで確認した。
概要
コマンドでの確認方法の一覧は以下の表の通りとなる。
種類 | コマンド | 出力零 |
---|---|---|
シェル | uname -m | arm64 |
ファイル | file <path> | <path>: Mach-O 64-bit executable arm64 |
OS | sysctl -n hw.optional.arm64 | 1 |
「Apple シリコン Mac で、アプリがネイティブか intel かを確認する | 林檎コンピュータ」を参考にした。
CPU種別といっても、何に対するCPU種別かによって確認方法が異なる。シェル、ファイル、OS、プロセスの4項目の対応CPUがわかればほぼ十分だろう。したがって、これらのCPU種別の確認方法を整理した。
なお、CPU種別は種別によって以下の表記などがされる。
- Intel: i386/x86_64/x64/amd64
- ARM: arm64/aarch64
uname
とfile
コマンドのみPOSIXに定義されているため、GNU/Linuxなどでも使用可能だが、その他はBSDやMacでのみ使用可能となる。シェル
まず、シェルは以下のコマンドで確認できる。
uname -m
arm64
このコマンド自体は、OSのCPU種別を表示することにはなっているのだが、例えばTerminalアプリをRosettaで起動するなどして、Intel版で起動した場合などで値が変わる。そのため、あくまで現在のシェルのCPUの判断にしておいたほうがよいだろう。
ファイル
続いて、ファイルは以下の2種類のコマンドで確認できる。
file <path>
<path>: Mach-O 64-bit executable arm64
lipo -archs <path>
arm64
lipo
コマンドはXcode 12から同梱されているコマンドらしい。単に確認したいだけならば、file
コマンドが簡単だろう。
実行バイナリーやライブラリーファイルなどで、対応CPUを確認したい場合に役立つだろう。
そのほか、ファインダーから右クリック-[Get Info]-[General] からも確認できる。
Universalとなっているのは、IntelとARMのどちらにも対応しているという意味となる。
OS
uname -m
はシェルのCPUとなるため、OSのCPUを別で確認する必要がある。以下の3種類のコマンドで確認できる。
sysctl -n hw.optional.arm64
1
sysctl -n kern.version
Darwin Kernel Version 20.6.0: Tue Apr 19 21:04:40 PDT 2022; root:xnu-7195.141.29~1/RELEASE_ARM64_T8101
sysctl -n machdep.cpu.brand_string
Apple M1
最初のhw.optional.arm64
の値を確認するのがプログラムなどでは使いやすく、目視確認では2番目と3番目となるだろう。
そのほかに、GUIでも確認できる。[About This Mac]-[Chip] で判断する。
プロセス
現在実行中のプロセスのCPU種類も確認することができる。
[Activity Monitor] を起動する。
[Kind] 列にCPU種別が表示されている。
結論
CPU種別の確認方法を整理した。概要にも記した通り、以下のコマンドで確認すれば通常は事足りるだろう。
種類 | コマンド | 出力零 |
---|---|---|
シェル | uname -m | arm64 |
ファイル | file <path> | <path>: Mach-O 64-bit executable arm64 |
OS | sysctl -n hw.optional.arm64 | 1 |
CPUを意識する必要がある場合、これらのコマンドで素早く確認したい。