(57)【要約】【課題】ソフトウェアの不具合が発生したときに原因を探ることが容易なフォールトトレラントコンピュータを提供する。【解決手段】フォールトトレラントコンピュータは、入力信号に応答してコンピュータプログラムを実行する第１ユニットと、入力信号に応答してコンピュータプログラムを第１ユニットと同一の実行環境で実行する第２ユニットと、入力信号が第２ユニットに入力するタイミングに対する入力信号が第１ユニットに入力するタイミングの遅延時間を制御する第１遅延バッファと、同期指定信号を入力したとき遅延時間をゼロに設定し、遅延指定信号を入力したとき遅延時間をゼロよりも大きく設定する遅延時間設定部とを備える。【選択図】図１
2008146447.tif 000002
【特許請求の範囲】
【請求項１】
入力信号に応答してコンピュータプログラムを実行する第１ユニットと、
前記入力信号に応答して前記コンピュータプログラムを前記第１ユニットと同一の実行環境で実行する第２ユニットと、
前記入力信号が前記第２ユニットに入力するタイミングに対する前記入力信号が前記第１ユニットに入力するタイミングの遅延時間を制御する第１遅延バッファと、
同期指定信号を入力したとき前記遅延時間をゼロに設定し、遅延指定信号を入力したとき前記遅延時間をゼロよりも大きく設定する遅延時間設定部
とを具備する
フォールトトレラントコンピュータ。
【請求項２】
請求項１に記載されたフォールトトレラントコンピュータであって、
更に、前記第２ユニットに障害が発生したとき、前記第１ユニットの情報を取得する遅延情報取得部
を具備する
フォールトトレラントコンピュータ。
【請求項３】
請求項１乃至２のいずれかに記載されたフォールトトレラントコンピュータであって、
更に、前記第２ユニットの出力を中継する第２遅延バッファと、
前記第１ユニットの出力と前記第２遅延バッファによって中継された前記第２ユニットの出力とを比較する比較部
とを具備し、
前記遅延時間設定部は、前記第２遅延バッファによって与えられる第２遅延時間を前記第１遅延時間と同じに設定する
フォールトトレラントコンピュータ。
【請求項４】
請求項１乃至３のいずれかに記載されたフォールトトレラントコンピュータであって、
更に、前記第２ユニットと同期して動作する冗長系である第３ユニット
を具備する
フォールトトレラントコンピュータ。
【請求項５】
請求項４に記載されたフォールトトレラントコンピュータであって、
更に、前記第２ユニットと前記第３ユニットとの両方により読み出し及び書き込みが可能なメモリ領域を備える共有メモリと、
前記第１ユニットにより読み出し及び書き込みが可能であり前記第２ユニット及び前記第３ユニットからのアクセスが不可能な専用メモリ
とを具備する
フォールトトレラントコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのフォールトトレラント性を向上する技術に関する。
【背景技術】
【０００２】
信頼性の高いコンピュータを提供するためにフォールトトレラントコンピュータが開発されている。フォールトトレラント性を高める手段として、同じ機能を有する複数のユニットに同じ動作をさせる多重化技術が知られている。多重化技術によれば、複数のユニットのうちのいずれかにトラブルが発生した場合に、他のユニットが正常に動作することにより、システムが中断なしで運用される。
【０００３】
特許文献１には、プログラムが稼動する現用系と、そのプログラムと同じプログラムが現用系と同じ実行環境で稼動する冗長系と、現用系に障害が発生したときの冗長系の状態を保存する状態保存手段とを備えることを特徴とする計算機システムが開示されている。
【特許文献１】特開２００５−１６５５９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
多重化されたユニットを備えたフォールトトレラントコンピュータは、ハードウェアの故障に対する耐性が高い。しかし、ソフトウェアの不具合による誤動作によってパニックが発生した場合、運用が停止する可能性がある。
【０００５】
ソフトウェアの不具合によって運用が停止した場合、ダンプを採取することによって原因の調査が行われる。しかし、ソフトウェアの誤動作が発生した時点からしばらく経ってから処理の矛盾によりパニックが発生した場合、原因を調査するために有益な情報が残らない可能性がある。
【０００６】
本発明の目的は、ソフトウェアの不具合に対するフォールトトレラント性の高いコンピュータを提供することである。
本発明の他の目的は、ソフトウェアの不具合が発生したときに原因を探ることが容易なコンピュータを提供することである。
【課題を解決するための手段】
【０００７】
以下に、［発明を実施するための最良の形態］で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００８】
本発明によるフォールトトレラントコンピュータは、入力信号に応答してコンピュータプログラムを実行する第１ユニット（１）と、入力信号に応答してコンピュータプログラムを第１ユニット（１）と同一の実行環境で実行する第２ユニット（２）と、入力信号が第２ユニット（２）に入力するタイミングに対する入力信号が第１ユニット（１）に入力するタイミングの遅延時間を制御する第１遅延バッファ（１０）と、同期指定信号を入力したとき遅延時間をゼロに設定し、遅延指定信号を入力したとき遅延時間をゼロよりも大きく設定する遅延時間設定部（１２）とを備える。
【０００９】
本発明によるフォールトトレラントコンピュータは、第２ユニット（２）に障害が発生したとき、第１ユニット（１）の情報を取得する遅延情報取得部（６）を備える。
【００１０】
本発明によるフォールトトレラントコンピュータは、第２ユニット（２）の出力を中継する第２遅延バッファ（９）と、第１ユニット（１）の出力と第２遅延バッファ（９）によって中継された第２ユニット（２）の出力とを比較する比較部（８）とを備える。遅延時間設定部（１２）は、第２遅延バッファ（９）によって与えられる第２遅延時間を第１遅延時間と同じに設定する。
【００１１】
本発明によるフォールトトレラントコンピュータは、第２ユニット（２）と同期して動作する冗長系である第３ユニット（３）を備える。
【００１２】
本発明によるフォールトトレラントコンピュータは、第２ユニット（２）と第３ユニット（３）との両方により読み出し及び書き込みが可能なメモリ領域を備える共有メモリ（５）と、第１ユニット（１）により読み出し及び書き込みが可能であり第２ユニット（２）及び第３ユニット（３）からのアクセスが不可能な専用メモリ（４）とを備える。
【発明の効果】
【００１３】
本発明によれば、ソフトウェアの不具合に対するフォールトトレラント性の高いコンピュータが提供される。
更に本発明によれば、ソフトウェアの不具合が発生したときに原因を探ることが容易なコンピュータが提供される。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら本発明を実施するための最良の形態について説明する。図１は、フォールトトレラントコンピュータの構成を示す。フォールトトレラントコンピュータは、第１ユニット１、第２ユニット２及び第３ユニット３を備える。第１ユニット１、第２ユニット２及び第３ユニット３は、同一の実行環境でプログラムを実行することが可能であり、互いに冗長系として使用することが可能なユニットである。正常に動作している時には、第１ユニット、第２ユニット２及び第３ユニットが同一のクロックパルスによって作動し同一の入力信号が入力した場合は、それら３つのユニットは同一のタイミングで同一の出力信号を出力する。第１ユニット１、第２ユニット２及び第３ユニット３としては、互いに同一の仕様で製造されたコンピュータが好適に用いられる。
【００１５】
フォールトトレラントコンピュータは、システムバスから入力信号ｉｎを入力する。入力信号ｉｎは、第２ユニット入力信号２ｉｎ、第３ユニット入力信号３ｉｎ及び遅延バッファ入力信号１０ｉｎとして分配される。第２ユニット２は第２ユニット入力信号２ｉｎを入力する。第３ユニット３は第３ユニット入力信号３ｉｎを入力する。
【００１６】
第２ユニット２は、第２ユニット入力信号２ｉｎによって伝送されるプログラムを実行し、実行の結果である第２ユニット出力信号２ｏｕｔを出力する。第３ユニット３は、第３ユニット入力信号３ｉｎによって伝送されるプログラムを第２ユニット２と同じタイミングで開始して実行し、実行の結果である第３ユニット出力信号３ｏｕｔを出力する。第２ユニット２と第３ユニット３とは、プログラムの処理中に記憶装置に対してデータの読み込み書き込みの必要がある場合は、同一の共有メモリ５の同一の領域に対して読み込み書き込みを行う。通常の動作時には第２ユニット２と第３ユニット３の動作は同一であるため、データを共有メモリ５に二重に書き込む必要はない。
【００１７】
比較回路７は第２ユニット出力信号２ｏｕｔと第３ユニット出力信号３ｏｕｔとを入力して比較する。比較回路７は、第２ユニット出力信号２ｏｕｔと第３ユニット出力信号３ｏｕｔとが同一の出力信号であるときは、その出力信号を出力信号ｏｕｔとしてシステムバスと遅延バッファ９とに出力する。比較回路７は、第２ユニット出力信号２ｏｕｔと第３ユニット出力信号３ｏｕｔとが異なるときは、異常を知らせる異常信号を制御回路６に送信する。
【００１８】
遅延バッファ１０は、遅延バッファ入力信号１０ｉｎを中継して第１ユニット１に送信する。その際、遅延バッファ１０から出力される第１ユニット入力信号１ｉｎは、遅延バッファ入力信号１０ｉｎに対して所定の遅延時間、遅延する。遅延時間設定部１２は、その遅延時間を遅延時間設定部入力信号１２ｉｎに応答して設定する。
【００１９】
第１ユニット１は、第１ユニット入力信号１ｉｎを入力する。第１ユニット１は、第１ユニット入力信号１ｉｎによって伝送されるプログラムを実行し、実行の結果である第１ユニット出力信号１ｏｕｔを出力する。第１ユニット１は、プログラムの処理中に記憶装置に対してデータの読み込み書き込みの必要がある場合は、専用メモリ４に対して読み込み書き込みを行う。専用メモリ４は共有メモリ５とは独立しており、第２ユニット２及び第３ユニット３からアクセスすることはできない。
【００２０】
比較回路８は、比較回路７の出力信号ｏｕｔを中継して比較回路８に入力する。その際、遅延バッファ９から出力される遅延バッファ出力信号９ｏｕｔは、出力信号ｏｕｔに対して所定の遅延時間、遅延する。遅延時間設定部１２は、その遅延時間を遅延時間設定部入力信号１２ｉｎに応答して設定する。遅延バッファ９に設定される遅延時間と遅延バッファ１０に設定される遅延時間とは同一である。
【００２１】
比較回路８は、遅延バッファ出力信号９ｏｕｔと第１ユニット出力信号１ｏｕｔとを入力して比較する。比較回路８は、遅延バッファ出力信号９ｏｕｔと第１ユニット出力信号１ｏｕｔとが同一であるときは、処理が正常に行われていると認識する。比較回路７は、第２ユニット出力信号２ｏｕｔと第３ユニット出力信号３ｏｕｔとが異なるときは、異常を知らせる異常信号を制御回路６に送信する。
【００２２】
第２ユニット２は、ソフトウェアの不具合による誤実行でパニック等が発生すると、異常を知らせる異常信号を制御回路６に送信する。第３ユニット３は、ソフトウェアの不具合による誤実行でパニック等が発生すると、異常を知らせる異常信号を制御回路６に送信する。制御回路６は、第２ユニット２、第３ユニット３、比較回路７又は比較回路８から異常信号を受信すると、第１ユニット１によるプログラムの実行を停止し、第１ユニット１に蓄積されている一時データと専用メモリ４に記録されているデータとを取得し保持する。
【００２３】
遅延バッファ９と遅延バッファ１０とはトレーサ１１に接続されている。トレーサ１１は、遅延バッファ９が中継する出力信号ｏｕｔの履歴と遅延バッファ１０が中継する遅延バッファ入力信号１０ｉｎの履歴とを所定の期間、保存する。制御回路６は、異常信号を受信すると、その時点でトレーサ１１が記録している情報を保持するようにトレーサ１１を制御する。
【００２４】
以上の構成を備えたフォールトトレラントコンピュータは次のように動作する。フォールトトレラントコンピュータは、システムバスからプログラムを伝送する入力信号ｉｎを入力する。第２ユニット２と第３ユニット３とはそのプログラムを同じタイミングで実行する。第２ユニット２と第３ユニット３とは同時に同じ動作をしているため、それぞれがシステムバスに入出力するデータは通常は同じである。比較回路７は、第２ユニット出力信号２ｏｕｔと第３ユニット出力信号３ｏｕｔとを比較することにより、両ユニットが正しく動作していることを確認する。
【００２５】
第１ユニット１は、そのプログラムを第２ユニット２及び第３ユニット３に対して所定の遅延時間遅れて実行する。従って、第１ユニット１がシステムバスにデータを入出力するタイミングは第２ユニット２及び第３ユニット３に対して遅い。そのため、第１ユニット１がシステムバスから入力するデータは、遅延バッファ１０で遅延され、第１ユニット１の動作タイミングに合うように調整される。
【００２６】
第１ユニット出力信号１ｏｕｔは、第２ユニット２及び第３ユニット３の出力データを遅延バッファ９で第１ユニット１の遅延時間だけ保留した遅延バッファ出力信号９ｏｕｔと比較される。この比較により、第１ユニット１が正常に動作していることが確認される。
【００２７】
図２は、図１に示されたものと同じフォールトトレラントコンピュータにおいて、ユニット２又は３においてソフトウェアの不具合による誤実行でパニック等が発生した場合を示す。パニック等が発生すると、異常信号が制御回路６に通知される（以下に説明される動作は、比較回路７、８が異常信号を生成した場合も同じである）。異常信号を受信した制御回路６は、第１ユニット１に対して動作停止の指示を出し、第１ユニット１が停止した時点での第１ユニット１と専用メモリ４の情報を採取する。第１ユニット１は、第２ユニット２及び第３ユニット３よりも遅れて動作しているため、パニック等が発生した時点よりも過去の処理を実行している。そのため第１ユニット１は、第２ユニット２及び第３ユニット３では既に変更されてしまったデータや状態を残していることが期待される。専用メモリ４は第１ユニット１のみからアクセスできるため、第２ユニット２又は第３ユニット３の動作の異常によってデータが変更されることがない。
【００２８】
パニック等の原因調査において、第２ユニット２及び第３ユニット３から採取された情報では、誤実行から時間が経ち原因調査に必要なデータや状態が変更されてしまっているために解析が困難な場合がある。こうした場合でも、第１ユニット１から採取されたデータや状態は誤実行より前の時点である可能性がある。その場合、採取されたデータによって誤実行した状況をトレースすることができる。
【００２９】
更に、トレーサ１１は第１ユニット１とシステムバス間のデータの入出力データを保存している。この入出力データにより、制御回路６が第１ユニット１を停止させた時点から、第２ユニット２及び第３ユニット３でパニック等が発生した時点までの動作を遡って再現することができる。この再現により、パニック等の原因を探ることができる。
【００３０】
以上の様に、本実施の形態におけるフォールトトレラントコンピュータによれば、通常時は第２ユニット２と第３ユニット３が冗長であるためハードウェア的な故障に対してフォールトトレランス性能の高いコンピュータが提供される。且つソフトウェアの誤実行によるパニック等が発生した場合、ソフトウェアの誤実行からしばらく経って処理の矛盾が検出されたためにパニック等の原因を探るために有益な情報が変更されていた場合でも、遅れて同じ動作をするユニットによって変更される前の情報を採取することができるため、原因究明が容易である。
【００３１】
こうしたフォールトトレラントコンピュータは、次のように遅延時間の切り替えを行って使用することができる。通常の動作時、遅延時間設定部１２は、遅延バッファ９、１０の遅延時間をゼロに設定する。すると、第１ユニット１、第２ユニット２及び第３ユニット３は同時に動作する。このときフォールトトレラントコンピュータは複数の冗長系を備え、ハードウェア的な故障に対して強靭なコンピュータとして動作する。このコンピュータにソフトウェア的な誤実行によってパニック等が発生する可能性が認められる場合、所定の遅延時間を指定する遅延時間設定部入力信号１２ｉｎが送信され、遅延時間設定部１２は遅延バッファ９、１０に０でない遅延時間を設定する。この状態でプログラムを実行させてパニック等が発生すると、第１ユニット１及び専用メモリ４からパニック発生前の情報が取得される。この情報から、パニック等の原因が探られる。
【００３２】
図１に示されたフォールトトレラントコンピュータから第３ユニット３が省略されたコンピュータにおいても、上記の遅延時間の切り替えは有効である。こうしたコンピュータは、遅延時間が０に設定された場合は第１ユニット１と第２ユニット２とが冗長なコンピュータとして動作する。こうしたコンピュータはハードウェア的な故障に対してロバストである。遅延時間が０より大きい値に設定された場合は、ソフトウェア的な不具合の原因究明に効果的である。
【図面の簡単な説明】
【００３３】
【図１】図１は、フォールトトレラントコンピュータの構成を示す。
【図２】図２は、フォールトトレラントコンピュータにパニック等が発生した場合を示す。
【符号の説明】
【００３４】
１ｉｎ…第１ユニット入力信号
１ｏｕｔ…第１ユニット出力信号
２ｉｎ…第２ユニット入力信号
２ｏｕｔ…第２ユニット出力信号
３ｉｎ…第３ユニット入力信号
３ｏｕｔ…第３ユニット出力信号
９ｏｕｔ…遅延バッファ出力信号
１０ｉｎ…遅延バッファ入力信号
１２…遅延時間設定部
１２ｉｎ…遅延時間設定部入力信号
ｉｎ…入力信号
ｏｕｔ…出力信号
【図１】
2008146447.tif 000003
【図２】
2008146447.tif 000004