JPH10116200A - ディジタルコンピュータシステムにおける所定の型の例外の回避を容易にするためのシステム及び方法 - Google Patents

ディジタルコンピュータシステムにおける所定の型の例外の回避を容易にするためのシステム及び方法

Info

Publication number
JPH10116200A
JPH10116200A JP9145143A JP14514397A JPH10116200A JP H10116200 A JPH10116200 A JP H10116200A JP 9145143 A JP9145143 A JP 9145143A JP 14514397 A JP14514397 A JP 14514397A JP H10116200 A JPH10116200 A JP H10116200A
Authority
JP
Japan
Prior art keywords
instruction
code
exception condition
program
fix
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
Application number
JP9145143A
Other languages
English (en)
Inventor
Paul H Hohensee
ポール・エイチ・ホーヘンシー
David L Reese
デイヴィッド・エル・リース
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10116200A publication Critical patent/JPH10116200A/ja
Pending 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 プログラムを実行するための実行環境とフィ
ックスアップコード生成サブシステムを具備したプログ
ラムの実行時に例外条件を回避するためのシステムを提
供する。 【解決手段】 プログラムは一連の命令を含む命令スト
リームよりなり、例外環境は命令ストリーム中の各命令
の実行に関連して少なくとも1つの所定の型の例外条件
を検出するための例外条件検出器を含む。フィックスア
ップコード生成サブシステムは、実行環境による命令ス
トリーム中の命令の実行に関連した所定の型の例外条件
の検出に応答して、処理されると該所定の型の例外条件
を回避し、該少なくとも1つの例外条件が検出された命
令ストリーム中の命令を命令ストリーム中のフィックス
アップコードによって置換する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ディジタルコンピ
ュータに関し、より詳しくはディジタルコンピュータシ
ステムにおける所与の型の例外の回避を容易にするシス
テム及び方法に関する。本発明は、特に非整列メモリ参
照を処理するのに例外ハンドラの使用が必要なマイクロ
プロセッサによる非整列メモリ参照を伴うメモリアクセ
ス動作の効率的な処理を容易にするためのシステム及び
方法に関する。
【0002】
【従来の技術】ディジタルコンピュータは、各々のプロ
グラムがコンピュータがデータの特定の要素に関連して
特定の演算を行うことができるようにする一連の命令を
含む多種多様なプログラムを処理する。ディジタルコン
ピュータシステムでは多種多様なプロセッサを利用する
ことができ、各々のタイプのプロセッサは、アーキテク
チャに従って構成され、アーキテクチャは、とりわけ、
アーキテクチャに従って構成されたプロセッサが実行す
ることを期待される命令のセット、種々のフォーマッ
ト、処理することが可能なデータのタイプ及びフォーマ
ット、命令処理時に使用される種々のレジスタに関する
定義、コンピュータのメモリ中の情報にアクセスする仕
方、並びにアーキテクチャに従って構成されたプロセッ
サが命令処理時に検出する可能性がある例外条件の処理
の仕方を記述する。
【0003】「エミュレーテッドプロセッサ」としての
一つのタイプのプロセッサを「ホストプロセッサ」とし
ての別のタイプのプロセッサによってエミュレートでき
るようにすることが望ましいことがしばしばある。ホス
トプロセッサは、一般に、エミュレーテッドプロセッサ
用に書かれたプログラムを処理することによってエミュ
レーテッドプロセッサをエミュレートして、エミュレー
テッドプロセッサによって発生すると思われる出力に事
実上相当する出力を発生する。一般に、エミュレーショ
ンは、エミュレーテッドプロセッサによって実行するた
めに生成されたプログラム(「オリジナル」プログラ
ム)をホストプロセッサによって処理することができる
プログラム(「変換済み」プログラム)に変換すること
によって行われる。この変換プロセスには、たとえば、
オリジナルプログラムの命令及びその他の要素からホス
トプロセッサのアーキテクチャに基づいた命令及びその
他の要素を生成することによって変換済みプログラムを
得るプロセスが含まれる。この変換は、たとえば、変換
プログラムの制御下で、ホストプロセッサ自体によっ
て、同じコンピュータシステム内の他のプロセッサによ
って、あるいは他のコンピュータシステムによって実行
され、かつプログラムを処理しようとするホストプロセ
ッサが利用できるようにする。変換を行う場合、オリジ
ナルプログラム(すなわちエミュレーテッドプロセッサ
のアーキテクチャに基づくプログラム)中の各命令また
はシーケンスあるいは種々の命令グループは、ホストプ
ロセッサによる処理のために1つまたは一連の命令ある
いは命令グループにに変換することができる。この変換
プロセスは、通常、プロセッサがオリジナルプログラム
の処理を開始するとき、オリジナルプログラムの全ての
部分または選択された部分について行われるが、オリジ
ナルプログラムの命令または命令グループを処理の進行
につれて変換することも可能であることは理解できよ
う。さらに、エミュレーテッドプロセッサのデータフォ
ーマットがホストプロセッサによって直接使用すること
ができない場合は、データをエミュレーテッドプロセッ
サのフォーマットからホストプロセッサによって使用可
能なフォーマットに変換するよう処理することも可能で
ある。
【0004】上に述べたように、アーキテクチャの定義
には、アーキテクチャに従って構成されたプロセッサが
コンピュータのメモリ中のハードウェアをアクセスする
仕方の記述も含まれる。通常、データは一連の記憶場所
を含むメモリサブシステムに記憶され、それらの各記憶
場所は8ビットからなる1バイトのデータを記憶する容
量を有し、それらの一連の記憶場所には対応する一連の
逐次的アドレス値が対応付けられている。通常、プロセ
ッサは、各々たとえば1バイト、2バイト、4バイト、
8バイトなどのバイト数(一般に2nの量、ただし
“n”は整数)よりなるデータのアイテムを処理するこ
とができ、最新のプロセッサアーキテクチャでは、通
常、データアイテムを「整列」方式で記憶することが要
求される。すなわち、最新アーキテクチャは、2バイト
のデータアイテムは2で割り切れるアドレスを有するア
クセスされる記憶場所に記憶し、4バイト及び8バイト
のデータアイテムは4で割り切れるアドレスを有するア
クセスされる記憶場所に記憶することを要求する。デー
タアイテムが正しく整列されていないと、通常、メモリ
サブシステムまたはプロセッサは、検索動作中に1つ以
上の記憶場所の内容が検索して取り出された後、一連の
動作を行って、それらの内容を再編成し、検索によって
取り出された内容から所望のデータアイテムを抽出する
ことが必要になり、あるいは記憶動作時には、データア
イテムを再編成して、1つ以上の記憶場所に記憶するこ
とが必要になる。
【0005】上記のような最新のアーキテクチャに従っ
て構成されたプロセッサの場合、メモリアクセスで正し
く整列されていないアドレスを使用しようとすると、通
常、例外ハンドラがその動作を処理するために呼び出さ
れる。例外ハンドラは、プロセッサを制御して、検索動
作時には、たくさんの記憶場所の記憶内容を検索して取
り出し、かつそれらの検索で取り出された内容の部分か
らデータアイテムを組み立てることができるようにし、
あるいは記憶動作では、データアイテムの様々な部分を
分解してそれぞれの記憶場所に記憶することができるよ
うにするいくつかの動作を行わせる。あるいは、例外ハ
ンドラを呼び出し、修復動作を行い、プログラムに戻る
際に生じると思われる相当大きなオーバヘッドを回避す
るために、例外ハンドラは、単にプロセッサに非整列ア
ドレス参照を使用したプログラムを終了させるだけの場
合もある。これらのどちらをも回避するため、通常、コ
ンパイラは、データを非整列参照が確実に回避されるよ
うにしてメモリ中に配列するようになっている。
【0006】
【発明が解決しようとする課題】しかしながら、従来の
多くのアーキテクチャ、たとえば現在では8086、8
088、80286、80386、80486及び「P
entiumTM」ラインのマイクロプロセッサを含むイ
ンテル・コーポレーション(Intel Corpor
ation)のx86ファミリーのマイクロプロセッサ
では、非整列参照が許容される。しかしながら、メモリ
アクセスが整列方式であることが要求される最新のアー
キテクチャの一つに従って構成された「ホスト」プロセ
ッサがそのような整列を必要としないエミュレーテッド
プロセッサをエミュレートできるようにすることが望ま
しい場合には、エミュレーション中に非整列参照が生じ
るので、問題が生起する。
【0007】
【課題を解決するための手段】上記の課題を解決するた
めになされた本発明は、ディジタルコンピュータシステ
ムにおける所定の型の例外の回避を容易にするシステム
及び方法にあり、特に非整列メモリ参照を処理するのに
例外ハンドラの使用が必要なマイクロプロセッサによる
非整列メモリ参照を伴うメモリアクセスの効率的処理を
容易にするためのシステム及び方法にある。
【0008】要約すると、本発明は、プログラムの実行
中の例外条件を回避するためのシステムがそのプログラ
ムを実行するための実行環境及びフィックスアップ(fi
x-up)コード生成サブシステムを具備したものである。
プログラムは、一連の命令からなる命令ストリームより
なり、実行環境は命令ストリーム中の各命令の実行と関
連して少なくとも1つの型の例外条件を検出するための
例外条件検出器を含む。フィックスアップコード生成サ
ブシステムは、命令ストリーム中の命令の実行と関連し
た実行環境による所定の型の例外条件の検出に応答し
て、実行されると該所定の型の例外条件を回避するフィ
ックスアップコードを生成し、該例外条件が検出された
命令ストリーム中の命令を該命令ストリームの中で該フ
ィックスアップコードに置換する。その結果、例外を生
じさせた命令がループ中等にある場合、その命令が処理
される代わりに、フィックスアップコード処理されるこ
とになり、例外条件は回避される。
【0009】このように、本発明のシステムは、効率的
に使用することができが非整列メモリ参照のような例外
条件が生じ得る命令を命令ストリームで使用すること、
及びそれらの命令より効率は劣るかもしれないが、オリ
ジナル命令の処理で例外条件が検出された場合に確実に
例外条件が回避されるようにする「フィックスアップ」
コードでそれらの命令を置換することができるようにな
っている。従って、命令がループの部分をなすような場
合に起こるように、例外条件を生じさせた命令を含むプ
ログラムの部分が何回も処理される場合でも、例外条件
は1回または所定の回数しか生ぜず、例外条件が生じた
後は、代替コードが処理されることによって、例外条件
は確実に回避される。
【0010】本発明は、特許請求の範囲に明確に記載す
るとおりのものである。以下、本発明を実施形態に基づ
き添付図面を参照しつつ詳細に説明する。
【0011】
【発明の実施の形態】図1は、非整列メモリ参照を処理
するのに例外ハンドラの使用が必要なマイクロプロセッ
サによる非整列メモリ参照を伴うメモリアクセス動作の
効率的処理を容易にするためのシステムを含むディジタ
ルコンピュータシステム10の機能ブロック図である。
図1において、ディジタルコンピュータシステム10は
マイクロプロセッサ11を有し、マイクロプロセッサ1
1は、メモリ管理ユニット14を介してメモリサブシス
テム12及び全体を符号13で示す1つ以上の入出力サ
ブシステムと通信する。メモリサブシステム12は、た
くさんの物理アドレス指定可能記憶場所を含み、これら
の記憶場所にはマイクロプロセッサ11によって処理さ
れるデータ及び命令(本願においてはまとめて「情報」
と称する)が記憶される。さらに、マイクロプロセッサ
11は、データを処理した後、それらの処理したデータ
をメモリサブシステム12に転送して記憶することがで
きる。
【0012】ディジタルコンピュータシステム10は、
大容量記憶サブシステム、オペレータ入力及び出力サブ
システム、ネットワークポート等を含む様々な種類の入
出力サブシステム13を具備することが可能である。大
容量記憶サブシステムは、一般に、マイクロプロセッサ
11によって処理される情報の長期間記憶のための手段
として用いられる。大容量記憶サブシステムは、ディス
クまたはテープサブシステム、光ディスク記憶装置及び
CD−ROM装置のような装置を含み、そこに情報を記
憶することができると共に、そこから情報を検索して取
り出すことができる。1つ以上の大容量記憶サブシステ
ムで、オペレータが着脱できる取り外し可能記憶媒体を
使用し、これによって、プログラム及びデータをディジ
タルコンピュータシステム10にロードし、そこから処
理されたデータを得ることも可能である。マイクロプロ
セッサ11によって供給される制御情報の制御下で、大
容量記憶サブシステムに記憶された情報をメモリサブシ
ステム12に転送して記憶することもできる。情報がメ
モリサブシステム12に記憶された後、マイクロプロセ
ッサ11はそれらの情報をメモリサブシステム12から
検索して取り出し、処理することができる。また、マイ
クロプロセッサ11は、処理済みデータが生成された
後、大容量記憶サブシステムにメモリサブシステム12
から処理済みデータを検索して取り出させ、比較的長期
間記憶させることも可能である。
【0013】オペレータ入力及び出力サブシステムは、
一般に、ディジタルコンピュータシステム10に対する
オペレータインタフェース手段として機能する。特に、
オペレータ入力サブシステムは、たとえば、キーボード
及びマウス装置を含み、オペレータはこれらを用いて情
報をディジタルコンピュータシステム10に対話式で入
力し、処理させることができる。さらに、オペレータ入
力サブシステムは、オペレータがそれによってディジタ
ルコンピュータシステム10を制御することができる仕
組みを与えることができる。オペレータ出力サブシステ
ムは、たとえば、ビデオ表示装置のような装置を含み、
ディジタルコンピュータシステム10は、これによっ
て、マイクロプロセッサ11の制御下で処理の結果をオ
ペレータに表示することができる。さらに、オペレータ
にハードコピー出力を与えるためのプリンタを具備する
こともできる。
【0014】ネットワークポートは、ディジタルコンピ
ュータシステム10を通信リンクと接続することによっ
て、コンピュータシステム10をコンピュータネットワ
ーク内に接続できるようにするためのものである。ネッ
トワークポートによって、コンピュータシステム10
は、情報(プログラム命令及びデータの両方を含む)を
ネットワーク内の他のコンピュータシステムや他の装置
(図示せず)へ送り、かつそこから情報を受け取ること
ができる。たとえば、クライアント−サーバ方式に従っ
て構成された典型的なネットワークにおいては、ネット
ワーク中の一部のコンピュータシステムはサーバと呼ば
れて、他のクライアントコンピュータシステムによって
処理される情報を記憶し、これによってクライアントコ
ンピュータシステムが情報を具合よく共用できるように
なっている。ある特定のサーバが保持する情報へのアク
セスを必要とするクライアントコンピュータシステム
は、そのサーバからネットワークを介して情報をダウン
ロードさせる。データを処理した後、クライアントコン
ピュータシステムはそれらの処理したデータをサーバに
返して記憶させることも可能である。これらのコンピュ
ータシステム(上記のサーバ及びクライアントを含む)
の他、ネットワークは、たとえばプリンタ及びファクシ
ミリ装置、ディジタルオーディオまたはビデオ記憶及び
分配装置を含む場合があり、これらの装置は、ネットワ
ークに接続された種々のコンピュータシステム間で共用
することができる。ネットワーク内のコンピュータシス
テムを相互接続する通信リンクは、従来同様、ケーブ
ル、光ファイバまたはその他コンピュータシステム間で
信号を伝送するための媒体を含む任意の適切な媒体で構
成することが可能である。コンピュータシステムは、通
信リンクを介して転送されるメッセージによってネット
ワークを介して情報を転送し、各メッセージには情報と
それらのメッセージを受け取る装置を識別する識別子が
含まれる。
【0015】従来同様、各入出力サブシステム13は、
通常、各入出力サブシステム13によって行われる動作
を制御し、かつその動作状態を指示するために用いられ
る制御、状態及びその他の情報を記憶するレジスタ及び
その他のデータ記憶要素(図示省略)を含む。マイクロ
プロセッサ11は、メモリサブシステム12に情報を記
憶するのと同様の仕方でそれらのレジスタ及びその他の
データ記憶要素に情報を記憶することによって、各入出
力サブシステム13を制御することができる。同様に、
マイクロプロセッサ11は、メモリサブシステム12中
の情報を検索して取り出すのと同様の仕方で入出力サブ
システム13に記憶された情報を検索して取り出すこと
により、各入出力サブシステム13の動作状態を確認す
ることができる。
【0016】メモリ管理ユニット14は、いくつかの動
作を行う。特に、メモリ管理ユニット14は、マイクロ
プロセッサ11によってメモリサブシステム12から取
り出すよう要求された情報をキャッシュ記憶するメモリ
キャッシュを有する。その上、通常のごとく、マイクロ
プロセッサ11がたとえばメモリサブシステム12から
情報を取り出すよう要求するか、あるいは処理済みデー
タをたとえば、メモリサブシステム12に記憶させるた
めに出すとき、そのマイクロプロセッサ11は仮想アド
レス空間のアドレスをメモリ管理ユニット14に与え
る。マイクロプロセッサによって処理される種々のアプ
リケーションプログラムには、各々の仮想アドレス空間
を具備することも可能である。仮想アドレス空間は「ペ
ージ」に分割される。それらの各ページは、各仮想アド
レス指定可能記憶場所が情報を記憶する選択された数の
仮想アドレス指定可能記憶場所を有する。アプリケーシ
ョンプログラムの仮想アドレス空間のこれらのページ
は、通常大容量記憶サブシステムに記憶され、マイクロ
プロセッサ11は、ここのページをメモリサブシステム
12へコピーさせ、処理時に修正されたページについて
は、マイクロプロセッサ11はそれらのページを長期間
の記憶のために大容量記憶装置サブシステムにコピーさ
せる。
【0017】仮想アドレス空間の各ページは、物理アド
レスによって指定されるメモリサブシステム12中の物
理記憶場所に圧縮して記憶することができ、マイクロプ
ロセッサ11からの要求に応答して特定の仮想アドレス
空間と関連するアクセス動作(すなわち特定の物理記憶
場所からの情報の検索、取り出し、または特定の物理記
憶場所への情報記憶)を実行する際、メモリ管理ユニッ
ト14は仮想アドレスの変換を行って、メモリサブシス
テム12と関連したアクセス動作を実行する際に使用す
るための物理アドレスを得る。さらに、メモリ管理ユニ
ット14は、ページがメモリサブシステム12内にある
かどうか、アプリケーションプログラムがそのページへ
のアクセス(すなわちデータの読み出し、または書き込
み)する権利を持っているかどうか、要求されたページ
が仮想アドレス空間における有効なページであるかどう
か、等々を確かめるためのチェックを含めいくつかのチ
ェック動作を行うことができる。このチェック動作でメ
モリ管理ユニット14が否定判断をした場合、すなわ
ち、たとえばページがメモリサブシステム12にない、
アプリケーションプログラムが適切なアクセス権を持た
ない、あるいは仮想アドレス空間ページの要求されたペ
ージがアプリケーションプログラムの仮想アドレス空間
における有効なページではないと判断した場合、メモリ
管理ユニットはACCESS FAULT指示を出すこ
とができ、マイクロプロセッサ11はこれを受け取っ
て、選択された障害処理動作を行う際に用いることがで
きる。
【0018】本発明の一実施形態においては、システム
10で使用するのに好適なマイクロプロセッサ11は、
SPARC International, Inc.
社のThe SPARC Architecture
Manual Version9(Prentice−
Hall)[デデヴィッド・エル・ウィーバー(Dav
id L. Weaver)及びトム・ガーモンド(T
om Germond)編](以下、「SPARCアー
キテクチャマニュアル バージョン9(SPARC A
rchitecture Manual, Versi
on 9)」とする)に記載されているSPARCバー
ジョン9(SPARC Version9)アーキテク
チャに従って構成されたマイクロプロセッサよりなる。
マイクロプロセッサ11は、一般に、レジスタセット2
0、1つ以上の機能ユニット21、バスインタフェース
22及び制御回路23を含む数多くの要素を有する。制
御回路23は、プログラムによって与えられる命令の制
御下で、マイクロプロセッサ11により行われる処理動
作を制御する。一般に、バスインタフェース22は、制
御回路23の制御下で、メモリ管理ユニット14と協同
してメモリサブシステム12または特定の入出力サブシ
ステム13が保持するデータ記憶要素から命令及びデー
タを処理のために検索して取り出し、それらの取り出し
たデータをレジスタセット20中のレジスタにロードす
る。やはり制御回路23の制御下で、機能ユニット21
は、制御回路23がレジスタセット20から機能ユニッ
ト21へ転送させるデータに関連して論理演算、整数及
び浮動小数点算術演算及びその他の処理動作を行って、
処理済みデータを生成し、それらの処理済みデータはレ
ジスタセット20に転送されて記憶される。また、制御
回路23は、バスインタフェース22にやはりメモリ管
理ユニット14と協同してレジスタセット20からメモ
リサブシステム12または特定の入出力サブシステム1
3が保持するデータ記憶要素へ処理済みデータを転送さ
せ、記憶させる。SPARCバージョン9アーキテクチ
ャは、「ロード/ストア」アーキテクチャと呼ばれるア
ーキテクチャのクラスの一つで、このアーキテクチャに
おいては、たとえばメモリサブシステム12または入出
力サブシステム13の中のレジスタ(図示省略)からデ
ータが検索して取り出され、あるいはそこへ記憶される
メモリアクセス動作が、「メモリアクセス命令」と総称
される「ロード」及び「ストア」命令を用いて処理され
る。
【0019】本発明によれば、メモリ参照が整列アドレ
ス境界上にあることが要求され、かつ非整列メモリ参
照、すなわち整列アドレス境界上にないメモリ参照が例
外をトリガーするマイクロプロセッサ11のようなマイ
クロプロセッサが、メモリ参照がそのように整列する必
要のないIntelのx86ファミリーのマイクロプロ
セッサのようなマイクロプロセッサを効率的にエミュレ
ートすることができる構成が得られる。整列及び非整列
メモリ参照について図2及び3により一般的に説明す
る。まず、図2において、ワード記憶場所50は、たと
えばメモリサブシステム12中の記憶場所でもよく、レ
ジスタ51はレジスタセット20中のレジスタよりな
る。記憶場所50は4つのバイト記憶場所50(0)〜
50(3)を有し、これらの各記憶場所は各々のアドレ
ス“0”乃至“3”によって識別される。レジスタ51
は、4つのバイト記憶場所B0〜B3を有する。マイクロ
プロセッサ11がたとえば「ロードワード」動作のよう
なメモリアクセス動作を開始して、記憶場所50の4バ
イトよりなるデータアイテムを検索し、取り出そうとす
る場合、記憶場所50のバイト記憶場所50(0)〜5
0(3)の内容がレジスタ51の各々の記憶場所B0
3に転送される。このようなメモリアクセス動作の場
合、マイクロプロセッサ11は記憶場所50の「基底」
である値“0”をアドレスとして使用する。
【0020】他方、「ロード・ハーフワード」動作
(「ハーフワード」は2バイトのデータアイテムであ
る)のようなメモリアクセス動作を開始する場合は、バ
イト記憶場所50(i)及び50(i+1)の内容がレ
ジスタ51の各々のバイト記憶場所B0及びB1に転送さ
れる。ただし、添え字“i”はマイクロプロセッサ11
がその動作で使用するアドレスに対応する整数である。
“i”の値、すなわちメモリアクセス動作で使用される
アドレスが“0”または“2”であれば、その参照は
「整列」参照である。これに対して、“i”の値が
“1”または“3”の場合、その参照は「非整列」参照
である。「ストア・ハーフワード」動作についても同様
の動作が行われ、レジスタ51のバイト記憶場所B0
びB1の内容が記憶場所50のバイト記憶場所50
(i)及び50(i+1)に転送される。このように、
アドレスが“1”である非整列メモリ参照を伴うメモリ
アクセス動作を表す図2に示すような矢印52で表され
るメモリアクセス動作においては、データアイテムは、
ロード動作時にはレジスタ51のバイト記憶場所B0
びB1に転送され、ストア動作時にはレジスタ51のバ
イト記憶場所B0及びB1から転送される。
【0021】さらに、マイクロプロセッサが「ロード・
バイト」動作のようなメモリアクセス動作を開始する場
合は、記憶場所50(i)の内容はレジスタ51のバイ
ト記憶場所B0に転送される。ただし、“i”はマイク
ロプロセッサ11がその動作で使用するアドレスに対応
する整数である。このようなメモリアクセスでは、アド
レスとして用いられる値“i”に関わらず、動作は整列
動作となる。「ストア・バイト」動作でも同様の動作が
行われ、レジスタ51のバイト記憶場所B0の内容が記
憶場所50のバイト記憶場所50(i)に転送される。
【0022】図3により以下に説明するように、「ロー
ド・ワード」または「ストア・ワード」メモリアクセス
動作でも非整列メモリ参照が起こり得る。図3には、た
とえばメモリサブシステム12の連続する2つのワード
記憶場所60及び61と、レジスタセット20のレジス
タ62が示されている。記憶場所60は、“0”乃至
“3”の各アドレスによってそれぞれ識別される4つの
バイト記憶場所60(1)乃至60(3)よりなる。同
様に、ワード記憶場所61は、“4”乃至“7”の各ア
ドレスによってそれぞれ識別される4つのバイト記憶場
所61(4)乃至61(7)からなる。レジスタ62
は、4つのバイト記憶場所B0乃至B3からなる。マイク
ロプロセッサ11が「ロードワード」動作のようなメモ
リアクセス動作を開始する場合、マイクロプロセッサ1
1がその動作のために使用するアドレスに対応するアド
レス“i”を有するバイト記憶場所で始まる4つの連続
したバイト記憶場所の内容がレジスタ62のバイト記憶
場所B0乃至B3に転送される。“i”の値、すなわちそ
のメモリアクセス動作に使用されるアドレスが“0”ま
たは“4”であれば、その参照は「整列」参照である。
これに対して、“i”の値が“0”または“4”以外の
値であれば、その参照は非整列参照である。「ストア・
ワード」動作でも同様の動作が行われ、バイト記憶場所
0乃至B3の内容がアドレス“i”によって識別される
バイト記憶場所で始まる記憶場所60の4つの連続した
バイト記憶場所に転送される。このように、アドレスが
“3”である非整列メモリ参照を伴うメモリアクセス動
作を表す図3に示されているような矢印で表されるメモ
リアクセス動作においては、データアイテムは、ロード
動作時にはバイト記憶場所60(3)及び61(1)乃
至61(2)からレジスタ51のバイト記憶場所B0
至B3へ、あるいはストア動作時にはレジスタ51のバ
イト記憶場所B0乃至B3から転送される。
【0023】再び図1において、メモリ参照が整列参照
であることが要求されるマイクロプロセッサ11を本願
では「ホスト」マイクロプロセッサ11と称し、、非整
列メモリ参照を許容するマイクロプロセッサを本願では
「エミュレーテッド」マイクロプロセッサと称する。通
常、マイクロプロセッサ11は、プログラムを処理中に
整列されていないメモリ参照を含むメモリアクセス命令
に遭遇すると、その例外を処理するために例外ハンドラ
を呼び出すが、通常、その例外ハンドラを呼び出し、処
理を行い、例外ハンドラから復帰する動作は相当大きな
処理時間を取ることが多い。従って、非整列メモリ参照
を含む命令を処理するためにマイクロプロセッサ11が
例外ハンドラを呼び出す必要があることによって、エミ
ュレーテッドマイクロプロセッサのエミュレーションが
非効率的になることがある。本発明は、特にそのような
命令がループに入っているときに起こり得るように、そ
のような命令が選択された回数以上生じた場合に、マイ
クロプロセッサ11がそのような命令に対して例外ハン
ドラを呼び出さなければならない回数を少なくすること
ができる構成を提供するものである。本発明によれば、
エミュレーテッドマイクロプロセッサをエミュレートす
るホストマイクロプロセッサとしてのマイクロプロセッ
サ11が非整列メモリ参照を有するエミュレート中のプ
ログラムの命令に遭遇すると、コードジェネレータがエ
ミュレート中のプログラムについて付加コードを生成す
ることができ、その命令の代わりにそのコードが実行さ
れる。その付加コードは、マイクロプロセッサ11にそ
の命令を処理する際に例外ハンドラによって行われる動
作を行わせる。この付加コードはプログラムエミュレー
ションの一部として処理されるので、例外ハンドラを呼
び出す必要はなく、これによってエミュレーションの効
率を改善することができる。
【0024】より詳しく説明すると、本発明は、ホスト
マイクロプロセッサ11が、実行環境30で変換プログ
ラム32によって生成される「変換済み」プログラム3
1を処理する際に、エミュレーテッドマイクロプロセッ
サ用に書かれた「オリジナル」プログラム33を処理す
るのにエミュレーテッドマイクロプロセッサ(図示省
略)によって行われる動作をエミュレートすることがで
きる構成、特に、ホストマイクロプロセッサ11が、エ
ミュレーテッドマイクロプロセッサが非整列メモリ参照
を使用するメモリアクセス命令を処理する仕方を効率的
にエミュレートすることができるようにした構成を提供
するものである。本発明によれば、ホストマイクロプロ
セッサ11は、変換済みプログラム中で非整列メモリ参
照を含むメモリアクセス命令にはじめて遭遇すると、ま
ずその例外を処理し、そのメモリアクセス命令を事実上
エミュレートするために、例外ハンドラ36を呼び出
す。
【0025】さらに、例外ハンドラ36は、例外を処理
するために最初に呼び出されたとき、そのメモリアクセ
ス命令と関連したカウンタ37を設定し、初期化する。
その後、たとえばループ中の同じ命令について例外ハン
ドラ36が呼び出される毎に、例外ハンドラ36はカウ
ンタ37をインクリメントし、カウンタ37により与え
られるカウント値を所定のスレッショルド値と比較す
る。そして、カウンタ37により与えられるカウント値
がスレッショルド値と所定の対応関係になると(たとえ
ば、カウント値がスレッショルド値と等しいか、スレッ
ショルド値より大きくなると)、例外ハンドラ36は、
やはり実行環境30の一部として設けられるコードジェ
ネレータ35に付加コードを生成させる。このコード
は、やはり変換済みプログラムの一部として処理され
て、非整列メモリ参照を処理するよう実際にメモリアク
セス命令をエミュレートする。その後は、メモリアクセ
ス命令を処理する代わりに、この付加コードが処理され
ることによって、例外ハンドラ36を呼び出す必要なく
そのメモリアクセス命令をエミュレートすることができ
る。このようにしてメモリアクセス命令をエミュレーシ
ョンすることによって、例外ハンドラを呼び出し、例外
ハンドラから復帰するためのオーバヘッドが不要となる
ため、処理効率を改善することができる。例外ハンドラ
36が呼び出されるとき付加コードが生成されるように
すれば、カウンタ37は設ける必要がないということは
理解できよう。
【0026】次に、具体例によって本発明の動作説明を
行う。この例においては、変換済みプログラム31は下
記のコードセグメントAのプログラムコードを含むもの
と仮定する。 コードセグメントA (1) <misc code> (2) ld uh [r1], r2 ; レジスタr1中のアドレ
スにより識別される記憶場所からレジスタr2への無符
号ハーフワードのロード (3) <misc code> ここで、r1及びr2はマイクロプロセッサのレジスタ
セット20の中のレジスタである。“misc cod
e”によって指示されるコードセグメントA中のプログ
ラムコードは、行(1)の場合、変換済みプログラム3
1の行(2)のコードの前にあるプログラムコードに対
応し、行(3)の場合は、行(2)のコードの後にある
プログラムコードに対応する。
【0027】コードセグメントAの命令は、アドレスが
レジスタr1に書き込まれた記憶場所からハーフワード
データアイテムを検索して取り出し、レジスタr2にロ
ードするメモリアクセス動作を起動する。レジスタr1
中のアドレスが偶数ならば、データアイテムは整列状態
にあり、その場合、メモリアクセス動作は例外を生じる
ことなく進行することができる。しかしながら、レジス
タr1中のアドレスが奇数であると、データアイテムは
整列されていない。その場合は、命令を処理するために
例外ハンドラ36が呼び出され、実際には、マイクロプ
ロセッサ11に下記のコードセグメントBの一連の命令
を実行させる。 コードセグメントB (1) ld ub [r1], r2 ; レジスタr1中のアドレス
によって指示される記憶場所から無符号バイトをレジス
タr2にロードする (2) ld ub [r1+1], r3 ; レジスタr1中のアドレス
により指示される記憶場所の次の記憶場所から無符号バ
イトをレジスタr3にロードする (3) shl r2,8,r2 ; レジスタr2中の値を左方
に1バイト(8ビット)桁送りする (4) or r2,r3,r2 ; レジスタr2とr3の内容
の論理和を取り、レジスタr2にロードする 行(1)及び(2)によって表される動作を行う際、マ
イクロプロセッサ11は、例外ハンドラ36の制御下
で、レジスタr1に入っているアドレス値により指示さ
れるバイト記憶場所から(行(1))、そして次の記憶
場所、すなわち1だけインクリメントされたレジスタr
1中のアドレス値により指示されるバイト記憶場所から
(行(2))データアイテムの各部分よりなるデータの
バイトを検索して取り出し、それらの取り出されたバイ
トをレジスタr2及びr3にロードする。レジスタセッ
ト20中の各レジスタは、所定数のバイトデータ記憶場
所<BN...B0>からなり、行(1)及び(2)の命
令は取り出された各バイトを下位バイト記憶場所B0
記憶させる。さらに、各レジスタr2及びr3中の他の
のバイトデータ記憶場所<BN...B1> には、各々
2進値“0”を有するビットが書き込まれる。
【0028】コードセグメントBの行(3)によって表
される動作を行う際、マイクロプロセッサ11は、やは
り例外ハンドラ36の制御下で、下位バイト記憶場所B
0から取り出されたバイトをレジスタr2の次のバイト
記憶場所B1に桁送りし、各々値“0”を有するビット
を下位バイト記憶場所B0にロードする。行(4)によ
って表される動作を行う際、マイクロプロセッサ11
は、レジスタr2とr3の内容の包含的OR(論理和)
を取り、その結果をレジスタR2に記憶する。実際に
は、この動作は、B0以外のバイト記憶場所<BN...
1>には全ての論理値“0”が入っており、従って
「包含的」論理和演算では対応するレジスタr2のバイ
ト記憶場所<BN...B1>は変更されないので、レジ
スタr2の下位バイト記憶場所B0にレジスタr3の下
位バイト記憶場所B0の内容が書き込まれる結果にな
る。従って、コードセグメントBと関連して説明した動
作を実行した後においては、マイクロプロセッサ11
は、ハーフワードの各部分を得るための2つの検索動作
(行(1)及び(2))と実際にそれらの各部分からハ
ーフワードを組み立てるための各動作(行(3)及び
(4))を実行することによって、レジスタr1中のア
ドレスにより指示されるメモリサブシステム12の記憶
場所に非整列ハーフワード(2バイト)データアイテム
を構築したことになる。
【0029】コードセグメントBとの関連で上に説明し
た対応する動作は、記憶動作と関連して実行して、非整
列ハーフワードをメモリサブシステム12の記憶場所に
記憶することができるということは理解できよう。すな
わち、マイクロプロセッサ11は、レジスタr2のバイ
ト記憶場所B1及びB0に書き込まれているようなレジス
タ中の2バイトデータアイテムをレジスタr3のような
レジスタにコピーし、レジスタr3の下位バイト記憶場
所B0の内容がレジスタr2の内容に合致するよう右に
桁送りすることができる。その後、マイクロプロセッサ
は、レジスタr1中のアドレスを用いてストア「バイ
ト」記憶動作を実行して、レジスタr2のバイト記憶場
所B0の内容をレジスタr1によって指示されるメモリ
サブシステム12中の記憶場所に記憶し、次にレジスタ
r1中のインクリメントしたアドレスを用いて2回目の
ストア「バイト」記憶動作を実行して、レジスタr3の
バイト記憶場所B0の内容をインクリメントしたアドレ
スによって指示されるメモリサブシステム12中の記憶
場所に記憶することができる。
【0030】さらに、例外ハンドラ36は、マイクロプ
ロセッサ11に4バイトワードよりなるデータワードと
関連したロードまたはストア動作と関連して同様の動作
を実行させることができるということも理解できよう。
例外ハンドラ36は、マイクロプロセッサ11に4つの
メモリアクセス動作を実行させて、各々の動作でそのワ
ードの各バイトを取り出させるかまたは記憶させること
ができるはずである。ロード動作の場合、例外ハンドラ
36は、マイクロプロセッサ11に取り出された各バイ
トを各レジスタにコピーさせ、それらのバイトが各レジ
スタのそれぞれのバイト記憶場所B3乃至B0に入るよう
桁送り動作を実行させ、レジスタの内容の論理和をとっ
て、検索されたワードを入れる単一のレジスタに入れる
ためのOR動作を実行させることになる。
【0031】しかしながら、図3において、非整列ワー
ドメモリ参照と関連したメモリアクセス動作は、たとえ
ばそのメモリ参照が“2”または“6”をアドレスとし
て使う場合は2つの整列ハーフワードアクセスを用い
て、あるいはたとえばそのメモリ参照がアドレスとして
“1”、“3”、“5”または“7”をを使う場合は、
1つのハーフワードアクセスと2つのバイトアクセスと
してより効率的に処理することができる。このように、
メモリアクセス動作がメモリ参照がアドレスとして
“2”を用いるロード動作であると、マイクロプロセッ
サ11は、例外ハンドラ36の制御下で、アドレス
“2”及び“4”を用いて各々整列参照である2つのハ
ーフワードロード動作を実行させ、取り出されたハーフ
ワードはレジスタセット20の各レジスタに記憶され
る。その後、例外ハンドラ36はアドレス“4”を用い
て検索されたハーフワードの入ったレジスタの内容をバ
イト記憶場所B2及びB3へ桁送りさせ、これら2つのレ
ジスタの内容の論理和を取らせる。同様に、メモリアク
セス動作がメモリ参照がアドレスとして“2”を用いる
ストア動作の場合、例外ハンドラ36は、マイクロプロ
セッサにワードが書き込まれたレジスタの内容をコピー
させて第2のレジスタに記憶させる。その第2のレジス
タの内容を最初にバイト記憶場所B3及びB2に入ってい
たバイトがそれぞれバイト記憶場所B1及びB0に入るよ
うに第2のレジスタの内容を桁送りさせ、これらの2つ
のレジスタの内容に関連してストアハーフワード動作を
実行させて各ハーフワードをアドレス“2”及び“4”
によってそれぞれ指示されるメモリの記憶場所に記憶さ
せる。
【0032】一方、メモリアクセス動作がメモリ参照が
アドレスとして“1”を用いるロード動作の場合は、例
外ハンドラはマイクロプロセッサ11に、(i)“1”
をアドレスとして用いてその記憶場所のバイトを取り出
し、第1のレジスタに記憶するロードバイト動作、(i
i)アドレスとして“2”(すなわち、最初の動作
(i)はアドレス指定された1つの記憶場所に記憶され
たバイトに対するものであるから、アドレス“1”を
“1”だけインクリメントしたアドレス)を用いて、そ
の記憶場所で始まるハーフワードを検索して取り出し、
第2のレジスタに記憶するロードハーフワード動作、
(iii)さらにインクリメントしたアドレス“4”(す
なわち、第2の動作(ii)は2つの連続する記憶場所に
記憶されたハーフワードについてのものであるから、ア
ドレス“2”を“2”だけインクリメントしたアドレ
ス)を用いて、その記憶場所のバイトを検索して取り出
し、第3のレジスタに記憶するロードバイト動作、を実
行させる。その後、例外ハンドラ36は、マイクロプロ
セッサに各レジスタのバイトを適切な記憶場所に桁送り
させ、レジスタの内容の論理和を取ってワードを生成さ
せることができる。例外ハンドラ36は、非整列メモリ
参照がアドレス“3”、“5”または“7”を使用する
場合には、マイクロプロセッサ11に同様の動作を実行
させることができる。その他、ストア動作と関連して例
外ハンドラ36により実行させられる動作は、当業者に
は自明であろう。さらに、より大きいデータアイテム及
び/または他のアドレスと関連したロード及びストア動
作に関連して例外ハンドラにより実行させられる動作に
ついても、当業者にとっては自明であろう。
【0033】本発明によれば、例外ハンドラ36は、マ
イクロプロセッサ11がコードセグメントBと関連して
上に説明した動作を実行するのを制御する他、一般に、
コードジェネレータ35にコードセグメントCに関連し
て以下に説明するコードを生成させる(非整列メモリ参
照を伴うハーフワードロードの場合)。 コードセグメントC (1) <misc code> (2) ba Fixup ; 「常に」ラベル“F
ixup”を用いてコーディングする無条件分岐 (3) resume <misc code> (4) Fixup ld ub [r1],r2 ; レジスタr1中の
アドレスによって指示される記憶場所の次の記憶場所か
ら無符号バイトをレジスタr3にロードする (5) ld ub [r1+1],r3 ; レジスタr1中の
アドレスによって指示される記憶場所の次の記憶場所か
ら無符号バイトをレジスタr3にロードする (6) shl r2,8,r2 ; レジスタr2中の
値を左方に1バイト(8ビット)桁送りする (7) or r2,r3,r2 ; レジスタr2及び
r3中のバイトの論理和を取りレジスタr2にロードす
る (8) ba resume ; 「常に」ラベル
“resume”を用いてコーディングする無条件分岐 コードセグメントCの行(1)及び(3)の“misc
code”によって指示されるコードは、変換済みプ
ログラム31のコードセグメントAの対応する番号の行
におけるオリジナル変換済みプログラム31と対応す
る。行(4)乃至(7)によって指示されるコードは、
コードセグメントBと対応する。行(2)のコードは、
コードジェネレータ35が変換済みプログラムのコード
セグメントAの行(2)中のコードを置換するコードで
あり、マイクロプロセッサ11を命令セグメントB中の
最初の命令に対応する“Fixup”とラベルされた命
令に分岐させ、実際上マイクロプロセッサ11にコード
セグメントBの命令を処理させる。コードセグメントC
の行(7)のコードは、コードセグメントBと関連して
上に説明した最後の動作を行わせ、コードセグメントC
の行(8)の命令はマイクロプロセッサ11をオリジナ
ル変換済みプログラムコード31の行(3)の<mis
code>中の第1の命令に対応する“resum
e”とラベルされた変換済みプログラムコードの命令に
分岐させる。従って、コードジェネレータ35は、変換
済みプログラム31でコードセグメントAの行(2)の
コードをコードセグメントCの行(2)及び(4)乃至
(8)のコードと置換する。
【0034】その結果、たとえばコードセグメントAが
ループの一部をなす場合のように、マイクロプロセッサ
11がコードセグメントCを処理する場合、マイクロプ
ロセッサ11は、例外ハンドラ36を呼び出す結果とな
るコードセグメントAの行(2)の命令のような命令に
遭遇するのではなく、コードジェネレータ35により生
成されたコードセグメントCを実行することになり、そ
の結果例外ハンドラ36を呼び出す必要なしに置換され
た命令のエミュレーションが容易化される。マイクロプ
ロセッサ11はこれらの動作を例外ハンドラ36を呼び
出す必要なしに行うので、マイクロプロセッサ11は、
例外ハンドラ36を呼び出すことによって別途必要とな
るオーバヘッドを回避できることから、変換済みプログ
ラムの処理効率が改善される。
【0035】また、コードジェネレータ35は、ストア
動作やワード及び他のサイズのデータアイテムのための
対応するプログラムコードを生成することができるが、
それらの具体的なコードについては、当業者には自明で
あろう。
【0036】以上の背景に基づいて、次に本発明に関連
して例外ハンドラ36及びコードジェネレータ35によ
り実行される詳細な動作を図4のフローチャートを参照
しつつ説明する。図4において、マイクロプロセッサ1
1は、実行環境30で変換済みプログラムを処理中に非
整列メモリ参照を伴うメモリアクセス命令に遭遇すると
(ステップ100)、例外ハンドラ36を呼び出してそ
のメモリアクセス命令の処理を制御する(ステップ10
1)。その呼び出しの一部として、例外ハンドラ36
は、その非整列メモリ参照を伴う変換プログラム31中
のメモリアクセス命令のメモリアドレス(マイクロプロ
セッサのプログラムカウンタ(図示省略)の現在値に対
応する)、そのメモリアクセス命令に続く変換プログラ
ム中の次の命令のメモリアドレス(通常は、マイクロプ
ロセッサのプログラムカウンタ24の所定値だけインク
リメントされた現在値に対応する)、及び非整列メモリ
参照を生じたデータアイテムのメモリアドレスよりなる
パラメータを与えられる。
【0037】例外ハンドラ36は、ステップ101で呼
び出されると、まず、メモリアクセス命令が、コードセ
グメントCと関連して上に説明したような「フィックス
アップ」ルーチンの生成を容易にしようとする種類の命
令であるかどうかを確かめる(より詳しくはマイクロプ
ロセッサに確かめさせる)(ステップ102)。一実施
形態においては、例外ハンドラ36は、変換済みプログ
ラム31と関連して与えられる命令ばかりでなく、非整
列メモリ参照を伴うメモリアクセス命令と関連して使用
することができ、例外ハンドラ36は変換済みプログラ
ム31と関連して与えられる命令用のフィックスアップ
ルーチンの生成を容易にするだけである。例外ハンドラ
36は、ステップ102でメモリアクセス命令が「フィ
ックスアップ」ルーチンの生成を容易にしようとする種
類の命令ではないと判断すると、ステップ103に進ん
で、マイクロプロセッサ11に所定の例外処理動作を実
行させる。この所定の例外処理動作は、非整列メモリ参
照を有するメモリアクセス命令を処理するために選択さ
れる各特定の方針によって決まり、たとえば、命令セグ
メントBと関連して上に説明した動作を行う、その命令
を含むプログラムを終了させる等々の動作からなる。
【0038】ステップ102に戻って、例外ハンドラ3
6は、メモリアクセス命令がフィックスアップルーチン
の生成を容易にしようとする種類の命令であると判断す
ると、まず、その特定のメモリアクセス命令に対して例
外カウンタ37があるかどうかを確かめ(ステップ11
0)、例外カウンタがない場合は、そのための例外カウ
ンタ37を設定して初期化する(ステップ111)。こ
れに対して、例外ハンドラ36は、その特定のメモリア
クセス命令のための例外カウンタ37があることを確認
した場合、その例外カウンタをインクリメントさせる
(ステップ112)。例外ハンドラ35は、ステップ1
11または112の後、例外カウンタ37によって与え
られる値が所定のスレッショルド値より大きいかどうか
を確かめる(ステップ113)。例外ハンドラ36は、
ステップ113で否定判断をすると、マイクロプロセッ
サ11を制御して、コードセグメントBと関連して上に
説明した動作を実行させて、ロード動作時にはデータア
イテムを検索して、組立させ、ストア動作時にはデータ
アイテムを分解して、記憶させることによって命令をエ
ミュレートし(ステップ114)、例外を生じさせた命
令の次の命令で、そのメモリアクセス命令の後の変換済
みプログラム中の次の命令のメモリアドレスを用いて変
換済みプログラムに制御権を戻す(ステップ115)。
【0039】他方、例外ハンドラ36は、ステップ11
3で肯定判断をした場合、コードジェネレータ35にコ
ードセグメントCと関連して上に説明したような「フィ
ックスアップ」コードを生成させ、その生成されたコー
ドを変換済みプログラムに挿入させる(ステップ11
6)。その動作において、コードジェネレータ35は、
例外を生じさせた命令と次の命令のメモリアドレス、及
び非整列メモリ参照のメモリアドレスを受け取る。コー
ドジェネレータ35は、例外を生じさせた命令のメモリ
アドレスを用いて命令の種類、すなわちその命令がロー
ド命令かストア命令か、そしてその命令がハーフワード
用か、ワード用か、等々を調べることができる。さら
に、コードジェネレータは、非整列メモリ参照のメモリ
アドレスを用いて、参照がどのように非整列になってい
るかを確かめることができる。コードジェネレータ35
は、この情報から実行すべき特定の動作、及びそれらの
動作を実行するために生成すべきコードを容易に決定す
ることができる。本発明の一実施形態においては、コー
ドジェネレータ35は、動作及びデータアイテムの各々
のタイプに必要なプログラムコード及び参照アドレスが
どのように非整列になっているかを表す一組のテンプレ
ートまたはマクロを基本的に具備していて、それらのテ
ンプレートまたはマクロは、組み立ててフィックスアッ
プコードとしての変換済みプログラム31に添付するこ
とができ、フィックスアップコードへの必要な分岐命
令、及びフィックスアップコードからのリターン分岐命
令を与える。
【0040】コードジェネレータ35は、ステップ11
6と関連して上に説明した動作を実行した後、制御権を
例外ハンドラ36に返し(ステップ120)、その後、
例外ハンドラ36は変換プログラム31に制御権を返す
ことができる(ステップ121)。このリターン動作で
は、例外ハンドラ36は、例外ハンドラ36の呼び出し
を生じさせたメモリアクセス命令のメモリアドレス(例
外ハンドラ36が呼び出されたときこれに与えられた)
を使用する。従って、例外ハンドラ36は、例外条件が
検出された変換済みプログラム31の中のポイント、素
cコードセグメントCの行(3)の分岐命令に制御権を
返す。このように、制御権が変換済みプログラム31に
返された後、たとメモリアクセス命令がループ中に置か
れている場合に起こるように、非整列メモリ参照例外を
生じさせたメモリアクセス命令が入っていた変換済みプ
ログラム31の部分が再度処理されると、そのメモリア
クセス命令を処理する代わりに、行(4)乃至(8)の
フィックスアップコードが処理され、これによって例外
ハンドラ36を呼び出す必要を回避することができる。
【0041】本発明にはいくつかの長所がある。特に、
本発明によれば、他の場合には例外ハンドラを呼び出す
ことが必要になるような様々な種類の条件を処理するた
めのコードを生成することが可能であり、これによって
例外ハンドラ36を呼び出すことによって生じると考え
られるオーバヘッドを回避することができる。従って、
本発明によれば、非整列メモリ参照のような例外条件が
生じて、例外ハンドラの呼び出しが必要とならない限り
は一般に効率的に実行することができるコードセグメン
トAのようなコードを用いて、オリジナルプログラム3
3から変換済みプログラム31を生成することが可能で
ある。変換済みコード31の処理中に例外条件が実際に
起こった場合にのみ、その例外条件を生じさせた命令を
命令セグメントCのようなコードによって置換する。こ
の代替コードはより効率は低いが、置換後は、例外条件
を生じさせた命令について例外ハンドラを呼び出す必要
がなくなる。
【0042】上に説明した本発明については、様々な修
正態様、変更態様が可能である。たとえば、例外が生じ
たとき常にフィックスアップコードを生成するのであれ
ば、例外ハンドラ36とコードジェネレータ35を元々
1つの部品に組み込み、例外が生じたときこれを呼び出
して、フィックスアップコードを生成させるようにして
もよい。その場合は、図4で、ステップ102及び10
3は実行する必要がないので、動作はステップ101か
ら直接110へ進むことができる。
【0043】さらに、例外ハンドラ36が例外が最初に
発生したときフィックスアップコードの発生を行わせる
ようにするのであれば、例外カウンタ37は設ける必要
がないということは理解できよう。
【0044】さらに、本発明は、プログラムの処理に関
連して生じ得る様々な型の例外または異常条件と関連し
て用いることができる。さらに、本発明は、エミュレー
ションに関連するもの以外に、種々のプログラム及びプ
ログラミング環境と関連して用いることが可能である。
【0045】本発明によるシステムは、あらゆる部分を
適切なプログラムによって制御することが可能な特定目
的ハードウェアまたは汎用コンピュータシステムでその
全体もしくは一部を構成することができるということは
明白であろう。全てのプログラムは、その全部または一
部を従来の方法で、本発明のシステムの一部で構成する
ことができるし、本発明のシステムに記憶することもで
き、あるいは従来の方法で情報を転送するためのネット
ワークまたはその他の機構を介してその全部または一部
を本発明のシステムに与えることができる。さらに、本
発明のシステムは、該システムに直接接続することがで
きる、あるいは従来の方法で情報を転送するためのネッ
トワークまたはその他の機構を介してシステムに情報を
転送することができる入力要素(図示省略)を用いてオ
ペレータが供給する情報によって動作させる、あるいは
その他の形で制御することが可能なことは理解できよ
う。
【0046】上記実施形態は、コンピュータのハードウ
エアによって実施される。そのハードウエアシステムで
用いられるプログラムは当然のことながら記録媒体に記
録された状態で提供される。このプログラムを記憶させ
た媒体としては、例えばフレキシブルディスク、CD−
ROM、メモリカードその他あらゆる媒体を使用でき
る。媒体に記録されたプログラムは、ハードウエアに組
み込まれている記憶装置、例えばハードディスクなどに
インストールされることにより、プログラムが実行でき
るようになる。
【0047】上記説明は、本発明の特定の実施形態に限
定して説明を行った。しかしながら、本発明には種々の
変更態様及び修正態様が可能であり、それらの変更態様
や修正態様によっても本発明の長所の一部もしくは全部
を達成することができる。従って、それらの変更態様並
びに修正態様は、特許請求の範囲の記載に基づき、本発
明の精神及び範囲に包括されるものである。
【図面の簡単な説明】
【図1】 本発明に従い構成されたディジタルコンピュ
ータシステムを示す機能ブロック図である。
【図2】 本発明の説明を解りやすくするための説明図
である。
【図3】 図2同様、本発明の説明を解りやすくするた
めの説明図である。
【図4】 本発明と関連してディジタルコンピュータシ
ステムにより行われる動作を示すフローチャートであ
る。
【図5】 本発明と関連してディジタルコンピュータシ
ステムにより行われる動作を示すフローチャートであ
る。
【図6】 本発明と関連してディジタルコンピュータシ
ステムにより行われる動作を示すフローチャートであ
る。
【符号の説明】
10 コンピュータシステム、11 マイクロプロセッ
サ、12 メモリサブシステム、13 入出力サブシス
テム、14 メモリ管理ユニット。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成9年8月15日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 デイヴィッド・エル・リース アメリカ合衆国・01581・マサチューセッ ツ州・ウエストボロー・メープル サーク ル・1

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 プログラムの実行時に所定の型の例外条
    件の回避を容易にするための例外条件回避システムにお
    いて: A.一連の命令を含む命令ストリームよりなるプログラ
    ムを実行するための実行環境で、その一連の命令の中の
    1つ命令の実行と関連して少なくとも1つの例外条件を
    検出する例外条件検出器を含む実行環境と; B.前記命令ストリーム中の前記1つの命令の実行と関
    連した少なくとも1つの例外条件の実行環境による検出
    に応答して、処理されると前記少なくとも1つの例外条
    件を回避するフィックスアップコードを生成し、前記命
    令ストリーム中のフィックスアップコードによって前記
    1つの命令を置換するフィックスアップコード生成サブ
    システムと;を具備した例外条件回避システム。
  2. 【請求項2】 プログラムの実行時に所定の型の例外条
    件の回避を容易にするためのコンピュータで実施される
    方法において: A.一連の命令を含む命令ストリームよりなるプログラ
    ムを実行するための実行環境で、その一連の命令の中の
    1つ命令の実行と関連して少なくとも1つの例外条件を
    検出するための例外条件検出器を含む実行環境を形成す
    るステップと; B.前記命令ストリーム中の1つの命令の実行と関連し
    た前記少なくとも1つの例外条件の該実行環境による検
    出に応答して、処理されると少なくとも1つの例外条件
    を回避するフィックスアップコードを生成し、前記命令
    ストリーム中のフィックスアップコードによって1つの
    命令を置換するステップと;を具備した方法。
  3. 【請求項3】 プログラムの実行時に所定の型の例外条
    件の回避を容易にするための、コンピュータで使用する
    例外条件回避コンピュータプログラムであって、前記コ
    ンピュータが、一連の命令を含む命令ストリームよりな
    るプログラムを実行するための実行環境で、その一連の
    命令の中の1つ命令の実行と関連して少なくとも1つの
    例外条件を検出するための例外条件検出器を含む実行環
    境を与える例外条件回避コンピュータプログラムを記録
    した媒体において、前記コンピュータに、前記命令スト
    リーム中の1つの命令の実行と関連した前記少なくとも
    1つの例外条件の該実行環境による検出に応答して、処
    理されるとその少なくとも1つの例外条件を回避するフ
    ィックスアップコードを生成させ、前記命令ストリーム
    中のフィックスアップコードによって前記1つの命令を
    置換させるフィックスアップコード生成コード手段が記
    録されたコンピュータ可読記録媒体。
  4. 【請求項4】 A.コンピュータと; B. i.一連の命令を含む命令ストリームよりなるプ
    ログラムをそのコンピュータに実行させるための実行環
    境で、その一連の命令の中の各命令の実行と関連して少
    なくとも1つの例外条件を検出するための例外条件検出
    器を含む実行環境と; ii.前記命令ストリーム中の命令の実行と関連した前記
    少なくとも1つの例外条件の該実行環境による検出に応
    答して、処理されるとその少なくとも1つの例外条件を
    回避するフィックスアップコードを生成し、その少なく
    とも1つの例外条件が検出された命令ストリームの中の
    命令を前記命令ストリーム中のフィックスアップコード
    によって置換するフィックスアップコード生成サブシス
    テムと;を有するコンピュータを制御するための制御サ
    ブシステムと;を具備した例外条件回避システム。
  5. 【請求項5】 コンピュータを制御する制御サブシステ
    ムにおいて: A.一連の命令を含む命令ストリームよりなるプログラ
    ムを前記コンピュータに実行させるための実行環境で、
    前記一連の命令の中の各命令の実行と関連して少なくと
    も1つの例外条件を検出するための例外条件検出器を含
    む実行環境と; B.前記命令ストリーム中の命令の実行と関連した前記
    少なくとも1つの例外条件の検出に応答して、前記コン
    ピュータに処理されるとその少なくとも1つの例外条件
    を回避するフィックスアップコードを生成させ、前記少
    なくとも1つの例外条件が検出された前記命令ストリー
    ムの中の命令を前記命令ストリーム中のフィックスアッ
    プコードによって置換させるフィックスアップコード生
    成サブシステムと;を具備した制御サブシステム。
  6. 【請求項6】 コンピュータを制御するフィックスアッ
    プコード生成制御サブシステムであって、前記コンピュ
    ータが、一連の命令を含む命令ストリームよりなるプロ
    グラムを前記コンピュータに実行させるための実行環境
    を与え、その実行環境は前記一連の命令の中の各命令の
    実行と関連して少なくとも1つの例外条件を検出するた
    めの例外条件検出器を含む、コンピュータを制御するフ
    ィックスアップコード生成制御サブシステムにおいて: A.コード生成要求に応答して、処理されると前記少な
    くとも1つの例外条件を回避するフィックスアップコー
    ドを前記コンピュータに生成させ、前記命令ストリーム
    の中の1つの命令を前記命令ストリームの中のフィック
    スアップコードによって置換させるコードジェネレータ
    要素と; B.前記少なくとも1つの例外条件の検出に応答して、
    前記コンピュータにコード生成要求を発生させる例外条
    件ハンドラ要素と;を具備したフィックスアップコード
    生成制御サブシステム。
JP9145143A 1996-06-03 1997-06-03 ディジタルコンピュータシステムにおける所定の型の例外の回避を容易にするためのシステム及び方法 Pending JPH10116200A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US657112 1996-06-03
US08/657,112 US5907708A (en) 1996-06-03 1996-06-03 System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof

Publications (1)

Publication Number Publication Date
JPH10116200A true JPH10116200A (ja) 1998-05-06

Family

ID=24635865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9145143A Pending JPH10116200A (ja) 1996-06-03 1997-06-03 ディジタルコンピュータシステムにおける所定の型の例外の回避を容易にするためのシステム及び方法

Country Status (4)

Country Link
US (2) US5907708A (ja)
EP (1) EP0817029B1 (ja)
JP (1) JPH10116200A (ja)
DE (1) DE69730276T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009282990A (ja) * 2003-11-26 2009-12-03 Intel Corp ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305790A (ja) * 1999-02-19 2000-11-02 Fujitsu Ltd ラベルアドレス変換装置、ラベルアドレス変換方法及びコンピュータ可読媒体
US6772416B1 (en) * 1999-11-19 2004-08-03 General Dynamics Decision Systems, Inc. Separation kernel with memory allocation, remote procedure call and exception handling mechanisms
US6978233B1 (en) * 2000-03-03 2005-12-20 Unisys Corporation Method for emulating multi-processor environment
JP3974742B2 (ja) * 2000-04-14 2007-09-12 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル装置、最適化方法および記録媒体
US6829700B2 (en) * 2000-12-29 2004-12-07 Stmicroelectronics, Inc. Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US6993751B2 (en) * 2001-05-14 2006-01-31 Microsoft Corporation Placing exception throwing instructions in compiled code
JP2004536405A (ja) * 2001-07-16 2004-12-02 ユキング レン 組み込みソフトウェア更新システム
US6928536B2 (en) * 2001-11-29 2005-08-09 Hewlett-Packard Development Company, L.P. Dynamic execution layer interface for replacing instructions requiring unavailable hardware functionality with patch code and caching
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7409596B2 (en) * 2004-09-02 2008-08-05 International Business Machines Corporation Apparatus and method for initializing diagnostic functions when specified run-time error criteria are satisfied
US7716528B2 (en) * 2004-09-07 2010-05-11 Broadcom Corporation Method and system for configurable trigger logic for hardware bug workaround in integrated circuits
US20060179349A1 (en) * 2005-02-09 2006-08-10 Preemptive Solutions, Llc System and method for tracking exceptional states
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US7684973B2 (en) * 2005-12-29 2010-03-23 Bull Hn Information Systems Inc. Performance improvement for software emulation of central processor unit utilizing signal handler
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US8078847B2 (en) * 2007-05-14 2011-12-13 Apple Inc. Detecting memory-hazard conflicts during vector processing
US8701189B2 (en) 2008-01-31 2014-04-15 Mcafee, Inc. Method of and system for computer system denial-of-service protection
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
GB2460280A (en) 2008-05-23 2009-11-25 Advanced Risc Mach Ltd Using a memory-abort register in the emulation of memory access operations
US8745601B1 (en) * 2008-07-17 2014-06-03 Apple Inc. Methods and systems for using data structures for operating systems
JP5492903B2 (ja) * 2008-10-27 2014-05-14 カーディアック ペースメイカーズ, インコーポレイテッド 植込型装置を充電するための方法およびシステム
US8473930B2 (en) * 2008-11-05 2013-06-25 Oracle America, Inc. Handling signals and exceptions in a dynamic translation environment
US8549269B2 (en) * 2009-03-10 2013-10-01 International Business Machines Corporation Method, apparatus or software for processing exceptions produced by an application program
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US9552497B2 (en) * 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
WO2015060857A1 (en) 2013-10-24 2015-04-30 Mcafee, Inc. Agent assisted malicious application blocking in a network environment
US10055209B2 (en) * 2015-01-12 2018-08-21 Red Hat, Inc. Resource closing
CN112988441B (zh) * 2021-03-03 2024-04-05 北京京东乾石科技有限公司 异常处理方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210832A (en) * 1986-10-14 1993-05-11 Amdahl Corporation Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle
US5212693A (en) * 1990-08-02 1993-05-18 Ibm Corporation Small programmable array to the on-chip control store for microcode correction
US5479616A (en) * 1992-04-03 1995-12-26 Cyrix Corporation Exception handling for prefetched instruction bytes using valid bits to identify instructions that will cause an exception
DE4434895C2 (de) * 1993-12-23 1998-12-24 Hewlett Packard Co Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
US5862370A (en) * 1995-09-27 1999-01-19 Vlsi Technology, Inc. Data processor system with instruction substitution filter for deimplementing instructions
US5815702A (en) * 1996-07-24 1998-09-29 Kannan; Ravi Method and software products for continued application execution after generation of fatal exceptions
US5881279A (en) * 1996-11-25 1999-03-09 Intel Corporation Method and apparatus for handling invalid opcode faults via execution of an event-signaling micro-operation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009282990A (ja) * 2003-11-26 2009-12-03 Intel Corp ミスアラインデータアクセスの検出及び処理のためのデバイス、システム、及び方法

Also Published As

Publication number Publication date
DE69730276D1 (de) 2004-09-23
EP0817029B1 (en) 2004-08-18
EP0817029A2 (en) 1998-01-07
US6064815A (en) 2000-05-16
DE69730276T2 (de) 2005-08-18
EP0817029A3 (en) 2002-08-14
US5907708A (en) 1999-05-25

Similar Documents

Publication Publication Date Title
JPH10116200A (ja) ディジタルコンピュータシステムにおける所定の型の例外の回避を容易にするためのシステム及び方法
EP0071028B1 (en) Instructionshandling unit in a data processing system with instruction substitution and method of operation
US5167026A (en) Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
CA1324671C (en) Decoding multiple specifiers in a variable length instruction architecture
US5765206A (en) System and method for emulating a segmented virtual address space by a microprocessor that provides a non-segmented virtual address space
US5142633A (en) Preprocessing implied specifiers in a pipelined processor
EP0148478B1 (en) A data processor with control of the significant bit lenghts of general purpose registers
US5778211A (en) Emulating a delayed exception on a digital computer having a corresponding precise exception mechanism
EP0213842A2 (en) Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US5297281A (en) Multiple sequence processor system
JPH01131949A (ja) 処理依頼機能を持つ並列計算機
JPH07210381A (ja) プロセッサ及びコンピュータ・システム
US20070271432A1 (en) Facilitating use of storage access keys to access storage
US5761491A (en) Data processing system and method for storing and restoring a stack pointer
US4620274A (en) Data available indicator for an exhausted operand string
US20020112142A1 (en) Implementation of a conditional move instruction in an out-of-order processor
US6295601B1 (en) System and method using partial trap barrier instruction to provide trap barrier class-based selective stall of instruction processing pipeline
US5903739A (en) System and method for processing load instruction in accordance with &#34;no-fault&#34; processing facility including arrangement for preserving access fault indicia
US4499535A (en) Digital computer system having descriptors for variable length addressing for a plurality of instruction dialects
KR19990082748A (ko) 번역및테스트를위한전문밀리코드명령
EP1019829B1 (en) Method and apparatus for transferring data between a register stack and a memory resource
US6530017B1 (en) System and method providing an arrangement for efficiently emulating an operating system call
US4575795A (en) Apparatus for detecting a predetermined character of a data string
JP3170472B2 (ja) レジスタ・リマップ構造を有する情報処理システム及び方法
US7103880B1 (en) Floating-point data speculation across a procedure call using an advanced load address table