(57)【特許請求の範囲】
【請求項１】
半導体メモリにおいて誤りを検出して訂正する方法であって、
前記メモリをＭ個のメモリブロックに区分けするステップであって、前記Ｍ個のメモリブロックの各々は、誤り訂正符号（ＥＣＣ）の各符号ワード毎にｋ個のデータビットを含むことが可能であり、前記ｋ個のデータビットは、共通のＥＣＣブロックによって生成された複数のＥＣＣビットに関連することからなる、ステップと、
前記Ｍ個のメモリブロックに対してｒ個の誤り訂正符号（ＥＣＣ）ビットを割り当てるステップであって、ｒの値は積Ｍ×ｋと使用されるECC符号のタイプを使用して決定されることからなる、ステップと、
前記ｒ個のＥＣＣビットを前記Ｍ個のメモリブロック間に分散させるステップであって、前記Ｍ個のメモリブロックは、ＥＣＣビットの生成のために、及び、誤り検出と誤り訂正のために、前記共通のＥＣＣブロックを共有することからなる、ステップ
を含む方法。
【請求項２】
複数のメモリユニットを有する半導体メモリとともに動作する共有誤り訂正符号（ＥＣＣ）回路であって、前記複数のメモリユニットの各々が、複数のデータビットを含むことが可能であり、前記共有誤り訂正符号（ＥＣＣ）回路が、
複数のＥＣＣセルであって、各々のＥＣＣセルが、前記複数のメモリユニットの各々に対応する、複数のＥＣＣセルと、
ＥＣＣビットを生成する共通ＥＣＣブロック
とを備え、
前記複数の全てのＥＣＣセルにおけるＥＣＣビットの総数が、前記複数のメモリユニットに格納されたデータビットの総数に関連し、前記ＥＣＣビットが、前記複数のメモリユニット間に分散され、前記複数のメモリユニットが、ＥＣＣビットの生成のために、及び、誤り検出と誤り訂正のために、前記共通ＥＣＣブロックを共有し、前記ＥＣＣビットが、前記複数のメモリユニットにおける複数のビット誤りを訂正することからなる、共有誤り訂正符号（ＥＣＣ）回路。
【請求項３】
複数のメモリユニットを有する半導体メモリとともに動作する共有誤り訂正符号（ＥＣＣ）回路であって、前記複数のメモリユニットの各々が、複数のデータビットを含むことが可能であり、前記共有誤り訂正符号（ＥＣＣ）回路が、
複数のＥＣＣセルであって、各々のＥＣＣセルが、前記複数のメモリユニットの各々に対応する、複数のＥＣＣセルと、
ＥＣＣビットを生成する共通ＥＣＣブロック
とを備え、
前記複数の全てのＥＣＣセルにおけるＥＣＣビットの総数が、前記複数のメモリユニットに格納されたデータビットの総数に関連し、前記ＥＣＣビットが、前記複数のメモリユニット間に分散され、前記複数のメモリユニットが、ＥＣＣビットの生成のために、及び、誤り検出と誤り訂正のために、前記共通ＥＣＣブロックを共有し、前記ＥＣＣビットが、前記複数のメモリユニット間に非対称に分散されることからなる、共有誤り訂正符号（ＥＣＣ）回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体メモリの誤り訂正符号に関する。
【０００２】
【従来の技術】
半導体メモリに誤りがあると、接続されるシステムの動作に影響を及ぼすおそれがある。典型的な誤りは、特定の記憶場所が１つ以上のα粒子に曝される場合に発生し得る。かかる放射により、記憶場所に格納されているデータビットが「１」から「０」にフリップする。
【０００３】
誤り訂正符号（ＥＣＣ）は、コンピュータ半導体メモリサブシステムの信頼性を高め、かつ状態の完全性を高めるために使用される。単一誤りを訂正し、二重誤りを検出するが訂正しない誤り訂正符号が知られている。他のＥＣＣには、多重誤りを検出して訂正するものもある。ＥＣＣを適用する場合には、メモリアレイチップを、チップ内で発生した誤りがＥＣＣによって訂正できるように編成することができる。
【０００４】
単一ビット誤りの訂正および二ビット誤りの検出は、チェックビットを使用することで達成される。典型的なＥＣＣ実施例では、各データワードに多数のチェックビットを添付する。添付されたチェックビットは、ＥＣＣ論理回路により使用されて、データワード内の誤りを検出する。最も単純かつ最も一般的な誤り制御の形態は、パリティビットの使用により実施される。データワードには単一のパリティビットが添付され、０または１に割り当てられて、データワードにおける１の数を偶数のパリティコードの場合には偶数に、奇数のパリティコードの場合には奇数にする。
【０００５】
コンピュータシステムにおいてデータワードを送信する前に、パリティビットの値がデータワードのソースポイントにおいて計算され、データワードに添付される。送信されたデータワードを受信すると、宛先ポイントにおける論理は、パリティビットを再計算し、これを、受信され、すでに添付されているパリティビットと比較する。再計算されたパリティビットと受信されたものが等しくない場合には、ビット誤りが検出される。しかしながら、パリティコードの使用には、ビット誤りを訂正することができないという欠点があり、さらにビット誤りさえ検出できない。たとえば、あるデータビットが０から１に変わり、別のデータビットが１から０に変わる（二ビット誤り）と、データワードのパリティは変化せず、誤りが検出されない。
【０００６】
データワード内のデータビットのサブセットにそれぞれ対応する追加パリティビットをデータワードに添付することによって、パリティビットの概念を、多重ビット誤りの検出を行い、または単一または多重ビット誤りの場所を決定するように拡張することができる。データビット誤りを検出すると、論理回路を用いて、誤りのあるビットを訂正し、単一誤り訂正を行うことができる。
【０００７】
【発明が解決しようとする課題】
周知の誤り訂正符号は、メモリ内に格納されているデータワードに一連のチェックビットを添付するハミングコードである。読み出し動作時、検索されたチェックビットを再計算されたチェックビットと比較して、単一ビット誤りを検出し、かつ位置を決定する（すなわち、訂正する）。より多くのチェックビットを追加し、これらのチェックビットによって表されるデータビットのサブセットを適切にオーバーラップさせることによって、他の誤り訂正符号は、多重誤り訂正および検出を行うことができる。現行のコンピュータシステムは単一誤り訂正および多重誤り検出を組み込んでいることが多いが、誤り符号が必要とするパリティチェックビットは、半導体メモリにおいてスペース（空間）を占有する。このスペースはメモリ動作に使用できない。
【０００８】
【課題を解決するための手段】
メモリ空間の使用は、メモリのいくつかのブロックまたはラインをカバーする誤り訂正符号（ＥＣＣ）ブロックを組み合わせ、メモリブロックすべてに亘ってチェックビットを分布させることによってより効率的になる。特に、ＥＣＣビットのメモリオーバヘッドを低減するために、単一で大きいＥＣＣブロックをいくつかのメモリブロックまたはラインに亘って共有することができる。従来の方法では、４個のメモリブロックそれぞれに７個のＥＣＣビットを格納する必要があった。共有式ＥＣＣの構成では、各メモリブロックまたはラインにわずか２個のＥＣＣビットを格納するだけでよいため、ＥＣＣビットの格納用の領域オーバヘッドが７０パーセント減となる。
【０００９】
【発明の実施の形態】
添付図面を参照して詳細な説明を行う。図において、同じ符号は同様の要素を示している。
【００１０】
誤り訂正符号（ＥＣＣ）回路は、単一ビット誤りを訂正し、かつ二ビット誤りを検出するために半導体メモリ設計において広く使用されている。１つの一般的なＥＣＣ符号はＳＥＣ−ＤＥＤ（単一誤り訂正―二重誤り検出）符号である。他のＥＣＣ符号には、３個以上の誤りを検出し、かつ２個以上の誤りを訂正できるものがある。
【００１１】
ＥＣＣ回路は、特定数のデータビットについて多数のチェックビットを生成し、これらのチェックビットをデータビットとともにメモリに書き込むことによって、その誤りチェック機能を実現する。チェックビットは、以降の読み取り―書き込みサイクルまたは他のメモリアクセス中に使用され、データビットの値が正しいか否かを確認する。ＥＣＣを実施するために必要とされるチェックビットの数は、読み出されているデータビットの数によって決まる。表１に示すように、読み出されているデータビットの数が多くなると、必要とされるＥＣＣビットの数も多くなる。
【００１２】
【表１】
0004071940.tif 000002
【００１３】
現行システムを用いてＥＣＣチェックビットを実装するハードウェアを図１に示す。図１に示すように、誤り訂正符号回路１０は、３０個のデータビットを含むメモリライン１１を備える。メモリライン１１には、ＥＣＣセル１２が関連づけられる。上記の表１を参照して、単一ビット誤り訂正および二ビット誤り検出をメモリライン１１において達成するためには、７個のＥＣＣビットをＥＣＣセル１２に格納する必要がある。ＥＣＣブロック１３は、ＥＣＣビットを生成し、かつ読み出しおよび書き込み動作中にメモリライン１１のデータビットをチェックすることを含む誤り訂正／検出符号に関する動作を行うために使用される。
【００１４】
図１から明らかなように、誤り訂正符号回路１０を使用することは、使用可能なメモリ領域の大きな部分がＥＣＣビット１２の格納に充てられることを意味する。誤り訂正符号回路１０を使用することは、メモリラインが、必要とされる数のＥＣＣビットによってカバーされる最大数より少ない数のデータビットを有する場合に特に非効率的である。たとえば、メモリラインが２７個のデータビットを有する場合、単一誤り訂正および二重誤り検出には、７個のＥＣＣビットが必要となる。メモリラインが５７個のデータビットを有する場合には、同一数のＥＣＣビット（すなわち、７個のＥＣＣビット）で済む。
【００１５】
効率的なメモリ空間の割り当てを改良し、さらに誤り訂正および誤り検出を達成するために、図２に示すような共有（共有式）誤り訂正符号（ＥＣＣ）回路１００が設けられる。ＥＣＣ回路１００は、コンピュータシステムにおける任意のタイプのメモリとともに使用することができる。たとえば、ＥＣＣ回路１００は、キャッシュおよび主メモリとともに使用可能である。ＥＣＣ回路１００は、誤り訂正符号を実装する。以下の説明では、ＳＥＣ−ＤＥＤ符号を参照する。しかしながら、開示した方法および装置は、多重誤り（たとえば、ＤＥＣ−ＴＥＤ符号）を検出および訂正することが可能なＥＣＣ符号に適用することも可能であることは、当業者には明らかであろう。
【００１６】
ＥＣＣ回路１００は、デュアルインラインメモリモジュール（ＤＩＭＭ）カード上に１つ以上のメモリチップとともに設けることができ、例えば、ＡＳＩＣチップ内に実装することができる。ＡＳＩＣチップは、コンピュータシステムのデータバス（図示せず）をメモリチップと相互接続するためのものである。書き込み動作の実行中にデータバスからメモリチップに渡されるデータは、メモリチップに格納される前に、ＥＣＣ回路１００を通過する。同様に、メモリチップからデータバスに渡されるデータもＥＣＣ回路１００を通過する。このように、誤り検出および訂正機構は、データがコンピュータシステムによってメモリチップに格納されるときに、そのデータに対して作用する。図１に関して説明したように、ＥＣＣ回路１００に実装されるＥＣＣ符号は、ＳＥＣ−ＤＥＤ、ＤＥＣ−ＴＥＤ、あるいは、より高機能の誤り訂正符号とすることができる。
【００１７】
図２に示すように、ＥＣＣ回路１００は、メモリウェイ(メモリブロック、メモリユニット、メモリ部分とも記載)１０１および関連するＥＣＣセル１０２を有するメモリを備える。メモリのタイプによっては、メモリウェイ１０１を、ブロックまたはユニットと呼ぶこともできる。ＥＣＣ回路１００が４個のメモリウェイ１０１および４個の対応するＥＣＣセル１０２を有するとして図示されているが、ＥＣＣ回路１００は、これより多いまたは少ないメモリウェイおよび関連するＥＣＣセルを有することもできる。最後に、ＥＣＣ回路１００は、１２０ビットの（共有）ＥＣＣブロック１０３を備える。
【００１８】
図３ａは、チェックビットおよびシンドロームビットを生成するＥＣＣブロック１０３の一部のブロック図である。当該技術分野では既知のことであるが、シンドロームビットは、データ記憶動作中にメモリにデータとともにもともと記憶されているＥＣＣビットと、コンピュータシステムにおいて読み出しコマンド、または任意のメモリアクセス中などに発生する、メモリからフェッチされたデータに基づいて生成される新たな組のＥＣＣビットとの比較の結果である。すなわち、シンドロームビットは、対応する受信されたＥＣＣビットと、新たに生成されたＥＣＣビットとの単なるＸＯＲ（排他的論理和）である。検索されたＥＣＣビットと新たに生成されたＥＣＣビットとの組合せにより任意のゼロでないシンドロームビットが生成された場合には、検索されたデータに誤りがあることが検出されたことになる。
【００１９】
図３ａにおいて、回路１１０は、ＸＯＲツリー１１１とＸＯＲ（ここでは、ビット毎ＸＯＲ）モジュール１１２を備える。書き込み動作においては、ＥＣＣビットが、たとえばパリティチェックマトリクスを使用してデータビットを処理することによって同時に生成される。かかるＥＣＣビットの生成は当該技術分野において周知である。読み取り動作においては、シンドロームビットが、標準的な復号プロセスにしたがって読み出されたデータビットから同時に生成される。図３ａに示すように、同一のＸＯＲツリー１１１を、ＥＣＣビットとシンドロームビットの両方に使用することができる。
【００２０】
図３ｂは、ＥＣＣブロック１０３における誤り訂正および検出機能を実施する回路１２０のブロック図である。図３ｂに示すように、回路１２０は、ゼロでないシンドロームをテストするためのｒウェイＯＲゲート１２３、シンドロームを復号するためのｒウェイＡＮＤゲート１２１、訂正不能エラー（ＵＥ）信号を生成するためのｎウェイＮＯＲゲート１２４、及び、誤りのあるコードビットを反転するためのｎウェイＸＯＲゲート（または、ｎ個の２ウェイＸＯＲゲート）１２２を備える。
【００２１】
図１に示した、３０ビットを有するメモリラインを有し、それぞれのメモリラインが、それぞれ独自のＥＣＣブロックを使用する従来のシステムでは、７個のＥＣＣビットを各メモリラインに格納する必要がある。４つのラインでは、２８個のＥＣＣビットが必要である。図２では、１つのより大きなＥＣＣブロック１０３が、いくつかのメモリウェイ１０１に亘って共有可能である。図では、メモリウェイ１０１は、３０個のデータビットを有している。再び表１を参照すると、合計１２０ビットのデータの場合は、単一誤り訂正および二重誤り検出を実行するのに８個のＥＣＣビットが必要である。したがって、ＥＣＣセル１０２は、それぞれわずか２個のＥＣＣビットを格納するだけでよい。ＥＣＣブロック１０３のサイズは、これに接続されているメモリウェイのサイズによって決まる。各メモリウェイ１０１にわずか２個のＥＣＣビットが格納されるだけなので、メモリに対して７０パーセントの領域オーバヘッドの低減が達成される。
【００２２】
図２では、８個のＥＣＣビットが４個のメモリ部分１０１間に均一に分布している。このようにＥＣＣビットが均一に分布するように、ＥＣＣブロック１０３をプログラムすることができる。代替として、ＥＣＣブロック１０３は、メモリウェイ間に非対称に分布するように必要とされるＥＣＣビットを分割することができ、または、メモリウェイ１０１から分離した記憶場所にＥＣＣビットを格納することもできる。
【００２３】
上述のように、共有ＥＣＣ構成を実施するために、データがメモリに書き込まれるときに、特定数のチェックビットまたはＥＣＣビットが生成され、データビットともに格納される。誤りがないことを確認するために、チェックビットが読み出され、メモリに書き込まれたＥＣＣビットと比較される。（図２に示した例を用いると）ＥＣＣビットは４個のメモリウェイ間で共有されるため、どのメモリアクセス（たとえば、書き込み）においても、ＥＣＣビットを再生成するために、対象とするメモリウェイに関連するデータビットだけでなく、他の３個のメモリウェイに関連するデータビットも読み出す必要がある。
【００２４】
再生成されたＥＣＣビットが使用可能になると、上述したビット比較を完了してシンドロームビットを生成することができる。ゼロでないシンドロームビットは、いずれも、メモリ部分１０１に格納されているデータビットに誤りがあることを示す。
【００２５】
上述のＥＣＣ回路は、単一ビット誤りを訂正すること意図しているが、同様の回路を、二ビットおよびそれ以上の誤りを訂正するように構成することができる。
【００２６】
図４は、（１２８、１２０）ＳＥＣ−ＤＥＤ誤り訂正符号２００を表すマトリクスの一部である。データビットは、ビット０〜１１９で表され、格納されているＥＣＣチェックビットはビット１２０〜１２７で表される。符号２００は、一例として使用したものである。メモリの各ウェイが３０個のデータビット、すなわち、ウェイ０がビット０〜２９、ウェイ１がビット３０〜５９、ウェイ２がビット６０〜８９、ウェイ３がビット９０〜１１９を含んでいるものとする。また、４個のすべてのメモリウェイに格納されているデータはすべてゼロであるとする。以下の生（訂正されていない）データを返す読み出し動作がウェイ０に対して発行される。
10 0000 0000 0000 0000 0000 0000 0000
すなわち、ウェイ０のビット０、すなわち、１２０個のデータビットのビット０にビット誤りがある。
【００２７】
新たに生成されたＥＣＣビットは、
チェックビット０：１
チェックビット１：１
チェックビット２：１
チェックビット３：０
チェックビット４：０
チェックビット５：０
チェックビット６：０
チェックビット７：０
である。
【００２８】
シンドロームは、新たに生成されたＥＣＣビットとすでに格納されているＥＣＣビットとのＸＯＲ（または比較）である。この動作で読み出されたすでに格納済みのチェックビットがすべてゼロであったため、生成されるシンドロームは、シンドロームビット０：１
シンドロームビット１：１
シンドロームビット２：１
シンドロームビット３：０
シンドロームビット４：０
シンドロームビット５：０
シンドロームビット６：０
シンドロームビット７：０
である。
【００２９】
このシンドロームは、図４に示すマトリクスの第０列に対応し、誤りを訂正するために反転（フリップ）されるべきビットを表している。
【００３０】
本明細書中の用語および説明は、単なる例示のために用いたものであってそれらに限定されるものではない。当業者には、特許請求の範囲およびその等価物において規定される本発明の思想および範囲内で多くの変形が可能であり、すべての用語は別記のない限り最も広義の意味にとるべきであることが理解されよう。
【００３１】
本発明の概要を簡単に述べると以下のようになる。共有誤り訂正回路(100)は、半導体メモリの2つ以上のメモリユニット(101)間に一定数のECCビットを分配することによりメモリのオーバーヘッドを低減する。1つのECCブロック(103)が、チェックビットとシンドロームビットを生成するために使用される。ECCブロックは、ECCセル内で使用可能なECCビットの全数を使用することによって各メモリユニット(101)をテストする。従って、メモリのオーバーヘッドは、標準的なECC設計によるものよりも低減される。
【００３２】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
１．半導体メモリにおいて誤りを検出して訂正する方法であって、
前記メモリを、それぞれがｋ個のデータビットを含むことが可能なＭ個のメモリブロック（１０１）に区分け（セグメント化）するステップと、
前記Ｍ個のメモリブロックに対してｒ個の誤り訂正符号（ＥＣＣ）ビットを割り当てるステップ（ただし、ｒの値は積Ｍ×ｋにより決定される）と、
前記ｒ個のＥＣＣビットを前記Ｍ個のメモリブロック間で分割するステップ
を含む方法。
２．前記メモリは、４個のメモリブロック（１０１）に分割され、該４個のメモリブロックは、それぞれ対応するＥＣＣセル（１０２）を含む、上項１の方法。
３．前記ＥＣＣビットは、前記Ｍ個のメモリブロック（１０１）間に等しく分割される、上項１の方法。
４．前記Ｍ個のメモリブロック（１０１）からデータビットを読み出すステップと、
前記Ｍ個のメモリブロックから前記ｒ個のＥＣＣビットを読み出すステップと、
前記ｋ個のデータビットに基づいてＥＣＣビットを再生成するステップと、
前記ｒ個のＥＣＣビットと、前記再生成されたＥＣＣビットとを比較して、単一ビット誤りおよび多重ビット誤りを検出するステップ
をさらに含む、上項１の方法。
５．前記単一ビット誤りを訂正するステップをさらに含む、上項４の方法。
６．ＥＣＣ符号は、二重誤り訂正―三重誤り検出（ＤＥＣ−ＴＥＤ）符号である、上項１の方法。
７．複数のメモリユニット（１０１）を有する半導体メモリとともに動作する共有誤り訂正符号（ＥＣＣ）回路（１００）であって、
前記複数のメモリユニット（１０１）に対応する複数のＥＣＣセル（１０２）と、
ＥＣＣビットを生成する共有ＥＣＣブロック（１０３）であって、前記複数のＥＣＣセルにおけるＥＣＣビットの数が、前記複数のメモリユニット（１０１）に格納されるデータビットの合計数に関連する、共有ＥＣＣブロック
を備える、共有誤り訂正符号（ＥＣＣ）回路。
８．ＥＣＣビットの数は、ＥＣＣセル（１０２）の数とデータビットの数との積に等しい、上項７の共有ＥＣＣ回路。
９．前記ＥＣＣブロック（１０３）は、前記複数のメモリユニット（１０１）における単一ビット誤りを訂正する、上項７の共有ＥＣＣ回路。
１０．前記半導体メモリは、４個のメモリユニット（１０１）と、４個の対応するＥＣＣセル（１０２）とを含む、上項７の共有ＥＣＣ回路。
１１．前記ＥＣＣビットは、前記複数のメモリユニット（１０１）間に等しく格納される、上項７の共有ＥＣＣ回路。
１２．二重誤り訂正―三重誤り検出が可能なＥＣＣコードをさらに備える、上項７の共有ＥＣＣ回路。
１３．前記半導体メモリはキャッシュである、上項７の共有ＥＣＣ回路。
【００３３】
【発明の効果】
本発明によれば、データエラー（データ誤り）を検出ないし訂正するためのエラーチェックビット用のメモリ空間を低減することができる。
【図面の簡単な説明】
【図１】従来技術の誤り訂正符号回路のブロック図である。
【図２】共有誤り訂正符号回路のブロック図である。
【図３ａ】図２の共有誤り訂正符号回路とともに使用される誤り訂正符号ブロックのブロック図である。
【図３ｂ】図２の共有誤り訂正符号回路とともに使用される誤り訂正符号ブロックのブロック図である。
【図４】図２の誤り訂正符号回路とともに使用することが可能なＳＥＣ−ＤＥＤ誤り訂正符号を表すマトリクスの一部を示す。
【符号の説明】
１００  共有ＥＣＣ回路
１０１  メモリブロック
１０２  ＥＣＣセル
１０３  共有ＥＣＣブロック
【図１】
0004071940.tif 000003
【図２】
0004071940.tif 000004
【図３ａ】
0004071940.tif 000005
【図３ｂ】
0004071940.tif 000006
【図４】
0004071940.tif 000007