(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵへの割り込みの要求を示す割り込み信号に応答して出力される前記割り込みを受け付けたことを示す割り込み開始信号に基づいてカウント値をインクリメントし、前記割り込みに対応する処理が終了したことを示す割り込み終了信号に基づいて前記カウント値をデクリメントする割り込みカウンタと、
前記カウント値を所定の値と比較して異常を検出するカウンタ異常値検出回路と、
前記割り込み信号に応答してセットされ、割り込み要求があることを示すフラグレジスタと、
前記フラグレジスタのうちのセットされているフラグレジスタの数によって示される割り込み保留数を検出する保留数検出回路と、
前記割り込み保留数を所定の数と比較して異常を検出する保留数異常検出回路と
を具備する
情報処理装置。
【請求項２】
前記割り込みの多重受け付け数の上限を示す割り込み受付上限数を保持する受付数レジスタをさらに具備し、
前記カウンタ異常値検出回路は、前記カウンタ値が前記受付数レジスタに保持される前記受付上限数以上の値を示すか、もしくは、前記カウンタ値がアンダーフローを示すときに、カウンタ異常検出信号を出力する
請求項１に記載の情報処理装置。
【請求項３】
前記ＣＰＵは、前記受付数レジスタに前記割り込み受付上限数を格納する
請求項１に記載の情報処理装置。
【請求項４】
前記割り込み保留数の上限を示す保留上限数を保持する保留数レジスタをさらに具備し、
前記保留数異常検出回路は、前記割り込み保留数が前記保留上限数以上の値を示すとき、保留数異常検出信号を出力する
請求項１に記載の情報処理装置。
【請求項５】
前記フラグレジスタは、前記割り込み開始信号に応答してリセットされる
請求項１に記載の情報処理装置。
【請求項６】
ＣＰＵと、
前記ＣＰＵへの割り込みの要求を示す割り込み信号に応答して出力される前記割り込みを受け付けたことを示す割り込み開始信号に基づいてカウント値をインクリメントし、前記割り込みに対応する処理が終了したことを示す割り込み終了信号に基づいて前記カウント値をデクリメントする割り込みカウンタと、
前記カウント値を所定の値と比較して異常を検出するカウンタ異常値検出回路と、
前記ＣＰＵが動作しているときに生成されるタイミング制御信号を監視し、前記ＣＰＵが停止しているときに前記タイミング制御信号が生成されたことを検出して暴走検出信号を出力するタイミング制御信号監視回路と
を具備する
情報処理装置。
【請求項７】
前記タイミング制御信号監視回路は、前記割り込みカウンタのカウント値が零を示すとき、前記ＣＰＵが停止しているとして前記タイミング制御信号が生成されたことを検出すると暴走検出信号を出力する
請求項６に記載の情報処理装置。
【請求項８】
前記タイミング制御信号は、前記ＣＰＵ内のレジスタを動作させるときに出力される信号を示す
請求項６に記載の情報処理装置。
【請求項９】
請求項１に記載の情報処理装置を搭載する半導体集積回路装置。
【請求項１０】
ＣＰＵの動作異常を検出する異常検出方法であって、
前記ＣＰＵへの割り込みの要求を示す割り込み信号に応答して出力される前記割り込みを受け付けたことを示す割り込み開始信号に基づいてカウント値をインクリメントするステップと、
前記割り込みに対応する処理が終了したことを示す割り込み終了信号に基づいて前記カウント値をデクリメントするステップと、
前記カウント値を所定の値と比較してカウンタ値の異常を検出するステップと、
割り込み要求があることを示すフラグレジスタを前記割り込み信号に応答してセットするステップと、
前記フラグレジスタのうちのセットされているフラグレジスタの数によって示される割り込み保留数を検出するステップと、
前記割り込み保留数を所定の数と比較して保留数の異常を検出するステップと
を具備する
異常検出方法。
【請求項１１】
前記カウンタ値の異常を検出するステップは、
前記割り込みの多重受け付け数の上限を示す割り込み受付上限数を保持するステップと、
前記カウンタ値が前記受付上限数以上の値を示すか、もしくは、前記カウンタ値がアンダーフローを示すときに、カウンタ異常検出と判定するステップと
を備える
請求項１０に記載の異常検出方法。
【請求項１２】
前記保留数の異常を検出するステップは、
保留数レジスタに前記割り込み保留数の上限を示す保留上限数を保持するステップと、
前記割り込み保留数が前記保留上限数以上の値を示すとき、保留数異常と判定するステップと
を備える
請求項１０に記載の異常検出方法。
【請求項１３】
前記ＣＰＵが動作しているときに生成されるタイミング制御信号を監視するステップと、
前記ＣＰＵが停止しているときに前記タイミング制御信号が生成されると暴走を検出するステップと
をさらに具備する
請求項１０に記載の異常検出方法。
【請求項１４】
前記暴走を検出するステップは、
前記割り込みカウンタのカウント値が零を示すか否かを判定するステップと、
前記割り込みカウンタのカウント値が零を示すとき、前記ＣＰＵが停止しているとしてＣＰＵ暴走を検出するステップと
を備える
請求項１３に記載の異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、半導体集積回路装置に関し、特に情報処理装置、半導体集積回路の動作異常を検出する異常検出方法に関する。
【背景技術】
【０００２】
近年、世界的な環境問題に対する意識の高まりに伴い、消費電力や待機電力への規制が求められるようになってきた。また、家庭向けの防災・セキュリティ機器や携帯機器など、身の周りの電子機器はますます拡大している。このような電子機器において、電池の長寿命化や小型化といった点での開発競争が激しくなっており、システムレベルでの省エネが重要な課題となってきている。
【０００３】
システムの待機状態を制御するマイクロコントローラや、電池駆動の小型システム向けのマイクロコントローラにおいて、低消費電力の観点から一部の周辺機能のみが動作する待機モードと、周辺機能とＣＰＵの双方が動作する通常動作モードを交互に繰り返す間欠動作が考えられる。外部装置やセンサから出力される信号の定期的な取り込みを目的とする応用では、通常動作モードをイベントドリブンで起動させることにより消費電力を下げることが一般的に行われる。
【０００４】
一方、半導体集積回路のデジタル回路において、フリップフロップに入力されるクロック信号の代わりに、フリップフロップ前後の回路のハンドシェーク信号をクロック入力として用いることにより、クロック同期動作による消費電流を削減する非同期設計技術がある。イベントドリブンで動作させるマイクロコントローラにおいても消費電力を削減するためにクロックを使用しない非同期設計技術を使うことが考えられる。
【０００５】
一般的なマイクロコントローラにおいて、ＣＰＵ動作の異常検出は、ウォッチドッグタイマと言われるタイマカウンタを用いる方法で行われることが多い。ウォッチドッグタイマによる方法は、カウンタはクロックをカウントし、一定時間毎にＣＰＵが命令によってカウンタがオーバーフローしないようにクリアする。ＣＰＵが正常に動作していれば、カウンタがオーバーフローすることは無い。オーバーフローが検出されると、ＣＰＵの暴走などによる異常が起きたと判定される。すなわち、ウォッチドッグタイマによる異常検出方法は、異常検出にクロックを必要とするため、非同期化することはできない。よって、非同期回路でも実現できる異常検出回路の実現が期待される。
【０００６】
また、ＣＰＵが非同期設計技術により実現された場合、例えば、待機状態で電源ノイズなどにより、意図せずに動作のトリガとなる信号にノイズが乗ると、ハンドシェーク回路が誤動作してプログラムカウンタや各種フラグレジスタの値が誤った値に更新されてしまう可能性がある。このような可能性は、同期方式のＣＰＵにおけるクロック停止時の誤動作よりも高いと考えられ、より安全なシステムを実現するための対策が望まれる。
【０００７】
特開２０００−２０３５２号公報には、マイクロコントローラが割り込み処理を行う際に使用されるスタックポインタを監視することによって異常検出する技術が記載されている。スタックポインタは、戻り先のアドレス情報等を格納するスタックの格納先アドレスを指定する。そのスタックにデータが過剰に退避された場合や、スタックからデータが過剰に復帰された場合に、異常として検出される。
【０００８】
このような技術は、非同期設計技術が適用されたイベントドリブンで動作するマイクロコントローラの異常検出回路として適用可能である。しかし、スタックポインタに影響しないＣＰＵ暴走による異常や、マイクロコントローラがデッドロック状態に陥ってしまう異常は検出不可能である。すなわち、スタックポインタを操作しないプログラムルーチンで無限ループに陥った場合や、デッドロック状態でＣＰＵが動作しない場合では、スタック退避、復帰が行われない。したがって、スタックオーバーフローやスタックアンダーフローが起きず、異常を検出できない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０００−２０３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、ＣＰＵの異常動作を検出することができる情報処理装置、半導体集積回路装置、異常検出方法を提供する。
【課題を解決するための手段】
【００１１】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明の観点では、半導体集積回路装置は、ＣＰＵ（１００）と、割り込みカウンタ（４１０）と、カウンタ異常値検出回路（４３０）とを具備する。割り込みカウンタ（４１０）は、ＣＰＵ（１００）への割り込みの要求を示す割り込み信号（ＩＮＴ）に応答して出力される割り込みを受け付けたことを示す割り込み開始信号（ＩＲＳ）に基づいてカウント値をインクリメントし、割り込みに対応する処理が終了したことを示す割り込み終了信号（ＩＲＥ）に基づいてカウント値をデクリメントする。カウンタ異常値検出回路（４３０）は、カウント値（ＩＲＣ）を所定の値と比較して異常を検出する。
【００１３】
本発明の他の観点では、異常検出方法は、ＣＰＵの動作異常を検出する異常検出方法であり、ＣＰＵ（１００）への割り込みの要求を示す割り込み信号（ＩＮＴ）に応答して出力される割り込みを受け付けたことを示す割り込み開始信号（ＩＲＳ）に基づいてカウント値をインクリメントするステップと、割り込みに対応する処理が終了したことを示す割り込み終了信号（ＩＲＥ）に基づいてカウント値をデクリメントするステップと、カウント値（ＩＲＣ）を所定の値と比較してカウンタ値の異常を検出するステップとを具備する。
【発明の効果】
【００１４】
本発明によれば、ＣＰＵがスタックを操作しないような異常状態をも検出することができる情報処理装置、半導体集積回路装置、異常検出方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施の形態に係る情報処理装置の構成を示す図である。
【図２】第１の実施の形態に係る情報処理装置の動作を説明するタイミングチャートである。
【図３】第１の実施の形態に係る情報処理装置の他の動作を説明するタイミングチャートである。
【図４】第１の実施の形態に係る情報処理装置の他の動作を説明するタイミングチャートである。
【図５】本発明の第２の実施の形態に係る情報処理装置の構成を示す図である。
【図６】第２の実施の形態に係る情報処理装置の動作を説明するタイミングチャートである。
【発明を実施するための形態】
【００１６】
図面を参照して本発明を実施のするための形態を説明する。
【００１７】
図１は、第１の実施の形態に係る情報処理装置の構成を示す図である。情報処理装置は、ＣＰＵ１００、割り込みコントローラ２００、異常検出回路３００、４００、論理和回路３６０、周辺回路２５１、２５２を具備する半導体集積回路装置である。割り込みコントローラ２００は、周辺回路２５１が出力する内部割り込み信号ＩＮＴ１、周辺回路２５２が出力する内部割り込み信号ＩＮＴ２、情報処理装置の外部から入力される外部割り込み信号ＩＮＴ０を入力とする。割り込みコントローラ２００は、割り込みフラグレジスタ２１０、２２０、２３０を備える。割り込みフラグレジスタ２１０、２２０、２３０は、外部割り込み信号ＩＮＴ０、内部割り込み信号ＩＮＴ１、内部割り込み信号ＩＮＴ２をそれぞれ入力する。割り込みコントローラ２００は、割り込みフラグレジスタ２１０、２２０、２３０がセットされると、割り込みフラグレジスタ２１０、２２０、２３０に対応するベクタアドレスＶＡをセットして割り込み開始信号ＩＲＳをＣＰＵ１００に出力し、割り込みの発生を通知する。また、割り込みフラグレジスタ２１０、２２０、２３０の出力を示す信号ＩＦ０、ＩＦ１、ＩＦ２は、異常検出回路３００に出力される。
【００１８】
ＣＰＵ１００は、割り込みコントローラ２００の出力である割り込み開始信号ＩＲＳとベクタアドレスＶＡとを入力として割り込み処理を行い、割り込み処理が終わると割り込み終了信号ＩＲＥを割り込みコントローラ２００、異常検出回路４００に出力する。
【００１９】
異常検出回路４００は、割り込みカウンタ４１０、割り込み受付数上限設定レジスタ４２０、およびカウンタ異常値検出回路４３０を備える。割り込みカウンタ４１０は、割り込み開始信号ＩＲＳを入力として割り込みカウント値ＩＲＣをインクリメントし、割り込み終了信号ＩＲＥを入力として割り込みカウント値ＩＲＣをデクリメントする。割り込みカウンタ４１０は、割り込みカウンタ値ＩＲＣをカウンタ異常値検出回路４３０に出力する。割り込み受付上限設定レジスタ４２０は、受け付け可能な割り込み数を保持し、カウンタ異常値検出回路４３０に出力する。受け付け可能な割り込み数は、ＣＰＵ１００によって設定できることが好ましい。カウンタ異常値検出回路４３０は、割り込みカウンタ値ＩＲＣと、割り込み受付数上限設定レジスタ４２０の出力ＩＲＭとを入力とし、割り込みカウント値が受け付け可能な割り込み数以上になるとカウンタ異常値検出信号ＥＣを出力する。
【００２０】
異常検出回路３００は、割り込みフラグ保留数検出回路３１０、保留数上限設定レジスタ３２０、および保留数異常検出回路３３０を備える。割り込みフラグ保留数検出回路３１０は、割り込みフラグレジスタ２１０、２２０、２３０の出力ＩＦ０、ＩＦ１、ＩＦ２を入力とし、割り込みフラグ保留数ＩＦＣを出力する。保留数上限設定レジスタ３２０は、保留可能な割り込み数を保持し、保留数異常検出回路３３０に出力する。保留可能な割り込み数は、ＣＰＵによって設定できることが好ましい。保留数異常検出回路３３０は、割り込みフラグ保留数ＩＦＣと保留数上限設定レジスタ３２０の出力ＩＦＭとを入力とし、割り込み保留数が保留可能な割り込み数異常になると保留数異常検出信号ＥＦを出力する。
【００２１】
論理和回路３６０は、カウンタ異常値検出信号ＥＣと保留数異常検出信号ＥＦとを入力とし、異常検出信号ＥＲを出力する。
【００２２】
割り込みコントローラ２００の割り込みフラグレジスタ２１０、２２０、２３０は、それぞれ外部割り込み信号ＩＮＴ０、内部割り込み信号ＩＮＴ１、内部割り込み信号ＩＮＴ２の立ち上がりによってセットされ、割り込み開始信号ＩＲＳの立ち上がりによりクリアされる。割り込みコントローラ２００は、割り込みフラグレジスタ２１０、２２０、２３０がセットされると、ＣＰＵ１００に対して割り込み開始信号ＩＲＳとベクタアドレスＶＡとを出力する。例えば、割り込みフラグレジスタ２１０、２２０、２３０が全てクリアされている状態から割り込みフラグレジスタ２２０がセットされると、割り込み開始信号ＩＲＳがアクティブになり、ベクタアドレスＶＡには、割り込みフラグレジスタ２２０に対応する割り込み処理アドレスがセットされる。また、割り込みコントローラ２００は、割り込み優先度の管理を行っている。したがって、割り込み優先度に応じて、割り込み開始信号ＩＲＳおよびベクタアドレスＶＡの出力タイミングが変化する。優先度は、高い順に割り込みフラグレジスタ２１０、２２０、２３０とすると、割り込みフラグレジスタ２２０がセット状態の時に、割り込みフラグレジスタ２３０がセットされても割り込み開始信号ＩＲＳおよびベクタアドレスが変化することはないが、割り込みフラグレジスタ２１０がセットされると、割り込み開始信号ＩＲＳが発生し、ベクタアドレスＶＡに割り込みフラグレジスタ２１０に対応する割り込み処理アドレスがセットされる。
【００２３】
ＣＰＵ１００は、割り込み開始信号ＩＲＳがアクティブになると、ベクタアドレスＶＡによって示される割り込み処理を開始する。ＣＰＵ１００は、その割り込み処理が終了すると、割り込み処理終了信号ＩＲＥをアクティブにする。
【００２４】
割り込みコントローラ２００は、割り込み終了信号ＩＲＥがアクティブになると、ＣＰＵ１００が実行していた割り込み処理が終了したことを検知する。保留中の割り込みがあれば、割り込みコントローラ２００は、優先度に応じて割り込み開始信号ＩＲＳ、ベクタアドレスＶＡの出力制御を行う。
【００２５】
異常検出回路４００の割り込みカウンタ４１０は、割り込み開始信号ＩＲＳによってカウント値をインクリメントし、割り込み終了信号ＩＲＥによってデクリメントする。したがって、割り込みカウンタ４１０のカウント値は、正常動作時には多重割り込みの数を表す。その値は、割り込みカウンタ値ＩＲＣとして出力される。割り込み受付数上限設定レジスタ４２０は、ＣＰＵ１００がプログラムを実行することによって設定されるレジスタで、設定値は多重割り込みの上限数を示す。ここでは、割り込み受付数上限設定レジスタ４２０には“３”が設定されているとする。カウンタ異常値検出回路４３０は、割り込みカウンタ値ＩＲＣに異常がないかを検出する。具体的には、割り込みカウンタ値ＩＲＣがアンダーフローした場合と、割り込み受付数上限設定レジスタ４２０に設定された値ＩＲＭに達した場合にカウンタ異常値検出信号ＥＣを出力する。
【００２６】
異常検出回路３００の割り込みフラグ保留数検出回路３１０は、セットされている割り込みフラグレジスタ２１０、２２０、２３０の数を割り込みフラグ保留数ＩＦＣとして出力する。これは、ＣＰＵ１００で処理が開始されていない割り込みの保留数を示す。保留数上限設定レジスタ３２０は、ＣＰＵ１００がプログラムを実行することによって設定されるレジスタで、設定値は処理開始されていない割り込みの保留数の上限を示す。ここでは、保留数上限設定レジスタ３２０には“３”が設定されているとする。保留数異常検出回路３３０は、割り込みフラグ保留数ＩＦＣを保留数上限設定レジスタ３２０の出力ＩＦＭと比較して、一致あるいは割り込みフラグ保留数ＩＦＣが超えた場合に保留数異常検出信号ＥＦを出力する。
【００２７】
カウンタ異常値検出信号ＥＣと保留数異常検出信号ＥＦとは、論理和回路３６０に接続されており、カウンタ異常値検出信号ＥＣと保留数異常検出信号ＥＦの少なくとも一方がアクティブの場合に異常が発生したとして、異常検出信号ＥＲをアクティブにする。
【００２８】
次に、異常検出までの動作を説明する。
【００２９】
図２は、割り込みカウンタ４１０がアンダーフローを起こした例を示すタイミングチャートである。異常検出回路４００で多重割り込みの開始数と終了数がカウントされ、そのカウント数がアンダーフローした場合に異常検出信号ＥＲを出力する例である。これは、ＣＰＵ１００の異常により、意図せず割り込み処理が行われた場合などの異常を検出する動作である。
【００３０】
時刻Ｔ１では、内部割り込み信号ＩＮＴ１がアクティブになり（図２（ｃ））、割り込みフラグレジスタ２２０がセットされる（図２（ｄ））。割り込みフラグレジスタ２２０がセットされると、割り込み開始信号ＩＲＳと割り込みフラグレジスタ２２０に対応する割り込み処理を示すベクタアドレスＶＡとがアクティブになる（図２（ｇ）（ｈ））。また、割り込みカウンタ４１０がインクリメントされ、出力ＩＲＣは“１”を示す（図２（ｊ））。また、割り込み開始信号ＩＲＳがアクティブになると同時に、割り込みフラグレジスタ２２０がクリアされる（図２（ｄ））。
【００３１】
時刻Ｔ２では、内部割り込み信号ＩＮＴ２がアクティブになり（図２（ｅ））、割り込みフラグレジスタ２３０がセットされる（図２（ｆ））。しかし、時刻Ｔ１以降に割り込み終了信号ＩＲＥはアクティブになっていない（図２（ｉ））。つまり、割り込みフラグレジスタ２２０による割り込み処理中であることから、割り込みフラグレジスタ２２０よりも優先度の低い割り込みフラグレジスタ２３０がセットされても割り込み開始信号ＩＲＳはアクティブにならず（図２（ｇ））、ベクタアドレスＶＡは変化しない（図２（ｈ））。
【００３２】
時刻Ｔ３では、ＣＰＵ１００は、内部割り込み信号ＩＮＴ１に対する割り込み処理が終了したことを割り込み終了信号ＩＲＥによって割り込みコントローラ２００、異常検出回路４００に通知する（図２（ｉ））。これによって、割り込みカウンタ４１０はデクリメントされ、出力ＩＲＣは“０”になる（図２（ｊ））。また、内部割り込み信号ＩＮＴ１に対する割り込み処理が終了したため、割り込みコントローラ２００は、時刻Ｔ４において、割り込み開始信号ＩＲＳをアクティブにし（図２（ｇ））、割り込みフラグレジスタ２３０に対応する割り込み処理を示すベクタアドレスＶＡがセットされる（図２（ｈ））。さらに、割り込みカウンタ４１０がインクリメントされ（図２（ｊ））、割り込みフラグレジスタ２３０がクリアされて出力ＩＦ２はインアクティブになる（図２（ｆ））。
【００３３】
時刻Ｔ５では、ＣＰＵ１００は割り込み終了信号ＩＲＥをアクティブにして割り込み信号ＩＮＴ２に対する割り込み処理が終了したことを通知する（図２（ｉ））。割り込みカウンタ４１０は、カウント値をデクリメントし、出力ＩＲＣは“０”を示す（図２（ｊ））。割り込みが全て終了した状態になる。
【００３４】
ここで、時刻Ｔ５以降にＣＰＵ１００で意図しない割り込み処理が発生したとする。時刻Ｔ６で、割り込み開始信号ＩＲＳが入力されていないにも関わらず、割り込み終了信号ＩＲＥがアクティブになると（図２（ｉ））、割り込みカウンタ４１０は、デクリメントされ、アンダーフローとなる（図２（ｊ））。カウンタ異常値検出回路４３０は、異常を検出してカウンタ異常値検出信号ＥＣを出力し、異常検出信号ＥＲがアクティブになる（図２（ｋ））。
【００３５】
図３は、割り込みカウンタ４１０が所定の数を超える異常を検出する例を示すタイミングチャートである。異常検出回路４００において多重割り込みの開始数と終了数がカウントされ、そのカウント数が一定値を超えた場合に異常検出信号ＥＲが出力される。これは、割り込みコントローラ２００やＣＰＵ１００の異常により、意図しない割り込み開始信号ＩＲＳの発生や、多重割り込みを処理しきれず一定数を超えた場合に異常を検出する動作である。図３は、図２と比べて時刻Ｔ５までは同じ動作を示すため、時刻Ｔ５までの説明を省略する。
【００３６】
時刻Ｔ７では、内部割り込み信号ＩＮＴ２がアクティブになり（図３（ｅ））、割り込みフラグレジスタ２３０がセットされる（図３（ｆ））。それにより割り込み開始信号ＩＲＳがアクティブになり（図３（ｇ））、割り込みフラグレジスタ２３０に対応する割り込み処理を示すベクタアドレスＶＡがセットされる（図３（ｈ）：ここでは同じアドレスを示すため値の変化は無い）。また、割り込み開始信号ＩＲＳにより、割り込みカウンタ４１０がインクリメントされ、“１”に変化する（図３（ｊ））。その後、ＣＰＵの異常で割り込み処理が終了しない状態に陥ったとする。
【００３７】
時刻Ｔ８では、内部割り込み信号ＩＮＴ１がアクティブになり（図３（ｃ））、割り込みフラグレジスタ２２０がセットされる（図３（ｄ））。割り込みフラグレジスタ２２０は、割り込みフラグレジスタ２３０より優先度が高い。そのため、割り込み開始信号ＩＲＳがアクティブになり（図３（ｇ））、割り込みフラグレジスタ２３０に対応する割り込み処理を示すベクタアドレスＶＡが設定される（図３（ｈ））。さらに、割り込みカウンタ４１０がインクリメントされ、出力ＩＲＣは“２”に変化する（図３（ｊ））。
【００３８】
時刻Ｔ９では、外部割り込み信号ＩＮＴ０がアクティブになり、割り込みフラグレジスタ２１０がセットされる（図３（ａ））。割り込みフラグレジスタ２１０は、割り込みフラグレジスタ２２０より優先度が高いため、割り込み開始信号ＩＲＳがアクティブになり（図３（ｇ））、割り込みフラグレジスタ２１０に対応する割り込み処理を示すベクタアドレスＶＡがセットされる（図３（ｈ））。さらに、割り込みカウンタ４１０は、“３”にインクリメントされる（図３（ｊ））。この結果、割り込み受付数上限設定レジスタ４２０に設定されている値“３”と一致し、カウンタ異常値検出回路４３０は、異常を検出してカウンタ異常値検出信号ＥＣを出力し、異常検出信号ＥＲがアクティブになる（図３（ｋ））。
【００３９】
図４は、割り込みフラグ保留数が所定の値を超える異常を検出する例を示すタイミングチャートである。異常検出回路３００において処理が開始されていない割り込みの保留数が算出され、保留数が一定値を超えた場合に異常検出信号ＥＲが出力される。これは、割り込みコントローラ２００やＣＰＵ１００の異常により、割り込みを処理しきれなくなった場合などに異常を検出する動作である。
【００４０】
図４には、図２と比べ、割り込みカウンタ４１０の値ＩＲＣの替わりに割り込みフラグ保留数ＩＦＣが示されている。割り込みフラグ保留数ＩＦＣは、割り込みフラグレジスタ２１０、２２０、２３０の中でセットされているレジスタの数を表している。また、保留数上限設定レジスタ３２０の値は“３”固定とする。時刻Ｔ５までの動作は図２及び図３と同じであるため、その説明を省略する。
【００４１】
時刻Ｔ１０では、外部割り込み信号ＩＮＴ０がアクティブになり（図４（ａ））、割り込みフラグレジスタ２１０がセットされる（図４（ｂ））。割り込みフラグ保留数検出回路３１０は、保留数を“１”として出力ＩＦＣにセットする（図４（ｊ））。それにより割り込み開始信号ＩＲＳがアクティブになり（図４（ｇ））、割り込みフラグレジスタ２１０に対応する割り込み処理を示すベクタアドレスＶＡがセットされる（図４（ｈ））。割り込み開始信号ＩＲＳがアクティブになると、割り込みフラグレジスタ２１０はクリアされ（図４（ｂ））、割り込みフラグ保留数検出回路３１０は、保留数を“０”として出力ＩＦＣにセットする（図４（ｊ））。その後、ＣＰＵ１００の異常で割り込み処理が終了しない状態に陥ったとする。
【００４２】
時刻Ｔ１１では、内部割り込み信号ＩＮＴ１がアクティブになり（図４（ｃ））、割り込みフラグレジスタ２２０がセットされる（図４（ｄ））。しかし、優先度の最も高い割り込みフラグレジスタ２１０に対応する割り込み処理が実行中であるため、割り込み開始信号ＩＲＳはアクティブにならない（図４（ｇ））。したがって、割り込みフラグレジスタ２２０はクリアされず（図４（ｄ））、割り込みフラグ保留数検出回路３１０は、保留数を“１”として出力ＩＦＣにセットしたままになる（図４（ｊ））。
【００４３】
時刻Ｔ１２において、外部割り込み信号ＩＮＴ０がアクティブになり（図４（ａ））、割り込みフラグ保留数検出回路３１０は、保留数を“２”として出力ＩＦＣにセットする（図４（ｊ））。時刻Ｔ１３において、内部割り込み信号ＩＮＴ２がアクティブになる（図４（ｅ））。同様の理由から割り込みフラグレジスタ２１０、２３０は、セット後にクリアされず（図４（ｂ）（ｆ））、時刻Ｔ１３では、割り込みフラグ保留数検出回路３１０は、保留数を“３”として出力ＩＦＣにセットする（図４（ｊ））。保留数異常検出回路３３０は、保留数上限設定レジスタ３２０の設定値“３”と一致するため、保留数異常検出信号ＥＦをアクティブにし、異常検出信号ＥＲがアクティブになる（図４（ｋ））。
【００４４】
通常、多重割り込みを許可するマイクロコントローラでは、割り込みを受け付けると、割り込み処理を開始する前に、その時点のプログラムカウンタ値はスタックに退避される。割り込み処理から復帰する際に、スタックに格納されたプログラムカウンタ値はプログラムカウンタに回復される。スタックポインタの退避・回復に関係しないルーチンにおいて、ＣＰＵの暴走により無限ループに陥った場合、スタックポインタの値は変化しないため、スタックポインタを監視しても暴走を検出できない。本実施の形態に示されるように、異常検出回路４００は、割り込みカウンタ４１０と割り込み受付数上限設定レジスタ４２０と割り込みカウンタ４１０とを備える。後続の割り込み要求により割り込みカウンタ４１０がインクリメントされ、受付数上限設定レジスタ４２０に設定された上限値の設定値を超えるため、スタックポインタの退避・復帰に関係しないルーチンで無限ループに陥ったとしても、ＣＰＵ暴走を検出することができる。また、割り込み要求が発生していないのに何らかのルーチンが実行されるＣＰＵ暴走において、スタック復帰を伴わない割り込み終了信号が発生した場合も割り込みカウンタ４１０がアンダーフローしてＣＰＵの暴走を検出することができる。
【００４５】
また、マイクロコントローラを用いた組み込みシステムでは、周辺回路は、継続的に割り込みを要求することが通常である。上述の異常検出回路３００は、割り込みフラグレジスタ２１０、２２０、２３０の保留総数を検出する割り込みフラグ保留数検出回路３１０を備える。そのため、保留されている割り込みの数が基準値以上であった場合に、ＣＰＵ１００の動作が停止したと判断することができる。
【００４６】
また、無限ループによるＣＰＵ暴走で、割り込み終了信号が出ない場合、多重割り込みを許可しないマイクロコントローラ、もしくは最も優先度の高い割り込み処理中の異常は、割り込みカウンタ４１０がインクリメントされないため、異常検出回路３００によって検出可能である。
【００４７】
図５は、本発明の第２の実施の形態に係る情報処理装置の構成を示す図である。第２の実施の形態に係る情報処理装置のＣＰＵ１００は、非同期設計されたＣＰＵであり、内部にタイミング制御回路１４０、タイミング制御回路１４０により制御されるプログラムカウンタ１１０とスタックポインタ１２０とフラグレジスタ１３０とを備える。また、第２の実施の形態に係る情報処理装置は、第１の実施の形態に係る情報処理装置に比べて異常検出回路５００を更に具備する。
【００４８】
タイミング制御回路１４０は、制御パルスを生成して各レジスタを動作させる回路である。非同期式ＣＰＵは、同期式ＣＰＵのようにすべてのレジスタに同時にクロック信号等のパルスを送るわけではなく、必要なレジスタにだけパルスを送るように設計される。タイミング制御回路１４０は、そのようなパルスを生成する非同期方式のハンドシェーク制御回路である。タイミング制御回路１４０は、タイミング制御信号ＴＣ１、ＴＣ２、ＴＣ３を、それぞれプログラムカウンタ１１０、スタックポインタ１２０、フラグレジスタ１３０に出力する。
【００４９】
異常検出回路５００は、論理和回路５１０、ゼロ検出回路５２０、論理積回路５３０を備える。論理和回路５１０は、タイミング制御信号ＴＣ１、ＴＣ２、ＴＣ３の論理和を生成し、出力信号ＴＯＲを出力する。ゼロ検出回路５２０は、異常検出回路４００から割り込みカウンタ値ＩＲＣを入力し、割り込みカウンタ値ＩＲＣが“０”であることを示す信号ＺＲを出力する。論理積回路５３０は、論理和回路５１０の出力信号ＴＯＲとゼロ検出回路５２０の出力信号ＺＲとを入力し、その論理積を出力信号ＥＺとして出力する。したがって、論理積回路５３０の出力信号ＥＺがアクティブであることは、割り込みを受け付けていない状態で、ＣＰＵ１００が動作していることを示す。異常検出回路５００の出力信号ＥＺ、異常検出回路４００の出力信号ＥＣ、異常検出回路３００の出力信号ＥＦは、論理和回路３７０に入力され、論理和である異常検出信号ＥＲが出力される。その他の構成は、第１の実施の形態と同じであるので説明を省略する。
【００５０】
次に、図６に示されるタイミングチャートを参照して異常検出回路５００の動作を説明する。
【００５１】
時刻Ｔ２１以前では、割り込みカウンタ４１０の値ＩＲＣは“０”である。これは、割り込みによるイベントドリブンで動作する非同期式のＣＰＵ１００において、何も処理が行われていない状態であり、ＣＰＵ１００はイベント待ちの待機状態であること示す。待機状態である間は、ＣＰＵ１００内のタイミング制御信号ＴＣ１、ＴＣ２、ＴＣ３は、アクティブにならない。
【００５２】
時刻Ｔ２１において、何らかの割り込み信号が入力されて割り込み開始信号ＩＲＳがアクティブになる（図６（ｅ））。割り込みカウンタ４１０は、カウント値をインクリメントし、割り込みカウント値ＩＲＣは“１”に変化する（図６（ｇ））。ＣＰＵ１００は、割り込み処理を開始する。
【００５３】
時刻Ｔ２１から時刻Ｔ２３までの期間Ｔ２２では、ＣＰＵ１００が動作するため、タイミング制御回路１４０はタイミング制御信号ＴＣ１、ＴＣ２、ＴＣ３を生成し、プログラムカウンタ１１０、スタックポインタ１２０、レジスタフラグ１３０に供給する（図６（ａ）（ｂ）（ｃ））。
【００５４】
時刻Ｔ２３において、割り込み処理が終了して割り込み終了信号ＩＲＥがアクティブになる（図６（ｆ））。割り込み終了信号ＩＲＥを受けて、割り込みカウンタ４１０はカウント値をデクリメントし、割り込みカウント値ＩＲＣは“０”に変化する（図６（ｇ））。ここからＣＰＵ１００は再度待機状態となる。
【００５５】
しかし、時刻Ｔ２４において、電源ノイズなどによる異常動作により、タイミング制御信号ＴＣ１にパルスが発生すると（図６（ａ））、論理和回路５１０の出力信号ＴＯＲがアクティブになる（図６（ｄ））。割り込みカウンタ値ＩＲＣが“０”であるから、ゼロ検出回路５２０の出力信号ＺＲはアクティブであり（図６（ｈ））、論理ＡＮＤ回路５３０の出力信号ＥＺもアクティブになる（図６（ｉ））。したがって、異常検出信号ＥＲがアクティブになり（図６（ｊ））、異常が検出される。
【００５６】
上述のように、ＣＰＵが非同期式である場合には更なる信頼性向上のための異常検出回路を設けることができ、ＣＰＵの待機状態において、ＣＰＵ内の異常動作に関しても検出することができる。割り込み処理要求がないような待機状態においては、正常であれば非同期ＣＰＵのタイミング制御回路は動作せず、スタックポインタ１２０の値も変化しない。スタックポインタの値を監視するだけでは内部フリップフロップ値の反転に起因する異常動作は検出できない。上述の異常検出回路５００は、非同期ＣＰＵ１００内の主要レジスタ（プログラムポインタ１１０、スタックポインタ１２０、フラグレジスタ１３０）のタイミング制御信号の変化を検知する回路と、ＣＰＵが動作していない状態を検知するゼロ検出回路５２０とを備えるため、非同期ＣＰＵの内部状態に異常が発生したことを検出することができる。したがって、イベントドリブンで動作するマイクロコントローラの場合、通常動作状態よりも待機状態の時間が大幅に長いことが考えられ、非同期ＣＰＵを搭載したマイクロコントローラの待機状態の信頼性をより上げることが可能となる。
【００５７】
マイクロコントローラの異常状態としては、ＣＰＵ暴走と、ＣＰＵデッドロック、待機時のＣＰＵ内フリップフロップ（ＦＦ）異常がある。これまでは、ＣＰＵ暴走がスタックポインタに影響される場合においてのみ検出可能であったが、本発明によれば、スタックポインタへの影響に関係なく、異常動作を検出可能である。すなわち、本発明では、ＣＰＵが受け付けた割り込み要求の数と、ＣＰＵが処理完了した割り込み処理の数をカウンタにて計測する。受け付けた割り込み要求の数を示すカウンタ値が、あらかじめ設定される上限値以上に達するか、アンダーフローを示すかを判定し、ＣＰＵの暴走状態、ＣＰＵが動作しないデッドロック状態を検出することが可能となる。
【００５８】
また、本発明では、実行が保留されている割り込み要求数を計測し、その数が、あらかじめ設定される上限値以上に達することを検知してＣＰＵの異常状態が検出される。これによって、多重割り込みが禁止されている場合や優先度の高い割り込み処理中に異常が発生した場合においても、割り込み終了信号が発生しないＣＰＵの暴走状態や、ＣＰＵが動作しないデッドロック状態を異常状態として検出することが可能となる。
【００５９】
更に、本発明では、ＣＰＵが受け付けた割り込み要求数による異常検出と、実行が保留された割り込み要求数による異常検出との２種類の方法で異常を検出する。そのため、本発明の異常検出回路を搭載したマイクロコントローラは、それぞれのシステムの割り込み要求や多重割り込みの数や種類、発生頻度に応じて異常検出の閾値を柔軟に設定でき、システムの信頼性をより高めることが可能となる。
【００６０】
また、第２の実施の形態において示したように、割り込み処理を実行していないときに、ＣＰＵのプログラムカウンタ、スタックポインタ、フラグレジスタのタイミング制御信号を監視することにより、割り込み要求が発生していないのにＣＰＵが動作してしまう異常状態の検出も可能となる。
【００６１】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６２】
１００  ＣＰＵ
１１０  プログラムカウンタ
１２０  スタックポインタ
１３０  フラグレジスタ
２００  割り込みコントローラ
２１０、２２０、２３０  割り込みフラグレジスタ
２５１、２５２  周辺回路
３００  異常検出回路
３１０  割り込みフラグ保留数検出回路
３２０  保留数上限設定レジスタ
３３０  保留数異常検出回路
３６０  論理和回路
４００  異常検出回路
４１０  割り込みカウンタ
４２０  割り込み受付数上限設定レジスタ
４３０  カウンタ異常値検出回路
５００  異常検出回路
５１０  論理和回路
５２０  ゼロ検出回路
５３０  論理積回路
【図１】
0005508903.tif 000002
【図２】
0005508903.tif 000003
【図３】
0005508903.tif 000004
【図４】
0005508903.tif 000005
【図５】
0005508903.tif 000006
【図６】
0005508903.tif 000007