(57)【要約】【課題】信号処理プログラムなどのアプリケーションプログラムの実行に悪影響を与えることなくアプリケーションプログラムの実行時のエラーを検出すること。【解決手段】周期的に実行される信号処理を分担して実行する信号読込み処理モジュール１１０、第１信号演算処理モジュール１２０ａ、第２信号演算処理モジュール１２０ｂ、加工信号書込み処理モジュール１３０などの処理モジュールに固有なＩＤを対応させ、各処理モジュールは実行時に自分のＩＤを期待値マトリクス記憶部１４０の加算ＩＤ実行値に加算し、実行すべき処理モジュールのＩＤを事前に加算して期待値マトリクス記憶部１４０に記憶した加算期待値ＩＤと加算ＩＤ実行値とを障害検出処理部１５０が比較して障害を検知するよう構成する。【選択図】        図２
2006251852.tif 000002
【特許請求の範囲】
【請求項１】
処理を分担する処理モジュールを複数組み合わせて行われる処理に発生する障害を検出する障害検出プログラムであって、
実行される処理モジュールについて各処理モジュールに固有な数値を加算した期待値を予め算出する期待値算出手順と、
実際に実行された処理モジュールが処理中に前記固有な数値を加算して算出した実行値と前記期待値算出手順により算出された期待値とを比較して障害が発生したか否かを判定する障害判定手順と、
をコンピュータに実行させることを特徴とする障害検出プログラム。
【請求項２】
前記固有な数値は、２進数で表現した場合に１であるビットが一つであり、該１であるビットの位置に基づいて処理モジュールの識別を可能とする数であることを特徴とする請求項１に記載の障害検出プログラム。
【請求項３】
前記処理モジュールを複数組み合わせて行われる処理は、周期的に行われる処理であり、
前記障害判定手順は、前記周期的に行われる処理が開始される前に、前記期待値算出手順により算出された期待値と前回の周期で算出された実行値とを比較して障害が発生したか否かを判定することを特徴とする請求項１または２に記載の障害検出プログラム。
【請求項４】
前記障害判定手順は、前記期待値算出手順により算出された期待値と前回の周期で算出された実行値とを比較して障害が発生したか否かを割り込み処理の中で判定することを特徴とする請求項３に記載の障害検出プログラム。
【請求項５】
処理を分担する処理モジュールを複数組み合わせて行う処理に発生する障害を検出する障害検出方法であって、
各処理モジュールが処理中に各処理モジュールに固有な数値を実行値として加算する加算工程と、
実行すべき処理モジュールについて各処理モジュールに固有な数値を予め加算した期待値と前記加算工程により加算された実行値とを比較して障害が発生したか否かを判定する障害判定工程と、
を含んだことを特徴とする障害検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、処理を分担する処理モジュールを複数組み合わせて行う処理に発生する障害を検出する障害検出プログラムおよび障害検出方法に関し、特に、処理負荷が低く本来の処理に悪影響を与えることなく障害の発生を検知するとともに、障害発生原因の特定を容易にすることができる障害検出プログラムおよび障害検出方法に関するものである。
【背景技術】
【０００２】
従来、プログラムの暴走を検出する手法としてＷＤＴ（Watch Dog Timer）の利用がある。ＷＤＴとは、タイムアウトが発生しないようにアプリケーションからリセットされるタイマーであり、アプリケーションが暴走してＷＤＴのリセットが行われなかった場合のタイムアウトを利用することによって、プログラムの暴走を検出することができる。
【０００３】
しかし、ＷＤＴを利用する場合には、タイマーにある程度のマージンが必要であり、プログラムの暴走がかなり進んだ後で障害が検出されるため、プログラム領域の破壊が進行し、暴走原因の追求が非常に困難となる。そこで、プログラムの一定区間ごとにチェックサムを計算して予め計算した期待値と比較することによって、プログラムの暴走を検出するとともに、暴走原因の追求を容易にする手法が用いられている。
【０００４】
また、特許文献１には、実行すべきプログラムの識別子を二つのレジスタに保存し、プログラムの実行中にそのプログラムの識別子をいずれかのレジスタに書き込み、プログラムの実行後に二つのレジスタを比較することによってプログラムの暴走等の異常を検出する技術が開示されている。
【０００５】
【特許文献１】特開平２−２７３８４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、プログラムの一定区間ごとにチェックサムを計算する処理は処理負荷が高く、本来行うべき処理の性能に悪影響を与えるという問題がある。特に、ＤＳＰなどによるリアルタイム性の高い処理では、処理性能の低下が大きな問題となる。
【０００７】
また、特許文献１に開示された技術にも、異常原因の追求を容易にするためにプログラムの単位を小さくすると、レジスタへ設定すべき識別子の特定、特定した識別子のレジスタへの初期設定および二つのレジスタの比較を頻繁に行う必要があり、本来行うべき処理の性能に悪影響を与えるという問題がある。
【０００８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、処理負荷が低く本来の処理に悪影響を与えることなく障害の発生を検知するとともに、障害発生原因の特定を容易にすることができる障害検出プログラムおよび障害検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、請求項１の発明に係る障害検出プログラムは、処理を分担する処理モジュールを複数組み合わせて行われる処理に発生する障害を検出する障害検出プログラムであって、実行される処理モジュールについて各処理モジュールに固有な数値を加算した期待値を予め算出する期待値算出手順と、実際に実行された処理モジュールが処理中に前記固有な数値を加算して算出した実行値と前記期待値算出手順により算出された期待値とを比較して障害が発生したか否かを判定する障害判定手順と、をコンピュータに実行させることを特徴とする。
【００１０】
この請求項１の発明によれば、実行される処理モジュールについて各処理モジュールに固有な数値を加算した期待値を予め算出し、実際に実行された処理モジュールが処理中に固有な数値を加算して算出した実行値と予め算出した期待値とを比較して障害が発生したか否かを判定するよう構成したので、低負荷の処理で障害を検出することができる。
【００１１】
また、請求項２の発明に係る障害検出プログラムは、請求項１の発明において、前記固有な数値は、２進数で表現した場合に１であるビットが一つであり、該１であるビットの位置に基づいて処理モジュールの識別を可能とする数であることを特徴とする。
【００１２】
この請求項２の発明によれば、処理モジュールに固有な数値は、２進数で表現した場合に１であるビットが一つであり、その１であるビットの位置に基づいて処理モジュールの識別を可能とする数であるよう構成したので、実行されなかった処理モジュールを容易に特定することができる。
【００１３】
また、請求項３の発明に係る障害検出プログラムは、請求項１または２の発明において、前記処理モジュールを複数組み合わせて行われる処理は、周期的に行われる処理であり、前記障害判定手順は、前記周期的に行われる処理が開始される前に、前記期待値算出手順により算出された期待値と前回の周期で算出された実行値とを比較して障害が発生したか否かを判定することを特徴とする。
【００１４】
この請求項３の発明によれば、処理モジュールを複数組み合わせて行われる処理は、周期的に行われる処理であり、周期的に行われる処理が開始される前に、算出した期待値と前回の周期で算出された実行値とを比較して障害が発生したか否かを判定するよう構成したので、一定周期で障害を検出することができる。
【００１５】
また、請求項４の発明に係る障害検出プログラムは、請求項３の発明において、前記障害判定手順は、前記期待値算出手順により算出された期待値と前回の周期で算出された実行値とを比較して障害が発生したか否かを割り込み処理の中で判定することを特徴とする。
【００１６】
この請求項４の発明によれば、算出した期待値と前回の周期で算出された実行値とを比較して障害が発生したか否かを割り込み処理の中で判定するよう構成したので、確実に一定周期で障害を検出することができる。
【００１７】
また、請求項５の発明に係る障害検出方法は、処理を分担する処理モジュールを複数組み合わせて行う処理に発生する障害を検出する障害検出方法であって、各処理モジュールが処理中に各処理モジュールに固有な数値を実行値として加算する加算工程と、実行すべき処理モジュールについて各処理モジュールに固有な数値を予め加算した期待値と前記加算工程により加算された実行値とを比較して障害が発生したか否かを判定する障害判定工程と、を含んだことを特徴とする。
【００１８】
この請求項５の発明によれば、各処理モジュールが処理中に各処理モジュールに固有な数値を実行値として加算し、実行すべき処理モジュールについて各処理モジュールに固有な数値を予め加算した期待値と実行値とを比較して障害が発生したか否かを判定するよう構成したので、低負荷の処理で障害を検出することができる。
【発明の効果】
【００１９】
請求項１および５の発明によれば、低負荷の処理で障害を検出するので、本来の処理に悪影響を与えることなく障害の発生を検知することができるという効果を奏する。
【００２０】
また、請求項２の発明によれば、実行されなかった処理モジュールを容易に特定することができるので、障害発生原因の特定を容易にすることができるという効果を奏する。
【００２１】
また、請求項３の発明によれば、一定周期で障害を検出するので、処理モジュールによる処理中にプログラムの暴走が発生した場合にも確実に暴走を検出することができるという効果を奏する。
【００２２】
また、請求項４の発明によれば、確実に一定周期で障害を検出するので、処理モジュールによる処理中にプログラムの暴走が発生した場合にも確実に暴走を検出することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、この発明に係る障害検出プログラムおよび障害検出方法の好適な実施例を詳細に説明する。なお、本実施例では、本発明をＤＳＰによって一定周期で実行される信号処理プログラムに適用した場合を中心に説明する。
【実施例】
【００２４】
まず、本実施例に係る信号処理プログラムによる障害検出手法について説明する。図１は、本実施例に係る信号処理プログラムによる障害検出手法を説明するための説明図である。
【００２５】
同図（ａ）に示すように、チェックサムによるエラー検出では、プログラムの一定区間ごとにチェックサムを計算して期待値と比較するために、チェックサムを計算しない場合と比較して多くの処理時間が必要となる。したがって、一定周期で実行される信号処理プログラムのように、１周期分の全体処理要求時間がある場合に、処理時間が要求時間をオーバーしてしまうことがある。
【００２６】
一方、同図（ｂ）に示すように、本実施例に係るエラー検出では、信号読込み処理、信号演算処理などの処理モジュールが実行されるごとに各処理モジュールに固有な数値であるＩＤを加算し、１周期分の処理が終了した時点で加算結果を加算ＩＤ実行値として保持する。そして、割り込みによって次の周期の処理が開始されると、割り込み処理の中で、正しい処理が行われた場合のＩＤの加算値の期待値である加算ＩＤ期待値と加算ＩＤ実行値とを比較することによってエラーを検出する。
【００２７】
すなわち、加算ＩＤ期待値と加算ＩＤ実行値が等しい場合には、前回の処理が正常終了したと判定し、加算ＩＤ期待値と加算ＩＤ実行値が等しくない場合には、前回の処理中に異常が発生したと判定する。
【００２８】
したがって、本実施例に係るエラー検出では、エラー検出のために各処理モジュールが行う処理はＩＤの加算だけであり、チェックサムを計算する場合と比較して処理負荷が低く、１周期分の全体処理要求時間をみたすことができる。
【００２９】
このように、本実施例に係るエラー検出では、エラー検出のために各処理モジュールが行う処理をＩＤの加算だけとすることによって、エラー検出のための処理負荷を低くし、定められた要求時間内に信号処理を完了するとともに、エラーの検出を可能としている。また、加算ＩＤ実行値と加算ＩＤ期待値を比較するエラー検出処理を割り込み処理の中で行うことによって、プログラムが暴走した場合にも必ずエラー検出が行えるようにしている。
【００３０】
次に、本実施例に係る信号処理プログラムの構成について説明する。図２は、本実施例に係る信号処理プログラムの構成を示す機能構成図である。同図に示すように、この信号処理プログラム１００は、信号読込み処理モジュール１１０と、第１信号演算処理モジュール１２０ａと、第２信号演算処理モジュール１２０ｂと、加工信号書込み処理モジュール１３０と、期待値マトリクス記憶部１４０と、障害検出処理部１５０と、期待値算出部１６０と、エラー処理部１７０とを有する。
【００３１】
信号読込み処理モジュール１１０は、メモリに格納されている信号データを読込む信号読込み処理を行う処理モジュールである。第１信号演算処理モジュール１２０ａは、信号読込み処理モジュール１１０によってメモリから読み出された信号データに対して積和演算などの信号演算処理である第１信号演算処理を行う処理モジュールである。
【００３２】
第２信号演算処理モジュール１２０ｂも、信号読込み処理部１１０によってメモリから読み出された信号データに対して積和演算などの信号演算処理を行う処理モジュールであるが、第１信号演算処理モジュール１２０ａとは異なる第２信号演算処理を行う。加工信号書込み処理モジュール１３０は、信号演算処理結果をメモリに書込む加工信号書込み処理を行う処理モジュールである。
【００３３】
信号読込み処理モジュール１１０、第１信号演算処理モジュール１２０ａ、第２信号演算処理モジュール１２０ｂおよび加工信号書込み処理モジュール１３０は、本来の信号処理を行う信号処理本体を構成する処理モジュールであり、これらの処理モジュールは、プログラム領域に誤ってデータを書込むことによってプログラムを暴走させる可能性がある。
【００３４】
また、これらの処理モジュールは、固有のＩＤを有し、実行されるごとにＩＤを加算していく。ここで、ＩＤは、２進数表示した場合に１ビットだけが「１」である数であり、「１」であるビットの位置によって処理モジュールの特定を可能としている。例えば、信号読込み処理モジュール１１０のＩＤは、１６進数表示で０ｘ０００１であり、第２信号演算処理モジュール１２０ａのＩＤは、０ｘ００１０である。
【００３５】
これらの処理モジュールが実行されるごとにＩＤを加算していくことによって、事前に計算した期待値と加算結果を比較することでエラー検出が可能となる。また、加算結果の２進数表示における値が「１」であるビットの位置によって、実際に実行された処理モジュールを特定することができる。
【００３６】
なお、ここでは、説明の便宜上、第１信号演算処理部１２０ａおよび第２信号演算処理部１２０ｂのみ示したが、この信号処理プログラム１００は、他にも信号演算処理などを行う処理モジュールを有する。
【００３７】
期待値マトリクス記憶部１４０は、エラー検出に関連する情報を記憶した記憶部である。図３は、期待値マトリクス記憶部１４０の一例を示す図である。同図に示すように、この期待値マトリクス記憶部１４０は、処理モジュールの名前と、ＩＤと、区間有無とを処理モジュールごとに対応させて期待値マトリクスとして記憶する。
【００３８】
ここで、区間有無は、対応する処理モジュールが実行されるか否かを示し、信号処理をＤＳＰに指示するホストプロセッサによって設定される。例えば、信号読込み処理モジュールは、ＩＤが０ｘ０００１であり、ホストプロセッサによって処理の実行が指定されている。
【００３９】
また、この期待値マトリクス記憶部１４０は、実行される処理モジュールのＩＤの和の期待値である加算ＩＤ期待値と、実際に実行された処理モジュールがＩＤを加算していく加算ＩＤ実行値と、処理モジュールの組み合わせに変更があった場合にホストプロセッサによって設定されるフラグである変更フラグを記憶する。
【００４０】
障害検出処理部１５０は、加算ＩＤ期待値と加算ＩＤ実行値を比較し、両者が等しい場合には正常に処理が行われたと判定し、両者が異なる場合には異常が発生したと判定してエラー処理をエラー処理部１７０に指示する処理部である。
【００４１】
また、この障害検出処理部１５０は、ホストプロセッサから処理内容の変更による処理モジュールの組み合わせの変更が指示されたか否かを期待値マトリクス記憶部１４０の変更フラグを用いて判定し、処理モジュールの組み合わせの変更があった場合には、期待値算出部１６０に新たな処理モジュールの組み合わせに対する加算ＩＤ期待値の算出を指示するとともに、更新フラグをリセットする。
【００４２】
期待値算出部１６０は、期待値マトリクス記憶部１４０の加算ＩＤ期待値を算出する処理部であり、期待値マトリクス記憶部１４０に記憶された処理モジュールの中で実行される処理モジュール、すなわち、区間有無が「○」である処理モジュールのＩＤを加算して加算ＩＤ期待値として記憶する。
【００４３】
エラー処理部１７０は、異常が発生した処理モジュールを加算ＩＤ実行値の２進数表示において値が「１」であるビット位置に基づいて特定し、特定した処理モジュールのプログラム領域や期待値マトリクス記憶部１４０のダンプなどを行う処理部である。
【００４４】
障害が発生した場合には、このエラー処理部１７０によるプログラム領域や期待値マトリクス記憶部１４０のダンプ結果を解析することによって、異常原因を容易に特定することができる。
【００４５】
次に、本実施例に係る信号処理プログラム１００の処理手順について説明する。図４は、本実施例に係る信号処理プログラム１００による処理手順の一例を示すフローチャートである。なお、この信号処理プログラム１００は、周期的な割り込みによって起動される。また、ここでは、信号読込み処理モジュール１１０、第１信号演算処理モジュール１２０ａおよび加工信号書込み処理モジュール１３０を組み合わせて処理を行う場合について説明する。
【００４６】
同図に示すように、この信号処理プログラム１００は、障害検出処理部１５０が前回の処理中に加算された加算ＩＤ実行値と加算ＩＤ期待値が等しいか否かを判定する（ステップＳ１０１）。なお、ここでは、加算ＩＤ期待値は事前に計算されて期待値マトリクス記憶部１４０に設定され、信号処理プログラム１００が最初に起動された場合には、加算ＩＤ実行値と加算ＩＤ期待値の比較は行わないものとする。
【００４７】
そして、障害検出処理部１５０は、加算ＩＤ実行値と加算ＩＤ期待値が等しくない場合には、エラー処理部１７０に異常が発生した処理モジュールの特定などのエラー処理を行うように指示する（ステップＳ１０２）。
【００４８】
一方、加算ＩＤ実行値と加算ＩＤ期待値が等しい場合には、障害検出処理部１５０は、処理内容に変更があるか否かを判定し（ステップＳ１０３）、変更がある場合には、期待値算出部１６０に加算ＩＤ期待値を更新するように指示する（ステップＳ１０４）。
【００４９】
そして、障害検出処理部１５０は、加算ＩＤ実行値を「０」に初期化する（ステップＳ１０５）。なお、ステップＳ１０１からステップＳ１０５までの処理は、割り込み処理として行われる。
【００５０】
そして、信号読込み処理モジュール１１０が信号読込み処理を行い（ステップＳ１０６）、第１信号演算処理モジュール１２０ａが第１信号演算処理を行い（ステップＳ１０７）、加工信号書込み処理モジュール１３０が加工信号書込み処理を行う（ステップＳ１０８）。
【００５１】
なお、信号読込み処理モジュール１１０は加算ＩＤ実行値に自分のＩＤである０ｘ０００１を加算し、第１信号演算処理モジュール１２０ａは加算ＩＤ実行値に自分のＩＤである０ｘ０００２を加算し、加工信号書込み処理モジュール１３０は加算ＩＤ実行値に自分のＩＤである０ｘ０００４を加算する。
【００５２】
このように、障害検出処理部１５０が前回の処理中に加算された加算ＩＤ実行値と加算ＩＤ期待値が等しいか否かを判定することによって、障害の発生を検出することができる。
【００５３】
次に、本実施例に係る信号処理プログラム１００による各処理の処理タイミングについて説明する。図５は、本実施例に係る信号処理プログラム１００による各処理の処理タイミングを示す図である。なお、ここでは、信号読込み処理モジュール１１０、第１信号演算処理モジュール１２０ａおよび加工信号書込み処理モジュール１３０を組み合わせて処理を行う場合について説明する。
【００５４】
同図に示すように、信号処理プログラム１００は、加算ＩＤ期待値を算出して初期設定した後、周期的割り込みが発生すると、最初の周期では加算ＩＤ期待値と加算ＩＤ実行値とを比較することなく、信号読込み処理、第１信号演算処理、加工信号書込み処理の順でＩＤの加算を行いながら処理を行う。
【００５５】
そして、次の周期の処理の先頭で、加算ＩＤ期待値と加算ＩＤ実行値とを比較してエラー検出を行う。そして、ここではエラーが検出されなかったものとすると、信号処理プログラム１００は、信号読込み処理、第１信号演算処理、加工信号書込み処理の順でＩＤの加算を行いながら処理を行う。
【００５６】
このように、信号処理プログラム１００は、各周期の先頭で加算ＩＤ期待値と前回の周期で計算した加算ＩＤ実行値とを比較してエラー検出を行いながら、周期的処理を繰り返す。
【００５７】
次に、期待値マトリクスが更新された場合の信号処理プログラム１００による処理の処理タイミングについて説明する。図６は、期待値マトリクスが更新された場合の信号処理プログラム１００による処理の処理タイミングを示す図である。なお、ここでは、図７に示すように、第１信号演算処理モジュール１２０ａが第２信号演算処理モジュール１２０ｂに変更された場合について説明する。
【００５８】
図６に示すように、信号処理プログラム１００は、加算ＩＤ期待値を算出して初期設定した後、周期的割り込みが発生すると、最初の周期では加算ＩＤ期待値と加算ＩＤ実行値とを比較することなく、信号読込み処理、第１信号演算処理、加工信号書込み処理の順でＩＤの加算を行いながら処理を行う。
【００５９】
そして、次の周期の処理の先頭で、加算ＩＤ期待値と加算ＩＤ実行値とを比較してエラー検出を行う。そして、ここではエラーが検出されなかったものとすると、信号処理プログラム１００は、期待値マトリクスが更新されたか否かを調べる。そして、期待値マトリクスが更新されていることを知り、加算ＩＤ期待値を０ｘ００１５に更新する。
【００６０】
そして、信号読込み処理、第２信号演算処理、加工信号書込み処理の順でＩＤの加算を行いながら処理を行う。ここで、第１信号演算処理から第２信号演算処理に処理が変更されているため、処理が正常に行われると加算ＩＤ実行値は０ｘ００１５となる。そして、次の周期の処理の先頭で、更新した加算ＩＤ期待値と加算ＩＤ実行値とを比較してエラー検出を行う。
【００６１】
このように、信号処理プログラム１００は、期待値マトリクスが更新された場合には、処理モジュールによる信号処理の前に加算ＩＤ期待値を更新し、次の周期の処理の先頭で、更新した加算ＩＤ期待値と加算ＩＤ実行値とを比較してエラー検出を行う。
【００６２】
次に、エラーが発生した場合の信号処理プログラム１００による処理の処理タイミングについて説明する。図８は、エラーが発生した場合の信号処理プログラム１００による処理の処理タイミングを示す図である。なお、ここでは、信号読込み処理モジュール１１０、第２信号演算処理モジュール１２０ｂおよび加工信号書込み処理モジュール１３０を組み合わせて処理を行う場合について説明する。
【００６３】
図８に示すように、信号処理プログラム１００は、加算ＩＤ期待値を算出して０ｘ００１５に初期設定した後、周期的割り込みが発生すると、最初の周期では加算ＩＤ期待値と加算ＩＤ実行値とを比較することなく、信号読込み処理、第２信号演算処理、加工信号書込み処理の順でＩＤの加算を行いながら処理を行う。
【００６４】
そして、次の周期の処理の先頭で、加算ＩＤ期待値と加算ＩＤ実行値とを比較してエラー検出を行う。そして、ここではエラーが検出されなかったものとすると、信号処理プログラム１００は、信号読込み処理、第２信号演算処理を行う。
【００６５】
そして、処理が正常であれば次に加工信号書込み処理を行うところ、ここでは異常が発生したために代わりに第１信号演算処理が実行されたとする。すると、加算ＩＤ実行値は０ｘ００１３となり、ここで、周期的割り込みが発生すると、割り込み処理の先頭で、加算ＩＤ期待値と加算ＩＤ実行値とを比較することによってエラーを検出する。
【００６６】
このように、信号処理プログラム１００は、処理モジュールの処理中に障害が発生した場合には、周期的な割り込みで次に起動された際に、割込み処理の先頭で加算ＩＤ期待値と加算ＩＤ実行値とを比較することによって障害を検出する。
【００６７】
次に、本実施例に係る信号処理プログラム１００を実行するコンピュータについて説明する。図９は、本実施例に係る信号処理プログラム１００を実行するコンピュータの構成を示す機能ブロック図である。同図に示すように、このコンピュータ２００は、ＲＯＭ２１０と、ＤＳＰ２２０と、ＲＡＭ２３０と、ホストインタフェース２４０とを有する。
【００６８】
ＲＯＭ２１０は、信号処理プログラム１００を記憶する読出し専用メモリであり、ＤＳＰ２２０は、ＲＯＭ２１０から信号処理プログラム１００を読み出して実行する処理装置である。
【００６９】
ＲＡＭ２３０は、信号データ、演算結果、演算途中結果などを記憶するメモリであり、信号処理プログラム１００の中の期待値マトリクス記憶部１４０は、このＲＡＭ２３０に領域が確保される。
【００７０】
ホストインタフェース２４０は、ホストプロセッサとのインタフェースであり、ホストプロセッサは、このホストインタフェース２４０を介して処理内容の変更などを指示する。
【００７１】
なお、このコンピュータ２００は、メモリ保護機能がなく、信号処理プログラム１００がハードウェアの障害などで暴走した場合には、プログラム領域が破壊される可能性があり、信号処理プログラム１００で障害検出を行うことが必要となる。
【００７２】
上述してきたように、本実施例では、周期的に実行される信号処理を分担して実行する信号読込み処理モジュール１１０、第１信号演算処理モジュール１２０ａ、第２信号演算処理モジュール１２０ｂ、加工信号書込み処理モジュール１３０などの処理モジュールに固有なＩＤを対応させ、各処理モジュールは実行時に自分のＩＤを期待値マトリクス記憶部１４０の加算ＩＤ実行値に加算し、実行すべき処理モジュールのＩＤを事前に加算して期待値マトリクス記憶部１４０に記憶した加算期待値ＩＤと加算ＩＤ実行値とを障害検出処理部１５０が比較して障害を検知することとしたので、低負荷の処理で信号処理に悪影響を与えることなく障害を検知することができる。
【００７３】
また、ＩＤを２進表現した場合に、「１」であるビットが一つだけになるようにＩＤを処理モジュールに割り当てることとしたので、障害が発生した場合に、加算ＩＤ実行値の２進表現において「１」であるビットの位置から障害の発生箇所を容易に特定することができる。
【００７４】
なお、本実施例では、ＤＳＰで実行される信号処理プログラムに本発明を適用した場合について説明したが、本発明はこれに限定されるものではなく、他のプロセッサで実行される他のプログラムに対しても同様に適用することができる。
【００７５】
また、本実施例では、周期的に実行される信号処理プログラムに本発明を適用した場合について説明したが、本発明はこれに限定されるものではなく、１回だけ実行されるプログラムに対しても、例えば、ＷＤＴと組み合わせ、ＷＤＴのタイムアウト時に加算ＩＤ期待値と加算ＩＤ実行値の比較を行うことによって、障害発生原因の追求を容易にすることができる。
【００７６】
（付記１）処理を分担する処理モジュールを複数組み合わせて行われる処理に発生する障害を検出する障害検出プログラムであって、
実行される処理モジュールについて各処理モジュールに固有な数値を加算した期待値を予め算出する期待値算出手順と、
実際に実行された処理モジュールが処理中に前記固有な数値を加算して算出した実行値と前記期待値算出手順により算出された期待値とを比較して障害が発生したか否かを判定する障害判定手順と、
をコンピュータに実行させることを特徴とする障害検出プログラム。
【００７７】
（付記２）前記固有な数値は、２進数で表現した場合に１であるビットが一つであり、該１であるビットの位置に基づいて処理モジュールの識別を可能とする数であることを特徴とする付記１に記載の障害検出プログラム。
【００７８】
（付記３）前記処理モジュールを複数組み合わせて行われる処理は、周期的に行われる処理であり、
前記障害判定手順は、前記周期的に行われる処理が開始される前に、前記期待値算出手順により算出された期待値と前回の周期で算出された実行値とを比較して障害が発生したか否かを判定することを特徴とする付記１または２に記載の障害検出プログラム。
【００７９】
（付記４）前記障害判定手順は、前記期待値算出手順により算出された期待値と前回の周期で算出された実行値とを比較して障害が発生したか否かを割り込み処理の中で判定することを特徴とする付記３に記載の障害検出プログラム。
【００８０】
（付記５）周期的に行われる処理の処理内容に変更があるか否かを判定する変更判定手順をさらにコンピュータに実行させ、
前記期待値算出手順は、前記変更判定手順により処理内容に変更があると判定された場合に前記期待値を算出しなおすことを特徴とする付記３または４に記載の障害検出プログラム。
【００８１】
（付記６）処理を分担する処理モジュールを複数組み合わせて行う処理に発生する障害を検出する障害検出方法であって、
各処理モジュールが処理中に各処理モジュールに固有な数値を実行値として加算する加算工程と、
実行すべき処理モジュールについて各処理モジュールに固有な数値を予め加算した期待値と前記加算工程により加算された実行値とを比較して障害が発生したか否かを判定する障害判定工程と、
を含んだことを特徴とする障害検出方法。
【００８２】
（付記７）前記固有な数値は、２進数で表現した場合に１であるビットが一つであり、該１であるビットの位置に基づいて処理モジュールの識別を可能とする数であることを特徴とする付記６に記載の障害検出方法。
【００８３】
（付記８）前記処理モジュールを複数組み合わせて行う処理は、周期的に行う処理であり、
前記障害判定工程は、前記周期的に行う処理を開始する前に、前記期待値と前回の周期で算出した実行値とを比較して障害が発生したか否かを判定することを特徴とする付記６または７に記載の障害検出方法。
【００８４】
（付記９）前記障害判定工程は、前記期待値と前回の周期で算出した実行値とを比較して障害が発生したか否かを割り込み処理の中で判定することを特徴とする付記８に記載の障害検出方法。
【００８５】
（付記１０）周期的に行う処理の処理内容に変更がある場合に、前記期待値を算出しなおす期待値算出工程をさらに含んだことを特徴とする付記８または９に記載の障害検出方法。
【産業上の利用可能性】
【００８６】
以上のように、本発明に係る障害検出プログラムおよび障害検出方法は、プログラムの暴走の検出に有用であり、特に、メモリ保護機能が弱いプロセッサやＤＳＰで実行されるプログラムの暴走の検出に適している。
【図面の簡単な説明】
【００８７】
【図１】本実施例に係る信号処理プログラムによる障害検出手法を説明するための説明図である。
【図２】本実施例に係る信号処理プログラムの構成を示す機能構成図である。
【図３】期待値マトリクス記憶部の一例を示す図である。
【図４】本実施例に係る信号処理プログラムによる処理手順の一例を示すフローチャートである。
【図５】本実施例に係る信号処理プログラムによる各処理の処理タイミングを示す図である。
【図６】期待値マトリクスが更新された場合の信号処理プログラムによる処理の処理タイミングを示す図である。
【図７】期待値マトリクスおよび加算ＩＤ期待値の変更を示す図である。
【図８】エラーが発生した場合の信号処理プログラムによる処理の処理タイミングを示す図である。
【図９】本実施例に係る信号処理プログラムを実行するコンピュータの構成を示す機能ブロック図である。
【符号の説明】
【００８８】
１００    信号処理プログラム
１１０    信号読込み処理モジュール
１２０ａ    第１信号演算処理モジュール
１２０ｂ    第２信号演算処理モジュール
１３０    加工信号書込み処理モジュール
１４０    期待値マトリクス記憶部
１５０    障害検出処理部
１６０    期待値算出部
１７０    エラー処理部
２００    コンピュータ
２１０    ＲＯＭ
２２０    ＤＳＰ
２３０    ＲＡＭ
２４０    ホストインタフェース
【図１】
2006251852.tif 000003
【図２】
2006251852.tif 000004
【図３】
2006251852.tif 000005
【図４】
2006251852.tif 000006
【図５】
2006251852.tif 000007
【図６】
2006251852.tif 000008
【図７】
2006251852.tif 000009
【図８】
2006251852.tif 000010
【図９】
2006251852.tif 000011