(57)【要約】【課題】フォールト発生時に機能を縮退する冗長システムにおいて所要リソースを削減した冗長システムを提供する。【解決手段】冗長システムは、計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールと、通常のデータから情報量を縮減したデータを処理または通信するシステム機能の第２レベルモジュールとを同時並行的に動作させ、第１レベルモジュールの出力データから情報量を縮減したデータと第２レベルモジュールの出力データを照合することでシステム機能の検証を行い、照合に失敗したときには、システム機能を縮退させる。同一仕様のモジュールを多重化するのではなく、情報量を縮減したデータを扱う冗長モジュールを多重化することで、所要リソースの増大は抑制される。【選択図】図２
2004178048.tif 000002
【特許請求の範囲】
【請求項１】
計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムであって、
計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールと、
前記通常のデータから情報量を縮減したデータを処理または通信するシステム機能の第２レベルモジュールと、
第１レベルモジュールの出力データから情報量を縮減したデータと第２レベルモジュールの出力データを照合してシステム機能を検証する機能検証手段と、
前記機能検証手段によりフォールトが検出された場合にシステム機能を縮退する機能縮退手段と
を備えることを特徴とする冗長システム。
【請求項２】
請求項１に記載の冗長システムにおいて、
前記機能縮退手段は、システム機能の機能検証により、第１レベルモジュールにフォールトが検出されなければ、第１レベルモジュールの出力データをそのまま選択し、第１レベルモジュールにフォールトが検出されれば、第２レベルモジュールから復元されたデータを選択するようにしてシステム機能を縮退する
ことを特徴とする冗長システム。
【請求項３】
計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する冗長システム構成システムであって、
計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールから、前記通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成する縮退モデル作成手段と、
前記第１レベルモジュールと第２レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成する機能縮退モジュール作成手段と
を備えることを特徴とする冗長システム構成システム。
【請求項４】
計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する冗長システム構成方法であって、
計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールから、前記通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成し、
前記第１レベルモジュールと第２レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成する
ことを特徴とする冗長システム構成方法。
【請求項５】
計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムであって、
計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールと、
前記通常のデータから情報量を縮減したデータを処理または通信するシステム機能の第２レベルモジュールと、
前記第２レベルモジュールのデータから情報量を縮減したデータを処理または通信するシステム機能の第３レベルモジュールと、
第１レベルモジュールの出力データから情報量を縮減したデータと第２レベルモジュールの出力データを照合しシステム機能を検証する第１検証手段と、
第２レベルモジュールの出力データから情報量を縮減したデータと第３レベルモジュールの出力データを照合しシステム機能を検証する第２検証手段と、
前記１検証手段または第２検証手段によりフォールトが検出された場合に、システム機能を縮退する機能縮退手段と
を備えることを特徴とする冗長システム。
【請求項６】
計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する冗長システム構成システムであって、
計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールから、前記通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成し、第２レベルモジュールのデータから情報量を縮減したデータを処理または通信する第３レベルモジュールを作成する多階層縮退モデル作成手段と、
前記第１レベルモジュール、第２レベルモジュール及び第３レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成する機能縮退モジュール作成手段と
を備えることを特徴とする冗長システム構成システム。
【請求項７】
計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する冗長システム構成方法であって、
計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールから、前記通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成し、第２レベルモジュールのデータから情報量を縮減したデータを処理または通信する第３レベルモジュールを作成し、
前記第１レベルモジュール、第２レベルモジュール及び第３レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成する
ことを特徴とする冗長システム構成方法。
【請求項８】
請求項７に記載の冗長システム構成方法において、
第１レベルモジュールと第２レベルモジュールに対して、第３レベルモジュールから第Ｎレベルモジュール（Ｎ＞３）までの少なくとも１レベルを追加し、第１レベルモジュールから第Ｎレベルモジュールまでを同時並行動作させて検証と縮退を実行させる冗長システム構成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機システムの構成要素にフォールトが発生したときに部分的な機能で運用を継続する冗長システムに関するものであり、具体的には、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システム、冗長システムを構成する冗長システム構成システムおよび冗長システム構成方法に関するものである。
【０００２】
【従来の技術】
従来から、計算機システムの構成要素にフォールトが発生したときに部分的な機能で運用を継続するための冗長システムが提案されている。この種の計算機システムについて概略を説明する。
【０００３】
計算機システムの構成要素に、フォールト（ハードウェアの故障やソフトウェアのバグ、設計ミス、過負荷、輻輳等を含む広義の障害をいう）が発生しても、外から見る限りそのシステムの機能が正常に維持されるシステムをフォールトトレラントシステムという。一方、フォールトの発生によってシステムの正常な機能をすべて維持することができなくても、その機能の一部を保持して運用を継続するシステムをフェイルソフトシステムという。フォールトトレラントシステムあるいはフェイルソフトシステムを構築するための技術の総称がフォールトトレランス技術である。
【０００４】
フォールトトレランス技術の基本は、多重化による冗長システムを構成する手法である。ハードウェア上の多重化には、静的冗長方式や動的冗長方式がある。ソフトウェア上の多重化には、Ｎバージョン法がある。
【０００５】
静的冗長方式は、フォールトの影響が出力に現れないようにマスクする方式である。静的冗長方式の代表例として多重化多数決システムがある。例えば、３つの同一処理モジュールに同じ入力を与えて各出力の多数決をとると、たとえ１つのモジュールにフォールトが発生しても多数決された出力は、通常の場合は正しい結果となっている。
【０００６】
動的冗長方式は、フォールトの発生した構成要素を予備要素に切替えるか、あるいはフォールトの発生した構成要素を可能な範囲で除去して機能を縮退させる方式である。前者をシステム再構成法、後者を機能縮退法ともいう。
【０００７】
予備要素への切替えは、通常の高信頼システムでよく採用される。プロセッサレベルの予備要素を用意するものには、デュアル方式（２台のプロセッサで同じ処理を同期運転し、比較チェックにより診断／切離し／処理再開を行う）、デュプレックス方式（２台のプロセッサを現用と予備に分け、現用プロセッサに誤りが検出されると、自動または手動で予備プロセッサに切替える）がある。周辺装置レベルの予備要素を用意するものには、外部記憶装置において予備の磁気ハードディスクドライブを利用した並列化記憶装置のＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）と呼ばれる方式がある。
【０００８】
機能縮退は、複数の構成要素で構成されている冗長構成のプロセッサやメモリを対象にする場合が多い。複数のプロセッサからなるマルチプロセッサシステムの機能縮退では、故障したプロセッサをシステムから切離し、残ったプロセッサだけで処理を続行する。メモリの機能縮退では、故障メモリブロックを切離し、全体のメモリ容量を縮小して処理を続行する。どちらの場合もシステム性能の低下は避けられない。
【０００９】
Ｎバージョン法は、同一仕様に基づいて独立に作成されたＮ個のプログラムを同時に実行し、得られたＮ個の実行結果から、例えば、多数決のアルゴリズムに従って正しいと思われる結果を選び出す方法である。
【００１０】
以上の説明から分かるように、多重化による冗長構成では、同一仕様の構成要素を複数用意し、そのうち１つを稼働させながら、別の少なくとも１つを並列稼働あるいは待機させることを基本方針としている。その理由は、故障の発生した構成要素の切替えや切離しを容易にするためである。
【００１１】
従来における冗長構成方法では、システムのすべての構成要素を多重化するのではなく、フォールトの発生しやすい部分、あるいはフォールトの発生がシステム機能に致命的な影響を与える部分だけを多重化することが多い。その理由は、第一には、すべての構成要素を多重化するとシステム構築のコストが大幅に上昇するためであり、第二には、ハードウェアの故障発生確率等に基づいて多重化すべき箇所を限定したとしても、耐フォールト性の向上に一定の効果があるためである。
【００１２】
次に、情報量を縮減するための抽象化に関する技術である多階層モデル表現法とマルチレベルシミュレーションについて説明する。
【００１３】
多階層モデル表現法は、計算機システムの構造と動作を抽象的な表現レベル（抽象的な属性を表す変数の領域）と具体的な表現レベル（具体的な属性を表す変数の領域）で記述するための手法である。
【００１４】
通常、具体的な表現レベルの構造記述と現実の計算機システムの構成要素とが一対一に対応するように表現される。抽象的な表現レベルの構造記述は、上位下位対応関係の記述を通して、間接的に計算機システムの構成要素と対応づけられる。主に論理装置の設計の分野で用いられてきた技術である。
【００１５】
また、マルチレベルシミュレーションは、多階層モデルの記述の一貫性を確かめるための検証法である。多階層モデルの記述に一貫性があれば、その表現対象である計算機システム（論理装置）の設計は正しいことになる（非特許文献１を参照）。
【００１６】
マルチレベルシミュレーションの検証手順を簡単に説明する。前提として、検証の対象となる論理装置の多階層モデルの記述が存在しているものとする。すなわち、論理装置は、多階層モデル表現法に基づいて２つの表現レベル（抽象的な上位表現レベル；例えばレジスタトランスファレベル、下位表現レベル；例えばゲートレベル）で構造と動作が記述され、さらに、それら２つの表現レベル間の論理装置の入出力および状態の上位下位対応関係（上位表現レベルの変数と下位表現レベルの変数との対応関係）も明確に記述されているものとする。多階層モデルに３つ以上の表現レベルがある場合には、上位下位対応関係の記述された２つの（隣り合う）表現レベルに注目した検証を複数回繰り返す。
【００１７】
まず、下位表現レベルの（構造記述を変換して得られた）動作記述から、特定のテストパターンに対する出力結果Ｒ１をシミュレーションにより得る。次に、テストパターンを上位下位対応関係を使って上位表現レベルの入力データに変換し、上位表現レベルの論理装置の動作記述からそのデータに対する出力結果Ｒ２をシミュレーションにより得る。
【００１８】
一方、出力結果Ｒ１は、テストパターンの変換と同様にして、上位下位対応関係を使って出力結果Ｒ１’に変換される。その後、変換された出力結果Ｒ１’と出力結果Ｒ１とが照合される。複数の適切なテストパターンに対して照合が成功したときに、（論理装置の）多階層モデルの記述には一貫性がある、と判断される。
【００１９】
通常のシミュレーションでは、設計者がシミュレーション結果を逐一観察して論理装置の正しさを判断しなければならないが、マルチレベルシミュレーションを利用すればその観察と判断を自動的に行えるという利点がある。
【非特許文献１】
久野巧：マルチレベルシミュレーションによる多階層モデルの検証、電子情報通信学会論文誌Ｄ−ＩＩ，  Ｖｏｌ．  Ｊ７６−Ｄ−ＩＩ，  Ｎｏ．  ４，  ｐｐ．９０８−９１３  （１９９３）
【００２０】
【発明が解決しようとする課題】
ところで、今後、世の中のあらゆる場面に計算機システムが浸透していくことが予想される。時と場所にかかわらず計算機システムによる支援があたりまえになる社会では、システムの障害（フォールト）が近代的な生活の営みをすべて停止させてしまう危険性をはらんでいる。そのような危険を顕在化させないためには、耐フォールト性を向上させた冗長システムの構築と運用が所望される。
【００２１】
従来の計算機システムの冗長構成では、構成要素をすべて多重化してしまうとシステム構築コストの大幅な上昇を引き起こすため、ハードウェア故障の発生確率に基づいて多重化すべき箇所を限定し、フォールトの発生しやすい部分あるいはフォールトの発生がシステム機能に致命的な影響を与える部分だけを多重化することが多かった。
【００２２】
部分的な冗長構成であっても、フォールト発生の予測が正しければ耐フォールト性は確かに向上する。ところが、広義の障害、ハードウェアの故障はもちろんであるが、ソフトウェアのバグ、設計ミス、過負荷、輻輳等を含む障害までを想定した場合には、フォールト発生確率の見積もりに誤差が増えるため、部分的な冗長構成では運用の継続を保証することは極めて困難になる。
【００２３】
計算機システムの遍在を前提にした社会では、システム全体の耐フォールト性が高く、かつ、システム構築に要するハードウェアやソフトウェア（以下、リソース）の増大を抑えることのできる冗長構成方式がより一層求められる。
【００２４】
したがって、そのような冗長構成方式の候補として、耐フォールト性を確実に向上させるためにデータの生成部分からデータの最終出力部分までを一貫して多重化し、所要リソースの増大を抑制するために情報量を縮減したデータを利用するフェイルソフトシステムの仕組みが所望される。
【００２５】
本発明は、上記のような課題を解決するためになされたものであり、上記のような仕組みの具現化に際して克服すべき問題として、具体的には、次に説明するような（課題１）から（課題３）が具体的に解決されるべき課題として挙げられる。
【００２６】
（課題１）
フォールト発生箇所やフォールト発生要因の予測が困難であることを前提にした場合、最も有効な冗長構成は、すべての構成要素を多重化することである。ただし、従来技術のように同一仕様の構成要素を複数用意したのでは、システムの構築に要するリソースが２倍以上に増大するので、そのような構成は多くの場面において現実的ではない。
【００２７】
所要リソースを抑える手段としては、例えば、基本モジュールに対して、情報量を縮減したデータを扱う冗長モジュールを用意し、データの生成部分からデータの最終出力部分までを一貫して多重化する構成が必要になる。さらに、冗長モジュールは、フォールト発生時に基本モジュールの予備要素となって、機能縮退のために利用可能なデータを供給できるような構成でなければならない。ここでの「基本モジュール」とは、冗長的な構成にする前段階のシステム（非冗長システム）の各部分をいい、「冗長モジュール」とは冗長的な構成にするために追加した付加的なモジュールをいう。
【００２８】
（課題２）
ハードウェア故障に対しては、従来の自己診断回路による誤り検出や、デュアル方式での同期運転結果の一致比較により故障検出することが有効である。しかし、ソフトウェアのバグ、設計ミス、過負荷、輻輳等を自己診断や同期運転で検出することは、困難である。このため、広義の障害としてのフォールトを検出できなければならない。したがって、システム設計の段階で定義した望ましい動作と稼働中のシステムの動作が一致しているか否かを常時比較してフォールトを検出する手段が必要になる。
【００２９】
（課題３）
システムが耐フォールト性を向上させたフェイルソフトシステムであるためには、フォールト発生箇所が冗長モジュールであれば、基本モジュールのデータをそのまま出力し、フォールト発生箇所が基本モジュールであれば、冗長モジュールのデータから元のデータを復元して出力するといった制御ができなければならない。フォールトを検出したときには、より確からしいデータの選択して機能縮退するための制御手段が必要になる。
【００３０】
したがって、本発明の目的は、上記の（課題１）から（課題３）により検討された課題を解決して、正常時にはシステム機能検証を実行し、フォールト発生時には機能縮退するためのフェイルソフトシステムである冗長システム、冗長システム構成システムおよび冗長システム構成方法を提供することである。具体的には、本発明の目的は、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システム、冗長システムを構成する冗長システム構成システムおよび冗長システム構成方法を提供することにある。
【００３１】
【課題を解決するための手段】
上記のような目的を達成するため、本発明による冗長システムは、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムであって、計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールと、前記通常のデータから情報量を縮減したデータを処理または通信するシステム機能の第２レベルモジュールと、第１レベルモジュールの出力データから情報量を縮減したデータと第２レベルモジュールの出力データを照合してシステム機能を検証する機能検証手段と、前記機能検証手段によりフォールトが検出された場合に、システム機能を縮退する機能縮退手段とを備えることを特徴とするものである。
【００３２】
また、ここでの機能縮退手段は、システム機能の機能検証により、第１レベルモジュールにフォールトが検出されなければ、第１レベルモジュールの出力データをそのまま選択し、第１レベルモジュールにフォールトが検出されれば、第２レベルモジュールから復元されたデータを選択するようにしてシステム機能を縮退することを特徴とするものである。
【００３３】
また、本発明による冗長システム構成システムは、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する冗長システム構成システムであって、計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールから、前記通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成する縮退モデル作成手段と、前記第１レベルモジュールと第２レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成する機能縮退モジュール作成手段とを備えることを特徴とするものである。
【００３４】
本発明による冗長システム構成方法は、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する冗長システム構成方法であって、計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールから、前記通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成し、前記第１レベルモジュールと第２レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成することを特徴とするものである。
【００３５】
また、本発明による冗長システムは、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムであって、計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールと、前記通常のデータから情報量を縮減したデータを処理または通信するシステム機能の第２レベルモジュールと、前記第２レベルモジュールのデータから情報量を縮減したデータを処理または通信するシステム機能の第３レベルモジュールと、第１レベルモジュールの出力データから情報量を縮減したデータと第２レベルモジュールの出力データを照合しシステム機能を検証する第１検証手段と、第２レベルモジュールの出力データから情報量を縮減したデータと第３レベルモジュールの出力データを照合しシステム機能を検証する第２検証手段と、前記１検証手段または第２検証手段によりフォールトが検出された場合に、システム機能を縮退する機能縮退手段とを備えるものとしても良い。
【００３６】
また、本発明による冗長システム構成システムは、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する冗長システム構成システムであって、計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールから、前記通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成し、第２レベルモジュールのデータから情報量を縮減したデータを処理または通信する第３レベルモジュールを作成する多階層縮退モデル作成手段と、前記第１レベルモジュール、第２レベルモジュール及び第３レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成する機能縮退モジュール作成手段とを備えるものとしても良い。
【００３７】
また、本発明による冗長システム構成方法は、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する冗長システム構成方法であって、計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールから、前記通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成し、第２レベルモジュールのデータから情報量を縮減したデータを処理または通信する第３レベルモジュールを作成し、前記第１レベルモジュール、第２レベルモジュール及び第３レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成するようにしても良い。
【００３８】
この場合において、第１レベルモジュールと第２レベルモジュールに対して、第３レベルモジュールから第Ｎレベルモジュール（Ｎ＞３）までの少なくとも１レベルを追加し、第１レベルモジュールから第Ｎレベルモジュールまでを同時並行動作させて検証と縮退を実行させる。
【００３９】
以下の説明において、「フォールト」とは、ハードウェアの故障やソフトウェアのバグ、設計ミス、過負荷、輻輳等を含む広義の障害をいい、「情報量を縮減したデータ」とは、「抽象化」処理の操作を行ったデータをいう。例えば、元のデータから特定の属性に関する情報を抽出する操作あるいは特定のパターン情報を特定のシンボル情報で代表する操作等の適用により、データの情報量を減らす変換を行ったデータいう。また、抽象化したデータを元のデータに対して「抽象データ」という。データの流れが抽象化と逆方向になる変換を「逆抽象化」という。逆抽象化したデータを「復元データ」という。
【００４０】
「第１レベルモジュール」とは、本発明による冗長システムが適用された計算機システムにおいて、システムを冗長な構成にする前段階のシステムの各部分をいう。当然ながら、フォールトの発生を想定しなければ第１レベルモジュールだけでシステムの機能のすべてを実現できる。後の説明における「第１レベルデータ」とは、主に第１レベルモジュールにおいて処理または通信される通常のデータをいう。
【００４１】
「第２レベルデータ」は、第１レベルデータを抽象化したデータである。「第２レベルモジュール」とは、主に第２レベルデータを処理または通信するモジュールをいう。同様な意味で、「第３レベルデータ」と「第３レベルモジュール」および「第Ｎレベルデータ」と「第Ｎレベルモジュール」（Ｎ＞３）が定義される。
【００４２】
また、第１レベルモジュールは、通常のデータを処理または通信するシステム機能のモジュールであるから、「基本モジュール」ともいう。また、本発明による冗長システムが適用された計算機システムにおける「基本モジュール」以外のモジュールが「冗長モジュール」である。
【００４３】
本発明による冗長システムの構成方法では、次の構成手順にしたがって、情報量を縮減したデータを扱う冗長モジュールを作成して、設置し、データの生成部分からデータの最終出力部分までを一貫して多重化する。
【００４４】
すなわち、計算機システムの構成要素にフォールトが発生したときでも部分的な機能でシステム運用を継続できるようにするために処理装置や通信装置の機能を多重化した冗長システムを構成する場合には、まず、冗長システムとするシステム構成のデータを入力して、計算機システムの通常のデータを処理または通信するシステム機能の第１レベルモジュールとして作成する。この第１レベルモジュールから、通常のデータから情報量を縮減したデータを処理または通信する第２レベルモジュールを作成する。そして、第１レベルモジュールと第２レベルモジュールを同時並行的に動作させ、フォールトが検出されないときにはシステム機能を検証し、フォールトが検出されたときには機能縮退する機能縮退モジュールを作成する。
【００４５】
具体的には、図１に示すように、まず、冗長構成にする前段階のシステム構成を入力する。これが第１レベルモジュールを構成することになる（ステップ１００）。次に、冗長構成にする前段階のシステムの多階層モデルを作成する。これにより、第２レベルモジュール、第３レベルモジュール、…、第Ｎレベルモジュールを作成することができることになる。このとき、多階層モデルの下位表現レベルの構造記述に表れる各構成要素が第１レベルモジュールに対応する（ステップ１０１）。
【００４６】
次に、当該多階層モデルの上位表現レベルの構造記述に表れる各構成要素に対応した（実体のある）第２レベルモジュールを設置する（ステップ１０２）。
【００４７】
ここで、当該多階層モデルを作成した段階においては、上位表現レベルの動作記述は上位表現レベルの構造記述の動作を表している。つまり、上位表現レベルの動作記述は、上位表現レベルの構造記述に基づいて構成された第２レベルモジュールの動作をも表していることになる。一方、多階層モデルを利用したシステム設計では、システムの望ましい抽象的な動作、すなわち機能は、仕様の一部として上位表現レベルの動作記述に表現されている。したがって、システムの望ましい抽象的な動作、すなわち機能と第２レベルモジュールの動作は、正しい実装／実現がなされているかぎり、一致する。
【００４８】
最後に、システム機能を縮退する制御を行うモジュールを作成するため、当該多階層モデルの上位下位対応関係の記述に相当する抽象化手段と逆抽象化手段、および機能検証のための照合手段と機能縮退のための選択制御手段を作成して、設置する（ステップ１０３，ステップ１０４）。
【００４９】
このようなシステム構成方法により、作成された冗長システムによれば、第１レベルモジュールと、第１レベルモジュールに対してその抽象的な動作（すなわち機能）を実現した第２レベルモジュールが、同時並行的に実行可能な状態で存在するため、システム稼働中にマルチレベルシミュレーション相当の機能検証を常時実行することができる。さらに、検証時の照合の失敗に基づいてフォールトを検出し、機能縮退を実行することができる。
【００５０】
ここでの冗長システムにおいては、機能検証と機能縮退は、次のように実現される。すなわち、機能検証は、２組の等価な処理手段や通信手段に等価なデータを入力すれば等価な出力データが得られるという原理を利用する。（抽象化手段により）情報量を縮退したデータとして、各レベルモジュールの間で等価なデータに変換して、照合して等価性を調べる。等価な出力データが得られなかった場合、第１レベルモジュールまたは第２レベルモジュールの２組の処理手段や通信手段のいずれかにフォールトが発生したと判断する。
【００５１】
機能検証は、冗長構成を前提にしている。第１レベルモジュールと第２レベルモジュールは、扱うデータの情報量の違いを除いて機能的には等価である。特定の入力データが第１レベルモジュールに入力されると、それと同時に当該入力データは抽象化されて第２レベルモジュールにも入力される。第１レベルモジュールと第２レベルモジュールが同時並行的に動作した後、第１レベルモジュールの出力データと第２レベルモジュールの出力データが、各レベルモジュールの間で等価なデータに変換されて照合される。ここでシステム機能の照合では、第１レベルモジュールの出力データを抽象化し、当該抽象データと第２レベルモジュールの出力データを照合する。照合により当該照合が成功すれば「フォールトなし」、当該照合が失敗すれば「フォールトあり」と判断する。
【００５２】
入力データの処理結果を抽象化したデータと当該入力データを抽象化したデータの処理結果を照合する手順は、マルチレベルシミュレーションのそれと同じである。マルチレベルシミュレーションにおいては、下位表現レベルの構造の動作を確認することにより、上位表現レベルの動作（すなわち機能）を満足しているか否かを確認することができる。
【００５３】
同様に、システム機能の照合においては、システム設計の段階で定義した望ましい動作（すなわち機能）と稼働中のシステムの動作が一致しているか否かを確認していることになる。ただし、マルチレベルシミュレーションではあらかじめ設計者がテストパターンを入力データとして準備しなければならなかったが、本発明による冗長システムにおける機能検証では、稼働中の実データを照合対象とする点で異なる。
【００５４】
また、ここでの機能検証では、上述のような照合によるフォールト検出に加えて、実施例として説明するように、例えば、第１レベルモジュールと第２レベルモジュールにそれぞれ独立して設けた誤り検出手段によっても、フォールト検出を行うことができる。照合手段と誤り検出手段を組み合わせて機能検証を行うことにより、各種のフォールト（ハードウェア故障、ソフトウェアのバグ、設計ミス、過負荷、輻輳等）を検出することができるようになる。
【００５５】
機能縮退は、例えば、フォールト検出結果に基づいてデータ選択を行い、復元データを用いて機能縮退を実行する。第１レベルデータを選択する場合は、照合手段および誤り検出手段によるフォールト検出結果に基づいて、逆抽象化した復元データかあるいは第１レベルデータから、より確からしいデータを選択し、第１レベルデータとして出力する。
【００５６】
第２レベルデータの選択する場合は、照合手段および誤り検出手段によるフォールト検出結果に基づいて、抽象化した抽象データかあるいは第２レベルデータから、より確からしいデータを選択し、第２レベルデータとして出力する。
【００５７】
また、確からしいデータの選択のために、処理対象となるデータあるいは通信対象となるデータには、当該データの確からしさを表す変数（単調増加変数、ＣＴ変数）が付与するようにしても良い。確からしさの指標となる変数は、抽象化や逆抽象化あるいはフォールト発生によって、単調に減少する値（ＣＴ値）とされて、各データに対応して保持される。より確からしいデータの選択は、当該変数の値の比較に基づいて行う。
【００５８】
システムの主要な出力結果は、第１レベルデータであるため、機能縮退では第１レベルデータの選択制御が特に重要である。第１レベルデータの出力結果として、第１レベルモジュールにフォールトが検出されなければ、第１レベルモジュールの出力データをそのまま選択し、第１レベルモジュールにフォールトが検出されれば、逆抽象化して第２レベルデータから復元されたデータを選択するように制御される。
【００５９】
ここで、注意されるべき点としては、復元データの情報量は、抽象化と逆抽象化を伴っているので、本来の第１レベルモジュールのデータのそれに比べて少ないことである。そのため、それ以降の処理または通信によって得られた結果にはより多くの誤差が含まれるようになる。すなわち、システムは第１レベルモジュールでフォールトが発生したときに出力結果に誤差が増える状態に移行しているという意味で機能を縮退させながら、動作を継続する。
【００６０】
【発明の実施の形態】
次に、本発明を実施する場合の形態について、具体的に図面を参照して説明する。この説明の前に、内容の理解を深めるために、本発明の実施例の説明において使用する用語を定義する。
【００６１】
次のように用語を定義する。「単位データ」とは、データ処理や通信の実行単位毎にまとめられた一式のデータをいう。連続したデータの単位データへの分割は、通常、データの生成段階で行われ、データの確からしさを表すために利用する変数として、その分割された単位データ毎に単調増加変数とＣＴ変数（後述する）が付与される。ただし、ここでの説明においては、単調増加変数やＣＴ変数に言及する場合を除いて「単位データ」と「データ」を同じ意味で用いる。
【００６２】
「単調増加変数」は、単調に増加する値を格納するための、すべての単位データに付与される変数である。「単調増加変数の制約」とは、単調増加変数に代入し得る値の範囲に関する制約をいう。任意の単位データの単調増加変数の値は、時系列上で直前の単位データの単調増加変数の値に比べて、等しいかあるいはより大きな値でなければならない。「ＣＴ変数」は、選択制御手段において、より確からしいデータを選択するための指標となる値を格納するために、すべての単位データに付与される変数である。ＣＴ変数の値を「ＣＴ値」という。値の範囲は、０≦ＣＴ値≦１である。ＣＴ値＝１のとき「最も確からしい」とする。なお、ここでのＣＴは、Ｃｅｒｔａｉｎｔｙの略語である。
【００６３】
（基本構成）
本発明による冗長システムは、概略を説明した構成手順（図１）に従って作成されたものである。冗長システムの基本構成としては、図２に示すように、第１レベルモジュール１０、第２レベルモジュール２０、第１−２レベル抽象化モジュール３０、第１−２レベル機能検証モジュール４０、および第１レベル機能縮退モジュール５０から構成される。
【００６４】
第１レベルモジュール１０は、第１レベルデータ処理手段１１と、第１レベルデータ通信手段１２と、それぞれに付加された誤り検出手段１３，１４から構成されている。同様に、第２レベルモジュール２０は、第２レベルデータ処理手段２１と、第２レベルデータ通信手段２２と、それぞれに付加された誤り検出手段２３，２４から構成されている。
【００６５】
第１レベルモジュール１０と第２レベルモジュール２０の間に介在する第１−２レベル抽象化モジュール３０は、抽象化手段３１から構成されており、抽象化手段３１が情報量を縮減したデータに変換して、第１レベル入力データを第２レベル入力データに変換する。また、第１−２レベル機能検証モジュール４０は、第１レベルモジュールの出力データを抽象化する抽象化手段４１、抽象データと第２レベルモジュールの出力データとを比較照合する照合手段４２、および抽象データと第２レベルモジュールの出力データから第２レベル出力結果３を選ぶ選択制御手段４３から構成される。
【００６６】
第１レベル機能縮退モジュール５０は、第２レベルデータから第１レベルデータにデータを復元する逆抽象化手段５１と、復元されたデータと第１レベルモジュールの出力データから第１レベル出力結果２を選ぶ選択制御手段５２とから構成されている。
【００６７】
なお、第１レベルモジュール１０における第１レベルデータ処理手段１１や、第１レベルデータ通信手段１２の組合せ方（各手段の個数や順序）が異なる構成についても、当然ながら、この基本構成と等価である。同様に、第２レベルモジュール２０における第２レベルデータ処理手段２１や、第２レベルデータ通信手段２２の組合せ方（各手段の個数や順序）が異なる構成ついても、この基本構成と等価である。
【００６８】
（各モジュールの処理内容）
次に、冗長システムの基本構成における各モジュールの処理内容について説明する。第１レベルモジュール１０における第１レベルデータ処理手段１１と第１レベルデータ通信手段１２は、冗長的な構成にする前段階のシステムの各部分に対応するデータ処理とデータ通信をそれぞれ実行する。すなわち、通常のデータを処理または通信するモジュールとなっている。
【００６９】
第１レベルデータ処理手段１１に付加された誤り検出手段１３は、誤り検出符号や時間監視タイマに基づいて当該処理手段の出力の誤りを検出する。この誤り検出手段１３により、データ処理系のハードウェア故障が発生したときのフォールトが検出できるものとなっている。
【００７０】
第１レベルデータ通信手段１２に付加された誤り検出手段１４についても、同様に、誤り検出符号や時間監視タイマに基づいて当該通信手段の出力の誤りを検出する。この誤り検出手段１４により、データ通信系のハードウェア故障が発生したときのフォールトが検出できるものとなっている。
【００７１】
第２レベルモジュール２０における第２レベルデータ処理手段２１と第２レベルデータ通信手段２２は、第１レベルデータに対して情報量を縮減した（抽象化した）第２レベルデータのデータ処理とデータ通信をそれぞれ実行する。
【００７２】
第２レベルデータ処理手段２１に付加された誤り検出手段２３は、誤り検出符号や時間監視タイマに基づいて当該処理手段の出力の誤りを検出する。また、第２レベルデータ通信手段２２に付加された誤り検出手段２４は、誤り検出符号や時間監視タイマに基づいて当該通信手段の出力の誤りを検出する。
【００７３】
第１−２レベル抽象化モジュール３０の抽象化手段３１は、第１レベルモジュールの入力データ（第１レベル入力データ１）から第２レベルモジュールの入力データを抽象化によって求める。
【００７４】
ここでの第１−２レベル抽象化モジュール３０の抽象化手段３１および第１−２レベル機能検証モジュール４０の抽象化手段４１は、次の操作（１ａ）から操作（１ｄ）の各操作によって、データの情報量を縮減し抽象化を実行する処理モジュールである。すなわち
操作（１ａ）：特定の属性に関する情報を抽出する操作、
操作（１ｂ）：時間的な変化を伴うデータにおいて時間的な標本間隔を広くする操作、
操作（１ｃ）：空間的な広がりを伴うデータにおいて空間的な標本間隔を広くする操作、
操作（１ｄ）：これらを組み合わせた操作。
なお、ここで操作（１ｂ）の操作においては、単位データに付与された単調増加変数を変更する。一連の単位データに対して、操作（１ｂ）の操作が適用されると、縮減された単位データに付与された単調増加変数も同時に削除される。
【００７５】
第１−２レベル機能検証モジュール４０における抽象化手段４１と照合手段４２の処理内容は次のとおりである。
【００７６】
第１−２レベル機能検証モジュール４０の抽象化手段４１は、第１レベルモジュールの出力データを抽象化する。すなわち、抽象化手段４１は、第１レベルモジュールの出力データに対して、前述した抽象化手段３１と同じ操作（１ａ）〜（１ｄ）を適用する。
【００７７】
第１−２レベル機能検証モジュール４０における照合手段４２は、第２レベルモジュールの出力データと、抽象化した第１レベルモジュールの出力データとを比較照合する。照合手段４２は、当該照合が成功すれば「フォールトなし」、当該照合が失敗すれば「フォールトあり」と判断する。
【００７８】
また、照合手段４２による照合によって、システム設計の段階で定義した望ましい動作（すなわち機能）と稼働中のシステムの動作が一致しているか否かを確認することができる。照合手段４２が「フォールトなし」と判断したとき、システムは設計の段階で定義した望ましい動作（すなわち機能）を実行しているとする判定できる。
【００７９】
ここでは、また、照合手段４２、第１レベルデータの誤り検出手段（第１レベルデータ処理手段１１に付加された誤り検出手段１３、第１レベルデータ通信手段１２に付加された誤り検出手段１４）、および第２レベルデータの誤り検出手段（第２レベルデータ処理手段２１に付加された誤り検出手段２３、第２レベルデータ通信手段２２に付加された誤り検出手段２４）の結果を組み合わせることによって、各種フォールト（ハードウェア故障、ソフトウェアのバグ、設計ミス、過負荷、輻輳等）を検出する。
【００８０】
ハードウェア故障に対しては、ここでは、各レベルモジュールにおいて検出するように構成する。すなわち、第１レベルモジュール１０の誤り検出手段１３，１４が「第１レベルモジュールのハードウェア故障」を検出する。また、第２レベルモジュールの誤り検出手段２３，２４が「第２レベルモジュールのハードウェア故障」を検出する。また、誤り検出手段１３，１４，２３，２４の結果にかかわらず、第１レベルモジュール１０あるいは第２レベルモジュール２０のどちらかがハードウェア故障で異常データを出力したとき、照合手段４２によって、フォールトが検出されることになる。
【００８１】
ここでの冗長システムでは、ソフトウェアのバグや設計ミスのフォールトに対しては、第１レベルモジュール１０と、第２レベルモジュール２０（あるいは第Ｎレベルモジュール）が、同じ仕様の別の実装／実現となるので、ソフトウェアのＮバージョン法と同じ程度の範囲で、照合手段４２によって、フォールトを検出されることになる。
【００８２】
ところで、過負荷や輻輳に対しては、第１レベルモジュール１０と、第２レベルモジュール２０においてデータを処理または通信を行う場合に、ここで扱うデータの情報量の違いによって各モジュールの隘路における性能上の限界が異なるため、出力結果の時間的遅れとして現れるので、これを照合手段４２により、フォールトとして検出するようにもできる。
【００８３】
次に、照合手段４２における出力結果の時間差を考慮した照合手順について、詳細に説明する。図５は、照合手段に適用された出力結果の時間差を考慮した照合手順を説明するフローチャートである。フローチャートに照合手順を従って説明する。
【００８４】
まず、出力結果に存在する時間差とその対処のために導入する単調増加変数について説明する。通常、第１レベルモジュールでの処理または通信に要する時間と第２レベルモジュールでの処理または通信に要する時間には、過負荷や輻輳による出力結果の時間的遅れ以外にも、定常的な差が存在する。その時間差は、データの情報量の違いおよび処理や通信を実行するリソースの違いに起因する。
【００８５】
照合手段４２においては、照合時にこの定常的な時間差を吸収し、過負荷や輻輳に基づく出力結果の時間的遅れと区別するため、単調増加変数を利用する。単位データの単調増加変数の値は、時系列上で直前の単位データの単調増加変数の値に比べて、等しいかあるいはより大きな値である。ここでは、単調増加変数の制約を満たす値として、単位データが生成されたときの実時間を特定の形式の数値に変換して単調増加変数に代入する。
【００８６】
このような単調増加変数を前提にすると、任意の２つの単位データにおいて、それぞれの単調増加変数の値が等しいとき、処理または通信の流れを生成時点まで逆に辿れば同じデータに行き着くことが保証される。
【００８７】
機能検証は、２組の等価な処理手段や通信手段に等価なデータを入力すれば等価な出力データが得られるという原理を利用しているので、その等価性を判定する照合手段においては、単調増加変数の値が等しい単位データだけを対象にすればよい。このため、単調増加変数の値が等しい単位データを照合することで、定常的な時間差を吸収することができる。
【００８８】
照合手順は、図５に示すように、まず、ステップ２００において、前処理として次の処理を行う。
（前提１）２つの入力毎に単位データを少なくともＴｄ時間だけ保持するバッファを持ち、
（前提２）当該バッファは単位データの到着時刻を記録し、
（前提３）当該バッファは単位データの単調増加変数の最大値を記録するものとする。
具体的なＴｄ時間の値は単位データの定常的な時間差を実測して決定する。
【００８９】
次に、ステップ２０１において、２つのバッファの中から到着時刻の最も早い単位データを選択する。ステップ２０２において、選択した単位データと単調増加変数の値が同じ単位データが（選択した単位データのバッファとは）別のバッファに存在するかどうかを調べる。
【００９０】
もし存在すれば、ステップ２０５に進み、ステップ２０５において、単位データの内容の一致比較を行う。この比較により、一致すれば「フォールトなし」と判断する（ステップ２０６）。不一致ならば「フォールトあり」と判断する（ステップ２０７）。そして、ステップ２１１に進む。
【００９１】
また、ステップ２０２の判定において、単調増加変数の値が同じ単位データが存在しなければ、ステップ２０３において、選択した単位データの単調増加変数の値Ｖと（選択した単位データのバッファとは）別のバッファの単調増加変数の最大値Ｖｍａｘを比較する。
【００９２】
ステップ２０３において、Ｖ＞Ｖｍａｘならば、照合対象となる単位データが遅れて到着するかもしれないので、最大Ｔｄ時間待つ（ステップ２０４）。
【００９３】
Ｖ≦Ｖｍａｘならば、照合対象となる単位データは既に到着済みであり、「フォールトあり」と判断が下った後であるから、ステップ２１１に進み、ステップ２１１において、単位増加変数の値がＶである単位データをバッファから削除して、ステップ２０１からの照合手順を繰り返す。
【００９４】
また、Ｔｄ時間待ち（ステップ２０４）、Ｔｄ時間経過しても照合対象となる単位データが到着しなければ、ステップ２０８に進み、選択した単位データがどちら側から入力したかを調べる。
【００９５】
ステップ２０８において、選択した単位データの入力が、第２レベルモジュール側からであれば、第１レベルモジュールからのデータがＴｄ時間を越えて異常に遅れているためであり、ステップ２０９において「第１レベルモジュールにフォールトあり」と判断する。この場合のフォールトは「第１レベルモジュールでの過負荷あるいは輻輳の発生」である。次に、ステップ２１１に進む。
【００９６】
また、ステップ２０８において、選択した単位データの入力が、抽象化手段側からであれば、第２レベルモジュールからのデータがＴｄ時間を越えて異常に遅れているためであり、ステップ２１０において、「第２レベルモジュールにフォールトあり」と判断する。この場合のフォールトは「第２レベルモジュールでの過負荷あるいは輻輳の発生」である。そして、ステップ２１１に進む。
【００９７】
ステップ２０１からの処理により、選択した単位データに関する判断が終了すると、ステップ２１１において、当該単位データおよび単調増加変数の値が同じ単位データをすべてバッファから削除する。そして、ステップ２０１からの照合手順を繰り返す。
【００９８】
このような照合手順によって、正常に稼働中の定常的な時間的な遅れと過負荷や輻輳の発生による時間的な遅れを区別してフォールトを検出することができるようになる。
【００９９】
次に、第１レベル機能縮退モジュール５０の処理内容について説明する。第１レベル機能縮退モジュール５０における逆抽象化手段５１は、第２レベルデータから第１レベルのデータを復元する処理を行う。
【０１００】
逆抽象化手段５１においては、次の操作（３ａ）から操作（３ｄ）の操作によって、抽象データから復元データを得る。
操作（３ａ）：存在しない属性の値を推定する操作、
操作（３ｂ）：時間的な標本間隔の間のデータを補間する操作、
操作（３ｃ）：空間的な標本間隔の間のデータを補間する操作、および
操作（３ｄ）：これらを組み合わせた操作。
ここで、操作（３ｂ）の操作は単位データに付与された単調増加変数を変更する。抽象データに対して、操作（３ｂ）の操作が適用されると、補間された単位データの単調増加変数に、補間前後の単位データの単調増加変数の値を最小と最大とし、かつ、単調増加変数の制約を満たす値が代入される。
【０１０１】
第１レベル機能縮退モジュール５０における選択制御手段５２は、前述したようなフォールト検出結果に基づき、第２レベルデータあるいは第１レベルデータの抽象データから、より確からしいデータを選択して、第２レベルデータとして出力する。
【０１０２】
次に、第１−２レベル機能検証モジュール４０の選択制御手段４３および第１レベル選択制御モジュール５０の選択制御手段５２の処理動作について、より確からしいデータを選択するための選択制御手順を説明する。
【０１０３】
図６は、第１−２レベル機能検証モジュール４０の選択制御手段４３の選択制御手順を説明するフローチャートである。フローチャートに従って説明する。
【０１０４】
まず、より確からしいデータの選択のための指標となる値を格納するＣＴ変数について説明する。すべての単位データにはＣＴ変数が付与する。ＣＴ変数の値であるＣＴ値は、確からしさを表す指標である。値の範囲は、０≦ＣＴ値≦１である。ＣＴ値＝１のとき最も確からしい単位データであることを示している。
【０１０５】
ＣＴ値は、抽象化、逆抽象化およびフォールト検出によって次のように変化するものとする。つまり
（４ａ）：抽象化（抽象化手段を経由すること）によりＣＴ値は減少する。
（４ｂ）：逆抽象化（逆抽象化手段を経由すること）によってＣＴ値は減少する。
（４ｃ）：誤り検出手段で致命的な誤りの検出によってＣＴ値は０になる。
（４ｄ）：誤り検出手段で音声データや画像データ等の些細な誤りの検出によってＣＴ値は減少する。
このようなＣＴ変数を用いることよって、選択制御手段は、２つの入力側に到着したそれぞれの単位データについてＣＴ値を比較し、より大きいＣＴ値を持つ単位データを出力結果にするという選択制御手順を実行する。
【０１０６】
選択制御手順は、図６に示すように、まず、ステップ３００において、前処理を行う。前処理として、次の処理を行う。
（前提１）２つの入力毎に単位データを少なくともＴｄ時間だけ保持するバッファを持ち、
（前提２）選択制御手段の出力した単位データの単調増加変数の値Ｖｏｕｔを記録する。
Ｔｄの値は照合手段におけるバッファ保持時間Ｔｄと同じである。第１レベルモジュールから抽象化手段を経由したデータを保持するバッファを第１レベル側バッファ、第２レベルモジュールからのデータを保持するバッファを第２レベル側バッファとする。
【０１０７】
次に、ステップ３０１において、照合手段が「第２レベルモジュールにフォールトあり」と判断したかどうかを確認する。もし「第２レベルモジュールにフォールトあり」ならば、ステップ３０２に進み、ステップ３０２において、第１レベル側バッファから単調増加変数の値がＶｏｕｔと同じかあるいはより小さい単位データを削除する。次にステップ３０３において、第１レベル側バッファから単調増加変数の値が最も小さい単位データを出力し、ステップ３０１に戻る。
【０１０８】
また、ステップ３０１の判定において、「第２レベルモジュールにフォールトあり」でなければ、ステップ３０４に進み、ステップ３０４において、第２レベル側バッファから単調増加変数の値が最も小さい単位データＤ２を選択する。
【０１０９】
次に、ステップ３０５において、Ｄ２と単調増加変数の値が同じ単位データＤ１が第１レベル側バッファに存在するか否かを判定する。この判定で、もし、単位データＤ２と単調増加変数の値が同じ単位データＤ１が第１レベル側バッファに存在すれば、ステップ３０７に進み、ステップ３０７において、単位データＤ１のＣＴ値と単位データＤ２のＣＴ値を比較する。
【０１１０】
また、ステップ３０５の判定で、単位データＤ２と単調増加変数の値が同じ単位データＤ１が第１レベル側バッファに存在しなければ、ステップ３０６に進んで、ステップ３０６において、第１レベル側バッファの単調増加変数の値が最大の単位データをＤ１として、ステップ３０７に進み、ステップ３０７において、単位データＤ１のＣＴ値と単位データＤ２のＣＴ値を比較する。
【０１１１】
このステップ３０７に比較において、「単位データＤ１のＣＴ値＞単位データＤ２のＣＴ値」ならば、ＣＴ値の定義から単位データＤ１が「より確からしい」と判断できるので、ステップ３０８に進み、ステップ３０８において、第１レベル側バッファから単調増加変数の値がＶｏｕｔと同じかあるいはより小さい単位データを削除する。次に、ステップ３０９において、第１レベル側バッファから単調増加変数の値が最も小さい単位データを選択制御手段４３から出力して、ステップ３０１に戻る。
【０１１２】
また、ステップ３０７の比較において、「単位データＤ１のＣＴ値≦単位データＤ２のＣＴ値」ならば、この場合には、ＣＴ値の定義から単位データＤ２が「より確からしい」と判断できるので、ステップ３１０に進み、ステップ３１０において、第２レベル側バッファから単調増加変数の値がＶｏｕｔと同じかあるいはより小さい単位データを削除する。次に、ステップ３１１において、第２レベル側バッファから単調増加変数の値が最も小さい単位データを選択制御手段４３から出力し、ステップ３０１に戻る。
【０１１３】
なお、単位データＤ２と単調増加変数の値が同じ単位データが第１レベル側バッファに存在しなければ（ステップ３０５）、第１レベル側バッファの中で単調増加変数が最大の単位データをＤ１とし（ステップ３０６）、第１レベル側バッファに単位データが全く存在しなければ、Ｄ１のＣＴ値は０とする。当該単位データＤ１のＣＴ値と単位データＤ２のＣＴ値を比較する（ステップ３０７）。
【０１１４】
図７は、第１レベル機能縮退モジュール５０の選択制御手段５２の選択制御手順を説明するフローチャートである。フローチャートに従って説明する。
【０１１５】
選択制御手段５２の選択制御手順では、図７に示すように、まず、ステップ４００において、次の前処理を行う。
（前提１）２つの入力毎に単位データを少なくともＴｄ時間だけ保持するバッファを持ち、
（前提２）選択制御手段の出力した単位データの単調増加変数の値Ｖｏｕｔを記録するものとする。
Ｔｄの値は照合手段におけるバッファ保持時間Ｔｄと同じである。第１レベルモジュールからのデータを保持するバッファを第１レベル側バッファ、第２レベルモジュールから逆抽象化手段経由のデータを保持するバッファを第２レベル側バッファとする。
【０１１６】
次に、ステップ４０１において、照合手段が「第１レベルモジュールにフォールトあり」と判断したかどうかを確認する。もし「第１レベルモジュールにフォールトあり」と判断したならば、次のステップ４０２において、第２レベル側バッファから単調増加変数の値がＶｏｕｔと同じかあるいはより小さい単位データを削除する。次に、ステップ４０３において、第２レベル側バッファから単調増加変数の値が最も小さい単位データを出力して、ステップ４０１に戻る。
【０１１７】
ステップ４０１の判断において「第１レベルモジュールにフォールトあり」の判断でなければ、ステップ４０４に進み、ステップ４０４において、第１レベル側バッファから単調増加変数の値が最も小さい単位データＤ１を選択する。
【０１１８】
次に、ステップ４０５において、Ｄ１と単調増加変数の値が同じ単位データＤ２が第２レベル側バッファに存在するか否かを判定する。この判定で、もし、単位データＤ１と単調増加変数の値が同じ単位データＤ２が第２レベル側バッファに存在すれば、ステップ４０７において、単位データＤ１のＣＴ値と単位データＤ２のＣＴ値を比較する。
【０１１９】
また、ステップ４０５の判定で、単位データＤ１と単調増加変数の値が同じ単位データＤ２が第２レベル側バッファに存在しなければ、ステップ４０６に進んで、ステップ４０６において、第２レベル側バッファの単調増加変数の値が最大の単位データをＤ２として、ステップ４０７に進み、ステップ４０７において、単位データＤ１のＣＴ値と単位データＤ２のＣＴ値を比較する。
【０１２０】
このステップ４０７に比較において、もし、「単位データＤ１のＣＴ値≧単位データＤ２のＣＴ値」ならば、ＣＴ値の定義から単位データＤ１が「より確からしい」と判断できるので、ステップ４０８において、第１レベル側バッファから単調増加変数の値がＶｏｕｔと同じかあるいはより小さい単位データを削除し、次のステップ４０９において、第１レベル側バッファから単調増加変数の値が最も小さい単位データを選択制御手段５２から出力し、ステップ４０１に戻る。
【０１２１】
また、ステップ４０７の比較において、「単位データＤ１のＣＴ値＜単位データＤ２のＣＴ値」ならば、ＣＴ値の定義から単位データＤ２が「より確からしい」と判断することができるので、ステップ４１０において、第２レベル側バッファから単調増加変数の値がＶｏｕｔと同じかあるいはより小さい単位データを削除し、次のステップ４１１において、第２レベル側バッファから単調増加変数の値が最も小さい単位データを選択制御手段５２から出力し、ステップ４０１に戻る。
【０１２２】
なお、単位データＤ１と単調増加変数の値が同じ単位データが第２レベル側バッファに存在しなければ（ステップ４０５）、第２レベル側バッファの中で単調増加変数が最大の単位データをＤ２とする（ステップ４０６）が、第２レベル側バッファに単位データが全く存在しなければ、Ｄ２のＣＴ値は０として、単位データＤ１のＣＴ値と当該単位データＤ２のＣＴ値を比較する。
【０１２３】
次に、システムの基本構成の拡張について説明する。基本構成のシステムは、適用する計算機システムのシステム構成の要件に応じて、第Ｎレベルモジュール拡張構成または縦列接続拡張構成のシステムに拡張できる。図３は、第Ｎレベルモジュール拡張構成において第３レベルモジュールを追加設置した例を示す図であり、図４は、縦列接続拡張構成において基本構成を２段階に縦列接続した例を示す図である。
【０１２４】
図３に示すように、第Ｎレベルモジュール拡張構成では、当該基本構成の第１レベルモジュールと第２レベルモジュールに対して、第３レベルモジュールから第Ｎレベルモジュール（Ｎ＞３）までの少なくとも１レベルを追加設置し、さらに関連する抽象化モジュール、機能検証モジュール、機能縮退モジュールを付加した構成とする。多階層モデルの表現レベルが、３つ以上の場合に該当する。第Ｎレベルモジュール拡張構成において、第３レベルモジュールを追加設置した例を、図３に示すシステム構成では示している。
【０１２５】
つまり、図３に示すように、拡張された冗長システムでは、図２の基本構成のシステム要素の構成に加えて、第３レベルモジュール６０、第２−３レベル抽象化モジュール６３、第２−３レベル機能検証モジュール６４、および第２レベル機能縮退モジュール６５が更に設けられている。
【０１２６】
拡張された冗長システムは、第１レベルモジュール１０、第２レベルモジュール２０、第１−２レベル抽象化モジュール３０、第１−２レベル機能検証モジュール４０、第１レベル機能縮退モジュール５０、第３レベルモジュール６０、第２−３レベル抽象化モジュール６３、第２−３レベル機能検証モジュール６４、および第２レベル機能縮退モジュール６５から構成される。
【０１２７】
これらの追加されたシステム構成要素は、基本システムのそれと同様である。すなわち、第３レベルモジュール６０は、図示されないが、第３レベルデータ処理手段と第３レベルデータ通信手段およびそれぞれに付加された誤り検出手段から構成されており、第２レベルモジュール２０と第３レベルモジュール６０の間に介在する第２−３レベル抽象化モジュール６３は、抽象化手段から構成される。また、第２−３レベル機能検証モジュール６４は、第２レベルモジュールの出力データを抽象化する抽象化手段、抽象データと第３レベルモジュールの出力データとを比較照合する照合手段、および抽象データと第３レベルモジュールの出力データから第３レベル出力結果を選ぶ選択制御手段から構成される。
【０１２８】
また、第２レベル機能縮退モジュール６５は、第３レベルデータから第２レベルデータにデータを復元する逆抽象化手段と、復元されたデータと第２レベルモジュールの出力データから第２レベル出力結果を選ぶ選択制御手段とから構成される。
【０１２９】
図４に示すように、縦列接続の拡張構成では、前述した冗長システムの基本構成（あるいは第Ｎレベルモジュール拡張構成）をデータの流れにそって縦列に接続する構成である。いくつかの処理ノードを経由してデータが処理あるいは通信される場合に該当する。基本構成のシステムを２段階に縦列接続した縦続接続の拡張構成のシステム構成の一例が、図４に示されている。
【０１３０】
拡張された冗長システムでは、図４に示すように、図２の基本構成のシステム要素の構成に加えて、縦続に接続するシステム構成として、基本構成システムと同様なシステム構成を加えている。ここでは、第１レベルモジュール７１、第２レベルモジュール７２、第１−２レベル機能検証モジュール７４、および第１レベル機能縮退モジュール７５が更に設けられている。
【０１３１】
縦続接続で拡張された冗長システムは、第１レベルモジュール１０、第２レベルモジュール２０、第１−２レベル抽象化モジュール３０、第１−２レベル機能検証モジュール４０、第１レベル機能縮退モジュール５０、第１レベルモジュール７１、第２レベルモジュール７２、第１−２レベル機能検証モジュール７４、および第１レベル機能縮退モジュール７５から構成される。これらの追加されたシステム構成要素は、基本システムのそれと同様である。
【０１３２】
次に、基本構成を拡張した、第Ｎレベルモジュール拡張構成、および縦列接続拡張構成の各モジュール内の処理内容については、基本構成のシステムで説明した内容と同様なので、詳細なついては省略する。
【０１３３】
第Ｎレベルモジュール拡張構成（図３）では、当該基本構成の機能検証と機能縮退が複数のレベルで同時並行的に実行される。そのため、第１レベルモジュールと第２レベルモジュール（第Ｎ−１レベルモジュール）にフォールトが発生しても機能縮退することができる。
【０１３４】
また、縦列接続拡張構成（図４）では、冗長システムの基本構成の機能検証と機能縮退が複数の箇所（複数の処理ノード）で行われるので、複数のフォールトが（各処理ノードの第１レベルモジュールか第２レベルモジュールのどちらかで）発生しても機能縮退することができる。
【０１３５】
次に、より具体的な実施例の一つとして、本発明による冗長システムを、画像データの伝送システムに適用した応用システムについて説明する。
【０１３６】
例えば、施設に出入りする来客者を確認する目的で施設入口にビデオカメラを設置し、距離的に離れた受付や待機場所に置いたモニタテレビに来客者の姿を表示する応用システムを、冗長システムに構成するシステム構成の一例である。冗長化した応用システムの構成を、図８に示している。
【０１３７】
図８では、図２により説明した基本構成の冗長システムを、各モジュールおよび各手段（構成要素）を具体化している。具体化の過程を明確にするために、以下の説明では、図８に示すシステム構成と図２に示すシステム構成とは、モジュール名および手段名を同じにして説明する。
【０１３８】
図８において、ビデオカメラ５０１からの動画像は画像入力装置５０２によって、６４０×４８０画素の毎秒３０フレームのＪＰＥＧ方式で圧縮されたカラーの静止画データに変換される。また、画像入力装置５０２は、この静止画データに対して単調増加変数とＣＴ変数を付与する。単調増加変数とＣＴ変数が付与された画像データが第１レベルデータとなる。
【０１３９】
この段階での具体化の過程をまとめる。単位データは、ＪＰＥＧ方式で圧縮された１画面分の画像データである。単調増加変数の値は、ビデオカメラから画像データを取得した時間を、０．０１秒単位で表した整数値とする。ＣＴ変数の値（ＣＴ値）は、初期値１．０の実数値であり、抽象化、逆抽象化およびフォールト検出によって、次のように変化するものとする。
（１）抽象化手段を経由するとＣＴ値を０．９倍する（（４ａ）のＣＴ値の変化に対応している）。
（２）逆抽象化手段を経由するとＣＴ値を０．９倍する（（４ｂ）のＣＴ値の変化に対応している）。
（３）誤りを検出するとＣＴ値を０にする（（４ｃ），（４ｄ）のＣＴ値の変化に対応している）。
【０１４０】
各モジュールおよび各手段の具体的な処理内容を説明すると、第１レベルモジュール５１０において第１レベルデータ処理手段５１１は、第１レベルデータを１／３にコマ落とし処理するプログラムである。６４０×４８０画素の毎秒３０フレームの画像データを６４０×４８０画素の毎秒１０フレームの画像データに変換する。第１レベルデータ通信手段５１２は、毎秒１００メガビットのローカルエリアネットワークと制御プログラムであり、６４０×４８０画素の毎秒１０フレームの画像データをモニタテレビ側に伝送する。また、第１レベルモジュールの誤り検出手段（図示せず）は、例えば、コマ落とし処理プログラムからのエラー情報と毎秒１００メガビットのローカルエリアネットワークからの通信エラーを集約するプログラムである。
【０１４１】
第１−２レベル抽象化モジュール５３０における抽象化手段（図示せず）は、次の３つの操作を実行する。
（１）カラーの画像データから輝度信号を抽出してモノクロの画像データへ変換する操作（操作（１ａ）の特定の属性に関する情報を抽出する操作に対応している）。
（２）１秒当たりのフレーム数を１／１０にする操作（操作（１ｂ）の時間的な標本間隔を広くする操作に対応している）。
（３）画面サイズをＸ軸Ｙ軸それぞれの方向に１／２にする操作（操作（１ｃ）の空間的な標本間隔を広くする操作に対応している）。
【０１４２】
したがって、第２レベルデータは、第１レベルデータである６４０×４８０画素の毎秒３０フレームのカラー画像データに、抽象化操作されて３２０×２４０画素の毎秒３フレームのモノクロ画像データとなる。
【０１４３】
第２レベルモジュール５２０の第２レベルデータ処理手段５２１は、第２レベルデータを１／３にコマ落とし処理するプログラムである。３２０×２４０画素毎秒３フレームのモノクロ画像データを３２０×２４０画素毎秒１フレームのモノクロ画像データに変換する。第２レベルデータ通信手段５２２は、毎秒１０メガビットのローカルエリアネットワークと制御プログラムであり、３２０×２４０画素毎秒１フレームのモノクロ画像データをモニタテレビ側に伝送する。
【０１４４】
また、第２レベルモジュールの誤り検出手段（図示せず）は、例えば、コマ落とし処理プログラムからのエラー情報と毎秒１０メガビットのローカルエリアネットワークからの通信エラーを集約するプログラムである。
【０１４５】
第１−２レベル機能検証モジュール５４０の抽象化手段は、第１−２レベル抽象化モジュール５３０の抽象化手段と同じ操作を実行する。第１−２レベル機能検証モジュール５４０の照合手段は、図５により説明したような照合手順を実行する。なお、照合手段においては、入力毎に画像データを少なくとも１秒間バッファに保持する（Ｔｄ＝１ｓｅｃに相当）。また、単位データの内容の一致比較については、ＪＰＥＧ方式で圧縮された画像データのデータ量が内容によって変化することを利用して、データ量だけの比較で代替する。第１−２レベル機能検証モジュール５４０の選択制御手段は、図６により説明したような選択制御手順を実行する。
【０１４６】
第１レベル機能縮退モジュール５５０における逆抽象化手段は、次の２つの操作を実行する。
（１）１秒当たりのフレーム数を補間によって１０倍にする（（３ｂ）の時間的な標本間隔の間のデータを補間する操作に対応している）。
（２）画素数をＸ軸Ｙ軸それぞれの方向に２倍にする（（３ｃ）の空間的な標本間隔の間のデータを補間する操作に対応している）。
なお、ここでは（３ａ）に対応する操作はない。つまり、復元画像データはモノクロ画像である。
【０１４７】
第１レベル機能縮退モジュール５５０の選択制御手段は、図７により説明したような選択制御手順を実行する。モニタテレビ５０３は、第１レベル機能縮退モジュール５５０の選択制御手段の出力結果を映像として表示する。
【０１４８】
（応用システムの動作例）
応用システムの典型的な動作を次に説明する。特に、ＣＴ値の比較による、第１レベル機能縮退モジュールの選択制御手段でのより確からしいデータの選択の様子を中心にして述べる。
【０１４９】
（動作例１（機能検証））
フォールトが検出されていない場合：
第１レベル機能縮退モジュールの選択制御手段は、第１レベルデータを選ぶ。なぜなら、復元データは抽象化と逆抽象化を経由しているので、ＣＴ値＝０．８１となり、第１レベルデータのＣＴ値＝１．０が大きくなるためである。
【０１５０】
モニタテレビ５０３はビデオカメラ５０１からの映像を６４０×４８０画素毎秒１０フレームでカラー表示する。
【０１５１】
なお、機能検証のための画像データの照合は常時実行され、「フォールトなし」との結果が（コンソール等に）出力される。
【０１５２】
（動作例２（機能縮退））
第１レベルモジュールでフォールトが発生した場合：
第１レベル機能縮退モジュールの選択制御手段は、復元データを選ぶ。なぜなら、第１レベルデータのＣＴ値はフォールト発生によりＣＴ値＝０となり、復元データのＣＴ値＝０．８１が大きくなるためである。
【０１５３】
モニタテレビ５０３はビデオカメラ５０１からの映像を（３２０×２４０画素毎秒１フレームの画像データから復元して）６４０×４８０画素毎秒１０フレームでモノクロ表示する。同時に「第１レベルモジュールにフォールトあり」との結果が（コンソール等に）出力される。
【０１５４】
（動作例３）
第２レベルモジュールでフォールトが発生した場合：第１レベル機能縮退モジュールの選択制御手段は、第１レベルデータを選ぶ。なぜなら、第２レベルデータのＣＴ値は０であり、逆抽象化後もＣＴ値が０になるので、第１レベルデータのＣＴ値＝１．０が大きくなるためである。
【０１５５】
モニタテレビ５０３は、ビデオカメラ５０１からの映像を６４０×４８０画素毎秒１０フレームでカラー表示する。同時に「第２レベルモジュールにフォールトあり」との結果が（コンソール等に）出力される。
【０１５６】
【発明の効果】
以上に説明した本発明による冗長システムによれば、以下の（効果１）から（効果４）の効果を奏することできる。
（効果１）
冗長システムに構成する前段階のシステムと同じモジュールを多重化するのではなく、基本モジュールに対して情報量を縮減したデータを扱う冗長モジュールを多重化することで、所要リソースの増大は抑制される。
【０１５７】
（効果２）
データ処理手段や通信手段に個別に設置した誤り検出手段および抽象データの等価性を検証する照合手段を利用することによって、ハードウェアの故障はもちろん、ソフトウェアのバグ、設計ミス、過負荷、輻輳等を含む広義の障害を検出することができる。
【０１５８】
（効果３）
フォールトが検出された場合に、その発生要因や発生箇所に応じて、抽象データから復元されたデータを出力結果とすることで、広義の障害に対して機能縮退することができる。
【０１５９】
（効果４）
冗長システムに構成する前段階のシステムの構成に応じて、第Ｎレベルモジュール拡張構成あるいは縦列接続拡張構成への拡張が可能になる。拡張した構成では、複数のフォールトに対しても機能縮退することができる。
【０１６０】
以上の効果により、所要リソースを抑制しながら、正常時にシステム機能検証を実行し、フォールト発生時に機能縮退を実行する冗長システムを容易に構成することできる。
【図面の簡単な説明】
【図１】本発明の基本的な構成手順を示す図、
【図２】本発明の実施形態の冗長システムの基本構成を示す図、
【図３】第Ｎレベルモジュール拡張構成において第３レベルモジュールを追加設置したシステム構成を示す図、
【図４】縦列接続拡張構成において基本構成を２段階に縦列接続したシステム構成を示す図、
【図５】出力結果の時間差を考慮した照合手順を示すフローチャート、
【図６】選択制御手段４３の選択制御手順を示すフローチャート、
【図７】選択制御手段５２の選択制御手順を示すフローチャート、
【図８】実施例としての応用システムの構成を示す図である。
【符号の説明】
１…第１レベル入力データ
２…第１レベル出力結果
３…第２レベル出力結果
１１…第１レベルデータ処理手段
１２…第１レベルデータ通信手段
１３…誤り検出手段
１４…誤り検出手段
２０…第２レベルモジュール
２１…第２レベルデータ処理手段
２２…第２レベルデータ通信手段
２３…誤り検出手段
２４…誤り検出手段
３０…第１−２レベル抽象化モジュール
３１…抽象化手段
４０…第１−２レベル機能検証モジュール
４１…抽象化手段
４２…照合手段
４３…選択制御手段
５０…第１レベル機能縮退モジュール
５１…逆抽象化手段
５２…選択制御手段
６０…第３レベルモジュール
６３…第２−３レベル抽象化モジュール
６４…第２−３レベル機能検証モジュール
６５…第２−３レベル機能縮退モジュール
７１…第１レベルモジュール
７２…第２レベルモジュール
７４…第１−２レベル機能検証モジュール
７５…第１レベル機能縮退モジュール
【図１】
2004178048.tif 000003
【図２】
2004178048.tif 000004
【図３】
2004178048.tif 000005
【図４】
2004178048.tif 000006
【図５】
2004178048.tif 000007
【図６】
2004178048.tif 000008
【図７】
2004178048.tif 000009
【図８】
2004178048.tif 000010