(57)【要約】【解決手段】ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピングのための方法およびシステムを開示する。ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定する。前記統計にもとづいて、前記レジスタセットの内、１以上の最も多く使われるレジスタを含む第１レジスタサブセットを決める。前記第１レジスタサブセットをホストシステムプロセッサの第１レジスタグループにダイレクトマッピングする。前記レジスタセットの第２レジスタサブセットを前記ホストシステムプロセッサの第２レジスタグループに動的にマッピングする。【選択図】図２Ｂ
2009535745.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステム上でターゲットシステムをエミュレーションするための方法であって、
ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定するステップと、
前記統計にもとづいて、前記レジスタセットの内、１以上の最も多く使われるレジスタを含む第１レジスタサブセットを決めるステップと、
前記第１レジスタサブセットをホストシステムプロセッサの第１レジスタグループにダイレクトマッピングするステップと、
前記レジスタセットの第２レジスタサブセットを前記ホストシステムプロセッサの第２レジスタグループに動的にマッピングするステップとを含むことを特徴とする方法。
【請求項２】
前記第１および第２レジスタグループを用いて前記ホストシステムプロセッサ上で前記ターゲットシステムプロセッサをエミュレートするステップをさらに含む請求項１の方法。
【請求項３】
前記ターゲットシステムをエミュレートするステップは、ターゲットシステムプロセッサ用のインストラクションをトランスレートするステップを含む請求項２の方法。
【請求項４】
前記ターゲットシステムプロセッサのレジスタセットのレジスタのいくつかは、前記ホストシステムプロセッサの第１および第２レジスタグループのレジスタよりもサイズが大きい請求項１の方法。
【請求項５】
前記ターゲットシステムプロセッサのレジスタセットのレジスタは１２８ビットレジスタを含み、前記ホストシステムプロセッサの第１および第２レジスタグループのレジスタは６４ビットレジスタを含む請求項４の方法。
【請求項６】
前記第１レジスタサブセットをダイレクトマッピングするステップまたは第２レジスタサブセットを動的にマッピングするステップは、ターゲットシステムレジスタの下位フィールドを第１ホストシステムレジスタにマッピングし、前記ターゲットシステムレジスタの上位フィールドを第２ホストシステムレジスタにマッピングするステップを含む請求項４の方法。
【請求項７】
前記ホストシステムプロセッサはセルプロセッサのパワー・プロセッサ・エレメントである請求項１の方法。
【請求項８】
第１および／または第２グループの１以上のレジスタは、前記パワー・プロセッサ・エレメントのＶＭＸユニットのレジスタである請求項７の方法。
【請求項９】
前記ホストプロセッサで中間結果を生成する演算を実行するステップと、前記中間結果を前記第２レジスタグループの１以上のレジスタに格納するステップとをさらに含む請求項１の方法。
【請求項１０】
前記ターゲットシステムプロセッサはエモーション・エンジンである請求項１の方法。
【請求項１１】
前記エモーション・エンジン用のインストラクションを前記ホストシステムプロセッサで読み取り可能なマシンコードにトランスレートすることにより、前記ホストシステムプロセッサで前記エモーション・エンジンをエミュレートするステップをさらに含む請求項１０の方法。
【請求項１２】
ターゲットシステムのインストラクションのブロッキングの可能性を減らすために、第２サブセットレジスタの動的マッピングをローテーションするステップをさらに含む請求項１の方法。
【請求項１３】
前記ターゲットシステムは１以上のさらなるプロセッサを含み、当該方法は、前記１以上のさらなるプロセッサ用のインストラクションをインタープリトし、インタープリトされたインストラクションを前記ホストシステムプロセッサまたは前記ホストシステムプロセッサに接続された１以上のコプロセッサ上で実行することにより、前記１以上のさらなるプロセッサをエミュレートするステップをさらに含む請求項１１の方法。
【請求項１４】
第１サブセットレジスタのダイレクトマッピングおよび／または第２サブセットレジスタの動的マッピングを動的に再構成するステップをさらに含む請求項１の方法。
【請求項１５】
ターゲットシステムをエミュレーションするためのホストシステムであって、
１以上のホストシステムプロセッサと、
前記１以上のホストシステムプロセッサに接続されたメモリと、
前記メモリに具体化されたプロセッサで実行可能なインストラクションセットとを含み、
当該プロセッサで実行可能なインストラクションは、ホストシステム上でターゲットシステムをエミュレーションするための方法を実装するためのインストラクションを含み、
当該方法は、
ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定するステップと、
前記統計にもとづいて、前記レジスタセットの内、１以上の最も多く使われるレジスタを含む第１レジスタサブセットを決めるステップと、
前記第１レジスタサブセットをホストシステムプロセッサの第１レジスタグループにダイレクトマッピングするステップと、
前記レジスタセットの第２レジスタサブセットを前記ホストシステムプロセッサの第２レジスタグループに動的にマッピングするステップとを含むことを特徴とするホストシステム。
【請求項１６】
前記１以上のホストシステムプロセッサはパワー・プロセッサ・エレメントを含む請求項１５のシステム。
【請求項１７】
前記１以上のホストシステムプロセッサは、前記パワー・プロセッサ・エレメントに接続された１以上のシナジスティック・プロセッサ・エレメントをさらに含む請求項１６のシステム。
【請求項１８】
第１および／または第２グループの１以上のレジスタは、前記パワー・プロセッサ・エレメントのＶＭＸユニットのレジスタである請求項１６のシステム。
【請求項１９】
前記ターゲットシステムプロセッサのレジスタセットのレジスタは、前記ホストシステムプロセッサの第１および第２レジスタグループのレジスタよりもサイズが大きい請求項１５のシステム。
【請求項２０】
前記ターゲットシステムプロセッサのレジスタセットのレジスタは１２８ビットレジスタであり、前記ホストシステムプロセッサの第１および第２レジスタグループのレジスタは６４ビットレジスタである請求項１９のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権の主張］
本出願は、２００７年４月４日に出願された、Ｓｔｅｗａｒｔ  Ｓａｒｇａｉｓｏｎらの「ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング」と題する同一出願人による同時係属出願第１１／６９６，６９１号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。
【０００２】
本出願は、２００６年５月３日に出願された、「インタープリトされたコードとトランスレートされたコードの両方に関するエミュレーションにおけるクロック管理の問題を解決するための方法と装置」と題する米国仮出願第６０／７４６，２７３号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、２００６年５月３日に出願された、Ｓｔｅｗａｒｔ  Ｓａｒｇａｉｓｏｎらの「ホストシステム上でターゲットシステムをエミュレーションする際のトランスレーションブロックの無効の事前ヒント」と題する米国仮出願第６０／７４６，２６７号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、２００６年５月３日に出願された、Ｓｔｅｗａｒｔ  Ｓａｒｇａｉｓｏｎらの「ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング」と題する米国仮出願第６０／７４６，２６８号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、２００６年５月３日に出願された、Ｖｉｃｔｏｒ  Ｓｕｂａの「ストール予測スレッド管理」と題する米国仮出願第６０／７９７，７６２号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、２００６年５月３日に出願された、Ｓｔｅｗａｒｔ  Ｓａｒｇａｉｓｏｎらの「ＤＭＡおよびグラフィックスインタフェースエミュレーション」と題する米国仮出願第６０／７９７，４３５号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、２００６年５月３日に出願された、Ｓｔｅｗａｒｔ  Ｓａｒｇａｉｓｏｎらの「コードトランスレーションおよびパイプライン最適化」と題する米国仮出願第６０／７９７，７６１号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。
【０００３】
本出願は、２００７年１月３０日に出願された、米国特許出願第１１／７００，４４８号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、２００７年４月４日に出願された、Ｓｔｅｗａｒｔ  Ｓａｒｇａｉｓｏｎらの「ホストシステム上でターゲットシステムをエミュレーションする際のトランスレーションブロックの無効の事前ヒント」と題する同一出願人による同時係属出願第１１／６９６，６８４号（アトーニー・ドケット番号ＳＣＥＡ０５０５３ＵＳ０１）の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、２００７年４月４日に出願された、Ｓｔｅｗａｒｔ  Ｓａｒｇａｉｓｏｎらの「インタープリトされたコードとトランスレートされたコードの両方に関するエミュレーションにおけるクロック管理の問題を解決するための方法と装置」と題する同一出願人による同時係属出願第１１／６９６，６９９号（アトーニー・ドケット番号ＳＣＥＡ０５０５５ＵＳ０１）の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。
【０００４】
［関連出願との相互参照］
本出願は、２００６年１月３０日に出願された米国仮特許出願第６０／７６３，５６８号に関連し、その開示内容全体を参照によりここに援用する。
【０００５】
［技術分野］
本発明の実施の形態は、ホストコンピュータプラットフォーム上でのターゲットコンピュータプラットフォームのエミュレーションに関し、特に異なるサイズのレジスタをもつターゲットシステムとホストシステム間のレジスタマッピングに関する。
【背景技術】
【０００６】
第１コンピュータプラットフォーム（「ターゲットシステム」）の機能を第２コンピュータプラットフォーム（「ホストシステム」）上でエミュレートすることにより、ホストシステムがターゲットシステム向けに設計されたプログラムを実行できるようにする処理は、「エミュレーション」として知られている。エミュレーションは一般に、ターゲットプラットフォーム用に設計されたプログラムインストラクション（ターゲットコードインストラクション）をホストプラットフォームのネイティブ言語（ホストインストラクション）に変換することによって互換性を達成するソフトウエアを生成することによって実現されてきた。最近では、エミュレーションは「仮想マシン」を生成することによっても実現されている。仮想マシンでは、ターゲットプラットフォームの物理アーキテクチャ、すなわちハードウエア自身の設計が仮想モデルを介してソフトウエアで再現される。
【０００７】
現在、二つのエミュレーションストラテジーのタイプがエミュレーション分野で利用可能である。第１ストラテジーは「インタープリテーション」として知られるものである。インタープリテーションでは、各ターゲットコードインストラクションが呼び出された順にデコードされ、ターゲットコードインストラクションと意味的に等価であるホストインストラクションの小さなシーケンスが生成され、実行に移される。そのようなエミュレータの主要なコンポーネントは典型的にはソフトウエア・インタープリタである。ソフトウエア・インタープリタはターゲットマシン言語で書かれた任意のプログラムの各インストラクションをホストマシン言語のインストラクションセットに変換する。ここで、ホストマシン言語は、エミュレータが動作するホストコンピュータのコード言語である。インタープリタはコンピュータハードウエアまたはファームウエアで実装された例もある。これによれば、エミュレートされたプログラムを比較的速く実行することができる。
【０００８】
他の主要なエミュレーションストラテジーは「トランスレーション」として知られる。トランスレーションでは、ターゲットインストラクションが分析され、デコードされる。これは「リコンパイル」または「クロスコンパイル」とも呼ばれる。コンピュータプログラムの実行速度はしばしばインタプリタによって劇的に減少してしまうことは周知のことである。コンピュータプログラムは、エミュレーションによって実行された場合、等価なプログラムがターゲットマシンコードにリコンパイルされ、ターゲットコードバージョンが実行される場合に比べて、１０から２０倍遅くなるのはよくあることである。ソフトウエアエミュレーションが遅いことはよく知られているため、数多くの製品は、ターゲットプログラムの一部をランタイムでホストマシンコードにトランスレートし、リコンパイルされたプログラム部分を実行することによって、ソースアプリケーションの実行速度を改善するのに成功してきた。トランスレーション処理は、たとえば、ターゲットコードの１インストラクション毎に５０〜１００マシン／クロックサイクルかかるが、その結果得られるホストマシンコードは、平均的には、たいていのソースアプリケーションの全体的な実行速度を改善するのに十分なくらい、ずっと速くなる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
インタープリテーションによるか、トランスレーションによるか、あるいはその組み合わせによるかを問わず、エミュレーションには、ホストシステム上でターゲットシステムの様々なコンポーネントのソフトウエアシミュレーションが要求されることがよくある。ターゲットシステムとホストシステムが異なるタイプのプロセッサアーキテクチャにもとづいている場合が多い。たとえば、ターゲットデバイスはソニー・プレイステーション（登録商標）２のようなゲーム機である。プレイステーション（登録商標）は日本のソニー・コンピュータ・エンタテインメント社の登録商標である。この特定のデバイスは、１２８ビットのＣＰＵコアにもとづいたエモーション・エンジン（ＥＥ）と呼ばれるメイン・プロセッサ・エンジンを中心に構築されたものである。ＣＰＵ内のレジスタの数とサイズ（ビット数）はＣＰＵの性能と速度を決定する重要なファクターである。たとえば、ＥＥのＣＰＵコアは１２８ビットレジスタを用いている。１２８ビットレジスタを用いて、各ＣＰＵは１２８ビットのデータを操作することができる。
【００１０】
ＥＥは、異なるサイズのレジスタをもつ異なるプロセッサアーキテクチャのホストシステムによってエミュレートされる。ホストシステムがより大きなサイズのレジスタにもとづくものであるなら、これは問題とはならない。なぜなら、より大きなサイズのレジスタをもつプロセッサで１２８ビットレジスタをエミュレートするのは比較的容易なことだからである。しかしながら、プレイステーション（登録商標）２が、プレイステーション（登録商標）３のようなセルプロセッサベースのホストシステムによってエミュレートされるなら、問題が生じる。セルプロセッサはあるタイプの並列プロセッサである。セルプロセッサの基本的な構成は、パワー・プロセッサ・エレメント（ＰＰＥ）（ときにはプロセッシングエレメントすなわちＰＥと呼ばれる）と複数のシナジスティック・プロセッシング・エレメント（ＳＰＥ）を含む。ＰＰＥとＳＰＥは、エレメント・インターコネクト・バス（ＥＩＢ）と呼ばれる内部高速バスによってつなげられている。セルプロセッサは、ハンドヘルドデバイスからメインフレームコンピュータまでを含むアプリケーションで使用できるようにスケーラブルに設計されている。ＰＰＥは、ＰＳ２のＥＥをエミュレーションするためのメインプロセッサである。残念ながら、ＰＰＥは６４ビットレジスタを用いており、１２８ビットのＥＥのＣＰＵレジスタよりも小さい。
【００１１】
このように、ターゲットシステムよりもサイズの小さいレジスタをもつホストシステム上でターゲットシステムをエミュレーションする必要性がある。
【課題を解決するための手段】
【００１２】
上記の課題は、ホストシステム上でターゲットシステムをエミュレートするための方法とシステムに向けられた本発明の実施の形態によって克服される。ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定する。前記統計にもとづいて、前記レジスタセットの内、１以上の最も多く使われるレジスタを含む第１レジスタサブセットを決める。前記第１レジスタサブセットをホストシステムプロセッサの第１レジスタグループにダイレクトマッピングする。前記レジスタセットの第２レジスタサブセットを前記ホストシステムプロセッサの第２レジスタグループに動的にマッピングする。
【発明を実施するための最良の形態】
【００１３】
本発明の教示内容は、以下の詳細な説明を添付図面とともに参酌することによって容易に理解することができる。
【００１４】
これから述べる詳細な説明には、例示のために特定の詳細な内容が多く含まれるが、当業者であれば、これらの詳細な内容にいろいろなバリエーションや変更を加えても、本発明の範囲を超えないことは理解できよう。したがって、以下で説明する本発明の例示的な実施の形態は、権利請求された発明に対して、一般性を失わせることなく、また、何ら限定をすることもなく、述べられたものである。
【００１５】
本発明の実施の形態は、異なるサイズのレジスタをもつホストシステム上でターゲットシステムをエミュレーションすることに関する。一例として、図１Ａはゲームコンソールデバイスの形のターゲットシステム１００のブロック図である。ターゲットシステムは、エモーション・エンジンと呼ばれるメインプロセッサモジュール１０２、グラフィックシンセサイザ１０４、入出力（Ｉ／Ｏ）プロセッサ（ＩＯＰ）１０６、およびサウンドプロセッサユニット１０８を中心に構築される。エモーション・エンジン１０２は典型的にはＣＰＵコア、コプロセッサ、システムクロックを含み、ランダムアクセスメモリ（ＲＡＭ）１１０がつなげられている。エモーション・エンジン１０２はアニメーション計算を実行し、シーンを解析し、それをラスタライゼーションのためにグラフィックシンセサイザ（ＧＳ）１０４に送られる２次元画像に変換する。
【００１６】
図１Ｂに示すように、ＥＥ１０２は、ＣＰＵコア１２２とそれにつながれた浮動小数点ユニット（ＦＰＵ）コプロセッサ１２４、第１および第２ベクトルコプロセッサ１２６、１２８、グラフィックス・インターフェース・コントローラ１３０、およびインタラプト・コントローラ（ＩＮＴＣ）１３２を含む。ＣＰＵ１２２、ベクトルコプロセッサ１２６、１２８、ＧＩＦ１３０、およびＩＮＴＣ１３２は、１２８ビットメインバス１３４に接続されている。ＦＰＵ１２４はＣＰＵ１２２に直接つながれている。ＣＰＵ１２２は第１ベクトルコプロセッサ（ＶＵ０）１２６に接続されており、ＶＵ０は第２ベクトルコプロセッサ（ＶＵ１）１２８に接続されている。第２ベクトルコプロセッサ（ＶＵ１）１２８はグラフィックスインタフェース（ＧＩＦ）１３０に接続されている。ＥＥ１０２は、さらにタイマ１３６、ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）１３８、イメージデータ伸張プロセッサ（ＩＰＵ）１４０、ＤＲＡＭコントローラ１４２、およびＥＥ１０２とＩＯＰ１０６間の通信を容易にするサブバス・インタフェース（ＳＩＦ）１４４を含む。
【００１７】
ＣＰＵコア１２２は、３００メガヘルツのクロック周波数で動作する１２８ビットプロセッサであってもよい。このプロセッサは、６４ビットのインストラクションをもつＭＩＰＳインストラクションセットを用いて、１２８ビットマルチメディアインストラクションをもつ２ウエイのスーパースカラとして動作する。これらのインストラクションは、１２８ビットのレジスタ１２３を用いて処理される。
【００１８】
ＣＰＵ１２２は、データキャッシュ、インストラクションキャッシュ、およびスクラッチパッドと呼ばれることがあるオンチップメモリの領域を含む。スクラッチパッドが利用可能な小さなローカルメモリとして機能するため、メインバス１３４がコードおよび／またはデータの転送でビジーである間でも、ＣＰＵ１２２は演算を実行することができる。第１ベクトルユニット１２６はアニメーションと物理計算のために用いることができる。第２ベクトルユニット１２８はジオメトリ変換のために用いることができる。ＧＩＦ１３０はＥＥ１０２とＧＳ１０４の間のメインインタフェースとして機能する。
【００１９】
ＩＯＰ１０６はターゲットシステム１００の以前のバージョンと下位互換性のあるプロセッサとそれにつなげられたＲＡＭ１１２を含む。ＩＯＰ１０６は、コントローラ、ＵＳＢデバイス、ハードディスク、イーサネット（商標または登録商標）カードまたはモデムのような外部デバイスや、サウンドプロセッサユニット１０８、ＲＯＭ１１４およびＣＤ／ＤＶＤユニット１１６のようなシステムの他のコンポーネントからの入出力を処理する。ターゲットプログラム１１８は、ＣＤ／ＤＶＤユニット１１６にロードされたＣＤ／ＲＯＭディスク上に格納されてもよい。ターゲットプログラム１１８からのインストラクションはＥＥのＲＡＭ１０８またはＩＯＰのＲＡＭ１１２に格納され、ターゲットシステム１００のいろいろなプロセッサによって、これらのプロセッサが読むことのできるネイティブマシンコードで実行されてもよい。
【００２０】
本発明の実施の形態において、ターゲットシステム１００が並列プロセッシングホストシステム２００を用いてエミュレートされるため、その結果、ホストシステム２００は、ターゲットプログラム１１８のようなターゲットシステム１００にとってネイティブなコードで書かれたプログラムを実行することができる。図２Ａは、ターゲットシステム１００をエミュレートするように構成されたセルプロセッサ２０１にもとづくホストシステム２００の例を示す。セルプロセッサ２０１は、メインメモリ２０２、一つのパワー・プロセッサ・エレメント（ＰＰＥ）２０４、および８個のシナジスティック・プロセッサ・エレメント（ＳＰＥ）２０６を含む。もっとも、セルプロセッサ２０１は一つよりも多いＰＰＥと任意の数のＳＰＥで構成されてもよい。各ＳＰＥ２０６はシナジスティック・プロセッサ・ユニット（ＳＰＵ）とローカルストア（ＬＳ）を含む。メモリ２０２、ＰＰＥ２０４、および複数のＳＰＥ２２６は、リング型のエレメント・インターコネクト・バス（ＥＩＢ）２１０上でお互いに通信可能であり、また、Ｉ／Ｏデバイス２０８とも通信可能である。ＰＰＥ２０４と複数のＳＰＥ２０６は、バスインタフェースユニット（ＢＩＵ）を介してＥＩＢ２１０にアクセスすることができる。ＰＰＥ２０４と複数のＳＰＥ２０６はメモリ・フロー・コントローラ（ＭＦＣ）を用いてＥＩＢ２１０経由でメインメモリ２０２にアクセスできる。メモリ２０２は、ターゲットシステム１００用に書かれたコード化されたインストラクションのインタープリテーションおよびトランスレーションが実装されたエミュレーションプログラム２０９を含む。これらのコード化されたインストラクションはＩ／Ｏデバイス２０８につなげられたＣＤ／ＤＶＤリーダ２１１にあるＣＤ／ＲＯＭディスクから読み出されてもよい。ターゲットプログラム１１８を含むＣＤ／ＲＯＭディスクはＣＤ／ＤＶＤリーダ２１１にロードされる。少なくとも一つのＳＰＥ２０６は、図１Ａ、図１Ｂを参照して上述されたＩＯＰ１０６をエミュレートするインストラクションをもったエミュレートされたＩＯＰコード２０５をローカルストア内に受け取る。
【００２１】
ＰＰＥ２０４は典型的には異なるタイプのレジスタ２１２を含む。これらは３２個の６４ビット汎用レジスタ、３２個の３２ビット浮動小数点レジスタ、および３２個の１２８ビットＶＭＳレジスタを含む。ＰＰＥレジスタ２１２は、ダイレクトマップされるグループと、動的にマップされるグループに分けられる。ＥＥのＣＰＵのレジスタ１２３は、選択的にこれら二つのグループにマップされる。ＥＥレジスタ１２３の使用に関する統計にもとづいて、もっとも多く使われるＥＥレジスタ１２３がＰＰＥレジスタ２１２の第１グループ２１３にダイレクトマップされる。
【００２２】
第１グループ２１３のレジスタにダイレクトマップされないＥＥレジスタ１２３は、ＰＰＥレジスタ２１２の第２グループ２１４に動的にマップされる。第２グループ２１４のことをここでは、動的にマップされるレジスタの「プール」と呼ぶことがある。第２グループ２１４のプールレジスタはローテーションすることでターゲットシステムのインストラクションがブロックするのを防ぐことができる。ここでいう、レジスタの「ローテーション」とは、続いて発生するインストラクションのためのレジスタを異なるレジスタにマップすることをいう。たとえば、ターゲットシステムのインストラクションのシーケンスを次のようにマップする。すなわち、第１インストラクションがレジスタｒ０の値をレジスタｒ１０の値に足し、その結果をレジスタｒ１１に格納する一方で、第２インストラクションがレジスタｒ０の値からレジスタｒ１２の値を引き、その結果をレジスタｒ１３に格納するようにマップする。二つの異なる値を足す後続のターゲットインストラクションは次のようにマップする。すなわち、レジスタｒ１の値がレジスタｒ１４の値に足され、その結果がレジスタｒ１５に格納されるようにマップする。プールレジスタをローテーションすることにより、ターゲットシステムレジスタが別のインストラクションで既に使用されているホストシステムレジスタにマッピングされることによるインストラクションのブロックは少なくなる。
【００２３】
「プール」レジスタ２１４は中間結果を格納するために使ってもよい。たとえば、トランスレートされたターゲットシステムのインストラクションが２以上のホストシステムのインストラクションにマップされる場合、異なるホストインストラクションによって計算された値が中間結果の例である。本発明の実施の形態において、ＰＰＥ２０４はオプションとして、浮動小数点とシングル・インストラクション・マルチプル・データ（ＳＩＭＤ）インストラクションセットを実装するためのコプロセッサ２１６（ときにはＶＭＸユニットと呼ばれる）を含んでもよい。コプロセッサ２１６は１２８ビットレジスタ２１７を含んでもよい。これらのコプロセッサレジスタ２１７は、さもなくば第１グループ２１３または第２グループ２１４にマップされることになるレジスタのいくつかをマッピングするために使ってもよい。ＰＰＥ２０４は異なるタイプのＰＰＥレジスタ２１２を有してもよい。たとえば、ＰＰＥ２０４は、３２個の６４ビット汎用レジスタ、３２個の３２ビット浮動小数点レジスタ、およびＶＭＸコプロセッサ２１６の３２個の１２８ビットレジスタ２１７を含んでもよい。
【００２４】
本発明の実施の形態において、ホストシステム２００は、図２Ｂに示された方法２２０にしたがってターゲットシステム１００をエミュレートする。ステップ２２２において、ターゲットシステム１００のプロセッサ、たとえばＥＥ１０２のＣＰＵ１２２のレジスタ１２３のセットの使用について統計データを決定する。アプリケーション・バウンダリ・インタフェース（ＡＢＩ）を使用して、どのＥＥレジスタ１２３がもっとも頻繁に読み書きされていて、ダイレクトマッピングにもっとも適しているかを決定してもよい。統計データの変化に応じて、ダイレクトマップされたＥＥレジスタ１２３と動的にマップされたＥＥレジスタ１２３の両方についてマッピングを動的に再構成する。統計データにもとづいて、レジスタ１２３の第１サブセットをステップ２２４で決定する。第１サブセットには、もっともよく使用されるレジスタを含む。たとえば、レジスタ１２３の半分を第１サブセットに割り当ててもよい。３２個のレジスタ１２３があるなら、それらのうち、１６個を第１サブセットに割り当てる。レジスタマッピングをメインメモリ２０２に格納されたルックアップテーブル２１８に格納してもよい。異なるレジスタマッピングスキームを異なるルックアップテーブル２１８に格納してもよい。ルックアップテーブルのメモリへのポインタをあるテーブルから別のテーブルに変更することによって、これらの異なるレジスタスキームをスワップイン、スワップアウトしてもよい。
【００２５】
ステップ２２６において、これらのもっともよく使われるレジスタはホストシステム２００上のプロセッサの第１レジスタグループにダイレクトにマップされる。たとえば、もっともよく使われるＣＰＵレジスタ１２３をＰＰＥレジスタ２１２の第１グループ２１３またはＶＭＸレジスタ２１７のあるサブセットにダイレクトにマップしてもよい。残りのＣＰＵレジスタ１２３は、ステップ２２８に示すように、ホストシステムレジスタの第２グループに動的にマップされる。たとえば、残りのＣＰＵレジスタ１２３を、プールレジスタ２１４またはＶＭＸレジスタ２１７のあるサブセットに動的にマップしてもよい。ここでいうダイレクトマッピングとは、ターゲットシステムレジスタと一つ以上の対応するホストシステムレジスタ間の一貫性のあるマッピングのことをいう。対照的にダイナミックマッピングとは、ターゲットシステムレジスタと、たまたま利用可能になったプールされていたホストシステムレジスタとの間のマッピングのことである。第１グループ２１３と第２グループ２１４のサイズを選択して、すべてのＥＥレジスタ１２３がダイレクトマップされるか、動的にマップされるか、あるいは、二つのグループ２１３、２１４間のＥＥレジスタ１２３の中間的なマッピングをもつようにしてもよいことに留意する。レジスタマッピングには、ＦＰＵ１２４、ＶＵＯ１２６、ＶＵ１１２８のようなＥＥコプロセッサの他、Ｉ／Ｏプロセッサ１０２、グラフィックシンセサイザ１０４、サウンドプロセッサ１０８のような他のターゲットシステムプロセッサのレジスタのマッピングも含んでもよいことにさらに留意する。
【００２６】
ＣＰＵコア１２２は、ステップ２３０で示されるように第１および第２グループのレジスタを用いてＰＰＥ２０４上でエミュレートされる。たとえば、本発明の実施の形態において、ＰＰＥ２０４上で動作するトランスレータは、ターゲットプログラム１１８のＥＥインストラクションをＰＰＥ２０４上で動作可能なマシンコードにトランスレートすることにより、ターゲットシステム１００のＥＥ１０２をエミュレートしてもよい。ＰＰＥ２０４は、ターゲットプログラム１１８のＩＯＰインストラクションをインタープリトすることによりＩＯＰ１０６をエミュレートするインタープリタが実装されてもよい。それによりインタープリトされたコードインストラクション２０５をＳＰＥ２０６の一つで実行してもよい。ステップ２３０のエミュレーションの間、ホストシステム２００上のプロセッサ（たとえば、ＰＰＥ２０４）は、中間結果を生成するホストプロセッサとともに演算を実行してもよい。中間結果は一つ以上のプールレジスタ２１４に一時的に格納されてもよい。
【００２７】
レジスタマッピング（ダイレクトまたは動的）は履歴依存、データ依存および／またはインストラクション依存であってもよい。たとえば、直接定数のようにオン・ザ・フライでロードされるリードオンリーの値に対するレジスタは、ダイレクトにマップしてもよい。同様に、オン・デマンドでロードされ、必要なときに変更される値を含むレジスタは、ある時間の間、一時的にダイレクトマップされてもよい。履歴依存でインストラクション依存のマッピングの例として、先のＥＥインストラクションが１２８ビットインストラクションであり、そのインストラクションの結果だけが１２８ビットで作用する、たとえば、シングル・インストラクション・マルチプル・データ（ＳＩＭＤ）インストラクションである場合を考える。そのような場合、ＥＥインストラクションに対するレジスタは、１２８ビットＶＭＸレジスタにダイレクトマップしてもよい。ターゲットシステム上の１２８ビットベクトル浮動小数点インストラクションに対するレジスタは、１２８ビットＶＭＸレジスタ２１７にマップしてもよい。１６ビット整数インストラクションに対するレジスタはＰＰＥ２０４上の６４ビットレジスタにマップしてもよい。
【００２８】
レジスタマッピングはまた、ホストシステムによってエミュレートされるデバイスのタイプによって決定されることもある。たとえば、ＳＩＭＤインストラクションに対するＥＥレジスタを１２８ビットＶＭＸレジスタ２１７にダイレクトにマップしてもよい。同様に、ＶＵ０１２６上の１２８ビットベクトル浮動小数点インストラクションに対するレジスタを１２８ビットＶＭＸレジスタ２１７にマップしてもよい。
【００２９】
上述のように、ＣＰＵレジスタ１２３はＰＰＥレジスタ２１２よりも大きいサイズであってもよい。具体的には、ＣＰＵレジスタ１２３は１２８ビットレジスタであり、ＰＰＥレジスタ２１２は６４ビットレジスタである。図３に示すように、１２８ビットターゲットシステムレジスタ３０１を上位６４ビットフィールド３０２と下位６４ビットフィールド３０３に分割することにより、１２８ビットターゲットシステムレジスタ３０１を二つの６４ビットホストシステムレジスタ３０４、３０６にマップしてもよい。上位フィールド３０２をホストシステムレジスタ３０４にマップする一方で、下位フィールド３０３をホストシステムレジスタ３０６にマップしてもよい。１２８ビットレジスタを用いた並列加算のような並列ターゲットシステムインストラクションのエミュレーションは、オペランドの性質に部分的に依存する。インストラクションに対するオペランドが１２８ビットレジスタにあるなら、下位フィールド３０３の最高ビットと上位フィールド３０２の最低ビットの間でキャリーをもつ１２８ビットオペレーションとして、オペレーションが実行される。オペランドが６４ビットレジスタにあるなら、下位フィールド３０３の最高ビットと上位フィールド３０２の最低ビットの間でキャリーをもたずに、二つ以上のオペレーションが実行される。
【００３０】
図４に示すように、３２ビット浮動小数点インストラクションに対するレジスタを１２８ビットＶＭＸレジスタ２１７にマップしてもよい。具体的には、３２ビットのターゲットシステムレジスタ４０１に対する各値は、１２８ビットホストシステムレジスタ４０６の３２ビットフィールド４０２、４０３、４０４、４０５のそれぞれにマップされる。
【００３１】
本発明の好ましい実施の形態を完全な形で説明してきたが、いろいろな代替物、変形、等価物を用いることができる。したがって、本発明の範囲は、上記の説明を参照して決められるものではなく、請求項により決められるべきであり、均等物の全範囲も含まれる。ここで述べた特徴はいずれも、好ましいかどうかを問わず、他の特徴と組み合わせてもよい。請求項において、明示的に断らない限り、各項目は１またはそれ以上の数量である。請求項において「〜のための手段」のような語句を用いて明示的に記載する場合を除いて、請求項がミーンズ・プラス・ファンクションの限定を含むものと解してはならない。
【図面の簡単な説明】
【００３２】
【図１Ａ】本発明の実施の形態に係るエミュレートされるべきターゲットデバイスのブロック図である。
【図１Ｂ】図１Ａのターゲットデバイスのエモーション・エンジンのブロック図である。
【図２Ａ】本発明の実施の形態に係るレジスタマッピングを用いて図１Ａ、図１Ｂのターゲットデバイスをエミュレートするホストデバイスの概略図である。
【図２Ｂ】本発明の実施の形態に係るホストデバイスによるターゲットデバイスのエミュレーションにおけるレジスタマッピングの方法のフローチャートである。
【図３】本発明の実施の形態に係る１２８ビットターゲットシステムレジスタを二つの６４ビットホストシステムレジスタにマッピングする例を説明するブロック図である。
【図４】本発明の実施の形態に係る３２ビット浮動小数点インストラクション用のレジスタを１２８ビットＶＭＸレジスタにマッピングする例を説明するブロック図である。
【図１Ａ】
2009535745.tif 000003
【図１Ｂ】
2009535745.tif 000004
【図２Ａ】
2009535745.tif 000005
【図２Ｂ】
2009535745.tif 000006
【図３】
2009535745.tif 000007
【図４】
2009535745.tif 000008
【手続補正書】
【提出日】平成21年2月12日(2009.2.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ターゲットシステムをエミュレーションするためのホストシステムであって、
１以上のホストシステムプロセッサと、
前記１以上のホストシステムプロセッサに接続されたメモリと、
前記メモリに具体化されたプロセッサで実行可能なインストラクションセットとを含み、
当該プロセッサで実行可能なインストラクションは、ホストシステム上でターゲットシステムをエミュレーションするための方法を実装するためのインストラクションを含み、
当該方法は、
ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定するステップと、
前記統計にもとづいて、前記レジスタセットの内、１以上の最も多く使われるレジスタを含む第１レジスタサブセットを決めるステップと、
前記第１レジスタサブセットをホストシステムプロセッサの第１レジスタグループにダイレクトマッピングするステップと、
前記レジスタセットの第２レジスタサブセットを前記ホストシステムプロセッサの第２レジスタグループに動的にマッピングするステップとを含むことを特徴とするホストシステム。
【請求項２】
前記第１および第２レジスタグループを用いて前記ホストシステムプロセッサ上で前記ターゲットシステムプロセッサをエミュレートするステップをさらに含む請求項１のシステム。
【請求項３】
前記ターゲットシステムをエミュレートするステップは、ターゲットシステムプロセッサ用のインストラクションをトランスレートするステップを含む請求項２のシステム。
【請求項４】
前記ターゲットシステムプロセッサのレジスタセットのレジスタのいくつかは、前記ホストシステムプロセッサの第１および第２レジスタグループのレジスタよりもサイズが大きい請求項１のシステム。
【請求項５】
前記ターゲットシステムプロセッサのレジスタセットのレジスタは１２８ビットレジスタを含み、前記ホストシステムプロセッサの第１および第２レジスタグループのレジスタは６４ビットレジスタを含む請求項４のシステム。
【請求項６】
前記第１レジスタサブセットをダイレクトマッピングするステップまたは第２レジスタサブセットを動的にマッピングするステップは、ターゲットシステムレジスタの下位フィールドを第１ホストシステムレジスタにマッピングし、前記ターゲットシステムレジスタの上位フィールドを第２ホストシステムレジスタにマッピングするステップを含む請求項４のシステム。
【請求項７】
前記ホストシステムプロセッサはセルプロセッサのパワー・プロセッサ・エレメントである請求項１のシステム。
【請求項８】
第１および／または第２グループの１以上のレジスタは、前記パワー・プロセッサ・エレメントのＶＭＸユニットのレジスタである請求項７のシステム。
【請求項９】
前記ホストプロセッサで中間結果を生成する演算を実行するステップと、前記中間結果を前記第２レジスタグループの１以上のレジスタに格納するステップとをさらに含む請求項１のシステム。
【請求項１０】
前記ターゲットシステムプロセッサはエモーション・エンジンである請求項１のシステム。
【請求項１１】
前記エモーション・エンジン用のインストラクションを前記ホストシステムプロセッサで読み取り可能なマシンコードにトランスレートすることにより、前記ホストシステムプロセッサで前記エモーション・エンジンをエミュレートするステップをさらに含む請求項１０のシステム。
【請求項１２】
ターゲットシステムのインストラクションのブロッキングの可能性を減らすために、第２サブセットレジスタの動的マッピングをローテーションするステップをさらに含む請求項１のシステム。
【請求項１３】
前記ターゲットシステムは１以上のさらなるプロセッサを含み、当該方法は、前記１以上のさらなるプロセッサ用のインストラクションをインタープリトし、インタープリトされたインストラクションを前記ホストシステムプロセッサまたは前記ホストシステムプロセッサに接続された１以上のコプロセッサ上で実行することにより、前記１以上のさらなるプロセッサをエミュレートするステップをさらに含む請求項１１のシステム。
【請求項１４】
第１サブセットレジスタのダイレクトマッピングおよび／または第２サブセットレジスタの動的マッピングを動的に再構成するステップをさらに含む請求項１のシステム。
【請求項１５】
ホストシステム上でターゲットシステムをエミュレーションするための方法であって、
ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定するステップと、
前記統計にもとづいて、前記レジスタセットの内、１以上の最も多く使われるレジスタを含む第１レジスタサブセットを決めるステップと、
前記第１レジスタサブセットをホストシステムプロセッサの第１レジスタグループにダイレクトマッピングするステップと、
前記レジスタセットの第２レジスタサブセットを前記ホストシステムプロセッサの第２レジスタグループに動的にマッピングするステップとを含むことを特徴とする方法。
【請求項１６】
前記１以上のホストシステムプロセッサはパワー・プロセッサ・エレメントを含む請求項１５の方法。
【請求項１７】
前記１以上のホストシステムプロセッサは、前記パワー・プロセッサ・エレメントに接続された１以上のシナジスティック・プロセッサ・エレメントをさらに含む請求項１６の方法。
【請求項１８】
第１および／または第２グループの１以上のレジスタは、前記パワー・プロセッサ・エレメントのＶＭＸユニットのレジスタである請求項１６の方法。
【請求項１９】
前記ターゲットシステムプロセッサのレジスタセットのレジスタは、前記ホストシステムプロセッサの第１および第２レジスタグループのレジスタよりもサイズが大きい請求項１５の方法。
【請求項２０】
前記ターゲットシステムプロセッサのレジスタセットのレジスタは１２８ビットレジスタであり、前記ホストシステムプロセッサの第１および第２レジスタグループのレジスタは６４ビットレジスタである請求項１９の方法。
【国際調査報告】
2009535745.tif 000009
2009535745.tif 000010