JPH025140A - シミュレーシヨン方法 - Google Patents
シミュレーシヨン方法Info
- Publication number
- JPH025140A JPH025140A JP63318666A JP31866688A JPH025140A JP H025140 A JPH025140 A JP H025140A JP 63318666 A JP63318666 A JP 63318666A JP 31866688 A JP31866688 A JP 31866688A JP H025140 A JPH025140 A JP H025140A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- memory
- processor
- simulator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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)
- Devices For Executing Special Programs (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
以下の順で本発明を説明する。
A、産業上の利用分野
B、従来技術
C0発明が解決しようとする問題点
り1問題点を解決するための手段
E、実施例
El、処理システム環境(第1図)
E2.シミュレーションの概要(第2図)E3.条件コ
ードのフラグ解析(第3A図〜第3D図、第4図) E4.命令アドレスの翻訳(第5図〜第7図)E5.
メモリ・マツピング(第8図〜第10図) F1発明の効果 A、産業上の利用分野 本発明は、第1の処理システムの特定の第1のプロセッ
サ用に書かれたアプリケーションを実行するデータ処理
システムに関し、さらに具体的には、異なる第2のプロ
セッサを存する第2の処理システム上でそれらのアプリ
ケーションを実行するため第1のプロセッサをシミュレ
ートするシステム及び方法に関するものである。
ードのフラグ解析(第3A図〜第3D図、第4図) E4.命令アドレスの翻訳(第5図〜第7図)E5.
メモリ・マツピング(第8図〜第10図) F1発明の効果 A、産業上の利用分野 本発明は、第1の処理システムの特定の第1のプロセッ
サ用に書かれたアプリケーションを実行するデータ処理
システムに関し、さらに具体的には、異なる第2のプロ
セッサを存する第2の処理システム上でそれらのアプリ
ケーションを実行するため第1のプロセッサをシミュレ
ートするシステム及び方法に関するものである。
B、従来技術
]ンピュータ技術の現在の進歩により、処理システムの
プロセッサ(本明細書では中央処理装置(CPU)とも
呼ぶ)は絶え間なく変化してきている。種々のプロセッ
サの発展の例には、IBMPCで使用されるIntel
(IntelはIntel社の登録商標)8088プ
ロセッサ、IBM PCAT(PCATはIBM社の登
録商標)で使用されるInte180286プロセッサ
、IBMパーソナル・システム/2(パーソナル・シス
テム/2はIBM社の登録商標)で使用されるInte
180386プロセッサ、IBMRT PC(RT
PCはIBM社の登録商標)で縮小命令セント・コン
ピュータ(RISC)アーキテクチャを使用するIBM
リサーチ10PDマイクロプロセッサ(ROMP)があ
る。その他のプロセッサには、わけてもMotorol
a6800.68020がある。
プロセッサ(本明細書では中央処理装置(CPU)とも
呼ぶ)は絶え間なく変化してきている。種々のプロセッ
サの発展の例には、IBMPCで使用されるIntel
(IntelはIntel社の登録商標)8088プ
ロセッサ、IBM PCAT(PCATはIBM社の登
録商標)で使用されるInte180286プロセッサ
、IBMパーソナル・システム/2(パーソナル・シス
テム/2はIBM社の登録商標)で使用されるInte
180386プロセッサ、IBMRT PC(RT
PCはIBM社の登録商標)で縮小命令セント・コン
ピュータ(RISC)アーキテクチャを使用するIBM
リサーチ10PDマイクロプロセッサ(ROMP)があ
る。その他のプロセッサには、わけてもMotorol
a6800.68020がある。
種々の処理システムのハードウェアは、新しいプロセッ
サの増大した処理能力を利用できるように急速に変化し
ている。ハードウェアが変化することの欠点は、以前の
プロセッサ用に書かれたソフトウェアが一般にはそれよ
り後のハードウェア技術で使用できないことである。最
初にソフトウェアが書かれたとき対象とされた処理シス
テムとは異なる処理システムでそのソフト−ウェアを使
用することができる場合でも、アプリケーションの性能
は、異なる処理システム上では、そのアプリケーション
が当初対象とした処理システム上におけるほどには十分
ではない。その結果、長い開発期間を要したソフトウェ
ア・アプリケーションがすぐに時代遅れなものになる。
サの増大した処理能力を利用できるように急速に変化し
ている。ハードウェアが変化することの欠点は、以前の
プロセッサ用に書かれたソフトウェアが一般にはそれよ
り後のハードウェア技術で使用できないことである。最
初にソフトウェアが書かれたとき対象とされた処理シス
テムとは異なる処理システムでそのソフト−ウェアを使
用することができる場合でも、アプリケーションの性能
は、異なる処理システム上では、そのアプリケーション
が当初対象とした処理システム上におけるほどには十分
ではない。その結果、長い開発期間を要したソフトウェ
ア・アプリケーションがすぐに時代遅れなものになる。
以前に書かれたソフトウェアが使えないことは、最初に
書かれたアプリケーションの機能が依然として非常に適
切であり、新シいハードウェアの処理システム上で必要
とされている場合には、−理想劇的である。
書かれたアプリケーションの機能が依然として非常に適
切であり、新シいハードウェアの処理システム上で必要
とされている場合には、−理想劇的である。
その結果、一般には、新しいハードウェアが最初に市場
に発表されたとき、「新しい」ハードウェア設計用に特
に書かれた「新しい」ソフトウェアが、限られた奇しか
ないことになる。これは、−部には、ソフトウェア・ア
プリケーション・プログラムの開発期間が長いこと、及
び市場でのハードウェアの発表前に製造者が新しいハー
ドウェア設計を秘、密にしてお(ことのためである。ソ
フトウェア裂造者は、処理システムのハードウェアに関
しである程度の事実を知らなければその処理システム用
のソフトウェア・プログラムを書くことができない。
に発表されたとき、「新しい」ハードウェア設計用に特
に書かれた「新しい」ソフトウェアが、限られた奇しか
ないことになる。これは、−部には、ソフトウェア・ア
プリケーション・プログラムの開発期間が長いこと、及
び市場でのハードウェアの発表前に製造者が新しいハー
ドウェア設計を秘、密にしてお(ことのためである。ソ
フトウェア裂造者は、処理システムのハードウェアに関
しである程度の事実を知らなければその処理システム用
のソフトウェア・プログラムを書くことができない。
理想的には、処理システムの製造者は、その処理システ
ム用の新しいハードウェアが市場で発表されるとすぐ、
その処理システム上で実行できる大量のソフトウェアが
ほしいと考えるはずである。
ム用の新しいハードウェアが市場で発表されるとすぐ、
その処理システム上で実行できる大量のソフトウェアが
ほしいと考えるはずである。
顧客は、豊富な量のソフトウェアがすでに利用可能であ
ることが分かれば、新しい処理システムに投資する可能
性が一層大きくなるはずである。
ることが分かれば、新しい処理システムに投資する可能
性が一層大きくなるはずである。
「旧い」ハードウェア設計用に以前に書かれた大量のソ
フトウェアを転用する道を開く手法が幾つかあった。当
初別のプロセッサ用に書かれたアプリケーションを実行
できるようにするための以前のハードウェア手法は、コ
プロセッサを備えた新しい処理システムを構築すること
である。この方法では、処理システムは両方のタイプの
プロセッサ、すなわち、新しいプロセッサ用と旧プロセ
ッサ用のアプリケーションを実行することができる。
フトウェアを転用する道を開く手法が幾つかあった。当
初別のプロセッサ用に書かれたアプリケーションを実行
できるようにするための以前のハードウェア手法は、コ
プロセッサを備えた新しい処理システムを構築すること
である。この方法では、処理システムは両方のタイプの
プロセッサ、すなわち、新しいプロセッサ用と旧プロセ
ッサ用のアプリケーションを実行することができる。
たとえば、IBM RT PCは、当初IBMPCA
T用に書かれたアプリケーションを使用するためのIB
M PCATコブロセッサヲ含ンでいた。しかし、コプ
ロセッサは、オペレーティング・システムで低水準でサ
ポートされていたので、AIX(AIXはIBM社の商
標)オペレーティング・システムによって提供される機
能を完全に利用することができなかった。AIXオペレ
ーティング・システムによって提供される機能の1つは
、米国特許出願第820451号に記載された多重タス
ク処理である。
T用に書かれたアプリケーションを使用するためのIB
M PCATコブロセッサヲ含ンでいた。しかし、コプ
ロセッサは、オペレーティング・システムで低水準でサ
ポートされていたので、AIX(AIXはIBM社の商
標)オペレーティング・システムによって提供される機
能を完全に利用することができなかった。AIXオペレ
ーティング・システムによって提供される機能の1つは
、米国特許出願第820451号に記載された多重タス
ク処理である。
しかし、そのコプロセッサはPCATをエミュレートす
るためのハードウェア・アダプタを含んでいるので、ユ
ーザは一時に1つのセツションに制限される。言い換え
ると、−度コプロセッサが始動すると、コプロセッサの
他のインスタンスは実行できない。
るためのハードウェア・アダプタを含んでいるので、ユ
ーザは一時に1つのセツションに制限される。言い換え
ると、−度コプロセッサが始動すると、コプロセッサの
他のインスタンスは実行できない。
このコプロセッサはまた、第1の処理システムのプロセ
ッサの速度に限定され、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができない。
ッサの速度に限定され、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができない。
第2の手法はソフト、ウェアによって第2のプロセッサ
をシミュレートすることである。ソフトウェア・シミュ
レータは、あるプロセッサ用に以前に書かれたソフトウ
ェアを異なるプロセッサを有する新しい処理システムで
実行するための機構を提供する。ソフトウェアによるシ
ミュレーション手法では、処理システムが進歩するにつ
れて、より速い第2の処理システムの利益を享受するこ
とができる。ソフトウェア手法はまた、オペレーティン
グ・システムの多重タスク処理機能を使って、第1のプ
ロセッサの多数のインスタンスを提供することが可能で
ある。
をシミュレートすることである。ソフトウェア・シミュ
レータは、あるプロセッサ用に以前に書かれたソフトウ
ェアを異なるプロセッサを有する新しい処理システムで
実行するための機構を提供する。ソフトウェアによるシ
ミュレーション手法では、処理システムが進歩するにつ
れて、より速い第2の処理システムの利益を享受するこ
とができる。ソフトウェア手法はまた、オペレーティン
グ・システムの多重タスク処理機能を使って、第1のプ
ロセッサの多数のインスタンスを提供することが可能で
ある。
現在市販されているソフトウェア・シミュレータには、
In51gn1a Solutions(Insign
ia 5olutionsはIn51gn1a 5ol
utions社の商標)による5oftPC(Sort
PCはIn51gn1a 5olutionsの商標
)及びCommodore社のAmiga (Moto
rola社の68000をベースとする)用の51m1
le Re5earch社によるAa+iga Tra
nsforverがある◎後者のシステムに関する情報
は、論文rAmigaの切り札(Amiga’s Tr
ump Card) J 、AM I G A WO
RLD、第1巻、第2号、1985年11月712月に
発表されている@Phoenix Technolog
ies社も、Mo t o r o 1 a68000
プロセッサを備えたApollo機用のIntelプロ
セッサをシミュレートするためのシミュレータを提供し
ている。
In51gn1a Solutions(Insign
ia 5olutionsはIn51gn1a 5ol
utions社の商標)による5oftPC(Sort
PCはIn51gn1a 5olutionsの商標
)及びCommodore社のAmiga (Moto
rola社の68000をベースとする)用の51m1
le Re5earch社によるAa+iga Tra
nsforverがある◎後者のシステムに関する情報
は、論文rAmigaの切り札(Amiga’s Tr
ump Card) J 、AM I G A WO
RLD、第1巻、第2号、1985年11月712月に
発表されている@Phoenix Technolog
ies社も、Mo t o r o 1 a68000
プロセッサを備えたApollo機用のIntelプロ
セッサをシミュレートするためのシミュレータを提供し
ている。
どのCPUプロセッサもそれぞれ特定の命令セットを有
する。特定のCPUプロセッサ用のソフトウェア・アプ
リケーシヨン・プログラムが開発されるとき、それは目
的コードにコンパイルされる。
する。特定のCPUプロセッサ用のソフトウェア・アプ
リケーシヨン・プログラムが開発されるとき、それは目
的コードにコンパイルされる。
目的コードは、特定の命令セットをサポートするどのC
PU上ででも実行されることを目脂したものである。シ
ミュレータは、特定の命令セットで実行されるように書
かれた目的コードを受は取り、同様のまたは異なる命令
セットををする異なるプロセッサ上で実行できるように
それを変換する。
PU上ででも実行されることを目脂したものである。シ
ミュレータは、特定の命令セットで実行されるように書
かれた目的コードを受は取り、同様のまたは異なる命令
セットををする異なるプロセッサ上で実行できるように
それを変換する。
2台のプロセッサの2種類の命令セットが異なっていれ
ばいるほど、他方のプロセッサをシミュレートすること
は一層困難になる。
ばいるほど、他方のプロセッサをシミュレートすること
は一層困難になる。
たとえば、Inte180286プロセッサは多種多様
な命令を提供するという点で、非常に豊富な命令セット
を有する。各命令は特定のタイプの状況に特に対応して
いる。さらに、各命令は幾つかの動作を実行することが
できる。一方、RTPC内のROMPプロセッサは、よ
り少ない命令と、1つの命令当たりより少ない機能を提
供する縮小命令セット(RISC)プロセッサを有する
。
な命令を提供するという点で、非常に豊富な命令セット
を有する。各命令は特定のタイプの状況に特に対応して
いる。さらに、各命令は幾つかの動作を実行することが
できる。一方、RTPC内のROMPプロセッサは、よ
り少ない命令と、1つの命令当たりより少ない機能を提
供する縮小命令セット(RISC)プロセッサを有する
。
Inte18028θ内の各命令は複数のタスクを実行
するこきができるので、ROMP RISOで同じタ
スクを実行するには、より多くの命令が必要になる。
するこきができるので、ROMP RISOで同じタ
スクを実行するには、より多くの命令が必要になる。
しかし、命令セットを簡略化することによりプロセッサ
の速度を増大させることができる。より多くの命令が必
要となるものの、より一般的でより簡単なタスクを実行
する間に、複雑な命令に余分な時間を費やすことはない
。
の速度を増大させることができる。より多くの命令が必
要となるものの、より一般的でより簡単なタスクを実行
する間に、複雑な命令に余分な時間を費やすことはない
。
以前のソフトウェア・シミュレータの方法では、命令の
効果をシミュレートするサブルーチンを作成していた。
効果をシミュレートするサブルーチンを作成していた。
シミュレートされる機械がその命令を実行することが必
要になるたびに、その命令を復号し実行するためにその
サブルーチンを呼び出すことになる。この手法の問題点
は、サブルーチンを呼び出して実行するたびに、命令を
復号するというオーバーヘッドが生じることである。し
たがって、シミュレートされるプロセッサの速度が影響
を受ける。
要になるたびに、その命令を復号し実行するためにその
サブルーチンを呼び出すことになる。この手法の問題点
は、サブルーチンを呼び出して実行するたびに、命令を
復号するというオーバーヘッドが生じることである。し
たがって、シミュレートされるプロセッサの速度が影響
を受ける。
別のソフトウェア・ンミュレーンヨン手法では、命令を
実行することが必要になるたびにサブルーチンを呼び出
す代わりに、命令をシミュレートするためにより短いホ
スト機械命令シーケンスをコンパイルした。その結果、
ある命令を復号し翻訳するというオーバーヘッドは、そ
の命令に最初に出会ったときに一度だけ生じる。この翻
訳は次に保管され、それ以後は、その命令がシミュレー
トされるたびに、その翻訳が実行される。これは、しば
しば第2世代のシミュレータと呼ばれている。
実行することが必要になるたびにサブルーチンを呼び出
す代わりに、命令をシミュレートするためにより短いホ
スト機械命令シーケンスをコンパイルした。その結果、
ある命令を復号し翻訳するというオーバーヘッドは、そ
の命令に最初に出会ったときに一度だけ生じる。この翻
訳は次に保管され、それ以後は、その命令がシミュレー
トされるたびに、その翻訳が実行される。これは、しば
しば第2世代のシミュレータと呼ばれている。
第1世代のシミュレータは命令を一度に1つ受は取り、
それを実時間で復号し、実行する。復号は、各命令が必
要とされるたびに各命令ごとに行なわれる。第2世代の
シミュレータは命令を一度に1つずつ調べ、それらの命
令を翻訳し、その後は戻って再び翻訳せずその翻訳を再
使用する。
それを実時間で復号し、実行する。復号は、各命令が必
要とされるたびに各命令ごとに行なわれる。第2世代の
シミュレータは命令を一度に1つずつ調べ、それらの命
令を翻訳し、その後は戻って再び翻訳せずその翻訳を再
使用する。
以前の第2世代のシミュレータは、R8IMと呼ばれる
IBMシステム/370上でIBMROMP CPU
をシミュレートするシミュレータであった。このシミュ
レータは、セルと呼ばれる、各命令用の固定量の記憶域
(各ハーフ・ワードにつき16バイト)を予約する。次
に、各RT命令ごとにこれらのセルのそれぞれに対して
I BM370の命令が生成される。生成されるコード
の量が、1つのセルに入る量よりも少ない場合は(−船
釣にそうであるが)、次のセルの次の境界に分岐する。
IBMシステム/370上でIBMROMP CPU
をシミュレートするシミュレータであった。このシミュ
レータは、セルと呼ばれる、各命令用の固定量の記憶域
(各ハーフ・ワードにつき16バイト)を予約する。次
に、各RT命令ごとにこれらのセルのそれぞれに対して
I BM370の命令が生成される。生成されるコード
の量が、1つのセルに入る量よりも少ない場合は(−船
釣にそうであるが)、次のセルの次の境界に分岐する。
命令をシミュレー)・するために生成されるコードの量
が1つのセルに入りきらない場合は、実行時環境ルーチ
ン・セットに分岐するサブルーチン呼出しが生成される
。このルーチン・セットは、エミュレーションを実行し
てセルに戻り実行を完了する。もう1つのシミュレータ
はIBMRT PC上でIBMシステム/370のプ
ロセッサをシミュレートするもので、解釈プログラム及
び解釈技術に関する計算機械協会シンポジウムで198
7年6月11日に発表され、ACMの1987年度発表
要旨集S I GPLANで公表されたC、メイ(Ma
y)の論文「模倣二高速システム/370シミュレータ
(Mimic : A Fast System/37
0 Sin+ulator) Jに記載されている。
が1つのセルに入りきらない場合は、実行時環境ルーチ
ン・セットに分岐するサブルーチン呼出しが生成される
。このルーチン・セットは、エミュレーションを実行し
てセルに戻り実行を完了する。もう1つのシミュレータ
はIBMRT PC上でIBMシステム/370のプ
ロセッサをシミュレートするもので、解釈プログラム及
び解釈技術に関する計算機械協会シンポジウムで198
7年6月11日に発表され、ACMの1987年度発表
要旨集S I GPLANで公表されたC、メイ(Ma
y)の論文「模倣二高速システム/370シミュレータ
(Mimic : A Fast System/37
0 Sin+ulator) Jに記載されている。
第1世代のシミュレータは、シミュレートされる命令1
個当たり50ないし100個のホスト機械命令を実行す
る。第2世代のシミュレータは、シミュレートされる命
令1個当たり平均10個のホスト機械命令を実行する。
個当たり50ないし100個のホスト機械命令を実行す
る。第2世代のシミュレータは、シミュレートされる命
令1個当たり平均10個のホスト機械命令を実行する。
シミュレータが、シミュレートされる機械上で1つの命
令をシミュレートするために50または10個の命令を
必要とする場合、シミュレータを動かす第2のプロセッ
サは、匹敵する処理能力を示すためには、シミュレート
される機械よりもそれぞれ50倍または10倍速くなけ
ればならない。
令をシミュレートするために50または10個の命令を
必要とする場合、シミュレータを動かす第2のプロセッ
サは、匹敵する処理能力を示すためには、シミュレート
される機械よりもそれぞれ50倍または10倍速くなけ
ればならない。
したがって、当技術分野で従来実現されていたよりもシ
ミュレートまたは翻訳される命令1個当たりのシミュレ
ータ命令の数をさらに減らすことが望ましい。
ミュレートまたは翻訳される命令1個当たりのシミュレ
ータ命令の数をさらに減らすことが望ましい。
たとえば、シミュレータが、シミュレートされる命令1
個当たり4個の命令しか使用しないよう設計でき、かつ
、シミュレータのプロセッサが、シミュレートされる機
械のプロセッサよりも4倍速い場合には、シミュレータ
は、シミュレートされる元の機械よりも速くなる。この
とき、ユーザは、シミュレートされた機械を使用してア
プリケ−ンヨン・プログラムを実行することにより、ア
プリケーション・プログラムが当初書かれたとき対象と
なった機械を使用する場合よりも高い処理能力を得るこ
とになる。
個当たり4個の命令しか使用しないよう設計でき、かつ
、シミュレータのプロセッサが、シミュレートされる機
械のプロセッサよりも4倍速い場合には、シミュレータ
は、シミュレートされる元の機械よりも速くなる。この
とき、ユーザは、シミュレートされた機械を使用してア
プリケ−ンヨン・プログラムを実行することにより、ア
プリケーション・プログラムが当初書かれたとき対象と
なった機械を使用する場合よりも高い処理能力を得るこ
とになる。
したがって、別のプロセッサをシミュレートする際に克
服すべき全体的問題は、シミュレートされる命令1個当
たりのシミュレータ(ホスト)命令の数をさらに減らし
て、シミュレータの処理速度を増大させることである。
服すべき全体的問題は、シミュレートされる命令1個当
たりのシミュレータ(ホスト)命令の数をさらに減らし
て、シミュレータの処理速度を増大させることである。
C9発明が解決しようとする問題点
したがって、本発明の目的は、シミュレートされる命令
1個当たりごとの平均のホスト機械命令数を減少させる
ことである。
1個当たりごとの平均のホスト機械命令数を減少させる
ことである。
D0問題点を解決するための手段
本発明のシミュレータは、本来別のプロセッサ用に書か
れたアプリケーションをソフトウェア・エミュレーショ
ンにより実行する。ソフトウェアによるシミュレーショ
ン手法では、シミュレータ機械のオペレーティング・シ
ステムの機能を利用できるというフレキシビリティが得
られる。本発明の好ましい実施例では、シミュレータは
RTPCのAIXオペレーティング・システム上のアプ
リケーションとして働く。したがって、シミュレータは
、AIXオペレーティング・システムの多重タスク処理
及び多重ユーザ機能を利用して、本来PCAT用に書か
れた多数のアプリケーションをアプリケーション自体に
変更を加えずに同時に実行することが可能となる。
れたアプリケーションをソフトウェア・エミュレーショ
ンにより実行する。ソフトウェアによるシミュレーショ
ン手法では、シミュレータ機械のオペレーティング・シ
ステムの機能を利用できるというフレキシビリティが得
られる。本発明の好ましい実施例では、シミュレータは
RTPCのAIXオペレーティング・システム上のアプ
リケーションとして働く。したがって、シミュレータは
、AIXオペレーティング・システムの多重タスク処理
及び多重ユーザ機能を利用して、本来PCAT用に書か
れた多数のアプリケーションをアプリケーション自体に
変更を加えずに同時に実行することが可能となる。
本発明のシミュレーションの方法は、シミュレートされ
る機械命令1個当たりのホスト機械命令の数を減少させ
ることにより、従来のプロセッサ・シミュレーションの
方法よりも速いシミュレート・プロセッサの処理能力を
提供する。これは、従来必要なよりも多くの命令を使用
していた主要処理分野を特定し、次に、より少ない命令
を使って処理タスクを実施する新しい方法を創出するこ
とにより実現された。
る機械命令1個当たりのホスト機械命令の数を減少させ
ることにより、従来のプロセッサ・シミュレーションの
方法よりも速いシミュレート・プロセッサの処理能力を
提供する。これは、従来必要なよりも多くの命令を使用
していた主要処理分野を特定し、次に、より少ない命令
を使って処理タスクを実施する新しい方法を創出するこ
とにより実現された。
CPUシミュレーションを増大させるため、すなわち、
シミュレートされる命令1個当たりのホスト命令の平均
数を減少させるために、従来必要なよりも多くの命令を
使用していた主要処理分野を特定した。
シミュレートされる命令1個当たりのホスト命令の平均
数を減少させるために、従来必要なよりも多くの命令を
使用していた主要処理分野を特定した。
本発明では、メモリを更新する最初のプロセッサ命令を
調べて、その命令が後続の命令を変更するかどうか、ま
たはビデオ・バ、ツファ更新を行なうかどうかを判定す
る方法を提供する。本発明の方法は、この変更を検出す
るために必要とされるサイクル数、すなわち、命令の数
を減少させる。
調べて、その命令が後続の命令を変更するかどうか、ま
たはビデオ・バ、ツファ更新を行なうかどうかを判定す
る方法を提供する。本発明の方法は、この変更を検出す
るために必要とされるサイクル数、すなわち、命令の数
を減少させる。
すなわち、本発明では命令がメモリへの記憶を行なうと
きに何が起こるかを判別可能にする処理タスクに着目し
てシミュレートされる命令1つあたりのホスト命令の平
均個数を削減しようとしている。メモリの内容は3つに
分割される。メモリの内容は命令であっても、計算に用
いられるデータであっても、メモリ・マツプされたIl
oであってもよい。メモリ・マツプされたIloはノ1
−ドウエアによって変換され、または、たとえばデイス
プレィ画面上に表わされるメモリの内容(以下ではビデ
オ・バッファと呼ぶ)である。ビデオ・バッファは、出
力デイスプレィ装置上に情報として表示するために、ア
プリケーションによって更新されるハードウェア・アダ
プタの一部である。
きに何が起こるかを判別可能にする処理タスクに着目し
てシミュレートされる命令1つあたりのホスト命令の平
均個数を削減しようとしている。メモリの内容は3つに
分割される。メモリの内容は命令であっても、計算に用
いられるデータであっても、メモリ・マツプされたIl
oであってもよい。メモリ・マツプされたIloはノ1
−ドウエアによって変換され、または、たとえばデイス
プレィ画面上に表わされるメモリの内容(以下ではビデ
オ・バッファと呼ぶ)である。ビデオ・バッファは、出
力デイスプレィ装置上に情報として表示するために、ア
プリケーションによって更新されるハードウェア・アダ
プタの一部である。
上述の3つの型のメモリの内容のうち、計算用のデータ
のみがシミュレーション用の処理を施されることなく記
憶される。
のみがシミュレーション用の処理を施されることなく記
憶される。
命令を含むメモリ部分にストアがあると、命令は修正さ
れ、この結果命令用の翻訳はもはや何効でないこともあ
る。命令修正に対してテストを行なって翻訳されたコー
ドがつねに正しいことを保証する必要がある。アプリケ
ーションが命令の修正を行なうならば、元のコード命令
用に翻訳されたコードははきだされ、新しい命令がシミ
ュレータ・プロセッサの新しいシーケンスへと翻訳され
る。命令の正しい翻訳を保証する他のステップを採用す
ることもできるであろう。
れ、この結果命令用の翻訳はもはや何効でないこともあ
る。命令修正に対してテストを行なって翻訳されたコー
ドがつねに正しいことを保証する必要がある。アプリケ
ーションが命令の修正を行なうならば、元のコード命令
用に翻訳されたコードははきだされ、新しい命令がシミ
ュレータ・プロセッサの新しいシーケンスへと翻訳され
る。命令の正しい翻訳を保証する他のステップを採用す
ることもできるであろう。
同様に、ビデオの更新についてのテストを行なって、出
力装置への出力がシミュレータによってさらに処理する
必要があるかどうかを調べる必要がある。このような事
態は、第1の処理システムの出力装置がシミュレータを
動作させている第2の処理装置に取り付けられておらず
、このため第1の処理装置の出力装置をシミュレートし
なければならない場合に起こる。メモリ・マツプされた
■10の場合には、出力データを表わしている特別のハ
ードウェアが修正されるかどうかを、ストア時に判別す
る必要がある。従前のシミュレータでは、メモリへのス
トアがあったのちサブルーチンを呼び出してこれら2種
類のメモリの内容すなわち命令及びメモリ・マツプされ
たIloが影響を受けているかどうかを判断するのに多
くのサイクルを費やしていた。
力装置への出力がシミュレータによってさらに処理する
必要があるかどうかを調べる必要がある。このような事
態は、第1の処理システムの出力装置がシミュレータを
動作させている第2の処理装置に取り付けられておらず
、このため第1の処理装置の出力装置をシミュレートし
なければならない場合に起こる。メモリ・マツプされた
■10の場合には、出力データを表わしている特別のハ
ードウェアが修正されるかどうかを、ストア時に判別す
る必要がある。従前のシミュレータでは、メモリへのス
トアがあったのちサブルーチンを呼び出してこれら2種
類のメモリの内容すなわち命令及びメモリ・マツプされ
たIloが影響を受けているかどうかを判断するのに多
くのサイクルを費やしていた。
本発明では、メモリを更新する第1プロセッサ命令をテ
ストしてその命令が後続の命令を修正したり、ビデオ・
バッファの更新を行なったりするかどうかの決定を行な
う方法が提供される。本発明の方法によれば、この修正
を検出するのに必要なサイクル数すなわち命令数を減少
させることができる。アプリケーションをシミュレータ
上で実行するのに必要な記憶容量は増大したけれども、
速度は増大した。基本的には、効率の向上が、余分に必
要となる記憶空間のコストにより実現される。
ストしてその命令が後続の命令を修正したり、ビデオ・
バッファの更新を行なったりするかどうかの決定を行な
う方法が提供される。本発明の方法によれば、この修正
を検出するのに必要なサイクル数すなわち命令数を減少
させることができる。アプリケーションをシミュレータ
上で実行するのに必要な記憶容量は増大したけれども、
速度は増大した。基本的には、効率の向上が、余分に必
要となる記憶空間のコストにより実現される。
本発明では、メモリと、個別のメモリ位置の用途の種類
を示す状態との間の1バイト単位の対応関係を含むデー
プルを用いる。ゼロは当該メモIJ位置に計算用のデー
タが記憶されていることを示す。この場合、匝想メモリ
・システムにおいては以前に参照されることがなかった
ページは最も普通の状態が(決定できるのであれば)計
算用のデータであることを示す。つぎに、命令が翻訳さ
れるときには、その時点でメモリ位置が命令に対応する
ことがわかる。この情報の表示はテーブルに記憶される
。
を示す状態との間の1バイト単位の対応関係を含むデー
プルを用いる。ゼロは当該メモIJ位置に計算用のデー
タが記憶されていることを示す。この場合、匝想メモリ
・システムにおいては以前に参照されることがなかった
ページは最も普通の状態が(決定できるのであれば)計
算用のデータであることを示す。つぎに、命令が翻訳さ
れるときには、その時点でメモリ位置が命令に対応する
ことがわかる。この情報の表示はテーブルに記憶される
。
シミュレータ起動時には、ユーザは、第1の処理システ
ムの出力装置たとえばデイスプレィがユーザの処理シス
テム(これの上にシミュレータが動作する)に結合され
ているかどうかを指示することによって、シミュレータ
の構成を指示する。出力装置が存在するなら、出力装置
用のデータに対する付加的なシミュレータ処理は必要な
い。第1+7) 処fflシステムの出力装置が第2の
処理システムに結合されていないのであれば、その出力
装置へのデータに対して付加的なシミュレータ処理が実
行されて他の出力装置に同一の効果が現われるようにす
る。シミュレータ起動時かつシミュレータの構成処理(
conf iguration )ののちには、状態テ
ーブルに非零の値を記憶してビデオ・バッファが他のシ
ミュレータ処理が必要なメモリの位置であることを示す
ようにすることにより、出力g置が結合されていないこ
とを表示する。
ムの出力装置たとえばデイスプレィがユーザの処理シス
テム(これの上にシミュレータが動作する)に結合され
ているかどうかを指示することによって、シミュレータ
の構成を指示する。出力装置が存在するなら、出力装置
用のデータに対する付加的なシミュレータ処理は必要な
い。第1+7) 処fflシステムの出力装置が第2の
処理システムに結合されていないのであれば、その出力
装置へのデータに対して付加的なシミュレータ処理が実
行されて他の出力装置に同一の効果が現われるようにす
る。シミュレータ起動時かつシミュレータの構成処理(
conf iguration )ののちには、状態テ
ーブルに非零の値を記憶してビデオ・バッファが他のシ
ミュレータ処理が必要なメモリの位置であることを示す
ようにすることにより、出力g置が結合されていないこ
とを表示する。
実行時には、テストを行なって、修正が行なわれている
メモリ位置のアドレスをテーブルのアドレスに変換する
。内容がゼロであれば、何ら特別な処理は必要でない。
メモリ位置のアドレスをテーブルのアドレスに変換する
。内容がゼロであれば、何ら特別な処理は必要でない。
第1の処理システムの出力装置が結合されているか、ま
たは、修正されているメモリ位置の内容がデータである
からである。
たは、修正されているメモリ位置の内容がデータである
からである。
内容が非零であれば、特別な処理が必要となる。
第1の処理システムが結合されていす、しかも他のシミ
ュレーションが現在必要だからであり、または修正され
ているメモリ位置の内容が命令であり、テストを行なっ
て正しい翻訳が実行されていることを保証する必要があ
るからである。この方法では、テストが必要なときにい
つもサブルーチンを呼んでいた従来の手法よりも高速な
処理が行なえる。
ュレーションが現在必要だからであり、または修正され
ているメモリ位置の内容が命令であり、テストを行なっ
て正しい翻訳が実行されていることを保証する必要があ
るからである。この方法では、テストが必要なときにい
つもサブルーチンを呼んでいた従来の手法よりも高速な
処理が行なえる。
一連の命令を実行して、他のセグメントにマツプされる
1のセグメント中に、どのタイプのコードすなわち計算
用データ、命令またはビデオ・データのいずれかを示す
1バイトがあるかどうかをテストできる。1バイトを取
り出してそれがゼロかどうかをテストするのは高速に行
なえる。ゼロでなければ、それは、特別な処理が必要な
命令またはビデオ・データであることを示す。
1のセグメント中に、どのタイプのコードすなわち計算
用データ、命令またはビデオ・データのいずれかを示す
1バイトがあるかどうかをテストできる。1バイトを取
り出してそれがゼロかどうかをテストするのは高速に行
なえる。ゼロでなければ、それは、特別な処理が必要な
命令またはビデオ・データであることを示す。
E、実施例
El、処理システム環境
本発明のシステム及び方法の好ましい実施例は、複合命
令セットを用いたInte180288プロセッサを使
用するIBM PCAT等の処理システムを、縮小命令
セット・コンピュータ(RISC)it術を用いたRO
MPプロセッサを使用スるIBM RT PC等の第
1図に示す処理システム上でシミュレートする。RIS
Cプロセッサは1命令当たりの機能は少ないが、命令を
速く処理することができる。Inte180286に基
づく機械とtSCに基づく機械のアーキテクチャは互い
にまったく異なっている。2つの処理システムのアーキ
テクチャの差異が大きければ大きいホト、一方ノプロセ
ッサを他方の処理システム上でシミュレートすることが
一層難しくなる。
令セットを用いたInte180288プロセッサを使
用するIBM PCAT等の処理システムを、縮小命令
セット・コンピュータ(RISC)it術を用いたRO
MPプロセッサを使用スるIBM RT PC等の第
1図に示す処理システム上でシミュレートする。RIS
Cプロセッサは1命令当たりの機能は少ないが、命令を
速く処理することができる。Inte180286に基
づく機械とtSCに基づく機械のアーキテクチャは互い
にまったく異なっている。2つの処理システムのアーキ
テクチャの差異が大きければ大きいホト、一方ノプロセ
ッサを他方の処理システム上でシミュレートすることが
一層難しくなる。
RT PC処理システム、IBMPCAT処理システム
、及びInte180286プロセッサに関するより詳
しい情報については、以下の参照文献を引用されたい。
、及びInte180286プロセッサに関するより詳
しい情報については、以下の参照文献を引用されたい。
それらの開示を引用により本明細書に組み込む。M、J
、バッハ(Bach)、rThe Design
of the UNIX Operating
SystemJ 、プレンティス・ホール(Pre
ntice I(all) 、1986年。T、G、ラ
ング(Lang)及びT、L、マザーソール(Moth
ersole )、rDesign of the R
TPCVRM NucleusJ、1986年9月1日
。
、バッハ(Bach)、rThe Design
of the UNIX Operating
SystemJ 、プレンティス・ホール(Pre
ntice I(all) 、1986年。T、G、ラ
ング(Lang)及びT、L、マザーソール(Moth
ersole )、rDesign of the R
TPCVRM NucleusJ、1986年9月1日
。
rAIX Operating System Co
mmands ReferenceVersion
2 、 I J、IBM社、5C23−0790゜
rAIX Operating System Ma
naging the ΔIXOperating
System Version 2. I J )
I BM社、5C23−0793゜ rArx Ope
rating SystemProgramming
Tools and Interfaces Vers
ion 2 。
mmands ReferenceVersion
2 、 I J、IBM社、5C23−0790゜
rAIX Operating System Ma
naging the ΔIXOperating
System Version 2. I J )
I BM社、5C23−0793゜ rArx Ope
rating SystemProgramming
Tools and Interfaces Vers
ion 2 。
1」、IBM社、5C23−0789゜rAIX Op
erating System Technical
ReferenceVersion2. I J
、第1巻及び第2巻、IBM社、5C23−0808及
び5C23−0809゜rlBM RTPersona
L Computer TechnologyJ 11
BM社、5A23−1057.1986年。
erating System Technical
ReferenceVersion2. I J
、第1巻及び第2巻、IBM社、5C23−0808及
び5C23−0809゜rlBM RTPersona
L Computer TechnologyJ 11
BM社、5A23−1057.1986年。
rVirtual Re5ource Manag
er TechnicalReference Ve
rsion 2 、 I J )第1巻及び第2巻)
IBM社、5C23−0816及び5C23−0817
6riAPX 286 Programmer’s
ReferenceManual Includi
ng the 1APX 286 Numeri
cSupp lement J、Inte1社、210
498−003.1985年。及びrlBM PCA
TTechnical Referencc Manu
alJ、IBM社、1984年3月。
er TechnicalReference Ve
rsion 2 、 I J )第1巻及び第2巻)
IBM社、5C23−0816及び5C23−0817
6riAPX 286 Programmer’s
ReferenceManual Includi
ng the 1APX 286 Numeri
cSupp lement J、Inte1社、210
498−003.1985年。及びrlBM PCA
TTechnical Referencc Manu
alJ、IBM社、1984年3月。
E2.シミュレーシジンの概要
第1図に示すように、シミュレータ10は処理システム
1のオペレーティング・システム12上でアプリケーシ
ョン・プログラムとして実行される。第1図に加えて第
2図を参照すると、ステノブ2でシミュレータ10が始
動されると、シミュレータ10はステップ3で、読取り
専用記憶装置(RO3)(読取り専用メモリ(ROM)
とも呼ばれる)15から、80288の命令を含むBI
O813をオペレーティング・システム12の共用メモ
リ・セグメント16に複写する。ステップ4で、シミュ
レータ1oはBIO813を翻訳し、ステップ5で、B
IO313は、アプリケーション19が当初書かれたと
き対象とされたオペレーティング・システム(DO8)
18をロードする。
1のオペレーティング・システム12上でアプリケーシ
ョン・プログラムとして実行される。第1図に加えて第
2図を参照すると、ステノブ2でシミュレータ10が始
動されると、シミュレータ10はステップ3で、読取り
専用記憶装置(RO3)(読取り専用メモリ(ROM)
とも呼ばれる)15から、80288の命令を含むBI
O813をオペレーティング・システム12の共用メモ
リ・セグメント16に複写する。ステップ4で、シミュ
レータ1oはBIO813を翻訳し、ステップ5で、B
IO313は、アプリケーション19が当初書かれたと
き対象とされたオペレーティング・システム(DO8)
18をロードする。
シミュレータ10は次にステップ6で、そのオペレーテ
ィング・システム18を翻訳して実行する。
ィング・システム18を翻訳して実行する。
ステップ7で、ユーザはオペレーティング・システム・
プロンプトでアプリケーション19を呼び出し、ステッ
プ8で、シミュレータ10はアプリケーション・プログ
ラム19を翻訳して実行する。
プロンプトでアプリケーション19を呼び出し、ステッ
プ8で、シミュレータ10はアプリケーション・プログ
ラム19を翻訳して実行する。
CPUシミュレーションの処理能力を増大させるため、
すなわち、シミュレートされる命令1個当たりのホスト
命令の平均数を減少させるため、現在必要なよりも多く
の命令を使用している主要処理分野を特定した。
すなわち、シミュレートされる命令1個当たりのホスト
命令の平均数を減少させるため、現在必要なよりも多く
の命令を使用している主要処理分野を特定した。
E3.条件コードのフラグ解析
最初に、条件コードの正しい値を維持し、保持する処理
タスクを特定した。
タスクを特定した。
多数のプロセッサ命令が、フラグ・レジスタ20に作用
して、フラグ・レジスタ20(第3C図)中の条件コー
ド21−26を、ある動作の結果を反映するように更新
する。異なる6つの条件コード、すなわち、あふれフラ
グ21、符号フラグ22、ゼロ・フラグ23、演算フラ
グ24(半桁上げとも呼ばれる)、パリティ・フラグ2
5、及び桁上げフラグ26がある。これらの条件コード
21−26は、結果が0であったかどうか、結果が負で
あったかどうか、レジスタの桁上げが生じたかどうか、
またはあふれ条件がもたらされたかどうか等の一般条件
を示す。さらに、結果の下位バイトのパリティ(奇数ま
たは偶数)及び動作の下位4ビツトの桁上げ(半桁上げ
)を示す条件も含む。
して、フラグ・レジスタ20(第3C図)中の条件コー
ド21−26を、ある動作の結果を反映するように更新
する。異なる6つの条件コード、すなわち、あふれフラ
グ21、符号フラグ22、ゼロ・フラグ23、演算フラ
グ24(半桁上げとも呼ばれる)、パリティ・フラグ2
5、及び桁上げフラグ26がある。これらの条件コード
21−26は、結果が0であったかどうか、結果が負で
あったかどうか、レジスタの桁上げが生じたかどうか、
またはあふれ条件がもたらされたかどうか等の一般条件
を示す。さらに、結果の下位バイトのパリティ(奇数ま
たは偶数)及び動作の下位4ビツトの桁上げ(半桁上げ
)を示す条件も含む。
第1のプロセッサのフラグ・レジスタを最新状態に保つ
ことによってセットされる第1のプロセッサの命令をシ
ミュレートするには、レジスタに作用する全命令に対し
て追加のサイクルが必要となるはずである。このことは
、第1のプロセッサのアーキテクチャによって、条件コ
ード更新の異なる幾つかの組合せが定義される場合に特
に当てはまる。たとえば、条件コードは常にセットまた
はクリアされ、計算され、未変更のままにされ、あるい
は未定義のままにされることが可能である。
ことによってセットされる第1のプロセッサの命令をシ
ミュレートするには、レジスタに作用する全命令に対し
て追加のサイクルが必要となるはずである。このことは
、第1のプロセッサのアーキテクチャによって、条件コ
ード更新の異なる幾つかの組合せが定義される場合に特
に当てはまる。たとえば、条件コードは常にセットまた
はクリアされ、計算され、未変更のままにされ、あるい
は未定義のままにされることが可能である。
以前のシミュレータR8IM、すなわち、1BM S/
370上のRT PCプロセッサ・シミュレータは、
条件コードを記録するというオーバーヘッドを減少させ
るためにある方式を使用していた。この目的のためにレ
ジスタが予約されていた。
370上のRT 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を呼び出す。
い第1のプロセッサ命令プロ、ツク100に到達すると
、ステップ132で、シミュレータ10は第2のプロセ
ッサ翻訳を行なうため翻訳プログラム27を呼び出す。
翻訳は3段階で行なわれる。
最初に、ステップ133(第4図)でグラフ50(第3
C図)が作成される。これは第1のプロセッサ命令ブロ
ック100の構造を表わす。グラフ内の各ノード101
は1つの命令100に対応する。第1のプロセッサ命令
デコーダ28は、実行のため、命令100がどのレジス
タ及び条件コード21−26を必要とするか(ブロック
42)、及び実行の結果、命令100がどの条件21−
26をセットするか(ブロック43)を含めて、命令1
00に関する情報を各ノード101に記入する。使用レ
ジスタ42及びセット・レジスタ43はあふれフラグ2
1及び桁上げフラグ26用に単独のビットを有し、残り
の条件コード22−25は1ビツトにまとめられること
に留意されたい。
C図)が作成される。これは第1のプロセッサ命令ブロ
ック100の構造を表わす。グラフ内の各ノード101
は1つの命令100に対応する。第1のプロセッサ命令
デコーダ28は、実行のため、命令100がどのレジス
タ及び条件コード21−26を必要とするか(ブロック
42)、及び実行の結果、命令100がどの条件21−
26をセットするか(ブロック43)を含めて、命令1
00に関する情報を各ノード101に記入する。使用レ
ジスタ42及びセット・レジスタ43はあふれフラグ2
1及び桁上げフラグ26用に単独のビットを有し、残り
の条件コード22−25は1ビツトにまとめられること
に留意されたい。
したがって、これらの条件コード22−25のいずれか
が命令100によって使用またはセットされた場合、レ
ジスタ42.43の中間ビットはそのように指示する。
が命令100によって使用またはセットされた場合、レ
ジスタ42.43の中間ビットはそのように指示する。
須2に、ステップ134(第4図)で、グラフ30を解
析して、どこで割込みをポーリングしなければならない
か、分岐を最小にするため翻訳をどのように順序付ける
か、及び命令によって定義されるどの条件コードが実際
に使用されるかを判定する。
析して、どこで割込みをポーリングしなければならない
か、分岐を最小にするため翻訳をどのように順序付ける
か、及び命令によって定義されるどの条件コードが実際
に使用されるかを判定する。
第3に、ステップ136(第4図)で、コード発生機構
29を呼び出して、グラフ30を第2のプロセッサ命令
130(第3D図)に変換する。
29を呼び出して、グラフ30を第2のプロセッサ命令
130(第3D図)に変換する。
ステップ136でコードが発生されるとき、グラフ50
内の情報は、命令によって定義される条件コード21−
26が実際に使用されるかどうかを示す。たとえば、大
抵の場合は、シフト(SHL)命令125(第3B図及
び第3C図)によって定義される条件コードは実際には
使用されない。
内の情報は、命令によって定義される条件コード21−
26が実際に使用されるかどうかを示す。たとえば、大
抵の場合は、シフト(SHL)命令125(第3B図及
び第3C図)によって定義される条件コードは実際には
使用されない。
コード発生機構29はこの知識を使って、条件コードが
必要であったなら動作のオペランドを保管するために4
または5個の命令が必要となったかも知れない場合に、
単一の第2のプロセッサ命令135(第3D図)を発生
することができる。この例ではADD命令用の条件コー
1’21−26が後続の命令128で必要となることが
、命令100の制御流れ(第3B図及び第3C図)から
で理解できる。したがって、翻訳された命令130(第
3D図)は、条件コードが必要でなかった場合には1つ
しか命令を発生しない所を、6個の命令をもたらした。
必要であったなら動作のオペランドを保管するために4
または5個の命令が必要となったかも知れない場合に、
単一の第2のプロセッサ命令135(第3D図)を発生
することができる。この例ではADD命令用の条件コー
1’21−26が後続の命令128で必要となることが
、命令100の制御流れ(第3B図及び第3C図)から
で理解できる。したがって、翻訳された命令130(第
3D図)は、条件コードが必要でなかった場合には1つ
しか命令を発生しない所を、6個の命令をもたらした。
ただし、条件コード21−26が必要でないことをフラ
グ解析50が示す場合には、翻訳された余分な命令は発
生されない。
グ解析50が示す場合には、翻訳された余分な命令は発
生されない。
シミュレータ10は第1のプロセッサ命令100を第2
のプロセッサ命令130に翻訳するが、−度に1つの命
令の翻訳を行なわない。シミュレータ10は、これから
実行する翻訳のない第1の命令を調べ、第3A図に示す
命令のグラフ30を作成しながら後続の命令の検査を続
行する。
のプロセッサ命令130に翻訳するが、−度に1つの命
令の翻訳を行なわない。シミュレータ10は、これから
実行する翻訳のない第1の命令を調べ、第3A図に示す
命令のグラフ30を作成しながら後続の命令の検査を続
行する。
グラフ30の各ノード101は1つの第1プロセッサ命
令100に対応する。各7−ド101は多くとも2つの
子孫しか持てない。メモリ内の次の順次命令にのみ制御
権を移す順次命令102.105.106.108.1
10.11 L j、12の場合は、ノード101は、
第3A図に垂直線114として示すように、それぞれ1
つの子孫103.106.107.109.111.1
12.113しか持たない。条件付き分岐103.10
4の場合には2つの子孫があり得、これらの命令は条件
の真偽をテストして、条件が真の場合はある命令に分岐
し、条件が偽の場合は次の命令に進む。割込み戻り命令
109のように、ノード101が子孫を持たないことも
あり得る。子孫を持たない命令109は、制御権を動的
に移す命令の例である。さらに、ノード101は、順次
命令ではない1つの子孫を持つことができる。無条件飛
越し命令107がその一例である。
令100に対応する。各7−ド101は多くとも2つの
子孫しか持てない。メモリ内の次の順次命令にのみ制御
権を移す順次命令102.105.106.108.1
10.11 L j、12の場合は、ノード101は、
第3A図に垂直線114として示すように、それぞれ1
つの子孫103.106.107.109.111.1
12.113しか持たない。条件付き分岐103.10
4の場合には2つの子孫があり得、これらの命令は条件
の真偽をテストして、条件が真の場合はある命令に分岐
し、条件が偽の場合は次の命令に進む。割込み戻り命令
109のように、ノード101が子孫を持たないことも
あり得る。子孫を持たない命令109は、制御権を動的
に移す命令の例である。さらに、ノード101は、順次
命令ではない1つの子孫を持つことができる。無条件飛
越し命令107がその一例である。
上に示したように、命令100には4つのタイプがある
。これらのタイプはコード中で以下のように番号付けさ
れる。ノードにある命令が子孫を持たない場合、すなわ
ち、戻り命令128(第3C図)、割込み戻り命令10
9(第3A図)及び戻り命令113(第3A図)では、
ノード101は番号「0」を付される。順次命令であり
、かつ1つの順次子孫を持つ場合、たとえば、(第3C
図)比較命令121、減分命令124(第3C図)、比
較命令102、増分命令108(第3A図)では、ノー
ド101は番号「1」を付される。
。これらのタイプはコード中で以下のように番号付けさ
れる。ノードにある命令が子孫を持たない場合、すなわ
ち、戻り命令128(第3C図)、割込み戻り命令10
9(第3A図)及び戻り命令113(第3A図)では、
ノード101は番号「0」を付される。順次命令であり
、かつ1つの順次子孫を持つ場合、たとえば、(第3C
図)比較命令121、減分命令124(第3C図)、比
較命令102、増分命令108(第3A図)では、ノー
ド101は番号「1」を付される。
命令が2つの子孫を持つ場合、すなわち、+fbelo
w飛越し命令122(第3C図)及び103(第3A図
)では、ノード101は番号「2」を付される。順次命
令ではないが1つの子孫しか持たない場合、すなわち、
飛越し命令107(第3A図)では、ノード101は番
号「3」を付される。
w飛越し命令122(第3C図)及び103(第3A図
)では、ノード101は番号「2」を付される。順次命
令ではないが1つの子孫しか持たない場合、すなわち、
飛越し命令107(第3A図)では、ノード101は番
号「3」を付される。
第1のプロセッサの命令ブロック100(第3B図)に
ついて記述するグラフ50(第3c図)を命令1001
個当たり1つのノード101で作成した後、シミュレー
タはグラフ50の解析を行なう。各ノード101は、第
1のプロセッサ命令100が実行のために通常どの条件
コード21−26を必要とするか(レジスタ42)、及
び実行後にその命令によってどの条件コード21−26
がセットされるか(レジスタ43)に関する情報を含む
。比較命令121の場合、比較命令121は実行のため
にどの条件コード21−28も必要としないが、それら
のすべてをセットする(レジスタ43 ) 、 if
below飛越しくJB)命令122は、桁上げ条件コ
ードがテストされるものなので、実行のために桁上げ条
件コード26を必要とするが(レジスタ42)、実行後
にどの条件コードもセットしない(レジスタ43)。1
requal飛越しくJE)命令123は実行のために
1fequa l コード・ビットを必要とするが、
実行後にどの条件コードもセットしない。増分命令12
4はあふれフラグ21及び演算フラグ24をセットしく
レジスタ43)、桁上げ条件コード26を未変更のまま
にする(レジスタ43)。このようにして、命令100
の残りの各々についてもフラグ解析を続ける。
ついて記述するグラフ50(第3c図)を命令1001
個当たり1つのノード101で作成した後、シミュレー
タはグラフ50の解析を行なう。各ノード101は、第
1のプロセッサ命令100が実行のために通常どの条件
コード21−26を必要とするか(レジスタ42)、及
び実行後にその命令によってどの条件コード21−26
がセットされるか(レジスタ43)に関する情報を含む
。比較命令121の場合、比較命令121は実行のため
にどの条件コード21−28も必要としないが、それら
のすべてをセットする(レジスタ43 ) 、 if
below飛越しくJB)命令122は、桁上げ条件コ
ードがテストされるものなので、実行のために桁上げ条
件コード26を必要とするが(レジスタ42)、実行後
にどの条件コードもセットしない(レジスタ43)。1
requal飛越しくJE)命令123は実行のために
1fequa l コード・ビットを必要とするが、
実行後にどの条件コードもセットしない。増分命令12
4はあふれフラグ21及び演算フラグ24をセットしく
レジスタ43)、桁上げ条件コード26を未変更のまま
にする(レジスタ43)。このようにして、命令100
の残りの各々についてもフラグ解析を続ける。
ノード101は、アプリケーション・プログラム19が
ノードを見つけたとき順に記憶装置120内に割り振ら
れる。本来第1のプロセッサ用に書かれたアプリケーシ
ョン・プログラム19を用いる探索は深度第1探索とよ
ばれる。深度第1探索とは、エンド・ノード(タイプ0
)、たとえば、I RET命令109(第3A図)に達
するまで命令を順次探索するという意味である。タイプ
0のノードに達した後、探索は、複数の子孫を持つ最後
の命令に戻る。
ノードを見つけたとき順に記憶装置120内に割り振ら
れる。本来第1のプロセッサ用に書かれたアプリケーシ
ョン・プログラム19を用いる探索は深度第1探索とよ
ばれる。深度第1探索とは、エンド・ノード(タイプ0
)、たとえば、I RET命令109(第3A図)に達
するまで命令を順次探索するという意味である。タイプ
0のノードに達した後、探索は、複数の子孫を持つ最後
の命令に戻る。
メモリ120に記憶される命令100(第3A図)の順
序は、比較命令102、JB命令103、JE命令10
4、増分命令108及び割込み戻り命令109の順であ
る。割込み戻り命令109の後で、探索はJE命令10
4に戻って2番目の子孫を調べる。2番目の子孫である
割込み戻り命令109はすでにメモリに記憶されている
命令である。したがって、探索は、2つの子孫を持つも
う1つの前のノード、すなわち、JB命令103に戻り
、第2の経路をたどる。次にこの経路中で新しいコード
が見つかる。次の命令は、第3A図に示す順序でメモリ
に記憶される。
序は、比較命令102、JB命令103、JE命令10
4、増分命令108及び割込み戻り命令109の順であ
る。割込み戻り命令109の後で、探索はJE命令10
4に戻って2番目の子孫を調べる。2番目の子孫である
割込み戻り命令109はすでにメモリに記憶されている
命令である。したがって、探索は、2つの子孫を持つも
う1つの前のノード、すなわち、JB命令103に戻り
、第2の経路をたどる。次にこの経路中で新しいコード
が見つかる。次の命令は、第3A図に示す順序でメモリ
に記憶される。
第3B図及び第3C図を参り、6すると、ノード101
の各々について、シミュレータは2つのフィールドをメ
モリに保持する。その一方のフィールドは、命令100
が必要とする条件コード21−26であり(レジスタ4
2)、他方のフィールドは、命令100によってセット
される条件コード21−26である(レジスタ43)。
の各々について、シミュレータは2つのフィールドをメ
モリに保持する。その一方のフィールドは、命令100
が必要とする条件コード21−26であり(レジスタ4
2)、他方のフィールドは、命令100によってセット
される条件コード21−26である(レジスタ43)。
その時点でどの条件コードをセントしなければならない
かを最適化するため、伝播過程が実行される。これは、
割り振られた最後の命令から割り振られた最初の命令に
進むことによって行なわれる。この順序で命令が循環待
ち行列から取り出される。ノード101のレジスタ42
は、そのノードのレジスタ43の補数をすべての子孫ノ
ードのレジスタ42とAND演算し、その結果を、更新
されるノード101のレジスタ42とOR演算してレジ
スタ42に入れることによって更新される。更新された
レジスタ42は条件コード21−26を子孫が必要とす
るかどうかを反映する。すべての子孫が実行済みとマー
クされている場合は、更新されているノード101も実
行済みであり、ノード101が待ち行列から取り出され
る。ノードが実行されていない場合は、その命令は待ち
行列の終わりに置かれる。待ち行列が空であって、すべ
てのノードが処理済みであることを示すか、あるいは、
何も変わっていない、すなわち、更新されなかったノー
ドが幾つか待ち行列に残っている状態になるまで、待ち
行列が調べられる。
かを最適化するため、伝播過程が実行される。これは、
割り振られた最後の命令から割り振られた最初の命令に
進むことによって行なわれる。この順序で命令が循環待
ち行列から取り出される。ノード101のレジスタ42
は、そのノードのレジスタ43の補数をすべての子孫ノ
ードのレジスタ42とAND演算し、その結果を、更新
されるノード101のレジスタ42とOR演算してレジ
スタ42に入れることによって更新される。更新された
レジスタ42は条件コード21−26を子孫が必要とす
るかどうかを反映する。すべての子孫が実行済みとマー
クされている場合は、更新されているノード101も実
行済みであり、ノード101が待ち行列から取り出され
る。ノードが実行されていない場合は、その命令は待ち
行列の終わりに置かれる。待ち行列が空であって、すべ
てのノードが処理済みであることを示すか、あるいは、
何も変わっていない、すなわち、更新されなかったノー
ドが幾つか待ち行列に残っている状態になるまで、待ち
行列が調べられる。
第2の経路がグラフを用いて実行される。この経路では
、その子孫が必要とする条件コードであるとこのとき示
されている条件コードに肯定応答するためにセットされ
た条件コードを減少させることによって、レジスタ43
が更新される。
、その子孫が必要とする条件コードであるとこのとき示
されている条件コードに肯定応答するためにセットされ
た条件コードを減少させることによって、レジスタ43
が更新される。
この解析の終わりで、各ノード101は、どの条件コー
ド21−26をセットしなければならないかを示す(レ
ジスタ43)。条件コード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のリ
ストを、逆の順序で進む。
ド21−26をセットしなければならないかを示す(レ
ジスタ43)。条件コード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では減分命令1
24及びシフト命令125(第3C図)に対してそれぞ
れ1つの命令しか必要でなかった。
24及びシフト命令125(第3C図)に対してそれぞ
れ1つの命令しか必要でなかった。
それとは対照的に、条件コード21−26を後で使用で
きるようにセットする加算命令126は8つの命令を必
要とした。
きるようにセットする加算命令126は8つの命令を必
要とした。
同様に、第3A図のフラグ解析30はまた、すべての条
件コードをセットする比較命令が後続の命令で6つの条
件コードのうちJE命令104が使用するOビットとJ
B命令103が使用する桁上げビットの2つしか必要と
しないことを示している。他の条件コードのいずれも必
要でない。さらに、第3A図に示す条件付き分岐のどの
子孫も他の条件コードを必要としない。したがって、シ
ミュレータは、条件コードのセツティングを気にかける
ことなく、3つの命令102.103.104のブロッ
クを1つの単位として翻訳することができる。したがっ
て、対応する条件コードの保管を必要とする命令の数が
減少する。
件コードをセットする比較命令が後続の命令で6つの条
件コードのうちJE命令104が使用するOビットとJ
B命令103が使用する桁上げビットの2つしか必要と
しないことを示している。他の条件コードのいずれも必
要でない。さらに、第3A図に示す条件付き分岐のどの
子孫も他の条件コードを必要としない。したがって、シ
ミュレータは、条件コードのセツティングを気にかける
ことなく、3つの命令102.103.104のブロッ
クを1つの単位として翻訳することができる。したがっ
て、対応する条件コードの保管を必要とする命令の数が
減少する。
フラグ解析という従来のコンパイラ技術をプロセッサ・
シミュレータに適用することにより、後続の命令が条件
コードを使用するかどうかに関する基本的知識が得られ
る。第1のプロセッサ命令100を第2のプロセッサ命
令130に翻訳するコード発生機構29は、多くの場合
、条件コード情報を使って、単一の第2プロセッサ翻訳
命令を発生する。このため、各命令の後でフラグ・レジ
スタが最新状態に保持された場合に、不必要なサイクル
が減少しシミュレータの処理能力が向上する。
シミュレータに適用することにより、後続の命令が条件
コードを使用するかどうかに関する基本的知識が得られ
る。第1のプロセッサ命令100を第2のプロセッサ命
令130に翻訳するコード発生機構29は、多くの場合
、条件コード情報を使って、単一の第2プロセッサ翻訳
命令を発生する。このため、各命令の後でフラグ・レジ
スタが最新状態に保持された場合に、不必要なサイクル
が減少しシミュレータの処理能力が向上する。
フラグ解析の結果を使って制御の流れをシミュレートす
るための翻訳命令を減らすことに加えて、フラグ解析か
らの結果を、割込みポーリングの最小化法で使用するこ
とができる。
るための翻訳命令を減らすことに加えて、フラグ解析か
らの結果を、割込みポーリングの最小化法で使用するこ
とができる。
E4.命令アドレスの翻訳
本発明の好ましい実施例であるシミュレータは、IBM
PCATで使用されるIntel fAPX 80
286プロセッサ(第1のプロセッサ)の命令を、IB
M RT PCで使用されるROMPプロセッサ(第
2のプロセッサ)のシミュレータ命令に翻訳する。これ
らの翻訳は、本来シミュレートされる第1のプロセッサ
用に書かれたアブリケーンヨン・プログラムが制御権を
その同じアドレスに再び移すとき再使用できるように保
管される。制御権を移さない命令の場合は、その命令の
命令ポインタに命令の長さを加えることによって、次の
命令ポインタ(IP)の判定が行なわれる。順次シミュ
レータ命令の同様のシーケンスがシミュレータによって
発生される。命令は順に流れるので、対応する翻訳を探
し出す必要はない。
PCATで使用されるIntel fAPX 80
286プロセッサ(第1のプロセッサ)の命令を、IB
M RT PCで使用されるROMPプロセッサ(第
2のプロセッサ)のシミュレータ命令に翻訳する。これ
らの翻訳は、本来シミュレートされる第1のプロセッサ
用に書かれたアブリケーンヨン・プログラムが制御権を
その同じアドレスに再び移すとき再使用できるように保
管される。制御権を移さない命令の場合は、その命令の
命令ポインタに命令の長さを加えることによって、次の
命令ポインタ(IP)の判定が行なわれる。順次シミュ
レータ命令の同様のシーケンスがシミュレータによって
発生される。命令は順に流れるので、対応する翻訳を探
し出す必要はない。
別の種類の命令は制御権を静的に移す。すなわち、命令
ポインタから一定変位を加算または減算することによっ
て、新しい命令ポインタが計算される。これは相対分岐
と呼ばれている。シミュレータは、対応する翻訳に対す
る第2のプロセッサの相対分岐を発生する。
ポインタから一定変位を加算または減算することによっ
て、新しい命令ポインタが計算される。これは相対分岐
と呼ばれている。シミュレータは、対応する翻訳に対す
る第2のプロセッサの相対分岐を発生する。
命令セットは、コード・セグメント内で制御権を新しい
命令ポインタに移す3つの命令を含み、新しい命令ポイ
ンタは、実行時にレジスタまたはメモリからロードされ
るので、静的に決定することができない。サブルーチン
からの戻り(RET)命令がその1つである。この命令
がシミュレートされる速度がシミュレータの全体的処理
能力に影響を及ぼし、処理システムが戻り命令を実行す
るのに他のどの命令よりも多くの時間がかかる場合には
特にそうである。他の2つの命令は間接飛越し命令及び
間接呼出し命令である(レジスタまたはメモリ)。これ
らの命令は戻り命令と同様に扱われる。
命令ポインタに移す3つの命令を含み、新しい命令ポイ
ンタは、実行時にレジスタまたはメモリからロードされ
るので、静的に決定することができない。サブルーチン
からの戻り(RET)命令がその1つである。この命令
がシミュレートされる速度がシミュレータの全体的処理
能力に影響を及ぼし、処理システムが戻り命令を実行す
るのに他のどの命令よりも多くの時間がかかる場合には
特にそうである。他の2つの命令は間接飛越し命令及び
間接呼出し命令である(レジスタまたはメモリ)。これ
らの命令は戻り命令と同様に扱われる。
たとえば、第1のプロセッサは2つのレジスタを使って
命令にアドレスする。コード・セグメント・レジスタ3
3(第3B図)はメモリ120(第3C図)の64にブ
ロック119の位置を記述する。命令ポインタ・レジス
タ31(第3B図)はそのコード・セグメント33に入
るためのオフセットである。命令ポインタ31は、命令
100が64にバイトのどこにあるかを記述する。第1
のプロセッサは、命令ポインタ31(第3C図)を用い
てコード・セグメント33内を指定することにより命令
にアドレスする。
命令にアドレスする。コード・セグメント・レジスタ3
3(第3B図)はメモリ120(第3C図)の64にブ
ロック119の位置を記述する。命令ポインタ・レジス
タ31(第3B図)はそのコード・セグメント33に入
るためのオフセットである。命令ポインタ31は、命令
100が64にバイトのどこにあるかを記述する。第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段
階手法は連続的に編成されている。
を動的に移す3つの命令をシミュレートする。この3段
階手法は連続的に編成されている。
最も速(、かつ最も公算の大きなケースが最初に実行さ
れる。最初の手法が失敗した場合に第2の手法が使用さ
れる。第3の手法は最も遅い手法であり、命令ポインタ
をシミュレータ機械のアドレスに首尾よく変換すること
を保証する。第6図には第2及び第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プロセッサのレジスタの特定の値を取る。
呼ばれる第1プロセッサのレジスタの特定の値を取る。
これらの属性翻訳プログラムで使って、特定の場合に一
層効率的なコードを発生させることができる。たとえば
、スタック・アラインメントが偶数の場合、ハーフワー
ド命令を使ってデータをスタックとの間で転送すること
ができる。
層効率的なコードを発生させることができる。たとえば
、スタック・アラインメントが偶数の場合、ハーフワー
ド命令を使ってデータをスタックとの間で転送すること
ができる。
さもない場合は、2バイト命令を使用しなければならな
い。第1プロセッサの命令100ブロツク用のコード・
セグメント33の値及びスタック・ポインタ35のアラ
インメントがそのブロックの属性と呼ばれる。コード・
セグメント33及びスタック・ポインタ35は共に16
ビツトのフィールドである。属性はコード・ブロック・
ヘッダ36及びアドレス・マツピング翻訳ルック・アサ
イド・バッファ34中にある。異なる属性を有する第1
プロセッサ命令100の翻訳130は別々に保持される
。
い。第1プロセッサの命令100ブロツク用のコード・
セグメント33の値及びスタック・ポインタ35のアラ
インメントがそのブロックの属性と呼ばれる。コード・
セグメント33及びスタック・ポインタ35は共に16
ビツトのフィールドである。属性はコード・ブロック・
ヘッダ36及びアドレス・マツピング翻訳ルック・アサ
イド・バッファ34中にある。異なる属性を有する第1
プロセッサ命令100の翻訳130は別々に保持される
。
この方法は命令ポインタ31の下位13ビツト32を受
は取り、ステップ144で、それを一定の仮想アドレス
で64にバイトの境界に整合されたテーブル34に入る
ためのインデックスとして使用する。その項目は、2ワ
ードを含む。最初のワードは属性を含む。最初の16ビ
ツトC8145はコード・セグメント33の値であり、
次のビット47は、$1と表示されたスタック・ポイン
タ35のアラインメントを含み、vlと表示された次の
ビット46は有効ビットであり、その項目が有効でない
場合は01有効な場合は1である。使用されないビット
51が幾つかある。32ビツト・ワードの最後の3ビツ
ト48は、IPlと表示された命令ポインタ31の上位
3ビツト49である。
は取り、ステップ144で、それを一定の仮想アドレス
で64にバイトの境界に整合されたテーブル34に入る
ためのインデックスとして使用する。その項目は、2ワ
ードを含む。最初のワードは属性を含む。最初の16ビ
ツトC8145はコード・セグメント33の値であり、
次のビット47は、$1と表示されたスタック・ポイン
タ35のアラインメントを含み、vlと表示された次の
ビット46は有効ビットであり、その項目が有効でない
場合は01有効な場合は1である。使用されないビット
51が幾つかある。32ビツト・ワードの最後の3ビツ
ト48は、IPlと表示された命令ポインタ31の上位
3ビツト49である。
したがって、この方法は、ステップ144で、アドレス
・マツピング・テーブル34を命令ポインタ31の下位
13ビツト32で指示し、ステップ145で、最初の1
6ビツトC81,45をコード・セグメント33の現在
値と比較するというものである。このことは、命令が同
じコード・セグメント中にあり、前回の命令が最近実行
された可能性があることを示す。それが一致する場合、
ステップ146で、スタック・ポインタ35の下位ビッ
ト41がSl、47と比較されて、翻訳の際にスタック
のアラインメントについて立てられた仮定が無視されて
いないことを確認する。これが一致し、■1.46がオ
ンで項目が有効なことを示し、IPl、48が命令ポイ
ンタ31の上位3ビツト49と一致する場合は、アドレ
ス・マツピング翻訳ルック・アサイド・テーブルで的中
があったことになる。すなわち、現在の命令は、以前に
に翻訳された第2プロセッサ命令で正確に識別される。
・マツピング・テーブル34を命令ポインタ31の下位
13ビツト32で指示し、ステップ145で、最初の1
6ビツトC81,45をコード・セグメント33の現在
値と比較するというものである。このことは、命令が同
じコード・セグメント中にあり、前回の命令が最近実行
された可能性があることを示す。それが一致する場合、
ステップ146で、スタック・ポインタ35の下位ビッ
ト41がSl、47と比較されて、翻訳の際にスタック
のアラインメントについて立てられた仮定が無視されて
いないことを確認する。これが一致し、■1.46がオ
ンで項目が有効なことを示し、IPl、48が命令ポイ
ンタ31の上位3ビツト49と一致する場合は、アドレ
ス・マツピング翻訳ルック・アサイド・テーブルで的中
があったことになる。すなわち、現在の命令は、以前に
に翻訳された第2プロセッサ命令で正確に識別される。
ステップ175で、次のワード52は、第1プロセッサ
命令100をンミュレートする第2プロセッサ命令13
0の32ビツト・アドレスである。はずれであった場合
、すなわち、上記のいずれかの比較が一致しなかった場
合は、以下の第3の手法で説明するように、ハツシュ・
テーブル37にアクセスすることによって翻訳は進行し
、アドレス・マツピング翻訳ルック・アサイド・バッフ
ァ34の項目が将来参照できるように新しい属性及び新
しい分岐アドレスで更新される。
命令100をンミュレートする第2プロセッサ命令13
0の32ビツト・アドレスである。はずれであった場合
、すなわち、上記のいずれかの比較が一致しなかった場
合は、以下の第3の手法で説明するように、ハツシュ・
テーブル37にアクセスすることによって翻訳は進行し
、アドレス・マツピング翻訳ルック・アサイド・バッフ
ァ34の項目が将来参照できるように新しい属性及び新
しい分岐アドレスで更新される。
第3の手法も第6図及び第7図に示されている。
コード・セグメント33の中間の6ビツト38が、コー
ド・セグメント33の下位5ピッ;・39とスタック・
ポインタ35の下位ビット41を連結したものとXOR
演算さ些る。これにより、ステップ148で、コード・
ブロック・ハツシュ・テーブル37に入るための6ビツ
トのインデックスが得られる。コード・ブロック・ハツ
シュ・テーブルは64個の項目を含む。ステップ174
で、各項目S3は、その項目が何もなく、新しい翻訳が
必要なことを暗示する空文字を指すか、または、コード
・ブロック・ヘッダ36を指すポインタを含む。
ド・セグメント33の下位5ピッ;・39とスタック・
ポインタ35の下位ビット41を連結したものとXOR
演算さ些る。これにより、ステップ148で、コード・
ブロック・ハツシュ・テーブル37に入るための6ビツ
トのインデックスが得られる。コード・ブロック・ハツ
シュ・テーブルは64個の項目を含む。ステップ174
で、各項目S3は、その項目が何もなく、新しい翻訳が
必要なことを暗示する空文字を指すか、または、コード
・ブロック・ヘッダ36を指すポインタを含む。
各ノード・ブロック・ヘッダ36は特定の属性に対して
使用可能な第2のプロセッサの翻訳を記述する。コード
・ブロック・ヘッダ36の最初のフィールド55は、コ
ード・ブロック・ハツシュ・テーブル37中の同じ項目
53にハツシュした次のコード・ブロック・ヘッダ56
を指すポインタを含む。次のフィールド57はコード・
ブロックの属性を含む。その属性は、C82と表示され
たブロック58中にコード・セグメント33を含み、ブ
ロックS2.59中にスタック・ポインタ35のアライ
ンメントを含む。話を簡単にするため、有効ビットVl
、46を■2.60として繰り返す。ステップ149で
、コード・ブロック・ヘッダ36で、実行時に実行され
る命令と同じ属性を有するコード・ブロック・ヘッダ3
6が探索される。次のフィールド82.63は、それら
の属性を有する翻訳がある最小及び最大第1プロセッサ
・アドレスを含む。次のフィールド64は、特定の属性
ををする翻訳が存在するすべてのコード・ブロック83
を記述するツリーのルートを指すポインタである。
使用可能な第2のプロセッサの翻訳を記述する。コード
・ブロック・ヘッダ36の最初のフィールド55は、コ
ード・ブロック・ハツシュ・テーブル37中の同じ項目
53にハツシュした次のコード・ブロック・ヘッダ56
を指すポインタを含む。次のフィールド57はコード・
ブロックの属性を含む。その属性は、C82と表示され
たブロック58中にコード・セグメント33を含み、ブ
ロックS2.59中にスタック・ポインタ35のアライ
ンメントを含む。話を簡単にするため、有効ビットVl
、46を■2.60として繰り返す。ステップ149で
、コード・ブロック・ヘッダ36で、実行時に実行され
る命令と同じ属性を有するコード・ブロック・ヘッダ3
6が探索される。次のフィールド82.63は、それら
の属性を有する翻訳がある最小及び最大第1プロセッサ
・アドレスを含む。次のフィールド64は、特定の属性
ををする翻訳が存在するすべてのコード・ブロック83
を記述するツリーのルートを指すポインタである。
このツリーの各ノード、すなわち、コード・ブロック8
3は、第1プロセッサ命令ポインタ31の範囲内に第2
プロセッサ翻訳130がある最小及び最大命令ポインタ
65.66を含む。それぞれ左及び右の子67.68を
指すポインタがある。
3は、第1プロセッサ命令ポインタ31の範囲内に第2
プロセッサ翻訳130がある最小及び最大命令ポインタ
65.66を含む。それぞれ左及び右の子67.68を
指すポインタがある。
左の子67は、より小さなまたは等しい最小命令ポイン
タ31を存するサブツリー69を指す。右の子68は、
より大きな最小命令ポインタ31を有するサブツリー7
0を指す。ステップ151で、ツリーのノードを探索し
て、現在の命令アドレスが入る命令アドレス範囲を有す
るサブツリーを見つける。次のフィールド71は第2プ
ロセッサの翻訳130のコード・ブロック83の終わり
73を指すポインタである。
タ31を存するサブツリー69を指す。右の子68は、
より大きな最小命令ポインタ31を有するサブツリー7
0を指す。ステップ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のメモリは種類及
び内容により分類することができる。領域■はランダム
・アクセス・メモリ(RAM)152である。RAM1
52の内容は命令とデータである。CPU93はこのメ
モリ領域に対して読み書きを行なうことができる。
び内容により分類することができる。領域■はランダム
・アクセス・メモリ(RAM)152である。RAM1
52の内容は命令とデータである。CPU93はこのメ
モリ領域に対して読み書きを行なうことができる。
第2のメモリ領域はアダプタ・メモリ(ビデオ)153
と呼ばれる。CPU93は明示的なlN10UT命令を
使って、線167として示すように、表示装置などの出
力装置92に接続された入出力アダプタ91に直接アク
セスすることができ、または、メモリ命令を使って、ビ
デオ・バッファ153を介して入出力アダプタ91にア
クセスすることができる。装置92に出力するためビデ
オ・バッファ153に対してメモリ命令を使用すること
は、それがメモリ位置を介するものの、実際にアダプタ
に入る入出力なので、メモリ・マツプ入出力と呼ばれる
。CPUがをするメモリに入る命令は明示的入出力(l
N10UT命令)を実行するための命令よりも多いので
、メモリ・マツプ入出力を使うとより広範な命令の使用
が可能になる。
と呼ばれる。CPU93は明示的なlN10UT命令を
使って、線167として示すように、表示装置などの出
力装置92に接続された入出力アダプタ91に直接アク
セスすることができ、または、メモリ命令を使って、ビ
デオ・バッファ153を介して入出力アダプタ91にア
クセスすることができる。装置92に出力するためビデ
オ・バッファ153に対してメモリ命令を使用すること
は、それがメモリ位置を介するものの、実際にアダプタ
に入る入出力なので、メモリ・マツプ入出力と呼ばれる
。CPUがをするメモリに入る命令は明示的入出力(l
N10UT命令)を実行するための命令よりも多いので
、メモリ・マツプ入出力を使うとより広範な命令の使用
が可能になる。
メモリのビデオ頭囲の内容は出力データ、すなわち、メ
モリ・マツプ入出力である。
モリ・マツプ入出力である。
第3の種類のメモリは、読取り専用記憶装置(RO8)
154と呼ばれる領域■である。これは読取り専用メモ
リ(ROM)とも呼ばれる。RAM152の内容は大抵
は命令であるが、データがあってもよい。どちらの場合
にも、RO8の内容は決して変更されない。
154と呼ばれる領域■である。これは読取り専用メモ
リ(ROM)とも呼ばれる。RAM152の内容は大抵
は命令であるが、データがあってもよい。どちらの場合
にも、RO8の内容は決して変更されない。
IBM PCATなどの処理システムのアドレス空間1
50は論理的にこれら3つの領域に分かれる。最初の領
域は640にバイトのプロセッサ読み書き記憶領域、す
なわち、RAM152である。2番目の領域は、入出力
アダプタ、すなわち、ビデ第153用に予約された25
6にバイトの領域である。これらの領域には、装置及び
装置依存ROS用のデータ・バッファが含まれる。3番
目の6頁域は128にバイトのプロセッサRO3154
領域である。このRO8はBrO3及びBASICを含
む。BI○S領域155に続いて1メガ領域166より
上にメモリがある。この好ましい実施例のシミュレータ
は286保護モードをサポートしないので、メモリ15
0のこの領域176は設けられない。
50は論理的にこれら3つの領域に分かれる。最初の領
域は640にバイトのプロセッサ読み書き記憶領域、す
なわち、RAM152である。2番目の領域は、入出力
アダプタ、すなわち、ビデ第153用に予約された25
6にバイトの領域である。これらの領域には、装置及び
装置依存ROS用のデータ・バッファが含まれる。3番
目の6頁域は128にバイトのプロセッサRO3154
領域である。このRO8はBrO3及びBASICを含
む。BI○S領域155に続いて1メガ領域166より
上にメモリがある。この好ましい実施例のシミュレータ
は286保護モードをサポートしないので、メモリ15
0のこの領域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の処理シ
ステム内に常駐する640にバイトのメモリ152があ
り、それに続いてビデオ領域153、RO3(読取り専
用記憶装置)用の領域154、BiO2用の領域155
がある。最初のメモリ・セグメント152の前に、BI
O8領域155が複製されている。これは、オフセット
が循環してRAM 152に戻るように、アプリケーシ
ョンがセグメント・レジスタをメモリ150の20M1
55領域にロードすることができる場合に、マツピング
を簡単にするため行なわれたものである。したがって、
これらの領域の16進アドレス172−175は、第1
の処理システムのメモリ150内の領域のアドレスから
64 Kだけずれて、セグメントOX9と呼ばれる共用
メモリ・セグメント190に入る。
ステム内に常駐する640にバイトのメモリ152があ
り、それに続いてビデオ領域153、RO3(読取り専
用記憶装置)用の領域154、BiO2用の領域155
がある。最初のメモリ・セグメント152の前に、BI
O8領域155が複製されている。これは、オフセット
が循環してRAM 152に戻るように、アプリケーシ
ョンがセグメント・レジスタをメモリ150の20M1
55領域にロードすることができる場合に、マツピング
を簡単にするため行なわれたものである。したがって、
これらの領域の16進アドレス172−175は、第1
の処理システムのメモリ150内の領域のアドレスから
64 Kだけずれて、セグメントOX9と呼ばれる共用
メモリ・セグメント190に入る。
その結果、シミュレータを曇かせる処理システム内の仮
想メモリ・セグメントは、領域■152と及び領域■1
54の2つのコピーとからなるすべてのPCATプロセ
ッサ記憶域のイメージを含むため専用となる。第2の処
理システムに第1の処理システムからの出力装置が接続
されているときは、領域■153は存在しない。第1の
処理システムの出力装置が接続されていない場合は、領
域■153のイメージも存在する。
想メモリ・セグメントは、領域■152と及び領域■1
54の2つのコピーとからなるすべてのPCATプロセ
ッサ記憶域のイメージを含むため専用となる。第2の処
理システムに第1の処理システムからの出力装置が接続
されているときは、領域■153は存在しない。第1の
処理システムの出力装置が接続されていない場合は、領
域■153のイメージも存在する。
メモリ・セグメント190内のアドレス位置172−1
76は、第1の処理システムの実際のメモリ・イメージ
である。この領域172−176は、シミュレートされ
る第1の処理システム及び使用可能なメモリのアーキテ
クチャのように見える。
76は、第1の処理システムの実際のメモリ・イメージ
である。この領域172−176は、シミュレートされ
る第1の処理システム及び使用可能なメモリのアーキテ
クチャのように見える。
メモリ・イメージ172−176に加えて、翻訳された
コード130が領域157に記憶される。
コード130が領域157に記憶される。
シミュレートされる第1の処理システムの命令100を
調べるフラグ解析30(第3A図、第3B図、第3C図
、第3D図)によって、翻訳された命令が発生された後
で、翻訳された命令130が領域157に記憶される。
調べるフラグ解析30(第3A図、第3B図、第3C図
、第3D図)によって、翻訳された命令が発生された後
で、翻訳された命令130が領域157に記憶される。
共用メモリ・セグメント190の次の領域158は処理
量通信領域、及び実行時に呼び出されるルーチンが記憶
される実行時環境領域である。
量通信領域、及び実行時に呼び出されるルーチンが記憶
される実行時環境領域である。
セグメントO×9と呼ばれる仮想共用メモリ・セグメン
トに加えて、シミュレータを働かせる処理システムは、
OxFと呼ばれる入出力バス・メモリ用の特別なセグメ
ント181を予約する。第2の処理システムに第1の処
理システムの出力装置が接続されている場合、データは
第2の処理システムのセグメント0×Fに書き込まれる
。領域■153内に含まれる第1の処理システムのアド
レス位置は、第2の処理システムのセグメント0×9.
190またはセグメント0XF1181内に対応するメ
モリ位置を有する。
トに加えて、シミュレータを働かせる処理システムは、
OxFと呼ばれる入出力バス・メモリ用の特別なセグメ
ント181を予約する。第2の処理システムに第1の処
理システムの出力装置が接続されている場合、データは
第2の処理システムのセグメント0×Fに書き込まれる
。領域■153内に含まれる第1の処理システムのアド
レス位置は、第2の処理システムのセグメント0×9.
190またはセグメント0XF1181内に対応するメ
モリ位置を有する。
本発明のシミュレータのシステム及び方法は、再配置テ
ーブルを使って、第1の処理システムのメモリ150を
第2の処理システムのセグメント0×9.190または
セグメントOXF、181のいずれかにマツプするもの
である。PCATなどの第1の処理システムは2つの構
成要素、すなわち、セグメントとオフセットによってメ
モリ位置にアドレスする。PCATでは、そのセグメン
トは、64にのメモリ・ブロックを指す16ビツトの値
である。オフセットも16ビツトであり、セグメント内
の変位を示す。セグメントのアドレスは、セグメントの
値に16を乗じることによって計算される。
ーブルを使って、第1の処理システムのメモリ150を
第2の処理システムのセグメント0×9.190または
セグメントOXF、181のいずれかにマツプするもの
である。PCATなどの第1の処理システムは2つの構
成要素、すなわち、セグメントとオフセットによってメ
モリ位置にアドレスする。PCATでは、そのセグメン
トは、64にのメモリ・ブロックを指す16ビツトの値
である。オフセットも16ビツトであり、セグメント内
の変位を示す。セグメントのアドレスは、セグメントの
値に16を乗じることによって計算される。
このシミュレータは、それぞれ32ビツトを有する16
個の項目201−218を備えたテーブル195を使っ
て、PCATのメモリ・アドレスをIBM RT P
Cの32ビツト・メモリ・アドレスにマツプする。PC
ATメモリ・アドレスのセグメントの上位4ビツトは、
テーブルの16個の項目の1つを識別する。シミュレー
タはメモリ・アドレス計算を2つの部分に分ける。まず
、セグメント・レジスタがロードされるとき、シミュレ
ータはセグメントに、16を乗じ、それをセグメントの
上位4ビツトによって指定されるテーブル内の項目に加
える。次に、命令がメモリに対して読取りまたは書込み
を行なうとき、前のステップで計算された32ビツトの
値に16ビツトのオフセットが加えられる。前記の32
ビツトの値は、第2の処理システムのメモリにアクセス
するために使用されるアドレスである。
個の項目201−218を備えたテーブル195を使っ
て、PCATのメモリ・アドレスをIBM RT P
Cの32ビツト・メモリ・アドレスにマツプする。PC
ATメモリ・アドレスのセグメントの上位4ビツトは、
テーブルの16個の項目の1つを識別する。シミュレー
タはメモリ・アドレス計算を2つの部分に分ける。まず
、セグメント・レジスタがロードされるとき、シミュレ
ータはセグメントに、16を乗じ、それをセグメントの
上位4ビツトによって指定されるテーブル内の項目に加
える。次に、命令がメモリに対して読取りまたは書込み
を行なうとき、前のステップで計算された32ビツトの
値に16ビツトのオフセットが加えられる。前記の32
ビツトの値は、第2の処理システムのメモリにアクセス
するために使用されるアドレスである。
シミュレータの始動時に、再配置テーブル195が初期
設定される。最初の10項目201−210はRAM
152に対応し、第2の処理システムのセグメントOX
9を指すように0X9001ooooに初期設定される
。この初期設定値は、RAM 152の前にあるセグメ
ントOX9.190にマツプされるBIO8155の最
初のインスタンス用のスペースをもたらす64にのオフ
セットを含むことに留意されたい。BIO8155にア
ドレスするセグメントに対応する最後の項目216は、
0X90000000−OXFOOOOまたはO×8F
F1000oで初期設定される。
設定される。最初の10項目201−210はRAM
152に対応し、第2の処理システムのセグメントOX
9を指すように0X9001ooooに初期設定される
。この初期設定値は、RAM 152の前にあるセグメ
ントOX9.190にマツプされるBIO8155の最
初のインスタンス用のスペースをもたらす64にのオフ
セットを含むことに留意されたい。BIO8155にア
ドレスするセグメントに対応する最後の項目216は、
0X90000000−OXFOOOOまたはO×8F
F1000oで初期設定される。
このようにセグメントに16を乗じて加えると、その結
果得られる値は0X90000000になり、それによ
ってBIO8155がセグメントO×9.190の始め
にマツプされる。11番目ないし15番目の項目211
−215はox4000000または0X900100
00で初期設定されて、第1の処理システムの対応する
出力装置が接続されているかどうかに応じて、セグメン
ト0XF1181またはセグメントOX9.190のい
ずれかを指す。
果得られる値は0X90000000になり、それによ
ってBIO8155がセグメントO×9.190の始め
にマツプされる。11番目ないし15番目の項目211
−215はox4000000または0X900100
00で初期設定されて、第1の処理システムの対応する
出力装置が接続されているかどうかに応じて、セグメン
ト0XF1181またはセグメントOX9.190のい
ずれかを指す。
状況制御セグメント、すなわち、セグメント0×8.1
80が、オペレーティング・システムの別の共用メモリ
・セグメントに記憶される。状況制御セグメント180
はセグメントOX9.190に対する第1の処理システ
ムのメモリの内容のタイプを記録する。この情報は、シ
ミュレータが、メモリ位置がデータ、命令コードを含む
のか、それともビデオ項目なのかを判定するために使用
する。
80が、オペレーティング・システムの別の共用メモリ
・セグメントに記憶される。状況制御セグメント180
はセグメントOX9.190に対する第1の処理システ
ムのメモリの内容のタイプを記録する。この情報は、シ
ミュレータが、メモリ位置がデータ、命令コードを含む
のか、それともビデオ項目なのかを判定するために使用
する。
以上、メモリに対する読取りまたは書込みを行なう命令
をシミュレートするときに使用するアドレスを、シミュ
レータがどのように計算するかについて説明した。メモ
リに書込みを行なう場合は、特別な処置が必要となるこ
とがある。
をシミュレートするときに使用するアドレスを、シミュ
レータがどのように計算するかについて説明した。メモ
リに書込みを行なう場合は、特別な処置が必要となるこ
とがある。
命令がメモリに記憶される場合、シミュレータは、その
命令が翻訳済みであるかどうかを記録する。翻訳された
コードが常に正しいことを確認するため、命令変更の検
査が行なわれる。アプリケーションが命令変更を行なっ
た場合は、元のコード命令に対する翻訳されたコードが
除去され、新しい命令がシミュレータのプロセッサの新
しい命令シーケンスに翻訳される。命令の正しい翻訳を
実行させるための他の処置を取ることもできる。
命令が翻訳済みであるかどうかを記録する。翻訳された
コードが常に正しいことを確認するため、命令変更の検
査が行なわれる。アプリケーションが命令変更を行なっ
た場合は、元のコード命令に対する翻訳されたコードが
除去され、新しい命令がシミュレータのプロセッサの新
しい命令シーケンスに翻訳される。命令の正しい翻訳を
実行させるための他の処置を取ることもできる。
同様に、出力装置への出力をシミュレータがさらに処理
する必要があるかどうか判定するために、ビデオ更新の
検査が必要である。これは、第1の処理システムの出力
装置がシミュレータをのかせる第2の処理システムに接
続されておらず、したがって、第1処理システムの出力
装置をシミュレートしなければならない場合に行なわれ
る。メモリ・マツプ入出力の場合は、出力データを表わ
す特別なハードウェアが変更されるかどうかを記憶時に
検出しなければならない。
する必要があるかどうか判定するために、ビデオ更新の
検査が必要である。これは、第1の処理システムの出力
装置がシミュレータをのかせる第2の処理システムに接
続されておらず、したがって、第1処理システムの出力
装置をシミュレートしなければならない場合に行なわれ
る。メモリ・マツプ入出力の場合は、出力データを表わ
す特別なハードウェアが変更されるかどうかを記憶時に
検出しなければならない。
メモリに記憶するとき、セグメントO×8.180を使
って、命令またはメモリ・マツプ入出力について特別な
処置が必要かどうか判定する。セグメントOX8.18
0は、セグメント・レジスタOX9.190とバイトご
との対応関係を有する。セグメントOX8の各バイトは
、セグメントOX9.190内の対応するバイトの内容
の種類を示す。セグメントOX9.190の対応バイト
が計算データである場合、セグメント0×8.180の
バイトはOを含む。セグメント0×9の対応バイトが命
令を含む場合は、セグメント0×8.180のバイトは
1.2.4または6を含む。第1の処理システムの出力
装置が接続されていない場合は、セグメント0×9のビ
デオ領域153に対応するセグメントO×8.180の
各バイトは16を含む。16の値は構成中にシミュレー
タ始動時にセグメントO×8.180にロードされる。
って、命令またはメモリ・マツプ入出力について特別な
処置が必要かどうか判定する。セグメントOX8.18
0は、セグメント・レジスタOX9.190とバイトご
との対応関係を有する。セグメントOX8の各バイトは
、セグメントOX9.190内の対応するバイトの内容
の種類を示す。セグメントOX9.190の対応バイト
が計算データである場合、セグメント0×8.180の
バイトはOを含む。セグメント0×9の対応バイトが命
令を含む場合は、セグメント0×8.180のバイトは
1.2.4または6を含む。第1の処理システムの出力
装置が接続されていない場合は、セグメント0×9のビ
デオ領域153に対応するセグメントO×8.180の
各バイトは16を含む。16の値は構成中にシミュレー
タ始動時にセグメントO×8.180にロードされる。
第1の処理システムの出力装置を第2の処理システムに
接続すると構成中に決定された場合、セグメント0×8
.180の対応バイトは0になる。
接続すると構成中に決定された場合、セグメント0×8
.180の対応バイトは0になる。
このことは、やはり構成中に初期設定された項目211
−215を有する再配置テーブル195が、第1の処理
システムからの出力データをセグメン)OXFl 18
1にマツプし、第1の処理システムの出力装置が接続さ
れているので、シミュレータによるそれ以上の処置は必
要でないことを示す。
−215を有する再配置テーブル195が、第1の処理
システムからの出力データをセグメン)OXFl 18
1にマツプし、第1の処理システムの出力装置が接続さ
れているので、シミュレータによるそれ以上の処置は必
要でないことを示す。
メモリへの記憶位置がセグメントO×9であろうとセグ
メントOXFであろうと、アドレスの32ビツト値が0
X8OFFFFFFとAND演算されて、セグメントO
X8.180の対応アドレスを生じる。
メントOXFであろうと、アドレスの32ビツト値が0
X8OFFFFFFとAND演算されて、セグメントO
X8.180の対応アドレスを生じる。
第10図に示す命令シーケンスが、メモリを変更するこ
とができる第1の処理システムの命令の各翻訳に対して
使用される。セグメント・レジスタは、メモリ・バイト
のアドレスを0X8OFFFFFFとAND演算して状
況バイトのアドレスを計算できるように選ばれているこ
とに留意されたい。その結果、セグメントOXF及びO
X9は共にセグメントO×8にマツプされる。第10図
のこれら4つの命令が、第1の処理システムの命令をシ
ミュレータするために使用される命令と重ね合わされる
とき、メモリの更新を検査して、それが特別な処理を必
要とするかどうか調べるために5サイクルしか必要でな
い。しかし、メモリヘの記憶の後で特別な処置が必要か
どうかを判定するために、さらに記憶のアドレスがセグ
メントO×Fに対するものであったかどうかを判定する
ことが必要になることがある。
とができる第1の処理システムの命令の各翻訳に対して
使用される。セグメント・レジスタは、メモリ・バイト
のアドレスを0X8OFFFFFFとAND演算して状
況バイトのアドレスを計算できるように選ばれているこ
とに留意されたい。その結果、セグメントOXF及びO
X9は共にセグメントO×8にマツプされる。第10図
のこれら4つの命令が、第1の処理システムの命令をシ
ミュレータするために使用される命令と重ね合わされる
とき、メモリの更新を検査して、それが特別な処理を必
要とするかどうか調べるために5サイクルしか必要でな
い。しかし、メモリヘの記憶の後で特別な処置が必要か
どうかを判定するために、さらに記憶のアドレスがセグ
メントO×Fに対するものであったかどうかを判定する
ことが必要になることがある。
各バイトに対応する状況バイトをメモリ・イメージ19
0またはメモリ・マツプ入出力181内に保持すること
により、ビデオ更新、メモリ・マツプ入出力及び命令変
更を検出することができる。
0またはメモリ・マツプ入出力181内に保持すること
により、ビデオ更新、メモリ・マツプ入出力及び命令変
更を検出することができる。
状況セグメント8.180内のフラグは、次のようにメ
モリの内容の種類を示す。
モリの内容の種類を示す。
0=データ
1=命命令口点
2=命令の後続バイト
3:組合せ命令(第1バイトは有効入口点でない)
8=この命令上の区切り点セット
16=ビデオ
上記のように、0でない値は、シミュレータによる処置
がさらに必要なことを示すことがある。
がさらに必要なことを示すことがある。
「1」は、それが入口点であり、第1の処理システムの
命令の翻訳が2進ツリー中にあることを示す。「2」は
、それが後続のものである、すなわち2バイト以上の長
さの第1のプロセッサの命令がシミュレートまたは翻訳
されることを意味する。
命令の翻訳が2進ツリー中にあることを示す。「2」は
、それが後続のものである、すなわち2バイト以上の長
さの第1のプロセッサの命令がシミュレートまたは翻訳
されることを意味する。
このバイトはこのとき次のバイトに対応する。これは、
第1の処理プロセッサの命令を表わすために2バイト以
上が必要であるという事実を考慮したものである。「4
」のフラグは、組合せが行なわれることを示す。組合せ
とは、グラフの解析の結果、幾つかの組み合わされた第
1のプロセッサの命令をシミュレートする方が第1のプ
ロセッサの各命令を別々に翻訳するよりも翻訳されたシ
ミュレータ命令が少なくてすむと判定されたという意味
である。たとえば、第3A図のPUSH命令105とP
OP命令108が組み合わされた。その結果、CSSレ
ジスフの値がDSレジスタに移された。これら2つの命
令105.106tが行なうことはそれだけであるとフ
ラグ解析から判定されるので、2つの命令を1つに組み
合わせて、2つの命令を別々に実行するよりも速く実行
することができる。
第1の処理プロセッサの命令を表わすために2バイト以
上が必要であるという事実を考慮したものである。「4
」のフラグは、組合せが行なわれることを示す。組合せ
とは、グラフの解析の結果、幾つかの組み合わされた第
1のプロセッサの命令をシミュレートする方が第1のプ
ロセッサの各命令を別々に翻訳するよりも翻訳されたシ
ミュレータ命令が少なくてすむと判定されたという意味
である。たとえば、第3A図のPUSH命令105とP
OP命令108が組み合わされた。その結果、CSSレ
ジスフの値がDSレジスタに移された。これら2つの命
令105.106tが行なうことはそれだけであるとフ
ラグ解析から判定されるので、2つの命令を1つに組み
合わせて、2つの命令を別々に実行するよりも速く実行
することができる。
「8」のフラグは、区切り点がセットされていることを
示す。このため、デバッグ・プログラムがシミュレータ
に作用することが可能になる。16のフラグは、情報が
ビデオ・データであることを示す。シミュレータはこの
ようにして、アプリケーションが終了してビデオ画面を
更新したことを検出する。
示す。このため、デバッグ・プログラムがシミュレータ
に作用することが可能になる。16のフラグは、情報が
ビデオ・データであることを示す。シミュレータはこの
ようにして、アプリケーションが終了してビデオ画面を
更新したことを検出する。
上記の方法は、長くて時間のかかる検査を実行しメモリ
の更新を処理して戻るサブルーチンへの分岐が必要であ
った従来のシミュレータに比べて、処理能力が増大する
。サブルーチンへの分岐だけで、通常少なくとも5サイ
クル必要である。メモリへの記憶は非常に頻繁な動作で
あるので、これは有効である。したがって、メモリへの
記憶というオーバーヘッドが少しでも減少するとシミュ
レータの効率が大幅に増大する。
の更新を処理して戻るサブルーチンへの分岐が必要であ
った従来のシミュレータに比べて、処理能力が増大する
。サブルーチンへの分岐だけで、通常少なくとも5サイ
クル必要である。メモリへの記憶は非常に頻繁な動作で
あるので、これは有効である。したがって、メモリへの
記憶というオーバーヘッドが少しでも減少するとシミュ
レータの効率が大幅に増大する。
F0発明の効果
本発明によれば、メモリを更新する最初のプロセッサ命
令を調べて、その命令が後続の命令を変更するかどうか
、またはビデオ・バッファ変更を行なうかどうかを判定
している。したがってこのような変更を検出するために
必要とされるサイクル数、すなわち命令の数を減少させ
ることができる。
令を調べて、その命令が後続の命令を変更するかどうか
、またはビデオ・バッファ変更を行なうかどうかを判定
している。したがってこのような変更を検出するために
必要とされるサイクル数、すなわち命令の数を減少させ
ることができる。
第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・・・・オペレーティ
ング・システム(AIX)、13・・・・BIO811
5・・・・読取り専用記憶装置、16・・・・共用メモ
リ・セグメント、18・・・・オペレーティング・シス
テムCD08)、19・・・・アプリケーション・プロ
グラム。 出願人 インターナショナル・ビジネス・マシーンズ
・コーポレーシタン 復代理人 弁理士 澤 1) 俊 夫ズ七り一一
一120 ¥32 目 3A 、え+)−5”−20 MP AL、9 020゜ : 0105 E 0200 : 0107 EC x :0109 HL :0108 BX、AX 02■ : 0100 Ov 口02コ 、AX : olIO IT 劣 B 圀 PC〆尤すを裳叉丁↓ことメζ−eJ BO286の令
命の)齢19について、厚モの4−・4≧シーケシス・
でン梵I:横!8でh1サイフX/ NIUOR1
,R2,0X8OFF2プイクLLCR1,0(R11 ’T47rしEXTSRI、R ++jイクル BNE プフ゛ルーチンR2−でツ
゛メント9ぽたIば1中のPCメモリ・7ドレズR1<
m妬九へ゛イト9アドレス p+<−9:1儂 4に尤fO勇1rJ20tCxy+tPtH<2 NO
N−ZEROML b”o ?4 し+4−レ1j Y
7’ルー+ン1:41Lr”lK1「C0PYR1GI
−rr 18114CORPORATION 1fi
v;10 固 47七うaで−9にした縛金ri畑りす酌停ゴ〒付き斜
交CO雇IGH丁 tsv oゴ悴りflATION
1988笛 図
を示すブロック・ダイヤグラムである。 第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・・・・オペレーティ
ング・システム(AIX)、13・・・・BIO811
5・・・・読取り専用記憶装置、16・・・・共用メモ
リ・セグメント、18・・・・オペレーティング・シス
テムCD08)、19・・・・アプリケーション・プロ
グラム。 出願人 インターナショナル・ビジネス・マシーンズ
・コーポレーシタン 復代理人 弁理士 澤 1) 俊 夫ズ七り一一
一120 ¥32 目 3A 、え+)−5”−20 MP AL、9 020゜ : 0105 E 0200 : 0107 EC x :0109 HL :0108 BX、AX 02■ : 0100 Ov 口02コ 、AX : olIO IT 劣 B 圀 PC〆尤すを裳叉丁↓ことメζ−eJ BO286の令
命の)齢19について、厚モの4−・4≧シーケシス・
でン梵I:横!8でh1サイフX/ NIUOR1
,R2,0X8OFF2プイクLLCR1,0(R11 ’T47rしEXTSRI、R ++jイクル BNE プフ゛ルーチンR2−でツ
゛メント9ぽたIば1中のPCメモリ・7ドレズR1<
m妬九へ゛イト9アドレス p+<−9:1儂 4に尤fO勇1rJ20tCxy+tPtH<2 NO
N−ZEROML b”o ?4 し+4−レ1j Y
7’ルー+ン1:41Lr”lK1「C0PYR1GI
−rr 18114CORPORATION 1fi
v;10 固 47七うaで−9にした縛金ri畑りす酌停ゴ〒付き斜
交CO雇IGH丁 tsv oゴ悴りflATION
1988笛 図
Claims (1)
- 【特許請求の範囲】 第1プロセッサの命令セット中の複数の第1命令からな
る制御の流れとしてのアプリケーションを第2プロッセ
サの命令セット中の複数の第2命令によってシミュレー
トするシミュレーション方法において、 上記第1命令からなる制御の流れを上記複数の第2命令
からなる制御の流れに変換するステップと、 上記アプリケーションが実行されている処理システムの
複数のメモリ位置の1つ1つに対してその内容の種類を
表示するステップと、 上記変換の間に対応するメモリ位置に上記内容の種類が
命令であることを示す表示を記憶するステップと、 上記複数のメモリ位置の1つに記憶を行なう間に、上記
記憶が命令を修正したかどうかを上記表示によって判別
するステップとを有することを特徴とするシミュレーシ
ョン方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15113588A | 1988-02-01 | 1988-02-01 | |
| US151135 | 1988-02-01 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH025140A true JPH025140A (ja) | 1990-01-10 |
| JPH0628036B2 JPH0628036B2 (ja) | 1994-04-13 |
Family
ID=22537468
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63318666A Expired - Lifetime JPH0628036B2 (ja) | 1988-02-01 | 1988-12-19 | シミュレーシヨン方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5301302A (ja) |
| EP (1) | EP0327195B1 (ja) |
| JP (1) | JPH0628036B2 (ja) |
| DE (1) | DE68921775T2 (ja) |
Families Citing this family (58)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2002201C (en) * | 1988-12-06 | 1999-04-27 | John Charles Goettelmann | Translation technique |
| US6006029A (en) * | 1993-09-28 | 1999-12-21 | Bull Hn Information Systems Inc. | Emulating disk drives of a first system on a second system |
| US5983012A (en) * | 1993-09-28 | 1999-11-09 | Bull Hn Information Systems Inc. | Executing programs of a first system on a second system |
| US6179488B1 (en) | 1994-03-23 | 2001-01-30 | Synopsys, Inc. | Software execution systems |
| US5535352A (en) * | 1994-03-24 | 1996-07-09 | Hewlett-Packard Company | Access hints for input/output address translation mechanisms |
| US5768577A (en) * | 1994-09-29 | 1998-06-16 | International Business Machines Corporation | Performance optimization in a heterogeneous, distributed database environment |
| US5588150A (en) * | 1994-09-29 | 1996-12-24 | International Business Machines Corporation | Push down optimization in a distributed, multi-database system |
| US6381595B1 (en) * | 1994-09-29 | 2002-04-30 | International Business Machines Corporation | System and method for compensation of functional differences between heterogeneous database management systems |
| US5764949A (en) * | 1994-09-29 | 1998-06-09 | International Business Machines Corporation | Query pass through in a heterogeneous, distributed database environment |
| US5781758A (en) * | 1995-03-23 | 1998-07-14 | Apple Computer, Inc. | Software emulation system with reduced memory requirements |
| US5721876A (en) * | 1995-03-30 | 1998-02-24 | Bull Hn Information Systems Inc. | Sockets application program mechanism for proprietary based application programs running in an emulation environment |
| US5751982A (en) * | 1995-03-31 | 1998-05-12 | Apple Computer, Inc. | Software emulation system with dynamic translation of emulated instructions for increased processing speed |
| US5619665A (en) * | 1995-04-13 | 1997-04-08 | Intrnational Business Machines Corporation | Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture |
| US5819063A (en) * | 1995-09-11 | 1998-10-06 | International Business Machines Corporation | Method and data processing system for emulating a program |
| US5799169A (en) * | 1995-10-02 | 1998-08-25 | Chromatic Research, Inc. | Emulated registers |
| US5819067A (en) * | 1996-02-23 | 1998-10-06 | Advanced Micro Devices, Inc. | Computer system configured to translate a computer program into a second computer program prior to executing the computer program |
| 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 |
| US5896522A (en) * | 1996-12-31 | 1999-04-20 | Unisys Corporation | Selective emulation interpretation using transformed instructions |
| US7441254B1 (en) * | 1997-07-09 | 2008-10-21 | International Business Machines Corporation | Simulation of memory-mapped I/O |
| US7251693B2 (en) * | 2001-10-12 | 2007-07-31 | Direct Computer Resources, Inc. | System and method for data quality management and control of heterogeneous data sources |
| US7092869B2 (en) * | 2001-11-14 | 2006-08-15 | Ronald Hilton | Memory address prediction under emulation |
| US20030093775A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | Processing of self-modifying code under emulation |
| JP4020849B2 (ja) * | 2003-09-25 | 2007-12-12 | 松下電器産業株式会社 | シミュレーション装置、シミュレーションプログラム、記録媒体及びシミュレーション方法 |
| US7328429B2 (en) * | 2003-11-13 | 2008-02-05 | Intel Corporation | Instruction operand tracing for software debug |
| US7539190B2 (en) * | 2004-01-05 | 2009-05-26 | Topside Research, Llc | Multicasting in a shared address space |
| US8539491B1 (en) * | 2004-07-26 | 2013-09-17 | Oracle America, Inc. | Thread scheduling in chip multithreading processors |
| US9367493B2 (en) * | 2005-12-09 | 2016-06-14 | Globalfoundries Inc. | Method and system of communicating between peer processors in SoC environment |
| US7849362B2 (en) * | 2005-12-09 | 2010-12-07 | International Business Machines Corporation | Method and system of coherent design verification of inter-cluster interactions |
| US7711534B2 (en) * | 2005-12-09 | 2010-05-04 | International Business Machines Corporation | Method and system of design verification |
| US8041958B2 (en) * | 2006-02-14 | 2011-10-18 | Lenovo (Singapore) Pte. Ltd. | Method for preventing malicious software from execution within a computer system |
| US8694797B2 (en) * | 2006-02-14 | 2014-04-08 | Lenovo (Sinapore) Pte Ltd | Method for preventing malicious software from execution within a computer system |
| US20080222388A1 (en) * | 2007-03-05 | 2008-09-11 | Microsoft Corporation | Simulation of processor status flags |
| US20090109996A1 (en) * | 2007-10-29 | 2009-04-30 | Hoover Russell D | Network on Chip |
| US20090125706A1 (en) * | 2007-11-08 | 2009-05-14 | Hoover Russell D | Software Pipelining on a 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 |
| USD597771S1 (en) | 2008-01-28 | 2009-08-11 | Herman Miller, Inc. | Backrest |
| USD587914S1 (en) | 2008-01-28 | 2009-03-10 | Herman Miller, Inc. | Chair |
| US8458671B1 (en) * | 2008-02-12 | 2013-06-04 | Tilera Corporation | Method and system for stack back-tracing in computer programs |
| 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 |
| US20090260013A1 (en) * | 2008-04-14 | 2009-10-15 | International Business Machines Corporation | Computer Processors With Plural, Pipelined Hardware Threads Of Execution |
| US20090271172A1 (en) * | 2008-04-24 | 2009-10-29 | International Business Machines Corporation | Emulating A Computer Run Time Environment |
| US8078850B2 (en) * | 2008-04-24 | 2011-12-13 | International Business Machines Corporation | Branch prediction technique using instruction for resetting result table pointer |
| US8423715B2 (en) | 2008-05-01 | 2013-04-16 | International Business Machines Corporation | Memory management among levels of cache in a memory hierarchy |
| US8392664B2 (en) * | 2008-05-09 | 2013-03-05 | International Business Machines Corporation | Network on chip |
| 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 |
| US8020168B2 (en) * | 2008-05-09 | 2011-09-13 | International Business Machines Corporation | Dynamic virtual software pipelining on a network on chip |
| US20090282211A1 (en) * | 2008-05-09 | 2009-11-12 | International Business Machines | Network On Chip With Partitions |
| 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 |
| AU2016396782B2 (en) | 2016-03-11 | 2021-07-22 | Lzlabs Gmbh | Load module compiler |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4302820A (en) * | 1979-08-20 | 1981-11-24 | Allen-Bradley Company | Dual language programmable controller |
| US4393443A (en) * | 1980-05-20 | 1983-07-12 | Tektronix, Inc. | Memory mapping system |
| 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 |
| JPS5938870A (ja) * | 1982-08-30 | 1984-03-02 | Sharp Corp | 電子式計算機 |
| WO1984002784A1 (en) * | 1982-12-30 | 1984-07-19 | Ibm | Virtual memory address translation mechanism with controlled data persistence |
| US4685057A (en) * | 1983-06-06 | 1987-08-04 | Data General Corporation | Memory mapping system |
| US4531215A (en) * | 1983-06-22 | 1985-07-23 | Gte Automatic Electric Incorporated | Validity checking arrangement for extended memory mapping of external devices |
| JPS6017539A (ja) * | 1983-07-11 | 1985-01-29 | Hitachi Ltd | エミユレ−シヨン方式 |
| US4633417A (en) * | 1984-06-20 | 1986-12-30 | Step Engineering | Emulator for non-fixed instruction set VLSI devices |
| US4727480A (en) * | 1984-07-09 | 1988-02-23 | Wang Laboratories, Inc. | Emulation of a data processing system |
| JPS6133546A (ja) * | 1984-07-25 | 1986-02-17 | Nec Corp | 情報処理装置 |
| US4638423A (en) * | 1985-03-06 | 1987-01-20 | Motorola, Inc. | Emulating computer |
| JPH0727471B2 (ja) * | 1985-08-01 | 1995-03-29 | 日本電気株式会社 | マイクロコンピュータ開発装置 |
| US4794522A (en) * | 1985-09-30 | 1988-12-27 | International Business Machines Corporation | Method for detecting modified object code in an emulator |
| US4805095A (en) * | 1985-12-23 | 1989-02-14 | Ncr Corporation | Circuit and a method for the selection of original data from a register log containing original and modified data |
| US4841476A (en) * | 1986-10-06 | 1989-06-20 | International Business Machines Corporation | Extended floating point operations supporting emulation of source instruction execution |
-
1988
- 1988-12-19 JP JP63318666A patent/JPH0628036B2/ja not_active Expired - Lifetime
-
1989
- 1989-01-05 DE DE68921775T patent/DE68921775T2/de not_active Expired - Fee Related
- 1989-01-05 EP EP89300077A patent/EP0327195B1/en not_active Expired - Lifetime
-
1991
- 1991-04-02 US US07/680,636 patent/US5301302A/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| DE68921775T2 (de) | 1995-10-12 |
| US5301302A (en) | 1994-04-05 |
| JPH0628036B2 (ja) | 1994-04-13 |
| DE68921775D1 (de) | 1995-04-27 |
| EP0327195A2 (en) | 1989-08-09 |
| EP0327195A3 (en) | 1991-10-16 |
| EP0327195B1 (en) | 1995-03-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH025140A (ja) | シミュレーシヨン方法 | |
| JPH025139A (ja) | シミユレーシヨン方法 | |
| US5167023A (en) | Translating a dynamic transfer control instruction address in a simulated CPU processor | |
| US9495136B2 (en) | Using aliasing information for dynamic binary optimization | |
| US6009261A (en) | Preprocessing of stored target routines for emulating incompatible instructions on a target processor | |
| KR100463810B1 (ko) | 어드레스되는 구성요소의 물리적 특성에 관한 추측 실패를 검출하는 마이크로프로세서용 메모리 제어기 | |
| 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 | |
| US5742802A (en) | Method and system for efficiently mapping guest instruction in an emulation assist unit | |
| US5819063A (en) | Method and data processing system for emulating a program | |
| KR100443759B1 (ko) | 개선된 마이크로프로세서 | |
| US9201635B2 (en) | Just-in-time dynamic translation for translation, compilation, and execution of non-native instructions | |
| US20120198427A1 (en) | Ensuring Register Availability for Dynamic Binary Optimization | |
| US9213563B2 (en) | Implementing a jump instruction in a dynamic translator that uses instruction code translation and just-in-time compilation | |
| Probst | Dynamic binary translation | |
| US20150186169A1 (en) | Defining an instruction path to be compiled by a just-in-time (jit) compiler | |
| KR100421687B1 (ko) | 개선된 마이크로프로세서를 위한 변환 메모리 보호 장치 | |
| US9183018B2 (en) | Dynamic on/off just-in-time compilation in a dynamic translator using instruction code translation | |
| Silberman et al. | An architectural framework for migration from CISC to higher performance platforms | |
| KR100522468B1 (ko) | 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서 | |
| JPH025138A (ja) | シミユレーシヨン方法 | |
| JP2020523693A (ja) | Jitコンパイラを使用しかつ選択されたターゲットコードブロックの変換をバイパスするターゲットシステムのエミュレーション | |
| Bulman | Stack computers: An introduction | |
| US20070156386A1 (en) | Linearization of page based memory for increased performance in a software emulated central processing unit | |
| US20150186168A1 (en) | Dedicating processing resources to just-in-time compilers and instruction processors in a dynamic translator | |
| US7653527B2 (en) | Runtime selection of code variants in a multiprogram computer hardware emulation system |