システムまわりの情報を返すAppleScriptの「system info」コマンドが、先日発売された第8世代Intel Coreプロセッサ「Coffe Lake」搭載のMac miniでも「Intel x86-64h Haswell」と返してくることが判明しました。
–> Wikipedia “List of Macintosh models grouped by CPU type”
MacBook Pro Retina 2012だと「CPU type of (system info)」を実行すると、「Intel 80486」と返してきますが、Mac mini 2014だと「Intel x86-64h Haswell」と返します(macOS 10.12.6上で実行)。
先日発売された第8世代Intel Core搭載のMac mini 2018を店頭でさわってみたところ、同機搭載のmacOS 10.14上で、「Intel x86-64h Haswell」と結果を返してきました。
▲PowerBook G4/667(PowerPC G4)@Mac OS X 10.4.11で実行したところ。「PowerPC 7450」と返ってくる
正確なCPU Brand nameを取得するには、こちらの「CPUのBrand Nameとバス速度を表示」AppleScriptを使ってください(CPU Type、Coreの世代を表すコード名ではないのですが、「3720QM」などとBrand Nameを取得できれば、そこから「Ivy Bridge」といった名称テーブルで付け合わせることは十分に可能です)。
CPUアーキテクチャの変わり目の時代に、実行マシンがPowerPC/Intelのどちらかを判定するような用途に使ったこの情報。マシンが想定よりも速すぎる/遅すぎる場合への対策を行うためにこのsystem infoの情報を読んで判定していました。
CPUアーキテクチャが(Intelに)変わってAppleScriptの処理を書き換える必要が出たのは、ファイル処理です。連番ファイルを順次破損チェックして、破損していたら削除して、前の番号のファイルをそのままコピーしてリネームする処理を行なっていたのですが、Intel CPUで実行したら、キャッシュの効きすぎなのか高速なためなのか、破損ファイルが2つ続くとファイルのコピーが間に合わずにエラーになりました。
その際には、処理方式を見直して2パスで(破損画像チェック&削除フェーズ → 欠損画像の補完フェーズ)処理を行うように変更して対処。また、前のファイル番号の画像を単純にコピーするのではなく、空白ブロックを一括で埋める方式に変更して、複数連番画像が欠損しているケースに対応しました。
あとは、データをhexdumpしたときに、byte orderを考慮しつつデータを取り出すような処理を行なったときに、PowerPC/IntelのCPUの違いを検出しました。AppleScript的には、Intel x32とIntel x64の違いについてはほぼ意識する必要はありません。
また、CPUアーキテクチャが変わる可能性があるので、地味にCPUアーキテクチャの確認はおさえておきたいノウハウです。