(57)【要約】プロセッサは、冗長的な（ＦＲＣ）モードにおいて動作する第一及び第二の実行コアと、該第一及び第二の実行コアからの結果を比較するためのＦＲＣチェック装置と、該第一及び第二コアにおける修復可能なエラーを検出するためのエラーチェック装置とを有する。エラー検出器は、修復可能なエラーの検出に応じて、ＦＲＣチェッカーを利用可能とする。プロセッサのマルチモード実施例が、ＦＲＣモードに加えてマルチコアモードを実行する。仲裁装置は、マルチコアモードにおいて第一及び第二の実行コアによって共有される資源へのアクセスを規制する。ＦＲＣチェッカーは、マルチモード実施例において仲裁装置に近傍に位置づけられる。
2006510117.tif 000002
【特許請求の範囲】
【請求項１】
ＦＲＣモードにて動作するための第一及び第二の実行コアと、
前記第一及び第二の実行コアの少なくとも１つからトランザクションを処理するための資源と、
前記第一及び第二の実行コアによって前記資源へのアクセスを規制するための装置であって、前記第一及び第二の実行コアからのトランザクション信号を比較し、比較が不一致を示すならばエラーを信号送出するためのＦＲＣチェック装置を有するインターフェース制御装置とを有するプロセッサ。
【請求項２】
前記第一及び第二の実行コアにおいてエラーを検出し、エラーの検出に対応する前記ＦＲＣチェッカーを利用不可とするためのエラー検出器を更に有する請求項１記載のプロセッサ。
【請求項３】
エラー検出器は、前記第一及び第二の実行コア夫々においてエラーを検出するための第一及び第二エラー検出器を有する請求項２記載のプロセッサ。
【請求項４】
前記第一のエラー検出器は、前記ＦＲＣチェック装置を利用可能とし、前記第二の実行コアを用いて修復処理手順を開始するための、前記第一の実行コアにおけるエラーに対応して、エラー信号を引き起こす請求項３記載のプロセッサ。
【請求項５】
前記第二の実行コアはＦＲＣスレーブとして指定され、前記エラー信号に対応して、ＦＲＣマスターとして再指定される請求項４記載のプロセッサ。
【請求項６】
前記第二の実行コアは、メモリ位置にマシン状態データを保存して、リセットシーケンスを実行する請求項５記載のプロセッサ。
【請求項７】
前記第一及び第二の実行コアは、また、マルチコアモードにて動作してもよいし、前記インターフェース制御装置は、マルチコアモードにて動作していれば、前記実行コアによって前記共有資源へのアクセスを規制するための仲裁装置を更に有する請求項２記載のプロセッサ。
【請求項８】
前記共有資源は、マルチコアモードにて前記第一及び第二のコアの両方からのトランザクションを処理してもよく、また、ＦＲＣモードにて前記第一及び第二のコアの一つのみからのトランザクションを処理してもよいキャッシュを有する請求項７記載のプロセッサ。
【請求項９】
エラーを検出することに対応して、エラー検出器は、前記プロセッサがマルチコアモードであれば割込みを引き起こし、前記プロセッサがＦＲＣモードであれば加速された割込みを引き起こす請求項７記載のプロセッサ。
【請求項１０】
前記加速された割込みは、マルチコアモードにおける前記割込みが通過した実行コアの部分を回避する請求項９記載のプロセッサ。
【請求項１１】
修復ルーチンを格納するための第一のメモリ位置と、
リセットルーチンを格納するための第二のメモリ位置と、
ＦＲＣモードにおいて動作可能な第一及び第二の実行コアと、
前記第一及び第二の実行コアの一つにおけるエラーの検出に応じて、前記修復ルーチンを開始するためのエラー装置と、
前記第一及び第二の実行コアからの信号間の一致の検出に応じて前記リセットルーチンを開始するためのＦＲＣチェッカーとを有するシステム。
【請求項１２】
前記エラー装置が、前記第一及び第二の実行コアの一つにおけるエラーの検出に応じて、前記ＦＲＣチェッカーを利用不可とする請求項１１記載のシステム。
【請求項１３】
マルチコアモード又は前記ＦＲＣモードのいずれかにおいて前記第一及び第二の実行コアを開始するための前記第一及び第二の実行コアによって実行可能な指示を有する請求項１２記載のシステム。
【請求項１４】
前記第一及び第二の実行コアがマルチコアモードにて開始されているならば、前記第一及び第二の実行コアによって共有されるためのキャッシュを更に有する請求項１３記載のシステム。
【請求項１５】
マルチコアモードにおいて前記第一及び第二の実行コアによる前記キャッシュへのアクセスを管理するための仲裁装置を有する請求項１４記載のシステム。
【請求項１６】
前記ＦＲＣチェッカーは、ＦＲＣモードにおいて前記第一及び第二の実行コアから仲裁装置へのトランザクション信号を監視し、該トランザクション信号における不一致に応じて、前記リセットルーチンを開始する請求項１５記載のシステム。
【請求項１７】
前記第一及び第二の実行コアは、ＦＲＣモードにてマスター及びスレーブ夫々として動作する請求項１１記載のシステム。
【請求項１８】
前記第一の実行コアにおけるエラーに応じて、前記第一の実行コアは利用不可となり、前記第二の実行コアは前記マスターとして動作する請求項１７記載のシステム。
【請求項１９】
前記第一及び第二の実行コアは、マルチコアモード又はＦＲＣモードにおいて初期化されてもよい請求項１１記載のシステム。
【請求項２０】
前記エラー装置は、前記実行コアの一つにおけるエラーに応じて、前記第一及び第二の実行コアへの割込みを引き起こす請求項１９記載のシステム。
【請求項２１】
前記実行コアがＦＲＣモードであれば、前記割込みは加速された割込みである請求項２０記載のシステム。
【請求項２２】
前記加速された割込みは、前記実行コアの部分を回避する請求項２１記載のシステム。
【請求項２３】
ＦＲＣモードにおいて第一及び第二の実行コアを動作すること、
エラーに対して前記第一及び第二の実行コアのデータを監視すること、
前記第一及び第二の実行コアによって生成される信号を比較すること、
前記第一又は第二の実行コアにおけるエラーに応じて、修復ルーチンを実行すること、
前記第一及び第二の実行コアによって生成される信号間の不一致に応じて、リセットルーチンを実行することを有する方法。
【請求項２４】
前記第一又は第二の実行コアにおけるエラーに応じて信号比較を一時停止する請求項２３記載の方法。
【請求項２５】
前記不一致に応じてリセットルーチンを実行することは、
前記不一致に応じて遅延間隔を引き起こすこと、
前記遅延間隔が終了する前に前記実行コアにおいてエラーの無いことが監視されたならば、前記リセットルーチンを実行することを更に有する請求項２４記載の方法。
【請求項２６】
前記遅延間隔が終了する前にエラーが前記実行コアの１つにおいて検出されたならば、前記修復ルーチンを実行することを更に有する請求項２５記載の方法。
【請求項２７】
ＦＲＣモードにおいて前記第一及び第二の実行コアを動作することは、リセット信号に応じて、前記ＦＲＣモード又はマルチコアモードにおいて前記第一及び第二のコアを動作することを有する請求項２３記載の方法。
【請求項２８】
前記修復ルーチンを実行することは、
前記コアがマルチコアモードにおいて動作しているならば、割込みによって信号送出されたエラーに応じて前記修復ルーチンを実行すること、
前記コアがＦＲＣモードにおいて動作しているならば、加速された割込みによって信号送出されたエラーに応じて、前記修復ルーチンを実行することを有する請求項２７記載の方法。
【請求項２９】
ＦＲＣモードにおける前記第一及び第二の実行コアを動作することは、マスター及びスレーブ実行コアとして前記第一及び第二の実行コアを夫々指定することを更に有する請求項２３記載の方法。
【請求項３０】
前記修復ルーチンを実行することは、前記第一の実行コアにおけるエラーに応じて、前記第一の実行コアを指定して、マスターとして前記第二の実行コアを指定することを更に有する請求項２３記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関係し、特に、ＦＲＣ有効プロセッサにおいてエラーを扱う機構に関する。
【背景技術】
【０００２】
サーバ、及び、他ハイエンドコンピューティング及び通信システムは、高レベルの信頼性と有効性を提供するために設計されている。ソフトエラーは、これら特性の両方に大きな挑戦をもたらしている。ソフトエラーは、高エネルギー粒子間、例えば、アルファ粒子間、そして電荷蓄積ノード間の衝突から生じる。それらは、大量の電荷蓄積ノードを含むキャッシュ、ＴＬＢなどのストレージアレイに普及している。それらは、また、ランダム状態要素及びロジック内に発生する。ソフトエラーの発生率は、デバイスデザインの減少及びデバイス密度の増加として増加しそうである。
【０００３】
例えば、検出されない、データの汚染（ＳＤＣ）のように無言となる以前に、高信頼システムはソフトエラーを検出し、管理するために保護物を含んでいる。しかしながら、正常な動作からシステムを遠ざける高信頼性動作をサポートする広範囲のエラー検出／対処機構のために、システムの有効性が低減している。例えば、１つのそのような機構は、エラーが検出されると、最後に知られている有効な状態にシステムをリセットする。システムは、リセット動作に拘束されている間は、割り当てられたタスクを実行することができなくなる。
【０００４】
ソフトエラーを検出する１つの既知の機構は、ファンクショナル・リダンダンシ・チェック（ＦＲＣ）である。ＦＲＣ用に有効とされる１つのプロセッサは、同一の指示コードが実行される反復した指示実行コアを有してもよい。特定の実施例によって、各反復した実行コアは、基本的な（整数実行単位（整数値、浮動小数点、ロード／ストア等）に加えて、１つ以上のキャッシュと、レジスターファイルと、支援資源とを含んでいるかもしれない。ＦＲＣハードウェアは、各コアによって生成される結果を比較し、矛盾が検出されると、ＦＲＣシステムは制御をエラーハンドリングルーチンへ渡す。異なる実行コアからの結果が比較される点がシステムのためのＦＲＣ境界を示す。エラーは、ＦＲＣ境界にて検出されなかったエラーは、ＳＤＣを引き起こす。
【０００５】
ＦＲＣエラーが実行コアが結果に同意しないことのみを示すため、ＦＲＣエラーは伝出可能であるが修復可能ではない。上記したように、ＦＲＣエラーハンドリングルーチンは、一般的に、信頼できるデータの最後の既知のポイントへシステムをリセットする。このリセット機構は、比較的時間がかかる。そのことがシステムを通常な動作から遠ざけ、システムの有効性を減じることとなる。
【０００６】
ＦＲＣは、ソフトエラーを対処する唯一の機構であり、ランダムロジック及びランダム状態要素に対して、主要な機構である。アレイ構造は異なる状況を提示する。アレイ構造は、一般的に、データの特性を試験することによってソフトエラーを検出するパリティ及び／又はＥＣＣハードウェアを有している。多くの場合、システムは、比較的高速なハードウェア又はソフトウェア機構を用いてデータの汚染によって作成さ多エラーを訂正することができる。しかしながら、ＦＲＣ有効なプロセッサのために、ロック工程から実行コアを外すため、そのようなエラーがＦＲＣエラーとして明らかにされやすい。そうでなければ、リセット機構を介してこれらに対処する修正可能なエラーはシステムの有効性を低減する。
【０００７】
本発明は、ＦＲＣ有効なプロセッサにおいて、修復可能及び修復不可能なエラーハンドリング機構を効果的に組み合わせる機構を扱う。
【０００８】
本発明は、同胞の要素は同様の符号によって示される以下の図面を参照して理解されるであろう。これら図面は、本発明の選択された実施例を例示するために提供され、本発明の範囲を制限することを意図するものではない。
［詳細な説明］
以下議論が本発明の理解を通して多数の特定の詳細に示される。しかしながら、この開示の恩恵を持つ当業者らがこれら特定の詳細無しに実施するかもしれない。加えて、種々の既知の方法、手順、構成部品、そして回路は、本発明の特長に着目するために、詳細には記述されていない。例えば、本発明の形態は、二重コア処理を用いて例示されるが、当業者らは２つ以上のコアがリセット及び修復機構の適切な変更をもって使用されることを認識するであろう。
【０００９】
図１は、本発明に係るＦＲＣ有効なプロセッサ１１０の一実施例を示すブロック図である。プロセッサ１１０は、第一及び第二実行コア１２０（ａ）、１２０（ｂ）（総称して、実行コア１２０）と、ＦＲＣチェッカー１３０と、エラー検出器１４０と、修復モジュール１５０と、リセットモジュール１６０と、共有資源１７０とを含む。説明のために、修復モジュール１５０とリセットモジュール１６０とは、プロセッサ１１０の部分として示される。これらモジュールは、ハードウェア、ファームウェア、或いはソフトウェアとして全体又は一部に実装され、また、プロセッサ金型上又は外に位置づけられてもよい。同様に、共有資源１７０は、１つ以上の異なる金型上にある構成部品に加えてプロセッサ金型上にある構成部品を含んでもよい。
【００１０】
各実行コア１２０は、ＦＲＣチェッカー１３０とエラー検出器１４０と夫々に送り込むデータパイプライン１２４とエラーパイプライン１２８とを含む。データパイプライン１２４は、プロセッサ１１０を介してＦＲＣチェッカー１３０へと移動する際に、種々のデータタイプ上で動作するロジックを示している。データパイプライン１２４によって処理されるデータは、コード実行中にプロセッサ１１０を介して生成される及び行われる結果オペランド、状態フラグ、アドレス、インストラクション等を含んでもよい。エラーパイプライン１２８は、データ内のエラーを検出するため、また、適切な信号をエラー検出器１４０に提供するために種々のタイプのデータ上で動作するロジックを示す。例えば、信号は、プロセッサ１１０の種々のストレージアレイ（図示せず）から取り出されたデータのパリティ又はＥＣＣを示す１つ以上のビット（フラグ）であってもよい。これらアレイ内のソフトエラーは、不正なデータがアクセスされた時にパリティ又はＥＣＣエラーフラグとして出現するかもしれない。
【００１１】
エラーがいずれかのコア１２０からエラー検出器１４０に到達すると、修復モード１５０は、修復ルーチンを実行するために起動される。修復は、ハードウェア、ソフトウェア、ファームウェア、或いはこれらの組み合わせによって比較的に低い遅延で実行される。例えば、同時（又は略同時）に両方の実行コア１２０内でデータが壊れている可能性が非常に小さい場合がある。この場合は、プロセッサ１１０にデータを完全な状態で修復することが可能なデータの壊れていないコピーのままとする。しかしながら、修復モジュール１５０が起動される前に、一つの実行コアからのその不正なデータと、他実行からのデータの不正なバージョンがＦＲＣチェッカー１３０に到達することを許された場合、ＦＲＣエラーが誘発されるであろう。ＦＲＣエラーは修復可能でないため、潜在的なパリティ／ＥＣＣエラーが検出される以前にＦＲＣチェッカー１３０がＦＲＣエラーに信号送信すると、リセットモジュール１６０はシステムをリセットする。
【００１２】
ＦＲＣエラーの全てが潜在的なパリティ／ＥＣＣ又は他訂正可能なソフトエラーに起因しているわけではない。ＦＲＣチェッカーが不正データがＦＲＣ境界１０４に到達したときに生じるＦＲＣエラーを示す場合より、エラー検出器１４０が潜在的なソフトエラーを示す方が速いからである。上述したように、リセット処理は修復処理より著しく長い遅延となり、エラーが修復モジュール１５０によって訂正されれば避けられることである。加えて、修復が一時的な性能損失を招くのみであるのに対して、リセットは通常全システムをダウンさせる。この理由によって、実行コア１２０はもはやロック工程ではないため、エラー検出器１４０がいずれかのエラーパイプライン１２８内にエラーを検出すると、ＦＲＣチェッカー１３０は一時的に利用不可能となる。
【００１３】
実行コア１２０は、通常のＦＲＣモード中にロック工程で動作するが、データパイプライン１２４及びエラーパイプライン１２８は、比較的独立して動作してもよい。例えば、ＥＣＣハードウェアは比較的複雑であり、よって、特に２ビットエラーに対して比較的遅い。エラーのような信号送信するフラグは、関連付けられているデータがＦＲＣチェッカー１３０に到達する前、後、或いは同時に、エラー検出器１４０へ到達するかもしれない。この柔軟性が一般的に有益である。例えば、そのエラー状態が決定される前に、投機的にデータが使用されることを許す。ソフトエラーが比較的まれであり、エラーパイプライン１２８が一般的にデータパイプライン１２４と同じ速さであるため、この柔軟性が純肯定的である。エラーフラグが、不正データに起因する不一致上で動作する前に、ＦＲＣチェッカー１３０を使用不可とするために間に合わせてエラー検出器１４０に到着する限りにおいて、比較的低い遅延修復ルーチンが保障される。
【００１４】
上述したように、プロセッサ１１０は修復可能及び修復不可能なエラー機構との間の競争を緩和するために方策を実行してもよい。例えば、簡素化された信号送出機構は、非ＦＲＣエラーの事象において、ＦＲＣチェッカー１３０の利用不可とすることを急がせるために、ＦＲＣモードにおいて使用されてもよい。加えて、遅れて到着する修復可能なエラー信号がリセット要求を未然に防ぐ場合に、ＦＲＣエラーはリセット前の間隔分遅延されてもよい。
【００１５】
本発明の一実施例について、プロセッサ１１０は、高信頼性（例えば、ＦＲＣ）又は高性能（例えば、マルチコア）モードにて動作可能である。動作モードは、例えば、プロセッサ１１０を含むコンピューティングシステムがブート又はリセットされたときに、選択されてもよい。ＦＲＣモードにおいて、実行コア１２０（ａ）及び１２０（ｂ）は一つの論理プロセッサとしてオペレーティングシステムに出現してもよい。実行コア１２０（ａ）及び（ｂ）は同じコードシーケンスを処理し、生成された結果はＦＲＣチェッカー１３０によって比較される。結果が一致すれば、そのコードシーケンスに対応するマシン状態が更新される。
【００１６】
ＦＲＣモードにおいて、実行コア１２０の一つがマスターとして指定されてもよい。マスターは、実行コア１２０によって共有される資源の更新を担う実行コアを参照する。他実行コア１２０は、スレーブとして指定されていてもよい。スレーブは、マスターのそれらに対してチェックされるべき同じコードシーケンスから結果を生成することを担う。エラーがマスター又はスレーブのいずれかで発生するかもしれないため、本発明の実施例では、マスター／スレーブ指定を動的に変更可能とする。上述したように、これは、修復可能なエラーがマスターとして現在指定されている実行コアにおいて検出されると、修復を実行するためにマスター指定をスレーブに引き継がせることを許している。
【００１７】
マルチコードモードにおいて、実行コア１２０（ａ）及び１２０（ｂ）は、一つのプロセッサ金型上に２つの異なる論理プロセッサとしてオペレーティングシステムに出現してもよい。このモードにおいて、実行コア１２０（ａ）及び１２０（ｂ）は、異なるコードシーケンスを処理し、夫々は処理しているコードシーケンスに関連付けられるマシン状態を更新する。論理プロセッサのマシン状態の部分は、対応する実行コアに関連付けられるキャッシュ及び／又はレジスタに格納されてもよい。プロセッサ金型上のいくつかのポイントにて、実行コア１２０（ａ）及び１２０（ｂ）からの結果は、例えば、ストレージ（キャッシュ）又はプロセッサ金型（バス）の伝送オフに対して共有資源への経路が決定される。この実施例のために、追加のロジックが実行コア１２０（ａ）及び１２０（ｂ）によって共有資源１７０へのアクセスを仲介するために提供される。一般に、マルチコアモードは、プロセッサの実行コアが別に制御されることを許す。
【００１８】
図２は、複数モード、例えば、ＦＲＣモード及びマルチコアモードにて動作可能なプロセッサ１１０の一実施例を示すブロック図である。上述した実施例に対して、プロセッサ１１０がマルチコアモードにて動作するとき、仲裁装置１８０が、実行コア１２０（ａ）及び１２０（ｂ）によって共有資源１７０へのトランザクションを管理するために提供される。仲裁装置１８０は、ＦＲＣモード動作のためのＦＲＣ境界に接近しているマルチコアモード動作のための仲裁を行うＦＲＣ装置１３０と関連付けられる。マルチコアモードにおいて、実行コア１２０、例えば、トランザクション要求信号からの信号は、共有資源１７０にアクセスを管理する仲裁装置１８０によって処理されてもよい。ＦＲＣモードにおいて、実行コア１２０からの信号は、いずれかの実行コアにおいてソフトエラーを検出するためにそれらを比較するＦＲＣチェッカー１３０によって処理されてもよい。ＦＲＣチェッカー１３０及び仲裁装置１８０を近接して設置することは、２つの実行コアからの信号が区別可能のままであるロジックの、全てでなければ、大部分を包含するためにＦＲＣ境界を延長する。また、それは、ＦＲＣ及びマルチコアモードにてプロセッサ１１０を支持するために必要な配線を少なくする。
【００１９】
この方法においてＦＲＣ境界の延長は、ＦＲＣチェッカー１３０への信号を伝播するために必要な時間を増大する。この増大した「飛行所要時間」は、エラー修復のための機会を増幅している、パリティ又はＥＣＣエラーが検出器１４０へ到達するための時間をより長く提供する。上述したように、エラー検出器１４０によって引き起こされた修復ルーチンは、ＦＲＣチェッカー１３０によって引き起こされたリセットルーチンより大きな利用可能なシステムを提供する。よって、検出可能なエラーが識別されるであろう間に、ＦＲＣ境界を延長することは、実行コア１２０に対して重複されるロジックの量と飛行所要時間の両方を増大する。前者は、リセットマシンを介しているにおも係わらず、ＦＲＣ保護を増大する。後者は、パリティ、ＥＣＣ、或いはコア特有の保護を介して識別可能なエラーがリセットよりむしろ修復を介して扱われる確からしさを増大する。
【００２０】
図３Ａは、本発明に係るコンピューティングシステム３００の一実施例を示すブロック図である。システム３００の開示された実施例は、プロセッサ３１０と、チップセット３７０と、主メモリ３８０と、不揮発性メモリ３９０と、周辺装置３９８ｓとを含む。システム３００の開示された実施例に対して、プロセッサ３１０は、ＦＲＣモード内又はマルチコアモード内にて動作されるようにしてもよい。モードは、例えば、コンピューティングシステム３００がブート又はリセットしたときに選択されてもよい。チップセット３７０は、プロセッサ３１０と、主メモリ３８０と、不揮発性メモリ３９０と、周辺装置３９８との間の通信を管理する。
【００２１】
プロセッサ３１０は第一及び第二の実行コア３２０（ａ）及び３２０（ｂ）を夫々（総称して、実行コア３２０）含む。各実行コアは、実行資源３２４と、バスクラスタ３２８とを含む。実行資源３２４は、例えば、データ（例えば、インストラクション、オペランド、アドレス）を供給するために、レジスターファイルとキャッシュに加えて、１つ以上の整数値、浮動小数点、ロード／ストア、そして分岐実行装置とを含んでもよい。バスクラスタ３２８は、共有キャッシュ３４０内で見逃したかもしれないトランザクションのために、フロントサイドバス３６０に加えて、実行コア３２０（ａ）及び３２０（ｂ）によって共有されるキャッシュ３４０へのトランザクションを管理するためのロジックを示す。図１及び２のエラーパイプラインに対応する資源は、実行資源３２４及び／又はバスクラスタ３２８に関連付けられていてもよい。
【００２２】
インターフェース装置（ＩＦＵ）３３０（ａ）、３３０（ｂ）（総称して、ＩＦＵ３３０）は、実行コア３２０と共有資源、キャッシュ３４０とＦＳＢ３６０の間の境界を示す。ＩＦＵ３３０の開示される実施例は、ＦＲＣ装置３３２と、仲裁装置３３４を含む。上記のように、ＦＲＣ装置３３２と仲裁装置３３４とは実行コア３２０から信号を受信し、互いに隣接してそれらを配置することがプロセッサ金型上の配線をかなり節約することとなる。また、実行コア３２０（ａ）及び３２０（ｂ）にて検出可能なエラーに対して監視するための構成部品を含むエラー装置３３６（ａ）と３３６（ｂ）とが図３Ａに示される。
【００２３】
ＦＲＣモードのために、ＦＲＣ装置３３２は、キャッシュ３４０及びＦＳＢ３６０のような共有資源へのトランザクションに対して実行コア３２０からの信号を比較する。ＦＲＣ装置３３２は、よって、プロセッサ３１０のＦＲＣ境界の部分を形成する。マルチコアモードのために、仲裁装置３３４は、実行コア３２０からの信号を監視し、仲裁アルゴリズムに従ってその関連する共有資源へアクセスを与える。仲裁装置３３４によって実行される仲裁アルゴリズムは、例えば、ラウンドロビンスキーマ、優先順位ベーススキーマ、或いは、同様の仲裁アルゴリズムであってもよい。ＦＲＣとマルチコアモードの両方のために、エラー装置３３６は、修復可能なエラーに対して実行コア３２０からの信号を監視してもよい。
【００２４】
修復モジュール１５０及びリセットモジュール１６０（図２）の部分は、プロセッサ３１０又はシステム３００内のどこか位置していてもよい。一実施例のために、修復ルーチン３９２とリセットルーチン３９４とは、不揮発性メモリ３９０において格納されてもよく、これらルーチンのイメージは、実行するためには主メモリ３８０にロードされる。この実施例のために、修復モジュール１５０とリセットモジュール１６０とは、修復ルーチン３９２とリセットルーチン３９４の夫々（又は、主メモリ３８０内のそれらイメージ）へのポインタを含んでもよい。
【００２５】
システム３００の開示された実施例は、また、実行コア３２０（ａ）及び３２０（ｂ）夫々のために割り込みを処理するために、割込制御部３７０（ａ）及び３７０（ｂ）（総称して、割込制御部３７０）を含む。各割込制御部３７０は、割込制御部３７０が動作してもよい異なるクロックドメインを収容するために、第一及び第二の構成部品３７４及び３７８を夫々持って示される。例えば、ＦＳＢ３６０が、一般的に、プロセッサ３１０とは異なる周波数で動作する。その結果、ＦＳＢ３６０と直接対話するプロセッサ３１０の構成部品は、一般的に、プロセッサ３１０上の領域３６４として指定されるクロックドメインで動作する。
【００２６】
割込制御部３７０の開示された実施例は、また、ＸＯＲ３７２の形式にてＦＲＣ境界同様の構成部品を含み、ＸＯＲ３７２は、実行コア３２０（ａ）及び３２０（ｂ）から構成部品３７４（ａ）及び３７４（ｂ）の出力信号、例えば、割込応答との間に不一致を検出すると、ＦＲＣエラーを信号送出する。しかしながら、割込制御部３７０へのエラー仲裁は、ＦＳＢクロックドメイン３６４の構成部品３７８（ａ）及び３７８（ｂ）内のソフトエラーから、以前発生するかもしれない。これらエラーが、実行コア３２０（ａ）及び３２０（ｂ）の続く動作間に持ち込まれる矛盾によって検出されてもよい。
【００２７】
システム３００の開示された実施例に対して、共通スヌープブロック３６２が、実行コア３２０（ａ）及び３２０（ｂ）への、また、からのスヌープトランザクションを処理する。ＸＯＲ３６６は、実行コア３２０（ａ）、３２０（ｂ）からのスヌープ応答のＦＲＣチェッキングを提供し、不一致が検出されれば、エラーを信号送出する。ＸＯＲ３７２及び３６６は、プロセッサ３１０がマルチコアモードにて動作してれば、利用不可とされてもよい。
【００２８】
図３Ｂは、コンピューティングシステム３００の構成部品への修復可能なエラー状態をブロードキャストするための装置３４４の一実施例を示すブロック図である。例えば、エラー装置３３６（ａ）及び３３６（ｂ）は、実行コア３２０（ａ）及び３２０（ｂ）夫々の種々のアレイ（レジスタ、キャッシュ、バッファ等）のためのＥＣＣ又はパリティエラー検出ロジック、及び／又は、これらエラーに対処するための例外ロジックを示す。ＯＲゲート３３８は実行コア３２０からのエラー信号を監視し、それらエラー信号がアサートされれば、ＦＲＣ装置３３２を利用不可とするために信号をアサートする。エラー信号は、Ｉｔａｎｉｕｍ（登録商標）プロセッサ用に定義されたマシンチェックアボート（ＭＣＡ）のような高レベル割込みであってもよい。また、ＯＲゲート３３８の出力は、修復機構が開始されることをエラーフリー実行コアへ示すために実行コア３２０へ戻される。第二ＯＲゲート３３９が共有資源から実行コア３２０へのエラー信号を転送するために提供される。
【００２９】
エラー信号がＦＲＣ装置３３２を使用不可能とすると、不正データは、ＦＲＣエラーを引き起こし、さもなければ、修復可能なエラーが修復不可能な、例えば、ＦＲＣ、エラーとして扱われる。つまり、システムは短い修復動作よりむしろリセット動作を介して進める。システムの特定の実施に基づいて、エラー信号と（修復可能なエラーによって作成された）実行コアからの不一致なデータ信号との間の競争が接近している場合が多くある。この理由より、装置３４４は、少なくともＦＲＣモードにおいて、エラー信号の伝搬を加速するための機構を有する。
【００３０】
一実施例のために、装置３３４は、ＦＲＣ及び高性能モードの両方において動作するＭＣＡのような高レベルの割込みをサポートする。高性能モードにおいて、例えば、実行コアの前部又はＬ２キャッシュにおけるエラー信号がパイプラインストールへの対象である。ストールを引き起こした事象がエラー信号を無意味とするかもしれないため、これは不必要なＭＣＡがなされることがないことを確証する。ＦＲＣモードにおいて、エラー信号はこれらストールを回避する。ＦＲＣにおいて、ＦＲＣにおいてストールを回避することは、いくつかの不必要なエラー信号の処理をもたらすが、（ＦＲＣでない）エラー信号がＦＲＣ装置３３２を利用不可能とする以前にＦＲＣエラーが引き起こされる可能性を現象する。図７と共に議論されるように、プロセッサ１１０の実施例は、また、エラー信号と不正データを反映したコア信号との間の競争を緩和するためのハードウェア機構を有するようにしてもよい。
【００３１】
図４は、ＦＲＣモードにおいてプロセッサ３１０をサポートするためのＦＲＣ構成要素を含むコンピューティングシステム３１０の一実施例のためにデータ経路を示す図である。開示された実施例に対して、キャッシュ３４０と、ＦＳＢ３６０と、実行コア３２０とが、一連のバッファを介して接続されている。例えば、ライトアウトバッファ（ＷＯＢ）４１０は、キャッシュ３４０から主メモリ３８０へと立ち退かせたデータをステージし、スヌープデータバッファ（ＳＤＢ）４２０は、実行コア３２０又はキャッシュ３４０から、これら構造（実行コア３２０は共有キャッシュ３４０に加えてキャッシュの１つ以上のレベルがあってもよい）におけるスヌープヒットに対応するＦＳＢ３６０へとスヌープデータを提供する。
【００３２】
ライトラインバッファ（ＷＬＢ）４３０（ａ）、４３０（ｂ）の対は、実行コア２３０（ａ）、３２０（ｂ）夫々からキャッシュ３４０又はＦＳＢ３６０へとデータをステージし、リードラインバッファ４４０（ａ）、４４０（ｂ）の対は、ＦＳＢ３６０からキャッシュ３４０又は実行コア３２０へとデータをステージする。合体バッファ（ＣＢ）４５０（ａ）、４５０（ｂ）は、メモリ３８０へと書き込むべきデータを収集し、周期的にＦＳＢ３６０へと転送する。例えば、メモリの同一ラインへのマルチデータ書き込みは、ＦＳＢ３６０上の書き込みトランザクションを引き起こす前にＣＢ４５０内に収集されるようにしてもよい。
【００３３】
開示される実施例に対して、プロセッサ３１０がＦＲＣモード内で動作されるとき、これらバッファに関連付けられるロジックがＲＦＣチェック及びデータルーチ機能を提供する。例えば、ロジックブロック４５４は、ＣＢ４５０（ａ）、４５０（ｂ）内のデータに対するＭＵＸ及びＸＯＲ機能を示す。プロセッサ３１０がＦＲＣモード内で動作しているならば、ＸＯＲ機能は、ＦＲＣチェックを提供する。プロセッサがマルチコアモード内で動作しているならば、ＭＵＸ機能は、データルーチンを提供する。ロジックブロック４３４及び４４４は、ＷＳＢ４３０（ａ）、４３０（ｂ）及びＲＬＢ４４０（ａ）、４４０（ｂ）内夫々のデータに対して同様の機能を提供する。ＭＵＸ４６０、４７０、そして４８０は、ことなる情報源からキャッシュ３４０、ＦＳＢ３６０、そして実行コア３２０へとデータの経路を決定する。
【００３４】
上記したように、ＦＲＣ境界内で検出されたエラーに対する修復機構は、ハードウェア、ソフトウェア、ファームウェアモジュールの種々の組み合わせによって取り扱われてもよい。修復機構の一実施例は、プロセッサに密接に関連付けられているコードを用いる。例えば、Ｉｎｔｅｌ（登録商標）のＩｔａｎｉｕｍ（登録商標）プロセッサファミリが、他のコンピューティングシステムへプロセッサの抽象化を提供するプロセッサ抽象化レイヤ（ＰＡＬ）と呼ばれるファームウェアのレイヤを用いる。ＰＡＬ内で修復を実行することは、システム抽象化レイヤ（ＳＡＬ）、例えば、ＢＩＯＳ及びオペレーティングシステムのようシステムレベルコードから修復プロセスを隠すことである。修復機構のＰＡＬベース実施は、オペレーティングシステムによって実施されるタイムアウト期間を引き起こすことを十分に早急に回避完了することを可能とすべきである。修復機構は、システムレベルコード、例えば、ＳＡＬ／ＢＩＯＳ又はオペレーティングシステムコードのシステムレベルコードを用いて実行されてもよい。後者の実施は、ＰＡＬベース実施として同一時間抑制の対象とはならなくともよい。特に断りのない限り、以下に議論される修復機構は、先の情報源のいずれにも関連付けられるコードを用いて実施されてもよい。
【００３５】
図５は、ＦＲＣリセットを引き起こす前に実行コアの一つ内で検出されたエラーから修復する機構を示すフローチャートである。実行コアの一つ内で検出されたパリティ、ＥＣＣ又は他エラーに応じて、修復ルーチンの開始を示すために信号がブロードキャストされる５１０。エラーがＦＲＣリセットを引き起こす前に検出される限りにおいて、不正データは、修復のために利用可能な他の実行コアのマシン状態データをそのままにしている実行コアの一つにローカライズされることが可能である。従って、良好なコアのマシン状態が保存される５２０。修復のためにプロセッサを用意するために、両方のコアが特定した条件に初期化され５３０、保存されたマシン状態は、初期化されたコアへ戻される５４０。従って、ＦＲＣモードが変換され５５０、プロセッサが割込みコードを返す５６０。
【００３６】
本発明の一実施例に対して、実行コア１２０の一つは、マスターコアとして指定され、他は、プロセッサ１１０がＦＲＣモード内で動作しているときにスレーブコアとして指定されている。この実施例に対して、マスター及びスレーブコアによって生成された信号は、リセットが必要であるか否かを判断するためにＦＲＣ境界にて比較される。ＦＲＣリセットが保障されないならば、マスターコアから生成された信号は、共有資源１７０へと転送され、スレーブコアによって生成された信号は落とされる。この実施例に対して、実行コア１２０のステータスレジスタ内のビットは、マスター又はスレーブとしてそのステータスを指定するために使用されてもよい。例えば、そのビットは、システムがブート又はリセとしたときに設定されてもよい。より詳細に以下に議論されうるように、実行のマスター／スレーブステータスは、また、いずれかのコア内のエラーに対して修復を許すために動的に変更可能とされてもよい。ＦＲＣ境界内にて検出されたエラー、例えば、修復エラーに対して、マスター及びスレーブコアの作用は、エラーを生成したコアに応じて異なっていてもよい。
【００３７】
図６は、スレーブ実行コアとして指定されている実行コア内で検出されたエラーから修復するための機構６００の一実施例を示すフローチャートである。スレーブ実行コアの動作は左に示され、マスター実行コアの動作は右に示される。
【００３８】
スレーブ実行コアがエラー（パリティ、ＥＣＣ等）を検出すると６１０、ルーチン６００は初期化される。スレーブコアは、コンピューティングシステムの他の構成要素へのエラー条件を信号送出するために割込みを発生する６２０。ＰＡＬ又は比較可能なプロセッサレベルコードによって実行されるルーチン６００の実施例に対して、割込み信号のブロードキャストは、マスター実行コアのようなプロセッサチップ内の構成要素に限定されてもよい。エラーを信号送出することに加えて、スレーブ実行コアは、ＦＲＣ装置を無効とし６３０、その動作を一時停止させる。ＦＲＣ装置を無効にすることが、ＦＲＣ境界に到達したときにエラーがＦＲＣリセットを引き起こすことを防止し、スレーブコア内の一時停止している動作が修復処理を乱すことを防止する。
【００３９】
割込みに応じて６２４、マスター実行コアは、その状態データがいくつかのエラーを含んでいるか否かを判断する６４０。例えば、各実行コアは、エラーが検出されればセットされるステータスビットを有するようにしてもよい。マスター実行コアが、またエラーを生成したか否かを判断するためのこのビットをチェックしてもよい。ソフトエラーが殆ど同時に両方の実行コア内で発生するといった非常にまれな場合を除いて、マスターコアは、クリーンである可能性が高い。クリーンでなければ６４０、修復を実行するための不正となっていないプロセッサ状態がない。この場合、マスターコアは、スレーブコアへリセット状態を信号送出し６４２、コンピューティングシステムは、例えば、ＦＲＣレベルのフルリセットを実行する。
【００４０】
マスターコアのための状態データが壊れてないならば、マスターコアスレーブは、そのマシン状態を保存し６６０、そのパイプライン内のキュー及びバッファを一気に消去する６６４。例えば、マスターコアは、そのデータの内容を保存し、メモリの保護領域のためにレジスタ及び低レベルキャッシュを制御してもよい。マスターコアは、また、スレーブコアへ制限されたリセットを信号送出し６６８、特定の状態に資源を設定６７６、例えば、そのパイプラインを初期化する。スレーブコアは、コアの状態に同期して、制限されたリセットを検出し６７０、そのパイプラインを初期化する６７４。
【００４１】
よって、コアが同期したことによって、ＦＲＣモードは、再起動する６８０。これは、例えば、そのステータス／制御レジスタ内の適切な状態ビットを設定する、各コアにハンドラールーチンを実行させることによって達成されうる。保存された状態は、両方の実行コアに戻され６８４、制御は割り込まれたコードシーケンスに返される６９０。
【００４２】
メソッド６００は、エラーがスレーブコアとして現在指定されている実行コア内で検出される場合のために修復機構の実施例を示す。一実施例のために、スレーブコアは、共有資源を「制御」しない実行コアである。例えば、ＦＲＣモードにて、スレーブ実行コアからの信号がＦＲＣ境界でマスター実行コアからのそれらとの比較の後に落とされる。ＦＲＣエラーが検出されない場合、マスターコアからの信号は、ＦＲＣ境界外の共有資源を制御するために使用される。
【００４３】
スレーブコアよりむしろマスターコアにエラーが起因しているならば、修復は、実行コアのマスター／スレーブ指定を変更することによって取り扱われてもよい。例えば、マスター／スレーブ指定が各実行コアに関連付けられるステータスレジスタ内のビットの状態によって指定されてもよい。このステータスビットがマスター状態内にあるための実行コアは、修復ルーチン６００、例えば、動作６６０の状態セーブ動作を実行するために使用される共有資源を制御する。
【００４４】
修復ルーチンの一実施例のために、エラーが起因している実行コアがそのマスター／スレーブステータスビットをチェックしてもよい。ステータスビットがスレーブであることを示すならば、メソッド６００は、記述されたように実行されてもよい。ステータスビットがマスターを示すならば、そのステータスがマスターへ変更するためにスレーブに信号送出し、それ自身のステータスをスレーブに変更し、動作を一時的に停止する。
【００４５】
図７は、修復可能及び修復不可能なエラーハンドリング間の競争条件を緩和するＦＲＣチェッカー７３０の一実施例を例示するブロック図である。ＦＲＣチェッカー７３０の開示された実施例は、比較装置７３４と、キュー７３６と、タイマー装置７３８とを有する。キュー７３６は実行コア（ａ）からデータを受信し、比較装置７３４はコアＡ及びＢからのデータを比較して、比較結果が一致するか否かを示すステータスフラグを設定する。データが一致すれば、ステータスフラグがその一致を示すために設定される。
【００４６】
データが一致しなければ、ステータスフラグは不一致を示すために設定され、タイマー装置７３８は、カウントダウン間隔を開始する。エラー検出器１４０がタイムアウト間隔が終了する前にエラーフラグを受信すれば、ＦＲＣチェッカー７３０を利用不可とし、修復装置１５０に修復ルーチンを実行させる。
【００４７】
よって、マルチコアプロセッサにおいて修復可能及び修復不可能なエラーを取り扱うための機構を開示してきた。１つ以上のチェッカー装置が修復不可能なエラーを検出するためにコアからの信号を比較する場合において、複数コアがＦＲＣモード内で動作されてもよい。加えて、各コアが修復可能なエラーを検出するためにエラー装置を含む。修復可能なエラーが検出されれば、チェッカー装置は利用不可となり、修復ルーチンが実行される。マルチコアプロセッサのマルチコアモード実施例は、共有資源へのアクセスを制御するためにチェッカーに近接する仲裁装置を有する。共有資源へのＦＲＣ境界の近傍は、ＦＲＣ境界によって保護されたロジックを増大させ、マルチコアモード実施に必要な配線を減少させる。
【００４８】
本発明の実施例は、ＦＲＣ有効でないシステムにおいて検出されないエラー全てを仮想的に検出し、一般的に他のＦＲＣ有効とされるプロセッサでのリセットを介して取り扱われるものを含む仮想的に全ての検出可能なエラーの修復をサポートする。
【００４９】
開示される実施例は、本発明の種々の特長を例示するために提供されている。開示の恩恵を受けるプロセッサ設計の当業者は、添付されるクレームの精神及び範囲内において、開示される実施例の変更及び改良を認識するであろう。
【図面の簡単な説明】
【００５０】
【図１】図１は、二重実行コアとＦＲＣ検出及びハンドリングロジックとを含むプロセッサのブロック図である。
【図２】図２は、複数モードにて動作可能な図１のプロセッサの一実施例のブロック図である。
【図３Ａ】図３Ａは、図２の複数モードを実装するコンピューティングシステムの実施例のブロック図である。
【図３Ｂ】図３Ｂは、図３Ａのコンピューティングシステムにおいて修復可能なエラーの信号を発する機構のブロック図である。
【図４】図４は、図３Ａのコンピューティングシステムのデータパスを示すブロック図である。
【図５】図５は、実行コアにおいてソフトエラーから修復する機構の一実施例を示すフローチャートである。
【図６】図６は、複数実行コアプロセッサにおけるソフトエラーから修復する機構の一実施例を示すフローチャートである。
【図７】図７は、修復可能及び修復不可能なエラー機構の間で競合条件を緩和するＦＲＣチェッカーの一実施例を示すブロック図である。
【図１】
2006510117.tif 000003
【図２】
2006510117.tif 000004
【図３Ａ】
2006510117.tif 000005
【図３Ｂ】
2006510117.tif 000006
【図４】
2006510117.tif 000007
【図５】
2006510117.tif 000008
【図６】
2006510117.tif 000009
【図７】
2006510117.tif 000010
【国際調査報告】
2006510117.tif 000011
2006510117.tif 000012
2006510117.tif 000013