(57)【特許請求の範囲】
【請求項１】
ノードからノード情報を取得する３つ以上の演算装置を備え、
各前記演算装置は、
前記ノード情報から出力信号を生成する出力信号生成部と、
各前記演算装置の前記出力信号生成部が生成した前記出力信号を比較し、多数決信号を出力する多数決回路と、
各前記演算装置間で共有されるタイムコードを提供するタイムコード提供部と、
自装置の前記出力信号生成部が生成した前記出力信号と前記タイムコードを変換したビットパターンとの論理演算を行い、演算結果を出力する演算部と、
自装置以外の演算装置の前記演算部が出力した前記演算結果を繰り返し受信する通信部と、
受信した前記演算結果の値が前回に受信した演算結果の値と同じである場合に、前記自装置以外の演算装置の前記出力信号生成部が生成した前記出力信号が未更新であると判定し、第１の未更新信号を出力する第１の未更新判定部と、
前記多数決信号と前記第１の未更新信号とに基づいて、前記３つ以上の演算装置の故障を診断する故障診断部と、
を備えるフォールトトレラントシステム。
【請求項２】
前記タイムコード提供部から提供されたタイムコードに基づいて、自装置の前記出力信号生成部が生成した出力信号が未更新であるか否かを判定し、第２の未更新信号を出力する第２の未更新判定部を備え、
前記故障診断部は、前記多数決信号と前記第１の未更新信号と前記第２の未更新信号とに基づいて、前記３つ以上の演算装置の故障を診断することを特徴とする請求項１に記載のフォールトトレラントシステム。
【請求項３】
前記故障診断部は、前記多数決信号と前記第１の未更新信号と前記第２の未更新信号とを合成した故障診断値と、故障が発生した場合の要因を示す故障要因診断結果と、の対応関係を示す故障要因分類テーブルを参照し、前記３つ以上の演算装置の故障を診断することを特徴とする請求項２に記載のフォールトトレラントシステム。
【請求項４】
前記演算部は、前記タイムコードを変換したビットパターンと前記出力信号とのＸＯＲ演算を行い、前記演算結果としてＸＯＲ演算結果を出力することを特徴とする請求項１から３のいずれか１項に記載のフォールトトレラントシステム。
【請求項５】
前記タイムコードを変換したビットパターンは、第１のビットパターンと当該第１のビットパターンとは異なる第２のビットパターンを有し、
前記演算部は、前記ＸＯＲ演算を繰り返し行う場合に、前記ＸＯＲ演算結果の値が前回出力したＸＯＲ演算結果の値と異なる値となるように前記第１のビットパターンまたは前記第２のビットパターンのいずれかを選択することを特徴とする請求項４に記載のフォールトトレラントシステム。
【請求項６】
前記第１のビットパターンと前記第２のビットパターンとは、ビット反転の関係であることを特徴とする請求項５に記載のフォールトトレラントシステム。
【請求項７】
前記故障診断部が自装置に故障があることを診断した場合に外部との通信を遮断する遮断部を備えることを特徴とする請求項１から６のいずれか１項に記載のフォールトトレラントシステム。
【請求項８】
前記遮断部は、前記故障診断部が自装置以外の演算装置に故障があることを診断した場合に当該演算装置との通信を遮断することを特徴とする請求項７に記載のフォールトトレラントシステム。
【請求項９】
ノードからノード情報を取得する３つ以上の演算装置を備え、
各前記演算装置は、
前記ノード情報から出力信号を生成し、生成された前記出力信号を基づいてＣＲＣデータを生成するＣＲＣデータ生成部と、
各前記演算装置の前記ＣＲＣデータ生成部が生成した前記ＣＲＣデータを比較し、多数決信号を出力する多数決回路と、
各前記演算装置間で共有されるタイムコードを提供するタイムコード提供部と、
自装置の前記ＣＲＣデータ生成部が生成した前記ＣＲＣデータと前記タイムコードを変換したビットパターンとの論理演算を行い、演算結果を出力する演算部と、
自装置以外の演算装置の前記演算部が出力した前記演算結果を繰り返し受信する通信部と、
受信した前記演算結果の値が前回に受信した演算結果の値と同じである場合に、前記自装置以外の演算装置の前記ＣＲＣデータ生成部が生成した前記出力信号が未更新であると判定し、第１の未更新信号を出力する第１の未更新判定部と、
前記多数決信号と前記第１の未更新信号とに基づいて、前記３つ以上の演算装置の故障を診断する故障診断部と、
を備えるフォールトトレラントシステム。
【請求項１０】
ノードからノード情報を取得する３つ以上の演算装置と、
前記３つ以上の演算装置の故障を診断する故障診断装置と、を備え、
各前記演算装置は、
前記ノード情報から出力信号を生成する出力信号生成部と、
各前記演算装置にて共有されるタイムコードを提供するタイムコード提供部と、
自装置の前記出力信号生成部が生成した前記出力信号と前記タイムコードを変換したビットパターンとの論理演算を行い、演算結果を出力する演算部と、を備え、
前記故障診断装置は、
各前記演算装置の前記出力信号生成部が生成した前記出力信号を比較し、多数決信号を出力する多数決回路と、
各前記演算装置の前記演算部が出力した演算結果を繰り返し受信する通信部と、
前記受信した演算結果の値が前回に受信した演算結果の値と同じである場合に、当該演算結果を出力した演算装置の前記出力信号生成部が生成した前記出力信号が未更新であると判定し、未更新信号を出力する未更新判定部と、
前記多数決信号と前記未更新信号とに基づいて、前記３つ以上の演算装置の故障を診断する故障診断部と、
を備えることを特徴とするフォールトトレラントシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は３つ以上の演算装置を備えたフォールトトレンラントシステムに関するものである。
【背景技術】
【０００２】
人工衛星などの高い信頼性と継続性が要求される機器において、故障検知、分離及び再構成機能（ＦＤＩＲ：Fault Detection, Isolation and Recovery）が求められている。ＦＤＩＲ機能を実現する手法として３台の演算装置からの演算結果を比較し多数決信号を出力する３重多数決回路を備えたフォールトトレラントシステムが一般的に用いられている。【０００３】
このようなフォールトトレラントシステムとして、３重多数決回路内に２台の演算装置にて故障が発生した場合は予め決められた値を出力するエラー判別回路を備えることで１台の演算装置での故障と２台の演算装置での故障とを判別し、２台の演算装置で故障が発生した場合も誤った出力がされることを防止し、装置が誤動作することを防ぐことのできるシステムが提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−３４２３８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術において、３重多数決回路は、各演算装置からの出力信号のみで故障の判別を行っている。そのため、故障要因の診断精度は低く、故障要因に適した復旧処理を細かく切り替えることができないという問題があった。【０００６】
本発明は前記のような問題点を解決するためになされたもので、故障要因の診断精度を向上し、故障要因に適した復旧処理を実現することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明のフォールトトレラントシステムは、ノードからノード情報を取得する３つ以上の演算装置を備え、各演算装置は、ノード情報から出力信号を生成する出力信号生成部と、各演算装置の出力信号生成部が生成した出力信号を比較し、多数決信号を出力する多数決回路と、各演算装置間で共有されるタイムコードを提供するタイムコード提供部と、自装置の出力信号生成部が生成した出力信号とタイムコードを変換したビットパターンとの論理演算を行い、演算結果を出力する演算部と、自装置以外の演算装置の演算部が出力した演算結果を繰り返し受信する通信部と、受信した演算結果の値が前回に受信した演算結果の値と同じである場合に、自装置以外の演算装置の出力信号生成部が生成した出力信号が未更新であると判定し、第１の未更新信号を出力する第１の未更新判定部と、多数決信号と第１の未更新信号とに基づいて、前記３つ以上の演算装置の故障を診断する故障診断部と、を備えるものである。
【０００８】
また、本発明のフォールトトレラントシステムは、ノードからノード情報を取得する３つ以上の演算装置を備え、各演算装置は、ノード情報から出力信号を生成し、生成された出力信号を基づいてＣＲＣデータを生成するＣＲＣデータ生成部と、各演算装置のＣＲＣデータ生成部にて生成されたＣＲＣデータを比較し、多数決信号を出力する多数決回路と、各演算装置間で共有されるタイムコードを提供するタイムコード提供部と、自装置のＣＲＣデータ生成部にて生成されたＣＲＣデータとタイムコードを変換したビットパターンとの論理演算を行い、演算結果を出力する演算部と、自装置以外の演算装置の演算部が出力した演算結果を繰り返し受信する通信部と、受信した演算結果の値が前回に受信した演算結果の値と同じである場合に、自装置以外の演算装置のＣＲＣデータ生成部が生成した出力信号が未更新であると判定し、第１の未更新信号を出力する第１の未更新判定部と、多数決信号と第１の未更新信号とに基づいて、３つ以上の演算装置の故障を診断する故障診断部と、を備えるものである。
【０００９】
また、本発明のフォールトトレラントシステムは、ノードからノード情報を取得する３つ以上の演算装置と、３つ以上の演算装置の故障を診断する故障診断装置と、を備え、各演算装置は、ノード情報から出力信号を生成する出力信号生成部と、各演算装置にて共有されるタイムコードを提供するタイムコード提供部と、自装置の出力信号生成部が生成した出力信号とタイムコードを変換したビットパターンとの論理演算を行い、演算結果を出力する演算部と、を備え、故障診断装置は、各演算装置の出力信号生成部が生成した出力信号を比較し、多数決信号を出力する多数決回路と、各演算装置の演算部が出力した演算結果を繰り返し受信する通信部と、受信した演算結果の値が前回に受信した演算結果の値と同じである場合に、当該演算結果を出力した演算装置の出力信号生成部が生成した出力信号が未更新であると判定し、未更新信号を出力する未更新判定部と、多数決信号と未更新信号とに基づいて、前記３つ以上の演算装置の故障を診断する故障診断部と、を備えるものである。
【発明の効果】
【００１０】
本発明にかかるフォールトトレラントシステムによれば、故障要因の診断精度を向上し、故障要因に適した復旧処理を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態１におけるフォールトトレラントシステムのシステム構成の一例を示す構成図である。
【図２】本発明の実施の形態１における演算装置の装置構成の一例を示す構成図である。
【図３】本発明の実施の形態１における演算装置の通信タイミングの一例を示す説明図である。
【図４】本発明の実施の形態１におけるＸＯＲ演算部におけるＸＯＲ演算の一例を示す説明図である。
【図５】本発明の実施の形態１における記録部のデータ構成の一例を示すデータ構成図である。
【図６】本発明の実施の形態１における多数決回路の構成の一例を示す構成図である。
【図７】本発明の実施の形態１における故障診断値のデータ構造の一例を示すデータ構造図である。
【図８】本発明の実施の形態１における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図９】本発明の実施の形態１における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図１０】本発明の実施の形態１における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図１１】本発明の実施の形態１における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図１２】本発明の実施の形態１における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図１３】本発明の実施の形態１における故障要因を識別するための識別子と、その識別子に対応する故障要因の説明が記載された図である。
【図１４】本発明の実施の形態１におけるマスターとして動作する演算装置の処理シーケンスの一例を示すフローチャートである。
【図１５】本発明の実施の形態１におけるフォールトトレンラントシステムの通信タイミングの一例を示す説明図である。
【図１６】本発明の実施の形態２におけるＸＯＲ演算部におけるＸＯＲ演算の一例を示す説明図である。
【図１７】本発明の実施の形態２における多数決回路の構成図の一例を示す構成図である。
【図１８】本発明の実施の形態３における演算装置の装置構成の一例を示す構成図である。
【図１９】本発明の実施の形態３における通信データの一例を示すデータ構造図である。
【図２０】本発明の実施の形態３における記録部のデータ構成の一例を示すデータ構成図である。
【図２１】本発明の実施の形態３における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図２２】本発明の実施の形態３における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図２３】本発明の実施の形態３における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図２４】本発明の実施の形態３における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図２５】本発明の実施の形態３における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図２６】本発明の実施の形態４におけるフォールトトレラントシステムのシステム構成の一例を示す構成図である。
【図２７】本発明の実施の形態４における演算装置の装置構成の一例を示す構成図である。
【図２８】本発明の実施の形態４における故障診断装置の装置構成の一例を示す構成図である。
【図２９】本発明の実施の形態４における記録部のデータ構成の一例を示すデータ構成図である。
【図３０】本発明の実施の形態４における故障要因を識別するための識別子と、その識別子に対応する故障要因の説明が記載された図である。
【図３１】本発明の実施の形態４における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図３２】本発明の実施の形態４における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図３３】本発明の実施の形態４における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図３４】本発明の実施の形態４における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【図３５】本発明の実施の形態４における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
【００１２】
以下に、本発明にかかる演算装置の実施の形態を図面に基づいて詳細に説明する。以下で参照する図面においては、同一もしくは相当する部分に同一の符号を付している。なお、この実施の形態によりこの発明が限定されるものではない。【００１３】
実施の形態１．
図１は、本発明の実施の形態１に係るフォールトトレラントシステム１００のシステム構成の一例を示す構成図である。フォールトトレラントシステム１００は、３台の演算装置１０−１〜１０−３、周辺装置であるＮ台のノード（Ｎｏｄｅ）１１−１〜１１−Ｎ、演算装置通信伝送路１２、出力信号伝送路１３、および入出力ネットワーク１４を備える。なお、説明のため演算装置を３台としているがこれに限定されず、任意に設定できる。【００１４】
演算装置１０−１〜１０−３は同一の構造を有し、いずれか１つがマスターとして動作し、残りの演算装置をスレーブとして制御する。なお、以降においては、演算装置１０−１をマスターとして動作するフォールトトレンラントシステム１００として説明する。【００１５】
演算装置１０−１〜１０−３は、ＣＰＵ（Central Processing Unit）やシステムＬＳＩ（Large Scale Integration）など演算を実行する装置であり、演算装置通信伝送路１２を介して相互に接続されており、演算結果や装置状態などお互いの情報を交換することができる。そして、マスターである演算装置１０−１は、入出力ネットワーク１４を介してノード１１から取得したノード情報を基に生成された出力信号を、出力信号伝送路１３を介して外部へ出力する。ここで、出力信号はアクチュエータの駆動信号など装置の制御信号に相当する。なお、演算装置１０−１〜１０−３の具体的な動作は後述する。【００１６】
ノード１１−１〜１１−Ｎは、ネットワークの接合点、中継点、分岐点等を示し、特にサーバ、コンピュータや通信機器などの通信の主体となる個々の機器である。【００１７】
演算装置通信伝送路１２および出力信号伝送路１３は、情報を相互に送受信できる伝送路であり、同軸ケーブルや光ケーブルなどの有線伝送路でもよいし、Ｗｉ−Ｆｉ（登録商標）やＢｌｕｅｔｏｏｔｈ（登録商標）などの無線伝送路でもよい。【００１８】
入出力ネットワーク１４は、情報を相互に送受信できる伝送路から構成されており、同軸ケーブルや光ケーブルなどの有線伝送路でもよいし、Ｗｉ−Ｆｉ（登録商標）やＢｌｕｅｔｏｏｔｈ（登録商標）などの無線伝送路でもよい。【００１９】
次に、演算装置１０−１の構成について図２を用いて説明する。図２は、本発明の実施の形態１における演算装置の装置構成の一例を示す構成図である。ここでは、演算装置１０−１について説明するが、演算装置１０−２および１０−３についても同様の構成であるため説明は省略する。演算装置１０−１は、スイッチ部２０−１〜２０−４、通信部２１−１〜２１−３、タイムコード提供部２２、処理部２３、記録部２４、ＸＯＲ復元部２５、多数決回路２６、未更新判定部２７−１〜２７−３、および故障診断部２８を備える。なお、図面において実線矢印は情報の流れ、点線矢印は制御命令の流れを示している。【００２０】
スイッチ部２０−１〜２０−４は、外部との通信接続を維持する、または遮断する実行部である。スイッチ部２０−１はノード１１−１〜１１−Ｎとの接続を、スイッチ部２０−２は演算装置１０−２との接続を、スイッチ部２０−３は演算装置１０−３との接続を、そしてスイッチ部２０−４は出力信号伝送路１４との接続を構成している。スイッチ部２０−１〜２０−４が本発明の遮断部に該当する。【００２１】
通信部２１−１〜２１−３は、後述する処理部２３から送信される通信制御命令に従い、それぞれスイッチ部２０−１〜２０−３を制御しノード１１、演算装置１０−２および１０−３との情報の送受信を制御する。【００２２】
タイムコード提供部２２は、演算装置の処理タイミングを示す時間情報であるタイムコードを提供する。タイムコード提供部２２は、水晶発振器とカウンタを組み合わせてタイムコードを生成する構成、演算装置の外部からクロック専用線を介して入力されるクロックをカウントし、タイムコードを生成する構成、または外部から有線あるいは無線ネットワークを介して通知された時刻に基づいてタイムコードを生成する構成とすることができる。また、内部の時間情報に基づいてタイムコードを生成する構成でも、外部から取得した時間情報に基づいてタイムコードを生成する構成でもよい。【００２３】
処理部２３は、タイムコード提供部２２から取得したタイムコードに応じて通信部２１−１〜２１−３へ通信制御命令を送信する。また、処理部２３は、出力信号生成部２３１とＸＯＲ演算部２３２を備える。【００２４】
出力信号生成部２３１は、通信部２１−１を介してノード１１から取得したノード情報を基に演算を実行し、出力信号を生成する。なお、以降においては、演算装置１０−１の出力信号生成部２３１が生成した出力信号を第１の出力信号とする。また、演算装置１０−２にて生成された出力信号を第２の出力信号と、演算装置１０−３にて生成された出力信号を第３の出力信号とする。【００２５】
ＸＯＲ演算部２３２は、第１の出力信号と、タイムコード提供部２２から取得したタイムコードを変換したビットパターンとの排他的論理和（ＸＯＲ：eXclusive OR、以後ＸＯＲ演算）を実行し、ＸＯＲ演算結果を出力する。ＸＯＲ演算部２３２が本発明の演算部に該当する。なお、以降においては、演算装置１０−１のＸＯＲ演算部２３２が出力したＸＯＲ演算結果を第１のＸＯＲ演算結果とする。また、演算装置１０−２が出力したＸＯＲ演算結果を第２のＸＯＲ演算結果と、演算装置１０−３が出力したＸＯＲ演算結果を第３のＸＯＲ演算結果とする。【００２６】
なお、処理部２３は演算装置１０−１がスレーブとして動作する場合は、マスターとして動作する演算装置１０−２または１０−３に対応する通信部２１−２または２１−３に、出力した第１のＸＯＲ演算結果を送信するよう通信制御命令を送信する。【００２７】
次に、タイムコードと演算装置１０−１〜１０−３の処理の関係を、図３を用いて説明する。図３は、本発明の実施の形態１における演算装置の通信タイミングの一例を示す説明図である。なお、説明のため演算装置を３台、ノードを４台の例としているが、これに限定されず接続する台数は自由に設定できる。また、図面において演算装置１０−１〜１０−３が、ノード情報１１０−１〜１１０−４、ノード情報をまとめた情報１１１−１と１１１−２、および第２のＸＯＲ演算結果１１２と第３のＸＯＲ演算結果１１３とを通信する例を説明する。【００２８】
まず、図３は、マスターとして動作する演算装置１０−１が各ノードからノード情報１１０−１〜１１０−４を取得し、取得したノード情報をまとめた情報１１１−１、１１１−２をそれぞれスレーブとして動作する演算装置１０−２および１０−３に転送する例である。【００２９】
情報の送受信の処理は、スロットと呼ばれる時間単位にて実行され、各スロットには、タイムコードが付けられている。図３に示す例では、演算装置１０−１の処理部２３が、取得したタイムコードの値が１〜６のいずれであるかを判定し、対応する処理を実行する。タイムコード１〜４のスロットにおいて、演算装置１０−１の処理部２３は、ノード１１−１〜１１−４よりノード情報１１０−１〜１１０−４を取得する。次に、タイムコード５のスロットにおいて、演算装置１０−１の処理部２３は、取得したノード情報をまとめた情報１１１−１をスレーブとして動作する演算装置１０−２に、ノード情報をまとめた情報１１１−２をスレーブとして動作する演算装置１０−３に転送する。そして、タイムコード６のスロットにおいて、演算装置１０−１の処理部２３は、演算装置１０−２が出力した第２のＸＯＲ演算結果１１２と演算装置１０−３が出力した第３のＸＯＲ演算結果１１３を取得する。【００３０】
演算装置１０−１の処理部２３は、タイムコード１〜６を繰り返し周期としてタイムコード７以降も繰り返す。具体的には、タイムコードを６で割った余りから対応するタイムコードを求め、上述のタイムコードの判定を行う。演算装置１０−１の処理部２３は、余りが１〜４である場合はタイムコードが１〜４に対応と判定し、余りが５である場合はタイムコードが５に対応と判定し、余りが０である場合はタイムコードが６に対応すると判定し、処理を実行する。また、以降においては、演算装置１０−１〜１０−３は、図３の通信タイミングにて動作しているとして説明する。【００３１】
また、タイムコードは通信のタイミングだけでなく、出力信号生成部２３１とＸＯＲ演算部２３２における処理のタイミングにも用いられる。出力信号生成部２３１は、タイムコード６のスロットにおいて第１の出力信号を生成する。また、ＸＯＲ演算部２３２は、タイムコード６のスロットにおいて第１のＸＯＲ演算結果を出力する。ここで、同じくタイムコード６のスロットにおいて、演算装置１０−２と１０−３がそれぞれ第２のＸＯＲ演算結果と第３のＸＯＲ演算結果を出力する。【００３２】
図４は、本発明の実施の形態１におけるＸＯＲ演算部におけるＸＯＲ演算の一例を示す説明図である。図４においてビットパターンはタイムコードをバイナリ変換したものであり、第１の出力信号とビットパターンとのＸＯＲ演算の結果が第１のＸＯＲ演算結果である。ここで、タイムコードが６、１２、１８と飛び飛びの値をとっているのは、処理部におけるＸＯＲ演算処理がタイムコード６、１２、１８のスロットにて実行されるためである。なお、ここでビットパターンとしてタイムコードをバイナリ変換したものを用いているが、これに限定されず、グレイコードなど他の変換を任意に用いることができる。【００３３】
上述のＸＯＲ演算において、タイムコードの値が時間経過とともに変化していくため、第１のＸＯＲ演算結果は、第１の出力信号が同じ値であったとしてもＸＯＲ演算は異なる値とすることができる。【００３４】
なお、第１のＸＯＲ演算結果は、演算装置１０−１がマスターとして動作している場合は特に記録するなどの必要性はないが、スレーブとして動作している場合は、マスターとして動作している演算装置１０−２または１０−３に送信することになる。また、演算装置１０−２および１０−３においても同様のＸＯＲ演算が実行される。【００３５】
図２に戻って、記録部２４は、ノード情報などの各種データを記録するメモリである。図５は、本発明の実施の形態１における記録部のデータ構成の一例を示すデータ構成図である。図５に示すように、記録部２４は、通信部２１−１を介してノード１１から取得したノード情報、処理部２３が生成した第１の出力信号と第１のＸＯＲ演算結果、および通信部２１−２、２１−３を介して演算装置１０−２、１０−３からそれぞれ取得した第２のＸＯＲ演算結果および第３のＸＯＲ演算結果を記録している。
【００３６】
図２に戻って、ＸＯＲ復元部２５は、記録部２４から取得した第２のＸＯＲ演算結果および第３のＸＯＲ演算結果それぞれとタイムコードを変換したビットパターンとのＸＯＲ演算を実行し、演算装置１０−２と１０−３が生成する第２の出力信号および第３の出力信号を復元し、多数決回路２６に出力する。【００３７】
多数決回路２６には、第１の出力信号とＸＯＲ復元部２５により復元された第２の出力信号および第３の出力信号とが入力される。多数決回路２６は、第１の出力信号と第２の出力信号、第１の出力信号と第３の出力信号、第２の出力信号と第３の出力信号の組み合わせについてＸＯＲ演算を行い、ＸＯＲ演算結果の多数決を取る論理回路である。【００３８】
ここで、図６を用いて多数決回路２６の構成の一例を説明する。図６は、本発明の実施の形態１における多数決回路の構成の一例を示す構成図である。多数決回路２６は、ＸＯＲ演算素子２５１〜２５３を備える。ＸＯＲ論理素子２５１〜２５３は、ＸＯＲ演算を実行する論理素子である。ＸＯＲ演算素子２５１は、第１の出力信号の各ビットと第２の出力信号の各ビットとのＸＯＲ演算の結果に対して各ビットの論理和（以後ＯＲ）を取る。また、ＸＯＲ演算素子２５２は第１の出力信号と第３の出力信号に対して、ＸＯＲ演算結果２５３は第２の出力信号と第３の出力信号に対して、ＸＯＲ演算素子２５２と同様の演算を実行する。その結果、ＸＯＲ論理素子２５１〜２５３は、入力された出力信号が同じ場合は０を、異なる場合は１を多数決信号として故障診断部２８へ出力する。【００３９】
図２に戻って、未更新判定部２７−１は、タイムコード提供部２２から取得したタイムコードに基づいて、演算装置１０−１にて生成された第１の出力信号が未更新であるか否かを判定する。具体的には、内部にタイマーを備えており、この内部タイマーによりタイムコードが入力される時間間隔を測定する。そして、未更新判定部２７−１は、タイムコードが入力される時間間隔に関する情報を保持しており、その値と測定結果が同じ場合は、出力信号として０を、異なる場合は、出力信号として１を出力する。測定結果と保持している時間間隔とが異なる場合の出力信号１が、未更新であると判定したことを示し、本発明の第２の未更新信号に該当する。また、未更新判定部２７−１が、本発明の第２の未更新判定部に該当する。【００４０】
なお、ここでは、未更新判定部２７−１が内部にタイマーを備える構成について説明したが、これに限らずタイムコード提供部２２とは異なる経路にて時間に関する情報を取得できればよく、演算装置の外部からクロック専用線を介して入力されるクロックをカウントし、時間間隔を測定する構成、外部から有線あるいは無線ネットワークを介して通知された時刻情報に基づいて時間間隔を測定する構成であってもよい。【００４１】
未更新判定部２７−２および２７−３は、それぞれ記録部２４に記録された第２のＸＯＲ演算結果、第３のＸＯＲ演算結果から第２の出力信号、第３の出力信号が未更新であるか否かを判定する。具体的には、未更新判定部２７−２、２７−３は、それぞれ第２のＸＯＲ演算結果、第３のＸＯＲ演算結果が、タイムコードの周期が一周期前である前回、つまりタイムコードが６前における第２のＸＯＲ演算結果、第３のＸＯＲ演算結果の値と同じであるか否かを判定し、同じ場合は、出力信号として１を、異なる場合は、出力信号として０を故障診断部２８に出力する。ＸＯＲ演算結果が同じ場合の出力信号１が、出力信号が未更新であることを示し、本発明の第１の未更新信号に該当する。また、未更新判定部２７−２および２７−３が、本発明の第１の未更新判定部に該当する。【００４２】
ここで、ＸＯＲ演算結果は、時間の経過とともに変化するタイムコードを変換したビットパターンとのＸＯＲ演算の結果であるため、出力信号の値が前回の出力信号の値と同じであってもＸＯＲ演算の値は異なる値となり、ＸＯＲ演算の値を前回の値と比較することで、適切に未更新であるか否かを判定できる。【００４３】
故障診断部２８は、多数決回路２６からの多数決信号と、未更新判定部２７−１からの第２の未更新信号と、未更新判定部２７−２および２７−３それぞれからの第１の未更新信号とから故障要因を診断し、診断した故障要因に応じた復旧処理に従い制御命令をスイッチ部２０−４、通信部２１−１〜２１−３、処理部２３に送信する。【００４４】
具体的には、故障診断部２８は、多数決回路２６からの多数決信号と、未更新判定部２７−１からの第２の未更新信号と、未更新判定部２７−２および２７−３それぞれからの第１の未更新信号を合成した故障診断値を生成する。次に、故障診断部２８は、故障診断値と故障が発生した場合の要因を示す故障要因診断結果、および故障に対する復旧処理との対応関係を示す故障要因分類テーブルを参照し、生成した故障診断値に対応する故障診断結果、復旧処理を診断する。【００４５】
まず、故障診断値について図７を用いて説明する。図７は、本発明の実施の形態１における故障診断値のデータ構造の一例を示すデータ構造図である。図７に示される故障診断値は、多数決信号である前半３個の信号２６０と、未更新信号である後半３個の信号２７０との合計６個の信号を組み合わせたものである。【００４６】
信号２６０は、信号２６１〜２６３から構成される。信号２６１は、多数決回路２６における第１の出力信号と第２の出力信号との多数決信号である。信号２６２は、多数決回路２６における第１の出力信号と第３の出力信号との多数決信号である。信号２６３は、多数決２６における第２の出力信号と第３の出力信号との多数決信号である。【００４７】
信号２７０は、信号２７１〜２７３から構成される。信号２７１〜２７３、それぞれ未更新検出回路２７−１〜２７−３からの出力信号である。ここで、信号２７１において値が１の場合が本発明の第２の未更新信号に、信号２７２および２７３それぞれにおいて値が１の場合が本発明の第１の未更新信号に該当する。【００４８】
次に、故障診断部２８が故障を診断する時に参照する故障要因分類テーブルについて図８〜１２を用いて説明する。図８〜１２は、本発明の実施の形態１における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。故障要因分類テーブルは、故障診断値、故障要因診断結果、および復旧処理の対応関係テーブルである。【００４９】
故障診断値は、上述したように多数決信号と第１の未更新信号と第２の未更新信号とを合成した値である。故障要因診断結果は、１因子故障または２因子同時故障を考慮した場合の故障要因として可能性のある組み合わせの結果である。また、図面において黒色丸印（●）にて示された故障要因は、演算装置１０−１〜１０−３のうち２台の演算装置が故障要因を有しており、その故障要因を有する２台の演算装置が生成した出力信号の値および出力したＸＯＲ演算結果の値が誤った値で、かつ、同じ値である場合を示している。つまり、２台の演算装置が故障しており、その故障している演算装置が同じ誤った出力信号を生成し、ＸＯＲ演算結果を出力している場合を示している。【００５０】
なお、故障要因として２因子同時故障までの考慮としているのは、３因子同時故障が発生する可能性が低いため、故障診断部２８での診断を必ず３因子故障であると診断できる場合を除いて、発生する可能性のある１因子故障または２因子同時故障に注力することで、不要なシステム停止、復旧処理を回避するためである。しかし、より安全のため３因子同時故障を考慮した故障要因分類テーブルを作成し参照するとしてもよい。【００５１】
故障要因診断結果における各識別子について図１３を用いて説明する。図１３は、本発明の実施の形態１における故障要因を識別するための識別子と、その識別子に対応する故障要因の説明が記載された図である。ここで、各識別子は、演算装置１０−１がマスターとして動作している場合の演算装置１０−１〜１０−３それぞれを構成する構成部品の故障要因を示している。【００５２】
識別子ｃｐｕ１〜ｃｐｕ３は、それぞれ演算装置１０−１〜１０−３の出力信号不正を示しており、出力される出力信号値が誤った値である場合を示している。【００５３】
識別子ｔｉｍｅ０は、グローバルクロックの停止等により演算装置１０−１〜１０−３の全てのタイムコード提供部２２の故障を示している。また、識別子ｔｉｍｅ１〜ｔｉｍｅ３は、それぞれ演算装置１０−１〜１０−３のタイムコード提供部２２の故障を示している。【００５４】
ここで、識別子ｔｉｍｅ０の場合は演算装置１０−１〜１０−３の全てにおいて故障が発生しているため、復旧処理は全ての演算装置１０−１〜１０−３に対して実行する必要がある。【００５５】
また、識別子ｔｉｍｅ２、ｔｉｍｅ３の故障は、それぞれ演算装置１０−２、１０−３のタイムコード提供部２２におけるタイムコード提供の遅延または停止であり、演算装置１０−２、１０−３それぞれが生成する第２の出力信号、第３の出力信号の値、および出力する第２のＸＯＲ演算結果、第３のＸＯＲ演算結果の値が誤った値となる。しかし、未更新判定部２７−２、２７−３が、未更新信号を出力する場合は含まないとする。つまり、ＸＯＲ演算結果が取得できない場合、取得されたＸＯＲ演算結果が未更新である場合は含まないとする。なお、未更新判定部２７−２が未更新信号を出力する場合は、後述する識別子ｌｏｓｔ２とｄｉｆｆ２とに、未更新判定部２７−３が未更新信号を出力する場合は、後述する識別子ｌｏｓｔ３とｄｉｆｆ３とに含まれている。【００５６】
識別子ｔｉｍｅ１の故障は、演算装置１０−１のタイムコード提供部２２におけるタイムコード提供の遅延または停止である。ここで、未更新判定部２７−１がタイムコードに基づいて未更新であるか否かを判定するため、識別子ｔｉｍｅ１の故障は、演算装置１０−１が生成する第１の出力信号と、出力する第１のＸＯＲ演算結果の値が誤った値となることに加え、未更新検出回路２７−１が未更新信号を出力する故障である。【００５７】
識別子ｌｏｓｔ２、ｌｏｓｔ３は、それぞれ通信部２１−２、２１−３を介しての第２のＸＯＲ演算結果、第３のＸＯＲ演算結果の取得失敗を示している。なお、識別子ｌｏｓｔ２、ｌｏｓｔ３の故障に対応するため、多数決回路２６、および未更新判定部２７−２と２７−３に入力される信号は、記録部２４に記録されているデータを用いることとする。このようにすることで、ＸＯＲ演算結果の取得に失敗した場合も記録部２４に記録された前回のＸＯＲ演算結果の値を用いることができ、多数決回路２６が多数決信号を、未更新判定部２７−２と２７−３が出力信号を必ず出力し、故障診断部２８にて適切に故障を診断できる。【００５８】
識別子ｖｏｔｅｒ１〜ｖｏｔｅｒ３は、多項式回路２６における第１の出力信号〜第３の出力信号の各組み合わせに対するＸＯＲ演算の演算結果の不正を示している。【００５９】
識別子ｄｉｆｆ１〜ｄｉｆｆ３は未更新判定部２７−１〜２７−３の故障を示している。【００６０】
図８〜１２に戻って、復旧処理は、故障要因診断結果に対する復旧処理であり、マスターとして動作する演算装置の変更、フォールトトレラントシステムの停止、および通信部２１−２〜２１−４を介した通信の遮断が含まれている。なお、復旧処理にマスターとして動作する演算装置を変更する対象として演算装置１０−２または１０−３のどちらも可能である場合に演算装置１０−２または１０−３をマスターに変更と記載しているが、これは状況の説明のためであり、実際に動作させる場合はいずれか一方を選択する。【００６１】
次に、故障診断部２８における故障診断の一例を、図８〜１２を用いて説明する。例えば、故障診断値が“００００００”である場合、故障診断部２８は、故障無しと診断する。【００６２】
例えば、故障診断値が“０１００００”である場合、故障診断部２８は１因子故障としては（１）ｖｏｔｅｒ２の１通りと、２因子同時故障としては（１）ｃｐｕ１とｖｏｔｅｒ１の組み合わせ、（２）ｃｐｕ３とｖｏｔｅｒ３の組み合わせ、そして（３）ｔｉｍｅ３とｖｏｔｅｒ３の組み合わせの３通りの合計４通りの可能性があると診断する。【００６３】
診断結果より、演算装置１０−１の故障と演算装置１０−３に故障の可能性があるため、復旧処理としては、故障の可能性のない演算装置１０−２をマスターに変更する復旧処理が実行される。具体的には、故障診断部２８が、通信部２１−２を介して演算装置１０−２にマスター変更要求を送信し、演算装置１０−２はマスター変更指示を受け取ると次の繰り返し周期のスロットからマスターとして動作する。また、診断結果に故障要因ｃｐｕ１が有ることから、演算装置１０−１の処理部２３が故障している可能性があるため、故障診断部２８は、通信部２１−２にスイッチ部２０−２を制御し演算装置１０−２との通信を遮断する遮断指示を、通信部２１−３にスイッチ部２０−３を制御し演算装置１０−３との通信を遮断する遮断指示を送信し、演算装置１０−２および１０−３との通信を遮断する。さらに、演算装置１０−１の処理部２３が故障している可能性があることから、第１の出力信号が不正である可能性があるため、スイッチ部２０−４に通信を遮断する遮断指示を送信し、第１の出力信号１が外部に出力されることを防止する。【００６４】
なお、演算装置１０−１からマスター変更要求を送信することで演算装置１０−２をマスターに変更する方法にて説明しているが、これに限定されず、例えば、通信装置１０−２が、演算装置１０−１との通信が遮断されたことを検知した時に、マスターとして動作するとしてもよい。具体的には、演算装置１０−１の通信部２１−２から演算装置１０−２へ常に無効データを送信しており、演算装置１０−１の故障時に通信部２１−２が、スイッチ部２０−２を切断し、無効データの送信を停止する。この時、演算装置１０−２において演算装置１０−１との情報の送受信を制御する演算装置１０−２の通信部２１−２が、演算装置１０−１からのデータ送信が停止したことを検知し、演算装置１０−２の処理部２３に通知する。演算装置１０−２の処理部２３は、演算装置１０−１が故障したと判断して次の繰り返し周期からマスターとして動作するとのマスター変更方法でもよい。【００６５】
次に、例えば故障要因診断値が“０１１１１０”である場合、故障診断部２８は１因子故障の場合は無し、２因子同時故障としては（１）ｃｐｕ１とｃｐｕ２、および黒色丸印の組み合わせ、の合計１通りの可能性があると診断する。ここでｃｐｕ１とｃｐｕ２の故障は、演算装置１０−１と演算装置１０−２が故障していることを示しており、黒色丸印は、故障した演算装置１０−１と演算装置１０−２から生成される第１の出力信号と第２の出力信号、および出力される第１のＸＯＲ演算結果と第２のＸＯＲ演算結果が同じ値であることを示している。【００６６】
ここで、演算装置１０−１と演算装置１０−２の処理部２３が同時に故障している可能性があるため、復旧処理としてはフォールトトレラントシステム１００を停止し、スイッチ部２０−２と２０−３を切断することで演算装置１０−２と１０−３との通信を遮断し、スイッチ部２０−４を切断することで外部との通信を遮断する。【００６７】
次に、実施形態１における演算装置１０−１の処理シーケンスを、図１４を用いて説明する。図１４は、本発明の実施の形態１におけるフォールトトレンラントシステムの処理シーケンスの一例を示すフローチャートである。まず、処理部２３が、タイムコード提供部２２からタイムコードＴを取得する（ステップＳ１０１）。【００６８】
次に、処理部２３が、取得したタイムコードＴが、Ｔ＝１〜６のいずれに該当するか判定する（ステップＳ１０２）。【００６９】
図３より、タイムコードＴが１〜４である場合、タイムコード１〜４のスロットであるため、処理部２３が、通信部２１−１を介して対応するノード１１−１〜１１−４からノード情報を取得し、記録部へ書き込む（ステップＳ１０３）。【００７０】
図３より、タイムコードＴが５である場合、タイムコード５のスロットであるため、処理部２３が、ノード情報をまとめた情報を、通信部２１−２を介して演算装置１０−２へ、通信部２１−３を介して演算装置１０−３へ送信する（ステップＳ１０４）。【００７１】
図３より、タイムコードＴが６である場合、タイムコード６のスロットであるため、処理部２３が、通信部２１−２を介して第２のＸＯＲ演算結果を、２１−３を介して第３のＸＯＲ演算結果を取得し、記録部へ書き込む（ステップＳ１０５）。【００７２】
なお、処理部２３が取得したタイムコードＴが７より大きい場合、繰り返し周期が６であることから、タイムコードＴを６で割った余りに基づいて、ステップＳ１０２の判定を行う。具体的には、余りが１〜４である場合はタイムコードＴが１〜４と、余りが５である場合はタイムコードＴが５と、余りが０である場合はタイムコードＴが６と判定する。【００７３】
ステップＳ１０３およびＳ１０４の処理後は、ステップＳ１０１に戻る。ステップＳ１０５の処理後は、ステップＳ１０６に移行する。【００７４】
ステップＳ１０６では、出力信号生成部２３１は、記録部２４より取得したノード情報を基に演算を行い、第１の出力信号を生成し、生成した第１の出力信号を記録部２４に書き込む。【００７５】
ステップＳ１０７では、ＸＯＲ復元部２５は、取得した第２のＸＯＲ演算結果および第３のＸＯＲ演算結果と、タイムコードＴの値６を変換したビットパターンとのＸＯＲ演算を実行し、第２の出力信号および第３の出力信号を復元する。【００７６】
ステップＳ１０８では、多数決回路２６が、第１の出力信号と、復元された第２の出力信号および第３の出力信号を入力され、多数決信号を故障診断部２８に出力する。【００７７】
次に、ステップＳ１０９では、未更新判定部２７−１〜２７−３がそれぞれ第１の出力信号〜第３の出力信号が未更新であるか否かを判定し、出力信号を故障診断部２８に出力する。なお、未更新判定部２７−１〜２７−３が未更新であると判定した場合に出力される出力信号が、未更新信号である。【００７８】
ステップＳ１１０では、故障診断部２８が、入力された多数決出力信号と未更新信号に基づいて故障を診断する。【００７９】
次に、ステップＳ１１１では、故障診断部２８が、ステップＳ１１０で診断された故障の有無によって移行するステップを判定する。ここで、故障無しと診断された場合は、故障診断部２８が、スイッチ部２０−４を制御し、出力信号伝送路１３を介して第１の出力信号を外部に出力し（ステップＳ１１２）、ステップＳ１０１に戻り処理を継続する。また、故障有りと診断された場合は、故障診断部２８が、ステップＳ１１０で判別された故障要因に対応する復旧処理の制御命令を通信制御部２１−２、２１−３、および処理部２３に送信し（ステップＳ１１３）、処理を終了する。【００８０】
以上のように、実施の形態１のフォールトトレラントシステム１００によれば、多数決回路において出力信号の値を比較した結果である多数決信号だけでなく、未更新検出回路において出力信号と時間情報であるタイムコードを変換したビットパターンとのＸＯＲ演算結果に基づいて出力信号が前回の出力信号から未更新であると判定した場合に出力される未更新信号に基づいて故障を診断することで、従来よりも多くの情報に基づいて故障を診断することができ、故障要因の診断精度の向上と、その故障要因に適した復旧処理の実現をできるという効果を得ることができる。【００８１】
また、故障診断部が、多数決信号と未更新信号を合成した故障診断値と、故障要因診断結果と、復旧処理との対応関係テーブルである故障要因分類テーブルを参照し、故障を診断することで、細かく分類された故障要因に基づいて故障を診断することができ、故障要因の診断精度の向上と、その故障要因に適した復旧処理の実現をできるという効果を得ることができる。【００８２】
さらに、未更新判定部が、時間とともに値の変化するタイムコードを変換したビットパターンと出力信号とのＸＯＲ演算の結果であるＸＯＲ演算結果に基づいて未更新であるか否かを判定することで、出力信号として前回の出力信号と同じ値を出力された場合であっても未更新であることを適切に判定できるという効果も得ることができる。【００８３】
さらに、故障診断部が自装置に故障があることを診断した場合に、外部との通信を遮断することで、誤った出力信号が外部へ出力されることを防止できるという効果も得ることができる。【００８４】
さらに、故障診断部が自装置以外の演算装置に故障があることを診断した場合に、該当する演算装置との通信を遮断することで、故障した演算部からの情報により誤った処理を行うことを防止できるという効果も得ることができる。【００８５】
なお、実施の形態１におけるフォールトトレンラントシステム１００の通信タイミングとして図３に示すタイミングにて説明したが、これに限らず他のタイミングにて通信を行ってもよい。他の通信タイミングの例を、図１５を用いて説明する。図１５は、本発明の実施の形態１におけるフォールトトレラントシステムの通信タイミングの一例を示す説明図である。【００８６】
図１５は、図３に示す例とは異なり、各演算装置が同じタイミングにてそれぞれ個別に各ノードからノード情報を取得する例である。演算装置１０−１〜１０−３はタイムコード１〜４のスロットにおいて同じタイミングにてノード１１−１〜１１−４よりノード情報１１０−１〜１１０−４を取得する。次に、演算装置１０−１は、タイムコード５のスロットにて第２のＸＯＲ演算結果１１２および第３のＸＯＲ演算結果１１３を取得する。また、演算装置１０−１は、タイムコード１〜５を繰り返し周期としてタイムコード６以降も繰り返す。【００８７】
また、タイムコードは通信のタイミングだけでなく、出力信号生成部２３１とＸＯＲ演算部２３２における処理のタイミングにも用いられる。出力信号生成部２３１は、タイムコード５のスロットにおいて第１の出力信号を生成する。さらに、ＸＯＲ演算部２３２は、タイムコード５のスロットにおいて第１のＸＯＲ演算結果を生成する。ここで、同じくタイムコード５のスロットにおいて、演算装置１０−２と１０−３にてそれぞれ第２のＸＯＲ演算結果２３２−２と第３のＸＯＲ演算結果２３２−３が生成される。【００８８】
なお、通信タイミングの他の例として、図３に示した通信タイミングおいて演算装置１０−１から演算装置１０−２と１０−３へのノード情報の転送を２回に分けるなど、通信回数や順番を入れ替えてもよい。【００８９】
なお、図２の演算装置１０−１の構成図では多数決回路２６に入力する信号をＸＯＲ復元部２５にて出力信号に復元する構成が記載されているが、これに限らずＸＯＲ演算部２３２にて復号し、多数決回路２６に入力するとしてもよい。この場合は、ＸＯＲ復号部２５を不要とすることができる。【００９０】
実施の形態２．
実施の形態１においてフォールトトレラントシステム１００は、出力信号と１種類のタイムコードを変換したビットパターンとのＸＯＲ演算の結果であるＸＯＲ演算結果に基づいて、未更新判定部が、出力信号が未更新であるか否かを判定する実施の形態について説明した。【００９１】
実施の形態２では、タイムコードを変換したビットパターンとしてビット反転の関係にある２種類のビットパターンを有し、出力されるＸＯＲ演算結果の値が、常に前回のＸＯＲ演算の値とは異なる値となるように演算に用いるビットパターンを選択する実施例について説明する。【００９２】
実施の形態２におけるフォールトトレラントシステムのシステム構成、演算装置の装置構成は、実施の形態１と同様であるため、説明は省略する。【００９３】
まず、演算装置１０−１のＸＯＲ演算部２３２におけるＸＯＲ演算について図１６を用いて説明する。ここでは、演算装置１０−１について説明するが、演算装置１０−２および１０−３についても同様の構成であるため、説明は省略する。図１６は、本発明の実施の形態２におけるＸＯＲ演算部におけるＸＯＲ演算の一例を示す説明図である。ここで、Ａ系列ビットパターンは実施の形態１と同様にタイムコードをバイナリ変換したビットパターンであり、Ｂ系列ビットパターンはＡ系列ビットパターンとビット反転の関係にあるビットパターンである。通常はＡ系列ビットパターンを選択しＸＯＲ演算を実行するとする。なお、図１６において選択されたビットパターンを黒色三角印（▲）にて示している。【００９４】
図１６においてタイムコードが１８の場合、ＸＯＲ演算部２３２は、Ｂ系列ビットパターンを選択している。ここで、ＸＯＲ演算部２３２がＡ系列ビットパターンを選択すると、第１のＸＯＲ演算結果は、“０００００１０１”となり、１周期前の、タイムコードが１２の場合のＸＯＲ演算結果と同じ値となる。そのため、タイムコードが１８の場合は、ＸＯＲ演算部２３２は、Ｂ系列ビットパターンを選択しＸＯＲ演算を実行することで前回のＸＯＲ演算結果の値と異なる第１のＸＯＲ演算結果を出力する。【００９５】
このように、Ａ系列ビットパターンとＢ系列ビットパターンは、ビット反転であることから必ず異なった値となるため、Ａ系列ビットパターンを選択したＸＯＲ演算では前回のＸＯＲ演算結果の値と同じＸＯＲ演算結果となる場合でもＢ系列ビットパターンを選択したＸＯＲ演算によるＸＯＲ演算結果は、必ず前回のＸＯＲ演算結果と異なる値となる。【００９６】
また、第２のＸＯＲ演算結果および第３のＸＯＲ演算結果も同様の演算による結果であり、第２のＸＯＲ演算結果および第３のＸＯＲ演算結果の値も、必ず前回のＸＯＲ演算結果の値と異なる値となる。このように、第２のＸＯＲ演算結果および第３のＸＯＲ演算結果が必ず前回のＸＯＲ演算結果の値とは異なる値となるため、未更新判定部２７−２および２７−３は、より精度高く出力信号が未更新であるか否かを判定できる。【００９７】
次に、実施の形態２における多数決回路２６について図１７を用いて説明する。図１７は、本発明の実施の形態２における多数決回路の構成図の一例を示す構成図である。多数決回路２６は、ＸＯＲ論理素子２５０１〜２５０５と論理積論理素子（以後ＡＮＤ論理素子）２５１０および２５１１を備える。【００９８】
ＸＯＲ論理素子２５０１は、処理部２３にて生成された第１の出力信号と、第２のＸＯＲ演算結果からＸＯＲ復元部２５にて復元した第２の出力信号とが入力され、ＸＯＲ演算を行う論理素子である。【００９９】
ＸＯＲ演算素子２５０３は、処理部２３にて生成された第１の出力信号と、第３のＸＯＲ演算結果からＸＯＲ復元部２５にて復元した第３の出力信号とが入力され、ＸＯＲ演算を行う論理素子である。【０１００】
ＸＯＲ論理素子２５０５は、第２のＸＯＲ演算結果と第３のＸＯＲ演算結果それぞれからＸＯＲ復元部２５にて復元した第２の出力信号と第３の出力信号が入力され、ＸＯＲ演算を行う論理素子である。【０１０１】
ＸＯＲ論理素子２５０１、２５０３、および２５０５は、入力された出力信号同士の各ビットそれぞれのＸＯＲ演算の結果に対して各ビットのＯＲを取る。その結果、ＸＯＲ論理素子２５０１、２５０３、および２５０５は、入力された出力信号が同じ場合は、出力信号として０を、入力された出力信号が異なる場合は、出力信号として１を出力する。ここで、ＸＯＲ論理素子２５０１および２５０３については出力信号をＡＮＤ論理素子２５１０および２５１１に出力し、ＸＯＲ論理素子２５０５については多数決信号として故障診断部２８に直接出力する。【０１０２】
ＸＯＲ論理素子２５０２は、処理部２３にて生成された第１の出力信号と、第２のＸＯＲ演算結果からＸＯＲ復元部２５にて復元した第２の出力信号をビット反転した信号が入力され、ＸＯＲ演算を行う論理素子である。【０１０３】
ＸＯＲ論理素子２５０４は、処理部２３にて生成された第１の出力信号と、第３のＸＯＲ演算結果からＸＯＲ復元部２５にて復元した第３の出力信号をビット反転した信号が入力され、ＸＯＲ演算を行う論理素子である。【０１０４】
ＸＯＲ論理素子２５０２および２５０４では、入力された信号同士の各ビットそれぞれのＸＯＲ演算の結果に対して各ビットのＯＲを取る。その結果、ＸＯＲ論理素子２５０２および２５０４は、入力された出力信号が同じ場合は、出力信号として０を、入力された出力信号が異なる場合は、出力信号として１をＡＮＤ論理素子２５１０および２５１１に出力する。【０１０５】
ＡＮＤ論理素子２５１０および２５１１は、それぞれＸＯＲ演算素子２５０１と２５０２、およびＸＯＲ２５０３と２５０４からの出力信号が入力され、ＡＮＤを取り、その結果、入力信号の少なくとも１つが０であれば、多数決信号として０を、入力信号が全て１であれば、多数決信号として１を故障診断部２８に出力する。【０１０６】
上述の多数決回路２６の構成により、ＸＯＲ復元部２５は、ＸＯＲ演算に用いるビットパターンをＡ系列ビットパターンまたはＢ系列ビットパターンのいずれか１種類としたＸＯＲ演算にて出力信号を復元できる。これによりＸＯＲ復元部２５の構成を実施の形態１と同様に簡単な構成とすることができる。【０１０７】
ＸＯＲ復元部２５におけるＸＯＲ演算が、Ａ系列ビットパターンまたはＢ系列ビットパターンのいずれか１種とのＸＯＲ演算とすることができる理由について説明する。ここでは、ＸＯＲ復元部２５におけるＸＯＲ演算が、Ａ系列ビットパターンとのＸＯＲ演算である場合について説明する。なお、ＸＯＲ復元部２５におけるＸＯＲ演算が、Ｂ系列ビットパターンとのＸＯＲ演算である場合も同様であるため、説明は省略する。【０１０８】
第２のＸＯＲ演算結果と第３のＸＯＲ演算結果がＡ系列ビットパターンとのＸＯＲ演算の結果である場合、ＸＯＲ復元部２５にて復元された信号は、第２の出力信号および第３の出力信号と同じ信号となる。一方、第２のＸＯＲ演算結果と第３のＸＯＲ演算結果がＢ系列ビットパターンとのＸＯＲ演算の結果である場合、ＸＯＲ復元部２５にて復元された信号は、第２の出力信号および第３の出力信号とビット反転の関係にある信号となる。【０１０９】
上述のようにＸＯＲ復元部２５にて復元された信号は、第２の出力信号および第３の出力信号と同じ信号またはビット反転の関係にある信号となる。そのため、ＸＯＲ復元部２５にて復元された信号がそのまま入力されるＸＯＲ論理素子２５０１と２５０３の組、またはＸＯＲ復元部２５にて復元された信号をビット反転させて入力されるＸＯＲ論理素子２５０２と２５０４の組のいずれかの組において、出力信号と同じ信号にて第１の出力信号とのＸＯＲ演算を実行することができる。【０１１０】
したがって、第１の出力信号〜第３の出力信号の値が全て同じ場合、ＸＯＲ復元部２５にて復元された信号がそのまま入力されるＸＯＲ論理素子２５０１と２５０３の組、またはビット反転して入力されるＸＯＲ論理素子２５０２と２５０４の組、のいずれかの組は出力信号として１を出力し、もう一方は出力信号として０を出力する。この出力信号がＡＮＤ論理素子２５１０および２５１１に入力されてＡＮＤ演算が実行されるため、ＡＮＤ論理素子２５１０および２５１１から多数決信号として０が出力される。したがって、第１の出力信号〜第３の出力信号の多数決を正しく取ることができる。【０１１１】
一方、第１の出力信号と第２の出力信号、または第１の出力信号と第３の出力信号の組において、少なくとも１つ組の出力信号の値が異なる場合は、異なる組に対応するＸＯＲ論理素子２５０１と２５０２、または２５０３と２５０４の組の内、少なくとも１つの組において、ＸＯＲ論理素子からの出力信号として２つとも１が出力される。そのため、ＡＮＤ論理素子２５１０または２５１１の内、少なくとも１つから多数決信号として１が出力される。ここで、多数決信号が１であることは、出力信号の値が異なっていることを示している。したがって、第１の出力信号〜第３の出力信号の多数決を正しく取ることができる。【０１１２】
以上がＸＯＲ復元部２５におけるＸＯＲ演算が、Ａ系列ビットパターンまたはＢ系列ビットパターンのいずれか１種とのＸＯＲ演算とすることができる理由である。【０１１３】
以上のように、実施の形態２のフォールトトレラントシステム１００によれば、ＸＯＲ演算結果の値は、必ず前回のＸＯＲ演算結果の値と異なることになり、未更新判定部における出力信号が未更新であるか否かを判定する精度がより向上するという効果を得ることができる。【０１１４】
なお、ＸＯＲ復元部２５において、ＸＯＲ演算に用いられるビットパターンが１種類である場合について説明したが、これに限定されずＡ系列ビットパターンとＢ系列ビットパターンの２種類から選択することもできる。例えば、第２のＸＯＲ演算結果および第３のＸＯＲ演算結果に選択したタイムコードに関する情報を付加することで、付加された情報からＸＯＲ復元部２５が、演算が実行されたビットパターンがＡ系列ビットパターンとＢ系列ビットパターンのいずれであるかを判断でき、該当するビットパターンにて復元することができる。この例では送受信するデータ容量が増加するが、多数決回路の構成を実施の形態１と同様に簡単な構成とすることができるという効果がある。【０１１５】
なお、Ａ系列ビットパターンとＢ系列ビットパターンは、ビット反転の関係である場合について説明したが、これに限定されずＡ系列ビットパターンとＢ系列ビットパターンが異なるビットバターンとなっていればよい。例えば、Ａ系列ビットパターンとしてタイムコードをバイナリ変換したビットパターンとし、Ｂ系列ビットパターンとしてタイムコードをグレイコード変換したビットパターンとしてもよい。この例は、第２のＸＯＲ演算結果および第３のＸＯＲ演算結果に選択したタイムコードの変換方式に関する情報を付加することで実現できる。【０１１６】
実施の形態３．
実施の形態３では、演算装置３０−１〜３０−３の３台の演算装置を備え、各演算装置における出力信号およびＸＯＲ演算結果の通信データの構造が実施の形態１および２におけるフォールトレラントシステム１００と異なっているフォールトトレラントシステム３００について説明する。【０１１７】
フォールトトレンラントシステム３００の構成については、フォールトトレラントシステム１００における演算装置１０−１〜１０−３の代わりに３０−１〜３０−３を備えているのみであるため、説明は省略する。また、説明のため演算装置を３台としているがこれに限定されず、任意に設定できる。【０１１８】
演算装置３０−１について図１８を用いて説明する。ここでは、演算装置３０−１について説明するが、演算装置３０−２および３０−３についても同様の構成であるため、説明は省略する。図１８は、本発明の実施の形態３における演算装置の装置構成の一例を示す構成図である。フォールトトレラントシステム１００における演算装置１０−１の構成に加え、故障診断部２８の診断結果に基づいて出力信号伝送路１３を介して外部へ出力する出力信号を選択する選択部２９を備えた構成である。【０１１９】
スイッチ部２０−１〜２０−４、通信部２１−１〜２１−３、タイムコード提供部２２は、実施の形態１と同様であるため、説明は省略する。【０１２０】
処理部２３は、出力信号生成部２３１とＸＯＲ演算部２３２を備える。出力信号生成部２３１は、第１の出力信号に基づいて巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check、以後ＣＲＣ）データを生成するとともに、当該ＣＲＣデータを第１の出力信号に付加したデータである出力信号の通信データ３００を生成する。ここで、ＣＲＣデータとは、誤り検出方式に用いられる検査用の値であり、データを生成多項式と呼ばれるあらかじめ決められた数によって除算した余りである。なお、以降においては、演算装置１０−１の出力信号生成部２３１が生成するＣＲＣデータを第１のＣＲＣデータとする。また、演算装置１０−２が生成するＣＲＣデータを第２のＣＲＣデータと、演算装置１０−３が生成するＣＲＣデータを第３のＣＲＣデータとする。また、出力信号生成部２３０が本発明のＣＲＣデータ生成部に該当する。【０１２１】
ＸＯＲ演算部２３２は、タイムコード提供部２２より取得したタイムコードを変換したビットパターンと出力信号生成部２３１が生成した第１のＣＲＣデータとのＸＯＲ演算結果を生成するとともに、当該ＸＯＲ演算結果を第１の出力信号に付加したＸＯＲ演算結果の通信データ３０１を出力する。なお、以降においては、演算装置１０−１のＸＯＲ演算部２３２でのタイムコード変換したビットパターンと第１のＣＲＣデータとのＸＯＲ演算結果を第４のＸＯＲ演算結果とする。また、演算装置１０−２でのタイムコード変換したビットパターンと第２のＣＲＣデータとのＸＯＲ演算結果を第５のＸＯＲ演算結果と、演算装置１０−３でのタイムコード変換したビットパターンと第３のＣＲＣデータとのＸＯＲ演算結果を第６のＸＯＲ演算結果とする。【０１２２】
出力信号の通信データ３００およびＸＯＲ演算結果の通信データ３０１について図１９を用いて説明する。図１９は、本発明の実施の形態３における通信データの一例を示すデータ構造図である。図１９（ａ）は、処理部２３の出力信号生成部２３１にて生成される出力信号の通信データ３００のデータ構造の一例であり、図１９（ｂ）は、ＸＯＲ演算部２３２から出力されるＸＯＲ演算結果の通信データ３０１のデータ構造の一例である。【０１２３】
図１９（ａ）に示すように、出力信号の通信データ３００は、出力信号生成部２３１が生成する第１のＣＲＣデータが第１の出力信号に付加された構造である。ここで、出力信号生成部２３１は、第１の出力信号に決められた演算、例えば非特許文献（Philip Koopman, et.al. ”Cyclic Redundancy Code (CRC) Polynomial Selection For Embedded Networks,” Proc. of DSN-2004, Jun. 2004.）に記載のＣＲＣ−８の式を用いた演算を実行し、第１のＣＲＣデータを生成する。なお、第１のＣＲＣデータは、データ容量が第１の出力信号より小さいデータである。【０１２４】
図１９（ｂ）に示すように、ＸＯＲ演算結果の通信データ３０１は、ＸＯＲ演算部２３２が出力する第４のＸＯＲ演算結果が第１の出力信号に付加された構造である。ＸＯＲ演算部２３２は、演算装置１０−１がスレーブとして動作する時にマスターとして動作する演算装置１０−２または１０−３にＸＯＲ演算結果の通信データ３０１を出力する。なお、第１のＣＲＣデータのデータ容量が小さいため、タイムコード変換したビットパターンと第１のＣＲＣデータとのＸＯＲ演算結果もデータ容量も小さく抑えることができる。【０１２５】
図１８に戻って、記録部２４は、ノード情報などの各種データを記録するメモリである。図２０は、本発明の実施の形態３における記録部のデータ構成の一例を示すデータ構成図である。図２０に示すように、記録部２４は、通信部２１−１を介してノード１１から取得したノード情報、処理部２３が生成した第１の出力信号および第１のＣＲＣデータ、通信部２１−２、２１−３を介して演算装置３０−２、演算装置３０−３から取得した第２の出力信号と第３の出力信号、および第５のＸＯＲ演算結果と第６のＸＯＲ演算結果を記録している。
【０１２６】
図１８に戻って、ＸＯＲ復元部２５は、記録部２４から取得した第５のＸＯＲ演算結果および第６のＸＯＲ演算結果それぞれとタイムコードを変換したビットパターンとのＸＯＲ演算を実行し、第２のＣＲＣデータおよび第３のＣＲＣデータを復元し、多数決回路２６に出力する。【０１２７】
多数決回路２６は、第１のＣＲＣデータ、およびＸＯＲ復元部２５にて復元された第２のＣＲＣデータと第３のＣＲＣデータが入力され、多数決を取り多数決信号を出力する。ここで、多数決回路２６の構成は、実施の形態１と同様にＸＯＲ演算に用いるタイムコードのビットパターンが１種類である場合は図４の構成を、実施の形態２と同様にＸＯＲ演算に用いるタイムコードのビットパターンが２種類である場合は図１７の構成となる。なお、多数決回路２６における多数決の取り方については実施の形態１または２において出力信号の代わりにＣＲＣデータとのＸＯＲ演算を実行するだけであるため、説明は省略する。【０１２８】
未更新判定部２７−１は、実施の形態１と同様にタイムコード提供部２２より取得されたタイムコード基づいて、第１の出力信号が未更新であるか否かを判定する。判定方法は、実施の形態１と同様であるため、説明は省略する。【０１２９】
未更新判定部２７−２、２７-３は、それぞれ第５のＸＯＲ演算結果、第６のＸＯＲ演算結果に基づいて、第２の出力信号、第３の出力信号が未更新であるか否かを判定する。判定方法は、実施の形態１と同様であるため、説明は省略する。【０１３０】
故障診断部２８は、実施の形態１と同様に多数決回路２６からの多数決信号と、未更新判定部２７−１からの第２の未更新信号と、２７−２および２７−３それぞれからの第１の未更新信号とから故障要因を診断し、診断した故障要因に応じた復旧処理に従い制御命令をスイッチ部２０−４、通信部２１−１〜２１−３、処理部２３に送信する。また、選択部２９にて出力する出力信号である選択出力信号についても診断し、診断した選択出力信号に従い制御命令を選択部２９に送信する。【０１３１】
なお、実施の形態１および２と異なり、実施の形態３において出力する出力信号を選択できるのは、演算装置１０−２、１０−３から取得される第５のＸＯＲ演算結果、第６のＸＯＲ演算結果の通信データに第５のＸＯＲ演算結果、第６のＸＯＲ演算結果だけでなく第２の出力信号、第３の出力信号が含まれているためである。【０１３２】
故障診断部２８における故障診断について図２１〜２５を用いて説明する。図２１〜２５は、本発明の実施の形態３における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。ここで、実施の形態３における故障要因診断結果における各識別子については、実施の形態１と同様に図１３に示す識別子である。【０１３３】
図２１〜２５は、故障診断値、故障要因診断結果、復旧処理、および選択出力信号から構成される。ここで、選択出力信号欄における１、２、および３はそれぞれ第１の出力信号、第２の出力信号、および第３の出力信号を示し、０は出力信号を出力しないことを示している。ここで、選択出力信号は、演算装置３０−１に故障がない場合は第１の出力信号を、マスターとして動作する演算装置が演算装置３０−１から変更される場合は変更後マスターとして動作する演算装置の出力信号を、フォールトトレラントシステム３００が停止する場合は出力信号を出力しないとの選択方法で選択されている。なお、選択出力信号として出力信号２３−２または２３−３のいずれかを選択可能である場合に２または３と記載しているが、これは状況の説明のためであり、実際に動作させる場合はいずれか一方を選択した構造とする。【０１３４】
図１８に戻って、選択部２９は、故障診断部２８にて診断された選択出力信号に従い出力する出力信号を選択し、記録部２４より取得し、スイッチ部２０−４、出力信号伝送路１３を介して外部へ出力する。【０１３５】
以上のように、実施の形態３のフォールトトレラントシステム３００によれば、ＣＲＣデータとタイムコードを変換したビットパターンとのＸＯＲ演算の結果であるＸＯＲ演算結果を出力信号に付加したＸＯＲ演算結果の通信データを演算装置間にて送受信することで、自装置以外の演算装置の出力信号を取得することができる。そのため、マスターとして動作する演算装置が故障している場合においてもスレーブとして動作する演算装置にて正しい出力信号を得られている場合は、外部へ正しい出力信号を出力でき、装置が誤作動する可能性を低減しつつ装置の動作も継続できるという効果を得ることができる。【０１３６】
また、ＣＲＣデータのデータ容量が小さいことから、ＸＯＲ演算結果のデータ容量も小さく抑えることができ、演算装置間にて送受信する通信データのデータ容量を小さくできるという効果も得ることができる。【０１３７】
なお、多数決回路２６へ第１のＣＲＣデータ〜第３のＣＲＣデータを入力する場合について説明したが、これに限定されず、第１の出力信号〜第３の出力信号を入力してもよい。第１のＣＲＣデータ〜第３のＣＲＣデータを入力する場合は、通信するデータの容量を小さくできるという効果があるが、代わりに第１の出力信号〜第３の出力信号を入力する場合はＸＯＲ復元部２５での復元処理が不要とすることできる。【０１３８】
実施の形態４．
実施の形態４では、演算装置４０と故障診断装置４１を備えるフォールトトレラントシステム４００について説明する。なお、実施の形態１〜３とは異なりマスターとして動作する演算装置はなく、全ての演算装置４０がスレーブとして動作する。【０１３９】
図２６は、本発明の実施の形態４におけるフォールトトレラントシステムのシステム構成の一例を示す構成図である。フォールトトレラントシステム４００は、Ｎ台のノード１１−１〜１１−Ｎ、演算装置通信伝送路１２、出力信号伝送路１３、および入出力ネットワーク１４、演算結果出力伝送路１５、３台の演算装置４０−１〜４０−３、および故障診断装置４１を備える。なお、ノード１１−１〜１１−Ｎ、演算装置通信伝送路１２、出力信号伝送路１３、および入力出力ネットワーク１４は、実施の形態１〜３と同様であるため、説明は省略する。また、説明のため演算装置を３台としているがこれに限定されず、任意に設定できる。【０１４０】
演算装置４０−１〜４０−３は、ノード１１から取得したノード情報を基に演算結果を生成し、演算結果出力伝送路１５を介して故障要因診断装置４１に出力する。【０１４１】
故障診断装置４１は、演算装置４０−１〜４０−３から取得した演算結果に基づき故障要因を診断する。【０１４２】
演算結果出力伝送路１５は、演算装置４０−１〜４０−３と故障要因診断装置４１とのデータ通信を行う伝送路である。演算結果出力伝送路１５は、情報を相互に送受信できる伝送路であり、同軸ケーブルや光ケーブルなどの有線伝送路でもよいし、Ｗｉ−Ｆｉ（登録商標）やＢｌｕｅｔｏｏｔｈ（登録商標）などの無線伝送路でもよい。【０１４３】
次に、演算装置４０−１の構成について図２７を用いて説明する。ここでは、演算装置４０−１について説明するが、演算装置４０−２および４０−３についても同様の構成であるため、説明は省略する。図２７は、本発明の実施の形態４における演算装置の装置構成の一例を示す構成図である。演算装置４０−１は、通信部５１、タイムコード提供部５２、処理部５３、および記録部５４を備える。なお、図面において実線矢印は情報の流れ、点線矢印は制御命令の流れを示している。【０１４４】
通信部５１は、後述する処理部５３から送信される通信制御命令に従い、外部との通信接続を制御しノード１１との情報の送受信、演算結果出力伝送路１５を介して故障要因診断装置４１との情報の送受信を制御する。タイムコード提供部５２は、現在のタイムコードを提供する。【０１４５】
処理部５３は、タイムコード提供部５２から取得したタイムコードに応じて通信部５１へ通信制御命令を送信する。また、処理部５３は、出力信号生成部５３１とＸＯＲ演算部５３２を備える。出力信号生成部５３１は、ノード１１から取得したノード情報を基に出力信号を生成する。なお、以降においては、演算装置４０−１の出力信号生成部５３１が生成する出力信号を第４の出力信号とする。また、演算装置４０−２が生成する出力信号を第５の出力信号と、演算装置４０−３が生成する出力信号を第６の出力信号とする。【０１４６】
ＸＯＲ演算部５３２は、第４の出力信号とタイムコード提供部５２から取得したタイムコードを変換したビットパターンとのＸＯＲ演算を実行し、ＸＯＲ演算結果を出力する。ＸＯＲ演算部５３２が本発明の演算部に該当する。なお、以降においては、演算装置４０−１のＸＯＲ演算部５３２が出力するＸＯＲ演算結果を第７のＸＯＲ演算結果とする。また、演算装置４０−２が出力するＸＯＲ演算結果を第８のＸＯＲ演算結果と、演算装置４０−３が出力するＸＯＲ演算結果を第９のＸＯＲ演算結果とする。【０１４７】
なお、ＸＯＲ演算部５３２が実行するＸＯＲ演算は、実施の形態１〜３におけるＸＯＲ演算部２３２が実行するＸＯＲ演算と同じであるため、説明は省略する。【０１４８】
記録部５４は、ノード１１から取得したノード情報、処理部５３の生成した第４の出力信号、および第７のＸＯＲ演算結果を記録するメモリである。【０１４９】
次に、故障診断装置の構成について図２８を用いて説明する。図２８は、本発明の実施の形態４における故障診断装置の装置構成の一例を示す構成図である。故障診断装置４１は、スイッチ部６０−１〜６０−４、通信部６１−１〜６１−３、タイムコード提供部６２、処理部６３、記録部６４、多数決回路６５、未更新判定部６６−１〜６６−３、故障診断部６７、および選択部６８を備える。なお、図面において実線矢印は情報の流れ、点線矢印は制御命令の流れを示している。【０１５０】
スイッチ部６０−１〜６０−４は、外部との通信接続を維持するまたは遮断する実行部である。スイッチ部６０−１〜６０−３は、演算装置４０−１〜４０−３との接続を、スイッチ部６０−４は、出力信号伝送路１３との接続を構成している。【０１５１】
通信部６１−１〜６１−３は、後述する処理部６３から送信される制御命令に従い、スイッチ部６０−１〜６０−３を制御し演算装置４０−１〜４０−３との情報の送受信を制御する。提供するタイムコード提供部６２は、現在のタイムコードを提供する。【０１５２】
処理部６３は、タイムコード提供部６２から取得したタイムコードに応じて通信部６１−１〜６１−３へ通信制御命令を送信する。また、処理部６３は、ＸＯＲ復元部６３３を備える。ＸＯＲ復元部６３３は、演算装置４０−１〜４０−３から取得した第７のＸＯＲ演算結果〜第９のＸＯＲ演算結果それぞれとタイムコード提供部６２から取得したタイムコードを変換したビットパターンとのＸＯＲ演算を実行し、演算装置４０−１〜４０−３が生成した第４の出力信号〜第６の出力信号を復元し、記録部６４に送信する。【０１５３】
記録部６４は、第７のＸＯＲ演算結果などの各種データを記録するメモリである。図２９は、本発明の実施の形態４における記録部のデータ構成の一例を示すデータ構成図である。図２９に示すように、記録部６４は、演算装置４３−１〜４３−３より取得した第７のＸＯＲ演算結果〜第９のＸＯＲ演算結果、およびＸＯＲ復元部６３３が復元した第４の出力信号〜第６の出力信号を記録している。【０１５４】
多数決回路６５は、第４の出力信号〜第６の出力信号が入力され、多数決をとり多数決信号を出力する論理回路である。未更新判定部６６−２、６６−３は、それぞれ第８のＸＯＲ演算結果、第９のＸＯＲ演算結果に基づいて、第５の出力信号、第６の出力信号が未更新であるか否かを判定し、未更新であると判定した場合に未更新信号を出力する。なお、多数決回路６５、未更新判定部６６−２、および６６−３は、実施の形態１〜３における多数決回路２６、未更新判定部２７−２、および２７−３と同様の構成のため、説明は省略する。【０１５５】
未更新判定部６６−１は、実施の形態１〜３における未更新判定部２７−１とは異なり、タイムコード基づいて第４の出力信号が未更新であるか否かを判定するのではなく、未更新判定部６６−２および６６−３と同様に第７のＸＯＲ演算結果の値が前回のＸＯＲ演算結果の値と同じ場合は、出力信号として１を、異なる場合は、出力信号として０を故障診断部６７に出力する。ＸＯＲ演算結果が同じ場合の出力信号１が、未更新であると判定したことを示し、本発明の未更新信号に該当する。つまり、実施の形態４における未更新判定部６６−１〜６６−３は、同じ構成を備えており、未更新であると判定した場合は、実施の形態１〜３における第１の未更新信号を出力する。【０１５６】
図２８に戻って、故障診断部６７は、多数決回路６５からの多数決信号と未更新判定部６６−１〜６６−３からの未更新信号とから故障を診断し、診断した故障要因に従い復旧処理に関する制御命令をスイッチ部６０−４、通信部６１−１〜６１−３、および処理部６３に送信する。【０１５７】
故障診断部６７は、実施の形態１〜３における故障診断部２８と同様に故障要因分類テーブルを参照し、故障を診断する。ここで、故障診断装置４１が、演算装置４０−１からも第７のＸＯＲ演算結果を取得していること、および未更新判定部６６−１の未更新であるか否かの判定方法が実施の形態１〜３の未更新判定部２７−１と異なることにより、故障要因診断結果における各識別子については、形態１〜３における図１３に示した識別子とは異なることになる。【０１５８】
実施の形態４における故障要因診断結果における各識別子について図３０を用いて説明する。図３０は、本発明の実施の形態４における故障要因を識別するための識別子と、その識別子に対応する故障要因の説明が記載された図である。ここで、各識別子は、演算装置４０−１〜演算装置４０−３それぞれを構成する構成部品の故障要因を示している。【０１５９】
識別子ｃｐｕ１〜ｃｐｕ３は、それぞれ演算装置４０−１〜４０−３の出力信号不正を示しており、出力される出力信号値が誤った値である場合を示している。【０１６０】
識別子ｔｉｍｅ０は、グローバルクロックの停止等により演算装置４０−１〜４０−３の全てのタイムコード提供部２２の故障を示している。また、識別子ｔｉｍｅ１〜ｔｉｍｅ３は、それぞれ演算装置４０−１〜４０−３のタイムコード提供部５２の故障を示している。【０１６１】
ここで、識別子ｔｉｍｅ０の場合は演算装置４０−１〜４０−３の全てにおいて故障が発生しているため、復旧処理は全ての演算装置４０−１〜４０−３に対して実行する必要がある。【０１６２】
また、識別子ｔｉｍｅ１〜ｔｉｍｅ３の故障は演算装置４０−１〜４０−３のタイムコード提供部５２におけるタイムコード提供の遅延または停止であり、演算装置４０−１〜４０−３が生成する第４の出力信号〜第６の出力信号、および出力する第７のＸＯＲ演算結果〜第９のＸＯＲ演算結果の値が誤った値となる。しかし、未更新判定部２７−２、２７−３が、未更新信号を出力する場合は含まないとする。つまり、ＸＯＲ演算結果が取得できない場合、取得されたＸＯＲ演算結果が未更新である場合は含まないとする。なお、未更新判定部６６−１が未更新信号を出力する場合は、後述する識別子ｌｏｓｔ１とｄｉｆｆ１とに、未更新判定部６６−２が未更新信号を出力する場合は、後述する識別子ｌｏｓｔ２とｄｉｆｆ２とに、未更新判定部６６−３が未更新信号を出力する場合は、後述する識別子ｌｏｓｔ３とｄｉｆｆ３とに含まれている。【０１６３】
ここで、識別子ｔｉｍｅ１の故障が、実施の形態１〜３の場合と異なっている。これは未更新検出回路６６−１が実施の形態１〜３における未更新判定部２７−１と異なりタイムコードに基づいて未更新であるか否かを判定していないためである。【０１６４】
識別子ｌｏｓｔ１〜ｌｏｓｔ３は、通信部６１−１〜６１−３を介しての第７のＸＯＲ演算結果〜第９のＸＯＲ演算結果の取得失敗を示している。ここで、識別子ｌｏｓｔ１の故障は、実施の形態４において追加された識別子である。識別子ｌｏｓｔ１が追加された理由は、実施の形態４におけるフォールトトレラントシステム４００においては、故障の診断を故障診断装置４１が行うために第４の演算結果を演算装置４０−１から取得する必要があるためである。
【０１６５】
識別子ｖｏｔｅｒ１〜ｖｏｔｅｒ３は、多項式回路６５における第４の出力信号〜第６の出力信号の各組み合わせに対するＸＯＲ演算の演算結果の不正を示している。【０１６６】
識別子ｄｉｆｆ１〜ｄｉｆｆ３は未更新回路６６−１〜６６−３の故障を示している。【０１６７】
次に、故障診断部６７が故障を診断する時に参照する故障要因分類テーブルについて図３１〜３５を用いて説明する。図３１〜３５は、本発明の実施の形態４における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。【０１６８】
実施の形態１〜３における故障要因診断テーブルである図８〜１２と異なっている診断としては、例えば、故障診断値“０１００００”の場合がある。図８〜１２においては、１因子故障としては（１）ｖｏｔｅｒ２の１通り、２因子同時故障としては（１）ｃｐｕ１とｖｏｔｅｒ１の組み合わせ、（２）ｃｐｕ３とｖｏｔｅｒ３の組み合わせ、そして（３）ｔｉｍｅ３とｖｏｔｅｒ３の組み合わせの３通りの合計４通りである。しかし、図３１〜３５では２因子同時故障として、ｔｉｍｅ１とｖｏｔｅｒ１の組み合わせが増え、合計５通りの故障の可能性があるとの診断となる。【０１６９】
また、例えば、故障診断値“１１０１００”の場合においても異なる診断となる。図８〜１２においては、１因子故障なし、２因子同時故障としては（１）ｃｐｕ１とｔｉｍｅ０の組み合わせ、（２）ｃｐｕ１とｔｉｍｅ１の組み合わせ、そして（３）ｃｐｕ１とｄｉｆｆ１の組み合わせの３通りの合計３通りである。しかし、図３１〜３５では１因子故障として実施の形態１〜３においては無かった識別子ｌｏｓｔ１の場合が増え、合計４通りの故障の可能性があるとの診断となる。【０１７０】
このように故障要因診断テーブルの構造は異なるが、図３１〜３５に示すようにフォールトトレラントシステム４００においても、未更新判定部６６にて出力信号が未更新であるか否かを判定することができ、故障要因の診断精度の向上と、その故障要因に適した復旧処理の実現をできるという効果を得ることができる。【０１７１】
図２８に戻り、選択部６８は、故障診断部６７にて診断された選択出力信号に従い出力する出力信号を選択し、記録部６４から取得し、スイッチ部６０−４および出力信号伝送路１３を介して外部へ出力する。【０１７２】
以上のように、実施の形態４のフォールトトレラントシステム４００によれば、故障診断を実行する故障要因診断装置を演算装置と別に備えることで、故障が起こりやすい演算装置の構造を簡単な構造とすることができ、演算装置の製造費用を抑えることができるという効果を得ることができる。
【符号の説明】
【０１７３】
１００，３００，４００  フォールトトレラントシステム、１０，３０，４０  演算装置、１１  ノード、１２  演算装置通信伝送路、１３  出力信号伝送路、１４  入出力ネットワーク、１５  演算結果出力伝送路、２０，６０  スイッチ部、２１，５１，６１  通信部、２２，５２，６２  タイムコード提供部、２３，５３，６３  処理部、２４，５４，６４  記録部、２５，６３３  ＸＯＲ復元部、２６，６５  多数決回路、２７，６６  未更新判定部、２８，６７  故障診断部、２９，６８  選択部、４１  故障診断装置、２３１，５３１  出力信号生成部、２３２，５３２  ＸＯＲ演算部、２５１，２５２，２５３，２５０１，２５０２，２５０３，２５０４，２５０５  ＸＯＲ論理素子、２５１０，２５１１  ＡＮＤ論理素子。
【図１】
0006556373.tif 000002
【図２】
0006556373.tif 000003
【図３】
0006556373.tif 000004
【図４】
0006556373.tif 000005
【図５】
0006556373.tif 000006
【図６】
0006556373.tif 000007
【図７】
0006556373.tif 000008
【図８】
0006556373.tif 000009
【図９】
0006556373.tif 000010
【図１０】
0006556373.tif 000011
【図１１】
0006556373.tif 000012
【図１２】
0006556373.tif 000013
【図１３】
0006556373.tif 000014
【図１４】
0006556373.tif 000015
【図１５】
0006556373.tif 000016
【図１６】
0006556373.tif 000017
【図１７】
0006556373.tif 000018
【図１８】
0006556373.tif 000019
【図１９】
0006556373.tif 000020
【図２０】
0006556373.tif 000021
【図２１】
0006556373.tif 000022
【図２２】
0006556373.tif 000023
【図２３】
0006556373.tif 000024
【図２４】
0006556373.tif 000025
【図２５】
0006556373.tif 000026
【図２６】
0006556373.tif 000027
【図２７】
0006556373.tif 000028
【図２８】
0006556373.tif 000029
【図２９】
0006556373.tif 000030
【図３０】
0006556373.tif 000031
【図３１】
0006556373.tif 000032
【図３２】
0006556373.tif 000033
【図３３】
0006556373.tif 000034
【図３４】
0006556373.tif 000035
【図３５】
0006556373.tif 000036