コンテンツにスキップ

「Rosetta」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
編集の要約なし
Cewbot (会話 | 投稿記録)
1行目: 1行目:
{{Otheruses|macOSの基盤技術|その他の用法|ロゼッタ}}
{{Otheruses|macOSの基盤技術|その他の用法|ロゼッタ}}
{{出典の明記|date=2011-07}}
{{出典の明記|date=2011-07}}
'''Rosetta'''(ロゼッタ)は、特定の[[アーキテクチャ]]のプログラムコードを持つバイナリを、別のアーキテクチャ適宜変換 ([[:en:Dynamic recompilation]]) することでバイナリの互換性を維持する[[アップル (企業)|アップル]]の技術 。
'''Rosetta'''(ロゼッタ)は、特定の[[アーキテクチャ]]のプログラムコードを持つバイナリを、別のアーキテクチャ適宜変換 ([[:en:Dynamic recompilation]]) することでバイナリの互換性を維持する[[Apple]]の技術 。


== Rosetta ==
== Rosetta ==

2021年5月20日 (木) 11:22時点における版

Rosetta(ロゼッタ)は、特定のアーキテクチャのプログラムコードを持つバイナリを、別のアーキテクチャ適宜変換 (en:Dynamic recompilation) することでバイナリの互換性を維持するAppleの技術 。

Rosetta

2004年、MacintoshPowerPCからインテルアーキテクチャへ移行することに伴い、従来のバイナリの互換性を維持するために、PowerPC用プログラムコードをインテル用コードにアップルの発注を受け仮想化ミドルウエア開発で実績のある米Transitiveの技術が導入された[1]

インテルアーキテクチャ向けに対応し、2005年にリリースされたv10.4 "Tiger"に基盤技術として初めて搭載されたものの、v10.6 "Snow Leopard"ではインストールが任意化[2]及び最後の対応となり、v10.7 "Lion"で廃止された[3]

仕組みとパフォーマンス

どの程度のサイズのバイナリコードが変換されるかは動的に変化する(キャッシュメモリと同じような概念で、必要なプログラムコードを任意の容量読み込んだ上でx86コードに変換するため、逐一命令を変換するエミュレータとはいささか趣を異にする)。アプリケーションのコード全体をインテル用コードに変換してから実行する機能はない。ユニバーサルバイナリ対応のソフトでは自動的にインテル用コードが実行される。

Rosetta環境下で実行されるPowerPCバイナリはx86コードへと変換され、ユーザー側からはCPU種別を意識することなくアプリケーションを実行できる。ただし、前述の動作方法ゆえに速度の低下は避けられず、シングルコアG5より高速と言われるIntel Core Duoで同クロックのG4の50~80%以下の速度になる(メモリ容量や周辺ハードウェアの違いに左右されるため一概には言えない)といわれている。当初RosettaはG3互換の環境とされていたが、実際にはAltiVecに対応したG4互換の環境として出荷された。G5ネイティブのコードについては最後までサポートされなかった。

Rosettaを利用した場合、たとえ最新のCore i7でも、PowerPC時代のPower Macと比べても性能はそれほど伸びない。PowerPCアプリケーションのほぼ全てがエンディアンをビッグエンディアンに揃えていて、それをIntelシステム上で動くコードに置き換えるとき、リトルエンディアンへのバイトスワップとアライメント調整を行うコードを大量に出力してしまうのが最大の原因と言われている。メモリの読み書きはCPUにとって基本的な機能であり、そこに足かせがつけられてしまうのはアプリケーション性能に重大な影響を与えてしまう。逆を言えばバイトスワップが発生しないバイトオーダーの処理がメインのアプリケーションでは非常に優れたパフォーマンスを発揮し得る。しかしそのようなソフトウエアは少なく、例えば画像処理など基本的にバイトオーダーで処理するソフトウエアでもワードアクセスした後バンドル処理を行うといったチューニングが施されているため、Rosettaの上で動かそうとすると裏目に出る結果となる。

なお、RosettaはClassic環境をサポートせず、スクリーンセーバやシステム環境設定など、非アプリケーションのバイナリも実行できない。PowerPCコードとx86コードの混在したプロセスも処理できず、アプリケーションソフトウェアのPowerPC対応プラグインを使用するには、アプリケーション全体をRosettaで起動しなくてはならない(なお、DashboardウィジェットはダイナミックHTMLベースであるため、CPUの違いの影響を受けない)。この点はMixed Mode Managerにより68kコードとPowerPCコードの混在したプロセスを処理可能としていたMac OSのコード変換機構と異なり、注意が必要である。

Rosetta 2

2020年6月に行われたWWDC20において、アップルはMacintoshのアーキテクチャをインテルからAppleシリコンに移行することを発表した[4]。それに伴い、Rosetta 2 はAppleシリコンを搭載したコンピューターインテル向けアプリケーションでの互換性維持のために発表され、同年11月にリリースされたmacOS Big Surで利用可能となった。

インテル向けの従来のアプリケーションは、Xcode 12で再ビルドするだけでインテルとAppleシリコンの両方に対応したUniversal Binaryにできるとされているが、それを行っていない古いアプリケーションをAppleシリコンを搭載したMacintoshで使用するには、Rosetta 2を経由することになる。

Rosetta 2 のインストールは任意であり、Appleシリコンを搭載したMacintoshではじめてインテル向けのアプリケーションを起動したときにインストールできる。Rosettaでも可能な実行時(JIT)変換の他に、Rosetta 2ではインストール時にアプリケーションを変換する機能がサポートされる[5]

脚注

  1. ^ 86系に乗り換えるApple社の秘策,「Rosetta」の概要が明らかに
  2. ^ 話題のユキヒョウを追う「Snow Leopard、ココに注目」(3) - 互換性の謎を解く
  3. ^ 新機能のポイントをチェック! アップル「OS X Lion」速攻レビュー(後編)
  4. ^ Apple、MacにAppleシリコンを搭載することを発表”. Apple Newsroom. 2020年6月24日閲覧。
  5. ^ WWDC 2020 - Videos - Apple Developer”. developer.apple.com. 2020年7月4日閲覧。