(57)【要約】ロックステップ式二重化モジュール冗長システムにおいて訂正不能エラーレートを低減させる装置および方法の諸実施形態が開示される。ある実施形態では、装置は二つのプロセッサ・コア、マイクロチェッカー、グローバルチェッカーおよびフォールト論理を含む。マイクロチェッカーは、一方のコア内の構造からの値が他方のコアにおける対応する構造からの値に一致するかどうかを検出する。グローバルチェッカーは、二つのコアの間のロックステップ障害を検出する。フォールト論理は、ロックステップ・エラーがあるがマイクロチェッカーが不一致を検出した場合には、二つのコアを再同期させる。
2009501367.tif 000002
【特許請求の範囲】
【請求項１】
第一の構造を含む第一のコアと；
第二の構造を含む第二のコアと；
第一の構造からの第一の値が第二の構造からの第二の値に一致するかどうかを検出するマイクロチェッカーと；
第一のコアと第二のコアの間のロックステップ障害を検出するグローバルチェッカーと；
グローバルチェッカーがロックステップ障害を検出し、かつマイクロチェッカーが第一の値と第二の値の間の不一致を検出する場合には、第一のコアと第二のコアを再同期させるフォールト論理とを有する装置。
【請求項２】
前記マイクロチェッカーが前記第一の値と前記第二の値を比較する比較器を含む、請求項１記載の装置。
【請求項３】
前記グローバルチェッカーが前記第一のコアの第一の出力と前記第二のコアの第二の出力を比較する比較器を含む、請求項１記載の装置。
【請求項４】
前記フォールト論理がさらに、前記グローバルチェッカーがロックステップ障害を検出し、かつ前記マイクロチェッカーが前記第一の値が前記第二の値に一致することを検出する場合に、訂正不能エラーの検出を示す、請求項１記載の装置。
【請求項５】
前記第一のコアが第三の構造および第四の構造をも含んでおり；
前記第二のコアが第五の構造および第六の構造をも含んでおり；
前記第一の構造が、前記第三の構造からの第三の値および前記第四の構造からの第四の値に基づいて前記第一の値を生成する第一のフィンガープリント論理を含んでおり；
前記第二の構造が、前記第五の構造からの第五の値および前記第六の構造からの第六の値に基づいて前記第二の値を生成する第二のフィンガープリント論理を含んでいる、
請求項１記載の装置。
【請求項６】
前記第一のコアのアーキテクチャ状態は前記第一の値とは独立であり；
前記第二のコアのアーキテクチャ状態は前記第二の値とは独立である、
請求項１記載の装置。
【請求項７】
前記第一の構造が第一の予測構造であり；
前記第二の構造が第二の予測構造である、
請求項６記載の装置。
【請求項８】
前記フォールト論理がさらに、前記グローバルチェッカーがロックステップ障害を検出し、かつ前記マイクロチェッカーが不一致を検出する場合に、前記第一の値と前記第二の値を再生成させる、請求項１記載の装置。
【請求項９】
前記第一の構造が第一のキャッシュであり；
前記第一の結果が第一のキャッシュ項目であり；
前記第二の構造が第二のキャッシュであり；
前記第二の結果が第二のキャッシュ項目である、
請求項８記載の装置。
【請求項１０】
前記フォールト論理がさらに、前記グローバルチェッカーがロックステップ障害を検出し、かつ前記マイクロチェッカーが不一致を検出する場合に、前記第一のキャッシュ項目と前記第二のキャッシュ項目を再ロードさせる、請求項９記載の装置。
【請求項１１】
第一のコア内の第一の構造からの第一の値が第二のコア内の第二の構造からの第二の値に一致するかどうかを検査する段階と；
第一のコアと第二のコアの間のロックステップ障害を検出する段階と；
前記第一の値と前記第二の値の間に不一致が検出される場合には、前記第一のコアと前記第二のコアを再同期させる段階とを有する方法。
【請求項１２】
前記第一の値が前記第二の値に一致する場合には、訂正不能エラーの検出を示すことをさらに含む、請求項１１記載の方法。
【請求項１３】
前記第一のコア内の第三の構造からの第三の値および前記第一のコア内の第四の構造からの第四の値に基づいて前記第一の値を生成する段階と；
前記第二のコア内の第五の構造からの第五の値および前記第二のコア内の第六の構造からの第六の値に基づいて前記第二の値を生成する段階をさらに有する、
請求項１２記載の方法。
【請求項１４】
前記第一の値を生成する段階が、前記第三の値および前記第四の値に基づいてチェックサムを生成することを含んでおり；
前記第二の値を生成する段階が、前記第五の値および前記第六の値に基づいてチェックサムを生成することを含んでいる、
請求項１３記載の方法。
【請求項１５】
ある第一の命令が前記第一のコアによって実行されるべきかどうかを前記第一の値に基づいて予測する段階と；
ある第二の命令が前記第二のコアによって実行されるべきかどうかを前記第二の値に基づいて予測する段階とを有する、請求項１１記載の方法。
【請求項１６】
前記不一致が検出される場合、前記第一の値および前記第二の値を再生成することをさらに含む、請求項１１記載の方法。
【請求項１７】
前記第一の値を前記再生成された第一の値と比較し；
前記第二の値を前記再生成された第二の値と比較し；
前記第二の値が前記再生成された第二の値に一致する場合、前記第一のコアを前記第二のコアに同期させ；
前記第一の値が前記再生成された第一の値に一致する場合、前記第二のコアを前記第一のコアに同期させる、
ことを含む、請求項１６記載の方法。
【請求項１８】
前記第一の構造が第一のキャッシュであり、前記第一の値が第一のキャッシュ項目であり、前記第二の構造が第二のキャッシュであり、前記第二の値が第二のキャッシュ項目であり、前記第一の値および前記第二の値を再生成する段階が、前記第一のキャッシュ項目および前記第二のキャッシュ項目を再ロードすることを含む、請求項１６記載の方法。
【請求項１９】
ダイナミック・ランダム・アクセス・メモリと；
第一の構造を含む第一のコアと；
第二の構造を含む第二のコアと；
第一の構造からの第一の値が第二の構造からの第二の値に一致するかどうかを検出するマイクロチェッカーと；
第一のコアと第二のコアの間のロックステップ障害を検出するグローバルチェッカーと；
グローバルチェッカーがロックステップ障害を検出し、かつマイクロチェッカーが第一の値と第二の値の間の不一致を検出する場合には、第一のコアと第二のコアを再同期させるフォールト論理とを有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理の分野に、より詳細にはデータ処理装置におけるエラー緩和（error  mitigation）の分野に係る。
【背景技術】
【０００２】
集積回路製造技術の改善がマイクロプロセッサおよびその他のデータ処理装置における小型化およびより低い動作電圧を提供し続けるにつれ、そうしたデバイスのメーカーおよびユーザーはますますソフトエラーの現象を懸念するようになりつつある。ソフトエラーは、アルファ粒子や高エネルギー中性子が集積回路に当たって回路ノードに保存されている電荷を変えるときに発生する。電荷変化が十分大きければ、ノード上の電圧がある論理状態を表すレベルから異なる論理状態を表すレベルに変わってしまうことがありうる。その場合、そのノードに保存されていた情報は壊れてしまう。一般に、回路の大きさが小さくなるにつれてソフトエラー・レート（soft  error  rate）は上昇する。それは、回路密度が高まると入射粒子が電圧ノードに当たる可能性が大きくなるからである。同様に、動作電圧が下がるにつれて、異なる論理状態を表す電圧レベル間の差が小さくなるので、回路ノードの論理状態を変えるのに必要とされるエネルギーが小さくなり、より多くのソフトエラーが生じる。
【０００３】
ソフトエラーを引き起こす粒子を遮るのはきわめて難しく、データ処理装置はしばしばソフトエラーを検出し、時に訂正する技術を含む。そうしたエラー緩和技術としては、二重化モジュール冗長性（DMR:  dual-modular  redundancy）および三重化モジュール冗長性（TMR:  triple-modular  redundancy）が含まれる。DMRでは、二つの同一のプロセッサまたはプロセッサ・コアが同じプログラムをロックステップ（lockstep）で実行し、それらの結果が比較される。TMRでは三つの同一のプロセッサがロックステップで走らされる。
【０００４】
いかなる一つのプロセッサにおけるエラーもDMRまたはTMRを使って検出できる。それはエラーのために結果が異なってくるからである。TMRは、三つのプロセッサのうちの二つの一致した結果が正しい結果であると想定することによってエラーからの回復が達成されうるという利点を提供する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
DMRシステムにおける回復も可能である。それには、すべての結果を、レジスタに託されるか、他の仕方でシステムのアーキテクチャ状態（architectural  state）に影響することが許容される前にチェックすることによる。そうすれば、エラーが検出された場合に最後のチェックポイント以降のすべての命令を再実行することによって回復が達成されうる。しかしながら、この手法は、遅延やその他の設計上の制約のため実際的ではないかもしれない。もう一つの手法は、エラーが検出された場合に古いアーキテクチャ状態が回復されることを許すロールバック機構を加えることである。この手法も、設計の複雑さのため非実際的となるかもしれず、以前の状態からの再実行の結果が、非同期割り込みのような非決定論的なイベントの発生または等能（idempotent）でない出力動作の再実行のために、元の結果と異なるかもしれないという問題に悩まされることがある。
【０００６】
さらに、DMRおよびTMRは実際にはエラーレートを上げてしまうことがありうる。その実装がソフトエラーを受ける追加的な回路を必要とするため、そして普通なら検出されずにすまされるがシステム障害には至らなかったようなエラーをも検出しうるためである。たとえば、プログラムのどの分枝が投機的に実行されるべきかを予測するのに使われる構造にエラーがあると誤った予測になりうるが、プロセッサは分岐条件が最終的に評価されるときに自動的に回復するはずである。
【０００７】
本発明は、付属の図面において限定ではなく例として図解されている。
【発明を実施するための最良の形態】
【０００８】
以下では、ロックステップ式二重化モジュール冗長システム（lockstepped  dual-modular  redundancy  system）における訂正不能エラーレートを低減させる装置および方法の実施形態を記述する。以下の記述では、本発明のより包括的な理解を提供するために、要素およびシステム構成といった数多くの個別的詳細が述べられることがあるが、当業者は、そのような個別的な詳細なしでも本発明が実施しうることを認識するであろう。さらに、いくつかのよく知られた構造、回路、技術などは、本発明を無用にかすませることを避けるために述べていない。
【０００９】
DMRはエラーの検出および訂正を与えるために使用されうる。しかしながら、システム障害にはつながらないようなエラーを検出することによってエラーレートを上げてしまうこともある。本発明の諸実施形態は、マイクロチェッカーを使ってそのような「誤った」エラーを検出して、そのようなエラーが無視されうるようにすることによって、DMRシステムにおけるエラーレートの低減を提供しうる。他の諸実施形態は、キャッシュのようなある構造のためのマイクロチェッカーを使うことによってDMRシステムにおけるエラーレートの低減を提供しうる。該構造について値が再生成され、元の値と比較されて、二つのプロセッサのうちのどちらを相手プロセッサの状態に同期させるべきかが決定され、それにより完全なロールバック機構のコストが回避されるのである。本発明のそのような諸実施形態は、DMRの恩恵のいくつか（たとえば、エラー検出および訂正機能）を提供しつつ、欠点のいくつか（たとえば、誤ったエラー、完全な回復機能のコスト）を低減するために望ましいことがありうる。
【００１０】
さらに、本発明の諸実施形態は、パリティーまたは誤り訂正符号機構をもってある種の構造を保護することを回避するために望ましいことがありうる。そうした保護は、コストがかかりうるばかりでなく、アーキテクチャ状態を壊すことのできない構造にとっては不要でもありうる。本発明のある実施形態に基づいてこれらの構造をマイクロチェッカーに接続することは、二つのDMRコアのどちらでエラーが起こったかをパリティーを通じてまたはその他の仕方で決定する必要なく、エラーから回復する機能を提供しうる。
【００１１】
図１は、マルチコア・プロセッサ１００における本発明のある実施形態を示している。一般に、マルチコア・プロセッサは二つ以上の実行コアを含んでいる単一の集積回路である。実行コアは、命令を実行するための論理を含む。実行コアに加えて、マルチコア・プロセッサは、本発明の範囲内で、専用または共用資源のいかなる組み合わせを含んでいてもよい。専用資源は、専用のレベル1キャッシュなど単一のコア専用の資源であってもよいし、あるいは複数のコアの任意の部分集合に専用の資源であってもよい。共有資源は、共有されるレベル2キャッシュまたはマルチコア・プロセッサと別のコンポーネントとの間のインターフェースをサポートする共有外部バス・ユニットのようなすべてのコアによって共有される資源であってもよいし、あるいは複数のコアの任意の部分集合によって共有される資源であってもよい。本発明は、マルチコア・プロセッサ以外の装置において、たとえばそれぞれが少なくとも一つのコアをもつ少なくとも二つのプロセッサを有するマルチプロセッサ・システムにおいて具現されてもよい。
【００１２】
マルチコア・プロセッサ１００は、コア１１０およびコア１２０を含む。コア１１０および１２０は、ペンティアム（登録商標）プロセッサ・ファミリー、アイテニアム（登録商標）プロセッサ・ファミリーもしくはインテル・コーポレイションからの他のプロセッサ・ファミリーのプロセッサまたは他の会社からの他のプロセッサといった多様な異なる型のプロセッサのいずれの設計に基づいていてもよい。プロセッサ１００は、グローバルチェッカー１３０およびマイクロチェッカー１４０をも含む。
【００１３】
グローバルチェッカー１３０は、比較器回路を用いるなど、DMRシステムにおけるロックステップ・フォールト検出するための任意の既知の技法に基づいて、コア１１０からの出力をコア１２０からの出力と比較する。たとえば、コア１１０および１２０の出力は、コア１１０および１２０があるプログラムの同一のコピーを、同一の入力をもって、同期的に走らせているときに、比較されうる。
【００１４】
コア１１０は構造１１１を含む。構造１１１は、コア１１０および１２０がロックステップで動作しているとき、コア１２０に含まれる対応する構造１２１からの対応する値に一致すべき値を生成または保持するいかなる回路、論理、機能ブロック、モジュール、ユニットまたはその他の構造であってもよい。
【００１５】
ある実施形態では、構造１１１および１２１は、プロセッサ１００またはプロセッサ１００を含むシステムのアーキテクチャ状態を変更できない構造でありうる。たとえば、構造１１１および１２１は、条件分岐予測手段、ジャンプ予測手段、戻りアドレス予測手段またはメモリ依存性予測手段といった予測構造であってもよい。
【００１６】
もう一つの実施形態では、構造１１１および１２１は、プロセッサ１００を含むシステム中の他のどこかに内容が複製されているか、内容が再生成されうる構造でありうる。たとえば、構造１１１および１２１はキャッシュ構造であってもよい。修正されていない各キャッシュ・ラインまたはキャッシュ項目は、より高いレベルのキャッシュまたはシステム内の他のメモリからそのキャッシュ・ラインまたはキャッシュ項目をロードし直すことによって再生成されうる。
【００１７】
マイクロチェッカー１４０は、構造１１１からの値を構造１２１からの対応する値と比較する。種々の実施形態では、比較される値は、構造１１１および１２１の性質に依存して変わってよく、たとえば、条件分岐がされるべきかどうかもしくはジャンプが発生すべきかどうかを示す単一のビット、複数ビットの予測された戻りアドレスまたは複数ビットのキャッシュ・ラインまたはキャッシュ項目であってもよい。したがって、マイクロチェッカー１４０の性質は種々の実施形態において多様でありえ、比較は、排他的論理和ゲートまたは比較器回路など、いかなる既知の技法に基づいて実行されてもよい。
【００１８】
ある実施形態では、マイクロチェッカー１４０はその比較結果の保持を、少なくともロックステップされたプログラム実行が進んで、グローバルチェッカー１３０によって検出されたロックステップ・フォールトが、マイクロチェッカー１４０によって比較された値の間の不一致に帰着され得ない点に達するまで、続けるように構成される。マイクロチェッカー１４０のこの構成は、たとえばマイクロチェッカーが組み合わせ論理であり、比較された値が少なくとも各ロックステップ・フォールト検出点に達するまで静的なままである場合には、いかなる特別な記憶素子もなしに達成されうる。あるいはマイクロチェッカー１４０のこの構成は、マイクロチェッカー１４０の結果を記憶するためのレジスタまたはその他の記憶素子を用いて達成されてもよい。他の実施形態では、マイクロチェッカーは、その比較の結果を保持するよう構成される必要はない。
【００１９】
プロセッサ１００は、フォールト論理１５０をも含む。フォールト論理１５０はいかなるハードウェア、マイクロコード、プログラム可能論理、プロセッサ抽象化層（processor  abstraction  layer）、ファームウェア、ソフトウェアまたはグローバルチェッカー１３０によるロックステップ・フォールトの検出に対するプロセッサ１００の応答を支配するその他の論理であってもよい。グローバルチェッカー１３０によってロックステップ・フォールトが検出されたとき、マイクロチェッカー１４０が構造１１１からの値と構造１２１からの対応する値との間に不一致を検出していた場合には、フォールト論理１５０はコア１１０とコア１２０を、のちに述べるように再同期させる。しかしながら、マイクロチェッカー１４０が構造１１１からの値と構造１２１からの対応する値との間に不一致を検出していなかった場合には、フォールト論理１５０は、フォールト・コードを報告して動作を止めるなど、システム障害を示すための任意の既知の手法に従って訂正不能エラーの検出を示す。
【００２０】
図１はコア１１０内の構造１１１およびコア１２０内の構造１２１だけをマイクロチェッカー１４０に入力を与えるものとして示しているが、本発明の範囲内で、構造およびマイクロチェッカーはいくつ使用されてもよい。たとえば、図２は、コアごとに複数の構造、単一のマイクロチェッカーおよびコアをまたがる（cross-core）帯域幅を減らすためのフィンガープリント論理を使う、本発明の実施形態を示している。
【００２１】
図２では、プロセッサ２００は、コア２１０および２２０、グローバルチェッカー２３０、マイクロチェッカー２４０およびフォールト論理２５０を含む。コア２１０は構造２１１、２１３および２１５を含み、プロセッサ・コア２２０は構造２２１、２２３および２２５を含む。
【００２２】
構造２１１は、構造２１３および２１５からの値に基づくフィンガープリントを生成するためのフィンガープリント論理２１２を含んでいる。ここで、構造２１３および２１５は、図１の構造１１１に関して上記したいかなる構造であってもよい。同様に、構造２２１は、構造２２３および２２５からの値に基づくフィンガープリントを、フィンガープリント論理２１２によって使用されるのと同じ手法に従って生成するためのフィンガープリント論理２２２を含んでいる。
【００２３】
フィンガープリント論理２１２およびフィンガープリント論理２２２は、巡回冗長検査手段を使ったチェックサムの生成など、二つ以上の値を単一の値に組み合わせるいかなる既知の手法で実装されてもよい。フィンガープリント論理２１２およびフィンガープリント論理２２２は、構造２１３と２２３のために一つのマイクロチェッカー、構造２１５と２２５のために別のマイクロチェッカーを使う代わりに、マイクロチェッカー２４０が構造２１３と２２３の間および構造２１５と２２５の間の不一致を検出しうるよう、使用されうる。
【００２４】
フィンガープリント論理２１２およびフィンガープリント論理２２２はまた、コアをまたがる帯域幅を減らすためにも使用されうる。たとえば、フィンガープリント論理２１２は、構造２１３と２１５からの値を、フィンガープリント論理２１２の出力におけるビット数が二つの値のビット数の合計より小さくなるように組み合わせるために使用されうる。いくつかの実施形態では、フィンガープリント論理２１２が入力のあらゆる組み合わせについて一意的な値を出力することが望ましいことがありうるものの、他の実施形態では、マイクロチェッカー２４０の各入力に接続されるビット数の低減と引き換えに、マイクロチェッカー２４０からの精度が100%に満たなくても受け容れることが望ましいことがありうる。マイクロチェッカー２４０の100%に満たない精度を受け容れ可能なのは、マイクロチェッカー２４０が訂正可能なロックステップ障害を検出しそこなうことは、訂正不能なロックステップ障害と解釈されることになり、正しいロックステップ動作と解釈されるわけではないからである。正しいロックステップ動作と解釈されてしまうと、システムの腐敗につながりうる。
【００２５】
図３は、図１のプロセッサ１００を含むロックステップ式二重化モジュール冗長システムにおける訂正不能エラーレートを低減させるための方法３００における、本発明のある実施形態を示している。ここでは、構造１１１および１２１は、アーキテクチャ状態を変更できない構造、たとえば予測構造である。
【００２６】
ボックス３１０では、コア１１０および１２０はロックステップで動作している。ボックス３１１では、構造１１１が第一の値を生成し、構造１２１が第二の値を生成する。第一の値は第二の値に一致していても、一致していなくてもよい。ボックス３２０では、マイクロチェッカー１４０が構造１１１および１２１からの値を比較する。ボックス３３０では、ボックス３２０における比較の結果が保存される。
【００２７】
ボックス３３１では、コア１１０は、構造１１１によって生成された値に基づいて第一の命令を実行し、コア１２０は、構造１２１によって生成された値に基づいて第二の命令を実行する。第一および第二の命令は同じ命令であってもよいし、なくてもよい。第一および第二の値は、条件分岐予測、ジャンプ予測、戻りアドレス予測、メモリ依存性予測またはアーキテクチャ状態を変更できない他の任意の予測の結果を示すことによって、どの命令（単数または複数）が実行されるかを決定するための基礎となりうる。
【００２８】
ボックス３３１から、方法３００はボックス３４０に直接進むか、あるいはコア１１０および１２０が任意個の追加的な命令を実行したのちにボックス３４０に進む。
【００２９】
ボックス３４０では、グローバルチェッカー１３０がコア１１０および１２０からの出力を比較する。出力が一致すれば、コア１１０および１２０のロックステップ動作は、ボックス３３０で保存された結果に関わりなく、いかなるエラー訂正、回復または通知技法によっても影響されずに、ボックス３１０で続けられる。しかしながら、グローバルチェッカー１３０がボックス３４０でロックステップ・フォールトを検出する場合、方法３００はボックス３５０に続く。
【００３０】
ボックス３５０から、ボックス３３０で保存された結果が、構造１１１からの値が構造１２１からの値に一致することを示している場合には、方法３００はボックス３６０に進む。ボックス３６０では、フォールト論理１５０は、たとえばフォールト・コードを報告してシステムを停止させることによって、訂正不能エラーの検出を示す。
【００３１】
ボックス３５０から、ボックス３３０で保存された結果が、構造１１１および１２１からの値の間の不一致を示している場合には、方法３００はボックス３７０に進む。ボックス３７０では、フォールト論理１５０は、コア１１０および１２０の再同期を引き起こす。この再同期は、コア１１０のアーキテクチャ状態をコア１２０のアーキテクチャ状態に一致するよう変えるか、逆にコア１２０のアーキテクチャ状態をコア１１０のアーキテクチャ状態に一致するよう変えることによって達成されうる。
【００３２】
図４は、図１のプロセッサ１００を含むロックステップ式二重化モジュール冗長システムにおける訂正不能エラーレートを低減させるための方法４００における、本発明のある実施形態を示している。ここでは、構造１１１および１２１は、内容がシステム内の他のどこかに複製されている、あるいは内容が再生成されうる、キャッシュなどの構造である。
【００３３】
ボックス４１０では、コア１１０および１２０はロックステップで動作している。ボックス４１１では、構造１１１内の修正されていないキャッシュ・ラインへのロードを引き起こす命令がコア１１０によって実行され、構造１２１内の修正されていないキャッシュ・ラインへは第二の値を生成する。ボックス４１１から、方法４００はボックス４２０に直接進むか、あるいはコア１１０および１２０が任意個の追加的な命令を実行したのちにボックス４２０に進む。
【００３４】
ボックス４２０では、マイクロチェッカー１４０が構造１１１からの値、たとえばボックス４１１でロードされたキャッシュ・ラインを、構造１２１からの値、たとえばボックス４１１でロードされたキャッシュ・ラインと比較する。ボックス４３０では、ボックス４２０における比較結果が保存される。
【００３５】
ボックス４３０から、方法４００はボックス４４０に直接進むか、あるいはコア１１０および１２０が任意個の追加的な命令を実行したのちにボックス４４０に進む。
【００３６】
ボックス４４０では、グローバルチェッカー１３０がコア１１０および１２０からの出力を比較する。出力が一致すれば、コア１１０および１２０のロックステップ動作は、ボックス４３０で保存された結果に関わりなく、いかなるエラー訂正、回復または通知技法によっても影響されずに、ボックス４１０で続けられる。しかしながら、グローバルチェッカー１３０がボックス４４０でロックステップ・フォールトを検出する場合、方法４００はボックス４５０に続く。
【００３７】
ボックス４５０から、ボックス４３０で保存された結果が、構造１１１からの値が構造１２１からの値に一致することを示している場合には、方法４００はボックス４６０に進む。ボックス４６０では、フォールト論理１５０は、たとえばフォールト・コードを報告してシステムを停止させることによって、訂正不能エラーの検出を示す。
【００３８】
ボックス４５０から、ボックス４３０で保存された結果が、構造１１１および１２１からの値の間の不一致を示している場合には、方法４００はボックス４７０に進む。ボックス４７０では、フォールト論理１５０は、コア１１０および１２０の再同期を引き起こす。
【００３９】
ボックス４７０では、構造１１１および１２１からの値がシステム中の他のどこかでみつけられ、あるいは他の仕方で、たとえばボックス４１１でロードされたキャッシュ・ラインを再ロードすることによって再生成される。再生成された単数の値（たとえば、その値の単一のコピーがシステム内で複製されている場所から得られる場合）または複数の値（たとえば、構造ごとにその値の一つのコピーが、システム内で複製されて得られる場合）は、単数または複数のレジスタに、あるいは単数または複数の他の位置にロードされうる。そうした場所は、構造１１１および１２１からの値との比較のために設けられる。あるいはまた、構造１１１および１２１からの値が、たとえばボックス４１１で実行された命令を再実行することによって得られることがありうる再生成された単数または複数の値との比較のために設けられたレジスタまたはその他の位置に移されてもよい。
【００４０】
ボックス４７１では、再生成された単数または複数の値が、構造１１１および１２１からの値と比較される。再生成された値が構造１１１からの値に一致すれば、ボックス４７２で、コア１２０がコア１１０に同期させられる。それはたとえば、コア１２０のアーキテクチャ状態をコア１１０のアーキテクチャ状態に一致するように変えることによってできる。再生成された値が構造１２１からの値に一致すれば、ボックス４７３で、コア１１０がコア１２０に同期させられる。それはたとえば、コア１１０のアーキテクチャ状態をコア１２０のアーキテクチャ状態に一致するように変えることによってできる。ボックス４７２およびボックス４７３から、方法４００はボックス４１０に戻る。
【００４１】
図５は、図２のプロセッサ２００を含むロックステップ式二重化モジュール冗長システムにおける訂正不能エラーレートを低減させるための方法５００における、本発明のある実施形態を示している。
【００４２】
ボックス５１０では、コア２１０および２２０はロックステップで動作している。ボックス５１１では、構造２１３がある値を生成し、構造２２３がある値を生成する。構造２１３からの値は構造２２３からの値に一致していても、一致していなくてもよい。ボックス５１２では、構造２１５がある値を生成し、構造２２５がある値を生成する。構造２１５からの値は構造２２５からの値に一致していても、一致していなくてもよい。
【００４３】
ボックス５１３では、構造２１１は、構造２１３および２１５からの値に基づいてフィンガープリント値を生成し、構造２２１は、構造２２３および２２５からの値に基づいてフィンガープリント値を生成する。フィンガープリント値は、巡回冗長検査手段を使ったチェックサムの生成など、値を組み合わせるいかなる既知の技法に従って生成されてもよい。
【００４４】
ボックス５２０では、マイクロチェッカー２４０は構造２１１および２２１からのフィンガープリント値を比較する。ボックス５３０では、ボックス５２０での比較結果が保存される。
【００４５】
ボックス５４０では、グローバルチェッカー２３０はコア２１０および２２０からの出力を比較する。出力が一致すれば、コア２１０および２２０のロックステップ動作は、ボックス５３０で保存された結果に関わりなく、いかなるエラー訂正、回復または通知技法によっても影響されずに、ボックス５１０で続けられる。しかしながら、グローバルチェッカー２３０がボックス５４０でロックステップ・フォールトを検出する場合、方法５００はボックス５５０に続く。
【００４６】
ボックス５５０から、ボックス５３０で保存された結果が、構造２１１からのフィンガープリント値が構造２２１からのフィンガープリント値に一致することを示している場合には、方法５００はボックス５６０に進む。ボックス５６０では、フォールト論理２５０は、たとえばフォールト・コードを報告してシステムを停止させることによって、訂正不能エラーの検出を示す。
【００４７】
ボックス５５０から、ボックス５３０で保存された結果が、構造２１１および２２１からの値の間の不一致を示している場合には、方法５００はボックス５７０に進む。ボックス５７０では、フォールト論理２５０は、コア２１０および２２０の再同期を引き起こす。この再同期は、コア２１０のアーキテクチャ状態をコア２２０のアーキテクチャ状態に一致するよう変えるか、逆にコア２２０のアーキテクチャ状態をコア２１０のアーキテクチャ状態に一致するよう変えることによって達成されうる。
【００４８】
本発明の範囲内で、図３、図４および図５に示された方法は、異なる順序で実行されたり、図示されたステップが省略されて実行されたり、追加ステップが加えられて実行されたり、あるいは並べ替え、組み合わせ、省略もしくは追加ステップの組み合わせを使って実行されたりしてもよい。たとえば、ボックス３３０、４３０または５３０（マイクロチェッカーの比較の結果を保存）は、それぞれボックス３５０、４５０または５５０（マイクロチェッカーの比較の結果を調べる）が実行されるまでマイクロチェッカーの出力が静的のままであるなら省略されてもよい。
【００４９】
ボックス３３０（マイクロチェッカーの比較の結果を保存）を省略してもよい方法の他の例は、マイクロチェッカーの出力が保持される必要のない本発明の実施形態である。一つのそのような実施形態では、方法は、ボックス３２０のマクロチェッカー比較から、マイクロチェッカー比較に基づくボックス３５０の判断へ進みうる（あるいは、ボックス３２０と３５０を合体させてもよい）。この実施形態では、マイクロチェッカーが（３２０か３５０で）不一致を検出する場合、プロセッサの既存の分岐誤予測回復機構が使われ、投機的な状態を捨て（flush）、よってボックス３７０でコアを非投機的な状態に同期させる。マイクロチェッカーが不一致を検出しない場合、この実施形態の方法は、予測に基づいて命令を実行するためにボックス３３１に進み、次いでグローバルチェッカーがロックステップ・フォールトがあるかどうかチェックするためにボックス３４０に進み、次いでロックステップ・フォールトが検出された場合、回復不能エラーを示すためにボックス３６０に進みうる。
【００５０】
図６は、ロックステップ式二重化モジュール冗長システム６００における本発明の実施形態を示している。システム６００は、マルチコア・プロセッサ６１０およびシステム・メモリ６２０を含んでいる。プロセッサ６１０は図１および図２について前記したようないかなるプロセッサであってもよい。システム・メモリ６２０は、半導体ベースのスタティックもしくはダイナミック・ランダム・アクセス・メモリ、半導体ベースのフラッシュメモリもしくは読み出し専用メモリまたは磁気もしくは光ディスク・メモリといったいかなる型のメモリであってもよい。プロセッサ６１０とシステム・メモリ６２０は、いかなる配置で、いかなる組み合わせのバスまたは直接もしくはポイントツーポイント接続を用いて、他のいかなるコンポーネントを通じて互いに結合されていてもよい。システム６００はまた、周辺バス（peripheral  bus）のようないかなるバスを含んでいてもよく、入出力デバイスのような図６に示されないコンポーネントを含んでいてもよい。
【００５１】
システム６００では、システム・メモリ６２０は、上記のように、構造１１１、１２１、２１３、２１５、２２３および２２５といった構造にロードされうる値を保存するために使用されうる。したがって、システム・メモリ６２０は、たとえば図４のボックス４７０に示されるような本発明の方法実施形態に基づく複製または再生成された値のソースであってもよい。
【００５２】
プロセッサ１００、プロセッサ２００または本発明のある実施形態にしたがって設計された他の任意のコンポーネントもしくはコンポーネントの一部は、創造からシミュレーション、そして製造へとさまざまな段階で設計〔デザイン〕されうる。設計を表すデータは設計をいくつかの仕方で表現しうる。第一に、シミュレーションで有用であるように、ハードウェア記述言語または別の機能記述言語を使ってハードウェアを表現してもよい。追加的または代替的に、論理および／またはトランジスタ・ゲートをもつ回路レベル・モデルが設計プロセスの何らかの段階で生成されてもよい。さらに、たいていの設計は、何らかの段階で、さまざまなデバイスの物理的な配置を表すデータを用いてモデル化されうるレベルに達する。通常の半導体製造技法が使われる場合は、デバイス配置モデルを表現するデータは、集積回路を生産するために使用されるマスクのための種々のマスク層上のさまざまな特徴の存在または不在を指定するデータでありうる。
【００５３】
設計のいかなる表現でも、データはいかなる形の機械可読媒体に記憶されてもよい。そのような情報を伝送するために変調されるかその他の仕方で生成されるかした光波または電気的な波、メモリまたはディスクのような磁気もしくは光記憶媒体が前記機械可読媒体でありうる。これらの媒体のいずれも、前記設計を、あるいは本発明の実施形態で使用される、誤り回復ルーチン内の命令といった他の情報を、「担持」または「指示」しうる。情報を指示または担持する電気的搬送波が伝送されるとき、該電気信号のコピー、バッファリングまたは再送信が実行される限りにおいて、新たなコピーが作られる。こうして、通信プロバイダーまたはネットワーク・プロバイダーの動作は、本発明の諸技法を具現する物品、たとえば搬送波のコピーを作成する動作でありうる。
【００５４】
こうして、ロックステップ式二重化モジュール冗長システムにおける訂正不能エラーレートを低減させる装置および方法が開示された。ある種の実施形態を記述し、付属の図面に示してきたが、そのような実施形態が広い本発明を単に解説するものであって制限するものでないこと、そして本発明が図示され記述された個別的な構築および構成に限定されないことは理解しておくべきである。というのも、本開示を研究すれば当業者にはさまざまなその他の修正が思いつくことがありうるからである。成長が速く、さらなる進歩が簡単には予見できないこのような技術の分野では、開示された実施形態は、本開示の原則や付属の特許請求の範囲から外れることなく、実施を可能にする技術的進歩によって容易にされるように、構成および詳細においてすぐ修正可能でありうる。
【図面の簡単な説明】
【００５５】
【図１】マルチコア・プロセッサにおける本発明のある実施形態を示す図である。
【図２】コアをまたがる帯域幅を減らすためにマイクロチェック・フィンガープリント論理を使う、本発明のある実施形態を示す図である。
【図３】ロックステップ式二重化モジュール冗長システムにおける訂正不能エラーレートを低減させるための方法における、本発明のある実施形態を示す図である。
【図４】ロックステップ式二重化モジュール冗長システムにおける訂正不能エラーレートを低減させるための方法における、本発明のもう一つの実施形態を示す図である。
【図５】ロックステップ式二重化モジュール冗長システムにおける訂正不能エラーレートを低減させるための方法における、本発明のもう一つの実施形態を示す図である。
【図６】ロックステップ式二重化モジュール冗長システムにおける本発明のある実施形態を示す図である。
【図１】
2009501367.tif 000003
【図２】
2009501367.tif 000004
【図３】
2009501367.tif 000005
【図４】
2009501367.tif 000006
【図５】
2009501367.tif 000007
【図６】
2009501367.tif 000008
【国際調査報告】
2009501367.tif 000009
2009501367.tif 000010