JP2002543490A - プログラムコード変換において使用する例外処理の方法および装置 - Google Patents

プログラムコード変換において使用する例外処理の方法および装置

Info

Publication number
JP2002543490A
JP2002543490A JP2000614118A JP2000614118A JP2002543490A JP 2002543490 A JP2002543490 A JP 2002543490A JP 2000614118 A JP2000614118 A JP 2000614118A JP 2000614118 A JP2000614118 A JP 2000614118A JP 2002543490 A JP2002543490 A JP 2002543490A
Authority
JP
Japan
Prior art keywords
register
subject
abstract
code
section
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.)
Granted
Application number
JP2000614118A
Other languages
English (en)
Other versions
JP4709394B2 (ja
Inventor
アラスデア ラウズソーン
ジョン ハロルド サンダーム
ジェイソン ソウログロウ
Original Assignee
トランジティブ テクノロジーズ リミテッド
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 GB9909615A external-priority patent/GB2349486B/en
Application filed by トランジティブ テクノロジーズ リミテッド filed Critical トランジティブ テクノロジーズ リミテッド
Publication of JP2002543490A publication Critical patent/JP2002543490A/ja
Application granted granted Critical
Publication of JP4709394B2 publication Critical patent/JP4709394B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 プログラムコード変換を実行するエミュレータ(20)で使用する例外処理の方法。エミュレートされる(20)サブジェクトマシン(11)のレジスタ(X)は、適切にはターゲットマシンおよび/または任意の利用可能なターゲットレジスタのメモリ位置を使用して、ターゲットマシン(31)上で抽象レジスタ(X、X)のペアで表される。ペアのうち1つ(例えばRegX)はサブジェクトコード(10)のセクション(100)に入ったときの確定値を保持し、他方(例えばRegX)は、そのコードセクションの変換および実行中に更新される推測値を保持する。例外は、サブジェクトコードのセクション(100)に入ったときに、各抽象レジスタの確定バージョン(すなわちRegX)を使用して、仮想サブジェクトマシン(11)の状態を回復することによって処理される。サブジェクトコードの各セクション(100)を無事に完了した際に、レジスタ(X、X)ペアの機能を入れ換えて、各レジスタの確定バージョンを常に例外処理に使えるようにし、時間のかかるコピー動作および記憶動作を回避すると有利である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、一般にはコンピュータシステムのプログラムコード変換の分野に関
し、詳細には、限定はしないが、動的バイナリ変換を使用したエミュレーション
の分野に関する。
【0002】
【従来の技術】
コンピュータプログラムはいくつかの異なる形態をとる。通例、プログラムは
まず人間のプログラマが容易に理解できる高級言語で書かれる。プログラムは高
級言語から、コンピュータのプロセッサおよび関連する構成要素の制御により適
した低級言語へとコンパイルされる。
【0003】 しかし、プロセッサを機能させるために、プログラムコードは、ロード動作、
シフト演算、加算演算、および記憶動作などプロセッサの基本動作を指示するマ
シン可読形態で提供しなければならない。
【0004】 より高速に作動するために、プロセッサには、それぞれが基本命令のシーケン
スを表す拡張命令セットを使用するものもある。これは複雑命令セットコンピュ
ータ(CISC)として知られる。しかし、第1のプロセッサ専用に書かれた(
あるいはコンパイルされた)特定の命令セットを備えるプログラムコードは、各
種プロセッサ用の命令セット間の違いのために、大半の場合は他のタイプのプロ
セッサでは実行することができない。
【0005】 エミュレータは、第1のタイプのプロセッサ(「サブジェクト」プロセッサ)
のために書かれたプログラムコードを、第2タイプのプロセッサ(「ターゲット
」プロセッサまたは「ホスト」プロセッサ)で実行することを可能にするもので
ある。このエミュレーションプロセスの1形態は、サブジェクトプロセッサに適
した実行可能バイナリコードを、ターゲットプロセッサに適した実行可能バイナ
リコードに変換することからバイナリ変換として知られている。
【0006】 静的バイナリ変換は、プログラム全体を変換してから変換済みプログラムをタ
ーゲットプロセッサで実行するものであるが、これにはかなりの遅延が伴う。し
たがって、ターゲットプロセッサで直ちに実行できるように、動的バイナリ変換
を用いてソースプログラムの小セクションを変換するエミュレータが開発されて
いる。
【0007】 ソースコードの大きなセクションは実際には使用されないか、まれにしか使用
されないのでこれははるかに効率的である。動的変換システムを用いるエミュレ
ータは、プログラム実行と平行して、需要に応じてソースプログラムの必要な部
分だけを変換するために選択する。
【0008】 続いて、本発明の好ましい実施形態に用いることができるエミュレータ用の動
的バイナリ変換を簡単に要約して説明する。動的バイナリ変換分野のより詳細な
背景は、「PROGRAM CODE CONVERSION(プログラムコー
ド変換)」という名称の本出願人の同時係属出願GB98 22075.9に与
えられ、その内容は不用な重複を避けるために参照として本明細書に取り込む。
【0009】 動的バイナリ変換を実行する際、エミュレータはサブジェクトコードにとって
、サブジェクトコードが適切なサブジェクトプロセッサで実行されているように
見える。エミュレータは、エミュレータが仮想のサブジェクトマシンを提供する
ために、例えばサブジェクトプロセッサのレジスタを含めてサブジェクトマシン
を複製する。エミュレートされたレジスタを本明細書では「抽象レジスタ」と称
し、これはサブジェクトコードが使用するサブジェクトプロセッサのレジスタセ
ットに対応する。
【0010】 好ましい動的変換プロセスでは、エミュレータはまずサブジェクトコードの所
定の小セクションを、サブジェクトコードの命令を汎用フォーマットで表す中間
表現に変換し、任意選択で中間表現の最適化を行い、次いで最適化した中間表現
をターゲットプロセッサ用の実行可能バイナリコードに変換する。サブジェクト
コードの小セクションは、一意の入口点にある第1の命令で開始し、かつ一意の
出口点にある最後の命令で終了する「基本ブロック」に相当することが好ましい
。通例、ブロックの最後の命令はジャンプ命令、コール命令または分岐命令(条
件つきまたは無条件)である。
【0011】 バイナリ変換の分野では、例外処理に関連して問題が生じる。例外処理とは、
それを処理しなければ処理を続けられない条件が発生することを指す。これには
、サブジェクトコード中の命令として実行される明示的な例外処理(例えば、あ
るレジスタの値が第2のレジスタの値より大きい場合には例外が報告される)、
および例えば現在使用できないメモリページに対するメモリ読み取り操作または
書き込み操作の結果生じる例外処理が含まれる。どちらの場合も、サブジェクト
コードに書かれた例外ハンドラに例外処理が報告されることが望ましい。
【0012】 しかし、多くのサブジェクトマシンアーキテクチャ定義では、所定の規則セッ
トに従ってサブジェクトコード命令間の境界で例外処理を報告することを必要と
している。例えば、サブジェクトアーキテクチャ定義は、例外処理が報告された
場合、それより前のすべてのサブジェクト命令の効果が完了しており、実行され
ていないサブジェクトコードの最初の命令をその例外処理がポイントし、そのサ
ブジェクト命令またはどの後続の命令からの効果もまだ生じていないことを必要
とすることがある。さらに、特定プロセッサのアーキテクチャ定義は、異なるタ
イプの例外処理について異なる規則を有することもある。
【0013】 バイナリ変換のコンテキストでは、ターゲットプロセッサで実行される、例外
処理を報告させるターゲット命令自体は、サブジェクトコードに書かれた例外ハ
ンドラに例外処理を報告する条件を満たさないことは明白である。命令は大抵の
場合、それに対応するサブジェクトコードブロック中の命令の順序と比較すると
、ターゲットプロセッサでは異なる順序で実行される。これは、第1には、サブ
ジェクトコードがそのために書かれたサブジェクトプロセッサの命令セットと、
変換したターゲットコードを実行するターゲットプロセッサ間の違いが原因であ
り、第2には、通例は変換中に行われる中間表現の最適化が原因である。
【0014】 例外処理は、ターゲットプロセッサで変換済みターゲットコードを実行するの
に応答して発生する可能性があり、またターゲットプロセッサでのエミュレータ
コードの実行中、すなわち変換中にも生じる可能性がある。例外処理をサブジェ
クト例外ハンドラに報告するために、サブジェクトプロセッサのレジスタの正確
な状態を含めて、エミュレータによって表される仮想サブジェクトプロセッサの
状態はサブジェクト例外ハンドラから入手可能でなければならない。
【0015】 この問題に対するアプローチの1つとしては、仮想サブジェクトマシンを、変
換または実行しているコードセクションに入るときに適用された条件に戻すこと
、すなわち仮想サブジェクトマシンを、変換または実行しているサブジェクトコ
ード命令の現在のブロックへの入口点で用いられた(prevailing)条
件に戻すことがある。係るアプローチでは例外ハンドラはソースコードブロック
の命令を個々に順次ステップスルーして、例外処理を起こしている命令を識別す
ることができる。
【0016】 米国特許第5832205号(Kelly他)は、各サブジェクトコードセク
ションのエミュレート中に「作業」レジスタのセットを使用するエミュレータを
開示する。これら各作業レジスタの内容は、ゲート化したストアバッファを使用
して、サブジェクトコードセクションの最後に「オフィシャル」の仮想サブジェ
クトレジスタセットにコピーされる。したがって、サブジェクトコードセクショ
ンのエミュレート中に例外処理が発生した場合、これは作業レジスタにしか影響
せず、仮想サブジェクトマシンの状態は、そのサブジェクトコードセクションへ
の入口点で「オフィシャル」レジスタから回復することができる。
【0017】 しかしながら、上記従来技術のように、「作業」レジスタおよび「オフィシャ
ル」レジスタを使用すると、各サブジェクトコードセクションの終わりに「作業
」レジスタからそれに対応する「オフィシャル」レジスタに情報をコピーするた
め、ターゲットプロセッサにおけるエミュレーションプロセスのオーバーヘッド
が著しく増してしまう。
【0018】
【発明が解決しようとする課題】
本発明の目的は、エミュレータ中でサブジェクトレジスタを表す方法を提供す
ることであり、この方法はハンドラ規則に従って例外を正確にサブジェクト例外
ハンドラに報告することを可能にし、同時にエミュレータ中のオーバーヘッドを
最小限に抑える。本発明の他の目的は、サブジェクトレジスタを表すことにより
正確な例外処理を可能にするエミュレーションの方法および装置を提供すること
である。
【0019】
【課題を解決するための手段】
本発明によると、エミュレータ中でサブジェクトレジスタを表す方法が提供さ
れ、この方法は、(a)サブジェクトマシンのサブジェクトレジスタを表す抽象
レジスタを、ターゲットマシン内の第1の位置または第2の位置にマップするス
テップと、(b)第1の位置または第2の位置の一方の内容が、例外処理中にエ
ミュレータが使用するための抽象レジスタの確定的なバージョンを表し、同時に
第1の位置または第2の位置の他方が抽象レジスタの推測バージョンを表すよう
に、第1の位置と第2の位置の間で抽象レジスタのマッピングを入れ替えるステ
ップとからなる。
【0020】 サブジェクトコードの所定セクションについて、第1の位置または第2の位置
の一方が、そのセクションに入ったときの抽象レジスタの確定値を保持し、かつ
、第1の位置または第2の位置の他方が、そのセクション中に使用する抽象レジ
スタの推測現行値を保持することが好ましい。
【0021】 サブジェクトコードセクションの最後に達すると、第1の位置または第2の位
置のそれまでとは逆の位置に抽象レジスタがマップされることが好ましい。その
サブジェクトコードセクションで例外が発生していないことが確認されると、推
測バージョンが確定的なものになる。抽象レジスタの推測バージョンの内容が所
定のサブジェクトコードセクション中に更新されている場合にのみ、マッピング
変更ステップが行われることが理想的である。
【0022】 ステップ(a)は、(a1)それぞれがサブジェクトマシンのレジスタを表す
複数の抽象レジスタを提供するステップと、(a2)複数のその抽象レジスタを
それぞれ、ターゲットマシン内の第1の位置セットの各位置か、または第2の位
置セットの各位置にマップするステップを含むことが好ましい。ステップ(b)
は、第1の位置セットと第2の位置セットそれぞれの間で、各抽象レジスタにつ
いてのマッピングを入れ替えるステップを含むことが好ましい。
【0023】 第1の位置および/または第2の位置は、ターゲットマシン内のメモリ位置で
あることが好ましい。あるいは、第1の位置および/または第2の位置がターゲ
ットマシンのレジスタであることが好ましい。
【0024】 本発明に係る方法は、動的バイナリ変換を実行するエミュレータとともに使用
することが好ましい。サブジェクトコードの所定のセクションが、サブジェクト
コードの1つまたは複数の基本ブロックを表すと適当である。
【0025】 また本発明によると、サブジェクトプロセッサに適したサブジェクトコードと
ターゲットプロセッサに適したターゲットコードの間でプログラムコード変換を
行うエミュレータが例外処理で使用する方法が提供される。
【0026】 この方法は、それぞれがサブジェクトプロセッサのレジスタを表す少なくとも
1つの抽象レジスタ(X、Y)を提供するステップと、(b)前記1つの抽象レ
ジスタまたは各抽象レジスタを、ターゲットプロセッサ内の対応する位置のペア
にマップするステップと、(c)サブジェクトコードの所定のセクションについ
て、第1の位置または第2の位置の一方が、例外処理中にエミュレータが使用す
る、そのセクションに入ったときの抽象レジスタの確定値を保持し、一方、第1
の位置または第2の位置の他方が、そのセクション中にエミュレータが更新を行
うための抽象レジスタの推測現行値を保持するように、位置ペアの第1の位置と
位置ペアの第2の位置の間で前記1つの抽象レジスタまたは各抽象レジスタのマ
ッピングを入れ替えるステップを含む。
【0027】 さらに、本発明の他の態様によると、本明細書中の著述内容による方法を実行
するためのエミュレータ方法およびエミュレータ装置が提供される。本発明はま
た、本明細書中の任意の著述内容による方法を実行するようにプログラムした場
合はコンピュータに、本明細書中の任意の著述内容による方法を実行するための
コンピュータプログラムに、および本明細書中の任意の著述内容による方法を実
行するためのコンピュータ可読命令を含んだコンピュータプログラム製品にわた
る。
【0028】
【発明の実施の形態】
本発明をよりよく理解するため、本発明の実施形態がどのように実施されるか
を添付の概略図面を参照しつつ示す。
【0029】 図1を参照すると典型的な従来技術による配列が示され、これはサブジェクト
プロセッサ11でサブジェクトコード10が直接実行されるサブジェクトマシン
の構成を表している。このサブジェクトコードは実行可能バイナリコードである
と適切である。しかし、当分野の技術者には知られているように、サブジェクト
コードは、サブジェクトコード10とサブジェクトプロセッサ11の間に中間層
(コンパイラなど)を有する任意の適切な言語で表すことが可能である。
【0030】 次いで図2を参照すると、典型的な従来技術による構成が示され、これはサブ
ジェクトコード10をターゲットプロセッサ31が実行することを可能にする中
間層としてバイナリ変換タイプエミュレータ20を使用する例を表している。本
発明の好ましい実施形態は特に、サブジェクトコード10を、ターゲットプロセ
ッサ31で実行可能なターゲットコード30に動的バイナリ変換するエミュレー
タ20とともに使用することを目的とする。
【0031】 次いで図3を参照すると、好ましい実施形態のエミュレータ20をより詳しく
示しており、これはフロントエンド21、コア22、およびバックエンド23か
ら構成される。
【0032】 フロントエンド21は、エミュレートするサブジェクトプロセッサ11固有の
構成になっている。フロントエンド21は、サブジェクトコード10の命令を、
サブジェクトコードの基本ブロックごとに総称的な中間表現に変換する。基本ブ
ロックはそれぞれ、一意の入口点を表す最初の命令と、一意の出口点にある最後
の命令(ジャンプ命令、コール命令、あるいは分岐命令など)との間に連続した
命令のセットを含むことが適切である。特に好ましい実施形態では、エミュレー
タ20は、コード生成および最適化のために1つの単位として選択された2つ以
上の基本ブロックからなるグループブロックを選択する。さらに、エミュレータ
20は、異なる入口条件下で、サブジェクトコードの同一の基本ブロックを表す
アイソブロックをサポートする。サブジェクトコード10の各所定セクションは
中間表現のブロック(「IRブロック」)になる。
【0033】 コア22は、本明細書では詳細に説明する必要のない最適化技術を用いて、フ
ロントエンド21が生成した各IRブロックを最適化する。バックエンド23は
最適化済みのIRブロックをコア22から持って行き、ターゲットプロセッサ3
1で実行可能なターゲットコード30を生成する。
【0034】 図4に示すように、使用の際は、サブジェクトコード10の最初の所定セクシ
ョンは例えば基本ブロック100として識別され、変換モードのターゲットプロ
セッサ31上で実行されるエミュレータ20によって変換される。ターゲットプ
ロセッサ31は次いで、ターゲットコード30の対応する最適化済みかつ変換済
みのブロック300を実行する。
【0035】 好ましいエミュレータ20は、図3のコア22に提供されると適切である複数
の抽象レジスタを含み、これはサブジェクトプロセッサ11でサブジェクトコー
ド10を実行するために使用される物理レジスタを表す。抽象レジスタは、サブ
ジェクトプロセッサレジスタに対するサブジェクトコード命令の予測される効果
を表すことにより、エミュレート中のサブジェクトプロセッサ11の状態を定義
する。
【0036】 図5に示すように、好ましい実施形態では、ここでセットAおよびセットBと
称する2セットの抽象レジスタが提供される。初期化時に、これら2セットのう
ち第1のセット、例えばセットAは「確定」値を保持している。すなわちセット
Aのレジスタは、エミュレートされるサブジェクトプロセッサ11の物理レジス
タの予測される内容を表す、有効であると知られている初期値を保持するものと
定義される。
【0037】 この例でセットBと称する抽象レジスタの第2のセットは、初め「推測」値を
表すように定義される。すなわち、初期化時に抽象レジスタの第2セット(セッ
トB)もサブジェクトプロセッサ11の物理レジスタの予測される初期内容を保
持しているが、このセットBの値は有効であるとは信頼されない。
【0038】 変換プロセス中に、エミュレータ20は抽象レジスタの推測セット(すなわち
セットB)を使用するが、この際その内容を更新して、サブジェクトコード10
のブロック100の実行後のサブジェクトプロセッサ11の物理レジスタの予測
状態を示す。最初のブロックの変換中には、抽象レジスタの確定セット(すなわ
ちセットA)の内容は変更されない。
【0039】 基本ブロック100の変換中または実行中に例外が発生した場合、エミュレー
タ20はブロック100に入ると、確定データを保持しているとマークされた抽
象レジスタ(すなわちセットA)を使用してサブジェクトレジスタの状態を直ち
に回復する。すると例外ハンドラはソースコード10のブロック100の命令を
順次ステップスルーして、その例外を引き起こしている命令を識別することがで
きる。ここで、抽象レジスタの状態は各命令の後に更新される。したがって、そ
の例外の原因となっているサブジェクトコード命令を識別すると、エミュレータ
によって表される仮想サブジェクトマシンの状態が、そのマシンの規則に従って
サブジェクトコード例外ハンドラに報告される。サブジェクトコード例外ハンド
ラは処理プロセスに従って例外を回復し、その例外に適したサブジェクトコード
中のポイントに戻る。例えば、例外ハンドラが、エミュレータをソースコード1
0の次の未実行命令に戻すことが一般的である。変換プロセスまたは実行プロセ
スはそのポイントから継続させることができる。
【0040】 ターゲットコード300の変換済みブロックを正常に実行すると、推測値を保
持するセット(すなわちセットB)のレジスタが更新され、サブジェクトコード
10の基本ブロック100の終わりにおけるエミュレート中のサブジェクトプロ
セッサ11の対応レジスタの予測内容を保持することになる。この時点で、第1
セット(すなわちセットA)の抽象レジスタは、サブジェクトコードのブロック
100に入ったときのサブジェクトプロセッサの状態を保持しており、第2セッ
ト(すなわちセットB)の抽象レジスタは、ブロック100の終わりにおける状
態を保持している。ブロック100は正常に変換および実行されているので、今
度はセットBの抽象レジスタが確定値を保持していると定義され、セットAの抽
象レジスタが推測値を保持していると定義される。
【0041】 セットAおよびセットBの抽象レジスタはレジスタペアを形成することが適切
である。セットAの各レジスタは、セットBに対応するパートナレジスタを有す
る。ペアの一方がその抽象レジスタの確定値を保持し、他方が推測値を保持する
。コードの各セクションの終わりにこれら2レジスタの定義を逆にし、次のコー
ドセクション中にはペアの各レジスタが反対の機能を実行するようにする。各レ
ジスタペアの2レジスタの機能を入れ替えることにより、現在のコードセクショ
ンについて入口条件を維持する単純で明快な方法が提供される。
【0042】 他の利点としては、各コードセクションを正常に完了した際に、すべての抽象
レジスタの状態を更新しなくともよい。そのセクション中に変更されたレジスタ
だけを更新し、その新機能を示せばよい。特定の抽象レジスタの値がコードセク
ション中に変更されない場合、その値は次のセクション中もそのまま保たれ、同
じ確定機能または推測機能を適宜実行する。
【0043】 次いで図5および図6を参照して、単純化した例示的実施形態を説明する。図
5のステップ1で、サブジェクトプロセッサ11のレジスタXを表す第1抽象レ
ジスタ(RegX)は確定値を保持し、第2抽象レジスタ(RegX)は推
測値を保持している。抽象レジスタはメモリ位置内に保持されることが適当であ
り、レジスタXの作業マップは推測バージョンRegXの位置をポイントして
いる。同様に、この例のレジスタYについては、初めRegYが確定で、Re
gYが推測である。サブジェクトコード10のブロック100など1つまたは
複数の命令の実行後、抽象レジスタのマッピングは図6に示すようにステップ2
で更新される。この例では、推測レジスタYの内容が変わり、したがって今度は
RegYが後続ブロックで使用される確定バージョンと見なされる。レジスタ
Yのマップは更新され、RegYを推測バージョンとしてポイントする。それ
に対して、レジスタXはブロック100中の1つまたは複数の命令によっては影
響されておらず、したがって、RegXは確定バージョンのままであり、Re
gXは推測バージョンのままである。
【0044】 コードセクション間でレジスタ内容の連続性を可能にするには、現在のコード
セクション中に出会う最初の読み取り操作が、各特定抽象レジスタの確定バージ
ョンを使用することが適切である。確定バージョンは、現在のコードセクション
に入ったときのそのレジスタの状態を表しており、したがってそれより前のセク
ションとの連続性を維持する。その後の読み取り操作も、書き込み操作に出会う
まで各抽象レジスタの確定バージョンを使用する。最初の書き込み操作は、各特
定抽象レジスタの推測バージョンを使用する。したがって確定バージョンは変更
されず、今度は推測バージョンが関連抽象レジスタの現行値を保持する。その後
の読み取り操作および書き込み操作は、そのコードセクションの残りにわたって
推測バージョンを使用する。
【0045】 上記のように、本発明の好ましい実施形態では、サブジェクトプロセッサ11
の各物理レジスタに対応する抽象レジスタが提供され、この抽象レジスタは2つ
の所定位置にマップされている。抽象レジスタ位置の各ペアのうち1つは確定値
を保持し、他方は推測値を保持する。これら2つの位置の機能を容易に逆転させ
、確定的な内容を保持する位置を入れ換える。したがって時間のかかるコピー動
作が回避される。
【0046】 好ましい実施形態では、各抽象レジスタの2つのバージョンは2セットのメモ
リ位置にマップすることによって実現され、確定バージョンと推測バージョンの
入れ換えは、これら2つの位置間でメモリマッピングを入れ換えることによって
実現される。サブジェクトプロセッサの物理レジスタを複製するためにターゲッ
トマシン内に保持されている抽象レジスタのマップを更新することは、変換時に
迅速かつ簡単に実行され、変換コードをおそらくは多数回実行する際にオーバー
ヘッドが生じない。
【0047】 別の好ましい実施形態では、メモリ位置のペアを使用する代わりに、抽象レジ
スタの確定バージョンおよび推測バージョンの一方または両方をターゲットマシ
ンレジスタのペアに(十分な容量を持ったターゲットマシンに)記憶することが
できる。
【0048】 本発明の好ましい実施形態の一態様は、分岐、特にサブジェクトコードの現在
のブロックから以前に変換されたブロックへの分岐(あるいはループ)間にわた
ってレジスタ参照を固定するという問題を扱う。コードブロック間の分岐は実際
には一般的に見られるものであるが、しばしばサブジェクトコード内の複数の他
の位置から同じコードブロックを参照することを伴い、それにより異なる入口条
件を生成してしまう。解決法の1つは、抽象レジスタの確定バージョンから推測
バージョンに内容をコピーし、これにより入口条件を、以前に変換したコードブ
ロックが使用するのに適したものにすることである。例えば、ブロックを最初に
変換したとき、第1のバージョンRegXは確定であった。したがって、変換
したコードの同じブロックを後に再び使用することになり、抽象レジスタの第2
バージョンRegXが確定である条件の下でそのブロックに達した場合、継続
する前にレジスタXの内容をレジスタRegXにコピーしなければならない
。これは、以前に変換したコードブロックへの分岐を実施する際にコピーオーバ
ーヘッドを生じさせる。本発明の実施形態で用いる好ましい解決法は、ブロック
を今度は分岐時に用いられていた条件で再度変換し、以前に変換したコードの複
数のバージョンをそれぞれ入口条件の特定セットと関連付けた状態で存在させる
ことによりこのコピー動作を回避している。より多くの変換作業が必要となるが
、実行中のコピーオーバーヘッドは回避される。一般に、サブジェクトコードセ
クション(任意の数の基本ブロックを含む)をもう1度変換すると、そのループ
中に奇数回更新された特定レジスタに必要とされていた補償コピーを行わずに済
む。
【0049】 上記の実施形態は動的バイナリ変換を用いるエミュレータに関連するが、当方
法は、大きなコードセクションを実行前に変換する静的変換にも応用することが
できる。静的変換では、変換のために選択されたコードセクションは通例、プロ
グラム全体またはプログラムの大半部分を表す。それでも、コード変換および変
換コードの実行中に生じる例外を処理し、少なくともそのコードセクションに入
ったときの状態から例外処理を実行できるようにする上記の方法を使用すること
は都合がよい。さらに当方法は、サブジェクトマシンおよびターゲットマシンが
、同一のまたは少なくとも互換性のある命令セットおよびアーキテクチャを有す
るプログラムコード最適化に応用することができる。
【0050】 本発明は、上記の方法を実行するようにプログラムされた場合はコンピュータ
に、上記の方法を実行するためのコンピュータプログラムに、および上記の方法
を実行するためのコンピュータ可読命令を保持するコンピュータプログラム製品
にわたる。
【0051】 読者の注意は、本願との関連で本明細書と同時にあるいは本明細書より以前に
提出され、本明細書とともに公衆の便覧に公開されるすべての書類および文書に
向けられ、これら書類および文書すべての内容は参照として本明細書に組み込む
【0052】 本明細書(添付の請求項、要約、および図面を含む)に開示したすべてのフィ
ーチャ、および/またはここに開示する方法またはプロセスのすべてのステップ
は、そのようなフィーチャおよび/またはステップの少なくとも一部が相互に排
他的である組み合わせを除いて、どのような組み合わせで組み合わせてもよい。
【0053】 本明細書(添付請求項、要約、および図面を含む)に開示した各フィーチャは
、特別に明確に述べない限り、同じ目的、同等の目的、あるいは類似の目的を満
たす代替フィーチャで置き換えてもよい。したがって、特別に明確に述べない場
合は、開示する各フィーチャは同等のフィーチャまたは類似のフィーチャの一般
的なシリーズの一例にすぎない。
【0054】 本発明は、前述した実施形態(1つまたは複数)の詳細には限定しない。本発
明は、本明細書(添付請求項、要約、および図面をいずれも含む)に開示するフ
ィーチャの任意の新しいフィーチャ、または任意の新しい組み合わせ、またはこ
こに開示する方法またはプロセスのステップの任意の新しいステップ、あるいは
任意のその新しい組み合わせにわたる。
【図面の簡単な説明】
【図1】 従来技術による典型的なサブジェクトプロセッサの構成の図であ
る。
【図2】 バイナリ変換を使用する典型的なエミュレータの図である。
【図3】 本発明の好ましい実施形態で使用可能なバイナリ変換を使用する
エミュレータの構成を表す図である。
【図4】 使用される好ましいバイナリ変換タイプエミュレータの図である
【図5】 例示的抽象レジスタセットの図である。
【図6】 例示的抽象レジスタセットの図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AG,AL,AM,AT,AU, AZ,BA,BB,BG,BR,BY,CA,CH,C N,CR,CU,CZ,DE,DK,DM,DZ,EE ,ES,FI,GB,GD,GE,GH,GM,HR, HU,ID,IL,IN,IS,JP,KE,KG,K P,KR,KZ,LC,LK,LR,LS,LT,LU ,LV,MA,MD,MG,MK,MN,MW,MX, NO,NZ,PL,PT,RO,RU,SD,SE,S G,SI,SK,SL,TJ,TM,TR,TT,TZ ,UA,UG,US,UZ,VN,YU,ZA,ZW (72)発明者 サンダーム ジョン ハロルド イギリス国、エム13 9ピーエル、マンチ ェスター、オックスフォード・ロード、ヴ ィクトリア ユニバーシティ オブ マン チェスター内 (72)発明者 ソウログロウ ジェイソン イギリス国、エム13 9ピーエル、マンチ ェスター、オックスフォード・ロード、ヴ ィクトリア ユニバーシティ オブ マン チェスター内 Fターム(参考) 5B081 DD01 【要約の続き】 である。

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 エミュレータ(20)中でサブジェクトレジスタを表す方法
    であって、 (a) サブジェクトマシン(11)のサブジェクトレジスタを表す抽象レジ
    スタ(X)を、ターゲットマシン(31)内の第1の位置(X)または第2の
    位置(X)にマップするステップと、 (b) 第1の位置または第2の位置の一方(X、X)の内容が、例外処
    理中にエミュレータが使用する抽象レジスタの確定バージョンを表し、第1の位
    置または第2の位置の他方(X、X)が抽象レジスタの推測バージョンを表
    すように、第1の位置と第2の位置(X、X)間で抽象レジスタ(X)のマ
    ッピングを入れ替えるステップとを含む方法。
  2. 【請求項2】 サブジェクトコードの所定セクション(100)について、
    第1の位置または第2の位置の一方(X、X)が、そのセクション(100
    )に入ったときの抽象レジスタ(X)の確定値を保持し、第1の位置または第2
    の位置の他方(X、X)が、そのセクション(100)中に使用するための
    抽象レジスタ(X)の推測現行値を保持する請求項1に記載の方法。
  3. 【請求項3】 マッピング入れ替えのステップ(b)が、所定のサブジェク
    トコードセクション(100)の最後に達すると実行される請求項2に記載の方
    法。
  4. 【請求項4】 マッピング入れ替えステップ(b)が、抽象レジスタ(X)
    の推測バージョンの内容が所定のサブジェクトコードセクション(100)中に
    更新されている場合にのみ実行される請求項3に記載の方法。
  5. 【請求項5】 ステップ(a)が、 (a1) それぞれがサブジェクトマシン(11)のレジスタを表す複数の抽
    象レジスタ(X、Y)を提供するステップと、 (a2) 複数の抽象レジスタ(X、Y)をそれぞれ、ターゲットマシン内の
    第1の位置セットの各位置(X、X)か、または第2の位置セットの各位置
    (X、Y)にマップするステップとを含み、 ステップ(b)が、第1の位置セットと第2の位置セットの各セットの各位置
    の間で、各抽象レジスタ(X、Y)についてのマッピングを入れ替えるステップ
    を含む、請求項1から4のいずれか一項に記載の方法。
  6. 【請求項6】 第1の位置(X)および第2の位置(X)がそれぞれ、
    メモリ位置またはターゲットレジスタである請求項1から5のいずれか一項に記
    載の方法。
  7. 【請求項7】 所定のサブジェクトコードセクション(100)がサブジェ
    クトコードの1つまたは複数の基本ブロックを表す請求項2から6のいずれか一
    項に記載の方法。
  8. 【請求項8】 動的バイナリ変換を実行するエミュレータ(20)で使用す
    るためのものである請求項2から7のいずれか一項に記載の方法。
  9. 【請求項9】 サブジェクトプロセッサ(11)に適したサブジェクトコー
    ド(10)と、ターゲットプロセッサ(31)に適したターゲットコード(30
    )間でプログラムコード変換を行うエミュレータ(20)が例外処理で使用する
    方法であって、 (a) それぞれがサブジェクトプロセッサ(11)のレジスタを表す少なく
    とも1つの抽象レジスタ(X、Y)を提供するステップと、 (b) 前記1つの抽象レジスタまたは各抽象レジスタ(X、Y)をそれぞれ
    、ターゲットプロセッサ内の対応する位置ペア(X、X、Y、Y)にマ
    ップするステップと、 (c) 所定のサブジェクトコードセクション(100)について、第1の位
    置または第2の位置の一方(例えばX、Y)が、例外処理中にエミュレータ
    (20)が使用するためのそのセクションに入ったときの抽象レジスタ(X、Y
    )の確定値を保持し、かつ、第1の位置または第2の位置の他方(例えばX
    )が、そのセクション中にエミュレータ(20)が更新を行うための抽象レ
    ジスタ(X、Y)の推測現行値を保持するように、位置ペアの第1のペア(X 、Y)と位置ペアの第2のペア(X、Y)の間で各抽象レジスタ(X、Y
    )のマッピングを入れ替えるステップとを含む方法。
  10. 【請求項10】 マッピング入れ替えステップ(c)が、サブジェクトコー
    ドの所定セクション(100)の終わりに達すると実行される請求項9に記載の
    方法。
  11. 【請求項11】 マッピング入れ替えステップ(c)が、サブジェクトコー
    ドの所定セクション(100)中に更新された前記1つの抽象レジスタまたは各
    抽象レジスタ(X、Y)についてのみ実行される請求項10に記載の方法。
  12. 【請求項12】 請求項1から11のいずれか一項に記載の方法を実行する
    ためのエミュレータ。
  13. 【請求項13】 請求項1から11のいずれか一項に記載の方法を実行する
    ためのエミュレータ装置。
  14. 【請求項14】 プログラムすると請求項1から11のいずれか一項に記載
    の方法を実行するコンピュータ。
  15. 【請求項15】 請求項1から11のいずれか一項に記載の方法を実行する
    ためのコンピュータプログラム。
  16. 【請求項16】 請求項1から11のいずれか一項に記載の方法を実行する
    ためのコンピュータ可読命令を含んだコンピュータプログラム製品。
JP2000614118A 1999-04-27 2000-04-26 プログラムコード変換において使用する例外処理の方法および装置 Expired - Lifetime JP4709394B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US29975199A 1999-04-27 1999-04-27
GB9909615.8 1999-04-27
GB9909615A GB2349486B (en) 1999-04-27 1999-04-27 Exception handling in program code conversion.
US09/299,751 1999-04-27
US9909615.8 1999-04-27
PCT/GB2000/001439 WO2000065440A2 (en) 1999-04-27 2000-04-26 Exception handling method and apparatus for use in program code conversion

Publications (2)

Publication Number Publication Date
JP2002543490A true JP2002543490A (ja) 2002-12-17
JP4709394B2 JP4709394B2 (ja) 2011-06-22

Family

ID=26315473

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000614118A Expired - Lifetime JP4709394B2 (ja) 1999-04-27 2000-04-26 プログラムコード変換において使用する例外処理の方法および装置

Country Status (4)

Country Link
EP (1) EP1183601A2 (ja)
JP (1) JP4709394B2 (ja)
AU (1) AU4580300A (ja)
WO (1) WO2000065440A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006525572A (ja) * 2003-05-02 2006-11-09 トランジティブ リミテッド プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
JP2007525737A (ja) * 2003-07-04 2007-09-06 トランジティブ リミテッド 調整可能な正確度の例外処理を行なうための方法および装置
JP2009282774A (ja) * 2008-05-22 2009-12-03 Fujitsu Ltd エミュレーションプログラム、エミュレーション装置およびエミュレーション方法
JP2010506250A (ja) * 2006-10-02 2010-02-25 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステムおよびレジスタウインドウアーキテクチャをサポートするようにコンピュータシステムを適合させる方法
JP2014532248A (ja) * 2012-09-21 2014-12-04 インテル コーポレイション バイナリトランスレーションを実行する方法及びシステム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002042898A2 (en) * 2000-11-20 2002-05-30 Zucotto Wireless, Inc. Interpretation loop for object oriented processor
US7480902B2 (en) * 2004-07-08 2009-01-20 Intel Corporation Unwind information for optimized programs
CN102141929B (zh) * 2010-10-21 2014-05-07 华为技术有限公司 应用程序的运行方法、模拟器、宿主机及系统

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63156236A (ja) * 1986-12-19 1988-06-29 Toshiba Corp レジスタ装置
JPS63245529A (ja) * 1987-03-31 1988-10-12 Toshiba Corp レジスタ退避復元装置
JPH04326126A (ja) * 1991-04-25 1992-11-16 Fuji Xerox Co Ltd ディジタル計算機のレジスタファイルおよびそれを用いた命令実行方式
JPH04355843A (ja) * 1991-05-31 1992-12-09 Nec Corp 記憶装置
JPH06180653A (ja) * 1992-10-02 1994-06-28 Hudson Soft Co Ltd 割り込み処理方法および装置
JPH06230961A (ja) * 1993-01-04 1994-08-19 Motorola Inc データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法
JPH0756760A (ja) * 1993-08-10 1995-03-03 Fujitsu Ltd リカバリ装置
JPH0773049A (ja) * 1993-09-07 1995-03-17 Nec Corp プログラムのシミュレータ装置
JPH09198255A (ja) * 1996-01-02 1997-07-31 Internatl Business Mach Corp <Ibm> オペレーティング・システムに影響を与えないエミュレーション・コンテキストの保管と復元を行う方法およびシステム
JPH10240524A (ja) * 1997-02-27 1998-09-11 Internatl Business Mach Corp <Ibm> 異なる命令コード相互間の動的変換装置及び方法
JPH10301778A (ja) * 1997-03-31 1998-11-13 Internatl Business Mach Corp <Ibm> レジスタの名前変更を管理する方法および装置
WO1998059292A1 (en) * 1997-06-25 1998-12-30 Transmeta Corporation Improved microprocessor

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63156236A (ja) * 1986-12-19 1988-06-29 Toshiba Corp レジスタ装置
JPS63245529A (ja) * 1987-03-31 1988-10-12 Toshiba Corp レジスタ退避復元装置
JPH04326126A (ja) * 1991-04-25 1992-11-16 Fuji Xerox Co Ltd ディジタル計算機のレジスタファイルおよびそれを用いた命令実行方式
JPH04355843A (ja) * 1991-05-31 1992-12-09 Nec Corp 記憶装置
JPH06180653A (ja) * 1992-10-02 1994-06-28 Hudson Soft Co Ltd 割り込み処理方法および装置
JPH06230961A (ja) * 1993-01-04 1994-08-19 Motorola Inc データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法
JPH0756760A (ja) * 1993-08-10 1995-03-03 Fujitsu Ltd リカバリ装置
JPH0773049A (ja) * 1993-09-07 1995-03-17 Nec Corp プログラムのシミュレータ装置
JPH09198255A (ja) * 1996-01-02 1997-07-31 Internatl Business Mach Corp <Ibm> オペレーティング・システムに影響を与えないエミュレーション・コンテキストの保管と復元を行う方法およびシステム
JPH10240524A (ja) * 1997-02-27 1998-09-11 Internatl Business Mach Corp <Ibm> 異なる命令コード相互間の動的変換装置及び方法
JPH10301778A (ja) * 1997-03-31 1998-11-13 Internatl Business Mach Corp <Ibm> レジスタの名前変更を管理する方法および装置
WO1998059292A1 (en) * 1997-06-25 1998-12-30 Transmeta Corporation Improved microprocessor

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006525572A (ja) * 2003-05-02 2006-11-09 トランジティブ リミテッド プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
JP2007249991A (ja) * 2003-05-02 2007-09-27 Transitive Ltd プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
JP4534234B2 (ja) * 2003-05-02 2010-09-01 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
US7921413B2 (en) 2003-05-02 2011-04-05 International Business Machines Corporation Architecture for generating intermediate representations for program code conversion
US8104027B2 (en) 2003-05-02 2012-01-24 International Business Machines Corporation Architecture for generating intermediate representations for program code conversion
JP2007525737A (ja) * 2003-07-04 2007-09-06 トランジティブ リミテッド 調整可能な正確度の例外処理を行なうための方法および装置
JP2010506250A (ja) * 2006-10-02 2010-02-25 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステムおよびレジスタウインドウアーキテクチャをサポートするようにコンピュータシステムを適合させる方法
JP2009282774A (ja) * 2008-05-22 2009-12-03 Fujitsu Ltd エミュレーションプログラム、エミュレーション装置およびエミュレーション方法
US8543371B2 (en) 2008-05-22 2013-09-24 Fujitsu Limited Write-protected storage medium, write-protected apparatus, and write-protected environment
JP2014532248A (ja) * 2012-09-21 2014-12-04 インテル コーポレイション バイナリトランスレーションを実行する方法及びシステム

Also Published As

Publication number Publication date
WO2000065440A3 (en) 2001-01-25
JP4709394B2 (ja) 2011-06-22
AU4580300A (en) 2000-11-10
EP1183601A2 (en) 2002-03-06
WO2000065440A2 (en) 2000-11-02

Similar Documents

Publication Publication Date Title
JP3872809B2 (ja) 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置
KR100385426B1 (ko) 개선된 마이크로프로세서내의 메모리 데이터 얼라이징 장치 및 방법
KR950033859A (ko) 부동 소숫점 유니트에서의 다이나믹 레지스터 관리 장치 및 방법
GB2476360A (en) Passing data from a CPU to a graphics processor by writing multiple versions of the data in a shared memory
JPH05150981A (ja) データ処理装置
JP3606561B2 (ja) 第1ビット・アーキテクチャの命令を第2ビット・アーキテクチャの命令に変換する方法、システム、プログラムおよびデータ構造
JPH06259253A (ja) データプロセッサおよびその動作方法
KR20010014094A (ko) 개선된 마이크로프로세서
EP0669579A2 (en) Coherence index generation for use by an input/output adapter
US6725361B1 (en) Method and apparatus for emulating a floating point stack in a translation process
JP2002543490A (ja) プログラムコード変換において使用する例外処理の方法および装置
US7103754B2 (en) Computer instructions for having extended signed displacement fields for finding instruction operands
US7219335B1 (en) Method and apparatus for stack emulation during binary translation
US7353163B2 (en) Exception handling method and apparatus for use in program code conversion
CN110569105A (zh) 分布式虚拟机自适应内存一致性协议及其设计方法、终端
CN113778564B (zh) 一种高效执行evm智能合约的方法、设备及储存介质
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
CN107133017A (zh) 用于运行微处理器的方法
JP2001519954A (ja) 一時的にターゲット・プロセッサの状態を保持する装置を備えたホスト・マイクロプロセッサ
US20080077777A1 (en) Register renaming for instructions having unresolved condition codes
US7694301B1 (en) Method and system for supporting input/output for a virtual machine
US20230030788A1 (en) Computer-readable recording medium storing translation program and translation method
JP2000020319A (ja) プログラム実行装置、その制御方法および記憶媒体
WO2017087291A1 (en) Efficient emulation of guest architecture instructions
JPS63251835A (ja) ベクトル処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070206

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090824

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20090824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100527

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100715

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100715

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110204

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110204

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110210

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110301

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20110301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110318

R150 Certificate of patent or registration of utility model

Ref document number: 4709394

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

EXPY Cancellation because of completion of term