(57)【特許請求の範囲】
【請求項１】
パリティビット幅を選択するＥＣＣ回路であって、
第１のチェックビット数に基づく望ましいハミング距離のためのチェックビットおよびシンドロームを生成するのに必要な最小の前記第１のチェックビット数を決定するための回路と、
ハミングコードのＨ−行列の列ベクトルとして用いられる重み付けコードにおける、利用可能な重みのうち最小の重みを有する最小の重み付けコードの数を増加させるべく、前記第１のチェックビット数より大きい第２のチェックビット数を決定するための回路と、
前記第２のチェックビット数に基づき、前記チェックビットおよびシンドロームを生成するための回路と、
を備える、
ＥＣＣ回路。
【請求項２】
前記第２のチェックビット数を決定するための回路は、
前記第２のチェックビット数を決定し、
前記パリティビット幅を減少させる、
請求項１に記載のＥＣＣ回路。
【請求項３】
パリティビット幅を選択するＥＣＣ回路であって、
第１のチェックビット数に基づく望ましいハミング距離のためのチェックビットまたはシンドロームを生成するのに必要な最小の前記第１のチェックビット数を決定する回路と、
第２のチェックビット数を提供して、重みの小さなハミングコードの数を増加させるべく、前記第１のチェックビット数に少なくとも１つの付加的なチェックビットを加える回路と、
前記第２のチェックビット数に応じて、前記パリティビット幅を減少させる回路と、
を備える、
ＥＣＣ回路。
【請求項４】
前記重みの小さなハミングコードの数は、重みが２であるコードの数を含む、
請求項１から請求項３までの何れか一項に記載のＥＣＣ回路。
【請求項５】
ＳＥＣ／ＳＥＤエラー訂正プロセスと共に用いられる、
請求項４に記載のＥＣＣ回路。
【請求項６】
前記重みの小さなハミングコードの数は、重みが２であるコードおよび重みが３であるコードの数を含む、
請求項１から請求項３までの何れか一項に記載のＥＣＣ回路。
【請求項７】
ＳＥＣ／DＥＤエラー訂正プロセスと共に用いられる、
請求項６に記載のＥＣＣ回路。
【請求項８】
エラー訂正回路であって、
入力データバスにおいてｋビットの書き込みデータビットを受信し、第１のチェックビット数に基づく望ましいハミング距離のためのチェックビットおよびシンドロームを生成するに必要な最小の前記第１のチェックビット数を決定し、ハミングコードのＨ−行列の列ベクトルとして用いられる重み付けコードにおける、利用可能な重みのうち最小の重みを有する最小の重み付けコードの数を増加させるべく、前記第１のチェックビット数より大きい第２のチェックビット数を決定し、前記第２のチェックビット数に基づき、前記チェックビットを生成する書き込みパリティ発生器と、
前記書き込みパリティ発生器に結合され、そこからｎ−ｋビット（ただし、ｎはコードワードビット数であり、ｋは、前記入力データバスからの書き込みデータビット数である。）の前記チェックビットを受信するメモリと、
を含む、
エラー訂正回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概ねデータ記憶およびテータ通信の分野に関する。特に、本発明は、追加のチェックビットを使用して、ハミングコードのＨ行列における最小重み付けコードの数を増やすことにより、チェックビットおよびシンドロームの生成に要するパリティビットの幅を減少させる技術に関する。
【０００２】
ハミングコードを用いることにより、いかなる一ビットエラーも検出しかつ訂正できるよう、データブロックを一ビットエラーから保護する方法が実現する。一般的に、ハミングコードは、ハミング行列あるいはＨ−行列と呼ばれる行列を用いることにより通常説明される。Ｈ−行列は、どのデータビットが、それぞれのチェックビットと組み合わせてシンドロームを生成するのに用いられるかを定義する（ｎ−ｋ）×ｎ行列である。
【０００３】
消費電力を最小限にし、かつ、並列エラー訂正コード（ＥＣＣ）用途の回路の複雑さを緩和させる試みにおいて、多くの異なる方法がこれまで用いられてきた。例えば、ゴーシュ、Ｓ他による「メモリチェッカ回路における電力を最小化するエラー訂正コードの選択」ローパワーエレクトロニクス誌、第１巻、ページ６３〜７２、２００５年、ゴーシュ、Ｓ他、および、「メモリＥＣＣチェッカにおける電力消費の低減」ＩＥＥＥインターナショナルテストカンファレンス（ＩＴＣ−２００４）会報、ノースカロライナ州シャーロット、２００４年１０月を参照されたい。これらの開示は、本願明細書中に参照として組み込まれる。
【０００４】
従来のＥＣＣの実施は、訂正／検出レベルに要求される冗長ビットの最小数および使用されるワード長を決定するための周知の方程式を用いる。一般的に、単一のエラー訂正／単一のエラー検出（ＳＥＣ／ＳＥＤ）または単一のエラー訂正／二重エラー検出（ＳＥＣ／ＤＥＤ）技術のＥＣＣが用いられるが、同じ基礎概念を用いることにより、より高度な訂正および検出レベルが得られる。下記の方程式は、必要なハミング距離、および、ＳＥＣ／ＳＥＤまたはＳＥＣ／ＤＥＤ能力のいずれかを実施するのに必要とされる冗長ビット数を提供する。特定のワード長の冗長ビット（チェックビット）数は、エラー訂正／検出能力を決定するが、加えて、チェックビット数は、Ｈ−行列における各重み付けコードに使用可能なベクトルの数を決定する。
ＳＥＣ／ＳＥＤでは、ハミング距離＝３であり、ｌｏｇ２（ｎ）＋１≧ｎ−ｋである。
ｎは、コードワードビット数である。ｋは、データビット数である。（ｎ−ｋ）は、冗長ビット（チェックビット）数である。
ＳＥＣ／ＤＥＤでは、ハミング距離＝４であり、ｌｏｇ２（ｎ）＋２≧ｎ−ｋである。
【０００５】
これは、ＳＥＣ／ＳＥＤに要求されるより１つ多いチェックビットが要求される以前の方程式と類似している。
【０００６】
ほとんどのＳＥＣ／ＤＥＣ用途では、「奇数」の重み付けコード（一般的には奇数重み付きＨｓｉａｏコードとして知られる）のみが用いられ、重み＝２のコードは使用しなくなる。すべての重み付けコードが使用される場合、二重ビット検出を包む方法は、より複雑になる。
【０００７】
しかしながら、これまでのところチェックビットまたはシンドロームの生成に要するパリティ回路の幅を減少させるべく機能するＥＣＣ用途の単一エラー訂正／単一エラー検出（ＳＥＣ／ＳＥＤ）において「超過」または余分なチェックビット冗長を用いる技術は誰も開示していない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
簡潔に言えば、本願明細書中に開示される本発明の技術は、Ｈ−行列における最小重み付けコードの数を増やすべく、冗長チェックビットを追加することにより実施される。本技術は、各チェックビット／シンドロームの生成に用いられるデータビット数を減少させるべく、付加的な訂正／検出能力を追加せずに実施できる。
【０００９】
言い換えれば、本発明の技術は、エラー訂正能力を拡張する目的でなく、パリティ発生回路の幅を減少させるべく、むしろ低い重み付けコード数、特にＳＥＣ／ＳＥＤの重み＝２コード、または、ＳＥＣ／ＤＥＤの重み＝３コードを増加させる余分な冗長チェックビットを利用する。
【００１０】
本願明細書中に開示される技術は、チェックビットおよびシンドロームの生成に用いられるパリティビット幅を減少させるべく、エラー検出／訂正能力の向上がなくてもＨ−行列における最小重み付けコードの数を増加させるよう、追加チェックビットを効果的に用いる。
【００１１】
本発明の技術を実施するに際し実現される効果は、
１）チェックビットの生成およびシンドロームの発生のためのパリティ発生器の幅は、著しく減少し、各チェックビット／シンドロームに必要な排他的ＯＲ回路もより少なくてすむ。
２）チェックビットまたはシンドロームを生成するＸＯＲ「ツリー」の深度を低下させることができる。低下した「ツリー」の深さ（伝搬経路における少ないゲート）が用いられる場合、より速い動作速度が実現することは、パイプライン遅延内における複数の遅延が全体のデバイス性能を制限するクロック用途においては特に重要である。
３）最小重み付けコードのみが用いられるので、各データビットは、少ないパリティ負荷に接続される。
４）追加のチェックビットが含まれても、ＸＯＲゲートの総数は減少する。これによって、一時的なノイズは減少し、所要電力は低下する。
【００１２】
従来技術においては、訂正または検出能力の向上なしにチェックビット数を増加させることは正当化できない。しかしながら、クロック速度の上昇（より高い周波数性能）および増加した周波数で所要電力を抑えることにより、ＥＣＣで用いられるパリティビット幅を減少すべくチェックビットを追加することは、許容可能な解決策となるであろう。
【課題を解決するための手段】
【００１３】
特に本願明細書中に開示されるのは、パリティビット幅を選択する技術であって、チェックビットの生成に必要な第１のチェックビット数と、該第1のチェックビット数に基づくシンドロームとを決定することと、ハミングコードのＨ−行列における最小重み付けコードの数を増加させるべく、第１のチェックビット数より大きい第２のチェックビット数を利用することと、第２のチェックビット数に基づき、チェックビットおよびシンドロームを生成することと、を含む。
【００１４】
同じく本願明細書におけるパリティビット幅を選択する技術は、それ（第1のチェックビット数）に基づいてチェックビットおよびシンドロームを生成するのに要求される第1のチェックビット数を決定することと、第１のチェックビット数に少なくとも１つの追加チェックビットを加えることにより、チェックビットの第２の数を提供し、かつ、多数の低い重み付けハミングコードを増加させることと、を含む。
【００１５】
本願明細書におけるさらなる開示は、エラー訂正回路であって、入力データバスにおいてｋビットの書き込みデータビットを受信する書き込みパリティ発生器と、書き込みパリティ発生器に結合され、ｎ−ｋビットのチェックビット（ｎはコードワードビット数）とｋビットの書き込みデータビットとを入力データバスから受信するメモリと、を含む。読み取りパリティ発生器がメモリに結合され、ｎ−ｋビットの読み取りチェックビットとｋビットの読み取りデータビットとを受信する一方で、該読み取りパリティ発生器にはシンドロームデコーダが結合され、ｎ−ｋビットのシンドロームビットを受信する。シンドロームデコーダにはデータコレクタが結合され、ｋビットの逆ビットおよびｋビットの読み取りデータビットをメモリから受信する。データコレクタは、ｋビットの訂正データを出力データバスにおいて供給する。
【発明を実施するための形態】
【００１６】
図１を参照すると、本発明の技術の典型的なＳＥＣ／ＳＥＤエラー訂正フローの実行１００が示されている。実行１００は、幅Ｄ＜０：ｋ−１＞のデータバスにおいて多数の書き込みデータビット（ｋビット）を受信する。これらのデータビットは、図に示すようなｎ−ｋ個の発生器を含む書き込みパリティ発生器１０２により受信される。
【００１７】
書き込みパリティ発生器１０２は、その後、多数のチェックビット（ｎ−ｋビット）を、データバスＤ＜０：ｋ−１＞に結合されて書き込みパリティ発生器１０２にも供給される書き込みデータを受信するメモリ１０４に供給する。次に、メモリ１０４は、多数の読み取りチェックビット（ｎ−ｋビット）および読み取りデータビット（ｋビット）を同じくｎ−ｋ個の発生器を含む読み取りパリティ発生器１０６へと供給する。読み取りパリティ発生器１０６は、ｋ個のデコーダを含むシンドロームデコーダ１０８にシンドローム（ｎ−ｋビット）を提供する。
【００１８】
シンドロームデコーダ１０８は、ＩＮＶ＜０：ｋ−１＞バスにおけるｋビットの反転データ信号を、ｋ個のコレクタを含むデータコレクタブロック１１０に提供する。データコレクタブロック１１０は、また、メモリ１０４からｋビットの読み取りデータビットを受信する。データコレクタ１１０の出力は、データ出力バスＱ＜０：ｋ−１＞におけるｋビットの訂正データである。
【００１９】
本願明細書において開示される本発明の特定の実施では、「ｎ」はコードワード数であり、「ｋ」はデータビット数であり、「ｎ−ｋ」はチェックビットおよびシンドロームビット数である。書き込みパリティ発生器１０２の幅（または入力数）は、以下により十分に説明されるＨ−行列の行における「１」の最大数である。また、読み取りパリティ発生器１０６の幅は、Ｈ−行列の行における「１」の最大数より１つ大きい。
【００２０】
読み取りには、エラーが生じているかどうかを決定するシンドロームを発生させるべく、格納されたチェックビット値をパリティフィールドに追加させる必要があるので、もう１つビットが必要である。これも以下でさらに十分に説明する。非ゼロのシンドロームはエラーを示し、シンドローム値は、どのビットがフェイルであるかを識別するベクトルであることに注目されたい。コードの重みはＨ−行列の列方向における「１」の数により決定される。
【００２１】
言い換えれば、ハミング重みは、ＧＦ（２）上の多項式における非ゼロ計数の数である。例えば、ｗ（０１１０１０１０）＝４である。２つのワード間のハミング距離は、それらの合計のハミング重みである。例えば、ｄＨａｍｍｉｎｇ＝（０１１０１０１０，１０１０１０００）＝ｗ（１１００００１０）＝３である。２つのビットパターンを比較すると、ハミング距離は、２つのパターンにおいて異なるビットのカウントである。より一般的には、データ項目の２つの番号付きリストが比較される場合、ハミング距離は、完全には一致しない項目数となる。
【００２２】
さらに図２を参照すると、本発明の技術に従うチェックビット数対重み付けコード数の表が示されている。重み＞１のコードの総数は、チェックビット５から１１までを表す行のそれぞれの右端に示されている。
【００２３】
最小重み付けコードの数を増加させることの利点は、この表に関する例により見ることができる。このためには、チェックビット７および８のそれぞれと、それらの対応するコードの重み２から７までおよび２から８までとにより示される行を特に参照する。コードの重み「０」は、「エラーなし」を示す確保されたベクトルであるから利用できず、一方、コードの重み「１」も、「チェックビットエラー」のために確保されたベクトルなので利用できないことに注目されたい。
【００２４】
６４ビットワードでは、ＳＥＣ／ＳＥＤは、７チェックビットを必要とし、この例は、結果として、以下のようになる。
重み＝２のコードの数：２１
重み＝３のコードの数：３５
重み＝４のコードの数：３５
重み＝５のコードの数：２１
重み＝６のコードの数：７
重み＝７のコードの数：１
重み＞１のコードの数の合計：１２０
最小重み付けコードを用いて６４個のベクトルが選択される場合、以下のようになる。
重み＝２のコードの数：２１
重み＝３のコードの数：３５
重み＝４のコードの数：８
上記ベクトルが用いられる場合、必要な最大パリティ幅は、書き込み（チェックビット生成）に対し２６ビット、および、読み取り（シンドローム生成；書き込みに必要なものより１つ多い）に対し２７ビットである。これは、図４Ａおよび４Ｂに関して特に見られ、「１」の最大数は例示されるＨ−行列の各行で２６として示される。
【００２５】
本発明の技術によれば、追加の冗長ビットは、最小重み付けコード（minimum weight codes）の数を増やす目的で追加される。したがって、１つの追加冗長チェックビットが追加されると、８チェックビットが使用されることになる。
【００２６】
前述のごとく、６４ビットワードでは、ＳＥＣ／ＳＥＤは、８チェックビットを用い、この例の結果は以下のようになる。
重み＝２のコードの数：２８
重み＝３のコードの数：５６
重み＝４のコードの数：７０
重み＝５のコードの数：５６
重み＝６のコードの数：２８
重み＝７のコードの数：８
重み＝８のコードの数：１
重み＞１のコードの数の合計：２４７
【００２７】
最小重み付けコードを用いて６４個のベクトルが選択される場合、以下のようになる。
重み＝２のコードの数：２８
重み＝３のコードの数：３６
【００２８】
上記ベクトルが用いられる場合、要求される最大パリティ幅は、書き込み（チェックビット生成）に対し２１ビット、読み取り（シンドローム生成）に対し２２ビットである。これは、特に図５Ａおよび５Ｂに関して見られ、「１」の最大数は、例示されるＨ−行列の各行で２１として示される。したがって、余分なチェックビットを追加した結果、チェックビット生成のためのパリティ幅は、２６／２７（７チェックビット例；書き込み／読み取り）から２１／２２（８チェックビット例；書き込み／読み取り）まで減少する。
【００２９】
さらに図３Ａから３Ｄを参照すると、６、７、８および９チェックビットの最小チェックビット数を用いる３２ビットワードの典型的なＨ−行列が例示されている。特に図３ＡのＨ−行列（Ｃ０からＣ５までの６チェックビットを用いる）に関しては、必要な最大パリティ幅は、書き込み（チェックビット生成）に対し１４ビット、読み取り（シンドローム生成）に対し１５ビットであると見られる。比較して、図３ＢのＨ−行列（Ｃ０からＣ６までの７チェックビットを用いる、すなわち、最小プラス１）に関しては、必要な最大パリティ幅は、書き込みに対し１１ビット、読み取りに対し１２ビットだけであることがわかる。
【００３０】
同様に、特に図３ＣのＨ−行列（Ｃ０からＣ７までの８チェックビットを用いる、すなわち、最小プラス２）に関しては、必要な最大パリティ幅は、書き込みに対し９ビット、読み取りに対し１０ビットだけであることがわかる。さらに、図３ＤのＨ−行列（Ｃ０からＣ８までの９チェックビットを用いる、すなわち最小プラス３）に関しては、必要な最大パリティ幅は、さらに小さく、書き込みに対しては８ビット、読み取りに対しては９ビットであることがわかる。
【００３１】
さらに、図４Ａおよび図４Ｂをまとめて参照すると、７チェックビットの最小チェックビット数を用いる６４ビットワードの追加の典型的なＨ−行列が例示されている。前述のように、このＨ−行列の行における「１」の最大数は、２６であることがわかる。
【００３２】
さらに、図５Ａおよび図５Ｂをまとめて参照すると、８チェックビット（最小プラス１）の最小チェックビット数を用いる６４ビットワードの他の典型的なＨ−行列が例示されている。前述のように、このＨ−行列の行における"１"最大数は、２１であることがわかる。
【００３３】
簡潔に言えば、本願明細書中に開示される本発明の技術は、Ｈ−行列における最小重み付けコード数を増やすべく、冗長チェックビットを追加することにより実行される。本技術は、各チェックビット／シンドロームの生成に用いられるデータビット数を減らすべく、さらなる訂正／検出能力を追加することなく実行できる。
【００３４】
さらに、本願明細書中に開示される例において、ＳＥＣ／ＳＥＤが利用されているが、同じ概念は、マルチエラー訂正を含むより優れたＥＣＣ能力を有するＥＣＣ用途にまで拡張できると理解されたい。追加チェックビットを加えることにより、ＳＥＣ／ＳＥＤでは、重み＝２コードが増加し、ＳＥＣ／ＤＥＤでは、重み＝３コードが増加する。本発明の利点は、追加冗長チェックビットの使用および幅広なシンドロームワードのデコードを限られた経費で実現できる。
【００３５】
これまで特定の例およびＳＥＣ／ＳＥＤ技術と共に本発明の原理を説明してきたが、上述の説明は例示にすぎず、本発明の範囲を限定するものでないことは、明確に理解されよう。特に、前述の開示の教示は、他の変更態様を当業者に示唆するであろう。この種の変更態様は、自体がすでに既知であり、すでに本願明細書において記載されている特徴の代わりにまたはそれに加えて使われることができる他の特徴を含むことができる。本出願において、請求項は、特定の特徴の組み合わせに対し明確に構成されているが、本願明細書中における開示の範囲は、いずれの請求項に目下記載されているような同じ発明に関連しようがしまいが、また、本発明が直面するようないかなる、または、すべての同じ技術的問題を軽減しようがしまいが、当業者にとって明らかであろう明確または暗に開示されるいかなる新規な特徴、あるいは、いかなる新規な特徴の組み合わせ、あるいは、一般化またはその修正も含むと理解されなければならない。出願人は、本出願またはそこから導かれるさらなる出願の手続きの間、このような特徴および／またはこのような特徴の組み合わせに対する新規の請求項を構成する権利をここに保有する。
【００３６】
本願明細書中に使用される用語「含む」「備える」またはそのバリエーションは、特定の要素の詳述を含むプロセス、方法、物品、または、装置などが、必ずしもそれらの要素だけを含むのでなく、明確に列挙されていない、または、そのようなプロセス、方法、物品または装置に本来備わっている他の要素を含み得るよう、非排他的な包含を意図する。本出願におけるいかなる記載も任意の特定の要素、ステップまたは機能が請求項の範囲に含まれるべき必須要素であり、特許される内容の範囲は、許可された請求項によってのみ定義されることを意味すると解釈されるべきでない。さらに、添付の請求項は、「〜のための手段」という明確な言い回しが用いられ、その後に分詞が続くのでない限り、米国特許法第１１２条第６段落の適用は受けないものと意図される。
【図面の簡単な説明】
【００３７】
本発明の上記および他の特徴、目的、およびそれらを得る方法は、添付の図面と共に以下の好適な実施形態の説明を参照することにより明らかになり、本発明自体がより理解されるであろう。
【００３８】
【図１】本発明の技術の典型的なＳＥＣ／ＳＥＤエラー訂正フローの実行である。
【図２】本発明の技術に従う、チェックビット数対重み付けコード数の表である。
【図３Ａ】本発明の技術に従う、６チェックビットの最小チェックビット数を用いる３２ビットワードの典型的なＨ−行列例である。
【図３Ｂ】本発明の技術に従う、７（最小プラス１）チェックビットの最小チェックビット数を用いる３２ビットワードの典型的なＨ−行列例である。
【図３Ｃ】本発明の技術に従う、８（最小プラス２）チェックビットの最小チェックビット数を用いる３２ビットワードの典型的なＨ−行列例である。
【図３Ｄ】本発明の技術に従う、９（最小プラス３）チェックビットの最小チェックビット数を用いる３２ビットワードの典型的なＨ−行列例である。
【図４Ａ】７チェックビットの最小チェックビット数を用いる６４ビットワードのさらなる典型的なＨ−行列例である。
【図４Ｂ】７チェックビットの最小チェックビット数を用いる６４ビットワードのさらなる典型的なＨ−行列例である。
【図５Ａ】本発明の技術に従う、８（最小プラス１）チェックビットの最小チェックビット数を用いる６４ビットワードの他の典型的なＨ−行列例である。
【図５Ｂ】本発明の技術に従う、８（最小プラス１）チェックビットの最小チェックビット数を用いる６４ビットワードの他の典型的なＨ−行列例である。
【図１】
0005485323.tif 000002
【図２】
0005485323.tif 000003
【図３Ａ】
0005485323.tif 000004
【図３Ｂ】
0005485323.tif 000005
【図３Ｃ】
0005485323.tif 000006
【図３Ｄ】
0005485323.tif 000007
【図４Ａ】
0005485323.tif 000008
【図４Ｂ】
0005485323.tif 000009
【図５Ａ】
0005485323.tif 000010
【図５Ｂ】
0005485323.tif 000011