(57)【要約】【課題】ＣＰＵに負荷を掛けることなく、ソフトウェアが実行する処理タスクの異常を確実に検出することができる半導体装置を提供する。【解決手段】ＣＰＵ２が実行するソフトウェアの処理タスクの実行状態を記憶し、処理タスクの実行状態を示す実行状態信号２０２を出力するタスク状態記憶部１０と、ＣＰＵ２の制御に基づいて出力される処理タスクに対する割り込み信号２０１と、実行状態信号２０２とを取得し、処理タスクが正常に実行されている場合、正常動作中信号２０３を出力するタスク正常判定部２１と、正常動作中信号２０３に基づいて、クリア信号２０４を出力するクリア出力部２２と、所定の時間以内にクリア信号２０４を取得した場合、タイマカウント値をクリアし、所定の時間が経過してもクリア信号２０４を取得できない場合、リセット信号２０５をＣＰＵ２へ出力するウォッチドッグタイマ３０とを具備する。【選択図】図４
2010277303.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵが実行するソフトウェアの処理タスクの実行状態を記憶し、前記処理タスクの実行状態を示す実行状態信号を出力するタスク状態記憶部と、
前記ＣＰＵの制御に基づいて出力される前記処理タスクに対する割り込み信号と、前記実行状態信号とを取得し、前記処理タスクが正常に実行されている場合、正常動作中信号を出力するタスク正常判定部と、
前記正常動作中信号に基づいて、クリア信号を出力するクリア出力部と、
所定の時間以内に前記クリア信号を取得した場合、タイマカウント値をクリアし、前記所定の時間が経過してもクリア信号を取得できない場合、リセット信号を前記ＣＰＵへ出力するウォッチドッグタイマと
を具備する
半導体装置。
【請求項２】
請求項１に記載の半導体装置であって、
前記タスク正常判定部は、前記割り込み信号を取得すると割り込み受付状態になり、前記割り込み受付け状態の期間に前記実行状態信号を取得すると前記処理タスクが正常に実行されていると判定する
半導体装置。
【請求項３】
請求項１又は２に記載の半導体装置であって、
前記クリア出力部は、前記正常動作中信号を取得している状態で、前記タスク正常判定部が前記実行状態信号を取得すること、又は取得している前記実行状態信号が取得できなくことに基づいて、前記クリア信号を前記ウォッチドッグタイマへ出力する
半導体装置。
【請求項４】
請求項１乃至３の何れか一項に記載の半導体装置であって、
前記クリア出力部が前記ウォッチドッグタイマへ前記クリア信号を出力するか否かを制御するクリア許可信号を出力する出力許可制御部
を更に具備する
半導体装置。
【請求項５】
請求項１乃至４の何れか一項に記載の半導体装置であって、
前記ＣＰＵから提供される起動要求、又は前記割り込み信号に基づいて、前記ＣＰＵとバスを介して接続するメモリから前記処理タスクの実行状態を取得し、前記処理タスクの実行状態を前記タスク状態記憶部へ提供するＤＭＡ制御部
を更に具備する
半導体装置。
【請求項６】
ＣＰＵが実行するソフトウェアの処理タスクに対する割り込み信号を取得するステップと、
前記処理タスクの実行状態を示す実行状態信号を出力するステップと、
前記割り込み信号と、前記実行状態信号とに基づいて、前記処理タスクが正常に実行されているか否かを判定するステップと、
前記処理タスクが正常に実行されている場合、正常動作中信号を出力するステップと、
前記正常動作中信号に基づいて、クリア信号を出力するステップと、
所定の時間以内に前記クリア信号を取得したか否かを判定するステップと、
前記所定の時間以内に前記クリア信号を取得した場合、タイマカウント値をクリアし、前記所定の時間が経過してもクリア信号を取得できない場合、リセット信号を前記ＣＰＵへ出力するステップと
を具備する
異常検出方法。
【請求項７】
請求項６に記載の異常検出方法であって、
前記処理タスクが正常に実行されているか否かを判定するステップは、
前記割り込み信号に基づいて、割り込み受付状態となるステップと、
前記割り込み受付状態の期間に、前記実行状態信号を取得した場合、前記処理タスクが正常に実行されていると判定するステップと
を備える
異常検出方法。
【請求項８】
請求項６又は７に記載の異常検出方法であって、
クリア信号を出力するステップは、前記正常動作中信号を取得している状態で、前記実行状態信号を取得したときと、取得している前記実行状態信号が取得できなくなるときに、前記クリア信号を前記ウォッチドッグタイマ出力する
異常検出方法。
【請求項９】
請求項６乃至８の何れか一項に記載の異常検出方法であって、
前記クリア信号を出力するか否かを制御するクリア許可信号を出力するステップ
を更に具備し、
前記クリア信号を出力するステップは、
前記クリア許可信号が許可状態の場合、前記正常動作中信号を無視する
異常検出方法。
【請求項１０】
請求項６乃至９の何れか一項に記載の異常検出方法であって、
前記実行状態信号を出力するステップは、
前記ＣＰＵから提供される起動要求、又は前記割り込み信号に基づいて、前記ＣＰＵとバスを介して接続されるメモリから前記処理タスクの実行状態を取得するステップと、
を備える
異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、特にソフトウェアの異常検出に関する。
【背景技術】
【０００２】
半導体集積回路は、年々大規模化し、実装される機能も複雑になっている。そこで、半導体集積回路は、リアルタイムＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等のソフトウェアを使用することにより、効率良く制御を行うようになってきた。しかし、リアルタイムＯＳを用いる半導体集積回路は、リアルタイムＯＳが機能を同時に制御する高負荷状態が継続する場合が増えており、予測できない異常が発生する場合がある。従って、リアルタイムＯＳを用いる半導体集積回路は、実行中の異常状態の確実な検出と、異常の的確な処理とを備え、安定した動作をすることが求められている。
【０００３】
ソフトウェアの自己診断機能を有するデジタル処理装置に関する技術が特許文献１に開示されている。図１は、特許文献１のデジタル処理装置の構成を示したブロック図である。図１を参照すると、デジタル処理装置は、異常発生監視タスク１００と、異常発生監視手段１１０とを有する。異常発生監視タスク１００は、保持手段１０１と、判断手段１０２と、性能判断手段１０３と、アラーム出力手段１０４とを備える。
【０００４】
保持手段１０１は、処理タスク１２０Ａ及び処理タスク１２０Ｂの動作状況通知情報１２１を受け取る。判断手段１０２は、動作状況通知情報１２１が処理タスク１２０Ａ及び処理タスク１２０Ｂの正常を示しているか否かを判断する。判断手段１０２が正常であることを判断したとき、異常発生監視手段１１０のカウンタ１１１はクリアされる。判断手段１０２が異常を判断したとき、カウンタ１１１はクリアされない。性能判断手段１０３は、カウンタ１１１がクリアされたとき、処理タスク１２０Ａ及び処理タスク１２０Ｂの性能を判断する。アラーム出力手段１０４は、性能判断手段１０３の性能判断に対応するアラーム１２２を出力する。このようなデジタル処理装置は、処理タスク１２０Ａ又は処理タスク１２０Ｂが異常になると、異常発生監視タスク１００が正常に動作している場合でも、ＣＰＵ１３０にリセットを掛けること又はアラームを発生させることができるというものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−２０２５８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、本願発明者は鋭意検討の結果、特許文献１のデジタル処理装置では確実な異常検出ができない問題点を見出した。まず、特許文献１のデジタル処理装置の実行タイミングを説明する。図２は、特許文献１のデジタル処理装置に基づいて、本願発明者が実行タイミングを推測した図である。図２を参照すると、処理タスク１２０Ａと、処理タスク１２０Ｂと、異常発生監視タスク１００との実行タイミングが示されている。タイミングＴ１は処理タスク１２０Ａの実行開始タイミングを示し、タイミングＴ２は処理タスク１２０Ａの実行終了タイミングを示している。また、タイミングＴ３は処理タスク１２０Ｂの実行開始タイミングを示し、タイミングＴ４は処理タスク１２０Ｂの実行終了タイミングを示している。尚、処理タスク１２０Ａ、処理タスク１２０Ｂ、及び異常発生監視タスク１００は、同一の優先順位であるとする。
【０００７】
リアルタイムＯＳの処理タスクである処理タスク１２０Ａ及び処理タスク１２０Ｂは、処理を終了したとき（タイミングＴ２、タイミングＴ４）、動作状況に応じた動作状況通知情報１２１を、異常発生監視タスク１００へ提供する。異常発生監視タスク１００は、動作状況通知情報１２１を取得すると、以下の動作を行う。異常発生監視タスク１００では、保持手段１０２が動作状況通知情報１２１を保持する。判断手段１０２は、保持手段１０２が保持する動作状況通知情報１２１に基づいて、正常動作であるか否かを判断する。正常動作である場合、異常発生監視手段１１０のカウンタ１１１はクリアされる。更に、性能判断手段１０３は、カウンタ１１１のカウント値と、動作状況通知情報１２１とに基づいて、処理タスク１２０Ａ又は処理タスク１２０Ｂの性能判断を行い、異常があればアラーム出力手段１０４がアラーム信号１２３を出力する。
【０００８】
特許文献１のデジタル処理装置は、図２に示した実行タイミングであれば処理タスク１２０Ａ及び処理タスク１２０Ｂの異常を検出することができるが、処理タスク１２０Ｂの優先順位が異常発生監視タスク１００よりも高く、処理タスク１２０ＢがタイミングＴ２からＴ４の間で継続する場合、異常検出できない場合がある。図３は、特許文献１のデジタル処理装置に基づいて、本願発明者が実行タイミングを推測した図である。異常発生監視タスク１００は、タイミングＴ２において優先順位の高い処理タスク１２０Ｂの実行開始となるため起動できず、タイミングＴ２からＴ４の間の異常を検出することができない。即ち、異常発生監視タスク１００は、タイミングＴ６でカウンタ１１１がオーバーフローしても、処理タスク１２０Ｂの実行終了タイミングであるタイミングＴ４以降に起動した後でないと異常を検出することができない問題を有している。
【課題を解決するための手段】
【０００９】
以下に、発明を実施するための形態で使用される符号を括弧付きで用いて、課題を解決するための手段を記載する。この符号は、特許請求の範囲の記載と発明を実施するための形態の記載との対応を明らかにするために付加されたものであり、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１０】
本発明の半導体装置（１）は、ＣＰＵ（２）が実行するソフトウェアの処理タスクの実行状態を記憶し、処理タスクの実行状態を示す実行状態信号（２０２）を出力するタスク状態記憶部（１０）と、ＣＰＵ（２）の制御に基づいて出力される処理タスクに対する割り込み信号（２０１）と、実行状態信号（２０２）とを取得し、処理タスクが正常に実行されている場合、正常動作中信号（２０３）を出力するタスク正常判定部（２１）と、正常動作中信号（２０３）に基づいて、クリア信号（２０４）を出力するクリア出力部（２２）と、所定の時間以内にクリア信号（２０４）を取得した場合、タイマカウント値をクリアし、所定の時間が経過してもクリア信号（２０４）を取得できない場合、リセット信号（２０５）をＣＰＵ（２）へ出力するウォッチドッグタイマ（３０）とを具備する。
このような半導体装置（１）は、タスク正常判定部（２１）によってＣＰＵ（２）が実行するソフトウェアの処理タスクが正常に実行されているか否かを判定し、正常に実行されている場合はウォッチドッグタイマ（３０）のタイマカウント値をクリアでき、正常に実行されていない場合はウォッチドッグタイマ（３０）からリセット信号（２０５）をＣＰＵ（２）へ出力することができる。
【発明の効果】
【００１１】
本発明の半導体装置は、ＣＰＵに負荷を掛けることなく、ソフトウェアが実行する処理タスクの異常を確実に検出することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、特許文献１のデジタル処理装置の構成を示したブロック図である。
【図２】図２は、特許文献１のデジタル処理装置に基づいて、本願発明者が実行タイミングを推測した図である。
【図３】図３は、特許文献１のデジタル処理装置に基づいて、本願発明者が実行タイミングを推測した図である。
【図４】図４は、本発明の第１の実施の形態の半導体集積装置である異常検出部１の構成例を示したブロック図である。
【図５】図５は、ＣＰＵ２が実行するソフトウェアの処理タスクが正常に実行された場合における、各信号のタイミングを示した図である。
【図６】図６は、割り込み信号２０１後の処理タスクが正常に実行されない場合における、各信号のタイミングを示した図である。
【図７】図７は、処理タスクが正常に終了しない場合における、各信号のタイミングを示した図である。
【図８】図８は、割り込み信号がないのに処理タスクが起動した場合における、各信号のタイミングを示した図である。
【図９】図９は、処理タスクＡと処理タスクＢとが実行される場合における、各信号のタイミングを示した図である。
【図１０】図１０は、本発明の異常検出部１が図３に示した処理タスク１２０Ａと処理タスク１２０Ｂとを監視する場合の各信号のタイミングを示した図である。
【図１１】図１１は、本発明の第２の実施の形態の半導体装置である異常検出部１の構成例を示したブロック図である。
【図１２】図１２は、本発明の第３の実施の形態の半導体装置である異常検出部１の構成例を示したブロック図である。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施の形態による半導体装置を説明する。
【００１４】
（第１の実施の形態）
本発明の第１の実施の形態を説明する。図４は、本発明の第１の実施の形態の半導体集積装置である異常検出部１の構成例を示したブロック図である。図４を参照すると、異常検出部１はバス５に接続し、バス５にはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２と、メモリ３と、割り込み制御部４とが接続している。尚、バス５には、更に、ユーザの入力を取得する入力部や、ユーザに処理結果を認識させる出力部が接続していてもよい。
【００１５】
ＣＰＵ２は、メモリ３に格納されている本発明に係わるソフトウェアを実行し、演算処理及び制御処理を行う。メモリ３は、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、及びＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等からなり、本発明に係わる各機能や手段を実現するプログラムや、ＣＰＵ２の処理結果を格納する。割り込み制御部４は、ＣＰＵ２の制御に基づいて、割り込み信号２０１を異常検出部１へ出力する。
【００１６】
異常検出部１は、ＣＰＵ２が実行するソフトウェアの処理タスクの異常を検出し、異常が発生した場合、リセット信号をＣＰＵ２へ出力する。異常検出部１は、半導体を用いた１つの集積回路によって実現してもよいし、半導体集積回路を含む半導体装置として実現してもよい。異常検出部１は、タスク状態記憶部１０と、クリア出力制御部２０と、ウォッチドッグタイマ３０とを備える。
【００１７】
タスク状態記憶部１０は、バス５を介してＣＰＵ２から提供される処理タスクの実行状態を記憶し、処理タスクが実行されていることを示す実行状態信号２０２をクリア出力制御部２０へ出力する。
【００１８】
クリア出力制御部２０は、割り込み信号２０１と実行状態信号２０２とを取得し、処理タスクが正常に実行されていれば、クリア信号２０４をウォッチドッグタイマ３０へ出力する。クリア出力部制御部２０は、タスク正常判定部２１と、クリア出力部２２とを含む。
【００１９】
タスク正常判定部２１は、割り込み制御部４が出力する割り込み信号２０１と、タスク状態記憶部１０が出力する実行状態信号２０２とを取得し、処理タスクが正常に実行されているか否かを判定する。詳細には、タスク正常判定部２１は、割り込み信号２０１を取得すると割り込み受付状態になり、割り込み受付け状態の期間に実行状態信号２０２を取得すると処理タスクが正常に実行されていると判定する。タスク正常判定部２１は、タスク正常判定部２１内のレジスタに処理タスクの正常動作状態を記憶し、正常動作中信号２０３をクリア出力部２２へ出力する。
【００２０】
クリア出力部２２は、実行状態信号２０２と、正常動作中信号２０３とに基づいて、クリア信号２０４をウォッチドッグタイマ３０へパルス出力する。詳細には、クリア出力部２２は、正常動作中信号２０３を取得している状態で、クリア出力制御部２０が実行状態信号２０２を取得すること、又は取得している実行状態信号２０２が取得できなくことに基づいて、クリア信号２０４をウォッチドッグタイマ３０へパルス出力する。
【００２１】
ウォッチドックタイマ３０は、時間をカウントする。ウォッチドッグタイマ３０は、所定の時間以内にクリア信号２０４を取得した場合、タイマカウント値を０にクリアする。一方、所定の時間が経過してもクリア信号２０４を取得できない場合オーバーフローとなり、ウォッチドッグタイマ３０はリセット信号２０５をＣＰＵ２へ出力する。
【００２２】
本発明の第１の実施の形態による異常検出部１の処理動作について説明する。図５は、ＣＰＵ２が実行するソフトウェアの処理タスクが正常に実行された場合における、各信号のタイミングを示した図である。図５を参照して、本発明の第１の実施の形態による処理動作を説明する。
【００２３】
タイミングＴ１０：
割り込み制御部４は、ＣＰＵ２の制御に基づいて割り込み信号２０１をタスク正常判定部２１へ出力する。タスク正常判定部２１は、割り込み信号２０１を取得し、タイミングＴ１０から割り込み受付状態となる。
【００２４】
タイミングＴ１４：
ＣＰＵ２は、メモリ３に格納されている処理タスクの実行状態（実行開始）を、バス５を介してタスク状態記憶部１０へ出力する。タスク状態記憶部１０は、ＣＰＵ２から提供される処理タスクの実行状態を記憶する。そして、タスク状態記憶部１０は、処理タスクが実行されていることを示す実行状態信号２０２を、タスク正常判定部２１へ出力する。
【００２５】
タスク正常判定部２１は、割り込み受付状態で実行状態信号２０２を取得したため、処理タスクが正常に実行されていると判定する。タスク正常判定部２１は、Ｊ１として記録されている正常動作中信号２０３をクリア出力部２２へ出力し続ける。
【００２６】
クリア出力部２２は、正常動作中信号２０３を取得している状態で、クリア出力制御部２０が実行状態信号２０２を取得したことに基づいて、クリア信号２０４をウォッチドッグタイマ３０へパルス出力する。ウォッチドックタイマ３０は、クリア信号２０４を取得すると、タイマカウント値をクリアする。
【００２７】
タイミングＴ１５：
ＣＰＵ２は、処理タスクの実行状態（実行終了）を、バス５を介してタスク状態記憶部１０へ出力する。尚、タイミングＴ１４からＴ１５は、ＣＰＵ２が処理タスクを実行している期間である。タスク状態記憶部１０は、ＣＰＵ２から提供される処理タスクの実行状態を記憶する。そして、タスク状態記憶部１０は、処理タスクの実行が終了したため、タイミングＴ１５から実行状態信号２０２を出力しない。
【００２８】
タスク正常判定部２１は、割り込み受付状態で取得していた実行状態信号２０２が取得されなくなると、処理タスクが正常に終了したと判定する。タスク正常判定部２１は、Ｊ２として記録されている正常動作中信号２０３をクリア出力部２２へ出力し続ける。
【００２９】
クリア出力部２２は、正常動作中信号２０３を取得している状態で、クリア出力制御装置２０が実行状態信号を取得しなくなることに基づいて、クリア信号２０４をウォッチドッグタイマ３０へパルス出力する。ウォッチドックタイマ３０は、クリア信号２０４を取得すると、タイマカウント値をクリアする。
【００３０】
タイミングＴ１１：
タスク正常判定部２１は、実行状態信号２０２に基づいて処理タスクが正常に終了したことを判定すると、割り込み受付状態を解除する。
【００３１】
尚、図５のタイミングＴ１２からタイミングＴ１３は、前述したタイミングＴ１０からタイミングＴ１１までと同様の処理であるため、説明を省略する。図５に示した例では、ウォッチドックタイマ３０が所定の時間内にクリア信号２０４を取得してタイマカウント値をクリアするため、ＣＰＵ２はリセット信号２０５を取得することなく処理タスクの実行を継続することができる。
【００３２】
次に、本発明の異常検出部１が、処理タスクの異常を検出する場合の処理動作を説明する。図６は、割り込み信号２０１後の処理タスクが正常に実行されない場合における、各信号のタイミングを示した図である。尚、図６のタイミングＴ１０からＴ１１は、図５と同様に処理タスクが正常に実行されている期間であるため説明を省略する。
【００３３】
タイミングＴ１２：
割り込み制御部４は、ＣＰＵ２の制御に基づいて割り込み信号２０１をタスク正常判定部２１へ出力する。タスク正常判定部２１は、割り込み信号２０１を取得すると、タイミングＴ１２から割り込み受付状態となる。
【００３４】
タイミングＴ３０：
割り込み制御部４は、ＣＰＵ２の制御に基づいて割り込み信号２０１をタスク正常判定部２１へ出力する。
【００３５】
タスク正常判定部２１は、割り込み受付状態において、実行状態信号２０２を取得せずに割り込み信号２０１を続けて取得したため、正常動作信号２０３を出力しない。詳細には、タスク正常判定部２１は、タイミングＴ１２で割り込み信号２０１を取得した後、Ｊ１０に示した割り込み受付状態を記憶しているレジスタの状態と、タスク状態信号２０２が入力される前に続けて割り込み信号２０１を取得したこととに基づいて、タイミングＴ３０でプログラム不具合等により処理タスクが起動できない異常が起きていることを判定する。そして、タスク正常判定部２１は、処理タスクの正常動作状態を記憶するレジスタを異常状態に変化させ、正常動作中信号２０３をクリア出力部２２に出力しない。
【００３６】
タイミングＴ３１：
クリア出力部２２は、正常動作信号２０３を取得できないため、クリア信号２０４をウォッチドッグタイマ３０にパルス出力しない。ウォッチドッグタイマ３０は、タイミングＴ３１においてタイマカウント値がオーバーフロー（Ｊ２０）し、リセット信号２０５をＣＰＵ２へ出力する。
【００３７】
図７は、処理タスクが正常に終了しない場合における、各信号のタイミングを示した図である。尚、図７のタイミングＴ１０からＴ１１は、図５と同様に処理タスクが正常に実行されている期間であるため説明を省略する。
【００３８】
タイミングＴ１２：
割り込み制御部４は、ＣＰＵ２の制御に基づいて割り込み信号２０１をタスク正常判定部２１へ出力する。タスク正常判定部２１は、割り込み信号２０１を取得すると、タイミングＴ１２から割り込み受付状態となる。
【００３９】
タイミングＴ１６：
ＣＰＵ２は、メモリ３に格納されている処理タスクの状態（実行開始）を、バス５を介してタスク状態記憶部１０へ出力する。タスク状態記憶部１０は、ＣＰＵ２から提供される処理タスクの実行状態を記憶する。そして、タスク状態記憶部１０は、処理タスクが実行されていることを示す実行状態信号２０２を、タスク正常判定部２１へ出力する。
【００４０】
タスク正常判定部２１は、割り込み受付状態で実行状態信号２０２を取得したため、処理タスクが正常に実行されていると判定する。タスク正常判定部２１は、Ｊ３として記録されている正常動作中信号２０３をクリア出力部２２へ出力し続ける。
【００４１】
クリア出力部２２は、正常動作中信号２０３を取得している状態で、クリア出力制御部２０が実行状態信号２０２を取得したことに基づいて、クリア信号２０４をウォッチドッグタイマ３０へパルス出力する。ウォッチドックタイマ３０は、クリア信号２０４を取得すると、タイマカウント値をクリアする。
【００４２】
タイミングＴ３２：
割り込み制御部４は、ＣＰＵ２の制御に基づいて割り込み信号２０１をタスク正常判定部２１へ出力する。
【００４３】
タスク正常判定部２１は、割り込み受付状態において、実行状態信号２０２が取得されなくなる前に割り込み信号２０１を取得したため、正常動作信号２０３を出力しない。詳細には、タスク正常判定部２１は、Ｊ１１に示した割り込み受付状態を記憶しているレジスタの状態と、処理タスクの実行終了に基づいてタスク状態信号２０２が取得されなくなる前に、続けて割り込み信号２０１を取得したこととに基づいて、タイミングＴ１６で起動した処理タスクがタイミングＴ３２でプログラム不具合等によって終了しない異常が起きていることを判定する。そして、タスク正常判定部２１は、異常を判定したタイミングＴ３２において、処理タスクの正常動作状態を記憶するレジスタを異常状態に変化させ、正常動作中信号２０３をクリア出力部２２に出力しない。
【００４４】
タイミングＴ３３：
クリア出力部２２は、正常動作信号２０３を取得できないため、クリア信号２０４をウォッチドッグタイマ３０にパルス出力しない。ウォッチドッグタイマ３０は、タイマカウント値がオーバーフロー（Ｊ２０）し、リセット信号２０５をＣＰＵ２へ出力する。
【００４５】
図８は、割り込み信号がないのに処理タスクが起動した場合における、各信号のタイミングを示した図である。尚、図８のタイミングＴ１０からＴ１１は、図５と同様に処理タスクが正常に実行されている期間であるため説明を省略する。
【００４６】
タイミングＴ１６：
ＣＰＵ２は、メモリ３に格納されている処理タスクの状態（実行開始）を、バス５を介してタスク状態記憶部１０へ出力する。タスク状態記憶部１０は、ＣＰＵ２から提供される処理タスクの実行状態を記憶する。そして、タスク状態記憶部１０は、処理タスクが実行されていることを示す実行状態信号２０２を、タスク正常判定部２１へ出力する。
【００４７】
タスク正常判定部２１は、割り込み受付状態でない期間に、実行状態信号２０２を取得したため、処理タスクが正常に実行されていないと判定する。タスク正常判定部２１は、正常動作中信号２０３をクリア出力部２２へ出力しない。詳細には、タスク正常判定部２１は、Ｊ１２に示した割り込み受付状態を記憶しているレジスタの状態と、処理タスクが実行されていることを示す実行状態信号２０２を取得したこととに基づいて、タイミングＴ１６においてプログラム不具合等によって割り込みが信号２０１を取得していない状態で処理タスクが起動された異常を判定する。そして、タスク正常判定部２１は、異常を判定したタイミングＴ１６において、処理タスクの正常動作状態を記憶するレジスタを異常状態に変化させ、正常動作中信号２０３をクリア出力部２２に出力しない。
【００４８】
クリア出力部２２は、正常動作信号２０３を取得できないため、クリア信号２０４をウォッチドッグタイマ３０にパルス出力しない。
【００４９】
タイミングＴ１７：
ＣＰＵ２は、処理タスクの実行状態（実行終了）を、バス５を介してタスク状態記憶部１０へ出力する。尚、タイミングＴ１６からＴ１７は、ＣＰＵ２が処理タスクを実行している期間である。タスク状態記憶部１０は、ＣＰＵ２から提供される処理タスクの実行状態を記憶する。そして、タスク状態記憶部１０は、処理タスクの実行が終了したため、タイミングＴ１７から実行状態信号２０２を出力しない。
【００５０】
タイミングＴ３４：
ウォッチドッグタイマ３０は、タイマカウント値がオーバーフロー（Ｊ２０）し、リセット信号２０５をＣＰＵ２へ出力する。
【００５１】
図９は、処理タスクＡと処理タスクＢとが実行される場合における、各信号のタイミングを示した図である。異常検出部１は、処理タスク毎にタスク状態記憶部１０とタスク正常判断部２１と有する。即ち、タスク状態記憶部１０は、ＣＰＵ２から取得する処理タスクの実行状態と、出力する実行状態信号２０２とを、処理タスクＡと処理タスクＢとで別々に扱うことができる。同様に、タスク正常判定部２１は、割り込み制御部４から取得する割り込み信号２０１と、割り込み信号を取得した後の割り込み受付状態と、正常動作中信号２０３とを処理タスクＡと処理タスクＢとで別々に扱うことができる。尚、図９において、処理タスクＡが実行されるタイミングＴ１０からＴ１１は、図５と同様に処理タスクが正常に実行されている期間である。また、図９において、処理タスクＢが実行されるタイミングＴ２０以降は、図７と同様に処理タスクが正常に終了しない場合の期間である。
【００５２】
タイミングＴ１０：
割り込み制御部４は、ＣＰＵ２の制御に基づいて割り込み信号２０１Ａをタスク正常判定部２１へ出力する。タスク正常判定部２１は、割り込み信号２０１Ａを取得し、タイミングＴ１０から割り込み受付状態Ａとなる。
【００５３】
タイミングＴ１４：
ＣＰＵ２は、メモリ３に格納されている処理タスクＡの実行状態Ａ（実行開始）を、バス５を介してタスク状態記憶部１０へ出力する。タスク状態記憶部１０は、ＣＰＵ２から提供される処理タスクＡの実行状態Ａを記憶する。そして、タスク状態記憶部１０は、処理タスクＡが実行されていることを示す実行状態信号２０２Ａを、タスク正常判定部２１へ出力する。
【００５４】
タスク正常判定部２１は、割り込み受付状態Ａで実行状態信号２０２Ａを取得したため、処理タスクＡが正常に実行されていると判定する。タスク正常判定部２１は、Ｊ１として記録されている正常動作中信号２０３Ａをクリア出力部２２へ出力し続ける。また、タスク正常判定部２１は、Ｊ５として記録されている正常動作中信号２０３Ｂをクリア出力部２２へ出力し続けている。
【００５５】
クリア出力部２２は、正常動作中信号２０３Ｂを取得していることと、正常動作中信号２０３Ａを取得している状態で、クリア出力制御部２０が実行状態信号２０２Ａを取得したこととに基づいて、クリア信号２０４をウォッチドッグタイマ３０へパルス出力する。ウォッチドックタイマ３０は、クリア信号２０４を取得すると、タイマカウント値をクリアする。
【００５６】
タイミングＴ１５：
ＣＰＵ２は、処理タスクＡの実行状態（実行終了）を、バス５を介してタスク状態記憶部１０へ出力する。尚、タイミングＴ１４からＴ１５は、ＣＰＵ２が処理タスクＡを実行している期間である。タスク状態記憶部１０は、ＣＰＵ２から提供される処理タスクＡの実行状態を記憶する。そして、タスク状態記憶部１０は、処理タスクＡの実行が終了したため、タイミングＴ１５から実行状態信号２０２Ａを出力しない。
【００５７】
タスク正常判定部２１は、割り込み受付状態Ａで取得していた実行状態信号２０２Ａが取得されなくなると、処理タスクＡが正常に終了したと判定する。タスク正常判定部２１は、Ｊ２として記録されている正常動作中信号２０３Ａをクリア出力部２２へ出力し続ける。また、タスク正常判定部２１は、Ｊ６として記録されている正常動作中信号２０３Ｂをクリア出力部２２へ出力し続けている。
【００５８】
クリア出力部２２は、正常動作中信号２０３Ｂを取得していることと、正常動作中信号２０３Ａを取得している状態で、クリア出力制御装置２０が実行状態信号２０２Ａを取得しなくなることとに基づいて、クリア信号２０４をウォッチドッグタイマ３０へパルス出力する。ウォッチドックタイマ３０は、クリア信号２０４を取得すると、タイマカウント値をクリアする。
【００５９】
タイミングＴ１１：
タスク正常判定部２１は、実行状態信号２０２Ａに基づいて処理タスクが正常に終了したことを判定すると、割り込み受付状態Ａを解除する。
【００６０】
タイミングＴ２０：
割り込み制御部４は、ＣＰＵ２の制御に基づいて割り込み信号２０１Ｂをタスク正常判定部２１へ出力する。タスク正常判定部２１は、割り込み信号２０１Ｂを取得すると、タイミングＴ２０から割り込み受付状態Ｂとなる。
【００６１】
タイミングＴ２２：
ＣＰＵ２は、メモリ３に格納されている処理タスクの状態Ｂ（実行開始）を、バス５を介してタスク状態記憶部１０へ出力する。タスク状態記憶部１０は、ＣＰＵ２から提供される処理タスクの状態Ｂを記憶する。そして、タスク状態記憶部１０は、処理タスクＢが実行されていることを示す実行状態信号２０２Ｂを、タスク正常判定部２１へ出力する。
【００６２】
タスク正常判定部２１は、割り込み受付状態Ｂで実行状態信号２０２Ｂを取得したため、処理タスクＢが正常に実行されていると判定する。タスク正常判定部２１は、Ｊ７として記録されている正常動作中信号２０３Ｂをクリア出力部２２へ出力し続ける。また、タスク正常判定部２１は、Ｊ３として記録されている正常動作中信号２０３Ａをクリア出力部２２へ出力し続けている。
【００６３】
クリア出力部２２は、正常動作中信号２０３Ａを取得していることと、正常動作中信号２０３Ｂを取得している状態で、クリア出力制御部２０が実行状態信号２０２Ｂを取得したこととに基づいて、クリア信号２０４をウォッチドッグタイマ３０へパルス出力する。ウォッチドックタイマ３０は、クリア信号２０４を取得すると、タイマカウント値をクリアする。
【００６４】
タイミングＴ３５：
割り込み制御部４は、ＣＰＵ２の制御に基づいて割り込み信号２０１Ｂをタスク正常判定部２１へ出力する。
【００６５】
タスク正常判定部２１は、割り込み受付状態において、実行状態信号２０２Ｂが取得されなくなる前に割り込み信号２０１Ｂを取得したため、正常動作信号２０３Ｂを出力しない。詳細には、タスク正常判定部２１は、Ｊ１３に示した割り込み受付状態Ｂを記憶しているレジスタの状態と、処理タスクの実行終了に基づいてタスク状態信号２０２Ｂが取得されなくなる前に、続けて割り込み信号２０１Ｂを取得したこととに基づいて、タイミングＴ２２で起動した処理タスクＢがタイミングＴ３５でプログラム不具合等によって終了しない異常が起きていることを判定する。そして、タスク正常判定部２１は、異常を判定したタイミングＴ３５において、処理タスクの正常動作状態を記憶するレジスタを異常状態に変化させ、正常動作中信号２０３Ｂをクリア出力部２２に出力しない。
【００６６】
タイミングＴ３６：
クリア出力部２２は、正常動作信号２０３Ｂを取得できないため、クリア信号２０４をウォッチドッグタイマ３０にパルス出力しない。ウォッチドッグタイマ３０は、タイマカウント値がオーバーフロー（Ｊ２０）し、リセット信号２０５をＣＰＵ２へ出力する。
【００６７】
図９は、異常動作の例として図７を引用しているが、図６のように割り込み信号２０１Ｂに対して処理タスクＢが起動されない場合や、図８のように割り込み信号２０１Ｂがない状態で処理タスクＢが起動された場合も、異常検出部１は異常を検出することができる。
【００６８】
図１０は、本発明の異常検出部１が図３に示した処理タスク１２０Ａと処理タスク１２０Ｂとを監視する場合の各信号のタイミングを示した図である。図１０に示すように、本発明の異常検出部１は、ＣＰＵ２を介さないため、処理タスク１２０Ｂが終了しない異常を、ウォッチドッグタイマ３０がオーバーフローしたタイミングＴ７で確実に異常として検出することができる。
【００６９】
以上のように、本発明の第１の実施の形態の半導体装置である異常検出部１は、ＣＰＵ２が実行するソフトウェアの処理タスクが正常に実行されているか否かを判定し、正常に実行されていない場合はウォッチドッグタイマからリセット信号２０５をＣＰＵ２へ出力することができるため、ＣＰＵ２を介さずに処理タスクの異常を確実に検出できる効果を奏する。また、本発明の異常検出部１は、割り込み要求に対するタスクを起動するまでの応答時間を速くできる効果を奏する。その理由としては、異常検出部１は、ＣＰＵ２を介さずに異常検出できるので、ソフトウェアで異常発生を監視する必要がなくなり、割り込み要求に対する処理をすぐに実行できるためである。更に、本発明の異常検出部１は、特許文献１に記載されているような異常発生監視タスクを削除でき、ＣＰＵ２の負荷を小さくする効果を奏する。その理由としては、異常検出部１は、ＣＰＵ２を介さずに異常検出できるので、ソフトウェアで異常発生を監視する必要がなくなり、その処理時間を他のタスクを実行するための時間として使用できるためである。
【００７０】
（第２の実施の形態）
本発明の第２の実施の形態を説明する。図１１は、本発明の第２の実施の形態の半導体装置である異常検出部１の構成例を示したブロック図である。本発明の第２の実施の形態は、異常検出部１が第１の実施の形態の構成に出力許可制御部４０を更に備えるものである。本発明の第２の実施の形態の異常検出部１は、クリア出力部２２が出力許可制御部４０から出力されるクリア許可信号２０６に基づいて、タスク正常判定部２１から出力される正常動作中信号２０３を無視して動作できることが第１の実施の形態と異なる。その他の構成は第１の実施の形態と同様であるため、同じ構成には同じ符号を付して説明を省略する。
【００７１】
出力許可制御部４０は、ＣＰＵ２から許可状態又は禁止状態を示す信号を取得して、レジスタに禁止状態又は許可状態を記録する。禁止状態とは、クリア出力部２２が正常動作中信号２０３を無視する状態を表す。許可状態とは、クリア出力部２２が第１の実施の形態と同様に動作する状態を表す。出力許可制御部４０は、レジスタの状態に基づいて、禁止状態又は許可状態を示すクリア許可信号２０６をクリア出力制御部２０へ出力する。つまり、異常検出部１は、出力許可制御部４０のクリア許可信号２０６に基づいて、クリア出力制御部２０がウォッチドッグタイマ３０へクリア信号２０４を出力するか否かを制御することができる。
【００７２】
クリア出力部２２は、クリア許可信号２０６と、正常動作中信号２０３とを取得する。クリア出力部２２は、クリア許可信号２０６に基づいて、タスク正常判定部２１からの正常動作中信号２０３を無視することができる。詳細には、クリア出力部２２は、禁止状態のクリア許可信号２０６を取得すると、タスク正常判定部２１から出力される正常動作中信号２０３を無視する。この場合、クリア出力部２２は、ウォッチドッグタイマ３０に対して正常動作を示すクリア信号２０４をパルス出力する。クリア出力部２２は、許可状態のクリア許可信号２０６を取得すると、正常動作中信号２０３が正常動作を示していればクリア信号２０４をパルス出力し、異常動作を示していればクリア信号２０４をパルス出力しない。
【００７３】
本発明の第２の実施の形態による異常検出部１の処理動作を説明する。出力許可制御部４０は、ＣＰＵ２から許可状態又は禁止状態を示す信号を取得して、レジスタに禁止状態又は許可状態を記録する。
【００７４】
出力許可制御部４０は、レジスタの状態に基づいて、禁止状態又は許可状態を示すクリア許可信号２０６をクリア出力制御部２０へ出力する。ＣＰＵ２は処理タスクを起動し、処理タスクの実行状態をタスク状態記憶部１０へ提供する。
【００７５】
タスク状態記憶部１０は、処理タスクの実行状態を取得し、実行状態信号２０２をタスク判定部２１へ出力する。タスク正常判定部２１は、割り込み受付状態でない期間に実行状態信号２０２を取得しているため、正常動作中信号２０３を出力しない。
【００７６】
クリア出力部２２は、禁止状態のクリア許可信号２０６を取得すると、タスク正常判定部２１から出力される正常動作中信号２０３を無視し、ウォッチドッグタイマ３０へクリア信号２０４をパルス出力する。他の動作に関しては、第１の実施の形態と同様であるため説明を省略する。
【００７７】
本発明の第２の実施の形態による異常検出部１は、出力許可制御部４０から出力されるクリア許可信号２０６が禁止状態の場合、クリア出力制御部２０は検出する処理タスクの異常を無視して、ウォッチドッグタイマ３０にクリア信号２０４を出力して、ＣＰＵ２にリセット信号２０５を出力しないようにすることができる。一方、クリア許可信号２０６が許可状態の場合、異常検出部１は、クリア出力制御部２０が正常動作を検出していればクリア信号２０４を出力し、異常を検出していればウォッチドッグタイマ３０がＣＰＵ２にリセット信号２０５を出力できる。即ち、本発明の第２の実施の形態による異常検出部１は、ソフトウェアにより事前に決められた順番でメモリ３に格納されたタスクを起動もしくは終了する必要がある場合において、一時的に異常検出機能を禁止することができる効果を奏する。
【００７８】
（第３の実施の形態）
本発明の第３の実施の形態を説明する。図１２は、本発明の第３の実施の形態の半導体装置である異常検出部１の構成例を示したブロック図である。本発明の第３の実施の形態は、異常検出部１がバス５経由でＣＰＵ２とメモリ３とに接続するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）制御部５０を更に備えたものである。その他の構成は第２の実施の形態と同様であるため、同じ構成には同じ符号を付して説明を省略する。
【００７９】
ＤＭＡ制御部５０は、ＣＰＵ２から提供される起動要求、又は割り込み信号２０１に基づいて、メモリ３に存在する処理タスクの実行状態のアドレスを生成する。そして、ＤＭＡ制御部５０は、メモリ３から処理タスクの実行状態を取得し、タスク状態記憶部１０へ提供する。
【００８０】
本発明の第３の実施の形態による異常検出部１は、ＣＰＵ２がタスク状態記憶部１０へのアクセスを行う必要がなくなるため、ソフトウェアはタスク処理に専念できる効果を奏している。更に、本発明の異常検出部１は、処理タスク毎にレジスタとして記憶している処理タスクの実行状態と割り込み受付状態とタスク正常動作状態とを、同時動作する全タスクの個数だけ保持する必要がなくなり、回路規模を小さくすることができる。その理由としては、ＤＭＡ制御部５０が、メモリ３に記録されている処理タスクの実行状態と、割り込み受付状態と、タスク正常動作状態とを、異常検出部１内のレジスタに転送するため、異常検出部１には割り込み信号２０１によって起動されている全タスクに対して、処理タスクの実行状態、割り込み受付状態、及びタスク正常動作状態をレジスタとして保持しなくて良いからである。つまり、本発明の第３の実施の形態の異常検出部１は、同時に実行される全タスク数分だけ準備していたレジスタを削減することができ、回路規模を小さくできる効果を奏している。
【００８１】
尚、以上説明した本発明の実施の形態は、矛盾のない範囲で組み合わせることが可能である。
【符号の説明】
【００８２】
１      異常検出部
２      ＣＰＵ
３      メモリ
４      割り込み制御部
５      バス
１０    タスク状態記憶部
２０    クリア出力制御部
２１    タスク正常判定部
２２    クリア出力部
３０    ウォッチドッグタイマ
４０    出力許可制御部
５０    ＤＭＡ制御部
２０１  割り込み信号
２０２  実行状態信号
２０３  正常動作中信号
２０４  クリア信号
２０５  リセット信号
２０６  クリア許可信号
【図１】
2010277303.tif 000003
【図２】
2010277303.tif 000004
【図３】
2010277303.tif 000005
【図４】
2010277303.tif 000006
【図５】
2010277303.tif 000007
【図６】
2010277303.tif 000008
【図７】
2010277303.tif 000009
【図８】
2010277303.tif 000010
【図９】
2010277303.tif 000011
【図１０】
2010277303.tif 000012
【図１１】
2010277303.tif 000013
【図１２】
2010277303.tif 000014