(57)【要約】      （修正有）【課題】ステート履歴を使用して冗長プロセッサを同期する。【解決手段】装置は、２つのプロセッサ１１０、１２０、各プロセッサに対するステートストレージ１３０、１４０及び制御ロジック１５８を備える。プロセッサはそれぞれ、同じ命令を実行する。ステートストレージは、プロセッサによって実行される命令それぞれに対する圧縮されたプロセッサステート情報を格納する。制御ロジックは、ステートストレージからのエントリに基づいて、２つのプロセッサを同期させる。【選択図】図１
2014160483.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令を実行する第１プロセッサと、
前記複数の命令から前記第１プロセッサが実行した命令のそれぞれに対応する、第１プロセッサステート情報を含むエントリを格納する第１ストレージと、
前記複数の命令を実行する第２プロセッサと、
前記複数の命令から前記第２プロセッサが実行した命令のそれぞれに対応する、第２プロセッサステート情報を含むエントリを格納する第２ストレージと、
前記第１ストレージからの少なくとも１つのエントリ及び前記第２ストレージからの少なくとも１つのエントリに基づいて、前記第１プロセッサと前記第２プロセッサとを同期する制御部と、
前記第１ストレージ内のエントリと、前記第２ストレージ内のエントリとを比較する比較部と
を備える装置。
【請求項２】
前記第１ストレージは、前記複数の命令から前記第１プロセッサがリタイアした命令それぞれに対する第１プロセッサステート情報を格納し、
前記第２ストレージは、前記複数の命令から前記第２プロセッサがリタイアした命令それぞれに対する第２プロセッサステート情報を格納する請求項１に記載の装置。
【請求項３】
前記制御部は、前記比較部が一致を示すのに基づいて、前記第１プロセッサと前記第２プロセッサとを同期する請求項１または２に記載の装置。
【請求項４】
前記複数の命令は、１つの命令ストリームにおける命令のクォンタムである請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記制御部は、同一の命令境界から実行を開始させるべく、前記第１プロセッサと前記第２プロセッサとを同期させる請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記第１プロセッサ及び前記第２プロセッサの入力を複製して、前記第１プロセッサ及び前記第２プロセッサに供給する入力複製部を更に備える請求項５に記載の装置。
【請求項７】
前記制御部は、前記第１プロセッサと前記第２プロセッサとを同期した後に、複製された入力を前記第１プロセッサ及び前記第２プロセッサに供給する請求項６に記載の装置。
【請求項８】
前記複製された入力は、割り込みである請求項７に記載の装置。
【請求項９】
前記制御部は、同一ステートから実行を開始させるべく、前記第１プロセッサ及び前記第２プロセッサを同期させる請求項１から８のいずれか１項に記載の装置。
【請求項１０】
前記制御部は、前記第１ストレージから前記第１プロセッサのステート及び前記第２ストレージから前記第２プロセッサのステートのうちの１つを回復させることにより、前記同一ステートから実行を開始させるべく前記第１プロセッサと前記第２プロセッサとを同期させる請求項９に記載の装置。
【請求項１１】
前記第１プロセッサは、前記第１プロセッサステート情報を圧縮し格納する第１ステートストレージロジックを有し、
前記第２プロセッサは、前記第２プロセッサステート情報を圧縮し格納する第２ステートストレージロジックを有する請求項１から１０のいずれか１項に記載の装置。
【請求項１２】
リタイアされた命令の前記ステート情報は、前にリタイアされた命令のステート情報からの変化のみを含む請求項１から１１のいずれか１項に記載の装置。
【請求項１３】
前記比較部は、前記第１ストレージの前記エントリと、前記第２ストレージの前記エントリとを並行して比較する
請求項１から１２のいずれか１項に記載の装置。
【請求項１４】
前記比較部は、前記第１ストレージの前記エントリと、前記第２ストレージの前記エントリとを一度に比較する
請求項１から１２のいずれか１項に記載の装置。
【請求項１５】
複数の命令を第１プロセッサによって実行する段階と、
前記複数の命令を第２プロセッサによって実行する段階と、
前記複数の命令それぞれのリタイア状態における前記第１プロセッサのステートを表す情報を、前記第１プロセッサによって格納する段階と、
前記複数の命令それぞれのリタイア状態における前記第２プロセッサのステートを表す情報を、前記第２プロセッサによって格納する段階と、
格納された前記第１プロセッサの過去のステートを表す情報、及び格納された前記第２プロセッサの過去のステートを表す情報に基づいて、前記第１プロセッサと前記第２プロセッサとを同期させる段階と、
格納された前記第１プロセッサの過去のステートを表す情報と、格納された前記第２プロセッサの過去のステートを表す情報とを比較する段階と
を備える方法。
【請求項１６】
前記同期させる段階は、格納された前記第１プロセッサの過去のステートを表す情報と、格納された前記第２プロセッサの過去のステートを表す情報との間の一致に基づいて行われる請求項１５に記載の方法。
【請求項１７】
前記同期させる段階は、前記第１プロセッサ及び前記第２プロセッサを、前記一致によって示される命令境界から実行を開始させることを含む請求項１６に記載の方法。
【請求項１８】
同期させた後であって、前記一致によって示される前記命令境界から実行を開始させる前に、前記第１プロセッサ及び前記第２プロセッサに入力を供給する段階を更に備える請求項１７に記載の方法。
【請求項１９】
前記同期させる段階は、格納された前記第１プロセッサの過去のステートを表す情報から前記第１プロセッサのステート、及び格納された前記第２プロセッサの過去のステートを表す情報から前記第２プロセッサのステートのうちの１つを回復させる段階を有する請求項１８に記載の方法。
【請求項２０】
リタイアされた命令の前記ステートを表す情報は、前にリタイアされた命令のステート情報からの変化のみを含む請求項１５から１９のいずれか１項に記載の方法。
【請求項２１】
前記比較する段階では、前記第１プロセッサのステートを表す情報と、前記第２プロセッサのステートを表す情報とを並行して比較する
請求項１５から２０のいずれか１項に記載の方法。
【請求項２２】
前記比較する段階では、前記第１プロセッサのステートを表す情報と、前記第２プロセッサのステートを表す情報とを一度に比較する
請求項１５から２０のいずれか１項に記載の方法。
【請求項２３】
複数の命令を実行する実行コアと、
前記実行コアによってリタイアされた命令それぞれに対するステート情報を含むエントリであって、他のエントリと比較されるエントリを格納するストレージと
を備えるプロセッサであって、
前記ストレージは、前記プロセッサと冗長プロセッサとを同期させる制御部にアクセス可能であるプロセッサ。
【請求項２４】
前記ステート情報を格納するロジックを更に備える請求項２３に記載のプロセッサ。
【請求項２５】
前記エントリは、前記他のエントリと並行して比較される
請求項２３または２４に記載のプロセッサ。
【請求項２６】
前記エントリは、前記他のエントリと一度に比較される
請求項２３または２４に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理分野に関し、特に、情報処理システムにおけるエラーを低減する分野に関する。
【背景技術】
【０００２】
集積回路製造技術の向上が進み、マイクロプロセッサ及びその他のデータ処理装置における高い集積度及び低い動作電圧が提供されるようになり、このようなデバイスの製造者及び使用者は、ソフトエラーに対してより注力するようになってきている。ソフトエラーは、アルファ粒子及び高エネルギー中性子が、集積回路にぶつかり、回路ノードに集積されている電荷を変化させてしてしまう時に発生する。電荷変化が十分に大きい場合には、ノードの電圧が、１つの論理状態を表す１のレベルから、異なる論理状態を表す別のレベルへと変化してしまう場合があり、このノードに格納されている情報が壊されてしまう。一般的に、集積レベルが高くなると、ソフトエラー率も高くなる。これは、より多くの回路が１つのダイに集積されるほど、そのダイの電圧ノードに粒子が衝突する可能性が高くなるからである。また、動作電圧が低くなると、互いに異なる論理状態を表す電圧レベル間の電位差は小さくなり、回路ノードにおける論理状態を変更するのに必要となるエネルギーが小さくなることから、より多くのソフトエラーが発生することとなる。
【０００３】
ソフトエラーを引き起こす特定の種類の粒子をブロックすることは難しいと考えられ、データ処理装置は多くの場合、ソフトエラーを検出する方法、及び時には、ソフトエラーを修正する方法を備える。これらのエラー低減方法は、冗長化を含む。冗長化するために、２つ以上のハードウェアコンテキストが、プログラム又は命令ストリームの同じコピーを実行する。ハードウェアコンテキストは、命令ストリームを実行する能力を有するあらゆるハードウェアによって構成されていてもよく、例えば、マルチスレッドプロセッサにおける論理プロセッサ、マルチコアプロセッサにおけるコア、マルチプロセッサシステムにおけるフルプロセッサ、又は、プロセッサ、システムメモリ及び入力／出力（Ｉ／Ｏ）デバイスを備える可能性のあるフルシステムによって構成されていてもよい。２以上のハードウェアコンテキストからの出力が比較され、異なっていれば、エラーハンドルメカニズムが起動されて、エラーが発生したか否かが判断され、及び／又はエラーに対処する。
【０００４】
冗長化の幾つかの実装形態では、２つ以上のハードウェアコンテキストが、ロックステップで動作する、すなわち、２つ以上のハードウェアコンテキストがそれぞれ、ストリーム内の同じ命令を、同時に実行する。冗長化の別の実装形態では、２つ以上のハードウェアコンテキストが、ロックステップでない又は互いに同期していない態様で、命令ストリームの同一のコピーを実行してもよい。すなわち、それぞれが、ストリーム内の別の命令を同時に実行してもよい。ハードウェアコンテキストが同期していない時点での入力又は割り込みの供給は、１のコンテキストからの出力と、別のコンテキストからの出力とを異ならせる場合があり、出力の不一致が実際のエラーから生じたものでないにもかかわらず、エラーハンドラを起動させてしまう場合がある。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施形態に係るステートストレージを含むシステムを示した図である。
【図２】本発明の一実施形態に係るステート履歴を使用した冗長プロセッサを同期する方法を示した図である。
【発明を実施するための形態】
【０００６】
本発明を、例を参照して以下に説明し、本発明は、添付の図面に限定されない。
【０００７】
ステート履歴を使用した冗長プロセッサを同期するための本発明の実施形態を記載する。以下の説明には、本発明の理解を促すために、プロセッサ及びシステムの構成といった数多くの詳細事項が記載される。しかしながら、これらの詳細事項が無くとも、本発明を実施可能であることは、当業者にとって明らかである。また、周知の構造、回路、及びその他の特徴については、本発明を不必要に曖昧にしてしまうことを避ける目的から、詳細に示していない。例えば、数多くの周知の方法を、本発明の実施形態において使用することができることから、冗長プロセッサの制御についての完全な説明は記載されていない。
【０００８】
背景技術の章で記載したように、データ処理装置におけるエラーの影響を低減させるために冗長性が利用される。冗長化のある実装形態では、２つ以上のプロセッサが、ロックステップでない又は互いに同期していない態様で、命令ストリームの同一のコピーを実行してもよい。すなわち、それぞれが、命令ストリームにおける別の命令を同時に実行してもよい。プロセッサが同期していない時点での入力又は割り込みの供給によって、エラーハンドラを起動させてしまうことを防ぐために、入力又は割り込みの供給の前に、プロセッサを同期しておく場合がある。
【０００９】
プロセッサを同期する１つの方法としては、命令ストリームを、連続した複数の"クォンタム（ｑｕａｎｔｕｍ）"に分割し、クォンタムのそれぞれは、特定の数の命令を含む。パフォーマンスカウンタ又はその他のメカニズムを使用して、命令のリタイアをカウントし、各クォンタムの最後で、ブレークポイント、コールバック、又はその他の制御フローイベントを発生させてもよい。このようなクォンタムブレイクポイントそれぞれにおいて、複数のプロセッサを同期させてもよく、命令ストリームにおける全く同じ命令境界で、入力又は割り込みが各ハードウェアコンテキストに供給されるようにしてもよい。同期は、プロセッサそれぞれを特別なモードで動作させることにより実行されてもよく、特別なモードは、命令、実行、シングルステップ及びブレークポイントの複雑な組み合わせで構成される。
【００１０】
プロセッサの同期を行う別の方法としては、カスタムオペレーティングシステムを使用することが考えられ、プロセッサはそれぞれ、割り込みを受信すると、命令ストリームにおける"ランデブー"ポイントに対する提案を、冗長制御ロジック内のハードウェアレジスタに書き込む。冗長制御ロジックは、許容されるランデブーポイントを判断し、それを各プロセッサに書き込む。そして、プロセッサはそれぞれ、同じランデブーポイントで割り込みが扱われるようにスケジュールする。ランデブーポイントは、オペレーティングシステム及びアプリケーション内に埋め込まれるカスタムコード内でのみスケジュールされるようにしてもよい。ランデブーポイントをスケジュールする機会が無く長い間実行されているプロセッサの場合には、命令ストリームを通じた高速転送、及び／又は１のプロセッサのステートを別のプロセッサにコピーするといった別の方法で、冗長プロセッサを同期する必要が生じる場合がある。
【００１１】
本発明の実施形態は、ステート履歴を使用してプロセッサを同期する方法を提供する。この方法は、上記した特別モードでプロセッサをそれぞれ実行させるより複雑でなく、上記したランデブーポイント方法のようにカスタムオペレーティングシステムを必要としないことから、本方法がより望ましい。
【００１２】
図１には、本発明の一実施形態に係る情報処理システム１００が示されている。システム１００は、プロセッサ１１０及び１２０、ステートストレージ１３０及び１４０、冗長ロジック１５０及びＩ／Ｏデバイス１６０を備える。システム１００は、更なるプロセッサ、デバイス、メモリ、若しくはその他の構成要素又はロジックをさらに備えてもよい。
【００１３】
プロセッサ１１０及び１２０はそれぞれ、汎用マイクロプロセッサを含むいかなる種類のプロセッサであってもよく、例えば、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）プロセッサシリーズのプロセッサ、Ｉｔａｎｉｕｍ（登録商標）プロセッサシリーズのプロセッサ、又はＩｎｔｅｌ（登録商標）社製のその他のプロセッサ、又は他社製のプロセッサ、若しくは、特定用途プロセッサ又はマイクロコントローラであってもよい。プロセッサ１１０及び１２０はそれぞれ、複数のスレッド及び複数の実行コアを、あらゆる組み合わせとして含んでもよい。
【００１４】
Ｉ／Ｏデバイス１６０は、あらゆる数のあらゆる種類のＩ／Ｏ、周辺機器、又はその他のデバイスを表しており、例えば、キーボード、マウス、トラックボール、ポインティングデバイス、モニタ、プリンタ、メディアカード、ネットワークインターフェース、情報記憶デバイス等であり、又は割り込み又はその他の入力をプロセッサに適用することのできるその他のデバイスである。Ｉ／Ｏデバイス１６０は、別々の構成要素として実現されていてもよいし、その他のデバイスに一体化した構成要素として含まれていてもよい。一実施形態では、Ｉ／Ｏデバイス１５０は、多機能Ｉ／Ｏ、周辺機器又はその他のデバイスの１つの機能を表している。
【００１５】
冗長ロジック１５０は、プロセッサ１１０及び１２０が、プロセッサ１１０、１２０及びシステム１００内のその他の冗長プロセッサの冗長オペレーションを実行することを可能とする、補助する又はサポートするあらゆる回路、ロジック又はその他の構造を含んでもよい。図１の実施形態では、冗長ロジック１５０は、入力複製部１５２、出力比較部１５４、ステート比較部１５６、及び制御ロジック１５８を含む。入力複製部１５２は、Ｉ／Ｏデバイス１５０からプロセッサ１１０及び１２０に供給されるべき割り込み又はその他の入力を複製する。出力比較部１５４は、プロセッサ１１０からの出力を、プロセッサ１２０からの出力と比較する。ステート比較部１５６は、以下に説明するように、プロセッサ１１０からのステート情報と、プロセッサ１２０からのステート情報とを比較する。制御ロジック１５８は、入力複製、出力比較、出力不一致のハンドリング、エラーハンドラの起動、ステート情報の比較、及びプロセッサ１１０及び１２０の同期を制御し、また、プロセッサ１１０及び１２０の冗長オペレーションを制御する。入力複製、出力比較、出力不一致のハンドリング、エラーハンドラの起動、及び同期の制御については、本明細書に記載しない。また、プロセッサ１１０及び１２０の冗長オペレーションのその他の制御は、本明細書に特に記載しない限り、周知の方法に従って実行することができる。
【００１６】
ステートストレージ１３０及び１４０はそれぞれ、プロセッサ１１０及び１２０に対するステート情報を格納する。ステートストレージ１３０及び１４０は、スタティック・ランダム・アクセス・メモリのようなあらゆる種類のメモリ、又は、その他の種類の情報記憶媒体を含んでもよい。ステートストレージ１３０及び１４０は、プロセッサ１１０及び１２０に含まれていてもよいし、プロセッサ１１０及び１２０とは別個に設けられていてもよく、又は、互いに組み合わせられていてもよいし、互いに別々に設けられていてもよい。
【００１７】
ステートストレージ１３０は、命令それぞれに対するエントリを、クォンタムのような少なくとも命令ストリームの一部分に格納する。例えば、クォンタムが、１，０００個の命令を含む場合には、ステートストレージ１３０は、１，０００個のエントリに対する記憶領域を含む。同様に、ステートストレージ１４０は、命令それぞれに対するエントリを、クォンタムのような少なくとも命令ストリームの一部分に格納する。エントリはそれぞれ、以下に説明するように、命令に対応するプロセッサのステートに関する情報を含む。したがって、命令ストリームのあらゆるクォンタムについて、ステートストレージ１３０は、プロセッサ１１０のステートの履歴を格納し、ステートストレージ１４０は、プロセッサ１２０のステートの履歴を格納してもよい。エントリ又はエントリロケーションはそれぞれ、インデックス、識別子、又はエントリと命令とを関連付けるその他の手段をさらに含んでもよく、及び／又は関連付けが、ステートストレージ１３０及び１４０によって非明示的に示されてもよい。例えば、ステートストレージ１３０における第１エントリロケーションは、クォンタム単位のリタイアされた第１命令等と関連付けられていてもよい。
【００１８】
一実施形態において、プロセッサ１１０が命令をリタイアする又はコミットする都度、ステートストレージ１３０は、プロセッサ１１０の全体的なステートを表すエントリを格納してもよく、プロセッサ１２０が命令をリタイアする又はコミットする都度、ステートストレージ１４０は、プロセッサ１２０の全体的なステートを表すエントリを格納してもよい。格納される情報は、プロセッサの状態を反映しており、例えば、プロセッサ１１０のステートがプロセッサ１２０のステートと一致するかを判断するために、その他のプロセッサのステートを表す情報との比較を行ってもよい。例えば、情報は、全てのプロセッサレジスタ又はプロセッサ内のその他のストレージロケーションの内容を含む又はその内容から導き出されたものであってもよい。
【００１９】
ステートストレージ１３０及び１４０のサイズ、及びステート比較部１５６の複雑性を低減するために、リタイアされた命令それぞれに対応するステート情報を格納する前に、デジタル署名、ハッシュ値、指紋、又はその他の周知の方法に従って、圧縮してもよい。一実施形態において、リタイアされた命令に対応するステート情報は、前にリタイアされた命令のステートからの変化のみを含むようにしてもよい。圧縮又はコーディング、及び／又はステート情報の格納を制御するため、プロセッサ１１０及び１２０はそれぞれ、指紋生成ロジック１１２及び１２２含んでもよい。
【００２０】
ステート比較部１５４の実装は、ステート１３０及び１４０のエントリのフォーマットに依存する。例えば、エントリが、巡回冗長検査機能を使用して計算された１６ビットの指紋である場合には、前のステートに対する全ての変更を集約した後、１６ビット比較部を使用して２つのエントリの比較が行われる。
【００２１】
図２には、本発明の一実施形態に係るステート履歴を使用したプロセッサの同期を行うための方法２００が示されている。図１のシステムの実施形態を参照して、図２の方法の実施形態が説明されるが、本方法の実施形態は、この点に関して限定されない。方法２００の全て又は一部は、制御ロジック１５８、又はシステム１００内の又はシステム１００に受け入れられるその他の制御ロジックによって実行される、又はその実行が発生する。制御ロジックは、あらゆる種類の回路、ロジック、若しくは、マイクロコード、配線で接続されたロジック、プログラム可能ロジック、又はファームウェアのようなその他の構造を含んでもよい。
【００２２】
ボックス２１０では、プロセッサ１１０が、命令ストリーム又は命令ストリームの一部の実行を開始する。ボックス２１２では、プロセッサ１１２が、冗長的に命令ストリーム又は命令ストリームの一部の実行を開始する、すなわち、プロセッサ１１２は、プロセッサ１１０がボックス２１０において命令ストリームの実行を開始したのと同じステートであって、命令ストリームの同じ命令境界において実行を開始する。
【００２３】
ボックス２２０及び２２２では、プロセッサ１１０及び１１２はそれぞれ、冗長的に命令ストリームの実行を続けるが、ロックステップ的又は互いに同期した形態ではない。すなわち、プロセッサはそれぞれ、他のプロセッサとは独立して命令を実行可能となっており、ストリームにおいて異なる命令を同時に実行してもよく、及び／又はストリームにおける同じ命令を異なるタイミングで実行してもよい。例えば、命令の実行又はリタイアメントのタイミング及び／又は順番は、プロセッサ間で異なってもよい。プロセッサ１１０及び１１２の冗長オペレーションの間に出力不一致が生じた場合には、周知の方法に従ってそれに対処してもよい。
【００２４】
さらに、ボックス２２０では、プロセッサ１１０によって命令がリタイアされる都度、指紋生成ロジック１１２によってプロセッサステートの指紋が生成され、ステートストレージ１３０に格納される。同様に、ボックス２２２では、プロセッサ１２０によって命令がリタイアされる都度、指紋生成ロジック１２２によってプロセッサステートの指紋が生成され、ステートストレージ１４０に格納される。
【００２５】
ボックス２３０では、プロセッサ１１０が、クォンタムにおける最後の命令をリタイアする。ボックス２３２では、プロセッサ１１２が、クォンタムにおける最後の命令をリタイアする。
【００２６】
ボックス２４０では、プロセッサ１１０のステート履歴を、プロセッサ１２０のステート履歴と比較して、最新の一致を見つける。ボックス２４０では、ステートストレージ１３０内の少なくとも１つのエントリと、ステートストレージ１４０内の少なくとも１つのエントリとの比較が、様々な方法に従って実行されてもよい。一実施形態では、ステートストレージ１３０における複数のエントリからなるグループ内の各エントリは、並行して、ステートストレージ１４０における複数のエントリからなるグループ内の各エントリと比較されてもよい。１つ以上の一致が発見された場合には、最も新しいエントリに伴う一致を選択してもよい。別の実施形態では、ステートストレージ１３０又は１４０のうちの１つにおける複数のエントリと、ステートストレージ１３０又は１４０のうちの他方における複数のエントリとを、最新のエントリから開始して、一致が見つかるまで、一度に比較を行ってもよい。例えば、ステートストレージ１３０における最新のエントリを、まずステートストレージ１４０における最新のエントリと比較し、ステートストレージ１４０における次に新しいエントリと比較を行うといったように比較を続け、一致が発見できなかった場合には、ステートストレージ１３０における次に新しいエントリを、ステートストレージ１４０における最新のエントリと比較し、そして、ステートストレージ１４０における次に新しいエントリと比較を行っていくようにしてもよい。
【００２７】
ボックス２４０において一致が発見されなかった場合には、ボックス２５０に進み、エラーハンドラが起動される。
【００２８】
ボックス２４０において、一致が見つかった場合には、ボックス２６０に進み、ボックス２４０で発見された一致に基づいて、プロセッサ１１０及び１２０が、同じ命令境界において同期される。エントリが一致していることから、これらは共にリタイアされた同じ命令と関連付けられており、必要であれば、プロセッサは、過去のステートを回復することを含む周知の方法に従ってバックアップ、ロールバックされていてもよく、又は、同じ命令境界から実行を開始するように設定されてもよい。本発明の実施形態は、プロセッサ１１０及び１２０のそれぞれの過去のステートを回復させるために、ステートストレージ１３０及び１４０からの情報を使用することを含む。
【００２９】
ボックス２７０では、割り込み又は入力が、プロセッサ１１０及び１２０に供給される。
【００３０】
方法２００は、ボックス２７０から、ボックス２１０及びボックス２１２へと継続し、ボックス２６０において同期され、プロセッサ１１０及び１１２は、同じリタイア命令境界から実行を開始してもよい。したがって、割り込み又は入力の供給のタイミングは、プロセッサ１１０及びプロセッサ１２０間で異なることがない。
【００３１】
本発明の範囲内において、図２に示される方法は、異なる順序で実行されてもよく、また、図示されているボックスを省略したり、更なるボックスを追加したりしてもよく、ボックスの順序の変更、省略及び追加の組み合わせを行ってもよい。
【００３２】
プロセッサ１１０及び１２０、又はその他の構成要素、又は本発明の実施形態に従って設計された構成要素の一部は、開発から製造シミュレーションの様々な段階において設計されたものであってもよい。設計を表すデータは、複数の態様での設計を表していてもよい。シミュレーションで利用しやすいように、ハードウェアは、初めは、ハードウェア記述言語、又は別の機能的記述言語を使用して表されていてもよい。さらに又はこれに替えて、設計プロセスのある段階において、ロジック及び／又はトランジスタゲートを有する回路レベルを生成してもよい。さらに、ある段階で、設計の多くは、様々なデバイスの物理的配置を表すデータを使用してモデル化されるレベルに達する。従来の半導体製造技術が適用される場合には、デバイス配置モデルを表すデータは、集積回路を製造するのに使用されるマスクに対する様々なマスク層において、様々な構造が存在するか否かを規定するデータであってもよい。
【００３３】
設計のあらゆる表現において、データは、いかなる形式の機械可読媒体に格納されてもよい。このような情報を送信するべく変調された又は生成された光波又は電波、メモリ、又はディスクのような磁気又は光記憶媒体が、機械可読媒体であってもよい。これらの媒体は、設計情報、又は本発明の実施形態で使用されるその他の情報を"搬送する"又は"示す"のに使用されてもよい。情報を示す又は伴う電気搬送波が送信され、この電気信号のコピー、バッファ又は再送が行われる場合においては、新しいコピーが生成される。したがって、通信事業者又はネットワークプロバイダが行うアクションは、本発明の技術を実現するべく、物品、例えば、搬送波のコピーを形成することで構成されていてもよい。
【００３４】
以上、ステート履歴を使用して冗長プロセッサを同期させる本発明の実施形態について記載した。特定の実施形態が図面及び明細書に示されたが、これらの実施形態は、単なる例示に過ぎず、本発明を限定するものではなく、本明細書を理解することにより当業者は様々なその他の変形を考え得ることから、本発明は、明細書に記載された特定の構造及び配置に限定されない。成長が早く、技術発展が容易に予測できない技術分野においては、開示された実施形態は、本発明の原理又は添付の特許請求の範囲から逸脱することなく、技術発展を可能とするべくその詳細事項及び配置において適宜変更可能である。
【図１】
2014160483.tif 000003
【図２】
2014160483.tif 000004
【手続補正書】
【提出日】平成26年4月3日(2014.4.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の命令を実行する第１プロセッサと、
第１プロセッサのステートの履歴を格納する第１ストレージであって、前記複数の命令のうち前記第１プロセッサによってリタイアまたはコミットされた命令のために前記第１プロセッサ全体のステートを示す情報の格納毎の複数のエントリを含む前記第１ストレージと、
前記複数の命令を実行する第２プロセッサと、
第２プロセッサのステートの履歴を格納する第２ストレージであって、前記複数の命令のうち前記第２プロセッサによってリタイアまたはコミットされた命令のために前記第２プロセッサ全体のステートを示す情報の格納毎の複数のエントリを含む前記第２ストレージと、
前記第１ストレージからの少なくとも１つのエントリ及び前記第２ストレージからの少なくとも１つのエントリに基づいて、前記第１プロセッサと前記第２プロセッサとを同期する制御部と
を備える装置。
【請求項２】
前記第１ストレージは、前記複数の命令から前記第１プロセッサがリタイアした命令それぞれに対する前記第１プロセッサ全体のステートを格納し、
前記第２ストレージは、前記複数の命令から前記第２プロセッサがリタイアした命令それぞれに対する前記第２プロセッサ全体のステートを格納する請求項１に記載の装置。
【請求項３】
前記第１ストレージ内のエントリと、前記第２ストレージ内のエントリとを比較する比較部を更に備え、
前記エントリのそれぞれは、前にリタイされた命令のステートからの変化のみを含む請求項１に記載の装置。
【請求項４】
前記制御部は、前記比較部が一致を示すのに基づいて、前記第１プロセッサと前記第２プロセッサとを同期する請求項３に記載の装置。
【請求項５】
前記制御部は、同一の命令境界から実行を開始させるべく、前記第１プロセッサと前記第２プロセッサとを同期させる請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記第１プロセッサ及び前記第２プロセッサの入力を複製して、前記第１プロセッサ及び前記第２プロセッサに供給する入力複製部を更に備える請求項５に記載の装置。
【請求項７】
前記制御部は、前記第１プロセッサと前記第２プロセッサとを同期した後に、複製された入力を前記第１プロセッサ及び前記第２プロセッサに供給する請求項６に記載の装置。
【請求項８】
前記複製された入力は、割り込みである請求項７に記載の装置。
【請求項９】
前記制御部は、同一ステートから実行を開始させるべく、前記第１プロセッサ及び前記第２プロセッサを同期させる請求項１から８のいずれか１項に記載の装置。
【請求項１０】
前記制御部は、前記第１ストレージから前記第１プロセッサのステート及び前記第２ストレージから前記第２プロセッサのステートのうちの１つを回復させることにより、前記同一ステートから実行を開始させるべく前記第１プロセッサと前記第２プロセッサとを同期させる請求項９に記載の装置。
【請求項１１】
前記第１プロセッサは、前記第１プロセッサのステート情報を圧縮し格納する第１ステートストレージロジックを有し、
前記第２プロセッサは、前記第２プロセッサのステート情報を圧縮し格納する第２ステートストレージロジックを有する請求項１から１０のいずれか１項に記載の装置。
【請求項１２】
複数の命令を第１プロセッサによって実行する段階と、
前記複数の命令を第２プロセッサによって実行する段階と、
エントリのそれぞれは、前にリタイアされた命令の状態からの変化のみを含み、第１ステートストレージのエントリの前記複数の命令それぞれのリタイア状態における前記第１プロセッサの全体のステートを表す情報を、前記第１プロセッサによって格納する段階と、
エントリのそれぞれは、前にリタイアされた命令の状態からの変化のみを含み、第２ステートストレージのエントリの前記複数の命令それぞれのリタイア状態における前記第２プロセッサの全体のステートを表す情報を、前記第２プロセッサによって格納する段階と、
第１ステートストレージのエントリ及び第２ステートストレージのエントリに前記格納された情報に基づいて、前記第１プロセッサと前記第２プロセッサとを同期させる段階と、
を備える方法。
【請求項１３】
前記格納された前記第１プロセッサの過去のステートを表す情報と、前記格納された前記第２プロセッサの過去のステートを表す情報とを比較する段階
を更に備える請求項１２に記載の方法。
【請求項１４】
前記同期させる段階は、前記格納された前記第１プロセッサの過去のステートを表す情報と、前記格納された前記第２プロセッサの過去のステートを表す情報との間の一致に基づいて行われる請求項１３に記載の方法。
【請求項１５】
前記同期させる段階は、前記第１プロセッサ及び前記第２プロセッサを、前記一致によって示される命令境界から実行を開始させることを含む請求項１４に記載の方法。
【請求項１６】
同期させた後であって、前記一致によって示される前記命令境界から実行を開始させる前に、前記第１プロセッサ及び前記第２プロセッサに入力を供給する段階を更に備える請求項１５に記載の方法。
【請求項１７】
前記同期させる段階は、前記格納された前記第１プロセッサの過去のステートを表す情報から前記第１プロセッサのステート、及び前記格納された前記第２プロセッサの過去のステートを表す情報から前記第２プロセッサのステートのうちの１つを回復させる段階を有する請求項１６に記載の方法。
【請求項１８】
複数の命令を実行する実行コアと、
前記実行コアによってリタイアされた命令のためのステート情報を格納する毎の複数のエントリを含むストレージと、
前記ストレージに前記ステート情報を格納するロジックと
を備えるプロセッサであって、
前記ストレージは、前記プロセッサと冗長プロセッサとを同期させる制御部にアクセス可能であって、
前記制御部は、前記ストレージからの少なくとも１つのエントリ及び前記冗長プロセッサに関連付けられた少なくとも１つのエントリに基づいて、前記プロセッサと前記冗長プロセッサとを同期させ、
前記ロジックは、前にリタイアされた命令のステートからの変化のみを含む各エントリに対する前記ステート情報を圧縮して格納するプロセッサ。
【請求項１９】
前記実行コアの過去のステートを示す格納された情報と前記冗長プロセッサの過去のステートを示す格納された情報とに基づいて、前記プロセッサと前記冗長プロセッサとを同期させる同期化ロジックを更に備える
請求項１８に記載のプロセッサ。