(57)【要約】  集積回路は、集積回路の動作中エラーを示す所定の時間ウィンドウ内の信号値の遷移を検出するように動作可能なエラー検出回路3230-1から3230-4を含む。この集積回路は、この集積回路のプログラマのモデルに対応するアーキテクチャ的状態変数の少なくともサブセットを含むデータ処理装置の回復可能な状態を格納するように動作可能なストレージユニット3296をも含む。エラー回復回路3250、3260、3210が、この集積回路の一部として設けられ、これは、この集積回路が、ストレージユニット3296からの格納された回復可能な状態を使用して、検出された動作中エラーから回復することを可能にするように働く。この集積回路の動作パラメータコントローラ3242は、全体的性能を高める形で有限の非ゼロエラー率を維持するために、検出された動作中エラーの1つまたは複数の特性に依存して、クロック周波数、動作電圧、ボディバイアスされた電圧、温度などの集積回路の動作パラメータを調整する。
2008537438.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置用の集積回路であって、デジタルデータ処理を実行するように動作可能であり、
前記集積回路内のデジタル信号値を監視し、所定の時間ウィンドウ内の前記信号値の遷移を検出するように動作可能なエラー検出回路であって、前記遷移は、前記集積回路の動作中エラーを示す、エラー検出回路と、
前記データ処理装置の回復可能な状態を格納するように動作可能なストレージユニットであって、前記回復可能な状態は、前記集積回路のプログラマのモデルに対応するアーキテクチャ的状態変数の少なくともサブセットを含む、ストレージユニットと、
前記エラー検出回路に応答し、前記集積回路が前記格納された回復可能な状態を使用して前記動作中エラーから回復することを可能にするように動作可能なエラー回復回路と、
前記集積回路の、1つまたは複数の性能を制御する動作パラメータを制御するように動作可能な動作パラメータコントローラと
を含み、前記動作パラメータコントローラは、動作中エラーの非ゼロレートを維持するために前記エラー検出回路によって検出されるエラーの1つまたは複数の特性に依存して前記1つまたは複数の性能を制御するパラメータのうちの少なくとも1つを動的に制御し、前記エラー回復回路は、前記集積回路によるデータ処理が継続するように前記集積回路が前記動作中エラーから回復することを可能にするように動作可能である
ことを特徴とする集積回路。
【請求項２】
前記回復可能な状態は、マイクロアーキテクチャ的状態変数の少なくともサブセットを含む、請求項1に記載の集積回路。
【請求項３】
前記エラー検出回路は、第1サンプリング時刻の前記信号値と第2の後続のサンプリング時刻の前記信号値との間の差を計算することによって前記遷移を検出するように配置される、請求項1または2に記載の集積回路。
【請求項４】
前記エラー検出回路は、所定の時間ウィンドウ内の前記信号値の状態のすべての変化を検出することによって前記遷移を検出するように配置される、請求項1または2に記載の集積回路。
【請求項５】
前記エラー検出回路は、前記集積回路の関連処理回路要素の出力信号のエラーを検出するように動作可能である、請求項1から4のいずれか一項に記載の集積回路。
【請求項６】
前記集積回路は、前記関連処理回路要素のセットアップウィンドウと相互に排他的であるエラー検出回路準安定性ウィンドウを有する、請求項5に記載の集積回路。
【請求項７】
前記集積回路は、めいめいの複数の処理回路要素に関連する複数のエラー検出回路を含む、請求項5または6に記載の集積回路。
【請求項８】
前記集積回路は、複数のパイプラインステージを含む命令パイプラインを有する、請求項5から7のいずれか一項に記載の集積回路。
【請求項９】
前記関連処理回路要素は、前記複数のパイプラインステージの連続するパイプラインステージの間でデータを渡すラッチである、請求項7に記載の集積回路。
【請求項１０】
前記エラー検出回路は、前記遷移が前記処理回路要素のセットアップ時間中に発生する時の前記遷移の検出を可能にするために、入力デジタル信号を遅延させるように配置された少なくとも1つの遅延要素を含む、請求項5から9のいずれか一項に記載の集積回路。
【請求項１１】
前記エラー検出回路は、0-1遷移検出器および1-0遷移検出器のうちの少なくとも1つを含む、請求項1から10のいずれか一項に記載の集積回路。
【請求項１２】
前記エラー回復回路は、前記集積回路の状態変数としての前記複数のパイプラインステージの出力値のコミットメントの前に、前記出力値の検証を可能にするように動作可能な少なくとも1つの安定性パイプラインステージを含む、請求項5から11のいずれか一項に記載の集積回路。
【請求項１３】
前記集積回路は、異なるパイプラインステージの入力値としての使用のために、前記複数のパイプラインステージの特定のパイプラインステージから前記複数のパイプラインステージの別の異なるパイプラインステージへ前記特定のパイプラインステージによって計算された値を供給するように動作可能なデータ転送回路網を含む、請求項12に記載の集積回路。
【請求項１４】
前記ストレージユニットは、確認済み状態変数を格納するように動作可能なレジスタバンクであり、前記確認済み状態変数は、前記動作中エラーによって影響されないことを確認済みである、請求項1から13のいずれか一項に記載の集積回路。
【請求項１５】
前記集積回路は、その値が前記動作中エラーによって影響されないものとして確認済みではない推測状態変数を格納するように動作可能な推測レジスタバンクを含み、前記ストレージユニットは、その値が正しい値として確認済みである確認済み状態変数を格納するように動作可能な確認済みレジスタバンクである、請求項1から14のいずれか一項に記載の集積回路。
【請求項１６】
前記エラー回復回路は、前記エラー検出回路が動作中エラーを検出する場合に前記確認済みレジスタバンクからの前記確認済み状態変数のうちの対応する確認済み状態変数によって前記推測レジスタバンク内の前記推測状態変数のサブセットを置換するように動作可能である、請求項15に記載の集積回路。
【請求項１７】
前記動作パラメータコントローラは、前記動作中エラーの検出に続く時間遅れの後に、前記性能を制御するパラメータのうちの1つまたは複数を少なくとも一時的に調整するように動作可能である、請求項1から16のいずれか一項に記載の集積回路。
【請求項１８】
所与の命令に対応する動作中エラーの反復を検出するように動作可能なデッドロック検出モジュールを含み、前記動作パラメータコントローラは、前記検出された反復に応答して前記性能を制御するパラメータのうちの1つまたは複数を一時的に調整するように動作可能である、請求項17に記載の集積回路。
【請求項１９】
データ処理を実行する集積回路を制御する方法であって、
前記集積回路内のデジタル信号値を監視し、所定の時間ウィンドウ内で前記信号値の遷移を検出するステップであって、前記遷移は、前記集積回路の動作中エラーを示す、ステップと、
データ処理装置の回復可能な状態を格納するステップであって、前記回復可能な状態は、前記集積回路のプログラマのモデルに対応するアーキテクチャ的状態変数の少なくともサブセットを含む、ステップと、
前記集積回路が前記動作中エラーから回復することを可能にするために、前記動作中エラーの前記検出に応答して、前記格納された回復可能な状態を使用するステップと、
前記集積回路の1つまたは複数の性能を制御する動作パラメータを制御するステップと
を含み、制御する前記ステップは、動作中エラーの非ゼロレートを維持するために、監視し検出する前記ステップで検出されたエラーの1つまたは複数の特性に依存して前記1つまたは複数の性能を制御するパラメータのうちの少なくとも1つを動的に制御する段階を含み、前記動作中エラーの前記検出に応答する前記格納された回復可能な状態の使用は、前記集積回路によるデータ処理が継続するように前記集積回路が前記動作中エラーから回復することを可能にする
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の分野に関する。より具体的には、本発明は、集積回路の処理ステージ内での動作エラーの検出およびそのようなエラーからの回復に関する。
【背景技術】
【０００２】
直列接続された処理ステージから形成される集積回路、例えばパイプライン回路を提供することが既知である。各処理ステージは、処理ロジックと、あるステージからの出力値を格納するラッチとを含み、この出力値は、その後、続く処理ステージに入力として供給される。処理ロジックがその処理動作を完了するのに要する時間が、集積回路が動作できる速度を決定する。処理ロジックが動作できる最高速度は、処理ロジックステージのうちで最低速のステージによって制約される。できる限りすばやくデータを処理するために、回路の処理ステージは、最低速の処理ステージがついていけなくなるまで、できる限り高い速度で駆動される。しかし、集積回路の電力消費が、処理速度を高めることより重要である状況では、集積回路の動作電圧が、電力消費を減らすために、最低速の処理ステージがもはやついていけなくなる点まで下げられる。電圧レベルが、最低速の処理ステージがもはやついていけなくなる点まで下げられる状況と、動作周波数が、最低速の処理ステージがもはやその処理を実行できなくなる点まで高められる状況との両方が、計算の前向きの進行に悪影響する処理エラーの発生を引き起こす。
【０００３】
バッチ内の異なる集積回路の間の製造変動を含む集積回路の特性、通常の温度範囲などの動作環境条件、処理される信号のデータ依存性、および類似物を考慮に入れて、最低電圧レベルより十分に高い電圧レベルおよび最高の望ましい処理周波数より十分に低い処理周波数で動作するように集積回路をセットすることによって、そのような処理エラーの発生を防ぐことが既知である。この従来の手法は、ワーストケースの状況を考慮に入れて最高動作周波数および最低動作電圧を制限する点で、慎重である。
【０００４】
特許文献１に、周波数、動作電圧、または温度などの少なくとも1つの性能を制御するパラメータを動的に制御することによって、動作中エラー(errors in operation)の非ゼロレートを維持するように動作するように集積回路が配置されるシステムが開示されている。このシステムは、集積回路の関連する処理ステージのメインラッチより後の時点でデータを取り込む遅延ラッチを使用することによって、タイミングエラーの存在にもかかわらず、計算の前向きの進行を可能にする。遅延ラッチによって取り込まれたデータ値は、エラーの検出の場合に、処理ステージの出力が安定する前の時点でメインラッチによって取り込まれた値を置換するのに使用される。集積回路を故意に非ゼロエラー率で動作させることによって、個々の集積回路を、特定の処理応用例によって要求される最高の可能な処理速度または最低の可能なエネルギ消費を得るように調整することができる。しかし、処理ステージのメインラッチごとに遅延ラッチを設けることによって処理回路を変更する必要は、ある種の状況で柔軟性に欠ける可能性がある。例えば、動作エラーが、中央処理ユニット(CPU)のデータパスに制限されるのではなく、制御ロジック自体または集積回路の他のクリティカルパス内でも発生する場合に、エラー検出および回復を実施するために、かなりの個数の遅延ラッチを集積回路に追加しなければならない。さらに、遅延ラッチからデータ値を読み取ることによってエラー回復を実施するのに既存のパイプラインシーケンシングロジックを使用する特許文献１の実施形態では、制御ロジック自体の中のクリティカルパスに起因して直接的にまたは制御ロジックへのデータパスからの準安定値をフィードバックすることによって間接的にのいずれであれ、パイプラインシーケンシングロジック自体が、動作中エラーによって影響されないことを保証することが、難しい場合がある。
【特許文献１】米国特許出願公開第2004-0199821号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、改善された性能を集積回路から引き出すことを可能にしながら、エラー回復動作に対処するための既存集積回路設計に対する広範囲の変更を必要としない技法の必要がある。
【課題を解決するための手段】
【０００６】
一態様から見ると、本発明は、データ処理装置用の集積回路であって、デジタルデータ処理を実行するように動作可能であり、
前記集積回路内のデジタル信号値を監視し、所定の時間ウィンドウ内の前記信号値の遷移を検出するように動作可能なエラー検出回路であって、前記遷移は、前記集積回路の動作中エラーを示す、エラー検出回路と、
前記データ処理装置の回復可能な状態を格納するように動作可能なストレージユニットであって、前記回復可能な状態は、前記集積回路のプログラマのモデルに対応するアーキテクチャ的状態変数の少なくともサブセットを含む、ストレージユニットと、
前記エラー検出回路に応答し、前記集積回路が前記格納された回復可能な状態を使用して前記動作中エラーから回復することを可能にするように動作可能なエラー回復回路と、
前記集積回路の、1つまたは複数の性能を制御する動作パラメータを制御するように動作可能な動作パラメータコントローラと
を含み、前記動作パラメータコントローラは、動作中エラーの非ゼロレートを維持するために前記エラー検出回路によって検出されるエラーの1つまたは複数の特性に依存して前記1つまたは複数の性能を制御するパラメータのうちの少なくとも1つを動的に制御し、前記エラー回復回路は、前記集積回路によるデータ処理が継続するように集積回路が前記動作中エラーから回復することを可能にするように動作可能である
ことを特徴とする集積回路を提供する。
【０００７】
本技法は、処理ステージの動作を直接に監視して、処理ステージが障害を発生する、制限する条件を見つけることができることを認識する。実際の障害が発生する時に、エラー回復は、集積回路を、そこから処理を安全に再開できる、以前の回復可能な動作状態に復元することによって実行することができる。この技法は、各処理ステージから遅延された値を取り込む必要なしに、また、動作中エラーの場合に処理ロジックに正しい値を再ロードする必要なしに、エラー検出を実行できることを認識する。本技法は、集積回路を比較的簡単に変更することを可能にし、その結果、エラー検出および回復を、CPUデータパスと制御ロジックとの両方を含む集積回路内の任意のクリティカルパスに適用できるようになる。
【０００８】
ストレージユニット(集積回路全体に分散された複数のストレージ要素とすることができる)によって格納される回復可能な状態は、少なくとも、レジスタ値、フラグ値、および処理モードなど、プログラマのモデルに対応するアーキテクチャ的状態変数のサブセットを含むことができる。しかし、一実施形態で、回復可能な状態は、例えばキャッシュに格納された変数に関する情報など、プログラマのモデルの一部ではないマイクロアーキテクチャ的状態変数の少なくともサブセットを含む。この配置は、そこから計算の前向きの進行を信頼できる形で実行できる状態に集積回路を戻すために、異なる動作中エラーが、回復可能な状態の異なるサブセットを必要とするので、集積回路のエラー回復機能の柔軟性を提供する。いくつかの動作中エラーが、他の動作中エラーより多数の状態変数および異なるタイプの状態変数に伝搬する影響を有することを了解されたい。
【０００９】
エラー検出回路が、複数の異なる形で動作中エラーを検出できることを了解されたい。しかし、一実施形態で、エラー検出回路は、第1サンプリング時刻の入力信号値と第2の後続のサンプリング時刻の同一の信号との間の差を計算することによってデータ値の遷移を検出するように配置される。したがって、回路が信頼できる形で動作している場合に出力の差が期待されない時間期間内の信号値の差は、エラーの単純な検出を可能にする。もう1つの実施形態では、エラー検出回路は、所定の時間ウィンドウ内の信号値の状態のすべての変化を検出することによってデータ信号の遷移を検出するように配置される。これは、そうでなければ検出されないはずの2つのサンプリング点の間で信号値のグリッチを検出することによって2つの別個のサンプリング点を用いる実施形態と対照的である。したがって、信号値の遷移の検出は、効果的に、離散的というより連続的である。
【００１０】
一実施形態で、エラー検出回路は、集積回路の関連処理回路要素の出力信号のエラーを検出するように動作可能である。これは、処理状態とエラーの発生との間の効果的な相関を可能にする。代替配置では、1つの検出回路を、複数の処理ステージの間で共有することができる。
【００１１】
一実施形態で、集積回路は、関連処理回路要素(例えば、メインフリップフロップ)のセットアップウィンドウと相互に排他的である準安定性ウィンドウを有するエラー検出回路を有する。これは、入力データがメインフリップフロップのセットアップウィンドウ内で遷移する時であっても、動作中エラーの検出を可能にする。エラー検出回路の準安定性ウィンドウを、処理ステージに関連するメインラッチのセットアップウィンドウとオーバーラップしないように配置することによって、電力消費の多い準安定性検出回路を設ける必要がなくなり、処理ステージのメインラッチのセットアップウィンドウ中とクロック信号の正フェーズであるクロック信号のホールドウィンドウ中との両方でデータ信号の遷移を感知することが可能になる。
【００１２】
集積回路を、非パイプライン集積回路とすることができるが、一実施形態で、集積回路が、複数の直列接続された処理ステージを含むパイプライン集積回路であることを了解されたい。
【００１３】
エラー検出回路が関連する特定の処理回路要素は、処理値を格納することができる任意の回路要素、例えばラッチセンスアンプとすることができるが、一実施形態で、処理回路要素は、複数のパイプラインステージの連続するパイプラインステージの間でデータを渡すラッチである。ラッチは、単純な回路要素であり、ラッチとのエラー検出回路の関連付けは、実施が簡単な、効率的なエラー検出をもたらす。
【００１４】
一実施形態で、エラー検出回路は、処理回路要素のセットアップ時間中に発生する遷移の検出を可能にするために、入力デジタル信号を遅延させるように配置された少なくとも1つのエラー遅延要素を含む。これは、データ遷移がメイン処理回路要素のセットアップ時間中に発生する時に動作中エラーが見逃される可能性を防ぐ。というのは、その場合に、その処理要素の論理状態が、そうでなければ未解決になるからである。デジタル信号の遅延は、エラー検出回路への入力に関してデータ遷移を整列させるという効果を有し、エラー検出回路のサンプリングウィンドウが、メイン処理要素のセットアップウィンドウとオーバーラップするようになり、メイン処理要素のセットアップウィンドウ内の信号遷移が、エラー検出回路内でエラーとして信頼できる形で検出されるようになる。
【００１５】
エラー検出回路が、多数の異なる形をとることができるが、一実施形態で、エラー検出回路が、0-1遷移検出器および1-0遷移検出器のうちの少なくとも1つを含むことを了解されたい。これらの遷移検出器は、別個の検出器とすることができ、あるいは、両方の方位の遷移を検出するように動作可能な単一の回路とすることができる。
【００１６】
集積回路は、誤った値をパイプラインからフラッシュし、再利用可能な状態ストアから直接に以前の状態を復元することによって動作中エラーから回復することができるが、一実施形態で、エラー回復回路は、集積回路の格納された状態変数としてのパイプライン集積回路内の複数のパイプラインステージの出力値のコミットメントの前に、それらの出力値の検証を可能にするように動作可能な少なくとも1つの安定性パイプラインステージを含む。安定性パイプラインステージは、パイプライン状態の出力値の作成でエラーが発生したかどうかを判定するのに十分な時間を与え、これは、コミットされる状態変数が破壊される可能性を下げる。
【００１７】
エラー回復回路に少なくとも1つの安定性パイプラインステージを含めることは、計算されるパイプライン値のコミッタル（committal）の遅延を伴う場合があるが、一実施形態で、集積回路は、入力値としての使用のために、複数のパイプラインステージの特定のパイプラインステージから複数のパイプラインステージの別の異なるパイプラインステージへその特定のパイプラインステージによって計算された値を供給するように動作可能なデータ転送回路網を含む。これは、余分な安定性パイプラインステージを設けることから潜在的に生じる可能性があるread-after-writeハザードの影響を減らす。転送回路網は、前の処理ステージによって計算された値を、その値がレジスタにコミットされる前にパイプライン内で現在後続の処理ステージに供給することを可能にする。これは、後続処理ステージが不正な入力値を使用するのを防ぐ。
【００１８】
ストレージユニットを、スタックメモリなど、任意のタイプのメモリとすることができるが、一実施形態で、ストレージユニットは、レジスタバンクを含むことを了解されたい。このレジスタバンクは、状態変数がエラーなしとして確認される前に、それらの状態変数を格納するように動作可能とすることができるが、一実施形態で、このレジスタバンクは、確認済み状態変数だけを格納するように動作可能であり、確認済み状態変数は、タイミング違反なしであることを確認済みである。したがって、レジスタバンクに格納される状態変数は、信頼できる状態変数であり、集積回路のその後に検出される動作中エラーからの回復に使用することができる。
【００１９】
集積回路に、単一のレジスタバンクを含む単一のストレージユニットを含めることができることを了解されたい。しかし、一実施形態で、集積回路は、その値が正しい(安定した)値として確認済みである確認済み状態変数を格納するように動作可能な確認済みレジスタバンクに加えて、その値がタイミング違反なしとして確認済みではない推測（speculative）状態変数を格納するように動作可能な推測レジスタバンクを含む。これは、エラー回復の一部をメイン処理と並列に実行することを可能にする。したがって、推測レジスタバンク内の値は、集積回路の動作中エラーが検出される場合に限って、確認済みレジスタバンクからの値を使用して訂正される。どの時にも、推測レジスタバンクには、確認済みレジスタバンク内に現在格納されている状態変数より進んだ処理ステージの状態変数が格納される。エラーの場合に、エラー回復回路は、確認済みレジスタバンクからの確認済み状態変数のうちの対応する確認済み状態変数によって推測レジスタバンク内の推測状態変数のサブセットを置換するように動作可能であり、その結果、処理は、検出された動作中エラーがまだ状態変数のいずれにも影響していない、以前の状態に戻ることができるようになる。これは、処理エラーの発生にもかかわらず計算の前向きの進行を保証する。
【００２０】
動作パラメータコントローラは、集積回路の動作中エラーの検出に応答して、性能を制御するパラメータを調整するように動作可能とすることができることを了解されたい。パラメータ調整は、エラーの検出に応答して即座に実行することができる。例えば、動作周波数を下げるか動作電圧を上げて、動作中エラーの可能性が下がることを保証することができる。これらの調整は、少なくとも一時的に実行することができる。しかし、本発明の一実施形態では、動作パラメータコントローラによる動作パラメータの調整の応答は、減衰され、その結果、少なくとも1つの動作中エラーの検出の後、性能を制御するパラメータのうちの1つまたは複数の調整の前に、時間遅れがある。これは、集積回路が、高まったエラー率が存続する可能性を査定することを可能にする。というのは、そのような高まりが、システマティックではない場合があり、そのような高まりを、処理動作の関連するシーケンスを単純に再実行することによって、動作パラメータの調整なしで処理できるからである。しかし、1つまたは複数の動作パラメータの一時的調整を実行して、デッドロックを防ぐことができる。
【００２１】
第2の態様によれば、本発明は、データ処理を実行する集積回路を制御する方法であって、
前記集積回路内のデジタル信号値を監視し、所定の時間ウィンドウ内で前記信号値の遷移を検出するステップであって、前記遷移は、前記集積回路の動作中エラーを示す、ステップと、
前記データ処理装置の回復可能な状態を格納するステップであって、前記回復可能な状態は、前記集積回路のプログラマのモデルに対応するアーキテクチャ的状態変数の少なくともサブセットを含む、ステップと、
前記集積回路が前記動作中エラーから回復することを可能にするために、前記動作中エラーの前記検出に応答して、前記格納された回復可能な状態を使用するステップと、
前記集積回路の1つまたは複数の性能を制御する動作パラメータを制御するステップと
を含み、制御する前記ステップは、動作中エラーの非ゼロレートを維持するために、監視し検出する前記ステップで検出されたエラーの1つまたは複数の特性に依存して前記1つまたは複数の性能を制御するパラメータのうちの少なくとも1つを動的に制御する段階を含み、前記動作中エラーの前記検出に応答する前記格納された回復可能な状態の使用は、前記集積回路によるデータ処理が継続するように前記集積回路が前記動作中エラーから回復することを可能にする
ことを特徴とする方法を提供する。
【００２２】
本発明の上記および他の目的、特徴、および利益は、添付図面と共に読まれるべき、例示的実施形態の次の詳細な説明から明白になる。
【発明を実施するための最良の形態】
【００２３】
図1に、集積回路の一部を概略的に示すが、これは、英国ケンブリッジのARM Limited社が設計したARMプロセッサコアなどのプロセッサコア内の同期式パイプラインの一部とすることができる。同期式パイプラインは、複数の処理ステージから形成される。第1ステージは、論理モジュール3010と、それに続くフリップフロップの形のラッチ3020とを含む。論理モジュール3010の出力は、遷移検出器3030に供給され、遷移検出器3030は、論理信号値の遷移を検出するように動作可能であり、この遷移は、所定の時間ウィンドウ内で発生し、集積回路の動作中エラーを示す。そのような動作中エラーは、集積回路の動作パラメータが、フリップフロップ3020が論理モジュール3010の値を取り込む時までに論理モジュール3010がその動作を完了しないものになっている場合に、生じる可能性が高い。
【００２４】
集積回路の動作パラメータには、クロック3031によって供給されるクロック信号周波数、集積回路に供給される動作電圧、ボディバイアス(body bias)電圧、温度などが含まれる。具体的に言うと、クロック周波数が、処理データステージのうちで最低速のものがついていけないほどに高速になるようにセットされている場合、または集積回路の動作電圧が、処理データステージのうちで最低速のものがもはやついていけない点まで電力消費を減らすために下げられる場合に、システマティック処理エラーが発生する。集積回路の後続処理ステージは、同様に、関連する論理モジュールの出力値を取り込む遷移検出器およびフリップフロップにつながる論理モジュールから形成される。
【００２５】
図1では、処理の3つのステージが図示され、3つの対応する遷移検出器3030、3032、および3034がある。これらの遷移検出器の出力は、それぞれ、ORゲート3040に供給される。ORゲート3040からのハイ出力は、処理エラーが、関連する論理モジュールのうちの少なくとも1つで発生したことを示す。エラーのこの表示は、ORゲート3040の出力として、およびエラー回復論理モジュール3050への入力として供給され、エラー回復論理モジュール3050は、遷移検出器のそれぞれに応答し、集積回路が動作中エラーから回復することを可能にするように動作可能である。動作中エラーからの回復は、エラー回復ロジック3050によって、格納された状態情報3060を使用することによって達成される。格納された状態情報3060は、そこから計算を再び開始すべき、処理の以前の状態に戻ることを可能にすることによって、集積回路が動作中エラーから回復することを可能にする。この状態情報には、アーキテクチャ的状態変数とマイクロアーキテクチャ的状態変数との両方を含めることができる。
【００２６】
アーキテクチャ的状態変数は、集積回路のプログラマのモデルで指定されるはずの変数、例えば、レジスタ値、命令フラグ、プログラムカウンタ値などに対応する。マイクロアーキテクチャ的状態変数の例が、キャッシュ内容である。例えば、フラグセットを伴うADD命令について、命令ADDS R0 R0 R1の実行は、状態変数R0、フラグセット動作に関連するフラグ、およびこの命令に関連するプログラムカウンタ値の格納を伴うはずである。状態変数の他の例が、特権モードまたはユーザモードなど、プロセッサの特定の動作モードである。
【００２７】
エラー回復ロジック3050は、集積回路の動作中エラーの存在下で計算の前向きの進行を可能にする。これは、遷移検出器3030、3032、および3034によるタイミングエラーの検出と、格納された状態情報3060を使用して、検出されたエラーから回復するのにエラー回復ロジック3050を使用することとによって達成される。エラー回復に使用される格納された状態情報3060は、動作中エラーによって影響されていないことを確認された、レジスタに最も最近に格納された値である。そのような格納された値は、動作中エラーの検出の前の集積回路のアーキテクチャ的状態に対応する。
【００２８】
図2に、推測レジスタバンクに加えて確認済みレジスタバンクを使用して動作中エラーから回復する、本技法の一例による配置を概略的に示す。この配置は、メイン処理パイプライン3100、推測レジスタバンク3110、複数の安定性パイプラインステージ3120、クリティカル状態バッファ3122、確認済み状態バッファ3124、確認済みレジスタバンク3130、遷移検出器3142-1から3142-4のアレイ、OR論理ゲート3150、エラー検出ロジック3160、パイプラインフラッシュロジック3170、確認済み状態回復ロジック3180、およびプログラムカウンタリセットロジック3190を含む。メイン処理パイプライン3100は、4つの別個のパイプラインステージすなわち、第1実行ステージn、第2実行ステージn-1、第3実行ステージn-2、およびライトバックステージn-3を含む。処理パイプラインステージからの出力は、ラッチ(図1のフリップフロップ3020など)を介して後続パイプラインステージに渡される。ライトバックパイプラインステージn-3の出力は、信号パス3101および3103を介して推測レジスタバンク3110に供給され、信号パス3101および3103は、それぞれ、推測レジスタバンク3110の2つの書き込みポートSW0およびSW1につながる。図2に示された特定の配置では、メインパイプラインのライトバックステージは、処理ステージn-3に対応し、したがって、この配置で推測レジスタバンク3110に格納された最後の状態は、処理ステージn-4に対応する。
【００２９】
第1実行ステージnからの出力は、遷移検出器3142-1に出力され、第2実行ステージn-1からの出力は、遷移検出器3142-2に出力され、メインパイプラインの第3実行ステージn-2からの出力は、遷移検出器3142-3に出力され、最後に、メインパイプライン3100のライトバックステージWBからの出力は、遷移検出器3142-4に出力される。これらの遷移検出器3142-1から3142-4のそれぞれは、処理回路網の動作中エラーを示すことができる。4つすべての遷移検出器の出力は、OR論理ゲート3150への入力に供給され、OR論理ゲート3150の出力は、エラー検出ロジック3160に供給される。したがって、4つのメインパイプライン状態n、n-1、n-2、またはn-3のいずれかで遷移が検出される場合に、OR論理ゲートは、動作中エラーを示す値を出力する。エラー検出ロジック3160は、OR論理ゲート3150の出力に応答して、パイプラインフラッシュロジック3170、確認済み状態回復ロジック3180、およびプログラムカウンタリセットロジック3190によって実行されるエラー回復処理を開始し、その結果、検出された動作中エラーが、確認済みレジスタバンク3130内に格納された値のいずれにも影響しないようにする。したがって、検出された動作中エラーに応答して、パイプラインフラッシュロジック3170は、パイプラインフラッシュを開始して、パイプラインからすべての潜在的に誤った値をクリアする。パイプラインフラッシュロジック3170は、クリティカル状態バッファ3122と安定性パイプラインステージ3120との両方に接続される。検出された動作中エラーの場合に、メインパイプライン内の値のすべてが、パイプラインの安定性ステージ3120内の値およびクリティカル状態バッファ3122に現在格納されており、まだ確認済みレジスタバンク3130に格納されていないすべての値に加えて、フラッシュされる。パイプラインがフラッシュされたならば、確認済み状態回復ロジック3180が、一連の処理動作を開始し、これによって、データ処理装置が、その値を確認済みレジスタバンク3130に最も最近に格納された命令が実行されたばかりの以前の状態に戻される。この命令から始まる再実行は、プログラムカウンタリセットロジック3190が、現在の命令から、値を確認済みレジスタバンク3130に最も最近に格納された命令に続く命令に、プログラムカウンタをリセットした後に開始される。
【００３０】
正常処理動作は、それぞれが複数の異なるタイプのアーキテクチャ的状態変数の更新を伴う可能性がある複数の命令の実行を伴う。例えば、単一の所与の命令の実行が、1つまたは複数の汎用レジスタ、フラグ、プログラム状況レジスタ、またはプログラムカウンタの更新を必要とする場合がある。しかし、これらの更新された変数を格納する物理要素は、それらが同一の所与の命令に関係する場合であっても、必ずしも同一のクロックサイクルには更新されない。例えば、ARM(登録商標)命令セットでは、ロード命令は、フラグを変更することができず、したがって、汎用レジスタに対する更新が格納される処理サイクルより前の処理サイクルに、フラグに対する更新を格納することが可能である。ロード命令が、パミッションフォールト(permission fault)などのメモリステージ関連例外を生成しなかったことがわかっていない限り、汎用レジスタを更新できないことに留意されたい。動作中エラーが、どの処理サイクルにも発生し得ることを了解されたい。したがって、図2の配置では、確認済みレジスタバンク3130に対する更新が、命令再実行を使用して回復が可能であることを保証するために「同期化される」ことを保証する必要がある。これは、アーキテクチャ的状態変数のある種のクリティカルなサブセットが、確認済みレジスタバンク3130に格納されている場合に限って達成可能である。アーキテクチャ的状態変数のクリティカルなサブセットのすべてが再実行を可能にするのに使用可能であることを保証するために、所与の命令に関連するクリティカル状態更新の値のすべてが使用可能であることと、非クリティカル状態更新のすべてが確認済みレジスタバンク3130に既に格納されているか確認済み状態バッファ3124内に存在するかのいずれかであることとがわかるまで、その特定の命令に関連する更新された値を保持するために、図2のクリティカル状態バッファ3122が設けられる。所与の命令に関連する値のすべてが使用可能になっている場合に限って、その命令に関連するクリティカル変数が、確認済みレジスタバンク3130に格納される。確認済みレジスタバンク3130は、CW0およびCW1として示された2つの書き込みポートを有する。同様に、推測レジスタバンクは、2つの書き込みポートSW0およびSW1を有する。
【００３１】
確認済みレジスタバンクに対する所与の命令に関連する値の実際の物理的更新が、即座には発生しない場合があることに留意されたい。こうなるのは、例えば、レジスタバンク上の限られた個数の書き込みポート(この事例では2つの書き込みポート)に起因して単一の処理サイクルに実行できるものより多数のクリティカルな状態更新が必要な場合である。クリティカル状態バッファの出力は、確認済みレジスタバンク3130に供給される前に、確認済み状態バッファ3124に供給される。確認済み状態バッファ3124は、単に、確認済みレジスタバンク3130用の書き込みバッファである。これは、所与の処理サイクルに確認済みレジスタバンク3130に書き込まれなければならない2つを超える確認済み値がある(例えば、クリティカル状態更新のリオーダに起因して)場合のパイプライン全体のストールを避けるために設けられる。
【００３２】
安定性パイプラインステージ3120の出力は、クリティカル状態バッファ3122と確認済み状態バッファ3124との両方に供給される。安定性パイプラインステージ3120は、メインパイプライン内の動作中エラーが、これらの値が確認済みレジスタバンク3130に格納される前にエラー検出ロジック3160によって検出されるのに十分な時間を与える。
【００３３】
エラーが命令n-2に対応するメインパイプラインの第3実行状態で発生したことを遷移検出器3142-3が示す場合を検討されたい。この場合に、プログラムカウンタリセットロジック3190は、プログラムカウンタを命令nから命令n-5にリセットする。というのは、この集積回路の最後の確認済み状態が、命令n-6に対応するからである。命令n-6に対応する確認済み状態は、命令n-6に関連する状態変数のクリティカルサブセットに関係するデータを確認済みレジスタバンク3130からデータパス3111を介して推測レジスタバンク3110にコピーすることによって回復される。その後、処理命令の実行は、ステージn-5から前方に進み、その結果、この集積回路の動作中エラーは、計算の結果に影響しない。確認済みレジスタバンク3130に格納される最後の処理状態は、処理ステージn-6の状態情報である。
【００３４】
確認済みレジスタバンク3130に格納される状態変数は、推測レジスタバンク3110に格納される状態変数より長い、障害の間の平均時間を有する(したがって、誤りである可能性がはるかに少ない)。したがって、確認済みレジスタバンク3130からの状態変数が、動作中エラーが検出された時に最後の確認済み状態n-6を復元することによってメインパイプライン3100内の検出された動作中エラーから回復するのに使用される。したがって、このシステムは、この集積回路の最後の確認済み状態を使用することによって、動作エラーから回復することができる。
【００３５】
図2の配置が、例示のために提供される単純化された配置であることに留意されたい。本技法による他の配置では、単一の命令が潜在的に複数のパイプラインステージにまたがる可能性があるので、命令とパイプラインステージとの間の1対1対応はない。したがって、そのような代替配置では、そのクリティカル変数が確認済みレジスタバンク3130に最後に格納された命令に対応するプログラムカウンタは、現在のプログラムカウンタおよびパイプラインの長さから単純に導出されるのではない。そうではなく、最後に成功して実行された命令に対応するプログラムカウンタは、メイン実行パイプラインをシャドウ化する、プログラムカウンタ値の別々のパイプラインから入手される。
【００３６】
図3Aに、メインパイプラインの末尾に追加された複数の安定化パイプラインステージを含む、本技法による配置を概略的に示す。この配置は、パイプラインの末尾に2つの安定性ステージ3220および3222を含む複数のパイプラインステージ3210と、遷移検出器3230-1から3230-4のアレイと、ORゲート3240と、動作パラメータコントローラ3242と、エラー検出ロジック3250と、パイプラインフラッシュロジック3260と、確認済み状態回復ロジック3262と、プログラムカウンタリセットロジック3270と、デコードパイプラインステージ3280と、スコアカードファイル3282と、転送ロジック3290と、クリティカル状態バッファ3292と、確認済み状態バッファ3294と、確認済み状態レジスタバンク3296とを含む。
【００３７】
図2の例の実施形態と同様に、パイプライン3210は、命令n、(n-1)、および(n-2)に対応する3つの実行ステージを含む。このパイプラインの末尾には、それぞれ2つの命令(n-4)および(n-5)に対応する2つの安定性ステージ3220および3222が追加されている。追加の安定性ステージをこの形でメインパイプラインの末尾に直接に追加することによって、レジスタバンクへの出力がわずかに遅延されるが、この余分な安定性ステージは、この集積回路に、レジスタバンク3296へのデータの出力の前に動作中エラーの発生を検出する機会を与える。これは、エラー検出処理が、パイプラインの出力がレジスタバンク3296に供給される時までに完了していることを意味する。やはり、メインパイプラインの処理ステージのそれぞれの出力は、遷移検出器3230-1から3230-4に供給され、遷移検出器3230-1から3230-4は、その出力をORゲート3240に供給する。エラーの検出の場合に、エラー回復は、図2を参照して上で説明したものと同様に、パイプラインフラッシュロジック3260、確認済み状態回復ロジック3262、およびプログラムカウンタリセットロジック3270を使用して、エラー検出ロジック3250を介して開始される。動作中エラーの発生は、動作パラメータコントローラ3242にもシグナリングされ、動作パラメータコントローラ3242は、総合的な効率を高める形で有限非ゼロエラーノート（note）を維持するために、検出された動作中エラーの1つまたは複数の特性に依存して、クロック周波数、動作電圧、ボディバイアスされた電圧、または温度のうちの少なくとも1つを調整するように動作可能である。上で図3Aを参照して述べたように、代替実施形態では、パイプラインステージと命令との間の1対1対応がないことを了解されたい。
【００３８】
この例では、2つの安定性ステージは、それぞれ命令番号(n-4)および(n-5)に対応し、これは、レジスタバンク内の最後にコミットされた状態変数が、命令番号(n-6)に対応することを意味する。したがって、例えば、パイプラインステージ(n-1)でのエラーの場合には、遷移検出器3230-2がトリガされ、遷移検出器3230-2は、ORゲート3240からのハイ出力をトリガする。回復シーケンスが開始され、パイプラインがフラッシュされて、このエラーによって影響されるすべてのパイプライン値が除去される。プログラムカウンタは、ロジック3270によって、命令nから命令(n-5)にリセットされて、計算の前向きの進行が可能にされる。追加の安定性ステージ3220および3222は、パイプライン内の命令実行におけるある遅延を招くので、あるパイプラインステージの出力を、最後に実行された命令に対応する、より以前のパイプラインステージの入力に接続する転送ロジック3290を設けることが適当である。この事例では、パイプラインステージ(n-2)の出力が、命令nの実行に関連するパイプラインステージに入力として供給される。転送ロジック(図示せず)は、パイプラインステージ(n-5)、(n-4)、(n-3)、および(n-1)からも設けられ、クリティカル状態バッファ3292および確認済み状態バッファ3294からも設けられる。これは、まだレジスタバンク3292に保存されていない、より後のパイプラインステージからのコミットされていない値を、適当な場合に後続処理命令への入力として供給することを可能にする。
【００３９】
この集積回路は、スコアカードファイル3282を使用して、どの命令がどのレジスタ番号に書き込むかを記憶する。スコアカードファイルは、パイプラインのより以前のステージ、具体的にはパイプライン3210のデコードステージ3280によって書き込まれる。スコアカード3282は、どの命令がどのレジスタに書き込むかを記憶することだけを必要とし、どの命令がどのレジスタから読み取るかを記憶する必要はない。というのは、命令書き込みだけが、さまざまなパイプラインステージへの入力値に影響する可能性が高いからである。例えば、ステージ(n-2)の命令が、レジスタR3に書き込み、パイプラインステージnで実行される後続命令が、命令(n-2)の出力がレジスタバンクにコミットされる前に入力としてレジスタR3から読み取る場合には、命令nに対応するパイプラインステージへの入力として、レジスタR3に書き込まれる値に対応する出力を供給する必要がある。
【００４０】
図2と図3Aとの両方の配置で、エラー検出、パイプラインフラッシュ、プログラムカウンタリセット、および最後の確認済み状態の回復の各ステージを、複数の異なる順序で実行することができ、本技法が、これらの図面に示されたこれらの論理モジュールの特定の順序付けに制限されないことに留意されたい。
【００４１】
図3Aの配置では、エラーが処理ステージ(n-1)で発生する場合に、この集積回路の状態変数は、レジスタバンク3296にコミットされた最後の命令に対応する値に復元される。エラーからの回復に使用される状態変数を格納する際に、どの状態更新がクリティカルであるかの判定を助けるために、命令依存性が考慮に入れられる。これは、エラーが発生した場合に回復が可能になるように、レジスタバンクを一貫した状態のままにするために必要な書き込みの順序付けを判定するのを助ける。したがって、値をレジスタバンクから回復することによって復元されなければならない状態変数は、特定のエラーに従って変化する。状態変数がレジスタバンクに格納される形および順序付けは、動作中エラーから回復するためにエラー回復回路によって使用されるアーキテクチャ的状態変数および/またはマイクロアーキテクチャ的状態変数の特定のサブセットを識別するのを助ける。
【００４２】
図3Bに、図2および図3Aの回路によって実行されるエラー検出および回復に用いられる動作のシーケンスを概略的に示す。ステージ3297で、処理回路網は、次の処理サイクルに関連する処理を開始し、その後、ステージ3298で、動作中エラーが発生したか否かを判定する。ステージ3298で、動作中エラーが遷移検出器の1つによって検出されなかった場合には、このプロセスは、ステージ3297で後続サイクルを処理することによって継続する。しかし、動作中エラーが検出された場合には、このプロセスは、ステージ3299に進み、ここで、パイプライン全体から確認済みでない状態変数をフラッシュする。代替配置では、パイプラインに現在格納されている値のサブセットだけをフラッシュする必要がある。次に、このプロセスは、ステージ3300に進み、ここで、プログラムカウンタを、最後の確認済み命令の次の命令にリセットする。これは、動作中エラーのすべての影響を除去するための命令の再実行を始めさせる。ステージ3301で、ステージ3300でリセットされたプログラムカウンタ値が、最後にリセットされたプログラムカウンタ値と等しいかどうかを判定する。プロセスのこのステージは、これによって所与の命令が繰り返して実行され、動作中エラーをもたらす、計算のデッドロックを検出するように働く。
【００４３】
ステージ3301で、現在のプログラムカウンタ値が、最後にリセットされたプログラムカウンタ値と等しくないと判定される場合には、このプロセスは、ステージ3303に直接に進み、ここで、プログラムカウンタ値を、将来のデッドロック検出のために格納する。しかし、ステージ3301で、プログラムカウンタ値が、最後にリセットされたプログラムカウンタ値と等しいと判定される場合には、これは、デッドロックを示す。したがって、このプロセスは、ステージ3302に進み、ここで、デッドロックの継続を防ぐために、プロセッサの1つまたは複数の動作パラメータを調整する。この特定の配置では、動作パラメータの調整は、クロックレートを一時的に下げることを含む。しかし、代替実施形態で、電圧を調整して、同一の結果を達成できることを了解されたい。ステージ3302で、クロックレートが一時的に下げられたならば、このプロセスは、ステージ3303に進み、ここで、プログラムカウンタ値を、将来のデッドロック検出のために格納する。その後、このプロセスは、ステージ3397に戻り、次の処理サイクルを実行する。
【００４４】
図3Bによる配置では、デッドロックが、能動的に検出され、動作パラメータに対する一時的変更が、デッドロックに応答して行われるが、代替配置では、動作パラメータが、すべてのエラー検出に応答して、例えばクロックレートを下げることによって、一時的に変更される。この場合に、デッドロックを能動的に検出する必要はない。
【００４５】
図3Cに、本技法による動作パラメータ調整プロセスを示す流れ図を概略的に示す。動作パラメータ調整プロセスは、図3Bのエラー検出および回復プロセスとは別々のプロセスである。図3Cに示された動作パラメータ調整プロセスは、処理動作に関連するエラー率をサンプリングするステージ3304で開始される3ステージプロセスである。その後、ステージ3305で、エラー率が許容できる限界内にあるかどうかを判定し、そうである場合には、動作パラメータに対する調整は行われないが、エラー率のサンプリングは継続される。しかし、エラー率が許容できる限界内にないと判定される場合には、このプロセスは、次のステージ3306に進み、これによって、動作パラメータを調整する。この動作パラメータの調整が、サンプルエラー率を許容できる限界内に戻さない場合には、さらなる調整が、必要に応じて行われる。図3Cの動作パラメータ変更プロセスは、完全にハードウェアでまたはハードウェアおよびソフトウェアの組合せを使用して実行することができ、エラー率情報は、ハードウェアレジスタまたはメモリのいずれかに記録される。このエラー率情報は、その後、ソフトウェアによって読み取られ、このソフトウェアは、ソフトウェアプログラマブルレジスタを使用して、動作パラメータを変更する。
【００４６】
図4に、本技法による遷移検出Dタイプフリップフロップを概略的に示す。この配置は、標準的なマスタ-スレーブ正エッジトリガフリップフロップ3310および遷移検出器回路3350を含む。フリップフロップ3310は、パイプラインステージを接続する、図1のフリップフロップ3020に対応する。代替配置では、フリップフロップを、トリガおよび他の要件に関わりなく単一の値を格納するように動作可能な任意の回路要素によって置換することができる。図4の回路配置の処理は、クロック信号CLKによって駆動される。クロック信号nCLKは、単一のインバータ要素を通過した後のクロック信号に対応し、クロック信号bCLKは、2つのインバータ要素を通過した後のクロック信号に対応する。入力データは、メインフリップフロップに供給され、3つのインバータI1、I2、およびI3の配置を介して遷移検出器3350にも供給される。3つのインバータの組合せによって導入される遅延は、メインフリップフロップのセットアップ時間と等しい。セットアップ時間は、フリップフロップの特性であり、フリップフロップ回路が一定の論理値で安定するのに必要な時間を表す。
【００４７】
遷移検出器3350内で、入力信号は、一連の4つのインバータI4、I5、I6、およびI7に供給される。このインバータアレイ内のさまざまな点からの出力が、トランジスタN1、N2、N3、N4、N5、およびN6を含むトランジスタアレイに供給される。トランジスタN1は、インバータI4の入力に対応する信号から導出された出力によって駆動され、トランジスタN2は、インバータI6の出力によって駆動され、トランジスタN3は、インバータI4の出力によって駆動され、トランジスタN4は、インバータI7の出力によって駆動される。トランジスタN5は、クロック信号がハイの時に限ってオンになる。トランジスタN6は、ダイナミックノードERR_DYNに関連する。ERR_DYNノードは、バックツーバックインバータI8およびI9による雑音に起因する放電から堅牢に保護され、エラー出力信号が、インバータI10を介してこの回路から出力される。各個々のエラー検出回路からのエラー信号は、制御状態機械(図示せず)に供給され、この制御状態機械は、それらのエラー信号に応答して、グローバルエラーリセット信号Err_resetを出力する。この信号は、次のエラーイベントのためにERR_DYNノードをプリチャージする。この条件プリチャージ方式は、クロック3031に関連するピンの容量性負荷を大幅に減らし、低電力オーバーヘッド設計をもたらす。この条件プリチャージ方式は、そうでなければプリチャージフェーズ中にエラー信号の状態を保持するために必要になるはずの余分なラッチ要素の必要もなくす。図4の回路配置は、入力データがメインフリップフロップ3310のセットアップ時間ウィンドウ内または図5に示されたサンプリングエッジに続くクロックフェーズ中のいずれかで遷移する時に、この集積回路の動作中エラーのフラグを立てるように動作可能である。セットアップウィンドウまたは次のクロックフェーズのいずれかでのデータ遷移は、遅く遷移する入力(late transitioning input)を示す。
【００４８】
図4の遷移検出器に対する代替案は、フリップフロップ3020によって実行される時より遅い時に処理ロジックの出力を取り込むのに遅延ラッチを使用することであろう。遅延された値とフリップフロップ3020によって格納された遅延されていない値との間の比較を使用して、エラーの発生を判定することができる。このエラー検出システムは、特許文献１に記載された。このシステムは、第1サンプリング時刻の信号値と第2の後続のサンプリング時刻の信号値との間の差を計算することによって遷移を検出することを含む。しかし、図4の遷移検出器3350は、所定の時間ウィンドウ内の信号のすべての状態変化を検出するように配置されている。
【００４９】
図5に、メインフリップフロップ3310のセットアップ期間内に発生するデータ遷移の機能タイミング図を概略的に示す。メインフリップフロップのセットアップ時間TSETUP_FFは、図5の最上部にクロックエッジに関連して示されており、セットアップ時間がクロックエッジの直前にあることがわかる。クロックエッジが正のままである時間は、時間期間TPOSによって示される。入力データの遷移が、この事例ではメインフリップフロップのセットアップ期間に発生することがわかる。しかし、入力データが遷移検出器3350に入力される前にそれを通過しなければならない図4の遅延要素I1、I2、およびI3の結果として、データの遷移は、より後の時刻にシフトされ、時間TPOS内であるが期間TSETUP_FFの外で発生するようになる。データプロファイルDATA_DEL3は、遷移検出器3350内の第1のインバータI4のへの入力に対応する。このデータプロファイルは、入力データ遷移プロファイルに関して反転されている。というのは、入力データ遷移プロファイルが、奇数個のインバータI1、I2、およびI3を通過しているからである。
【００５０】
図6に、図4の回路がどのようにして論理状態1から論理状態0へのデータ遷移を検出するかを表す機能タイミング図を概略的に示す。図4の回路は、トランジスタN1、N2、およびN5のすべてがオンである時に、そのような遷移を検出する。図6Aに示されているように、クロック信号は、時刻TC1にロウからハイになり、時刻TC2にハイ状態からロウ状態に戻る。図6Bは、時刻TDのハイからロウへのデータ遷移を示し、この時刻TDは、クロック信号がハイである期間内にある。図6Cは、図4の信号DATA_DEL3のプロファイルを示し、これは、インバータI3の出力であり、トランジスタN1を制御する。この信号は、時刻TI3にロウからハイになり、時刻TI3は、データ遷移時刻TDよりわずかに後である。図6Dは、データ信号DATA_DEL4のデータプロファイルを示し、これは、トランジスタ入力N3を制御する。このデータ信号は、やはりTI3より後の時刻すなわち時刻TI4にハイからロウに遷移する。図6Eは、データ信号DATA_DEL5のデータプロファイルを示し、これは、遅延要素I4によって出力され、トランジスタアレイのどのトランジスタにも入力を供給しない。図6Fは、データ信号DATA_DEL6のプロファイルを示し、これは、N2トランジスタ入力を制御し、時刻TI4より後の時刻TI6にハイからロウに遷移する。最後に、図6Gは、DATA_DEL7のプロファイルを示し、これは、トランジスタN4への入力を制御し、やはり時刻TI6より後の時刻TI7にロウからハイに遷移する。トランジスタN1は、時点TI3の前はオフであり、その後にはオンである。トランジスタN3は、時刻TI4の前はオンであり、その後にはオフである。トランジスタN2は、時刻TI6の前はオンであるが、その後にはオフであり、トランジスタN4は、時刻TI7の前はオフであり、その後にはオンである。したがって、トランジスタN1とN2との両方が同時にオンにスイッチングされる時間ウィンドウがあるが、この機能タイミング図にはトランジスタN3とN4との両方がオンにスイッチングされる時間ウィンドウがないことがわかる。
【００５１】
T=0で始まりTI3で終わる時間ウィンドウ内で、トランジスタN1およびN4は、オフにスイッチングされるが、トランジスタN2およびN3は、オンにスイッチングされる。というのは、N1を制御する信号とN3を制御する信号との両方が、その時間ウィンドウ内でハイであるからである。TI3とTI4との間の時間ウィンドウ内では、トランジスタN1、N2、およびN3のすべてが、オンにスイッチングされるが、トランジスタN4は、オフにスイッチングされる。TI4とTI6との間の時間ウィンドウ内では、トランジスタN1とN2との両方が、オンにスイッチングされるが、トランジスタN3とN4との両方が、オフにスイッチングされる。TI6とTI7との間の時間ウィンドウ内では、トランジスタN1が、オンにスイッチングされる唯一のトランジスタであり、TI7とT2との間の時間ウィンドウ内では、トランジスタN1およびN4が、オンにスイッチングされるが、トランジスタN2およびN3は、オフにスイッチングされる。したがって、クロックパルスがハイである(トランジスタN5がオンにスイッチングされる)持続時間の間、および時刻TI3から時刻TI6までの間に、トランジスタN1、N2、およびN5のすべてが、オンにスイッチングされる。これは、導電パスがトランジスタのアレイからラッチノードErr_dynへ設けられるので、遷移の検出をもたらす。
【００５２】
図7Aから7Gに、論理値0から論理値1へのデータ遷移の検出に関する図4の回路の機能タイミング図を概略的に示す。図7Aは、クロック信号を示し、クロック信号は、TC1からTC2までの期間の間に正である。データは、図7Bに示されているように時刻TD2の後に0から1に遷移し、時刻TD2は、クロック信号の正フェーズ内にある。図7Cは、データ信号DATA_DEL3のプロファイルを示し、データ信号DATA_DEL3は、トランジスタN1の入力を駆動する。このデータ信号は、時刻TI3Aに1から0に遷移し、時刻TI3Aは、インバータI3の評価時間に対応する時間だけ時刻TD2より遅い。図7Dは、トランジスタN3の入力を駆動するデータ信号DATA_DEL4のプロファイルを示す。この信号は、時刻TI4Aにロウからハイに遷移し、時刻TI4Aは、インバータI4の評価時間に対応する期間だけ時刻TI3Aより遅い。図7Eは、インバータI5の出力に対応するデータ信号DATA_DEL5のプロファイルを示す。図7Fは、データ信号DATA_DEL6のデータプロファイルを示し、これは、トランジスタN2入力を駆動し、この信号は、時刻TI6Aに0から1に遷移し、時刻TI6Aは、インバータI5の評価時間およびインバータI6の評価時間に対応する時間だけ時刻TI4Aより遅い。最後に、図7Gは、データ信号DATA_DEL7のデータプロファイルを示し、これは、トランジスタN4の入力を駆動する。このデータ信号は、時刻TI7Aに1から0に遷移する。インバータI10の出力は、トランジスタN3、N4、およびN5のすべてがオンの場合に限って、ハイからロウに遷移する。図7Aから7Gまでからわかるように、そうである時間ウィンドウがある。具体的に言うと、トランジスタN3がオンにスイッチングされるTI4Aから始まり、トランジスタN4がオフにスイッチングされる時刻TI7Aまでの時間ウィンドウである。トランジスタN1、N2、およびN5のすべてがオンにスイッチングされる時間ウィンドウは、この事例にはない。したがって、0から1へのデータの遷移は、トランジスタN3、N4、およびN5のすべてがハイの場合に図4の回路によって示されることがわかる。
【００５３】
図8Aに、図4のメインフリップフロップ3310の機能タイミング図を概略的に示し、図8Bに、図4の遷移検出器回路3350の機能タイミング図を概略的に示す。一緒に、図8Aおよび8Bの機能タイミング図は、遷移検出器の準安定性ウィンドウが、メインフリップフロップ3310のセットアップウィンドウとオーバーラップしないようにどのように整列されているかを示す。遷移検出器が、メインフリップフロップ3310のセットアップウィンドウ内またはクロックの立ち上がりエッジに続く時間ウィンドウ内のいずれかで遷移を検出することが要求される。そのような遷移は、メインフリップフロップが指定された時に正しい値を出力していない可能性がある、遅い信号を示す。図8Aに示されたクロック信号は、メインフリップフロップに関連し、立ち上がるクロックエッジに先行するセットアップウィンドウTsetup_ffを示す。メインフリップフロップのこのセットアップウィンドウを定義する2つの要件がある。第1の要件は、正しいデータ値が常に信頼できる形でサンプリングされることであり、第2の要件は、出力タイミング(すなわち、クロックからデータ出力までの時間)が決定的であり、その特徴を表すことができることである。これらの要件のうちで、通常、出力タイミング要件は、正しい値をサンプリングする要件より(わずかに)厳格である。したがって、メインフリップフロップのセットアップ時間Tsetup_ffを、2つの時間ウィンドウに副分割することができる。この時間ウィンドウのうちの第1の時間ウィンドウは、Tlate(図8A参照)であり、この時間ウィンドウ内では、信号遷移が発生する場合に、正しい値が必ずサンプリングされるが、出力タイミングは指定された限界の中にはない。メインフリップフロップのセットアップ時間内の第2のウィンドウは、図8Aでは、Tmstable-ffという符号を付けられており、メインフリップフロップの準安定性ウィンドウである。ウィンドウTmstable-ff内では、正しいデータ値をサンプリングすることはできず、出力が定義された値に解決されるのに要する時間は、非決定的である可能性が高い。
【００５４】
図4の回路図に示されたメインフリップフロップに戻ると、メインフリップフロップ3310では、遷移ゲートTG1が閉じる時に、遷移ゲートTG1の出力に配置されたインバータの両側にあるノードM1およびM2の電圧レベルが、遷移ゲートTG1の出力のインバータと並列に配置されたトライステートインバータF1が必ず正しい値をフィードバックする電圧レベルであることが、可能である。しかし、値が後続の遷移ゲートTG2およびTG2の出力の後のさらなるインバータの両側にあるノードS1およびS2を通過するのに要する時間と、値がQbarおよびQという符号を付けられた後続インバータを通過するのに要する時間とは、M2が「フルレール(full-rail)」(論理状態1のVddまたは論理状態0のGNDのいずれか)である場合に要する時間より長い。
【００５５】
ここで図8Bを参照すると、図8Bは、図4の遷移検出器3350に関連する機能タイミング図であるが、遷移検出器3350は、メインフリップフロップ3310(および図5と図8Aとの両方に図示)と同一の形でクロックの立ち上がりエッジに対するセットアップ時間を有するのではない。そうではなく、遷移検出器3350について、データ入力の遷移を信頼できる形で検出できる時間ウィンドウがあり、この時間ウィンドウを、「サンプリングウィンドウ」と称する。図8Bでは、サンプリングウィンドウにTsample_tdという符号が付けられている。図8Bでは、サンプリングウィンドウTsample_tdが、3つの別個のサブウィンドウに副分割されている。最初の2つのサブウィンドウは、上で説明したメインフリップフロップのサブウィンドウTlateおよびTmstable-ffに対応する。第3のサブウィンドウTincorrectは、ウィンドウTmstable_ffに隣接するが、TlateおよびTmstable_ffと一緒に、その中でデータ信号の遷移が遷移検出器3350によって検出されなければならない時間ウィンドウTsample_td全体を形成する。データ信号が、サブウィンドウTlate内で遷移する場合には、図4のフリップフロップ3310のQ出力は正しいが、遷移は遅くなる。データ遷移が時間ウィンドウTmstable_ff内で発生する場合には、フリップフロップ3310のマスタラッチ部分が準安定になり、したがって、不正な値および/または遅れた値がこの回路によって出力されることにつながる場合がある。最後に、遷移が、サブウィンドウTincorrect内で発生する場合には、出力は、不正な値を有し、図4の遷移ゲートTG1は、新しい信号値が到着する前に完全に閉じる。サイクルのうちで、図8AのTincorrectの後の、Tcorrectによって示される部分は、その間の遷移がエラーを示さない、タイミングサイクルの残りを表す。図4のデバイスの動作パラメータが、メインフリップフロップ3310への入力信号がTincorrectウィンドウ内より後には絶対に評価されないように配置されることに留意されたい。この配置は、メインフリップフロップへの最も早い入力がTcorrectウィンドウの開始を変更することができるように、メインフリップフロップ3310への入力のホールド時間に対する制約をも課す。
【００５６】
遷移検出器3350は、準安定性ウィンドウをも有し、これは、図8BではTmstable_tdとして示されており、この時間ウィンドウは、時間ウィンドウTsample_tdに先行する。遷移が、時間ウィンドウTmstable_td内で発生する場合には、図4に示されたErr_dynモードが、準安定になり、エラー出力が未知(すなわち、論理1、論理0、またはある中間の値)になることをもたらす場合がある。しかし、Tmstable_tdが図示のようにウィンドウTcorrect内で発生するが、それでもTlate、Tmstable_ff、またはTincorrectとオーバーラップしないように回路を設計することによって、準安定性が遷移検出器3350内で発生する場合に、メインフリップフロップ3310のQ出力が、正しい値と出力タイミングとの両方を有することが既知になる。これは、標準同期化ロジックをエラー信号によって駆動されるロジックの出力に適用することを可能にする。これを図9に示す。
【００５７】
図9に、遷移検出器から導出されるエラー信号のエラー同期化を概略的に示す。図9の配置は、ORゲート3040(図1に示されたものに対応する)と、ORゲート3040の出力が連続して供給される第1フリップフロップ3042および第2フリップフロップ3044とを含む。第1フリップフロップ3042は、特に高速準安定性解決のために設計され、フィードバックループ内の非常に高い利得を有し、これが準安定性の原因である。標準フリップフロップは、通常、フリップフロップ3042より低いフィードバックループ内の利得を有する。というのは、利得とセットアップ時間および面積などのフリップフロップの他のパラメータとの間に設計トレードオフがあるからである。第2フリップフロップ3044は、標準フリップフロップである。図9に示されているように、個々の遷移検出器から導出された複数のエラー信号error 1、error 2、error 3、...error Nが、一緒に論理和をとられて、GlobalError信号を形成する。ORゲート3040に入力される個々のエラー信号のいずれかが、準安定である場合には、これが、出力GlobalError信号の準安定性または非決定的タイミングをももたらす可能性がある。GlobalError信号は、2つのフリップフロップ3042および3044からなる、信号を特定のクロックドメインに同期化する標準配置を通過する。第2フリップフロップ3044の出力は、GlobalError信号の同期化された版である。というのは、第2フリップフロップ3044の出力が、一定の論理値に対応する電圧レベルを有し、決定的タイミングを有するからである。この信号は、図9では、GlobalErrorSyncという符号を付けられている。
【００５８】
GlobalError信号が準安定である状況では、GlobalErrorSync信号は、論理0または論理1のいずれかである可能性がある。GlobalErrorSync信号は、図1のエラー回復ロジック3050によって、動作中エラーが発生したかどうかを判定するのに使用される。遷移検出器3350の準安定性ウィンドウは、完全にTcorrect時間ウィンドウ内にある(図8Aおよび8Bを参照されたい)ので、遷移検出器3350が準安定になる場合に、GlobalErrorSync信号の結果の値は、「ドントケア」状態に対応する。GlobalErrorSync信号が、この事例で論理値1を示す場合には、これは良性ではあるが、エラー回復プロセスが開始される。
【図面の簡単な説明】
【００５９】
【図１】本技法が適用される集積回路の複数の処理ステージの一例を概略的に示す図である。
【図２】エラー回復が推測レジスタバンクと一緒に確認済みレジスタバンクを使用して実行されるパイプラインを概略的に示す図である。
【図３Ａ】エラー回復が単一のレジスタバンクに格納された状態変数を使用して実行されるパイプライン配置を概略的に示す図である。
【図３Ｂ】図3Aの回路が検出されたエラーからどのように回復するかを概略的に示す流れ図である。
【図３Ｃ】動作パラメータ調整プロセスを概略的に示す流れ図である。
【図４】本技法による遷移検出Dフリップフロップを概略的に示す図である。
【図５】図4のメインフリップフロップのセットアップウィンドウ内のデータの遷移の検出がどのように検出されるかを示す機能タイミング図を概略的に示す図である。
【図６】論理レベル1から論理レベル0への遷移の検出が実行される時に図4の回路を通過する信号の機能タイミング図を概略的に示す図である。
【図７】論理レベル0から論理レベル1へのデータ遷移を検出する時の図4の回路内の信号の機能タイミング図を概略的に示す図である。
【図８】図4のメインフリップフロップおよび遷移検出器の準安定性ウィンドウがどのようにオーバーラップしていないかを概略的に示す図である。
【図９】遷移検出器から導出されるエラー信号のエラー同期化を概略的に示す図である。
【符号の説明】
【００６０】
3100    メイン処理パイプライン
3101    信号パス
3103    信号パス
3110    推測レジスタバンク
3111    データパス
3120    安定性パイプラインステージ
3122    クリティカル状態バッファ
3124    確認済み状態バッファ
3130    確認済みレジスタバンク
3142-1    遷移検出器
3142-2    遷移検出器
3142-3    遷移検出器
3142-4    遷移検出器
3150    OR論理ゲート
3160    エラー検出ロジック
3170    パイプラインフラッシュロジック
3180    確認済み状態回復ロジック
3190    プログラムカウンタリセットロジック
SW0    書き込みポート
SW1    書き込みポート
【図１】
2008537438.tif 000003
【図２】
2008537438.tif 000004
【図３Ａ】
2008537438.tif 000005
【図３Ｂ】
2008537438.tif 000006
【図３Ｃ】
2008537438.tif 000007
【図４】
2008537438.tif 000008
【図５】
2008537438.tif 000009
【図６】
2008537438.tif 000010
【図７】
2008537438.tif 000011
【図８】
2008537438.tif 000012
【図９】
2008537438.tif 000013
【手続補正書】
【提出日】平成18年6月22日(2006.6.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理装置用の集積回路であって、デジタルデータ処理を実行するように動作可能であり、
前記集積回路内のデジタル信号値を監視し、所定の時間ウィンドウ内の前記信号値の状態のすべての変化を検出することによって前記信号値の遷移を検出するように動作可能なエラー検出回路であって、前記遷移は、前記集積回路の動作中エラーを示す、エラー検出回路と、
前記データ処理装置の回復可能な状態を格納するように動作可能なストレージユニットであって、前記回復可能な状態は、前記集積回路のプログラマのモデルに対応するアーキテクチャ的状態変数の少なくともサブセットを含む、ストレージユニットと、
前記エラー検出回路に応答し、前記集積回路が前記格納された回復可能な状態を使用して前記動作中エラーから回復することを可能にするように動作可能なエラー回復回路と、
前記集積回路の、1つまたは複数の性能を制御する動作パラメータを制御するように動作可能な動作パラメータコントローラと
を含み、前記動作パラメータコントローラは、動作中エラーの非ゼロレートを維持するために前記エラー検出回路によって検出されるエラーの1つまたは複数の特性に依存して前記1つまたは複数の性能を制御するパラメータのうちの少なくとも1つを動的に制御し、前記エラー回復回路は、前記集積回路によるデータ処理が継続するように前記集積回路が前記動作中エラーから回復することを可能にするように動作可能である
ことを特徴とする集積回路。
【請求項２】
前記回復可能な状態は、マイクロアーキテクチャ的状態変数の少なくともサブセットを含む、請求項1に記載の集積回路。
【請求項３】
前記エラー検出回路は、前記集積回路の関連処理回路要素の出力信号のエラーを検出するように動作可能である、請求項1または２に記載の集積回路。
【請求項４】
前記集積回路は、前記関連処理回路要素のセットアップウィンドウと相互に排他的であるエラー検出回路準安定性ウィンドウを有する、請求項３に記載の集積回路。
【請求項５】
前記集積回路は、めいめいの複数の処理回路要素に関連する複数のエラー検出回路を含む、請求項３または４に記載の集積回路。
【請求項６】
前記集積回路は、複数のパイプラインステージを含む命令パイプラインを有する、請求項３から５のいずれか一項に記載の集積回路。
【請求項７】
前記関連処理回路要素は、前記複数のパイプラインステージの連続するパイプラインステージの間でデータを渡すラッチである、請求項５に記載の集積回路。
【請求項８】
前記エラー検出回路は、前記遷移が前記処理回路要素のセットアップ時間中に発生する時の前記遷移の検出を可能にするために、入力デジタル信号を遅延させるように配置された少なくとも1つの遅延要素を含む、請求項３から７のいずれか一項に記載の集積回路。
【請求項９】
前記エラー検出回路は、0-1遷移検出器および1-0遷移検出器のうちの少なくとも1つを含む、請求項1から８のいずれか一項に記載の集積回路。
【請求項１０】
前記エラー回復回路は、前記集積回路の状態変数としての前記複数のパイプラインステージの出力値のコミットメントの前に、前記出力値の検証を可能にするように動作可能な少なくとも1つの安定性パイプラインステージを含む、請求項３から９のいずれか一項に記載の集積回路。
【請求項１１】
前記集積回路は、異なるパイプラインステージの入力値としての使用のために、前記複数のパイプラインステージの特定のパイプラインステージから前記複数のパイプラインステージの別の異なるパイプラインステージへ前記特定のパイプラインステージによって計算された値を供給するように動作可能なデータ転送回路網を含む、請求項１０に記載の集積回路。
【請求項１２】
前記ストレージユニットは、確認済み状態変数を格納するように動作可能なレジスタバンクであり、前記確認済み状態変数は、前記動作中エラーによって影響されないことを確認済みである、請求項1から１１のいずれか一項に記載の集積回路。
【請求項１３】
前記集積回路は、その値が前記動作中エラーによって影響されないものとして確認済みではない推測状態変数を格納するように動作可能な推測レジスタバンクを含み、前記ストレージユニットは、その値が正しい値として確認済みである確認済み状態変数を格納するように動作可能な確認済みレジスタバンクである、請求項1から１２のいずれか一項に記載の集積回路。
【請求項１４】
前記エラー回復回路は、前記エラー検出回路が動作中エラーを検出する場合に前記確認済みレジスタバンクからの前記確認済み状態変数のうちの対応する確認済み状態変数によって前記推測レジスタバンク内の前記推測状態変数のサブセットを置換するように動作可能である、請求項１３に記載の集積回路。
【請求項１５】
前記動作パラメータコントローラは、前記動作中エラーの検出に続く時間遅れの後に、前記性能を制御するパラメータのうちの1つまたは複数を少なくとも一時的に調整するように動作可能である、請求項1から１４のいずれか一項に記載の集積回路。
【請求項１６】
所与の命令に対応する動作中エラーの反復を検出するように動作可能なデッドロック検出モジュールを含み、前記動作パラメータコントローラは、前記検出された反復に応答して前記性能を制御するパラメータのうちの1つまたは複数を一時的に調整するように動作可能である、請求項１５に記載の集積回路。
【請求項１７】
データ処理を実行する集積回路を制御する方法であって、
前記集積回路内のデジタル信号値を監視し、所定の時間ウィンドウ内の前記信号値の状態のすべての変化を検出することによって前記信号値の遷移を検出するステップであって、前記遷移は、前記集積回路の動作中エラーを示す、ステップと、
データ処理装置の回復可能な状態を格納するステップであって、前記回復可能な状態は、前記集積回路のプログラマのモデルに対応するアーキテクチャ的状態変数の少なくともサブセットを含む、ステップと、
前記集積回路が前記動作中エラーから回復することを可能にするために、前記動作中エラーの前記検出に応答して、前記格納された回復可能な状態を使用するステップと、
前記集積回路の1つまたは複数の性能を制御する動作パラメータを制御するステップと
を含み、制御する前記ステップは、動作中エラーの非ゼロレートを維持するために、監視し検出する前記ステップで検出されたエラーの1つまたは複数の特性に依存して前記1つまたは複数の性能を制御するパラメータのうちの少なくとも1つを動的に制御する段階を含み、前記動作中エラーの前記検出に応答する前記格納された回復可能な状態の使用は、前記集積回路によるデータ処理が継続するように前記集積回路が前記動作中エラーから回復することを可能にする
ことを特徴とする方法。
【国際調査報告】
2008537438.tif 000014
2008537438.tif 000015
2008537438.tif 000016