JPH0628036B2 - シミュレーシヨン方法 - Google Patents

シミュレーシヨン方法

Info

Publication number
JPH0628036B2
JPH0628036B2 JP63318666A JP31866688A JPH0628036B2 JP H0628036 B2 JPH0628036 B2 JP H0628036B2 JP 63318666 A JP63318666 A JP 63318666A JP 31866688 A JP31866688 A JP 31866688A JP H0628036 B2 JPH0628036 B2 JP H0628036B2
Authority
JP
Japan
Prior art keywords
instruction
memory
instructions
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.)
Expired - Lifetime
Application number
JP63318666A
Other languages
English (en)
Other versions
JPH025140A (ja
Inventor
ジヨー・ウエイン・ブラツカード
リチヤード・グレゴリー・フオグ、ジユニア
カツロー・マーチン・デ・ニコルス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH025140A publication Critical patent/JPH025140A/ja
Publication of JPH0628036B2 publication Critical patent/JPH0628036B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

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のプロセッサをシミュレ
ートするシステム及び方法に関するものである。
B.従来技術 コンピュータ技術の現在の進歩により、処理システムの
プロセッサ(本明細書では中央処理装置(CPU)とも
呼ぶ)は絶え間なく変化してきている。種々のプロセッ
サの発展の例には、IBMPCで使用されるIntel
(IntelはIntel社の登録商標)8088プロ
セッサ、IBM PC AT(PC ATはIBM社の
登録商標)で使用されるIntel80286プロセッ
サ、IBMパーソナル・システム/2(パーソナル・シ
ステム/2はIBM社の登録商標)で使用されるInt
el80386プロセッサ、IBMRT PC(RT
PCはIBM社の登録商標)で縮小命令セット・コンピ
ュータ(RISC)アーキテクチャを使用するIBMリ
サーチ/OPDマイクロプロセッサ(ROMP)があ
る。その他のプロセッサには、わけてもMotorol
a6800、68020がある。
種々の処理システムのハードウェアは、新しいプロセッ
サの増大した処理能力を利用できるように急速に変化し
ている。ハードウェアが変化することの欠点は、以前の
プロセッサ用に書かれたソフトウェアが一般にはそれよ
り後のハードウェア技術で使用できないことである。最
初にソフトウェアが書かれたとき対象とされた処理シス
テムとは異なる処理システムでそのソフトウェアを使用
することができる場合でも、アプリケーションの性能
は、異なる処理システム上では、そのアプリケーション
が当初対象とした処理システム上におけるほどには十分
ではない。その結果、長い開発期間を要したソフトウェ
ア・アプリケーションがすぐに時代遅れなものになる。
以前に書かれたソフトウェアが使えないことは、最初に
書かれたアプリケーションの機能が依然として非常に適
切であり、新しいハードウェアの処理システム上で必要
とされている場合には、一層悲劇的である。
その結果、一般には、新しいハードウェアが最初に市場
に発表されたとき、「新しい」ハードウェア設計用に特
に書かれた「新しい」ソフトウェアが、限られた量しか
ないことになる。これは、一部には、ソフトウェア・ア
プリケーション・プログラムの開発期間が長いこと、及
び市場でのハードウェアの発表前に製造者が新しいハー
ドウェア設計を秘密にしておくことのためである。ソフ
トウェア製造者は、処理システムのハードウェアに関し
てある程度の事実を知らなければその処理システム用の
ソフトウェア・プログラムを書くことができない。
理想的には、処理システムの製造者は、その処理システ
ム用の新しいハードウェアが市場で発表されるとすぐ、
その処理システム上で実行できる大量のソフトウェアが
ほしいと考えるはずである。
顧客は、豊富な量のソフトウェアがすでに利用可能であ
ることが分かれば、新しい処理システムに投資する可能
性が一層大きくなるはずである。
「旧い」ハードウェア設計用に以前に書かれた大量のソ
フトウェアを転用する道を開く手法が幾つかあった。当
初別のプロセッサ用に書かれたアプリケーションを実行
できるようにするための以前のハードウェア手法は、コ
プロセッサを備えた新しい処理システムを構築すること
である。この方法では、処理システムは両方のタイプの
プロセッサ、すなわち、新しいプロセッサ用と旧プロセ
ッサ用のアプリケーションを実行することができる。
たとえば、IBM RT PCは、当初IBM PC
AT用に書かれたアプリケーションを使用するためのI
BM PC ATコプロセッサを含んでいた。しかし、
コプロセッサは、オペレーティング・システムで低水準
でサポートされていたので、AIX(AIXはIBM社
の商標)オペレーティング・システムによって提供され
る機能を完全に利用することができなかった。AIXオ
ペレーティング・システムによって機能の1つは、米国
特許出願第820451号に記載された多重タスク処理
である。
しかし、そのコプロセッサはPC ATをエミュレート
するためのハードウェア・アダプタを含んでいるので、
ユーザは一時に1つのセッションに制限される。言い換
えると、一度コプロセッサが始動すると、コプロセッサ
の他のインスタンスは実行できない。
このコプロセッサはまた、第1の処理システムのプロセ
ッサの速度に限定され、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができない。
第2の手法はソフトウェアによって第2のプロセッサを
シミュレートすることである。ソフトウェア・シミュレ
ータは、あるプロセッサ用に以前に書かれたソフトウェ
アを異なるプロセッサを有する新しい処理システムで実
行するための機構を提供する。ソフトウェアによるシミ
ュレーション手法では、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができる。ソフトウェア手法はまた、オペレーティング
・システムの多重タスク処理機能を使って、第1のプロ
セッサの多数のインスタンスを提供することが可能であ
る。
現在市販されているソフトウェア・シミュレータには、
Insignia Solutions(Insignia SolutionsはInsignia So
lutions社の商標)によるSoft PC(Soft PCはInsignia S
olutionsの商標)及びCommodore社のAmiga(Motorola社
の68000をベースとする)用のSimile Research社
によるAmiga Transformerがある。後者のシステムに関
する情報は、論文「Amigaの切り札(Amiga′s Tru
mp Card)」、AMIGA WORLD、第1巻、第2
号、1985年11月/12月に発表されている。Phoe
nix Technologies社も、Motorola68000プ
ロセッサを備えたApollo機用のIntelプロセ
ッサをシミュレートするためのシミュレータを提供して
いる。
どのCPUプロセッサもそれぞれ特定の命令セットを有
する。特定のCPUプロセッサ用のソフトウェア・アプ
リケーション・プログラムが開発されるとき、それは目
的コードにコンパイルされる。目的コードは、特定の命
令セットをサポートするどのCPU上ででも実行される
ことを目指したものである。シミュレータは、特定の命
令セットで実行されるように書かれた目的コードを受け
取り、同様のまたは異なる命令セットを有する異なるプ
ロセッサ上で実行できるようにそれを変換する。2台の
プロセッサの2種類の命令セットが異なっていればいる
ほど、他方のプロセッサをシミュレートすることは一層
困難になる。
たとえば、Intel80286プロセッサは多種多様
な命令を提供するという点で、非常に豊富な命令セット
を有する。各命令は特定のタイプの状況に特に対応して
いる。さらに、各命令は幾つかの動作を実行することが
できる。一方、RTPC内のROMPプロセッサは、よ
り少ない命令と、1つの命令当たりより少ない機能を提
供する縮小命令セット(RISC)プロセッサを有す
る。Intel80286内の各命令は複数のタスクを
実行することができるので、ROMP RISCで同じ
タスクを実行するには、より多くの命令が必要になる。
しかし、命令セットを簡略化することによりプロセッサ
の速度を増大させることができる。より多くの命令が必
要になるものの、より一般的でより簡単なタスクを実行
する間に、複雑な命令に余分な時間を費やすことはな
い。
以前のソフトウェア・シミュレータの方法では、命令の
効果をシミュレートするサブルーチンを作成していた。
シミュレートされる機械がその命令を実行することが必
要になるたびに、その命令を復号し実行するためにその
サブルーチンを呼び出すことになる。この手法の問題点
は、サブルーチンを呼び出して実行するたびに、命令を
復号するというオーバーヘッドが生じることである。し
たがって、シミュレートされるプロセッサの速度が影響
を受ける。
別のソフトウェア・シミュレーション手法では、命令を
実行することが必要になるたびにサブルーチンを呼び出
す代わりに、命令をシミュレートするためにより短いホ
スト機械命令シーケンスをコンパイルした。その結果、
ある命令を復号し翻訳するというオーバーヘッドは、そ
の命令に最初に出会ったときに一度だけ生じる。この翻
訳は次に保管され、それ以後は、その命令がシミュレー
トされるたびに、その翻訳が実行される。これは、しば
しば第2世代のシミュレータと呼ばれている。第1世代
のシミュレータは命令を一度に1つ受け取り、それを実
時間で復号し、実行する。復号は、各命令が必要とされ
るたびに各命令ごとに行なわれる。第2世代のシミュレ
ータは命令を一度に1つずつ調べ、それらの命令を翻訳
し、その後は戻って再び翻訳せずその翻訳を再使用す
る。
以前の第2世代のシミュレータは、RSIMと呼ばれる
IBMシステム/370上でIBM ROMP CPU
をシミュレートするシミュレータであった。このシミュ
レータは、セルと呼ばれる、各命令用の固定量の記憶域
(各ハーフ・ワードにつき16バイト)を予約する。次
に、各RT命令ごとにこれらのセルのそれぞれに対して
IBM370の命令が生成される。生成されるコードの
量が、1つのセルに入る量よりも少ない場合は(一般的
にそうであるが、)次のセルの次の境界に分岐する。命
令をシミュレートするために生成されるコードの量が1
つのセルに入りきらない場合は、実行時環境ルーチン・
セットに分岐するサブルーチン呼出しが生成される。こ
のルーチン・セットは、エミュレーションを実行してセ
ルに戻り実行を完了する。もう1つのシミュレータはI
BMRT PC上でIBMシステム/370のプロセッ
サをシミュレートするもので、解釈プログラム及び解釈
技術に関する計算機械協会シンポジウムで1987年6
月11日に発表され、ACMの1987年度発表要旨集
SIGPLANで公表されたC.メイ(May)の論文
「模倣:高速システム/370シミュレータ(Mimic:A
Fast System/370 Simulator)」に記載されている。
第1世代のシミュレータは、シミュレートされる命令1
個当たり50ないし100個のホスト機械命令を実行す
る。第2世代のシミュレータは、シミュレートされる命
令1個当たり平均10個のホスト機械命令を実行する。
シミュレータが、シミュレートされる機械上で1つの命
令をシミュレートするために50または10個の命令を
必要とする場合、シミュレータを動かす第2のプロセッ
サは、匹敵する処理能力を示すためには、シミュレート
される機械よりもそれぞれ50倍または10倍速くなけ
ればならない。したがって、当技術分野で従来実現され
ていたよりもシミュレートまたは翻訳される命令1個当
たりのシミュレータ命令の数をさらに減らすことが望ま
しい。
たとえば、シミュレータが、シミュレートされる命令1
個当たり4個の命令しか使用しないよう設計でき、か
つ、シミュレータのプロセッサが、シミュレートされる
機械のプロセッサよりも4倍速い場合には、シミュレー
タは、シミュレートされる元の機械よりも速くなる。こ
のとき、ユーザは、シミュレートされた機械を使用して
アプリケーション・プログラムを実行することにより、
アプリケーション・プログラムが当初書かれたとき対象
となった機械を使用する場合よりも高い処理能力を得る
ことになる。
したがって、別のプロセッサをシミュレートする際に克
服すべき全体的問題は、シミュレートされる命令1個当
たりのシミュレータ(ホスト)命令の数をさらに減らし
て、シミュレータの処理速度を増大させることである。
C.発明が解決しようとする問題点 したがって、本発明の目的は、シミュレートされる命令
1個当たりごとの平均のホスト機械命令数を減少させる
ことである。
D.問題点を解決するための手段 本発明のシミュレータは、本来別のプロセッサ用に書か
れたアプリケーションをソフトウェア・エミュレーショ
ンにより実行する。ソフトウェアによるシミュレーショ
ン手法では、シミュレータ機械のオペレーティング・シ
ステムの機能を利用できるというフレキシビリティが得
られる。本発明の好ましい実施例では、シミュレータは
RTPCのAIXオペレーティング・システム上のアプ
リケーションとして働く。したがって、シミュレータ
は、AIXオペレーティング・システムの多重タスク処
理及び多重ユーザ機能を利用して、本来PC AT用に
書かれた多数のアプリケーションをアプリケーション自
体に変更を加えずに同時に実行することが可能となる。
本発明のシミュレーションの方法は、シミュレートされ
る機械命令1個当たりのホスト機械命令の数を減少させ
ることにより、従来のプロセッサ・シミュレーションの
方法よりも速いシミュレート・プロセッサの処理能力を
提供する。これは、従来必要なよりも多くの命令を使用
していた主要処理分野を特定し、次に、より少ない命令
を使って処理タスクを実施する新しい方法を創出するこ
とにより実現された。
CPUシミュレーションを増大させるため、すなわち、
シミュレートされる命令1個当たりのホスト命令の平均
数を減少させるために、従来必要なよりも多くの命令を
使用していた主要処理分野を特定した。
本発明では、メモリを更新する最初のプロセッサ命令を
調べて、その命令が後続の命令を変更するかどうか、ま
たはビデオ・バッファ更新を行なうかどうかを判定する
方法を提供する。本発明の方法は、この変更を検出する
ために必要とされるサイクル数、すなわち、命令の数を
減少させる。
すなわち、本発明では命令がメモリへの記憶を行なうと
きに何が起こるかを判別可能にする処理タスクに着目し
てシミュレートされる命令1つあたりホスト命令の平均
個数を削減しようとしている。メモリの内容は3つに分
割される。メモリの内容は命令であっても、計算に用い
られるデータであっても、メモリ・マップされたI/O
であってもよい。メモリ・マップされたI/Oはハード
ウェアによって変換され、または、たとえばディスプレ
イ画面上に表わされるメモリの内容(以下ではビデオ・
バッファと呼ぶ)である。ビデオ・バッファは、出力デ
ィスプレイ装置上に情報として表示するために、アプリ
ケーションによって更新されるハードウェア・アダプタ
の一部である。上述の3つの型のメモリの内容のうち、
計算用のデータのみがシミュレーション用の処理を施さ
れることなく記憶される。
命令を含むメモリ部分にストアがあると、命令が修正さ
れ、この結果命令用の翻訳はもはや有効でないこともあ
る。命令修正に対してテストを行なって翻訳されたコー
ドがつねに正しいことを保証する必要がある。アプリケ
ーションが命令の修正を行なうならば、元のコード命令
用の翻訳されたコードははきだされ、新しい命令がシミ
ュレータ・プロセッサの新しいシーケンスへと翻訳され
る。命令の正しい翻訳を保証する他のステップを採用す
ることもできるであろう。
同様に、ビデオの更新についてのテストを行なって、出
力装置への出力がシミュレータによってさらに処理する
必要があるかどうかを調べる必要がある。このような事
態は、第1の処理システムの出力装置がシミュレータを
動作させている第2の処理装置に取り付けられておら
ず、このため第1の処理装置の出力装置をシミュレート
しなければならない場合に起こる。メモリ・マップされ
たI/Oの場合には、出力データを表わしている特別の
ハードウェアが修正されるかどうかを、ストア時に判別
する必要がある。従前のシミュレータでは、メモリへの
ストアがあったのちサブルーチンを呼び出してこれら2
種類のメモリの内容すなわち命令及びメモリ・マップさ
れたI/Oが影響を受けているかどうか判断するのに多
くのサイクルを費やしていた。
本発明では、メモリを更新する第1プロセッサ命令をテ
ストしてその命令が後続の命令を修正したり、ビデオ・
バッファの更新を行なったりするかどうかの決定を行な
う方法が提供される。本発明の方法によれば、この修正
を検出するのに必要なサイクル数すなわち命令数を減少
させることができる。アプリケーションをシミュレータ
上で実行するのに必要な記憶容量は増大したけれども、
速度は増大した。基本的には、効率の向上が、余分に必
要となる記憶空間のコストにより実現される。
本発明では、メモリと、個別のメモリ位置の用途の種類
を示す状態との間の1バイト単位の対応関係を含むデー
ブルを用いる。ゼロは当該メモリ位置に計算用のデータ
が記憶されていることを示す。この場合、仮想メモリ・
システムにおいては以前に参照されることがなかったペ
ージは最も普通の状態が(決定できるのであれば)計算
用のデータであることを示す。つぎに、命令が翻訳され
るときには、その時点でメモリ位置が命令に対応するこ
とがわかる。この情報の表示はテーブルに記憶される。
シミュレータ起動時には、ユーザは、第1の処理システ
ムの出力装置たとえばディスプレイがユーザの処理シス
テム(これの上にシミュレータが動作する)に結合され
ているかどうかを指示することによって、シミュレータ
の構成を指示する。出力装置が存在するなら、出力装置
用のデータに対する付加的なシミュレータ処理は必要な
い。第1の処理システムの出力装置が第2の処理システ
ムに結合されていないのであれば、その出力装置へのデ
ータに対して付加的なシミュレータ処理が実行されて他
の出力装置に同一の効果が現われるようにする。シミュ
レータ起動時かつシミュレータの構成処理(configurat
ion)ののちには、状態テーブルに非零の値を記憶して
ビデオ・バッファが他のシミュレータ処理が必要なメモ
リの位置であることを示すようにすることにより、出力
装置が結合されていないことを表示する。
実行時には、テストを行なって、修正が行なわれている
メモリ位置のアドレスをテーブルのアドレスに変換す
る。内容がゼロであれば、何ら特別な処理は必要でな
い。第1の処理システムの出力装置が結合されている
か、または、修正されているメモリ位置の内容がデータ
であるからである。内容が非零であれば、特別な処理が
必要となる。第1の処理システムが結合されていず、し
かも他のシミュレーションが現在必要だからであり、ま
たは修正されているメモリ位置の内容が命令であり、テ
ストを行なって正しい翻訳が実行されていることを保証
する必要があるからである。この方法では、テストが必
要なときにいつもサブルーチンを呼んでいた従来の手法
よりも高速な処理が行なえる。
一連の命令を実行して、他のセグメントにマップされる
1つのセグメント中に、どのタイプのコードすなわち計
算用データ、命令またはビデオ・データのいずれかを示
す1バイトがあるかどうかをテストできる。1バイトを
取り出してそれがゼロかどうかをテストするのは高速に
行なえる。ゼロでなければ、それは、特別な処理が必要
な命令またはビデオ・データであることを示す。
E.実施例 E1.処理システム環境 本発明のシステム及び方法の好ましい実施例は、複合命
令セットを用いたIntel80286プロセッサを使
用するIBM PC AT等の処理システムを、縮小命
令セット・コンピュータ(RISC)技術を用いたRO
MPプロセッサを使用するIBM RT PC等の第1
図に示す処理システム上でシミュレートする。RISC
プロセッサは1命令当たりの機能は少ないが、命令を速
く処理することができる。Intel80286に基づ
く機械とRISCに基づく機械のアーキテクチャは互い
にまったく異なっている。2つの処理システムのアーキ
テクチャの差異が大きければ大きいほど、一方のプロセ
ッサを他方の処理システム上でシミュレートすることが
一層難しくなる。
RT PC処理システム、IBM PC AT処理シス
テム、及びIntel80286プロセッサに関するよ
り詳しい情報については、以下の参照文献を引用された
い。それらの開示を引用により本明細書に組み込む。
M.J.バッハ(Bach)、「The Design of the UNIX O
perating System」、プレンティス・ホール(Prentice
Hall)、1986年。T.G.ラング(Lang)及び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 Oper
ating System Managing the AIX Operating System Ver
sion2.1」、IBM社、SC23−0793。「AIX
Operating System Programming Tools and Interfaces
Version2.1」、IBM社、SC23ー0789。
「AIX Operating System Technical Reference Version
2.1」、第1巻及び第2巻、IBM社、SC23−0
808及びSC23ー0809。「IBM RTPersonal Com
puter Technology」、IBM社、SA23−1057、
1986年。
「Virtual Resource Manager Technical Reference Ver
sion2.1」、第1巻及び第2巻、IBM社、SC23
−0816及びSC23−0817。「iAPX 286 Progr
ammer′s Reference Manual Including the iAPX 286 N
umeric Supplement」Intel社、210498−0
03、1985年。及び「IBM PC ATTechnica
l Reference Manual」、IBM社、1984年3月。
E2.シミュレーションの概要 第1図に示すように、シミュレータ10は処理システム
1のオペレーティング・システム12上でアプリケーシ
ョン・プログラムとして実行される。第1図に加えて第
2図を参照すると、ステップ2でシミュレータ10が始
動されると、シミュレータ10はステップ3で、読取り
専用記憶装置(ROS)(読取り専用メモリ(ROM)
とも呼ばれる)15から、80286の命令を含むBI
OS13をオペレーティング・システム12の共用メモ
リ・セグメント16に複写する。ステップ4で、シミュ
レータ10はBIOS13を翻訳し、ステップ5で、B
IOS13は、アプリケーション19が当初書かれたと
き対象とされたオペレーティング・システム(DOS)
18をロードする。シミュレータ10は次にステップ6
で、そのオペレーティング・システム18を翻訳して実
行する。ステップ7で、ユーザはオペレーティング・シ
ステム・プロンプトでアプリケーション19を呼び出
し、ステップ8で、シミュレータ10はアプリケーショ
ン・プログラム19を翻訳して実行する。
CPUシミュレーションの処理能力を増大させるため、
すなわち、シミュレートされる命令1個当たりのホスト
命令の平均数を減少させるため、現在必要なよりも多く
の命令を使用している主要処理分野を特定した。
E3.条件コードのフラグ解析 最初に、条件コードの正しい値を維持し、保持する処理
タスクを特定した。
多数のプロセッサ命令が、フラグ・レジスタ20に作用
して、フラグ・レジスタ20(第3C図)中の条件コー
ド21−26を、ある動作の結果を反映するように更新
する。異なる6つの条件コード、すなわち、あふれフラ
グ21、符号フラグ22、ゼロ・フラグ23、演算フラ
グ24(半桁上げとも呼ばれる)、パリテイ・フラグ2
5、及び桁上げフラグ26がある。これらの条件コード
21−26は、結果が0であったかどうか、結果が負で
あったかどうか、レジスタの桁上げが生じたかどうか、
またはあふれ条件がもたらされたかどうか等の一般条件
を示す。さらに、結果の下位バイトのパリティ(奇数ま
たは偶数)及び動作の下位4ビットの桁上げ(半桁上
げ)を示す条件も含む。
第1のプロセッサのフラグ・レジスタを最新状態に保つ
ことによってセットされる第1のプロセッサの命令をシ
ミュレートするには、レジスタに作用する全命令に対し
て追加のサイクルが必要となるはずである。このこと
は、第1のプロセッサのアーキテクチャによって、条件
コード更新の異なる幾つかの組合せが定義される場合に
特に当てはまる。たとえば、条件コードは常にセットま
たはクリアされ、計算され、未変更のままにされ、ある
いは未定義のままにされることが可能である。
以前のシミュレータRSIM、すなわち、IBM S/
370上のRT PCプロセッサ・シミュレータは、条
件コードを記録するというオーバーヘッドを減少させる
ためにある方式を使用していた。この目的のためにレジ
スタが予約されていた。予約されたレジスタは、ある動
作に関する32ビットの値と、実行される動作のタイプ
を含んでいた。条件コードの値を判定する作業を、それ
を実際に必要とする命令がシミュレートされるまで延期
するという考えである。それにもかかわらず、依然とし
てこれらの値及びタイプを保管するというオーバーヘッ
ドがある。可能なすべての後続の経路が、同じ条件コー
ドを変更する命令を含み、それらを必要とする命令が介
在しない場合は、このオーバーヘッドは不必要である。
フラグ・レジスタ20のどの変更が後続命令によって実
際に使用されたかを判定するため、本発明のシミュレー
タ10は、第1のプロセッサ命令ブロック100のフラ
グ解析(第3A図の30または第3C図の50)によっ
てもたらされる情報を使用する。これらの技術は、従来
高水準言語コンパイラを最適化するのに用いられてい
た。しかし、この技術がプロセッサ・シミュレーション
の問題に適用されたのはこれが始めてであると考えられ
る。
ステップ131(第4図)で、シミュレータ10が新し
い第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はあふれフラグ4
2及びセット・レジスタ43はあふれフラグ21及び桁
上げフラグ26用に単独のビットを有し、残りの条件コ
ード22−25は1ビットにまとめられることに留意さ
れたい。したがって、これらの条件コード22−25の
いずれかが命令100によって使用またはセットされた
場合、レジスタ42、43の中間ビットはそのように指
示する。
第2に、ステップ134(第4図)で、グラフ30を解
析して、どこで割込みポーリングしなければならない
か、分岐を最小にするため翻訳をどのように順序付ける
か、及び命令によって定義されるどの条件コードが実際
に使用されるかを判定する。
第3に、ステップ136(第4図)で、コード発生機構
29を呼び出して、グラフ30を第2のプロセッサ命令
130(第3D図)に変換する。
ステップ136でコードが発生されるとき、グラフ50
内の情報は、命令によって定義される条件コード21−
26が実際に使用されるかどうかを示す。たとえば、大
抵の場合には、シフト(SHL)命令125(第3B図
及び第3C図)によって定義される条件コードは実際に
は使用されない。コード発生機構29はこの知識を使っ
て、条件コードが必要であったなら動作のオペランドを
保管するために4または5個の命令が必要となったかも
知れない場合に、単一の第二のプロセッサ命令135
(第3D図)を発生することができる。この例ではAD
D命令用の条件コード21−26が後続の命令128で
必要となることが、命令100の制御流れ(第3B図及
び第3C図)からで理解できる。したがって、翻訳され
た命令130(第3D図)は、条件コードが必要でなか
った場合には1つしか命令を発生しない所を、6個の命
令をもたらした。ただし、条件コード21−26が必要
でないことをフラグ解析50が示す場合には、翻訳され
た余分な命令は発生されない。
シミュレータ10は第1のプロセッサ命令100を第2
のプロセッサ命令130に翻訳するが、一度に1つの命
令の翻訳を行なわない。シミュレータ10は、これから
実行する翻訳のない第1の命令を調べ、第3A図に示す
命令のグラフ30を作成しながら後続の命令の検査を続
行する。
グラフ30の各ノード101は1つの第1プロセッサ命
令100に対応する。各ノード101は多くとも2つの
子孫しか持てない。メモリ内の次の順次命令にのみ制御
権を移す順次命令102、105、106、108、1
10、111、112の場合は、ノード101は、第3
A図に垂直線114として示すように、それぞれ1つの
子孫103、106、107、109、111、11
2、113しか持たない。条件付き分岐103、104
の場合には2つの子孫があり得、これらの命令は条件は
真偽をテストして、条件が真の場合はある命令に分岐
し、条件が為の場合は次の命令に進む。割込み戻り命令
109のように、ノード101が子孫を持たないことも
あり得る。子孫を持たない命令109は、制御権を動的
に移す命令の例である。さらに、ノード101は、順次
命令ではない1つの子孫を持つことができる。無条件飛
越し命令107がその一例である。
上に示したように、命令100には4つのタイプがあ
る。これらのタイプはコード中で以下のように番号付け
される。ノードにある命令が子孫を持たない場合、すな
わち、戻り命令128(第3C図)、割込み戻り命令1
09(第3A図)及び戻り命令113(第3A図)で
は、ノード101は番号「0」を付される。順次命令で
あり、かつ1つの順次子孫を持つ場合、たとえば、(第
3C図)比較命令121、減分命令124(第3C
図)、比較命令102、増分命令108(第3A図)で
は、ノード101は番号「1」を付される。命令が2つ
の子孫を持つ場合、すなわち、if below飛越し命令12
2(第3C図)及び103(第3A図)では、ノード1
01は番号「2」を付される。順次命令ではないが1つ
の子孫しか持たない場合、すなわち、飛越し命令107
(第3A図)では、ノード101は番号「3」を付され
る。
第1プロセッサの命令ブロック100(第3B図)につ
いて記述するグラフ50(第3C図)を命令100 1
個当たり1つのノード101で作成した後、シミュレー
タはグラフ50の解析を行なう。各ノード101は、第
1のプロセッサ命令100が実行のために通常どの条件
コード21−26を必要とするか(レジスタ42)、及
び実行後にその命令によってどの条件コード21−26
がセットされるか(レジスタ43)に関する情報を含
む。比較命令121の場合、比較命令121は実行のた
めにどの条件コード21−26も必要としないが、それ
らのすべてをセットする(レジスタ43)。if below飛
越し(JB)命令122は、桁上げ条件コードがテスト
されるものなので、実行のために桁上げ条件コード26
を必要とするが(レジスタ42)、実行後にどの条件コ
ードもセットしない(レジスタ43)。if equal飛越し
(JE)命令123は実行のためにif equalコード・ビ
ットを必要とするが、実行後にどの条件コードもセット
しない。増分命令124はあふれフラグ21及び演算フ
ラグ24をセットし(レジスタ43)、桁上げ条件コー
ド26を未変更のままにする(レジスタ43)。このよ
うにして、命令100の残りの各々についてもフラグ解
析を続ける。
ノード101は、アプリケーション・プログラム19が
ノードを見つけたとき順に記憶装置120内に割り振ら
れる。本来第1のプロセッサ用に書かれたアプリケーシ
ョン・プログラム19を用いる探索は深度第1探索とよ
ばれる。深度第1探索とは、エンド・ノード(タイプ
0)、たとえば、IRET命令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図に示す順序でメモ
リに記憶される。
第3B図及び第3C図を参照すると、ノード101の各
々について、シミュレータは2つのフィールドをメモリ
に保持する。その一方のフィールドは、命令100が必
要とする条件コード21−26であり(レジスタ4
2)、他方のフィールドは、命令100によってセット
される条件コード21−26である(レジスタ43)。
その時点でどの条件コードをセットしなければならない
かを最適化するため、伝播過程が実行される。これは、
割り振られた最後の命令から割り振られた最初の命令に
進むことによって行なわれる。この順序で命令が循環待
ち行列から取り出される。ノード101のレジスタ42
は、そのノードのレジスタ43の補数をすべての子孫ノ
ードのレジスタ42とAND演算し、その結果を、更新
されるノード101のレジスタ42とOR演算してレジ
スタ42に入れることによって更新される。更新される
レジスタ42は条件コード21−26を子孫が必要とす
るかどうかを反映する。すべての子孫が実行済みとマー
クされている場合は、更新されているノード101も実
行済みであり、ノード101が待ち行列から取り出され
る。ノードが実行されていない場合は、その命令は待ち
行列の終わりに置かれる。待ち行列が空であって、すべ
てのノードが処理済みであることを示すか、あるいは、
何も変わっていない、すなわち、更新されなかったノー
ドが幾つか待ち行列に残っている状態になるまで、持ち
行列が調べられる。
第2の経路がグラフを用いて実行される。この経路で
は、その子孫が必要とする条件コードであるとこのとき
示されている条件コードに肯定応答するためにセットさ
れた条件コードを減少させることによって、レジスタ4
3が更新される。
この解析の終わりで、各ノード101は、どの条件コー
ド21−26をセットしなければならないかを示す(レ
ジスタ43)。条件コード21−26の数は、その命令
によって初めにセットされた数よりも少なくすることが
できる。この1組の条件コードは、後続の命令が使用す
る条件コードのみを含む。たとえば、戻り命令128
は、後続の命令が実行まで未知なので、予防措置として
条件コード21−26のすべてを使用することをレジス
タ42で示す。移動命令127は一般には条件コード2
1−26を使用しないが(レジスタ42)、後続の戻り
命令128がそれらを必要とするので使用を示す(レジ
スタ42)。加算命令126は条件コード21−26を
使用しないが(レジスタ42)、後で使用できるよう
に、それらをすべてセットする(レジスタ43)。シフ
ト命令125は一般には条件コード21−26のすべて
をセットするが(レジスタ43)、後続の加算命令12
6がそれらを使用しないので、この場合はセットする必
要はない。加算命令126が条件コード21−26を後
で使用できるようにセットすることはすでに解析され
た。この解析は、使用レジスタ42及びセット・レジス
タ43を更新するためのものであり、フラグ解析を実行
するために指定された順序で以前に記憶された命令10
0のリストを、逆の順序で進む。
第3D図からわかるように、翻訳130では減分命令1
24及びシフト命令125(第3C図)に対してそれぞ
れ1つの命令しか必要ではなかった。それとは対照的
に、条件コード21−26を後で使用できるようにセッ
トする加算命令126は6つの命令を必要とした。
同様に、第3A図のフラグ解析30はまた、すべての条
件コードをセットする比較命令が後続の命令で6つの条
件コードのうちJE命令104が使用する0ビットとJ
B命令103が使用する桁上げビットの2つしか必要と
しないことを示している。他の条件コードのいずれも必
要でない。さらに、第3A図に示す条件付き分岐のどの
子孫も他の条件コードを必要としない。したがって、シ
ミュレータは、条件コードのセッティングを気にかける
ことなく、3つの命令102、103、104のブロッ
クを1つの単位として翻訳することができる。したがっ
て、対応する条件コードの保管を必要とする命令の数が
減少する。
フラグ解析という従来のコンパイラ技術をプロセッサ・
シミュレータに適用することにより、後続の命令が条件
コードを使用するかどうかに関する基本的知識が得られ
る。第1のプロセッサ命令100を第2のプロセッサ命
令130に翻訳するコード発生機構29は、多くの場
合、条件コード情報を使って、単一の第2プロセッサ翻
訳命令を発生する。このため、各命令の後でフラグ・レ
ジスタが最新状態に保持された場合に、不必要なサイク
ルが減少しシミュレータの処理能力が向上する。
フラグ解析の結果を使って制御の流れをシミュレートす
るための翻訳命令を減らすことに加えて、フラグ解析か
らの結果を、割込みポーリングの最小化法で使用するこ
とができる。
E4.命令アドレスの翻訳 本発明の好ましい実施例であるシミュレータは、IBM
PC ATで使用されるIntel iAPX 80
286プロセッサ(第1のプロセッサ)の命令を、IB
M RT PCで使用されるROMPプロセッサ(第2
のプロセッサ)のシミュレータ命令に翻訳する。これら
の翻訳は、本来シミュレートされる第1のプロセッサ用
に書かれたアプリケーション・プログラムが制御権をそ
の同じアドレス再び移すとき再使用できるように保管さ
れる。制御権を移さない命令の場合は、その命令の命令
ポインタに命令の長さを加えることによって、次の命令
ポインタ(IP)の判定が行われる。順次シミュレータ
命令の同様のシーケンスがシミュレータによって発生さ
れる。命令は順に流れるので、対応する翻訳を探し出す
必要はない。
別の種類の命令は制御権を静的に移す。すなわち、命令
ポインタから一定変位を加算または減算することによっ
て、新しい命令ポインタが計算される。これは相対分岐
と呼ばれている。シミュレータは、対応する翻訳に対す
る第2のプロセッサの相対分岐を発生する。
命令セットは、コード・セグメント内で制御権を新しい
命令ポインタに移す3つの命令を含み、新しい命令ポイ
ンタは、実行時にレジスタまたはメモリからロードされ
るので、静的に決定することができない。サブルーチン
からの戻り(RET)命令がその1つである。この命令
がシミュレートされる速度がシミュレータの全体的処理
能力に影響を及ぼし、処理システムが戻り命令を実行す
るのに他のどの命令よりも多くの時間がかかる場合には
特にそうである。他の2つの命令は間接飛越し命令及び
間接呼出し命令である(レジスタまたはメモリ)。これ
らの命令は戻り命令と同様に扱われる。
たとえば、第1のプロセッサは2つのレジスタを使って
命令にアドレスする。コード・セグメント・レジスタ3
3(第3B図)はメモリ120(第3C図)の64Kブ
ロック119の位置を記述する。命令ポインタ・レジス
タ31(第3B図)はそのコード・セグメント33に入
るためのオフセットである。命令ポインタ31は、命令
100が64Kバイトのどこにあるかを記述する。第1
のプロセッサは、命令ポインタ31(第3C図)を用い
てコード・セグメント33内を指定することにより命令
にアドレスする。
本発明のシミュレータは第6図に示すデータ構造を使っ
て、コード・セグメント33と命令ポインタ31からな
る第1のプロセッサの命令アドレス100を、対応する
第2のプロセッサのメモリ120内のアドレスにマップ
し、そこで第2のプロセッサの命令シーケンス130が
同じ機能を実行する。
本発明の方法では、その値が実行時に決定される新しい
命令ポインタ31とコード・セグメント33が、サブル
ーチンからに戻り命令、間接飛越し命令及び間接呼出し
命令、またはソフトウェア割込み命令など、制御権を動
的に移す命令に対する対応する翻訳のシミュレータ機械
(第2のプロセッサ)のアドレスに変換される。
シミュレータは3段階手法(第7図)を使って、制御権
を動的に移す3つの命令をシミュレートする。この3段
階手法は連続的に編成されている。最も速く、かつ最も
公算の大きなケースが最初に実行される。最初の手法が
失敗した場合に第2の手法が使用される。第3の手法は
最も遅い手法であり、命令ポインタをシミュレータ機械
のアドレスに首尾よく変換することを保証する。第6図
には第2及び第3の手法を示す。
第5図及び第7図を参照すると、新しい命令ポインタに
ついて実行される最初の動作は、ステップ141で、そ
れをその命令の前回の実行によって作成された値と比較
することである。それらの値が一致した場合は、対応す
るアドレスへのシミュレータ機械の相対分岐が行なわれ
る。ステップ142で、値が一致するかどうかを排他的
OR動作で判定し、一致する場合は、ステップ143で
条件付き分岐が制御権を移す。このためルックアップ・
アドレスの高速計算が可能になる。ルックアップが成功
した場合は、XIL及びBEQ命令がそれに応じて変更
される。XIL命令で排他的OR演算される値は新しい
命令ポインタを含み、分岐命令に対する相対オフセット
は新しい目標アドレスを示す。制御権は新しい目標に移
される。
第6図及び第7図を参照すると、上記手法が失敗した場
合、すなわち、命令ポインタ31が、その命令が前回実
行されたときと異なる場合は、ハードウェアの翻訳ルッ
ク・アサイド・バッファと類似したアドレス・マッピン
グ用翻訳ルック・アサイド・バッファ34を使ってテー
ブル・ルックアップが行なわれる。第1プロセッサ命令
から第2プロセッサ命令への変換は、以下に説明する方
法を用いる。
第2プロセッサ命令130は、翻訳されるとき、属性と
呼ばれる第1プロセッサのレジスタの特定の値を取る。
これらの属性翻訳プログラムで使って、特定の場合に一
層効率的なコードを発生させることができる。たとえ
ば、スタック・アラインメントが偶数の場合、ハーフワ
ード命令を使ってデータをスタックとの間で転送するこ
とができる。さもない場合は、2バイト命令を使用しな
ければならない。第1プロセッサの命令100ブロック
用のコード・セグメント33の値及びスタック・ポイン
タ35のアラインメントがそのブロックの属性と呼ばれ
る。コード・セグメント33及びスタック・ポインタ3
5は共に16ビットのフィールドである。属性はコード
・ブロック・ヘッダ36及びアドレス・マッピング翻訳
ルック・アサイド・バッファ34中にある。異なる属性
を有する第1プロセッサ命令100の翻訳130は別々
に保持される。
この方法は命令ポインタ31の下位13ビット32を受
け取り、ステップ144で、それを一定の仮想アドレス
で64Kバイトの境界に整合されたテーブル34に入る
ためにインデックスとして使用する。その項目は、2ワ
ードを含む。最初のワードは属性を含む。最初の16ビ
ットCS145はコード・セグメント33の値であり、
次のビット47は、S1と表示されたスタック・ポイン
タ35のアラインメントを含み、V1と表示された次の
ビット46は有効ビットであり、その項目が有効でない
場合は0、有効な場合は1である。使用されないビット
51が幾つかある。32ビット・ワードの最後の3ビッ
ト48は、IP1と表示された命令ポインタ31の上位
3ビット49である。
したがって、この方法は、ステップ144で、アドレス
・マッピング・テーブル34を命令ポインタ31の下位
13ビット32で指示し、ステップ145で、最初の1
6ビットCS1、45をコード・セグメント33の現在
値と比較するというものである。このことは、命令が同
じコード・セグメント中にあり、前回の命令が最近実行
された可能性があることを示す。それが一致する場合、
ステップ146で、スタック・ポインタ35の下位ビッ
ト41がS1、47と比較されて、翻訳の際にスタック
のアラインメントについて立てられた仮定が無視されて
いないことを確認する。これが一致し、V1、46がオ
ンで項目が有効なことを示し、IP1、48が命令ポイ
ンタ31の上位3ビット49と一致する場合は、アドレ
ス・マッピング翻訳ルック・アサイド・テーブルで的中
があったことになる。すなわち、現在の命令は、以前に
に翻訳された第2プロセッサ命令で正確に識別される。
ステップ175で、次にワード52は、第1プロセッサ
命令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で、各項
目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を
記述するツリーのルートを指すポインタである。
このツリーの各ノード、すなわち、コード・ブロック8
3は、第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の始めからその命令ポインタへの適当
な入口点までのオフセットを含む。
以上要約すると、2つの命令ポインタがテーブル内の同
じ項目にハッシュするというまずあり得ない場合、また
は、アプリケーション・プログラムが初めて制御権をそ
の命令ポインタに渡す場合に、テーブル・ルックアップ
は失敗する。いずれの場合にも、アドレスを変換するた
め、シミュレータはより遅いデータ構造、すなわち、2
進ツリー83にアクセスする。見つからない場合は、ス
テップ174で、翻訳プログラム27を呼び出して、第
1プロセッサ命令の新しいブロックに対するシミュレー
タ機械(第2のプロセッサ)の等価命令を発生させ、翻
訳ルック・アサイド・バッファ34及びコード・ブロッ
ク82が更新される。
E5.メモリ・マッピング 第8図を参照すると、処理システム1のメモリは種類及
び内容により分類することができる。領域Iはランダム
・アクセス・メモリ(RAM)152である。RAM1
52の内容は命令とデータである。CPU93はこのメ
モリ領域に対して読み書きを行なうことができる。
第2のメモリ領域はアダプタ・メモリ(ビデオ)153
と呼ばれる。CPU93は明示的なIN/OUT命令を
使って、線167として示すように、表示装置などの出
力装置92に接続された入出力アダプタ91に直接アク
セスすることができ、または、メモリ命令を使って、ビ
デオ・バッファ153を介して入出力アダプタ91にア
クセスすることができる。装置92に出力するためビデ
オ・バッファ153に対してメモリ命令を使用すること
は、それがメモリ位置を介するものの、実際にアダプタ
に入る入出力なので、メモリ、マップ入出力と呼ばれ
る。CPUが有するメモリに入る命令は明示的入出力
(IN/OUT命令)を実行するための命令よりも多い
ので、メモリ・マップ入出力を使うとより広範な命令の
使用が可能になる。メモリのビデオ範囲の内容は出力デ
ータ、すなわち、メモリ、マップ入出力である。
第3の種類のメモリは、読取り専用記憶装置(ROS)
154と呼ばれる領域IIIである。これは読取り専用メ
モリ(ROM)とも呼ばれる。ROS154の内容は大
抵は命令であるが、データであってもよい。どちらの場
合にも、ROSの内容は決して変更されない。
IBM PC ATなどの処理システムのアドレス空間
150は論理的にこれら3つの領域に分かれる。最初の
領域は640Kバイトのプロセッサ読み書き記憶領域、
すなわち、RAM152である。2番目の領域は、入出
力アダプタ、すなわち、ビデオ153用に予約された2
56Kバイトの領域である。これらの領域には、装置及
び装置依存ROS用のデータ・バッファが含まれる。3
番目の領域は128KバイトのプロセッサROS154
領域である。このROSはBIOS及びBASICを含
む。BIOS領域155に続いて1メガ領域166より
上にメモリがある。この好ましい実施例のシミュレータ
は286保護モードをサポートしないので、メモリ15
0のこの領域176は設けられない。
第1処理システムのアドレスを第2の処理システムのア
ドレスに変換するには、第1の処理システムのメモリを
第2の処理システムのメモリにマップしなければならな
い。
メモリをマップするには、第2の処理システムのオペレ
ーティング・システムの2つの共用メモリ・セグメント
190、180(第9図)が使用される。第1の共用メ
モリ・セグメント190は第1の処理システムのメモリ
のイメージ150を記憶するために使用される。第2の
共用メモリ・セグメント180は各メモリ位置ごとにそ
のイメージに含まれる内容のタイプを示す。
第2の処理システムのメモリ190には、第1の処理シ
ステム内に常駐する640Kバイトのメモリ152があ
り、それに続いてビデオ領域153、ROS(読取り専
用記憶装置)用の領域154、BIOS用の領域155
がある。最初のメモリ・セグメント152の前に、BI
OS領域155が複製されている。これは、オフセット
が循環してRAM152に戻るように、アプリケーショ
ンがセグメント・レジスタをメモリ150のROM15
5領域にロードすることがけいる場合に、マッピングを
簡単にするため行なわれたものである。したがって、こ
れらの領域の16進アドレス172−175は、第1の
処理システムのメモリ150内の領域のアドレスから6
4Kだけずれて、セグメント0×9と呼ばれる共用メモ
リ・セグメント190に入る。
その結果、シミュレータを働かせる処理システム内の仮
想メモリ・セグメントは、領域I152と及び領域III
154の2つのコピーとからなるすべてのPC ATプ
ロセッサ記憶域のイメージを含むため専用となる。第2
の処理システムに第1の処理システムからの出力装置が
接続されているときは、領域II153は存在しない。第
1の処理システムの出力装置が接続されていない場合
は、領域II153のイメージも存在する。
メモリ・セグメント190内のアドレス位置172−1
76は、第1の処理システムの実際のメモリ・イメージ
である。この領域172−176は、シミュレートされ
る第1の処理システム及び使用可能なメモリのアーキテ
クチャのように見える。
メモリ・イメージ172−176に加えて、翻訳された
コード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内に対応す
るメモリ位置を有する。
本発明のシミュレータのシステム及び方法は、再配置テ
ーブルを使って、第1の処理システムのメモリ150を
第2の処理システムのセグメント0×9、190または
セグメント0×F、181のいずれかにマップするもの
である。PC ATなどの第1の処理システムは2つの
構成要素、すなわち、セグメントとオフセットによって
メモリ位置にアドレスする。PC ATでは、そのセグ
メントは、64Kのメモリ・ブロックを指す16ビット
の値である。オフセットも16ビットであり、セグメン
ト内の変位を示す。セグメントのアドレスは、セグメン
トの値に16を乗じることによって計算される。
このシミュレータは、それぞれ32ビットを有する16
個の項目201−216を備えたテーブル195を使っ
て、PC ATのメモリ・アドレスをIBM RT P
Cの32ビット・メモリ・アドレスにマップする。PC
ATメモリ・アドレスのセグメントの上位4ビット
は、テーブルの16個の項目の1つを識別する。シミュ
レータはメモリ・アドレス計算を2つの部分に分ける。
まず、セグメント・レジスタがロードされるとき、シミ
ュレータはセグメントに16を乗じ、それをセグメント
の上位4ビットによって指定されるテーブル内の項目に
加える。次に、命令がメモリに対して読取りまたは書込
みを行なうとき、前のステップで計算された32ビット
の値に16ビットのオフセットが加えられる。前記32
ビットの値は、第2の処理システムのメモリにアクセス
するために使用されるアドレスである。
シミュレータの始動時に、再配置テーブル195が初期
設定される。最初の10項目201−210はRAM1
52に対応し、第2の処理システムのセグメント0×9
を指すように0×90010000に初期設定される。
この初期設定値は、RAM152の前にあるセグメント
0×9、10×9にマップされるBIOS155の最初
のインスタンス用のスペースをもたらす64Kのオフセ
ットを含むことに留意されたい。BIOS155にアド
レスするセグメントに対応する最後の項目216は0×
90000000−0×F0000または0×8FF1
0000で初期設定される。このようなセグメントに1
6を乗じて加えると、その結果得られる値は0×900
00000になり、それによってBIOS155がセグ
メント0×9、190の始めにマップされる。11番目
ないし15番目の項目211−215は0×40000
00または0×90010000で初期設定されて、第
1の処理システムの対応する出力装置が接続されている
かどうかに応じて、セグメント0×F、181またはセ
グメント0×9、190のいずれかを指す。
状況制御セグメント、すなわち、セグメント0×8、1
80が、オペレーティング・システムの別の共用メモリ
・セグメントに記憶される。状況制御セグメント180
はセグメント0×9、190に対する第1の処理システ
ムのメモリの内容のタイプを記録する。この情報は、シ
ミュレータが、メモリ位置がデータ、命令コードを含む
のか、それともビデオ項目なのかを判定するために使用
する。
以上、メモリに対する読取りまたは書込みを行なう命令
をシミュレートするときに使用するアドレスを、シミュ
レータがどのように計算するかについて説明した。メモ
リに書込みを行なう場合は、特別な処理が必要となるこ
とがある。
命令がメモリに記憶される場合、シミュレータは、その
命令が翻訳済みであるかどうかを記録する。翻訳された
コードが常に正しいことを確認するため、命令変更の検
査が行なわれる。アプリケーションが命令変更を行なっ
た場合は、元のコード命令に対する翻訳されたコードが
除去され、新しい命令がシミュレータのプロセッサの新
しい命令シーケンスに翻訳される。命令の正しい翻訳を
実行させるための他の処置を取ることもできる。
同様に、出力装置への出力をシミュレータがさらに処理
する必要があるかどうか判定するために、ビデオ更新の
検査が必要である。これは、第1の処理システムの出力
装置がシミュレータを働かせる第2の処理システムに接
続されておらず、したがって、第1処理システムの出力
装置をシミュレートしなければならない場合に行なわれ
る。メモリ・マップ入出力の場合は、出力データを表わ
す特別なハードウェアが変更されるかどうかを記憶時に
検出しなければならない。
メモリに記憶するとき、セグメント0×8、180を使
って、命令またはメモリ・マップ入出力について特別な
処理が必要かどうか判定する。セグメント0×8、18
0は、セグメント・レジスタ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−251を有する
再配置テーブル195が、第1処理システムからの出力
データをセグメント0×F、181にマップし、第1の
処理システムの出力装置が接続されているので、シミュ
レータによるそれ以上の処置は必要でないことを示す。
メモリへの記憶位置がセグメント0×9であろうとセグ
メント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に対するものであったかどうかを判定す
ることが必要になることがある。
各バイトに対応する状況バイトをメモリ・イメージ19
0またはメモリ・マップ入出力181内に保持するこに
より、ビデオ更新、メモリ・マップ入出力及び命令変更
を検出することができる。状況セグメント8、180内
のフラグは、次のようにメモリの内容の種類を示す。
0=データ 1=命令入口点 2=命令の後続バイト 3=組合せ命令(第1バイトは有効入口点でない) 8=この命令上の区切り点セット 16=ビデオ 上記のように、0でない値は、シミュレータによる処理
がさらに必要なことを示すことがある。「1」は、それ
が入口点であり、第1の処理システムの命令の翻訳が2
進ツリー中にあることを示す。「2」は、それが後続の
ものである、すなわち2バイト以上の長さの第1のプロ
セッサの命令がシミュレートまたは翻訳されることを意
味する。このバイトはこのとき次のバイトに対応する。
これは、第1の処理プロセッサの命令を表わすために2
バイト以上が必要であるという事実を考慮したものであ
る。「4」のフラグは、組合せが行なわれることを示
す。組合せとは、グラフの解析の結果、幾つかの組み合
わされた第1のプロセッサの命令をシミュレートする方
が第1のプロセッサの各命令を別々に翻訳するよりも翻
訳されたシミュレータ命令が少なくてすむと判定された
という意味である。たとえば、第3A図のPUSH命令
105とPOP命令106が組み合わされた。その結
果、CSレジスタ内の値がDSレジスタに移された。こ
れら2つの命令105、106が行なうことはそれだけ
であるとフラグ解析から判定されるので、2つの命令を
1つに組み合わせて、2つの命令を別々に実行するより
も速く実行することができる。
「8」のフラグは、区切り点がセットされていることを
示す。このため、デバッグ・プログラムがシミュレータ
に作用することが可能になる。16のフラグは、情報が
ビデオ・データであることを示す。シミュレータはこの
ようにして、アプリケーションが終了してビデオ画面を
更新したことを検出する。
上記の方法は、長くて時間のかかる検査を実行しメモリ
の更新を処理して戻るサブルーチンへの分岐が必要であ
った従来のシミュレータに比べて、処理能力が増大す
る。サブルーチンへの分岐だけで、通常少なくとも5サ
イクル必要である。メモリへの記憶は非常に頻繁な動作
であるので、これは有効である。したがって、メモリへ
の記憶というオーバーヘッドが少しでも減少するとシミ
ュレータの効率が大幅に増大する。
F.発明の効果 本発明によれば、メモリを更新する最初のプロセッサ命
令を調べて、その命令が後続の命令を変更するかどう
か、またはビデオ・バッファ変更を行なうかどうか判定
している。したがってこのような変更を検出するために
必要とされるサイクル数、すなわち命令の数を減少させ
ることができる。
【図面の簡単な説明】
第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……BIOS、15……読取り専用記
憶装置、16……共用メモリ・セグメント、18……オ
ペレーティング・システム(DOS)、19……アプリ
ケーション・プログラム。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】第1プロセッサの命令セット中の複数の第
    1命令からなる制御の流れとしてのアプリケーションを
    第2プロッセサの命令セット中の複数の第2命令によっ
    てシミュレートするシミュレーション方法において、 上記第1命令からなる制御の流れを上記複数の第2命令
    からなる制御の流れに変換するステップと、 上記アプリケーションが実行されている処理システムの
    複数のメモリ位置の1つ1つに対してその内容の種類を
    表示するステップと、 上記変換の間に対応するメモリ位置に上記内容の種類が
    命令であることを示す表示を記憶するステップと、 上記複数のメモリ位置の1つに記憶を行なう間に、上記
    記憶が命令を修正したかどうかを上記表示によって判別
    するステップとを有することを特徴とするシミュレーシ
    ョン方法。
JP63318666A 1988-02-01 1988-12-19 シミュレーシヨン方法 Expired - Lifetime JPH0628036B2 (ja)

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 JPH025140A (ja) 1990-01-10
JPH0628036B2 true 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 (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2002201C (en) * 1988-12-06 1999-04-27 John Charles Goettelmann Translation technique
US5983012A (en) * 1993-09-28 1999-11-09 Bull Hn Information Systems Inc. Executing programs of a first system on a second system
US6006029A (en) * 1993-09-28 1999-12-21 Bull Hn Information Systems Inc. Emulating disk drives 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
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
US5768577A (en) * 1994-09-29 1998-06-16 International Business Machines Corporation Performance optimization in a heterogeneous, distributed database environment
US5764949A (en) * 1994-09-29 1998-06-09 International Business Machines Corporation Query pass through 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
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
US7849362B2 (en) * 2005-12-09 2010-12-07 International Business Machines Corporation Method and system of coherent design verification of inter-cluster interactions
US9367493B2 (en) * 2005-12-09 2016-06-14 Globalfoundries Inc. Method and system of communicating between peer processors in SoC environment
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
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
US8020168B2 (en) * 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a 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
US20090282211A1 (en) * 2008-05-09 2009-11-12 International Business Machines Network On Chip With Partitions
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
US8494833B2 (en) * 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
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
EP4002097B1 (en) 2016-03-11 2024-05-01 LZLabs GmbH Load module compiler

Family Cites Families (16)

* Cited by examiner, † Cited by third party
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 電子式計算機
JPH0658646B2 (ja) * 1982-12-30 1994-08-03 インタ−ナショナル・ビジネス・マシ−ンズ・コ−ポレ−ション デ−タ持続性が制御される仮想記憶アドレス変換機構
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

Also Published As

Publication number Publication date
EP0327195A2 (en) 1989-08-09
EP0327195A3 (en) 1991-10-16
JPH025140A (ja) 1990-01-10
US5301302A (en) 1994-04-05
DE68921775T2 (de) 1995-10-12
DE68921775D1 (de) 1995-04-27
EP0327195B1 (en) 1995-03-22

Similar Documents

Publication Publication Date Title
JPH0628036B2 (ja) シミュレーシヨン方法
US4951195A (en) Condition code graph analysis for simulating a CPU processor
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
US5790825A (en) Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5274811A (en) Method for quickly acquiring and using very long traces of mixed system and user memory references
US6009261A (en) Preprocessing of stored target routines for emulating incompatible instructions on a target processor
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
US5819063A (en) Method and data processing system for emulating a program
US6496922B1 (en) Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
US5815686A (en) Method and apparatus for address space translation using a TLB
US5617553A (en) Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer
KR100258650B1 (ko) 에뮬레이션 문맥 스위치 저장 및 복구를 수행하는 방법 및 프로세서
US5574887A (en) Apparatus and method for emulation routine pointer prefetch
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
JP2002366367A (ja) プログラム命令解釈
US5361389A (en) Apparatus and method for emulation routine instruction issue
EP0327198B1 (en) Processor simulation
US20070156386A1 (en) Linearization of page based memory for increased performance in a software emulated central processing unit
Franca et al. Design and realization of MLM: a multilingual machine
JPH0695919A (ja) コンピュータ・システムのエミュレーション方法
JPH06250874A (ja) Cpuシミュレーション方法およびcpuシミュレータ
Wolczko Implementing Smalltalk-80 on the ICL PERQ.