MacでのCPUアーキテクチャーの確認方法

Apple Silicon対応のMacが登場したことにより、OSやバイナリーのCPUアーキテクチャーがIntelとArmのどちらなのかを意識せざるを得ない場面が増えてしまった。そこで、CPU種類の確認方法を整理した。M1 macOS 11 Big Surで確認した。

概要

コマンドでの確認方法の一覧は以下の表の通りとなる。

CPU種類の確認方法
種類 コマンド 出力零
シェル 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

これを念頭に確認方法を記す。なお、unamefileコマンドのみ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種別の確認方法を整理した。概要にも記した通り、以下のコマンドで確認すれば通常は事足りるだろう。

CPU種類の確認方法
種類 コマンド 出力零
シェル uname -m arm64
ファイル file <path> <path>: Mach-O 64-bit executable arm64
OS sysctl -n hw.optional.arm64 1

CPUを意識する必要がある場合、これらのコマンドで素早く確認したい。

コメントを残す

メールアドレスが公開されることはありません。