(57)【特許請求の範囲】
【請求項１】
任意にデータの読み書きが可能な汎用レジスタを、ゼロ値データ読出専用のゼロレジスタとして使用し、該ゼロレジスタを用いた命令を実行するマイクロコンピュータの制御方法であって、
予め決めれた実行タイミング毎に、前記ゼロレジスタからの読出値に異常があるか否かを繰り返し検査し、該検査の結果、前記読出値に異常があれば、前記マイクロコンピュータによる前記ゼロレジスタを用いた通常処理の実行を禁止又は該マイクロコンピュータを再起動することを特徴とするマイクロコンピュータの制御方法。
【請求項２】
前記マイクロコンピュータが複数の前記通常処理を順番に実行する場合、各々の前記通常処理の開始前を前記実行タイミングとすることを特徴とする請求項１記載のマイクロコンピュータの制御方法。
【請求項３】
前記検査の前に、前記ゼロレジスタの再設定を行うことを特徴とする請求項１又は請求項２記載のマイクロコンピュータの制御方法。
【請求項４】
前記検査の結果、前記読出値に異常がある場合、前記ゼロレジスタの再設定及び検査を繰り返す待機処理を実行することにより前記通常処理の実行を禁止し、前記待機処理によって前記読出値の異常が解消されると、前記待機処理を終了することにより前記通常処理の禁止を解除することを特徴とする請求項１乃至請求項３いずれか記載のマイクロコンピュータの制御方法。
【請求項５】
任意にデータの読み前書きが可能な汎用レジスタを、ゼロ値データ読出用のゼロレジスタとして使用し、該ゼロレジスタを用いた命令を実行するマイクロコンピュータの監視装置であって、
前記ゼロレジスタからの読出値が正常であるか否かを検査するゼロレジスタ検査手段と、
該ゼロレジスタ検査手段による検査の結果、前記読出値に異常があれば、前記マイクロコンピュータによるゼロレジスタを用いた通常処理を禁止又は該マイクロコンピュータを再起動する異常処理手段と、
を備えることを特徴とするマイクロコンピュータの異常監視装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゼロ値データ読出専用のゼロレジスタを備えたマイクロコンピュータの制御方法及び異常監視装置に関する。
【０００２】
【従来の技術】
従来より、ＲＩＳＣ型のマイクロコンピュータでは、パイプライン処理を効率よく実行するため、１サイクルでの処理が可能な簡単な命令セットしか用意されておらず、しかも、各命令はすべて同じ命令長を有するようにされている。このため、例えば、命令の記述に用いるアドレッシングモードにおいて多大なビット数を要する即値データの使用が制限されていたり、ハードウェアを簡素化するために他の命令で代用可能な命令が省略されていたりする。
【０００３】
具体的には、メモリへのアクセス命令では、実効アドレスを指定する時に、アドレッシングモードとして、実効アドレスそのものが格納されたレジスタを指定するレジスタ間接や、基準となるアドレスが格納されたレジスタとビット数の制限された即値データであるディスプレースメントとにより実効アドレスを指定するディスプレースメント付きレジスタ間接の使用は可能であるが、即値データのみでの実効アドレスの指定ができなかったり、また、メモリへの書込命令では、オペランドを指定する時に、オペランドが格納されたレジスタを指定するレジスタ直接の使用は可能であるが、即値データでのオペランドの指定はできないようにされている。更に、レジスタ間のデータ転送は、転送元レジスタの格納値を被加算値とし、転送先レジスタに加算結果を格納するよう指定して、加算命令にてゼロ加算を行う操作にて代用可能なため、このようなレジスタ間のデータ転送命令等も省略されている。
【０００４】
このように、先頭番地（基準アドレス）が０であるメモリへのディスプレースメント付きレジスタ間接を用いたアクセス、メモリ内容のクリア、レジスタ間のデータ転送を行う場合等、ＲＩＳＣ型のマイクロコンピュータでは、レジスタにゼロ値データを設定する処理が頻繁に表れるため、格納値をゼロに固定してゼロ値データ読出専用に使用されるいわゆるゼロレジスタを設け、レジスタにゼロ値データを設定する処理を省略することにより、処理を高速化することが行われている。
【０００５】
なお、ゼロレジスタには、汎用レジスタの一つをゼロレジスタとして使用する場合と、ハードウェアにて格納値をゼロに固定した特別なレジスタを使用する場合とがある。そして、汎用レジスタを用いたゼロレジスタの場合、ゼロレジスタへのゼロ値データの設定は、装置立ち上げ後の初期化時に行われていた。
【０００６】
【発明が解決しようとする課題】
しかし、ゼロレジスタにハードウェア上の不具合が生じた場合、また、特に汎用レジスタを用いたゼロレジスタでは、ソフトウェア上の不具合や外来ノイズなどによりゼロレジスタの値が書き変わってしまった場合など、何等かの理由でゼロレジスタからの読出値がゼロ以外の値に代わってしまうと、以後、メモリに対して誤った番地へのアクセスが行われたり、メモリのクリアやレジスタ間のデータ転送を行った際に、メモリやレジスタに設定されるデータに誤りが生じてしまい、その結果、マイクロコンピュータが不正な処理を行ってしまうという問題があった。
【０００７】
本発明は、上記問題点を解決するために、ゼロレジスタの読出値の異常によりマイクロコンピュータにて不正な処理が行われることを確実に防止するマイクロコンピュータの制御方法及び異常監視装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するための発明である請求項１記載の発明は、任意にデータの読み書きが可能な汎用レジスタを、ゼロ値データ読出専用のゼロレジスタとして使用し、該ゼロレジスタを用いた命令を実行するマイクロコンピュータの制御方法であって、予め決めれた実行タイミング毎にゼロレジスタからの読出値に異常があるか否かを繰り返し検査し、その検査の結果、読出値に異常があれば、マイクロコンピュータによるゼロレジスタを用いた通常処理の実行を禁止又はマイクロコンピュータを再起動することを特徴とする。
【０００９】
従って、本発明のマイクロコンピュータの制御方法によれば、ゼロレジスタからの読出値に異常がある場合、マイクロコンピュータにて通常処理が実行されないため、ゼロレジスタの読出値の異常に基づく不正な処理結果を発生させてしまうことがなく、その結果、このようなゼロレジスタを備えるマイクロコンピュータにて構成された装置の信頼性を向上させることができる。
【００１０】
そして、請求項２記載のように、マイクロコンピュータが複数の通常処理を順番に実行する場合、各々の通常処理の開始前を実行タイミングとして、上述の検査を各処理毎に必ず行うことが望ましい。
【００１１】
また、本発明では、請求項３記載のように、上述の検査の前にゼロレジスタの再設定を行ったり、請求項４記載のように、検査の結果、読出値に異常がある場合、ゼロレジスタの再設定及び検査を繰り返す待機処理を実行することで通常処理の実行を禁止し、待機処理によって読出値の異常が解消されると、待機処理を終了することで通常処理の禁止を解除するようにしてもよい。
【００１２】
つまり、汎用レジスタを用いたゼロレジスタでは、外来ノイズ等の影響によるゼロレジスタ設定値の書き変わりに対しては、このようなゼロレジスタの再設定により、マイクロプロセッサのリセットなどを行うことなく、正常な状態に簡単に復帰することができる。
【００１３】
次に、請求項５記載の発明は、任意にデータの読み前書きが可能な汎用レジスタを、ゼロ値データ読出用のゼロレジスタとして使用し、該ゼロレジスタを用いた命令を実行するマイクロコンピュータの監視装置であって、ゼロレジスタ検査手段が、ゼロレジスタからの読出値が正常であるか否かを検査し、検査の結果、読出値に異常あれば、異常処理手段が、マイクロコンピュータによるゼロレジスタを用いた通常処理を禁止するか、又はマイクロコンピュータを再起動することを特徴とする。
【００１４】
これらゼロレジスタ検査手段や異常処理手段は、ハードウェアを増加させないために、マイクロコンピュータが実行する処理として実現することが望ましいが、ハードウェアにて実現した場合には、ソフトウェアにて実現する場合とは異なり、ゼロレジスタを常時検査することが可能であるため、ゼロレジスタの異常に対してより速やかに対応することができる。
【００１５】
【発明の実施の形態】
以下に本発明の実施例を図面と共に説明する。
図１（ａ）は、本発明が適用されたマイクロコンピュータの概略構成を表すブロック図である。
【００１６】
図１（ａ）に示すように、本実施形態のマイクロコンピュータ１０は、ＲＩＳＣタイプのＣＰＵ１１を中心に構成され、ＲＯＭ１２，ＲＡＭ１３，各種周辺回路１４が内蔵された周知の１チップマイコンからなる。
なお、周辺回路１４には、いわゆるウォッチドッグタイマーとして使用され、予め設定された監視期間内にリセット命令が入力されずタイムアウトするとアクティブとなるＷＤＴ信号を出力するタイマー（以下「ＷＤタイマー」という）１４ａと、ＷＤＴ信号のアクティブへの変化を検出すると、マイクロコンピュータ１０をハードウェアリセットするためのＲＳＴ信号を所定期間の間アクティブにするリセット信号生成回路１４ｂとが少なくとも含まれている。
【００１７】
そして、ＣＰＵ１１は、図１（ｂ）に示すように、３２ビット幅の１６本の汎用レジスタＲ０〜Ｒ１５を備えており、このうち、レジスタＲ１３〜Ｒ１５は、使用するコンパイラにより予め用途が決められている。即ち、ここでは、レジスタＲ１３が、ゼロ値データ読出専用に用いられるゼロレジスタとして使用される他、レジスタＲ１４はリンクポインタ、レジスタＲ１５はスタックポインタとして使用される。
【００１８】
なお、ゼロレジスタは、当該マイクロコンピュータ１０への電源投入後に実行される初期化処理の中でゼロ値データ（００００００００Ｈ）が書き込まれ、以後、ＲＡＭ１３の内容をクリアする場合の書込データや、ディスプレイスメント付きレジスタ間接のアドレッシングモードを用いてＲＡＭ１３（先頭が０Ｈ番地）をアクセスする際の基準アドレス等として使用される。
【００１９】
ここで、ＣＰＵ１１は、ＲＯＭ１２に格納されたプログラムを実行することにより、様々な機能を実現するが、プログラムは、実現する機能毎に複数のモジュールに分かれており、各モジュールは、順番に、或いは予め設定された起動条件が揃うと起動されるものとする。
【００２０】
そして、各モジュールは、その先頭にて、後述するゼロレジスタ検査処理を必ず実行するように構成されていると共に、ゼロレジスタ検査処理後に実行する当該モジュールのメイン処理は、プログラムが正常に実行されていればＷＤタイマー１４ａがタイムアウトしないように、ＷＤタイマー１４ａに対するリセット命令が適宜挿入されたものとなっている。
【００２１】
次に、各モジュールの先頭にて実行されるゼロレジスタ検査処理の内容を、図２に示すフローチャートに沿って説明する。
図２に示すように、本処理が起動されると、まずＳ１１０では、ゼロレジスタの再設定、即ち、ゼロレジスタへのゼロ値データの書込を行い、続くＳ１２０では、ゼロレジスタから、その設定値ＤＺの読出を行う。
【００２２】
そして、Ｓ１３０では、ゼロレジスタからの読出値ＤＺが、先に書き込んだゼロ値データと一致するか否かを検査し、一致していれば、ゼロレジスタの読出値ＤＺは正常であるものとして、本処理を終了する。
一方、Ｓ１３０にて、ゼロレジスタからの読出値ＤＺがゼロ値データと一致していなければ、Ｓ１１０に戻り、ゼロレジスタの再設定、ゼロレジスタの設定値の読出、読出値ＤＺの検査を繰り返し実行する。このＳ１１０〜Ｓ１３０を繰り返す処理が本発明における待機処理に相当する。そして、待機処理中に繰り返し行われるゼロレジスタの再設定によりゼロレジスタの読出値ＤＺが正常なものに復帰すれば、本処理を終了する。
【００２３】
つまり、本処理を実行することにより、本処理が組み込まれたモジュールでは、当該モジュールのメイン処理は、必ずゼロレジスタが正しく設定された状態で開始されることになる。
また、ゼロレジスタがゼロ値データと一致しない場合には、Ｓ１１０〜Ｓ１３０のループを抜け出すことができないため、当該モジュールのメイン処理が実行されないだけでなく、メイン処理に挿入された、ＷＤタイマー１４ａに対するリセット命令が実行されないため、この状態が監視期間以上継続すると、ＷＤＴ信号がアクティブとなり、その結果、マイクロコンピュータ１０はハードリセットされることになる。
【００２４】
なお、本実施形態において、ゼロレジスタ検査処理が本発明におけるゼロレジスタ検査手段に相当し、ゼロレジスタ検査処理，及びＷＤタイマー１４ａ，リセット信号生成回路１４ｂが異常処理手段に相当する。
以上説明したように、本実施形態のマイクロコンピュータ１０においては、ゼロレジスタの読出値に異常がある（ゼロ値データと一致しない）場合には、メイン処理を実行しないようにされているので、メイン処理にてゼロレジスタの読出値の異常に基づく不正な処理結果を発生させてしまうことがなく、当該マイクロコンピュータ１０を用いて構成された装置の信頼性を向上させることができる。
【００２５】
また、ゼロレジスタの再設定を行っても、読出値が正常なものに復帰しない場合には、ハードウェアリセットが行われるようにされているため、外来ノイズ等によるゼロレジスタの設定値のビット化けや、ハードウェアの故障以外の何等かの原因で異常が生じている場合に、これを解消できる可能性がある。
【００２６】
なお、上記実施形態では、ゼロ値データの読出値がゼロ値データと一致しない場合（Ｓ１３０−ＮＯ）、Ｓ１１０に戻ってゼロレジスタの再設定、及び再設定後の読出値の検査を繰り返し行っているが、図３（ａ）に示すように、Ｓ１１０に戻る代わりに、Ｓ１４０に移行して異常処理手段としての異常処理を実行するように構成してもよい。
【００２７】
なお、この異常処理では、ソフトウェアリッセットを行ってもよいし、異常である旨を表示してＣＰＵの動作を停止させるようにしてもよい。但し、ＣＰＵの動作を停止させた場合、結局は、ＷＤタイマー１４ａがタイムアウトすることによりハードウェアリセットが行われることになる。
【００２８】
また、上記実施形態では、ゼロレジスタとして、汎用レジスタの一つを使用しているが、図３（ｂ）に示すように、ハードウェアにより格納値がゼロに固定された専用のゼロレジスタを、汎用レジスタとは別途設けてもよい。
但し、この場合、ゼロレジスタの再設定を行うことができないため、ゼロレジスタ検査処理は、図２及び図３（ａ）に示すフローチャートから、Ｓ１１０を省略したものとすればよい。
【図面の簡単な説明】
【図１】  実施形態のマイクロコンピュータの概略構成を表すブロック図、及びゼロレジスタについての説明図である。
【図２】  ゼロレジスタ検査処理の内容を表すフローチャートである。
【図３】  変形例についての説明を補足するための説明図である。
【符号の説明】
１０…マイクロコンピュータ    １１…ＣＰＵ    １２…ＲＯＭ
１３…ＲＡＭ      １４…周辺回路      １４ａ…ＷＤタイマー
１４ｂ…リセット信号生成回路    Ｒ０〜Ｒ１５…汎用レジスタ
【図１】
0004543505.tif 000002
【図２】
0004543505.tif 000003
【図３】
0004543505.tif 000004