(57)【要約】  本発明の１つの実施形態は、冗長なプロセッサを利用することによって、フォルトトレランスを容易にするシステムを提供する。このシステムは、ロックステップにおいて同一のコードを実行する複数の冗長なプロセッサから、ストアオペレーションを受信することによって動作する。システムは、ストアオペレーションが一致するかどうかを判断するために、ストアオペレーションを比較し、それにより、冗長なプロセッサが正しく動作していることを示す。ストアオペレーションが一致する場合、システムは、ストアオペレーションを、結合されたストアオペレーションへ結合し、結合されたストアオペレーションを、冗長なプロセッサの間で共用されるシステムメモリへ転送する。ストアオペレーションが一致しない場合は、システムは、エラー状態を示す。この実施形態の改変では、システムは同様にストアオペレーションを結合する。
2005512162.tif 000002
【特許請求の範囲】
【請求項１】
冗長なプロセッサを利用することによってフォルトトレランスを提供する方法であって、
ロックステップにおいて同一のコードを実行する複数の冗長なプロセッサから、複数のストアオペレーションを受信するステップと、
該複数のストアオペレーションが一致するかどうかを判断するために、該複数のストアオペレーションを比較するステップであって、それにより、該複数の冗長なプロセッサが、正しく動作していることを示す、ステップと、
該複数のストアオペレーションが一致しない場合に、エラー状態を示すステップと、
該複数のストアオペレーションが一致する場合に、
該複数のストアオペレーションを、結合されたストアオペレーションへ結合するステップと、
該結合されたストアオペレーションを、該複数の冗長なプロセッサの間で共用されるシステムメモリへ転送するステップと
を包含する、方法。
【請求項２】
前記エラー状態を操作するステップは、前記結合されたストアオペレーションに対してデータワードにエラーフラグを設定するステップと、該結合されたストアオペレーションを該システムメモリへ転送するステップとを包含する、請求項１に記載の方法。
【請求項３】
前記エラー状態を操作するステップは、過半数の前記複数のストアオペレーションが一致するかどうかを判断するステップと、
該過半数の複数のストアオペレーションが一致する場合、
該過半数を、前記結合されたストアオペレーションへ結合するステップと、
該結合されたストアオペレーションを、前記システムメモリへ転送するステップと、
過半数が存在しない場合、
該結合されたストアオペレーションに対してデータワードにエラーフラグを設定するステップと、
該結合されたストアオペレーションを、該システムメモリへ転送するステップと
を包含する、請求項１に記載の方法。
【請求項４】
前記複数の冗長なプロセッサから、複数のロードオペレーションを受信するステップと、
該複数のロードオペレーションが一致するかどうかを判断するために、該複数のロードオペレーションを比較するステップであって、それにより、該複数の冗長なプロセッサが、正しく動作していることを示す、ステップと、
該複数のロードオペレーションが一致しない場合に、エラー状態を示すステップと、
該複数のロードオペレーションが一致する場合に、
該複数のロードオペレーションを、結合されたロードオペレーションへ結合するステップと、
該結合されたロードオペレーションを、システムメモリへ送信するステップと、
該システムメモリからリターンデータ値を受信するステップと、
該リターンデータ値を、該複数の冗長なプロセッサへブロードキャストするステップと
をさらに包含する、請求項１に記載の方法。
【請求項５】
前記複数の冗長なプロセッサの１つにおいて、前記リターンデータ値を受信するステップと、
該リターンデータ値のエラーフラグを試験するステップと、
該エラーフラグがセットされる場合に、エラー操作ルーティンにトラップするステップと
をさらに包含する、請求項４に記載の方法。
【請求項６】
前記システムメモリは、下位レベルキャッシュメモリを含む、請求項１に記載の方法。
【請求項７】
前記複数の冗長なプロセッサから、複数の無効メッセージを受信するステップであって、
該複数の無効メッセージは、特定のキャッシュラインが、前記コンピュータシステムにおける他のキャッシュにおいて無効化されるべきであることを示す、ステップと、
該複数の無効メッセージを、結合された無効メッセージへ結合するステップと、
該結合された無効メッセージを、該コンピュータシステムにおける前記他のプロセッサへ伝達するが、該複数の冗長なプロセッサに対しては伝達しないステップと
をさらに包含する、請求項１に記載の方法。
【請求項８】
特定のキャッシュラインが無効化されるべきであることを示す無効メッセージを受信するステップであって、
該無効メッセージは、前記複数の冗長なプロセッサの１つではない別のプロセッサのアクションの結果として、生成される、ステップと、
該無効メッセージを、全ての該複数の冗長なプロセッサに対してブロードキャストするステップと
をさらに含む、請求項１に記載の方法。
【請求項９】
冗長なプロセッサを利用することによって、フォルトトレランスを提供する装置であって、
ロックステップにおいて同一のコードを実行するように構成される複数の冗長なプロセッサと、
該複数の冗長なプロセッサの間で共用されるシステムメモリと、
該複数の冗長なプロセッサを、該システムメモリと接続するスイッチであって、該スイッチは、該複数の冗長なプロセッサから複数のストアオペレーションを受信するように構成される、スイッチと、
該複数のストアオペレーションが一致するかどうかを判断するために、該複数のストアオペレーションを比較するように構成される該スイッチ内の比較メカニズムであって、それにより、該複数の冗長なプロセッサが正しく動作していることを示す、比較メカニズムと、
該比較メカニズムに接続される転送メカニズムであって、該複数のストアオペレーションが一致する場合に、該転送メカニズムは、
該複数のストアオペレーションを、結合されたストアオペレーションへ結合し、
該結合されたストアオペレーションを、該システムメモリへ転送する
ように構成される、該転送メカニズムと、
該複数のストアオペレーションが一致しない場合に、エラー状態を示すように構成されるエラー操作メカニズムと
を含む、装置。
【請求項１０】
前記エラー操作メカニズムは、
前記結合されたストアオペレーションに対するデータワードに、エラーフラグをセットし、
該結合されたストアオペレーションを、前記システムメモリへ転送する
ように構成される、請求項９に記載の装置。
【請求項１１】
前記エラー操作メカニズムは、
過半数の前記複数のストアオペレーションが一致するかどうかを判断し、
該過半数の該複数のストアオペレーションが一致する場合に、該エラー操作メカニズムは、
該過半数を、前記結合されたストアオペレーションへ結合し、
該結合されたストアオペレーションを、前記システムメモリへ転送する
ように構成され、
過半数が存在しない場合に、該エラー操作メカニズムは、
該結合されたストアオペレーションに対してデータワードにエラーフラグをセットし、
該結合されたストアオペレーションを、該システムメモリへ転送する
ように構成される、請求項９に記載の装置。
【請求項１２】
前記スイッチは、
前記複数の冗長なプロセッサから、複数のロードオペレーションを受信し、
該複数のロードオペレーションが一致するかどうかを判断するために、該複数のロードオペレーションを比較し、それにより、該複数の冗長なプロセッサが、正しく動作していることを示し、
該複数のロードオペレーションが一致しない場合に、エラー状態を示し、
該複数のロードオペレーションが一致する場合に、
該複数のロードオペレーションを、結合されたロードオペレーションへ結合し、
該結合されたロードオペレーションを、前記システムメモリへ送信し、
該システムメモリからリターンデータ値を受信し、
該リターンデータ値を、該複数の冗長なプロセッサへブロードキャストする
ようにさらに構成される、請求項９に記載の装置。
【請求項１３】
前記複数の冗長なプロセッサの各々は、
該複数の冗長なプロセッサの１つにおいて、前記リターンデータ値を受信し、
該リターンデータ値のエラーフラグを試験し、
該エラーフラグがセットされる場合、エラー操作ルーティンにトラップする
ように構成される、請求項１２に記載の装置。
【請求項１４】
前記システムメモリは、下位レベルキャッシュメモリを含む、請求項９に記載の装置。
【請求項１５】
前記スイッチは、
前記複数の冗長なプロセッサから、複数の無効メッセージを受信し、該複数の無効メッセージは、特定のキャッシュラインが、該複数の冗長なプロセッサを含むコンピュータシステムにおける他のプロセッサにおいて、無効化されるべきであることを示し、
該複数の無効メッセージを、結合された無効メッセージへ結合し、
該結合された無効メッセージを、該コンピュータシステムにおける該他のプロセッサへ伝達するが、該複数の冗長なプロセッサに対しては伝達しない
ようにさらに構成される、請求項９に記載の装置。
【請求項１６】
前記スイッチは、
特定のキャッシュラインが無効化されるべきであることを示す無効メッセージを受信し、該無効メッセージは、前記複数の冗長なプロセッサの１つではない別のプロセッサのアクションの結果として、生成され、
該無効メッセージを、全ての該複数の冗長なプロセッサに対してブロードキャストする
ようにさらに構成される、請求項９に記載の装置。
【請求項１７】
前記スイッチは、
前記複数の冗長なプロセッサから前記システムメモリへ通信するための第１の単一方向のスイッチと、
該システムメモリから該複数の冗長なプロセッサへ通信するための第２の単一方向のスイッチと
を含む、請求項９に記載の装置。
【請求項１８】
冗長なプロセッサを利用することによって、フォルトトレランスを提供する装置であって、
ロックステップにおいて同一のコードを実行するように構成される複数の冗長なプロセッサと、
該複数の冗長なプロセッサの間で共用されるシステムメモリであって、該システムメモリは、下位レベルキャッシュメモリを含む、システムメモリと、
該複数の冗長なプロセッサを、該システムメモリと接続するスイッチであって、該スイッチは、該複数の冗長なプロセッサから複数のストアオペレーションを受信するように構成される、スイッチと、
該複数のストアオペレーションが一致するかどうかを判断するために、該複数のストアオペレーションを比較するように構成される該スイッチ内の比較メカニズムであって、それにより、該複数の冗長なプロセッサが正しく動作していることを示す、比較メカニズムと、
該比較メカニズムに接続された転送メカニズムであって、該複数のストアオペレーションが一致する場合に、該転送メカニズムは、
該複数のストアオペレーションを、結合されたストアオペレーションへ結合し、
該結合されたストアオペレーションを、該システムメモリへ転送する
ように構成される、該転送メカニズムと、
該複数のストアオペレーションが一致しない場合に、エラー状態を示すように構成されるエラー操作メカニズムと
を含み、
該スイッチは、
該複数の冗長なプロセッサから、複数の無効メッセージを受信し、該複数の無効メッセージは、特定のキャッシュラインが、該複数の冗長なプロセッサを含むコンピュータシステムにおける他のプロセッサにおいて、無効化されるべきであることを示し、
該複数の無効メッセージを、結合された無効メッセージへ結合し、
該結合された無効メッセージを、該コンピュータシステムにおける該他のプロセッサと通信するが、該複数の冗長なプロセッサと通信しない、
ようにさらに構成される、装置。
【請求項１９】
前記エラー操作メカニズムは、
前記結合されたストアオペレーションに対してデータワードにエラーフラグをセットし、
該結合されたストアオペレーションを前記システムメモリへ転送する
ように構成される、請求項１８に記載の装置。
【請求項２０】
前記エラー操作メカニズムは、
過半数の前記複数のストアオペレーションが一致するかどうかを判断し、
該過半数の該複数のストアオペレーションが一致する場合に、該エラー操作メカニズムは、
該過半数を、前記結合されたストアオペレーションへ結合し、
該結合されたストアオペレーションを、前記システムメモリへ転送する
ように構成され、
過半数が存在しない場合は、該エラー操作メカニズムは、
該結合されたストアオペレーションに対してデータワードにエラーフラグをセットし、
該結合されたストアオペレーションを、該システムメモリへ転送する
ように構成される、請求項１８に記載の装置。
【請求項２１】
前記スイッチは、
前記複数の冗長なプロセッサから、複数のロードオペレーションを受信し、
該複数のロードオペレーションが一致するかどうかを判断するために、該複数のロードオペレーションを比較し、それにより、該複数の冗長なプロセッサが、正しく動作していることを示し、
該複数のロードオペレーションが一致しない場合に、
エラー状態を示し、
該複数のロードオペレーションが一致する場合に、
該複数のロードオペレーションを、結合されたロードオペレーションへ結合し、
該結合されたロードオペレーションを、前記システムメモリへ送信し、
該システムメモリからリターンデータ値を受信し、
該リターンデータ値を、該複数の冗長なプロセッサへブロードキャストする
ようにさらに構成される、請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（背景）
（技術分野）
本発明は、マルチプロセッサシステムの設計に関する。より詳細には、本発明は、ロックステップで動作する冗長なプロセッサからのアドレスおよびデータを比較することによって、フォルトトレランスを容易にするための方法および装置に関する。
【背景技術】
【０００２】
（関連技術）
マイクロプロセッサシステムは、ますますより高速かつ複雑になっているので、大量の回路素子が、ますます高速のクロック速度で実行するように強要されている。このことは、一過性のエラーがプログラム実行中に発生する可能性を増加させ、従って、マイクロプロセッサシステムのリライアビリティを低減させる。
【０００３】
エラー訂正コードは、データがメモリ内に格納されるときに発生する一過性のエラーを訂正するために、利用され得る。しかし、そのようなエラー訂正コードは、全てタイプのエラーを訂正することができず、さらに、エラーを検知し訂正する関連する回路は、マイクロプロセッサ内の極めてスピードが重視されるコンピュータ回路において実施されることは実用的ではない。
【０００４】
一過性のエラーはまた、同時に同一のコードを実行する２つ以上のコンピュータシステムのコピーが存在するように、コンピュータシステムを複製することによって、検知され、および／または、訂正され得る。このことは、一過性のエラーが、これらの複製されたコンピュータシステムによって生成された結果を定期的に比較することにより、検知され得ることを可能にする。
【０００５】
一過性のエラーは、投票によって複製されたコンピュータシステム内で訂正され得る。３つ以上の複製されたコンピュータシステムが存在し、かつ、エラーが検知された場合、コンピュータシステムは、どの結果が正しいのかを決定するために、投票することができる。例えば、３つのコンピュータシステムにおいて、３つのうち２つのコンピュータが同一の結果を生成した場合は、残りのコンピュータシステムが異なる結果を生成した場合に、この結果は、正しい答えであると仮定される。
【０００６】
しかし、コンピュータシステム全体を複製することは、特にシステムメモリ全体が複製されなければならない場合は、高価になり得る。
【０００７】
必要とされるのは、コンピュータシステム全体を複製することなしにフォルトトレランスを提供する方法および装置である。
【０００８】
フォルトトレランスを提供するための複製された（冗長な）コンピュータシステムを利用することに伴う別の問題は、存在するキャッシュ干渉性メカニズムが、全ての複製されたプロセッサを同一の状態で保持するタスクと干渉し得ることである。
【０００９】
例えば、通常のマルチプロセッサ設計は、多くのレベル１（Ｌ１）キャッシュ１６１〜１６４を有する多くのプロセッサ１５１〜１５４を含み、多くのレベル１（Ｌ１）キャッシュ１６１〜１６４は、単一のレベル２（Ｌ２）キャッシュ１８０およびメモリ１８３を共用する（図１を参照されたい）。動作間、プロセッサ１５１が、ローカルＬ１キャッシュ１６１に存在しないデータアイテムにアクセスする場合、システムは、Ｌ２キャッシュ１８０からデータアイテムを取り出そうと試みる。そのデータアイテムがＬ２キャッシュ１８０内に存在しない場合は、システムは、最初にメモリ１８３からＬ２キャッシュ１８０へデータアイテムを取り出し、続いてＬ２キャッシュ１８０からＬ１キャッシュ１６１へデータを取り出す。
【００１０】
記載すべきは、干渉性の問題は、同一のデータアイテムのコピーが１つ以上のＬ１キャッシュ内に存在する場合に、発生し得ることである。この場合、Ｌ１キャッシュ１６１における第１バージョンのデータアイテムの修正は、第１バージョンを、第２バージョンのＬ１キャッシュ１６２内のデータアイテムと異なるものにし得る。
【００１１】
そのような干渉性の問題を防ぐためには、典型的には、これらのコンピュータシステムは、バス１７０を介して動作する干渉性プロトコルを提供する。干渉性プロトコルは、典型的には、データアイテムの１つのコピーがＬ１キャッシュ１６１において修正される場合に、Ｌ１キャッシュ１６２〜１６４、Ｌ２キャッシュ１８０、および、メモリ１８３における同一のデータアイテムの他のコピーが、その修正を反映するようにアップデートされるか無効化されることを保証する。このことは、バス１７０を介して無効メッセージがブロードキャストされることによって達成される。
【００１２】
しかし、記載すべきは、このタイプの干渉性メカニズムは、複製されたプロセッサが、それらのローカルＬ１キャッシュにおいて異なる状態を有するようにし得ることである。例えば、第１の複製されたプロセッサが、Ｌ１キャッシュにおけるデータアイテムをアップデートした場合、それは、同一のデータアイテムを、第２に複製されたプロセッサのＬ１キャッシュにおいて無効にし得る。この場合、第１の複製されたプロセッサのＬ１キャッシュは、最後には、第２の複製されたプロセッサのＬ１キャッシュと異なる状態になる。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
必要とされるのは、キャッシュ干渉性メカニズムによって引き起こされる副作用なしに、複製されたプロセッサによってフォルトトレランスを提供するための方法および装置である。
【課題を解決するための手段】
【００１４】
（要旨）
本発明の１つの実施形態は、冗長なプロセッサを利用することによって、フォルトトレランスを容易にするシステムを提供する。このシステムは、ロックステップにおいて同一のコードを実行する複数の冗長なプロセッサから、ストアオペレーションを受信することによって、動作する。このシステムは、ストアオペレーションが一致するかどうかを判断するために、ストアオペレーションを比較し、それにより、冗長なプロセッサが適切に動作することを示す。ストアオペレーションが一致すれば、システムは、ストアオペレーションを、結合されたストアオペレーションへ結合し、結合されたストアオペレーションを、冗長なプロセッサの間で共用されるシステムメモリへ転送する。ストアオペレーションが一致しない場合は、システムは、エラー状態を示す。
【００１５】
本発明の１つの実施形態では、エラー状態を操作するステップは、結合されたストアオペレーションに対してデータワードにエラーフラグをセットするステップと、結合されたストアオペレーションを、システムメモリへ転送するステップとを包含する。
【００１６】
本発明の１つの実施形態では、エラー状態を操作する際に、システムは、過半数のストアオペレーションが一致するかどうかを判断する。一致する場合は、システムは、過半数を、結合されたストアオペレーションへ結合し、結合されたストアオペレーションを、システムメモリへ転送する。過半数が存在しない場合は、システムは、結合されたストアオペレーションに対してデータワードにエラーフラグをセットし、結合されたストアオペレーションを、システムメモリへ転送する。
【００１７】
本発明の１つの実施形態では、さらに、システムは、冗長なプロセッサからロードオペレーションを受信する。システムは、ロードオペレーションが一致するかどうかを決定するために、ロードオペレーションを比較し、それにより、冗長なプロセッサが適切に動作することを示す。ロードオペレーションが一致する場合、システムは、ロードオペレーションを、結合されたロードオペレーションへ結合し、結合されたロードオペレーションを、冗長なプロセッサの間で共用されるシステムメモリへ転送する。続いて、システムは、システムメモリからリターンデータ値を受信し、リターンデータ値を、冗長なプロセッサへブロードキャストする。ロードオペレーションが一致しない場合は、システムはエラー状態を示す。
【００１８】
この実施形態のバリエーションでは、システムは、冗長なプロセッサのうちの１つにおいて、リターンデータ値を受信する。この冗長なプロセッサは、リターンデータ値においてエラーフラグを試験する。エラーフラグがセットされる場合、プロセッサは、エラー操作ルーティンをトラップする。
【００１９】
本発明の１つの実施形態では、システムメモリは、下位レベルキャッシュメモリを含む。
【００２０】
本発明の１つの実施形態では、さらに、システムは、複数の冗長なプロセッサから、無効メッセージを受信する。この無効メッセージは、特定のキャッシュラインが無効化されるべきであることを示す。システムは、これらの無効データメッセージを、結合された無効データへ結合し、結合された無効メッセージを、コンピュータシステムにおける他のプロセッサへ伝達する。
【００２１】
本発明の１つの実施形態では、さらに、システムは、特定のキャッシュラインが無効化されるべきであることを示す無効メッセージを受信する。この無効メッセージは、冗長なプロセッサの１つではない別のプロセッサのアクションの結果として、生成される。システムは、この無効メッセージを、冗長なプロセッサへブロードキャストする。
【発明を実施するための最良の形態】
【００２２】
（詳細な説明）
以下の説明は、どんな当業者も本発明を製作し、利用することができるように表現され、特定の用途および必要性のコンテキストにおいて提供される。開示される実施形態に対する様々な改変は、当業者に容易に理解され、本明細書中で定義される一般原理は、本発明の意図および範囲から逸脱することなしに、他の実施形態および用途に対して適用され得る。従って、本発明は、示される実施形態に制限されることが意図されないが、本明細書中で開示される原理および特徴と一貫する最大範囲が許容され得る。
（マルチプロセッサシステム）
図１Ｂは、本発明の実施形態に従った、マルチプロセッサシステム１００を示す。記載すべきは、マルチプロセッサシステム１００の大部分は、単一の半導体チップ１０１内に配置されることである。より詳細には、半導体チップ１０１は、多くのプロセッサ１１０、１２０、１３０、および、１４０を含み、それらのプロセッサは、レベル１（Ｌ１）キャッシュ１１２、１２２、１３２、１４２をそれぞれ含む。記載すべきは、Ｌ１キャッシュ１１２、１２２、１３２、および、１４２は、別個の命令およびデータキャッシュであってもよく、あるいは、代替として、統一された命令／データキャッシュであってもよいことである。Ｌ１キャッシュ１１２、１２２、１３２、および、１４２は、レベル２（Ｌ２）キャッシュ１０６に接続される。Ｌ２キャッシュ１０６は、メモリコントローラ１０４を介して、オフチップメモリ１０２に接続される。
【００２３】
本発明の１つの実施形態では、Ｌ１キャッシュ１１２、１２２、１３２、および、１４２は、ライトスルーキャッシュであり、つまり、Ｌ１キャッシュ１１２、１２２、１３２、および、１４２に対する全てのアップデートは、自動的に、Ｌ２キャッシュ１０６に伝播されることを意味する。このことは、プロセッサ１１０が、Ｌ１キャッシュ１１２に存在するデータアイテムを必要とする場合に、プロセッサ１１０は、そのデータアイテムを調達するためにＬ１キャッシュ１１２を待つ必要もなく、Ｌ２キャッシュ１０６からそのデータアイテムを受信することができるので、干渉性プロトコルを単純化する。さらに、Ｌ１キャッシュ１１２にそのデータを調達できるようにするために、ネットワークをフォワードする必要もない。記載すべきは、本発明の１つの実施形態では、Ｌ２キャッシュ１０６は「包含的キャッシュ」であり、つまり、Ｌ１キャッシュ１１２、１２２、１３２、および、１４２内の全てのアイテムは、Ｌ２キャッシュ１０６に含まれることを意味することである。
【００２４】
図２は、本発明の実施形態に沿った、図１Ｂに示されるマルチプロセッサシステムを、より詳細に示す。この実施形態では、Ｌ２キャッシュ１０６は、４つのバンク２０２〜２０５で実装され、４つのバンク２０２〜２０５は、スイッチ２１５および２１６を介して、プロセッサ１１０、１２０、１３０、および、１４０により並行にアクセスされ得る。スイッチ２１５は、プロセッサ１１０、１２０、１３０、および、１４０からＬ２バンク２０２〜２０５へ搬送する伝達を操作し、その一方で、スイッチ２１６は、Ｌ２バンク２０２〜２０５からプロセッサ１１０、１２０、１３０、および、１４０へ逆方向の伝達を操作する。
【００２５】
記載すべきは、アドレスの２ビットだけが、４つのバンク２０２〜２０５のいずれをメモリ要求が示すのかを決定するために必要とされることである。また記載すべきは、スイッチ２１５は、Ｉ／Ｏデバイスへの伝達を受信するために、Ｉ／Ｏポート１５０をさらに含み、スイッチ２１６は、Ｉ／Ｏデバイスからの伝達を送信するために、Ｉ／Ｏポート１５２を含むことである。
【００２６】
記載すべきは、「バンク化された」アーキテクチャを利用することによって、各Ｌ１キャッシュは、それ専用のＬ２キャッシュのバンクと同時に接続可能であり、それにより、Ｌ２キャッシュ１０６の処理能力が増加することである。
（スイッチ）
図３は、本発明の実施形態に沿った、スイッチ２１５の構造を示す。スイッチ２１５は、多くの入力３０１〜３０４を含み、多くの入力３０１〜３０４は、それぞれ、プロセッサ１１０、１２０、１３０、および、１４０に接続される。スイッチ２１５はまた、多くの出力３１１〜３１４も含み、多くの出力３１１〜３１４は、それぞれ、Ｌ２バンク２０２〜２０５に接続される。記載すべきは、これらの入力３０１〜３０４および出力３１１〜３１４の各々は、多重データラインを表現していることである。
【００２７】
スイッチ２１５内には、多くのマルチプレクサ３２１〜３２４が存在する。これらのマルチプレクサ３２１〜３２４の各々は、入力３０１〜３０４の各々に対する入力キューを有する。例えば、マルチプレクサ３２１は、４つのキューに接続され、４つのキューのそれぞれは、入力３１０〜３０４の１つに接続される。コンパレータ３３１は、フォルトトレランスを容易にするために、入力キューに格納される値の間で、比較オペレーションを実行する。図４Ａに示されるシステム構成では、コンパレータ３３１は、入力３０１〜３０２および３０３〜３０４のペアを比較する。図４Ｂに示される別の構成では、コンパレータ回路は、過半数の入力が整合するかどうかを判断するために、３つ以上の入力３０１〜３０４の間での投票を促進する。
【００２８】
コンパレータ３３１の出力は、アービトレイション回路３４１へ搬送される。アービトレイション回路３４１は、入力キューの１つからのエントリが、マルチプレクサ３２１を介して出力３１１までルートされるようにする。
【００２９】
マルチプレクサ３２１〜３２４の出力は、ブロードキャストスイッチ３５０へ通過する。ブロードキャストスイッチ３５０は、多くのパスゲート３５１〜３５１を含み、多くのパスゲート３５１〜３５１は、マルチプレクサの出力を、隣接する出力と選択的に接続し得る。例えば、パスゲート３５２が透過であり、かつ、マルチプレクサ３２２の出力がディセーブルにされる場合、マルチプレクサ３２１の出力は、出力３１１および３１２へブロードキャストされる。記載すべきは、一般的にブロードキャストスイッチ３５０を実装するためには、多くの可能な方法があることである。唯一の必要性は、ブロードキャストスイッチ３５０が、多重の出力３１１〜３１４に対する任意の１つのマルチプレクサ３２１〜３２４の出力をブロードキャストできるようにすべきであることである。
【００３０】
記載すべきは、入力３０１〜３０４がそれぞれＬ２バンク２０２〜２０５に接続されること、および、出力３１１〜３１４がそれぞれプロセッサ１１０、１２０、１３０、および、１４０に接続されること以外は、スイッチ２１６の構造は、スイッチ２１５の構造と一致することである。
（構成）
図４Ａは、本発明の実施形態に沿った、マルチプロセッサシステムの二重構成を示す。この構成では、プロセッサ１１０および１２０は、ロックステップにおいて同一のコードを実行する冗長なプロセッサのペアを形成する。スイッチ２１５を介したストアオペレーションは、プロセッサ１１０および１２０からのデータ値およびストアアドレスが一致することを保証するように、比較される。スイッチ２１５を介したロードオペレーションは、ロードアドレスが一致することを保証するように、同様に比較される。そうならない場合は、エラーが指摘される。同様に、プロセッサ１３０および１４０は、冗長なプロセッサの別のペアを形成し、スイッチ２１５は、これらのプロセッサからのストアオペレーションを比較する。
【００３１】
図４Ａに示される構成は、ロックステップにおいて同一のコードを実行するプロセッサ１１０および１２０を開始させ、かつ、ロックステップにおいて同一のコードを実行させるプロセッサ１３０および１４０を開始させることによって、達成される。結合しているスイッチ２１５内では、コンパレータ３３１〜３３４は、入力３０１および３０２が常にお互いと比較され、かつ、入力３０３〜３０４が常にお互いと比較されるように、構成される。
【００３２】
ブロードキャストスイッチ２１６内では、コンパレータ３３２および３３４の出力はディセーブルにされ、パスゲート３５２および３５４は、透過になる。このことは、マルチプレクサ３２１の出力は、出力３１１および３１２にブロードキャストされることを保証する。出力３１１および３１２は、プロセッサ１１０および１２０に接続される。また、マルチプレクサ３２３の出力は、出力３１３および３１４にブロードキャストされることを保証する。出力３１３および３１４は、プロセッサ１３０および１４０に接続される。
【００３３】
図４Ｂは、本発明の実施形態に沿った、マルチプロセッサシステムの三重モジュールの冗長な（ＴＭＲ）構成を示す。この構成では、プロセッサ１１０、１２０、および、１３０は、ロックステップにおいて同一のコードを実行し、プロセッサ１４０は、スペアプロセッサ（スペアプロセッサもまた、高速の置換を促進するために、ロックステップにおいて同一のコードを実行していてもよい）である。
【００３４】
プロセッサ１１０、１２０、および、１３０によって生成されたストアオペレーションは、スイッチ２１５において比較される。これらが一致しない場合は、システムは、投票オペレーションを実行して、３つのストアオペレーションのうちの２つが一致するかどうかを判断する。一致した場合は、一致するストアオペレーションは、正確なストアオペレーションであるとみなされ、残りのストアオペレーションは、誤りであると仮定され、無視される。
【００３５】
図４Ｂに示される構成は、ロックステップにおいて同一のコードを実行するプロセッサ１１０、１２０、および、１３０を開始させることによって、達成される。結合しているスイッチ２１５内では、コンパレータ３３１〜３３４は、入力３０１〜３０３が常に互いに比較され、かつ、過半数が勝つように構成される。ブロードキャストスイッチ２１６内では、コンパレータ３３２〜３３４の出力はディセーブルにされ、パスゲート３５２および３５３は、透過にされる。このことは、マルチプレクサ３２１の出力は、出力３１１〜３１３にブロードキャストされることを保証する。出力３１１〜３１３は、それぞれプロセッサ１１０、１２０、および、１３０へ接続される。
【００３６】
記載すべきは、本発明の１つの実施形態は、図４Ａに示される構成と、図４Ｂに示される構成との間で、システムブートオペレーションの間に、選択的に再構成され得る。
（ストアオペレーション）
図５は、本発明の実施形態に沿った、ストアオペレーションを示すフローチャートである。システムは、スイッチ２１５が、ロックステップで動作する冗長なプロセッサから、ストアオペレーションを受信する（ステップ５０２）ときに、開始する。システムは、コンパレータ３３１〜３３４の１つを利用することによって、これらのストアオペレーションを比較する（ステップ５０４）。これらのストアオペレーションが一致すれば、プロセッサは、推定されるように、適切に動作する。この場合、システムは、ストアオペレーションを、単一のストアオペレーションへ結合し（ステップ５０７）、結合されたストアオペレーションを、システムメモリ（またはＬ２キャッシュ）へ転送する（ステップ５０９）。記載すべきは、ストアオペレーションを結合するステップは、スイッチ２１５に対してストアオペレーションの１つのインスタンスのみをパスするステップ、かつ、その他のインスタンスは無視するステップを包含する。
【００３７】
ストアオペレーションが一致しない場合は、システムは、そのストアオペレーションに対してデータワードにエラーフラグをセットし（ステップ５０８）、かつ、そのストアオペレーションをシステムメモリに転送する（ステップ５１０）。記載すべきは、エラーが存在する場合、そのストアオペレーションのデータ値が何にセットされるかは問題ではないことである。システムは、エラーフラグがセットされることを保証しなければならないだけである。
【００３８】
図４Ｂで示されるＴＭＲ構成においてと同様に、ストアオペレーションが一致せず、かつ、システムが投票オプションとして構成される場合、システムは、過半数のストアオペレーションが一致するかどうかを判断する（ステップ５１２）。一致しなければ、システムは、そのストアオペレーションに対してデータワードにエラーフラグをセットし（ステップ５０８）、かつ、そのストアオペレーションをメモリへ転送する（ステップ５１０）。
【００３９】
過半数のストアオペレーションが一致する場合、システムは、（一致するストアオペレーションの１つのインスタンス以外の全てを無視することによって）その過半数を結合されたストアオペレーションへ結合し（ステップ５１４）、その結合されたストアオペレーションをメモリへ転送する（ステップ５０９）。
（ロードオペレーション）
図６は、本発明の実施形態に沿った、ロードオペレーションを示すフローチャートである。システムは、スイッチ２１５が、ロックステップで動作する冗長なプロセッサから、ロードオペレーションを受信する（ステップ６０２）ときに、開始する。システムは、コンパレータ３３１〜３３４の１つを利用することによって、これらのロードオペレーションを比較する（ステップ６０４）。これらのロードオペレーションが一致する場合、プロセッサは、推定されるように、適切に動作する。この場合、システムは、ロードオペレーションを単一のロードオペレーションへ結合し（ステップ６０７）、その結合されたロードオペレーションを、システムメモリ（またはＬ２キャッシュ）へ転送する（ステップ６０９）。記載すべきは、ロードオペレーションを結合するステップは、スイッチ２１５に対してロードオペレーションの１つのインスタンスのみをパスするステップと、その他のインスタンスを無視するステップとを包含する。
【００４０】
例えば、図４Ｂで示されるＴＭＲ構成のように、ロードオペレーションが一致せず、かつ、システムが投票オプションに対して構成される場合、システムは、過半数のロードオペレーションが一致するかどうかを判断する（ステップ６１２）。一致しない場合は、システムは、エラー状態を生成する（ステップ６０８）。
【００４１】
過半数のロードオペレーションが一致する場合は、システムは、（一致するロードオペレーションの１つのインスタンス以外の全てを無視することによって）その過半数を結合されたロードオペレーションへ結合し（ステップ６１４）、その結合されたロードオペレーションをメモリへ転送する（ステップ６０９）。
【００４２】
続いて、スイッチ２１６は、システムメモリから、ロードオペレーションに対するリターン値を受信する（ステップ６１８）。スイッチ２１６は、パスゲート３５１〜３５４を利用して、冗長なプロセッサに対してリターン値をブロードキャストする（ステップ６２０）。
【００４３】
図９に関連して、ロードオペレーションが、冗長なプロセッサの１つで受信される（ステップ９０２）とき、プロセッサは、エラーフラグをチェックする（ステップ９０４）。エラーフラグがセットされる場合、プロセッサは、エラー操作ルーティンにトラップする（ステップ９０６）。そうでなければ、プロセッサは、通常はロードを操作する（ステップ９０８）。
（無効操作）
記載すべきは、図３に示されるシステムは、ストアがスイッチ２１５内で結合された後、ロードからのリターン値がスイッチ２１６によってブロードキャストされるポイントまで、キャッシュ干渉性メモリ参照を適用することである。キャッシュ干渉性は、ストアが結合される前も、リターン値がブロードキャストされた後も、適用されない。
【００４４】
図７は、本発明の実施形態に沿った、キャッシュ干渉性をサポートする無効化オペレーションを送信するプロセスを示すフローチャートである。この場合、スイッチ２１５は、同一のコードを実行する冗長なプロセッサから、多重の無効メッセージを受信する（ステップ７０２）。これらの無効メッセージは一致し、これらの無効メッセージは、データアイテムが冗長なプロセッサのローカルキャッシュでアップデートされることを示す。スイッチ２１５は、これらの無効メッセージを結合された無効メッセージに結合し（ステップ７０４）、このことは、無効メッセージの１つ以外の全てを無視することによって、達成され得る。続いて、この結合された無効メッセージは、コンピュータシステムにおける他のプロセッサに送信されるが、無効メッセージを送信する任意の冗長なプロセッサに対しては送信されない（ステップ７０６）。
【００４５】
例えば、図４Ａにおいては、プロセッサ１１０および１２０が、同時に無効メッセージを生成する場合、これらの無効メッセージは、スイッチ２１５における単一の無効メッセージへ結合される。続いて、この単一の無効メッセージは、スイッチ２１６を介して、プロセッサ１３０および１４０に送信される。
【００４６】
図８は、本発明の実施形態に沿った無効オペレーションを受信するプロセスを示すフローチャートである。この場合、スイッチ２１６は、冗長なプロセッサのセットの一部ではないプロセッサによって生じた、無効メッセージを受信する（ステップ８０２）。続いて、スイッチ２１６は、冗長なプロセッサのセットに対して、無効メッセージをブロードキャストする（ステップ８０４）。
【００４７】
例えば、図４Ａでは、スイッチ２１６が、冗長なプロセッサ１１０および１２０により生成される単一の無効メッセージを受信したとき、スイッチ２１６は、この無効メッセージをプロセッサ１３０および１４０にブロードキャストする。この場合、同一のキャッシュラインは、両プロセッサキャッシュにおいて無効化され、従って、プロセッサ１３０および１４０内の状態を一致した状態に保つ。
【００４８】
本発明の実施形態の上述の説明は、図示および説明のためにのみ示された。これらは、包括的であり、開示された形式に対して本発明を制限することを、意図されない。従って、多くの改変および変更が、当業者にとって理解される。つまり、上述の開示は、本発明を制限することが意図されない。本発明の範囲は、付属の特許請求の範囲によって定義される。
【図面の簡単な説明】
【００４９】
【図１Ａ】図１Ａは、マルチプロセッサシステムを示す。
【図１Ｂ】図１Ｂは、本発明の実施形態に沿った、マルチプロセッサシステムを示す。
【図２】図２は、本発明の実施形態に沿った、図１Ｂに示されるマルチプロセッサシステムを、より詳細に示す。
【図３】図３は、本発明の実施形態に沿った、スイッチの構造を示す。
【図４Ａ】図４Ａは、本発明の実施形態に沿った、マルチプロセッサシステムの二重構成を示す。
【図４Ｂ】図４Ｂは、本発明の実施形態に沿った、マルチプロセッサシステムの三重モジュールの冗長な（ＴＭＲ）構成を示す。
【図５】図５は、本発明の実施形態に沿った、ストアオペレーションを示すフローチャートである。
【図６】図６は、本発明の実施形態に沿った、ロードオペレーションを示すフローチャートである。
【図７】図７は、本発明の実施形態に沿った、無効化オペレーションを送信するプロセスを示すフローチャートである。
【図８】図８は、本発明の実施形態に沿った、無効化オペレーションを受信するプロセスを示すフローチャートである。
【図９】図９は、本発明の実施形態に沿った、エラーセットを有するロード値を操作するプロセスを示すフローチャートである。
【図１Ａ】
2005512162.tif 000003
【図１Ｂ】
2005512162.tif 000004
【図２】
2005512162.tif 000005
【図３】
2005512162.tif 000006
【図４Ａ】
2005512162.tif 000007
【図４Ｂ】
2005512162.tif 000008
【図５】
2005512162.tif 000009
【図６】
2005512162.tif 000010
【図７】
2005512162.tif 000011
【図８】
2005512162.tif 000012
【図９】
2005512162.tif 000013
【国際調査報告】
2005512162.tif 000014
2005512162.tif 000015
2005512162.tif 000016