JP2002502516A - 変換後命令を使用する選択的エミュレーションインタープリテーション - Google Patents
変換後命令を使用する選択的エミュレーションインタープリテーションInfo
- Publication number
- JP2002502516A JP2002502516A JP53025998A JP53025998A JP2002502516A JP 2002502516 A JP2002502516 A JP 2002502516A JP 53025998 A JP53025998 A JP 53025998A JP 53025998 A JP53025998 A JP 53025998A JP 2002502516 A JP2002502516 A JP 2002502516A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- emulation
- target
- instructions
- computer system
- 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.)
- Pending
Links
- 238000013519 translation Methods 0.000 title claims abstract description 23
- 230000006870 function Effects 0.000 claims abstract description 107
- 238000000034 method Methods 0.000 claims abstract description 107
- 238000006243 chemical reaction Methods 0.000 claims description 220
- 238000012545 processing Methods 0.000 claims description 52
- 230000009466 transformation Effects 0.000 claims description 17
- 230000008571 general function Effects 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000004088 simulation Methods 0.000 claims description 5
- 229910000498 pewter Inorganic materials 0.000 claims description 2
- 239000010957 pewter Substances 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 37
- 238000010586 diagram Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000132456 Haplocarpha Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 244000309464 bull Species 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000035943 smell Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013024 troubleshooting Methods 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- 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)
Abstract
(57)【要約】
選択されたターゲット命令を変換し、既に変換されたターゲット命令に対するターゲット命令デコーディングをバイパスすることによって、コンピュータシステムの高速エミュレーションを行なうためのシステムおよび方法である。複数のターゲット命令(16)により制御されるターゲットコンピュータシステム(12)がエミュレーションホスト計算システム(14)においてエミュレートされる。ターゲット命令(16)はターゲット命令が実行されるであろう順序に従ってエミュレーションホスト計算システム(14)へ連続的にロードされる。ターゲット命令は、ターゲット命令により指定される機能を特定するようデコードされ(24)、それらの機能はエミュレーションホスト計算システム(14)によって実行される(28)。選択されたターゲット命令にエミュレーション情報が割当てられ、エミュレーション情報は、変換後命令と呼ばれるこれらの選択されたターゲット命令の実行を制御する。エミュレーション情報により特定されるソフトウェアルーチンは、これらの変換後命令に対して開始され、ソフトウェアルーチンはエミュレーションホスト計算システムの機械語でターゲット命令の機能を実行する。
Description
【発明の詳細な説明】
変換後命令を使用する選択的エミュレーションインタープリテーション
発明の分野
本発明は一般に、コンピュータエミュレーションに関し、より特定的には、タ
ーゲット命令のデコーディングをバイパスし、選択されたターゲット命令を変換
して、そのターゲット命令の機能に対応するネイティブモードのソフトウェアル
ーチンを直接実行することができるようにすることによって、コンピュータシス
テムの高速エミュレーションを実現するためのシステムおよび方法に関する。
発明の背景
コンピュータエミュレーションは、ターゲットの計算システムを異なるコンピ
ュータシステムでエミュレートすることを含む。コンピュータシステムは種々の
理由でエミュレートされるが、その理由の一つに、そのコンピュータシステムに
関連するプログラムコードをテストするまたはデバグすることが挙げられる。別
の理由としては、コンピュータセンターが別の計算システムで更新される場合に
、プログラムの互換性の問題が深刻になることが挙げられる。
旧式となったコンピュータシステムは、その旧式のシステムに代えて使用され
る可能性のある他の計算システムと互換性のないプログラムコードを含む場合が
ある。コンピュータが旧式になったり、他の理由で置換される場合、ユーザは新
しい機械上で古いプログラムを実行するためにそのプログラムを書換えなくて済
むことを望む。新しい機械が旧式の機械の個々の命令実行ならびに旧式の機械の
レジスタおよびハードウェア特徴をシミュレートすることができれば、それら旧
式のプログラムを新しい機械に移動させることができる。これは、新しいプログ
ラミングレベルに、古い機械言語でプログラムを実行するインタープリタを提供
することによって、達成することが可能となる。この古い機械のためのインター
プリタを典型的にはエミュレータと呼ぶ。
入手可能なエミュレータにはさまざまな種類がある。インタープリタ型エミュ
レーションおよびコンパイラ型エミュレーション等である。インタープリタ型の
実行手法は、インタープリタを使用して、各ターゲットコンピュータ命令をデコ
ードして、ターゲットシステムによって実行されたであろう演算の各々をエミュ
レートするルーチンを呼出す。この手法は有効ではあるが速度が遅い。ハードウ
ェアは多くの機能を並行に実行することが可能であるが、ソフトウェアはそれら
の機能を直列で行なわねばならないため、ハードウェア機能のエミュレーション
には時間がかかる。
コンパイラ型の実行手法はインタープリタ型手法よりも高速である。コンパイ
ラ型の実行のためには、コンパイラがオブジェクトコード命令を分析して、それ
らを、同じ機能を行なうネイティブモードのルーチンへと変換する。
しかし、これらのエミュレーション手法はすべての状況を処理できるものでは
なく、その動作も所望の速度には達していない。予めコンパイルされた命令を実
行することによってオブジェクトコードをエミュレートすることは、メモリバン
ク内に命令とデータが交じり合っている場合には実際的でない。というのも、コ
ンパイラはそれらを区別することができないためである。命令の書換えが許可さ
れている場合にもこの手法は不適切である。命令の書換え(自己書換えコードと
も呼ばれる)とは、プログラムの実行中にそのプログラムを書換えることを意味
する。今日ではこの手法は一般に望ましくないものとされているが、このような
自己書換えコードを有するシステムも依然として存在し、コンパイラ型実行手法
はこのような状況をうまく処理することができずにいる。
このため、ターゲット計算システムの非常に高速なエミュレーションを提供す
ること、および、命令とデータが交じり合っている状況や自己書換えコードの問
題に対処することが望まれる。本発明は、「変換型実行」と呼ばれる新しい手法
を提供するものである。この手法は、変換された命令およびデータバンクを利用
し、いくつかのエミュレーションステップをバイパスすることができるようにす
ることによって、エミュレーションの効率および性能を増すものである。本発明
は、先行技術に対して多数の利点を提供する。たとえば、変換に要する時間およ
び記憶スペースのトレードオフに基づいて実行性能を選択することが可能である
。この場合、頻繁に使用されるバンクまたは命令に対しては、高性能の変換を行
ない、使用頻度があまり高くないバンクまたは命令には、より遅い(よりスペー
スが節約される)変換を行なうことができるようにしている。命令の書換えは許
可
されるが、オリジナルの命令はその変換によって決して破壊されたり書換えられ
たりすることはない。変換されたバンクは移植可能であり、命令とデータの混合
も許される。付加的なエミュレーションコードを実装しかつ新しいレベルの変換
を選択することによって、ユーザの介在なしに変換技術を改善することが可能と
なる。
本発明は上述の問題を解決するものであり、先行技術に対して他の利点もまた
提供するものである。
発明の概要
本発明は、ターゲット命令のデコーディングをバイパスしかつ選択されたター
ゲット命令を変換してそのターゲット命令の機能に対応ずるネイティブモードの
ソフトウェアルーチンを直接実行できるようにすることによって、コンピュータ
システムの高速エミュレーションを可能にするための、システムおよび方法に関
する。
本発明の1局面に従えば、コンピュータシステムをエミュレーションホスト計
算システム上でエミュレートするための方法が提供される。このコンピュータシ
ステムは、複数のターゲット命令によって制御される。この方法は、それらター
ゲット命令の各々をエミュレーションホスト計算システム内に、ターゲット命令
が実行されるであろう順に逐次ロードするステップを含む。ターゲット命令の各
々はデコードされて、ターゲット命令によって指定される機能が特定される。そ
れら特定された機能はその後、エミュレーションホスト計算システムによって実
行される。エミュレーション情報は選択されたターゲット命令に割当てることが
でき、このエミュレーション情報がそれら選択されたターゲット命令の実行を制
御する。エミュレーション情報が割当てられたターゲット命令は、オリジナルの
ターゲット命令に対して付加的な情報を含むため、変換された命令(変換後命令
)と呼ばれる。これら変換後命令に対して、エミュレーション情報によって特定
されたソフトウェアルーチンが初期化される。これらのソフトウェアルーチンは
ターゲット命令の機能を、エミュレーションホスト計算システムの機械言語で実
行する。したがって、変換がなされた命令については、ターゲット命令の解釈
およびデコーディングがもはや必要ではなく、エミュレーションホスト計算シス
テム内のネイティブモードのソフトウェアルーチンが、エミュレーション情報の
指示で直接実行される。
本発明の別の局面に従えば、コンピュータシステムをエミュレーションホスト
計算システム上でエミュレートするための方法が提供される。このコンピュータ
システムは、1または複数の命令バンクにストアされた複数のターゲット命令に
よって制御される。この方法は、命令バンクからターゲット命令を、コンピュー
タシステムによって実行されるであろう順に逐次受取るステップを含む。ターゲ
ット命令は解釈されて、そのターゲット命令によって指定される機能が特定され
る。これら特定された機能は、エミュレーションホスト計算システムのハードウ
ェアおよびネイティブモード機械言語を使用して実行される。選択されたターゲ
ット命令は「変換後命令」に変換することが可能である。「変換後命令」は、タ
ーゲット命令と、変換後命令が後に実行される際にどのように実行されるかを制
御するエミュレーションコードとを含む。各命令に対してエミュレーションコー
ドが分析されて、その命令が先に変換後命令に変換されているかどうかが判定さ
れる。命令が先に変換されているものである場合、それに関連するターゲット命
令の機能が、エミュレーションホスト計算システムのハードウェアおよびネイテ
ィブモード機械言語を使用して、そのエミュレーションコードに応答して実行さ
れる。エミュレーションコードは、それに関連するターゲット命令の機能を実行
するよう、ネイティブモード機械言語で書かれたソフトウェアルーチンを指定す
る。したがって、解釈および変換のステップは、その変換後命令が後に発生した
場合にはバイパスされる。データもまた同様に変換することができる。
本発明の別の局面に従えば、ターゲットコンピュータシステムをエミュレート
するためのエミュレータが提供される。エミュレータは、ターゲットコンピュー
タシステムを制御する複数のターゲット命令を有するターゲットコンピュータシ
ステムをエミュレートするのに使用される。エミュレータは、ターゲット命令お
よびエミュレーションソフトウェアルーチンを種々のメモリバンク内にストアす
るためのメモリを含む。エミュレータは、ターゲット命令をそれらが通常ターゲ
ットコンピュータシステム上で実行される順に受信する入力を含む。ターゲット
命令の各々が先に変換されているかどうかを判定するのに、コントローラが提供
される。命令トランスフォーマは、選択されたターゲット命令を変換後命令へと
変換する。ここで、変換後命令の各々は、対応のターゲット命令およびエミュレ
ーションコードを含む。エミュレーションコードは、対応のターゲット命令によ
って指定される機能を実行する、エミュレーションソフトウェアルーチンを特定
する。インタープリタは、変換されていないターゲット命令はデコードし、その
ターゲット命令によって指定される機能を特定する。プロセッサは変換されてい
ないターゲット命令によって指定されたその機能を実行し、また、変換後命令に
関連するエミュレーションソフトウェアルーチンを実行する。エミュレータは、
ターゲット命令が変換されている場合には、はるかに高速でターゲットコンピュ
ータシステムをエミュレートすることができる。というのも、変換された命令に
対しては、それらターゲット命令のデコーディングが必要ではないために、イン
タープリタをバイパスすることができるためである。
本発明のさらに別の目的および利点は、以下の詳細な説明を読むことにより、
当業者には容易に明らかとなろう。ここで、本発明の好ましい実施例は本発明を
実行するのに考えられるベストモードを説明するためにのみ示されたものである
。理解され得るように、本発明は他のさまざまな実施例で実行が可能であり、そ
れらの詳細は本発明から離れることなく修正が可能である。したがって、ここに
掲げる図面および説明は本来説明のためのものであり、限定するものと捉えられ
るべきではない。
図面の簡単な説明
図1は、本発明に従ったエミュレーションシステムのブロック図である。
図2は、変換後命令へと変換された命令を示す図である。
図3は、本発明の1局面を示す一般的なフロー図である。
図4A〜4Hは、本発明の種々の実施例のより特定的なフロー図である。
図5は、変換されたエミュレーション環境を示す。
図6は、一般的命令変換を示す。
図7は、個別の命令変換を示す。
図8は、無条件ジャンプ変換を示す。
図9は、一般的機能変換を示す。
図10は、個別の機能変換を示す。
図11は、データ変換を示す。
図示された実施例の詳細な説明
図1は、本発明に従ったエミュレーションシステム10のブロック図である。
エミュレーションシステム10は、エミュレーションの対象となる命令(すなわ
ち、以後「ターゲットシステム」と呼ぶ特定の計算システムに通常関連する命令
)を、エミュレーションシステムのストレージ12内にストアしエミュレータ1
4によってエミュレートすることができるようにする。ターゲットシステムはエ
ミュレーションシステム10によってエミュレートされるため、物理的なターゲ
ットシステムハードウェアが存在する必要はなく、通常ターゲットシステムで使
用されるデジタル情報のみが、エミュレーションシステム10がターゲットシス
テムをエミュレートするのに必要とされる。
ストレージ12は、通常ターゲットシステム(図示せず)によって実行される
命令をストアするためのコンピュータメモリである。これは、エミュレータ14
のソフトウェア部品もまたストアすることができる。ストレージ12は、種々の
理由で分離される、命令バンクおよびデータバンク等の、種々のメモリ「バンク
」に分割することができる。ストレージ12を複数のメモリバンクに分割する理
由の1つは、バンクを別個に編集したり集積したりすることができることである
。バンクはまた、それらが含む情報を他の処理ユニットまたは他のプログラムに
よって共有することができるようにするために、共通バンクとすることもできる
。メモリバンクは直接に、または、各メモリバンクごとに異なる開始アドレスを
指すコンピュータレジスタを使用することによって、アクセスすることができる
。
図1に、代表的なメモリバンクを、ターゲットバンク16として表わす。ター
ゲットバンク16は、この例においては、ターゲットシステムによって通常実行
される命令のバンクである。したがって、ターゲットバンク16は複数の命令1
8を含み、命令n20で示されるように合計「n」個の命令を有する。本発明は
、エミュレーションシステム10がオリジナルのターゲットシステム命令によっ
て指定される機能をより迅速に実行することができるよう、ターゲットバンク1
6の命令18を変換することができるようにしている。こうして変換された命令
は場合により、ターゲットシステム命令の機能を、エミュレータ14にネイティ
ブの命令によって実行することができるようにもできる。ターゲットバンク16
はしたがって、ストレージ12に含まれる1または複数の関連するネイティブモ
ード命令バンク21内の、対応するネイティブモード命令を指す、変換後命令の
バンクへと変換することもできる。したがって、これらネイティブモード命令バ
ンク21は、エミュレートされるべきターゲットシステム命令に対応するネイテ
ィブモードルーチンをストアする。
ターゲットバンク16は、変換されるべき命令の各々にエミュレーションコー
ドを関連付けることによって、変換後命令のバンクへと変換される。命令は、そ
のオリジナルのターゲットバンク命令に関連するエミュレーションコードを更新
することによって変換される。本発明の好ましい実施例においては、各ターゲッ
ト命令はエミュレーションコードをストアするよう取り置きされている付加的な
ビットを含む。これは、図2に対応する箇所でより詳細に説明する。命令バンク
21に含まれる対応するネイティブモード命令は、ターゲットバンク16からの
オリジナル命令の各々を解釈しかつ実行するのにかかる時間よりも、はるかに短
時間で実行することが可能である。
本発明の一実施例においては、エミュレータ14は、コントローラ22、命令
トランスフォーマ24、インタープリタ26および変換情報プロセッサブロック
28の、4つの主要部品で説明することができる。エミュレータ14はハードウ
ェアだけから構築することも可能であるが、好ましい実施例のエミュレータ14
は、エミュレータ14の中央処理ユニットによって実行されるソフトウェアを含
む。
エミュレータ14のコントローラ部22は、ライン30で表わされるように、
ターゲットバンク16からの命令18を調べる。コントローラ22は、命令18
から命令n20がエミュレータ14によって変換済かどうかを判定する。(変換
するよう選択された)命令18がコントローラ22によって最初に調べられると
き、その選択された命令18は未だ変換されておらず、トランスフォーマ24に
よって変換することができる。変換するよう選択されていない命令は、ライン3
2が示すとおり、インタープリタ26によって解釈される。
下にさらに詳細に説明するように、トランスフォーマ24は命令18を、その
命令18がエミュレーションシステム10内でどのようにエミュレートされるか
に関する情報を含む形へと変換する。このような、より容易に認識される形は、
エミュレータ14の処理ユニットに関連する、「ネイティブモード」機械言語と
呼ばれる計算言語に対応している。一旦変換されれば、変換後命令は、ネイティ
ブモード機械言語の制御下で動作するエミュレータ14によって、より迅速によ
り効率的に認識されかつ実行されるようになる。
図1の例においては、変換されるべき命令が未だ変換されていないとコントロ
ーラ22が判定した後に、トランスフォーマ24によって変換が行なわれ得る。
トランスフォーマ24が変換した命令は、ライン33が示すように、インタープ
リタ26を完全にバイパスすることができ、その後、ネイティブモード命令を使
用して命令プロセッサ28によって直接実行することができる。インタープリタ
26は、未だ変換されていない命令を解釈する。この解釈は、そのターゲット命
令をデコードして、その命令がターゲット計算ハードウェア上で実行される場合
に通常行なわれる機能を実行することによって行なわれる。インタープリタは典
型的に、各ターゲットシステム命令をデコードして、通常ターゲットシステムの
ハードウェアによって行なわれるであろう動作の各々をエミュレートするルーチ
ンを呼出す。命令がターゲット計算システムによつて実行されるのではなく、エ
ミュレータ14がインタープリタ26を介してターゲット計算システムを「シミ
ュレート」またはエミュレートするのである。
インタープリタ26は、エミュレータ14のネイティブモード処理ユニットの
制御下で動作しかつ、命令によって要求される機能を行なうよう書かれた、エミ
ュレーションソフトウェアを含む。この機能は典型的に、各命令につき、その命
令および命令オペランドをデコーディングし、アドレスを生成し、等の、反復的
な機能を含む。一旦命令を解釈すると、インタープリタ26はライン34で示す
とおり、コントローラ22に制御を移し、コントローラ22はそのアドレスポイ
ンタをインクリメントする。ターゲットバンク16内で、そのターゲット命令に
関連するエミュレーションコードが更新されるが、これは更新命令経路36で示
すとおりである。代替的に、変換後命令は、ストレージ12の別個の「変換後命
令」部分内にストアされてもよいが、好ましい実施例においては、エミュレーシ
ョンコードはそれぞれのターゲット命令のスペアビットロケーション内にストア
される。
本発明は、命令が一旦変換されればインタープリタ26をバイパスすることが
できるようにし、それにより、反復的な命令機能をバイパスすることを可能にす
る。というのも、変換された命令はネイティブモード命令バンク21内のネイテ
ィブモード機械語で振替えられるためである。このように、変換後命令を変換情
報プロセッサ28によって直接処理することができることを、ライン38で示す
。好ましい実施例における変換後命令プロセッサ28は、エミュレーションシス
テム10を制御する処理ユニットと同じものである。命令が既に変換されていて
解釈またはさらなる変換が必要ではないとコントローラ22が判定した場合、ト
ランスフォーマ24およびインタープリタ26がバイパスされる。しかし、命令
が変換されていた場合であっても、それはさまざまな理由により再び変換され得
る。たとえば、異なる変換レベルに再変換されたり、変換後命令が「オリジナル
」の命令にリセットされる場合がある。変換レベルを変更することおよびターゲ
ット命令を「オリジナル」の命令にリセットすることについては、下にさらに詳
細に説明する。命令がプロセッサ28においてネイティブモード機械言語によっ
て処理されると、ライン40で示すように、コントローラ22内のアドレスポイ
ンタがインクリメントされて、ターゲットバンク16から次の命令が受信される
。
図2は、変換後命令50へと変換されている命令18を示す図である。図1の
命令18から命令n20までは、ライン52で示される命令長さL1を有する。
しかし、本発明の一実施例においては、ライン54で表わされる全長L2は命令
18の長さL1よりも長い。命令18は、種々のフィールドを含み得るが、それ
らは、アドレスフィールド56、命令オペレーションコード58、および、一般
的フィールド60として表わされる他のフィールドを含む。
命令18はエミュレータ14により、変換後命令50内に1または複数の付加
的なフィールドを提供することによって、変換後命令50へと変換される。これ
ら付加的なフィールドの分だけ、命令18の長さL1、52に対して長さL2、
54が長くなっている。本発明の一実施例においては、変換後命令50内のこれ
ら付加的なフィールドは、タイプフィールド62およびポインタフィールド64
を含む。これらのフィールドは、エミュレータ14が変換後命令50をエミュレ
ータ14のネイティブモード機械語の1区分に対応する命令であると見なすこと
ができるようにする、変換後命令情報を保持する。ただし、付加的なフィールド
62および64は、命令18に必ずしもアペンドされる必要はなく、本発明の範
囲および精神から離れることなくそれらを命令18にアペンドされない別個のメ
モリロケーションにストアすることも可能であることを理解されたい。好ましい
実施例においては、付加的なフィールド62および64は命令の一部分である。
なぜなら、その方が命令ストリームの書換えをより簡単に管理できるためである
。
しかし、図2に示す変換後命令50の実施例は好ましい実施例である。という
のも、付加的な変換フィールド62および64は固定長の命令内のスペアビット
として、対応する命令18と既に関連付けられており、したがって、別個のメモ
リ内におけるタイプフィールドおよびポインタフィールドの場所を示すフラグま
たはアドレスを提供する必要がなくなるためである。さらに、エミュレータ14
はしばしば、自身がエミュレートするハードウェアシステムよりもアーキテクチ
ャ上のワードサイズが大きいハードウェアを含むことがある。これは多くの場合
、エミュレータ14がより古い、またはより旧式のハードウェアシステムをエミ
ュレートするのに使用されるという事実に基づく。このため、命令18に付加的
なフィールド62および64を含むために、特定数のスペアビットを使用するこ
ともできる。たとえば、ターゲットハードウェアシステムが32ビットのアドレ
スバスと32ビットのデータバスとを含み、エミュレータ14が64ビットのア
ドレスおよびデータバス上で動作する場合が考えられる。この場合、命令18に
付加的なフィールドをアペンドすることのできる32スペアビットが生まれる結
果となる。
本発明の別の実施例においては、命令18は伝統的な8ビットバイトの倍数と
は異なる固定長を有する。たとえば、一実施例においては、命令18の長さは3
6ビットであり、これは32ビットバスよりも大きいバスを必要とする。64ビ
ットバスであれば、付加的な28ビットが生まれ、その中で、命令18に対して
タイプフィールド62およびポインタフィールド64をアペンドすることが可能
となる。これら付加的なフィールド62および64または他のフィールドについ
ては、下により詳細に説明する。
図3から図4Hに関する以下の説明は、命令の変換に関する。しかし、データ
変換も同様に行なうことができ、これは、図3から図4Hに関する以下の説明を
読むことにより、当業者には容易に明らかとなろう。データ変換に関しては、図
11に関連して下に詳細に述べる。
図3は、本発明の1局面を示す一般的なフロー図である。処理は、ステップ1
00から開始され、ステップ100においては、エミュレータによって命令バン
クから1つの命令がアクセスされる。命令バンクは、ターゲットシステムのスト
レージ12内に含まれ得るが、代替的に、ターゲットシステムのストレージ12
からターゲットシステムのストレージ12とは別個の独立したメモリに転送する
ことも可能である。判断ステップ102においては、アクセスされた命令が先に
変換されているかどうかが判定される。未だ変換されていない命令は「オリジナ
ル」命令と呼ばれる。命令が一旦変換されると、それはもはやオリジナル命令で
はない。しかし、変換された命令の命令18部分が書換えられた場合には、変換
後命令がその「オリジナル」の状態に再び戻ることもある。たとえば、自己書換
えモードが使用される場合のように、命令18自身内に情報がストアされる場合
に、このような状況が起こり得る。
図2の変換後命令50のような変換後命令フォーマットが使用される場合、タ
イプフィールド62によって表わされるスペアビットを監視することによって、
対象となる命令がオリジナル命令であるかどうかを判定することができる。オリ
ジナル命令については、フィールド62はその命令が未だ変換されていないこと
を示す予め定められた値に設定されている。たとえば、フィールド62は本発明
の一実施例においてはクリアされて、それがゼロビットのみを含むようにされる
。すなわち、フィールド62は「ゼロで埋められる」。この場合、タイプフィー
ル
ド62はタイプ「オリジナル」であると考えられ、命令が未だ変換されていない
ことが示される。ただし、オリジナルに等しいタイプを示す他のデジタル方法を
使用することもでき、たとえば、命令が変換されているかどうかを直接示すフラ
グビットを使用することも可能であると理解されたい。
命令が未だ変換されていない場合には、処理は判断ステップ104へと進む。
判断ステップ104においては、その特定の命令を変換すべきかどうかが判定さ
れる。たとえば、プログラム単位で特定される命令、または、何らかの機能コー
ドもしくはオペランドを有する特定の命令を、変換が行なわれないよう指定する
ことも可能である。これは、ほとんど実行されることのない命令に望ましいであ
ろう。というのも、命令を変換するのに必要な時間を費やすことが、その命令が
実行されるであろう時間が非常に短いことから考えて、非生産的であるためであ
る。変換が望ましくない場合には、処理は直接、解釈ステップ106へと進む。
解釈ステップ106においては、命令が解釈されるが、これについては下により
詳細に説明する。ステップ106において命令の解釈がなされた後、判断ステッ
プ110において、まだ解釈すべき命令があるかどうかが判定され、もしあれば
、アドレスポインタがステップ112で示されるように、次の命令へとインクリ
メントする。アドレスポインタがインクリメントされると、処理は判断ステップ
100に戻る。もしエミュレートされるべき命令が他にはないと判断ステップ1
10で判定されると、そのプログラムまたはその特定グループの命令の処理が終
了する。
判断ステップ104で変換が望ましいと判断された場合には、処理は変換後命
令ステップ108へと進む。変換後命令ステップ108において、命令は、その
特定の命令がエミュレータ14に次に提示されたときにエミュレータ14のネイ
ティブモード機械言語によってよりたやすく認識することができるフォーマット
へと変換される。この変換は、図2に示すタイプフィールド62に特定の命令タ
イプを、およびおそらくは、図2に示すポインタフィールドにアドレスポインタ
値をストアするステップを含む。タイプフィールド62およびポインタフィール
ド64は、エミュレータ14によって容易に理解されるネイティブモード機械語
を含む。ステップ108において命令が変換されると、処理はステップ108か
らステップ114へと移り、ステップ114において、変換後命令が、ネイティ
ブモードの機械上で直接実行されるべき1または複数のネイティブモードルーチ
ンを指定する。
判断ステップ102において命令が既に変換されているものと認識された場合
には、タイプフィールド62内のタイプはもはやタイプ「オリジナル」ではなく
、処理は判断ステップ102から直接、ステップ114へと移る。ステップ11
4においては、変換後命令が、ネイティブモードの機械上で直接実行されるべき
1または複数のネイティブモードルーチンを指定する。図3に示したフロー図に
よってわかるように、ステップ106における解釈はバイパスすることができる
。なぜなら、命令はネイティブモード機械語を指す変換後命令へと既に変換され
ているためである。したがって、最初に命令がエミュレートされたときにその命
令を変換することによって、その命令がその後に実行されるたびに、時間を大幅
に節約することが可能となる。
本発明の別の実施例においては、変換ステップ108と解釈ステップ106と
を組合せた変換方法を提供することも可能である。この場合、解釈および変換は
実質的に同時に行なうことができ、その後、処理が判断ステップ110に進む。
この場合、ターゲット命令が最初に変換されるたびに解釈が行なわれる。これは
図3とは異なる。図3では、ステップ108において変換された命令は必ずしも
解釈されない。というのも、変換が起こった後に処理はステップ114へと進む
ためである。ステップ106および108を組合せることによって、ステップ1
06における解釈の処理中に、変換の一部に使用することのできる情報を集める
ことが可能となる。たとえば、解釈ステップ106によってデコードされたアド
レスを、個別の変換のためにフィールド64内に配置されるべきエミュレーショ
ン情報の一部として使用することができる。
図4A〜図4Hは、本発明の別の実施例のより特定的なフロー図を示す。まず
図4Aを参照して、処理はステップ200から開始する。ステップ200におい
ては、命令が命令バンクからアクセスされる。命令がアクセスされると、処理は
判断ステップ202に進む。ステップ202においては、その命令が先に変換さ
れているかどうかが判定される。その命令が変換されていない場合(タイプ(T
YPE)が「オリジナル(ORIGINAL)」である場合)、処理はルーチン
204に進む。ルーチン204において、命令の変換および命令の解釈が行なわ
れる。
命令が既に変換されている場合(TYPEが「ORIGINAL」ではない場
合)、分析が行なわれて、行なわれた変換のタイプおよび、その変換によってポ
インタ(POINTER)フィールド内にネイティブモードのアドレスがストア
されたかどうかが判定される。(図2のTYPEフィールド62およびPOIN
TERフィールド64参照)。この分析における判断ステップは、判断ステップ
206、208、210および212を含む。変換のタイプがこれら判断ステッ
プに示されるタイプの中にない場合には、そのTYPEはステップ214におけ
る最後のオプションである「インデックスなし(NON−INDEXED)」と
なる。なお、TYPEフィールドが分析される順序は、本発明には無関係である
と理解されたい。
図2にTYPEフィールド62として示されるTYPEフィールドは、命令1
8に対してなされた変換の種類を示す値を含む。先に示したように、一実施例に
おいては、ゼロの値がこの命令に対して変換がなされなかったことを示す(TY
PE=ORIGINAL)。各ターゲットシステム命令が最初に実行されるとき
、それはTYPE「ORIGINAL」から別のタイプへと変換され得る。ステ
ップ206からステップ214によって見出される他の変換のタイプは、ジャン
プ(JUMP)、ポインタ(POINTER)、実行済(EXECUTED)、
インデックス付き(INDEXED)およびインデックスなし(NON−IND
EXED)を含む。本発明の範囲および精神から離れることなく、他の変換の種
類もまた追加または削除することが可能である。
第2のフィールドは、図2においてPOINTERフィールド64として示さ
れる。このフィールドは、TYPEフィールド62内の変換のタイプに応じたア
ドレスポインタを含む。変換のタイプがPOINTERに等しい場合、POIN
TERフィールド64は関連の命令または命令グループに対してネイティブモー
ドエミュレーションルーチンを指すポインタを含む。タイプ「JUMP」に等し
い変換のTYPEについては、POINTERフィールド64は実行されるべき
次のターゲットシステム命令を指すネイティブモードアドレスポインタを含む。
他のタイプが、POINTERフィールド64を使用して、関連するデータのパ
ケットを指すようにすることも可能である。
コントローラ22はTYPEフィールドを調べて、その命令が先に変換されて
いるかどうかを判定する。命令がTYPE「ORIGINAL」であると示され
た場合、その命令は、命令の特性および、その特定の「バンク」内でその命令の
ために選択された変換レベルに基づいて、ネイティブモードの形へと変換するこ
とができる。
判断ステップ206は、変換TYPEフィールド62がタイプ「JUMP」を
含むかどうかを判定する。命令が最初に変換されたのは、命令バンクから最初に
読出されたとき、変換/解釈ステップ204においてである。判断ステップ20
6でその変換がJUMPに等しいTYPEを示すと判定された場合、処理はステ
ップ216に進む。タイプJUMPの命令は、ターゲットシステム内の、インデ
ックスなし無条件ジャンプから変換される。この変換においては、ジャンプター
ゲットアドレスは変換/解釈ステップ204によって検査された。ステップ21
6においては、POINTERフィールド64から、実行されるべき次のターゲ
ットシステム命令のネイティブモードアドレスポインタがロードされる。次の命
令アドレスがロードされると、処理はリンク「A」218からリンク「A」22
0を介してステップ200に戻り、ステップ200において、ネイティブアドレ
ス「POINTER」にある命令にジャンプする。そして、その新しい命令につ
いて、通常通り処理が続けられる。
判断ステップ206においてTYPEが「JUMP」でないと判断された場合
、処理は判断ステップ208に進み、ステップ208において、変換TYPEフ
ィールド62がタイプ「POINTER」を含むかどうかが判定される。タイプ
POINTER命令は、POINTERフィールド64内に、対応するターゲッ
トシステム命令または命令の組に対するネイティブモードエミュレーションルー
チンを指す関連情報を有する。TYPEがPOINTERである場合、処理はス
テップ222に進み、ステップ222において、POINTERフィールド64
内のアドレスによって指定されたネイティブモードルーチンが実行される。この
ル
ーチンの実行が完了すると、判断ステップ224において命令ポインタをインク
リメントする必要があるかどうかが判定される。アドレスポインタが種々のルー
チンを指すために、実行され得るルーチンには多種多様のものがあり、そのため
、それらはサブルーチンコールで呼出される場合もそうでない場合もあり、した
がって、サブルーチンリターンを介して戻る場合も戻らない場合もある。したが
って、呼ばれたサブルーチンがない場合には、アドレスポインタは次の命令を既
に指している場合もあり、その場合、処理はリンク「A」226からリンク「A
」220を介してステップ200に戻る。場合によってはサブルーチンコールが
サブルーチンリターンを介して戻ることもあり、その場合、命令ポインタは次の
命令にインクリメントされなければならず、したがって処理は、リンク「C」2
30からリンク「C」232を介してステップ228に進む。
判断ステップ208においてTYPEが「POINTER」ではないと判断さ
れた場合、処理はリンク「B」234からリンク「B」236を介して判断ステ
ップ210に進む。判断ステップ210は、変換TYPEフィールド62がタイ
プ「EXECUTED」を含むかどうかを判断する。タイプEXECUTEDの
命令は、特定の命令がある理由によって変換されるべきではない場合に使用され
る。たとえば、特定の命令がほとんど実行されないものである場合にこれが使用
される。これはまた、自己書換えコードが使用されて、命令が頻繁に書換えられ
るのでその変換が「オリジナル」の状態に繰返し戻るため、その命令を変換しよ
うとする試みが無駄であるような場合にも使用される。この他にも、命令が変換
されないようにプログラマーが制限を加える、他の理由も存在するであろう。
先に説明したように、命令はそれが変更されると「オリジナル」状態に戻り、
TYPEフィールド62およびPOINTERフィールド64は予め定められた
値に戻る。好ましい実施例において使用される予め定められた値はゼロ値であっ
て、この場合、TYPEフィールドおよびPOINTERフィールドにはゼロが
埋められる。これらのフィールドは、命令が修正されると自動的にゼロで埋めら
れる。
したがって、TYPEが「EXECUTED」である場合、変換が行なわれる
ことはなく、これは、解釈がやはり必要であることを意味する。処理はその後サ
ブルーチン238に進み、変換されていない命令を解釈する解釈ルーチンが行な
われる。ステップ238における解釈の後に、処理は判断ステップ240に進む
。ステップ240では、ステップ238において「ジャンプ」命令であると解釈
された命令については、処理がリンク「A」242からリンク「A」220を介
してステップ200に進む。解釈された命令が「ジャンプ」命令でない場合には
、処理はリンク「C」244からリンク「C」232を介してステップ228に
進む。
判断ステップ210においてTYPEが「EXECUTED」でないと判断さ
れた場合には、処理は判断ステップ212に進む。判断ステップ212は、変換
TYPEフィールド62がTYPEIINDEXED」を含むかどうかを判定す
る。
インデックスアドレシングとは、実効アドレスが、インデックスレジスタの現
時点における内容と、図2に示すアドレスフィールド56等のように、通常その
命令によって提供されるオフセットとの合計であるアドレシング方法である。本
発明の一実施例においては、少なくとも2種類のレジスタ、すなわちAレジスタ
およびXレジスタがある。Aレジスタは、インデクシングに使用することはでき
ず、代わりに、アキュムレータおよび他の汎用レジスタとして使用される。これ
に対し、Xレジスタはターゲット計算システムのアーキテクチャに含まれる「イ
ンデックスレジスタ」である。命令は典型的に修飾子を含み、これは、図2に示
すアドレス56に対して付加されるオフセットである。
しかしながら、ストレージには「バンク」と呼ばれる複数領域が存在し得る。
これらは種々のプログラムまたはデータのグループを表わす。このようなバンク
の例を図1に、ネイティブモード命令バンク21として示した。このように、複
数のインデックスレジスタすなわちXレジスタ、および、それに対応するバンク
の開始アドレスを含むバンクディスクリプタ(BD)が存在する。BDはまた、
メモリバンクに関連する種々の特性、たとえば、アクセス権および許可される(
たとえば読出、書込、実行等の)アクセスの種類を示す。アクティブベーステー
ブル(ABT)は、現時点において実行しているプログラムアクセスを保持して
いるバンクディスクリプタ(BD)の各々をストアする。
インデックスオペランドおよびインデックス処理を含む命令が望まれる場合、
処理はルーチン246に進む。ルーチン246については、図4Fに関連してさ
らに説明する。
判断ステップ212においてTYPEが「INDEXED」でないと判断され
た場合、処理はステップ214に進む。ステップ214は、そのタイプがTYP
E「NON−INDEXED」であることを示す。NON−INDEXEDタイ
プは、そのアドレスがインデックスアドレシングを利用しないことを示し、この
場合、ルーチン250が呼出される。ルーチン250については、図4Gに関連
してさらに詳細に説明する。
なお、判断ステップ206、208、210、212および214が好ましい
実施例において使用される実際のコーディング方法を反映するものではなく、単
に、TYPEがこれら判断ステップにおいて示されるタイプのうちいずれかであ
り得ることを示すものであると理解されたい。たとえば、フロー図はTYPEが
JUMP、POINTER、EXECUTED、INDEXED、またはNON
−INDEXEDであり得ることを示してはいるが、それらの判断ステップは、
エミュレーションハードウェアおよび/またはソフトウェアがTYPEが何であ
るかを判定するのに「比較」機能を連続的に行なうことを必ずしも示しているわ
けではない。好ましい実施例においては、「比較」は全く行なわれず、アドレス
テーブルが使用される。この場合、特定のTYPEの値は、アドレステーブルの
開始時点からオフセットされたアドレスとして表わされ、それにより、対応のエ
ミュレーションルーチンへと自動的にジャンプする。
ここで図4Cを参照して、変換/解釈ルーチン204のフロー図が示される。
このプロセスにおける第1のステップは、どのレベルの変換が指定されたかを判
定するものである。これは、判断ステップ300において行なわれて、指定され
た変換レベルが判定される。変換のレベルは、プログラム、メモリバンク、また
はシステム単位で選択することが可能である。変換のレベルの選択には、ある種
の制限およびトレードオフが存在する。たとえば、完全変換は、すべての命令が
変換されるので、最初に実行するのに他の変換レベルよりも時間が長くかかる。
さらに、完全変換は、より多くのネイティブモードプログラムルーチンを利用す
る必要があるため、より多くの記憶スペースを必要とする場合がある。しかし、
一旦変換されれば、完全変換システムのスピードは変換がなされていないシステ
ムよりも非常に高速となる。
本発明の一実施例においては、6つの変換の種類が存在する。これらは、「変
換なし」、「一般変換」、「個別変換」、「一般機能変換」、「個別機能変換」
、および「完全変換」である。メモリロケーションまたはレジスタを使用して、
所望の変換レベルをストアすることが可能であり、どのレベルが望まれるかに応
じて、図4Cに示したフロー図において対応の経路が辿られる。
判断ステップ300がライン302に示すように、指定された変換レベルが変
換なし(NO TRANSFORMATION)であると認識した場合、すべて
の命令はそれらがエミュレーションシステムに入るたびに解釈される。したがっ
て、それらの命令に対して変換がなされることはない。これは、特定の命令バン
クがほとんど使用されない場合(たとえば、種々のエラールーチンに対する命令
バンク)、または、実行される命令の数に対して命令の自己書換え率が非常に高
い命令バンクにおいて、認められ得る。これはまた、「データ」バンクについて
も望ましいが、これについては図11に関連してより詳細に説明する。このよう
に変換が望まれない場合には、処理はリンク「E」304からリンク「E」30
6を介して解釈サブルーチン238に進む(図4B参照)。
判断ステップ300がライン308で示すように指定された変換レベルが一般
変換(GENERIC TRANSFORMATION)であると認識した場合
、種々の命令に対して一般変換が行なわれる。一般変換によって命令を変換する
ためには、TYPEフィールド62はステップ310で示すように、タイプPO
INTERに設定される。POINTERフィールド64は、一般命令エミュレ
ーションルーチンのライブラリからの、その命令に対する一般ネイティブモード
エミュレーションルーチンのアドレスを含むように設定される。一般命令実行は
、特定のレジスタおよびオペランドロケーション等の、解釈すべき「パラメータ
」を有する。処理はステップ222(図4A)に進み、ステップ222において
そのポインタにおけるルーチンが実行される。リンク「D」312からリンク「
D」314を介してステップ222に進む経路を図に示す。
判断ステップ300がライン316に示すように、指定された変換レベルが個
別変換(UNIQUE TRANSFORMATION)であると認識した場合
、個別の変換が種々の命令に対して実行される。個別変換によって命令を変換す
るには、TYPEフィールド62はステップ318に示すように、タイプPOI
NTERに設定される。POINTERフィールド64は、その命令に対する個
別のネイティブモードエミュレーションルーチンのアドレスを含むように設定さ
れる。個別の命令実行は、解釈すべき「パラメータ」を有さず、したがって、個
別の命令変換の方が、一般変換と比較してより高速の実行コードを生み出す。個
別の命令変換は、エミュレートされる全命令を実行するルーチンを提供する。一
般変換と同様に、処理はステップ222(図4A)に進み、ステップ222にお
いてそのポインタにおけるルーチンが実行される。リンク「D」320からリン
ク「D」314を介してステップ222に進む経路を図に示す。
判断ステップ300がライン322で示すように、指定された変換レベルが一
般機能(GENERIC FUNCTION)であると認識した場合、POIN
TERフィールド64におけるアドレスは、この命令およびそれに続く複数の命
令によって生成される「機能」をエミュレートする、一般的ネイティブモードル
ーチンを指す。一般機能実行は、一般命令実行と同様に、解釈すべき「パラメー
タ」を有し得る。たとえば、一連の命令に対する特定のレジスタおよびオペラン
ドロケーション等である。
一般機能変換はステップ324から開始し、ステップ324において、次のい
くつかの命令のうちある数の命令が集められる。集められる命令の数はトランス
フォーマの性能レベルまたはプログラマが提供する機能に応じて決まるが、この
ことは、本発明の柔軟性を示している。処理は判断ステッブ326に進み、判断
ステップ326において、既存の一般機能に一致するかどうかが判定される。判
断ステップ326は、ステップ324において得られた命令が特定の命令のシー
ケンスと一致するかどうかを認識ずる。もし一致していない場合、処理はリンク
「F」328からリンク「F」330を介してステップ310に戻り、その後、
それら集められた命令を、処理が経路308を辿った場合と同様に、個々の一般
変換を必要とする個別の命令として扱う。ステップ324で集められた命令が所
定の命令のシーケンスと一致する場合には、処理はリンク「G」334からリン
ク「G」336を介して、図4Dのステップ332に進む。
次に図4Dを参照し、ステップ332は、TYPEフィールド62内のタイプ
をPOINTERにセットすること、および、POINTERフィールド64内
に機能を行なう一般的ネイティブモードルーチンのアドレスを入れること、を含
む。ステップ338へと進むことで機能が実行され、ステップ338では機能の
第1の命令に対するポインタが獲得され、次にリンク“D”340からリンク“
D”314を通じて図4Aのステップ222へと処理が続く。次にステップ22
2に示すルーチンを実行することで機能が行われる。
再び図4Cを参照し、判断ステップ300が、ライン342に示すように指定
された変換レベルUNIQUE FUNCTIONを認識すると、POINTE
Rフィールド64内のアドレスは、この命令およびそれに続くいくつかの命令に
より生成される個別の機能をエミュレートする個別のネイティブモードルーチン
を指す。個別の命令実行と同様、個別の機能実行は、解釈すべき「パラメータ」
を持たず、したがって、個別の機能変換では一般的機能変換の場合と比べて実行
コードがより高速になる。たとえば、変換された個別機能ルーチンは、指定され
たレジスタおよびストレージロケーションなどのパラメータがルーチン内にコン
パイルされているため、変換された一般的機能ルーチンよりも良好に働く。個別
機能ルーチンは、特定のアドレスレジスタ、インデックスレジスタおよびデータ
を指定するLOAD、ADDおよびSTOREルーチンを完全に置換えるかもし
れない。個別の機能変換は、エミュレートされている命令シーケンスをそのまま
行なうルーチンを提供する。
個別の機能変換はステップ344で開始され、このステップでエミュレートさ
れる次のいくつかの命令が獲得される。処理は判断ステップ346へと続き、既
存の個別の機能と一致するものがあるかどうかが決定される。判断ステップ34
6は、ステップ344で獲得された命令が特定のパラメータを有する特定の命令
シーケンスと一致するかどうかを認識する。もし一致しなければ、処理は、リン
ク“H”350からリンク“H”352を通じて図4Eのステップ348へ進む
。もし一致すれば、リンク“I”356からリンク“I”358を通じて図4E
の
ステップ354へと処理が進む。
次に図4Eを参照し、判断ステップ346で一致するものがなければ、命令シ
ーケンスに対して個別のネイティブモード機能を作り出すステップ348が実行
される。この機能は、対応するターゲット命令により指示される機能と等価なネ
イティブモードでのものであろうし、ネイティブモード命令は、図1に示すネイ
ティブモード命令バンク21の少なくとも1つにストアされるであろう。
判断ステップ346で一致するものがあり、したがって機能が存在しているの
であれば、機能と機能内の各命令とのアドレスを獲得するステップ354が実行
される。処理はステップ348および354からリンク“J”360へ、そして
362へと進む。ステップ362は、TYPEフィールド62内のタイプをPO
INTERにセットすること、および、各命令について個別のルーチンに対する
それぞれのアドレスをストアするようPOINTERフィールド64をセットす
ることを含む。この機能は次にステップ364に進むことで実行されるよう準備
され、ステップ364で機能の第1の命令に対するポインタが獲得され、続いて
リンク“F”366からリンク“F”330を介して図4Cのステップ310へ
進み、処理が通常の形で続けられる。
再び図4Cを参照し、判断ステップ300が、ライン368に示すように指定
された変換レベルFULL TRANSFORMATIONを認識すると、ステ
ップ370に示すように全プログラムが変換される。完全変換の機能は、オリジ
ナルのターゲットシステム命令を実行することの“機能”を分析し、同じ機能を
与えるネイティブモードルーチンを生成することである。このような変換は複雑
なものとなり得、したがって、ルーチンが最初に実行されるときに長い時間がか
かる。
完全変換の対象となる可能性の高いプログラムは、比較的少数の命令によって
実行時間の大部分が費やされるものである。どの命令の使用頻度が高いか、した
がって完全変換の有力な候補であるかを決定するための方法を実装できる。たと
えば、命令利用プロファイルを変換プログラムに設けてもよい。このプロファイ
ルは、プログラムの実行中に命令アドレスを周期的にサンプリングすることで生
成できる。このアドレスの下位ビットは計数のためシフトアウトされる。そして
その結果は累算カウントのテーブル内の値をインクリメントするためのインデッ
クスとして使用される。得られたカウントテーブルは、各命令ブロックにおいて
費やされる相対的な時間を反映する。変換処理に対する入力パラメータは、どの
程度の量の命令アクティビティが完全変換に値するかなどの情報を提供する。こ
のレベルを超えるアクティビティを有する命令バンク内の命令は、完全変換用に
選択されるであろう。より低レベルの変換が他の命令バンクに対して使用される
であろう。
ステップ370でプログラムが変換されると、処理はステップ372へ進み、
ステップ372で完全変換を起こした命令に対するポインタがとり出される。次
にリンク“J”374からリンク“J”360を通じて図4Eのステップ362
へ処理は進み、変換されたばかりのプログラムを実行させる。
図4Fは、図4Bに示すステップ246のインデックス付きオペランドルーチ
ンを備える命令のより詳細なフロー図である。処理は、セーブされていたアクテ
ィブベーステーブル(ABT)が取出されるステップ400で開始する。もしセ
ーブされていたABTエントリが取出されたアドレスに対する現在のABTエン
トリと等しければ、同じ「バンク」がアクセスされているということを示す。セ
ーブされたABTエントリと現在のABTエントリが等しく、インデックスがア
クセスされている特定のバンクの範囲内にあれば、判断ステップ402からステ
ップ404へと処理が進む。ステップ404は、オペランドのインデックスによ
り示され変換されたアドレスを獲得すること、および命令をエミュレートするル
ーチンのアドレスを獲得することを含む。次にリンク“D”406から図4Aの
リンク“D”314を通じてステップ222へ処理が進む。
判断ステップ402の後に代替的にステップ408へ進むこともでき、この場
合は408で各使用インクリメントがカウントされる。特定のバンクが連続的に
アクセスされた場合、または特定の時間フレームの中などある規定されたパラメ
ータ内にある場合、または時間に対してある割合でアクセスされた場合、カウン
トがインクリメントされ得る。好ましい実施例では、「連続的な」バンクアクセ
スの各々によって使用カウントがインクリメントされ、予め定められた最大値に
達すると使用カウントのインクリメントは止まるであろう。この「使用カウン
ト」のインクリメントによって、特定のバンクがどの程度頻繁にアクセスされて
いるのか、その情報を変換するのが有益であるのかどうなのかの表示が与えられ
る。インクリメントカウントは、判断ステップ412で予め定められた値と比較
されるようセーブされるが、これについては以下により詳細に説明する。
セーブされたABTと現在のABTとが等しくない場合には、判断ステップ4
02からステップ410へ処理が進む。ステップ410は、インデックスにより
示されたオペランドアドレスをABTに対して検査することを含む。オペランド
アドレスがABT内にない場合は、命令は放棄され無効オペランドアドレスを示
すエラーが報告される。オペランドアドレスが有効な場合は、「セーブされたA
BT」が「現在のABT」で更新され、「使用カウント」がクリアされる。次に
処理はステップ404へ進み、続いてリンク“D”406から図4Aのリンク“
D”314を通じてステップ222へ進む。
セーブされたABTが現在のΛBTと等しくないときは、場合により判断ステ
ップ402から判断ステップ412へ進むこともできる。判断ステップ412は
セーブされた「使用カウント」をチェックし、セーブされた使用カウントと予め
定められた所望の値とを比較することによって、その使用カウントが小さすぎる
かどうかを決定する。使用カウントが小さすぎない場合は、処理は既に説明した
ステップ410へ進む。使用カウントが小さすぎる場合は、その命令を変換する
ほどの価値はないということが示され、処理はステップ414へと進んで、この
エントリを指す命令の数がデクリメントされ、TYPEフィールドがEXECU
TEDにセットされる。次に処理はリンク“E”416からリンク“E”304
そして最終的には図4Bのリンク“E”306を通じてサブルーチン238へ進
む。
図4Gは、図4Bのステップ250でのインデックスなしのオペランドルーチ
ンを備える命令のより詳細なフロー図である。セーブされていたアクティブベー
ステーブル(ABT)が取出されるステップ430で処理が始まる。もしセーブ
されていたABTエントリが現在のABTエントリに等しければ、同一のバンク
がアクセスされていることが示される。セーブされていたABTと現在のABT
とが等しい場合には、判断ステップ432からステップ434へ処理が進む。ス
テップ434は、変換されたオペランドアドレスを獲得すること、および命令を
エミュレートするルーチンのアドレスを獲得することを含む。処理は次にリンク
“D"436から図4Aのリンク“D"314を通じてステップ222へ進む。判
断ステップ432から時には、図4Fに関連して既に説明したように各使用イン
クリメントがカウントされるステップ438へ進むこともできる。
セーブされていたABTエントリと現在のABTエントリとが等しくない場合
には、判断ステップ432から、オペランドアドレスをΛBTに対して検査する
ことを含むステップ440へと処理が進む。オペランドアドレスがABT内にな
い場合には、その命令は放棄され無効オペランドアドレスを示すエラーが報告さ
れる。オペランドアドレスが有効である場合は、「セーブされたABT」が「現
在のABT」で更新され、「使用カウント」がクリアされる。処理は次にステッ
プ434に進み、さらにリンク“D”436から図4Aのリンク“D”314を
通じてステップ222へ進む。
セーブされたΛBTが現在のABTと等しくないときは、判断ステップ432
から任意に判断ステップ442へ進むことができる。判断ステップ442はセー
ブされた「使用カウント」をチェックし、図4Fに関連して説明したようにその
使用カウントが小さすぎるかどうかを決定する。使用カウントが小さすぎない場
合には、処理は既に説明したステップ440へ進む。使用カウントが小さすぎる
場合には、処理はステップ444へ進み、ステップ444でこのエントリを指す
命令の数がデクリメントされる。TYPEフィールドはEXECUTEDにセッ
トされ、処理はリンク“E”446からリンク“E”304そして最終的には図
4Bのリンク“E”306を通じてサブルーチン238へ進む。
図4Hは図4Bに示すステップ238のルーチンのフロー図である。エミュレ
ートされるターゲット命令がデコードされるステップ460で処理が始まる。ス
テップ462で、インタープリタが、ネイティブモード機械語を使用して適切な
順序で、解釈されるべきすべての直接の機能および派生した機能を行なう。リタ
ーンステップ464で図示されるように処理は元に戻る。
インタープリタはターゲットプロセッサと同じ機能を行なう。インタープリタ
は、ハードウェアプロセッサが有するであろうほど多くのパラレルパスまたはオ
ーバーラップされたパイプライン段を持たないかもしれない。インタープリタは
当分野では周知であり、さまざまな種類のインタープリタをこの発明の範囲およ
び精神から逸脱することなく使用できるであろう。
図5から図11まではこの発明による変換の例を示す。これらの例は、(図2
に示す)変換された命令50などの命令フォーマットを有する(図1に示す)エ
ミュレーションシステム10に、フロー図図3から図4のさまざまな実施例が適
用された場合のこれらの実施例に対応する。
次に図5を参照し、変換エミュレーション環境500が図示される。図1のタ
ーゲットバンク16のような命令バンク502は、命令バンク502内の複数の
連続した命令を示す。これらの命令は、命令フィールド504、タイプフィール
ド506およびポインタフィールド508を含む、図2の変換された命令50に
類似した形をとる。これらのフィールドは、図2に示す命令フィールド18、タ
イプフィールド62およびポインタフィールド64とそれぞれ類比される。一実
施例においては、フィールド504内の命令は64ビットバス内の36ビット幅
であり、残りの28ビットはフィールド506および508を含むスペアビット
または付加的ビットを含む。命令バンク502内の命令の各々に対するタイプフ
ィールド506およびポインタフィールド508は、図5に示すようにもともと
はゼロで埋められており、これらの命令がまだ変換されていないことを示してい
る。図3に関連して説明したように、判断ステップ102は、そのタイプがタイ
プ“ORIGINAL”と等しいか否かを決定することによって、その命令が前
もって変換されているか否かを決定するのであり、タイプ“ORIGINAL”
は、図5のタイプフィールド506内に示すようにタイプ値0で表わされる。
既に説明したように、変換エミュレーションの目的の1つは、命令の最初の実
行のときによりエミュレートしやすい形に命令を変換することにある。したがっ
て、タイプフィールド506がその命令がタイプ「ORIGINAL」であるこ
との表示を含むときには、所望であればエミュレータは変換を行なって変換命令
を生成し、変換された命令が後に出現したときにはより迅速かつより効率的に実
行されることを可能にする。
変換エミュレーション環境500内には、また、ターゲットシステムからのさ
まざまな命令または命令群をエミュレートするネイティブモードプログラムルー
チンが含まれる。これらのネイティブモードルーチンには共通ネイティブモード
ルーチン510があり、この共通ネイティブモードルーチン510は、複数の命
令バンク内のさまざまな命令が使用するよう利用可能な一般的ルーチンである、
ネイティブモード機械語でのプログラムルーチンを含むプログラミングされた領
域である。個別ネイティブモードルーチン512は、トランスフォーマによって
発生されることで準備されるかまたはプログラムの書込によって準備されるかす
る、特定の命令バンクに対して個別に与えられるネイティブモード機械語で準備
されたプログラムルーチンを含むプログラムスペースである。共通ネイティブモ
ードルーチン510内にストアされる一般的変換は、すべての命令バンクによっ
てアクセスでき所望の数の入力パラメータを含むよう定義できるので、この一般
的変換によって大幅な柔軟性が可能になる。
次に図6を参照し、一般的命令変換520を図示する。命令バンク502内の
LOAD命令522およびADD命令524が変換された命令として示される。
これはタイプフィールド506内にゼロの値がないことから明らかである。命令
522および524はタイプ“POINTER”に変換されており、ポインタフ
ィールド508内の値は、エミュレーションシステムのネイティブモード機械語
のプログラムルーチンのネイティブモード一般的アドレスまたは共通アドレスに
変えられている。したがって、その最初の変換の後にLOAD命令522および
ADD命令524が実行されるときには、ネイティブモードルーチンプログラム
スペース510内の共通または一般的ネイティブモードルーチンが実行される。
実行されるネイティブモードルーチンは、命令バンク502内の命令と等価なネ
イティブモードを実行するので、共通であるかまたは一般的ではあるが、LOA
DとADDネイティブモードルーチンについては何をロードするのかおよび何を
加えるのかを知るための特定の情報が依然として必要である。プログラムスペー
ス510において共通ネイティブモードルーチンを利用することによって、エミ
ュレータは、ポインタフィールド508により与えられるネイティブモードアド
レスにジャンプしそのアドレスに存在するネイティブモードルーチンを実行する
ということを知っているため、エミュレータはもはや命令バンク502からの命
令をデコードするなどのさまざまなタスクを行なう必要がない。
次に図7を参照し、個別命令変換530が図示される。個別命令変換において
は、ネイティブモードルーチンは関連付けられる命令バンク内の各命令に対し特
有のものである。したがって、固定オペランドまたはオペランドロケーションを
有する命令バンク502からの命令は、同じ機能を行なうネイティブモードルー
チンで置換えられる。
たとえば、STORE命令532のタイプは、POINTERに変換され、ポ
インタ値は個別アドレスとなっている。変換されたSTORE命令532が実行
されるとき、エミュレータはポインタフィールド508内の個別アドレスにジャ
ンプし、この特定のSTORE命令532をネイティブモード機械語で実行する
ためのルーチンを含む個別ネイティブモードルーチンプログラムスペース512
内のネイティブモードルーチンを実行する。特に、命令が何度も実行される場合
、または特定の命令のコピーがプログラム内に多数現われる場合、個別の命令変
換によってシステムの効率が上がる。
図8を参照し、無条件ジャンプ変換540が図示される。タイプフィールド5
06がタイプJUMPに変換されるとき、このタイプの変換が生じる。命令バン
ク502内の変換されたJUMP命令542は、タイプフィールド506内にタ
イプJUMPを有し、ポインタフィールド508内にネイティブモード機械語ア
ドレスを有する。したがって、変換されたJUMP命令542が実行されるとき
、エミュレータはすぐに命令バンク502内の他の命令の処理を始めるよう、ポ
インタフィールド508により表わされるネイティブモードアドレスへジャンプ
する。ジャンプした先のアドレスは、オリジナルのJUMP命令542のジャン
プアドレスがら変換されたネイティブモードアドレスへ処理を進ませるためのネ
イティブモードアドレスである。
次に図9を参照し、一般的機能変換550が図示される。一般的機能変換は、
一連の命令の機能を行なう共通ネイティブモードルーチンプログラムスペース5
10内の共通ルーチンまたは一般的ルーチンへのポインタを作り出すことによっ
て行なわれる。たとえば、LOAD命令522、ADD命令524およびSTO
RE命令532は、「メモリ加算(ADD TO MEMORY)」ネイティブ
モードルーチンで置換えることができる。このルーチンはプログラムスペース5
10内にストアされ、さまざまなパラメータがこの一般機能に依然として入れら
れ、1つまたは2つ以上の命令バンクからのさまざまなLOAD、ADDおよび
STORE命令シーケンスによりこれを使用することができる。
次に図10を参照し、個別機能変換560が図示される。個別の機能変換は、
置換えられた機能の機能を正確に行なうネイティブモードルーチンを提供する。
たとえば、このネイティブモードルーチンは特定のストレージロケーションを他
の特定のストレージロケーションに加えることができるだろう。これは、プログ
ラムスペース512内のネイティブモードルーチンとして与えられる特定のLO
AD、ADDおよびSTOREシーケンスを提供することによって達成される。
したがって、もし特定のLOAD、ADDおよびSTOREシーケンスが繰返し
実行されるのであれば、プログラムスペース512内にこれらの命令すべてを行
なう個別のネイティブモードルーチンを設け、それらの特定のパラメータを前も
って考慮するようにすることが賢明であろう。
一般的機能変換および個別機能変換の両方において、最初の命令以外の命令は
「オリジナル」のままでもよいし、または「実行済」などの特定のタイプに設定
されてもよい。最初の命令以外の命令のタイプはまた、他の一般的命令ルーチン
または個別命令ルーチンに対する「ポインタ」に設定されてもよい。これによっ
てこれらの命令にジャンプすることが可能になり、これらの命令を個別にエミュ
レートできるであろう。しかし、予め定められた命令のグループ内の最初の命令
へのジャンプの場合には、複数の命令の機能は、一般的変換の手法または個別変
換の手法のいずれかによってエミュレートされるであろう。
次に図11を参照し、データ変換570を図示する。「データ」変換とは、命
令の部分ではない情報(ただし命令の拡張部ではあるかもしれない)が変換され
るものである。たとえば、固定長の命令を有するターゲットシステムにおいては
、いくつかの機能において、1つのオペランドが多数のオペランドのアドレスを
含むパケットである必要がある可能性がある。たとえば、ビット移動コマンドは
、アドレスAからアドレスBへ情報を移動させる。システムは単一命令マシンで
あるため、1つの命令の中でアドレスAとアドレスBの両方を指すことはできな
い。
そこで、命令データパケットは発信元アドレスと行先アドレスとを有するのだが
、これらは続くバイトまたはワード内にある命令の「拡張」である。ソースコン
ポーネントおよび行先コンポーネントは、命令と同様にインデックスアドレシン
グ、インデックスなしアドレシングなどを使用できる。
この結果、第1のレベルの変換で命令が変換され、また、「拡張された」また
は「データ」パケット部に向けられる第2のレベルの変換が可能になる。この拡
張されたパケット部を変換することにより実行が速くなる。しかし、そのパケッ
トがしばしば変更されるのであれば、「データ」パケット部に変換を行なうこと
は無駄であろうから、その場合、これはEXECUTEDのTYPEとして取扱
われ、変換されない。
図11は、データ変換が生じる場合の一実施例を示す。命令は、命令の拡張で
ある情報を含むディスクリプタを含むデータを使用してもよい。TYPEフィー
ルド506内のTYPE BDが、直接参照することができる変換されたバンク
ディスクリプタ(BD)フォーマットを可能にする。この場合、ディスクリプタ
データを、エミュレータによってより容易に処理できる形に変換することができ
る。この処理は既に説明した命令変換と同様である。データ変換は、データが頻
繁に読出されるがほとんど変更されない場合に行なわれるのが典型的である。
他の特定の命令、たとえばLBU命令572などもデータを使用してもよい。
これらの命令は、バンクディスクリプタ(BD)と呼ばれるストレージ内の構造
から基底レジスタにロードする。ストレージ内のBD情報は頻繁に読出されほと
んど変更されないデータである。したがって、頻繁に読出されほとんど変更され
ないどんなデータでも、後に変換されることはそれに比例して稀であろうから、
データ変換のよい候補となるだろう。
LBU命令572は、個別のネイティブモードルーチンプログラムスペース5
12内に示されるように個別に変換され、対応する「拡張された命令」データは
、最初はタイプが「オリジナル」であるBDワード1 576およびBDワード
0574からわかるように命令フィールド504へロードされる。図11に示す
ようにこれらのワードへの後のアクセスは、データワードの一方(この例ではB
Dワード1 576)のタイプフィールド506内にタイプBDを含むであろう
し、
ポインタフィールド508内に情報を有するであろう。データワードのいずれが
が変更されると、タイプはタイプ「オリジナル」に戻る。これは前に説明した命
令変換と同様である。
ポインタフィールド506内の情報は、より使用しやすい形のバンクディスク
リプタを指し、それはポインタフィールド508内の個別のアドレスにより特定
される。このより使用しやすいデータは、POINTERフィールド508によ
り指し示されるアドレスにあり、個別のネイティブモードルーチンプログラムス
ペース512においては「変換されたBDフォーマット」として示される。
この発明を、現在企図される最良の形態で説明してきたが、当業者の能力およ
び技量の範囲内でかつさらなる発明がなくとも、この発明にさまざまな修正、動
作モードおよび実施例を加えることができることは明らかである。したがって特
許により保護されるよう意図されるのは以下の請求の範囲に示すものである。
【手続補正書】
【提出日】平成11年7月7日(1999.7.7)
【補正内容】
(1) 明細書の第2頁第8行目と第9行目との間に以下の段落を挿入する。
記
コンパイラ型のエミュレーションを行なうための1方法が、WO96/308
29号に開示されている。この方法に従えば、エミュレートされるコード内のエ
ミュレートされる命令シーケンスが、エミューレートを行なうプロセッサのネイ
ティブの命令セットでコーディングされた命令シーケンスに翻訳される。この翻
訳を、命令毎ではなく命令のシーケンスについて行なうことにより、この方法は
命令のエミュレーションに関連する処理量を減らそうとしている。
(2) 明細書の第2頁第9行目の「しかし、これらのエミュレーション手法
は」を「しかし、WO96/30829号に開示されるようなエミュレーション
手法は」に変更する。
(3) 明細書の第2頁第18行目と第19行目との間に以下の段落を挿入す
る。
記
自己書換えコードを扱うエミュレーションシステムおよび方法の1例が、EP
−A−0 327 195号に見られる。その中に開示されたシステムは、コン
パイラ型エミュレーションを行なって、ターゲットシステム上の命令の実行をエ
ミュレートする。このエミュレーションシステムは、エミュレーションプロセス
の一部として、ターゲットシステムのメモリを、エミュレーションシステム内に
含まれるメモリへとマッピングする。このエミュレーションシステムはさらに、
エミュレーションシステムのメモリにマッピングされたメモリロケーションのう
ち予め定められたロケーションに対するそれぞれのステータスインジケータを記
録する。各ステータスインジケータは、それぞれのメモリロケーションがどのよ
うに使用されるかを記録するのに使用される。たとえば、あるステータスインジ
ケータは、それぞれのメモリロケーションがデータをストアするため、命令をス
トアするため、またはメモリマップされたI/Oを行なうために使用されている
ことを示すこともある。エミュレーション中に、あるエミュレーションメモリの
ロケーションが書換えられると、それぞれのステータスインジケータが問合せら
れ、その書換えが命令の書換えに関連するのか、メモリマップされたI/O動作
に関連するのかが判断される。いずれの場合にも、エミュレーションシステムは
、特別な動作を行なう必要があるだろう。この方法においては、メモリの書換え
があるとそのたびに、エミュレーションシステムがステータスインジケータを参
照し、その後、その書換えを処理するのにどのようなステップが必要であるかを
判断するためにある判断コードを実行せねばならないため、エミュレーションプ
ロセス中のオーバヘッドを増やしてしまうという欠点がある。
(4) 明細書の第2頁第20〜21行目の「問題に対処することが」を「問
題により効率的に対処することが」に変更する。
(5) 請求の範囲を別紙のとおり訂正する。
請求の範囲
1.エミュレーションホスト計算システムにおいてターゲットコンピュータシス
テムをエミュレートするための方法であって、前記ターゲットコンピュータシス
テムは、一つまたは二つ以上の命令バンクにストアされる複数のターゲット命令
を実行することができ、前記方法は、
(a)ターゲット命令(18、20)を命令バンク(16)からそれらの実行
の順番で連続的に受取るステップと、
(b)各ターゲット命令ごとにそのターゲット命令により行われるそれぞれの
機能を特定するために命令バンクからのターゲット命令各々をそれらの実行の順
番で解釈するステップと、
(c)エミュレーションホスト計算システム(10)のネイティブモード機械
語およびハードウェアを使用して、前記解釈するステップにおいて特定された前
記それぞれの機能の各々を実行するステップと、
(d)ターゲット命令のうち選択されたターゲット命令を変換後命令(50)
に変換するステップとを含み、前記変換後命令は、各々、ターゲット命令とそれ
ぞれの変換タイプコード(62)とを含み、前記それぞれの変換タイプコードは
、前記変換後命令の各々の後の実行を達成するためエミュレーションホスト計算
システムによって行われるアクションを示し、前記方法はさらに、
(e)前記変換後命令に前もって変換されたターゲット命令の各々に対する前
記それぞれの変換タイプコードを分析し、エミュレーションホスト計算システム
のネイティブモード機械語およびハードウェアを使用して前記それぞれの変換タ
イプコードに応答した態様で、変換後命令の対応する機能を実行するステップを
含み、前記解釈するステップと前記変換するステップとは、前記変換後命令の後
の発生の際にはバイパスされる、エミュレーションホスト計算システムにおいて
ターゲットコンピュータシステムをエミュレートするための方法。
2.前記変換するステップは、複数の異なった変換レベルから変換レベルを選択
するステップを含み、前記選択された変換レベルは、関連付けられるターゲット
命令に対して行われる変換の異なった程度を規定し、前記関連付けられるターゲ
ット命令は、前記選択されたターゲット命令のうち、前記選択された変換レベル
により変換されるよう割り当てられたターゲット命令である、請求項1に記載の
エミュレーションホスト計算システムにおいてターゲットコンピュータシステム
をエミュレートするための方法。
3.前記変換レベルを選択する前記ステップは、前記関連付けられるターゲット
命令のいずれも変換されないように、ヌル変換レベルを選択するステップを含む
、請求項2に記載のエミュレーションホスト計算システムにおいてターゲットコ
ンピュータシステムをエミュレートするための方法。
4.変換レベルを選択する前記ステップは、一般的変換レベルを選択するステッ
プを含み、前記関連付けられるターゲット命令は、前記関連付けられるターケッ
ト命令のそれぞれ一つにより指定される機能を各々行なうための共有ネイティブ
モードエミュレーションルーチン(510)を指定するよう変換され、前記関連
付けられるターゲット命令に関連付けられる特定のパラメータが前記共有ネイテ
ィブモードエミュレーションルーチンに与えられる、請求項2に記載のエミュレ
ーションホスト計算システムにおいてターゲットコンピュータシステムをエミュ
レートするための方法。
5.変換レベルを選択する前記ステップは、一般的機能変換レベルを選択するス
テップを含み、前記関連付けられるターゲット命令は、前記関連付けられるター
ゲット命令のうち複数の連続したターゲット命令のそれぞれによって指定される
機能を各々行なうための共有ネイティブモードエミュレーション機能ルーチン(
510)を指定するよう変換され、前記関連付けられるターゲット命令に関連付
けられる特定のパラメータが共有ネイティブモードエミュレーション機能ルーチ
ンに与えられる、請求項2に記載のエミュレーションホスト計算システムにおい
てターゲットコンピュータシステムをエミュレートするための方法。
6.変換レベルを選択する前記ステップは、個別変換レベルを選択するステップ
を含み、前記関連付けられるターゲット命令は、前記関連付けられるターゲット
命令のそれぞれ一つにより指定される機能を各々行なうための個別ネイティブモ
ードエミュレーションルーチン(512)を指定するよう変換され、前記関連付
けられるターゲット命令に関連付けられる付加的な特定のパラメータは前記個別
ネイティブモードエミュレーションルーチンに必要とされない、請求項2に記載
のエミュレーションホスト計算システムにおいてターゲットコンピュータシステ
ムをエミュレートするための方法。
7.変換レベルを選択する前記ステップは、個別機能変換レベルを選択するステ
ップを含み、前記関連付けられるターゲット命令は、複数の前記関連付けられる
ターゲット命令のそれぞれにより指定される機能を各々行なうための個別ネイテ
ィブモードエミュレーション機能ルーチン(512)を指定するよう変換され、
前記関連付けられるターゲット命令に関連付けられる付加的な特定のパラメータ
は前記個別ネイティブモードエミュレーション機能ルーチンに必要とされない、
請求項2に記載のエミュレーションホスト計算システムにおいてターゲットコン
ピュータシステムをエミュレートするための方法。
8.変換レベルを選択する前記ステップは、すべてのターゲット命令が変換され
るように完全変換レベルを選択するステップを含む、請求項2に記載の、エミュ
レーションホスト計算システムにおいてターゲットコンピュータシステムをエミ
ュレートするための方法。
9.前記分析するステップは、前記ヌル変換レベルに関連付けられるターゲット
命令に対して命令実行を行なう前に解釈するステップを再実行するステップを含
む、請求項3に記載のエミュレーションホスト計算システムにおいてターゲット
コンピュータシステムをエミュレートするための方法。
10.前記分析するステップは、前記一般的変換レベルに関連付けられるターゲ
ット命令各々に対して、前記各ターゲット命令により指定される機能を実行する
ために共有ネイティブモードエミュレーションルーチン(510)を実行するス
テップを含み、前記共有ネイティブモードエミュレーションルーチンは、前記各
ターゲット命令に関連付けられる特定のパラメータを使用する、請求項4に記載
のエミュレーションホスト計算システムにおいてターゲットコンピュータシステ
ムをエミュレートするための方法。
11.前記分析するステップは、前記一般的機能変換レベルに関連付けられる複
数の連続したターゲット命令の各々に対して、前記複数の連続したターゲット命
令各々により指定される機能を行なうために、共有ネイティブモードエミュレー
ション機能ルーチン(510)を実行するステップを含み、前記共有ネイティブ
モードエミュレーション機能ルーチンは、前記複数の連続したターゲット命令の
各々に関連付けられる特定のパラメータを使用する、請求項5に記載のエミュレ
ーションホスト計算システムにおいてターゲットコンピュータシステムをエミュ
レートするための方法。
12.前記分析するステップは、前記個別変換レベルに関連付けられるターゲッ
ト命令の各々に対して、各前記ターゲット命令により指定される機能を行なうた
めに、個別ネイティブモードエミュレーションルーチン(512)を実行するス
テップを含み、前記個別ネイティブモードエミュレーションルーチンは、前記タ
ーゲット命令の各々に関連付けられる付加的な特定のパラメータをまったく必要
としない、請求項6に記載のエミュレーションホスト計算システムにおいてター
ゲットコンピュータシステムをエミュレートするための方法。
13.前記分析するステップは、前記個別機能変換レベルに関連付けられる複数
のターゲット命令の各々に対して、各前記複数のターゲット命令により指定され
る機能を行なうために、個別ネイティブモードエミュレーション機能ルーチン(
512)を実行するステップを含み、前記個別ネイティブモードエミュレーショ
ン機能ルーチンは、各前記複数のターゲット命令に関連付けられる付加的な特定
のパラメータをまったく必要としない、請求項7に記載のエミュレーションホス
ト計算システムにおいてターゲットコンピュータシステムをエミュレートするた
めの方法。
14.前記分析するステップは、すべてのターゲット命令に対して、解釈するス
テップと変換するステップとをバイパスするステップを含む、請求項8に記載の
エミュレーションホスト計算システムにおいてターゲットコンピュータシステム
をエミュレートするための方法。
15.複数のターゲット命令により制御されるターゲットコンピュータシステム
をエミュレートするためのエミュレータであって、前記エミュレータは、(a)
複数のストレージバンクにターゲット命令とエミュレーションソフトウェアルー
チンをストアするためのストレージ手段(12)と、(b)ストレージ手段に結
合され、複数のターゲット命令をそれらの実行の順番に受取るための入力手段(
30)とを含み、前記エミュレータは、
前記ストレージ手段(12)が、各々関連付けられるターゲット命令の変換の
程度を特定する変換レベル指示子(designator)をストアするための手段と、
(c)前記入力手段に結合され、ターゲット命令の各々が前もって変換されて
いるか否かを決定するための制御手段(22)と、
(d)前記制御手段(22)に結合され、ターゲット命令のうち選択されたタ
ーゲット命令を変換後命令に変換するための変換手段(24)とを含み、前記変
換後命令の各々は、関連付けられた変換後命令の実行中に行なわれるべき一つま
たは二つ以上の処理ステップを指示する変換タイプコードに関連付けられ、前記
エミュレータはさらに、
(e)前記変換手段(24)に結合され、変換されていないターゲット命令を
、その中に指定される一つまたは二つ以上の機能を特定するために、デコードす
るための解釈手段(26)と、
(f)前記変換されていないターゲット命令により指定される前記一つまたは
二つ以上の機能を実行するための、かつ、前記関連付けられる変換タイプコード
により指示される前記処理ステップによって、および前記関連付けられる変換レ
ベル指示子により特定される変換の程度によって、前記変換後命令の各々に関連
付けられるエミュレーションソフトウェアルーチンを実行するための処理手段(
28)とを含む、ターゲットコンピュータシステムをエミュレートするためのェ
ミュレータ。
16.前記制御手段(22)は、各前記変換タイプコードを、変換が行なわれな
かったことを示す予め定められた値と比較するための、かつ、前記変換タイプコ
ードが前記予め定められた値から変えられている時には関連付けられるターゲッ
ト命令が前もって変換済みであることを示すための、比較手段を含む、請求項1
5に記載のターゲットコンピュータシステムをエミュレートするためのエミュレ
ータ。
17.前記変換手段(24)は、各ターゲット命令を前記変換後命令の一つに変
換するため、前記変換タイプコードを各ターゲット命令と関連付けるための完全
変換手段を含む、請求項15に記載のターゲットコンピュータシステムをエミュ
レートするためのエミュレータ。
18.前記変換手段(24)は、前記変換タイプコードの各々を前記関連付けら
れたターゲット命令にアペンドするための手段を含む、請求項15に記載のター
ゲットコンピュータシステムをエミュレートするためのエミュレータ。
19.前記入力手段に結合され、選択されたターゲット命令がロードされる頻度
に対応する使用カウントをストアするための命令使用カウンタをさらに含む、請
求項15に記載のターゲットコンピュータシステムをエミュレートするためのエ
ミュレータ。
20.前記命令使用カウンタに結合され、選択可能な基準に基づいて前記使用カ
ウントを変更するためのセレクタをさらに含む、請求項19に記載のターゲット
コンピュータシステムをエミュレートするためのエミュレータ。
21.前記命令使用カウンタは、前記選択されたターゲット命令がロードされる
前記頻度と、前記選択されたターゲット命令に関連付けられる前記変換レベル指
示子が変更されるべき頻度を示す予め定められた選択可能値とを、比較するため
の比較手段を含む、請求項19に記載のターゲットコンピュータシステムをエミ
ュレートするためのエミュレータ。
22.前記選択可能な基準は、前記選択されたターゲット命令の予め定められた
数の連続した命令ロード、予め定められた時間期間内での前記選択されたターゲ
ット命令の命令ロードの数、および、コード変更なしで前記選択されたターゲッ
ト命令が実行された数からなるグループから選択される、請求項20に記載のタ
ーゲットコンピュータシステムをエミュレートするためのエミュレータ。
23.前記比較手段の結果に依存して、前記選択されたターゲット命令との関連
付けのため前記変換レベル指示子のうち異なるものを選択することを可能にする
ための変換レベル選択手段をさらに含む、請求項21に記載のターゲットコンピ
ュータシステムをエミュレートするためのエミュレータ。
─────────────────────────────────────────────────────
フロントページの続き
(72)発明者 アルファーネス,マーウィン・ハーシャー
アメリカ合衆国、55112 ミネソタ州、ニ
ュー・ブライトン、レインボウ・アベニ
ュ、2316
【要約の続き】
ーションホスト計算システムの機械語でターゲット命令
の機能を実行する。
Claims (1)
- 【特許請求の範囲】 1.エミュレーションホスト計算システムにおいてコンピュータシステムをエミ ュレートするための方法であって、前記コンピュータシステムは複数のターゲッ ト命令により制御され、前記方法は、 (a) ターゲット命令各々をそれらの実行の順番でエミュレーションホスト 計算システムに連続的にロードするステップを含み、ターゲット命令は各々、予 め定められたオリジナル値で最初はロードされているエミュレーション情報をス トアするための少なくとも1つのエミュレーションフィールドと関連付けられ、 前記方法はさらに、 (b) ターゲット命令のうち第1のターゲット命令により指定される機能を 特定するため第1のターゲット命令をデコードするステップと、 (c) 第1のターゲット命令により指定された、特定された機能を実行する ステップと、 (d) ターゲット命令のうち第2のターゲット命令に対応する少なくとも1 つのエミュレーションフィールドへと第2のターゲット命令に対するエミュレー ション情報を更新するステップとを含み、更新されたエミュレーション情報は第 2のターゲット命令の実行を制御し、前記方法はさらに、 (e) 第2のターゲット命令の各々に対応する更新されたエミュレーション 情報によって特定されるソフトウェアルーチンを開始するステップを含み、ソフ トウェアルーチンはエミュレーションホスト計算システムの機械語においてター ゲット命令機能を実行し、それによって、第2のターゲット命令のためのデコー ドするステップおよび実行するステップをバイパスする、エミュレーションホス ト計算システムにおいてコンピュータシステムをエミュレートするための方法。 2.エミュレーション情報を更新する前記ステップは、エミュレーションホスト 計算システムの機械語でエミュレーション情報を発生するステップを含む、請求 項1に記載のエミュレーションホスト計算システムにおいてコンピュータシステ ムをエミュレートするための方法。 3.エミュレーション情報を更新する前記ステップは、第2のターゲット命令に 応答して、第2のターゲット命令の一部として少なくとも1ビットフィールドと エミュレーション情報とを含ませて変換後命令を発生するステップを含む、請求 項1に記載のエミュレーションホスト計算システムにおいてコンピュータシステ ムをエミュレートするための方法。 4.ターゲット命令の各々が以前に変換後命令の1つへと変換されているか否か を決定するステップをさらに含む、請求項3に記載のエミュレーションホスト計 算システムにおいてコンピュータシステムをエミュレートするための方法。 5.ターゲット命令の各々が以前に変換されているか否かを決定する前記ステッ プは、ターゲット命令の各々に含まれるエミュレーション情報が、予め定められ たオリジナル値から変えられているか否かを決定するステップを含む、請求項4 に記載のエミュレーションホスト計算システムにおいてコンピュータシステムを エミュレートするための方法。 6.エミュレーション情報を更新する前記ステップは、変換後命令の各々につい て新しいエミュレーション情報を入れることにより、変換後命令の各々を発生す るステップを含み、それによって、ターゲット命令の各々をエミュレーションホ スト計算システムに連続的にロードするステップの第1の発生に際して、エミュ レーション情報の予め定められたオリジナル値を変える、請求項5に記載のエミ ュレーションホスト計算システムにおいてコンピュータシステムをエミュレート するための方法。 7.ソフトウェアルーチンを開始する前記ステップは、更新されたエミュレーシ ョン情報の少なくとも一部分によって特定される開始アドレスを有するソフトウ ェアルーチンを開始するステップを含む、請求項1に記載のエミュレーションホ スト計算システムにおいてコンピュータシステムをエミュレートするための方法 。 8.少なくとも1つのエミュレーションフィールドが、タイプフィールドおよび ポインタフィールドを含み、タイプフィールドは変換タイプに対応する情報を保 持し、ポインタフィールドは変換タイプに対応するソフトウェアルーチンの開始 アドレスに対応する情報を保持する、請求項1に記載のエミュレーションホスト 計算システムにおいてコンピュータシステムをエミュレートするための方法。 9.(a) 特定のターゲット命令がエミュレーションホスト計算システムにロ ードされる頻度に関するターゲット命令使用情報をストアするステップと、 (b) ターゲット命令使用情報に応答して変換タイプを動的に変更するステ ップとをさらに含む、請求項8に記載のエミュレーションホスト計算システムに おいてコンピュータシステムをエミュレートするための方法。 10.各々、所望の変換の異なった程度を規定する複数の選択可能な変換レベル を提供するステップと、複数の選択可能な変換レベルのうちの1つの選択を可能 にするステップとをさらに含む、請求項9に記載のエミュレーションホスト計算 システムにおいてコンピュータシステムをエミュレートするための方法。 11.変換タイプを動的に変更する前記ステップは、ターゲット命令使用情報を 予め定められた使用カウントと比較し、それに応答して複数の選択可能な変換レ ベルのうち特定の1つを選択するステップを含む、請求項10に記載のエミュレ ーションホスト計算システムにおいてコンピュータシステムをエミュレートする ための方法。 12.各々、所望の変換の異なった程度を規定する複数の選択可能な変換レベル を提供するステップと、複数の選択可能な変換レベルのうちの1つの選択を可能 にするステップとをさらに含む、請求項1に記載のエミュレーションホスト計算 システムにおいてコンピュータシステムをエミュレートするための方法。 13.エミュレーションホスト計算システムにおいてコンピュータシステムをエ ミュレートするための方法であって、前記コンピュータシステムは1つまたは2 つ以上の命令バンク内にストアされる複数のターゲット命令により制御され、前 記方法は、 (a) 命令バンクからターゲット命令をそれらの実行の順番で連続的に受取 るステップと、 (b) ターゲット命令により指定される機能を特定するため、ターゲット命 令の各々を解釈するステップと、 (c) エミュレーションホスト計算システムのネイティブモード機械語およ びハードウェアを使用して、前記解釈するステップによって特定された機能を実 行するステップと、 (d) ターゲット命令の選択されたものを変換後命令に変換するステップと を含み、変換後命令は、ターゲット命令および変換後命令の後の実行の態様を制 御するエミュレーションコードを含み、前記方法はさらに、 (e) 前もって変換後命令に変換されたターゲット命令に対するエミュレー ションコードを分析し、エミュレーションホスト計算システムのネイティブモー ド機械語およびハードウェアを使用してエミュレーションコードに応答して変換 後命令の対応する機能を実行するステップを含み、前記解釈するステップおよび 前記変換するステップは、変換後命令の後の発生のときにはバイパスされる、エ ミュレーションホスト計算システムにおいてコンピュータシステムをエミュレー トするための方法。 14.変換後命令にターゲット命令の各々が前もって変換されているか否かを決 定するステップをさらに含む、請求項13に記載のエミュレーションホスト計算 システムにおいてコンピュータシステムをエミュレートするための方法。 15.ターゲット命令の各々が前もって変換されているか否かを決定する前記ス テップは、予め定められたオリジナル値からエミュレーションコードが変えられ ているか否かを決定するステップを含む、請求項14に記載のエミュレーション ホスト計算システムにおいてコンピュータシステムをエミュレートするための方 法。 16.ターゲット命令のうち特定のターゲット命令が書き換えられているときは 、ターゲット命令の特定の1つに対応するエミュレーションコードを、予め定め られたオリジナル値に戻すステップをさらに含む、請求項15に記載のエミュレ ーションホスト計算システムにおいてコンピュータシステムをエミュレートする ための方法。 17.ターゲット命令の各々を解釈する前記ステップは、ターゲット命令の各々 をデコードしてそれに応答して特定された機能を行なうステップを含む、請求項 13に記載のエミュレーションホスト計算システムにおいてコンピュータシステ ムをエミュレートするための方法。 18.ターゲット命令の各々を解釈する前記ステップは、実行される時、エミュ レーションホスト計算システムにおいて特定された機能を行なうネイティブモー ド機械語命令を実行するステップを含む、請求項17に記載のエミュレーション ホスト計算システムにおいてコンピュータシステムをエミュレートするための方 法。 19.前記変換するステップは、エミュレーションコードを、ターゲット命令の うちそれに対応するものにアペンドするステップを含む、請求項13に記載のエ ミュレーションホスト計算システムにおいてコンピュータシステムをエミュレー トするための方法。 20.前記変換するステップは、複数のフィールドを有するエミュレーションコ ードを提供するステップを含む、請求項13に記載のエミュレーションホスト計 算システムにおいてコンピュータシステムをエミュレートするための方法。 21.前記変換するステップは、 (a) エミュレーションコード内に少なくともタイプフィールドとポインタ フィールドとを設けるステップと、 (b) タイプフィールドに変換タイプを入れるステップとを含み、変換タイ プは関連付けられるターゲット命令により指定される機能に対応し、前記変換す るステップはさらに、 (c) 連続した命令シーケンスからのずれを生じるであろう機能を有するタ ーゲット命令に対して、ポインタフィールドへネイティブモード機械語アドレス を入れるステップを含む、請求項13に記載のエミュレーションホスト計算シス テムにおいてコンピュータシステムをエミュレートするための方法。 22.変換後命令が後に発生するたびにターゲット命令のうち特定のターゲット 命令のエミュレーションコード内に、前記解釈するステップが行なわれるよう強 制する変換タイプを設けるステップをさらに含む、請求項13に記載のエミュレ ーションホスト計算システムにおいてコンピュータシステムをエミュレートする ための方法。 23.前記変換するステップは、前記実行するステップの第1の発生に際し、タ ーゲット命令のうち選択されたものの変換後命令への変換を行なうステップを含 む、請求項13に記載のエミュレーションホスト計算システムにおいてコンピュ ータシステムをエミュレートするための方法。 24.変換を行なう前記ステップは、変換タイプとエミュレーションコード内の 予め定められたオリジナル値とを置換えるステップを含む請求項23に記載のエ ミュレーションホスト計算システムにおいてコンピュータシステムをエミュレー トするための方法。 25.複数の異なった変換レベルから変換レベルを選択するステップをさらに含 み、変換レベルの各々は、1つまたは2つ以上の命令バンクのうち選択されたも のに対して、異なった変換の程度を規定する、請求項13に記載のエミュレーシ ョンホスト計算システムにおいてコンピュータシステムをエミュレートするため の方法。 26.変換レベルを選択する前記ステップは、1つまたは2つ以上の命令バンク のうち選択されたものの中のターゲット命令が全く変換されないように、ヌル変 換レベルを選択するステップを含む、請求項25に記載のエミュレーションホス ト計算システムにおいてコンピュータシステムをエミュレートするための方法。 27.変換レベルを選択する前記ステップは、一般的変換レベルを選択するステ ップを含み、1つまたは2つ以上の命令バンクのうち選択されたものの中のター ゲット命令は、ターゲット命令の1つにより指定される機能を行なうため共用ネ イティブモードエミュレーションルーチンを指定するよう変換され、ターゲット 命令に関連付けられる特定のパラメータは共用ネイティブモードエミュレーショ ンルーチンに入力される、請求項25に記載のエミュレーションホスト計算シス テムにおいてコンピュータシステムをエミュレートするための方法。 28.変換レベルを選択する前記ステップは、一般的機能変換レベルを選択する ステップを含み、1つまたは2つ以上の命令バンクのうち選択されたものの中の ターゲット命令は、複数の連続したターゲット命令により指定される機能を行な うため共有ネイティブモードエミュレーション機能ルーチンを指定するよう変換 され、ターゲット命令に関連付けられる特定のパラメータは共用ネイティブモー ドエミュレーション機能ルーチンに入力される、請求項25に記載のエミュレー ションホスト計算システムにおいてコンピュータシステムをエミュレートするた めの方法。 29.変換レベルを選択する前記ステップは、個別の変換レベルを選択するステ ップを含み、1つまたは2つ以上の命令バンクのうち選択されたものの中のター ゲット命令は、ターゲット命令の1つにより指示される機能を行なうため個別の ネイティブモードエミュレーションルーチンを指定するよう変換され、ターゲッ ト命令に関連付けられる付加的な特定のパラメータは、個別のネイティブモード エミュレーションルーチンにより必要とされない、請求項25に記載のエミュレ ーションホスト計算システムにおいてコンピュータシステムをエミュレートする ための方法。 30.変換レベルを選択する前記ステップは、個別の機能変換レベルを選択する ステップを含み、1つまたは2つ以上の命令バンクのうち選択されたものの中の ターゲット命令は、複数のターゲット命令により指定される機能を行なうため個 別のネイティブモードエミュレーション機能ルーチンを指定するよう変換され、 ターゲット命令に関連付けられる付加的な特定のパラメータは個別のネイティブ モードエミュレーション機能ルーチンにより必要とされない、請求項25に記載 のエミュレーションホスト計算システムにおいてコンピュータシステムをエミュ レートするための方法。 31.変換レベルを選択する前記ステップは、1つまたは2つ以上の命令バンク のうち選択されたものの中のすべてのターゲット命令が変換されるよう、完全変 換レベルを選択するステップを含む、請求項25に記載のエミュレーションホス ト計算システムにおいてコンピュータシステムをエミュレートするための方法。 32.命令バンク内にストアされる複数のターゲット命令により制御されるコン ピュータシステムをエミュレートするための方法であって、前記方法は、 (a) ターゲット命令をそれらの実行の順番で連続的に受取るステップと、 (b) 変換後命令へとターゲット命令の各々が前もって変換されているか否 かを決定するステップと、 (c) ターゲット命令が前もって変換されていない場合には、エミュレーシ ョン情報を含む変換後命令へとターゲット命令を変換するステップと、 (d) エミュレーション情報によりエミュレータで変換後命令を実行するス テップとを含み、エミュレーション情報は、エミュレータのコンピュータ言語に 対応するネイティブモードソフトウェアルーチンを特定する、コンピュータシス テムをエミュレートするための方法。 33.変換不可能命令として指定される予め定められた数のターゲット命令を解 釈するステップをさらに含む、請求項32に記載のコンピュータシステムをエミ ュレートするための方法。 34.変換不可能命令として指定される予め定められた数のターゲット命令の変 更を可能にするステップをさらに含み、それによって、変換されるターゲット命 令の数の規定における柔軟性を可能にする、請求項33に記載のコンピュータシ ステムをエミュレートするための方法。 35.単一の命令変換から完全変換までの範囲にわたるさまざまな規定可能な変 換レベルを提供するステップをさらに含む、請求項32に記載のコンピュータシ ステムをエミュレートするための方法。 36.さまざまな規定可能な変換レベルを提供する前記ステップは、特定の規定 可能なレベルを他の規定可能なレベルに変更することを可能にするステップを含 む、請求項35に記載のコンピュータシステムをエミュレートするための方法。 37.複数のターゲット命令により制御されるターゲットコンピュータシステム をエミュレートするためのエミュレータであって、 前記エミュレータは、 (a) 複数のストレージバンク内にターゲット命令およびエミュレーション ソフトウェアルーチンをストアするためのストレージ手段と、 (b) ストレージ手段に結合され、複数のターゲット命令をそれらの実行の 順番で受取るための入力手段と、 (c) 入力手段に結合され、ターゲット命令の各々が前もって変換されてい るか否かを決定するための制御手段と、 (d) 制御手段に結合され、ターゲット命令のうち選択されたものを変換後 命令に変換するための変換手段とを含み、変換後命令は各々、対応するターゲッ ト命令および対応するターゲット命令により指定される機能を行なうための1つ または2つ以上のエミュレーションソフトウェアルーチンを特定するエミュレー ションコードを含み、前記エミュレータはさらに、 (e) 変換手段に結合され、変換されていないターゲット命令内で指定され ている1つまたは2つ以上の機能を特定するため変換されていないターゲット命 令をデコードするための解釈手段と、 (f) 変換されていないターゲット命令により指定される1つまたは2つ以 上の機能を実行し、かつ、変換後命令に関連付けられたエミュレーションソフト ウェアルーチンを実行するための処理手段とを含む、ターゲットコンピュータシ ステムをエミュレートするためのエミュレータ。 38.前記制御手段は、エミュレーションコードを予め定められたオリジナル値 と比較するための、かつ、エミュレートコードが予め定められたオリジナル値か ら変えられていたときに、ターゲット命令が前もって変換されていることを示す ための比較手段を含む、請求項37に記載のターゲットコンピュータシステムを エミュレートするためのエミュレータ。 39.前記変換手段は、ターゲット命令を変換後命令に変換するため、エミュレ ーションコードをターゲット命令と関連付けるための手段を含む、請求項37に 記載のターゲットコンピュータシステムをエミュレートするためのエミュレータ 。 40.エミュレーションコードをターゲット命令と関連付けるための前記手段は 、エミュレーションコードをそれに対応するターゲット命令へアペンドする手段 を含む、請求項39に記載のターゲットコンピュータシステムをエミュレートす るためのエミュレータ。 41.前記入力手段に結合され、特定のターゲット命令がロードされる頻度に対 応する使用カウントをストアする命令使用カウンタをさらに含む、請求項37に 記載のターゲットコンピュータシステムをエミュレートするためのエミュレータ 。 42.使用カウンタを利用し、それによって所望のときに任意に使用カウントを ストアするためのセレクタをさらに含む、請求項41に記載のターゲットコンピ ュータシステムをエミュレートするためのエミュレータ。 43.前記命令使用カウンタは、予め定められた基準に関連するストアされたカ ウントと使用カウントとを比較することによって、特定のターゲット命令がロッ ドされる頻度を決定するための比較手段を含む、請求項41に記載のターゲット コンピュータシステムをエミュレートするためのエミュレータ。 44.予め定められた基準は、ターゲット命令のうち特定の1つの連続した命令 ロードの予め定められた数、予め定められた時間期間内のターゲット命令のうち 特定の1つの命令ロードの数、およびコード変更のされない実行の数を含むグル ープから選択される、請求項43に記載のターゲットコンピュータシステムをエ ミュレートするためのエミュレータ。 45.前記比較手段の結果に依存して、異なった変換レベルを選択することを可 能にするための変換レベル選択手段をさらに含む、請求項43に記載のターゲッ トコンピュータシステムをエミュレートするためのエミュレータ。 46.エミュレーションホスト計算システムにおいてコンピュータシステムをエ ミュレートするための方法であって、前記コンピュータシステムは複数のターゲ ット命令により制御され、前記方法は、 (a) エミュレーションホスト計算システムへターゲット命令の各々をそれ らの実行の順番でロードするステップと、 (b) 各ターゲット命令が初めてロードされる時、変換後命令へとターゲッ ト命令のうち選択されたものを変換するステップと、 (c) 変換後命令に変換されていないターゲット命令を解釈するステップと 、 (d) エミュレーションホスト計算システムの機械語で書かれたソフトウェ アルーチンを使用して変換後命令を実行するステップとを含む、エミュレーショ ンホスト計算システムにおいてコンピュータシステムをエミュレートするための 方法。 47.前記変換するステップはさらに、1つまたは2つ以上のターゲット命令に 関連付けられるデータを変換するステップを含み、前記データはエミュレーショ ンホスト計算システムのネイティブモード機械語により認識可能な形に変換され る、請求項46に記載のエミュレーションホスト計算システムにおいてコンピュ ータシステムをエミュレートするための方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/775,142 | 1996-12-31 | ||
US08/775,142 US5896522A (en) | 1996-12-31 | 1996-12-31 | Selective emulation interpretation using transformed instructions |
PCT/US1997/024009 WO1998029802A1 (en) | 1996-12-31 | 1997-12-24 | Selective emulation interpretation using transformed instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002502516A true JP2002502516A (ja) | 2002-01-22 |
Family
ID=25103450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP53025998A Pending JP2002502516A (ja) | 1996-12-31 | 1997-12-24 | 変換後命令を使用する選択的エミュレーションインタープリテーション |
Country Status (6)
Country | Link |
---|---|
US (1) | US5896522A (ja) |
EP (1) | EP0950219B1 (ja) |
JP (1) | JP2002502516A (ja) |
CA (1) | CA2275332C (ja) |
DE (1) | DE69719073T2 (ja) |
WO (1) | WO1998029802A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006260551A (ja) * | 2005-02-24 | 2006-09-28 | Internatl Business Mach Corp <Ibm> | データ・ストレージ・システムのメディア・ドライブのためのテスト・システム |
US9430205B2 (en) | 2014-03-18 | 2016-08-30 | International Business Machines Corporation | Controlling execution of binary code |
JP2019516167A (ja) * | 2016-03-23 | 2019-06-13 | フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. | リアルタイムデータフロープログラミング言語のためのツールおよび方法 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1097431A (ja) * | 1996-07-31 | 1998-04-14 | Fujitsu Ltd | シミュレーション装置及びシミュレーション方法並びにコンピュータ読取可能な記録媒体 |
US6252591B1 (en) * | 1997-10-10 | 2001-06-26 | International Business Machines Corp. | Method for mapping a text-oriented user interface to a graphics user interface by means of a class library |
US20010039564A1 (en) * | 1997-10-20 | 2001-11-08 | Victor Hahn | Log on personal computer |
US6009261A (en) * | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6397242B1 (en) | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US6018628A (en) * | 1998-06-16 | 2000-01-25 | Sun Microsystems, Inc. | Method of implementing parameterized types to be compatible with existing unparameterized libraries |
US6360194B1 (en) * | 1998-09-08 | 2002-03-19 | Bull Hn Information Systems Inc. | Different word size multiprocessor emulation |
US8631066B2 (en) * | 1998-09-10 | 2014-01-14 | Vmware, Inc. | Mechanism for providing virtual machines for use by multiple users |
US7516453B1 (en) | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
US7574346B2 (en) * | 2000-10-30 | 2009-08-11 | Microsoft Corporation | Kernel emulator for non-native program modules |
JP2002169696A (ja) * | 2000-12-04 | 2002-06-14 | Mitsubishi Electric Corp | データ処理装置 |
US6922666B2 (en) * | 2000-12-22 | 2005-07-26 | Bull Hn Information Systems Inc. | Method and data processing system for performing atomic multiple word reads |
US7356673B2 (en) * | 2001-04-30 | 2008-04-08 | International Business Machines Corporation | System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form |
US7506321B1 (en) * | 2002-06-11 | 2009-03-17 | Unisys Corporation | Computer emulator employing direct execution of compiled functions |
US7681046B1 (en) | 2003-09-26 | 2010-03-16 | Andrew Morgan | System with secure cryptographic capabilities using a hardware specific digital secret |
US7694151B1 (en) * | 2003-11-20 | 2010-04-06 | Johnson Richard C | Architecture, system, and method for operating on encrypted and/or hidden information |
US7406406B2 (en) * | 2004-12-07 | 2008-07-29 | Bull Hn Information Systems Inc. | Instructions to load and store containing words in a computer system emulator with host word size larger than that of emulated machine |
US20070005813A1 (en) * | 2005-07-04 | 2007-01-04 | Jih-Liang Juang | Peripheral device and method for interpreting redefined frame information structure |
US7730261B1 (en) * | 2005-12-20 | 2010-06-01 | Marvell International Ltd. | Multicore memory management system |
US20070277025A1 (en) * | 2006-05-25 | 2007-11-29 | International Business Machines Corporation | Method and system for preventing livelock due to competing updates of prediction information |
US8151352B1 (en) * | 2006-07-14 | 2012-04-03 | Bitdefender IPR Managament Ltd. | Anti-malware emulation systems and methods |
US9256451B2 (en) * | 2012-06-29 | 2016-02-09 | Oracle International Corporation | Emulation time correction |
US9043906B2 (en) * | 2012-11-28 | 2015-05-26 | William Christopher Hardy | System and method for preventing operation of undetected malware loaded onto a computing device |
PT3427148T (pt) | 2016-03-11 | 2022-03-23 | Lzlabs Gmbh | Compilador de módulo de carregamento |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01162933A (ja) * | 1987-12-18 | 1989-06-27 | Fujitsu Ltd | インタプリタ処理装置 |
JPH05189269A (ja) * | 1992-01-14 | 1993-07-30 | Shikoku Nippon Denki Software Kk | オブジェクトプログラム走行シミュレート装置 |
JPH07210397A (ja) * | 1994-01-12 | 1995-08-11 | Hitachi Ltd | プログラム変換方法およびそれを用いたプログラム実行方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0628036B2 (ja) * | 1988-02-01 | 1994-04-13 | インターナショナル・ビジネス・マシーンズ・コーポレーシヨン | シミュレーシヨン方法 |
CA2002201C (en) * | 1988-12-06 | 1999-04-27 | John Charles Goettelmann | Translation technique |
JPH0810428B2 (ja) * | 1988-12-26 | 1996-01-31 | 三菱電機株式会社 | データ処理装置 |
JPH02190930A (ja) * | 1988-12-29 | 1990-07-26 | Internatl Business Mach Corp <Ibm> | ソフトウエア命令実行装置 |
US5430862A (en) * | 1990-06-29 | 1995-07-04 | Bull Hn Information Systems Inc. | Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution |
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 |
US5452456A (en) * | 1992-12-18 | 1995-09-19 | Apple Computer, Inc. | Apparatus for executing a plurality of program segments having different object code types in a single program or processor environment |
US5408622A (en) * | 1993-09-23 | 1995-04-18 | Apple Computer, Inc. | Apparatus and method for emulation routine control transfer via host jump instruction creation and insertion |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5632028A (en) * | 1995-03-03 | 1997-05-20 | Hal Computer Systems, Inc. | Hardware support for fast software emulation of unimplemented instructions |
US5751982A (en) * | 1995-03-31 | 1998-05-12 | Apple Computer, Inc. | Software emulation system with dynamic translation of emulated instructions for increased processing speed |
US5678032A (en) * | 1995-09-06 | 1997-10-14 | Bull Hn Information Systems Inc. | Method of optimizing the execution of program instuctions by an emulator using a plurality of execution units |
-
1996
- 1996-12-31 US US08/775,142 patent/US5896522A/en not_active Expired - Lifetime
-
1997
- 1997-12-24 DE DE69719073T patent/DE69719073T2/de not_active Expired - Fee Related
- 1997-12-24 EP EP97952666A patent/EP0950219B1/en not_active Expired - Lifetime
- 1997-12-24 CA CA002275332A patent/CA2275332C/en not_active Expired - Fee Related
- 1997-12-24 WO PCT/US1997/024009 patent/WO1998029802A1/en active IP Right Grant
- 1997-12-24 JP JP53025998A patent/JP2002502516A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01162933A (ja) * | 1987-12-18 | 1989-06-27 | Fujitsu Ltd | インタプリタ処理装置 |
JPH05189269A (ja) * | 1992-01-14 | 1993-07-30 | Shikoku Nippon Denki Software Kk | オブジェクトプログラム走行シミュレート装置 |
JPH07210397A (ja) * | 1994-01-12 | 1995-08-11 | Hitachi Ltd | プログラム変換方法およびそれを用いたプログラム実行方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006260551A (ja) * | 2005-02-24 | 2006-09-28 | Internatl Business Mach Corp <Ibm> | データ・ストレージ・システムのメディア・ドライブのためのテスト・システム |
US9430205B2 (en) | 2014-03-18 | 2016-08-30 | International Business Machines Corporation | Controlling execution of binary code |
JP2019516167A (ja) * | 2016-03-23 | 2019-06-13 | フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. | リアルタイムデータフロープログラミング言語のためのツールおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
WO1998029802A1 (en) | 1998-07-09 |
EP0950219B1 (en) | 2003-02-12 |
DE69719073D1 (de) | 2003-03-20 |
EP0950219A1 (en) | 1999-10-20 |
CA2275332C (en) | 2003-03-11 |
CA2275332A1 (en) | 1998-07-09 |
US5896522A (en) | 1999-04-20 |
DE69719073T2 (de) | 2003-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002502516A (ja) | 変換後命令を使用する選択的エミュレーションインタープリテーション | |
US6142682A (en) | Simulation of computer processor | |
US6496922B1 (en) | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation | |
EP0327196B1 (en) | Processor simulation | |
EP0817996B1 (en) | Software emulation system with dynamic translation of emulated instructions for increased processing speed | |
EP0327195B1 (en) | Processor simulation | |
JP4050764B2 (ja) | コンパイルシステム | |
US5392408A (en) | Address selective emulation routine pointer address mapping system | |
US5781758A (en) | Software emulation system with reduced memory requirements | |
JP3552443B2 (ja) | 2つのアーキテクチャ間でプログラム制御を転送する方法及びシステム | |
US8196120B2 (en) | Computer emulator employing direct execution of compiled functions | |
EP0387172A2 (en) | Procedure call interface | |
JP2001508909A (ja) | バーチャルマシン命令を処理するためのデータ処理装置 | |
US5062039A (en) | Sharing of workspaces in interactive processing using workspace name tables for linking of workspaces | |
EP0310600B1 (en) | Arrangement for software emulation | |
US7219337B2 (en) | Direct instructions rendering emulation computer technique | |
US20070156386A1 (en) | Linearization of page based memory for increased performance in a software emulated central processing unit | |
EP0327198B1 (en) | Processor simulation | |
JP3505481B2 (ja) | 命令処理装置 | |
JPS5840273B2 (ja) | デ−タシヨリソウチ | |
JPH0695921A (ja) | シミュレーション方法、及びプログラムデバッグシステム | |
Warren | STT Open Publication. Release of Information. | |
Arthur | Compiler writing system detail design specification. Volume 1: Language specification | |
Iliffe | DIGITAL SYSTEMS LABORATORY I | |
Konstam et al. | Simulation as an aid to software transferability |