JPS6275735A - エミユレ−シヨン方法 - Google Patents
エミユレ−シヨン方法Info
- Publication number
- JPS6275735A JPS6275735A JP61168229A JP16822986A JPS6275735A JP S6275735 A JPS6275735 A JP S6275735A JP 61168229 A JP61168229 A JP 61168229A JP 16822986 A JP16822986 A JP 16822986A JP S6275735 A JPS6275735 A JP S6275735A
- Authority
- JP
- Japan
- Prior art keywords
- instructions
- template
- level
- instruction
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 19
- 238000001514 detection method Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Manufacture, Treatment Of Glass Fibers (AREA)
- Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〈産業上の利用分野〉
本発明は、第一のコンピュータを第二のコンピュータに
よってエミュレートすることに関する。
よってエミュレートすることに関する。
さらに詳しくは、そのようなエミュレーションの処理に
際して、第一のコンピュータによって修正される可能性
のある該第−のコンピュータ用のオブジェクト・コード
の検出に関する。
際して、第一のコンピュータによって修正される可能性
のある該第−のコンピュータ用のオブジェクト・コード
の検出に関する。
〈従来の技術および発明が解決しようとする問題点〉
以下の記述において、「上位コンピュータ」とは、エミ
ュレータプログラムが走行する現実のハードウェアをい
い、「下位コンピュータ」とは、エミュレートされるコ
ンピュータをいうものとする。
ュレータプログラムが走行する現実のハードウェアをい
い、「下位コンピュータ」とは、エミュレートされるコ
ンピュータをいうものとする。
よく知られているように、原理的には、どのデジタル・
コンピュータも、ソフトウェア技術だけを使って他のコ
ンピュータ上でエミュレートされ得るものである。しか
しながら、ソフトウェアだけからなるエミュレータは、
実用的な観点からみれば、通常、遅すぎると考えられて
いる。なぜなら、そのようなエミュレータは、ただ一つ
の下位命令(ターゲット・インストラクション)を実行
するに際しても、常に多くの上位命令(ホスト・インス
トラクション)を実行する必要があるからである。
コンピュータも、ソフトウェア技術だけを使って他のコ
ンピュータ上でエミュレートされ得るものである。しか
しながら、ソフトウェアだけからなるエミュレータは、
実用的な観点からみれば、通常、遅すぎると考えられて
いる。なぜなら、そのようなエミュレータは、ただ一つ
の下位命令(ターゲット・インストラクション)を実行
するに際しても、常に多くの上位命令(ホスト・インス
トラクション)を実行する必要があるからである。
そこで、多くの試みがなされており、特殊な目的を持っ
た様々なハードウェアが開発されて、エミュレータプロ
グラムがそのタスクを行うのを助けている。このような
ハードウェアは、下位コンピュータの最も頻繁に用いら
れるレジスタのイメージを持つレジスタ下位命令のある
機能のすべてまたは一部を行う特殊な上位命令、等であ
る。このようなハードウェアは、通常、*用のかかるも
のとなる。すなわち、一般的には、エミュレータが速く
なれば、それだけ、ハードウェアによる助けは精巧で、
かつ高価のものでなければならないからである。このよ
うなハードウェアの費用を考慮すると、もしソフトウェ
アだけからなる十分速いエミュレータができるならば、
それは非常に魅力的なものとなる。そのようなソフトウ
ェアだけからなるエミュレータの速さの鍵を握るのは、
一つの平均的な下位命令を実行するのに要する上位命令
の平均的な数である。
た様々なハードウェアが開発されて、エミュレータプロ
グラムがそのタスクを行うのを助けている。このような
ハードウェアは、下位コンピュータの最も頻繁に用いら
れるレジスタのイメージを持つレジスタ下位命令のある
機能のすべてまたは一部を行う特殊な上位命令、等であ
る。このようなハードウェアは、通常、*用のかかるも
のとなる。すなわち、一般的には、エミュレータが速く
なれば、それだけ、ハードウェアによる助けは精巧で、
かつ高価のものでなければならないからである。このよ
うなハードウェアの費用を考慮すると、もしソフトウェ
アだけからなる十分速いエミュレータができるならば、
それは非常に魅力的なものとなる。そのようなソフトウ
ェアだけからなるエミュレータの速さの鍵を握るのは、
一つの平均的な下位命令を実行するのに要する上位命令
の平均的な数である。
そのようなエミュレータを設計しようと単純に試みても
、一つの下位命令につき、数十ないし数百の上位命令を
要するプログラムしか生まれない。
、一つの下位命令につき、数十ないし数百の上位命令を
要するプログラムしか生まれない。
そして、このエミュレータを上位コンピュータで実行さ
せて現実の下位コンピュータに匹敵する速さを得ようと
すると、上位コンピュータは、下位コンピュータより二
指も速いものでなければならないことになる。上位と下
位のコンピュータの性能差がかくも大きくなると、実用
的な興味はほとんどなくなってしまう。
せて現実の下位コンピュータに匹敵する速さを得ようと
すると、上位コンピュータは、下位コンピュータより二
指も速いものでなければならないことになる。上位と下
位のコンピュータの性能差がかくも大きくなると、実用
的な興味はほとんどなくなってしまう。
く問題点を解決するための手段〉
本発明では、一つの下位命令につき実行される上位命令
の数を10程度に減らす方策が採られている。
の数を10程度に減らす方策が採られている。
すなわち、本発明によるエミュレーション方法は、上位
コンピュータを下位コンピュータの命令で作動させるた
めに前記下位コンピュータの命令を前記上位コンピュー
タの命令にエミュレートする方法であって、前記下位コ
ンピュータが自分自身の命令およびデータを動作中に修
正する能力がある場合において。
コンピュータを下位コンピュータの命令で作動させるた
めに前記下位コンピュータの命令を前記上位コンピュー
タの命令にエミュレートする方法であって、前記下位コ
ンピュータが自分自身の命令およびデータを動作中に修
正する能力がある場合において。
前記下位命令の各に対して前記上位命令からなるテンプ
レートを作成し、 対応する下位命令が実行される度に再使用するのに備え
て前記各テンプレートを記憶し、前記記憶されたテンプ
レートに対するアクセスを、該テンプレートに対する読
取り操作のみに制限することを特徴とするエミュレーシ
ョン方法。
レートを作成し、 対応する下位命令が実行される度に再使用するのに備え
て前記各テンプレートを記憶し、前記記憶されたテンプ
レートに対するアクセスを、該テンプレートに対する読
取り操作のみに制限することを特徴とするエミュレーシ
ョン方法。
〈実施例〉
要約
前記問題点を解決するための手段をより具体的に述べる
と、次の通りになる。
と、次の通りになる。
■下位コンピュータの現命令のアドレスを用い、現在の
下位命令を調べる。
下位命令を調べる。
■下位命令の命令コードに基づき、−組の命令テンプレ
ートを選択する。各テンプレートは、特定の下位命令コ
ードの機能を営む一連の上位命令よりなる。各テンプレ
ートの中の命令の数は、約5ないし約15の範囲で変わ
る。
ートを選択する。各テンプレートは、特定の下位命令コ
ードの機能を営む一連の上位命令よりなる。各テンプレ
ートの中の命令の数は、約5ないし約15の範囲で変わ
る。
■下位命令の本例に存在する適当なレジスタ、アドレス
等に関連して築くことにより、テンプレートを特定の仕
様にする(カスタマイズ)。
等に関連して築くことにより、テンプレートを特定の仕
様にする(カスタマイズ)。
■カスタマイズされたテンプレートを実行する。
これによって、一つの下位命令が現実にエミュレートさ
れる。
れる。
(Dエミュレートされた下位コンピュータが、当該命令
を後になって再び実行するときに再使用するのに備えて
、該カスタマイズされたテンプレートを保管する。これ
は、本発明におけるキーポイントであり、性能の向上を
もたらす要因である。
を後になって再び実行するときに再使用するのに備えて
、該カスタマイズされたテンプレートを保管する。これ
は、本発明におけるキーポイントであり、性能の向上を
もたらす要因である。
現在の代表的なエミュレータにおいて、一つの下位命令
の仕事を実行するテンプレートの選択およびカスタマイ
ズの処理自身、約85の上位命令を必要とする。カスタ
マイズされたテンプレートの実行は、約10の上位命令
を必要とする。本発明によってもたらされる高性能は、
一旦カスタマイズの操作が一度行われると、下位プログ
ラムがエミュレートされる間に、カスタマイズされたテ
ンプレートが平均に何十回、何百回と実行されるという
事実に由来する。
の仕事を実行するテンプレートの選択およびカスタマイ
ズの処理自身、約85の上位命令を必要とする。カスタ
マイズされたテンプレートの実行は、約10の上位命令
を必要とする。本発明によってもたらされる高性能は、
一旦カスタマイズの操作が一度行われると、下位プログ
ラムがエミュレートされる間に、カスタマイズされたテ
ンプレートが平均に何十回、何百回と実行されるという
事実に由来する。
カスタマイズされたテンプレートは、高性能コンピュー
タ上のハードウェアの命令「キャッシュノに対する操作
と非常に似たやり方で、上位コンピュータのメモリの中
のキャッシュに保存される。
タ上のハードウェアの命令「キャッシュノに対する操作
と非常に似たやり方で、上位コンピュータのメモリの中
のキャッシュに保存される。
このようなキャッシュの管理に際しては、ハードウェア
のキャッシュにかかわるすべての問題を取り扱う必要が
ある。例えば、エミュレータが下位命令を実行する際、
下位命令(カスタマイズされたテンプレート)がキャッ
シュに存在するか否か、または、キャッシュにロードす
る(カスタマイズを行う)か否かについて、迅速に判断
を下さなければならない。キャッシュが一杯の場合は、
より多くの命令(テンプレート)のための余地を設ける
ため、−以上の記憶内容を除去しなければならない。
のキャッシュにかかわるすべての問題を取り扱う必要が
ある。例えば、エミュレータが下位命令を実行する際、
下位命令(カスタマイズされたテンプレート)がキャッ
シュに存在するか否か、または、キャッシュにロードす
る(カスタマイズを行う)か否かについて、迅速に判断
を下さなければならない。キャッシュが一杯の場合は、
より多くの命令(テンプレート)のための余地を設ける
ため、−以上の記憶内容を除去しなければならない。
はとんどのハードウェアの命令キャッシュシステムが扱
わなければならない一つの問題は、下位プログラムが走
行する際に、キャッシュに含まれる命令に対してなされ
る変化を検出することである。IBMシステム/370
(そして他の多くのコンピュータシステム)のアーキテ
クチャは、そのような命令の修正を許容し、修正された
命令があたかもキャッシュが存在しないかのように実行
されるようにしている。このようなキャッシュされ修正
された命令テンプレートの検出が1本発明における主題
である。
わなければならない一つの問題は、下位プログラムが走
行する際に、キャッシュに含まれる命令に対してなされ
る変化を検出することである。IBMシステム/370
(そして他の多くのコンピュータシステム)のアーキテ
クチャは、そのような命令の修正を許容し、修正された
命令があたかもキャッシュが存在しないかのように実行
されるようにしている。このようなキャッシュされ修正
された命令テンプレートの検出が1本発明における主題
である。
好ましい実施例
上位コンピュータは、固有の命令の組を用いてエミュレ
ータプログラムを走行させる。一方、エミュレータプロ
グラムは、下位コンピュータの命令の組によって表現さ
れる下位プログラムを走行させる。すなわち、下位プロ
グラムの実行をエミュレートする。
ータプログラムを走行させる。一方、エミュレータプロ
グラムは、下位コンピュータの命令の組によって表現さ
れる下位プログラムを走行させる。すなわち、下位プロ
グラムの実行をエミュレートする。
ここで、「シミュレータ」と「エミュレータ」は技術的
に異なるものであるが、本発明の記述において、両者の
相違は無視することができる。本明細書に記述されてい
る技術は、シミュレータとエミュレータに等しく適用で
きるものである。
に異なるものであるが、本発明の記述において、両者の
相違は無視することができる。本明細書に記述されてい
る技術は、シミュレータとエミュレータに等しく適用で
きるものである。
本実施例においては、特表昭59−502123号公報
において開示されているアドレス変換機溝の「ロック・
ビット」を利用している。前記公報で説明されている環
境において、ロック・ビットとは、データベース・プロ
グラムにおいて、データ構造に対してなされた変化を検
出し、これらの変化がディスク・ファイル・ジャーナル
記憶に対してジャーナルされるようにするものである。
において開示されているアドレス変換機溝の「ロック・
ビット」を利用している。前記公報で説明されている環
境において、ロック・ビットとは、データベース・プロ
グラムにおいて、データ構造に対してなされた変化を検
出し、これらの変化がディスク・ファイル・ジャーナル
記憶に対してジャーナルされるようにするものである。
コンピュータは、2048バイトからなる「特殊セグメ
ント」のページを、各128バイトからなる16のライ
ンに分割し、ロック・ビットは1記憶ページの1ライン
につき1つ関連する。したがって、1ページにつき、1
6のロック・ビットが関連することになる。これらのラ
インの各々は、以下の保護状態のうちの一つをとるよう
指定されている。
ント」のページを、各128バイトからなる16のライ
ンに分割し、ロック・ビットは1記憶ページの1ライン
につき1つ関連する。したがって、1ページにつき、1
6のロック・ビットが関連することになる。これらのラ
インの各々は、以下の保護状態のうちの一つをとるよう
指定されている。
1、読取り/書込み
上位コンピュータ上で走行するプログラムによる、ライ
ンに対するすべてのアクセスが許される(ロードと記憶
が可能)。
ンに対するすべてのアクセスが許される(ロードと記憶
が可能)。
2、読取専用
ロードのみが許される。すなわち、ラインに記憶させよ
うとしても、プログラム・チェックのための割込みを招
く結果に終る。
うとしても、プログラム・チェックのための割込みを招
く結果に終る。
3、アクセス禁止
ロードも記憶も禁止される。ラインに対してアクセスし
ても、プログラム・チェックのための割込みを招く結果
に終る。
ても、プログラム・チェックのための割込みを招く結果
に終る。
本実施例においては、読取り/書込み、および読取専用
の状態のみが用いられる。すなわち、アクセス禁止の状
態は使用されない。
の状態のみが用いられる。すなわち、アクセス禁止の状
態は使用されない。
上位コンピュータ上のエミュレータプログラムは、上位
仮想記憶域において、システム/370コンピユータ(
下位コンピュータ)のメモリの像を保持する。下位メモ
リのセグメントは、下位プログラム(システム/370
の命令)および下位データ(下位プログラムによって操
作されるデータ)を含む。これらのデータおよび命令は
、オリジナルの下位プログラムの著者が指定した方法で
下位メモリにおいて混ぜられる。
仮想記憶域において、システム/370コンピユータ(
下位コンピュータ)のメモリの像を保持する。下位メモ
リのセグメントは、下位プログラム(システム/370
の命令)および下位データ(下位プログラムによって操
作されるデータ)を含む。これらのデータおよび命令は
、オリジナルの下位プログラムの著者が指定した方法で
下位メモリにおいて混ぜられる。
システム/370のアーキテクチャによれば、下位プロ
グラムが、自分自身の命令をデータとして扱い、そして
随意に修正することができる。このような命令の修正は
、それほど頻繁に行われるものではない。しかしながら
、エミュレータがシステム/370のアーキテクチャに
従うとすれば、命令の変更を考慮して、しかも適切な結
果をもたらすようにしなければならない。
グラムが、自分自身の命令をデータとして扱い、そして
随意に修正することができる。このような命令の修正は
、それほど頻繁に行われるものではない。しかしながら
、エミュレータがシステム/370のアーキテクチャに
従うとすれば、命令の変更を考慮して、しかも適切な結
果をもたらすようにしなければならない。
本実施例は、命令の修正を、上位コンピュータやアドレ
ス変換機構によって検出されるとともに、プログラムチ
ェックのための割込みによって知らされる例外状態とす
ることによって、該命令の修正はほとんどなされない一
方、エミュレータのメインパスにおいて、ソフトウェア
をチェックするロジックは必要とされないという事実を
利用している。このようなことは、下位のようにロック
・ビットを用いて行われる。
ス変換機構によって検出されるとともに、プログラムチ
ェックのための割込みによって知らされる例外状態とす
ることによって、該命令の修正はほとんどなされない一
方、エミュレータのメインパスにおいて、ソフトウェア
をチェックするロジックは必要とされないという事実を
利用している。このようなことは、下位のようにロック
・ビットを用いて行われる。
以下、図面(フローチャート)を参照しつつ。
説明する。エミュレータプログラムが下位プログラムを
走らせ始めると、下位メモリの特殊セグメントに、下位
プログラムと下位データを結合した像がロードされる(
ブロック11)。既述したようにロックビットを用いる
と、下位メモリにおけるページのすべてのラインが「読
取り/書込み」状態にセットされ、下位プログラムがそ
のメモリ′に制限なくアクセス可能となる。次に、下位
プログラムの初期の入口点において、下位メモリから下
位命令を撤回することによって、エミュレータは下位命
令の処理を開始する(ブロック12)。
走らせ始めると、下位メモリの特殊セグメントに、下位
プログラムと下位データを結合した像がロードされる(
ブロック11)。既述したようにロックビットを用いる
と、下位メモリにおけるページのすべてのラインが「読
取り/書込み」状態にセットされ、下位プログラムがそ
のメモリ′に制限なくアクセス可能となる。次に、下位
プログラムの初期の入口点において、下位メモリから下
位命令を撤回することによって、エミュレータは下位命
令の処理を開始する(ブロック12)。
エミュレータは、下位命令を処理する際に、上述のよう
に上位命令のテンプレートをカスタマイズする(ブロッ
ク13)。テンプレートは、下位メモリ領域とは分離さ
れた上位仮想記憶域に保存される。下位命令が処理され
、そのカスタマイズされたテンプレートがキャッシュに
位置される際、下位命令を含む下位記憶の128バイ;
〜ライン(128バイトからなるライン)は、当該行に
関連するロック・ビットによって「読取専用J状態にセ
ットされる(ブロック14)。
に上位命令のテンプレートをカスタマイズする(ブロッ
ク13)。テンプレートは、下位メモリ領域とは分離さ
れた上位仮想記憶域に保存される。下位命令が処理され
、そのカスタマイズされたテンプレートがキャッシュに
位置される際、下位命令を含む下位記憶の128バイ;
〜ライン(128バイトからなるライン)は、当該行に
関連するロック・ビットによって「読取専用J状態にセ
ットされる(ブロック14)。
エミュレータが下位プログラムを進める様子は次のよう
になる。すなわち、新しい下位命令に達すると、新しい
テンプレートがカスタマイズされ。
になる。すなわち、新しい下位命令に達すると、新しい
テンプレートがカスタマイズされ。
それがキャッシュに追加される。以前実行した下位命令
に再び出会うと、既存の特定されたテンプレートをキャ
ッシュから取り出して再び実行する(ブロック16.1
7参照)、、カスタマイズされたテンプレートは、それ
らが下位メモリ上で行った操作が既にキャッシュされた
下位命令の内容を修正したか否かを判断するテストを行
う必要はない。上位プログラムのチェックのための割込
みが起こらない限り、キャッシュの内容は下位メモリの
内容を正確に写したものであることがわかる。
に再び出会うと、既存の特定されたテンプレートをキャ
ッシュから取り出して再び実行する(ブロック16.1
7参照)、、カスタマイズされたテンプレートは、それ
らが下位メモリ上で行った操作が既にキャッシュされた
下位命令の内容を修正したか否かを判断するテストを行
う必要はない。上位プログラムのチェックのための割込
みが起こらない限り、キャッシュの内容は下位メモリの
内容を正確に写したものであることがわかる。
下位命令が、万一128バイトラインのうちの一つの中
に含まれるデータ項目または命令(これらのためにテン
プレートはキャッシュされている)を修正する場合(ブ
ロック18)、修正を行う上位記憶命令は、プログラム
チェックのための割込みを招く結果に終る(ブロック1
9)。割込みの原因が、前記ロック・ビットの約束に違
反したため(つまり、読取専用のラインに記憶させよう
としたため)とわかると、エミュレータの割込み処理ル
ーチンに制御権が移る(ブロック21)。エミュレータ
は、次の二つのうちの何れかを行うことができる。
に含まれるデータ項目または命令(これらのためにテン
プレートはキャッシュされている)を修正する場合(ブ
ロック18)、修正を行う上位記憶命令は、プログラム
チェックのための割込みを招く結果に終る(ブロック1
9)。割込みの原因が、前記ロック・ビットの約束に違
反したため(つまり、読取専用のラインに記憶させよう
としたため)とわかると、エミュレータの割込み処理ル
ーチンに制御権が移る(ブロック21)。エミュレータ
は、次の二つのうちの何れかを行うことができる。
(1)エミュレータは、カスタマイズされたテンプレー
トのキャッシュから、プログラムチェックのための割込
みの原因となった、下位記憶の128バイトラインの中
に含まれる命令に対応するすべてのテンプレートを除去
することができる(ブロック22)。次に、エミュレー
タは、当該ラインの状態を読取り/書込みにリセットし
、割込ま−れたプログラムの実行を再開する(ブロック
23)。
トのキャッシュから、プログラムチェックのための割込
みの原因となった、下位記憶の128バイトラインの中
に含まれる命令に対応するすべてのテンプレートを除去
することができる(ブロック22)。次に、エミュレー
タは、当該ラインの状態を読取り/書込みにリセットし
、割込ま−れたプログラムの実行を再開する(ブロック
23)。
したがって、割込みの原因となった「記憶」操作は成功
する。
する。
(2)エミュレータは、記憶されるワードが、カスタマ
イズされたテンプレートがキャッシュされている下位命
令を現実に含むか否かを判断することができる。もし含
むならば、そのテンプレートだけをキャッシュから除去
する必要があるし、含まないならば、何も除去する必要
はない。次に、エミュレータは、128バイトラインを
一時的に読取り/書込み状態にセットし、記憶操作を完
了した後、読取専用状態に戻す。そして、割込まれたプ
ログラムは、割込みの原因となった記憶命令を起ぎた地
点で再開される。
イズされたテンプレートがキャッシュされている下位命
令を現実に含むか否かを判断することができる。もし含
むならば、そのテンプレートだけをキャッシュから除去
する必要があるし、含まないならば、何も除去する必要
はない。次に、エミュレータは、128バイトラインを
一時的に読取り/書込み状態にセットし、記憶操作を完
了した後、読取専用状態に戻す。そして、割込まれたプ
ログラムは、割込みの原因となった記憶命令を起ぎた地
点で再開される。
どちらの方法も、正しい結果をもたらす。(1)の方法
では、保護されるラインに対する記憶に基づくプログラ
ム・チェックのための割込みがより少なくする反面、下
位命令が現実には修正されなかったテンプレートを再度
カスタマイズしなければならない。(2)の方法は、よ
り多くのテンプレートをキャッシュしたまま維持できる
が、保護されるラインに含まれるデータ項目の修正によ
り多くの時間がかかることになる。
では、保護されるラインに対する記憶に基づくプログラ
ム・チェックのための割込みがより少なくする反面、下
位命令が現実には修正されなかったテンプレートを再度
カスタマイズしなければならない。(2)の方法は、よ
り多くのテンプレートをキャッシュしたまま維持できる
が、保護されるラインに含まれるデータ項目の修正によ
り多くの時間がかかることになる。
本実施例は、命令の修正を許容するシステム/370そ
の他のコンピュータ・アーキテクチャの、ソフトウェア
だけからなるエミュレータにおいて、多くのオーバーヘ
ッドを取り除くために記述されたタイプのロック・ビッ
トを用いている。もし。
の他のコンピュータ・アーキテクチャの、ソフトウェア
だけからなるエミュレータにおいて、多くのオーバーヘ
ッドを取り除くために記述されたタイプのロック・ビッ
トを用いている。もし。
ロックビットによる助けがない場合、下位命令に対応す
るキャッシュされたテンプレートには、各データ項目の
アドレスが下位メモリにおいて修正されたか否かをチェ
ックすることが求められよう。
るキャッシュされたテンプレートには、各データ項目の
アドレスが下位メモリにおいて修正されたか否かをチェ
ックすることが求められよう。
下位命令がそのアドレスでキャッシュされたか否かを判
断するためである。このようなチェックのためのロジッ
クは、極めて高価なものになり得るし、上位命令の数で
5,6程度より少くなることはないであろう。そのよう
なチェックのためのロジックを用いない、カスタマイズ
されたテンプレートの平均的な長さは約10命令分であ
るので、エミュレータのメインパスから、チェックのた
めのロジックを取り除くことによって、性能は飛躍的に
上昇するのである。
断するためである。このようなチェックのためのロジッ
クは、極めて高価なものになり得るし、上位命令の数で
5,6程度より少くなることはないであろう。そのよう
なチェックのためのロジックを用いない、カスタマイズ
されたテンプレートの平均的な長さは約10命令分であ
るので、エミュレータのメインパスから、チェックのた
めのロジックを取り除くことによって、性能は飛躍的に
上昇するのである。
く効果〉
本発明のエミュレーション方法によれば、一つの下位命
令に対応して上位命令からなるテンプレートをカスタマ
イズして記憶し、これを該下位命令が実行される度に繰
り返し使用して、性能の向上をもたらすことができる。
令に対応して上位命令からなるテンプレートをカスタマ
イズして記憶し、これを該下位命令が実行される度に繰
り返し使用して、性能の向上をもたらすことができる。
図面は、本発明の一実施例によるエミュレーション方法
の手順を説明するフローチャートである。 出願人 インターナショナル・ビジネス・マシーンズ
・コーポレーション 代理人 弁理士 頓 宮 孝 −(外1名)
の手順を説明するフローチャートである。 出願人 インターナショナル・ビジネス・マシーンズ
・コーポレーション 代理人 弁理士 頓 宮 孝 −(外1名)
Claims (6)
- (1)上位コンピュータを、下位コンピュータの命令で
作動させるために前記下位コンピュータの命令を前記上
位コンピュータの命令にエミュレートする方法であつて
、前記下位コンピュータが自分自身の命令およびデータ
を動作中に修正する能力がある場合において、前記下位
命令の各に対して前記上位命令からなるテンプレートを
作成し、対応する下位命令が実行される度に再使用する
のに備えて前記各テンプレートを記憶し、 前記記憶されたテンプレートに対するアクセスを、該テ
ンプレートに対する読取り操作のみに制限する ことを特徴とするエミュレーション方法。 - (2)前記記憶されたテンプレートの一つに対して書込
み操作を試みる下位命令を検出し、前記下位命令の検出
に応じて、プログラム割込みを発生させる特許請求の範
囲第(1)項記載のエミュレーション方法。 - (3)前記割込みを発生させた下位命令を検査し、前記
記憶されたテンプレートに対する影響を判断する特許請
求の範囲第(2)項記載のエミュレーション方法。 - (4)前記下位命令を検査し、前記下位命令が前記記憶
されたテンプレートを修正すると判断した後、前記記憶
されたテンプレートを消去する特許請求の範囲第(3)
項記載のエミュレーション方法。 - (5)前記プログラム割込みを発生させた下位命令を実
行し、記憶用に新しいテンプレートを作る特許請求の範
囲第(4)項記載のエミュレーション方法。 - (6)前記プログラム割込みを発生させた下位命令を実
行しても、前記記憶されたテンプレートの内容に影響し
ないと判断する場合は、前記下位命令を実行する特許請
求の範囲第(3)項記載のエミュレーション方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US782323 | 1985-09-30 | ||
US06/782,323 US4794522A (en) | 1985-09-30 | 1985-09-30 | Method for detecting modified object code in an emulator |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS6275735A true JPS6275735A (ja) | 1987-04-07 |
Family
ID=25125678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61168229A Pending JPS6275735A (ja) | 1985-09-30 | 1986-07-18 | エミユレ−シヨン方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US4794522A (ja) |
EP (1) | EP0217068A3 (ja) |
JP (1) | JPS6275735A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04268928A (ja) * | 1991-02-25 | 1992-09-24 | Toshiba Corp | エミュレーション装置及び半導体装置 |
US5896774A (en) * | 1993-01-05 | 1999-04-27 | Minolta Co., Ltd. | Actuating mechanism |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5167023A (en) * | 1988-02-01 | 1992-11-24 | International Business Machines | Translating a dynamic transfer control instruction address in a simulated CPU processor |
JPH0668724B2 (ja) * | 1988-02-01 | 1994-08-31 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | シミユレーシヨン方法 |
JPH0628036B2 (ja) * | 1988-02-01 | 1994-04-13 | インターナショナル・ビジネス・マシーンズ・コーポレーシヨン | シミュレーシヨン方法 |
CA2002201C (en) * | 1988-12-06 | 1999-04-27 | John Charles Goettelmann | Translation technique |
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 |
DE69216020T2 (de) * | 1991-03-07 | 1997-07-10 | Digital Equipment Corp | Verbessertes fehlersuchsystem und -verfahren, besonders für die fehlersuche in einer multi-architekturumgebung |
FR2678401A1 (fr) * | 1991-06-28 | 1992-12-31 | Philips Electronique Lab | Dispositif de traitement de l'information plus particulierement adapte a un langage chaine, du type forth notamment. |
EP0570646A1 (en) * | 1992-05-18 | 1993-11-24 | Advanced Computer Research Institute S.A.R.L. | Method for processor simulation |
US5542059A (en) * | 1994-01-11 | 1996-07-30 | Exponential Technology, Inc. | Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order |
US5781750A (en) * | 1994-01-11 | 1998-07-14 | Exponential Technology, Inc. | Dual-instruction-set architecture CPU with hidden software emulation mode |
US5481684A (en) * | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
US5604895A (en) * | 1994-02-22 | 1997-02-18 | Motorola Inc. | Method and apparatus for inserting computer code into a high level language (HLL) software model of an electrical circuit to monitor test coverage of the software model when exposed to test inputs |
US5481693A (en) * | 1994-07-20 | 1996-01-02 | Exponential Technology, Inc. | Shared register architecture for a dual-instruction-set CPU |
US5685009A (en) * | 1994-07-20 | 1997-11-04 | Exponential Technology, Inc. | Shared floating-point registers and register port-pairing in a dual-architecture CPU |
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 |
DE19617842A1 (de) * | 1996-05-03 | 1997-11-13 | Siemens Nixdorf Inf Syst | Verfahren zur Codetransformation |
JPH1097431A (ja) * | 1996-07-31 | 1998-04-14 | Fujitsu Ltd | シミュレーション装置及びシミュレーション方法並びにコンピュータ読取可能な記録媒体 |
US6142682A (en) * | 1997-06-13 | 2000-11-07 | Telefonaktiebolaget Lm Ericsson | Simulation of computer processor |
US6075937A (en) * | 1998-03-18 | 2000-06-13 | International Business Machines Corporation | Preprocessing of stored target routines for controlling emulation of incompatible instructions on a target processor and utilizing target processor feedback for controlling non-sequential incompatible instruction emulation |
US6397242B1 (en) | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US8631066B2 (en) | 1998-09-10 | 2014-01-14 | Vmware, Inc. | Mechanism for providing virtual machines for use by multiple users |
US7516453B1 (en) * | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
US7761857B1 (en) * | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
US6363336B1 (en) * | 1999-10-13 | 2002-03-26 | Transmeta Corporation | Fine grain translation discrimination |
US6714904B1 (en) * | 1999-10-13 | 2004-03-30 | Transmeta Corporation | System for using rate of exception event generation during execution of translated instructions to control optimization of the translated instructions |
US6594821B1 (en) | 2000-03-30 | 2003-07-15 | Transmeta Corporation | Translation consistency checking for modified target instructions by comparing to original copy |
US6615300B1 (en) | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
US7310723B1 (en) | 2003-04-02 | 2007-12-18 | Transmeta Corporation | Methods and systems employing a flag for deferring exception handling to a commit or rollback point |
US8621444B2 (en) * | 2004-06-01 | 2013-12-31 | The Regents Of The University Of California | Retargetable instruction set simulators |
US8413162B1 (en) | 2005-06-28 | 2013-04-02 | Guillermo J. Rozas | Multi-threading based on rollback |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57101769U (ja) * | 1980-12-13 | 1982-06-23 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2253430A5 (ja) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4245302A (en) * | 1978-10-10 | 1981-01-13 | Magnuson Computer Systems, Inc. | Computer and method for executing target instructions |
US4253145A (en) * | 1978-12-26 | 1981-02-24 | Honeywell Information Systems Inc. | Hardware virtualizer for supporting recursive virtual computer systems on a host computer system |
US4587612A (en) * | 1982-10-22 | 1986-05-06 | International Business Machines Corporation | Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter |
-
1985
- 1985-09-30 US US06/782,323 patent/US4794522A/en not_active Expired - Fee Related
-
1986
- 1986-07-18 JP JP61168229A patent/JPS6275735A/ja active Pending
- 1986-08-05 EP EP86110795A patent/EP0217068A3/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57101769U (ja) * | 1980-12-13 | 1982-06-23 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04268928A (ja) * | 1991-02-25 | 1992-09-24 | Toshiba Corp | エミュレーション装置及び半導体装置 |
US5896774A (en) * | 1993-01-05 | 1999-04-27 | Minolta Co., Ltd. | Actuating mechanism |
Also Published As
Publication number | Publication date |
---|---|
US4794522A (en) | 1988-12-27 |
EP0217068A3 (en) | 1989-07-12 |
EP0217068A2 (en) | 1987-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS6275735A (ja) | エミユレ−シヨン方法 | |
US7886293B2 (en) | Optimizing system behavior in a virtual machine environment | |
US6633968B2 (en) | Pre-fetching of pages prior to a hard page fault sequence | |
US8201187B2 (en) | Object monitoring system in shared object space | |
JP3572016B2 (ja) | 信頼されないプログラムを実行するための方法 | |
US7149929B2 (en) | Method of and apparatus for cross-platform core dumping during dynamic binary translation | |
US20070094648A1 (en) | Caching dynamically compiled code to storage | |
JP2001504957A (ja) | 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置 | |
US6173248B1 (en) | Method and apparatus for handling masked exceptions in an instruction interpreter | |
JP2001519953A (ja) | マイクロプロセッサの改良 | |
JPH05216689A (ja) | コンピュータ装置およびコンピュータ装置を動作させる方法 | |
CN107463513B (zh) | 在存储位置之间转移控制的系统和方法 | |
JP2004303114A (ja) | インタープリタおよびネイティブコード実行方法 | |
KR920003044B1 (ko) | 가상 머신 시스템용의 게스트 머신 실행 제어 시스템 | |
US10120709B2 (en) | Guest initiated atomic instructions for shared memory page host copy on write | |
JP2007094986A (ja) | シミュレーション装置およびシミュレーション方法 | |
US20050138263A1 (en) | Method and apparatus to retain system control when a buffer overflow attack occurs | |
KR101109984B1 (ko) | 에뮬레이팅된 처리 환경에서 실행을 용이하게 하는 방법, 시스템 및 컴퓨터 판독가능 매체 | |
JP2001519954A (ja) | 一時的にターゲット・プロセッサの状態を保持する装置を備えたホスト・マイクロプロセッサ | |
CN110362501B (zh) | 一种执行饱和寻址加载和存储操作的设备和方法 | |
JP3263999B2 (ja) | プログラム内容解析装置 | |
JP6143038B1 (ja) | アプリケーションに依存することなくファイルにアクセスするosプログラム及び方法 | |
US7269830B2 (en) | Methods and hardware for safe memory allocation in arbitrary program environments | |
JPS6212555B2 (ja) | ||
JPS61148536A (ja) | 情報処理システム |