(57)【特許請求の範囲】
【請求項１】
３つ以上のプロセッサと、
前記プロセッサから信号を受信するように構成され、さらに信号の多数決値を決定するように構成されるコントローラと、
所定のマイルストンで、前記プロセッサを前記多数決値にしたがって再同期化するように構成されるスクラビングモジュールと、を備え、
前記スクラビングモジュールが、
ａ）各プロセッサの選択されたプロセッサステートエレメントのデータをメインメモリへとフラッシュし、前記選択されたプロセッサステートエレメントの各データの多数決値を復元データとして前記メインメモリに保存し、
ｂ）前記復元データを各プロセッサの選択されたプロセッサステートエレメントに与えることによって、前記選択されたプロセッサステートエレメントを前記復元データにより復元して前記３つ以上のプロセッサを再同期化するように構成される、自己訂正コンピュータシステム。
【請求項２】
前記所定のマイルストンが時間間隔である、請求項１記載のコンピュータシステム。
【請求項３】
前記所定のマイルストンがクロックサイクル数である、請求項１記載のコンピュータシステム。
【請求項４】
オペレーティングシステムのアイドルタイムに前記所定のマイルストンに到達するように構成される、請求項１記載のコンピュータシステム。
【請求項５】
前記コントローラは、１つ又はそれより多くのプロセッサからの信号が前記多数決値と一致しない場合に、誤りを記録するように構成される、請求項１記載のコンピュータシステム。
【請求項６】
前記コントローラは、前記多数決値と不一致な信号を生成したプロセッサのオペレーションをサスペンドするように構成される、請求項５記載のコンピュータシステム。
【請求項７】
前記コントローラは前記所定のマイルストンを変更するように構成される、請求項５記載のコンピュータシステム。
【請求項８】
前記コントローラは、記録された誤りの発生頻度に基づいて、前記所定のマイルストンを変更するように構成される、請求項７記載のコンピュータシステム。
【請求項９】
前記コントローラは、システム要求に基づいて前記所定のマイルストンを変更するように構成される、請求項７記載のコンピュータシステム。
【請求項１０】
前記ステートエレメントがレジスタを含む、請求項１記載のコンピュータシステム。
【請求項１１】
前記ステートエレメントがキャッシュメモリを含む、請求項１記載のコンピュータシステム。
【請求項１２】
前記キャッシュメモリの少なくとも一部が、ライトスルーとして構成される、請求項１１記載のコンピュータシステム。
【請求項１３】
前記コントローラが、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含む、請求項１記載のコンピュータシステム。
【請求項１４】
前記ＦＰＧＡが個々にフォールトトレラントである、請求項１３記載のコンピュータシステム。
【請求項１５】
前記コントローラが特定用途向け集積回路（ＡＳＩＣ）を含む、請求項１記載のコンピュータシステム。
【請求項１６】
各プロセッサに放射線軽減遮蔽材が設けられる、請求項１記載のコンピュータシステム。
【請求項１７】
前記コンピュータシステムの実質的に全てのコンポーネントを遮蔽するように構成される放射線軽減遮蔽材をさらに含む、請求項１記載のコンピュータシステム。
【請求項１８】
データを保存するように構成され、前記プロセッサと通信するメモリモジュールをさらに含む、請求項１記載のコンピュータシステム。
【請求項１９】
前記メモリモジュールが、
３つ又はそれより多くのミラーメモリエレメントと、
１つ又はそれより多くのメモリエレメントの選択されたアドレスのエントリが、過半数のメモリエレメントの前記選択されたアドレスのエントリと異なる場合に、前記１つ又はそれより多くのメモリエレメントの誤りを検出するように構成されるメモリスクラブモジュールをさらに含む、請求項１８記載のコンピュータシステム。
【請求項２０】
前記メモリスクラブモジュールはさらに、誤りが検出された前記１つ又はそれより多くのメモリエレメントを再構成して、前記過半数のメモリエレメントの選択されたアドレスのエントリと同一の、選択されたアドレスの前記エントリを含むように構成される、請求項１９記載のコンピュータシステム。
【請求項２１】
前記メモリスクラブモジュールは、前記選択されたアドレスにおける読み取り又は書き込みのそれぞれで誤りがあるかテストするように構成される、請求項１９記載のコンピュータシステム。
【請求項２２】
前記メモリスクラブモジュールは、定期的な間隔で誤りがあるかテストし、１つ又はそれより多くの前記メモリエレメントのアドレスのエントリが過半数のメモリエレメントの前記アドレスのエントリと異なる場合に、前記１つ又はそれより多くの前記メモリエレメントのアドレスのエントリを再構成するように構成される、請求項１９記載のコンピュータシステム。
【請求項２３】
前記メモリモジュールが誤り検出／訂正論理を含む、請求項１８記載のコンピュータシステム。
【請求項２４】
前記誤り検出／訂正論理がリードソロモン誤り訂正を含む、請求項２３記載のコンピュータシステム。
【請求項２５】
３つ以上のプロセッサを備えたコンピュータの自己訂正方法であって、
ａ）所定のマイルストンに到達したときに、該コンピュータの３つ以上のプロセッサのそれぞれから選択されたプロセッサステートエレメントの各データをシステムメモリにフラッシュするステップと、
ｂ）前記選択されたプロセッサステートエレメントの各データの多数決値を復元データとしてシステムメモリに保存するステップと、
ｃ）前記復元データを、各プロセッサから選択されたプロセッサステートエレメントに与えることで、前記選択されたプロセッサステートエレメントを前記復元データにより復元するステップと、を含む、コンピュータの自己訂正方法。
【請求項２６】
前記３つ又はそれより多くのプロセッサがステップｃ）より前にリセットされる、請求項２５記載の方法。
【請求項２７】
前記所定のマイルストンが時間間隔である、請求項２５記載の方法。
【請求項２８】
前記所定のマイルストンがクロックサイクル数である、請求項２５記載の方法。
【発明の詳細な説明】
【関連出願の表示】
【０００１】
本願は、優先権を主張し、表、図面及び特許請求の範囲の全てを含む全体が参照として本明細書中に援用される、２００３年２月２８日に出願された米国仮出願番号第60/451,041号（代理人整理番号026471-0201、特急郵便番号EV003428368）に関連する。
【技術分野】
【０００２】
本発明は一般にコンピュータシステムに関する。より具体的には、本発明はフォールトトレラント又は自己訂正式の統合型コンピュータシステムに関する。
【背景技術】
【０００３】
以下の記述は読み手の理解を助けるために提供されている。提供されている情報又は引用文献のどれも、本発明の従来技術とは認められない。
【０００４】
使用するコンピュータシステムに極めて信頼性があることが要求される環境が幾つかある。同時にこういった環境のいくつかは極めて厳しく、コンピュータコンポーネントを潜在的にカタストロフィックな要素にさらしてしまう。
【０００５】
こういった環境の一つが宇宙環境である。宇宙、例えば地球の軌道に配されるコンピュータシステムは定期的な保守が利用できないため、宇宙船の寿命まで機能できることが保証されなければならない。したがって、宇宙船に取り付けられるコンピュータシステムは信頼性が高く、内部又は外部のいずれかの障害に対する耐性が強固でなければならない。
【０００６】
さらに宇宙環境における物体は、幾つかのコンピュータコンポーネントには非常に有害であり得る種々の放射線を浴びる。例えば単一の放射線素子によって、コンピュータシステムのプロセッサ又はメモリのいずれかの、シングルイベントアップセット（ＳＥＵ）と称されるアップセットが生じる可能性がある。宇宙環境におけるコンピュータは、このようなシングルイベントアップセットに対して耐性があることが望まれる。
【０００７】
このようなアップセットに対して個々に耐性のあるコンピュータコンポーネントを開発するのは非常にお金がかかり、非効率的である。第一に開発サイクルが長いために、このようなコンポーネントには一般的に、最先端のコンポーネントのパフォーマンスが欠けている。例えば放射線に対する耐性を有するように設計されたプロセッサは、開発が終了する頃には２年古くなっているかもしれない。この２年間にプロセッサの技術水準は、プロセッサのパフォーマンスを倍以上にしている可能性がある。さらにこのようなコンポーネントを障害に対して強固にすることによって、コンポーネントのコストパフォーマンスが悪くなる可能性がある。
【０００８】
米国特許第5,903,717号は、ＳＥＵによる誤りを検出し訂正するためのコンピュータシステムを開示している。このシステムは、出力が各クロックサイクルで投票される複数のプロセッサ（ＣＰＵ）を含む。過半数のＣＰＵ出力信号に一致しない任意のＣＰＵ出力信号によって、誤り信号が作成される。このシステムは、システム管理割り込みを生成することで誤り信号に反応する。検出された誤りから生じたこのシステム管理割り込みに応じて、その誤りがシングルイベントアップセットによって生じた場合に、ソフトウェアは複数のＣＰＵの再同期化を開始する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本明細書中で説明する本発明は、例えば宇宙環境で、又は高度航空機が遭遇し得るシングルイベント効果に対する耐性が強固なコンピュータシステムに関する。本発明は、例えば宇宙放射線によって生じ得る障害に対する保護の種々のセットが設けられたコンピュータシステムに関する。このような保護は、多数のプロセッサ、多数のメモリモジュール、誤り検出／訂正論理及びコンポーネントの機械式遮蔽のうちの１つ又はそれより多くを含む。本発明は、誤りが検出されるのを待つのではなく定期的なスケジュールでコンポーネントのスクラビングを行うことによって、システムの信頼性を向上させる。したがって、長期間検出されないままの誤りが広がってさらにシステムを損傷させることがない。
【課題を解決するための手段】
【００１０】
１態様では、本発明は３つ又はそれより多くのプロセッサを有するフォールトトレラントコンピュータシステムを提供する。コントローラが設けられてプロセッサから信号を受信し、投票論理を使用して多数決信号値を決定する。このコントローラは、複数のプロセッサの１つからの信号が多数決信号と異なる場合に、誤りを検出することができる。このシステムにはまた、所定のマイルストンに到達した後にプロセッサを再同期化するためのスクラビングモジュールも設けられている。このマイルストンは、所定の時間間隔又はユーザが定義する任意の他のイベントでよい。多数決信号値は、プロセッサの再同期化のために使用することができる。
【００１１】
好適な実施形態では、コントローラは、多数決信号と異なる信号を生成したプロセッサのオペレーションをサスペンドする。したがって、システムは残りのプロセッサでオペレーションを続ける。コントローラは、時間間隔などの所定のマイルストンを、記録された誤りの発生頻度に基づいて変更することができる。例えば、予測していたよりも頻繁に誤りが記録されるならば、スクラブ同士の間の時間間隔を短縮することができる。
【００１２】
スクラビングモジュールは、各プロセッサの選択されたプロセッサステートエレメントをメインメモリへとフラッシュすることによって、プロセッサを再同期化することができる。このことによってデータをプロセッサメモリに保存することができるため、そのデータを、プロセッサを再同期化するために使用することができる。スクラビングモジュールは、各プロセッサに復元データを与えることができる。復元データは、プロセッサステートの選択されたステートエレメントの多数決データに対応する。換言すると、全てのプロセッサに対するプロセッサステートの、レジスタなどの各ステートエレメントにおけるデータが多数決値を決定するために使用される。多数決値は、選択されたステートエレメントそれぞれに対して決定される。そして全てのステートエレメントに対する多数決値が、プロセッサを再同期化するために使用される復元データに対応する。
【００１３】
コントローラは、投票論理のためのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含むことができる。ＦＰＧＡは、プログラミング可能な論理デバイスである。典型的なＦＰＧＡは、大きなゲートアレイを含む。コントローラ中のＦＰＧＡは個々にフォールトトレラントであるため、シングルイベントアップセットなどの障害に対して個別のユニットとして耐えることができる。或いは、コントローラは特定用途向け集積回路（ＡＳＩＣ）を利用することもできる。
【００１４】
各プロセッサには放射線軽減遮蔽材が設けられてもよく、これはコンポーネント又はコンポーネントのセットを放射線の影響を受けた環境から遮蔽するように構成された機械式遮蔽材である。或いは、コンピュータシステムには、その中にある実質的に全てのコンポーネントを保護するための放射線軽減遮蔽材が設けられてもよい。
【００１５】
コンピュータシステムには、プロセッサと通信するメモリモジュールが設けられてもよい。メモリモジュールとプロセッサとの間の通信は、コントローラを通じて指示できる。メモリモジュールは、同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、電気的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、メモリスクラブモジュールなどの、３つ又はそれより多くのミラーメモリエレメントを含むことができる。メモリスクラブモジュールは、１つ又はそれより多くのメモリエレメントの選択されたアドレスのエントリが過半数のメモリエレメントの選択されたアドレスのエントリと異なる場合に、１つ又はそれより多くのメモリエレメントで誤りを検出しそれを訂正するように構成される。
【００１６】
メモリモジュールは、ＳＤＲＡＭやＥＥＰＲＯＭなどのメモリエレメントか又はエレメントのセットである。メモリモジュールは一般に、分析のため、又は例えば１つ又はそれより多くのプロセッサが使用するためのデータを保存する目的で設けられ、誤り訂正論理を含むメモリアクセス／制御論理を含むことができる。
【００１７】
メモリスクラブモジュールは、誤りが検出されたメモリエレメントを再構成することができる。この誤りは、各メモリエレメントにおける特定のアドレスのエントリの比較によって検出される。メモリエレメントのアドレスのエントリは典型的に、１バイトが８ビットに相当するコンピュータやメモリエレメントのための、０〜２５５の二進数である。一般に、１バイトの各値が１キャラクタに相当する。
【００１８】
比較によってエントリ同士の間に不一致が生じた場合、過半数のエントリと異なるエントリを有するメモリエレメントで誤りが検出される。するとメモリスクラブモジュールは誤りを含むエレメントを再構成し、特定のアドレスのエントリは過半数のエントリに変わる。したがって、再構成されたメモリエレメントは、再構成前の過半数のメモリエレメントの選択されたアドレスのエントリと同一の、選択されたアドレスのエントリを含む。
【００１９】
メモリスクラブモジュールは、特定のアドレスにおける読み取り又は書き込みのそれぞれで誤りがあるかテストすることができる。さらにメモリスクラブモジュールは、定期的な間隔で誤りがあるかテストし、メモリを再構成して誤りを訂正することができる。
【００２０】
メモリモジュールは、誤り検出／訂正論理を含むことができる。誤り検出／訂正論理の１つの形態として、リードソロモン誤り訂正が含まれる。リードソロモンは、メモリデバイスにおける多数の誤りを効率的に検出し訂正するための周知のアルゴリズムである。リードソロモンの１つの実施例として、その全体が参照として本明細書中に援用される、”Byte-Parallel
System for Implementing Reed-Solomon Error-Correcting Codes”というタイトルの米国特許第5,754,563号を参照することができる。
【００２１】
別の態様では、本発明は、３つ又はそれより多いミラーメモリエレメントとメモリスクラブモジュールを有するフォールトトレラントコンピュータシステムを提供する。このメモリスクラブモジュールは、メモリエレメントの選択されたアドレスのエントリが過半数のメモリエレメントの同じアドレスのエントリと異なる場合に、メモリエレメントの誤りを検出することができる。メモリスクラブモジュールは、定期的な所定の間隔で誤りがあるかテストすることができる。
【００２２】
メモリスクラブモジュールは、再構成前の過半数のメモリエレメントの選択されたアドレスのエントリと同一の、選択されたアドレスのエントリを含むように、メモリエレメントを再構成することができる。メモリスクラブモジュールは、選択されたアドレスにおける読み取り又は書き込みのそれぞれで、誤りがあるかテストすることができる。
【００２３】
メモリスクラブモジュールは、ＡＮＤゲートアレイを含むことができる。ＡＮＤゲートは、２つの入力を受信して１つの出力を生成する論理デバイスである。一般的には、入力と出力がそれぞれ「０」又は「１」のいずれかの値を有する。両方の入力の値が「１」ならば、出力の値は「１」になる。そうでない場合は、出力の値は「０」になる。アレイの各ゲートは、それぞれが異なるメモリエレメントからの信号である、２つの入力を有する。メモリモジュールは、ＡＮＤゲートアレイの各ゲートからの出力を入力として有するＯＲゲートを含むこともできる。ＯＲゲートは、２つ又はそれより多くの入力を受信して１つの出力を生成する論理デバイスである。入力と出力はそれぞれ、「０」又は「１」のいずれかの値を有する。任意の入力の値が「１」のならば、出力の値は「１」になる。メモリスクラブモジュールは、種々のメモリエレメントのメモリアドレスから多数決値を出力することができる。
【００２４】
したがって、本発明の開示の実施形態は、種々のコンポーネントのシングルイベント効果に対する耐性を有するコンピュータ及びコンピュータシステムを提供する。本発明は、非常に高価で時間を消費するコンポーネント自体の強化を行わずに、これを達成することができる。本発明は、誤りが検出されるまで待つことなくプロセッサのスクラビングを行うことによって、システムの信頼性を著しく向上させる。さらに本発明では、市販のプロセッサやメモリエレメントなどの、市販のコンポーネントを使用することができる。このことによって最先端のコンポーネントを使用でき、そうすることでシステムのパフォーマンスが著しく改善される。
【００２５】
本発明の態様や実施形態を本明細書中で説明するが、このような説明は、今説明しているフォールトトレラント又は自己訂正式のコンピュータシステムの使用や態様の例であり、内容を制限するものではない。
【発明を実施するための最良の形態】
【００２６】
本発明は一般に、１つ又はそれより多くのシングルイベント効果に対して耐性のあるコンピュータシステムとコンピュータコンポーネントに関する。この点について言うと、コンポーネント又はシステムの信頼性の向上のために、幾つかの種類の保護の任意の組み合わせを用いることができる。
【００２７】
開示のコンピュータシステムでは、例えば宇宙環境で、又は高高度航空機が遭遇するであろうシングルイベント効果などの誤り（エラー）に対する耐性がより一層強固になっている。従来のシステムは再同期化可能な冗長コンポーネントを有するシステムを利用してきたが、こういった従来のシステムは一般に、誤りが検出されるまで待機して再同期化を開始する。誤り検出が再同期化の基準として使用されるならば、長期間検出されない誤りによって、コンポーネントの他のセグメントが破壊されてもやむを得ない。例えば、シングルイベント効果によって、１つのプロセッサのメモリビットに誤りが生じる。例えば、もしこのビットは１日に１回しかアクセスされないとすると、２４時間まで再同期化は開始されない。この周期内に別のプロセッサの同じビットもシングルイベント効果の影響を受け、それによって３つのプロセッサの構造で、過半数のプロセッサに障害が起こるかもしれない。本発明は、コンピュータコンポーネントの少なくとも一部に対して、スケジュールされたスクラビングを行うことによってこの問題を解消する。このスクラビングは、他の方法で誤りが検出されなかったとしても、誤りを訂正することができる。
定義
【００２８】
本明細書中で使用される「コンピュータシステム」とは、少なくともコンピュータの一部を形成する１つ又はそれより多くのコンポーネントの構造のことをいう。この構造は、プロセッサ、メモリ及びバスなどのコンポーネントが統合されたセットを含むことができる。
【００２９】
「シングルイベント効果」というフレーズは、単一の独立したイベントによって生じる、プロセッサ又はメモリなどのコンピュータコンポーネントの障害のことをいう。例えば放射線粒子がメモリモジュールのシングルビットに衝突することでシングルイベント効果が生じ、「１」を「０」に変えてしまう。実施形態の説明はシングルイベント効果に対する耐性について言及しているが、この実施の形態の変形例がマルチイベントアップセットに対する耐性を含むことを、当業者なら認識することに注目されたい。こういった変形例も想定されており、本発明の範囲内である。
【００３０】
「宇宙放射線」とは、通常の宇宙環境にみられる放射線のことをいう。通常この種の放射線には、地球の軌道上の宇宙船が遭遇する。この種の放射線は、既存の放射線帯又は惑星外のソースによって生じる。例えばバンアレイン放射線帯には、有害な高エネルギー粒子が存在する。高高度環境にある航空機が、ある種の放射線に遭遇するかもしれない。
【００３１】
本明細書中で使用される「地球の軌道」とは、宇宙船などの物体が地球の周りでたどる経路のことをいう。このような軌道は典型的に楕円形状であるが、放物線状又は双曲線状であってもよい。
【００３２】
「宇宙船」とは、宇宙での使用を意図した人工物体である。この宇宙船は、大部分の衛星の場合のような長期の宇宙配備又は大部分の有人の乗り物のような短期間の使用のいずれかを意図した物体である。宇宙船は、地球の軌道又は惑星間軌道のいずれかにおける宇宙利用を意図している。地球軌道にある航空機は、例えば大部分の通信衛星や気象衛星を含む。
【００３３】
「誤り検出／訂正論理」とは、例えばメモリモジュールにおける誤りを検出しこれを訂正するためのアルゴリズムのことをいう。このようなアルゴリズムは、ソフトウェア、ハードウェア又はファームウェアとして実施することができる。
【００３４】
本明細書中で使用される「機械式遮蔽」とは、潜在的に有害な環境からプロセッサ又はメモリモジュールなどのコンポーネントを遮蔽することを意図した物理的構造体のことをいう。遮蔽の一例は米国特許第5,635,754号に開示されており、この特許全体が参照として本明細書中に援用される。
【００３５】
「フォールトトレラント」という用語は、システム又はコンポーネントが誤りに耐えられる能力のことをいう。フォールトトレランスは、潜在的にカタストロフィックなイベントを軽減するのに有用である。
【００３６】
「プロセッサ」は、マイクロプロセッサなどの任意のコンピュータプロセッサでよい。このようなマイクロプロセッサは一般に、シリコンチップの上に形成され、コンピュータ又はコンピュータシステムの中央演算処理装置（ＣＰＵ）を形成するか又はこれを含むのが常である。
【００３７】
「コントローラ」とは一般に、コンピュータにおけるデータの流れを制御するコンポーネントである。例えばコントローラは、プロセッサから他のコンポーネントへのバスを介したデータの運搬を制御することができる。さらにコントローラは、データの流れを書き取る論理を組み込むことができる。
【００３８】
本明細書中で使用される「過半数」という用語は、グループの総人口のうちの半分以上に相当するグループのことをいう。例えば投票者が３人のシステムでは、２人又は３人が過半数を構成するが、１人では構成できない。
【００３９】
本明細書中で使用される「モジュール」という用語は、ハードウェアコンポーネント、ソフトウェアプログラム、ファンクション、ルーチン、サブルーチンなど、これらの一部又はこれらの組み合わせのいずれかのことをいう。ハードウェアコンポーネントでは、モジュールはより大きなコンポーネントの一部である。逆に、モジュールが１つより多くのコンポーネントを含むこともできる。
【００４０】
本明細書中で使用されるように、「再同期化」という用語は、プロセッサなどのコンポーネントの状態を前の状態に再構成することを意味する。本発明では、プロセッサの再同期化後の状態は、再同期化前の複数のプロセッサからの入力に基づいてコントローラによって決定される。
【００４１】
本明細書中で使用されるように、「リセット」という用語は、コンポーネントの状態を所定の状態に再構成することをいう。リセットによって、コンポーネントをスタートアップ状態に再構成することができる。
【００４２】
「所定の間隔」とは、時間周期、サイクル頻度又はユーザ、プロセッサ、若しくはコントローラが設定する他の尺度のことをいう。時間周期の場合、所定の間隔は例えば１秒、１分、１時間などとなる。この間隔は、マルチイベントの障害が起こる可能性が確実に低くなるように選択される。例えばシングルイベント効果が２４時間毎に１回予測されるならば、プロセッサの再同期化の間隔を１秒に設定することができる。このようにすると、１回の再同期化サイクル（１秒）内に２つの障害が起こる可能性が非常に低くなる。
【００４３】
本明細書中で使用される「サスペンド」という用語は、プロセッサなどのコンポーネントをオフラインにすることをいう。実施例では、プロセッサをリセットのままにしておくことでサスペンドすることができる。実質的には、こうすることによってプロセッサがコンピュータシステム内のオペレーションから除外される。さらに、オペレーティングプロセッサとのリソースコンテンションを防ぐために、プロセッサを孤立させることもできる。
【００４４】
「記録された誤りの発生頻度」とは、コントローラが誤りを検出して記録する度合いのことをいう。例えば上述のように、予測されるシングルイベント効果の度合いが２４時間毎に１回であるならば、記録された誤りの実際の発生頻度は１２時間毎に１回となるであろう。したがってマルチイベントの障害でも同じ確率を維持するために、再同期化の間隔を１秒から１．５秒に変更する。
【００４５】
「プロセッサステート」は、プロセッサ内に設けられるレジスタなどのステートエレメントのセットの値によって定められる。プロセッサステートは、プロセッサ内又はプロセッサ外のいずれかのキャッシュの値によって決定することもできる。プロセッサステートは、間接的にしかアクセスや設定ができない内部プロセッサエレメントによっても定められる。
【００４６】
「メインメモリ」は、メモリエレメント又は１つ若しくはそれより多くのメモリエレメントを含むメモリモジュールである。メインメモリは典型的に、コントローラを介してプロセッサと通信する。開示の実施形態では、メインメモリは同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）と電気的消去プログラム可能読取専用メモリ（ＥＥＰＲＯＭ）を含む。
【００４７】
本明細書中で使用される「復元データ」とは、全てのプロセッサのプロセッサステートの選択されたステートエレメントにおける過半数データに対応するデータのことをいう。全てのプロセッサに対して選択されたステートエレメントそれぞれにおけるデータは、過半数値を決定するために使用される。過半数値は、選択されたステートエレメントそれぞれで決定される。そして選択されたステートエレメント全ての過半数値は、プロセッサを再同期化するために使用される復元データに対応する。
【００４８】
「メモリスクラブモジュール」は、メモリエレメントの保守を容易にするように構成されたソフトウェア、ハードウェア又はファームウェアのいずれかのコンポーネントである。
【００４９】
本明細書中で使用されるように、「アドレス」という用語はメモリエレメント上の位置のことをいう。固有のアドレスは典型的に、メモリエレメントのシングルバイトに対応する。
【００５０】
本発明に係るコンピュータシステムは、複数のプロセッサを有するプロセッサモジュールを組み込んでいる。このプロセッサモジュールは少なくとも３つのプロセッサを含むが、システムの信頼性をさらに向上させるためにより多くのプロセッサを含むこともできる。各プロセッサは、他のプロセッサから独立して、且つパラレルに動作する。プロセッサからの出力は投票論理に与えられる。この投票論理は、プロセッサのうちの１つ又はそれより多くが過半数のプロセッサからの出力と異なる出力を生成したかどうかを決定して誤りを検出することができる。誤りは検出時に記録され、誤りを含むプロセッサのオペレーションをサスペンドする。
【００５１】
投票論理はコントローラに含まれる。このコントローラは他のファンクションやモジュールも含むことができる。特にコントローラは、プロセッサのスクラビングと再同期化をスケジュールされた基準で行うためのスクラビングモジュールを含むことができる。或いは、スクラビングモジュールはその一部又は全体が各プロセッサに存在しそこで実行することができる。スクラビングの一部として、スクラビングモジュールは、プロセッサメモリをメインシステムメモリへとフラッシュし、プロセッサメモリの比較によって生成された復元データを用いてプロセッサメモリを復元する。
システムアーキテクチャ
【００５２】
図１は、スケジュールされたスクラビングによってフォールトトレランスを提供するためのコンピュータシステムの１実施形態を示す。例示のシステム１００は、システムコントローラ１０４と通信するプロセッサモジュール１０２を含む。プロセッサモジュール１０２は、パラレルに動作する３つの別個で独立したプロセッサ１０２ａ−ｃを含む。プロセッサ１０２ａ−ｃは、多数の種類のプロセッサのうちのどれでもよい。市販されている最先端のプロセッサが設けられるのが好ましい。より一層のパフォーマンスを実現するために、ＰｏｗｅｒＰＣ９プロセッサを使用するのがより好ましい。各プロセッサ１０２ａ−ｃは、レジスタなどのプロセッサステートエレメントの対応するセットを有する。プロセッサステートエレメントは各プロセッサ１０２ａ−ｃの内部に統合されてもよいし、外部に配置されてもよい。
【００５３】
最先端のプロセッサを使用することによって、コンピュータシステム１００は優れたパフォーマンスを実現することができる。もちろん最先端のプロセッサは、プロセッサの選択のタイミングに大いに依存している。これまでプロセッサの速度は、１８ヶ月毎に２倍になってきた。したがって幾つかのアプリケーションで最先端のプロセッサを使用できることによって、多大な利点がもたらされる。例えば多くの宇宙アプリケーションでは、ミッションの計画時にコンピュータシステムがアセンブルされるが、そのミッションは実際には数年後まで開始されないかもしれない。よりパフォーマンスの向上したコンピュータシステムを提供できるように、打ち上げ日近くにプロセッサを選択することができる。
【００５４】
システムコントローラ１０４は幾つかの機能を実行する。コントローラは主に、コンピュータシステムに設けられてデータの流れを方向付ける。例えばＳＣＳＩ又はＰＣＩコントローラは、幾つかの周辺装置へのデータの流れを制御する。図１に示す実施形態では、コントローラ１０４はプロセッサモジュール１０２、メモリモジュール１０６、及びプライマリバス１０８の間のデータの流れを制御する。図１に示す実施形態のシステムコントローラ１０４はまた、図２及び３を参照して以下に説明するように、プロセッサで生じ得る誤りを検出しこれを訂正するためのスクラビングモジュール１０５も含む。或いはスクラビングモジュール１０５は、その一部又は全体のいずれかが各プロセッサ１０２ａ−ｃ内に存在するか又は各プロセッサ内で動作することができる。
【００５５】
メモリモジュール１０６は、コンピュータシステム１００のプライマリシステムメモリである。このメモリは、プロセッサモジュール１０２への命令を含む、永久に保存される情報を含むことができる。さらに、プロセッサモジュール１０２が使用し、且つ／又は更新するデータも保存することができる。１実施形態では、メモリモジュール１０６は２５６メガバイトのＳＤＲＡＭ１０７と４メガバイトのＥＥＰＲＯＭ１０９を含む。図５を参照して以下に説明するように、メモリモジュール１０６の１実施形態は、３つ又はそれより多くのミラーメモリエレメントを含む。
【００５６】
バス１０８は、一般的なコンピュータで使用される標準的なバスでよい。例示の実施形態では、バス１０８は種々のコンポーネントと通信する。システムコントローラ１０４に加えて、バス１０８はパラレルポート１１２やフラッシュメモリ１１４と通信を行う。
フォールトトレラントプロセッサモジュール
【００５７】
図２は、プロセッサモジュール１０２にフォールトトレランスを提供するための１つの構造２００を示す。上述のように、プロセッサモジュール１０２は複数のプロセッサ１０２ａ−ｃを含む。図１及び２の実施形態は３つのプロセッサを示すが、追加してプロセッサを提供することで更なるフォールトトレランスを実現することができる。この点について言うと、３つのプロセッサを有するプロセッサモジュール１０２は、シングルイベント効果に対する保護を行う。追加のプロセッサはそれぞれ別のアップセットイベントに対する保護を行う。例えば５つのプロセッサのモジュールは、３つまでのシングルイベント効果に対する保護を行うことができる。
【００５８】
プロセッサ１０２ａ−ｃはパラレルに動作する。幾つかの実施形態では、プロセッサ１０２ａ−ｃは完全に同期して動作する。これは、例えば同期信号をプロセッサに伝送することでプロセッサ１０２ａ−ｃを実質的にロックステップで動作させることで実現することができる。
【００５９】
例示の実施形態では、コントローラ１０４は投票論理２０１を含み、この論理はゲートのセットとして実施されてプロセッサ１０２ａ−ｃの多数決信号値を決定する。投票論理２０１は、各プロセッサ１０２ａ−ｃから受信した有効な関連信号毎に動作するように構成されている。この点について言うと、投票論理２０１はプロセッサ１０２ａ−ｃからのあらゆるアドレス、データ又は制御信号における誤りを検出することができる。
【００６０】
ＡＮＤゲートアレイ２０２が、プロセッサ１０２ａ−ｃからの入力を各クロックサイクルで受信するように設けられている。各ＡＮＤゲート２０２ａ−ｃは、ある１つのプロセッサからの第１の入力と、別のプロセッサからの第２の入力を有する。総合して、ゲートアレイ２０２の複数のＡＮＤゲートは、プロセッサモジュール１０２のプロセッサの起こり得る各ペアからの入力を含む。したがってゲートアレイ２０２に必要なＡＮＤゲートの数は、プロセッサの数に依存する。例えば３つのプロセッサのモジュールの場合、ゲートアレイ２０２は３つのＡＮＤゲートを含み、一方５つのプロセッサを有するプロセッサモジュールは１０個のＡＮＤゲートを必要とすることになる。
【００６１】
ゲートアレイ２０２の各ＡＮＤゲート２０２ａ−ｃからの出力は、ＯＲゲート２０４へと向けられる。ＯＲゲートへの入力の数はゲートアレイ２０２のＡＮＤゲートの数に依存し、ＡＮＤゲートの数は上述のようにプロセッサモジュール１０２のプロセッサの数に依存する。ゲートアレイが、他の多数決論理システムや方法と同様に、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）であることが、当業者には理解されるであろう。ＯＲゲート２０４の出力は、プロセッサ１０２ａ−ｃからの信号の多数決値を提供することになる。
【００６２】
図７は、少数信号を生成するプロセッサを識別するための構造を示す。この点について言うと、プロセッサモジュール１０２の任意の２つのプロセッサ１０２ａ−ｃの間に何らかの不一致がある場合に誤りが検出される。このような誤りが検出された場合、コントローラ１０４は多数決出力信号を生成することで正しい信号と誤り信号とを区別する。正しい信号は過半数のプロセッサから受信された信号と定義され、一方誤り信号は少数のプロセッサから受信された信号と定義される。この構造７００はＸＯＲゲートアレイ７０２を含み、各ゲートは２つのプロセッサからの入力を受信する。アレイ７０２のＸＯＲゲート７０２ａ、７０２ｂのセットは、特定のプロセッサ１０２ａに対応する。このセットの各ゲート７０２ａ、７０２ｂは特定のプロセッサ１０２ａから第１の入力を受信し、これとは別のプロセッサ１０２ｂ、１０２ｃのうちの１つから第２の入力を受信する。したがって各ＸＯＲゲートは、特定のプロセッサからの信号が任意の他のプロセッサからの信号と異なるかどうかを検出する。このセットの各ＸＯＲゲート７０２ａ、７０２ｂの出力は、ＡＮＤゲートアレイ７０４のＡＮＤゲート７０４ａに入力される。したがってもし特定のプロセッサ１０２ａからの信号が残りのプロセッサの過半数からの信号と異なるならば、ＡＮＤゲート７０４ａは特定のプロセッサに対して誤り信号を出力する。この構造は、プロセッサモジュール１０２の各プロセッサ１０２ａ−ｃに対して繰り返される。プロセッサが有効データを出力することを期待されている場合、出力誤り信号は有効とみなすことができ、プロセッサが有効データを出力することを期待されていない場合、出力誤り信号はマスクされることができる。
【００６３】
こうしてコントローラ１０４は誤り信号を伝送するプロセッサを識別し、そのプロセッサのオペレーションをサスペンドする。プロセッサのオペレーションのサスペンドは、プロセッサをリセットモードにしておくことによって達成することができる。さらにサスペンドされたプロセッサは、動作中のプロセッサ又は他のデバイスとのリソースコンテンションを防ぐように孤立させられる。そしてコントローラ１０４はその誤りをシステムメモリ１０６に記録する。この記録は、時間、クロックサイクル数などによって示される、誤り信号のタイミングの表示を含む。さらにこの記録は障害の起こったプロセッサの識別を含んでもよい。そしてコンピュータシステム１００は、１つ少ないプロセッサでオペレーティングを続けることができる。残りの数のプロセッサが依然として誤り信号から多数決信号を識別することができるならば、コントローラ１０４は投票論理２０１を使用し続けて誤りを検出し障害の起こったプロセッサを識別する。そうでなければ、２つのプロセッサが実行中の３つのプロセッサのモジュール１０２の場合のように、投票論理２０１は（２つのプロセッサの不一致によって）誤りを検出することはできるが、２つの信号のうちのどちらが誤っているのかを識別することができない。２つのプロセッサが相反する信号値を生成する場合のように、有効多数決信号が決定できない場合、例えばコントローラ１０４は、誤り出力信号を防ぐためにプロセッサモジュール１０２のオペレーションを停止することができる。
【００６４】
上述のようにコントローラ１０４は、プロセッサ１０２ａ−ｃから受信した各信号に投票論理２０１を適用する。したがってプロセッサ１０２ａ−ｃは、１秒で何百万ものクロックサイクルを完了させることができる。これらのクロックサイクルのいずれかの最中に誤りが検出されると、障害の起きたプロセッサのオペレーションがサスペンドされる。しかしながら誤りの訂正は、誤りの検出時には開始されない。プロセッサ１０２ａ−ｃのスクラビングは、誤りの検出の有無に関わらず定期的な間隔で又は所定のマイルストンの到達時に生じるように、スケジュールされる。したがって、プロセッサを次のスケジュールされたスクラビングまでリセットのままにすることができる。
【００６５】
プロセッサ１０２ａ−ｃのスクラビングの開始のマイルストンは、システム１００の所望のレベルの信頼性に応じて決定することができる。この信頼性は、スクラビング頻度と予測される誤りの発生頻度の関数である。例えば静止軌道（ＧＳＯ）にある宇宙船の場合、アップセットイベントはおよそ１〜１０日毎に１回と予測される。この予測誤り率では、秒当たり１回のスクラビング頻度によって、３つのプロセッサのモジュールで予測寿命が約12,000年の信頼性のあるプロセッサモジュールを提供することができる。換言すると、３つのプロセッサのモジュールのうちの２つの別々のプロセッサが１秒以内にシングルイベント効果を被る頻度は、12,000年毎に１回である。
スクラビング及び再同期化
【００６６】
図３は、コントローラ１０４又はコントローラ１０４内のスクラビングモジュールがプロセッサ１０２ａ−ｃのスクラビングを実行するプロセス３００を示す。所定のマイルストンに到達すると、各プロセッサ１０２ａ−ｃのレジスタ又はキャッシュなどのプロセッサステートエレメント１０３ａ−ｃがフラッシュされる（ブロック３１０）。各プロセッサからフラッシュされたデータは、メモリモジュール１０６のＳＤＲＡＭ１０７に保存される。好適な１実施形態では、ＳＤＲＡＭ１０７はリードソロモン訂正などの誤り訂正論理を含み、システムメモリを個々に保護する。
【００６７】
メモリモジュール１０６に保存されたデータは、再同期化のためにプロセッサステートエレメント１０３ａ−ｃを復元するのに使用される復元データとして使用される。１実施形態では、復元データは全てのプロセッサステートエレメント１０３ａ−ｃからのデータをビット毎又はワード毎に比較することによって、フラッシュの最中に作成することができる。例えば、各プロセッサの特定のステートエレメントのワード又は値が不一致かどうか調べることができる。過半数のプロセッサのステートエレメントに対応するワード又は値が、復元データで使用される。したがってプロセッサが特定のステートエレメントにすぐにアクセスできないことで誤りの検出が妨げられたとしても、スクラビングプロセスは未検出の誤りを訂正することができる。
【００６８】
プロセッサステートエレメント１０３ａ−ｃのフラッシュは、これに続くスクラビングと同様に、プロセッサステートエレメントの一部だけに実行してもよい。例えば、プロセッサステートエレメントを１０個のセグメントに分離することができる。スクラビングモジュールがスクラビングプロセス３００を開始する度に、セグメントが１つだけフラッシュされスクラブされる。この点について言うと、１０回のスクラビングサイクルの後に、全てのステートエレメント１０３ａ−ｃがスクラブされることになる。
【００６９】
多くのプロセッサには、Ｌ１、Ｌ２及びＬ３などのレベルの階層で指定された多数のキャッシュメモリが設けられている。図８はこのような構造の１つを示す。図８に示すように、１つ又はそれより多くのキャッシュ８０４がプロセッサ１０２ａ−ｃ内にあり、他のキャッシュ８０６、８０８はプロセッサの外にある。キャッシュは典型的に、より速いアクセスのために最も最近使用されたデータと命令を保存する目的で使用される。したがってＬ１キャッシュ８０４は最も最近のデータを含み、Ｌ２キャッシュ８０６はその次に最近のデータを含む。この構造では、ＣＰＵ８０２は最初に特定のデータ値を求めてＬ１キャッシュ８０４にアクセスを試み、次にＬ２キャッシュ８０６、その次にＬ３キャッシュ８０８にアクセスを試みる。中には非常に大きなキャッシュもあり、スクラブサイクル中にメインメモリへとフラッシュするのに非常に大量の時間を要する。この時間を短縮するために、キャッシュ８０４、８０６、８０８をライトスルーキャッシュとして構成することができる。Ｌ１キャッシュは通常比較的小さいため、Ｌ１キャッシュをライトバックモードにし、Ｌ２／Ｌ３キャッシュをライトスルーモードにする構造が可能で、データはＬ２／Ｌ３キャッシュに保存されメインメモリにも送られる。したがって、スクラビングサイクル中のライトスルーキャッシュ（この例ではＬ２／Ｌ３）のフラッシュを回避でき、メインメモリの更新も必要ない。全てのキャッシュをライトスルーモードにするような、ライトスルーとライトバックの他の構造をとることもできるが、これはさらにパフォーマンスのトレードオフをとることになる。
【００７０】
１実施形態では、一旦プロセッサステートエレメントがフラッシュされると、プロセッサ１０２ａ−ｃはリセットされる（ブロック３２０）。この点について言うと、レジスタなどのプロセッサステートエレメントが空になるか又はゼロなどの所定の値に設定される。さらに、キャッュはリセット中に空になる。別の実施形態では、プロセッサ１０２ａ−ｃはフラッシュ後にリセットされない。その代わり以下に説明するように、選択されたプロセッサステートエレメントの値が単に復元データに置き換えられる。幾つかのプロセッサステートエレメントには間接的にしかアクセスできないため、こういったエレメントは間接的に再作成されて再同期化のための類似のプロセッサステートエレメントを生成する。
【００７１】
ブロック３３０で、復元データがプロセッサモジュール１０２の各プロセッサ１０２ａ−ｃに復元される。プロセッサステートの復元によって、プロセッサが再同期化される。そしてプロセッサは、同期信号をコントローラから伝送されることでロックステップで動作し続ける。次いでシステム１００は、誤りが検出されるか又は次のスクラブサイクルが始まるまで機能する全てのプロセッサ１０２ａ−ｃと共に動作し続ける。
【００７２】
１実施形態では、システム１００の信頼性のレベルを自動的に維持するために誤り検出が使用される。この点について言うと、プロセッサモジュール１０２のスクラビング中、コントローラのスクラブモジュールは、前のスクラブ間隔で誤りが記録されたかどうかを決定する（ブロック３５０）。これは、記録された誤りを求めてログデータにアクセスすることによって達成できる。前のスクラブ間隔で誤りが記録されていなければ、スクラブモジュールはブロック３８０へと進みスクラブ間隔が終了するまで待機する。他方でもし前のスクラブ間隔で誤りが記録されていたならば、スクラブモジュールは最後の２つの誤りの間にあるスクラブ間隔の数を決定する。この間隔の数を閾値と比較する（ブロック３６０）。
【００７３】
この閾値は、現在の間隔の長さ又は所望の信頼性の関数として決定することができる。上記の例では、所望の信頼性に対して、１〜１０日毎に１つの誤りが生じると仮定して１秒のスクラブ間隔が選択された。この例では、２４時間の閾値を設定することができる。
【００７４】
サイクルの数が閾値よりも大きい場合、スクラブモジュールはブロック３８０へと進み、スクラブ間隔の長さが過ぎ去るのを待つ。他方で、前の２つの誤りの間にある間隔の数が２４時間周期だけに対応するとスクラブモジュールが決定したならば、このスクラブモジュールはサイクルの数が閾値よりも小さいと決定して新しいスクラブ間隔を計算する（ブロック３７０）。新しい誤り率が２つの前に記録された誤りの間にあるサイクルの数に基づくと仮定して、所望の信頼性を維持できるようにスクラブ間隔の計算を実行する。このようにしてプロセッサモジュール１０２とシステム１００の所望の信頼性が維持される。
【００７５】
一般に従来のフォールトトレラントシステムは、誤りが検出されたときに割込み信号を生成する。この割込み信号はオペレーティングシステムに命令し、全てのタスクを停止させて誤り訂正を実行させる。好ましいスクラビングシーケンスは、プロセッサやコントローラが実行している他のタスクを中断すべきではない。この点について言うと、スクラビングシーケンスは、オペレーティングシステムが正確な位置でオペレーションを再開できるように、オペレーティングシステム又はソフトウェアのオペレーションの所定の位置で開始されるべきである。図４は、スクラビングサイクルの開始のためのソフトウェアインプリメンテーションの１実施形態を示す。
【００７６】
構造６００のオペレーティングシステム６１０などのオペレーティングシステムは一般に、一度に多数のタスクを実行するように設計されている。オペレーティングシステムは典型的に、時間ブロック又はクロックサイクルを各タスクに割り当てることによってこれらのタスクを周期的に繰り返す。例えばオペレーティングシステム６１０は、１６ミリ秒をタスク６２０ａ−ｃのそれぞれに割り当てる。したがってオペレーティングシステム６１０は、タスク１６２０ａに１６ミリ秒使い、次いでタスク２６２０ｂに１６ミリ秒使う、というようになる。開示の実施形態では、シングルビット６３０がオペレーティングシステムに与えられており、各タスクの間又は特定のタスク後のいずれかにチェックされる。したがって、例えばオペレーティングシステムが時間ブロックをタスク３６２０ｃに割り当てる度に、このビット６３０の値をチェックする。ビット６３０は、スクラビングサイクルの開始のための、時間間隔などのマイルストンに到達したときに「１」に設定されるように構成することができる。そうでない場合ビット６３０は「０」に設定される。この点について言うと、割込みを送るのではなく、コントローラ又はスクラブモジュールが単に信号を送信してビットの値を変更してもよい。
【００７７】
オペレーティングシステム６１０が、ビット６３０の値が「１」であると検出した場合、オペレーティングシステム６１０は１つ又はそれより多い時間ブロックをスクラブタスク６４０に割り当てる。スクラブタスク６４０が完了すると、オペレーティングシステム６１０は、時間ブロックの種々のタスク６２０ａ−ｃへの割り当てを続ける。このようにして、どのタスクもスクラビングモジュールによって中断されず、リアルタイムソフトウェアへの割込みを最小にしてシステム１００のパフォーマンスが向上する。ユーザが定義したコントロールを使用して、リアルタイムソフトウェアへの割込みが回避できる理想時間までスクラビングと再同期化を禁止することもできる。
フォールトトレラントメモリモジュール
【００７８】
プロセッサにフォールトトレランスを提供することに加えて、コンピュータシステムはフォールトトレラントメモリコンポーネントを含むこともできる。好適な１実施形態では、メモリモジュール１０６には誤り検出／訂正論理が設けられている。さらに好適な実施形態では、誤り検出／訂正論理はリードソロモンアルゴリズムを含む。このような誤り検出／訂正論理の好適な１実施例が、その全体が本明細書中に参照として援用される、”Byte-Parallel
System for Implementing Reed-Solomon Error-Correcting Codes”というタイトルの米国特許第5,754,563号に開示されている。
【００７９】
別の実施形態では、フォールトトレラントメモリモジュールは、図２を参照して上述したプロセッサ用のものに類似する、モジュール冗長の形態を用いる。このような実施形態の１つが図５に示される。メモリモジュール１０６には、３つ又はそれより多くのメモリエレメント１０６ａ−ｃが設けられている。メモリエレメント１０６ａ−ｃはミラーで、ＳＤＲＡＭ１０７及びＥＥＰＲＯＭ１０９を含むメモリモジュール１０６の任意の一部又は全体でもよい。ミラーメモリエレメント１０６ａ−ｃは同一の命令に従い、同一のステップを実行する。したがって誤りがない場合、各メモリエレメント１０６ａ−ｃは他と同一である。
【００８０】
メモリエレメント１０６ａ−ｃからの入力を受信するために、ＡＮＤゲートアレイ４０２が設けられる。この入力は、例えば特定のアドレスのエントリの値である。アレイ４０２の各ＡＮＤゲート４０２ａ−ｃは、２つの異なるメモリエレメント１０６ａ−ｃからそれぞれ１つずつで２つの入力を受信する。各ＡＮＤゲート４０２ａ−ｃからの出力は、ＯＲゲート４０４に向けられる。ＯＲゲート４０４の出力は、メモリエレメントからの入力の多数決を示している。コントローラ１０４はすぐに、障害の起こったメモリエレメントの特定のアドレスのエントリを正しい値に置き換える。そしてメモリモジュール１０６は、通常のオペレーションを再開する。
【００８１】
メモリモジュール１０６の上述の誤り検出／訂正は、コントローラ１０４がメモリエレメント１０６ａ−ｃに対して読み取りや書き込みを行う度に実行することができる。このようにして、読み取り又は書き込みのためにアクセスされたアドレスだけが、誤り検出／訂正のために処理される。
【００８２】
別の実施形態では、メモリモジュール１０６の定期的にスケジュールされたスクラビングも実行することができる。この実施形態では、定期的な所定の間隔で、誤り検出／訂正論理を各メモリエレメント１０６ａ−ｃの全てのアドレスに適用することができる。したがって、メモリモジュール１０６全体をスクラブして誤りをなくすことができる。
放射線遮蔽
【００８３】
上述のハードウェア、ソフトウェア又はファームウェアの保護に加えて、コンピュータシステム１００の種々のコンポーネントには、放射線粒子からの保護のための機械式遮蔽材が設けられている。このような遮蔽の例としては、米国特許第5,635,754号、第5,825,042号、第5,889,316号及び第6,262,362号（それぞれ全体が参照として本明細書中に援用される）を参照することができる。
【００８４】
図６Ａ及び６Ｂは、コンピュータコンポーネントの保護のための放射線遮蔽材の一例を示す。示された例では、保護されたモジュール５００は、基板５０４上に取り付けられたプロセッサ又はメモリなどのコンピュータコンポーネント５０２を含む。放射線遮蔽材５０６は、コンポーネント５０２が基板５０４取り付けられる前にこの基板５０４に取り付けられて、コンポーネント５０２の底部を保護する。さらに第２の放射線遮蔽材５０８がコンポーネントキャビティの上に取り付けられて、コンポーネント５０２の上部を保護する。好適な実施形態では、遮蔽材５０６、５０８はマクスウェルテクノロジーズ社（Maxwell Technologies, Inc.）から市販されているＲＡＤ−Ｐａｋ９の遮蔽材である。放射線軽減スペーサ材５１０がコンポーネントキャビティの周辺に位置し、第２の放射線遮蔽材５０８に係合してコンポーネント５０２の完全なラインオブサイト放射線保護を行う。
【００８５】
好適な実施形態では、図６Ａ及び６Ｂを参照して上述したように各コンポーネントは別々に遮蔽される。このようにして遮蔽材の重さを最小化する。別の実施形態では、コンピュータシステム１００全体が放射線遮蔽材によって保護される。この点について言うと、図６Ａ及び６Ｂで上述したコンピュータコンポーネント５０２を、例えばシングルボード上のコンピュータシステムに置き換えることができる。そして放射線遮蔽材を適当な大きさにして所望の保護を行うことができる。
【００８６】
好適な実施形態や方法を示して説明してきたが、多数の変更が本発明の趣旨又は範囲から逸脱することなくなされ得ることが、当業者には明らかであろう。したがって本発明は、特許請求の範囲にしたがう以外に、制限されることがない。
【図面の簡単な説明】
【００８７】
【図１】本発明の１実施形態に係るフォールトトレラントコンピュータシステムの実施形態の機能ブロック図である。
【図２】プロセッサの障害に対する耐性を提供するための構造の概略表示である。
【図３】本発明の１実施形態に係るプロセッサのスクラビングを示すフローチャートである。
【図４】スクラビングを開始するための１つのソフトウェアインプリメンテーションを示す。
【図５】メモリモジュールの障害に対する耐性を提供するための構造の概略表示である。
【図６】図６Ａ及び図６Ｂは、放射線遮蔽を備えたフォールトトレラントコンピュータコンポーネントを示す。
【図７】障害の起こったプロセッサの識別のための構造の概略表示である。
【図８】本発明に係るプロセッサモジュールの１実施形態の機能ブロック図である。
【図１】
0004545146.tif 000002
【図２】
0004545146.tif 000003
【図３】
0004545146.tif 000004
【図４】
0004545146.tif 000005
【図５】
0004545146.tif 000006
【図６】
0004545146.tif 000007
【図７】
0004545146.tif 000008
【図８】
0004545146.tif 000009