JPH0677236B2 - I/o割込みをシミュレートする装置及び方法 - Google Patents

I/o割込みをシミュレートする装置及び方法

Info

Publication number
JPH0677236B2
JPH0677236B2 JP63318669A JP31866988A JPH0677236B2 JP H0677236 B2 JPH0677236 B2 JP H0677236B2 JP 63318669 A JP63318669 A JP 63318669A JP 31866988 A JP31866988 A JP 31866988A JP H0677236 B2 JPH0677236 B2 JP H0677236B2
Authority
JP
Japan
Prior art keywords
interrupt
instruction
processor
simulated
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
JP63318669A
Other languages
English (en)
Other versions
JPH01205347A (ja
Inventor
リチヤード・グレゴリー・フオグ、ジユニア
アツロー・マーチン・デ・ニコルス
ジヨン・クラウド・オークイン、サード
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
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 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH01205347A publication Critical patent/JPH01205347A/ja
Publication of JPH0677236B2 publication Critical patent/JPH0677236B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the program performs an input/output emulation function

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

【発明の詳細な説明】 〔関連出願〕 本出願人に譲渡された1986年1月17日に米国で特許出願
された出願係属中のシリアル番号第820451の「仮想ター
ミナル・サブシステム」。
本出願人に譲渡された1988年2月1日に米国で特許出願
され出願係属中のシリアル番号第151136号の「CPUプロ
セツサをシミユレートするための条件コード・グラフ解
析」。
本出願人に譲渡された1988年2月1日に米国で特許出願
され出願係属中のシリアル番号第151137号の「シミユレ
ートされたCPUプロセツサ中のダイナミツク転送制御命
令アドレスの翻訳」。
本出願人に譲渡された1988年2月1日に米国で特許出願
され出願係属中のシリアル番号第151135号の「CPUプロ
セツサをシミユレートする方法及びシステム内でのメモ
リ・マツピングと特別書込検出」。
本特許出願書類の開示部分の一部は著作権法により保護
を受ける部分を含んでいる。著作権者は、特許庁の包袋
または記録に表わされるままでの、特許出願書類及び開
示部分の複製に関しては異議を持たないが、それ以外の
いかなる場合においても全ての著作権を留保するもので
ある。
〔産業上の利用分野〕
この発明は、入出力装置を有する第1のデータ処理シス
テムの特定の第1のプロセツサのために書かれたアプリ
ケーシヨン(適用業務)を実行するデータ処理システム
に関する。特に、第1のプロセツサとは異なる第2のプ
ロセツサを有し第1のデータ処理システムの入の出力装
置が取付けられた第2のデータ処理システムにおいて、
前述のアプリケーシヨンを実行するために、第1のデー
タ処理システムのI/O割込みをシミユレート(模擬)す
る方法及び装置に関する。
〔従来技術〕
コンピュータ技術の進歩は、処理システムのプロセツサ
(中央処理ユニツト(CPU)とも呼ばれる)の変化を絶
えず促している。種々のプロセツサの進化の1例として
は、IBM PCに用いられたインテルの8088プロセツサ、IB
M PC ATに用いられたインテルの80286プロセツサ、IBM
PS/2モデル80に用いられるインテル80386プロセツサ、
及びIBM RT PCの縮小命令セツト・コンピユータ(RIS
C)・アーキテクチヤを利用するIBM リサーチ/OPDマイ
クロプロセツサ(ROMP)である。他のプロセツサは、モ
トローラの68000、68020である。
種々の処理システムのハードウエアは、新らたに開発さ
れたプロセツサの増加した処理能力を利用するために急
速に変化している。ハードウエアの変化の不利な点は、
前のプロセツサのために書かれたソフトウエアは普通、
後のハードウエア技術には用いることができないことで
ある。
いくつかの場合においては、アプリケーシヨンがもとも
とそれが書かれたのとは異なる処理システム上で使用で
きることがあるが、そのアプリケーシヨンの性能は最初
にそれが書かれた処理システム上での性能に比較して、
異なる処理システム上では良くない。この結果、長い開
発期間を要したソフトウエア・アプリケーシヨンはすぐ
に旧式となつてしまうおそれがある。前に書かれたソフ
トウエア・アプリケーシヨンが使用できなくなること
は、その前に書かれたアプリケーシヨンの機能が新しい
ハードウエアの処理システム上でまだ関連性があつて需
要がある時、一層残念なことである。
この結果、新しいハードウエアが初めて市場に発売され
る時、「新しい」ハードウエアのデザインのために特別
に書かれた「新しい」ソフトウエアの利用できる数は、
普通は限られたものである。これは、一部には、ソフト
ウエア・アプリケーシヨン・プログラムを作る開発期間
が長いこと、そして、ハードウエアが市場に発売される
までは新しいハードウエアのデザインは製造者により秘
密にされていることによる。ソフトウエアの開発者は、
処理システムのためのソフトウエア・アプリケーシヨン
・プログラムを書く前に、その処理システムのハードウ
エアについてのある事項について知らなければならな
い。
理想的には、処理システムの製造業者は新しいハードウ
エアの処理システムが市場に発表されると、即座に多量
のソフトウエアが入手可能となつて処理システム上で実
行できるようになることを望む。顧客が、もし使用のた
めに豊富な量のソフトウエアの供給が利用可能であるこ
とを知れば、新しい処理システムに投資する可能性がも
つと大きくなるであろう。
より古いハードウエア・デザインのために前に書かれた
大量のソフトウエアを使えるようにするいくつかの手法
がある。古いハードウエア的手法は、もともとは別のプ
ロセツサのために書かれたアプリケーシヨンを実行でき
るようにするために、新しい処理システムにコプロセツ
サを設けることである。この手法では、処理システムは
両方のタイプのプロセツサ、古いプロセツサと新しいプ
ロセツサ、のために書かれたアプリケーシヨンを実行す
ることができる。
例えば、IBM RT PCは、IBM PC ATのためにもともと書か
れたアプリケーシヨンを使用するため、IBM PC ATコプ
ロセツサを含んでいた。しかし、コプロセツサがオペレ
ーテイング・システムの低いレベルにおいてサポートさ
れたため、コプロセツサはAIXオペレーテイング・シス
テムにより提供される機能を十分に利用することができ
なかつた。AIXオペレーテイング・システムにより提供
される機能の一つは、本出願人に譲渡された1986年1月
17日の米国特許出願シリアル番号第820451号の「仮想タ
ーミナル・サブシステム」に説明されるようなマルチ・
タスキングである。
しかしながら、コプロセツサは1度に1セツシヨンしか
ユーザに与えていない。これは、コプロセツサがPC AT
エミユレーテイングのためのハードウエア・アダプタを
含んでいたからである。すなわち、一度コプロセツサが
開始すると、コプロセツサの他の要求は実行できなかつ
た。コプロセツサは第1の処理システムのプロセツサ速
度に限定されていて、第1の処理システムより進歩した
より高速の第2の処理システムを利用することができな
かつた。
第2の手法は、ソフトウエアにより第2のプロセツサを
シミユレート(模擬)することである。ソフトウエア・
シミユレータが、あるプロセツサのために前に書かれた
ソフトウエアを異なるプロセツサを有する新しい処理シ
ステム上で実行するためのメカニズムを提供する。シミ
ユレーシヨンを行うソフトウエア手法は、より高速の進
歩した第2の処理システムを利用することができる。ま
た、第1のプロセツサの複数の要求を与えるためのオペ
レーテイング・システムのマルチタスキング能力を使用
することができる。
今日、販売されているソフトウエア・シミユレータとし
て、インシングニア・ソリユーシヨンによるソフトPCお
よびコモドールのアミガ(モトローラ68000を使用)の
ためのシミル・リサーチによるアミガ・トランスフオー
マがある。このシステムの情報が、記事「アミガのトラ
ンプ・カード:IBM PCエミユレーシヨン」、AMIGA WORL
D、Vol.1、No,2、11月/12月1985、に記載されている。
フエニツクス・テクノロジーが、68000のプロセツサを
有するアポロの製品のためのインテル・プロセツサをシ
ミユレートするシミユレータを提供した。
特定のCPUプロセツサは、全て特定の命令セツトを持つ
ている。特定のCPUプロセツサのためのソフトウエア・
アプリケーシヨン・プログラムが開発される時、それは
オブジエクト・コードにコンパイルされる。オブジエク
ト・コードは特定の命令セツトを支援するいかなるCPU
上でも実行されることを目的としている。シミユレータ
は特定の命令セツト上で実行されるように書かれたオブ
ジエクト・コードを取り出し、これを類似または異なる
命令セツトを持つ異なるプロセツサ上で走らせることが
できるように変換する。2つのプロセツサの2つの命令
セツトが異なればなるほど、シミユレートすることはよ
り困難になる。
例えば、インテル80286プロセツサは、広い範囲の種類
の命令を提供する大変豊富な命令セツトを持っている。
各命令は特定のタイプの状況のために特別に作られてい
る。さらに、各命令はいくつかの操作をすることができ
るようであつてもよい。これに対して、RT PCのROMPプ
ロセツサは、縮小命令セツト(RISC)プロセツサを有す
る。これはより少ない命令と、命令当りより少ない機能
を与える。インテル80286中の各命令は複数のタスクを
実行できるのであるが、同じタスクを実行するのにROMP
RISCプロセツサではより多くの命令を必要とするであ
ろう。
しかし、命令セツトを単純化することにより、プロセツ
サの速度は増大させることができる。より多くの命令セ
ツトが要求されるけれども、より共通でより単純なタス
クを実行する際には複雑な命令に費やされる追加的な時
間はない。
従来のソフトウエア・シミユレータの手法では、1つの
命令の結果をシミユレートするサブルーチンを作つてい
た。装置がシミユレートされてその命令を実行する必要
があるたびごと、その命令をデコード(複号)して実行
するため、サブルーチンが呼び出される。この手法の問
題点は、サブルーチンが呼び出されて実行されるたびご
と、命令をデコードするというオーバーヘツド(仕事)
が発生するということである。この結果、シミユレート
されたプロセツサの速度に悪影響を与える。
命令が実行されるたびごとにサールーチンを呼び出すと
いうかわりに、別のソフトウエア・シミユレーシヨン手
法では命令をシミユレートするためにホストの機械語命
令の比較的短いシーケンスをコンパイル(編集)する。
この結果、命令をデコードして翻訳するオーバーヘツド
はたつた一度、その命令が最初に実行される時に生ずる
だけである。その後、この翻訳は保管される。それ以降
は、その命令がシミユレートされるたびごと、その翻訳
が実行される。これはしばしば第2世代のシミユレータ
と呼ばれる。第1世代のシミユレータは一度に一つの命
令を取り、それを実時間でデコードして実行する。各命
令が必要とされる時に、各命令に対してデコードが行な
われる。第2世代のシミユレータは、一度に命令を全て
検査して、命令を翻訳し、再度翻訳し直すかわりに、そ
の翻訳を再度使用する。
従来の第2世代のシミユレータとしては、IBMシステム/
370上でROMP CPUをシミユレートするRSIMと呼ばれるシ
ミユレータがある。このシミユレータは、各命令に対し
てセルと呼ばれる固定の大きさの記憶(各ハーフワード
に対して16バイト)領域を用意している。各RT命令につ
いてIBM370の命令がこれらの各セルに作成される。もし
作成されたコード量が1つのセルに入れることのできる
大きさよりも小さければ(普通はこの場合である)、次
のセルの次の境界へ分岐される。もし命令をシミユレー
トするために作成されたコード量が1つのセルに入れる
ことができないものであれば、サブルーチン呼出しが生
成され、エミユレーシヨンを実行し、実行を完了するた
めにセルに戻る実行時間環境のルーチンセツトに分岐す
る。別のシミユレータがIBM RT PC上でIBMシステム/370
プロセツサをシミユレートする。これは、1987年6月11
日にインタプリータ及びインタプリータ技術に関する計
算機械シンポジウムに於てMay.C.が発表した。“模擬:
高速システム/370シミユレータ”、1987年に発行された
ACM会報SIG PLANに掲載されている。
第1世代のシミユレータは、シミユレートされる命令当
り50ないし100のホストの機械語命令を実行する。第2
世代のシミユレータは、シミユレートされる命令当り平
均して10のホストの機械語命令を実行する。
もし、シミユレータがシミユレートされる機械上の1命
令をシミユレートするために50または10の命令を使用す
るならば、シミユレータを実行する第2のプロセツサは
それぞれシミユレートされる機械に較べて50または10倍
速くなければ、性能上匹敵することができない。したが
つて、この技術においては以前にシミユレートまたは翻
訳された各命令当りのシミユレート命令数を減少するこ
とが望ましい。
たとえば、もし、シミユレータがシミユレートされる命
令当り単に4つの命令を用いてシミユレートするように
設計することができるならば、そして、シミユレータ・
プロセツサがシミユレートされる機械のプロセツサより
も4倍以上速ければ、シミユレータはシミユレートされ
る元の機械よりも速いであろう。したがつて、ユーザ
は、アプリケーシヨン・プログラムを使用するためにそ
のプログラムがもともと書かれた機械を用いるよりも、
シミユレートされた機械を用いた方が性能を向上できる
ことを分かる。
このため、他のプロセツサをシミユレートする際に克服
するための総合的問題は、シミユレータの処理速度を上
げるためにシミユレートされる命令当りのシミユレータ
(ホスト)命令数をさらに減少させることにある。
しかし、異なる処理システムのために書かれたアプリケ
ーシヨン・プログラムが実行される場合、CPUプロセツ
サが効率的にシミユレートされなければならないことの
ほかに、別の問題がある。異なる処理システムをシミユ
レートするためには、第1の処理システムのプロセツサ
をシミユレートすると同時に、その第1の処理システム
のI/Oの種々の要素を正確かつ効率的にシミユレートす
ることが必要である。処理システムに取付けられている
I/O装置をシミユレートする時にCPUシミユレータの性能
を低下させないようにすることが重要である。これは、
I/O装置からの割込みをシミユレートする場合に大切で
ある。
ソフトウエアによりシミユレートされるCPUを用いる時
に重要な問題点は、物理的アダプタからソフトウエアに
よりシミユレートされたCPUへのハードウエア割込み
が、CPUの性能を低下させないようにすることである。
〔発明が解決しようとする問題点〕
したがつて、この発明の目的は、シミユレートされる機
械語命令当りのホストの機械語命令の平均数を減少させ
ることである。
この発明の他の目的は、シミユレータの性能を低下させ
ることなく、処理システム上で遅滞なくI/Oアダプタか
らの割込みに応答しかつこの処理システムをシミユレー
トすることである。
〔問題点を解決するための手段〕
この発明のシミユレータは、ハードウエアを直接制御す
るためのシミユレータのためのパスを提供する。
ある処理システムのI/O装置を、シミユレートされる別
の処理システムのプロセツサ上で正確にシミユレートす
るためのいくつかの手法が開発された。
まず、シミユレートされるCPUがI/O装置アダプタからの
ハードウエア割込みを認識しこれをサービスするため
に、第1の処理システムの典型的なハードウエア割込メ
カニズムをシミユレートする手法が必要とされた。この
発明のシミユレートされる割込コントローラ・ルーチン
はこれを達成している。
この発明の好ましい実施例でシミユレートされるインテ
ル80286は命令を実行している間は割込まれることがで
きないけれども、割込みは受け入れられることができ、
認識され、各命令の後でサービスされる。処理システム
・シミユレータでは、各命令実行後に割込を調べてもし
割込が未処理であると、その後に割込をサービスすると
いうことは非常に時間を費やすことであつた。
この発明の方法は、割込が素早く認識されることを保証
しながら、シミユレートされるCPUにより割込みがポー
リングされる回数を最小にする。各命令後に割込みが検
査される代りに、コード(命令)のブロツク後に検査さ
れる。この発明の方法では、コンパイラ技術に過去に適
用され、I/Oシミユレーシヨンに現在適用された手法に
よって命令のブロツクを規定する。
アプリケーシヨン・プログラムのためのプロセツサの命
令制御の流れ図の解析は、いくつかの第2のプロセツサ
の命令に容易かつ直ちに一緒に翻訳されることができる
第1のプロセツサの命令ブロツクを決定するために使用
される。命令ブロツク終了後、シミユレートされた割込
コントローラは割込が未処理であるか否かを検証するた
めに検査される。
これに加え、CPUシミユレータは迅速にI/O装置に応答す
るように割込を認識することを保証しなければならな
い。これは割込みが入って来たか否かを決定するために
規則正しい間隔でこの割込みをポーリングしなければな
らないことを意味する。
これを保証するため、図形解析から命令のプロツクが翻
訳される時にプログラム中でループが発生する可能性を
検出した場合、この発明のシミユレータは割込みを検査
する。ループは、以前にすでにいた所へ戻る分岐する命
令であり、分岐命令への戻り径路が存在する。シミユレ
ータがループ中でどれだけ長く実行するかを決定できな
いため、毎回ループ付近でシミユレータが割込みを検索
することが保証される。
2つの条件が真である場合、プロセツサは割込みを認識
する。1つは要求されている割込みがある場合で、この
場合は割込コントローラからである。もう1つは内部的
にプロセツサが割込みにサービスできる場合である。
これらの条件が両方とも真である時、シミユレータが割
込みを認識しそして割込み検出のためのオーバーヘツド
を最小にするため、シミユレータは1つの半ワード・ロ
ード(Load Half)命令でもつて半ワード(2バイトの
記憶)をポーリングする。半ワードの各バイトは別々の
意味を有する。1バイトは、プロセツサが現在割込みに
サービスすることができるか否かを示す。このバイト
は、シミユレートされたプロセツサのみにより更新され
る。他のバイトは割込みが要求されているか否かを示
す。このバイトはシミユレートされた割込みコントロー
ラのみにより更新される。もし両バイトが零であるなら
ば、プロセツサが割込みに対して利用でき、そして、割
込みが要求されていることを意味する。これら2つの条
件は別々に更新することができ、そして一つの命令で同
時に検査することができる。
〔実施例〕
この発明の好ましい実施例において、IBM RT PCがIBM
PC ATをシミユレートする。この好ましい実施例の利
点は、RT PCとPC RTの両方が等しいバスを有してい
て、もしシステムがアダプタを動かすソフトウエアを持
つているなら、PC ATのために作られたアダプタをPT
PCを使うことができる。異なるバスを持つ処理システム
をシミユレートするためには、そのハードウエアのため
に仮想インターフエースを書く必要がある。この発明で
は、ハードウエアへの直接インターフエースがある。
たとえば、この発明の好ましい実施例では、PC AT用に
設計された音楽カードをRT PCに接続することができ
る。この音楽カードを動かすRT PCのための固有のソフ
トウエアは存在しないけれども、PC AT上の音楽カード
のために書かれたソフトウエアをこの発明のシミユレー
タを用いてRT PC上で用いることができる。
IBM RT PC処理システム、IBM PC AT処理システム、
及びインテル80286プロセツサに関してのさらに詳しい
情報については、以下の参照文献がある。Bach,M.Jの
「UNIXオペレーテイング・システムの設計」1986年、プ
レテイス・ホール刊、Lang,T.G.及びMothersole,T.L.
「RT PC VRM中核の設計」1986年9月1日、「AIXオペ
レーテイング・システム・コマンド・レフアレンス」2.
1版、IBMコーポレーシヨン、SC23−0790、「AIXオペレ
ーテイングシステム・マネージング・AIXオペレーテイ
ングシステム」2.1版、IBMコーポレーシヨン、SC23−07
93、「AIXオペレーテイングシステム・プログラミング
・ツール及びインターフエイス」2.1版、IBMコーポレー
シヨン、SC23−0789、「AIXオペレーテイングシステム
・テクニカル・レフアレンス」2.1版、第1巻及び第2
巻、IBMコーポレーシヨン、SC23−0808及びSC23−080
9、「IBM RTパーソナル・コンピユータ技術」IBMコー
ボレーシヨン、SA23−1057、1986、「仮想資源マネジヤ
・テクニカル・レフアレンス」第2.1版、第1巻及び第
2巻、SC23−0816及びSC23−0817、「iAPX 8286プログ
ラマ・レフアレンス・マアニユアル及びiAPX286 数値
補足」インテル、210498−003、1985、「IBM PC ATテ
クニカル・リフアレンス・マアニユアル」IBMコーポレ
ーシヨン、1984年3月、「8259A/8259A−2/8259A−8」
インテル注文番号231468−001、1986年10月。
第1図に示すように、シミユレータ10は処理システム1
のオペレーテイング・システム12上でアプリケーシヨン
・プログラムとして実行される。第1図に加えて第2図
を参照すると、シミユレータ10がステツプ2で開始され
ると、シミユレータ10は読出し専用記憶(ROS又はROM)
15から80286命令を含むBIOS13をステツプ3でオペレー
テイング・システム12の共有メモリ・セグメント16上に
複製する。ステツプ4で、シミユレータ10はBIOS13を翻
訳し、ステツプ5でBIOSがアプリケーシヨン19がもとも
と書かれたオペレーテイング・システム(DOS)18をロ
ードする。そしてステツプ6でオペレーテイング・シス
テム18を翻訳し実行する。ステツプ7で、ユーザ(使用
者)がアプリケーシヨン19をオペレーテイング・システ
ム・プロンプト上に呼び込み、ステツプ8でシミユレー
タ10がアプリケーシヨン・プログラム19を翻訳し実行す
る。
I.割込メカニズム 第5図に示すこの発明の好ましい実施例において、シミ
ユレータされた割込コントローラ・ルーチン300が、シ
ミユレートされたCPU10がI/Oアダプタ310からのハード
ウエア割込みを認識してサービスするためにハードウエ
ア割込みメカニズム(例えばインテル8259)の機能をシ
ミユレートする。
1つの割込要求のみが入いることを許す286プロセツサ
をシミユレートしているので、CPUシミユレータ10は単
に一度に1つの割込みを受けることができるだけであ
る。この発明の好ましい実施例がシミユレートしている
286プロセツサを有する第1の処理システムでは、8259
と呼ばれるハードウエア割込コントローラはたつた1つ
の割込のみを286プロセツサが受け取るように用いられ
ていた。もつとも割込みの15の異なるレベルを内部タイ
マ時計などの内部アダプタまたはバスに取付けられた通
信カードなどの外部アダプタへ接続することができる。
これらの割込みの優先順位を付けるために、実際の第1
の処理システムは縦続接続された2つの8259割込みコン
トローラを用いていた。各割込みコントローラは8つの
入力を受信することができ、そしてこれらを1つの出力
に優先順位付けすることができる。一方の割込みコント
ローラは8個の割込みを外部または内部アダプタから受
け取り、これらを1つの出力に優先順位付ける。他方の
割込みコントローラはこの1つの出力を外部または内部
アダプタからの7つの他の可能な割込みに加えて複数の
割込みの1つとして受取る。
このコントローラに関するさらに詳しい情報は「8259A
プログラマブル割込コントローラ8259A/8259A−2/825
9A−8」インテル、注文番号231468−001、1986年10月
に記載されている。上述のハードウエア割込コントロー
ラの機能は、この発明のシステムにおいて、上記参照文
献の記載を利用して作成したプログラムによりシミユレ
ートされた割込コントローラ・ルーチン300(第5図)
内でエミユレートされる。
シミユレートされた割込コントローラ・ルーチン300は
共有メモリ・セグメント16(第5図)中に存在してい
て、アプリケーシヨン及び他の処理10、9、及び装置ド
ライバ320(割込みハンドラとして機能する)が割込コ
ントローラのエミユレートされた機能にアクセスするこ
とを可能にしている。シミユレートされた割込コントロ
ーラ・ルーチン300は、ルーチンが他の処理との同期な
しに呼出されるように再入可能に書かれていた。
第5図は、オペレーテイング・システム12上で実行され
るアプリケーシヨンである、CPUシミユレータ10への実
際のハードウエア割込315、316、317を提供するこの発
明によって使用される好ましい実施例を示す。
第1に、I/O装置310−312の各々に対して仮想資源管理
(VRM)装置ドライバ320−332は、ハードウエア・バス
からハードウエア割込315−317を実際に受け取るために
仮想資源管理4中に設けられている。VRM装置ドライバ3
20−322が加えられたので、AIXオペレーテイング・シス
テム装置ドライバ237はAIXオペレーテイング・システム
12のカーネルで必要とされた。
シミユレータ10は、2つのタイプの装置ドライバ323、3
20へタスク生成222を行うオペレーテイング・システム
装置ドライバ237へOPEN命令221を出す。VRM装置ドライ
バ323はシミユレータ10へタイマ割込を送る責任を有し
ている。タイマ割込みの能力は、1秒以下の細分性にお
いて必要であつた。AIXオペレーテイング・システム・
レベル12では、単に1秒のタイマ割込みが利用可能であ
つた。しかし、VRMレベル14において、タイマ割込みは
大よそ毎ミリ秒ごとに送ることができる。このため、VR
M装置ドライバ323は、シミユレータ10へタイマ割込みを
与えるために用いられた。
タイマ割込装置ドライバ323は、VRM14から周期的割込を
受信するようにタイマを設定する呼出しを行う。タイマ
割込みが装置ドライバ323によりVRM14から受取られるた
びごとに、装置323は同じ割込コントローラ・シミユレ
ーシヨン・ルーチン300を呼び出し、一般的装置ドライ
バ320がハードウエア310から割込みを受け取る時に発生
する割込みを要求する。このようにして、タイマ割込31
8及びハードウエア割込319が、アプリケーシヨン・レベ
ルで実行されているシミユレータ10へ送られることがで
きる。
第6図は、第5図に示すこの発明のシステムによりCPU
シミユレータ10へ実際のハードウエア割込315、316、31
7を提供するために用いられるステツプを説明する。
ステツプ341で3278/3279エミユレーシヨン・カードなど
のアダプタ310がハードウエア割込を送る時、装置ドラ
イバ320中の割込みハンドラによりステツプ342で受信さ
れる。一旦、装置ドライバ320が割込315を認識すると、
装置ドライバ320がステツプ343でルーチン・シミユレー
トされた割込コントローラ・ルーチン300を呼び出し、
ステツプ344でハードウエア割込コントローラ、例えば8
259の機能をシミユレートする。
これらの機能のいくつかは、割込レベルを検査するこ
と、割込に優先順位付けを行うこと、及びマスクまたは
マスクされない割込みを検査することを含む。例えば、
アプリケーシヨン19は割込みをマスクすることにより、
異なるレベルの割込みを禁止することができる。もしア
プリケーシヨン19がいくつかのI/O装置を支援しなけれ
ば、それからの割込みをマスクするであろう。したがつ
て、シミユレートされた割込コントローラ・ルーチン30
0は、ステツプ345で装置ドライバ320が割込を受信した
レベルで、その割込みをCPUシミユレータに通知するこ
とができるかどうかを決定する。もしそれができなけれ
ば、装置ドライバ320−323からの次の呼出しを待つ。
もし同じレベルで割込みを通知することができるなら
ば、フラグをセツトする。シミユレートされた割込コン
トローラ・ルーチン300がCPUシミユレータ10へ通知すべ
き割込みを有すると、ステツプ346で2バイトワード
(または半ワード)330の内の1バイト332を零にセツト
することにより更新する。半ワード330が零になると、
サービスを要する割込みが存在する。半ワード330の2
バイト中、上位バイト332は割込コントローラ300のシミ
ユレーシヨンが所有し、下位バイト331はプロセツサ、
すなわち、CPUシミユレータにより所有される。
大部分のプロセツサは2つの条件が真である場合に割込
みを認識する。一方は割込みが要求されていること、こ
の場合はシミユレートされた割込コントローラ・ルーチ
ンからの割込みである。他方は内部的にプロセツサが割
込みに対してサービスすることができることである。
CPUシミユレータは大部分のプロセツサができるように
割込みを禁止することができる。これは普通、プロセツ
サが自己矛盾的であるとを許さない大変に慎重さを有す
るデータを処理する時に生ずる。もし、ルーチンが割込
みハンドラにおいても処理されるデータを更新している
と、プロセツサは命令のある一続きが割込まれることな
く自動的に実行されることを保証するために割込みを禁
止する。
プロセツサは、内部的に割込みをサービスすることが可
能であるかどうかを、プロセツサ中の割込フラグ・レジ
スタを更新することにより示す。この発明のシミユレー
トされた命令に対して、プロセツサにより用いられ、フ
ラグ・レジスタによって割込み禁止または可能にするい
くつかの典型的な命令が以下に説明される。
CLI(割込みクリア)は、割込コントローラからのいく
つかの割込要求を禁止するようにシミユレートされてい
る第1の処理システムのプロセツサのフラグ・レジスタ
内の割込可能ビツトを消去する。STI(割込み設定)
は、割込コントローラからの全ての割込要求を可能にす
るためフラグ・レジスタ内の割込み可能ビツトを設定す
る。これに加え、フラグ・レジスタ内の割込み可能ビツ
トを含む全内容を置き換える2つの命令、IRET及びPOPF
がある。
ステツプ360(第6図)で、CPUシミユレータ10がこれら
命令のどれか1つの翻訳を実行する時、2バイト半ワー
ド330の1バイト331を介してその割込可能状態を表わ
す。第8図は、STI命令をシミユレートするために要求
される翻訳コードを示す。第8図に示す一番目の命令
は、プロセツサが割込要求にサービスすることを可能に
するSTI命令に用いられる翻訳である。第8図に示めさ
れる2番目の命令は、プロセツサの可能状態を表わすた
めにシミユレートされたプロセツサにより所有されるバ
イト331を更新する。
CPUシミユレータ10は、外部的に割込み動作が要求され
ている事実を認識できなければならないのみならず、内
部的にプロセツサが割込みをサービスできなければなら
ない。これは共有メモリ・セグメント16内の2つのバイ
ト331をポーリングすることにより行なわれる。もし、
割込みがプロセツサの内部で可能であるならば、CPUよ
り所有されている半ワード330の1バイト331は零であ
る。割込みが外部から要求されている場合、シミユレー
トされた割込コントローラ・ルーチン300により所有さ
れる他のバイト332は零である。割込みは、ステツプ344
でシミユレートされた割込みコントローラ・ルーチン30
0の現在の割込み優先レベルにより決定された十分に高
い優先度のあるものである。CPUシミユレータ10は、ス
テツプ349で2バイト330が零になるまで、ステツプ348
で規則的に2バイト330を読む。
この発明の装置及び方法は、割込要求の返答としての肯
定応答を保証するオーバーヘツド(仕事)を最小にする
ため、アプリケーシヨン19の制御命令の流れ中の重要領
域を認識する。割込みを検査するオーバーヘツドを最小
にする2つの重要領域は、1)割込みが認識される場所
数を最小にすること、および2)割込みをサービスすべ
きかを決定するに必要とする仕事量を最小にすること、
である。
シミユレータ10は、割込みが認識される場所数を最小に
するようにどこで割込み要求がポーリングされるかを決
定するために第1のプロセツサ命令100のブロツクの図
形解析30(第3図)による情報に依存する。図形解析技
術は従来、高レベル言語コンパイラを最適化するのに用
いられたものであるが、プロセツサI/Oシミユレーシヨ
ンの問題に適用されるのは最初である。
シミユレータ10は第1のプロセツサ命令100(第3図)
を第2のプロセツサ命令130(第9A図、第9B図)に翻訳
する。しかし、1つの命令を1度に翻訳することはしな
い。シミユレータ10は翻訳がなく、実行される予定の第
1の命令を検査し、そして第3図に示めされるような命
令の図形30を作成る間、引き続く命令の検査を続ける。
第4図のステツプ131で、シミユレータ10が第1のプロ
セツサ命令100の新しいブロツクに達した時、ステツプ1
32で、シミユレータ10は第2のプロセツサ翻訳を与える
ために翻訳器27を呼出す。翻訳は3つの段階で行なわれ
る。
第1に、第4図のステツプ133で第3図の図形30が作成
される。これは、第1のプロセツサ命令のブロツクの構
造を表わす。図形中の各ノード101は1命令100に対応す
る。第1のプロセツサ命令デコーダ28は各ノード101を
命令のタイプ140を含む命令100についての情報で満た
す。
命令タイプ140は命令100の後続数に依存している。各ノ
ード101は最大2つの後続を有することができる。メモ
リ中で制御を次の順次命令に渡すのみの順次命令102−1
05、107、109、111−113、115−117の場合において、第
3図に示すようにノードは1つのみの後続103−106、10
8、110、112−114、116−118をそれぞれ有する。条件を
テストして、もし条件が真ならば1つの命令を分岐し、
もし条件が偽ならば次の命令に進む条件付分岐命令10
6、108の場合、2つの後続を有することができる。割込
戻り命令114、118の場合のように、ノード101が後続を
持たない可能性がある。後続を有しない命令114、118は
制御を動的に受け渡す命令を表わす。ノード101は順次
命令でない1つの後続を有することができる。無条件ジ
ヤンプ命令110はこの例である。
第4図のステツプ133で、ノード101はトランスレータ27
がノードを見つけると、記憶120中に連続的に割当てら
れる。第1のプロセツサのためにもともと書かれたアプ
リケーシヨン・プログラム中の調査は深さ第1調査と呼
ばれる。深さ第1調査では、命令がすでに調査されてメ
モリ中に記憶されているもの、たとえば、転送104に到
達するまで、または零のような終りノード、たとえば、
戻り命令114、に到達するまで、命令が連続的に調査さ
れる。もし、命令(たとえば、転送104)が、すでにメ
モリ中に記憶されていて、そして命令が記憶された命令
への径路123を有するもの(たとえば、ジャンプ110)中
に到達したならば、ループに出会つたことになり、前に
記憶された命令(たとえば、ジヤンプ110)中に記録さ
れる。
そして、図形解析は、前に出会つたタイプ2のノード
(たとえば、108)を訪ずれ、そして、命令がすでに到
達されてそしてメモリ中に記憶されたものに到達するま
で、または、零のような終りノード、たとえば戻り命令
114に到達するまで、別の径路122に沿つて調査すること
により、深さ第1調査を再開する。深さ第1調査は、前
に出会つたタイプ2のノード(たとえば、ジヤンプ10
8)を訪ずれることにより、上述の手順を繰返す。も
し、この命令の両方の径路122、および123がすでにたど
られたものであれば、調査は次の前のタイプ2の命令
(たとえば、ジヤンプ106)を訪ずれ、そして別の径路1
24をたどる。命令がすでに訪ずれられてメモリ中に記憶
されたものに到達するか、または、零のような終りノー
ド、例えば戻り命令118に到達するまで、命令115−118
が連続的に調査される。
第2に、第4図のステツプ134で、どこで割込みがポー
リングされなければならないかを決定するために図形が
解析される。割込みは全てのタイプゼロの命令の直前で
ポーリングされる。これに加えて、もし、タイプ1の命
令がCLI(割込みクリア命令)であるならば、割込みは
タイプ1の命令の直前でポーリングされる。図形解析の
深さ第1調査中、決定されるようなループを命令が閉じ
る場合のみ、割込みはタイプ2または3の命令でポーリ
ングされる。
第3に、第4図のステツプ136では、コード生成器29が
図形30を第9A、9B図に示す第2プロセツサ命令に翻訳す
るため呼び出される。図形解析から割込みがポーリング
されることを決定された所では、、翻訳器が第9A、9B図
に示すようにその所で割込みを検査する翻訳されたコー
ド138を挿入する。
上述の図形解析で決定されるように、命令が制御を動的
には決定できない所へ移す場合(なぜならば、実行時で
しか知られることのない値を必要とするため)にのみ割
込みが検査される。すなわち、タイプ零のノードの所、
または分岐または条件付分岐命令がループを閉じる場合
である。さらに別の例として、第7図は第1の処理シス
テム命令の制御流れ中で、割込みが認識される場所数を
最小にするために割込みがポーリングされる場所を示
す。
割込みがポーリングされなければならない場所数を最小
にしなければならないのみならず、割込みがサービスさ
れなければならないかどうかを決定するのに必要な仕事
も最小にしなければならない。割込要求がサービスされ
なければならないかどうかは、本処理の割込要求がある
かどうか及びプロセツサが現在サービスすることが可能
かどうかによつて決まる。
この発明のシミユレータは、共有メモリ・セグメント
(束縛されたページ)中で、2バイト半ワードを利用し
て、プロセツサ中の割込可能フラグ及びはいつて来る割
込み要求の両方の状態を示す。
半ワードの最初のバイトは、プロセツサが割込みをサー
ビス可能である時に、零を含む。2番目のバイトは、割
込みが要求されている時に、零を含む。これらのバイト
は文字記憶(STore Character)命令を用いて自動的に
更新することができること、また、半ワード・ロード
(Load Halfword)命令を用いて同時的に読み出すこと
ができること、が重要なことである。これは、重要な部
分のプログラムが割込まれる時、及び別の処理が矛盾す
る状態を生ずるような更新を同じデータにする時に発生
する同期の問題を回避する。
好ましい実施例の場合においては、もしIBM RT PCが
アドバンスド・プロセツサ・カードを備えているなら
ば、半ワード・ロード(Load Half)命令の実行は性能
を一層の向上を生ずるように他の命令と重複される。も
し、割込みがサービスされることがなければ(これがも
つとも一般的な状態である)、割込みへのポーリングは
約4マシン・サイクル、約半マイクロ秒を消費する。
第6図を参照すると、CPUシミユレータ10はステツプ348
で2バイト330をこの2バイト330がステツプ349で零に
なるまで規則的に読む。2バイトが零になるとき、ステ
ツプ350でCPUシミユレータ10がシミユレータ・コントロ
ーラ・ルーチン300へ割込肯定応答を送る。これはプロ
セツサが割込コントローラへハードウエアが割込要求し
た事実を肯定応答したことをハードウエア中の機構でシ
ミユレートする。
ステツプ353で、シミユレートされた割込コントローラ
・ルーチン300はCPUシミユレータ10へ割込レベルのタイ
プを戻す。割込レベル情報はシミユレートされた割込コ
ントローラ・ルーチン300により、メモリ中のアドレス
位置を示す割込ベクトルの形で渡される。CPUシミユレ
ータ10はこの情報を受取り、メモリ16へ行き、そして割
込を処理する割込みハンドラを呼び出すためにその特定
メモリ位置からアドレスを受け取る。割込みハンドラ
は、割込要求をサービスするために物理的装置11への入
出力命令を処理する。割込みハンドラが完了すると、シ
ミユレートされた割込コントローラ300へ通知する。そ
して、第6図のステツプ354、355でシミユレートされた
割込コントローラはその内部状況を更新し、割込の終り
のための割込コントローラの機能を実行する。
割込処理器は、シミユレートされたプロセツサにより使
用されるBIOS13のコードまたはDOS18の一部である。こ
のようにして、CPUシミユレータ10は各タイプの割込み
に対して何がなされなければならないかを決定する。
【図面の簡単な説明】
第1図はこの発明の好ましい実施例の処理システム環境
を示すブロツク図、第2図はこの発明のシミユレータを
開始する最初のステツプを示すフロー・チヤート、第3
図は翻訳される第1のプロセツサの命令の制御の見本の
流れの図形解析を示す図、第4図はCPUシミユレータに
よる翻訳による流れ図、第5図はI/O装置から割込みを
受け取るシミユレートされたプロセツサを示すこの発明
のシステムのブロツク図、第6図はI/O装置から割込み
を受け取るためのシミユレートされたプロセツサの方法
を示す流れ図、第7図は割込みをポーリングするオーバ
ーヘツドを最小にするために第1のプロセツサ命令の制
御流れ中の割込みをポーリングする位置を示す図、第8
図はシミユレートされたプロセツサ中で割込みを可能に
するために用いられる翻訳された命令を示す図、第9A及
び第9B図は第3図の図形解析から翻訳された第2のプロ
セツサの制御流れを示す図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジヨン・クラウド・オークイン、サード アメリカ合衆国テキサス州オウスチン、ベ リーヒル・ウエイ3907番地 (56)参考文献 特開 昭64−46845(JP,A)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】少なくとも一つのI/O装置から発せられた
    少なくとも一つの割込み要求をシミユレートする装置に
    おいて、 前記割込み要求を認識し、かつサービスすることができ
    るプロセツサをシミユレートする手段と、 割込みコントローラをシミユレートし、前記割込み要求
    を受取る手段と、 前記割込み要求の存在を指示し、前記シミユレートされ
    た割込みコントローラによって更新可能な第1の指示手
    段と、 前記シミユレートされたプロセツサが前記割込み要求に
    サービス可能であることを指示し、前記シミユレートさ
    れたプロセツサによって更新可能な第2の指示手段と、 前記シミユレートされたプロセツサで実行されるプログ
    ラムから流れグラフを作成する手段と、 前記流れグラフを解析することによって前記流れグラフ
    の特定タイプの命令を見つけて、前記シミユレートされ
    たプロセツサが前記第1及び第2の指示手段をいつポー
    リングするかを決定する手段と、 ポーリングすべき前記特定タイプの命令を見つけた場
    合、前記特定タイプの命令の前にポーリング指示子を挿
    入する手段と、 命令実行中、前記ポーリング指示子を検出すると、前記
    ポーリングを実行する手段とを備えたことを特徴とする
    I/O割込みをシミユレートする装置。
  2. 【請求項2】少なくとも一つのI/O装置によって発生さ
    れ、シミユレートされたプロセツサによってサービスさ
    れることができるようにされた少なくとも一つの割込み
    要求をメモリを有する情報処理装置上でシミユレートす
    る方法において、 前記割込み要求を受取るために割込みコントローラをシ
    ミユレートし、 前記シミユレートされた割込みコントローラによって前
    記メモリの2バイトのセグメントに前記割込み要求の受
    付けを指示し、かつ前記シミユレートされたプロセツサ
    によって前記メモリの前記2バイトのセグメントに前記
    割込み要求にサービスするように前記シミユレートされ
    たプロセツサのイネーブル状態を指示し、 前記シミユレートされたプロセツサで実行されるプログ
    ラムから作成された流れグラフを解析して前記流れグラ
    フの特定タイプの命令を検出することによって前記2バ
    イトのセグメントのポーリングをいつ実行するか決定
    し、 前記シミユレートされたプロセツサに前記2バイトのセ
    グメントをポーリングさせるようにする前記特定のタイ
    プの命令の前にポーリング指示子を挿入し、 命令実行中、前記ポーリング指示子を検出した場合、前
    記シミユレートされたプロセツサによって前記2バイト
    のセグメントをポーリングするようにしたことを特徴と
    するI/O割込みをシミユレートする方法。
JP63318669A 1988-02-01 1988-12-19 I/o割込みをシミュレートする装置及び方法 Expired - Lifetime JPH0677236B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15112388A 1988-02-01 1988-02-01
US151123 1988-02-01

Publications (2)

Publication Number Publication Date
JPH01205347A JPH01205347A (ja) 1989-08-17
JPH0677236B2 true JPH0677236B2 (ja) 1994-09-28

Family

ID=22537413

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63318669A Expired - Lifetime JPH0677236B2 (ja) 1988-02-01 1988-12-19 I/o割込みをシミュレートする装置及び方法

Country Status (3)

Country Link
EP (1) EP0327197B1 (ja)
JP (1) JPH0677236B2 (ja)
DE (1) DE68922321T2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564241B1 (en) * 1996-05-14 2003-05-13 L-3 Communications Corporation Avionic computer software interpreter
JP5045139B2 (ja) * 2007-02-16 2012-10-10 富士通株式会社 ソフトウェア生成装置及びシミュレーションシステム
EP4668110A4 (en) * 2023-03-22 2026-04-15 Mitsubishi Electric Corp INTERRUPTION SIMULATION DEVICE, INTERRUPTION SIMULATION METHOD, AND INTERRUPTION SIMULATION PROGRAM

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4727480A (en) * 1984-07-09 1988-02-23 Wang Laboratories, Inc. Emulation of a data processing system
JPS6446845A (en) * 1987-08-18 1989-02-21 Hitachi Ltd Simulation system for microcomputer

Also Published As

Publication number Publication date
EP0327197A3 (en) 1991-07-03
JPH01205347A (ja) 1989-08-17
DE68922321D1 (de) 1995-06-01
EP0327197B1 (en) 1995-04-26
DE68922321T2 (de) 1995-11-02
EP0327197A2 (en) 1989-08-09

Similar Documents

Publication Publication Date Title
US5129064A (en) System and method for simulating the I/O of a processing system
US6895460B2 (en) Synchronization of asynchronous emulated interrupts
US4819234A (en) Operating system debugger
US6772419B1 (en) Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US5530858A (en) Method and apparatus for background processing for PCMCIA card services
US5269021A (en) Multiprocessor software interface for a graphics processor subsystem employing partially linked dynamic load modules which are downloaded and fully linked at run time
US5911065A (en) System and method for providing cooperative interrupts in a preemptive task scheduling environment
JPS6258341A (ja) 入出力割込処理方式
US7111200B2 (en) Apparatus and method for debugging a logical partition
JP2010015534A (ja) マルチコアマイコンシステムのシミュレーション方法及びシミュレーション装置
JPH05216689A (ja) コンピュータ装置およびコンピュータ装置を動作させる方法
JPH06242987A (ja) コンピュータ装置においてマイクロプロセッサの正常な処理の引継ぎをホストプロセッサが実行する方法および装置
KR900004291B1 (ko) 데이터 프로세서
US20040010781A1 (en) Parameter parsing system
US4821231A (en) Method and apparatus for selectively evaluating an effective address for a coprocessor
KR920003044B1 (ko) 가상 머신 시스템용의 게스트 머신 실행 제어 시스템
JP2991242B2 (ja) マルチプロセッサコンピュータシステム使用方法
US20050091022A1 (en) Ultra fast multi-processor system simulation using dedicated virtual machines
US6263421B1 (en) Virtual memory system that is portable between different CPU types
JPH0677236B2 (ja) I/o割込みをシミュレートする装置及び方法
JPS6049352B2 (ja) デ−タ処理装置
EP0842466B1 (en) Method for emulating program instructions
JPS6358550A (ja) シミユレ−タ
JPH0883198A (ja) プログラムシミュレーション装置
Gallacher 16-bit operating systems