JPH025139A - シミユレーシヨン方法 - Google Patents

シミユレーシヨン方法

Info

Publication number
JPH025139A
JPH025139A JP63318665A JP31866588A JPH025139A JP H025139 A JPH025139 A JP H025139A JP 63318665 A JP63318665 A JP 63318665A JP 31866588 A JP31866588 A JP 31866588A JP H025139 A JPH025139 A JP H025139A
Authority
JP
Japan
Prior art keywords
instruction
processor
instructions
simulator
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP63318665A
Other languages
English (en)
Other versions
JPH0782441B2 (ja
Inventor
Jr Richard G Fogg
リチヤード・グレゴリー・フオグ・ジユニア
Nicolas Arturo M De
アツロウ・マーチン・デ・ニコルス
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 JPH025139A publication Critical patent/JPH025139A/ja
Publication of JPH0782441B2 publication Critical patent/JPH0782441B2/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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 以下の順で本発明を説明する。
A、産業上の利用分野 B、従来技術 C0発明が解決しようとする問題点 り0問題点を解決するための手段 E、実施例 El、処理システム環境(第1図) E2.シミュレーションの概要(第2図)E3.条件コ
ードのフラグ解析(第3A図〜第3D図、第4図) E4.命令アドレスの翻訳(第5図〜第7図)E5.メ
モリ・マツピング(第8図〜第10図) F0発明の効果 A、産業上の利用分野 本発明は、第1の処理システムの特定の第1のプロセッ
サ用に書かれたアプリケーションを実行するデータ処理
システムに関し、さらに具体的には、異なる第2のプロ
セッサを仔する第2の処理システム上でそれらのアプリ
ケーションを実行するため第1のプロセッサをシミュレ
ートするシステム及び方法に関するものである。
B、従来技術 ]ンピュータ技術の現在の進歩により、処理システムの
プロセッサ(本明細書では中央処理装置(CPU)とも
呼ぶ)は絶え間なく変化してきている。種々のプロセッ
サの発展の例には、IBMPCで使用されるIntel
 (IntelはIntel社の登録商標)8088プ
ロセッサ、IBM PCAT(PCATはIBM社の登
録商標)で使用されるInte18028E3プロセッ
サ、IBMパーソナル・システム/2(パーソナル・シ
ステム/2はIBM社の登録商標)で使用されるInt
e180386プロセッサ、IBMRT  PC(RT
  PCはIBM社の登録商標)で縮小命令セット・コ
ンピュータ(RISC)アーキテクチャを使用するIB
Mリサーチ10PDマイクロプロセッサ(ROMP)が
ある。その他のプロセッサには、わけてもMotoro
la6800168020がある。
種々の処理システムのハードウェアは、新しいプロセッ
サの増大した処理能力を利用できるように急速に変化し
ている。ハードウェアが変化することの欠点は、以前の
プロセッサ用に書かれたソフトウェアが一般にはそれよ
り後のハードウェア技術で使用できないことである。最
初にソフトウェアが書かれたとき対象とされた処理シス
テムとは異なる処理システムでそのソフトウェアを使用
することができる場合でも、アプリケーションの性能は
、異なる処理システム上では、そのアプリケーションが
当初対象とした処理システム上におけるほどには十分で
はない。その結果、長い開発期間を要したソフトウェア
・アプリケーションがすぐに時代遅れなものになる。以
前に書かれたソフトウェアが使えないことは、最初に書
かれたアプリケーションの機能が依然として非常に適切
であり、新しいハードウェアの処理システム上で必要と
されている場合には、−暦法劇的である。
その結果、一般には、新しいハードウェアが最初に市場
に発表されたとき、「新しい」ハードウェア設計用に特
に書かれた「新しい」ソフトウェアが、限られた量しか
ないことになる。これは、部には、ソフトウェア・アプ
リケ−シロン・プログラムの開発期間が長いこと、及び
市場でのハードウェアの発表前に製造者が新しいハード
ウェア設計を秘密にしておくことのためである。ソフト
ウェア製造者は、処理システムのハードウェアに関しで
ある程度の事実を知らなければその処理システム用のソ
フトウェア・プログラムを書くことができない。
理想的には、処理システムの製造者は、その処理システ
ム用の新しいハードウェアが市場で発表されるとすぐ、
その処理システム上で実行できる大■のソフトウェアが
ほしいと考えるはずである。
顧客は、豊富な量のソフトウェアがすでに利用可能であ
ることが分かれば、新しい処理システムに投資する可能
性が一層大きくなるはずである。
「旧い」ハードウェア設計用に以前に書かれた大量のソ
フトウェアを転用する道を開く手法が幾つかあった。当
初別のプロセッサ用に書かれたアプリケーションを実行
できるようにするための以前のハードウェア手法は、コ
プロセッサを備えた新しい処理システムを構築すること
である。この方法では、処理システムは両方のタイプの
プロセッサ、すなわち、新しいプロセッサ用と旧プロセ
ッサ用のアプリケージジンを実行することができる。
たとえば、IBM RT  PCは、当初IBMPCA
T用に書かれたアプリケーションを使用するためのIB
M PCATコプロセッサヲ含ンでいた。しかし、コプ
ロセッサは、オペレーティング・システムで低水準でサ
ポートされていたので、AIX(AIXはIBM社の商
標)オペレーティング・システムによって提供される機
能を完全に利用することができなかった。AIXオペレ
ーティング・システムによって提供される機能の1つは
、米国特許出願第820451号に記載された多重タス
ク処理である。
しかし、そのコプロセッサはPCATをエミュレートす
るためのハードウェア・アダプタを含んでいるので、ユ
ーザは一時に1つのセツションに制限される。言い換え
ると、−度コプロセッサが始動すると、コプロセッサの
他のインスタンスは実行できない。
このコプロセッサはまた、第1の処理システムのプロセ
ッサの速度に限定され、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができない。
第2の手法はソフトウェアによって第2のプロセッサを
シミュレートすることである。ソフトウェア・シミュレ
ータは、あるプロセッサ用に以前に書かれたソフトウェ
アを異なるプロセッサを有する新しい処理システムで実
行するための機構を提供する。ソフトウェアによるシミ
ュレーション手法では、処理システムが進歩するにつれ
て、より速い第2の処理システムの利益を享受すること
ができる。ソフトウェア手法はまた、オペレーティング
・システムの多重タスク処理機能を使って、第1のプロ
セッサの多数のインスタンスを提供することが可能であ
る。
現在市販されているソフトウェア・シミュレータには、
In51gn1a Solutions(Insign
ia 5olutionsはIn51gn1a 5ol
utions社の商標)による5oftPC(Soft
 PCはIn51gn1a 5olutionsの商標
)及びCommodore社のAmiga (Moto
rola社の68000をベースとする)用の51m1
le Re5earch社によるAmiga Tran
srorserがある。後者のシステムに関する情報は
、論文rAmigaの切り札(Amiga’s Tru
mp Card) J 、AM I G A  WOR
LD、第1巻、第2号、1985年11月り12月に発
表されているo Phoenix Technolog
ies社も、Motoro 1a68000プロセッサ
を備えたAI)ollo機用のIntelプロセッサを
シミュレートするためのシミュレータを提供している。
どのCPUプロセッサもそれぞれ特定の命令セットを有
する。特定のCPUプロセッサ用のソフトウェア・アプ
リケーション・プログラムが開発されるとき、それは目
的コードにコンパイルされる。
目的コードは、特定の命令セットをサポートするどのC
PU上ででも実行されることを1指したものである。シ
ミュレータは、特定の命令セットで実行されるように書
かれた目的コードを受は取り、同様のまたは異なる命令
セットを打する異なるプロセッサ上で実行できるように
それを変換する。
2台のプロセッサの2種類の命令セットが異なっていれ
ばいるほど、他方のプロセッサをシミュレートすること
は一層困難になる。
たとえば、Inte180286プロセッサは多種多様
な命令を提供するという点で、非常に豊富な命令セット
を有する。各命令は特定のタイプの状況に特に対応して
いる。さらに、各命令は幾つかの動作を実行することが
できる。一方、RTPC内のROM’ Pプロセッサは
、より少ない命令と、1つの命令当たりより少ない機能
を提供する縮小命令セット(RISC)プロセッサを有
する。
I n t e 18028θ内の各命令は複数のタス
クを実行することができるので、ROMP  RISO
で同じタスクを実行するには、より多くの命令が必要に
なる。
しかし、命令セットを簡略化することによりプロセッサ
の速度を増大させることができる。より多くの命令が必
要となるものの、より一般的でより簡単なタスクを実行
する間に、複雑な命令に余分な時間を費やすことはない
以前のソフトウェア・シミュレータの方法では、命令の
効果をシミュレートするサブルーチンを作成していた。
シミュレートされる機械がその命令を実行することが必
要になるたびに、その命令を復号し実行するためにその
サブルーチンを呼び出すことになる。この手法の問題点
は、サブルーチンを呼び出して実行するたびに、命令を
復号するというオーバーヘッドが生じることである。し
たがって、シミュレートされるプロセッサの速度が影響
を受ける。
別のソフトウェア・ンミュレーシqン手法では、命令を
実行することが必要になるたびにサブルーチンを呼び出
す代わりに、命令をシミュレートするためにより短いホ
スト機械命令シーケンスをコンパイルした。その結果、
ある命令を復号し翻訳するというオーバーヘッドは、そ
の命令に最初に出会ったときに一度だけ生じる。この翻
訳は次に保管され、それ以後は、その命令がシミュレー
トされるたびに、その翻訳が実行される。これは、しば
しば第2世代のシミュレータと呼ばれている。
第1世代のシミュレータは命令を一度に1つ受は取り、
それを実時間で復号し、実行する。復号は、各命令が必
要とされるたびに各命令ごとに行なわれる。第2世代の
シミュレータは命令を一度に1つずつ調べ、それらの命
令を翻訳し、その後は戻って再び翻訳せずその翻訳を再
使用する。
以前の第2世代のシミュレータは、R8IMと呼ばれる
IBMシステム/370上でIBMROMP  CPU
をシミュレートするシミュレータであった。このシミュ
レータは、セルと呼ばれる、各命令用の固定量の記憶域
(各ハーフ・ワードにつき16バイト)を予約する。次
に、各RT命令ごとにこれらのセルのそれぞれに対して
I 8M370の命令が生成される。生成されるコード
の量が、1つのセルに入る量よりも少ない場合は(−殻
内にそうであるが)、次のセルの次の境界に分岐する。
命令をシミュレートするために生成されるコードの量が
1つのセルに入りきらない場合は、実行待環境ルーチン
・セットに分岐するサブルーチン呼出しが生成される。
このルーチン・セットは、エミュレーションを実行して
セルに戻り実行を完了する。もう1つのシミュレータは
IBMRT  PC上でIBMシステム/370のプロ
セッサをシミュレートするもので、解釈プログラム及び
解釈技術に関する計算機械協会シンポジウムで1987
年6月11日に発表され、ACMの1987年度発表要
旨集5IGPLANで公表されたC、メイ(May)の
論文「模倣:高速システム/370シミユレータ(旧m
ic : A Fast System/370 Si
mulator> jに記載されている。
第1世代のシミュレータは、シミュレートされる命令1
個当たり50ないし100個のホスト機械命令を実行す
る。第2世代のシミュレータは、シミュレートされる命
令1個当たり平均10個のホスト機械命令を実行する。
シミュレータが、シミュレートされる機械上で1つの命
令をシミュレートするために50または10個の命令を
必要とする場合、シミュレータを動かす第2のプロセッ
サは、匹敵する処理能力を示すためには、シミュレート
される機械よりもそれぞれ50倍または10倍速くなけ
ればならない。
したがって、当技術分野で従来実現されていたよりもシ
ミュレートまたは翻訳される命令1個当たりのシミュレ
ータ命令の数をさらに減らすことが望ましい。
たとえば、シミュレータが、シミュレートされる命令1
個当たり4個の命令しか使用しないよう設計でき、かつ
、シミュレータのプロセッサが、シミュレートされる機
械のプロセッサよりも4倍速い場合には、シミュレータ
は、シミュレートされる元の機械よりも速くなる。この
とき、ユーザは、シミュレートされた機械を使用してア
プリケーション・プログラムを実行することにより、ア
プリケーション・プログラムが当初書かれたとき対象と
なった機械を使用する場合よりも高い処理能力を得るこ
とになる。
したがって、別のプロセッサをシミュレータスる際に克
服すべき全体的問題は、シミュレートされる命令1個当
たりのシミュレータ(ホスト)命令の数をさらに減らし
て、シミュレータの処理速度を増大させることである。
C0発明が解決しようとする間圧点 したがって、本発明の目的は、シミュレートされる命令
1個当たりごとの平均のホスト機械命令数を減少させる
ことである。
D9問題点を解決するための手段 本R明のシミュレータは、本来別のプロセッサ用に書か
れたアプリケーションをソフトウェア・エミュレーショ
ンにより実行する。ソフトウェアによるシミュレーショ
ン手法では、シミュレータ機械のオペレーティング・シ
ステムの機能を利用できるというフレキシビリティが得
られる。本発明の好ましい実施例では、シミュレータは
RTPCのAIXオペレーティング・システム上のアプ
リケーションとして働く。したがって、シミュレータは
、AIXオペレーティング・システムの多重タスク処理
及び多重ユーザ機能を利用して、本来PCAT用に書か
れた多数のアプリケーションをアプリケーション自体に
変更を加えずに同時に実行することが可能となる。
本発明のシミュレーションの方法は、シミュレートされ
る機械命令1個当たりのホスト機械命令の数を減少させ
ることにより、従来のプロセッサ・シミュレーションの
方法よりも速いシミュレート・プロセッサの処理能力を
提供する。これは、従来必要なよりも多くの命令を使用
していた主要処理分野を特定し、次に、より少ない命令
を使って処理タスクを実施する新しい方法を創出するこ
とにより実現された。
CPUシミュレーションを増大させるため、すなわち、
シミュレートされる命令1個当たりのホスト命令の平均
数を減少させるために、従来必要なよりも多くの命令を
使用していた幾つかの主要処理分野を特定した。
第1に、条件コードの正しい値を維持し、保持する処理
タスクを特定した。条件コードは、たとえそれが実行中
に後続の命令によって使用されなくても、追跡されてい
た。たとえば、加算命令は、アーキテクチャでは、加算
を実行するのみならず、結果がOであるかどうか、あぶ
れがあるかどうか等を示す条件コードをセットするとい
う副作用をも有するものとして定義されている。大抵の
場合、実行中には条件コードは必要とされない。言い換
えると、それらのフラグを必要とする後続の命令はない
。第2世代のシミュレータでは、条件コードが必要とさ
れる場合に、それが何であるかを判定するのに十分な情
報を少なくとも記憶するための作業がすべての加算命令
について行なわれる。
大抵の場合は、これさえ無駄な作業である。
本発明の方法は、従来コンパイラ技術に適用されていた
技術を使用し、それをCPUシミュレータ技術に適用し
て、条件コードが後続の命令によって必要とされるかど
うかを動的に判定する。アプリケ−シロン・プログラム
に対するプロセッサの命令制御流れグラフを解析して、
命令の後に条件コードが必要とされるかどうかを判定す
る。シミュレータは、必要とされるかも知れない条件コ
ードを発生するのに十分な情報を保管する。そうでなく
、条件コードが必要とされないことがグラフ解析から判
定された場合は、その命令に対して必要とされる翻訳命
令の数が減少される。
E、実施例 El、処理システム環境 本発明のシステム及び方法の好ましい実施例は、複合命
令セットを用いたInte180286プロセッサを使
用するIBM  PCAT等の処理システムを、縮小命
令セット・コンピュータ(RISC)技術を用いたRO
MPプロセッサを使用するIBM RT PC等の第1
図に示す処理システム上でシミュレートする。RISC
7’ロセッサハ1命令当たり命令能は少ないが、命令を
速く処理することができる。Inte180286に基
づく機械とRISCに基づく機械のアーキテクチャは互
いにまったく異なっている。2つの処理システムのアー
キテクチャの差異が大きければ大きいほど、一方のプロ
セッサを他方の処理システム上でシミュレートすること
が一層難しくなる。
RT PC処理システム、IBM PCAT処理システ
ム、及びI n t e 180286プロセッサに関
するより詳しい情報については、以下の参照文献を引用
されたい。それらの開示を引用により本明細書に組み込
む。M、J、バッハ(Bach)、rThe Desi
gn orthe UNIX Operating S
ystemJ 1プレンテイス・ホール(Prenti
ce Hall) 、1986年。T、G、ラング(L
ang)及びT、L、?ザーソール(Motherso
le )、rDesign of the RTPCV
RM NucleusJ、1986年9月1日。
rAIX Operating 5yste+* Co
mmands RererenceVersion 2
 、  I J、IBM社、5C23−0790o  
rAIX Operating 5ysteo+ Ma
naging the AIXOperating S
ystem Version 2.  I J N I
 8M社18C23−0793゜rAIX Opera
ting SystemPrograms+ing  
Tools  and  Interfaces  V
ersion  2 。
1」、IBM社、5C23−0789゜rAIX Op
erating System Technical 
RererenceVersion2.  I J 、
第1巻及び第2巻、IBM社、5C23−0808及び
5C23−0809゜rIBM RTPersonal
 Computer TechnologyJ 11 
BM社、5A23−1057.1986年。
rVirtual  Re5ource  Manag
er  TechnicalReference Ve
rsion 2 、  I J 、第1巻及び第2巻、
IBM社、5C23−0816及び5C23−0817
a  riAPX 286 Programmer’s
  ReferenceManual  Includ
ing  the  1APX  286  Nume
ricSupp Iement J、Inte1社、2
10498−003.1985年。及びrIBM  P
CATTechnical Reference Ma
nualJ 、 I B M社11984年3月。
E2.シミュレーションの概要 第1図に示すように、シミュレータ10は処理システム
1のオペレーティング・システム12上でアプリケ−シ
ロン・プログラムとして実行される。第1図に加えて第
2図を参照すると、ステップ2でシミュレータ10が始
動されると、シミュレータ10はステップ3で、読取り
専用記憶装置(RO8)(読取り専用メモリ(ROM)
とも呼ばれる)15から、80286の命令を含むBI
O813ヲオペレーテイング・システム12の共用メモ
リ・セグメント16に複写する。ステップ4で、シミュ
レータ10はBIO813を翻訳し、ステップSで、B
IO813は、アプリケーション19が当初書かれたと
き対象とされたオペレーティング・システム(DO8)
18をロードする。
シミュレータ10は次にステップ6で、そのオペレーテ
ィング・システム18を翻訳して実行する。
ステップ7で、ユーザはオペレーティング・システム・
プロンプトでアプリケーション19を呼び出し1、ステ
ップ8で、シミュレータ10はアプリケ−シロン・プロ
グラム19を翻訳して実行する。
CPUシミュレーションの処理能力を増大させるため、
すなわち、シミュレートされる命令1個当たりのホスト
命令の平均数を減少させるため、現在必要なよりも多く
の命令を使用している主要処理分野を特定した。
E3.条件コードのグラフ解析 最初に、条件コードの正しい値を維持し、保持する処理
タスクを特定した。
多数のプロセッサ命令が、フラグ・レジスタ20に作用
して、フラグ・レジスタ20(第3C図)中の条件コー
ド21−26を、ある動作の結果を反映するように更新
する。異なる6つの条件コード、すなわち、あふれフラ
グ21、符号フラグ22、ゼロ・フラグ23、演算フラ
グ24(半桁上げとも呼ばれる)、パリティ・フラグ2
5、及び桁上げフラグ26がある。これらの条件コード
21−26は、結果がOであったかどうか、結果が負で
あったかど、うか、レジスタの桁上げが生じたかどうか
、またはあふれ条件がもたらされたかどうか等の一般条
件を示す。さらに、結果の下位バイトのパリティ(奇数
または偶数)及び動作の下位4ビツトの桁上げ(半桁上
げ)を示す条件も含む。
第1のプロセッサのフラグ・レジスタを最新状態に保つ
ことによってセットされる第1のプロセッサの命令をシ
ミュレートするには、レジスタに作用する全命令に対し
て追加のサイクルが必要となるはずである。このことは
、第1のプロセッサのアーキテクチャによって、条件コ
ード更新の異なる幾つかの組合せが定義される場合に特
に当てはまる。たとえば、条件コードは常にセットまた
はクリアされ、計算され、未変更のままにされ、あるい
は未定義のままにされることが可能である。
以前のシミュレータR8IM、すなわち、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はあふれフラグ
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個の命令が必要となったかも知れない場合に、
単一の第2のプロセッサ命令135(第3D図)を発生
することができる。この例ではADD命令命令用件条件
コード216が後続の命令128で必要となることが、
命令100の制御流れ(第3B図及び第3C図)からで
理解できる。したがって、翻訳された命令130(第3
D図)は、条件コードが必要でなかった場合には1つし
か命令を発生しない所を、6個の命令をもたらした。た
だし、条件コード21−28が必要でないことをグラフ
解析50が示す場合には、翻訳された余分な命令は発生
されない。
シミュレータ10は第1のプロセッサ命令100を第2
のプロセッサ命令130に翻訳するが、−度に1つの命
令の翻訳を行なわない。シミュレータ10は、これから
実行する翻訳のない第1の命令を調べ、第3A図に示す
命令のグラフ3oを作成しながら後続の命令の検査を続
行する。
グラフ30の各ノード101は1つの第1プロセッサ命
令100に対応する。各ノード101は多くとも2つの
子孫しか持てない。メモリ内の次の順次命令にのみ制御
権を移す順次命令102.105、tOS、108.1
1o1111.112の場合は、ノード101は、第3
A図に垂直線114として示すように、それぞれ1つの
子孫103.10B、107.109.111.112
.113しか持たない。条件付き分岐103.104の
場合には2つの子孫があり得、これらの命令は条件の真
偽をテストして、条件が真の場合はある命令に分岐し、
条件が偽の場合は次の命令に進む。割込み戻り命令10
9のように、ノード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」を付される。
命令が2つの子孫を持つ場合、すなわち、+fbelo
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−26も必要としないが、それら
のすべてをセットする(レジスタ43 ) 、 if 
below飛越しくJB)命令122は、桁上げ条件コ
ードがテストされるものなので、実行のために桁上げ条
件コード26を必要とするが(レジスタ42)、実行後
にどの条件コードもセットしない(レジスタ43)。i
f equal飛越しくJE)命令123は実行のため
に1fequal コード・ビットを必要とするが、実
行後にどの条件コードもセットしない。増分命令124
はあふれフラグ21及び演算フラグ24をセットしくレ
ジスタ43)、桁上げ条件コード2θを未変更のままに
する(レジスタ43)。このようにして、命令100の
残りの各々についてもグラフ解析を続ける。
ノード101は、アプリケーション・プログラム19が
ノードを見つけたとき順に記憶装置120内に割り振ら
れる。本来第1のプロセッサ用に書かれたアプリケーシ
ョン・プログラム19を用いる探索は深度第1探索とよ
ばれる。深度第1探索とは、エンド・ノード(タイプ0
)、たとえば、IRET命令109(第3A図)に達す
るまで命令を順次探索するという意味である。タイプO
の7−ドに達した後、探索は、複数の子孫を持つ最後の
命令に戻る。
メモリ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であり(レジスタ42)
、他方のフィールドは、命令100によってセットされ
る条件コード21−26である(レジスタ43)。その
時点でどの条件コードをセットしなければならないかを
最適化するため、伝播過程が実行される。これは、割り
振られた最後の命令から割り振られた最初の命令に進む
ことによって行なわれる。この順序で命令が循環待ち行
列から取り出される。ノード101のレジスタ42は、
そのメートのレジスタ43の補数をすべての子孫ノード
のレジスタ42とAND演算し、その結果を、更新され
るノード101のレジスタ42とOR演算してレジスタ
42に入れることによって更新される。更新されたレジ
スタ42は条件コード21−28を子孫が必要とするか
どうかを反映する。すべての子孫が実行済みとマークさ
れている場合は、更新されているノード101も実行済
みであり、ノード101が待ち行列から取り出される。
ノードが実行されていない場合は、その命令は待ち行列
の終わりに置かれる。待ち行列が空であって、すべての
ノードが処理済みであることを示すか、あるいは、何も
変わっていない、すなわち、更新されなかったノードが
幾つか待ち行列に残っている状態になるまで、待ち行列
が調べられる。
第2の経路がグラフを用いて実行される。この経路では
、その子孫が必要とする条件コードであるとこのとき示
されている条件コードに肯定応答するためにセットされ
た条件コードを減少させることによって、レジスタ43
が更新される。
この解析の終わりで、各ノード101は、どの条件コー
ド21−26をセットしなければならないかを示す(レ
ジスタ43)。条件コード21−26の数は、その命令
によって初めにセットされた数よりも少なくすることが
できる。この1組の条件コードは、後続の命令が使用す
る条件コードのみを含む。たとえば、戻り命令128は
、後続の命令が実行まで未知なので、予防措置として条
件コード21−26のすべてを使用することをレジスタ
42で示す。移動命令127は一般には条件コード21
−26を使用しないが(レジスタ42)、後続の戻り命
令128がそれらを必要とするので使用を示す(レジス
タ42)。加算命令126は条件コード21−28を使
用しないが(レジスタ42)、後で使用できるように、
それらをすべてセットする(レジスタ43)。シフト命
令125は一般には条件コード21−26のすべてをセ
ットするが(レジスタ43)、後続の加算命令126が
それらを使用しないので、この場合はセットする必要は
ない。加算命令126が条件コード21−26を後で使
用できるようにセットすることはすでに解析された。こ
の解析は、使用レジスタ42及びセット・レジスタ43
を更新するためのものであり、グラフ解析を実行するた
めに指定された順序で以前に記憶された命令100のリ
ストを、逆の順序で進む。
第3D図かられかるように、翻訳130では減分命令1
24及びシフト命令125(第3c図)に対してそれぞ
れ1つの命令しか必要でなかった。
それとは対照的に、条件コード21−26を後で使用で
きるようにセットする加算命令126は8つの命令を必
要とした。
同様に、第3A図のグラフ解析30はまた、すべての条
件コードをセットする比較命令が後続の命令で6つの条
件コードのうちJE命令104が使用するOビットとJ
B命令103が使用する桁上げビットの2つしか必要と
しないことを示している。他の条件コードのいずれも必
要でない。さらに、第3A図に示す条件付き分岐のどの
子孫も他の条件コードを必要としない。したがって、シ
ミュレータは、条件コードのセツティングを気にかける
ことなく、3つの命令102.103.104のブロッ
クを1つの単位として翻訳することができる。したがっ
て、対応する条件コードの保管を必要とする命令の数が
減少する。
グラフ解析という従来のコンパイラ技術をプロセッサ・
シミュレータに適用することにより、後続の命令が条件
コードを使用するがどうかに関する基本的知識が得られ
る。第1のプロセッサ命令100を第2のプロセッサ命
令130に翻訳するコード発生機構29は、多くの場合
、条件コード情報を使って、単一の第2プロセッサ翻訳
命令を発生する。このため、各命令の後でフラグ・レジ
スタが最新状態に保持された場合に、不必要なサイクル
が減少しシミュレータの処理能力が向上する。
グラフ解析の結果を使って制御の流れをシミュレートす
るための翻訳命令を減らすことに加えて、グラフ解析か
らの結果を、割込みポーリングの最小化法で使用するこ
とができる。
E4.命令アドレスの翻訳 本発明の好ましい実施例であるシミュレータは、IBM
 PCATで使用されるIntel  1APX 80
28Bプロセッサ(第1のプロセッサ)の命令を、IB
M RT  PCで使用されるROMPプロセッサ(第
2のプロセッサ)のシミュレータ命令に翻訳する。これ
らの翻訳は、本来シミュレートされる第1のプロセッサ
用に書かれたアプリケーション・プログラムが制御権を
その同じアドレスに再び移すとき、再使用できるように
保管される。制御権を移さない命令の場合は、その命令
の命令ポインタに命令の長さを加えることによって、次
の命令ポインタ(IP)の判定が行なわれる。順次シミ
ュレータ命令の同様のシーケンスがシミュレータによっ
て発生される。命令は順に流れるので、対応する翻訳を
探し出す必要はない。
別の種類の命令は制御権を静的に移す。すなわち、命令
ポインタから一定変位を加算または減算することによっ
て、新しい命令ポインタが計算される。これは相対分岐
と呼ばれている。シミュレータは、対応する翻訳に対す
る第2のプロセ・ソサの相対分岐を発生する。
命令セットは、コード・セグメント内で制御権を新しい
命令ポインタに移す3つの命令を含み、新しい命令ポイ
ンタは、実行時にレジスタまたはメモリからロードされ
るので、静的に決定することができない。サブルーチン
からの戻り(RET)命令がその1つである。この命令
がシミュレートされる速度がシミュレータの全体的処理
能力に影響を及ぼし、処理システムが戻り命令を実行す
るのに他のどの命令よりも多くの時間がかかる場合には
特にそうである。他の2つの命令は間接飛越し命令及び
間接呼出し命令である(レジスタまたはメモリ)。これ
らの命令は戻り命令と同様に扱ねれる。
たとえば、第1のプロセッサは2つのレジスタを使って
命令にアドレスする。コード・セグメント・レジスタ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が
同じ機能を実行する。
本発明の方法では、その値が実行時に決定される新しい
命令ポインタ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及びスタック・ポインタ35は共に16
ビツトのフィールドである。属性はコード・ブロック・
ヘッダ36及びアドレス・マツピング翻訳ルック・アサ
イド・バッファ34中にある。異なる属性を有する第1
プロセッサ命令100の翻訳130は別々に保持される
この方法は命令ポインタ31の下位13ビツト32を受
は取り、ステップ144で、それを一定の仮想アドレス
で64にバイトの境界に整合されたテーブル34に入る
ためのインデックスとして使用する。その項目は、2ワ
ードを含む。最初のワードは属性を含む。最初の16ビ
ツトC8145はコード・セグメント33の値であり、
次のビット47は、Slと表示されたスタック・ポイン
タ35のアラインメントを含み、vlと表示された次の
ビット46は有効ビットであり、その項目が有効でない
場合は0、有効な場合は1である。使用されないビット
51が幾つかある。32ビツト・ワードの最後の3ビツ
ト48は、IPlと表示された命令ポインタ31の上位
3ビツト49である。
したがって、この方法は、ステップ144で、アドレス
・マツピング・テーブル34を命令ポインタ31の下位
13ビツト32で指示し、ステップ145で、最初の1
6ビツトC8I、45をコード・セグメント33の現在
値と比較するというものである。このことは、命令が同
じコード・セグメント中にあり、前回の命令が最近実行
された可能性があることを示す。それが一致する場合、
ステップ146で、スタック・ポインタ35の下位ビッ
ト41がSt、47と比較されて、翻訳の際にスタック
のアラインメントについて立てられた仮定が無視されて
いないことを確認する。これが一致し、Vl、46がオ
ンで項目が有効なことを示し、IPl、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はコード・
ブロックの属性を含む。その属性は、C82と表示され
たブロック58中にコード・セグメント33を含み、ブ
ロック32.59中にスタック・ポインタ35のアライ
ンメントを含む。話を簡単にするため、を効ピットVl
、46をv2.60として繰り返す。ステップ149で
、コード・ブロック・ヘッダ36で、実行時に実行され
る命令と同じ属性を有するコード・ブロック・ヘッダ3
6が探索される。次のフィールド62、θ3は、それら
の属性を有する翻訳がある最小及び最大第1プロセッサ
・アドレスを含む。次のフィールド64は、特定の属性
を有する翻訳が存在するすべてのコード・ブロック83
を記述するツリーのルートを指すポインタである。
このツリーの各ノード、すなわち、コード・ブロック8
3は、第1プロセッサ命令ポインタ31の範囲内に第2
プロセッサ翻訳130がある最小及び最大命令ポインタ
85.66を含む。それぞれ左及び右の子67.88を
指すポインタがある。
左の子67は、より小さなまたは等しい最小命令ポイン
タ31を有するサブツリー69を指す。右の子68は、
より大きな最小命令ポインタ31を有するサブツリー7
0を指す。ステップ151で、ツリーのノードを探索し
て、現在の命令アドレスが入る命令アドレス範囲を有す
るサブツリーを見つける。次のフィールド71は第2プ
ロセッサの翻訳130のコード・ブロック83の終わり
73を指すポインタである。
命令ポインタ31の範囲内にあるのと同じ数の項目72
を有するアレイ44がある。すなわち、アレイ44の下
限は最小命令ポインタであり、アレイ44の上限は最大
命令ポインタである。アレイ44内のこれらの項目は、
それぞれ第1プロセッサ命令100に対する第2プロセ
ッサ翻訳が存在しない場合はOを含み、また、有効な第
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は明示的なlN10UT命令を
使って、線167として示すように、表示装置などの出
力装置92に接続された入出力アダプタ91に直接アク
セスすることができ、または、メモリ命令を使って、ビ
デオ・バッファ153を介して入出力アダプタ91にア
クセスすることができる。装ra、92に出力するため
ビデオ・バッファ153に対してメモリ命令を使用する
ことは、それがメモリ位置を介するものの、実際にアダ
プタに入る入出力なので、メモリ・マツプ入出力と呼ば
れる。CPUが有するメモリに入る命令は明示的入出力
(IN10UT命令)を実行するための命令よりも多い
ので、メモリ・マツプ入出力を使うとより広範な命令の
使用が可能になる。
メモリのビデオ範囲の内容は出力データ、すなわち、メ
モリ・マツプ入出力である。
第3の種類のメモリは、読取り専用記憶装置(ROS)
154と呼ばれる領域■である。これは読取り専用メモ
リ(ROM)とも呼ばれる。RAM152の内容は大抵
は命令であるが、データがあってもよい。どちらの場合
にも、ROSの内容は決して変更されない。
IBM PCATなどの処理システムのアドレス空間1
50は論理的にこれら3つの領域に分かれる。最初の領
域は840にバイトのプロセッサ読み書き記憶領域、す
なわち、RAM152である。2番目の領域は、入出力
アダプタ、すなわち、ビデ第153用に予約された25
6にバイトの領域である。これらの領域には、装置及び
装置依存ROS用のデータ・バッファが含まれる。3番
目の領域は128にバイトのプロセッサRO8154領
域である。このROSはBiO2及びRASICを含む
。BIO8領域155に続いて1メガ領域166より上
にメモリがある。この好ましい実施例のシミュレータは
286保護モードをサホートしないので、メモリ150
のこの領域176は設けられない。
第1の処理システムのアドレスを第2の処理システムの
アドレスに変換するには、第1の処理システムのメモリ
を第2の処理システムのメモリにマツプしなければなら
ない。
メモリをマツプするには、第2の処理システムのオペレ
ーティング・システムの2つの共用メモリ・セグメント
190.180 (第9図)が使用される。第1の共用
メモリ・セグメント190は第1の処理システムのメモ
リのイメージ150を記憶するために使用される。第2
の共用メモリ・セグメント180は各メモリ位置ごとに
そのイメージに含まれる内容のタイプを示す。
第2の処理システムのメモリ190には、第1の処理シ
ステム内に常駐する640にバイトのメモリ152があ
り、それに続いてビデオ領域153、ROS (読取り
専用記憶装置)用の領域154、BiO3用の領域15
5がある。最初のメモリ・セグメント152の前に、B
IO8領域155が複製されている。これは、オフセッ
トが循環してRAM 152に戻るように、アプリケー
ションがセグメント・レジスタをメモリ150のROM
155領域にロードすることができる場合に、マツピン
グを簡単にするため行なわれたものである。したがって
、これらの領域の16進アドレス172−175は、第
1の処理システムのメモリ150内の領域のアドレスか
ら64にだけずれて、セグメント0×9と呼ばれる共用
メモリ・セグメント190に入る。
その結果、シミユレータを働かせる処理システム内の仮
想メモリ・セグメントは、領域1152と及び領域■1
54の2つのコピーとからなるすべてのPCATプロセ
ッサ記憶域のイメージを含むため専用となる。第2の処
理システムに第1の処理システムからの出力装置が接続
されているときは、領域■153は存在しない。第1の
処理システムの出力装置が接続されていない場合は、領
域■153のイメージも存在する。
メモリ・セグメント190内のアドレス位置172−1
76は、第1の処理システムの実際のメモリ・イメージ
である。この領域172−176は、シミュレートされ
る第1の処理システム及び使用可能なメモリのアーキテ
クチャのように見える。
メモリ・イメージ172−176に加えて、翻訳された
コード130が領域157に記憶される。
シミュレートされる第1の処理システムの命令100を
調べるグラフ解析30(第3A図、第3B図、第3C図
、第3D図)によって、翻訳された命令が発生された後
で、翻訳された命令130が領域157に記憶される。
共用メモリ・セグメント190の次の領域158は処理
量通信領域、及び実行時に呼び出されるルーチンが記憶
される実行待環境領域である。
セグメント内X9と呼ばれる仮想共用メモリ・セグメン
トに加えて、シミュレータを働かせる処理システムは、
0×Fと呼ばれる入出力バス・メモリ用の特別なセグメ
ント181を予約する。第2の処理システムに第1の処
理システムの出力装置が接続されている場合、データは
第2の処理システムのセグメントOXFに書き込まれる
。領域■153内に含まれる第1の処理システムのアド
レス位置は、第2の処理システムのセグメント0×9.
190またはセグメント0xF1181内に対応するメ
モリ位置を有する。
本発明のシミュレータのシステム及び方法は、再配置テ
ーブルを使って、第1の処理システムのメモリ150を
第2の処理システムのセグメント0×9.190または
セグメント0XF1181のいずれかにマツプするもの
である。PCATなどの第1の処理システムは2つの構
成要素、すなわち、セグメントとオフセットによってメ
モリ位置にアドレスする。PCATでは、そのセグメン
トは、64にのメモリ・ブロックを指す16ビツトの値
である。オフセットも16ビツトであり、セグメント内
の変位を示す。セグメントのアドレスは、セグメントの
値に16を乗じることによって計算される。
このシミュレータは、それぞれ32ビツトを有する16
個の項目201−216を備えたテーブル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を指すように0X90010000に初期設定される
。この初期設定値は、RAM 152の前にあるセグメ
ントOX9.190にマツプされるBIO8155の最
初のインスタンス用のスペースをもたらす64にのオフ
セットを含むことに留意されたい。BIO8155にア
ドレスするセグメントに対応する最後の項目216は、
0X90000000−OXFOOOOまたは0X8F
F10000で初期設定される。
このようにセグメントに16を乗じて加えると、その結
果得られる値は0X90000000になり、それによ
ってBIO8155がセグメントOX9.190の始め
にマツプされる。11番目ないし15番目の項目211
−215は0X4000000または0X900100
00で初期設定されて、第1の処理システムの対応する
出力装置が接続されているかどうかに応じて、セグメン
トOXF、181またはセグメントOX9.190のい
ずれかを指す。
状況制御セグメント、すなわち、セグメント0×8.1
80が、オペレーティング・システムの別の共用メモリ
・セグメントに記憶される。状況制御セグメント180
はセグメントOX9.190に対する第1の処理システ
ムのメモリの内容のタイプを記録する。この情報は、シ
ミュレータが、メモリ位置がデータ、命令コードを含む
のか、それともビデオ項目なのかを判定するために使用
する。
以上、メモリに対する読取りまたは書込みを行なう命令
をシミュレートするときに使用するアドレスを、シミュ
レータがどのように計算するかについて説明した。メモ
リに書込みを行なう場合は、特別な処置が必要となるこ
とがある。
命令がメモリに記憶される場合、シミュレータは、その
命令が翻訳済みであるかどうかを記録する。翻訳された
コードが常に正しいことを確認するため、命令変更の検
査が行なわれる。アプリケーションが命令変更を行なっ
た場合は、元のコード命令に対する翻訳されたコードが
除去され、新しい命令がシミュレータのプロセッサの新
しい命令シーケンスに翻訳される。命令の正しい翻訳を
実行させるための他の処、置を取ることもできる。
同様に、出力装置への出力をシミュレータがさらに処理
する必要があるかどうか判定するために、ビデオ更新の
検査が必要である。これは、第1の処理システムの出力
装置がシミュレータを働かせる第2の処理システムに接
続されておらず、したがって、第1処理システムの出力
装置をシミュレートしなければならない場合に行なわれ
る。メモリ・マツプ入出力の場合は、出力データを表わ
す特別なハードウェアが変更されるかどうかを記憶時に
検出しなければならない。
メモリに記憶するとき、セグメント0×8180を使っ
て、命令またはメモリ・マツプ入出力について特別な処
置が必要かどうか判定する。セグメントO×8.180
は、セグメント・レジスタOX9.190とバイトごと
の対応関係を有する。
セグメントO×8の各バイトは、セグメントO×9.1
90内の対応するバイトの内容の種類を示す。セグメン
トOX9.190の対応バイトが計算データである場合
、セグメントO×8.180のバイトはOを含む。セグ
メントOX9の対応バイトが命令を含む場合は、セグメ
ント0×8.180のバイトは1.2.4または6を含
む。第1の処理システムの出力装置が接続されていない
場合は、セグメント0×9のビデオ領域153に対応す
るセグメントOX8.180の各バイトハ16を含む。
16の値は構成中にシミュレータ始動時にセグメント0
×8.180にロードされる。
第1の処理システムの出力装置を第2の処理システムに
接続すると構成中に決定された場合、セグメント0×8
.180の対応バイトはOになる。
このことは、やはり構成中に初期設定された項目211
−215を宵する再配置テーブル195が、第1の処理
システムからの出力データをセグメン)OXF、181
にマツプし、第1の処理システムの出力装置が接続され
ているので、シミュレータによるそれ以上の処置は必要
でないことを示す。
メモリへの記憶位置がセグメントOX9であろウドセグ
メントOXFであろうと、アドレスの32ビツト値が0
X8OFFFFFFとAND演算されて、セグメントO
×8.180の対応アドレスを生じる。
第10図に示す命令シーケンスが、メモリを変更するこ
とができる第1の処理システムの命令の各翻訳に対して
使用される。セグメント・レジスタは、メモリ・バイト
のアドレスを0X8OFFFFFF、l!:AND演算
して状況バイトのアドレスを計算できるように選ばれて
いることに留意されたい。その結果、セグメント0×F
及びOX9は共にセグメントOX8にマツプされる。第
10図のこれら4つの命令が、第1の処理システムの命
令をシミュレータするために使用される命令と重ね合わ
されるとき、メモリの更新を検査して、それが特別な処
理を必要とするかどうか調べるために5サイクルしか必
要でない。しかし、メモリへの記憶の後で特別な処置が
必要かどうかを判定するために、さらに記憶のアドレス
がセグメント0×Fに対するものであったかどうかを判
定することが必要になることがある。
各バイトに対応する状況バイトをメモリ・イメージ19
0またはメモリ・マツプ入出力181内に保持すること
により、ビデオ更新、メモリ・マツプ入出力及び命令変
更を検出することができる。
状況セグメント8.180内のフラグは、次のようにメ
モリの内容の種類を示す。
0=データ ■=命令入口点 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サイ
クル必要である。メモリへの記憶は非常に頻繁な動作で
あるので、これは有効である。したがって、メモリへの
記憶というオーバーヘッドが少しでも減少するとシミュ
レータの効率が大幅に増大する。
F0発明の詳細 な説明したように、本発明によれば、グラフ解析という
従来のコンパイラ技術をプロセッサ・シミュレータに適
用することにより、後続の命令が条件コードを使用する
かどうかに関する基本的知識が得られる。第1のプロセ
ッサ命令100を第2のプロセッサ命令130に翻訳す
るコード発生機構29は、多くの場合、条件コード情報
を使って、単一の第2プロセッサ翻訳命令を発生する。
このため、各命令の後でフラグ・レジスタが最新状態に
保持された場合に、不必要なサイクルが減少しシミュレ
ータの処理能力が向上する。
【図面の簡単な説明】
第1図は、本発明の好ましい実施例の処理システム環境
を示すブロック・ダイヤグラムである。 第2図は、本発明のシミュレータを始動する際の最初の
数ステップを示す流れ図である。 第3A図は、本発明のシミュレータによって翻訳される
第1のプロセッサの命令の制御流れの例についてのグラ
フ解析を示す。 第3B図は、翻訳される第1のプロセッサの命令の制御
流れのもう1つの例を示す。 第3C図は、第3B図に示した第1のプロセッサの命令
の流れにおける条件コードのグラフ解析を示す。 第3D図は、第3C図のグラフ解析から翻訳された第2
のプロセッサの命令の制御流れを示す。 第4図は、翻訳の流れ図である。 第5図は、次の実行可能命令の翻訳された命令アドレス
を判定するための3段階手法の第1の方法で使用される
プログラム・コー ドである。 第6図は、ある命令セットの命令を、異なる命令セット
を有するシミュレータの対応する翻訳アドレスにマツプ
することにより、次の実行可能命令の翻訳された命令ア
ドレスを判定するための第2及び第3の手法のデータ構
造を示す。 第7図は、次の実行可能命令の翻訳された命令アドレス
を判定するための3段階手法の流れ図である。 第8図は、処理システムのメモリの種類及び内容を示す
ブロック・ダイヤグラムである。 第9図は、第1の処理システムのメモリの第2の処理シ
ステムのメモリ内へのマツピングと、メモリへの記憶の
内容の種類を示すための状況テーブルを示す。 第10図は、共用メモリまたはアダプタにおけるメモリ
位置の状況テーブル中で対応バイトを見つけるために使
用されるプログラム・コードである。 1・・・・処理システム、10・・・・シミュレータ、
11・・・・ハードウェア、12・・・・オペレーティ
ング・システム(AIX)、13・・・・BIO8,1
5・・・・読取り専用記憶装置、16・・・・共用メモ
リ・セグメント、18・・・・オペレーティング・シス
テム(DO3)、19・・・・アプリケージ1ン・プロ
ダラム。

Claims (1)

  1. 【特許請求の範囲】 第1命令セットを有する第1プロセッサを第2命令セッ
    トを有する第2プロセッサでシミュレートして上記第1
    命令セット用のアプリケーションを動作させる方法にお
    いて、 上記アプリケーションの制御の命令フローをグラフ解析
    するステップと、 上記制御の命令フローを、上記第2命令セットから取り
    出した複数の命令を有する、対応する制御の命令フロー
    に変換するステップとを有し、上記変換ステップを上記
    グラフ解析に基づいて行なうようにしたことを特徴とす
    るシミュレーション方法。
JP63318665A 1988-02-01 1988-12-19 シミユレーシヨン方法 Expired - Lifetime JPH0782441B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US151136 1988-02-01
US07/151,136 US4951195A (en) 1988-02-01 1988-02-01 Condition code graph analysis for simulating a CPU processor

Publications (2)

Publication Number Publication Date
JPH025139A true JPH025139A (ja) 1990-01-10
JPH0782441B2 JPH0782441B2 (ja) 1995-09-06

Family

ID=22537471

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63318665A Expired - Lifetime JPH0782441B2 (ja) 1988-02-01 1988-12-19 シミユレーシヨン方法

Country Status (4)

Country Link
US (1) US4951195A (ja)
EP (1) EP0327196B1 (ja)
JP (1) JPH0782441B2 (ja)
DE (1) DE68921776T2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02238528A (ja) * 1988-12-06 1990-09-20 American Teleph & Telegr Co <Att> コンピュータ・プログラムの第一バージョン処理方法
JPH06202903A (ja) * 1992-12-29 1994-07-22 Nec Corp Cpuシミュレーション方法およびcpuシミュレータ
JPH07122854B2 (ja) * 1991-03-07 1995-12-25 ディジタル イクイプメント コーポレイション プログラム翻訳方法
JP2004038923A (ja) * 2002-02-06 2004-02-05 Transitive Technologies Ltd プログラムコード変換のための条件コードフラグのエミュレーション

Families Citing this family (70)

* 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
US5155816A (en) * 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
US5247651A (en) * 1990-04-17 1993-09-21 At&T Bell Laboratories Interactive computer program specification and simulation system
US5313616A (en) * 1990-09-18 1994-05-17 88Open Consortium, Ltd. Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines
IL100986A (en) * 1991-02-27 1997-01-10 Digital Equipment Corp Method for compiling code
IL100990A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher
US5287490A (en) * 1991-03-07 1994-02-15 Digital Equipment Corporation Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths
EP0532744B1 (en) * 1991-03-07 1996-12-18 Digital Equipment Corporation Improved software debugging system and method especially adapted for code debugging within a multi-architecture environment
US5428786A (en) * 1991-03-07 1995-06-27 Digital Equipment Corporation Branch resolution via backward symbolic execution
US5339238A (en) * 1991-03-07 1994-08-16 Benson Thomas R Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph
US5598560A (en) * 1991-03-07 1997-01-28 Digital Equipment Corporation Tracking condition codes in translation code for different machine architectures
US5652869A (en) * 1991-03-07 1997-07-29 Digital Equipment Corporation System for executing and debugging multiple codes in a multi-architecture environment using jacketing means for jacketing the cross-domain calls
US5265239A (en) * 1991-04-08 1993-11-23 Ardolino Anthony A Method for remotely accessing service programs of a local processing system supporting multiple protocol stacks and multiple device drivers
JPH0581049A (ja) * 1991-09-20 1993-04-02 Fujitsu Ltd メモリの時間管理方式
US5517629A (en) * 1992-08-26 1996-05-14 Boland; R. Nick K. Methods for analyzing computer program performance
JP2634137B2 (ja) * 1993-01-27 1997-07-23 インターナショナル・ビジネス・マシーンズ・コーポレイション ユーザ・インターフェースシステム及び方法
AU6701594A (en) * 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding sequences of guest instructions for a host computer
JP3318051B2 (ja) * 1993-06-17 2002-08-26 富士通株式会社 翻訳処理方法
JPH07334372A (ja) * 1993-12-24 1995-12-22 Seiko Epson Corp エミュレートシステム及びエミュレート方法
US5781758A (en) * 1995-03-23 1998-07-14 Apple Computer, Inc. Software emulation system with reduced memory requirements
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5875318A (en) * 1996-04-12 1999-02-23 International Business Machines Corporation Apparatus and method of minimizing performance degradation of an instruction set translator due to self-modifying code
US5903760A (en) * 1996-06-27 1999-05-11 Intel Corporation Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA
JP2817786B2 (ja) * 1996-07-15 1998-10-30 日本電気株式会社 シミュレーション装置及びシミュレーション方法
JP3492105B2 (ja) * 1996-08-30 2004-02-03 株式会社東芝 ハードウェア/ソフトウェア協調シミュレーション装置及びシミュレーション方法
US5838978A (en) 1996-10-09 1998-11-17 Hewlett-Packard Company System and method of using annotations to optimize dynamically translated code in the presence of signals
US5828897A (en) * 1996-12-19 1998-10-27 Raytheon Company Hybrid processor and method for executing incrementally upgraded software
US5930495A (en) * 1997-01-13 1999-07-27 International Business Machines Corporation Method and system for processing a first instruction in a first processing environment in response to intiating processing of a second instruction in a emulation environment
US7441254B1 (en) * 1997-07-09 2008-10-21 International Business Machines Corporation Simulation of memory-mapped I/O
US5966541A (en) * 1997-12-04 1999-10-12 Incert Software Corporation Test protection, and repair through binary-code augmentation
US6035390A (en) * 1998-01-12 2000-03-07 International Business Machines Corporation Method and apparatus for generating and logically combining less than (LT), greater than (GT), and equal to (EQ) condition code bits concurrently with the execution of an arithmetic or logical operation
US6163764A (en) * 1998-10-12 2000-12-19 Intel Corporation Emulation of an instruction set on an instruction set architecture transition
US6308321B1 (en) 1998-12-11 2001-10-23 Incert Software Corporation Method for determining program control flow
US6415436B1 (en) * 1998-12-11 2002-07-02 Hewlett-Packard Company Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
GB2344907A (en) * 1998-12-19 2000-06-21 Int Computers Ltd Instruction translation and execution mechanism
US6353924B1 (en) 1999-02-08 2002-03-05 Incert Software Corporation Method for back tracing program execution
US6415379B1 (en) * 1999-10-13 2002-07-02 Transmeta Corporation Method and apparatus for maintaining context while executing translated instructions
US6912570B1 (en) * 1999-11-12 2005-06-28 Cisco Technology, Inc. Self modifying state graphs for quality of service classification
US6845353B1 (en) * 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
US6804814B1 (en) 1999-12-29 2004-10-12 Veritas Operating Corporation Method for simulating back program execution from a traceback sequence
US6748584B1 (en) 1999-12-29 2004-06-08 Veritas Operating Corporation Method for determining the degree to which changed code has been exercised
US6745383B1 (en) 1999-12-29 2004-06-01 Veritas Operating Corporation Early warning mechanism for enhancing enterprise availability
US6571387B1 (en) * 2000-02-08 2003-05-27 Silicon Graphics, Inc. Method and computer program product for global minimization of sign-extension and zero-extension operations
US6892379B2 (en) * 2001-05-16 2005-05-10 Sun Microsystems, Inc. Methods and apparatus for use in aiding stack unwinding
US20040176941A1 (en) * 2003-03-04 2004-09-09 Shan-Chyun Ku Method of simulating computation instructions for an instruction set simulator
US7328429B2 (en) * 2003-11-13 2008-02-05 Intel Corporation Instruction operand tracing for software debug
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
JP4778359B2 (ja) * 2006-05-17 2011-09-21 エヌイーシーコンピュータテクノ株式会社 エミュレーション方法及びコンピュータシステム
US20090109996A1 (en) * 2007-10-29 2009-04-30 Hoover Russell D Network on Chip
US20090125703A1 (en) * 2007-11-09 2009-05-14 Mejdrich Eric O Context Switching on a Network On Chip
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8526422B2 (en) * 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US8473667B2 (en) * 2008-01-11 2013-06-25 International Business Machines Corporation Network on chip that maintains cache coherency with invalidation messages
US8010750B2 (en) 2008-01-17 2011-08-30 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8490110B2 (en) * 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US20090245257A1 (en) * 2008-04-01 2009-10-01 International Business Machines Corporation Network On Chip
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
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
US20090282211A1 (en) * 2008-05-09 2009-11-12 International Business Machines Network On Chip With Partitions
US8020168B2 (en) * 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a network on chip
US8392664B2 (en) * 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
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
US8230179B2 (en) * 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
US8438578B2 (en) * 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US8195884B2 (en) * 2008-09-18 2012-06-05 International Business Machines Corporation Network on chip with caching restrictions for pages of computer memory
CN103186414A (zh) * 2011-12-27 2013-07-03 联想(北京)有限公司 一种程序执行方法、程序管理器和虚拟机

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6149242A (ja) * 1984-08-13 1986-03-11 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション コード最適化方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2159150A1 (ja) * 1972-11-30 1973-06-15 Materiel Telephonique
US4084235A (en) * 1975-04-14 1978-04-11 Honeywell Information Systems Inc. Emulation apparatus
US4070705A (en) * 1975-11-20 1978-01-24 The Singer Company Simulation apparatus
US4370709A (en) * 1980-08-01 1983-01-25 Tracor, Inc. Computer emulator with three segment microcode memory and two separate microcontrollers for operand derivation and execution phases
US4441154A (en) * 1981-04-13 1984-04-03 Texas Instruments Incorporated Self-emulator microcomputer
US4447876A (en) * 1981-07-30 1984-05-08 Tektronix, Inc. Emulator control sequencer
US4514803A (en) * 1982-04-26 1985-04-30 International Business Machines Corporation Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof
EP0124517A1 (en) * 1982-10-22 1984-11-14 International Business Machines Corporation Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter
US4727480A (en) * 1984-07-09 1988-02-23 Wang Laboratories, Inc. Emulation of a data processing system
US4638423A (en) * 1985-03-06 1987-01-20 Motorola, Inc. Emulating computer
US4677587A (en) * 1985-05-14 1987-06-30 Sanders Associates, Inc. Program simulation system including means for ensuring interactive enforcement of constraints
US4841476A (en) * 1986-10-06 1989-06-20 International Business Machines Corporation Extended floating point operations supporting emulation of source instruction execution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6149242A (ja) * 1984-08-13 1986-03-11 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション コード最適化方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02238528A (ja) * 1988-12-06 1990-09-20 American Teleph & Telegr Co <Att> コンピュータ・プログラムの第一バージョン処理方法
JPH07122854B2 (ja) * 1991-03-07 1995-12-25 ディジタル イクイプメント コーポレイション プログラム翻訳方法
JPH06202903A (ja) * 1992-12-29 1994-07-22 Nec Corp Cpuシミュレーション方法およびcpuシミュレータ
JP2004038923A (ja) * 2002-02-06 2004-02-05 Transitive Technologies Ltd プログラムコード変換のための条件コードフラグのエミュレーション
US8024555B2 (en) 2002-02-06 2011-09-20 International Business Machines Corporation Condition code flag emulation for program code conversion

Also Published As

Publication number Publication date
DE68921776T2 (de) 1995-10-12
EP0327196A2 (en) 1989-08-09
DE68921776D1 (de) 1995-04-27
US4951195A (en) 1990-08-21
EP0327196B1 (en) 1995-03-22
EP0327196A3 (en) 1991-10-23
JPH0782441B2 (ja) 1995-09-06

Similar Documents

Publication Publication Date Title
JPH025139A (ja) シミユレーシヨン方法
JPH025140A (ja) シミュレーシヨン方法
US5167023A (en) Translating a dynamic transfer control instruction address in a simulated CPU processor
US5819063A (en) Method and data processing system for emulating a program
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
US5790825A (en) Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5742802A (en) Method and system for efficiently mapping guest instruction in an emulation assist unit
US6009261A (en) Preprocessing of stored target routines for emulating incompatible instructions on a target processor
KR100463810B1 (ko) 어드레스되는 구성요소의 물리적 특성에 관한 추측 실패를 검출하는 마이크로프로세서용 메모리 제어기
US9495136B2 (en) Using aliasing information for dynamic binary optimization
US8832672B2 (en) Ensuring register availability for dynamic binary optimization
JP3533294B2 (ja) プロセッサ・システム
US7823140B2 (en) Java bytecode translation method and Java interpreter performing the same
US20050160415A1 (en) Method and system for improving performance of Java virtual machine
KR100443759B1 (ko) 개선된 마이크로프로세서
JPS6014341A (ja) 基本命令セツト計算機システムにおけるトラツプ割込み方式
CN101375248A (zh) 硬件JavaTM字节码译码器
Probst Dynamic binary translation
US5764962A (en) Emulation of asynchronous signals using a branch mechanism
US5408622A (en) Apparatus and method for emulation routine control transfer via host jump instruction creation and insertion
JPH025138A (ja) シミユレーシヨン方法
KR100421687B1 (ko) 개선된 마이크로프로세서를 위한 변환 메모리 보호 장치
Smith et al. POPLOG's Two-level virtual machine support for interactive languages
JP2020523693A (ja) Jitコンパイラを使用しかつ選択されたターゲットコードブロックの変換をバイパスするターゲットシステムのエミュレーション
WO2007131089A2 (en) Code translation and pipeline optimization