(57)【要約】【課題】低価格で信頼性の高いマルチプロセッサシステムを提供する。【解決手段】アプリケーションＡ〜Ｈは、それぞれプロセッサエレメントＰＥ０〜ＰＥ７上で動作して制御データＡ〜Ｈを生成する。制御データＡ〜Ｈは、それぞれ出力バッファ領域３Ａ〜３Ｈに書き込まれた後、対応する制御対象装置４１Ａ〜４１Ｈへ転送される。各制御データＡ〜Ｈは、それぞれ２つの出力モニタＡ〜Ｈによりチェックされる。プロセッサエレメントの故障によりアプリケーションが再配置されたときは、それに応じて出力モニタも再配置される。【選択図】図４
2008234117.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサエレメントを備えるマルチプロセッサシステムであって、
制御対象装置を制御するための制御データを生成する複数の制御データ生成手段と、
対応する制御データ生成手段により生成される制御データを監視する複数の監視手段と、
前記複数の制御データ生成手段を前記複数のプロセッサエレメントに割り当てる第１の割当て手段と、
前記複数の制御データ生成手段の割当てに基づいて、各制御データ生成手段により生成される制御データが異なるプロセッサエレメント上で動作する２以上の対応する監視手段により監視されるように、前記複数の監視手段を前記複数のプロセッサエレメントに割り当てる第２の割当て手段と、
を有することを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１に記載のマルチプロセッサシステムであって、
前記複数の制御データ生成手段によりそれぞれ生成される制御データを一時的に格納するメモリと、
前記メモリから前記制御対象装置への制御データの転送を制御する転送制御手段、をさらに備え、
各制御データ生成手段に対して割り当てられた前記２以上の監視手段は、前記メモリに格納されている対応する制御データが正常であるか否かをチェックし、
前記転送制御手段は、前記２以上の監視手段によりその制御データが正常でないと判断されたときに、その制御データの前記メモリから前記制御対象装置への転送を停止する
ことを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１に記載のマルチプロセッサシステムであって、
前記第１の割当て手段は、前記監視手段により正常でない制御データが検出されたときに、その正常でない制御データを生成した制御データ生成手段が割り当てられているプロセッサエレメント以外の動作継続プロセッサエレメントに前記複数の制御データ生成手段の一部または全部を割り当て、
前記第２の割当て手段は、前記第１の割当て手段により前記動作継続プロセッサエレメントに割り当てられた各制御データ生成手段にそれぞれ対応する２以上の監視手段を、前記動作継続プロセッサエレメントのなかの互いに異なるプロセッサエレメントに割り当てる
ことを特徴とするマルチプロセッサシステム。
【請求項４】
複数のプロセッサエレメントを備えるマルチプロセッサシステムであって、
複数のアプリケーション手段と、
対応するアプリケーション手段により得られる演算結果を監視する複数の監視手段と、
前記複数のアプリケーション手段を前記複数のプロセッサエレメントに割り当てる第１の割当て手段と、
前記複数のアプリケーション手段の割当てに基づいて、各アプリケーション手段により得られる演算結果が異なるプロセッサエレメント上で動作する２以上の監視手段により監視されるように、前記複数の監視手段を前記複数のプロセッサエレメントに割り当てる第２の割当て手段と、
を有することを特徴とするマルチプロセッサシステム。
【請求項５】
複数のプロセッサエレメントを備えるマルチプロセッサシステムにおいて任意のプロセッサエレメントが故障したときの復旧方法であって、
前記複数のプロセッサエレメントを利用してアプリケーションプログラムを実行するこ
とにより、制御対象装置を制御するための制御データを生成し、
前記複数のプロセッサエレメントを利用して各アプリケーションプログラムに対応する監視プログラムを実行することにより、対応する制御データの正常性をチェックし、
正常でない制御データを生成したプロセッサエレメントを停止または当該マルチプロセッサシステムから切り離し、
当該マルチプロセッサシステムにおいて動作を継続するプロセッサエレメントに優先度の高いアプリケーションプログラムを割り当て、
動作を継続するプロセッサエレメント上で実行されるアプリケーションプログラムにより生成される制御データが、それぞれ他のプロセッサエレメント上で実行される２以上の監視プログラムにより監視されるように、監視プログラムの割当てを変更する
ことを特徴とするマルチプロセッサシステムの復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサエレメントを備えるマルチプロセッサシステムに係わり、特に、組込み型マルチプロセッサシステムの信頼性を向上させる技術に係わる。
【背景技術】
【０００２】
様々な分野において組込みシステムが広く普及してきている。組込みシステムは、制御すべき対象の装置に内蔵される情報処理システムであって、１または複数のプロセッサを用いてその装置の動作を制御する。そして、近年では、高い信頼性を必要とする組込みシステム（例えば、自動車、航空機、鉄道車両、船舶等に組み込まれる制御システム）が要求されている。
【０００３】
高い信頼性が要求される組込みシステムにおいては、例えば、２重化システムまたは３重化システムが採用されている。３重化システムにおいては、同一の処理を並列に実行する３個のプロセッサの出力値が互いに比較され、多数決の原理に従って出力結果が決定される。このとき、特定のプロセッサの出力値が他の２個のプロセッサの出力値と異なっていた場合には、その特定のプロセッサは故障しているものと判断され、システムから切り離される。これにより、高い信頼性が実現される。２重化システムにおいては、２個のプロセッサの出力値を互いに比較することによって故障を検出できる。ただし、２重化システムでは、出力値の比較だけでは、どちらのプロセッサが故障しているのかを判定することはできない。
【０００４】
組込みシステムは、高い処理能力を必要とする場合には、複数のプロセッサエレメントを備えるマルチプロセッサシステム構成が採用される。ここで、このマルチプロセッサシステムの信頼性を高めるためには、上述した２重化／３重化を導入する構成が考えられる。しかし、各プロセッサエレメントをそれぞれ２重化／３重化すると、全体としてコストが大幅に増加することとなる。
【０００５】
一方、マルチプロセッサシステムは、複数のプロセッサエレメントを備えているので、各プロセッサエレメントが相互に動作状態を監視する機能を導入すれば、各プロセッサエレメントの故障を検出することが可能である。例えば、特許文献１、２には、各プロセッサエレメントが他のプロセッサエレメントから出力される「自己故障検出情報」あるいは「生存通知」を監視するサーバーシステムが記載されている。また、特許文献３には、各プロセッサが備えるメモリにそれぞれ全プロセッサの動作状況を監視するためのテーブルを設け、各プロセッサが互いに「ヘルス信号」を通知することによりシステムの動作状態を管理する構成が開示されている。
【０００６】
さらに、特許文献４に記載の組込みシステムにおいては、各プロセッサエレメントがそれぞれ自分の「動作状態」を共有メモリに書き込み、他のプロセッサエレメントがその共有メモリを参照する。このとき、異常値が検出されると、その異常値を書き込んだプロセッサエレメントが故障しているものと判断される。そして、そのプロセッサエレメントにより実行されていたアプリケーションは、他のプロセッサエレメントにより実行されるように制御される。さらに、故障が検出されたプロセッサエレメントは、リセットされた後に再起動される。
【特許文献１】特開平７−２６２０４２号公報
【特許文献２】特開昭６３−００４３６６号公報
【特許文献３】特開昭６３−２９１１３２号公報
【特許文献４】特開２００４−３１０２５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このように、特許文献１〜４に記載のシステムは、各プロセッサエレメントによる演算結果自体（組込みシステムにおいては、機器制御に用いる制御データに相当）をチェックするのではなく、各プロセッサエレメントの状態を表す情報を他のプロセッサエレメントが監視する構成である。すなわち、これらのシステムでは、各プロセッサエレメントがそれぞれ定期的に自分の状態をチェックし、そのチェック結果を所定の記憶領域に書き込む（あるいは、相互に通知する）。また、各プロセッサエレメントは、それぞれ定期的にその記憶領域を参照し、他のプロセッサエレメントの状態を検出する。ここで、「状態」とは、例えば、プロセッサエレメントが動作しているか否かを意味する。よって、この構成においては、故障の検出が遅れるおそれがある。また、プロセッサエレメントが動作はしているものの正しい演算を行えないような場合には、誤った演算結果が出力されることもある。したがって、このような構成のマルチプロセッサシステムを組込みシステムに採用すると、誤った演算結果が制御対象装置に与えられてしまい、その結果として誤動作を引き起こすおそれがある。
【０００８】
本発明の目的は、低価格で信頼性の高いマルチプロセッサシステムを提供することである。また、本発明の他の目的は、組込みシステムが備えるプロセッサエレメントの故障が制御対象装置に与える影響を抑えることである。
【課題を解決するための手段】
【０００９】
本発明のマルチプロセッサシステムは、複数のプロセッサエレメントを備え、制御対象装置を制御するための制御データを生成する複数の制御データ生成手段と、対応する制御データ生成手段により生成される制御データを監視する複数の監視手段と、前記複数の制御データ生成手段を前記複数のプロセッサエレメントに割り当てる第１の割当て手段と、前記複数の制御データ生成手段の割当てに基づいて、各制御データ生成手段により生成される制御データが異なるプロセッサエレメント上で動作する２以上の対応する監視手段により監視されるように、前記複数の監視手段を前記複数のプロセッサエレメントに割り当てる第２の割当て手段と、を有する。
【００１０】
上記マルチプロセッサシステムにおいて、各監視手段は、制御対象装置を制御するための制御データの正常性をチェックすることにより各プロセッサエレメントの状態を監視する。このため、各監視手段の処理は、基本的に、互いに異なっている。したがって、制御データ生成手段の割当てが変わったときは、第２の割当て手段は、制御データ生成手段の割当てに応じて監視手段の割当てを変更する。これにより、一部のプロセッサエレメントが故障した場合であっても、継続して動作する制御データ生成手段が生成する制御データを適切に監視することができる。したがって、プロセッサエレメントの数を増やすことなく、システムの信頼性を向上させることができる。また、各制御データ生成手段に対してそれぞれ２以上の監視手段が割り当てられるので、信頼性が高い。
【発明の効果】
【００１１】
本発明によれば、低価格で信頼性の高いマルチプロセッサシステムを提供することができる。
【発明を実施するための最良の形態】
【００１２】
本発明に係るマルチプロセッサシステムは、図１に示すように、複数のプロセッサエレメントＰＥ１〜ＰＥｎ、および複数のプロセッサエレメントＰＥ１〜ＰＥｎにより共有されるメモリを備える。各プロセッサエレメント上でそれぞれアプリケーションプログラム
が実行される。ここでは、プロセッサエレメントＰＥ１〜ＰＥｎに対してそれぞれアプリケーションプログラムＡ１〜Ａｎが割当てられている。そして、アプリケーションプログラムＡ１〜Ａｎの演算結果は、それぞれ、メモリに設けられている対応する出力バッファＢ１〜Ｂｎに書き込まれる。
【００１３】
監視プログラムＭ１〜Ｍｎは、それぞれ、対応するアプリケーションプログラムＡ１〜Ａｎの演算結果を監視する。ここで、各アプリケーションプログラムの演算結果は、それぞれ、異なる２つのプロセッサエレメント上で動作する対応する監視プログラムにより監視される。図１に示す例では、アプリケーションプログラムＡ１はプロセッサエレメントＰＥ１に割り当てられ、そのアプリケーションプログラムＡ１の演算結果を監視する監視プログラムＭ１はプロセッサエレメントＰＥｎおよびＰＥ２に割り当てられている。同様に、アプリケーションプログラムＡ２はプロセッサエレメントＰＥ２に割り当てられ、そのアプリケーションプログラムＡ２の演算結果を監視する監視プログラムＭ２はプロセッサエレメントＰＥ１およびＰＥ３に割り当てられている。すなわち、アプリケーションプログラムＡｉがプロセッサエレメントＰＥｉに割り当てられると、対応する監視プログラムＭｉはプロセッサエレメントＰＥｉ＋１およびＰＥｉ−１に割り当てられる（ｉ＝１、２、．．．ｎ；ただし、「ｉ＝０」は「ｉ＝ｎ」に相当する）。
【００１４】
監視プログラムＭ１〜Ｍｎは、それぞれ、定期的に対応する出力バッファＢ１〜Ｂｎに書き込まれている演算結果を参照し、その演算結果が閾値範囲に属しているか否かをチェックする。このとき、各アプリケーションの演算結果は、それぞれ１組の対応する監視プログラムによってチェックされる。そして、１組の監視プログラムによりチェックされた結果が双方とも閾値範囲に属していないという判定結果であったときは、その演算結果を生成したプロセッサエレメント（あるいは、そのプロセッサエレメント上で動作しているアプリケーション）が故障していると判断する。
【００１５】
上記構成によれば、マルチプロセッサシステムにおいて、各プロセッサエレメントの演算結果に基づいてそのプロセッサエレメントの故障を検出することができる。よって、この構成においては、各プロセッサエレメントから出力される「自己故障検出情報」または「生存通知」を監視する構成よりも早く故障が検出される。
【００１６】
上記マルチプロセッサシステムにおいて、故障したプロセッサエレメントが切り離された場合には、プロセッサエレメントとアプリケーションプログラムとの対応関係が更新される。すなわち、アプリケーションプログラムの再配置が行われる。そうすると、アプリケーションプログラムの再配置に応じて、プロセッサエレメントと監視プログラムとの対応関係も更新される。すなわち、監視プログラムも再配置される。このとき、各プロセッサエレメント上で動作するアプリケーションプログラムの演算結果が、それぞれ他のプロセッサエレメント上で動作する対応する１組の監視プログラムにより監視されるように、それらの監視プログラムの再配置が行われる。したがって、一部のプロセッサエレメントが故障した場合であっても、残りのプロセッサエレメントの演算結果の監視を継続することができる。
【００１７】
なお、他の方法によりプロセッサエレメントの故障が検出された場合であっても、上述の再配置は行われる。すなわち、例えば、各プロセッサエレメントから出力される「自己故障検出情報」または「生存通知」に基づいてプロセッサエレメントの故障が検出された場合にも、故障プロセッサエレメントが切り離され、上述の再配置が行われる。
【００１８】
このように、本発明のマルチプロセッサシステムは、各プロセッサエレメントにおいて他のプロセッサエレメント上で動作するアプリケーションプログラムの演算結果を監視するための監視プログラムを実行する構成なので、各プロセッサエレメントにおける監視処
理のための負荷は小さくなる。すなわち、各プロセッサエレメントにおいて、監視処理がアプリケーションプログラムの実行に与える影響は小さい。なお、特定のプロセッサエレメントがすべてのプロセッサエレメントを監視する構成においては、その特定のプロセッサエレメントにおいて監視処理のための負荷が大きくなる。このとき、各アプリケーションの演算結果は、複数（図１では、２つ）の監視プログラムによって監視されるので、故障検出の信頼性が高い。
【００１９】
また、本発明のマルチプロセッサシステムにおいては、一部のプロセッサエレメントが故障した場合には、アプリケーションの再配置に伴って、監視プログラムの再配置を行うことによって監視処理を継続できる。したがって、各プロセッサエレメントを２重化（または、３重化）することなく、信頼性の高いマルチプロセッサシステムを実現できる。すなわち、価格の上昇を招くことなくマルチプロセッサシステムの信頼性を向上させることができる。
【００２０】
さらに、各プロセッサエレメントの演算結果を監視するので、上記マルチプロセッサシステムを利用して装置を制御する組込みシステムにおいては、異常値が検出された場合にはその演算結果が制御対象装置へ転送されることを即座に停止でき、その制御対象装置における誤動作を回避することができる。
【００２１】
図２は、実施形態のマルチプロセッサシステムのハードウェア構成を示す図である。図２において、プロセッサユニット１は、８個のプロセッサエレメントＰＥ０〜ＰＥ７を備える。各プロセッサエレメントＰＥ０〜ＰＥ７は、互いに並列にプログラム（アプリケーションＡ〜Ｇおよび監視プログラムＡ〜Ｇ）を実行する。ここで、監視プログラムＡ〜Ｇは、それぞれアプリケーションＡ〜Ｇの演算結果である制御データを監視する。また、各アプリケーションに対してそれぞれ１組の監視プログラムが用意され、互いに異なるプロセッサエレメントに配置されている。アプリケーションおよび監視プログラムの配置については、後で詳しく説明する。なお、プロセッサエレメントＰＥ０〜ＰＥ７は、ＰＥ間通信パス１１により互いに接続されており、相互にデータを送受信できる。
【００２２】
メモリ２は、プロセッサエレメントＰＥ０〜ＰＥ７に共有される記憶装置であり、ＯＳおよび各種プログラム（アプリケーション、監視プログラムを含む）を実行するための作業領域として使用される。また、メモリ２には、出力バッファ領域３（３Ａ〜３Ｈ）が設けられる。出力バッファ領域３（３Ａ〜３Ｈ）には、それぞれアプリケーションＡ〜Ｇにより生成される制御データが書き込まれる。なお、プロセッサエレメントＰＥ０〜ＰＥ７とメモリ２との間は、メモリバスとしてのクロスバ（ＸＢ）１２により接続されている。
【００２３】
不揮発性メモリ２１は、例えばフラッシュメモリであり、ＯＳおよび各種プログラムが格納されている。また、不揮発性メモリ２１は、メモリ２により保持されている情報、例えば故障のログ情報、構成制御用のテーブルなどが定期的にコピーされる場合もある。なお、プロセッサエレメントＰＥ０〜ＰＥ７と不揮発性メモリ２１との間は、Ｉ／Ｏバス１３により接続されている。
【００２４】
プロセッサユニット１により制御される制御対象装置は、Ｉ／Ｏバス１３を介して当該マルチプロセッサシステムに接続されている。また、各種センサもＩ／Ｏバス１３を介してマルチプロセッサシステムに接続されている。
【００２５】
ＤＭＡコントローラ１４は、クロスバ１２およびＩ／Ｏバス１３に接続されている。そして、ＤＭＡコントローラ１４は、自立的にまたはプロセッサエレメントＰＥ０〜ＰＥ７からの指示に応じて、出力バッファ領域３（３Ａ〜３Ｈ）に格納されている制御データを対応する制御対象装置へ転送する。
【００２６】
プロセッサエレメントＰＥ０〜ＰＥ７とクロスバ１２との間には、それぞれスイッチ３１が設けられている。また、プロセッサエレメントＰＥ０〜ＰＥ７とＩ／Ｏバス１３との間には、それぞれスイッチ３２が設けられている。さらに、プロセッサエレメントＰＥ０〜ＰＥ７とＰＥ間通信パス１１との間には、それぞれスイッチ３３が設けられている。
【００２７】
構成制御ユニット３４は、ＰＥ間通信パス１１に接続されており、任意のプロセッサエレメントからのコマンドに従って、対応するプロセッサエレメントが備えるスイッチ３１〜３３を制御する。例えば、プロセッサエレメントＰＥ０の故障が検出されたときは、構成制御ユニット３４は、そのプロセッサエレメントＰＥ０のスイッチ３１〜３３をオフ状態に制御する。これにより、プロセッサエレメントＰＥ０は、マルチプロセッサシステムの共有資源および他のプロセッサエレメントから切り離される。
【００２８】
図３は、実施形態のマルチプロセッサシステムのソフトウェア構成を示す図である。図３に示すように、各プロセッサエレメントＰＥ０〜ＰＥ７上でリアルタイムＯＳが動作する。このリアルタイムＯＳは、ＰＥ間通信機能を備えている。また、リアルタイムＯＳ上でアプリケーションＡ〜Ｈおよび監視プログラムＡ〜Ｈが動作する。この実施例では、各プロセッサエレメントに対して１つのアプリケーションおよび２つの監視プログラムが割り当てられる。ここで、互いに対応するアプリケーションおよび監視プログラム（すなわち、アプリケーションおよびそのアプリケーションの演算結果を監視する１組の監視プログラム）は、異なるプロセッサエレメントに割り当てられる。さらに、各プロセッサエレメント上で管理プログラムが動作する。管理プログラムは、後で詳しく説明するが、故障検出処理および復旧処理を実行する。
【００２９】
なお、管理プログラムは、図３に示すように各監視プログラムＡ〜Ｈから独立したプログラムとして設けてもいし、各監視プログラムＡ〜Ｈの一部として設けるようにしてもよい。管理プログラムは、各監視プログラムＡ〜Ｈから独立したプログラムとして設ける場合には、各プロセッサエレメントにそれぞれ常駐する。
【００３０】
リアルタイムＯＳは、アプリケーションＡ〜Ｈおよび監視プログラムＡ〜Ｈを任意のプロセッサエレメントＰＥ０〜ＰＥ７に割り当てることができる。ここで、アプリケーションＡ〜Ｄおよび監視プログラムＡ〜Ｄの割当ての変更は、例えば、リアルタイムＯＳのタスク切替え機能を利用して実現される。
【００３１】
図４は、本発明の実施形態のマルチプロセッサシステムの構成を示す図である。実施形態のマルチプロセッサシステムは、組込みシステムとして使用される。組込みシステムとは、制御すべき対象の装置に内蔵される情報処理システムであり、予め用意されているアプリケーションプログラムを実行することによりその装置の動作を制御する。制御対象装置は、特に限定されるものではないが、例えば、自動車である。
【００３２】
実施形態のマルチプロセッサシステムは、８個のプロセッサエレメントＰＥ０〜ＰＥ７を備え、制御対象装置４１Ａ〜４１Ｈの動作を制御する。なお、プロセッサエレメントの個数は、特に限定されるものではなく、４以上の任意の個数でよい。また、この実施例では、マルチプロセッサシステムが８個の装置４１Ａ〜４１Ｈを制御するが、プロセッサエレメントの個数および制御対象装置の個数は互いに一致している必要はない。
【００３３】
アプリケーションＡ〜Ｈは、それぞれ、制御対象装置４１Ａ〜４１Ｈの動作を制御するための手順を記述したソフトウェアプログラムである。そして、アプリケーションＡ〜Ｈは、図４においては、初期配置として、それぞれプロセッサエレメントＰＥ０〜ＰＥ７に割り当てられている。すなわち、アプリケーションＡ〜Ｈは、それぞれプロセッサエレメ
ントＰＥ０〜ＰＥ７上で実行される。そして、アプリケーションＡ〜Ｈの演算結果は、それぞれ、制御対象装置４１Ａ〜４１Ｈを制御するための制御データＡ〜Ｈとして出力バッファ領域３Ａ〜３Ｈに書き込まれる。なお、出力バッファ領域３Ａ〜３Ｈは、プロセッサエレメントＰＥ０〜ＰＥ７により共有されるメモリ（メインメモリ）２に設けられる。
【００３４】
アプリケーションＡ〜Ｈの配置は、必要に応じて動的に変更することができる。たとえば、アプリケーションＡは、プロセッサエレメントＰＥ０に割り当てられる必要はなく、他のプロセッサエレメントに割り当てられてもよい。ただし、各アプリケーションの書込み領域は、そのアプリケーションを実行するプロセッサエレメントには依存しない。すなわち、例えば、アプリケーションＡにより生成される制御データは、基本的に、アプリケーションＡがいずれのプロセッサエレメントＰＥ０〜ＰＥ７により実行される場合であっても、出力バッファ領域３Ａに書き込まれる。なお、各アプリケーションが制御データを生成して対応する出力バッファ領域に書き込む周期は、アプリケーションまたは制御対象装置の特性に依存する。
【００３５】
ＤＭＡコントローラ１４は、出力バッファ領域３Ａ〜３Ｈに格納されている制御データＡ〜Ｈを、それぞれ、制御対象装置４１Ａ〜４１Ｈへ転送する。すなわち、各アプリケーションＡ〜Ｈにより生成される制御データが制御対象装置４１Ａ〜４１Ｈに与えられる。そして、制御対象装置４１Ａ〜４１Ｈは、与えられた制御データＡ〜Ｈに従って動作する。なお、制御データは、必ずしもＤＭＡコントローラ１４によって転送される必要はなく、例えば、プロセッサエレメントＰＥ０〜ＰＥ７により転送（プログラムＩ／Ｏ転送など）されてもよい。
【００３６】
図５は、アプリケーションにより生成される制御データについて説明する図である。ここでは、３つのアプリケーション及び各アプリケーションにより生成される制御データを示す。
【００３７】
各アプリケーションは、自動車が備える各種センサ（たとえば、距離センサ、速度センサ、加速度センサ、ヨーレートセンサ、回転数センサ、電流センサ、フォトセンサ、温度センサ等）により得られる測定値等を利用して、対応する制御対象装置に与えるべき制御データを生成する。例えば、「プリクラッシュセーフティ用前方監視」は、「車間距離データ」および「相対速度データ」などを生成する。そして、これらの制御データは、例えば、ブレーキ制御システムに与えられる。この場合、ブレーキ制御システムは、例えば、自車と前方車両との間の距離が所定値よりも小さく、且つ、自車が前方車両に接近しつつあれば、自車の速度を低下させるように動作する。なお、各アプリケーションを実行するか否かは、ユーザが指定できるようにしてもよい。例えば、「ナイトビジョン用夜間人認識」は、日中は停止することができる。
【００３８】
出力モニタＡ〜Ｈは、監視プログラムＡ〜Ｈを実行することにより得られる機能であり、それぞれ、定期的に出力バッファ領域３Ａ〜３Ｈを参照し、対応するアプリケーションＡ〜Ｈにより生成される制御データＡ〜Ｈをチェックする。ここで、監視プログラムＡ〜Ｈは、それぞれ対応するアプリケーションＡ〜Ｈとは異なるプロセッサエレメントに割り当てられる。また、各アプリケーションの制御データを監視する１組の監視プログラムは、それぞれ、互いに異なるプロセッサエレメントに割り当てられる。この実施例では監視プログラムＡ〜Ｈは、初期状態として、下記のようにプロセッサエレメントＰＥ０〜ＰＥ７に割り当てられる。
（ａ）監視プログラムＡ（出力モニタＡ）は、プロセッサエレメントＰＥ７、ＰＥ１に割り当てられ、それぞれプロセッサエレメントＰＥ０上で動作するアプリケーションＡが生成する制御データＡを監視する。ＰＥ７が第１チェッカとして動作し、ＰＥ１が第２チェッカとして動作する。
（ｂ）監視プログラムＢ（出力モニタＢ）は、プロセッサエレメントＰＥ０、ＰＥ２に割り当てられ、それぞれプロセッサエレメントＰＥ１上で動作するアプリケーションＢが生成する制御データＢを監視する。ＰＥ０が第１チェッカとして動作し、ＰＥ２が第２チェッカとして動作する。
（ｃ）監視プログラムＣ（出力モニタＣ）は、プロセッサエレメントＰＥ１、ＰＥ３に割り当てられ、それぞれプロセッサエレメントＰＥ２上で動作するアプリケーションＣが生成する制御データＣを監視する。ＰＥ１が第１チェッカとして動作し、ＰＥ３が第２チェッカとして動作する。
（ｄ）監視プログラムＤ（出力モニタＤ）は、プロセッサエレメントＰＥ２、ＰＥ４に割り当てられ、それぞれプロセッサエレメントＰＥ３上で動作するアプリケーションＤが生成する制御データＤを監視する。ＰＥ２が第１チェッカとして動作し、ＰＥ４が第２チェッカとして動作する。
（ｅ）監視プログラムＥ（出力モニタＥ）は、プロセッサエレメントＰＥ３、ＰＥ５に割り当てられ、それぞれプロセッサエレメントＰＥ４上で動作するアプリケーションＥが生成する制御データＥを監視する。ＰＥ３が第１チェッカとして動作し、ＰＥ５が第２チェッカとして動作する。
（ｆ）監視プログラムＦ（出力モニタＦ）は、プロセッサエレメントＰＥ４、ＰＥ６に割り当てられ、それぞれプロセッサエレメントＰＥ５上で動作するアプリケーションＦが生成する制御データＦを監視する。ＰＥ４が第１チェッカとして動作し、ＰＥ６が第２チェッカとして動作する。
（ｇ）監視プログラムＧ（出力モニタＧ）は、プロセッサエレメントＰＥ５、ＰＥ７に割り当てられ、それぞれプロセッサエレメントＰＥ６上で動作するアプリケーションＧが生成する制御データＧを監視する。ＰＥ５が第１チェッカとして動作し、ＰＥ７が第２チェッカとして動作する。
（ｈ）監視プログラムＨ（出力モニタＨ）は、プロセッサエレメントＰＥ６、ＰＥ０に割り当てられ、それぞれプロセッサエレメントＰＥ７上で動作するアプリケーションＨが生成する制御データＨを監視する。ＰＥ６が第１チェッカとして動作し、ＰＥ０が第２チェッカとして動作する。
【００３９】
このようにしてアプリケーションＡ〜Ｈおよび監視プログラムＡ〜Ｈが配置されると、アプリケーションＡ〜Ｈにより生成されるすべての制御データを、他のプロセッサエレメントを利用して２重に監視することが可能となる。
【００４０】
実施形態のマルチプロセッサシステムは、実行アプリ管理テーブル５１および実行ＰＥ管理テーブル５２を備える。実行アプリ管理テーブル５１は、図６（ａ）に示すように、各プロセッサエレメントの動作状態を管理する。すなわち、各プロセッサエレメントについて、有効／無効を表す情報、各プロセッサエレメントに割り当てられているアプリケーションを識別する情報、各プロセッサエレメントに第１チェッカおよび第２チェッカとして割り当てられている監視プログラムを識別する情報を管理する。一方、実行ＰＥ管理テーブル５２は、図６（ｂ）に示すように、各プログラムが割り当てられたプロセッサエレメントを管理する。すなわち、各アプリケーションについて、有効／無効を表す情報、各アプリケーションを実行しているプロセッサエレメントを識別する情報、各アプリケーションに対応する監視プログラムを第１チェッカおよび第２チェッカとして実行しているプロセッサエレメントを識別する情報を管理する。なお、これらのテーブル５１、５２は、メモリ２に設けられる。そして、これらのテーブル５１、５２は、後で詳しく説明するが、アプリケーションおよび／または監視プログラムの配置の変更に伴って更新される。
【００４１】
出力モニタＡ〜Ｈは、それぞれ、予め決められた時間間隔で出力バッファ領域３Ａ〜３Ｈに一時的に格納されている対応する制御データＡ〜Ｈを読み出し、アプリケーション毎に予め決められている閾値と比較する。ここで、閾値は、制御データの特性に応じて設定
されており、上限値だけの場合もあるし、下限値だけの場合もあるし、上限値および下限値の双方である場合もある。また、各アプリケーションにより生成される制御データは、１つの出力値だけの場合もあるし、複数の出力値を含む場合もある。例えば、図３に示す「プリクラッシュセーフティ用前方監視」は、２つの出力値（車間距離データ、相対速度データ）を含んでいる。そして、制御データが複数の出力値を含む場合には、各出力値と対応する閾値とがそれぞれ比較される。
【００４２】
図７は、出力モニタの動作例を示す図である。ここでは、アプリケーションＡを実行することにより制御データＡとしての出力値が一定間隔で生成されるものとする。生成される出力値は、順次、対応する出力バッファ領域３Ａに書き込まれる。また、１組の出力モニタＡは、それぞれ順次、その出力バッファ領域３Ａから出力を取得する。各出力モニタＡは、取得した出力値を、順次、１組の閾値（上限閾値および下限閾値）と比較する。そして、取得した出力値が上限閾値を超えていた場合または下限閾値よりも小さかった場合には、制御データが「異常出力」であると判断する。なお、上述の判断方法は、一実施例であり、各アプリケーションの特性に応じて最適な判断方法を採用することができる。
【００４３】
各プロセッサエレメントは、それぞれ、基本的に、割り当てられたアプリケーションを実行する。ただし、各アプリケーションについてそれぞれ監視時間間隔が予め設定されている。そして、アプリケーションは監視時間間隔ごとにいったん停止され、監視プログラムが起動される。また、監視プログラムの処理が終了すると、アプリケーションが再開される。例えば、図４において、プロセッサエレメントＰＥ０は、アプリケーションＡを実行し、監視時間間隔ごとに監視プログラムＢおよび監視プログラムＨを実行する。なお、アプリケーションと監視プログラムとの間の切替えは、例えば、リアルタイムＯＳのタスク切替え機能により実現される。
【００４４】
出力バッファ領域３Ａ〜３Ｈから読み出した制御データが閾値範囲から外れていたときは、出力モニタＡ〜Ｈは、その制御データを生成したプロセッサエレメント（または、その制御データを生成したアプリケーション）が故障していると判断する。例えば、プロセッサエレメントＰＥ１、ＰＥ７上で動作する１組の出力モニタＡは、制御データＡが異常値であることを検出すると、プロセッサエレメントＰＥ０（または、プロセッサエレメントＰＥ０上で動作するアプリケーションＡ）が故障していると判断する。
【００４５】
なお、監視プログラムＡ〜Ｈの配置は、必要に応じて動的に変更することができる。例えば、監視プログラムＡは、図４では、プロセッサエレメントＰＥ１、ＰＥ７に配置されているが、他の互いに異なるプロセッサエレメントに割り当てられてもよい。ただし、監視プログラムは、対応するアプリケーションとは異なるプロセッサエレメントに配置されなければならない。また、各監視プログラムが参照する出力バッファ領域は、その監視プログラムを実行するプロセッサエレメントには依存しない。すなわち、たとえば、監視プログラムＡは、基本的に、いずれのプロセッサエレメントにより実行される場合であっても、出力バッファ領域３Ａを参照する。また、各監視プログラムが対応する出力バッファ領域を参照する周期は、制御対象装置の特性に依存する。
【００４６】
監視プログラムＡ〜Ｈにより実現される出力モニタＡ〜Ｈは、それぞれアプリケーションＡ〜Ｈに応じた監視機能を提供する。すなわち、出力モニタＡ〜Ｈの動作は、基本的に互いに異なっている。よって、アプリケーションの配置が変わると、それに応じて監視プログラムの配置も変更する必要がある。
【００４７】
ここで、図８および図９を参照しながら、出力モニタによる故障検出手順について説明する。なお、各出力モニタは、図８に示すフローチャートの処理を定期的に実行する。このとき、各出力モニタは、それぞれ自分は第１チェッカとして動作しているのか、第２チ
ェッカとして動作しているのかを認識しているものとする。
【００４８】
ステップＳ１およびＳ２では、対応する出力バッファ領域を参照することにより、制御データとしての出力値をチェックする。出力値が異常であれば、ステップＳ３およびＳ４において、図９に示す出力モニタ判定結果テーブルを参照し、他方のチェッカの判定結果を読み出す。すなわち、例えば、第１チェッカとして動作する出力モニタＡであれば、第２チェッカとして動作する出力モニタＡの判定結果を読み出す。そして、読み出した判定結果が「１（異常）」であれば、第１および第２チェッカの判定結果がいずれも「異常」であるので、再配置手順へ進む。なお、再配置手順を実行するときは、ステップＳ５において、出力モニタ判定結果テーブルの他方のチェッカの判定結果をクリアする。一方、読み出した判定結果が「０（正常）」であれば、出力モニタ判定結果テーブルの自分のフィールドに「１」を設定して処理を終了する。
【００４９】
このように、実施形態のマルチプロセッサシステムでは、１つのアプリケーションに対して２つの出力モニタが実装され、それら２つの出力モニタの双方において「異常」が検出された場合に再配置手順が実行される。
【００５０】
＜故障発生時の動作＞
図１０は、プロセッサエレメントが故障したときの動作を説明する図である。なお、マルチプロセッサシステムの構成は、図４に示したものと同じである。また、故障が発生した時点におけるアプリケーションＡ〜Ｈおよび監視プログラムＡ〜Ｈの配置も、図２に示した状態と同じである。すなわち、実行アプリ管理テーブル５１および実行ＰＥ管理テーブル５２は、それぞれ図６（ａ）および図６（ｂ）に示す状態である。さらに、アプリケーションＡ〜Ｈには、予め優先順位が設定されているものとする。この実施例では、アプリケーションＡの優先順位が最も高く、以下順番にアプリケーションＢ〜Ｇが続き、アプリケーションＨの優先順位が最も低いものとする。
【００５１】
上記構成のマルチプロセッサシステムにおいて、プロセッサエレメントＰＥ１が故障したものとする。この場合、プロセッサエレメントＰＥ１上で動作しているアプリケーションＢにより生成される制御データＢが異常値となる。以下、制御データＢが異常値となってときに実行される復旧手順（再配置手順）を、図１１に示すフローチャートを参照しながら説明する。
【００５２】
（１）プロセッサエレメントＰＥ０上で動作している出力モニタＢ、およびプロセッサエレメントＰＥ２上で動作している出力モニタＢが、制御データＢが閾値範囲から外れたことを検出する。なお、上記２つの出力モニタＢは、それぞれ任意のタイミングで制御データＢの異常を検出する。そして、制御データＢが異常であることを後で検出した方の出力モニタＢ（または、その出力モニタＢと同じプロセッサエレメントに実装されている管理プログラム）が以下の処理を実行する。
【００５３】
（２：ステップＳ１１）実行ＰＥ管理テーブル５２を参照し、故障したプロセッサエレメントとして、制御データＢを生成したアプリケーションＢを実行しているプロセッサエレメント（ここでは、ＰＥ１）を検出する。また、アプリケーションＢを監視する監視プログラムＢを実行しているプロセッサエレメント（ここでは、第１チェッカ：ＰＥ０、第２チェッカ：ＰＥ２）を検出する。そして、マルチプロセッサシステムから故障したプロセッサエレメントＰＥ１を切り離す旨の指示を構成制御ユニット３４に送る。構成制御ユニット３４は、この指示に従って、プロセッサエレメントＰＥ１に接続するスイッチ３１〜３３をオフ状態に制御する。これにより、故障したプロセッサエレメントＰＥ１がマルチプロセッサシステムから切り離される。
【００５４】
（３：ステップＳ１２）実行アプリ管理テーブル５１を参照し、故障したプロセッサエレメント上で動作していた出力モニタにより監視されるアプリケーションを検出する。この実施例では、プロセッサエレメントＰＥ１において、第１チェッカとして出力モニタＣが動作し、第２チェッカとして出力モニタＡが動作している。よって、アプリケーションＣ、Ａが検出される。
【００５５】
（４：ステップＳ１３）実行ＰＥ管理テーブル５２を参照し、優先度の最も低いアプリケーションＨを実行しているプロセッサエレメントを検出する。この実施例では、プロセッサエレメントＰＥ７が検出される。続いて、そのアプリケーションＨの出力を監視する出力モニタを実行しているプロセッサエレメントを検出する。この実施例では、プロセッサエレメントＰＥ６、ＰＥ０が検出される。
【００５６】
（５：ステップＳ１４）アプリケーションを再配置する。まず、優先度の最も低いアプリケーションＨを停止させる。すなわち、プロセッサエレメントＰＥ７にアプリケーションＨの実行を終了させる。続いて、故障したプロセッサエレメントＰＥ１が実行していたアプリケーションＢを、プロセッサエレメントＰＥ７に実行させる。この再配置に伴い、実行アプリ管理テーブル５１および実行ＰＥ管理テーブル５２は、それぞれ図１２（ａ）および図１２（ｂ）に示すように更新される。
【００５７】
（６：ステップＳ１５）アプリケーションの再配置に応じて、監視プログラムの再配置を行う。まず、停止したアプリケーションＨの出力を第１チェッカおよび第２チェッカとして監視していたプロセッサエレメントＰＥ６、ＰＥ０に、それぞれ、故障したプロセッサエレメントＰＥ１上で実行されていたアプリケーションＢを監視するための監視プログラムＢを割り当てる。すなわち、プロセッサエレメントＰＥ６に第１チェッカとして監視プログラムＢを割り当てると共に、プロセッサエレメントＰＥ０に第２チェッカとして監視プログラムＢを割り当てる。この再配置に伴い、実行アプリ管理テーブル５１および実行ＰＥ管理テーブル５２は、それぞれ図１３（ａ）および図１３（ｂ）に示すように更新される。
【００５８】
（７：ステップＳ１６）故障したプロセッサエレメントＰＥ１上で動作していたアプリケーションＢを第１チェッカおよび第２チェッカとして監視していたプロセッサエレメントＰＥ０、ＰＥ２に、それぞれ、故障プロセッサエレメントＰＥ１上で動作していた監視プログラムＣ、Ａを割り当てる。すなわち、プロセッサエレメントＰＥ０に第１チェッカとして監視プログラムＣを割り当てると共に、プロセッサエレメントＰＥ２に第２チェッカとして監視プログラムＡを割り当てる。この再配置に伴い、実行アプリ管理テーブル５１および実行ＰＥ管理テーブル５２は、それぞれ図１４（ａ）および図１４（ｂ）に示すように更新される。
【００５９】
上記手順により、故障したプロセッサエレメントＰＥ１がマルチプロセッサシステムから切り離されると共に、優先度の最も低いアプリケーションＨが停止する。このとき、他のアプリケーションＡ〜Ｇおよびそれらを監視するための監視プログラムＡ〜Ｇが再配置される。この結果、図１０に示す動作状態が得られる。
【００６０】
なお、上述したように、アプリケーションＡ〜Ｈは、プロセッサエレメントに依存することなく、それぞれ生成した制御データＡ〜Ｈを対応する出力バッファ領域３Ａ〜３Ｈに書き込む。また、監視プログラムＡ〜Ｈは、プロセッサエレメントに依存することなく、それぞれ対応する出力バッファ領域３Ａ〜３Ｈを参照する。したがって、プロセッサエレメントＰＥ１が切り離されてアプリケーションおよび監視プログラムが再配置されても、出力モニタＡ〜Ｇは、それぞれ制御データＡ〜Ｇをチェックすることができる。
【００６１】
また、出力モニタは、制御データの異常を検出すると、ＤＭＡコントローラ１４に対してその制御データの転送を中止する旨の指示を与える。これにより、プロセッサエレメントが故障した場合には、そのプロセッサエレメント上で生成される制御データが制御対象装置へ転送されることが即座に停止される。よって、制御対象装置が誤動作を起こすことが抑制される。この後、アプリケーションおよび監視プログラムの再配置が終了すると、ＤＭＡコントローラ１４は制御データの転送を再開する。
【００６２】
さらに、上述の実施例においては、出力モニタ（監視プログラム）がプロセッサエレメントの故障を検出しているが、他の方法（例えば、特許文献１〜４に記載の方法）によりプロセッサエレメントの故障が検出された場合も同様の復旧手順が実行される。
【００６３】
さらに、上述の実施例では、アプリケーションの優先順位に基づいて再配置が行われているが、本発明はこれに限定されるものではない。
次に、プロセッサエレメントＰＥ１の故障に起因して再配置を行った後に、更にプロセッサエレメントＰＥ４上で動作しているアプリケーションＥから出力される制御データＥが異常値であった場合の手順について説明する。この場合の手順は、基本的に、１つ目のプロセッサエレメントが故障した場合と同じである。即ち、下記の手順（８）〜（１４）が行われる。
【００６４】
（８）プロセッサエレメントＰＥ３上で動作している出力モニタＥ、およびプロセッサエレメントＰＥ５上で動作している出力モニタＥが、制御データＥの異常を検出する。
（９：ステップＳ１１）故障したプロセッサエレメントとして、アプリケーションＥを実行しているプロセッサエレメントＰＥ４を検出する。また、第１チェッカとして監視プログラムＥを実行しているプロセッサエレメントＰＥ３および第２チェッカとして監視プログラムＥを実行しているプロセッサエレメントＰＥ５を検出する。そして、マルチプロセッサシステムから故障したプロセッサエレメントＰＥ４を切り離す。
【００６５】
（１０：ステップＳ１２）故障したプロセッサエレメント上で動作していた出力モニタにより監視されるアプリケーションを検出する。この実施例では、プロセッサエレメントＰＥ４において、第１チェッカとして出力モニタＦが動作し、第２チェッカとして出力モニタＤが動作している。よって、アプリケーションＦ、Ｄが検出される。
【００６６】
（１１：ステップＳ１３）優先度の最も低いアプリケーションを実行しているプロセッサエレメントを検出する。この時点では、アプリケーションＨが既に停止しているので、アプリケーションＧを実行しているプロセッサエレメントＰＥ６が検出される。続いて、そのアプリケーションＧの出力を監視する出力モニタを実行しているプロセッサエレメントを検出する。この実施例では、プロセッサエレメントＰＥ７、ＰＥ５が検出される。
【００６７】
（１２：ステップＳ１４）アプリケーションを再配置する。すなわち、優先度の最も低いアプリケーションＧを停止させる。すなわち、プロセッサエレメントＰＥ６にアプリケーションＧの実行を終了させる。また、故障したプロセッサエレメントＰＥ４が実行していたアプリケーションＥを、プロセッサエレメントＰＥ６に実行させる。
【００６８】
（１３：ステップＳ１５）アプリケーションの再配置に応じて、監視プログラムの再配置を行う。まず、停止したアプリケーションＧの出力を第１チェッカおよび第２チェッカとして監視していたプロセッサエレメントＰＥ５、ＰＥ７に、それぞれ、故障したプロセッサエレメントＰＥ４上で実行されていたアプリケーションＥを監視するための監視プログラムＥを割り当てる。すなわち、プロセッサエレメントＰＥ５に第１チェッカとして監視プログラムＥを割り当てると共に、プロセッサエレメントＰＥ７に第２チェッカとして監視プログラムＥを割り当てる。
【００６９】
（１４：ステップＳ１６）故障したプロセッサエレメントＰＥ４上で動作していたアプリケーションＥを第１チェッカおよび第２チェッカとして監視していたプロセッサエレメントＰＥ３、ＰＥ５に、それぞれ、故障プロセッサエレメントＰＥ４上で動作していた監視プログラムＦ、Ｄを割り当てる。すなわち、プロセッサエレメントＰＥ３に第１チェッカとして監視プログラムＦを割り当てると共に、プロセッサエレメントＰＥ５に第２チェッカとして監視プログラムＤを割り当てる。
【００７０】
上記手順１２〜手順１４におけるアプリケーションおよび監視プログラムの再配置処理により、実行アプリ管理テーブル５１および実行ＰＥ管理テーブル５２は、それぞれ図１６（ａ）および図１６（ｂ）に示すように更新される。このように、実施形態のマルチプロセッサシステムにおいては、２以上のプロセッサエレメントが故障した場合には、その都度、アプリケーションおよび監視プログラムを再配置する。これにより、優先度の高いアプリケーションの動作を継続し、且つ、動作を継続するアプリケーションにより生成される制御データを常に複数の監視プログラムで監視することができる。よって、信頼性の高いマルチプロセッサシステムを実現できる。
【００７１】
ところで、特許文献１〜４に記載されているシステムでは、各プロセッサエレメントの状態を表す情報（例えば、生存しているか否かを表す情報など）が他のプロセッサエレメントにより監視される。この場合、各プロセッサエレメントに実装すべき監視プログラムは、同じものである。したがって、特許文献１〜４に記載のシステムでは、あるプロセッサエレメントが故障した場合であっても、監視プログラムを再配置する必要がない。
【００７２】
これに対して、実施形態のマルチプロセッサシステムは、各プロセッサエレメント上で異なるアプリケーションが動作し、その演算結果（実施例では、制御対象装置に与えるべき制御データ）を監視する構成である。しかし、演算結果のビット数、演算を実行する間隔、演算結果が適切か否かを判断するための閾値範囲などは、基本的に、アプリケーション毎に異なっている。このため、各アプリケーションの演算結果をチェックするための監視プログラムも、互いに異なっている。したがって、プロセッサエレメントの故障等に起因してアプリケーションを再配置したときには、それに応じて監視プログラムも再配置される。これにより、プロセッサエレメントの個数を増やすことなく、優先順位の高いアプリケーションの動作を継続すると共に、それらのアプリケーションの信頼性を確保することができる。
【００７３】
＜他の実施形態１＞
上述の実施形態では、各アプリケーションにより生成される制御データがそれぞれ２つの出力モニタによって監視される構成を示したが、本発明はこれに限定されるものではない。すなわち、本発明のマルチプロセッサシステムは、各アプリケーションにより生成される制御データがそれぞれ３以上の出力モニタによって監視される構成であってもよい。例えば、図２に示すマルチプロセッサシステムにおいて、各アプリケーションに対してそれぞれ３つの出力モニタを設ける場合には、実行アプリ管理テーブル５１および実行ＰＥ管理テーブル５２は、それぞれ図１７（ａ）および図１７（ｂ）に示す構成となる。
【００７４】
図１８は、上記構成のマルチプロセッサシステムにおいて故障が検出された場合の再配置手順を示すフローチャートである。各アプリケーションに対して３個の出力モニタを設ける構成における再配置手順は、基本的には、各アプリケーションに対して２個の出力モニタを設ける場合と同じである。ただし、３個の出力モニタを設ける構成においては、アプリケーションの再配置に応じて、第１〜第３チェッカの再配置が必要となる。例えば、プロセッサエレメントＰＥ１が故障した場合には、再配置後に図１９に示す状態に遷移する。
【００７５】
＜他の実施形態２＞
上述の実施例では、あるアプリケーションの演算結果が異常であった場合に、そのアプリケーションを実行しているプロセッサエレメントが故障していると判断したが、そのアプリケーション自体に障害が発生していると判断するようにしてもよい。この場合、障害が発生していると判断されたアプリケーションは、例えば、再ブートしてもよいし、リセットしてもよいし、停止させてもよい。
【００７６】
（付記１）
複数のプロセッサエレメントを備えるマルチプロセッサシステムであって、
制御対象装置を制御するための制御データを生成する複数の制御データ生成手段と、
対応する制御データ生成手段により生成される制御データを監視する複数の監視手段と、
前記複数の制御データ生成手段を前記複数のプロセッサエレメントに割り当てる第１の割当て手段と、
前記複数の制御データ生成手段の割当てに基づいて、各制御データ生成手段により生成される制御データが異なるプロセッサエレメント上で動作する２以上の対応する監視手段により監視されるように、前記複数の監視手段を前記複数のプロセッサエレメントに割り当てる第２の割当て手段と、
を有することを特徴とするマルチプロセッサシステム。
【００７７】
（付記２）
付記１に記載のマルチプロセッサシステムであって、
前記複数の制御データ生成手段によりそれぞれ生成される制御データを一時的に格納するメモリを備え、
前記複数の監視手段は、前記メモリに格納されている対応する制御データ生成手段により生成された制御データが正常であるか否かをチェックする
ことを特徴とするマルチプロセッサシステム。
【００７８】
（付記３）
付記１に記載のマルチプロセッサシステムであって、
前記複数の制御データ生成手段によりそれぞれ生成される制御データを一時的に格納するメモリと、
前記メモリから前記制御対象装置への制御データの転送を制御する転送制御手段、をさらに備え、
各制御データ生成手段に対して割り当てられた前記２以上の監視手段は、前記メモリに格納されている対応する制御データが正常であるか否かをチェックし、
前記転送制御手段は、前記２以上の監視手段によりその制御データが正常でないと判断されたときに、その制御データの前記メモリから前記制御対象装置への転送を停止する
ことを特徴とするマルチプロセッサシステム。
【００７９】
（付記４）
付記１に記載のマルチプロセッサシステムであって、
各制御データ生成手段に対して割り当てられた前記２以上の監視手段は、対応する制御データ生成手段により生成された制御データが正常でなかったときには、その制御データ生成手段を動かしているプロセッサエレメントが故障していると判断する
ことを特徴とするマルチプロセッサシステム。
【００８０】
（付記５）
付記４に記載のマルチプロセッサシステムであって、
故障していると判断されたプロセッサエレメントを当該マルチプロセッサシステムから切り離す復旧手段をさらに備える
ことを特徴とするマルチプロセッサシステム。
【００８１】
（付記６）
付記１に記載のマルチプロセッサシステムであって、
各制御データ生成手段に対して割り当てられた前記２以上の監視手段は、対応する制御データ生成手段により生成された制御データが正常でなかったときには、その制御データ生成手段が故障していると判断する
ことを特徴とするマルチプロセッサシステム。
【００８２】
（付記７）
付記６に記載のマルチプロセッサシステムであって、
故障していると判断された制御データ生成手段を再ブート、リセットまたは停止する復旧手段をさらに備える
ことを特徴とするマルチプロセッサシステム。
【００８３】
（付記８）
付記１に記載のマルチプロセッサシステムであって、
前記監視手段は、対応する制御データを一定時間間隔でチェックする
ことを特徴とするマルチプロセッサシステム。
【００８４】
（付記９）
付記１に記載のマルチプロセッサシステムであって、
前記第１の割当て手段は、前記監視手段により正常でない制御データが検出されたときに、その正常でない制御データを生成した制御データ生成手段が割り当てられているプロセッサエレメント以外の動作継続プロセッサエレメントに前記複数の制御データ生成手段の一部または全部を割り当て、
前記第２の割当て手段は、前記第１の割当て手段により前記動作継続プロセッサエレメントに割り当てられた各制御データ生成手段にそれぞれ対応する２以上の監視手段を、前記動作継続プロセッサエレメントのなかの互いに異なるプロセッサエレメントに割り当てる
ことを特徴とするマルチプロセッサシステム。
【００８５】
（付記１０）
付記１に記載のマルチプロセッサシステムであって、
各プロセッサエレメントが出力する自己申告情報または各プロセッサエレメント間で送受信する状態情報に基づいてプロセッサエレメントの故障を検出する故障検出手段をさらに備え、
前記第１の割当て手段は、前記故障検出により故障と判断されたプロセッサエレメント以外の動作継続プロセッサエレメントに前記複数の制御データ生成手段の一部または全部を割り当て、
前記第２の割当て手段は、前記第１の割当て手段により前記動作継続プロセッサエレメントに割り当てられた各制御データ生成手段にそれぞれ対応する２以上の監視手段を、前記動作継続プロセッサエレメントのなかの互いに異なるプロセッサエレメントに割り当てる
ことを特徴とするマルチプロセッサシステム。
【００８６】
（付記１１）
複数のプロセッサエレメントを備えるマルチプロセッサシステムであって、
複数のアプリケーション手段と、
対応するアプリケーション手段により得られる演算結果を監視する複数の監視手段と、
前記複数のアプリケーション手段を前記複数のプロセッサエレメントに割り当てる第１の割当て手段と、
前記複数のアプリケーション手段の割当てに基づいて、各アプリケーション手段により得られる演算結果が異なるプロセッサエレメント上で動作する２以上の監視手段により監視されるように、前記複数の監視手段を前記複数のプロセッサエレメントに割り当てる第２の割当て手段と、
を有することを特徴とするマルチプロセッサシステム。
【００８７】
（付記１２）
複数のプロセッサエレメントを備えるマルチプロセッサシステムにおいて任意のプロセッサエレメントが故障したときの復旧方法であって、
前記複数のプロセッサエレメントを利用してアプリケーションプログラムを実行することにより、制御対象装置を制御するための制御データを生成し、
前記複数のプロセッサエレメントを利用して各アプリケーションプログラムに対応する監視プログラムを実行することにより、対応する制御データの正常性をチェックし、
正常でない制御データを生成したプロセッサエレメントを停止または当該マルチプロセッサシステムから切り離し、
当該マルチプロセッサシステムにおいて動作を継続するプロセッサエレメントに優先度の高いアプリケーションプログラムを割り当て、
動作を継続するプロセッサエレメント上で実行されるアプリケーションプログラムにより生成される制御データが、それぞれ他のプロセッサエレメント上で実行される２以上の監視プログラムにより監視されるように、監視プログラムの割当てを変更する
ことを特徴とするマルチプロセッサシステムの復旧方法。
【図面の簡単な説明】
【００８８】
【図１】本発明の概念を説明する図である。
【図２】実施形態のマルチプロセッサシステムのハードウェア構成を示す図である。
【図３】実施形態のマルチプロセッサシステムのソフトウェア構成を示す図である。
【図４】本発明の実施形態のマルチプロセッサシステムの構成を示す図である。
【図５】アプリケーションにより生成される制御データについて説明する図である。
【図６】（ａ）は実行アプリ管理テーブルの実施例、（ｂ）は実行ＰＥ管理テーブルの実施例である。
【図７】出力モニタの動作例を示す図である。
【図８】故障検出手順を示すフローチャートである。
【図９】故障検出手順において参照される出力モニタ判定結果テーブルの実施例である。
【図１０】プロセッサエレメントが故障したときの動作を説明する図である。
【図１１】再配置手順のフローチャートである。
【図１２】再配置手順の過程を説明する図（その１）である。
【図１３】再配置手順の過程を説明する図（その２）である。
【図１４】再配置手順が終了した状態を示す図である。
【図１５】第２の故障が検出されたときの再配置手順を説明する図である。
【図１６】第２の故障が検出されたときの再配置手順が終了した状態を示す図である。
【図１７】３個の出力モニタを備える構成における管理テーブルの実施例である。
【図１８】３個の出力モニタを備える構成における再配置手順のフローチャートである。
【図１９】３個の出力モニタを備える構成における再配置手順が終了した状態を示す図である。
【符号の説明】
【００８９】
１      プロセッサユニット
２      メモリ
３（３Ａ〜３Ｈ）  出力バッファ領域
１１    ＰＥ間通信パス
１２    クロスバ（ＸＢ）
１３    Ｉ／Ｏバス
１４    ＤＭＡコントローラ
３１〜３３  スイッチ
３４    構成制御ユニット
４１Ａ〜４１Ｈ  制御対象装置
５１    実行アプリ管理テーブル
５２    実行ＰＥ管理テーブル
【図１】
2008234117.tif 000003
【図２】
2008234117.tif 000004
【図３】
2008234117.tif 000005
【図４】
2008234117.tif 000006
【図５】
2008234117.tif 000007
【図６】
2008234117.tif 000008
【図７】
2008234117.tif 000009
【図８】
2008234117.tif 000010
【図９】
2008234117.tif 000011
【図１０】
2008234117.tif 000012
【図１１】
2008234117.tif 000013
【図１２】
2008234117.tif 000014
【図１３】
2008234117.tif 000015
【図１４】
2008234117.tif 000016
【図１５】
2008234117.tif 000017
【図１６】
2008234117.tif 000018
【図１７】
2008234117.tif 000019
【図１８】
2008234117.tif 000020
【図１９】
2008234117.tif 000021