JPH0782441B2 - シミユレーシヨン方法 - Google Patents
シミユレーシヨン方法Info
- Publication number
- JPH0782441B2 JPH0782441B2 JP63318665A JP31866588A JPH0782441B2 JP H0782441 B2 JPH0782441 B2 JP H0782441B2 JP 63318665 A JP63318665 A JP 63318665A JP 31866588 A JP31866588 A JP 31866588A JP H0782441 B2 JPH0782441 B2 JP H0782441B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- processor
- instructions
- simulator
- memory
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】 以下の順で本発明を説明する。
A.産業上の利用分野 B.従来技術 C.発明が解決しようとする問題点 D.問題点を解決するための手段 E.実施例 E1.処理システム環境(第1図) E2.シミュレーションの概要(第2図) E3.条件コードのフラグ解析(第3A図〜第3D図、第4
図) E4.命令アドレスの翻訳(第5図〜第7図) E5.メモリ・マッピング(第8図〜第10図) F.発明の効果 A.産業上の利用分野 本発明は、第1の処理システムの特定の第1のプロセッ
サ用に書かれたアプリケーションを実行するデータ処理
システムに関し、さらに具体的には、異なる第2のプロ
セッサを有する第2の処理システム上でそれらのアプリ
ケーションを実行するため第1のプロセッサをシミュレ
ートするシステム及び方法に関するものである。
図) E4.命令アドレスの翻訳(第5図〜第7図) E5.メモリ・マッピング(第8図〜第10図) F.発明の効果 A.産業上の利用分野 本発明は、第1の処理システムの特定の第1のプロセッ
サ用に書かれたアプリケーションを実行するデータ処理
システムに関し、さらに具体的には、異なる第2のプロ
セッサを有する第2の処理システム上でそれらのアプリ
ケーションを実行するため第1のプロセッサをシミュレ
ートするシステム及び方法に関するものである。
B.従来技術 コンピュータ技術の現在の進歩により、処理システムの
プロセッサ(本明細書では中央処理装置(CPU)とも呼
ぶ)は絶え間なく変化してきている。種々のプロセッサ
の発展の例には、IBMPCで使用されるIntel(IntelはInt
el社の登録商標)8088プロセッサ、IBM PC AT(PC AT
はIBM社の登録商標)で使用されるIntel80286プロセッ
サ、IBMパーソナル・システム/2(パーソナル・システ
ム/2はIBM社の登録商標)で使用されるIntel80386プロ
セッサ、IBMRT PC(RT PCはIBM社の登録商標)で縮小命
令セット・コンピュータ(RISC)アーキテクチャを使用
するIBMリサーチ/OPDマイクロプロセッサ(ROMP)があ
る。その他のプロセッサには、わけてもMotorola6800、
68020がある。
プロセッサ(本明細書では中央処理装置(CPU)とも呼
ぶ)は絶え間なく変化してきている。種々のプロセッサ
の発展の例には、IBMPCで使用されるIntel(IntelはInt
el社の登録商標)8088プロセッサ、IBM PC AT(PC AT
はIBM社の登録商標)で使用されるIntel80286プロセッ
サ、IBMパーソナル・システム/2(パーソナル・システ
ム/2はIBM社の登録商標)で使用されるIntel80386プロ
セッサ、IBMRT PC(RT PCはIBM社の登録商標)で縮小命
令セット・コンピュータ(RISC)アーキテクチャを使用
するIBMリサーチ/OPDマイクロプロセッサ(ROMP)があ
る。その他のプロセッサには、わけてもMotorola6800、
68020がある。
種々の処理システムのハードウェアは、新しいプロセッ
サの増大した処理能力を利用できるように急速に変化し
ている。ハードウェアが変化することの欠点は、以前の
プロセッサ用に書かれたソフトウェアが一般にはそれよ
り後のハードウェア技術で使用できないことである。最
初にソフトウェアが書かれたとき対象とされた処理シス
テムとは異なる処理システムでそのソフトウェアを使用
することができる場合でも、アプリケーションの性能
は、異なる処理システム上では、そのアプリケーション
が当初対象とした処理システム上におけるほどには十分
ではない。その結果、長い開発期間を要したソフトウェ
ア・アプリケーションがすぐに時代遅れなものになる。
以前に書かれたソフトウェアが使えないことは、最初に
書かれたアプリケーションの機能が依然として非常に適
切であり、新しいハードウェアの処理システム上で必要
とされている場合には、一層悲劇的である。
サの増大した処理能力を利用できるように急速に変化し
ている。ハードウェアが変化することの欠点は、以前の
プロセッサ用に書かれたソフトウェアが一般にはそれよ
り後のハードウェア技術で使用できないことである。最
初にソフトウェアが書かれたとき対象とされた処理シス
テムとは異なる処理システムでそのソフトウェアを使用
することができる場合でも、アプリケーションの性能
は、異なる処理システム上では、そのアプリケーション
が当初対象とした処理システム上におけるほどには十分
ではない。その結果、長い開発期間を要したソフトウェ
ア・アプリケーションがすぐに時代遅れなものになる。
以前に書かれたソフトウェアが使えないことは、最初に
書かれたアプリケーションの機能が依然として非常に適
切であり、新しいハードウェアの処理システム上で必要
とされている場合には、一層悲劇的である。
その結果、一般には、新しいハードウェアが最初に市場
に発表されたとき、「新しい」ハードウェア設計用に特
に書かれた「新しい」ソフトウェアが、限られた量しか
ないことになる。これは、一部には、ソフトウェア・ア
プリケーション・プログラムの開発期間が長いこと、及
び市場でのハードウェアの発表前に製造者が新しいハー
ドウェア設計を秘密にしておくことのためである。ソフ
トウェア製造者は、処理システムのハードウェアに関し
てある程度の事実を知らなければその処理システム用の
ソフトウェア・ウログラムを書くことができない。
に発表されたとき、「新しい」ハードウェア設計用に特
に書かれた「新しい」ソフトウェアが、限られた量しか
ないことになる。これは、一部には、ソフトウェア・ア
プリケーション・プログラムの開発期間が長いこと、及
び市場でのハードウェアの発表前に製造者が新しいハー
ドウェア設計を秘密にしておくことのためである。ソフ
トウェア製造者は、処理システムのハードウェアに関し
てある程度の事実を知らなければその処理システム用の
ソフトウェア・ウログラムを書くことができない。
理想的には、処理システムの製造者は、その処理システ
ム用の新しいハードウェアが市場で発表されるとすぐ、
その処理システム上で実行できる大量のソフトウェアが
ほしいと考えるはずである。顧客は、豊富な量のソフト
ウェアがすでに利用可能であることが分かれば、新しい
処理システムに投資する可能性が一層大きくなるはずで
ある。
ム用の新しいハードウェアが市場で発表されるとすぐ、
その処理システム上で実行できる大量のソフトウェアが
ほしいと考えるはずである。顧客は、豊富な量のソフト
ウェアがすでに利用可能であることが分かれば、新しい
処理システムに投資する可能性が一層大きくなるはずで
ある。
「旧い」ハードウェア設計用に以前に書かれた大量のソ
フトウェアを転用する道を開くと手法が幾つかあった。
当初別のプロセッサ用に書かれたアプリケーションを実
行できるようにするための以前のハードウェア手法は、
コプロセッサを備えた新しい処理システムを構築するこ
とである。この方法では、処理システムは両方のタイプ
のプロセッサ、すなわち、新しいプロセッサ用と旧プロ
セッサ用のアプリケーションを実行することができる。
フトウェアを転用する道を開くと手法が幾つかあった。
当初別のプロセッサ用に書かれたアプリケーションを実
行できるようにするための以前のハードウェア手法は、
コプロセッサを備えた新しい処理システムを構築するこ
とである。この方法では、処理システムは両方のタイプ
のプロセッサ、すなわち、新しいプロセッサ用と旧プロ
セッサ用のアプリケーションを実行することができる。
たとえば、IBM RT PCは、当初IBM PC AT用に書かれたア
プリケーションを使用するためのIBM PC ATコプロセッ
サを含んでいた。しかし、コプロセッサは、オペレーテ
ィング・システムで低水準でサポートされていたので、
AIX(AIXはIBM社の商標)オペレーティング・システム
によって提供される機能を完全に利用することができな
かった。AIXオペレーティング・システムによって提供
される機能の1つは、米国特許出願第820451号に記載さ
れた多重タスク処理である。
プリケーションを使用するためのIBM PC ATコプロセッ
サを含んでいた。しかし、コプロセッサは、オペレーテ
ィング・システムで低水準でサポートされていたので、
AIX(AIXはIBM社の商標)オペレーティング・システム
によって提供される機能を完全に利用することができな
かった。AIXオペレーティング・システムによって提供
される機能の1つは、米国特許出願第820451号に記載さ
れた多重タスク処理である。
しかし、そのコプロセッサはPC ATをエミュレートする
ためのハードウェア・アダプタを含んでいるので、ユー
ザは一時に1つのセッションに制限される。言い換える
と、一度コプロセッサが始動すると、コプロセッサの他
のインスタンスは実行できない。
ためのハードウェア・アダプタを含んでいるので、ユー
ザは一時に1つのセッションに制限される。言い換える
と、一度コプロセッサが始動すると、コプロセッサの他
のインスタンスは実行できない。
このコプロセッサはまた、第1の処理システムのプロセ
ッサの速度に限定され、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができない。
ッサの速度に限定され、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができない。
第2の手法はソフトウェアによって第2のプロセッサを
シミュレートすることである。ソフトウェア・シミュレ
ータは、あるプロセッサ用に以前に書かれたソフトウェ
アを異なるプロセッサを有する新しい処理システムで実
行するための機構を提供する。ソフトウェアによるシミ
ュレーション手法では、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができる。ソフトウェア手法はまた、オペレーティング
・システムの多重タスク処理機能を使って、第1のプロ
セッサの多数のインスタンスを提供することが可能であ
る。
シミュレートすることである。ソフトウェア・シミュレ
ータは、あるプロセッサ用に以前に書かれたソフトウェ
アを異なるプロセッサを有する新しい処理システムで実
行するための機構を提供する。ソフトウェアによるシミ
ュレーション手法では、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができる。ソフトウェア手法はまた、オペレーティング
・システムの多重タスク処理機能を使って、第1のプロ
セッサの多数のインスタンスを提供することが可能であ
る。
現在市販されているオフトウェア・シミュレータには、
Insignia Solutions(Insignia SolutionsはInsignia S
olutions社の商標)によるsoft PC(Soft PCはInsignia
Solutionsの商標)及びCommodore社のAmiga(Motorola
社の68000をベースとする)用のSimile Research社によ
るAmiga Transformerがある。後者のシステムに関する
情報は、論文「Amigaの切り札(Amiga′s Trump Car
d)」、AMIGA WORLD、第1巻、第2号、1985年11月/12
月にも発表されている。Phoenix Technologies社も、Mo
torola68000プロセッサを備えたApollo機用のIntelプロ
セッサをシミュレートするためのシミュレータを提供し
ている。
Insignia Solutions(Insignia SolutionsはInsignia S
olutions社の商標)によるsoft PC(Soft PCはInsignia
Solutionsの商標)及びCommodore社のAmiga(Motorola
社の68000をベースとする)用のSimile Research社によ
るAmiga Transformerがある。後者のシステムに関する
情報は、論文「Amigaの切り札(Amiga′s Trump Car
d)」、AMIGA WORLD、第1巻、第2号、1985年11月/12
月にも発表されている。Phoenix Technologies社も、Mo
torola68000プロセッサを備えたApollo機用のIntelプロ
セッサをシミュレートするためのシミュレータを提供し
ている。
どのCPUプロセッサもそれぞれ特定の命令セットを有す
る。特定のCPUプロセッサ用のソフトウェア・アプリケ
ーション・プログラムが開発されるとき、それは目的コ
ードにコンパイルされる。目的コードは、特定の命令セ
ットをサポートするどのCPU上ででも実行されることを
目指したものである。シミュレータは、特定の命令セッ
トで実行されるように書かれた目的コードを受け取り、
同様のまたは異なる命令セットを有する異なるプロセッ
サ上で実行できるようにそれを変換する。2台のプロセ
ッサの2種類の命令セットが異なっていればいるほど、
他方のプロセッサをシミュレートすることは一層困難に
なる。
る。特定のCPUプロセッサ用のソフトウェア・アプリケ
ーション・プログラムが開発されるとき、それは目的コ
ードにコンパイルされる。目的コードは、特定の命令セ
ットをサポートするどのCPU上ででも実行されることを
目指したものである。シミュレータは、特定の命令セッ
トで実行されるように書かれた目的コードを受け取り、
同様のまたは異なる命令セットを有する異なるプロセッ
サ上で実行できるようにそれを変換する。2台のプロセ
ッサの2種類の命令セットが異なっていればいるほど、
他方のプロセッサをシミュレートすることは一層困難に
なる。
たとえば、Intel80286プロセッサは多種多様な命令を提
供するという点で、非常に豊富な命令セットを有する。
各命令は特定のタイプの状況に特に対応している。さら
に、各命令は幾つかの動作を実行することができる。一
方、RTPC内のROMPプロセッサは、より少ない命令と、1
つの命令当たりより少ない機能を提供する縮小命令セッ
ト(RISC)プロセッサを有する。Intel80286内の各命令
は複数のタスクを実行することができるので、ROMP RIS
Cで同じタスクを実行するには、より多くの命令が必要
になる。
供するという点で、非常に豊富な命令セットを有する。
各命令は特定のタイプの状況に特に対応している。さら
に、各命令は幾つかの動作を実行することができる。一
方、RTPC内のROMPプロセッサは、より少ない命令と、1
つの命令当たりより少ない機能を提供する縮小命令セッ
ト(RISC)プロセッサを有する。Intel80286内の各命令
は複数のタスクを実行することができるので、ROMP RIS
Cで同じタスクを実行するには、より多くの命令が必要
になる。
しかし、命令セットを簡略化することによりプロセッサ
の速度を増大させることができる。より多くの命令が必
要となるものの、より一般的でより簡単なタスクを実行
する間に、複雑な命令に余分な時間を費やすことはな
い。
の速度を増大させることができる。より多くの命令が必
要となるものの、より一般的でより簡単なタスクを実行
する間に、複雑な命令に余分な時間を費やすことはな
い。
以前のソフトウェア・シミュレータの方法では、命令の
効果をシミュレートするサブルーチンを作成していた。
シミュレートされる機械がその命令を実行することが必
要になるたびに、その命令を復号し実行するためにその
サブルーチンを呼び出すことになる。この手法の問題点
は、サブルーチンを呼び出して実行するたびに、命令を
復号するというオーバーヘッドが生じることである。し
たがって、シミュレートされるプロセッサの速度が影響
を受ける。
効果をシミュレートするサブルーチンを作成していた。
シミュレートされる機械がその命令を実行することが必
要になるたびに、その命令を復号し実行するためにその
サブルーチンを呼び出すことになる。この手法の問題点
は、サブルーチンを呼び出して実行するたびに、命令を
復号するというオーバーヘッドが生じることである。し
たがって、シミュレートされるプロセッサの速度が影響
を受ける。
別のソフトウェア・シミュレーション手法では、命令を
実行することが必要になるたびにサブルーチンを呼び出
し代わりに、命令をシミュレートするためにより短いホ
スト機械命令シーケンスをコンパイルした。その結果、
ある命令を復号し翻訳するというオーバーヘッドは、そ
の命令に最初に出合ったときに一度だけ生じる。この翻
訳は次に保管され、それ以後は、その命令がシミュレー
トされるたびに、その翻訳が実行される。これは、しば
しば第2世代のシミュレータと呼ばれている。第1世代
のシミュレータは命令を一度に1つ受け取り、それを実
時間で復号し、実行する。復号は、各命令が必要とされ
るたびに各命令ごとに行なわれる。第2世代のシミュレ
ータは命令を一度に1つずつ調べ、それらの命令を翻訳
し、その後は戻って再び翻訳せずその翻訳を再使用す
る。
実行することが必要になるたびにサブルーチンを呼び出
し代わりに、命令をシミュレートするためにより短いホ
スト機械命令シーケンスをコンパイルした。その結果、
ある命令を復号し翻訳するというオーバーヘッドは、そ
の命令に最初に出合ったときに一度だけ生じる。この翻
訳は次に保管され、それ以後は、その命令がシミュレー
トされるたびに、その翻訳が実行される。これは、しば
しば第2世代のシミュレータと呼ばれている。第1世代
のシミュレータは命令を一度に1つ受け取り、それを実
時間で復号し、実行する。復号は、各命令が必要とされ
るたびに各命令ごとに行なわれる。第2世代のシミュレ
ータは命令を一度に1つずつ調べ、それらの命令を翻訳
し、その後は戻って再び翻訳せずその翻訳を再使用す
る。
以前の第2世代のシミュレータは、RSIMと呼ばれるIBM
システム/370上でIBM ROMP CPUをシミュレートするシミ
ュレータであった。このシミュレータは、セルと呼ばれ
る、各命令用の固定量の記憶域(各ハーフ・ワードにつ
き16バイト)を予約する。次に、各RT命令ごとにこれら
のセルのそれぞれに対してIBM370の命令が生成される。
生成されるコードの量が、1つのセルに入る量よりも少
ない場合は(一般的にそうであるが)、次のセルの次の
境界に分岐する。命令をシミュレートするために生成さ
れるコードの量が1つのセルに入りきらない場合は、実
行時環境ルーチン・セットに分岐するサブルーチン呼出
しが生成される。このルーチン・セットは、エミュレー
ションを実行してセルに戻り実行を完了する。もう1つ
のシミュレータはIBM RT PC上でIBMシステム/370のプロ
セッサをシミュレートするもので、解釈プログラム及び
解釈技術に関する計算機械協会シンポジウムで1987年6
月11日に発表され、ACMの1987年度発表要旨集SIGPLANで
公表されたC.メイ(May)の論文「模倣:高速システム/
370シミュレータ(Mimic:A Fast System/370Simulato
r)」に記載されている。
システム/370上でIBM ROMP CPUをシミュレートするシミ
ュレータであった。このシミュレータは、セルと呼ばれ
る、各命令用の固定量の記憶域(各ハーフ・ワードにつ
き16バイト)を予約する。次に、各RT命令ごとにこれら
のセルのそれぞれに対してIBM370の命令が生成される。
生成されるコードの量が、1つのセルに入る量よりも少
ない場合は(一般的にそうであるが)、次のセルの次の
境界に分岐する。命令をシミュレートするために生成さ
れるコードの量が1つのセルに入りきらない場合は、実
行時環境ルーチン・セットに分岐するサブルーチン呼出
しが生成される。このルーチン・セットは、エミュレー
ションを実行してセルに戻り実行を完了する。もう1つ
のシミュレータはIBM RT PC上でIBMシステム/370のプロ
セッサをシミュレートするもので、解釈プログラム及び
解釈技術に関する計算機械協会シンポジウムで1987年6
月11日に発表され、ACMの1987年度発表要旨集SIGPLANで
公表されたC.メイ(May)の論文「模倣:高速システム/
370シミュレータ(Mimic:A Fast System/370Simulato
r)」に記載されている。
第1世代のシミュレータは、シミュレートされる命令1
個当たり50ないし100個のホスト機械命令を実行する。
第2世代のシミュレータは、シミュレートされる命令1
個当たり平均10個のホスト機械命令を実行する。
個当たり50ないし100個のホスト機械命令を実行する。
第2世代のシミュレータは、シミュレートされる命令1
個当たり平均10個のホスト機械命令を実行する。
シミュレータが、シミュレートされる機械上で1つの命
令をシミュレートするために50または10個の命令を必要
とする場合、シミュレータを動かす第2のプロセッサ
は、匹敵する処理能力を示すためには、シミュレートさ
れる機械よりもそれぞれ50倍または10倍速くなければな
らない。したがって、当技術分野で従来実現されていた
よりもシミュレートまたは翻訳される命令1個当たりの
シミュレータ命令の数をさらに減らすことが望ましい。
令をシミュレートするために50または10個の命令を必要
とする場合、シミュレータを動かす第2のプロセッサ
は、匹敵する処理能力を示すためには、シミュレートさ
れる機械よりもそれぞれ50倍または10倍速くなければな
らない。したがって、当技術分野で従来実現されていた
よりもシミュレートまたは翻訳される命令1個当たりの
シミュレータ命令の数をさらに減らすことが望ましい。
たとえば、シミュレータが、シミュレートされる命令1
個当たり4個の命令しか使用しないよう設計でき、か
つ、シミュレータのプロセッサが、シミュレートされる
機械のプロセッサよりも4倍速い場合には、シミュレー
タは、シミュレートされる元の機械よりも速くなる。こ
のとき、ユーザは、シミュレートされた機械を使用して
アプリケーション・プログラムを実行することにより、
アプリケーション・プログラムが当初書かれたとき対象
となった機械を使用する場合よりも高い処理能力を得る
ことになる。
個当たり4個の命令しか使用しないよう設計でき、か
つ、シミュレータのプロセッサが、シミュレートされる
機械のプロセッサよりも4倍速い場合には、シミュレー
タは、シミュレートされる元の機械よりも速くなる。こ
のとき、ユーザは、シミュレートされた機械を使用して
アプリケーション・プログラムを実行することにより、
アプリケーション・プログラムが当初書かれたとき対象
となった機械を使用する場合よりも高い処理能力を得る
ことになる。
したがって、別のプロセッサをシミュレートする際に克
服すべき全体的問題は、シミュレートされる命令1個当
たりのシミュレータ(ホスト)命令の数をさらに減らし
て、シミュレータの処理速度を増大させることである。
服すべき全体的問題は、シミュレートされる命令1個当
たりのシミュレータ(ホスト)命令の数をさらに減らし
て、シミュレータの処理速度を増大させることである。
C.発明が解決しようとする問題点 したがって、本発明の目的は、シミュレートされる命令
1個当たりごとの平均のホスト機械命令数を減少させる
ことである。
1個当たりごとの平均のホスト機械命令数を減少させる
ことである。
D.問題点を解決するための手段 本発明のシミュレータは、本来別のプロセッサ用に書か
れたアプリケーションをソフトウェア・エミュレーショ
ンにより実行する。ソフトウェアによるシミュレーショ
ン手法では、シミュレータ機械のオペレーティング・シ
ステムの機能を利用できるというフレキシビリティが得
られる。本発明の好ましい実施例では、シミュレータは
RT PCのAIXオペレーティング・システム上のアプリケー
ションとして働く。したがって、シミュレータは、AIX
オペレーティング・システムの多重タスク処理及び多重
ユーザ機能を利用して、本来PC AT用に書かれた多数の
アプリケーションをアプリケーション自体に変更を加え
ずに同時に実行することが可能となる。
れたアプリケーションをソフトウェア・エミュレーショ
ンにより実行する。ソフトウェアによるシミュレーショ
ン手法では、シミュレータ機械のオペレーティング・シ
ステムの機能を利用できるというフレキシビリティが得
られる。本発明の好ましい実施例では、シミュレータは
RT PCのAIXオペレーティング・システム上のアプリケー
ションとして働く。したがって、シミュレータは、AIX
オペレーティング・システムの多重タスク処理及び多重
ユーザ機能を利用して、本来PC AT用に書かれた多数の
アプリケーションをアプリケーション自体に変更を加え
ずに同時に実行することが可能となる。
本発明のシミュレーションの方法は、シミュレートされ
る機械命令1個当たりのホスト機械命令の数を減少させ
ることにより、従来のプロセッサ・シミュレーションの
方法よりも速いシミュレート・プロセッサの処理能力を
提供する。これは、従来必要なよりも多くの命令を使用
していた主要処理分野を特定し、次に、より少ない命令
を使って処理タスクを実施する新しい方法を創出するこ
とにより実現された。
る機械命令1個当たりのホスト機械命令の数を減少させ
ることにより、従来のプロセッサ・シミュレーションの
方法よりも速いシミュレート・プロセッサの処理能力を
提供する。これは、従来必要なよりも多くの命令を使用
していた主要処理分野を特定し、次に、より少ない命令
を使って処理タスクを実施する新しい方法を創出するこ
とにより実現された。
CPUシミュレーションを増大させるため、すなわち、シ
ミュレートされる命令1個当たりのホスト命令の平均数
を減少させるために、従来必要なよりも多くの命令を使
用していた幾つかの主要処理分野を特定した。
ミュレートされる命令1個当たりのホスト命令の平均数
を減少させるために、従来必要なよりも多くの命令を使
用していた幾つかの主要処理分野を特定した。
第1に、条件コードの正しい値を維持し、保持する処理
タスクを特定した。条件コードは、たとえそれが実行中
に後続の命令によって使用されなくても、追跡されてい
た。たとえば、加算命令は、アーキテクチャでは、加算
を実行するのみならず、結果が0であるかどうか、あふ
れがあるかどうか等を示す条件コードをセットするとい
う副作用をも有するものとして定義されている。大抵の
場合、実行中には条件コードは必要とされない。言い換
えると、それらのフラグを必要とする後続の命令はな
い。第2世代のシミュレータでは、条件コードが必要と
される場合に、それが何であるかを判定するのに十分な
情報を少なくとも記憶するための作業がすべつの加算命
令について行なわれる。大抵の場合は、これさえ無駄な
作業である。
タスクを特定した。条件コードは、たとえそれが実行中
に後続の命令によって使用されなくても、追跡されてい
た。たとえば、加算命令は、アーキテクチャでは、加算
を実行するのみならず、結果が0であるかどうか、あふ
れがあるかどうか等を示す条件コードをセットするとい
う副作用をも有するものとして定義されている。大抵の
場合、実行中には条件コードは必要とされない。言い換
えると、それらのフラグを必要とする後続の命令はな
い。第2世代のシミュレータでは、条件コードが必要と
される場合に、それが何であるかを判定するのに十分な
情報を少なくとも記憶するための作業がすべつの加算命
令について行なわれる。大抵の場合は、これさえ無駄な
作業である。
本発明の方法は、従来コンパイラ技術に適用されていた
技術を使用し、それをCPUシミュレータ技術に適用し
て、条件コードが後続の命令によって必要とされるかど
うかを動的に判定する。アプリケーション・プログラム
に対するプロセッサの命令制御流れグラフを解析して、
命令の後に条件コードが必要とされるかどうかを判定す
る。シミュレータは、必要とされるかも知れない条件コ
ードを発生するのに十分な情報を保管する。そうでな
く、条件コードが必要とされないことがグラフ解析から
判定された場合は、その命令に対して必要とされる翻訳
命令の数が減少される。
技術を使用し、それをCPUシミュレータ技術に適用し
て、条件コードが後続の命令によって必要とされるかど
うかを動的に判定する。アプリケーション・プログラム
に対するプロセッサの命令制御流れグラフを解析して、
命令の後に条件コードが必要とされるかどうかを判定す
る。シミュレータは、必要とされるかも知れない条件コ
ードを発生するのに十分な情報を保管する。そうでな
く、条件コードが必要とされないことがグラフ解析から
判定された場合は、その命令に対して必要とされる翻訳
命令の数が減少される。
E.実施例 E1.処理システム環境 本発明のシステム及び方法の好ましい実施例は、複合命
令セットを用いたIntel80286プロセッサを使用するIBM
PC AT等の処理システムを、縮小命令セット・コンピュ
ータ(RISC)技術を用いたROMPプロセッサを使用するIB
M RT PC等の第1図に示す処理システム上でシミュレー
トする。RISCプロセッサは1命令当たりの機能は少ない
が、命令を速く処理することができる。Intel80286に基
づく機械とRISCに基づく機械のアーキテクチャは互いに
まったく異なっている。2つの処理システムのアーキテ
クチャの差異が大きければ大きいほど、一方のプロセッ
サを他方の処理システム上でシミュレートすることが一
層難しくなる。
令セットを用いたIntel80286プロセッサを使用するIBM
PC AT等の処理システムを、縮小命令セット・コンピュ
ータ(RISC)技術を用いたROMPプロセッサを使用するIB
M RT PC等の第1図に示す処理システム上でシミュレー
トする。RISCプロセッサは1命令当たりの機能は少ない
が、命令を速く処理することができる。Intel80286に基
づく機械とRISCに基づく機械のアーキテクチャは互いに
まったく異なっている。2つの処理システムのアーキテ
クチャの差異が大きければ大きいほど、一方のプロセッ
サを他方の処理システム上でシミュレートすることが一
層難しくなる。
RT PC処理システム、IBM PC AT処理システム、及びInte
l80286プロセッサに関するより詳しい情報については、
以下の参照文献を引用されたい。それらの開示を引用に
より本明細書に組み込む。M.J.バッハ(Bach)、「The
Design of the UNIX Operating System」、プレンティ
ス・ホール(Prentice Hall)、1986年。T.G.ラング(L
ang)及びT.L.マザーソール(Mothersole)、「Design
of the RT PC VRM Nucleus」、1986年9月1日。
l80286プロセッサに関するより詳しい情報については、
以下の参照文献を引用されたい。それらの開示を引用に
より本明細書に組み込む。M.J.バッハ(Bach)、「The
Design of the UNIX Operating System」、プレンティ
ス・ホール(Prentice Hall)、1986年。T.G.ラング(L
ang)及びT.L.マザーソール(Mothersole)、「Design
of the RT PC VRM Nucleus」、1986年9月1日。
「AIX Operating System Commands Reference Version
2.1」、IBM社、SC23−0790。「AIX Operating System M
anaging the AIX Operating System Version2.1」、IBM
社、SC23−0793。「AIX Operating System Programming
Tools and Interfaces Version2.1」、IBM社、SC23−0
789。「AIX Operating System Technical Reference Ve
rsion2.1」、第1巻及び第2巻、IBM社、SC23−0808及
びSC23−0809。「IBM RTPersonal Computer Technolog
y」、IBM社、SA23−1057、1986年。
2.1」、IBM社、SC23−0790。「AIX Operating System M
anaging the AIX Operating System Version2.1」、IBM
社、SC23−0793。「AIX Operating System Programming
Tools and Interfaces Version2.1」、IBM社、SC23−0
789。「AIX Operating System Technical Reference Ve
rsion2.1」、第1巻及び第2巻、IBM社、SC23−0808及
びSC23−0809。「IBM RTPersonal Computer Technolog
y」、IBM社、SA23−1057、1986年。
「Virtual Resource Manager Technical Reference Ver
sion2.1」、第1巻及び第2巻、IBM社、SC23−0816及び
SC23−0817。「iAPX 286 Programmer′s Reference Man
ual Including the iAPX 286 Numeric Supplement」、I
ntel社、210498−003、1985年。及び「IBM PC AT Te
chnical Reference Manufl」、IBM社、1984年3月。
sion2.1」、第1巻及び第2巻、IBM社、SC23−0816及び
SC23−0817。「iAPX 286 Programmer′s Reference Man
ual Including the iAPX 286 Numeric Supplement」、I
ntel社、210498−003、1985年。及び「IBM PC AT Te
chnical Reference Manufl」、IBM社、1984年3月。
E2.シミュレーションの概要 第1図に示すように、シミュレータ10は処理システム1
のオペレーティング・システム12上でアプリケーション
・プログラムとして実行される。第1図に加えて第2図
を参照すると、ステップ2でシミュレータ10が始動され
ると、シミュレータ10はステップ3で、読取り専用記憶
装置(ROS)(読取り専用メモリ(ROM)とも呼ばれる)
15から、80286の命令を含むBIOS13をオペレーティング
・システム12の共用メモリ・セグメント16に複写する。
ステップ4で、シミュレータ10はBIOS13を翻訳し、ステ
ップ5で、BIOS13は、アプリケーション19が当初書かれ
たとき対象とされたオペレーティング・システム(DO
S)18をロードする。シミュレータ10は次にステップ6
で、そのオペレーティング・システム18を翻訳して実行
する。ステップ7で、ユーザはオペレーティング・シス
テム・プロンプトでアプリケーション19を呼び出し、ス
テップ8で、シミュレータ10はアプリケーション・プロ
グラム19を翻訳して実行する。
のオペレーティング・システム12上でアプリケーション
・プログラムとして実行される。第1図に加えて第2図
を参照すると、ステップ2でシミュレータ10が始動され
ると、シミュレータ10はステップ3で、読取り専用記憶
装置(ROS)(読取り専用メモリ(ROM)とも呼ばれる)
15から、80286の命令を含むBIOS13をオペレーティング
・システム12の共用メモリ・セグメント16に複写する。
ステップ4で、シミュレータ10はBIOS13を翻訳し、ステ
ップ5で、BIOS13は、アプリケーション19が当初書かれ
たとき対象とされたオペレーティング・システム(DO
S)18をロードする。シミュレータ10は次にステップ6
で、そのオペレーティング・システム18を翻訳して実行
する。ステップ7で、ユーザはオペレーティング・シス
テム・プロンプトでアプリケーション19を呼び出し、ス
テップ8で、シミュレータ10はアプリケーション・プロ
グラム19を翻訳して実行する。
CPUシミュレーションの処理能力を増大させるため、す
なわち、シミュレートされる命令1個当たりのホスト命
令の平均数を減少させるため、現在必要なよりも多くの
命令を使用している主要処理分野を特定した。
なわち、シミュレートされる命令1個当たりのホスト命
令の平均数を減少させるため、現在必要なよりも多くの
命令を使用している主要処理分野を特定した。
E3.条件コードのグラフ解析 最初に、条件コードの正しい値を維持し、保持する処理
タスクを特定した。
タスクを特定した。
多数のプロセッサ命令が、フラグ・レジスタ20に作用し
て、フラグ・レジスタ20(第3C図)中の条件コード21−
26を、ある動作の結果を反映するように更新する。異な
る6つの条件コード、すなわち、あふれフラグ21、符号
フラグ22、ゼロ・フラグ23、演算フラグ24(半桁上げと
も呼ばれる)、パリティ・フラグ25、及び桁上げフラグ
26がある。これらの条件コード21−26は、結果が0であ
ったかどうか、結果が負であったかどうか、レジスタの
桁上げが生じたかどうか、またはあふれ条件がもたらさ
れたかどうか等の一般条件を示す。さらに、結果の下位
バイトのパリティ(奇数または偶数)及び動作の下位4
ビットの桁上げ(半桁上げ)を示す条件も含む。
て、フラグ・レジスタ20(第3C図)中の条件コード21−
26を、ある動作の結果を反映するように更新する。異な
る6つの条件コード、すなわち、あふれフラグ21、符号
フラグ22、ゼロ・フラグ23、演算フラグ24(半桁上げと
も呼ばれる)、パリティ・フラグ25、及び桁上げフラグ
26がある。これらの条件コード21−26は、結果が0であ
ったかどうか、結果が負であったかどうか、レジスタの
桁上げが生じたかどうか、またはあふれ条件がもたらさ
れたかどうか等の一般条件を示す。さらに、結果の下位
バイトのパリティ(奇数または偶数)及び動作の下位4
ビットの桁上げ(半桁上げ)を示す条件も含む。
第1のプロセッサのフラグ・レジスタを最新状態に保つ
ことによってセットされる第1のプロセッサの命令をシ
ミュレートするには、レジスタに作用する全命令に対し
て追加のサイクルが必要となるはずである。このこと
は、第1のプロセッサのアーキテクチャによって、条件
コード更新の異なる幾つかの組合せが定義される場合に
特に当てはまる。たとえば、条件コードは常にセットま
たはクリアされ、計算され、未変更のままにされ、ある
いは未定義のままにされることが可能である。
ことによってセットされる第1のプロセッサの命令をシ
ミュレートするには、レジスタに作用する全命令に対し
て追加のサイクルが必要となるはずである。このこと
は、第1のプロセッサのアーキテクチャによって、条件
コード更新の異なる幾つかの組合せが定義される場合に
特に当てはまる。たとえば、条件コードは常にセットま
たはクリアされ、計算され、未変更のままにされ、ある
いは未定義のままにされることが可能である。
以前のシミュレータRSIM、すなわち、IBM S/370上のRT
PCプロセッサ・シミュレータは、条件コードを記録する
というオーバーヘッドを減少させるためにある方式を使
用していた。この目的のためにレジスタが予約されてい
た。予約されたレジスタは、ある動作に関する32ビット
の値と、実行される動作のタイプを含んでいた。条件コ
ードの値を判定する作業を、それを実際に必要とする命
令がシミュレートされるまで延期するという考えであ
る。それにもかかわらず、依然としてこれらの値及びタ
イプを保管するというオーバーヘッドがある。可能なす
べての後続の経路が、同じ条件コードを変更する命令を
含み、それらを必要とする命令が介在しない場合は、こ
のオーバーヘッドは不必要である。
PCプロセッサ・シミュレータは、条件コードを記録する
というオーバーヘッドを減少させるためにある方式を使
用していた。この目的のためにレジスタが予約されてい
た。予約されたレジスタは、ある動作に関する32ビット
の値と、実行される動作のタイプを含んでいた。条件コ
ードの値を判定する作業を、それを実際に必要とする命
令がシミュレートされるまで延期するという考えであ
る。それにもかかわらず、依然としてこれらの値及びタ
イプを保管するというオーバーヘッドがある。可能なす
べての後続の経路が、同じ条件コードを変更する命令を
含み、それらを必要とする命令が介在しない場合は、こ
のオーバーヘッドは不必要である。
フラグ・レジスタ20のどの変更が後続命令によって実際
に使用されたかを判定するため、本発明のシミュレータ
10は、第1のプロセッサ命令ブロック100のグラフ解析
(第3A図の30または第3C図の50)によってもたらされる
情報を使用する。これらの技術は、従来高水準言語コン
パイラを最適化するのに用いられていた。しかし、この
技術がプロセッサ・シミュレーションの問題に適用され
たのはこれが始めてであると考えられる。
に使用されたかを判定するため、本発明のシミュレータ
10は、第1のプロセッサ命令ブロック100のグラフ解析
(第3A図の30または第3C図の50)によってもたらされる
情報を使用する。これらの技術は、従来高水準言語コン
パイラを最適化するのに用いられていた。しかし、この
技術がプロセッサ・シミュレーションの問題に適用され
たのはこれが始めてであると考えられる。
ステップ131(第4図)で、シミュレータ10が新しい第
1のプロセッサ命令ブロック100に到達すると、ステッ
プ132で、シミュレータ10は第2のプロセッサ翻訳を行
なうため翻訳プログラム27を呼び出す。翻訳は3段階で
行なわれる。
1のプロセッサ命令ブロック100に到達すると、ステッ
プ132で、シミュレータ10は第2のプロセッサ翻訳を行
なうため翻訳プログラム27を呼び出す。翻訳は3段階で
行なわれる。
最初に、ステップ133(第4図)でグラフ50(第3C図)
が作成される。これは第1のプロセッサ命令ブロック10
0の構造を表わす。グラフ内の各ノード101は1つの命令
100に対応する。第1のプロセッサ命令デコーダ28は、
実行のため、命令100がどのレジスタ及び条件コード21
−26を必要とするか(ブロック42)、及び実行の結果、
命令100がどの条件21−26をセットするか(ブロック4
3)を含めて、命令100に関する情報を各ノード101に記
入する。使用レジスタ42及びセット・レジスタ43はあふ
れフラグ21及び桁上げフラグ26用に単独のビットを有
し、残りの条件コード22−25は1ビットにまとめられる
ことに留意されたい。したがって、これらの条件コード
22−25のいずれかが命令100によって使用またはセット
された場合、レジスタ42、43の中間ビットはそのように
指示する。
が作成される。これは第1のプロセッサ命令ブロック10
0の構造を表わす。グラフ内の各ノード101は1つの命令
100に対応する。第1のプロセッサ命令デコーダ28は、
実行のため、命令100がどのレジスタ及び条件コード21
−26を必要とするか(ブロック42)、及び実行の結果、
命令100がどの条件21−26をセットするか(ブロック4
3)を含めて、命令100に関する情報を各ノード101に記
入する。使用レジスタ42及びセット・レジスタ43はあふ
れフラグ21及び桁上げフラグ26用に単独のビットを有
し、残りの条件コード22−25は1ビットにまとめられる
ことに留意されたい。したがって、これらの条件コード
22−25のいずれかが命令100によって使用またはセット
された場合、レジスタ42、43の中間ビットはそのように
指示する。
第2に、ステップ134(第4図)で、グラフ30を解析し
て、どこで割込みをポーリングしなければならないか、
分岐を最小にするため翻訳をどのように順序付けるか、
及び命令によって定義されるどの条件コードが実際に使
用されるかを判定する。
て、どこで割込みをポーリングしなければならないか、
分岐を最小にするため翻訳をどのように順序付けるか、
及び命令によって定義されるどの条件コードが実際に使
用されるかを判定する。
第3に、ステップ136(第4図)で、コード発生機構29
を呼び出して、グラフ30を第2のプロセッサ命令130
(第3D図)に変換する。
を呼び出して、グラフ30を第2のプロセッサ命令130
(第3D図)に変換する。
ステップ136でコードが発生されるとき、グラフ50内の
情報は、命令によって定義される条件コード21−26が実
際に使用されるかどうかを示す。たとえば、大抵の場合
は、シフト(SHL)命令125(第3B図及び第3C図)によっ
て定義される条件コードは実際には使用されない。コー
ド発生機構29はこの知識を使って、条件コードが必要で
あったなら動作のオペランドを保管するためには4また
は5個の命令が必要となったかも知れない場合に、単一
の第2のプロセッサ命令135(第3D図)を発生すること
ができる。この例ではADD命令用の条件コード21−26が
後続の命令128で必要となることが、命令100の制御流れ
(第3B図及び第3C図)からで理解できる。したがって、
翻訳された命令130(第3D図)は、条件コードが必要で
なかった場合には1つしか命令を発生しない所を、6個
の命令をもたらした。ただし、条件コード21−26が必要
でないことをグラフ解析50が示す場合には、翻訳された
余分な命令は発生されない。
情報は、命令によって定義される条件コード21−26が実
際に使用されるかどうかを示す。たとえば、大抵の場合
は、シフト(SHL)命令125(第3B図及び第3C図)によっ
て定義される条件コードは実際には使用されない。コー
ド発生機構29はこの知識を使って、条件コードが必要で
あったなら動作のオペランドを保管するためには4また
は5個の命令が必要となったかも知れない場合に、単一
の第2のプロセッサ命令135(第3D図)を発生すること
ができる。この例ではADD命令用の条件コード21−26が
後続の命令128で必要となることが、命令100の制御流れ
(第3B図及び第3C図)からで理解できる。したがって、
翻訳された命令130(第3D図)は、条件コードが必要で
なかった場合には1つしか命令を発生しない所を、6個
の命令をもたらした。ただし、条件コード21−26が必要
でないことをグラフ解析50が示す場合には、翻訳された
余分な命令は発生されない。
シミュレータ10は第1のプロセッサ命令100を第2のプ
ロセッサ命令130に翻訳するが、一度に1つの命令の翻
訳を行なわない。シミュレータ10は、これから実行する
翻訳のない第1の命令を調べ、第3A図に示す命令のグラ
フ30を作成しながら後続の命令の検査を続行する。
ロセッサ命令130に翻訳するが、一度に1つの命令の翻
訳を行なわない。シミュレータ10は、これから実行する
翻訳のない第1の命令を調べ、第3A図に示す命令のグラ
フ30を作成しながら後続の命令の検査を続行する。
グラフ30の各ノード101は1つの第1プロセッサ命令100
に対応する。各ノード101は多くとも2つの子孫しか持
てない。メモリ内の次の順次命令にのみ制御権を移す順
次命令102、105、106、108、110、111、112の場合は、
ノード101は、第3A図に垂直線114として示すように、そ
れぞれ1つの子孫103、106、107、109、111、112、113
しか持たない。条件付き分岐103、104の場合には2つの
子孫があり得、これらの命令は条件の真偽をテストし
て、条件が真の場合はある命令に分岐し、条件が偽の場
合は次の命令に進む。割込み戻り命令109のように、ノ
ード101が子孫を持たないこともあり得る。子孫を持た
ない命令109は、制御権を動的に移す命令の例である。
さらに、ノード101は、順次命令ではない1つの子孫を
持つことができる。無条件飛越し命令107がその一例で
ある。
に対応する。各ノード101は多くとも2つの子孫しか持
てない。メモリ内の次の順次命令にのみ制御権を移す順
次命令102、105、106、108、110、111、112の場合は、
ノード101は、第3A図に垂直線114として示すように、そ
れぞれ1つの子孫103、106、107、109、111、112、113
しか持たない。条件付き分岐103、104の場合には2つの
子孫があり得、これらの命令は条件の真偽をテストし
て、条件が真の場合はある命令に分岐し、条件が偽の場
合は次の命令に進む。割込み戻り命令109のように、ノ
ード101が子孫を持たないこともあり得る。子孫を持た
ない命令109は、制御権を動的に移す命令の例である。
さらに、ノード101は、順次命令ではない1つの子孫を
持つことができる。無条件飛越し命令107がその一例で
ある。
上に示したように、命令100には4つのタイプがある。
これらのタイプはコード中で以下のように番号付けされ
る。ノードにある命令が子孫を持たない場合、すなわ
ち、戻り命令128(第3C図)、割込み戻り命令109(第3A
図)及び戻り命令113(第3A図)では、ノード101は番号
「0」を付される。順次命令であり、かつ1つの順次子
孫を持つ場合、たとえば、(第3C図)比較命令121、減
分命令124(第3C図)、比較命令102、増分命令108(第3
A図)では、ノード101は番号「1」を付される。命令が
2つの子孫を持つ場合、すなわち、if below飛越し命令
122(第3C図)及び103(第3A図)では、ノード101は番
号「2」を付される。順次命令ではないが1つの子孫し
か持たない場合、すなわち、飛越し命令107(第3A図)
では、、ノード101は番号「3」を付される。
これらのタイプはコード中で以下のように番号付けされ
る。ノードにある命令が子孫を持たない場合、すなわ
ち、戻り命令128(第3C図)、割込み戻り命令109(第3A
図)及び戻り命令113(第3A図)では、ノード101は番号
「0」を付される。順次命令であり、かつ1つの順次子
孫を持つ場合、たとえば、(第3C図)比較命令121、減
分命令124(第3C図)、比較命令102、増分命令108(第3
A図)では、ノード101は番号「1」を付される。命令が
2つの子孫を持つ場合、すなわち、if below飛越し命令
122(第3C図)及び103(第3A図)では、ノード101は番
号「2」を付される。順次命令ではないが1つの子孫し
か持たない場合、すなわち、飛越し命令107(第3A図)
では、、ノード101は番号「3」を付される。
第1のプロセッサの命令ブロック100(第3B図)につい
て記述するグラフ50(第3C図)を命令100 1個当たり
1つのノード101で作成した後、シミュレータはグラフ5
0の解析を行なう。各ノード101は、第1のプロセッサ命
令100が実行のために通常どの条件コード21−26を必要
とするか(レジスタ42)、及び実行後にその命令によっ
てどの条件コード21−26がセットされるか(レジスタ4
3)に関する情報を含む。比較命令121の場合、比較命令
121は実行のためにどの条件コード21−26も必要としな
いが、それらのすべてをセットする(レジスタ43)。if
below飛込し(JB)命令122は、桁上げ条件コードがテ
ストされるものなので、実行のために桁上げ条件コード
26を必要とするが(レジスタ42)、実行後にどの条件コ
ードもセットしない(レジスタ43)。if equal飛越し
(JE)命令123は実行のためにif equalコード・ビット
を必要とするが、実行後にどの条件コードもセットしな
い。増分命令124はあふれフラグ21及び演算フラグ24を
セットし(レジスタ43)、桁上げ条件コード26を未変更
のままにする(レジスタ43)。このようにして、命令10
0の残りの各々についてもグラフ解析を続ける。
て記述するグラフ50(第3C図)を命令100 1個当たり
1つのノード101で作成した後、シミュレータはグラフ5
0の解析を行なう。各ノード101は、第1のプロセッサ命
令100が実行のために通常どの条件コード21−26を必要
とするか(レジスタ42)、及び実行後にその命令によっ
てどの条件コード21−26がセットされるか(レジスタ4
3)に関する情報を含む。比較命令121の場合、比較命令
121は実行のためにどの条件コード21−26も必要としな
いが、それらのすべてをセットする(レジスタ43)。if
below飛込し(JB)命令122は、桁上げ条件コードがテ
ストされるものなので、実行のために桁上げ条件コード
26を必要とするが(レジスタ42)、実行後にどの条件コ
ードもセットしない(レジスタ43)。if equal飛越し
(JE)命令123は実行のためにif equalコード・ビット
を必要とするが、実行後にどの条件コードもセットしな
い。増分命令124はあふれフラグ21及び演算フラグ24を
セットし(レジスタ43)、桁上げ条件コード26を未変更
のままにする(レジスタ43)。このようにして、命令10
0の残りの各々についてもグラフ解析を続ける。
ノード101は、アプリケーション・プログラム19がノー
ドを見つけたとき順に記憶装置120内に割り振られる。
本来第1のプロセッサ用に書かれたアプリケーション・
プログラム19を用いる探索は深度第1探索とよばれる。
深度第1探索とは、エンド・ノード(タイプ0)、たと
えば、IRET命令109(第3A図)に達するまで命令を順次
探索するという意味である。タイプ0のノードに達した
後、探索は、複数の子孫を持つ最後の命令に戻る。
ドを見つけたとき順に記憶装置120内に割り振られる。
本来第1のプロセッサ用に書かれたアプリケーション・
プログラム19を用いる探索は深度第1探索とよばれる。
深度第1探索とは、エンド・ノード(タイプ0)、たと
えば、IRET命令109(第3A図)に達するまで命令を順次
探索するという意味である。タイプ0のノードに達した
後、探索は、複数の子孫を持つ最後の命令に戻る。
メモリ120に記憶される命令100(第3A図)の順序は、比
較命令102、JB命令103、JE命令104、増分命令108及び割
込み戻り命令109の順である。割込み戻り命令109の後
で、探索はJE命令104に戻って2番目の子孫を調べる。
2番目の子孫である割込み戻り命令109はすでにメモリ
に記憶されている命令である。したがって、探索は、2
つの子孫を持つもう1つの前のノード、すなわち、JB命
令103に戻り、第2の経路をたどる。次にこの経路中で
新しいコードが見つかる。次の命令は、第3A図に示す順
序でメモリに記憶される。
較命令102、JB命令103、JE命令104、増分命令108及び割
込み戻り命令109の順である。割込み戻り命令109の後
で、探索はJE命令104に戻って2番目の子孫を調べる。
2番目の子孫である割込み戻り命令109はすでにメモリ
に記憶されている命令である。したがって、探索は、2
つの子孫を持つもう1つの前のノード、すなわち、JB命
令103に戻り、第2の経路をたどる。次にこの経路中で
新しいコードが見つかる。次の命令は、第3A図に示す順
序でメモリに記憶される。
第3B図及び第3C図を参照すると、ノード101の各々につ
いて、シミュレータは2つのフィールドをメモリに保持
する。その一方のフィールドは、命令100が必要とする
条件コード21−26であり(レジスタ42)、他方のフィー
ルドは、命令100によってセットされる条件コード21−2
6である(レジスタ43)。その時点でどの条件コードを
セットしなけばならないかを最適化するため、伝播過程
が実行される。これは、割り振られた最後の命令から割
り振られた最初の命令に進むことによって行なわれる。
この順序で命令が循環待ち行列から取り出される。ノー
ド101のレジスタ42は、そのノードのレジスタ43の補数
をすべての子孫ノードのレジスタ42とAND演算し、その
結果を、更新されるノード101のレジスタ42とOR演算し
てレジスタ42に入れることによって更新される。更新さ
れたレジスタ42は条件コード21−26を子孫が必要とする
かどうかを反映する。すべての子孫が実行済みとマーク
されている場合は、更新されているノード101も実行済
みであり、ノード101が待ち行列から取り出される。ノ
ードが実行されていない場合は、その命令は待ち行列の
終わりに置かれる。待ち行列が空であって、すべてのノ
ードが処理済みであることを示すか、あるいは、何も変
わっていない、すなわち、更新されなかったノードが幾
つか待ち行列に残っている状態になるまで、待ち行列が
調べられる。
いて、シミュレータは2つのフィールドをメモリに保持
する。その一方のフィールドは、命令100が必要とする
条件コード21−26であり(レジスタ42)、他方のフィー
ルドは、命令100によってセットされる条件コード21−2
6である(レジスタ43)。その時点でどの条件コードを
セットしなけばならないかを最適化するため、伝播過程
が実行される。これは、割り振られた最後の命令から割
り振られた最初の命令に進むことによって行なわれる。
この順序で命令が循環待ち行列から取り出される。ノー
ド101のレジスタ42は、そのノードのレジスタ43の補数
をすべての子孫ノードのレジスタ42とAND演算し、その
結果を、更新されるノード101のレジスタ42とOR演算し
てレジスタ42に入れることによって更新される。更新さ
れたレジスタ42は条件コード21−26を子孫が必要とする
かどうかを反映する。すべての子孫が実行済みとマーク
されている場合は、更新されているノード101も実行済
みであり、ノード101が待ち行列から取り出される。ノ
ードが実行されていない場合は、その命令は待ち行列の
終わりに置かれる。待ち行列が空であって、すべてのノ
ードが処理済みであることを示すか、あるいは、何も変
わっていない、すなわち、更新されなかったノードが幾
つか待ち行列に残っている状態になるまで、待ち行列が
調べられる。
第2の経路がグラフを用いて実行される。この経路で
は、その子孫が必要とする条件コードであるとこのとき
示されている条件コードに肯定応答するためにセットさ
れた条件コードを減少させることによって、レジスタ43
が更新される。
は、その子孫が必要とする条件コードであるとこのとき
示されている条件コードに肯定応答するためにセットさ
れた条件コードを減少させることによって、レジスタ43
が更新される。
この解析の終わりで、各ノード101は、どの条件コード2
1−26をセットしなければならないかを示す(レジスタ4
3)。条件コード21−26の数は、その命令によって初め
にセットされた数よりも少なくすることができる。この
1組の条件コードは、後続の命令が使用する条件コード
のみを含む。たとえば、戻り命令128は、後続の命令が
実行まで未知なので、予防措置として条件コード21−26
のすべてを使用することをレジスタ42で示す。移動命令
127は一般には条件コード21−26を使用しないが(レジ
スタ42)、後続の戻り命令128がそれらを必要とするの
で使用を示す(レジスタ42)。加算命令126は条件コー
ド21−26を使用しないが(レジスタ42)、後で使用でき
るように、それらをすべてセットする(レジスタ43)。
シフト命令125は一般には条件コード21−26のすべてを
セットするが(レジスタ43)、後続の加算命令126がそ
れらを使用しないので、この場合はセットする必要はな
い。加算命令126が条件コード21−26を後で使用できる
ようにセットすることはすでに解析された。この解析
は、使用レジスタ42及びセット・レジスタ43を更新する
ためのものであり、グラフ解析を実行するために指定さ
れた順序で以前に記憶された命令100のリストを、逆の
順序で進む。
1−26をセットしなければならないかを示す(レジスタ4
3)。条件コード21−26の数は、その命令によって初め
にセットされた数よりも少なくすることができる。この
1組の条件コードは、後続の命令が使用する条件コード
のみを含む。たとえば、戻り命令128は、後続の命令が
実行まで未知なので、予防措置として条件コード21−26
のすべてを使用することをレジスタ42で示す。移動命令
127は一般には条件コード21−26を使用しないが(レジ
スタ42)、後続の戻り命令128がそれらを必要とするの
で使用を示す(レジスタ42)。加算命令126は条件コー
ド21−26を使用しないが(レジスタ42)、後で使用でき
るように、それらをすべてセットする(レジスタ43)。
シフト命令125は一般には条件コード21−26のすべてを
セットするが(レジスタ43)、後続の加算命令126がそ
れらを使用しないので、この場合はセットする必要はな
い。加算命令126が条件コード21−26を後で使用できる
ようにセットすることはすでに解析された。この解析
は、使用レジスタ42及びセット・レジスタ43を更新する
ためのものであり、グラフ解析を実行するために指定さ
れた順序で以前に記憶された命令100のリストを、逆の
順序で進む。
第3D図からわかるように、翻訳130では減分命令124及び
シフト命令125(第3C図)に対してそれぞれ1つの命令
しか必要でなかった。それとは対照的に、条件コード21
−26を後で使用できるようにセットする加算命令126は
6つの命令を必要とした。
シフト命令125(第3C図)に対してそれぞれ1つの命令
しか必要でなかった。それとは対照的に、条件コード21
−26を後で使用できるようにセットする加算命令126は
6つの命令を必要とした。
同様に、第3A図のグラフ解析30はまた、すべての条件コ
ードをセットする比較命令が後続の命令で6つの条件コ
ードのうちJE命令104が使用する0ビットとJB命令103が
使用する桁上げビットの2つしか必要としないことを示
している。他の条件コードのいずれも必要でない。さら
に、第3A図に示す条件付き分岐のどの子孫も他の条件コ
ードを必要としない。したがって、シミュレータは、条
件コードのセッティングを気にかけることなく、3つの
命令102、103、104のブロックを1つの単位として翻訳
することができる。したがって、対応する条件コードの
保管を必要とする命令の数が減少する。
ードをセットする比較命令が後続の命令で6つの条件コ
ードのうちJE命令104が使用する0ビットとJB命令103が
使用する桁上げビットの2つしか必要としないことを示
している。他の条件コードのいずれも必要でない。さら
に、第3A図に示す条件付き分岐のどの子孫も他の条件コ
ードを必要としない。したがって、シミュレータは、条
件コードのセッティングを気にかけることなく、3つの
命令102、103、104のブロックを1つの単位として翻訳
することができる。したがって、対応する条件コードの
保管を必要とする命令の数が減少する。
グラフ解析という従来のコンパイラ技術をプロセッサ・
シミュレータに適用することにより、後続の命令が条件
コードを使用するかどうかに関する基本的知識が得られ
る。第1のプロセッサ命令100を第2のプロセッサ命令1
30に翻訳するコード発生機構29は、多くの場合、条件コ
ード情報を使って、単一の第2プロセッサ翻訳命令を発
生する。このため、各命令の後でフラグ・レジスタが最
新状態に保持された場合に、不必要なサイクルが減少し
シミュレータの処理能力が向上する。
シミュレータに適用することにより、後続の命令が条件
コードを使用するかどうかに関する基本的知識が得られ
る。第1のプロセッサ命令100を第2のプロセッサ命令1
30に翻訳するコード発生機構29は、多くの場合、条件コ
ード情報を使って、単一の第2プロセッサ翻訳命令を発
生する。このため、各命令の後でフラグ・レジスタが最
新状態に保持された場合に、不必要なサイクルが減少し
シミュレータの処理能力が向上する。
グラフ解析の結果を使って制御の流れをシミュレートす
るための翻訳命令を減らすことに加えて、グラフ解析か
らの結果を、割込みポーリングの最小化法で使用するこ
とができる。
るための翻訳命令を減らすことに加えて、グラフ解析か
らの結果を、割込みポーリングの最小化法で使用するこ
とができる。
E4.命令アドレスの翻訳 本発明の好ましい実施例であるシミュレータは、IBM PC
ATで使用されるIntel iAPX80286ブロセッサ(第1の
プロセッサ)の命令をIBM RT PCで使用されるROMPプロ
セッサ(第2のプロセッサ)のシミュレータ命令に翻訳
する。これらの翻訳は、本来シミュレートされる第1の
プロセッサ用に書かれたアプリケーション・プログラム
が制御権をその同じアドレスに再び移すとき再使用でき
るように保管される。制御権を移さない命令の場合は、
その命令の命令ポインタに命令の長さを加えることによ
って、次の命令ポインタ(IP)の判定が行なわれる。順
次シミュレータ命令の同様のシーケンスがシミュレータ
によって発生される。命令は順に流れるので、対応する
翻訳を探し出す必要はない。
ATで使用されるIntel iAPX80286ブロセッサ(第1の
プロセッサ)の命令をIBM RT PCで使用されるROMPプロ
セッサ(第2のプロセッサ)のシミュレータ命令に翻訳
する。これらの翻訳は、本来シミュレートされる第1の
プロセッサ用に書かれたアプリケーション・プログラム
が制御権をその同じアドレスに再び移すとき再使用でき
るように保管される。制御権を移さない命令の場合は、
その命令の命令ポインタに命令の長さを加えることによ
って、次の命令ポインタ(IP)の判定が行なわれる。順
次シミュレータ命令の同様のシーケンスがシミュレータ
によって発生される。命令は順に流れるので、対応する
翻訳を探し出す必要はない。
別の種類の命令は制御権を静的に移す。すなわち、命令
ポインタから一定変位を加算または減算することによっ
て、新しい命令ポインタが計算される。これは相対分岐
と呼ばれている。シミュレータは、対応する翻訳に対す
る第2のプロセッサの相対分岐を発生する。
ポインタから一定変位を加算または減算することによっ
て、新しい命令ポインタが計算される。これは相対分岐
と呼ばれている。シミュレータは、対応する翻訳に対す
る第2のプロセッサの相対分岐を発生する。
命令セットは、コード・セグメント内で制御権を新しい
命令ポインタに移す3つの命令を含み、新しい命令ポイ
ンタは、実行時にはレジタまたはメモリからロードされ
るので、静的に決定することができない。サブルーチン
からの戻り(RET)命令がその1つである。この命令が
シミュレートされる速度がシミュレータの全体的処理能
力に影響を及ぼし、処理システムが戻り命令を実行する
のに他のどの命令よりも多くの時間がかかる場合には特
にそうである。他の2つの命令は間接飛越し命令及び間
接呼出し命令である(レジスタまたはメモリ)。これら
の命令は戻り命令と同様に扱われる。
命令ポインタに移す3つの命令を含み、新しい命令ポイ
ンタは、実行時にはレジタまたはメモリからロードされ
るので、静的に決定することができない。サブルーチン
からの戻り(RET)命令がその1つである。この命令が
シミュレートされる速度がシミュレータの全体的処理能
力に影響を及ぼし、処理システムが戻り命令を実行する
のに他のどの命令よりも多くの時間がかかる場合には特
にそうである。他の2つの命令は間接飛越し命令及び間
接呼出し命令である(レジスタまたはメモリ)。これら
の命令は戻り命令と同様に扱われる。
たとえば、第1のプロセッサは2つのレジスタを使って
命令にアドレスする。コード・セグメント・レジスタ33
(第3B図)はメモリ120(第3C図)の64Kブロック119の
位置を記述する。命令ポインタ・レジスタ31(第3B図)
はそのコード・セグメント33に入るためのオフセットで
ある。命令ポインタ31は、命令100が64Kバイトのどこに
あるかを記述する。第1のプロセッサは、命令ポインタ
31(第3C図)を用いてコード・セグメント33内を指定す
ることにより命令にアドレスする。
命令にアドレスする。コード・セグメント・レジスタ33
(第3B図)はメモリ120(第3C図)の64Kブロック119の
位置を記述する。命令ポインタ・レジスタ31(第3B図)
はそのコード・セグメント33に入るためのオフセットで
ある。命令ポインタ31は、命令100が64Kバイトのどこに
あるかを記述する。第1のプロセッサは、命令ポインタ
31(第3C図)を用いてコード・セグメント33内を指定す
ることにより命令にアドレスする。
本発明のシミュレータは第6図に示すデータ構造を使っ
て、コード・セグメント33と命令ポインタ31からなる第
1のプロセッサの命令アドレス100を、対応する第2の
プロセッサのメモリ120内のアドレスにマップし、そこ
で第2のプロセッサの命令シーケンス130が同じ機能を
実行する。
て、コード・セグメント33と命令ポインタ31からなる第
1のプロセッサの命令アドレス100を、対応する第2の
プロセッサのメモリ120内のアドレスにマップし、そこ
で第2のプロセッサの命令シーケンス130が同じ機能を
実行する。
本発明の方法では、その値が実行時に決定され入る新し
い命令ポインタ31とコード・セグメント33が、サブルー
チンからの戻り命令、間接飛越し命令及び間接呼出し命
令、またはソフトウェア割込み命令など、制御権を動的
に移す命令に対する対応する翻訳のシミュレータ機械
(第2のプロセッサ)のアドレスに変換される。
い命令ポインタ31とコード・セグメント33が、サブルー
チンからの戻り命令、間接飛越し命令及び間接呼出し命
令、またはソフトウェア割込み命令など、制御権を動的
に移す命令に対する対応する翻訳のシミュレータ機械
(第2のプロセッサ)のアドレスに変換される。
シミュレータは3段階手法(第7図)を使って、制御権
を動的に移す3つの命令をシミュレートする。この3段
階手法は連続的に編成されている。最も速く、かつ最も
公算の大きなケースが最初に実行される。最初の手法が
失敗した場合に第2の手法が使用される。第3の手法は
最も遅い手法であり、命令ポインタをシミュレータ機械
のアドレスに首尾よく変換することを保証する。第6図
には第2及び第3の手法を示す。
を動的に移す3つの命令をシミュレートする。この3段
階手法は連続的に編成されている。最も速く、かつ最も
公算の大きなケースが最初に実行される。最初の手法が
失敗した場合に第2の手法が使用される。第3の手法は
最も遅い手法であり、命令ポインタをシミュレータ機械
のアドレスに首尾よく変換することを保証する。第6図
には第2及び第3の手法を示す。
第5図及び第7図を参照すると、新しい命令ポインタに
ついて実行される最初の動作は、ステップ141で、それ
をその命令の前回の実行によって作成された値と比較す
ることである。それらの値が一致した場合は、対応する
アドレスへのシミュレータ機械の相対分岐が行なわれ
る。ステップ142で、値が一致するかどうかを排他的OR
動作で判定し、一致する場合は、ステップ143で条件付
き分岐が制御権を移す。このためルックアップ・アドレ
スの高速計算が可能になる。ルックアップが成功した場
合は、XIL及びBEQ命令がそれに応じて変更される。XIL
命令で排他的OR演算される値は新しい命令ポインタを含
み、分岐命令に対する相対オフセットは新しい目標アド
レスを示す。制御権は新しい目標に移される。
ついて実行される最初の動作は、ステップ141で、それ
をその命令の前回の実行によって作成された値と比較す
ることである。それらの値が一致した場合は、対応する
アドレスへのシミュレータ機械の相対分岐が行なわれ
る。ステップ142で、値が一致するかどうかを排他的OR
動作で判定し、一致する場合は、ステップ143で条件付
き分岐が制御権を移す。このためルックアップ・アドレ
スの高速計算が可能になる。ルックアップが成功した場
合は、XIL及びBEQ命令がそれに応じて変更される。XIL
命令で排他的OR演算される値は新しい命令ポインタを含
み、分岐命令に対する相対オフセットは新しい目標アド
レスを示す。制御権は新しい目標に移される。
第6図及び第7図を参照すると、上記手法が失敗した場
合、すなわち、命令ポインタ31が、その命令が前回実行
されたときと異なる場合は、ハードウェアの翻訳ルック
・アサイド・バッファと類似したアドレス・マッピング
用翻訳ルック・アサイド・バッファ34を使ってテーブル
・ルックアップが行なわれる。第1プロセッサ命令から
第2プロセッサ命令への変換は、以下に説明する方法を
用いる。
合、すなわち、命令ポインタ31が、その命令が前回実行
されたときと異なる場合は、ハードウェアの翻訳ルック
・アサイド・バッファと類似したアドレス・マッピング
用翻訳ルック・アサイド・バッファ34を使ってテーブル
・ルックアップが行なわれる。第1プロセッサ命令から
第2プロセッサ命令への変換は、以下に説明する方法を
用いる。
第2プロセッサ命令130は、翻訳されるとき、属性と呼
ばれる第1プロセッサのレジスタの特定の値を取る。こ
れらの属性翻訳プログラムで使って、特定の場合に一層
効率的なコードを発生させることができる。たとえば、
クタック・アラインメントが偶数の場合、ハーフワード
命令を使ってデータをスタックとの間で転送することが
できる。さもない場合は、2バイト命令を使用しなけれ
ばならない。第1プロセッサの命令100ブロック用のコ
ード・セグメント33の値及びスタック・ポインタ35のア
ラインメントがそのブロックの属性と呼ばれる。コード
・セグメント33及びスタック・ポインタ35は共に16ビッ
トのフィールドである。属性はコード・ブロック・ヘッ
ダ36及びアドレス・マッピング翻訳ルック・アサイド・
バッファ34中にある。異なる属性を有する第1プロセッ
サ命令100の翻訳130は別々に保持される。
ばれる第1プロセッサのレジスタの特定の値を取る。こ
れらの属性翻訳プログラムで使って、特定の場合に一層
効率的なコードを発生させることができる。たとえば、
クタック・アラインメントが偶数の場合、ハーフワード
命令を使ってデータをスタックとの間で転送することが
できる。さもない場合は、2バイト命令を使用しなけれ
ばならない。第1プロセッサの命令100ブロック用のコ
ード・セグメント33の値及びスタック・ポインタ35のア
ラインメントがそのブロックの属性と呼ばれる。コード
・セグメント33及びスタック・ポインタ35は共に16ビッ
トのフィールドである。属性はコード・ブロック・ヘッ
ダ36及びアドレス・マッピング翻訳ルック・アサイド・
バッファ34中にある。異なる属性を有する第1プロセッ
サ命令100の翻訳130は別々に保持される。
この方法は命令ポインタ31の下位13ビット32を受け取
り、ステップ144で、それを一定の仮想アドレスで64Kバ
イトの境界に整合されたテーブル34に入るためのインデ
ックスとして使用する。その項目は、2ワードを含む。
最初のワードは属性を含む。最初の16ビットCS145はコ
ード・セグメント33の値であり、次のビット47はアライ
ンメントを含み、V1と表示された次のビット46は有効ビ
ットであり、その項目が有効でない場合は0、有効な場
合は1である。使用されないビット51が幾つかある。32
ビット・ワードの最後の3ビット48は、IPIと表示され
た命令ポインタ31の上位3ビット49である。
り、ステップ144で、それを一定の仮想アドレスで64Kバ
イトの境界に整合されたテーブル34に入るためのインデ
ックスとして使用する。その項目は、2ワードを含む。
最初のワードは属性を含む。最初の16ビットCS145はコ
ード・セグメント33の値であり、次のビット47はアライ
ンメントを含み、V1と表示された次のビット46は有効ビ
ットであり、その項目が有効でない場合は0、有効な場
合は1である。使用されないビット51が幾つかある。32
ビット・ワードの最後の3ビット48は、IPIと表示され
た命令ポインタ31の上位3ビット49である。
したがって、この方法は、ステップ144で、アドレス・
マッピング・テーブル34を命令ポインタ31の下位13ビッ
ト32で指示し、ステップ145で、最初の16ビットCS1、45
をコード・セグメント33の現在値と比較するというもの
である。このことは、命令が同じコード・セグメント中
にあり、前回の命令が最近実行された可能性があること
を示す。それが一致する場合、ステップ146で、スタッ
ク・ポインタ35の下位ビット41がS1、47と比較されて、
翻訳の際にスタックのアラインメントについて立てられ
た仮定が無視されていないことを確認する。これが一致
し、V1、46がオンで項目が有効なことを示し、IP1、48
が命令ポインタ31の上位3ビット49と一致する場合は、
アドレス・マッピング翻訳ルック・アサイド・テーブル
で的中があったことになる。すなわち、現在の命令は、
以前に翻訳された第2プロセッサ命令で正確に識別され
る。ステップ175で、次のワード52は、第1プロセッサ
命令100をシミュレートする第2プロセッサ命令130の32
ビット・アドレスである。はずれであった場合、すなわ
ち、上記のいずれかの比較が一致しなかった場合は、以
下の第3の手法で説明するように、ハッシュ・テーブル
37にアクセスすることによって翻訳は進行し、アドレス
・マッピング翻訳ルック・アサイド・バッファ34の項目
が将来参照できるように新しい属性及び新しい分岐アド
レスで更新される。
マッピング・テーブル34を命令ポインタ31の下位13ビッ
ト32で指示し、ステップ145で、最初の16ビットCS1、45
をコード・セグメント33の現在値と比較するというもの
である。このことは、命令が同じコード・セグメント中
にあり、前回の命令が最近実行された可能性があること
を示す。それが一致する場合、ステップ146で、スタッ
ク・ポインタ35の下位ビット41がS1、47と比較されて、
翻訳の際にスタックのアラインメントについて立てられ
た仮定が無視されていないことを確認する。これが一致
し、V1、46がオンで項目が有効なことを示し、IP1、48
が命令ポインタ31の上位3ビット49と一致する場合は、
アドレス・マッピング翻訳ルック・アサイド・テーブル
で的中があったことになる。すなわち、現在の命令は、
以前に翻訳された第2プロセッサ命令で正確に識別され
る。ステップ175で、次のワード52は、第1プロセッサ
命令100をシミュレートする第2プロセッサ命令130の32
ビット・アドレスである。はずれであった場合、すなわ
ち、上記のいずれかの比較が一致しなかった場合は、以
下の第3の手法で説明するように、ハッシュ・テーブル
37にアクセスすることによって翻訳は進行し、アドレス
・マッピング翻訳ルック・アサイド・バッファ34の項目
が将来参照できるように新しい属性及び新しい分岐アド
レスで更新される。
第3の手法も第6図及び第7図に示されている。コード
・セグメント33の中間の6ビット38が、コード・セグメ
ント33の下位5ビット39とスタック・ポインタ35の下位
ビット41を連結したものとXOR演算される。これによ
り、ステップ148で、コード・ブロック・ハッシュ・テ
ーブル37に入るための6ビットのインデックスが得られ
る。コード・ブロック・ハッシュ・テーブルは64個の項
目を含む。ステップ174で、各項目53は、その項目が何
もなく、新しい翻訳が必要なことを暗示する空文字を指
すか、または、コード・ブロック・ヘッダ36を指すポイ
ンタを含む。
・セグメント33の中間の6ビット38が、コード・セグメ
ント33の下位5ビット39とスタック・ポインタ35の下位
ビット41を連結したものとXOR演算される。これによ
り、ステップ148で、コード・ブロック・ハッシュ・テ
ーブル37に入るための6ビットのインデックスが得られ
る。コード・ブロック・ハッシュ・テーブルは64個の項
目を含む。ステップ174で、各項目53は、その項目が何
もなく、新しい翻訳が必要なことを暗示する空文字を指
すか、または、コード・ブロック・ヘッダ36を指すポイ
ンタを含む。
各ノード・ブロック・ヘッダ36は特定の属性に対して使
用可能な第2のプロセッサの翻訳を記述する。コード・
ブロック・ヘッダ36の最初のフィールド55は、コード・
ブロック・ハッシュ・テーブル37中の同じ項目53にハッ
シュした次のコード・ブロック・ヘッダ56を指すポイン
タを含む。次のフィールド57はコード・ブロックの属性
を含む。その属性は、CS2と表示されたブロック58中に
コード・セグメント33を含み、ブロックS2、59中にスタ
ック・ポインタ35のアラインメントを含む。話を簡単に
するため、有効ビットV1、46をV2、60として繰り返す。
ステップ149で、コード・ブロック・ヘッダ36で、実行
時に実行される命令と同じ属性を有するコッド・ブロッ
ク・ヘッダ36が探索される。次のフィールド62、63は、
それらの属性を有する翻訳がある最小及び最大第1プロ
セッサ・アドレスを含む。次のフィールド64は、特定の
属性を有する翻訳が存在するすべてのコード・ブロック
83を記述するツリーのルートを指すポインタである。
用可能な第2のプロセッサの翻訳を記述する。コード・
ブロック・ヘッダ36の最初のフィールド55は、コード・
ブロック・ハッシュ・テーブル37中の同じ項目53にハッ
シュした次のコード・ブロック・ヘッダ56を指すポイン
タを含む。次のフィールド57はコード・ブロックの属性
を含む。その属性は、CS2と表示されたブロック58中に
コード・セグメント33を含み、ブロックS2、59中にスタ
ック・ポインタ35のアラインメントを含む。話を簡単に
するため、有効ビットV1、46をV2、60として繰り返す。
ステップ149で、コード・ブロック・ヘッダ36で、実行
時に実行される命令と同じ属性を有するコッド・ブロッ
ク・ヘッダ36が探索される。次のフィールド62、63は、
それらの属性を有する翻訳がある最小及び最大第1プロ
セッサ・アドレスを含む。次のフィールド64は、特定の
属性を有する翻訳が存在するすべてのコード・ブロック
83を記述するツリーのルートを指すポインタである。
このツリーの各ノード、すなわち、コード・ブロック83
は、第1プロセッサ命令ポインタ31の範囲内に第2プロ
セッサ翻訳130がある最小及び最大命令ポインタ65、66
を含む。それぞれ左及び右の子67、68を指すポインタが
ある。左の子67は、より小さなまたは等しい最小命令ポ
インタ31を有するサブツリー69を指す。右の子68は、よ
り大きな最小命令ポインタ31を有するサブツリー70を指
す。ステップ151で、ツリーのノードを探索して、現在
の命令アドレスが入る命令アドレス範囲を有するサブツ
リーを見つける。次のフィールド71は第2プロセッサの
翻訳130のコード・ブロック83の終わり73を指すポイン
タである。
は、第1プロセッサ命令ポインタ31の範囲内に第2プロ
セッサ翻訳130がある最小及び最大命令ポインタ65、66
を含む。それぞれ左及び右の子67、68を指すポインタが
ある。左の子67は、より小さなまたは等しい最小命令ポ
インタ31を有するサブツリー69を指す。右の子68は、よ
り大きな最小命令ポインタ31を有するサブツリー70を指
す。ステップ151で、ツリーのノードを探索して、現在
の命令アドレスが入る命令アドレス範囲を有するサブツ
リーを見つける。次のフィールド71は第2プロセッサの
翻訳130のコード・ブロック83の終わり73を指すポイン
タである。
命令ポインタ31の範囲内にあるのと同じ数の項目72を有
するアレイ44がある。すなわち、アレイ44の下限は最小
命令ポインタであり、アレイ44の上限は最大命令ポイン
タである。アレイ44内のこれらの項目は、それぞれ第1
プロセッサ命令100に対する第2プロセッサ翻訳が存在
しない場合は0を含み、また、有効な第1プロセッサ命
令入口点に対応するものである場合はポインタを含む。
アレイ44内の各項目はハーフワードである。有効な項目
がある場合、ステップ173で、その項目はアレイ44の始
めからその命令ポインタへの適当な入口点までのオフセ
ットを含む。
するアレイ44がある。すなわち、アレイ44の下限は最小
命令ポインタであり、アレイ44の上限は最大命令ポイン
タである。アレイ44内のこれらの項目は、それぞれ第1
プロセッサ命令100に対する第2プロセッサ翻訳が存在
しない場合は0を含み、また、有効な第1プロセッサ命
令入口点に対応するものである場合はポインタを含む。
アレイ44内の各項目はハーフワードである。有効な項目
がある場合、ステップ173で、その項目はアレイ44の始
めからその命令ポインタへの適当な入口点までのオフセ
ットを含む。
以上要約すると、2つの命令ポインタがテーブル内の同
じ項目にハッシュするというまずあり得ない場合、また
は、アプリケーション・プログラムが初めて制御権をそ
の命令ポインタに渡す場合に、テーブル・ルックアップ
は失敗する。いずれの場合にも、アドレスを変換するた
め、シミュレータはより遅いデータ構造、すなわち、2
進ツリー83にアクセスする。見つからない場合は、ステ
ップ174で、翻訳プログラム27を呼び出して、第1プロ
セッサ命令の新しいブロックに対するシミュレータ機械
(第2のプロセッサ)の等価命令を発生させ、翻訳ルッ
ク・アサイド・バッファ34及びコード・ブロック82が更
新される。
じ項目にハッシュするというまずあり得ない場合、また
は、アプリケーション・プログラムが初めて制御権をそ
の命令ポインタに渡す場合に、テーブル・ルックアップ
は失敗する。いずれの場合にも、アドレスを変換するた
め、シミュレータはより遅いデータ構造、すなわち、2
進ツリー83にアクセスする。見つからない場合は、ステ
ップ174で、翻訳プログラム27を呼び出して、第1プロ
セッサ命令の新しいブロックに対するシミュレータ機械
(第2のプロセッサ)の等価命令を発生させ、翻訳ルッ
ク・アサイド・バッファ34及びコード・ブロック82が更
新される。
E5.メモリ・マッピング 第8図を参照すると、処理システム1のメモリは種類及
び内容により分類することができる。領域Iはランダム
・アクセス・メモリ(RAM)152である。RAM152に内容は
命令とデータである。CPU93はこのメモリ領域に対して
読み書きを行なうことができる。
び内容により分類することができる。領域Iはランダム
・アクセス・メモリ(RAM)152である。RAM152に内容は
命令とデータである。CPU93はこのメモリ領域に対して
読み書きを行なうことができる。
第2のメモリ領域はアダプタ・メモリ(ビデオ)153と
呼ばれる。CPU93は明示的なIN/OUT命令を使って、線167
として示すように、表示装置などの出力装置92に接続さ
れた入出力アダプタ91に直接アクセスすることができ、
または、メモリ命令を使って、ビデオ・バッファ153を
介して入出力アダプタ91にアクセスすることができる。
装置92に出力するためビデオ・バッファ153に対してメ
モリ命令を使用することは、それがメモリ位置を介する
ものの、実際にアダプタに入る入出力なので、メモリ・
マップ入出力と呼ばれる。CPUが有するメモリに入る命
令は明示的入出力(IN/OUT命令)を実行するための命令
よりも多いので、メモリ・マップ入出力を使うとより広
範な命令の使用が可能になる。メモリのビデオ範囲の内
容は出力データ、すなわち、メモリ・マップ入出力であ
る。
呼ばれる。CPU93は明示的なIN/OUT命令を使って、線167
として示すように、表示装置などの出力装置92に接続さ
れた入出力アダプタ91に直接アクセスすることができ、
または、メモリ命令を使って、ビデオ・バッファ153を
介して入出力アダプタ91にアクセスすることができる。
装置92に出力するためビデオ・バッファ153に対してメ
モリ命令を使用することは、それがメモリ位置を介する
ものの、実際にアダプタに入る入出力なので、メモリ・
マップ入出力と呼ばれる。CPUが有するメモリに入る命
令は明示的入出力(IN/OUT命令)を実行するための命令
よりも多いので、メモリ・マップ入出力を使うとより広
範な命令の使用が可能になる。メモリのビデオ範囲の内
容は出力データ、すなわち、メモリ・マップ入出力であ
る。
第3の種類のメモリは、読取り専用記憶装置(ROS)154
と呼ばれる領域IIIである。これは読取り専用メモリ(R
OM)とも呼ばれる。ROS154の内容は大抵は命令である
が、データがあってもよい。どちらの場合にも、ROSの
内容は決して変更されない。
と呼ばれる領域IIIである。これは読取り専用メモリ(R
OM)とも呼ばれる。ROS154の内容は大抵は命令である
が、データがあってもよい。どちらの場合にも、ROSの
内容は決して変更されない。
IBM PC ATなどの処理システムのアドレス空間150は論理
的にこれらの3つの領域に分かれる。最初の領域は640K
バイトのプロセッサ読み書き記憶領域、すなわち、RAM1
52である。2番目の領域は、入出力アダプタ、すなわ
ち、ビデオ153用に予約された256Kバイトの領域であ
る。これらの領域には、装置及びい装置依存ROS用のデ
ータ・バッファが含まれる。3番目の領域は128Kバイト
のプロセッサROS154領域である。このROSはBIOS及びBAS
ICを含む。BIOS領域155に続いて1メガ領域166より上に
メモリがある。この好ましい実施例のシミュレータは28
6保護モードをサポートしないので、メモリ150のこの領
域176は設けられない。
的にこれらの3つの領域に分かれる。最初の領域は640K
バイトのプロセッサ読み書き記憶領域、すなわち、RAM1
52である。2番目の領域は、入出力アダプタ、すなわ
ち、ビデオ153用に予約された256Kバイトの領域であ
る。これらの領域には、装置及びい装置依存ROS用のデ
ータ・バッファが含まれる。3番目の領域は128Kバイト
のプロセッサROS154領域である。このROSはBIOS及びBAS
ICを含む。BIOS領域155に続いて1メガ領域166より上に
メモリがある。この好ましい実施例のシミュレータは28
6保護モードをサポートしないので、メモリ150のこの領
域176は設けられない。
第1の処理システムのアドレスを第2の処理システムの
アドレスに変換するには、第1の処理システムのメモリ
を第2の処理システムのメモリにマップしなければなら
ない。
アドレスに変換するには、第1の処理システムのメモリ
を第2の処理システムのメモリにマップしなければなら
ない。
メモリをマップするには、第2の処理システムのオペレ
ーティング・システムの2つの共用メモリ・セグメント
190、180(第9図)が使用される。第1の共用メモリ・
セグメント190は第1の処理システムのメモリのイメー
ジ150を記憶するために使用される。第2の共用メモリ
・セグメント180は各メモリ位置ごとにそのイメージに
含まれる内容のタイプを示す。
ーティング・システムの2つの共用メモリ・セグメント
190、180(第9図)が使用される。第1の共用メモリ・
セグメント190は第1の処理システムのメモリのイメー
ジ150を記憶するために使用される。第2の共用メモリ
・セグメント180は各メモリ位置ごとにそのイメージに
含まれる内容のタイプを示す。
第2の処理システムのメモリ190には、第1の処理シス
テム内に常駐する640Kバイトのメモリ152があり、それ
に続いてビデオ領域153、ROS(読取り専用記憶装置)用
の領域154、BIOS用の領域155がある。最初のメモリ・セ
グメント152の前に、BIOS領域155が複製されている。こ
れは、オフセットが循環してRAM152に戻るように、アプ
リケーションがセグメント・レジスタをメモリ150のROM
155領域にロードすることができる場合に、マッピング
を簡単にするため行なわれたものである。したがって、
これらの領域の16進アドレス172−175は、第1の処理シ
ステムのメモリ150内の領域のアドレスから64Kだけずれ
て、セグメント0×9と呼ばれる共用メモリ・セグメン
ト190に入る。
テム内に常駐する640Kバイトのメモリ152があり、それ
に続いてビデオ領域153、ROS(読取り専用記憶装置)用
の領域154、BIOS用の領域155がある。最初のメモリ・セ
グメント152の前に、BIOS領域155が複製されている。こ
れは、オフセットが循環してRAM152に戻るように、アプ
リケーションがセグメント・レジスタをメモリ150のROM
155領域にロードすることができる場合に、マッピング
を簡単にするため行なわれたものである。したがって、
これらの領域の16進アドレス172−175は、第1の処理シ
ステムのメモリ150内の領域のアドレスから64Kだけずれ
て、セグメント0×9と呼ばれる共用メモリ・セグメン
ト190に入る。
その結果、シミュレータを働かせる処理システム内の仮
想メモリ・セグメントは、領域I152と及び領域III154の
2つのコピーとからなるすべてのPC ATプロセッサ記憶
域のイメージを含むため専用となる。第2の処理システ
ムに第1の処理システムからの出力装置が接続されてい
るときは、領域II153は存在しない。第1の処理システ
ムの出力装置が接続されていない場合は、領域II153の
イメージも存在する。
想メモリ・セグメントは、領域I152と及び領域III154の
2つのコピーとからなるすべてのPC ATプロセッサ記憶
域のイメージを含むため専用となる。第2の処理システ
ムに第1の処理システムからの出力装置が接続されてい
るときは、領域II153は存在しない。第1の処理システ
ムの出力装置が接続されていない場合は、領域II153の
イメージも存在する。
メモリ・セグメント190内のアドレス位置172−176は、
第1の処理システムの実際のメモリ・イメージである。
この領域172−176は、シミュレートされる第1の処理シ
ステム及び使用可能なメモリのアーキテクチャのように
見える。
第1の処理システムの実際のメモリ・イメージである。
この領域172−176は、シミュレートされる第1の処理シ
ステム及び使用可能なメモリのアーキテクチャのように
見える。
メモリ・イメージ172−176に加えて、翻訳されたコード
130が領域157に記憶される。シミュレートされる第1の
処理システムの命令100を調べるグラフ解析30(第3A
図、第3B図、第3C図、第3D図)によって、翻訳された命
令が発生された後で、翻訳された命令130が領域157に記
憶される。
130が領域157に記憶される。シミュレートされる第1の
処理システムの命令100を調べるグラフ解析30(第3A
図、第3B図、第3C図、第3D図)によって、翻訳された命
令が発生された後で、翻訳された命令130が領域157に記
憶される。
共用メモリ・セグメント190の次の領域158は処理間通信
領域、及び実行時に呼び出されるルーチンが記憶される
実行時環境領域である。
領域、及び実行時に呼び出されるルーチンが記憶される
実行時環境領域である。
セグメント0×9と呼ばれる仮想共用メモリ・セグメン
トに加えて、シミュレータを働かせる処理システムは、
0×Fと呼ばれる入出力バス・メモリ用の特別なセグメ
ント181を予約する。第2の処理システムに第1の処理
システムの出力装置が接続されている場合、データは第
2の処理システムのセグメント0×Fに書き込まれる。
領域II153内に含まれる第1の処理システムのアドレス
位置は、第2処理のシステムのセグメント0×9、190
またはセグメント0×F、181内に対応するメモリ位置
を有する。
トに加えて、シミュレータを働かせる処理システムは、
0×Fと呼ばれる入出力バス・メモリ用の特別なセグメ
ント181を予約する。第2の処理システムに第1の処理
システムの出力装置が接続されている場合、データは第
2の処理システムのセグメント0×Fに書き込まれる。
領域II153内に含まれる第1の処理システムのアドレス
位置は、第2処理のシステムのセグメント0×9、190
またはセグメント0×F、181内に対応するメモリ位置
を有する。
本発明のシミュレータのシステム及び方法は、再配置テ
ーブルを使って、第1の処理システムのメモリ150を第
2の処理システムのセグメント0×9、190またはセグ
メント0×F、181のいずれかにマップするものであ
る。PC ATなどの第1の処理システムは2つの構成要
素、すなわち、セグメントとオフセットによってメモリ
位置にアドレスする。PC ATでは、そのセグメントは、
64Kのメモリ・ブロックを指す16ビットの値である。オ
フセットも16ビットであり、セグメント内の変位を示
す。セグメントのアドレスは、セグメントの値に16を乗
じることによって計算される。
ーブルを使って、第1の処理システムのメモリ150を第
2の処理システムのセグメント0×9、190またはセグ
メント0×F、181のいずれかにマップするものであ
る。PC ATなどの第1の処理システムは2つの構成要
素、すなわち、セグメントとオフセットによってメモリ
位置にアドレスする。PC ATでは、そのセグメントは、
64Kのメモリ・ブロックを指す16ビットの値である。オ
フセットも16ビットであり、セグメント内の変位を示
す。セグメントのアドレスは、セグメントの値に16を乗
じることによって計算される。
このシミュレータは、それぞれ32ビットを有する16個の
項目201−206を備えたテーブル195を使って、PC ATの
メモリ・アドレスをIBM RT PCの32ビット・メモリ・ア
ドレスにマップする。PC ATメモリ・アドレスのセグメ
ントの上位4ビットは、テーブルの16個の項目の1つを
識別する。シミュレータはメモリ・アドレス計算を2つ
の部分に分ける。まず、セグメント・レジスタがロード
されるとき、シミュレータはセグメントに16を乗じ、そ
れをセグメントの上位4ビットによって指定されるテー
ブル内の項目に加える。次に、命令がメモリに対して読
取りまたは書込みを行なうとき、前のステップで計算さ
れた32ビットの値に16ビットのオフセットが加えられ
る。前記の32ビットの値は、第2の処理システムのメモ
リにアクセスするために使用されるアドレスである。
項目201−206を備えたテーブル195を使って、PC ATの
メモリ・アドレスをIBM RT PCの32ビット・メモリ・ア
ドレスにマップする。PC ATメモリ・アドレスのセグメ
ントの上位4ビットは、テーブルの16個の項目の1つを
識別する。シミュレータはメモリ・アドレス計算を2つ
の部分に分ける。まず、セグメント・レジスタがロード
されるとき、シミュレータはセグメントに16を乗じ、そ
れをセグメントの上位4ビットによって指定されるテー
ブル内の項目に加える。次に、命令がメモリに対して読
取りまたは書込みを行なうとき、前のステップで計算さ
れた32ビットの値に16ビットのオフセットが加えられ
る。前記の32ビットの値は、第2の処理システムのメモ
リにアクセスするために使用されるアドレスである。
シミュレータの始動時に、再配置テーブル195が初期設
定される。最初の10項目201−210はRAM152に対応し、第
2の処理システムのセグメント0×9を指すように0×
90010000に初期設定される。この初期設定値は、RAM152
の前にあるセグメント0×9、190にマップされるBIOS1
55の最初のインスタンス用のスペースをもたらす64Kの
オフセットを含むことに留意されたい。BIOS155にアド
レスするセグメントに対応する最後の項目216は、0×9
0000000−0×F0000または0×8FF10000で処理設定され
る。このようにセグメントに16を乗じて加えると、その
結果得られる値は0×90000000になり、それによってBI
OS155がセグメント0×9、190の始めにマップされる。
11番目ないし15番目の項目211−215は0×4000000また
は0×90010000で初期設定されて、第1の処理システム
の対応する出力装置が接続されているかどうかに応じ
て、セグメント0×F、181またはセグメント0×9、1
90のいずれかを指す。
定される。最初の10項目201−210はRAM152に対応し、第
2の処理システムのセグメント0×9を指すように0×
90010000に初期設定される。この初期設定値は、RAM152
の前にあるセグメント0×9、190にマップされるBIOS1
55の最初のインスタンス用のスペースをもたらす64Kの
オフセットを含むことに留意されたい。BIOS155にアド
レスするセグメントに対応する最後の項目216は、0×9
0000000−0×F0000または0×8FF10000で処理設定され
る。このようにセグメントに16を乗じて加えると、その
結果得られる値は0×90000000になり、それによってBI
OS155がセグメント0×9、190の始めにマップされる。
11番目ないし15番目の項目211−215は0×4000000また
は0×90010000で初期設定されて、第1の処理システム
の対応する出力装置が接続されているかどうかに応じ
て、セグメント0×F、181またはセグメント0×9、1
90のいずれかを指す。
状況制御セグメント、すなわち、セグメント0×8、18
0が、オペレーティング・システムの別の共用メモリ・
セグメントに記憶される。状況制御セグメント180はセ
グメント0×9、190に対する第1の処理システムのメ
モリの内容のタイプを記緑する。この情報は、シミュレ
ータが、メモリ位置がデータ、命令コードを含むのか、
それともビデオ項目なのかを判定するために使用する。
0が、オペレーティング・システムの別の共用メモリ・
セグメントに記憶される。状況制御セグメント180はセ
グメント0×9、190に対する第1の処理システムのメ
モリの内容のタイプを記緑する。この情報は、シミュレ
ータが、メモリ位置がデータ、命令コードを含むのか、
それともビデオ項目なのかを判定するために使用する。
以上、メモリに対する読取りまたは書込みを行なう命令
をシミュレートするときに使用するアドレスを、シミュ
レータがどのように計算するかについて説明した。メモ
リに書込みを行なう場合は、特別な処置が必要となるこ
とがある。
をシミュレートするときに使用するアドレスを、シミュ
レータがどのように計算するかについて説明した。メモ
リに書込みを行なう場合は、特別な処置が必要となるこ
とがある。
命令がメモリに記憶される場合、シミュレータは、その
命令が翻訳済みであるかどうかを記録する。翻訳された
コードが常に正しいことを確認するため、命令変更の検
査が行なわれる。アプリケーションが命令変更を行なっ
た場合は、元のコード命令に対する翻訳されたコードが
除去され、新しい命令がシミュレータのプロセッサの新
しい命令シーケンスに翻訳される。命令の正しい翻訳を
実行させるための他の処置を取ることもできる。
命令が翻訳済みであるかどうかを記録する。翻訳された
コードが常に正しいことを確認するため、命令変更の検
査が行なわれる。アプリケーションが命令変更を行なっ
た場合は、元のコード命令に対する翻訳されたコードが
除去され、新しい命令がシミュレータのプロセッサの新
しい命令シーケンスに翻訳される。命令の正しい翻訳を
実行させるための他の処置を取ることもできる。
同様に、出力装置の出力をシミュレータがさらに処理す
る必要があるかどうか判定するために、ビデオ更新の検
査が必要である。これは、第1の処理システムの出力装
置がシミュレータを働かせる第2の処理システムに持続
されておらず、したがって、第1処理システムの出力装
置をシミュレートしなければならない場合に行なわれ
る。メモリ・マップ入出力の場合は、出力データを表わ
す特別なハードウェアが変更されるかどうかを記憶時に
検出しなければならない。
る必要があるかどうか判定するために、ビデオ更新の検
査が必要である。これは、第1の処理システムの出力装
置がシミュレータを働かせる第2の処理システムに持続
されておらず、したがって、第1処理システムの出力装
置をシミュレートしなければならない場合に行なわれ
る。メモリ・マップ入出力の場合は、出力データを表わ
す特別なハードウェアが変更されるかどうかを記憶時に
検出しなければならない。
メモリに記憶するとき、セグメント0×8180を使って、
命令またはメモリ・マップ入出力について特別な処置が
必要かどうか判定する。セグメント0×8、180は、セ
グメント・レジスタ0×9、190とバイトごとの対応関
係を有する。セグメント0×8の各バイトは、セグメン
ト0×9、190内の対応するバイトの内容の種類を示
す。セグメント0×9、190の対応バイトが計算データ
である場合、セグメント0×8、180のバイトは0を含
む。セグメント0×9の対応バイトが命令を含む場合
は、セグメント0×8、180のバイトは1、2、4また
は6を含む。第1の処理システムの出力装置が接続され
ていない場合は、セグメント0×9のビデオ領域153に
対応するセグメント0×8、180の各バイトは16を含
む。16の値は構成中にシミュレータ始動時にセグメント
0×8、180にロードされる。
命令またはメモリ・マップ入出力について特別な処置が
必要かどうか判定する。セグメント0×8、180は、セ
グメント・レジスタ0×9、190とバイトごとの対応関
係を有する。セグメント0×8の各バイトは、セグメン
ト0×9、190内の対応するバイトの内容の種類を示
す。セグメント0×9、190の対応バイトが計算データ
である場合、セグメント0×8、180のバイトは0を含
む。セグメント0×9の対応バイトが命令を含む場合
は、セグメント0×8、180のバイトは1、2、4また
は6を含む。第1の処理システムの出力装置が接続され
ていない場合は、セグメント0×9のビデオ領域153に
対応するセグメント0×8、180の各バイトは16を含
む。16の値は構成中にシミュレータ始動時にセグメント
0×8、180にロードされる。
第1の処理システムの出力装置を第2の処理システムに
接続すると構成中に決定された場合、セグメント0×
8、180の対応バイトは0になる。このことは、やはり
構成中に初期設定された項目211−215を有する再配置テ
ーブル195が、第1の処理システムからの出力データを
セグメント0×F、181にマップし、第1の処理システ
ムの出力装置が接続されているので、シミュレータによ
るそれ以上の処置は必要でないことを示す。
接続すると構成中に決定された場合、セグメント0×
8、180の対応バイトは0になる。このことは、やはり
構成中に初期設定された項目211−215を有する再配置テ
ーブル195が、第1の処理システムからの出力データを
セグメント0×F、181にマップし、第1の処理システ
ムの出力装置が接続されているので、シミュレータによ
るそれ以上の処置は必要でないことを示す。
メモリへの記憶位置がセグメント0×9であろうとセグ
メント0×Fであろうと、アドレスの32ビット値が0×
80FFFFFFとAND演算されて、セグメント0×8、180の対
応アドレスを生じる。
メント0×Fであろうと、アドレスの32ビット値が0×
80FFFFFFとAND演算されて、セグメント0×8、180の対
応アドレスを生じる。
第10図に示す命令シーケンスが、メモリを変更すること
ができる第1の処理システムの命令の各翻訳に対して使
用される。セグメント・レジスタは、メモリ・バイトの
アドレスを0×80FFFFFFとAND演算して状況バイトのア
ドレスを計算できるように選ばれていることに留意され
たい。その結果、セグメント0×F及び0×9は共にセ
グメント0×8にマップされる。第10図のこれら4つの
命令が、第1の処理システムの命令をシミュレータする
ために使用される命令と重ね合わされるとき、メモリの
更新を検査して、それが特別な処理を必要とするかどう
か調べるために5サイクルしか必要でない。しかし、メ
モリへの記憶の後で特別な処置が必要かどうかを判定す
るために、さらに記憶のアドレスがセグメント0×Fに
対するものであったかどうかを判定することが必要にな
ることがある。
ができる第1の処理システムの命令の各翻訳に対して使
用される。セグメント・レジスタは、メモリ・バイトの
アドレスを0×80FFFFFFとAND演算して状況バイトのア
ドレスを計算できるように選ばれていることに留意され
たい。その結果、セグメント0×F及び0×9は共にセ
グメント0×8にマップされる。第10図のこれら4つの
命令が、第1の処理システムの命令をシミュレータする
ために使用される命令と重ね合わされるとき、メモリの
更新を検査して、それが特別な処理を必要とするかどう
か調べるために5サイクルしか必要でない。しかし、メ
モリへの記憶の後で特別な処置が必要かどうかを判定す
るために、さらに記憶のアドレスがセグメント0×Fに
対するものであったかどうかを判定することが必要にな
ることがある。
各バイトに対応する状況バイトをメモリ・イメージ190
またはメモリ・マップ入出力181内に保持することによ
り、ビデオ更新、メモリ・マップ入出力及び命令変更を
検出することができる。状況セグメント8、180内のフ
ラグは、次のようにメモリの内容の種類を示す。
またはメモリ・マップ入出力181内に保持することによ
り、ビデオ更新、メモリ・マップ入出力及び命令変更を
検出することができる。状況セグメント8、180内のフ
ラグは、次のようにメモリの内容の種類を示す。
0=データ 1=命令入口点 2=命令の後続バイト 3=組合せ命令(第1バイトは有効入口点でない) 8=この命令上の区切り点セット 16=ビデオ 上記のように、0でない値は、シミュレータによる処置
がさらに必要なことを示すことがある。「1」は、それ
が入口点であり、第1の処理システムの命令の翻訳が2
進ツリー中にあることを示す。「2」は、それが後続の
ものである、すなわち2バイト以上の長さの第1のプロ
セッサの命令がシミュレートまたは翻訳されることを意
味する。このバイトはこのとき次のバイトに対応する。
これは、第1の処理プロセッサの命令を表わすために2
バイト以上が必要であるという事実を考慮したものであ
る。「4」のフラグは、組合せが行なわれることを示
す。組合せとは、グラフの解析の結果、幾つかの組み合
わされた第1のプロセッサの命令をシミュレートする方
が第1のプロセッサの各命令を別々に翻訳するよりも翻
訳されたシミュレータ命令が少なくてすむと判定された
という意味である。たとえば、第3A図のPUSH命令1055と
POP命令106が組み合わされた。その結果、CSレジスタ内
の値がDSレジスタに移された。これら2つの命令105、1
06が行なうことはそれだけであるとグラフ解析から判定
されるので、2つの命令を1つに組み合わせて、2つの
命令を別々に実行するよりも速く実行することができ
る。
がさらに必要なことを示すことがある。「1」は、それ
が入口点であり、第1の処理システムの命令の翻訳が2
進ツリー中にあることを示す。「2」は、それが後続の
ものである、すなわち2バイト以上の長さの第1のプロ
セッサの命令がシミュレートまたは翻訳されることを意
味する。このバイトはこのとき次のバイトに対応する。
これは、第1の処理プロセッサの命令を表わすために2
バイト以上が必要であるという事実を考慮したものであ
る。「4」のフラグは、組合せが行なわれることを示
す。組合せとは、グラフの解析の結果、幾つかの組み合
わされた第1のプロセッサの命令をシミュレートする方
が第1のプロセッサの各命令を別々に翻訳するよりも翻
訳されたシミュレータ命令が少なくてすむと判定された
という意味である。たとえば、第3A図のPUSH命令1055と
POP命令106が組み合わされた。その結果、CSレジスタ内
の値がDSレジスタに移された。これら2つの命令105、1
06が行なうことはそれだけであるとグラフ解析から判定
されるので、2つの命令を1つに組み合わせて、2つの
命令を別々に実行するよりも速く実行することができ
る。
「8」のフラグは、区切り点がセットされていることを
示す。このため、デバッグ・プログラムがシミュレータ
に作用することが可能になる、16のフラグは、情報がビ
デオ・データであることを示す。シミュレータはこのよ
うにして、アプリケーションが終了してビデオ画面を更
新したことを検出する。
示す。このため、デバッグ・プログラムがシミュレータ
に作用することが可能になる、16のフラグは、情報がビ
デオ・データであることを示す。シミュレータはこのよ
うにして、アプリケーションが終了してビデオ画面を更
新したことを検出する。
上記の方法は、長くて時間のかかる検査を実行しメモリ
の更新を処理して戻るサブルーチンへの分岐が必要であ
った従来のシミュレータに比べて、処理能力が増大す
る。サブルーチンへの分岐だけで、通常少なくとも5サ
イクル必要である。メモリへの記憶は非常に頻繁な動作
であるので、これは有効である。したがって、メモリへ
の記憶というオーバーヘッドが少しでも減少するとシミ
ュレータの効率が大幅に増大する。
の更新を処理して戻るサブルーチンへの分岐が必要であ
った従来のシミュレータに比べて、処理能力が増大す
る。サブルーチンへの分岐だけで、通常少なくとも5サ
イクル必要である。メモリへの記憶は非常に頻繁な動作
であるので、これは有効である。したがって、メモリへ
の記憶というオーバーヘッドが少しでも減少するとシミ
ュレータの効率が大幅に増大する。
F.発明の効果 以上説明したように、本発明によれば、グラフ解析とい
う従来のコンパイラ技術をプロセッサ・シミュレータに
適用することにより、後続の命令が条件コードを使用す
るかどうかに関する基本的知識が得られる。第1のプロ
セッサ命令100を第2のプロセッサ命令130に翻訳するコ
ード発生機構29は、多くの場合、条件コード情報を使っ
て、単一の第2のプロセーサ翻訳命令を発生する。この
ため、各命令の後でフラグ・レジスタが更新状態に保持
された場合に、不必要なサイクルが減少しシミュレータ
の処理能力が向上する。
う従来のコンパイラ技術をプロセッサ・シミュレータに
適用することにより、後続の命令が条件コードを使用す
るかどうかに関する基本的知識が得られる。第1のプロ
セッサ命令100を第2のプロセッサ命令130に翻訳するコ
ード発生機構29は、多くの場合、条件コード情報を使っ
て、単一の第2のプロセーサ翻訳命令を発生する。この
ため、各命令の後でフラグ・レジスタが更新状態に保持
された場合に、不必要なサイクルが減少しシミュレータ
の処理能力が向上する。
第1図は、本発明の好ましい実施例の処理システム環境
を示すブロック・ダイヤグラムである。 第2図は、本発明のシミュレータを始動する際の最初の
数ステップを示す流れ図である。 第3A図は、本発明のシミュレータによって翻訳される第
1のプロセッサの命令の制御流れの例についてのグラフ
解析を示す。 第3B図は、翻訳される第1のプロセッサの命令の制御流
れのもう1つの例を示す。 第3C図は、第3B図に示した第1のプロセッサの命令の流
れにおける条件コードのグラフ解析を示す。 第3D図は、第3C図のグラフ解析から翻訳された第2のプ
ロセッサの命令の制御流れを示す。 第4図は、翻訳の流れ図である。 第5図は、次の実行可能命令の翻訳された命令アドレス
を判定するための3段階手法の第1の方法で使用される
プログラム・コードである。 第6図は、ある命令セットの命令を、異なる命令セット
を有するシミュレータの対応する翻訳アドレスにマップ
することにより、次の実行可能命令の翻訳された命令ア
ドレスを判定するための第2及び第3の手法のデータ構
造を示す。 第7図は、次の実行可能命令の翻訳された命令アドレス
を判定するための3段階手法の流れ図である。 第8図は、処理システムのメモリの種類及び内容を示す
ブロック・ダイヤグラムである。 第9図は、第1の処理システムのメモリの第2の処理シ
ステムのメモリ内へのマッピングと、メモリへの記憶の
内容の種類を示すための状況テーブルを示す。 第10図は、共用メモリまたはアダプタにおけるメモリ位
置の状況テーブル中で対応バイトを見つけるために使用
されるプログラム・コードである。 1……処理システム、10……シミュレータ、11……ハー
ドウェア、12……オペレーティング・システム(AI
X)、13……BIOS、15……読取り専用記憶装置、16……
共用メモリ・セグメント、18……オペレーティング・シ
ステム(DOS)、19……アプリケーション・プログラ
ム。
を示すブロック・ダイヤグラムである。 第2図は、本発明のシミュレータを始動する際の最初の
数ステップを示す流れ図である。 第3A図は、本発明のシミュレータによって翻訳される第
1のプロセッサの命令の制御流れの例についてのグラフ
解析を示す。 第3B図は、翻訳される第1のプロセッサの命令の制御流
れのもう1つの例を示す。 第3C図は、第3B図に示した第1のプロセッサの命令の流
れにおける条件コードのグラフ解析を示す。 第3D図は、第3C図のグラフ解析から翻訳された第2のプ
ロセッサの命令の制御流れを示す。 第4図は、翻訳の流れ図である。 第5図は、次の実行可能命令の翻訳された命令アドレス
を判定するための3段階手法の第1の方法で使用される
プログラム・コードである。 第6図は、ある命令セットの命令を、異なる命令セット
を有するシミュレータの対応する翻訳アドレスにマップ
することにより、次の実行可能命令の翻訳された命令ア
ドレスを判定するための第2及び第3の手法のデータ構
造を示す。 第7図は、次の実行可能命令の翻訳された命令アドレス
を判定するための3段階手法の流れ図である。 第8図は、処理システムのメモリの種類及び内容を示す
ブロック・ダイヤグラムである。 第9図は、第1の処理システムのメモリの第2の処理シ
ステムのメモリ内へのマッピングと、メモリへの記憶の
内容の種類を示すための状況テーブルを示す。 第10図は、共用メモリまたはアダプタにおけるメモリ位
置の状況テーブル中で対応バイトを見つけるために使用
されるプログラム・コードである。 1……処理システム、10……シミュレータ、11……ハー
ドウェア、12……オペレーティング・システム(AI
X)、13……BIOS、15……読取り専用記憶装置、16……
共用メモリ・セグメント、18……オペレーティング・シ
ステム(DOS)、19……アプリケーション・プログラ
ム。
Claims (1)
- 【請求項1】複合命令セット用のアプリケーションを縮
小命令セットを有する縮小命令セット・コンピュータ技
術を用いたプロセッサが含まれる処理システムで動作さ
せるため、複合命令セット・コンピュータ技術を用いた
処理システムのプロセッサを上記縮小命令セット・コン
ピュータ技術を用いたプロセッサでシミュレートするシ
ミュレーション方法において、 上記アプリケーションの命令の制御フローをグラフ解析
するステップと、 上記グラフ解析を基に、上記アプリケーションの命令の
複数の条件コードの各々が該命令の後続の命令によって
使用されるか否かを判定するステップと、 上記判定ステップで上記条件コードが後続の命令によっ
て必要とされないと判定される場合に上記アプリケーシ
ョンの命令から変換される縮小命令セットのうち上記条
件コード設定に関係する縮小命令セットを省くことによ
り、変換後の縮小命令セットの命令の数を減少させるス
テップと、 を含むシミュレーション方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/151,136 US4951195A (en) | 1988-02-01 | 1988-02-01 | Condition code graph analysis for simulating a CPU processor |
| US151136 | 1988-02-01 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH025139A JPH025139A (ja) | 1990-01-10 |
| JPH0782441B2 true JPH0782441B2 (ja) | 1995-09-06 |
Family
ID=22537471
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63318665A Expired - Lifetime JPH0782441B2 (ja) | 1988-02-01 | 1988-12-19 | シミユレーシヨン方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US4951195A (ja) |
| EP (1) | EP0327196B1 (ja) |
| JP (1) | JPH0782441B2 (ja) |
| DE (1) | DE68921776T2 (ja) |
Families Citing this family (74)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
| CA2002201C (en) * | 1988-12-06 | 1999-04-27 | John Charles Goettelmann | Translation technique |
| US5155816A (en) * | 1989-02-10 | 1992-10-13 | Intel Corporation | Pipelined apparatus and method for controlled loading of floating point data in a microprocessor |
| US5247651A (en) * | 1990-04-17 | 1993-09-21 | At&T Bell Laboratories | Interactive computer program specification and simulation system |
| US5313616A (en) * | 1990-09-18 | 1994-05-17 | 88Open Consortium, Ltd. | Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines |
| IL100990A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilanguage optimizing compiler using templates in multiple pass code generation |
| IL100986A (en) * | 1991-02-27 | 1997-01-10 | Digital Equipment Corp | Method for compiling code |
| US5428786A (en) * | 1991-03-07 | 1995-06-27 | Digital Equipment Corporation | Branch resolution via backward symbolic execution |
| WO1992015947A1 (en) * | 1991-03-07 | 1992-09-17 | Digital Equipment Corporation | Improved software debugging system and method especially adapted for code debugging within a multi-architecture environment |
| 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 |
| US5598560A (en) * | 1991-03-07 | 1997-01-28 | Digital Equipment Corporation | Tracking condition codes in translation code for different machine architectures |
| US5287490A (en) * | 1991-03-07 | 1994-02-15 | Digital Equipment Corporation | Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths |
| US5652869A (en) * | 1991-03-07 | 1997-07-29 | Digital Equipment Corporation | System for executing and debugging multiple codes in a multi-architecture environment using jacketing means for jacketing the cross-domain calls |
| US5339238A (en) * | 1991-03-07 | 1994-08-16 | Benson Thomas R | Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph |
| US5265239A (en) * | 1991-04-08 | 1993-11-23 | Ardolino Anthony A | Method for remotely accessing service programs of a local processing system supporting multiple protocol stacks and multiple device drivers |
| JPH0581049A (ja) * | 1991-09-20 | 1993-04-02 | Fujitsu Ltd | メモリの時間管理方式 |
| US5517629A (en) * | 1992-08-26 | 1996-05-14 | Boland; R. Nick K. | Methods for analyzing computer program performance |
| JPH06202903A (ja) * | 1992-12-29 | 1994-07-22 | Nec Corp | Cpuシミュレーション方法およびcpuシミュレータ |
| JP2634137B2 (ja) * | 1993-01-27 | 1997-07-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ユーザ・インターフェースシステム及び方法 |
| WO1994027214A1 (en) * | 1993-05-07 | 1994-11-24 | Apple Computer, Inc. | Method for decoding sequences of guest instructions for a host computer |
| JP3318051B2 (ja) * | 1993-06-17 | 2002-08-26 | 富士通株式会社 | 翻訳処理方法 |
| JPH07334372A (ja) * | 1993-12-24 | 1995-12-22 | Seiko Epson Corp | エミュレートシステム及びエミュレート方法 |
| US5781758A (en) * | 1995-03-23 | 1998-07-14 | Apple Computer, Inc. | Software emulation system with reduced memory requirements |
| US5751982A (en) * | 1995-03-31 | 1998-05-12 | Apple Computer, Inc. | Software emulation system with dynamic translation of emulated instructions for increased processing speed |
| US5875318A (en) * | 1996-04-12 | 1999-02-23 | International Business Machines Corporation | Apparatus and method of minimizing performance degradation of an instruction set translator due to self-modifying code |
| US5903760A (en) * | 1996-06-27 | 1999-05-11 | Intel Corporation | Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA |
| JP2817786B2 (ja) * | 1996-07-15 | 1998-10-30 | 日本電気株式会社 | シミュレーション装置及びシミュレーション方法 |
| JP3492105B2 (ja) * | 1996-08-30 | 2004-02-03 | 株式会社東芝 | ハードウェア/ソフトウェア協調シミュレーション装置及びシミュレーション方法 |
| US5838978A (en) | 1996-10-09 | 1998-11-17 | Hewlett-Packard Company | System and method of using annotations to optimize dynamically translated code in the presence of signals |
| US5828897A (en) * | 1996-12-19 | 1998-10-27 | Raytheon Company | Hybrid processor and method for executing incrementally upgraded software |
| US5930495A (en) * | 1997-01-13 | 1999-07-27 | International Business Machines Corporation | Method and system for processing a first instruction in a first processing environment in response to intiating processing of a second instruction in a emulation environment |
| US7441254B1 (en) * | 1997-07-09 | 2008-10-21 | International Business Machines Corporation | Simulation of memory-mapped I/O |
| US5966541A (en) | 1997-12-04 | 1999-10-12 | Incert Software Corporation | Test protection, and repair through binary-code augmentation |
| US6035390A (en) * | 1998-01-12 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for generating and logically combining less than (LT), greater than (GT), and equal to (EQ) condition code bits concurrently with the execution of an arithmetic or logical operation |
| US6163764A (en) * | 1998-10-12 | 2000-12-19 | Intel Corporation | Emulation of an instruction set on an instruction set architecture transition |
| US6415436B1 (en) * | 1998-12-11 | 2002-07-02 | Hewlett-Packard Company | Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler |
| US6308321B1 (en) | 1998-12-11 | 2001-10-23 | Incert Software Corporation | Method for determining program control flow |
| GB2344907A (en) * | 1998-12-19 | 2000-06-21 | Int Computers Ltd | Instruction translation and execution mechanism |
| US6353924B1 (en) | 1999-02-08 | 2002-03-05 | Incert Software Corporation | Method for back tracing program execution |
| US6415379B1 (en) * | 1999-10-13 | 2002-07-02 | Transmeta Corporation | Method and apparatus for maintaining context while executing translated instructions |
| US6912570B1 (en) * | 1999-11-12 | 2005-06-28 | Cisco Technology, Inc. | Self modifying state graphs for quality of service classification |
| US6845353B1 (en) | 1999-12-23 | 2005-01-18 | Transmeta Corporation | Interpage prologue to protect virtual address mappings |
| US6804814B1 (en) | 1999-12-29 | 2004-10-12 | Veritas Operating Corporation | Method for simulating back program execution from a traceback sequence |
| US6745383B1 (en) | 1999-12-29 | 2004-06-01 | Veritas Operating Corporation | Early warning mechanism for enhancing enterprise availability |
| US6748584B1 (en) * | 1999-12-29 | 2004-06-08 | Veritas Operating Corporation | Method for determining the degree to which changed code has been exercised |
| US6571387B1 (en) * | 2000-02-08 | 2003-05-27 | Silicon Graphics, Inc. | Method and computer program product for global minimization of sign-extension and zero-extension operations |
| US6892379B2 (en) * | 2001-05-16 | 2005-05-10 | Sun Microsystems, Inc. | Methods and apparatus for use in aiding stack unwinding |
| GB0202728D0 (en) * | 2002-02-06 | 2002-03-27 | Transitive Technologies Ltd | Condition code flag emulation for program code conversion |
| US20040176941A1 (en) * | 2003-03-04 | 2004-09-09 | Shan-Chyun Ku | Method of simulating computation instructions for an instruction set simulator |
| US7328429B2 (en) * | 2003-11-13 | 2008-02-05 | Intel Corporation | Instruction operand tracing for software debug |
| US8694797B2 (en) * | 2006-02-14 | 2014-04-08 | Lenovo (Sinapore) Pte Ltd | Method for preventing malicious software from execution within a computer system |
| US8041958B2 (en) * | 2006-02-14 | 2011-10-18 | Lenovo (Singapore) Pte. Ltd. | Method for preventing malicious software from execution within a computer system |
| JP4778359B2 (ja) * | 2006-05-17 | 2011-09-21 | エヌイーシーコンピュータテクノ株式会社 | エミュレーション方法及びコンピュータシステム |
| US20090109996A1 (en) * | 2007-10-29 | 2009-04-30 | Hoover Russell D | Network on Chip |
| US20090125703A1 (en) * | 2007-11-09 | 2009-05-14 | Mejdrich Eric O | Context Switching on a Network On Chip |
| US8261025B2 (en) | 2007-11-12 | 2012-09-04 | International Business Machines Corporation | Software pipelining on a network on chip |
| US8526422B2 (en) * | 2007-11-27 | 2013-09-03 | International Business Machines Corporation | Network on chip with partitions |
| US8473667B2 (en) * | 2008-01-11 | 2013-06-25 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidation messages |
| US8010750B2 (en) | 2008-01-17 | 2011-08-30 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidate commands |
| US8490110B2 (en) * | 2008-02-15 | 2013-07-16 | International Business Machines Corporation | Network on chip with a low latency, high bandwidth application messaging interconnect |
| US20090245257A1 (en) * | 2008-04-01 | 2009-10-01 | International Business Machines Corporation | Network On Chip |
| US8078850B2 (en) * | 2008-04-24 | 2011-12-13 | International Business Machines Corporation | Branch prediction technique using instruction for resetting result table pointer |
| US20090271172A1 (en) * | 2008-04-24 | 2009-10-29 | International Business Machines Corporation | Emulating A Computer Run Time Environment |
| US8423715B2 (en) * | 2008-05-01 | 2013-04-16 | International Business Machines Corporation | Memory management among levels of cache in a memory hierarchy |
| US20090282419A1 (en) * | 2008-05-09 | 2009-11-12 | International Business Machines Corporation | Ordered And Unordered Network-Addressed Message Control With Embedded DMA Commands For A Network On Chip |
| US8494833B2 (en) * | 2008-05-09 | 2013-07-23 | International Business Machines Corporation | Emulating a computer run time environment |
| US20090282211A1 (en) * | 2008-05-09 | 2009-11-12 | International Business Machines | Network On Chip With Partitions |
| US8020168B2 (en) * | 2008-05-09 | 2011-09-13 | International Business Machines Corporation | Dynamic virtual software pipelining on a network on chip |
| US8392664B2 (en) * | 2008-05-09 | 2013-03-05 | International Business Machines Corporation | Network on chip |
| US8214845B2 (en) * | 2008-05-09 | 2012-07-03 | International Business Machines Corporation | Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data |
| US8230179B2 (en) * | 2008-05-15 | 2012-07-24 | International Business Machines Corporation | Administering non-cacheable memory load instructions |
| US8438578B2 (en) * | 2008-06-09 | 2013-05-07 | International Business Machines Corporation | Network on chip with an I/O accelerator |
| US8195884B2 (en) * | 2008-09-18 | 2012-06-05 | International Business Machines Corporation | Network on chip with caching restrictions for pages of computer memory |
| CN103186414A (zh) * | 2011-12-27 | 2013-07-03 | 联想(北京)有限公司 | 一种程序执行方法、程序管理器和虚拟机 |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2159150A1 (ja) * | 1972-11-30 | 1973-06-15 | Materiel Telephonique | |
| US4084235A (en) * | 1975-04-14 | 1978-04-11 | Honeywell Information Systems Inc. | Emulation apparatus |
| US4070705A (en) * | 1975-11-20 | 1978-01-24 | The Singer Company | Simulation apparatus |
| US4370709A (en) * | 1980-08-01 | 1983-01-25 | Tracor, Inc. | Computer emulator with three segment microcode memory and two separate microcontrollers for operand derivation and execution phases |
| US4441154A (en) * | 1981-04-13 | 1984-04-03 | Texas Instruments Incorporated | Self-emulator microcomputer |
| US4447876A (en) * | 1981-07-30 | 1984-05-08 | Tektronix, Inc. | Emulator control sequencer |
| US4514803A (en) * | 1982-04-26 | 1985-04-30 | International Business Machines Corporation | Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof |
| US4587612A (en) * | 1982-10-22 | 1986-05-06 | International Business Machines Corporation | Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter |
| US4727480A (en) * | 1984-07-09 | 1988-02-23 | Wang Laboratories, Inc. | Emulation of a data processing system |
| US4656583A (en) * | 1984-08-13 | 1987-04-07 | International Business Machines Corporation | Method for improving global common subexpression elimination and code motion in an optimizing compiler |
| US4638423A (en) * | 1985-03-06 | 1987-01-20 | Motorola, Inc. | Emulating computer |
| US4677587A (en) * | 1985-05-14 | 1987-06-30 | Sanders Associates, Inc. | Program simulation system including means for ensuring interactive enforcement of constraints |
| US4841476A (en) * | 1986-10-06 | 1989-06-20 | International Business Machines Corporation | Extended floating point operations supporting emulation of source instruction execution |
-
1988
- 1988-02-01 US US07/151,136 patent/US4951195A/en not_active Expired - Fee Related
- 1988-12-19 JP JP63318665A patent/JPH0782441B2/ja not_active Expired - Lifetime
-
1989
- 1989-01-05 EP EP89300078A patent/EP0327196B1/en not_active Expired - Lifetime
- 1989-01-05 DE DE68921776T patent/DE68921776T2/de not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP0327196A2 (en) | 1989-08-09 |
| DE68921776T2 (de) | 1995-10-12 |
| US4951195A (en) | 1990-08-21 |
| EP0327196A3 (en) | 1991-10-23 |
| EP0327196B1 (en) | 1995-03-22 |
| DE68921776D1 (de) | 1995-04-27 |
| JPH025139A (ja) | 1990-01-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0782441B2 (ja) | シミユレーシヨン方法 | |
| EP0327195B1 (en) | Processor simulation | |
| US5167023A (en) | Translating a dynamic transfer control instruction address in a simulated CPU processor | |
| US5742802A (en) | Method and system for efficiently mapping guest instruction in an emulation assist unit | |
| US7243213B2 (en) | Process for translating instructions for an arm-type processor into instructions for a LX-type processor; relative translator device and computer program product | |
| US10318322B2 (en) | Binary translator with precise exception synchronization mechanism | |
| US7568189B2 (en) | Code translation and pipeline optimization | |
| US6142682A (en) | Simulation of computer processor | |
| US9495136B2 (en) | Using aliasing information for dynamic binary optimization | |
| US20030149963A1 (en) | Condition code flag emulation for program code conversion | |
| Probst | Dynamic binary translation | |
| US5617553A (en) | Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer | |
| KR100258650B1 (ko) | 에뮬레이션 문맥 스위치 저장 및 복구를 수행하는 방법 및 프로세서 | |
| US5764962A (en) | Emulation of asynchronous signals using a branch mechanism | |
| US6339752B1 (en) | Processor emulation instruction counter virtual memory address translation | |
| US5408622A (en) | Apparatus and method for emulation routine control transfer via host jump instruction creation and insertion | |
| US6516295B1 (en) | Method and apparatus for emulating self-modifying code | |
| EP0327198B1 (en) | Processor simulation | |
| US7395199B2 (en) | Emulating the operation of a video graphics adapter | |
| Smith et al. | POPLOG's Two-level virtual machine support for interactive languages | |
| US20070156386A1 (en) | Linearization of page based memory for increased performance in a software emulated central processing unit | |
| WO2007131089A2 (en) | Code translation and pipeline optimization | |
| Franca et al. | Design and realization of MLM: a multilingual machine | |
| JPH0666052B2 (ja) | メモリ内容を機械レジスタに自動的に写像する計算機 | |
| JPH0695919A (ja) | コンピュータ・システムのエミュレーション方法 |