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