(57)【要約】【課題】  縮退故障を有するメモリセルに対応するための冗長ビットの符号化および復号化を提供する。【解決手段】  第１の縮退故障を有するメモリセルの第１の部分集合内に記憶するために選択される符号化データビットが、第１の縮退故障の対応するもののデジタル値を有するように、制御回路がデータビットを符号化して１組の第１の冗長ビットおよび符号化データビットを生成する。制御回路は、１組の第１の冗長ビットを符号化して１組の第２の冗長ビットを生成する。第２の縮退故障を有するメモリセルの第２の部分集合内に記憶するために選択される１組の第３の冗長ビット内の冗長ビットが、第２の縮退故障の対応するもののデジタル値を有するように、制御回路が１組の第２の冗長ビットおよび符号化データビットに対して論理関数を実行して１組の第３の冗長ビットを生成する。【選択図】図１
2014078237.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶システムであって、
メモリセルを含むメモリ回路と、
前記メモリセル内に記憶するために与えられるデータビットを受け取るように動作可能な制御回路と、
を含み、
前記制御回路は、第１の縮退故障を有する前記メモリセルの第１の部分集合内に記憶するために選択される符号化データビットが、前記第１の縮退故障の対応するもののデジタル値を有するように、前記データビットを符号化して第１の組の冗長ビットおよび前記符号化データビットを生成するように動作可能であり、
前記制御回路は、前記第１の組の冗長ビットを符号化して第２の組の冗長ビットを生成するように動作可能であり、前記制御回路は、第２の縮退故障を有する前記メモリセルの第２の部分集合内に記憶するために選択される第３の組の冗長ビット内の冗長ビットが、前記第２の縮退故障の対応するもののデジタル値を有するように、前記第２の組の冗長ビットおよび前記符号化データビットに対して論理関数を実行して前記第３の組の冗長ビットを生成するように動作可能である、
データ記憶システム。
【請求項２】
前記制御回路は、前記第２の縮退故障の前記デジタル値および前記第２の縮退故障に対応する前記符号化データビットの部分集合に対して論理関数を実行することにより、仮想縮退故障値を生成するように動作可能であり、前記制御回路は、前記仮想縮退故障値に対応するために、前記第１の組の冗長ビットを符号化して前記第２の組の冗長ビットを生成するように動作可能である、
請求項１に記載のデータ記憶システム。
【請求項３】
前記制御回路が、前記第２の組の冗長ビットおよび前記符号化データビットに対してビット単位のＸＯＲ論理関数を実行して、前記第３の組の冗長ビットを生成するように動作可能である、
請求項１に記載のデータ記憶システム。
【請求項４】
前記制御回路が、前記第３の組の冗長ビットおよび第４の組の冗長ビットに対して論理関数を実行し、前記メモリセルの第３の部分集合内に記憶するための第５の組の冗長ビットを生成するように動作可能である、
請求項１に記載のデータ記憶システム。
【請求項５】
前記制御回路が、前記第３の組の冗長ビットおよび第４の組の冗長ビットに対してビット単位のＸＯＲ論理関数を実行し、前記メモリセルの第３の部分集合内に記憶するための第５の組の冗長ビットを生成するように動作可能であり、前記制御回路が、前記第１の組の冗長ビットを符号化して、前記第２の組の冗長ビットおよび第６の組の冗長ビットを生成するように動作可能であり、前記第４の組の冗長ビットが前記第６の組の冗長ビット、および前記メモリセルの前記第３の部分集合の位置を示すビットを含む、
請求項１に記載のデータ記憶システム。
【請求項６】
前記符号化データビットおよび前記第３の組の冗長ビットが、前記メモリセルの選択されたものの中に記憶するために与えられる、
請求項１に記載のデータ記憶システム。
【請求項７】
前記制御回路が、前記第１の組の冗長ビット、および前記第３の組の冗長ビットを記憶するために選択された前記メモリセルの位置を示すビットを符号化して、前記第２の組の冗長ビットを生成するように動作可能である、
請求項６に記載のデータ記憶システム。
【請求項８】
データ記憶システムであって、
メモリセルを含むメモリ回路と、
前記メモリセルから読み取られた符号化ビットを受け取るように動作可能である制御回路であって、前記符号化ビットは前記メモリセル内の縮退故障に対応する、制御回路と
を含み、
前記制御回路は、前記符号化ビットの第１の組に対してビット単位の論理関数を実行して第１の中間ビットを生成するように動作可能であり、前記制御回路は、前記符号化ビットの第２の組に対してビット単位の論理関数を実行して第２の中間ビットを生成するように動作可能であり、前記第２の組のそれぞれは、前記第１の組のそれぞれよりも多くのビットを有し、
前記制御回路は、前記第１の中間ビットを用いて前記第２の中間ビットを復号して第１の復号ビットを生成するように動作可能であり、前記制御回路は、前記第１の復号ビットを用いて前記符号化ビットの第１の部分集合を復号して復号データビットを生成するように動作可能である、
データ記憶システム。
【請求項９】
前記ビット単位の論理関数が、ビット単位のＸＯＲ論理関数である、
請求項８に記載のデータ記憶システム。
【請求項１０】
前記第１の中間ビットの第１の部分集合は、前記第１の復号ビットを生成するために前記第１の中間ビットの第２の部分集合を用いて復号されない前記第２の中間ビット内のビットの位置を示す、
請求項８に記載のデータ記憶システム。
【請求項１１】
前記第１の復号ビットの第１の部分集合は、前記復号データビットを生成するために復号されない前記符号化ビットの第２の部分集合内のビットの位置を示し、前記符号化ビットの前記第１の部分集合を復号して前記復号データビットを生成するために前記第１の復号ビットの第２の部分集合を使用する、
請求項９に記載のデータ記憶システム。
【請求項１２】
前記第２の組のそれぞれがｂビット有し、ｂはゼロ以外の正の整数であり、前記第１の組のそれぞれがｂ２ビット有する、
請求項８に記載のデータ記憶システム。
【請求項１３】
データ記憶システムによって実行される方法であって、
前記データ記憶システム内のメモリ回路のメモリセル内に記憶するために与えられるデータビットを受け取るステップと、
第１の縮退故障を有する前記メモリセルの第１の部分集合内に記憶するために選択される符号化データビットが、前記第１の縮退故障の対応するもののデジタル値を有するように、前記データビットを符号化して第１の組の冗長ビットおよび前記符号化データビットを生成するステップと、
前記第１の組の冗長ビットを符号化して第２の組の冗長ビットを生成するステップと、
第２の縮退故障を有する前記メモリセルの第２の部分集合内に記憶するために選択される第３の組の冗長ビット内の冗長ビットが、前記第２の縮退故障の対応するもののデジタル値を有するように、前記第２の組の冗長ビットおよび前記符号化データビットに対して論理関数を実行して前記第３の組の冗長ビットを生成するステップと、
を含む方法。
【請求項１４】
前記第２の縮退故障の前記デジタル値および前記第２の縮退故障に対応する前記符号化データビットの部分集合に対して論理関数を実行することにより、仮想縮退故障値を生成するステップをさらに含み、
前記第１の組の冗長ビットを符号化して第２の組の冗長ビットを生成するステップが、前記仮想縮退故障値に対応するために、前記第１の組の冗長ビットを符号化して前記第２の組の冗長ビットを生成するステップを含む、
請求項１３に記載の方法。
【請求項１５】
前記第２の組の冗長ビットおよび前記符号化データビットに対して論理関数を実行して第３の組の冗長ビットを生成するステップが、前記第２の組の冗長ビットおよび前記符号化データビットに対してビット単位のＸＯＲ論理関数を実行して、前記第３の組の冗長ビットを生成するステップを含む、
請求項１３に記載の方法。
【請求項１６】
前記第３の組の冗長ビットおよび第４の組の冗長ビットに対してビット単位のＸＯＲ論理関数を実行し、前記メモリセルの第３の部分集合内に記憶するための第５の組の冗長ビットを生成するステップをさらに含む、
請求項１３に記載の方法。
【請求項１７】
前記第１の組の冗長ビットを符号化して第２の組の冗長ビットを生成するステップが、前記第１の組の冗長ビットを符号化して、前記第２の組の冗長ビットおよび第６の組の冗長ビットを生成するステップを含み、前記第４の組の冗長ビットが前記第６の組の冗長ビット、および前記メモリセルの前記第３の部分集合の位置を示すビットを含む、
請求項１６に記載の方法。
【請求項１８】
前記第１の組の冗長ビットを符号化して第２の組の冗長ビットを生成するステップが、前記第１の組の冗長ビット、および前記第３の組の冗長ビットを記憶するために選択された前記メモリセルの位置を示すビットを符号化して、前記第２の組の冗長ビットを生成するステップを含み、前記方法が制御回路によって実行される、
請求項１３に記載の方法。
【請求項１９】
データ記憶システムによって実行される方法であって、
前記データ記憶システム内のメモリ回路のメモリセルから読み取られた符号化ビットを受け取るステップであって、前記符号化ビットは前記メモリセル内の縮退故障に対応する、受け取るステップと、
前記符号化ビットの第１の組に対してビット単位の論理関数を実行して第１の中間ビットを生成するステップと、
前記符号化ビットの第２の組に対してビット単位の論理関数を実行して第２の中間ビットを生成するステップであって、前記第２の組のそれぞれは前記第１の組のそれぞれよりも多くのビットを有する、第２の中間ビットを生成するステップと、
前記第１の中間ビットを用いて前記第２の中間ビットを復号して第１の復号ビットを生成するステップと、
前記第１の復号ビットを用いて前記符号化ビットの第１の部分集合を復号して復号データビットを生成するステップと、
を含む方法。
【請求項２０】
前記符号化ビットの第１の組および第２の組に対して実行される前記ビット単位の論理関数がビット単位のＸＯＲ論理関数であり、
前記第１の中間ビットの第１の部分集合は、前記第１の復号ビットを生成するために前記第１の中間ビットの第２の部分集合を用いて復号されない前記第２の中間ビット内のビットの位置を示し、
前記第１の復号ビットの第１の部分集合は、前記復号データビットを生成するために復号されない前記符号化ビットの第２の部分集合内のビットの位置を示し、前記符号化ビットの前記第１の部分集合を復号して前記復号データビットを生成するために前記第１の復号ビットの第２の部分集合を使用し、前記方法が制御回路によって実行される、
請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ記憶システムに関し、より詳細には、縮退故障を有するメモリセルに対応するための、冗長ビットの符号化および復号化のための技法に関する。
【背景技術】
【０００２】
多くのデータ通信システムは、データ内の誤りを検出し訂正するために、誤り訂正符号器および復号器を使用する。記憶システムは、データが書込み操作中に伝送され、データが読取操作時に受け取られる、遅延を伴う通信システムとしてしばしば作られる。記憶システムでは、ランダム誤りは、許容オーバヘッドとともに約１×１０−４の率まで訂正することができる。約１×１０−４の誤り率を防ぐために、誤り訂正符号器は、その入力ビットよりも約１０％多いビットを有する符号化ビットを生成することができる。
【０００３】
相変化メモリ（ＰＣＭ）は、不揮発性半導体メモリの類である。ＰＣＭデバイスには、従来の不揮発性フラッシュメモリに勝る多くの利点がある。しかし、ＰＣＭデバイスは、書込みサイクルの劣化によって引き起こされる多数の誤りを発生させることがある。例えば、ＰＣＭデバイスは、数百万サイクルまたは数千万サイクル、サイクル動作させた場合、１×１０−２以上の率で誤りを発生させることがある。
【０００４】
耐久性の限度において、不揮発性メモリデバイスの誤り率は、ランダム誤りによってではなく書込みサイクルの劣化によって左右される。劣化によって引き起こされる誤りは、縮退故障および不安定ビットを含む。これらの２種類の誤りのそれぞれは、データ通信システム内で一般に想定されるランダム誤りおよび対応する誤り訂正手法とは異なる統計を有する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願第１３／６４９，００７号明細書
【特許文献２】米国特許出願第１３／６４９，０７２号明細書
【発明の概要】
【課題を解決するための手段】
【０００６】
一部の実施形態によれば、データ記憶システムが、メモリセルを含むメモリ回路、およびメモリセル内に記憶するために与えられるデータビットを受け取る制御回路を有する。第１の縮退故障を有するメモリセルの第１の部分集合内に記憶するために選択される符号化データビットが、第１の縮退故障の対応するもののデジタル値を有するように、制御回路がデータビットを符号化して１組の第１の冗長ビットおよび符号化データビットを生成する。制御回路は、１組の第１の冗長ビットを符号化して１組の第２の冗長ビットを生成する。第２の縮退故障を有するメモリセルの第２の部分集合内に記憶するために選択される１組の第３の冗長ビット内の冗長ビットが、第２の縮退故障の対応するもののデジタル値を有するように、制御回路が１組の第２の冗長ビットおよび符号化データビットに対して論理関数を実行して１組の第３の冗長ビットを生成する。
【０００７】
他の実施形態によれば、データ記憶システムが、メモリセルを含むメモリ回路、およびメモリセルから読み取られた符号化ビットを受け取る制御回路を有する。符号化ビットは、メモリセル内の縮退故障に対応する。制御回路は、符号化ビットの第１の組に対してビット単位の論理関数を実行して第１の中間ビットを生成する。制御回路は、符号化ビットの第２の組に対してビット単位の論理関数を実行して第２の中間ビットを生成する。第２の組のそれぞれは、第１の組のそれぞれよりも多くのビットを有する。制御回路は、第１の中間ビットを用いて第２の中間ビットを復号して第１の復号ビットを生成する。制御回路は、第１の復号ビットを用いて符号化ビットの第１の部分集合を復号して復号データビットを生成する。
【０００８】
以下の詳細な説明および添付図面を検討することにより、本発明の様々な目的、特徴、および利点が明らかになる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態による、データ記憶システムの一例を示す。
【図２Ａ】本発明の一実施形態による、データビットを符号化して、メモリ回路のメモリセル内に記憶するための符号化データビットおよび符号化冗長ビットを生成するための操作の例を示す流れ図である。
【図２Ｂ】本発明の一実施形態による、メモリ回路のメモリセルから読み取られた符号化ビットを復号して、復号データビットを生成するための操作の例を示す流れ図である。
【図３Ａ】本発明の一実施形態による、データビットを符号化して、メモリセル内の縮退故障に対応する符号化ビットを生成するための操作の例を示す。
【図３Ｂ】本発明の一実施形態による、データビットを符号化して、メモリセル内の縮退故障に対応する符号化ビットを生成するための操作の例を示す。
【図４】本発明の一実施形態による、符号化ビットを復号してデータビットを再生成するための操作の例を示す。
【図５Ａ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【図５Ｂ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【図５Ｃ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【図５Ｄ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【図５Ｅ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【図５Ｆ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【図５Ｇ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【図５Ｈ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【図５Ｉ】本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して説明する符号化操作の例を示す。
【発明を実施するための形態】
【００１０】
一部の実施形態によれば、メモリ回路のメモリセル内に記憶するためにデータビットが与えられる。メモリ回路のメモリセルの１つまたは複数が、縮退故障を含む場合がある。符号器がデータビットを符号化して、符号化データビットおよび冗長ビットを生成する。冗長ビットが縮退故障を有するメモリ回路のメモリセルに対応する場合、符号器は冗長ビットを符号化して符号化冗長ビットを生成する。符号化データビットおよび符号化冗長ビットは、メモリ回路のメモリセル内に記憶される。符号化データビットおよび符号化冗長ビットは、縮退故障を有するメモリ回路内のメモリセルに対応する。メモリ回路は、例えば縮退故障を有する（例えばカルコゲナイドガラスを用いた）相変化メモリ回路や別の種類のメモリ回路とすることができる。
【００１１】
縮退故障を有するメモリセルとは、単一のデジタル値しか記憶できないメモリセルである。１の縮退故障値を有するメモリセルは論理ハイのデジタル値しか記憶できず、０の縮退故障値を有するメモリセルは論理ローのデジタル値しか記憶できない。したがって、１の縮退故障値を有するメモリセルからは論理ハイのデジタル値しか読み取ることができず（すなわち１の状態が続き）、０の縮退故障値を有するメモリセルからは論理ローのデジタル値しか読み取ることができない（すなわち０の状態が続く）。縮退故障を有するメモリセルは、経時的に変わらない縮退故障値を概して有する。
【００１２】
メモリ回路内のメモリセルの一部が縮退故障を有する場合、縮退故障のデジタル値および縮退故障を有するメモリセルのアドレスが符号化プロセスの前に求められ、符号器に与えられる。符号器は、そのデジタル値および縮退故障のアドレスを用いて符号化データビットおよび符号化冗長ビットを生成する。符号化データビットおよび符号化冗長ビットは、メモリ回路のメモリセル内に記憶される。
【００１３】
その後、符号化データビットおよび符号化冗長ビットがメモリセルから読み取られ、復号器に与えられる。復号器は、符号化冗長ビットを復号し、その復号冗長ビットを用いて符号化データビットを復号してデータビットを再生成する。復号器によって再生成されるデータビットは、メモリ回路内の既知の縮退故障によって引き起こされる誤りを含まない。
【００１４】
本明細書に記載する技法は、マルチレベルメモリセルに直接適用することができる。マルチレベルメモリセルは、１メモリセル当たり複数のビットを記憶することができる。例えば、メモリセルが２ビット保持して動けなくなる場合、それらの２ビットの値は固定され、それらを２つの別個の縮退故障位置として扱うことができる。縮退故障の一方の位置が分かっているので、他方の縮退故障の位置も分かる。その結果、同じ縮退故障誤り率について、マルチレベルメモリセルでは、単一レベルメモリセルで生成される冗長ビットよりも少ない冗長ビットが生成され得る。冗長ビットの数は、例えば１メモリセル当たりのビット数に等しいだけ少ないものとすることができる。
【００１５】
図１は、本発明の一実施形態による、データ記憶システム１００の一例を示す。データ記憶システム１００は、制御回路１０１、メモリ回路１０２、およびメモリ回路１０３を含む。制御回路１０１は、例えばメモリコントローラ回路、プロセッサ回路、またはメモリ回路１０２−１０３内に記憶するためにデータビットを符号化しかつ／または復号する他の任意の種類の制御回路とすることができる。制御回路１０１は、メモリ回路１０２−１０３の一方または両方に符号化データビットおよび符号化冗長ビットを与える。符号化データビットおよび符号化冗長ビットは、メモリ回路１０２−１０３の一方または両方の中に記憶される。読取操作中、符号化データビットおよび符号化冗長ビットがメモリ回路から読み取られ、制御回路１０１に与えられる。符号化データビットおよび符号化冗長ビットは、１つまたは複数のオンチップもしくは外部バスにより、または他の種類の信号線により、制御回路１０１とメモリ回路１０２−１０３との間で伝送される。
【００１６】
制御回路１０１、メモリ回路１０２、およびメモリ回路１０３は、同じ集積回路内にあっても別々の集積回路内にあってもよい。したがってシステム１００は、回路１０１−１０３を含む単一の集積回路デバイスとすることができる。あるいは、システム１００は、３つの別個の集積回路デバイス１０１−１０３を含んでもよい。
【００１７】
図２Ａは、本発明の一実施形態による、データビットを符号化して、メモリ回路のメモリセル内に記憶するための符号化データビットおよび符号化冗長ビットを生成するための操作の例を示す流れ図である。メモリ回路内のメモリセルのそれぞれは、少なくとも１つのデジタル値を記憶する。メモリセルの１つまたは複数が縮退故障を有する。図２Ａの操作によって生成される符号化データビットおよび符号化冗長ビットが、データビットの代わりにメモリセル内に記憶される。図２Ａの操作は、例えば制御回路１０１内の符号器によって実行され得る。
【００１８】
最初に、符号器が、メモリ回路のメモリセル内に記憶するために与えられるデータビットを受け取る。データビットのそれぞれは、メモリ回路の対応するメモリセル内に記憶するために与えられる。データビットの１つまたは複数が、既知の縮退故障を有する対応するメモリセル内に記憶するために与えられる。縮退故障を有するメモリセルのアドレスおよび縮退故障のデジタル値が、図２Ａの操作を実行する前に符号器に与えられる。
【００１９】
操作２０１で、縮退故障を有するメモリセルの１つの中に記憶する符号化データビットのそれぞれが、その縮退故障のデジタル値を有するように、符号器がデータビットを符号化して１組の第１の冗長ビットおよび符号化データビットを生成する。操作２０２で、符号器が１組の第１の冗長ビットを符号化して１組の第２の冗長ビットを生成する。
【００２０】
操作２０３で、縮退故障を有するメモリセルの１つの中に記憶する１組の第３の冗長ビット内の各冗長ビットが、その縮退故障のデジタル値を有するように、符号器が１組の第２の冗長ビットおよび符号化データビットに対して論理関数を実行して１組の第３の冗長ビットを生成する。符号化データビットおよび１組の第３の冗長ビットは、メモリセルの少なくとも一部の中に記憶される。
【００２１】
図２Ｂは、本発明の一実施形態による、メモリ回路のメモリセルから読み取られた符号化ビットを復号して、復号データビットを生成するための操作の例を示す流れ図である。メモリ回路内のメモリセルのそれぞれは、少なくとも１つのデジタル値を記憶する。メモリセルの１つまたは複数が縮退故障を有する。図２Ｂの操作は、例えば制御回路１０１内の復号器によって実行され得る。縮退故障を有するメモリセルのアドレスおよび縮退故障のデジタル値は、図２Ｂの操作を実行する前は復号器によって知られていない。
【００２２】
操作２１１で、復号器がメモリセルから読み取られた符号化ビットを受け取る。符号化ビットは、メモリセル内の縮退故障に対応する。操作２１２で、復号器が、符号化ビットの第１の組に対してビット単位の論理関数を実行して第１の中間ビットを生成する。操作２１３で、復号器は、符号化ビットの第２の組に対してビット単位の論理関数を実行して第２の中間ビットを生成する。第２の組のそれぞれは、第１の組のそれぞれよりも多くのビットを有する。操作２１４で、復号器が、第１の中間ビットを用いて第２の中間ビットを復号し、第１の復号ビットを生成する。操作２１５で、復号器が、第１の復号ビットを用いて符号化ビットの第１の部分集合を復号し、復号データビットを生成する。
【００２３】
図３Ａ−３Ｂは、本発明の一実施形態による、データビットを符号化して、メモリセル内の縮退故障に対応する符号化ビットを生成するための操作の例を示す。図３Ａ−３Ｂの操作を実行する前に、縮退故障を有するメモリセルのアドレスおよび縮退故障のデジタル値が符号器に与えられる。符号化ビットは、メモリセル内に記憶される。縮退故障を有するメモリセル内に記憶される符号化ビットは、それらのメモリセルの対応するものの縮退故障と同じデジタル値を有する。
【００２４】
本明細書で論じる符号器は、例えば制御回路１０１によって実装することができる。符号器は、符号化データビットおよび冗長ビットを生成するために、対応するメモリセルの縮退故障のデジタル値に一致しないデータビットのデジタル値を調節できる符号化技法を使用する。以下で論じるように、符号化データビットを復号してデータビットを再生成するために、冗長ビットが復号器によって使用される。縮退故障を有するメモリセルに対応する符号化データビットおよび冗長ビットを生成する符号化技法、および冗長ビットを用いて符号化データビットを復号するための技法の例が、同一出願人による（特許文献１）、および（特許文献２）の中で開示されており、その両方が２０１２年１０月１０日に出願されており、そのいずれも参照によりその全体を本明細書に援用する。以下で論じるように、一部の実施形態によれば、これらの特許出願の中で開示されている符号化および復号化技法は、本明細書に提示する技法とともに使用することができる。
【００２５】
操作３０１で、本明細書に記載の技法に従って生成される符号化データビットおよび冗長ビットを記憶するのに十分なメモリセルを有する、メモリセルのブロックＢｉ内に記憶するために与えられるデータビットを符号器が受け取る。パラメータ「ｉ」は正の整数であり、操作３０１では１に等しい。したがって、操作３０１ではブロックＢｉはブロックＢ１に等しい。操作３０２で、符号器がメモリセルのブロックＢｉを「ｂ」の数のセグメントに分け、各セグメントは同数のメモリセルをそれぞれ有する。パラメータ「ｂ」は正の整数であり、データビットの数Ｄと、選択された符号化技法を使ってデータビットのために符号器によって生成される冗長ビットの数Ｒとの間の比率に基づく。一例として、ｂ≦Ｄ／Ｒが成立する。操作３０２−３０３の最初の反復では、ブロックＢｉはブロックＢ１である。
【００２６】
操作３０３では、符号器が、操作３０２で生成された「ｂ」の数のセグメントの中から、最も少ない数の縮退故障を有するブロックＢｉ内のセグメントをブロックＢｉ＋１として選択する。また操作３０３では、符号器がブロックＢｉ内のブロックＢｉ＋１の位置を示すｌｏｇ２ｂビットを生成する。ブロックＢｉの２つ以上のセグメントが最も少ない数の縮退故障を有する場合、操作３０３で、符号器がそれらのセグメントの１つを選択する。操作３０３の最初の反復では、符号器が、最も少ない数の縮退故障を有するブロックＢ１内のセグメントをブロックＢ２として選択する。
【００２７】
判定操作３０４では、ブロックＢｉ＋１が１つまたは０の縮退故障を有するかどうかを符号器が判定する。ブロックＢｉ＋１が１つまたは０の縮退故障を有する場合、図３Ａ−３Ｂのプロセスは操作３０６に進む。ブロックＢｉ＋１が複数の縮退故障を有する場合、図３Ａ−３Ｂのプロセスは操作３０５に進む。操作３０５では、符号器がパラメータｉに１追加する。次いで、符号器が操作３０２−３０４を繰り返す。操作３０２−３０４の２回目の反復では、ブロックＢｉはブロックＢ２であり、ブロックＢｉ＋１はブロックＢ３である。ブロックＢｉ＋１が１つまたは０の縮退故障しか有さなくなるまで、符号器は操作３０２−３０５の反復を実行し続ける。このプロセスは、遅くともブロックＢｉ＋１内のビット数が、データビットにおける縮退ビット誤り率（ｓｔｕｃｋ−ａｔ  ｂｉｔ  ｅｒｒｏｒ  ｒａｔｅ）の逆数に等しいとき終了する。符号器は、以下のように符号化データビットを復号するために復号器によって使用される冗長ビットを記憶するための、１つまたは複数のブロックを操作３０２−３０５で生成する。
【００２８】
操作３０６で、ブロックＢ１のメモリセル内のいかなる縮退故障にも符号化データビットに対応させる符号化技法を使い、符号器がデータビットを符号化し、最も大きいブロックＢ１のインデックスビット、および最も大きいブロックＢ１のメモリセル内に記憶するための符号化データビットを生成する。操作３０６で使用する符号化技法は、例えば(特許文献１）、および(特許文献２）の中で開示されている符号化技法のうちの１つとすることができる。インデックスビットとは、符号化データビットを復号してデータビットを再生成するために復号器によって使用される冗長ビットである。操作３０６の後、このプロセスは操作３０９に続く。操作３０９−３１６を図３Ｂに示す。
【００２９】
操作３０９で、符号器がパラメータｉを１にリセットする。操作３１０で、符号器が、ブロックＢｉ＋１内の縮退故障値およびブロックＢｉ内に記憶される対応する符号化ビットに対してビット単位のＸＯＲ関数を実行することにより、ブロックＢｉ＋１の仮想縮退故障値を生成する。ビット単位のＸＯＲ関数とは、同じ長さの２つのビットパターンを取り、対応するビットの各対に対して論理的な排他的ＯＲ演算を実行する論理関数である。第１のビットだけが１である場合、または第２のビットだけが１である場合、各位置の結果は１である。両方のビットが０である場合、または両方のビットが１である場合、結果は０である。操作３１０の最初の反復では、ブロックＢｉ内に記憶される符号化ビットは、操作３０６で生成された符号化データビットである。
【００３０】
限定的であることを意図しない操作３１０の一例として、ｉは１に等しく、ブロックＢ２は８メモリセル有し、ブロックＢ２内の３番目と７番目のメモリセルが縮退故障を有する。この例では、ブロックＢ２内の３番目のメモリセルの縮退故障値、および操作３０６で生成されたブロックＢ１内に記憶される符号化データビットのうちの８ビットの各組の中の対応する３番目の各符号化データビットに対してＸＯＲ関数を実行して、第１の仮想縮退故障値を生成する。さらに、ブロックＢ２内の７番目のメモリセルの縮退故障値、および操作３０６で生成されたブロックＢ１内に記憶される符号化データビットのうちの８ビットの各組の中の対応する７番目の各符号化データビットに対してＸＯＲ関数を実行して、第２の仮想縮退故障値を生成する。
【００３１】
操作３１１で、縮退故障を有するメモリセルに対応する符号化技法を使い、符号器がブロックＢｉ内のブロックＢｉ＋１の位置を示すｌｏｇ２ｂビットおよびブロックＢｉのインデックスビットを符号化し、ブロックＢｉ＋１の対応する仮想縮退故障値およびブロックＢｉ＋１のインデックスビットに一致する符号化ビットを生成する。操作３１１で使用する符号化技法は、例えば操作３０６で使用するのと同じ符号化技法でもよい。操作３１１で生成される符号化ビットは、操作３１０で生成されるブロックＢｉ＋１の対応する仮想縮退故障値に一致する。
【００３２】
操作３１２で、符号器が、ブロックＢ１−Ｂｉのメモリセル内に記憶するためのビットおよびブロックＢｉ＋１の符号化ビットに対してビット単位のＸＯＲ関数を実行し、ブロックＢｉ＋１のメモリセル内に記憶するためのビットを生成する。操作３１２の最初の反復では、ブロックＢ１−Ｂｉのメモリセル内に記憶するためのビットは、操作３０６で生成された符号化データビットである。操作３１２のその後の反復では、ブロックＢ１−Ｂｉのメモリセル内に記憶するためのビットは、操作３１２の先行する全ての反復において生成されたビットおよび操作３０６で生成された符号化データビットである。操作３１２の各反復では、ブロックＢｉ＋１の符号化ビットは、先行する操作３１１の反復で生成される。
【００３３】
操作３１２で、ブロックＢｉのメモリセル内に記憶するビットをビットの組Ｓｉに分け、その結果、組Ｓｉのそれぞれの中のビット数がブロックＢｉ＋１内のメモリセルの数に等しくなる。次いで、ビットの組Ｓｉの２つに対してビット単位のＸＯＲ関数を実行して、第１のＸＯＲ結果を生成する。３つ以上のビットの組Ｓｉがある場合、第１のＸＯＲ結果および３つ目のビットの組Ｓｉに対してビット単位のＸＯＲ関数を実行して、第２のＸＯＲ結果を生成する。さらなるビットの組Ｓｉがなくなるまで、次のＸＯＲ結果を生成するために、前に生成されたＸＯＲ結果および追加の各ビットの組Ｓｉに対してビット単位のＸＯＲ関数を実行し続ける。
【００３４】
操作３１２で、ビットの組Ｓｉから生成された最後のＸＯＲ結果およびブロックＢｉ＋１の符号化ビットに対して最終的なビット単位のＸＯＲ関数を実行し、ブロックＢｉ＋１の対応するメモリセル内に記憶するためのビットを生成する。ブロックＢｉ＋２のビット位置に対応するビットに対し、操作３１２では最終的なビット単位のＸＯＲ関数は実行されない。操作３１２では、ブロックＢｉ＋２のメモリセル内に記憶するためのビットはまだ生成されていない。操作３１２の最終的なビット単位のＸＯＲ関数の最終的なＸＯＲ結果は、ブロックＢｉ＋１の対応するメモリセル内に記憶するためのビット、およびビットの組Ｓｉから生成された最後のＸＯＲ結果内のブロックＢｉ＋２のビット位置に対応するビットを含む。操作３１２の最後の反復の最終的なビット単位のＸＯＲ関数の最終的なＸＯＲ結果は、以下のように操作３１５で使用する。
【００３５】
判定操作３１３では、ブロックＢｉ＋２が、操作３０２−３０５の反復で生成された最も小さいメモリセルのブロックかどうかを符号器が判定する。ブロックＢｉ＋２が、操作３０２−３０５の反復で生成された最も小さいメモリセルのブロックでない場合、符号器は操作３１４に進む。操作３１４では、符号器がパラメータｉに１追加する。次いで、符号器が操作３１０−３１３のさらなる反復を実行する。操作３０２−３０５の反復で生成された最も小さいメモリセルのブロックにブロックＢｉ＋２が等しくなるまで、符号器は操作３１０−３１４の反復を実行し続ける。
【００３６】
操作３１３において、ブロックＢｉ＋２が、操作３０２−３０５の反復で生成された最も小さいメモリセルのブロックである場合、符号器は操作３１５に進む。操作３１５で、符号器は、操作３１２の最後の反復で生成された最終的なＸＯＲ結果のｂビットの組、およびブロックＢｉ＋１のインデックスビットと組み合わせられたブロックＢｉ＋１内のブロックＢｉ＋２の位置を示すｌｏｇ２ｂビットに対してビット単位のＸＯＲ論理関数を実行し、ブロックＢｉ＋２のメモリセル内に記憶するためのビットを生成する。
【００３７】
操作３１５で、ビットの組ＳＦのそれぞれの中のビット数がｂに等しくなるように、操作３１２の最後の反復で生成された最終的なＸＯＲ結果のビットをビットの組ＳＦに分ける。次いで、ビットの組ＳＦの２つに対してビット単位のＸＯＲ関数を実行して、第１のＸＯＲ結果を生成する。３つ以上のビットの組ＳＦがある場合、第１のＸＯＲ結果および３つ目のビットの組ＳＦに対してビット単位のＸＯＲ関数を実行して、第２のＸＯＲ結果を生成する。さらなるビットの組ＳＦがなくなるまで、次のＸＯＲ結果を生成するために、前に生成されたＸＯＲ結果および追加の各ビットの組ＳＦに対してビット単位のＸＯＲ関数を実行し続ける。操作３１５で、ビットの組ＳＦから生成された最後のＸＯＲ結果、およびブロックＢｉ＋１のインデックスビットと組み合わせられたブロックＢｉ＋１内のブロックＢｉ＋２の位置を示すｌｏｇ２ｂビットに対して最終的なビット単位のＸＯＲ関数を実行し、ブロックＢｉ＋２のメモリセル内に記憶するためのビットを生成する。
【００３８】
ブロックＢｉ＋２が１つの縮退故障を有する場合、縮退故障を有するブロックＢｉ＋２のメモリセル内に記憶されるいかなるビットも、その縮退故障のデジタル値に一致しなければならない。ブロックＢｉ＋２が、ｐビットおよびちょうど１つの縮退故障を含む場合、以下のようにｐ−１のビット数を記憶することができる。最初のビットは、残りのｐ−１ビットを反転させるべきかどうか示すように指定される。最初のビットが０のデジタル値を有する場合、残りのｐ−１ビットをそのまま読み取る。最初のビットが１のデジタル値を有する場合、残りのｐ−１ビットを反転させる。縮退故障は、ブロックＢｉ＋２の最初のビットの位置、または残りのｐ−１ビットの位置の１つにあることができる。縮退故障が最初のビットの位置にある場合、その値は、残りのｐ−１ビット内にデータがどのように記憶されているのか（すなわち反転されているかいないか）を示す。縮退故障が、最初の位置以外の残りのｐ−１ビットの位置のうちの１つにある場合、縮退故障値が、そのビット位置に記憶されるべきデータビットと同じデジタル値を有するかどうかを判定するために縮退故障値を確認する。縮退故障値が同じデジタル値を有する場合、最初のビットを０に設定し、残りのｐ−１ビットの位置にデータをそのまま書き込む。縮退故障値が逆のデジタル値を有する場合、最初のビットを１に設定し、反転させたデータビットの値を残りのｐ−１ビットの位置に記憶する。
【００３９】
操作３１６で、操作３０６で生成した符号化データビット、操作３１２の各反復で生成したビット、および操作３１５で生成したビットをメモリ回路の対応するメモリセル内に記憶する。
【００４０】
図４は、本発明の一実施形態による、符号化ビットを復号してデータビットを再生成するための操作の例を示す。符号化ビットがメモリ回路のメモリセルから読み取られ、復号器に与えられる。復号器は、例えば制御回路１０１によって実装することができる。
【００４１】
最初に、復号器がメモリ回路のメモリセルから符号化ビットを受け取る。操作４０１で、組ＳＤのそれぞれが「ｂ」の数のビットであって、それらのビット位置に応じて連続している、「ｂ」の数のビットを有するように、復号器が符号化ビットを組ＳＤに分ける。パラメータ「ｂ」は、符号化ビットを生成するための符号化中に使用されたのと同じ値を有する。パラメータ「ｂ」は、符号化ビットを復号する前に復号器に与えられる。次いで操作４０１で、復号器が、ビットの組ＳＤに対してビット単位のＸＯＲ関数を実行し、ｂビット有するＸＯＲ結果を生成する。
【００４２】
操作４０２では、パラメータ「ｎ」は、操作３０２−３０５の反復で生成された最も小さいメモリセルのブロックの数Ｂｎを示す。操作４０２で、復号器が、操作４０１のＸＯＲ結果内の第１のｌｏｇ２ｂビットに基づき、ブロックＢｎ−１内の最も小さいブロックＢｎの位置を特定する。操作４０１のＸＯＲ結果内の残りのビットは、ブロックＢｎ−１のインデックスビットである。
【００４３】
操作４０３で、復号器が、メモリセルから受け取ったｂｊ＋１の符号化ビットの組に対してビット単位のＸＯＲ関数を実行してＸＯＲ結果を生成する。操作４０３で、組ＳＧのそれぞれがｂｊ＋１の数のビットであって、それらのビット位置に応じて連続している、ｂｊ＋１の数のビットを有するように、復号器が符号化ビットを組ＳＧに分ける。次いで、復号器が、ビットの組ＳＧに対してビット単位のＸＯＲ関数を実行し、ｂｊ＋１ビット有するＸＯＲ結果を生成する。操作４０３の最初の反復では、パラメータｊは１に等しい。
【００４４】
操作４０４で、復号器がブロックＢｎ−１のインデックスビットを用いて、ブロックＢｎ−１内のブロックＢｎのビット位置に対応するビットを除いて操作４０３のＸＯＲ結果を復号し、復号技法を使ってブロックＢｎ−１の復号ビットを生成する。操作４０４の最初の反復では、ブロックＢｎ−１のインデックスビットは操作４０２で特定され、ブロックＢｎ−１内のブロックＢｎのビット位置は操作４０２で特定される。操作４０４のその後の反復では、ブロックＢｎ−１のインデックスビットは、先行する操作４０４−４０５の反復内で生成および特定され、ブロックＢｎ−１内のブロックＢｎのビット位置は先行する操作４０５の反復内で特定される。操作４０４で使用する復号技法は、メモリセル内のいかなる縮退故障にも対応する操作３１１の符号化技法で用いられる符号化操作の逆を行う。操作４０４で使用する復号技法は、例えば（特許文献１）、および（特許文献２）の中で開示されている復号技法のうちの１つとすることができる。
【００４５】
操作４０５で、先行する操作４０４の反復で生成されたブロックＢｎ−１の復号ビット内の第１のｌｏｇ２ｂビットに基づき、復号器が、ブロックＢｎ−２内のブロックＢｎ−１の位置（および対応するビット位置）を特定する。先行する操作４０４の反復で生成されたブロックＢｎ−１の残りの復号ビットは、ブロックＢｎ−２のインデックスビットである。
【００４６】
判定操作４０６では、ブロックＢｎ−２が、メモリセルから読み取られる符号化ビットの全てを含むかどうか復号器が判定する。ブロックＢｎ−２がメモリセルから読み取られる符号化ビットの全てを含まない場合、復号器は操作４０７に進む。操作４０７では、復号器がパラメータｎから１減算し、パラメータｊに１追加する。次いで復号器は、操作４０３−４０６の２回目の反復を行う。ブロックＢｎ−２が最も大きいブロックＢ１と等しくなるまで、復号器は操作４０３−４０７の反復を実行し続ける。
【００４７】
判定操作４０６において、ブロックＢｎ−２がメモリセルから読み取られる符号化ビットの全てを含む（すなわちブロックＢｎ−２が最も大きいブロックＢ１と等しい）場合、復号器は操作４０８に進む。操作４０８で、復号器がブロックＢ１内の符号化データビットを復号するために、ブロックＢ２の残りの復号ビットをインデックスビットとして用いて、復号技法を使ってデータビットを再生成する。操作４０８では、ブロックＢ２の残りの復号ビットは先行する操作４０５の反復で生成され、ブロックＢ１内の符号化データビットは、ブロックＢ１内のまだ復号されていない残りの符号化ビットである。操作４０８で使用する復号技法は、操作３０６の符号化技法で用いる符号化操作の逆を行う。操作４０８の復号技法は、操作４０４で使用される復号技法と同じであり得る。
【００４８】
図５Ａ−５Ｉは、本発明の実施形態による、図３Ａ−３Ｂ内に図示し、それらの図面に関して上述した符号化操作の例を示す。図５Ａ−５Ｉに関して本明細書に図示し説明する例は、解説目的で開示するに過ぎず、限定的であることを意図しない。
【００４９】
図５Ａ−５Ｂは、６４個の例示的なメモリセルの組を示す。この６４個のメモリセルは、図５Ａ−５Ｂ内に６４個の四角形として示す。図５Ａ−５Ｂに示す６４個のメモリセルのうち、１５個が縮退故障を有する。図５Ａの四角形の上の垂線は、４、８、および１６メモリセルのセグメントを線引きする。０でラベル付けしたメモリセルは０に縮退しており、１でラベル付けしたメモリセルは１に縮退している。図５Ａ−５Ｂに示すメモリセルのうち９個が１の縮退故障を有し、図５Ａ−５Ｂに示すメモリセルのうち６個が０の縮退故障を有する。
【００５０】
図５Ｂは、図３Ａに示した符号化操作３０２−３０５中に、この６４個のメモリセルを３つのブロックＢ１、Ｂ２、およびＢ３にどのように分けることができるのかについての一例を示す。最も大きいブロックＢ１は、全６４個のメモリセル含む。ブロックＢ１は、ブロックＢ２およびそれぞれ１６メモリセル有する３つのサブブロックＢ１Ａ、Ｂ１Ｂ、およびＢ１Ｃを含む。ブロックＢ２は、４メモリセル有するブロックＢ３を含む。ブロックＢ２は、縮退故障を有する３つのメモリセルを有する。ブロックＢ３は、縮退故障を有さない。
【００５１】
図５Ｃは、図５Ａに示すメモリセル内に記憶するために与えられる４８個のデータビットのデジタル値を示す。ブロックＢ２のメモリセルは、図３Ａ−３Ｂに関して本明細書に記載した技法に従って冗長ビットを記憶するために確保される。したがって、図５Ｃに示す４８個のデータビットが、サブブロックＢ１Ａ、Ｂ１Ｂ、およびＢ１Ｃ内の４８個の対応するメモリセル内に記憶するために与えられる。
【００５２】
操作３０６で、符号器が４８個のデータビットを符号化して、例えば図５Ｄに示すように４８個の符号化データビットおよび１０個のインデックスビットを生成する。図５Ｄに示す４８個の符号化データビットおよび１０個のインデックスビットは一例として与える任意の値であり、ある特定の符号化技法によって生成されるものではない。４８個の符号化データビットのそれぞれは、図５Ｄ内のその符号化データビットの真上にあるサブブロックＢ１Ａ−Ｂ１Ｃの４８個のメモリセルの対応するメモリセル内に記憶される。図５Ｄ内でＳによってそれぞれ示す符号化データビットは、サブブロックＢ１Ａ−Ｂ１Ｃのそれらの対応するメモリセルの縮退故障と同じデジタル値を有する。したがって、図５Ｄに示す４８個の符号化データビットは、これらの４８個のメモリセル内の１２個の分かっている縮退故障によって引き起こされる誤りなしに、サブブロックＢ１Ａ−Ｂ１Ｃの４８個のメモリセル内に記憶し、サブブロックＢ１Ａ−Ｂ１Ｃの４８個のメモリセルから読み取ることができる。
【００５３】
図５Ａ−５Ｉの例では、ｂは４に等しく、ｌｏｇ２ｂは２に等しい。図５Ｄは、ブロックＢ１内の１６ビットの３番目のセグメントとしてブロックＢ２の位置を示す、２個のバイナリ位置ビットのデジタル値１０（すなわち１０進数の３に等しい）も示す。ブロックＢ２の２個の位置ビットは、操作３０３で生成される。
【００５４】
図５Ｅは、操作３１０に従って仮想縮退故障値をどのように生成できるのかについての一例を示す。図５Ｅに示すように、（一点長鎖線によって示す）ブロックＢ２内の３番目のメモリセルの０の縮退故障値、サブブロックＢ１Ａ内に記憶される３番目の符号化データビット０、サブブロックＢ１Ｂ内に記憶される３番目の符号化データビット１、およびサブブロックＢ１Ｃ内に記憶される３番目の符号化データビット０に対してＸＯＲ論理関数を実行し、１の仮想縮退故障値を生成する。（短い点線によって示す）ブロックＢ２内の１０番目のメモリセルの１の縮退故障値、サブブロックＢ１Ａ内に記憶される１０番目の符号化データビット０、サブブロックＢ１Ｂ内に記憶される１０番目の符号化データビット１、およびサブブロックＢ１Ｃ内に記憶される１０番目の符号化データビット０に対してＸＯＲ論理関数を実行し、０の仮想縮退故障値を生成する。（点線によって示されていない）ブロックＢ２内の１２番目のメモリセルの０の縮退故障値、サブブロックＢ１Ａ内に記憶される１２番目の符号化データビット０、サブブロックＢ１Ｂ内に記憶される１２番目の符号化データビット１、およびサブブロックＢ１Ｃ内に記憶される１２番目の符号化データビット１に対してもＸＯＲ論理関数を実行し、０の仮想縮退故障値を生成する。
【００５５】
操作３１１では、図５Ｆに示すように、３つの仮想縮退故障値に基づいてブロックＢ２の位置ビットおよびブロックＢ１のインデックスビットを符号化し、ブロックＢ２の符号化ビットおよびブロックＢ２のインデックスビットを生成する。それぞれ図５Ｆ内のＶの下にあるブロックＢ２の３つの符号化ビットは、操作３１０で生成される３つの対応する仮想縮退故障値に一致する。図５Ｆに示すブロックＢ２の１２個の符号化ビットおよび２個のインデックスビットは一例として与える任意の値であり、ある特定の符号化技法によって生成されるものではない。
【００５６】
操作３１２では、図５Ｇに示すように、サブブロックＢ１Ａ−Ｂ１Ｃのメモリセル内に記憶するための符号化データビット、および操作３１１で生成されたブロックＢ２の符号化ビットに対してビット単位のＸＯＲ論理関数を実行し、ブロックＢ２のメモリセル内に記憶するためのビットを生成する。
【００５７】
より詳細には、図５Ｇの例における操作３１２では、ビット単位のＸＯＲ論理関数を３回実行する。サブブロックＢ１Ａのメモリセル内に記憶するための１６個の符号化データビット、およびサブブロックＢ１Ｂのメモリセル内に記憶するための１６個の符号化データビットに対して最初のビット単位のＸＯＲ論理関数を実行し、第１の１６ビット中間結果を生成する。第１の１６ビット中間結果およびサブブロックＢ１Ｃのメモリセル内に記憶するための１６個の符号化データビットに対して２回目のビット単位のＸＯＲ論理関数を実行し、第２の１６ビット中間結果を生成する。図５Ｇに示すように、第２の１６ビット中間結果の１２ビットおよび操作３１１で生成されたブロックＢ２の対応する１２個の符号化ビットに対して３回目のビット単位のＸＯＲ論理関数を実行し、ブロックＢ２のメモリセル内に記憶するための１２ビットを生成する。
【００５８】
図５Ｇに示す１６ビットＸＯＲ結果の１番目−４番目および９番目−１６番目のビットが、ブロックＢ２の対応する１番目−４番目および９番目−１６番目のメモリセル内に記憶するための１２ビットである。図５Ｇに示すＸＯＲ結果の３番目、１０番目、および１２番目のビットは、図５Ｂに示すブロックＢ２の３番目、１０番目、および１２番目のメモリセルの対応する縮退故障値に一致する。
【００５９】
図５Ｇに示すＸＯＲ結果の５番目−８番目のビットは、操作３１２で実行される２回目のビット単位のＸＯＲ論理関数の第２の１６ビット中間結果の５番目−８番目のビットである。操作３１２で実行される２回目のビット単位のＸＯＲ論理関数の第２の１６ビット中間結果の５番目−８番目のビットは、操作３１２の３回目のビット単位のＸＯＲ論理関数では使用しない。
【００６０】
操作３１５では、図５Ｈに示すように、操作３１２のＸＯＲ結果、およびブロックＢ２のインデックスビットと組み合わせられたブロックＢ２内のブロックＢ３の位置を示すｌｏｇ２ｂビットに対してビット単位のＸＯＲ論理関数を実行し、ブロックＢ３のメモリセル内に記憶するためのビットを生成する。より詳細には、図５Ｈの例における操作３１５では、ビット単位のＸＯＲ論理関数を４回実行する。４回のビット単位のＸＯＲ論理関数のそれぞれは、４ビットからなる２つの組に対して実行される。
【００６１】
図５Ｇに示す１６ビットＸＯＲ結果の１番目−４番目のビット、および図５Ｇに示す１６ビットＸＯＲ結果の５番目−８番目のビットに対して最初のビット単位のＸＯＲ論理関数を実行し、第１の４ビット中間結果を生成する。操作３１５の第１の４ビット中間結果、および図５Ｇに示す１６ビットＸＯＲ結果の９番目−１２番目のビットに対して２回目のビット単位のＸＯＲ論理関数を実行し、第２の４ビット中間結果を生成する。図５Ｈに示すように、操作３１５の第２の４ビット中間結果、および図５Ｇに示す１６ビットＸＯＲ結果の１３番目−１６番目のビットに対して３回目のビット単位のＸＯＲ論理関数を実行し、ブロックＢ３のメモリセル内に記憶するための４ビットを生成する。
【００６２】
図５Ａ−５Ｉの例では、ブロックＢ３が最も小さいブロックである。したがって、操作３１０−３１４のさらなる反復は実行されない。操作３１６では、図５Ｉに示すように、操作３０６で生成した符号化データビットをサブブロックＢ１Ａ−Ｂ１Ｃの対応するメモリセル内に記憶する。さらに操作３１６では、図５Ｉに示すように、ブロックＢ２内に記憶するために操作３１２で生成した１２ビットをブロックＢ２の対応するメモリセル内に記憶し、ブロックＢ３内に記憶するために操作３１５で生成した４ビットをブロックＢ３の対応するメモリセル内に記憶する。図５Ａに関して上述したように、メモリセル内に１または０でラベル付けした図５Ｉに示すメモリセルのそれぞれは、ラベル付けした値の縮退故障を有する。図５Ｉに示すように、縮退故障を有するメモリセル内に記憶されるビットのそれぞれは、その縮退故障と同じデジタル値を有する。符号化プロセスのステップを逆に実行することにより、図４の復号操作４０１−４０８を図５Ａ−５Ｉの例に対して用いることができる。
【００６３】
本発明の実施形態は、例えばプログラム命令を含むハードウェア、ソフトウェア、およびコンピュータ可読媒体の１つまたは組合せを用いて実現することができる。本発明の実施形態は、コンピュータ上で実行可能な非一時的コンピュータ可読媒体上に記憶されるプログラムコードとして実施することができる。本発明の実施形態および本発明の結果によって実現されるソフトウェアは、半導体メモリ、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）や他の媒体などのコンピュータ可読媒体上に記憶することができる。本発明の結果は、プロセッサによって実行されまたは処理されること、利用者に表示されること、ネットワークを介して信号内で伝送されることなど、様々な用途に使用することができる。本発明の実施形態は、分散処理に影響を及ぼすことをネットワークを介して接続されるいくつかのコンピュータシステムに行わせる、非一時的コンピュータ可読媒体上に記憶されるコンピュータ可読プログラムコードユニットとして実施することもできる。
【００６４】
本発明の例示的実施形態についての上記の説明は、解説および説明目的で提示した。上記の説明は網羅的であることも、本明細書で開示した例に本発明を限定することも意図しない。一部の例では、記載した他の特徴を対応して使用することなしに、本発明の特徴を使用することができる。上記の教示に照らし、本発明の範囲から逸脱することなく多くの修正形態、代替形態、および改変形態が可能である。
【符号の説明】
【００６５】
１００  データ記憶システム
１０１  制御回路
１０２  メモリ回路
１０３  メモリ回路
【図１】
2014078237.tif 000003
【図２Ａ】
2014078237.tif 000004
【図２Ｂ】
2014078237.tif 000005
【図３Ａ】
2014078237.tif 000006
【図３Ｂ】
2014078237.tif 000007
【図４】
2014078237.tif 000008
【図５Ａ】
2014078237.tif 000009
【図５Ｂ】
2014078237.tif 000010
【図５Ｃ】
2014078237.tif 000011
【図５Ｄ】
2014078237.tif 000012
【図５Ｅ】
2014078237.tif 000013
【図５Ｆ】
2014078237.tif 000014
【図５Ｇ】
2014078237.tif 000015
【図５Ｈ】
2014078237.tif 000016
【図５Ｉ】
2014078237.tif 000017