JP3822885B2 - 1チップデータプロセッサ - Google Patents

1チップデータプロセッサ Download PDF

Info

Publication number
JP3822885B2
JP3822885B2 JP2004182149A JP2004182149A JP3822885B2 JP 3822885 B2 JP3822885 B2 JP 3822885B2 JP 2004182149 A JP2004182149 A JP 2004182149A JP 2004182149 A JP2004182149 A JP 2004182149A JP 3822885 B2 JP3822885 B2 JP 3822885B2
Authority
JP
Japan
Prior art keywords
exception
address
handler
register
instruction
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
JP2004182149A
Other languages
English (en)
Other versions
JP2004272939A (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.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
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 Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2004182149A priority Critical patent/JP3822885B2/ja
Publication of JP2004272939A publication Critical patent/JP2004272939A/ja
Application granted granted Critical
Publication of JP3822885B2 publication Critical patent/JP3822885B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、リセット、例外事象や割り込み事象などの例外発生時に、その例外に対処するため例外処理プログラムを実行するデータ処理装置に関し、特に、例外の発生時点からその例外に対処するための例外処理ハンドラへ遷移するまでの遷移時間を短縮する技術に関する。本発明は、例えば、シングルチップマイクロコンピュータあるいはメモリ管理ユニットを内蔵するマイクロプロセッサに適用して有効な技術に関する。
上記データ処理装置に含まれる中央処理装置を用いたデータ処理の途中において、そのデータ処理装置の命令セット内に定義されていない未定義命令のデコード、無効な演算の発生、仮想記憶における記憶保護違反、TLBミスなどの一般的な例外事象(一般例外事象とも言う:general exception events)が発生する場合や、データ処理装置の外部周辺回路におけるデータ入出力動作の終了を中央処理装置に通知するための終了通知やデータ処理装置内の通信モジュールからの受信要求などの割り込み要求(一般割り込み事象とも言う:general interrupt events)が発生する場合がある。
上記のような一般例外事象や一般割り込み事象などの例外(例外事象)が発生すると、上記中央処理装置は、データ処理プログラムの命令の実行を抑止し、発生した例外に対処するための例外処理ハンドラに制御を移行し、上記例外処理ハンドラによって規定されるデータ処理を実行し、発生した例外に対処する。上記例外処理ハンドラを実行した後、中央処理装置は、上記実行を抑止した命令を再実行し、あるいは、上記実行を抑止した命令の次の命令アドレスに復帰し、中断していた所定のデータ処理プログラムを継続する。そのため、一般例外事象や一般割り込み事象が発生した時、中央処理装置はその内部のプログラムカウンタの値やステータスレジスタの内部状態を外部メモリのスタック領域へ退避させるような動作を実行する。中央処理装置の処理が例外処理ハンドラの処理から上記抑止されたデータ処理プログラムへ復帰する時、中央処理装置は上記退避させたプログラムカウンタの値やステータスレジスタの内部状態を上記外部メモリのスタック領域からプログラムカウンタやステータスレジスタへそれぞれ格納し、上記抑止されたデータ処理プログラムを継続する。
所定のデータ処理プログラムから所定の例外処理ハンドラの処理への分岐手法としては、ハードウェア(論理回路)によって各種の分岐先アドレス(各種の例外処理ハンドラの先頭メモリアドレス)を固定する手法や、中央処理装置から分岐先アドレスを指定可能にするベクタ方式が採用されている。ベクタ方式は、例えば、割り込み要求に応答するための各種例外処理ハンドラの先頭アドレスを格納したベクタテーブルを外部メモリ上に配置し、中央処理装置から上記ベクタテーブルのポインタ(割り込みベクタレジスタ)を指定し、指定されたベクタテーブルから対応する例外処理ハンドラの先頭アドレスをリードし、リードした先頭アドレスの位置から所要の例外処理ハンドラをリードして実行する。
尚、割り込み要求などの例外について記載された文献の例としては、昭和62年12月25日に株式会社オーム社発行の「マイクロコンピュータハンドブック」第177頁及び第178頁がある。
「マイクロコンピュータハンドブック」、株式会社オーム社、昭和62年12月25日、p.177−178
しかしながら、上述のベクタ方式では、例外事象が発生してそれに対処するまでに、ベクタテーブルから対応する例外処理ハンドラの先頭アドレスを取得するための外部メモリのリード動作が必要となる。したがって、その外部メモリのリード動作の分だけ、例外事象の発生から対応ハンドラへ分岐するまでの遷移時間が長くなることがわかった。また、対応する例外処理ハンドラに分岐する前に、プログラムカウンタやステータスレジスタ、さらには汎用レジスタのデータなどを外部メモリ上のスタック領域に退避する操作を行う場合には、そのための外部メモリの書き込み動作によっても例外事象に対する応答が遅れることがわかった。
特に、中央処理装置の動作に同期して発生するTLBミスに関する例外に対して高速に応答することは、TLBミスの発生時点から上記抑止された命令の再実行までの時間を短縮できることを意味し、中央処理装置のデータ処理性能を向上させる上で究めて重要であることが本発明者によって見出された。なぜなら、TLBミスは、例外として分類されているものの、実際には、ユーザーの作成したデータ処理プログラムのプログラミングミスで発生するような本質的な例外と異なり、プログラミングミスの無いデータ処理プログラムの実行中において通常的に発生する事象である。したがって、TLBミスに高速に対処することが、中央処理装置のデータ処理性能を向上させる事になる。
更に、各種分岐先アドレスをハードウェアによって完全に固定にする手法も考えられるが、この手法はユーザ記述に係る例外処理ハンドラのマッピングやそのプログラムサイズに対する融通性がなく、使い勝手が悪いことがわかった。また、分岐先アドレスを生成するためのハードウェア量も増大すると考えられる。
本発明の目的は、例外事象の発生時点からそれに対処するための例外処理ハンドラへ遷移あるいは分岐するまでの遷移時間を短縮できるデータ処理装置を提供することにある。
本発明の別の目的は、例外事象に応答するための例外処理ハンドラの構成に自由度を持たせることができるデータ処理装置を提供することにある。
本発明の更に別の目的は、データ処理の高速化に密接なTLBミス例外のような処理に対しては、その処理への遷移時間を短縮することが可能であり、かつ、例外処理への遷移時間の短縮がTLBミス例外ほどデータ処理速度の高速化に寄与しないと考えられる例外事象や割り込み事象に対しては、例外処理ハンドラのメモリ上でのマッピングや例外処理ハンドラのメモリサイズに対する高い融通性を持たせることが可能なデータ処理装置を提供することにある。
本発明のその他の目的は、例外処理の点において物理的な回路規模の縮小とデータ処理の高速化との双方を満足させ、低コストかつ高速なデータ処理装置を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
データ処理装置は、図1に例示されるように、例外事象(例えばリセット、一般例外事象、一般割り込み要求)の発生に応答し、上記例外事象に予め割り当てられた例外コードが書き込まれる記憶回路(EXPEVT,INTEVT)と、プログラムカウンタ(PC)と、上記例外事象の発生に応答し、所定の命令アドレスを上記プログラムカウンタに書き込み、上記命令アドレスに割り当てられた第1例外処理ハンドラを実行可能にする制御手段(CTRL)とを含む中央処理装置(CPU)とを備える。
上記制御手段は、上記第1例外処理ハンドラ内に規定される処理にしたがって、上記第1例外処理ハンドラから第2例外処理ハンドラへ分岐させるための第2命令アドレスを、前記記憶回路に書き込まれた上記要因コードをアドレスオフセットとして利用して算出させ、得られた第2命令アドレスを上記プログラムカウンタへ設定する。
上記所定の命令アドレスへの分岐は、例えば、図2に例示されたハードウェアによるベクタポイントの操作とされる。上記所定の命令アドレス(分岐先のベクタポイント)に割り当てられる第1例外処理ハンドラは、例えば、図2に例示されるように、そのベクタポイントに固有の一つの一般例外事象であるTLBミス例外処理ハンドラ、或いはそのベクタポイントに固有の複数の例外事象(例えば、TLBミス例外以外の複数の一般例外事象)に共通の例外処理ハンドラ、又は複数の割り込みに共通の例外処理ハンドラとされる。上記共通の例外処理ハンドラにおいて、個々の例外に固有の別の例外処理ハンドラ(第2例外処理ハンドラ)へ分岐するためのアドレスオフセットとして、上記要因コードが利用される。上記要因コード(アドレスオフセット)に対するベースアドレスは、上記共通の例外処理ハンドラの記述によって決定される。ベースアドレスは、例えば、VBR(ベクタベースレジスタの値)+H'100(記号H'は16進数であることを意味する)であっても、また、分岐時におけるプログラムカウンタの値をベースアドレスとし、さらには適当に演算して算出された値をベースアドレスにすることも可能である。
上記手段を別の観点より把握すれば、データ処理装置は、例外事象の発生に応じて中央処理装置による命令実行順序を変更するために、ベクタベースアドレスに対する固定のオフセットであるベクタオフセットを、例外要因の数よりも少ない数だけ有する。
本発明に従うデータ処理装置は、例外事象の発生時にステータスレジスタの内部状態が退避される第1退避レジスタ(SSR)と、プログラムカウンタ(PC)が保持していたところの例外処理から復帰した後に実行されるべき命令を示している復帰命令アドレスが退避される第2退避レジスタ(SPC)と含む。上記第1及び第2退避レジスタの採用によって、ステータスレジスタの内部状態や復帰命令アドレスの退避のための外部メモリのメモリアクセス回数を減らすことができる。
さらに、本発明に従うデータ処理装置の中央処理装置は、図2に例示したハードウェアによるベクタポイントの操作のため、算術論理演算回路(ALU)と、上記例外の発生に応答して所定の値(ベクタオフセット)を発生する定数発生部あるいは演算手段(CVG,SFT)と、外部メモリに記憶された複数の例外処理ハンドラのベースアドレスを格納するベースレジスタ(VBR)とを有する。上記算術論理演算回路は、上記制御回路の制御の下で、上記ベースアドレスと上記所定の値とを加算し、上記所定の命令アドレス(分岐先命令アドレス)とを発生する。例えば、図2に従えば、TLBミス例外を除く一般例外のベクタオフセットはH'100とされ、TLBミス例外のベクタオフセットはH'400とされる。上記定数発生部は、2ビットの定数を発生する定数発生回路(CVG)と、上記定数発生回路から出力された2ビットの定数を所定の量だけシフトするシフト回路(SFT)とから構成され、その回路構成が簡単化されている。
要因コードを記録する記憶回路としてのレジスタは、中央処理装置(CPU)の動作に同期して発生する第1の例外事象(例えば一般例外)に割り当てられた第1レジスタ(EXPEVT)と、中央処理装置の動作と非同期で発生する第2の例外事象(例えば割り込み)に割り当てられた第2レジスタ(INTEVT)とされる。なお、リセットは、第2の例外事象の範疇に含められる。
上記ステータスレジスタ(SR)は、上記データ処理装置の動作状態が、ユーザプログラムが走行されているユーザ状態か、あるいはシステムプログラムが走行されている特権状態かを択一的に示すデータが格納される第1制御ビット(MD)と、上記例外事象の発生後に発生した他の例外事象を受け付けるか無視する(マスク)か否かを指示するデータが格納される第2制御ビット(BL)とを有する。
上記制御手段は、前記内部状態と上記復帰命令アドレスとを上記第1退避レジスタ(SSR)と上記第2退避レジスタ(SPC)ヘそれぞれ退避した後、上記第1制御ビットに特権状態を示すデータを設定し、上記第2制御ビットに上記例外事象の発生後に発生した他の例外事象を無視する事を示すデータを設定し、上記所定の命令アドレスに割り付けられた第1例外処理ハンドラに分岐させる。上記第1及び第2制御ビットに対するアクセスは、所定の特権命令(例えばLDC,STC)にて可能にされる。即ち、図2に例示されように、ベクタポイントに割り当てられた上記第1例外処理ハンドラ上でのプロセッサモードは、特権状態及び例外の多重受け付け抑止の状態とされる。ここで、特権状態は、ユーザ状態ではアドレスエラーとされるアドレス空間をアクセス可能な状態であり、ユーザ状態では実行不可能な特権命令(例えばLDC,STC)を実行することができる、という点においてユーザ状態と相違される。
例外発生時における内部状態の退避と復帰アドレスの退避を第1及び第2退避レジスタにできるようにするため、ベクタポイントに割り当てられた上記第1例外処理ハンドラ上では、新たに発生する例外の多重受け付けを抑止するか否かを決定してその内容を上記制御ビットに反映し、多重に受け付けるときは上記第1及び第2の退避レジスタの内容をメモリに退避させる。
例外発生時の汎用レジスタのメモリ退避を低減させ、或は、汎用レジスタに対する処理の自由度を向上させるため、複数のバンクを構成する第1及び第2汎用レジスタセットが設けられる。上記第1及び第2汎用レジスタセットの一方は、前記特権状態における汎用レジスタとして利用され、上記第1及び第2汎用レジスタセットの他方は、前記ユーザ状態における汎用レジスタとして利用される。汎用レジスタのレジスタバンクを前記特権状態においてのみソフトウェアで切り換え可能にするとよい。
本発明に従うデータ処理装置は、さらに、命令ブレークコントローラ(UBC)を有する。命令ブレークコントローラ(UBC)は、ブレークポイントアドレスが設定される命令ブレークアドレスレジスタ(IBR)を含み、上記命令ブレークアドレスレジスタに設定された命令アドレスに対応する命令が中央処理装置によって実行された時、命令ブレーク例外を発生する。前記制御手段は、例外の多重受け付け抑止が指示された状態において前記命令ブレーク例外を検出したとき、前記第1及び第2退避レジスタへの内部状態及び復帰命令アドレスの退避を行わずに命令ブレーク例外ハンドラに分岐させる。、上記命令ブレーク例外ハンドラは、上記状態及び復帰アドレス退避用の退避レジスタの内容をメモリに退避した後、前記命令ブレークアドレスレジスタが保有するブレークポイントアドレスを利用して命令ブレーク例外ハンドラからの復帰命令アドレスを計算し、計算した復帰命令アドレスを前記第2退避レジスタに書き込む。これにより、前記例外の多重受け付けが抑止された状態の例外処理ハンドラで、前記命令ブレーク例外を処理可能とする。
上記において、前記制御手段は、更に、例外の多重受け付けを抑止した状態において、前記命令ブレーク例外以外の第1の例外を検出したときは、前記要因レジスタにその要因コードを記録した後にリセット例外のハンドラに分岐させ、また、第2の例外を検出したときは、例外の多重受け付け抑止の状態が解除されるまで第2の例外の受け付けを抑止する。
上記した手段によれば、ベクタポイント割り付けられたら第1例外処理ハンドラは、ある例外要因(例えばTLBミス例外)に対してはそれ固有の一つの例外ハンドラとされ、他の例外要因(例えばTLBミス例外以外の一般例外)に対しては夫々の要因に対応して設けられた別の例外処理ハンドラとされる第2例外処理ハンドラ(例えば、アドレスエラー例外、TLBプロテクト違反例外)へ分岐させるための記述を含む共通の例外処理ハンドラとされる。
前者においては、メモリアクセスを伴わずにハードウェアによる処理だけで特定の第1例外処理ハンドラに分岐できるので、所望の例外処理へ高速に移行することが可能になる。後者においては、さらに別のハンドラに分岐するためのアドレスオフセットとして記憶回路(要因レジスタ)の例外要因コードを利用するので、分岐先アドレスの取得にメモリ上のアドレステーブルをアクセスすることが必要とされない。従って、この場合にも、所望の例外処理ハンドラへの高速な移行が可能なる。
見方を変えれば、後者において要因レジスタに保持されている例外要因コードは、さらに別の例外処理ハンドラに分岐するためのアドレスオフセットとして利用できるようにコード割り当てが行われているということである。例えば、アドレス換算で32バイト分に相当するようなH'20の間隔を置いてコード割り当てが行われている。
更に、後者において、例外要因コードは分岐のためのアドレスオフセットとして利用されるので、当該オフセットに対するベースアドレスはハードウェアによって決定されているベクタポイントに割り当てられた第1例外処理ハンドラの記述に従って自由に決定でき、実際の分岐先アドレスや分岐先の例外処理ハンドラのサイズ対して自由度を保証することができる。
内部状態及び復帰命令アドレスを退避するレジスタ(SSR,SPC)を採用することは、例外発生時の退避に際してメモリアクセスを減らす。
中央処理装置の動作クロックの周波数が割り込み要求の発生元とされる周辺モジュールの動作クロックの周波数に対して複数倍のクロック周波数で動作される場合、前記中央処理装置の動作に同期して発生される第1の例外事象としての一般例外と非同期で発生される第2の例外事象としての割り込み要求との双方に対処するため、例外要因コードを格納するレジスタは上記第1例外事象と上記第2例外事象に対して別々に設ける。双方の例外発生に対して同じようなタイミングで例外要因コードを共通のレジスタに書き込むための煩雑な処理を避けられるようにする。
例外要因に応じてハードウェアで決定されている分岐先のハンドラ(第1例外処理ハンドラ)上での初期的なプロセッサモードを、例外事象の多重受け付け抑止状態及び特権状態によって一定にすることは、ユーザが当該ハンドラ上で規定できる例外処理の内容に高い自由度を保証できる。
汎用レジスタのレジスタバンクを特権状態においてのみソフトウェアで切り換え可能にすることは、特権状態においてユーザ状態とは異なるバンクの汎用レジスタを利用できるようになり、例えば、例外処理においてユーザ状態から特権状態にプロセッサモードを切り換えるときに汎用レジスタの内容をメモリに退避しなくても済むようにでき、例外処理への移行を高速化できる。
例外を抑止した状態の例外ハンドラ中で命令ブレーク例外を処理可能にすることは、多重に発生する例外の受け付けが禁止されている状態のデバッグ対象プログラムに対しても任意の位置で命令ブレークをかけてシステム評価やプログラムデバッグを行うことを保証できる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、ハードウェアによって決定された第1のベクタポイントのハンドラへの分岐、更に当該ハンドラから要因コードをオフセットとする別のハンドラへの分岐の何れにおいても、分岐先アドレスを直接メモリのアクセスによって取得することを要しないため、例外発生からそれに対処するハンドラへの遷移するまでの遷移時間を短縮でき、これによって、マイクロコンピュータ等のデータ処理装置の全体的なデータ処理速度の高速化が実現できる。
データ処理の高速化に密接なTLBミス例外のような処理に対しては、固定オフセットとしてのベクタオフセットを利用して得られたアドレスに配置された例外ハンドラによって直接例外処理を行うようにする。したがって、TLBミス例外に対する処理への遷移時間を短縮できる。一方、例外処理への遷移時間の短縮がTLBミス例外程データ処理速度の高速化に寄与しないと考えられる割り込みなどに対しては、ハンドラのマッピングやハンドラのサイズに対する融通性という点で使い勝手の向上を優先させることができる。
ベクタベースレジスタの値とベクタオフセットとを加算して得られたアドレスに配置された例外ハンドラの内の一部の例外ハンドラ(TLBミス例外ハンドラ)だけが、対応する例外に対して直接的な例外処理を行なう。その他の例外に対しては、例外要因コードをアドレスオフセットに利用して、更に、分岐されて所定のハンドラにたどり着くようになっている。したがって、物理的な回路規模の縮小とデータ処理の高速化との双方を満足させることができる。
ハードウェアによって規定されるベクタポイントのハンドラ上では、新たに発生する例外の多重受け付けを抑止するか否かを決定し、多重に受け付けるときは退避レジスタの内容をメモリに退避させることにより、例外発生時における状態退避と復帰アドレス退避を必ず退避レジスタにでき、この点においても例外発生からそれに対処するためのハンドラへの遷移時間を短縮できる。
ハードウェアで決定されるベクタポイントのハンドラから更に別のハンドラに分岐する際に要因コードが分岐のためのアドレスオフセットとして利用されるようになっているので、当該オフセットに対するベースアドレスはハードウェアによって決定されているベクタポイントのハンドラの記述に従って自由に決定でき、実際の分岐先アドレスや分岐先のハンドラのサイズ対して自由度を保証することができる。
内部状態及び復帰命令アドレスを退避するレジスタを採用することにより例外発生時の退避に際してメモリアクセスを減らすことができる。
中央処理装置の動作に対して同期して発生される第1の例外と非同期で発生される第2の例外との双方に対処するとき、中央処理装置が割り込み要求の発生元とされる周辺モジュールの動作クロック周波数に対して複数倍のクロック周波数で動作されるような場合に、例外要因コードを格納するレジスタを上記第1と第2の例外に対して格別に設けることにより、双方の例外発生に対して同じようなタイミングで要因コードを共通のレジスタに書き込むための煩雑な処理を避けられ、これによって、要因コードをレジスタにセットする処理を簡素化できる。
例外要因に応じてハードウェアで決定されている分岐先のハンドラ上での初期的なプロセッサモードを、例外の多重受け付け抑止状態及び特権状態を以て一定にすることは、ユーザが当該ハンドラ上で規定できる例外処理の内容に高い自由度を保証できる。
汎用レジスタのレジスタバンクを特権状態においてのみソフトウェアで切り換え可能にすることにより、特権状態においてユーザ状態とは異なるバンクの汎用レジスタを利用できるようになり、例えば例外処理においてユーザ状態から特権状態にプロセッサモードを切り換えるときに汎用レジスタの内容をメモリに退避しなくても済むようにでき、この点においても例外発生からそれに対処する処理への遷移時間を短縮することができる。
例外を抑止した状態の例外ハンドラ中で命令ブレーク例外を処理可能にすることにより、多重に発生する例外の受け付けが禁止されている状態のデバッグ対象プログラムに対しても任意の位置で命令ブレークをかけてシステム評価やプログラムデバッグを行うことを保証できる。
《マイクロコンピュータの概要》 図1は、本発明の実施例に係るシングルチップマイクロコンピュータ(シングルチップマイクロプロセッサとも言う)のブロック図を示す。同図に示されるマイクロコンピュータMPUは、例えば、公知の半導体集積回路製造技術によって単結晶シリコンのような1個の半導体基板あるいは半導体チップに形成される。マイクロコンピュータMPUは、特に制限されないが、内部バスとしてシステムバスS−bus、キャッシュバスC−busおよびペリフェラルバスP−busを含む。すなわち、マイクロコンピュータMPUは、スリーバス構成を有する。内部バスS−bus、C−bus、P−busの各々は、データを転送するためのデータバス、アドレス信号を転送するためのアドレスバス及び制御信号を転送するための制御バスを備えている。
システムバスS−busには、中央処理装置(central processing unit)CPU、乗算器(multiplier)MLT、キャッシュメモリ(cache memory)CACHE、メモリマネージメントユニット(memory management unit)MMU、及び命令ブレークコントローラ(instruction break controller)UBCが結合される。キャッシュバスC−busには上記キャッシュメモリCACHE、メモリマネージメントユニットMMU、命令ブレークコントローラUBC、及びバスステートコントローラ(bus state controller)BSCが結合される。バスステートコントローラBSCに接続されるペリフェラルバスP−busには、タイマTMU、中央処理装置CPUへの動作クロックの供給が停止されても計時動作が可能にされるリアルタイムクロック回路(real time clock circuit)RTC、外部メモリMMRYに含まれるダイナミック型メモリのリフレッシュ動作を制御するリフレッシュコントローラ(refresh controller)REFC、及びマイクロコンピュータMPUの外部に設けられた外部周辺装置(external peripheral devices)との間のシリアル通信を実行するシリアルコミュニケーションインタフェース(serial communication interface)SCIなどの内蔵周辺モジュール(internal peripheral modules)が接続される。また、上記バスステートコントローラBSCは、入出力回路(input and output circuit)EXIFを介して、外部バスEX−busに接続可能にされる。上記外部バスEX−busには、外部メモリMMRYや補助記憶装置DISKなどが接続されることになる。上記バスステートコントローラBSCは、上記内蔵周辺モジュール及び外部に対するバスサイクルの起動とそれに伴う各種バス制御を行う。
割り込みコントローラ(interrupt controller)INTCは、上記内蔵周辺モジュールから、及び複数ビットの外部割り込み端子(external interrupt terminals)IRL0〜IRL3から外部割り込み要求(external interrupt request)を受け、割り込み優先レベル(interrupt priority level)に従って割り込み要求の調停などを行う。割り込みコントローラINTCは、発生した割り込み要求の受け付けを許可する場合、上記中央処理装置CPUへ割り込み要求信号SIG1を供給する。また、上記割り込みコントローラINTCは、受け付けられた割り込み要求の割り込み要因を割り込み要因信号SIG2によってメモリマネージメントユニットMMUの制御回路(TLBC)へ通知する。上記割り込み要求信号SIG1を受けた中央処理装置CPUは、割り込み許可信号SIG3をメモリマネージメントユニットMMUの制御回路TLBCへ供給する。上記メモリマネージメントユニットMMUの制御回路TLBCは、割り込み許可信号SIG3に応答し、許可された割り込み要求に対応する例外要因コード(exception code)を後述する記憶回路としての割り込み要因レジスタINTEVTに書き込む。中央処理装置CPUの制御部CTRLは、上記割り込み要因レジスタINTEVTにセットされた例外要因コードを用いて、実行中のデータ処理プログラムの処理から所定の割り込み処理へその処理を分岐する。
本実施例のマイクロコンピュータMPUは、論理アドレス空間(logical address space)を論理ページ(logical page)と呼ばれる単位に分割し、そのページ単位に物理アドレス(physical address)へのアドレス変換(address translation)を行うための仮想記憶(virtual memory)をサポートする。上記メモリマネージメントユニットMMUのアドレス変換バッファ(address translation look-aside buffer)TLBは、論理ページ番号と物理ページ番号とに関する複数の変換対をTLBエントリとして格納する。上記メモリマネージメントユニットMMUの制御部TLBCは、中央処理装置CPUが出力する論理アドレスをアドレス変換バッファTLBを用いて物理アドレスに変換するための制御を行う。TLBミスの場合、すなわち、中央処理装置CPUが出力した論理アドレスに対応する変換対がTLBエントリとしてアドレス変換バッファTLB内に記憶されていなかった場合、制御部TLBCは、外部メモリMMRY上のページテーブルをアクセスしてその論理アドレスに対応する変換対を外部メモリMMRYから読み込むように動作する。その後、制御部TLBCは、読み出された変換対をTLBエントリとしてアドレス変換バッファTLBへ書き込むように動作する。
アドレス変換バッファTLBは、例えば、4ウェイ・セットアソシアティブ(4way-set-associative)方式のキャッシュメモリ(cache memory)によって構成される。TLBミスなどのアドレス変換に係る後述されるような各種例外事象が発生すると、制御部TLBCはその例外事象に対応する例外要因コードを後述する記憶回路としての例外要因レジスタEXPEVTにセットし、且つ、TLBミスなどのアドレス変換に係る例外事象の発生を通知するための通知信号SIG4を中央処理装置CPUの制御部CTRLへ供給する。中央処理装置CPUは、例外要因レジスタEXPEVTにセットされた例外要因コードを用いて、或いは、例外要因レジスタEXPEVTにセットされた例外要因コードを用いずにハードウェアで直接的に、実行中のデータ処理プログラムの処理から対応する例外処理へその処理を分岐する。
中央処理装置CPUは、例えば、4ギガバイトの論理アドレス空間をサポートするために、32ビットのアドレス信号を利用する。図1に示されるように、中央処理装置CPUは、例えば、汎用レジスタ(general purpose registers)R0〜R15や算術論理演算器(arithmetic and logic operation unit)ALUを含む演算部(operation unit)100と、後述されるプログラムカウンタ(program counter)PCなどのシステム制御用レジスタセット(system control register set)110と、命令のフェッチ、命令の解読、命令の実行手順の制御および演算の制御を行う制御部CTRLを含む。これらの回路装置(R0〜R15、ALU、110、CTRL)は、システムバスS−busに結合される。中央処理装置CPUは、外部メモリMMRYから実行されるべき命令をフェッチし、その命令記述(instruction code)に応じたデータ処理を行う。図1において、制御信号SIG5は、中央処理装置CPUからメモリマネージメントユニットMMUへの各種制御信号及び中央処理装置CPUの内部状態を通知するための信号を総称するものである。
キャッシュメモリCACHEは、特に制限されないが、4ウェイ・セットアソシアティブ形式とされる。キャッシュメモリCACHEに対するインデックスは、中央処理装置CPUから出力された論理アドレスの一部を用いて行われ、キャッシュメモリCACHEのキャッシュエントリのタグ部には物理アドレスが保有される。インデックスされたタグ部から出力される論理アドレスはアドレス変換バッファTLBで変換された物理アドレスと比較され、その比較結果に応じてキャッシュミス/ヒットが判定される。キャッシュミスの場合、当該キャッシュミスに係るデータ又は命令は外部メモリから読み込まれ、読み込まれたデータ又は命令は新たなキャッシュエントリとしてキャッシュメモリCACHEに格納される。
上記命令ブレークコントローラUBCは、デバッグ機能を強化するために設けられており、システムバスS−busの状態がブレーク条件に一致するかを監視する。システムバスS−busの状態がブレーク条件と一致する場合、中央処理装置CPUにブレーク割込みを発生させる。命令ブレークコントローラUBCに含まれるIBRは、ブレーク条件として命令アドレスなどが設定される命令ブレークアドレスレジスタである。中央処理装置CPUは、デバッグ若しくはエミュレーション開始前にそのためのサービスルーチンを実行し、命令ブレークアドレスレジスタIBRにブレークすべき命令の先頭アドレスやオペランドアドレスなどの所望の命令ブレーク条件をあらかじめ設定する。マイクロコンピュータMPUの内部状態が前記命令ブレーク条件に一致すると、後述の命令ブレーク例外が発生する。これによって、中央処理装置CPUは、デバッグのための命令ブレークハンドラを実行可能にされる。したがって、マイクロコンピュータMPUの内部でブレークポイント制御を行うことができる。
《CPUのレジスタ構成》 次に、中央処理装置CPUにおけるレジスタ構成が説明される。汎用レジスタR0〜R15は、図3に示されるように、夫々32ビットの記憶ビットを有し、図示されないインターフェイス回路を介して、上記システムバスに結合される。汎用レジスタR0〜R7は、プロセッサモードによって切り換えられるバンクレジスタとされる。換言すれば、汎用レジスタR0〜R7はバンク0とバンク1の2セット備えられる。すなわち、第1汎用レジスタセットとしてのR0(BANK0)〜R7(BANK0)と第2汎用レジスタセットとしてのR0(BANK1)〜R7(BANK1)とされる。上記プロセッサモードは、ユーザのアプリケーションプログラムが走行される動作状態を意味するユーザモード(ユーザ状態)と、オペレーティングシステム(operating system)などのシステムプログラムが走行される動作状態を意味する特権モード(特権状態)とを含む。したがって、特権状態とユーザ状態の夫々は、固有の汎用レジスタR0〜R7を有することができる。即ち、図4に示されるユーザ状態においては、バンク0の汎用レジスタR0(BANK0)〜R7(BANK0)が利用可能にされる。特権状態においては、後述されるステータスレジスタSRのレジスタバンクビットRB(SR.RB)の設定状態によって汎用レジスタR0〜R7の利用形態が決定される。
例えば、図5に示されるように、特権状態において、RB=0のときは、R0(BANK0)〜R7(BANK0)は汎用レジスタとして自由な利用が許容され、R0(BANK1)〜R7(BANK1)に対しては制御ロード命令(LDC)及び制御ストア命令(STC)によるアクセスのみが許容される。RB=1ときは、上記とは逆にR0(BANK1)〜R7(BANK1)が汎用レジスタとしての自由な利用が許容され、R0(BANK0)〜R7(BANK0)に対しては制御ロード命令(LDC)及び制御ストア命令(STC)によるアクセスのみが許容される。前記制御ロード命令(LDC)及び制御ストア命令(STC)は、特権状態において実行可能な特権命令若しくはシステム制御命令の一例である。
このように汎用レジスタをバンクレジスタ構成とし、特権状態においてユーザ状態とは異なるバンクの汎用レジスタを利用可能にすることは、例えば、例外処理においてユーザ状態から特権状態にプロセッサモードを切り換える時、ユーザ状態において汎用的に使用されていた汎用レジスタR0〜R7の内容を外部メモリMMRYのスタック領域へ退避しなくても済むようにできる。したがって、中央処理装置CPUの例外処理への移行が高速化できる。
システムレジスタは、図3に示されるように、データレジスタハイMACH、データレジスタローMACL、復帰アドレスレジスタPR、及びプログラムカウンタPCとされる。データレジスタハイMACH及びデータレジスタローMACLは、乗算、積算や積和演算のためのデータを格納する。復帰アドレスレジスタPRは、サブルーチンからの戻りアドレスを格納する。プログラムカウンタPCは、現在の命令のスタート番地を指す。
コントロールレジスタは、図6に示されるように、セーブステータスレジスタSSR、セーブプログラムカウンタSPC、グローバルベースレジスタGBR、ベクタベースレジスタVBR、及びステータスレジスタSRとされる。セーブステータスレジスタSSRは、例外事象の発生時などにおいて、現在のステータスレジスタSRの値を退避するレジスタである。セーブプログラムカウンタSPCは、例外事象が発生したときに、対応する例外処理から復帰した後に中央処理装置CPUが実行すべき命令の命令アドレスを保持するためのレジスタである。セーブプログラムカウンタSPCには、例外事象が発生したとき所定のタイミングでプログラムカウンタPCの値が退避される。グローバルベースレジスタGBRは、GBR−インダイレクトアドレスモードにおけるベースアドレスを格納するレジスタである。GBR−インダイレクトアドレスモードは、シリアルコミュニケーションインタフェースSCIなどの上記内蔵周辺モジュールのレジスタ領域にデータを転送する時、また、論理演算の時に利用される。ベクタベースレジスタVBRは、例外処理のためのベクタ領域のベースアドレス(ベクタテーブルベースアドレス)を保有する。ステータスレジスタSRは、演算においてキャリー、ボロー、オーバーフローを示すために利用されるTビット、メモリアクセス制御に利用されるSビット、割り込み要求に対するマスクレベルを4ビットで示す割り込みマスクビットIMASK、除算に利用されるM及びQビット、上述のレジスタバンクビットRB、ブロックビットBL、プロセッサオペレーションモードビットMD、及びゼロビットを含む。ブロックビットBLは例外をマスクするために利用され、BL=1は例外をマスクすることを指示し、BL=0は例外を許容することを指示する。モードビットMDはMD=1にて特権モードを、MD=0にてユーザモードを示す。上記M、Q、S、Tの各ビットは、ユーザモードにおいて、所定の専用命令を実行した中央処理装置CPUによってセットあるいはクリアすることが可能である。その他全てのビットは、特権モードにおいてだけ中央処理装置CPUによってリード・ライト可能にされる。上記コントロールレジスタに対する書き込みは制御ロード命令(LDC)を実行する中央処理装置CPUによって行われ、上記コントロールレジスタに対する読み出しは制御ストア命令(STC)を実行する中央処理装置CPUによって行われる。
《マイクロコンピュータのアドレス空間》 本実施例のマイクロコンピュータMPUは、4GB(ギガバイト)の論理アドレス空間をサポートするために32ビットのアドレスを利用する。該論理アドレスは、空間番号によって拡張可能にされる。図13は、特権モードのアドレス空間とユーザモードのアドレス空間とのアドレスマッピングを示している。同図において、”Mapped”と示される領域は、アドレス変換バッファTLBを利用したアドレス変換の対象とされる。
H'FFFFFFFF〜H'80000000の領域は、特権モードにおいて、アクセス可能な領域とされ、ユーザモードでのアクセスはアドレスエラーとされる。
アドレス領域P4はコントロールスペースであり、周辺モジュールなどのコントロールレジスタなどがマッピングされる。
アドレス領域P1,P2は、固定された物理アドレスを有する領域であり、アドレス変換バッファTLBを利用したアドレス変換の対象にはされない。アドレス領域P1,P2の論理アドレスは、一定の定数の加算又は減算によって物理アドレスに変換される。したがって、特権状態において、アドレス領域P1,P2をアクセスするとき、TLBミスを初めとするアドレス変換に係る例外事象が発生することはない。一般割り込み事象や一般例外事象などの各種例外ハンドラの物理アドレスをアドレス領域P1又はP2に割り当てることにより、TLBミスを初めとするアドレス変換に係る例外事象が例外処理中に新たに発生することがなくなる。換言すれば、アドレス変換に係る例外事象が、多重に発生する事態を回避でき、これによってデータ処理の効率化に寄与することができる。
特に、アドレス領域P2はキャッシュメモリCACHEによるキャッシュの対象とはされず、一方、アドレス領域P1はキャッシュの対象とされる。例外処理ハンドラに関して言えば、複数存在する例外処理ハンドラの内どの例外処理ハンドラをアドレス領域P1又はP2へ割り当てるかは、その例外処理の性質に応じて決定される。例えば、TLBミス例外に対処するための例外処理ハンドラのように高速処理が要求される例外処理ハンドラは、アドレス領域P1に割り当てるのが得策である。一方、例外処理の高速性が要求されない例外処理ハンドラは、キャッシュメモリを別のデータに解放しておくために、アドレス領域P2に割り当てるのが得策である。
《例外処理の概要》 例外処理は、特別なハンドリングが要求されるので、現在のプログラム実行を例外的に別の処理へ分岐させる処理であり、中央処理装置CPUは現在の命令(その実行は後述の割り込み要求に対しては完了まで継続することが許容される)実行を抑止し且つユーザ記述による例外ハンドラにその制御を移行することによってその例外処理の要求に応答する。例えば、例外処理は、現在実行中の命令との関係では、3つの処理に分類できる。第1の処理は、現在実行中の命令を無視して、例外ハンドラの処理へ分岐する処理である。第2の処理は、現在実行中の命令を、例外ハンドラの処理完了後に、再実行する処理である。第3の処理は、現在実行中の命令実行を完了した後に、例外ハンドラの処理へ分岐して分岐先での処理完了後に分岐前の状態に復帰する処理である。後者の二つについては、一般例外のような第1の例外事象と所謂割り込み要求のような第2の例外事象として区別することができる。割り込み要求のような第2の例外事象は、中央処理装置CPUの動作とは非同期で発生するので、実行中の命令が実行完了された段階で受け付けられ、割り込み処理に対応する例外処理ハンドラの処理が終了すると、当該実行完了された命令の次の命令に中央処理装置CPUの処理が復帰される。一般例外のような第1の例外事象は、中央処理装置CPUの動作に同期して発生するので、その要求の原因が取り除かれた後、当該例外処理の要求が発せられた時点に中央処理装置CPUの実行していた命令が中央処理装置CPUによって再実行される。ただし、全ての例外処理には双方の定義に合致しないものが存在することは言うまでもない。
図7は、ベクタとして割り付けられた例外事象を示している。例外処理は、図7に示されるように、リセット処理、中央処理装置CPUの動作に同期して発生する例外事象(一般例外)に対する処理、中央処理装置CPUの動作と非同期で発生する割り込み要求に対する処理に大別される。夫々の例外処理において、現在実行中の命令に対する処置は、同図に示されるように、無視(Aborted)、再実行(Retried)および完了(Completed)の3種類に大別される。
1)リセット処理は、パワーオンリセット(Power-On)とマニュアルリセット(Manual Reset)を含む。例えば、パワーオンリセットは、電源投入によってリセット信号がアサートされることを条件に、中央処理装置CPUや内蔵周辺モジュールの初期化を行うリセット処理とされる。
2)一般例外は、中央処理装置CPUの内部で発生する例外と、メモリマネージメントユニットMMUによるアドレス変換に際して発生される例外に大別される。
前者の例外事象として、予約命令例外(Reserved Instruction Exception)、スロット不当命令例外(Illegal Slot Instruction Exception)、トラップ命令例外(Unconditional Trap)、及び命令ブレーク例外(User Breakpoint Trap)がある。
後者の例外事象として、命令アクセス時とデータアクセス時におけるアドレスエラー例外(Address Error)、命令アクセス時とデータアクセス時におけるTLBミス例外(TLB Miss)、命令アクセス時とデータアクセス時におけるTLBインバリッド例外(TLB Invalid)、命令アクセス時とデータアクセス時におけるTLBプロテクト違反例外(TLB Protection Violation)、TLBイニシャルページライト例外(Initial Page Write)がある。
上記TLBミスは、アドレス変換バッファTLBのアドレス比較が不一致である場合に発生し、当該不一致に係る論理アドレスのページテーブルエントリを外部メモリMMRYからアドレス変換バッファTLBにロードする処理とされる。トラップ命令例外は、TRAP命令を実行することを条件に発生し、当該命令のイミディエイト値を用いた分岐先のハンドラによって規定される処理を行うものであり、ソフトウェア割り込みとして位置づけることができる。予約命令例外は、遅延分岐命令を利用するときに、遅延スロット以外にある未定義命令コードをデコードすることなどを条件に発生し、分岐先のハンドラで規定される処理を行う。命令ブレーク例外は、レジスタIBRに設定されたブレーク条件が一致したことを条件に発生し、分岐先のハンドラで規定される処理を行う。
3)割り込み要求は、マスク不可能な割り込み(Nonmaskable Interrupt)、外部割り込み(External Hardware Interrupt)、及び内蔵周辺モジュール割り込み(Peripheral Module Interrupt)を含む。
例外処理の優先レベル(Priority Level)に関しては、特に制限されないが、図7に示されるように、以下のように定義される。すなわち、リセットは優先レベル1に割り当てられ、一般例外は優先レベル3に割り当てられ、マスク不可能な割り込み要求は優先度レベル2に割り当てられ、その他の割り込み要求は優先度レベル4に割り当てられる。この優先レベルは、高い順に1〜4とされ、最も高い優先レベルは1とされ、最も低い優先レベルは4とされる。
上記一般例外は、命令の実行シーケンスに関係して発生するので、優先レベル3が割り当てられている。優先レベル3に割り当てられている各種一般例外には、発生する命令実行段階の早遅に従って、1〜12の実行優先度(Execution Order)が割り当てられる。命令がパイプライン的に実行される場合、ある命令の実行中に検出された優先レベル3のある一般例外は、その後の命令の実行中に検出された優先レベル3の他の一般例外に先行して受け付けられるように制御される。従って、実行優先度は、個々の命令の実行スパン内での優先度を規定しているとみなされる。特に、命令ブレーク例外(ユーザブレークトラップ例外)において、ブレークポイントとして指定されている命令の実行前にトラップを発生させる場合、命令ブレーク例外の実行優先度は1とされ、実行後にトラップを発生させる場合、命令ブレーク例外の実行優先度は12、オペランドブレークポイントが設定されている場合も命令ブレーク例外の実行優先度は12とされる。外部割り込みと内蔵周辺モジュール割り込みとの間での優先レベルはソフトウェアによって定義される。
尚、図7における一般例外内のある1部の一般例外は、命令アクセス(Instr. Access)時とデータアクセス(Data Access)時とで区別されるように図示されている。これは、図7のAddress ErrorからInitial Page Writeまでの一般例外の記載は、ある1つの命令をパイプライン的に実行するときの実行順序に従って例外要因を記載してあるためである。したがって、図7に示される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)も同様である。また、図7においては、一般例外は優先レベル3に割り当てられ、マスク不可能な割り込み要求は優先度レベル2に割り当てられているが、一般例外に優先レベル2を割り当て、マスク不可能な割り込み要求に優先度レベル3を割り当てても良い。
《例外処理のためのベクタ配置》 夫々の例外処理の内容を規定する各種例外処理ハンドラ(例外ハンドラと総称する)は、ベクタ配置を利用して呼び出される。マイクロコンピュータMPUは、そのハードウェア構成によって4種類のベクタ配置をサポートする。固定された物理アドレスH'A0000000はリセットのためのベクタとして割り当てられる。他の例外処理に対しては、ソフトウェアによって上記ベクタベースレジスタVBRに設定されたベクタテーブルベースアドレスからの固定番地のオフセット(ベクタオフセット)が割り当てられている。それぞれのベクタオフセットは、図7に示されるように、H'00000100、H'00000400、H'00000600とされる。上記TLBミス例外のベクタオフセットにはH'00000400が割り当てられ、TLBミス例外以外の一般例外のベクタオフセットにはH'00000100が割り当てられ、割り込み要求のベクタオフセットにはH'00000600が割り当てられる。
ベクタテーブルのベースアドレスは、ベクタベースレジスタVBRにソフトウェアを実行する中央処理装置CPUによってロードされる。例えば、タスク切換え若しくはプロセス切換えに際して、オペレーティングシステムのようなシステムプログラムを実行する中央処理装置CPUによってベクタベースレジスタVBRの設定が行われる。ベクタテーブルのベースアドレスは、所定の固定された物理アドレス空間に配置されることになる。即ち、ベクタテーブルのベースアドレスは前記アドレス領域P1,P2に配置される。上記レジスタVBRの値とベクタオフセットとによって決定されるベクタポイント(ベクタアドレス)は、ハードウェアによって規定される。即ち、ベクタポイントは、ユーザ記述によるプログラムによって規定される性質のものではない。
図14は、前記固定オフセットとしてのベクタオフセットの値を生成するためのハードウェアの構成を示している。同図において、定数発生回路CVGとシフタSFTは、ベクタオフセットを生成するために設けられている定数発生部或は演算手段みなされる。ベクタオフセットの値とベクタベースレジスタVBRの値との加算は、算術論理演算器ALUによって行われ、加算して得られたベクタポイントは、プログラムカウンタPCに書き込まれる。その後、中央処理装置CPUは、プログラムカウンタPCに書き込まれたベクタポイントに割り当てられる例外処理ハンドラをアクセスするために、システムバスS−bus内のアドレスバスへ上記ベククポイント(論理アドレス)を発生する。メモリ管理ユニットMMUは、上記ベククポイントとされる論理アドレスを受け、その論理アドレスに関するアドレス変換対をエントリとして記憶している場合、上記論理アドレスを物理アドレスに変換し、キャッシュメモリCACHEへ供給する。キャッシュメモリCACHEに上記物理アドレスに対応する命令が存在しない場合、上記物理アドレスが、キャッシュバスC−busのアドレスバス、バスステートコントローラBSC、入出力回路EXIF及び外部バスEX−busのアドレスバスを介して、上記外部メモリMMRYに供給される。上記物理アドレスが外部バスEX−busのアドレスバスヘ出力されることに同期して、上記中央処理装置CPUから出力される図示されないリード制御信号がシステムバスS−bus内の制御バス、キャッシュバスC−busの制御バス、バスステートコントローラBSC、入出力回路EXIF及び外部バスEX−busの制御バスを介して上記外部メモリMMRYに供給される、上記外部メモリMMRYは、上記物理アドレスによってリードアクセスされ、その物理アドレスに格納されているデータ(第1例外ハンドラの先頭の命令データ)が、外部バスEX−busのデータバス、入出力回路EXIF、バスステートコントローラBSC、キャッシュバスC−busのデータバス及びシステムバスS−bus内のデータバスを介して中央処理装置CPUへ供給されて実行される。
上記プログラムカウンタPCにセットされるベクタポイントを生成するための前記定数発生回路CVG、シフタSFT、及び算術論理演算器ALUは、中央処理装置CPUの演算部100に含まれる。
定数発生回路CVG及びシフタSFTには、割り込み通知信号SIG1、TLBミス例外の発生を示す通知信号SIG4a、及びTLBミス例外以外の一般例外の発生を示す通知信号SIG6が供給される。通知信号SIG4aは、メモリマネージメントユニットMMU内の制御部TLBCから出力される前記信号SIG4に含まれる一つの信号である。すなわち、前記信号SIG4は、複数ビットの信号を含んでおり、前述のように、メモリマネージメントユニットMMUにおけるアドレス変換に起因する例外の発生を中央処理装置CPUに通知する信号である。前記信号SIG4には、発生した例外事象がTLBミス例外であることを示す通知信号SIG4a、発生した例外事象がTLBミス例外以外の例外事象であることを示す通知信号SIG4bなどが含まれる。通知信号SIG6は、図示されるように、メモリマネージメントユニットMMUにおけるアドレス変換に際してTLBミス例外以外の例外事象が発生したとき活性化される前記信号SIG4bと、中央処理装置CPU内部において例外事象が発生したとき活性化される内部信号SIG6aとを受けるオア回路ORの出力信号とされる。
前記定数発生回路CVG及びシフタSFTにおいて、発生すべき定数とシフト量は、前記信号SIG1,SIG4a,SIG6の内のどの信号が活性化されたかに基づいて制御される。定数発生回路CVGは、例えば、バイナリコードで2ビットの定数H'1(01)又はH'3(11)を発生する。定数発生回路CVGは、通知信号SIG4a又は通知信号SIG6が活性化されると、定数H'1を発生する。定数発生回路CVGは、割り込み発生の通知信号SIG6が活性化されると、定数H'3を発生する。シフタSFTは、通知信号SIG6が活性化されると、定数H'1(01)に対して8ビット左シフトを行うことによってベクタオフセットH'100(1.0000.0000)を出力する。TLBミス例外の通知信号SIG4aが活性化されると、シフタSFTは定数H'1(01)に対して10ビット左シフトを行うことによってベクタオフセットH'400(100.0000.0000)を出力する。通知信号SIG1が活性化されると、シフタSFTは定数H'3(11)を9ビット左シフトを行うことによって、ベクタオフセットH'600(110.0000.0000)を出力する。特に、本実施例において、ベクタオフセットとしてH'100,H'400,H'600を割り当てたのは、ベクタオフセットにおいて論理値”1”とされるビットの数を極力少なくするため、換言すれば、定数発生回路CVGの論理規模を小さくするためである。
図14から明らかなように、ハードウェア(回路)で生成すべきベクタオフセットは3種類であるから、そのハードウェア量は2ビットの定数発生回路CVGとシフタSFTだけで済む。シフタSFTはベクタオフセットの生成に専用化される必然性は全くなく、その他の演算に汎用的に利用可能にすることは容易である。
《例外処理を指標する例外要因コード》 例外要因コード(exception code)は、図8に示されるように、夫々の例外処理の要因を識別可能にするために、夫々の例外事象に対し異なる値の例外要因コードが割り当てられる。この例外要因コードは、デバッグなどにおいて、発生した例外の要因をソフトウェア的に判定するために利用されると共に、後述されるように例外ハンドラへの分岐のためのアドレスオフセット情報としても利用される。デバッグにおいて利用可能にするため、レジスタEXPEVT及びINTEVTは、キャッシュバスC−busに結合され、バスステートコントローラBSC、入出力回路EXIF及び外部バスEX−busを介して、マイクロコンピュータMPUの外部からアクセス可能にされる。すなわち、レジスタEXPEVT及びINTEVTに記憶された要因コードは、マイクロコンピュータMPUの外部に出力可能にされる。それによって、デバッガが、発生した例外の要因を要因コードから簡単に判別可能なる。
図8に示される例外要因コードは、H'20毎に割り当てられる。これをアドレス換算すれば、32バイト毎のアドレスオフセットとしての意味を持つ。例えば、1命令が2バイトの固定長命令であれば、16命令の記述に相当するアドレス範囲とされる。また、図8において、一般例外のうち、アドレスエラー例外(Address Error)、TLBミス例外(TLB Miss)、TLBインバリッド例外(TLB Invalid)、TLBプロテクト違反例外(TLB Protection Violation)については、ロード命令実行時(load)とストア命令実行時(store)とで別の例外要因コードが割り当てられる。これは、デバッグの容易性を考慮して設定されている。尚、図8において、内蔵周辺モジュールの割り込み要求に関する例外要因コードについては、代表的に一つの要因コードH'400だけが示されている。しかし、実際には、内蔵周辺モジュールの数およびその機能に依存して多数存在すると理解されたい。
図9に示される例外要因レジスタEXPEVTは、上記例外要因コードのうちリセット及び一般例外事象に割り当てられた例外要因コードをビット11〜ビット0に格納する32ビットのレジスタである。一方、割り込み要因レジスタINTEVTは、上記例外要因コードのうち割り込み要求に割り当てられた例外要因コードをビット11〜ビット0に格納する32ビットのレジスタである。これらのレジスタEXPEVT,INTEVTは、図1にも示されるように、システムバスS−busとキャッシュバスC−busとに結合され、メモリマネージメントユニットMMUの制御部TLBC内に配置されている。その理由は、TLBミスなどの高速処理が要求される一般例外の発生を一番早く検出できるのがメモリマネージメントユニットMMUの制御部TLBCだからである。
例外要因コードを格納するレジスタを一般例外と割り込み要求とで個別に設ける理由は、次の理由による。すなわち、一般例外は中央処理装置CPUの動作に同期して発生し、割り込み要求は中央処理装置CPUの動作とは非同期で発生する。また、中央処理装置CPUの動作クロック周波数は、割り込み要求の発生元とされる内蔵周辺モジュール及び外部回路の動作クロック周波数に対して複数倍、例えば、4倍のクロック周波数とされる。このように、割り込み要求と一般例外の発生タイミングの相違、および、割り込み要求発生元と例外発生元の動作速度の相違を考慮した場合、双方の例外要因コードを同じようなタイミングで同一のレジスタに書き込ませることは、レジスタに対する例外要因コードの書き込みタイミングの設定処理などを煩雑にする虞があるからである。
図15は、上記例外要因コードを生成するための論理ブロックの構成を示している。同図に示される論理回路LOGは、メモリマネージメントユニットMMUの制御回路TLBCに含まれる。この論理回路LOGには、割り込み要因A、中央処理装置CPU内部での例外発生状況B、メモリマネージメントユニットMMU内部での例外発生状況C、リセット指示D、その他付帯情報Eが供給され、これらの入力情報の状態に応じて対応する例外要因コードを生成する。
割り込み要因Aは、割り込みコントローラINTCから信号SIG2によって論理回路LOGへ供給される。その他の付帯情報Eには前記割り込み受け付けの通知信号SIG3が含まれる。論理回路LOGは、上記割り込み要因Aとその他付帯情報Eの活性化状態に応答して、割り込み要因を対応する例外要因コードを生成し、生成した例外要因コードを割り込み要因レジスタINTEVTにセットする。
前記中央処理装置CPU内部での例外発生状況Bは、予約命令例外(Reserved Instruction Exception)、スロット不当命令例外(Illegal Slot Instruction Exception)、トラップ命令例外(Unconditional Trap)、及び命令ブレーク例外(User Breakpoint Trap)の発生状況を区別するための複数ビットの信号として、中央処理装置CPUから論理回路LOGに供給される。例外発生状況Bは、図1に示される制御信号SIG5に含まれるとみなされる。
メモリマネージメントユニットMMU内部での例外発生状況Cは、アドレスエラー例外(Address Error)、TLBミス例外(TLB Miss)、TLBインバリッド例外(TLB Invalid)、TLBプロテクト違反例外(TLB Protection Violation)、TLBイニシャルページライト例外(Initial Page Write)の発生状況を区別するための複数ビットの内部信号として、論理回路LOGに供給される。
前記付帯情報Eは、アドレス変換に係る命令がロード命令かストア命令かを区別するための情報を含む。この情報は、中央処理装置CPU内で実行されるべき命令の解読結果によって得られ、中央処理装置CPUから論理回路LOGに供給される。
論理回路LOGは、前記中央処理装置CPU内部での例外発生状況B、メモリマネージメントユニットMMU内部での例外発生状況C及び前記付帯情報Eに基づいて、発生された一般例外に対応する例外要因コードを生成し、生成された例外要因コードを例外要因レジスタEXPEVTにセットする。
リセットに関する例外要因コードは、リセット信号によって形成されたリセット指示Dに論理回路LOGが応答し、論理回路LOGが生成する。生成されたリセットに関する例外要因コードは、論理回路LOGによって例外要因レジスタEXPEVTへセットされる。リセット指示Dは、図1に示される制御信号SIG5に含まれるとみなされる。
《例外ハンドラの配置》 上記H'100,H'400,H'600で規定されるベクタオフセットは、ベクタベースレジスタVBRの値(ベクタテーブルのベースアドレス)からの固定されたオフセットを規定する。図2に示されるように、リセットに関する例外ハンドラは、H'A00000000の固定番地に配置される。TLBミス例外に関する例外ハンドラは、レジスタVBRの値+ベクタオフセット(H'400)のアドレスに直接配置される。その他の一般例外及び割り込み要求に関する例外ハンドラは、レジスタVBRの値にH'100又はH'600のベクタオフセットを加算して得られるアドレス位置に第1のハンドラ(図2に示される一般例外に共通のハンドラおよび割り込み要求に共通のハンドラ)が配置される。第1のハンドラから当該要因に固有の別の第2のハンドラへの分岐は、レジスタEXPEVTまたはINTEVTに記憶された例外要因コードをアドレスオフセットとして利用することによって行われる。
アドレスオフセットとしてどのように例外要因コードを利用するかは、ベクタベースレジスタVBR+ベクタオフセットの位置に配置されたハンドラ(ユーザ記述による)の記述内容(ソフトウェアプログラム)によって決定される。例えば、VBR+ベクタオフセット+例外要因コードとして第2のハンドラへ分岐することを規定したり、或いは当該ハンドラ内部でセットしたベースアドレスに例外要因コードを加算して第2のハンドラへ分岐することを規定したり、又は例外要因コードを所定ビット数だけシフトして第2のハンドラへ分岐することを規定したりすることができる。要は、夫々の例外要因コードがH'20のような所定の間隔を空けて割り振られているので、ハンドラの記述量などに応じて当該例外要因コードを所望に利用すればよい。レジスタEXPEVTまたはINTEVTに記憶された例外要因コードをアドレスオフセットとして利用する場合、中央処理装置CPUは、システムバスS−busのアドレスバスにレジスタEXPEVTまたはINTEVTのアドレス信号を供給し、システムバスS−busの制御バスにリード制御信号を供給して、レジスタEXPEVT又はINTEVTをアクセスする。リードアクセスされたレジスタEXPEVT又はINTEVTは、その内部に記憶された要因コードをシステムバスのデータバスへ供給し、上記CPUが、その要因コードを、例えば、1つの汎用レジスタ(R0)に格納する。それによって、上記中央処理装置CPUは、要因コードを計算に使用可能になる。なお、実際の計算は、中央処理装置CPU内部の前記算術論理演算器ALUによって行われる。
例えば、図2に示されるように、TLBミス例外以外の一般例外のための例外ハンドラに関しては、当該一般例外に共通の第1のハンドラが、VBR+ベクタオフセット(H'100)のベクタポイントに配置される。当該第1のハンドラは、その例外要因に対応する例外要因コードをアドレスオフセットとしてさらに別のハンドラ(第2のハンドラ)へ分岐することを規定する記述を有する。したがって、ベクタポイントに例外要因コードを加算して得られるアドレスのそれぞれに例外要因に固有の第2のハンドラをそれぞれ配置しておくことによって、所望の第2のハンドラへ分岐することができる。この場合、例外要因コードはレジスタEXPEVTから取得される。
また、割り込み要求に関する例外ハンドラも上記同様であり、VBR+ベクタオフセット(H'600)のベクタポイントに、当該割り込み要求に共通の第1のハンドラが配置される。当該第1のハンドラは、その割り込み要因に対応する要因コードをアドレスオフセットとしてさらに別のハンドラ(第2のハンドラ)へ分岐することを規定する記述を有する。したがって、ベクタポイントに例外要因コードを加算して得られるアドレスのそれぞれに割り込み要因に固有の第2のハンドラをそれぞれ配置しておくことによって、所望の第2のハンドラへ分岐することができる。この場合、割り込み要求の例外要因コードは、レジスタINTEVTから取得される。
本実施例に従えば、各種例外ハンドラはTLBを利用したアドレス変換を要しない前記アドレス領域P1又はP2に割り当てられるので、アドレス変換に係る例外事象が多重に発生する事態を回避でき、これによって、データ処理の効率化に寄与することができる。
上記の様な例外ハンドラの配置において、TLBミス例外、その他の一般例外、又は割り込み要求が発生した時、中央処理装置CPUの処理は、VBRレジスタに設定されているベクタテーブルのベースアドレスにベクタオフセットをオフセットアドレスとして加算したアドレス位置に分岐され、そのアドレス位置に配置されているハンドラを処理することになる。この分岐は、マイクロコンピュータMPUのハードウェアによって規定される。そのとき、どのベクタオフセットを用いるかは、図14で説明されたように、例外発生要因の種別によって一義的に決定される。発生した例外がTLBミス例外の場合、VBR+ベクタオフセット(H'400)で指定されるベクタポイントに割り付けられたハンドラはTLBミス例外ハンドラとされる。その他の一般例外又は割り込み要求の場合、VBR+ベクタオフセットで指定されるベクタポイントのハンドラは、その例外要因の要因コードをオフセットとして分岐する処理を含み、当該分岐先にその例外要因に固有のハンドラが配置されている。
トラップ命令を実行することによって発生するトラップ例外に関しては、そのトラップ命令が保有する8ビットのイミディエイト値が、図9に示されるトラップレジスタTRAに格納され、その値がVBRレジスタの下位のアドレスデータに加算され、加算されて得られた値によって対応する例外ハンドラがフェッチされるようになっている。トラップ命令例外は、例えば、ユーザープログラム内のタスクからオペレーティングシステムへのシステムコールに利用される。
《例外処理フロー》 図10は、上記ベクタオフセットによってベクタポイントまで分岐する処理のフローチャートが示される。ベクタポイントへの分岐は、図14で説明したように、マイクロコンピュータMPUのハードウェアによって規定され、特権状態への遷移として位置付けられる処理であり、以下のステップを含む。
〔例外/割り込みの検出〕 リセット、一般例外、又は割り込み要求が発生されると、それが制御部CTRLにて検出される(S1)。例えば、制御部CTRLは、マニュアルリセットであればリセットスイッチの操作によって発生するリセット信号、TLBミス例外であればメモリマネージメントユニットMMUの制御回路TLBCから出力されるTLBミスの検出信号など、割り込み要求であれば割り込みコントローラINTCから中央処理装置CPUに供給される割り込み信号SIG1に基づいて例外を検出する。中央処理装置CPU内部の例外は、その内部状態に基づいて検出される。
〔PC、SRの退避〕 次に、中央処理装置CPUは、プログラムカウンタPCの値をセーブプログラムカウンタSPCに退避し、ステータスレジスタSRの値をセーブステータスレジスタSSRに退避する(S2)。退避のタイミングは、一般例外の場合、当該例外が発生した時点とされ、したがって、現在実行完了されていない命令のアドレスなどが退避され、復帰後はその命令が再実行されることになる。割り込み要求の場合の退避のタイミングは、その割り込み要求が発生された時点において、中央処理装置CPUがその時点に実行していた命令の実行完了を待って上記2つの値の退避が行われ、その結果として、その命令の次の命令のアドレスなどが退避されることになる。これにより、例外が発生したときプログラムカウンタPCの値やステータスレジスタSRの値をメモリ上のスタック領域に退避するためのメモリアクセスを要せず内蔵レジスタアクセスで済むため、本発明のマイクロコンピュータMPUの退避処理を高速に行うことができる。
〔プロセッサモードの切換え〕 中央処理装置CPUは、ステータスレジスタSRのモードビットMDを論理値1にしてマイクロコンピュータMPUの動作モードを特権モードに設定する(S3)。中央処理装置CPUは、更に、ステータスレジスタSRのブロックビットBLを論理値”1”にセットして、その他の例外及び割り込みをマスクする(S3)。中央処理装置CPUは、さらに、ステータスレジスタSRのレジスタバンクビットRBを論理値1にセットして、特権状態における汎用レジスタR0〜R7をユーザ状態とは別のレジスタバンクに切り換える(S3)。したがって、汎用レジスタR0〜R7のバンク切換えを行うから、ユーザ状態におけるレジスタバンクの汎用レジスタR0〜R7を退避する処理は不要になる。
〔例外要因のセット〕 次に、そのときの例外や割り込み要求の要因に割り当てられている例外要因コードが、図15において説明されたように、レジスタEXPEVT又はINTEVTにセットされる(S4)。前者のレジスタEXPEVTには一般例外要因又はリセットの要因コードが、後者レジスタINTEVTには割り込み要求の要因コードが,MMU内の論理回路LOGによってセットされる。
〔ベクタポイントに分岐〕 上述のように、中央処理装置CPUの制御は、所定のベクタポイントに分岐される(S5)。例外処理がリセットである場合、固定番地H'A00000000に分岐される。一般例外や割り込み要求の場合、レジスタVBRのベクタテーブルベースアドレスに所定のベクタオフセットが加算されたアドレスに、中央処理装置CPUの制御が分岐される。分岐されたベクタポイントには、図2に示されるように、所定のハンドラが置かれている。リセットの場合、リセットのための例外ハンドラが配置され、TLBミス例外の場合、TLBエントリ更新などのためのTLBミス例外ハンドラが置かれている(図2参照)。TLBミス例外以外の一般例外の場合、あるいは、割り込み要求の場合、例外要因に固有の別のハンドラに分岐するための処理を含むハンドラ(図2に示される一般例外に共通なハンドラ、割り込み要求に共通なハンドラ)が配置されている。
命令実行中にTLBミス例外が発生したときには、TLBミスに係る論理ページアドレスに対応する物理ページアドレスを外部メモリMMRY上のページテーブルから読み出してアドレス変換バッファTLBを更新し、物理アドレスへの変換を行わなくてはならないため、そのTLBミス例外の発生からその対処への遷移時間は命令実行速度若しくは中央処理装置CPUによるデータ処理速度に大きな影響を与える。したがって、データ処理性能にもっとも大きな影響を与えると考えられるTLBミス例外ハンドラを上記ベクタポイントに直接配置することは、中央処理装置CPUの制御を例外ハンドラに引き渡すまでの処理時間を著しく短縮させる。それによって、マイクロコンピュータMPUのデータ処理速度の高速化が実現できる。
図11は、上記ベクタポイントに置かれた例外ハンドラ(リセットハンドラやTLBミス例外ハンドラを除く)の処理フローの一例を示している。この処理は、上述のように、専らソフトウェアによって規定され、以下の処理ステップを含む。
先ず、後から発生した別の例外や割り込み要求を多重に受け付けるか否かが決定される(S11)。その決定は、当該ハンドラの記述に従う。
多重に割り込み要求などを受け付けない場合、レジスタEXPEVT,INTEVTから例外要因コードをリードし(S12)、例外要因コードをアドレスオフセットとして利用して、対応する例外ハンドラに分岐するための処理が行われる(S13)。中央処理装置CPUが、VBR+ベクタオフセット+例外要因コードの計算を実行し、その計算されたアドレスに割付けられる例外ハンドラ、すなわち、分岐先の例外ハンドラへ処理が移行される。それによって中央処理装置CPUが、発生した例外に対処する。
多重に割り込み要求などを受け付ける場合、図10で説明した処理フローを保証するために、中央処理装置CPUは、セーブステータスレジスタSSR,セーブプログラムカウンタSPCなど、図10のハンドラで利用するレジスタのデータを外部メモリMMRYに退避する(S14)。中央処理装置CPUは、更に、ステータスレジスタSRのブロックビットBLを論理値”0”にセットして、その他の例外及び割り込みに対するマスクを解除する(S15)。その後、上記同様、中央処理装置CPUは、レジスタEXPEVT,INTEVTから例外要因コードをリードし(S16)、例外要因コードをアドレスオフセットとして対応する例外ハンドラに分岐される(S17)。すなわち、中央処理装置CPUが、VBR+ベクタオフセット+例外要因コードの計算を実行し、その計算されたアドレスに割付けられる例外ハンドラ、すなわち、分岐先の例外ハンドラへ処理が移行される。それによって中央処理装置CPUが、発生した例外に対処する。
図10及び図11のフローチャートから明らかなように、TLBミス例外に対するように高速処理を最優先とするものに対しては、レジスタVBRの値を1回リードしてそれにベクタオフセット(H'400)を加算するだけでTLBミス例外ハンドラのベクタポイントを取得できる。また、別の例外要因に対しては、レジスタVBRの値にベクタオフセットを加算して得られるベクタポイントの取得に加えて、レジスタEXPEVT又はINTEVTの値を1回リードして得た例外要因コードをアドレスオフセットとする事により所要の例外ハンドラに分岐できる。この分岐においても、分岐先アドレスを直接メモリアクセスによって取得することなく高速に例外に応ずる処理に制御を移すことができる。
図11からも明らかなように、多重に例外や割り込みを受け付けるか否かはハードウェアによって規定されたベクタポイントのアドレスに割り当てられたハンドラの記述によって決定される。例外の多重受け付けを許容する場合には、退避レジスタSSR,SPCに既に退避されている値を外部メモリMMRYへ退避する。TLBミス例外の様に高速処理が必要な場合、多重の例外や多重割り込みを禁止したまま、TLBミス例外ハンドラを実行するので、セーブステータスレジスタSSR,セーブプログラムカウンタSPCのメモリへの退避を一切要せず、この点において、TLBミス例外の発生からTLBミスハンドラへの遷移時間を最短にする事を保証している。
図12は、一般例外や割り込み要求に対処するための例外処理へ分岐した後、分岐先において、例外や割り込みが新たに発生した場合の処理フローを示している。
例外や割り込みが新たに発生したとき(S21)、ステータスレジスタSRのブロックビットBLが論理値”1”であるか否か(S22)、そして当該新たに発生した例外や割り込みが命令ブレーク例外であるか否か(S23)によって、当該新たに発生した例外や割り込みを受け付ける否かが決定される。SR.BL=0によって多重受け付けが許容されている場合には図10、図11のフローに従って処理される(S24)。
上記SR.BL=1によって例外の多重受け付けが禁止されている場合(S22のYES)、そのときに発生した一般例外が命令ブレーク例外でなく(S23のNO)、且つ、それが割り込み要求の場合(S25のYES)、ソフトウェアがSR.BL=0にするまで(例えば、前記ステップS14の処理を終えてステップS15に進むまで)、当該割り込みの受け付けが抑止される(S26)。それが一般例外やリセットの場合(S25のNO)、例外要因コードをレジスタEXPEVTにセットした後、自動的にリセットハンドラに分岐される(S27)。
そのときの例外事象が命令ブレーク例外である場合、図10のハードウェア処理において、SPC,SSR,EXPEVTの各レジスタは更新されず、中央処理装置CPUの処理は命令ブレークハンドラに分岐し、当該ハンドラの処理によってレジスタSPC,SSRをメモリに退避する。そして、さらに、ブレークレジスタIBRのブレークポイントアドレスから復帰アドレスが計算され、当該復帰アドレスがセーブプログラムカウンタSPCにセットされる。そして、命令ブレーク例外に対処するための命令ブレーク例外ハンドラの処理が行われる。命令ブレーク例外ハンドラからの復帰は、レジスタSPCに退避された復帰アドレスが利用され、命令ブレークポイントの次からデバッグ対象プログラムを継続して実行することができる。このように、命令ブレーク例外に対しては、多重に発生する例外の受け付けが禁止されている状態のデバッグ対象プログラムに対しても任意の位置で命令ブレークをかけてシステム評価やプログラムデバッグを行うことができる。
上記実施例によれば以下の作用効果がある。〔1〕 TLBミス例外に対するように高速処理を最優先とするものに対しては、レジスタVBRの値を1回リードし、その値にベクタオフセット(H'400)を加算するだけでTLBミス例外ハンドラのベクタポイント(分岐先アドレス)を取得できる。また、別の例外要因に対しては、レジスタVBRの値にベクタオフセットを加算して得られたベクタポイントに、さらに、レジスタEXPEVT又はINTEVTの値を1回リードして得た例外要因コードをアドレスオフセットとして加算する事により、所要の例外ハンドラの先頭アドレス(分岐先アドレス)を取得できる。このように、分岐先アドレスを外部メモリのアクセスによって取得しないため、例外発生からその例外に対処するためのハンドラの処理へ遷移するまでの遷移時間が短縮される。これによって、マイクロコンピュータMPUの全体的なデータ処理速度の高速化が実現できる。換言すれば、データ処理の高速化に密接なTLBミス例外のような処理に対しては、その例外処理への遷移時間を短縮することが最優先とされ、例外処理への遷移時間の短縮がTLBミス例外程データ処理速度の高速化に寄与しないと考えられる割り込みなどに対しては、ハンドラのマッピングやハンドラのサイズに対して融通性を持たせ、ユーザの使い勝手の向上が計られる。
〔2〕ベクタベースレジスタの値とベクタオフセットとを加算して得られたアドレスに配置された例外ハンドラの内の一部の例外ハンドラ(TLBミス例外ハンドラ)だけが、対応する例外に対して直接的な例外処理を行なう。その他の例外に対しては、例外要因コードをアドレスオフセットに利用して、更に、分岐されて所定のハンドラにたどり着くようになっている。換言すれば、ベクタベースアドレスに対する固定のオフセットであるベクタオフセットの数は例外要因の数よりも遥かに少ない。全ての例外要因に対して固有の固定オフセット(ベクタオフセット)を利用する場合、例外要因が増えるほどベクタオフセットを生成するためのハードウェア量が増大する。それゆえ、マイクロコンピュータの形成される半導体チップの面積は増加し、マイクロコンピュータ自体のコストも、高くなってしまうと考えられる。しかしながら、本発明のような例外処理においては、物理的な回路規模の縮小とデータ処理の高速化との双方を満足させることができる。したがって、本発明のマイクロコンピュータMPUは、小面積の半導体チップに形成することができ、そのコストも低減される。
〔3〕多重に例外や割り込みを受け付けるか否かは、ハードウェアによって規定されたベクタポイントのハンドラの記述によって決定される。多重な例外の受け付けを許容する場合、退避レジスタSSR,SPCに既に退避されている値が、さらに、外部メモリMMRYに退避される。TLBミス例外の様に高速処理が必要な場合、多重例外や多重割り込みを抑止した状態で、例外処理ハンドラが実行されるので、セーブステータスレジスタSSR,セーブプログラムカウンタSPCの外部メモリMMRYへの退避を一切必要としない。この点において、TLBミス例外の発生からTLBミスハンドラへの遷移時間を最短にする事が保証される。
〔4〕ハードウェアで決定されるベクタポイントのハンドラから、更に、別のハンドラに分岐する際、例外要因コードが分岐のためのアドレスオフセットとして利用される。換言すれば、夫々の例外要因コードをアドレスオフセットとして利用できるように、例えば、アドレス換算で32バイト分に相当するようなH'20の間隔を置いて例外要因コードが割り当てられている。そのため、例外要因コード(アドレスオフセット)に対するベースアドレスは、ハードウェアによって決定されているベクタポイントに配置される例外処理ハンドラのプログラム記述に従って自由に決定できることになる。このことは、実際の分岐先アドレスや分岐先のハンドラのサイズ対してユーザの自由度を保証する。
〔5〕内部状態及び復帰命令アドレスを退避するレジスタSSR,SPCを採用することにより、例外発生時の退避に際して外部メモリへアクセスを減らすことができる。
〔6〕中央処理装置CPUの動作に同期して発生する一般例外と非同期で発生する割り込み要求との双方に対処するため、一般例外に関する例外要因コードを格納するレジスタEXPEVTと割り込み要求に関する例外要因コードを格納するレジスタINTEVTとが設けられる。双方の例外発生に対して同じようなタイミングで要因コードを共通のレジスタに書き込むための煩雑な処理を避けられ、例外要因コードを各レジスタにセットする処理を簡素化できる。
〔7〕リセット例外ハンドラやTLBミス例外処理ハンドラ(例外要因に応じてハードウェアで決定されている分岐先のハンドラ)の処理において、初期的なプロセッサモードが、例外の多重受け付け抑止状態及び特権状態への移行によって一定にされる。したがって、ユーザの当該ハンドラ上で規定できる例外処理の内容は高い自由度を保証される。
〔8〕汎用レジスタR0〜R7のレジスタバンクを特権状態においてのみソフトウェアで切り換え可能にすることにより、中央処理装置CPUは、特権状態において、ユーザ状態とは異なるバンクの汎用レジスタR0〜R7を利用できる。このことは、例えば、例外処理においてユーザ状態から特権状態にプロセッサモードを切り換える時、汎用レジスタR0〜R7の内容の外部メモリMMRYへの退避を省略できることを意味する。この点においても、例外発生からそれに対処する処理へ遷移するまでの遷移時間が短縮される。
〔9〕多重例外を抑止した状態の例外ハンドラの処理において、命令ブレーク例外を処理可能にすることにより、多重に発生する例外の受け付けが禁止されている状態のデバッグ対象プログラムに対しても任意の位置で命令ブレークをかけてシステム評価やプログラムデバッグを行うことができることを保証できる。
〔10〕アドレス領域P1,P2は、対応する物理アドレスが固定とされる領域であり、アドレス変換バッファTLBを利用したアドレス変換の対象とはされない。特権状態において、アドレス領域P1,P2をアクセスするときには、TLBミスを初めとするアドレス変換に係る例外を多重に生ずることはない。したがって、割り込みや一般例外などの各種例外ハンドラをアドレス領域P1又はP2に配置することにより、TLBミスを初めとするアドレス変換に係る例外が例外処理中に新たに生ずることがなくなる。換言すれば、アドレス変換に係る例外が多重に発生する事態を回避できので、中央処理装置CPUのデータ処理を効率化することができる。
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、ハードウェアで決定されるベクタオフセットはH'100,H'400,H'600に限定されず、また、アドレスオフセットを規定する要因コードやその割り当て間隔も上記実施例に限定されず、適宜変更可能である。また、例外は、上記実施例のリセット、一般例外、割り込み要求に大別する考え方に限定されない。さらに、ハードウェアによって決定された第1のベクタポイントに直接TLBミス例外ハンドラを配置したが、当該ベクタポイントに配置できる例外ハンドラは、それに限定されず、システム構成に応じて適宜変更できる。また、上記第1のベクタポイントから分岐される第2のポイントに配置した別の例外ハンドラにおいては、更に、別のハンドラに分岐できることは言うまでもない。その場合にも要因コードをアドレスオフセット情報として利用するが可能である。
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、データプロセッサ、マイクロプロセッサ、ディジタルシグナルプロセッサなどその称呼の如何に関わらず例外処理をサポートする各種データ処理装置に広く適用することができる。
本発明の一実施例に係るシングルチップマイクロコンピュータのブロック図である。 例外発生時におけるハードウェアによるベクタポイントとポイントされたハンドラから更に別のハンドラに分岐する本実施例の手法を概念的に示した説明図である。 バンク構成の汎用レジスタ及びシステムレジスタの説明図である。 ユーザモードにおける図3の汎用レジスタ及びシステムレジスタの状態説明図である。 特権モードにおける図3の汎用レジスタ及びシステムレジスタの状態説明図である。 コントロールレジスタの説明図である。 割り込み要因とベクタオフセットの割り当てなどを示す説明図である。 割り込み要因とそれに割り当てられた割り込み要因コードとの対応説明図である。 例外要因レジスタ及びトラップレジスタの説明図である。 ハードウェアによって決定されたベクタポイント処理の一例フローチャートである。 ベクタポイントに置かれたハンドラの処理の一例フローチャートである。 割り込み又は一般例外ハンドラによる処理において別の割り込み又は一般例外が発生した場合における処理の一例フローチャートである。 本実施例に係るマイクロコンピュータの一例アドレスマップである。 ベクタオフセットを生成するハードウェアの一例ブロック図である。 例外要因コードを生成する論理の一例ブロック図である。
符号の説明
MPU マイクロコンピュータ
CPU 中央処理装置
CTRL 制御部
PC プログラムカウンタ
SPC セーブプログラムカウンタ
SR ステータスレジスタ
MD モードビット
RB レジスタバンクビット
BL ブロックビット
SSR セーブステータスレジスタ
VBR ベクタベースレジスタ
R0〜R15 汎用レジスタ
UBC 命令ブレークコントローラ
IBR 命令ブレークアドレスレジスタ
MMU メモリマネージメントユニット
TLB アドレス変換バッファ
TLBC 制御部
EXPEVT 一般例外用の例外要因レジスタ
INTEVT 割り込み要求用の例外要因レジスタ
TRAP トラップレジスタ
CVG 定数発生回路
SFT シフタ

Claims (2)

  1. 中央処理装置と、複数の領域に分割された記憶回路と、ベクタテーブルと、アドレス変換バッファとを具備し、
    前記ベクタテーブルは、複数の割込み/例外ハンドラの先頭アドレスを格納し、
    前記アドレス変換バッファは、論理アドレスを物理アドレスに変換するために用いられ、
    前記複数の領域のうちの1つである第1領域は、物理アドレスに固定されており、アドレス変換バッファでのアドレス変換の対象とされておらず、前記割込み/例外ハンドラは前記第1領域に配置されることを特徴とする1チップデータプロセッサ。
  2. 請求項2において、
    前記1チップデータプロセッサは、キャッシュメモリを更に有し、
    前記第1領域はキャッシュメモリでのキャッシュ対象とされず、
    前記複数の領域のうちの他の1つである第2領域は物理アドレスに固定されており、アドレス変換バッファでのアドレス変換の対象とされておらず、さらにキャッシュメモリでのキャッシュ対象とされず、
    前記割込み/例外ハンドラは、第1ブロックと第2ブロックを有し、前記第1ブロックは前記第1領域に配置され、前記第2ブロックは前記第2領域に配置されることを特徴とする1チップデータプロセッサ。
JP2004182149A 1994-09-09 2004-06-21 1チップデータプロセッサ Expired - Fee Related JP3822885B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004182149A JP3822885B2 (ja) 1994-09-09 2004-06-21 1チップデータプロセッサ

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP24199194 1994-09-09
JP8606795 1995-03-17
JP2004182149A JP3822885B2 (ja) 1994-09-09 2004-06-21 1チップデータプロセッサ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP24087295A Division JP3672634B2 (ja) 1994-09-09 1995-08-25 データ処理装置

Publications (2)

Publication Number Publication Date
JP2004272939A JP2004272939A (ja) 2004-09-30
JP3822885B2 true JP3822885B2 (ja) 2006-09-20

Family

ID=33135602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004182149A Expired - Fee Related JP3822885B2 (ja) 1994-09-09 2004-06-21 1チップデータプロセッサ

Country Status (1)

Country Link
JP (1) JP3822885B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011045931A1 (ja) * 2009-10-14 2011-04-21 パナソニック株式会社 情報処理装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424563B2 (en) * 2006-02-24 2008-09-09 Qualcomm Incorporated Two-level interrupt service routine
JP5292706B2 (ja) * 2007-02-28 2013-09-18 富士通セミコンダクター株式会社 コンピュータシステム
JP5414057B2 (ja) * 2009-05-22 2014-02-12 ルネサスエレクトロニクス株式会社 マイクロコンピュータ
WO2012086288A1 (ja) * 2010-12-20 2012-06-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 例外の制御方法、システムおよびプログラム
US9710270B2 (en) 2010-12-20 2017-07-18 International Business Machines Corporation Exception control method, system, and program
US10740220B2 (en) * 2018-06-27 2020-08-11 Microsoft Technology Licensing, Llc Cache-based trace replay breakpoints using reserved tag field bits

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011045931A1 (ja) * 2009-10-14 2011-04-21 パナソニック株式会社 情報処理装置

Also Published As

Publication number Publication date
JP2004272939A (ja) 2004-09-30

Similar Documents

Publication Publication Date Title
JP3672634B2 (ja) データ処理装置
KR100403405B1 (ko) 분산형버스액세스및제어조정에따라다수개의내부신호버스를공유하는다수개의회로기능요소를갖는집적회로
US6205560B1 (en) Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
US7827390B2 (en) Microprocessor with private microcode RAM
US4701844A (en) Dual cache for independent prefetch and execution units
US6052708A (en) Performance monitoring of thread switch events in a multithreaded processor
US5438670A (en) Method of prechecking the validity of a write access request
US5838897A (en) Debugging a processor using data output during idle bus cycles
US20030051122A1 (en) Trace information generation apparatus for generating branch trace information omitting at least part of branch source information and branch destination information on target processing
US6959367B2 (en) System having read-modify-write unit
KR100309615B1 (ko) 고속프로그램가능로직컨트롤러(plc)
JP2000231549A (ja) マイクロプロセッサ
JP4226085B2 (ja) マイクロプロセッサ及びマルチプロセッサシステム
JPH0215369A (ja) ベクター処理システムの命令を実行する方法及び装置
JP3226055B2 (ja) 情報処理装置
JPH03158928A (ja) データ処理装置
US6986028B2 (en) Repeat block with zero cycle overhead nesting
JP3822885B2 (ja) 1チップデータプロセッサ
CN112182999B (zh) 一种基于mips32指令***的三级流水线cpu设计方法
GB2200481A (en) Maintaining coherence between a microprocessor's integrated cache and external memory
US6820254B2 (en) Method and system for optimizing code using an optimizing coprocessor
GB2200482A (en) Monitoring control flow in a microprocessor
US20030196072A1 (en) Digital signal processor architecture for high computation speed
US20080010426A1 (en) Processor system and processing method for operating system program in processor system
CN111984317A (zh) 用于对存储器中的数据进行寻址的***和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040624

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: 20060620

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060623

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: 20100630

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110630

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110630

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20110630

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120630

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120630

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130630

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees