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

メモリシステム Download PDF

Info

Publication number
JP2020135391A
JP2020135391A JP2019027796A JP2019027796A JP2020135391A JP 2020135391 A JP2020135391 A JP 2020135391A JP 2019027796 A JP2019027796 A JP 2019027796A JP 2019027796 A JP2019027796 A JP 2019027796A JP 2020135391 A JP2020135391 A JP 2020135391A
Authority
JP
Japan
Prior art keywords
data
coding
code
error
error correction
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
JP2019027796A
Other languages
English (en)
Inventor
俊之 山岸
Toshiyuki Yamagishi
俊之 山岸
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 JP2019027796A priority Critical patent/JP2020135391A/ja
Priority to US16/522,713 priority patent/US10970166B2/en
Publication of JP2020135391A publication Critical patent/JP2020135391A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

【課題】誤り訂正をより高精度に実行可能なメモリシステムを提供する。【解決手段】実施形態のメモリシステムは、メモリコントローラと、不揮発性メモリと、を備える。メモリコントローラは、ホストから受信したユーザデータに対して誤り訂正符号化を実行して第1符号化データを生成し、予め定められた1以上のデータそれぞれに対して誤り訂正符号化を実行して得られる1以上の第2符号化データそれぞれに第1符号化データを加算することにより、第1符号化データに対して誤り抑制符号化を実行した1以上の第3符号化データを生成し、第1符号化データおよび1以上の第3符号化データのうちいずれか1つの符号化データを選択する。不揮発性メモリは、選択された符号化データを記憶する。【選択図】図1

Description

以下の実施形態は、メモリシステムに関する。
近年、記憶装置はますますその記憶密度の集積度を上げており、それとともに1つの記憶素子の信頼性は低下してきている。実用的な信頼性を保つため、多くの記憶装置は誤り訂正符号(ECC:Error Correction Code)を採用している。記憶情報のパターンによって信頼性が変わる記憶素子の場合は、書き込む際に誤りが生じにくいパターンになるような変換をさらに実行することがある。このような変換は、誤り抑制符号(EMC:Error Mitigation Code)または制約符号(Constrained Code)と呼ばれる。誤り抑制符号は誤りの数を減らすことができるが、それだけで実用的な信頼性を確保できないため、通常は誤り訂正符号と併用して使われる。
米国特許出願公開第2017/0262379号明細書
本発明の1つの実施形態は、誤り訂正をより高精度に実行可能なメモリシステムを提供することを目的とする。
実施形態のメモリシステムは、メモリコントローラと、不揮発性メモリと、を備える。メモリコントローラは、ホストから受信したユーザデータに対して誤り訂正符号化を実行して第1符号化データを生成し、予め定められた1以上のデータそれぞれに対して誤り訂正符号化を実行して得られる1以上の第2符号化データそれぞれに第1符号化データを加算することにより、第1符号化データに対して誤り抑制符号化を実行した1以上の第3符号化データを生成し、第1符号化データおよび1以上の第3符号化データのうちいずれか1つの符号化データを選択する。不揮発性メモリは、選択された符号化データを記憶する。
図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。 図2は、第1の実施形態に係るメモリシステムによる符号化および復号の流れを説明するための図である。 図3は、第1の実施形態の誤り抑制符号化部の詳細な機能構成の一例を示すブロック図である。 図4は、第1の実施形態の符号化処理の流れの一例を示すフローチャートである。 図5は、変形例1に係る誤り抑制符号化部の詳細な機能構成の一例を示すブロック図である。 図6は、変形例2に係る誤り抑制符号化部の詳細な機能構成の一例を示すブロック図である。 図7は、第2の実施形態に係るメモリシステムの概略構成例を示すブロック図である。 図8は、第2の実施形態の符号化処理の流れを説明する図である。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
以下では、誤り訂正符号は、符号化の対象となるデータと、誤り訂正符号による冗長部(ECCパリティ)とが明確に区別できる組織符号とする。同様に誤り抑制符号は、符号化の対象となるデータと、誤り抑制符号による冗長部(EMCフラグ)とが明確に区別できる組織符号とする。
このような誤り抑制符号には、例えばアシンメトリック・コーディング(Asymmetric Coding)がある。アシンメトリック・コーディングでは、データのビット系列の0と1の数に基づいて、これらのビットを反転(ビットフリップ)させた方が誤りが少なくなると判断された場合に、データのビットが反転され、かつ、ビットを反転させたことを示す情報(例えば1)がEMCフラグに書き込まれる。また、ビットを反転させない方が誤りが少なくなると判断された場合、データのビットは反転されず、かつ、ビットを反転させないことを示す情報(例えば0)がEMCフラグに書き込まれる。ビットの反転は、例えば、ビットごとに、値が「1」のビットとの排他的論理和を算出することにより実現される。
このようにEMCフラグは、誤り抑制符号化で行われた処理を識別するための情報である。アシンメトリック・コーディングでは、上記のように、ビットを反転したか否かによって例えば「1」または「0」がEMCフラグに設定される。なおEMCフラグの設定方法はこれに限られるものではなく、適用する誤り訂正符号によって変更されうる。
(第1の実施形態)
まず、本実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図1は、本実施形態に係るメモリシステムの概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図1ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
メモリシステム1は、いわゆるSSD(Solid State Drive)や、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等、不揮発性メモリ20を備える種々のメモリシステムであってよい。
メモリコントローラ10は、ホスト30からの書き込み要求に従って不揮発性メモリ20への書き込みを制御する。また、ホスト30からの読み出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、例えばSoC(System On a Chip)として構成される半導体集積回路である。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化部14、復号部16およびデータバッファ12を備える。ホストI/F15、メモリI/F13、制御部11、符号化部14、復号部16およびデータバッファ12は、内部バス19で相互に接続されている。以下で説明するメモリコントローラ10の各構成要素の動作の一部または全部は、CPU(Central Processing Unit)がファームウェアを実行することによって実現されてもよいし、ハードウェアで実現されてもよい。
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した命令、書き込み対象のユーザデータなどを内部バス19に出力する。また、ホスト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)などの汎用メモリを用いることができる。なお、データバッファ12は、メモリコントローラ10に内蔵されずに、メモリコントローラ10の外部に搭載されてもよい。
制御部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:Single Level Cell)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC:Multiple Level Cell)である場合は、1つのメモリセルグループが複数ページに対応する。なお、本説明において、MLCには、1つのメモリセルに3ビットを記憶するTLC(Triple Level Cell)や1つのメモリセルに4ビットを記憶するQLC(Quad Level Cell)等が含まれる。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
ホスト30から送信されるユーザデータは、内部バス19に転送されてデータバッファ12に一旦記憶される。
符号化部14は、不揮発性メモリ20に記憶されるユーザデータを符号化して符号語を生成する。符号化部14は、ECC符号化部14aと、誤り抑制符号化部14bと、を備えている。なお、符号化部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
ECC符号化部14aは、不揮発性メモリ20に記憶されるユーザデータに対する誤り訂正符号化を行う。誤り抑制符号化部14bは、誤り訂正符号化されたデータに対する、誤り抑制符号化を行う。
誤り抑制符号化は、書込み対象のデータを変換することによりメモリセルの閾値電圧に偏りを持たせる処理である。これにより、セル疲弊およびビットエラーレート(BER)に関して特性の悪い閾値電圧へプログラムされるセルを削減し、特性の良い閾値電圧へプログラムされるセルを増加させることができる。セル疲弊とは、セル間干渉効果、並びに、書込みおよび消去によるメモリセルの疲弊を意味する。
例えば、セル疲弊およびBER特性は、閾値電圧が高いほど悪い傾向となる場合がある。このような場合、誤り抑制符号化部14bは、高い閾値電圧のメモリセルの出現確率P(Vth)を低く、低い閾値電圧のメモリセルの出現確率P(Vth)を高くするように誤り抑制符号化を行う。
復号部16は、不揮発性メモリ20から読み出された受信語を復号してユーザデータを復元する。復号部16は、ECC復号部16aと、誤り抑制復号部16bと、を備えている。
ECC復号部16aは、不揮発性メモリ20から読み出された受信語に対する誤り訂正復号を行う。誤り抑制復号部16bは、誤り訂正復号されたデータに対する、誤り抑制復号を行う。
次に、本実施形態の不揮発性メモリ20への書き込み処理について説明する。制御部11は、不揮発性メモリ20への書き込み時に、ユーザデータの符号化を符号化部14に指示する。その際、制御部11は、不揮発性メモリ20における符号語の記憶場所(記憶アドレス)を決定し、決定した記憶場所もメモリI/F13へ指示する。
符号化部14のECC符号化部14aは、制御部11からの指示に基づいて、データバッファ12上のユーザデータに対して誤り訂正符号化を実行する。次に、誤り抑制符号化部14bは、誤り訂正符号化後のユーザデータをデータバッファ12から読み出し、読み出したユーザデータに対して誤り抑制符号化を実行して符号語を生成する。
誤り訂正符号の符号化方式としては、例えば、BCH(Bose-Chaudhuri-Hocquenghem)符号、RS(Reed-Solomon)符号のような代数的符号を用いた符号化方式、および、LDPC(Low-Density Parity-Check)符号のような疎グラフに基づく符号を用いた符号化方式を採用することができる。メモリI/F13は、制御部11から指示された不揮発性メモリ20上の記憶場所へ符号語を記憶する制御を行う。
次に、本実施形態の不揮発性メモリ20からの読み出し時の処理について説明する。制御部11は、不揮発性メモリ20からの読み出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、復号部16へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスから受信語を読み出し、読み出した受信語を復号部16に入力する。復号部16のECC復号部16aは、この不揮発性メモリ20から読み出された受信語に対して誤り訂正復号を実行する。その後、誤り抑制復号部16bは、誤り訂正復号されたデータに対して、誤り抑制復号を実行する。
次に、本実施形態のメモリシステム1による符号化および復号の流れについてさらに説明する。図2は、メモリシステム1による符号化および復号の流れを説明するための図である。
符号化の対象となるデータ201は、まずECC符号化部14aにより誤り訂正符号化される。誤り訂正符号化されたデータは、誤り抑制符号化部14bにより誤り抑制符号化される。図2の線211および線212は、それぞれ誤り抑制符号および誤り訂正符号により保護される範囲を示している。このように、本実施形態によれば、データ202a、EMCフラグ202b、および、ECCパリティ202cのすべてが、誤り抑制符号および誤り訂正符号の両方により保護される。不揮発性メモリ20は、このようにして保護されたデータを記憶する。
復号時には、不揮発性メモリ20から読み出された受信語が、ECC復号部16aに渡される。受信語は、データ203a、EMCフラグ203b、および、ECCパリティ203cを含む。図2内の「×」印303dは、EMCフラグ203b内に誤りが含まれることを表している。
本実施形態では、受信語に対して、まずECC復号部16aによる誤り訂正復号が実行される。データ204aおよびEMCフラグ204bは、この誤り訂正復号により復号されたデータを表す。この例では、誤り訂正復号により、EMCフラグ203b内の誤りが訂正され、誤りを含まないEMCフラグ204bが得られている。また、図2に示すように、データ204aおよびEMCフラグ204bは、いずれも誤り抑制符号により保護されている。
データ204aおよびEMCフラグ204bに対して、誤り抑制復号部16bが、誤り抑制復号を実行する。EMCフラグ204bに含まれる誤りは訂正されているため、誤りが増幅されることはない。データ205aは、誤り抑制復号により得られたデータである。
図2に示すような符号化および復号を実現するための機能について図3および図4を用いて説明する。図3は、本実施形態の誤り抑制符号化部14bの詳細な機能構成の一例を示すブロック図である。図4は、本実施形態の符号化処理の流れの一例を示すフローチャートである。
ECC符号化部14aは、符号化対象のデータ301aに、誤り抑制符号化によりデータを変換しないことを示す値を設定したEMCフラグ301bを付したデータを対象として、誤り訂正符号化を行う(ステップS101)。アシンメトリック・コーディングを用いる場合、図3に示すように、ECC符号化部14aは、データを反転しないことを示す「0」が設定されたEMCフラグ301bが付与されたデータ301aに対して誤り訂正符号化を実行する。この結果、ECCパリティ301cが付与されたデータが、誤り訂正符号化による符号化データ(第1符号化データ)として出力される。
ECC符号化部14aは、予め定められた位数の有限体に対して、誤り抑制符号化部14bが採用する誤り抑制符号化方式と共通に線形性を有する誤り訂正符号化方式を用いる。例えばアシンメトリック・コーディングを用いる場合、ECC符号化部14aは、位数が2の有限体で線形性を有するLDPC符号による符号化方式を用いる。位数が2の有限体で線形性を有する符号化方式はLDPC符号に限られず、例えば、BCH符号を用いてもよい。なお、以下では、位数がnの有限体をGF(n)と表記する場合がある。例えば位数が2の有限体はGF(2)と表される。
また、以下では、誤り訂正符号化および誤り抑制符号化の単位とするデータをフレームという。誤り訂正符号化のフレームのサイズ(フレームサイズ)と、誤り抑制符号化のフレームサイズとは、同じであってもよいし、異なっていてもよい。本実施形態では、両者が同じである場合について説明する。
ECC符号化部14aが、上記のようにして誤り訂正符号化を行ったフレーム全体(データ301a、EMCフラグ301b、ECCパリティ301c)は、誤り訂正保護されている。
ECC符号化部14aが誤り訂正符号化を実行した後、誤り抑制符号化部14bは、誤り訂正符号化後のフレームに対して誤り抑制符号化を実行する。誤り抑制符号化部14bは、加算部351と、選択部352と、を備えている。
加算部351は、予め定められたデータに対して誤り訂正符号化を実行して得られる符号化データ(第2符号化データ)と、ステップS101で得られる誤り訂正符号化後の符号化データ(第1符号化データ)とを加算し、加算結果である符号化データ(第3符号化データ)を出力する(ステップS102)。
予め定められたデータは、例えば、ステップS101で得られる符号化データを加算したときに、この符号化データに含まれる各ビットの値を反転させる値(例えば全ビットが「1」のデータ、図3のデータ311a)を含むデータである。また予め定められたデータは、誤り抑制符号化によりデータを変換することを示す値、例えばビットを反転することを示す「1」が設定されたEMCフラグ(図3のEMCフラグ311b)を含む。このように定められたデータに対して誤り訂正符号化を実行して得られる符号化データ(第2符号化データ)は、ECCパリティ311cをさらに含むデータである。
図3の例では、加算部351は、入力されたフレームのデータ部(データ301a)には全ビットが「1」であるデータ311aを加算する。これにより、データ301aのビットが反転される。また加算部351は、EMCフラグ301bには値が「1」であるビットが設定されたEMCフラグ311bを加算する。加算部351は、ECCパリティ301cには、データ311aとEMCフラグ311bとに対する、予め算出したECCパリティ311cを加算する。加算は、例えば、ビットごとの排他的論理和である。すなわちGF(2)で定義される加算演算である。
選択部352は、加算部351による演算で生成されたデータ(フレーム)と、元の入力フレーム(ステップS101により得られる符号化データ)とのうちいずれか1つを選択して出力する(ステップS103)。例えば選択部352は、各フレームの誤り発生確率を推定し、誤り発生確率がより小さい方を選択して出力する。誤り発生確率の推定方法はどのような方法であってもよいが、例えば以下のような方法を適用できる。
(推定方法1)
誤り発生確率が大きいビット値(例えば「1」)の個数が、誤り発生確率が小さいビット値(例えば「0」)の個数より小さいフレームを、誤り発生確率が小さいフレームとして選択する。
(推定方法2)
誤り発生確率が大きいビットパターンがより少ないフレームを、誤り発生確率が小さいフレームとして選択する。ビットパターンは、例えば、MLCに書き込む単位のビットのパターンである。例えばメモリセルがTLCの場合であれば、各メモリセルに書き込むデータに相当する3ビットのパターンがビットパターンである。より具体的には、「000」、「001」、「010」。「011」、「100」、「101」、「110」、および、「111」の8つのビットパターンが存在する。ビットパターンごとの誤り発生確率が算出できる場合は、各フレームに含まれるビットパターンの誤り発生確率の和を求め、求めた和がより小さいフレームを、誤り発生確率が小さいフレームとして選択してもよい。
メモリI/F13は、選択された符号化データを、不揮発性メモリ20に記憶する(ステップS104)。
誤り抑制符号を誤り訂正符号と併用する構成の例としては、誤り抑制符号を外符号とする方法と、誤り抑制符号を内符号とする方法とが考えられる。誤り抑制符号を外符号とする方法は、符号化時には誤り抑制符号化を行ってから誤り訂正符号化を行い、復号時には誤り訂正復号を行ってから誤り抑制復号を行う方法である。誤り抑制符号を内符号とする方法は、符号化時には誤り訂正符号化を行ってから誤り抑制符号化を行い、復号時には誤り抑制復号を行ってから誤り訂正復号を行う方法である。
誤り抑制符号を外符号とする場合、データはまず誤り抑制符号化される。これにより通常、データが誤り抑制される。また符号化方式によってはEMCフラグも誤り抑制することが可能である。誤り抑制されたデータが、その後誤り訂正符号化される。このとき付与されるECCパリティは誤り抑制処理が実行されていないため、データおよびEMCフラグに比べて誤り易いという問題がある。
誤り抑制符号を内符号とする場合、データ、ECCパリティおよび誤り抑制符号のすべてに誤り抑制処理が実行されるため、誤り抑制符号を外符号とする場合に比べて誤り抑制性能が高い。しかし誤り抑制符号を内符号とする場合には、EMCフラグが誤り訂正符号により保護されないという問題が生じる。例えば、誤り訂正復号より誤り抑制復号が先に実行されるが、EMCフラグに誤りが生じていた場合、誤り抑制復号の段階で誤りが増幅される。このため、後段の誤り訂正復号が失敗する可能性が高くなる。
これに対して本実施形態では、誤り訂正符号と誤り抑制符号とを併用する場合であっても、上記のような問題の発生を抑制し、誤り訂正をより高精度に実行可能となる。
すなわち、本実施形態に係るメモリシステムは、データ、EMCフラグおよびECCパリティの全フィールドを用いて誤り発生確率を推定し、より誤り発生確率の小さいフレームを選択して出力できる。言い換えると、本実施形態では、フレーム全体に誤り抑制符号の効果が及んでいる。また、出力されたフレームがビット反転されない元の入力フレーム(ステップS101により得られる符号化データ)の場合、この入力フレームは、誤り訂正保護されているため、出力されたフレームは誤り訂正保護されている。さらに、出力されたフレームがビット反転されたフレーム(ステップS102により得られる符号化データ)の場合、出力されたフレームは、GF(2)上の線形符号の符号語同士が加算されたデータであるため、やはり誤り訂正符号の符号語となっている。すなわち、いずれのフレームが選択された場合であっても、選択されたフレームは、フレーム全体が誤り訂正保護された状態である。
以上のように、本実施形態によれば、誤り訂正符号化と誤り抑制符号化を行って生成されるデータ系列は、その全体が誤り抑制保護され、かつ、誤り訂正保護されている。データ系列全体が誤り抑制されているため、例えば誤り抑制符号を外符号とする場合と比較して、誤り抑制符号に発生する誤りを低減することができる。また、復号時には、まず誤り訂正復号が実行され、EMCフラグを含む全体の誤りを取り除いてから誤り抑制復号が実行される。このため、例えば誤り抑制符号を内符号とする場合に発生する誤り抑制復号時の誤り増幅は、本実施形態では発生しない。
(変形例1)
次に、誤り訂正符号化および誤り抑制符号化のフレームサイズが相互に異なる場合について説明する。以下では、誤り訂正符号としてフレームサイズ127ビット、情報長120ビットのハミング符号を採用し、誤り抑制符号としてフレームサイズ60ビット、情報長59ビットのアシンメトリック・コーディングを採用した例を説明する。図5は、このような変形例1に係る誤り抑制符号化部14bの詳細な機能構成の一例を示すブロック図である。図5の例では、アシンメトリック・コーディング(誤り抑制符号)の2フレームが、ハミング符号(誤り訂正符号)の1フレームに対応する。
まず、118ビットのデータ500aがECC符号化部14aに入力される。ECC符号化部14aは、118ビットのデータ501a(データ500aと同じ)に、EMCフラグのフィールド501bとして2ビット分の「0」を付与して120ビットのデータとする。ECC符号化部14aは、この120ビットのデータに対して、ハミング符号による誤り訂正符号化を実行し、7ビットのパリティビット501cを付与して、127ビットのフレームを出力する。
次に誤り抑制符号化部14bは、ECC符号化部14aにより得られた127ビットのフレームに対して、予め用意された以下3つの誤り訂正符号語を加算し、元の入力フレームと合わせて4つの符号語の候補(符号語候補)を生成する。この加算演算は、GF(2)上の加算である。
符号語1:データ部は、1ビット目〜59ビット目の、値が「0」であるデータ511−1aと、60ビット目〜118ビット目の、値が「1」であるデータ511−1bとを含む。EMCフラグ511−1cは、「01」が設定される。このフラグは、1ビット目〜59ビット目は反転されず、60ビット目〜118ビット目は反転されることを示す。パリティビット511−1dは、データ部(データ511−1a、511−1b)およびEMCフラグ511−1cに対する、ハミング符号によるパリティビットが設定される。
符号語2:データ部は、1ビット目〜59ビット目の、値が「1」であるデータ511−2aと、60ビット目〜118ビット目の、値が「0」であるデータ511−2bとを含む。EMCフラグ511−2cは、「10」が設定される。このフラグは、1ビット目〜59ビット目は反転され、60ビット目〜118ビット目は反転されないことを示す。パリティビット511−2dは、データ部(データ511−2a、511−2b)およびEMCフラグ511−2cに対する、ハミング符号によるパリティビットが設定される。
符号語3:データ部は、1ビット目〜59ビット目の、値が「1」であるデータ511−3aと、60ビット目〜118ビット目の、値が「1」であるデータ511−3bとを含む。EMCフラグ511−3cは、「11」が設定される。このフラグは、1ビット目〜59ビット目、および、60ビット目〜118ビット目がいずれも反転されることを示す。パリティビット511−3dは、データ部(データ511−3a、511−3b)およびEMCフラグ511−3cに対する、ハミング符号によるパリティビットが設定される。
本変形例の誤り抑制符号化部14bは、3つの加算部351−1、351−2、351−3を含む。加算部351−1、351−2、351−3は、それぞれ、入力フレーム(データ501a、EMCフラグのフィールド501b、パリティビット501c)に対して、上記の符号語1、2、3を加算する。
選択部352は、このようにして生成された4つの符号語候補に対しそれぞれ誤り発生確率を推定し、誤り発生確率がより小さい符号語を選択して出力する。図5に示すデータ502a、EMCフラグ502b、および、パリティビット502cを含むデータが、このようにして選択された符号語を表す。
なお誤り抑制復号部16bは、データ部の1ビット目〜59ビット目、および、60ビット目〜118ビット目を、それぞれEMCフラグの1ビット目、および、2ビット目を参照することにより、誤り抑制復号することができる。
このように本変形例によれば、誤り訂正符号化のフレームサイズと誤り抑制符号化のフレームサイズとが異なる場合にも、フレーム全体に対する誤り抑制保護および誤り訂正保護を実現できる。
なお本変形例では、誤り訂正符号化の1フレームが、誤り抑制符号化の2フレームに対応する例を説明した。各符号化のフレームサイズの関係はこれに限られるものではない。他のフレームサイズとする場合は、各符号化のフレームサイズの相違に応じた個数の符号語候補を用いればよい。
(変形例2)
これまではLDPC、BCH、および、アシンメトリック・コーディングなどのように、GF(2)において線形性を有する符号を用いる例を説明した。適用可能な有限体はGF(2)に限らず、誤り訂正符号および誤り抑制符号の両方が同じ有限体に対する線形性を有していれば、2以外の位数の有限体に対しても適用できる。
以下では、GF(2)で線形性を有する、フレームサイズ256バイト、情報長240バイトのRS符号を誤り訂正符号化に使用する場合の変形例について説明する。図6は、このような変形例2に係る誤り抑制符号化部14bの詳細な機能構成の一例を示すブロック図である。
まず、239バイトのデータ600aがECC符号化部14aに入力される。ECC符号化部14aは、239バイトのデータ601a(データ600aと同じ)に、EMCフラグのフィールド601bとして1バイト分の「0」を付与して240バイトのデータとする。ECC符号化部14aは、この240バイトのデータに対して、RS符号化を実行し、16バイトのRS符号パリティ601cを付与して、256バイトのフレームを出力する。
次に誤り抑制符号化部14bは、ECC符号化部14aにより得られた256バイトのフレームに対して、予め用意された255個の誤り訂正符号語の各々を加算し、元の入力フレームと合わせて256個の符号語候補を生成する。この加算演算は、GF(2)上の加算である。
元の入力フレームを除く255個の誤り訂正符号語は、それぞれ、各バイトの値が1〜255(16進数で0x01〜0xFF)であり、これが240回繰り返され、さらにそれぞれについてRS符号パリティ16バイトが付与されたデータである。
例えば図6のデータ611−1aは、各バイトの値が「1」である239バイトのデータである。EMCフラグ611−1bは、各バイトの値が「1」のEMCフラグである。RS符号パリティ611−1cは、データ611−1aおよびEMCフラグ611−1bに対するRS符号パリティが設定される。同様にして、各バイトの値が「2」であるデータ611−2aおよびEMCフラグ611−2b、並びに、これらのデータ対するRS符号パリティ611−2cを含む誤り訂正符号語が用意される。また、各バイトの値が「255」であるデータ611−255aおよびEMCフラグ611−255b、並びに、これらのデータ対するRS符号パリティ611−255cを含む誤り訂正符号語が用意される。
本変形例の誤り抑制符号化部14bは、255個の加算部351−1〜351−255を含む。加算部351−1〜351−255は、それぞれ、入力フレーム(データ601a、EMCフラグのフィールド601b、RS符号パリティ601c)に対して、255個の誤り訂正符号語のうち対応する1つの誤り訂正符号語を加算する。
選択部352は、このようにして生成された256個の符号語候補に対しそれぞれ誤り発生確率を推定し、誤り発生確率がより小さい符号語を選択して出力する。図6に示すデータ602a、EMCフラグ602b、および、RS符号パリティ602cを含むデータが、このようにして選択された符号語を表す。
このように本変形例によれば、誤り訂正符号が線形性を有する有限体に合わせた誤り抑制符号を採用することで、GF(2)で線形性を有する符号化方式のみでなく、RS符号などの様々な誤り訂正符号を使用することが可能となる。
(変形例3)
これまでは、誤り抑制符号としてアシンメトリック・コーディングを用いた例を説明した。適用可能な誤り抑制符号はアシンメトリック・コーディングに限られるものではなく、併用する誤り訂正符号と共通の有限体で線形性を有する限り、どのような誤り抑制符号を用いてもよい。例えば、Guided Scrambling方式を利用した誤り抑制符号を用いてもよい。
この方式では、例えば、シードを用いて生成したランダムな値(擬似乱数)をデータ部に設定し、このシードをEMCフラグに設定したデータを誤り訂正符号化した誤り訂正符号語を、複数のシードを用いて複数用意する。誤り抑制符号化部14bは、ECC符号化部14aにより得られた誤り訂正符号化データ(入力フレーム)に対して、複数の誤り訂正符号語をそれぞれ加算する。選択部352は、入力フレームと合わせた複数の符号語候補から、誤り発生確率がより小さい符号語候補を選択して出力する。
(第2の実施形態)
誤り訂正符号は、フレームサイズが大きいほど訂正能力が高いという性質を有する。このため、フレームサイズが大きい誤り訂正符号が使われる場合がある。一方、誤り抑制符号の符号化方式には、上述のアシンメトリック・コーディング、および、Guided Scrambling方式のように、複数の符号語候補の誤り発生確率を推定し、誤り発生確率がより小さいと推定される符号語を選択する方式がある。
このような誤り抑制符号は、符号化率を所望の値に保ったまま、上記の変形例1のような構成により符号化すると符号語候補の個数が指数関数的に増大し、演算規模が大きくなる。例えば変形例1では、誤り訂正符号化のフレームサイズは、誤り抑制符号化のフレームサイズの2倍であったため、符号語候補の個数は2=4個であった。しかし、例えば誤り訂正符号のフレームサイズが1kビットであり、誤り抑制符号の符号化率が0.99であったとすると、EMCフラグ数は10ビットとなる。すなわち、符号語候補の個数が210=1024個となり、加算および選択のための演算規模が増大する。
そこで、本実施形態では、複数の誤り訂正符号を用いた誤り訂正符号化方式を採用し、複数の誤り訂正符号のうち1つ(先に適用される誤り訂正符号)について、第1の実施形態(または変形例)の方式を適用する。これにより、誤り訂正符号化のフレームサイズが大きい場合であっても、演算規模を増大させずに、誤り訂正符号のパリティに対する誤り抑制符号化を実現できる。複数の誤り訂正符号を用いた誤り訂正符号化方式には、例えば、多次元の誤り訂正符号および連接符号が含まれる。
多次元の誤り訂正符号とは、誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。また、1シンボルは、例えば1ビット(二元体(binary field)の元(element))、または、二元体以外の有限体(finite field)などのアルファベットの元で構成される。
2次元の誤り訂正符号の例としては、積符号がある。積符号は、符号語の構成単位である各情報ビット(シンボルであってもよい)が、行方向と列方向とのそれぞれで誤り訂正符号により保護される構造を備える。
連接符号は、ある誤り訂正符号(外符号、第1誤り訂正符号)で符号化したデータに対して、さらに別の誤り訂正符号(内符号、第2誤り訂正符号)で符号化を実行する方式である。
以下では、積符号を用いた場合を例に説明する。図7は、第2の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図7に示すように、本実施形態のメモリシステム1−2は、メモリコントローラ10−2と不揮発性メモリ20とを備える。本実施形態では、メモリコントローラ10−2内の符号化部14−2(ECC符号化部14−2a、誤り抑制符号化部14−2b)、および、復号部16−2(ECC復号部16−2a、誤り抑制復号部16−2b)の構成が、第1の実施形態と異なっている。その他の構成は、第1の実施形態と同様であるため、同一の符号を付し説明を省略する。
ECC符号化部14−2aは、積符号により誤り訂正符号化を行う点が、第1の実施形態のECC符号化部14aと異なっている。誤り抑制符号化部14−2bは、行方向および列方向の誤り訂正符号化のうち、先に実行される方向(例えば行方向)の誤り訂正符号化による符号化データに対して誤り抑制符号化を行う点が、第1の実施形態の誤り抑制符号化部14bと異なっている。
ECC復号部16−2aは、積符号の誤り訂正復号を行う点が、第1の実施形態のECC復号部16aと異なっている。誤り抑制復号部16−2bは、誤り抑制符号化部14−2bによって誤り抑制符号化された方向の符号化データについて誤り抑制復号を実行する点が、第1の実施形態の誤り抑制復号部16bと異なっている。
図8は、誤り訂正符号にBCH積符号を採用し、誤り抑制符号にアシンメトリック・コーディングを採用した場合の符号化処理の流れを説明する図である。BCH積符号化は、元のデータを2次元に並べ、行方向にBCH符号化を行い行パリティを付けた後、列方向にBCH符号化を行い列パリティを付ける符号化方式である。
例えばECC符号化部14−2aは、入力されたデータ800aを2次元に並べ、2次元に並べられたデータ801a(データ800aと同じ)と、ビットを反転しないことを示す値「0」を設定したEMCフラグ801bとを含むデータに対して、まず行方向のBCH符号化を実行し、行パリティ801cを算出する。
次に誤り抑制符号化部14−2bは、誤り訂正符号化後の符号化データの各行について、上記第1の実施形態(または変形例)の誤り抑制符号化を実行する。データ802a、EMCフラグ802b、および、行パリティ802cは、誤り抑制符号化により出力された符号化データを表す。
次にECC符号化部14−2aは、誤り抑制符号化により出力された符号化データに対して、列方向のBCH符号化を実行する。データ803a、EMCフラグ803b、行パリティ803c、列パリティ803d、EMCフラグのパリティ803e、および、行パリティの列パリティ803fは、列方向のBCH符号化により出力された符号化データを表す。
このように、本実施の形態によれば、BCH符号による行パリティに対しても誤り抑制符号による保護が得られるようになる。BCH符号による列パリティについては誤り抑制符号による保護が得られないが、誤り訂正符号のフレームサイズが大きいため、高い信頼性を確保できる。またフレームサイズが大きい場合であっても、2次元に並べられたデータの行ごとに誤り抑制符号化が実行できる。このため、符号語候補の個数が過大となることを回避し、演算規模が増大することを抑制できる。
なお、先に列方向にパリティを付け、その後、行方向にパリティを付けるようにBCH積符号を構成してもよい。この場合は、先にパリティが付けられる列方向のBCH符号化が行われた後、行方向のBCH符号化の前に、誤り抑制符号化が実行されればよい。
また、積符号を構成する成分符号は、BCH符号に限られるものではなく、どのような符号であってもよい。例えば、LDPC、および、RS符号(変形例2)などを用いてもよい。
また、連接符号を適用する場合は、外符号による符号化データに対して、誤り抑制符号化を実行した後、内符号による符号化を実行すればよい。外符号および内符号に用いる誤り訂正符号はどのような符号であってもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1、1−2 メモリシステム
10、10−2 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14、14−2 符号化部
14a、14−2a ECC符号化部
14b、14−2b 誤り抑制符号化部
15 ホストI/F
16、16−2 復号部
16a、16−2a ECC復号部
16b、16−2b 誤り抑制復号部
19 内部バス
20 不揮発性メモリ
30 ホスト
351 加算部
352 選択部

Claims (10)

  1. ホストから受信したユーザデータに対して誤り訂正符号化を実行して第1符号化データを生成し、
    予め定められた1以上のデータそれぞれに対して前記誤り訂正符号化を実行して得られる1以上の第2符号化データそれぞれに前記第1符号化データを加算することにより、前記第1符号化データに対して誤り抑制符号化を実行した1以上の第3符号化データを生成し、
    前記第1符号化データおよび1以上の前記第3符号化データのうちいずれか1つの符号化データを選択する、
    メモリコントローラと、
    選択された前記符号化データを記憶する不揮発性メモリと、
    を備えるメモリシステム。
  2. 前記メモリコントローラは、前記第1符号化データおよび1以上の前記第3符号化データのうち、誤り発生確率が他の符号化データより小さいと推定される1つの符号化データを選択する、
    請求項1に記載のメモリシステム。
  3. 前記誤り訂正符号化および前記誤り抑制符号化は、予め定められた位数の有限体で線形性を有する、
    請求項1に記載のメモリシステム。
  4. 前記誤り訂正符号化は、符号を構成するシンボルのうち少なくとも1つのシンボルが少なくとも第1成分符号と前記第1成分符号とは異なる第2成分符号とによって保護される多次元の誤り訂正符号を生成する符号化であり、
    前記第1符号化データは、前記第1成分符号である、
    請求項1に記載のメモリシステム。
  5. 前記誤り訂正符号化は、第1誤り訂正符号および第2誤り訂正符号による連接符号を生成する符号化であり、
    前記第1符号化データは、前記第1誤り訂正符号である、
    請求項1に記載のメモリシステム。
  6. 前記誤り訂正符号化の単位とするデータのサイズと、前記誤り抑制符号化の単位とするデータのサイズとが同じである、
    請求項1に記載のメモリシステム。
  7. 前記誤り訂正符号化の単位とするデータのサイズである第1サイズと、前記誤り抑制符号化の単位とするデータのサイズである第2サイズとが異なり、
    前記メモリコントローラは、
    前記第1サイズと前記第2サイズとの相違に応じた個数の複数の前記第2符号化データそれぞれに、前記第1符号化データを加算した複数の前記第3符号化データを生成する、
    請求項1に記載のメモリシステム。
  8. 予め定められた前記データは、前記第1符号化データを加算したときに、前記第1符号化データに含まれる各ビットの値を反転させる値を含む、
    請求項1に記載のメモリシステム。
  9. 予め定められた前記データは、ランダムに生成された値を含む、
    請求項1に記載のメモリシステム。
  10. 前記メモリコントローラは、
    前記不揮発性メモリから読み出された前記符号化データに対して誤り訂正復号を実行し、誤り訂正復号による復号結果に対して誤り抑制復号を実行する、
    請求項1に記載のメモリシステム。
JP2019027796A 2019-02-19 2019-02-19 メモリシステム Pending JP2020135391A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019027796A JP2020135391A (ja) 2019-02-19 2019-02-19 メモリシステム
US16/522,713 US10970166B2 (en) 2019-02-19 2019-07-26 Memory system and method of controlling non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019027796A JP2020135391A (ja) 2019-02-19 2019-02-19 メモリシステム

Publications (1)

Publication Number Publication Date
JP2020135391A true JP2020135391A (ja) 2020-08-31

Family

ID=72040647

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019027796A Pending JP2020135391A (ja) 2019-02-19 2019-02-19 メモリシステム

Country Status (2)

Country Link
US (1) US10970166B2 (ja)
JP (1) JP2020135391A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11057060B1 (en) * 2020-03-23 2021-07-06 Sage Microelectronics Corporation Method and apparatus for matrix flipping error correction
US11726710B2 (en) * 2020-12-22 2023-08-15 Seagate Technology Llc Matrix super parity for data storage

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923680A (en) * 1997-06-05 1999-07-13 Northern Telecom Limited Error correction in a digital transmission system
US6546518B1 (en) 1999-05-19 2003-04-08 Texas Instruments Incorporated Detector error suppression circuit and method
US9055239B2 (en) * 2003-10-08 2015-06-09 Verance Corporation Signal continuity assessment using embedded watermarks
KR20130080203A (ko) 2012-01-04 2013-07-12 삼성전자주식회사 셀 상태들의 비대칭 특성을 고려한 프로그램 데이터를 생성하는 방법 및 그것을 이용한 메모리 시스템
US9191256B2 (en) 2012-12-03 2015-11-17 Digital PowerRadio, LLC Systems and methods for advanced iterative decoding and channel estimation of concatenated coding systems
US9817693B2 (en) 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US10089241B2 (en) 2016-03-10 2018-10-02 Toshiba Memory Corporation Memory system
US9761325B1 (en) * 2016-03-14 2017-09-12 Toshiba Memory Corporation Memory system
JP6960877B2 (ja) * 2018-03-22 2021-11-05 キオクシア株式会社 メモリシステム

Also Published As

Publication number Publication date
US20200264951A1 (en) 2020-08-20
US10970166B2 (en) 2021-04-06

Similar Documents

Publication Publication Date Title
US8769374B2 (en) Multi-write endurance and error control coding of non-volatile memories
US10333558B2 (en) Decoding device and decoding method
JP5723967B2 (ja) ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス
JP6960877B2 (ja) メモリシステム
US8266495B2 (en) Systems and methods for performing concatenated error correction
KR101550762B1 (ko) 연접 오류 정정 장치
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
JP2013524609A5 (ja)
JP6730215B2 (ja) メモリコントローラ、メモリシステムおよび制御方法
JP6847796B2 (ja) メモリシステム
JP2019125910A (ja) メモリシステム
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
JP2019057752A (ja) メモリシステム
US10481971B2 (en) Encoding device, memory controller, communication system, and encoding method
JP6957392B2 (ja) メモリシステム
US11025281B2 (en) Memory system
US10326473B2 (en) Symbol-based coding for NAND flash devices
JP2020135391A (ja) メモリシステム
KR20160075001A (ko) 플래시 메모리 시스템 동작 방법
US11150813B2 (en) Memory system
US10951238B1 (en) Memory system and method for controlling non-volatile memory
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
US20160269046A1 (en) Memory controller, memory system, and decoding method
CN108170554B (zh) 一种nand的数据编码方法和装置
US8819331B2 (en) Memory system and memory controller