仮想化ソリューションを専門とするソフトウェア企業Corelliumは、Apple M1プロセッサ搭載PCへのLinuxの移植に成功し、ほぼすべてのシステム周辺機器の動作確認にも成功しました。その過程で、CorelliumはApple M1プロセッサとシステムアーキテクチャに関する興味深い詳細をいくつか発見しました。
数週間前、Corelliumというスタートアップ企業がApple M1ベースのコンピューターでLinuxを動作させることに成功したと報じました。当時、Linuxは動作しましたが、多くの機能をサポートしておらず、実質的にPCをほとんど使い物にならなかったのです。しかし最近、同社はようやくほとんどの機能(Wi-Fiを含む)を動作させることに成功し、最新のMacでもLinuxが使えるようになりました。しかし、このようなコンピューターでApple製以外のOSを動作させるというこのプロジェクトには、AppleのSoCが他のArmベースのアーキテクチャとどれほど異なるかを明らかにするという興味深い副次効果がありました。
多数の独自技術
Appleが長年にわたり、iPhoneとiPadで比類なきパフォーマンスを実現するために、独自のArmベース・マイクロアーキテクチャの構築に注力してきたことは周知の事実です。競合他社とは異なり、Appleはコア数を増やすのではなく、コアのシングルコア/シングルスレッド性能を向上させました。Corelliumによると、Appleはカスタムコアに加えて、高度にカスタマイズされたシステムアーキテクチャも採用しているようです。
ほぼすべての64ビットArmベースシステムは起動時にPSCIと呼ばれるインターフェースを介してファームウェアを呼び出しますが、M1の場合、CPUコアはMMIOレジスタで指定されたアドレスからカーネルの実行を開始します。さらに、Appleシステムは独自のApple Interrupt Controller(AIC)を使用していますが、これはArmの標準とは互換性がありません。一方、タイマー割り込みはFIQに接続されていますが、これは主に32ビットArmシステムで使用されている、Linuxとは互換性のない、あまり知られていないアーキテクチャ機能です。
M1搭載PC内の複数のプロセッサが相互に連携するには、OSがプロセッサ間割り込み(IPI)を提供する必要があります。以前は、IPIはAICへのMMIOアクセスを使用して従来のIRQと同様に処理されていましたが、M1の場合、AppleはFIQに依存しているため、プロセッサコアレジスタを使用してIPIのディスパッチと確認を行います。
Appleの奇妙な点はそれだけではありません。例えば、AppleのWi-Fi/Bluetoothコントローラは、非標準のPCIeベースプロトコル(幸いにもCorellium仮想化ソフトウェアでサポートされていました)を使用してSoCに接続します。さらに複雑なことに、AppleのPCIeと統合されたSynopsys DWC3 USBコントローラは、Apple独自の入出力メモリ管理ユニット(IOMMU)であるデバイスアドレス解決テーブル(DART)を使用しています。さらに、AppleのI2Cには独自のプロトコルを使用するカスタムファームウェアが搭載されており、USB Type-Aポートの使用を妨げています。
合併症
Appleにとって、独自のシステムアーキテクチャを採用することは目新しいことではありませんが、他のOSを自社プラットフォームに移植することや、それらのOSを仮想化モードで動作させることははるかに困難になるでしょう。最近、ある開発者がQEMU仮想化を用いて、Microsoftの次期Windows 10XをApple M1ベースのシステムで動作させることに成功しましたが、このOSはまだ最終版ではなく、安定性も不明です。さらに、Windows 10XはWin32アプリを実行できないため、一部のユーザーにとっては価値が下がる可能性があります。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
Apple MacでWindows 10やLinuxを実行することは、ほとんどのMacユーザーにとってそれほど重要ではないかもしれません。しかし、複数の独自技術を特徴とする複雑なシステムアーキテクチャは、ArmベースのMac向けの特定の種類のソフトウェアやハードウェアの開発を困難にする可能性があります。
アントン・シロフはTom's Hardwareの寄稿ライターです。過去数十年にわたり、CPUやGPUからスーパーコンピュータ、最新のプロセス技術や最新の製造ツールからハイテク業界のトレンドまで、あらゆる分野をカバーしてきました。