专利摘要:
プロセッサコア(100)は、複数の整数実行ユニット(154a,154b)に同じ整数命令ストリームをディスパッチし、浮動小数点ユニット(160)に同じ浮動小数点命令ストリームを連続的にディスパッチしうる命令デコードユニット(140)を有する。前記整数実行ユニットは、各クロックサイクル中に、各整数実行ユニットが同じ整数命令を実行するように、ロックステップ方式で動作しうる。前記浮動小数点ユニットは、前記同じ浮動小数点命令ストリームを2回実行しうる。比較ロジック(158a,158b,163)は、前記整数命令がリタイヤする前に、前記整数実行ユニットのそれぞれからの実行結果間の不一致を検出しうる。また、前記比較ロジックは、前記浮動小数点命令ストリームの前記実行の結果を前記浮動小数点ユニットから転送する前に、各連続する浮動小数点命令ストリームの実行の結果間の不一致を検出しうる。更に、前記比較ロジックは、不一致を検出すると、前記不一致を発生させた命令を再実行させうる。
公开号:JP2011509490A
申请号:JP2010542273
申请日:2009-01-09
公开日:2011-03-24
发明作者:クアチ ノン;ジー.;バトラー マイケル
申请人:グローバルファウンドリーズ・インコーポレイテッド;
IPC主号:G06F11-18
专利说明:

[0001] 本発明は、プロセッサに関し、より詳細には、プロセッサ内部の論理エラー保護に関する。]
背景技術

[0002] 電子部品はさまざまにエラーを発生することがある。メモリアレイを含む部品は、ビット不良を有することがあり、これがデータエラーとして現れることがある。論理(ロジック)回路は、縮退(stuck-at)ビットおよび/または遅延エラーを有することがある。エラーは枚挙にいとまがない。多くのエラーは製造不良によって発生することがある。例えば、製造時のパーティクル汚染がハードエラーを発生させ、このエラーは直ちに現れることもあれば、動作時に後から現れることもある。このようなエラーの多くは、故障が検出されるとその故障が永続するため、「ハードエラー」として分類されうる。ハードエラーの多くは製造時やバーインイン試験時に検出することができるが、なかには潜伏しているか、見つからないものもある。ある種類のエラーは、他の種類よりも被害が大きいことがある。例えば、メモリデータの破壊により発生するエラー等のサイレントなエラーは、このエラーが検出されて、訂正されるか、回復メカニズムが存在しない限り回復できないため、深刻な被害を起こすことがある。このため、多数のエラー検出/訂正メカニズムが開発されてきた。詳しく説明すると、エラー検出および誤り訂正符号(EDC/ECC)に加えて、EDC/ECCハードウェアが設計に搭載されてきた。従来、このような手法は、メモリエラーからの保護のためにマイクロプロセッサの設計で使用されてきた。従来、ほとんどの論理エラーが製造試験およびバーンイン中に発見されていたため、論理はほとんど保護されていなかった。]
[0003] 一方、ソフトエラーは時々発生し、不規則に現れ、このため検出および訂正が困難となりうる。以前は、ソフトエラーは、通常、ケーブルとコネクタを有するボード等を使用したシステムなどに隔離されていた。しかし、現在、製造技術が進歩を遂げ、デバイスが一層微細化(90nm未満など)しているため、特に金属酸化物半導体(MOS)デバイスでは、ソフトエラーの別の発生源が登場している。このような新しいソフトエラーは、中性子またはアルファ粒子の衝撃によって発生し、メモリアレイへの直接の衝撃によるメモリエラーとして現れるか、論理素子(フリップフロップなど)への衝撃による論理エラーとして現れる。]
発明が解決しようとする課題

[0004] 何百万個ものトランジスタを搭載したマイクロプロセッサなどのデバイスでは、ソフトエラーが検出されない場合、深刻な結果を引き起こすことがある。この結果、チップ境界でエラーを検出することができる従来のチップレベル冗長性などの検出方法が開発されてきた。例えば、システムにある2つの同じプロセッサチップが同時に同じコードを実行し、チップ境界でそれぞれの最終結果が比較される。従来のチップレベル冗長方式の多くでは、このようなエラーを検出しても訂正できず、エラーによりプロセッサの内部実行状態が破壊されているため、システムがトランスペアレントに回復できず、再起動が必要となる。このため、この種の構成は、エラーを検出できるものの、高信頼および高可用性のシステムでは不十分となりうる。]
課題を解決するための手段

[0005] 論理エラー保護のためのハイブリッド冗長性を備えたプロセッサの各種実施形態が開示される。一実施形態では、プロセッサコアは、通常実行モードと高信頼性実行モードで動作することができる。前記プロセッサコアは、複数の整数実行ユニットに同じ整数命令ストリームをディスパッチし、浮動小数点ユニットに同じ浮動小数点命令ストリームを連続的にディスパッチするように構成されうる命令デコードユニットを有する。例えば、前記命令デコードユニットは、前記高信頼実行モードで動作中は、前記整数実行クラスタに同じ整数命令ストリームをディスパッチし、浮動小数点ユニットに浮動小数点命令ストリームの命令を連続的に2回ディスパッチしうる。各クロックサイクル中に、前記複数の整数実行ユニットが同じ整数命令を実行するように、前記複数の整数実行ユニットはロックステップ方式で動作するように構成され、このため、同じ結果を有するはずである。前記浮動小数点ユニットは、前記同じ浮動小数点命令ストリームを2回実行するように構成され、このため、この場合も同じ結果を有するはずである。また、前記プロセッサコアは、前記複数の整数実行ユニットと、前記浮動小数点ユニットとに結合された比較論理(ロジック)も有する。前記比較論理は、例えば、前記同じ整数命令ストリームの命令がリタイヤするか、またはその結果が恒久的にコミットされる前に、前記複数の整数実行ユニットのそれぞれからの実行結果間の不一致を検出するように構成されうる。また、前記浮動小数点ユニットが、前記浮動小数点命令ストリームの前記実行結果を、前記浮動小数点ユニットから転送する前に、前記比較論理は、各連続する浮動小数点命令ストリームの実行の結果間の不一致を検出するように更に構成されうる。更に、前記比較論理が不一致を検出すると、前記比較論理は、前記不一致の原因となった命令を再実行させるように構成されうる。]
図面の簡単な説明

[0006] プロセッサコアの一実施形態のブロック図。
プロセッサコア論理(ロジック)のエラー保護の一実施形態のアーキテクチャブロック図。
図1,図2のプロセッサの実施形態の動作を示すフローチャート。
図1,図2のプロセッサの別の実施形態の動作を示すフローチャート。
図1のプロセッサコアを複数有するプロセッサの一実施形態のブロック図。] 図1 図2
実施例

[0007] 本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、逆に、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれるすべての変形例、均等物および代替例を含むことを意図することが理解されるべきである。本願にわたり、「しうる」、「してもよい」との文言は、許容を示す意味(すなわち、可能性がある、可能であること)で用いられており、義務的な意味(すなわち必須)ではない点が留意される。]
[0008] プロセッサコア100の一実施形態が図1に示される。一般に、コア100は、コア100に直接または間接的に結合されたシステムメモリ(図5に示す)に記憶されうる命令を実行するように構成されうる。このような命令は、特定の命令セットアーキテクチャ(ISA)に従って定義されうる。例えば、コア100は、x86 ISAの一種を実装するように構成されうるが、別の実施形態では、コア100は異なるISAまたはISAの組み合わせを実装してもよい。] 図1 図5
[0009] 図に示した実施形態では、コア100は、命令フェッチユニット(IFU)120に命令を提供するように結合された命令キャッシュ(IC)110を備えうる。IFU120は、分岐予測ユニット(BPU)130と、命令デコードユニット140とに結合されうる。デコードユニット140は、複数の整数実行クラスタ150a〜bと、浮動小数点ユニット(FPU)160とにオペレーションを提供するように結合されうる。各クラスタ150a〜bは、各々の複数の整数実行ユニット154a〜bに結合された個々のクラスタスケジューラ152a〜bを備えうる。クラスタ150a〜bは、実行ユニット154a〜bにデータを提供するように結合された各々のデータキャッシュ156a〜bを備えうる。図に示した実施形態では、データキャッシュ156a〜bはFPU160の浮動小数点実行ユニット164にもデータを提供し、浮動小数点実行ユニット164は、FPスケジューラ162からオペレーションを受け取るように結合されうる。データキャッシュ156a〜bと命令キャッシュ110とは、コアインタフェースユニット170にも結合され、コアインタフェースユニット170は、一元化されたL2キャッシュ180のほか、図2に示し、下で説明するコア100の外部にあるシステムインタフェースユニット(SIU)にも結合されうる。図1は、各ユニット間の特定の命令とデータの流れの経路を示しているが、図1には特に図示しないデータまたは命令の流れの追加の経路または方向が提供されてもよい点に留意されたい。] 図1 図2
[0010] 下で更に詳細に説明するように、コア100は、別個の実行スレッドに含まれる命令が同時に実行されうるマルチスレッド実行のために構成されうる。一実施形態では、各クラスタ150a〜bは、2つのスレッドのそれぞれ一方に対応する命令の実行に占有的に使用されるが、FPU160と上りの命令フェッチユニットおよびデコード論理(ロジック)とは、複数のスレッドで共有されうる。別の実施形態では、同時実行がサポートされるスレッド数が異なっていてもよく、設けられるクラスタ150とFPU160の個数も異なっていてもよい。]
[0011] 命令キャッシュ110は、取得、デコード、および実行のために発行される前の命令を記憶するように構成されうる。各種実施形態では、命令キャッシュ110は、どのようなキャッシュタイプおよびどのようなサイズのキャッシュとして構成されてもよく、必要に応じて、物理アドレッシングされても、仮想アドレッシングされても、この両者の組み合わせ(例えば、仮想インデックスビットと物理タグビット)でもよい。一部の実施形態では、命令キャッシュ110は、命令フェッチアドレスのために仮想−物理変換をキャッシュするように構成された変換ルックアサイドバッファ(TLB)論理(ロジック)を有してもよいが、TLBと変換論理(ロジック)が、コア100の他の構成要素に含まれていてもよい。]
[0012] 命令キャッシュ110への命令フェッチアクセスは、IFU120によって調整されうる。例えば、IFU120は、各実行スレッドの現在のプログラムカウンタ状態をトラッキングし、実行する後続の命令を取得するために、命令キャッシュ510にフェッチを発行しうる。命令キャッシュミスの場合、命令キャッシュ110またはIFU120のいずれかが、L2キャッシュ180からの命令データの取得を調整しうる。一部の実施形態では、IFU120は、メモリレーテンシの影響を軽減するために、予想される命令が使用される前に、メモリ階層の他のレベルからの、その命令のプリフェッチを調整しうる。例えば、精度の高い命令のプリフェッチにより、命令が必要となったときに、その命令が命令キャッシュ110に存在する確率が高くなり、これにより、おそらくメモリ階層の複数のレベルでのキャッシュミスのレーテンシの影響が回避される。]
[0013] 各種の分岐(例えば、条件付きの分岐または無条件の分岐、呼び出し/戻り命令など)により、特定のスレッドの実行の流れが変わりうる。分岐予測ユニット130は、通常、IFU120が使用するために、今後フェッチするアドレスを予測するように構成されうる。一部の実施形態では、BPU130は、命令の流れにおいて可能な分岐に関するさまざまな情報を記憶するように構成されうる分岐先バッファ(BTB)(不図示)を備えうる。一実施形態では、分岐予測が命令のフェッチに先行し、IFU120が命令をフェッチ可能となるまでに、今後フェッチする複数のアドレスを予測してキューイングできるように、IFU120の実行パイプラインとBPU130の実行パイプラインが分離されてもよい。マルチスレッドオペレーション中に、予測のパイプラインとフェッチのパイプラインが、異なるスレッドに同時に操作するように構成されてもよい点が考察される。]
[0014] IFU120は、フェッチを行った結果、「フェッチパケット」と呼ばれる命令バイトのシーケンスを生成するように構成されうる。例えば、フェッチパケットは、32バイト長または別の適切な値でもよい。一部の実施形態では、特に、可変長命令を実装するISAでは、所定のフェッチパケット内の任意の境界に配列される有効な命令数が変わり、場合によっては、命令が異なるフェッチパケットにまたがることがある。一般に、デコードユニット140は、フェッチパケット内で命令の境界を特定して、この命令を、デコードするか、あるいはまたはほかの方法で、クラスタ150またはFPU160が実行可能なオペレーションに変換して、このようなオペレーションを実行のためにディスパッチするように構成されうる。]
[0015] 一実施形態では、DEC140は、最初に、1つ以上のフェッチパケットから抽出した所定のバイトのウィンドウ内で、可能な命令の長さを決定するように構成されうる。例えば、DEC140は、x86互換ISAの場合、所定のフェッチパケット内の各バイト位置を始点とする、プレフィックス、オペコード、「mod/rm」、および「SIB」の各バイトの有効なシーケンスを特定するように構成されうる。一実施形態では、DEC140内の抽出論理(ロジック)は、次に、ウィンドウ内で最大4つの有効な命令の境界を特定するように構成されうる。一実施形態では、複数のフェッチパケットと、命令の境界を特定する複数の命令ポインタ群が、DEC140内にキューイングされ、IFU120が時としてデコードよりも「先にフェッチ」できるように、デコードプロセスをフェッチから分離することが可能となる。]
[0016] 次に、命令が、フェッチパケット記憶域からDEC140内のいくつかの命令デコーダの1つに送られうる。一実施形態では、DEC140は、1サイクルにつき最大4つの命令を実行のためにディスパッチするように構成されており、これに対応して4つの別個の命令デコーダが設けられるが、他の構成も可能であり、考察される。コア100がマイクロコード命令をサポートしている実施形態では、各命令デコーダは、所定の命令がマイクロコード化されているかどうかを判定し、マイクロコード化されている場合は、命令をオペレーションのシーケンスに変換するために、マイクロコードエンジンの動作を起動するように構成されうる。マイクロコード化されていない場合、命令デコーダは、命令を、クラスタ150またはFPU160が実行するのに適した1つのオペレーション(あるいは、一部の実施形態では複数のオペレーション)に変換しうる。得られたオペレーションは、「マイクロオペレーション」、「マイクロオペ」または「UOP」とも呼ばれ、1つ以上のキューに格納され、実行のためにディスパッチされるのを待機しうる。一部の実施形態では、マイクロコードオペレーションと、非マイクロコード(または「高速パス」)オペレーションとは、別のキューに格納されうる。]
[0017] DEC140内部のディスパッチ論理(ロジック)は、ディスパッチパーセルを組み立てるために、ディスパッチ待機中のキューイングされたオペレーションの状態を、実行リソースの状態およびディスパッチルールと併せて調べるように構成されうる。例えば、DEC140は、キューイングされたオペレーションをディスパッチ可能かどうか、キューイングされてクラスタ150および/またはFPU160内での実行を待機しているオペレーションの数、ならびにディスパッチするオペレーションに適用されうるリソース制約を考慮しうる。一実施形態では、DEC140は、所定の実行サイクル中に、クラスタ150またはFPU160の1つに、最大4オペレーションのパーセルをディスパッチするように構成されうる。]
[0018] 一実施形態では、DEC140は、所定の実行サイクル中に1つのスレッドのオペレーションのみをデコードし、ディスパッチするように構成されてもよい。しかし、IFU120とDEC140が、同時に同じスレッドを操作する必要はない点に留意されたい。命令のフェッチおよびデコード中に各種のスレッド切替ポリシーを使用することが考察される。例えば、IFU120とDEC140は、Nサイクル(Nは最小で1)おきに、ラウンドロビン方式で、処理する異なるスレッドを選択するように構成されうる。あるいは、スレッド切替が、キューの占有率などの動的な条件によって変更されてもよい。例えば、DEC140内の特定のスレッドのキューイングされているデコード済みのオペレーション、または特定のクラスタ150のキューイングされているディスパッチ済みのオペレーションの深さが、しきい値を下回ると、異なるスレッドのキューイングされているオペレーションが不足するまで、デコード処理はそのスレッドに切り換えうる。一部の実施形態では、コア100は、複数の異なるスレッド切替ポリシーをサポートすることができ、そのうちのいずれかが、ソフトウェアによって、あるいは製造時(例えば、製造マスクオプションとして)選択されてもよい。]
[0019] 一般に、クラスタ150は、ロード/ストアオペレーションのほかに、整数演算オペレーションと論理オペレーションも実装するように構成されうる。一実施形態では、クラスタ150a〜bのそれぞれは、個々のスレッドのオペレーションの実行のみに使用され、コア100がシングルスレッドモードで動作するように構成されている場合、オペレーションが、クラスタ550の1つのみにディスパッチされうる。各クラスタ150は、独自のスケジューラ152を有し、このスケジューラ152は、クラスタに既にディスパッチされているオペレーションを実行するための発行を管理するように構成されうる。各クラスタ150は、独自の整数物理レジスタファイルのコピーのほか、独自の終了論理(例えば、オペレーションの終了とリタイヤを管理するためのリオーダーバッファまたは他の構造体)も有しうる。]
[0020] 下記に詳述するように、上記の動作に加えて、一実施形態では、プロセッサコア100は、高信頼実行モードで動作するように構成されうる。一実装では、プロセッサコア100は、例えば、外部ピン(図5に図示)を、VDDまたはGNDなどの所定の基準電圧に結合することによって通常実行モードまたは高信頼実行モードのいずれを実行するように選択的に設定することができる。高信頼実行モードが選択された場合、DEC140内部のディスパッチ論理(ロジック)は、同じクロックサイクルにおいて各クラスタ150a〜bに同じ命令のシーケンスをディスパッチするように構成されうる。また、クラスタ150a〜bは、各クロックサイクルに、同じ命令がパイプラインの同じステージに存在し、各クラスタが各ステージで同じ結果を生成しなければならないロックステップ方式で動作するように構成されうる。また、ロックステップ方式で動作中は、クラスタ150a〜b間ですべてのプロセッサ状態が同じでなければならず、L2キャッシュ180へのアクセスが実質的に同時に発生しなければならない。下で更に詳細に説明するように、ソフト論理エラーの伝達を阻止するために、これらの特性が使用されうる。] 図5
[0021] 各クラスタ150内の実行ユニット154は、異なるタイプのオペレーションの同時実行をサポートすることができる。例えば、一実施形態では、実行ユニット154は、2つの並列ロード/ストアアドレス生成(AGU)オペレーションと、2つの同時数値/論理演算(ALU)オペレーションとをサポートし、クラスタ当たり合計4つの同時整数オペレーションをサポートすることができる。実行ユニット154は、整数の乗算、除算などの追加のオペレーションをサポートしてもよいが、各種実施形態では、クラスタ150は、スループットに対するスケジューリングの制約、ならびにこのような追加のオペレーションの他のALU/AGUオペレーションとの同時実行を実装してもよい。また、各クラスタ150は、命令キャッシュ110と同様に、さまざまなキャッシュ構成のいずれかを使用して実装されうる独自のデータキャッシュ156を備えてもよい。データキャッシュ156が命令キャッシュ110とは異なる構造で編成されてもよい点に留意されたい。]
[0022] 図に示した実施形態では、クラスタ150とは異なり、FPU160は異なるスレッドの浮動小数点演算を実行するように構成され、場合によってはこれらを同時に実行するように構成されうる。FPU160は、クラスタスケジューラ152と同様に、オペレーションを受け取り、キューイングし、FP実行ユニット162内で実行するために発行するように構成されうるFPスケジューラ164を備えうる。また、FPU160は、浮動小数点オペランドを管理するように構成された浮動小数点物理レジスタファイルを備えうる。FP実行ユニット164は、加算、乗算、除算、乗算累算などの各種の浮動小数点演算のほか、ISAによって定義されうる他の浮動小数点、マルチメディアまたはその他のオペレーションを実装するように構成されうる。各種実施形態では、FPU160は、特定の異なる種類の浮動小数点演算の同時実行をサポートし、異なる精度(例えば、64ビットオペランド、128ビットオペランドなど)もサポートすることができる。図に示すように、FPU160はデータキャッシュを有さないが、代わりに、クラスタ150内部に設けられたデータキャッシュ156にアクセスするように構成されうる。一部の実施形態では、FPU160は、浮動小数点のロード命令とストア命令を実行するように構成されうるが、別の実施形態では、FPU160の代わりにクラスタ150が上記命令を実行してもよい。]
[0023] 前述のように、高信頼実行モードが選択された場合、DEC140内部のディスパッチ論理(ロジック)は、スレッドがFPU160によって実行されるたびに、FPU160に連続的に同じスレッドをディスパッチするように構成されうる。このため、下で更に詳細に説明するように、精度向上のために、連続する同じスレッド実行のそれぞれの結果が比較されうる。]
[0024] 命令キャッシュ110とデータキャッシュ156とは、コアインタフェースユニット170を介してL2キャッシュ180にアクセスするように構成されうる。一実施形態では、CIU170は、システム内のコア100と他のコア100間のほか、外部システムメモリ、周辺機器などとの間でも一般的なインタフェースを提供しうる。一実施形態では、L2キャッシュ180は、任意の適切なキャッシュ構成を使用する一元的なキャッシュとして構成されうる。通常、L2キャッシュ180は、1次命令キャッシュおよびデータキャッシュよりも実質的に大容量である。]
[0025] 一部の実施形態では、コア100は、ロードオペレーションとストアオペレーションを含むオペレーションのアウトオブオーダー実行をサポートすることができる。すなわち、クラスタ150とFPU160内でのオペレーションの実行の順序が、オペレーションに対応する命令の元のプログラムの順序と変わることがある。このように実行の順序を柔軟に設定できることにより、実行リソースをより効率的にスケジューリングできるようになり、全体的な実行パフォーマンスを向上させることができる。]
[0026] また、コア100は、各種の制御手法とデータ投機手法とを実装してもよい。前述のように、コア100は、スレッドの実行制御の流れの進行方向を予測するために、各種の分岐予測手法と投機的プリフェッチ手法を実装しうる。このような制御投機手法は、一般に、命令が使用可能となるか、(例えば、分岐予測ミスのため)投機ミスが発生するかどうかが確定する前に、矛盾のないような命令の流れを与えようとする手法である。コア100は、制御投機ミスが発生すると、投機ミスの経路に沿ってオペレーションとデータを廃棄し、実行制御を正しい経路に導くように構成されうる。例えば、一実施形態では、クラスタ150は、条件付きの分岐命令を実行して、分岐結果が予測された結果と一致するかどうかを判定するように構成されうる。一致しない場合、クラスタ150は、IFU120に、正しい経路に沿ったフェッチを開始させるように構成されうる。]
[0027] これとは別に、コア100は、値の正誤が判明する前に、その後の実行で使用するデータ値を提供しようとする各種データ投機手法を実装しうる。例えば、セットアソシエティブキャッシュでは、データがキャッシュに存在する場合、キャッシュ内のどのウェイにデータが実際にヒットするかが判明する前に、データを、キャッシュの複数のウェイから取得することが可能である。一実施形態では、コア100は、ウェイのヒット/ミス状態が判明する前に、キャッシュ結果を提供するために、命令キャッシュ110、データキャッシュ156および/またはL2キャッシュ180において、一種のデータ投機としてウェイ予測を実行するように構成されうる。データ投機の誤りが発生した場合、投機ミスとなったデータに依存するオペレーションが、「再生」すなわち再実行のために再発行されうる。例えば、ウェイ予測が外れたロードオペレーションが再生されうる。実施形態によっては、再実行時に、ロードオペレーションが、以前の投機ミスの結果に基づいて、再投機される(例えば、先に判定された正しいウェイを使用して投機される)か、あるいはデータ投機を行わずに実行されうる(例えば、結果の生成前に、ウェイのヒット/ミスチェックが終了まで実行の進行が許容される)。各種実施形態では、コア100は、アドレス予測、アドレスまたはアドレスオペランドのパターンに基づくロード/ストア依存関係の検出、投機的なストア−ロード結果の転送、データコヒーレンスの投機、または他の適切な手法、あるいはその組み合わせなど、数多くの他の種類のデータ投機を実装してもよい。]
[0028] 各種実施形態では、プロセッサ実装は、ほかの構造と共に、1つの集積回路に一体化して形成されたコア100を複数有してもよい。このようなプロセッサの一実施形態が図5に示される。] 図5
[0029] 上で簡潔に記載したように、プロセッサコア100は高信頼実行モードにおいて動作しうる。このモード中は、クラスタ150a〜bの各々の論理(ロジック)が、各クラスタが同じ命令ストリームを実行するロックステップ方式で動作するように構成されうる。エラーがない場合、すべてのステージにおいて、論理(ロジック)内の結果バスにおける結果が各クロックサイクルで等しくなければならない。このため、例えば、アルファ粒子の衝撃によって1つのクラスタの論理(ロジック)素子にエラーが発生した場合、所定のクロックサイクルにおける、影響を受けた論理(ロジック)素子の後の特定の位置で結果バスに出力される結果が、同じクロックサイクルにおける他のクラスタの対応する結果バスに出力される結果とは異なってしまう。]
[0030] 図1に示すように、各クラスタ150は、個々のシグニチャ生成部ユニット157と、個々の比較ユニット158とを備える。一実施形態では、動作中に、各ステージからの結果が結果バス上に生成されると、シグニチャ生成ユニット157a,157bは、個々の結果バス信号からシグニチャを生成するように構成されうる。比較ユニット158a,158bは、比較対象のシグニチャを比較し、一致しない場合にはCIU170に通知するように構成されうる。CIU170は、2つのクラスタ内の問題のある命令を、2つのクラスタ150の実行パイプラインからフラッシュさせ、再実行させるように構成されうる。一実施形態では、CIU170は、不一致が通知されるとマシンチェックフォルトを発生させうる。] 図1
[0031] 各種実施形態では、どのようなタイプのシグニチャまたは圧縮を使用して、結果のシグニチャを生成してもよい。結果のシグニチャまたはハッシュを作成するためのシグニチャまたは圧縮手法により、各クラスタおよびFPU160内部の比較ユニットに結線させるワイヤの本数を削減することができる。生成されるシグニチャが元の信号を表す可能性が高ければ、そのシグニチャは適切である。しかし、一実施形態では、効率的ではないものの、圧縮が行われず、すべての結果信号が比較されてもよいことが考察される。]
[0032] また、前述のように、2つのクラスタ150の実行論理(ロジック)が、L2キャッシュ180に実質的に同時にアクセスしなければならない。このため、CIU170内部の比較ユニット171は、L2アクセスが発生したタイミングをチェックし、L2アクセスが実質的に同時に発生しなかった場合は、CIU170が、上記のように2つのクラスタ中の問題のある命令をフラッシュさせ、再実行させるように構成されうる。]
[0033] 同様に、一方のクラスタで分岐ミス予測が発生した場合、これが他方のクラスタでも発生しなければならない。このため、CIU170内部の比較ユニット171は、2つのクラスタ間のミス予測状態をチェックするようにも構成されうる。]
[0034] 前述のように、共有リソースであるFPU160は、同じスレッドまたは浮動小数点命令ストリームを、同じ論理(ロジック)で連続して2回実行しうる。一実施形態では、上記のシグニチャ生成部と同様に、シグニチャ生成部157cは、それぞれのスレッド実行の結果からシグニチャを生成するように構成されうる。FPU160内部の「FP比較163」として示す比較ユニットは、各ストリームの実行結果がFPU160から出力されてリタイヤメントキューに記憶される前に、この結果を比較して、不一致が検出された場合に、CIU170に不一致を通知するように構成されうる。上記のように、CIU170は、結果をフラッシュして、スレッドを2回再実行させうる。]
[0035] このため、上記の論理エラー保護は、クラスタ150内では「クラスタレベル空間冗長性」、FPU170内では「スレッドレベル時間冗長性」と呼ぶことができる。図2に示すように、シグニチャの生成と結果の比較は、命令の実行と並列に、命令がリタイヤメントキュー(図2に示す)に記憶される前に行われる。したがって、命令がリタイヤまたは恒久的にコミットされる前に、エラーを検出することができ、これによりトランスペアレントなエラー回復が可能となる。また、比較が命令の実行と並列に行われるため、比較がクリティカルパスとならない。従来のチップレベルの冗長方式では、チェックされる結果がリタイヤメントキューから取得されるため、クリティカルパスとなる。また、残りのメモリ、レジスタおよび他のシステム論理(ロジック)を保護するために、必要に応じてEDC/ECC論理(ロジック)およびコードを使用してもよい。このため、空間冗長性、時間冗長性、およびEDC/ECCエラー保護冗長性の組み合わせにより、論理エラーから保護するためのハイブリッド冗長装置が得られる。] 図2
[0036] 図2を参照すると、プロセッサコア論理(ロジック)のエラー保護の一実施形態のアーキテクチャブロック図が示される。図1に示した構成要素に対応する構成要素は、簡潔を期するために同じ符号を付している。簡潔を期するために、各種構成要素が図2から省略されている。プロセッサコア100は、命令キャッシュと、命令フェッチおよびデコード論理(ロジック)とを有し、これらは、図2ではまとめて参照符号210で示されている。また、図1のように、プロセッサコア100は、デコードユニット210に結合された、整数実行クラスタ150と、「FPユニット160」として示す浮動小数点ユニットとを有する。また、プロセッサコア100は、個々の結果バスを介して、クラスタ150とFPユニット160とに結合されたリタイヤメントキュー290も有する。結果バスはシグニチャ生成部265にも結合され、シグニチャ生成部265は比較ユニット275に結合されている。また、シグニチャ生成部265は、プロセッサ状態情報295を受け取るように結合されている。] 図1 図2
[0037] 図に示した実施形態では、シグニチャ生成部265は、1つのユニットとして図示されている。しかし、シグニチャ生成部265が分散された機能でもよく、図1に示し、上で説明したように、複数のシグニチャ生成ブロックが存在してもよい。] 図1
[0038] 図に示した実施形態では、シグニチャ生成部265は、結果が各結果バスに出力されたときに、リタイヤメントキュー290に記憶される前に、結果のシグニチャまたはハッシュを生成するように構成される。このため、前述のように、エラー検査をクリティカルパス外で行うことができる。]
[0039] また、一実施形態では、生成された各シグニチャに、EFLAGSレジスタ値、レジスタファイルのパリティエラー状態、外部割込などを含むプロセッサ状態情報が含まれうる。シグニチャは、図1の説明で前述したように、比較のために比較ユニット275に送信されうる。プロセッサ状態情報をチェックすることにより、プロセッサの状態に関連するが、結果には現れない潜在的な問題を検出することができる。] 図1
[0040] 図に示した実施形態では、リタイヤメントキュー290は、ECC論理(ロジック)291によって保護されている。このため、チェックされた結果がリタイヤメントキュー290に記憶されると、その結果が、パリティまたは他のタイプのエラー検出/訂正符号によってソフトエラーから保護されるようになる。]
[0041] 図3に、図1,図2のプロセッサの実施形態の動作を示すフローチャートが示される。図1〜図3をまとめて参照し、図3のブロック300から参照すると、プロセッサコア100が高信頼実行モードで動作中であり、命令をフェッチする。前述のように、DEC140は、クラスタ150aと150bに同じ整数命令を実質的に同時にディスパッチする(ブロック305)。クラスタ150は、高信頼実行モードでは、ロックステップ方式で動作するように構成されている(ブロック310)。各種パイプラインステージの結果が利用可能になると、各クラスタにおいて、これらの結果に対応する信号が互いに比較される。より詳細には、各クラスタは、所定のステージにおける自身の結果に対応する信号を、そのステージにおける他のクラスタからの結果に対応する信号と比較しうる。クラスタ150はロックステップ方式で動作中であるため、結果が同じでなければならない。前述のように、信号を比較する前に、結果信号が、何らかの方法でシグニチャまたはハッシュに圧縮されうる。いずれかの比較ユニット158が不一致を検出した場合(ブロック320)、比較ユニット158はCIU170に通知し、CIU170はマシンチェックフォルトまたは別のタイプのフォルトを発生させて、命令を2つのクラスタからフラッシュさせ(ブロック325)再実行させる(ブロック330)。ブロック305の説明に関連して上で説明したように動作が続けられる。] 図1 図2 図3
[0042] ブロック320を再び参照すると、不一致が検出されない場合、結果がリタイヤメントキュー290に書き込まれうる(ブロック350)。なお、別の実施形態では、ほかのステージからの追加の結果がチェックされてもよい。このような実施形態では、各ステージについて、結果に対応する信号が不一致となるかどうかがチェックされ、不一致が発見された場合、命令がフラッシュされ、再実行されうる。しかし、不一致が検出されない場合、結果がリタイヤメントキュー290に書き込まれるか記憶されうる。]
[0043] ブロック300を再び参照すると、フェッチされた命令が浮動小数点命令の場合、DEC140は命令ストリームを含む浮動小数点スレッドをFPU160にディスパッチしうる(ブロック355)。例えば、スレッド実行の結果(または結果に対応する信号)が、FP比較ユニット163(ブロック360)内部に保持される。また、高信頼実行モードで動作中に、DEC140は、実行されたばかりの同じ浮動小数点命令ストリームをFPU160にディスパッチする(ブロック365)。FP比較ユニット163は、現在のスレッド実行の結果を、前回のスレッド実行の結果と比較する(ブロック370)。]
[0044] 不一致のない場合(ブロック375)、結果がFPU160から解放され、リタイヤメントキュー290に記憶される。しかし、FP比較ユニットが不一致を検出した場合(ブロック375)、スレッドの浮動小数点命令がフラッシュされ(ブロック380)、再度2回再実行される(ブロック385)。ブロック355の説明に関連して上で説明したように動作が続けられる。]
[0045] 前述のように、比較の結果を伝達するのに必要なワイヤの本数を削減するために、結果信号のシグニチャまたはハッシュが使用されうる。このため、この機能を実行するために、図1のシグニチャ生成部ブロック157と図2のシグニチャ生成部265が使用されうる。また、従来のシステムの多くとは異なり、図1〜図4に示したシグニチャの生成とその後の比較とを、処理と並列に(すなわち、結果が利用可能となったときに)実行することができる。このため、シグニチャの生成と比較を、処理のクリティカルパスから除くことができる。図4は、図1,図2のプロセッサコア100の別の実施形態の動作を示すフローチャートである。より詳細には、図4に示す動作は、図3に示す動作と同様である。しかし、図4に示す動作は、追加のステップを含む。このため、明瞭を期するために、図3に示したものとは異なる動作のみを以下に説明する。] 図1 図2 図3 図4
[0046] 図1〜図4をまとめて参照し、図4のブロック410から参照すると、プロセッサコア100が高信頼実行モードで動作中に、整数命令をフェッチして、各クラスタ150に同じ整数命令をディスパッチしている。各クラスタは、ロックステップ方式で命令を実行する。各クラスタの結果バス上の1つ以上の選択された位置において、結果バス信号が取得される。結果が利用可能になると、シグニチャ生成部(例えば、157a,157b,265)は、前述のように結果およびプロセッサ状態のシグニチャまたはハッシュを生成する(ブロック415)。生成されたシグニチャが他のクラスタへ送られ、各クラスタは、自身のシグニチャを、他のクラスタから受信したシグニチャと比較する(ブロック420)。シグニチャの生成とその後の比較は、命令実行と並列に行われる。比較の結果に応じて、結果がリタイヤメントキュー290に記憶されるか、あるいは命令がフラッシュされて再実行されうる(ブロック425〜440)。] 図1 図2 図3 図4
[0047] ブロック455を参照すると、図3のブロック355の説明で上記したように、DEC140は、浮動小数点命令スレッドをFPU160にディスパッチしうる。シグニチャ生成部157cは、浮動小数点命令ストリームの実行の結果から、シグニチャを生成する(ブロック460)。一実施形態では、結果がFP比較ユニット163に保持される。前述のように、DEC140は、実行されたばかりの同じ浮動小数点命令ストリームをFPU160にディスパッチする(ブロック465)。シグニチャ生成部157cは、浮動小数点命令ストリームの2回目の実行の結果から、シグニチャを生成する(ブロック470)。FP比較ユニット163は、現在のスレッド実行の結果を、保持している前回のスレッド実行の結果と比較する(ブロック475)。比較の結果に応じて、結果がリタイヤメントキュー290に記憶されるか、あるいはスレッド中の命令がフラッシュされて再実行されうる(ブロック480〜495)。] 図3
[0048] 図5を参照すると、プロセッサ500は、それぞれが前述のように構成されうる4つのコア100a〜dを有する。図に示した実施形態では、各コア100は、システムインタフェースユニット(SIU)510を介して、L3キャッシュ520、およびメモリコントローラ/周辺機器インタフェースユニット(MCU)530に結合されうる。図に示した実施形態では、高信頼実行モードセレクトピンが、SIU510と結合されうる。しかし、別の実施形態では、ピンが他のブロックと接続されてもよいと考えられる。一実施形態では、L3キャッシュ520は、任意の適切な構成を使用して実装され、コア100のL2キャッシュ180と、比較的低速のシステムメモリ540との間の中間キャッシュとして動作する一元的なキャッシュとして構成されうる。] 図5
[0049] MCU530は、プロセッサ500をシステムメモリ240と直接インタフェースするように構成されうる。例えば、MCU530は、1種類以上の種類の異なるランダムアクセスメモリ(RAM)をサポートするために必要な信号を生成するように構成され、このようなRAMには、デュアルデータレートシンクロナスダイナミックRAM(DDR SDRAM)、DDR−2 SDRAM、フルバッファデュアルインラインメモリ(FB−DIMM)、あるいはシステムメモリ540を実装するために使用されうる別の適切なタイプのメモリが挙げられる。システムメモリ540は、プロセッサ500の各種コア100によって操作されうる命令およびデータを保存するように構成され、システムメモリ540の内容が、上で説明した各種キャッシュによってキャッシュされうる。]
[0050] また、MCU530は、プロセッサ500への他のタイプのインタフェースもサポートすることができる。例えば、MCU530は、プロセッサ500を、グラフィック処理サブシステム(別個のグラフィックプロセッサ、グラフィックメモリおよび/または他のコンポーネントなどを含む)にインタフェースするために使用されうるアクセラレィティッド/アドバンスドグラフィックスポート(AGP)インタフェースの一種などの専用のグラフィックプロセッサインタフェースを実装しうる。また、MCU530は、1種類以上の周辺機器インタフェース(例えば、PCIExpressバス規格の一種)を実装するように構成され、プロセッサ500は、このインタフェースを使用して、ストレージデバイス、グラフィックデバイス、ネットワークデバイスなどの周辺機器とインタフェースすることができる。一部の実施形態では、他の種類のバスまたは相互接続を介して、プロセッサ500を他の周辺機器に結合するために、プロセッサ500の外部のセカンダリバスブリッジ(例えば、「サウスブリッジ」)が使用されうる。メモリコントローラと周辺機器インタフェースの機能が、MCU530を介してプロセッサ500内に統合されて図示されているが、別の実施形態では、これらの機能が、従来の「ノースブリッジ」構成を介してプロセッサ500の外部に実装されてもよい点に留意されたい。例えば、MCU530の各種機能が、プロセッサ500内に一体化されるのではなく、別個のチップセットを介して実装されてもよい。]
[0051] 上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって明らかであろう。下記の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。]
[0052] 本発明は、一般にプロセッサに利用可能である。]
权利要求:

請求項1
高信頼実行モードで動作するように構成されたプロセッサコア(100)であって、複数の整数実行ユニット(154a,154b)に同じ整数命令ストリームをディスパッチし、浮動小数点ユニット(160)に同じ浮動小数点命令スレッドを連続的にディスパッチするように構成された命令デコードユニット(140)であって、各クロックサイクル中に、前記複数の整数実行ユニットが同じ整数命令を実行するように、前記複数の整数実行ユニットはロックステップ方式で動作するように構成されており、前記浮動小数点ユニットは、前記同じ浮動小数点命令ストリームを2回実行するように構成されている命令デコードユニットと、前記複数の整数実行ユニットおよび前記浮動小数点ユニットに結合された比較ロジック(158a,158b,163)とを備え、前記比較ロジックは、前記同じ整数命令ストリーム中の命令がリタイヤする前に、前記複数の整数実行ユニットのそれぞれからの実行結果間の不一致を検出するように構成されており、前記浮動小数点ユニットが、前記浮動小数点命令ストリームの前記実行結果を、前記浮動小数点ユニットから転送する前に、前記比較ロジックは、各連続する浮動小数点命令ストリームの実行の結果間の不一致を検出するように更に構成されており、前記比較ロジックが不一致を検出すると、前記比較ロジックは、前記不一致を発生させた命令を再実行させるように構成されている、プロセッサコア。
請求項2
前記複数の整数実行ユニットは、それぞれ1つ以上の第1の整数実行ユニット(154a)と1つ以上の第1のスケジューラユニット(152a)とを有する複数の整数実行クラスタ(150a,150b)を備える、請求項1に記載のプロセッサコア。
請求項3
前記比較ロジックは、前記複数の整数実行クラスタの第1の実行クラスタの実行結果に対応する信号を、前記複数の整数実行クラスタの第2の実行クラスタの実行結果に対応する信号と比較するように更に構成されている、請求項2に記載のプロセッサコア。
請求項4
前記比較ロジックは、前記第1の実行クラスタ、前記第2の実行クラスタ、および前記浮動小数点ユニットに含まれる分散された比較機能を有する、請求項3に記載のプロセッサコア。
請求項5
前記複数の整数実行ユニットのそれぞれからの前記実行結果に対応する前記信号には、前記複数の整数実行ユニットのそれぞれの内部の結果バスにおいて伝達される結果信号から生成されるシグニチャが含まれる、請求項1に記載のプロセッサコア。
請求項6
プロセッサコア(100)において論理エラーから保護する方法であって、前記プロセッサコアを高信頼実行モードで動作させるステップと、複数の整数実行ユニットに同じ整数命令ストリームをディスパッチし(305)、浮動小数点ユニットに同じ浮動小数点命令ストリームを連続的にディスパッチするステップ(355,360)と、各クロックサイクル中に、前記複数の整数実行ユニットが同じ整数命令を実行するように、前記複数の整数実行ユニットをロックステップ方式で動作させるステップ(310)と、前記浮動小数点ユニットが前記同じ浮動小数点命令ストリームを2回実行するステップと、比較ロジックが比較を実行し(315)、前記同じ整数命令ストリーム中の命令がリタイヤする前に、前記複数の整数実行ユニットのそれぞれからの実行結果間の不一致を検出するステップ(320)と、前記比較ロジックが比較を実行し(365)、前記浮動小数点ユニットが、前記浮動小数点命令ストリームの前記実行結果を、前記浮動小数点ユニットから転送する前に、各連続する浮動小数点命令ストリームの実行の結果間の不一致を検出するステップ(370)と、不一致を検出すると前記不一致を発生させた命令を再実行させるステップとを含む、方法。
請求項7
前記複数の整数実行ユニットは、それぞれ1つ以上の第1の整数実行ユニット(154a)と1つ以上の第1のスケジューラユニット(152a)とを有する複数の整数実行クラスタ(150a,150b)を備える、請求項6に記載の方法。
請求項8
前記比較ロジックが、前記複数の整数実行クラスタの第1の実行クラスタの実行結果に対応する信号を、前記複数の整数実行クラスタの第2の実行クラスタの実行結果に対応する信号と比較するステップを更に含む、請求項7に記載の方法。
請求項9
前記比較ロジックは、前記第1の実行クラスタ、前記第2の実行クラスタ、および前記浮動小数点ユニットに含まれる分散された比較機能を有する、請求項8に記載の方法。
請求項10
前記複数の整数実行ユニットのそれぞれの内部の結果バスにおいて伝達される結果信号からシグニチャを生成することによって、前記複数の整数実行ユニットのそれぞれからの前記実行結果に対応する前記信号を生成するステップを更に含む、請求項6に記載の方法。
类似技术:
公开号 | 公开日 | 专利标题
JP6113705B2|2017-04-12|ロック命令を実行するためのプロセッサ及び装置
US9448936B2|2016-09-20|Concurrent store and load operations
EP2707794B1|2017-10-25|Suppression of control transfer instructions on incorrect speculative execution paths
Mukherjee et al.2002|Detailed design and evaluation of redundant multi-threading alternatives
USRE45487E1|2015-04-21|Processor having execution core sections operating at different clock rates
US10489158B2|2019-11-26|Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
EP2674856B1|2019-08-21|Zero cycle load instruction
Vijaykumar et al.2002|Transient-fault recovery using simultaneous multithreading
US6907520B2|2005-06-14|Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
TWI476595B|2015-03-11|用於交易式記憶體事件處置之硬體中使用者處置器的登錄
US8301849B2|2012-10-30|Transactional memory in out-of-order processors with XABORT having immediate argument
JP6526609B2|2019-06-05|プロセッサ
Ando et al.2003|A 1.3-GHz fifth-generation SPARC64 microprocessor
US9600289B2|2017-03-21|Load-store dependency predictor PC hashing
US7203817B2|2007-04-10|Power consumption reduction in a pipeline by stalling instruction issue on a load miss
TWI423127B|2014-01-11|指令處理方法以及其所適用之超純量管線微處理器
US7725685B2|2010-05-25|Intelligent SMT thread hang detect taking into account shared resource contention/blocking
US8930679B2|2015-01-06|Out-of-order execution microprocessor with reduced store collision load replay by making an issuing of a load instruction dependent upon a dependee instruction of a store instruction
US7415597B2|2008-08-19|Processor with dependence mechanism to predict whether a load is dependent on older store
US5884059A|1999-03-16|Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
Ray et al.2001|Dual use of superscalar datapath for transient-fault detection and recovery
US7743232B2|2010-06-22|Multiple-core processor with hierarchical microcode store
US7137028B2|2006-11-14|Method and apparatus for improving reliability in microprocessors
US5463745A|1995-10-31|Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US9128781B2|2015-09-08|Processor with memory race recorder to record thread interleavings in multi-threaded software
同族专利:
公开号 | 公开日
CN101933002A|2010-12-29|
KR20100108591A|2010-10-07|
WO2009089033A1|2009-07-16|
US20090183035A1|2009-07-16|
DE112009000117T5|2011-02-17|
GB2468465A|2010-09-08|
TW200945025A|2009-11-01|
GB201011944D0|2010-09-01|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]