(57)【特許請求の範囲】
【請求項１】
エラー・リカバリを提供するための、複数プロセッサ・データ処理システムをチェックポインティングする方法であって、
ａ）チェックポイント状態バッファ（６０）内に、それぞれの複数のＣＩＳＣ命令（４２）またはＲＩＳＣ命令（４４、４６）によって実行される、レジスタ内容（１２）の所定の最大個数の更新を収集するステップであって、チェックポイント状態が、前記複数のＣＩＳＣ命令（４２）によって更新され得るレジスタと同数のバッファリング・スロットと、前記複数のＣＩＳＣ命令（４２）のうち最も若いＣＩＳＣ命令に関連するプログラム・カウンタ値（１４）の項目とを含むステップと、
ｂ）現在収集されているレジスタ・データ（１０、１２）内でエラーが検出されなかったことを判定した後で、前記最も若いＣＩＳＣ命令の完了の前または完了と共に、前記レジスタ・データ（１０、１２）を用いて設計済みレジスタ・アレイ（ＡＲＡ）（６４）を更新するステップと
を含む、方法。
【請求項２】
前記ＡＲＡ（６４）項目にエラー検出および訂正ビットを設けるステップ
をさらに含む、請求項１に記載の方法。
【請求項３】
複数のＳＴＯＲＥ命令からの結果のＳＴＯＲＥデータの、ストア・バッファ（６５）から設計済み状態キャッシュ・メモリ（６６）への解放を制御する第２制御パスを、前記ＡＲＡ（６４）更新と並列に提供するステップと、
前記最も若いＣＩＳＣ命令の命令ＩＤ（４０）を用いて前記チェックポイント状態バッファ（６０）項目にタグを付けることによって、前記ＳＴＯＲＥデータ解放を前記ＡＲＡ更新と同期化するステップと、
前記最も若いＣＩＳＣ命令の命令ＩＤ（４０）より古いかそれと等しい命令ＩＤ（４０）を有するデータだけを設計済み状態キャッシュ・メモリ（６６）に解放するステップと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記同期化ステップが、ＡＲＡ更新制御（６３）とＳＴＯＲＥデータ解放制御との間のダブル・ハンドシェーク動作を含み、当該ダブル・ハンドシェーク動作が、
ａ）少なくとも前記最も若いＣＩＳＣ命令に関連するそれぞれのＳＴＯＲＥデータが前記ストア・バッファ（６５）に常駐する時に、前記最も若いＣＩＳＣ命令の命令ＩＤ（４０）を前記ＡＲＡ更新制御（６３）にシグナリング（６８）する第１ステップであって、これによって、前記シグナリングされる最も若いＣＩＳＣ命令の命令ＩＤ（４０）と比較してより古い命令ＩＤ（４０）を有するレジスタ命令を含むＡＲＡ更新がトリガされる、第１ステップと、
ｂ）最も新しいＡＲＡ（６４）更新に関連する前記最も若いＣＩＳＣ命令の命令ＩＤ（４０）をＳＴＯＲＥデータ解放制御にシグナリング（６９）して、前記ストア・バッファ（６５）から前記設計済み状態キャッシュ・メモリ（６６）へのＳＴＯＲＥデータ解放をトリガする第２ステップであって、前記解放が、前記シグナリングされる最も若いＣＩＳＣ命令の命令ＩＤ（４０）と比較してより古い命令ＩＤ（４０）を有する命令から生じるＳＴＯＲＥデータを含む、第２ステップと
を含む、請求項３に記載の方法。
【請求項５】
チェックポイント状態バッファ（６０）内に、それぞれの複雑なＣＩＳＣ命令によって実行される、チェックポイント状態バッファ（６０）内の所定の拡張された最大個数のレジスタ内容の更新を収集するように拡張され、
ａ）前記レジスタ更新データを受け取るために、それぞれの拡張された複数のチェックポイント状態バッファ（６０）項目を予約するステップと、
ｂ）グルー・ビット（７２）を用いて、１つの同一のＣＩＳＣ命令に関連する後続項目をマークするステップと、
ｃ）複数のサイクルのアトミック・オペレーションで、このように拡張されたチェックポイント状態を更新するステップと
を含む、請求項１に記載の方法。
【請求項６】
請求項１ないし５のいずれか一項に記載の方法のステップを実行する論理回路手段を有するプロセッサ・ユニットであって、
所定の最大個数のレジスタ内容の更新を収集する手段が、それぞれが命令ＩＤ、ターゲット・レジスタ・アドレス、ターゲット・レジスタ・データ、およびプログラム・カウンタを含む複数のバッファ項目を含むチェックポイント状態バッファ（６０）（ＣＳＢ）であり、
これによって、チェックポイント状態に、複数の項目が含まれる
プロセッサ・ユニット。
【請求項７】
請求項６に記載のプロセッサ・ユニットを有するコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、エラーリカバリを提供するための、複数プロセッサ・データ処理システムのチェックポインティング（checkpointing）の方法およびシステムに関する。
【０００２】
【従来の技術】
現代のプロセッサで高い命令レベルの並列性を可能にするために、複数の命令を、並列に実行し、最終的にリタイヤ（retire）させることができる。これは、ＣＩＳＣプロセッサの複雑な命令が複数のより単純なＲＩＳＣ様命令に変換される場合と、１サイクル毎に実行される命令の数（ＩＰＣ）を高くしなければならない場合に必須である。これらの命令のリタイヤは、設計済みレジスタ・アレイ（architected register array）の内容が、内部命令の結果によって更新され、対応するストア・データが、キャッシュ／メモリにライト・バックされることを意味する。プログラムによって与えられる命令シーケンスを反映するために、リタイヤすなわち命令の完了は、概念上の順序で発生する。したがって、用語「若い」命令および「古い」命令は、それぞれ、命令シーケンス内で後にまたは早期に見つかる命令を表す。チェックポインティングは、設計済みレジスタおよびデータ・キャッシュに保管された対応するデータの状態のスナップショットが、ある頻度すなわち、固定された時間間隔でとられることを意味する。スナップショットが、すべてのサイクルでとられる場合に、最高の分解能が得られる。そのような従来技術のチェックポインティング方法が、米国特許第５４１８９１６号に開示されている。チェックポイント再試行機能は、通常動作中にストア・キューを確立し、再試行動作中にチェックポイント再試行に必要なデータを供給するために、ストア・バッファを使用する。そこにバッファリングされるデータには、浮動小数点レジスタ、汎用レジスタ、およびアクセス・レジスタのレジスタ・データと、プログラム状況ワードも含まれる。
【０００３】
これは、基本的に、処理ユニットのそれぞれのＬ１キャッシュに関連する複数のストア・バッファの助けを得て行われる。ストア・バッファのそれぞれは、ストレージ・データを、他のＣＰＵがそのデータにアクセスできるストレージ階層内の他の部分に解放できるようになるまで、そのストレージ・データを保持するための中間バッファとして使用される。
【０００４】
ストレージ・データの解放を制御するために、２つの情報ビットすなわち、「命令の終り（end of instruction）」（ＥＯＩ）ビットと「チェックポイント完了（checkpoint complete）」（ＣＯＭＰ）ビットが、ストア・キュー設計に装備される。ストア・バッファ内のデータは、それに直接に関連するプロセッサだけが使用可能である。他のプロセッサは、このデータが、すべての他のプロセッサの共用であるＬ２キャッシュまたはメモリに書き込まれるまで、このデータにアクセスすることができない。しかし、この従来技術の手法は、１サイクル毎に複数の外部命令（以下、「ＣＩＳＣ命令」または「外部ＣＩＳＣ命令」とも称する）をチェックポインティングすることが必要な時に、弱みを有する。すなわち、１サイクル毎に多くとも１つの外部命令しかチェックポインティングすることができない。
【０００５】
【発明が解決しようとする課題】
したがって、本発明の目的は、１サイクル毎に複数の外部命令をチェックポインティングすることができる、スーパースカラ・システムをチェックポインティングする改良された方法およびシステムを提供することである。
【０００６】
【課題を解決するための手段】
プロセッサが、１サイクル毎にある（最大の）個数の内部命令（以下、「ＲＩＳＣ命令」または「ＲＩＳＣ様命令」とも称する）をリタイヤでき、外部ＣＩＳＣ命令を表す内部命令の数が固定されておらず、たとえば動作コードに依存する場合に、プロセッサの状態のチェックポインティングが、複数の外部命令に基づく可能性がある。
【０００７】
簡単な例を図１に示す。外部命令ＩＤ４０（以下、「命令識別子」または単に「ＩＤ」とも称する）によって一意に識別されるプロセッサのＣＩＳＣ命令４２を、設計済みレジスタに作用する１つから４つまでの内部命令４４と、キャッシュ／メモリからのデータのフェッチ（fetch）およびストアを扱う１つから４つまでのロード／ストア命令４６に変換できると仮定する。
【０００８】
最大４つの内部命令を同時にリタイヤできるという仮定は、プロセッサの状態のスナップショットをすべてのサイクルにとる場合に、４つまでの外部ＣＩＳＣ命令をチェックポインティングしなければならないことを意味する。
【０００９】
プロセッサの設計済みレジスタのチェックポインティングは、レジスタ内容を、すべてのレジスタがマスタ・コピーを有するチェックポインティング・アレイにコピーすることによって行うことができる。ストア・データのチェックポインティングは、ストア・データが低位（たとえばＬ１）キャッシュに最初にライト・バックされる可能性があるが、チェックポイントの完了時に高位キャッシュ・メモリ（たとえばＬ２）内で解放される、メモリ階層に基づく可能性がある。レジスタ・ベースの内部命令および対応するストア命令を、外部命令に関係させることができることを保証するために、これらの命令に、一意の命令識別子番号（ＩＤ）を用いてタグを付けなければならない。
【００１０】
添付の独立請求項に記載された特徴によって、本発明の上述の目的が達成される。本発明のさらなる有利な配置および実施形態は、それぞれの従属項に記載されている。追加された請求項を参照してはならない。
【００１１】
最も広義の態様によれば、エラー・リカバリを達成するために、単一プロセッサまたは複数プロセッサのデータ処理システムをチェックポインティングする方法が提供される。この方法には、
ａ）チェックポイント状態バッファ内に、それぞれの複数のＣＩＳＣ／ＲＩＳＣ命令によって実行される、レジスタ内容の所定の最大個数の更新（たとえば、最大４個のレジスタ更新）を収集するステップであって、チェックポイント状態が、
前記複数の（ＣＩＳＣから導出された）命令によって更新され得るレジスタと同数のバッファリング・スロットと、
前記複数のＣＩＳＣ命令のうち最も若いＣＩＳＣ命令に関連するプログラム・カウンタ値の項目と
を含む、ステップと、
ｂ）現在収集されているレジスタ・データ内でエラーが検出されなかったことを判定した後で、前記最も若いＣＩＳＣ命令の完了の前または完了と共に、前記レジスタ・データを用いて設計済みレジスタ・アレイ（ＡＲＡ）を更新するステップと
が含まれる。
【００１２】
したがって、この利点は、それぞれがレジスタに対して動作する複数の外部命令を含む命令シーケンスを、１サイクル毎にチェックポインティングできることをもたらす。
【００１３】
したがって、本発明は、１サイクル毎に１つまたは複数の外部ＣＩＳＣ命令によって実行されるレジスタ内容の更新が、前記チェックポイント状態を形成することによって収集されるという発想に基づく。チェックポイント状態は、１サイクル毎に１つまたは複数のＣＩＳＣ命令によって更新され得るレジスタと同数のスロットからなることが好ましい。さらに、すべての命令によって、プロセッサの状況、たとえばプログラム・カウンタが更新される。複数の命令のチェックポインティングのためには、最後の状況だけが重要であり、たとえば、複数の外部ＣＩＳＣ命令が同時に完了する場合には、外部命令のシーケンス内で最後に完了した完了によって、プログラム・カウンタが決定される。
【００１４】
エラーがプログラム実行時に検出されない場合には、このチェックポイント状態が、チェックポインティング・アレイの更新を実行するのに（最終的に）使用される。この更新は、チェックポイント状態が作成されてから数サイクル後に行われる可能性がある。チェックポイント状態が、チェックポインティング・アレイ、たとえば上のＡＲＡの更新に最終的に使用されるまで、複数のチェックポイント状態を、チェックポイント状態バッファ（ＣＳＢ）に収集することができ、ＣＳＢには、すべてのサイクルに新しいチェックポイント状態が収集される。プロセッサ内のエラーが検出される場合には、チェックポインティング・アレイ更新機構が、即座にブロックされ、したがって、破壊されたデータがチェックポインティング・アレイを汚染しなくなる。
【００１５】
さらに、この発明的方法に、ＡＲＡ項目にエラー検出および訂正（ＥＣＣ）ビットを設けるステップが含まれる時に、効率的で面積を節約するエラー訂正機構が、ビット障害に対して設けられる。
【００１６】
この発明的方法に、さらに、
ａ）複数のＳＴＯＲＥ命令からの結果のＳＴＯＲＥデータの、ストア・バッファ（ＳＴＢ）から設計済み状態キャッシュ・メモリへの解放を制御する第２制御パスを、前記ＡＲＡ更新と並列に提供するステップと、
ｂ）前記最も若いＣＩＳＣ命令のＩＤを用いて前記チェックポイント状態バッファ項目にタグを付けることによって、前記ＳＴＯＲＥデータ解放を前記ＡＲＡ更新と同期化するステップと、
ｃ）前記最も若いＣＩＳＣ命令のＩＤより古いかまたはそれと等しいＩＤを有するデータだけを設計済み状態キャッシュ・メモリに解放するステップと
が含まれる。この場合には、上述のシーケンスに１つまたは複数のＳＴＯＲＥ命令も含めることができるという長所がもたらされる。したがって、レジスタ操作命令とキャッシュ操作命令の混合されたシーケンスを、１サイクル毎にチェックポインティングすることができる。したがって、この発明的概念は、レジスタ更新命令だけに焦点を合わせるように制限はされない。
【００１７】
チェックポイント状態更新とキャッシュ／メモリへのデータのストアの間の同期化に関する基本的な発想は、すべてのチェックポイント状態が、チェックポインティングされるシーケンス内の最後の外部命令のＩＤを用いてタグを付けられるということである。ストア・データは、対応する命令ＩＤのＩＤを用いてタグを付けられる。すべてのＳＴＯＲＥデータは、キャッシュ／メモリに解放されるまで前記ストア・バッファに保持される。同期化が得られるのは、チェックポインティング・アレイの更新に使用された最後のチェックポイント状態のＩＤと比較してより古いか等しいＩＤを所有するＳＴＯＲＥデータだけが、システム・メモリ（すなわちＬ２キャッシュ）に解放される場合である。まだチェックポインティング・アレイにチェックポインティングされていない命令に対応するストア・データは、対応するチェックポイント状態がチェックポインティング・アレイの更新に使用されるまで、ストア・バッファに保持される。したがって、チェックポインティング・アレイの内容およびシステム・メモリに保管されたデータが、いつでも一貫性を有することが保証される。プロセッサの内部でエラーが発生する場合に、破壊されたデータは、システム・メモリに入っていない。リカバリで、チェックポインティング・アレイを使用し、プロセッサ状態、たとえばプログラム・カウンタを復元することによって、設計済みレジスタが復元される場合に、そのプロセッサは、システム・メモリ内のデータに損傷を与えずに、プログラム実行を再始動することができる。
【００１８】
さらに、上の同期化ステップに、ＡＲＡ更新制御とＳＴＯＲＥデータ解放制御の間のダブル・ハンドシェーク動作が含まれる。このダブル・ハンドシェーク動作は、
ａ）少なくとも前記最も若いＣＩＳＣ命令に関連するそれぞれのＳＴＯＲＥデータが前記ストア・キューに常駐する時に、前記最も若いＣＩＳＣ命令のＩＤを前記ＡＲＡ更新制御にシグナリングする第１ステップであって、これによって、前記シグナリングされる最も若いＣＩＳＣ命令のＩＤと比較してより古いＩＤを有するレジスタ命令を含むＡＲＡ更新がトリガされる、第１ステップと、
ｂ）最も新しいＡＲＡ更新に関連する前記最も若いＣＩＳＣ命令のＩＤをＳＴＯＲＥデータ解放制御にシグナリングして、前記ストア・バッファから前記設計済み状態キャッシュ・メモリへのＳＴＯＲＥデータ解放をトリガする第２ステップであって、前記解放が、前記シグナリングされる最も若いＣＩＳＣ命令のＩＤと比較してより古いＩＤを有する命令から生じるＳＴＯＲＥデータを含む、第２ステップと
が含まれる。この場合には、同期化の好ましい方法が提供される。というのは、これによって、効率的で一貫性のあるチェックポインティング・システムが提供されるからである。さらなる詳細を、下で図６に関して示す。
【００１９】
この発明的概念を、チェックポイント状態バッファ内に、それぞれの複雑なＣＩＳＣ命令によって（たとえば、１６個までのレジスタを更新するＬＯＡＤ  ＭＵＬＴＩＰＬＥ命令として）実行される、所定の拡張された最大個数のレジスタ内容の更新（たとえば、最大１６個のレジスタ更新）を収集するように有利に拡張することが好ましい。この拡張は、
ａ）前記レジスタ更新データを受け取るために、それぞれの拡張された複数のチェックポイント状態バッファ項目（たとえば、１６／４＝４項目）を予約するステップと、
ｂ）グルー・ビットを用いて、１つの同一のＣＩＳＣ命令に関連する後続項目をマークするステップと、
ｃ）複数のサイクルのアトミック・オペレーションで、このように拡張されたチェックポイント状態を更新するステップと
を提供することによって行われる。
【００２０】
この特徴を用いると、４つを超える内部命令に変換される必要がある非常に複雑な外部ＣＩＳＣ命令を、アトミックな形すなわち、成功裡に完了されるか全く開始されない形であるが、たとえばチェックポイント・サイクル中の電源障害などの動作障害がないと仮定して、複数のサイクル以内に、チェックポインティングすることができる。
【００２１】
上で述べた変形形態の１つまたは複数のステップを実行する論理回路手段を有するプロセッサ・ユニットを提供し、所定の最大個数のレジスタ内容の更新を収集する手段が、それぞれが命令ＩＤ、ターゲット・レジスタ・アドレス、ターゲット・レジスタ・データ、およびプログラム・カウンタを含むことが好ましい複数の項目を有するチェックポイント状態バッファであるようにすることが好ましい。論理チェックポイント状態に、複数の、好ましくは４つの、そのような項目が含まれる（図２から４を参照されたい）。
【００２２】
この形で、各内部命令によって、基本的に１つのレジスタを更新することができ（これはしばしば発生する）、バッファは、４つまでの内部命令を受け取るのに十分な大きさである。このＣＢＳバッファ編成は、面積消費と、向上したランタイム安定性によって暗示される性能利得との間のよい妥協であることがわかった。
【００２３】
したがって、当業者は、本発明が、複数の外部ＣＩＳＣ命令をチェックポインティングする新しい方式を提案し、設計済みレジスタ内容とキャッシュ／システム・メイン・メモリに保管されたデータとの間の一貫性を保証することを諒解するであろう。
【００２４】
本発明を、例によって示すが、本発明は、添付図面の図の形状によって制限されない。
【００２５】
【発明の実施の形態】
全般的に図面を参照し、ここでは特に図２を参照すると、発明的概念を例示するために、例示的プロセッサ・アーキテクチャが選択されている。これは、レジスタ・データが、キャッシュにストアまたはロードされるデータと別に操作されるプロセッサ・アーキテクチャである。レジスタ・データ「ストリーム」が、命令ウィンドウ・バッファ（Instruction Window Buffer、ＩＷＢ）と称するプロセッサ部分で操作され、ストアまたはロードのデータ「ストリーム」が、異なる部分すなわちストレージ・ウィンドウ・バッファ（Storage Window Buffer、ＳＷＢ）で操作される。チェックポインティングを考える時には、両方のデータ・ストリームが、一貫性を有するようにしなければならない。しかし、この発明的概念は、チェックポインティング制御が他のシステム・メモリ・データとの一貫性を有するレジスタ・データを保持することが必要である限り、おそらくデータ分離の他の判断基準に従う異なる方式を実施する他のすべてのタイプのプロセッサ・アーキテクチャを包含することを理解されたい。
【００２６】
次に、そのようなＩＷＢ／ＳＷＢアーキテクチャに有利なチェックポイント状態定義を、詳細に説明する。
【００２７】
チェックポイント状態には、１サイクル毎に更新され得るレジスタと同数のスロットが含まれる。したがって、１例では、１つのＣＩＳＣ命令が、４つのレジスタのうちの複数を更新することができる。したがって、チェックポイント状態に、４つのスロットすなわち、スロット０、スロット１、スロット２、およびスロット３と、プログラム・カウンタを保管するための追加のスロットが含まれる。４つのターゲット・スロットのそれぞれに、レジスタ・アドレス１０およびそれぞれのレジスタ・データ１２が含まれる。
【００２８】
この例示的なチェックポイント状態定義を用いて、４つまでの外部ＣＩＳＣ命令を表す４つの内部命令を、１サイクル毎にリタイヤすることができる。これは、すべてのサイクルに４つまでのレジスタが更新されることを意味する。さらに、すべての命令によって、プロセッサの状態、たとえばスロットに保管されるプログラム・カウンタ１４が更新される。
【００２９】
本発明による複数の命令のチェックポインティングのためには、最終的な状況だけが重要である、すなわち、複数の外部ＣＩＳＣ命令が同時に完了される場合に、プログラム・カウンタは、外部命令のシーケンス内で最後に完了された命令によって決定される。
【００３０】
次に、２つの例を示し、それぞれ図３および４に関して説明する。
【００３１】
あるＣＩＳＣ命令（図３の上側の第１列を参照されたい）が、上側の表の４行に対応する４つのＲＩＳＣ様命令に変換されるが、このＣＩＳＣ命令では、第１および第３のＲＩＳＣ命令によって２つのターゲット・レジスタに書き込む。したがって、これが、チェックポイント状態の２スロットを占め、下側の部分で、左端の２つのスロットが、図１に示されたように構成される。プログラム・カウンタ１４によって、次の順次命令の命令アドレスが決定される。チェックポイント状態の２つのスロット（すなわち左端の２スロット）が、使用され、有効ビットによってマークされる。
【００３２】
図４に示されたもう１つの例では、３つのＣＩＳＣ命令ＣＩＳＣ＃０、…、ＣＩＳＣ＃２が、４つのＲＩＳＣ様命令に変換されると仮定する。具体的に言うと、最初のＣＩＳＣ＃０命令が、図４の上部の上の２つの行に対応する２つの命令に変換され、それに続くＣＩＳＣ＃１命令およびＣＩＳＣ＃２命令が、それぞれが表の１つの行だけを占める単一のＲＩＳＣ様命令によって表される。このシーケンスでは、４つのレジスタが更新され、したがって、対応するチェックポイント状態は、４つすなわち使用可能なすべてのスロットを使用する。このチェックポイントの状況情報は、このチェックポインティングされたＣＩＳＣ命令のシーケンスの最後の命令から導出される、すなわち、プログラム・カウンタが、第３の命令であるＣＩＳＣ＃２から抽出される。
【００３３】
ここで図５および図６を参照すると、追加の同期化機構（ダブル・ハンドシェーク）特徴が開示されており、これは、たとえば命令オペランドなどのレジスタ・データおよびたとえばメモリに保管される変数などの上述のＳＴＯＲＥデータが、１つの同一のＣＩＳＣ命令によって使用される、マイクロプロセッサ・アーキテクチャに有利に適用することができる。
【００３４】
基本的に、すべてのチェックポイント状態（基本については図２を参照されたい）が、チェックポインティングされたシーケンスの最後の外部命令の命令ＩＤ４０を用いて有利にタグを付けられる。これを、図５および図６に示す。
【００３５】
図６では、右側のＳＷＢ部分に、すべてのＳＴＯＲＥデータが含まれる。この例示的なＳＴＯＲＥデータ処理アーキテクチャでは、たとえばプログラム変数に関連するデータなどのデータが、ストア・キュー（ＳＴＱ）６２から来る。ＳＴＯＲＥデータは、ストアスルー（またはライトスルー）Ｌ１キャッシュ６１ａおよびＥＣＣ生成６１ｂに送られ、ＥＣＣ生成６１ｂは、たとえば４ワードをカバーし、新しいＳＴＯＲＥデータを含む完全なＬ１キャッシュ・ラインに有利に対応し、ＳＴＯＲＥデータは、その後、命令実行の後にＥＣＣ処理される。その後、それぞれのＥＣＣ生成６１ｂが、ストア・バッファ６５内でエラーなしでバッファリングされ、ストア・バッファ６５は、やはりＬ１キャッシュ部分に配置できることが好ましいが、代替案ではＬ１キャッシュ部分の近くに配置される。
【００３６】
その後、前記データが、Ｌ２キャッシュ６６またはメモリ階層の他の適合された部分に、レジスタ・データの解放と同期化された形で解放される。前記ＳＴＯＲＥデータ処理は、ＥＣＣ処理中に最終的に訂正される可能性があるデータが、オフ・チップで、たとえばＬ２キャッシュ内に配置されるデータのＥＣＣ処理と比較してより高速にオンチップで完全に処理されるので、好ましい。しかし、左側のＩＷＢ部分に、チェックポイント状態バッファ（ＣＳＢ）６０および基本的にチェックポインティング・アレイ６４が含まれ、チェックポインティング・アレイ６４には、エラー検出されエラー訂正された設計済みレジスタ・データ（error-checked and error-corrected architected Register）が含まれる。したがって、これを、（ＥＣＣ−ＡＲＡ）と略す。
【００３７】
一般に、チェックポインティング・アレイ６４（ＥＣＣ−ＡＲＡ）へのチェックポインティングは、アトミック手順で行われる。「アトミック」は、１つまたは複数のプロセッサの信頼性のあるリセット点を保証するために、チェックポイント手順が、完全に行われるすなわち成功裡に完了すると期待されなければならず、さもなければ、開始されることすら許可されないことを意味する。
【００３８】
一般に、チェックポイントが完了されない限り、チェックポインティング・アレイ６４のＥＣＣ−ＡＲＡへの読取アクセスもＥＣＣ−ＡＲＡに関連するリセット機能も不可能である。これによって、完了した外部命令だけがＥＣＣ−ＡＲＡにチェックポインティングされることが保証される。
【００３９】
具体的に言うと、チェックポインティング・アレイ６４の更新と対応する「設計済み」メモリ部分、Ｌ２キャッシュ６６の更新の間の好ましい同期化（ダブル・ハンドシェーク）方式は、次の通りである。チェックポインティング・アレイ６４に保管されたレジスタ内容をＬ２キャッシュ６６に保管されたデータと同期化するために、ＳＴＱ６２とＣＳＢ６０の間で第１の同期化が確立され、チェックポインティング・アレイ６４（の制御ロジック）とストア・バッファ６５の間でもう１つの第２の同期化が確立される。
【００４０】
空のＳＴＱ６２を仮定すると、チェックポインティングは、完全なチェックポイント状態がＣＳＢ６０内で使用可能である場合に、必ず発生する。したがって、すべてのデータ、具体的には図３および図４に関して上で説明したレジスタ・アドレス１０およびレジスタ・データ１２が、存在しなければならない。
【００４１】
ＳＴＯＲＥデータが、ＳＴＱ６２内で見つかる場合に、命令識別子ＩＤが、ＣＳＢ６０にシグナルされ（第１ハンドシェーク信号の矢印６８を参照されたい）、そのチェックポイント状態を、チェックポインティング・アレイ６４（ＥＣＣ−ＡＲＡ）にチェックポインティングできるようになる。したがって、これは、これがそれに応じてシグナルされる時に読取についてＣＳＢ６０にアクセスし、読取／書込アクセスについてチェックポインティング・アレイ６４にアクセスするように配置された読取ポート６３を含む制御ロジックを介して行われることが好ましい。
【００４２】
チェックポイント状態が、チェックポインティング・アレイ６４に完全にチェックポインティングされた時に、対応するＩＤが、ＣＳＢ６０から、または好ましくは読取ポート６３を介してチェックポインティング・アレイ６４から読み出され、ＥＣＣ保護されたＳＯＴＲＥデータを含むストア・バッファ６５に送られる（第２ハンドシェーク信号の矢印６９を参照されたい）。ストア・バッファ６５のそれぞれの項目に保管されたＳＴＯＲＥデータは、それぞれのＩＤがチェックポインティング・アレイ６４から受け取られた場合に限ってＬ２キャッシュに解放される。したがって、これは、ＩＤを受け取った後に行われる。当業者が諒解できるように（これらの規則に従う時に）Ｌ２キャッシュ６６のメモリ内容は、必ず、チェックポインティング・アレイ６４で見つかるレジスタ・データとの一貫性を有する。同一の命令に関連するデータは、前記記憶手段すなわちＣＳＢ６０、チェックポインティング・アレイ６４、ＳＴＱ６２、ストア・バッファ６５、およびＬ２キャッシュ６６のそれぞれで同一のＩＤを有する。
【００４３】
言い換えると、同期化は、基本的に、チェックポインティング・アレイ６４の更新に使用された最後のチェックポイント状態のＩＤと比較してより古いか等しいＩＤを有する特定のＳＴＯＲＥデータが、システム・メモリに解放される場合に限って得られる。まだチェックポインティング・アレイにチェックポインティングされていない命令に対応するストア・データは、対応するチェックポイント状態がチェックポインティング・アレイ６４の更新に使用されるまで保持される。したがって、チェックポインティング・アレイの内容と、Ｌ２キャッシュまたはメモリに保管されたデータが、いつでも一貫性を有することが保証される。
【００４４】
プロセッサの内部でエラーが発生する場合に、破壊されたデータは、Ｌ２キャッシュまたはメモリに入っていない。リカバリで、チェックポインティング・アレイ６４を使用し、プロセッサ状態、たとえばプログラム・カウンタを復元することによって設計済みレジスタが復元される場合に、プロセッサは、システム・メモリ内のデータに損傷を与えずにプログラム実行を再始動することができ、Ｌ１キャッシュの内容をパージしなければならない。最後にチェックポインティングされた命令のＩＤに関してより古いすべての項目も、ストア・バッファ６５内で消去されなければならないことに留意されたい。
【００４５】
ＣＳＢ６０が満杯の時に、命令コミッタが停止され、したがって、新しい命令がコミットされないことを追加しなければならない。これは、ＳＴＱ６２がストア・バッファ６５にデータをストアするまでのプロセッサの停止につながる。
【００４６】
さらに、チェックポインティング・アレイ６４の更新は、チェックポイント状態が作成されてから数サイクル後に発生する可能性がある。この時間の間に、チェックポイント状態がチェックポインティング・アレイ６４の一貫性のある更新に最終的に使用されるまで、複数のチェックポイント状態（好ましくは１サイクル毎に１つ）を、前記チェックポイント状態バッファ（ＣＳＢ）に収集することができる。別に設けられ本発明の対象ではないなんらかの従来技術のエラー検出ロジックによるエラーの認識の際に、ＣＳＢ６０に保管された次のチェックポイント状態のチェックポインティングが、即座にブロックされる。したがって、エラーが、チェックポインティング・アレイ６４に影響せず、Ｌ２キャッシュに保管された「正しい」データを破壊しないことが保証される。
【００４７】
さらに、図７を参照して、４つを超える内部命令からなる非常に複雑な外部命令のためのチェックポイント状態の拡張を、さらに開示する。
【００４８】
非常に複雑な外部（ＣＩＳＣ）命令を、本発明の開示の利益を得ながら４つを超える内部命令に変換する必要がある場合には、基本的な技術的発明的特徴を放棄せず、それぞれの増加した数の内部命令を受け取るためにはるかに広く、したがってより面積を消費するＣＳＢ６０を設けることに制限されずに、発明的方式を拡張することができる。
【００４９】
この前提の下で、複雑な命令のリタイヤは、最大４つの内部命令だけを１サイクル毎にリタイヤできる場合に、複数サイクルにわたって続く。これは、すべてのサイクルに作成されるチェックポイント状態が、１つの完全な外部命令を表さず、したがって、これをチェックポインティング・アレイの更新に使用してはならないことを意味する。
【００５０】
この問題に対する解決策は、複数のチェックポイント状態が、複雑な外部命令全体を表す単一の「拡張チェックポイント状態（extended checkpoint state）」を形成するとみなすという発想に基づく。
【００５１】
好ましい実施形態によれば、これらの不完全なチェックポイント状態が、ＣＳＢ６０の複数の項目を占める。前記複数の項目が、シーケンスを形成することが好ましい。ストア・バッファ６５の各項目内のある位置に設けられるグルー／リンク・ビット７２によって、ストア・バッファ６５に保管された連続するチェックポイント状態が拡張チェックポイント状態を形成することをマークする（図７を参照されたい）。したがって、ストア・バッファ６５が、少なくとも、すべての可能な完全なＣＩＳＣ命令の拡張チェックポイント状態を表すのに必要なものと同数の項目を所有することが必要である。
【００５２】
さらに、チェックポインティング・アレイ６４の更新（図６を参照されたい）は、アトミック・オペレーションが完全に更新されるまで割り込まれてはならない。
【００５３】
エラーの検出時には、アトミック・オペレーションが完全にチェックポインティングされるまで、更新機構をブロックしてはならない。これは、拡張チェックポイント状態のチェックポインティング・アレイ６４へのチェックポインティングが、複数サイクルにわたって続く場合があることも意味する。
【００５４】
前述の明細書で、本発明を、その特定の例示的実施形態に関して説明した。しかし、請求項に記載された本発明の広義の趣旨および範囲から逸脱せずに、さまざまな修正および変更を行えることは明白である。したがって、本明細書および図面は、制限的な意味ではなく、例示的であるものとみなされなければならない。
【００５５】
当業者は、本発明が、たとえば同時にリタイヤされる複数のＣＩＳＣ命令に関するチェックポインティング・アレイ６４などのチェックポインティング・バッファ手段の内容を更新し、プロセッサ・レジスタ内容およびシステム・メモリ内のデータの最も正確なチェックポイントを達成するために、たとえばＬ２キャッシュ６６などのキャッシュ階層へのＳＴＯＲＥデータの解放とチェックポインティング・バッファ手段の更新を同期化する、新しく有利な方式を提案することを諒解するであろう。チェックポインティングの正確な方法によって、メモリに保管されたデータを破壊せずに、プロセッサ内のソフト・エラーまたはハード・エラーの検出時のプロセッサのリカバリが可能になる。これは、高められたレベルのコンピューティング要件を満足するのに重要とみなされる。
【図面の簡単な説明】
【図１】発明的命令ＩＤを導入する、ＣＩＳＣ命令から複数のＲＩＳＣ命令への変換の概念を示す概略図である。
【図２】本発明によるチェックポイント状態定義の概略表現を示す図である。
【図３】２つのレジスタ更新を有する２つの内部命令に変換されるＣＩＳＣ命令を含むチェックポイント状態の概略表現を示す図である。
【図４】３つのＣＩＳＣ命令が４つの内部命令と２＋１＋１レジスタ更新に変換される、図２による表現を示す図である。
【図５】最後のチェックポインティングされたＣＩＳＣ命令のＩＤを用いてタグを付けられたチェックポイント状態の概略表現を示す図である。
【図６】本発明による、レジスタ・チェックポインティングとＳＴＯＲＥデータ処理の同期化を示す概略表現図である。
【図７】本発明による拡張されたチェックポイント状態の原理を示す概略表現図である。
【符号の説明】
１０  レジスタ・アドレス
１２  レジスタ・データ
１４  プログラム・カウンタ
４０  命令ＩＤ
４２  ＣＩＳＣ命令
４４  内部命令
４６  ロード／ストア命令
６０  チェックポイント状態バッファ（ＣＳＢ）
６１ａ  Ｌ１キャッシュ
６１ｂ  ＥＣＣ生成
６２  ストア・キュー（ＳＴＱ）
６３  読取ポート
６４  チェックポインティング・アレイ
６５  ストア・バッファ
６６  Ｌ２キャッシュ
７２  グルー／リンク・ビット
【図１】
0003663393.tif 000002
【図２】
0003663393.tif 000003
【図３】
0003663393.tif 000004
【図４】
0003663393.tif 000005
【図５】
0003663393.tif 000006
【図６】
0003663393.tif 000007
【図７】
0003663393.tif 000008