JP2876791B2 - 例外処理装置および例外処理方法 - Google Patents

例外処理装置および例外処理方法

Info

Publication number
JP2876791B2
JP2876791B2 JP1328591A JP1328591A JP2876791B2 JP 2876791 B2 JP2876791 B2 JP 2876791B2 JP 1328591 A JP1328591 A JP 1328591A JP 1328591 A JP1328591 A JP 1328591A JP 2876791 B2 JP2876791 B2 JP 2876791B2
Authority
JP
Japan
Prior art keywords
exception
instruction
address
execution
stack
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 - Fee Related
Application number
JP1328591A
Other languages
English (en)
Other versions
JPH04247523A (ja
Inventor
浩三 木村
督三 清原
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP1328591A priority Critical patent/JP2876791B2/ja
Publication of JPH04247523A publication Critical patent/JPH04247523A/ja
Application granted granted Critical
Publication of JP2876791B2 publication Critical patent/JP2876791B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、並列同時実行可能な複
数の演算処理ユニットを有するプロセッサにおける例外
処理および例外ハンドラからの復帰を制御する例外処理
装置および例外処理方法に関する。
【0002】
【従来の技術】従来の例外処理装置の例としては、MOTO
ROLA社「MC88100 RISC MICROPROCESSOR USER'S MANUAL
second editon」1.4 「EXECUTION MODEL」およびSEC
TION 6 「EXCEPTIONS」に示されている。図9はこの従
来の例外処理装置を備えたモトローラ社のマイクロプロ
セッサMC88100の実行ユニットの構成図を示すも
のである。200は、2つのパイプラインステージから
なり、同時に処理可能な命令をフェッチし解読する命令
ユニットである。201は、整数演算、論理演算、およ
びビットフィールドを処理する整数ユニットである。2
02は、アドレス計算をするステージと2段のメモリア
クセスをするステージからなるデータユニットである。
203は、5段のパイプラインステージからなる浮動小
数点加減算,比較,変換を行なう浮動小数点ユニットで
ある。204は、4つのステージで整数乗算機能を有
し、6段のパイプラインステージで浮動小数点乗算を演
算する浮動小数点ユニットである。
【0003】以上のような構成要素よりなる従来の例外
処理装置を持つマイクロプロセッサにおいては、データ
等の干渉が無い場合には、命令ユニット200で解読し
た命令を最大4個各ユニットにおいて同時に並列処理で
きる。処理は各ユニットでパイプライン処理されるた
め、通常は整数ユニット201,データユニット20
2,浮動小数点ユニット203,浮動小数点ユニット2
04の順に終了していく。たとえば、データユニット2
02で例外が発生した場合には、2組の浮動小数点ユニ
ット203,204については直ちに処理を中断させ、
ユニット内部を凍結させる。整数ユニット201につい
ては既に処理は完了しているため、続いて例外処理を行
なう。例外ハンドラによってデータアクセス例外に関す
る例外原因を除去した後、例外からの復帰命令により元
の処理シーケンスに戻り後続する命令を実行する。同時
に復帰命令によって、浮動小数点ユニット203,20
4の凍結は解除になり、中断したところから継続実行す
る。また、整数ユニット201で例外が発生した場合に
は、2組の浮動小数点ユニット203,204について
は直ちに処理を中断させ、ユニット内部を凍結させる。
外部バスアクセスを伴うデータユニット202について
は処理完了を待ち、その後例外処理を行なう。データユ
ニット202での例外と同様、例外ハンドラによって整
数処理例外に関する例外原因を除去した後、例外からの
復帰命令により元の処理シーケンスに戻り後続する命令
を実行する。復帰命令によって、浮動小数点ユニット2
03,204の凍結は解除になり、中断したところから
継続実行する。
【0004】この例外発生時における浮動小数点処理の
即時中断によって、並列同時実行する4命令のうちの先
行する命令での例外発生時において、後続命令の例外発
生による多重例外を避けることができる。そして、中断
後の状態凍結および復帰後の継続実行によって、浮動小
数点ユニット203,204内部の資源の外部への退
避、復元を削減することができる。
【0005】また、このマイクロプロセッサMC881
00は、命令終了ごとに内部状態をシャドーレジスタと
呼ばれる制御レジスタにコピーする。例外発生時にはシ
ャドーレジスタの更新を凍結し、例外処理ハンドラは、
シャドーレジスタの内容より例外要因の除去を行う。な
お、プロセッサは、例外発生時、自動的にシャドーレジ
スタの内容をスタックに退避しない。
【0006】ところで、上述したように、整数ユニット
201で最初に例外が発生した場合には、継続実行する
データユニット202での例外発生により多重例外の可
能性があるが、データアクセス例外発生を示すフラグを
独立に設けることにより、例外ハンドラに多重例外を伝
え例外処理を任せることが可能になる。
【0007】
【発明が解決しようとする課題】しかしながら上記のよ
うな構成では、以下のような問題点を有している。 (1)例外発生時における浮動小数点処理の即時中断お
よび中断後の状態凍結によって、多重例外発生を避け、
ユニット内部の資源の外部への退避、復元によるオーバ
ーヘッドを削減することができるが、例外要因を除去す
る例外ハンドラ内では浮動小数点ユニット203,204を使
用できない。今後、処理ユニットやユニットのパイプラ
イン構成の多重化、多様化を考えると、ハンドラ内での
使用禁止の制限は大きな障害となる。たとえば、マイク
ロプロセッサMC88100の整数ユニット201が複
数の専用ユニット(整数演算ユニット,論理演算ユニッ
ト,ビット操作ユニットなど)に細分化された場合に
は、各専用ユニットをハンドラ内で使用禁止にできない
ことは明かである。 (2)(1)の制限を解消するために、処理を中断した
ユニットの内部状態をシャドーレジスタに退避する方法
もあるが、途中段のパイプラインステージにおける管理
すべき内部資源は多く、ハードウェア量の増加を招く。
また、内部資源を外部に退避する方法もあるが、上述の
ように内部資源は多く、バスアクセスによるオーバーヘ
ッドの増大を引き起こす。 (3)(2)の問題を解決するために、処理を中断した
ユニットについては、例外から通常シーケンスへの復帰
時に、再度実行する方法がある。MC88100では、
通常のシーケンスに復帰するために、再実行する命令の
先頭アドレスをシャドーレジスタに退避しているので、
このアドレスを利用する方法もあるが、連続する命令の
うち一部の命令だけ再実行する場合には適用できない。
たとえば、命令NまでとN+3は既に実行を完了、N+
1とN+2は処理が中断、復帰後はN+1とN+2を処
理し、続いてN+4以降を処理する場合である。 (4)シャドーレジスタに内部資源を退避するために、
同時に例外が発生する多重例外への対応が困難である。
また、例外ハンドラ内での例外発生(例外のネスティン
グ)に対応するためには、ハンドラ自身が例外発生より
以前にシャドーレジスタをスタックに退避する必要があ
る。ハンドラによる例外要因除去において内部資源を高
速アクセスできるようシャドーレジスタを設けたにも関
わらず、例外のネスティングをサポートするためには結
局スタックを生成しなければならない。
【0008】本発明はこのような点を改善するために、
並列同時実行可能な複数の実行ユニットを有するプロセ
ッサにおいて、ある実行ユニットで例外が発生した場合
に、その他の実行ユニットにおける処理を中断し、すべ
ての中断した命令のアドレスをスタックに格納する。そ
して例外ハンドラによる例外要因除去後には、スタック
上の未終了命令のアドレスより未終了命令をフェッチ
し、順次、未終了命令を再実行する。未終了命令を再実
行するときに例外が発生した場合には、最初に生成した
スタックに続いて、新たに発生した例外情報をスタック
に格納する例外処理装置および例外処理方法を提供する
ことを目的とする。
【0009】
【課題を解決するための手段】上記の目的を達成するた
めに、請求項1〜6記載の本発明の例外処理装置および
例外処理方法は、並列実行可能な演算ユニットで実行さ
れる命令のアドレスを格納する複数の命令アドレスレジ
スタと、例外発生を検出する例外発生認識回路と、演算
ユニットに対しての命令の実行を起動しまたは中断する
ことを指令し、そして命令の実行終了を検出する実行制
御回路と、例外ハンドラが必要とする例外に関する情報
を生成する例外情報生成回路と、演算ユニットでの実行
終了後に実行される命令を格納する次命令アドレスレジ
スタと、例外ハンドラと例外ハンドラから例外発生前シ
ーケンスへの復帰に必要な情報をスタックに格納する例
外制御回路とを備えた構成となっている。
【0010】また請求項7および8記載の本発明の例外
処理装置は、並列実行可能な演算ユニットで実行される
命令のアドレスを格納する複数の命令アドレスレジスタ
と、例外発生を検出する例外発生認識回路と、演算ユニ
ットに対して実行する命令を最適に割り付けかつ命令の
実行を起動することを指令し、そして実行終了を検出す
る実行制御回路と、再実行すべき命令の個数を格納する
カウンタと、命令をフェッチする命令フェッチ回路と、
例外ハンドラからの復帰を制御するリターン制御回路と
を備えた構成となっている。
【0011】さらに請求項9および10記載の本発明の
例外処理装置および例外処理方法は、並列実行可能な演
算ユニットで実行される命令のアドレスを格納する複数
の命令アドレスレジスタと、例外発生を検出する例外発
生認識回路と、演算ユニットに対して命令を最適に割り
付けかつ命令の実行を起動させ、または中断を指令し、
そして命令の実行終了を検出する実行制御回路と、例外
ハンドラが必要とする例外に関する情報を生成する例外
情報生成回路と、例外ハンドラと例外ハンドラからの復
帰に必要な情報をスタックに格納する例外制御回路と、
再実行すべき命令の個数を格納するカウンタと、命令を
フェッチする命令フェッチ回路と、例外発生前シーケン
スへの復帰を制御するリターン制御回路とを備えた構成
となっている。
【0012】
【作用】本発明は上記の構成により、並列同時実行可能
な複数の実行ユニットを有するプロセッサにおいて、あ
る実行ユニットで例外が発生した場合に、その他の実行
ユニットにおける処理を中断し、すべての中断した命令
のアドレスをスタックに格納することにより、多重例外
の発生を禁止でき設計の複雑さおよびハードウェア量を
抑えることができる。また、例外発生時に処理を中断す
ることより、例外時の高速なレスポンスを得ることがで
きる。
【0013】そして例外ハンドラによる例外要因除去後
には、スタック上の未終了命令のアドレスより未終了命
令をフェッチし、順次、未終了命令を再実行することよ
り、並列同時実行可能な演算ユニットを持つプロセッサ
においても、例外発生に対して整合性を保証できる例外
処理が行え、システム全体としての信頼性も向上でき
る。また、例外処理後、中断された命令を命令の先頭か
ら再実行するため、プロセッサ内の資源をすべて例外処
理ハンドラに解放でき、バスアクセスによるオーバーヘ
ッドの増化を抑えることができる。
【0014】未終了命令を再実行するときに例外が発生
した場合、最初に生成したスタックに続いて、新たに発
生した例外情報をプッシュすることにより、例外処理の
整合性が保証できる。また、例外処理ハンドラや例外処
理からのリターンを行なう命令に対して、最初発生した
例外が生成するスタックと全く同じインタフェースを実
現できる。そして、最初の例外によって生成されたスタ
ックを使用することによって、新たにスタックに積む回
数を抑えることができる。
【0015】
【実施例】図1は本発明の例外処理装置の構成図であ
る。図1において、1は4つの命令を同時に解読し実行
ユニットに使用されるマイクロ命令を生成する解読ユニ
ットである。2は解読ユニット1が生成した4つのマイ
クロ命令のうち4つの実行ユニット30〜33で同時に
実行可能なマイクロ命令のみを取り出し、それぞれ最適
な実行ユニットに発行する実行制御ユニット(実行制御
回路)である。同時に、実行ユニット30〜33内での処理
が終了したか否かの管理も行なう。4は例外発生時に例
外処理を行なう例外処理ユニットである。5は、例外ハ
ンドラから通常シーケンスに戻る命令(以後、RFE:Retu
rn From Exceptionと略)を制御するRFE制御回路であ
る。6は例外処理ユニット4やRFE制御回路5からの
要求によりメモリとのアクセスを行なうバス・インタフ
ェース・ユニット(以後、BIUと略)である。10〜
13は解読ユニット1で解読中の4つの命令に対応する
アドレスを格納するPCD_A,PCD_B,PCD_
C,PCD_Dである。次命令アドレスレジスタとして
PCD_Aには一番に実行する命令のアドレスを格納す
る(通常、最も小さいアドレスになる)。20〜23は
実行ユニット_A30〜_D33で実行中の命令のアド
レスを格納する命令アドレスレジスタであるPCX_
A,PCX_B,PCX_C,PCX_Dである。24
はプロセッサの状態を格納したプロセッサ・ステータス
・レジスタ(以後、PSR:Processor StatusRegisterと
略)である。30〜33は実行制御ユニット2で割り当
てられたマイクロ命令を実行する実行ユニット(演算ユ
ニット)_A〜_Dである。40は実行ユニット_A3
0〜_D33の状態を監視し例外発生を検出する例外発
生認識回路である。41は例外発生認識回路40より発
生した例外に関する情報を受け取り、発生した例外を特
定する例外解析回路である。42は例外解析回路41で
特定した例外の種類に応じて、ソフトウエアである例外
処理ハンドラに伝える例外情報を生成する例外情報生成
回路である。43は例外発生時に作成するスタックの管
理を行なう例外制御回路である。50はスタック上の値
を格納し、かつ0検出の可能なカウンタである。図2は
本発明である例外処理装置を中心として例外発生時に動
作する例外処理フロー図である。図3はRFE命令の処
理フロー図である。図4はRFE命令で例外が発生した
ときの処理フロー図である。
【0016】以上のように構成された本実施例の例外処
理装置および例外処理方法について、以下図5に示すプ
ログラムの説明図と、図6に示す実行制御ユニット2と
実行ユニット_A30〜_D33の詳細な構成図と、図
7および図8に示すメモリ上のスタックの説明図とを併
用して本実施例の動作を説明する。図5は図1に示した
例外処理装置上で処理させるプログラムの一部で左から
命令のアドレス、命令、コメントの順に記述してある。
実施例の動作を理解しやすくするために命令は1バイト
単位にしてある。命令の動作については簡単にコメント
を示している。図6は図5のプログラムを図1の例外処
理装置上で処理させた時点での実行制御ユニット2と実
行ユニット_A30〜_D33の動作を示している。P
CX_A20〜PCX_D23にはそれぞれ対応する実
行ユニット_A30〜実行ユニット_D33で実行中の
命令アドレス103,100,101,102が格納さ
れている。実施例の動作を理解し易くするため、図6に
示したように、実行ユニットについては処理する演算の
種類とパイプラインのステージ数を変えてある(非均質
型)。実行ユニット_A30はパイプラインステージ1
段で構成され、整数・論理演算を処理する。実行ユニッ
ト_A31はパイプラインステージ3段で構成され、ロ
ード・ストアを処理する。実行ユニット_A32はパイ
プラインステージ5段で構成され、乗算を処理する。実
行ユニット_A33はパイプラインステージ5段で構成
され、除算を処理する。図7は図5のプログラムを実行
中、アドレス100の命令で例外が発生した場合に例外
処理で生成されるスタックを示している。このスタック
は図2に示された例外処理フローに基づき作成される。
図8は例外ハンドラの最後で通常シーケンスに制御を戻
すためのRFE命令の途中で例外が発生した後に生成さ
れるスタックである。この例外は図7に示すスタックに
おいて上方から5段目までポップした状態で発生し、図
4に示す例外処理フローによって図8に示すスタックが
生成される。
【0017】最初に、例外発生から例外ハンドラへ制御
を移すまでを、図5のプログラムを実行中に命令100
がデータアクセス例外を発生する例を用いて説明する。
例外発生認識から例外ハンドラへの分岐に関しては図2
の処理フローに示し、生成されるスタックについては図
7に示している。 (1)解読ユニット1でプログラムの一部である図5の
4命令(アドレスが100〜103)を解読し、実行ユ
ニットで使用されるマイクロ命令を生成する。同時に対
応する解読中の命令アドレスを格納するPCD_A10
〜PCD_D13には以下のようにアドレスが格納され
る。
【0018】PCD_A10=100,PCD_B11
=101,PCD_C12=102,PCD_D13=
103 (2)実行制御ユニット2は命令間のデータ依存関係の
有無、および実行ユニットへの割り付けが可能か否かを
調べる。100〜103の命令間には依存関係がなく同
時並列実行できることから解読ユニット1から4つのマ
イクロ命令を取り出し、それぞれ対応する実行ユニット
30〜33に割り付ける。PSR24は命令実行の結
果、およびプロセッサの状態・モードなどを反映する。 (3)実行ユニット30〜33の構成、および命令の割
り付け状態は図6に示されている。本実施例では説明の
都合上4つの実行ユニット30〜33は非均質型にして
ある。実行ユニット_A30には整数演算命令103、
実行ユニット_B31にはロード命令100、実行ユニ
ット_C32には乗算命令101、実行ユニット_D3
3には除算命令102を割り付ける。実行制御ユニット
2内のPCX_A20〜PCX_D23には実行ユニッ
トで実行中の命令がそれぞれ格納される。
【0019】PCX_A20=103,PCX_B21
=100,PCX_C22=101,PCX_D23=
102 (4)実行ユニット_B31で実行中のロード命令10
0でデータアクセス例外が発生したとする。 (5)例外発生認識回路40は常時実行ユニット_A30
〜実行ユニット_D33を監視しており、例外発生を検
出する。例外発生認識回路40は、例外発生を実行制御
ユニット2に伝え、まだ処理が未終了である実行ユニッ
ト_C32,実行ユニット_D33を中断させる。(未
終了命令のアドレスは101と102である)同時に、
例外の原因となった命令のアドレスや命令解読状態など
を保持するために解読ユニット1内のPCD_A10〜
PCD_D13および実行制御ユニット2内のPCX_
A20〜PCX_D23,PSR24を凍結させる。 (6)例外解析回路41は、例外発生認識回路40の結
果より例外の種類などを解析し、例外情報生成回路42
に伝える。 (7)例外情報生成回路42は、スタックに格納して例
外ハンドラに通知するための情報(例外の種類など)お
よび例外ハンドラの先頭アドレスを生成する。 (8)例外制御回路43は、実行制御ユニット2より中
断により未終了となった命令とその命令数を確認する。 (9)例外制御回路43は、例外ハンドラから通常シー
ケンスに制御を戻すために、リターンアドレスとしてP
CD_A10をスタックにプッシュする。スタックへの
プッシュ、ポップ動作には、スタックポインタの操作や
BIU(バス・インタフェース・ユニット)6の制御が
含まれるが、本実施例では特に関係しないため詳細な説
明は加えない。図7のスタックにおいて、アドレス10
4が積まれたところである。 (10)例外制御回路43は、例外ハンドラから通常シ
ーケンスに制御を戻すためのRFE命令で、未終了であ
る命令を処理するために、未終了命令アドレスとしてP
CX_D23(102),PCX_C22(101)を
スタックにプッシュする。図7のスタックにおいて、ア
ドレス102、101が積まれたところである。 (11)例外制御回路43は、例外ハンドラから通常シ
ーケンスに制御を戻すためのRFE命令に未終了である
命令の数を通知するために、未終了の命令数として
“2”をスタックにプッシュする。図7のスタックにお
いて、命令数“2”が積まれたところである。 (12)例外制御回路43は、例外ハンドラに例外除去
または例外の後処理に対する情報として例外起因命令の
アドレス100をスタックにプッシュする。図7のスタ
ックにおいて、アドレス100が積まれたところであ
る。 (13)例外制御回路43は、例外ハンドラに例外除去
または例外の後処理に対する情報として、例外情報生成
回路42で生成した例外に関する情報(例外の種類等:
データアクセス例外)をスタックにプッシュする。図7
のスタックにおいて、例外の種類が積まれたところであ
る。 (14)例外ハンドラから通常シーケンスに制御を戻す
ために内部資源を例外処理前に復元する必要があり、例
外制御回路43は、プロセッサ・ステータス・レジスタ
PSR24をスタックにプッシュする。生成すべきスタ
ックは完成し、図7に示したスタックの図のようにな
る。 (15)例外処理ユニット4は、例外除去などを行なう
例外ハンドラへ制御を移すために、例外情報生成回路4
2で作成された例外ハンドラの先頭アドレスへ分岐す
る。実際の分岐動作はアドレスを基に分岐先命令のフェ
ッチ動作などを含むが、本実施例では本発明のポイント
ではないので詳細な説明、図は用意しない。
【0020】つぎに、例外ハンドラから通常シーケンス
へ制御を戻すRFE命令について説明する。RFE命令
の主な機能は、1)資源を例外処理前の状態に復元す
る、2)スタックの解放、3)未終了命令の実行、4)
通常シーケンスへのリターンである。例外ハンドラから
通常シーケンスへのリターン動作に関しては図3の処理
フローに示し、解放するスタックの初期状態は図7にな
る。 (21)RFE制御回路5は、プロセッサの内部資源を
例外処理前に復元するため、スタック・トップの内容を
ポップしプロセッサ・ステータス・レジスタPSR24
に格納する。図7に示したスタックについては、例外情
報(データアクセス例外)を格納したところがスタック
・トップになる。 (22)例外ハンドラから通常シーケンスへのリターン
時には、例外情報や例外起因命令などは不要のため、ス
タックよりポップのみ行う。 (23)RFE制御回路5は、未終了である命令の数を
認識するために、スタックから未終了の命令数として
“2”をポップし、カウンタ50に値“2”をセットす
る。図7に示したスタックについては、未終了の命令ア
ドレス101を格納したところがスタック・トップにな
る。 (24)RFE制御回路5は、カウンタの内容を“0”
と比較することにより、未終了命令の有無を判断する。
未終了命令が無い場合には即座に通常シーケンスへ制御
を戻す。((30)以降の動作を続いて行なう)本実施
例では、2つの未終了命令が存在するので、スタック上
の未終了命令がなくなるまで以下の動作を行なう。カウ
ンタの内容との“0”比較については本発明のポイント
ではないので詳細な説明は省略する。 (25)RFE制御回路5は、未終了命令を再実行する
ために、まずスタック上の未終了命令のアドレスをポッ
プする。図7に示したスタックについては、未終了の命
令アドレス102を格納したところがスタック・トップ
になる。 (26)RFE制御回路5は、次に読み込んだ未終了命
令のアドレスを用いて命令をフェッチする。そして、フ
ェッチした命令と、アドレスを解読ユニット1に転送す
る。 (27)解読ユニット1は転送された命令を解読し、マ
イクロ命令を生成する。実行制御ユニット2は、マイク
ロ命令を適当な実行処理ユニットに割り付け、処理を行
なう。この場合、再実行する命令は乗算命令なので実行
ユニット_C32に割り付けられる。命令の実行につい
ては本発明のポイントではないので詳細な説明は省略す
る。 (28)1つ命令を再実行したのでカウンタから1を引
く。 (29)乗算命令が正常終了した場合には、続いて未終
了命令(102)についても(24)〜(28)の動作
を行なう。 (30)RFE制御回路5は、カウンタの内容が“0”す
なわち終了命令をすべて正常に再実行させたので、通常
シーケンスへ制御を戻す。 (31)RFE制御回路5は、例外ハンドラから通常シ
ーケンスに制御を移すため、スタック上のリターン命令
のアドレスをポップする。そしてこのアドレスに分岐し
て制御を戻す。以上で図7に示したスタックについて
は、すべて解放される。分岐動作については本発明のポ
イントではないので詳細な説明は省略する。
【0021】最後に、例外ハンドラから通常シーケンス
へ制御を戻すRFE命令について、未終了の命令で再度
例外が発生した場合を説明する。例外が発生した場合に
は、RFE命令によって途中まで解放されたスタックを
もう一度生成し、例外ハンドラに制御を移す。再度例外
発生した場合の例外処理動作に関しては図4の処理フロ
ーに示し、生成するスタックは図8に示す。
【0022】RFE命令の動作は(21)〜(28)に
ついては同じである。 (41)乗算命令でオーバーフローが発生し、RFE命
令の処理を中断し、図4に示された例外処理が行なわれ
る。図7のスタックについてはアドレス102がスタッ
ク・トップになるまで解放されている。例外処理時に
は、このスタック上に再度生成すること、および途中ま
でRFE命令が処理されていることより、図4の処理フ
ローは図2の処理フローと以下の点で異なる。 1)リターンアドレスは、ポップしておらずスタック上
に存在するため、スタックにプッシュしない。 2)スタックにプッシュする未終了の命令の個数は、カ
ウンタ50の内容を用いる。 (42)例外発生認識回路40は常時実行ユニットを監
視しており、例外発生を検出する。例外の原因となった
命令のアドレスや命令解読状態などを保持するために解
読ユニット1内のPCD_A10〜PCD_D13およ
び実行制御ユニット2内のPCX_A20〜PCX_D
23、PSR24を凍結させる。実際には1命令しか実
行していないのですべてのPCD10〜13、PCX2
0〜23を凍結する必要はない。 (43)例外解析回路41は、例外発生認識回路40の
結果より例外の種類などを解析し、例外情報生成回路4
2に伝える。 (44)例外情報生成回路42は、スタックに格納して
例外ハンドラに通知するための情報(例外の種類など)
および例外ハンドラのアドレスを生成する。 (45)例外制御回路43は、実行制御ユニット2より
中断により未終了となった命令とその命令数を確認す
る。実際には1命令しか実行していないので確認する必
要はない。 (46)例外制御回路43は、例外ハンドラから通常シ
ーケンスに制御を戻すためのRFE命令で、未終了命令
を処理するために、未終了命令アドレスをスタックにプ
ッシュする。実際には1命令しか実行していないため、
未終了命令は有り得ず、スタックには何もプッシュしな
い。 (47)例外制御回路43は、例外ハンドラから通常シ
ーケンスに制御を戻すためのRFE命令に未終了である
命令の数を通知するために、カウンタ50の内容“1”
をスタックにプッシュする。図8のスタックにおいて、
命令数“1”が積まれたところである。 (48)例外制御回路43は、例外ハンドラに例外除去
または例外の後処理に対する情報として例外起因命令の
アドレス101をスタックにプッシュする。図8のスタ
ックにおいて、アドレス101が積まれたところであ
る。 (49)例外制御回路43は、例外ハンドラに例外除去
または例外の後処理に対する情報として、例外情報生成
回路42で生成した例外に関する情報(例外の種類等:
オーバーフロー例外)をスタックにプッシュする。図8
のスタックにおいて、例外の種類が積まれたところであ
る。 (50)例外ハンドラから通常シーケンスに制御を戻す
ために内部資源を例外処理前に復元する必要があり、例
外制御回路43は、プロセッサ・ステータス・レジスタ
PSR24をスタックにプッシュする。生成すべきスタ
ックは完成し、図8に示したスタックの図のようにな
る。 (51)例外処理装置は、例外除去などを行なう例外ハ
ンドラへ制御を移すために、例外情報生成回路42で作成
された例外ハンドラの先頭アドレスへ分岐する。
【0023】以上のように本実施例によれば、並列同時
実行可能な複数の実行ユニットを有するプロセッサにお
いて、ある実行ユニットで例外が発生した場合に、その
他の実行ユニットにおける処理を中断し、すべての中断
した命令のアドレスをスタックに格納することにより、
多重例外の発生を禁止でき設計の複雑さおよびハードウ
ェア量を抑えることができる。また、例外発生時に処理
を中断することより、例外時の高速なレスポンスを得る
ことができる。
【0024】そして例外ハンドラによる例外要因除去後
には、スタック上の未終了命令のアドレスより未終了命
令をフェッチし、順次、未終了命令を再実行することよ
り、並列同時実行可能な演算ユニットを持つプロセッサ
においても、例外発生に対して整合性を保証できる例外
処理が行え、システム全体としての信頼性も向上でき
る。また、例外処理後、中断された命令を命令の先頭か
ら再実行するため、プロセッサ内の資源をすべて例外処
理ハンドラに解放でき、バスアクセスによるオーバーヘ
ッドの増化を抑えることができる。
【0025】未終了命令を再実行するときに例外が発生
した場合、最初に生成したスタックに続いて、新たに発
生した例外情報をプッシュすることにより、例外処理の
整合性が保証できる。また、例外処理ハンドラや例外処
理からのリターンを行なう命令に対して、最初発生した
例外が生成するスタックと全く同じインタフェース実現
できる。そして、最初の例外によって生成されたスタッ
クを使用することによって、新たにスタックに積む回数
を抑えることができる。
【0026】なお、本実施例において、例外情報生成回
路42で生成しスタックにプッシュする例外情報は例外
の種類だけとしたが、そのほかの状態等を生成、プッシ
ュしてもかまわない。例外ハンドラへのアドレスは例外
情報生成回路42で生成するようになっているが、例外
ハンドラのコーリングシーケンスは自由である。未実行
命令のアドレスをスタックにプッシュする順番は、デバ
ッグ等を考えると、アドレス順が都合よいが、どちらに
しても同時に実行できると判断された命令であるので、
どちらを先にプッシュしてもかまわない。本実施例では
説明の都合上、4個、かつ非均質型の実行ユニット30
〜33を用いたが、4個以外や均質型であっても同じ効
果が得られる。RFE制御回路5内でのカウンタ50の
制御は、均質型の実行ユニットを採用した場合には実行
ユニットで行なってもよい。本実施例で用いた命令は説
明の単純化のために1バイトの固定長命令にしたが、命
令長および可変長・固定長によって効果が変わることは
ない。実行ユニット30〜33はマイクロ命令を採用し
ているが、マクロ命令より直接制御してもかまわない。
【0027】また、上記のように本実施例では実行ユニ
ットは非均質型で、かつロード命令において例外が発生
した場合について解説しているため、例外発生時にバス
アクセスが発生することはない。しかし、実行ユニット
が均質型でかつ例外が発生する場合、また、実行ユニッ
トが非均質でもロード命令以外で例外が発生する場合に
は、例外発生時にバスアクセスが行なわれている可能性
がある。この場合には、例外発生認識装置40は、バス
アクセス終了後に実行ユニットの処理を中断させてもよ
い。(通常は、本制御方式が最も簡単である。)
【0028】
【発明の効果】以上説明したように、本発明によれば、
以下のようなメリットが得られ、その実用的効果は大き
い。
【0029】ある1つの実行ユニットで例外が発生した
場合に、その他の実行ユニットにおける処理を中断し、
すべての中断した命令のアドレスをスタックに格納する
ことにより、多重例外の発生を禁止でき設計の複雑さお
よびハードウェア量を抑えることができる。また、例外
発生時に処理を中断することより、例外時の高速なレス
ポンスを得ることができる。
【0030】そして例外ハンドラからのリターン時に
は、すべての未終了命令を再実行することより、並列同
時実行可能な演算ユニットを持つプロセッサにおいて
も、例外発生に対して整合性を保証できる例外処理が行
え、システム全体としての信頼性も向上できる。また、
例外処理後、中断された命令を命令の先頭から再実行す
るため、プロセッサ内の資源をすべて例外処理ハンドラ
に解放でき、バスアクセスによるオーバーヘッドの増化
を抑えることができる。
【0031】未終了命令を再実行するときに例外が発生
した場合、新たに発生した例外情報をプッシュすること
により、例外処理の整合性が保証でき、また、例外処理
ハンドラや例外処理からのリターンを行なう命令に対し
て、最初発生した例外が生成するスタックと全く同じイ
ンタフェースを実現できる。同様に、最初の例外によっ
て生成されたスタックを使用することによって、新たに
スタックに積む回数を抑えることができる。
【図面の簡単な説明】
【図1】本発明の一実施例の例外処理装置の構成図
【図2】同じく例外処理動作のフロー図
【図3】同じく例外ハンドラから通常シーケンスへ戻る
ときの処理フロー図
【図4】同じくRFE命令実行中にで例外が発生したと
きの処理フロー図
【図5】同じくプログラムの説明図
【図6】同じく実行制御ユニット2と実行ユニット_A
30〜_D33の詳細な構成図
【図7】同じくメモリ上のスタックの説明図
【図8】同じくメモリ上のスタックの説明図
【図9】従来例の例外処理装置を備えたモトローラ社の
マイクロプロセッサMC88100の実行ユニットの構
成図
【符号の説明】
2 実行制御ユニット(実行制御回路) 4 例外処理ユニット 5 RFE制御回路 10 次命令アドレスレジスタPCD_A 20 命令アドレスレジスタPCX_A 21 命令アドレスレジスタPCX_B 22 命令アドレスレジスタPCX_C 23 命令アドレスレジスタPCX_D 30 実行(演算)ユニット_A 31 実行(演算)ユニット_B 32 実行(演算)ユニット_C 33 実行(演算)ユニット_D 40 例外発生認識回路 41 例外解析回路 42 例外情報生成回路 43 例外制御回路 50 カウンタ

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】並列同時実行可能な複数の演算ユニット
    と、 前記演算ユニットと対応して前記演算ユニットで実行さ
    れる命令のアドレスを格納する複数の命令アドレスレジ
    スタと、 前記複数の演算ユニットの状態を監視し例外発生を検出
    する例外発生認識回路と、 前記演算ユニットに対しての命令の実行を起動しまたは
    中断することを指令し、そして前記演算ユニットの状態
    を監視し命令の実行終了を検出する実行制御回路と、 例外要因除去または例外後処理を行う例外ハンドラが必
    要とする例外に関する情報を生成する例外情報生成回路
    と、 前記演算ユニットでの実行終了後に実行される命令を格
    納する次命令アドレスレジスタと、 前記例外ハンドラに必要な情報および前記例外ハンドラ
    から例外発生前シーケンスヘの復帰に必要な情報をスタ
    ックに格納する例外制御回路とを備え、 前記例外発生認識回路が前記演算ユニットの例外を検出
    した場合において、 前記実行制御回路は命令の実行が終了していない前記演
    算ユニットの動作を中断しかつ前記命令アドレスレジス
    タと前記次命令アドレスレジスタの更新を凍結させるも
    のであり、 前記例外情報生成回路は発生した例外に基づき前記例外
    ハンドラが必要とする例外情報を生成するものであり、 前記例外制御回路は前記次命令アドレスレジスタに格納
    されている次に実行されるべき命令のアドレスと、 前記命令アドレスレジスタに格納され前記演算ユニット
    で実行を中断された命令のアドレスと、 命令の実行を中断した前記演算ユニットの個数と、 前記命令アドレスレジスタに格納され前記演算ユニット
    で例外を起こした命令のアドレスと、 前記例外情報生成回路が生成し前記例外ハンドラが必要
    とする例外情報とをスタックにプッシュするものである
    例外処理装置。
  2. 【請求項2】前記例外発生認識回路が前記演算ユニット
    の例外を検出した場合において、 実行制御回路は命令実行が終了していない演算ユニット
    のうち、 バスアクセスを持たない命令については動作を中断さ
    せ、 バスアクセスをもつ命令についてはバスアクセス期間以
    外に動作を中断させるものである請求項1記載の例外処
    理装置。
  3. 【請求項3】前記例外制御回路は次命令アドレスレジス
    タに格納されている次に実行されるべき命令のアドレス
    と、 命令アドレスレジスタに格納され演算ユニットで実行を
    中断された命令のアドレス、 および例外を発生した命令のアドレスと、 命令の実行を中断した前記演算ユニットの個数に1を加
    算した値と、 命令アドレスレジスタに格納され演算ユニットで例外を
    起こした命令のアドレスと、 例外情報生成回路が生成し例外ハンドラが必要とする例
    外情報とをスタックにプッシュするものである請求項1
    記載の例外処理装置。
  4. 【請求項4】並列同時実行可能な演算ユニットの例外を
    桧出した場合には、命令の実行が終了していない前記演
    算ユニットの動作を中断し、 前記演算ユニットと対応して前記演算ユニットで実行さ
    れる命令のアドレスを格納する複数の命令アドレスレジ
    スタと前記演算ユニットでの実行終了後に実行される命
    令を格納する次命令アドレスレジスタの更新を凍結さ
    せ、 発生した例外に基づき例外ハンドラが必要とする例外情
    報を生成し、 前記次命令アドレスレジスタに格納されている次に実行
    されるべき命令のアドレスと、前記命令アドレスレジス
    タに格納され前記演算ユニットで実行を中断された命令
    のアドレスと、命令の実行を中断した前記演算ユニット
    の個数と、前記命令アドレスレジスタに格納され前記演
    算ユニットで例外を起こした命令のアドレスと、前記例
    外ハンドラが必要とする例外情報とをスタックにプッシ
    ュするように処理する例外処理方法。
  5. 【請求項5】演算ユニットの例外を揆出した場合には、
    命令実行が終了していない演算ユニットのうち、バスア
    クセスを持たない命令については動作を中断させ、バス
    アクセスをもつ命令についてはバスアクセス期間以外に
    動作を中断させる請求項4記載の例外処理方法。
  6. 【請求項6】次命令アドレスレジスタに格納されでいる
    次に実行されるべき命令のアドレスと、命令アドレスレ
    ジスタに格納され演算ユニットで実行を中断された命令
    のアドレスおよび例外を発生した命令のアドレスと、命
    令の実行を中断した前記演算ユニットの個数に1を加算
    した値と、命令アドレスレジスタに格納され演算ユニッ
    トで例外を起こした命令のアドレスと、例外ハンドラが
    必要とする例外情報とをスタックにプッシュする請求項
    4記載の例外処理方法。
  7. 【請求項7】並列同時実行可能な複数の演算ユニット
    と、 前記演算ユニットと対応して前記演算ユニットで実行さ
    れる命令のアドレスを格納する複数の命令アドレスレジ
    スタと、 前記複数の演算ユニットの状態を監視し例外発生を検出
    する例外発生認識回路と、 前記演算ユニットに対して実行する命令を最適に割り付
    けかつ命令の実行を起動することを指令し、そして前記
    演算ユニットの状態を監視し命令の実行終了を検出する
    実行制御回路と、 再実行すべき命令の個数を格納するカウンタと、 与えられるアドレスより対応の命令をフェッチする命令
    フェッチ回路と、 例外ハンドラから例外発生前シーケンスヘの復帰を制御
    するリターン制御回路と、 前記例外ハンドラから前記例外発生前シーケンスに復帰
    するときの先頭命令のアドレスと前記命令アドレスレジ
    スタに格納され前記演算ユニットで実行を中断された命
    令のアドレスと実行を中断された命令の個数とをプッシ
    ュしたスタックとを備え、 例外要因除去または例外後処理を行う前記例外ハンドラ
    から前記例外発生前シーケンスに復帰する場合におい
    、 前記リターン制御回路はスタックに積まれ中断された命
    令の個数を読みだして前記カウンタに格納し、 前記カウンタの値が0でない場合には前記スタックに積
    まれ中断された命令のアドレスを1回ポップして前記命
    令フェッチ回路に与え、前記カウンタの値から1を引
    ものであり、 前記命令フェッチ回路はアドレスをもとにフェッチした
    命令およびそのアドレスを前記実行制御回路に与えるも
    のであり、 前記実行制御回路は与えられた命令を最適な前記演算ユ
    ニットに割り付けると同時に対応する前記命令アドレス
    レジスタに格納し、 前記実行制御回路が割り付けた命令の終了を確認しかつ
    前記例外発生認識回路が命令実行による例外を検出しな
    かった場合には前記カウンタが0になるまで中断されス
    タックからポップした命令の再実行を繰り返すものであ
    例外処理装置。
  8. 【請求項8】例外要因除去または例外後処理を行う例外
    ハンドラから例外発生前シーケンスに復帰するときに、 スタックに積まれ中断された命令の個数を読みだしてカ
    ウンタに格納し、 前記カウンタの値が0でない場合には前記スタックに積
    まれ中断された命令のアドレスを1つポップして命令フ
    ェッチ回路に与え、 前記カウンタの値から1を引き、前記命令フェッチ回路
    はアドレスをもとにフェッチした命令およびそのアドレ
    スを最適な並列実行可能な演算ユニットの1つに割り付
    けると同時に対応する命令アドレスレジスタに格納し、 割り付けた命令の終了を確認しかつ命令実行による例外
    を検出しなかった場合には前記カウンタが0になるまで
    中断された命令の再実行を繰り返す例外処理方法
  9. 【請求項9】並列同時実行可能な複数の演算ユニット
    と、 前記演算ユニットと対応して前記演算ユニットで実行さ
    れる命令のアドレスを格納する複数の命令アドレスレジ
    スタと、 前記複数の演算ユニットの状態を監視し例外発生を検出
    する例外発生認識回路と、 前記演算ユニットに対して命令を最適に割り付けかつ命
    令の実行を起動しまたは中断することを指令し、 そして前記演算ユニットの状態を監視し命令の実行終了
    を検出する実行制御回路と、 例外要因除去または例外後処理を行う例外ハンドラが必
    要とする例外に閔する情報を生成する例外情報生成回路
    と、 前記例外ハンドラに必要な情報および前記例外ハンドラ
    から例外発生前シーケンスヘの復帰に必要な情報をスタ
    ックに格納する例外制御回路と、 命令の中断によって再実行すべき命令の個数を格納する
    カウンタと、 与えられるアドレスより対応の命令をフェッチする命令
    フェッチ回路と、 前記例外ハンドラから前記例外発生前シーケンスヘの復
    帰を制御するリターン制御回路と、 前記例外ハンドラから前記例外発生前シーケンスに復帰
    するときの先頭命令のアドレスと前記命令アドレスレジ
    スタに格納され前記演算ユニットで実行を中断された命
    令のアドレスと実行を中断された命令の個数とをプッシ
    ュしたスタックとを備え、 例外要因除去または例外後処理を行う前記例外ハンドラ
    から例外発生前シーケンスに復帰する場合において、 前記リターン制御回路はスタックにプッシュされ中断さ
    れた命令の個数を読みだして前記カウンタに格納し、 前記カウンタの値が0でない場合にはスタックにプッシ
    ュされ中断された命令のアドレスを1つ読みだして前記
    命令フェッチ回路に与え、前記カウンタの値から1を引
    くものであり、 前記命令フェッチ回路はアドレスをもとにフェッチした
    命令およびそのアドレスを前記実行制御回路に与えるも
    のであり、 前記実行制御回路は与えられた命令を最適な前記演算ユ
    ニットに割り付けると同時に対応する前記命令アドレス
    レジスタに格納し、 前記割り付けた命令の終了を確認しかつ前記例外発生認
    識回路が命令実行による例外を検出した場合には 記命令アドレスレジスタの更新を凍結させるものであ
    、 前記例外情報生成回路は発生した例外に基づきき前記例
    外ハンドラが必要とする例外情報を生成し、 前記カウンタに格納されて前記スタック上に残され再実
    行を必要とする命令の個数と、 前記命令アドレスレジスタに格納され前記演算ユニット
    で例外を起こした命令のアドレスと、 前記例外情報生成回路が生成する前記例外ハンドラが必
    要とする例外情報とを既発生の例外によって生成された
    前記スタックに連続してプッシュするものである例外処
    理装置。
  10. 【請求項10】例外要因除去または例外後処理を行う例
    外ハンドラから例外発生前シーケンスに復帰するとき
    に、スタックに積まれ中断された命令の個数を読みだし
    てカウンタに格納し、前記カウンタの値が0でない場合
    には前記スタックに積まれ中断された命令のアドレスを
    1つポップして命令フェッチ回路に与え、前記カウンタ
    の値から1を引き、前記命令フェッチ回路はアドレスを
    もとにフェッチした命令およびそのアドレスを最適な並
    列実行可能な演算ユニットの1つにに割り付けると同時
    に対応する命令アドレスレジスタに格納し、割り付けた
    命令の終了を確認しかつ命令実行による例外を検出した
    場合には、前記命令アドレスレジスタの更新を凍結さ
    せ、発生した例外に基づき前記例外ハンドラが必要とす
    る例外情報を生成し、前記カウンタに格納されて前記ス
    タック上に残され再実行を必要とする命令の個数と、前
    記命令アドレスレジスタに格納され前記演算ユニットで
    例外を起こした命令のアドレスと、前記例外ハンドラが
    必要とする例外情報とを既発生の例外によって生成され
    た前記スタックに連続してプッシュするように処理する
    例外処理方法。
JP1328591A 1991-02-04 1991-02-04 例外処理装置および例外処理方法 Expired - Fee Related JP2876791B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1328591A JP2876791B2 (ja) 1991-02-04 1991-02-04 例外処理装置および例外処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1328591A JP2876791B2 (ja) 1991-02-04 1991-02-04 例外処理装置および例外処理方法

Publications (2)

Publication Number Publication Date
JPH04247523A JPH04247523A (ja) 1992-09-03
JP2876791B2 true JP2876791B2 (ja) 1999-03-31

Family

ID=11828929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1328591A Expired - Fee Related JP2876791B2 (ja) 1991-02-04 1991-02-04 例外処理装置および例外処理方法

Country Status (1)

Country Link
JP (1) JP2876791B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5013966B2 (ja) * 2007-05-24 2012-08-29 三菱電機株式会社 演算処理装置
CN110007968B (zh) * 2017-12-29 2022-07-12 Oppo广东移动通信有限公司 信息处理方法、装置、计算机设备和计算机可读存储介质

Also Published As

Publication number Publication date
JPH04247523A (ja) 1992-09-03

Similar Documents

Publication Publication Date Title
JP2645669B2 (ja) データ処理システム
JPH0242569A (ja) ベクター処理システムに用いる文脈スイッチング方法及び装置
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
JPS61286931A (ja) 情報処理装置
JPS58151655A (ja) 情報処理装置
JPH08171494A (ja) マルチスレッドプロセッサ
US7080239B2 (en) Loop control circuit and loop control method
JPH0736848A (ja) 情報処理装置および処理方法
JPH10505444A (ja) 処理システム、プロセッサ、命令ストリーム格納用メモリ及びコンパイラ
JPH0348537B2 (ja)
JPH0760388B2 (ja) パイプライン制御回路
JP2876791B2 (ja) 例外処理装置および例外処理方法
JPS581246A (ja) 命令処理順序制御方式
JP2934060B2 (ja) 例外処理方法および例外処理装置
US5778207A (en) Assisting operating-system interrupts using application-based processing
JPS6097440A (ja) 仮想多重プロセツサ装置
US20050216708A1 (en) Processor for performing context switching, a method for performing context switching, a computer program for perform context switching
US20220342844A1 (en) Method and Apparatus for Desynchronizing Execution in a Vector Processor
JP2001184259A (ja) 演算処理装置及び該装置におけるデータ転送方法
JPH0279122A (ja) 浮動小数点演算機構
JPH0248733A (ja) 情報処理装置
JPH04227541A (ja) プロセッサ及びループ制御機能処理方法
JP2583614B2 (ja) ベクトル演算装置
JPH03269628A (ja) 例外処理方式
WO1993018451A1 (en) Elimination of the critical path in memory control unit and input/output control unit operations

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees