(57)【特許請求の範囲】
【請求項１】
それぞれが複数個の命令からなる命令シーケンスが複数個連続している或る命令シーケンスを第１のプロセッサ及び第２のプロセッサによりマルチプロセッシングする方法であって、
（ａ）前記第１のプロセッサは、第１のレジスタ、第１の最上部シャドウ・レジスタ及び第１の次段シャドウ・レジスタを有し、前記或る命令シーケンスのうちの１つの命令シーケンスを実行して得た第１の結果を前記第１のレジスタに記憶するステップと、
（ｂ）前記第２のプロセッサは、第２のレジスタ、第２の最上部シャドウ・レジスタ及び第２の次段シャドウ・レジスタを有し、前記或る命令シーケンスのうちの前記１つの命令シーケンスを実行して得た第２の結果を前記第２のレジスタに記憶するステップと、
（ｃ）前記１つの命令シーケンスの最後にあって該１つの命令シーケンスの終了を示す終了命令により生じるチェックポイントに応答して、前記第１のプロセッサが前記第１の結果を前記第１のレジスタから前記第１の最上部シャドウ・レジスタにシフトするステップと、
（ｄ）前記１つの命令シーケンスの最後にあって該１つの命令シーケンスの終了を示す終了命令により生じるチェックポイントに応答して、前記第２のプロセッサが前記第２の結果を前記第２のレジスタから前記第２の最上部シャドウ・レジスタにシフトするステップと、
（ｅ）前記第１の最上部シャドウ・レジスタにある前記第１の結果と前記第２の最上部シャドウ・レジスタにある前記第２の結果とを比較ユニットで比較し、前記第１の結果と前記第２の結果とが等しければ、前記第１の結果を前記第１の最上部シャドウ・レジスタから前記第１の次段シャドウ・レジスタにシフトし、前記第２の結果を前記第２の最上部シャドウ・レジスタから前記第２の次段シャドウ・レジスタにシフトすることにより、前記第１のプロセッサにより生じた前記第１の結果と前記第２のプロセッサにより生じた前記第２の結果とが合致したことを表すステップと、
（ｆ）前記或る命令シーケンスのうちの前記１つの命令シーケンスの次の命令シーケンスについて、前記ステップ（ａ）乃至ステップ（ｅ）を行うステップとを含み、
前記１つの命令シーケンスについての前記第１の結果と前記第２の結果とが等しいときに前記第１の結果を記憶するために前記第１の次段シャドウ・レジスタを使用すると共に前記第２の結果を記憶するために前記第２の次段シャドウ・レジスタを使用している間に、前記次の命令シーケンスについて前記第１のプロセッサが実行して得た第３の結果を記憶するために前記第１のレジスタ及び前記第１の最上部シャドウ・レジスタを使用し、前記次の命令シーケンスについて前記第２のプロセッサが実行して得た第４の結果を記憶するために前記第２のレジスタ及び前記第２の最上部シャドウ・レジスタを使用することを特徴とする方法。
【請求項２】
前記ステップ（ｆ）において、
（イ）前記第１のプロセッサが、前記次の命令シーケンスを実行して得た前記第３の結果を前記第１のレジスタに記憶するステップと、
（ロ）前記第２のプロセッサが、前記次の命令シーケンスを実行して得た前記第４の結果を前記第２のレジスタに記憶するステップと、
（ハ）前記次の命令シーケンスの最後にあって該次の命令シーケンスの終了を示す終了命令により生じるチェックポイントに応答して、前記第１のプロセッサが前記第３の結果を前記第１のレジスタから前記第１の最上部シャドウ・レジスタにシフトするステップと、
（ニ）前記次の命令シーケンスの最後にあって該次の命令シーケンスの終了を示す終了命令により生じるチェックポイントに応答して、前記第２のプロセッサが前記第４の結果を前記第２のレジスタから前記第２の最上部シャドウ・レジスタにシフトするステップと、
（ホ）前記第１の最上部シャドウ・レジスタにある前記第３の結果と前記第２の最上部シャドウ・レジスタにある前記第４の結果とを比較し、前記第３の結果と前記第４の結果とが等しければ、前記第１の次段シャドウ・レジスタをクリアした後に前記第３の結果を第１の最上部シャドウ・レジスタから前記第１の次段シャドウ・レジスタにシフトし、前記第２の次段シャドウ・レジスタをクリアした後に前記第４の結果を第２の最上部シャドウ・レジスタから前記第２の次段シャドウ・レジスタにシフトするステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ステップ（ｅ）において、前記第１の最上部シャドウ・レジスタにある前記第１の結果と前記第２の最上部シャドウ・レジスタにある前記第２の結果とが等しくないならば、前記第１のレジスタ及び前記第１の最上部シャドウ・レジスタをクリアすると共に前記第２のレジスタ及び前記第２の最上部シャドウ・レジスタをクリアし、前記第１の次段シャドウ・レジスタ内にある結果を前記第１のレジスタにシフトすると共に前記第２の次段シャドウ・レジスタ内にある結果を前記第２のレジスタにシフトし、前記１つの命令シーケンスについて前記ステップ（ａ）乃至ステップ（ｅ）を再び行うことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１の次段シャドウ・レジスタ内にある前記結果は、前記或る命令シーケンスのうちの前記１つの命令シーケンスに先行する命令シーケンスについての第５の結果であり、前記第２の次段シャドウ・レジスタ内にある前記結果は、前記或る命令シーケンスのうちの前記１つの命令シーケンスに先行する命令シーケンスについての第６の結果である請求項３に記載の方法。
【請求項５】
前記ステップ（ａ）において前記第１のプロセッサが、前記第１の結果を表す第１の累積的シグネチャを前記第１のレジスタに記憶し、前記ステップ（ｂ）において前記第２のプロセッサが、前記第２の結果を表す第２の累積的シグネチャを前記第２のレジスタに記憶し、前記ステップ（ｅ）において、前記第１の累積的シグネチャと前記第２の累積的シグネチャとを比較することを特徴とする請求項１に記載の方法。
【請求項６】
前記第１のプロセッサ及び前記第２のプロセッサの一方が前記１つの命令シーケンス内の複数個の命令をこれらの順序で実行し、前記第１のプロセッサ及び前記第２のプロセッサの他方が前記１つの命令シーケンス内の複数個の命令をこれらの順序と異なる順序で実行することを特徴とする請求項１に記載の方法。
【請求項７】
前記１つの命令シーケンスの終了を示す終了命令が記憶命令であり、前記チェックポイントが前記記憶命令に応答して生じることを特徴とする請求項１に記載の方法。
【請求項８】
前記第１のプロセッサが前記１つの命令シーケンス内の複数個の命令を実行する順序と同じ順序で前記第２のプロセッサが前記１つの命令シーケンス内の複数個の命令を実行し、前記チェックポイントが命令の実行サイクルの累積数に応答して生じることを特徴とする請求項１に記載の方法。
【請求項９】
前記１つの命令シーケンスの終了を示す終了命令が記憶命令であり、前記チェックポイントが前記記憶命令に応答して生じ、そして、該記憶命令が生じた後の所定の数の命令が前記記憶命令を含まないならば、所定の数の命令を実行したことに応答して前記チェックポイントが生じることを特徴とする請求項１に記載の方法。
【請求項１０】
それぞれが複数個の命令からなる命令シーケンスが複数個連続している或る命令シーケンスを第１のプロセッサ及び第２のプロセッサによりマルチプロセッシングするシステムであって、
（イ）第１のレジスタ、第１の最上部シャドウ・レジスタ及び第１の次段シャドウ・レジスタを有する第１のプロセッサと、
（ロ）第２のレジスタ、第２の最上部シャドウ・レジスタ及び第２の次段シャドウ・レジスタを有する第２のプロセッサと、
（ハ）比較ユニットとを備え、
（ａ）前記第１のプロセッサが、前記或る命令シーケンスのうちの１つの命令シーケンスを実行して得た第１の結果を前記第１のレジスタに記憶し、
（ｂ）前記第２のプロセッサが、前記或る命令シーケンスのうちの前記１つの命令シーケンスを実行して得た第２の結果を前記第２のレジスタに記憶し、
（ｃ）前記１つの命令シーケンスの最後にあって該１つの命令シーケンスの終了を示す終了命令により生じるチェックポイントに応答して、前記第１のプロセッサが前記第１の結果を前記第１のレジスタから前記第１の最上部シャドウ・レジスタにシフトし、
（ｄ）前記１つの命令シーケンスの最後にあって該１つの命令シーケンスの終了を示す終了命令により生じるチェックポイントに応答して、前記第２のプロセッサが前記第２の結果を前記第２のレジスタから前記第２の最上部シャドウ・レジスタにシフトし、
（ｅ）前記比較ユニットが、前記第１の最上部シャドウ・レジスタにある前記第１の結果と前記第２の最上部シャドウ・レジスタにある前記第２の結果とを比較し、前記第１の結果と前記第２の結果とが等しければ、前記第１のプロセッサが、前記第１の結果を第１の最上部シャドウ・レジスタから前記第１の次段シャドウ・レジスタにシフトし、前記第２のプロセッサが、前記第２の結果を第２の最上部シャドウ・レジスタから前記第２の次段シャドウ・レジスタにシフトすることにより、前記第１のプロセッサにより生じた前記第１の結果と前記第２のプロセッサにより生じた前記第２の結果とが合致したことを表し、
（ｆ）前記第１のプロセッサ及び前記第２のプロセッサが、前記或る命令シーケンスのうちの前記１つの命令シーケンスの次の命令シーケンスについて前記（ａ）乃至（ｅ）の動作を行い、前記１つの命令シーケンスについての前記第１の結果と前記第２の結果とが等しいときに前記第１の結果を記憶するために前記第１の次段シャドウ・レジスタを使用すると共に前記第２の結果を記憶するために前記第２の次段シャドウ・レジスタを使用している間に、前記次の命令シーケンスについて前記第１のプロセッサが実行して得た第３の結果を記憶するために前記第１のレジスタ及び前記第１の最上部シャドウ・レジスタを使用し、前記次の命令シーケンスについて前記第２のプロセッサが実行して得た第４の結果を記憶するために前記第２のレジスタ及び前記第２の最上部シャドウ・レジスタを使用することを特徴とするシステム。
【請求項１１】
前記比較ユニットによる比較の結果、前記第１の最上部シャドウ・レジスタにある前記第１の結果と前記第２の最上部シャドウ・レジスタにある前記第２の結果とが等しくないならば、前記第１のレジスタ及び前記第１の最上部シャドウ・レジスタをクリアすると共に前記第２のレジスタ及び前記第２の最上部シャドウ・レジスタをクリアし、前記第１の次段シャドウ・レジスタ内にある結果を前記第１のレジスタにシフトすると共に前記第２の次段シャドウ・レジスタ内にある結果を前記第２のレジスタにシフトし、前記１つの命令シーケンスについて前記動作（ａ）乃至（ｅ）を再び行うことを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記第１の次段シャドウ・レジスタ内にある前記結果は、前記或る命令シーケンスのうちの前記１つの命令シーケンスに先行する命令シーケンスについての第５の結果であり、前記第２の次段シャドウ・レジスタ内にある前記結果は、前記或る命令シーケンスのうちの前記１つの命令シーケンスに先行する命令シーケンスについての第６の結果である請求項１１に記載の方法。
【請求項１３】
前記動作（ａ）において前記第１のプロセッサが、前記第１の結果を表す第１の累積的シグネチャを前記第１のレジスタに記憶し、前記動作（ｂ）において前記第２のプロセッサが、前記第２の結果を表す第２の累積的シグネチャを前記第２のレジスタに記憶し、前記動作（ｅ）において、前記比較ユニットが前記第１の累積的シグネチャと前記第２の累積的シグネチャとを比較することを特徴とする請求項１０に記載のシステム。
【請求項１４】
前記第１のプロセッサ及び前記第２のプロセッサの一方が前記１つの命令シーケンス内の複数個の命令をこれらの順序で実行し、前記第１のプロセッサ及び前記第２のプロセッサの他方が前記１つの命令シーケンス内の複数個の命令をこれらの順序と異なる順序で実行することを特徴とする請求項１０に記載のシステム。
【請求項１５】
前記１つの命令シーケンスの終了を示す終了命令が記憶命令であり、前記チェックポイントが前記記憶命令に応答して生じることを特徴とする請求項１０に記載のシステム。
【請求項１６】
前記第１のプロセッサが前記１つの命令シーケンス内の複数個の命令を実行する順序と同じ順序で前記第２のプロセッサが前記１つの命令シーケンス内の複数個の命令を実行し、前記チェックポイントが命令の実行サイクルの累積数に応答して生じることを特徴とする請求項１０に記載のシステム。
【請求項１７】
前記１つの命令シーケンスの終了を示す終了命令が記憶命令であり、前記チェックポイントが前記記憶命令に応答して生じ、そして、該記憶命令が生じた後の所定の数の命令が前記記憶命令を含まないならば、所定の数の命令を実行したことに応答して前記チェックポイントが生じることを特徴とする請求項１０に記載のシステム。
【発明の詳細な説明】
本願発明は、"MULTIPROCESSOR WITH PAIR-WISE HIGH RELIABILITY MODE, AND METHOD THEREFORE"米国出願番号０９／７３４，１１７の発明に関連する発明である。
【０００１】
【発明の属する技術分野】
本発明は、ハードウェア冗長性による高信頼性処理に関する。更に具体的には、本発明は、計算の誤りを検出するために高信頼性モードで動作し、高パフォーマンス・モードで独立的に動作するペア状のプロセッサを有する処理システムに関する。
【０００２】
【従来の技術】
高信頼性処理を達成するためには、様々なアプローチが存在する。図１は、高信頼性処理のための１つの従来技術のプロセッサ１００を示す。プロセッサ１００は２つの実行ユニット１３０及び１３５を含む。これらの実行ユニットは双方とも同じタイプの算術ユニットである。例えば、２つの実行ユニットは双方ともに浮動小数点ユニット又は整数ユニットであることができる。プロセッサ１００は、コミットされた実行結果を保持する設計レジスタ（architected register）１２０を有する。２つの実行ユニット１３０及び１３５は、双方とも同じ命令ストリームを並列に実行する。即ち、各々の命令のために、命令のインスタンスが各々の実行ユニット１３０及び１３５で実行される。従って、２つのユニットが命令の結果をレジスタ・ファイル１２０へコミットする準備ができたとき、結果の２つのバージョンが比較ユニット１２５によって比較される。もし比較ユニット１２５が、バージョンが同じであると決定すれば、ユニット１２５は１つ又は複数のレジスタ１２０を結果で更新する。もしバージョンがマッチしなければ、他のアクションが取られる。１つの実施形態において、誤りが反復して起こっているかどうかをカウンタが記録し、もし起こっていれば、誤りは「ハードウェア」異常として分類される。ハードウェア異常の場合、命令発行メカニズムは、異常を起こした命令を再発行せず、その代わりに「トラップ」命令を実行する。１つのそのようなトラップは、欠陥のあるプロセッサの状態を読み出して、それを予備のプロセッサへロードするマイクロコード・ルーチンを引き起こす。予備のプロセッサは最初に失敗した命令の実行を再び開始する。代替として、予備のプロセッサを利用できない場合、トラップは、オペレーティング・システムに、異常を起こしたプロセッサの処理を他のプロセッサへ移行させる。これは、他のプロセッサのワークロードを増加する。
【０００３】
この配列は信頼性の利点を提供するが、プロセッサの設計が従来のプロセッサよりも複雑となり、より大きなオーバヘッドを有する点で不利益である。更に、同じ命令ストリームを実行する２つの実行ユニット１３０及び１３５をプロセッサ１００の中に有することは、プロセッサ１００のスループットを制限する。排他的高信頼性の動作のために設計されたプロセッサの他のバリエーションは、１９９６年４月２日に発行されたRichard N.Gufstason、John S.Liptay、及びCharles F.Webbの米国特許５，５０４，８５９「強化された誤り回復を有するデータ・プロセッサ」（"Data Processor with Enhanced Error Recovery"）に示される。
【０００４】
図２は、高信頼性処理の他の配列を示す。この投票配列では、３つのプロセッサ１００Ａ、１００Ｂ、１００Ｃの各々が同じプログラムを並列に実行し、結果のバージョンが、プロセッサ１００Ａ、１００Ｂ、１００Ｃの外部にあるバス１６０の上で、プログラム内のチェックポイントで比較される。もしバージョンがマッチしなければ、他のアクション、例えば、異ったバージョンを作り出したプロセッサを異なったプロセッサ１００で置換するアクションが取られる。この配列は、個々のプロセッサ１００Ａ、１００Ｂ、１００Ｃの複雑性が減少し、誤りを作り出したプロセッサを識別できる点で利点を有する。更に、プロセッサ１００Ａ、１００Ｂ、１００Ｃの１つのスループットは、図１における１つのプロセッサ１００のスループットよりも大きくてよい。なぜなら、個々のプロセッサ１００Ａ、１００Ｂ、１００Ｃは、その実行ユニットのいかなるものも冗長処理に使用しないからである。しかし、図２の配列は、プロセッサ１００Ａ、１００Ｂ、１００Ｃのレベルで冗長であり、単一の故障から回復するため３つのプロセッサ１００Ａ、１００Ｂ、１００Ｃの全体を使用する。更に、誤りのチェックは、プロセッサによって外部的に実証された結果へ限定される。
【０００５】
関連出願では、一対のプロセッサが、例外から回復するために既に利用可能な最新技術の状態回復メカニズムを使用し、これらのメカニズムを応用して、高信頼性モードの固定方式同時性で動作する。これは高度に利点を有する。なぜなら、それは既存のプロセッサ設計を広範囲に修正することなく高信頼性を達成するからである。しかし、それは同時性を要求されるため幾分限定的である。即ち、高信頼性モードにおいて、関連出願のプロセッサは、命令のストリームを同じシーケンスで処理しなければならない。これまでの説明から、高信頼性処理における改善の必要性が存在することが分かるであろう。
【０００６】
【発明が解決しようとする課題】
本発明は、計算の誤りを検出するために高信頼性モードで動作し、高パフォーマンス・モードで独立的に動作するペアのプロセッサを有するマルチプロセッシング・システムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
前述した必要性は、本発明によって検討される。本発明に従えば、第１の実施形態において、マルチプロセッシング・システムは第１のプロセッサ、第２のプロセッサ、及び比較ロジックを含む。第１のプロセッサは命令に応答して第１の結果を計算するように動作可能であり、第２のプロセッサは命令に応答して第２の結果を計算するように動作可能であり、比較ロジックはチェックポイントで結果のマッチングをチェックするように動作可能である。プロセッサの各々はプロセッサの結果の１つを記憶する第１のレジスタを有し、レジスタはシャドウ・レジスタ（shadow register）のスタックを有する。プロセッサは、プロセッサの結果の中の現在の結果を、第１のレジスタから最上部シャドウ・レジスタの中へシフトするように動作可能であり、従って、プロセッサの結果の、より早期の結果は、第１の結果と第２の結果とがミスマッチしたことを決定する比較ロジックに応答して、シャドウ・レジスタの１つから第１のレジスタへ復元されることができる。シャドウ・レジスタのスタックは、その対応するレジスタへ緊密に結合されていることが利点である。これは、結果の迅速な復元を提供する。
【０００８】
実施形態の更なる様相において、各々のプロセッサはシグネチャ生成器及びシグネチャ記憶ユニットを有する。シグネチャ生成器及び記憶ユニットは、プロセッサの結果のシーケンスのために累積的シグネチャを協力して計算するように動作可能であり、プロセッサは、比較ロジックによるマッチ又はミスマッチの決定を未解決にしたまま累積的シグネチャをシグネチャ記憶ユニットの中に記憶するように動作可能である。結果のマッチングのチェックは、比較ロジックが各々のプロセッサの累積的シグネチャを比較することを含む。それぞれの累積的シグネチャを時々チェックすることは、個別の結果をチェックすることよりも早く、従って有利である。
【０００９】
更に、１つの実施形態において、命令は或る命令シーケンスを有し、プロセッサの少なくとも１つは、プログラム・シーケンスとは異なったシーケンスで命令を実行してよいが、プロセッサの双方は、記憶タイプの命令が或る命令シーケンスの中で起こるシーケンスに従って、記憶タイプの命令を実行する。第１のプロセッサのための結果の第１のシーケンスが、記憶命令の１つのための結果を伴ってチェックポイントの１つで終了し、結果の第２のシーケンスが、同じ記憶命令のための結果を伴って第２のプロセッサのためにチェックポイントで終了するように、チェックポイントが記憶命令に応答する。結果の第１のシーケンスの中間結果が、結果の第２のシーケンスの対応する中間結果とは異なるが、第１のシーケンスのために第１のプロセッサが終了しつつある結果、及び第２のシーケンスのために第２のプロセッサが終了しつつある結果は、プロセッサの１つが誤作動しなければマッチする傾向にあるように、記憶タイプの命令に応答してチェックポイントをトリガすることが有利である。
【００１０】
代替の実施形態において、第２のプロセッサは、第１のプロセッサが命令を実行するシーケンスと同じシーケンスで命令を実行し、チェックポイントは実行サイクルの累積数に応答する。この実施形態において、チェックポイントは更に記憶命令に応答してよい。１つのそのような実施形態では、もし最後のチェックポイント以来ずっと記憶命令が存在しなければ、チェックポイントは記憶命令及び実行サイクルの累積数に応答する。
【００１１】
【発明の実施の形態】
後続の好ましい実施形態の詳細な説明では、本発明が実施されてよい実施形態を示す添付の図面を参照する。本発明の範囲から逸脱することなく、他の実施形態が使用されてよいこと、及び変更がなされてよいこと、を理解すべきである。
【００１２】
ここで図４を参照すると、本発明の実施形態に従ったマルチプロセッシング・システム４００が示される。システム４００は、第１のプロセッサ４１０Ａ、第２のプロセッサ４１０Ｂ（これは、プロセッサ４１０Ａと同じであっても、同じでなくてもよい）、及び比較ユニット４２０を含む。プロセッサ４１０Ａは、図示されるように、相互に接続された次の要素を有する。即ち、フェッチ・ロジック４３２Ａ、命令キャッシュ４３４Ａ、デコード・ロジック４３６Ａ、発行キュー４３８Ａ、実行及びロード／記憶ユニット４４０Ａ、コミット・ロジック４４２Ａ、シグネチャ生成器４４４Ａ、記憶ラッチ４４６Ａ、データ・キャッシュ４４８Ａ、及び現在の結果を保持する設計レジスタ４５４Ａである。設計レジスタ４５４Ａは、後で詳細に説明するように、前の結果を保持するシャドウ・レジスタ４５４Ａ．１、及びコミットされた結果を保持するシャドウ・レジスタ４５４Ａ．２を有する。プロセッサ４１０Ｂは、次の要素の少なくともそれ自身の要素を含む（図示されていない）。即ち、シグネチャ生成器４４４Ｂ、記憶ラッチ４４６Ｂ、及び現在の結果を保持する設計レジスタ４５４Ｂである。設計レジスタ４５４Ｂは、前の結果を保持するためのシャドウ・レジスタ４５４Ｂ．１、及びコミットされた結果を保持するためのシャドウ・レジスタ４５４Ｂ．２を有する。
【００１３】
本明細書における図面及び説明は、１つの例示的なレジスタ、及びその対応するシャドウ・レジスタに記憶された結果に焦点を当てているが、これは単に例示的なもので、プロセッサは実際には多数のそのようなレジスタを含むことを理解すべきである。
【００１４】
ここで図５を参照すると、本発明の様相を示すため、実施形態に従ったプロセッサ４１０Ａ及び４１０Ｂが、命令のシーケンス５１０及びそれぞれの結果と一緒に示される。第１のプロセッサ４１０Ａは、命令５１０に応答して第１の結果５２０Ａを計算するように動作可能であり、第２のプロセッサ４１０Ｂは、命令５１０に応答して第２の結果５２０Ｂを計算するように動作可能である。更に具体的には、命令５１０は、命令５１０．１、それに続く命令５１０．２、それに続く命令５１０．３（以下同様）を含むプログラム・シーケンスの中に存在するプログラムのための命令を表す。命令５１０．１のために、プロセッサ４１０Ａは結果５２０Ａ．１を計算し、プロセッサ４１０Ｂは結果５２０Ｂ．１を計算する。また、命令５１０．２のために、プロセッサ４１０Ａは結果５２０Ａ．２を計算し、プロセッサ４１０Ｂは結果５２０Ｂ．２を計算する。以下同様である。結果の各々のために、シグネチャ生成器４４４Ａ（図４）は、更新されたシグネチャを計算し、それを記憶ラッチ４４６Ａへ出力する。
【００１５】
比較ユニット４２０は、チェックポイントで結果のマッチングをチェックするように動作可能である。例えば、例示された実施形態に従えば、命令５１０．６及び５１０．１２の各々は、チェックポイントをトリガする記憶タイプの命令のインスタンスである。即ち、例えば命令５１０．６のために結果５２０Ａ．６を計算することに応答して、プロセッサ４１０Ａのためのシグネチャ生成器４４４Ａは、ラッチ４４６Ａに記憶されたシグネチャを更新する。それは、結果５２０Ａ．１、５２０Ａ．２などの各々について更新する場合と同じである。同様に、命令５１０．６のために結果５２０Ｂ．６を計算することに応答して、プロセッサ４１０Ｂのためのシグネチャ生成器４４４Ｂは、ラッチ４４６Ｂに記憶されたシグネチャを更新する。それは、結果５２０Ｂ．１、５２０Ｂ．２などの各々について更新する場合と同じである。更に、命令５１０．６はチェックポイントをトリガするので、結果５２０Ａ．６の計算に応答して、プロセッサ４１０Ａは、結果５２０Ａ．６のシグネチャが準備されていることを比較ユニット４２０へ表示する。同様に、結果５２０Ｂ．６の計算に応答して、プロセッサ４１０Ｂは、対応する結果５２０Ｂ．６のシグネチャが準備されていることを比較ユニット４２０へ表示する。一度、対応するシグネチャが準備されると、比較ユニット４２０は、それらがマッチするかどうか調べるため、それらを比較する。注意すべきは、シグネチャは記憶値それ自身を反映するか、記憶値がシグネチャと一緒に相互に比較されることである。
【００１６】
本発明のシグネチャを生成するため、使用されてよい様々な周知の圧縮計画が存在する。例えば、リニア・フィードバック・シフト・レジスタが使用されてよい。リニア・フィードバック・シフト・レジスタに従って、新しい入力は、シフト・アウトされるビットとＸＯＲされる。これは利点を有する。なぜなら、結果のシグネチャは非常にランダムな様式で空間を横切り、従って、シグネチャが所有して後援すると考えられる状態からの小さな逸脱を作り出すことはあり得ないからである。関連特許出願で説明されるシグネチャ生成も、本発明に関連を有する。
【００１７】
ここで図３を参照すると、本発明の実施形態の様相と対比するために、通常のレジスタ・ファイル３１０及び３１５が示される。この例において、第１のレジスタ・ファイル３１０と第２のレジスタ・ファイル３１５とは、本質的に同じである。レジスタ・ファイル３１０は、明示されるレジスタ３３０及び３４０を含む多数のレジスタを有する。レジスタの各々は多数のレジスタ・セルを有する。レジスタ３３０のレジスタ・セル３２０の詳細は、明白に示される。例示的なレジスタ・セル３２０は、入力（又は書き込み）ポート３２４及び出力（読み出し）ポート３２６に結合されたメモリ・セル３２２を含む。
【００１８】
ここで図６を参照すると、本発明の実施形態に従ったレジスタ・ファイル６１０が示される。示されたレジスタ・ファイル６１０は、プロセッサ４１０Ａに対応するものであるが、双方のプロセッサ４１０Ａ及び４１０Ｂにおけるレジスタ・ファイルを表し、多数のレジスタを含む。図４で示されたようなレジスタ４５４Ａ及びレジスタ６４０が明白に示される。レジスタ４５４Ａと６４０との間の省略符号で示されるように、他のレジスタも、レジスタ・ファイル６１０の中に含まれてよい。レジスタ４５４Ａは多数のレジスタ・セル６１５を含む。レジスタ・セル６１５の各々は、通常のレジスタ・セル、例えばレジスタ３３０内のセル３２０（図３）におけるように、通常のメモリ・セル、書き込みポート、及び読み出しポートを有する。通常のレジスタと対比して、例えばレジスタ４５４Ａ（図６）のレジスタ・セル６１５は、シャドウ・セル６３０のスタックとして配列された対応するシャドウ・セルを有する。レジスタ・セル６１５のシャドウ・セル・スタック６３０のために明白に示されたシャドウ・セルは、最上部シャドウ・セル６２０及び最後の最下部シャドウ・セル６２５を含む。セル６２０とセル６２５との間の省略符号によって示されるように、中間に他のセルが存在するか、シャドウ・セル６２５が、セル６２０の下にある次のセルであってよい。最上部シャドウ・セル６２０は、示されるように、それぞれの制御ＦＥＴ６２２によって、それぞれのレジスタ・セル６１５へ接続される。レジスタ・セル６１５の内容は、制御ＦＥＴ６２２の制御のもとでシャドウ・セル６２０の中へ書き込まれてよい。同様に、シャドウ・セル６２０の内容は、シャドウ・セル６２０と次のシャドウ・セルとを接続するＦＥＴの制御のもとで、次のシャドウ・セルへ書き込まれてよい。
【００１９】
図６から分かるように、レジスタ４５４Ａのための最上部シャドウ・レジスタ４５４Ａ．１（図４にも示される）は、レジスタ４５４Ａのレジスタ・セル６１５の最上部シャドウ・セル６２０を含み、それに対応して、レジスタ４５４Ａの内容は最上部シャドウ・レジスタ４５４Ａ．１へ書き込まれてよく、最上部シャドウ・レジスタ４５４Ａ．１の内容は、間に存在する各々のＦＥＴの制御のもとで次のシャドウ・レジスタへ書き込まれてよい。
【００２０】
この配列に従えば、レジスタ４５４Ａは、プロセッサ４１０Ａの現在の結果の１つを保持する。レジスタ４５４Ａはシャドウ・レジスタのスタック６３５を含み、スタック６３５は少なくとも最上部シャドウ・レジスタ４５４Ａ．１及び次のシャドウ・レジスタを有する。前記次のシャドウ・レジスタは、最下部シャドウ・セル６２５（図６）を含む最後の、即ち最下部の、シャドウ・レジスタ（即ち、図４のシャドウ・レジスタ４５４Ａ．２）であってよい。プロセッサ４１０Ａは、結果のシフトを実行するように動作可能である。このシフトは、プロセッサの結果の中の現在の結果を、第１のレジスタ４５４Ａから最上部シャドウ・レジスタ４５４Ａ．１へシフトすることを含む。従って、プロセッサの結果の、より早期の結果は、第１及び第２の結果のミスマッチを決定する比較ユニット４２０に応答して、シャドウ・レジスタの１つから第１のレジスタ４５４Ａへ復元されることができる。
【００２１】
再び図５を参照すると、前述したように、結果５２０Ａ．１、５２０Ａ．２などの各々のために、シグネチャ生成器４４４Ａ（図４）は、更新されたシグネチャを計算し、それを記憶ラッチ４４６Ａへ出力する。同様に、結果５２０Ｂ．１、５２０Ｂ．２などの各々のために、シグネチャ生成器４４４Ｂ（図４）は、更新されたシグネチャを計算し、それを記憶ラッチ４４６Ｂへ出力する。他の様相に従えば、第１のプロセッサ４１０Ａのためのシグネチャ生成器４４４Ａ、及び第２のプロセッサ４１０Ｂのためのシグネチャ生成器４４４Ｂの各々は、プロセッサの結果５２０Ａ及び５２０Ｂのシーケンスのために、それぞれの累積的シグネチャを計算するように動作可能である。即ち、命令の例示されたシーケンス５１０（及び、結果の対応するシーケンス５２０Ａ及び５２０Ｂ）において、チェックポイント（図示されない）が命令のシーケンス５１０の直前に先行し、シーケンス５１０はチェックポイントの後で開始することが暗黙に示されている。更に、シーケンス５１０は、命令５１０．１で始まり前記の記憶命令５１０．６に応答するチェックポイントで終わる命令シーケンスを含む。記憶命令５１０．６の後で、次のシーケンスが命令５１０．７で始まる。命令５１０．１から５１０．６のシーケンス、及び例えば、対応する結果５２０Ａ．１から５２０Ａ．６のために、プロセッサ４１０Ａは、第１の結果５２０Ａ．１のために新しいシグネチャをイニシャライズし、次にシグネチャを更新するように動作可能である。更新されたシグネチャは、命令５１０．１から５１０．６及び対応する結果のシーケンスの累積的効果を反映するように、シグネチャ記憶ユニット、即ち記憶ラッチ４４６Ａに記憶される。同様に、プロセッサ４１０Ｂ、及びその結果及びシグネチャについても同じことが行われる。
【００２２】
１つの実施形態に従えば、プロセッサは、次のようにしてシグネチャを更新する。レジスタ内の値を変更する各々の命令について、例えばプロセッサ４１０Ａは、そのシグネチャ生成器４４４Ａへ新しい情報を送る。この新しい情報は、変更された値及びそれらの値を保持するレジスタのアイデンティティを含む。シグネチャ生成器４４４Ａは、新しい情報を、記憶ラッチ４４６Ａ内に既に存在するシグネチャとマージして、更新されたシグネチャを形成する。次に、チェックポイント、例えば記憶命令５１０．６に応答して、記憶ラッチ４４６Ａは、キャッシュ及び、又はメイン・ストアに記憶するための記憶値を送る。記憶ラッチ４４６Ａは、記憶値と一緒に累積的シグネチャを含む。その間に、プロセッサ４１０Ｂは、同じことを行っており、比較ユニット４２０は、それぞれの記憶ラッチ４４６Ａ及び４４６Ｂからの累積的シグネチャを比較する。もしシグネチャがマッチすれば、これは、結果５２０Ａ．１から５２０Ｂ．６、及び結果５２０Ｂ．１から５２０Ｂ．６が同じであったことを示す傾向がある。もしシグネチャがマッチしなければ、記憶結果は記憶バッファ４５０へ転送されない。その代わりに、比較ユニット４２０は、プロセッサが最後のマッチング・チェックポイントで有していた状態へプロセッサをリセットし、命令の再フェッチ及びローカル・キャッシュ４４８Ａ及び４４８Ｂのフラッシュを開始し、プロセッサがそのポイントで実行を再開できるようにする。
【００２３】
ペア状システムとして動作しているプロセッサ４１０Ａ及び４１０Ｂについては、図４に示されるように、プロセッサは１つの記憶バッファ４５０を共有している。代替的に、プロセッサは、自分自身の記憶バッファ（図示されていない）のそれぞれを調整して、統合された記憶バッファ４５０として機能させる。プロセッサが独立的に動作するとき、プロセッサの各々は、それぞれの記憶バッファを使用する。
【００２４】
命令５１０は或るプログラム・シーケンスを有し、結果５２０Ａ．１は命令５１０．１に対応し、結果５２０Ａ．２は命令５１０．２に対応し、以下同様であることを指摘した。図５に示される実施形態において、結果５２０Ａ及び５２０Ｂの対応するシーケンスによって暗示されるように、第２のプロセッサ４１０Ｂは、第１のプロセッサが命令５１０を実行するシーケンスと同じシーケンスで命令５１０を実行する。更に、実施形態に従えば、チェックポイントは記憶タイプの命令に応答することを指摘した。プロセッサが同じシーケンスで命令を実行する実施形態では、チェックポイントは代替的又は追加的に実行サイクルの累積数に応答してよいことを理解すべきである。１つの実施形態に従えば、チェックポイントは、記憶タイプの命令の結果ごとに、及び、もし或る記憶命令の後の１０個の命令結果が他の記憶命令のための結果を含まないならば、１０番目の命令結果ごとに、トリガされる。
【００２５】
代替の実施形態では、プロセッサ４１０Ａ及び４１０Ｂの１つ又は双方は、プログラム・シーケンスとは異なったシーケンスで命令の実行を可能とするアーキテクチャを有してよい。従って、結果５２０Ａ及び５２０Ｂは、図５に示されるシーケンスとは異なったシーケンスで作り出されてよい。従って、それぞれの結果を比較する共通のベースを所有するため、本発明の実施形態に従って、プロセッサの双方は、記憶タイプの命令が或る命令シーケンスの中で起こるシーケンスに従って、記憶タイプの命令を実行するように強制される。例えば、図５では、命令５１０．６及び５１０．１２は記憶タイプの命令であり、この実施形態に従えば、プロセッサ４１０Ａ及び４１０Ｂは、命令５１０．１から５１０．６をシーケンスに従わないで実行してよく、命令５１０．７から５１０．１２をシーケンスに従わないで実行してよいが、命令５１０．６のための結果は、命令５１０．７から５１０．１２までの結果の前に計算されなければならない。更に、実行が順序どおりでなく、所与の時点でコミットされているレジスタのみがシグネチャの更新に関与するときでも、プロセッサの状態はシーケンスに従って更新されなければならない。更に、順序どおりでない実行のために、アーキテクチャに依存して、設計レジスタは将来ファイル（future file）（ａ．ｋ．ａ．改名レジスタ（rename register））又は履歴ファイル（history file）で補足される。従って、レジスタ４５４Ａは将来ファイル・アーキテクチャにおける改名レジスタであるか、履歴ファイル・アーキテクチャにおける設計レジスタである。
【００２６】
このようにして、結果５２０Ａ．１から５２０Ａ．６（必ずしも、この順次ではない）の第１のシーケンスは記憶命令５１０．６の結果で終了し、結果５２０Ｂ．１から５２０Ｂ．６（必ずしも、この順序ではない）の第２のシーケンスは同じ記憶命令５１０．６の結果で終了するので、結果がシーケンス内の幾つかの点で異なっても、結果の第１のシーケンス及び結果の第２のシーケンスの累積的効果は、プロセッサの１つが誤作動しなかったならば、例えば記憶命令５１０．６のそれぞれの結果を計算した時点で同じであろう。即ち、結果の第１のシーケンスの中間にある結果の１つが、結果の第２のシーケンスの中間にある対応する結果の１つと異なっていても、第１のシーケンスのために第１のプロセッサが終了しつつある結果、及び第２のシーケンスのために第２のプロセッサが終了しつつある結果は、プロセッサの１つが誤作動しなかったならばマッチする傾向があるように、記憶タイプの命令に応答してチェックポイントをトリガすることが有利である。
【００２７】
これまでの説明は、命令の実行のシーケンスから生じるチェックポイントの問題に関連する。取り扱われなければならない他の問題は、失速に関する。即ち、スループット・レートを維持するため、シグネチャのチェックが前のシーケンスについて完了する前に、プロセッサが次の命令シーケンスの実行を少なくとも開始できるような方法及びストラクチャを提供しなければならない。そうでないと、チェックが完了するのを待つ間に、プロセッサは失速せざるを得ないであろう。
【００２８】
図４の実施形態において、レジスタ４５４Ａは「現在」のラベルを付けられ、シャドウ・レジスタのスタックを有する。スタックの最上部シャドウ・レジスタ４５４Ａ．１は「前」のラベルを付けられ、次の、即ち最下部の、シャドウ・レジスタ４５４Ａ．２は「コミット」のラベルを付けられている。「現在」レジスタ４５４Ａは現在の結果のレジスタに対応する。即ち、それは、現在読み出されているか書き込まれている値を有する。プロセッサ４１０Ａが、現在の結果が生じるシーケンスの直前の命令シーケンスのために、そのシグネチャを他のプロセッサ４１０Ｂのシグネチャと比較している間、プロセッサ４１０Ａは命令の実行を継続することができなければならない。継続するためには、プロセッサ４１０Ａは「現在」レジスタ４５４Ａを使用する必要があり、従って、直前のシーケンスからの結果を一時的に保持するため、「前」シャドウ・レジスタ４５４Ａ．１が設けられる。一度、比較が完了すると、もしシグネチャがマッチすれば、これは「前」シャドウ・レジスタ４５４Ａ．１内の結果が良好であることを示す傾向があり、従って、結果はコミットされてよい。他方では、もしシグネチャがマッチしなければ、プロセッサ４１０Ａは既知の良好な状態、即ちコミットされた状態である、より早期の状態へ、戻ることができなければならない。従って、コミットされた結果、即ち、シャドウ・レジスタ４５４Ａ．１内の結果よりも早期に計算されたレジスタ４５４Ａからの結果を保持するため、「コミット」シャドウ・レジスタ４５４Ａ．２が設けられる。
【００２９】
ここで図７を参照すると、本発明に従ったレジスタ処理に関連する方法のステップが示される。プロセッサは７１０で実行を開始し、７１５でチェックポイントをチェックする。もし命令がチェックポイントをトリガしなければ、プロセッサは７２０で実行を継続する。
【００３０】
プロセッサが７１５でチェックポイントに遭遇すると、プロセッサは、シグネチャが他のプロセッサからの対応するシグネチャとマッチするかどうかを調べるため、チェックポイントをトリガする命令で終了している命令シーケンスのために、７４５でシグネチャをチェックする必要がある。更に、プロセッサは、もしリソースが許せば、７２０で実行を継続する必要がある。従って、プロセッサは、７２５で、そのシャドウ・レジスタのスタックが満杯であるかどうかをチェックする。もしスタックが満杯であれば、プロセッサは、シャドウ・レジスタがクリアされるまで７４０で失速する。
【００３１】
確かに、最初のチェックポイントでは、シャドウ・スタックは満杯ではないであろう。ステップ７３５で、プロセッサ、例えばプロセッサ４１０Ａ（図４）は、設計レジスタ４５４Ａ（図４の「現在」レジスタ）内の結果を、「前」シャドウ・レジスタ４５４Ａ．１へコピー、即ちシフトして、７２０で命令の実行を継続する。このようにして、プロセッサは、チェックポイントをトリガする命令で終了した命令シーケンスの結果を反映するシグネチャのために７４５での比較が完了する前に、７２０で次の命令の実行を少なくとも開始することができる。
【００３２】
その間に、シャドウ・レジスタの１つ、例えばレジスタ４５４Ａ．１又は４５４Ａ．２（図４）は、次のようにして、７４５におけるプロセッサ４１０Ａのシグネチャとプロセッサ４１０Ｂのシグネチャとの比較に続いてクリアされるであろう。もしシグネチャがマッチすれば、これは、現在比較されているシグネチャに対応する結果がコミットされてよいことを示し、従って、主題のシグネチャに関連づけられた結果のために余地を作るため、「コミット」レジスタ４５４Ａ．２が７５０でクリア、即ち「削除」され、７５５で「前」レジスタ４５４Ａ．１の中の結果が「コミット」レジスタへ移動され、７２０で実行が継続する。（代替の実施形態では、結果は「前」レジスタから「コミット」レジスタへ実際に移動されなくてもよく、レジスタの機能が再割り当てされるだけでよいことを理解すべきである。即ち、「コミット」レジスタは無効のマークを付けられ、「前」レジスタが今や「コミット」レジスタと看做されてよい。）
【００３３】
もしシグネチャがマッチしなければ、７６０で「現在」レジスタ及び「前」レジスタがクリア又は無効のマークを付けられる。即ち、「削除」される。なぜなら、現在比較されているシグネチャに対応する命令シーケンスの直前のチェックポイントに関連づけられたコミット状態へプロセッサがリセットされる必要があるからである。次に、７６５で、「コミット」シャドウ・レジスタ４５４Ａ．２の中の結果が、その設計レジスタ４５４Ａへコピーされ、キャッシュ４４８Ａがフラッシュされて、命令が７７０で再フェッチされ、７２０で実行が継続する。
【００３４】
ステップ７４５の比較に続く論理通路の一方又は他方の結果として、シャドウ・レジスタの１つがクリアされており、従って、シャドウ・スタックが満杯のためプロセッサが７４０で失速せざるを得ないとすれば、この条件は取り除かれることを理解すべきである。
【００３５】
当業者は、特に図４のハードウェア、及び他の図面のハードウェアも、実施形態に依存して変更されてよいことを理解するであろう。例えば、シャドウ・レジスタ・スタック内のレジスタの数は、複数のシグネチャ比較動作が未解決であるように増加されてよい。示された例は、本発明に関してアーキテクチャ上の限定を暗示するものではない。
【００３６】
これまでの説明から、プロセッサは、説明されたように結果がチェックポイントでチェックされる高信頼性モードで動作可能であること、又は、プロセッサは独立的に動作してよいことが、本発明の特別の利点であることを理解すべきである。更に、利点として、高信頼性モードで相互をチェックするプロセッサは、多くの様相で異なってよいが、依然として高信頼性処理モードの要求に対して両立性を維持する。例えば、１つのプロセッサは、シーケンスに従わないで命令を実行する、より複雑なプロセッサであってよく、同時に、他のプロセッサは、命令を順序どおりに実行する、より単純なプロセッサであってよい。更に、利点として、プロセッサは同じスピードで動作する必要はない。プロセッサが実行を継続している間、プロセッサの結果は単にチェックポイントでチェックされてよい。
【００３７】
実施形態の説明は、例示的目的のために与えられたが、完全であること、又は開示された形式へ本発明を限定することは意図されない。多くの修正及び変形が当業者に明らかであろう。チェックポイントをトリガするために、記憶タイプの命令が選択され、誤作動するプロセッサが誤った結果を計算し、外部メモリ・サブシステムの状態を変更する危険が避けられることに注意すべきである。即ち、記憶タイプの命令に応答して、結果を外部メモリへコミットする前に正しい機能をチェックすることによって、危険が減少する。
【００３８】
チェックポイントが他のタイプの命令に応答してトリガされる実施形態を包含することは、本発明の趣旨及び範囲の中にあることを理解すべきである。
【００３９】
繰り返すが、実施形態は、本発明の原理及び実用的な応用を最良に説明するため、及び本発明を当業者に理解させるために選択及び説明された。様々な修正を有する様々な他の実施形態が、想定される具体的な使用に適しているかも知れない。しかし、これらの実施形態は本発明の範囲の中に入るであろう。
【００４０】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）マルチプロセッシングの方法であって、
（ａ）第１のプロセッサは、該プロセッサの結果の１つを記憶する第１のレジスタを有し、第１のレジスタは、少なくとも最上部シャドウ・レジスタ及び次のシャドウ・レジスタを含むシャドウ・レジスタの第１のスタックを有し、命令に応答して第１のプロセッサで第１の結果を計算するステップと、
（ｂ）第２のプロセッサは、該プロセッサの結果の１つを記憶する第２のレジスタを有し、第２のレジスタは、少なくとも最上部シャドウ・レジスタ及び次のシャドウ・レジスタを含むシャドウ・レジスタの第２のスタックを有し、前記命令に応答して第２のプロセッサで第２の結果を計算するステップと、
（ｃ）チェックポイントに応答して、第１のレジスタから第１のレジスタの最上部シャドウ・レジスタへ第１のプロセッサの現在の結果をシフトするステップと、
（ｄ）前記チェックポイントに応答して、第２のレジスタから第２のレジスタの最上部シャドウ・レジスタへ第２のプロセッサの現在の結果をシフトするステップと、
（ｅ）第１のプロセッサの結果の第１のシーケンスと第２のプロセッサの結果の第２のシーケンスとのマッチングをチェックするステップとを含み、
前記第１及び第２のシーケンスの結果は、それぞれステップ（ｃ）及び（ｄ）のシフトされた結果を含む
ことを特徴とする方法。
（２）第１のプロセッサの結果の第１のシーケンスのために第１の累積的シグネチャを計算するステップと、
第２のプロセッサの結果の第２のシーケンスのために第２の累積的シグネチャを計算するステップとを含み、
前記ステップ（ｅ）が第１及び第２の累積的シグネチャを比較する
ステップを備えた、上記（１）に記載の方法。
（３）前記命令は或る命令シーケンスを有し、前記プロセッサの少なくとも１つは、プログラム・シーケンスとは異なったシーケンスで命令を実行し、前記チェックポイントは記憶命令に応答することを特徴とし、
第１のプロセッサの結果の第１のシーケンスが、記憶命令の１つのための結果を伴って前記チェックポイントの１つで終了し、結果の第２のシーケンスが、同じ記憶命令のための結果を伴って第２のプロセッサの前記チェックポイントで終了するように、記憶命令が前記或る命令シーケンスの中で起こるシーケンスに従って両方の前記プロセッサで記憶タイプの命令を実行する
ステップを備えた、上記（２）に記載の方法。
（４）第１の累積的シグネチャを計算するステップが、第１のプロセッサの記憶命令の結果のために計算するステップを含み、第２の累積的シグネチャを計算することが、第２のプロセッサの記憶命令の結果のために計算するステップを含む、上記（３）に記載の方法。
（５）ステップ（ｅ）が、記憶命令のために第１のプロセッサの結果と第２のプロセッサの結果とを比較するステップを含む、上記（３）に記載の方法。
（６）第１のプロセッサが命令を実行するシーケンスと同じシーケンスで、第２のプロセッサが命令を実行し、前記チェックポイントが、実行サイクルの累積数に応答する、上記（２）に記載の方法。
（７）前記チェックポイントが記憶命令に応答する、上記（６）に記載の方法。
（８）最後のチェックポイント以来ずっと記憶命令が存在しない場合、前記チェックポイントが記憶命令及び実行サイクルの累積数に応答する、上記（２）に記載の方法。
（９）ステップ（ｃ）及び（ｄ）の前記シフトされた結果を反映する前記シグネチャのそれぞれのために比較が完了する前に、前記プロセッサが次の命令の実行を少なくとも開始する、上記（２）に記載の方法。
（１０）ステップ（ｃ）及び（ｄ）の前記シフトされた結果を反映する前記シグネチャのそれぞれのために比較が完了する前に、前記プロセッサが次の命令の実行を少なくとも開始する、上記（３）に記載の方法。
（１１）マルチプロセッシング・システムであって、
命令に応答して第１の結果を計算するように動作可能である第１のプロセッサと、
第２のプロセッサは、前記命令に応答して第２の結果を計算するように動作可能である第２のプロセッサと、
チェックポイントで前記結果のマッチングをチェックするように動作可能である比較ロジックとを含み
各々の前記プロセッサは、
前記プロセッサの結果を記憶する第１のレジスタを含み、第１のレジスタはシャドウ・レジスタのスタックを含み、前記プロセッサは前記結果のシフトを実行するように動作可能であり前記プロセッサの現在の結果を第１のレジスタからスタックの中へシフトして、前記プロセッサの最初の結果を、第１及び第２の結果がマスマッチしたことを決定する前記比較ロジックに応答して前記シャドウ・レジスタの１つから第１のレジスタへ復元することを特徴とする
マルチプロセッシング・システム。
（１２）各々の前記プロセッサが、
シグネチャ生成器と、
シグネチャ記憶ユニットとを含み、
前記シグネチャ生成器及び前記記憶ユニットは、前記プロセッサの結果のシーケンスのために累積的シグネチャを協力して計算するように動作可能であり、前記プロセッサは前記比較ロジックによる決定を停止したまま前記累積的シグネチャを前記シグネチャ記憶ユニットの中に記憶するように動作可能であり、前記結果のマッチングのチェックが、前記比較ロジックによって各々の前記プロセッサの前記累積的シグネチャを比較することを特徴とする
上記（１１）に記載のシステム。
（１３）前記命令が或る命令シーケンスを有し、前記プロセッサの少なくとも１つは、プログラム・シーケンスとは異なったシーケンスで命令を実行するが、前記プロセッサの両方は、記憶命令が前記或る命令シーケンスで起こるシーケンスに従って前記記憶命令を実行し、前記チェックポイントが記憶命令に応答して、第１のプロセッサの結果の第１のシーケンスが、前記記憶命令の１つのための結果を伴って前記チェックポイントの１つで終了し、結果の第２のシーケンスが、同じ記憶命令のための結果を伴って第２のプロセッサのために前記チェックポイントで終了することを特徴とする
上記（１２）に記載のシステム。
（１４）第１のプロセッサの結果のシーケンスに対する前記累積的シグネチャが、前記記憶命令のための結果を含み、第２のプロセッサの結果のシーケンスに対する前記累積的シグネチャが、前記記憶命令のための結果を含む、上記（１３）に記載のシステム。
（１５）前記結果のマッチングのチェックが、前記記憶命令のために第１のプロセッサの結果と第２のプロセッサの結果とを比較することを含む、上記（１３）に記載のシステム。
（１６）第１のプロセッサが前記命令を実行するシーケンスと同じシーケンスで、第２のプロセッサが前記命令を実行し、前記チェックポイントが、実行サイクルの累積数に応答する、上記（１２）に記載のシステム。
（１７）前記チェックポイントが記憶命令に応答する、上記（１６）に記載のシステム。
（１８）最後のチェックポイント以来記憶命令が存在しない場合、前記チェックポイントが記憶命令及び実行サイクルの累積数に応答する、上記（１２）に記載のシステム。
（１９）チェックポイントに応答して、各々の前記プロセッサのために、現在の命令のためにプロセッサの第１のレジスタの中にある結果が、第１のレジスタの最上部シャドウ・レジスタの中へシフトされ、それぞれの現在の結果を反映するそれぞれの前記シグネチャの比較が完了する前にプロセッサが次の命令の実行を少なくとも開始する、上記（１２）に記載のシステム。
（２０）チェックポイントに応答して、各々の前記プロセッサのために、現在の命令のためにプロセッサの第１のレジスタの中にある結果が、第１のレジスタの最上部シャドウ・レジスタの中へシフトされ、それぞれの現在の結果を反映するそれぞれの前記シグネチャの比較が完了する前にプロセッサが次の命令の実行を少なくとも開始する、上記（１３）に記載のシステム。
【図面の簡単な説明】
【図１】  高信頼性処理のための従来技術のプロセッサを示す図である。
【図２】  高信頼性処理のための他の従来技術のシステムを示す図である。
【図３】  プロセッサのための従来技術のレジスタ・ファイルを示す図である。
【図４】  本発明の実施形態に従ったプロセッサを示す図である。
【図５】  本発明の実施形態に従った、命令ストリーム及び図４のプロセッサによって計算された結果を示す図である。
【図６】  本発明の実施形態に従った、図４のプロセッサのためのレジスタ・ファイルを示す図である。
【図７】  本発明の実施形態に従った、図４のプロセッサのためにレジスタを取り扱う方法のステップを示す図である。
【符号の説明】
１００、１００Ａ、１００Ｂ、１００Ｃ  プロセッサ
１２０  設計レジスタ、レジスタ・ファイル
１２５  比較ユニット
１３０、１３５  実行ユニット
１６０  バス
２００  プロセッサ
３１０、３１５  レジスタ・ファイル
３２０  レジスタ・セル
３２２  メモリ・セル
３２４  入力（書き込み）ポート
３２６  出力（読み出し）ポート
３３０、３４０  レジスタ
４００  マルチプロセッシング・システム
４１０Ａ、４１０Ｂ  プロセッサ
４２０  比較ユニット
４３２Ａ  フェッチ・ロジック
４３４Ａ  命令キャッシュ
４３６Ａ  デコード・ロジック
４３８Ａ  発行キュー
４４０Ａ、４４０Ｂ  実行及びロード／記憶ユニット
４４２Ａ  コミット・ロジック
４４４Ａ、４４４Ｂ  シグネチャ生成器
４４６Ａ、４４６Ｂ  記憶ラッチ
４４８Ａ  データ・キャッシュ
４５０  記憶バッファ
４５４Ａ  設計レジスタ
４５４Ａ．１、４５４Ａ．２  シャドウ・レジスタ
４５４Ｂ  設計レジスタ
４５４Ｂ．１、４５４Ｂ．２  シャドウ・レジスタ
５１０  命令のシーケンス
５１０．１、５１０．２、５１０．３、５１０．４、５１０．５、５１０．６、５１０．７、５１０．８、５１０．９、５１０．１０、５１０．１１、５１０．１２  命令
５２０Ａ  結果のシーケンス
５２０Ａ．１、５２０Ａ．２、５２０Ａ．３、５２０Ａ．４、５２０Ａ．５、５２０Ａ．６、５２０Ａ．７、５２０Ａ．８、５２０Ａ．９、５２０Ａ．１０、５２０Ａ．１１、５２０Ａ．１２  結果
５２０Ｂ  結果のシーケンス
５２０Ｂ．１、５２０Ｂ．２、５２０Ｂ．３、５２０Ｂ．４、５２０Ｂ．５、５２０Ｂ．６、５２０Ｂ．７、５２０Ｂ．８、５２０Ｂ．９、５２０Ｂ．１０、５２０Ｂ．１１、５２０Ｂ．１２  結果
６１０  レジスタ・ファイル
６１５  レジスタ・セル
６２０  最上部シャドウ・セル
６２２  制御ＦＥＴ
６２５  最下部シャドウ・セル
６３０  シャドウ・セルのスタック
６３５  シャドウ・レジスタのスタック
６４０  レジスタ
【図１】
0003706586.tif 000002
【図２】
0003706586.tif 000003
【図３】
0003706586.tif 000004
【図４】
0003706586.tif 000005
【図５】
0003706586.tif 000006
【図６】
0003706586.tif 000007
【図７】
0003706586.tif 000008