JP2001154843A - 情報処理装置、例外回復処理方法および記録媒体 - Google Patents

情報処理装置、例外回復処理方法および記録媒体

Info

Publication number
JP2001154843A
JP2001154843A JP33607099A JP33607099A JP2001154843A JP 2001154843 A JP2001154843 A JP 2001154843A JP 33607099 A JP33607099 A JP 33607099A JP 33607099 A JP33607099 A JP 33607099A JP 2001154843 A JP2001154843 A JP 2001154843A
Authority
JP
Japan
Prior art keywords
instruction
exception
address
word
read
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
JP33607099A
Other languages
English (en)
Other versions
JP3766772B2 (ja
Inventor
Yasuki Nakamura
泰基 中村
Hideo Miyake
英雄 三宅
Atsuhiro Suga
敦浩 須賀
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP33607099A priority Critical patent/JP3766772B2/ja
Publication of JP2001154843A publication Critical patent/JP2001154843A/ja
Application granted granted Critical
Publication of JP3766772B2 publication Critical patent/JP3766772B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 少ないハードウェアで例外回復の処理速度の
向上を図る。 【解決手段】 命令の実行により例外が発生したときに
その例外起因命令の命令語を保持する例外命令語レジス
タ51と、メモリ10上の命令語とレジスタ51内の命
令語との何れかを選択するセレクタ23とを備え、例外
回復処理の終了時に例外起因命令の再実行が必要となっ
たときに、メモリ10から与えられる再実行命令(RE
I命令)に応じて、レジスタ51に保持されている例外
起因命令の命令語を選択的にフェッチすることにより、
例外回復処理から元の通常の処理に復帰する際に必要な
命令再実行のための処理を、1つのREI命令の実行だ
けで実現することができるようにして、従来命令の再実
行を行うために必要であったソフトウェアでのエミュレ
ーションや自己改変コードなどの複雑な処理は行わなく
て済むようにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は情報処理装置、例外
回復処理方法および記録媒体に関し、特に、通常の処理
の最中に発生した誤りや例外的な条件に対処するための
例外回復処理の動作を制御する装置および方法に用いて
好適なものである。
【0002】
【従来の技術】現在の計算機システムには、プログラム
を実行する上で何らかの誤りが発生した場合、あるいは
例外的な条件に合致したような場合、本来のプログラム
とは別の処理を行い、発生した問題を解消してから本来
のプログラムに戻って処理を続行するという機能が備え
られている。一般に、誤りが発生したこと等を例外が発
生したと言い、問題解消のための処理を例外回復処理と
言う。
【0003】通常の処理の最中に例外が発生すると、本
来のプログラムとは別の例外ハンドラと呼ばれる処理プ
ログラムにプロセッサの制御が移る。例外ハンドラの中
では、例外の原因となった問題を処理して解消し、その
後本来のプログラムを再開するというような例外回復の
処理を行う。
【0004】図7は、従来の例外ハンドラの動作を示す
フローチャートである。通常の処理の最中に例外が発生
すると、プロセッサは、例外発生時のプログラムカウン
タの値、プロセッサの状態、発生した例外の要因等の情
報をレジスタに書き込むことにより、例外発生前のプロ
セッサの動作情報を退避させる。そして、プロセッサは
ユーザ状態からスーパバイザ状態(特権状態)に遷移
し、通常のアプリケーション・プログラムから図7のよ
うな例外ハンドラに処理を移行する。
【0005】図7において、ステップS21では、例外
発生時にレジスタに記憶した例外発生の要因等の情報を
もとに、例外要因を解消する処理を行う。そして、例外
要因の解消が完了すると、ステップS22に進み、例外
発生時にレジスタに退避しておいたプログラムカウンタ
の値をもとに、通常のアプリケーション・プログラム上
で例外が発生した元の命令(例外起因命令)に復帰す
る。
【0006】例えば、図8に示すプログラム中のロード
命令(2: ld )でMMU(Memory Management Unit)の
メモリアクセスに関する例外が発生したとする。この場
合は、このプログラム中のロード命令(2: ld )から例
外ハンドラの処理プログラムに移って図7のような処理
を行う。そして、例外発生の要因となった問題を解消し
たら、例外起因命令である元のロード命令(2: ld )に
戻って元のプログラムの処理を再開することにより、例
外からの回復を実現する。
【0007】また、近年におけるプロセッサのマイクロ
アーキテクチャでは、プロセッサの処理性能の向上を図
るために、時間方向の並列化(例えばパイプライン方
式)や、空間方向の並列化(例えばスーパースカラプロ
セッサ)といった手法を採用することが行われる。図9
に、上記図8のプログラムをパイプライン動作させた場
合の処理の様子を示す。
【0008】上記パイプライン動作を表す図9の例にお
いて、D は命令デコードのステージ、E は演算実行のス
テージ、C はメモリアクセスのステージ、W はレジスタ
への書き込みのステージを意味する。上記図9の例で
は、1つの命令のデコード処理が終了した時点で次の命
令のデコード処理を直ちに開始することにより、パイプ
ライン動作を実現している。
【0009】
【発明が解決しようとする課題】プロセッサがパイプラ
イン動作を行っている場合、1つの命令を実行してその
結果をレジスタに書き込むまでの時間が各命令ごとに異
なっていると、命令の完了順序がプログラム順となるよ
うに保証することは難しくなる。すなわち、図9の例で
は、2行目のロード命令(2: ld )はその処理に DECCW
の5ステージ必要であるのに対し、3行目の減算命令
(3: sub)は DEWの3ステージで処理が終了し、ロード
命令の方が長い処理時間を必要とする。そのため、2行
目のロード命令よりも3行目の減算命令の方が早く処理
が完了することとなる。
【0010】このようなパイプライン動作をしている際
に、例えば2行目のロード命令(2:ld )中の書き込み
ステージで例外が発生したとする。この場合、例外起因
命令であるロード命令の次の減算命令(3: sub)につい
ては、例外が発生する前の時点でレジスタへの書き込み
が終わっており、当該減算命令の実行が既に完了してい
る。この場合に、図7に示したフローに従って例外回復
処理を行うと、例外回復処理から復帰したロード命令
(2: ld )の処理後に、既に完了している減算命令(3:
sub)を再び実行してしまうことになる。
【0011】このような不都合を解消するために、パイ
プライン動作を行っていてもプログラム上の完了順序を
保証するような機構をハードウェアで実現することが考
えられる。例えば、処理の結果が早く出てくる命令につ
いては実行開始のタイミングを遅らせるなどの手法を採
用することにより、命令完了順序がプログラム順となる
ことを保証することが可能となり、例外回復処理からの
復帰時に既に実行済の命令を再実行してしまう不都合を
防止することができる。
【0012】しかしながら、このような手法では、命令
の実行サイクル数を増やすことになるため、プロセッサ
の性能面でペナルティとなる。また、命令の完了順序を
保証するためにハードウェア的な機構を設けると、例外
回復のための機構が複雑になり、回路規模の増大を招い
てしまう。一般に例外の発生頻度は低いため、例外回復
機構に過剰なハードウェア資源を投入するのは不経済で
ある。したがって、高性能が求められる現在のプロセッ
サでは、各命令の完了順序をハードウェアで保証するこ
とは行わないことが多い。
【0013】これに対し、例外回復処理からの復帰時に
既に実行済の命令を再実行してしまう不都合をソフトウ
ェアの機能により防止するようにしたものが提案されて
いる。これは、上記図9の例で言えば、例外回復処理か
ら正しく復帰するために、例外が発生した2行目のロー
ド命令(2: ld )に関して例外の要因を除去した後、元
のプログラムに復帰してロード命令(2: ld )を実行
し、その後、既に実行済である3行目の減算命令(3: s
ub)は飛ばして4行目の加算命令(4: add)から処理を
再開させるものである。
【0014】図10は、プログラム順に命令が完了しな
い場合の例外ハンドラの動作を示すフローチャートであ
る。この場合は、通常の処理の最中に例外が発生する
と、プロセッサは、例外発生時のプログラムカウンタの
値、例外起因命令より後で最初にくる実行未完了の命令
(図9の例では、4行目の加算命令(4: add))のアド
レス、プロセッサの状態、発生した例外の要因等の情報
をレジスタに書き込むことにより、例外発生前のプロセ
ッサの動作情報を退避させる。そして、プロセッサはユ
ーザ状態からスーパバイザ状態に遷移し、通常のアプリ
ケーション・プログラムから図10のような例外ハンド
ラに処理を移行する。
【0015】図10において、ステップS31では、例
外発生時にレジスタに記憶した例外発生の要因等の情報
をもとに、例外要因を解消する処理を行う。そして、例
外要因の解消が完了すると、ステップS32に進み、例
外発生時にレジスタに退避しておいたプログラムカウン
タの値をもとに、例外起因命令をメモリ上から読み出し
て実行する。その後、ステップS33に進み、例外発生
時にレジスタに退避しておいた実行未完了命令のアドレ
スをもとに、未完了の命令から元のアプリケーション・
プログラムの処理に復帰する。
【0016】このように、例外回復処理から復帰する際
には、例外の要因を除去した後に、元のプログラムの処
理を再開する前に何らかの方法で例外起因命令だけを実
行させる処理を行う必要がある。従来、これを実現する
ために、以下のような方法を採用してきた。(1) 実行す
る例外起因命令を解析し、あらかじめ用意した複数の命
令列により命令をエミュレーションする方法。(2) 例外
ハンドラの命令シーケンスの中に命令を差し替えるため
の領域を用意しておき、そこに実行したい例外起因命令
をコピーし、コピーした命令を実行することによって例
外起因命令を実行するという自己改変コードによる方
法。
【0017】図11は、命令のエミュレーションにより
単一の例外起因命令を再実行させる処理を示すフローチ
ャートである。図11において、ステップS41では、
例外発生時に退避しておいたプログラムカウンタの値を
もとに、例外起因命令をメモリ上から取得する。そし
て、ステップS42で、その取得した例外起因命令を解
析し、その解析結果に応じてステップS43-1〜S43
-nの何れかのエミュレーションの処理を実行する。
【0018】例えば、ステップS43-1の処理は、メモ
リ上からレジスタにデータを1バイト読み込む処理を示
す。また、ステップS43-2の処理は、メモリ上からレ
ジスタにデータを2バイト読み込む処理を示し、ステッ
プS43-3の処理は、メモリ上からレジスタにデータを
4バイト読み込む処理を示す。なお、この図11では、
各命令別のエミュレーションの例として、データのロー
ド命令およびストア命令のみを示しているが、実際には
加減算、乗除算などの演算命令なども用意されており、
命令語の解析結果に応じて適切なものが選ばれて実行さ
れる。
【0019】図12は、自己改変コードにより単一の例
外起因命令を再実行させる処理を示すフローチャートで
ある。図12において、ステップS51では、例外発生
時に退避しておいたプログラムカウンタの値をもとに、
例外起因命令をメモリ上から取得する。そして、ステッ
プS52で、その取得した例外起因命令を、メモリ上に
例外ハンドラとは別にあらかじめ用意された記憶領域に
ロード・ストア命令を使ってコピーする。
【0020】次に、ステップS53では、キャッシュメ
モリのフラッシュおよび無効化の処理を行う。キャッシ
ュのフラッシュとは、データ用キャッシュメモリに格納
されているデータをメインメモリ上に反映する処理を言
い、キャッシュの無効化とは、命令用キャッシュメモリ
に格納されている命令を無効にする処理を言う。
【0021】このようなキャッシュのフラッシュおよび
無効化の処理を行うことにより、メインメモリ上の記憶
領域にコピーを行う前の命令がキャッシュメモリから読
み出されて実行されることを防ぎ、コピーした例外起因
命令を上記メインメモリの記憶領域から読み出して実行
することが可能となる。
【0022】上記ステップS53の処理後のステップS
54では、例外起因命令のコピー先の記憶領域に処理を
移し、ステップS55でその例外起因命令を実行する。
上記コピー先の記憶領域においては、この例外起因命令
の直後には復帰命令が記憶されており、例外起因命令の
実行後には、ステップS56で元の例外ハンドラの処理
に直ちに戻る。これにより、図10のステップS33へ
と処理が進み、既に実行済の命令は飛ばして実行未完了
の命令から処理が再開する。
【0023】しかしながら、命令をエミュレーションす
る方法では、命令を解析してエミュレーションするため
には多くの命令が必要であり、そのため例外回復の実行
時間が長くなってしてしまうとともに、コードサイズが
大きくなってしまうという問題があった。また、例外を
発生する全ての命令をエミュレーションできるようにし
なければならないため、例外ハンドラのコードサイズが
膨大になってしまうという問題もあった。
【0024】また、自己改変コードを用いる方法では、
現在の計算機システムの多くはキャッシュメモリを用い
ているため、自己改変コードを用いるためにはキャッシ
ュのフラッシュおよび無効化の操作が必要となる。しか
し、これらの処理には多くの実行時間を必要とするた
め、例外回復の処理速度が低下してしまうという問題が
あった。また、キャッシュの無効化を行うと、元のプロ
グラムシーケンスでキャッシュされている命令も無効に
されてしまうため、元のプログラムを実行する際のキャ
ッシュ性能が低下してしまい、全体としての処理速度も
低下してしまうという問題があった。
【0025】本発明は、パイプライン動作を行うプロセ
ッサを用いた計算機システムにおいて、特に各命令の完
了がプログラムの実行順序とは異なる場合に、正しい例
外回復の処理をハードウェアで実現しようとすると回路
規模の増大や動作周波数向上の阻害要因を招き、ソフト
ウェアで実現しようとすると処理速度が低下するという
従来の問題を解決するために成されたものであり、少な
いハードウェアで例外回復の処理速度の向上を図ること
を目的とする。
【0026】
【課題を解決するための手段】本発明の情報処理装置
は、例外が発生したときに、その例外起因命令の命令語
および例外が発生したことにより実行が途中で中断され
た実行未完了命令の少なくとも一方の命令語あるいは命
令アドレスを保持する手段を備える。さらに、例外回復
処理から通常の処理に復帰する際の処理として、例外起
因命令や実行未完了命令の再実行が必要になったとき
に、再実行命令を実行することにより、例外発生時に保
持しておいた命令語、あるいは保持しておいた命令アド
レスに存在する命令語に従って処理を実行する手段を備
える。また、上記再実行命令は、例外回復処理のための
命令シーケンス中に含まれるようにしても良い。
【0027】本発明は上記技術手段より成るので、例外
回復処理から通常の処理に復帰する際に必要な再実行の
ための処理を、1つの再実行命令を実行するだけで実現
することが可能となり、各命令別のエミュレーションを
あらかじめ用意しておき、命令語を解釈して何れかのエ
ミュレーションを選択的に実行したり、キャッシュのフ
ラッシュおよび無効化の操作を実行したりするなどの複
雑な処理は必要がなくなる。
【0028】また、本発明の他の特徴によれば、例外起
因命令を再実行するにあたって、例外回復処理の命令シ
ーケンス通りに命令を順次処理し、その中に書かれた再
実行命令を単に実行すれば良いので、再実行する例外起
因命令が格納された別の記憶領域のアドレス値にプログ
ラム・カウンタの値を書き換える必要がなく、また、当
該別領域へのアクセスを行うことなく例外起因命令を再
実行することが可能となる。
【0029】
【発明の実施の形態】以下に、本発明の一実施形態を図
面に基づいて説明する。 (第1の実施形態)図1は、第1の実施形態による例外
回復処理方法を適用したプロセッサ(情報処理装置)の
一構成例を示すブロック図である。図1において、10
はメモリであり、アプリケーション・プログラムや例外
ハンドラ等のプログラムを格納している。20は命令フ
ェッチ部、30は命令解析実行制御部、40はALU
(演算論理装置)等の命令実行部、50はレジスタ部で
ある。
【0030】上記命令フェッチ部20は、プログラム・
カウンタ21と、命令レジスタ22と、セレクタ23と
を備える。この命令フェッチ部20は、例外が発生して
いない通常処理および例外回復処理の実行中では、プロ
グラム・カウンタ21が示す命令アドレスに基づいてメ
モリ10から命令語を1つずつ読み出し、それをセレク
タ23を介して命令レジスタ22に一旦格納した後、命
令解析実行制御部30に供給する。一方、例外回復処理
から元の通常処理に復帰する際には、レジスタ部50か
ら供給される例外起因命令の命令語をセレクタ23で選
択し、それを命令レジスタ22を解して命令解析実行制
御部30に供給する。
【0031】命令フェッチ部20は、命令解析実行制御
部30より分岐先の命令アドレスが供給されたとき、あ
るいは例外発生に対応して例外ハンドラの先頭アドレス
が供給されたときには、その供給された命令アドレスを
プログラム・カウンタ21に書き込む。それ以外の場合
は、次の命令語を順次読み出すべくプログラム・カウン
タ21の値をインクリメントする。
【0032】命令解析実行制御部30は、命令フェッチ
部20から供給された命令語の解析を行うデコーダ31
と、命令語の解析結果に応じて例外回復処理を制御する
例外処理制御部32と、同じく命令語の解析結果に応じ
て命令実行部40を制御する実行制御部33とを備え
る。このうち、実行制御部33は、命令フェッチ部20
から供給されデコーダ31で解析された命令語の指示に
従って命令実行部40を制御し、演算、分岐、データの
ロード/ストア等の各種処理を実行する。
【0033】例えば、供給された命令語が演算命令であ
ったときは、命令実行部40は実行制御部33からの制
御に基づき、指定されたアドレスに従ってメモリ10か
ら読み出したデータ値、あるいはレジスタ部50内の図
示しない汎用レジスタから読み出したデータ値に基づい
て演算を実行する。また、供給された命令語が分岐命令
であって、分岐条件が成立したときには、実行制御部3
3は、分岐先の命令アドレスを命令フェッチ部20に供
給する。
【0034】また、供給された命令語がロード命令ある
いはストア命令であったときには、実行制御部33は命
令実行部40を制御し、メモリ10上の指定されたアド
レスに対応した記憶領域に対して、データの読み出し、
あるいはデータ(レジスタ部50内の図示しない汎用レ
ジスタのデータ等)の書き込みを行う。
【0035】また、例外処理制御部32は、上記命令実
行部40での演算実行の過程で何らかの問題等(例え
ば、ゼロによる除算、データオーバーフロー等のエラ
ー)が発生すると、その通知を受けて命令フェッチ部2
0、命令実行部40、レジスタ50を制御し、例外回復
処理を実行する。
【0036】すなわち、例外処理制御部32は、例外発
生を検出すると、検出した例外の内容に対応する例外ハ
ンドラの先頭アドレスを命令フェッチ部20に供給し、
そのアドレスをプログラム・カウンタ21にセットす
る。また、命令キャンセル等の指示を命令実行部40に
発行するとともに、レジスタ部50内の各レジスタ51
〜54に以下に述べる情報を書き込む処理を行う。その
後、プロセッサはユーザ状態からスーパバイザ状態に遷
移し、プログラム・カウンタ21にセットされた例外ハ
ンドラの命令アドレスに従って例外回復処理を実行す
る。
【0037】上記レジスタ部50は、命令実行部40の
演算などに使用するデータを保持する図示しない汎用レ
ジスタと、以下に述べる例外回復処理に使用するデータ
を保持するレジスタ51〜54とを含み、命令フェッチ
部20、命令解析実行制御部30、命令実行部40から
これらのレジスタに対してデータの読み出しあるいは書
き込みが行われる。なお、命令実行部40とレジスタ部
50との間のデータのやり取りは一般的なものであるた
め、ここでは図示を省略している。以下に、例外回復処
理用のレジスタ51〜54について説明する。
【0038】例外命令語レジスタ51は、例外が発生し
たときに、その例外起因命令の命令語を保持するための
レジスタである。状態レジスタ52は、例外発生前のプ
ロセッサの状態(ユーザ状態、スーパバイザ状態など)
を保持するレジスタである。要因レジスタ53は、発生
した例外の要因を保持するレジスタである。また、復帰
アドレスレジスタ54は、例外回復処理から復帰する元
のプログラム中の命令アドレスを保持するレジスタであ
り、例外起因命令より後で最初にくる実行未完了命令の
アドレスがここに格納される。これらのレジスタ51〜
54の値は何れも例外発生時に設定される。
【0039】また、上記例外処理制御部32は、例外回
復処理の実行中は、順次インクリメントされるプログラ
ム・カウンタ21に従ってメモリ10から読み出され、
デコーダ31で解釈された例外ハンドラの命令が、例外
ハンドラの途中(例外の回復処理が終了する部分)に組
み込まれた本実施形態に特有の命令再実行命令(以下で
は、これをREI命令と称する)かどうかを判断する。
【0040】そして、メモリ10から読み出された命令
がREI命令であると判断したときは、命令フェッチ部
20内のセレクタ23の選択状態をA側に切り替えるこ
とにより、例外命令語レジスタ51から読み出した例外
起因命令を選択するように制御する。この例外起因命令
を実行した後は、セレクタ23の選択状態をB側に戻す
ことにより、例外ハンドラの残りの処理(元のプログラ
ムへの復帰処理)を実行する。
【0041】すなわち、上記例外起因命令を実行した後
に例外処理制御部32は、状態レジスタ52の値に基づ
いてプロセッサの状態を元のユーザ状態に遷移させると
ともに、例外回復処理から復帰する元のプログラム中の
命令アドレスを復帰アドレスレジスタ54から読み出
し、命令フェッチ部20のプログラム・カウンタ21に
セットする。これにより命令フェッチ部20は、プログ
ラム・カウンタ21にセットされた命令アドレスに基づ
いて、元のプログラムの命令語をメモリ10から順次読
み出し、命令解析実行制御部30で実行することにな
る。
【0042】次に、図1に示すプロセッサの動作を、図
9に示すようにプログラムをパイプライン動作させた場
合を例にとって説明する。例外が発生していないユーザ
状態にあるとき、命令フェッチ部20は、プログラム・
カウンタ21により示される命令アドレスに基づき、メ
モリ10からプログラムの命令語を読み出し、読み出し
た命令語をセレクタ23および命令レジスタ22を介し
て命令解析実行制御部30に供給する。
【0043】命令解析実行制御部30は、供給された命
令語をデコーダ31で解釈し、その命令の指示に従って
実行制御部33が命令実行部40を制御することによっ
て、プログラムの処理を実行する。このユーザ状態で例
外が発生しなければ、プロセッサは以上の動作をパイプ
ライン処理により繰り返し行う。しかし、命令解析実行
制御部30が例外の発生を検出すると、命令解析実行制
御部30内の例外処理制御部32は、命令フェッチ部2
0およびレジスタ部50を制御して以下のような例外回
復処理を行う。
【0044】まず、例外処理制御部32は、例外が発生
したときの例外起因命令を例外命令語レジスタ51に格
納する。図9の例では、2行目のロード命令(2: ld )
で例外が発生しているため、このロード命令の命令語を
例外起因命令として例外命令語レジスタ51に格納す
る。また、例外処理制御部32は、例外発生前のプロセ
ッサの状態を状態レジスタ52に格納するとともに、発
生した例外の要因を要因レジスタ53に格納する。
【0045】さらに、例外処理制御部32は、例外回復
処理から復帰する元のプログラム中の命令アドレスとし
て、例外起因命令より後で最初にくる実行未完了命令の
アドレスを復帰アドレスレジスタ54に格納する。図9
の例では、2行目のロード命令(2: ld )の書き込みス
テージで例外が発生したときに、次の3行目の減算命令
(3: sub)は既に実行が完了しており、更にその次の4
行目の加算命令(4: add)はまだ処理を完了していな
い。したがって、この4行目の加算命令のアドレスを復
帰アドレスレジスタ54に格納する。
【0046】次に、例外処理制御部32は、発生した例
外に対応する例外ハンドラの先頭アドレスを命令フェッ
チ部20に供給し、その値をプログラム・カウンタ21
にセットする。以上の処理を経て、プロセッサはユーザ
状態からスーパバイザ状態に遷移する。スーパバイザ状
態に遷移したプロセッサは、プログラム・カウンタ21
にセットされた例外ハンドラの先頭アドレスに従って、
当該例外ハンドラの命令語を命令フェッチ部20に読み
出し、読み出した命令語をセレクタ23および命令レジ
スタ22を介して命令解析実行制御部30に供給する。
【0047】命令解析実行制御部30は、例外ハンドラ
の処理途中でREI命令が発生しない限り、例外ハンド
ラの最終アドレスに向かって順次供給される命令語を実
行するという動作を繰り返す。しかし、この例外ハンド
ラの動作中に、例外要因の解消が終わってメモリ10か
らREI命令が読み出されると、例外処理制御部32は
そのREI命令を実行するように制御する。
【0048】すなわち、例外処理制御部32は、セレク
タ23の選択状態をB側からA側に切り替えることによ
り、例外発生時に例外命令語レジスタ51に保持してお
いた例外起因命令(ロード命令(2: ld ))をセレクタ
23で選択し、それを命令レジスタ22を介して命令解
析実行制御部30に供給するようにする。これにより、
命令実行部40は、供給された例外起因命令を命令解析
実行制御部30の制御に基づき実行する。
【0049】そして、このようにREI命令に基づき例
外起因命令を実行した後は、例外処理制御部32は、セ
レクタ23の選択状態をB側に戻すことにより、例外ハ
ンドラの残りの処理(ユーザ状態への復帰処理)を実行
するようにする。つまり、上記例外起因命令の処理が完
了すると、命令解析実行制御部30は、メモリ10から
読み出される例外ハンドラの例外復帰命令を実行する。
【0050】このとき命令解析実行制御部30は、例外
回復処理から復帰する元のプログラム中の命令アドレス
(加算命令(4: add))を復帰アドレスレジスタ54か
ら読み出し、それをプログラム・カウンタ21にセット
する。命令フェッチ部20は、プログラム・カウンタ2
1にセットされた命令アドレスに基づいて、通常動作時
の命令語をメモリ10から読み出し、命令解析実行制御
部30に供給する。これにより、プロセッサはスーパバ
イザ状態からユーザ状態に遷移し、命令実行部40が通
常動作に対応したプログラムの残りの処理を実行するこ
とになる。
【0051】このような動作により、例外の発生に対応
して例外ハンドラで例外の回復を行った後に、1つの例
外起因命令(ロード命令(2: ld ))だけを実行し、既
に実行済の減算命令(3: sub)は飛ばして次の未実行の
加算命令(4: add)から処理を再開することができるよ
うになる。すなわち、図10に示したフローチャートの
ように、ステップS31で例外要因を解消した後、ステ
ップS32で例外起因命令だけを実行し、ステップS3
3で未完了の命令から元のプログラムの処理に復帰する
ことが可能となる。
【0052】図2は、上記ステップS32で単一の例外
起因命令を再実行させる本実施形態の処理を示すフロー
チャートである。図2に示すように、本実施形態では、
例外ハンドラの先頭アドレスから順次インクリメントさ
れるプログラム・カウンタ21の値に従ってREI命令
がメモリ10から読み出されたときに、そのREI命令
をステップS1で実行するだけで良い。
【0053】以上詳しく説明したように、本実施形態に
よれば、例外ハンドラから元のプログラムの処理に復帰
する際に例外起因命令だけを実行するための処理を、例
外ハンドラの中に組み込んだ1つのREI命令を実行す
るだけで実現することができる。これにより、図11に
示したように各命令別のエミュレーションをあらかじめ
用意しておき、命令語を解釈して何れかのエミュレーシ
ョンを選択的に実行したり、図12に示したようにキャ
ッシュのフラッシュおよび無効化の操作を実行したりす
る必要がなくなる。
【0054】また、本実施形態では、例外起因命令を再
実行するにあたって、例外ハンドラのシーケンス通りに
命令を順次処理し、その中に書かれたREI命令を単に
実行すれば良いので、図12のフローチャートのよう
に、再実行する例外起因命令をコピーしたメモリ10上
の別領域のアドレス値にプログラム・カウンタ21の値
を書き換える必要がなく、また、当該別領域へのアクセ
スを行うことなく例外起因命令を再実行することができ
る。
【0055】これにより、従来に比べて極めて簡単な処
理で例外起因命令の再実行を実現することができ、例外
回復の処理速度を向上させることができるとともに、例
外ハンドラのコードサイズを小さくすることができる。
【0056】さらに、プログラム・カウンタ21の値を
再実行する命令のアドレスに書き換えていないため、R
EI命令に基づき例外起因命令の動作が完了した後は、
そのREI命令の次に記述された命令を続いて行えば良
く、元のプログラムの実行の継続性を維持することがで
きる。また、キャッシュの無効化も不要であるため、元
のプログラムを実行する際のキャッシュ性能の低下を防
止することもできる。
【0057】また、本実施形態によれば、上記REI命
令に基づき例外起因命令だけを実行する機能は、例外命
令語レジスタ51およびセレクタ23という少ないハー
ドウェア資源を追加するだけで実現することができる。
また、制御的にも、例外発生時における上記例外命令語
レジスタ51への例外起因命令の書き込み、REI命令
実行時における上記例外命令語レジスタ51からの例外
起因命令の読み出しおよび命令フェッチ部20への転送
という少ない手順を追加するだけで良い。
【0058】(第2の実施形態)図3は、第2の実施形
態による例外回復処理方法を適用したプロセッサ(情報
処理装置)の一構成例を示すブロック図である。なお、
図3において、図1に示した符号と同一の符号を付した
ものは、同一の機能を有するものであるので、これにつ
いての詳細な説明は省略する。
【0059】図3に示すように、第2の実施形態では、
図1に示す第1の実施形態で用いていた例外命令語レジ
スタ51の代わりに、例外が発生した例外起因命令の命
令アドレスを保持するための例外命令アドレスレジスタ
55を設ける。また、命令語の選択を行うセレクタ23
の代わりに、命令アドレスの選択を行うセレクタ24を
設ける。セレクタ24は、例外ハンドラの中でREI命
令が実行されるとき以外はB側を選択し、REI命令の
実行時にはA側を選択する。
【0060】本実施形態において、命令解析実行制御部
30により例外の発生が検出されたときは、例外処理制
御部32からの通知に基づいて、命令フェッチ部20が
例外起因命令の命令アドレス(例外発生時にプログラム
・カウンタ21にセットされていた値)を例外命令アド
レスレジスタ55に格納する。その後、例外処理制御部
32から供給され、プログラム・カウンタ21に新たに
セットされた例外ハンドラの命令アドレスに従い、例外
処理制御部32が例外回復処理を実行する。
【0061】また、本実施形態において、例外ハンドラ
の動作中に、例外要因の解消が終わってメモリ10から
REI命令が読み出されると、例外処理制御部32は、
セレクタ24の選択状態をB側からA側に切り替える。
これにより、例外発生時に例外命令アドレスレジスタ5
5に保持しておいた例外起因命令の命令アドレスをメモ
リ10に供給し、対応するアドレスから例外起因命令の
命令語を読み出して命令フェッチ部20に供給するよう
にする。
【0062】そして、命令フェッチ部20は、メモリ1
0から読み出された例外起因命令の命令語を命令解析実
行制御部30に供給する。これにより、命令解析実行制
御部30は、命令実行部40を制御して上記供給された
例外起因命令を実行する。そして、この例外起因命令を
実行した後は、例外処理制御部32は、セレクタ24の
選択状態をB側に戻すことにより、例外ハンドラの残り
の処理(ユーザ状態への復帰処理)を実行するようにす
る。
【0063】このように構成した第2の実施形態におい
ても、第1の実施形態と同様の効果を得ることができ
る。
【0064】(第3の実施形態)図4は、第3の実施形
態による例外回復処理方法を適用したプロセッサの一構
成例を示すブロック図である。なお、図4において、図
1に示した符号と同一の符号を付したものは、同一の機
能を有するものであるので、これについての詳細な説明
は省略する。
【0065】図4に示すように、第3の実施形態では、
図1に示す第1の実施形態で用いていた例外命令語レジ
スタ51の代わりに、例外が発生した例外起因命令の命
令語に加え、例外が発生したことにより実行が最後まで
完了しなかった実行未完了命令の命令語を保持するため
の命令語レジスタ56を設ける。
【0066】このように構成した第3の実施形態は、例
えば、図5に示すようにパイプライン動作を行っている
場合に有効である。すなわち、近年のプロセッサでは、
処理の更なる高速化を図るために、図5のように複数の
命令を同時に実行することが多い。この図5の例では、
2つの命令を同時に実行している。
【0067】このようなパイプライン動作を行った場
合、1つの命令を実行してその結果が出るまでの時間が
各命令ごとに異なっていると、例外が発生したときに、
実行が完了していない命令と実行が完了した命令の順序
がまだら状になる場合がある。図5の例では、3行目の
ロード命令(3: ld )の書き込みステージで例外が発生
したときに、4行目の減算命令(4: sub)と6行目の加
算命令(6: add)は実行を完了しているが、その間の5
行目の除算命令(5: div)は実行がまだ完了していない
状態となっている。
【0068】このような場合は、例外回復処理からの復
帰の際に、例外起因命令であるロード命令(3: ld )の
再実行に加えて、実行が未完了の除算命令(5: div)の
再実行を行った後、7行目の加算命令(7: add)から元
のプログラムの実行を再開するという手順が必要であ
る。そのために、本実施形態では、例外が発生したとき
に、例外起因命令の命令語だけでなく、実行未完了命令
の命令語も命令語レジスタ56に格納しておくようにす
る。
【0069】本実施形態における例外ハンドラの処理フ
ローは、図6に示すようになる。図6において、ステッ
プS11では、例外要因を解消する処理を行う。そし
て、例外要因が解消され、REI命令がメモリ10から
読み出されると、ステップS12で、例外発生時に命令
語レジスタ56に格納しておいた例外起因命令の命令語
をセレクタ23で選択し、この例外起因命令を実行す
る。
【0070】さらに、例外起因命令の実行後にはステッ
プS13に進み、例外発生時に上記命令語レジスタ56
に格納しておいた実行未完了命令の命令語を上記例外起
因命令に続けてセレクタ23で選択し、この実行未完了
命令を実行する。そして、ステップS14で、上記命令
語レジスタ56内にまだ処理していない実行未完了命令
の命令語が存在するか否かを判断し、存在する場合はス
テップS13に戻って同様の処理を繰り返す。上記ステ
ップS12の処理を開始してからステップS13、S1
4のループを抜けるまでは、命令フェッチ部20のセレ
クタ23は、A側を選択する。
【0071】その後、上記命令語レジスタ56内に格納
されている実行未完了命令の命令語を全て処理した場合
は、ステップS15に進み、例外発生時に復帰アドレス
レジスタ54に退避しておいた命令アドレスをもとに、
実行未完了の命令から元のプログラムの処理に復帰す
る。このとき、セレクタ23は、選択状態をB側に切り
替える。
【0072】以上説明したように、第3の実施形態によ
れば、第1の実施形態で説明した効果に加えて、例外が
発生したときに、実行が完了していない実行未完了命令
と、実行が完了した実行完了命令の順序がまだら状にな
る場合であっても、例外回復処理からの復帰時に再実行
が必要な命令だけを簡単な処理で実行することが可能と
なるというメリットを有する。
【0073】なお、この第3の実施形態では、命令語レ
ジスタ56に例外起因命令の命令語と実行未完了命令の
命令語とを格納するようにしているが、実行未完了命令
の命令語のみを格納するようにしても良い。例えば、浮
動小数点データを処理する機能を持たないプロセッサで
浮動小数点に関する演算命令を実行した場合には例外が
発生するが、その例外回復処理を行った後に例外起因命
令に戻っても、また同じ例外が発生することになる。こ
のような場合に、命令語レジスタ56に実行未完了命令
の命令語のみを格納しておけば、例外起因命令も飛ばし
て次の実行未完了命令から処理に復帰することが可能と
なる。
【0074】また、上記第3の実施形態では、命令語レ
ジスタ56に例外起因命令の命令語と実行未完了命令の
命令語とを格納するようにしているが、第2の実施形態
のように、例外起因命令の命令アドレスと実行未完了命
令の命令アドレスとを格納する命令アドレスレジスタを
命令語レジスタ56の代わりに設けるようにしても良
い。この場合は、命令語の選択を行うセレクタ23の代
わりに、命令アドレスの選択を行うセレクタ24を設け
る。
【0075】また、上記第3の実施形態において、RE
I命令に基づき例外起因命令あるいは実行未完了命令を
再実行しているときに、再実行している命令において再
び例外が発生した場合は、REI命令の例外ではなく、
REI命令により再実行している命令の例外を検出して
発生させる。この場合に、再実行している命令において
例外が発生したことを示す情報を格納するためのレジス
タを設けても良い。
【0076】なお、以上に説明した本実施形態の情報処
理装置は、計算機のCPUあるいはMPU、RAM、R
OMなどで構成されるものであり、RAMやROMに記
憶されたプログラムが動作することによって実現でき
る。したがって、計算機が上記機能を果たすように動作
させるプログラムを、例えばCD−ROMのような記録
媒体に記録し、計算機に読み込ませることによって実現
できるものである。上記プログラムを記録する記録媒体
としては、CD−ROM以外に、フロッピーディスク、
ハードディスク、磁気テープ、光磁気ディスク、不揮発
性メモリカード等を用いることができる。
【0077】また、計算機が供給されたプログラムを実
行することにより上述の実施形態の機能が実現されるだ
けでなく、そのプログラムが計算機において稼働してい
るOS(オペレーティングシステム)あるいは他のアプ
リケーションソフト等と共同して上述の実施形態の機能
が実現される場合や、供給されたプログラムの処理の全
てあるいは一部が計算機の機能拡張ボードや機能拡張ユ
ニットにより行われて上述の実施形態の機能が実現され
る場合も、かかるプログラムは本発明の実施形態に含ま
れる。
【0078】さらに、以上説明した各実施形態は、何れ
も本発明を実施するにあたっての具体化の一例を示した
ものに過ぎず、これらによって本発明の技術的範囲が限
定的に解釈されてはならないものである。すなわち、本
発明はその精神、またはその主要な特徴から逸脱するこ
となく、様々な形で実施することができる。
【0079】本発明の様々な形態をまとめると、以下の
ようになる。 (1)命令シーケンスを記憶した命令記憶手段と、上記
命令記憶手段から読み出して実行した命令で例外が発生
したときに、その例外起因命令の命令語を保持する例外
命令語保持手段と、上記命令記憶手段から読み出される
命令語と、上記例外命令語保持手段から読み出される命
令語との何れかを選択する選択手段と、上記例外起因命
令の再実行命令が供給されたときには、上記例外命令語
保持手段から読み出される上記例外起因命令の命令語を
選択するように上記選択手段を制御する制御手段とを備
えたことを特徴とする情報処理装置。 (2)上記制御手段は、上記例外起因命令の再実行命令
が供給されたとき以外は、上記命令記憶手段から読み出
される命令語を選択するように上記選択手段を制御する
ことを特徴とする上記(1)に記載の情報処理装置。 (3)上記例外起因命令の再実行命令は、上記命令記憶
手段に記憶された例外回復処理のための命令シーケンス
中に含まれることを特徴とする上記(1)に記載の情報
処理装置。
【0080】(4)命令シーケンスを記憶した命令記憶
手段と、上記命令記憶手段から読み出して実行した命令
で例外が発生したときに、その例外起因命令またはその
例外が発生したことにより実行が中断された実行未完了
命令の命令語を保持する命令語保持手段と、上記命令記
憶手段から読み出される命令語と、上記命令語保持手段
から読み出される命令語との何れかを選択する選択手段
と、上記例外起因命令の再実行命令が供給されたときに
は、上記命令語保持手段から読み出される上記例外起因
命令または上記実行未完了命令の命令語を選択するよう
に上記選択手段を制御する制御手段とを備えたことを特
徴とする情報処理装置。 (5)上記制御手段は、上記例外起因命令の再実行命令
が供給されたとき以外は、上記命令記憶手段から読み出
される命令語を選択するように上記選択手段を制御する
ことを特徴とする上記(4)に記載の情報処理装置。
【0081】(6)命令シーケンスを記憶した命令記憶
手段と、上記命令記憶手段から読み出して実行した命令
で例外が発生したときに、その例外が発生したことによ
り実行が中断された実行未完了命令の命令語を保持する
命令語保持手段と、上記命令記憶手段から読み出される
命令語と、上記命令語保持手段から読み出される命令語
との何れかを選択する選択手段と、例外起因命令の再実
行命令が供給されたときには、上記命令語保持手段から
読み出される上記実行未完了命令の命令語を選択するよ
うに上記選択手段を制御する制御手段とを備えたことを
特徴とする情報処理装置。 (7)上記制御手段は、上記例外起因命令の再実行命令
が供給されたとき以外は、上記命令記憶手段から読み出
される命令語を選択するように上記選択手段を制御する
ことを特徴とする上記(6)に記載の情報処理装置。
【0082】(8)命令シーケンスを記憶した命令記憶
手段と、上記命令記憶手段から読み出して実行した命令
で例外が発生したときに、その例外起因命令の命令アド
レスを保持する例外命令アドレス保持手段と、上記命令
記憶手段から命令語を読み出すための命令アドレスとし
て、プログラム・カウンタから読み出される命令アドレ
スと、上記例外命令アドレス保持手段から読み出される
命令アドレスとの何れかを選択する選択手段と、上記例
外起因命令の再実行命令が供給されたときには、上記例
外命令アドレス保持手段から読み出される上記例外起因
命令の命令アドレスを選択するように上記選択手段を制
御する制御手段とを備えたことを特徴とする情報処理装
置。 (9)上記制御手段は、上記例外起因命令の再実行命令
が供給されたとき以外は、上記プログラム・カウンタか
ら読み出される命令アドレスを選択するように上記選択
手段を制御することを特徴とする上記(8)に記載の情
報処理装置。 (10)上記例外起因命令の再実行命令は、上記命令記
憶手段に記憶された例外回復処理のための命令シーケン
ス中に含まれることを特徴とする上記(8)に記載の情
報処理装置。
【0083】(11)命令シーケンスを記憶した命令記
憶手段と、上記命令記憶手段から読み出して実行した命
令で例外が発生したときに、その例外起因命令またはそ
の例外が発生したことにより実行が中断された実行未完
了命令の命令アドレスを保持する命令アドレス保持手段
と、上記命令記憶手段から命令語を読み出すための命令
アドレスとして、プログラム・カウンタから読み出され
る命令アドレスと、上記命令アドレス保持手段から読み
出される命令アドレスとの何れかを選択する選択手段
と、上記例外起因命令の再実行命令が供給されたときに
は、上記命令アドレス保持手段から読み出される上記例
外起因命令または上記実行未完了命令の命令アドレスを
選択するように上記選択手段を制御する制御手段とを備
えたことを特徴とする情報処理装置。 (12)上記制御手段は、上記例外起因命令の再実行命
令が供給されたとき以外は、上記プログラム・カウンタ
から読み出される命令アドレスを選択するように上記選
択手段を制御することを特徴とする上記(11)に記載
の情報処理装置。
【0084】(13)命令シーケンスを記憶した命令記
憶手段と、上記命令記憶手段から読み出して実行した命
令で例外が発生したときに、その例外が発生したことに
より実行が中断された実行未完了命令の命令アドレスを
保持する命令アドレス保持手段と、上記命令記憶手段か
ら命令語を読み出すための命令アドレスとして、プログ
ラム・カウンタから読み出される命令アドレスと、上記
命令アドレス保持手段から読み出される命令アドレスと
の何れかを選択する選択手段と、例外起因命令の再実行
命令が供給されたときには、上記命令アドレス保持手段
から読み出される上記実行未完了命令の命令アドレスを
選択するように上記選択手段を制御する制御手段とを備
えたことを特徴とする情報処理装置。 (14)上記制御手段は、上記例外起因命令の再実行命
令が供給されたとき以外は、上記プログラム・カウンタ
から読み出される命令アドレスを選択するように上記選
択手段を制御することを特徴とする上記(13)に記載
の情報処理装置。
【0085】(15)命令記憶手段に記憶された例外回
復処理のための命令シーケンス中に例外起因命令の再実
行命令を持たせておき、上記命令記憶手段から読み出し
て実行した命令で例外が発生したときに、その例外起因
命令の命令語を保持するステップと、上記例外起因命令
の再実行命令が上記命令記憶手段から供給されたとき
に、実行する命令語として、上記例外の発生時に保持し
ておいた上記例外起因命令の命令語を選択するステップ
とを有することを特徴とする例外回復処理方法。
【0086】(16)命令記憶手段に記憶された例外回
復処理のための命令シーケンス中に例外起因命令の再実
行命令を持たせておき、上記命令記憶手段から読み出し
て実行した命令で例外が発生したときに、その例外起因
命令の命令アドレスを保持するステップと、上記例外起
因命令の再実行命令が上記命令記憶手段から供給された
ときに、上記命令記憶手段から命令語を読み出すための
命令アドレスとして、上記例外の発生時に保持しておい
た上記例外起因命令の命令アドレスを選択するステップ
とを有することを特徴とする例外回復処理方法。
【0087】(17)命令シーケンスを記憶した命令記
憶手段から読み出して実行した命令で例外が発生したと
きに、その例外起因命令の命令語をレジスタに保存する
例外命令語保存手段と、上記命令記憶手段から読み出さ
れる命令語と、上記レジスタから読み出される命令語と
の何れかを選択する選択手段と、上記例外起因命令の再
実行命令が供給されたときには、上記レジスタから読み
出される上記例外起因命令の命令語を選択するように上
記選択手段を制御する制御手段として計算機を機能させ
るためのプログラムを記録したことを特徴とする計算機
読み取り可能な記録媒体。 (18)上記制御手段は、上記例外起因命令の再実行命
令が供給されたとき以外は、上記命令記憶手段から読み
出される命令語を選択するように上記選択手段を制御す
ることを特徴とする上記(17)に記載の計算機読み取
り可能な記録媒体。
【0088】(19)命令シーケンスを記憶した命令記
憶手段から読み出して実行した命令で例外が発生したと
きに、その例外起因命令の命令アドレスをレジスタに保
存する例外命令アドレス保存手段と、上記命令記憶手段
から命令語を読み出すための命令アドレスとして、プロ
グラム・カウンタから読み出される命令アドレスと、上
記レジスタから読み出される命令アドレスとの何れかを
選択する選択手段と、上記例外起因命令の再実行命令が
供給されたときには、上記レジスタから読み出される上
記例外起因命令の命令アドレスを選択するように上記選
択手段を制御する制御手段として計算機を機能させるた
めのプログラムを記録したことを特徴とする計算機読み
取り可能な記録媒体。 (20)上記制御手段は、上記例外起因命令の再実行命
令が供給されたとき以外は、上記プログラム・カウンタ
から読み出される命令アドレスを選択するように上記選
択手段を制御することを特徴とする上記(19)に記載
の計算機読み取り可能な記録媒体。
【0089】
【発明の効果】上記のように構成した本発明によれば、
例外回復処理から元の通常の処理に復帰する際に必要な
命令再実行のための処理を、1つの再実行命令を実行す
るだけで実現することが可能となる。これにより、従
来、命令の再実行を行うために必要であったソフトウェ
アでのエミュレーションや自己改変コードによる実行な
どの複雑な処理は行わなくて済み、例外回復処理を簡単
に行うことができる。
【0090】また、本発明によれば、上述の例外回復処
理は、例外起因命令や実行未完了命令の命令語あるいは
命令アドレスを保持する保持手段と、再実行命令の実行
時にこれらの保持しておいた命令語や命令アドレスを選
択するための選択手段という少ないハードウェア資源を
追加するだけで実現することができる。
【0091】このように、本発明によれば、少しのハー
ドウェア資源を付け加えるだけで、例外回復のための命
令シーケンスを大幅に削減することができ、例外からの
回復を容易に行うことができるようになる。これによ
り、例外回復にかかる実行時間の削減(例外応答性の向
上)を図ることができるとともに、例外ハンドラのコー
ドサイズの縮小を図ることができる。
【0092】また、本発明の他の特徴によれば、例外起
因命令を再実行するにあたって、例外回復処理のシーケ
ンス通りに命令を順次処理し、その中に書かれた再実行
命令を単に実行すれば良いので、再実行する例外起因命
令が格納された別の記憶領域のアドレス値にプログラム
・カウンタの値を書き換える必要がなく、また、当該別
領域へのアクセスを行うことなく例外起因命令を再実行
することが可能となる。よって、例外回復処理を高速に
行うことができるとともに、元のプログラムを実行する
際のキャッシュ性能の低下を防止することもできる。
【図面の簡単な説明】
【図1】第1の実施形態による例外回復処理方法を適用
したプロセッサ(情報処理装置)の構成例を示すブロッ
ク図である。
【図2】本実施形態による例外起因命令の再実行の方法
を説明するフローチャートである。
【図3】第2の実施形態による例外回復処理方法を適用
したプロセッサ(情報処理装置)の構成例を示すブロッ
ク図である。
【図4】第3の実施形態による例外回復処理方法を適用
したプロセッサ(情報処理装置)の構成例を示すブロッ
ク図である。
【図5】第3の実施形態に適用可能なパイプライン動作
の例を示す図である。
【図6】プログラム順に命令が完了しない場合の第3の
実施形態による例外ハンドラの動作を示すフローチャー
トである。
【図7】従来の例外ハンドラの動作を示すフローチャー
トである。
【図8】命令シーケンスの例を示す図である。
【図9】図8の命令シーケンスをパイプライン動作させ
た場合の例を示す図である。
【図10】プログラム順に命令が完了しない場合の例外
ハンドラの動作を示すフローチャートである。
【図11】命令のエミュレーションにより単一の例外起
因命令を再実行させる従来の処理を示すフローチャート
である。
【図12】自己改変コードにより単一の例外起因命令を
再実行させる従来の処理を示すフローチャートである。
【符号の説明】
10 メモリ 20 命令フェッチ部 21 プログラム・カウンタ 22 命令レジスタ 23,24 セレクタ 30 命令解析実行制御部 31 デコーダ 32 例外処理制御部 33 実行制御部 40 命令実行部(ALU) 50 レジスタ部 51 例外命令語レジスタ 52 状態レジスタ 53 要因レジスタ 54 復帰アドレスレジスタ 55 例外命令アドレスレジスタ 56 命令語レジスタ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 11/14 310 G06F 11/14 310N (72)発明者 須賀 敦浩 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5B013 AA05 AA12 EE04 5B027 AA04 BB02 CC04 5B033 AA01 AA07 AA13 BA01 BA04 BB03 5B098 AA02 BA06 DD01 JJ02

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 命令シーケンスを記憶した命令記憶手段
    と、 上記命令記憶手段から読み出して実行した命令で例外が
    発生したときに、その例外起因命令の命令語を保持する
    例外命令語保持手段と、 上記命令記憶手段から読み出される命令語と、上記例外
    命令語保持手段から読み出される命令語との何れかを選
    択する選択手段と、 上記例外起因命令の再実行命令が供給されたときには、
    上記例外命令語保持手段から読み出される上記例外起因
    命令の命令語を選択するように上記選択手段を制御する
    制御手段とを備えたことを特徴とする情報処理装置。
  2. 【請求項2】 命令シーケンスを記憶した命令記憶手段
    と、 上記命令記憶手段から読み出して実行した命令で例外が
    発生したときに、その例外起因命令の命令アドレスを保
    持する例外命令アドレス保持手段と、 上記命令記憶手段から命令語を読み出すための命令アド
    レスとして、プログラム・カウンタから読み出される命
    令アドレスと、上記例外命令アドレス保持手段から読み
    出される命令アドレスとの何れかを選択する選択手段
    と、 上記例外起因命令の再実行命令が供給されたときには、
    上記例外命令アドレス保持手段から読み出される上記例
    外起因命令の命令アドレスを選択するように上記選択手
    段を制御する制御手段とを備えたことを特徴とする情報
    処理装置。
  3. 【請求項3】 命令記憶手段に記憶された例外回復処理
    のための命令シーケンス中に例外起因命令の再実行命令
    を持たせておき、 上記命令記憶手段から読み出して実行した命令で例外が
    発生したときに、その例外起因命令の命令語を保持する
    ステップと、 上記例外起因命令の再実行命令が上記命令記憶手段から
    供給されたときに、実行する命令語として、上記例外の
    発生時に保持しておいた上記例外起因命令の命令語を選
    択するステップとを有することを特徴とする例外回復処
    理方法。
  4. 【請求項4】 命令記憶手段に記憶された例外回復処理
    のための命令シーケンス中に例外起因命令の再実行命令
    を持たせておき、 上記命令記憶手段から読み出して実行した命令で例外が
    発生したときに、その例外起因命令の命令アドレスを保
    持するステップと、 上記例外起因命令の再実行命令が上記命令記憶手段から
    供給されたときに、上記命令記憶手段から命令語を読み
    出すための命令アドレスとして、上記例外の発生時に保
    持しておいた上記例外起因命令の命令アドレスを選択す
    るステップとを有することを特徴とする例外回復処理方
    法。
  5. 【請求項5】 命令シーケンスを記憶した命令記憶手段
    から読み出して実行した命令で例外が発生したときに、
    その例外起因命令の命令語をレジスタに保存する例外命
    令語保存手段と、 上記命令記憶手段から読み出される命令語と、上記レジ
    スタから読み出される命令語との何れかを選択する選択
    手段と、 上記例外起因命令の再実行命令が供給されたときには、
    上記レジスタから読み出される上記例外起因命令の命令
    語を選択するように上記選択手段を制御する制御手段と
    して計算機を機能させるためのプログラムを記録したこ
    とを特徴とする計算機読み取り可能な記録媒体。
  6. 【請求項6】 命令シーケンスを記憶した命令記憶手段
    から読み出して実行した命令で例外が発生したときに、
    その例外起因命令の命令アドレスをレジスタに保存する
    例外命令アドレス保存手段と、 上記命令記憶手段から命令語を読み出すための命令アド
    レスとして、プログラム・カウンタから読み出される命
    令アドレスと、上記レジスタから読み出される命令アド
    レスとの何れかを選択する選択手段と、 上記例外起因命令の再実行命令が供給されたときには、
    上記レジスタから読み出される上記例外起因命令の命令
    アドレスを選択するように上記選択手段を制御する制御
    手段として計算機を機能させるためのプログラムを記録
    したことを特徴とする計算機読み取り可能な記録媒体。
JP33607099A 1999-11-26 1999-11-26 情報処理装置、例外回復処理方法および記録媒体 Expired - Fee Related JP3766772B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP33607099A JP3766772B2 (ja) 1999-11-26 1999-11-26 情報処理装置、例外回復処理方法および記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP33607099A JP3766772B2 (ja) 1999-11-26 1999-11-26 情報処理装置、例外回復処理方法および記録媒体

Publications (2)

Publication Number Publication Date
JP2001154843A true JP2001154843A (ja) 2001-06-08
JP3766772B2 JP3766772B2 (ja) 2006-04-19

Family

ID=18295393

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33607099A Expired - Fee Related JP3766772B2 (ja) 1999-11-26 1999-11-26 情報処理装置、例外回復処理方法および記録媒体

Country Status (1)

Country Link
JP (1) JP3766772B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013246754A (ja) * 2012-05-29 2013-12-09 Mizuho Information & Research Institute Inc 取引管理システム、取引管理方法及び取引管理プログラム
JP2019003588A (ja) * 2017-06-12 2019-01-10 正仁 櫨田 Cpuチップ上のコア・ブロックの1個が動作していなかったり、コア・ブロック内のトランジスターが熱崩壊をして異常な消費電流値を示してコア・ブロックが熱破壊した場合等に、cpuのコア・ブロックの今現在の全部の状態をレジスター群に保存してcpuのコア・ブロック自体へのシステム・クロックの供給や電力供給を停止してcpu自体の発熱や消費電力を抑え、cpuの動作を元の状態に復元してプログラムを再実行する時には、外部割込みに依り、cpuのコア・ブロックにシステム・クロックを再供給してレジスター群から情報を読み込んでcpuの状態を戻して、システム・クロックに従ってプログラム・カウンターの値から、メモリー上のプログラムを再起動する方法。

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013246754A (ja) * 2012-05-29 2013-12-09 Mizuho Information & Research Institute Inc 取引管理システム、取引管理方法及び取引管理プログラム
JP2019003588A (ja) * 2017-06-12 2019-01-10 正仁 櫨田 Cpuチップ上のコア・ブロックの1個が動作していなかったり、コア・ブロック内のトランジスターが熱崩壊をして異常な消費電流値を示してコア・ブロックが熱破壊した場合等に、cpuのコア・ブロックの今現在の全部の状態をレジスター群に保存してcpuのコア・ブロック自体へのシステム・クロックの供給や電力供給を停止してcpu自体の発熱や消費電力を抑え、cpuの動作を元の状態に復元してプログラムを再実行する時には、外部割込みに依り、cpuのコア・ブロックにシステム・クロックを再供給してレジスター群から情報を読み込んでcpuの状態を戻して、システム・クロックに従ってプログラム・カウンターの値から、メモリー上のプログラムを再起動する方法。

Also Published As

Publication number Publication date
JP3766772B2 (ja) 2006-04-19

Similar Documents

Publication Publication Date Title
US8078854B2 (en) Using register rename maps to facilitate precise exception semantics
US8959277B2 (en) Facilitating gated stores without data bypass
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
US20100153776A1 (en) Using safepoints to provide precise exception semantics for a virtual machine
US20100031084A1 (en) Checkpointing in a processor that supports simultaneous speculative threading
US20070043934A1 (en) Early misprediction recovery through periodic checkpoints
JPH05173783A (ja) 命令パイプラインをドレーンさせるためのシステムおよび方法
US5574872A (en) Method and apparatus for controlling the saving of pipelines in pipelined processors during trap handling
KR100781949B1 (ko) 정보 처리 유닛 및 특정 애플리케이션용 연산 명령에 대한 예외 처리 방법
CN111133418A (zh) 在例外屏蔽更新指令之后允许未中止的事务处理
CN108920190B (zh) 用于确定从其恢复指令执行的恢复点的装置和方法
CN109416632B (zh) 用于处理数据的装置和方法
JP2007532990A (ja) ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造
JP2009506410A (ja) コンピュータ装置におけるコプロセッサ支援
EP1039376B1 (en) Sub-instruction emulation in a VLIW processor
JP2001154843A (ja) 情報処理装置、例外回復処理方法および記録媒体
JPH1196006A (ja) 情報処理装置
US9983932B2 (en) Pipeline processor and an equal model compensator method and apparatus to store the processing result
US6772294B2 (en) Method and apparatus for using a non-committing data cache to facilitate speculative execution
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
US7890739B2 (en) Method and apparatus for recovering from branch misprediction
US10996995B2 (en) Saving and restoring a transaction memory state
KR100765867B1 (ko) 계산기와 그 제어 방법
JP3748191B2 (ja) 計算機とその制御方法
JP2020525957A (ja) コンテキスト・データ管理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041112

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060130

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090203

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100203

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140203

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees