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