(57)【要約】【課題】  アドレス変換に係る例外事象が多重に発生することを抑止する。【解決手段】  中央処理装置と、複数の領域に分割された記憶回路と、ベクタテーブルと、アドレス変換バッファとを具備し、前記ベクタテーブルは、複数の割込み／例外ハンドラの先頭アドレスを格納し、前記アドレス変換バッファは、論理アドレスを物理アドレスに変換するために用いられ、前記複数の領域のうちの１つである第１領域（Ｐ１，Ｐ２）は、物理アドレスに固定されており、アドレス変換バッファでのアドレス変換の対象とされておらず、前記割込み／例外ハンドラは前記第１領域に配置される。【選択図】        図１３
2004272939.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置と、複数の領域に分割された記憶回路と、ベクタテーブルと、アドレス変換バッファとを具備し、
前記ベクタテーブルは、複数の割込み／例外ハンドラの先頭アドレスを格納し、
前記アドレス変換バッファは、論理アドレスを物理アドレスに変換するために用いられ、
前記複数の領域のうちの１つである第１領域は、物理アドレスに固定されており、アドレス変換バッファでのアドレス変換の対象とされておらず、前記割込み／例外ハンドラは前記第１領域に配置されることを特徴とする１チップデータプロセッサ。
【請求項２】
請求項２において、
前記１チップデータプロセッサは、キャッシュメモリを更に有し、
前記第１領域はキャッシュメモリでのキャッシュ対象とされず、
前記複数の領域のうちの他の１つである第２領域は物理アドレスに固定されており、アドレス変換バッファでのアドレス変換の対象とされておらず、さらにキャッシュメモリでのキャッシュ対象とされず、
前記割込み／例外ハンドラは、第１ブロックと第２ブロックを有し、前記第１ブロックは前記第１領域に配置され、前記第２ブロックは前記第２領域に配置されることを特徴とする１チップデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リセット、例外事象や割り込み事象などの例外発生時に、その例外に対処するため例外処理プログラムを実行するデータ処理装置に関し、特に、例外の発生時点からその例外に対処するための例外処理ハンドラへ遷移するまでの遷移時間を短縮する技術に関する。本発明は、例えば、シングルチップマイクロコンピュータあるいはメモリ管理ユニットを内蔵するマイクロプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
上記データ処理装置に含まれる中央処理装置を用いたデータ処理の途中において、そのデータ処理装置の命令セット内に定義されていない未定義命令のデコード、無効な演算の発生、仮想記憶における記憶保護違反、ＴＬＢミスなどの一般的な例外事象（一般例外事象とも言う：general exception events）が発生する場合や、データ処理装置の外部周辺回路におけるデータ入出力動作の終了を中央処理装置に通知するための終了通知やデータ処理装置内の通信モジュールからの受信要求などの割り込み要求（一般割り込み事象とも言う：general interrupt events）が発生する場合がある。
【０００３】
上記のような一般例外事象や一般割り込み事象などの例外（例外事象）が発生すると、上記中央処理装置は、データ処理プログラムの命令の実行を抑止し、発生した例外に対処するための例外処理ハンドラに制御を移行し、上記例外処理ハンドラによって規定されるデータ処理を実行し、発生した例外に対処する。上記例外処理ハンドラを実行した後、中央処理装置は、上記実行を抑止した命令を再実行し、あるいは、上記実行を抑止した命令の次の命令アドレスに復帰し、中断していた所定のデータ処理プログラムを継続する。そのため、一般例外事象や一般割り込み事象が発生した時、中央処理装置はその内部のプログラムカウンタの値やステータスレジスタの内部状態を外部メモリのスタック領域へ退避させるような動作を実行する。中央処理装置の処理が例外処理ハンドラの処理から上記抑止されたデータ処理プログラムへ復帰する時、中央処理装置は上記退避させたプログラムカウンタの値やステータスレジスタの内部状態を上記外部メモリのスタック領域からプログラムカウンタやステータスレジスタへそれぞれ格納し、上記抑止されたデータ処理プログラムを継続する。
【０００４】
所定のデータ処理プログラムから所定の例外処理ハンドラの処理への分岐手法としては、ハードウェア（論理回路）によって各種の分岐先アドレス（各種の例外処理ハンドラの先頭メモリアドレス）を固定する手法や、中央処理装置から分岐先アドレスを指定可能にするベクタ方式が採用されている。ベクタ方式は、例えば、割り込み要求に応答するための各種例外処理ハンドラの先頭アドレスを格納したベクタテーブルを外部メモリ上に配置し、中央処理装置から上記ベクタテーブルのポインタ（割り込みベクタレジスタ）を指定し、指定されたベクタテーブルから対応する例外処理ハンドラの先頭アドレスをリードし、リードした先頭アドレスの位置から所要の例外処理ハンドラをリードして実行する。
【０００５】
尚、割り込み要求などの例外について記載された文献の例としては、昭和６２年１２月２５日に株式会社オーム社発行の「マイクロコンピュータハンドブック」第１７７頁及び第１７８頁がある。
【０００６】
【非特許文献１】「マイクロコンピュータハンドブック」、株式会社オーム社、昭和６２年１２月２５日、ｐ．１７７−１７８
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のベクタ方式では、例外事象が発生してそれに対処するまでに、ベクタテーブルから対応する例外処理ハンドラの先頭アドレスを取得するための外部メモリのリード動作が必要となる。したがって、その外部メモリのリード動作の分だけ、例外事象の発生から対応ハンドラへ分岐するまでの遷移時間が長くなることがわかった。また、対応する例外処理ハンドラに分岐する前に、プログラムカウンタやステータスレジスタ、さらには汎用レジスタのデータなどを外部メモリ上のスタック領域に退避する操作を行う場合には、そのための外部メモリの書き込み動作によっても例外事象に対する応答が遅れることがわかった。
【０００８】
特に、中央処理装置の動作に同期して発生するＴＬＢミスに関する例外に対して高速に応答することは、ＴＬＢミスの発生時点から上記抑止された命令の再実行までの時間を短縮できることを意味し、中央処理装置のデータ処理性能を向上させる上で究めて重要であることが本発明者によって見出された。なぜなら、ＴＬＢミスは、例外として分類されているものの、実際には、ユーザーの作成したデータ処理プログラムのプログラミングミスで発生するような本質的な例外と異なり、プログラミングミスの無いデータ処理プログラムの実行中において通常的に発生する事象である。したがって、ＴＬＢミスに高速に対処することが、中央処理装置のデータ処理性能を向上させる事になる。
【０００９】
更に、各種分岐先アドレスをハードウェアによって完全に固定にする手法も考えられるが、この手法はユーザ記述に係る例外処理ハンドラのマッピングやそのプログラムサイズに対する融通性がなく、使い勝手が悪いことがわかった。また、分岐先アドレスを生成するためのハードウェア量も増大すると考えられる。
【００１０】
本発明の目的は、例外事象の発生時点からそれに対処するための例外処理ハンドラへ遷移あるいは分岐するまでの遷移時間を短縮できるデータ処理装置を提供することにある。
【００１１】
本発明の別の目的は、例外事象に応答するための例外処理ハンドラの構成に自由度を持たせることができるデータ処理装置を提供することにある。
【００１２】
本発明の更に別の目的は、データ処理の高速化に密接なＴＬＢミス例外のような処理に対しては、その処理への遷移時間を短縮することが可能であり、かつ、例外処理への遷移時間の短縮がＴＬＢミス例外ほどデータ処理速度の高速化に寄与しないと考えられる例外事象や割り込み事象に対しては、例外処理ハンドラのメモリ上でのマッピングや例外処理ハンドラのメモリサイズに対する高い融通性を持たせることが可能なデータ処理装置を提供することにある。
【００１３】
本発明のその他の目的は、例外処理の点において物理的な回路規模の縮小とデータ処理の高速化との双方を満足させ、低コストかつ高速なデータ処理装置を提供することにある。
【００１４】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１６】
データ処理装置は、図１に例示されるように、例外事象（例えばリセット、一般例外事象、一般割り込み要求）の発生に応答し、上記例外事象に予め割り当てられた例外コードが書き込まれる記憶回路（ＥＸＰＥＶＴ，ＩＮＴＥＶＴ）と、プログラムカウンタ（ＰＣ）と、上記例外事象の発生に応答し、所定の命令アドレスを上記プログラムカウンタに書き込み、上記命令アドレスに割り当てられた第１例外処理ハンドラを実行可能にする制御手段（ＣＴＲＬ）とを含む中央処理装置（ＣＰＵ）とを備える。
【００１７】
上記制御手段は、上記第１例外処理ハンドラ内に規定される処理にしたがって、上記第１例外処理ハンドラから第２例外処理ハンドラへ分岐させるための第２命令アドレスを、前記記憶回路に書き込まれた上記要因コードをアドレスオフセットとして利用して算出させ、得られた第２命令アドレスを上記プログラムカウンタへ設定する。
【００１８】
上記所定の命令アドレスへの分岐は、例えば、図２に例示されたハードウェアによるベクタポイントの操作とされる。上記所定の命令アドレス（分岐先のベクタポイント）に割り当てられる第１例外処理ハンドラは、例えば、図２に例示されるように、そのベクタポイントに固有の一つの一般例外事象であるＴＬＢミス例外処理ハンドラ、或いはそのベクタポイントに固有の複数の例外事象（例えば、ＴＬＢミス例外以外の複数の一般例外事象）に共通の例外処理ハンドラ、又は複数の割り込みに共通の例外処理ハンドラとされる。上記共通の例外処理ハンドラにおいて、個々の例外に固有の別の例外処理ハンドラ（第２例外処理ハンドラ）へ分岐するためのアドレスオフセットとして、上記要因コードが利用される。上記要因コード（アドレスオフセット）に対するベースアドレスは、上記共通の例外処理ハンドラの記述によって決定される。ベースアドレスは、例えば、ＶＢＲ（ベクタベースレジスタの値）＋Ｈ'１００（記号Ｈ'は１６進数であることを意味する）であっても、また、分岐時におけるプログラムカウンタの値をベースアドレスとし、さらには適当に演算して算出された値をベースアドレスにすることも可能である。
【００１９】
上記手段を別の観点より把握すれば、データ処理装置は、例外事象の発生に応じて中央処理装置による命令実行順序を変更するために、ベクタベースアドレスに対する固定のオフセットであるベクタオフセットを、例外要因の数よりも少ない数だけ有する。
【００２０】
本発明に従うデータ処理装置は、例外事象の発生時にステータスレジスタの内部状態が退避される第１退避レジスタ（ＳＳＲ）と、プログラムカウンタ（ＰＣ）が保持していたところの例外処理から復帰した後に実行されるべき命令を示している復帰命令アドレスが退避される第２退避レジスタ（ＳＰＣ）と含む。上記第１及び第２退避レジスタの採用によって、ステータスレジスタの内部状態や復帰命令アドレスの退避のための外部メモリのメモリアクセス回数を減らすことができる。
【００２１】
さらに、本発明に従うデータ処理装置の中央処理装置は、図２に例示したハードウェアによるベクタポイントの操作のため、算術論理演算回路（ＡＬＵ）と、上記例外の発生に応答して所定の値（ベクタオフセット）を発生する定数発生部あるいは演算手段（ＣＶＧ，ＳＦＴ）と、外部メモリに記憶された複数の例外処理ハンドラのベースアドレスを格納するベースレジスタ（ＶＢＲ）とを有する。上記算術論理演算回路は、上記制御回路の制御の下で、上記ベースアドレスと上記所定の値とを加算し、上記所定の命令アドレス（分岐先命令アドレス）とを発生する。例えば、図２に従えば、ＴＬＢミス例外を除く一般例外のベクタオフセットはＨ'１００とされ、ＴＬＢミス例外のベクタオフセットはＨ'４００とされる。上記定数発生部は、２ビットの定数を発生する定数発生回路（ＣＶＧ）と、上記定数発生回路から出力された２ビットの定数を所定の量だけシフトするシフト回路（ＳＦＴ）とから構成され、その回路構成が簡単化されている。
【００２２】
要因コードを記録する記憶回路としてのレジスタは、中央処理装置（ＣＰＵ）の動作に同期して発生する第１の例外事象（例えば一般例外）に割り当てられた第１レジスタ（ＥＸＰＥＶＴ）と、中央処理装置の動作と非同期で発生する第２の例外事象（例えば割り込み）に割り当てられた第２レジスタ（ＩＮＴＥＶＴ）とされる。なお、リセットは、第２の例外事象の範疇に含められる。
【００２３】
上記ステータスレジスタ（ＳＲ）は、上記データ処理装置の動作状態が、ユーザプログラムが走行されているユーザ状態か、あるいはシステムプログラムが走行されている特権状態かを択一的に示すデータが格納される第１制御ビット（ＭＤ）と、上記例外事象の発生後に発生した他の例外事象を受け付けるか無視する（マスク）か否かを指示するデータが格納される第２制御ビット（ＢＬ）とを有する。
【００２４】
上記制御手段は、前記内部状態と上記復帰命令アドレスとを上記第１退避レジスタ（ＳＳＲ）と上記第２退避レジスタ（ＳＰＣ）ヘそれぞれ退避した後、上記第１制御ビットに特権状態を示すデータを設定し、上記第２制御ビットに上記例外事象の発生後に発生した他の例外事象を無視する事を示すデータを設定し、上記所定の命令アドレスに割り付けられた第１例外処理ハンドラに分岐させる。上記第１及び第２制御ビットに対するアクセスは、所定の特権命令（例えばＬＤＣ，ＳＴＣ）にて可能にされる。即ち、図２に例示されように、ベクタポイントに割り当てられた上記第１例外処理ハンドラ上でのプロセッサモードは、特権状態及び例外の多重受け付け抑止の状態とされる。ここで、特権状態は、ユーザ状態ではアドレスエラーとされるアドレス空間をアクセス可能な状態であり、ユーザ状態では実行不可能な特権命令（例えばＬＤＣ，ＳＴＣ）を実行することができる、という点においてユーザ状態と相違される。
【００２５】
例外発生時における内部状態の退避と復帰アドレスの退避を第１及び第２退避レジスタにできるようにするため、ベクタポイントに割り当てられた上記第１例外処理ハンドラ上では、新たに発生する例外の多重受け付けを抑止するか否かを決定してその内容を上記制御ビットに反映し、多重に受け付けるときは上記第１及び第２の退避レジスタの内容をメモリに退避させる。
【００２６】
例外発生時の汎用レジスタのメモリ退避を低減させ、或は、汎用レジスタに対する処理の自由度を向上させるため、複数のバンクを構成する第１及び第２汎用レジスタセットが設けられる。上記第１及び第２汎用レジスタセットの一方は、前記特権状態における汎用レジスタとして利用され、上記第１及び第２汎用レジスタセットの他方は、前記ユーザ状態における汎用レジスタとして利用される。汎用レジスタのレジスタバンクを前記特権状態においてのみソフトウェアで切り換え可能にするとよい。
【００２７】
本発明に従うデータ処理装置は、さらに、命令ブレークコントローラ（ＵＢＣ）を有する。命令ブレークコントローラ（ＵＢＣ）は、ブレークポイントアドレスが設定される命令ブレークアドレスレジスタ（ＩＢＲ）を含み、上記命令ブレークアドレスレジスタに設定された命令アドレスに対応する命令が中央処理装置によって実行された時、命令ブレーク例外を発生する。前記制御手段は、例外の多重受け付け抑止が指示された状態において前記命令ブレーク例外を検出したとき、前記第１及び第２退避レジスタへの内部状態及び復帰命令アドレスの退避を行わずに命令ブレーク例外ハンドラに分岐させる。、上記命令ブレーク例外ハンドラは、上記状態及び復帰アドレス退避用の退避レジスタの内容をメモリに退避した後、前記命令ブレークアドレスレジスタが保有するブレークポイントアドレスを利用して命令ブレーク例外ハンドラからの復帰命令アドレスを計算し、計算した復帰命令アドレスを前記第２退避レジスタに書き込む。これにより、前記例外の多重受け付けが抑止された状態の例外処理ハンドラで、前記命令ブレーク例外を処理可能とする。
【００２８】
上記において、前記制御手段は、更に、例外の多重受け付けを抑止した状態において、前記命令ブレーク例外以外の第１の例外を検出したときは、前記要因レジスタにその要因コードを記録した後にリセット例外のハンドラに分岐させ、また、第２の例外を検出したときは、例外の多重受け付け抑止の状態が解除されるまで第２の例外の受け付けを抑止する。
【００２９】
上記した手段によれば、ベクタポイント割り付けられたら第１例外処理ハンドラは、ある例外要因（例えばＴＬＢミス例外）に対してはそれ固有の一つの例外ハンドラとされ、他の例外要因（例えばＴＬＢミス例外以外の一般例外）に対しては夫々の要因に対応して設けられた別の例外処理ハンドラとされる第２例外処理ハンドラ（例えば、アドレスエラー例外、ＴＬＢプロテクト違反例外）へ分岐させるための記述を含む共通の例外処理ハンドラとされる。
【００３０】
前者においては、メモリアクセスを伴わずにハードウェアによる処理だけで特定の第１例外処理ハンドラに分岐できるので、所望の例外処理へ高速に移行することが可能になる。後者においては、さらに別のハンドラに分岐するためのアドレスオフセットとして記憶回路（要因レジスタ）の例外要因コードを利用するので、分岐先アドレスの取得にメモリ上のアドレステーブルをアクセスすることが必要とされない。従って、この場合にも、所望の例外処理ハンドラへの高速な移行が可能なる。
【００３１】
見方を変えれば、後者において要因レジスタに保持されている例外要因コードは、さらに別の例外処理ハンドラに分岐するためのアドレスオフセットとして利用できるようにコード割り当てが行われているということである。例えば、アドレス換算で３２バイト分に相当するようなＨ'２０の間隔を置いてコード割り当てが行われている。
【００３２】
更に、後者において、例外要因コードは分岐のためのアドレスオフセットとして利用されるので、当該オフセットに対するベースアドレスはハードウェアによって決定されているベクタポイントに割り当てられた第１例外処理ハンドラの記述に従って自由に決定でき、実際の分岐先アドレスや分岐先の例外処理ハンドラのサイズ対して自由度を保証することができる。
【００３３】
内部状態及び復帰命令アドレスを退避するレジスタ（ＳＳＲ，ＳＰＣ）を採用することは、例外発生時の退避に際してメモリアクセスを減らす。
【００３４】
中央処理装置の動作クロックの周波数が割り込み要求の発生元とされる周辺モジュールの動作クロックの周波数に対して複数倍のクロック周波数で動作される場合、前記中央処理装置の動作に同期して発生される第１の例外事象としての一般例外と非同期で発生される第２の例外事象としての割り込み要求との双方に対処するため、例外要因コードを格納するレジスタは上記第１例外事象と上記第２例外事象に対して別々に設ける。双方の例外発生に対して同じようなタイミングで例外要因コードを共通のレジスタに書き込むための煩雑な処理を避けられるようにする。
【００３５】
例外要因に応じてハードウェアで決定されている分岐先のハンドラ（第１例外処理ハンドラ）上での初期的なプロセッサモードを、例外事象の多重受け付け抑止状態及び特権状態によって一定にすることは、ユーザが当該ハンドラ上で規定できる例外処理の内容に高い自由度を保証できる。
【００３６】
汎用レジスタのレジスタバンクを特権状態においてのみソフトウェアで切り換え可能にすることは、特権状態においてユーザ状態とは異なるバンクの汎用レジスタを利用できるようになり、例えば、例外処理においてユーザ状態から特権状態にプロセッサモードを切り換えるときに汎用レジスタの内容をメモリに退避しなくても済むようにでき、例外処理への移行を高速化できる。
【００３７】
例外を抑止した状態の例外ハンドラ中で命令ブレーク例外を処理可能にすることは、多重に発生する例外の受け付けが禁止されている状態のデバッグ対象プログラムに対しても任意の位置で命令ブレークをかけてシステム評価やプログラムデバッグを行うことを保証できる。
【発明の効果】
【００３８】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００３９】
すなわち、ハードウェアによって決定された第１のベクタポイントのハンドラへの分岐、更に当該ハンドラから要因コードをオフセットとする別のハンドラへの分岐の何れにおいても、分岐先アドレスを直接メモリのアクセスによって取得することを要しないため、例外発生からそれに対処するハンドラへの遷移するまでの遷移時間を短縮でき、これによって、マイクロコンピュータ等のデータ処理装置の全体的なデータ処理速度の高速化が実現できる。
【００４０】
データ処理の高速化に密接なＴＬＢミス例外のような処理に対しては、固定オフセットとしてのベクタオフセットを利用して得られたアドレスに配置された例外ハンドラによって直接例外処理を行うようにする。したがって、ＴＬＢミス例外に対する処理への遷移時間を短縮できる。一方、例外処理への遷移時間の短縮がＴＬＢミス例外程データ処理速度の高速化に寄与しないと考えられる割り込みなどに対しては、ハンドラのマッピングやハンドラのサイズに対する融通性という点で使い勝手の向上を優先させることができる。
【００４１】
ベクタベースレジスタの値とベクタオフセットとを加算して得られたアドレスに配置された例外ハンドラの内の一部の例外ハンドラ（ＴＬＢミス例外ハンドラ）だけが、対応する例外に対して直接的な例外処理を行なう。その他の例外に対しては、例外要因コードをアドレスオフセットに利用して、更に、分岐されて所定のハンドラにたどり着くようになっている。したがって、物理的な回路規模の縮小とデータ処理の高速化との双方を満足させることができる。
【００４２】
ハードウェアによって規定されるベクタポイントのハンドラ上では、新たに発生する例外の多重受け付けを抑止するか否かを決定し、多重に受け付けるときは退避レジスタの内容をメモリに退避させることにより、例外発生時における状態退避と復帰アドレス退避を必ず退避レジスタにでき、この点においても例外発生からそれに対処するためのハンドラへの遷移時間を短縮できる。
【００４３】
ハードウェアで決定されるベクタポイントのハンドラから更に別のハンドラに分岐する際に要因コードが分岐のためのアドレスオフセットとして利用されるようになっているので、当該オフセットに対するベースアドレスはハードウェアによって決定されているベクタポイントのハンドラの記述に従って自由に決定でき、実際の分岐先アドレスや分岐先のハンドラのサイズ対して自由度を保証することができる。
【００４４】
内部状態及び復帰命令アドレスを退避するレジスタを採用することにより例外発生時の退避に際してメモリアクセスを減らすことができる。
【００４５】
中央処理装置の動作に対して同期して発生される第１の例外と非同期で発生される第２の例外との双方に対処するとき、中央処理装置が割り込み要求の発生元とされる周辺モジュールの動作クロック周波数に対して複数倍のクロック周波数で動作されるような場合に、例外要因コードを格納するレジスタを上記第１と第２の例外に対して格別に設けることにより、双方の例外発生に対して同じようなタイミングで要因コードを共通のレジスタに書き込むための煩雑な処理を避けられ、これによって、要因コードをレジスタにセットする処理を簡素化できる。
【００４６】
例外要因に応じてハードウェアで決定されている分岐先のハンドラ上での初期的なプロセッサモードを、例外の多重受け付け抑止状態及び特権状態を以て一定にすることは、ユーザが当該ハンドラ上で規定できる例外処理の内容に高い自由度を保証できる。
【００４７】
汎用レジスタのレジスタバンクを特権状態においてのみソフトウェアで切り換え可能にすることにより、特権状態においてユーザ状態とは異なるバンクの汎用レジスタを利用できるようになり、例えば例外処理においてユーザ状態から特権状態にプロセッサモードを切り換えるときに汎用レジスタの内容をメモリに退避しなくても済むようにでき、この点においても例外発生からそれに対処する処理への遷移時間を短縮することができる。
【００４８】
例外を抑止した状態の例外ハンドラ中で命令ブレーク例外を処理可能にすることにより、多重に発生する例外の受け付けが禁止されている状態のデバッグ対象プログラムに対しても任意の位置で命令ブレークをかけてシステム評価やプログラムデバッグを行うことを保証できる。
【発明を実施するための最良の形態】
【００４９】
《マイクロコンピュータの概要》  図１は、本発明の実施例に係るシングルチップマイクロコンピュータ（シングルチップマイクロプロセッサとも言う）のブロック図を示す。同図に示されるマイクロコンピュータＭＰＵは、例えば、公知の半導体集積回路製造技術によって単結晶シリコンのような１個の半導体基板あるいは半導体チップに形成される。マイクロコンピュータＭＰＵは、特に制限されないが、内部バスとしてシステムバスＳ−ｂｕｓ、キャッシュバスＣ−ｂｕｓおよびペリフェラルバスＰ−ｂｕｓを含む。すなわち、マイクロコンピュータＭＰＵは、スリーバス構成を有する。内部バスＳ−ｂｕｓ、Ｃ−ｂｕｓ、Ｐ−ｂｕｓの各々は、データを転送するためのデータバス、アドレス信号を転送するためのアドレスバス及び制御信号を転送するための制御バスを備えている。
【００５０】
システムバスＳ−ｂｕｓには、中央処理装置（central processing unit）ＣＰＵ、乗算器(multiplier)ＭＬＴ、キャッシュメモリ(cache memory)ＣＡＣＨＥ、メモリマネージメントユニット(memory management unit)ＭＭＵ、及び命令ブレークコントローラ(instruction break controller)ＵＢＣが結合される。キャッシュバスＣ−ｂｕｓには上記キャッシュメモリＣＡＣＨＥ、メモリマネージメントユニットＭＭＵ、命令ブレークコントローラＵＢＣ、及びバスステートコントローラ(bus state controller)ＢＳＣが結合される。バスステートコントローラＢＳＣに接続されるペリフェラルバスＰ−ｂｕｓには、タイマＴＭＵ、中央処理装置ＣＰＵへの動作クロックの供給が停止されても計時動作が可能にされるリアルタイムクロック回路(real time clock circuit)ＲＴＣ、外部メモリＭＭＲＹに含まれるダイナミック型メモリのリフレッシュ動作を制御するリフレッシュコントローラ(refresh controller)ＲＥＦＣ、及びマイクロコンピュータＭＰＵの外部に設けられた外部周辺装置(external peripheral devices)との間のシリアル通信を実行するシリアルコミュニケーションインタフェース(serial communication interface)ＳＣＩなどの内蔵周辺モジュール(internal peripheral modules)が接続される。また、上記バスステートコントローラＢＳＣは、入出力回路(input and output circuit)ＥＸＩＦを介して、外部バスＥＸ−ｂｕｓに接続可能にされる。上記外部バスＥＸ−ｂｕｓには、外部メモリＭＭＲＹや補助記憶装置ＤＩＳＫなどが接続されることになる。上記バスステートコントローラＢＳＣは、上記内蔵周辺モジュール及び外部に対するバスサイクルの起動とそれに伴う各種バス制御を行う。
【００５１】
割り込みコントローラ（interrupt controller)ＩＮＴＣは、上記内蔵周辺モジュールから、及び複数ビットの外部割り込み端子(external interrupt terminals)ＩＲＬ０〜ＩＲＬ３から外部割り込み要求（external interrupt request）を受け、割り込み優先レベル（interrupt priority level）に従って割り込み要求の調停などを行う。割り込みコントローラＩＮＴＣは、発生した割り込み要求の受け付けを許可する場合、上記中央処理装置ＣＰＵへ割り込み要求信号ＳＩＧ１を供給する。また、上記割り込みコントローラＩＮＴＣは、受け付けられた割り込み要求の割り込み要因を割り込み要因信号ＳＩＧ２によってメモリマネージメントユニットＭＭＵの制御回路（ＴＬＢＣ）へ通知する。上記割り込み要求信号ＳＩＧ１を受けた中央処理装置ＣＰＵは、割り込み許可信号ＳＩＧ３をメモリマネージメントユニットＭＭＵの制御回路ＴＬＢＣへ供給する。上記メモリマネージメントユニットＭＭＵの制御回路ＴＬＢＣは、割り込み許可信号ＳＩＧ３に応答し、許可された割り込み要求に対応する例外要因コード(exception code)を後述する記憶回路としての割り込み要因レジスタＩＮＴＥＶＴに書き込む。中央処理装置ＣＰＵの制御部ＣＴＲＬは、上記割り込み要因レジスタＩＮＴＥＶＴにセットされた例外要因コードを用いて、実行中のデータ処理プログラムの処理から所定の割り込み処理へその処理を分岐する。
【００５２】
本実施例のマイクロコンピュータＭＰＵは、論理アドレス空間（logical address space）を論理ページ（logical page）と呼ばれる単位に分割し、そのページ単位に物理アドレス（physical address）へのアドレス変換（address translation）を行うための仮想記憶（virtual memory)をサポートする。上記メモリマネージメントユニットＭＭＵのアドレス変換バッファ（address translation look-aside buffer）ＴＬＢは、論理ページ番号と物理ページ番号とに関する複数の変換対をＴＬＢエントリとして格納する。上記メモリマネージメントユニットＭＭＵの制御部ＴＬＢＣは、中央処理装置ＣＰＵが出力する論理アドレスをアドレス変換バッファＴＬＢを用いて物理アドレスに変換するための制御を行う。ＴＬＢミスの場合、すなわち、中央処理装置ＣＰＵが出力した論理アドレスに対応する変換対がＴＬＢエントリとしてアドレス変換バッファＴＬＢ内に記憶されていなかった場合、制御部ＴＬＢＣは、外部メモリＭＭＲＹ上のページテーブルをアクセスしてその論理アドレスに対応する変換対を外部メモリＭＭＲＹから読み込むように動作する。その後、制御部ＴＬＢＣは、読み出された変換対をＴＬＢエントリとしてアドレス変換バッファＴＬＢへ書き込むように動作する。
【００５３】
アドレス変換バッファＴＬＢは、例えば、４ウェイ・セットアソシアティブ（4way-set-associative）方式のキャッシュメモリ（cache memory）によって構成される。ＴＬＢミスなどのアドレス変換に係る後述されるような各種例外事象が発生すると、制御部ＴＬＢＣはその例外事象に対応する例外要因コードを後述する記憶回路としての例外要因レジスタＥＸＰＥＶＴにセットし、且つ、ＴＬＢミスなどのアドレス変換に係る例外事象の発生を通知するための通知信号ＳＩＧ４を中央処理装置ＣＰＵの制御部ＣＴＲＬへ供給する。中央処理装置ＣＰＵは、例外要因レジスタＥＸＰＥＶＴにセットされた例外要因コードを用いて、或いは、例外要因レジスタＥＸＰＥＶＴにセットされた例外要因コードを用いずにハードウェアで直接的に、実行中のデータ処理プログラムの処理から対応する例外処理へその処理を分岐する。
【００５４】
中央処理装置ＣＰＵは、例えば、４ギガバイトの論理アドレス空間をサポートするために、３２ビットのアドレス信号を利用する。図１に示されるように、中央処理装置ＣＰＵは、例えば、汎用レジスタ（general purpose registers）Ｒ０〜Ｒ１５や算術論理演算器（arithmetic and logic operation unit）ＡＬＵを含む演算部（operation unit）１００と、後述されるプログラムカウンタ（program counter）ＰＣなどのシステム制御用レジスタセット（system control register set）１１０と、命令のフェッチ、命令の解読、命令の実行手順の制御および演算の制御を行う制御部ＣＴＲＬを含む。これらの回路装置（Ｒ０〜Ｒ１５、ＡＬＵ、１１０、ＣＴＲＬ）は、システムバスＳ−ｂｕｓに結合される。中央処理装置ＣＰＵは、外部メモリＭＭＲＹから実行されるべき命令をフェッチし、その命令記述（instruction code）に応じたデータ処理を行う。図１において、制御信号ＳＩＧ５は、中央処理装置ＣＰＵからメモリマネージメントユニットＭＭＵへの各種制御信号及び中央処理装置ＣＰＵの内部状態を通知するための信号を総称するものである。
【００５５】
キャッシュメモリＣＡＣＨＥは、特に制限されないが、４ウェイ・セットアソシアティブ形式とされる。キャッシュメモリＣＡＣＨＥに対するインデックスは、中央処理装置ＣＰＵから出力された論理アドレスの一部を用いて行われ、キャッシュメモリＣＡＣＨＥのキャッシュエントリのタグ部には物理アドレスが保有される。インデックスされたタグ部から出力される論理アドレスはアドレス変換バッファＴＬＢで変換された物理アドレスと比較され、その比較結果に応じてキャッシュミス／ヒットが判定される。キャッシュミスの場合、当該キャッシュミスに係るデータ又は命令は外部メモリから読み込まれ、読み込まれたデータ又は命令は新たなキャッシュエントリとしてキャッシュメモリＣＡＣＨＥに格納される。
【００５６】
上記命令ブレークコントローラＵＢＣは、デバッグ機能を強化するために設けられており、システムバスＳ−ｂｕｓの状態がブレーク条件に一致するかを監視する。システムバスＳ−ｂｕｓの状態がブレーク条件と一致する場合、中央処理装置ＣＰＵにブレーク割込みを発生させる。命令ブレークコントローラＵＢＣに含まれるＩＢＲは、ブレーク条件として命令アドレスなどが設定される命令ブレークアドレスレジスタである。中央処理装置ＣＰＵは、デバッグ若しくはエミュレーション開始前にそのためのサービスルーチンを実行し、命令ブレークアドレスレジスタＩＢＲにブレークすべき命令の先頭アドレスやオペランドアドレスなどの所望の命令ブレーク条件をあらかじめ設定する。マイクロコンピュータＭＰＵの内部状態が前記命令ブレーク条件に一致すると、後述の命令ブレーク例外が発生する。これによって、中央処理装置ＣＰＵは、デバッグのための命令ブレークハンドラを実行可能にされる。したがって、マイクロコンピュータＭＰＵの内部でブレークポイント制御を行うことができる。
【００５７】
《ＣＰＵのレジスタ構成》  次に、中央処理装置ＣＰＵにおけるレジスタ構成が説明される。汎用レジスタＲ０〜Ｒ１５は、図３に示されるように、夫々３２ビットの記憶ビットを有し、図示されないインターフェイス回路を介して、上記システムバスに結合される。汎用レジスタＲ０〜Ｒ７は、プロセッサモードによって切り換えられるバンクレジスタとされる。換言すれば、汎用レジスタＲ０〜Ｒ７はバンク０とバンク１の２セット備えられる。すなわち、第１汎用レジスタセットとしてのＲ０（ＢＡＮＫ０）〜Ｒ７（ＢＡＮＫ０）と第２汎用レジスタセットとしてのＲ０（ＢＡＮＫ１）〜Ｒ７（ＢＡＮＫ１）とされる。上記プロセッサモードは、ユーザのアプリケーションプログラムが走行される動作状態を意味するユーザモード（ユーザ状態）と、オペレーティングシステム（operating system）などのシステムプログラムが走行される動作状態を意味する特権モード（特権状態）とを含む。したがって、特権状態とユーザ状態の夫々は、固有の汎用レジスタＲ０〜Ｒ７を有することができる。即ち、図４に示されるユーザ状態においては、バンク０の汎用レジスタＲ０（ＢＡＮＫ０）〜Ｒ７（ＢＡＮＫ０）が利用可能にされる。特権状態においては、後述されるステータスレジスタＳＲのレジスタバンクビットＲＢ（ＳＲ．ＲＢ）の設定状態によって汎用レジスタＲ０〜Ｒ７の利用形態が決定される。
【００５８】
例えば、図５に示されるように、特権状態において、ＲＢ＝０のときは、Ｒ０（ＢＡＮＫ０）〜Ｒ７（ＢＡＮＫ０）は汎用レジスタとして自由な利用が許容され、Ｒ０（ＢＡＮＫ１）〜Ｒ７（ＢＡＮＫ１）に対しては制御ロード命令（ＬＤＣ）及び制御ストア命令（ＳＴＣ）によるアクセスのみが許容される。ＲＢ＝１ときは、上記とは逆にＲ０（ＢＡＮＫ１）〜Ｒ７（ＢＡＮＫ１）が汎用レジスタとしての自由な利用が許容され、Ｒ０（ＢＡＮＫ０）〜Ｒ７（ＢＡＮＫ０）に対しては制御ロード命令（ＬＤＣ）及び制御ストア命令（ＳＴＣ）によるアクセスのみが許容される。前記制御ロード命令（ＬＤＣ）及び制御ストア命令（ＳＴＣ）は、特権状態において実行可能な特権命令若しくはシステム制御命令の一例である。
【００５９】
このように汎用レジスタをバンクレジスタ構成とし、特権状態においてユーザ状態とは異なるバンクの汎用レジスタを利用可能にすることは、例えば、例外処理においてユーザ状態から特権状態にプロセッサモードを切り換える時、ユーザ状態において汎用的に使用されていた汎用レジスタＲ０〜Ｒ７の内容を外部メモリＭＭＲＹのスタック領域へ退避しなくても済むようにできる。したがって、中央処理装置ＣＰＵの例外処理への移行が高速化できる。
【００６０】
システムレジスタは、図３に示されるように、データレジスタハイＭＡＣＨ、データレジスタローＭＡＣＬ、復帰アドレスレジスタＰＲ、及びプログラムカウンタＰＣとされる。データレジスタハイＭＡＣＨ及びデータレジスタローＭＡＣＬは、乗算、積算や積和演算のためのデータを格納する。復帰アドレスレジスタＰＲは、サブルーチンからの戻りアドレスを格納する。プログラムカウンタＰＣは、現在の命令のスタート番地を指す。
【００６１】
コントロールレジスタは、図６に示されるように、セーブステータスレジスタＳＳＲ、セーブプログラムカウンタＳＰＣ、グローバルベースレジスタＧＢＲ、ベクタベースレジスタＶＢＲ、及びステータスレジスタＳＲとされる。セーブステータスレジスタＳＳＲは、例外事象の発生時などにおいて、現在のステータスレジスタＳＲの値を退避するレジスタである。セーブプログラムカウンタＳＰＣは、例外事象が発生したときに、対応する例外処理から復帰した後に中央処理装置ＣＰＵが実行すべき命令の命令アドレスを保持するためのレジスタである。セーブプログラムカウンタＳＰＣには、例外事象が発生したとき所定のタイミングでプログラムカウンタＰＣの値が退避される。グローバルベースレジスタＧＢＲは、ＧＢＲ−インダイレクトアドレスモードにおけるベースアドレスを格納するレジスタである。ＧＢＲ−インダイレクトアドレスモードは、シリアルコミュニケーションインタフェースＳＣＩなどの上記内蔵周辺モジュールのレジスタ領域にデータを転送する時、また、論理演算の時に利用される。ベクタベースレジスタＶＢＲは、例外処理のためのベクタ領域のベースアドレス（ベクタテーブルベースアドレス）を保有する。ステータスレジスタＳＲは、演算においてキャリー、ボロー、オーバーフローを示すために利用されるＴビット、メモリアクセス制御に利用されるＳビット、割り込み要求に対するマスクレベルを４ビットで示す割り込みマスクビットＩＭＡＳＫ、除算に利用されるＭ及びＱビット、上述のレジスタバンクビットＲＢ、ブロックビットＢＬ、プロセッサオペレーションモードビットＭＤ、及びゼロビットを含む。ブロックビットＢＬは例外をマスクするために利用され、ＢＬ＝１は例外をマスクすることを指示し、ＢＬ＝０は例外を許容することを指示する。モードビットＭＤはＭＤ＝１にて特権モードを、ＭＤ＝０にてユーザモードを示す。上記Ｍ、Ｑ、Ｓ、Ｔの各ビットは、ユーザモードにおいて、所定の専用命令を実行した中央処理装置ＣＰＵによってセットあるいはクリアすることが可能である。その他全てのビットは、特権モードにおいてだけ中央処理装置ＣＰＵによってリード・ライト可能にされる。上記コントロールレジスタに対する書き込みは制御ロード命令（ＬＤＣ）を実行する中央処理装置ＣＰＵによって行われ、上記コントロールレジスタに対する読み出しは制御ストア命令（ＳＴＣ）を実行する中央処理装置ＣＰＵによって行われる。
【００６２】
《マイクロコンピュータのアドレス空間》  本実施例のマイクロコンピュータＭＰＵは、４ＧＢ（ギガバイト）の論理アドレス空間をサポートするために３２ビットのアドレスを利用する。該論理アドレスは、空間番号によって拡張可能にされる。図１３は、特権モードのアドレス空間とユーザモードのアドレス空間とのアドレスマッピングを示している。同図において、”Mapped”と示される領域は、アドレス変換バッファＴＬＢを利用したアドレス変換の対象とされる。
【００６３】
Ｈ'ＦＦＦＦＦＦＦＦ〜Ｈ'８０００００００の領域は、特権モードにおいて、アクセス可能な領域とされ、ユーザモードでのアクセスはアドレスエラーとされる。
【００６４】
アドレス領域Ｐ４はコントロールスペースであり、周辺モジュールなどのコントロールレジスタなどがマッピングされる。
【００６５】
アドレス領域Ｐ１，Ｐ２は、固定された物理アドレスを有する領域であり、アドレス変換バッファＴＬＢを利用したアドレス変換の対象にはされない。アドレス領域Ｐ１，Ｐ２の論理アドレスは、一定の定数の加算又は減算によって物理アドレスに変換される。したがって、特権状態において、アドレス領域Ｐ１，Ｐ２をアクセスするとき、ＴＬＢミスを初めとするアドレス変換に係る例外事象が発生することはない。一般割り込み事象や一般例外事象などの各種例外ハンドラの物理アドレスをアドレス領域Ｐ１又はＰ２に割り当てることにより、ＴＬＢミスを初めとするアドレス変換に係る例外事象が例外処理中に新たに発生することがなくなる。換言すれば、アドレス変換に係る例外事象が、多重に発生する事態を回避でき、これによってデータ処理の効率化に寄与することができる。
【００６６】
特に、アドレス領域Ｐ２はキャッシュメモリＣＡＣＨＥによるキャッシュの対象とはされず、一方、アドレス領域Ｐ１はキャッシュの対象とされる。例外処理ハンドラに関して言えば、複数存在する例外処理ハンドラの内どの例外処理ハンドラをアドレス領域Ｐ１又はＰ２へ割り当てるかは、その例外処理の性質に応じて決定される。例えば、ＴＬＢミス例外に対処するための例外処理ハンドラのように高速処理が要求される例外処理ハンドラは、アドレス領域Ｐ１に割り当てるのが得策である。一方、例外処理の高速性が要求されない例外処理ハンドラは、キャッシュメモリを別のデータに解放しておくために、アドレス領域Ｐ２に割り当てるのが得策である。
【００６７】
《例外処理の概要》  例外処理は、特別なハンドリングが要求されるので、現在のプログラム実行を例外的に別の処理へ分岐させる処理であり、中央処理装置ＣＰＵは現在の命令（その実行は後述の割り込み要求に対しては完了まで継続することが許容される）実行を抑止し且つユーザ記述による例外ハンドラにその制御を移行することによってその例外処理の要求に応答する。例えば、例外処理は、現在実行中の命令との関係では、３つの処理に分類できる。第１の処理は、現在実行中の命令を無視して、例外ハンドラの処理へ分岐する処理である。第２の処理は、現在実行中の命令を、例外ハンドラの処理完了後に、再実行する処理である。第３の処理は、現在実行中の命令実行を完了した後に、例外ハンドラの処理へ分岐して分岐先での処理完了後に分岐前の状態に復帰する処理である。後者の二つについては、一般例外のような第１の例外事象と所謂割り込み要求のような第２の例外事象として区別することができる。割り込み要求のような第２の例外事象は、中央処理装置ＣＰＵの動作とは非同期で発生するので、実行中の命令が実行完了された段階で受け付けられ、割り込み処理に対応する例外処理ハンドラの処理が終了すると、当該実行完了された命令の次の命令に中央処理装置ＣＰＵの処理が復帰される。一般例外のような第１の例外事象は、中央処理装置ＣＰＵの動作に同期して発生するので、その要求の原因が取り除かれた後、当該例外処理の要求が発せられた時点に中央処理装置ＣＰＵの実行していた命令が中央処理装置ＣＰＵによって再実行される。ただし、全ての例外処理には双方の定義に合致しないものが存在することは言うまでもない。
【００６８】
図７は、ベクタとして割り付けられた例外事象を示している。例外処理は、図７に示されるように、リセット処理、中央処理装置ＣＰＵの動作に同期して発生する例外事象（一般例外）に対する処理、中央処理装置ＣＰＵの動作と非同期で発生する割り込み要求に対する処理に大別される。夫々の例外処理において、現在実行中の命令に対する処置は、同図に示されるように、無視（Aborted）、再実行（Retried）および完了（Completed）の３種類に大別される。
【００６９】
１）リセット処理は、パワーオンリセット（Power-On）とマニュアルリセット（Manual Reset）を含む。例えば、パワーオンリセットは、電源投入によってリセット信号がアサートされることを条件に、中央処理装置ＣＰＵや内蔵周辺モジュールの初期化を行うリセット処理とされる。
【００７０】
２）一般例外は、中央処理装置ＣＰＵの内部で発生する例外と、メモリマネージメントユニットＭＭＵによるアドレス変換に際して発生される例外に大別される。
【００７１】
前者の例外事象として、予約命令例外（Reserved Instruction Exception）、スロット不当命令例外（Illegal Slot Instruction Exception）、トラップ命令例外（Unconditional Trap）、及び命令ブレーク例外（User Breakpoint Trap）がある。
【００７２】
後者の例外事象として、命令アクセス時とデータアクセス時におけるアドレスエラー例外（Address Error）、命令アクセス時とデータアクセス時におけるＴＬＢミス例外（TLB Miss）、命令アクセス時とデータアクセス時におけるＴＬＢインバリッド例外（TLB Invalid）、命令アクセス時とデータアクセス時におけるＴＬＢプロテクト違反例外（TLB Protection Violation）、ＴＬＢイニシャルページライト例外（Initial Page Write）がある。
【００７３】
上記ＴＬＢミスは、アドレス変換バッファＴＬＢのアドレス比較が不一致である場合に発生し、当該不一致に係る論理アドレスのページテーブルエントリを外部メモリＭＭＲＹからアドレス変換バッファＴＬＢにロードする処理とされる。トラップ命令例外は、ＴＲＡＰ命令を実行することを条件に発生し、当該命令のイミディエイト値を用いた分岐先のハンドラによって規定される処理を行うものであり、ソフトウェア割り込みとして位置づけることができる。予約命令例外は、遅延分岐命令を利用するときに、遅延スロット以外にある未定義命令コードをデコードすることなどを条件に発生し、分岐先のハンドラで規定される処理を行う。命令ブレーク例外は、レジスタＩＢＲに設定されたブレーク条件が一致したことを条件に発生し、分岐先のハンドラで規定される処理を行う。
【００７４】
３）割り込み要求は、マスク不可能な割り込み（Nonmaskable Interrupt）、外部割り込み（External Hardware Interrupt）、及び内蔵周辺モジュール割り込み（Peripheral Module Interrupt）を含む。
【００７５】
例外処理の優先レベル（Priority Level）に関しては、特に制限されないが、図７に示されるように、以下のように定義される。すなわち、リセットは優先レベル１に割り当てられ、一般例外は優先レベル３に割り当てられ、マスク不可能な割り込み要求は優先度レベル２に割り当てられ、その他の割り込み要求は優先度レベル４に割り当てられる。この優先レベルは、高い順に１〜４とされ、最も高い優先レベルは１とされ、最も低い優先レベルは４とされる。
【００７６】
上記一般例外は、命令の実行シーケンスに関係して発生するので、優先レベル３が割り当てられている。優先レベル３に割り当てられている各種一般例外には、発生する命令実行段階の早遅に従って、１〜１２の実行優先度（Execution Order）が割り当てられる。命令がパイプライン的に実行される場合、ある命令の実行中に検出された優先レベル３のある一般例外は、その後の命令の実行中に検出された優先レベル３の他の一般例外に先行して受け付けられるように制御される。従って、実行優先度は、個々の命令の実行スパン内での優先度を規定しているとみなされる。特に、命令ブレーク例外（ユーザブレークトラップ例外）において、ブレークポイントとして指定されている命令の実行前にトラップを発生させる場合、命令ブレーク例外の実行優先度は１とされ、実行後にトラップを発生させる場合、命令ブレーク例外の実行優先度は１２、オペランドブレークポイントが設定されている場合も命令ブレーク例外の実行優先度は１２とされる。外部割り込みと内蔵周辺モジュール割り込みとの間での優先レベルはソフトウェアによって定義される。
【００７７】
尚、図７における一般例外内のある１部の一般例外は、命令アクセス（Instr. Access）時とデータアクセス（Data Access）時とで区別されるように図示されている。これは、図７のAddress ErrorからInitial Page Writeまでの一般例外の記載は、ある１つの命令をパイプライン的に実行するときの実行順序に従って例外要因を記載してあるためである。したがって、図７に示されるTLB Miss（Instr. Access）とTLB Miss（Data Access）は相互に同一の例外ハンドラで処理される。Address Error（Instr. Access）とAddress Error（Data Access）、TLB Invalid（Instr. Access）とTLB Invalid（Data Access）そしてTLB Protection Violation（Instr. Access）とTLB Protection Violation（Data Access）も同様である。また、図７においては、一般例外は優先レベル３に割り当てられ、マスク不可能な割り込み要求は優先度レベル２に割り当てられているが、一般例外に優先レベル２を割り当て、マスク不可能な割り込み要求に優先度レベル３を割り当てても良い。
【００７８】
《例外処理のためのベクタ配置》  夫々の例外処理の内容を規定する各種例外処理ハンドラ（例外ハンドラと総称する）は、ベクタ配置を利用して呼び出される。マイクロコンピュータＭＰＵは、そのハードウェア構成によって４種類のベクタ配置をサポートする。固定された物理アドレスＨ'Ａ０００００００はリセットのためのベクタとして割り当てられる。他の例外処理に対しては、ソフトウェアによって上記ベクタベースレジスタＶＢＲに設定されたベクタテーブルベースアドレスからの固定番地のオフセット（ベクタオフセット）が割り当てられている。それぞれのベクタオフセットは、図７に示されるように、Ｈ'０００００１００、Ｈ'０００００４００、Ｈ'０００００６００とされる。上記ＴＬＢミス例外のベクタオフセットにはＨ'０００００４００が割り当てられ、ＴＬＢミス例外以外の一般例外のベクタオフセットにはＨ'０００００１００が割り当てられ、割り込み要求のベクタオフセットにはＨ'０００００６００が割り当てられる。
【００７９】
ベクタテーブルのベースアドレスは、ベクタベースレジスタＶＢＲにソフトウェアを実行する中央処理装置ＣＰＵによってロードされる。例えば、タスク切換え若しくはプロセス切換えに際して、オペレーティングシステムのようなシステムプログラムを実行する中央処理装置ＣＰＵによってベクタベースレジスタＶＢＲの設定が行われる。ベクタテーブルのベースアドレスは、所定の固定された物理アドレス空間に配置されることになる。即ち、ベクタテーブルのベースアドレスは前記アドレス領域Ｐ１，Ｐ２に配置される。上記レジスタＶＢＲの値とベクタオフセットとによって決定されるベクタポイント（ベクタアドレス）は、ハードウェアによって規定される。即ち、ベクタポイントは、ユーザ記述によるプログラムによって規定される性質のものではない。
【００８０】
図１４は、前記固定オフセットとしてのベクタオフセットの値を生成するためのハードウェアの構成を示している。同図において、定数発生回路ＣＶＧとシフタＳＦＴは、ベクタオフセットを生成するために設けられている定数発生部或は演算手段みなされる。ベクタオフセットの値とベクタベースレジスタＶＢＲの値との加算は、算術論理演算器ＡＬＵによって行われ、加算して得られたベクタポイントは、プログラムカウンタＰＣに書き込まれる。その後、中央処理装置ＣＰＵは、プログラムカウンタＰＣに書き込まれたベクタポイントに割り当てられる例外処理ハンドラをアクセスするために、システムバスＳ−ｂｕｓ内のアドレスバスへ上記ベククポイント（論理アドレス）を発生する。メモリ管理ユニットＭＭＵは、上記ベククポイントとされる論理アドレスを受け、その論理アドレスに関するアドレス変換対をエントリとして記憶している場合、上記論理アドレスを物理アドレスに変換し、キャッシュメモリＣＡＣＨＥへ供給する。キャッシュメモリＣＡＣＨＥに上記物理アドレスに対応する命令が存在しない場合、上記物理アドレスが、キャッシュバスＣ−ｂｕｓのアドレスバス、バスステートコントローラＢＳＣ、入出力回路ＥＸＩＦ及び外部バスＥＸ−ｂｕｓのアドレスバスを介して、上記外部メモリＭＭＲＹに供給される。上記物理アドレスが外部バスＥＸ−ｂｕｓのアドレスバスヘ出力されることに同期して、上記中央処理装置ＣＰＵから出力される図示されないリード制御信号がシステムバスＳ−ｂｕｓ内の制御バス、キャッシュバスＣ−ｂｕｓの制御バス、バスステートコントローラＢＳＣ、入出力回路ＥＸＩＦ及び外部バスＥＸ−ｂｕｓの制御バスを介して上記外部メモリＭＭＲＹに供給される、上記外部メモリＭＭＲＹは、上記物理アドレスによってリードアクセスされ、その物理アドレスに格納されているデータ（第１例外ハンドラの先頭の命令データ）が、外部バスＥＸ−ｂｕｓのデータバス、入出力回路ＥＸＩＦ、バスステートコントローラＢＳＣ、キャッシュバスＣ−ｂｕｓのデータバス及びシステムバスＳ−ｂｕｓ内のデータバスを介して中央処理装置ＣＰＵへ供給されて実行される。
【００８１】
上記プログラムカウンタＰＣにセットされるベクタポイントを生成するための前記定数発生回路ＣＶＧ、シフタＳＦＴ、及び算術論理演算器ＡＬＵは、中央処理装置ＣＰＵの演算部１００に含まれる。
【００８２】
定数発生回路ＣＶＧ及びシフタＳＦＴには、割り込み通知信号ＳＩＧ１、ＴＬＢミス例外の発生を示す通知信号ＳＩＧ４ａ、及びＴＬＢミス例外以外の一般例外の発生を示す通知信号ＳＩＧ６が供給される。通知信号ＳＩＧ４ａは、メモリマネージメントユニットＭＭＵ内の制御部ＴＬＢＣから出力される前記信号ＳＩＧ４に含まれる一つの信号である。すなわち、前記信号ＳＩＧ４は、複数ビットの信号を含んでおり、前述のように、メモリマネージメントユニットＭＭＵにおけるアドレス変換に起因する例外の発生を中央処理装置ＣＰＵに通知する信号である。前記信号ＳＩＧ４には、発生した例外事象がＴＬＢミス例外であることを示す通知信号ＳＩＧ４ａ、発生した例外事象がＴＬＢミス例外以外の例外事象であることを示す通知信号ＳＩＧ４ｂなどが含まれる。通知信号ＳＩＧ６は、図示されるように、メモリマネージメントユニットＭＭＵにおけるアドレス変換に際してＴＬＢミス例外以外の例外事象が発生したとき活性化される前記信号ＳＩＧ４ｂと、中央処理装置ＣＰＵ内部において例外事象が発生したとき活性化される内部信号ＳＩＧ６ａとを受けるオア回路ＯＲの出力信号とされる。
【００８３】
前記定数発生回路ＣＶＧ及びシフタＳＦＴにおいて、発生すべき定数とシフト量は、前記信号ＳＩＧ１，ＳＩＧ４ａ，ＳＩＧ６の内のどの信号が活性化されたかに基づいて制御される。定数発生回路ＣＶＧは、例えば、バイナリコードで２ビットの定数Ｈ'１（０１）又はＨ'３（１１）を発生する。定数発生回路ＣＶＧは、通知信号ＳＩＧ４ａ又は通知信号ＳＩＧ６が活性化されると、定数Ｈ'１を発生する。定数発生回路ＣＶＧは、割り込み発生の通知信号ＳＩＧ６が活性化されると、定数Ｈ'３を発生する。シフタＳＦＴは、通知信号ＳＩＧ６が活性化されると、定数Ｈ'１（０１）に対して８ビット左シフトを行うことによってベクタオフセットＨ'１００（１.００００.００００）を出力する。ＴＬＢミス例外の通知信号ＳＩＧ４ａが活性化されると、シフタＳＦＴは定数Ｈ'１（０１）に対して１０ビット左シフトを行うことによってベクタオフセットＨ'４００（１００.００００.００００）を出力する。通知信号ＳＩＧ１が活性化されると、シフタＳＦＴは定数Ｈ'３（１１）を９ビット左シフトを行うことによって、ベクタオフセットＨ'６００（１１０.００００.００００）を出力する。特に、本実施例において、ベクタオフセットとしてＨ'１００，Ｈ'４００，Ｈ'６００を割り当てたのは、ベクタオフセットにおいて論理値”１”とされるビットの数を極力少なくするため、換言すれば、定数発生回路ＣＶＧの論理規模を小さくするためである。
【００８４】
図１４から明らかなように、ハードウェア（回路）で生成すべきベクタオフセットは３種類であるから、そのハードウェア量は２ビットの定数発生回路ＣＶＧとシフタＳＦＴだけで済む。シフタＳＦＴはベクタオフセットの生成に専用化される必然性は全くなく、その他の演算に汎用的に利用可能にすることは容易である。
【００８５】
《例外処理を指標する例外要因コード》  例外要因コード（exception code）は、図８に示されるように、夫々の例外処理の要因を識別可能にするために、夫々の例外事象に対し異なる値の例外要因コードが割り当てられる。この例外要因コードは、デバッグなどにおいて、発生した例外の要因をソフトウェア的に判定するために利用されると共に、後述されるように例外ハンドラへの分岐のためのアドレスオフセット情報としても利用される。デバッグにおいて利用可能にするため、レジスタＥＸＰＥＶＴ及びＩＮＴＥＶＴは、キャッシュバスＣ−ｂｕｓに結合され、バスステートコントローラＢＳＣ、入出力回路ＥＸＩＦ及び外部バスＥＸ−ｂｕｓを介して、マイクロコンピュータＭＰＵの外部からアクセス可能にされる。すなわち、レジスタＥＸＰＥＶＴ及びＩＮＴＥＶＴに記憶された要因コードは、マイクロコンピュータＭＰＵの外部に出力可能にされる。それによって、デバッガが、発生した例外の要因を要因コードから簡単に判別可能なる。
【００８６】
図８に示される例外要因コードは、Ｈ'２０毎に割り当てられる。これをアドレス換算すれば、３２バイト毎のアドレスオフセットとしての意味を持つ。例えば、１命令が２バイトの固定長命令であれば、１６命令の記述に相当するアドレス範囲とされる。また、図８において、一般例外のうち、アドレスエラー例外（Address Error）、ＴＬＢミス例外（TLB Miss）、ＴＬＢインバリッド例外（TLB Invalid）、ＴＬＢプロテクト違反例外（TLB Protection Violation）については、ロード命令実行時（load）とストア命令実行時（store）とで別の例外要因コードが割り当てられる。これは、デバッグの容易性を考慮して設定されている。尚、図８において、内蔵周辺モジュールの割り込み要求に関する例外要因コードについては、代表的に一つの要因コードＨ'４００だけが示されている。しかし、実際には、内蔵周辺モジュールの数およびその機能に依存して多数存在すると理解されたい。
【００８７】
図９に示される例外要因レジスタＥＸＰＥＶＴは、上記例外要因コードのうちリセット及び一般例外事象に割り当てられた例外要因コードをビット１１〜ビット０に格納する３２ビットのレジスタである。一方、割り込み要因レジスタＩＮＴＥＶＴは、上記例外要因コードのうち割り込み要求に割り当てられた例外要因コードをビット１１〜ビット０に格納する３２ビットのレジスタである。これらのレジスタＥＸＰＥＶＴ，ＩＮＴＥＶＴは、図１にも示されるように、システムバスＳ−ｂｕｓとキャッシュバスＣ−ｂｕｓとに結合され、メモリマネージメントユニットＭＭＵの制御部ＴＬＢＣ内に配置されている。その理由は、ＴＬＢミスなどの高速処理が要求される一般例外の発生を一番早く検出できるのがメモリマネージメントユニットＭＭＵの制御部ＴＬＢＣだからである。
【００８８】
例外要因コードを格納するレジスタを一般例外と割り込み要求とで個別に設ける理由は、次の理由による。すなわち、一般例外は中央処理装置ＣＰＵの動作に同期して発生し、割り込み要求は中央処理装置ＣＰＵの動作とは非同期で発生する。また、中央処理装置ＣＰＵの動作クロック周波数は、割り込み要求の発生元とされる内蔵周辺モジュール及び外部回路の動作クロック周波数に対して複数倍、例えば、４倍のクロック周波数とされる。このように、割り込み要求と一般例外の発生タイミングの相違、および、割り込み要求発生元と例外発生元の動作速度の相違を考慮した場合、双方の例外要因コードを同じようなタイミングで同一のレジスタに書き込ませることは、レジスタに対する例外要因コードの書き込みタイミングの設定処理などを煩雑にする虞があるからである。
【００８９】
図１５は、上記例外要因コードを生成するための論理ブロックの構成を示している。同図に示される論理回路ＬＯＧは、メモリマネージメントユニットＭＭＵの制御回路ＴＬＢＣに含まれる。この論理回路ＬＯＧには、割り込み要因Ａ、中央処理装置ＣＰＵ内部での例外発生状況Ｂ、メモリマネージメントユニットＭＭＵ内部での例外発生状況Ｃ、リセット指示Ｄ、その他付帯情報Ｅが供給され、これらの入力情報の状態に応じて対応する例外要因コードを生成する。
【００９０】
割り込み要因Ａは、割り込みコントローラＩＮＴＣから信号ＳＩＧ２によって論理回路ＬＯＧへ供給される。その他の付帯情報Ｅには前記割り込み受け付けの通知信号ＳＩＧ３が含まれる。論理回路ＬＯＧは、上記割り込み要因Ａとその他付帯情報Ｅの活性化状態に応答して、割り込み要因を対応する例外要因コードを生成し、生成した例外要因コードを割り込み要因レジスタＩＮＴＥＶＴにセットする。
【００９１】
前記中央処理装置ＣＰＵ内部での例外発生状況Ｂは、予約命令例外（Reserved Instruction Exception）、スロット不当命令例外（Illegal Slot Instruction Exception）、トラップ命令例外（Unconditional Trap）、及び命令ブレーク例外（User Breakpoint Trap）の発生状況を区別するための複数ビットの信号として、中央処理装置ＣＰＵから論理回路ＬＯＧに供給される。例外発生状況Ｂは、図１に示される制御信号ＳＩＧ５に含まれるとみなされる。
【００９２】
メモリマネージメントユニットＭＭＵ内部での例外発生状況Ｃは、アドレスエラー例外（Address Error）、ＴＬＢミス例外（TLB Miss）、ＴＬＢインバリッド例外（TLB Invalid）、ＴＬＢプロテクト違反例外（TLB Protection Violation）、ＴＬＢイニシャルページライト例外（Initial Page Write）の発生状況を区別するための複数ビットの内部信号として、論理回路ＬＯＧに供給される。
【００９３】
前記付帯情報Ｅは、アドレス変換に係る命令がロード命令かストア命令かを区別するための情報を含む。この情報は、中央処理装置ＣＰＵ内で実行されるべき命令の解読結果によって得られ、中央処理装置ＣＰＵから論理回路ＬＯＧに供給される。
【００９４】
論理回路ＬＯＧは、前記中央処理装置ＣＰＵ内部での例外発生状況Ｂ、メモリマネージメントユニットＭＭＵ内部での例外発生状況Ｃ及び前記付帯情報Ｅに基づいて、発生された一般例外に対応する例外要因コードを生成し、生成された例外要因コードを例外要因レジスタＥＸＰＥＶＴにセットする。
【００９５】
リセットに関する例外要因コードは、リセット信号によって形成されたリセット指示Ｄに論理回路ＬＯＧが応答し、論理回路ＬＯＧが生成する。生成されたリセットに関する例外要因コードは、論理回路ＬＯＧによって例外要因レジスタＥＸＰＥＶＴへセットされる。リセット指示Ｄは、図１に示される制御信号ＳＩＧ５に含まれるとみなされる。
【００９６】
《例外ハンドラの配置》  上記Ｈ'１００，Ｈ'４００，Ｈ'６００で規定されるベクタオフセットは、ベクタベースレジスタＶＢＲの値（ベクタテーブルのベースアドレス）からの固定されたオフセットを規定する。図２に示されるように、リセットに関する例外ハンドラは、Ｈ'Ａ００００００００の固定番地に配置される。ＴＬＢミス例外に関する例外ハンドラは、レジスタＶＢＲの値＋ベクタオフセット（Ｈ'４００）のアドレスに直接配置される。その他の一般例外及び割り込み要求に関する例外ハンドラは、レジスタＶＢＲの値にＨ'１００又はＨ'６００のベクタオフセットを加算して得られるアドレス位置に第１のハンドラ（図２に示される一般例外に共通のハンドラおよび割り込み要求に共通のハンドラ）が配置される。第１のハンドラから当該要因に固有の別の第２のハンドラへの分岐は、レジスタＥＸＰＥＶＴまたはＩＮＴＥＶＴに記憶された例外要因コードをアドレスオフセットとして利用することによって行われる。
【００９７】
アドレスオフセットとしてどのように例外要因コードを利用するかは、ベクタベースレジスタＶＢＲ＋ベクタオフセットの位置に配置されたハンドラ（ユーザ記述による）の記述内容（ソフトウェアプログラム）によって決定される。例えば、ＶＢＲ＋ベクタオフセット＋例外要因コードとして第２のハンドラへ分岐することを規定したり、或いは当該ハンドラ内部でセットしたベースアドレスに例外要因コードを加算して第２のハンドラへ分岐することを規定したり、又は例外要因コードを所定ビット数だけシフトして第２のハンドラへ分岐することを規定したりすることができる。要は、夫々の例外要因コードがＨ'２０のような所定の間隔を空けて割り振られているので、ハンドラの記述量などに応じて当該例外要因コードを所望に利用すればよい。レジスタＥＸＰＥＶＴまたはＩＮＴＥＶＴに記憶された例外要因コードをアドレスオフセットとして利用する場合、中央処理装置ＣＰＵは、システムバスＳ−ｂｕｓのアドレスバスにレジスタＥＸＰＥＶＴまたはＩＮＴＥＶＴのアドレス信号を供給し、システムバスＳ−ｂｕｓの制御バスにリード制御信号を供給して、レジスタＥＸＰＥＶＴ又はＩＮＴＥＶＴをアクセスする。リードアクセスされたレジスタＥＸＰＥＶＴ又はＩＮＴＥＶＴは、その内部に記憶された要因コードをシステムバスのデータバスへ供給し、上記ＣＰＵが、その要因コードを、例えば、１つの汎用レジスタ（Ｒ０）に格納する。それによって、上記中央処理装置ＣＰＵは、要因コードを計算に使用可能になる。なお、実際の計算は、中央処理装置ＣＰＵ内部の前記算術論理演算器ＡＬＵによって行われる。
【００９８】
例えば、図２に示されるように、ＴＬＢミス例外以外の一般例外のための例外ハンドラに関しては、当該一般例外に共通の第１のハンドラが、ＶＢＲ＋ベクタオフセット（Ｈ'１００）のベクタポイントに配置される。当該第１のハンドラは、その例外要因に対応する例外要因コードをアドレスオフセットとしてさらに別のハンドラ（第２のハンドラ）へ分岐することを規定する記述を有する。したがって、ベクタポイントに例外要因コードを加算して得られるアドレスのそれぞれに例外要因に固有の第２のハンドラをそれぞれ配置しておくことによって、所望の第２のハンドラへ分岐することができる。この場合、例外要因コードはレジスタＥＸＰＥＶＴから取得される。
【００９９】
また、割り込み要求に関する例外ハンドラも上記同様であり、ＶＢＲ＋ベクタオフセット（Ｈ'６００）のベクタポイントに、当該割り込み要求に共通の第１のハンドラが配置される。当該第１のハンドラは、その割り込み要因に対応する要因コードをアドレスオフセットとしてさらに別のハンドラ（第２のハンドラ）へ分岐することを規定する記述を有する。したがって、ベクタポイントに例外要因コードを加算して得られるアドレスのそれぞれに割り込み要因に固有の第２のハンドラをそれぞれ配置しておくことによって、所望の第２のハンドラへ分岐することができる。この場合、割り込み要求の例外要因コードは、レジスタＩＮＴＥＶＴから取得される。
【０１００】
本実施例に従えば、各種例外ハンドラはＴＬＢを利用したアドレス変換を要しない前記アドレス領域Ｐ１又はＰ２に割り当てられるので、アドレス変換に係る例外事象が多重に発生する事態を回避でき、これによって、データ処理の効率化に寄与することができる。
【０１０１】
上記の様な例外ハンドラの配置において、ＴＬＢミス例外、その他の一般例外、又は割り込み要求が発生した時、中央処理装置ＣＰＵの処理は、ＶＢＲレジスタに設定されているベクタテーブルのベースアドレスにベクタオフセットをオフセットアドレスとして加算したアドレス位置に分岐され、そのアドレス位置に配置されているハンドラを処理することになる。この分岐は、マイクロコンピュータＭＰＵのハードウェアによって規定される。そのとき、どのベクタオフセットを用いるかは、図１４で説明されたように、例外発生要因の種別によって一義的に決定される。発生した例外がＴＬＢミス例外の場合、ＶＢＲ＋ベクタオフセット（Ｈ'４００）で指定されるベクタポイントに割り付けられたハンドラはＴＬＢミス例外ハンドラとされる。その他の一般例外又は割り込み要求の場合、ＶＢＲ＋ベクタオフセットで指定されるベクタポイントのハンドラは、その例外要因の要因コードをオフセットとして分岐する処理を含み、当該分岐先にその例外要因に固有のハンドラが配置されている。
【０１０２】
トラップ命令を実行することによって発生するトラップ例外に関しては、そのトラップ命令が保有する８ビットのイミディエイト値が、図９に示されるトラップレジスタＴＲＡに格納され、その値がＶＢＲレジスタの下位のアドレスデータに加算され、加算されて得られた値によって対応する例外ハンドラがフェッチされるようになっている。トラップ命令例外は、例えば、ユーザープログラム内のタスクからオペレーティングシステムへのシステムコールに利用される。
【０１０３】
《例外処理フロー》  図１０は、上記ベクタオフセットによってベクタポイントまで分岐する処理のフローチャートが示される。ベクタポイントへの分岐は、図１４で説明したように、マイクロコンピュータＭＰＵのハードウェアによって規定され、特権状態への遷移として位置付けられる処理であり、以下のステップを含む。
【０１０４】
〔例外／割り込みの検出〕  リセット、一般例外、又は割り込み要求が発生されると、それが制御部ＣＴＲＬにて検出される（Ｓ１）。例えば、制御部ＣＴＲＬは、マニュアルリセットであればリセットスイッチの操作によって発生するリセット信号、ＴＬＢミス例外であればメモリマネージメントユニットＭＭＵの制御回路ＴＬＢＣから出力されるＴＬＢミスの検出信号など、割り込み要求であれば割り込みコントローラＩＮＴＣから中央処理装置ＣＰＵに供給される割り込み信号ＳＩＧ１に基づいて例外を検出する。中央処理装置ＣＰＵ内部の例外は、その内部状態に基づいて検出される。
【０１０５】
〔ＰＣ、ＳＲの退避〕  次に、中央処理装置ＣＰＵは、プログラムカウンタＰＣの値をセーブプログラムカウンタＳＰＣに退避し、ステータスレジスタＳＲの値をセーブステータスレジスタＳＳＲに退避する（Ｓ２）。退避のタイミングは、一般例外の場合、当該例外が発生した時点とされ、したがって、現在実行完了されていない命令のアドレスなどが退避され、復帰後はその命令が再実行されることになる。割り込み要求の場合の退避のタイミングは、その割り込み要求が発生された時点において、中央処理装置ＣＰＵがその時点に実行していた命令の実行完了を待って上記２つの値の退避が行われ、その結果として、その命令の次の命令のアドレスなどが退避されることになる。これにより、例外が発生したときプログラムカウンタＰＣの値やステータスレジスタＳＲの値をメモリ上のスタック領域に退避するためのメモリアクセスを要せず内蔵レジスタアクセスで済むため、本発明のマイクロコンピュータＭＰＵの退避処理を高速に行うことができる。
【０１０６】
〔プロセッサモードの切換え〕  中央処理装置ＣＰＵは、ステータスレジスタＳＲのモードビットＭＤを論理値１にしてマイクロコンピュータＭＰＵの動作モードを特権モードに設定する（Ｓ３）。中央処理装置ＣＰＵは、更に、ステータスレジスタＳＲのブロックビットＢＬを論理値”１”にセットして、その他の例外及び割り込みをマスクする（Ｓ３）。中央処理装置ＣＰＵは、さらに、ステータスレジスタＳＲのレジスタバンクビットＲＢを論理値１にセットして、特権状態における汎用レジスタＲ０〜Ｒ７をユーザ状態とは別のレジスタバンクに切り換える（Ｓ３）。したがって、汎用レジスタＲ０〜Ｒ７のバンク切換えを行うから、ユーザ状態におけるレジスタバンクの汎用レジスタＲ０〜Ｒ７を退避する処理は不要になる。
【０１０７】
〔例外要因のセット〕  次に、そのときの例外や割り込み要求の要因に割り当てられている例外要因コードが、図１５において説明されたように、レジスタＥＸＰＥＶＴ又はＩＮＴＥＶＴにセットされる（Ｓ４）。前者のレジスタＥＸＰＥＶＴには一般例外要因又はリセットの要因コードが、後者レジスタＩＮＴＥＶＴには割り込み要求の要因コードが，ＭＭＵ内の論理回路ＬＯＧによってセットされる。
【０１０８】
〔ベクタポイントに分岐〕  上述のように、中央処理装置ＣＰＵの制御は、所定のベクタポイントに分岐される（Ｓ５）。例外処理がリセットである場合、固定番地Ｈ'Ａ００００００００に分岐される。一般例外や割り込み要求の場合、レジスタＶＢＲのベクタテーブルベースアドレスに所定のベクタオフセットが加算されたアドレスに、中央処理装置ＣＰＵの制御が分岐される。分岐されたベクタポイントには、図２に示されるように、所定のハンドラが置かれている。リセットの場合、リセットのための例外ハンドラが配置され、ＴＬＢミス例外の場合、ＴＬＢエントリ更新などのためのＴＬＢミス例外ハンドラが置かれている（図２参照）。ＴＬＢミス例外以外の一般例外の場合、あるいは、割り込み要求の場合、例外要因に固有の別のハンドラに分岐するための処理を含むハンドラ（図２に示される一般例外に共通なハンドラ、割り込み要求に共通なハンドラ）が配置されている。
【０１０９】
命令実行中にＴＬＢミス例外が発生したときには、ＴＬＢミスに係る論理ページアドレスに対応する物理ページアドレスを外部メモリＭＭＲＹ上のページテーブルから読み出してアドレス変換バッファＴＬＢを更新し、物理アドレスへの変換を行わなくてはならないため、そのＴＬＢミス例外の発生からその対処への遷移時間は命令実行速度若しくは中央処理装置ＣＰＵによるデータ処理速度に大きな影響を与える。したがって、データ処理性能にもっとも大きな影響を与えると考えられるＴＬＢミス例外ハンドラを上記ベクタポイントに直接配置することは、中央処理装置ＣＰＵの制御を例外ハンドラに引き渡すまでの処理時間を著しく短縮させる。それによって、マイクロコンピュータＭＰＵのデータ処理速度の高速化が実現できる。
【０１１０】
図１１は、上記ベクタポイントに置かれた例外ハンドラ（リセットハンドラやＴＬＢミス例外ハンドラを除く）の処理フローの一例を示している。この処理は、上述のように、専らソフトウェアによって規定され、以下の処理ステップを含む。
【０１１１】
先ず、後から発生した別の例外や割り込み要求を多重に受け付けるか否かが決定される（Ｓ１１）。その決定は、当該ハンドラの記述に従う。
【０１１２】
多重に割り込み要求などを受け付けない場合、レジスタＥＸＰＥＶＴ，ＩＮＴＥＶＴから例外要因コードをリードし（Ｓ１２）、例外要因コードをアドレスオフセットとして利用して、対応する例外ハンドラに分岐するための処理が行われる（Ｓ１３）。中央処理装置ＣＰＵが、ＶＢＲ＋ベクタオフセット＋例外要因コードの計算を実行し、その計算されたアドレスに割付けられる例外ハンドラ、すなわち、分岐先の例外ハンドラへ処理が移行される。それによって中央処理装置ＣＰＵが、発生した例外に対処する。
【０１１３】
多重に割り込み要求などを受け付ける場合、図１０で説明した処理フローを保証するために、中央処理装置ＣＰＵは、セーブステータスレジスタＳＳＲ，セーブプログラムカウンタＳＰＣなど、図１０のハンドラで利用するレジスタのデータを外部メモリＭＭＲＹに退避する（Ｓ１４）。中央処理装置ＣＰＵは、更に、ステータスレジスタＳＲのブロックビットＢＬを論理値”０”にセットして、その他の例外及び割り込みに対するマスクを解除する（Ｓ１５）。その後、上記同様、中央処理装置ＣＰＵは、レジスタＥＸＰＥＶＴ，ＩＮＴＥＶＴから例外要因コードをリードし（Ｓ１６）、例外要因コードをアドレスオフセットとして対応する例外ハンドラに分岐される（Ｓ１７）。すなわち、中央処理装置ＣＰＵが、ＶＢＲ＋ベクタオフセット＋例外要因コードの計算を実行し、その計算されたアドレスに割付けられる例外ハンドラ、すなわち、分岐先の例外ハンドラへ処理が移行される。それによって中央処理装置ＣＰＵが、発生した例外に対処する。
【０１１４】
図１０及び図１１のフローチャートから明らかなように、ＴＬＢミス例外に対するように高速処理を最優先とするものに対しては、レジスタＶＢＲの値を１回リードしてそれにベクタオフセット（Ｈ'４００）を加算するだけでＴＬＢミス例外ハンドラのベクタポイントを取得できる。また、別の例外要因に対しては、レジスタＶＢＲの値にベクタオフセットを加算して得られるベクタポイントの取得に加えて、レジスタＥＸＰＥＶＴ又はＩＮＴＥＶＴの値を１回リードして得た例外要因コードをアドレスオフセットとする事により所要の例外ハンドラに分岐できる。この分岐においても、分岐先アドレスを直接メモリアクセスによって取得することなく高速に例外に応ずる処理に制御を移すことができる。
【０１１５】
図１１からも明らかなように、多重に例外や割り込みを受け付けるか否かはハードウェアによって規定されたベクタポイントのアドレスに割り当てられたハンドラの記述によって決定される。例外の多重受け付けを許容する場合には、退避レジスタＳＳＲ，ＳＰＣに既に退避されている値を外部メモリＭＭＲＹへ退避する。ＴＬＢミス例外の様に高速処理が必要な場合、多重の例外や多重割り込みを禁止したまま、ＴＬＢミス例外ハンドラを実行するので、セーブステータスレジスタＳＳＲ，セーブプログラムカウンタＳＰＣのメモリへの退避を一切要せず、この点において、ＴＬＢミス例外の発生からＴＬＢミスハンドラへの遷移時間を最短にする事を保証している。
【０１１６】
図１２は、一般例外や割り込み要求に対処するための例外処理へ分岐した後、分岐先において、例外や割り込みが新たに発生した場合の処理フローを示している。
【０１１７】
例外や割り込みが新たに発生したとき（Ｓ２１）、ステータスレジスタＳＲのブロックビットＢＬが論理値”１”であるか否か（Ｓ２２）、そして当該新たに発生した例外や割り込みが命令ブレーク例外であるか否か（Ｓ２３）によって、当該新たに発生した例外や割り込みを受け付ける否かが決定される。ＳＲ．ＢＬ＝０によって多重受け付けが許容されている場合には図１０、図１１のフローに従って処理される（Ｓ２４）。
【０１１８】
上記ＳＲ．ＢＬ＝１によって例外の多重受け付けが禁止されている場合（Ｓ２２のＹＥＳ）、そのときに発生した一般例外が命令ブレーク例外でなく（Ｓ２３のＮＯ）、且つ、それが割り込み要求の場合（Ｓ２５のＹＥＳ）、ソフトウェアがＳＲ．ＢＬ＝０にするまで（例えば、前記ステップＳ１４の処理を終えてステップＳ１５に進むまで）、当該割り込みの受け付けが抑止される（Ｓ２６）。それが一般例外やリセットの場合（Ｓ２５のＮＯ）、例外要因コードをレジスタＥＸＰＥＶＴにセットした後、自動的にリセットハンドラに分岐される（Ｓ２７）。
【０１１９】
そのときの例外事象が命令ブレーク例外である場合、図１０のハードウェア処理において、ＳＰＣ，ＳＳＲ，ＥＸＰＥＶＴの各レジスタは更新されず、中央処理装置ＣＰＵの処理は命令ブレークハンドラに分岐し、当該ハンドラの処理によってレジスタＳＰＣ，ＳＳＲをメモリに退避する。そして、さらに、ブレークレジスタＩＢＲのブレークポイントアドレスから復帰アドレスが計算され、当該復帰アドレスがセーブプログラムカウンタＳＰＣにセットされる。そして、命令ブレーク例外に対処するための命令ブレーク例外ハンドラの処理が行われる。命令ブレーク例外ハンドラからの復帰は、レジスタＳＰＣに退避された復帰アドレスが利用され、命令ブレークポイントの次からデバッグ対象プログラムを継続して実行することができる。このように、命令ブレーク例外に対しては、多重に発生する例外の受け付けが禁止されている状態のデバッグ対象プログラムに対しても任意の位置で命令ブレークをかけてシステム評価やプログラムデバッグを行うことができる。
上記実施例によれば以下の作用効果がある。〔１〕  ＴＬＢミス例外に対するように高速処理を最優先とするものに対しては、レジスタＶＢＲの値を１回リードし、その値にベクタオフセット（Ｈ'４００）を加算するだけでＴＬＢミス例外ハンドラのベクタポイント（分岐先アドレス）を取得できる。また、別の例外要因に対しては、レジスタＶＢＲの値にベクタオフセットを加算して得られたベクタポイントに、さらに、レジスタＥＸＰＥＶＴ又はＩＮＴＥＶＴの値を１回リードして得た例外要因コードをアドレスオフセットとして加算する事により、所要の例外ハンドラの先頭アドレス（分岐先アドレス）を取得できる。このように、分岐先アドレスを外部メモリのアクセスによって取得しないため、例外発生からその例外に対処するためのハンドラの処理へ遷移するまでの遷移時間が短縮される。これによって、マイクロコンピュータＭＰＵの全体的なデータ処理速度の高速化が実現できる。換言すれば、データ処理の高速化に密接なＴＬＢミス例外のような処理に対しては、その例外処理への遷移時間を短縮することが最優先とされ、例外処理への遷移時間の短縮がＴＬＢミス例外程データ処理速度の高速化に寄与しないと考えられる割り込みなどに対しては、ハンドラのマッピングやハンドラのサイズに対して融通性を持たせ、ユーザの使い勝手の向上が計られる。
【０１２０】
〔２〕ベクタベースレジスタの値とベクタオフセットとを加算して得られたアドレスに配置された例外ハンドラの内の一部の例外ハンドラ（ＴＬＢミス例外ハンドラ）だけが、対応する例外に対して直接的な例外処理を行なう。その他の例外に対しては、例外要因コードをアドレスオフセットに利用して、更に、分岐されて所定のハンドラにたどり着くようになっている。換言すれば、ベクタベースアドレスに対する固定のオフセットであるベクタオフセットの数は例外要因の数よりも遥かに少ない。全ての例外要因に対して固有の固定オフセット（ベクタオフセット）を利用する場合、例外要因が増えるほどベクタオフセットを生成するためのハードウェア量が増大する。それゆえ、マイクロコンピュータの形成される半導体チップの面積は増加し、マイクロコンピュータ自体のコストも、高くなってしまうと考えられる。しかしながら、本発明のような例外処理においては、物理的な回路規模の縮小とデータ処理の高速化との双方を満足させることができる。したがって、本発明のマイクロコンピュータＭＰＵは、小面積の半導体チップに形成することができ、そのコストも低減される。
【０１２１】
〔３〕多重に例外や割り込みを受け付けるか否かは、ハードウェアによって規定されたベクタポイントのハンドラの記述によって決定される。多重な例外の受け付けを許容する場合、退避レジスタＳＳＲ，ＳＰＣに既に退避されている値が、さらに、外部メモリＭＭＲＹに退避される。ＴＬＢミス例外の様に高速処理が必要な場合、多重例外や多重割り込みを抑止した状態で、例外処理ハンドラが実行されるので、セーブステータスレジスタＳＳＲ，セーブプログラムカウンタＳＰＣの外部メモリＭＭＲＹへの退避を一切必要としない。この点において、ＴＬＢミス例外の発生からＴＬＢミスハンドラへの遷移時間を最短にする事が保証される。
【０１２２】
〔４〕ハードウェアで決定されるベクタポイントのハンドラから、更に、別のハンドラに分岐する際、例外要因コードが分岐のためのアドレスオフセットとして利用される。換言すれば、夫々の例外要因コードをアドレスオフセットとして利用できるように、例えば、アドレス換算で３２バイト分に相当するようなＨ'２０の間隔を置いて例外要因コードが割り当てられている。そのため、例外要因コード（アドレスオフセット）に対するベースアドレスは、ハードウェアによって決定されているベクタポイントに配置される例外処理ハンドラのプログラム記述に従って自由に決定できることになる。このことは、実際の分岐先アドレスや分岐先のハンドラのサイズ対してユーザの自由度を保証する。
【０１２３】
〔５〕内部状態及び復帰命令アドレスを退避するレジスタＳＳＲ，ＳＰＣを採用することにより、例外発生時の退避に際して外部メモリへアクセスを減らすことができる。
【０１２４】
〔６〕中央処理装置ＣＰＵの動作に同期して発生する一般例外と非同期で発生する割り込み要求との双方に対処するため、一般例外に関する例外要因コードを格納するレジスタＥＸＰＥＶＴと割り込み要求に関する例外要因コードを格納するレジスタＩＮＴＥＶＴとが設けられる。双方の例外発生に対して同じようなタイミングで要因コードを共通のレジスタに書き込むための煩雑な処理を避けられ、例外要因コードを各レジスタにセットする処理を簡素化できる。
【０１２５】
〔７〕リセット例外ハンドラやＴＬＢミス例外処理ハンドラ（例外要因に応じてハードウェアで決定されている分岐先のハンドラ）の処理において、初期的なプロセッサモードが、例外の多重受け付け抑止状態及び特権状態への移行によって一定にされる。したがって、ユーザの当該ハンドラ上で規定できる例外処理の内容は高い自由度を保証される。
【０１２６】
〔８〕汎用レジスタＲ０〜Ｒ７のレジスタバンクを特権状態においてのみソフトウェアで切り換え可能にすることにより、中央処理装置ＣＰＵは、特権状態において、ユーザ状態とは異なるバンクの汎用レジスタＲ０〜Ｒ７を利用できる。このことは、例えば、例外処理においてユーザ状態から特権状態にプロセッサモードを切り換える時、汎用レジスタＲ０〜Ｒ７の内容の外部メモリＭＭＲＹへの退避を省略できることを意味する。この点においても、例外発生からそれに対処する処理へ遷移するまでの遷移時間が短縮される。
【０１２７】
〔９〕多重例外を抑止した状態の例外ハンドラの処理において、命令ブレーク例外を処理可能にすることにより、多重に発生する例外の受け付けが禁止されている状態のデバッグ対象プログラムに対しても任意の位置で命令ブレークをかけてシステム評価やプログラムデバッグを行うことができることを保証できる。
【０１２８】
〔１０〕アドレス領域Ｐ１，Ｐ２は、対応する物理アドレスが固定とされる領域であり、アドレス変換バッファＴＬＢを利用したアドレス変換の対象とはされない。特権状態において、アドレス領域Ｐ１，Ｐ２をアクセスするときには、ＴＬＢミスを初めとするアドレス変換に係る例外を多重に生ずることはない。したがって、割り込みや一般例外などの各種例外ハンドラをアドレス領域Ｐ１又はＰ２に配置することにより、ＴＬＢミスを初めとするアドレス変換に係る例外が例外処理中に新たに生ずることがなくなる。換言すれば、アドレス変換に係る例外が多重に発生する事態を回避できので、中央処理装置ＣＰＵのデータ処理を効率化することができる。
【０１２９】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１３０】
例えば、ハードウェアで決定されるベクタオフセットはＨ'１００，Ｈ'４００，Ｈ'６００に限定されず、また、アドレスオフセットを規定する要因コードやその割り当て間隔も上記実施例に限定されず、適宜変更可能である。また、例外は、上記実施例のリセット、一般例外、割り込み要求に大別する考え方に限定されない。さらに、ハードウェアによって決定された第１のベクタポイントに直接ＴＬＢミス例外ハンドラを配置したが、当該ベクタポイントに配置できる例外ハンドラは、それに限定されず、システム構成に応じて適宜変更できる。また、上記第１のベクタポイントから分岐される第２のポイントに配置した別の例外ハンドラにおいては、更に、別のハンドラに分岐できることは言うまでもない。その場合にも要因コードをアドレスオフセット情報として利用するが可能である。
【０１３１】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、データプロセッサ、マイクロプロセッサ、ディジタルシグナルプロセッサなどその称呼の如何に関わらず例外処理をサポートする各種データ処理装置に広く適用することができる。
【図面の簡単な説明】
【０１３２】
【図１】本発明の一実施例に係るシングルチップマイクロコンピュータのブロック図である。
【図２】例外発生時におけるハードウェアによるベクタポイントとポイントされたハンドラから更に別のハンドラに分岐する本実施例の手法を概念的に示した説明図である。
【図３】バンク構成の汎用レジスタ及びシステムレジスタの説明図である。
【図４】ユーザモードにおける図３の汎用レジスタ及びシステムレジスタの状態説明図である。
【図５】特権モードにおける図３の汎用レジスタ及びシステムレジスタの状態説明図である。
【図６】コントロールレジスタの説明図である。
【図７】割り込み要因とベクタオフセットの割り当てなどを示す説明図である。
【図８】割り込み要因とそれに割り当てられた割り込み要因コードとの対応説明図である。
【図９】例外要因レジスタ及びトラップレジスタの説明図である。
【図１０】ハードウェアによって決定されたベクタポイント処理の一例フローチャートである。
【図１１】ベクタポイントに置かれたハンドラの処理の一例フローチャートである。
【図１２】割り込み又は一般例外ハンドラによる処理において別の割り込み又は一般例外が発生した場合における処理の一例フローチャートである。
【図１３】本実施例に係るマイクロコンピュータの一例アドレスマップである。
【図１４】ベクタオフセットを生成するハードウェアの一例ブロック図である。
【図１５】例外要因コードを生成する論理の一例ブロック図である。
【符号の説明】
【０１３３】
ＭＰＵ  マイクロコンピュータ
ＣＰＵ  中央処理装置
ＣＴＲＬ  制御部
ＰＣ  プログラムカウンタ
ＳＰＣ  セーブプログラムカウンタ
ＳＲ  ステータスレジスタ
ＭＤ  モードビット
ＲＢ  レジスタバンクビット
ＢＬ  ブロックビット
ＳＳＲ  セーブステータスレジスタ
ＶＢＲ  ベクタベースレジスタ
Ｒ０〜Ｒ１５  汎用レジスタ
ＵＢＣ  命令ブレークコントローラ
ＩＢＲ  命令ブレークアドレスレジスタ
ＭＭＵ  メモリマネージメントユニット
ＴＬＢ  アドレス変換バッファ
ＴＬＢＣ  制御部
ＥＸＰＥＶＴ  一般例外用の例外要因レジスタ
ＩＮＴＥＶＴ  割り込み要求用の例外要因レジスタ
ＴＲＡＰ  トラップレジスタ
ＣＶＧ  定数発生回路
ＳＦＴ  シフタ
【図１】
2004272939.tif 000003
【図２】
2004272939.tif 000004
【図３】
2004272939.tif 000005
【図４】
2004272939.tif 000006
【図５】
2004272939.tif 000007
【図６】
2004272939.tif 000008
【図７】
2004272939.tif 000009
【図８】
2004272939.tif 000010
【図９】
2004272939.tif 000011
【図１０】
2004272939.tif 000012
【図１１】
2004272939.tif 000013
【図１２】
2004272939.tif 000014
【図１３】
2004272939.tif 000015
【図１４】
2004272939.tif 000016
【図１５】
2004272939.tif 000017