Mac 68Kエミュレータ

Mac 68Kエミュレータ



Mac 68Kエミュレータは、PowerPCプロセッサを搭載したMacintoshにおいて、Classic Mac OSの全バージョンに組み込まれているソフトウェアエミュレータです。このエミュレータの主な機能は、以前の68Kプロセッサ用に開発されたプログラムやシステムコードを、ユーザーやプログラマにシームレスに実行できることにあります。その結果、Mac OSは初めて二種類のハードウェアアーキテクチャに対応したオペレーティングシステムとしての成功を収めました。

起源



このエミュレータの初版は、Gary Davidianによって開発されました。元々はモトローラ88000CPU向けに設計されたもので、AppleRISCプラットフォーム向けの初期試作として作成されたものの、実用化には至りませんでした。その後、エリック・トラウトが動的再コンパイル(DRE)を用いた新たなバージョンの開発を行い、これが大きな進展として評価されました。トラウトはConnectixで成功を収めた他のエミュレーションプロジェクトにも関わりました。

実装



Mac 68Kエミュレータは、全てのバージョンにおいて68020/68030の例外スタックフレームを含む68EC040命令セットのサブセットをエミュレートしています。Appleの開発者ドキュメントによると、このエミュレータはMacintosh Centris 610を模した動作環境を提供するとしています。初期のバージョンでは、すべての命令が逐一デコードされ、PowerPCの同等命令が実行されていましたが、後期のPCI Power MacではDRE技術を取り入れることでパフォーマンスを向上させました。

DREは、再利用されるコードを事前にPowerPCネイティブの命令にコンパイルし、キャッシュすることで実現されています。この仕組により、エミュレータが同じ680x0コードを認識した際には、事前にキャッシュしたPowerPCのコードを実行するだけで済むため、コンパイル処理を省略することができました。この方式により、68x0の実機よりも速く命令を実行することが可能になり、シンプルながら印象的な成果を達成しました。

その成功の要因の一つは、Classic Mac OSのAPIが680x0プロセッサのトラップとして実装されていたことです。このため、APIの呼び出しは680x0におけるエラーと同じ方法で処理され、エミュレータがこれをネイティブPowerPCコードに置き換えたことで、アプリケーションはより高速に処理されました。このアプローチは、AppleがOSをPowerPCに移行する際にも役立ちました。

プログラマの観点からは、PowerPCへの移行は驚くほどスムーズでした。これは、エミュレーションの開始や終了が自動化されていたためです。また、Universal Procedure Pointer(UPP)という新しいポインタが使用されており、68Kコードから見れば通常のポインタのように振る舞い、実際には追加のデータ構造が続いています。これにより、PowerPCのコード側では、UPPを用いてエミュレーションの開始や終了を行うことが可能になります。

さらに、Mac OSのシステムライブラリには、ネイティブコードと68K用コードの両方を透明に呼び出すためのスタブが搭載されており、開発者はデュアルアーキテクチャに対して最小限の労力で対応できたため、アプリケーションやOSに680x0コードとPowerPCコードの両方を混ぜることも容易でした。

関連項目


  • - ナノカーネル
  • - Alpha Microsystems
  • - Classic(Max OS Xの仮想環境)
  • - RosettaPowerPC命令をx86に変換)

このように、Mac 68Kエミュレータは、Appleオペレーティングシステムに重要な役割を果たし、技術的な進歩を促進したのです。

もう一度検索

【記事の利用について】

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

【リンクついて】

リンクフリーです。