(57)【特許請求の範囲】
【請求項１】
第２のデータ状態に比べてメモリセル摩耗にとってより有害である第１のデータ状態によって表される第１の数量のデジットを有するｍデジットのデータを受信すること、
前記ｍデジットのデータをｎデジットのデータにエンコードすることであって、前記ｎデジットのデータは、前記第１のデータ状態によって表される第２の数量のデジットを有し、ｎはｍより大きく、かつ、前記ｍデジットのデータの考えられる全ての組合せにおいて、前記第２の数量は、前記第１の数量以下である、符号化（ｅｎｃｏｄｅ）すること、および、
前記ｎデジットのデータを、メモリセルを有する装置に記憶することを含む方法。
【請求項２】
前記装置から前記ｎデジットのデータを取出すこと、および、
前記ｎデジットのデータを前記ｍデジットのデータに復号することをさらに含む請求項１に記載の方法。
【請求項３】
前記装置はメモリデバイスを備え、ホストと前記メモリデバイスとの間で前記ｎデジットのデータを通信することをさらに含み、前記符号化することおよび前記復号することは、前記ホストで起こる請求項２に記載の方法。
【請求項４】
前記ｎデジットのデータは、ｗ１〜ｗ２の範囲内で前記第１のデータ状態によって表される、ある数量のデジットを有し、ｗ２は、ｗ１以上であり、
前記ｎデジットのデータをｍデジットのデータに復号することは、
最上位デジットｂ１で始めて最下位デジットｂｎまで、各デジットｂｉについて、数量
【数１】
0005785330.tif 000009
を決定することであって、ｌ（ｐ，ｉ）は、ｐ−（ｂ１ｂ２…ｂｎ内の最初の（ｉ−１）デジットの和）に等しい、決定すること、および、
前記ｎデジットのデータに対応する前記ｍデジットのデータについて等価な整数として値
【数２】
0005785330.tif 000010
を決定することであって、論理「１」は前記第１のデータ状態によって表される、決定することを含む請求項３に記載の方法。
【請求項５】
前記方法は、前記ｎデジットのデータを前記メモリデバイスに記憶することをさらに含み、ｗ１は０より大きく、ｗ２はｎ以下である請求項４に記載の方法。
【請求項６】
ｗ２はｎ／２以下である請求項５に記載の方法。
【請求項７】
前記符号化することは、
前記ｍデジットのデータを受信すること、
Ｌ＝Ｒおよびｉ＝１に設定することであって、Ｒは、前記ｍデジットのデータに等価な整数である、設定すること、
各ｉについて、ｉがｎを超えるまで、
【数３】
0005785330.tif 000011
を決定することであって、ｌ（ｐ，ｉ）＝ｐ−（ｂ１ｂ２…ｂｎ内の第１の（ｉ−１）のデジットの和）である、決定すること、
Ｒ＞Ｓｉである場合、ｂｉ＝１に、又は、Ｒ≦Ｓｉである場合、ｂｉ＝０に設定すること、および、
Ｒ＝Ｒ−Ｓｉでかつｉ＝ｉ＋１になるよう更新すること
を反復して実施することを含み、
ｗ１は０より大きく、ｗ２はｎ／２以下である請求項６に記載の方法。
【請求項８】
前記ｎデジットのデータは、辞書式に順序付けされたリストの要素であり、ｎデジットのデータの各デジットは、前記第２のデータ状態に比べて、メモリセル摩耗にとってより有害である複数のデータ状態の１つのデータ状態によって表され、
前記ｍデジットのデータを決定することは、Ｉを
【数４】
0005785330.tif 000012
として決定することを含み、ここで、ｎｓ（ｘ１，ｘ２，…，ｘｊ−１，ｍ）は、ｘ１，ｘ２，…，ｘｊ−１，ｍで始まるｎデジットのデータの数である請求項７に記載の方法。
【請求項９】
前記装置はメモリデバイスを備え、ホストと前記メモリデバイスとの間で前記ｍデジットのデータを通信することをさらに含み、前記符号化することおよび前記復号することは、前記メモリデバイスで起こる請求項２に記載の方法。
【請求項１０】
前記ｎデジットのデータは、ある集合Ｓの考えられるコードワードの１つのコードワードであり、｜Ｓ｜は、集合Ｓ内のコードワード要素の数量であり、ｍ＝ｆｌｏｏｒ（ｌｏｇ２｜Ｓ｜）である請求項９に記載の方法。
【請求項１１】
装置であって、
メモリと、
コントローラと
を備え、前記コントローラは、前記メモリに通信可能に結合され、
第２のデータ状態に比べてメモリセル摩耗にとってより有害である第１のデータ状態によって表される第１の数量のデジットを有するｍデジットのデータを受信し、
前記ｍデジットのデータをｎデジットのデータにエンコードし、前記ｎデジットのデータは、前記第１のデータ状態によって表される第２の数量のデジットを有し、ｎはｍより大きく、かつ、前記ｍデジットのデータの考えられる全ての組合せにおいて、前記第２の数量は、前記第１の数量以下であり、
前記ｎデジットのデータを、メモリセルを有する前記メモリに記憶する
ように構成される装置。
【請求項１２】
前記ｎデジットのデータは、異なるｎデジットのデータの集合Ｓの要素であり、ｍは、ｆｌｏｏｒ（ｌｏｇ２｜Ｓ｜）以下である請求項１１に記載の装置。
【請求項１３】
それぞれのｍデジットのデータは、列挙コーディングを使用して前記異なるｎデジットのデータの集合Ｓの一意のｎデジットのデータに関連付けられる請求項１２に記載の装置。
【請求項１４】
前記コントローラは、集合Ｓの前記ｎデジットのデータのそれぞれを、対応するｍデジットのデータに復号するようにさらに構成される請求項１３に記載の装置。
【請求項１５】
ｍはｆｌｏｏｒ（ｌｏｇ２｜Ｓ｜）に等しい、請求項１４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、半導体メモリデバイスおよび方法に関し、より詳細には、メモリエンデュランスのために動作させる方法に関する。
【背景技術】
【０００２】
メモリデバイスは、通常、コンピュータまたは他の電子デバイス内で内部の半導体、集積回路として設けられる。とりわけ、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、抵抗性メモリ（たとえば、ＲＲＡＭ（登録商標））、およびフラッシュメモリを含む多くの異なるタイプのメモリが存在する。
【０００３】
メモリデバイスは、広い範囲の電子的アプリケーションのための揮発性および不揮発性データストレージとして利用される。たった１つのタイプのメモリであるフラッシュメモリは、通常、高いメモリ密度、高い信頼性、および低い電力消費を可能にする１トランジスタメモリセルを使用する。不揮発性メモリは、たとえば、パーソナルコンピュータ、携帯型メモリスティック、固体ドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）（ＳＳＤ）、デジタルカメラ、携帯電話、ＭＰ３プレーヤなどの携帯型音楽プレーヤ、ムービープレーヤ、および他の電子デバイスにおいて使用することができる。メモリセルはアレイで配列されることができ、アレイはメモリデバイスで使用される。
【０００４】
メモリデバイスのメモリセルは、所望のデータ状態になるようプログラムされうる。たとえば、単一レベルセル（ｓｉｎｇｌｅ  ｌｅｖｅｌ  ｃｅｌｌ）（ＳＬＣ）は、論理ハイまたはバイナリ「１」のデータ状態あるいは論理ローまたはバイナリ「０」のデータ状態などの２つのデータ状態の一方になるようプログラムされうる。マルチレベルセル（ｍｕｌｔｉｌｅｖｅｌ  ｃｅｌｌ）（ＭＬＣ）は、２を上回るデータ状態の１つになるようプログラムされうる。たとえば、いくつかのフラッシュＭＬＣメモリセルは、４つのデータ状態、８つのデータ状態、または１６のデータ状態（たとえば、１１１１、０１１１、００１１、１０１１、１００１、０００１、０１０１、１１０１、１１００、０１００、００００、１０００、１０１０、００１０、０１１０、および１１１０）の１つのデータ状態になるようプログラムされることができ、これらのデータ状態のそれぞれは、電荷貯蔵構造（たとえば、浮遊ゲート）上に加えられるかまたはそこから除去される、それぞれの電荷量によって表される。メモリセルは、構造の一部として１つまたは複数のノードを有することができる。したがって、ＭＬＣは、メモリセルの数を増やすことなく、高い密度のメモリの製造を可能にしうる。その理由は、各セルが、２つのデータ状態の一方になるようプログラムされ、したがって、２ビット以上を記憶することができるからである。これらのＭＬＣの場合、最も低いデータ状態は、通常、消去状態を超えてプログラムされない。すなわち、セルが最も低いデータ状態になるようプログラムされる場合、セルは、たとえばプログラミング動作中にセルに電荷が貯蔵されているのではなく、消去状態のままである。他の１５のデータ状態は「非消去（ｎｏｎ−ｅｒａｓｅｄ）」状態と呼ばれうる。
【０００５】
いくつかのメモリセルは、メモリセルがさらされるプログラムおよび消去サイクルの数量に比例する摩耗を有する。すなわち、メモリセル性能は、反復使用と共に劣化しうる。フラッシュＭＬＣが劣化する程度はまた、プログラムされるときに貯蔵される電荷の量に比例する。すなわち、比較的大量の電荷量の貯蔵によって表されるデータ状態は、比較的少量の電荷量の貯蔵によって表されるデータ状態に比べて比較的速くメモリセルを摩耗させる傾向がある。
【図面の簡単な説明】
【０００６】
【図１】本開示の１つまたは複数の実施形態による、メモリを含むコンピューティングシステムの形態の装置の機能ブロック図である。
【図２Ａ】本開示の１つまたは複数の実施形態による符号化動作の機能ブロック図である。
【図２Ｂ】本開示の１つまたは複数の実施形態による符号化動作の機能ブロック図である。
【図３Ａ】本開示の１つまたは複数の実施形態による復号動作の機能ブロック図である。
【図３Ｂ】本開示の１つまたは複数の実施形態による復号動作の機能ブロック図である。
【図４】本開示の１つまたは複数の実施形態による、３ビットのデータを４ビットインデックスにマッピングすることを示す図である。
【図５】本開示の１つまたは複数の実施形態による、３ビットのデータを５ビットインデックスにマッピングすることを示す図である。
【図６】本開示の１つまたは複数の実施形態による、装置に関わるメモリエンデュランス動作の機能ブロック図である。
【発明を実施するための形態】
【０００７】
１つの例示的な方法は、第２のデータ状態に比べてメモリセル摩耗にとって有害である第１のデータ状態によって表される第１の数量のデジットを有するｍデジットのデータを受信することを含みうる。ｍデジットのデータは、第１のデータ状態によって表される第２の数量のデジットを有するｎデジットのデータにエンコードされる。値ｎは値ｍより大きい。第２の数量は第１の数量以下である。第３の数量は第２の数量より大きい。ｎデジットのデータは、メモリセルを有する装置に記憶される。
【０００８】
本開示の以下の詳細な説明では、添付図面が参照され、添付図面は、本開示の一部を形成し、また、添付図面において、本開示の１つまたは複数の実施形態をどのように実施することができるかが例証として示される。これらの実施形態は、本開示の実施形態を当業者が実施することを可能にするのに十分に詳細に述べられ、また、他の実施形態を実施することができること、および、本開示の範囲から逸脱することなく、プロセス変更、電気的変更および／または構造的変更を行うことができることが理解される。本明細書で使用されるように、指定子「Ｎ」は、特に図面の参照数字に関して、そのように指定された特定の特徴の１つまたは複数が本開示の１つまたは複数の実施形態に関して含まれうることを示す。
【０００９】
本明細書の図は、番号付け慣行に従い、最初の１つまたは複数の桁が図面の図番に対応し、残りの桁が、図面内の要素またはコンポーネントを特定する。異なる図の間の同様の要素またはコンポーネントは、同様の桁の使用によって特定することができる。理解されるように、本明細書の種々の実施形態で示す要素は、本開示の多数のさらなる実施形態を提供するために、付加されうる、交換されうる、かつ／またはなくされうる。さらに、図で提供される要素の割合および相対的なスケールは、本開示の種々の実施形態を示すことを意図され、制限的な意味で使用されない。
【００１０】
メモリは、反復されるプログラムおよび／または消去サイクルの後に益々劣化した性能および／または故障（摩耗と呼ばれることが多い）を経験しうる。メモリの摩耗に対処する従来のアプローチは、いわゆる摩耗平準化（ｗｅａｒ  ｌｅｖｅｌｉｎｇ）である。摩耗平準化は、メモリセルのある部分が他の部分に比べて速く摩耗することを回避するために、メモリセルを均等に（ｕｎｉｆｏｒｍｌｙ）使用しようと試み、それにより、孤立した摩耗によるスポット故障を防止するよう試みることによってメモリエンデュランスを増加させることができる。摩耗平準化技法は、「ガーベジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）」技法などの静的および／または動的な摩耗平準化技法を含みうる。従来の摩耗平準化技法は、通常、既に起こった摩耗のある評価基準に応答する。たとえば、摩耗平準化技法を、プログラム／消去サイクル計数または他の摩耗メトリックに基づいてトリガーすることができる。本開示の実施形態の少なくともいくつかの実施形態による装置および方法は、摩耗が起こる前に摩耗を回避することなどによる、異なる方法でメモリ摩耗に対処する。
【００１１】
図１は、本開示の１つまたは複数の実施形態による、少なくとも１つのメモリデバイス１０４を含むコンピューティングシステム１００の形態の装置の機能ブロック図である。図１に示す実施形態では、メモリデバイス１０４、たとえば固体ドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）（ＳＳＤ）、サムドライブ（ｔｈｕｍｂ  ｄｒｉｖｅ）などは、物理的ホストインタフェース１０６、コントローラ１０８、たとえばプロセッサ、制御回路要素（ｃｉｒｃｕｉｔｒｙ）など、および、メモリ１１０、たとえば１つまたは複数のメモリセルの配置構成を含みうる。１つまたは複数の実施形態では、コントローラ１０８は、物理的インタフェース１０６およびメモリ１１０を含むプリント回路基板に結合した特定用途向け集積回路（ＡＳＩＣ）でありうる。
【００１２】
図１に示すように、コントローラ１０８は、物理的ホストインタフェース１０６およびメモリ１１０に結合されうる。物理的ホストインタフェース１０６は、メモリデバイス１０４とホスト１０２などの別のデバイスとの間で情報を通信するために使用されうる。ホスト１０２は、メモリアクセスデバイス、たとえばプロセッサ、および／または他のコンピューティングコンポーネントを含みうる。「プロセッサ（ａ  ｐｒｏｃｅｓｓｏｒ）」が、並列処理システム、コプロセッサの１つまたは複数などのような１つまたは複数のプロセッサを意図しうることを当業者は理解するであろう。ホストの例は、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル記録および再生デバイス、モバイル電話、ＰＤＡ、メモリカードリーダ、インタフェースハブ、および同様なものを含む。例として、メモリデバイス１０４は、携帯型ＳＳＤを含みうるが、それに限定されない。本開示の方法は、たとえば、コントローラ１０８および／またはホスト１０２によって実装されうる。
【００１３】
１つまたは複数の実施形態について、物理的ホストインタフェース１０６は、標準化されたインタフェースの形態でありうる。たとえば、メモリデバイス１０４がコンピューティングシステム１００内でデータ記憶のために使用されるとき、物理的ホストインタフェース１０６は、コネクタおよびインタフェースの中でもとりわけ、シリアル・アドバンスド・テクノロジー・アタッチメント（ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）（ＳＡＴＡ）、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）（ＰＣＩｅ）、またはユニバーサルシリアルバス（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）（ＵＳＢ）でありうる。しかし、一般に、物理的ホストインタフェース１０６は、メモリデバイス１０４と、物理的ホストインタフェース１０６用の互換性のあるレセプタを有するホスト１０２との間で、コントロール、アドレス、データ、および他の信号を渡すためのインタフェースを提供しうる。
【００１４】
コントローラ１０８は、動作の中でもとりわけ、データを読出す、書込む、消去するために、メモリ１１０と通信しうる。コントローラ１０８は、１つまたは複数の集積回路および／またはディスクリートコンポーネントとすることができる回路要素を有しうる。１つまたは複数の実施形態について、コントローラ１０８内の回路要素は、メモリ１１０にわたるアクセスを制御するための制御回路要素およびホスト１０２とメモリデバイス１０４との間の変換層を提供するための回路要素を含むことができる。そのため、メモリコントローラは、メモリ１１０のＩ／Ｏ接続（図１には示さず）を選択的に結合して、適切な時間に適切なＩ／Ｏ接続において適切な信号を受信することができる。同様に、ホスト１０２とメモリデバイス１０４との間の通信プロトコルは、メモリ１１０のアクセスに必要とされるものと異なるとすることができる。コントローラ１０８は、次に、ホストから受信されたコマンドを適切なコマンドに変換して、メモリ１１０に対する所望のアクセスを達成しうる。
【００１５】
メモリ１１０は、非一時的媒体であり、メモリセル、たとえば不揮発性メモリセルの１つまたは複数のアレイを含むことができる。アレイは、たとえば、ＮＡＮＤアーキテクチャを有するフラッシュアレイでありうる。ＮＡＮＤアーキテクチャでは、「行（ｒｏｗ）」のメモリセルの制御ゲートを、アクセス、たとえばワード、ラインに結合することができ、一方、メモリセルを、セレクトゲートソーストランジスタとセレクトゲートドレイントランジスタとの間で「ストリング（ｓｔｒｉｎｇ）」でソースからドレインに直列に結合されうる。ストリングは、セレクトゲートドレイントランジスタによって、データ、たとえば、ビット、ラインに接続されうる。用語「行（ｒｏｗ）」および「ストリング」の使用は、メモリセルのリニア配置構成も直交配置構成もどちらも示唆はしていない。当業者によって理解されるように、ビットラインおよびソースラインに対するメモリセルの接続方法は、アレイが、ＮＡＮＤアーキテクチャであるか、ＮＯＲアーキテクチャであるか、または何らかの他のメモリアレイアーキテクチャであるかに依存する。本開示の方法および装置はまた、たとえばＤＲＡＭ、ＰＣＲＡＭ、および／またはＲＲＡＭメモリで通常使用されるメモリセルなどの他のメモリセルに関して使用されうるかまたは実装されうる。
【００１６】
メモリ１１０は、グループ化されうるメモリセルの１つまたは複数を含みうる。本明細書で使用されるように、ページ、ブロック、プレーン、ダイ、全アレイ、またはメモリセルの他のグループなどのグループは、１つまたは複数のメモリセルを含みうる。たとえば、いくつかのメモリアレイは、メモリセルのブロックを構成するメモリセルのページの１つまたは複数を含みうる。ブロックの１つまたは複数は、メモリセルのプレーンに含まれうる。メモリセルのプレーンの１つまたは複数は、ダイに含まれうる。例として、１２８ＧＢメモリデバイスは、１ページ当たり４３１４バイトのデータ、１ブロック当たり１２８ページ、１プレーン当たり２０４８ブロック、および１デバイス当たり１６プレーンを含みうる。
【００１７】
メモリ１１０は、チャネルの１つまたは複数を含むことができ、各チャネルは、ダイの１つまたは複数を含みうる。各チャネルは、論理ユニット番号（ｌｏｇｉｃａｌ  ｕｎｉｔ  ｎｕｍｂｅｒ）（ＬＵＮ）を使用して編成されうる。メモリ１１０にデータを書込むとき、データは、チャネルの番号およびＬＵＮにわたって費やされうる。メモリデバイスでは、物理的ページは、書込むかつ／または読出すユニット、たとえば、共に書込まれるかつ／または読出されるセルの１つまたは複数を指しうる、または、メモリセルの機能グループと呼ばれうる。偶数ページおよび奇数ページは、別個の書込み動作および／または読出し動作によって書込まれうるかつ／または読出されうる。マルチレベルセル（ＭＬＣ）を含む実施形態の場合、物理的ページは、データの上側ページと下側ページに論理的に分割されうる。たとえば、１つのメモリセルは、１つまたは複数のビットをデータの上側ページに寄与させ、１つまたは複数のビットをデータの下側ページに寄与させうる。したがって、論理的な上側ページおよび論理的な下側ページが共に、同じ物理的ページの一部であるため、データの上側ページおよび下側ページは、１回の書込みおよび／または読出し動作の一部として書込まれうるかつ／または読出されうる。
【００１８】
図１の実施形態は、本開示の実施形態を曖昧にしないために示されないさらなる回路要素を含みうる。たとえば、メモリデバイス１０４は、Ｉ／Ｏ回路要素を通してＩ／Ｏ接続を通じて提供されるアドレス信号をラッチするアドレス回路要素を含みうる。アドレス信号は、メモリ１１０にアクセスするために、行デコーダおよび列デコーダによって受信され復号されうる。アドレス入力接続の数が、メモリ１１０の密度およびアーキテクチャに依存しうることが当業者によって理解されるであろう。
【００１９】
図２Ａおよび図２Ｂは、本開示の１つまたは複数の実施形態による符号化動作の機能ブロック図である。電荷貯蔵メモリセルが有限のエンデュランスを有しうることが認められた。プログラムおよび消去サイクルの数量は、メモリセルに記憶されるデータの信頼性に影響を及ぼしうる。メモリセルがさらされるプログラム／消去サイクルの数量が多ければ多いほど、セルによって記憶されたデータを正確に決定することの信頼性が低くなる。反復しておよび／または高い電圧レベルで反復してメモリセルをプログラムすることは、メモリセルの物理的劣化を引起し、エンデュランスの低下をもたらしうる。本明細書で使用されるメモリエンデュランスは、たとえば、時間によって測定することができる、メモリの使用寿命の継続期間を指す。
【００２０】
いくつかの過去のアプローチは、あるメモリセルを他のメモリセルに比べて速く摩耗させないように、利用可能なメモリセルにわたってより均等にプログラム／消去サイクルを拡散させようと試みるときの摩耗平準化を対象としてきた。本開示の１つまたは複数の実施形態によれば、メモリエンデュランスを増加させる別のアプローチは、まず第１にメモリセルのプログラミング／消去サイクルを最小にする、かつ／または、比較的大量の貯蔵電荷によって表されるデータ状態になるメモリセルのプログラミングを最小にすることである。比較的大量の貯蔵電荷は、比較的少量の貯蔵電荷によって表されるデータ状態に比べてメモリセルを速く摩耗させる傾向がある。
【００２１】
こうした出来事を最小にする１つの解決策は、データを記憶するために使用されるメモリセルのより少数が、比較的大量の貯蔵電荷によって表されるデータ状態になるようプログラムされるように、記憶されるデータをスキューさせることである。本明細書で使用するプログラミングは、所望のデータ状態にメモリセルを選択的に置くことを指し、メモリセルのデータ状態を、消去状態から非消去状態に、非消去状態から消去状態に、および／または、１つの非消去状態から別の非消去状態に変更することを含みうる。非消去状態は、通常、消去状態に比べてメモリセル摩耗にとって有害である。メモリセルがどのようにプログラムされるかによって、たとえば、メモリセルが、（たとえば、「より高い（ｈｉｇｈｅｒ）」データ状態をプログラムするために）より長い継続期間および／またはより大きな電圧でプログラムされる場合、あるデータ状態は、他のデータ状態に比べてメモリセル摩耗にとって有害であるとすることができる。さらに、メモリセルを消去しなければならないというプロセスはまた、メモリセル摩耗に寄与しうる。異なるデータ状態は、それぞれの特定の状態に関連する有害の程度を反映するために異なるように重み付けされうる。
【００２２】
１つまたは複数の実装態様によれば、「０」データ状態は消去状態にマッピングされ、「１」データ状態は非消去状態にマッピングされる。しかし、本開示の実施形態は、そのように限定されず、「０」データ状態が非消去状態にマッピングされ、「１」データ状態が消去状態にマッピングされる実装態様に適用されうる。
【００２３】
本開示の他の実施形態では、消去状態が非消去状態に比べてメモリセル摩耗にとって有害である場合があることを当業者は認識するであろう。たとえば、本明細書で述べる方法が、同様に適用されて、非消去状態ではなく消去状態を最小にするかまたはそれに重み付けし、それにより、非消去状態ではなく消去状態を記憶する選好を反映しうる。
【００２４】
通常、消去状態は、メモリセルに記憶された基準電圧レベル（たとえば、グラウンド電圧レベル、約０ボルトなど）によって公称的に表される閾値電圧の範囲にマッピングされうる。たとえば、消去状態は、電荷がないメモリセルを指すとすることができる。消去状態はまた、負の電圧レベル、たとえば−２ボルト、または、非消去状態の正の電圧より小さい正の電圧などの非基準電圧レベルによって公称的に表される閾値電圧の範囲にマッピングされうる。非消去データ状態は、ＳＬＣメモリセルに記憶された非基準電圧レベル（たとえば、１ボルトなどのグラウンド以外の電圧レベル）によって公称的に表される閾値電圧の範囲にマッピングされうる。
【００２５】
特定の非消去状態は、ＭＬＣメモリセルに記憶された異なる非基準電圧レベルによって公称的に表されるいくつかの異なる閾値電圧範囲の１つの範囲にマッピングされうる。少なくとも１つの実施形態では、非消去状態は、消去セルの公称電圧より比較的高い公称電圧レベル（たとえば、＋１ボルト）にマッピングされうる。
【００２６】
以下に続く議論に関して、本開示の装置および方法は、２つのデータ状態、すなわち、「０」データ状態と「１」データ状態だけを有するＳＬＣに関わる例示的な実装態様に基づいて主に示されることになり、「０」データ状態は、メモリセル内に電荷が全く貯蔵されていないこと（すなわち、約０ボルト）に対応する消去状態にマッピングされ、「１」データ状態は、メモリセル内に電荷が貯蔵されていること（すなわち、約１ボルト）に対応する非消去状態にマッピングされる。
【００２７】
さらに、先の実施形態では、「０」データ状態（すなわち、電荷なしの状態）は、「１」データ状態（すなわち、電荷が貯蔵された状態）に比べて、メモリセル摩耗にとって有害でないと仮定される。したがって、こうした実施形態では、「０」データ状態を使用してメモリセルにデータを記憶することは好ましく、「１」データ状態を使用してメモリセルにデータを記憶することは好ましくない。しかし、本開示の実施形態は、そのように限定されず、本開示の装置および方法が、メモリセルの摩耗にとってより有害であるデータ状態の使用を減じようとすることによって、メモリセルの物理的状態に対するデータ状態の異なるマッピングに適用されうることが理解されるであろう。
【００２８】
メモリデバイスに記憶されるデータは、「１」データ状態ではなく「０」データ状態を使用することについての上述した選好を尊重することを期待できない。すなわち、バイナリの均等に分布したランダムデータの場合、特定のデジットのデータが論理「０」である確率が５０％であり、特定のデジットのデータが論理「１」である確率も５０％である。すなわち、特定のデジットのデータが論理「０」または論理「１」であるという同等のチャンスが存在する。
【００２９】
本開示の１つまたは複数の実施形態によれば、記憶されるデータは、第２のデータ状態（たとえば、この例では「１」データ状態）によって表されるデジット（たとえば、ビット）の数量以上である、第１のデータ状態（たとえば、この例では「０」データ状態）によって表されるデジット（たとえば、ビット）の数量を有するようにデータが制約されるように符号化されることができ、第２のデータ状態は、第１のデータ状態に比べて摩耗にとって有害である（本明細書で使用されるように、「第１（ｆｉｒｓｔ）」および「第２（ｓｅｃｏｎｄ）」は、１つのデータ状態を別のデータ状態から区別するために使用されるだけであり、データ状態の任意の特定の順序または数を示唆するように読取られるべきでない）。こうして、データがメモリデバイスに直接（たとえば、非符号化状態で）記憶された場合に「１」データ状態になるようプログラムされているよりも少数のメモリセルが、「１」データ状態になるようプログラムされることになる。「１」データ状態は、この例では、メモリセル摩耗にとって有害であると予想されるため、「１」のビットの数量以上である「０」のビットの数量を有する符号化データの記憶は、全体的にメモリデバイスの少ない摩耗をもたらすはずであり、したがって、メモリデバイスのエンデュランスを増加させるはずである。
【００３０】
種々の実施形態によれば、入力データは、符号化データにおいて、より多くの「０」に向けてデータをスキューさせるコードを使用して、メモリデバイスに記憶するための符号化データにマッピングされることができ、このことは、非符号化入力データに比べて有害なデータ状態になるようなプログラミングを少なくさせることになる。本開示の装置および方法を示すために本明細書で使用される例は、例について上述した仮定の下で０がより有害でないため、符号化データにおいては１ではなく０を好むが、本開示の装置および方法は、１がメモリセルにとってより有害でない他のマッピングシナリオ（たとえば、「０」データ状態は、メモリセルに記憶された公称の正電圧に対応する非消去状態にマッピングされ、「１」データ状態は、メモリセルに記憶されたゼロまたは負の公称閾値電圧に対応する消去状態にマッピングされる）に適用されうることが留意されるべきである。１が、０に比べてメモリセルにとって有害でない実装態様の場合、符号化は、入力データが直接記憶された場合に比べて有害なデータ状態になるようなプログラミングを少なくさせるはずである、符号化データにおいてより多くの１に向けてデータをスキューさせるコードを使用してメモリデバイスに記憶するための符号化データに入力データをマッピングするように構成されうる。
【００３１】
ＳＬＣメモリセルにおいて１に比べて０がメモリセルにとってより有害でないと仮定される例に戻り、また、ランダム入力データ（たとえば、未処理ユーザデータ）が与えられる場合、入力データを表すメモリデバイスに記憶されるコード化データにおいて１に対して０の分布をスキューさせる技法が提示される。考えられるデータ状態の間で均等に分布するランダム入力データに本開示の技法が適用されると、入力データを直接記憶する場合に比べて、より少数のメモリセルが、より有害なデータ状態になるようプログラムされると予想されるため、メモリにとって少ない摩耗をもたらしうる。この技法は、列挙コーディング（数え上げ符号化）の原理を使用する。
【００３２】
入力データから、記憶される符号化データへの符号化、および、記憶された符号化データから入力データへの復号は、メモリデバイスにおいて、および／または、メモリデバイスに通信する前のホストにおいてハードウェアおよび／またはソフトウェアで達成されうる。たとえば、メモリセルおよび／またはアレイ設計を変更することに頼らない回路が使用されうる。
【００３３】
図２Ａは、入力２１４および出力２１６を有するエンコーダ２１２を示す。エンコーダ２１２は、メモリデバイスおよび／またはホストにおいてハードウェアおよび／またはソフトウェアで実装されうる。エンコーダ２１２は、たとえばホストから、入力２１４にてｍビットのデータでありうるｍデジットデータワード２１８として本明細書で別途示されまた呼ばれるｍデジットのデータを受信し、出力２１６にてｎデジットコードワード２２０として本明細書で別途示されまた呼ばれるｎデジットのデータを生成しうる。本明細書で使用されるように、「デジット（ｄｉｇｉｔ）」は、バイナリデジット（「ビット（ｂｉｔ）」）、１６進（ｈｅｘａｄｅｃｉｍａｌ）デジットなどのデータのデジットを指し、その代表的なメンバは、対応する信号レベルまたは信号レベルの対応する範囲によって表されうる。
【００３４】
本明細書で使用されるように、「データワード（ｄａｔａｗｏｒｄ）」は、入力データ、たとえば未処理ユーザデータなどのデータのデジットの組合せを指す。「コードワード（ｃｏｄｅｗｏｒｄ）」は、データワードにマッピングされたインデックスなどによって、データワードを符号化するデータのデジットの組合せを指す。ｎデジットコードワード２２０は、ｍデジットデータワード２１８に一意に対応することができ、したがって、ｍデジットデータワード２１８の代わりにメモリデバイスに記憶されうる。ｎデジットコードワード２２０は、オリジナルのｍデジットデータワード２１８に比べて有害なデータ状態になるようプログラムされることをメモリセルに要求することになるデジットが少なくなるように選択されうるため、メモリデバイスは、所定期間にわたって少ない摩耗を生じるはずであり、それにより、エンデュランスを増加させる。
【００３５】
図２Ｂは、入力２２４および出力２２６を有するエンコーダ２２２を示す。エンコーダ２２２は、メモリデバイスおよび／またはホストにおいてハードウェアおよび／またはソフトウェアで実装されうる。エンコーダ２２２は、入力２２４にて整数２２８、Ｒを受信し、出力２２６にて、インデックス整数２３０、Ｘを生成することができ、インデックス整数２３０、Ｘは、Ｒの代わりにメモリデバイスに記憶されうる。整数２２８、Ｒは、ｍデジットデータワードの１０進値であり、Ｘは、入力整数Ｒに一意に対応するｎデジットコードワードの１０進値でありうる。
【００３６】
図３Ａおよび図３Ｂは、本開示の１つまたは複数の実施形態による復号動作の機能ブロック図である。図３Ａは、入力３３４および出力３３６を有するデコーダ３３２を示す。デコーダ３３２は、メモリデバイスおよび／またはホストにおいてハードウェアおよび／またはソフトウェアで実装されうる。デコーダ３３２は、入力３３４にてｎデジットコードワード３２０を受信し、出力３３６にて、ｍデジットデータワード３１８を生成しうる。ｎデジットコードワード３２０は、ｍデジットデータワード３１８に一意に対応しうる。ｎデジットコードワード３２０は、メモリデバイスから取出され、ｍデジットデータワード３１８を生成するために復号されることができ、ｍデジットデータワード３１８は、メモリアクセスの結果として、たとえばホストに戻されうる。
【００３７】
図３Ｂは、入力３４０および出力３４２を有するデコーダ３３８を示す。デコーダ３３８は、メモリデバイスおよび／またはホストにおいてハードウェアおよび／またはソフトウェアで実装されうる。デコーダ３３８は、入力３３４にてインデックス整数３３０、Ｘを受信し、出力３４２にて、整数３２８、Ｒを生成しうる。ここで、Ｒは、ｍデジットデータワードの値でありうる。Ｘは、ｍデジットデータワードに一意に対応するｎデジットコードワードの値でありうる。インデックス整数３３０、Ｘは、メモリデバイスから取出され、整数３２８、Ｒを生成するために復号されることができ、整数３２８、Ｒは、メモリアクセスの結果として戻されうる。
【００３８】
図４は、本開示の１つまたは複数の実施形態による、３ビットのデータを４ビットインデックスにマッピングすることを示す。本開示の１つまたは複数の実施形態によれば、数量ｎは数量ｍより大きい。たとえば、バイナリ環境では、メモリデバイスに実際に記憶されたｎデジットコードワードは、入力ｍデジットデータワードより多くのビットを有する。しかし、本開示の実施形態は、ｍおよび／またはｎについての任意の特定の値に限定されない。すなわち、ｍは、本開示で示す例で使用される値より大きいかまたは小さい場合がある。たとえば、ｍは１６（または、何らかの他の非ゼロの正整数の数量）とすることができ、ｎは１７（または、ｍより大きい、何らかの他の非ゼロの正整数の数量）とすることができる。
【００３９】
少数のビットを記憶することによって達成されるエンデュランスに優る、エンデュランスを増加させる方法としてより多くのビットを記憶することは、最初は反直感的であるように見える場合がある。しかし、図４および図５のマッピング例は、本開示の装置および方法によって達成可能な効率の例を示すことになる。図４は、３ビットの入力データ（たとえば、ｍビットデータワード）についての考えられるビットの組合せを含む第１の表（左側）、および、４ビットの符号化データ（たとえば、ｎビットコードワード）についての考えられるビットの組合せを含む第２の表（右側）を示す。考えられる３ビットの組合せ４４６は、第１の表の１つの列に示され、それぞれの３ビットの組合せに対応する整数４４４は、第１の表の別の列に示される。考えられる４ビットの組合せ４４８は、第２の表の１つの列に示され、それぞれの４ビットの組合せに対応する整数４５２は、第２の表の別の列に示される。さらに、第２の表は、それぞれの４ビットの組合せが１の数量以上である０の数量を含むかどうかについての指示４５０を含み、「Ｙ」、すなわち、はいの場合、組合せは、１と少なくとも同数の０を含み、「Ｎ」、すなわち、いいえの場合、組合せは、１と少なくとも同数の０を含まない。
【００４０】
第１の表の行エントリと第２の表の行エントリの間に引かれたライン、たとえば４５４、４５６は、両者の間の例示的なマッピングを示し、そのマッピングは、入力される３ビットの入力データを直接（すなわち、非符号化状態で）記憶するときに関わることになるよりも少数の「１」データ状態が、符号化される４ビットのデータ（たとえば、ｎビットコードワード）を記憶するときに関わることを可能にする。たとえば、「０００」の３ビットの組合せは、４５４で示すように、「００００」の４ビットの組合せに対応しうる。４ビットの組合せが、入力される３ビットの組合せに対応するＳＬＣメモリデバイスに実際に記憶されるために、１つのさらなるメモリが必要とされるが、さらなるメモリセルは、入力される３ビットのデータがメモリデバイスに直接記憶された場合に比べて、より有害なデータ状態（たとえば、この例の場合、「１」データ状態）になるようにプログラムされないことが理解されるであろう。
【００４１】
同じ結果が、最初の７個のビットの組合せのそれぞれについて起こる。すなわち、最初の７個の示すビットの組合せの場合、３ビットの組合せが、最上位の「０」ビットを有する４ビットの組合せにマッピングされる。こうした場合のそれぞれにおいて、４ビットの組合せは、１の数量以上である０の数量を有する。それぞれのこうした場合、最上位の「０」ビットは、利用可能なＳＬＣメモリのさらなる部分を使用するが、さらなるメモリセルが、より有害であると予想されるデータ状態になるようプログラムされないため、さらなるビットは、メモリにとってさらなる摩耗を引起さないはずである。すなわち、ＳＬＣメモリデバイスの場合、より有害でないさらなるビットが記憶されるメモリセルは、より有害なビットが記憶されるメモリセルと同じ、プログラム／消去サイクルによって引起される摩耗に必ずしもさらされない。
【００４２】
入力される３ビットの組合せの最後（すなわち、「１１１」）は、図４に示され、４５６で示すように、１の数量以上である０の数量を有する、次の利用可能な４ビットの組合せにマッピングされる。この例では、「１１１」の３ビットの組合せは、「１０００」の４ビットの組合せにマッピングされる。「１０００」の４ビットの組合せを実際に記憶することは、ＳＬＣデバイス内でさらなるビットの利用可能なメモリ空間を使用するが、１つのメモリセルだけが、摩耗にとってより有害であると予想されるデータ状態になるようプログラムされることが理解されるべきである。「１１１」の入力される３ビットの組合せが、ＳＬＣメモリに実際に記憶された場合、３つのメモリセルは、より有害なデータ状態になるようプログラムされることになり、したがって、より有害なデータ状態になるようプログラムされた２つのさらなるメモリセルにとってより多くの摩耗を引起す。
【００４３】
図４の左の表に示す８つの３ビットの組合せが、全部で２４ビット（すなわち、８×３＝２４）を含み、２４ビットの中で、ビットの半分（すなわち、１２）が０であり、ビットの半分（すなわち、１２）が１であることが理解されるべきである。未処理入力データが、均等に分布するランダムデータとしてモデル化されることができ、８つの３ビットの組合せのそれぞれが、こうしたランダムデータにおいて起こる可能性が等しくあるため、ＳＬＣメモリに非符号化入力データを記憶することが、メモリセルの５０％が、平均して、より有害なデータ状態になるようプログラムされることをもたらすことになることが予想される。しかし、代わりに、それぞれのｍデジットデータワードに対応するｎデジットコードワードを記憶することによって、メモリセルの半分未満が、より有害なデータ状態になるようプログラムされることが予想されることになる。
【００４４】
示す例では、ＳＬＣメモリが、入力データの８つの考えられる３ビットの組合せにマッピングされる符号化された４ビットの組合せのそれぞれの１つのインスタンスを記憶した場合、１０のメモリセルだけが、８つの３ビットの組合せの全てに対応する符号化データを記憶するために、より有害なデータ状態になるようプログラムされることになる。均等に分布するランダムデータにそれを拡張すると、メモリセルの１０／２４、または４２％だけが、平均して、より有害なデータ状態になるようプログラムされることになると予想されうる。したがって、ｍデジットセグメント、たとえば、ｍデジットデータワードに分割されうる入力データに対応し、その結果として対応するｎデジットセグメント、たとえば、ｎデジットコードワードが記憶される符号化データを記憶するために、より少数のメモリセルが、平均して、より有害なデータ状態になるようプログラムされるはずであるため、メモリデバイスは、少ない摩耗にさらされるはずである。すなわち、３ビットの入力データを記憶する代わりに、４ビット符号化物を記憶することは、メモリセルの、平均して１６％（１００％−８４％）少ない摩耗、したがって、より大きなメモリエンデュランスをもたらすはずである。
【００４５】
データを取出すとき、記憶されたｎデジットコードワードが復号されて、対応するｍデジット入力データが生成されうる。符号化および復号はまた、それぞれのｍデジットデータワードおよびｎデジットコードワードについて整数値を使用した整数計算を使用して行われうる。
【００４６】
図５は、本開示の１つまたは複数の実施形態による、３ビットのデータを５ビットの組合せ（例えば、入力データがマッピングされうる、考えられるデジットの組合せのセットであるインデックス）にマッピングすることを示す。より大きなエンデュランスが、さらに多くのビットを有する組合せを記憶することによって達成されうる。コストは、さらなるビットを記憶するための利用可能なメモリデバイス容量のより大幅な使用である。しかし、さらなるメモリセルは、より有害なデータ状態になるようプログラムされないため、容量のさらなる使用は、メモリセルに関するさらなる摩耗を引起さないはずである。実際には、メモリセルの摩耗は、さらに低減されるはずであり、それが、メモリエンデュランスをさらに増加させる。
【００４７】
図５は、３ビットの入力データについての考えられる組合せを含む第１の表（左側）、および、５ビットの符号化データ（たとえば、ｎビットコードワード）についての考えられる組合せを含む第２の表（右側）を示す。考えられる３ビットの組合せ５４６は、第１の表の１つの列に示され、それぞれの３ビットの組合せに対応する整数５４４は、第１の表の別の列に示される。考えられる５ビットの組合せ５５８は、第２の表の１つの列に示され、それぞれの５ビットの組合せに対応する整数５６２は、第２の表の別の列に示される。さらに、第２の表は、それぞれの５ビットの組合せが１の数量以上である０の数量を含むかどうかについての指示５６０を含み、「Ｙ」、すなわち、はいの場合、組合せは、１と少なくとも同数の０を含み、「Ｎ」、すなわち、いいえの場合、組合せは、１と少なくとも同数の０を含まない。
【００４８】
第１の表の行エントリと第２の表の行エントリの間に引かれたライン、たとえば５６４、５６５、５６６は、両者の間の例示的なマッピングを示し、そのマッピングは、入力される３ビットの入力データを記憶するときに関わることになるよりも少数の「１」データ状態が、符号化される５ビットのデータ（たとえば、ｎビットコードワード）を記憶するときに関わることを可能にする。たとえば、「０００」の３ビットの組合せは、５６４で示すように、「０００００」の５ビットの組合せに対応しうる。５ビットの組合せが、入力される３ビットの組合せに対応するＳＬＣメモリデバイスに実際に記憶されるために、２つのさらなるメモリが必要とされるが、さらなるメモリセルは、３ビットのデータがメモリデバイスに直接記憶された場合に比べて、より有害なデータ状態（たとえば、この例の場合、「１」データ状態）になるようにプログラムされないことが理解されるであろう。
【００４９】
同じ結果が、最初の６個のビットの組合せのそれぞれについて起こる。すなわち、最初の６個の示すビットの組合せの場合、３ビットの組合せが、２つの最上位ビットが「０」に設定されている５ビットの組合せにマッピングされる。こうした場合のそれぞれにおいて、５ビットの組合せは、１の数量以上である０の数量を有する。それぞれのこうした場合、最上位の「０」ビットは、利用可能なＳＬＣメモリのさらなる部分を使用するが、さらなるメモリセルが、より有害であると予想されるデータ状態になるようプログラムされないため、さらなるビットは、メモリにとってさらなる摩耗を引起さないはずである。すなわち、ＳＬＣメモリデバイスの場合、有害でないさらなるビットが記憶されるメモリセルは、より有害なビットが記憶されるメモリセルと同じ、プログラム／消去サイクルによって引起される摩耗に必ずしもさらされない。３ビットの組合せのそれぞれは、１より多くの０を有する５ビットの組合せにマッピングされる。
【００５０】
左の表の最後の２つのエントリのマッピングは、図４に関して述べたのと同様な方法で右の表の組合せにマッピングされうるが、さらに上位の「０」ビットを有する。しかし、さらなるビットを有する組合せを使用することのコストと引き換えに、さらなる効率は得られない。さらなるエンデュランスが所望される場合、マッピングスキームが変更されて、より有害なデータ状態によって表される最小数のビットを有する組合せを利用することができる。
【００５１】
たとえば、また、図５に示すように、「１１０」の入力される３ビットの組合せは、「０１０００」の５ビットの組合せにマッピングされ、「１１１」の入力される３ビットの組合せは、「１００００」の５ビットの組合せにマッピングされることができ、それぞれの符号化式組合せは、より有害なデータ状態の１つだけを使用し、それにより、入力データを直接（すなわち、非符号化状態で）記憶するために必要とされることになる５つのメモリセルではなく、より有害なデータ状態になるようプログラムされるＳＬＣメモリの２つのメモリセルだけを使用する。そのため、種々の３ビットの組合せのそれぞれに対応する８つの５ビットの組合せの１つのインスタンスを記憶するために、より有害なデータ状態になるようプログラムされる必要があるＳＬＣメモリのメモリセルの総数量は、今や、１２ではなくたった９である。すなわち、均等に分布するランダム入力を仮定すると、３ビット入力データを記憶する代わりに５ビットの組合せを記憶することは、メモリセルの、平均して２５％（１００％−７５％）少ない摩耗、したがって、より大きなメモリエンデュランスをもたらすはずである。
【００５２】
図６は、本開示の１つまたは複数の実施形態による、装置に関わるメモリエンデュランス動作の機能ブロック図である。本開示の１つまたは複数の実施形態によれば、ｍデジットデータワード６１８（すなわち、ｍデジットのデータ）は、エンコーダ６１２に入力されて、ｎデジットコードワード６２０（すなわち、ｎデジットのデータ）生成しうる。ここで、ｎはｍより大きい。ｎデジットコードワード６２０は、メモリ６０４に通信され、メモリ６０４に記憶されうる。すなわち、より大きなｎデジットコードワード６２０が、より小さなｍデジットデータワード６１８の代わりに通信および／または記憶される。より大きなｎデジットコードワード６２０は、その後、メモリ６０４から取出され、デコーダ６３２に通信され、入力されて、より小さな元のｍデジットデータワード６１８が生成されうる。
【００５３】
先に述べたように、ｍデジットデータワード６１８の代わりにｎデジットコードワード６２０を記憶するために、より多くのメモリが使用されることになる。しかし、ｍデジットデータワード６１８とｎデジットコードワード６２０との間のマッピングを制約することによって、ｎデジットコードワード６２０を記憶することは、オリジナルのｍデジットデータワード６１８を記憶することに比べてメモリ６０４のメモリセルをより少なく摩耗させることができ、それにより、摩耗が低減され、エンデュランスが増加する。
【００５４】
ｍデジットのデータと対応するｎデジットのデータとの間で符号化し復号する１つの考えられる方法は、列挙コーディングを使用することによる。本開示の種々の実施形態によれば、列挙コーディングは、最初のデータ伸張（すなわち、データ圧縮の逆）ならびに最初のデータ圧縮のために使用されうる。列挙コーディングデータ圧縮方策は、集合Ｓの要素を表すためにｌｏｇ２｜Ｓ｜ビットだけ必要とする。ここで、｜Ｓ｜は集合Ｓ内の要素の数である。たとえば、集合が１２８の要素を有する場合、集合Ｓの１２８の要素の１つの要素の場所は、２７＝１２８であるため、７ビットで表されうる。すなわち、７ビットの種々の組合せは、集合Ｓの１２８の要素の一意の要素に対応する。集合Ｓの各要素がｎデジットのデータである場合、ｌｏｇ２｜｜Ｓ｜／ｎの圧縮比が達成されうる。こうした圧縮を達成するために、効率的な符号化および復号スキームが、集合Ｓの要素について必要とされる。集合Ｓの要素が適切に順序付けされる場合、こうした順序付けに関して効率的な符号化および復号スキームを考案することが可能である。
【００５５】
本開示に関して、列挙コーディングデータ伸張技法が利用されうる。特定の長さｎが経験的に選択されることができ、入力長ｍをｎ未満になるよう制約する。本開示の１つまたは複数の実施形態によれば、入力されるｍデジットのデータは、より長いｎデジットのデータに対応するより短い列挙符号化数量である。しかし、本開示によれば、より短いｍデジットのデータではなく、より長いｎデジットのデータコードワードが通信および／または記憶されうる。
【００５６】
たとえば、バイナリデータを記憶するＳＬＣメモリについてメモリエンデュランス技法で使用するために、１７がｎとして選択されうる。こうしたｎデジットコードワード内の（たとえば、より有害な状態によって表される）１の数が、２つの限界ｗ１とｗ２との間になければならないという制約が課されうる。たとえば、ｗ１およびｗ２の値は、ｗ１＝０およびｗ２＝８であるように選択されうる。しかし、これらのパラメータの値は、例証のためにここで選択される値と異なりうる。この特定の制約は、より有害な非消去状態、たとえば「１」の場合より多く、または少なくとも同数の、有害でない消去状態、たとえば「０」の、ビットを有するように各１７ビットコードワードに強制することになる。一般に、ｗ１およびｗ２は、以下の制約、すなわち、ｗ１≧０およびｗ２≦ｎを満たすように任意に設定されうる。
【００５７】
この例の場合、上述した制約、すなわち、１７ビットの組合せが、より有害なデータ状態によって表される０〜８ビットを有することを満たすｎデジットコードワードの集合Ｓが、その後生成されうる。より有害な論理１によって表される０〜７ビットを含む１７ビットコードワードの集合のサイズは、｜Ｓ｜によって示されうる。次に、ｌｏｇ２｜Ｓ｜が計算されうる。ｌｏｇ２｜Ｓ｜が分数である場合、ｌｏｇ２｜Ｓ｜より小さい最大整数、すなわち、ｆｌｏｏｒ（Ｘ）がＸ以下の最大整数を意味するｆｌｏｏｒが決定されうる。入力データワードのサイズｍが、ｆｌｏｏｒ（ｌｏｇ２｜Ｓ｜）に等しく設定されうる。その理由は、バイナリデータの場合、２ｍ≦｜Ｓ｜であり、レートｍ／ｎコードが構築されうることが保証されるからである。
【００５８】
到来するデータは、符号化のためにｍビットデータワードに分解されうる。すなわち、いずれの任意のｍビットバイナリデータワードも、集合Ｓの要素である１７ビットコードワードの一意のコードワードにマッピングされうる。これは、レートｍ／ｎコードを可能にし、ｍ／ｎは、コードワードにおいて、より有害なデータ状態、すなわち１によって表されるビットの数量に対する上述した制約に関して考えられる最高レートである。
【００５９】
以下の議論は、メモリエンデュランスのためにメモリデバイスを動作させる方法の１つの考えられる実装態様に関しており、ＳＬＣメモリセルを利用するメモリデバイスについて、入力されるｍビットデータワードとｎビットコードワードとの間を対応付ける符号化および復号技法を含み、ｎおよびｍは、上述したように決定される。本開示の装置および方法のＳＬＣアプリケーションとして、データは、たとえばビットの部分組合せまたは１６進デジットではなく、個々のビットによって表現される。しかし、本開示の実施形態は、この特定の技法に限定されず、他の方法、計算、および／またはマッピング技法によって実装されうる。
【００６０】
ｎビットコードワードがメモリデバイスから取出されることと連携して起こるような、オリジナルのｍビットデータワードを再生するためにｎビットコードワードを復号することは、次のように実装されうる。考えられるコードワードの集合Ｓ内でｎビットコードワードｂ１ｂ２…ｂｎが与えられる場合、ｎビットコードワードをスキャンすることが、左側から右側に（たとえば、最上位ビットから最下位ビットに）始まりうる。全てのビットｂｉについて、数量ｑｉが、次のように決定されうる。
【数１】
0005785330.tif 000002
【００６１】
ここで、ｗ１とｗ２との間（ｗ１とｗ２を含めて）の各ｐについて、ｌ（ｐ，ｉ）＝ｐ−（ｂ１ｂ２…ｂｎ内の最初の（ｉ−１）ビットの和）である。これらの全ての計算されたｑｉ値が、加算されて、次のように、Ｓ内のコードワードｂ１ｂ２…ｂｎに対応するオリジナルのｍビットバイナリデータワードの値Ｒが得られうる。
【数２】
0005785330.tif 000003
ｑｉの決定は、ｉ番目のビットが１である（すなわち、ｂｉ＝１である）ときだけに起こることが認められる。ｂｉ＝０であるとき、ｑｉも０であるため、アクションは必要とされない。したがって、復号は、たとえば、２つの「ｆｏｒ」ループを使用して達成されうる。ここで、全ての数量が、一定であり、予め決定され、必要に応じて取出されうる。ｍビットデータワードは、従来の方法で値Ｒから導出されうる。
【００６２】
ｎビットコードワードがメモリデバイスに記憶されることと連携して起こるような、ｎビットコードワードを生成するために元のｍビットデータワードを符号化することは、次のように実施されうる。変数Ｌが、Ｒに設定されうる。ここで、Ｒは、符号化される元のｍビットデータワードに等価な整数である。その後、カウンタｉ＝１で始めて、
【数３】
0005785330.tif 000004
が決定されうる。ここで、ｌ（ｐ，ｉ）＝ｐ−（ｂ１ｂ２…ｂｎ内の最初の（ｉ−１）ビットの和）である。ＲがＳｉより大きい場合、ｂｉは、１に等しく設定される。Ｒは、Ｒ−Ｓｉに等しくなるよう更新され、カウンタｉは増分され、ｉがｎを超えるまで、Ｓｉの反復決定が継続する。ＲがＳｉより大きくない場合、ｂｉは、「０」に等しく設定され、Ｒは、Ｒ−Ｓｉに等しくなるよう更新され、ｉは増分され、ｉがｎを超えるまで、Ｓｉの反復決定が継続する。
【００６３】
先の議論は、バイナリデータおよびＳＬＣメモリセルの特別な場合に関していた。以下の議論は、メモリエンデュランスのための方法の考えられる別の実装態様に関しており、たとえば、ＭＬＣメモリセルを利用するメモリデバイスに適用可能である、入力されるｍデジットデータワードとｎデジットコードワードとの間を対応付ける符号化および復号技法を含む。本開示の実施形態は、この特定の技法に限定されず、メモリエンデュランスのための方法は、他の方法、計算、および／またはマッピング技法によって実装されうる。
【００６４】
ｍデジットデータワードの代わりに記憶されるｎデジットコードワードの集合を、バイナリデータおよびＳＬＣメモリセルについて図４および図５に関して先に論じたのと同様に、より有害なデータ状態によって表される少数のビットを持つようにスキューさせることは、それ自体で、符号化データ内の複数の状態（たとえば、００，０１，１０，１１｝の４つのデータ状態、｛０００，００１，０１０，０１１，１００，１０１，１１０，１１１｝の８つのデータ状態など）のそれぞれの状態の分布を変更して、ＭＬＣデバイスのエンデュランスを改善しうる。
【００６５】
ＭＬＣストレージでは、データ状態は、異なる電圧レベルで書込まれうるため、等しく有害ではない。先に論じたバイナリ方法の例の場合、より有害な１のデータ状態が制限された。ＭＬＣセルについて１のデータ状態を制限することは、２ビットＭＬＣについての１０、０１、および１１などの非ゼロの（たとえば、より有害でない）データ状態の発生を間接的に制限しうる。デジット１が、この３つのより有害な状態の一部でありうるからである。しかし、よりよいアプローチは、マルチデジットアルファベットのメンバ（たとえば、２ビットＭＬＣについての｛０，１，２，３｝）として各グループ化を処理することによって、複数のビットのグループ化（たとえば、２ビットＭＬＣについての１１、１０、および０１）の発生に直接影響を及ぼすことである。そのアプローチは以下でさらに論じられる。したがって、これらのさらなるデータ状態特性を考慮することによって、ＳＬＣメモリセルの摩耗エンデュランスを改善するために適用されるコードより効率的にＭＬＣをプログラムのために、データ状態をより明示的に制御するＭＬＣシェーピングコード（ｓｈａｐｉｎｇ  ｃｏｄｅ）を実装することが可能である。
【００６６】
列挙コーディングは、順序付けされた集合Ｓ内の場所に対する参照（たとえば、インデックス）として符号化される順序付けされた集合Ｓ内に要素を含む。異なる順序付けが可能であるが、辞書式順序付けは、Ｓのメンバについて効率的な符号化および復号アルゴリズムの開発を可能にする。それぞれの英数字デジットについての「アルファベット（ａｌｐｈａｂｅｔ）」がＭ個の考えられるデータ状態｛１，２，…，Ｍ｝からなり、それぞれがＭデータ状態のそれぞれの１つのデータ状態によって表されると仮定し、また、コードワードがｎデジット長であると仮定すると、それぞれのコードワード内のアルファベットについて予め規定された重み分布｛ｗ１，ｗ２，…，ｗＭ｝を課す符号化および復号アルゴリズムが開発されうる。換言すれば、ｗ１＋ｗ２＋…＋ｗＭ＝ｎである。こうした集合｜Ｓ｜のサイズは、多項の公式：
【数４】
0005785330.tif 000005
を使用して計算されうる。
【００６７】
公式は、次のように２項の積として表現されうる。
【数５】
0005785330.tif 000006
【００６８】
Ｍ個のデータ状態、すなわち、ＳＬＣにおけるＭ＝２のデータ状態｛１，２｝、２ビット／セルＭＬＣにおけるＭ＝４のデータ状態｛１，２，３，４｝、３ビット／セルＭＬＣにおけるＭ＝８のデータ状態｛１，２，３，…，８｝、または単にＭデータ状態／セルの場合のＭ＝Ｍのデータ状態｛１，２，…，Ｍ｝を仮定する。ここで、各レベルは、サイズＭのアルファベットのメンバとして処理される。ｎデジットコードワードの集合Ｓであって、重み分布｛ｗ１，ｗ２，…，ｗＭ｝が各コードワードに課される、ｎデジットコードワードの集合Ｓを考える。集合のサイズ｜Ｓ｜が決定されうる。ｍ＝ｆｌｏｏｒ（ｌｏｇ２｜Ｓ｜）とすることによって、任意のｍデジットデータワードは、Ｓ内のｎデジットコードワードの場所を示す。これは、レートｍ／ｎコードを可能にし、コードレートは、ビット／レベルとして表現される。コードレートは、
【数６】
0005785330.tif 000007
を決定することによってビット／ビットで表現されうる。
【００６９】
全体のリストＳは、（たとえば、メモリデバイスにおいて）構築または維持される必要がない。すなわち、ｍデジットデータワードおよび対応するｎデジットコードワードは、計算的に決定されて、集合Ｓを記憶するためのメモリ空間を使用することを回避しうる。しかし、本開示の実施形態は、そのように限定されず、Ｓの要素として所望の制約を満たすｎデジットコードワードおよびｍデジットデータワードを含む記憶された表によって実装されうる。ｍデジットデータワードは、マッピングまたはルールによってｎデジットコードワードに直接マッピングされうる。また、その逆も直接行われる。しかし、マッピングは、ｎデジットコードワードが順序付けされたリスト内にあるという暗黙知に頼る。
【００７０】
ｎデジットコードワードにおいて多状態法を継続すると、各デジットが、その対応するバイナリタプルと置換されて、バイナリシーケンスを生成しうる。アルファベットのメンバが、バイナリ形態に変換されるときに、辞書式順序付けに適合する必要があるという要件が存在しないことを含む一定の利点が、｛１，２，…，Ｍ｝としてアルファベットを見るときに実現されうる。これは、データ状態のグレイコード順序付けまたはその事についての任意の他の順序付けを可能にする。別の利点は、Ｍが２のべき乗である必要がないことであり、３．８ビット／セル等のような場合のコーディングを可能にする。
【００７１】
ｎデジットコードワードは、辞書的に順序付けられたリスト内でｎデジットのストリングｘである。ｎデジットコードワードは、
【数７】
0005785330.tif 000008
を決定することによって、導出されうる。ここで、Ｉはｎデジットコードワードの整数値であり、ｎｓ（ｘ１，ｘ２，…，ｘｊ−１，ｍ）は、ｘ１，ｘ２，…，ｘｊ−１，ｍで始まるｎデジットコードワードの数である。インデックスｊは、コードワードが左側から右側にスキャンされるときに検査される現在のデジットの位置である。すなわち、コードワードがｘ１ｘ２ｘ３…ｘｍで表され、デジットｘ６が現在検査されている場合、ｊ＝６である。
【００７２】
アルファベットは、内部にＭ個のデジットを有するため、ｘｊは、アルファベット｛１，２，３，…，Ｍ｝からのＭ個の文字の任意の文字でありうる。数量Ｍは、変数ｍとは区別される。数量Ｍは、それぞれの位置についての可能性の数（たとえば、アルファベット内のデジットの数）である。たとえば、ｘｊ＝６の場合、ｘ１ｘ２ｘ３…ｘｊ−１１で始まる全ての語、ｘ１ｘ２ｘ３…ｘｊ−１２で始まる全ての語、ｘ１ｘ２ｘ３…ｘｊ−１３で始まる全ての語、ｘ１ｘ２ｘ３…ｘｊ−１４で始まる全ての語、ｘ１ｘ２ｘ３…ｘｊ−１５で始まる全ての語を計数する。こうした全ての語は、ｘ１ｘ２ｘ３…ｘｊ−１６で始まる語に先行することになる。これは、たとえば、辞書内で語がどのように配列されるかを反映する。
【００７３】
したがって、ｘ１ｘ２ｘ３…ｘｊ−１６で始まる語の場所は、ｘ１ｘ２ｘ３…ｘｊ−１１で始まる語、ｘ１ｘ２ｘ３…ｘｊ−１２で始まる語、ｘ１ｘ２ｘ３…ｘｊ−１３で始まる語、ｘ１ｘ２ｘ３…ｘｊ−１４で始まる語、ｘ１ｘ２ｘ３…ｘｊ−１５で始まる語の総計数を超えることになる。その理由は、これらの全ての語がリスト内でより早く現れることになるからである。これは、その内部加算が、上記公式で行っていることである。ｘｊ＝６の特定の例では、それが、１で始まって加算がｘｊ−１＝５まで進む理由である。これらの加算は、コードワードが、位置番号１、すなわちｊ＝１から、コードワードの最後の位置、すなわちｊ＝ｍまですっかりスキャンされるときに計算される。
【００７４】
ＭＬＣコーディング法に関して、ｋ＝１：ｎについて整数ｉを符号化するために、ｉ＞ｎｓ（ｘ１，ｘ２，…，ｘｋ−１，ｍ−１）でかつｉ≦ｎｓ（ｘ１，ｘ２，…，ｘｋ−１，ｍ）である場合に、ｘｋがｍに設定されるように、アルファベット｛１，２，３，…，Ｍ｝に属する文字ｍを見出す。カウンタｉは、ｉ−ｎｓ（ｘ１，ｘ２，…，ｘｋ−１，ｍ−１）に等しくなるよう調整され、決定は、たとえば「ｆｏｒ  ｌｏｏｐ」として反復的に決定されうる。これは、ｎ個のデータ状態ｘ１ｘ２…ｘｎのストリングを出力することになる。最後に、各レベルがその対応するバイナリタプルと置換されて、バイナリストリングを生成しうる。
【００７５】
特定の実施形態が、本明細書で示され述べられたが、同じ結果を達成するために計算される配置構成が、示す特定の実施形態と置換えられうることを当業者は理解するであろう。本開示は、本開示の種々の実施形態の適応形態または変形形態を包含することを意図される。上記説明が、制限的な方法ではなく例証的な方法で行われたことが理解される。上記実施形態および本明細書で具体的に述べられていない他の実施形態の組合せが、上記説明を検討すると、当業者に明らかになる。本開示の種々の実施形態の範囲は、上記構造および方法が使用される他のアプリケーションを含む。したがって、本開示の種々の実施形態の範囲は、添付特許請求の範囲を参照して、特許請求の範囲が権利を与えられる均等物の全範囲と共に決定されるべきである。
【００７６】
先の詳細な説明では、種々の特徴が、本開示を効率化するために単一の実施形態に共にグループ化される。開示のこの方法は、本開示の開示される実施形態が、各特許請求項で明示的に引用されるよりも多くの特徴を使用しなければならないという意図を反映するものと解釈されない。むしろ、添付特許請求の範囲が反映するように、発明の主題は、開示される単一の実施形態の全ての特徴より少数の特徴に存在する。そのため、添付特許請求の範囲は、詳細な説明に組込まれ、各請求項は、別個の実施形態としてそれ自身を主張する。
【図１】
0005785330.tif 000013
【図２Ａ】
0005785330.tif 000014
【図２Ｂ】
0005785330.tif 000015
【図３Ａ】
0005785330.tif 000016
【図３Ｂ】
0005785330.tif 000017
【図４】
0005785330.tif 000018
【図５】
0005785330.tif 000019
【図６】
0005785330.tif 000020