(57)【要約】集積回路には、各々、処理論理回路（１０１４）、無遅延信号取り込み要素（１０１６）、遅延信号取り込み要素（１０１８）、及び比較器（１０２４）を含む複数の処理段が含まれる。無遅延信号取り込み要素（１０１６）は、無遅延取り込み時間に処理論理回路（１０１４）から出力を取り込む。また、その後の遅延取り込み時間に、遅延信号取り込み要素（１０１８）は、処理論理回路（１０１４）から値を取り込む。誤り検出回路（１０２６）及び誤り修正回路（１０２８）は、遅延値の確率的誤りを検出して修正し、誤りチェック済遅延値を比較器（１０２４）に供給する。比較器（１０２４）は、誤りチェック済遅延値と無遅延値を比較し、それらが等しくない場合、これは、無遅延値の取り込みが早過ぎたこと、また、誤りチェック済遅延値によって置き換えるべきであることを示す。無遅延値は、その取り込みの直後に後続処理段に伝えられ、そして、それに応じて、誤り復旧機構を用いて、クロックの再起動前にクロックをゲート制御し正しい信号値を後続処理論理回路を通過させる等、後続処理段によって、生じた誤処理を抑制する。クロック周波数、動作電圧、本体バイアス電圧、温度等、集積回路の動作パラメータは、全体的性能を高める方法で、有限のゼロでない誤り率を維持するように調整される。
2006520954.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を行うための集積回路において、
複数の処理段であって、少なくとも１つの処理段からの処理段出力信号が、後続処理段に処理段入力信号として供給され、前記少なくとも１つの処理段には、少なくとも１つの符号化入力値に処理動作を行って処理論理回路出力信号を生成するように動作可能な処理論理回路が含まれ、前記符号化入力値は、誤り修正符号が適用された入力値である前記複数の処理段と、
無遅延取り込み時間に前記処理論理回路出力信号の無遅延値を取り込むように動作可能な無遅延信号取り込み要素であって、前記無遅延値は、前記無遅延取り込み時間に続き、前記処理段出力信号として前記後続処理段に供給される前記無遅延信号取り込み要素と、
前記無遅延取り込み時間よりも遅い遅延取り込み時間に前記処理論理回路出力信号の遅延値を取り込むように動作可能な遅延信号取り込み要素と、
前記処理論理回路出力信号の前記遅延値における確率的誤りの発生を検出するように、また、前記検出された確率的誤りが、前記誤り修正符号を用いて修正可能か決定するように、更に、誤りチェック済遅延値を生成するように又は前記検出された確率的誤りが修正不可能であることを示すように動作可能な誤り修正論理回路と、
前記無遅延値を前記誤りチェック済遅延値と比較して、前記無遅延取り込み時間に続く時間に前記処理論理回路出力信号における変化を検出するように動作可能な比較器であって、前記変化は、系統的誤りであって、それによって前記処理論理回路が前記無遅延取り込み時間に前記処理動作を終了しなかった前記系統的誤りを示すか、又は、前記無遅延値の確率的誤りを示す前記比較器と、
前記比較器が前記処理論理回路出力信号の前記変化を検出する時動作可能な誤り修復論理回路であって、後続処理段の前記誤りチェック済遅延値によって前記無遅延値を置き換えることによって、又は、前記検出された確率的誤りが修正可能でないことを前記誤り修正論理回路が示す場合、前記処理動作及び後続処理段の処理動作の反復を始めることによって、誤り修復動作を行い前記無遅延値の使用を抑制するように動作可能な前記誤り修復論理回路と、
が含まれる集積回路。
【請求項２】
請求項１に記載の集積回路であって、
前記誤り修正論理回路は、前記誤り修正論理回路が、前記遅延値に修正可能な確率的誤りを検出した場合、また、前記比較器が、前記無遅延値と前記誤りチェック済遅延値との間に差異がないことを検出した場合、前記無遅延値を前記誤りチェック済遅延値で置き換えることによって、前記無遅延値の使用を抑制するように動作可能である集積回路。
【請求項３】
請求項１及び２に記載の集積回路であって、
前記処理論理回路によって行われる前記処理動作は、前記処理動作に誤りが生じない場合、前記処理論理回路出力信号が、前記処理段入力値に実質的に等しい動作である集積回路。
【請求項４】
請求項３に記載の集積回路であって、
前記少なくとも１つの処理段は、メモリ回路によって実行され、前記処理動作は、読み込み又は書き込み動作である集積回路。
【請求項５】
請求項３に記載の集積回路であって、
少なくとも１つの処理段は、レジスタによって実行され、前記処理動作は、読み込み、書き込み、又は移動動作である集積回路。
【請求項６】
請求項３に記載の集積回路であって、
前記少なくとも１つの処理段が、マルチプレクサによって実行され、前記処理動作は、多重化動作である集積回路。
【請求項７】
上記請求項のいずれか１つに記載の集積回路であって、
前記複数の処理段は、同期パイプライン内のそれぞれのパイプライン段である集積回路。
【請求項８】
請求項３乃至７のいずれか１つに記載の集積回路であって、
前記入力値は、ハミング符号を用いて誤り修正符号化され、また、前記誤り修復論理回路は、前記ハミング符号を用いて、前記修正及び前記検出を行う集積回路。
【請求項９】
上記請求項のいずれか１つに記載の集積回路であって、
前記処理論理回路によって行われる前記処理動作は、前記処理動作に誤りが生じない場合でさえ、前記処理論理回路出力信号が前記処理段入力値と異なり得る値変更動作である集積回路。
【請求項１０】
請求項９に記載の集積回路であって、
前記処理論理回路は、加算器、乗算器、又はシフタの内の１つである集積回路。
【請求項１１】
請求項８に記載の集積回路であって、
前記入力値は、ＡＮ符号、剰余符号、逆剰余符号、又は剰余数符号の内の１つを含む算術符号を用いて、誤り修正符号化される集積回路。
【請求項１２】
上記請求項のいずれか１つに記載の集積回路であって、
前記無遅延値の準安定性を検出するように動作可能な、また、準安定であることが分かった場合、前記誤り修復論理回路にトリガをかけて前記無遅延値の使用を抑制するように動作可能な準安定性検出器が含まれる集積回路。
【請求項１３】
上記請求項のいずれか１つに記載の集積回路であって、
前記比較器が前記変化を検出すると、前記誤り復旧論理回路は、前記処理段出力信号として前記無遅延値を前記誤りチェック済遅延値で置き換えるように動作可能である集積回路。
【請求項１４】
請求項１３に記載の集積回路であって、
前記誤りチェック済遅延値を前記後続処理段に供給すると、処理動作が強制的に先に進む集積回路。
【請求項１５】
上記請求項のいずれか１つに記載の集積回路であって、
前記比較器が前記変化を検出すると、前記誤り復旧論理回路は、前記無遅延値の代わりに、前記誤りチェック済遅延値を前記無遅延信号取り込み要素に強制的に記憶させるように動作可能である集積回路。
【請求項１６】
上記請求項のいずれか１つに記載の集積回路であって、
前記少なくとも１つの処理段及び前記後続処理段内の処理動作が、無遅延クロック信号によって駆動される集積回路。
【請求項１７】
請求項１６に記載の集積回路であって、
前記比較器が前記変化を検出すると、前記誤り復旧論理回路は、前記無遅延クロック信号をゲート制御して、前記後続処理段が前記無遅延値の入力から復旧するのに充分な時間を提供し、そして、その代わり前記誤りチェック済遅延値を用いるように動作可能である集積回路。
【請求項１８】
請求項１６に記載の集積回路であって、
前記無遅延取り込み時間は、前記無遅延クロック信号の所定の位相点から導き出され、前記無遅延クロック信号の位相遅延版は、遅延クロック信号として用いられ、前記遅延取り込み時間は、前記遅延クロック信号の所定の位相点から導き出される集積回路。
【請求項１９】
上記請求項のいずれか１つに記載の集積回路であって、
前記集積回路の１つ又は複数の動作パラメータは、前記変化に対応する前記系統的誤りの検出に依存して制御される集積回路。
【請求項２０】
請求項１９に記載の集積回路であって、
前記１つ又は複数の動作パラメータは、ゼロでない系統的誤り率が維持されるレベルを有するように制御される集積回路。
【請求項２１】
請求項１９及び２０に記載の集積回路であって、前記１つ又は複数の動作パラメータには、
動作電圧、
動作周波数、
集積回路本体バイアス電圧、
温度
の内の少なくとも１つが含まれる集積回路。
【請求項２２】
上記請求項のいずれか１つに記載の集積回路であって、
前記処理動作にかかる最小処理時間は、前記誤りチェック済遅延値が、異なる入力値に行われる処理動作によって影響されないように、前記無遅延取り込み時間から前記遅延取り込み時間を分離する時間より長い集積回路。
【請求項２３】
請求項２２に記載の集積回路であって、
前記処理論理回路は、前記最小処理時間を越えることを保証する１つ又は複数の遅延要素を含む集積回路。
【請求項２４】
上記請求項のいずれか１つに記載の集積回路であって、
前記処理動作にかかる最大処理時間は、前記処理論理回路が前記遅延取り込み時間までに前記処理動作を終えているように、前記無遅延取り込み時間から前記遅延取り込み時間を分離する時間と無遅延取り込み時間の間の時間との合計より短い集積回路。
【請求項２５】
上記請求項のいずれか１つに記載の集積回路であって、前記処理段は、データプロセッサの一部である集積回路。
【請求項２６】
上記請求項のいずれか１つに記載の集積回路であって、
前記変化に対応する誤り検出の計数値を記憶するように動作可能な誤りカウンタ回路が含まれる集積回路。
【請求項２７】
請求項２６に記載の集積回路であって、
前記計数値は、ソフトウェアで読み取り得る集積回路。
【請求項２８】
データ処理を行うための集積回路を制御する方法であって、
複数の処理段の内の少なくとも１つの処理段から処理段出力信号を後続処理段へ処理段入力信号として供給する段階であって、前記少なくとも１つの処理段は、処理論理回路による処理動作を少なくとも１つの符号化された入力値に行い、処理論理回路出力信号を生成するように動作し、前記符号化された入力値は、誤り修正符号が適用された入力値である前記供給する段階と、
無遅延取り込み時間に前記処理論理回路出力信号の無遅延値を取り込む段階であって、前記無遅延値は、前記無遅延取り込み時間に続く前記処理段出力信号として前記後続処理段に供給される前記取り込み段階と、
前記無遅延取り込み時間よりも遅い遅延取り込み時間に前記処理論理回路出力信号の遅延値を取り込む段階と、
誤り修正論理回路を用いて、前記処理論理回路出力信号の前記遅延値における確率的誤りの発生を検出して、前記検出された確率的誤りが前記誤り修正符号を用いて修正可能かどうか決定し、また、誤りチェック済遅延値を生成するか又は前記検出された確率的誤りが修正可能でないことを示す段階と、
前記無遅延値を前記誤りチェック済遅延値と比較する段階であって、前記無遅延取り込み時間に続く時間に前記処理論理回路出力信号の変化を検出し、前記変化は、系統的誤りによって、前記処理論理回路が、前記無遅延取り込み時間に前記処理動作を終了していない系統的誤りを示すか又は前記無遅延値の確率的誤りを示す前記比較する段階と、
前記変化が検出されると、誤り修復論理回路を用いて誤り修復動作を行い、後続処理段の前記誤りチェック済遅延値で前記無遅延値を置き換えることによって、又は、前記検出された確率的誤りが修正可能でないことを前記誤り修正論理回路が示す場合、前記処理動作及び後続処理段の処理動作の反復を始めることによって、前記無遅延値の使用を抑制する段階と、
が含まれる方法。
【請求項２９】
請求項２８に記載の方法であって、
前記誤り修正論理回路は、前記誤り修正論理回路が、前記遅延値に修正可能な確率的誤りを検出した場合、また、前記比較器が、前記無遅延値と前記誤りチェック済遅延値との間に差異がないことを検出した場合、前記無遅延値を前記誤りチェック済遅延値で置き換えることによって、前記無遅延値の使用を抑制するように動作可能である方法。
【請求項３０】
上記請求項のいずれか１つに記載の方法であって、
前記処理論理回路によって行われる前記処理動作は、前記処理動作に誤りが生じない場合、前記処理論理回路出力信号が、前記処理段入力値に実質的に等しい動作である方法。
【請求項３１】
請求項３０に記載の方法であって、
前記少なくとも１つの処理段は、メモリ回路によって実行され、前記処理動作は、読み込み又は書き込み動作である方法。
【請求項３２】
請求項３０に記載の方法であって、
少なくとも１つの処理段が、レジスタによって実行され、前記処理動作は、読み込み、書き込み、又は移動動作である方法。
【請求項３３】
請求項３０に記載の方法であって、
前記少なくとも１つの処理段は、マルチプレクサによって実行され、前記処理動作は、多重化動作である方法。
【請求項３４】
上記請求項のいずれか１つに記載の方法であって、
前記複数の処理段は、同期パイプライン内のそれぞれのパイプライン段である方法。
【請求項３５】
請求項３０乃至３４のいずれか１つに記載の方法であって、
前記入力値は、ハミング符号を用いて誤り修正符号化され、また、前記誤り修復論理回路は、前記ハミング符号を用いて、前記修正及び前記検出を行う方法。
【請求項３６】
上記請求項のいずれか１つに記載の方法であって、
前記処理論理回路によって行われる前記処理動作は、前記処理動作に誤りが生じない場合でさえ、前記処理論理回路出力信号が前記処理段入力値と異なり得る値変更動作である方法。
【請求項３７】
請求項３６に記載の方法であって、
前記処理論理回路は、加算器、乗算器、又はシフタの内の１つである方法。
【請求項３８】
請求項３６に記載の方法であって、
前記入力値は、ＡＮ符号、剰余符号、逆剰余符号、又は剰余数符号の内の１つを含む算術符号を用いて、誤り修正符号化される方法。
【請求項３９】
上記請求項のいずれか１つに記載の方法であって、
前記無遅延値の準安定性の検出と、準安定であることが分かった場合、前記誤り修復論理回路にトリガをかけて前記無遅延値の使用を抑制する段階と、が含まれる方法。
【請求項４０】
請求項２８乃至３９のいずれか１つに記載の方法であって、
前記比較器が前記変化を検出すると、前記誤り復旧論理回路は、前記処理段出力信号として前記無遅延値を前記誤りチェック済遅延値で置き換えるように動作可能である方法。
【請求項４１】
請求項２８乃至４０のいずれか１つに記載の方法であって、
前記誤りチェック済遅延値を前記後続処理段に供給すると、処理動作が強制的に先に進む方法。
【請求項４２】
請求項２８乃至４１のいずれか１つに記載の方法であって、
前記比較器が前記変化を検出すると、前記誤り復旧論理回路は、前記無遅延値の代わりに、前記誤りチェック済遅延値を前記無遅延信号取り込み要素に強制的に記憶させるように動作可能である方法。
【請求項４３】
請求項２８乃至４２のいずれか１つに記載の方法であって、
前記少なくとも１つの処理段及び前記後続処理段内の処理動作が、無遅延クロック信号によって駆動される方法。
【請求項４４】
請求項４３に記載の方法であって、
前記比較器が前記変化を検出すると、前記誤り復旧論理回路は、前記無遅延クロック信号をゲート制御して、前記後続処理段が前記無遅延値の入力から復旧するのに充分な時間を提供し、そして、その代わり前記誤りチェック済遅延値を用いるように動作可能である方法。
【請求項４５】
請求項４３及び４４に記載の方法であって、
前記無遅延取り込み時間は、前記無遅延クロック信号の所定の位相点から導き出され、前記無遅延クロック信号の位相遅延版は、遅延クロック信号として用いられ、前記遅延取り込み時間は、前記遅延クロック信号の所定の位相点から導き出される方法。
【請求項４６】
請求項２８乃至４５のいずれか１つに記載の方法であって、
前記集積回路の１つ又は複数の動作パラメータは、前記変化に対応する前記系統的誤りの検出に依存して制御される方法。
【請求項４７】
請求項４６に記載の方法であって、
前記１つ又は複数の動作パラメータは、ゼロでない系統的誤り率が維持されるレベルを有するように制御される方法。
【請求項４８】
請求項４６及び４７に記載の方法であって、前記１つ又は複数の動作パラメータには、
動作電圧、
動作周波数、
集積回路本体バイアス電圧、
温度
の内の少なくとも１つが含まれる方法。
【請求項４９】
請求項２８乃至４８のいずれか１つに記載の方法であって、
前記処理動作にかかる最小処理時間は、前記誤りチェック済遅延値が、異なる入力値に行われる処理動作によって影響されないように、前記無遅延取り込み時間から前記遅延取り込み時間を分離する時間より長い方法。
【請求項５０】
請求項４９に記載の方法であって、
前記処理論理回路は、前記最小処理時間を越えることを保証する１つ又は複数の遅延要素を含む方法。
【請求項５１】
請求項２８乃至５０のいずれか１つに記載の方法であって、
前記処理動作にかかる最大処理時間は、前記処理論理回路が前記遅延取り込み時間までに前記処理動作を終えているように、前記無遅延取り込み時間から前記遅延取り込み時間を分離する時間と無遅延取り込み時間の間の時間との合計より短い方法。
【請求項５２】
請求項２８乃至５１のいずれか１つに記載の方法であって、前記処理段は、データプロセッサの一部である方法。
【請求項５３】
請求項２８乃至５２のいずれか１つに記載の方法であって、
前記変化に対応する誤り検出の計数値を記憶するように動作可能な誤りカウンタ回路が含まれる方法。
【請求項５４】
請求項５３に記載の方法であって、
前記計数値は、ソフトウェアで読み取り得る方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の分野に関する。特に、本発明は、確率的誤りと系統的誤りとの双方を含む誤りの検出並びに集積回路の処理段におけるこのような誤りの復旧に関する。
【背景技術】
【０００２】
周知のように、一連の直列接続の処理段（例えば、パイプライン回路）から形成されていると見なし得る集積回路が提供されている。各段間には、ラッチ又はセンス増幅器等、１つ又は複数の信号値が記憶される信号取り込み要素がある。各処理段の処理論理回路は、前の処理段又は任意の処理段から受信された入力値に応答して、関連する出力ラッチに記憶される出力信号値を生成する。処理論理回路がその処理動作の完了に要する時間は、集積回路が動作し得る速さを決定する。全段の処理論理回路が、短時間にその処理動作を完了し得る場合、信号値は、出力ラッチを迅速に進み、その結果、高速処理が可能になる。システムは、最も遅い処理論理回路が、入力信号を受信して適切な出力信号を生成するというその処理動作を行い得るよりも速く段間で信号を送ることはできない。これによってシステムの最高性能が制限される。
【０００３】
ある状況下では、できるだけ速くデータを処理することが望まれ、従って、処理段は、最も遅い処理段が追い付けなくなるまで、できるだけ速い速さでそれらの処理動作を進めるように駆動される。他の状況下では、集積回路の消費電力が、処理速度より重要であり、また、最も遅い処理段がもう追い付けないほど消費電力が減少するように、集積回路の動作電圧が低減される。最も遅い処理段が追い付けないこれら双方の状況は、処理誤り（例えば、系統的誤り）を引き起こす。
【０００４】
処理誤りの発生を回避する１つの方法は、異なる集積回路間の最悪の製造ばらつき、動作環境条件、処理される信号のデータ依存性等を考慮した許容範囲により許容し得る最小値よりも小さいことが分かっている周波数を有する処理クロックで集積回路を駆動することである。電圧レベルについては、全処理段が、最悪の製造ばらつき、環境条件、データ依存性等を考慮して、確実に追い付けるように、最小電圧レベルを充分に超える電圧レベルで集積回路を動作するのが普通である。従来の解決策は、最悪の状況を考慮して、最大動作周波数及び最小動作電圧を制限するのに慎重であることが分かる。
【０００５】
プロセッサが、周波数が高過ぎる又は動作電圧が低過ぎる状態で動作する場合、追い付き得る最も遅い処理段から生じる系統的な処理誤りの他に、集積回路は、シングルイベントアップセット（ＳＥＵ）として知られる確率的誤りも受ける。ＳＥＵは、宇宙線又はデバイスの陽子等、イオン化粒子によって誘発される確率的誤り（ビットフリップ）である。状態の変化は、過渡的すなわちパルス状であり、このため、デバイスのリセット又は書換えによって、その後、通常動作になる。誤り修正符号を用いて確率的誤りを検出し修正することが知られている。しかしながら、このような誤り修正手法は、誤り検出及び修正に要する処理時間の結果、必然的に遅延が生じる。この処理遅延は、雑音が多い通信チャネル等の環境では当然であり、この場合、誤り率は高いが、処理済受信データの誤りを所定の誤り率の範囲内に抑制することが重要である。対照的に、一般的にできるだけ速くデータを処理することが望ましい集積回路の場合、誤り修正回路が招く遅延及び付随する性能へのマイナスの影響によりデータ処理動作のクリティカルパスの誤り修正を導入することは望ましくない。
【発明の開示】
【課題を解決するための手段】
【０００６】
１つの側面から見ると、本発明は、データ処理を行うための集積回路を提供し、前記集積回路には、
複数の処理段であって、少なくとも１つの処理段からの処理段出力信号が、後続処理段に処理段入力信号として供給され、前記少なくとも１つの処理段には、少なくとも１つの符号化入力値に処理動作を行って処理論理回路出力信号を生成するように動作可能な処理論理回路が含まれ、前記符号化入力値は、誤り修正符号が適用された入力値である前記複数の処理段と、
無遅延取り込み時間に前記処理論理回路出力信号の無遅延値を取り込むように動作可能な無遅延信号取り込み要素であって、前記無遅延値は、前記無遅延取り込み時間に続き、前記処理段出力信号として前記後続処理段に供給される前記無遅延信号取り込み要素と、
前記無遅延取り込み時間よりも遅い遅延取り込み時間に前記処理論理回路出力信号の遅延値を取り込むように動作可能な遅延信号取り込み要素と、
前記処理論理回路出力信号の前記遅延値における確率的誤りの発生を検出するように、また、前記検出された確率的誤りが、前記誤り修正符号を用いて修正可能か決定するように、更に、誤りチェック済遅延値を生成するように又は前記検出された確率的誤りが修正不可能であることを示すように動作可能な誤り修正論理回路と、
前記無遅延値を前記誤りチェック済遅延値と比較して、前記無遅延取り込み時間に続く時間に前記処理論理回路出力信号における変化を検出するように動作可能な比較器であって、前記変化は、系統的誤りであって、それによって前記処理論理回路が前記無遅延取り込み時間に前記処理動作を終了しなかった前記系統的誤りを示すか、又は、前記無遅延値の確率的誤りを示す前記比較器と、
前記比較器が前記処理論理回路出力信号の前記変化を検出する時動作可能な誤り修復論理回路であって、後続処理段の前記誤りチェック済遅延値によって前記無遅延値を置き換えることによって、又は、前記検出された確率的誤りが修正可能でないことを前記誤り修正論理回路が示す場合、前記処理動作及び後続処理段の処理動作の反復を始めることによって、誤り修復動作を行い前記無遅延値の使用を抑制するように動作可能な前記誤り修復論理回路と、が含まれる。
【０００７】
本手法は、処理段自体の動作を直接監視して、それらが機能しなくなる限界条件を求め得ると認識している。実際に機能不良が生じた場合、これらの機能不良は、全体的に誤動作が生じないように修正し得る。本解決策における機能不良点の直接的観測と比較して、従来の解決策の過度に慎重な性能限界マージンを避けることによって達成される利点は、機能不良が生じた時システムを復旧する際の追加時間や消費電力を補って余りある。クリティカルパスがそれらのタイミング要件を満たせないように、このような処理誤りを故意に生じさせることは、この技術分野では、極めて反直観的であり、この場合、全てのクリティカルパスが常にそれらのタイミング要件を確実に満たすには、相当な労力を通常要する。
【０００８】
更に、本発明は、遅延値の確率的誤りが、データ処理動作のクリティカルパスから離して配置された誤り修正論理回路によって検出し修正し得ると認識する。従って、系統的処理誤りが比較器によって検出されない場合、誤り修正論理回路は、速い計算の進行に悪影響を与えない。しかしながら、処理誤りが実際には比較器によって検出される場合、確実に計算を進めるために誤り修復論理回路によって利用可能な遅延値は、確率的誤りチェックをする上で信頼できる値であり、適宜、確率的誤り修正が行われている。遅延信号値の経路に誤り修正論理回路があるのにもかかわらず、処理誤りが比較器によって検出される場合、誤り修復動作を行う必要があるため、処理に遅延が生じる。従って、故意に誘発された系統的処理誤りの修復を可能にする遅延信号取り込み要素を備えることと、遅延信号値の確率的誤りを修正するために誤り修正符号化を適用することとの間には、驚くべき相乗効果がある。誤り修正論理回路は、計算の進行を大幅に遅延させることなく、確率的誤りを検出し修正することによって遅延値の信頼性を改善する利点を提供する。
【０００９】
処理論理回路によって行われる処理動作が、例えば、処理動作が、重要なオペランドによる乗算演算又は除算演算である場合、出力信号の値に対して変化する入力信号の値になる重要な処理動作であり得ると認識する。しかしながら、１つの好適な構成によれば、処理論理回路によって行われる処理動作は、前記処理動作に誤りが生じない場合、処理論理回路出力信号が、処理段入力値に実質的に等しい動作である。
【００１０】
例えば、第１の好適な構成によれば、通常、入力値が変化しないデータ処理動作は、メモリ回路によって行われる読み込み又は書き込み動作であり得る。他の好適な構成によれば、少なくとも１つの処理段が、レジスタによって実行され、また、前記処理動作は、読み込み、書き込み、又は移動動作である。出力信号値が入力信号値に等しい更なる他の好適な構成によれば、少なくとも１つの処理段が、マルチプレクサによって実行され、また、処理動作は、多重化動作である。
【００１１】
本手法が、同期及び非同期データ処理回路の双方に適用可能な場合、本発明は、複数の処理段が、同期パイプライン内のそれぞれのパイプライン段である同期データ処理回路に適合する。
【００１２】
様々な異なる誤り修正符合を用いて、入力値、例えば、線形ブロック符号、畳み込み符号、又はターボ符号を誤り修正符号化し得ることを認識されたい。しかしながら、出力値が、処理論理回路の入力値に実質的に等しい構成の場合、入力値が、ハミング符号を用いて誤り修正符号化され、また、誤り修復論理回路が、前記ハミング符号を用いて、前記修正及び前記検出を行うことが好ましい。ハミング符号は、容易に実現でき、また、通常ＳＥＵ等から生じる単一ビット誤りを検出し修正するのに適している。
【００１３】
幾つかの好適な構成は、読み込み／書き込み動作及びデータ移動動作等、値保存処理動作を含むが、他の好適な構成では、処理論理回路によって行われる処理動作は、前記処理動作に誤りが生じない場合でさえ、処理論理回路出力信号が前記処理段入力値と異なり得る値変更動作である。従って、本手法は、加算器、乗算器、及びシフタ等、処理論理回路要素への応用に適している。
【００１４】
処理動作が値変更処理動作である構成では、ＡＮ符号、剰余符号、逆剰余符号、又は剰余数符号の内の１つを含む算術符号を用いて、入力値が符号化される誤り修正であることが好ましい。このような算術符号は、算術演算子を含む処理動作の確率的誤りの検出及び修正を容易にする。
【００１５】
認識されたいことは、比較器だけに依拠して系統的誤りの存在を検出し得ることである。しかしながら、好適な構成では、集積回路は、無遅延値の準安定性を検出するように動作可能な、また、準安定であることが分かった場合、誤り修復論理回路にトリガをかけて無遅延値の使用を抑制するように動作可能な準安定性検出器を含む。
【００１６】
比較器を介して系統的誤りの発生を検出すると、これを修正又は補償し得る様々な異なる方法がある。１つの好適な種類の実施形態では、誤り復旧論理回路は、処理段出力信号として無遅延値を誤りチェック済遅延値で置き換えるように動作可能である。誤りチェック済遅延値サンプルから得られた修正値による既知の不完全な処理段出力信号の置き換えは、非常に好適であるが、これは、たとえ誤りが生じて補償が必要であっても、そのことが、データ処理動作を確実に進める役割を果たすためである。
【００１７】
好適な構成は、誤り修復論理回路が、無遅延値の代わりに、遅延値を無遅延ラッチに強制的に記憶させるように動作するものである。
【００１８】
本手法が、同期及び非同期データ処理回路の双方に適用可能な場合、本発明は、処理段内の処理動作が無遅延クロック信号によって駆動される同期データ処理回路に適合する。
【００１９】
処理段が無遅延クロック信号によって駆動されるシステムについては、誤り修復論理回路は、このことを利用して、無遅延クロック信号をゲート制御することによって誤りからの復旧を容易にし、後続処理段が、誤った無遅延値の入力から復旧し、そして、その代わり正しい誤りチェック済遅延値を用いるのに充分な時間を提供し得る。
【００２０】
無遅延クロック信号を用いる実施形態については、取り込み時間は、無遅延クロック信号及び無遅延クロック信号から導き出された遅延クロック信号の所定の位相点から導き出し得る。無遅延取り込みと遅延取り込みとの間の遅延は、これらの２つのクロック信号間の位相シフトによって定義し得る。
【００２１】
系統的誤りの検出及び復旧は、様々な異なる状況において用い得るが、このような誤りの検出に依存して、集積回路の動作パラメータの動的な制御が望まれる状況に特に適している。反直観的には、本手法を用いて動作パラメータを制御し、ゼロでない系統的誤り率を目標率として維持した状態でシステムが動作し得るが、これは、このことが、速さ又は消費電力のいずれかの観点で、更に、系統的及び確率的誤りの双方の発生から復旧するのに必要な対策も考慮して、全体的な性能の改善に対応し得るためである。
【００２２】
変化し得る動作パラメータには、特に、動作電圧、動作周波数、（閾値レベルを制御する）集積回路本体バイアス電圧、及び温度が含まれる。
【００２３】
遅延ラッチに取り込まれるデータが常に正確であることを保証するために、任意の段の処理論理回路における最大遅延の上限は、非動作点で、任意段の処理論理回路の遅延が、クロック期間プラス遅延取り込みが遅延される量の合計を超え得るものである。任意の処理遅延における下限として、短経路に沿って伝達される次のデータが遅延取り込み値を不適切に破損しないことを保証するように、任意の段の処理論理回路は、遅延取り込みが無遅延取り込みに続く時間をその時間だけ越える処理時間を有すべきであるという要件がある。このことは、必要に応じて、１つ又は複数の遅延要素を短経路に埋め込むことによって保証し得る。
【００２４】
本手法は、一般的なデジタル処理回路等、幅広い様々な異なる種類の集積回路に適用可能であるが、特に、処理段が、データプロセッサ又はマイクロプロセッサの一部であるシステムに適している。
【００２５】
動作パラメータを制御するための制御アルゴリズムの使用を容易にするために、好適な実施形態には、無遅延値と比較される遅延値の変化に対応する誤り検出の計数値を記憶するように動作可能な誤りカウンタ回路が含まれる。この誤りカウンタは、ソフトウェアでアクセスして、動作パラメータの制御を実行し得る。
【００２６】
上述した遅延信号取り込み要素及び無遅延信号取り込み要素は、幅広い様々な異なる形態を有し得ることを認識されたい。特に、これらは、フリップフロップ、Ｄタイプラッチ、順次素子、メモリセル、レジスタ要素、センスアンプ、それらの組合せ、及び信号値を記憶し得る幅広い様々な他の記憶デバイスの形態での実施形態を含むと考え得る。
【００２７】
他の側面から見ると、本発明は、データ処理を行うための集積回路を制御する方法を提供し、前記方法には、
複数の処理段の内の少なくとも１つの処理段から処理段出力信号を後続処理段へ処理段入力信号として供給する段階であって、前記少なくとも１つの処理段は、処理論理回路による処理動作を少なくとも１つの符号化された入力値に行い、処理論理回路出力信号を生成するように動作し、前記符号化された入力値は、誤り修正符号が適用された入力値である前記供給する段階と、
無遅延取り込み時間に前記処理論理回路出力信号の無遅延値を取り込む段階であって、前記無遅延値は、前記無遅延取り込み時間に続く前記処理段出力信号として前記後続処理段に供給される前記取り込み段階と、
前記無遅延取り込み時間よりも遅い遅延取り込み時間に前記処理論理回路出力信号の遅延値を取り込む段階と、
誤り修正論理回路を用いて、前記処理論理回路出力信号の前記遅延値における確率的誤りの発生を検出して、前記検出された確率的誤りが前記誤り修正符号を用いて修正可能かどうか決定し、また、誤りチェック済遅延値を生成するか又は前記検出された確率的誤りが修正可能でないことを示す段階と、
前記無遅延値を前記誤りチェック済遅延値と比較する段階であって、前記無遅延取り込み時間に続く時間に前記処理論理回路出力信号の変化を検出し、前記変化は、系統的誤りによって、前記処理論理回路が、前記無遅延取り込み時間に前記処理動作を終了していない系統的誤りを示すか又は前記無遅延値の確率的誤りを示す前記比較する段階と、
前記変化が検出されると、誤り修復論理回路を用いて誤り修復動作を行い、後続処理段の前記誤りチェック済遅延値で前記無遅延値を置き換えることによって、又は、前記検出された確率的誤りが修正可能でないことを前記誤り修正論理回路が示す場合、前記処理動作及び後続処理段の処理動作の反復を始めることによって、前記無遅延値の使用を抑制する段階と、
が含まれる。
【発明を実施するための最良の形態】
【００２８】
本発明の実施形態について、一例としてのみ、添付図面を参照して説明する。
【００２９】
図１は、集積回路の一部を示し、集積回路は、イギリス、ケンブリッジのＡＲＭ社製ＡＲＭプロセッサコア等、プロセッサコア内の同期パイプラインの一部であり得る。同期パイプラインは、複数の同様な処理段から形成される。第１段は、比較器６及び遅延ラッチ８と共にフリップフロップの形態で無遅延ラッチ４が続く処理論理回路２を含む。本明細書に用いる用語ラッチは、トリガ、クロック、及び他の要件に拘らず単一の値を記憶するように動作可能な任意の回路要素を含む。後続処理段は、同様に形成される。無遅延クロック信号１０は、全ての処理段中の処理論理回路及び無遅延ラッチ４を駆動し同期パイプラインの一部として同期して動作させる。遅延クロック信号１２は、それぞれの処理段の遅延ラッチ８に供給される。遅延クロック信号１２は、無遅延クロック信号１０の位相シフト版である。位相シフト度は、無遅延ラッチ４による処理論理回路２の出力の取り込みと、遅延ラッチ８によって行われる後の時間での処理論理回路２の出力の取り込みとの間の遅延期間を制御する。処理論理回路２が、既存の無遅延クロック信号周波数、集積回路に供給される動作電圧、基板バイアス電圧、温度等が与えられ限界内で動作する場合、処理論理回路２は、無遅延ラッチ４がその値を取り込むためにトリガがかけられる時までに、その処理動作を終了する。この結果、遅延ラッチ８が処理論理回路２の出力を遅れて取り込む場合、これは、無遅延ラッチ４内に取り込まれた値と同じ値を有する。従って、比較器６は、遅延期間中に生じる変化がないことを検出し、誤り復旧動作には、トリガがかけられない。逆に、無遅延ラッチ４がその値を取り込む時までに処理論理回路２がその処理動作を完了しない集積回路の動作パラメータである場合、遅延ラッチ８は、異なる値を取り込み、これが比較器６によって検出されることによって、誤り復旧動作が強制的に行われる。誤り復旧動作は、その取り込みに続く期間中に後続処理段に供給されていた無遅延ラッチ４の出力を、遅延ラッチ８内に記憶された遅延値と置き換え得ることが分かる。この遅延値は、更に、無遅延ラッチ４内に強制的に記憶され、そこに記憶された以前誤って取り込まれた値を置き換え得る。
【００３０】
準安定検出器７は、無遅延ラッチ４の出力の準安定性（即ち、明確に定義された論理回路状態にないこと）を検出する役割を果たす。このような準安定性が検出された場合、これは誤りと見なされ、遅延ラッチ６の値が代わりに用いられる。
【００３１】
誤りを検出すると、パイプライン全体が、追加の遅延期間、無遅延クロック信号１０をゲート制御することによってストールし、後続処理段の処理論理回路が、それに供給される修正された入力信号値に適切に応答するのに充分な時間を与え得る。他の選択肢として、上流の処理段は、対向流アーキテクチャを用いる標準パイプライン処理手法に基づき、後続処理段がパイプラインへのバブル挿入動作を継続可能な状態でストールし得る（図２のバブル及びフラッシュラッチ参照）。他の選択肢は、処理パイプライン全体をリセットし、再開された各段及び処理の無遅延ラッチに遅延ラッチ値を強制的に入れ得ることである。試行した再計算よりもむしろ誤った値の代わりに遅延ラッチ値を再使用すると、たとえ誤りが生じたとしても処理動作が確実に進む。
【００３２】
処理段内の処理論理回路が要する処理時間と、無遅延取り込み時間と遅延取り込み時間との間の時間と、の間の関係に関する制約がある。特に、取り込まれる遅延値が、新しいデータが短い遅延処理段から出力されることによって確実に破壊されないように、任意の処理段の最低処理時間は、遅延より小さくあってはならない。追加の遅延要素を短い遅延処理段に埋め込んで、それらが確実にこの最小処理時間を下回らないようにする必要があり得る。他の極端な場合、任意の動作パラメータに対する任意の動作点で生じ得る処理段内の処理論理回路の最大処理遅延が、通常の無遅延動作クロック期間の合計以下であり、また、遅延値ラッチに取り込まれる遅延値が確実に安定し正しいように、遅延値以下であることを保証する必要がある。
【００３３】
システムを制御して消費電力及び動作を調整し得る数多くの他の選択的な方法がある。１つの構成によれば、比較器６による等しくない検出の数をカウントするために誤りカウンタ回路（図示せず）を設ける。この検出され復旧された誤りの計数値は、ハードウェア実装又はソフトウェア実装のアルゴリズムのいずれかを用いて、動作パラメータを制御するために用い得る。カウンタは、ソフトウェアによって読み込み可能である。最適な総合性能は、最大速度又は最低消費電力の観点に拘らず、ゼロでないレベルの誤りを維持するパラメータで集積回路を故意に動作することによって達成し得る。このような環境での不用意な動作パラメータの動作による利益は、誤りから復旧する必要性がもたらす代償を上回る。
【００３４】
他の選択的な構成によれば、ハードウェアカウンタが、動作監視モジュールとして設けられ、有用な作業及び誤り復旧作業を追跡するように動作可能である。特に、カウンタは、実行される処理動作を進めるために用いられる有用な命令の数をカウントし、また、誤り復旧を行うために実行される命令及びバブルの数をカウントする。ソフトウェアは、ハードウェアカウンタを読み取るように動作可能なであり、また、計数値を用いて、誤り復旧のオーバーヘッドと、ゼロでない誤り率で集積回路を動作することによって達成される消費電力の低減に対するシステム動作へのその影響と、のバランスを適切に取るように動作可能である。
【００３５】
図２は、本手法に用いる回路を概略的に示す回路ブロック図である。図２の上部は、各処理段に設けられた回路要素、即ち、無遅延ラッチ４、遅延ラッチ８、及び比較器６を示す。準安定検出器７は、無遅延ラッチ４の出力の準安定性を検出する役割を果たし、また、これによって誤り信号の生成にトリガがかかる。このような複数段からの誤り信号は、ＯＲゲート１００のそれぞれの入力部に供給され、ここで、誤りが任意のプロセッサ段で検出される場合、大域誤り信号が生成される。図示したように、大域誤り信号は、フラッシュ及びバブル挿入信号にトリガをかけるために用い得る。回路１０２は、誤り信号自体が準安定であるかどうか検出する。誤り信号は、より高い電圧の基準となる正歪ラッチ及びより低い電圧の基準となる負歪ラッチでラッチされる。これら２つがそれらのラッチされた値に一致しない場合、このことは、誤り信号が準安定であったこと、また、パニック信号がプルされることを示す。誤り信号をラッチすることによって、また、それがサンプリングされる前に全クロックサイクルの間、待機すること（即ち、２つの連続ラッチ）によって、パニック信号が準安定になる確率は、無視できる。パニック信号がプルされる場合、遅延ラッチからの復元値が、誤り信号の準安定性により破壊し得ることは重要である。この場合、命令も無効になり、先に進まない。従って、パイプラインをそろえて、命令を再起動しクロック周波数を下げて、誤り信号が同じ命令の再試行時準安定でないことを保証する（そうでない場合、再試行の無限ループを引き起こし得る）。
【００３６】
図３は、無遅延ラッチ、遅延ラッチ、比較器、及び誤り復旧回路の少なくとも一部を詳細に示した回路である。無遅延ラッチ４は、２つのラッチ１４，１６によって提供されるフリップフロップの形態であることが分かる。遅延ラッチ８は、単一フィードバック要素の形態である。ＸＯＲゲート１８は、比較器としての役割を果たす。誤り信号２０は、図３の回路から発生し、前述したように誤りカウンタ回路に、又は他の動作パラメータ調整回路もしくはシステムに供給し得る。誤り信号２０は、遅延ラッチ８内に記憶された遅延値を強制的に無遅延ラッチ４のラッチ１４内に記憶させるマルチプレクサ２２を切り換える役割を果たす。準安定検出回路２４は、無遅延ラッチ４内の準安定性の発生を検出する役割を果たし、また、これを用いて誤り信号にトリガをかけると、この誤り信号によって、誤準安定値が遅延ラッチ８内に記憶された遅延値で置き換えられる。
【００３７】
図４Ａ及び４Ｂは、図１、２、及び３の回路の動作を概略的に示すフロー図である。
【００３８】
ステップ２６では、段ｉの処理論理回路は、時間Ｔｉでその出力信号を生成する。ステップ２８では、これが、無遅延ラッチによって取り込まれ、無遅延値を形成する。ステップ３０では、この値に基づき処理を始める後続処理段ｉ＋１に無遅延ラッチからの無遅延値が伝わり始める。この処理が、誤っていることがあり、誤りが検出された場合、復旧する必要がある。
【００３９】
ステップ３２によって、処理論理回路は、更なる期間、遅延時間の間、処理を続け、時間Ｔｉ＋ｄで出力信号を生成する。この出力信号は、ステップ３４で遅延ラッチにラッチされる。遅延ラッチ及び無遅延ラッチ内の値は、ステップ３６で比較される。それらが等しい場合、誤りは発生せず、ステップ３７で通常の処理が続く。それらが等しくない場合、このことは、無遅延ラッチがその値を取り込んで、その値を後続処理段ｉ＋１に供給し始めた時、処理論理回路が、その処理動作を時間Ｔｉで完了していなかったことを示す。従って、誤り状態が生じ、修正が必要になる。ステップ３８で、この修正は、段ｉに続くパイプライン段中にパイプラインバブルを送ることによって始まる。ステップ４０で、段ｉ＋１の前の段は、全てストールする。これには、誤りが生じた段ｉを含む。ステップ４２で、段ｉ＋１は、その入力として遅延ラッチ値を用いてその動作を再実行する。ステップ４４で、集積回路の動作パラメータは、必要に応じて修正し得る。例えば、一例として、動作周波数が低くなり、動作電圧が大きくなり、本体バイアス電圧が大きくなる。そして、処理は、ステップ４６に続く。
【００４０】
不充分な数の誤りが検出された場合、回路及びアルゴリズムを制御する動作パラメータは、消費電力を低減したりゼロでない誤り率を起こしたりするように、動作パラメータを故意に調整し得る。
【００４１】
図５は、アレイ状のメモリセル１０２を含むメモリ１００を示す。この例では、１つの列のメモリセルだけを示すが、当業者には既知なように、このようなメモリセルアレイは、通常、数千個のメモリセルを含む大規模な二次元アレイである。通常のメモリ動作に基づき、復号器１０４は、アクセスされるメモリアドレスを受信する役割と、ワード線１０６の１つを起動するようにこのメモリアドレスを復号化する役割を果たす。ワード線は、その線のメモリセル１０２をそれぞれのビット線対１０８に接続する役割を果たす。関連するメモリセル１０２内に記憶されたビット値に依存して、このことによって、それに現在接続されたビット線１０８の電気的変化（例えば、電圧及び／又は電流の流れ）が誘発され、その変化は、センス増幅器１１０が感知する。センス増幅器１１０の出力は、最初、無遅延ラッチ１１２内に記憶され、その後、遅延された時間に、遅延ラッチ１１４内に記憶される。無遅延ラッチ１１２内に記憶された無遅延値は、マルチプレクサ１１６を介して後続の処理回路１１８に直接伝えられ、その後、遅延値は、遅延ラッチ１１４に記憶される。遅延値が遅延ラッチ１１４内に取り込まれている場合、比較器１２０は、無遅延値と遅延値を比較する役割を果たす。これらが等しくない場合、遅延値は、マルチプレクサ１１６によって切り換えられ、関連する特定のビットに対するメモリ１００からの出力値となる。抑制信号も比較器１２０から後続の処理回路１１８に発せられ、現時点で置き換えられた誤無遅延値に基づき、その後続の処理回路１１８によって処理を抑制する。この例におけるこの抑制は、後続の処理回路１１８に供給されるクロック信号ＣＬＫを制御する形態を取って、関連するクロックサイクルを延ばし、また、遅延値が、関連する処理回路を伝わって、その後続の処理回路の出力のラッチに達する機会を有する時まで、その後続の処理回路によって新しい結果のラッチを遅らせる。
【００４２】
センス増幅器１１０及び無遅延ラッチ１１２は、高速読み込み機構の一部を形成することが分かる。センス増幅器１１０及び遅延ラッチ１１４は、低速読み込み機構の一部を形成する。ほとんどの場合、無遅延ラッチ１１２内にラッチされる高速読み込み結果は、正しく、修正動作は、必要ない。稀に、高速読み込み結果は、遅延ラッチ１１４内にラッチされる低速読み込み結果とは異なり、この環境では、低速読み込み結果は、正しいと見なされ、抑制されている高速読み込み結果に基づく処理で高速読み込み結果を置き換える役割を果たす。誤った高速読み込み結果を修正する比較的稀な必要性に関連する代償は、その限界条件近くでメモリ１００を動作することによって達成される（速さ、低電圧動作、低消費エネルギー及び／又は他の動作パラメータの観点での）性能向上によって補償されるものを超える。
【００４３】
図６は、図５の回路の一部における変形例を示す。この変形例では、２つのセンス増幅器１１０’、１１０’’を設ける。これらの異なるセンス増幅器１１０’、１１０’’は、異なる動作速度を有するように形成され、一方の１１０’は、比較的速くて信頼性が低く、他方の１１０’’は、比較的遅くて信頼性が高い。これらの異なる特性は、センス増幅器１１０’、１１０’’のパラメータ、例えば、トランジスタ寸法、ドーピングレベル、利得等の構造パラメータを変えることによって達成し得る。比較器１２０’は、２つの出力を比較する役割を果たす。高速センス増幅器１１０’からの出力は、通常、利用可能な低速センス増幅器１１０’’の出力より前にマルチプレクサ１１６’を介して送出される。低速センス増幅器１１０’’の出力が利用可能であり、また、これが高速センス増幅器１１０’の出力に等しくないことを比較器１２０が検出する場合、マルチプレクサ１１６’を制御して出力値を切り換えて、低速センス増幅器１１０’’によって生成されたものになる。また比較器１２０は、抑制信号の生成にトリガをかけて、誤った高速読み込み結果に基づく下流処理を抑制する。
【００４４】
図７は、図５の回路の動作を示すフロー図である。ステップ１２２で、アドレスが復号化され、それぞれのメモリセルは、ワード線によって伝えられる信号を用いて、それらの隣接ビット線に接続される。ステップ１２４で、選択されたメモリセル内に記憶されたビット値及びそれらの補数は、ビット線対上に送られる。これによって、ビット線内に電流が生じ、ビット線に電圧変化が生じる。センス増幅器１１０は、検出された電流及び／又は電圧レベル変化に反応する。
【００４５】
ステップ１２６で、高速データ読み込み機構は、その時、メモリセルから出力されている値をサンプリングする。ステップ１２８で、この高速読み込みデータ値は、それが正しいという仮定の下に、後続の処理回路に伝えられ、更に処理される。ステップ１３０で、低速データ読み込み機構は、低速読み込みデータ値をサンプリングする。ステップ１３２は、高速読み込み値と低速読み込み値を比較する。これらが同じ場合、通常の処理が、ステップ１３４で続く。しかしながら、サンプリングされた値が異なる場合、ステップ１３６は、高速読み込み値が伝えられた後続の回路に抑制信号を発する役割を果たし、また、修正処理が行われるように、これらの後続の回路に高速読み込み値の代わりに低速読み込み値を発する役割も果たす。
【００４６】
図８は、パイプラインバス１４０内における本手法の使用法を示す。パイプラインバス１４０は、バスに沿って伝えられるデータ値を記憶する役割を果たす多数のラッチ１４２を含む。このようなパイプラインバス１４０の一例として、イギリス、ケンブリッジのＡＲＭ社の設計によるＡＸＩバスが知られている。この構成では、パイプラインバス１４０に沿って伝えられるデータ値の行き先は、デジタル信号処理回路１４４である。このデジタル信号処理（ＤＳＰ）回路１４４は、それ自体、前述した無遅延ラッチ処理及び遅延ラッチ処理手法を実装していない。他の選択的な構成では、パイプラインバスに沿って伝えられるデータ値の行き先は、ＤＳＰ回路以外のデバイス、例えば、それ自体遅延及び無遅延ラッチ手法を実装していない標準ＡＲＭプロセッサ核であってよい。
【００４７】
各無遅延ラッチ１４２に関係するのは、それぞれの遅延ラッチ１４６である。これらの遅延ラッチ１４６は、それらが対応する無遅延ラッチ１４２によってサンプリングされラッチされた時よりも遅い時間にバス上の信号値をサンプリングする役割を果たす。従って、バスに沿って伝えられるデータ値の遅延によって、理由が何であれ（例えば、使用動作電圧が低過ぎる、クロック速度が大き過ぎる、隣接データ値からの結合の影響等）、無遅延ラッチ１４２及び遅延ラッチ１４６内に記憶される値の間に差が生じる可能性がある。パイプラインバス１４０上の最終段は、無遅延値と遅延値を比較する比較器１４７を含むように示す。これらが等しくない場合、遅延値を用いて無遅延値を置き換え、また、無遅延値に基づく処理が抑制され、修正が効果を表す（バスクロックサイクルを延長し得る）。これらの比較器及び多重化回路要素は、パイプラインバス１４０に沿って、各ラッチ段に設けるが、図８を分かり易くするために省略したことを認識されたい。
【００４８】
ＤＳＰ回路１４４は、それ自体、その関連する修正の可能性で無遅延及び遅延ラッチ機構を支持しないため、ＤＳＰ回路１４４に供給されるデータ値が、任意の必要な修正を受けていることが重要である。この理由により、追加のバッファリングラッチ段１４８が、パイプラインバス１４０の端部に設けられ、そのラッチ及び付加されたＤＳＰ回路１４４に供給されるデータ値に必要なあらゆる修正を行った後、そのデータ値がＤＳＰ回路１４４の作用を受けることができる。バッファリングラッチ１４８は、ＤＳＰ回路１４４に充分近くに配置し得るため、利用可能な伝達時間が不充分である等の問題は全くなく、バッファリングラッチ１４８からＤＳＰ回路１４４に伝えられるデータ値に誤りを生じることはない。
【００４９】
それぞれの無遅延ラッチ１４２間のバス接続は、単にデータをそのまま伝える処理論理回路の形態であると見なし得ることを認識されたい。このように、図８のパイプラインバス実施形態と前述した実施形態（例えば、図１）との間の同等性は、当業者には明らかであろう。
【００５０】
図９は、図８の動作を示すフロー図である。段階１５０で、無遅延信号がバスラインから取り込まれる。次に段階１５２で、無遅延値は、次のバスパイプライン段に伝えられる。段階１５４で、対応する遅延ラッチ１４６は、遅延バス信号を取り込む。段階１５６で、比較器１４７は、遅延値を無遅延値と比較する。これらが等しい場合、通常の処理が段階１５８で続く。２つの比較値が等しくない場合、段階１６０は、バスクロックを遅延し、また、図８に示したマルチプレクサを用いて、無遅延値を遅延値と置き換える役割を果たす。
【００５１】
図１０は、本手法を用いる更なる実施形態例を示す。この実施形態例では、プロセッサ核内の命令レジスタからの命令は、命令ラッチ１６２内にラッチされる。命令は、この命令ラッチ１６２からマイクロ符号化ＲＯＭを含む復号器１６４に伝えられ、適切な集まりのプロセッサ制御信号を生成する役割を果たす。プロセッサ制御信号は、無遅延制御信号ラッチ１６６に記憶され、また、命令ラッチ１６２内にラッチされる命令に基づきプロセッサ核が行う処理を制御するために引き続き用いられる。また復号器１６４から出力される制御信号は、それらが無遅延制御信号ラッチ１６６内にラッチされた後、遅延制御信号ラッチ１６８内にラッチされる。そして、遅延制御信号値及び無遅延制御信号値を比較し得る。これらが等しくない場合、このことは、修正動作が必要であることを示す。抑制動作は、このような差異の検出によってトリガがかけられ、また、不適切なラッチ制御信号値に基づく後続の処理を中止する役割を果たす。ある状況下では、唯一の効果的な復旧選択肢が、全体的なプロセッサのリセットであることがある。これが許容可能のこともある。他の状況下では、制御信号の誤りは、さほど厳しくない抑制や復旧機構が可能であるようなものであり得る。一例として、特定の誤制御信号が、例えば、多重サイクルプログラム命令の場合、作用を受けていないことがあり、この場合、処理動作の中には、多重サイクル命令の全体的な実行において遅くまで開始しないものがある。この例は、乗算部が幾つかのクロックサイクルを要した後、最終的な累算が行われる積和演算である。累算に関連する制御信号に誤りがあり、また、実際、累算が必要でなく、単に乗算だけである場合、加算器が累算演算をしようとする前に、累算器に印加される制御信号を修正することによって累算を抑制することが可能である。
【００５２】
図１１は、図１０の回路動作の一例を示す。ステップ１７０で、積和制御信号は、復号器１６４（マイクロ符号化ＲＯＭ）から読み込まれる。ステップ１７２で、この積和制御信号は、無遅延制御信号ラッチ１６６内にラッチされ、プロセッサ核内の様々な処理要素に出力される。ステップ１７４で、乗算オペランドが、レジスタファイルから読み込まれ、乗算演算が始まる。ステップ１７６で、命令復号器１６４が出力した制御信号が、遅延制御信号ラッチ１６８によって再サンプリングされる。ステップ１７８で、無遅延制御信号と遅延制御信号を比較する。これらが等しい場合、通常の処理がステップ１８０で続く。しかしながら、これらが等しくない場合、処理は、ステップ１８２に進み、ここで、乗算演算が既に完了したかどうか決定する。乗算演算が完了している場合、誤った累算演算が開始することになり、復旧のための最良の選択は、ステップ１８４で、システムを全体的にリセットすることである。しかしながら、乗算動作が依然として進行中の場合、命令ラッチ１６２内に記憶されたプログラム命令によって元々意図されたように、ステップ１８６を用いて加算器をリセットし、累算演算を取り消して、所望の乗算演算出力結果をステップ１８８で生成し得る。
【００５３】
図１２は、図１に示した回路の変形例を示す。この実施形態では、遅延ラッチ１９０は、スタンバイ／スリープ動作モード（低消費電力モード）中に用いるデータ保持（バルーン）ラッチの追加機能を提供する。通常処理動作中の遅延ラッチ１９０の機能は、前述した通りである。しかしながら、スリープ制御装置１９２は、低消費電力動作モードに入り始めるように機能する場合、無遅延クロック及び遅延クロックを停止し、遅延ラッチ１９０が、それらそれぞれの無遅延ラッチに対応するデータ値を全て記憶しつつある状態になる。この時点で、無遅延ラッチ及び関連する処理回路への電圧供給が取り除かれ、それらは、停止して、それらの状態を失う。しかしながら、無遅延ラッチ１９０に供給される電圧は、それらが、関連する処理回路の状態を保持する役割を果たすように維持される。システムが、低消費電力モードから抜け出る場合、処理論理回路及び無遅延ラッチは、再度起動され、比較器は、無遅延ラッチ及び遅延ラッチ１９０の値の差異を検出すると、関連する遅延ラッチ１９０内に保持された正しい値で無遅延ラッチ内の誤値を置き換えるトリガをかける。遅延ラッチ１９０は、それらの無遅延相当物よりも厳しいタイミング要件を受けないため、動作速度は遅くなるが低消費電力モード中の低消費電力に適する（例えば、閾値電圧が高いとスイッチングが遅くなるが、漏れ電流が減少する）ことを認識されたい。このように、通常処理中に用いられる誤り修正遅延ラッチは、データ保持ラッチとして低消費電力モード中に再使用することによって、関連する回路の全ゲート数を低減する利点を提供し得る。
【００５４】
図１３は、図１２の回路動作を概略的に示すフロー図である。ステップ１９４で、集積回路は、その通常動作処理モードにある。ステップ１９６で、処理論理回路段は、無遅延時間に出力信号を生成する。ステップ１９８で、無遅延ラッチは、その出力信号を取り込む。ステップ２００で、無遅延ラッチ内の無遅延信号は、次の処理段に伝えられる。ステップ２０２で、遅延された時間に、処理段からの出力が生成され、遅延ラッチによる取り込みに利用可能である。ステップ２０４で、集積回路は、トリガをかけられ低消費電力を採用し、速度制御装置１９２は、遅延ラッチ１９０への電力を維持しつつ、処理回路の停止を始める役割を果たす。ステップ２０６で、遅延ラッチ１９０は、遅延信号値を取り込む。ステップ２０６での遅延ラッチによる遅延信号値の取り込みが、ステップ２０４で低電力モードへの切り換え前に起こってもよい。ステップ２０８で、無遅延ラッチは、停止され、その記憶された値が失われる。集積回路は、長時間この状態に留まり得る。望ましい場合、ステップ２１０は、スリープ制御装置１９２にトリガをかけて低消費電力モードを終了し、動作モードに戻る。ステップ２１２で、電力が無遅延ラッチ及び関連する処理論理回路に対して復旧され、遅延ラッチ１９０内の遅延データ値を用いてパイプライン段を必要に応じて再配置し、システムを低消費電力モードに入る前のその状態に復旧する。
【００５５】
図１４は、誤り修正制御及び遅延ラッチが適用されている複数の処理段を概略的に示す。処理段は、プロセッサ核内の同期パイプラインの一部、通信バスの一部、又はメモリシステムの一部であり得る集積回路の一部を形成する。第１処理段には、データ通信用チャネル又は処理論理回路１０１４のいずれかと、無遅延ラッチ１０１６と、遅延ラッチ１０１８と、遅延ラッチ及び無遅延ラッチの出力を比較し、制御信号をマルチプレクサ１０２０に出力し、遅延信号値又は無遅延信号値が後続処理段又はチャネル１０１６へ入力として供給されるかどうか決定する比較器１０２４と、が含まれる。チャネル／論理回路１０１４及び無遅延ラッチ１０１６は、無遅延クロック信号によって駆動され、一方、遅延ラッチ１０１９は、無遅延クロック信号の位相シフト版である遅延クロック信号によって駆動される。
【００５６】
比較器１０２４が、無遅延信号値と遅延信号値との間の差異を検出する場合、このことは、要素１０１４が処理論理回路を表す場合、いずれかの処理動作が、無遅延取り込み時間に終了していなかったか、又は、要素１０１４がデータチャネルを表す場合、前のパイプライン段からの信号が、現在の段にまだ達していなかったことを示す。このような差異が実際に検出された場合、遅延ラッチ１０１８に記憶された値は、より信頼できるデータ値の方であるが、このことは、処理動作が完了した可能性がより高い場合、あるいは、前の段からのデータがデータチャネルを介して到達した可能性がより高い場合、それが後で取り込まれたためである。遅延ラッチからの結果を次の処理段１０３０に供給することによって、また、後続処理段での無遅延値の使用を抑制することによって、計算は確実に前に進み得る。しかしながら、遅延ラッチ１０１８に記憶された遅延信号値の信頼性は、シングルイベントアップセットが遅延値に生じた場合又は遅延値を破壊した場合、損なわれることがある。シングルイベントアップセットは、実効的にパルスであるため、無遅延ラッチが見逃すが遅延ラッチが拾い上げることが良くある。このようなシングルイベントアップセットによって、比較器は、シングルイベントアップセットの直接の結果として遅延値と無遅延値との間の差異を検出し、そして、後続処理段に破壊された遅延値を伝える。無遅延値を破壊するシングルイベントアップセットは、それが、結果的に、誤無遅延値の使用を抑制し、また、後続の段に遅延値を伝えるため、問題ではない。
【００５７】
図１４の構成は、誤り検出モジュール１０２６と、誤り修正モジュール１０２８と、誤り検出モジュール１０２６によって制御され、遅延ラッチから比較器１０２４に遅延値を直接供給したり、あるいは、他の選択肢として、誤り修正モジュール１０２８によって出力される誤り修正値を供給したりするマルチプレクサ１０２２とを設けて、データの完全性のクロスチェックを行うことによって、破壊された遅延値が計算を通り抜ける可能性を低減する。チャネル／論理回路ユニット１０１４の上流では、８ビットのデータペイロードが、誤り修正符号化され、４つの冗長ビットがデータペイロードに付加され１２ビット信号を形成する。１２ビット信号は、チャネル／論理回路ユニット１０１４を介して伝わり、その値は、無遅延ラッチ１０１６及び遅延ラッチ１０１８の双方によって取り込まれる。しかしながら、遅延ラッチ１０１８から出た信号の遅延値は、誤り検出モジュール１０２６へ入力としても供給され、誤り検出モジュール１０２６は、遅延値に影響を及ぼす何らかの誤りが生じたかどうか１２ビット誤り修正符号化信号から決定する。他の選択的な構成では、更にラッチを提供して誤り検出モジュール１０１８に信号値を供給し得るが、誤り検出モジュール１０１８は、遅延ラッチ１０１８よりも僅かに遅れて信号値を取り込む。誤りチェックは、遅延値が取り込まれるのと同時に、又は、僅かに遅れて取り込まれる値に対して行い、無遅延値の取り込みと遅延値の取り込みとの間に生じたあらゆる確率的誤りを確実に検出しなければならない。
【００５８】
所定の誤り修正符号は、所定数の誤りを検出でき、また、所定数の誤りを修正できる。従って、誤り検出モジュール１０２６が、何らかの誤りが生じているかどうか検出し、そうである場合、誤りの数は、それら全てが修正可能な程充分少ない。修正可能な誤りが検出された場合、信号値は、誤り修正モジュール１０２８に供給され、ここで、誤りは、誤り修正符号を用いて修正され、また、修正済遅延値は、比較器１０２４に供給される。修正済遅延値が無遅延値と異なることが比較器１０２４によって決定された場合、無遅延値の更なる伝達が、後続処理段において抑制されるように、また、演算が、代わりに修正済遅延値を用いて行われるように誤り復旧手順が呼び出される。他方、比較器１０２４が、修正済遅延値が遅延値と同じであると判断した場合、計算を進めるための２つの選択的な可能性がある。まず、同様に、誤り復旧機構を呼び出して、無遅延値を後続処理段で抑制し、修正済遅延値で置き換え得る。他の選択肢として、無遅延値が、（無遅延値と修正済遅延値の等価性によって立証したように）修正されていると判断されるため、誤り復旧機構を（遅延値の誤り検出にかかわらず）抑制することで、無遅延値が後続処理段を進み続け得る。しかしながら、修正不可能な誤りが、誤り検出モジュール１０２６によって遅延値に検出される場合、制御信号を供給して、破壊された遅延値の使用を抑制する。この場合、計算は前に進めない。適用される誤り修正符号化の種類は、チャネル／処理論理回路１０１４の性質により異なる。
【００５９】
処理論理回路は、値通過又は値変更のいずれかに分類し得る。値通過処理論理回路の例は、メモリ、レジスタ、及びマルチプレクサである。値変更処理論理回路要素の例は、加算器、乗算器、及びシフタである。値変更処理論理回路要素の場合の誤り検出及び修正は、値通過処理論理回路要素の場合より複雑である。これは、誤りが生じていない場合でさえ、論理回路段１０１４が出力する値は、入力１２ビット信号１０１３と異なる可能性があるからである。
【００６０】
図１５は、誤りが生じない場合、単に入力から出力までデータ値をそのまま伝えるチャネルを通過するデータの誤り修正を概略的に示す図である。このような値通過処理論理回路の場合、誤り修正及び検出用のハミング符号等の線形ブロック符号を用いると便利である。線形ブロック符号は、通常、符号語の形成を含むが、この場合、元のデータペイロードビットは、符号語にそのまま残るが、幾つかのパリティビット（又は冗長ビット）が付加される。ハミング符号は、単純な単一ビット誤り修正符号であり、（Ｎ、Ｋ）符号の場合、Ｎは、符号語のビット総数であり、Ｋは、符号化されるデータビット数である。誤りの存在と位置は、多数のパリティチェックを出力符号語に行うことによって検出される。ハミング符号は、Ｎ−Ｋパリティビットを含み、それらは、各々、データの異なる組合せのビットから計算される。ハミング符号は、１つの誤りを修正したり、あるいは、２つの誤りを検出したりできる。必要なパリティビット（又は冗長ビット）の数は、ｐがパリティビット数、Ｎ＝Ｋ＋ｐの場合、ハミング規則Ｋ＋ｐ＋１≦２ｐによって与えられる。
【００６１】
図１５に示したように、チャネルへの入力は、８個のデータビットと４個のパリティ即ち冗長ビットを含む１２ビット符号語である。パリティチェックは、誤り検出／修正モジュール１１１６がチャネル１１１４からの出力に対して行う。１２ビット符号語のいずれかの単一ビット誤りは、誤り検出／修正モジュール１１１６による符号語の出力よりも前に検出され修正される。検出された誤りが修正不可能である場合、誤り検出／修正モジュール１１１６は、信号を出力して、そうであることを示す。簡単ではあるが、ハミング符号等の符号について、値通過処理論理回路に用いるために図１１に関して説明したが、畳込み符号等の他の誤り修正符号を他の選択肢として用い得ることを認識されたい。
【００６２】
図１６は、加算器、乗算器、又はシフタ等の値変更論理回路要素に対してどのように誤り修正が行われるかを概略的に示す図である。値変更処理論理回路の場合、ＡＮ符号、剰余符号、逆剰余符号、又は剰余数符号等の算術符号を用いて、処理論理回路の出力の確率的誤りを検出し修正し得る。
【００６３】
算術符号は、算術演算子をチェックするために用い得る。ここで、［×］は、チェックされる演算子を表し、次の関係を満足しなければならない。
符号（Ｘ［×］Ｙ）＝符号Ｘ［×］符号Ｙ
【００６４】
ＡＮ符号は、データ語への定数係数の乗算を含む算術符号であり、例えば、３Ｎ符号を用いて、次の比較を行うことによって加算演算の正当性をチェックし得る。
３Ｎ（Ｘ）＋３Ｎ（Ｙ）？＝３Ｎ（Ｘ＋Ｙ）
３Ｘ＋３Ｙ？＝３（Ｘ＋Ｙ）
【００６５】
算術符号の種類の更なる例は、剰余符号であり、ここで、剰余（定数で割った余り）は、チェックビットとしてデータビットに付加され、例えば、３Ｒ符号は、モジュロ（ＭＯＤ）３演算を含み、以下のチェックが、適用される。
ＸＭＯＤ３+ＹＭＯＤ３＝（Ｘ＋Ｙ）ＭＯＤ３
【００６６】
Ｘ＝１４及びＹ＝７の数値例を考えると、
１４ＭＯＤ３＝２（符号語１１１０１０、最後の２ビットは剰余）、
７ＭＯＤ３＝１（符号語０１１１０１）、
Ｘ＋Ｙ＝２１（１０１０１）
及び、２１ＭＯＤ３＝０、
剰余ＭＯＤ３の合計＝（２＋１）ＭＯＤ３＝０＝（Ｘ＋Ｙ）の剰余
【００６７】
図１６は、図１０のチャネル／論理回路ユニット１０１４の加算演算をチェックするための７Ｒ算術符号の使用法を概略的に示す。チェックされる加算演算は、Ｘ＋Ｙであり、ここで、Ｘ及びＹは、８ビットデータ語である。各データ語は、それぞれ値ＸＭＯＤ７及びＹＭＯＤ７を有する４チェックビットである。ＸＭＯＤ７及びＹＭＯＤ７は、第１加算器１２１０にオペランドとして供給され、この加算器の出力は、値（ＸＭＯＤ７＋ＹＭＯＤ７）ＭＯＤ７を求めてその結果を比較器１２５０に第１入力として供給する論理回路に供給される。第２加算器１２３０は、加算（Ｘ＋Ｙ）を行い、その結果を論理回路ユニット１２４０に供給する。論理回路ユニット１２４０は、（Ｘ＋Ｙ）ＭＯＤ７を計算し、その結果を比較器１２５０に第２入力として供給する。比較器が、２つの入力値の間の何らかの差異を検出する場合、誤りが生じている。
【００６８】
図１７は、遅延ラッチ値の誤り修正制御が含まれる図１４の回路における動作を概略的に示すフローチャートである。段階１３１０で、１２ビット誤り修正符号化信号値が、チャネル／論理回路ユニット１０１４に入力される。次に、段階１３２０で、無遅延ラッチ１０１６は、時間Ｔｉでチャネル／論理回路ユニット１０１４からの出力を取り込み、取り込まれた値は、段階１３３０で、後続の処理論理回路段Ｉ＋１に転送される。段階１３４０で、遅延ラッチ１０１８は、時間Ｔｉ＋ｄで出力信号を取り込む。段階１３５０で、誤り検出論理回路は、時間Ｔｉ＋（ｄ＋δ）で、チャネル／論理回路ユニット１０１４から出力を取り込む。δの好適な構成では、δがゼロであり、遅延値自体によって出力される値が実際に誤りチェックされるが、他の選択肢として、出力は、遅延ラッチがＴｉ＋ｄで出力信号を取り込んだ少し後に取り込み得る。誤り検出回路に供給するための値の取り込みは、遅延値のあらゆる確率的誤りを確実に検出するように適切にタイミングが図られる。段階１３６０で、誤り検出モジュール１０２６は、冗長ビットを用いて、遅延出力信号に誤りがあるかどうか決定する。誤りが検出された場合、誤りが段階１３７０で修正可能かどうか決定するが、このことは、いくつのビットが影響を受けたかに依存する。例えば、ハミング符号は、単一ビット誤りしか修正できない。誤りが修正可能であると段階１３７０で決定された場合、処理は、段階１３９０に進み、そこで、誤りが修正され、修正済遅延値が、マルチプレクサ１０２２で選択され、比較器１０２４に供給される。しかしながら、検出された誤りが修正不可能であると段階１３７０で判断された場合、制御信号が生成されて、修正不可能誤りが生じたことを示す。この場合、信頼できる計算を進めることができない。段階１３９２で、比較器１０２４は、誤りチェック済遅延値が、無遅延値に等しいかどうか判断し、そうである場合、計算が進み続ける。そうでない場合、処理は、図４Ｂに関して説明した、無遅延値の抑制を含む一連のステップに進み、後続処理段の遅延値による置き換えが実行される。
【００６９】
図１８は、処理段間の相対的なタイミングを動的に調整するための本手法の使用法を示す。パイプライン処理環境では、処理段が、それぞれの動作を完了するためにかかる時間は異なり得ることが知られている。理想的には、処理段は全て、同じ時間がかかるように、また、それらそれぞれの時間が、周辺状態が変化するにつれて同じ様に変化するようにバランスが取られる。しかしながら、このことは、実用的でないことが多く、また、１つの動作電圧又は温度でバランスが取られた処理段の集合は、他の動作電圧又は温度ではバランスが取れないことがある。更に、製造のばらつき及び他の特性によって、処理段のタイミング間にかなりの差が生じ、このことで、それらの間の設計バランスが台無しになる。これらの場合、クロック周波数及び他の動作パラメータは、処理段が全ての条件下で動作するのに充分な程密接にバランスが取れるように、最悪のシナリオに対して選択される。
【００７０】
本手法によって、より選択的で実に動的な方法を取り入れることが可能になる。パイプライン処理回路２０００は、無遅延ラッチが取り込む信号値の誤り発生の検出に用い得る遅延ラッチ２００２を含む。これら誤りの発生は、主経路内のそれぞれのラッチ、即ち、無遅延ラッチに供給されるクロック信号の相対位相を調整する役割を果たすクロック位相制御回路２０４にフィードバックされる。このように、調整がなされることによって、時間が、１つの処理段から効果的に流用され、また、他の処理段に割り当てられる。このことは、基本クロック信号が伝達される遅延線内の選択可能な位置から、それぞれの無遅延ラッチが用いるクロック信号を引き出すことによって達成し得る。
【００７１】
示した例、ラッチＬＡとラッチＬＢとの間の処理論理回路は、後続段の処理論理回路よりも動作が遅い。従って、無遅延ラッチＬＢに供給されるクロック信号は、（立ち上がり端のラッチ取り込みを仮定して）そのクロック信号の立ち上がり端を遅らせ、これによって、遅い処理論理回路の利用可能な時間を延ばすように位相シフトし得る。これがラッチＬＢを除く他の段要素と同じ基本クロック信号で動作すると仮定すると、このことによって、後続処理段内の処理論理回路の利用可能な時間が減少する。
【００７２】
処理段間のこのタイミングバランスは、遅延ラッチを用いて検出される動作の誤りからのフィードバックを用いて、回路の進行中の動作時、動的に行うことができる。他の選択肢として、均衡化は、製造試験段階時、又は、集積回路の“最高起動（Golden_boot）”時、一回限りの動作として行い得る。図１８に示した遅延ラッチは、処理段間のタイミング均衡化の目的で用いられ、また、その後、例えば、図１に関して上述したように動作パラメータの制御や誤り修正に用い得る。このように、遅延ラッチの装備は、更に、相対的なクロックタイミングの制御にも用いられる。
【００７３】
図１９は、グローバルクロックゲート制御に基づくパイプライン誤り復旧に対する簡単な取り組み方法を示す。いずれかの段が誤りを検出する場合、パイプライン全体が、１サイクルの間、次のグローバルクロック端をゲート制御することによってストールされる。追加のクロック期間によって、各段は、入力として遅延ラッチを用いてその結果を再計算し得る。その結果、前に転送されたあらゆる誤値は、遅延ラッチからの正しい値で置き換えられる。全ての段が、遅延ラッチ入力でそれらの結果を再評価するため、任意の数の誤りが、一回のサイクルで許容され、前に進むことが保証される。全ての段が、各サイクルで誤りを生成する場合、パイプラインは、通常の速さの半分で動作し続ける。
【００７４】
誤パイプライン結果は、比較器によって検証される前に、アーキテクチャ化された状態に書き込まれないことが重要である。遅延値の検証は、追加的な２つのサイクル（即ち、１つは誤り検出、１つはパニック検出）を要するため、最終遅延ラッチとライトバック（ＷＢ）段との間に２つの非推論段がなければならない。我々の設計では、データキャッシュへのメモリアクセスは、非推論的であり、従って、安定化用のＳＴと称する１つの追加段だけが、ライトバック（ＷＢ）の前に必要である。ＳＴ段は、追加的なレベルのレジスタバイパスを導入する。記憶命令は、非推論的に実行しなければならないため、パイプラインのＷＢ段で行われる。
【００７５】
図１９は、パイプラインのＥＸ段で機能不良になる命令に対するパイプライン復旧のパイプラインタイミング図を示す。最初の機能不良段の計算は、４番目のサイクルに生じているが、ＭＥＭ段が、ＥＸ段から送られた誤値を用いて誤った結果を計算した後でのみ生じている。誤りが検出された後、グローバルクロックストールが、６番目のサイクルで生じ、レザー・シャドウ（Razor_shadow）ラッチの正しいＥＸ結果が、ＭＥＭ段によって評価される。７番目のサイクルでは、パイプラインの通常動作が再開する。
【００７６】
積極的にクロック制御される設計では、プロセッササイクルタイムに大きく影響を与えることなくグローバルクロックゲート制御を実現することは可能でないことがある。この結果、対向流パイプライン化手法に基づく完全にパイプライン化された誤り復旧機構が、実現されている。図２０に示した方法は、パイプライン復旧を数サイクル延ばすという代価を払って、無視し得るタイミング制約を基線パイプライン設計に課す。無遅延値誤りが検出される場合、２つの特定の対策を講じなければならない。まず、機能不良無遅延ラッチに続く誤った段計算を、無効にしなければならない。この対策は、バブル信号を用いて達成されるが、これは、パイプラインスロットが空であることを次の及びそれ以降の段に示す。次に、フラッシュ列が、機能不良段の段ＩＤをアサートすることによってトリガがかけられる。次のサイクルで、遅延ラッチデータからの正しい値が、パイプラインに再度入力され、誤った命令は、その正しい入力で継続し得る。更に、対向流パイプラインがあることによって、フラッシュ列が、命令の反対方向に機能不良段のＩＤを伝達し始める。有効なフラッシュ列が訪れる各段では、対応するパイプライン段及び直前の段が、バブルで置き換えられる。（主パイプラインの２倍の相対速度を考慮して、２つの段を無効にしければならない。）フラッシュＩＤが、パイプラインの出発点に到達した場合、フラッシュ制御論理回路は、誤った命令に続く命令でパイプラインを再起動する。複数の段が、同じサイクルで誤りに遭遇する場合、全て復旧を始めるが、ライトバック（ＷＢ）に最も近い無遅延誤りだけが完了する。以前復旧したものは、後のものによってフラッシュされる。対向流パイプラインは、前進パイプラインと同じ長さになり得ず、例えば、対向流パイプラインのフラッシュ列は、２パイプライン段深さであり、前進パイプラインは、１２段深さであり得ることを留意されたい。
【００７７】
図２０は、ＥＸ段で機能不良になる命令に対するパイプライン復旧のパイプラインタイミング図を示す。重要な例と同様に、最初の機能不良段の計算が、４番目のサイクルで生じ、その場合、次の命令が、パイプラインのＥＸ段で誤った結果を計算する。この誤りが、５番目のサイクルで検出され、バブルがＭＥＭ段から伝達され、また、フラッシュ列が始まる。ＥＸ、ＩＤ、及びＩＦ段の命令は、それぞれ６番目、７番目、及び８番目のサイクルでフラッシュされる。最後に、パイプラインは、サイクル９の誤った命令の後再起動され、その後、通常のパイプライン動作が再開する。
【００７８】
上述した図２の説明から、回路１０２が誤り信号の準安定性を検出した場合、パニック信号がアサートされることを思い起こされたい。この場合、（次の命令よりむしろ）現在の命令が、再実行されるべきである。このようなパニック信号がアサートされる場合、全てのパイプライン状態が、フラッシュされ、また、パイプラインは、最少の命令書き戻しの後直ちに再起動される。パニック状況によって、前に確実に進めることが複雑になるが、これは、その状況を検出する際の遅延により、正しい結果を遅延ラッチに重ね書きできるためである。従って、パニックに遭遇した後、電源電圧が、既知の安全な動作レベルにリセットされ、パイプラインが再起動される。一旦再調整されると、誤った命令は、この命令の完了後まで復帰が禁止される限り、誤りなく完了する。
【００７９】
パイプライン復旧制御の主要件は、それが最悪の動作条件（例えば、低電圧、高温、及び大きい処理変動）下でさえも機能不良にならないことである。この要件は、最悪な場合の臨界値以下の電圧で誤り復旧回路のタイミングを検証する保守的な設計方法によって満たされる。
【００８０】
図２１は、逐次走査連鎖ラッチとしての遅延ラッチ２１００の再使用法を概略的に示す。これは、必要に応じて、逐次走査データ値を遅延ラッチに書き込んだり、遅延ラッチから連続的に読み込んだりさせる走査イネーブル信号によって制御されるマルチプレクサ２１０２を設けることによって実現される。更に、遅延ラッチ値で無遅延ラッチ値を置き換えさせる通常の機構を利用して、逐次走査連鎖値を動作経路に挿入し得る。
【図面の簡単な説明】
【００８１】
【図１】本手法が適用される複数の処理段を概略的に示す図。
【図２】本手法で用いる回路を概略的に示す回路ブロック図。
【図３】無遅延ラッチ及び遅延ラッチを関連する比較器及び誤り復旧論理回路と共に概略的に示す回路図。
【図４Ａ】図１の回路の動作を概略的に示すフロー図。
【図４Ｂ】図１の回路の動作を概略的に示すフロー図。
【図５】高速読み込み機構及び低速読み込み機構を含むメモリ回路を概略的に示す図。
【図６】図５の回路の一部に対する他の選択的な回路構成を示す図。
【図７】図５のメモリ回路の動作を概略的に示すフロー図。
【図８】バス段間に無遅延ラッチ及び遅延ラッチを含むパイプラインバスを示す図。
【図９】図８のパイプラインバスの動作を概略的に示すフロー図。
【図１０】無遅延ラッチ＆出力及び遅延ラッチ＆出力の双方を受けるマイクロプロセッサ制御用制御信号の生成を概略的に示す図。
【図１１】図１０の回路における動作の一例を概略的に示すフロー図。
【図１２】無遅延ラッチ及び遅延ラッチを含み、低電力動作中、遅延ラッチがデータ保持ラッチとして再使用される処理パイプラインを示す図。
【図１３】図１２の回路の動作を概略的に示すフロー図。
【図１４】誤り修正及び遅延ラッチが適用される複数の処理段を概略的に示す図。
【図１５】誤りが生じない場合、入力から出力へそのまま値を単に伝えるチャネルを通過するデータの誤り修正を概略的に示す図。
【図１６】加算器、乗算器、又はシフタ等の値変更論理回路要素に対して、如何に誤り修正が行われるかを概略的に示す図。
【図１７】図１４の回路の動作を概略的に示すフローチャートである。
【図１８】遅延及び無遅延ラッチを用いて処理パイプライン内のクロック信号の相対位相を如何に制御し得るかを概略的に示す図。
【図１９】誤りからの復旧の際、ストール及びバブル挿入のそれぞれの使用法を概略的に示す図。
【図２０】誤りからの復旧の際、ストール及びバブル挿入のそれぞれの使用法を概略的に示す図。
【図２１】遅延ラッチが逐次走査連鎖ラッチとして再使用される処理段間で用いる無遅延及び遅延ラッチを示す図。
【符号の説明】
【００８２】
１０・・・無遅延クロック信号、１２・・・遅延クロック信号
【図３】
2006520954.tif 000003
【図６】
2006520954.tif 000004
【図８】
2006520954.tif 000005
【図１６】
2006520954.tif 000006
【図１】
2006520954.tif 000007
【図２】
2006520954.tif 000008
【図４Ａ】
2006520954.tif 000009
【図４Ｂ】
2006520954.tif 000010
【図５】
2006520954.tif 000011
【図７】
2006520954.tif 000012
【図９】
2006520954.tif 000013
【図１０】
2006520954.tif 000014
【図１１】
2006520954.tif 000015
【図１２】
2006520954.tif 000016
【図１３】
2006520954.tif 000017
【図１４】
2006520954.tif 000018
【図１５】
2006520954.tif 000019
【図１７】
2006520954.tif 000020
【図１８】
2006520954.tif 000021
【図１９】
2006520954.tif 000022
【図２０】
2006520954.tif 000023
【図２１】
2006520954.tif 000024
【国際調査報告】
2006520954.tif 000025
2006520954.tif 000026
2006520954.tif 000027