説明

投機的メモリサポートを利用した冗長なマルチスレッディングシステムにおける故障検出のための外部メモリの更新管理

投機的メモリサポートを利用して冗長マルチスレッディングシステムにおける故障検出のため、外部メモリ更新を管理するマルチスレッドアーキテクチャが開示される。特に、投機的メモリサポートを利用して冗長スレッドを外部の更新から分離することによって、方法は、SRTプロセッサ上のロード値の入力複製を提供する。これにより、本方法は、専用の構成が入力複製を提供する必要を回避する。

【発明の詳細な説明】
【発明の詳細な説明】
【0001】
[関連出願]
本米国特許出願は、2003年12月30日に出願された米国特許出願番号第10/749,618号「BUFFERING UNCHECKED STORES FOR FAULT DETECTION IN RMS USING SPECULATIVE MEMORY SUPPORT」に関連する。
【0002】
[背景情報]
プロセッサは、アルファ粒子や宇宙線の衝突によりもたらされる過渡故障(transient fault)に対してますます脆弱となってきている。これらの故障は、「ソフト」エラーと呼ばれるオペレーショナルエラーを導くかもしれない。なぜなら、これらのエラーはプロセッサのパーマネントな障害をもたらさないためである。中性子などの宇宙線粒子による衝突は、プロセッサの実際的な保護がないため特に重大である。過渡故障は、現在プロセッサベース装置の故障の90%以上を説明するものとなっている。
【0003】
トランジスタのサイズが縮小するに従い、各トランジスタは宇宙線の衝突に対して脆弱性が低くなってきている。しかしながら、電圧レベルの低下は、トランジスタサイズの縮小を伴い、対応するプロセッサのトランジスタ数の減少は、宇宙線の衝突又は他のソフトエラーの原因に対するプロセッサ全体の影響を指数的に増大させる。この問題を調整するため、マルチプロセッサシステムの選択された故障レートの実現は、各プロセッサのさらなる低い故障レートを要求する。このトレンドの結果として、典型的には、ミッションクリティカル(mission−critical)なアプリケーションに対して用意される故障検出及び回復技術は、他のプロセッサアプリケーションにますます適用可能となってきている。
【0004】
エラーが検出されないとき、SDC(Silent Data Corruption)が発生し、プロセッサがリセットされるまで持続しうるデータ値の損傷を招くかもしれない。SDCレートは、SDCイベントが発生するレートである。ソフトエラーは、例えば、パリティチェックを利用して検出されるが、訂正不可能なエラーである。
【0005】
故障検出サポートは、故障がパーマネントストレージに伝搬しうる前に、計算を停止することによりプロセッサのSDCレートを低下させることができる。例えば、パリティは、メモリ構造のシングル・ビットエラーに対するSDCを回避する周知の故障検出機構である。残念なことに、ハイパフォーマンスプロセッサのラッチ又はロジックにパリティを加えることは、サイクル時間及び全体的なパフォーマンスに悪影響を及ぼしうる。この結果、プロセッサ設計者は、プロセッサ内の故障を検出するため、冗長実行機構に依存してきた。
【0006】
現在の冗長実行システムは、一般に2つの同一のロックステップ(サイクル同期)プロセッサ上で同一のプログラムの同一のコピーを実行することにより、プロセッサ故障を検出する「ロックステッピング(lockstepping)」として知られる技術を利用する。各サイクルでは、2つのプロセッサに同一の入力が与えられ、チェッカー回路がこれらの出力を比較する。出力が一致しないと、チェッカーはエラーをフラグし、回復シーケンスを開始することができる。残念なことに、ロックステッピングは、パフォーマンスを向上させるのに利用可能なプロセッサリソースを浪費する。
【0007】
[詳細な説明]
以下の説明では、限定のためでなく説明のため、本発明の各種特徴の完全なる理解を提供するため、特定の構造、アーキテクチャ、インタフェース、技術などの具体的詳細が提供される。しかしながら、本発明の各種特徴がこれらの具体的詳細から逸脱した他の例により実施可能であるということは、本開示の利用する当業者にとって明らかであろう。ある例では、周知の装置、回路及び方法の説明は、不要な詳細により本発明の説明を不明りょうにしないように省略される。
【0008】
複製範囲(Sphere of Replication)
図1は、冗長マルチスレッドアーキテクチャの一実施例のブロック図である。冗長マルチスレッドアーキテクチャでは、独立したスレッドとしてプログラムの2つのコピーを実行することにより故障を検出することができる。各スレッドには同一の入力が与えられ、これらの出力がエラーが発生しているか判断するのに比較される。「複製範囲」としてここで呼ばれるコンセプトに関して、冗長マルチスレッド処理を説明することができる。複製範囲は、論理的又は物理的冗長処理の境界である。
【0009】
複製範囲130内のコンポーネント(例えば、リーディングスレッド110を実行するプロセッサとトレイリングスレッド120を実行するプロセッサなど)は、冗長実行の対象となる。他方、複製範囲130外のコンポーネント(例えば、メモリ150、RAID160など)は、冗長実行の対象外である。故障保護が、RAID160に対するパリティ及びメモリ150に対する誤り訂正符号などの他の技術により提供される。他の装置は、複製範囲130の外部に存在することが可能であり、及び/又は複製範囲130外の装置に対して故障保護を提供するため、他の技術が利用可能である。
【0010】
複製範囲130に入力されるデータは、当該データを複製し、データのコピーをリーディングスレッド110とトレイリングスレッド120に送る入力複製エージェント170を介して入力される。同様に、複製範囲130から出力されるデータは、当該データを比較し、エラーが発生しているか判断する出力比較エージェント180を介して出力される。複製範囲130の境界を変更することは、パフォーマンス対ハードウェア量のトレードオフをもたらす。例えば、メモリ150の複製は、ストア命令の出力比較を回避することによりメモリへのより高速なアクセスを可能にするが、システム内のメモリ量を2倍にすることによりシステムコストを増大させるであろう。
【0011】
一般に、「SoR−レジスタ」と「SoR−キャッシュ」と呼ぶことが可能な2つの複製範囲がある。SoR−レジスタアーキテクチャでは、レジスタファイルとキャッシュは、複製範囲外にある。SoR−レジスタ複製範囲からの出力は、故障について比較されるストアアドレス及びデータ(store address and data)並びにレジスタライト(register write)を含む。SoR−キャッシュアーキテクチャでは、命令及びデータキャッシュは複製範囲外であり、レジスタライト以外のすべてのストアアドレス及びデータは、故障のため比較される。
【0012】
SoR−キャッシュアーキテクチャは、ストアのみが(及びおそらく限られた個数の他の選択された命令)故障のため比較されるという効果を有し、それは、チェッカー帯域幅を減少させ、ストア処理を遅延させないことによりパフォーマンスを向上させる。他方、SoR−レジスタアーキテクチャは、故障について大部分の命令を比較することを必要とし、これは、より大きなチェッカー帯域幅を必要とし、ストア処理以前のすべての命令が故障がないということをチェッカーが判断するまで、ストア処理を遅延させることが可能である。SoR−キャッシュは、SoR−レジスタと同一の過渡故障カバレッジレベルを提供することが可能である。なぜなら、複製範囲の境界においてエラーとして明示されない故障はシステム状態を損傷させず、このため、効果的にマスクされるためである。
【0013】
故障回復を提供するため、各命令結果は、各命令に対応するチェックポイントを提供するよう比較されるべきである。従ってここでは、SoR−レジスタアーキテクチャが、より詳細に説明される。
【0014】
同時冗長スレッドアーキテクチャの概略
図2は、同時冗長スレッドアーキテクチャの一実施例のブロック図である。図2のアーキテクチャは、各命令からの出力又は結果がエラーを検出するため比較されるSoR−レジスタアーキテクチャである。
【0015】
リーディングスレッド210とトレイリングスレッド220は、リーディングスレッド210がトレイリングスレッド220が同一の命令を実行する前に命令を実行するように、異なる時点から実行される対応するスレッドを表す。一実施例では、リーディングスレッド210とトレイリングスレッド220は同一である。あるいは、リーディングスレッド210及び/又はトレイリングスレッド220は、コントロール又は他方のスレッドには含まれない他の情報を含むことが可能である。リーディングスレッド210とトレイリングスレッド220は、同一のプロセッサにより実行可能であり、又は異なるプロセッサにより実行可能である。
【0016】
命令アドレスは、命令複製キュー230を介しリーディングスレッド210からトレイリングスレッド220にわたされる。命令複製キュー230を介し命令をわたすことは、リーディングスレッド210における命令の実行とトレイリングスレッド220における同一の命令の実行との間の異なる時点又は「スラック(slack)」に対するコントロールを可能にする。
【0017】
入力データは、ソースレジスタ値キュー240を介しリーディングスレッド210からトレイリングスレッド220にわたされる。一実施例では、ソースレジスタ値キュー240は、リーディングスレッド210とトレイリングスレッド220の両方について入力データを複製する。出力データは、デスティネーションレジスタ値キュー250を介しトレイリングスレッド220からリーディングスレッド210にわたされる。一実施例では、デスティネーションレジスタ値キュー240は、リーディングスレッド210とトレイリングスレッド220の両方からの出力データを比較する。
【0018】
一実施例では、リーディングスレッド210は、トレイリングスレッド220の前に数百の命令を実行する。任意数の「スラック」の命令が利用可能である。一実施例では、トレイリングスレッド220の命令フェッチを低速化及び/又は遅延させることにより、スラックが行われる。他の実施例では、命令複製が命令複製キュー230により実行されない場合、命令複製キュー230又は命令複製機構によりスラックを行うことが可能である。
【0019】
同時冗長スレッドアーキテクチャにおけるスラックを発生させる技術に関するさらなる詳細は、Shunhendu S.Mukherjee、Michael Kontz及びSteven K.Reinhardtによる“Detailed Design and Evaluation of Redundant Multithreading Alternatives”(Proc.29th Int‘l Symp.on Computer Architecture,May 2002)と、Steven K.Reinhardt及びShunhendu S.Mukherjeeによる“Transient Fault Detection via Simultaneous Multithreading”(Proc.27th Int’l Symp.on Computer Architecture,June 2000)に見つけることできる。
【0020】
図3は、同時冗長スレッドアーキテクチャの一実施例の最小最大スラック関係を示す。図3の実施例は、上述のSoR−レジスタである。最小スラックは、キャッシュミス、実行からリタイアまでの遅延、ロードアドレス及び値をトレイリングスレッドに転送するのに生ずる遅延のトータルの遅延である。リーディングスレッドがキャッシュミスを被り、トレイリングスレッドからの対応するロードが最小スラック前に実行ポイントに到着する場合、トレイリングスレッドはストール(stall)される。
【0021】
同様に、最大スラックは、リーディングスレッドにおけるリタイアから故障検出までの遅延である。一般に、リーディングスレッドからのリタイアされた命令が、リタイアメント後にプロセッサに留まることを可能にするだけのある量のバッファリングが存在する。これは、リーディングスレッドとトレイリングスレッド220との間の最大スラックを規定する。バッファがいっぱいになると、トレイリングスレッドがバッファからさらなる命令を使用することを可能にするため、リーディングスレッドがストールされる。これにより、2つのスレッド間のスラックが最大スラックより大きい場合、全体的なパフォーマンスは低下する。
【0022】
投機的メモリサポート
投機的マルチスレッディングシステムでは、シーケンシャルプログラムは、エポック(epoch)又はタスク(task)と呼ばれる論理的にシーケンシャルなセグメントに分割される。SMTプロセッサ内の別々のスレッド又は別々のプロセッサコアにおいて、複数のエポックがパラレルに実行される。任意の与えられた時点において、最先のエポックのみが元のシーケンシャルプログラムの実行に対応する。他のすべてのエポックの実行は、過去の潜在的なコントロール及びデータハザードの投機に基づく。エポック間の投機ミスの場合、投機ミスのエポックがスカッシュ(squash)される。エポックが実行を完了し、最先のエポックになると、それの結果が当該計算のシーケンシャルアーキテクチャ状態にコミットされる。
【0023】
投機的マルチスレッディングシステムの一実施例では、コンパイラがヒューリスティックに基づき、コードを統計的にエポックにパーティションする。例えば、ループボディがしばしばエポックを構成するのに利用されてもよい。この場合、ループの複数回の繰り返しにより、パラレルに実行される実行時間に複数のエポックが生成される。
【0024】
本システムは、エポック間データハザードにこのパラレル実行中にシーケンシャルプログラムのセマティックを維持させる必要がある。一実施例では、コンパイラは、エポックの生成のためのものであり、レジスタベースのエポック間通信を明示的に管理することが可能である(おそらく、ハードウェアサポートにより)。メモリベースデータハザードは、(一般には)統計的に予測可能ではなく、従って、実行時間において処理される必要がある。可能なときにはそれらを満たし、そうでない場合には、違反を検出し、エポックをスカッシュするエポック間メモリデータ依存性を管理するメモリシステム拡張が、投機的マルチスレッディングシステムのキーコンポーネントとなる。
【0025】
図4は、エポック間メモリデータ依存性を管理するメモリシステム拡張を示す。違反を検出し、エポックをすことは、投機的マルチスレッディングシステムの重要な特徴である。一実施例では、ステップ400において、ロードはプログラムの論理的シーケンシャル実行におけるその直前の同一のアドレスにストアの値を返す必要がある。例えば、本システムは、以下の優先順位により返す必要がある。第1に、存在する場合には、同一エポック内の直近のストアからの値、第2に、論理的に最も近い論理的に先行するエポックの直近のストアからの値、最後に、コミットされているシーケンシャルメモリ状態からの値の順序でされる。さらに、ロードはすでに実行された論理的に後続するストアによる影響を受けてはならない。これは、メモリ参照がエポック内でシーケンシャルに実行されるようであり、これにより、論理的に後続するストアが論理的に連続するエポックに属することをプロセッサが保証すると仮定している。
【0026】
次にステップ410において、ストアは、何れかの論理的に後続するロードがすでに実行されているか検出しなければならない。実行されている場合、それはデータ依存性に違反している。その後、そのようなロードを含む任意のエポックと、潜在的に以降のエポックがスカッシュされる必要がある。ステップ420において、コミット処理がエポック中に実行されるエクスポーズ(exposed)されたストアセットを取得し、それらをコミットされたシーケンシャルメモリ状態にアトミックに適用する。エクスポーズされたストアは、エポック内のある位置への直近のストアである。非エクスポーズストア、すなわち、同一エポック内に上書きされた値を有するストアは、それらが実行されるエポックの外部においては観察することはできない。最後にステップ430において、アボート(abort)処理が、エポック中に実行されたストアセットを取得し、それらを破棄する。
【0027】
図5は、投機的メモリサポートを利用した冗長マルチスレッディングシステムにおける故障検出のため、外部メモリ更新から冗長実行を分離するブロック図である。外部メモリ更新から実行を分離することによって、ロード入力の正確な複製が提供される。
【0028】
本実施例では、リーディングスレッド510とトレイリングスレッド220は、パラレルにエポックを実行する。命令複製キュー530は、リーディングスレッド510からトレイリングスレッド520にエポックを送信する。リーディングスレッド510とトレイリングスレッド520は、複製範囲500を有する。
【0029】
あるエポックの個別の実行は、「インスタンス」というエポックとして知られる。エポックの2つのインスタンスは、RMTシステムのリーディングスレッド510とトレイリングスレッド520によりパラレルに実行される。実行されると、ストアはメモリシステム540に送信される。現在のエポック中にすでにアクセスされた位置を変更する外部エージェントからのメモリ変更は、適用されない。むしろ、それらはメモリ540に配置される。それらがメモリに配備されているため、当該エポック中にリーディングスレッドにより読まれる任意の位置は、対応するトレイリングスレッドのロードが発生するとき同一の値を有することとなる。これらのストアは、上述の投機的メモリサポートを利用して、投機的ストアとしてメモリシステムに保持される。エポックの両方のインスタンスが完了すると、550においてエクスポーズされたストアが比較される。比較されたストアが一致する場合、1つのエクスポーズストアセットが、アーキテクチャメモリ状態560にコミットされる。
【0030】
本実施例では、上述のように検出される状態は、現在実行中のエポック内で読まれた位置への外部書き込みである。投機的メモリシステムでは、この状態の出現は、誤った投機を示し、現在実行中のエポックがスカッシュされる。RMTシステムの現在のエポックの2つのインスタンスをスカッシュすることは、同様にダイバージェント(divergent)な実行を回避し、順方向の進行が保証可能である限り適切な解を表すであろう。しかしながら、緩和されたメモリコンシスタンシモデルによるRMTシステムでは、このイベントはスカッシュを生じさせる必要はない。外部に書き込まれた位置の以前の値が、エポックの終わりまで維持可能であり、両方のエポックインスタンス内の以降のロードに提供することが可能である場合、2つのインスタンスは、同一の実行パスに沿って続けられる。ステップ570において、外部書き込みは、現在のエポックの完了によりローカルエポックに視認可能とされる。
【0031】
投機的メモリシステムのコンフリクトするアクセス検出機構は、RMTシステムにおいてダイバージェントな実行を引き起こしうるイベントのスーパーセットを特定するかもしれない。具体的には、現在のエポック中にローカルに読まれたブロック内の位置への外部の書き込みが行われる3つの状況が存在し、これらはすべて投機的メモリシステムによりフラグされることとなる。
【0032】
第1の状況では、同一のキャッシュブロック内の外部書き込みされた位置は、ローカルプロセッサにより読まれる位置と異なる。この場合、投機的メモリシステムは、「フォースコンフリクト(false conflict)」を示す。この状況は、当該ブロック内のどのワードがアクセスされたか正確に示すための追加的な状態ビットを使用することにより回避することができる。
【0033】
第2の状況では、リーディングスレッドとトレイリングスレッドの両方がそれらの対応するアクセスを完了させた後(しかし、当該エポックの終了前)、外部書き込みが行われる。これら2つの冗長スレッドはすでに同一の値を抽出し、このためダイバージェンス(divergence)は行われない。
【0034】
第3の状況では、一方のスレッドがそれのアクセスを完了させた後であって、他方のスレッドがそれの対応するアクセスを完了させる前に、外部書き込みが行われる。この場合、それの到着時点において外部書き込みを適用することは、ダイバージェントな実行を引き起こすかもしれない。
【0035】
効果的には、検出されたアクセスコンフリクトにより、現在のエポックがスカッシュされる場合、最初の2つのケースと第3のケースを区別することは、必要以上に作業を廃棄することを回避するのにプラスであるかもしれない。コンフリクトする外部書き込みがエポック境界まで単に保留される場合、すべてのケースについて当該ポリシーを適用するためのペナルティは最小のものであるべきである。
【0036】
もとのLVQ設計に対する投機的メモリアプローチの他の効果は、メモリシステムに2回アクセスがされ、キャッシュアクセスパスを複製範囲にもたらし、RMTのフォルトカバレッジを拡張するということである。しかしながら、この効果は、メモリシステムの帯域幅要求を増大させるというコストをもたらす。
【0037】
さらに、現在の投機的メモリアプローチは、エポック内のすべてのロードをグループ化する。外部的な無効をエポック間のみに強制することは、先行するエポック内のすべてのロードの2つのインスタンスが完了したことを保証し、後続するエポック内のロードの何れのインスタンスも発生させない。
【0038】
以下の説明では、限定のためでなく説明のため、本発明の各種特徴の完全なる理解を提供するため、特定の構造、アーキテクチャ、インタフェース、技術などの具体的詳細が提供される。しかしながら、本発明の各種特徴がこれらの具体的詳細から逸脱した他の例により実施可能であるということは、本開示の利用する当業者にとって明らかであろう。ある例では、周知の装置、回路及び方法の説明は、不要な詳細により本発明の説明を不明りょうにしないように省略される。
【図面の簡単な説明】
【0039】
【図1】図1は、冗長スレッドによる冗長マルチスレッドアーキテクチャの一実施例のブロック図である。
【図2】図2は、同時冗長スレッドアーキテクチャの一実施例のブロック図である。
【図3】図3は、同時冗長マルチスレッドアーキテクチャの一実施例の最小最大スラック関係を示す。
【図4】図4は、エポック間メモリデータ依存性を管理するメモリシステム拡張のフロー図である。
【図5】図5は、冗長マルチスレッディングシステムにおける故障検出のための外部メモリ更新の一実施例のブロック図である。

【特許請求の範囲】
【請求項1】
リーディングスレッドとトレイリングスレッドとして、対応する命令スレッドをパラレルに実行するステップと、
前記リーディングスレッドにおいて実行される命令からの結果と、前記トレイリングスレッドにおいて実行される命令からの結果とをメモリにセーブするステップと、
前記メモリにセーブされた結果を比較するステップと、
前記比較された結果に基づき、単独の命令セットをメモリ状態にコミットするステップと、
前記コミットするステップの完了まで外部の更新を保留するステップと、
から構成されることを特徴とする方法。
【請求項2】
請求項1記載の方法であって、
前記セーブされた結果は、投機的としてセーブされることを特徴とする方法。
【請求項3】
請求項1記載の方法であって、
前記命令は、エポック命令であることを特徴とする方法。
【請求項4】
請求項3記載の方法であって、
前記エポック中に前記リーディングスレッドにより読まれる対応する命令は、前記対応するトレイリングスレッドのロードが行われるとき、同一の値を含むことを特徴とする方法。
【請求項5】
リーディングスレッドとトレイリングスレッドとして、パラレルスレッドを実行する手段と、
前記実行されたスレッドをメモリにセーブする手段と、
前記メモリにセーブされた結果を比較する手段と、
前記比較された結果に基づき、単独のスレッドセットをメモリ状態にコミットする手段と、
前記コミットするステップの完了まで外部の更新を保留する手段と、
から構成されることを特徴とする装置。
【請求項6】
請求項5記載の装置であって、
前記実行されたスレッドは、エポックスレッドであることを特徴とする装置。
【請求項7】
請求項6記載の装置であって、
各エポックは、2回実行されることを特徴とする装置。
【請求項8】
請求項5記載の装置であって、
前記エポック中に前記リーディングスレッドにより読まれる対応する命令は、前記対応するトレイリングスレッドのロードが行われるとき、同一の値を含むことを特徴とする装置。
【請求項9】
請求項8記載の装置であって、
前記バッファされたスレッドは、投機的として格納されることを特徴とする装置。
【請求項10】
請求項9記載の装置であって、
前記単独のセットは、前記比較結果が一致する場合、コミットされることを特徴とする装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2007−519101(P2007−519101A)
【公表日】平成19年7月12日(2007.7.12)
【国際特許分類】
【出願番号】特願2006−547476(P2006−547476)
【出願日】平成16年12月22日(2004.12.22)
【国際出願番号】PCT/US2004/043649
【国際公開番号】WO2005/066780
【国際公開日】平成17年7月21日(2005.7.21)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】