(57)【要約】【課題】  非実装空間への暴走を検出する。【解決手段】  マイクロコンピュータ１は、ＣＰＵ１１におけるプログラム実行の暴走を検出し、復帰プログラムの実行を開始する。プログラム実行の暴走検出は、プログラム空間４０における非実装空間４２へのアクセスをモニタすることによって行われる。ＣＰＵ１１が非実装空間４２のいずれか一つのアドレスへアクセスすると、予め定められた復帰プログラムを実行するようにＣＰＵ１１へ指示を送る。これによって、非実装空間への暴走を検出し、暴走を止めることができる。【選択図】  図２
2006079230.tif 000002
【特許請求の範囲】
【請求項１】
プログラムに従って処理を実行する命令処理部を備え、この命令処理部におけるプログラム実行の暴走を検出する、半導体回路装置であって、
前記命令処理部がアクセスするプログラム空間のアドレスを判定するアドレス判定部を備え、
前記アドレス判定部が、前記命令処理部が非実装空間のアドレスにアクセスしたと判定したことに応答して復帰処理を実行する、半導体回路装置。
【請求項２】
前記アドレス判定部が、前記命令処理部が非実装空間のアドレスにアクセスしたと判定したことに応答して、前記命令処理部に予め定められた復帰プログラムに実行を移すことを指示する指示部をさらに備え、
前記命令処理部が前記復帰プログラムを実行することによって、前記復帰処理を実行する、
請求項１に記載の半導体回路装置。
【請求項３】
前記アドレス判定部は、前記命令処理部が前記非実装空間に含まれる全てのアドレスのいずれかにアクセスしたかを判定し、
前記命令処理部が前記非実装空間に含まれる全てのアドレスのいずれかにアクセスしたと前記アドレス判定部が判定したことに応答して、前記指示部は前記命令処理部に予め定められたプログラムに実行を移すことを指示する、
請求項２に記載の半導体回路装置。
【請求項４】
前記指示部は、前記命令処理部に割り込み要求を行うことによって、前記命令処理部に予め定められた復帰プログラムに実行を移すことを指示する、請求項２に記載の半導体回路装置。
【請求項５】
前記指示部は、前記非実装空間の一つもしくは複数のアドレスに対応付けられたレジスタをさらに備え、前記命令処理部が前記一つもしくは複数のアドレスへアクセスしたと前記アドレス判定部が判定したことに応答して、前記レジスタに記憶されている命令を前記命令処理部に出力する、請求項２に記載の半導体回路装置。
【請求項６】
前記レジスタは前記非実装空間の全てのアドレスに対応付けられている、請求項５に記載の半導体回路装置。
【請求項７】
前記非実装空間は複数のセグメントから構成されており、
前記指示部は、それぞれが予め定められた復帰プログラムを示す命令を記憶する複数のレジスタを備え、
前記複数のセグメントのそれぞれは、前記複数のレジスタのいずれか一つに対応づけられ、
前記指示部は、前記命令処理部がアクセスしたアドレスに対応するレジスタに記憶されている命令を前記命令処理部に出力する、
請求項２に記載の半導体回路装置。
【請求項８】
前記判定部は、前記非実装空間の一部のアドレスへの前記命令処理部のアクセスを判定し、
前記判定処理部がアクセスを判定しない前記非実装空間のアドレスに、前記命令処理部がアクセスした場合、前記命令処理部に非分岐命令が出力される、
請求項１に記載の半導体回路装置。
【請求項９】
プログラムに従って処理を実行する命令処理部におけるプログラム実行の暴走を検出する、暴走検出方法であって、
プログラム空間における非実装空間のアドレスへの前記命令処理部によるアクセスを判定し、
前記非実装空間へアクセスしたとの判定に応答して、予め定められた復帰処理を実行する、
暴走検出方法。
【請求項１０】
前記非実装空間のいずれか一つのアドレスにアクセスした場合に、前記命令処理部が前記非実装空間にアクセスしたと判定する、請求項９に記載の暴走検出方法。
【請求項１１】
前記非実装空間の予め定められた一部のアドレスにアクセスした場合に、前記命令処理部が前記非実装空間にアクセスしたと判定する、請求項９に記載の暴走検出方法。
【請求項１２】
前記非実装空間へアクセスしたとの判定に応答して、予め定められた復帰プログラムに実行を移すことを前記命令処理部に指示し、
前記命令処理部において、前記指示に応答して前記復帰プログラムの実行を開始する、
請求項９に記載の暴走検出方法。
【請求項１３】
前記非実装空間のアクセスされたアドレスに対応づけられた命令によって、前記復帰プログラムに実行を移すことを前記命令処理部に指示し、
前記命令処理部において、前記命令によって示された復帰プログラムを開始する、
請求項１２に記載の暴走検出方法。
【請求項１４】
前記命令は、前記非実装空間の複数のアドレスに対応づけられている、請求項１３に記載の暴走検出方法。
【請求項１５】
前記非実装空間の全てのアドレスが一つもしくは複数の命令に対応付けられており、
前記非実装空間のアクセスされたアドレスに対応づけられた命令によって、前記復帰プログラムに実行を移すことを前記命令処理部に指示し、
前記命令処理部において、前記命令によって示された復帰プログラムを開始する、
請求項１２に記載の暴走検出方法。
【請求項１６】
割り込み要求によって、前記予め定められた復帰プログラムに実行を移すことを前記命令処理部に指示する、請求項１２に記載の暴走検出方法。
【請求項１７】
プログラムに従って処理を実行する命令処理部を備え、この命令処理部におけるプログラム実行の暴走を検出する、半導体回路装置であって、
前記命令処理部がアクセスするプログラム空間のアドレスを判定するアドレス判定部と、
前記アドレス判定部が、前記命令処理部が非実装空間のアドレスにアクセスしたと判定したことに応答して、前記命令処理部に予め定められたプログラムに実行を移すことを指示する指示部と、
を有する半導体回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体回路装置及び暴走検出方法に関し、特に、命令処理部におけるプログラム実行における非実装空間への暴走検出に関する。
【背景技術】
【０００２】
現在、パーソナルコンピュータなどのコンピュータ・システムに限らず、家電製品やＯＡ機器、自動車や製造装置の制御装置など、多くの電子機器においてマイクロコンピュータが利用されている。マイクロコンピュータは、機能的要素として、命令やアドレスを含むデータを読み出して命令実行の結果に応じてマイクロコンピュータ全体を制御す制御部、算術演算や論理演算を実行する演算処理部、必要なデータを記憶するレジスタ・セットなどを備えている。また、各種装置の制御装置として実装される場合には、ＲＯＭやＲＡＭなどのメモリの他、各種周辺機能などを備えている。マイクロコンピュータはプログラムに含まれる命令を順次解読し、それに従って処理を行うことで所望の機能を実現する。
【０００３】
命令はレジスタ・セットに含まれるプログラム・カウンタの示すアドレスからフェッチされる。例えば外部ノイズなどのためにプログラム・カウンタの値が変化すると、マイクロコンピュータは不測のアドレスにアクセスし、マイクロコンピュータのプログラム実行が暴走する問題が知られている。このため、マイクロコンピュータの暴走を自動的に検出し、暴走に対応した復帰処理を行うことが必要とされる。暴走検出の方法としては、これまでにいくつかのものが提案されている。例えば、ＲＯＭに記憶されているプログラムにＴＲＡＰ命令を分散的に配置することによって暴走を検出し、ＴＲＡＰ処理によって所定の復帰プログラムを実行することができる。
【０００４】
この他、例えば特許文献１は、マイクロコンピュータの一つの暴走検出方法について開示している。特許文献１に開示されたマイクロコンピュータは暴走検出カウンタを備え、常にそれを動作させている。暴走検出カウンタがオーバーフローすると暴走と判定し、ＣＰＵに異常信号を出力する。マイクロコンピュータは、通常動作時の所定のタイミングで暴走検出カウンタをクリアする。これによって通常動作時に暴走検出カウンタがオーバーフローすることがなく、通常動作と異なる暴走を検出することができる。
【０００５】
具体的には、マイクロコンピュータはプログラムの実行アドレスを監視し、あらかじめ登録されたアドレスを実行していれば暴走検出カウンタのクリアを行なう。また、マイクロコンピュータの周辺ハードウェアの要因がすべて正しく機能している場合に、暴走検出用カウンタのクリアを行なう。暴走検出用カウンタのクリアは、ソフトウェア（プログラム）を介さずハードウェアによって直接に行われる。このように、暴走検出用カウンタのクリアをハードウェアで行なうことによって、プログラム実行の暴走中に誤ってプログラムが暴走検出カウンタをクリアすることを防止し、プログラム実行が暴走したときの暴走検出を確実に行なうことができる。
【特許文献１】特開２００４−１５１８４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＣＰＵに与えられるプログラム空間は、ＲＯＭやＲＡＭなどの実装ハードウェアに割り当てられた実装空間の他、実装されたハードウェアに対応付けられていない非実装空間間を含むことが典型的である。上記の従来技術にように、ＲＯＭ内のプログラムにＴＲＡＰ命令を配置することによっては、プログラムが記憶されていない非実装空間への暴走を検出することはできない。また、特許文献１のように正常なプログラム実行を検出し、それによって暴走検出カウンタをクリアする場合も同様である。このため、非実装空間への暴走を検出する方法が要求される。
【０００７】
本発明は上記のような事情を背景としてなされたものであって、本発明の目的は、プログラム空間の非実装空間へのプログラム実行の暴走を検出することである。本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるだろう。
【課題を解決するための手段】
【０００８】
以下に課題を解決するための手段を開示する。本項目において、いくつかの構成要素は、実施の形態において説明された構成要素と対応付けられている。しかし、この対応付けは発明の理解の容易のためになされたものであって、各要素は実施の形態の対応要素にのみ限定されるものでない。
【０００９】
本発明の第１の態様は、プログラムに従って処理を実行する命令処理部（例えばＣＰＵ１１）を備え、この命令処理部におけるプログラム実行の暴走を検出する、半導体回路装置であって、前記命令処理部がアクセスするプログラム空間のアドレスを判定するアドレス判定部（例えばアドレス判定部１５２）を備え、前記アドレス判定部が、前記命令処理部が非実装空間のアドレスにアクセスしたと判定したことに応答して復帰処理を実行する。これによって、非実装空間への暴走を検出することができる。
【００１０】
前記アドレス判定部が、前記命令処理部が非実装空間のアドレスにアクセスしたと判定したことに応答して、前記命令処理部に予め定められた復帰プログラムに実行を移すことを指示する指示部（例えば命令発給部１５３）をさらに備え、前記命令処理部が前記復帰プログラムを実行することによって、前記復帰処理を実行することは、好ましい例の一つである。これによって、所望の復帰プログラムによる復帰処理を行うことができる。
【００１１】
前記アドレス判定部は、前記命令処理部が前記非実装空間に含まれる全てのアドレスのいずれかにアクセスしたかを判定し、前記命令処理部が前記非実装空間に含まれる全てのアドレスのいずれかにアクセスしたと前記アドレス判定部が判定したことに応答して、前記指示部は前記命令処理部に予め定められたプログラムに実行を移すことを指示することが好ましい。これによって、非実装空間への暴走を確実に検出することができる。
【００１２】
前記指示部は、前記命令処理部に割り込み要求を行うことによって、前記命令処理部に予め定められた復帰プログラムに実行を移すことを指示することは、好ましい例の一つである。これによって回路をシンプルにすることができる。
【００１３】
前記指示部は、前記非実装空間の一つもしくは複数のアドレスに対応付けられたレジスタ（例えば発給命令設定レジスタ１５１、第１の発給命令設定レジスタ５２１、第２の発給命令設定レジスタ５２２、第１の発給命令設定レジスタ６２１、第２の発給命令設定レジスタ６２２）をさらに備え、前記命令書処理部が前記一つもしくは複数のアドレスへアクセスしたと前記アドレス判定部が判定したことに応答して、前記レジスタに記憶されている命令を前記命令処理部に出力することが好ましい。これによって、アドレスに応じた命令によって回復処理を指示することができる。
【００１４】
前記レジスタ（例えば、発給命令設定レジスタ１５１あるいは第１及び第２の発給命令設定レジスタ５２１、５２２）は前記非実装空間の全てのアドレスに対応付けられていることが好ましい。これによって、非実装空間への暴走を確実に検出することができる。
【００１５】
前記非実装空間は複数のセグメントから構成されており、前記指示部は、それぞれが予め定められた復帰プログラムを示す命令を記憶する複数のレジスタ（例えば、第１の発給命令設定レジスタ５２１、第２の発給命令設定レジスタ５２２）を備え、前記複数のセグメントのそれぞれは、前記複数のレジスタのいずれか一つに対応づけられ、前記指示部は、前記命令処理部がアクセスしたアドレスに対応するレジスタに記憶されている命令を前記命令処理部に出力することが好ましい。これによって、アドレスに応じた命令によって回復処理を指示することができる。あるいは、前記判定部は、前記非実装空間の一部のアドレスへの前記命令処理部のアクセスを判定し、前記判定処理部がアクセスを判定しない前記非実装空間のアドレスに前記命令処理部がアクセスした場合、前記命令処理部に非分岐命令が出力されることが好ましい。これによって、非実装空間における一部のアドレスについてアクセス判定を確実に行うことができる。
【００１６】
本発明の第２の態様は、プログラムに従って処理を実行する命令処理部におけるプログラム実行の暴走を検出する、暴走検出方法であって、プログラム空間における非実装空間のアドレスへの前記命令処理部によるアクセスを判定し、前記非実装空間へアクセスしたとの判定に応答して、予め定められた復帰処理を実行する。これによって、非実装空間への暴走検出をより確実に行うことができる。
【００１７】
前記非実装空間のいずれか一つのアドレスにアクセスした場合に、前記命令処理部が前記非実装空間にアクセスしたと判定することが好ましい。これによって、非実装空間への暴走を確実に検出することができる。あるいは、前記非実装空間の予め定められた一部のアドレスにアクセスした場合に、前記命令処理部が前記非実装空間にアクセスしたと判定することができる。
【００１８】
前記非実装空間へアクセスしたとの判定に応答して、予め定められた復帰プログラムに実行を移すことを前記命令処理部に指示し、前記命令処理部において、前記指示に応答して前記復帰プログラムの実行を開始することが好ましい。これによって、所望の復帰プログラムによる復帰処理を行うことができる。
【００１９】
前記非実装空間のアクセスされたアドレスに対応づけられた命令によって、前記復帰プログラムに実行を移すことを前記命令処理部に指示し、前記命令処理部において、前記命令によって示された復帰プログラムを開始することが好ましい。これによって、暴走先のアドレス応じた復帰処理を行うことができる。
【００２０】
前記命令は、前記非実装空間の複数のアドレスに対応づけられていることが好ましい。これによって、非実装空間への暴走検出をより確実に行うことができる。
【００２１】
前記非実装空間の全てのアドレスが一つもしくは複数の命令に対応付けられており、前記非実装空間のアクセスされたアドレスに対応づけられた命令によって、前記復帰プログラムに実行を移すことを前記命令処理部に指示し、前記命令処理部において、前記命令によって示された復帰プログラムを開始することが好ましい。これによって、暴走先のアドレス応じた復帰処理を行うことができる。
【００２２】
割り込み要求によって、前記予め定められた復帰プログラムに実行を移すことを前記命令処理部に指示することが好ましい。これによって、回路構成をシンプルにすることができる。
【００２３】
本発明の第３の態様は、プログラムに従って処理を実行する命令処理部（例えばＣＰＵ１１）を備え、この命令処理部におけるプログラム実行の暴走を検出する、半導体回路装置であって、前記命令処理部がアクセスするプログラム空間のアドレスを判定するアドレス判定部（例えばアドレス判定部１５２）と、前記アドレス判定部が、前記命令処理部が非実装空間のアドレスにアクセスしたと判定したことに応答して、前記命令処理部に予め定められたプログラムに実行を移すことを指示する指示部（例えば命令発給部１５３）と、を有する。これによって、非実装空間への暴走を検出し、それに応じた処理を行うことができる。
【発明の効果】
【００２４】
本発明によれば、プログラム空間の非実装空間へプログラム実行の暴走を検出することができる。
【発明を実施するための最良の形態】
【００２５】
以下に、本発明を適用可能な実施の形態が説明される。以下の説明は、本発明の実施形態を説明するものであり、本発明が以下の実施形態に限定されるものではない。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、当業者であれば、以下の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である
【００２６】
実施の形態１．
本実施形態のマイクロコンピュータは、プロセッサ（本形態ではＣＰＵとして示されている）におけるプログラム実行の暴走を検出し、復帰プログラムの実行を開始する。プログラム実行の暴走検出は、プログラム空間における非実装空間へのアクセスをモニタすることによって行われる。ＣＰＵが非実装空間のいずれか一つのアドレスへアクセスすると、予め定められた復帰プログラムを実行するようにＣＰＵへ指示を送る。これによって、非実装空間への暴走を検出し、暴走を止めることができる。
【００２７】
本形態の暴走検出について詳しい説明を行う前に、まず、本形態のマイクロコンピュータのハードウェア構成について、その概略を説明する。図１は、本実施形態に係るマイクロコンピュータ１のハードウェア構成の概略を模式的に示すブロック図である。マイクロコンピュータ１は、外部バス３を介して、外部メモリ２などの外部回路と接続されており、外部回路とデータの入出力を行うことで、制御処理、演算処理などの所望の処理を実行する。
【００２８】
マイクロコンピュータ１は、命令処理部の一例であるＣＰＵ１１、読み出し専用メモリであるＲＯＭ１２、任意のアドレスを指定してデータの読み書きすることが可能なＲＡＭ１３、周辺回路との間のデータの入出力をインターフェースする周辺Ｉ／Ｏ回路１４、ＣＰＵ１１の暴走を検出した場合にＣＰＵ１１に所定の指示を行う命令発給ユニット１５を備えている。各回路は内部バスを介して接続されており、各回路は、命令、アドレスあるいは演算データなどの各データを、内部バスを介して互いに入出力する。また、データの種類に応じた専用のバスが用意される。
【００２９】
ＣＰＵ１１は、レジスタ・セット１１１、制御部１１２、演算処理部１１３、バス・インターフェース１１４などの各回路を備えている。レジスタ・セット１１１は複数のレジスタからなり、命令やアドレスあるいは演算データを格納する。レジスタ・セット１１１には、演算データを格納するアキュムレータやプログラム実行アドレスを指示するプログラム・カウンタなどが含まれている。
【００３０】
制御部１１２は、ＲＯＭ１２などから命令をフェッチする命令フェッチ回路や、命令を解読する命令デコーダなどを備えている。制御部１１２は、ＲＯＭ１２やＲＡＭ１３などから命令やアドレスを含むデータをレジスタに読み出し、命令実行の結果に応じてマイクロコンピュータ１全体を制御する。また、外部回路からの割り込み要求があった場合に、割り込み要因に応じた割り込み処理の制御を行う。演算処理部１１３は、加減算などの数値演算、ＡＮＤ・ＯＲ・ＮＯＴなどの論理演算及びシフト命令などを実行する。バス・インターフェース１１４は、外部回路と間のデータや命令の入出力をインターフェースする。
【００３１】
ＲＯＭ１２は、ユーザによって設定された命令や演算データを予め記憶している。ＲＯＭ１２としては、電源が切れても記憶データを保持する不揮発性メモリが使用され、例えば、フラッシュメモリなどのＥＥＰＲＯＭ（Electrically Erasable Read-Only Memory）を使用することができる。ＲＡＭ１３は揮発性の記憶デバイスであり、再書き込みが不要なＳＲＡＭ、一定時間毎に再書き込みが必要なＤＲＡＭなどを使用することができる。
【００３２】
命令発給ユニット１５は、ＣＰＵ１１のプログラム実行の暴走を検出し、暴走を検出した場合にＣＰＵ１１に予め定められたプログラムの実行を指示する。具体的には、ＣＰＵ１１の命令フェッチ・アドレスを検出し、非実装空間におけるアドレスからの命令フェッチの場合に、ＣＰＵ１１に復帰プログラムの実行を指示する。ＣＰＵ１１のプログラム空間（ＣＰＵ１１に与えられているアドレス空間）のメモリ・マップを使用して、命令発給ユニット１５による暴走検出の原理について説明する。
【００３３】
図２は、ＣＰＵ１１のプログラム空間のマッピング及び命令発給ユニット１５による暴走検出を説明する図である。プログラム空間４０はいくつかのセグメントに分割されている。各セグメントは、マイクロコンピュータ１あるいは外部回路に実装されているハードウェアに割り当てられた実装空間４１と、対応するハードウェアが実装されていない非実装空間４２に分けられる。実装空間４１は、それぞれが固有のハードウェアに対応する複数のセグメントを備えている。図２においては、周辺Ｉ／Ｏ空間４１１、ＲＡＭ空間４１２及びＲＯＭ空間４１３が例示されている。
【００３４】
命令発給ユニット１５は発給命令設定レジスタ１５１を備えており、発給命令設定レジスタ１５１には予め命令が記憶されている。例えば、ＪＵＭＰ命令やＴＲＡＰ命令を発給命令設定レジスタ１５１に設定することができる。発給命令設定レジスタ１５１を備えることによって、ユーザが所望の命令をセットすることができる。ＪＵＭＰ命令及びＴＲＡＰ命令によって、予め定められたプログラム、好ましくは復帰プログラムに処理を移す。
【００３５】
ＣＰＵ１１のプログラム実行が暴走し、ＣＰＵ１１が非実装空間４２にアクセスすると、発給命令設定レジスタ１５１の命令がＣＰＵ１１に入力される。上記のように、発給命令設定レジスタ１５１は非実装空間４２の全てのアドレスに対応付けられているため、ＣＰＵ１１が非実装空間４２のいずれか一つのアドレスにアクセスすると、そのアドレスに対応している発給命令設定レジスタ１５１の命令がＣＰＵ１１にフェッチされる。発給命令設定レジスタ１５１は非実装空間４２の全てのアドレスに対応付けられていることによって、非実装空間への暴走を迅速に検出することができる。
【００３６】
ＣＰＵ１１は、取得したＪＵＭＰ命令あるいはＴＲＡＰ命令に従って、ＲＯＭ１２に記憶されている復帰プログラムの実行を開始する。復帰プログラムは暴走が起きた場合に復帰処理を行うプログラムであり、例えば、リセット後のイニシャライズ処理やレジスタ・セット１１１に異常値がない場合に通常のメイン・ルーチンに処理を戻すなどの処理を、ＣＰＵ１１は復帰プログラムに従って行うことができる。このように、ＣＰＵ１１が非実装空間へアクセスしたことに応答して、ＣＰＵ１１に復帰プログラムを開始させることによって、非実装空間への暴走を検出し、暴走に応じた復帰処理を行うことができる。
【００３７】
予め設定された命令によってＣＰＵ１１に復帰プログラムに処理を移すことを指示する他、命令発給ユニット１５は、割り込み信号をＣＰＵ１１に出力することによって、ＣＰＵ１１に復帰プログラムの開始を指示することができる。割り込み処理を使用することによって、レジスタを設けることが不要となり、回路構成を簡素化することができる。また、レジスタ内のデータの不測の変化による不具合を防止することができる。
【００３８】
次に、図３を参照して、命令発給ユニット１５の詳細を説明する。図３は命令発給ユニット１５の概略構成を示すブロック図である。命令発給ユニット１５は、ＣＰＵ１１の命令フェッチ・アドレスを判定するアドレス判定部１５２、アドレス判定部１５２の判定結果に基づいてＣＰＵ１１へ命令を発給する命令発給部１５３及び命令発給部１５３からの発給命令の出力を制御する出力制御部１５４を備えている。命令発給部１５３は、ユーザによって設定された命令を予め記憶する発給命令設定レジスタ１５１を備えている。
【００３９】
アドレス判定部１５２は、開始アドレス設定レジスタ１５５及び終了アドレス設定レジスタ１５６を備えている。図４に示すように、開始アドレス設定レジスタ１５５は非実装空間の開始アドレスを記憶し、終了アドレス設定レジスタ１５６は非実装空間の終了アドレスを記憶する。図５を参照して、アドレス判定部１５２はアドレス・バス上のアドレスをモニタし（Ｓ１１）、ＣＰＵ１１の命令フェッチ・アドレスと、開始アドレス設定レジスタ１５５及び終了アドレス設定レジスタ１５６のアドレスと比較し、非実装空間の開始アドレスから終了アドレスまでのいずれかのアドレスであるかを判定する（Ｓ１２）。
【００４０】
アドレス判定部１５２が、ＣＰＵ１１がアクセスしたアドレスが非実装空間のアドレスであると判定したことに応答して、命令発給部１５３は発給命令設定レジスタ１５１に記憶されている命令を出力制御部１５４に出力し、出力制御部１５４は、入力された命令をデータ・バスに出力する（Ｓ１３）。ＣＰＵ１１はデータ・バス上の命令を取得し、この命令に従った処理を実行する。アドレス判定部１５２が、ＣＰＵ１１がアクセスしたアドレスが非実装空間のアドレスでないと判定した場合は、出力制御部１５４はデータ・バスにデータを出力せず、他のハードウェアからのデータがデータ・バスに出力される（Ｓ１４）。
【００４１】
尚、命令発給部１５はＣＰＵ１１の外部に形成されているが、ＣＰＵ１１の内部に同様の機能を実装し、ＣＰＵ１１（制御部１１２）がプログラム・カウンタの値に応じてＣＰＵ１１内部の所定レジスタから命令を取得することも可能である。本形態は発給命令設定レジスタの命令に従って回復処理を実行するが、これに限らず、内部リセットあるいは外部回路からのリセット（外部リセット）によって、回復処理を行うことができる。外部リセットの場合、例えば、アドレス判定部１５２の判定結果を外部に出力し、その信号に応答して外部からリセットを行う構成とすることができる。また、本発明は、ＭＰＵ、周辺用ＬＳＩ（MPR：Micro Peripheral Unit）、マイクロコントローラ、ＤＳＰ（Digital Signal Processor）など、いずれのタイプのマイクロコンピュータに適用することも可能である。本形態においては、発給命令設定レジスタに命令を記憶するが、この命令をＲＯＭ１２やＲＡＭ１３に記憶しておくことも可能である。これらの点は、以下の実施形態において同様である。
【００４２】
実施の形態２．
図６〜９を参照して、第２の実施形態に係るマイクロコンピュータについて説明する。本形態のマイクロコンピュータは、第１の実施形態に係るマイクロコンピュータ１とは異なる命令発給ユニットを備え、他の構成については同様である。従って、本形態においては、命令発給ユニットの構成について説明し、他の構成についての説明を省略する。本形態の命令発給ユニットは、複数の発給命令設定レジスタを備えており、非実装空間の異なるセグメントにそれぞれ対応する。これによって、暴走先のアドレスに応じて異なる復帰プログラムを設定することが可能となる。
【００４３】
図６は、本形態のＣＰＵのプログラム空間４０のマッピング及び命令発給ユニットによる暴走検出を説明する図である。本形態の命令発給ユニットは複数の発給命令設定レジスタを備えている。図６においては、第１の発給命令設定レジスタ５２１と第２の発給命令設定レジスタ５２２の２つの発給命令設定レジスタが例示されている。非実装空間４２は２つのセグメントに分割されており、第１のセグメント４２１が第１の発給命令設定レジスタ５２１に、第２のセグメント４２２が第２の発給命令設定レジスタ５２２にそれぞれ対応している。
【００４４】
第１及び第２の発給命令設定レジスタ５２１、５２２には、同一もしくは異なる命令を設定することができる。好ましくは、図６に示すように、セグメントに応じてＣＰＵ１１が異なる復帰アドレスを実行するように、各発給命令設定レジスタ５２１、５２２に命令が設定される。設定する命令は、実施の形態１と同様に、ＪＵＭＰ命令あるいはＴＲＡＰ命令を利用することができる。図６の例においては、第１のセグメント４２１への暴走の場合には、第１の復帰プログラムにＣＰＵ１１の処理が移され、第２のセグメント４２２への暴走の場合には、第２の復帰プログラムにＣＰＵ１１の処理が移される。
【００４５】
第１の発給命令設定レジスタ５２１は第１のセグメント４２１の全てのアドレスに対応付けら、第２の発給命令設定レジスタ５２２は第２のセグメント４２２の全てのアドレスに対応付けられている。従って、ＣＰＵ１１のプログラム実行の暴走先が第１のセグメント４２１のいずれかのアドレスである場合、第１の発給命令設定レジスタ５２１に記憶されている命令が、ＣＰＵ１１にフェッチされる。一方、ＣＰＵ１１のプログラム実行の暴走先が第２のセグメント４２２のいずれかのアドレスである場合、第２の発給命令設定レジスタ５２２に記憶されている命令が、ＣＰＵ１１にフェッチされる。ＣＰＵ１１は、フェッチした命令に従って、第１の復帰プログラムもしく第２の復帰プログラムの実行を開始する。
【００４６】
また、命令に代えて、割り込み要求によってＣＰＵ１１に所定プログラムの処理の実行を指示することも可能である。命令発給ユニット５０は、セグメントに応じて異なる番号の割り込み要求をＣＰＵ１１に行う。ＣＰＵ１１は、割り込み番号に応じた割り込み処理を実行する。これによって、暴走先に応じて異なる復帰処理の指示をＣＰＵ１１に行うことができる。
【００４７】
図７は、本実施形態に係る命令発給ユニット５０の構成の概略を示すブロック図である。命令発給ユニット５０は、アドレス判定部５１、命令発給部５２及び出力制御部１５４を備えている。出力制御部１５４については実施の形態１において説明したので、ここでは説明を省略する。本形態のアドレス判定部５１は、第１、第２及び第３のアドレス設定レジスタ５１１、５１２、５１３の３つのアドレス設定レジスタを備えている。図８のメモリ・マップに示すように、第１のアドレス設定レジスタ５１１は第１のセグメント４２１の開始アドレスを記憶し、第２のアドレス設定レジスタ５１２は第１のセグメント４２１の終了アドレス（第２セグメントの開始アドレスにも対応する）を記憶し、第３のアドレス設定レジスタ５１３は第２のセグメント４２２の終了アドレスを記憶している。
【００４８】
命令発給部５２は、第１の発給命令設定レジスタ５２１及び第２の発給命令設定レジスタ５２２を備えている。各発給命令設定レジスタ５２１、５２２に予め設定されている命令は上記に説明した通りであり、第１もしくは第２の復帰プログラムへ処理を移すための、ＪＵＭＰ命令あるいはＴＲＡＰ命令などを記憶している。
【００４９】
図９を参照して、アドレス判定部５１は、ＣＰＵ１１がアドレス・バスに乗せる命令フェッチ・アドレスをモニタし（Ｓ２１）、命令フェッチ・アドレスが非実装空間４２に含まれるか否かを判定する。具体的には、アドレス・バス上の命令フェッチ・アドレスを取得し、各アドレス設定レジスタ５１１、５１２、５１３に記憶されているアドレス値と比較する。これによって、命令フェッチ・アドレスが、非実装空間４２の第１のセグメント４２１もしくは第２のセグメント４２２にアクセスしたか否かを判定する（Ｓ２２）。尚、命令フェッチ・アドレスが第２のアドレス設定レジスタ５１２の値と一致する場合は、第１のセグメント４２１もしくは第２のセグメント４２２のいずれかとする。
【００５０】
アドレス判定部５１が、命令フェッチ・アドレスが第１のセグメント４２１に含まれると判定した場合、命令発給部５２は、第１の発給命令設定レジスタ５２１に予め設定されている命令を出力制御部１５４に出力する（Ｓ２３）。出力制御部１５４は、アドレス判定部５１が命令フェッチ・アドレスと非実装空間のいずれか一つのアドレスとが一致すると判定した場合、命令発給部５２から取得した命令をデータ・バスに出力する。ＣＰＵ１１はデータ・バス上の命令を取得し、それに従って第１の復帰プログラムによる処理を開始する。
【００５１】
アドレス判定部５１が、ＣＰＵ１１からの命令フェッチ・アドレスが第２のセグメント４２２に含まれると判定した場合、命令発給部５２は、第２の発給命令設定レジスタ５２２に予め設定されている命令を出力制御部１５４に出力する（Ｓ２４）。出力制御部１５４は、アドレス判定部５１が命令フェッチ・アドレスと非実装空間のいずれか一つのアドレスとが一致すると判定した場合、命令発給部５２から取得した命令をデータ・バスに出力する。ＣＰＵ１１はデータ・バス上の命令を取得し、それに従って第２の復帰プログラムによる処理を開始する。
【００５２】
アドレス判定部５１が、命令フェッチ・アドレスが非実装空間に含まれていない、つまり、第１及び第２のセグメント４２１、４２２のいずれにも命令フェッチ・アドレスが含まれないと判定した場合、出力制御部１５４はデータ・バスにデータを出力せず、他のハードウェアからのデータがデータ・バスに出力される（Ｓ２５）。上記のように、本実施形態によれば、非実装空間のセグメントに対応付けられた複数の発給命令設定レジスタを用意することによって、セグメントに応じた指示をＣＰＵ１１に行うことができる。特に、非実装空間のアドレスに応じた異なる復帰処理を選択することが可能となる。
【００５３】
尚、本実施形態は２つのセグメントの分割する例を示したが、３以上のセグメントに分割することも可能である。本実施形態は連続する非実装空間を２つのセグメントに分割する例を示したが、非実装空間が離間した領域から構成されている場合にも、複数のセグメントに分割して制御することができる。一つのセグメントは、一つのアドレスから構成されることも可能である。一つの発給命令設定レジスタを複数の異なるセグメントに対応付けることも可能である。セグメントに応じて、命令による指示あるいは割り込み要求による指示を使い分けることも可能である。例えば、第１のセグメントでは命令を使用し、第２のセグメントでは割り込み要求を使用する。
【００５４】
本実施形態においては、非実装空間の全てのアドレスが発給命令設定レジスタと対応付けられているが、非実装空間の一部のアドレスについては対応付けを行わず、非実装空間内から選択された一部のアドレスと発給命令設定レジスタと対応付けることも可能である。例えば、非実装空間を３つのセグメントに分割し、そのうちの２つのセグメントをそれぞれ異なる発給命令設定レジスタと対応付け、一つのセグメントは発給命令設定レジスタと対応付けないことができる。
【００５５】
実施の形態３．
図１０〜１３を参照して、第３の実施形態に係るマイクロコンピュータについて説明する。本形態のマイクロコンピュータは、第２の実施形態に係るマイクロコンピュータ１とは異なる命令発給ユニットを備え、他の構成については同様である。従って、本形態においては、命令発給ユニットの構成について説明し、他の構成についての説明を省略する。本形態の命令発給ユニットは、第２の実施形態と同様に複数の発給命令設定レジスタを備えているが、各発給命令設定レジスタは非実装空間の異なるアドレスにそれぞれ対応する。これによって、暴走先のアドレスに応じて異なる復帰プログラムを設定することが可能となる。
【００５６】
図１０は、本形態のＣＰＵのプログラム空間４０のマッピング及び命令発給ユニットによる暴走検出を説明する図である。本形態の命令発給ユニットは複数の発給命令設定レジスタを備えている。図１０においては、第１の発給命令設定レジスタ６２１と第２の発給命令設定レジスタ６２２の２つの発給命令設定レジスタが例示されている。第１の発給命令設定レジスタ６２１は非実装空間４２の第１のアドレスと対応し、第２の発給命令設定レジスタ６２２は非実装空間４２の第２のアドレスと対応している。
【００５７】
第１及び第２の発給命令設定レジスタ６２１、６２２には、同一もしくは異なる命令を設定することができる。好ましくは、図１０に示すように、アドレスに応じてＣＰＵ１１が異なる復帰アドレスを実行するように、各発給命令設定レジスタ６２１、６２２に命令が設定される。設定する命令は、実施の形態２と同様に、ＪＵＭＰ命令あるいはＴＲＡＰ命令を利用することができる。図１０の例においては、暴走によって第１のアドレスへのアクセスがあった場合には、第１の復帰プログラムにＣＰＵ１１の処理が移され、第２のアドレスへのアクセスがあった場合には、第２の復帰プログラムにＣＰＵ１１の処理が移される。実施の形態２と同様に、命令に代えて、割り込み要求によってＣＰＵ１１に所定プログラムの処理の実行を指示することも可能である。命令発給ユニットは、アドレスに応じて異なる番号の割り込み要求をＣＰＵ１１に行う。
【００５８】
図１１は、本実施形態に係る命令発給ユニット６０の構成の概略を示すブロック図である。命令発給ユニット６０は、アドレス判定部６１、命令発給部６２及び出力制御部１５４を備えている。出力制御部１５４については実施の形態１と同様である。本形態のアドレス判定部６１は、第１及び第２のアドレス設定レジスタ６１１、６１２を備えている。図１２のメモリ・マップに示すように、第１のアドレス設定レジスタ６１１は非実装空間内の第１のアドレス記憶し、第２のアドレス設定レジスタ６１２は非実装空間内の第２のアドレスを記憶している。
【００５９】
命令発給部６２は、第１の発給命令設定レジスタ６２１及び第２の発給命令設定レジスタ６２２を備えている。各発給命令設定レジスタ６２１、６２２に予め設定されている命令は上記に説明した通りであり、第１もしくは第２の復帰プログラムへ処理を移すための、ＪＵＭＰ命令あるいはＴＲＡＰ命令などを記憶している。
【００６０】
図１３を参照して、アドレス判定部６１は、ＣＰＵ１１がアドレス・バスに乗せる命令フェッチ・アドレスをモニタし（Ｓ３１）、命令フェッチ・アドレスが非実装空間４２の予め設定されたアドレスと一致するかを判定する（Ｓ３２）。具体的には、アドレス・バス上の命令フェッチ・アドレスを取得し、各アドレス設定レジスタ６１１、６１２に記憶されているアドレス値と比較する。アドレス判定部６１が、命令フェッチ・アドレスが第１のアドレスと一致すると判定した場合、命令発給部６２は、第１の発給命令設定レジスタ６２１に予め設定されている命令を出力制御部１５４に出力する（Ｓ３３）。出力制御部１５４は、アドレス判定部６１が命令フェッチ・アドレスと第１のアドレスが一致すると判定したことに応答して、命令発給部６２から取得した命令をデータ・バスに出力する。ＣＰＵ１１はデータ・バス上の命令を取得し、それに従って第１の復帰プログラムによる処理を開始する。
【００６１】
アドレス判定部６１が、ＣＰＵ１１からの命令フェッチ・アドレスが第２のアドレスと一致すると判定した場合、命令発給部６２は、第２の発給命令設定レジスタ６２２に予め設定されている命令を出力制御部１５４に出力する（Ｓ３４）。出力制御部１５４は、アドレス判定部６１が命令フェッチ・アドレスと第２のアドレスとが一致すると判定したことに応答して、命令発給部６２から取得した命令をデータ・バスに出力する。ＣＰＵ１１はデータ・バス上の命令を取得し、それに従って第２の復帰プログラムによる処理を開始する。
【００６２】
アドレス判定部５１が、第１及び第２のセグメントアドレスのいずれにも命令フェッチ・アドレス一致しないと判定した場合、出力制御部１５４はデータ・バスにデータを出力せず、他のハードウェアからのデータがデータ・バスに出力される（Ｓ３５）。非実装空間内のアドレスであって、第１及び第２のアドレスと異なるアドレスに暴走よってアクセスした場合、データ・バスにはAND、ORあるいはＮＯＰ命令など、分岐しないでアドレスを順に実効していく非分岐命令が出力される。この非分岐命令は命令発給部もしくはその他の回路構成によってデータ・バス上に出力される。上記のように、本実施形態によれば、非実装空間のアドレスに対応付けられた複数の発給命令設定レジスタを用意することによって、アドレスに応じた指示をＣＰＵ１１に行うことができる。特に、非実装空間のアドレスに応じた異なる復帰処理を選択することが可能となる。
【００６３】
尚、本実施形態は２つのアドレスを示したが、３以上のアドレスを発給命令設定レジスタに対応付けることが可能である。一つの発給命令設定レジスタを複数の異なるアドレスに対応付けることも可能である。アドレスに応じて、命令による指示あるいは割り込み要求による指示を使い分けることも可能である。例えば、第１のアドレスでは命令を使用し、第２のアドレスでは割り込み要求を使用することができる。
【００６４】
その他の実施形態．
図１４及び図１５を参照して、第４の実施形態に係るマイクロコンピュータについて説明する。本形態のマイクロコンピュータは、実施の形態１のマイクロコンピュータ１と異なり、バス構成がそれぞれ独立し、バスがバス制御ユニットによって制御される。また、命令発給ユニットは、バス制御ユニットに内蔵されている。
【００６５】
図１４は、本形態のマイクロコンピュータ７の概略構成を示すブロック図である。マイクロコンピュータ７は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、周辺Ｉ／Ｏ１４の他、バス制御を行うバス制御ユニット７１と、外部バスとのインターフェースを行う外部バスＩ／Ｆ７２とを備えている。命令発給ユニット７３は、バス制御ユニット７１に内蔵されている。ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３及び周辺Ｉ／Ｏ１４の各構成いついては、上に説明された他の実施形態と同様の構成を採用することができるので説明を省略する。
【００６６】
ＣＰＵ１１及びＲＯＭ１２は、フェッチ・バス７４１に接続され、ＲＡＭ１３はＲＡＭバスに接続されている。また、周辺Ｉ／Ｏ１４はシステム・バス７４２に接続されている。外部Ｉ／Ｆはシステム・バス７４２及び外部バス７４３に接続されている。バス制御ユニット７１は全ての内部バスに接続されており、つまり、フェッチ・バス７４１、ＲＡＭバス７４２及びシステム・バス７４３に接続されている。
【００６７】
図１５は命令発給ユニット７３の概略構成を示すブロック図である。命令発給ユニット７３は、アドレス判定部７３１、命令発給部７３２及び出力制御部７３４を備えている。アドレス判定部７３１、命令発給部７３２の各構成については、上記他の実施形態と同様の構成を採用することができるので詳細な説明を省略する。
【００６８】
出力制御部７３４は、フェッチ・バスのアドレス・バス７４５上のアドレスについてのアドレス判定部７３１の判定結果に基づいて、フェッチ・バスのデータ・バス７４４への出力を制御する。出力制御部７３４は、命令発給部７３２及びバス選択部７５に接続されている。バス選択部７５は、フェッチ・バスのアドレス・バス７４５のアドレスに応じて、データ・バス７４４へ接続する内部バスをＲＡＭバス７４２及びシステム・バス７４３から選択する。
【００６９】
出力制御部７３４はセレクタを備え、アドレス判定部７３１の判定結果に応じて、命令発給部７３２からの出力もしくはバス選択部７５（内部バス）からの出力を選択的にフェッチ・バス７４１に出力する。命令発給部７３２が動作するアドレスの場合は、出力制御部７３４は命令発給部７３２からの出力を選択し、フェッチ・バスのデータ・バス７４４に出力する。それ以外のアドレスの場合、出力制御部７３４はバス選択部７５からの出力を選択し、ＲＡＭバス７４２もしくはシステム・バス７４３とフェッチ・バスのデータ・バス７４４との中継を行う。
【図面の簡単な説明】
【００７０】
【図１】第１の実施形態に係るマイクロコンピュータのハードウェア構成の概略を模式的に示すブロック図。
【図２】第１の実施形態に係るＣＰＵのプログラム空間のマッピング及び命令発給ユニットによる暴走検出を説明する図。
【図３】第１の実施形態に係る命令発給ユニットの概略構成を示すブロック図。
【図４】第１の実施形態に係るプログラム空間のマッピングを示す図。
【図５】第１の実施形態に係る暴走検出処理のフローチャート。
【図６】第２の実施形態に係るＣＰＵのプログラム空間のマッピング及び命令発給ユニットによる暴走検出を説明する図。
【図７】第２の実施形態に係る命令発給ユニットの概略構成を示すブロック図。
【図８】第２の実施形態に係るプログラム空間のマッピングを示す図。
【図９】第２の実施形態に係る暴走検出処理のフローチャート。
【図１０】第３の実施形態に係るＣＰＵのプログラム空間のマッピング及び命令発給ユニットによる暴走検出を説明する図。
【図１１】第３の実施形態に係る命令発給ユニットの概略構成を示すブロック図。
【図１２】第３の実施形態に係るプログラム空間のマッピングを示す図。
【図１３】第３の実施形態に係る暴走検出処理のフローチャート。
【図１４】その他の実施形態に係るマイクロコンピュータの概略構成を示すブロック図。
【図１５】その他の実施形態に係る命令発給ユニットの概略構成を示すブロック図。
【符号の説明】
【００７１】
１  マイクロコンピュータ、２  外部メモリ、３  外部バス、
７  マイクロコンピュータ、１４  周辺Ｉ／Ｏ回路、１５  命令発給ユニット、
１５  命令発給部、４０  プログラム空間、４１  実装空間、４２  非実装空間、
５０  命令発給ユニット、５１  アドレス判定部、５２  命令発給部、
６０  命令発給ユニット、６１  アドレス判定部、６２  命令発給部、
７１  バス制御ユニット、７３  命令発給ユニット、７５  バス選択部、
１１１  レジスタ・セット、１１２  制御部、１１３  演算処理部、
１１４  バス・インターフェース、１５１  発給命令設定レジスタ、
１５２  アドレス判定部、１５３  命令発給部、１５４  出力制御部、
１５５  開始アドレス設定レジスタ、１５６  終了アドレス設定レジスタ、
４１１  周辺Ｉ／Ｏ空間、４１２  ＲＡＭ空間、４１３  ＲＯＭ空間、
４２１  第１のセグメント、４２２  第２のセグメント、
５１１  第１のアドレス設定レジスタ、５１２  第２のアドレス設定レジスタ、
５１３  第３のアドレス設定レジスタ、５２１  第１の発給命令設定レジスタ、
５２２  第２の発給命令設定レジスタ、６１１  アドレス設定レジスタ、
６１１  各アドレス設定レジスタ、６１２  アドレス設定レジスタ、
６２１  第１の発給命令設定レジスタ、６２２  第２の発給命令設定レジスタ、
７３１  アドレス判定部、７３２  命令発給部、７３４  出力制御部、
７４１  フェッチ・バス、７４２  システム・バス、７４２  ＲＡＭバス、
７４３  システム・バス、７４３  外部バス、７４４  データ・バス、
７４５  アドレス・バス
【図１】
2006079230.tif 000003
【図２】
2006079230.tif 000004
【図３】
2006079230.tif 000005
【図４】
2006079230.tif 000006
【図５】
2006079230.tif 000007
【図６】
2006079230.tif 000008
【図７】
2006079230.tif 000009
【図８】
2006079230.tif 000010
【図９】
2006079230.tif 000011
【図１０】
2006079230.tif 000012
【図１１】
2006079230.tif 000013
【図１２】
2006079230.tif 000014
【図１３】
2006079230.tif 000015
【図１４】
2006079230.tif 000016
【図１５】
2006079230.tif 000017