JP4932904B2 - インタープリトおよびトランスレートされたインストラクションの両方に関わるエミュレーションにおけるクロック管理の問題を解決するための方法と装置 - Google Patents

インタープリトおよびトランスレートされたインストラクションの両方に関わるエミュレーションにおけるクロック管理の問題を解決するための方法と装置 Download PDF

Info

Publication number
JP4932904B2
JP4932904B2 JP2009509939A JP2009509939A JP4932904B2 JP 4932904 B2 JP4932904 B2 JP 4932904B2 JP 2009509939 A JP2009509939 A JP 2009509939A JP 2009509939 A JP2009509939 A JP 2009509939A JP 4932904 B2 JP4932904 B2 JP 4932904B2
Authority
JP
Japan
Prior art keywords
clock
translated
instruction
interpreted
execution
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
JP2009509939A
Other languages
English (en)
Other versions
JP2009535746A (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,691 external-priority patent/US7813909B2/en
Priority claimed from US11/696,684 external-priority patent/US7792666B2/en
Priority claimed from US11/696,699 external-priority patent/US7770050B2/en
Application filed by Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2009535746A publication Critical patent/JP2009535746A/ja
Application granted granted Critical
Publication of JP4932904B2 publication Critical patent/JP4932904B2/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

Description

[優先権の主張]
本出願は、2007年4月4日に出願された、Stewart Sargaisonらの「インタープリトおよびトランスレートされたインストラクションの両方に関わるエミュレーションにおけるクロック管理の問題を解決するための方法と装置」と題する同一出願人による同時係属出願第11/696,699号(アトーニー・ドケット番号SCEA05055US01)の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。
本出願は、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,691号(アトーニー・ドケット番号SCEA05054US01)の優先権の利益を主張し、その開示内容全体を参照によりここに援用する。
[関連出願との相互参照]
本出願は、2006年1月30日に出願された米国仮特許出願第60/763,568号に関連し、その開示内容全体を参照によりここに援用する。
[技術分野]
本発明の実施の形態は、ホストコンピュータプラットフォーム上でのターゲットコンピュータプラットフォームのエミュレーションに関し、特にターゲットプラットフォームのあるコンポーネントがインタープリテーションによってエミュレートされ、他のコンポーネントがトランスレーションによってエミュレートされる場合のクロック管理に関する。
第1コンピュータプラットフォーム(「ターゲットシステム」)の機能を第2コンピュータプラットフォーム(「ホストシステム」)上でエミュレートすることにより、ホストシステムがターゲットシステム向けに設計されたプログラムを実行できるようにする処理は、「エミュレーション」として知られている。エミュレーションは一般に、ターゲットプラットフォーム用に設計されたプログラムインストラクション(ターゲットコードインストラクション)をホストプラットフォームのネイティブ言語(ホストインストラクション)に変換することによって互換性を達成するソフトウエアを生成することによって実現されてきた。最近では、エミュレーションは「仮想マシン」を生成することによっても実現されている。仮想マシンでは、ターゲットプラットフォームの物理アーキテクチャ、すなわちハードウエア自身の設計が仮想モデルを介してソフトウエアで再現される。
現在、二つのエミュレーションストラテジーのタイプがエミュレーション分野で利用可能である。第1ストラテジーは「インタープリテーション」として知られるものである。インタープリテーションでは、各ターゲットコードインストラクションが呼び出された順にデコードされ、ターゲットコードインストラクションと意味的に等価であるホストインストラクションの小さなシーケンスが生成され、実行に移される。そのようなエミュレータの主要なコンポーネントは典型的にはソフトウエア・インタープリタである。ソフトウエア・インタープリタはターゲットマシン言語で書かれた任意のプログラムの各インストラクションをホストマシン言語のインストラクションセットに変換する。ここで、ホストマシン言語は、エミュレータが動作するホストコンピュータのコード言語である。インタープリタはコンピュータハードウエアまたはファームウエアで実装された例もある。これによれば、エミュレートされたプログラムを比較的速く実行することができる。
他の主要なエミュレーションストラテジーは「トランスレーション」として知られる。トランスレーションでは、ターゲットインストラクションが分析され、デコードされる。これは「リコンパイル」または「クロスコンパイル」とも呼ばれる。コンピュータプログラムの実行速度はしばしばインタプリタによって劇的に減少してしまうことは周知のことである。コンピュータプログラムは、エミュレーションによって実行された場合、等価なプログラムがターゲットマシンコードにリコンパイルされ、ターゲットコードバージョンが実行される場合に比べて、10から20倍遅くなるのはよくあることである。ソフトウエアエミュレーションが遅いことはよく知られているため、数多くの製品は、ターゲットプログラムの一部をランタイムでホストマシンコードにトランスレートし、リコンパイルされたプログラム部分を実行することによって、ソースアプリケーションの実行速度を改善するのに成功してきた。トランスレーション処理は、たとえば、ターゲットコードの1インストラクション毎に50〜100マシン/クロックサイクルかかるが、その結果得られるホストマシンコードは、平均的には、たいていのソースアプリケーションの全体的な実行速度を改善するのに十分なくらい、ずっと速くなる。
ターゲットコードがインタープリトされるか、トランスレートされるかを問わず、ターゲットマシンが元のターゲットインストラクションを実行するときとは異なるレートで、ホストマシンは結果として得られるインタープリトまたはトランスレートされたインストラクションを実行する。その結果、ホストマシンは、エミュレートされるターゲットマシンよりも速くまたは遅く実行される。実行速度のそのような違いは、ワードプロセッサやスプレッドシートのようなプログラムでは、許容できるか、もしくは望ましいことさえある。しかし、実行速度のこのような違いは、次のようなタイムクリティカルなオペレーションにとっては重要な問題である。すなわち、(1)音やビデオの再生、(2)データが一定レートでプロセッサに伝達される「ストリーミング」情報の処理、および(3)動きを正確に表示するために画面の更新を要求するゲームやアニメーションである。
ターゲットマシンとホストマシンの異なる実行レートは、たとえばホストマシンの実効レートを調整することにより、ソフトウエアで解決してもよい。たとえば、Lindenの米国特許6,882,962号は、ホストプラットフォーム内でタイミングの変化を測定、予測、および動的に調整することにより、一貫性のあるインストラクションの実行速度に対して設計されたターゲットプラットフォームのタイミング特性をシミュレートするための方法を記述している。この技術は、任意の「時間量子」を一つの指示対象として用いる。この指示対象は、指定された時間にターゲットシステムが実行するインストラクションの数を決定するためにターゲットシステムのインストラクションサイクルの実行速度がかけ算される。
ネイティブでないコードがホストシステム上で実行されるとき、カウンタを用いて実行されたインストラクションの数を追跡し、目標数に達したら割り込みをかける。プロセッサアクティビティから独立したタイミングソースに問い合わせて、経過時間を決定する。そして、経過時間は元の「時間量子」と比較される。その結果得られる比率は、任意の特定のホストシステムの動作速度特性から独立したタイミングリファレンスである。このリファレンスは、ホストシステムの動作速度を予測し、次のインストラクションブロックを実行し、処理を繰り返す前に、より正確にターゲットシステムに適合するように、ホストコンピュータとエミュレーションプロセスのファクターを調整するために用いられる。
このシステムは、ターゲットインストラクションの実行速度が一貫している場合に作用するけれども、ターゲットシステムの異なる部分が異なるやり方でエミュレートされ、異なるクロックレートをもつ状況に取り組むことはしない。たとえば、ターゲットシステムのあるコンポーネントはインタープリテーションによってエミュレートされ、その場合、インタープリトされたターゲットインストラクションは固定クロックでホストシステム上で実行される。しかし、ターゲットマシンの別のコンポーネントは、トランスレーションによってエミュレートされ、その場合、トランスレートされたターゲットインストラクションは可変クロックを用いてホストシステム上で実行される。ホストシステム上のこのような二つの異なるクロックを管理することは、全く異なる問題を提示する。
このように、これらの問題を解決するエミュレーションシステムと方法が当該分野で求められている。
上記の不利益を克服するために、本発明の実施の形態は、ホストシステム上でのターゲットシステムのエミュレーションにおけるクロック管理の問題を解決するための方法およびシステムに向けられる。ターゲットプログラムの第1コードインストラクションセットをインタープリトして前記ホストシステム上で前記ターゲットシステムの第1コンポーネントをエミュレートするインタープリトされたコードインストラクションを生成する。第2コードインストラクションセットをトランスレートして前記ホストシステム上で前記ターゲットシステムの第2コンポーネントをエミュレートするトランスレートされたコードインストラクションを生成する。インタープリトされたインストラクションを第1クロックにもとづいて実行する。トランスレートされたインストラクションを第2クロックにもとづいて実行する。ホストシステムは、トランスレートされたインストラクションとインタープリトされたインストラクションの間で望ましい同期を維持するために、前記第1または第2クロック、前記トランスレートまたはインタープリトされたインストラクションの実行、またはメモリアクセスを調整する。
たとえば、前記第1クロックは固定クロック、前記第2クロックは可変クロックである場合、前記第2クロックが前記第1クロックよりも速く進んでいるとき、トランスレートされたインストラクションの実行またはメモリアクセスを停止してもよい。あるいは、ターゲットプログラムの1以上の部分によるターゲットシステムのあるコンポーネントの使用効率にもとづいて1以上のクロックレートを調整してもよい。フレームをディスプレイデバイスに提示する前に、ホストデバイスがトランスレートされたインストラクションのオペレーションを完了するのに十分な時間がない状況において、前記トランスレートされたインストラクションのオペレーションを完了するためのさらなる時間を与えるために、現在のフレームを繰り返してもよい。ある実施の形態において、前記ターゲットプログラムがあらかじめ定められた回数よりも多くハードウエアレジスタをポーリングするならば、前記ターゲットプログラムのエミュレーションの実行をタイミングアウトを避けるやり方に変更してもよい。他の状況において、ターゲットシステムのあるエミュレートされたコンポーネントが別のコンポーネントによって読まれるインストラクションを書き込んでもよい。読み出しコンポーネントが書き込みコンポーネントの先を行くことを防ぐために、これらのインストラクションはジャーナルに格納され、書き込まれた順番でジャーナルから読み出されてもよい。
本発明の教示内容は、以下の詳細な説明を添付図面とともに参酌することによって容易に理解することができる。
これから述べる詳細な説明には、例示のために特定の詳細な内容が多く含まれるが、当業者であれば、これらの詳細な内容にいろいろなバリエーションや変更を加えても、本発明の範囲を超えないことは理解できよう。したがって、以下で説明する本発明の例示的な実施の形態は、権利請求された発明に対して、一般性を失わせることなく、また、何ら限定をすることもなく、述べられたものである。
上述のように、たいていのエミュレーション技術は、固定クロックを用いるインタープリテーション、または可変クロックを用いるトランスレーションのいずれかに関する。ソニー・プレイステーション(登録商標)2(PS2)のようなゲームコンソールデバイスのエミュレーションにおいて、あるターゲットコンポーネントはインタープリテーションによってエミュレートされ、他はトランスレーションによってエミュレートされる。プレイステーション(登録商標)は日本のソニー・コンピュータ・エンタテインメント社の登録商標である。本発明の実施の形態は、ターゲットデバイスの異なるコンポーネントをエミュレートするために使われる、異なるタイプのエミュレーションから生じるクロック管理の問題を解決する。
一例として、図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ウエイのスーパースカラとして動作する。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は、ターゲットプログラム118をPPE204上で実行可能なマシンコード213にトランスレートすることにより、ターゲットシステム100のEE102をエミュレートする。トランスレートされたコード213は可変クロックを用いる。本発明のこの実施の形態において、ターゲットプログラム118のIOPインストラクションをインタープリトすることにより、IOP106をエミュレートするインタープリタがPPE204に実装される。インタープリタ214は固定クロックを用いて実行される。ターゲットシステム100上で、IOPクロックレートは、セルプロセッサ201に対するクロックレートよりもずっと小さい(たとえば、約100分の1である)。結果的に、あるトランスレートされたEEコードは非常に速く実行され、あるものは非常に遅く実行されることがある。さらに、ターゲットシステム100用に書かれたプログラムは、EE102を用いる効率が異なることがある。結果的に、エミュレートされたプログラムの異なる部分が非常に速くあるいは非常に遅く実行されることがある。
このプログラム209は、EEクロックが非常に速く(すなわち、IOPクロックよりも速く)進むとき、IOPクロックとEEクロックの同期を取るために、実行またはダイレクト・メモリ・アクセス(DMA)を止めることにより、異なるクロックレートを扱うことができる。たとえば、図2Bに示すように、トランスレートされたEEコード213は、オペレーションがどれくらいの時間がかかるかを推定するためにエミュレートされたサイクルカウンタ215を使ってもよい。トランスレートされたEEコードインストラクションの実行タイミングは可変EEクロック217に合わせる。同様に、インタープリトされたIOPコードの実行タイミングは固定IOPクロック207に合わせる。プログラム209はステップ220に示されるようにN回のエミュレートされたサイクルを実行する。Nサイクルの実行の後、プログラム209はIOPクロック207とEEクロック217が同期しているかどうかを調べることができる。たとえば、ステップ222において、プログラム209は、EEクロック217がIOPクロック207よりも速く進んでいるかどうかを調べる。もしそうでないなら、通常の実行がもうNサイクルの間、進められる。もしそうであるなら、プログラム209は、ステップ224で示すように、トランスレートされたコードに所定数の「ノーオペレーション」(NOP)を挿入するなどにより、EEクロックを停止することができ、その後、ステップ226に示すように、次のEEインストラクションを実行するか、DMAインストラクションを実行する。
ある状況では、フレームがCRTモニタやテレビなどの表示装置に提供される前に、トランスレートされたコード213がEEオペレーションを完了するには十分な時間がないこともある。図2Cに示すように、ホストシステム200上で実行されるプログラム209は、ステップ232において、EEクロックが遅すぎるかどうかを決定する。もしそうであり、かつ、ステップ234において、処理中のフレームを完了するのに十分な時間がないと判定される場合、ステップ236においてフレーム、たとえば現在のフレーム、すなわち、画面に現在提供されているフレームまたはもっとも最近に提供されたフレームを繰り返すことで、トランスレートされたEEコード213のより遅い実行に対して埋め合わせをするためにさらなる時間を提供する。
本発明のある実施の形態において、与えられたターゲットプログラムタイトルに対するコードは、EEの使用効率を分析され、EEクロックレートが、コードの異なる部分に対する当該効率にもとづいて調整される。たとえば、図3に示されるように、メモリ202は、ターゲットシステム100上で実行可能な異なるプログラムに対するEE効率のデータが格納されたルックアップテーブル240を含む。プログラムの異なる部分は異なる効率でEEを使用するため、与えられたプログラムに対するEE効率のデータは、当該プログラムの異なる部分に関する各エントリをともなって複数のエントリを含む。ルックアップテーブル240に対するデータは、既知のターゲットシステムのプログラムを効率について分析することによって生成することができる。ソニープレイステーション(登録商標)2のようなゲーム機用のプログラムの場合は、EEアナライザを用いて、ターゲットシステムプログラム118のいろいろな部分に対してEEの利用効率を判定することができる。
プログラム209は図3の右側に示されるように、ルックアップテーブルのデータを利用することができる。具体的には、ステップ302に示すように、プログラム209はターゲットシステムプログラムのタイトル(たとえば、CD/DVDリーダ211にあるゲームCDからのゲームタイトル)を読み取る。タイトルにもとづいて、プログラム209は、そのターゲットシステムプログラムの1以上の部分に対するEE効率を検索することができる。プログラム209は、上述のインタープリトされたIOPコード205、固定されたIOPクロック207、トランスレートされたEEコード213、および可変EEクロック217を用いて、ステップ306で示すようにホストマシンプログラムのエミュレーションを実行する。ステップ308で示すように、エミュレーションプログラム209は、ターゲットシステムプログラムの一部に対するEE効率にもとづいてEEクロック217に対するクロックレートを調整する。たとえば、ターゲットシステムプログラムのある部分が比較的高い効率をもつならば、EEクロックレートをその部分については増加させる。同様に、低いEE効率をもつターゲットシステムプログラムの部分については、EEクロックレートを減少させる。
あるハードウエアのエミュレーションの過程で、ターゲットシステム100とホストシステム200の間でクロックレートの違いがあるために、あるイベントがタイムアウトする可能性がある。たとえば、あるターゲットシステムプログラムは、制御レジスタに値を設定し、その後、結果を待つためにそれを繰り返しポーリングすることがよくある。そのようなプログラムは、ポーリングが所定回数の試行の後、不成功であった場合、ハードウエアエラーを示すタイムアウトコードを含むことがある。しかしながら、ターゲットプログラム118がホストシステム200上でずっと速く実行されるなら、ハードウエアエラーがなくてもエミュレーションの間、このカウントは超えてしまうかもしれない。
エミュレーションプログラム209はハードウエアエミュレーションコード、すなわち、ターゲットシステム100上のあるハードウエアをエミュレートするソフトウエアコードを含んでもよい。タイムアウトハザードが存在するかどうかを判定し、ターゲットプログラム118のエミュレーションの実行をタイムアウトを避けるやり方に変更することにより、当該ハザードに対する補償をするタイムアウトトラッキング制御をハードウエアエミュレーションコードに含めることもできる。タイムアウトトラッキング制御方法400の一例を図4で説明する。ステップ402において、ターゲットプログラム118がハードウエア制御レジスタに書き込みをしたかどうかを判定する。たとえば、メモリマップされたI/O(MMIO)を用いた、ハードウエアに対するメモリマップされたリードは、ターゲットプログラム118がハードウエア制御レジスタに書き込みをしたことを示すものとして用いることができる。ステップ404に示されるように、同じレジスタに対して連続的にリードがなされた回数をカウントする。たとえば、ベクトルコプロセッサユニット126、128やIPU140のような、EEコンポーネント内のあるレジスタはタイムアウトトラッキングを利用することができる。ステップ406において、連続するリードの回数がN回リード(たとえば、一つのライトの後、50回のリード)の閾値を超えるなら、ハードウエアエミュレーションコードは、ホストシステムソフトウエアがこのレジスタのポーリングを試みていると判定する。それに応じて、ハードウエアエミュレーションコードは、ステップ408で示すように、タイムアウトが起きないように補償する。たとえば、ハードウエアエミュレーションコードは、ホストシステムソフトウエアがタイムアウトに到達するのを防ぐために十分な余裕をもたせて速度を落としてもよい。あるいは、ハードウエアステートが変化する(たとえば、エミュレートされたハードウエアが要求されたオペレーションを終了する)まで、ハードウエアエミュレーションコードはエミュレートされたホストシステムソフトウエアに何らレスポンスを返さないようにしてもよい。
別の方法として、タイムアウトハザードを提示しない、ポーリングオペレーションが起きているかどうかを、何もしないタイミングループやメモリコピーオペレーションとははっきり区別できるものとして判定するために、ターゲットプログラム118の関連する部分を解析することができる。タイムアウトトラッキングをやっている一方で、エミュレートされたハードウエアが割り込みハンドリングのような無関係のファンクションを実行してもよい。
ターゲットシステム100上で、EE102があるデバイスから読み出し、別のデバイスに書き込んでもよい。たとえば、EE102はIOP106からデータを読み出し、そのデータを処理してGS104に処理結果を書き出してもよい。ホストシステム200上のそのようなオペレーションのエミュレーションにおいて、読み出し側が書き出し側の先を行くことがないようにすることは重要である。もしリードオペレーションをエミュレートしているエミュレーションプログラム209の部分がストールしたなら、ライトオペレーションをエミュレートしている当該プログラム209の部分はどこでストールしたかを知っている必要がある。ターゲットシステム100上で、EEのRAM108、スクラッチパッド123、IPU140およびSIF144に対してリードまたはライトするデバイスは、他のデバイスにストールアドレスがどこであるかを伝えることができる。
たとえば、図5に例示されるように、IOPエミュレータ502がサウンドプロセッサエミュレータ504にインストラクションを書き込むとき、ライトインストラクションのタイミングと順番はサウンドプロセッサエミュレータ504にとって重要である。IOPエミュレータ502がサウンドプロセッサエミュレータ504に書き出すインストラクションは、すべてのサウンドプロセッサライトインストラクション508とサウンドプロセッサレジスタ値510の順序を記録するライト「ジャーナル」506に格納される。サウンドプロセッサエミュレータ504はジャーナル506から順番にライトインストラクション508を対応するレジスタ値510とともに引き出す。書かれた順番にジャーナル506からライトインストラクション508を引き出すことにより、読み出し側(この場合サウンドプロセッサ)が書き出し側(IOP)の先を進むことはない。図5で説明した概念は、ターゲットシステム100の任意のエミュレートされたコンポーネントのペアであって、一方がデータまたはインストラクションを書き出し、他方がそれを読み出すコンポーネントのペアに一般的に適用できる。一例として、IOPエミュレータ502とサウンドプロセッサエミュレータ504は、図2Aに関して上述したセルプロセッサ201上のSPE206によって実装してもよい。
本発明の好ましい実施の形態を完全な形で説明してきたが、いろいろな代替物、変形、等価物を用いることができる。したがって、本発明の範囲は、上記の説明を参照して決められるものではなく、請求項により決められるべきであり、均等物の全範囲も含まれる。ここで述べた特徴はいずれも、好ましいかどうかを問わず、他の特徴と組み合わせてもよい。請求項において、明示的に断らない限り、各項目は1またはそれ以上の数量である。請求項において「〜のための手段」のような語句を用いて明示的に記載する場合を除いて、請求項がミーンズ・プラス・ファンクションの限定を含むものと解してはならない。
本発明の実施の形態に係るエミュレートされるべきターゲットデバイスのブロック図である。 図1Aのターゲットデバイスのエモーション・エンジンのブロック図である。 図1A、図1Bのターゲットデバイスをエミュレートするホストデバイスの概略図である。 本発明の実施の形態に係るターゲットデバイスの異なる部分のエミュレーションのための異なるクロックレートの管理を説明するフローダイアグラムである。 本発明の別の実施の形態に係るターゲットデバイスの異なる部分のエミュレーションのための異なるクロックレートの管理を説明するフローダイアグラムである。 本発明の別の実施の形態に係るターゲットデバイスの異なる部分のエミュレーションのための異なるクロックレートの管理を説明するフローダイアグラムである。 本発明の別の実施の形態に係るターゲットデバイスのエミュレーションのためのタイムアウトトラッキング制御を説明するフローダイアグラムである。 本発明の実施の形態に係るエミュレーションにおけるリード/ライトジャーナルの使用を説明するフローダイアグラムである。

Claims (20)

  1. ターゲットシステムをエミュレーションするためのホストシステムであって、
    1以上のプロセッサと、
    前記1以上のホストシステムプロセッサに接続されたメモリと、
    前記メモリに具体化されたプロセッサで実行可能なインストラクションセットとを含み、
    当該プロセッサで実行可能なインストラクションは、ホストシステム上でのターゲットシステムのエミュレーションにおけるクロック管理の問題を解決するための方法を実装するためのインストラクションを含み、
    当該方法は、
    ターゲットプログラムの第1コードインストラクションセットをインタープリトして前記ホストシステム上で前記ターゲットシステムの第1コンポーネントをエミュレートするインタープリトされたコードインストラクションを生成するステップと、
    第2コードインストラクションセットをトランスレートして前記ホストシステム上で前記ターゲットシステムの第2コンポーネントをエミュレートするトランスレートされたコードインストラクションを生成するステップと、
    インタープリトされたインストラクションを第1クロックにもとづいて実行するステップと、
    トランスレートされたインストラクションを第2クロックにもとづいて実行するステップと、
    トランスレートされたインストラクションとインタープリトされたインストラクションの間で望ましい同期を維持するために、前記第1または第2クロック、前記トランスレートまたはインタープリトされたインストラクションの実行、またはメモリアクセスを調整するステップとを含むことを特徴とするホストシステム
  2. 前記第1クロックは固定クロック、前記第2クロックは可変クロックである請求項1のシステム
  3. 前記第1または第2クロック、前記トランスレートまたはインタープリトされたインストラクションの実行レート、またはメモリアクセスを調整するステップは、前記第2クロックが前記第1クロックよりも速く進んでいるとき、トランスレートされたインストラクションの実行またはメモリアクセスを停止するステップを含む請求項2のシステム
  4. 前記トランスレートされたインストラクションは、オペレーションにかかる時間を推定するためにエミュレートされたサイクルカウンタを用いる請求項2のシステム
  5. 前記トランスレートされたインストラクションの実行タイミングは前記可変クロックに合わされ、前記インタープリトされたインストラクションの実行タイミングは前記固定クロックに合わされる請求項4のシステム
  6. 前記第2クロックが前記第1クロックよりも速く進んでいるとき、トランスレートされたインストラクションの実行またはメモリアクセスを停止するステップは、あらかじめ定められた数のエミュレートされたサイクルを実行するステップと、前記可変クロックが前記固定クロックよりも速く進んでいるかどうかをチェックするステップと、前記可変クロックが前記固定クロックよりも速く進んでいる場合、前記可変クロックを停止するステップとを含む請求項4のシステム
  7. 前記ホストシステムは、パワー・プロセッサ・エレメントと前記パワー・プロセッサ・エレメントに接続された複数のシナジスティック・プロセッサ・エレメントとを有するセルプロセッサを含む請求項1のシステム
  8. 前記第1コンポーネントはエモーション・エンジンであり、前記第2コンポーネントは、前記エモーション・エンジンに接続された入出力プロセッサである請求項1のシステム
  9. フレームをディスプレイデバイスに提示する前に、ホストデバイスがトランスレートされたインストラクションのオペレーションを完了するのに十分な時間がない状況において、トランスレートされたインストラクションとインタープリトされたインストラクションの間で望ましい同期を維持するために、前記第1または第2クロック、前記トランスレートまたはインタープリトされたインストラクションの実行、またはメモリアクセスを調整するステップは、前記トランスレートされたインストラクションのオペレーションを完了するためのさらなる時間を与えるために、現在のフレームを繰り返すステップを含む請求項1のシステム
  10. トランスレートされたインストラクションとインタープリトされたインストラクションの間で望ましい同期を維持するために、前記第1または第2クロック、前記トランスレートまたはインタープリトされたインストラクションの実行、またはメモリアクセスを調整するステップは、
    前記ターゲットプログラムの1以上の部分による前記第2コンポーネントの使用効率を調べるステップと、その使用効率にもとづいて前記第2クロックのレートを調整するステップとを含む請求項1のシステム
  11. トランスレートされたインストラクションとインタープリトされたインストラクションの間で望ましい同期を維持するために、前記第1または第2クロック、前記トランスレートまたはインタープリトされたインストラクションの実行、またはメモリアクセスを調整するステップは、
    前記第1クロックのレートと前記第2クロックのレートの間の違いのために、エミュレートされたイベントがタイムアウトするかどうかを決定するステップと、
    そのエミュレートされたイベントのタイムアウトを避けるために、前記第1クロックのレートまたは前記トランスレートされたインストラクションの実行を調整するステップとを含む請求項1のシステム
  12. 前記第1クロックのレートと前記第2クロックのレートの間の違いのために、エミュレートされたイベントがタイムアウトするかどうかを決定するステップは、前記ターゲットプログラムが制御レジスタに値を設定し、その後、結果を待つために繰り返しその制御レジスタをポーリングしたかどうかを検出するステップを含む請求項11のシステム
  13. 前記タイムアウトを避けるために、前記第1クロックのレートまたは前記トランスレートされたインストラクションの実行を調整するステップは、
    前記ターゲットプログラムがあらかじめ定められた回数よりも多く前記レジスタをポーリングするならば、前記ターゲットプログラムのエミュレーションの実行を、タイミングアウトを避けるやり方に変更するステップを含む請求項12のシステム
  14. 前記ターゲットプログラムのエミュレーションの実行を変更するステップは、前記タイムアウトを防ぐために十分な余裕をもって前記エミュレーションの速度を落とすステップを含む請求項13のシステム
  15. 前記ターゲットプログラムのエミュレーションの実行を変更するステップは、ハードウエアステートが変化するまで前記エミュレートされたターゲットプログラムにどんなレスポンスも返さないステップを含む請求項13のシステム
  16. 前記ターゲットプログラムのエミュレーションの実行を変更するステップは、ポーリングオペレーションが起きているかどうかを判定するために前記ターゲットプログラムの関連する部分を分析するステップを含む請求項13のシステム
  17. エミュレートされたハードウエアで前記タイムアウトに関係しない機能を実行する一方で、前記エミュレートされたイベントのタイムアウトを避けるために、前記第1クロックのレートまたは前記トランスレートされたインストラクションの実行を調整するステップをさらに含む請求項12のシステム
  18. 前記トランスレートされたインストラクションおよび/またはインタープリトされたインストラクションを実行するステップは、第1のエミュレートされたデバイスから1以上のライトインストラクションを書き出すステップと、第2のエミュレートされたデバイスで前記1以上のライトインストラクションを読み出すステップとを含み、
    トランスレートされたインストラクションとインタープリトされたインストラクションの間で望ましい同期を維持するために、前記第1または第2クロック、前記トランスレートまたはインタープリトされたインストラクションの実行、またはメモリアクセスを調整するステップは、前記1以上のライトインストラクションを書き出された順番でジャーナルの形で格納するステップと、書き出された順番で前記第2のエミュレートされたデバイスで前記1以上のライトインストラクションを読み出すステップとを含む請求項1のシステム
  19. ホストシステム上でのターゲットシステムのエミュレーションにおけるクロック管理の問題を解決するための方法であって、
    前記ホストシステム上で前記ターゲットシステムの第1コンポーネントをエミュレートするインタープリトされたコードインストラクションを生成するためにターゲットプログラムの第1コードインストラクションセットをインタープリトするステップと、
    前記ホストシステム上で前記ターゲットシステムの第2コンポーネントをエミュレートするトランスレートされたコードインストラクションを生成するために第2コードインストラクションセットをトランスレートするステップと、
    インタープリトされたインストラクションを第1クロックにもとづいて実行するステップと、
    トランスレートされたインストラクションを第2クロックにもとづいて実行するステップと、
    トランスレートされたインストラクションとインタープリトされたインストラクションの間で望ましい同期を維持するために、前記第1または第2クロック、前記トランスレートまたはインタープリトされたインストラクションの実行、またはメモリアクセスを調整するステップとを含むことを特徴とする方法
  20. 前記ホストシステムは、パワー・プロセッサ・エレメントと前記パワー・プロセッサ・エレメントに接続された複数のシナジスティック・プロセッサ・エレメントとを有するセルプロセッサを含む請求項19の方法
JP2009509939A 2006-05-03 2007-04-20 インタープリトおよびトランスレートされたインストラクションの両方に関わるエミュレーションにおけるクロック管理の問題を解決するための方法と装置 Active JP4932904B2 (ja)

Applications Claiming Priority (21)

Application Number Priority Date Filing Date Title
US74627306P 2006-05-03 2006-05-03
US79743506P 2006-05-03 2006-05-03
US79776206P 2006-05-03 2006-05-03
US74626706P 2006-05-03 2006-05-03
US79776106P 2006-05-03 2006-05-03
US74626806P 2006-05-03 2006-05-03
US60/746,273 2006-05-03
US60/797,761 2006-05-03
US60/797,762 2006-05-03
US60/746,267 2006-05-03
US60/797,435 2006-05-03
US60/746,268 2006-05-03
US11/700,448 US7577826B2 (en) 2006-01-30 2007-01-30 Stall prediction thread management
US11/700,448 2007-01-30
US11/696,684 2007-04-04
US11/696,691 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,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,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
PCT/US2007/067146 WO2007130807A2 (en) 2006-05-03 2007-04-20 Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code

Publications (2)

Publication Number Publication Date
JP2009535746A JP2009535746A (ja) 2009-10-01
JP4932904B2 true JP4932904B2 (ja) 2012-05-16

Family

ID=38668435

Family Applications (2)

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

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009509938A Active JP5048056B2 (ja) 2006-05-03 2007-04-20 ホストシステム上でターゲットシステムをエミュレーションする際のレジスタマッピング

Country Status (3)

Country Link
EP (3) EP2013680B1 (ja)
JP (2) JP5048056B2 (ja)
WO (3) WO2007130807A2 (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
JPS59501684A (ja) * 1982-10-22 1984-10-04 インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−シヨン 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像
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 日本電気株式会社 シミュレーション方法、シミュレーション装置及びシミュレーションプログラムを記憶した記憶媒体
DE69924857T2 (de) * 1998-10-10 2006-03-02 Transitive Ltd., Hanging Ditch Programm-kode-umwandlung
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 株式会社ソニー・コンピュータエンタテインメント エミュレート装置及び部品、情報処理装置、エミュレーション方法、記録媒体、プログラム
US6672963B1 (en) * 2000-09-18 2004-01-06 Nintendo Co., Ltd. Software implementation of a handheld video game hardware platform
US6884171B2 (en) * 2000-09-18 2005-04-26 Nintendo Co., Ltd. Video game distribution network
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
JP4334521B2 (ja) * 2004-09-20 2009-09-30 株式会社ソニー・コンピュータエンタテインメント シングルプロセッサシステムにおいてソフトウエアプログラムの実行を可能にする方法

Also Published As

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

Similar Documents

Publication Publication Date Title
US8234514B2 (en) Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
US7813909B2 (en) Register mapping in emulation of a target system on a host system
Ryzhyk et al. Automatic device driver synthesis with Termite
JP5345652B2 (ja) 部分仮想化マシンに基づく統一格納装置
US8352240B2 (en) Decoupling dynamic program analysis from execution across heterogeneous systems
US8433555B2 (en) Processor emulation using fragment level translation
TWI410864B (zh) 在一處理環境中控制指令執行
JP5186320B2 (ja) エミュレーション強化方法及び装置
US9268627B2 (en) Processor hang detection and recovery
US7957952B2 (en) Translation block invalidation prehints in emulation of a target system on a host system
US9424165B2 (en) Debugging processor hang situations using an external pin
JP4932904B2 (ja) インタープリトおよびトランスレートされたインストラクションの両方に関わるエミュレーションにおけるクロック管理の問題を解決するための方法と装置
TWI417786B (zh) 幫助一處理環境中之指令執行的方法、系統及程式產品
US20240086220A1 (en) Delaying interrupts for virtual machines
CN109408193A (zh) 虚拟机实现方法、装置及计算机设备

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

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: 20120207

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: 20120215

R150 Certificate of patent or registration of utility model

Ref document number: 4932904

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150224

Year of fee payment: 3

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250