(57)【特許請求の範囲】
【請求項１】
データ処理を実行するための集積回路であって、
前記の集積回路の動作中に、前記集積回路内部の２回のサンプリングのデータ信号値によってエラーを検出するように機能するエラー検出器と、
前記エラー検出器に応答すると共に、動作中の前記エラーを回復するように機能するエラー回復論理回路と、
前記集積回路の１つ以上の性能制御動作パラメータを制御するように機能する動作パラメータ制御器とを備え、
サンプリングされた値の間の差異が前記エラーを表し、
前記動作パラメータ制御器が、動作中のゼロでないエラーレートを維持するために、前記エラー検出器によって検出されたエラーの１つ以上の特性に基づいて、前記１つ以上の性能制御パラメータの内の少なくとも１つを動的に制御し、
前記集積回路によるデータ処理が継続するように、動作中の前記エラーが、前記エラー回復論理回路によって回復される
ことを特徴とする集積回路。
【請求項２】
前記２回のサンプリングが、それぞれ異なる時刻のサンプリング点で信号値を検出している
ことを特徴とする請求項１に記載の集積回路。
【請求項３】
前記動作パラメータ制御器が、前記エラー検出器によって検出されたエラーの１つ以上の特性に基づいて１つ以上の性能制御パラメータの内の前記少なくとも１つを調整するために、フィードバック制御を適用する
ことを特徴とする請求項１、または請求項２に記載の集積回路。
【請求項４】
前記エラー検出器によって検出されたエラーの１つ以上の特性が、前記エラー検出器によって検出された前記エラーのエラーレートと、前記エラー検出器によって検出されたエラーの前記エラー回復論理回路による回復から生じる処理性能の減少との内の少なくとも１つを有する
ことを特徴とする請求項１から請求項３のいずれかに記載の集積回路。
【請求項５】
前記１つ以上の性能制御パラメータが、動作電圧、動作周波数、集積回路のボディバイアス電圧、及び温度の内の少なくとも１つを有する
ことを特徴とする請求項１から請求項４のいずれかに記載の集積回路。
【請求項６】
複数の処理ステージを備え、
少なくとも１つの処理ステージからの処理ステージ出力信号が、後続処理ステージに対する処理ステージ入力信号として提供され、
前記少なくとも１つの処理ステージが、
処理論理回路出力信号を生成するために、少なくとも１つの処理ステージ入力値に対して処理動作を実行するように機能する処理論理回路と、
非遅延獲得時刻において、前記処理論理回路出力信号の非遅延値を獲得するように機能する非遅延型ラッチと、
前記非遅延獲得時刻より遅い遅延獲得時刻において、前記処理論理回路出力信号の遅延値を獲得するように機能する遅延型ラッチとを備えると共に、
前記非遅延獲得時刻の後で、前記非遅延値が、前記処理ステージ出力信号として前記後続処理ステージに対して提供され、
前記エラー検出器が、前記非遅延獲得時刻の後で、前記非遅延獲得時刻に前記処理論理回路が前記処理動作を終了していないことを示す、前記処理論理回路出力信号における変化を検出するために、前記非遅延値と前記遅延値とを比較するように機能する比較器を備え、
前記エラー回復論理回路が、前記比較器が前記変化を検出したときに、前記後続処理ステージによる前記非遅延値の使用を抑制するエラー回復動作を実行するように機能する
ことを特徴とする請求項１から請求項５のいずれかに記載の集積回路。
【請求項７】
前記非遅延値における準安定性を検出するように機能すると共に、もし準安定性であることが検出された場合、前記非遅延値の使用を抑制するように前記エラー回復論理回路を誘発する準安定性検出器を備える
ことを特徴とする請求項６に記載の集積回路。
【請求項８】
前記比較器が前記変化を検出するとき、前記エラー回復論理回路が、前記処理ステージの出力信号として、前記非遅延値を前記遅延値と置換するように機能する
ことを特徴とする請求項６、または請求項７に記載の集積回路。
【請求項９】
前記後続処理ステージに対する前記遅延値の供給が、処理動作を通じての前方への進行を強制する
ことを特徴とする請求項８に記載の集積回路。
【請求項１０】
前記比較器が前記変化を検出するとき、前記エラー回復論理回路が、前記非遅延値の代わりに前記遅延値が前記非遅延型ラッチに記憶されることを強制するように機能する
ことを特徴とする請求項６から請求項９のいずれかに記載の集積回路。
【請求項１１】
前記処理ステージ、及び前記後続処理ステージの中の処理動作が、非遅延クロック信号によって駆動される
ことを特徴とする請求項６から請求項１０のいずれかに記載の集積回路。
【請求項１２】
前記比較器が前記変化を検出するとき、前記エラー回復論理回路が、前記後続処理ステージに対して、非遅延値の入力から回復すると共に、その代りに前記遅延値を使用するための時間を提供するために、前記非遅延クロック信号を開閉制御するように機能する
ことを特徴とする請求項１１に記載の集積回路。
【請求項１３】
非遅延獲得時刻が、前記非遅延クロック信号における所定の位相ポイントから導かれると共に、
前記非遅延クロック信号の位相遅延バージョンが、遅延クロック信号として使用され、前記遅延獲得時刻が、前記遅延クロック信号における所定の位相ポイントから導かれる
ことを特徴とする請求項１２に記載の集積回路。
【請求項１４】
前記複数の処理ステージが、同期パイプラインの中のそれぞれのパイプラインステージである
ことを特徴とする請求項６から請求項１３のいずれかに記載の集積回路。
【請求項１５】
遅延値が異なる入力値で実行された処理動作によって影響を受けないように、前記処理動作に必要とされる最小の処理時間が、前記非遅延獲得時刻から前記遅延獲得時刻を分離した時間より大きい
ことを特徴とする請求項６から請求項１４のいずれかに記載の集積回路。
【請求項１６】
前記最小の処理時間が超過することを保証するために、前記処理論理回路が１つ以上の遅延素子を備える
ことを特徴とする請求項１５に記載の集積回路。
【請求項１７】
前記処理論理回路が前記遅延獲得時刻までに前記処理動作を完了するように、前記処理動作に必要とされる最大の処理時間が、前記非遅延獲得時刻から前記遅延獲得時刻を分離した時間と、前記非遅延獲得時刻の間の時間との合計値より小さい
ことを特徴とする請求項６から請求項１６のいずれかに記載の集積回路。
【請求項１８】
前記処理ステージが、データ処理装置の一部である
ことを特徴とする請求項６から請求項１７のいずれかに記載の集積回路。
【請求項１９】
前記変化に対応するエラー検出の合計数を記憶するように機能するエラーカウンタ回路を備える
ことを特徴とする請求項６から請求項１８のいずれかに記載の集積回路。
【請求項２０】
前記合計数がソフトウェアによって読み取られ得る
ことを特徴とする請求項１９に記載の集積回路。
【請求項２１】
データ処理を実行するための集積回路の制御方法であって、
前記の集積回路の動作中に、前記集積回路内部の２回のサンプリングのデータ信号値によってエラーを検出する処理と、
動作中に検出されたエラーを回復する処理と、
前記集積回路の１つ以上の性能制御動作パラメータを制御する処理とを有し、
サンプリングされた値の間の差異が前記エラーを表し、
動作中のゼロでないエラーレートを維持するために、検出されたエラーの１つ以上の特性に基づいて、前記１つ以上の性能制御パラメータの内の少なくとも１つが制御され、
前記集積回路によるデータ処理が継続するように、動作中の前記エラーが、前記エラー回復論理回路によって回復される
ことを特徴とする制御方法。
【請求項２２】
前記２回のサンプリングが、それぞれ異なる時刻のサンプリング点で信号値を検出している
ことを特徴とする請求項２１に記載の制御方法。
【請求項２３】
前記制御する処理が、検出されたエラーの１つ以上の特性に基づいて１つ以上の性能制御パラメータの内の前記少なくとも１つを調整するために、フィードバック制御を適用する
ことを特徴とする請求項２１、または請求項２２に記載の制御方法。
【請求項２４】
検出されたエラーの１つ以上の特性が、検出されたエラーのエラーレートと、検出されたエラーの回復から生じる処理性能の減少との内の少なくとも１つを有する
ことを特徴とする請求項２１から請求項２３のいずれかに記載の制御方法。
【請求項２５】
前記１つ以上の性能制御パラメータが、動作電圧、動作周波数、集積回路のボディバイアス電圧、及び温度の内の少なくとも１つを有する
ことを特徴とする請求項２１から請求項２４のいずれかに記載の制御方法。
【請求項２６】
後続処理ステージに対する処理ステージ入力信号として、複数の処理ステージの中の少なくとも１つの処理ステージから処理ステージ出力信号を提供する処理を有し、
前記少なくとも１つの処理ステージが、
処理論理回路出力信号を生成するために、少なくとも１つの処理ステージ入力値に対してデータ処理論理回路による処理動作を実行し、
非遅延獲得時刻において、前記処理論理回路出力信号の非遅延値を獲得し、
前記非遅延獲得時刻より遅い遅延獲得時刻において、前記処理論理回路出力信号の遅延値を獲得するように動作すると共に、
前記非遅延獲得時刻の後で、前記非遅延値が、前記処理ステージ出力信号として前記後続処理ステージに対して提供され、
前記エラーを検出する処理が、
前記非遅延獲得時刻の後で、前記非遅延獲得時刻に前記処理論理回路が前記処理動作を終了していないことを示す、前記処理論理回路出力信号における変化を検出するために、前記非遅延値と前記遅延値とを比較する処理を有し、
前記検出されたエラーを回復する処理が、前記後続処理ステージによる前記非遅延値の使用を抑制する処理を有する
ことを特徴とする請求項２１から請求項２５のいずれかに記載の制御方法。
【請求項２７】
前記非遅延値における準安定性を検出すると共に、もし準安定性であることが検出された場合、前記非遅延値の使用の抑制を誘発する処理を有する
ことを特徴とする請求項２６に記載の制御方法。
【請求項２８】
前記変化が検出されるとき、前記処理ステージの出力信号として、前記非遅延値を前記遅延値と置換する
ことを特徴とする請求項２６、または請求項２７に記載の制御方法。
【請求項２９】
前記後続処理ステージに対する前記遅延値の供給が、処理動作を通じての前方への進行を強制する
ことを特徴とする請求項２６から請求項２８のいずれかに記載の制御方法。
【請求項３０】
前記変化が検出されるとき、前記非遅延値の代わりに前記遅延値が記憶されることを強制する
ことを特徴とする請求項２６から請求項２９のいずれかに記載の制御方法。
【請求項３１】
前記処理ステージ、及び前記後続処理ステージの中の処理動作が、非遅延クロック信号によって駆動される
ことを特徴とする請求項２６から請求項３０のいずれかに記載の制御方法。
【請求項３２】
前記比較する処理において変化が検出されるとき、前記エラーを回復する処理が、前記後続処理ステージに対して、非遅延値の入力から回復すると共に、その代りに前記遅延値を使用するための時間を提供するために、前記非遅延クロック信号を開閉制御する処理を有する
ことを特徴とする請求項３１に記載の制御方法。
【請求項３３】
非遅延獲得時刻が、前記非遅延クロック信号における所定の位相ポイントから導かれると共に、
前記非遅延クロック信号の位相遅延バージョンが、遅延クロック信号として使用され、前記遅延獲得時刻が、前記遅延クロック信号における所定の位相ポイントから導かれる
ことを特徴とする請求項３２に記載の制御方法。
【請求項３４】
前記複数の処理ステージが、同期パイプラインの中のそれぞれのパイプラインステージである
ことを特徴とする請求項２６から請求項３３のいずれかに記載の制御方法。
【請求項３５】
遅延値が異なる入力値で実行された処理動作によって影響を受けないように、前記処理動作に必要とされる最小の処理時間が、前記非遅延獲得時刻から前記遅延獲得時刻を分離した時間より大きい
ことを特徴とする請求項２６から請求項３４のいずれかに記載の制御方法。
【請求項３６】
前記最小の処理時間が超過することを保証するために、前記処理論理回路が１つ以上の遅延素子を備える
ことを特徴とする請求項３５に記載の制御方法。
【請求項３７】
前記処理論理回路が前記遅延獲得時刻までに前記処理動作を完了するように、前記処理動作に必要とされる最大の処理時間が、前記非遅延獲得時刻から前記遅延獲得時刻を分離した時間と、前記非遅延獲得時刻の間の時間との合計値より小さい
ことを特徴とする請求項２６から請求項３６のいずれかに記載の制御方法。
【請求項３８】
前記処理ステージが、データ処理装置の一部である
ことを特徴とする請求項２６から請求項３７のいずれかに記載の制御方法。
【請求項３９】
前記変化に対応するエラー検出の合計数を記憶する処理を有する
ことを特徴とする請求項２６から請求項３８のいずれかに記載の制御方法。
【請求項４０】
前記合計数がソフトウェアによって読み取られ得る
ことを特徴とする請求項３９に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の分野に関するものである。更に特に、本発明は、集積回路の処理ステージ内における、処理エラーの検出、及びそのような処理エラーからの回復に関するものである。
【背景技術】
【０００２】
一連の連続して接続された処理ステージ（例えば、パイプライン接続された回路）が形成されると考えることができる集積回路を提供することが知られている。各々のステージの間は、１つ以上の信号値が記憶されるラッチである。各処理ステージの処理論理回路は、先行する処理ステージからの入力値にすぐに反応するか、もしくは、他の場合には、関連付けられた出力ラッチに記憶されるべき出力信号値を生成するように反応する。その処理動作を完了するために処理論理回路に関して要する時間は、集積回路が動作できるスピードを決定する。もし全てのステージの処理論理回路が短時間にその処理動作を完了することができる場合、その場合に、信号値は、高速の処理に帰着する出力ラッチを通じて急速に進められることができる。システムは、最も遅い処理論理回路が受信する入力信号の処理動作を実行すると共に適切な出力信号を生成する速度より、更に急速にステージの間で信号を進めることができない。これは、システムの最大性能を制限する。
【０００３】
いくつかの状況においては、できる限り急速にデータを処理することが望まれ、従って、処理ステージは、処理ステージで最も遅いものがペースを維持することができない速さまで、できる限り急速な速度でそれらの処理動作を進めるように駆動されることになる。他の状況において、集積回路の電力消費は、処理速度より重要であると共に、集積回路の動作電圧は、処理ステージで最も遅いものがもはや再びペースを維持することができないポイントまで、電力消費を減少させるように減少させられることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
これらの限界条件を扱う１つの方法は、異なる集積回路の間での最も悪い場合の製造偏差、動作環境条件、処理される信号のデータ依存状態等を考慮する許容範囲によって許容される最小値より少ないということが知られている周波数を有する処理クロックによって、集積回路を駆動することである。電圧レベルに照らすと、全てのステージが、最も悪い場合の製造偏差、環境条件、データ依存状態等を考慮するペースを維持することができることを保証する最低電圧レベルを十分に越えている電圧レベルで集積回路を動かすことが普通である。従来のアプローチが、最も悪い場合の状況を考慮するために、最大動作周波数、及び最小動作電圧を制限することに注意が必要であるということが認識されることになる。
【０００５】
他の既知のシステムにおいては、特別な集積回路がその周波数要求、または電圧要求を越えて作動しているか否かを測定することを意図している回路素子が提供される。そのような既知の機構は、信号が遅延線の端部、または遅延線の中の他の所定のポイントに達するということを保証するために、同時に、もしその遅延線に沿った伝播が同様に満足されていた場合、その集積回路上で最も遅い処理ステージが、その処理動作を完了していることを十分に保証するために、それを通る信号の伝播が監視され得る集積回路に組み込まれた遅延線を有する。遅延線は、最も悪い場合の製造偏差、環境条件、データ依存状態等を考慮するために、十分な余裕をもって、あらゆる処理ステージの最大の遅延を超える遅延を備えるように設計される。従って、この技術は、同様に動作周波数、及び電圧が制御される方法において注意が必要である。
【課題を解決するための手段】
【０００６】
１つの特徴から見ると、本発明はデータ処理を実行するための集積回路を提供し、前記集積回路が、前記の集積回路の動作中に、前記集積回路内部の２回のサンプリングのデータ信号値によってエラーを検出するように機能するエラー検出器と、前記エラー検出器に応答すると共に、動作中の前記エラーを回復するように機能するエラー回復論理回路と、前記集積回路の１つ以上の性能制御動作パラメータを制御するように機能する動作パラメータ制御器とを備え、サンプリングされた値の間の差異が前記エラーを表し、前記動作パラメータ制御器が、動作中のゼロでないエラーレートを維持するために、前記エラー検出器によって検出されたエラーの１つ以上の特性に基づいて、前記１つ以上の性能制御パラメータの内の少なくとも１つを動的に制御し、前記集積回路によるデータ処理が継続するように、動作中の前記エラーが、前記エラー回復論理回路によって回復されることを特徴とする。
【０００７】
本技術は、反直観的に、そして分野における強い設計の先入観に反して、ゼロでないエラーレートを維持する方法で慎重に集積回路を操作する。検出されたエラーからの回復と関連付けられた時間、及びエネルギーに関するコストは、集積回路の動作限界の近くで動作することにより生成される節約より少ない。
【０００８】
前記２回のサンプリングは、それぞれ異なる時刻のサンプリング点で信号値を検出していることが好ましい。
【０００９】
好ましい実施例は、前記動作パラメータ制御器が、前記エラー検出器によって検出されたエラーの１つ以上の特性に基づいて１つ以上の性能制御パラメータの内の前記少なくとも１つを調整するために、フィードバック制御を適用することである。
【００１０】
広い範囲の可能性が可能であると同時に、好ましい実施例は、前記エラー検出器によって検出されたエラーの１つ以上の特性が、前記エラー検出器によって検出された前記エラーのエラーレートと、前記エラー検出器によって検出されたエラーの前記エラー回復論理回路による回復から生じる処理性能の減少との内の少なくとも１つを有することである。
【００１１】
性能制御パラメータが多種多様な異なる形式を取ると同時に、好ましい実施例において、前記１つ以上の性能制御パラメータは、動作電圧、動作周波数、集積回路のボディバイアス（body bias：基板バイアス）電圧、及び温度の内の少なくとも１つを有する。
【００１２】
本発明の好ましい実施例は、データ処理を実行するための集積回路を提供し、前記集積回路が複数の処理ステージ備え、少なくとも１つの処理ステージからの処理ステージ出力信号が、後続処理ステージに対する処理ステージ入力信号として提供され、前記少なくとも１つの処理ステージが、処理論理回路出力信号を生成するために少なくとも１つの処理ステージ入力値に対して処理動作を実行するように機能する処理論理回路と、非遅延獲得時刻において、前記処理論理回路出力信号の非遅延値を獲得するように機能する非遅延型ラッチ（non-delayed latch）と、前記非遅延獲得時刻より遅い遅延獲得時刻において、前記処理論理回路出力信号の遅延値を獲得するように機能する遅延型ラッチ（delayed latch）とを備えると共に、前記非遅延獲得時刻の後で、前記非遅延値が、前記処理ステージ出力信号として前記後続処理ステージに対して提供され、更に、前記非遅延獲得時刻の後で、前記非遅延獲得時刻に前記処理論理回路が前記処理動作を終了していないことを示す、前記処理論理回路出力信号における変化を検出するために、前記非遅延値と前記遅延値とを比較するように機能する比較器と、前記比較器が前記変化を検出したときに、前記後続処理ステージによる前記非遅延値の使用を抑制するエラー回復動作を実行するように機能するエラー回復論理回路とを備えることを特徴とする。
【００１３】
これらの好ましい実施例は、処理ステージの動作が失敗する限界条件を発見するために、処理ステージの動作自体が直接監視され得るということを認識する。現実の失敗が発生するとき、その場合に、全体的な誤った動作が生成されないように、これらの失敗は修正され得る。本アプローチにおける失敗したポイントの直接観察と比較される、以前のアプローチにおける非常に慎重な性能マージンの回避によって達成された利点は、失敗が発生するときのシステム回復の際に消費された追加の時間及び電力を十二分に補償する。慎重に、クリティカルパスがそれらのタイミング要求を満たすことができないように、そのような処理エラーが発生することを可能にすることは、全てのクリティカルパスがそれらのタイミング要求を常に満たすことを保証するのにかなりの努力を要することが正常であるこの技術分野において非常に反直観的である。処理ステージは、広く考察されるべきであると共に、例えば、変化と改ざんを受けることなく信号が１つのラッチから次のラッチに渡される単純なバスを含む。
【００１４】
エラーの発生を検出した場合、これが訂正されることができるか、もしくは補償されることができる、様々な異なる方法がある。１つの好ましい種類の実施例において、エラー回復論理回路は、処理ステージ出力信号として、非遅延値を遅延値と置換するように機能する。遅延値サンプルからとられた正しい値と既知の問題のある処理ステージ出力信号の置換は、エラーが発生すると共に補償を必要としているとしても、データ処理動作を通じた前方（順方向）への進行を保証するのに役立つので、非常に好ましい。
【００１５】
好ましい装置は、エラー回復論理回路が、非遅延値の代わりに遅延値が非遅延型ラッチに記憶されることを強制するように機能するものである。
【００１６】
本技術は、同期及び非同期データ処理回路に適用できると同時に、本発明は、処理ステージの中の処理動作が非遅延クロック信号によって駆動される同期データ処理回路に良く適している。
【００１７】
処理ステージが非遅延クロック信号によって駆動されるシステムに照らすと、エラー回復論理回路は、後続処理ステージに対して、誤った非遅延値の入力から回復すると共に、その代りに正しい遅延値を使用するための十分な時間を提供するために非遅延クロック信号を開閉制御（gating：ゲート制御）することによってエラーからの回復を容易にするように、これを利用し得る。
【００１８】
非遅延クロック信号を使用する実施例に照らすと、獲得時刻は、非遅延クロック信号における所定の位相ポイントから導かれ得ると共に、遅延クロック信号は、非遅延クロック信号から導かれる。非遅延獲得と遅延獲得との間の遅延は、これらの２つのクロック信号の間の位相シフトによって定義され得る。
【００１９】
本技術は、処理ステージがそれぞれ同期パイプラインの中のパイプラインステージである実施例に特に良く適している。
【００２０】
エラーの検出、及びエラーの回復は、様々な異なる状況において使用され得るが、しかし、そのようなエラーの検出に基づいてそれが動的に集積回路の動作パラメータを制御するのが望まれる状況に特に良く適している。直観的に反論すると、本技術は、たとえエラーの発生から回復するのに必要な手段を考慮するとしても、スピードまたは電力消費のどちらに関しても、向上された全体性能に対応することができるので、システムが対象レートとして維持されるゼロでないエラーレートによって動作するように、動作パラメータを制御するために使用され得る。
【００２１】
変化し得る動作パラメータは、とりわけ、動作電圧、動作周波数、（しきい値レベルを制御する）集積回路のボディバイアス電圧、及び温度を含む。
【００２２】
遅延型ラッチ内に獲得されたデータが常に正しいことを保証するために、あらゆるステージの処理論理回路における最大遅延の上限は、どんな動作点でもあらゆるステージの処理論理回路の遅延が、遅延獲得が遅れる量とクロック期間とを加える合計量を超えることができない量である。同様に、あらゆる処理遅延の下限については、短い経路に沿って伝播される後続のデータが遅延獲得値を不適切に破損させないことを保証するために、あらゆるステージの処理論理回路は、遅延獲得が非遅延獲得の後に続く時間を超える処理時間を備えるべきであるという要求がある。これは、必要に応じて、１つ以上の遅延素子で遅延の少ない経路を引き延ばすことによって保証され得る。
【００２３】
本技術は、一般的なデジタル処理回路のような、多種多様な異なる種類の集積回路に適用できるが、しかし、処理ステージが、データ処理装置またはマイクロプロセッサの一部であるシステムに特に良く適している。
【００２４】
動作パラメータを制御するために制御アルゴリズムの使用を容易にするために、好ましい実施例は、非遅延値と比較される遅延値の変化に対応するエラー検出の合計数を記憶するように機能するエラーカウンタ回路を備える。動作パラメータの制御を実行するソフトウェアによって、このエラーカウンタは読み取られることができる。
【００２５】
上述の遅延型ラッチ、及び非遅延型ラッチは多種多様な異なる形を備えているということが認識されることになる。特に、これらは、フリップフロップ、Ｄタイプラッチ、逐次素子、メモリセル、レジスタ素子、それらの組み合わせ、及び信号値を記憶することができる多種多様な他の記憶装置の形の実施例を有すると考えられることができる。
【００２６】
別の特徴から見ると、本発明は、データ処理を実行するための集積回路の制御方法を提供すると共に、方法が、後続処理ステージに対する処理ステージ入力信号として、複数の処理ステージの内の少なくとも１つの処理ステージから処理ステージ出力信号を提供する処理を有し、前記少なくとも１つの処理ステージが、処理論理回路出力信号を生成するために、少なくとも１つのステージ入力値に対してデータ処理論理回路による処理動作を実行し、非遅延獲得時刻において、前記処理論理回路出力信号の非遅延値を獲得し、前記非遅延獲得時刻よりも遅い遅延獲得時刻において、前記処理論理回路出力信号の遅延値を獲得するように動作すると共に、前記非遅延獲得時刻の後で、前記非遅延値が、前記処理ステージ出力信号として前記後続処理ステージに対して提供され、更に前記非遅延獲得時刻の後で、前記非遅延獲得時刻に前記処理論理回路が前記処理動作を終了していないことを示す、前記処理論理回路出力信号における変化を検出するために、前記非遅延値と前記遅延値とを比較し、前記変化が検出されたときに、前記後続処理ステージによる前記非遅延値の使用を抑制するエラー回復動作を実行することを特徴とする。
【００２７】
本発明の実施例は、ここでは一例としてのみ、添付の図を参照して説明されることになる。
【発明を実施するための最良の形態】
【００２８】
図１は、英国のケンブリッジにあるＡＲＭ社によって作られたＡＲＭプロセッサコアのようなプロセッサコアの中の同期パイプラインの一部であり得る、集積回路の一部を説明する。同期パイプラインは、複数の処理ステージの形状をしている。第１のステージは、比較器６及び遅延型ラッチ８と共に、後にフリップフロップの形式の非遅延型ラッチ４が続いている処理論理回路２を備える。ここで使用される用語“ラッチ”は、クロック、及び他の要求のようなトリガに関係なく信号値を記憶するように機能するあらゆる回路素子を含む。次の処理ステージも、同様に形成される。非遅延クロック信号１０は、同期パイプラインの一部として同期的に動作するように、処理ステージの全ての中の処理論理回路及び非遅延型ラッチ４を駆動する。遅延クロック信号１２は、それぞれの処理ステージの遅延型ラッチ８に提供される。遅延クロック信号１２は、非遅延クロック信号１０の位相シフトされたバージョンである。位相シフトの程度は、非遅延型ラッチ４による処理論理回路２の出力の獲得と、遅延型ラッチ８によって後で実行される処理論理回路２の出力の獲得との間の遅延期間を制御する。もし処理論理回路２が現在の非遅延クロック信号周波数、集積回路に供給された動作電圧、ボディバイアス電圧、温度等を与えられた制限の中で動作する場合、その場合に、処理論理回路２は、非遅延型ラッチ４がその値を獲得するように誘発される時までにその処理動作を終了していることになる。その結果として、遅延型ラッチ８が後で処理論理回路２の出力を獲得するとき、これは、非遅延型ラッチ４において獲得された値と同じ値を有することになる。従って、比較器６は、遅延期間の間に発生する変化を検出しないことになると共に、エラー回復動作は、誘発されないことになる。逆に、もし集積回路に関する動作パラメータが、非遅延型ラッチ４がその値を獲得するまでに処理論理回路２がその処理動作を完了しなかったような場合、その場合に、遅延型ラッチ８が異なる値を獲得することになると共に、これは比較器６によって検出されることになり、従って実行されるべきエラー回復動作を強制する。エラー回復動作は、遅延型ラッチ８の中に記憶される遅延値によって、その獲得に続く時間の間に後続処理ステージに供給されつつあった非遅延型ラッチ４の出力を置換することができるということが理解されることになる。この遅延値は、以前にその中に誤って記憶された獲得値と置換することにより、非遅延型ラッチ４に記憶されるように更に強制されることができる。
【００２９】
準安定性検出器（meta-stability detector）７は、非遅延型ラッチ４の出力、すなわち、明確に定義された論理状態ではない出力における準安定性（meta-stability）を検出するように機能する。もしそのような準安定性が検出される場合、その場合に、これはエラーのように扱われると共に、遅延型ラッチ８の値がその代りに使用される。
【００３０】
エラーの検出に関して、全パイプラインは、後続処理ステージに供給される訂正された入力信号値に適切に応答するように後続処理ステージにおける処理論理回路に対する十分な時間を与えるために、追加の遅延期間の間、非遅延クロック信号１０の開閉制御によって停止されることができる。その代案として、逆方向構造を使用する標準のパイプライン処理技術に基づいてパイプラインに挿入されたバブルによって動作を続けることが許された次の処理ステージによって、上流の処理ステージが停止されることが可能である（図２のバブルラッチ（bubble latches）及びフラッシュラッチ（flush latches）参照）。別の代案は、全体の処理パイプラインが、各ステージの非遅延型ラッチに強制的に入れられる遅延型ラッチの値によってリセットされると共に、処理が再開されることができるということである。たとえエラーが発生したとしても、計画された再計算よりむしろ、エラーのある値の代わりの遅延型ラッチの値の再使用が、処理動作を通じて前方（順方向）への進行が実行されることを保証する。
【００３１】
処理ステージの中の処理論理回路によって必要とされる処理時間、及び非遅延獲得時刻と遅延獲得時刻との間の遅延の間の関係に関しては制限がある。特に、あらゆる処理ステージの最小の処理時間は、獲得された遅延値が、短時間の遅延の処理ステージから出力された新しいデータによって破損させられないことを保証するために、遅延より少なくてはいけない。それらがこの最小の処理時間以下にならないことを保証するために、短時間の遅延の処理ステージを余分の遅延素子で引き延ばすことが必要であり得る。それとは正反対に、あらゆる動作パラメータに対してあらゆる動作ポイントで発生し得る、処理ステージの中の処理論理回路の最大の処理遅延は、通常の非遅延クロック信号期間と、遅延型ラッチにおいて獲得された遅延値が安定していると共に正しいことが保証されるような遅延値との合計値より大きくないことが保証されることを必要とする。
【００３２】
電力消費、及び性能を調整するようにシステムが制御されることができる多くの代替方法がある。１つの装置によれば、比較器６によって生成された非同一性検出の数を計数するために、エラーカウンタ回路（図示されない）が提供される。検出されると共に回復されるエラーのこの計数は、ハードウェアか、またはソフトウェアのいずれかにより実現されたアルゴリズムを使用して動作パラメータを制御するために使用され得る。カウンタは、ソフトウェアによって読み取ることができる。最高速度、または最低電力消費のいずれかに関しての最も良い全体の性能は、エラーのゼロでないレベルを維持するパラメータにより集積回路を慎重に動作させることによって達成され得る。そのような状況において慎重でない動作パラメータを動作させることによる利得は、エラーから回復する必要性によって負われた不利益を越える。
【００３３】
代替装置によれば、ハードウェアカウンタは、性能監視モジュールとして提供されると共に、実質的な作業及びエラー回復作業の経過を追跡するように機能する。特に、カウンタは、実行された処理動作を前進させるために使用される有益な命令の数を数え続けると共に、同様にエラー回復を行うために実行される命令及びバブル（bubbles）の数も数え続ける。ソフトウェアは、ハードウェアカウンタを読み取るように機能すると共に、ゼロでないエラーレートで対象の集積回路を動かすことによって達成される減少された電力消費量に対して、エラー回復のオーバーヘッドとシステム性能におけるその効果のバランスを適切にとるためにカウント値を使用するように機能する。
【００３４】
図２は、本技術において使用するのための回路を概略的に説明する回路ブロック図である。図２の上半分の部分は、各処理ステージ内に提供された回路素子、すなわち非遅延型ラッチ４、遅延型ラッチ８、及び比較器６を説明する。準安定性検出器７は、非遅延型ラッチ４の出力において準安定性を検出するように機能すると共に、同様にこれは誤差信号の生成を誘発する。複数のそのようなステージからの誤差信号は、もしエラーがいずれかの処理ステージで検出される場合に全体的な誤差信号が生成されるＯＲゲート１００のそれぞれの入力に供給される。全体的な誤差信号は、図示されたように、フラッシュ及びバブル挿入信号（flush and bubble insertion signals）を誘発するために使用され得る。回路１０２は、誤差信号そのものが準安定であるか否かを検出する。誤差信号は、より高い電圧で参照を付ける正方向スキューラッチ（positively skew latch）によってラッチされると共に、より低い電圧で参照を付ける負方向スキューラッチ（negative skew latch）によってラッチされる。もし２つがそれらのラッチされた値について一致しない場合、これは、誤差信号が準安定であったことを示すと共に、パニック信号（panic signal）が取り出される。誤差信号をラッチすると共に、それがサンプリングされる前に十分なクロック周期を待つことによって（すなわち、２つのラッチが直列にある）、準安定性であるパニック信号の可能性は無視して良い。もしパニック信号が取り出される場合、その場合に、遅延型ラッチから復元された値が誤差信号の準安定性が原因で破損させられることは、特筆すべきことである。この場合、その命令は、同様に無効にされると共に、前方（順方向）への進行はない。従って、パイプラインをフラッシュすることは、命令を再開すると共に、誤差信号が同じ命令の再試行の際に準安定とならないことを保証するために、クロック周波数を下げる（他の場合は再試行の無限ループを引き起こすであろう）。
【００３５】
図３は、非遅延型ラッチ、遅延型ラッチ、比較器、及びエラー回復回路の少なくとも一部を更に詳細に説明する回路図である。遅延型ラッチ４は、２つのラッチ１４、ラッチ１６によって提供されたフリップフロップの形式であることがわかる。遅延型ラッチ８は、１つのフィードバック素子の形式である。ＸＯＲゲート１８は、比較器として機能する。誤差信号２０は、図３の回路から明らかになると共に、前述のエラーカウンタ回路に、もしくは、他の動作パラメータの調整回路またはシステムに提供されることができる。誤差信号２０は、マルチプレクサ２２が、遅延型ラッチ８の中に記憶される遅延値が非遅延型ラッチ４におけるラッチ１４の中に記憶されることを強制するように、マルチプレクサ２２を切り替えるように機能する。準安定性検出回路２４は、非遅延型ラッチ４内における準安定性の発生を検出するように機能すると共に、同様に、遅延型ラッチ８の中に記憶される遅延値と置換されるべきエラーのある準安定値の原因となる誤差信号を誘発するためにこれを使用する。
【００３６】
図４Ａ及び図４Ｂは、図１、図２、及び図３の回路の動作を概略的に説明するフローチャートである。
【００３７】
ステップ２６において、ステージ“ｉ”の提供する処理論理回路が、時刻“Ｔｉ”においてその出力信号を生成する。ステップ２８において、これが、非遅延型ラッチによって獲得されると共に、非遅延値を形成する。ステップ３０において、非遅延型ラッチの提供する非遅延値が、この値に基づいて処理を始める次の処理ステージ“ｉ＋１”に渡され始める。この処理は、結果的にエラーになる可能性があると共に、エラーが検出されると、回復することを必要とすることになる。
【００３８】
ステップ３２は、処理論理回路が、時刻“Ｔｉ＋ｄ”において出力信号を生成するために、更なる期間、すなわち遅延時間の間処理を継続することを可能にする。ステップ３４において、この出力信号が、遅延型ラッチにラッチされる。ステップ３６において、遅延型ラッチの中の値と非遅延型ラッチの中の値とが比較される。もしそれらが等しい場合、その場合にエラーは発生せず、ステップ３７において、正常な処理が継続する。もしそれらが等しくない場合、その場合に、これは、非遅延型ラッチがその値を獲得したとき、処理論理回路が時刻“Ｔｉ”においてその処理動作を完了しなかったと共に、その値を次の処理ステージ“ｉ＋１”に提供し始めたことを示す。従って、エラー状態が発生した場合、修正を必要とすることになる。ステップ３８において、この修正が、ステージ“ｉ”の後に続くパイプラインステージに対するパイプラインバブルの転送によって始められる。ステップ４０において、ステージ“ｉ＋１”に対する前のステージが全て停止される。これは、エラーが発生したステージ“ｉ”を含む。ステップ４２において、ステージ“ｉ＋１”が、遅延型ラッチの値をその入力として使用することによりその動作を再実行する。ステップ４４において、集積回路の動作パラメータは、要求に応じて修正されることができる。一例としては、動作周波数は低下されることができる、動作電圧は増加されることができる、ボディバイアス電圧は増加されることができる、等が挙げられる。処理はそしてステップ４６へ続く。
【００３９】
もし不十分な数のエラーが検出される場合、その場合に、動作パラメータ制御回路及びアルゴリズムは、電力消費を減少させると共に、ゼロでないエラーレートを引き起こすために、動作パラメータを慎重に調節し得る。
【００４０】
図５は、一連のメモリセル１０２を備えるメモリ１００を説明する。この例においては、メモリセルの単一の列が説明されるが、しかし、この技術分野における当業者によく知られているように、そのようなメモリセルアレイは、一般的には何千ものメモリセルを備える大きな２次元配列である。正常なメモリ動作に従って、デコーダ１０４は、ワードライン１０６の内の１つをアクティブ状態にするために、アクセスされるべきメモリアドレスを受信すると共に、このメモリアドレスをデコードするように機能する。ワードラインは、その線の中のメモリセル１０２をそれぞれのビットラインペア１０８に連結するように機能する。関係するメモリセル１０２の中に記憶されるビット値に応じて、これは、その時それに連結されるビットライン１０８において、電気的変化（例えば、電圧及び／または電流フローの変化）を引き起こすことになると共に、変化は、センス増幅器１１０によって感知される。センス増幅器１１０の出力は、最初に非遅延型ラッチ１１２の中に記憶されると共に、続いて遅延時刻において遅延型ラッチ１１４の中に記憶される。非遅延型ラッチ１１２の中に記憶される非遅延値は、遅延値が遅延型ラッチ１１４に記憶される前に、マルチプレクサ１１６によって直接更なる処理回路１１８に排出される。遅延値が遅延型ラッチ１１４の中に獲得されたとき、比較器１２０は、非遅延値と遅延値とを比較するように機能する。もし、これらが等しくない場合、その場合に、遅延値は、マルチプレクサ１１６によって、関係のある特別なビットに関するメモリ１００からの出力値となるように切り替えられる。抑制信号は、同様に、その時置換されたエラーのある非遅延値に基づいて、その更なる処理回路１１８による処理を抑制するために、比較器１２０から更なる処理回路１１８に対して出力される。この例におけるこの抑制は、関係のあるクロック周期を伸ばすと共に、その更なる処理回路の出力においてラッチに達するように、遅延値が関係のある処理回路を通じて伝搬する機会があるときまで、その更なる処理回路１１８による新しい結果のラッチを遅らすために、更なる処理回路１１８に供給されるクロック信号ＣＬＫを制御する形式を採用する。
【００４１】
センス増幅器１１０、及び非遅延型ラッチ１１２が速い読取り機構（fast read mechanism）の一部を形成するということが理解されることになる。センス増幅器１１０、及び遅延型ラッチ１１４は、遅い読取り機構（slow read mechanism）の一部を形成する。ほとんどの場合、非遅延型ラッチ１１２の中の速く読まれた結果は、正しいと共に、修正処置は必要ではない。少しの場合において、速く読まれた結果は、遅延型ラッチ１１４の中の遅く読まれた結果と異なることになり、この状況において、遅く読まれた結果は、正しいとみなされると共に、その速く読まれた結果が削除される処理によって、速く読まれた結果を置換するように機能する。エラーのある速く読まれた結果を訂正する相対的にまれな必要性と関連づけられた不利益は、限界条件により近い状態でメモリ１００を動かすことによって達成される、（速度、より低い電圧動作、より低いエネルギー消費、及び／または他の動作パラメータに関する）増加した性能によって十二分に補償される。
【００４２】
図６は、図５の回路の一部の変形を説明する。この変形において、２つのセンス増幅器１１０'、及びセンス増幅器１１０''が提供される。これらの異なるセンス増幅器１１０'、及びセンス増幅器１１０''は、一方の相対的に速くてあまり信頼できないセンス増幅器１１０'と、もう一方の相対的に遅くてより信頼できるセンス増幅器１１０''として、異なる動作速度を備えるように形成される。これらの異なる特性は、センス増幅器１１０’、及びセンス増幅器１１０''のパラメータ、例えば、トランジスタサイズ、ドーピングレベル、利得等のような構造パラメータを変えることによって達成され得る。比較器１２０'は、２つの出力を比較するように機能する。速いセンス増幅器１１０'からの出力は、遅いセンス増幅器１１０''の出力が利用可能になる前に、通常はマルチプレクサ１１６'によって排出される。遅いセンス増幅器１１０''の出力が利用可能になると共に、比較器１２０'がこれは速いセンス増幅器１１０'の出力に等しくないことを検知するとき、その場合に、出力値を遅いセンス増幅器１１０''によって生成された値に切り替えるように、比較器１２０'はマルチプレクサ１１６'を制御する。比較器１２０は、同様に、エラーのある速く読まれた結果に基づく下流の処理が抑制されるように、抑制信号の生成を誘発する。
【００４３】
図７は、図５の回路の動作を説明するフローチャートである。ステップ１２２において、アドレスがデコードされ、ワードラインによって通された信号を利用して、それぞれのメモリセルがそれらの隣接のビットラインと連結される。ステップ１２４において、選択されたメモリセルに記憶されたビット値、及びそれらの補数が、ビットラインペア上で駆動される。これは、ビットライン内の電流フロー、及びビットラインにおける電圧変化の原因となる。センス増幅器１１０は、検出された電流、及び／または電圧レベル変化に応答する。
【００４４】
ステップ１２６において、速いデータ読取り機構が、メモリセルからその時に出力される値をサンプリングする。ステップ１２８において、この速く読まれたデータ値は、それが正しいという仮定に基づいて、更なる処理のために次の処理回路に渡される。ステップ１３０において、遅いデータ読取り機構が、遅く読まれたデータ値をサンプリングする。ステップ１３２は、速く読まれた値と遅く読まれた値とを比較する。もしこれらが同じである場合、ステップ１３４において正常な処理が継続する。しかしながら、もしサンプリング値が異なる場合、その場合にステップ１３６は、速く読まれた値が渡された更なる回路に対して抑制信号を出力すると共に、同様に、修正処理が実行され得るようなそれらの更なる回路に対して、速く読まれた値の代わりに遅く読まれた値を出力するように機能する。
【００４５】
図８は、パイプライン接続されたバス１４０における本技術の使用を説明する。パイプライン接続されたバス１４０は、バスに沿って通されるデータ値を記憶するように機能する多くのラッチ１４２を含む。そのようなパイプライン接続されたバス１４０の例として、英国のケンブリッジにあるＡＲＭ社によって設計されたＡＸＩバスが知られている。この装置において、パイプライン接続されたバス１４０に沿って通されたデータ値に関する行き先は、デジタル信号処理回路１４４である。このデジタル信号処理（ＤＳＰ）回路１４４は、前述の非遅延ラッチ技術及び遅延ラッチ技術をそれ自体では実施しない。代替装置において、パイプライン接続されたバスに沿って通されたデータ値に関する行き先は、ＤＳＰ回路以外の装置、例えば、非遅延ラッチ技術及び遅延ラッチ技術をそれ自体では実施しない標準のＡＲＭプロセッサコアである。
【００４６】
非遅延型ラッチ１４２の各々と関連付けられたものは、それぞれの遅延型ラッチ１４６である。これらの遅延型ラッチ１４６は、それらに対応する非遅延型ラッチ１４２によりバス上の信号値がサンプリングされると共にラッチされたときより遅い時点で、バス上の信号値をサンプリングするように機能する。従って、バスに沿って通されたデータ値における遅延は、いかなる理由（例えば、低すぎる動作電圧が使用されること、クロック速度が速すぎること、隣接のデータ値からの結合効果等）に対しても、非遅延型ラッチ１４２に記憶された値と遅延型ラッチ１４６に記憶された値と間に発生する差異の可能性に帰着することになる。パイプラインバス１４０上の最終ステージは、非遅延値と遅延値とを比較する比較器１４７を備えるものとして説明される。もしこれらが等しくない場合、その場合に、遅延値は、非遅延値を置換するために使用されると共に、修正が実施され得る（バスクロック周期が伸ばされることができる）ように、非遅延値に基づく処理は抑制される。これらの比較器、及び多重化回路素子が、パイプラインバス１４０に沿ったラッチステージの各々において提供されることになるが、しかし、明瞭にするために、これらは図８から省略されたということが認識されることになる。
【００４７】
ＤＳＰ回路１４４は、それ自体、その関連付けられた修正の可能性を伴う非遅延型ラッチ機構及び遅延型ラッチ機構を支援しないので、ＤＳＰ回路１４４に供給されるデータ値は、あらゆる必要な修正に影響されるということが重要である。この理由のために、そのラッチ、及び付属のＤＳＰ回路１４４に供給されるデータ値に必要とされるあらゆる修正が、そのデータ値がＤＳＰ回路１４４によって影響を与えられる前に実行され得るように、追加のバッファリングラッチステージ１４８が、パイプライン接続されたバス１４０の終りに提供される。バッファリングラッチ１４８は、バッファリングラッチ１４８からＤＳＰ回路１４４まで通されたデータ値におけるエラーの原因となる不適当な有効な伝搬時間等の問題がない、ＤＳＰ回路１４４の十分な近傍に配置され得る、
【００４８】
それぞれの非遅延型ラッチ１４２の間のバス接続は、変更のないデータを単に通過させる処理論理回路の形式であると考えられ得るということが認識されることになる。このように、図８のパイプライン接続されたバスの実施例と、前述の実施例（例えば図１）との間の等価性は、この技術分野を熟知している当業者にとっては明白である。
【００４９】
図９は、図８の動作を説明するフローチャートである。ステップ１５０において、非遅延信号値がバスラインから獲得される。ステップ１５２において、非遅延値が、その場合に、次のバスパイプラインステージに渡される。ステップ１５４において、対応する遅延型ラッチ１４６が、遅延バス信号を獲得する。ステップ１５６において、比較器１４７が、遅延値を非遅延値と比較する。もしこれらが等しい場合、ステップ１５８において、正常な処理が継続する。もし２つの比較された値が等しくない場合、ステップ１６０は、バスクロックを遅延させると共に、図８において示されたマルチプレクサを使用して、非遅延値を遅延値と置換するように機能する。
【００５０】
図１０は、本技術を使用する更なる例である実施例を説明する。この例である実施例において、プロセッサコアの中の命令レジスタが提供する命令は、命令ラッチ１６２の中にラッチされる。この命令ラッチ１６２から、命令は、非遅延型制御信号ラッチ１６６内の記憶装置に対するプロセッサ制御信号の適切な一群を生成するように機能するマイクロコード化されたＲＯＭを備えるデコーダ１６４に渡され、次に、命令ラッチ１６２にラッチされた命令に従ってプロセッサコアにより実行される処理を制御するために使用される。デコーダ１６４から出力された制御信号は、それらが非遅延型ラッチ１６６の中にラッチされたときより遅いタイミングで、同様に、遅延型制御信号ラッチ１６８の中にラッチされる。遅延制御信号値、及び非遅延制御信号値は、その場合に比較され得る。もしこれらが等しくない場合、その場合に、これは、修正処置が必要であるということを示す。抑制動作は、そのような差異の検出によって誘発されると共に、不適切なラッチ制御信号値に基づいて次の処理を止めるように機能する。いくつかの状況において、唯一の効果的な回復オプションは、全体としてプロセッサをリセットすることであるかも知れない。これは、受け入れられるかもしれない。他の状況においては、制御信号におけるエラーは、それほど抜本的でない抑制と回復の機構が受け入れられるようなものであるかもしれない。一例として、特別なエラーのある制御信号は、まだ実行されていない可能性があり、例えば、マルチサイクルプログラム命令の場合には、いくつかの処理動作が、マルチサイクル命令の全体の実行の終了間際まで開始されない。この例は、最後の累算が実行される前に乗算部分が数クロック周期を必要とする積和演算である。もし累算に関連付けられた制御信号にエラーがあると共に、実際には累算が要求されず、純粋な乗算だけが要求される場合、その場合に、加算器が累算動作を実行しようと試みる前に累算器に提供された制御信号を訂正することによって、累算を抑制することは可能であろう。
【００５１】
図１１は、図１０の回路の動作の１つの例を説明する。ステップ１７０において、積和制御信号が、デコーダ１６４（マイクロコード化されたＲＯＭ）から読み取られる。ステップ１７２において、この積和制御信号が、非遅延型制御信号ラッチ１６６の中にラッチされると共に、プロセッサコアの中の様々な演算処理装置に出力される。ステップ１７４において、乗算オペランドが、レジスタファイルから読み取られると共に、乗算動作が開始される。ステップ１７６において、命令デコーダ１６４によって出力された制御信号が、遅延型制御信号ラッチ１６８によって再びサンプリングされる。ステップ１７８において、非遅延制御信号、及び遅延制御信号が比較される。もしこれらが等しい場合、ステップ１８０において正常な処理が継続する。しかしながら、これらが等しくない場合、処理は、乗算動作が既に完了したか否かに関して決定が行われるステップ１８２に進行する。もし乗算動作が完了していた場合、その場合に、エラーのある累算動作が開始されることになると共に、回復のための最も良いオプションは、ステップ１８４において全体としてシステムをリセットすることである。しかしながら、もし乗算動作がまだ進行中である場合、ステップ１８８において、命令ラッチ１６２の中に記憶されるプログラム命令によって元来意図された、生成された所望の乗算動作出力結果を得るように、ステップ１８６は、加算器をリセットすると共に、累算動作を中止するために使用され得る。
【００５２】
図１２は、図１において説明された回路の変形を説明する。この実施例において、遅延型ラッチ１９０は、動作の待機モード／スリープモード（低電力消費モード）の間の使用に対して、データ保持（バルーン）ラッチの付加機能を提供する。正常な処理動作の間の遅延型ラッチ１９０の機能は、前述の通りである。しかしながら、スリープ制御器１９２が、動作の低電力消費モードに入ることを開始するように機能するとき、遅延型ラッチ１９０が、それらのそれぞれの非遅延型ラッチに対応するデータ値を全て記憶しているように、スリープ制御器１９２は非遅延クロック及び遅延クロックを停止する。この時点で、非遅延型ラッチ、及び関連付けられた処理回路への電圧供給は、それらが電源を切られると共にそれらの状態を失うように、解除される。しかしながら、非遅延型ラッチ１９０に供給された電圧は、それらが関係のある処理回路の状態を保持するために機能するように、維持される。システムが低電力消費モードから抜けるとき、処理論理回路、及び非遅延型ラッチは、再度電源が入れられ、比較器が非遅延型ラッチの値と遅延型ラッチ１９０の値とにおける差異を検出すると、それは、非遅延型ラッチの中のエラーのある値と、関連付けられた遅延型ラッチ１９０の中で保持される正しい値との置換を誘発する。遅延型ラッチ１９０が、それらの非遅延の対応する部分よりあまり厳しくないタイミング要求を前提としているので、それらが更に低い動作速度を備えうる方法で形成されるが、しかし、更に低電力消費モード（例えば、更に遅いスイッチングに帰着するが、しかし漏洩電流は減少している高いしきい値電圧）の間の低電力消費に良く適しているということが認識されることになる。このように、正常な処理の間に使用されるエラー修正遅延型ラッチは、低電力消費モードの間にデータ保持ラッチとして再使用され得ると共に、それによって関係のある回路の全体のゲート総数を減少させる。
【００５３】
図１３は、図１２の回路の動作を概略的に説明するフローチャートである。ステップ１９４において、集積回路は、正常な動作処理モードにある。ステップ１９６において、処理論理回路ステージが、非遅延時刻に出力信号を生成する。ステップ１９８において、非遅延型ラッチが、その出力信号を獲得する。ステップ２００において、非遅延型ラッチの中の非遅延信号が、次の処理ステージに渡される。ステップ２０２において、遅延時刻における処理ステージからの出力が生成されると共に、それは遅延型ラッチによる獲得に利用可能である。ステップ２０４において、集積回路が、低電力消費モードを導入するように誘発されると共に、スリープ制御器１９２は、遅延型ラッチ１９０に対する電源供給を維持する一方で、処理回路の電源供給停止を開始するように機能する。ステップ２０６において、遅延型ラッチ１９０が、遅延信号値を獲得する。ステップ２０６における遅延型ラッチによる遅延信号値の獲得は、ステップ２０４における低電力モードへの切り替えの前に行われるかも知れない。ステップ２０８において、非遅延型ラッチは、電源供給が停止されると共に、その記憶された値が失われる。集積回路は、長時間の間、この状態を維持することができる。望まれたとき、ステップ２１０は、低電力消費モードから抜けると共に、もとの動作モードへ戻るように、スリープ制御器１９２を誘発する。ステップ２１２において、非遅延型ラッチに対する電力が復帰されると共に、低電力消費モードに入る前の状態にシステムを復元するように、遅延型ラッチ１９０の中に遅延値を備える関連する処理論理回路が、必要に応じてパイプラインステージを再び満たすために使用される。
【００５４】
図１４は、エラー訂正制御、及び遅延型ラッチが適用された複数の処理ステージを概略的に説明する。処理ステージは、プロセッサコアの中の同期パイプラインの一部、通信バスの一部、またはメモリシステムの一部であるかもしれない、集積回路の一部を形成する。第１処理ステージは、データの通信のためのチャンネルかまたは処理論理回路１０１４のいずれか、非遅延型ラッチ１０１６、遅延型ラッチ１０１８、遅延型ラッチの出力と非遅延型ラッチの出力とを比較する比較器１０２４を備えると共に、次の処理ステージまたはチャンネル１０１６に対する入力として、遅延信号値または非遅延信号値のどちらが供給されるかを決定するマルチプレクサ１０２０に、制御信号を出力する。チャンネル／論理回路１０１４、及び非遅延型ラッチ１０１６は、非遅延クロック信号によって駆動され、一方遅延型ラッチ１０１８は、非遅延クロック信号の位相シフトされたバージョンである遅延クロック信号によって駆動される。
【００５５】
もし比較器１０２４が非遅延信号と遅延信号値との間の差異を検出する場合、これは、要素１０１４が処理論理回路を表す場合に、処理動作が非遅延時刻において不完全であったということか、または要素１０１４がデータチャンネルを表す場合に、前のパイプラインステージからの信号がまだ現在のステージに到達していなかったということのいずれかを示す。そのような差異が実際に検出される場合には、処理動作が完了された可能性があるか、もしくは、前のステージからのデータがデータチャンネル経由で到達した可能性があるときより後でそれが獲得されたので、遅延型ラッチ１０１８に記憶される値は、更に信頼できるデータ値である。遅延型ラッチから次の処理ステージ１０３０に結果を供給すると共に、次の処理ステージにおける非遅延値の使用を抑制することによって、計算の前方（順方向）への進行が保証され得る。しかしながら、シングルイベントアップセット（single event upset）が発生すると共に、遅延値を破損させた場合には、遅延型ラッチ１０１８に記憶される遅延信号値の信頼性は損なわれ得る。シングルイベントアップセットは、事実上はパルスであり、従って、それが非遅延型ラッチによって見逃されるが、しかし遅延型ラッチによって獲得されるのも無理はない。そのようなシングルイベントアップセットは、遅延値と非遅延値との間の差異をシングルイベントアップセットの直接的な結果として検出する比較器に帰着すると共に、その場合に、破損させられた遅延値を次の処理ステージに伝搬することになる。非遅延値を破損させるシングルイベントアップセットは、それがエラーのある非遅延値の使用を抑制すると共に、遅延値を後段に伝搬させることを抑制するので、解決は難しくない。
【００５６】
図１４の装置は、エラー検出モジュール１０２６、エラー訂正モジュール１０２８、及び遅延型ラッチが提供する遅延値を直接比較器１０２４に供給するか、または、代わりに、エラー訂正モジュール１０２８によって出力されるエラー訂正された値を比較器１０２４に供給する、エラー検出モジュール１０２６によって制御されるマルチプレクサ１０２２の提供によって、データの完全性の照合を行うことにより、計算を通じたエラーのある遅延値の進行の可能性を減少させる。チャンネル／論理回路装置１０１４の上流において、１２ビット信号を形成するように、８ビットのデータペイロードは、エラー訂正符号化されると共に、４つの冗長ビットがデータペイロードに付加される。１２ビット信号は、チャンネル／論理回路装置１０１４を通過すると共に、その値は、非遅延型ラッチ１０１６と、遅延型ラッチ１０１８の両方によって獲得される。しかしながら、遅延型ラッチ１０１８から得られた信号の遅延値は、同様に、１２ビットエラー訂正符号化信号から、遅延値に影響を及ぼす何らかのエラーが発生したか否かを決定するエラー検出モジュール１０２６に対する入力として供給される。代替装置において、エラー検出モジュール１０２６に信号値を供給するために、信号値を遅延型ラッチ１０１８より僅かに後の時点で獲得する更なるラッチが提供される。エラーチェックは、非遅延値の獲得と遅延値の獲得との間で発生したあらゆるランダムエラーが検出されることを保証するために、遅延値が獲得されるのと同時に、もしくは僅かに後で、獲得された値に関して実行されなければならない。
【００５７】
与えられたエラー訂正符号は、所定数のエラーを検出すると共に、与えられた数のエラーを訂正することが可能である。従って、エラー検出モジュール１０２６は、何らかのエラーが発生したか否かを検出すると共に、もしそうである場合、もしエラーの数が十分に小さいならば、それらを全て訂正可能である。もし修正可能なエラーが検出される場合、その場合に、信号値は、エラーがエラー訂正符号を用いて訂正されるエラー訂正モジュール１０２８に供給されると共に、訂正された遅延値は、比較器１０２４に供給される。もし比較器１０２４によって、訂正された遅延値が非遅延値と異なると判断される場合、その場合に、非遅延値の更なる伝播が次の処理ステージで抑制されると共に、その代りに訂正された遅延値を用いて動作が行われるように、エラー回復手順が呼び出される。一方、比較器１０２４が、訂正された遅延値は非遅延値と同じであると判断する場合、その場合に、計算を進行するための２つの代替の可能性がある。まず第一に、いずれにせよ、非遅延値が次の処理ステージで抑制されると共に、訂正された遅延値と置換されるように、エラー回復機構が呼び出される。代りに、（非遅延値と訂正された遅延値との同一性によって証明されたように）非遅延値が正しかったと判断されるので、エラー回復機構は、（遅延値におけるエラーの検出にもかかわらず）非遅延値が次の処理ステージを通じて前進し続けることを可能にするように抑制される。しかしながら、もしエラー検出モジュール１０２６によって訂正不能なエラーが遅延値において検出される場合、その場合に、破損させられた遅延値の使用を抑制するように制御信号が供給される。この場合、計算の前方（順方向）への進行は、成し遂げられることができない。適用されるエラー訂正符号化の種類は、チャンネル／処理論理回路１０１４の性質に従って異なる。
【００５８】
処理論理回路は、数値通過型（value-passing）か、または数値変更型（value-altering）に分類され得る。数値通過型の処理論理回路の例は、メモリ、レジスタ、及びマルチプレクサである。数値変更型の処理論理回路の例は、加算器、乗算器、及びシフタ（shifters）である。エラーが発生しなかったときでさえも、論理回路ステージ１０１４によって出力された値は、入力された１２ビット信号１０１３と異なる可能性があるので、数値変更型の処理論理回路素子に関するエラー検出及びエラー訂正は、数値通過型の処理論理回路素子に関するものより複雑である。
【００５９】
図１５は、もしエラーが発生しない場合、変化のないデータ値を入力から出力に単に渡すチャンネルを通過するデータに対するエラー訂正を概略的に説明する。そのような数値通過型の処理論理回路の場合は、エラー訂正、及びエラー検出のためのハミング符号のような、線形ブロック符号を使用すると都合が良い。線形ブロック符号は、一般的に、オリジナルのデータペイロードビットが符号語（codeword；符号ワード）において変わらないままであるが、しかしいくつかのパリティビット（または、冗長ビット）が付加される符号語を形成することを必要とする。ハミング符号は、簡単なシングルビットエラー訂正符号であると共に、（Ｎ，Ｋ）符号に関するものであり、ここで、Ｎは符号語におけるビットの総数であり、Ｋは符号化されるべきデータビットの数である。エラーの存在及び場所は、出力符号語に関して多くのパリティチェックを実行することによって検出される。ハミング符号は、それらの各々がデータ内のビットの異なる組み合わせから算定されるＮ−Ｋパリティビットを備えている。ハミング符号は、１つのエラーを訂正するか、もしくは、２つのエラーを検出することが可能である。パリティビットの数、または必要とされる冗長ビットは、ハミング規則“Ｋ＋ｐ＋１≦２ｐ”によって与えられ、ここでｐはパリティビットの数、及び“Ｎ＝Ｋ＋ｐ”である。
【００６０】
図１５において図示されたように、チャンネルへ入力は、８つのデータビット、及び４つのパリティビット、または冗長ビットを含む１２ビット符号語である。パリティチェックは、チャンネル１１１４からの出力に対して、エラー検出／訂正モジュール１１１６によって実行される。１２ビット符号語におけるあらゆる１つのビットエラーは、符号語の出力の前に、エラー検出／訂正モジュール１１１６によって検出されると共に訂正される。もし検出されたエラーが回復できない場合、エラー検出／訂正モジュール１１１６は、これがその場合であることを示す信号を出力する。ハミング符号のような簡単な符号が、数値通過型の処理論理回路の使用に対する図１１に関して示されたが、畳み込み符号のような他のエラー訂正符号が代りに使用され得るということが認識されることになる。
【００６１】
図１６は、加算器、乗算器、またはシフタのような数値変更型の論理回路素子に関してどのようにエラー訂正が行われるかを概略的に説明する。数値変更型の処理論理回路の場合は、ＡＮ符号（AN codes）、剰余符号（residue codes）、逆剰余符号（inverse residue codes）、または剰余数符号（residue number codes）のような論理演算符号が、処理論理回路の出力において、ランダムエラーを検出すると共に訂正するために使用されることができる。
【００６２】
演算符号は、算術演算子をチェックするために使用され得る。ここで、「数１」に示す演算子は、「数２」に示す以下の関係が満足されなければならないことがチェックされる演算子を示す。
【００６３】
【数１】
0004426571.tif 000002
【００６４】
【数２】
0004426571.tif 000003
【００６５】
ＡＮ符号は、データワードに一定係数を掛けることを必要とする演算符号であり、例えば３Ｎ符号は、「数３」に示す以下の比較を実行することによって、足し算の妥当性をチェックするために使用され得る。
【００６６】
【数３】
0004426571.tif 000004
【００６７】
演算符号の種類の更なる例は、剰余符号であり、剰余（定数による除算の残り）がチェックビットとしてデータビットに加えられ、例えば、３Ｒ符号は、モジュロ（ＭＯＤ）３の演算を含んでいると共に、「数４」に示す以下のチェックが適用される。
【００６８】
【数４】
0004426571.tif 000005
【００６９】
Ｘ＝１４、及びＹ＝７の数値例を考察すると、「数５」に示すようになる。
【００７０】
【数５】
0004426571.tif 000006
【００７１】
図１６は、図１０のチャンネル／論理回路装置１０１４における足し算のチェックのための７Ｒ演算コードの使用を概略的に説明する。チェックされる足し算は、“Ｘ＋Ｙ”であり、ここで、Ｘ及びＹは８ビットのデータワードである。各データワードは、それぞれ“Ｘ  ＭＯＤ  ７”の値、及び“Ｙ  ＭＯＤ  ７”の値を有する４つのチェックビットを備えている。“Ｘ  ＭＯＤ  ７”、及び“Ｙ  ＭＯＤ  ７”は、第１の加算器１２１０にオペランドとして供給されると共に、この加算器の出力は、（“Ｘ  ＭＯＤ  ７”＋“Ｙ  ＭＯＤ  ７”）ＭＯＤ  ７の値を決定し、更に結果を第１の入力として比較器１２５０に供給する論理回路に供給される。第２の加算器１２３０は、加算“（Ｘ＋Ｙ）”を実行すると共に、結果を“（Ｘ＋Ｙ）ＭＯＤ  ７”を計算する論理回路装置１２４０に供給し、更にその結果を第２の入力として比較器１２５０に供給する。もし比較器が２つの入力値の間の何らかの差異を検出する場合、その場合にはエラーが発生している。
【００７２】
図１７は、遅延ラッチ値のエラー訂正制御を備える図１４の回路の動作を概略的に説明するフローチャートである。処理段階１３１０において、１２ビットエラー訂正符号化された信号値は、チャンネル／論理回路装置１０１４への入力である。次に、処理段階１３２０において、非遅延型ラッチ１０１６が、時刻“Ｔｉ”でチャンネル／論理回路装置１０１４からの出力を獲得すると共に、獲得された値は、処理段階１３３０において、次の処理論理回路ステージ“ｉ＋１”に送られる。処理段階１３４０において、遅延型ラッチ１０１８が、時刻“Ｔｉ＋ｄ”で出力信号を獲得する。処理段階１３５０において、エラー検出論理回路が、時刻“Ｔｉ＋（ｄ＋δ）”でチャンネル／論理回路装置１０１４からの出力を獲得する。好ましい装置における“δ”は、遅延値そのものによって出力された値が実際にエラーをチェックされるように、“δ”はゼロであるが、代わりに、遅延型ラッチが“Ｔｉ＋ｄ”で出力信号を獲得した少し後で出力が獲得されることができる。エラー検出器へ供給するための値の獲得は、遅延値におけるあらゆるランダムエラーが検出されることを保証するために、時刻を適切に指定される。処理段階１３６０において、エラー検出モジュール１０２６は、遅延出力信号が冗長ビットを使用するエラーを有しているかどうかを判断する。もしエラーが検出される場合、その場合に、処理段階１３７０において、エラーが訂正可能であるか否かが判断される。ここで、エラーが訂正可能であるか否かは、どのくらいのビットが影響を受けるかによって判断されることになる。例えば、ハミング符号は、１つのビットエラーのみを訂正し得る。もし処理段階１３７０においてエラーが訂正可能であると判断される場合、その場合に、処理はエラーが訂正される処理段階１３９０に進行すると共に、訂正された遅延値は、マルチプレクサ１０２２によって選択され、そして、比較器１０２４に供給される。しかしながら、もし処理段階１３７０において検出されたエラーが訂正可能ではないと判断される場合、その場合に、訂正不能なエラーが発生したということを示す制御信号が生成される。この場合、計算の前方（順方向）への進行は、確実に実行されることができない。処理段階１３９２において、比較器１０２４は、エラーが抑制された遅延値が非遅延値に等しいかどうかを判断すると共に、もしそうである場合、計算の前方（順方向）への進行を続けることを決定する。そうでなければ、非遅延値の抑制、及び次の処理ステージにおける遅延値による非遅延値の置換を包含する図４Ｂに関して示されたステップの手順に対する処理が実行される。
【００７３】
図１８は、処理ステージの間の相対的タイミングを動的に調整するための本技術の使用を説明する。パイプライン接続された処理環境において、処理ステージは、それらのそれぞれの動作を完了するために異なる時間を必要とする可能性があるということが知られている。理想的には、処理ステージは、同じ時間がかかると共に、それらのそれぞれの時間に関して、周囲の条件における変化と同様に変わるようにバランスがとれているであろう。しかしながら、これは、多くの場合実用的ではないと共に、１つの動作電圧、または温度でバランスがとれている処理ステージの一群は、別の動作電圧、及び温度でバランスがとれない可能性がある。更に、製造偏差、及び他の特性は、それらの間の設計されたバランスを乱す、処理ステージタイミングの間のかなりの差異に帰着する可能性がある。この場合、クロック周波数、及び他の動作パラメータは、全ての条件の下で動作可能であるために処理ステージが十分に密接にバランスがとれているように、最悪の場合を考慮したシナリオに関して選択される。
【００７４】
本技術は、更に選択的で、実に動的なアプローチが実行されることを可能にする。パイプライン接続された処理回路２０００は、非遅延型ラッチによって獲得された信号値におけるエラーの発生を検出するために使用され得る遅延型ラッチ２００２を備える。これらのエラーの発生は、主パスの中のそれぞれのラッチ、すなわち、非遅延型ラッチに供給されるクロック信号の相対的な位相を調整するように機能するクロック位相制御回路２００４にフィードバックされる。この方法では、時間が、１つの処理ステージから効果的に借用されると共に、別の処理ステージに割当てられることにより調整が行われる。これは、それに沿って基本クロック信号が伝搬される遅延線の中の選択可能な位置から、それぞれの非遅延型ラッチによって使用されるようにクロック信号を打ち出すことによって達成されることができる。
【００７５】
説明された例では、ラッチ“ＬＡ”とラッチ“ＬＢ”との間の処理論理回路は、後段における処理論理回路より動作において更に遅い。従って、非遅延型ラッチ“ＬＢ”に供給されたクロック信号は、（立ち上がりエッジでのラッチによる獲得を仮定する場合）そのクロック信号の立ち上がりエッジを遅らせると共に、それにより遅い処理論理回路の利用可能な時間を拡張するために、位相シフトされ得る。これは、次の処理ステージの中の処理論理回路がラッチ“ＬＢ”を除いた他のステージ要素と同じ基本クロック信号で処理しているとすれば、次の処理ステージの中の処理論理回路の利用可能な時間を減少させる。
【００７６】
処理ステージの間のこのタイミング調整は、遅延型ラッチを用いて検出された、動作におけるエラーからのフィードバックを使用する回路の進行中の動作の間、動的に実行され得る。代りに、その調整は、製造時の試験ステージの間の、もしくは集積回路の“重要なブート（golden boot）”の間の一度限りの動作として実行され得る。図１８において示された遅延型ラッチは、処理ステージの間のタイミング調整の目的のために使用されると共に、それ以降、例えば、図１に関する上述の動作パラメータ、及びエラー訂正の制御のために使用され得る。このように、遅延型ラッチの供給は、更に相対的なクロックタイミングを同様に制御するために使用される。
【００７７】
図１９は、全体的なクロックの開閉制御に基づくパイプラインエラーの回復に対する簡単なアプローチを説明する。いずれかのステージがエラーを検出する場合には、全体のパイプラインは、次の全体的なクロックのエッジを開閉制御することによって、１周期の間停止される。追加のクロック周期は、全てのステージが、遅延型ラッチの値を入力として使用し、その結果を再計算することを可能にする。従って、あらゆる以前に送られた誤った値は、遅延型ラッチが提供する正しい値と置換されることになる。全てのステージは、遅延型ラッチからの入力によってそれらの結果を再評価するので、あらゆる数のエラーが単一周期の間許容され得ると共に、前方（順方向）への進行が保証される。もし各周期において全てのステージがエラーを生成する場合、パイプラインは、通常の速度の１／２の速度で、進行し続けることになる。
【００７８】
誤ったパイプラインの結果が、比較器によって有効とされる前に構造化された状態（architectured state）に書かれないことは、重要である。遅延値の妥当性検査には２つの追加の周期（すなわち、エラー検出のためのものと、パニック検出のためのもの）を必要とするので、最後の遅延型ラッチとライトバック（writeback：ＷＢ）ステージとの間には２つの非推論的（non-speculative）なステージが存在しなければならない。我々の設計において、データキャッシュへのメモリアクセスは非推論的であり、従って、安定させるための“ＳＴ”とラベルの付いた１つの追加のステージだけが、ライトバック（ＷＢ）ステージの前に必要とされる。“ＳＴ”ステージは、レジスタのバイパスの追加のレベルを導入する。記憶命令は非推論的に実行されなければならないので、それらはパイプラインの“ＷＢ”ステージで実行される。
【００７９】
図１９は、パイプラインの“ＥＸ”ステージにおいて失敗した命令に関するパイプライン回復のパイプラインタイミングダイアグラムを与える。最初の失敗したステージ計算は、しかし、“ＥＸ”ステージから転送された誤った値を使用して“ＭＥＭ”ステージが誤った結果を計算したの後でのみ、第４の周期において発生する。そのエラーが検出された後で、レイザーシャドウラッチ（Razor shadow latch）における正しい“ＥＸ”の結果が“ＭＥＭ”ステージによって評価されることを可能にしつつ、全体的なクロック機能停止が第６の周期において発生する。第７の周期において、正常なパイプライン動作が再開する。
【００８０】
積極的に時間を計られた設計において、プロセッサ周期時間（processor cycle time）に著しく影響を与えずに全体的なクロックの開閉制御を実行することは、可能ではない可能性がある。従って、逆方向構造及びパイプライン技術（counterflow, pipelining techniques）に基づいて十分にパイプライン接続されたエラー回復機構が実現された。図２０において説明されたアプローチは、パイプライン回復を２、３周期の間拡張することを犠牲にして、無視して良いタイミング制限をパイプライン設計の基準に置く。非遅延値のエラーが検出されるとき、２つの具体的な動作が実行されなければならない。第１に、失敗した遅延型ラッチの直後の誤ったステージ計算は、無効にされなければならない。この動作は、パイプラインスロットが空であることを次のステージ、及びその後のステージに対して示すバブル信号を用いて遂行される。第２に、失敗ステージのステージＩＤをアサートすることによって、フラッシュの列が誘発される。次の周期において、遅延型ラッチデータが提供する正しい値は、パイプラインに戻るように注入され、誤った命令が正しい入力により続けられることを可能にする。更に、フラッシュの列が失敗ステージのＩＤを命令の反対方向に伝搬し始める逆方向パイプラインがある。アクティブ状態のフラッシュの列によってアクセスされた各ステージにおいて、対応するパイプラインステージ、及びすぐ前の先行するステージ（one immediately preceding）は、バブルと置換される。（２つのステージは、メインパイプラインの相対的なスピードの２倍のスピードを得るために、無効にされなければならない。）フラッシュＩＤがパイプラインのスタートに達するとき、フラッシュ制御論理回路は、誤った命令の後の命令において、パイプラインを再開する。複数のステージが同じ周期においてエラーを経験する場合には、全てのステージが回復を開始することになるが、しかしライトバック（ＷＢ）ステージに最も近い非遅延エラーのみが達成することになる。初期の回復は、後のものによってフラッシュされることになる。例えば、順方向のパイプラインが１２ステージの深さであり得るのに対して、逆方向パイプラインのフラッシュの列は、２つのパイプラインステージの深さであるように、逆方向パイプラインは順方向のパイプラインと同じ長さではなくても良い点に注意が必要である。
【００８１】
図２０は、“ＥＸ”ステージにおいて失敗した命令のためのパイプライン回復のパイプラインタイミングダイアグラムを示す。前の例と同様に、第２の命令がパイプラインの“ＥＸ”ステージにおいて誤った結果を計算するとき、最初の失敗したステージ計算は、第４の周期において発生する。このエラーは、“ＭＥＭ”ステージから伝搬されたバブル、及びフラッシュの列の開始によって、第５の周期において検出される。“ＥＸ”における命令、ＩＤ、及び“ＩＦ”ステージは、第６、第７、及び第８の周期においてフラッシュされる。最終的に、パイプラインは、周期９における誤った命令の後で再開され、その後で正常なパイプライン動作が再開する。
【００８２】
上述の図２の記述から、回路１０２が誤差信号に準安定性を検出する場合に、その場合に、パニック信号がアサートされることを思い出す必要がある。この場合、（次の命令よりむしろ）現在の命令が、再実行されるべきである。そのようなパニック信号がアサートされるとき、全パイプライン状態は、フラッシュされると共に、パイプラインは、最小の命令のライトバック（writeback）の直後に再開される。パニック状況は、状況を検出する際の遅延が、遅延型ラッチにおいて上書きされる正しい結果になる可能性があるので、前方（順方向）への進行の保証を複雑にする。従って、パニックを経験した後で、供給電圧が既知の安全な動作レベルにリセットされ、パイプラインが再開される。再調整されたもの、誤った命令は、この命令が達成する後まで戻ることが禁止される限り、エラーなしで達成される。
【００８３】
パイプライン回復制御の重要な要求は、それが最も悪い動作条件下（例えば、低い電圧、高い温度、及び高いプロセスの変動性）でさえも失敗しないことである。この要求は、最悪の場合の臨界未満の電圧でエラー回復回路のタイミングを有効とする保守的な設計アプローチによって満たされる。
【００８４】
図２１は、逐次走査チェーンラッチ（serial scan chain latch）としての遅延型ラッチ２１００の再使用を概略的に説明する。これは、逐次走査データ値が必要に応じて遅延型ラッチに書かれることを可能にするか、もしくは、逐次走査データ値が必要に応じて遅延型ラッチから連続して読み取られることを可能にするスキャンイネーブル信号によって制御されるマルチプレクサ２１０２の提供によって達成される。更に、遅延型ラッチの値を非遅延型ラッチの値と置換することを可能にする正常な機構は、逐次走査チェーンの値が動作経路に挿入されることを可能にするように開発される。
【図面の簡単な説明】
【００８５】
【図１】本技術が用いられる複数の処理ステージを概略的に説明する図である。
【図２】本技術において使用するのための回路を概略的に説明する回路ブロック図である。
【図３】関連付けられた比較器、及びエラー回復回路と共に、非遅延型ラッチ、遅延型ラッチを概略的に説明する回路図である。
【図４Ａ】図１の回路の動作を概略的に説明するフローチャートである。
【図４Ｂ】図１の回路の動作を概略的に説明するフローチャートである。
【図５】速い読取り機構、及び遅い読取り機構を備えるメモリ回路を概略的に説明する図である。
【図６】図５の回路の一部分に関する代替回路装置を説明する図である。
【図７】図５のメモリ回路の動作を概略的に説明するフローチャートである。
【図８】バスステージの間に非遅延型ラッチ、及び遅延型ラッチを備えるパイプライン接続されたバスを説明する図である。
【図９】図８のパイプライン接続されたバスの動作を概略的に説明するフローチャートである。
【図１０】非遅延型ラッチにラッチされた値とその出力、及び遅延型ラッチにラッチされた値とその出力の両方の影響下にあるマイクロプロセッサを制御するための制御信号の生成を概略的に説明する図である。
【図１１】図１０の回路の動作の１つの例を概略的に説明するフローチャートである。
【図１２】非遅延型ラッチ、及び低電力動作の間データ保持ラッチとして再利用される遅延型ラッチを備える処理パイプラインを説明する図である。
【図１３】図１２の回路の動作を概略的に説明するフローチャートである。
【図１４】エラー訂正、及び遅延型ラッチが適用された複数の処理ステージを概略的に説明する図である。
【図１５】もしエラーが発生しない場合、単に変わらないデータ値を入力から出力に渡すチャンネルを通過するデータのためのエラー訂正を概略的に説明する図である。
【図１６】加算器、乗算器、またはシフタのような数値変更型の論理回路素子に関してどのようにエラー訂正が行われるかを概略的に説明する図である。
【図１７】図１４の回路の動作を概略的に説明するフローチャートである。
【図１８】処理パイプラインの中のクロック信号の相対的な位相を制御するためにどのように遅延型ラッチ及び非遅延型ラッチが使用されるかを概略的に説明する図である。
【図１９】エラーから回復する際の機能停止の使用を概略的に説明する図である。
【図２０】エラーから回復する際のバブル挿入の使用を概略的に説明する図である。
【図２１】遅延型ラッチが逐次走査チェーンラッチとして再使用される処理ステージの間で使用するための非遅延型ラッチ、及び遅延型ラッチを説明する図である。
【符号の説明】
【００８６】
２    処理論理回路
４    非遅延型ラッチ
６    比較器
７    準安定性検出器（meta-stability detector）
８    遅延型ラッチ
１０    非遅延クロック信号
１２    遅延クロック信号
１４、１６    ラッチ
１８    ＸＯＲゲート
２０    誤差信号
２２    マルチプレクサ
２４    準安定性検出回路
１００    メモリ
１０２    メモリセル
１０４    デコーダ
１０６    ワードライン
１０８    ビットラインペア
１１０    センス増幅器
１１２    非遅延型ラッチ
１１４    遅延型ラッチ
１１６    マルチプレクサ
１１８    処理回路
１２０    比較器
１１０'    センス増幅器
１１０''    センス増幅器
１１６'    マルチプレクサ
１２０'    比較器
１４０    バス
１４２    非遅延型ラッチ
１４４    デジタル信号処理回路
１４６    遅延型ラッチ
１４７    比較器
１４８    バッファリングラッチステージ
１６２    命令ラッチ
１６４    デコーダ
１６６    非遅延型制御信号ラッチ
１６８    遅延型制御信号ラッチ
１９０    遅延型ラッチ
１９２    スリープ制御器
１０１３    １２ビット信号
１０１４    処理論理回路（チャンネル／論理回路装置）
１０１６    非遅延型ラッチ
１０１８    遅延型ラッチ
１０２０    マルチプレクサ
１０２２    マルチプレクサ
１０２４    比較器
１０２６    エラー検出モジュール
１０２８    エラー訂正モジュール
１０３０    次の処理ステージ
１１１４    チャンネル
１１１６    エラー検出／訂正モジュール
１２１０    第１の加算器
１２３０    第２の加算器
１２４０    論理回路装置
１２５０    比較器
１３１０    ステージ
１３２０    ステージ
１３３０    ステージ
１３４０    ステージ
１３５０    ステージ
１３６０    ステージ
１３７０    ステージ
１３９０    ステージ
１３９２    ステージ
２０００    処理回路
２００２    遅延型ラッチ
２００４    クロック位相制御回路
【図１】
0004426571.tif 000007
【図２】
0004426571.tif 000008
【図３】
0004426571.tif 000009
【図４Ａ】
0004426571.tif 000010
【図４Ｂ】
0004426571.tif 000011
【図５】
0004426571.tif 000012
【図６】
0004426571.tif 000013
【図７】
0004426571.tif 000014
【図８】
0004426571.tif 000015
【図９】
0004426571.tif 000016
【図１０】
0004426571.tif 000017
【図１１】
0004426571.tif 000018
【図１２】
0004426571.tif 000019
【図１３】
0004426571.tif 000020
【図１４】
0004426571.tif 000021
【図１５】
0004426571.tif 000022
【図１６】
0004426571.tif 000023
【図１７】
0004426571.tif 000024
【図１８】
0004426571.tif 000025
【図１９】
0004426571.tif 000026
【図２０】
0004426571.tif 000027
【図２１】
0004426571.tif 000028