(57)【要約】データ記憶のための方法は、少なくとも外符号及び内符号を用いてデータを符号化し、必要に応じて、符号化データをメモリセルに記憶する前に符号化データを反転させることによって、データをメモリセルのグループに記憶することを含む。  符号化データはメモリセルから読み出され、復号結果を生成するために内符号復号が読み出された符号化データに適用される。  読み出されたデータの少なくとも一部は、内符号の復号結果に応じて、条件付きで反転される。
2017504925.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶のための方法であって、
少なくとも外符号及び内符号を用いてデータを符号化し、該符号化データをメモリセルに記憶する前に必要に応じて前記符号化データを反転させることによって、前記データを前記メモリセルのグループに記憶することと、
前記符号化データを前記メモリセルから読み出すことと、
復号結果を生成するために、前記読み出された符号化データに内符号復号を適用することと、
前記内符号の前記復号結果に応じて、前記読み出されたデータの少なくとも一部を条件付きで反転させることと、
を含む方法。
【請求項２】
前記内符号が、有効な符号ワードの反転が別の有効な符号ワードを必ずしももたらさない符号を含み、前記内符号復号を適用することが、前記読み出された符号化データと前記読み出された符号化データの反転バージョンとの少なくとも一方を復号することを含む、請求項１に記載の方法。
【請求項３】
前記内符号復号を適用することが、前記読み出された符号化データと前記読み出された符号化データの前記反転バージョンとの両方を復号することを含み、前記読み出されたデータの前記少なくとも一部を条件付きで反転させることが、前記反転バージョンの前記復号結果が誤りなしであり、前記読み出された符号化データの前記復号結果が誤りなしではないときのみに、前記読み出されたデータの前記少なくとも一部を反転させることを含む、請求項２に記載の方法。
【請求項４】
前記データを記憶することが、前記データに関して、前記記憶されたデータが反転されているかどうかの反転インジケータを記憶することを含み、前記符号化データを読み出すことが、前記反転インジケータを読み出し復号することを含み、前記内符号復号を適用することが、前記反転インジケータに応じて、前記読み出された符号化データのみ又は前記読み出された符号化データの前記反転バージョンのみを復号することを含む、請求項２に記載の方法。
【請求項５】
前記読み出されたデータの前記少なくとも一部を条件付きで反転させることが、前記読み出された符号化データの前記復号結果が前記反転インジケータと矛盾するときに、前記読み出されたデータを反転させるかどうかを判断できないことを示すことを含む、請求項４に記載の方法。
【請求項６】
前記内符号が誤り検出符号を含み、前記読み出されたデータの前記少なくとも一部を条件付きで反転させることが、前記復号結果が前記内符号復号を全て１のワードに適用することの結果に等しいときに、前記読み出されたデータの前記少なくとも一部を反転させることを含み、前記復号結果が誤りなしであるときに、前記読み出されたデータの前記少なくとも一部を反転させないことを含む、請求項２に記載の方法。
【請求項７】
前記読み出されたデータの前記少なくとも一部を条件付きで反転させることが、前記読み出された符号化データの前記復号結果が前記読み出された符号化データの前記反転バージョンの前記復号結果と矛盾するときに、前記読み出されたデータを反転させるか否かを判断できないことを示すことを含む、請求項２に記載の方法。
【請求項８】
データ記憶のための装置であって、
メモリセルのアレイを備えるメモリと、
少なくとも外符号及び内符号を用いてデータを符号化し、該符号化データを前記メモリセルに記憶する前に必要に応じて前記符号化データを反転させることによって、前記データを前記メモリセルのグループに記憶し、前記符号化データを前記メモリセルから読み出し、復号結果を生成するために、前記読み出された符号化データに内符号復号を適用し、前記内符号の前記復号結果に応じて、前記読み出されたデータの少なくとも一部を条件付きで反転させる、ように構成される記憶回路と、
を備える装置。
【請求項９】
前記内符号が、有効な符号ワードの反転が必ずしも別の有効な符号ワードをもたらさない符号を含み、前記記憶回路が、前記読み出された符号化データと前記読み出された符号化データの反転バージョンとの少なくとも一方を復号するように構成される、請求項８に記載の装置。
【請求項１０】
前記記憶回路が、前記読み出された符号化データと前記読み出された符号化データの前記反転バージョンとの両方を復号し、前記反転バージョンの前記復号結果が誤りなしであり、前記読み出された符号化データの前記復号結果が誤りなしでないときのみに、前記読み出されたデータの前記少なくとも一部を反転させる、ように構成される、請求項９に記載の装置。
【請求項１１】
前記記憶回路が、前記データに関して、前記記憶されたデータが反転されているかどうかの反転インジケータを記憶し、前記反転インジケータを読み出し復号し、前記反転インジケータに応じて、前記読み出された符号化データのみ又は前記読み出された符号化データの前記反転バージョンのみを復号する、ように構成される、請求項９に記載の装置。
【請求項１２】
前記記憶回路が、前記読み出された符号化データの前記復号結果が前記反転インジケータと矛盾するときに、前記読み出されたデータを反転させるかどうかを判断できないことを示すように構成される、請求項１１に記載の装置。
【請求項１３】
前記内符号が誤り検出符号を含み、前記記憶回路が、前記復号結果が前記内符号復号を全て１のワードに適用することの結果と等しいときに、前記読み出されたデータの前記少なくとも一部を反転させ、前記復号結果が誤りなしであるときに、前記読み出されたデータの前記少なくとも一部を反転させない、ように構成される、請求項９に記載の装置。
【請求項１４】
前記記憶回路が、前記読み出された符号化データの前記復号結果が、前記読み出された符号化データの前記反転バージョンの前記復号結果と矛盾するときに、前記読み出されたデータを反転させるか否かを判断できないことを示すように構成される、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデータ記憶に関し、特にアナログメモリセルにデータを記憶するための方法及びシステムに関する。
【背景技術】
【０００２】
フラッシュメモリなどの幾つかのタイプのメモリデバイスは、データを記憶するためにアナログメモリセルのアレイを用いる。各アナログメモリセルは、電荷又は電圧などの、記憶値とも称されるアナログ値の量を記憶する。このアナログ値は、セルに記憶された情報を表す。フラッシュメモリにおいて、例えば、各アナログメモリセルは、ある量の電荷を保持する。可能なアナログ値の範囲は、典型的に、１つ以上のデータビット値にそれぞれ対応するインターバルに区分される。データは、所望の１つ又は複数のビットに対応する公称アナログ値を書き込むことにより、アナログメモリセルに書き込まれる。
【０００３】
シングルレベルセル（ＳＬＣ）デバイスと一般に称される一部のメモリデバイスは、単一ビットの情報を各メモリセルに記憶し、すなわち、２つの可能なプログラミングレベルをとるように各メモリセルをプログラムすることができる。マルチレベルセル（ＭＬＣ）デバイスとしばしば称される、より高密度のデバイスは、メモリセル当り２ビット以上を記憶し、すなわち、２つよりも多くの可能なプログラミングレベルをとるようにプログラムすることができる。例として、トリプルレベルセル（ＴＬＣ）デバイスは、８つのプログラミングレベルを用いてセル当り３ビットを記憶する。
【０００４】
フラッシュメモリデバイスは、例えば、参照により本明細書に組み込まれる、Ｂｅｚ等による「Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ」、ＩＥＥＥ予稿集、第９１巻、第４号、２００３年４月、頁４８９〜５０２に記述されている。マルチレベルフラッシュセル及びデバイスは、例えば、参照により本明細書に組み込まれる、Ｅｉｔａｎ等による「Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｆｌａｓｈ  Ｃｅｌｌｓ  ａｎｄ  ｔｈｅｉｒ  Ｔｒａｄｅ−Ｏｆｆｓ」、１９９６  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅｓ  Ｍｅｅｔｉｎｇ（ＩＥＤＭ）、ニューヨーク、ニューヨーク州の予稿集、頁１６９〜１７２に記述されている。この論文は、共通グランド、ＤＩＮＯＲ、ＡＮＤ、ＮＯＲ及びＮＡＮＤセルなどの幾つかの種類のマルチレベルフラッシュセルを比較している。
【０００５】
Ｅｉｔａｎ等は、窒化物リードオンリーメモリ（ＮＲＯＭ）と呼ばれる別の種類のアナログメモリセルについて、参照により本明細書に組み込まれる、「Ｃａｎ  ＮＲＯＭ，ａ  ２−ｂｉｔ，Ｔｒａｐｐｉｎｇ  Ｓｔｏｒａｇｅ  ＮＶＭ  Ｃｅｌｌ，Ｇｉｖｅ  ａ  Ｒｅａｌ  Ｃｈａｌｌｅｎｇｅ  ｔｏ  Ｆｌｏａｔｉｎｇ  Ｇａｔｅ  Ｃｅｌｌｓ？」、１９９９  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｅｖｉｃｅｓ  ａｎｄ  Ｍａｔｅｒｉａｌｓ（ＳＳＤＭ）、東京、日本、１９９９年９月２１日−２４日、の予稿集、頁５２２〜５２４に記述している。ＮＲＯＭセルも、参照により本明細書に組み込まれる、Ｍａａｙａｎ等による「Ａ  ５１２  Ｍｂ  ＮＲＯＭ  Ｆｌａｓｈ  Ｄａｔａ  Ｓｔｏｒａｇｅ  Ｍｅｍｏｒｙ  ｗｉｔｈ  ８Ｍｂ／ｓ  Ｄａｔａ  Ｒａｔｅ」、２００２  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｏｉｌｄ  Ｃｉｒｃｕｉｔｓ  Ｃｏｎｆｅｒｅｎｃｅ（ＩＳＳＣＣ  ２００２）、サンフランシスコ、カリフォルニア州、２００２年２月３日−７日、の予稿集、頁１００−１０１に記述されている。他の例示的なタイプのアナログメモリセルは、フローティングゲート（ＦＧ）セル、強誘電性ＲＡＭ（ＦＲＡＭ）セル、磁気ＲＡＭ（ＭＲＡＭ）セル、チャージトラップ型フラッシュ（ＣＴＦ）及び相転移ＲＡＭ（ＰＲＡＭ、相転移メモリ−ＰＣＭとも称される）セルである。ＦＲＡＭ、ＭＲＡＭ及びＰＲＡＭセルは、例えば、参照により本明細書に組み込まれる、ＫｉｍとＫｏｈによる「Ｆｕｔｕｒｅ  Ｍｅｍｏｒｙ  Ｔｅｃｈｎｏｌｏｇｙ  ｉｎｃｌｕｄｉｎｇ  Ｅｍｅｒｇｉｎｇ  Ｎｅｗ  Ｍｅｍｏｒｉｅｓ」、２４ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ（ＭＩＥＬ）、ニス、セルビアモンテネグロ、２００４年５月１６日−１９日、の予稿集、第１巻、頁３７７−３８４に記述されている。
【０００６】
一部の記憶方式は、メモリセル当り非整数個のビットを有する密度でデータを記憶する。例えば、その開示が参照により本明細書に組み込まれる、米国特許第７，０７１，８４９号は、積生成（product generation）の間でセル当り状態数のわずか１の増加を可能にする小数型ビットシステムを記述している。セル当り状態数が２の整数べきではないので、セル当りビット数は小数値をとる。セルは、典型的にワード単位で復号され、ワード幅を調節することによりシステム効率を最適化することができる。
【０００７】
別の例として、その開示が参照により本明細書に組み込まれる米国特許第６，６４６，９１３号は、複数のメモリセルにより形成されたメモリアレイを有するマルチレベル不揮発性メモリにデータを記憶し読み出すための方法を記述している。メモリセルのそれぞれは、２の整数べきではない数のビットを記憶する。このように、１つのデータバイトは、非整数個のメモリセルに記憶される。管理方法は、事前設定された数の隣り合うメモリセルをプログラミングすることにより、複数のバイトにより形成されたデータワードを同じクロックサイクルで記憶することを含む。読出しは、記憶されたデータワードを同じクロックサイクルで読み出すことにより実行される。
【０００８】
その開示が参照により本明細書に組み込まれる米国特許第７，１６７，１０９号に記述される方法は、積生成の間でセル当り状態数Ｎのわずか１の増加を可能にする。Ｎが２の整数べきではないので、ｂは小数値をとり、小数型ビットシステムをもたらす。小数型ビットシステムにおいて、セルはワード単位で復号される。ワード幅を調節することによって、システム効率を最適化することができる。製造歩留まり及び耐久寿命を向上させるために、ハイブリッドＮアレイシステムを用いることができる。
【０００９】
その開示が参照により本明細書に組み込まれる米国特許第７，７４２，３３５号は、不揮発性マルチレベルメモリセルを操作するための方法、デバイス、モジュール、及びシステムを記述している。１つの方法実施形態は、行選択線に結合された第１のセルに、第１のセルをプログラムできる第１の数のプログラム状態を割当てることを含む。方法は、行選択線に結合された第２のセルに、第２のセルをプログラムできる第２の数のプログラム状態を割当てることを更に含み、プログラム状態の第２の数は、プログラム状態の第１の数よりも大きい。方法は、第２の数のプログラム状態のうちの１つに第２のセルをプログラミングする前に、第１の数のプログラム状態のうちの１つに第１のセルをプログラミングすることを含む。
【００１０】
その開示が参照により本明細書に組み込まれる米国特許第７，８４８，１４２号は、整数個のビットを表すデータ状態に対応する電荷をメモリセルの集合に記憶することを含むことができる、メモリセルをプログラミングするための方法、デバイス、モジュール、及びシステムを記述している。メモリセルのプログラミングは、集合のセルに電荷を記憶することを含むことができ、電荷はプログラムされた状態に対応し、プログラムされた状態は小数のビットを表し、プログラムされた状態は、基底の数Ｎにより表現されるデータ状態の桁を示し、Ｎは整数に切り上げられた２Ｂに等しく、Ｂは、プログラムされた状態により表されるビットの小数に等しい。
【００１１】
その開示が参照により本明細書に組み込まれる米国特許第７，４２０，８４１号は、メモリデバイス及びメモリデバイスを操作する方法を記述している。本発明の一実施形態において、メモリデバイスは、２ｎ（ｎがゼロ以外の整数）に一致しないｍ個のレベルをそれぞれ有する複数のマルチレベルメモリセルと、組み合わされた状態の集合への書込み及び読出し操作のために、並びに組み合わされた状態の集合のうちの２ｎの組合せの少なくとも部分集合をｎ個の２レベルのデータビットに変換するために、メモリセルのうちの少なくとも２つのレベルを組み合わせるための回路又はデバイスと、を含む。
【発明の概要】
【００１２】
本明細書に記述される本発明のある実施形態は、データ記憶のための方法であって、少なくとも外符号及び内符号を用いてデータを符号化し、必要に応じて、符号化データをメモリセルに記憶する前に符号化データを反転させることによって、データをメモリセルのグループに記憶することを含む方法を提供する。符号化データは、メモリセルから読み出される。内符号復号は、読み出された符号化データに適用されて復号結果を生成する。読み出されたデータの少なくとも一部は、内符号の復号結果に応じて、条件付きで反転される。
【００１３】
一部の実施形態において、内符号は、有効な符号ワードの反転が別の有効な符号ワードを必ずしももたらさない符号を含み、内符号復号を適用することは、読み出された符号化データと読み出された符号化データの反転バージョンとの少なくとも一方を復号することを含む。他の実施形態において、内符号復号を適用することは、読み出された符号化データと読み出された符号化データの反転バージョンとの両方を復号することを含み、読み出されたデータの少なくとも一部を条件付きで反転させることは、反転バージョンの復号結果が誤りなしであり、読み出された符号化データの復号結果が誤りなしではないときのみに、読み出されたデータの少なくとも一部を反転させることを含む。
【００１４】
更に他の実施形態において、データを記憶することは、データに関して、記憶されたデータが反転されているかどうかの反転インジケータを記憶することを含み、符号化データを読み出すことは、反転インジケータを読み出し復号することを含み、内符号復号を適用することは、反転インジケータに応じて、読み出された符号化データのみ又は読み出された符号化データの反転バージョンのみを復号することを含む。
【００１５】
ある実施形態において、読み出されたデータの少なくとも一部を条件付きで反転させることは、読み出された符号化データの復号結果が反転インジケータと矛盾するときに、読み出されたデータを反転させるかどうかを判断できないことを示すことを含む。別の実施形態において、内符号は誤り検出符号を含み、読み出されたデータの少なくとも一部を条件付きで反転させることは、復号結果が内符号復号を全て１のワードに適用することの結果に等しいときに、読み出されたデータの少なくとも一部を反転させることを含み、復号結果が誤りなしであるときに、読み出されたデータの少なくとも一部を反転させないことを含む。
【００１６】
更に別の実施形態において、読み出されたデータの少なくとも一部を条件付きで反転させることは、読み出された符号化データの復号結果が読み出された符号化データの反転バージョンの復号結果と矛盾するときに、読み出されたデータを反転させるか否かを判断できないことを示すことを含む。
【００１７】
加えて、本発明のある実施形態によると、メモリセルのアレイを含むメモリと、記憶回路とを含む装置が提供される。記憶回路は、少なくとも外符号及び内符号を用いてデータを符号化し、必要に応じて、符号化データをメモリセルに記憶する前に符号化データを反転させることによって、データをメモリセルのグループに記憶し、符号化データをメモリセルから読み出し、読み出された符号化データに内符号復号を適用して復号結果を生成し、内符号の復号結果に応じて、読み出されたデータの少なくとも一部を条件付きで反転させる、ように構成される。
【００１８】
加えて、本発明のある実施形態によると、データ記憶のための方法であって、第１のプログラミング段階において、グループ内のメモリセルを初期のプログラミングレベルの集合にプログラミングすることにより、第１のデータをメモリセルのグループに記憶することを含む方法が提供される。第１のプログラミング段階に続く第２のプログラミング段階において、第２のデータは、第１のプログラミング段階において初期のプログラミングレベルの所定の真部分集合（partial subset）のそれぞれのレベルにプログラムされたグループ内のメモリセルを特定することにより、グループに記憶される。特定されたメモリセルの少なくとも一部を、初期のプログラミングレベルとは異なる１つ以上の追加のプログラミングレベルに設定するように、特定されたメモリセルのみが第２のデータでプログラムされる。第２のデータがプログラムされたメモリセルは、第１のデータの真部分集合のみを読み出すことにより認識される。第２のデータは、認識されたメモリセルから読み出される。
【００１９】
一部の実施形態において、第１のデータを記憶することは、複数のデータページを記憶することを含み、メモリセルを認識することは、複数のページの真部分集合のみを読み出すことを含む。他の実施形態において、第１のデータを記憶することは、最下位ビット（ＬＳＢ）のページ及び中位ビット（ＣＳＢ）のページを記憶することを含み、第２のデータを記憶することは、最上位ビット（ＭＳＢ）のページを記憶することを含み、メモリセルを認識することは、ＬＳＢページ又はＣＳＢページのみを読み出すことを含む。更に他の実施形態において、ＬＳＢページ又はＣＳＢページを読み出すことは、単一の読出しコマンドを用いてＬＳＢページ又はＣＳＢページを読み出すことを含む。更に更なる他の実施形態において、第２のデータを読み出すことは、２つの読出し閾値を用いて、認識されたメモリセルからＭＳＢページを読み出すことを含む。
【００２０】
加えて、本発明のある実施形態によると、データ記憶のための装置であって、メモリセルのアレイを含むメモリと、記憶回路とを含む装置が提供される。記憶回路は、第１のプログラミング段階において、グループ内のメモリセルを初期のプログラミングレベルの集合にプログラミングすることにより、第１のデータをメモリセルのグループに記憶し、第１のプログラミング段階に続く第２のプログラミング段階において、第１のプログラミング段階において初期のプログラミングレベルの所定の真部分集合のそれぞれのレベルにプログラムされたグループ内のメモリセルを特定し、特定されたメモリセルの少なくとも一部を初期のプログラミングレベルとは異なる１つ以上の追加のプログラミングレベルに設定するように、特定されたメモリセルのみを第２のデータでプログラミングすることにより、第２のデータをグループに記憶し、第１のデータの真部分集合のみを読み出すことにより、第２のデータがプログラムされたメモリセルを認識し、認識されたメモリセルから第２のデータを読み出す、ように構成される。
【００２１】
加えて、本発明のある実施形態によると、データ記憶のための方法であって、メモリセルのグループにおいて、所与のプログラミング状態にプログラムされるべきグループ内のメモリセルの予想数を特定することを含む方法が提供される。所与のプログラミング状態と隣のプログラミング状態との間の区切りは、所与のプログラミング状態にプログラムされるべきメモリセルの予想数に応じて設定される。グループ内のメモリセルは、設定された区切りを用いてプログラムされる。
【００２２】
一部の実施形態において、隣のプログラミング状態は、所与のプログラミング状態を所定の分割比によって分割することにより生成され、メモリセルの予想数を特定することは、所与のプログラミングレベルにプログラムされたメモリセルの数を分割比を用いて評価することを含む。他の実施形態において、メモリセルをプログラミングすることは、隣り合うメモリ状態の間のそれぞれの区切りが不均等となるように、メモリセルを複数のメモリ状態に設定することを含む。
【００２３】
加えて、本発明のある実施形態によると、データを記憶するための装置であって、メモリセルのアレイを含むメモリと、記憶回路とを含む装置が提供される。記憶回路は、メモリセルのグループにおいて、所与のプログラミング状態にプログラムされるべきグループ内のメモリセルの予想数を特定し、所与のプログラミング状態と隣のプログラミング状態との間の区切りを、所与のプログラミング状態にプログラムされるべきメモリセルの予想数に応じて設定し、設定された区切りを用いてグループ内のメモリセルをプログラムする、ように構成される。
【００２４】
加えて、本発明のある実施形態によると、データ記憶のための方法であって、第１のプログラミング段階において、各グループ内のメモリセルを初期のプログラミングレベルのそれぞれの集合にプログラミングすることにより、メモリセルの複数のグループに第１のデータを記憶することを含む方法が提供される。第１のプログラミング段階に続く第２のプログラミング段階において、第２のデータは、第１のプログラミング段階において初期のプログラミングレベルの所定の真部分集合のそれぞれのレベルにプログラムされた各グループ内の利用可能なメモリセルを特定することにより、複数のグループに記憶される。特定された利用可能なメモリセルのみが第２のデータでプログラムされて、利用可能なメモリセルの少なくとも一部を初期のプログラミングレベルとは異なる１つ以上の追加のプログラミングレベルに設定するように、所与のグループの第２のデータが、利用可能なメモリセルの実際の数の変動にかかわらずに、メモリセルのグループ内の固定位置からプログラムされる。
【００２５】
一部の実施形態において、方法は、固定位置のメモリセルにアクセスすることにより、所与のグループの第２のデータを読み出すことを含む。他の実施形態において、第２のデータは複数のデータワードを含み、各データワードのサイズは、メモリセルの複数のグループ内のそれぞれの利用可能なセルの実際の数よりも大きい。更に他の実施形態において、第２のデータを読み出すことは、所与のデータワードがプログラムされたメモリセルの１つ以上のグループのみから第１のデータを読み出すことにより、複数のデータワードのうちの所与のデータワードを読み出すことを含む。
【００２６】
ある実施形態において、方法は、特定された利用可能なセルを第２のデータでプログラミングすることが、特定されたプログラムされていない利用可能なセルの１つ以上を残すときに、プログラムされていないメモリセルを第３のデータでプログラミングすることを含む。別の実施形態において、第２のデータは、データワードのサイズがメモリセルの複数のグループ内のそれぞれの利用可能なメモリセルの数を超えない複数のデータワードを含む。
【００２７】
加えて、本発明のある実施形態によると、データ記憶のための装置であって、メモリセルのアレイを含むメモリと、記憶回路とを含む装置が提供される。記憶回路は、第１のプログラミング段階において、各グループ内のメモリセルを初期のプログラミングレベルのそれぞれの集合にプログラミングすることにより、メモリセルの複数のグループに第１のデータを記憶し、第１のプログラミング段階に続く第２のプログラミング段階において、第１のプログラミング段階において初期のプログラミングレベルの所定の真部分集合内のそれぞれのレベルにプログラムされた各グループ内の利用可能なメモリセルを特定し、特定された利用可能なメモリセルのみを第２のデータでプログラミングして、利用可能なメモリセルの少なくとも一部を初期のプログラミングレベルとは異なる１つ以上の追加のプログラミングレベルに設定するように、利用可能なメモリセルの実際の数の変動にかかわらずに、メモリセルのグループ内の固定位置から所与のグループの第２のデータがプログラムされることにより、複数のグループに第２のデータを記憶する、ように構成される。
【００２８】
本発明は、以下の図面と併せて解釈される、本発明の実施形態の以下の詳細な説明からより完全に理解されよう。
【図面の簡単な説明】
【００２９】
【図１】本発明のある実施形態に係るメモリシステムを概略的に例示するブロック図である。
【図２】本発明のある実施形態に係るデータ符号ワードを概略的に例示する図である。
【図３Ａ】本発明の実施形態に係る、セル当り非整数個のビットによりデータを記憶するために用いられるプログラミングレベルの分布を示すグラフである。
【図３Ｂ】本発明の実施形態に係る、セル当り非整数個のビットによりデータを記憶するために用いられるプログラミングレベルの分布を示すグラフである。
【図４Ａ】本発明の実施形態に係る、利用可能なメモリセルにおける既知のオフセットでデータを記憶するための２つの技法を概略的に例示する図である。
【図４Ｂ】本発明の実施形態に係る、利用可能なメモリセルにおける既知のオフセットでデータを記憶するための２つの技法を概略的に例示する図である。
【図５】本発明のある実施形態に係る、利用可能なメモリセルにおける既知のオフセットでデータを書き込むための方法を概略的に例示するフローチャートである。
【図６】本発明のある実施形態に係る、利用可能なメモリセルにおける既知のオフセットで書き込まれたデータを読み出すための方法を概略的に例示するフローチャートである。
【発明を実施するための形態】
【００３０】
概説
セル当り非整数個のビットを用いたデータの記憶は、整数個を用いるよりも有利となることができ、これは、レベルの合計数を２の整数べきに限定せずに、増加又は減少された数のプログラミングレベルを用いて、記憶の密度又は信頼性をそれぞれ向上させることができるためである。
【００３１】
本発明の実施形態は、メモリセル当り非整数個のビットを用いてデータの記憶を管理するための向上された方法及びシステムを提供する。開示される実施形態は、２段階プログラミング方式の幾つかの変形を利用する。このような２段階プログラミング方式の各種の例は、例えば、２０１１年７月２８日に出願され、本特許出願の譲受人に譲渡され、その開示が参照により本明細書に組み込まれる、米国特許出願第１３／１９２，５０１号に記述されている。このような方式においては、第１のプログラミング段階において、メモリセルは、２の整数べきである数のプログラミングレベルを用いてプログラムされる。第２のプログラミング段階において、追加ビットは、選択された１つ以上のレベルのグループにおけるレベルに第１の段階においてそれぞれプログラムされたセルのみに記憶される。これらのセルは、第２の段階においてプログラミングするのに適しており、本明細書において「利用可能なセル」とも称される。
【００３２】
利用可能なセルの正確な数は、データに依存し、したがって可変である。したがって、一部の実施形態において、第１の段階において書き込まれるデータページは、第２の段階のデータを記憶するための十分な数の利用可能なセルを確保するために、必要に応じてビット反転される（すなわち、ビットの極性が反転される）。しかし、ビット反転は、反転された有効な符号ワードが必ずしも有効な符号ワードとはならない誤り訂正符号及び／又は誤り検出符号をデータが受けるときに、問題となる場合がある。別の有効な符号ワードに対する反転された各符号ワードのマッピングを保証しない符号の例は、巡回冗長符号（ＣＲＣ）及びＢＣＨ（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍ）を含む。ある実施形態において、復号方式は、内符号及び外符号を利用する。内符号（例えばＣＲＣ又はＢＣＨ）は、例えば、繰り返しＬＤＰＣ復号器の早期終了の条件又はトラッピングセットシナリオを解決するための条件を認識するために、外符号（例えば低密度パリティ検査−ＬＤＰＣ）と併せて用いられてもよい。一部の実施形態において、記憶された符号ワードの極性は、典型的に（必ずしもそうではないが）符号ワードに埋め込まれる、それぞれの反転ビットにより示される。
【００３３】
ある実施形態において、内符号は、ＣＲＣ符号（又は誤り検出モードのＢＣＨ符号）などの誤り検出符号を含む。データはメモリセルから読み出され、外符号は復号され、読み出されたデータと反転された同じデータとの両方にＣＲＣ復号が（可能であれば外復号器と並列で）適用される。極性は、（可能であれば反転ビットに関して）誤りが見出されなかったことをＣＲＣ復号のいずれかが示すかどうかに基づいて判断される。別の実施形態において、ＣＲＣ復号は、読み出されたデータ内の反転ビットの極性によって１回のみ適用される。更に別の実施形態において、ＣＲＣ復号器の結果は、ゼロワード（反転なしを示す）と、全て１のワードに適用されたＣＲＣに等しいワード（反転が適用されたことを示す）との両方と比較される。更に更なる別の実施形態において、内符号は、（誤り訂正操作モードのために構成された）ＢＣＨ符号などの誤り訂正符号を含み、復号は、読み出されたデータと反転された同じデータとの両方に適用される。符号ワードの極性は、２つのＢＣＨ復号器のいずれかの結果が復号可能であるか、すなわち誤りなしであるかどうかによって判断される。
【００３４】
一部の実施形態において、各メモリセルは、（前述された２段階プログラミング方式の）第１の段階において、４つの初期レベルのうちの１つをとるようにプログラムされ、初期レベルのうちの２つは、第２の段階のために選択される。第２の段階において、追加ビットは、選択された２つのレベルのうちの１つにプログラムされたセルのみに書き込まれる。選択されたレベルのセル占有度は、よって第２の段階において約半分に分割され、合計で６つのレベルをもたらし、レベルのうちの４つは、ほぼ半分追加される。この方式によるとセルの半数が３ビット／セルを記憶し、他の半数が２ビット／セルを記憶するので、デバイスは、平均数で２．５ビット／セルを記憶する。
【００３５】
前述されたような６レベルのプログラミング方式を利用する開示される実施形態において、３ビットの組合せをプログラミングレベルにマッピングするための専用の方式は、第１の段階においてプログラムされた全データを読み出す必要なしに、第２の段階においてプログラムされたセルの特定を可能にするように設計される。一実施形態において、セルの特定は、２つの読出し閾値を用いて中位ビット（ＣＳＢ）のページのみを読み出すことにより実行される。別の実施形態において、セルの特定は、単一の読出し閾値を用いて最下位（ＬＳＢ）ビットのページのみを読み出すことを含む。開示される技法は、よって読出し及び復号の不要な操作を控える。
【００３６】
一部の実施形態において、一様なレベル間隔に代えて、プログラミングレベルにおける閾値電圧間隔は、レベルのセル占有度に基づいて決定される。このような実施形態において、占有度のより低い隣り合うレベル間の間隔又は区切りは、占有度の高い隣り合うレベル間の間隔よりも近くに設定される。このような不均等な間隔は、例えば、全てのレベルに渡って一様な読出し誤り確率を実現するために用いられてもよい。
【００３７】
一部の実施形態において、Ｎビットサイズのワード（例えば、符号化データのＮビット符号ワード）は、セルグループとも称されるＮ個のセルのグループに書き込まれる。このような実施形態において、任意選択的なビット反転は、前述されたように、第２の段階において十分なレベル占有度（すなわち、利用可能な十分な数のセル）を確保するために、第１の段階における記憶の前に適用される。加えて、（第１の段階において用いられる４つのレベルから）３つのレベルが第２の段階において分割される場合、各セルグループ内のセルの約３／４のみが、追加ビットを記憶するために利用可能である。一部の実施形態において、３つのＮビット符号ワードは、４つのセルグループ内の利用可能なセルに記憶される。各符号ワードは、利用可能なセルにおけるある固定オフセットで２つの個別のセルグループに書き込まれる２つのセグメントに区分される。
【００３８】
例示的なある実施形態において、符号ワードのセグメントは、全ての利用可能なセルを用い尽くして順次に書き込まれる。この実施形態において、各セグメントが書き込まれる利用可能なセルにおけるオフセットは、データに依存する。符号ワードを読み出すために、それぞれのセグメントのオフセットは、それぞれのセグメントのいずれもが書き込まれない少なくともセルグループからデータを読み出すことにより評価される。
【００３９】
他の実施形態において、符号ワードのセグメントは、各セルグループ内の利用可能なセルにおける既知の固定オフセットで書き込まれる。固定オフセットを用いることによって、所与の符号ワードのセグメントの読出しは、その符号ワードのセグメントが書き込まれるセルグループのみからのデータの読出しを必要とする。読み出されたセグメントは、次いで、元の符号ワードを復元するように組み合わされる。既知のオフセットの使用は、よって読出し及び復号の不要な操作を控えることを可能にする。
【００４０】
他の実施形態において、第２の段階のデータサイズは、セルグループ内の利用可能なセルの最小数に合うように選択され、したがってデータの読出し及び書込みの操作を簡単にする。しかし、このような実施形態において、第１及び第２のプログラミング段階について、個別の異なる復号方式が必要とされ、よって全体の復号方式をより複雑にする場合がある。
【００４１】
システムの説明
図１は、本発明のある実施形態に係るメモリシステム２０を概略的に例示するブロック図である。システム２０は、コンピューティングデバイス、携帯電話若しくは他の通信端末、リムーバブルメモリモジュール（例えば、「ディスクオンキー」若しくは「フラッシュドライブ」のデバイス）、固体ディスク（ＳＳＤ）、デジタルカメラ、音楽プレーヤ及び他のメディアプレーヤ、並びに／又は、データが記憶及び取り出される任意の他のシステム若しくはデバイスなどの、各種のホストシステム及びデバイスに用いることができる。
【００４２】
システム２０は、メモリセルアレイ２８にデータを記憶するメモリデバイス２４を備える。メモリアレイは複数のアナログメモリセル３２を備える。本特許出願の文脈及び請求項において、用語「アナログメモリセル」は、電圧又は電荷などの物理的パラメータの連続的なアナログ値を保持する任意のメモリセルを記述するために用いられる。アレイ３２は、例えば、ＮＡＮＤ、ＮＯＲ及びチャージトラップ型フラッシュ（ＣＴＦ）フラッシュセル、相転移ＲＡＭ（ＰＲＡＭ、相転移メモリ−ＰＣＭとも称される）、窒化物リードオンリーメモリ（ＮＲＯＭ）、強誘電性ＲＡＭ（ＦＲＡＭ）、磁気ＲＡＭ（ＭＲＡＭ）及び／又は動的ＲＡＭ（ＤＲＡＭ）セルなどの、任意の種類の固体アナログメモリセルを備え得る。本明細書に記述される実施形態は、アナログメモリを主に参照するが、開示される技法は、各種の他のメモリタイプと共に用いられてもよい。
【００４３】
本明細書において、セルに記憶された電荷レベル及び／又はセルに書き込まれセルから読み出されるアナログ電圧若しくは電流は、アナログ値、記憶値又はアナログ記憶値と総称される。本明細書に記述される実施形態は、閾値電圧を主に扱うが、本明細書に記述される方法及びシステムは、任意の他の適した種類の記憶値と共に用いられてもよい。
【００４４】
システム２０は、プログラミングレベルとも称されるそれぞれのメモリ状態をとるようにセルをプログラミングすることにより、アナログメモリセルにデータを記憶する。プログラミングレベルは、可能なレベルの有限の集合から選択され、各レベルは、ある公称記憶値に相当する。例えば、４つの可能な公称記憶値のうちの１つをセルに書き込むことにより、２ビット／セルのＭＬＣを４つの可能なプログラミングレベルのうちの１つをとるようにプログラムすることができる。本明細書に記述される技法は、メモリセル当り非整数個のビットの記憶の密度、すなわち２の整数べきではない数のプログラミングレベルを主に扱う。
【００４５】
メモリデバイス２４は、メモリデバイスに記憶するためのデータをアナログ記憶値に変換し、メモリセル３２に書き込む、読出し／書込み（Ｒ／Ｗ）ユニット３６を備える。代替的な実施形態において、Ｒ／Ｗユニットは変換を実行しないが、Ｒ／Ｗユニットには、電圧サンプル、すなわち、セルに記憶するための記憶値が提供される。アレイ２８からデータを読み出すとき、Ｒ／Ｗユニット３６は、メモリセル３２の記憶値を１以上のビットの整数精度を有するデジタルサンプルに変換する。データは、典型的に、ページと称されるグループ内のメモリセルに書き込まれ、グループ内のメモリセルから読み出される。一部の実施形態において、Ｒ／Ｗユニットは、１つ以上の負の消去パルスをセルに印加することにより、セル３２のグループを消去することができる。
【００４６】
メモリデバイス２４へのデータの記憶及びメモリデバイス２４からのデータの取り出しは、メモリコントローラ４０により実行される。メモリコントローラ４０は、メモリデバイス２４と通信するためのインターフェース４４、プロセッサ４８、及び誤り訂正符号（ＥＣＣ）ユニット５０を備える。開示される技法を、メモリコントローラ４０により、Ｒ／Ｗユニット３６により、又は両方により実施することができる。よって、本文脈において、メモリコントローラ４０及びＲ／Ｗユニット３６は、開示される技法を実行する記憶回路と総称される。
【００４７】
メモリコントローラ４０は、メモリデバイスに記憶するためのデータを受け付けるために、及びメモリデバイスから取り出されたデータを出力するために、ホスト５２と通信する。ＥＣＣユニット５０は、記憶するためのデータを適したＥＣＣを用いて符号化し、メモリから取り出されたデータのＥＣＣを復号する。例えば、低密度パリティ検査（ＬＤＰＣ）、リードソロモン（ＲＳ）又はＢＣＨ（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍ）などの任意の適した種類のＥＣＣを用いることができる。一部の実施形態において、誤り訂正符号を含むことに加えて、ＥＣＣユニット５０は、別の（典型的により小さな）誤り訂正又は誤り検出符号を更に含む。このような追加符号のために用いられ得る例示的な符号は、誤り訂正用のＢＣＨ及び誤り検出用の巡回冗長符号（ＣＲＣ）を含む。符号化方向におけるＥＣＣユニット５０の出力は、「符号ワード」とも称される。
【００４８】
メモリコントローラ４０は、例えば、１つ以上の特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を用いて、ハードウェアに実装され得る。代わりに、メモリコントローラは、適したソフトウェアを実行するマイクロプロセッサ又はハードウェア要素とソフトウェア要素の組合せを備えてもよい。
【００４９】
図１の構成は、例示的なシステム構成であり、あくまでも概念的な明瞭性のために示される。任意の他の適したメモリシステム構成も用いることができる。例えば、図１の例は、単一のメモリデバイスを示すが、代替的な実施形態において、メモリコントローラ４０は、複数のメモリデバイス２４を制御してもよい。各種のインターフェース、アドレス指定回路、タイミング及びシーケンス回路並びにデバッグ回路など、本発明の原理を理解するために必要とされない要素は、明瞭性のために図から省略されている。
【００５０】
図１に示される例示的なシステム構成において、メモリデバイス２４とメモリコントローラ４０は、２つの個別の集積回路（ＩＣ）として実装される。しかし、代替的な実施形態において、メモリデバイスとメモリコントローラは、単一のマルチチップパッケージ（ＭＣＰ）若しくはシステムオンチップ（ＳｏＣ）における個別の半導体ダイ上に統合されてもよく、又は、内部バスにより相互接続されてもよい。更に代わりに、メモリコントローラ回路の一部又は全ては、メモリアレイが配される同じダイ上に存在してもよい。更に代わりに、メモリコントローラ４０の機能の一部又は全てをソフトウェアに実装し、プロセッサ又はホストシステムの他の要素により実行することができる。一部の実施形態において、ホスト４４とメモリコントローラ４０は、同じダイ上又は同じデバイスパッケージの個別のダイ上に製作されてもよい。
【００５１】
一部の実施形態において、メモリコントローラ４０は、本明細書に記述される機能を実行するようにソフトウェアにプログラムされる汎用プロセッサを備える。ソフトウェアは、例えばネットワークを介して、電子形態でプロセッサにダウンロードされてもよく、或いは、代わりに又は加えて、磁気、光、若しくは電子メモリなどの非一時的な有形の媒体上に提供及び／又は記憶されてもよい。
【００５２】
アレイ２８の例示的な構成において、メモリセル３２は、複数の行及び列に配置され、各メモリセルはフローティングゲートトランジスタを備える。各行のトランジスタのゲートはワード線により接続され、各列のトランジスタのソースはビット線により接続される。本文脈において、用語「行」は、共通のワード線により供給されるメモリセルのグループを意味するように従来の感覚で用いられ、用語「列」は、共通のビット線により供給されるメモリセルのグループを意味する。用語「行」及び「列」は、メモリデバイスに対するメモリセルのある物理的配向を暗示しない。メモリアレイは、典型的に、複数のメモリページ、すなわち、同時にプログラムされ読み出されるメモリセルのグループに区分される。
【００５３】
一部の実施形態において、メモリページはセクタに細分化される。ページは、各種の方法でワード線にマッピングされ得る。各ワード線は、１つ以上のページを記憶し得る。所与のページは、ワード線の全てのメモリセル、又はメモリセルの部分集合（例えば、奇数番又は偶数番のメモリセル）に記憶され得る。
【００５４】
セルの消去は、通常、複数のページを含むブロックにおいて実行される。典型的なメモリデバイスは、数千の消去ブロックを備え得る。セル当り２ビットの典型的なＭＬＣデバイスにおいて、各消去ブロックは、約３２のワード線であり、それぞれが数万セルを備える。このようなデバイスの各ワード線は、しばしば４つのページ（奇数／偶数位セル、セルの最下位／最上位ビット）に仕切られる。消去ブロック当り３２のワード線を有するセル当り３ビットのデバイスは、消去ブロック当り１９２ページを有するであろうし、セル当り４ビットのデバイスは、ブロック当り２５６ページを有するであろう。代わりに、他のブロックサイズ及び構成も用いることができる。一部のメモリデバイスは、しばしば平面と称される２つ以上の個別のメモリセルアレイを備える。各平面は、連続する書き込み操作の間にある「ビジー」期間を有するので、プログラミングスピードを増加させるために異なる平面にデータを交互に書き込むことができる。
【００５５】
セル当り非整数個のビットを用いたデータの記憶
セル当り非整数個のビットを用いてデータを記憶することは、２の整数べきではない数のプログラミングレベル又は状態をとるようにメモリセルをプログラミングすることに相当する。一部の実施形態において、システム２０は、セル当り非整数個のビットを用いてデータを記憶するために２段階プログラミング方式を利用する。
【００５６】
第１の段階において、メモリセルは、２の整数べきである数のプログラミングレベルを用いてプログラムされる。例えば、ＴＬＣデバイスにおいて、セルは、まず、（８つの可能なレベルから）４つのレベルのみを用いてプログラムされる。第２の段階において、第１の段階において第１の段階のレベルにおけるあるレベルにプログラムされたセルのみが、追加ビットでプログラムされ得る。８レベルのＴＬＣの例において、第１の段階のレベルは、第２の段階のプログラミングのために選択され、１つ、２つ、又は３つのレベルのグループを備え、合計で５つ、６つ、又は７つのレベルをそれぞれにもたらす。
【００５７】
第２の段階において、追加ビットの値（「０」又は「１」）は、それぞれのセルが、第１の段階においてセルがプログラムされたプログラミングレベルを保持するか、又は第１の段階の全てのレベルと異なる別の、典型的にはより高い、プログラミングレベルにプログラムされたかどうかを判断する。よって、第１の段階において所与の数のセルが追加されたプログラミングレベルは、「０」及び「１」ビットの同様の出現率を仮定して、第２の段階においてほぼ半分に分割される。このような２段階プログラミング方式の各種の例は、例えば、先に引用された米国特許出願第１３／１９２，５０１号に記述されている。
【００５８】
一部の実施形態において、プログラムされるべきデータは、例えば、規則的なビット有意性（bit significance）のページなどの個別のデータページを含む。記憶回路は、第１の段階において最大（又は最上）の有意ビットよりも低いビット有意性のページを記憶し、第２の段階において最上位データのページのみを記憶する。例えば、ＴＬＣデバイスにおいて、記憶回路は、第１の段階において最下位ビット（ＬＳＢ）及び中位ビット（ＣＳＢ）のページを記憶する。そして、第１の段階において記憶されたデータに基づいて、記憶回路は、第２の段階中に最上位ビット（ＭＳＢ）のページを記憶する。第１及び第２の段階のプログラミングレベル、レベル分割、及びプログラミングレベルに対するビット組合せのマッピング方式の例は、図３Ａ及び図３Ｂに関して後述される。
【００５９】
反転された符号ワードを復号するための方法
第２の段階においてデータ（例えばＭＳＢデータ）をプログラミングするとき、分割されるべきプログラミングレベルを追加するセルの累計数は、データに依存し、十分ではない場合がある。一部の実施形態において、第１の段階において書き込まれたデータページのビット極性は、第２の段階において分割されるべきレベルの十分なセルの追加を確保するために必要に応じて反転される。加えて、データが誤り訂正復号を受けるとき、反転データの従来の復号は、反転データが有効な符号ワードを含まない場合があるので、実施不能となる場合がある。
【００６０】
記憶の信頼性を増加させるために、一部の実施形態において、記憶回路は、典型的にＥＣＣユニット５０により実装される、適した符号化方式を用いて、プログラムされるべきデータを保護する。
【００６１】
図２は、本発明のある実施形態に係る符号ワード７０を概略的に例示する図である。図２の例において、符号ワード７０は、データビット７４（例えば、第１の段階のＬＳＢ又はＣＳＢデータ）、反転ビット７８、内符号パリティビット８２、及び外符号パリティビット８６を含む。本例において、パリティビット８６は、ＥＣＣユニット５０がデータビット７４、反転ビット７８、及び内符号パリティビット８２に共に適用するＬＤＰＣ符号を含む。よって、データビット７４、反転ビット７８、内符号パリティビット８２、及び外符号パリティビット８６の集合は、ＬＤＰＣ符号ワードを構成する。更に図２の例において、パリティビット８２は、ＥＣＣユニット５０がデータビット７４及び反転ビット７８に適用するＣＲＣ又はＢＣＨ符号を含む。記述される構成において、ＬＤＰＣ外符号は、内符号パリティビット８２の誤りを訂正することができ、このことは、下で説明されるように、ＬＤＰＣ復号繰り返しの早期終了のために、又は外復号後の見逃し誤りのクリアのために、内符号を用いることを可能にする。
【００６２】
図２の構成は、あくまでも概念的な明瞭性のために示される例示的な構成であり、他の適した構成も用いることができる。例えば、他の適した符号、復号方式、並びに符号ワード７０の異なる要素のサイズ及び順序も用いることができる。
【００６３】
一部の実施形態において、ＬＤＰＣ符号ワードを繰り返し復号しながら早期終了の条件を認識するために、又はＬＤＰＣ復号器のトラッピングセットシナリオを検出及び緩和するために、例えばＬＤＰＣ符号８６と併せて、内符号８２（例えば、ＣＲＣ又はＢＣＨ符号を含む）を用いることができる。別の例として、内符号が誤り訂正符号（例えばＢＣＨ）を含むとき、ＬＤＰＣ復号器の出力に残った見逃し誤り（「エラーフロア」）を緩和するために符号８２を用いることができる。２０１０年１０月２８日に出願され、本特許出願の譲受人に譲渡され、その開示が参照により本明細書に組み込まれる、米国特許出願第１２／９１３，８１５号は、繰り返し復号中の早期終了を実行するための幾つかの方法を記述している。
【００６４】
一部の実施形態において、記憶回路は、初期に反転ビット７８を「０」に設定し、必要に応じて、前述されたように、分割されるべきレベル内のセルの十分なレベルの追加を確保するために、全符号ワード７０を反転又はビット反転させる。データを読み出すとき、記憶回路は、アレイ２８から符号ワードを取り出し、ＥＣＣユニット５０を用いて復号を適用する。復号されたビット反転７８が「１」に等しい場合、記憶回路は、ビット７４をホストに送出する前に、符号ワードのデータビットを裏返す。しかし、復号を適切に行うために、反転された各符号ワードは、有効な符号ワードも含むべきである。つまり、復号方式の有効な各符号ワードは、有効な別の符号ワードへの反転によりマッピングされるべきである。符号のパリティ検査行列の各行が同一の重みを有する（すなわち、行は同一数のゼロ以外の要素を含む）という要件を含むことによって、有効な各符号ワードについて、ビット反転が有効な別の符号ワードをもたらすという特性をサポートするようにＬＤＰＣ符号を設計することができる。しかし、ＣＲＣ及びＢＣＨ符号において、この特性を実現することは困難又は不可能である。後に続く説明において、発明者は、外符号（例えばＬＤＰＣ）が、反転された有効な符号ワードの有効性の上記された特性をサポートすると仮定する。
【００６５】
発明者は、次に、符号ワード７０を復号し、符号ワード７０が記憶される前に反転されており、したがって反転して戻されるべきであるかどうかを判断するための、幾つかの方法を記述する。開示される実施形態において、内符号８２は、ビット反転されたそれぞれの符号ワードの有効性を保証しない符号を含む。後に続く説明において、ＸはＣＲＣ又はＢＣＨ符号ワードを示す。例えば、Ｘは、データビット７４、反転ビット７８、及びパリティビット８２を含み得る。加えて、〜Ｘは、Ｘのビット反転バージョンを示し、ＣＲＣ（Ｘ）又はＢＣＨ（Ｘ）は復号操作を示すものとする。また、ＺＥＲＯＳ及びＯＮＥＳは、全体−「０」ビット及び全体−「１」ビットのシーケンスをそれぞれ示す。本特許出願の文脈及び請求項において、内符号復号は、誤り検出符号と誤り訂正符号の両方を指す。
【００６６】
発明者は、まず、内符号８２が誤り検出符号を含む幾つかの実施形態を記述する。説明は、主に、ＣＲＣ復号を利用する実施形態に関するが、例えば、誤り検出モードにおいて操作するように構成されるＢＣＨ符号などの任意の他の適した誤り検出符号も用いることができる。誤り検出符号の特性によると、Ｘが誤りなしである場合、ＣＲＣ（Ｘ）＝ＺＥＲＯＳであり、他方、誤った符号ワードへのＣＲＣ復号の適用がＺＥＲＯＳをもたらす可能性は、非常に低い。
【００６７】
一実施形態において、ＥＣＣユニット５０は、２つのＣＲＣ復号操作、すなわちＣＲＣ（Ｘ）及びＣＲＣ（〜Ｘ）を（可能であれば並列に）適用する。ＣＲＣ（Ｘ）＝ＺＥＯＲＳである場合、記憶回路は、符号ワード７０が反転されずに記憶されたとみなす。他方、ＣＲＣ（〜Ｘ）＝ＺＥＲＯＳである場合、符号ワード７０は、反転されたと仮定される。そうでなければ（すなわち、２つのＣＲＣ復号器のいずれもＺＥＲＯＳの結果を生成しないとき）、ＬＤＰＣ繰り返し復号器の早期終了の判定基準は、まだ満たされない。
【００６８】
別の実施形態において、ＥＣＣユニット５０は、反転ビット７８の値に基づいてＣＲＣ復号を１回のみ実行する。反転ビットが非反転（「０」）を示す場合、ＥＣＣユニット５０はＣＲＣ（Ｘ）を復号する。そうでなければ、ビットは、符号ワードが反転されたことを示し、ＥＣＣユニット５０はＣＲＣ（〜Ｘ）を復号する。ＥＣＣユニット５０は、それぞれのＣＲＣ復号結果がＺＥＯＲＳに等しい場合に、ＬＤＰＣ復号繰り返しの早期終了を実行し得る。
【００６９】
更に別の実施形態において、復号方式は、内符号が線形符号であることに依存する。直線性の特性によると、ＣＲＣ（〜Ｘ＋ＯＮＥＳ）＝ＣＲＣ（〜Ｘ）＋ＣＲＣ（ＯＮＥＳ）であり、ここで、「＋」がビット単位のＸＯＲを示す。しかし、Ｘ＝〜Ｘ＋ＯＮＥＳであるので、発明者は、ＺＥＲＯＳ＝ＣＲＣ（Ｘ）＝ＣＲＣ（〜Ｘ）＋ＣＲＣ（ＯＮＥＳ）であると結論付ける。例示的な実施形態において、ＥＣＣユニット５０は、ＣＲＣ復号を実行し、結果がＣＲＣ（ＯＮＥＳ）又はＺＥＯＲＳに等しいかどうかを検査して、符号ワードが反転されたか否かをそれぞれに特定する。異なる各内符号について、値ＣＲＣ（ＯＮＥＳ）が事前計算され１回のみ記憶される必要があることに留意されたい。
【００７０】
前述された実施形態において、ＥＣＣユニット５０は、（稀に）ＣＲＣ（・）復号の結果とビット反転７８の復号値との間の矛盾に遭遇する場合がある。加えて、ＣＲＣ（Ｘ）及びＣＲＣ（〜Ｘ）の適用の結果は、読み出されたデータを反転させるか否かの確定的な判断を必ずしももたらさない場合がある。このような出来事において、ＥＣＣユニットには、適したインジケータが備えられる。ＥＣＣユニット５０は、このような矛盾又は不確定な結論が生じるときに、任意の適した復号方法を用いてもよい。例えば、ＥＣＣユニット５０は、ＬＤＰＣ繰り返し復号器を終了しないと判断してもよい。
【００７１】
誤り検出符号の文脈において前述される実施形態の一部は、誤り訂正符号にも適用可能である。
【００７２】
発明者は、次に、内符号８２が（誤り訂正操作モードのために構成された）ＢＣＨなどの誤り訂正符号を含む、ある実施形態について記述する。ＥＣＣユニット５０は、２つの復号操作、すなわちＢＣＨ（〜Ｘ）及びＢＣＨ（Ｘ）を適用する。〜Ｘ又はＸのうちの一方のみが復号可能である、すなわち、誤りのない結果を復号する場合、記憶回路は、符号ワード７０をビット反転された又はビット反転されなかったとそれぞれみなす。〜ＸとＸの両方が復号可能である、又は両方が誤りなしの結果を生成することに失敗する場合、例えば（復号後に）誤りが最小となるものに基づいて、反転状態を判断するために、一部の他の判定基準を用いることができる。他の判定基準は、例えば、復号後の反転ビットの一貫性又は誤りパターンの重みを含む。代替的な実施形態において、ＥＣＣユニット５０は、不確定な又は複数の復号の結果を示す。内誤り訂正符号が「エラーフロア」シナリオのために用いられる実施形態において、内符号復号器は、適用される必要が殆どなく、したがって、ＢＣＨの（符号ワード当り）２回の復号は、計算の小さな増加のみを作り出す。
【００７３】
前述された実施形態において、発明者は、外符号において、反転された有効な符号ワードが他の有効な符号ワードにマッピングされることを概ね仮定する。この特性が保証されない他の実施形態において、内符号について前述されたものと同様な復号方式を外符号にも適用することができる。
【００７４】
第２のプログラミング段階において記憶されたデータの読出し
図３Ａ及び図３Ｂは、本発明の実施形態に係る、セル当り非整数個のビットによりデータを記憶するために用いられるプログラミングレベルの分布を示すグラフである。図３Ａ及び図３Ｂのそれぞれは、第１のプログラミング段階後と第２のプログラミング段階後とのプログラミングレベル及びそれぞれのセル占有度をそれぞれに示す、上部分と下部分に区分される。
【００７５】
開示される実施形態において、図３Ａ及び図３Ｂによると、発明者は、メモリセル３２が、第１の段階において４つのレベルを用いてプログラムされ、これらのレベルのうちの２つが第２の段階において更に分割される、基本的なＴＬＣデバイスを仮定する。各セルが第１の段階後に２ビットの情報を記憶し、セルの半数が第２の段階において追加ビットを記憶するようにプログラムされるので、デバイスは、（８つのＴＬＣレベルから６つを用いて）平均で２．５ビット／セルを最終的に記憶する。
【００７６】
図３Ａにおいて、Ｌ０、Ｌ１、Ｌ３、及びＬ５は、第１の段階においてメモリセル３２をプログラムできる４つのレベルを示す。レベルＬ０、Ｌ１、Ｌ３、及びＬ５のそれぞれは、それぞれのビットペアの組合せ、すなわち、「１１」、「１０」、「００」、及び「０１」にそれぞれマッピングされる。このような各ビットペアの組合せにおいて、個々のビットは、個別のデータストリーム又はページに対応する。後に続く説明において、左のビットはＬＳＢページビットに対応し、右のビットはＣＳＢページビットに対応する（すなわち、「１０」は、ＬＳＢ＝「１」、ＣＳＢ＝「０」を意味する）。
【００７７】
第２のプログラミング段階において、第１の段階においてレベルＬ１又はＬ３にプログラムされているセルのみが、追加ビット（ＭＳＢ）で更にプログラムされる。レベルマッピングに対する選択ビットによると、ＣＳＢビットがレベルＬ０及びＬ５で「１」に等しく、レベルＬ１及びＬ３で「０」に等しいので、ＣＳＢビットのみを点検することによりレベルＬ１及びＬ３のセルを特定できることに留意されたい。この特性も、下で説明されるように、ＭＳＢデータの読出しを簡単にする。
【００７８】
図３Ａに示されるように、追加ビットのプログラミングは、セルの約半数がＬ１に残り、セルの残りの半数がＬ２にプログラムされるように、Ｌ１のセルの追加を分割する。同様に、Ｌ３のほぼ半数のセルは、Ｌ４にプログラムされる一方、他の半数のセルは、Ｌ３で変化せずに残る。よって、第２の段階においてレベルＬ１、Ｌ２、Ｌ３、及びＬ４のうちの１つにプログラムされたセルは、それぞれのビット割当て「１００」、「１０１」、「００１」、又は「０００」によって３ビットの情報を記憶する。このような各ビットトリプレット、すなわち、左、中央、及び右のビットは、それぞれの個別のデータストリーム、例えば、ＬＳＢ、ＣＳＢ、又はＭＳＢデータページに対応する。レベルＬ０及びＬ５は、第２の段階においてプログラムされないので、これらのレベルに割当てられたそれぞれのビットトリプレットは、「１１ｘ」又は「０１ｘ」で示され、「１１」及び「０１」は、（第１の段階からの）以前のビットペアの組合せであり、右端の「ｘ」は、プログラムされていない追加ビットを示す。
【００７９】
発明者は、次に、図３Ａ及び図３Ｂに描写されたプログラミングレベルの構成を用いて、ＴＬＣデバイスに記憶されたデータを読み出すための幾つかの方法を記述する。後述されるように、追加ビットでプログラムされたセルを特定するためにＬＳＢデータとＣＳＢデータの両方が読み出されるべき従来の方法とは異なり、開示される方法の一部は、初期にＣＳＢ又はＬＳＢデータのみを読み出すことにより、ＭＳＢデータでプログラムされたセルを特定することを可能にする。
【００８０】
ある実施形態において、図３Ａに関して、ＭＳＢページを読み出すために、記憶回路は、まず、第２の段階において追加ビットでプログラムされた、すなわちレベルＬ１．．．Ｌ４にプログラムされた、メモリセルを特定する。記憶回路は、まず、ＬＳＢ及びＣＳＢページのそれぞれを読み出し、それぞれにＥＣＣ復号を適用して、ビット値「１０」又は「００」をビットトリプルの左端のビットペアに記憶するメモリセルを特定する。別の実施形態において、記憶回路は、ＣＳＢデータのみを読み出し、単一の読出しコマンドの（図３Ａにおける）読出し閾値ＴＨ＿ＣＳＢ＿ＬＯ及びＴＨ＿ＣＳＢ＿ＨＩを用いてＥＣＣ復号する。図３Ａに示されるようなレベルマッピングに対するプログラミングレベル及びビットの構成は、ＬＳＢデータとＣＳＢデータの両方を読み出すことにより生じるであろう読出し及び復号の不要な操作を控えることを記憶回路に可能にさせる。
【００８１】
記憶回路は、次いで、ＣＳＢビットが「０」に等しいセルを特定する。特定されたセルに書き込まれたデータ（例えばＭＳＢデータ）を読み出すために、記憶回路は、一方の閾値がＬ１とＬ２の間に配置され、他方の閾値がＬ３とＬ４の間に配置されるように、例えば２つの読出し閾値（不図示）を用いる。
【００８２】
図３Ｂにおいて、レベルＬ０、Ｌ１、Ｌ２、及びＬ４は、第１の段階において、それぞれのビットペア「１１」、「１０」、「００」及び「０１」にマッピングされる。第２の段階において、記憶回路は、第１の段階においてＬ２又はＬ４にプログラムされているメモリセルのみに追加ビットをプログラムする。よって、Ｌ２の約半数のセルのレベルはＬ３にシフトされ、Ｌ４の約半数のセルのレベルはＬ５にシフトされる。Ｌ２、Ｌ３、Ｌ４、及びＬ５のレベルは、それぞれのビットトリプル「００１」、「０００」、「０１０」、及び「０１１」にマッピングされる。レベルＬ０及びＬ１は、第２の段階においてプログラムされておらず、それぞれのビットトリプレット「１１ｘ」及び「１０ｘ」にマッピングされる。
【００８３】
一部の実施形態において、上の図３Ａの説明と同様に、左、中央、及び右のビットは、それぞれのＬＳＢ、ＣＳＢ、及びＭＳＢデータページに対応する。ある実施形態において、ＭＳＢデータを読み出すために、記憶回路は、まず、図３ＢにＴＨ＿ＬＳＢで示される単一の読出し閾値を用いて、（ＬＳＢページとＣＳＢページの両方を読み出し復号するのとは対照的に）ＬＳＢページのみを読み出し復号することにより、追加ビットでプログラムされたセルを特定する。この実施形態は、典型的に読出し閾値の数が多いほどページ読出し時間が増加するので、（読出しが２つの読出し閾値を必要とする）上の図３Ａのものよりも有利である。また、図３Ａの方法と同様に、ＭＳＢデータを読み出すために２つの読出し閾値のみが必要とされる。記憶回路は、次いで、２つの読出し閾値、すなわち、Ｌ２とＬ３の間に配置された一方の読出し閾値及びＬ４とＬ５の間の他方の読出し閾値を用いて、特定されたセルからＭＳＢデータを読み出す。図３Ｂに示される、レベルマッピングに対するプログラミングレベル及びビットの構成を用いて、記憶回路は、ＭＳＢページを効率的に読み出し、ＬＳＢデータとＣＳＢデータの両方の読出しにより生じるであろう不要な読出し及び復号操作を控えることができる。
【００８４】
上の説明及び図から分かるように、第２の段階における追加ビットのプログラミングは、典型的に、異なるレベルにおける不均等なセル占有度を作り出す。例えば、図３ＢのレベルＬ２．．．Ｌ５のそれぞれにプログラムされたセルの数は、Ｌ０又はＬ１にプログラムされたセルの約半数である。図３Ｂに示されるように、（要因のなかでも）レベルにおける閾値電圧（ＶＴＨ）の間隔又は区切り及び各レベルのセル占有度は、隣り合うレベルの分布間の重なりに影響を及ぼす。この重なりが読出し誤り確率に緊密に関係するので、セル占有度が異なるレベルにおける一様な間隔は、レベルに渡って不均等な（及び非最適な）読出し誤り確率をもたらし得る。
【００８５】
一部の実施形態において、異なるプログラミングレベルに割当てられた閾値電圧は、レベルのセル占有度に基づいて、全てのレベルに渡って一様な読出し誤り確率を実現するように設定される。異なるセル占有度を補償するために、追加の多い隣り合うレベルの間の距離（すなわち閾値電圧差）は、追加の少ない隣り合うレベルの間の距離よりも大きく設定されるべきである。
【００８６】
図３Ｂの例示的な構成において、ΔＬ０１は、Ｌ０とＬ１の間の電圧差を示し、ΔＬ２３、ΔＬ３４、及びΔＬ４５は、Ｌ２〜Ｌ３、Ｌ３〜Ｌ４、及びＬ４〜Ｌ５の電圧差をそれぞれ示す。ある実施形態において、ΔＬ０１が（本例においては同様に仮定される）差ΔＬ２３、ΔＬ３４、及びΔＬ４５のそれぞれよりも大きくなるように、レベル占有度に基づいて間隔を調節することによって、記憶回路は、プログラミングレベルに渡って一様な読出し誤り確率を実現する。加えて、Ｌ１とＬ２の間の間隔は、ΔＬ２３、ΔＬ３４、及びΔＬ４５よりも大きいが、ΔＬ０１よりも小さく構成されるべきである。
【００８７】
一部の実施形態において、記憶回路は、加えて、レベル占有度以外の要因に基づいてプログラミングレベルにおける電圧間隔を決定し得る。例えば、２００８年７月１１日に出願され、その開示が参照により本明細書に組み込まれる、米国特許第７，９２５，９３６号は、異なるビット有意性のページを読み出す際に実行される異なる回数の読出し操作を補償するようにレベルにおける間隔を調節することによって、プログラミングレベルに渡って一様な読出し誤り確率を実現するための幾つかの方法を記述している。
【００８８】
図３Ａ及び図３Ｂの構成は、あくまでも概念的な明瞭性のために示される例示的な構成であり、他の適した構成も用いることができる。例えば、代替的な実施形態において、他のプログラミングレベル、レベルの数、レベル分割方式、レベルマッピングに対するビット、読出し閾値、及び／又はレベルにおける間隔も用いることができる。
【００８９】
第２の段階における既知のオフセットでのデータの記憶
例えば、７つのプログラミングレベルを用いてＴＬＣデバイスにデータを記憶することを考慮する。一部の実施形態において、記憶回路は、前述された２段階プログラミング方法の適した変形を用いてデータを記憶する。例示的なある実施形態において、記憶回路は、第１の段階において、例えば図３Ａの上部分に示されるような４つのレベルを用いてＬＳＢ及びＣＳＢデータを記憶する。よって、本例において、３つのレベル、例えば、図３Ａの上部分のＬ０、Ｌ１、及びＬ３は、第２の段階において分割されるべきである。
【００９０】
一部の実施形態において、記憶回路は、例えば符号ワード７０などの符号ワードのＬＳＢ、ＣＳＢ、及びＭＳＢデータで示されるデータストリームを個別に符号化する。ある実施形態において、記憶回路は、Ｎ個のセルのグループ内のメモリセル３２をプログラムし、本明細書に記述されるように、Ｎビットの符号ワードに記憶するためのデータを符号化もする。後に続く説明において、用語「セルグループ」又は単なるグループは、同時にプログラムされるＮ個のセルのグループを指す。発明者は、記憶されたデータがそれぞれの符号ワードにおいてＥＣＣ復号を受けることを仮定するが、開示される方法は、符号化されていない生のデータの記憶にも適用可能であることに留意されたい。
【００９１】
４つのプログラミングレベルを用いて、記憶回路は、（第１の段階において）ＮビットのＬＳＢ及びＣＳＢの符号ワードを書き込む。更に下で説明されるように、各セルグループ内の利用可能なセルの数は、Ｎ個よりも少ないが、第１の段階において、記憶回路は、この数が０．７５・Ｎを超える（典型的に小さな量だけ）ことを保証する。したがって、完全なＭＳＢ符号ワードを単一のセルグループに記憶できないが、３つのＮビット符号ワードを４つのセルグループに記憶できる。
【００９２】
下の表１において、発明者は、３つのＮビット符号ワードを４つのセルグループに区分するための技法を証明する。表１において、ＭＳＢ０．．．ＭＳＢ２はＭＳＢ符号ワードを示し、ＣＷ０．．．ＣＷ３はセルグループを示す。表１の項目は、各符号ワードから取られ、それぞれのセルグループ内の利用可能なセルに書き込まれたビット数を表現する。例えば、ＭＳＢ０による０．２５・Ｎビット及びＭＳＢ１による０．５・ＮビットがＣＷ１にプログラムされる。別の例として、ＭＳＢ１ビットは、ＣＷ１とＣＷ２の間で半分に区分される。
【００９３】
【表１】
2017504925.tif 000003
【００９４】
一部の実施形態において、必要であれば、記憶回路は、それぞれのセルグループにＭＳＢデータを記憶するために利用可能な少なくとも０．７５・Ｎ個のセルがあることを保証するために、ＬＳＢ、ＣＳＢ、又は両方の符号ワードを反転させることにより、第１の段階においてデータを事前処理する。一方のサブグループが０．７５・Ｎ個のセルを含み、他方のサブグループが、「エキストラセル」と称される残りのセルを含むように、利用可能なセルのグループを２つの相補的なサブグループに仕切ることができる。第１の段階において４つのレベルのそれぞれのセル占有度が、記憶された実際のデータに依存するので、エキストラセルの数もデータに依存する。
【００９５】
３つのＭＳＢ符号ワードのビットを４つのセルグループに区分するための各種の構成を用いることができる。上の表１がこのような例の１つを提示するが、追加の例が後述される。ある実施形態において、各符号ワードは、利用可能なセルにおけるあるオフセットで２つの異なるセルグループに記憶される２つのセグメントに区分される。記憶回路は、各セルグループ内の利用可能な全てのセルを用い尽くして、符号ワードＭＳＢ０．．．ＭＳＢ２のセグメントをＣＷ０．．．ＣＷ３に連続的に記憶する。Ｎｉは、セルグループＣＷｉ内の利用可能なセルの数を示し、Ｅｉは、それぞれのエキストラセルの数を示すものとする。
【００９６】
この実施形態において、符号ワードのセグメントは、利用可能なセルにおける可変オフセットで記憶される。現在の文脈において、オフセットは、各セルグループ内の利用可能なセルにおいてのみ測定されることに留意されたい。よって、例えば、ゼロオフセットは、セルグループ内の利用可能な第１のセルを指す。所与のＭＳＢ符号ワードを読み出すために、記憶回路は、他の符号ワードのセグメントが記憶されるセルグループから有意性の低いデータを読み出すことによって、セグメントが記憶されたそれぞれのオフセットを評価する必要がある。
【００９７】
例えば、本実施形態において、記憶回路は、ＭＳＢ０ビットのＮ０＝０．７５・Ｎ＋Ｅ０（すなわち第１のセグメント）をゼロオフセットでＣＷ０に記憶し、ＭＳＢ０ビットの残り（すなわち第２のセグメント）をゼロオフセットでＣＷ１に記憶する。記憶回路は、次いで、ＭＳＢ０の第２のセグメントの直後にＭＳＢ１の第１のセグメントをＣＷ１に記憶し、すなわち、オフセットＮ−Ｎ０＝０．２５・Ｎ−Ｅ０で開始する。
【００９８】
ＭＳＢ１の第１のセグメントを読み出すとき、したがって、記憶回路は、まず、ＣＷ０に記憶されたＬＳＢ及びＣＳＢデータを読み出し及び復号し、利用可能なセルの数Ｎ０を特定及び計数し、Ｅ０＝Ｎ０−０．７５・Ｎを計算し、Ｅ０を用いてＭＳＢ１の第１のセグメントの実際のオフセットを評価する（又は同等にＮ−Ｎ０を計算する）べきである。ＭＳＢ２の符号ワードのセグメントの読出しに関して同様の議論が成り立つ。よって、この例において、ＣＷ１及びＣＷ２に記憶されるＭＳＢ１セグメントの読出しは、別のセルグループ（すなわちＣＷ０）に記憶されたデータの読出しも含む。
【００９９】
後述される代替的な実施形態において、記憶回路は、利用可能なセルに既知のオフセットでＭＳＢセグメントを記憶する。このことは、ＭＳＢデータの効率的な読出しを可能にし、これは、既知のオフセットで、所与のＭＳＢ符号ワードの読出しが、その符号ワードのセグメントが記憶されるセルグループに記憶されたデータのみの読出しを必要とするためである。
【０１００】
図４Ａ及び図４Ｂは、利用可能なメモリセルにおける既知のオフセットでデータを記憶するための２つの技法を概略的に例示する図である。ＭＳＢ０、ＭＳＢ１、及びＭＳＢ２で示されるＮビットの３つのＭＳＢ符号ワードを、ＣＷ０．．．ＣＷ３で示される４つのセルグループに書き込むことを考慮する。前述されたように、７レベルのＴＬＣの例において、４つのセルグループのそれぞれは、それぞれＮｉ＝０．７５・Ｎ＋Ｅｉの利用可能なセルを含み、そのうちのＥｉがエキストラセルを構成する。
【０１０１】
図４Ａにおいて、各符号ワードＭＳＢｉ（ｉ＝０．．．３）は、既知の所定のサイズをそれぞれに有する、ＭＳＢｉ＿Ａ及びＭＳＢｉ＿Ｂで示される２つのセグメントに区分される。ＭＳＢ０＿Ａセグメントは、０．７５・Ｎビットを含み、ＣＷ０にゼロオフセットで記憶される。０．２５・Ｎビットを含むＭＳＢ０＿Ｂセグメントも、ＣＷ１にゼロオフセットで記憶される。ＭＳＢ１セグメントは、０．５・Ｎビットをそれぞれに有するＭＳＢ１＿Ａ及びＭＳＢ１＿Ｂセグメントに区分される。ＭＳＢ１＿Ａセグメントは、ＭＳＢ０＿Ｂビットの後に、すなわち、０．２５・Ｎセルの既知のオフセットでＣＷ１に記憶される。ＭＳＢ１＿Ｂセグメントは、ＣＷ２にゼロオフセットで記憶され、０．２５・Ｎビットを含むＭＳＢ２＿Ａの第１のセグメントを記憶するために０．５・Ｎセルの既知のオフセットを作り出す。ＭＳＢ２＿Ｂの第２のセグメントは、０．７５・Ｎビットを含み、ＣＷ３にゼロオフセットで記憶される。表２は、図４Ａに示されるような、セルグループＣＷ０．．．Ｃｗ３におけるＭＳＢセグメントの割当てを要約している。
【０１０２】
【表２】
2017504925.tif 000004
【０１０３】
図４Ｂにおいて、各ＭＳＢ符号ワードの第１のセグメントは、既知のオフセットで、利用可能なセルの全てを用い尽くして書き込まれる。符号ワードの残りのビット（すなわち第２のセグメント）は、別のセルグループにゼロオフセットで書き込まれる。各ＭＳＢｉ符号ワードは、サイズがＥｉに依存するセグメントＭＡＳＢｉ＿Ａ及びＭＳＢｉ＿Ｂに区分されるが、セグメントは、既知の固定オフセットで依然配置される。表３は、図４ＢによるそれぞれのセルグループにおけるＭＳＢ符号ワードセグメントの割当てを要約している。
【０１０４】
【表３】
2017504925.tif 000005
【０１０５】
前述された実施形態において、ＭＳＢ符号ワードを含む全ての符号ワードは、Ｎビットの共通のサイズを共有する。一方で、このことは、符号化／復号及び書込み／読出し操作並びに関連する回路を簡単にする。しかし、他方で、Ｎビットの各ＭＳＢ符号ワードは、前述されたような単一のセルグループよりも多くに記憶される必要がある。代替的なある実施形態において、ＭＳＢ符号ワードは、０．７５・Ｎビット（短いＭＳＢ符号ワードと称される）のみを含む。Ｎ個のセルの各グループがＮｉ≧０．７５・Ｎの利用可能なセルを含むので、短いＭＳＢ符号ワードは、常にセルグループに合う。しかし、短いＭＳＢ符号ワードの復号方式は、Ｎビットの符号ワードの復号方式とは異なり、データ及びパリティビットの他の仕切りを用いるべきである。結果として、ＥＣＣユニット５０は、短いＭＳＢ符号ワードのために専用の個別の符号化器／復号器を備えてもよい。
【０１０６】
図５は、本発明のある実施形態に係る、利用可能なメモリセルにおける既知のオフセットでＭＳＢデータを書き込むための方法を概略的に例示するフローチャートである。図５の方法は、図４Ｂに示されるようなセルグループにおけるＭＳＢデータの割当てに合わせられる。方法が開始するとき、記憶回路は、ＬＳＢ及びＣＳＢデータがＣＷ０．．．ＣＷ３に書き込まれる第１のプログラミング段階を既に実行しており、３つの符号ワードＭＢ０．．．ＭＢ２がプログラムされるように用意されていると仮定される。方法は、セル特定ステップ２００で、記憶回路によって、各セルグループＣＷｉにおいて、ＭＳＢデータをプログラミングするために利用可能なセルを特定することから始まる。Ｎｉは、ＣＷｉ内の利用可能なセルの数を示し、Ｅｉ＝Ｎ−Ｎｉは、それぞれのエキストラセルの数を示すものとする。方法は、次いで、ＭＳＢ０のプログラミングステップ２０４に進む。ステップ２０４で、記憶回路は、利用可能な全てのＣＷ０セルを用い尽くすために、ＭＳＢ０の第１の０．７５・Ｎ＋Ｅ０ビットをＣＷ０にゼロオフセットでプログラムする。記憶回路は、次いで、ＭＢ０の残りの０．２５・Ｎ−Ｅ０ビットをＣＷ１にゼロオフセットでプログラムする。次に、記憶回路は、それぞれのステップ２０８及び２１２でＭＳＢ１及びＭＳＢ２符号ワードをプログラムする。記憶回路は、ＭＳＢ１をＣＷ１にオフセット０．２５・Ｎで書き込み、ＣＷ２に継続する。同様に、記憶回路は、ＭＳＢ２をＣＷ２にオフセット０．５・Ｎで書き込み、残りのＭＳＢ２ビットをＣＷ３にゼロオフセットで書き込む。
【０１０７】
図６は、本発明のある実施形態に係る、利用可能なメモリセルにおける既知のオフセットで書き込まれたＭＳＢデータを読み出すための方法を概略的に例示するフローチャートである。方法は、プログラムされたセルの特定ステップ２５０で、記憶回路によって、ＭＳＢデータでプログラムされるセルを特定することから始まる。例えば表３から明らかなように、ＭＳＢ０、ＭＳＢ１、又はＭＳＢ２符号ワードのうちの１つのみを独立して読み出すためには、｛ＣＷ０及びＣＷ１｝、｛ＣＷ１及びＣＷ２｝、又は｛ＣＷ２及びＣＷ３｝のみにおいて、それぞれ追加ビットでプログラムされるセルを特定すれば十分である。ＭＳＢ０、ＭＳＢ１、又はＭＳＢ２を読み出すために、記憶回路は、それぞれの読出しステップ２５４、２５８、又は２６２に進む。ステップ２５４で、記憶回路は、ＣＷ０内の利用可能な全てのセル（すなわちＮ０＝０．７５・Ｎ＋Ｅ０ビット）を、ＭＳＢ０＿Ａで示される一時的なセグメントに読み込む。記憶回路は、次いで、読み出されたビットの数Ｎ０を計数し、Ｅ０＝Ｎ０−０．７５・Ｎを計算し、ＣＷ１内の利用可能なセルからＭＳＢ０＿Ｂで示される一時的なセグメントに第１の０．２５・Ｎ−Ｅ０ビットを読み込む。記憶回路は、次いで、２つの一時的なセグメントを連結して完全なＭＳＢ０符号ワードを生成する。読出しステップ２５８及び２６２で、記憶回路は、図４Ｂ及び表３による、適したセグメントサイズ及びオフセットでＭＳＢ１又はＭＳＢ２符号ワードを同様に読み出す。
【０１０８】
図４Ａ、図４Ｂ、図５及び図６の構成は、あくまでも概念的な明瞭性のために示される例示的な構成であり、他の適した構成も用いることができる。例えば、他の適した数の符号ワード及びセルグループも用いることができる。別の例として、例えば、ＭＳＢ２＿ＡとＭＢＳ０＿Ｂ又はＭＳＢ１＿Ｂとを置き換えるなど、セルグループにおける符号ワードのセグメントの他の配列方式を選択することができる。
【０１０９】
図４Ａ、図４Ｂ、図５及び図６に記述される実施形態において、第２の段階中、エキストラセルは、典型的にスキップされる。しかし、代替的な実施形態において、記憶回路は、ユーザ、記憶管理、及び／又は任意の他の種類のデータを記憶するためにエキストラセルを用いることができる。
【０１１０】
前述の実施形態は例として挙げられており、本発明は、以上に具体的に示され記述されたものに限定されないことが理解されよう。むしろ、本発明の範囲は、前述された各種の特徴の組合せと部分的な組合せとの両方、並びに、当業者であれば前述の説明を読むことにより想到するであろう、従来技術に開示されていないそれらの変形及び修正を含む。参照により本特許出願に組み込まれる文献は、これらの組み込まれた文献において、いずれかの用語が、本明細書内で明示的又は暗示的になされた定義と矛盾するように定義されている範囲では、本明細書内の定義のみが考慮されるべきである点を除いて、本願の一体部分であると考慮されるべきである。
【図１】
2017504925.tif 000006
【図２】
2017504925.tif 000007
【図３Ａ】
2017504925.tif 000008
【図３Ｂ】
2017504925.tif 000009
【図４Ａ】
2017504925.tif 000010
【図４Ｂ】
2017504925.tif 000011
【図５】
2017504925.tif 000012
【図６】
2017504925.tif 000013
【手続補正書】
【提出日】平成28年6月28日(2016.6.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ記憶のための方法であって、
少なくとも外符号及び内符号を用いてデータを符号化し、該符号化データをメモリセルに記憶する前に必要に応じて前記符号化データを反転させることによって、前記データを前記メモリセルのグループに記憶することと、
前記符号化データを前記メモリセルから読み出すことと、
復号結果を生成するために、前記読み出された符号化データに内符号復号を適用することと、
前記内符号の前記復号結果に応じて、前記読み出されたデータの少なくとも一部を条件付きで反転させることと、
を含む方法。
【請求項２】
前記内符号が、有効な符号ワードの反転が別の有効な符号ワードを必ずしももたらさない符号を含み、前記内符号復号を適用することが、前記読み出された符号化データと前記読み出された符号化データの反転バージョンとの少なくとも一方を復号することを含む、請求項１に記載の方法。
【請求項３】
前記内符号復号を適用することが、前記読み出された符号化データと前記読み出された符号化データの前記反転バージョンとの両方を復号することを含み、前記読み出されたデータの前記少なくとも一部を条件付きで反転させることが、前記反転バージョンの前記復号結果が誤りなしであり、前記読み出された符号化データの前記復号結果が誤りなしではないときのみに、前記読み出されたデータの前記少なくとも一部を反転させることを含む、請求項２に記載の方法。
【請求項４】
前記データを記憶することが、前記データに関して、前記記憶されたデータが反転されているかどうかの反転インジケータを記憶することを含み、前記符号化データを読み出すことが、前記反転インジケータを読み出し復号することを含み、前記内符号復号を適用することが、前記反転インジケータに応じて、前記読み出された符号化データのみ又は前記読み出された符号化データの前記反転バージョンのみを復号することを含む、請求項２に記載の方法。
【請求項５】
前記読み出されたデータの前記少なくとも一部を条件付きで反転させることが、前記読み出された符号化データの前記復号結果が前記反転インジケータと矛盾するときに、前記読み出されたデータを反転させるかどうかを判断できないことを示すことを含む、請求項４に記載の方法。
【請求項６】
前記内符号が誤り検出符号を含み、前記読み出されたデータの前記少なくとも一部を条件付きで反転させることが、前記復号結果が前記内符号復号を全て１のワードに適用することの結果に等しいときに、前記読み出されたデータの前記少なくとも一部を反転させることを含み、前記復号結果が誤りなしであるときに、前記読み出されたデータの前記少なくとも一部を反転させないことを含む、請求項２に記載の方法。
【請求項７】
前記読み出されたデータの前記少なくとも一部を条件付きで反転させることが、前記読み出された符号化データの前記復号結果が前記読み出された符号化データの前記反転バージョンの前記復号結果と矛盾するときに、前記読み出されたデータを反転させるか否かを判断できないことを示すことを含む、請求項２に記載の方法。
【請求項８】
データ記憶のための装置であって、
メモリセルのアレイを備えるメモリと、
少なくとも外符号及び内符号を用いてデータを符号化し、該符号化データを前記メモリセルに記憶する前に必要に応じて前記符号化データを反転させることによって、前記データを前記メモリセルのグループに記憶し、前記符号化データを前記メモリセルから読み出し、復号結果を生成するために、前記読み出された符号化データに内符号復号を適用し、前記内符号の前記復号結果に応じて、前記読み出されたデータの少なくとも一部を条件付きで反転させる、ように構成される記憶回路と、
を備える装置。
【請求項９】
前記内符号が、有効な符号ワードの反転が必ずしも別の有効な符号ワードをもたらさない符号を含み、前記記憶回路が、前記読み出された符号化データと前記読み出された符号化データの反転バージョンとの少なくとも一方を復号するように構成される、請求項８に記載の装置。
【請求項１０】
前記記憶回路が、前記読み出された符号化データと前記読み出された符号化データの前記反転バージョンとの両方を復号し、前記反転バージョンの前記復号結果が誤りなしであり、前記読み出された符号化データの前記復号結果が誤りなしでないときのみに、前記読み出されたデータの前記少なくとも一部を反転させる、ように構成される、請求項９に記載の装置。
【請求項１１】
前記記憶回路が、前記データに関して、前記記憶されたデータが反転されているかどうかの反転インジケータを記憶し、前記反転インジケータを読み出し復号し、前記反転インジケータに応じて、前記読み出された符号化データのみ又は前記読み出された符号化データの前記反転バージョンのみを復号する、ように構成される、請求項９に記載の装置。
【請求項１２】
前記記憶回路が、前記読み出された符号化データの前記復号結果が前記反転インジケータと矛盾するときに、前記読み出されたデータを反転させるかどうかを判断できないことを示すように構成される、請求項１１に記載の装置。
【請求項１３】
前記内符号が誤り検出符号を含み、前記記憶回路が、前記復号結果が前記内符号復号を全て１のワードに適用することの結果と等しいときに、前記読み出されたデータの前記少なくとも一部を反転させ、前記復号結果が誤りなしであるときに、前記読み出されたデータの前記少なくとも一部を反転させない、ように構成される、請求項９に記載の装置。
【請求項１４】
前記記憶回路が、前記読み出された符号化データの前記復号結果が、前記読み出された符号化データの前記反転バージョンの前記復号結果と矛盾するときに、前記読み出されたデータを反転させるか否かを判断できないことを示すように構成される、請求項９に記載の装置。
【請求項１５】
データを記憶する方法であって、
メモリセルのグループにおいて、所与のプログラミング状態にプログラムされるべき前記グループ内の前記メモリセルの予想数を特定することと、
前記所与のプログラミング状態と隣のプログラミング状態との間の区切りを、前記所与のプログラミング状態にプログラムされるべき前記メモリセルの前記予想数に応じて設定することと、
前記設定された区切りを用いて前記グループ内の前記メモリセルをプログラミングすることと、
を含む方法。
【請求項１６】
前記隣のプログラミング状態が、前記所与のプログラミング状態を所定の分割比によって分割することにより生成され、前記メモリセルの前記予想数を特定することが、前記所与のプログラミングレベルにプログラムされた前記メモリセルの数を前記分割比を用いて評価することを含む、請求項１５に記載の方法。
【請求項１７】
前記メモリセルをプログラミングすることが、隣り合うメモリ状態の間のそれぞれの区切りが不均等となるように、前記メモリセルを複数のメモリ状態に設定することを含む、請求項１５に記載の方法。
【国際調査報告】
2017504925.tif 000014
2017504925.tif 000015