Rosettaは、 Apple Inc.がmacOS向けに開発した動的バイナリトランスレータであり、異なる命令セットアーキテクチャ間のアプリケーション互換性レイヤーです。ソフトウェアを自動的に変換することで、新しいハードウェアへの移行を可能にします。その名前は、エジプトの象形文字の翻訳を可能にした遺物であるロゼッタストーンに由来しています。[ 2 ]
Rosettaの最初のバージョンは、MacがPowerPCプロセッサからIntelプロセッサに移行する過程の一環として、 2006年にMac OS X Tigerで導入されました。これにより、 PowerPCアプリケーションをIntelベースのMacで実行できるようになりました。Rosettaは、 2011年にMac OS X Lion (10.7)で削除されました。
Rosetta 2 は 2020 年にmacOS Big Surのコンポーネントとして導入され、 Mac が Intel プロセッサから Apple Silicon に移行する一環として、IntelアプリケーションをApple Siliconベースの Macで実行できるようにしました。[ 3 ] Rosetta 2 のほとんどの機能は、2027 年にバージョン 28 で macOS から削除されます。
Macintoshは、 Motorola 68000シリーズ、PowerPC、Intel x86、そしてAppleシリコンに搭載されたARM64など、複数の異なる命令セットアーキテクチャ(ISA)を持つCPUを使用してきました。それぞれのISAには互換性がないため、ソフトウェア層に基づいて、前のISAを次のISA上でエミュレートする移行計画が必要となります。
Power Macintoshの発売に伴い、Mac 68KエミュレータはSystem 7.1.2以降に搭載されました。このエミュレータはPowerPCの機能を利用し、オペレーティングシステムの最下層に組み込まれ、Mac OSナノカーネルと統合されています。つまり、ナノカーネルはPowerPC割り込みを傍受し、68k割り込みに変換(必要に応じて混合モード切り替えも実行)した後、68kコードを実行して割り込みを処理することができます。これにより、68kコードとPowerPCコードを同じバイナリファイル内に混在させることが可能です。
Apple は、Mac が PowerPC から Intel プロセッサに移行した2006 年に Rosetta をリリースしました。これは、 x86ベースの MacをリリースしたバージョンであるMac OS X Tiger 10.4.4 "Tiger"に含まれており、多くの変更されていないPowerPCアプリケーションを Intel ベースの Mac コンピュータで自動的に実行できるようにします。Rosetta はQuickTransitテクノロジーに基づいています。[ 4 ]グラフィカル ユーザー インターフェイスはなく、透過的に起動するため、Apple は Rosetta を「決して見ることのない最も驚くべきソフトウェア」と表現しました。[ 5 ] Rosetta は、Mac OS X 10.6 "Snow Leopard"にオプションでインストールできます。[ 6 ] Rosetta は、 Mac OS X 10.7 "Lion" (2011 年にリリース) 以降には含まれておらず、サポートもされていません。[ 6 ]
Intel プロセッサと PowerPC プロセッサのアーキテクチャ上の違いが大きいため、Rosetta は 68000 エミュレータよりも高いレベルで動作し、ユーザー レベルのコードを傍受してエミュレートすることしかできないユーザー レベルのプログラムです。G3 、G4 、およびAltiVec命令は変換しますが、G5は変換しません。PowerPC ベースの Mac 用のほとんどの商用ソフトウェアはこれらの要件と互換性があり、G4 システムは依然として広く使用されていましたが、開発者は Rosetta で動作するように、G5 固有の命令に依存するアプリケーションを更新する必要があります。Apple は、ユーザーとのやり取りが多いが計算負荷が低いアプリケーション (ワード プロセッサなど) は Rosetta で使用するのに最適であり、計算負荷が高いアプリケーション (ゲーム、AutoCAD、またはPhotoshopなど) は適さないとアドバイスしました。[ 7 ]
2020年、AppleはMacのAppleシリコンへの移行を支援するため、macOS Big SurにRosetta 2をバンドルすると発表した。このソフトウェアにより、 x86-64ベースのプロセッサでの実行専用にコンパイルされた多くのアプリケーションをAppleシリコンでの実行に変換できる。[ 3 ] [ 8 ]
Rosetta 2 は、ジャストインタイム(JIT) 翻訳のサポートに加えて、事前コンパイル(AOT) も提供しており、ユニバーサルバイナリを持たないアプリケーションが Apple シリコン Mac にインストールされた場合、x86-64 コードは一度だけ完全に翻訳されます。[ 9 ]
Rosetta 2 のパフォーマンスは高く評価されています。[ 10 ] [ 11 ]いくつかのベンチマークでは、ネイティブの x86-64 よりも、M1 上の Rosetta 2 で x86-64 のみのプログラムのパフォーマンスが向上しました。Rosetta 2 がこのような高いレベルの変換効率を提供する主な理由の 1 つは、M1 SoC でのx86-64メモリ順序付けのサポートです。 [ 12 ]また、SoC には x86 フラグを計算するための専用命令もあります。[ 13 ]
macOS Ventura以降、Linuxゲストオペレーティングシステムの仮想マシンは、 Rosetta 2をゲストランタイムバイナリとしてインストールして、x86-64 Linuxアプリを実行できます。[ 14 ] [ 15 ]
WWDC 2025で、AppleはRosetta 2のほとんどの機能が2027年のバージョン28でmacOSから削除され、サポートはメンテナンスされていないゲームに限定されると発表した。[ 16 ]
アプリをインストールする際に翻訳されるため、すぐに起動でき、即座に応答します。Rosetta 2は必要に応じてコードをリアルタイムで翻訳することもできます。
ARMフラグ操作拡張機能... Appleの秘密の拡張機能...