(57)【特許請求の範囲】
【請求項１】
少なくとも二つの計算素子と少なくとも一つのコントローラとから成るコンピュータシステムであって、計算素子各々は他の計算素子のクロックに対して非同期的に作動するクロックを備えているコンピュータシステムにおける少なくとも二つの計算素子を同期させる方法であって、
前記コントローラが、複数の計算素子を監視し且つ複数の計算素子によって発生される複数の信号から選択された或る信号が複数の計算素子の一つによって発生されたことを検出する段階と、
前記コントローラが、前記複数の計算素子の一つによって前記或る信号が発生されたことを検出した後に、前記複数の計算素子の他のものによって前記或る信号が発生されることを待合わせる段階と、
前記コントローラが、複数の計算素子全部から前記或る信号が発生されたことを検出した後に、前記コントローラが等時間更新を前記複数の計算素子の各々へ送信する段階と、
前記計算素子の各々が前記等時間更新に基づいてクロックを更新する段階と、で構成される方法。
【請求項２】
前記コンピュータシステムが、少なくとも二つの計算素子と少なくとも二つのコントローラとから成り、少なくとも二つのコントローラの各々が、少なくとも二つの計算素子の各々に接続されており、故障からの立直りの速いコンピュータシステムが形成されていることを特徴とする請求の範囲第１項に記載の方法。
【請求項３】
前記選択された或る信号には、入出力要求が含まれることを特徴とする請求の範囲第１項に記載の方法。
【請求項４】
前記送信する段階が、
少なくとも一つのコントローラが、入出力要求を処理して入出力応答を生成する段階と、
少なくとも一つのコントローラが、入出力応答をもつ等時間更新を少なくとも二つの計算素子へ送信する段階と、
で構成されることを特徴とする請求の範囲第３項に記載の方法。
【請求項５】
前記選択された或る信号には、量子割込みと入出力要求とが含まれることを特徴とする請求の範囲第１項に記載の方法。
【請求項６】
前記選択された或る信号には、量子割込みが含まれることを特徴とする請求の範囲第１項に記載の方法。
【請求項７】
前記量子割込みが、計算素子におけるクロック周期を計数する段階によって各計算素子によって発生されることを特徴とする請求の範囲第６項に記載の方法。
【請求項８】
クロック周期を計数する前記段階は、システムクロックと入出力クロックとバスクロックとの中の選択された一つのクロックの周期を計数することを含むことを特徴とする請求の範囲第７項に記載の方法。
【請求項９】
前記クロック周期を計数する段階が、
前記複数の計算素子が、予め決定された値を計算素子各々の計数器にロードする段階と、
入出力要求が、計算素子各々の計数器をイネーブルにする段階と、
計算素子各々のクロック周期が、計数器の値を減分する段階と、
計算素子の計数器の値がゼロに達したときに、計算素子が量子割込み信号を前記コントローラに送る段階と、
で構成されることを特徴とする請求の範囲第７項に記載の方法。
【請求項１０】
前記量子割込みが、各計算素子における実行された命令を各計算素子で計数することによって発生されることを特徴とする請求の範囲第６項に記載の方法。
【請求項１１】
前記量子割込みが、各計算素子のデバッグ機構を使用して各計算素子によって発生されることを特徴とする請求の範囲第６項に記載の方法。
【請求項１２】
前記送信する段階が、前記コントローラが、計算素子によって生成された前記選択された或る信号のリストを計算素子毎に維持する段階を含み、前記等時間更新が、各計算素子のリストに共通の入力があるときにコントローラから各計算素子に送信されることを特徴とする請求の範囲第１項に記載の方法。
【請求項１３】
前記送信する段階が、
前記コントローラは、計算素子によって発生させられた前記選択された或る信号同士およびその信号に付随するデータがあればそのデータ同士を比較する段階と、
前記コントローラは、前記選択された或る信号同士か付随のデータ同士かが不一致の場合故障が発生したことを示す段階と、
を更に含むことを特徴とする請求の範囲第１項に記載の方法。
【請求項１４】
前記検出する段階が、
前記コントローラは、計算素子が前記選択された或る信号を発生した後に各計算素子の動作を停止させる段階を含み、
前記送信する段階が、
前記コントローラは、等時間更新の計算素子による受信と同時に計算素子の動作を再開させる段階を含むことを特徴とする請求の範囲第１項に記載の方法。
【請求項１５】
前記選択された或る信号を発生した後に計算素子が動作を継続することを特徴とする請求の範囲第１項に記載の方法。
【請求項１６】
計算素子の非同期的アクティビティがディスエーブルにされており、
計算素子が前記選択された或る信号を生成したときに、計算素子が、非同期的アクティビティを実行することを特徴とする請求の範囲第１項に記載の方法。
【請求項１７】
前記非同期的アクティビティが通常のメモリリフレッシュ機能であり、
前記非同期的アクティビティを実行することが、前記選択された或る信号が生成されたときにバーストメモリリフレッシュを実行することであることを特徴とする請求の範囲第16項に記載の方法。
【請求項１８】
ゲートの入力値が変化するものとするモードへ、通常のメモリリフレッシュ機能に用いられる計数機を設定し、
固定電圧にゲートを接続することにより、
メモリリフレッシュ機能がディスエーブルにされていることを特徴とする請求の範囲第17項に記載の方法。
【発明の詳細な説明】
発明の背景
本発明は故障からの立直りが速くしかも故障に対する耐性がある計算方法と装置とに係わる。
故障からの立直りの速いコンピュータシステムはハードウェア傷害が存在しても機能し続けられる。これらのシステムは、可用性モードと保全性モードのどちらかで作動する両方ででは作動しない。システムは、ハードウェア傷害がユーザのアクセスに容認できない遅延を引起こさなければ、「使用可能」である。また、可用性モードで作動するシステムは、ハードウェア傷害に直面したときにも可能な限りオンラインのままであるように構成される。システムは、ハードウェア障害がデータの損失や変造を何も引起こさなければ、データ保全性を持っている。また、保全性モードで作動するシステムは、そのためにオフラインにならなければならないとしてもデータの損失や変造を回避するように構成される。
故障に対する耐性があるシステムは可用性と保全性の両方に重点を置いている。耐故障システムは、単一のハードウェア障害に直面したときには使用可能のままでありデータ保全性を維持する。また、状況によっては、多重のハードウェア障害に直面したときにもそうである。
災害に対する耐性があるシステムは耐故障システムの一歩先を行くものである。また、このシステムによれば、自然の災害あるいは人災による計算処理現場の損失によって、システムの可用性が中断されたりデータが変造されたり失われたりしないことになっている。
故障に対する耐性の先行例の方法には、ソフトウェアチェックポイント／再始動、三重モジュール冗長およびペア／スペアなどがある。
チェックポイント／再始動システムは、非同期的に作動し異なるアプリケーションを実行する二つ以上の計算素子を用いる。各アプリケーションは、自身が走行する計算素子の状態の画像を定期的に格納する（チェックポイント）。計算素子における故障が検出されると、チェックポイントを用いて別の計算素子上（あるいは、故障が修正された後ならば同じ計算素子上）のアプリケーションを再始動させる。チェックポイント／再始動システムを実現するためには、そのシステム上で走行させるアプリケーションおよび／あるいはオペレーティングシステム各々を、システムの画像を定期的に格納するように変更しなければならない。加えて、システムは「後戻り」ができなければならない（すなわち、再始動させられたチェックポイントに続いて発生した動作の効果を取消すことができなければならない）。
三重モジュール冗長の場合、三つの計算素子が同一のアプリケーションで走行し周期毎に作動される。計算素子全部が、三つの計算素子の出力（すなわち、メモリインターフェイス）を比較して、出力全部が同じものであれば、通常動作を継続するという票決ロジックブロックに接続されている。出力の一つが異なる場合、票決ロジックは、異なる出力を生成した計算素子をダウンさせる。票決ロジックは、計算素子とメモリとの間に配置されるがシステム速度に強い影響を及ぼす。
ペア／スペアシステムは、同一のアプリケーションを走行させて周期毎に作動させられる二つ以上の計算素子対から成る。コントローラは対になった計算素子各々の出力（すなわち、メモリインターフェイス）を監視する。出力が異なる場合、対になった計算素子が両方ともダウンさせられる。
発明の概要
本発明によれば、故障からの立直りが速くしかも／あるいは故障に対する耐性があるシステムは、実時間で非同期的に作動し（すなわち、周期毎に）いわゆる「メタ時刻」に同期的に作動する少なくとも二つの計算素子（CE）を使用することによって達成される。これらのCEは、CE上で走行しているアプリケーションが変わることなくメタ時刻間に非同期的に走行させるのに充分頻繁に発生するメタ時刻に同期させられる。例えば、CEは、毎秒一回同期させられ、あとは非同期的に走行する。CEはメタ時刻毎に再度同期させられるので、CEはメタ時刻単位に作動すると言える。
具体的な実施例においては、メタ時刻は、CEが入出力動作を要求する時刻と定義される。これらの実施例においては、CEは、入出力動作の終了の度に同期させられ入出力動作間に非同期的に走行する。この方法は、同一のアプリケーションを走行させる少なくとも二つの非同期計算素子が常に同一の順序で入出力要求を発生させるというシステムに適用可能である。この方法は、更に、処理環境（すなわち、書込み要求）を変更するための入出力要求の後のみの再同期に限定される。
本発明に係わるメタ時刻同期は、アプリケーションとオペレーティングシステムソフトウェアとには見えない対モジュール冗長アーキテクチャを使用することによって達成される。このアーキテクチャによれば、各CEは、コントローラそうでなければ入出力プロセッサ（IOP）として知られるものと組合わされる。IOPは、CEによって要求されCEへ向けられる入出力動作を実行し、ハードウェア故障を検出し、入出力動作の終了の度にCE同士を同期させる。入出力要求が充分な頻度で発行されないシステムにおいては、IOPは、CEに接続されたプロセッサ間相互接続（IPI）モジュールによって発生させられるいわゆる「量子割込み」に応じて定期的にCE同士を同期させる。
本発明の別の具体的な実施例においては、具体的な入出力動作に基づいてCEを同期させる代わりに、入出力動作ウィンドウに基づいてCEを同期させる。この方法では、入出力動作リストがCE毎に保持され、共通の入力がリスト全部に出現する度にCEが同期させられる。この方法は、入出力要求が発生させられる順序については柔軟性を与える。
本発明の更に別の具体的実施例においては、CEは、オペレーティングシステムによって定期的に発生させられる信号かハードウェアで発生させられる割込みかに基づいて同期させられる。例えば、ハードウェア割込み法の場合、各CEのプロセッサを変更してＮ周期毎に割込みを発生させるようにし、その割込みに応じてCEを同期させる。
対モジュール冗長システムの主な構成要素は、ソフトウェア、規格品のIOP、規格品のCEおよびIOPとCEの拡張スロットへ差込まれケーブルによって相互に接続された特注のIPIモジュール対から成る。冗長入出力装置は、一つ以上のCEかIOPかに接続されて冗長入出力を提供し、重要な大容量記憶装置のボリューム陰影処理機構などの機構を提供する。対モジュール冗長システムは、システムのIOPを実現する際に用いるプロセッサに対する互換性がある入出力装置ならどれでも収容可能である。
対モジュール冗長アーキテクチャは、特注のソフトウェアとハードウェアを最長限使用して少なくとも二つの規格品の計算素子を、ウィンドウズNT、DOS、OS/2、UNIXなどの業界標準のオペレーティングシステムと未変更アプリケーションとを走行させる故障からの立直りが速いか故障に対する耐性があるシステムに組み込ませることができるようにする。このアーキテクチャは、コスト高および先行技術で用いられる登録商標のオペレーティングシステムやアプリケーションやプロセッサの設計の非柔軟性の両方を回避できる。
本発明の対モジュール冗長アーキテクチャの別の優位性は、ある程度のソフトウェア故障に対する耐性を提供できる点である。ソフトウェアエラーの大半はアルゴリズムに関するものではない。そうではなく、エラーはたいてい入出力競争状態の原因となる計算素子と入出力装置との間の非同期生に起因する。入出力要求を計算素子から切離すことによって、対モジュール冗長アーキテクチャは、そのような非同期性に由来するいわゆる「Heisenbug」ソフトウェアエラーの個数を実質的に削減できる。
一つの側面によれば、通常、本発明は、少なくとも一つのコントローラを使用して、他の計算素子のクロックに対して非同期的に作動するクロックを備えた計算素子少なくとも二つを同期させることによって、故障からの立直りが速いか故障に対する耐性があるコンピュータを形成することを特徴とする。メタ時刻信号として指定された一つ以上の信号が、計算素子によって生成された信号組の中から選択される。その後、計算素子を監視して一方の計算素子による選択信号の生成を検出する。選択信号が検出されると、システムは、他の計算素子による選択信号の生成を待合わせる。そして、選択信号を受信すると同時に、計算素子各々へ等時間更新を送信する。その後、計算素子のクロックが時間更新に基づいて更新される。
本発明の優先的実施例は以下の特徴を有する。第一に、入出力要求は選択信号である。入出力要求を処理して、時間更新で送信される入出力応答を生成する。入出力要求の他にあるいは代わりに、量子割込みを選択信号にできる。計算素子は、実行命令か、システムクロック、バスクロックあるいは入出力クロックなどのクロックの周期かのどちらかを計数して、予め規定された個数の命令か周期かが発生する度に量子割込みを発生させる。入出力要求と量子割込みの両方を選択信号として用いる場合、計算素子は入出力要求なしに発生する命令か周期かの個数を計数する。例えば、入出力要求を発生させずに１００周期分の処理を行う度に量子割込みを発生させるように計算素子をプログラムしてもよい。
一つの実施例では、予め決定された値を計数器にロードし、入出力要求でその計算器をイネーブルにし、計算器の値を減分させ、計算器の値がゼロに達したときに量子割込み信号を送ることによって、命令が計数される。別の方法では、プロセッサのデバッグ機構を用いて量子割込みを発生させる。
故障検出のために、計算素子各々からの選択信号と付随のデータがあればそのデータとを比較する。それらが一致しなければ、故障が発生したことを知らせるための信号が発生される。
ある実施例においては、計算素子は、選択信号を生成した後休止して時間更新を待合わせる。計算素子は時間更新を受信すると同時に作用を再開する。他の実施例においては、計算素子は選択信号を生成した後も動作し続ける。
計算素子の非同期アクティビティによって引起こされる問題点を回避するために、非同期アクティビティをディスエーブルにする。例えば、通常のメモリリフレッシュ機能をディスエーブルにして、その代わりに、バーストメモリリフレッシュを入出力要求や量子割込みなどの選択信号が生成される度に実行する。
本発明は、また、計算素子として第一プロセッサを指定し、コントローラとして第二プロセッサを指定し、計算素子とコントローラとを接続してモジュール対を作成することによって、故障からの立直りが速いか故障に対する耐性があるコンピュータを作成する方法を特徴とする。その後、少なくとも二つのモジュール対を接続して故障からの立直りが速いか故障に対する耐性があるコンピュータを作成する。計算素子用のプロセッサは互いに全く同じである必要はないが、命令セット中の各命令を別のプロセッサと同じ周期数単位で実行することが好ましい。一般的には、業界標準プロセッサを用いて計算素子とコントローラとを実現する。災害に対する耐性のために、少なくとも一つのモジュール対を他のモジュール対から遠く離して配置させる。コントローラと計算素子とは各々未変更の業界標準オペレーティングシステムとアプリケーションとを走行させることができる。更に、コントローラーは、計算素子が同時に第二オペレーティングシステムを走行させるのに対し、第一オペレーティングシステムを走行させることができる。
入出力故障からの立直りの速さは、冗長入出力装置を少なくとも二つのモジュール対に接続して少なくとも同一の入出力書込み要求とデータとを冗長入出力装置へ送信することによって達成される。入出力読取り要求は入出力装置のどれか一つに送信されるだけなのに、同一の入出力読取り要求はデータ保全性を検証するために入出力装置の内の一つ以上の装置へ送信される。冗長入出力装置を三つ以上のモジュール対に接続すると、同一の入出力要求の送信で故障した入出力装置の同定ができる。
別の側面によれば、一般的に、本発明は、入出力リダイレクト処理を使用することによってコンピュータ内で計算処理動作から入出力要求を隔離することを特徴とする。通常、入出力装置は、低レベル入出力要求を用いるか入出力装置を直接アドレス指定することによってアクセスされる。低レベル入出力要求には、システムの基本入出力システム（BIOS）へ要求とブートファームウェア要求とブートソフトウェア要求とシステムの物理的な装置のドライバソフトウェアへの要求とが含まれる。計算素子が低レベル入出力要求を発行する場合、本発明は、入出力プロセッサへ入出力要求をリダイレクトするソフトウェアを使用することを特徴とする。直接にアドレス指定された入出力要求は中途妨害され仮想入出力装置へ供給される。定期的に、仮想入出力装置の内容が入出力要求として入出力プロセッサへ送信される。入出力プロセッサでは、送信された仮想入出力装置の内容が物理的入出力装置へ供給される。要求された入出力動作が実行された後に、動作の結果があればそれが入出力要求に対する応答として計算素子へ返送される。一般的に、仮想入出力装置は仮想キーボードと仮想表示器とから成る。
本発明は、また、互いに接続され少なくとも二つの計算素子に接続された少なくとも二つのコントローラーと、コントローラの少なくとも二つに接続された計算素子少なくとも二つとから成るコンピュータシステムにおける故障を検出し診断することを特徴とする。各計算素子は、データを生成しそのデータに関連するエラー検査コードなどの値を発生させる。その後、各計算素子は、その計算素子が接続された少なくとも二つのコントローラへデータを対応する値と共に送信する。データと付随の値とを受信すると、コントローラはその値を他のコントローラへ送信する。各コントローラは、各計算素子に対応する値と各コントローラに対応する値とに対して計算を実行する。各コントローラに対応する値に対する計算の結果が互いに等しく、各計算素子に対応する値に対する計算の結果が互いに等しいならば、故障は何も存在しない。その他の場合は故障が存在する。場合によっては、計算とは単純なビット毎の比較でもよい。
故障が存在する場合、一つの計算素子に対応する値全部を計算素子毎に比較することによって故障診断を試みる。各計算素子に対応する値が計算素子毎に一致し計算素子間で不一致であれば、計算素子のどれか一つが故障している。計算素子のどれか一つだけに対応する値が互いに不一致ならば、その計算素子への経路が故障している。多数の計算素子に対応する値が互いに不一致ならば、その不一致の計算素子に接続されたコントローラが故障している。同定されると、故障素子はディスエーブルにされる。
本発明に係わるシステムは、故障素子（すなわち、CE、IOP、記憶装置など）が修復された後完全機能状態へ復旧する。システムは、活動素子の状態を修復された素子へ転送してから、修復された素子を再度イネーブルにすることによってそうなる。活動プロセッサ一個あるいは複数個の作動状態を非活動プロセッサへコントローラを介して転送することによって、非活動プロセッサあるいは修復されたプロセッサを起動する。非活動プロセッサが計算素子である場合、活動計算素子一個（あるいは複数個）の作動状態がコントローラを介して転送される。非活動プロセッサがコントローラである場合、活動コントローラの作動状態が直接転送される。この転送は、システム運用が休止したときあるいは背景プロセスとして発生する。
この回復機能は、オフにするなどしてシステムのプロセッサが働かなくなるようにすることによって、ハードウェアかソフトウェアあるいはそれら両方のオンライン格上げを提供するためにも使用される。格上げは、ディスエーブルにされたプロセッサを交換あるいは変更することによって実行される。格上げされたプロセッサをオンにして先に考案したように再起動させる。
本発明は、また、コントローラが二つの計算素子に接続された単一コントローラ二重計算素子システムを特徴とする。このコンピュータシステムでは、計算素子による入出力動作が中途妨害されコントローラへリダイレクトされる。一般的には、コントローラと二つの計算素子とは、各々、業界標準のマザーボードを備えており、未変更の業界標準オペレーティングシステムとアプリケーションとを走行させることができる。コントローラは、計算素子同士が同時に第二オペレーティングシステムを走行させるのに対し、第一オペレーティングシステムを走行させることができる。
単一コントローラシステムは、第一コントローラと二つの計算素子の両方に接続された第二コントローラを有するように拡張させることができる。制限された災害からの立直りの速さのために、第一コントローラと計算素子の一方とを第二コントローラと他方の計算素子から遠く離れた位置に設置することができる。また、通信リンクによって第二コントローラと他方の計算素子とに接続することもできる。
可用性と性能との向上のために、二重コントローラ二重計算素子システムを全く同じ第二システムに接続することができる。二つのシステムは、一方のシステムが第一アプリケーションの第一部分を走行させ他方のシステムが第二アプリケーションか第一アプリケーションの第二部分かを走行させるという分散型計算環境を走行させる。
別の実施例においては、本発明は、互いに接続された三つのコントローラとそれら三つのコントローラの異なる一対に接続される計算素子三つとから成るコンピュータシステムを特徴とする。このシステムは、他のシステムと同様に、計算素子によって入出力動作を中途妨害したコントローラへリダイレクトして処理させる。災害からの立直り速さのために、第一コントローラと計算素子の一方とを残りのコントローラと計算素子とから遠く離れた位置に設置する。あるいは、各コントローラ／計算素子対を異なる位置に設置する。
耐災害システムは、上記の三つのコントローラシステムのうちの少なくとも二つを接続することによって作成される。三つのコントローラシステムは、遠く離れた位置に設置され通信リンクによって接続される。
【図面の簡単な説明】
図１は部分的に故障からの立直りの速いシステムのブロック図である。
図２は図１のシステムのシステムソフトウェアのブロック図である。
図３は図２のシステムソフトウェアのIOPモニタによって使用される手順の流れ図である。
図４は図１のシステムのIPIモジュールのブロック図である。
図５は図１のシステムの状態遷移表である。
図６は故障からの立直りの速いシステムのブロック図である。
図７は故障からの立直り速い分散型システムのブロック図である。
図８は耐故障システムのブロック図である。
図９は図８のシステムのIOPによって使用てされる故障診断手順の流れ図である。
図１０は耐災害システムのブロック図である。
優先的実施例の説明
図１に示すように、故障からの立直りの速いシステム１０は、入出力プロセッサ（IOP１２と二つの計算素子（CE）１４ａと１４ｂ（集合的にCE１４で示す）とから成る。システム１０は単一IOP１２のみを備えているのでIOP１２の障害から回復できないため、システム１０は全然故障に対する耐性がない。
IOP１２は、ケーブル２０ａと２０ｂによってCE１４の対応するIPIモジュール１８ａと１８ｂに接続された二つのプロセッサ間相互接続（IPI）モジュール１６ａと１６ｂを備えている。IOP１２は更に、プロセッサ２２とメモリシステム２４と二つのハードディスク駆動機構２６と２８と電源３０とを備えている。同様に、各CE１４は、プロセッサ３２とメモリシステム３４と電源３６とを備えている。別々の電源３６を使用することで電源障害という事態における故障からの立直りの速さを保証している。プロセッサ３２ａと３２ｂは、プロセッサ３２ａが一つの命令を実行するのに必要な周期数が、全ての命令に対して、プロセッサ３２ｂが同一の命令を実行するのに必要な周期数と同じであるという点で、互いに「全く同じ」である。図示の実施例においては、システム１０は、標準のインテル４８６基盤マザーボードがプロセッサ２２と３２およびメモリシステム２４と３４各々のメモリの４メガバイト分として用いることで実現されたものである。
システム１０のIOP１２とCE１４とは、IOP用のブートディスクとして用いられるハード駆動機構２６とCE１４用のブートディスクとして用いられるハード駆動機構２８とによって、未変更のオペレーティングシステムとアプリケーションソフトウェアとを走行させる。少なくとも二つのIOPを備えた眞に故障からの立直りが速いか故障に対する耐性があるシステムにおいては、各ハード駆動機構も二重化される。
図示の実施例においては、IOP１２とCE１４とのオペレーティングシステムはDOSである。しかし、他のオペレーティングシステムを使用することもできる。また、IOP１２は、CE１４によって走行させられたものとは異なるオペレーティングシステムを走行させる。例えば、IOP１２は、CE１４がDOSを走行させているのに対し、UNIXを走行させられる。この方法は、周辺機器を支援していないオペレーティングシステムからCE１４が周辺機器にアクセスできるので好都合である。例えば、CE１４がCD-ROM駆動機構を支援していないオペレーティングシステムを走行させ、IOP１２がそれを支援しているものを走行させる場合、CE１４は、ハード駆動機構にアクセスするなどのために使用されるものと全く同じ入出力要求を発行することによってCD-ROM駆動機構にアクセスできる。その後、IOP１２は、その入出力要求のCD-ROM駆動機能をアクセスするのに適したものへの変換を実行する。
図２を参照すると、システム１０は、CE１４のブート処理と初期化とを制御し、CE１４内の地域時間をディスエーブルにし、CE１４からの入出力要求全部をIOP１２へリダイレクトして実行させ、入出力要求の結果があればそれをIOP１２からCE１４へと返送するための専門化されたシステムソフトウェア４０を備えている。
システムソフトウェア４０は、ROM基盤のものであり各々がCE１４のIPIモジュール１８に位置する二組のIPI BIOS４２から成る。IPI BIOS４２は、ブートアップアクティビティと初期化アクティビティとに使用される。CE１４がブートされると、IPI BIOS４２は、システムBIOS割込み表内の入出力割込みアドレスをCEドライバ４４によって制御されたアドレスに交換する。交換される割込みアドレスとは、ビデオサービスと固定ディスクサービスと直列通信サービスとキーボードサービスと日内時刻サービスなどに対応するものである。
IPI BIOS４２は、また、通常メモリリフレッシュ処理をディスエーブルにして、CE１４が実際に処理を行っている周期数に影響を与えるメモリリフレッシュ処理がシステムソフトウェア４０によって制御されることを保証する。メモリリフレッシュ処理はメモリ保全性を維持するために必要である。従来のリフレッシュ処理方法においては、メモリは、メモリ内の一つのブロックがリフレッシュ期間の終了の度にリフレッシュされるという具合いに定期的にリフレッシュされる。リフレッシュ期間の継続時間は、メモリ全体がメモリのリフレッシュ限界内にリフレッシュされるように選択される。このように、例えば、メモリにブロックが２５６個ありリフレッシュ限界が８ミリ秒である場合、リフレッシュ期間は３１，２５マイクロ秒（８ms/256）となる。
上記の実施例においては、IPI BIOS４２は、インテル４８６マザーボードに用いられてメモリリフレッシュ処理を制御するための計数器を、計数器へのゲート入力を増分させるために変化させるものとするモードに設定することによって、メモリリフレッシュ処理をディスエーブルにする。ゲート入力は普通電源に接続てされるので、ゲート入力は決して変化しない。従って、計数器は効果的にディスエーブルにされる。
システムソフトウェア４０のCEドライバ４４は、入出力要求あるいは量子割込みが発生させられる度にメモリの多数のブロックをバーストリフレッシュすることによってメモリリフレッシュ処理を取行う。CEドライバ４４は、CEブートディスク２８に格納されCE１４によって走行させられる。バーストメモリリフレッシュを実行するばかりでなく、CEドライバ４４は、システムBIOSへの入出力要求を中途妨害してIPIモジュール１８経由でIOP１２へとリダイレクトし実行させる。CEドライバ４４は、また、IPIモジュール１８からの割込み要求に応答してシステムクロックをディスエーブルにしたり、IOPモニタ４８から供給される情報に基づいてCE１４の日内時刻を制御したりする。
IOPブートディスク２６に配置されIOP１２によって走行させられるIOPドライバ４６は、CE１４からの入出力要求をIOPモニタ４８へリダイレクトして処理させて、その結果をIOPモニタ４８からCE１４へと送信することによって、CE14からの入出力要求を処理する。IOPドライバ４６はパケット通信規約を用いてCEドライバ４４と交信する。
IOPモニタ４８はIOPブートディスク２６に配置されIOP１２によって走行させられる。IOPモニタ４８は、システム１０を制御し実際の入出力要求を実行してIOPドライバ４６によってCE１４へ送信される結果を作成する。
システムソフトウェア４０は、更に、IOP１２上で走行しシステム１０のユーザ制御を提供する操作ソフトウェア４９を備えている。操作卓ソフトウェア４９を使用すれば、ユーザはCE１４をリセットさせたりブートさせたり同期させたりできる。ユーザは、リセット後あるいは立ち上げ後すぐにCE１４の一方あるいは両方を自動的にブートさせたり（自動ブート）しかも／あるいは自動的に同期させたり（自動同期）するように設定することもできる。各CE１４を制御する機能は、通常動作時とテスト時の両方の時に有用である。操作卓ソフトウェア４９を使用すれば、ユーザは、IOPモニタ４８が比較間違いエラーに直面したときに両方のCE１４をダウンさせるという保全性モードか、IOPモニタ４８が比較間違いエラーに直面したときにCE１４ａをディスエーブルにするという第一可用性モードか、IOPモニタ４８が比較間違いエラーに直面したときにCE１４ｂをディスエーブルにするという第二可用性モードかにシステム１０を設定することもできる。最後に、操作卓ソフトウェア４９によってユーザはシステム１０の状態を要求できる。代替の実施例においては、操作卓ソフトウェア４９はIOP１２と交信する別のプロセッサで実現される。
各CE１４は、他のCE１４によって走行させられるのと同じアプリケーションと同じオペレーティングシステムのコピーを走行させる。また、メモリシステム３４ａと３４ｂの内容は同じであり、CE１４の動作情況は各同期時刻において同じである。このように、IOPモニタ４８はCE１４から全く同じ順序の入出力要求を受け取る。
図３に示すように、IOPモニタ４８は手順１００に従って入出力要求を処理し監視する。初めに、IOPモニタ４８はCE１４の一方からの入出力要求を待合わせる（ステップ１０２）。例えばCE１４ｂから入出力要求パケットを受取ると、IOPモニタ４８はCE１４ａからの入出力要求かタイムアウト期間の満了かを待合わせる（ステップ１０４）。システム１０は、入出力要求が処理されている間にアプリケーションの実行を停止させるDOSオペレーティングシステムを使用するので、IOPモニタ４８がCE１４ａからの入出力要求を待合わせている（ステップ１０４）間にCE１４ｂから入出力要求を受取ることはないことが保証される。
次に、IOPモニタ４８はタイムアウト期間が満了したかどうかを確認し判定する（ステップ１０６）。満了していなければ（すなわち、CE１４ａからの入出力要求が到着した）、IOPモニタ４８はパケットの検査合計を比較する（ステップ１０８）。検査合計が互いに等しければ、その入出力要求を処理する（ステップ１１０）。入出力要求を処理し終えたと、IOPモニタ４８は現在の日内時刻を求める要求をIOP１２のシステムBIOSへ発行する（ステップ１１２）。
日内時刻を受け取ると、IOPモニタ４８は、日内時刻と入出力要求の結果があればその結果とから成るIPIパケットを組立てて（ステップ１１４）、そのIPIパケットをIOPドライバ４６へ送り（ステップ１１６）CE１４へ送信させる。IPIパケットを受取ると、CE１４は、送信された日内時刻を使って前述のように他の場合にはディスエーブルにされる地域クロックを更新する。
DOSからの要求通りに、CE１４での実行は、IOPモニタ４８が入出力要求の結果をIOPドライバ４６を介して返送するまで中断される。なぜなら、実行が再開される前に、両方のCE１４の日内時刻が共通の値（IPIパケットから送信された日内時刻）に更新されて、CE１４はメタ時間が指定される送信日内時刻と時間的に同期し続けるからである。多量タスクオペレーティングシステムが用いられる場合、CE１４での実行は、IOPモニタ４８が入出力要求が実行している間も中断されない。そうでない場合、CE１４での処理が、IOPモニタ４８が入出力要求を処理し始めたことを示す肯定応答を受信するまで中断される（ステップ１１０）。この肯定応答は、日内時刻を含んでおりCE１４によって地域クロックの更新に使用される。
IPIパケットをIOPドライバ４６へ送ってしまうと、IOPモニタ４８は、CE14が両方ともオンラインであることを検証する（ステップ１１８）。そうならば、CE１４の一方からの別の入出力要求を待合わせる（ステップ１０２）。
タイムアウト期間が満了した場合（ステップ１０６）、IOPモニタ４８は、応答できなかったCE１４をディスエーブルにし（ステップ１１９）入出力要求を処理する（ステップ１１０）。
CE１４からパケットの検査合計間に比較間違いがあれば（ステップ１０８）、IOPモニタ４８は、システム１０が可用性モードで作動しているか保全性モードで作動しているかを確認する（ステップ１２０）。
システム１０が可用性モードで作用している場合、IOPモニタ４８は、選択された可用性モードに基づいて適宜のCE１４をディスエーブルにし（ステップ１２２）、入出力要求を処理する（ステップ１１０）。その後、IOPモニタ４８がCE１４が両方ともオンラインかどうかを確認する（ステップ１１８）。ディスエーブルにされたCE１４が修復も再起動もされていない場合、IOPモニタ４８はオンラインCE１４からの入出力要求を待合わせる（ステップ１２４）。システム１０はもはや故障からの立直りが速いとは言えないので、入出力要求が受信されると、IOPモニタ４８は即座にその入出力要求を処理する（ステップ１１０）。
システム１０が、比較間違いが検出されたときに保全性モードで作動していれば、IOPモニタ４８は、両方のCE１４をディスエーブルにし（ステップ１２６）処理を停止する（ステップ１２８）。
図１と２を再度参照すると、例えばCE１４ａのアプリケーションかオペレーティングシステムがシステムBIOSへ非入出力呼出しを行った場合、システムBIOSは、要求を実行しその結果をシステムソフトウェア４０を呼出さすことなくアプリケーションへ返送する。しかし、アプリケーションかオペレーティングシステムかが入出力BIOS呼出しを行う場合、CEドライバ４４ａはその入出力要求を中途妨害する。入出力要求を中途妨害した後、CEドライバ４４ａは、その入出力要求をIPIパケットへ入れそのIPIパケットをIOP１２へ送信する。
IPIパケットのCE１４ａからの送信を検出すると、IOP１２のIPIモジュール１６ａはIOPドライバ１６への割込みを発生させる。IOPドライバ４６はIPIパケットを読取る。
以上考察したように、IOPモニタ４８は、手順１００に従ってCE１４ａからのIPIパケットに応答する。やはり考察したように、ハードウェア故障がない場合、IOPドライバ４６は、最終的に、CE１４への入出力要求の結果と日内時刻とを含んだIPIパケットを送信する。
CE１４のIPIモジュール１８はIOP１２からIPIパケットを受信する。CEドライバ４４は、IPIパケットを元の形に復元しCE１４の日内時刻を更新して、CE１４の制御をCE１４上で走行しているアプリケーションかオペレーティングシステムかへ戻す。
所定時間内に入出力要求が何も発行されなかった場合、CE１４のIPIモジュール１８は、CE１４のCEドライバ４４を呼出すためのいわゆる量子割込みを発生させる。これに応じて、CEドライバ４４は、量子割込みIPIパケットを作成してそれをIOP１２へ送信する。IOPモニタ４８は、量子割込みIPIパケットを入出力要求を持たないIPIパケットとして処理する。このように、IOPモニタ４８は、着信量子割込みIPIパケットを検出し（図３のステップ１０２）、一致する量子割込みIPIパケットが別のCE１４から受信されれば（図３のステップ１０４、１０６および１０８）、現在の日内時刻をもとめる要求をIOP１２のシステムBIOSへ発行する（図３のステップ１１２）。その後、IOPモニタ４８は、IOPドライバ４６がCE１４へ送った（図３のステップ１１６）量子応答IPIパケットへ現在の日内時刻を入れる（図３のステップ１１４）。CEドライバ４４は、日内時刻を更新してCE１４の制御をCE１４上で走行しているアプリケーションがオペレーティングシステムへ戻すことによって、量子応答IPIパケットに応答する。
IOPモニタ４８は、予め規定されたタイムアウト期間内に別のCE１４から量子割込みIPIパッケージを受信しない場合（図３のステップ１０６）、応答しないCE１４をディスエーブルにすることによって応答する。
図１に示すように、IPIモジュール１６と１８およびケーブル２０で、プロセッサ２２と２３を実現するために用いられる標準インテル４８６基盤マザーボードから故障からの立直りの速いシステムを作成するのに必要なハードウェア全部が提供される。IPIモジュール１６とIPIモジュール１８とは、全く同じ基板を使って実現され互いに同様の機能を果たす。
図４に示すように、IPIモジュール１８は、入出力要求と応答とをCE１４のプロセッサ３２のシステムバスとIPIモジュール１８の並列インターフェイスとの間で通信させるための制御ロジック５０を備えている。並列インターフェイス５２の方は、ケーブル２０を介してIPIモジュール１６の並列インターフェイスと交信する。並列インターフェイス５２は、１６ビットデータ出力ポート５４と１６ビットデータ入力ポート５６と制御ポート５８とから成る。ケーブル２０は、データ出力ポート５４がIPIモジュール１６のデータ入力ポートに接続され、データ入力ポート５６がIPIモジュールのデータ出力ポートに接続され、制御ポート５８がIPIモジュール１６の制御ポートに接続されるように構成される。制御ポート５８は、IPIモジュール１８とIPIモジュール１６との間にハンドシェイク方式の通信規約を実現する。
制御ロジック５０はIPI BIOS ROM６０にも接続されている。立上がり時、制御ロジック５０は、IPI BIOS ROM６０の内容であるIPI BIOS４２（図２）をプロセッサ３２のシステムバスを介してプロセッサ３２へ転送する。
やはりIPIモジュール１８に配置されるQI計数器６２は先に考察したように量子割込みを発生させる。QI計数器６２は、プロセッサ３２のシステムクロックに接続されたクロック入力端子６４と制御ロジック５０に接続されたゲート入力端子６６とを備えている。ゲート入力端子６６は、QI計数器６２を起動し計数値をリセットするために用いられる。起動されると、QI計数器６２は、プロセッサ３２のシステムクロックの各周期中に計数値を１だけ減分させる。計数値がゼロに達すると、QI計数器６２は、先に考察したようにCEドライバ４４（図２）を起動させるための量子割込みを発生させる。
CEドライバ４４は入出力取引の開始の度にQI計数器６２を非活動にする。CEドライバ４４は、QI非活動アドレスとして知られる第一アドレスでの入出力書込みを要求することによってQI計数器６２を非活動にする。制御ロジック５０は、入出力書込み要求を検出してゲート入力端子６６を介してQI計数器６２を非活動にする。特にこの入出力書込みは制御目的のものなので、制御ロジック５０は並列インターフェイス５２へ入出力書込みを渡すことはしない。入出力取引の終結度に、CEドライバ４４は、QI起動アドレスとして知られる第二アドレスへの入出力書込みを要求することによってQI計数器６２を起動する。制御ロジック５０は、QI計数器６２をリセットし起動することによって応答する。
代替の方法においては、量子割込みは、プロセッサ３２において実現可能なデバック処理機構などの機構を使用することによって発生させられる。一般に入手可能なプロセッサの中には、デバッグ命令や、トラップ命令に続く選択された個数の命令の完了後に指定されたプログラムへプロセッサの制御を転送することによってエラーを捕らえるためのトラップ命令に対応しているものもある。この方法では、CEドライバ４４は、プロセッサ３２の制御をアプリケーションかオペレーティングシステムかへ戻す度に、トラップ命令を発行してプロセッサ３２の制御が例えば３００個の命令の完了と同時にCEドライバ４４へ与えられることを示す。プロセッサ３２が示された３００個の命令を完了すると、トラップ命令によってプロセッサ３２の制御がCEドライバ４４へ戻される。入出力要求が指定された個数の命令の完了の前にCEドライバ４４を起動させるという事態に際して、CEドライバ４４はトラップ命令を取消すための命令を発行する。
IPIモジュール１８はオフラインCE１４を起動する際にも使用される。次に考察するように、オフラインCE１４が起動される前に、活動CE１４のメモリシステム３４の内容が、オフラインCE１４のメモリシステム３４へコピーされる。この活動CE１４へのコピーの効果を低減させるために、活動CE１４のプロセッサ３２に処理を継続させ、活動CE１４のプロセッサ３２のシステムバスが使用されてない周期の間中のみメモリをコピーする。
メモリがコピーされている間プロセッサ３２が処理を継続できるように、IPIモジュール１８は、既にオフラインCE１４にコピーされたアドレスに対するプロセッサ３２によるメモリ書込みを不具にする。そうするために、制御ロッジ５０はシステムバスを監視する。プロセッサ３２が既にコピーされたメモリアドレスに書込みを行うと、制御ロジック５０はそのアドレスをFIFO６８に格納する。メモリ転送が終了すると、あるいは、FIFO６８が満杯になると、FIFO６８に格納されたメモリアドレスに対応するメモリ位置の内容がオフラインCE１４にコピーされ、FIFO６８は空になる。別の方法では、FIFO６８は、メモリアドレスとそのアドレスに対応するメモリ位置の内容の両方を格納するかあるいはメモリアドレスの書込みが行われているメモリブロックのブロックアドレスを格納するように変更される。
IPIモジュール１８は非BIOS入出力要求も処理する。コンピュータシステムによっては、BIOSはとてものろいので映像表示などの入出力演算を効果的に実行できない。その結果、DOSやUNIXなど組織化や統制があまり進んでいないオペレーティングシステムは、アプリケーションが入出力装置に対応するアドレスから直接に読取ったりそのアドレスに直接書込んだりすることによってBIOSを迂回したり非BIOS入出力要求を行ったりすることを許してしまう。非BIOS入出力要求は、例えば入出力ディスク読取りと書込みで中途妨害されるようにシステム割込み表を変更することによって中途妨害されうるものではないが、同期が入出力インターフェイスの強い制御を必要とするシステムにおいては問題のある要求である。
この問題を軽減するために、しかも、非BIOS入出力要求でさえもIOP１２によって隔離され管理されることを保証するために、IPIモジュール１８は、物理的入出力装置のハードウェアインターフェイスのまねをする仮想入出力装置を備えている。仮想入出力装置は仮想表示器７０と仮想キーボード７２とから成る。必要に応じて、仮想マウスあるいは仮想直列ポートと仮想並列ポートなどの別の仮想入出力装置を使用することもできる。
実際には、制御ロジック５０が、システム入出力装置への非BIOS入出力要求に対応するアドレスに向けられた読取り動作か書込み動作かを調べるためにシステムバスを監視する。制御ロジック５０は、その様な動作を検出すると、適宜の仮想装置において動作を再構築するために必要な情報を格納する。このように、例えば、制御ロジック５０は、表示器に対応するアドレスに向けられた書込みを検出すると、その動作を仮想表示器７０にて再構築するために必要な情報を格納する。BIOS入出力要求あるいは量子割込みが発生する度に、CEドライバ４４は、仮想入出力装置を走査して、仮想装置が空でなければ、仮想装置内に格納された情報を組立ててIPIパケットを作りIOP１２へ送信する。IOP１２は、先に考察した手順１００を用いて当該パケットをBIOS入出力要求と同様に処理する。制御ロジック５０が仮想入出力装置へ向けられた読取りを検出すると、制御ロジック５０は、その読取り要求を組立ててIPIパケットを作りIOP１２によって処理させる。IOP１２はIPIパケットを標準BIOS入出力要求と同様に処理する。
図５を参照すると、各CE１４は常に八つの状態のどれか一つで作動する。また、許容状態の組合せの個数は限られているので、システム１０は常に１４つの状態のどれか一つで作動する。主なCE作動状態は、オフライン、RTB（ブート準備完了）、ブート処理、活動中、RTS（同期準備完了）、待合わせ、M SYNC（マスタとしての同期）およびS SYNC（スレーブとしての同期）である。IOPモニタ４８は、システム１０の状態と操作卓ソフトウェア４９からのユーザ指令とに基づいてCE１４の作動状態を変化させる。操作卓ソフトウェア４９によって、ユーザはいつでもCE１４をリセットできる。ユーザがCE１４をリセットする度、あるいは、故障がCE１４に発生する度に、IOPモニタ４８はCE１４の状態をオフラインへ変化させる。
立上がり時、システム１０は両方のCE１４をオフライン（１５０状態）にさせて作動する。システム１０は、CE１４ａがCE１４ｂの前に作動状態になったときは図５の上側の状態（１５２〜１６２状態）で作動し、CE１４ｂが先に作動状態になったときは下側の状態（１６６〜１７６状態）で作動する。CE１４が同時に作動状態になった場合、IOPモニタ４８によって最初に作動状態になったと認識されたCE１４が、最初に作動状態になったものとして取扱われる。
CE１４が、ブート要求を発行することによってブートの準備が完了していることを示すとき、CE１４の状態は、CE１４が自動ブートに設定されていなければRTBへ変わり、CE１４が自動ブートに設定されていればブート処理へ変わる。例えば、両方のCE１４がオフライン状態のときにCE１４ａがブート要求を発行し、しかも、CE１４ａが自動ブートに設定されていなければ、CE１４ａの状態はRTB（１５２状態）へ変わる。その後、IOPモニタ４８は、ユーザが操作卓ソフトウェア49を介してCE１４ａをブートするのを待合わせる。ユーザがCE１４ａの状態はブート処理（１５４状態）へ変わる。ユーザがCE１４ａをリセットすれば、CE１４ａの状態はオフライン（１５０状態）へ変わる。
CE１４ａがブート要求を発行ししかもCE１４ａが自動ブートに設定されている時に、両方のCE１４がオフラインならば、CE１４ａの状態はブート処理（１５４状態）へ変わる。CE１４ａのブートが成功すれば、CE１４ａの状態は活動中（１５６状態）へ変わる。
CE１４ａが活動中でCE１４ｂがブート要求を発行したか、あるいは、CE１４ｂが、CE１４ａの状態がオフラインから活動中（１５２〜１５６状態）へ遷移しつつあるときに、ブート要求を発行したならば、CE１４ｂの状態は、CE１４ｂが自動同期に設定されているか、さもなければ、待合わせ（１６０状態）に設定されていれば、RTS（１５８状態）へ変わる。CE１４ｂの状態がRTS（１５８状態）へ変われば、IOPモニタは、ユーザがCE１４ｂへ同期指令を発行するのを待合わせる。ユーザがそのような指令を発行すると、CE１４ｂの状態は待合わせ（１６０状態）へ変わる。
CE１４ｂが待合わせ状態になると、IOPモニタ４８は、CE１４ａのメモリシステム３４ａの内容をCE１４ｂのメモリシステム３４ｂへコピーする。メモリ転送が終了すると、IOPモニタ４８は、CE１４ａが量子割込みか入出力要求IPIパケットを送信するのを待合わせる。そのようなパケットを受取ると、IOPモニタ４８は、CE１４ａの状態をM SYNCへ変えCE１４ｂの状態をS SYNC（１６２状態）へ変えて、CE１４同士を同期させる。この同期化には、IOPモニタ４８がCE１４ａが量子割込みが入出力要求IPIパケットかを送信するのを待合わせている間に発生したメモリ変化に対する応答処理が含まれる。同期化が終了し次第、CE１４の状態は両方とも活動中（１６４状態）へ変わり、システム１０は完全に使用可能状態であると考えられる。
代替の実現形態においては、IOPモニタ４８は、CE１４ａの状態をM SYNCへ変えCE１４ｂの状態をS SYNC（１６２状態）へ変える前にメモリ転送が終了するのを待合わせることはしない。その代わりに、IOPモニタ４８は、IPIパケットのCE１４ａからの受信と同時にこの状態変化を行って、同期化プロセスの一部としてメモリ転送を実行する。
CE１４ｂが最初にブート要求を発行したCE１４であることにも同様の状態遷移が起こる。このように、CE１４ｂが自動ブートに設定されていない場合、CE１４ｂは、オフライン（１５０状態）からRTC（１６６状態）、ブート処理（１６８状態）そして活動中（１７０状態）へと遷移する。同様に、CE１４ｂが活動中に入り、CE１４ａが自動同期に設定されていない場合、CE１４ａは、オフライン（１７０状態）からRTS（１７２状態）、待合わせ（１７４状態）、S SYNC（１７６状態）そして活動中（１６４状態）へと遷移する。
本発明の他の実施例においては、例えば、図６を参照すると、故障からの立直りの速いシステム２００は二つのIOP２０２と二つのCE２０４とから成る。各CE２０４は、IPIカード２０６とケーブル２０８とを介して各IOP２０２のIPIカード２１０に接続される。IPO２０２は、IPIカード２１０とケーブル２１２とを介して冗長的に接続される。システム２００の構成要素は全て冗長バックアップ構成要素を備えているので、システム２００は全体的に故障からの立ち直りが速い。代替の方法では、ケーブル２０８と２１０が、IOP２０２とCE２０４とが接続される一対の構内通信網によって置換えられる。実際、構内通信網がいつもケーブル配線の代わりに用いられる。
システム２００は、オペレーティングシステムやアプリケーションソフトウェアの改良品が作動しなければならないとはしていないから、オペレーティングシステムとアプリケーションソフトウェアとには依存していない。たった１個のハードウェアを、サービスを中断させることなくシステム２００内で格上げしたり修復したりできる。従って、ハードウェア一つ一つを順次交換してシステム２００を交換の終了の度に再同期させることによって、システム２００のハードウェアをそっくりそのままサービスを中断させることなく交換できる。同様に、システム２００上のソフトウェアをサービスの中断を最長限に抑えて格上げできる（すなわち、ソフトウェア格上げの最中、アプリケーションは２秒くらいの許容できる時間の間使用不能になる）。また、可用性を目的とした災害に対する耐性は、別の位置に各10P/CE対を設置し全部の10P/CE対を通信リングを介して接続することによって達成される。
図７を参照すると、分散型で高性能の故障からの立直りの速いシステム２２０は、二つのシステム２００から成る。システム２００のIOP２０２は、ケーブル２２２によってIPIモジュールを介して互いに接続される。システム２２０は、分散型計算環境ソフトウェアを使用して各システム２００上のアプリケーションの別々の部分を走行させることによって高性能を達成している。システム２２０は、故障に対する耐性がありサービスを中断させることなくハードウェア格上げとソフトウェア格上げの両方を実行する機能を提供する。
図８を参照すると、耐故障システム２３０は、三つのIOP（２３２、２３４および２３６）と三つのCE２３８、２４０および２４２）とから成る。IPIモジュール２４４とケーブル２４５とを介して、各IOPは他のIOPの各々のIPIモジュール２４４に接続される。IPIモジュール２４８とケーブル２５０とを介して、各CEは、CE２３８がIOP２３２と２３４に接続されCE２４０がIOP２３２と２３６に接続されCE２４２がIOP２３４と２３６に接続された状態で、IOPのうちの二つのIPIモジュール２４４に接続される。システム２００と同様に、システム２３０は、サービスを中断させることのないハードウェア格上げとサービスの中断を最小限に抑えたソフトウェア格上げとを考慮に入れる。
図７と８との比較から分かるように、システム２００と２３０のCEとIOPとは全く同じ構成をしている。その結果、故障からの立直りの速いシステム２００から耐故障システム２３０への格上げは、現存のハードウェアの交換を何も必要としないが、別のCE／IOP対を追加しケーブルを接続しシステムソフトウェアに適宜の変更を加えるという簡単な手順を必要とする。このモジュール方式は、本発明の対モジュール方式冗長アーキテクチャの重要な特徴である。
システム２３０の構成要素は三重に冗長であるので、システム２３０は、システム１０よりもハードウェア故障を同定する能力に優れている。このように、システム１０がただ単にエラーが検出されたときにCE１４の一方あるいは両方をディスエーブルにするのに対して、システム２３０はより高度な故障診断を提供する。
図９を参照すると、システム２３０の各IOP（２３２、２３４、２３６）は手順３００に従って故障診断を行う。初めに、各IOP（２３２、２３４、２３６）は、電力検知やケーブル検知や通信規約タイムアウトなどの周知の方法を用いて電力損失やケーブル破壊やCE機能不全やIOP機能不全などの重大な故障について検査する（ステップ３０２）。このような故障が検出されると、各IOPは、故障の装置をディスエーブルにし、必要に応じて、システム全体をディスエーブルにする。
重大な故障について検査した後、各IOPは、IOPが接続された二つのCEからIPIパケット（すなわち、量子割込みか入出力要求）を受信するために待合わせる（ステップ３０４）。このように、例えば、IOP２３２は、CE２３８と２４０からIPIパケットを受信するために待合わせる。接続されたCEからIPIパケットを受信した後、各IOPは、IPIパケットの検査合計（CRC）を他の二つのIOPへ送信して、その他の二つのIOPからのCRCの受信のために待合わせる（ステップ３０６）。
他の二つのIOPからCRCを受信した後、各IOPは、各縦列がCEに対応し各横列がIOPに対応し各入力が横列のIOPによって縦列のCEから受信されたCRCでありとして３×３行列を発生させる。このように、例えば、IOP２３２は次の行列を発生させる。
0003679412.tif 000002
この行列を発生させた後、IOP２３２は、行列の横列毎および縦列毎に入力を合計する。三つの横列合計が等しく三つの縦列合計が等しければ（ステップ３１０）、故障はないので、IOP２３２は再度重大な故障について検査する（ステップ３０２）。
三つの横列合計か三つの縦列合計かが等しくなければ（ステップ３１０）、IOP２３２は、行列の縦列毎にCRC入力を比較する。各縦列の二つのCRC入力が一致すれば（ステップ３１２）、IOP２３２は、CE故障が発生したと診断し、合計が他の縦列の合計と等しくなかった縦列に対応するCEをディスエーブルにする（ステップ３１４）。
一つ以上の行列の縦列のCRC入力が一致しなければ（ステップ３１２）、IOP２３２は、縦列のうちいくつが不一致入力を持っているかを判定する。行列の中に不一致入力を持つ縦列が一つしかない場合（ステップ３１５）、IOP２３２は、他の行列の横列合計に等しくない行列の横列合計に対応するIOPと不一致入力を持つ縦列に対応するCEとの間の経路が働かなくなったと診断してその経路をディスエーブルにする（ステップ３１６）。この診断のために、経路に、IOPのIPIモジュール２４４とCEのIPIモジュール２４８とケーブル２５０とを含める。
行列には不一致入力をもつ縦列が一つ以上あるので（ステップ３１４）、IOP２３２は、一つの行列横列合計が他の行列横列合計に等しくないことを確認して、他の行列横列合計に等しくない行列横列合計に対応するIOPをディスエーブルにする（ステップ３１８）。
CE故障（ステップ３１４）、経路障害（ステップ３１６）あるいはIOP障害（ステップ３１８）を診断し不具にした後、IOP２３２が、システム３００はいつでも作動可能になっている非故障ハードウェアを依然充分に備えていると判定すると、IOP２３２は再度重大な故障について検査する（ステップ３０２）。システム２３０は三重に冗長なので、システム２３０は、構成要素が数個働かなくなったとしても作動し続けられる。例えば、可用性モードで作動したままでいるには、システム２３０は、単一の機能しうるCEと単一の機能しうるIOPとこれらの間の経路とを備えてさえいればいい。
手順３００を用いると、各IOP（２３２、２３４、２３６）は、完璧にいつでも作動可能なシステム２３０あるいは一つの要素（すなわち、CE、IOPあるいは経路）が以前にディスエーブルにされたことのあるシステム２３０におけるどの様な障害一つも正しく診断できる。要素がディスエーブルにされたことのあるシステム２０３においては、各IOPは、実際に受信したCRCとの比較から正しく見える値を使うことによって、その要素がディスエーブルにされたために受信されていないCRCを不具にする。
手順３００は、CEはIOPとの間の特定な相互接続構成に依存するものではない。適切に作動させるために、手順３００によれば、各CEの出力が少なくとも二つのIOPによって直接に監視されるべきであるとするだけである。この様に、手順３００は、どの様な相互接続機序を翔いたシステムにおいても実現でき、CEとIOPとの間に対して二地点間接続を必要とするものではない。例えば、CEとIOPとを少なくとも二つの構内通信網に接続させることもできる。代替の方法においては、行列の横列と縦列とのCRC値を合計する代わりに、これらの値を比較して、入力が一致しない横列か縦列かに一致／不一致標識で印をつけることもできる。
手順３００の単純化バージョンについては、システム２００での使用に合わせて実現できる。この手順では、システム２００の各IOP２０２は、各縦列がCE２０４に対応し各横列がIOP２０２に対応する２×２行列を発生させる。
0003679412.tif 000003
この行列を発生させた後、各IOP２０２は、二つの入力が不一致となった横列あるいは縦列毎に不一致標識を添付する。
不一致標識が何もなければ、システム２００は正しく作動する。
どちらの横列にも不一致標識がなく両方の縦列に不一致標識がある場合、CE２０４は故障している。システム２００の作動モード次第で、IOP２０２は、別のIOP２０２をディスエーブルにするかシステム２００をダウンさせるかする。ディスエーブル対象のIOP２０２は、システム１０で使用された二つの可用性モードに類似したユーザ供給パラメータに基づいて選択される。
両方の横列に不一致標識がありどちらの縦列にも不一致標識がない場合、CE２０４は故障している。この場合、IOP２０２は、システム２００が可用性モードで作動しているならばCE２０４をディスエーブルにすることによって、あるいは、システム２００が保全性モードで作動しているならばシステム２００をダウンすることによって応答する。両方の横列に不一致標識があり一方の縦列に不一致標識がある場合、IOP２０２と不一致縦列に対応するCE２０４との間の経路の一つが働かなくなっている。システム２００の作動モード次第で、IOP２０２は、働かなくなった経路を持つCE２０４をディスエーブルにするかシステム２００をダウンさせるかする。両方の横列に不一致標識があり両方の縦列に不一致標識がある場合、多数の故障が存在する。IOP２０２はシステム２００をダウンさせる。
一方の横列に不一致標識があり両方の縦列に不一致標識がある場合、不一致横列に対応するIOP２０２は故障している。システム２００の作動モード次第で、別のIOP２０２が、その故障のIOP２０２をディスエーブルにするかシステム２００をダウンさせるかする。一方の横列に不一致標識があり一方の縦列に不一致標識がある場合、不一致横列に対応するIOP２０２と不一致縦列に対応するCE２０４との間の経路が働かなくなっている。システム２００の作動モード次第で、IOP２０２は、働かなくなった経路を将来の処理において不具にしシステム２００をダウンさせる。
図１０を参照すると、耐災害システム２６０の一つの実施例は、遠く離れた位置に配置され、イーサネットやファイバなどの通信リンク２６２で接続され、互いにメタ時刻方式で作動する二つの耐故障システム２３０から成る。メタ時刻方式を達成するために、IPIパケット全部を耐故障システム２３０間で送信させる。システム２２０と同様、システム２６０はサービスを中断させることのないハードウェア格上げとソフトウェア格上げとを考慮に入れる。
図示のように、本発明の対モジュール方式冗長アーキテクチャによれば、実時間で非同期的に作動しIOPによってメタ時刻に同期的に作動するように制御されるCEを使用することによって故障からの立直りの速さのレベルと故障に対する耐性のレベルとを変化させることができる。このアーキテクチャは簡単で費用効率がよい。また、拡張も格上げも容易である。
【図１】
0003679412.tif 000004
【図２】
0003679412.tif 000005
【図３】
0003679412.tif 000006
【図４】
0003679412.tif 000007
【図５】
0003679412.tif 000008
【図６】
0003679412.tif 000009
【図７】
0003679412.tif 000010
【図８】
0003679412.tif 000011
【図９】
0003679412.tif 000012
【図１０】
0003679412.tif 000013