(57)【要約】【課題】プログラムの暴走が生じた場合にＣＰＵにリセットをかけて初期状態に戻すと、初めからプログラムを実行し直す結果、途中までのデータが破棄されてしまう。【解決手段】バックアップメモリ１４と、ＤＭＡ制御部２１と、ＷＤＴ（ウォッチドグタイマ）とを設ける。ＤＭＡ制御部２１は、ＣＰＵ１１が正常に動作していてＷＤＴ２２にカウンタリセット信号ＣＲが与えられる毎にＣＰＵ１１、ＲＡＭ１２及び周辺回路１３の各々のデータをバックアップメモリ１４へ退避させ、かつプログラムの暴走がＷＤＴ２２により検知されてタイムオーバー信号ＴＯが出力された場合にはバックアップメモリ１４に退避されていたデータをＣＰＵ１１、ＲＡＭ１２及び周辺回路１３へそれぞれ復帰させるように制御する。これにより、ＣＰＵ１１にプログラムの暴走が生じた場合でも当該プログラムの途中から正常に動作を再開できる。【選択図】　　　　図１
2004086451.tif 000002
【特許請求の範囲】
【請求項１】
ストアードプログラム方式の制御ブロックと、
退避データを格納するためのバックアップメモリと、
前記制御ブロックにおけるプログラムの暴走を検知するための暴走検知手段と、
前記制御ブロックが正常に動作している時に当該制御ブロックのデータを前記バックアップメモリへ退避させ、かつ前記プログラムの暴走が検知された場合には前記バックアップメモリに退避されていたデータを前記制御ブロックへ復帰させるように制御するためのデータ転送制御手段とを備え、
前記プログラムの暴走が生じた場合でも当該プログラムの途中から正常に動作を再開できるようにしたことを特徴とする半導体集積回路。
【請求項２】
請求項１記載の半導体集積回路において、
データ記憶部を有する少なくとも１つの他の回路ブロックを更に備え、
前記データ転送制御手段は、前記制御ブロックが正常に動作している時に前記他の回路ブロックのデータを前記バックアップメモリへ退避させ、かつ前記プログラムの暴走が検知された場合には前記バックアップメモリに退避されていたデータを前記他の回路ブロックへ復帰させるように制御する機能を更に有することを特徴とする半導体集積回路。
【請求項３】
請求項１又は２に記載の半導体集積回路において、
前記データ転送制御手段は、前記制御ブロック又は前記他の回路ブロックの全データのうち重要なデータのみの退避及び復帰を制御することを特徴とする半導体集積回路。
【請求項４】
請求項１又は２に記載の半導体集積回路において、
前記データ転送制御手段は、前記バックアップメモリへのデータの退避中及び当該バックアップメモリからのデータの復帰中は、前記制御ブロックの動作を停止させる機能を更に有することを特徴とする半導体集積回路。
【請求項５】
請求項１又は２に記載の半導体集積回路において、
前記データ転送制御手段は、ダイレクトメモリアクセス動作を制御するためのＤＭＡ制御部であることを特徴とする半導体集積回路。
【請求項６】
請求項１又は２に記載の半導体集積回路において、
前記暴走検知手段は、ウォッチドグタイマであることを特徴とする半導体集積回路。
【請求項７】
請求項１又は２に記載の半導体集積回路において、
前記バックアップメモリは、不揮発性メモリであることを特徴とする半導体集積回路。
【請求項８】
請求項１又は２に記載の半導体集積回路において、
前記バックアップメモリは、当該半導体集積回路の外付けメモリであることを特徴とする半導体集積回路。
【請求項９】
請求項１又は２に記載の半導体集積回路において、
前記データ転送制御手段の制御によりデータの復帰動作が実施されたことを前記制御ブロックへ伝えるための復帰フラグを更に備えたことを特徴とする半導体集積回路。
【請求項１０】
請求項１又は２に記載の半導体集積回路において、
前記バックアップメモリは、前記制御ブロックのバスとは異なる専用のバスを介して前記データ転送制御手段に接続され、前記制御ブロックは前記バックアップメモリへのアクセス権限を有しないことを特徴とする半導体集積回路。
【請求項１１】
請求項１又は２に記載の半導体集積回路において、
前記プログラムの暴走が検知された回数をカウントするためのイベントカウンタと、
前記イベントカウンタのカウント値が所定値に達した場合には、前記制御ブロックの動作を一定期間だけ停止させた後に再開させるためのタイマとを更に備えたことを特徴とする半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ストアードプログラム方式の制御ブロック、例えばプロセッサを備えた半導体集積回路に関するものである。
【０００２】
【従来の技術】
特開平６−１３１２１８号公報には、計算機システムの異常を検出してプロセッサ（ＣＰＵ）をリセットするＣＰＵ制御技術の１つとして、ウォッチドグタイマ（Ｗａｔｃｈ　Ｄｏｇ　Ｔｉｍｅｒ：ＷＤＴ）の利用技術が示されている。ＷＤＴは、ＣＰＵから定期的に出力されるカウンタリセット信号を監視し、プログラムの暴走によりカウンタリセット信号が所定の期間内に入力されなかった場合はタイムオーバー信号を出力するものである。このＷＤＴのタイムオーバー信号によりＣＰＵがリセットされて、正常な状態を回復できる。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来技術ではタイムオーバー信号によりＣＰＵにリセットをかけて初期状態に戻すため、初めからプログラムを実行し直す結果、途中までのデータが破棄されてしまうという問題があった。
【０００４】
本発明の目的は、プログラムの暴走が生じた場合でも当該プログラムの途中から正常に動作を再開できるようにすることにある。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る半導体集積回路は、ストアードプログラム方式の制御ブロックと、退避データを格納するためのバックアップメモリと、制御ブロックにおけるプログラムの暴走を検知するための暴走検知手段と、制御ブロックが正常に動作している時に当該制御ブロックのデータをバックアップメモリへ退避させ、かつプログラムの暴走が検知された場合にはバックアップメモリに退避されていたデータを制御ブロックへ復帰させるように制御するためのデータ転送制御手段とを備えることとしたものである。
【０００６】
データ記憶部を有する少なくとも１つの他の回路ブロックを更に備える場合には、前記データ転送制御手段は、制御ブロックが正常に動作している時に前記他の回路ブロックのデータをバックアップメモリへ退避させ、かつプログラムの暴走が検知された場合にはバックアップメモリに退避されていたデータを前記他の回路ブロックへ復帰させるように制御する機能を更に有することとする。
【０００７】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【０００８】
図１は、本発明に係る半導体集積回路の構成例を示している。図１において、１１はＣＰＵ、１２はＲＡＭ、１３は周辺回路、１４はバックアップメモリである。ＣＰＵ１１は、不図示のＲＯＭに格納されたプログラムに従って動作するストアードプログラム方式の制御ブロックである。ＲＡＭ１２は、ＣＰＵ１１の動作に必要なデータを記憶するためのメモリである。周辺回路１３は、シリアル通信、アナログ・デジタル変換等の各種機能を有する入出力部である。バックアップメモリ１４は、ＣＰＵ１１のプログラムカウンタとステータスレジスタを含む各種レジスタとが持つ重要なデータＤ１と、ＲＡＭ１２の全記憶データのうちの重要なデータＤ２と、周辺回路１３の各種入出力制御レジスタが持つ全データのうちの重要なデータＤ３とを退避するためのメモリである。これらＣＰＵ１１、ＲＡＭ１２、周辺回路１３及びバックアップメモリ１４は、ＣＰＵバス１６を介して互いに接続されている。
【０００９】
図１の半導体集積回路は、ダイレクトメモリアクセス動作を制御するためのＤＭＡ制御部２１と、ＷＤＴ（ウォッチドグタイマ）２２と、復帰フラグ１５とを更に備えている。
【００１０】
ＷＤＴ２２は、ＣＰＵ１１から定期的に出力されるカウンタリセット信号ＣＲを監視し、プログラムの暴走によりカウンタリセット信号ＣＲが所定の期間内に入力されなかった場合はタイムオーバー信号ＴＯを出力するものである。
【００１１】
ＤＭＡ制御部２１は、ＣＰＵ１１が正常に動作していてＷＤＴ２２にカウンタリセット信号ＣＲが与えられる毎に上記データＤ１、Ｄ２及びＤ３をバックアップメモリ１４へ退避させ、かつプログラムの暴走がＷＤＴ２２により検知されてタイムオーバー信号ＴＯが出力された場合にはバックアップメモリ１４に退避されていたデータをＣＰＵ１１、ＲＡＭ１２及び周辺回路１３へそれぞれ復帰させるように制御するためのデータ転送制御手段である。
【００１２】
図１中のＣ１はＣＰＵ１１用のリード／ライト信号、Ｃ２はＲＡＭ１２用のリード／ライト信号、Ｃ３は周辺回路１３用のリード／ライト信号、Ｃ４はバックアップメモリ１４用のリード／ライト信号である。例えば、ＣＰＵ１１のデータＤ１をバックアップメモリ１４へ退避させる場合には信号Ｃ１でリード動作を、信号Ｃ４でライト動作をそれぞれ指定し、バックアップメモリ１４に退避されていたデータをＣＰＵ１１へ復帰させる場合には信号Ｃ４でリード動作を、信号Ｃ１でライト動作をそれぞれ指定する。
【００１３】
復帰フラグ１５は、ＤＭＡ制御部２１の制御によりデータの復帰動作が実施されたことをＣＰＵ１１へ伝えるためのフラグである。Ｃ５は復帰フラグ１５用のライト信号であり、これにより復帰フラグ１５がセットされる。この復帰フラグ１５は、ＣＰＵ１１によるリードの際にリセットされる。
【００１４】
以上の構成を有する図１の半導体集積回路によれば、ＣＰＵ１１が正常に動作している時に当該半導体集積回路の最低限必要なデータＤ１、Ｄ２及びＤ３をバックアップメモリ１４へ退避させ、プログラムの暴走がＷＤＴ２２により検知された場合にはバックアップメモリ１４に退避されていたデータをそれぞれ復帰させることとしたので、外来ノイズ等に起因してプログラムの暴走が生じた場合でも当該プログラムの途中から正常に動作を再開することができる。つまり、リセット動作で正常な状態を回復するのではなく、正常動作を行っていた時点まで当該半導体集積回路の内部状態を戻すことができるのである。
【００１５】
しかも、最低限必要な重要データのみを退避・復帰することで、退避及び復帰に要する時間を削減することができ、かつバックアップメモリ１４の容量を小さくすることができる。
【００１６】
また、データの復帰動作が実施されたことをＣＰＵ１１へ伝えるための復帰フラグ１５を設けたので、ＣＰＵ１１が動作再開後に復帰フラグ１５をチェックすることで、プログラムの暴走が生じたことを認識することができる。したがって、この場合のために用意しておいた修復用プログラムを実行することで、外部からのデータ再取り込みや再計算を行うことにより、内部状態を修正する機会が得られる。
【００１７】
ただし、ＣＰＵ１１、ＲＡＭ１２及び周辺回路１３の各々の全データを退避及び復帰の対象としても構わない。この場合には当該半導体集積回路の正常な内部状態を完全に復元できるので、上記復帰フラグ１５は不要である。
【００１８】
なお、ＤＭＡ制御部２１は、バックアップメモリ１４へのデータの退避中及び当該バックアップメモリ１４からのデータの復帰中は、信号Ｃ１をＣＰＵ停止信号としてＣＰＵ１１へ与えることにより当該ＣＰＵ１１の動作を停止させることができる。これにより、データの退避・復帰中のプログラムの暴走による誤書き込みを防ぐことができるので、データの信頼性を高めることができる。
【００１９】
また、バックアップメモリ１４は不揮発性メモリであってよい。これにより、電源が切れた場合でもバックアップメモリ１４中のデータが保持されるため、電源回復後にプログラムの途中から動作を再開できて好都合である。データの退避及び復帰時にのみバックアップメモリ１４に電源を供給することとしても問題ない。また、バックアップメモリ１４は、当該半導体集積回路の外付けメモリであってもよい。
【００２０】
図２は、本発明に係る半導体集積回路の他の構成例を示している。図２によれば、バックアップメモリ１４は、ＣＰＵバス１６とは異なるバックアップメモリ専用のバス１７を介してＤＭＡ制御部２１に接続され、ＣＰＵ１１はバックアップメモリ１４へのアクセス権限を有しないものとされる。これにより、ＣＰＵ１１のプログラムが暴走したときに当該ＣＰＵ１１が誤ってバックアップメモリ１４中の退避データを書き換えてしまうことを防ぐ。その他の点は図１の構成と同様である。
【００２１】
図３は、図１及び図２の変形例に係る復帰制御部の構成例を示している。図３の復帰制御部は、イベントカウンタ３１と、タイマ３２とで構成される。イベントカウンタ３１は、タイムオーバー信号ＴＯの数をカウントすることにより、ＷＤＴ２２でプログラムの暴走が検知された回数をカウントするものである。このイベントカウンタ３１のカウント値が所定値に達してオーバーフローが生じた場合には、ＣＰＵ停止リクエスト信号ＳＡがＤＭＡ制御部２１及びタイマ３２に与えられる。タイマ３２は、このＣＰＵ停止リクエスト信号ＳＡを受けてから一定期間の後にＣＰＵ停止解除リクエスト信号ＳＢをＤＭＡ制御部２１へ与えるものである。ＤＭＡ制御部２１は、ＣＰＵ停止リクエスト信号ＳＡが与えられた場合には復帰動作終了後にＣＰＵ停止信号Ｃ１をアサートし、ＣＰＵ停止解除リクエスト信号ＳＢが与えられた場合にはＣＰＵ１１の動作を再開させるようにＣＰＵ停止信号Ｃ１をネゲートする。これにより、複数回のデータ復帰動作を実施してもプログラムの暴走が続く場合には、ＣＰＵ１１の動作を一定期間だけ強制的に停止させ、かつ暴走原因の消滅を待って動作が再開される。なお、イベントカウンタ３１及びタイマ３２は、ＣＰＵ１１の正常動作を示すカウンタリセット信号ＣＲによりそれぞれクリアされるようになっている。
【００２２】
なお、上記各例ではＷＤＴ２２に与えられるカウンタリセット信号ＣＲをデータ退避のタイミング信号として採用したが、ステータスレジスタ等の重要なレジスタの書き換え時、割り込み発生時、特定命令の実行時、ノイズ検出時、シリアル通信における多数のエラー検出時等の種々のタイミングでデータ退避を行うようにすることもできる。ここに言う割り込みの例としては、タイマ割り込み、アナログ・デジタル変換時に発生する割り込み、他のマイクロコンピュータからの外部割り込み等を挙げることができる。
【００２３】
【発明の効果】
以上説明してきたとおり、本発明によれば、ストアードプログラム方式の制御ブロックが正常に動作している時に当該制御ブロックのデータをバックアップメモリへ退避させ、かつプログラムの暴走が検知された場合にはバックアップメモリに退避されていたデータを当該制御ブロックへ復帰させることとしたので、プログラムの暴走が生じた場合でも当該プログラムの途中から正常に動作を再開することができる。
【図面の簡単な説明】
【図１】本発明に係る半導体集積回路の構成例を示すブロック図である。
【図２】本発明に係る半導体集積回路の他の構成例を示すブロック図である。
【図３】図１及び図２の変形例に係る復帰制御部の構成例を示すブロック図である。
【符号の説明】
１１　ＣＰＵ（制御ブロック）
１２　ＲＡＭ（他の回路ブロック）
１３　周辺回路（他の回路ブロック）
１４　バックアップメモリ
１５　復帰フラグ
１６　ＣＰＵバス
１７　バックアップメモリ専用バス
２１　ＤＭＡ制御部（データ転送制御手段）
２２　ＷＤＴ（ウォッチドグタイマ；暴走検知手段）
３１　イベントカウンタ
３２　タイマ
Ｃ１　ＣＰＵ用リード／ライト／停止信号
Ｃ２　ＲＡＭ用リード／ライト信号
Ｃ３　周辺回路用リード／ライト信号
Ｃ４　バックアップメモリ用リード／ライト信号
Ｃ５　復帰フラグ用ライト信号
ＣＲ　カウンタリセット信号
ＳＡ　ＣＰＵ停止リクエスト信号
ＳＢ　ＣＰＵ停止解除リクエスト信号
ＴＯ　タイムオーバー信号
【図１】
2004086451.tif 000003
【図２】
2004086451.tif 000004
【図３】
2004086451.tif 000005