(57)【要約】【課題】  ハードウェアに関するコストの増大を回避しつつ，わずかなクロックサイクル内で，エラー，特に過渡的エラーを除去する。【解決手段】  ２つの実行ユニットを有するプロセッサにおけるエラーを除去するエラー除去装置は，インストラクションが２つの実行ユニット内で重畳して処理され，該インストラクションおよび／またはそれに対応づけられた情報の不一致に伴ってエラーを認識し，エラー除去装置中の第１のレジスタは，該第１のレジスタから，プロセッサの前処理段階の状態および第２のレジスタの内容を導き出すことができるように形成され，ロールバック手段は，少なくとも１つのインストラクションおよび／または情報を第１のレジスタへロールバックし，かつ再度実施される。【選択図】    図３
2006164277.tif 000002
【特許請求の範囲】
【請求項１】
２つの実行ユニットを有するプロセッサにおけるエラーを除去するエラー除去装置であり，レジスタおよび比較手段が設けられ，該レジスタ内にはインストラクションおよび／またはそれに対応づけられた情報が格納可能であり，該インストラクションは２つの実行ユニット内で重畳して処理され，該比較手段は，該インストラクションおよび／またはそれに対応づけられた情報の不一致に伴ってエラーを認識する，プロセッサにおけるエラー除去装置において：
前記レジスタは，第１のレジスタと第２のレジスタから成り，かつ，ロールバックするロールバック手段が設けられ，
前記第１のレジスタは，該第１のレジスタから，プロセッサの前処理段階の状態および第２のレジスタの内容を導き出すことができるように形成され，
前記ロールバック手段は，少なくとも１つのインストラクションおよび／または情報を第１のレジスタへロールバックし，かつ再度実施されることを特徴とする，プロセッサにおけるエラー除去装置。
【請求項２】
前記ロールバックする手段は，第１のレジスタにのみ対応づけられており，および／または第１のレジスタの中のみに含まれていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項３】
前記ロールバックする手段は，少なくとも１つのインストラクションおよび／または情報が第１のレジスタ内にのみロールバックされるように，形成されていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項４】
前記比較手段は，第１のレジスタの前段に設けられていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項５】
前記比較手段は，前記レジスタの出力の前段に設けられていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項６】
前記第１のレジスタ毎に，少なくとも１つのバッファモジュールが対応づけられていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項７】
前記レジスタは，少なくとも１つのレジスタファイル内に設けられ，
前記レジスタファイルは，アドレス用のバッファメモリとデータ用のバッファメモリとを有する少なくとも１つのバッファモジュールが対応づけられていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項８】
バッファモジュールまたはバッファメモリの有効性を，前もって定め，および／または伝達する手段が設けられていることを特徴とする，請求項６または７に記載のプロセッサにおけるエラー除去装置。
【請求項９】
当該プロセッサにおけるエラー除去装置は，２つの実行ユニットがクロックオフセットなしで並列に作業するように，形成されていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項１０】
当該プロセッサにおけるエラー除去装置は，２つの実行ユニットがクロックオフセットをもって作業するように，形成されていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項１１】
少なくともすべての第１のレジスタが，二重に設けられており，それぞれ実行ユニットに対応づけられていることを特徴とする，請求項１に記載のプロセッサにおけるエラー除去装置。
【請求項１２】
請求項１に記載の装置を有するプロセッサ。
【請求項１３】
２つの実行ユニットを有するプロセッサにおけるエラーを除去するエラー除去方法であり，インストラクションおよび／またはそれに対応づけられた情報が格納可能であり，該インストラクションは２つの実行ユニット内で重畳して処理され，かつ，該インストラクションおよび／またはそれに対応づけられた情報の不一致に伴ってエラーを認識する，該プロセッサにおけるエラー除去方法であって：
プロセッサのレジスタは，第１のレジスタと第２のレジスタから成り，その場合に第１のレジスタから，プロセッサの前処理段階の状態と第２のレジスタの内容とを導き出すことができ，
エラーが発生した場合，少なくとも１つのインストラクションおよび／または情報が，第１のレジスタへロールバックされ，新たに実施され，および／または再び形成されることを特徴とする，プロセッサにおけるエラー除去方法。
【請求項１４】
前記インストラクションおよび／または情報の有効性が，有効性識別子を介して予め定めることができ，および／または決定可能であって，その場合に有効性識別子がリセット信号を介してリセットされることを特徴とする，請求項１３に記載のプロセッサにおけるエラー除去方法。
【請求項１５】
前記インストラクションおよび／または情報の有効性が，有効性識別子を介して予め定めることができ，および／または決定可能であって，その場合に有効性識別子が，特にアンドゲートによるゲート信号を介してリセットされることを特徴とする，請求項１３に記載のプロセッサにおけるエラー除去方法。
【請求項１６】
前記ロールバックは，２つの段階からなり，先ず，第１のレジスタのインストラクションおよび／または情報がロールバックされ，その後，第２のレジスタの内容が導き出されることを特徴とする，請求項１３に記載のプロセッサにおけるエラー除去方法。
【請求項１７】
前記第２のレジスタの内容は，トラップ／エクセプション機構によって導き出されることを特徴とする，請求項１３に記載のプロセッサにおけるエラー除去方法。
【請求項１８】
ロールバックに加えて，２つの実行ユニット内のビットフリップが伝達されることにより，実行ユニットの第２のレジスタの少なくとも１つのビットフリップが除去されることを特徴とする，請求項１３に記載のプロセッサにおけるエラー除去方法。
【請求項１９】
実行ユニットがクロックオフセットなしで動作する場合に，２つの実行ユニット内のビットフリップが同時に伝達されることを特徴とする，請求項１８に記載のプロセッサにおけるエラー除去方法。
【請求項２０】
実行ユニットが，予め定めることのできるクロックオフセットをもって動作する場合に，２つの実行ユニット内のビットフリップが，そのクロックオフセットに応じて遅延されて伝達されることを特徴とする，請求項１８に記載のプロセッサにおけるエラー除去方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，２つの実行ユニットまたはＣＰＵを有するプロセッサにおけるエラーを除去する装置と方法およびそれに対応するプロセッサに関する。
【背景技術】
【０００２】
近年，半導体の構造は占有体積に関し益々小さくなってきており，例えば，宇宙放射によって半導体にもたらされる過渡的なプロセッサエラーの増加が予測される。今日においても，すでに，電磁放射あるいはプロセッサの供給線内への干渉の結合によってもたらされる過渡的なエラーが発生している。
【０００３】
従来技術においてプロセッサ内のエラーは，付加的な監視装置，重畳（拡張）した計算機，またはデュアルコア計算機の使用によって認識される。
【０００４】
デュアルコアプロセッサまたはデュアルコアプロセッサシステムは，同一のプログラムを互いに並列に処理する２つの実行ユニット，例えば，マスタ（Ｍａｓｔｅｒ）とチェッカ（Ｃｈｅｃｋｅｒ）としての２つのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からなる。従って，上記２つのＣＰＵは，クロック同期でパラレルに（Ｌｏｃｋｓｔｅｐモードで），あるいは数クロックだけ時間をずらして処理を実行する。２つのＣＰＵは，同一の入力データを受信して，同一のプログラムを処理するが，出力はデュアルコアのマスターによってのみ行われる。エラーチェックは，各クロックサイクルにおいて，マスターの出力とチェッカーの出力とを比較することによって成される。２つのＣＰＵの出力値が一致しないときは，２つのＣＰＵの少なくとも一方がエラーを有している状態であることを意味する。
【０００５】
このとき，例えば，デュアルコアプロセッサのアーキテクチャにおいて，比較器は，２つのコアの出力を比較する（すべての比較は並列に行われる）。ここで比較される出力は，例えば以下のものがある。
ａ：インストラクション（Ｉｎｓｔｒｕｃｔｉｏｎ：命令，指令）アドレス（インストラクションアドレスの検査が行われないと，マスターは，気づかずに，誤ったインストラクションをアドレスする可能性があり，それがその後２つのプロセッサ内で認識されないまま処理されてしまう。）
ｂ：データアウト
ｃ：ライトイネーブルまたはリードイネーブルのような，コントロール信号
【０００６】
エラーは，外部に対して信号で知らされ，通常，該当する制御装置のオフをもたらす。このシーケンスは，予測される過渡的エラーの増大において，制御装置の頻繁なオフをもたらす結果に繋がる。過渡的エラーにおいては，計算機の損傷は存在しない。従って，システムをオフしたり，あるいは新規スタートを行ったりすることなしに，計算機をできるだけ迅速に再び使用できるように処理する必要がある。
【０００７】
過渡的エラーを除去し，プロセッサの完全な新規スタートを回避する方法は，マスター／チェッカー駆動で作業するプロセッサに関して散発的にしか見受けられない。
【０００８】
例えば，ジリ・ガイスラーが開示した内容（非特許文献１を参照）によると，内蔵されたエラー認識およびリカバリーシステム（例えばパリティチェックと自動的なインストラクションの繰返し）を有するプロセッサを，マスター／チェッカー駆動で作業させることが示されている。マスター内あるいはチェッカー内の内部のエラー認識機構は，常に，一方のプロセッサ内でのみローカルにリカバリーオペレーションを作動させる。それによって２つのプロセッサは互いに対する同期を失い，出力の比較はもはや行うことはできない。２つのプロセッサを再び同期させる唯一の可能性は，ミッションにおけるアンクリティカルな相の間に２つのプロセッサを新規スタートさせることである。
【０００９】
さらに，ユーバル・タミアとマルク・トレンブライの文献（非特許文献２を参照）は，「マイクロロールバック（Ｍｉｃｒｏ  Ｒｏｌｌｂａｃｋ）」と呼ばれる方法を示しており，その方法によって，任意のＶＬＳＩ−システムの完全な状態に基づいて，所定数のクロック分だけ元の場所に戻すことができる。そのために，全てのレジスタおよび全体のレジスタファイルが，付加的なＦＩＦＯバッファによって拡張される。この方法においては，新しい値が直接本来のレジスタに書き込まれず，まずバッファに格納され，その値のチェック後に初めてレジスタへ転送される。全プロセッサ状態をロールバックするために，すべてのＦＩＦＯバッファの内容が，無効としてマーキングされる。システムをｋクロックサイクル分ロールバックするようにするため，各レジスタにはｋ個のバッファが必要とされる。
【非特許文献１】Jiri Gaisler:“Concurrent error-detection and modularfault-tolerancein a 32-bit processing core for embedded space flight applications” vomTwenty-Fourth International Symposium on Fault-Tolerant Computing,page 128-130,june 1994
【非特許文献２】“High-performance fault-tolerant vlsi systems using micro rollback”aus IEEE Transaction on Computers, volume 39, page 548-554, 1990
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従って，従来技術で紹介されているプロセッサは，一つに，リカバリーオペレーションによりその同期を失うという欠陥がある。これは，リカバリーが，常に一方のプロセッサ内でローカルに実施されるからである。
【００１１】
また，上述した方法（マイクロロールバック）の基本理念は，エラーが生じた場合に，一貫した方法によって全システム状態を元の位置に戻せるように，独立したシステムの各コンポーネントを，ロールバック能力を有するように拡張することである。その場合に個々のコンポーネント（レジスタ，レジスタファイル等）の互いに対するアーキテクチャ固有の関係は考察する必要はない。これは，ロールバックによって実際に常に全システム状態が一貫してロールバックされるからである。この方法の欠点は，システム大きさ（例えばプロセッサ内のパイプライン段階）に比例して増大する，大きなハードウェアオーバーヘッドである。
【００１２】
本発明は，従来技術が有する上記問題点に鑑みてなされたものであり，本発明の目的は，システムやプロセッサを新規にスタートさせること無しに，特に，ハードウェアに関するコストの増大を回避しつつ，エラー，特に過渡的エラーを除去可能な，新規かつ改良されたプロセッサにおけるエラー除去装置および方法，プロセッサを提供することである。
【課題を解決するための手段】
【００１３】
上記課題を解決するために，本発明のある観点によれば，２つの実行ユニットを有するプロセッサにおけるエラーを除去するエラー除去装置であり，レジスタおよび比較手段が設けられ，該レジスタ内にはインストラクションおよび／またはそれに対応づけられた情報が格納可能であり，該インストラクションは２つの実行ユニット内で重畳して処理され，該比較手段は，該インストラクションおよび／またはそれに対応づけられた情報の不一致に伴ってエラーを認識する，プロセッサにおけるエラー除去装置において：上記レジスタは，第１のレジスタと第２のレジスタから成り，かつ，ロールバックするロールバック手段が設けられ，上記第１のレジスタは，該第１のレジスタから，プロセッサの前処理段階の状態および第２のレジスタの内容を導き出すことができ，上記ロールバック手段は，少なくとも１つのインストラクションおよび／または情報を第１のレジスタへロールバックし，かつ再度実施されることを特徴とする，プロセッサにおけるエラー除去装置が提供される。
【００１４】
本発明によれば，全プロセッサの状態を導き出すために，プロセッサのレジスタ内容の一部のみが必要とされる。私達は，プロセッサのすべてのレジスタの量を２つの部分量に分割する：
１）「エッセンシャルレジスタ（“Ｅｓｓｅｎｔｉａｌ  Ｒｅｇｉｓｔｅｒｓ”）」：一貫したプロセッサ状態を構築するに十分な内容を含む第１のレジスタ。
２）「デリバブルレジスタ（“Ｄｅｒｉｖａｂｌｅ  Ｒｅｇｉｓｔｅｒｓ”）」：エッセンシャルレジスタから完全に導き出すことができる第２のレジスタ。
【００１５】
この考え方においては，プロセッサ全体を一貫してより早期の状態へロールバックするために，エッセンシャルレジスタ（第１レジスタ）のみを，エラーを有する値から保護し，あるいはロールバック能力を持たせるだけで十分である。これは，ロールバックする手段が好ましくは第１のレジスタのみに対応づけられ，および／またはこの中にだけ含まれており，あるいはロールバックする手段は，少なくとも１つのインストラクションおよび／または情報が第１のレジスタ内にのみロールバックされるように形成されていることを，意味している。
【００１６】
また，上記比較手段は，第１のレジスタの前段に設けられても良いし，上記レジスタの出力の前段に設けられているとしても良い。
【００１７】
このとき，各第１のレジスタに，好ましくは少なくとも１つ，特に２つのバッファモジュールが対応づけられており，それは，レジスタファイルについても当てはまる。即ち，レジスタは，少なくとも１つのレジスタファイル内に設けられ，かつこのレジスタファイルには，それぞれアドレス用のバッファメモリとデータ用のバッファメモリを有する，少なくとも１つ，特に２つのバッファモジュールが対応づけられている。
【００１８】
好ましくは，例えばバリッドフラグによって，バッファモジュールまたはバッファメモリの有効性を前もって（予め）定め，および／または伝達する手段が設けられており，その場合に，インストラクションおよび／または情報の有効性は，有効性識別子（同様に，例えばバリッドフラグ）を介して予め定めることができ，および／または決定可能であり，かつこの有効性識別子は，リセット信号を介してリセットされるか，あるいは，特にアンドゲートの，ゲート信号を介してリセットされる。
【００１９】
その場合に本発明によれば，２つの解決方法が設けられており，即ち，２つの実行ユニットとそれに伴って本発明も，クロックオフセットなしで並列に作業し，あるいはまたクロックオフセットをもって作業する。
【００２０】
このとき，少なくともすべての第１のレジスタが，二重に設けられており，それぞれ実行ユニットに対応づけられる。
【００２１】
好ましくは，ロールバックは，２つの段階に分割されており，まず，第１のレジスタ，従って第１のレジスタのインストラクションおよび／または情報が，ロールバックされ，次に，それから第２のレジスタの内容が導き出される。その場合に第２のレジスタの内容は，好ましくはトラップ／エクセプション機構によって導き出される。
【００２２】
安全性をさらに向上させるための，特殊な実施形態においては，ロールバックに加えて，２つの実行ユニット内のビットフリップが伝達されることにより，実行ユニットの第２のレジスタの少なくとも１つのビットフリップ，従ってビット反転が除去される。これは，クロックオフセットを有する２つの実行ユニットの同期およびクロックオフセットを持たない２つの実行ユニットの同期を保持することができる，という利点を有している。そのために，実行ユニットがクロックオフセットなしで動作する場合には，２つの実行ユニット内のビットフリップが同時に伝達され，実行ユニットが予め定めることのできるクロックオフセットをもって動作する場合には，２つの実行ユニット内のビットフリップがこのクロックオフセットに遅延されて伝達される。
【発明の効果】
【００２３】
以上説明したように本発明によれば，システムやプロセッサを新規にスタートさせること無しに，特に，ハードウェアに関するコストの増大を回避しつつ，わずかなクロックサイクル内で，エラー，特に過渡的エラーを除去することが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下に添付図面を参照しながら，本発明の好適な実施の形態について詳細に説明する。なお，本明細書および図面において，実質的に同一の機能構成を有する構成要素については，同一の符号を付することにより重複説明を省略する。
【００２５】
本実施形態によるリカバリー機構の２つのバージョンを以下に紹介する。第１のバージョン「Ｂａｓｉｃ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｒｅｔｒｙ  Ｍｅｃｈａｎｉｓｍｕｓ」（以下，ＢＩＲＭと言う。）において，エッセンシャルレジスタ（Ｅｓｓｅｎｔｉａｌ  Ｒｅｇｉｓｔｅｒｓ）は，エラーを有するデータが書き込まれるということから保護される（データは，書き込まれる前にチェックされる）。各時点で有効な全プロセッサ状態を形成するためには，エッセンシャルレジスタ内の有効な内容で十分である（デリバブルレジスタの内容は，エッセンシャルレジスタから導き出すことができる）。
【００２６】
パフォーマンスの理由から，第２のバージョン「Ｉｎｐｒｏｖｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｒｅｔｒｙ  Ｍｅｃｈａｎｉｓｍｕｓ」（以下，ＩＩＲＭという。）における，ロールバック能力を伴うエッセンシャルレジスタでは，エラーを有する値が，エッセンシャルレジスタへ書き込まれた場合に初めてエラーであると認識されることを許す（エラー認識は，ここではデータの書込みと並列して行われる）。ロールバックは，ＩＩＲＭにおいて２つのステップで行われる。
【００２７】
まず，すべてのエッセンシャルレジスタが有効な状態へロールバックされる。第２のステップにおいて，デリバブルレジスタに導き出された値が満たされる。デリバブルレジスタを再び満たすことは，２つのバージョンにおいて，ほとんどのプロセッサ内に予め設けられているトラップ／エクセプション（Ｔｒａｐ／Ｅｘｃｅｐｔｉｏｎ）機構（機構への要請は，第４章で説明される）によってもたらされる。
【００２８】
本実施形態は，既知の（マイクロ）ロールバック技術に対して，次の点に基づいてハードウェアオーバーヘッドを減少させる。
・エラーを有する値から保護され，またはロールバック能力（例えば，バッファ等の）を搭載しなければならない単独のレジスタは，エッセンシャルレジスタである。
・エッセンシャルレジスタの量は，必ずしもプロセッサの複雑さ（例えばパイプライン段の数）に応じて増大しない。
・デリバティブレジスタのレジスタ内容を導き出すために，ほとんどのプロセッサアーキテクチャ内に予め設けられているトラップ機構が使用される。従って，付加的なハードウェアは必要ない。
【００２９】
従来技術とは異なり，本発明の実施形態において提案するアーキテクチャにおいては，マスターとチェッカーの間の同期は，リカバリ−オペレーションによっては破壊されない。
【００３０】
ここで，ロックステップモード（Ｌｏｃｋｓｔｅｐ  Ｍｏｄｅ），即ち，クロック同期で作動するデュアルコアアーキテクチャを説明する。これは，わずかなクロック内で内部の過渡的エラーを自立的に除去することができる。正確なエラー診断を可能にするために，付加的な内部の比較器がデュアルコアに内蔵されている。このとき，過渡的エラーの大部分は，エラーが発生しているインストラクションを繰返すことよって除去することができる。インストラクションを繰り返すために，上述した解決方法において，通常のプロセッサ内に予め設けられているトラップ／エクセプション機構を使用することができる。従って，付加的なハードウェアオーバーヘッド（Ｈａｒｄｗａｒｅ  Ｏｖｅｒｈｅａｄ）をもたらすことはない。
【００３１】
レジスタファイル内のビットフリップ（Ｂｉｔ  Ｆｌｉｐｓ）によって生じるエラーは，一般に，インストラクションの繰返しによっては除去できない。この種のエラーは，例えば信頼性の高いパリティによって認識され，特殊なトラップによって駆動システムへ報告される。供給されたエラー情報は，正確なものと判断され，それによって，駆動システムにどのインストラクションがエラーのあるレジスタ値を読ませたかも伝えられる。従って駆動システムは，エラーを除去するための適切なアクションを実行させることができる。ここで可能なアクションとしては，例えば，特殊なエラーハンドラーのタスクの呼出し，該当するタスクの繰返し，あるいはエラーが除去できない場合（例えば駆動システムのメモリ構造のエラー）におけるプロセッサ全体の新規スタートである。
【００３２】
従って本実施形態は，過渡的なエラーを高い信頼性で認識して，数クロックサイクル内で除去することができる，方法，装置およびプロセッサに関する。プロセッサは，デュアルコアとして形成されている。即ち，プロセッサは，２つのＣＰＵ（マスターとチェッカー）からなり，両者は同一のプログラムをパラレルに処理する。エラー認識は，マスターとチェッカーにおける種々の選択された信号の比較を介して実現される。
【００３３】
過渡的エラーは，主としてインストラクション繰返しによって除去される。レジスタファイル内のビットフリップは，パリティチェックによって認識され，駆動システムへ報告される。インストラクション繰返しのための機構は，すでに述べたように，２つの変形例で記述される。このうち，第１の変形例「Ｂａｓｉｃ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｒｅｔｒｙ  Ｍｅｃｈａｎｉｓｍｕｓ」（ＢＩＲＭ）は，最小のハードウェアオーバーヘッドに合わせて設計されているが，多くのアーキテクチャにおいてプロセッサのパフォーマンスにネガティブに影響する。「Ｉｍｐｒｏｖｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｒｅｔｒｙ  Ｍｅｃｈａｎｉｓｍｕｓ」（ＩＩＲＭ）と呼ばれる第２の変形例は，わずかなパフォーマンス損失しかもたらさないが，その代わりに大きなハードウェアオーバーヘッドをもたらす。
【００３４】
上記の変形例の一例として，ロックステップモードで処理が行われる，デュアルコアプロセッサが使用される。ロックステップモードという概念は，ここでは，２つのＣＰＵ（マスターとチェッカー）が互いにクロック同期しつつランし，同じ時点で同一のインストラクションを処理することを意味している。ここで，ロックステップモードは，デュアルコアプロセッサを実現するための簡単かつ安価な変形例で表されているが，コモンモードエラーに対して耐性が弱い。コモンモードエラーというのは，システムの種々の部分コンポーネント内で同時に発生し，同じような影響を受けて作用し，かつ同一の障害によってもたらされるエラーである。
【００３５】
デュアルコアプロセッサにおいては２つのＣＰＵは共通のハウジング内に収容されており，かつ共通の電圧源から給電されるので，所定の障害（例えば電圧変動）は２つのＣＰＵに同時に作用する。ロックステップ駆動においては常にそうであるように，２つのＣＰＵが正確に等しい状態にある場合に，障害が両方のＣＰＵ内で正確に同じように作用している確率を無視できない。この種のエラー（例えば，コモンモードエラー）は，マスターもチェッカーも同一の誤った結果を得てしまうので比較器によっては認識できない。
【００３６】
従って本実施形態は，過渡的なエラーを高い信頼性で認識して，わずかなクロックサイクル内に除去することができるプロセッサを記述する。プロセッサは，デュアルコアとして形成されている。同プロセッサは，２つのＣＰＵ（マスターとチェッカー）からなり，それら両者は同一のプログラムを並列に処理する。エラー認識は，マスターとチェッカーの種々の選択された信号の比較を介して実現される。
【００３７】
上述したコモンモードエラーが発生する可能性を少なくするために，マスターとチェッカーはクロックをずらして動作し，それはチェッカーが常にマスターに定められた時間間隔（例えば１．５クロック）だけ遅れて進行することを意味している（従って２つのＣＰＵは，どの時点においても同一の状態ではない）。従って，マスターから得られる結果は，この定められた期間の後に初めて比較器によってチェックすることができる。これは，定められた期間の後に初めてチェッカーに関連する信号が準備されるからである。従ってマスターの結果は，チェッカーの結果が準備されないとチェックすることができないので，それまでの間一時的にバッファされ，即ち，一時記憶されることとなる。
【００３８】
クロックオフセットを有するアーキテクチャと，クロックオフセットを持たないアーキテクチャの２つの例は，本発明の実施形態の対象の多様な使用可能性も明らかにしている。以下で，２つの例を紹介し，その場合に本実施形態の対象およびそれについて示される説明と表示に関して厳密な分離は行わない。即ち，以下に示した図すべてに示す例は，本実施形態に従って任意に分離しまた組み合わせることができる。
【００３９】
本実施形態において，エラーが認識された場合，ほぼデュアルコア全体が，エラーが発生する前の状態にロールバックされ，その状態からプログラム実施が再度続行されるので，新規スタートあるいはオフを実施する必要はない。
【００４０】
以下の説明は，図面と共に，特に，どのようにリカバリー機構をデュアルコアプロセッサ内へ組み込むこことができるか，を示している。ここで，使用されるアーキテクチャは，一つのアーキテクチャ例として用いられる（本実施形態に基づくリカバリー機構の使用は，例えば３段階のパイプラインには結びつかない）。プロセッサアーキテクチャへ課される唯一の要請は，要請を満たすことができる機構，特にエクセプション／トラップ機構を有する，パイプラインアーキテクチャであることである。Ｉ／Ｏへ案内されるコントロール信号（例えばライトイネーブル，リードイネーブルなど）は，すべての図において，一般的にコントロールと称される。
【００４１】
（インストラクションの繰返し）
図１では，デュアルコアプロセッサのアーキテクチャ例において，比較器が２つのコアの出力を比較する（すべての比較はパラレルに行われる）。ここで比較される出力は，例えば以下のものがある。
ａ：インストラクションアドレス（インストラクションアドレスのチェックが行われないと，マスターは，気づかずに，誤ったインストラクションをアドレスする可能性があり，それが両方のプロセッサにおいて認識されないまま処理されてしまう。）
ｂ：データアウト
ｃ：ライトイネーブルまたはリードイネーブルのような，コントロール信号
【００４２】
エラーは，外部に対して信号で知らされ，ここでは，該当する制御装置のオフをもたらさない。過渡的なエラーにおいては，計算機の損傷は存在しないない。従って，計算機はできるだけ迅速に再び使用できるように処理され，システムオフ，あるいは新規スタートを行う必要がなくなる。
【００４３】
本実施形態に基づくリカバリー機構は，エラー認識とインストラクションの繰返しに基づいている。いずれか任意のパイプライン段内でエラーが認識された場合には，原則的に最後のパイプライン内のインストラクションが繰り返される。最後のパイプライン内のインストラクションの繰返しの結果，前のパイプライン段の他のすべてのインストラクション（後続のインストラクション）も繰り返され，それによって完全なパイプラインが再び新しい値で満たされる。その場合にインストラクション繰返しは，ほとんどの通常のプロセッサ内に予め設けられているトラップ（−エクセプション）機構によって実施される。
【００４４】
このとき，トラップ（−エクセプション）機構は，次の要請を満たさなければならない。トラップがトリガされるとすぐ，トリガされた時点でプロセッサのパイプライン内にある各インストラクションは，プロセッサ状態を変更することを阻止される。外部の書込みアクセス（例えばデータメモリへの，ネットワークインターフェイスまたはＤ／Ａ変換器のような付加モジュールへのアクセス）も，同様に禁止される。後続のクロックにおいて，トラップに対応づけられたトラップルーチンへ分岐する。トラップルーチンは，指令「トラップルーチンから復帰」によって再び出ることができ，それにより，最後のパイプライン段内におけるトラップを作動させた時点のインストラクションを再び実施し，その後のインストラクションを続行することができる。
【００４５】
トラップ機構を用いてインストラクションを繰り返すために，単純に「空の」トラップルーチンが呼び出される（空のトラップルーチンとは，「トラップルーチンからの復帰」指令だけからなるルーチンである）。それは文字通り「空の」トラップルーチンであるので，それは呼び出された後に即座に消え去る。この「空の」トラップルーチンによって，まず，パイプラインが空にされ，その後，トラップが作動された時点において最後のパイプライン段内にあったインストラクションが正確に再び実施，続行される。
【００４６】
本実施形態においては，この空のトラップルーチンを，インストラクションリトライトラップと称する。インストラクションリトライトラップは，所定のレジスタが有効かつ一貫した内容を有している場合にのみ，有効なプロセッサ状態を形成することができる。この複数のレジスタは，エッセンシャルレジスタと称され，トラップ呼出し後のプロセッサ状態を定める，すべてのレジスタの内容を有している。それに属するのは，まず，レジスタファイル，ステータスレジスタ，およびそれぞれアーキテクチャに応じて異なる例えばエクセプションベクトルテーブルのようなコントロールレジスタである。エッセンシャルレジスタの最も重要なレジスタは，最後のパイプライン段のインストラクションのアドレスを記憶するレジスタである。これは，トラップから戻るときに正確にこのレジスタへジャンプしなければならないからである。エッセンシャルレジスタは，図２のアーキテクチャ例に示される（ＲＥＧファイル：レジスタファイル，ＰＣ２：最後のパイプライン段におけるインストラクションのアドレス，ＰＳＷ：ステータスレジスタ）。
【００４７】
エッセンシャルレジスタへ書き込まれる，各エラーを有する値は，エラーを有する値として確実に認識されなければならない。インストラクションリトライ機構の第１のバージョン（ＢＩＲＭ）において，エッセンシャルレジスタへ書き込まれるすべての値は，それらが実際にレジスタ内へ引き渡される前にチェックされる。値のチェックは，比較器を用いて行われ，その比較器は各クロックサイクル内でマスターの信号をチェッカーの信号と比較する（図２）。比較器（図２のコンパレータ（Ｃｏｍｐａｒａｔｏｒ））は，各信号ａをａ’と，ｂをｂ’と，ｃをｃ’と，…比較する（比較は，並列に行われる）。少なくとも１つのペアの関連する信号が一致しない場合には，コンパレータは同じクロックサイクルにおいて，インストラクションリトライトラップをトリガする。こうして，エッセンシャルレジスタに誤った値が書き込まれることが回避され，エラーを有するインストラクションが繰り返されることはない。
【００４８】
表１の図表は，ベーシックインストラクションリトライ（ＢＩＲＭ）機構の機能を，例を用いて示している。図表内（インストラクションの下方）には，所定のクロックの間どのパイプライン段内に所定のインストラクションがあるか，が示されている。
【表１】
2006164277.tif 000003
…（表１  ＢＩＲＭのシーケンス例）
ここで，ＩＦは，Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈであり，ＤＥＣは，Ｄｅｃｏｄｅであり，ＥＸは，Ｅｘｅｃｕｔｅであり，ＲＴＲは，Ｒｅｔｕｒｎ  ｆｒｏｍ  Ｔｒａｐ  Ｒｏｕｔｉｎｅであり，Ｓｔｏｐ  ｂｙ  Ｔｒ（Ｔｒａｐ）は，同期トラップが立ち上がると新しい値がレジスタやバッファに書き込まれないことを示す。
【００４９】
ここで，インストラクションＦのどこかの段（例えば，クロック５−７のいずれか）に過渡的エラーが発生したと仮定する。遅くともクロック７において，このエラーが比較器で認識され，インストラクションＦはその結果内容の書込みを阻止され，インストラクションリトライトラップがトリガされる。インストラクションリトライトラップは，空のトラップであり，「トラップルーチンからの復帰」（ＲＴＲ）のみから形成される。クロック１０において，ＲＴＲインストラクションは実行（Ｅｘｅｃｕｔｅ）段に達し，それが，クロック１１において以前にエラーのあったインストラクションＦの新たなフェッチをもたらす。クロック１４の時点では，インストラクションＦが完全に繰り返されており，インストラクションＦによる正しい結果を書き込んでいる。
【００５０】
ベーシックＩＲＭ（ＢＩＲＭ）の欠点は，比較器が多くのアーキテクチャ内で時間的に厳しいパス内にあることである。というのは，新しい値は，それが比較されて準備ができた場合に，レジスタ内を引き継がなくてはならないからである。従って，ＡＬＵによる新しいデータの計算，マスターとチェッカーのデータの比較およびトラップ機構の作動は，同一のクロックで行われなければならない（図２は，潜在的に厳しいパスを示している）。
【００５１】
インストラクションリトライ機構の第２のバージョン（ＩＩＲＭ）においては，時間的に厳しいパスを短縮するために，以下の戦略が選択された（図３）。比較すべき信号は，まずレジスタに一次記憶されて，それに続くクロックにおいて初めて比較される。従ってＢＩＲＭの厳しいパスは，ＩＩＲＭにおいては２つの短い部分に分割される。従ってマスターとチェッカーの間の信号を比較し，かつトラップを作動させるために，１つのクロック全期間を利用できる。というのは，ここでは比較器（Ｃｏｍｐａｒａｔｏｒ）とＣＰＵは並列に処理を行うことができるからである。
【００５２】
もちろん，この方法においては，エラーは，すでにエラーを有する値がレジスタへ引き渡された場合に初めて，認識される。この問題に対処するために，ＩＩＲＭにおいては，エッセンシャルレジスタにロールバック能力が設けられる。エラーが認識された場合には，レジスタはまず，有効な状態へロールバックされ（１クロック），その後インストラクションリトライトラップがトリガされる（図３）。「１サイクルディレイ」コンポーネントが，インストラクションリトライトラップのトリガを１クロック遅延させ，従ってインストラクションリトライトラップは，エッセンシャルレジスタがすでにロールバックされている場合に初めてトリガされる。
【００５３】
図４は，個別レジスタに対してロールアップ能力を設けた場合の回路構成図を示している（図３のレジスタＰＣ２とＰＳＷは，ロールバック可能なレジスタである）。ロールバック可能なレジスタは，パーマネントレジスタ，バッファ，バリッドビットおよびコントロールロジックからなる。新しいデータは，直接パーマネントレジスタへは書き込まれず，まずバッファに格納される。ロールバック信号がデータを格納する時点でインアクティブである場合（ｒｂ＝１，ｒｂはローアクティブ）には，バッファ内容がバリッドビットによって有効であるとマークされる（ｖｂ＝１）。次のクロックの開始時に，ロールバック信号がまだ相変わらずインアクティブである場合に（従ってロールバックは行われない），バッファの内容がパーマネントレジスタへ転送される（クロックイネーブルがアクティブ（ｃｅ＝１）である場合に，レジスタは，次のトリガ（クロックの立ち上がりもしくは立ち下がり）に印加されている値を引き取る）。
【００５４】
それに対してロールバック信号がアクティブである場合（ｒｂ＝０；ロールバックが行われる）には，パーマネントレジスタはその古い値を維持し（ｃｅ＝０；クロックイネーブルがインアクティブである場合に，レジスタは現在出力している値を維持する），バッファ内容はバリッドビットによって無効であるとマークされる（ｖｂ＝０）。無効であるとマークされたバッファ内容（ｖｂ＝０）は，原則的にパーマネントレジスタには移されない。読み取りアクセスする場合，バッファが有効であるとマークされていれば（ｖｂ＝１），バッファ内容（ｄｏ＝ｂｖ）が返され，バッファが無効であるとマークされていれば（ｖｂ＝０），パーマネントレジスタの内容（ｄｏ＝ｐｖ）が返される。ロールバック可能なレジスタの全行動は，コントロールユニットによって制御される（コントロールユニットの行動は，図４のトゥルーステーブル（Ｔｒｕｔｈ  Ｔａｂｌｅ）によって詳細に示されている）。
【００５５】
図５は，レジスタファイル全体に対してロールバック能力を設けた場合の回路構成図を示している（図３のレジスタファイルは，ロールバック可能なレジスタファイルである）。ロールバック可能なレジスタファイルは，レジスタファイル自体，データバッファ，アドレスバッファ，バリッドビットおよびコントロールロジックからなる。新しいデータは，直接レジスタファイルにではなく，まず，データバッファに書き込まれる（付属のアドレスが，アドレスバッファに書き込まれる）。データを格納する時点でロールバック信号がインアクティブである場合（ｒｂ＝１；ｒｂはローアクティブ），バッファ内容はバリッドビットによって有効であるとマークされる（ｖｂ＝１）。次のクロックの開始時に，ロールバック信号がまだ相変わらずインアクティブである場合に（従ってロールバックは行われない），バッファの内容がレジスタファイルへ移される（アドレッシングは，アドレスバッファに記憶されているアドレスによって行われる）。
【００５６】
それに対してロールバック信号がアクティブである場合（ｒｂ＝０），レジスタファイルには新しい値は書き込まれず，バッファ内容がバリッドビットによって無効であるとマークされる（ｖｂ＝０）。無効であるとマークされたバッファ内容は，原則，レジスタファイルには転送されない。読み取りアクセスの場合に，バッファが有効であるとマークされていれば（ｖｂ＝１），アドレスバッファ内のアドレスが読み取るべきアドレスと一致するか（ｒａ＝ｂａ），が調べられる。一致する場合には，バッファ内容が返される（ｄｏ＝ｄｂ）。このようなバッファの内容は，このアドレスにおける実際の有効な値に相当している（バッファ内の有効な値は，レジスタファイル内の対応する値よりも現時点に近い）。読み取るべきアドレスとアドレスバッファ内のアドレスが一致しない場合（ｒａとｂａとは等しくない），バッファ内には，このレジスタの内容に関して，レジスタファイル内によりも現時点に近いバージョンはない。この場合にはレジスタファイルの対応する値が返される（ｄｏ＝ｄｒ）。バッファ内容が無効であるとマークされた場合には，常に該当する値がレジスタファイルから供給される（ｄｏ＝ｄｒ）。ロールバック可能なレジスタファイルの全行動は，コントロールユニットによって制御される（コントロールユニットの行動は，図５のトゥルーステーブルによって詳しく説明されている）。
【００５７】
表２に示す図表は，インプルーブドインストラクションリトライ機構（ＩＩＲＭ）の機能を，例を用いて示している。
【表２】
2006164277.tif 000004
…（表２  ＩＩＲＭのシーケンス例）
【００５８】
表２の上方の部分（インストラクションの位置）には，所定のクロックの間における，どのパイプライン段に所定のインストラクションがあるか，が示されている。図表の下方の部分には，個々のクロック間のロールバック可能なレジスタ（バッファとパーマネントレジスタ）の内容がリストアップされている。ここでは，ロールバック可能なレジスタファイルとして，クロック毎に，どの値がバッファ内にあるか，そしてどの値が最後の値として本来のレジスタファイルに記入されているか，が示される。ＡまたはＢのような値は，それがインストラクションＡまたはインストラクションＢの結果であることを示している。
【００５９】
ここで，インストラクションＦの何れかの段でエラーが発生した（クロック５−７）と仮定する。遅くともクロック８において，このエラーが比較器の１つによって認識されて，後続のインストラクション（Ｇ）がその内容の書込みを阻止され，ロールバックがトリガされる。クロック９の開始時には，すでにエッセンシャルレジスタセットのすべてのレジスタがロールバックされており（バッファは，無効であるとマークされ，それによってパーマネントレジスタ内の値が，最も新しい有効な値となる），インストラクションリトライトラップがトリガされる。インストラクションＨは，トリガされたトラップによって，その内容の書込みを阻止される。インストラクションリトライトラップは，空のトラップであり，従って「トラップルーチンからの復帰」（ＲＴＲ：Ｒｅｔｕｒｎ  ｆｒｏｍ  Ｔｒａｐ−Ｒｏｕｔｉｎｅ）指令のみからなる。クロック１２において，ＲＴＲインストラクションはすでに実行段に達しており，そのＲＴＲインストラクションの実行段が，クロック１３において，前段においてエラーが生じていたインストラクションＦを新たにフェッチされる。クロック１６の開始時には，インストラクションＦは完全に（エラーなしで）繰り返されており，そこで得られた正しい結果が書き込まれる。
【００６０】
（外部の出力）
上述したリカバリー機構は，デュアルコア内部の過渡的エラーが，外部のコンポーネント（キャッシュ，データメモリ，付加モジュール等）まで広がることを阻止しなければならない。ＢＩＲＭにおいては，この条件は，暗示的に満たされている。というのは，エラーが出力導線（図２の導線７と８）上で確認できるようになったとき，インストラクションリトライトラップは，まだ，同一のクロック内においてトリガされるからである。「インストラクション繰返し」においてすでに説明したように，トラップ機構は，トラップがトリガされた場合に，外部のコンポーネントへの各書込みアクセスを禁止する。
【００６１】
ＢＩＲＭとは異なり，リカバリー機構の第２のバージョン（ＩＩＲＭ）において，エラーは，エラーのあるデータがすでに書き込まれた場合に初めて認識される。エラーのあるデータが，外部のコンポーネントへ達することを阻止するために，デュアルコアとシステムのＩ／Ｏコントロールユニット（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌ）の間に，バッファを接続することができる。新しいデータは，まず，バッファに書き込まれ，そして，データのチェックが終了するまでに１クロック遅延する。正しいデータは，Ｉ／Ｏコントロールユニットへ引き渡される。それに対してデータがエラーありと分類された場合には，バッファの内容はロールバック信号によって無効であるとマークされる。その場合にバッファの無効マーキングは，任意の方法で実現することができる（例えばバッファレジスタのリセット，Ｉ／Ｏコントロールユニットへのコントロール信号におけるライトイネーブルビットの消去等）。
【００６２】
図７は，デュアルコアとコントロールユニットのＩ／Ｏとの間のバッファの位置を示している。この例において，Ｉ／Ｏコントロールユニットは，キャッシュを含めたメモリおよび任意の拡張モジュール（例えばＤ／Ａ変換器，ネットワークインターフェイス等）と接続されている。
【００６３】
（パーマネントエラー）
パーマネントエラーを過渡的エラーから区別することができるようにするために，エラーカウンタを使用することができる。例えば，独立したコンポーネントを使用して，リカバリー機構によって使用される２本のトラップ導線（Ｉｎｓｔｒｕｃｔｉｏｎ  ＲｅｔｒｙＴｒａｐとＲｅｇＥｒｒｏｒＴｒａｐ）またはロールバック導線の監視によって，所定のタイムインターバル内のエラー頻度を求めることで確実に区別することができる。単位時間当たりのエラー数が，所定のしきい値を越えた場合に，エラーはパーマネントであると見なすことができる。
【００６４】
（レジスタファイル内のビットフリップ）
もちろん，インストラクションの繰返しによって，必ずしもすべてのエラーが除去できるわけではない。レジスタファイル内のビットフリップによって生じるエラーは，読出しを繰り返しても除去されない。この種のエラーをも除去するために，レジスタエラーをレジスタエラーとして認識し，駆動システムへ伝える，付加的な機構が内蔵されている。そのとき，レジスタファイル内のすべてのデータ値は，パリティビットによって安全確保されている（パリティビットは，ＡＬＵの後段に接続されているパリティジェネレータによって生成される：図６）。
【００６５】
レジスタファイルへの各読み出しアクセスにおいて，読み出された値はパリティチェックを受ける。ＣＰＵにおけるすべてのパリティチェッカーの出力は互いに結合され，図中ＬｏｃａｌＲｅｇＥｒｒｏｒで示される信号を形成する。２つのＣＰＵのＬｏｃａｌＲｅｇＥｒｒｏｒ信号が，論理和によって再び互いに結合され，信号ＲｅｇＥｒｒｏｒを形成する。この信号は，２つのＣＰＵの少なくとも１つにおいてレジスタ値の読出しの際にパリティエラーが認識されたことを信号で知らせる。このとき，２つのコア内でＲｅｇＥｒｒｏｒＴｒａｐで表されるトラップルーチンが作動し，それが駆動システムに対してレジスタエラーを伝える。ここで駆動システムへ提供されるエラー情報は，正確である。というのは，トラップルーチンのリターンジャンプアドレス内に，エラーのあるレジスタにアクセスしたインストラクションのアドレスが正確に記憶されているからである。それによって駆動システムにとっては，固有に反応することが可能である（該当するタスクの繰返しあるいは固有のエラーハンドラーの呼出し）。極めて重要なことは，２つのＣＰＵ（エラーのあるものも）が，同期を得るために，トラップルーチンへジャンプすることである。
【００６６】
上述したリカバリー機構は，原則的に，マスターとチェッカーの出力信号を比較することによるエラー認識，およびインストラクション繰返しによるエラー除去に基づいている。
【００６７】
マスターとチェッカーは，例えば，クロックオフセットを伴って作業し，その場合，チェッカーは常に定められた期間（ｋクロック，その場合にｋは実数である）だけマスターから遅延して進む。好ましくは，上記期間は，定められた数の完全なクロックまたは定められた数の半クロックからなる。比較を可能にするために，マスターの出力信号は，チェッカーに関する出力信号が準備されるまでの間，適当な遅延コンポーネントによって一次記憶（バッファ）されなければならない。
【００６８】
図８は，上述したエラー耐性のある（Ｅｒｒｏｒ  Ｔｏｌｅｒａｎｔ）デュアルコアプロセッサ内の遅延コンポーネント（“ｋ−ｄｅｌａｙ”）を表している。マスターの比較すべき信号は，比較器（“Ｃｏｍｐａｒａｔｏｒ”）へ達する前に，遅延コンポーネント“ｋ−Ｄｅｌａｙ”によってｋクロックだけ遅延される。チェッカーはマスターの後方を進んでいるので，チェッカーは，マスターとの関連においてその入力信号を遅延して受け取らなければならない。インストラクションおよびＩ／Ｏユニットから供給される入力データの遅延は，同様に遅延コンポーネントによってももたらされる。比較すべき信号は，マスターまたはチェッカーから，遅延コンポーネント（“ｋ−ｃｙｃｌｅ  ｄｅｌａｙ”）または比較器（“Ｃｏｍｐａｒａｔｏｒ”）へ直接案内されず，まずレジスタに一時的に記憶される。それによって，信号の比較およびインストラクション繰返しの処理のために，完全な１クロック分の時間が提供され，ＣＰＵのタイミングは，比較器によってネガティブな影響を受けない。レジスタに一次記憶することによって，エラー認識時間は，付加的なクロックの分だけ延長される。エラー認識時間は，マスターとチェッカーの間のクロックオフセットと，レジスタによって実行される付加的なクロックとから得られる（エラー認識時間＝ｋ＋１）。
【００６９】
（プロセッサ状態のロールバック）
プロセッサ状態のロールバックは，インストラクション平面上で行われ，“Ｉｎｓｔｒｕｃｔｉｏｎ  Ｒｅｔｒｙ  Ｍｅｃｈａｎｉｓｍｕｓ”（ＩＲＭ）で表される機構によってもたらされる。ＩＲＭの目的は，プロセッサ全体を，エラーが発生する前におけるプロセッサの状態にロールバックすることである。その場合に上記機構は，主として，通常のプロセッサ内に予め設けられているトラップ（エクセプション）機構を利用する。
【００７０】
その場合に，トラップ（エクセプション）機構は，以下の要請を満たさなければならない。トラップがトリガされるとすぐの時点で，プロセッサのパイプライン内にある各インストラクションがプロセッサの状態を変更することが阻止される。次のクロックにおいて，トラップに対応づけられたトラップルーチンへジャンプされる。トラップルーチンは，“Ｒｅｔｕｒｎ  ｆｏｒｍ  Ｔｒａｐ  Ｒｏｕｔｉｎｅ”（ＲＴＲ）指令によって，再び消え去ることができる。それによって，トラップが作動する時点で，最後のパイプライン段内にあったインストラクションによる実施が再び続行される。
【００７１】
トラップ機構を用いてインストラクションを繰り返すために，単純に，「空の」トラップルーチンが呼び出される（空のトラップルーチンというのは，“Ｒｅｔｕｒｎ  ｆｒｏｍ  Ｔｒａｐ  Ｒｏｕｔｉｎｅ”指令だけからなるルーチンである）。それは「空の」ルーチンであるので，そのルーチンは呼び出された後に，即座にまた消えてしまう。パイプラインは空にされ，実施は，トラップの作動の時点で最後のパイプライン内にあったインストラクションにより，本来の実施が再び続行される。
【００７２】
私達は，この空のルーチンをインストラクションリトライトラップと名付ける。インストラクションリトライトラップは，所定のレジスタが有効かつ一貫した内容を有している場合にだけ，有効なプロセッサ状態を形成することができる。この複数のレジスタが，エッセンシャルレジスタと称され，トラップが呼び出された時にその内容が保護され，あるいは維持されなければならないすべてのレジスタを有している。そのエッセンシャルレジスタに属するのは，レジスタファイル，ステータスレジスタ，および，例えばエクセプションベクトルテーブルのような種々のアーキテクチャによるコントロールレジスタである。
【００７３】
エッセンシャルレジスタの最も重要なレジスタは，最後に実行したパイプライン内のインストラクションのアドレスを記憶するレジスタである。というのは，トラップを出る際に，正確にこのアドレスへジャンプしなければならないからである。エッセンシャルレジスタは，図８にアーキテクチャ例で示されている（ＲＥＧファイル：レジスタファイル，ＰＣ２：最後のパイプ段内のインストラクションのアドレス，ＰＳＷ：ステータスレジスタ）。エッセンシャルレジスタに属さないすべてのレジスタは，デリバブルレジスタと称される。これは，その中身がインストラクションリトライトラップによって導き出されるからである（それらは，トラップによってまず空にされて，後続のプログラム実施によって再び有効な値で満たされる）。
【００７４】
従って，インストラクションリトライトラップの正しい機能を保証するために，前もってエッセンシャルレジスタ内のすべてのエラーが認識され，かつ，除去されなければならない。エラーの認識は，エッセンシャルレジスタへのマスターの書込みアクセスと，チェッカーの書き込みアクセスとを比較することによって得られる（比較は，“Ｃｏｍｐａｒａｔｏｒ”によって行われる）。すでに上で述べたように，タイムオフセットを有するデュアルコアにおいて，エラー認識時間はｋ＋１クロックである。従ってエラーが認識された後に，再び有効な状態を得るために，エッセンシャルレジスタがｋ＋１クロックロールバックされなければならない。
【００７５】
これは，エッセンシャルレジスタがローバック能力（次の部分を参照）を伴って拡張されることにより可能となる。すでに述べたように，エッセンシャルレジスタ内の有効な状態は，インストラクションリトライトラップによって完全に有効なプロセッサ状態を形成するため必要かつ十分な前提条件である（従ってデリバブルレジスタは，ロールバック能力を有する必要はない）。
【００７６】
（エッセンシャルレジスタのロールバック）
次に，個々のレジスタまたは完全なレジスタファイルに，レジスタまたはレジスタファイルを所定のクロック数だけロールバックするロールバック能力をどのようにして持たせるか説明する。
【００７７】
（個別レジスタ）
ここでは，各クロックにおいて書き込まれる個別レジスタ（例えばパイプレジスタ）にどのようにしてロールバック能力を持たせることができるかを示す。ロールバック可能な個別レジスタは，コントロールロジック，パーマネントレジスタおよび１つまたは複数のテンポラリーバッファからなる。その場合に，記憶すべきデータは，それがパーマネントレジスタ内へ引き取られる前に，まずテンポラリーバッファを通過する。ロールバックは，すべてのバッファの内容が無効であることのマーキングによって実行される。無効とマークされたバッファの内容は，原則，パーマネントレジスタへは引き取られない。その場合に，テンポラリーバッファの数は，ロールバックの際にレジスタがロールバックされるクロックの数に相当する。ここでは，レジスタを読み出す場合には，常に最新の有効な値が返されなければならないことに注意しなければならない。ロールバックが行われなかった場合に，即ち，バッファが有効であるとマークされている場合には，最新の有効な値は第１のバッファ内にある。ロールバックの直後には，最新の有効な値は，パーマネントレジスタ内にある。
【００７８】
図９には，２クロックだけロールバック可能な，２テンポラリーバッファ（“Ｂｕｆｆａ  １”と“Ｂｕｆｆａ  ２”）およびそれに属する２つのバリッドビット（“Ｖ１”“Ｖ２”）を有する，ロールバック可能な，レジスタが例として示されている。パーマネントレジスタ，テンポラリーバッファおよびバリッドビットは，クロック駆動され，それに対してコントロールロジックは非同期のロジックブロックとして実現されている。
【００７９】
各クロックのトリガによって，印加されているデータが“Ｂｕｆｆａ  １”へ移されて，“Ｂｕｆｆａ  １”内の古い内容が“Ｂｕｆｆａ  ２”内へシフトされる。ロールバック信号がインアクティブである場合に，各クロックのトリガにおいて第１のバリッドビット（“Ｖ１”）の新しい値が有効へセットされ，古い値が“Ｖ１”から“Ｖ２”へシフトされる。“Ｂｕｆｆａ  ２”の内容は，ロールバック信号がインアクティブである場合だけ，パーマネントレジスタ内へ移されて，“Ｖ２”が有効へセットされる。
【００８０】
ロールバックを実施するために，ロールバック信号がアクティブへセットされ，それによって，次のクロックのトリガにおいて２つのバリッドビット（“Ｖ１”と“Ｖ２”）が無効へセットされ，パーマネントレジスタはその時出力している現在値を維持する。読み取りアクセスにおいて，最新の有効な値は，以下のようにして求められる。
【００８１】
“Ｖ１”が有効へセットされている場合には，“Ｂｕｆｆａ  １”の内容が，最新の有効な値である。“Ｖ１”が無効へセットされている場合には，最後のクロックにおいてロールバックが実施されており，最新の有効なデータはパーマネントレジスタから読み出されなければならない。バッファ２が最新の有効な値を有している場合は，決して存在しない。とういのは，ロールバックにおいては常に“Ｂｕｆｆａ  １”と“Ｂｕｆｆａ  ２”は共通に無効であるとマークされ，その後“Ｂｕｆｆａ  １”が第１のバッファとして有効な値で満たされるからである（“Ｖ１”＝無効かつ“Ｖ２”＝有効は，各クロックに書き込まれるレジスタでは，決して起こり得ない）。
【００８２】
ロールバック可能なレジスタの全行動は，コントロールユニットによって制御される。コントロールユニットの行動は，図９と１０のトゥルーステーブルによって詳しく説明される。その場合に，図９においては，バリッドビットのリセットは，アンドゲートによって，図１０ではリセットによって行われる。詳細について以下で説明する。
【００８３】
１．ロールバック信号がアクティブである場合（従ってｒｂ＝０，ロールバックはローアクティブ信号である），原則，新しい値はパーマネントレジスタへ引き継がれない（ｗｅ＝０）。出力には，任意の値を印可することができる。
【００８４】
２．ロールバック信号がインアクティブであり（ｒｂ＝１），かつ２つのバッファが無効であるとマークされた場合（ｖｂ１＝０，ｖｂ２＝０），新しい値はパーマネントレジスタへは引き継がれない（ｗｅ＝０）。その場合に出力には，パーマネントレジスタの値が印可されなければならない（ｄｏ＝ｐｖ）。
【００８５】
３．ロールバック信号がインアクティブであって（ｒｂ＝１），第１のバッファが有効な値を持たず（ｖｂ１＝０），しかし第２のバッファはすでに（ｖｂ２＝１）である状態は，決して発生しない。ロールバック後は，常に２つのバリッドビットは０にセットされる。その後は，常に，まず，第１のバリッドビットが有効であるとマークされる（ｖｂ１＝１）。後に再びロールバックが行われる場合には，ふたたび２つのバリッドビットすべてが無効とマークされる（ｖｂ１＝０，ｖｂ２＝０）。
【００８６】
４．ロールバックがインアクティブであり（ｒｂ＝１），第１のバッファが有効とマークされ（ｖｂ１＝１），第２のバッファは無効（ｖｂ２＝０）とマークされた場合に，新しい値はパーマレジスタへは引き継がれない（ｗｅ＝０）。このとき第１のバッファの値が，出力に印加される（ｄｏ＝ｂｖ）。
【００８７】
５．ロールバックがインアクティブであり（ｒｂ＝１），第１と第２のバッファが有効とマークされた場合（ｖｂ１＝１，ｖｂ２＝１），第２のバッファのデータがパーマネントレジスタへ引き継がれる（ｗｅ＝１）。このとき第１のバッファの値が，出力に印加される（ｄｏ＝ｂｖ）。
【００８８】
（レジスタファイル）
次に，上述した個別レジスタとは異なり，必ずしも各クロックにおいて書き込まれないロールバック能力を持たせることのできる，レジスタファイルを示す。ロールバック可能なレジスタファイルは，コントロールロジック，レジスタファイル自体および，それぞれデータワードとレジスタアドレスを記憶することのできる，１つまたは複数のテンポラリーバッファからなる。記憶すべきデータは，レジスタファイルへ受け継がれる前に，それに付属するアドレスと共にまず，テンポラリーバッファを通過する。ロールバックは，すべてのバッファの内容が無効であることのマーキングによって実行される。
【００８９】
無効とマークされたバッファ内容は，原則，レジスタファイルには引き継がれない。その場合にテンポラリーバッファの数は，ロールバックの際にレジスタファイルがロールバックされるクロックの数に相当する。ここで，レジスタファイルを読み出す場合には，常に最新の有効な値が読み出されるように注意しなければならない。この値は，所望のアドレスを有する，第１のバッファ内にある。どの有効なテンポラリーバッファも所望のアドレスを有していない場合，あるいはすべてのテンポラリーバッファが無効であるとマークされている場合には，直接レジスタファイルから読み出される。
【００９０】
図１１には，２クロックロールバックすることができる，即ち，２つのテンポラリーバッファ（“Ｂｕｆｆａ  １”と“Ｂｕｆｆａ  ２”）とそれに属する２つのバリッドビット（“Ｖ１”と“Ｖ２”）を有する，ロールバック可能なレジスタファイルが例として示されている。レジスタファイル自体，テンポラリーバッファ，およびバリッドビットは，同クロックで動作し，それに対してコントロールロジックは，非同期のロジックブロックとして実現されている。
【００９１】
各クロックのトリガによって，印加されているデータが印加されているアドレスと共に“Ｂｕｆｆａ  １”へ引き継がれ，古い内容が“Ｂｕｆｆａ  １”から“Ｂｕｆｆａ  ２”へシフトされる（同時に古い値が“Ｖ１”から“Ｖ２”へシフトされる）。ライトイネーブル信号が印加され，かつロールバック信号がインアクティブである場合（従って実際にレジスタファイル内へ書き込もうとし，かつロールバックが行われない場合）には，“Ｂｕｆｆａ  １”の新しいバッファ内容が，バリッドビット“Ｖ１”によって有効であるとマークされる。“Ｂｕｆｆａ  ２”のデータは，バッファ内容が“Ｖ２”によって有効であるとマークされ，かつロールバック信号がインアクティブである場合にのみ，本来のレジスタファイルへ引き継がれる。ロールバックを実施するために，ロールバック信号がアクティブにセットされ，それによって，次のクロックのトリガにおいて２つのバリッドビット（Ｖ１とＶ２）が無効にセットされて，まだ同一のクロック内でレジスタファイルへの書込みが禁止される。
【００９２】
ロールバック可能なレジスタファイルにおいて，上述したロールバック可能な個別レジスタの場合よりも幾分複雑に構成され，それ故，擬似コードで記述される，読取りアクセスにおける最新の有効な値の決定：
________________________________________________________________________________
IF“V1”=g・ltig AND Adresse in “Buffer 1”=zu lesende Adresse THEN aktuellster g・ltiger Wert in “Buffer 1”
ELSEIF“V2”= g・ltig AND Adresse in “Buffer 2”=zu lesende Adresse THEN aktuellster g・ltiger Wert in “Buffer 2"
ELSEIF aktuellster g・ltiger Wert im Registerfile selbst
________________________________________________________________________________
【００９３】
ロールバック可能なレジスタファイルの全体的な処理は，コントロールユニットによって制御される。コントロールユニットの動作は，図１１のトゥルーステーブルによって詳細に説明される。
【００９４】
１．ロールバック信号がアクティブである場合には（従ってｒｂ＝０，即ちロールバックはローアクティブ信号である），原則新しい値はレジスタファイルへ引き継がれない（ｗｅ＝０）。出力は任意の値を供給することができる。
【００９５】
２．ロールバック信号がインアクティブであり（ｒｂ＝１），２つのバッファが無効とマークされた場合（ｖｂ１＝０，ｖｂ２＝０），新しい値はレジスタファイルには引き継がれない（ｗｅ＝０）。その場合には出力には，レジスタファイルから読み出された値が用いられなければならない（ｄｏ＝ｄｒ）。
【００９６】
３．ロールバック信号がインアクティブであり（ｒｂ＝１），第１のバッファが無効（ｖｂ１＝０）そして第２のバッファが有効（ｖｂ２＝１）とマークされ，かつ読取るべきアドレスが第２のバッファ内に記憶されているアドレスに一致した場合（（ｒａ＝ｂａ２）＝ｔｒｕｅ），出力には第２のバッファのデータ内容が用いられなければならない（ｄｏ＝ｄｂ２）。第２のバッファの内容が，レジスタファイルへ書き込まれる（ｗｅ＝１）。
【００９７】
４．ロールバック信号がインアクティブであり（ｒｂ＝１），第１のバッファが無効（ｖｂ１＝０），第２のバッファが有効（ｖｂ２＝１）とマークされ，読み出すべきアドレスが第２のバッファ内に記憶されているアドレスに相当しない場合（（ｒａ＝ｂａ２）＝ｆａｌｓｅ），出力にはレジスタファイルから読み出された値が出力されなければならない（ｄｏ＝ｄｒ）。第２のバッファの内容が，レジスタファイルへ書き込まれる（ｗｅ＝１）。
【００９８】
５．ロールバック信号がインアクティブであり（ｒｂ＝１），第１のバッファが有効（ｖｂ１＝１），第２のバッファが無効（ｖｂ２＝０）とマークされ，読み出すべきアドレスが第１のバッファ内に記憶されているアドレスに相当する場合（ｒａ＝ｂａ１）＝ｔｒｕｅ），出力には第１のバッファのデータ内容が用いられなければならない（ｄｏ＝ｄｂ１）。レジスタファイルは，書き込まれない（ｗｅ＝０）。
【００９９】
６．ロールバック信号がインアクティブであり（ｒｂ＝１），第１のバッファが有効（ｖｂ１＝１）で，第２のバッファが無効（ｖｂ２＝０）とマークされ，かつ読み出すべきアドレスが第１のバッファ内に記憶されているアドレスに相当しない場合（（ｒａ＝ｂａ１）＝ｆａｌｓｅ），出力にはレジスタファイルから読み出した値が用いられなければならない（ｄｏ＝ｄｒ）。レジスタファイルは，書き込まれない（ｗｅ＝０）。
【０１００】
７．ロールバック信号がインアクティブであり（ｒｂ＝１），２つのバッファが有効（ｖｂ１＝１，ｖｂ２＝１）とマークされ，読み出すべきアドレスが第１のバッファ内に記憶されているアドレスに相当する場合（（ｒａ＝ｂａ１）＝ｔｒｕｅ），出力には，第１のバッファのデータ内容が用いられなければならない（ｄｏ＝ｄｂ１）。第２のバッファの内容が，レジスタファイルに書き込まれる（ｗｅ＝１）。
【０１０１】
８．ロールバック信号がインアクティブであり（ｒｂ＝１），２つのバッファが有効（ｖｂ１＝１，ｖｂ２＝１）とマークされ，読み出すべきアドレスが第１のバッファ内に記憶されているアドレスに相当せず（（ｒａ＝ｂａ１）＝ｆａｌｓｅ），かつ読み出すべきアドレスが第２のバッファ内に記憶されているアドレスに相当する（（ｒａ＝ｂａ２）＝ｔｒｕｅ）場合には，出力には第２のバッファのデータ内容が用いられなければならない（ｄｏ＝ｄｂ２）。第２のバッファの内容が，レジスタファイルへ書き込まれる（ｗｅ＝１）。
【０１０２】
９．ロールバック信号がインアクティブであり（ｒｂ＝１），２つのバッファが有効とマークされ（ｖｂ１＝１，ｖｂ２＝１），読むべきアドレスが第１のバッファ内に記憶されているアドレスに相当せず（（ｒａ＝ｂａ１）＝ｆａｌｓｅ），かつ読むべきアドレスが第２のバッファ内に記憶されているアドレスにも相当しない（（ｒａ＝ｂａ２）＝ｆａｌｓｅ）場合には，出力には，レジスタファイルから読み出された値が生じなければならない（ｄｏ＝ｄｒ）。第２のバッファの内容が，レジスタファイルに書き込まれる（ｗｅ＝１）。
【０１０３】
表３内の図表は，インストラクションリトライ機構（ＩＲＭ）のシーケンスを，例を用いて示している。このとき，マスターとチェッカーは１クロックのクロックオフセットによって進行し，エラーはインストラクション第５０番を処理する間に発生した，と仮定する。
【表３】
2006164277.tif 000005
…（表３  クロックオフセットにおけるインストラクションリトライ機構ＩＲＭのシーケンス例）
【０１０４】
その場合に，第１の考察されるクロック（Ｃｙｃｌｅ＝１）において，マスターはちょうど，インストラクション５０を実施するところであり，チェッカーはインストラクション４９を実施する。２つのＣＰＵがこのインストラクションをすでに実施した場合に，インストラクション５０のチェックは，２クロック遅れて（Ｃｙｃｌｅ＝３）行うことができる。このクロックにおいて，エラーが認識されて，エッセンシャルレジスタのためのロールバックがトリガされる。
【０１０５】
続くクロック（Ｃｙｃｌｅ＝４）において，エッセンシャルレジスタはすでに２クロックだけロールバックされている（エッセンシャルレジスタは，再び，Ｃｙｃｌｅ＝１内にあったのと，同じ状態にある）。これまではエッセンシャルレジスタのみがロールバックされ，プロセッサの残りのレジスタはその古い値を維持しているので，プロセッサは，一貫しない状態にある。それにもかかわらず，トラップの正しい作動のための前提条件は満たされている（エッセンシャルレジスタは，正しい，一貫した値を有している）。同じクロックにおいて，インストラクションリトライトラップ（ＩＲＴ）がトリガされる。インストラクションリトライトラップは，ただ一つのインストラクション，“ＲｅｔｕｒｎＦｒｏｍＴｒａｐＲｏｕｔｉｎｅ（ＲＴＲ）”−インストラクションからなる。
【０１０６】
クロック（Ｃｙｃｌｅ）番号５において，ＲＴＲ−インストラクションがフェッチされる。クロック７においては，ＲＴＲ−インストラクションは，プロセッサの実行段階に達する（２つのＣＰＵ内）。ＲＴＲ−インストラクションの実施によって，２つのＣＰＵのパイプラインはフラッシュされ，２つのＣＰＵには，インストラクションリトライトラップ（ＩＲＴ）の作動の時点でそれぞれのＣＰＵの”ＰＣ２”レジスタ（図８）内にあった，インストラクションアドレスがフェッチされる（”ＰＣ２”レジスタ内には，インターラプトとトラップのためのリターンジャンプアドレスが記憶される）。
【０１０７】
従って実施は，マスターまたはチェッカー内のアドレス５０または４９で続行される。クロック１２の開始時には，２つのＣＰＵはその前にエラーのあったインストラクションを完全に繰り返しており，正しい結果が確認されている。
【０１０８】
（レジスタファイル内のビットフリップ）
ビットフリップとは，レジスタ内のビットの論理値の，障害によってもたらされた反転である。
【０１０９】
プロセッサを一定数のクロックｔだけロールバックすることによっては，レジスタファイル内のビットフリップは，一般に，除去できない。というのは，そのビットフリップは，ｔクロックよりもさらに前の時点で最後に書き込まれたレジスタに関しているからである。この種のエラーを除去するために，レジスタエラーをレジスタエラーとして認識して，駆動システムへ報告する，付加的な機構が内蔵されている。その場合に個々のレジスタは，パリティビットによって安全確保される（図１３）。
【０１１０】
レジスタファイルへの各読取りアクセスにおいて，読み出された値が，パリティチェックを受ける。レジスタエラーは，ハードウェア内で除去されず，トラップ（ＲｅｇＥｒｒｏｒＴｒａｐ）によって駆動システムへ報告される。トラップ内に記憶されているリターンジャンプアドレスによって，駆動システムは，正確に，どのインストラクションがエラーのあるレジスタ値へアクセスしたか，を知る。それによって，駆動システムは，固有に反応することが可能になる（該当するタスクの繰返しあるいは固有のエラーハンドラーの呼出し）。
【０１１１】
２つのＣＰＵの同期を得るために，ＲｅｇＥｒｒｏｒＴｒａｐ（ＲＥＴ）は，２つのＣＰＵ内で，正確に同一のインストラクションにおいて動作しなければならない。クロックオフセットを有するデュアルコアにおいては，これは，ＲＥＴもずらして動作しなければならないことを意味する。トラップのずれた作動を説明するために，タイミングチャートが添付されており，それはｋ＝１のクロックオフセットをとり，かつ例を用いて，どのようにマスターまたはチェッカーがレジスタファイル内のビットフリップに反応するか，を示している。その場合に，それぞれインストラクションはアドレス５０において誤ったレジスタ内容を読み出した，と仮定される。
【０１１２】
ＲＥＴ１，ＲＥＴ２，ＲＥＴ３，ＲＥＴ４などは，ＲｅｇＥｒｒｏｒＴｒａｐの第１，第２，第３，第４などのインストラクションに関する。このトラップルーチンが正確に何をするか（タスクの繰返し，エクセプションハンドラーの呼出し等），およびそれらがどのくらい多くのインストラクションを有しているか，は，駆動システムのプログラマーに委ねられる。
【０１１３】
マスター内でパリティエラーが発生した場合（記載の例ではインストラクション５０において），マスターは次のクロックで，ＲｅｇＥｒｒｏｒＴｒａｐへ入る。“ｋ−Ｄｅｌａｙ”−コンポーネント（図１３のブロック回路図を参照）によって，チェッカーは，それ自体インストラクション５０に達した場合に，ｋクロック遅れて（ｋ−１）初めて，そのＲｅｇＥｒｒｏｅＴｒａｐを作動させる（表４のシーケンスダイアグラムを参照）。
【表４】
2006164277.tif 000006
…（表４  ＲｅｇＥｒｒｏｅＴｒａｐ−ＲＥＴを作動させるためのシーケンス例
【０１１４】
チェッカーが，パリティエラーを発見した場合に（記載の例においてはインストラクション５０において），まず上述した，インストラクション繰返しのための機構ＩＲＭがトリガされる（表４のシーケンスダイアグラムを参照）。それによってクロック６の開始時には，また，マスターがインストラクション４９を，チェッカーがインストラクション４８をフェッチした状態が形成されている（ｋ＝１のクロックオフセットを有するデュアルコアにおいては，ＩＲＭは原理的に２つのＣＰＵを２インストラクションだけロールバックする）。
【０１１５】
３クロック遅れて（タスクナンバー９の開始時），インストラクション５０はマスターの実行段内にある。この状態から，“ＩＲＭ−Ｄｅｌａｙ”−コンポーネント（図１３のブロック回路図を参照）によって，マスター内のパリティエラーにも責任のある，同じ機構がトリガされる。マスターは，クロック１１においてＲｅｇＥｒｒｏｒＴｒａｐへ入り，チェッカーは，ｋ−サイクルディレイコンポーネントによって遅延され，１クロック遅れて続く。
【０１１６】
そして図１４は，チェッカー内のパリティエラーのためのＲＥＴの動作を，再度インストラクションダイアグラムとして示している。
2006164277.tif 000007
【０１１７】
以上，添付図面を参照しながら本発明の好適な実施形態について説明したが，本発明は係る例に限定されないことは言うまでもない。当業者であれば，特許請求の範囲に記載された範疇内において，各種の変更例または修正例に想到し得ることは明らかであり，それらについても当然に本発明の技術的範囲に属するものと了解される。
【産業上の利用可能性】
【０１１８】
本発明は，２つの実行ユニットまたはＣＰＵを有するプロセッサにおけるエラーを除去する装置と方法およびそれに対応するプロセッサに適用可能である。
【図面の簡単な説明】
【０１１９】
【図１】デュアルコアプロセッサシステムの例を示している。
【図２】レジスタ分割を有するデュアルコアプロセッサを用いて本実施形態を開示している。
【図３】レジスタ分割とクロックオフセットなしのレジスタのロールバック能力を有するデュアルコアプロセッサを用いて，本実施形態を示している。
【図４】ロールバック能力とバッファを有する，本実施形態に基づく個別レジスタを示している。
【図５】ロールバック能力およびアドレスとデータのためのそれぞれのバッファを有する，本実施形態に基づくレジスタファイルを示している。
【図６】クロックオフセットなしでプロセッサにおけるビットフリップ除去を説明するためのデュアルコアシステムを開示している。
【図７】本実施形態に基づく対象において出力をバッファするための配置を示している。
【図８】レジスタ分割とクロックオフセットを有するレジスタのロールバック能力とを有するデュアルコアプロセッサを用いて本実施形態を示している。
【図９】ロールバック能力と２つのバッファおよびアンドゲートによるバリッドビットのリセットを有する，本実施形態に基づく個別レジスタを示している。
【図１０】ロールバック能力と２つのバッファおよびリセットによるバリッドビットのリセットを有する，本実施形態に基づく個別レジスタを示している。
【図１１】ロールバック能力と２つのバッファおよびアンドゲートによるバリッドビットのリセットを有する，本実施形態に基づくレジスタファイルを示している。
【図１２】ロールバック能力と２つのバッファおよびリセットによるバリッドビットのリセットを有する，本実施形態に基づくレジスタファイルを示している。
【図１３】クロックオフセットを有するプロセッサにおけるビットフリップ除去を説明するためのデュアルコアシステムを開示している。
【図１４】チェッカー内でパリティエラーのためのトラップＲＥＴの作動をインストラクションダイアグラムとして示している。
【図１】
2006164277.tif 000008
【図２】
2006164277.tif 000009
【図３】
2006164277.tif 000010
【図４】
2006164277.tif 000011
【図５】
2006164277.tif 000012
【図６】
2006164277.tif 000013
【図７】
2006164277.tif 000014
【図８】
2006164277.tif 000015
【図９】
2006164277.tif 000016
【図１０】
2006164277.tif 000017
【図１１】
2006164277.tif 000018
【図１２】
2006164277.tif 000019
【図１３】
2006164277.tif 000020
【図１４】
2006164277.tif 000021