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
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 23
- 238000013507 mapping Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 3
- 230000017105 transposition Effects 0.000 claims 1
- 238000013519 translation Methods 0.000 abstract description 14
- 230000014616 translation Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- HRANPRDGABOKNQ-ORGXEYTDSA-N (1r,3r,3as,3br,7ar,8as,8bs,8cs,10as)-1-acetyl-5-chloro-3-hydroxy-8b,10a-dimethyl-7-oxo-1,2,3,3a,3b,7,7a,8,8a,8b,8c,9,10,10a-tetradecahydrocyclopenta[a]cyclopropa[g]phenanthren-1-yl acetate Chemical compound C1=C(Cl)C2=CC(=O)[C@@H]3C[C@@H]3[C@]2(C)[C@@H]2[C@@H]1[C@@H]1[C@H](O)C[C@@](C(C)=O)(OC(=O)C)[C@@]1(C)CC2 HRANPRDGABOKNQ-ORGXEYTDSA-N 0.000 description 1
- 101000742291 Bifidobacterium adolescentis (strain ATCC 15703 / DSM 20083 / NCTC 11814 / E194a) Reducing end xylose-releasing exo-oligoxylanase Proteins 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003631 expected effect Effects 0.000 description 1
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract 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
Description
し、詳細には、限定はしないが、動的バイナリ変換を使用したエミュレーション
の分野に関する。
まず人間のプログラマが容易に理解できる高級言語で書かれる。プログラムは高
級言語から、コンピュータのプロセッサおよび関連する構成要素の制御により適
した低級言語へとコンパイルされる。
シフト演算、加算演算、および記憶動作などプロセッサの基本動作を指示するマ
シン可読形態で提供しなければならない。
スを表す拡張命令セットを使用するものもある。これは複雑命令セットコンピュ
ータ(CISC)として知られる。しかし、第1のプロセッサ専用に書かれた(
あるいはコンパイルされた)特定の命令セットを備えるプログラムコードは、各
種プロセッサ用の命令セット間の違いのために、大半の場合は他のタイプのプロ
セッサでは実行することができない。
のために書かれたプログラムコードを、第2タイプのプロセッサ(「ターゲット
」プロセッサまたは「ホスト」プロセッサ)で実行することを可能にするもので
ある。このエミュレーションプロセスの1形態は、サブジェクトプロセッサに適
した実行可能バイナリコードを、ターゲットプロセッサに適した実行可能バイナ
リコードに変換することからバイナリ変換として知られている。
ーゲットプロセッサで実行するものであるが、これにはかなりの遅延が伴う。し
たがって、ターゲットプロセッサで直ちに実行できるように、動的バイナリ変換
を用いてソースプログラムの小セクションを変換するエミュレータが開発されて
いる。
されないのでこれははるかに効率的である。動的変換システムを用いるエミュレ
ータは、プログラム実行と平行して、需要に応じてソースプログラムの必要な部
分だけを変換するために選択する。
的バイナリ変換を簡単に要約して説明する。動的バイナリ変換分野のより詳細な
背景は、「PROGRAM CODE CONVERSION(プログラムコー
ド変換)」という名称の本出願人の同時係属出願GB98 22075.9に与
えられ、その内容は不用な重複を避けるために参照として本明細書に取り込む。
、サブジェクトコードが適切なサブジェクトプロセッサで実行されているように
見える。エミュレータは、エミュレータが仮想のサブジェクトマシンを提供する
ために、例えばサブジェクトプロセッサのレジスタを含めてサブジェクトマシン
を複製する。エミュレートされたレジスタを本明細書では「抽象レジスタ」と称
し、これはサブジェクトコードが使用するサブジェクトプロセッサのレジスタセ
ットに対応する。
定の小セクションを、サブジェクトコードの命令を汎用フォーマットで表す中間
表現に変換し、任意選択で中間表現の最適化を行い、次いで最適化した中間表現
をターゲットプロセッサ用の実行可能バイナリコードに変換する。サブジェクト
コードの小セクションは、一意の入口点にある第1の命令で開始し、かつ一意の
出口点にある最後の命令で終了する「基本ブロック」に相当することが好ましい
。通例、ブロックの最後の命令はジャンプ命令、コール命令または分岐命令(条
件つきまたは無条件)である。
それを処理しなければ処理を続けられない条件が発生することを指す。これには
、サブジェクトコード中の命令として実行される明示的な例外処理(例えば、あ
るレジスタの値が第2のレジスタの値より大きい場合には例外が報告される)、
および例えば現在使用できないメモリページに対するメモリ読み取り操作または
書き込み操作の結果生じる例外処理が含まれる。どちらの場合も、サブジェクト
コードに書かれた例外ハンドラに例外処理が報告されることが望ましい。
トに従ってサブジェクトコード命令間の境界で例外処理を報告することを必要と
している。例えば、サブジェクトアーキテクチャ定義は、例外処理が報告された
場合、それより前のすべてのサブジェクト命令の効果が完了しており、実行され
ていないサブジェクトコードの最初の命令をその例外処理がポイントし、そのサ
ブジェクト命令またはどの後続の命令からの効果もまだ生じていないことを必要
とすることがある。さらに、特定プロセッサのアーキテクチャ定義は、異なるタ
イプの例外処理について異なる規則を有することもある。
処理を報告させるターゲット命令自体は、サブジェクトコードに書かれた例外ハ
ンドラに例外処理を報告する条件を満たさないことは明白である。命令は大抵の
場合、それに対応するサブジェクトコードブロック中の命令の順序と比較すると
、ターゲットプロセッサでは異なる順序で実行される。これは、第1には、サブ
ジェクトコードがそのために書かれたサブジェクトプロセッサの命令セットと、
変換したターゲットコードを実行するターゲットプロセッサ間の違いが原因であ
り、第2には、通例は変換中に行われる中間表現の最適化が原因である。
に応答して発生する可能性があり、またターゲットプロセッサでのエミュレータ
コードの実行中、すなわち変換中にも生じる可能性がある。例外処理をサブジェ
クト例外ハンドラに報告するために、サブジェクトプロセッサのレジスタの正確
な状態を含めて、エミュレータによって表される仮想サブジェクトプロセッサの
状態はサブジェクト例外ハンドラから入手可能でなければならない。
換または実行しているコードセクションに入るときに適用された条件に戻すこと
、すなわち仮想サブジェクトマシンを、変換または実行しているサブジェクトコ
ード命令の現在のブロックへの入口点で用いられた(prevailing)条
件に戻すことがある。係るアプローチでは例外ハンドラはソースコードブロック
の命令を個々に順次ステップスルーして、例外処理を起こしている命令を識別す
ることができる。
ションのエミュレート中に「作業」レジスタのセットを使用するエミュレータを
開示する。これら各作業レジスタの内容は、ゲート化したストアバッファを使用
して、サブジェクトコードセクションの最後に「オフィシャル」の仮想サブジェ
クトレジスタセットにコピーされる。したがって、サブジェクトコードセクショ
ンのエミュレート中に例外処理が発生した場合、これは作業レジスタにしか影響
せず、仮想サブジェクトマシンの状態は、そのサブジェクトコードセクションへ
の入口点で「オフィシャル」レジスタから回復することができる。
ル」レジスタを使用すると、各サブジェクトコードセクションの終わりに「作業
」レジスタからそれに対応する「オフィシャル」レジスタに情報をコピーするた
め、ターゲットプロセッサにおけるエミュレーションプロセスのオーバーヘッド
が著しく増してしまう。
ることであり、この方法はハンドラ規則に従って例外を正確にサブジェクト例外
ハンドラに報告することを可能にし、同時にエミュレータ中のオーバーヘッドを
最小限に抑える。本発明の他の目的は、サブジェクトレジスタを表すことにより
正確な例外処理を可能にするエミュレーションの方法および装置を提供すること
である。
れ、この方法は、(a)サブジェクトマシンのサブジェクトレジスタを表す抽象
レジスタを、ターゲットマシン内の第1の位置または第2の位置にマップするス
テップと、(b)第1の位置または第2の位置の一方の内容が、例外処理中にエ
ミュレータが使用するための抽象レジスタの確定的なバージョンを表し、同時に
第1の位置または第2の位置の他方が抽象レジスタの推測バージョンを表すよう
に、第1の位置と第2の位置の間で抽象レジスタのマッピングを入れ替えるステ
ップとからなる。
の一方が、そのセクションに入ったときの抽象レジスタの確定値を保持し、かつ
、第1の位置または第2の位置の他方が、そのセクション中に使用する抽象レジ
スタの推測現行値を保持することが好ましい。
置のそれまでとは逆の位置に抽象レジスタがマップされることが好ましい。その
サブジェクトコードセクションで例外が発生していないことが確認されると、推
測バージョンが確定的なものになる。抽象レジスタの推測バージョンの内容が所
定のサブジェクトコードセクション中に更新されている場合にのみ、マッピング
変更ステップが行われることが理想的である。
複数の抽象レジスタを提供するステップと、(a2)複数のその抽象レジスタを
それぞれ、ターゲットマシン内の第1の位置セットの各位置か、または第2の位
置セットの各位置にマップするステップを含むことが好ましい。ステップ(b)
は、第1の位置セットと第2の位置セットそれぞれの間で、各抽象レジスタにつ
いてのマッピングを入れ替えるステップを含むことが好ましい。
あることが好ましい。あるいは、第1の位置および/または第2の位置がターゲ
ットマシンのレジスタであることが好ましい。
することが好ましい。サブジェクトコードの所定のセクションが、サブジェクト
コードの1つまたは複数の基本ブロックを表すと適当である。
ターゲットプロセッサに適したターゲットコードの間でプログラムコード変換を
行うエミュレータが例外処理で使用する方法が提供される。
1つの抽象レジスタ(X、Y)を提供するステップと、(b)前記1つの抽象レ
ジスタまたは各抽象レジスタを、ターゲットプロセッサ内の対応する位置のペア
にマップするステップと、(c)サブジェクトコードの所定のセクションについ
て、第1の位置または第2の位置の一方が、例外処理中にエミュレータが使用す
る、そのセクションに入ったときの抽象レジスタの確定値を保持し、一方、第1
の位置または第2の位置の他方が、そのセクション中にエミュレータが更新を行
うための抽象レジスタの推測現行値を保持するように、位置ペアの第1の位置と
位置ペアの第2の位置の間で前記1つの抽象レジスタまたは各抽象レジスタのマ
ッピングを入れ替えるステップを含む。
するためのエミュレータ方法およびエミュレータ装置が提供される。本発明はま
た、本明細書中の任意の著述内容による方法を実行するようにプログラムした場
合はコンピュータに、本明細書中の任意の著述内容による方法を実行するための
コンピュータプログラムに、および本明細書中の任意の著述内容による方法を実
行するためのコンピュータ可読命令を含んだコンピュータプログラム製品にわた
る。
を添付の概略図面を参照しつつ示す。
プロセッサ11でサブジェクトコード10が直接実行されるサブジェクトマシン
の構成を表している。このサブジェクトコードは実行可能バイナリコードである
と適切である。しかし、当分野の技術者には知られているように、サブジェクト
コードは、サブジェクトコード10とサブジェクトプロセッサ11の間に中間層
(コンパイラなど)を有する任意の適切な言語で表すことが可能である。
ジェクトコード10をターゲットプロセッサ31が実行することを可能にする中
間層としてバイナリ変換タイプエミュレータ20を使用する例を表している。本
発明の好ましい実施形態は特に、サブジェクトコード10を、ターゲットプロセ
ッサ31で実行可能なターゲットコード30に動的バイナリ変換するエミュレー
タ20とともに使用することを目的とする。
示しており、これはフロントエンド21、コア22、およびバックエンド23か
ら構成される。
構成になっている。フロントエンド21は、サブジェクトコード10の命令を、
サブジェクトコードの基本ブロックごとに総称的な中間表現に変換する。基本ブ
ロックはそれぞれ、一意の入口点を表す最初の命令と、一意の出口点にある最後
の命令(ジャンプ命令、コール命令、あるいは分岐命令など)との間に連続した
命令のセットを含むことが適切である。特に好ましい実施形態では、エミュレー
タ20は、コード生成および最適化のために1つの単位として選択された2つ以
上の基本ブロックからなるグループブロックを選択する。さらに、エミュレータ
20は、異なる入口条件下で、サブジェクトコードの同一の基本ブロックを表す
アイソブロックをサポートする。サブジェクトコード10の各所定セクションは
中間表現のブロック(「IRブロック」)になる。
ロントエンド21が生成した各IRブロックを最適化する。バックエンド23は
最適化済みのIRブロックをコア22から持って行き、ターゲットプロセッサ3
1で実行可能なターゲットコード30を生成する。
ョンは例えば基本ブロック100として識別され、変換モードのターゲットプロ
セッサ31上で実行されるエミュレータ20によって変換される。ターゲットプ
ロセッサ31は次いで、ターゲットコード30の対応する最適化済みかつ変換済
みのブロック300を実行する。
の抽象レジスタを含み、これはサブジェクトプロセッサ11でサブジェクトコー
ド10を実行するために使用される物理レジスタを表す。抽象レジスタは、サブ
ジェクトプロセッサレジスタに対するサブジェクトコード命令の予測される効果
を表すことにより、エミュレート中のサブジェクトプロセッサ11の状態を定義
する。
称する2セットの抽象レジスタが提供される。初期化時に、これら2セットのう
ち第1のセット、例えばセットAは「確定」値を保持している。すなわちセット
Aのレジスタは、エミュレートされるサブジェクトプロセッサ11の物理レジス
タの予測される内容を表す、有効であると知られている初期値を保持するものと
定義される。
表すように定義される。すなわち、初期化時に抽象レジスタの第2セット(セッ
トB)もサブジェクトプロセッサ11の物理レジスタの予測される初期内容を保
持しているが、このセットBの値は有効であるとは信頼されない。
セットB)を使用するが、この際その内容を更新して、サブジェクトコード10
のブロック100の実行後のサブジェクトプロセッサ11の物理レジスタの予測
状態を示す。最初のブロックの変換中には、抽象レジスタの確定セット(すなわ
ちセットA)の内容は変更されない。
タ20はブロック100に入ると、確定データを保持しているとマークされた抽
象レジスタ(すなわちセットA)を使用してサブジェクトレジスタの状態を直ち
に回復する。すると例外ハンドラはソースコード10のブロック100の命令を
順次ステップスルーして、その例外を引き起こしている命令を識別することがで
きる。ここで、抽象レジスタの状態は各命令の後に更新される。したがって、そ
の例外の原因となっているサブジェクトコード命令を識別すると、エミュレータ
によって表される仮想サブジェクトマシンの状態が、そのマシンの規則に従って
サブジェクトコード例外ハンドラに報告される。サブジェクトコード例外ハンド
ラは処理プロセスに従って例外を回復し、その例外に適したサブジェクトコード
中のポイントに戻る。例えば、例外ハンドラが、エミュレータをソースコード1
0の次の未実行命令に戻すことが一般的である。変換プロセスまたは実行プロセ
スはそのポイントから継続させることができる。
持するセット(すなわちセットB)のレジスタが更新され、サブジェクトコード
10の基本ブロック100の終わりにおけるエミュレート中のサブジェクトプロ
セッサ11の対応レジスタの予測内容を保持することになる。この時点で、第1
セット(すなわちセットA)の抽象レジスタは、サブジェクトコードのブロック
100に入ったときのサブジェクトプロセッサの状態を保持しており、第2セッ
ト(すなわちセットB)の抽象レジスタは、ブロック100の終わりにおける状
態を保持している。ブロック100は正常に変換および実行されているので、今
度はセットBの抽象レジスタが確定値を保持していると定義され、セットAの抽
象レジスタが推測値を保持していると定義される。
である。セットAの各レジスタは、セットBに対応するパートナレジスタを有す
る。ペアの一方がその抽象レジスタの確定値を保持し、他方が推測値を保持する
。コードの各セクションの終わりにこれら2レジスタの定義を逆にし、次のコー
ドセクション中にはペアの各レジスタが反対の機能を実行するようにする。各レ
ジスタペアの2レジスタの機能を入れ替えることにより、現在のコードセクショ
ンについて入口条件を維持する単純で明快な方法が提供される。
レジスタの状態を更新しなくともよい。そのセクション中に変更されたレジスタ
だけを更新し、その新機能を示せばよい。特定の抽象レジスタの値がコードセク
ション中に変更されない場合、その値は次のセクション中もそのまま保たれ、同
じ確定機能または推測機能を適宜実行する。
5のステップ1で、サブジェクトプロセッサ11のレジスタXを表す第1抽象レ
ジスタ(RegXA)は確定値を保持し、第2抽象レジスタ(RegXB)は推
測値を保持している。抽象レジスタはメモリ位置内に保持されることが適当であ
り、レジスタXの作業マップは推測バージョンRegXBの位置をポイントして
いる。同様に、この例のレジスタYについては、初めRegYAが確定で、Re
gYBが推測である。サブジェクトコード10のブロック100など1つまたは
複数の命令の実行後、抽象レジスタのマッピングは図6に示すようにステップ2
で更新される。この例では、推測レジスタYの内容が変わり、したがって今度は
RegYBが後続ブロックで使用される確定バージョンと見なされる。レジスタ
Yのマップは更新され、RegYAを推測バージョンとしてポイントする。それ
に対して、レジスタXはブロック100中の1つまたは複数の命令によっては影
響されておらず、したがって、RegXAは確定バージョンのままであり、Re
gXBは推測バージョンのままである。
セクション中に出会う最初の読み取り操作が、各特定抽象レジスタの確定バージ
ョンを使用することが適切である。確定バージョンは、現在のコードセクション
に入ったときのそのレジスタの状態を表しており、したがってそれより前のセク
ションとの連続性を維持する。その後の読み取り操作も、書き込み操作に出会う
まで各抽象レジスタの確定バージョンを使用する。最初の書き込み操作は、各特
定抽象レジスタの推測バージョンを使用する。したがって確定バージョンは変更
されず、今度は推測バージョンが関連抽象レジスタの現行値を保持する。その後
の読み取り操作および書き込み操作は、そのコードセクションの残りにわたって
推測バージョンを使用する。
の各物理レジスタに対応する抽象レジスタが提供され、この抽象レジスタは2つ
の所定位置にマップされている。抽象レジスタ位置の各ペアのうち1つは確定値
を保持し、他方は推測値を保持する。これら2つの位置の機能を容易に逆転させ
、確定的な内容を保持する位置を入れ換える。したがって時間のかかるコピー動
作が回避される。
リ位置にマップすることによって実現され、確定バージョンと推測バージョンの
入れ換えは、これら2つの位置間でメモリマッピングを入れ換えることによって
実現される。サブジェクトプロセッサの物理レジスタを複製するためにターゲッ
トマシン内に保持されている抽象レジスタのマップを更新することは、変換時に
迅速かつ簡単に実行され、変換コードをおそらくは多数回実行する際にオーバー
ヘッドが生じない。
スタの確定バージョンおよび推測バージョンの一方または両方をターゲットマシ
ンレジスタのペアに(十分な容量を持ったターゲットマシンに)記憶することが
できる。
のブロックから以前に変換されたブロックへの分岐(あるいはループ)間にわた
ってレジスタ参照を固定するという問題を扱う。コードブロック間の分岐は実際
には一般的に見られるものであるが、しばしばサブジェクトコード内の複数の他
の位置から同じコードブロックを参照することを伴い、それにより異なる入口条
件を生成してしまう。解決法の1つは、抽象レジスタの確定バージョンから推測
バージョンに内容をコピーし、これにより入口条件を、以前に変換したコードブ
ロックが使用するのに適したものにすることである。例えば、ブロックを最初に
変換したとき、第1のバージョンRegXAは確定であった。したがって、変換
したコードの同じブロックを後に再び使用することになり、抽象レジスタの第2
バージョンRegXBが確定である条件の下でそのブロックに達した場合、継続
する前にレジスタXBの内容をレジスタRegXAにコピーしなければならない
。これは、以前に変換したコードブロックへの分岐を実施する際にコピーオーバ
ーヘッドを生じさせる。本発明の実施形態で用いる好ましい解決法は、ブロック
を今度は分岐時に用いられていた条件で再度変換し、以前に変換したコードの複
数のバージョンをそれぞれ入口条件の特定セットと関連付けた状態で存在させる
ことによりこのコピー動作を回避している。より多くの変換作業が必要となるが
、実行中のコピーオーバーヘッドは回避される。一般に、サブジェクトコードセ
クション(任意の数の基本ブロックを含む)をもう1度変換すると、そのループ
中に奇数回更新された特定レジスタに必要とされていた補償コピーを行わずに済
む。
法は、大きなコードセクションを実行前に変換する静的変換にも応用することが
できる。静的変換では、変換のために選択されたコードセクションは通例、プロ
グラム全体またはプログラムの大半部分を表す。それでも、コード変換および変
換コードの実行中に生じる例外を処理し、少なくともそのコードセクションに入
ったときの状態から例外処理を実行できるようにする上記の方法を使用すること
は都合がよい。さらに当方法は、サブジェクトマシンおよびターゲットマシンが
、同一のまたは少なくとも互換性のある命令セットおよびアーキテクチャを有す
るプログラムコード最適化に応用することができる。
に、上記の方法を実行するためのコンピュータプログラムに、および上記の方法
を実行するためのコンピュータ可読命令を保持するコンピュータプログラム製品
にわたる。
提出され、本明細書とともに公衆の便覧に公開されるすべての書類および文書に
向けられ、これら書類および文書すべての内容は参照として本明細書に組み込む
。
ーチャ、および/またはここに開示する方法またはプロセスのすべてのステップ
は、そのようなフィーチャおよび/またはステップの少なくとも一部が相互に排
他的である組み合わせを除いて、どのような組み合わせで組み合わせてもよい。
、特別に明確に述べない限り、同じ目的、同等の目的、あるいは類似の目的を満
たす代替フィーチャで置き換えてもよい。したがって、特別に明確に述べない場
合は、開示する各フィーチャは同等のフィーチャまたは類似のフィーチャの一般
的なシリーズの一例にすぎない。
明は、本明細書(添付請求項、要約、および図面をいずれも含む)に開示するフ
ィーチャの任意の新しいフィーチャ、または任意の新しい組み合わせ、またはこ
こに開示する方法またはプロセスのステップの任意の新しいステップ、あるいは
任意のその新しい組み合わせにわたる。
る。
エミュレータの構成を表す図である。
。
Claims (16)
- 【請求項1】 エミュレータ(20)中でサブジェクトレジスタを表す方法
であって、 (a) サブジェクトマシン(11)のサブジェクトレジスタを表す抽象レジ
スタ(X)を、ターゲットマシン(31)内の第1の位置(XA)または第2の
位置(XB)にマップするステップと、 (b) 第1の位置または第2の位置の一方(XA、XB)の内容が、例外処
理中にエミュレータが使用する抽象レジスタの確定バージョンを表し、第1の位
置または第2の位置の他方(XB、XA)が抽象レジスタの推測バージョンを表
すように、第1の位置と第2の位置(XA、XB)間で抽象レジスタ(X)のマ
ッピングを入れ替えるステップとを含む方法。 - 【請求項2】 サブジェクトコードの所定セクション(100)について、
第1の位置または第2の位置の一方(XA、XB)が、そのセクション(100
)に入ったときの抽象レジスタ(X)の確定値を保持し、第1の位置または第2
の位置の他方(XB、XA)が、そのセクション(100)中に使用するための
抽象レジスタ(X)の推測現行値を保持する請求項1に記載の方法。 - 【請求項3】 マッピング入れ替えのステップ(b)が、所定のサブジェク
トコードセクション(100)の最後に達すると実行される請求項2に記載の方
法。 - 【請求項4】 マッピング入れ替えステップ(b)が、抽象レジスタ(X)
の推測バージョンの内容が所定のサブジェクトコードセクション(100)中に
更新されている場合にのみ実行される請求項3に記載の方法。 - 【請求項5】 ステップ(a)が、 (a1) それぞれがサブジェクトマシン(11)のレジスタを表す複数の抽
象レジスタ(X、Y)を提供するステップと、 (a2) 複数の抽象レジスタ(X、Y)をそれぞれ、ターゲットマシン内の
第1の位置セットの各位置(XA、XB)か、または第2の位置セットの各位置
(XB、YB)にマップするステップとを含み、 ステップ(b)が、第1の位置セットと第2の位置セットの各セットの各位置
の間で、各抽象レジスタ(X、Y)についてのマッピングを入れ替えるステップ
を含む、請求項1から4のいずれか一項に記載の方法。 - 【請求項6】 第1の位置(XA)および第2の位置(XB)がそれぞれ、
メモリ位置またはターゲットレジスタである請求項1から5のいずれか一項に記
載の方法。 - 【請求項7】 所定のサブジェクトコードセクション(100)がサブジェ
クトコードの1つまたは複数の基本ブロックを表す請求項2から6のいずれか一
項に記載の方法。 - 【請求項8】 動的バイナリ変換を実行するエミュレータ(20)で使用す
るためのものである請求項2から7のいずれか一項に記載の方法。 - 【請求項9】 サブジェクトプロセッサ(11)に適したサブジェクトコー
ド(10)と、ターゲットプロセッサ(31)に適したターゲットコード(30
)間でプログラムコード変換を行うエミュレータ(20)が例外処理で使用する
方法であって、 (a) それぞれがサブジェクトプロセッサ(11)のレジスタを表す少なく
とも1つの抽象レジスタ(X、Y)を提供するステップと、 (b) 前記1つの抽象レジスタまたは各抽象レジスタ(X、Y)をそれぞれ
、ターゲットプロセッサ内の対応する位置ペア(XA、XB、YA、YB)にマ
ップするステップと、 (c) 所定のサブジェクトコードセクション(100)について、第1の位
置または第2の位置の一方(例えばXA、YA)が、例外処理中にエミュレータ
(20)が使用するためのそのセクションに入ったときの抽象レジスタ(X、Y
)の確定値を保持し、かつ、第1の位置または第2の位置の他方(例えばXB、
YB)が、そのセクション中にエミュレータ(20)が更新を行うための抽象レ
ジスタ(X、Y)の推測現行値を保持するように、位置ペアの第1のペア(XA 、YA)と位置ペアの第2のペア(XB、YB)の間で各抽象レジスタ(X、Y
)のマッピングを入れ替えるステップとを含む方法。 - 【請求項10】 マッピング入れ替えステップ(c)が、サブジェクトコー
ドの所定セクション(100)の終わりに達すると実行される請求項9に記載の
方法。 - 【請求項11】 マッピング入れ替えステップ(c)が、サブジェクトコー
ドの所定セクション(100)中に更新された前記1つの抽象レジスタまたは各
抽象レジスタ(X、Y)についてのみ実行される請求項10に記載の方法。 - 【請求項12】 請求項1から11のいずれか一項に記載の方法を実行する
ためのエミュレータ。 - 【請求項13】 請求項1から11のいずれか一項に記載の方法を実行する
ためのエミュレータ装置。 - 【請求項14】 プログラムすると請求項1から11のいずれか一項に記載
の方法を実行するコンピュータ。 - 【請求項15】 請求項1から11のいずれか一項に記載の方法を実行する
ためのコンピュータプログラム。 - 【請求項16】 請求項1から11のいずれか一項に記載の方法を実行する
ためのコンピュータ可読命令を含んだコンピュータプログラム製品。
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)
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)
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)
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 |
-
2000
- 2000-04-26 WO PCT/GB2000/001439 patent/WO2000065440A2/en active Search and Examination
- 2000-04-26 AU AU45803/00A patent/AU4580300A/en not_active Abandoned
- 2000-04-26 EP EP00927395A patent/EP1183601A2/en not_active Withdrawn
- 2000-04-26 JP JP2000614118A patent/JP4709394B2/ja not_active Expired - Lifetime
Patent Citations (12)
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)
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 |