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

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

Info

Publication number
JP2007519101A
JP2007519101A JP2006547476A JP2006547476A JP2007519101A JP 2007519101 A JP2007519101 A JP 2007519101A JP 2006547476 A JP2006547476 A JP 2006547476A JP 2006547476 A JP2006547476 A JP 2006547476A JP 2007519101 A JP2007519101 A JP 2007519101A
Authority
JP
Japan
Prior art keywords
thread
epoch
memory
instruction
trailing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006547476A
Other languages
English (en)
Other versions
JP4531060B2 (ja
Inventor
ラインハルト,スティーヴン,ケイ
ムケルジー,シュブヘンドゥ
エマー,ジョエル,エス
ウィーヴァー,クリストファー,ティー
Original Assignee
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2007519101A publication Critical patent/JP2007519101A/ja
Application granted granted Critical
Publication of JP4531060B2 publication Critical patent/JP4531060B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1492Generic software techniques for error detection or fault masking by run-time replication performed by the application software
    • G06F11/1494N-modular type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

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

Claims (10)

  1. リーディングスレッドとトレイリングスレッドとして、対応する命令スレッドをパラレルに実行するステップと、
    前記リーディングスレッドにおいて実行される命令からの結果と、前記トレイリングスレッドにおいて実行される命令からの結果とをメモリにセーブするステップと、
    前記メモリにセーブされた結果を比較するステップと、
    前記比較された結果に基づき、単独の命令セットをメモリ状態にコミットするステップと、
    前記コミットするステップの完了まで外部の更新を保留するステップと、
    から構成されることを特徴とする方法。
  2. 請求項1記載の方法であって、
    前記セーブされた結果は、投機的としてセーブされることを特徴とする方法。
  3. 請求項1記載の方法であって、
    前記命令は、エポック命令であることを特徴とする方法。
  4. 請求項3記載の方法であって、
    前記エポック中に前記リーディングスレッドにより読まれる対応する命令は、前記対応するトレイリングスレッドのロードが行われるとき、同一の値を含むことを特徴とする方法。
  5. リーディングスレッドとトレイリングスレッドとして、パラレルスレッドを実行する手段と、
    前記実行されたスレッドをメモリにセーブする手段と、
    前記メモリにセーブされた結果を比較する手段と、
    前記比較された結果に基づき、単独のスレッドセットをメモリ状態にコミットする手段と、
    前記コミットするステップの完了まで外部の更新を保留する手段と、
    から構成されることを特徴とする装置。
  6. 請求項5記載の装置であって、
    前記実行されたスレッドは、エポックスレッドであることを特徴とする装置。
  7. 請求項6記載の装置であって、
    各エポックは、2回実行されることを特徴とする装置。
  8. 請求項5記載の装置であって、
    前記エポック中に前記リーディングスレッドにより読まれる対応する命令は、前記対応するトレイリングスレッドのロードが行われるとき、同一の値を含むことを特徴とする装置。
  9. 請求項8記載の装置であって、
    前記バッファされたスレッドは、投機的として格納されることを特徴とする装置。
  10. 請求項9記載の装置であって、
    前記単独のセットは、前記比較結果が一致する場合、コミットされることを特徴とする装置。
JP2006547476A 2003-12-30 2004-12-22 投機的メモリサポートを利用した冗長なマルチスレッディングシステムにおける故障検出のための外部メモリの更新管理 Expired - Fee Related JP4531060B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/750,039 US7444497B2 (en) 2003-12-30 2003-12-30 Managing external memory updates for fault detection in redundant multithreading systems using speculative memory support
PCT/US2004/043649 WO2005066780A2 (en) 2003-12-30 2004-12-22 Managing external memory updates for fault detection in redundant multithreading systems using speculative memory support

Publications (2)

Publication Number Publication Date
JP2007519101A true JP2007519101A (ja) 2007-07-12
JP4531060B2 JP4531060B2 (ja) 2010-08-25

Family

ID=34739092

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547476A Expired - Fee Related JP4531060B2 (ja) 2003-12-30 2004-12-22 投機的メモリサポートを利用した冗長なマルチスレッディングシステムにおける故障検出のための外部メモリの更新管理

Country Status (5)

Country Link
US (1) US7444497B2 (ja)
JP (1) JP4531060B2 (ja)
CN (1) CN100480996C (ja)
DE (1) DE112004002576T5 (ja)
WO (1) WO2005066780A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2642392A1 (en) 2012-03-22 2013-09-25 Renesas Electronics Corporation Semiconductor integrated circuit device and system using the same

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7166847B2 (en) * 2004-06-30 2007-01-23 Intel Corporation System with response to cosmic ray detection
US7581152B2 (en) 2004-12-22 2009-08-25 Intel Corporation Fault free store data path for software implementation of redundant multithreading environments
US7818744B2 (en) * 2005-12-30 2010-10-19 Intel Corporation Apparatus and method for redundant software thread computation
US7444544B2 (en) * 2006-07-14 2008-10-28 International Business Machines Corporation Write filter cache method and apparatus for protecting the microprocessor core from soft errors
US8397052B2 (en) * 2009-08-19 2013-03-12 International Business Machines Corporation Version pressure feedback mechanisms for speculative versioning caches
US8521961B2 (en) * 2009-08-20 2013-08-27 International Business Machines Corporation Checkpointing in speculative versioning caches
US20110099439A1 (en) * 2009-10-23 2011-04-28 Infineon Technologies Ag Automatic diverse software generation for use in high integrity systems
US8250395B2 (en) * 2009-11-12 2012-08-21 International Business Machines Corporation Dynamic voltage and frequency scaling (DVFS) control for simultaneous multi-threading (SMT) processors
US20110208948A1 (en) * 2010-02-23 2011-08-25 Infineon Technologies Ag Reading to and writing from peripherals with temporally separated redundant processor execution
US8516356B2 (en) 2010-07-20 2013-08-20 Infineon Technologies Ag Real-time error detection by inverse processing
US8745440B1 (en) * 2010-09-21 2014-06-03 F5 Networks, Inc. Computer-implemented system and method for providing software fault tolerance
JP2014063258A (ja) 2012-09-20 2014-04-10 Renesas Electronics Corp 半導体集積回路装置及びマイクロコントローラ
CN103092714A (zh) * 2012-12-31 2013-05-08 哈尔滨工业大学 用于容错系统的处理器瞬时故障检测方法
GB2565338B (en) * 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
US11443820B2 (en) * 2018-01-23 2022-09-13 Microchip Technology Incorporated Memory device, memory address decoder, system, and related method for memory attack detection

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
JP2001521216A (ja) * 1997-10-23 2001-11-06 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチスレッド式プロセッサ・システムでのスレッド切替え制御
US20020023202A1 (en) * 2000-04-19 2002-02-21 Mukherjee Shubhendu S. Load value queue input replication in a simultaneous and redundantly threaded processor
WO2003003196A2 (en) * 2001-06-28 2003-01-09 Intel Corporation A multithreaded processor capable of implicit multithreaded execution of a single-thread program
JP2003015900A (ja) * 2001-06-28 2003-01-17 Hitachi Ltd 追走型多重化システム、及び追走により信頼性を高めるデータ処理方法
JP2003029986A (ja) * 2001-07-12 2003-01-31 Nec Corp プロセッサ間レジスタ継承方法及びその装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5415835A (en) 1992-09-16 1995-05-16 University Of New Mexico Method for fine-line interferometric lithography
JP3101594B2 (ja) 1997-11-06 2000-10-23 キヤノン株式会社 露光方法及び露光装置
JP4065468B2 (ja) 1998-06-30 2008-03-26 キヤノン株式会社 露光装置及びこれを用いたデバイスの製造方法
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
JP2001521216A (ja) * 1997-10-23 2001-11-06 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチスレッド式プロセッサ・システムでのスレッド切替え制御
US20020023202A1 (en) * 2000-04-19 2002-02-21 Mukherjee Shubhendu S. Load value queue input replication in a simultaneous and redundantly threaded processor
WO2003003196A2 (en) * 2001-06-28 2003-01-09 Intel Corporation A multithreaded processor capable of implicit multithreaded execution of a single-thread program
JP2003015900A (ja) * 2001-06-28 2003-01-17 Hitachi Ltd 追走型多重化システム、及び追走により信頼性を高めるデータ処理方法
JP2003029986A (ja) * 2001-07-12 2003-01-31 Nec Corp プロセッサ間レジスタ継承方法及びその装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2642392A1 (en) 2012-03-22 2013-09-25 Renesas Electronics Corporation Semiconductor integrated circuit device and system using the same
US9063907B2 (en) 2012-03-22 2015-06-23 Renesas Electronics Corporation Comparison for redundant threads

Also Published As

Publication number Publication date
JP4531060B2 (ja) 2010-08-25
US7444497B2 (en) 2008-10-28
CN100480996C (zh) 2009-04-22
WO2005066780A3 (en) 2006-05-04
US20050154944A1 (en) 2005-07-14
DE112004002576T5 (de) 2008-03-06
WO2005066780A2 (en) 2005-07-21
CN1902581A (zh) 2007-01-24

Similar Documents

Publication Publication Date Title
US20050193283A1 (en) Buffering unchecked stores for fault detection in redundant multithreading systems using speculative memory support
US7243262B2 (en) Incremental checkpointing in a multi-threaded architecture
US7308607B2 (en) Periodic checkpointing in a redundantly multi-threaded architecture
US7373548B2 (en) Hardware recovery in a multi-threaded architecture
US20080244354A1 (en) Apparatus and method for redundant multi-threading with recovery
US6598122B2 (en) Active load address buffer
KR101546033B1 (ko) Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행
JP4531060B2 (ja) 投機的メモリサポートを利用した冗長なマルチスレッディングシステムにおける故障検出のための外部メモリの更新管理
US6792525B2 (en) Input replicator for interrupts in a simultaneous and redundantly threaded processor
US8719807B2 (en) Handling precompiled binaries in a hardware accelerated software transactional memory system
US8132158B2 (en) Mechanism for software transactional memory commit/abort in unmanaged runtime environment
CN109891393B (zh) 使用检查器处理器的主处理器错误检测
JP4691105B2 (ja) 冗長マルチスレッド環境でのチェッカ命令の実行
US7861228B2 (en) Variable delay instruction for implementation of temporal redundancy
US10296312B2 (en) Methods, apparatuses, and systems for zero silent data corruption (ZDC) compiler technique
US9594648B2 (en) Controlling non-redundant execution in a redundant multithreading (RMT) processor
US10817369B2 (en) Apparatus and method for increasing resilience to faults
US20050108509A1 (en) Error detection method and system for processors that employs lockstepped concurrent threads
US20050283712A1 (en) Method and apparatus for reducing false error detection in a redundant multi-threaded system
Haas et al. Fault-tolerant execution on cots multi-core processors with hardware transactional memory support
US7581152B2 (en) Fault free store data path for software implementation of redundant multithreading environments
US10289332B2 (en) Apparatus and method for increasing resilience to faults
CN107168827B (zh) 基于检查点技术的双冗余流水线及容错方法
JP2006252548A (ja) 時間的冗長性を実施するための可変遅延命令
Yang et al. A light-weight cache-based fault detection and checkpointing scheme for MPSoCs enabling relaxed execution synchronization

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100402

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100506

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100601

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100608

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130618

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees