JP3663393B2 - Method, processor unit and computer system for checkpointing a multi-processor data processing system - Google Patents
Method, processor unit and computer system for checkpointing a multi-processor data processing system Download PDFInfo
- Publication number
- JP3663393B2 JP3663393B2 JP2002185571A JP2002185571A JP3663393B2 JP 3663393 B2 JP3663393 B2 JP 3663393B2 JP 2002185571 A JP2002185571 A JP 2002185571A JP 2002185571 A JP2002185571 A JP 2002185571A JP 3663393 B2 JP3663393 B2 JP 3663393B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- cisc
- instructions
- data
- register
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 18
- 238000012545 processing Methods 0.000 title claims description 10
- 239000000872 buffer Substances 0.000 claims description 46
- 238000011084 recovery Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 4
- 239000003292 glue Substances 0.000 claims description 4
- 238000012937 correction Methods 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 claims description 2
- 230000011664 signaling Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- BSYNRYMUTXBXSQ-UHFFFAOYSA-N Aspirin Chemical compound CC(=O)OC1=CC=CC=C1C(O)=O BSYNRYMUTXBXSQ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 229940057344 bufferin Drugs 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
- Executing Machine-Instructions (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、エラーリカバリを提供するための、複数プロセッサ・データ処理システムのチェックポインティング(checkpointing)の方法およびシステムに関する。
【0002】
【従来の技術】
現代のプロセッサで高い命令レベルの並列性を可能にするために、複数の命令を、並列に実行し、最終的にリタイヤ(retire)させることができる。これは、CISCプロセッサの複雑な命令が複数のより単純なRISC様命令に変換される場合と、1サイクル毎に実行される命令の数(IPC)を高くしなければならない場合に必須である。これらの命令のリタイヤは、設計済みレジスタ・アレイ(architected register array)の内容が、内部命令の結果によって更新され、対応するストア・データが、キャッシュ/メモリにライト・バックされることを意味する。プログラムによって与えられる命令シーケンスを反映するために、リタイヤすなわち命令の完了は、概念上の順序で発生する。したがって、用語「若い」命令および「古い」命令は、それぞれ、命令シーケンス内で後にまたは早期に見つかる命令を表す。チェックポインティングは、設計済みレジスタおよびデータ・キャッシュに保管された対応するデータの状態のスナップショットが、ある頻度すなわち、固定された時間間隔でとられることを意味する。スナップショットが、すべてのサイクルでとられる場合に、最高の分解能が得られる。そのような従来技術のチェックポインティング方法が、米国特許第5418916号に開示されている。チェックポイント再試行機能は、通常動作中にストア・キューを確立し、再試行動作中にチェックポイント再試行に必要なデータを供給するために、ストア・バッファを使用する。そこにバッファリングされるデータには、浮動小数点レジスタ、汎用レジスタ、およびアクセス・レジスタのレジスタ・データと、プログラム状況ワードも含まれる。
【0003】
これは、基本的に、処理ユニットのそれぞれのL1キャッシュに関連する複数のストア・バッファの助けを得て行われる。ストア・バッファのそれぞれは、ストレージ・データを、他のCPUがそのデータにアクセスできるストレージ階層内の他の部分に解放できるようになるまで、そのストレージ・データを保持するための中間バッファとして使用される。
【0004】
ストレージ・データの解放を制御するために、2つの情報ビットすなわち、「命令の終り(end of instruction)」(EOI)ビットと「チェックポイント完了(checkpoint complete)」(COMP)ビットが、ストア・キュー設計に装備される。ストア・バッファ内のデータは、それに直接に関連するプロセッサだけが使用可能である。他のプロセッサは、このデータが、すべての他のプロセッサの共用であるL2キャッシュまたはメモリに書き込まれるまで、このデータにアクセスすることができない。しかし、この従来技術の手法は、1サイクル毎に複数の外部命令(以下、「CISC命令」または「外部CISC命令」とも称する)をチェックポインティングすることが必要な時に、弱みを有する。すなわち、1サイクル毎に多くとも1つの外部命令しかチェックポインティングすることができない。
【0005】
【発明が解決しようとする課題】
したがって、本発明の目的は、1サイクル毎に複数の外部命令をチェックポインティングすることができる、スーパースカラ・システムをチェックポインティングする改良された方法およびシステムを提供することである。
【0006】
【課題を解決するための手段】
プロセッサが、1サイクル毎にある(最大の)個数の内部命令(以下、「RISC命令」または「RISC様命令」とも称する)をリタイヤでき、外部CISC命令を表す内部命令の数が固定されておらず、たとえば動作コードに依存する場合に、プロセッサの状態のチェックポインティングが、複数の外部命令に基づく可能性がある。
【0007】
簡単な例を図1に示す。外部命令ID40(以下、「命令識別子」または単に「ID」とも称する)によって一意に識別されるプロセッサのCISC命令42を、設計済みレジスタに作用する1つから4つまでの内部命令44と、キャッシュ/メモリからのデータのフェッチ(fetch)およびストアを扱う1つから4つまでのロード/ストア命令46に変換できると仮定する。
【0008】
最大4つの内部命令を同時にリタイヤできるという仮定は、プロセッサの状態のスナップショットをすべてのサイクルにとる場合に、4つまでの外部CISC命令をチェックポインティングしなければならないことを意味する。
【0009】
プロセッサの設計済みレジスタのチェックポインティングは、レジスタ内容を、すべてのレジスタがマスタ・コピーを有するチェックポインティング・アレイにコピーすることによって行うことができる。ストア・データのチェックポインティングは、ストア・データが低位(たとえばL1)キャッシュに最初にライト・バックされる可能性があるが、チェックポイントの完了時に高位キャッシュ・メモリ(たとえばL2)内で解放される、メモリ階層に基づく可能性がある。レジスタ・ベースの内部命令および対応するストア命令を、外部命令に関係させることができることを保証するために、これらの命令に、一意の命令識別子番号(ID)を用いてタグを付けなければならない。
【0010】
添付の独立請求項に記載された特徴によって、本発明の上述の目的が達成される。本発明のさらなる有利な配置および実施形態は、それぞれの従属項に記載されている。追加された請求項を参照してはならない。
【0011】
最も広義の態様によれば、エラー・リカバリを達成するために、単一プロセッサまたは複数プロセッサのデータ処理システムをチェックポインティングする方法が提供される。この方法には、
a)チェックポイント状態バッファ内に、それぞれの複数のCISC/RISC命令によって実行される、レジスタ内容の所定の最大個数の更新(たとえば、最大4個のレジスタ更新)を収集するステップであって、チェックポイント状態が、
前記複数の(CISCから導出された)命令によって更新され得るレジスタと同数のバッファリング・スロットと、
前記複数のCISC命令のうち最も若いCISC命令に関連するプログラム・カウンタ値の項目と
を含む、ステップと、
b)現在収集されているレジスタ・データ内でエラーが検出されなかったことを判定した後で、前記最も若いCISC命令の完了の前または完了と共に、前記レジスタ・データを用いて設計済みレジスタ・アレイ(ARA)を更新するステップと
が含まれる。
【0012】
したがって、この利点は、それぞれがレジスタに対して動作する複数の外部命令を含む命令シーケンスを、1サイクル毎にチェックポインティングできることをもたらす。
【0013】
したがって、本発明は、1サイクル毎に1つまたは複数の外部CISC命令によって実行されるレジスタ内容の更新が、前記チェックポイント状態を形成することによって収集されるという発想に基づく。チェックポイント状態は、1サイクル毎に1つまたは複数のCISC命令によって更新され得るレジスタと同数のスロットからなることが好ましい。さらに、すべての命令によって、プロセッサの状況、たとえばプログラム・カウンタが更新される。複数の命令のチェックポインティングのためには、最後の状況だけが重要であり、たとえば、複数の外部CISC命令が同時に完了する場合には、外部命令のシーケンス内で最後に完了した完了によって、プログラム・カウンタが決定される。
【0014】
エラーがプログラム実行時に検出されない場合には、このチェックポイント状態が、チェックポインティング・アレイの更新を実行するのに(最終的に)使用される。この更新は、チェックポイント状態が作成されてから数サイクル後に行われる可能性がある。チェックポイント状態が、チェックポインティング・アレイ、たとえば上のARAの更新に最終的に使用されるまで、複数のチェックポイント状態を、チェックポイント状態バッファ(CSB)に収集することができ、CSBには、すべてのサイクルに新しいチェックポイント状態が収集される。プロセッサ内のエラーが検出される場合には、チェックポインティング・アレイ更新機構が、即座にブロックされ、したがって、破壊されたデータがチェックポインティング・アレイを汚染しなくなる。
【0015】
さらに、この発明的方法に、ARA項目にエラー検出および訂正(ECC)ビットを設けるステップが含まれる時に、効率的で面積を節約するエラー訂正機構が、ビット障害に対して設けられる。
【0016】
この発明的方法に、さらに、
a)複数のSTORE命令からの結果のSTOREデータの、ストア・バッファ(STB)から設計済み状態キャッシュ・メモリへの解放を制御する第2制御パスを、前記ARA更新と並列に提供するステップと、
b)前記最も若いCISC命令のIDを用いて前記チェックポイント状態バッファ項目にタグを付けることによって、前記STOREデータ解放を前記ARA更新と同期化するステップと、
c)前記最も若いCISC命令のIDより古いかまたはそれと等しいIDを有するデータだけを設計済み状態キャッシュ・メモリに解放するステップと
が含まれる。この場合には、上述のシーケンスに1つまたは複数のSTORE命令も含めることができるという長所がもたらされる。したがって、レジスタ操作命令とキャッシュ操作命令の混合されたシーケンスを、1サイクル毎にチェックポインティングすることができる。したがって、この発明的概念は、レジスタ更新命令だけに焦点を合わせるように制限はされない。
【0017】
チェックポイント状態更新とキャッシュ/メモリへのデータのストアの間の同期化に関する基本的な発想は、すべてのチェックポイント状態が、チェックポインティングされるシーケンス内の最後の外部命令のIDを用いてタグを付けられるということである。ストア・データは、対応する命令IDのIDを用いてタグを付けられる。すべてのSTOREデータは、キャッシュ/メモリに解放されるまで前記ストア・バッファに保持される。同期化が得られるのは、チェックポインティング・アレイの更新に使用された最後のチェックポイント状態のIDと比較してより古いか等しいIDを所有するSTOREデータだけが、システム・メモリ(すなわちL2キャッシュ)に解放される場合である。まだチェックポインティング・アレイにチェックポインティングされていない命令に対応するストア・データは、対応するチェックポイント状態がチェックポインティング・アレイの更新に使用されるまで、ストア・バッファに保持される。したがって、チェックポインティング・アレイの内容およびシステム・メモリに保管されたデータが、いつでも一貫性を有することが保証される。プロセッサの内部でエラーが発生する場合に、破壊されたデータは、システム・メモリに入っていない。リカバリで、チェックポインティング・アレイを使用し、プロセッサ状態、たとえばプログラム・カウンタを復元することによって、設計済みレジスタが復元される場合に、そのプロセッサは、システム・メモリ内のデータに損傷を与えずに、プログラム実行を再始動することができる。
【0018】
さらに、上の同期化ステップに、ARA更新制御とSTOREデータ解放制御の間のダブル・ハンドシェーク動作が含まれる。このダブル・ハンドシェーク動作は、
a)少なくとも前記最も若いCISC命令に関連するそれぞれのSTOREデータが前記ストア・キューに常駐する時に、前記最も若いCISC命令のIDを前記ARA更新制御にシグナリングする第1ステップであって、これによって、前記シグナリングされる最も若いCISC命令のIDと比較してより古いIDを有するレジスタ命令を含むARA更新がトリガされる、第1ステップと、
b)最も新しいARA更新に関連する前記最も若いCISC命令のIDをSTOREデータ解放制御にシグナリングして、前記ストア・バッファから前記設計済み状態キャッシュ・メモリへのSTOREデータ解放をトリガする第2ステップであって、前記解放が、前記シグナリングされる最も若いCISC命令のIDと比較してより古いIDを有する命令から生じるSTOREデータを含む、第2ステップと
が含まれる。この場合には、同期化の好ましい方法が提供される。というのは、これによって、効率的で一貫性のあるチェックポインティング・システムが提供されるからである。さらなる詳細を、下で図6に関して示す。
【0019】
この発明的概念を、チェックポイント状態バッファ内に、それぞれの複雑なCISC命令によって(たとえば、16個までのレジスタを更新するLOAD MULTIPLE命令として)実行される、所定の拡張された最大個数のレジスタ内容の更新(たとえば、最大16個のレジスタ更新)を収集するように有利に拡張することが好ましい。この拡張は、
a)前記レジスタ更新データを受け取るために、それぞれの拡張された複数のチェックポイント状態バッファ項目(たとえば、16/4=4項目)を予約するステップと、
b)グルー・ビットを用いて、1つの同一のCISC命令に関連する後続項目をマークするステップと、
c)複数のサイクルのアトミック・オペレーションで、このように拡張されたチェックポイント状態を更新するステップと
を提供することによって行われる。
【0020】
この特徴を用いると、4つを超える内部命令に変換される必要がある非常に複雑な外部CISC命令を、アトミックな形すなわち、成功裡に完了されるか全く開始されない形であるが、たとえばチェックポイント・サイクル中の電源障害などの動作障害がないと仮定して、複数のサイクル以内に、チェックポインティングすることができる。
【0021】
上で述べた変形形態の1つまたは複数のステップを実行する論理回路手段を有するプロセッサ・ユニットを提供し、所定の最大個数のレジスタ内容の更新を収集する手段が、それぞれが命令ID、ターゲット・レジスタ・アドレス、ターゲット・レジスタ・データ、およびプログラム・カウンタを含むことが好ましい複数の項目を有するチェックポイント状態バッファであるようにすることが好ましい。論理チェックポイント状態に、複数の、好ましくは4つの、そのような項目が含まれる(図2から4を参照されたい)。
【0022】
この形で、各内部命令によって、基本的に1つのレジスタを更新することができ(これはしばしば発生する)、バッファは、4つまでの内部命令を受け取るのに十分な大きさである。このCBSバッファ編成は、面積消費と、向上したランタイム安定性によって暗示される性能利得との間のよい妥協であることがわかった。
【0023】
したがって、当業者は、本発明が、複数の外部CISC命令をチェックポインティングする新しい方式を提案し、設計済みレジスタ内容とキャッシュ/システム・メイン・メモリに保管されたデータとの間の一貫性を保証することを諒解するであろう。
【0024】
本発明を、例によって示すが、本発明は、添付図面の図の形状によって制限されない。
【0025】
【発明の実施の形態】
全般的に図面を参照し、ここでは特に図2を参照すると、発明的概念を例示するために、例示的プロセッサ・アーキテクチャが選択されている。これは、レジスタ・データが、キャッシュにストアまたはロードされるデータと別に操作されるプロセッサ・アーキテクチャである。レジスタ・データ「ストリーム」が、命令ウィンドウ・バッファ(Instruction Window Buffer、IWB)と称するプロセッサ部分で操作され、ストアまたはロードのデータ「ストリーム」が、異なる部分すなわちストレージ・ウィンドウ・バッファ(Storage Window Buffer、SWB)で操作される。チェックポインティングを考える時には、両方のデータ・ストリームが、一貫性を有するようにしなければならない。しかし、この発明的概念は、チェックポインティング制御が他のシステム・メモリ・データとの一貫性を有するレジスタ・データを保持することが必要である限り、おそらくデータ分離の他の判断基準に従う異なる方式を実施する他のすべてのタイプのプロセッサ・アーキテクチャを包含することを理解されたい。
【0026】
次に、そのようなIWB/SWBアーキテクチャに有利なチェックポイント状態定義を、詳細に説明する。
【0027】
チェックポイント状態には、1サイクル毎に更新され得るレジスタと同数のスロットが含まれる。したがって、1例では、1つのCISC命令が、4つのレジスタのうちの複数を更新することができる。したがって、チェックポイント状態に、4つのスロットすなわち、スロット0、スロット1、スロット2、およびスロット3と、プログラム・カウンタを保管するための追加のスロットが含まれる。4つのターゲット・スロットのそれぞれに、レジスタ・アドレス10およびそれぞれのレジスタ・データ12が含まれる。
【0028】
この例示的なチェックポイント状態定義を用いて、4つまでの外部CISC命令を表す4つの内部命令を、1サイクル毎にリタイヤすることができる。これは、すべてのサイクルに4つまでのレジスタが更新されることを意味する。さらに、すべての命令によって、プロセッサの状態、たとえばスロットに保管されるプログラム・カウンタ14が更新される。
【0029】
本発明による複数の命令のチェックポインティングのためには、最終的な状況だけが重要である、すなわち、複数の外部CISC命令が同時に完了される場合に、プログラム・カウンタは、外部命令のシーケンス内で最後に完了された命令によって決定される。
【0030】
次に、2つの例を示し、それぞれ図3および4に関して説明する。
【0031】
あるCISC命令(図3の上側の第1列を参照されたい)が、上側の表の4行に対応する4つのRISC様命令に変換されるが、このCISC命令では、第1および第3のRISC命令によって2つのターゲット・レジスタに書き込む。したがって、これが、チェックポイント状態の2スロットを占め、下側の部分で、左端の2つのスロットが、図1に示されたように構成される。プログラム・カウンタ14によって、次の順次命令の命令アドレスが決定される。チェックポイント状態の2つのスロット(すなわち左端の2スロット)が、使用され、有効ビットによってマークされる。
【0032】
図4に示されたもう1つの例では、3つのCISC命令CISC#0、…、CISC#2が、4つのRISC様命令に変換されると仮定する。具体的に言うと、最初のCISC#0命令が、図4の上部の上の2つの行に対応する2つの命令に変換され、それに続くCISC#1命令およびCISC#2命令が、それぞれが表の1つの行だけを占める単一のRISC様命令によって表される。このシーケンスでは、4つのレジスタが更新され、したがって、対応するチェックポイント状態は、4つすなわち使用可能なすべてのスロットを使用する。このチェックポイントの状況情報は、このチェックポインティングされたCISC命令のシーケンスの最後の命令から導出される、すなわち、プログラム・カウンタが、第3の命令であるCISC#2から抽出される。
【0033】
ここで図5および図6を参照すると、追加の同期化機構(ダブル・ハンドシェーク)特徴が開示されており、これは、たとえば命令オペランドなどのレジスタ・データおよびたとえばメモリに保管される変数などの上述のSTOREデータが、1つの同一のCISC命令によって使用される、マイクロプロセッサ・アーキテクチャに有利に適用することができる。
【0034】
基本的に、すべてのチェックポイント状態(基本については図2を参照されたい)が、チェックポインティングされたシーケンスの最後の外部命令の命令ID40を用いて有利にタグを付けられる。これを、図5および図6に示す。
【0035】
図6では、右側のSWB部分に、すべてのSTOREデータが含まれる。この例示的なSTOREデータ処理アーキテクチャでは、たとえばプログラム変数に関連するデータなどのデータが、ストア・キュー(STQ)62から来る。STOREデータは、ストアスルー(またはライトスルー)L1キャッシュ61aおよびECC生成61bに送られ、ECC生成61bは、たとえば4ワードをカバーし、新しいSTOREデータを含む完全なL1キャッシュ・ラインに有利に対応し、STOREデータは、その後、命令実行の後にECC処理される。その後、それぞれのECC生成61bが、ストア・バッファ65内でエラーなしでバッファリングされ、ストア・バッファ65は、やはりL1キャッシュ部分に配置できることが好ましいが、代替案ではL1キャッシュ部分の近くに配置される。
【0036】
その後、前記データが、L2キャッシュ66またはメモリ階層の他の適合された部分に、レジスタ・データの解放と同期化された形で解放される。前記STOREデータ処理は、ECC処理中に最終的に訂正される可能性があるデータが、オフ・チップで、たとえばL2キャッシュ内に配置されるデータのECC処理と比較してより高速にオンチップで完全に処理されるので、好ましい。しかし、左側のIWB部分に、チェックポイント状態バッファ(CSB)60および基本的にチェックポインティング・アレイ64が含まれ、チェックポインティング・アレイ64には、エラー検出されエラー訂正された設計済みレジスタ・データ(error-checked and error-corrected architected Register)が含まれる。したがって、これを、(ECC−ARA)と略す。
【0037】
一般に、チェックポインティング・アレイ64(ECC−ARA)へのチェックポインティングは、アトミック手順で行われる。「アトミック」は、1つまたは複数のプロセッサの信頼性のあるリセット点を保証するために、チェックポイント手順が、完全に行われるすなわち成功裡に完了すると期待されなければならず、さもなければ、開始されることすら許可されないことを意味する。
【0038】
一般に、チェックポイントが完了されない限り、チェックポインティング・アレイ64のECC−ARAへの読取アクセスもECC−ARAに関連するリセット機能も不可能である。これによって、完了した外部命令だけがECC−ARAにチェックポインティングされることが保証される。
【0039】
具体的に言うと、チェックポインティング・アレイ64の更新と対応する「設計済み」メモリ部分、L2キャッシュ66の更新の間の好ましい同期化(ダブル・ハンドシェーク)方式は、次の通りである。チェックポインティング・アレイ64に保管されたレジスタ内容をL2キャッシュ66に保管されたデータと同期化するために、STQ62とCSB60の間で第1の同期化が確立され、チェックポインティング・アレイ64(の制御ロジック)とストア・バッファ65の間でもう1つの第2の同期化が確立される。
【0040】
空のSTQ62を仮定すると、チェックポインティングは、完全なチェックポイント状態がCSB60内で使用可能である場合に、必ず発生する。したがって、すべてのデータ、具体的には図3および図4に関して上で説明したレジスタ・アドレス10およびレジスタ・データ12が、存在しなければならない。
【0041】
STOREデータが、STQ62内で見つかる場合に、命令識別子IDが、CSB60にシグナルされ(第1ハンドシェーク信号の矢印68を参照されたい)、そのチェックポイント状態を、チェックポインティング・アレイ64(ECC−ARA)にチェックポインティングできるようになる。したがって、これは、これがそれに応じてシグナルされる時に読取についてCSB60にアクセスし、読取/書込アクセスについてチェックポインティング・アレイ64にアクセスするように配置された読取ポート63を含む制御ロジックを介して行われることが好ましい。
【0042】
チェックポイント状態が、チェックポインティング・アレイ64に完全にチェックポインティングされた時に、対応するIDが、CSB60から、または好ましくは読取ポート63を介してチェックポインティング・アレイ64から読み出され、ECC保護されたSOTREデータを含むストア・バッファ65に送られる(第2ハンドシェーク信号の矢印69を参照されたい)。ストア・バッファ65のそれぞれの項目に保管されたSTOREデータは、それぞれのIDがチェックポインティング・アレイ64から受け取られた場合に限ってL2キャッシュに解放される。したがって、これは、IDを受け取った後に行われる。当業者が諒解できるように(これらの規則に従う時に)L2キャッシュ66のメモリ内容は、必ず、チェックポインティング・アレイ64で見つかるレジスタ・データとの一貫性を有する。同一の命令に関連するデータは、前記記憶手段すなわちCSB60、チェックポインティング・アレイ64、STQ62、ストア・バッファ65、およびL2キャッシュ66のそれぞれで同一のIDを有する。
【0043】
言い換えると、同期化は、基本的に、チェックポインティング・アレイ64の更新に使用された最後のチェックポイント状態のIDと比較してより古いか等しいIDを有する特定のSTOREデータが、システム・メモリに解放される場合に限って得られる。まだチェックポインティング・アレイにチェックポインティングされていない命令に対応するストア・データは、対応するチェックポイント状態がチェックポインティング・アレイ64の更新に使用されるまで保持される。したがって、チェックポインティング・アレイの内容と、L2キャッシュまたはメモリに保管されたデータが、いつでも一貫性を有することが保証される。
【0044】
プロセッサの内部でエラーが発生する場合に、破壊されたデータは、L2キャッシュまたはメモリに入っていない。リカバリで、チェックポインティング・アレイ64を使用し、プロセッサ状態、たとえばプログラム・カウンタを復元することによって設計済みレジスタが復元される場合に、プロセッサは、システム・メモリ内のデータに損傷を与えずにプログラム実行を再始動することができ、L1キャッシュの内容をパージしなければならない。最後にチェックポインティングされた命令のIDに関してより古いすべての項目も、ストア・バッファ65内で消去されなければならないことに留意されたい。
【0045】
CSB60が満杯の時に、命令コミッタが停止され、したがって、新しい命令がコミットされないことを追加しなければならない。これは、STQ62がストア・バッファ65にデータをストアするまでのプロセッサの停止につながる。
【0046】
さらに、チェックポインティング・アレイ64の更新は、チェックポイント状態が作成されてから数サイクル後に発生する可能性がある。この時間の間に、チェックポイント状態がチェックポインティング・アレイ64の一貫性のある更新に最終的に使用されるまで、複数のチェックポイント状態(好ましくは1サイクル毎に1つ)を、前記チェックポイント状態バッファ(CSB)に収集することができる。別に設けられ本発明の対象ではないなんらかの従来技術のエラー検出ロジックによるエラーの認識の際に、CSB60に保管された次のチェックポイント状態のチェックポインティングが、即座にブロックされる。したがって、エラーが、チェックポインティング・アレイ64に影響せず、L2キャッシュに保管された「正しい」データを破壊しないことが保証される。
【0047】
さらに、図7を参照して、4つを超える内部命令からなる非常に複雑な外部命令のためのチェックポイント状態の拡張を、さらに開示する。
【0048】
非常に複雑な外部(CISC)命令を、本発明の開示の利益を得ながら4つを超える内部命令に変換する必要がある場合には、基本的な技術的発明的特徴を放棄せず、それぞれの増加した数の内部命令を受け取るためにはるかに広く、したがってより面積を消費するCSB60を設けることに制限されずに、発明的方式を拡張することができる。
【0049】
この前提の下で、複雑な命令のリタイヤは、最大4つの内部命令だけを1サイクル毎にリタイヤできる場合に、複数サイクルにわたって続く。これは、すべてのサイクルに作成されるチェックポイント状態が、1つの完全な外部命令を表さず、したがって、これをチェックポインティング・アレイの更新に使用してはならないことを意味する。
【0050】
この問題に対する解決策は、複数のチェックポイント状態が、複雑な外部命令全体を表す単一の「拡張チェックポイント状態(extended checkpoint state)」を形成するとみなすという発想に基づく。
【0051】
好ましい実施形態によれば、これらの不完全なチェックポイント状態が、CSB60の複数の項目を占める。前記複数の項目が、シーケンスを形成することが好ましい。ストア・バッファ65の各項目内のある位置に設けられるグルー/リンク・ビット72によって、ストア・バッファ65に保管された連続するチェックポイント状態が拡張チェックポイント状態を形成することをマークする(図7を参照されたい)。したがって、ストア・バッファ65が、少なくとも、すべての可能な完全なCISC命令の拡張チェックポイント状態を表すのに必要なものと同数の項目を所有することが必要である。
【0052】
さらに、チェックポインティング・アレイ64の更新(図6を参照されたい)は、アトミック・オペレーションが完全に更新されるまで割り込まれてはならない。
【0053】
エラーの検出時には、アトミック・オペレーションが完全にチェックポインティングされるまで、更新機構をブロックしてはならない。これは、拡張チェックポイント状態のチェックポインティング・アレイ64へのチェックポインティングが、複数サイクルにわたって続く場合があることも意味する。
【0054】
前述の明細書で、本発明を、その特定の例示的実施形態に関して説明した。しかし、請求項に記載された本発明の広義の趣旨および範囲から逸脱せずに、さまざまな修正および変更を行えることは明白である。したがって、本明細書および図面は、制限的な意味ではなく、例示的であるものとみなされなければならない。
【0055】
当業者は、本発明が、たとえば同時にリタイヤされる複数のCISC命令に関するチェックポインティング・アレイ64などのチェックポインティング・バッファ手段の内容を更新し、プロセッサ・レジスタ内容およびシステム・メモリ内のデータの最も正確なチェックポイントを達成するために、たとえばL2キャッシュ66などのキャッシュ階層へのSTOREデータの解放とチェックポインティング・バッファ手段の更新を同期化する、新しく有利な方式を提案することを諒解するであろう。チェックポインティングの正確な方法によって、メモリに保管されたデータを破壊せずに、プロセッサ内のソフト・エラーまたはハード・エラーの検出時のプロセッサのリカバリが可能になる。これは、高められたレベルのコンピューティング要件を満足するのに重要とみなされる。
【図面の簡単な説明】
【図1】発明的命令IDを導入する、CISC命令から複数のRISC命令への変換の概念を示す概略図である。
【図2】本発明によるチェックポイント状態定義の概略表現を示す図である。
【図3】2つのレジスタ更新を有する2つの内部命令に変換されるCISC命令を含むチェックポイント状態の概略表現を示す図である。
【図4】3つのCISC命令が4つの内部命令と2+1+1レジスタ更新に変換される、図2による表現を示す図である。
【図5】最後のチェックポインティングされたCISC命令のIDを用いてタグを付けられたチェックポイント状態の概略表現を示す図である。
【図6】本発明による、レジスタ・チェックポインティングとSTOREデータ処理の同期化を示す概略表現図である。
【図7】本発明による拡張されたチェックポイント状態の原理を示す概略表現図である。
【符号の説明】
10 レジスタ・アドレス
12 レジスタ・データ
14 プログラム・カウンタ
40 命令ID
42 CISC命令
44 内部命令
46 ロード/ストア命令
60 チェックポイント状態バッファ(CSB)
61a L1キャッシュ
61b ECC生成
62 ストア・キュー(STQ)
63 読取ポート
64 チェックポインティング・アレイ
65 ストア・バッファ
66 L2キャッシュ
72 グルー/リンク・ビット[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a checkpointing method and system for a multi-processor data processing system to provide error recovery.
[0002]
[Prior art]
In order to allow high instruction level parallelism on modern processors, multiple instructions can be executed in parallel and eventually retired. This is essential when the complex instructions of the CISC processor are converted into multiple simpler RISC-like instructions and when the number of instructions executed per cycle (IPC) must be increased. Retirement of these instructions means that the contents of the designed register array are updated with the results of the internal instructions and the corresponding store data is written back to the cache / memory. To reflect the sequence of instructions provided by the program, retirement or completion of instructions occurs in a conceptual order. Thus, the terms “young” and “old” instructions represent instructions that are found later or early in the instruction sequence, respectively. Checkpointing means that a snapshot of the state of the corresponding data stored in the designed registers and data cache is taken at a certain frequency, ie, a fixed time interval. The highest resolution is obtained when the snapshot is taken every cycle. Such a prior art checkpointing method is disclosed in US Pat. No. 5,418,916. The checkpoint retry function uses the store buffer to establish the store queue during normal operation and supply the data necessary for checkpoint retry during the retry operation. The data buffered therein also includes floating point register, general purpose register, and access register register data and a program status word.
[0003]
This is basically done with the help of a plurality of store buffers associated with each L1 cache of the processing unit. Each store buffer is used as an intermediate buffer to hold the storage data until it can be released to other parts of the storage hierarchy where other CPUs can access the data. The
[0004]
In order to control the release of storage data, two information bits, an “end of instruction” (EOI) bit and a “checkpoint complete” (COMP) bit, are stored in the store queue. Equipped with design. Data in the store buffer is only available to the processor directly associated with it. For other processors, this data isSharedThis data cannot be accessed until it is written to the L2 cache or memory. However, this prior art technique uses a plurality of external instructions (per cycle)Less than,"CISC instructionOr “external CISC instruction”) Have weaknesses when it is necessary to checkpoint. That is, at most one per cycleOutsideOnly instructions can be checkpointed.
[0005]
[Problems to be solved by the invention]
Accordingly, it is an object of the present invention to provide an improved method and system for checkpointing a superscalar system that can checkpoint multiple external instructions per cycle.
[0006]
[Means for Solving the Problems]
The (maximum) number of processors per cycleCommand (hereinafter referred to as “RISC command” or “RISC-like instructionIs also called)If the number of internal instructions representing external CISC instructions is not fixed and depends, for example, on the operation code, processor state checkpointing may be based on multiple external instructions.
[0007]
simpleAn example is shown in FIG.External command ID 40 (hereinafter referred to as “command identifier” or simply “IDIs also uniquely identified)ProcessorCThe
[0008]
The assumption that up to four internal instructions can be retired simultaneously means that up to four external CISC instructions must be checkpointed when taking a snapshot of the processor state every cycle.
[0009]
Checkpointing of the processor's designed registers can be done by copying the register contents to a checkpointing array in which all registers have a master copy. Store data checkpointing may be first written back to the lower (eg L1) cache, but is released in the higher cache memory (eg L2) upon completion of the checkpoint May be based on memory hierarchy. In order to ensure that register-based internal instructions and corresponding store instructions can be related to external instructions, these instructions must be tagged with a unique instruction identifier number (ID).
[0010]
The above-mentioned objects of the invention are achieved by means of the features described in the attached independent claims. Further advantageous arrangements and embodiments of the invention are described in the respective dependent claims. Do not refer to the appended claims.
[0011]
According to the broadest aspect, a method for checkpointing a single processor or multiple processor data processing system to achieve error recoveryIs provided. This method includes
a)In checkpoint status bufferIn addition,Updating a predetermined maximum number of register contents, performed by each of multiple CISC / RISC instructions(For example, up to 4 register updates)Where the checkpoint state is
As many buffering slots as registers that can be updated by the plurality of instructions (derived from CISC);
The plurality of CIsSC lifeDecreehomeYoungestCISCProgram counter value items related to instructions and
Including steps, and
b) Currently collectedWithin the Jister dataAn errorAfter determining that it was not detected,PreviousYoungestCISCBefore or with completion of the orderSaidUpdating the designed register array (ARA) with the register data;
Is included.
[0012]
Thus, this advantage provides that an instruction sequence including multiple external instructions, each operating on a register, can be checkpointed every cycle.
[0013]
Thus, the present invention is based on the idea that register content updates performed by one or more external CISC instructions per cycle are collected by forming the checkpoint state. The checkpoint state preferably consists of as many slots as registers that can be updated by one or more CISC instructions per cycle. In addition, all instructions update the status of the processor, for example the program counter. For checkpointing multiple instructions, only the last situation is important; for example, if multiple external CISC instructions are completed simultaneously, the last completed completion in the sequence of external instructions causes the program A counter is determined.
[0014]
If no error is detected during program execution, this checkpoint state is (finally) used to perform a checkpointing array update. This update may occur several cycles after the checkpoint state is created. Multiple checkpoint states can be collected in a checkpoint state buffer (CSB) until the checkpoint state is finally used to update the checkpointing array, eg, the ARA above, A new checkpoint state is collected for every cycle. If an error in the processor is detected, the checkpointing array update mechanism is immediately blocked, so that corrupted data does not contaminate the checkpointing array.
[0015]
Further, when the inventive method includes providing an error detection and correction (ECC) bit in the ARA entry, an efficient and area saving error correction mechanism is provided for bit failures.
[0016]
In addition to this inventive method,
a) providing, in parallel with the ARA update, a second control path for controlling the release of STORE data resulting from a plurality of STORE instructions from the store buffer (STB) to the designed state cache memory;
b) PreviousRecordToo youngCISCorderISynchronizing the STORE data release with the ARA update by tagging the checkpoint status buffer entry with D;
c)SaidYoungestOf CISC instructionOlder than IDOr equal toReleasing only data having IDs into the designed state cache memory;
Is included. In this caseThis provides the advantage that one or more STORE instructions can also be included in the above sequence. Therefore, a mixed sequence of register manipulation instructions and cache manipulation instructions can be checkpointed every cycle. Thus, the inventive concept is not limited to focus only on register update instructions.
[0017]
The basic idea for synchronization between checkpoint state updates and storing data in cache / memory is that all checkpoint states are tagged with the ID of the last external instruction in the sequence to be checkpointed. It is attached. Store data is tagged with the ID of the corresponding instruction ID. All STORE data is held in the store buffer until it is released to cache / memory. Synchronization is obtained only for STORE data that has an ID that is older or equal to the ID of the last checkpoint state used to update the checkpointing array, ie, system memory (ie, L2 cache). It is a case where it is released. Store data corresponding to instructions that have not yet been checkpointed into the checkpointing array is held in the store buffer until the corresponding checkpoint state is used to update the checkpointing array. Thus, the contents of the checkpointing array and the data stored in the system memory are guaranteed to be consistent at all times. If an error occurs inside the processor, the corrupted data is not in system memory. In recovery, when a designed register is restored by using a checkpointing array and restoring the processor state, for example, the program counter, the processor does not damage the data in system memory. The program execution can be restarted.
[0018]
Furthermore, in the above synchronization step, double handshake operation between ARA update control and STORE data release controlIs included. This double handshake action is
a) at leastSaidYoungestCISCThe youngest when each STORE data associated with an instruction resides in the store queueCISCA first step of signaling an instruction ID to the ARA update control, whereby the youngest signaledCISCA first step in which an ARA update including a register instruction having an older ID compared to the instruction ID is triggered;
b) related to the latest ARA updateSaidYoungestOf CISC instructionSignaling ID to STORE data release controldo it, A second step of triggering STORE data release from the store buffer to the designed state cache memory, wherein the release is the youngest signaledCISC instructionA second step comprising STORE data resulting from an instruction having an older ID compared to the ID of
Is included. In this case,A preferred method of synchronization is provided. This provides an efficient and consistent checkpointing system. Further details are given below with respect to FIG.
[0019]
This inventive conceptIn the checkpoint status buffer,Each complexCISCBy order(TaToe1As a LOAD MULTIPLE instruction that updates up to six registers)Update a given extended maximum number of register contents to be performed(For example,Up to 16 register updates)Can be advantageously extended to collectpreferable.This extension
a)SaidMultiple extended checkpoint status buffer items, each to receive register update data(For example,16/4 = 4 items)A step of booking
b) Using glue bits, one identicalCISCMarking subsequent items associated with the instruction;
c) updating the extended checkpoint state in a multi-cycle atomic operation;
By providingDone.
[0020]
With this feature, very complex external CISC instructions that need to be converted to more than four internal instructions are in atomic form, ie, successfully completed or never started, Assuming there is no operational failure such as a power failure during a point cycle, checkpointing can be done within multiple cycles.
[0021]
Providing a processor unit with logic circuit means for performing one or more steps of the above-described variants, means for collecting updates of a predetermined maximum number of register contents, each comprising an instruction ID, a target Preferably, the checkpoint state buffer has a plurality of entries that preferably include a register address, target register data, and a program counter. A logical checkpoint state includes a plurality, preferably four, of such items (see FIGS. 2-4).
[0022]
In this way, each internal instruction can basically update one register (which often occurs) and the buffer is large enough to accept up to four internal instructions. This CBS buffer organization has been found to be a good compromise between area consumption and performance gains implied by improved runtime stability.
[0023]
Therefore, those skilled in the art will propose a new scheme for the present invention to checkpoint multiple external CISC instructions to ensure consistency between the designed register contents and the data stored in the cache / system main memory. Will understand what to do.
[0024]
The invention is illustrated by way of example, but the invention is not limited by the shape of the figures of the accompanying drawings.
[0025]
DETAILED DESCRIPTION OF THE INVENTION
With reference generally to the drawings and with particular reference now to FIG. 2, an exemplary processor architecture has been selected to illustrate the inventive concept. This is a processor architecture where register data is manipulated separately from the data stored or loaded into the cache. Register data “streams” are manipulated in a processor portion called Instruction Window Buffer (IWB), and store or load data “streams” are separated into different portions: Storage Window Buffers (Storage Window Buffers, SWB). When considering checkpointing, both data streams must be made consistent. However, this inventive concept is based on a different scheme that probably follows other criteria for data separation, as long as the checkpointing control is required to maintain register data that is consistent with other system memory data. It should be understood to encompass all other types of processor architectures implemented.
[0026]
Next, a checkpoint state definition advantageous to such an IWB / SWB architecture will be described in detail.
[0027]
The checkpoint state includes as many slots as registers that can be updated every cycle. Thus, in one example, one CISC instruction can update multiple of the four registers. Thus, the checkpoint state includes four slots:
[0028]
Using this exemplary checkpoint state definition, four internal instructions representing up to four external CISC instructions can be retired every cycle. This means that up to 4 registers are updated every cycle. In addition, every instruction updates the state of the processor, for example the
[0029]
For checkpointing of multiple instructions according to the present invention, only the final situation is important, i.e., when multiple external CISC instructions are completed simultaneously, the program counter Determined by the last completed instruction.
[0030]
Next, two examples are shown and described with respect to FIGS. 3 and 4, respectively.
[0031]
A CISC instruction (see the first column in the upper part of FIG. 3) is converted into four RISC-like instructions corresponding to the four rows in the upper table, but in this CISC instruction, the first and third Write to two target registers with RISC instruction. Therefore, this occupies two slots in the checkpoint state, and in the lower part, the two leftmost slots are configured as shown in FIG. The
[0032]
In another example shown in FIG. 4, it is assumed that three CISC
[0033]
Referring now to FIGS. 5 and 6, an additional synchronization mechanism (double handshake) feature is disclosed, which is described above such as register data such as instruction operands and variables stored in memory, for example. STORE data can be advantageously applied to a microprocessor architecture where one and the same CISC instruction is used.
[0034]
Basically, all checkpoint states (see FIG. 2 for basics) are advantageously tagged with the
[0035]
In FIG. 6, all the STORE data is included in the SWB portion on the right side. In this exemplary STORE data processing architecture, data such as data associated with program variables comes from a store queue (STQ) 62. STORE data is sent to the store-through (or write-through)
[0036]
The data is then released to the
[0037]
In general, checkpointing to the checkpointing array 64 (ECC-ARA) is performed by an atomic procedure. "Atomic" means that the checkpoint procedure must be expected to be complete, i.e. completed successfully, to ensure a reliable reset point of one or more processors, It means that even starting is not allowed.
[0038]
In general, unless the checkpoint is completed, neither read access to the ECC-ARA of the
[0039]
Specifically, the preferred synchronization (double handshake) scheme between the update of the
[0040]
Assuming an
[0041]
If STORE data is found in
[0042]
When the checkpoint state is fully checkpointed to the
[0043]
In other words, synchronization basically means that certain STORE data with an ID that is older or equal to the ID of the last checkpoint state used to update
[0044]
If an error occurs inside the processor, the corrupted data is not in the L2 cache or memory. In recovery, if the designed registers are restored by using
[0045]
When
[0046]
Further, the update of
[0047]
Further, referring to FIG. 7, further disclosed is a checkpoint state extension for very complex external instructions consisting of more than four internal instructions.
[0048]
If it is necessary to convert a very complex external (CISC) instruction into more than four internal instructions with the benefit of the present disclosure, the basic technical inventive feature is not abandoned, The inventive scheme can be extended without being limited to providing a
[0049]
Under this premise, the retirement of complex instructions continues over multiple cycles if only up to four internal instructions can be retired per cycle. This means that the checkpoint state created in every cycle does not represent one complete external instruction and therefore should not be used to update the checkpointing array.
[0050]
The solution to this problem is based on the idea that multiple checkpoint states are considered to form a single “extended checkpoint state” that represents the entire complex external instruction.
[0051]
According to a preferred embodiment, these incomplete checkpoint states occupy multiple items in
[0052]
Furthermore, the update of the checkpointing array 64 (see FIG. 6) must not be interrupted until the atomic operation is completely updated.
[0053]
When an error is detected, the update mechanism must not be blocked until the atomic operation is completely checkpointed. This also means that the checkpointing into the extended checkpoint
[0054]
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. However, it will be apparent that various modifications and changes may be made without departing from the broader spirit and scope of the invention as set forth in the claims. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
[0055]
Those skilled in the art will recognize that the present invention updates the contents of checkpointing buffer means, such as
[Brief description of the drawings]
FIG. 1 is a schematic diagram illustrating the concept of conversion from a CISC instruction to multiple RISC instructions, introducing an inventive instruction ID.
FIG. 2 is a schematic representation of a checkpoint state definition according to the present invention.
FIG. 3 shows a schematic representation of a checkpoint state that includes a CISC instruction that is converted to two internal instructions with two register updates.
FIG. 4 shows the representation according to FIG. 2 in which three CISC instructions are converted into four internal instructions and a 2 + 1 + 1 register update.
FIG. 5 shows a schematic representation of a checkpoint state tagged with the ID of the last checkpointed CISC instruction.
FIG. 6 is a schematic representation showing the synchronization of register checkpointing and STORE data processing according to the present invention.
FIG. 7 is a schematic representation showing the principle of an extended checkpoint state according to the present invention.
[Explanation of symbols]
10 Register address
12 Register data
14 Program counter
40 Instruction ID
42 CISC instruction
44 Internal instructions
46 Load / store instructions
60 Checkpoint status buffer (CSB)
61a L1 cache
61b ECC generation
62 Store Queue (STQ)
63 Reading port
64 Checkpointing array
65 Store buffer
66 L2 cache
72 glue / link bit
Claims (7)
a)チェックポイント状態バッファ(60)内に、それぞれの複数のCISC命令(42)またはRISC命令(44、46)によって実行される、レジスタ内容(12)の所定の最大個数の更新を収集するステップであって、チェックポイント状態が、前記複数のCISC命令(42)によって更新され得るレジスタと同数のバッファリング・スロットと、前記複数のCISC命令(42)のうち最も若いCISC命令に関連するプログラム・カウンタ値(14)の項目とを含むステップと、
b)現在収集されているレジスタ・データ(10、12)内でエラーが検出されなかったことを判定した後で、前記最も若いCISC命令の完了の前または完了と共に、前記レジスタ・データ(10、12)を用いて設計済みレジスタ・アレイ(ARA)(64)を更新するステップと
を含む、方法。To provide error recovery, a method for checkpointing multiple processor data processing system,
a) the checkpoint state buffer (60), to collect each of the plurality of CISC instructions (42) or Therefore is performed RISC instructions (44, 46), the updating of the predetermined maximum number of register contents (12) a step, a checkpoint state, associated with the youngest CISC instruction of the plurality of CISC instructions (42) the same number of buffering slots and registers which can be updated by the plurality of CI SC instruction (42) Including a program counter value (14) item to be
b) After determining that an error is not detected within the register data currently collected (10, 12), with prior or completion of prior SL youngest completion of CISC instructions, the register data (10 , and updating the architected register array (ARA) (64) with a 12), the method.
をさらに含む、請求項1に記載の方法。The method of claim 1, further comprising: providing error detection and correction bits to the ARA (64) entry.
前記最も若いCISC命令の命令ID(40)を用いて前記チェックポイント状態バッファ(60)項目にタグを付けることによって、前記STOREデータ解放を前記ARA更新と同期化するステップと、
前記最も若いCISC命令の命令ID(40)より古いかそれと等しい命令ID(40)を有するデータだけを設計済み状態キャッシュ・メモリ(66)に解放するステップと
をさらに含む、請求項1に記載の方法。Provides a second control path in parallel with the ARA (64) update for controlling the release of STORE data resulting from multiple STORE instructions from the store buffer (65) to the designed state cache memory (66) And steps to
By tagging the checkpoint state buffer (60) items with a pre Symbol youngest instruction ID of CISC instructions (40), the steps of the ARA updates and synchronizing the STORE data release,
Further comprising the step of releasing the youngest CISC instruction in the instruction ID (40) architected state cache memory (66) only data having older or greater equal instruction ID (40), according to claim 1 Method.
a)少なくとも前記最も若いCISC命令に関連するそれぞれのSTOREデータが前記ストア・バッファ(65)に常駐する時に、前記最も若いCISC命令の命令ID(40)を前記ARA更新制御(63)にシグナリング(68)する第1ステップであって、これによって、前記シグナリングされる最も若いCISC命令の命令ID(40)と比較してより古い命令ID(40)を有するレジスタ命令を含むARA更新がトリガされる、第1ステップと、
b)最も新しいARA(64)更新に関連する前記最も若いCISC命令の命令ID(40)をSTOREデータ解放制御にシグナリング(69)して、前記ストア・バッファ(65)から前記設計済み状態キャッシュ・メモリ(66)へのSTOREデータ解放をトリガする第2ステップであって、前記解放が、前記シグナリングされる最も若いCISC命令の命令ID(40)と比較してより古い命令ID(40)を有する命令から生じるSTOREデータを含む、第2ステップと
を含む、請求項3に記載の方法。Wherein the synchronization step comprises a double handshake operation between ARA update control (63) and STORE data release control, the double handshake operation,
a) Signaling the instruction ID (40) of the youngest CISC instruction to the ARA update control (63) when each STORE data associated with at least the youngest CISC instruction resides in the store buffer (65) ( 68) which triggers an ARA update that includes a register instruction having an older instruction ID (40) compared to the instruction ID (40) of the youngest CISC instruction being signaled. The first step;
b) newest ARA (64) the youngest CISC instructions in the instruction ID associated with the update (40) and signals (69) to the STORE data release control, the architected state cache from said store buffer (65) A second step of triggering the release of STORE data to memory (66), said release having an older instruction ID (40) compared to the instruction ID (40) of the youngest CISC instruction signaled including STORE data resulting from the instruction, the second step and the including method of claim 3.
a)前記レジスタ更新データを受け取るために、それぞれの拡張された複数のチェックポイント状態バッファ(60)項目を予約するステップと、
b)グルー・ビット(72)を用いて、1つの同一のCISC命令に関連する後続項目をマークするステップと、
c)複数のサイクルのアトミック・オペレーションで、このように拡張されたチェックポイント状態を更新するステップと
を含む、請求項1に記載の方法。 Checkpoint state buffer (60), executed by a respective complex CISC instruction, is extended to collect the update of the register contents of a given extended highest number in the checkpoint state buffer (60),
a) reserving each extended plurality of checkpoint status buffer (60) entries to receive the register update data;
b) using the glue bit (72) to mark subsequent items associated with one identical CISC instruction;
and c) updating the extended checkpoint state in a multi-cycle atomic operation.
所定の最大個数のレジスタ内容の更新を収集する手段が、それぞれが命令ID、ターゲット・レジスタ・アドレス、ターゲット・レジスタ・データ、およびプログラム・カウンタを含む複数のバッファ項目を含むチェックポイント状態バッファ(60)(CSB)であり、
これによって、チェックポイント状態に、複数の項目が含まれる
プロセッサ・ユニット。A processor unit comprising logic circuit means for performing the steps of the method according to claim 1,
A means for collecting a predetermined maximum number of register content updates is a checkpoint status buffer (60) that includes a plurality of buffer items each including an instruction ID, a target register address, target register data, and a program counter. ) (CSB)
Thus, the checkpoint state, the processor unit includes a plurality of items.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP01115448 | 2001-06-27 | ||
EP01115448-1 | 2001-06-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003067184A JP2003067184A (en) | 2003-03-07 |
JP3663393B2 true JP3663393B2 (en) | 2005-06-22 |
Family
ID=8177831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002185571A Expired - Fee Related JP3663393B2 (en) | 2001-06-27 | 2002-06-26 | Method, processor unit and computer system for checkpointing a multi-processor data processing system |
Country Status (2)
Country | Link |
---|---|
US (1) | US6968476B2 (en) |
JP (1) | JP3663393B2 (en) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6834358B2 (en) * | 2001-03-28 | 2004-12-21 | Ncr Corporation | Restartable database loads using parallel data streams |
US6981104B2 (en) * | 2002-07-12 | 2005-12-27 | Hewlett-Packard Development Company, L.P. | Method for conducting checkpointing within a writeback cache |
US7478276B2 (en) * | 2005-02-10 | 2009-01-13 | International Business Machines Corporation | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor |
US7478278B2 (en) * | 2005-04-14 | 2009-01-13 | International Business Machines Corporation | Template based parallel checkpointing in a massively parallel computer system |
US7480836B2 (en) * | 2005-04-25 | 2009-01-20 | Hewlett-Packard Development Company, L.P. | Monitoring error-handler vector in architected memory |
US7409589B2 (en) * | 2005-05-27 | 2008-08-05 | International Business Machines Corporation | Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor |
US7647487B2 (en) | 2005-08-29 | 2010-01-12 | Searete, Llc | Instruction-associated processor resource optimization |
US8181004B2 (en) * | 2005-08-29 | 2012-05-15 | The Invention Science Fund I, Llc | Selecting a resource management policy for a resource available to a processor |
US7725693B2 (en) | 2005-08-29 | 2010-05-25 | Searete, Llc | Execution optimization using a processor resource management policy saved in an association with an instruction group |
US7627739B2 (en) | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
US8423824B2 (en) | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
US20070050608A1 (en) | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporatin Of The State Of Delaware | Hardware-generated and historically-based execution optimization |
US8209524B2 (en) | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US7779213B2 (en) * | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US7739524B2 (en) * | 2005-08-29 | 2010-06-15 | The Invention Science Fund I, Inc | Power consumption management |
US7877584B2 (en) * | 2005-08-29 | 2011-01-25 | The Invention Science Fund I, Llc | Predictive processor resource management |
US8255745B2 (en) * | 2005-08-29 | 2012-08-28 | The Invention Science Fund I, Llc | Hardware-error tolerant computing |
US7774558B2 (en) * | 2005-08-29 | 2010-08-10 | The Invention Science Fund I, Inc | Multiprocessor resource optimization |
US7493516B2 (en) | 2005-08-29 | 2009-02-17 | Searete Llc | Hardware-error tolerant computing |
US7653834B2 (en) | 2005-08-29 | 2010-01-26 | Searete, Llc | Power sparing synchronous apparatus |
US8516300B2 (en) | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US8214191B2 (en) * | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US7987342B1 (en) | 2005-09-28 | 2011-07-26 | Oracle America, Inc. | Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
US8024522B1 (en) * | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US7953961B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder |
US7877630B1 (en) * | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US8019944B1 (en) * | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
US8037285B1 (en) | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US7546420B1 (en) | 2005-09-28 | 2009-06-09 | Sun Microsystems, Inc. | Efficient trace cache management during self-modifying code processing |
US8051247B1 (en) * | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
US8370576B1 (en) * | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
US8015359B1 (en) | 2005-09-28 | 2011-09-06 | Oracle America, Inc. | Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
WO2007089546A2 (en) * | 2006-01-31 | 2007-08-09 | Searete Llc | Adjusting a processor operating parameter based on a performance criterion |
US8010745B1 (en) * | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US8341352B2 (en) * | 2007-04-17 | 2012-12-25 | International Business Machines Corporation | Checkpointed tag prefetcher |
US8131951B2 (en) * | 2008-05-30 | 2012-03-06 | Freescale Semiconductor, Inc. | Utilization of a store buffer for error recovery on a store allocation cache miss |
US8381032B2 (en) * | 2008-08-06 | 2013-02-19 | O'shantel Software L.L.C. | System-directed checkpointing implementation using a hypervisor layer |
US7853827B2 (en) * | 2008-08-29 | 2010-12-14 | International Business Machines Corporation | Isotropic processor |
US8533572B2 (en) * | 2010-09-24 | 2013-09-10 | Intel Corporation | Error correcting code logic for processor caches that uses a common set of check bits |
US9298521B1 (en) * | 2013-04-29 | 2016-03-29 | Seagate Technology Llc | Command sets and functions |
US10152396B2 (en) | 2014-05-05 | 2018-12-11 | Oracle International Corporation | Time-based checkpoint target for database media recovery |
US10713174B2 (en) * | 2016-12-20 | 2020-07-14 | Texas Instruments Incorporated | Streaming engine with early and late address and loop count registers to track architectural state |
US10782979B2 (en) | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US10838733B2 (en) * | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US11010192B2 (en) | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US20190391856A1 (en) * | 2018-06-26 | 2019-12-26 | Intel Corporation | Synchronization of multiple queues |
US11188516B2 (en) | 2018-08-24 | 2021-11-30 | Oracle International Corproation | Providing consistent database recovery after database failure for distributed databases with non-durable storage leveraging background synchronization point |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6115730A (en) * | 1996-02-28 | 2000-09-05 | Via-Cyrix, Inc. | Reloadable floating point unit |
US6247118B1 (en) * | 1998-06-05 | 2001-06-12 | Mcdonnell Douglas Corporation | Systems and methods for transient error recovery in reduced instruction set computer processors via instruction retry |
US6581155B1 (en) * | 1999-08-25 | 2003-06-17 | National Semiconductor Corporation | Pipelined, superscalar floating point unit having out-of-order execution capability and processor employing the same |
JP3327283B2 (en) * | 2000-03-10 | 2002-09-24 | ヤマハ株式会社 | Digital signal processor |
US6810489B1 (en) * | 2000-09-06 | 2004-10-26 | Hewlett-Packard Development Company, L.P. | Checkpoint computer system utilizing a FIFO buffer to re-synchronize and recover the system on the detection of an error |
-
2002
- 2002-06-26 US US10/180,385 patent/US6968476B2/en not_active Expired - Lifetime
- 2002-06-26 JP JP2002185571A patent/JP3663393B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6968476B2 (en) | 2005-11-22 |
US20030005265A1 (en) | 2003-01-02 |
JP2003067184A (en) | 2003-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3663393B2 (en) | Method, processor unit and computer system for checkpointing a multi-processor data processing system | |
CN100489801C (en) | Firmware mechanism for correcting soft errors | |
JP3706586B2 (en) | Multiprocessing method and system | |
KR100388952B1 (en) | System for ordering load and store instructions that performs out-of-order multithread execution | |
US10909006B2 (en) | Main processor error detection using checker processors | |
US6189088B1 (en) | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location | |
KR100388947B1 (en) | Processor having multiple program counters and trace buffers outside an execution pipeline | |
US5347639A (en) | Self-parallelizing computer system and method | |
EP1966697B1 (en) | Software assisted nested hardware transactions | |
CN101601009B (en) | Processor and perform the method for instruction wherein | |
US8412981B2 (en) | Core sparing on multi-core platforms | |
KR20170039237A (en) | Persistent store fence processors, methods, systems, and instructions | |
KR20010024750A (en) | Out-of-pipeline trace buffer for instruction replay following misspeculation | |
US9710280B2 (en) | Overlapping atomic regions in a processor | |
CN101627366A (en) | System, method and software to preload instructions from an instruction set other than one currently executing | |
KR100472346B1 (en) | A processor pipeline including instruction replay | |
US10977038B2 (en) | Checkpointing speculative register mappings | |
US8583900B2 (en) | Register renaming table recovery method and system for use in a processor | |
US20060020776A1 (en) | Multithread processor and register control method | |
US7200742B2 (en) | System and method for creating precise exceptions | |
JP4155052B2 (en) | Emulator, emulation method and program | |
US6772294B2 (en) | Method and apparatus for using a non-committing data cache to facilitate speculative execution | |
JP3988740B2 (en) | Parallel processing device, instruction retry method, and program | |
JP2000259411A (en) | Processor | |
JP3804823B2 (en) | Cache system with failure recovery function and cache control method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050112 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050222 |
|
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: 20050315 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050328 |
|
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: 20090401 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090401 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100401 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110401 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110401 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120401 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130401 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130401 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140401 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |