JP5468184B2 - ソリッドステートドライブのための消去カウントを軽減した高機能データ符号化 - Google Patents

ソリッドステートドライブのための消去カウントを軽減した高機能データ符号化 Download PDF

Info

Publication number
JP5468184B2
JP5468184B2 JP2013536575A JP2013536575A JP5468184B2 JP 5468184 B2 JP5468184 B2 JP 5468184B2 JP 2013536575 A JP2013536575 A JP 2013536575A JP 2013536575 A JP2013536575 A JP 2013536575A JP 5468184 B2 JP5468184 B2 JP 5468184B2
Authority
JP
Japan
Prior art keywords
block
codeword
message
state
applicable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013536575A
Other languages
English (en)
Other versions
JP2013541111A (ja
Inventor
マ,シュドン
Original Assignee
エンパイア テクノロジー ディベロップメント エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エンパイア テクノロジー ディベロップメント エルエルシー filed Critical エンパイア テクノロジー ディベロップメント エルエルシー
Publication of JP2013541111A publication Critical patent/JP2013541111A/ja
Application granted granted Critical
Publication of JP5468184B2 publication Critical patent/JP5468184B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1157Low-density generator matrices [LDGM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B11/00Recording on or reproducing from the same record carrier wherein for these two operations the methods are covered by different main groups of groups G11B3/00 - G11B7/00 or by different subgroups of group G11B9/00; Record carriers therefor
    • G11B11/08Recording on or reproducing from the same record carrier wherein for these two operations the methods are covered by different main groups of groups G11B3/00 - G11B7/00 or by different subgroups of group G11B9/00; Record carriers therefor using recording by electric charge or by variation of electric resistance or capacitance
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/001Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits characterised by the elements used
    • H03M7/005Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits characterised by the elements used using semiconductor devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本明細書において特に指示のない限り、このセクションにおいて説明される題材は、本明細書の特許請求の範囲の先行技術ではなく、このセクションに含めることにより先行技術であると認めるものではない。
ソリッドステートドライブの新たに消去されたブロック内の各セルは、最高電圧状態で開始することがある。従来、ブロックへの連続する書き込み操作の各々は、セルの電圧状態を低減することができるが、セルの電圧状態を増大させることはできない。セルの電圧状態を増大させるために、消去操作は、ブロック内のセルがもとの最高電圧状態に変更されるようなブロックで実行されてもよい。しかし、ソリッドステートドライブは、ドライブの存続期間中に限られた数の消去操作しか処理することができないので、頻繁な消去操作が予想されうる実施態様においてソリッドステートドライブの適用可能性を低下させることになる。
本開示は概して、メッセージを符号化するためのいくつかの方法を説明する。いくつかの例示的な方法によれば、ブロックは、ソリッドステートディスク内で選択されてもよい。ブロックは、第1の状態で構成されてもよい。ブロックに対応するマッピング規則、制約、およびメッセージが受信されてもよい。メッセージにマッピングする1つまたは複数のコードワードは、マッピング規則に従って識別されてもよい。コードワード内の適用可能なコードワードは、第1の状態で構成されたブロックに適用される際に制約に従って識別されてもよい。ソリッドステートドライブ内のブロックに適用可能なコードワードの書き込み操作が実行されてもよく、それによりブロックを第1の状態から第2の状態に変化させる。
本開示は概して、いくつかのコンピュータストレージ媒体を説明する。いくつかの例示的なコンピュータストレージ媒体は、コンピュータによって実行されるとき、メッセージを符号化するようコンピュータを適合させる、いくつかの方法のためにそこに格納されているコンピュータ実行可能命令を含むことができる。いくつかの例示的な方法によれば、適合されたコンピュータは、以下の操作のうちの1つまたは複数を実行するように構成されてもよい。コンピュータは、ソリッドステートドライブ内のブロックから適用可能なコードワードを読み取ることができる。コンピュータは、ブロックに対応するマッピング規則を取り出すことができる。コンピュータは、マッピング規則に従って、コードワードにマッピングするメッセージを識別することができる。
本開示は概して、メッセージを符号化するように構成されたいくつかのコンピュータシステムを説明する。いくつかの例示的なコンピュータシステムは、プロセッサと、プロセッサに結合されたメモリと、符号化ユニットとを含むように構成されてもよい。符号化ユニットは、メモリからプロセッサ内で実行するように適合され、プロセッサによって実行されるとき、コンピュータシステムに以下の操作のうちの1つまたは複数を実行することによりメッセージを符号化させるように適合されてもよい。コンピュータシステムは、ソリッドステートドライブ内のブロックを選択することができる。ブロックは、第1の状態で構成されてもよい。コンピュータシステムは、ブロックに対応する第1のマッピング規則、制約、およびメッセージを受信することができる。コンピュータシステムは、第1のマッピング規則に従って第1のメッセージにマッピングする1つまたは複数の第1のコードワードを識別することができる。コンピュータシステムは、第1の状態で構成されたブロックに適用される際に制約に従って第1のコードワード内の第1の適用可能なコードワードを識別することができる。コンピュータシステムは、ソリッドステートドライブ内のブロックに第1の適用可能なコードワードの書き込み操作を実行することができ、それによりブロックを第1の状態から第2の状態に変化させる。コンピュータシステムは、ブロックに対応する第2のマッピング規則、および第2のメッセージを受信することができる。コンピュータシステムは、第2のマッピング規則に従って第2のメッセージにマッピングする1つまたは複数の第2のコードワードを識別することができる。コンピュータシステムは、第2の状態で構成されたブロックに適用される際に制約に従って第2のコードワード内の第2の適用可能なコードワードを識別することができる。コンピュータシステムは、ソリッドステートドライブ内のブロックに第2の適用可能なコードワードの書き込み操作を実行することができ、それによりブロックを第2の状態から第3の状態に変化させる。
前述の課題を解決するための手段は、例示的なものに過ぎず、限定的であることは全く意図されていない。上記で説明される例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および後段の詳細な説明を参照することにより明らかとなろう。
本開示の前述およびその他の特徴は、付属の図面と併せて以下の説明と添付の特許請求の範囲を読めばさらに十分に明らかとなろう。それらの図面が本開示によるいくつかの実施形態を示すに過ぎず、その範囲を限定するものと見なされるべきではないことを理解し、本開示は以下の添付の図面を使用することでさらに具体的かつ詳細に説明されるであろう。
提示される少なくとも一部の実施形態により配置された、メッセージを符号化するための例示的な操作環境を示す機能ブロック図である。 提示される少なくとも一部の実施形態により配置された、メッセージを符号化するための例示のプロセスを示す流れ図である。 提示される少なくとも一部の実施形態により配置された、符号化されたメッセージを復号するための例示のプロセスを示す流れ図である。 提示される少なくとも一部の実施形態により配置された、マッピング規則への入力として適合された行列の具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、マッピング規則への入力として適合された行列の具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、マッピング規則への入力として適合された行列の具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、ソリッドステートドライブに書き込みされうるメッセージの具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、ソリッドステートドライブに書き込みされうるメッセージの具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、ソリッドステートドライブに書き込みされうるメッセージの具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、行列およびメッセージに従ってマッピング規則を満たすように適合されたコードワードの具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、行列およびメッセージに従ってマッピング規則を満たすように適合されたコードワードの具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、行列およびメッセージに従ってマッピング規則を満たすように適合されたコードワードの具体的な例を示す図である。 提示される少なくとも一部の実施形態により配置された、メッセージを符号化するための例示的な操作環境を示す機能ブロック図である。 提示される少なくとも一部の実施形態により配置された、コードワードを復号するための例示的な操作環境を示す機能ブロック図である。 提示される少なくとも一部の実施形態により配置された、例示的なコンピューティングシステムを示すブロック図である。 提示される少なくとも一部の実施形態により配置された、提示される少なくとも一部の実施形態により配置された、コンピュータプログラム製品を示す概略図である。 提示される少なくとも一部の実施形態により配置された、提示される少なくとも一部の実施形態により配置された、コンピュータプログラム製品を示す概略図である。 提示される少なくとも一部の実施形態により配置された、提示される少なくとも一部の実施形態により配置された、コンピュータプログラム製品を示す概略図である。
以下の詳細な説明において、本明細書の一部を形成する付属の図面が参照される。図面において、文脈に別段の指示がない限り、類似する符号は概して、類似するコンポーネントを識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的であることを意図されていない。本明細書において提示される主題の精神および範囲を逸脱することなく、その他の実施形態が使用されてもよく、その他の変更が行われてもよい。本明細書において概ね説明され、図面に示される本開示の態様が、多岐にわたるさまざまな構成において配置され、代替され、組み合わされ、分離され、設計されてもよく、それらすべてが本明細書において明示的に検討されることは容易に理解されよう。
本開示は概して、とりわけメッセージを符号化するように構成された技術を対象としている。さまざまな実施形態において、新しい情報は、以前書き込まれたブロックに、消去操作をブロックで実行することなく、書き込まれる場合がある。例示的な実施形態において、ユーザは、第1のメッセージを、新たに消去されたブロックに書き込むことを望むことができる。第1のマッピング規則は、第1のメッセージを、1つまたは複数のコードワードの第1のセットにマッピングするように適合されてもよい。コントローラは、コードワードの第1のセットから、フリップダウンの制約および低電圧レベルコストの制約のような、制約を満たす第1の適用可能なコードワードを識別することができる。コントローラは、第1のメッセージをブロックに書き込むのではなく、第1の適用可能なコードワードをブロックに書き込むことができる。第1の適用可能なコードワードがブロックから読み取られると、コントローラはまた、第1のマッピング規則を介して、第1の適用可能なコードワードを第1のメッセージに復号することができる。
第1のメッセージが古くなった場合、ユーザは第2のメッセージをブロックに書き込むことを望むことができる。第2のマッピング規則は、第2のメッセージを、1つまたは複数のコードワードの第2のセットにマッピングするように適合されてもよい。コントローラは、コードワードの第2のセットから、制約を満たす第2の適用可能なコードワードを識別することができる。従来の実施態様とは対称的に、コントローラは、ブロックに消去操作を実行することなく、第2の適用可能なコードワードをブロックに書き込むことができる。第2の適用可能なコードワードがブロックから読み取られると、コントローラはまた、第2のマッピング規則を介して、第2の適用可能なコードワードを第2のメッセージに復号することができる。
ここで図1を参照すると、機能ブロック図は、本明細書において提示される少なくとも一部の実施形態による、メッセージを符号化するための例示的な操作環境100を示す。操作環境100は、ソリッドステートドライブ104に結合されたコンピュータ102を含むことができる。コンピュータ102は、コントローラ106を含むことができる。コントローラ106は、ソリッドステートドライブ104にメッセージを書き込み、かつソリッドステートドライブ104からメッセージを読み取るように構成されてもよい。本明細書では、メッセージは、ソリッドステートドライブ104に書き込まれかつソリッドステートドライブ104から読み取られうるデータの任意の適切な集合体を示すことができる。
ソリッドステートドライブ104は、第1のブロック108A、第2のブロック108B、およびN番目のブロック108Nを含む複数のブロックを含むことができる。ブロック108A〜108Nは、集合的にブロック108と称されてもよい。各ブロック108は、複数のセルを含むことができる。たとえば、第1のブロック108Aは第1のセル110A、第2のセル110B、およびN番目のセル110Nを含むことができる。セル110A〜110Nは、集合的にセル110と称されてもよい。各セル110は、電圧レベルのような、複数の状態をとるように構成されてもよい。一部の実施形態において、各セル110は、高電圧レベルおよび低電圧レベルという、2つの電圧レベルを格納するように構成されてもよい。一部のその他の実施形態において、各セル110は、2つ以上の電圧レベルを格納するように構成されてもよい。各電圧レベルは、ビット値を表すことができる。たとえば、2状態の実施態様において、高電圧レベルは2進数1を表すことができ、低電圧レベルは2進数ゼロを表すことができる。一部の実施形態において、電圧レベルは、ブロック内のセルの電圧レベルの比率を表す実数に対応することができる。たとえば、コードワードは、0.92、0.83、0.7510333、および0.63であってもよい。この場合、第1のセルの電圧レベルは0.92vに設定されてもよく、第2のセルの電圧レベルは0.83vに設定されてもよく、第3のセルの電圧レベルは0.7510333vに設定されてもよく、第4のセルの電圧レベルは0.63vに設定されてもよく、ただしvは所定の電圧レベルを表すことができる。
コントローラ106は、第1のマッピング規則112A、第2のマッピング規則112B、およびN番目のマッピング規則112Nを含む複数のマッピング規則を含むことができる。マッピング規則112A〜112Nは、集合的にマッピング規則112と称されてもよい。コントローラ106は、メッセージを1つまたは複数の対応するコードワードに符号化するために、適切なマッピング規則112を適用するように構成されてもよい。コントローラ106はまた、コードワードを対応するメッセージに復号するために、適切なマッピング規則112を適用するように構成されてもよい。たとえば、第1のメッセージ114Aは、第1のマッピング規則112Aを介して、1つまたは複数のコードワード116Aの第1のセットにマッピングすることができる。第2のメッセージ114Bは、第2のマッピング規則112Bを介して、1つまたは複数のコードワード116Bの第2のセットにマッピングすることができる。N番目のメッセージ114Nは、1つまたは複数のコードワード116NのN番目のセットにマッピングすることができる。メッセージ114A〜114Nは、集合的にメッセージ114と称されてもよい。コードワード116A〜116Nのセットは、集合的にコードワード116と称されてもよい。
コントローラ106はさらに、コードワード116から、フリップダウンの制約(down-flipping constraint)および低電圧レベルコストの制約のような、制約を満たす適用可能なコードワードを識別するように構成されてもよい。たとえば、コードワード116Aの第1のセットは、制約を満たす第1の適用可能なコードワード118Aを含むことができる。コードワード116Bの第2のセットは、制約を満たす第2の適用可能なコードワード118Bを含むことができる。コードワード116NのN番目のセットは、制約を満たすN番目の適用可能なコードワード118Nを含むことができる。適用可能なコードワード118A〜118Nは、集合的に適用可能なコードワード118と称されてもよい。フリップダウンの制約は、書き込み操作がセル110の電圧レベルを維持するかまたは下げることができるが、セル110の電圧レベルを高めることはできないことを指定することができる。適用可能なコードワード118は、コントローラ106が、消去操作の間にソリッドステートドライブ104のブロック108に複数のメッセージを書き込むことができるようにする。
これ以降、図2を参照すると、流れ図は、本明細書において説明される少なくとも一部の実施形態による、メッセージを符号化するための例示的なプロセス200を示す。プロセス200Aは、ブロック202〜216の1つまたは複数により示されるさまざまな操作、機能、またはアクションを含むことができる。プロセス200Aは、ブロック202(命令を受信する)において開始することができ、ここでコントローラ106は、メッセージ114の1つのようなメッセージをソリッドステートドライブ104に書き込む命令を受信するように構成されてもよい。メッセージは、ソリッドステートドライブ104に格納されうるデータの任意の適切な集合体を含むことができる。一部の実施形態において、メッセージは、2進値の列ベクトルであってもよい。サーバコンピュータ102のようなコンピュータは、コントローラ106に命令を提供することができる。ブロック202の後には、ブロック204が続いてもよい。
ブロック204(ソリッドステートドライブのブロックを選択する)において、コントローラ106は、ブロック108の1つのようなブロックを、ソリッドステートドライブ104から選択するように構成されてもよい。ブロックは、任意の適切な方策に従って選択されてもよい。1つの例において、ブロックは、事前定義の順序に従って選択されてもよい。もう1つの例において、ブロックは、事前定義のパターンに従って選択されてもよい。さらにもう1つの例において、ブロックは、ランダムに、または疑似ランダムに選択されてもよい。ブロック204の後には、ブロック206が続いてもよい。
ブロック206(マッピング規則を取り出す)において、コントローラ106は、マッピング規則112の1つのようなマッピング規則を取り出すように構成されてもよい。マッピング規則は、選択されたブロックの状態に基づいて選択されてもよい。一部の実施形態において、選択されたブロックへの情報記録の各ラウンドは、異なるマッピング規則112に対応することができる(たとえば、N個のマッピング規則が情報記録のN個のラウンドに対応することができる)。いくつかのその他の実施形態において、選択されたブロックへの情報記録の各ラウンドは、1つまたは複数のマッピング規則112に対応することができる(たとえば、単一のマッピング規則が情報記録のN個のラウンドに対応することができる)。情報記録の各ラウンドは、消去操作を伴わない連続する書き込み操作を表すことができる。たとえば、第1のマッピング規則112Aは、選択されたブロックが情報記録の第1のラウンド中に新たに消去される場合に、選択されてもよい。第2のマッピング規則112Bは、選択されたブロックが情報記録の第2のラウンド中に1回書き込まれた後に、選択されてもよい。N番目のマッピング規則112Nは、選択されたブロックが情報記録のN番目のラウンド中にN−1回書き込まれた後に、選択されてもよい。
いくつかの実施形態において、各マッピング規則112は、次のシンドロームコーディング式
Figure 0005468184
を満たすように適合された行列Ηを定義することができる。ただし
Figure 0005468184
はコードワードを表し、
Figure 0005468184
はメッセージを表し、「mod」はモジュロ演算を表す。一部の実施形態において、各マッピング規則112は、異なる行列を定義することができる。たとえば、第1のマッピング規則112Aは第1の行列を使用することができ、第2マッピング規則112Bは第2の行列を使用することができ、N番目のマッピング規則112NはN番目の行列を使用することができる。一部の実施態様において、マッピング規則112は、1つまたは複数の行列を共有することができる。コードワード
Figure 0005468184
は、2進ストリングを表すことができる。1つまたは複数のコードワードは、任意の所与のメッセージについてシンドロームコーディング式を満たすことができる。
いくつかの実施形態において、単一のマッピング規則112は、誤り訂正ベースのマッピング規則に対応することができる。誤り訂正ベースのマッピング規則は、さまざまな低密度パリティチェックコード、および低密度生成行列コードの符号化および復号化プロセスを使用することができる。誤り訂正ベースのマッピング規則はまた、結合低密度パリティチェックコードおよび低密度生成行列コードの符号化および復号プロセスを使用することができる。単一のマッピング規則112は、情報記録の複数のラウンドに使用されてもよい。単一のマッピング規則112は、複数のコードワードに対応することができる。この場合、適用可能なコードワードは、低電圧レベルコストの制約に従って、複数のコードワードから選択されてもよい。ブロック206の後には、ブロック208が続いてもよい。
ブロック208(1つまたは複数のコードワードを識別する)において、コントローラ106は、メッセージにマッピングする1つまたは複数のコードワードを識別するように構成されてもよい。コードワードは、メッセージの符号化を表すことができる。いくつかの実施形態において、コントローラ106は、上記で説明されているシンドロームコーディング式を適用することによってコードワードを決定することができる。ブロック208の後には、ブロック210が続いてもよい。
ブロック210(適用可能なコードワードが存在するかどうか決定する)において、コントローラ106は、識別されたコードワードが、選択されたブロックに関して制約を満たす適用可能なコードワードを含むかどうかを決定するように構成されてもよい。いくつかの実施形態において、制約は、低電圧レベルコストの制約であってもよい。低電圧レベルコストの制約は、書き込み操作がブロック内の合計電圧レベル低下を最小化することを指定することができる。すなわち、低電圧レベルコストの制約は、書き込み操作前の以前の合計電圧レベルと、書き込み操作後の現在の合計電圧レベルとの最小差に対応することができる。いくつかのその他の実施形態において、制約は、フリップダウンの制約であってもよい。フリップダウンの制約は、書き込み操作が選択されたブロック内のセルの電力レベルを維持または低下させることを指定することができる。
たとえば、選択されたブロックは、[1、1、0、0]と構成されてもよい。すなわち、選択されたブロックは4つのセルを含むことができる。第1および第2のセルは、2進数1を表す高電圧レベルで構成されてもよい。第3および第4のセルは、2進数ゼロを表す低電圧レベルで構成されてもよい。所与のメッセージに対応するいくつかの識別されたコードワードは、[1、0、1、0]、[1、1、1、1]、および[1、0、0、0]を含むことができる。上付き文字tは、転置行列を表すことができる。この例において、第1のコードワード[1、0、1、0]は、選択されたブロック内の第3のセルが現在低電圧レベルであり、第1のコードワードを格納するために高電圧レベルに「フリップアップ」することができないので、フリップダウンの制約を満たすことができない場合がある。同様に、第2のコードワード[1、1、1、1]は、選択されたブロック内の第3および第4のセルが現在低電圧レベルであり、第2のコードワードを格納するために高電圧レベルに「フリップアップ」することができないので、フリップダウンの制約を満たすことができない場合がある。第1のコードワードおよび第2のコードワードとは対称的に、第3のコードワード[1、0、0、0]は、選択されたブロック内の各セルが、第3のコードワードを格納するためにその電圧レベルを維持するかまたは低下させるので、フリップダウンの制約を満たすことができる。
コントローラ106が、適用可能なコードワードは識別されたコードワード内に存在しないと決定する場合、ブロック210の後にはブロック216が続いてもよい。コントローラ106が、適用可能なコードワードが識別されたコードワード内に存在すると決定する場合、ブロック210の後にはブロック212が続いてもよい。
ブロック212(適用可能なコードワードを選択する)において、コントローラ106は、制約を満たす適用可能なコードワードを選択するように構成されてもよい。前の例において、第3のコードワードが選択されたブロックの現在の構成[1、1、0、0]に関してフリップダウンの制約を満たすので、コントローラ106は第3のコードワード[1、0、0、0]を選択することができる。
いくつかの実施形態において、コントローラ106は、必要に応じて、低電圧レベルコストの制約を満たすために、適用可能なコードワードを反転させるように構成されてもよい。低電圧レベルコストの制約は、適用可能なコードワードが可能な限り少ない数のセルの電圧レベルを低下させるべきであると指定することができる。たとえば、選択されたブロックは、[1、1、1、1]と構成されてもよい。所与のメッセージに対応する適用可能なコードワードは、[1、0、0、0]であってもよい。コントローラ106が、適用可能なコードワードを選択されたブロックにそのまま書き込む場合、選択されたブロックの4つのセルのうちの3つの電圧レベルは低下してもよい。
この場合、コントローラ106は、適用可能なコードワードを、[1、0、0、0]から[0、1、1、1]に反転させるように構成されてもよい。このようにして、コントローラ106が、反転された適用可能なコードワードを選択されたブロックに書き込む場合、選択されたブロックの4つのセルのうちの1つだけの電圧レベルが低下してもよい。コントローラ106が、反転された適用可能なコードワードを選択されたブロックから読み取る場合、コントローラ106は、復号化に先立って、反転された適用可能なコードワードを適用可能なコードワードに変換して戻すように構成されてもよい。ブロック212の後には、ブロック214が続いてもよい。
ブロック214(適用可能なコードワードを書き込む)において、コントローラ106は、選択された適用可能なコードワードを、ソリッドステートドライブ104の選択されたブロックに書き込むように構成されてもよい。選択された適用可能なコードワードをソリッドステートドライブ104の選択されたブロックに書き込むことにより、コントローラ106は、選択されたブロックを1つの状態から別の状態に変化させることができる。前の例において、選択されたブロックは最初に、[1、1、0、0]と構成されてもよい。コントローラ106が、第3のコードワード[1、0、0、0]を選択されたブロックに書き込む場合、コントローラ106は、選択されたブロックを[1、1、0、0]という現在の構成から[1、0、0、0]という新しい構成に変化させることができる。ブロック214の後、プロセス200Aは、(たとえば、定期的に、継続的に、または随時要求に応じて)繰り返すか、または終了することができる。
ブロック216(誤り回復手順を実行する)において、コントローラ106が適用可能なコードワードはブロック210に存在しないと決定する場合、コントローラ106は、誤り回復手順を実行するように構成されてもよい。誤り回復手順のいくつかの実施形態において、コントローラ106は、選択されたブロックに消去操作を実行するように構成されてもよい。選択されたブロックに消去操作を実行することにより、コントローラ106は、選択されたブロック内の各セルを最高電圧レベルに戻すように構成されてもよい。誤り回復手順のいくつかのその他の実施形態において、コントローラ106は、ソリッドステートドライブ104内の別のブロックを選択することができる。コントローラ106が誤り回復手順を実行する場合、ブロック216の後には、ブロック206が続いてもよい。
これ以降、図2Bを参照すると、流れ図は、本明細書において説明される少なくともいくつかの実施形態による、符号化されたメッセージを復号するための例示的なプロセス200を示す。プロセス200Bは、ブロック222〜226の1つまたは複数により示されるさまざまな操作、機能、またはアクションを含むことができる。プロセス200Bは、ブロック222(コードワードを読み取る)において開始することができ、ここでコントローラ106は、ブロック108の1つのようなブロックからコードワードを読み取るように構成されてもよい。ブロック222の後には、ブロック224が続いてもよい。
ブロック224(現在のマッピング規則を取り出す)において、コントローラ106は、読み取られたブロックに関連付けられている現在のマッピング規則を取り出すように構成されてもよい。上記で説明されているように、読み取られたブロックに関連付けられている現在のマッピング規則は、ブロックの現在の状態によって異なっていてもよい。いくつかの実施形態において、読み取られたブロックに関連付けられている現在のマッピング規則は、情報記録の現在のラウンドに対応することができる。ブロック224の後には、ブロック226が続いてもよい。
ブロック226(メッセージを識別する)において、コントローラ106は、現在のマッピング規則に従って、取り出されたコードワードに対応するメッセージを識別するように構成されてもよい。ブロック226の後、プロセス200Bは、(たとえば、定期的に、継続的に、または随時要求に応じて)繰り返すか、または終了することができる。
これ以降、図3A〜3C、図4A〜4C、および図5A〜5Cを参照すると、マッピング規則の例示的な実施態様は、本明細書において説明される少なくともいくつかの実施形態によるいくつかの実施例として示される。図3A〜3C、図4A〜4C、および図5A〜5Cに示される例において、例示的なマッピング規則は、上記で説明されているように、シンドロームコーディング式
Figure 0005468184
に対応することができる。図3A〜3Cは、マッピング規則への入力として適合された行列Η、Η、Ηのいくつかの具体的な例を示す。図4A〜4Cは、ソリッドステートドライブ104に書き込まれうるメッセージ
Figure 0005468184
のいくつかの具体的な例を示す。図5A〜5Cは、それぞれ行列Η、Η、Ηおよびメッセージ
Figure 0005468184
に従ってマッピング規則を満たすように適合されたコードワード
Figure 0005468184
のいくつかの具体的な例を示す。
図3Aは、情報記録の第1のラウンドに使用されうる第1の行列302を示す。図4Aは、第1のメッセージ402を示す。図5Aは、コードワード502を示す。具体的な例において、コントローラ106は、第1のメッセージ402を、ソリッドステートドライブ104内の、第1のブロック108Aのようなブロックに書き込むよう指示する命令を受信することができる。情報記録の第1のラウンドに先立って、第1のブロック108Aは、新たに消去されたブロックとして開始することができる。たとえば、第1のブロック108A内の各セル110は、2進数1を表す最高電圧レベルに構成されてもよい。第1のブロック108Aは、情報記録の第1のラウンドに先立って、[1、1、1、1]と構成されてもよい。
コントローラ106から第1のメッセージ402を第1のブロック108Aに書き込むよう指示する命令を受信すると、コントローラ106は、式
Figure 0005468184
に対応する第1のマッピング規則を取り出すことができる。コントローラ106は、式を満たすコードワード
Figure 0005468184
の値を識別するように構成されてもよい。この例において、単一のコードワード502は、第1の行列302および第1のメッセージ402を所与として式を満たすことができる。第1のブロック108Aは新たに消去されるので、コードワード502を含む任意の2進ストリングは、フリップダウンの制約を満たすことができる。その結果、コントローラ106は、コードワード502を第1のブロック108Aに記録するための書き込み操作を実行するように構成されてもよい。この書き込み操作を考慮に入れて、第1のブロック108Aは、[1、1、1、1]という現在の構成から[1、1、0、0]という新しい構成に変えられてもよい。
コントローラ106が第1のブロック108Aを読み取るよう指示する命令を受信すると、コントローラ106は、符号化されたメッセージ[1、1、0、0]を第1のブロック108から読み取ることができる。符号化されたメッセージ[1、1、0、0]を第1のブロック108から読み取ると、コントローラ106は、現在のマッピング規則を取り出すことができる。この場合、現在のマッピング規則は、式
Figure 0005468184
に対応する第1のマッピング規則であってもよい。コントローラ106は、符号化されたメッセージ[1、1、0、0]を、第1のマッピング規則に従って第1のメッセージ402に復号して戻すことができる。
図3Bは、情報記録の第2のラウンドに使用されうる第2の行列304を示す。図4Bは、第2のメッセージ404を示す。図5Bは、複数のコードワード504〜510を示す。具体的な例において、第1のメッセージ402が古くなることもあり、コントローラ106は第2のメッセージ404を第1のブロック108Aに書き込むよう指示する後続の命令を受信することができる。情報記録の第1のラウンドの結果の時点において、第1のブロック108Aは、情報記録の第2のラウンドに先立って[1、1、0、0]と構成されてもよい。
コントローラ106から第2のメッセージ404を第1のブロック108Aに書き込むよう指示する命令を受信すると、コントローラ106は、式
Figure 0005468184
に対応する第2の規則を取り出すことができる。コントローラ106は、式を満たすコードワード
Figure 0005468184
の値を識別するように構成されてもよい。この例において、複数のコードワード504〜510は、第2の行列304および第2のメッセージ404を所与として式を満たすことができる。しかし、コードワード504、506、510は、第1のブロック108Aの現在の構成を所与としてフリップダウンの制約を満足しないこともある。すなわち、コードワード504、506、510の各々は、セル110のうちの少なくとも1つの電圧レベルを不適切に増大させることに関与する場合がある。コードワード508は、フリップダウンの制約を満たすことができる。その結果、コントローラ106は、コードワード508を第1のブロック108Aに記録するための書き込み操作を実行するように構成されてもよい。この書き込み操作を考慮に入れて、第1のブロック108Aは、[1、1、0、0]という現在の構成から[1、0、0、0]という新しい構成に変えられてもよい。
コントローラ106が第1のブロック108Aを読み取るよう指示する命令を受信すると、コントローラ106は、符号化されたメッセージ[1、0、0、0]を第1のブロック108から読み取ることができる。符号化されたメッセージ[1、1、0、0]を第1のブロック108から読み取ると、コントローラ106は、現在のマッピング規則を取り出すことができる。この場合、現在のマッピング規則は、式
Figure 0005468184
に対応する第2のマッピング規則であってもよい。コントローラ106は、符号化されたメッセージ[1、0、0、0]を、第2のマッピング規則に従って第2のメッセージ404に復号して戻すことができる。
図3Cは、情報記録の第3のラウンドに使用されうる第3の行列306を示す。図4Cは、第3のメッセージ406を示す。図5Cは、複数のコードワード512〜526を示す。具体的な例において、第2のメッセージ404が古くなることもあり、コントローラ106は第3のメッセージ406を第1のブロック108Aに書き込むよう指示する後続の命令を受信することができる。情報記録の第2のラウンドの結果の時点において、第1のブロック108Aは、情報記録の第3のラウンドに先立って[1、0、0、0]と構成されてもよい。
コントローラ106から第3のメッセージ406を第1のブロック108Aに書き込むよう指示する命令を受信すると、コントローラ106は、式
Figure 0005468184
に対応する第3の規則を取り出すことができる。コントローラ106は、式を満たすコードワード
Figure 0005468184
の値を識別するように構成されてもよい。この例において、複数のコードワード512〜526は、第3の行列306および第3のメッセージ406を所与として式を満たすことができる。しかし、コードワード512〜518および522〜526は、第1のブロック108Aの現在の構成を所与としてフリップダウンの制約を満足しないこともある。すなわち、コードワード512〜518および522〜526の各々は、セル110のうちの少なくとも1つの電圧レベルを不適切に増大させることに関与する場合がある。コードワード520は、フリップダウンの制約を満たすことができる。その結果、コントローラ106は、コードワード508を第1のブロック108Aに記録するための書き込み操作を実行するように構成されてもよい。この書き込み操作を考慮に入れて、第1のブロック108Aは、引き続き[1、0、0、0]と構成されたままであってもよい。
コントローラ106が第1のブロック108Aを読み取るよう指示する命令を受信すると、コントローラ106は、符号化されたメッセージ[1、0、0、0]を第1のブロック108から読み取ることができる。符号化されたメッセージ[1、1、0、0]を第1のブロック108から読み取ると、コントローラ106は、現在のマッピング規則を取り出すことができる。この場合、現在のマッピング規則は、式
Figure 0005468184
に対応する第3のマッピング規則であってもよい。コントローラ106は、符号化されたメッセージ[1、0、0、0]を、第3のマッピング規則に従って第3のメッセージ406に復号して戻すことができる。
これ以降、図6Aを参照すると、機能ブロック図は、本明細書において説明される少なくともいくつかの実施形態による、メッセージを符号化するための例示的な操作環境600Aを示す。操作環境600Aは、位数4のガロア体(Galois field)(「GF(4)」)602における低密度パリティチェック(「LDPC:low−density parity−check」)コード602、疎マッピングモジュール604、GF(4)における低密度生成行列(「LDGM:low−density generator−matrix」)コード606、マッピングモジュール608、およびコードワード生成モジュール610を含むことができる。
LDPCコード602は、メッセージ612を1つまたは複数のLDPCコードワード614に符号化することができる。LDPCコードワード614は、有限体GF(4)の記号のストリングとして表されてもよい。LDPCコード602は、行列式
Figure 0005468184
によって定義されてもよい。LDPCコード602によって符号化されたコードワードは、上記の行列式を満たすベクトル
Figure 0005468184
であってもよく、ここでΗは固定疎行列であってもよく、Ηおよび
Figure 0005468184
の要素はGF(4)の記号であってもよく、乗算および加算はGF(4)における有限体乗算および加算であってもよい。
疎マッピングモジュール604は、LDPCコード602によって符号化された各LDPCコードワード614を疎2進ストリング616にマッピングすることができる。疎2進ストリング616は、ゼロ(複数可)および1(複数可)のストリングであってもよく、ゼロの数は1よりも多い。たとえば、疎マッピングモジュール604は、有限体GF(4)の4つの記号を、それぞれ、疎ビットストリング1000、0100、0010、および0001にマッピングすることができる。疎マッピングモジュール604は、GF(4)の記号のストリングを、個々の各記号に対応する疎ストリングの連結にマッピングすることができる。
LDGMコード606は、疎2進ストリング616およびソリッドステートドライブのブロックの現在の状態620に基づいて1つまたは複数のLDGMコードワード618を生成することができる。各LDPCコードワード618は、GF(4)記号のストリングとして表されてもよい。LDGMコード606は、行列式
Figure 0005468184
によって定義されてもよい。LDGMコード606によって符号化されたLDGMコードワードはベクトル
Figure 0005468184
であってもよく、ここで
Figure 0005468184
および
Figure 0005468184
は上記の行列式を満たす2つのベクトルであってもよく、Gは固定疎行列であってもよく、要素
Figure 0005468184
は有限体GF(4)の記号であってもよく、乗算および加算はGF(4)における有限体乗算であってもよい。2つ以上のLDGMコードワード618が生成される場合、適用可能なLDGMコードワード618が低電圧レベルコストの制約に従って選択されてもよい。
マッピングモジュール608は、LDGMコードワード618を、状態適応ストリング622として具現された整数のストリングにマッピングすることができる。各整数は、各々が異なる電圧レベルに対応するビット値に対応することができる。たとえば、ソリッドステートドライブ内の各セルが4つの電圧の1つで構成されうる場合、整数0、1、2、3はそれぞれ、第1、第2、第3、および第4の電圧レベルに対応することができる。コードワード生成モジュール610は、状態適応ストリング622および疎2進ストリング616を合計することによってコードワード624を生成することができる。
メッセージを符号化するための例示のプロセスフローは、以下のように説明されてもよい。LDPCコード602は、メッセージ612を受信することができる。LDPCコード602は、メッセージ612をLDPCコードワード614に符号化することができる。疎マッピングモジュール604は、LPDCコードワード614を、1を25%、およびゼロを75%含む、疎2進ストリング616にマッピングすることができる。LDGMコード606は、ソリッドステートドライブ内のブロックの現在の状態(すなわち、構成)620を観察して、疎2進ストリング616および現在の状態620に基づいてLDGMコードワード618を生成することができる。マッピングモジュール608は、LDGMコードワード618を、状態適応ストリング622にマッピングすることができる。コードワード生成モジュール610によって生成された結果のコードワード624は、4を法として、疎2進ストリング616と状態適応ストリング622との和と等しくてもよい。
これ以降、図6Bを参照すると、機能ブロック図は、本明細書において説明される少なくともいくつかの実施形態による、コードワードを復号するための例示的な操作環境600Bを示す。操作環境600Bは、図6Aに関して上記で説明されているように、位数4のガロア体(「GF(4)」)602における低密度パリティチェック(「LDPC」)コード602、疎マッピングモジュール604、GF(4)における低密度生成行列(「LDGM」)コード606、マッピングモジュール608、およびコードワード生成モジュール610を含むことができる。操作環境600Bは、メッセージ復号モジュール626をさらに含むことができる。
コードワードを復号するための例示のプロセスフローは、以下のように説明されてもよい。LDGMコード606および/またはマッピングモジュール608は、ソリッドステートドライブのブロックからコードワード624を取り出すことができる。コードワード624は、4を法として、疎2進ストリング616と状態適応ストリング622との和と等しくてもよく、コードワード624は、25%の記号がフリップされた状態適応ストリング622の雑音破損バージョンとみなされてもよい。マッピングモジュール608およびLDGMコード606は、さまざまな誤り訂正技術を使用して、それぞれ、状態適応ストリング622およびLDGMコードワード618を回復することができる。メッセージ復号モジュール626は、LDGMコードワード618から状態適応ストリング622を減算して、疎2進ストリング616を得ることができる。次いで、疎マッピングモジュール604は、疎2進ストリング616をLDPCコードワード614にマッピングすることができる。LDPCコード602は、LDPCコードワード614からメッセージ612を復号することができる。
図7は、本明細書において提示される少なくともいくつかの実施形態を実施することができる例示のコンピューティングシステムの例示的なコンピュータハードウェアアーキテクチャを示すコンピュータアーキテクチャ図である。図7は、プロセッサ710、メモリ720、および1つまたは複数のドライブ730を含むコンピュータ700を含む。コンピュータ700は、標準的なコンピュータシステム、組み込み型制御コンピュータ、ラップトップコンピュータまたはサーバコンピュータ、モバイルデバイス、セットトップボックス、キオスク、車両情報システム、携帯電話、カスタマイズマシン、またはその他のハードウェアプラットフォームとして実施されてもよい。
ドライブ730およびその関連するコンピュータストレージ媒体は、コンピュータ700に、コンピュータ可読命令、データ構造体、プログラムモジュール、およびその他のデータのストレージを提供する。ドライブ730は、オペレーティングシステム740、アプリケーションプログラム750、プログラムモジュール760、およびデータベース780を含むことができる。プログラムモジュール760は、コントローラ106を含むことができる。コントローラ106は、図2Aおよび図2Bを参照して上記でさらに詳細に説明されているように、メッセージを符号化するためのプロセス200Aおよび/または符号化されたメッセージを復号するためのプロセス200Bを実行するように適合されてもよい。コンピュータ700は、ユーザがコマンドおよびデータを入力することができるユーザ入力デバイス790をさらに含む。入力デバイスは、電子デジタイザ、マイクロフォン、キーボード、および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスを含むことができる。その他の入力デバイスは、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなどを含むことができる。
上記およびその他の入力デバイスは、システムバスに接続されるユーザ入力インターフェースを通じてプロセッサ710に接続されてもよいが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(「USB」)のようなその他のインターフェースおよびバス構造によって接続されてもよい。コンピュータ700のようなコンピュータはまた、出力周辺インターフェース794などを通じて接続されうるスピーカのようなその他の周辺出力デバイスを含むこともできる。
コンピュータ700は、ネットワークインターフェース796に接続されたリモートコンピュータのような、1つまたは複数のコンピュータへの論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピュータは、パーソナルコンピュータ、サーバー、ルーター、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードであってもよく、上記でコンピュータ700に関連して説明される要素の多くまたはすべてを含むことができる。ネットワーク環境は、オフィス、企業ワイドエリアネットワーク(「WAN」)、ローカルエリアネットワーク(「LAN」)、イントラネット、およびインターネットで一般化している。
LANまたはWLANネットワーク環境に使用される場合、コンピュータ700は、ネットワークインターフェース796またはアダプタを通じてLANに接続されてもよい。WANネットワーク環境に使用される場合、コンピュータ700は通常、モデム、もしくはインターネットまたはネットワーク708のようなWANを介して通信を確立するためのその他の手段を含む。WANは、インターネット、例示されているネットワーク708、さまざまなそれらの他のネットワーク、またはその任意の組み合わせを含むことができる。コンピュータ間の通信リンク、リング、メッシュ、バス、クラウド、またはネットワークを確立するその他の手段が使用されてもよいことが理解されるであろう。
いくつかの実施形態において、コンピュータ700は、ネットワーク環境に接続されてもよい。コンピュータ700は、ドライブ730に関連付けられている物理コンピュータ可読ストレージ媒体(複数可)またはその他のストレージデバイスの1つまたは複数の例を含むことができる。システムバスは、プロセッサ710が、コンピュータ可読ストレージ媒体との間でコードおよび/またはデータを読み取ることができるようにする。媒体は、半導体、磁性材料、光媒体、電気ストレージ、電気化学ストレージまたは任意の他のそのようなストレージ技術を非限定的に含む任意の適切な技術を使用して実施されるストレージ要素の形態の装置を表すことができる。媒体は、RAM、ROM、フラッシュ、あるいは揮発性または不揮発性メモリ技術の任意のタイプとして特徴付けられるメモリ720に関連付けられているコンポーネントを表すことができる。媒体はまた、ストレージドライブ730またはそれ以外として実施される、第2のストレージを表すことができる。ハードドライブの実施態様は、ソリッドステートとして特徴付けられてもよいか、または磁気符号化された情報を格納する回転媒体を含むことができる。
ストレージ媒体は、1つまたは複数のプログラムモジュール760を含むことができる。プログラムモジュール760は、プロセッサ710にロードされ実行されるとき、汎用コンピューティングシステムを特殊用途コンピューティングシステムに変えるソフトウェア命令を含むことができる。この説明全体を通じて詳述されているように、プログラムモジュール760は、コンピュータ700が、本明細書において説明されるコンポーネント、論理フロー、および/またはデータ構造体を使用して全システムまたは操作環境内に関与することができるさまざまなツールまたは技法を提供することができる。
プロセッサ710は、任意の数のトランジスタまたはその他の回路素子で構成されてもよく、これらは個別にまたは集合的に任意の数の状態を呈することができる。さらに具体的には、プロセッサ710は、状態機械または有限状態機械として動作することができる。そのような機械は、プログラムモジュール760内に含まれる実行可能命令をロードすることにより、第2の機械、または特定の機械に変換されてもよい。これらのコンピュータ実行可能命令は、プロセッサ710が状態間をどのように遷移するかを指定し、それによりプロセッサ710を構成するトランジスタまたはその他の回路素子を第1の機械から第2の機械に変換することによって、プロセッサ710を変換することができる。いずれかの機械の状態はまた、1つまたは複数のユーザ入力デバイス790、ネットワークインターフェース796、その他の周辺機器、その他のインターフェース、あるいは1人または複数のユーザまたはその他のアクターからの入力を受信することにより変換されてもよい。いずれかの機械はまた、プリンタ、スピーカ、ビデオディスプレイもしくはそれ以外のようなさまざまな出力デバイスのさまざまな状態、または物理的特性を変換することもできる。
プログラムモジュール760をエンコードすることはまた、ストレージ媒体の物理的構造を変換することができる。物理的構造の特定の変換は、この説明のさまざまな実施態様において、さまざまな要因に依存する場合がある。そのような要因の例は、ストレージ媒体が1次ストレージまたは2次ストレージとして特徴付けられるかどうかにかかわらず、ストレージ媒体を実施するために使用される技術を含むことができるが、これらに限定されることはない。たとえば、ストレージ媒体が半導体ベースのメモリとして実施される場合、プログラムモジュール760は、ソフトウェアがその中でエンコードされると半導体メモリ720の物理的状態を変換することができる。たとえば、ソフトウェアは、トランジスタ、コンデンサ、または半導体メモリ720を構成するその他の個別回路素子の状態を変換することができる。
もう1つの例として、ストレージ媒体は、ドライブ730のような磁気または光技術を使用して実施されてもよい。そのような実施態様において、プログラムモジュール760は、ソフトウェアがその中でエンコードされるとき、磁気または光媒体の物理的状態を変換することができる。これらの変換は、所与の磁気媒体内の特定の場所の磁気特性を変更することを含むことができる。これらの変換はまた、所与の磁気媒体内の特定の場所の物理的特徴または特性を変更して、それらの場所の光学特性を変更することを含むことができる。本発明の説明の範囲および精神を逸脱することなく、物理媒体のさまざまな他の変換が可能であることが理解されよう。
これ以降、図8A〜図8Cを参照すると、概略図は、本明細書において構成される少なくともいくつかの実施形態による、コンピューティングデバイス上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品800の部分図を示す。例示のコンピュータプログラム製品800の例示的な実施形態は、804Aの少なくとも1つの命令および/または804Bの少なくとも1つの命令を含むことができる信号搬送媒体802を使用して提供される。図8Bに示される命令804Aは、ソリッドステートドライブのブロックを選択するための1つまたは複数の命令であって、ブロックは第1の状態で構成される、命令、ブロックに対応するマッピング規則を受信するための1つまたは複数の命令、制約を受信するための1つまたは複数の命令、メッセージを受信するための1つまたは複数の命令、マッピング規則に従ってメッセージにマッピングする1つまたは複数のコードワードを識別するための1つまたは複数の命令、第1の状態で構成されたブロックに適用される際に制約に従ってコードワード内の適用可能なコードワードを識別するための1つまたは複数の命令、あるいはソリッドステートドライブのブロックに適用可能なコードワードの書き込み操作を実行し、それによりブロックを第1の状態から第2の状態に変化させるための1つまたは複数の命令を含むことができる。
図8Cに示される命令804Bは、ソリッドステートドライブのブロックから適用可能なコードワードを読み取るための1つまたは複数の命令、ブロックに対応するマッピング規則を取り出すための1つまたは複数の命令、あるいはマッピング規則に従ってコードワードにマッピングするメッセージを識別するための命令を含むことができる。1つまたは複数の命令は、たとえば、コンピュータ実行可能および/または論理実施の命令であってもよい。一部の実施形態において、1つまたは複数のコンピュータプログラム製品800の信号搬送媒体802は、コンピュータ可読媒体806、記録可能媒体808、および/または通信媒体810を含むことができる。
本明細書において説明される主題は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行と併せて実行するプログラムモジュールの一般的コンテキストにおいて提示されているが、当業者であれば、その他の実施態様がその他のタイプのプログラムモジュールと組み合わせて実行されうることを理解するであろう。一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造体、および特定のタスクを実行するかまたは特定の抽象データタイプを実施するその他のタイプの構造体を含む。さらに、当業者であれば、本明細書において説明される主題が、ハンドヘルドデバイス、マルチコアプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、マイクロコンピュータ、メインフレームコンピュータなどを含むその他のコンピュータシステム構成で実施されてもよいことを理解するであろう。
本開示は、本出願において説明される特定の実施形態に関して限定されるべきではなく、実施形態はさまざまな態様を例示することを目的としている。当業者には明らかであるように、その精神および範囲を逸脱することなく多くの変更および変形が行われてもよい。本明細書において列挙される方法および装置に加えて、本開示の範囲内の機能的に等価の方法および装置は、上記の説明から当業者には明らかとなるであろう。そのような変更および変形は、添付の特許請求の範囲内に含まれることが意図される。本開示は、添付の特許請求の範囲の条項、ならびにそのような特許請求の範囲が権利を有する等価物の全範囲によってのみ限定されるものとする。本開示は、当然変化することもある特定の方法、試薬、化合物の組成、または生物系に限定されないことを理解されたい。さらに、本明細書において使用される用語は、特定の実施形態を説明することのみを目的としており、限定的であることを意図していないことも理解されたい。
本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。さまざまな単数形/複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
通常、本明細書において、特に添付の特許請求の範囲(たとえば、添付の特許請求の範囲の本体部)において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう(たとえば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである、など)。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない(たとえば、「a」および/または「an」は、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう(たとえば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、少なくとも2つの記載、または2つ以上の記載を意味する)。さらに、「A、BおよびC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、およびCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。「A、B、またはC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、またはCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
加えて、本開示の特徴または態様がマーカッシュグループに関して説明される場合、それにより本開示はまた、マーカッシュグループの構成要素の任意の個々の構成要素または構成要素のサブグループに関しても説明されることを、当業者であれば理解するであろう。
書面による説明を行うことに関してなど、任意およびすべての目的のため、当業者によって理解されるであろうように、本明細書において開示されるあらゆる範囲はまた、任意およびすべての可能な下位範囲およびその下位範囲の組み合わせを網羅する。任意の一覧される範囲は、同範囲が少なくとも等価の2分の1、3分の1、4分の1、5分の1、10分の1などに分割されることを十分に説明および可能にするものと容易に理解されてもよい。非限定的な例として、本明細書において説明される各範囲は、下3分の1、中3分の1、および上3分の1などに容易に分解されてもよい。当業者によって理解されるであろうように、「最大(up to)」、「少なくとも(at least)」、「よりも大きい(greater than)」、「よりも小さい(less than)」などのようなすべての表現は、列挙される数を含み、引き続き上記で説明されているような下位範囲に分解されてもよい範囲を示す。最後に、当業者に理解されるであろうように、範囲は個々の構成要素を含む。したがって、たとえば、1個〜3個の要素を有するグループは、1個、2個、または3個の要素を有するグループと称される。同様に、1個〜5個の要素を有するグループは、1個、2個、3個、4個、または5個の要素を有するグループと称される、というようになる。
本明細書においてさまざまな態様および実施形態が開示されたが、当業者にはその他の態様および実施形態が明らかとなろう。本明細書において開示されるさまざまな態様および実施形態は、説明のためのものであって、限定的であることを意図しておらず、真の範囲および精神は後段の特許請求の範囲により示される。

Claims (23)

  1. ソリッドステートドライブのブロックを選択することであって、前記ブロックは第1の状態で構成されることと、
    前記ブロックに対応するマッピング規則を受信することと、
    制約を受信することと、
    メッセージを受信することと、
    前記マッピング規則に従って前記メッセージにマッピングする1つまたは複数のコードワードを識別することと、
    前記第1の状態で構成された前記ブロックに適用される際に前記制約に従って前記コードワード内の適用可能なコードワードを識別することと、
    前記ソリッドステートドライブ内の前記ブロックに前記適用可能なコードワードの書き込み操作を実行し、それにより前記ブロックを前記第1の状態から第2の状態に変化させることとを備える、メッセージを符号化するための方法。
  2. 前記マッピング規則に従って前記メッセージにマッピングする1つまたは複数のコードワードを識別することは、シンドロームコーディングベースのマッピング規則に従って前記メッセージにマッピングする前記コードワードを識別することを備える請求項1に記載の方法。
  3. 前記マッピング規則に従って前記メッセージにマッピングする1つまたは複数のコードワードを識別することは、誤り訂正ベースのマッピング規則に従って前記メッセージにマッピングする前記コードワードを識別することを備える請求項1に記載の方法。
  4. 前記制約はフリップダウンの制約を備え、前記第1の状態で構成された前記ブロックに適用される際に前記制約に従って前記コードワード内の適用可能なコードワードを識別することは、前記フリップダウンの制約を満たすと同時に前記第1の状態の前記ブロックに書き込みされうる前記適用可能なコードワードを識別することを備える請求項1に記載の方法。
  5. 前記フリップダウンの制約は、前記書き込み操作が前記ブロック内のセルの電力レベルを維持または低下させることを指定し、複数のビット値は各々前記電圧レベルの1つに対応する請求項4に記載の方法。
  6. セルのより高い電圧レベルはより高いビット値を表し、前記セルのより低い電圧レベルはより低いビット値を表す請求項4に記載の方法。
  7. 前記コードワードは、前記ブロック内のセルの電圧レベルの比率を表す実数を備え、複数のビット値は各々前記電圧レベルの前記比率の1つに対応する請求項1に記載の方法。
  8. 前記制約は低電圧レベルコストの制約を備え、前記低電圧レベルコストの制約は、前記書き込み操作が前記ブロック内の合計電圧レベル低下を最小化することを指定し、複数のビット値は各々前記電圧レベルの1つに対応する請求項1に記載の方法。
  9. 前記ブロックに対応する第2のマッピング規則を受信することと、
    第2のメッセージを受信することと、
    前記第2のマッピング規則に従って、前記第2のメッセージにマッピングする1つまたは複数の第2のコードワードを識別することと、
    前記第2の状態で構成された前記ブロックに適用される際に前記制約に従って前記第2のコードワード内の第2の適用可能なコードワードを識別することと、
    前記ソリッドステートドライブ内の前記ブロックに前記第2の適用可能なコードワードの前記書き込み操作を実行し、それにより前記ブロックを前記第2の状態から第3の状態に変化させることとをさらに備える請求項1に記載の方法。
  10. 第2のメッセージを受信することと、
    前記マッピング規則に従って前記第2のメッセージにマッピングする1つまたは複数の第2のコードワードを識別することと、
    前記第2の状態で構成された前記ブロックに適用される際に前記制約に従って前記第2コードワード内の第2の適用可能なコードワードを識別することと、
    前記ソリッドステートドライブ内の前記ブロックに前記第2の適用可能なコードワードの前記書き込み操作を実行し、それにより前記ブロックを前記第2の状態から第3の状態に変化させることとをさらに備える請求項1に記載の方法。
  11. 前記ソリッドステートドライブ内の前記ブロックから前記適用可能なコードワードを読み取ることと、
    前記ブロックに対応する前記マッピング規則を取り出すことと、
    前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することとをさらに備える請求項1に記載の方法。
  12. 前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することは、シンドロームコーディングベースのマッピング規則に従って前記メッセージを識別することを備える請求項11に記載の方法。
  13. 前記シンドロームコーディングベースのマッピング規則は行列を備える請求項12に記載の方法。
  14. 前記ソリッドステートドライブ内の前記ブロックに前記適用可能なコードワードの書き込み操作を実行することは、
    前記適用可能なコードワードが第2のビット値よりも多数の第1のビット値を含むかどうかを決定することと、
    前記適用可能なコードワードが第2のビット値よりも多数の第1のビット値を含むと決定することに応答して、反転された適用可能なコードワードを生成するために前記適用可能なコードワードのビット値を反転させることと、
    前記反転された適用可能なコードワードを生成するために前記適用可能なコードワードの前記ビット値を反転させると、前記ソリッドステートドライブ内の前記ブロックに前記反転された適用可能なコードワードの前記書き込み操作を実行することと、
    前記適用可能なコードワードが第2のビット値よりも多数の第1のビット値を含まないと決定することに応答して、前記ソリッドステートドライブ内の前記ブロックに前記適用可能なコードワードの前記書き込み操作を実行することとを備える請求項1に記載の方法。
  15. コンピュータによって実行されるときに前記コンピュータに、
    ソリッドステートドライブ内のブロックから適用可能なコードワードを読み取ることと、
    前記ブロックの状態を取り出すことと、
    複数のマッピング規則から前記ブロックの前記状態に対応するマッピング規則を取り出すことと、
    前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することと
    前記ソリッドステートドライブ内の前記ブロックを選択することであって、前記ブロックは第1の状態で構成されることと、
    前記ブロックに対応するマッピング規則を受信することと、
    制約を受信することと、
    前記メッセージを受信することと、
    前記マッピング規則に従って前記メッセージにマッピングする1つまたは複数のコードワードを識別することと、
    前記第1の状態で構成された前記ブロックに適用される際に前記制約に従って前記コードワード内の適用可能なコードワードを識別することと、
    前記ソリッドステートドライブ内の前記ブロックに前記適用可能なコードワードの書き込み操作を実行し、それにより前記ブロックを前記第1の状態から第2の状態に変化させることとを行うことを行うことによって前記メッセージを符号化させる、コンピュータ実行可能命令をそれ自体に格納したコンピュータ可読ストレージ媒体。
  16. 前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することは、シンドロームコーディングベースのマッピング規則に従って前記コードワードにマッピングする前記メッセージを識別することを備える請求項15に記載のコンピュータ可読ストレージ媒体。
  17. 前記マッピング規則に従って前記コードワードにマッピングするメッセージを識別することは、誤り訂正ベースのマッピング規則に従って前記コードワードにマッピングする前記メッセージを識別することを備える請求項15に記載のコンピュータ可読ストレージ媒体。
  18. プロセッサと、
    前記プロセッサに結合されたメモリと、
    ソリッドステートドライブと、
    前記メモリから前記プロセッサ内で実行される符号化ユニットであって、前記プロセッサによって実行されるとき、前記コンピュータシステムに、
    前記ソリッドステートドライブのブロックを選択することであって、前記ブロックは第1の状態で構成されることと、
    前記ブロックに対応する第1のマッピング規則を受信することと、
    制約を受信することと、
    第1のメッセージを受信することと、
    前記第1のマッピング規則に従って前記第1のメッセージにマッピングする1つまたは複数の第1のコードワードを識別することと、
    前記第1の状態で構成された前記ブロックに適用される際に前記制約に従って、前記第1のコードワード内の第1の適用可能なコードワードを識別することと、
    前記ソリッドステートドライブ内の前記ブロックに前記第1の適用可能なコードワードの書き込み操作を実行し、それにより前記ブロックを前記第1の状態から第2の状態に変化させることと、
    前記ブロックに対応する第2のマッピング規則を受信することと、
    第2のメッセージを受信することと、
    前記第2のマッピング規則に従って前記第2のメッセージにマッピングする1つまたは複数の第2のコードワードを識別することと、
    前記第2の状態で構成された前記ブロックに適用される際に前記制約に従って、前記第2のコードワード内の第2の適用可能なコードワードを識別することと、
    前記ソリッドステートドライブ内の前記ブロックに前記第2の適用可能なコードワードの前記書き込み操作を実行し、それにより前記ブロックを前記第2の状態から第3の状態に変化させることとを行うことによって前記メッセージを符号化させる、符号化ユニットとを備えるコンピュータシステム。
  19. 前記第1の状態は、前記ブロックに消去操作を実行した後の消去済みの状態を含む請求項18に記載のコンピュータシステム。
  20. 前記符号化ユニットは、前記メモリから前記プロセッサ内で実行され、前記プロセッサによって実行されるとき、さらに前記コンピュータシステムに、
    第3のメッセージを受信することと、
    第3のマッピング規則を受信することと、
    前記第3のマッピング規則に従って前記第3のメッセージにマッピングする1つまたは複数の第3のコードワードを識別することと、
    前記制約に従って前記第3のコードワードが第3の適用可能なコードワードを含むかどうかを決定することと、
    前記制約に従って前記第3のコードワードが前記第3の適用可能なコードワードを含むと決定することに応答して、前記ソリッドステートドライブ内の前記ブロックに前記第3の適用可能なコードワードの前記書き込み操作を実行し、それにより前記ブロックを前記第3の状態から第4の状態に変化させることとを行うことによって前記メッセージを符号化させる請求項18に記載のコンピュータシステム。
  21. 前記制約に従って前記第3のコードワードが前記第3の適用可能なコードワードを含まないと決定することに応答して、誤り回復プロセスを実行する請求項20に記載のコンピュータシステム。
  22. 誤り回復プロセスを実行することは、前記ソリッドステートドライブ内の別のブロックを選択することを備える請求項21に記載のコンピュータシステム。
  23. 誤り回復プロセスを実行することは、前記ソリッドステートドライブ内の前記ブロックに消去操作を実行し、それにより前記ブロックを前記第3の状態から前記第1の状態に変化させることを備える請求項21に記載のコンピュータシステム。
JP2013536575A 2010-10-29 2010-10-29 ソリッドステートドライブのための消去カウントを軽減した高機能データ符号化 Expired - Fee Related JP5468184B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2010/054634 WO2012057777A1 (en) 2010-10-29 2010-10-29 Advanced data encoding with reduced erasure count for solid state drives

Publications (2)

Publication Number Publication Date
JP2013541111A JP2013541111A (ja) 2013-11-07
JP5468184B2 true JP5468184B2 (ja) 2014-04-09

Family

ID=45994244

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013536575A Expired - Fee Related JP5468184B2 (ja) 2010-10-29 2010-10-29 ソリッドステートドライブのための消去カウントを軽減した高機能データ符号化

Country Status (6)

Country Link
US (1) US8423867B2 (ja)
EP (1) EP2633414A4 (ja)
JP (1) JP5468184B2 (ja)
KR (1) KR101326011B1 (ja)
CN (1) CN103221928B (ja)
WO (1) WO2012057777A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101741346B1 (ko) 2013-01-11 2017-06-15 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 플래시 메모리들에 대한 페이지 할당
KR101742462B1 (ko) 2013-02-27 2017-06-01 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 메모리 디바이스들을 위한 선형 프로그래밍 기반 디코딩
US9859925B2 (en) 2013-12-13 2018-01-02 Empire Technology Development Llc Low-complexity flash memory data-encoding techniques using simplified belief propagation
US9734129B2 (en) 2014-04-22 2017-08-15 Sandisk Technologies Llc Low complexity partial parallel architectures for Fourier transform and inverse Fourier transform over subfields of a finite field
US9432055B2 (en) 2014-06-26 2016-08-30 Sandisk Technologies Llc Encoder for quasi-cyclic low-density parity-check codes over subfields using fourier transform
US9444493B2 (en) * 2014-06-26 2016-09-13 Sandisk Technologies Llc Encoder with transform architecture for LDPC codes over subfields using message mapping
KR102415645B1 (ko) 2017-03-29 2022-07-04 삼성전자주식회사 멀티미디어 서비스 콘텐트 제공 장치 및 방법
JP2020071888A (ja) * 2018-10-29 2020-05-07 キオクシア株式会社 記憶装置及び記憶方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3604466B2 (ja) * 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
GB2291991A (en) 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5673224A (en) 1996-02-23 1997-09-30 Micron Quantum Devices, Inc. Segmented non-volatile memory array with multiple sources with improved word line control circuitry
US6492918B1 (en) * 1999-09-30 2002-12-10 Stmicroelectronics, Inc. Code word having data bits and code bits and method for encoding data
WO2001080249A1 (fr) * 2000-04-19 2001-10-25 Fujitsu Limited Procede de commande d'ecriture/de lecture de donnees, et dispositif de stockage
JP3893902B2 (ja) * 2001-05-28 2007-03-14 セイコーエプソン株式会社 画像形成装置および該装置における情報更新方法
US6973613B2 (en) * 2002-06-28 2005-12-06 Sun Microsystems, Inc. Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure
US7065607B2 (en) * 2002-06-28 2006-06-20 Microsoft Corporation System and method for implementing a counter
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US6933864B1 (en) * 2002-11-07 2005-08-23 Maxtor Corporation Encoding method using code constraint violation pointers
JP4372134B2 (ja) * 2006-09-29 2009-11-25 株式会社日立製作所 データ比較機能を有するストレージシステム
TWI332611B (en) 2007-05-24 2010-11-01 Realtek Semiconductor Corp Method for writing data in flash memory and error correction coding/decoding method thereof
JP4785819B2 (ja) * 2007-11-07 2011-10-05 株式会社コナミデジタルエンタテインメント 記憶装置、記憶方法、ならびに、プログラム
JP2009135854A (ja) * 2007-12-03 2009-06-18 Fujitsu Ltd メモリアクセス制御装置、制御方法及びプログラム
US7907070B2 (en) * 2008-09-12 2011-03-15 Sharp Laboratories Of America, Inc. Systems and methods for providing unequal error protection using embedded coding
US8732388B2 (en) * 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
CN101676882B (zh) * 2008-09-16 2013-01-16 美光科技公司 存储器装置的内嵌映射信息
US7864085B2 (en) 2009-02-05 2011-01-04 Lsi Corporation Data compression method and apparatus
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process

Also Published As

Publication number Publication date
KR20130077895A (ko) 2013-07-09
US20120110418A1 (en) 2012-05-03
CN103221928B (zh) 2016-01-20
WO2012057777A1 (en) 2012-05-03
EP2633414A4 (en) 2014-03-26
US8423867B2 (en) 2013-04-16
EP2633414A1 (en) 2013-09-04
JP2013541111A (ja) 2013-11-07
KR101326011B1 (ko) 2013-11-07
CN103221928A (zh) 2013-07-24

Similar Documents

Publication Publication Date Title
JP5468184B2 (ja) ソリッドステートドライブのための消去カウントを軽減した高機能データ符号化
JP5944941B2 (ja) クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置
US9385754B2 (en) Controller, information processing system, method of controlling controller, and program
JP5723967B2 (ja) ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス
US20150309869A1 (en) Error-correction encoding and decoding
KR101508890B1 (ko) 메모리 내구성을 위한 동작 방법 및 장치
JP4818381B2 (ja) 半導体メモリ装置
Jiang et al. Rewriting codes for joint information storage in flash memories
US8667360B2 (en) Apparatus, system, and method for generating and decoding a longer linear block codeword using a shorter block length
US20110258370A1 (en) Multiple programming of flash memory without erase
JP2012181761A (ja) 半導体メモリ装置および復号方法
KR20160144960A (ko) 폴라 코드들을 이용한 비대칭 에러 정정 및 플래시 메모리 재기록
JP2013524609A5 (ja)
JP2012244305A (ja) メモリコントローラ、半導体メモリ装置、および復号方法
KR101926608B1 (ko) 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더
US10324785B2 (en) Decoder using low-density parity-check code and memory controller including the same
Mirhoseini et al. Coding-based energy minimization for phase change memory
Kuijper et al. Erasure codes with simplex locality
KR102426047B1 (ko) 폴라 부호 복호화 장치 및 방법
US8869009B2 (en) Read commands specifying error performance
KR20140088423A (ko) 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법
CN1731684A (zh) 构造低密度奇偶校验矩阵的方法和装置
KR20070107521A (ko) 비이진 구조적 저밀도 패리티 검사 부호 생성 방법
US9906241B2 (en) Apparatus and method for turbo product codes
CN101796731B (zh) 在存储系统中更新卷积编码数据

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130606

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130606

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20130606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140128

R150 Certificate of patent or registration of utility model

Ref document number: 5468184

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20130917

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees