Rosetta

Rosettaとは



Rosettaは、Appleが開発した、異なるCPUアーキテクチャ間でバイナリの互換性を維持するための技術です。具体的には、あるアーキテクチャ用にコンパイルされたプログラムコード(バイナリ)を、別のアーキテクチャ上で実行できるように動的に変換します。

Rosettaの歴史



Rosettaは、2004年にMacintoshがPowerPCアーキテクチャからIntelアーキテクチャへと移行する際に導入されました。これにより、既存のPowerPC用アプリケーションを、新しいIntelベースのMacでも動作させることが可能になりました。この技術は、仮想化ミドルウェア開発で実績のあった米Transitive社の技術を基にしています。

2006年にリリースされたIntel版Mac OS X v10.4.4に初めて搭載され、Mac OS X v10.6 "Snow Leopard"まで対応しました。しかし、Mac OS X Lionでは廃止されました。

Rosettaの仕組みとパフォーマンス



Rosettaは、アプリケーションのコード全体を事前に変換するのではなく、実行時に必要なコードを動的に変換します。これは、キャッシュメモリのような仕組みで、必要な部分だけを変換することで、効率的な動作を実現しています。ただし、コード変換のオーバーヘッドがあるため、ネイティブ実行と比較するとパフォーマンスは低下します。

PowerPCバイナリはx86コードに変換されますが、ユーザーはCPUの違いを意識することなくアプリケーションを実行できます。しかし、変換処理による速度低下は避けられず、同じクロック数のCPUでも、ネイティブ実行に比べてパフォーマンスが低下することが知られています。特に、PowerPC時代のアプリケーションはビッグエンディアンエンディアンが統一されているため、Intelアーキテクチャのリトルエンディアンに変換する際にバイトスワップとアライメント調整が必要となり、パフォーマンス低下の大きな要因となっています。しかし、バイトオーダーに依存しない処理がメインのアプリケーションでは、非常に優れたパフォーマンスを発揮する可能性もあります。

RosettaはClassic環境やスクリーンセーバ、システム環境設定などの非アプリケーションはサポートしていません。また、PowerPCコードとx86コードが混在したプロセスも処理できないため、PowerPC対応プラグインを使用するには、アプリケーション全体をRosettaで起動する必要があります。この点は、68kコードとPowerPCコードの混在を可能にしたMac OSのコード変換機構とは異なります。

Rosetta 2の登場



2020年、AppleはMacのアーキテクチャをIntel x86-64からAppleシリコンへと移行することを発表しました。この移行に伴い、Intel向けアプリケーションをAppleシリコン搭載のMacで実行するために、Rosetta 2が導入されました。

Rosetta 2は、Intel向けアプリケーションをARMベースのAppleシリコンで実行できるようにするソフトウェアです。macOS Big Surで利用可能となり、インストール時にARMプログラムに変換する機能が実装されています。

Appleシリコンの効率の高さから、Rosettaが不得意としていた計算量の多いプロユースソフトウェアも、Rosetta 2を通じてほぼ全て変換できるようになりました。Rosetta 2のインストールは任意で、Appleシリコン搭載Macで初めてIntel向けアプリケーションを起動した際にインストールできます。

Rosettaのまとめ



Rosettaは、異なるアーキテクチャ間のソフトウェア互換性を保つための重要な技術です。旧アーキテクチャのアプリケーションを新しい環境で利用できるようにすることで、移行期間におけるユーザーエクスペリエンスを向上させる役割を果たしています。RosettaとRosetta 2の登場により、Appleのアーキテクチャ移行はスムーズに進められました。


関連項目



FX!32 - DEC Alpha向けの類似技術
QuickTransit

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。