(57)【要約】【課題】プログラムの変更に対して動作検査部の再構成を必要とせず、簡易な回路と少ないメモリ容量で、タスク起動順の異常をすばやく検出できるプロセッサ動作検査システムを提供することを目的とする。【解決手段】プロセッサ１は、演算部１２と、プログラムを記憶する記憶部１２と、プログラムの実行状態を通知する命令に対応するビット信号を前記動作検査部に送信するデータ送信回路１３と、を備え、動作検査部２は、遷移動作判定回路２ａと、ループ処理判定回路２ｂとを備え、予め、遷移元となるタスクを識別するＩＤを付した開始ＩＤ命令と、タスクの動作の終了を識別する終了ＩＤ命令と、当該タスクがループ処理を実行する場合には、そのループ処理回数の最大値を通知するループ命令と、を備え、遷移動作判定回路は、開始ＩＤ命令と終了ＩＤ命令とからプログラムのタスクの遷移動作の良否を、ループ処理判定回路は、ループ処理回数の異常を判定する。【選択図】  図１
2012150661.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとその動作を検査する動作検査部とを備えるプロセッサ動作検査システムであって、
前記プロセッサは、前記プログラムを実行する演算部と、複数のタスクから構成される前記プログラムを記憶する記憶部と、前記演算部が前記プログラムの実行状態を通知する命令に対応するビット信号を前記動作検査部に送信するデータ送信回路と、を備え、
前記動作検査部は、前記プログラムの遷移状態を検査する遷移動作判定回路と、ループ処理のループ回数を判定するループ処理判定回路とを備え、
夫々の前記タスクには、予め、当該タスクの先頭アドレスに遷移元となる前記タスクを識別するＩＤを付した開始ＩＤ命令と、当該タスクの最終アドレスに当該タスクの動作の終了を識別する終了ＩＤ命令と、当該タスクがループ処理を実行する場合には、そのループ処理回数の最大値を通知するループ命令と、を備え、
前記演算部、または前記データ送信回路は、前記開始ＩＤ命令に対応する前記開始ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが起動するときの遷移元となるタスクとその他のタスクとを識別できる状態信号とし、前記終了ＩＤ命令に対応する前記終了ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが終了するときのその他のタスクが起動していないことを識別できる状態信号とし、また、前記ループ命令に対応する最大値信号とを夫々生成して、前記データ送信回路から前記動作検査部に送信し、
前記遷移動作判定回路は、動作を終了した第１の終了ＩＤビット信号と次に起動された前記タスクの第２の開始ＩＤビット信号との一致信号と、前記一致信号と前記第２の開始ＩＤビット信号と、の排他的論理和を求めて前記プログラムのタスクの遷移動作の良否を判定し、
前記ループ処理判定回路は、動作開始した第１の開始ＩＤビット信号と第１の終了ＩＤビット信号との一致信号をインクリメント信号としてカウントし、当該カウント値と前記最大値とを比較して、ループ処理回数の異常を判定し、
プロセッサがプログラムの実行中に、タスクの遷移動作の異常を検出するようにしたことを特徴とするプロセッサ動作検査システム。
【請求項２】
前記遷移動作判定回路は、前記終了ＩＤビット信号と開始ＩＤビット信号とを一次記憶する終了ＩＤレジスタと開始ＩＤレジスタと、
前記終了ＩＤレジスタと前記開始ＩＤレジスタの出力の論理の一致を、前記タスクの前記開始ＩＤビット信号を受信したタイミングで求める第１のＡＮＤ回路と、
前記ＡＮＤ回路の出力と、前記第開始ＩＤビット信号との排他的論理和を求めるＥＸＯＲ回路と、
を備える請求項１に記載のプロセッサ動作検査システム。
【請求項３】
前記ループ処理判定回路は、前記終了ＩＤビット信号、前記開始ＩＤビット信号、及び最大値信号を一次記憶する終了ＩＤレジスタと、開始ＩＤレジスタと、最大値レジスタとを備え、
前記終了ＩＤレジスタと前記終了レジスタとの出力との一致信号を、前記終了ＩＤビット信号を受信するごとに求める第２のＡＮＤ回路と、
前記ＡＮＤ回路の出力をインクリメント信号としてカウントするカウンタと、
前記カウンタのカウント値と前記最大値とを比較する比較回路と、
を備えるプロセッサ動作検査システム。
【請求項４】
前記第２のＡＮＤ回路は、前記前記第１のＡＮＤ回路の出力から前記インクリメント信号を生成するようにした請求項３に記載のプロセッサ動作検査システム。
【請求項５】
プロセッサとその動作を検査する動作検査部とを備えるプロセッサの動作検査方法であって、
プログラムを構成する全タスクについて、予め、当該タスクの先頭アドレスに遷移元となる前記タスクを識別するＩＤを付した開始ＩＤ命令と、当該タスクの最終アドレスに当該タスクの動作の終了を識別する終了ＩＤ命令と、当該タスクがループ処理を実行する場合には、そのループ処理回数の最大値を通知するループ命令と設定しておくステップと、
前記開始ＩＤ命令に対応する前記開始ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが起動するときの遷移元となるタスクとその他のタスクとを識別できる状態信号とし、前記終了ＩＤ命令に対応する前記終了ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが終了するときのその他のタスクが起動していないことを識別できる状態信号とし、また、前記ループ命令に対応する最大値信号とを夫々生成するステップと、
動作を終了した第１の終了ＩＤビット信号と次に起動された前記タスクの第２の開始ＩＤビット信号との一致信号と、前記一致信号と前記第２の開始ＩＤビット信号と、の排他的論理和を求めて前記プログラムのタスクの遷移動作の良否を判定するステップと、
前記ループ処理判定回路は、動作開始した第１の開始ＩＤビット信号と第１の終了ＩＤビット信号との一致信号をインクリメント信号としてカウントし、当該カウント値と前記最大値とを比較して、ループ処理回数の異常を判定するステップと、
を備えるプロセッサの動作検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサが実行するプログラムの動作状態を検査するプロセッサ検査システム、及びその検査方法に関する。
【背景技術】
【０００２】
プロセッサの故障検出は、一般に、ウォッチドッグタイマを使用してその動作の異常を監視しているが、プロセッサの故障には、プログラムのバグや、改竄、及びソフトエラーなどが原因となるもの以外に、プロセッサの種々の回路構成要素の故障が原因となるものがある。
【０００３】
近年、高度の安全性を要求される制御装置等の安全装置においては、プロセッサを備える装置が正常に動作していることを検証できる動作監視機能が要求されている。
【０００４】
そこで、システムの稼働中にプロセッサが実行するプログラムの動作順序を監視し、プロセッサの停止や誤った動作を検出するため、プロセッサの外部の動作検査装置にステートマシンを構成し、状態の遷移を逐次検査する方法が開示されている。（例えば特許文献１、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４３５９６３２号公報
【特許文献２】特開２０１０−９２９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されたマイクロプロセッサ動作検査システムは、動作検査回路には、予め、ＦＰＧＡ（Field Programmable Gate Array）のような再構成可能なハードウェアによって実行されるプログラムを模擬する回路をステートマシンとして組み込んで、プロセッサが本来取るべき新たな状態を算出しておく必要があるため、動作検査回路の構成が複雑になる問題がある。
【０００７】
また、プログラムが変更されるごとに模擬する回路を変更する必要があるので、プログラムの変更が予想されるシステムにおいては、その保守が複雑で手間が掛かる問題がある。
【０００８】
また、特許文献２に開示されたソフトウェア動作監視装置においては、起動されるタスクに自タスクとその前に実行されるタスクを特定する情報が含まれている識別情報ＩＤをタスクのアドレスに対応付けして付し、今回起動されたタスクのＩＤとその前に起動された前回タスクのＩＤに基づいて、タスクの起動順序が正常であるか否かをハードウェアで監視し、監視結果の情報をログ情報として時系列に記憶する構成としているので、複雑な回路構成となる。
【０００９】
さらに、ソフトウェアの実行状態の異常は、ウォッチドッグタイマで判定し、ウォッチドッグタイマがタイムアウトを検出すると記憶したログ情報を記録部に退避させる様に構成しているのでメモリ容量も大きくなる。
【００１０】
したがって、タスクの遷移方法によってはＩＤが大きくなり実行ソフトが遅れる可能性や、異常を検知してからシステムを停止するまでに時間が掛かる問題がある。
【００１１】
安全性と信頼性が要求されるプロセッサを用いた安全制御システムにおいては、プログラムの動作の異常の検出が速く、プログラムの動作の正当性を故障の少ない回路で構成することが望まれるが、特許文献２の構成の場合、複雑な回路と大きなメモリ容量が必要となる問題が有る。
【００１２】
本発明は上述した課題を解決するためになされたものであり、プログラムの変更に対して動作検査部の再構成を必要とせず、簡易な回路と少ないメモリ容量で、プロセッサのタスク起動順の異常をすばやく検出できるプロセッサ動作検査システム、及びその検査方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明によるプロセッサ動作検査システムは、プロセッサとその動作を検査する動作検査部とを備えるプロセッサ動作検査システムであって、前記プロセッサは、前記プログラムを実行する演算部と、複数のタスクから構成される前記プログラムを記憶する記憶部と、前記演算部が前記プログラムの実行状態を通知する命令に対応するビット信号を前記動作検査部に送信するデータ送信回路と、を備え、前記動作検査部は、前記プログラムの遷移状態を検査する遷移動作判定回路と、ループ処理のループ回数を判定するループ処理判定回路とを備え、夫々の前記タスクには、予め、当該タスクの先頭アドレスに遷移元となる前記タスクを識別するＩＤを付した開始ＩＤ命令と、当該タスクの最終アドレスに当該タスクの動作の終了を識別する終了ＩＤ命令と、当該タスクがループ処理を実行する場合には、そのループ処理回数の最大値を通知するループ命令と、を備え、前記演算部、または前記データ送信回路は、前記開始ＩＤ命令に対応する前記開始ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが起動するときの遷移元となるタスクとその他のタスクとを識別できる状態信号とし、前記終了ＩＤ命令に対応する前記終了ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが終了するときのその他のタスクが起動していないことを識別できる状態信号とし、また、前記ループ命令に対応する最大値信号とを夫々生成して、前記データ送信回路から前記動作検査部に送信し、前記遷移動作判定回路は、動作を終了した第１の終了ＩＤビット信号と次に起動された前記タスクの第２の開始ＩＤビット信号との一致信号と、前記一致信号と前記第２の開始ＩＤビット信号と、の排他的論理和を求めて前記プログラムのタスクの遷移動作の良否を判定し、前記ループ処理判定回路は、動作開始した第１の開始ＩＤビット信号と第１の終了ＩＤビット信号との一致信号をインクリメント信号としてカウントし、当該カウント値と前記最大値とを比較して、ループ処理回数の異常を判定し、プロセッサがプログラムの実行中に、タスクの遷移動作の異常を検出するようにしたことを特徴とする。
【００１４】
上記目的を達成するために、本発明によるプロセッサ動作検査システムの検査方法は、プロセッサとその動作を検査する動作検査部とを備えるプロセッサの動作検査方法であって、プログラムを構成する全タスクについて、予め、当該タスクの先頭アドレスに遷移元となる前記タスクを識別するＩＤを付した開始ＩＤ命令と、当該タスクの最終アドレスに当該タスクの動作の終了を識別する終了ＩＤ命令と、当該タスクがループ処理を実行する場合には、そのループ処理回数の最大値を通知するループ命令と設定しておくステップと、前記開始ＩＤ命令に対応する前記開始ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが起動するときの遷移元となるタスクとその他のタスクとを識別できる状態信号とし、前記終了ＩＤ命令に対応する前記終了ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが終了するときのその他のタスクが起動していないことを識別できる状態信号とし、また、前記ループ命令に対応する最大値信号とを夫々生成するステップと、動作を終了した第１の終了ＩＤビット信号と次に起動された前記タスクの第２の開始ＩＤビット信号との一致信号と、前記一致信号と前記第２の開始ＩＤビット信号と、の排他的論理和を求めて前記プログラムのタスクの遷移動作の良否を判定するステップと、前記ループ処理判定回路は、動作開始した第１の開始ＩＤビット信号と第１の終了ＩＤビット信号との一致信号をインクリメント信号としてカウントし、当該カウント値と前記最大値とを比較して、ループ処理回数の異常を判定するステップと、を備える。
【発明の効果】
【００１５】
本発明によれば、プログラムの変更に対して動作検査部の再構成を必要とせず、簡易な回路と少ないメモリ容量で、プロセッサのタスク起動順の異常をすばやく検出できるプロセッサ動作検査システム、及びその検査方法を提供することを目的とする。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施例１のプロセッサ動作検査システムの構成図。
【図２】複数のタスクからなるプログラムの例。
【図３】本発明のタスクの構成と付与する開始ＩＤ命令、終了ＩＤ命令と、対応する開始ＩＤビット信号、終了ＩＤビット信号を説明する図。
【図４】遷移動作判定回路の回路構成図。
【図５】遷移動作判定回路の動作を説明する図。
【図６】ループ処理判定回路の動作を説明する図。
【図７】本発明の実施例２のプロセッサ動作検査システムの構成図。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本実施例について説明する。
【実施例１】
【００１８】
以下、図１乃至図６を参照して実施例１を説明する。先ず、図１を参照して、本実施例の構成について説明する。ここで言うプロセッサとは、コンピュータなどの中心的な処理装置であるＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）を総称したもので、夫々の実装形態は問わない。
【００１９】
プロセッサ動作検査システム１００は、プロセッサ１と、プロセッサ１の動作を検査する動作検査部２とを備える。
【００２０】
プロセッサ１は、プログラムを実行する演算部１２と、複数のタスクから構成されるプログラムを記憶する記憶部１１と、演算部１２がプログラムの実行状態を通知する命令に対応するビット信号を動作検査部２に送信するデータ送信回路１３とを備える。
【００２１】
動作検査部２は、プログラムの遷移状態を検査する遷移動作判定回路２ａと、ループ処理のループ回数の異常を判定するループ処理判定回路２ｂとを備る。
【００２２】
次に、各部の詳細構成について説明する。先ず、対象とするプログラムのタスク構成を図２、図３を参照して説明する。図２はタスク（ＴａｓｋＡ〜ＴａｓｋＤ）の起動順序の１例を示す説明図である。また、図３は、これらの起動順序に基づいてタスクに付す開始ＩＤ命令、開始ＩＤ命令に対応する開始ＩＤビット信号、終了ＩＤ命令、及びこの終了ＩＤ命令に対応する終了ＩＤビット信号を示す説明図である。
【００２３】
図３（ａ）に示すように、タスクＡには、その先頭アドレスに開始ＩＤ命令を付し、また、その開始ＩＤ命令に対応する開始ＩＤビット信号を、その遷移元タスクがどこかを識別して示すもので、タスクＡ→０、タスクＢ→０、タスクＣ→０、タスクＤ→１として、タスクＡ〜Ｄに対応して「０００１」のように生成し、データ送信回路１３から遷移動作判定回路２ａに送信する。
【００２４】
このビット信号「０００１」は、タスクＡの遷移元がタスクＤであることを示す。
【００２５】
また、複数のタスクが遷移元となる場合には、例えば、タスクＣの場合には、「１０１０」とし、その遷移元がタスクＡ，及び自タスクＣであることを示す。
【００２６】
また、ループ処理となっているタスクＣの場合、図６（ａ）に示すように、そのルーム回数の最大値を自タスクＣ内変数として、予め、記載しておき、データ送信回路１３からその値をループ処理判定回路２ｂに送る。
【００２７】
即ち、夫々のタスクには、予め、当該タスクの先頭アドレスに遷移元となるタスクを識別するＩＤを付した開始ＩＤ命令と、当該タスクの最終アドレスに当該タスクの動作の終了を識別する終了ＩＤ命令と、当該タスクがループ処理を実行する場合には、そのループ処理回数の最大値を通知するループ命令と、を備えておき、演算部１２、または前記データ送信回路１３は、開始ＩＤ命令に対応する開始ＩＤビット信号として、プログラムを構成する全タスクについて、自タスクが起動するときの遷移元となるタスクとその他のタスクとを識別できる状態信号とし、終了ＩＤ命令に対応する前記終了ＩＤビット信号は、前記プログラムを構成する全タスクについて、自タスクが終了するときのその他のタスクが起動していないことを識別できる状態信号とし、また、ループ命令に対応する最大値信号とを夫々生成して、データ送信回路１３から動作検査部２に送信する。
【００２８】
次に、図１及び図４を参照して、遷移動作判定回路２の詳細構成について説明する。遷移動作判定回路２は、終了ＩＤビット信号と開始ＩＤビット信号とを一次記憶する終了ＩＤレジスタ２１と開始ＩＤレジスタ２２と、図４に示すように、終了ＩＤレジスタ２２と開始ＩＤレジスタ２１の出力の論理の一致を、タスクの開始ＩＤビット信号を受信したタイミングで求める第１のＡＮＤ回路２３ａと、ＡＮＤ回路２３ａの出力と前記第開始ＩＤビット信号との排他的論理和を求めるＥＸＯＲ回路２３ｂと、を備える。
【００２９】
次に、このように構成された、遷移動作判定回路２ａの動作について、図２及び図５を参照して説明する。予め設定された遷移動作を記憶した開始ＩＤ命令及び終了ＩＤ命令を備える図２のプログラムに対して、タスク図５に示すように、タスクＡ→タスクＣ→タスクＤ→タスクＢの遷移動作があった場合の判定回路２３の動作について説明する。
【００３０】
先ず、ＴａｓｋＡの開始ＩＤレジスタの初期値は、予め設定された「０００１」が書き込まれる。そして、タスクＡからタスクＣに遷移した開始ＩＤレジスタの信号を受信したタイミングで、タスクＡの終了レジスタ「１０００」と、タスクＣの開始ＩＤレジスタ「１０１０」の、夫々のタスクに対応するビット信号に対してＡＮＤ回路２３ａとＥＸＯＲ回路２３ｂで論理判定し、その出力が「００００」となることで正常と判定される。
【００３１】
ところが、ＴａｓｋＤからＴａｓｋＢに遷移した場合、ＥＸＯＲ回路２３ｂの出力は、「０００１」となり、ＴａｓｋＤの異常と判定される。
【００３２】
即ち、本実施例によれば、遷移元（開始状態）は複数あっても、ＴａｓｋＣからＴａｓｋＤに遷移する場合に示すように、その遷移動作の異常が予め設定されたビット情報で開始ＩＤレジスタに書き込まれた後、瞬時に判定できる。
【００３３】
次に、ループ判定処理２ｂの構成について、図６を参照して説明する。この動作原理は、タスクのループ処理は予め設定されたループ回数以下で処理されたか否かは、開始ＩＤレジスタと開始終了レジスタに書き込まれた夫々のビット信号の論理の一致をインクリメント信号としてカウントし、当該タスクのカウント値と当該タスクから最大値レジスタに書き込まれたループ最大値とを当該タスクの終了ＩＤビット信号を受信したタイミングで比較して判定する。
【００３４】
開始ＩＤレジスタと開始終了レジスタに書き込まれた夫々のビット信号の論理の一致をループ回数のインクリメント信号とし、ここでは、遷移動作判定回路２ａの判定回路２３に備えるＡＮＤ回路２３ａの出力を分岐して、カウンタ２５に取り込みカウントする。そして、このカウンタ２５の出力と、最大値レジスタ２４に書き込まれた最大値とを、比較回路２６で比較して、ループ回数の異常の有無を判定し、遷移動作判定回路２ａの判定出力とともに、異常があった場合には、異常信号送信回路２７から異常処理部１４に送信する。
【００３５】
異常処理部１４は、プロセッサ１に搭載する構成で記載したが、この構成はプロセッサ１及び動作検査部２の何れとも独立して構成しても、また、何れに付属させた構成とすることも可能である。
【００３６】
この異常判定出力は、プロセッサ１を備えるシステムの要求により、プロセッサ１をシャットダウンさせるようにしても良く、また、異常時のデータはロギングして診断に利用することも可能である。
【００３７】
以上説明したように、実施例１に拠れば、プログラムの遷移状態を全タスクの遷移状態を、予め開始ＩＤ命令、終了ＩＤ命令として、夫々のタスクに書き込んでおき、これらの命令の実行時に命令に対応する全タスクのビット情報を基にして遷移の良否を判定するようにしたので、タスク遷移動作の良否を最小の情報として、シンプルな回路構成で、異常の判定をタスクの開始のタイミング瞬時に判定できるプロセッサの動作検査システムを提供することが出来る。
【実施例２】
【００３８】
次に、図７及を参照して、実施例２のプロセッサ動作検査システムについて説明する。実施例２の各部について図１に示す実施例１の各部と同一部分は同一符号で示しその説明を省略する。
【００３９】
図７及に示すように、実施例２が、実施例１と異なる点は、実施例１の構成は、プロセッサ１（Ａ）と動作検査部２（Ａ）とを備えるＡ系のプロセッサシステムが１つの基板上に構成されるものであったが、実施例２は、異なるＢ系の基板上に動作検査部２Ｂを備えことにある。
【００４０】
詳細には、動作検査部２Ａには、開始ＩＤビット信号、終了ＩＤビット信号及び最大値で信号を送信するデータ交換回路２ａ１を備え、データ交換回路２ａ１から動作検査部２Ｂに送信する。
【００４１】
実施例２によれば、動作検査部２を冗長化する場合や、Ｂ系がプロセッサシステムを構成する場合には、Ｂ系をＡ系で診断する動作検査部を同様に備え、相互に診断を行う冗長化された構成とすることも出来る。
【００４２】
この場合、動作検査部２Ｂには、動作検査部２Ａに備えるデータ交換回路２ａ１を備え、動作検査部を互換性のある同一の構成としおき、図７に示すＡ系と同様のＢ系とを同じ構成として、相互に診断する冗長形を構成とすることが出来る。
【００４３】
本発明のいくつかの実施例を説明したが、これらの実施例は、例として提示したものであり、発明の範囲を限定することを意図していない。これら新規な実施例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で，種々の省略、置き換え、変更を行うことが出来る。これらの実施例やその変形は、発明の要旨に含まれるとともに、特許請求の範囲に記載された発明と均等の範囲に含まれる。
【符号の説明】
【００４４】
１  プロセッサ
２  動作検査部
２ａ  遷移動作判定回路
２ｂ  ループ処理判定回路
１１  記憶部
１２  演算部
１３  データ送信回路
１４  異常処理部
１４ａ  シャットダウン回路
１４ｂ  異常受信回路
２１  開始ＩＤレジスタ
２２  終了ＩＤレジスタ
２３  判定回路
２４  ループ監視部
２４  最大値レジスタ
２５  カウンタ
２６  比較回路
２７  異常信号送信回路
２８  異常検出レジスタ
２９  シャットダウン送信回路
１００  プロセッサ動作検査システム
【図１】
2012150661.tif 000003
【図２】
2012150661.tif 000004
【図３】
2012150661.tif 000005
【図４】
2012150661.tif 000006
【図５】
2012150661.tif 000007
【図６】
2012150661.tif 000008
【図７】
2012150661.tif 000009