JP2021033530A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2021033530A
JP2021033530A JP2019151444A JP2019151444A JP2021033530A JP 2021033530 A JP2021033530 A JP 2021033530A JP 2019151444 A JP2019151444 A JP 2019151444A JP 2019151444 A JP2019151444 A JP 2019151444A JP 2021033530 A JP2021033530 A JP 2021033530A
Authority
JP
Japan
Prior art keywords
component code
code
component
symbols
bits
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.)
Pending
Application number
JP2019151444A
Other languages
English (en)
Inventor
大毅 渡邉
Daiki Watanabe
大毅 渡邉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2019151444A priority Critical patent/JP2021033530A/ja
Priority to US16/795,657 priority patent/US10951238B1/en
Publication of JP2021033530A publication Critical patent/JP2021033530A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2918Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes with error correction codes in three or more dimensions, e.g. 3-dimensional product code where the bits are arranged in a cube
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • H03M13/2978Particular arrangement of the component decoders
    • H03M13/2981Particular arrangement of the component decoders using as many component decoders as component codes
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Abstract

【課題】誤り訂正(復号)能力を向上させる。【解決手段】実施形態のメモリシステムは、不揮発性メモリとメモリコントローラとを備える。メモリコントローラは、第1の成分符号と、第3の成分符号および第4の成分符号の少なくとも一方とによって符号化されたシンボルの集合である第1のシンボル群と、第2の成分符号と、第3の成分符号および第4の成分符号の少なくとも一方とによって符号化されたシンボルの集合である第2のシンボル群とを生成し、第1から第4の成分符号を不揮発性メモリに記憶する。第1の成分符号は第2の成分符号より、第3の成分符号は第4の成分符号より訂正能力が低い。第3の成分符号で保護されているシンボルの割合は、第1のシンボル群より第2のシンボル群の方が小さい。第4の成分符号で保護されているシンボルの割合は、第1のシンボル群より第2のシンボル群の方が大きい。【選択図】図4

Description

以下の実施形態は、メモリシステムに関する。
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
米国特許第9,397,706号明細書
本発明の一つの実施形態は、誤り訂正(復号)能力を向上させることができるメモリシステムを提供することを目的とする。
実施形態のメモリシステムは、不揮発性メモリとメモリコントローラとを備える。メモリコントローラは、第1の成分符号と、第3の成分符号および第4の成分符号の少なくとも一方とによって符号化されたシンボルの集合である第1のシンボル群と、第2の成分符号と、第3の成分符号および第4の成分符号の少なくとも一方とによって符号化されたシンボルの集合である第2のシンボル群とを生成し、第1から第4の成分符号を不揮発性メモリに記憶する。第1の成分符号は第2の成分符号より、第3の成分符号は第4の成分符号より訂正能力が低い。第3の成分符号で保護されているシンボルの割合は、第1のシンボル群より第2のシンボル群の方が小さい。第4の成分符号で保護されているシンボルの割合は、第1のシンボル群より第2のシンボル群の方が大きい。
図1は、データを誤り訂正符号で保護する動作の一般的な流れを説明するための図である。 図2は、積符号の一例を示す図である。 図3は、ブロック積符号の構成例を示す図である。 図4は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。 図5は、第1の実施形態で用いる多次元の誤り訂正符号の構成例を示す図である。 図6は、多次元の誤り訂正符号の各成分符号の共有ビットの数を示す図である。 図7は、各条件、および、各条件を満たすシンボル群のうち各成分符号により保護されるシンボルの割合の関係の一例を示す図である。 図8は、ビットエラーレートとフレームエラーレートとの関係を示す図である。 図9は、符号化器の機能構成例を示すブロック図である。 図10は、多次元の誤り訂正符号を符号化する手順の一例を示すフローチャートである。 図11は、復号器の機能構成例を示すブロック図である。 図12は、多次元の誤り訂正符号を符号化する手順の一例を示すフローチャートである。 図13は、第2の実施形態の符号化器の機能構成例を示すブロック図である。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
近年、NAND型フラッシュメモリなどの不揮発性メモリを利用したメモリシステムは、その高速性という特長を生かし、様々な場所で用いられている。しかしながら、不揮発性メモリから読み出したデータには、不揮発性メモリに記憶されてからの時間経過、並びに、読み出しおよび書き込みの際に生じるノイズ等に起因するエラーが含まれる可能性がある。そのため、一般には、不揮発性メモリに記憶するデータに対して誤り訂正符号を用いた符号化処理が実行され、読出し時にはその誤り訂正符号を用いた復号処理が実行されることで、読み出したデータに含まれているエラーが除去される。
図1は、データを誤り訂正符号で保護する動作の一般的な流れを説明するための図である。なお、本説明におけるホストとは、例えばパーソナルコンピュータ、サーバ装置、ポータブルな情報機器、デジタルスチルカメラ等の情報処理装置であってよい。
ホスト931は、書込み対象のデータ(以下、書込みデータという)をメモリシステム900に対して送信する。メモリシステム900は、ホスト931から受け取った書込みデータを符号化器941を用いて符号化し、これにより生成された符号化データ(符号語)を不揮発性メモリ920に書き込む。したがって、不揮発性メモリ920に書き込まれる符号化データには、基本的にはエラーが含まれていない。
不揮発性メモリ920に記憶されている符号化データは、例えばホスト932からの読出し要求に応じて読み出される。ここで、読み出された符号化データにはエラーが含まれている可能性がある。そこで、読み出された符号化データに含まれるエラーを復号器942を用いて除去しつつ復号を実行することで、オリジナルの符号語が復元される。その後、オリジナルの符号語または復元された符号化前の書込みデータがホスト932へ送信される。なお、読出し要求を発行したホスト932は、書込み要求を発行したホスト931と同一のホストであってもよいし、別のホストであってもよい。
誤り訂正符号として、多次元の誤り訂正符号が用いられる場合がある。多次元の誤り訂正符号とは、誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。また、1シンボルは、例えば1ビット(二元体(binary field)の元(element))、または、二元体以外の有限体(finite field)などのアルファベットの元で構成される。
多次元の誤り訂正符号の例として、図2に積符号を示す。図2に示す積符号200は、構成単位である各情報ビット(シンボルであってもよい)d〜dが、行方向(図面中横方向)と列方向(図面中縦方向)とのそれぞれで、情報長2ビットで且つパリティ長2ビットのハミング符号211〜215および221〜225で保護された構造を備える。このような積符号200では、すべての情報ビットd〜dおよびパリティビットp〜p20が行方向のハミング符号と列方向のハミング符号とで2重に保護されている。図2に示す積符号では、すべてのシンボルが行方向(次元1と称される)および列方向(次元2と称される)の成分符号によって二重に保護されている。なお、多次元の誤り訂正符号としてはこれに限らず、例えば一般化LDPC符号(Generalized Low Density Parity Check Code)などであってもよい。一般化LDPC符号を含む一般の多次元の誤り訂正符号では、シンボルごとに保護の多重度が異なっていてもよく、また、成分符号を次元1と次元2のようにグループ分けすることができないが、このような符号構成に対しても本技術は適用することが可能である。
図3は、多次元の誤り訂正符号の他の例である、ブロック積符号300の構成例を示す図である。ブロック積符号300は、情報ビット(シンボルであってもよい)d〜d11を行方向では情報長4ビット、パリティ長4ビットの3個のハミング符号311、312、313で保護し、列方向では情報長6ビット、パリティ長4ビットの4個のハミング符号321、322、323、324で保護した符号である。
パリティビットp〜p11は、行方向の成分符号のパリティビットである。パリティビットp12〜p27は、列方向の成分符号のパリティビットである。情報ビットd〜d11とパリティビットp〜p11は、行方向の成分符号と列方向の成分符号によって常に二重に保護されている。一方、パリティビットp12〜p27は、積符号200とは異なり、行方向の成分符号によって保護されておらず、列方向の成分符号により一重にしか保護されていない。従って、ブロック積符号300は、多重度の異なるビットを含んでいる。ただしブロック積符号300も、図2の積符号200と同様に、多重度の最大値、すなわち次元数は2である。
ブロック積符号300は、行方向の成分符号の数および構成、並びに、列方向の成分符号の数および構成が不均一であるが、すべての成分符号同士が同じ数の共有ビット(図3の例では2ビットずつ)を持つことは図2に示す積符号200と同様である。共有ビットは、複数の成分符号で共通に符号化されるビットを意味する。一例として、情報ビットd0、は、成分符号であるハミング符号311と321によって共有される共有ビットである。
以下の実施形態では、成分符号の数および構成だけでなく、共有ビットの数を不均一にすることで、誤り訂正符号のエラー訂正能力を向上させる。
(第1の実施形態)
図4は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図4に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図4ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。
メモリコントローラ10は、ホスト30からの書込み要求に従って不揮発性メモリ20への書込みを制御する。また、ホスト30からの読出し要求に従って不揮発性メモリ20からの読出しを制御する。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部(コーデック)14およびデータバッファ12を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14およびデータバッファ12は、内部バス16で相互に接続されている。
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した命令、書込み対象のユーザデータなどを内部バス16に出力する。また、ホストI/F15は、不揮発性メモリ20から読出されて復元されたユーザデータ、制御部11からの応答などをホスト30へ送信する。
メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20への書込み処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20からの読出し処理を行う。
データバッファ12は、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時記憶する。また、データバッファ12は、不揮発性メモリ20から読出したユーザデータをホスト30へ送信するまでに一時記憶する。データバッファ12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、ホスト30からホストI/F15経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20へのユーザデータおよびパリティの書込みをメモリI/F13へ指示する。また、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20からのユーザデータおよびパリティの読出しをメモリI/F13へ指示する。
また、制御部11は、ホスト30からユーザデータの書込み要求を受信した場合、データバッファ12に蓄積されるユーザデータに対して、不揮発性メモリ20上の記憶領域(メモリ領域)を決定する。すなわち、制御部11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが記憶された不揮発性メモリ20上の記憶領域を示す物理アドレスとの対応はアドレス変換テーブルとして記憶される。
また、制御部11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読出しをメモリI/F13へ指示する。
NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書込みおよび読出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、この同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC)である場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12に一旦記憶される。符号化/復号部14は、不揮発性メモリ20に記憶されるユーザデータを符号化して符号語を生成する。また、符号化/復号部14は、不揮発性メモリ20から読出された受信語を復号してユーザデータを復元する。そこで符号化/復号部14は、符号化器(Encoder)17と復号器(Decoder)18を備える。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
次に、本実施形態の書込み処理について説明する。制御部11は、不揮発性メモリ20へのユーザデータの書込み時に、ユーザデータの符号化を符号化器17に指示する。その際、制御部11は、不揮発性メモリ20における符号語の記憶場所(記憶アドレス)を決定し、決定した記憶場所もメモリI/F13へ指示する。
符号化器17は、制御部11からの指示に基づいて、データバッファ12上のユーザデータを符号化して符号語を生成する。符号化方式としては、例えば、BCH(Bose-Chandhuri-Hocquenghem)符号やRS(リード・ソロモン)符号を用いた符号化方式を採用することができる。符号化器17により生成される符号語は、上述において図2を用いて例示した積符号200、および、図3を用いて例示したブロック積符号300などの多次元の誤り訂正符号である。メモリI/F13は、制御部11から指示された不揮発性メモリ20上の記憶場所へ符号語を記憶する制御を行う。
次に、本実施形態の不揮発性メモリ20からの読出し時の処理について説明する。制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読出しを指示する。また、制御部11は、復号器18へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスから受信語を読出し、読出した受信語を復号器18に入力する。復号器18は、不揮発性メモリ20から読出された受信語を復号する。
図5は、第1の実施形態で用いる多次元の誤り訂正符号500の構成例を示す図である。多次元の誤り訂正符号500は、行方向の成分符号511〜514と、列方向の成分符号521〜524によって多重に保護されている。各成分符号は、以下のように複数の成分符号グループ(成分符号群の一例)のいずれかに分類される。また、各成分符号は、以下のような情報長およびパリティ長のハミング符号となっている。
・行方向の成分符号511、512:成分符号グループ531に属し、情報長が10ビット、パリティ長が4ビットのハミング符号
・行方向の成分符号513、514:成分符号グループ532に属し、情報長が8ビット、パリティ長が4ビットのハミング符号
・列方向の成分符号521、522:成分符号グループ533に属し、情報長が14ビット、パリティ長が5ビットのハミング符号
・列方向の成分符号523、524:成分符号グループ534に属し、情報長が12ビット、パリティ長が5ビットのハミング符号
成分符号グループ531は、成分符号グループ532より誤り訂正能力の低い符号となっている。また、成分符号グループ533は、成分符号グループ534より誤り訂正能力の低い符号となっている。相対的に誤り訂正能力が高いとは、より多くの誤りが含まれる受信語に対しても復号成功できることを意味している。例えば誤り訂正能力の指標として、符号化率および符号長を用いることができるが、これらに限られず、その他のどのような指標を用いてもよい。従って、相対的に誤り訂正能力が低いとは、例えば、符号化率が相対的に高いこと、および、符号長が相対的に短いことを意味する。
成分符号グループの個数は、行方向および列方向でそれぞれ2個に限られるものではなく、それぞれ3個以上であってもよい。また各成分符号グループが含む成分符号の個数は2つに限られるものではなく、1つまたは3つ以上の成分符号を含んでもよい。成分符号グループ531、532、533、534に含まれる成分符号が、それぞれ、第1の成分符号、第2の成分符号、第3の成分符号、および、第4の成分符号に相当する。
図5に示す多次元の誤り訂正符号500は、行方向の成分符号の数および構成、並びに、列方向の成分符号の数および構成を不均一にしており、かつ、複数の成分符号同士が異なる数の共有ビットを持っている。
また、図5の多次元の誤り訂正符号500では、成分符号グループ531および532は、いずれも行方向の成分符号に対するグループであるため、成分符号グループ531と成分符号グループ532とで共通に符号化されるシンボルは存在しない。同様に、成分符号グループ533および534は、いずれも列方向の成分符号に対するグループであるため、成分符号グループ533と成分符号グループ534とで共通に符号化されるシンボルは存在しない。
図6は、多次元の誤り訂正符号500の、各成分符号の共有ビットの数を示す図である。例えば成分符号511と成分符号521は、5ビットの共有ビットを持っている。成分符号511と成分符号523は、2ビットの共有ビットを持っている。列方向のパリティビットp16〜p35に相当する箇所は、行方向の成分符号で保護されていない(共有されていない)ため、一重保護と表示されている。
図6に示すように、多次元の誤り訂正符号500は、以下のような共有ビット数となるように設計されている。
・成分符号グループ531に属する符号と成分符号グループ533に属する符号との共有ビット数:5ビット
・成分符号グループ531に属する符号と成分符号グループ534に属する符号との共有ビット数:2ビット
・成分符号グループ532に属する符号と成分符号グループ533に属する符号との共有ビット数:2ビット
・成分符号グループ532に属する符号と成分符号グループ534に属する符号との共有ビット数:4ビット
ここで条件(1)、(2)を以下のように定める。
条件(1):成分符号グループ531によって保護され、かつ、成分符号グループ533および534の少なくとも一方によって保護されている。
条件(2):成分符号グループ532によって保護され、かつ、成分符号グループ533および534の少なくとも一方によって保護されている。
図7は、各条件、および、各条件を満たすシンボル群のうち各成分符号グループの成分符号により保護されるシンボルの割合の関係の一例を示す図である。図7は、図5に示す多次元の誤り訂正符号500についての割合の例を示す。図7に示すように、条件(1)を満たすシンボルの個数は28個であり、条件(2)を満たすシンボルの個数は24個である。
ここで、条件(1)を満たしているシンボル群のうち、成分符号グループ533によって保護されているシンボルの割合は20/28≒71%である。また、条件(1)を満たしているシンボル群のうち、成分符号グループ534によって保護されているシンボルの割合は8/28≒29%である。
これに対して、条件(2)を満たしているシンボル群のうち、成分符号グループ533によって保護されているシンボルの割合は8/24≒33%である。また、条件(2)を満たしているシンボル群のうち、成分符号グループ534によって保護されているシンボルの割合は16/24≒67%である。
従って、多次元の誤り訂正符号500は、あるシンボルが条件(1)を満たしている(すなわち成分符号グループ531によって保護されている)ならば成分符号グループ533によって保護されている確率が高く、あるシンボルが条件(2)を満たしている(すなわち成分符号グループ532によって保護されている)ならば成分符号グループ534によって保護されている確率が高い、という性質を備えている。
言い換えると、多次元の誤り訂正符号500は、条件(1)を満たすシンボル群の中で成分符号グループ533によって保護されているシンボルの割合より、成分符号グループ534によって保護されているシンボルの割合の方が小さい。また多次元の誤り訂正符号500は、条件(2)を満たすシンボル群の中で成分符号グループ533によって保護されているシンボルの割合より、成分符号グループ534によって保護されているシンボルの割合の方が大きい。
なお、例えば、成分符号グループ531によって保護されるシンボル群のうち、成分符号グループ534によって保護されるシンボルの割合が0%であってもよい。すなわち、成分符号グループ531によって保護されるシンボル群に含まれるシンボルであって、成分符号グループ534によって保護されるシンボルが0個であってもよい。同様に、成分符号グループ532によって保護されるシンボル群のうち、成分符号グループ533によって保護されるシンボルの割合が0%(成分符号グループ532によって保護されるシンボル群に含まれるシンボルであって、成分符号グループ533によって保護されるシンボルが0個)であってもよい。
上記のように、成分符号グループ531は成分符号グループ532より訂正能力が低く、成分符号グループ533は成分符号グループ534より訂正能力が低い。このため、多次元の誤り訂正符号500では、訂正能力が低い成分符号グループ同士、訂正能力が高い成分符号グループでより多くの共有ビットを持っていると言い換えることができる。
このように、「訂正能力が低い成分符号グループ同士、訂正能力が高い成分符号グループ同士の共有ビットを多く」し、「訂正能力が低い成分符号グループと訂正能力が高いグループの間の共有ビット数を少なく」することで、多次元の誤り訂正符号の訂正能力を高めることができる可能性がある。
例えば、図8は、BPSK(Binary Phase-Shift Keying)変調したAWGN(Additive White Gaussian Noise)チャネル上で通信を行うモデルを仮定した際、適切に共有ビット数の分布を設計した不均一な構造を持つ積符号を用いた場合と、均一な構造を持つ積符号を用いた際のビットエラーレート−フレームエラーレート曲線を示したものである。Unoptimized(均一な構造を持つ積符号)と比べ、Optimized(不均一な構造を持つ積符号)は、より高いビットエラーレートで復号に成功する、すなわち誤り訂正能力が向上していることが読み取れる。
次に、上記のような多次元の誤り訂正符号を符号化する符号化器17の構成例について説明する。図9は、符号化器17の機能構成例を示すブロック図である。図9の符号化器17は、合計36ビットの情報ビットを受け取り、合計36ビットのパリティビットを付加することで、図5に示す符号長72ビットの多次元の誤り訂正符号500を符号化する符号化器の例である。
図9に示すように、符号化器17は、分配部801と、符号化器811〜814と、符号化器821〜824と、行方向パリティ出力部831と、列方向パリティ出力部832と、データ出力部833と、を備えている。
分配部801は、ホスト30から受け取った書込みデータを、符号化器811〜814、符号化器821〜824、および、データ出力部833に分配する。以下では、書込みデータを情報ビットという場合がある。
符号化器811〜814は、分配部801から受け取った情報ビットを用いて符号化処理を行い、行方向の成分符号のパリティビットを出力する。例えば符号化器811〜814は、それぞれ成分符号511〜514を出力する符号化器に相当する。
符号化器821〜824は、分配部801から受け取った情報ビットを用いて符号化処理を行い、列方向の成分符号のパリティビットを出力する。例えば符号化器821〜824は、それぞれ成分符号521〜524を出力する符号化器に相当する。
行方向パリティ出力部831は、符号化器811〜814から出力されたパリティビットを、分配部801およびデータ出力部833に出力する。列方向パリティ出力部832は、符号化器821〜824から出力されたパリティビットを、データ出力部833に出力する。
データ出力部833は、分配部801、行方向パリティ出力部831、および、列方向パリティ出力部832から受け取ったデータのいずれかを選択し、不揮発性メモリ20に出力する。
図9に示す符号化器17の構成は一例であり、これに限られるものではない。例えば図5と異なる構造の誤り訂正符号500を符号化する場合は、符号化器17は、その構造に応じた構成とすればよい。例えば行方向(列方向)の成分符号の個数が4以外である場合は、符号化器17は、対応する個数の行方向(列方向)の符号化器を備えてもよいし、符号化器17は、複数の成分符号の符号化に用いる1つの符号化器を備えてもよい。
次に、符号化器17による符号化処理の手順について説明する。図10は、符号化器17が多次元の誤り訂正符号500を符号化する手順の一例を示すフローチャートである。
分配部801は、ホスト30から情報ビットd〜d19を受け取ると、データ出力部833を介して、受け取った情報ビットd〜d19を不揮発性メモリ20に出力する(ステップS101)。また分配部801は、受け取った情報ビットを行方向の符号化器811、812、および、列方向の符号化器821、822に、均等に分配する。符号化器811、812、821、822は、入力された情報ビットを用いた符号化処理を実行する(ステップS102)。
なお、例えば符号化器821、822は、成分符号521、522をそれぞれ出力するためには、さらに情報ビットd20〜d27を受け取る必要がある。ステップS102の時点では情報ビットd〜d19のみを受け取っているため、符号化器821、822は、成分符号521、522を出力するための処理のうち、情報ビットd〜d19を用いた処理を実行する。以下の説明でも同様に、各符号化器(811〜814、821〜824)は、受け取った情報ビットまたはパリティビットを用いて実行可能な処理を実行するものとする。なお各符号化器(811〜814、821〜824)は、対応する成分符号を出力するために必要なすべての情報ビットが得られた時点で符号化処理を実行するように構成してもよい。
行方向パリティ出力部831は、行方向の符号化器811、812から出力されたパリティビットp〜pを、分配部801およびデータ出力部833に出力する。データ出力部833は、パリティビットp〜pを、不揮発性メモリ20に出力する(ステップS103)。
分配部801は、入力されたパリティビットp〜pを列方向の符号化器823、824に均等に分配する。符号化器823、824は、入力されたパリティビットを用いた符号化処理を実行する(ステップS104)。
分配部801は、ホスト30から情報ビットd20〜d27を受け取ると、データ出力部833を介して、受け取った情報ビットd20〜d27を不揮発性メモリ20に出力する(ステップS105)。また分配部801は、受け取った情報ビットを行方向の符号化器813、814、および、列方向の符号化器821、822に、均等に分配する。符号化器813、814、821、822は、入力された情報ビットを用いた符号化処理を実行する(ステップS106)。
分配部801は、ホスト30から情報ビットd28〜d35を受け取ると、データ出力部833を介して、受け取った情報ビットd28〜d35を不揮発性メモリ20に出力する(ステップS107)。また分配部801は、受け取った情報ビットd28〜d35を行方向の符号化器813、814に、均等に分配する。また分配部801は、受け取った情報ビットd28〜d35を列方向の符号化器823に分配する。符号化器813、814、823は、入力された情報ビットを用いた符号化処理を実行する(ステップS108)。
行方向の符号化器813、814は、符号化処理によりパリティビットp〜p15を出力する。行方向パリティ出力部831は、パリティビットp〜p15を、分配部801およびデータ出力部833に出力する。データ出力部833は、入力されたパリティビットp〜p15を不揮発性メモリ20に出力する(ステップS109)。
分配部801は、パリティビットp〜p15を列方向の符号化器824に分配する。符号化器824は、入力されたパリティビットを用いた符号化処理を実行する(ステップS110)。
ここまでの処理で、列方向の符号化器821、822、823、824から、パリティビットp16〜p35が出力される。列方向パリティ出力部832は、パリティビットp16〜p35をデータ出力部833に出力する。データ出力部833は、受け取ったp16〜p35を不揮発性メモリ20に出力する(ステップS111)。
以上の手順によって、符号化器17は、図5に示す不均一な構造を持った多次元の誤り訂正符号500を符号化することができる。
次に、復号器18の構成例について説明する。図11は、復号器18の機能構成例を示すブロック図である。図11に示すように、復号器18は、データ受信部1001と、復号データ記憶部1002と、成分符号復号器1003と、復号制御部1004と、データ出力部1005と、を備えている。
データ受信部1001は、不揮発性メモリ20から読み出された読出しデータ(受信語)を受信する。復号データ記憶部1002は、受信された読出しデータを記憶する。
例えば、符号化器17を用いて符号化された多次元の誤り訂正符号500を復号する場合、復号データ記憶部1002には36ビット分の読出しデータが記憶される。復号データ記憶部1002は、読出しデータに限らず、例えば読出しデータから計算した成分符号ごとのシンドロームのみを記憶してもよい。
復号制御部1004は、多次元の誤り訂正符号を成分符号単位で復号する復号処理を制御する。成分符号復号器1003は、復号制御部1004からの制御に従い、成分符号単位での復号処理を行う。復号されたデータ(復元データ)は、復号データ記憶部1002に記憶されてもよい。
データ出力部1005は、復元データをホスト30に出力する。
次に、復号器18による復号処理の手順について説明する。図12は、復号器18が多次元の誤り訂正符号500を符号化する手順の一例を示すフローチャートである。
成分符号復号器1003は、復号制御部1004の制御に従い、各成分符号を復号する(ステップS201)。例えば成分符号復号器1003は、まず、成分符号511の復号に必要な情報を復号データ記憶部1002から読み出し、成分符号511の復号処理を行う。ここで、成分符号511の復号に必要な情報とは、例えば成分符号511を構成するシンボル群である。もし成分符号511の復号処理によって誤りシンボルを検出した場合、その誤りを訂正した上で、訂正後の情報を復号データ記憶部1002に記憶する。もし誤り位置が検出できなかった場合は、成分符号復号器1003は、何もしない。
以下同様に、成分符号復号器1003は、成分符号512〜514および成分符号521〜524についても復号処理と誤り訂正処理を行う。
復号制御部1004は、復号が成功したか否かを判定する(ステップS202)。例えば復号制御部1004は、すべての誤りを訂正することに成功すれば、復号成功と判定する。復号が成功した場合(ステップS202:Yes)、データ出力部1005は、復号されたデータ(復元データ)をホスト30に出力する(ステップS205)。
すべての誤りを訂正できていない場合、すなわち、復号が成功していない場合(ステップS202:No)、復号制御部1004は、復号を終了するか否かを判定する(ステップS203)。例えば復号制御部1004は、復号の回数が予め設定した上限数に達した場合に復号を終了すると判定する。
復号を終了しない場合(ステップS203:No)、復号制御部1004は、ステップS201に戻り、再度成分符号511から順に復号処理を再開する。復号を終了する場合(ステップS203:Yes)、データ出力部1005は、復号が失敗したことを通知する(ステップS204)。
このように、復号器18は、不均一な構造を持った多次元の誤り訂正符号500に対して、成分符号単位での反復復号処理を適用することで、効率よく誤り訂正処理を行うことができる。
上記実施形態は、以下のように変形することができる。なお以下の変形例は、後述する実施形態に対しても適用しうる。
(変形例1)
情報ビットおよびパリティビットの配置順序は入れ換えてもよい。例えば、図5では連続する情報ビットd〜dが成分符号511と521によって共有されているが、情報ビットd0、4、8、12、16などのように、連続しない情報ビットが複数の成分符号で共有されてもよい。このように連続するビットが同じ成分符号で保護されないようにすると、バーストエラーに対する訂正能力を高めることができる。
(変形例2)
これまでは、行方向の符号化器811〜814、および、列方向の符号化器821〜824によって符号化される符号がすべてハミング符号である場合を例として示したが、これらの符号化器の一部または全部が、例えばBCH符号およびRS符号などの他の誤り訂正符号の符号化器であってもよい。BCH符号およびRS符号は、代数的符号の例である。BCH符号およびRS符号以外の代数的符号が用いられてもよい。
(変形例3)
図10に示すフローチャートの各ステップの処理順序は入れ換えてもよい。例えば、符号化器17は、情報ビットd20〜d27を処理(ステップS105、ステップS106)してから、情報ビットd〜d19を処理(ステップS101、S102)してもよい。符号化器17は、情報ビットd、d20、d1、21・・・のような処理順序となるように、すなわち、図10の複数のステップで処理対象とされるビットを交互に処理してもよい。
(変形例4)
各ステップで処理対象とする情報ビットおよびパリティビットの数は変更されてもよい。例えば、ステップS101で受け取る情報ビットの数は20ビットではなく18ビットであってもよい。その場合、例えば、成分符号511と521との間、成分符号512と522の間の共有ビット数が5ビットとなり、成分符号511と522との間、成分符号512と521の間の共有ビット数が4ビットとなる。この結果、成分符号グループ531と成分符号グループ533の間の共有ビット数の平均値は(5+5+4+4)/4=4.5ビットとなる。
(変形例5)
多次元の誤り訂正符号は上記に限られず、他の多次元の誤り訂正符号であってもよい。例えば、行方向の符号化器811〜814のうちの一部、および、列方向の符号化器821〜824のうちの一部は使用されなくてもよい。すなわち、行方向および列方向のそれぞれで少なくとも1つの符号化器が用いられれば、多次元の誤り訂正符号を出力することができる。また、多次元の誤り訂正符号500のビットの保護の多重度の最大値、すなわち次元数は2であるが、保護の多重度の最大値は2よりも大きな数であってもよい。
(変形例6)
符号化器17が行う処理の手順は、回路設計時にハードコードされてもよいし、外部から設定レジスタおよびソフトウェア等を通じて変更可能になっていてもよい。例えば、複数の成分符号で共通に符号化されるシンボルの個数(各成分符号間での共有ビットの個数など)が、設定レジスタなどで設定可能とされてもよい。符号化器17は、設定された個数となるように、ホスト30から受け取った書込みデータを分配し、行方向および列方向の符号化器で符号化する。
複数の成分符号間の共有ビットの個数を個別に設定する代わりに、各成分符号グループ(成分符号群)に含まれるシンボル全体に対する、他の成分符号グループそれぞれとの間で共通に符号化されるシンボル(共有ビットなど)の割合を設定可能としてもよい。符号化器17は、複数の成分符号グループそれぞれについて、他の成分符号グループとの間で共通に符号化されるシンボル(共有ビット)の割合が設定された割合となるように符号化処理を実行する。
このように符号化器17が行う符号化処理手順を外部から変更可能にすることで、様々な構成の誤り訂正符号を柔軟に符号化することができる。
(第2の実施形態)
第1の実施形態は、行方向および列方向の成分符号を用いていた。第2の実施形態は、行方向および列方向の区別をしない成分符号を用いる例である。図13は、第2の実施形態の符号化器17−2の機能構成例を示すブロック図である。符号化器17−2は、第1の実施形態の符号化器17とほぼ共通の構成を持っているが、行方向の符号化器と列方向の符号化器の区別を持たない点で異なっている。
符号化器17−2は、分配部801−2と、符号化器811−2〜818−2と、パリティ出力部831−2と、データ出力部833−2と、を備えている。
分配部801−2は、ホスト30から受け取った書込みデータを、符号化器811−2〜818−2、および、データ出力部833−2に分配する。符号化器811−2〜818−2は、分配部801−2から受け取った情報ビットを用いて符号化処理を行い、成分符号のパリティビットを出力する。パリティ出力部831−2は、符号化器811−2〜818−2から出力されたパリティビットを、分配部801−2およびデータ出力部833−2に出力する。データ出力部833−2は、分配部801−2、および、パリティ出力部831−2から受け取ったデータのいずれかを選択し、不揮発性メモリ20に出力する。
第1の実施形態の符号化器17では、行方向の成分符号同士(例えば成分符号511と512)の間には共有ビットが存在しなかった。これに対して、第2の実施形態の符号化器17−2では、すべての成分符号の間に共有ビットを持つことが可能となる。
このように、行方向の成分符号と列符号の成分符号の区別をなくし、すべての成分符号の間で共有ビットを持ちうる構成をとることで、第1の実施形態の符号化器17と比べ、より柔軟な符号設計を行うことが可能となる。
すべての成分符号の間で共有ビットを持ちうる誤り訂正符号として、ハーフプロダクトコード(半積符号)と呼ばれる誤り訂正符号がある。ハーフプロダクトコードは、すべての成分符号の間の共有ビットの個数が均等になるよう設計される。これに対して、本実施形態の符号化器17−2が符号化する誤り訂正符号は、各成分符号の間の共有ビット数の個数が均等でないような構成も可能である。従って、ハーフプロダクトコードより高い誤り訂正能力を得ることができる。
第2の実施形態の多次元の誤り訂正符号を復号する復号器は、第1の実施形態の復号器18と同様の構成とすることができる。例えば復号器18は、図12と同様の手順に従い、多次元の誤り訂正符号の各成分符号を順に復号することで復号処理を実行することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
17 符号化器
18 復号器
20 不揮発性メモリ
30 ホスト
801 分配部
811〜814、821〜824、811−2〜818−2 符号化器
831 行方向パリティ出力部
832 列方向パリティ出力部
833、833−2 データ出力部

Claims (10)

  1. 不揮発性メモリと、
    ホストから受信したユーザデータに基づいて、
    第1の成分符号と、第3の成分符号および第4の成分符号の少なくとも一方と、によって符号化されたシンボルの集合である第1のシンボル群と、
    第2の成分符号と、前記第3の成分符号および前記第4の成分符号の少なくとも一方と、によって符号化されたシンボルの集合である第2のシンボル群と、
    を生成し、
    前記第1の成分符号、前記第2の成分符号、前記第3の成分符号、および、前記第4の成分符号を前記不揮発性メモリに記憶する、
    メモリコントローラと、
    を備え、
    前記メモリコントローラは、
    前記第1の成分符号を前記第2の成分符号よりも訂正能力を低く符号化し、
    前記第3の成分符号を前記第4の成分符号よりも訂正能力を低く符号化し、
    前記第1のシンボル群の中で前記第3の成分符号で保護されているシンボルの割合より、前記第2のシンボル群の中で前記第3の成分符号で保護されているシンボルの割合の方を小さくし、
    前記第1のシンボル群の中で前記第4の成分符号で保護されているシンボルの割合より、前記第2のシンボル群の中で前記第4の成分符号で保護されているシンボルの割合の方を大きくする、
    ように構成されている、
    メモリシステム。
  2. 前記メモリコントローラは、
    前記第1のシンボル群に含まれるシンボルのうち前記第1の成分符号と前記第3の成分符号とで共通に符号化されるシンボルの個数、
    前記第1のシンボル群に含まれるシンボルのうち前記第1の成分符号と前記第4の成分符号とで共通に符号化されるシンボルの個数、
    前記第2のシンボル群に含まれるシンボルのうち前記第2の成分符号と前記第3の成分符号とで共通に符号化されるシンボルの個数、および、
    前記第2のシンボル群に含まれるシンボルのうち前記第2の成分符号と前記第4の成分符号とで共通に符号化されるシンボルの個数
    がそれぞれ設定された個数となるように、前記第1のシンボル群および前記第2のシンボル群を符号化する、
    請求項1に記載のメモリシステム。
  3. 前記第1の成分符号、前記第2の成分符号、前記第3の成分符号、および、前記第4の成分符号は、複数の成分符号群のうち、相互に異なるいずれかの成分符号群に含まれ、
    前記メモリコントローラは、
    複数の前記成分符号群それぞれについて、前記成分符号群に含まれるシンボル全体に対する、他の成分符号群との間で共通に符号化されるシンボルの割合が設定された割合となるように、前記第1のシンボル群および前記第2のシンボル群を符号化する、
    請求項1に記載のメモリシステム。
  4. 前記第1の成分符号と前記第2の成分符号とで共通に符号化されるシンボル、および、前記第3の成分符号と前記第4の成分符号とで共通に符号化されるシンボルは存在しない、
    請求項1に記載のメモリシステム。
  5. 前記第1の成分符号、前記第2の成分符号、前記第3の成分符号、および、前記第4の成分符号のうち少なくとも1つが代数的符号である、
    請求項1に記載のメモリシステム。
  6. 前記代数的符号は、BCH符号である、
    請求項5に記載のメモリシステム。
  7. 前記代数的符号は、リードソロモン符号である、
    請求項5に記載のメモリシステム。
  8. 前記訂正能力は、符号化率である、
    請求項1に記載のメモリシステム。
  9. 前記訂正能力は、符号長である、
    請求項1に記載のメモリシステム。
  10. 前記メモリコントローラは、
    前記第1の成分符号、前記第2の成分符号、前記第3の成分符号、および、前記第4の成分符号を前記不揮発性メモリから読み出し、
    読み出した前記第1の成分符号、前記第2の成分符号、前記第3の成分符号、および、前記第4の成分符号に対して復号処理を実行する、
    請求項1に記載のメモリシステム。
JP2019151444A 2019-08-21 2019-08-21 メモリシステム Pending JP2021033530A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019151444A JP2021033530A (ja) 2019-08-21 2019-08-21 メモリシステム
US16/795,657 US10951238B1 (en) 2019-08-21 2020-02-20 Memory system and method for controlling non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019151444A JP2021033530A (ja) 2019-08-21 2019-08-21 メモリシステム

Publications (1)

Publication Number Publication Date
JP2021033530A true JP2021033530A (ja) 2021-03-01

Family

ID=74646113

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019151444A Pending JP2021033530A (ja) 2019-08-21 2019-08-21 メモリシステム

Country Status (2)

Country Link
US (1) US10951238B1 (ja)
JP (1) JP2021033530A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11218165B2 (en) * 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001202793A (ja) 2000-01-17 2001-07-27 Sony Corp 半導体記憶装置におけるエラー訂正符号化方法および半導体記憶装置
JP5166074B2 (ja) 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
GB2525430B (en) * 2014-04-25 2016-07-13 Ibm Error-correction encoding and decoding
US9710199B2 (en) * 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10230401B2 (en) 2015-03-10 2019-03-12 Toshiba Memory Corporation Memory controller for a non-volatile memory, memory system and method
US10523245B2 (en) 2016-03-23 2019-12-31 SK Hynix Inc. Soft decoder for generalized product codes
KR20180123207A (ko) * 2017-05-07 2018-11-15 에스케이하이닉스 주식회사 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

Also Published As

Publication number Publication date
US20210058097A1 (en) 2021-02-25
US10951238B1 (en) 2021-03-16

Similar Documents

Publication Publication Date Title
US8239725B2 (en) Data storage with an outer block code and a stream-based inner code
US9195539B2 (en) Method for reading data from block of flash memory and associated memory device
US8769374B2 (en) Multi-write endurance and error control coding of non-volatile memories
JP5723967B2 (ja) ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス
US8732553B2 (en) Memory system and control method thereof
US20160164543A1 (en) Turbo product codes for nand flash
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
KR101550762B1 (ko) 연접 오류 정정 장치
CN111061592B (zh) 一种通用的Nand Flash比特位反转纠错方法
JP2013524609A5 (ja)
JP6847796B2 (ja) メモリシステム
CN112068778A (zh) 用于保持从存储阵列中读取的数据的完整性的方法和设备
US8856616B1 (en) Two dimensional encoding for non-volatile memory blocks
JP6975047B2 (ja) ライトワンスメモリコードのエラー訂正コード管理
CN111869111B (zh) 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字
US10756764B2 (en) Memory system and control method
US10970166B2 (en) Memory system and method of controlling non-volatile memory
KR20160075001A (ko) 플래시 메모리 시스템 동작 방법
US11003528B2 (en) Memory system including an error correction function
JP2021033530A (ja) メモリシステム
JP2020046823A (ja) メモリシステム
US9170881B2 (en) Solid state device coding architecture for chipkill and endurance improvement
KR20140006444A (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
CN108170554B (zh) 一种nand的数据编码方法和装置
US9906241B2 (en) Apparatus and method for turbo product codes