本発明の実施の形態1におけるフォールトトレラントシステムのシステム構成の一例を示す構成図である。
本発明の実施の形態1における演算装置の装置構成の一例を示す構成図である。
本発明の実施の形態1における演算装置の通信タイミングの一例を示す説明図である。
本発明の実施の形態1におけるXOR演算部におけるXOR演算の一例を示す説明図である。
本発明の実施の形態1における記録部のデータ構成の一例を示すデータ構成図である。
本発明の実施の形態1における多数決回路の構成の一例を示す構成図である。
本発明の実施の形態1における故障診断値のデータ構造の一例を示すデータ構造図である。
本発明の実施の形態1における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態1における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態1における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態1における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態1における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態1における故障要因を識別するための識別子と、その識別子に対応する故障要因の説明が記載された図である。
本発明の実施の形態1におけるマスターとして動作する演算装置の処理シーケンスの一例を示すフローチャートである。
本発明の実施の形態1におけるフォールトトレンラントシステムの通信タイミングの一例を示す説明図である。
本発明の実施の形態2におけるXOR演算部におけるXOR演算の一例を示す説明図である。
本発明の実施の形態2における多数決回路の構成図の一例を示す構成図である。
本発明の実施の形態3における演算装置の装置構成の一例を示す構成図である。
本発明の実施の形態3における通信データの一例を示すデータ構造図である。
本発明の実施の形態3における記録部のデータ構成の一例を示すデータ構成図である。
本発明の実施の形態3における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態3における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態3における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態3における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態3における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態4におけるフォールトトレラントシステムのシステム構成の一例を示す構成図である。
本発明の実施の形態4における演算装置の装置構成の一例を示す構成図である。
本発明の実施の形態4における故障診断装置の装置構成の一例を示す構成図である。
本発明の実施の形態4における記録部のデータ構成の一例を示すデータ構成図である。
本発明の実施の形態4における故障要因を識別するための識別子と、その識別子に対応する故障要因の説明が記載された図である。
本発明の実施の形態4における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態4における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態4における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態4における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
本発明の実施の形態4における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
以下に、本発明にかかる演算装置の実施の形態を図面に基づいて詳細に説明する。以下で参照する図面においては、同一もしくは相当する部分に同一の符号を付している。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明の実施の形態1に係るフォールトトレラントシステム100のシステム構成の一例を示す構成図である。フォールトトレラントシステム100は、3台の演算装置10−1〜10−3、周辺装置であるN台のノード(Node)11−1〜11−N、演算装置通信伝送路12、出力信号伝送路13、および入出力ネットワーク14を備える。なお、説明のため演算装置を3台としているがこれに限定されず、任意に設定できる。
演算装置10−1〜10−3は同一の構造を有し、いずれか1つがマスターとして動作し、残りの演算装置をスレーブとして制御する。なお、以降においては、演算装置10−1をマスターとして動作するフォールトトレンラントシステム100として説明する。
演算装置10−1〜10−3は、CPU(Central Processing Unit)やシステムLSI(Large Scale Integration)など演算を実行する装置であり、演算装置通信伝送路12を介して相互に接続されており、演算結果や装置状態などお互いの情報を交換することができる。そして、マスターである演算装置10−1は、入出力ネットワーク14を介してノード11から取得したノード情報を基に生成された出力信号を、出力信号伝送路13を介して外部へ出力する。ここで、出力信号はアクチュエータの駆動信号など装置の制御信号に相当する。なお、演算装置10−1〜10−3の具体的な動作は後述する。
ノード11−1〜11−Nは、ネットワークの接合点、中継点、分岐点等を示し、特にサーバ、コンピュータや通信機器などの通信の主体となる個々の機器である。
演算装置通信伝送路12および出力信号伝送路13は、情報を相互に送受信できる伝送路であり、同軸ケーブルや光ケーブルなどの有線伝送路でもよいし、Wi−Fi(登録商標)やBluetooth(登録商標)などの無線伝送路でもよい。
入出力ネットワーク14は、情報を相互に送受信できる伝送路から構成されており、同軸ケーブルや光ケーブルなどの有線伝送路でもよいし、Wi−Fi(登録商標)やBluetooth(登録商標)などの無線伝送路でもよい。
次に、演算装置10−1の構成について図2を用いて説明する。図2は、本発明の実施の形態1における演算装置の装置構成の一例を示す構成図である。ここでは、演算装置10−1について説明するが、演算装置10−2および10−3についても同様の構成であるため説明は省略する。演算装置10−1は、スイッチ部20−1〜20−4、通信部21−1〜21−3、タイムコード提供部22、処理部23、記録部24、XOR復元部25、多数決回路26、未更新判定部27−1〜27−3、および故障診断部28を備える。なお、図面において実線矢印は情報の流れ、点線矢印は制御命令の流れを示している。
スイッチ部20−1〜20−4は、外部との通信接続を維持する、または遮断する実行部である。スイッチ部20−1はノード11−1〜11−Nとの接続を、スイッチ部20−2は演算装置10−2との接続を、スイッチ部20−3は演算装置10−3との接続を、そしてスイッチ部20−4は出力信号伝送路14との接続を構成している。スイッチ部20−1〜20−4が本発明の遮断部に該当する。
通信部21−1〜21−3は、後述する処理部23から送信される通信制御命令に従い、それぞれスイッチ部20−1〜20−3を制御しノード11、演算装置10−2および10−3との情報の送受信を制御する。
タイムコード提供部22は、演算装置の処理タイミングを示す時間情報であるタイムコードを提供する。タイムコード提供部22は、水晶発振器とカウンタを組み合わせてタイムコードを生成する構成、演算装置の外部からクロック専用線を介して入力されるクロックをカウントし、タイムコードを生成する構成、または外部から有線あるいは無線ネットワークを介して通知された時刻に基づいてタイムコードを生成する構成とすることができる。また、内部の時間情報に基づいてタイムコードを生成する構成でも、外部から取得した時間情報に基づいてタイムコードを生成する構成でもよい。
処理部23は、タイムコード提供部22から取得したタイムコードに応じて通信部21−1〜21−3へ通信制御命令を送信する。また、処理部23は、出力信号生成部231とXOR演算部232を備える。
出力信号生成部231は、通信部21−1を介してノード11から取得したノード情報を基に演算を実行し、出力信号を生成する。なお、以降においては、演算装置10−1の出力信号生成部231が生成した出力信号を第1の出力信号とする。また、演算装置10−2にて生成された出力信号を第2の出力信号と、演算装置10−3にて生成された出力信号を第3の出力信号とする。
XOR演算部232は、第1の出力信号と、タイムコード提供部22から取得したタイムコードを変換したビットパターンとの排他的論理和(XOR:eXclusive OR、以後XOR演算)を実行し、XOR演算結果を出力する。XOR演算部232が本発明の演算部に該当する。なお、以降においては、演算装置10−1のXOR演算部232が出力したXOR演算結果を第1のXOR演算結果とする。また、演算装置10−2が出力したXOR演算結果を第2のXOR演算結果と、演算装置10−3が出力したXOR演算結果を第3のXOR演算結果とする。
なお、処理部23は演算装置10−1がスレーブとして動作する場合は、マスターとして動作する演算装置10−2または10−3に対応する通信部21−2または21−3に、出力した第1のXOR演算結果を送信するよう通信制御命令を送信する。
次に、タイムコードと演算装置10−1〜10−3の処理の関係を、図3を用いて説明する。図3は、本発明の実施の形態1における演算装置の通信タイミングの一例を示す説明図である。なお、説明のため演算装置を3台、ノードを4台の例としているが、これに限定されず接続する台数は自由に設定できる。また、図面において演算装置10−1〜10−3が、ノード情報110−1〜110−4、ノード情報をまとめた情報111−1と111−2、および第2のXOR演算結果112と第3のXOR演算結果113とを通信する例を説明する。
まず、図3は、マスターとして動作する演算装置10−1が各ノードからノード情報110−1〜110−4を取得し、取得したノード情報をまとめた情報111−1、111−2をそれぞれスレーブとして動作する演算装置10−2および10−3に転送する例である。
情報の送受信の処理は、スロットと呼ばれる時間単位にて実行され、各スロットには、タイムコードが付けられている。図3に示す例では、演算装置10−1の処理部23が、取得したタイムコードの値が1〜6のいずれであるかを判定し、対応する処理を実行する。タイムコード1〜4のスロットにおいて、演算装置10−1の処理部23は、ノード11−1〜11−4よりノード情報110−1〜110−4を取得する。次に、タイムコード5のスロットにおいて、演算装置10−1の処理部23は、取得したノード情報をまとめた情報111−1をスレーブとして動作する演算装置10−2に、ノード情報をまとめた情報111−2をスレーブとして動作する演算装置10−3に転送する。そして、タイムコード6のスロットにおいて、演算装置10−1の処理部23は、演算装置10−2が出力した第2のXOR演算結果112と演算装置10−3が出力した第3のXOR演算結果113を取得する。
演算装置10−1の処理部23は、タイムコード1〜6を繰り返し周期としてタイムコード7以降も繰り返す。具体的には、タイムコードを6で割った余りから対応するタイムコードを求め、上述のタイムコードの判定を行う。演算装置10−1の処理部23は、余りが1〜4である場合はタイムコードが1〜4に対応と判定し、余りが5である場合はタイムコードが5に対応と判定し、余りが0である場合はタイムコードが6に対応すると判定し、処理を実行する。また、以降においては、演算装置10−1〜10−3は、図3の通信タイミングにて動作しているとして説明する。
また、タイムコードは通信のタイミングだけでなく、出力信号生成部231とXOR演算部232における処理のタイミングにも用いられる。出力信号生成部231は、タイムコード6のスロットにおいて第1の出力信号を生成する。また、XOR演算部232は、タイムコード6のスロットにおいて第1のXOR演算結果を出力する。ここで、同じくタイムコード6のスロットにおいて、演算装置10−2と10−3がそれぞれ第2のXOR演算結果と第3のXOR演算結果を出力する。
図4は、本発明の実施の形態1におけるXOR演算部におけるXOR演算の一例を示す説明図である。図4においてビットパターンはタイムコードをバイナリ変換したものであり、第1の出力信号とビットパターンとのXOR演算の結果が第1のXOR演算結果である。ここで、タイムコードが6、12、18と飛び飛びの値をとっているのは、処理部におけるXOR演算処理がタイムコード6、12、18のスロットにて実行されるためである。なお、ここでビットパターンとしてタイムコードをバイナリ変換したものを用いているが、これに限定されず、グレイコードなど他の変換を任意に用いることができる。
上述のXOR演算において、タイムコードの値が時間経過とともに変化していくため、第1のXOR演算結果は、第1の出力信号が同じ値であったとしてもXOR演算は異なる値とすることができる。
なお、第1のXOR演算結果は、演算装置10−1がマスターとして動作している場合は特に記録するなどの必要性はないが、スレーブとして動作している場合は、マスターとして動作している演算装置10−2または10−3に送信することになる。また、演算装置10−2および10−3においても同様のXOR演算が実行される。
図2に戻って、記録部24は、ノード情報などの各種データを記録するメモリである。図5は、本発明の実施の形態1における記録部のデータ構成の一例を示すデータ構成図である。図5に示すように、記録部24は、通信部21−1を介してノード11から取得したノード情報、処理部23が生成した第1の出力信号と第1のXOR演算結果、および通信部21−2、21−3を介して演算装置10−2、10−3からそれぞれ取得した第2のXOR演算結果および第3のXOR演算結果を記録している。
図2に戻って、XOR復元部25は、記録部24から取得した第2のXOR演算結果および第3のXOR演算結果それぞれとタイムコードを変換したビットパターンとのXOR演算を実行し、演算装置10−2と10−3が生成する第2の出力信号および第3の出力信号を復元し、多数決回路26に出力する。
多数決回路26には、第1の出力信号とXOR復元部25により復元された第2の出力信号および第3の出力信号とが入力される。多数決回路26は、第1の出力信号と第2の出力信号、第1の出力信号と第3の出力信号、第2の出力信号と第3の出力信号の組み合わせについてXOR演算を行い、XOR演算結果の多数決を取る論理回路である。
ここで、図6を用いて多数決回路26の構成の一例を説明する。図6は、本発明の実施の形態1における多数決回路の構成の一例を示す構成図である。多数決回路26は、XOR演算素子251〜253を備える。XOR論理素子251〜253は、XOR演算を実行する論理素子である。XOR演算素子251は、第1の出力信号の各ビットと第2の出力信号の各ビットとのXOR演算の結果に対して各ビットの論理和(以後OR)を取る。また、XOR演算素子252は第1の出力信号と第3の出力信号に対して、XOR演算結果253は第2の出力信号と第3の出力信号に対して、XOR演算素子252と同様の演算を実行する。その結果、XOR論理素子251〜253は、入力された出力信号が同じ場合は0を、異なる場合は1を多数決信号として故障診断部28へ出力する。
図2に戻って、未更新判定部27−1は、タイムコード提供部22から取得したタイムコードに基づいて、演算装置10−1にて生成された第1の出力信号が未更新であるか否かを判定する。具体的には、内部にタイマーを備えており、この内部タイマーによりタイムコードが入力される時間間隔を測定する。そして、未更新判定部27−1は、タイムコードが入力される時間間隔に関する情報を保持しており、その値と測定結果が同じ場合は、出力信号として0を、異なる場合は、出力信号として1を出力する。測定結果と保持している時間間隔とが異なる場合の出力信号1が、未更新であると判定したことを示し、本発明の第2の未更新信号に該当する。また、未更新判定部27−1が、本発明の第2の未更新判定部に該当する。
なお、ここでは、未更新判定部27−1が内部にタイマーを備える構成について説明したが、これに限らずタイムコード提供部22とは異なる経路にて時間に関する情報を取得できればよく、演算装置の外部からクロック専用線を介して入力されるクロックをカウントし、時間間隔を測定する構成、外部から有線あるいは無線ネットワークを介して通知された時刻情報に基づいて時間間隔を測定する構成であってもよい。
未更新判定部27−2および27−3は、それぞれ記録部24に記録された第2のXOR演算結果、第3のXOR演算結果から第2の出力信号、第3の出力信号が未更新であるか否かを判定する。具体的には、未更新判定部27−2、27−3は、それぞれ第2のXOR演算結果、第3のXOR演算結果が、タイムコードの周期が一周期前である前回、つまりタイムコードが6前における第2のXOR演算結果、第3のXOR演算結果の値と同じであるか否かを判定し、同じ場合は、出力信号として1を、異なる場合は、出力信号として0を故障診断部28に出力する。XOR演算結果が同じ場合の出力信号1が、出力信号が未更新であることを示し、本発明の第1の未更新信号に該当する。また、未更新判定部27−2および27−3が、本発明の第1の未更新判定部に該当する。
ここで、XOR演算結果は、時間の経過とともに変化するタイムコードを変換したビットパターンとのXOR演算の結果であるため、出力信号の値が前回の出力信号の値と同じであってもXOR演算の値は異なる値となり、XOR演算の値を前回の値と比較することで、適切に未更新であるか否かを判定できる。
故障診断部28は、多数決回路26からの多数決信号と、未更新判定部27−1からの第2の未更新信号と、未更新判定部27−2および27−3それぞれからの第1の未更新信号とから故障要因を診断し、診断した故障要因に応じた復旧処理に従い制御命令をスイッチ部20−4、通信部21−1〜21−3、処理部23に送信する。
具体的には、故障診断部28は、多数決回路26からの多数決信号と、未更新判定部27−1からの第2の未更新信号と、未更新判定部27−2および27−3それぞれからの第1の未更新信号を合成した故障診断値を生成する。次に、故障診断部28は、故障診断値と故障が発生した場合の要因を示す故障要因診断結果、および故障に対する復旧処理との対応関係を示す故障要因分類テーブルを参照し、生成した故障診断値に対応する故障診断結果、復旧処理を診断する。
まず、故障診断値について図7を用いて説明する。図7は、本発明の実施の形態1における故障診断値のデータ構造の一例を示すデータ構造図である。図7に示される故障診断値は、多数決信号である前半3個の信号260と、未更新信号である後半3個の信号270との合計6個の信号を組み合わせたものである。
信号260は、信号261〜263から構成される。信号261は、多数決回路26における第1の出力信号と第2の出力信号との多数決信号である。信号262は、多数決回路26における第1の出力信号と第3の出力信号との多数決信号である。信号263は、多数決26における第2の出力信号と第3の出力信号との多数決信号である。
信号270は、信号271〜273から構成される。信号271〜273、それぞれ未更新検出回路27−1〜27−3からの出力信号である。ここで、信号271において値が1の場合が本発明の第2の未更新信号に、信号272および273それぞれにおいて値が1の場合が本発明の第1の未更新信号に該当する。
次に、故障診断部28が故障を診断する時に参照する故障要因分類テーブルについて図8〜12を用いて説明する。図8〜12は、本発明の実施の形態1における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。故障要因分類テーブルは、故障診断値、故障要因診断結果、および復旧処理の対応関係テーブルである。
故障診断値は、上述したように多数決信号と第1の未更新信号と第2の未更新信号とを合成した値である。故障要因診断結果は、1因子故障または2因子同時故障を考慮した場合の故障要因として可能性のある組み合わせの結果である。また、図面において黒色丸印(●)にて示された故障要因は、演算装置10−1〜10−3のうち2台の演算装置が故障要因を有しており、その故障要因を有する2台の演算装置が生成した出力信号の値および出力したXOR演算結果の値が誤った値で、かつ、同じ値である場合を示している。つまり、2台の演算装置が故障しており、その故障している演算装置が同じ誤った出力信号を生成し、XOR演算結果を出力している場合を示している。
なお、故障要因として2因子同時故障までの考慮としているのは、3因子同時故障が発生する可能性が低いため、故障診断部28での診断を必ず3因子故障であると診断できる場合を除いて、発生する可能性のある1因子故障または2因子同時故障に注力することで、不要なシステム停止、復旧処理を回避するためである。しかし、より安全のため3因子同時故障を考慮した故障要因分類テーブルを作成し参照するとしてもよい。
故障要因診断結果における各識別子について図13を用いて説明する。図13は、本発明の実施の形態1における故障要因を識別するための識別子と、その識別子に対応する故障要因の説明が記載された図である。ここで、各識別子は、演算装置10−1がマスターとして動作している場合の演算装置10−1〜10−3それぞれを構成する構成部品の故障要因を示している。
識別子cpu1〜cpu3は、それぞれ演算装置10−1〜10−3の出力信号不正を示しており、出力される出力信号値が誤った値である場合を示している。
識別子time0は、グローバルクロックの停止等により演算装置10−1〜10−3の全てのタイムコード提供部22の故障を示している。また、識別子time1〜time3は、それぞれ演算装置10−1〜10−3のタイムコード提供部22の故障を示している。
ここで、識別子time0の場合は演算装置10−1〜10−3の全てにおいて故障が発生しているため、復旧処理は全ての演算装置10−1〜10−3に対して実行する必要がある。
また、識別子time2、time3の故障は、それぞれ演算装置10−2、10−3のタイムコード提供部22におけるタイムコード提供の遅延または停止であり、演算装置10−2、10−3それぞれが生成する第2の出力信号、第3の出力信号の値、および出力する第2のXOR演算結果、第3のXOR演算結果の値が誤った値となる。しかし、未更新判定部27−2、27−3が、未更新信号を出力する場合は含まないとする。つまり、XOR演算結果が取得できない場合、取得されたXOR演算結果が未更新である場合は含まないとする。なお、未更新判定部27−2が未更新信号を出力する場合は、後述する識別子lost2とdiff2とに、未更新判定部27−3が未更新信号を出力する場合は、後述する識別子lost3とdiff3とに含まれている。
識別子time1の故障は、演算装置10−1のタイムコード提供部22におけるタイムコード提供の遅延または停止である。ここで、未更新判定部27−1がタイムコードに基づいて未更新であるか否かを判定するため、識別子time1の故障は、演算装置10−1が生成する第1の出力信号と、出力する第1のXOR演算結果の値が誤った値となることに加え、未更新検出回路27−1が未更新信号を出力する故障である。
識別子lost2、lost3は、それぞれ通信部21−2、21−3を介しての第2のXOR演算結果、第3のXOR演算結果の取得失敗を示している。なお、識別子lost2、lost3の故障に対応するため、多数決回路26、および未更新判定部27−2と27−3に入力される信号は、記録部24に記録されているデータを用いることとする。このようにすることで、XOR演算結果の取得に失敗した場合も記録部24に記録された前回のXOR演算結果の値を用いることができ、多数決回路26が多数決信号を、未更新判定部27−2と27−3が出力信号を必ず出力し、故障診断部28にて適切に故障を診断できる。
識別子voter1〜voter3は、多項式回路26における第1の出力信号〜第3の出力信号の各組み合わせに対するXOR演算の演算結果の不正を示している。
識別子diff1〜diff3は未更新判定部27−1〜27−3の故障を示している。
図8〜12に戻って、復旧処理は、故障要因診断結果に対する復旧処理であり、マスターとして動作する演算装置の変更、フォールトトレラントシステムの停止、および通信部21−2〜21−4を介した通信の遮断が含まれている。なお、復旧処理にマスターとして動作する演算装置を変更する対象として演算装置10−2または10−3のどちらも可能である場合に演算装置10−2または10−3をマスターに変更と記載しているが、これは状況の説明のためであり、実際に動作させる場合はいずれか一方を選択する。
次に、故障診断部28における故障診断の一例を、図8〜12を用いて説明する。例えば、故障診断値が“000000”である場合、故障診断部28は、故障無しと診断する。
例えば、故障診断値が“010000”である場合、故障診断部28は1因子故障としては(1)voter2の1通りと、2因子同時故障としては(1)cpu1とvoter1の組み合わせ、(2)cpu3とvoter3の組み合わせ、そして(3)time3とvoter3の組み合わせの3通りの合計4通りの可能性があると診断する。
診断結果より、演算装置10−1の故障と演算装置10−3に故障の可能性があるため、復旧処理としては、故障の可能性のない演算装置10−2をマスターに変更する復旧処理が実行される。具体的には、故障診断部28が、通信部21−2を介して演算装置10−2にマスター変更要求を送信し、演算装置10−2はマスター変更指示を受け取ると次の繰り返し周期のスロットからマスターとして動作する。また、診断結果に故障要因cpu1が有ることから、演算装置10−1の処理部23が故障している可能性があるため、故障診断部28は、通信部21−2にスイッチ部20−2を制御し演算装置10−2との通信を遮断する遮断指示を、通信部21−3にスイッチ部20−3を制御し演算装置10−3との通信を遮断する遮断指示を送信し、演算装置10−2および10−3との通信を遮断する。さらに、演算装置10−1の処理部23が故障している可能性があることから、第1の出力信号が不正である可能性があるため、スイッチ部20−4に通信を遮断する遮断指示を送信し、第1の出力信号1が外部に出力されることを防止する。
なお、演算装置10−1からマスター変更要求を送信することで演算装置10−2をマスターに変更する方法にて説明しているが、これに限定されず、例えば、通信装置10−2が、演算装置10−1との通信が遮断されたことを検知した時に、マスターとして動作するとしてもよい。具体的には、演算装置10−1の通信部21−2から演算装置10−2へ常に無効データを送信しており、演算装置10−1の故障時に通信部21−2が、スイッチ部20−2を切断し、無効データの送信を停止する。この時、演算装置10−2において演算装置10−1との情報の送受信を制御する演算装置10−2の通信部21−2が、演算装置10−1からのデータ送信が停止したことを検知し、演算装置10−2の処理部23に通知する。演算装置10−2の処理部23は、演算装置10−1が故障したと判断して次の繰り返し周期からマスターとして動作するとのマスター変更方法でもよい。
次に、例えば故障要因診断値が“011110”である場合、故障診断部28は1因子故障の場合は無し、2因子同時故障としては(1)cpu1とcpu2、および黒色丸印の組み合わせ、の合計1通りの可能性があると診断する。ここでcpu1とcpu2の故障は、演算装置10−1と演算装置10−2が故障していることを示しており、黒色丸印は、故障した演算装置10−1と演算装置10−2から生成される第1の出力信号と第2の出力信号、および出力される第1のXOR演算結果と第2のXOR演算結果が同じ値であることを示している。
ここで、演算装置10−1と演算装置10−2の処理部23が同時に故障している可能性があるため、復旧処理としてはフォールトトレラントシステム100を停止し、スイッチ部20−2と20−3を切断することで演算装置10−2と10−3との通信を遮断し、スイッチ部20−4を切断することで外部との通信を遮断する。
次に、実施形態1における演算装置10−1の処理シーケンスを、図14を用いて説明する。図14は、本発明の実施の形態1におけるフォールトトレンラントシステムの処理シーケンスの一例を示すフローチャートである。まず、処理部23が、タイムコード提供部22からタイムコードTを取得する(ステップS101)。
次に、処理部23が、取得したタイムコードTが、T=1〜6のいずれに該当するか判定する(ステップS102)。
図3より、タイムコードTが1〜4である場合、タイムコード1〜4のスロットであるため、処理部23が、通信部21−1を介して対応するノード11−1〜11−4からノード情報を取得し、記録部へ書き込む(ステップS103)。
図3より、タイムコードTが5である場合、タイムコード5のスロットであるため、処理部23が、ノード情報をまとめた情報を、通信部21−2を介して演算装置10−2へ、通信部21−3を介して演算装置10−3へ送信する(ステップS104)。
図3より、タイムコードTが6である場合、タイムコード6のスロットであるため、処理部23が、通信部21−2を介して第2のXOR演算結果を、21−3を介して第3のXOR演算結果を取得し、記録部へ書き込む(ステップS105)。
なお、処理部23が取得したタイムコードTが7より大きい場合、繰り返し周期が6であることから、タイムコードTを6で割った余りに基づいて、ステップS102の判定を行う。具体的には、余りが1〜4である場合はタイムコードTが1〜4と、余りが5である場合はタイムコードTが5と、余りが0である場合はタイムコードTが6と判定する。
ステップS103およびS104の処理後は、ステップS101に戻る。ステップS105の処理後は、ステップS106に移行する。
ステップS106では、出力信号生成部231は、記録部24より取得したノード情報を基に演算を行い、第1の出力信号を生成し、生成した第1の出力信号を記録部24に書き込む。
ステップS107では、XOR復元部25は、取得した第2のXOR演算結果および第3のXOR演算結果と、タイムコードTの値6を変換したビットパターンとのXOR演算を実行し、第2の出力信号および第3の出力信号を復元する。
ステップS108では、多数決回路26が、第1の出力信号と、復元された第2の出力信号および第3の出力信号を入力され、多数決信号を故障診断部28に出力する。
次に、ステップS109では、未更新判定部27−1〜27−3がそれぞれ第1の出力信号〜第3の出力信号が未更新であるか否かを判定し、出力信号を故障診断部28に出力する。なお、未更新判定部27−1〜27−3が未更新であると判定した場合に出力される出力信号が、未更新信号である。
ステップS110では、故障診断部28が、入力された多数決出力信号と未更新信号に基づいて故障を診断する。
次に、ステップS111では、故障診断部28が、ステップS110で診断された故障の有無によって移行するステップを判定する。ここで、故障無しと診断された場合は、故障診断部28が、スイッチ部20−4を制御し、出力信号伝送路13を介して第1の出力信号を外部に出力し(ステップS112)、ステップS101に戻り処理を継続する。また、故障有りと診断された場合は、故障診断部28が、ステップS110で判別された故障要因に対応する復旧処理の制御命令を通信制御部21−2、21−3、および処理部23に送信し(ステップS113)、処理を終了する。
以上のように、実施の形態1のフォールトトレラントシステム100によれば、多数決回路において出力信号の値を比較した結果である多数決信号だけでなく、未更新検出回路において出力信号と時間情報であるタイムコードを変換したビットパターンとのXOR演算結果に基づいて出力信号が前回の出力信号から未更新であると判定した場合に出力される未更新信号に基づいて故障を診断することで、従来よりも多くの情報に基づいて故障を診断することができ、故障要因の診断精度の向上と、その故障要因に適した復旧処理の実現をできるという効果を得ることができる。
また、故障診断部が、多数決信号と未更新信号を合成した故障診断値と、故障要因診断結果と、復旧処理との対応関係テーブルである故障要因分類テーブルを参照し、故障を診断することで、細かく分類された故障要因に基づいて故障を診断することができ、故障要因の診断精度の向上と、その故障要因に適した復旧処理の実現をできるという効果を得ることができる。
さらに、未更新判定部が、時間とともに値の変化するタイムコードを変換したビットパターンと出力信号とのXOR演算の結果であるXOR演算結果に基づいて未更新であるか否かを判定することで、出力信号として前回の出力信号と同じ値を出力された場合であっても未更新であることを適切に判定できるという効果も得ることができる。
さらに、故障診断部が自装置に故障があることを診断した場合に、外部との通信を遮断することで、誤った出力信号が外部へ出力されることを防止できるという効果も得ることができる。
さらに、故障診断部が自装置以外の演算装置に故障があることを診断した場合に、該当する演算装置との通信を遮断することで、故障した演算部からの情報により誤った処理を行うことを防止できるという効果も得ることができる。
なお、実施の形態1におけるフォールトトレンラントシステム100の通信タイミングとして図3に示すタイミングにて説明したが、これに限らず他のタイミングにて通信を行ってもよい。他の通信タイミングの例を、図15を用いて説明する。図15は、本発明の実施の形態1におけるフォールトトレラントシステムの通信タイミングの一例を示す説明図である。
図15は、図3に示す例とは異なり、各演算装置が同じタイミングにてそれぞれ個別に各ノードからノード情報を取得する例である。演算装置10−1〜10−3はタイムコード1〜4のスロットにおいて同じタイミングにてノード11−1〜11−4よりノード情報110−1〜110−4を取得する。次に、演算装置10−1は、タイムコード5のスロットにて第2のXOR演算結果112および第3のXOR演算結果113を取得する。また、演算装置10−1は、タイムコード1〜5を繰り返し周期としてタイムコード6以降も繰り返す。
また、タイムコードは通信のタイミングだけでなく、出力信号生成部231とXOR演算部232における処理のタイミングにも用いられる。出力信号生成部231は、タイムコード5のスロットにおいて第1の出力信号を生成する。さらに、XOR演算部232は、タイムコード5のスロットにおいて第1のXOR演算結果を生成する。ここで、同じくタイムコード5のスロットにおいて、演算装置10−2と10−3にてそれぞれ第2のXOR演算結果232−2と第3のXOR演算結果232−3が生成される。
なお、通信タイミングの他の例として、図3に示した通信タイミングおいて演算装置10−1から演算装置10−2と10−3へのノード情報の転送を2回に分けるなど、通信回数や順番を入れ替えてもよい。
なお、図2の演算装置10−1の構成図では多数決回路26に入力する信号をXOR復元部25にて出力信号に復元する構成が記載されているが、これに限らずXOR演算部232にて復号し、多数決回路26に入力するとしてもよい。この場合は、XOR復号部25を不要とすることができる。
実施の形態2.
実施の形態1においてフォールトトレラントシステム100は、出力信号と1種類のタイムコードを変換したビットパターンとのXOR演算の結果であるXOR演算結果に基づいて、未更新判定部が、出力信号が未更新であるか否かを判定する実施の形態について説明した。
実施の形態2では、タイムコードを変換したビットパターンとしてビット反転の関係にある2種類のビットパターンを有し、出力されるXOR演算結果の値が、常に前回のXOR演算の値とは異なる値となるように演算に用いるビットパターンを選択する実施例について説明する。
実施の形態2におけるフォールトトレラントシステムのシステム構成、演算装置の装置構成は、実施の形態1と同様であるため、説明は省略する。
まず、演算装置10−1のXOR演算部232におけるXOR演算について図16を用いて説明する。ここでは、演算装置10−1について説明するが、演算装置10−2および10−3についても同様の構成であるため、説明は省略する。図16は、本発明の実施の形態2におけるXOR演算部におけるXOR演算の一例を示す説明図である。ここで、A系列ビットパターンは実施の形態1と同様にタイムコードをバイナリ変換したビットパターンであり、B系列ビットパターンはA系列ビットパターンとビット反転の関係にあるビットパターンである。通常はA系列ビットパターンを選択しXOR演算を実行するとする。なお、図16において選択されたビットパターンを黒色三角印(▲)にて示している。
図16においてタイムコードが18の場合、XOR演算部232は、B系列ビットパターンを選択している。ここで、XOR演算部232がA系列ビットパターンを選択すると、第1のXOR演算結果は、“00000101”となり、1周期前の、タイムコードが12の場合のXOR演算結果と同じ値となる。そのため、タイムコードが18の場合は、XOR演算部232は、B系列ビットパターンを選択しXOR演算を実行することで前回のXOR演算結果の値と異なる第1のXOR演算結果を出力する。
このように、A系列ビットパターンとB系列ビットパターンは、ビット反転であることから必ず異なった値となるため、A系列ビットパターンを選択したXOR演算では前回のXOR演算結果の値と同じXOR演算結果となる場合でもB系列ビットパターンを選択したXOR演算によるXOR演算結果は、必ず前回のXOR演算結果と異なる値となる。
また、第2のXOR演算結果および第3のXOR演算結果も同様の演算による結果であり、第2のXOR演算結果および第3のXOR演算結果の値も、必ず前回のXOR演算結果の値と異なる値となる。このように、第2のXOR演算結果および第3のXOR演算結果が必ず前回のXOR演算結果の値とは異なる値となるため、未更新判定部27−2および27−3は、より精度高く出力信号が未更新であるか否かを判定できる。
次に、実施の形態2における多数決回路26について図17を用いて説明する。図17は、本発明の実施の形態2における多数決回路の構成図の一例を示す構成図である。多数決回路26は、XOR論理素子2501〜2505と論理積論理素子(以後AND論理素子)2510および2511を備える。
XOR論理素子2501は、処理部23にて生成された第1の出力信号と、第2のXOR演算結果からXOR復元部25にて復元した第2の出力信号とが入力され、XOR演算を行う論理素子である。
XOR演算素子2503は、処理部23にて生成された第1の出力信号と、第3のXOR演算結果からXOR復元部25にて復元した第3の出力信号とが入力され、XOR演算を行う論理素子である。
XOR論理素子2505は、第2のXOR演算結果と第3のXOR演算結果それぞれからXOR復元部25にて復元した第2の出力信号と第3の出力信号が入力され、XOR演算を行う論理素子である。
XOR論理素子2501、2503、および2505は、入力された出力信号同士の各ビットそれぞれのXOR演算の結果に対して各ビットのORを取る。その結果、XOR論理素子2501、2503、および2505は、入力された出力信号が同じ場合は、出力信号として0を、入力された出力信号が異なる場合は、出力信号として1を出力する。ここで、XOR論理素子2501および2503については出力信号をAND論理素子2510および2511に出力し、XOR論理素子2505については多数決信号として故障診断部28に直接出力する。
XOR論理素子2502は、処理部23にて生成された第1の出力信号と、第2のXOR演算結果からXOR復元部25にて復元した第2の出力信号をビット反転した信号が入力され、XOR演算を行う論理素子である。
XOR論理素子2504は、処理部23にて生成された第1の出力信号と、第3のXOR演算結果からXOR復元部25にて復元した第3の出力信号をビット反転した信号が入力され、XOR演算を行う論理素子である。
XOR論理素子2502および2504では、入力された信号同士の各ビットそれぞれのXOR演算の結果に対して各ビットのORを取る。その結果、XOR論理素子2502および2504は、入力された出力信号が同じ場合は、出力信号として0を、入力された出力信号が異なる場合は、出力信号として1をAND論理素子2510および2511に出力する。
AND論理素子2510および2511は、それぞれXOR演算素子2501と2502、およびXOR2503と2504からの出力信号が入力され、ANDを取り、その結果、入力信号の少なくとも1つが0であれば、多数決信号として0を、入力信号が全て1であれば、多数決信号として1を故障診断部28に出力する。
上述の多数決回路26の構成により、XOR復元部25は、XOR演算に用いるビットパターンをA系列ビットパターンまたはB系列ビットパターンのいずれか1種類としたXOR演算にて出力信号を復元できる。これによりXOR復元部25の構成を実施の形態1と同様に簡単な構成とすることができる。
XOR復元部25におけるXOR演算が、A系列ビットパターンまたはB系列ビットパターンのいずれか1種とのXOR演算とすることができる理由について説明する。ここでは、XOR復元部25におけるXOR演算が、A系列ビットパターンとのXOR演算である場合について説明する。なお、XOR復元部25におけるXOR演算が、B系列ビットパターンとのXOR演算である場合も同様であるため、説明は省略する。
第2のXOR演算結果と第3のXOR演算結果がA系列ビットパターンとのXOR演算の結果である場合、XOR復元部25にて復元された信号は、第2の出力信号および第3の出力信号と同じ信号となる。一方、第2のXOR演算結果と第3のXOR演算結果がB系列ビットパターンとのXOR演算の結果である場合、XOR復元部25にて復元された信号は、第2の出力信号および第3の出力信号とビット反転の関係にある信号となる。
上述のようにXOR復元部25にて復元された信号は、第2の出力信号および第3の出力信号と同じ信号またはビット反転の関係にある信号となる。そのため、XOR復元部25にて復元された信号がそのまま入力されるXOR論理素子2501と2503の組、またはXOR復元部25にて復元された信号をビット反転させて入力されるXOR論理素子2502と2504の組のいずれかの組において、出力信号と同じ信号にて第1の出力信号とのXOR演算を実行することができる。
したがって、第1の出力信号〜第3の出力信号の値が全て同じ場合、XOR復元部25にて復元された信号がそのまま入力されるXOR論理素子2501と2503の組、またはビット反転して入力されるXOR論理素子2502と2504の組、のいずれかの組は出力信号として1を出力し、もう一方は出力信号として0を出力する。この出力信号がAND論理素子2510および2511に入力されてAND演算が実行されるため、AND論理素子2510および2511から多数決信号として0が出力される。したがって、第1の出力信号〜第3の出力信号の多数決を正しく取ることができる。
一方、第1の出力信号と第2の出力信号、または第1の出力信号と第3の出力信号の組において、少なくとも1つ組の出力信号の値が異なる場合は、異なる組に対応するXOR論理素子2501と2502、または2503と2504の組の内、少なくとも1つの組において、XOR論理素子からの出力信号として2つとも1が出力される。そのため、AND論理素子2510または2511の内、少なくとも1つから多数決信号として1が出力される。ここで、多数決信号が1であることは、出力信号の値が異なっていることを示している。したがって、第1の出力信号〜第3の出力信号の多数決を正しく取ることができる。
以上がXOR復元部25におけるXOR演算が、A系列ビットパターンまたはB系列ビットパターンのいずれか1種とのXOR演算とすることができる理由である。
以上のように、実施の形態2のフォールトトレラントシステム100によれば、XOR演算結果の値は、必ず前回のXOR演算結果の値と異なることになり、未更新判定部における出力信号が未更新であるか否かを判定する精度がより向上するという効果を得ることができる。
なお、XOR復元部25において、XOR演算に用いられるビットパターンが1種類である場合について説明したが、これに限定されずA系列ビットパターンとB系列ビットパターンの2種類から選択することもできる。例えば、第2のXOR演算結果および第3のXOR演算結果に選択したタイムコードに関する情報を付加することで、付加された情報からXOR復元部25が、演算が実行されたビットパターンがA系列ビットパターンとB系列ビットパターンのいずれであるかを判断でき、該当するビットパターンにて復元することができる。この例では送受信するデータ容量が増加するが、多数決回路の構成を実施の形態1と同様に簡単な構成とすることができるという効果がある。
なお、A系列ビットパターンとB系列ビットパターンは、ビット反転の関係である場合について説明したが、これに限定されずA系列ビットパターンとB系列ビットパターンが異なるビットバターンとなっていればよい。例えば、A系列ビットパターンとしてタイムコードをバイナリ変換したビットパターンとし、B系列ビットパターンとしてタイムコードをグレイコード変換したビットパターンとしてもよい。この例は、第2のXOR演算結果および第3のXOR演算結果に選択したタイムコードの変換方式に関する情報を付加することで実現できる。
実施の形態3.
実施の形態3では、演算装置30−1〜30−3の3台の演算装置を備え、各演算装置における出力信号およびXOR演算結果の通信データの構造が実施の形態1および2におけるフォールトレラントシステム100と異なっているフォールトトレラントシステム300について説明する。
フォールトトレンラントシステム300の構成については、フォールトトレラントシステム100における演算装置10−1〜10−3の代わりに30−1〜30−3を備えているのみであるため、説明は省略する。また、説明のため演算装置を3台としているがこれに限定されず、任意に設定できる。
演算装置30−1について図18を用いて説明する。ここでは、演算装置30−1について説明するが、演算装置30−2および30−3についても同様の構成であるため、説明は省略する。図18は、本発明の実施の形態3における演算装置の装置構成の一例を示す構成図である。フォールトトレラントシステム100における演算装置10−1の構成に加え、故障診断部28の診断結果に基づいて出力信号伝送路13を介して外部へ出力する出力信号を選択する選択部29を備えた構成である。
スイッチ部20−1〜20−4、通信部21−1〜21−3、タイムコード提供部22は、実施の形態1と同様であるため、説明は省略する。
処理部23は、出力信号生成部231とXOR演算部232を備える。出力信号生成部231は、第1の出力信号に基づいて巡回冗長検査(CRC:Cyclic Redundancy Check、以後CRC)データを生成するとともに、当該CRCデータを第1の出力信号に付加したデータである出力信号の通信データ300を生成する。ここで、CRCデータとは、誤り検出方式に用いられる検査用の値であり、データを生成多項式と呼ばれるあらかじめ決められた数によって除算した余りである。なお、以降においては、演算装置10−1の出力信号生成部231が生成するCRCデータを第1のCRCデータとする。また、演算装置10−2が生成するCRCデータを第2のCRCデータと、演算装置10−3が生成するCRCデータを第3のCRCデータとする。また、出力信号生成部230が本発明のCRCデータ生成部に該当する。
XOR演算部232は、タイムコード提供部22より取得したタイムコードを変換したビットパターンと出力信号生成部231が生成した第1のCRCデータとのXOR演算結果を生成するとともに、当該XOR演算結果を第1の出力信号に付加したXOR演算結果の通信データ301を出力する。なお、以降においては、演算装置10−1のXOR演算部232でのタイムコード変換したビットパターンと第1のCRCデータとのXOR演算結果を第4のXOR演算結果とする。また、演算装置10−2でのタイムコード変換したビットパターンと第2のCRCデータとのXOR演算結果を第5のXOR演算結果と、演算装置10−3でのタイムコード変換したビットパターンと第3のCRCデータとのXOR演算結果を第6のXOR演算結果とする。
出力信号の通信データ300およびXOR演算結果の通信データ301について図19を用いて説明する。図19は、本発明の実施の形態3における通信データの一例を示すデータ構造図である。図19(a)は、処理部23の出力信号生成部231にて生成される出力信号の通信データ300のデータ構造の一例であり、図19(b)は、XOR演算部232から出力されるXOR演算結果の通信データ301のデータ構造の一例である。
図19(a)に示すように、出力信号の通信データ300は、出力信号生成部231が生成する第1のCRCデータが第1の出力信号に付加された構造である。ここで、出力信号生成部231は、第1の出力信号に決められた演算、例えば非特許文献(Philip Koopman, et.al. ”Cyclic Redundancy Code (CRC) Polynomial Selection For Embedded Networks,” Proc. of DSN-2004, Jun. 2004.)に記載のCRC−8の式を用いた演算を実行し、第1のCRCデータを生成する。なお、第1のCRCデータは、データ容量が第1の出力信号より小さいデータである。
図19(b)に示すように、XOR演算結果の通信データ301は、XOR演算部232が出力する第4のXOR演算結果が第1の出力信号に付加された構造である。XOR演算部232は、演算装置10−1がスレーブとして動作する時にマスターとして動作する演算装置10−2または10−3にXOR演算結果の通信データ301を出力する。なお、第1のCRCデータのデータ容量が小さいため、タイムコード変換したビットパターンと第1のCRCデータとのXOR演算結果もデータ容量も小さく抑えることができる。
図18に戻って、記録部24は、ノード情報などの各種データを記録するメモリである。図20は、本発明の実施の形態3における記録部のデータ構成の一例を示すデータ構成図である。図20に示すように、記録部24は、通信部21−1を介してノード11から取得したノード情報、処理部23が生成した第1の出力信号および第1のCRCデータ、通信部21−2、21−3を介して演算装置30−2、演算装置30−3から取得した第2の出力信号と第3の出力信号、および第5のXOR演算結果と第6のXOR演算結果を記録している。
図18に戻って、XOR復元部25は、記録部24から取得した第5のXOR演算結果および第6のXOR演算結果それぞれとタイムコードを変換したビットパターンとのXOR演算を実行し、第2のCRCデータおよび第3のCRCデータを復元し、多数決回路26に出力する。
多数決回路26は、第1のCRCデータ、およびXOR復元部25にて復元された第2のCRCデータと第3のCRCデータが入力され、多数決を取り多数決信号を出力する。ここで、多数決回路26の構成は、実施の形態1と同様にXOR演算に用いるタイムコードのビットパターンが1種類である場合は図4の構成を、実施の形態2と同様にXOR演算に用いるタイムコードのビットパターンが2種類である場合は図17の構成となる。なお、多数決回路26における多数決の取り方については実施の形態1または2において出力信号の代わりにCRCデータとのXOR演算を実行するだけであるため、説明は省略する。
未更新判定部27−1は、実施の形態1と同様にタイムコード提供部22より取得されたタイムコード基づいて、第1の出力信号が未更新であるか否かを判定する。判定方法は、実施の形態1と同様であるため、説明は省略する。
未更新判定部27−2、27-3は、それぞれ第5のXOR演算結果、第6のXOR演算結果に基づいて、第2の出力信号、第3の出力信号が未更新であるか否かを判定する。判定方法は、実施の形態1と同様であるため、説明は省略する。
故障診断部28は、実施の形態1と同様に多数決回路26からの多数決信号と、未更新判定部27−1からの第2の未更新信号と、27−2および27−3それぞれからの第1の未更新信号とから故障要因を診断し、診断した故障要因に応じた復旧処理に従い制御命令をスイッチ部20−4、通信部21−1〜21−3、処理部23に送信する。また、選択部29にて出力する出力信号である選択出力信号についても診断し、診断した選択出力信号に従い制御命令を選択部29に送信する。
なお、実施の形態1および2と異なり、実施の形態3において出力する出力信号を選択できるのは、演算装置10−2、10−3から取得される第5のXOR演算結果、第6のXOR演算結果の通信データに第5のXOR演算結果、第6のXOR演算結果だけでなく第2の出力信号、第3の出力信号が含まれているためである。
故障診断部28における故障診断について図21〜25を用いて説明する。図21〜25は、本発明の実施の形態3における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。ここで、実施の形態3における故障要因診断結果における各識別子については、実施の形態1と同様に図13に示す識別子である。
図21〜25は、故障診断値、故障要因診断結果、復旧処理、および選択出力信号から構成される。ここで、選択出力信号欄における1、2、および3はそれぞれ第1の出力信号、第2の出力信号、および第3の出力信号を示し、0は出力信号を出力しないことを示している。ここで、選択出力信号は、演算装置30−1に故障がない場合は第1の出力信号を、マスターとして動作する演算装置が演算装置30−1から変更される場合は変更後マスターとして動作する演算装置の出力信号を、フォールトトレラントシステム300が停止する場合は出力信号を出力しないとの選択方法で選択されている。なお、選択出力信号として出力信号23−2または23−3のいずれかを選択可能である場合に2または3と記載しているが、これは状況の説明のためであり、実際に動作させる場合はいずれか一方を選択した構造とする。
図18に戻って、選択部29は、故障診断部28にて診断された選択出力信号に従い出力する出力信号を選択し、記録部24より取得し、スイッチ部20−4、出力信号伝送路13を介して外部へ出力する。
以上のように、実施の形態3のフォールトトレラントシステム300によれば、CRCデータとタイムコードを変換したビットパターンとのXOR演算の結果であるXOR演算結果を出力信号に付加したXOR演算結果の通信データを演算装置間にて送受信することで、自装置以外の演算装置の出力信号を取得することができる。そのため、マスターとして動作する演算装置が故障している場合においてもスレーブとして動作する演算装置にて正しい出力信号を得られている場合は、外部へ正しい出力信号を出力でき、装置が誤作動する可能性を低減しつつ装置の動作も継続できるという効果を得ることができる。
また、CRCデータのデータ容量が小さいことから、XOR演算結果のデータ容量も小さく抑えることができ、演算装置間にて送受信する通信データのデータ容量を小さくできるという効果も得ることができる。
なお、多数決回路26へ第1のCRCデータ〜第3のCRCデータを入力する場合について説明したが、これに限定されず、第1の出力信号〜第3の出力信号を入力してもよい。第1のCRCデータ〜第3のCRCデータを入力する場合は、通信するデータの容量を小さくできるという効果があるが、代わりに第1の出力信号〜第3の出力信号を入力する場合はXOR復元部25での復元処理が不要とすることできる。
実施の形態4.
実施の形態4では、演算装置40と故障診断装置41を備えるフォールトトレラントシステム400について説明する。なお、実施の形態1〜3とは異なりマスターとして動作する演算装置はなく、全ての演算装置40がスレーブとして動作する。
図26は、本発明の実施の形態4におけるフォールトトレラントシステムのシステム構成の一例を示す構成図である。フォールトトレラントシステム400は、N台のノード11−1〜11−N、演算装置通信伝送路12、出力信号伝送路13、および入出力ネットワーク14、演算結果出力伝送路15、3台の演算装置40−1〜40−3、および故障診断装置41を備える。なお、ノード11−1〜11−N、演算装置通信伝送路12、出力信号伝送路13、および入力出力ネットワーク14は、実施の形態1〜3と同様であるため、説明は省略する。また、説明のため演算装置を3台としているがこれに限定されず、任意に設定できる。
演算装置40−1〜40−3は、ノード11から取得したノード情報を基に演算結果を生成し、演算結果出力伝送路15を介して故障要因診断装置41に出力する。
故障診断装置41は、演算装置40−1〜40−3から取得した演算結果に基づき故障要因を診断する。
演算結果出力伝送路15は、演算装置40−1〜40−3と故障要因診断装置41とのデータ通信を行う伝送路である。演算結果出力伝送路15は、情報を相互に送受信できる伝送路であり、同軸ケーブルや光ケーブルなどの有線伝送路でもよいし、Wi−Fi(登録商標)やBluetooth(登録商標)などの無線伝送路でもよい。
次に、演算装置40−1の構成について図27を用いて説明する。ここでは、演算装置40−1について説明するが、演算装置40−2および40−3についても同様の構成であるため、説明は省略する。図27は、本発明の実施の形態4における演算装置の装置構成の一例を示す構成図である。演算装置40−1は、通信部51、タイムコード提供部52、処理部53、および記録部54を備える。なお、図面において実線矢印は情報の流れ、点線矢印は制御命令の流れを示している。
通信部51は、後述する処理部53から送信される通信制御命令に従い、外部との通信接続を制御しノード11との情報の送受信、演算結果出力伝送路15を介して故障要因診断装置41との情報の送受信を制御する。タイムコード提供部52は、現在のタイムコードを提供する。
処理部53は、タイムコード提供部52から取得したタイムコードに応じて通信部51へ通信制御命令を送信する。また、処理部53は、出力信号生成部531とXOR演算部532を備える。出力信号生成部531は、ノード11から取得したノード情報を基に出力信号を生成する。なお、以降においては、演算装置40−1の出力信号生成部531が生成する出力信号を第4の出力信号とする。また、演算装置40−2が生成する出力信号を第5の出力信号と、演算装置40−3が生成する出力信号を第6の出力信号とする。
XOR演算部532は、第4の出力信号とタイムコード提供部52から取得したタイムコードを変換したビットパターンとのXOR演算を実行し、XOR演算結果を出力する。XOR演算部532が本発明の演算部に該当する。なお、以降においては、演算装置40−1のXOR演算部532が出力するXOR演算結果を第7のXOR演算結果とする。また、演算装置40−2が出力するXOR演算結果を第8のXOR演算結果と、演算装置40−3が出力するXOR演算結果を第9のXOR演算結果とする。
なお、XOR演算部532が実行するXOR演算は、実施の形態1〜3におけるXOR演算部232が実行するXOR演算と同じであるため、説明は省略する。
記録部54は、ノード11から取得したノード情報、処理部53の生成した第4の出力信号、および第7のXOR演算結果を記録するメモリである。
次に、故障診断装置の構成について図28を用いて説明する。図28は、本発明の実施の形態4における故障診断装置の装置構成の一例を示す構成図である。故障診断装置41は、スイッチ部60−1〜60−4、通信部61−1〜61−3、タイムコード提供部62、処理部63、記録部64、多数決回路65、未更新判定部66−1〜66−3、故障診断部67、および選択部68を備える。なお、図面において実線矢印は情報の流れ、点線矢印は制御命令の流れを示している。
スイッチ部60−1〜60−4は、外部との通信接続を維持するまたは遮断する実行部である。スイッチ部60−1〜60−3は、演算装置40−1〜40−3との接続を、スイッチ部60−4は、出力信号伝送路13との接続を構成している。
通信部61−1〜61−3は、後述する処理部63から送信される制御命令に従い、スイッチ部60−1〜60−3を制御し演算装置40−1〜40−3との情報の送受信を制御する。提供するタイムコード提供部62は、現在のタイムコードを提供する。
処理部63は、タイムコード提供部62から取得したタイムコードに応じて通信部61−1〜61−3へ通信制御命令を送信する。また、処理部63は、XOR復元部633を備える。XOR復元部633は、演算装置40−1〜40−3から取得した第7のXOR演算結果〜第9のXOR演算結果それぞれとタイムコード提供部62から取得したタイムコードを変換したビットパターンとのXOR演算を実行し、演算装置40−1〜40−3が生成した第4の出力信号〜第6の出力信号を復元し、記録部64に送信する。
記録部64は、第7のXOR演算結果などの各種データを記録するメモリである。図29は、本発明の実施の形態4における記録部のデータ構成の一例を示すデータ構成図である。図29に示すように、記録部64は、演算装置43−1〜43−3より取得した第7のXOR演算結果〜第9のXOR演算結果、およびXOR復元部633が復元した第4の出力信号〜第6の出力信号を記録している。
多数決回路65は、第4の出力信号〜第6の出力信号が入力され、多数決をとり多数決信号を出力する論理回路である。未更新判定部66−2、66−3は、それぞれ第8のXOR演算結果、第9のXOR演算結果に基づいて、第5の出力信号、第6の出力信号が未更新であるか否かを判定し、未更新であると判定した場合に未更新信号を出力する。なお、多数決回路65、未更新判定部66−2、および66−3は、実施の形態1〜3における多数決回路26、未更新判定部27−2、および27−3と同様の構成のため、説明は省略する。
未更新判定部66−1は、実施の形態1〜3における未更新判定部27−1とは異なり、タイムコード基づいて第4の出力信号が未更新であるか否かを判定するのではなく、未更新判定部66−2および66−3と同様に第7のXOR演算結果の値が前回のXOR演算結果の値と同じ場合は、出力信号として1を、異なる場合は、出力信号として0を故障診断部67に出力する。XOR演算結果が同じ場合の出力信号1が、未更新であると判定したことを示し、本発明の未更新信号に該当する。つまり、実施の形態4における未更新判定部66−1〜66−3は、同じ構成を備えており、未更新であると判定した場合は、実施の形態1〜3における第1の未更新信号を出力する。
図28に戻って、故障診断部67は、多数決回路65からの多数決信号と未更新判定部66−1〜66−3からの未更新信号とから故障を診断し、診断した故障要因に従い復旧処理に関する制御命令をスイッチ部60−4、通信部61−1〜61−3、および処理部63に送信する。
故障診断部67は、実施の形態1〜3における故障診断部28と同様に故障要因分類テーブルを参照し、故障を診断する。ここで、故障診断装置41が、演算装置40−1からも第7のXOR演算結果を取得していること、および未更新判定部66−1の未更新であるか否かの判定方法が実施の形態1〜3の未更新判定部27−1と異なることにより、故障要因診断結果における各識別子については、形態1〜3における図13に示した識別子とは異なることになる。
実施の形態4における故障要因診断結果における各識別子について図30を用いて説明する。図30は、本発明の実施の形態4における故障要因を識別するための識別子と、その識別子に対応する故障要因の説明が記載された図である。ここで、各識別子は、演算装置40−1〜演算装置40−3それぞれを構成する構成部品の故障要因を示している。
識別子cpu1〜cpu3は、それぞれ演算装置40−1〜40−3の出力信号不正を示しており、出力される出力信号値が誤った値である場合を示している。
識別子time0は、グローバルクロックの停止等により演算装置40−1〜40−3の全てのタイムコード提供部22の故障を示している。また、識別子time1〜time3は、それぞれ演算装置40−1〜40−3のタイムコード提供部52の故障を示している。
ここで、識別子time0の場合は演算装置40−1〜40−3の全てにおいて故障が発生しているため、復旧処理は全ての演算装置40−1〜40−3に対して実行する必要がある。
また、識別子time1〜time3の故障は演算装置40−1〜40−3のタイムコード提供部52におけるタイムコード提供の遅延または停止であり、演算装置40−1〜40−3が生成する第4の出力信号〜第6の出力信号、および出力する第7のXOR演算結果〜第9のXOR演算結果の値が誤った値となる。しかし、未更新判定部27−2、27−3が、未更新信号を出力する場合は含まないとする。つまり、XOR演算結果が取得できない場合、取得されたXOR演算結果が未更新である場合は含まないとする。なお、未更新判定部66−1が未更新信号を出力する場合は、後述する識別子lost1とdiff1とに、未更新判定部66−2が未更新信号を出力する場合は、後述する識別子lost2とdiff2とに、未更新判定部66−3が未更新信号を出力する場合は、後述する識別子lost3とdiff3とに含まれている。
ここで、識別子time1の故障が、実施の形態1〜3の場合と異なっている。これは未更新検出回路66−1が実施の形態1〜3における未更新判定部27−1と異なりタイムコードに基づいて未更新であるか否かを判定していないためである。
識別子lost1〜lost3は、通信部61−1〜61−3を介しての第7のXOR演算結果〜第9のXOR演算結果の取得失敗を示している。ここで、識別子lost1の故障は、実施の形態4において追加された識別子である。識別子lost1が追加された理由は、実施の形態4におけるフォールトトレラントシステム400においては、故障の診断を故障診断装置41が行うために第4の演算結果を演算装置40−1から取得する必要があるためである。
識別子voter1〜voter3は、多項式回路65における第4の出力信号〜第6の出力信号の各組み合わせに対するXOR演算の演算結果の不正を示している。
識別子diff1〜diff3は未更新回路66−1〜66−3の故障を示している。
次に、故障診断部67が故障を診断する時に参照する故障要因分類テーブルについて図31〜35を用いて説明する。図31〜35は、本発明の実施の形態4における故障要因分類テーブルのテーブル構造の一例を示すテーブル構造図である。
実施の形態1〜3における故障要因診断テーブルである図8〜12と異なっている診断としては、例えば、故障診断値“010000”の場合がある。図8〜12においては、1因子故障としては(1)voter2の1通り、2因子同時故障としては(1)cpu1とvoter1の組み合わせ、(2)cpu3とvoter3の組み合わせ、そして(3)time3とvoter3の組み合わせの3通りの合計4通りである。しかし、図31〜35では2因子同時故障として、time1とvoter1の組み合わせが増え、合計5通りの故障の可能性があるとの診断となる。
また、例えば、故障診断値“110100”の場合においても異なる診断となる。図8〜12においては、1因子故障なし、2因子同時故障としては(1)cpu1とtime0の組み合わせ、(2)cpu1とtime1の組み合わせ、そして(3)cpu1とdiff1の組み合わせの3通りの合計3通りである。しかし、図31〜35では1因子故障として実施の形態1〜3においては無かった識別子lost1の場合が増え、合計4通りの故障の可能性があるとの診断となる。
このように故障要因診断テーブルの構造は異なるが、図31〜35に示すようにフォールトトレラントシステム400においても、未更新判定部66にて出力信号が未更新であるか否かを判定することができ、故障要因の診断精度の向上と、その故障要因に適した復旧処理の実現をできるという効果を得ることができる。
図28に戻り、選択部68は、故障診断部67にて診断された選択出力信号に従い出力する出力信号を選択し、記録部64から取得し、スイッチ部60−4および出力信号伝送路13を介して外部へ出力する。
以上のように、実施の形態4のフォールトトレラントシステム400によれば、故障診断を実行する故障要因診断装置を演算装置と別に備えることで、故障が起こりやすい演算装置の構造を簡単な構造とすることができ、演算装置の製造費用を抑えることができるという効果を得ることができる。