JP5048056B2 - ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング - Google Patents

ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング Download PDF

Info

Publication number
JP5048056B2
JP5048056B2 JP2009509938A JP2009509938A JP5048056B2 JP 5048056 B2 JP5048056 B2 JP 5048056B2 JP 2009509938 A JP2009509938 A JP 2009509938A JP 2009509938 A JP2009509938 A JP 2009509938A JP 5048056 B2 JP5048056 B2 JP 5048056B2
Authority
JP
Japan
Prior art keywords
register
processor
registers
host system
mapping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009509938A
Other languages
English (en)
Other versions
JP2009535745A5 (ja
JP2009535745A (ja
Inventor
サーゲイソン スチュアート
スバ ミウラ ビクター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/700,448 external-priority patent/US7577826B2/en
Priority claimed from US11/696,699 external-priority patent/US7770050B2/en
Priority claimed from US11/696,684 external-priority patent/US7792666B2/en
Priority claimed from US11/696,691 external-priority patent/US7813909B2/en
Application filed by Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2009535745A publication Critical patent/JP2009535745A/ja
Publication of JP2009535745A5 publication Critical patent/JP2009535745A5/ja
Application granted granted Critical
Publication of JP5048056B2 publication Critical patent/JP5048056B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Description

[優先権の主張]
本出願は、2007年4月4日に出願された、Stewart Sargaisonらの「ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング」と題する同一出願人による同時係属出願第11/696,691号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。
本出願は、2006年5月3日に出願された、「インタープリトされたコードとトランスレートされたコードの両方に関するエミュレーションにおけるクロック管理の問題を解決するための方法と装置」と題する米国仮出願第60/746,273号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、2006年5月3日に出願された、Stewart Sargaisonらの「ホストシステム上でターゲットシステムをエミュレーションする際のトランスレーションブロックの無効の事前ヒント」と題する米国仮出願第60/746,267号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、2006年5月3日に出願された、Stewart Sargaisonらの「ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング」と題する米国仮出願第60/746,268号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、2006年5月3日に出願された、Victor Subaの「ストール予測スレッド管理」と題する米国仮出願第60/797,762号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、2006年5月3日に出願された、Stewart Sargaisonらの「DMAおよびグラフィックスインタフェースエミュレーション」と題する米国仮出願第60/797,435号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、2006年5月3日に出願された、Stewart Sargaisonらの「コードトランスレーションおよびパイプライン最適化」と題する米国仮出願第60/797,761号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。
本出願は、2007年1月30日に出願された、米国特許出願第11/700,448号の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、2007年4月4日に出願された、Stewart Sargaisonらの「ホストシステム上でターゲットシステムをエミュレーションする際のトランスレーションブロックの無効の事前ヒント」と題する同一出願人による同時係属出願第11/696,684号(アトーニー・ドケット番号SCEA05053US01)の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。本出願は、2007年4月4日に出願された、Stewart Sargaisonらの「インタープリトされたコードとトランスレートされたコードの両方に関するエミュレーションにおけるクロック管理の問題を解決するための方法と装置」と題する同一出願人による同時係属出願第11/696,699号(アトーニー・ドケット番号SCEA05055US01)の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。
[関連出願との相互参照]
本出願は、2006年1月30日に出願された米国仮特許出願第60/763,568号に関連し、その開示内容全体を参照によりここに援用する。
[技術分野]
本発明の実施の形態は、ホストコンピュータプラットフォーム上でのターゲットコンピュータプラットフォームのエミュレーションに関し、特に異なるサイズのレジスタをもつターゲットシステムとホストシステム間のレジスタマッピングに関する。
第1コンピュータプラットフォーム(「ターゲットシステム」)の機能を第2コンピュータプラットフォーム(「ホストシステム」)上でエミュレートすることにより、ホストシステムがターゲットシステム向けに設計されたプログラムを実行できるようにする処理は、「エミュレーション」として知られている。エミュレーションは一般に、ターゲットプラットフォーム用に設計されたプログラムインストラクション(ターゲットコードインストラクション)をホストプラットフォームのネイティブ言語(ホストインストラクション)に変換することによって互換性を達成するソフトウエアを生成することによって実現されてきた。最近では、エミュレーションは「仮想マシン」を生成することによっても実現されている。仮想マシンでは、ターゲットプラットフォームの物理アーキテクチャ、すなわちハードウエア自身の設計が仮想モデルを介してソフトウエアで再現される。
現在、二つのエミュレーションストラテジーのタイプがエミュレーション分野で利用可能である。第1ストラテジーは「インタープリテーション」として知られるものである。インタープリテーションでは、各ターゲットコードインストラクションが呼び出された順にデコードされ、ターゲットコードインストラクションと意味的に等価であるホストインストラクションの小さなシーケンスが生成され、実行に移される。そのようなエミュレータの主要なコンポーネントは典型的にはソフトウエア・インタープリタである。ソフトウエア・インタープリタはターゲットマシン言語で書かれた任意のプログラムの各インストラクションをホストマシン言語のインストラクションセットに変換する。ここで、ホストマシン言語は、エミュレータが動作するホストコンピュータのコード言語である。インタープリタはコンピュータハードウエアまたはファームウエアで実装された例もある。これによれば、エミュレートされたプログラムを比較的速く実行することができる。
他の主要なエミュレーションストラテジーは「トランスレーション」として知られる。トランスレーションでは、ターゲットインストラクションが分析され、デコードされる。これは「リコンパイル」または「クロスコンパイル」とも呼ばれる。コンピュータプログラムの実行速度はしばしばインタプリタによって劇的に減少してしまうことは周知のことである。コンピュータプログラムは、エミュレーションによって実行された場合、等価なプログラムがターゲットマシンコードにリコンパイルされ、ターゲットコードバージョンが実行される場合に比べて、10から20倍遅くなるのはよくあることである。ソフトウエアエミュレーションが遅いことはよく知られているため、数多くの製品は、ターゲットプログラムの一部をランタイムでホストマシンコードにトランスレートし、リコンパイルされたプログラム部分を実行することによって、ソースアプリケーションの実行速度を改善するのに成功してきた。トランスレーション処理は、たとえば、ターゲットコードの1インストラクション毎に50〜100マシン/クロックサイクルかかるが、その結果得られるホストマシンコードは、平均的には、たいていのソースアプリケーションの全体的な実行速度を改善するのに十分なくらい、ずっと速くなる。
インタープリテーションによるか、トランスレーションによるか、あるいはその組み合わせによるかを問わず、エミュレーションには、ホストシステム上でターゲットシステムの様々なコンポーネントのソフトウエアシミュレーションが要求されることがよくある。ターゲットシステムとホストシステムが異なるタイプのプロセッサアーキテクチャにもとづいている場合が多い。たとえば、ターゲットデバイスはソニー・プレイステーション(登録商標)2のようなゲーム機である。プレイステーション(登録商標)は日本のソニー・コンピュータ・エンタテインメント社の登録商標である。この特定のデバイスは、128ビットのCPUコアにもとづいたエモーション・エンジン(EE)と呼ばれるメイン・プロセッサ・エンジンを中心に構築されたものである。CPU内のレジスタの数とサイズ(ビット数)はCPUの性能と速度を決定する重要なファクターである。たとえば、EEのCPUコアは128ビットレジスタを用いている。128ビットレジスタを用いて、各CPUは128ビットのデータを操作することができる。
EEは、異なるサイズのレジスタをもつ異なるプロセッサアーキテクチャのホストシステムによってエミュレートされる。ホストシステムがより大きなサイズのレジスタにもとづくものであるなら、これは問題とはならない。なぜなら、より大きなサイズのレジスタをもつプロセッサで128ビットレジスタをエミュレートするのは比較的容易なことだからである。しかしながら、プレイステーション(登録商標)2が、プレイステーション(登録商標)3のようなセルプロセッサベースのホストシステムによってエミュレートされるなら、問題が生じる。セルプロセッサはあるタイプの並列プロセッサである。セルプロセッサの基本的な構成は、パワー・プロセッサ・エレメント(PPE)(ときにはプロセッシングエレメントすなわちPEと呼ばれる)と複数のシナジスティック・プロセッシング・エレメント(SPE)を含む。PPEとSPEは、エレメント・インターコネクト・バス(EIB)と呼ばれる内部高速バスによってつなげられている。セルプロセッサは、ハンドヘルドデバイスからメインフレームコンピュータまでを含むアプリケーションで使用できるようにスケーラブルに設計されている。PPEは、PS2のEEをエミュレーションするためのメインプロセッサである。残念ながら、PPEは64ビットレジスタを用いており、128ビットのEEのCPUレジスタよりも小さい。
このように、ターゲットシステムよりもサイズの小さいレジスタをもつホストシステム上でターゲットシステムをエミュレーションする必要性がある。
上記の課題は、ホストシステム上でターゲットシステムをエミュレートするための方法とシステムに向けられた本発明の実施の形態によって克服される。ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定する。前記統計にもとづいて、前記レジスタセットの内、1以上の最も多く使われるレジスタを含む第1レジスタサブセットを決める。前記第1レジスタサブセットをホストシステムプロセッサの第1レジスタグループにダイレクトマッピングする。前記レジスタセットの第2レジスタサブセットを前記ホストシステムプロセッサの第2レジスタグループに動的にマッピングする。
本発明の教示内容は、以下の詳細な説明を添付図面とともに参酌することによって容易に理解することができる。
これから述べる詳細な説明には、例示のために特定の詳細な内容が多く含まれるが、当業者であれば、これらの詳細な内容にいろいろなバリエーションや変更を加えても、本発明の範囲を超えないことは理解できよう。したがって、以下で説明する本発明の例示的な実施の形態は、権利請求された発明に対して、一般性を失わせることなく、また、何ら限定をすることもなく、述べられたものである。
本発明の実施の形態は、異なるサイズのレジスタをもつホストシステム上でターゲットシステムをエミュレーションすることに関する。一例として、図1Aはゲームコンソールデバイスの形のターゲットシステム100のブロック図である。ターゲットシステムは、エモーション・エンジンと呼ばれるメインプロセッサモジュール102、グラフィックシンセサイザ104、入出力(I/O)プロセッサ(IOP)106、およびサウンドプロセッサユニット108を中心に構築される。エモーション・エンジン102は典型的にはCPUコア、コプロセッサ、システムクロックを含み、ランダムアクセスメモリ(RAM)110がつなげられている。エモーション・エンジン102はアニメーション計算を実行し、シーンを解析し、それをラスタライゼーションのためにグラフィックシンセサイザ(GS)104に送られる2次元画像に変換する。
図1Bに示すように、EE102は、CPUコア122とそれにつながれた浮動小数点ユニット(FPU)コプロセッサ124、第1および第2ベクトルコプロセッサ126、128、グラフィックス・インターフェース・コントローラ130、およびインタラプト・コントローラ(INTC)132を含む。CPU122、ベクトルコプロセッサ126、128、GIF130、およびINTC132は、128ビットメインバス134に接続されている。FPU124はCPU122に直接つながれている。CPU122は第1ベクトルコプロセッサ(VU0)126に接続されており、VU0は第2ベクトルコプロセッサ(VU1)128に接続されている。第2ベクトルコプロセッサ(VU1)128はグラフィックスインタフェース(GIF)130に接続されている。EE102は、さらにタイマ136、ダイレクト・メモリ・アクセス・コントローラ(DMAC)138、イメージデータ伸張プロセッサ(IPU)140、DRAMコントローラ142、およびEE102とIOP106間の通信を容易にするサブバス・インタフェース(SIF)144を含む。
CPUコア122は、300メガヘルツのクロック周波数で動作する128ビットプロセッサであってもよい。このプロセッサは、64ビットのインストラクションをもつMIPSインストラクションセットを用いて、128ビットマルチメディアインストラクションをもつ2ウエイのスーパースカラとして動作する。これらのインストラクションは、128ビットのレジスタ123を用いて処理される。
CPU122は、データキャッシュ、インストラクションキャッシュ、およびスクラッチパッドと呼ばれることがあるオンチップメモリの領域を含む。スクラッチパッドが利用可能な小さなローカルメモリとして機能するため、メインバス134がコードおよび/またはデータの転送でビジーである間でも、CPU122は演算を実行することができる。第1ベクトルユニット126はアニメーションと物理計算のために用いることができる。第2ベクトルユニット128はジオメトリ変換のために用いることができる。GIF130はEE102とGS104の間のメインインタフェースとして機能する。
IOP106はターゲットシステム100の以前のバージョンと下位互換性のあるプロセッサとそれにつなげられたRAM112を含む。IOP106は、コントローラ、USBデバイス、ハードディスク、イーサネット(商標または登録商標)カードまたはモデムのような外部デバイスや、サウンドプロセッサユニット108、ROM114およびCD/DVDユニット116のようなシステムの他のコンポーネントからの入出力を処理する。ターゲットプログラム118は、CD/DVDユニット116にロードされたCD/ROMディスク上に格納されてもよい。ターゲットプログラム118からのインストラクションはEEのRAM108またはIOPのRAM112に格納され、ターゲットシステム100のいろいろなプロセッサによって、これらのプロセッサが読むことのできるネイティブマシンコードで実行されてもよい。
本発明の実施の形態において、ターゲットシステム100が並列プロセッシングホストシステム200を用いてエミュレートされるため、その結果、ホストシステム200は、ターゲットプログラム118のようなターゲットシステム100にとってネイティブなコードで書かれたプログラムを実行することができる。図2Aは、ターゲットシステム100をエミュレートするように構成されたセルプロセッサ201にもとづくホストシステム200の例を示す。セルプロセッサ201は、メインメモリ202、一つのパワー・プロセッサ・エレメント(PPE)204、および8個のシナジスティック・プロセッサ・エレメント(SPE)206を含む。もっとも、セルプロセッサ201は一つよりも多いPPEと任意の数のSPEで構成されてもよい。各SPE206はシナジスティック・プロセッサ・ユニット(SPU)とローカルストア(LS)を含む。メモリ202、PPE204、および複数のSPE226は、リング型のエレメント・インターコネクト・バス(EIB)210上でお互いに通信可能であり、また、I/Oデバイス208とも通信可能である。PPE204と複数のSPE206は、バスインタフェースユニット(BIU)を介してEIB210にアクセスすることができる。PPE204と複数のSPE206はメモリ・フロー・コントローラ(MFC)を用いてEIB210経由でメインメモリ202にアクセスできる。メモリ202は、ターゲットシステム100用に書かれたコード化されたインストラクションのインタープリテーションおよびトランスレーションが実装されたエミュレーションプログラム209を含む。これらのコード化されたインストラクションはI/Oデバイス208につなげられたCD/DVDリーダ211にあるCD/ROMディスクから読み出されてもよい。ターゲットプログラム118を含むCD/ROMディスクはCD/DVDリーダ211にロードされる。少なくとも一つのSPE206は、図1A、図1Bを参照して上述されたIOP106をエミュレートするインストラクションをもったエミュレートされたIOPコード205をローカルストア内に受け取る。
PPE204は典型的には異なるタイプのレジスタ212を含む。これらは32個の64ビット汎用レジスタ、32個の32ビット浮動小数点レジスタ、および32個の128ビットVMSレジスタを含む。PPEレジスタ212は、ダイレクトマップされるグループと、動的にマップされるグループに分けられる。EEのCPUのレジスタ123は、選択的にこれら二つのグループにマップされる。EEレジスタ123の使用に関する統計にもとづいて、もっとも多く使われるEEレジスタ123がPPEレジスタ212の第1グループ213にダイレクトマップされる。
第1グループ213のレジスタにダイレクトマップされないEEレジスタ123は、PPEレジスタ212の第2グループ214に動的にマップされる。第2グループ214のことをここでは、動的にマップされるレジスタの「プール」と呼ぶことがある。第2グループ214のプールレジスタはローテーションすることでターゲットシステムのインストラクションがブロックするのを防ぐことができる。ここでいう、レジスタの「ローテーション」とは、続いて発生するインストラクションのためのレジスタを異なるレジスタにマップすることをいう。たとえば、ターゲットシステムのインストラクションのシーケンスを次のようにマップする。すなわち、第1インストラクションがレジスタr0の値をレジスタr10の値に足し、その結果をレジスタr11に格納する一方で、第2インストラクションがレジスタr0の値からレジスタr12の値を引き、その結果をレジスタr13に格納するようにマップする。二つの異なる値を足す後続のターゲットインストラクションは次のようにマップする。すなわち、レジスタr1の値がレジスタr14の値に足され、その結果がレジスタr15に格納されるようにマップする。プールレジスタをローテーションすることにより、ターゲットシステムレジスタが別のインストラクションで既に使用されているホストシステムレジスタにマッピングされることによるインストラクションのブロックは少なくなる。
「プール」レジスタ214は中間結果を格納するために使ってもよい。たとえば、トランスレートされたターゲットシステムのインストラクションが2以上のホストシステムのインストラクションにマップされる場合、異なるホストインストラクションによって計算された値が中間結果の例である。本発明の実施の形態において、PPE204はオプションとして、浮動小数点とシングル・インストラクション・マルチプル・データ(SIMD)インストラクションセットを実装するためのコプロセッサ216(ときにはVMXユニットと呼ばれる)を含んでもよい。コプロセッサ216は128ビットレジスタ217を含んでもよい。これらのコプロセッサレジスタ217は、さもなくば第1グループ213または第2グループ214にマップされることになるレジスタのいくつかをマッピングするために使ってもよい。PPE204は異なるタイプのPPEレジスタ212を有してもよい。たとえば、PPE204は、32個の64ビット汎用レジスタ、32個の32ビット浮動小数点レジスタ、およびVMXコプロセッサ216の32個の128ビットレジスタ217を含んでもよい。
本発明の実施の形態において、ホストシステム200は、図2Bに示された方法220にしたがってターゲットシステム100をエミュレートする。ステップ222において、ターゲットシステム100のプロセッサ、たとえばEE102のCPU122のレジスタ123のセットの使用について統計データを決定する。アプリケーション・バウンダリ・インタフェース(ABI)を使用して、どのEEレジスタ123がもっとも頻繁に読み書きされていて、ダイレクトマッピングにもっとも適しているかを決定してもよい。統計データの変化に応じて、ダイレクトマップされたEEレジスタ123と動的にマップされたEEレジスタ123の両方についてマッピングを動的に再構成する。統計データにもとづいて、レジスタ123の第1サブセットをステップ224で決定する。第1サブセットには、もっともよく使用されるレジスタを含む。たとえば、レジスタ123の半分を第1サブセットに割り当ててもよい。32個のレジスタ123があるなら、それらのうち、16個を第1サブセットに割り当てる。レジスタマッピングをメインメモリ202に格納されたルックアップテーブル218に格納してもよい。異なるレジスタマッピングスキームを異なるルックアップテーブル218に格納してもよい。ルックアップテーブルのメモリへのポインタをあるテーブルから別のテーブルに変更することによって、これらの異なるレジスタスキームをスワップイン、スワップアウトしてもよい。
ステップ226において、これらのもっともよく使われるレジスタはホストシステム200上のプロセッサの第1レジスタグループにダイレクトにマップされる。たとえば、もっともよく使われるCPUレジスタ123をPPEレジスタ212の第1グループ213またはVMXレジスタ217のあるサブセットにダイレクトにマップしてもよい。残りのCPUレジスタ123は、ステップ228に示すように、ホストシステムレジスタの第2グループに動的にマップされる。たとえば、残りのCPUレジスタ123を、プールレジスタ214またはVMXレジスタ217のあるサブセットに動的にマップしてもよい。ここでいうダイレクトマッピングとは、ターゲットシステムレジスタと一つ以上の対応するホストシステムレジスタ間の一貫性のあるマッピングのことをいう。対照的にダイナミックマッピングとは、ターゲットシステムレジスタと、たまたま利用可能になったプールされていたホストシステムレジスタとの間のマッピングのことである。第1グループ213と第2グループ214のサイズを選択して、すべてのEEレジスタ123がダイレクトマップされるか、動的にマップされるか、あるいは、二つのグループ213、214間のEEレジスタ123の中間的なマッピングをもつようにしてもよいことに留意する。レジスタマッピングには、FPU124、VUO126、VU1128のようなEEコプロセッサの他、I/Oプロセッサ102、グラフィックシンセサイザ104、サウンドプロセッサ108のような他のターゲットシステムプロセッサのレジスタのマッピングも含んでもよいことにさらに留意する。
CPUコア122は、ステップ230で示されるように第1および第2グループのレジスタを用いてPPE204上でエミュレートされる。たとえば、本発明の実施の形態において、PPE204上で動作するトランスレータは、ターゲットプログラム118のEEインストラクションをPPE204上で動作可能なマシンコードにトランスレートすることにより、ターゲットシステム100のEE102をエミュレートしてもよい。PPE204は、ターゲットプログラム118のIOPインストラクションをインタープリトすることによりIOP106をエミュレートするインタープリタが実装されてもよい。それによりインタープリトされたコードインストラクション205をSPE206の一つで実行してもよい。ステップ230のエミュレーションの間、ホストシステム200上のプロセッサ(たとえば、PPE204)は、中間結果を生成するホストプロセッサとともに演算を実行してもよい。中間結果は一つ以上のプールレジスタ214に一時的に格納されてもよい。
レジスタマッピング(ダイレクトまたは動的)は履歴依存、データ依存および/またはインストラクション依存であってもよい。たとえば、直接定数のようにオン・ザ・フライでロードされるリードオンリーの値に対するレジスタは、ダイレクトにマップしてもよい。同様に、オン・デマンドでロードされ、必要なときに変更される値を含むレジスタは、ある時間の間、一時的にダイレクトマップされてもよい。履歴依存でインストラクション依存のマッピングの例として、先のEEインストラクションが128ビットインストラクションであり、そのインストラクションの結果だけが128ビットで作用する、たとえば、シングル・インストラクション・マルチプル・データ(SIMD)インストラクションである場合を考える。そのような場合、EEインストラクションに対するレジスタは、128ビットVMXレジスタにダイレクトマップしてもよい。ターゲットシステム上の128ビットベクトル浮動小数点インストラクションに対するレジスタは、128ビットVMXレジスタ217にマップしてもよい。16ビット整数インストラクションに対するレジスタはPPE204上の64ビットレジスタにマップしてもよい。
レジスタマッピングはまた、ホストシステムによってエミュレートされるデバイスのタイプによって決定されることもある。たとえば、SIMDインストラクションに対するEEレジスタを128ビットVMXレジスタ217にダイレクトにマップしてもよい。同様に、VU0126上の128ビットベクトル浮動小数点インストラクションに対するレジスタを128ビットVMXレジスタ217にマップしてもよい。
上述のように、CPUレジスタ123はPPEレジスタ212よりも大きいサイズであってもよい。具体的には、CPUレジスタ123は128ビットレジスタであり、PPEレジスタ212は64ビットレジスタである。図3に示すように、128ビットターゲットシステムレジスタ301を上位64ビットフィールド302と下位64ビットフィールド303に分割することにより、128ビットターゲットシステムレジスタ301を二つの64ビットホストシステムレジスタ304、306にマップしてもよい。上位フィールド302をホストシステムレジスタ304にマップする一方で、下位フィールド303をホストシステムレジスタ306にマップしてもよい。128ビットレジスタを用いた並列加算のような並列ターゲットシステムインストラクションのエミュレーションは、オペランドの性質に部分的に依存する。インストラクションに対するオペランドが128ビットレジスタにあるなら、下位フィールド303の最高ビットと上位フィールド302の最低ビットの間でキャリーをもつ128ビットオペレーションとして、オペレーションが実行される。オペランドが64ビットレジスタにあるなら、下位フィールド303の最高ビットと上位フィールド302の最低ビットの間でキャリーをもたずに、二つ以上のオペレーションが実行される。
図4に示すように、32ビット浮動小数点インストラクションに対するレジスタを128ビットVMXレジスタ217にマップしてもよい。具体的には、32ビットのターゲットシステムレジスタ401に対する各値は、128ビットホストシステムレジスタ406の32ビットフィールド402、403、404、405のそれぞれにマップされる。
本発明の好ましい実施の形態を完全な形で説明してきたが、いろいろな代替物、変形、等価物を用いることができる。したがって、本発明の範囲は、上記の説明を参照して決められるものではなく、請求項により決められるべきであり、均等物の全範囲も含まれる。ここで述べた特徴はいずれも、好ましいかどうかを問わず、他の特徴と組み合わせてもよい。請求項において、明示的に断らない限り、各項目は1またはそれ以上の数量である。請求項において「〜のための手段」のような語句を用いて明示的に記載する場合を除いて、請求項がミーンズ・プラス・ファンクションの限定を含むものと解してはならない。
本発明の実施の形態に係るエミュレートされるべきターゲットデバイスのブロック図である。 図1Aのターゲットデバイスのエモーション・エンジンのブロック図である。 本発明の実施の形態に係るレジスタマッピングを用いて図1A、図1Bのターゲットデバイスをエミュレートするホストデバイスの概略図である。 本発明の実施の形態に係るホストデバイスによるターゲットデバイスのエミュレーションにおけるレジスタマッピングの方法のフローチャートである。 本発明の実施の形態に係る128ビットターゲットシステムレジスタを二つの64ビットホストシステムレジスタにマッピングする例を説明するブロック図である。 本発明の実施の形態に係る32ビット浮動小数点インストラクション用のレジスタを128ビットVMXレジスタにマッピングする例を説明するブロック図である。

Claims (20)

  1. ターゲットシステムをエミュレーションするためのホストシステムであって、
    1以上のホストシステムプロセッサと、
    前記1以上のホストシステムプロセッサに接続されたメモリとを含み、
    ロセッサで実行可能なインストラクションセットが前記メモリに具体化され、
    当該プロセッサで実行可能なインストラクションは、ホストシステム上でターゲットシステムをエミュレーションするための方法を実装するためのインストラクションを含み、
    当該方法は、
    ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定するステップと、
    前記統計にもとづいて、前記レジスタセットの内、1以上の最も多く使われるレジスタを含む第1レジスタサブセットを決めるステップと、
    前記第1レジスタサブセットをホストシステムプロセッサの第1レジスタグループにダイレクトマッピングするステップと、
    前記レジスタセットの第2レジスタサブセットを前記ホストシステムプロセッサの第2レジスタグループに動的にマッピングするステップとを含み、
    前記レジスタセットの前記第1レジスタサブセットの個数と前記レジスタセットの前記第2レジスタサブセットの個数を定めたレジスタマッピングスキームが前記メモリのルックアップテーブルに格納され、異なるレジスタマッピングスキームが異なるルックアップテーブルに格納されており、
    前記ルックアップテーブルを参照するための前記メモリへのポインタをあるルックアップテーブルから別のルックアップテーブルに変更することによって、前記異なるレジスタマッピングスキームをスワップインおよびスワップアウトするステップをさらに含むことを特徴とするホストシステム。
  2. 前記第1および第2レジスタグループを用いて前記ホストシステムプロセッサ上で前記ターゲットシステムプロセッサをエミュレートするステップをさらに含む請求項1のシステム。
  3. 前記ターゲットシステムをエミュレートするステップは、ターゲットシステムプロセッサ用のインストラクションをトランスレートするステップを含む請求項2のシステム。
  4. 前記ターゲットシステムプロセッサのレジスタセットのレジスタのいくつかは、前記ホストシステムプロセッサの第1および第2レジスタグループのレジスタよりもサイズが大きい請求項1のシステム。
  5. 前記ターゲットシステムプロセッサのレジスタセットのレジスタは128ビットレジスタを含み、前記ホストシステムプロセッサの第1および第2レジスタグループのレジスタは64ビットレジスタを含む請求項4のシステム。
  6. 前記第1レジスタサブセットをダイレクトマッピングするステップまたは第2レジスタサブセットを動的にマッピングするステップは、ターゲットシステムレジスタの下位フィールドを第1ホストシステムレジスタにマッピングし、前記ターゲットシステムレジスタの上位フィールドを第2ホストシステムレジスタにマッピングするステップを含む請求項4のシステム。
  7. 前記ホストシステムプロセッサはセルプロセッサのパワー・プロセッサ・エレメントである請求項1のシステム。
  8. 第1および/または第2グループの1以上のレジスタは、前記パワー・プロセッサ・エレメントのVMXユニットのレジスタである請求項7のシステム。
  9. 前記ホストプロセッサで中間結果を生成する演算を実行するステップと、前記中間結果を前記第2レジスタグループの1以上のレジスタに格納するステップとをさらに含む請求項1のシステム。
  10. 前記ターゲットシステムプロセッサはエモーション・エンジンである請求項1のシステム。
  11. 前記エモーション・エンジン用のインストラクションを前記ホストシステムプロセッサで読み取り可能なマシンコードにトランスレートすることにより、前記ホストシステムプロセッサで前記エモーション・エンジンをエミュレートするステップをさらに含む請求項10のシステム。
  12. ターゲットシステムのインストラクションのブロッキングの可能性を減らすために、第2サブセットレジスタの動的マッピングをローテーションするステップをさらに含む請求項1のシステム。
  13. 前記ターゲットシステムは1以上のさらなるプロセッサを含み、当該方法は、前記1以上のさらなるプロセッサ用のインストラクションをインタープリトし、インタープリトされたインストラクションを前記ホストシステムプロセッサまたは前記ホストシステムプロセッサに接続された1以上のコプロセッサ上で実行することにより、前記1以上のさらなるプロセッサをエミュレートするステップをさらに含む請求項11のシステム。
  14. 第1サブセットレジスタのダイレクトマッピングおよび/または第2サブセットレジスタの動的マッピングを動的に再構成するステップをさらに含む請求項1のシステム。
  15. ホストシステム上でターゲットシステムをエミュレーションするための方法であって、
    ターゲットシステムプロセッサのレジスタセットの使用に関する統計を決定するステップと、
    前記統計にもとづいて、前記レジスタセットの内、1以上の最も多く使われるレジスタを含む第1レジスタサブセットを決めるステップと、
    前記第1レジスタサブセットをホストシステムプロセッサの第1レジスタグループにダイレクトマッピングするステップと、
    前記レジスタセットの第2レジスタサブセットを前記ホストシステムプロセッサの第2レジスタグループに動的にマッピングするステップとを含み、
    前記レジスタセットの前記第1レジスタサブセットの個数と前記レジスタセットの前記第2レジスタサブセットの個数を定めたレジスタマッピングスキームが前記ホストシステムのメモリのルックアップテーブルに格納され、異なるレジスタマッピングスキームが異なるルックアップテーブルに格納されており、
    前記ルックアップテーブルを参照するための前記メモリへのポインタをあるルックアップテーブルから別のルックアップテーブルに変更することによって、前記異なるレジスタマッピングスキームをスワップインおよびスワップアウトするステップをさらに含むことを特徴とする方法。
  16. 前記1以上のホストシステムプロセッサはパワー・プロセッサ・エレメントを含む請求項15の方法。
  17. 前記1以上のホストシステムプロセッサは、前記パワー・プロセッサ・エレメントに接続された1以上のシナジスティック・プロセッサ・エレメントをさらに含む請求項16の方法。
  18. 第1および/または第2グループの1以上のレジスタは、前記パワー・プロセッサ・エレメントのVMXユニットのレジスタである請求項16の方法。
  19. 前記ターゲットシステムプロセッサのレジスタセットのレジスタは、前記ホストシステムプロセッサの第1および第2レジスタグループのレジスタよりもサイズが大きい請求項15の方法。
  20. 前記ターゲットシステムプロセッサのレジスタセットのレジスタは128ビットレジスタであり、前記ホストシステムプロセッサの第1および第2レジスタグループのレジスタは64ビットレジスタである請求項19の方法。
JP2009509938A 2006-05-03 2007-04-20 ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング Active JP5048056B2 (ja)

Applications Claiming Priority (21)

Application Number Priority Date Filing Date Title
US74626806P 2006-05-03 2006-05-03
US79776106P 2006-05-03 2006-05-03
US79776206P 2006-05-03 2006-05-03
US74626706P 2006-05-03 2006-05-03
US79743506P 2006-05-03 2006-05-03
US74627306P 2006-05-03 2006-05-03
US60/797,762 2006-05-03
US60/746,267 2006-05-03
US60/746,273 2006-05-03
US60/746,268 2006-05-03
US60/797,435 2006-05-03
US60/797,761 2006-05-03
US11/700,448 2007-01-30
US11/700,448 US7577826B2 (en) 2006-01-30 2007-01-30 Stall prediction thread management
US11/696,699 US7770050B2 (en) 2006-05-03 2007-04-04 Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
US11/696,684 US7792666B2 (en) 2006-05-03 2007-04-04 Translation block invalidation prehints in emulation of a target system on a host system
US11/696,684 2007-04-04
US11/696,699 2007-04-04
US11/696,691 US7813909B2 (en) 2006-05-03 2007-04-04 Register mapping in emulation of a target system on a host system
US11/696,691 2007-04-04
PCT/US2007/067142 WO2007130806A2 (en) 2006-05-03 2007-04-20 Register mapping in emulation of a target system on a host system

Publications (3)

Publication Number Publication Date
JP2009535745A JP2009535745A (ja) 2009-10-01
JP2009535745A5 JP2009535745A5 (ja) 2012-03-22
JP5048056B2 true JP5048056B2 (ja) 2012-10-17

Family

ID=38668435

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009509939A Active JP4932904B2 (ja) 2006-05-03 2007-04-20 インタープリトおよびトランスレートされたインストラクションの両方に関わるエミュレーションにおけるクロック管理の問題を解決するための方法と装置
JP2009509938A Active JP5048056B2 (ja) 2006-05-03 2007-04-20 ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009509939A Active JP4932904B2 (ja) 2006-05-03 2007-04-20 インタープリトおよびトランスレートされたインストラクションの両方に関わるエミュレーションにおけるクロック管理の問題を解決するための方法と装置

Country Status (3)

Country Link
EP (3) EP2426603B1 (ja)
JP (2) JP4932904B2 (ja)
WO (3) WO2007130805A2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013171556A (ja) * 2012-02-23 2013-09-02 Hitachi Ltd プログラム解析システム及び方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0124517A1 (en) * 1982-10-22 1984-11-14 International Business Machines Corporation Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
JPH07160537A (ja) * 1993-12-03 1995-06-23 Matsushita Electric Ind Co Ltd シミュレータ
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US5930158A (en) * 1997-07-02 1999-07-27 Creative Technology, Ltd Processor with instruction set for audio effects
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
JP3147851B2 (ja) * 1998-03-27 2001-03-19 日本電気株式会社 シミュレーション方法、シミュレーション装置及びシミュレーションプログラムを記憶した記憶媒体
DE69942011D1 (de) * 1998-10-10 2010-03-25 Ibm Programmkodekonvertierung mit verringerter Übersetzung
US6115054A (en) * 1998-12-29 2000-09-05 Connectix Corporation Graphics processor emulation system and method with adaptive frame skipping to maintain synchronization between emulation time and real time
US6529862B1 (en) * 1999-06-30 2003-03-04 Bull Hn Information Systems Inc. Method and apparatus for dynamic management of translated code blocks in dynamic object code translation
US6882968B1 (en) * 1999-10-25 2005-04-19 Sony Computer Entertainment Inc. Method of measuring performance of an emulator and for adjusting emulator operation in response thereto
US6986128B2 (en) * 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
JP2001216177A (ja) * 2000-02-04 2001-08-10 Seiko Epson Corp シミュレーション装置およびシミュレーション方法ならびにシミュレーションプログラムを記憶した記憶媒体
JP4001722B2 (ja) * 2000-03-03 2007-10-31 株式会社ソニー・コンピュータエンタテインメント エンタテインメント装置及びコンピュータシステム
JP4547071B2 (ja) * 2000-03-30 2010-09-22 任天堂株式会社 ゲーム情報記憶媒体およびそれを用いたゲームシステム
JP2002049414A (ja) 2000-05-26 2002-02-15 Yutaka Electronics Industry Co Ltd 産業用機械の保全方法及び保全システム
JP3964142B2 (ja) * 2000-08-15 2007-08-22 株式会社ソニー・コンピュータエンタテインメント エミュレート装置及び部品、情報処理装置、エミュレーション方法、記録媒体、プログラム
US6884171B2 (en) * 2000-09-18 2005-04-26 Nintendo Co., Ltd. Video game distribution network
US6672963B1 (en) * 2000-09-18 2004-01-06 Nintendo Co., Ltd. Software implementation of a handheld video game hardware platform
JP2004318449A (ja) * 2003-04-16 2004-11-11 Hitachi Ltd プログラム実行速度シュミレーション方法
US20050015754A1 (en) * 2003-06-18 2005-01-20 Virtutech Ab Method and system for multimode simulator generation from an instruction set architecture specification
US7805710B2 (en) * 2003-07-15 2010-09-28 International Business Machines Corporation Shared code caching for program code conversion
KR100933389B1 (ko) * 2004-09-20 2009-12-22 소니 컴퓨터 엔터테인먼트 인코포레이티드 소프트웨어 애플리케이션을 에뮬레이트하는 방법 및 장치

Also Published As

Publication number Publication date
WO2007130806A2 (en) 2007-11-15
EP2013680A4 (en) 2009-05-06
EP2426603B1 (en) 2018-08-08
WO2007130806A3 (en) 2008-03-27
WO2007130807A2 (en) 2007-11-15
EP2013723A4 (en) 2009-04-29
WO2007130805A2 (en) 2007-11-15
EP2013723A2 (en) 2009-01-14
JP4932904B2 (ja) 2012-05-16
EP2013723B1 (en) 2019-06-12
EP2013680B1 (en) 2018-08-08
EP2426603A2 (en) 2012-03-07
JP2009535745A (ja) 2009-10-01
JP2009535746A (ja) 2009-10-01
WO2007130805A3 (en) 2008-04-10
WO2007130806A8 (en) 2008-07-31
EP2426603A3 (en) 2012-08-29
WO2007130807A3 (en) 2008-10-16
EP2013680A2 (en) 2009-01-14

Similar Documents

Publication Publication Date Title
US8392171B2 (en) Register mapping in emulation of a target system on a host system
Smith et al. The architecture of virtual machines
US8131535B2 (en) Translation block invalidation prehints in emulation of a target system on a host system
US7770050B2 (en) Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
US8060356B2 (en) Processor emulation using fragment level translation
US20110225397A1 (en) Mapping between registers used by multiple instruction sets
US20070016895A1 (en) Selective omission of endian translation to enhance emulator performance
US7069412B2 (en) Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture
JP2008536240A (ja) レジスタファイルとしてのオペランドスタックへの、ネイティブな命令を用いた、マイクロプロセッサのアクセス
WO2009094827A1 (en) Risc processor device and method of simulating floating-point stack operation thereof
JP5048056B2 (ja) ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング
US9483405B2 (en) Simplified run-time program translation for emulating complex processor pipelines
Hsu et al. Hsaemu 2.0: full system emulation for hsa platforms with soft-mmu
Tijms Binary translation: Classification of emulators
Yermolovich et al. Portable execution of legacy binaries on the Java virtual machine
Gaeke CS 497yyz Project Report: LLVA-emu
Chase Welcome to the Machine

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101126

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120202

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120409

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120607

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120718

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5048056

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250