(57)【要約】ビット・レベル・エラーの計数に基づくエラー緩和の選択的アクティブ化のための装置および方法の実施形態が開示される。ある実施形態では、装置は複数の状態素子、エラー・カウンタおよびアクティブ化論理を含む。エラー・カウンタは状態素子におけるビット・レベル・エラーの数を計数するものである。アクティブ化論理は、ビット・レベル・エラーの数がある閾値を超えたらエラー緩和を強化するものである。
2008546123.tif 000002
【特許請求の範囲】
【請求項１】
複数の状態素子と；
前記複数の状態素子におけるビット・レベル・エラーの数を計数するエラー・カウンタと；
ビット・レベル・エラーの数がある閾値を超えた場合にエラー緩和を増進するアクティブ化論理とを有する装置。
【請求項２】
前記アクティブ化論理がエラー緩和を増進することが、エラー緩和をオフ・モードからオン・モードにすることである、請求項１記載の装置。
【請求項３】
前記閾値を記憶するプログラム可能なレジスタをさらに有する、請求項１記載の装置。
【請求項４】
前記複数の状態素子がメモリ・セルのアレイを含む、請求項１記載の装置。
【請求項５】
前記メモリ・セルのアレイへのアクセスを計数するアクセス・カウンタをさらに有する、請求項４記載の装置。
【請求項６】
前記メモリ・セルのアレイへのアクセス数に基づいて前記エラー・カウンタがリセットされる、請求項５記載の装置。
【請求項７】
前記エラー・カウンタが時間に基づいてもリセットされる、請求項６記載の装置。
【請求項８】
前記メモリ・セルのアレイにおけるビット・レベル・エラーを検出するエラー検出論理をさらに有する、請求項４記載の装置。
【請求項９】
前記エラー検出論理がパリティ検査論理を含む、請求項６記載の装置。
【請求項１０】
前記アクティブ化論理が、前記メモリ・セルのアレイのスクラビングを増進する、請求項４記載の装置。
【請求項１１】
前記複数の状態素子が複数のスキャン・セルを含む、請求項１記載の装置。
【請求項１２】
前記複数のスキャン・セルがソフトエラー検出のために構成されている、請求項１１記載の装置。
【請求項１３】
前記複数のスキャン・セルがスキャン・チェーン内に配置されている、請求項１１記載の装置。
【請求項１４】
前記エラー・カウンタが、スキャン・チェーンを通じた一回の完全なシフトに基づいてリセットされる、請求項１３記載の装置。
【請求項１５】
複数の状態素子を含む第一の実行コアを含む、複数の実行コアと；
前記複数の状態素子におけるビット・レベル・エラーの数を計数するエラー・カウンタと；
ビット・レベル・エラーの数がある閾値を超えた場合に、前記複数の実行コアのうちの前記第一の実行コアおよびある第二の実行コアのロックステップ実行をアクティブ化するアクティブ化論理とを有する装置。
【請求項１６】
複数の状態素子におけるビット・レベル・エラーの数を計数する段階と；
ビット・レベル・エラーの数がある閾値を超えた場合にエラー緩和を増進する段階とを有する方法。
【請求項１７】
エラー緩和を増進する前記段階が、エラー緩和をオフ・モードからオン・モードに増進することを含む、請求項１６記載の方法。
【請求項１８】
前記閾値をプログラム可能なレジスタに保存する段階をさらに有する、請求項１６記載の方法。
【請求項１９】
前記複数の状態素子がメモリ・セルのアレイを含む、請求項１６記載の方法であって：
前記メモリ・セルのアレイへのアクセス数を計数する段階と；
前記メモリ・セルのアレイへのアクセス数に基づいて前記ビット・レベル・エラーの計数をリセットする段階とをさらに有する、請求項１６記載の方法。
【請求項２０】
エラー緩和を増進する前記段階が、前記メモリ・セルのアレイのスクラビングを増進する、請求項１９記載の方法。
【請求項２１】
前記複数の状態素子がスキャン・セルのチェーンを含み、スキャン・セルのチェーンを通じた一回の完全なシフトごとにビット・レベル・エラーの数の計数をリセットする段階をさらに有する、請求項１６記載の方法。
【請求項２２】
プロセッサおよびシステム・コントローラを有するシステムであって：
前記プロセッサは：
複数の状態素子と；
前記複数の状態素子におけるビット・レベル・エラーの数を計数するエラー・カウンタと；
ビット・レベル・エラーの数がある閾値を超えたかどうかを指示する制御論理とを含んでおり；
前記システム・コントローラは、前記制御論理が、ビット・レベル・エラーの数が前記閾値を超えたことを示す場合にエラー緩和を増進する、システム。
【請求項２３】
アクティブ化論理が、エラー緩和をオフ・モードからオン・モードに増進する、請求項２２記載のシステム。
【請求項２４】
ビット・レベル・エラーの数が前記閾値を超えたかどうかの指示を記憶する持続性メモリをさらに有する、請求項２２記載のシステム。
【請求項２５】
ダイナミック・ランダムアクセスメモリ、プロセッサおよびアクティブ化論理を有するシステムであって：
前記プロセッサは：
複数の状態素子と；
前記複数の状態素子におけるビット・レベル・エラーの数を計数するエラー・カウンタと；
ビット・レベル・エラーの数がある閾値を超えたかどうかを指示する制御論理とを含んでおり；
前記アクティブ化論理は、前記制御論理が、ビット・レベル・エラーの数が前記閾値を超えたことを示す場合にエラー緩和を増進する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理の分野に、より詳細にはデータ処理装置におけるエラー緩和（error  mitigation）の分野に関する。
【背景技術】
【０００２】
集積回路製造技術の改善がマイクロプロセッサおよびその他のデータ処理装置における小型化およびより低い動作電圧を提供し続けるにつれ、そうしたデバイスのメーカーおよびユーザーはますますソフトエラーの現象を懸念するようになりつつある。ソフトエラーは、アルファ粒子や高エネルギー中性子が集積回路に当たって回路ノードに保存されている電荷を変えるときに発生する。電荷変化が十分大きければ、ノード上の電圧がある論理状態を表すレベルから異なる論理状態を表すレベルに変わってしまうことがありうる。その場合、そのノードに保存されていた情報は壊れてしまう。一般に、回路の大きさが小さくなるにつれてソフトエラー・レート（SER:  soft  error  rate）は上昇する。それは、回路密度が高まると入射粒子が電圧ノードに当たる可能性が大きくなるからである。同様に、動作電圧が下がるにつれて、異なる論理状態を表す電圧レベル間の差が小さくなるので、回路ノードの論理状態を変えるのに必要とされるエネルギーが小さくなり、より多くのソフトエラーが生じる。
【０００３】
ソフトエラーを引き起こす粒子を遮るのはきわめて難しく、データ処理装置はしばしばソフトエラーを検出し、時に訂正する技術を含む。そうしたエラー緩和技術としては、誤り訂正符号（ECC:  error-correcting-code）、キャッシュのスクラビング（scrubbing）および複数のプロセッサをロックステップ（lockstep）で走らせることが含まれる。しかしながら、エラー緩和技術の使用はパフォーマンスを低下させ、電力消費を増加させる傾向がある。さらに、エラー緩和を使うことが望ましい必要性は、そのデバイスが使用される時と場所によって変わりうる。高度、磁場強度および方向ならびに太陽活動といった環境的な要因がSERに影響しうるからである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、エラー緩和の選択的なアクティブ化が望まれることがありうる。
【０００５】
本発明は、限定ではなく例として、付属の図面で図解されている。
【発明を実施するための最良の形態】
【０００６】
以下では、ビット・レベル・エラーの計数に基づくエラー緩和の選択的アクティブ化の実施形態を記述する。以下の記述では、本発明のより包括的な理解を提供するために、要素およびシステム構成といった数多くの個別的詳細が述べられることがあるが、当業者は、そのような個別的な詳細なしでも本発明が実施しうることを認識するであろう。さらに、いくつかのよく知られた構造、回路、技術などは、本発明を無用にかすませることを避けるために述べていない。
【０００７】
ソフトエラーの原因となる粒子束のランダムな性質のため、SERをある程度評価するためには、エラー検出のための比較的大きな領域が必要となることがありうる。本発明は、多くのプロセッサおよびその他のデバイスのダイ・サイズのかなりの部分をすでに占めていることがある、キャッシュ・メモリおよびスキャン・セルといった構造を使ったエラー検出を提供するので、望ましいことがありうる。したがって、本発明は、ダイ・サイズを、よって費用を著しく増すことになりうる追加的な誤り検出構造を必要とすることなく実装されうる。
【０００８】
図１は、プロセッサ１００における本発明のある実施形態を図解している。プロセッサ１００は、ペンティアム（登録商標）プロセッサ・ファミリー、アイテニアム（登録商標）プロセッサ・ファミリーもしくはインテル・コーポレイションからの他のプロセッサ・ファミリーのプロセッサまたは他の会社からの他のプロセッサといった多様な異なる型のプロセッサのいずれであってもよい。本発明は、メモリ・デバイスなどプロセッサ以外の装置において実施されてもよい。プロセッサ１００は、メモリ・アレイ１１０、メモリ・エラー計数ユニット１２０およびメモリ・エラー緩和ユニット１３０を含む。
【０００９】
メモリ・アレイ１１０は、静的ランダムアクセスメモリ・セルなどいかなる型のメモリ・セルが何行何列あってもよく、キャッシュ・メモリなど、いかなる機能のために使われるものでもよい。メモリ・アレイ１１０は、メモリ・アレイ１１０内のビット・レベル・エラーを検出するための誤り検出回路１１１を含んでいる。これはパリティまたはECCといったいかなる既知の技術を使うものでもよい。プロセッサおよびその他のデバイスの多くの設計は、キャッシュまたはその他のメモリ・アレイのために比較的大きな領域を含んでおり、これらのアレイの多くはすでにパリティまたはECCを含んでいる。したがって、本発明によれば、ダイのかなりの領域が低コストで誤り検出のために利用可能となりうる。
【００１０】
メモリ・エラー計数ユニット１２０は、アレイ・エラー・カウンタ１２１、アレイ読み取りカウンタ１２２およびアレイ計数制御モジュール１２３を含んでいる。アレイ・エラー・カウンタ１２１は、計数入力、計数出力およびリセットを有する、同期または非同期のいかなる既知のカウンタ回路であってもよい。アレイ・エラー・カウンタ１２１の計数入力は誤り検出回路１１１に結合され、メモリ・アレイ１１０の読み取りにおいてビット・レベル・エラーが検出されたことを示す信号を受け取る。それにより、アレイ・エラー・カウンタ１２１の計数出力は、アレイ・エラー・カウンタ１２１がリセットされて以来、メモリ・アレイ１１０の読み取りで検出されたビット・レベル・エラーの総数を示す。
【００１１】
アレイ読み取りカウンタ１２２も、計数入力、計数出力およびリセットを有する、同期または非同期のいかなる既知のカウンタ回路であってもよい。アレイ読み取りカウンタ１２２の入力は、メモリ・アレイ１１０が読まれていることを示す信号を受け取るようメモリ・アレイ１１０に結合されている。それにより、アレイ読み取りカウンタ１２２の計数出力は、アレイ読み取りカウンタ１２２がリセットされて以来、メモリ・アレイ１１０が読まれた総回数を示すようになっている。
【００１２】
本実施形態では、アレイ・エラー・カウンタ１２１およびアレイ読み取りカウンタ１２２は、アレイ読み取りカウンタ１２２によって計数されるメモリ・アレイ１１０の読み取り回数がある限界に達するたびに、たとえば1000回の読み取りごとにリセットされる。このアレイ読み取り限界値は固定でもよいし、プログラム可能でもよい。適切なアレイ読み取り限界値は、メモリ・アレイ１１０の大きさ、ビット数および面積、SERのある程度正確な決定のために必要とされる読み取り回数の期待値ならびに他の任意の因子に基づいて選ばれうる。アレイ・エラー・カウンタ１２１およびアレイ読み取りカウンタ１２２は、ある時間（たとえば秒単位で測られる）経過後にもリセットされる。それにより、メモリ・アレイ１１０が比較的不活発であってもSERの変化が検出されうる。他の実施形態では、両カウンタは、追加的または代替的に、他のいかなるイベントまたは信号に基づいてリセットされてもよい。
【００１３】
この実施形態では、アレイ・エラー・カウンタ１２１の出力はアレイ計数制御モジュール１２３に結合され、アレイ・エラー・カウンタ１２１およびアレイ読み取りカウンタ１２２がリセットされるたびに、アレイ計数制御モジュール１２３はアレイ読み取り限界値当たりのビット・レベル・エラー数を受け取るようになっている。他の実施形態では、ビット・レベル・エラー数はアレイ計数制御モジュール１２３に常時利用可能であってもよいし、あるいは他のいかなるイベントまたは信号に基づいてアレイ計数制御モジュール１２３に送られてもよい。
【００１４】
アレイ計数制御モジュール１２３はまた、アレイ・エラー閾値レジスタ１２４をも含む。該アレイ・エラー閾値レジスタ１２４は、あるアレイ・エラー閾値の値を保持するようプログラムされうる。他の実施形態では、アレイ・エラー閾値の値は固定でもよい。ビット・レベル・エラー数がアレイ・エラー閾値の値を超えている場合には、エラー緩和がアクティブ化される、あるいは増進されることになる。適切なアレイ・エラー閾値の値は、所望のSER閾値に対応する、アレイ読み取り限界値当たりのビット・レベル・エラー数に基づいて選択されうる。他の実施形態は、カウンタ１２１および１２２の出力からSERを計算する論理を含んでいてもよい。ビット・レベル・エラー数がアレイ・エラー閾値の値を超えているかどうかの判定は、比較器回路を使うなど、いかなる既知のアプローチを使って実行されてもよい。
【００１５】
アレイ計数制御モジュール１２３は、メモリ・エラー緩和ユニット１３０に、ビット・レベル・エラー数がアレイ・エラー閾値の値を超えているかどうかを示す。その指示は、ある信号（「高SER」信号）の状態または遷移に基づいていてもよいし、他の任意の既知のアプローチに基づいていてもよい。アレイ計数制御モジュール１２３が、アレイ・エラー閾値を超えていることを示す場合、メモリ・エラー緩和ユニット１３０は、多様な既知のアプローチのうち任意の一つまたは複数を通じて、エラー緩和をアクティブ化または増進する。たとえば、メモリ・エラー緩和ユニット１３０はメモリ・アレイ１１０のスクラビングをアクティブ化してもよいし、あるいはメモリ・アレイ１１０の定期的スクラビングの頻度を増してもよい。
【００１６】
図２に示されるように、本発明は、メモリ・アレイの代わりに誤り検出のための逐次論理（sequential  logic）を使って実装されてもよい。図２は、本発明のある実施形態に基づくマルチコア・プロセッサ２００を示している。一般に、マルチコア・プロセッサは二つ以上の実行コアを含んでいる単一の集積回路である。実行コアは、命令を実行するための論理を含む。実行コアに加えて、マルチコア・プロセッサは、本発明の範囲内で、専用または共用資源のいかなる組み合わせを含んでいてもよい。専用資源は、専用のレベル1キャッシュなど単一のコア専用の資源であってもよいし、あるいは複数のコアの任意の部分集合に専用の資源であってもよい。共有資源は、共有されるレベル2キャッシュまたはマルチコア・プロセッサと別のコンポーネントとの間のインターフェースをサポートする共有外部バス・ユニットのようなすべてのコアによって共有される資源であってもよいし、あるいは複数のコアの任意の部分集合によって共有される資源であってもよい。
【００１７】
マルチコア・プロセッサ２００は、実行コア２０１および実行コア２０２を含む。実行コア２０１はスキャン・チェーン２１０、逐次エラー計数ユニット２２０および逐次エラー緩和ユニット２３０を含む。
【００１８】
スキャン・チェーン２１０は、任意の数のスキャン・セルが、デージーチェーンまたはシフトレジスタ配置のような直列配置に接続されたものであってよい。スキャン・セルとは、ラッチまたはフリップフロップといった逐次素子であり、多くの集積回路に加えられて、逐次論理の試験およびデバッグのための冗長な状態情報を提供する。スキャン・セルはチェーン内に配置され、データを逐次的にシフトさせてデバイスから出したり、あるいは逐次的にデータをデバイス内に転送することによってデバイスを既知の状態にしたりするために使われうる。典型的には、スキャン・セルは、デバイスが工場から出荷される前に無効にされる。
【００１９】
多くのプロセッサ設計はスキャン・セルを含み、多くは「フルスキャン」機能を含む。これは、プロセッサのすべての逐次状態についてスキャン・セルがあるということを意味している。したがって、プロセッサ・ダイのかなりの領域、可能性としてはプロセッサの逐次回路とほぼ同じくらいの領域が、本発明に基づく誤り検出のために低コストで利用可能となりうる。誤り検出能力をさらに増すため、既存のスキャン・セル設計が、ソフトエラーへの感度を増すよう修正されてもよい。キャパシタンスの追加または除去ならびにチャネル長の増加といったこれらの設計修正は、通常のスキャン動作のための機能性を妨げることなくなされることができ、通常のスキャン動作のためには無効にされてソフトエラー検出のためには有効にされうる仕方でなされてもよい。したがって、プロセッサまたはその他のデバイス上に含まれる、試験およびデバッグのためのスキャン・セルは、追加的または代替的に、ソフトエラー検出のために構成されてもよい。
【００２０】
誤り検出は、常時既知のデータ値をシフトさせてスキャン・チェーン２１０の入力に入れ、出力を観察することによって実行されうる。誤りは、スキャン・チェーン２１０の出力に異なる値が出てくることによって示される。たとえば、スキャン・チェーン２１０の入力が二進0にセットされうる。スキャン・チェーン２１０の出力に出てくる二進の1のそれぞれが、一つのビット・レベル・エラーを示す。nウェル・プロセス（n-well  process）では1から0への遷移ではなく0から1への遷移が望ましいことがありうる。nウェル・プロセスでは0から1への遷移はアルファ粒子と中性子の両方によって引き起こされるが、1から0への遷移は中性子によってしか引き起こされないのである。
【００２１】
逐次エラー計数ユニット２２０は、逐次エラー・カウンタ２２１および逐次計数制御モジュール２２３を含む。逐次エラー・カウンタ２２１は、計数入力、計数出力およびリセットを有する、同期または非同期のいかなる既知のカウンタ回路であってもよい。逐次エラー・カウンタ２２１の計数入力はスキャン・チェーン２１０の出力に結合され、逐次エラー・カウンタ２２１の計数出力は、逐次エラー・カウンタ２２１がリセットされて以来、スキャン・チェーン２１０によって検出されたビット・レベル・エラーの総数を示す。この実施形態では、逐次エラー・カウンタ２２１は、スキャン・チェーン２１０のシフト一巡、すなわち入力に注入された値が出力に到達するのに必要とされるクロックサイクル数ごとにリセットされる。他の実施形態では、カウンタは追加的または代替的に、他のいかなるイベントまたは信号に基づいてリセットされてもよい。
【００２２】
この実施形態では、逐次エラー・カウンタ２２１の出力は逐次計数制御モジュール２２３に結合され、逐次エラー・カウンタ２２１がリセットされるたびに、逐次計数制御モジュール２２３はフルスキャン当たりのビット・レベル・エラー数を受け取るようになっている。他の実施形態では、ビット・レベル・エラー数は逐次計数制御モジュール２２３に常時利用可能であってもよいし、あるいは他のいかなるイベントまたは信号に基づいて逐次計数制御モジュール２２３に送られてもよい。
【００２３】
逐次計数制御モジュール２２３はまた、逐次エラー閾値レジスタ２２４をも含む。該逐次エラー閾値レジスタ２２４は、ある逐次エラー閾値の値を保持するようプログラムされうる。他の実施形態では、逐次エラー閾値の値は固定でもよい。ビット・レベル・エラー数が逐次エラー閾値の値を超えている場合には、エラー緩和がアクティブ化される、あるいは増進されることになる。適切な逐次エラー閾値の値は、スキャン・チェーン２１０内のスキャン・セルの数に基づいて選択されうる。他の実施形態は、部分スキャンまたはフルスキャンの数を計数するスキャン・カウンタと、エラー・カウンタおよびスキャン・カウンタの出力からSERを計算する論理とを含んでいてもよい。ビット・レベル・エラー数が逐次エラー閾値の値を超えているかどうかの判定は、比較器回路を使うなど、いかなる既知のアプローチを使って実行されてもよい。
【００２４】
逐次計数制御モジュール２２３は、逐次エラー緩和ユニット２３０に、ビット・レベル・エラー数が逐次エラー閾値の値を超えているかどうかを示す。その指示は、高SER信号の状態または遷移に基づいていてもよいし、他の任意の既知のアプローチに基づいていてもよい。逐次計数制御モジュール２２３が、逐次エラー閾値を超えていることを示す場合、逐次エラー緩和ユニット２３０は、多様な既知のアプローチのうち任意の一つまたは複数を通じて、エラー緩和をアクティブ化または増進する。たとえば、逐次エラー緩和ユニット２３０は、実行コア２０１とロックステップで走るよう実行コア２０２をアクティブ化してもよい。
【００２５】
本発明は、メモリ・アレイ、スキャン・チェーンまたはビット・レベル・エラーが検出されうる状態素子を有する他の任意の構造の任意の組み合わせを使った装置で実施されてもよい。たとえば、プロセッサは、それぞれが独自の対応するエラー計数ユニットおよびエラー緩和ユニットを有する二つ以上のメモリ・アレイを含んでいてもよいし、あるいはそれぞれが独自の対応するスキャン・チェーンおよびエラー計数ユニットおよびエラー緩和ユニットを有する二つ以上の実行コアを含んでいてもよい。各エラー計数ユニットは、閾値の値がプロセスまたはアーキテクチャ上の脆弱性といった要因を考慮に入れるために較正されるようにするために、一つまたは複数の閾値レジスタを含みうる。閾値レジスタは、閾値の値の調整を許容するためにプログラム可能であってもよい。
【００２６】
いくつかの実施形態では、単一のエラー計数ユニットが種々のエラー源または種々のエラー種別のために複数のカウンタを含んでいてもよいし、および／または、複数のエラー計数ユニットからの高SER信号を一緒に処理して、エラー緩和がアクティブ化されるかどうか、どんな種別でどんなレベルのエラー緩和がアクティブ化されるかを決定してもよい。そのような一つの実施例では、複数の高SER信号がORで結合されうる。たとえば、アレイ・エラー閾値および逐次エラー閾値の一方または両方を超えた場合にエラー緩和がアクティブ化されうる。別のそのような実施例では、エラー閾値を超えたかどうかの判定は、二つ以上のカウンタからのエラー計数の組み合わせに基づいていてもよい。複数の計数は直接足し合わされてもよいし、あるいはあるエラー種別またはあるエラー源がより大きな信頼性の懸念を表しているため一つの計数が他の計数よりも大きな重みを与えられてもよい。本発明の範囲内で、エラー計数および／または高SER信号の他の形の処理も可能である。たとえば、ある特定の高SER信号が別の特定の高SER信号を否定またはオーバーライドできるようにするといったことである。
【００２７】
これらの実施形態のいずれにおいても、あるいは他のいかなる実施形態においても、高SER信号の源および／または処理に依存して、さまざまなレベルまたは型のエラー緩和がアクティブ化または増進されうる。たとえば、キャッシュおよび逐次論理の両方のための誤り検出をもつ実施形態では、キャッシュのみからの高SER信号はキャッシュのスクラビングをアクティブ化し、逐次論理のみからの高SER信号はロックステップをアクティブ化し、両者からの高SER信号は動作電圧の上昇をアクティブ化してもよい。
【００２８】
さらに、諸実施形態は、単一のエラー計数ユニットのための複数のエラー閾値の値を含んでいてもよい。それにより、エラー緩和の型またはレベルが、検出されたSERの大きさに依存して選択できる。そのような一つの実施例では、たとえば複数段のエラー緩和が利用可能であってもよく、どのエラー閾値を超えたかに基づいてどの段のエラー緩和を選ぶかを示すために複数の異なる高SER信号を使ってもよい。これらの段は、単一の技法の異なるレベルによって、たとえばキャッシュ・スクラビングの頻度を変えることによって区別されてもよいし、あるいはある段ではキャッシュ・スクラビング、別の段では動作電圧上昇などと異なる技法を使って区別されてもよい。段のうちの一つまたは複数において、一つまたは複数のエラー緩和技法が非アクティブあるいはオフ状態であってもよい。残りの段のそれぞれにおいては、同じエラー緩和状態が、単一または複数のレベルのうちの一つにおいて、オンまたはアクティブ化されていてもよい。
【００２９】
本発明の諸実施形態は、上記のいかなる組み合わせを含んでいてもよい。ある実施形態は、複数のエラー・カウンタを含んでいて、それぞれが複数のエラー閾値をもち、エラー緩和の複数の段が複数の高SER信号の処理に基づいて選ばれてもよい。該処理は、あるエラー種別またはあるエラー源により大きな重みを与えるよう実行されてもよい。たとえば、エラー緩和のある段にはいるのは、ある大きなメモリからの高SER信号がアサートされるか、あるいはより小さなメモリ・アレイ二つからの高SER信号がアサートされる場合であってよい。もう一つの例として、あるチェーンからの高SER信号がアサートされる場合にある段のエラー緩和にはいり、メモリ・アレイからの高SER信号がアサートされる場合にエラー緩和のより高いレベルまたは段にはいるのでもよい。これは、メモリ・アレイはスキャン・チェーンよりもダイ領域のより大きな部分を表しているからである。
【００３０】
いくつかの実施形態では、高SER信号、カウンタ出力およびその他の信号のタイミングは決定的に重要ではない。というのも、目標は、短いスパイクではなく持続した期間の高SERを検出することでありうるからである。したがって、信号をパイプラインまたは遅延してもよく、信号が異なるユニットには異なる時刻に到着してもよい。さらに、エラー緩和モードどうしの間のスラッシング（thrashing）を回避するために、エラー緩和をアクティブ化、増進、非アクティブ化または低減する前に、高SER信号における履歴が望まれてもよいし、および／または、誤り検出の数回の反復が実行されてもよい。
【００３１】
図３は、本発明のある実施形態に基づくシステム３００を示している。システム３００は、プロセッサ３１０、システム・コントローラ３２０、持続性メモリ３３０およびシステム・メモリ３４０を含んでいる。プロセッサ３１０は前記したようないかなるプロセッサであってもよく、機能ユニット３１１およびエラー計数制御ユニット３１２を含む。機能ユニット３１１はメモリ・アレイ、逐次論理またはビット・レベル・エラーが検出されうる状態素子を有するその他の任意の構造を含む。エラー計数制御ユニット３１２は、機能ユニット３１１でビット・レベル・エラーの数を計数し、機能ユニット３１１におけるビット・レベル・エラーの数がエラー閾値の値を超えるかどうかを示す。この実施形態では、エラー計数制御ユニット３１２は、機能ユニット３１１におけるビット・レベル・エラーの数がエラー閾値の値を超える場合に高SER信号３１３をアサートする。
【００３２】
システム・コントローラ３２０は、高SER信号３１３を受け取るようプロセッサ３１０に結合されたいかなるチップセット・コンポーネントまたはその他のコンポーネントであってもよい。この実施形態では、高SER信号３１３がアサートされた場合、システム・コントローラ３２０はエラー緩和をアクティブ化または増進する。たとえば、システム・コントローラ３２０は、ソフトエラーを緩和するためにシステム、プロセッサまたは他の電圧レベルを上げる電圧コントローラを含むか、そのような電圧コントローラに結合されているかしていてもよい。
【００３３】
システム・コントローラ３２０は、高SER信号３１３の状態を保存するため、あるいは他の仕方で検出されたSERに関する情報を保持するための持続性メモリ３３０を含むか、そうした持続性メモリ３３０に結合されるかしていてもよい。持続性メモリ３３０は、システム３００またはプロセッサ３１０がオフまたは他の非アクティブ状態にある間も情報を保持する機能のあるいかなるメモリであってもよい。たとえば、持続性メモリ３３０はフラッシュメモリまたは不揮発性もしくはバックアップ電池付きのランダムアクセスメモリであってもよい。したがって、システム３００がソフトエラーまたはその他の原因によりクラッシュした場合、システム・コントローラ３２０はリブートの際に持続性メモリ３３０を読んで、最も最近検出されたSERが高であったかどうかを判定し、もしそうであればエラー緩和をアクティブ化してシステム３００をリブートすることができる。
【００３４】
システム・メモリ３４０は、スタティックもしくはダイナミック・ランダム・アクセス・メモリまたは磁気もしくは光ディスク・メモリといったいかなる型のメモリであってもよい。システム・メモリ３４０は、プロセッサ３２０によって実行されるべき命令および該プロセッサによって操作されるデータ、あるいはオペレーティング・システム・ソフトウェア、アプリケーション・ソフトウェアまたはユーザー・データといったいかなる形のいかなる情報を保存するためにも使用されうる。
【００３５】
プロセッサ３１０、システム・コントローラ３２０、持続性メモリ３３０およびシステム・メモリ３４０は任意の構成で、任意の組み合わせバスまたは直接もしくはポイントツーポイントの接続を用いて、および任意の他のコンポーネントを通じて、互いに結合されうる。システム３００はまた、周辺バス（peripheral  bus）のようないかなるバスを含んでいてもよく、また入出力装置のようないかなるコンポーネントを含んでいてもよいが、図３には示していない。
【００３６】
図４は、ビット・レベル・エラーの計数に基づいてエラー緩和を選択的にアクティブ化する方法における本発明のある実施形態を示している。図４の実施形態では、エラー緩和は高または低の二つのモードのうちの一つをとりうる。高モードはオン・モード、低モードはオフ・モードでよいが、あるいは、どちらのモードでもエラー緩和はオンだが高モードでは低モードより高いレベルまたは頻度で動作しているのでもよい。図４の実施形態におけるエラー緩和は、いかなる既知のアプローチを含んでいてもよい。たとえば、高モードはキャッシュのスクラビング、二つ以上のプロセッサ・コアをロックステップで走らせること、あるいはデバイスもしくはデバイスの一部を二つの動作電圧のうちの高いほうの電圧で走らせることを含みうる。低モードは、より低い頻度または全くなしのキャッシュ・スクラビング、単一のプロセッサ・コアのみを走らせること、二つ以上のプロセッサ・コアをロックステップでなしに走らせること、またはデバイスを二つの動作電圧のうちの低いほうで走らせることを含みうる。
【００３７】
ボックス４１０では、プロセッサまたはその他のデバイス内の機能ブロックのための反復限界が反復限界レジスタにプログラムされる。機能ブロックは、メモリ・アレイ、逐次論理または状態素子をもつ他の任意の構造を含む。反復限界は、機能ブロック中の状態素子の数、機能ブロックの大きさ、面積、構成、アーキテクチャもしくは機能、デバイス製造に使われたプロセス技術、デバイスの使用のための期待される使用もしくは環境または他の任意の要因に基づいていてもよい。
【００３８】
ボックス４１１では、エラー閾値の値が機能ブロックのためのエラー閾値レジスタにプログラムされる。エラー閾値の値は、前記反復限界と同じ要因に加えて、該反復限界そのものおよび期待されるSERといった追加的な要因に基づいていてもよい。
【００３９】
ボックス４２０では、機能ブロックが使用されている間、イベントの反復回数が計数される。イベントは、エラー・レートの計算で分母として数えることのできるいかなるイベントでもよい。たとえば、イベントは、メモリ・アレイへの読み取りアクセスまたはスキャン・チェーンのフルスキャンであってもよい。反復回数は、いかなる種類のカウンタを使って計数してもよい。
【００４０】
ボックス４２１では、機能ブロックが使用されている間、状態素子におけるビット・レベル・エラーの数が計数される。ビット・レベル・エラーは、いかなる既知の技法を使って検出されてもよい。たとえば、メモリ・アレイのためのパリティ、あるいはスキャン・チェーンの入力に既知の値を注入して逐次論理のための出力を観察することなどである。ビット・レベル・エラーの数は、いかなる種類のカウンタを使って計数されてもよい。
【００４１】
ボックス４３０では、ボックス４２０で計数された反復数が反復限界に達したかどうかの判定がなされる。判定は、いかなる既知のアプローチにしたがってなされてもよい。たとえば、反復カウンタ出力のある特定のビットに基づいて行う、あるいは反復カウンタ出力を反復限界レジスタの内容と比較するなどである。反復数が反復限界に達したとき、本方法はボックス４３１に進む。それまでは、本発明はボックス４２０に進む。
【００４２】
ボックス４３１では、ボックス４２１で計数されたエラーの数がエラー閾値の値を超えているかどうかについての判定がなされる。判定は、いかなる既知のアプローチにしたがって行われてもよい。たとえば、エラー・カウンタ出力をエラー閾値レジスタの内容に比較するなどである。計数されたエラーの数が閾値の値を超えている場合、本方法はボックス４４０に進む。そうでなければ、本方法はボックス４４１に進む。
【００４３】
ボックス４４０および４４１では、エラー緩和が高モードにあるか低モードにあるかについての判定がなされる。低モードにあれば、本方法はボックス４４０からはボックス４５０に、ボックス４４１からはボックス４６０に進む。高モードにあれば、本方法はボックス４４１からはボックス４５１に、ボックス４４０からはボックス４６０に進む。
【００４４】
ボックス４５０では、エラー緩和は低モードから高モードにアクティブ化または増進される。ボックス４５１では、エラー緩和は非アクティブ化または低減される。ボックス４５０および４５１から、本方法はボックス４６０に進む。ボックス４６０では、反復計数およびエラー計数はリセットされる。ボックス４６０から、本方法はボックス４２０に戻る。
【００４５】
本発明の範囲内で、図４に示された方法は異なる順序で実行されたり、図示されたステップが省略されて実行されたり、追加ステップが加えられて実行されたり、あるいは並べ替え、省略もしくは追加ステップの組み合わせを使って実行されたりしてもよい。たとえば、ボックス４１０および反復計数へのあらゆる言及は、スキャン・チェーンを通じて一回完全にシフトすることに基づいた閾値とエラー計数を比べる実施形態では省略してもよい。別の例では、エラー緩和が高モードにあるか低モードにあるかについての判定は、高モードに留まる実装と低モードから高モードに移る実装との間に差がない実施形態では省略されてもよい。さらに、本発明は、エラー緩和をアクティブ化するかどうかについての決定が、二つ以上の機能ユニットからの二つ以上のエラー・カウントに基づきうる諸方法において、あるいは二つより多いエラー緩和モードを含む諸方法において実施されてもよい。
【００４６】
プロセッサ１００、プロセッサ２００または本発明のある実施形態にしたがって設計された他の任意のコンポーネントもしくはコンポーネントの一部は、創造からシミュレーション、そして製造へとさまざまな段階で設計〔デザイン〕されうる。設計を表すデータは設計をいくつかの仕方で表現しうる。第一に、シミュレーションで有用であるように、ハードウェア記述言語または別の機能記述言語を使ってハードウェアを表現してもよい。追加的または代替的に、論理および／またはトランジスタ・ゲートをもつ回路レベル・モデルが設計プロセスの何らかの段階で生成されてもよい。さらに、たいていの設計は、何らかの段階で、さまざまなデバイスの物理的な配置を表すデータを用いてモデル化されうるレベルに達する。通常の半導体製造技法が使われる場合は、デバイス配置モデルを表現するデータは、集積回路を生産するために使用されるマスクのための種々のマスク層上のさまざまな特徴の存在または不在を指定するデータでありうる。
【００４７】
設計のいかなる表現でも、データはいかなる形の機械可読媒体に記憶されてもよい。そのような情報を伝送するために変調されるかその他の仕方で生成されるかした光波または電気的な波、メモリまたはディスクのような磁気もしくは光記憶媒体が前記機械可読媒体でありうる。これらの媒体のいずれも、前記設計を、あるいは本発明の実施形態で使用される、誤り回復ルーチン内の命令といった他の情報を、「担持」または「指示」しうる。情報を指示または担持する電気的搬送波が伝送されるとき、該電気信号のコピー、バッファリングまたは再送信が実行される限りにおいて、新たなコピーが作られてもよい。こうして、通信プロバイダーまたはネットワーク・プロバイダーの動作は、本発明の諸技法を具現する物品、たとえば搬送波のコピーを作成する動作でありうる。
【００４８】
こうして、ビット・レベル・エラーの計数に基づく、エラー緩和の選択的なアクティブ化が開示された。ある種の実施形態を記述し、付属の図面に示してきたが、そのような実施形態が広い本発明を単に解説するものであって制限するものでないこと、そして本発明が図示され記述された個別的な構築および構成に限定されないことは理解しておくべきである。というのも、本開示を研究すれば当業者にはさまざまなその他の修正が思いつくことがありうるからである。たとえば、エラー緩和の増進は、オフ・モードからオン・モードにエラー緩和を増進することを含みうる。また、エラー計数がエラー閾値の値を超えるときにエラー緩和を増進することは、エラー計数がエラー閾値以上になったときにエラー緩和を増進することを含みうる。
【００４９】
成長が速く、さらなる進歩が簡単には予見できないこのような技術の分野では、開示された実施形態は、本開示または付属の特許請求の範囲の原則から外れることなく、実施を可能にする技術的進歩によって容易にされる構成および詳細においてすぐ修正可能でありうる。
【図面の簡単な説明】
【００５０】
【図１】プロセッサにおける本発明のある実施形態を示す図である。
【図２】本発明のある実施形態に基づくマルチコア・プロセッサを示す図である。
【図３】本発明のある実施形態に基づくシステムを示す図である。
【図４】ビット・レベル・エラーの計数に基づいて、エラー緩和を選択的にアクティブ化する方法における本発明の実施形態を示す図である。
【符号の説明】
【００５１】
１００  プロセッサ
１１０  メモリ・アレイ
１１１  エラー検出回路
１２０  メモリ・エラー計数ユニット
１２１  アレイ・エラー・カウンタ
１２２  アレイ読み取りカウンタ
１２３  アレイ計数制御モジュール
１２４  アレイ・エラー閾値レジスタ
１３０  メモリ・エラー緩和ユニット
２００  プロセッサ
２０１  実行コア
２０２  実行コア
２１０  スキャン・チェーン
２２０  逐次エラー計数ユニット
２２１  逐次エラー・カウンタ
２２３  逐次計数制御モジュール
２２４  逐次エラー閾値レジスタ
２３０  逐次エラー緩和ユニット
３００  システム
３１０  プロセッサ
３１１  機能ユニット
３１２  エラー計数制御ユニット
３１３  高SER信号
３２０  システム・コントローラ
３３０  持続性メモリ
３４０  システム・メモリ
４１０  反復限界を設定
４１１  エラー閾値の値を設定
４２０  反復を計数
４２１  ビット・レベル・エラーを計数
４３０  反復限界に達したか？
４３１  閾値を超えたか？
４４０  エラー緩和が高モードか？
４４１  エラー緩和が高モードか？
４５０  エラー緩和をアクティブ化
４５１  エラー緩和を非アクティブ化
４６０  エラー計数および反復計数をリセット
【図１】
2008546123.tif 000003
【図２】
2008546123.tif 000004
【図３】
2008546123.tif 000005
【図４】
2008546123.tif 000006
【国際調査報告】
2008546123.tif 000007
2008546123.tif 000008
2008546123.tif 000009