JP2012514257A - 冗長プロセスを同期させるためのステート履歴ストレージ - Google Patents

冗長プロセスを同期させるためのステート履歴ストレージ Download PDF

Info

Publication number
JP2012514257A
JP2012514257A JP2011543673A JP2011543673A JP2012514257A JP 2012514257 A JP2012514257 A JP 2012514257A JP 2011543673 A JP2011543673 A JP 2011543673A JP 2011543673 A JP2011543673 A JP 2011543673A JP 2012514257 A JP2012514257 A JP 2012514257A
Authority
JP
Japan
Prior art keywords
processor
state
instructions
storage
instruction
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.)
Pending
Application number
JP2011543673A
Other languages
English (en)
Inventor
エス. ムカージェ、シュブヘンドゥ
ビスワス、アリジット
ラッシュ、スティーブン
ラクナス、ポール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2012514257A publication Critical patent/JP2012514257A/ja
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1691Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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/46Multiprogramming arrangements
    • 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/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)

Abstract

ステート履歴を使用して冗長プロセッサを同期する本発明の実施形態を開示する。一実施形態において、装置は、2つのプロセッサ、各プロセッサに対するステートストレージ及び制御ロジックを備える。プロセッサはそれぞれ、同じ命令を実行する。ステートストレージは、プロセッサによって実行される命令それぞれに対する圧縮されたプロセッサステート情報を格納する。制御ロジックは、ステートストレージからのエントリに基づいて、2つのプロセッサを同期させる。
【選択図】図1

Description

本発明は、情報処理分野に関し、特に、情報処理システムにおけるエラーを低減する分野に関する。
集積回路製造技術の向上が進み、マイクロプロセッサ及びその他のデータ処理装置における高い集積度及び低い動作電圧が提供されるようになり、このようなデバイスの製造者及び使用者は、ソフトエラーに対してより注力するようになってきている。ソフトエラーは、アルファ粒子及び高エネルギー中性子が、集積回路にぶつかり、回路ノードに集積されている電荷を変化させてしてしまう時に発生する。電荷変化が十分に大きい場合には、ノードの電圧が、1つの論理状態を表す1のレベルから、異なる論理状態を表す別のレベルへと変化してしまう場合があり、このノードに格納されている情報が壊されてしまう。一般的に、集積レベルが高くなると、ソフトエラー率も高くなる。これは、より多くの回路が1つのダイに集積されるほど、そのダイの電圧ノードに粒子が衝突する可能性が高くなるからである。また、動作電圧が低くなると、互いに異なる論理状態を表す電圧レベル間の電位差は小さくなり、回路ノードにおける論理状態を変更するのに必要となるエネルギーが小さくなることから、より多くのソフトエラーが発生することとなる。
ソフトエラーを引き起こす特定の種類の粒子をブロックすることは難しいと考えられ、データ処理装置は多くの場合、ソフトエラーを検出する方法、及び時には、ソフトエラーを修正する方法を備える。これらのエラー低減方法は、冗長化を含む。冗長化するために、2つ以上のハードウェアコンテキストが、プログラム又は命令ストリームの同じコピーを実行する。ハードウェアコンテキストは、命令ストリームを実行する能力を有するあらゆるハードウェアによって構成されていてもよく、例えば、マルチスレッドプロセッサにおける論理プロセッサ、マルチコアプロセッサにおけるコア、マルチプロセッサシステムにおけるフルプロセッサ、又は、プロセッサ、システムメモリ及び入力/出力(I/O)デバイスを備える可能性のあるフルシステムによって構成されていてもよい。2以上のハードウェアコンテキストからの出力が比較され、異なっていれば、エラーハンドルメカニズムが起動されて、エラーが発生したか否かが判断され、及び/又はエラーに対処する。
冗長化の幾つかの実装形態では、2つ以上のハードウェアコンテキストが、ロックステップで動作する、すなわち、2つ以上のハードウェアコンテキストがそれぞれ、ストリーム内の同じ命令を、同時に実行する。冗長化の別の実装形態では、2つ以上のハードウェアコンテキストが、ロックステップでない又は互いに同期していない態様で、命令ストリームの同一のコピーを実行してもよい。すなわち、それぞれが、ストリーム内の別の命令を同時に実行してもよい。ハードウェアコンテキストが同期していない時点での入力又は割り込みの供給は、1のコンテキストからの出力と、別のコンテキストからの出力とを異ならせる場合があり、出力の不一致が実際のエラーから生じたものでないにもかかわらず、エラーハンドラを起動させてしまう場合がある。
本発明の一実施形態に係るステートストレージを含むシステムを示した図である。 本発明の一実施形態に係るステート履歴を使用した冗長プロセッサを同期する方法を示した図である。
本発明を、例を参照して以下に説明し、本発明は、添付の図面に限定されない。
ステート履歴を使用した冗長プロセッサを同期するための本発明の実施形態を記載する。以下の説明には、本発明の理解を促すために、プロセッサ及びシステムの構成といった数多くの詳細事項が記載される。しかしながら、これらの詳細事項が無くとも、本発明を実施可能であることは、当業者にとって明らかである。また、周知の構造、回路、及びその他の特徴については、本発明を不必要に曖昧にしてしまうことを避ける目的から、詳細に示していない。例えば、数多くの周知の方法を、本発明の実施形態において使用することができることから、冗長プロセッサの制御についての完全な説明は記載されていない。
背景技術の章で記載したように、データ処理装置におけるエラーの影響を低減させるために冗長性が利用される。冗長化のある実装形態では、2つ以上のプロセッサが、ロックステップでない又は互いに同期していない態様で、命令ストリームの同一のコピーを実行してもよい。すなわち、それぞれが、命令ストリームにおける別の命令を同時に実行してもよい。プロセッサが同期していない時点での入力又は割り込みの供給によって、エラーハンドラを起動させてしまうことを防ぐために、入力又は割り込みの供給の前に、プロセッサを同期しておく場合がある。
プロセッサを同期する1つの方法としては、命令ストリームを、連続した複数の"クォンタム(quantum)"に分割し、クォンタムのそれぞれは、特定の数の命令を含む。パフォーマンスカウンタ又はその他のメカニズムを使用して、命令のリタイアをカウントし、各クォンタムの最後で、ブレークポイント、コールバック、又はその他の制御フローイベントを発生させてもよい。このようなクォンタムブレイクポイントそれぞれにおいて、複数のプロセッサを同期させてもよく、命令ストリームにおける全く同じ命令境界で、入力又は割り込みが各ハードウェアコンテキストに供給されるようにしてもよい。同期は、プロセッサそれぞれを特別なモードで動作させることにより実行されてもよく、特別なモードは、命令、実行、シングルステップ及びブレークポイントの複雑な組み合わせで構成される。
プロセッサの同期を行う別の方法としては、カスタムオペレーティングシステムを使用することが考えられ、プロセッサはそれぞれ、割り込みを受信すると、命令ストリームにおける"ランデブー"ポイントに対する提案を、冗長制御ロジック内のハードウェアレジスタに書き込む。冗長制御ロジックは、許容されるランデブーポイントを判断し、それを各プロセッサに書き込む。そして、プロセッサはそれぞれ、同じランデブーポイントで割り込みが扱われるようにスケジュールする。ランデブーポイントは、オペレーティングシステム及びアプリケーション内に埋め込まれるカスタムコード内でのみスケジュールされるようにしてもよい。ランデブーポイントをスケジュールする機会が無く長い間実行されているプロセッサの場合には、命令ストリームを通じた高速転送、及び/又は1のプロセッサのステートを別のプロセッサにコピーするといった別の方法で、冗長プロセッサを同期する必要が生じる場合がある。
本発明の実施形態は、ステート履歴を使用してプロセッサを同期する方法を提供する。この方法は、上記した特別モードでプロセッサをそれぞれ実行させるより複雑でなく、上記したランデブーポイント方法のようにカスタムオペレーティングシステムを必要としないことから、本方法がより望ましい。
図1には、本発明の一実施形態に係る情報処理システム100が示されている。システム100は、プロセッサ110及び120、ステートストレージ130及び140、冗長ロジック150及びI/Oデバイス160を備える。システム100は、更なるプロセッサ、デバイス、メモリ、若しくはその他の構成要素又はロジックをさらに備えてもよい。
プロセッサ110及び120はそれぞれ、汎用マイクロプロセッサを含むいかなる種類のプロセッサであってもよく、例えば、Intel(登録商標)Pentium(登録商標)プロセッサシリーズのプロセッサ、Itanium(登録商標)プロセッサシリーズのプロセッサ、又はIntel(登録商標)社製のその他のプロセッサ、又は他社製のプロセッサ、若しくは、特定用途プロセッサ又はマイクロコントローラであってもよい。プロセッサ110及び120はそれぞれ、複数のスレッド及び複数の実行コアを、あらゆる組み合わせとして含んでもよい。
I/Oデバイス160は、あらゆる数のあらゆる種類のI/O、周辺機器、又はその他のデバイスを表しており、例えば、キーボード、マウス、トラックボール、ポインティングデバイス、モニタ、プリンタ、メディアカード、ネットワークインターフェース、情報記憶デバイス等であり、又は割り込み又はその他の入力をプロセッサに適用することのできるその他のデバイスである。I/Oデバイス160は、別々の構成要素として実現されていてもよいし、その他のデバイスに一体化した構成要素として含まれていてもよい。一実施形態では、I/Oデバイス150は、多機能I/O、周辺機器又はその他のデバイスの1つの機能を表している。
冗長ロジック150は、プロセッサ110及び120が、プロセッサ110、120及びシステム100内のその他の冗長プロセッサの冗長オペレーションを実行することを可能とする、補助する又はサポートするあらゆる回路、ロジック又はその他の構造を含んでもよい。図1の実施形態では、冗長ロジック150は、入力複製部152、出力比較部154、ステート比較部156、及び制御ロジック158を含む。入力複製部152は、I/Oデバイス150からプロセッサ110及び120に供給されるべき割り込み又はその他の入力を複製する。出力比較部154は、プロセッサ110からの出力を、プロセッサ120からの出力と比較する。ステート比較部156は、以下に説明するように、プロセッサ110からのステート情報と、プロセッサ120からのステート情報とを比較する。制御ロジック158は、入力複製、出力比較、出力不一致のハンドリング、エラーハンドラの起動、ステート情報の比較、及びプロセッサ110及び120の同期を制御し、また、プロセッサ110及び120の冗長オペレーションを制御する。入力複製、出力比較、出力不一致のハンドリング、エラーハンドラの起動、及び同期の制御については、本明細書に記載しない。また、プロセッサ110及び120の冗長オペレーションのその他の制御は、本明細書に特に記載しない限り、周知の方法に従って実行することができる。
ステートストレージ130及び140はそれぞれ、プロセッサ110及び120に対するステート情報を格納する。ステートストレージ130及び140は、スタティック・ランダム・アクセス・メモリのようなあらゆる種類のメモリ、又は、その他の種類の情報記憶媒体を含んでもよい。ステートストレージ130及び140は、プロセッサ110及び120に含まれていてもよいし、プロセッサ110及び120とは別個に設けられていてもよく、又は、互いに組み合わせられていてもよいし、互いに別々に設けられていてもよい。
ステートストレージ130は、命令それぞれに対するエントリを、クォンタムのような少なくとも命令ストリームの一部分に格納する。例えば、クォンタムが、1,000個の命令を含む場合には、ステートストレージ130は、1,000個のエントリに対する記憶領域を含む。同様に、ステートストレージ140は、命令それぞれに対するエントリを、クォンタムのような少なくとも命令ストリームの一部分に格納する。エントリはそれぞれ、以下に説明するように、命令に対応するプロセッサのステートに関する情報を含む。したがって、命令ストリームのあらゆるクォンタムについて、ステートストレージ130は、プロセッサ110のステートの履歴を格納し、ステートストレージ140は、プロセッサ120のステートの履歴を格納してもよい。エントリ又はエントリロケーションはそれぞれ、インデックス、識別子、又はエントリと命令とを関連付けるその他の手段をさらに含んでもよく、及び/又は関連付けが、ステートストレージ130及び140によって非明示的に示されてもよい。例えば、ステートストレージ130における第1エントリロケーションは、クォンタム単位のリタイアされた第1命令等と関連付けられていてもよい。
一実施形態において、プロセッサ110が命令をリタイアする又はコミットする都度、ステートストレージ130は、プロセッサ110の全体的なステートを表すエントリを格納してもよく、プロセッサ120が命令をリタイアする又はコミットする都度、ステートストレージ140は、プロセッサ120の全体的なステートを表すエントリを格納してもよい。格納される情報は、プロセッサの状態を反映しており、例えば、プロセッサ110のステートがプロセッサ120のステートと一致するかを判断するために、その他のプロセッサのステートを表す情報との比較を行ってもよい。例えば、情報は、全てのプロセッサレジスタ又はプロセッサ内のその他のストレージロケーションの内容を含む又はその内容から導き出されたものであってもよい。
ステートストレージ130及び140のサイズ、及びステート比較部156の複雑性を低減するために、リタイアされた命令それぞれに対応するステート情報を格納する前に、デジタル署名、ハッシュ値、指紋、又はその他の周知の方法に従って、圧縮してもよい。一実施形態において、リタイアされた命令に対応するステート情報は、前にリタイアされた命令のステートからの変化のみを含むようにしてもよい。圧縮又はコーディング、及び/又はステート情報の格納を制御するため、プロセッサ110及び120はそれぞれ、指紋生成ロジック112及び122含んでもよい。
ステート比較部154の実装は、ステート130及び140のエントリのフォーマットに依存する。例えば、エントリが、巡回冗長検査機能を使用して計算された16ビットの指紋である場合には、前のステートに対する全ての変更を集約した後、16ビット比較部を使用して2つのエントリの比較が行われる。
図2には、本発明の一実施形態に係るステート履歴を使用したプロセッサの同期を行うための方法200が示されている。図1のシステムの実施形態を参照して、図2の方法の実施形態が説明されるが、本方法の実施形態は、この点に関して限定されない。方法200の全て又は一部は、制御ロジック158、又はシステム100内の又はシステム100に受け入れられるその他の制御ロジックによって実行される、又はその実行が発生する。制御ロジックは、あらゆる種類の回路、ロジック、若しくは、マイクロコード、配線で接続されたロジック、プログラム可能ロジック、又はファームウェアのようなその他の構造を含んでもよい。
ボックス210では、プロセッサ110が、命令ストリーム又は命令ストリームの一部の実行を開始する。ボックス212では、プロセッサ112が、冗長的に命令ストリーム又は命令ストリームの一部の実行を開始する、すなわち、プロセッサ112は、プロセッサ110がボックス210において命令ストリームの実行を開始したのと同じステートであって、命令ストリームの同じ命令境界において実行を開始する。
ボックス220及び222では、プロセッサ110及び112はそれぞれ、冗長的に命令ストリームの実行を続けるが、ロックステップ的又は互いに同期した形態ではない。すなわち、プロセッサはそれぞれ、他のプロセッサとは独立して命令を実行可能となっており、ストリームにおいて異なる命令を同時に実行してもよく、及び/又はストリームにおける同じ命令を異なるタイミングで実行してもよい。例えば、命令の実行又はリタイアメントのタイミング及び/又は順番は、プロセッサ間で異なってもよい。プロセッサ110及び112の冗長オペレーションの間に出力不一致が生じた場合には、周知の方法に従ってそれに対処してもよい。
さらに、ボックス220では、プロセッサ110によって命令がリタイアされる都度、指紋生成ロジック112によってプロセッサステートの指紋が生成され、ステートストレージ130に格納される。同様に、ボックス222では、プロセッサ120によって命令がリタイアされる都度、指紋生成ロジック122によってプロセッサステートの指紋が生成され、ステートストレージ140に格納される。
ボックス230では、プロセッサ110が、クォンタムにおける最後の命令をリタイアする。ボックス232では、プロセッサ112が、クォンタムにおける最後の命令をリタイアする。
ボックス240では、プロセッサ110のステート履歴を、プロセッサ120のステート履歴と比較して、最新の一致を見つける。ボックス240では、ステートストレージ130内の少なくとも1つのエントリと、ステートストレージ140内の少なくとも1つのエントリとの比較が、様々な方法に従って実行されてもよい。一実施形態では、ステートストレージ130における複数のエントリからなるグループ内の各エントリは、並行して、ステートストレージ140における複数のエントリからなるグループ内の各エントリと比較されてもよい。1つ以上の一致が発見された場合には、最も新しいエントリに伴う一致を選択してもよい。別の実施形態では、ステートストレージ130又は140のうちの1つにおける複数のエントリと、ステートストレージ130又は140のうちの他方における複数のエントリとを、最新のエントリから開始して、一致が見つかるまで、一度に比較を行ってもよい。例えば、ステートストレージ130における最新のエントリを、まずステートストレージ140における最新のエントリと比較し、ステートストレージ140における次に新しいエントリと比較を行うといったように比較を続け、一致が発見できなかった場合には、ステートストレージ130における次に新しいエントリを、ステートストレージ140における最新のエントリと比較し、そして、ステートストレージ140における次に新しいエントリと比較を行っていくようにしてもよい。
ボックス240において一致が発見されなかった場合には、ボックス250に進み、エラーハンドラが起動される。
ボックス240において、一致が見つかった場合には、ボックス260に進み、ボックス240で発見された一致に基づいて、プロセッサ110及び120が、同じ命令境界において同期される。エントリが一致していることから、これらは共にリタイアされた同じ命令と関連付けられており、必要であれば、プロセッサは、過去のステートを回復することを含む周知の方法に従ってバックアップ、ロールバックされていてもよく、又は、同じ命令境界から実行を開始するように設定されてもよい。本発明の実施形態は、プロセッサ110及び120のそれぞれの過去のステートを回復させるために、ステートストレージ130及び140からの情報を使用することを含む。
ボックス270では、割り込み又は入力が、プロセッサ110及び120に供給される。
方法200は、ボックス270から、ボックス210及びボックス212へと継続し、ボックス260において同期され、プロセッサ110及び112は、同じリタイア命令境界から実行を開始してもよい。したがって、割り込み又は入力の供給のタイミングは、プロセッサ110及びプロセッサ120間で異なることがない。
本発明の範囲内において、図2に示される方法は、異なる順序で実行されてもよく、また、図示されているボックスを省略したり、更なるボックスを追加したりしてもよく、ボックスの順序の変更、省略及び追加の組み合わせを行ってもよい。
プロセッサ110及び120、又はその他の構成要素、又は本発明の実施形態に従って設計された構成要素の一部は、開発から製造シミュレーションの様々な段階において設計されたものであってもよい。設計を表すデータは、複数の態様での設計を表していてもよい。シミュレーションで利用しやすいように、ハードウェアは、初めは、ハードウェア記述言語、又は別の機能的記述言語を使用して表されていてもよい。さらに又はこれに替えて、設計プロセスのある段階において、ロジック及び/又はトランジスタゲートを有する回路レベルを生成してもよい。さらに、ある段階で、設計の多くは、様々なデバイスの物理的配置を表すデータを使用してモデル化されるレベルに達する。従来の半導体製造技術が適用される場合には、デバイス配置モデルを表すデータは、集積回路を製造するのに使用されるマスクに対する様々なマスク層において、様々な構造が存在するか否かを規定するデータであってもよい。
設計のあらゆる表現において、データは、いかなる形式の機械可読媒体に格納されてもよい。このような情報を送信するべく変調された又は生成された光波又は電波、メモリ、又はディスクのような磁気又は光記憶媒体が、機械可読媒体であってもよい。これらの媒体は、設計情報、又は本発明の実施形態で使用されるその他の情報を"搬送する"又は"示す"のに使用されてもよい。情報を示す又は伴う電気搬送波が送信され、この電気信号のコピー、バッファ又は再送が行われる場合においては、新しいコピーが生成される。したがって、通信事業者又はネットワークプロバイダが行うアクションは、本発明の技術を実現するべく、物品、例えば、搬送波のコピーを形成することで構成されていてもよい。
以上、ステート履歴を使用して冗長プロセッサを同期させる本発明の実施形態について記載した。特定の実施形態が図面及び明細書に示されたが、これらの実施形態は、単なる例示に過ぎず、本発明を限定するものではなく、本明細書を理解することにより当業者は様々なその他の変形を考え得ることから、本発明は、明細書に記載された特定の構造及び配置に限定されない。成長が早く、技術発展が容易に予測できない技術分野においては、開示された実施形態は、本発明の原理又は添付の特許請求の範囲から逸脱することなく、技術発展を可能とするべくその詳細事項及び配置において適宜変更可能である。

Claims (20)

  1. 複数の命令を実行する第1プロセッサと、
    前記複数の命令から前記第1プロセッサが実行する命令のそれぞれに対応する、第1プロセッサステート情報を格納する第1ストレージと、
    前記複数の命令を実行する第2プロセッサと、
    前記複数の命令から前記第2プロセッサが実行する命令のそれぞれに対応する、第2プロセッサステート情報を格納する第2ストレージと、
    前記第1ストレージからの少なくとも1つのエントリ及び前記第2ストレージからの少なくとも1つのエントリに基づいて、前記第1プロセッサと前記第2プロセッサとを同期する制御部と
    を備える装置。
  2. 前記第1ストレージは、前記複数の命令から前記第1プロセッサがリタイアした命令それぞれに対する第1プロセッサステート情報を格納し、
    前記第2ストレージは、前記複数の命令から前記第2プロセッサがリタイアした命令それぞれに対する第2プロセッサステート情報を格納する請求項1に記載の装置。
  3. 前記第1ストレージ内のエントリと、前記第2ストレージ内のエントリとを比較する比較部を更に備える請求項1に記載の装置。
  4. 前記制御部は、前記比較部が一致を示すのに基づいて、前記第1プロセッサと前記第2プロセッサとを同期する請求項3に記載の装置。
  5. 前記複数の命令は、1つの命令ストリームにおける命令のクォンタムである請求項1に記載の装置。
  6. 前記制御部は、同一の命令境界から実行を開始させるべく、前記第1プロセッサと前記第2プロセッサとを同期させる請求項1に記載の装置。
  7. 前記第1プロセッサ及び前記第2プロセッサに供給される入力を複製する入力複製部を更に備える請求項6に記載の装置。
  8. 前記制御部は、前記第1プロセッサと前記第2プロセッサとを同期した後に、複製された入力を前記第1プロセッサ及び前記第2プロセッサに供給する請求項7に記載の装置。
  9. 前記複製された入力は、割り込みである請求項8に記載の装置。
  10. 前記制御部は、同一ステートから実行を開始させるべく、前記第1プロセッサ及び前記第2プロセッサを同期させる請求項1に記載の装置。
  11. 前記制御部は、前記第1ストレージから前記第1プロセッサのステート及び前記第2ストレージから前記第2プロセッサのステートのうちの1つを回復させることにより、前記同一ステートから実行を開始させるべく前記第1プロセッサと前記第2プロセッサとを同期させる請求項10に記載の装置。
  12. 前記第1プロセッサは、前記第1プロセッサステート情報を圧縮し格納する第1ステートストレージロジックを有し、
    前記第2プロセッサは、前記第2プロセッサステート情報を圧縮し格納する第2ステートストレージロジックを有する請求項1に記載の装置。
  13. 複数の命令を第1プロセッサによって実行する段階と、
    前記複数の命令を第2プロセッサによって実行する段階と、
    前記複数の命令それぞれのリタイア状態における前記第1プロセッサのステートを表す情報を、前記第1プロセッサによって格納する段階と、
    前記複数の命令それぞれのリタイア状態における前記第2プロセッサのステートを表す情報を、前記第2プロセッサによって格納する段階と、
    格納された前記第1プロセッサの過去のステートを表す情報、及び格納された前記第2プロセッサの過去のステートを表す情報に基づいて、前記第1プロセッサと前記第2プロセッサとを同期させる段階と
    を備える方法。
  14. 格納された前記第1プロセッサの過去のステートを表す情報と、格納された前記第2プロセッサの過去のステートを表す情報とを比較する段階を更に備える請求項13に記載の方法。
  15. 前記同期させる段階は、格納された前記第1プロセッサの過去のステートを表す情報と、格納された前記第2プロセッサの過去のステートを表す情報との間の一致に基づいて行われる請求項14に記載の方法。
  16. 前記同期させる段階は、前記第1プロセッサ及び前記第2プロセッサを、前記一致によって示される命令境界から実行を開始させることを含む請求項15に記載の方法。
  17. 同期させた後であって、前記一致によって示される前記命令境界から実行を開始させる前に、前記第1プロセッサ及び前記第2プロセッサに入力を供給する段階を更に備える請求項16に記載の方法。
  18. 前記同期させる段階は、格納された前記第1プロセッサの過去のステートを表す情報から前記第1プロセッサのステート、及び格納された前記第2プロセッサの過去のステートを表す情報から前記第2プロセッサのステートのうちの1つを回復させる段階を有する請求項17に記載の方法。
  19. 複数の命令を実行する実行コアと、
    前記実行コアによってリタイアされた命令それぞれに対するステート情報を格納するストレージと
    を備えるプロセッサであって、
    前記ストレージは、前記プロセッサと冗長プロセッサとを同期させる制御部にアクセス可能であるプロセッサ。
  20. 前記ステート情報を格納するロジックを更に備える請求項19に記載のプロセッサ。
JP2011543673A 2008-12-31 2009-12-23 冗長プロセスを同期させるためのステート履歴ストレージ Pending JP2012514257A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/347,961 US8171328B2 (en) 2008-12-31 2008-12-31 State history storage for synchronizing redundant processors
US12/347,961 2008-12-31
PCT/US2009/069384 WO2010078187A2 (en) 2008-12-31 2009-12-23 State history storage for synchronizing redundant processors

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014076695A Division JP6272719B2 (ja) 2008-12-31 2014-04-03 装置、方法、及び、プロセッサ

Publications (1)

Publication Number Publication Date
JP2012514257A true JP2012514257A (ja) 2012-06-21

Family

ID=42286373

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011543673A Pending JP2012514257A (ja) 2008-12-31 2009-12-23 冗長プロセスを同期させるためのステート履歴ストレージ
JP2014076695A Active JP6272719B2 (ja) 2008-12-31 2014-04-03 装置、方法、及び、プロセッサ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014076695A Active JP6272719B2 (ja) 2008-12-31 2014-04-03 装置、方法、及び、プロセッサ

Country Status (6)

Country Link
US (1) US8171328B2 (ja)
JP (2) JP2012514257A (ja)
KR (3) KR101287266B1 (ja)
CN (1) CN101876929B (ja)
TW (1) TWI443577B (ja)
WO (1) WO2010078187A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018125044A (ja) * 2012-12-13 2018-08-09 コーヒレント・ロジックス・インコーポレーテッド 改善された二次相互接続ネットワークを備えたマルチプロセッサシステム
WO2020016964A1 (ja) * 2018-07-18 2020-01-23 サンケン電気株式会社 マルチコアシステム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8171328B2 (en) 2008-12-31 2012-05-01 Intel Corporation State history storage for synchronizing redundant processors
US20100318746A1 (en) * 2009-06-12 2010-12-16 Seakr Engineering, Incorporated Memory change track logging
DE102009054637A1 (de) * 2009-12-15 2011-06-16 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US8788871B2 (en) * 2011-06-28 2014-07-22 International Business Machines Corporation Unified, workload-optimized, adaptive RAS for hybrid systems
US8806269B2 (en) * 2011-06-28 2014-08-12 International Business Machines Corporation Unified, workload-optimized, adaptive RAS for hybrid systems
US8935694B2 (en) * 2012-01-23 2015-01-13 International Business Machines Corporation System and method for selectively saving and restoring state of branch prediction logic through separate hypervisor-mode and guest-mode and/or user-mode instructions
US9032191B2 (en) 2012-01-23 2015-05-12 International Business Machines Corporation Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels
US8880961B2 (en) * 2012-01-31 2014-11-04 Infineon Technologies Ag System and method of computation by signature analysis
US8799710B2 (en) * 2012-06-28 2014-08-05 International Business Machines Corporation 3-D stacked multiprocessor structures and methods to enable reliable operation of processors at speeds above specified limits
US9274904B2 (en) * 2013-06-18 2016-03-01 Advanced Micro Devices, Inc. Software only inter-compute unit redundant multithreading for GPUs
US9959284B2 (en) * 2014-01-10 2018-05-01 Appex Networks Holding Limited System and method for synchronizing history data for compression and decompression
US10346272B2 (en) * 2016-11-01 2019-07-09 At&T Intellectual Property I, L.P. Failure management for data streaming processing system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02202638A (ja) * 1987-11-09 1990-08-10 Tandem Comput Inc 多重プロセッサを備えたフォールトトレラントなコンピュータシステム
US5226152A (en) * 1990-12-07 1993-07-06 Motorola, Inc. Functional lockstep arrangement for redundant processors
JP2004046599A (ja) * 2002-07-12 2004-02-12 Nec Corp フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
JP2004318702A (ja) * 2003-04-18 2004-11-11 Nec Corp 情報処理装置
JP2006209769A (ja) * 2005-01-25 2006-08-10 Hewlett-Packard Development Co Lp 実行される命令に関する情報を交換することによってユーザプログラムの複製コピーの実行ポイントをアラインメントする方法及びシステム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04352240A (ja) * 1991-05-30 1992-12-07 Nec Corp 情報処理装置
JPH0652004A (ja) * 1992-08-04 1994-02-25 Yokogawa Electric Corp ペアcpu装置
US5790776A (en) * 1992-12-17 1998-08-04 Tandem Computers Incorporated Apparatus for detecting divergence between a pair of duplexed, synchronized processor elements
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
US5896523A (en) * 1997-06-04 1999-04-20 Marathon Technologies Corporation Loosely-coupled, synchronized execution
US6948092B2 (en) * 1998-12-10 2005-09-20 Hewlett-Packard Development Company, L.P. System recovery from errors for processor and associated components
US6751749B2 (en) * 2001-02-22 2004-06-15 International Business Machines Corporation Method and apparatus for computer system reliability
US20040111593A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Interrupt handler prediction method and system
US7747932B2 (en) * 2005-06-30 2010-06-29 Intel Corporation Reducing the uncorrectable error rate in a lockstepped dual-modular redundancy system
US8527741B2 (en) * 2005-07-05 2013-09-03 Viasat, Inc. System for selectively synchronizing high-assurance software tasks on multiple processors at a software routine level
WO2007113346A1 (es) 2006-03-31 2007-10-11 Intel Corporation Deteccion de errores transitorios mediante nueva ejecucion selectiva
US20080126819A1 (en) 2006-11-29 2008-05-29 International Business Machines Corporation Method for dynamic redundancy of processing units
FR2912526B1 (fr) * 2007-02-13 2009-04-17 Thales Sa Procede de maintien du synchronisme d'execution entre plusieurs processeurs asynchrones fonctionnant en parallele de maniere redondante.
US8171328B2 (en) 2008-12-31 2012-05-01 Intel Corporation State history storage for synchronizing redundant processors

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02202638A (ja) * 1987-11-09 1990-08-10 Tandem Comput Inc 多重プロセッサを備えたフォールトトレラントなコンピュータシステム
US5226152A (en) * 1990-12-07 1993-07-06 Motorola, Inc. Functional lockstep arrangement for redundant processors
JP2004046599A (ja) * 2002-07-12 2004-02-12 Nec Corp フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
JP2004318702A (ja) * 2003-04-18 2004-11-11 Nec Corp 情報処理装置
JP2006209769A (ja) * 2005-01-25 2006-08-10 Hewlett-Packard Development Co Lp 実行される命令に関する情報を交換することによってユーザプログラムの複製コピーの実行ポイントをアラインメントする方法及びシステム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018125044A (ja) * 2012-12-13 2018-08-09 コーヒレント・ロジックス・インコーポレーテッド 改善された二次相互接続ネットワークを備えたマルチプロセッサシステム
WO2020016964A1 (ja) * 2018-07-18 2020-01-23 サンケン電気株式会社 マルチコアシステム
US11327853B2 (en) 2018-07-18 2022-05-10 Sanken Electric, Ltd. Multicore system for determining processor state abnormality based on a comparison with a separate checker processor

Also Published As

Publication number Publication date
JP2014160483A (ja) 2014-09-04
US20100169693A1 (en) 2010-07-01
KR20110050717A (ko) 2011-05-16
KR101287266B1 (ko) 2013-07-17
CN101876929B (zh) 2014-07-23
KR101264494B1 (ko) 2013-05-14
TWI443577B (zh) 2014-07-01
KR20130012591A (ko) 2013-02-04
US8171328B2 (en) 2012-05-01
CN101876929A (zh) 2010-11-03
WO2010078187A3 (en) 2010-10-21
WO2010078187A2 (en) 2010-07-08
KR20120123613A (ko) 2012-11-08
JP6272719B2 (ja) 2018-01-31
KR101351183B1 (ko) 2014-01-14
TW201030611A (en) 2010-08-16

Similar Documents

Publication Publication Date Title
JP6272719B2 (ja) 装置、方法、及び、プロセッサ
CN106933501B (zh) 用于创建复制品的方法、系统和计算机程序产品
KR101546033B1 (ko) Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행
US7373548B2 (en) Hardware recovery in a multi-threaded architecture
US7308607B2 (en) Periodic checkpointing in a redundantly multi-threaded architecture
US10601890B2 (en) Recoverable stream processing
US20110082832A1 (en) Parallelized backup and restore process and system
Benoit et al. Assessing general-purpose algorithms to cope with fail-stop and silent errors
US20130246358A1 (en) Online verification of a standby database in log shipping physical replication environments
US20140207738A1 (en) Recovery for long running multithreaded processes
JP2005166057A (ja) 障害検出コンピュータシステム
Levitin et al. Dynamic checkpointing policy in heterogeneous real-time standby systems
US10613923B2 (en) Recovering log-structured filesystems from physical replicas
US9053024B2 (en) Transactions and failure
JP2004046356A (ja) 高信頼性クラスタシステムおよびそれを実現するプログラム
JP2006252548A (ja) 時間的冗長性を実施するための可変遅延命令
CN113326268A (zh) 一种数据写入、读取方法及装置
Shin et al. Study on advanced information processing system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131002

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131203