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

メモリシステム Download PDF

Info

Publication number
JP2020155861A
JP2020155861A JP2019051045A JP2019051045A JP2020155861A JP 2020155861 A JP2020155861 A JP 2020155861A JP 2019051045 A JP2019051045 A JP 2019051045A JP 2019051045 A JP2019051045 A JP 2019051045A JP 2020155861 A JP2020155861 A JP 2020155861A
Authority
JP
Japan
Prior art keywords
decoding
memory
code
index
llr
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.)
Granted
Application number
JP2019051045A
Other languages
English (en)
Other versions
JP7237674B2 (ja
Inventor
尚子 木舩
Naoko Kibune
尚子 木舩
浩典 内川
Hironori Uchikawa
浩典 内川
崇宏 藤木
Takahiro Fujiki
崇宏 藤木
大毅 渡邉
Daiki Watanabe
大毅 渡邉
藤原 大輔
Daisuke Fujiwara
大輔 藤原
孝介 森永
Kosuke Morinaga
孝介 森永
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 JP2019051045A priority Critical patent/JP7237674B2/ja
Priority to US16/541,269 priority patent/US10908994B2/en
Publication of JP2020155861A publication Critical patent/JP2020155861A/ja
Application granted granted Critical
Publication of JP7237674B2 publication Critical patent/JP7237674B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • 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
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • 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/0409Online test
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

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

Abstract

【課題】誤り訂正をより高精度に実行可能とする。【解決手段】実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、符号を構成するシンボルのうち少なくとも1つのシンボルが少なくとも第1の成分符号と第2の成分符号とによって保護される多次元の誤り訂正符号を記憶する。メモリコントローラは、誤り訂正符号を不揮発性メモリから読み出し、読み出した誤り訂正符号に対して、第1の成分符号の硬判定復号を実行し、第1復号結果と、第1復号結果の尤もらしさを算出するためのインデックス情報と、を出力し、硬判定復号に失敗した場合は、第1復号結果とインデックス情報とを用いて第2の成分符号の軟判定復号を実行し、復号結果をハードビットとして出力し、軟判定復号に失敗した場合は、ハードビットとして出力された軟判定復号の結果に対して硬判定復号を実行する。【選択図】図1

Description

以下の実施形態は、メモリシステムに関する。
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
米国特許出願公開第2010/0058152号明細書 特開2014−140111号公報 特許第4599625号公報
本発明の一つの実施形態は、誤り訂正をより高精度に実行可能なメモリシステムを提供することを目的とする。
実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、符号を構成するシンボルのうち少なくとも1つのシンボルが少なくとも第1の成分符号と第2の成分符号とによって保護される多次元の誤り訂正符号を記憶する。メモリコントローラは、誤り訂正符号を不揮発性メモリから読み出し、読み出した誤り訂正符号に対して、第1の成分符号の硬判定復号を実行し、第1復号結果と、第1復号結果の尤もらしさを算出するためのインデックス情報と、を出力し、硬判定復号に失敗した場合は、第1復号結果とインデックス情報とを用いて第2の成分符号の軟判定復号を実行し、復号結果をハードビットとして出力し、軟判定復号に失敗した場合は、ハードビットとして出力された軟判定復号の結果に対して硬判定復号を実行する。
図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。 図2は、第1の実施形態に係る多次元の誤り訂正符号の一例を示す図である。 図3は、第1の実施形態の符号化/復号部の機能構成の一例を示すブロック図である。 図4は、第1の実施形態による反復復号処理の概要を説明するための図である。 図5は、LLRテーブルの一例を示す図である。 図6は、8ビットを1シンボルとするRS符号の例を示す図である。 図7は、LLRの絶対値の算出結果の例を示す図である。 図8は、第1の実施形態における反復復号処理の一例を示すフローチャートである。 図9は、第2の実施形態の符号化/復号部の機能構成の一例を示すブロック図である。 図10は、第2の実施形態における反復復号処理の一例を示すフローチャートである。 図11は、第3の実施形態の符号化/復号部の機能構成の一例を示すブロック図である。 図12は、第3の実施形態における反復復号処理の一例を示すフローチャートである。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図1ではホスト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は、例えばSoC(System-On-a-Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
メモリコントローラ10は、ホスト30からの書込み要求に従って不揮発性メモリ20への書込みを制御する。また、ホスト30からの読出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部(コーデック)14、データバッファ12および共有メモリ17を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14、データバッファ12および共有メモリ17は、内部バス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上の記憶領域を示す物理アドレスとの対応は、アドレス変換テーブルとして例えばデータバッファ12に記憶される。
また、制御部11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F13へ指示する。
ここで、NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC)である場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
例えばメモリセルが2ビット/セルのメモリセルである場合、Er、A、B、Cレベルの4つの閾値分布に2ビットのデータ値がそれぞれ対応づけられる。この対応をデータコーディングという。データコーディングは予め定められる。データの書き込み(プログラム)時には、データコーディングに従って記憶するデータ値に応じたレベル(閾値分布)となるようにメモリセルに電荷が注入される。また、2ビット/セルを用いる場合、1つのメモリセルグループは2ページに対応する。各メモリセルが記憶可能な2ビットは、それぞれこの2ページに対応する。以下では、この2ページをロアーページおよびアッパーページと呼ぶ。
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12に一旦記憶される。符号化/復号部14は、不揮発性メモリ20に記憶されるユーザデータを符号化して符号化データ(符号語)を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された符号化データ(読出し情報又は受信語ともいう)を復号してユーザデータを復元する。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
以上のような構成を備えるメモリシステム1における書込み処理では、制御部11は、不揮発性メモリ20への書込み時に、ユーザデータの符号化を符号化/復号部14に指示する。その際、制御部11は、不揮発性メモリ20における符号語の記憶場所(記憶アドレス)を決定し、決定した記憶場所もメモリI/F13へ指示する。符号化/復号部14は、制御部11からの指示に基づいて、データバッファ12上のユーザデータを符号化して符号語を生成する。符号化方式としては、例えば、LDPC(Low-Density Parity-Check)符号やBCH(Bose-Chaudhuri-Hocquenghem)符号やRS(Reed-Solomon)符号を用いた符号化方式を採用することができる。
一方、読出し処理では、制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、符号化/復号部14へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスに対する読み出しを実行し、この読み出しにより得られた読出し情報を符号化/復号部14に入力する。そして、符号化/復号部14は、入力された読出し情報を復号する。
符号化/復号部14は、例えば、多次元の誤り訂正符号の各成分符号の符号化器/復号器として用いることもできる。多次元の誤り訂正符号とは、誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。その際、1シンボルは、例えば1ビット(二元体(binary field)の元(element))、又は、二元体以外の有限体(finite field)などのアルファベットの元で構成される。
ここで、多次元の誤り訂正符号の例として、図2に積符号の構成例を示す。図2に示す積符号500は、各情報ビット(シンボルであってもよい)d〜dが、行方向(図面中横方向)と列方向(図面中縦方向)とのそれぞれで、情報長2ビットで且つパリティ長3ビットのハミング符号511〜515及び521〜525で保護された構造を備える。このような積符号500では、全ての情報ビットd〜dおよびパリティビットp〜p20が行方向(次元1とも称する)のハミング符号511〜515と列方向(次元2とも称する)のハミング符号521〜525とで二重に保護されている。積符号を構成する2つの成分符号のうち一方がハミング符号511〜515であり、他方がハミング符号521〜525である。
図2のような積符号の復号では、例えば符号化/復号部14は、まず積符号を構成する次元1のハミング符号511〜515を順次復号する。次元1のハミング符号511〜515のうち復号に成功しないハミング符号があった場合、符号化/復号部14は、次元1のハミング符号511〜515の復号において訂正できた誤りを訂正し、次元2のハミング符号521〜525を復号する。次元2のハミング符号521〜525のうち復号に成功しないハミング符号があった場合、符号化/復号部14は、次元2のハミング符号521〜525の復号において訂正できた誤りを訂正し、再度、次元1のハミング符号511〜515を復号する。以上のように、次元1のハミング符号511〜515の復号と次元2のハミング符号521〜525の復号とが、終了条件を満たすまで繰り返し実行される。以下では、このように繰り返される復号を反復復号処理という場合がある。積符号は、訂正能力が高く計算量の小さい符号化方式を実現するために使用される。
なお、多次元の誤り訂正符号としては、図2に例示する積符号500に限定されず、例えば一般化LDPC符号(Generalized Low Density Parity Check Code)などであってもよい。一般化LDPC符号を含む一般の多次元の誤り訂正符号では、シンボルごとに保護の多重度が異なっていてもよい。また、一般の多次元の誤り訂正符号では成分符号を次元1と次元2のようにグループ分けすることができないが、このような符号構造を有する多次元の誤り訂正符号に対しても本技術は適用することが可能である。以下では、多次元の誤り訂正符号として積符号を用いた場合を例に説明する。
本実施形態では、積符号の反復復号処理に含まれる2つの成分符号の復号処理のうち、一方が硬判定復号であり、他方が軟判定復号である。硬判定復号は、不揮発性メモリ20から読み出した「0」か「1」の1ビットのバイナリ情報のみを入力とし、パリティと呼ばれる冗長ビットを使って誤りを訂正し、「0」か「1」の1ビットのバイナリ情報を出力する復号方法である。軟判定復号は、不揮発性メモリ20に記憶されている各ビットの値が「0」である確率を示す情報を入力(受信語)とする。また軟判定復号は、例えば、復号後の各ビットが「0」である確率に基づいて判定(事後値硬判定)を実行し、「0」か「1」の1ビットのバイナリ情報を出力する。
本実施形態に係るメモリシステム1における反復復号において、繰り返される復号処理のうち初回の復号処理を除いた復号処理では、軟判定復号の入力として硬判定復号の復号結果が反映されたデータが使用される。本実施形態では、硬判定復号の復号結果(1ビットのバイナリ情報)のみではなく、復号結果に基づいて復号の尤もらしさを算出するための情報を求め、求めた情報も軟判定復号の入力に反映させる。復号の尤もらしさは、例えば、対数尤度比(Log Likelihood Ratio:LLR)で表される。復号の尤もらしさ(LLR)を算出するための情報は、例えば、LLRを求めるためのテーブル(LLRテーブル)のインデックス情報である。
図3は、符号化/復号部14の機能構成の一例を示すブロック図である。図3は、図2に示すような2次元の積符号の符号化/復号を行う場合の例を示す。以下では主に2次元の誤り訂正符号を例に説明するが、N次元(Nは2以上の整数)の誤り訂正符号について同様の手法を適用できる。
図3に示すように、符号化/復号部14は、符号化器201a、201bと、復号器202a、202bとを含む。符号化器201a、201bは、それぞれ次元1および次元2の成分符号を符号化する。復号器202a、202bは、それぞれ次元1および次元2の成分符号を復号する。以下では、復号器202aが次元1の成分符号(第1の成分符号)を硬判定復号し、復号器202bが次元2の成分符号(第2の成分符号)を軟判定復号するものとして説明する。
図2の共有メモリ17は、符号化器201a、201bによる符号化、および、復号器202a、202bによる復号で参照されるデータを記憶する。共有メモリ17は、例えば、復号器202a、202bのm回目(mは1以上の整数)の復号処理で、n次元(nは1以上N以下の整数)の誤り訂正符号を復号するときに用いる入力データをそれぞれ記憶する。また、共有メモリ17は、m回目の復号処理でのn次元の誤り訂正符号の復号結果である出力データをそれぞれ記憶する。共有メモリ17は、符号化/復号部14の内部に備えられていてもよい。
図4は、本実施形態による反復復号処理の概要を説明するための図である。反復復号処理は、復号器202a、202bによる復号処理を繰り返す処理である。メモリI/F13を介して不揮発性メモリ20から読み出された復号対象のデータは共有メモリ17に記憶される(ステップS11)。復号器202aおよび復号器202bは、それぞれ共有メモリ17にアクセスすることができる。
不揮発性メモリ20からデータを読み出す際には、ある読み出し電圧を印加したときにメモリセルに電流が流れるか流れないかでメモリセルのデータが「1」であるか「0」であるかが判定される。本実施形態では、復号器202bは、読み出されたデータの尤もらしさ(尤度情報)を用いて軟判定復号を行う。このため、メモリコントローラ10は、ソフトビットリードにより不揮発性メモリ20からの読み出しを実行する。ソフトビットリードは、ビット値の判定の基準となる読み出し電圧(基準読み出し電圧)と、基準読み出し電圧より低い側および高い側に一定値(ΔR)ずつずらした複数の読み出し電圧と、によるデータを読み出す方法である。
以下では、基準読み出し電圧と、基準読み出し電圧から±ΔR、±2ΔR、±3ΔRずらした6つの読み出し電圧と、を用いる場合を例に説明する。基準読み出し電圧からずらす読み出し電圧の個数はこれに限られるものではない。また以下では、例えば基準読み出し電圧から+ΔRずらした読み出し電圧を用いた読み出し結果を、+ΔRの読み出し結果という場合がある。−ΔR、±2ΔR、±3ΔRについても同様である。
基準読み出し電圧で読み出された「1」か「0」かを示すビット値を以下ではHB(ハードビット)という。図4に示すように、共有メモリ17は、HBとともにソフトビットSB1〜SB4を記憶する。ソフトビットは、例えば、以下のように算出される1ビットの値である。なお以下は、3ビット/セルのメモリセルのロアーページからデータを読み出す場合の例である。他のメモリセル、および、他のページからデータを読み出す場合は、それぞれに対して適切に定められたソフトビットを記憶すればよい。ソフトビットの個数は4つに限られるものではない。
SB1は、+Δ2Rの読み出し結果と、−Δ2Rの読み出し結果とのXNOR(否定排他的論理和)である。SB2は、−Δ3Rと+3ΔRのXNORをXNOR1とし、XNOR1と−ΔRのXNORをXNOR2とするとき、XNOR2と+ΔRのXNORである。SB3は、ミドルページのHBの読み出し結果である。SB4は、アッパーページのHBの読み出し結果である。
ソフトビット(SB1〜SB4)が、復号の尤もらしさ(LLR)を算出するためのインデックス情報に相当する。以下では、このインデックス情報をSBインデックスという。LLRは、HBとSBインデックスとをインデックスとして決定される。例えば復号器202bは、共有メモリ17に書き込まれているHBおよびSBインデックス(SB1〜SB4)を取得し、取得した各ビットの値から、復号の尤もらしさ(LLR)を算出する。復号器202bは、例えば、予め定められたLLRテーブルを用いてLLRを算出する。LLRテーブルは、HBおよびSBインデックスを含むインデックスと、LLRと、を対応づけた情報(対応情報)である。
図5は、LLRテーブルの一例を示す図である。図5に示すように、LLRテーブルは、HBおよびSBインデックス(SB1〜SB4)を含むインデックスごとに、LLRの値が対応づけられている。図4に示す例のようにHBおよびSB1〜SB4の計5ビットが用いられる場合、LLRテーブルのインデックスは、最大2=32種類となり得る。インデックスは32種類すべてが使用される必要はなく、未使用のインデックスがあってもよい。
復号器202bが使用するLLRテーブルは、例えば積符号と組み合わせずに用いる軟判定復号のために、メモリシステム1のベンダーにより予め定められている場合がある。本実施形態では、予め定められたLLRテーブルに未使用のインデックスがある場合、復号器202a用のインデックスとして未使用のインデックスを使用するように、メモリシステム1のベンダーによってLLRテーブルが修正され、修正したLLRテーブルが使用される。復号器202a用のインデックスとは、復号器202aによる復号の尤もらしさを表すLLR(以下、復号器202aのLLRという場合がある)を、復号器202bが算出可能とするためのインデックスを表す。未使用のインデックスがない場合等には、予め定められたLLRテーブルのインデックスのうち、復号器202aのLLRに最も近い値が復号器202bによって算出されるようなインデックスが使用されてもよい。
図4に戻り、復号器202aは、共有メモリ17に書き込まれているHB(「0」か「1」の1ビットのバイナリ情報)を入力し、硬判定復号を実行する(ステップS12)。本実施形態では、復号器202aは、硬判定復号で得られるHBのみでなく、復号器202aによる復号(誤り訂正)の状態に応じてSBインデックスを決定し、決定したSBインデックスを共有メモリ17に書き込む(ステップS13)。復号の状態は、例えば、訂正ビット数である。復号器202aは、復号の状態に応じたLLRが算出されるような値を、復号の状態に応じたSBインデックスとして決定する。
復号器202aにより書き込まれたHBおよびSBインデックスが、次の復号器202bによる軟判定復号で用いられる(ステップS14)。すなわち、復号器202bは、HBのみでなく、復号器202aによる硬判定復号の状態に応じて変更されるSBインデックスを用いて軟判定復号を実行可能となる。これにより、軟判定復号の精度を向上させることが可能となる。
復号器202bは、LLRテーブルを用いて、復号器202aにより書き込まれたHBおよびSBインデックスをLLRに変換する(ステップS15)。復号器202bは、得られたLLRを用いて、読み出されたデータが「0」であるか「1」であるかの判定(事後値硬判定)を実行し、1ビットのバイナリ情報を軟判定復号の復号結果HBとして共有メモリ17に書き込む(ステップS16)。
硬判定復号の状態に応じたSBインデックスの決定手順の具体例を以下に説明する。以下は、硬判定復号の状態として訂正ビット数を用いる例である。
復号器202aが、ある符号語を復号し、復号結果である符号語Yが得られたとする。さらに符号語Yが得られたときの訂正ビット数tがαであったとする。i番目のビットのLLRは以下の(1)式により算出されるものとする。
LLR(b)=log(P(b=0|Yt=α)/P(b=1|Yt=α)) (1)
P(b=0|Yt=α)は、訂正ビット数tがαであるときの、i番目のビットが「0」である確率(尤もらしさ)を表す。P(b=1|Yt=α)は、訂正ビット数tがαであるときの、i番目のビットが「1」である確率(尤もらしさ)を表す。LLRの値が正であればビットデータは「0」である確率が高く、負であればビットデータは「1」である確率が高い。またLLRの絶対値は、そのビットデータの信頼度を表す。LLRの絶対値が大きいほど信頼度が高く、小さいほど信頼度が低い。
が、復号器202aの復号により「0」と判定されたビットであったとする。送信語(復号器202aに入力されるデータ)をXとしたとき、送信語Xと異なるが当該ビット(i番目のビット)は送信語Xと同じ値であると判定される確率が、正しい復号を行う確率に対して無視できるほど低くなるという条件下(例えばα=1という条件下)では、P(b=0|Yt=α)は以下の(2)式および(3)式のように変形できる。
P(b=0|Yt=α)=P(b=0,X=Yt=α|Yt=α)+
P(b=0,X≠Yt=α|Yt=α) (2)
P(b=0|Yt=α)≒P(b=0,X=Yt=α|Yt=α) (3)
正しい訂正を行ったときに当該ビット(i番目のビット)が「1」と判定される確率は0であるため、P(b=1|Yt=α)は、以下の(4)式のように変形できる。
P(b=1|Yt=α)=P(b=1,X=Yt=α|Yt=α)+
P(b=1,X≠Yt=α|Yt=α
=P(b=1,X≠Yt=α|Yt=α) (4)
(3)式を用いると(1)式のlogの真数は、訂正が正しい確率と訂正が誤っている(誤訂正である)確率との比で表される。(2)式の右辺の第2項が省略できないとき、すなわち訂正が正しい確率および誤訂正である確率のオーダーが同程度となる領域では、(2)式の第2項を(3)式のように省略せず、(2)式を用いて値を算出したほうがより正確な値が算出できる。
(3)式の近似を用いると、例えば、ある符号において想定されるエラー率(Bit Error Rate:BER)がβであり、訂正ビット数α=1で訂正される符号語の訂正が正しい確率が90%であり、誤訂正である確率が10%であるときのLLRは、(1)式により以下のように算出することができる。
・i番目のビットが「1」から「0」に訂正されたとき
LLR(b)=log(P(b=0|Yt=1)/P(b=1|Yt=1))=log9=2.19
・i番目のビットが「0」から「1」に訂正されたとき
LLR(b)=log(P(b=0|Yt=1)/P(b=1|Yt=1))=log(1/9)=−2.19
このように、訂正されたビットの値が「0」のときLLRの符号は正となり、「0」のときLLRの符号は負となる。また、この復号結果(符号語Y)が得られたときの訂正ビット数tが1(α=1)であるという条件は同じであるため、そのビットの尤もらしさを表す絶対値はLLRの符号によらず等しくなる。
同様にして、予め想定されるBER(β)で訂正ビット数がαのときに正しい訂正を行う確率をシミュレーションにより算出することができる。すなわち、例えばあるBERおよび訂正ビット数αを仮定して、ランダムにエラービットを記憶させた不揮発性メモリ20に対する誤り訂正をシミュレーションすることにより、符号語が正しい訂正であった確率および符号語が誤訂正であった確率が算出できる。そして、これらの確率を(1)式に代入することによりLLRが算出できる。
復号器202aで用いる符号の種類によっては、符号語の訂正が正しい確率および誤訂正である確率を、シミュレーションによらず、計算式により算出することができる。ここでは例として復号器202aがRS符号を用いる場合を例に、LLRの算出方法を説明する。
RS符号ではrビットの連続した固まりを一つのシンボルとし、N個のシンボルすなわちr×Nビットの並びを一つの符号語とする。図6は、8ビット(r=8)を1シンボルとするRS符号の例を示す図である。簡単のため、ここでは訂正シンボル数が1であるRS符号を考える。
RS符号を復号して、tビット訂正の結果得られた符号語が正しい確率Pcor,α=tは、RS符号語の中にエラーが1ビットだけ含まれている確率に等しくなる。Pcor,α=tは、以下の(5)式により表される。
cor,α=t××β×(1−β)Nr−t (5)
RS符号を復号して、1ビット訂正(α=1)の結果得られた符号語が誤訂正である確率Pmis,α=1は、いくつかのパターンに対応する確率すべての和を取るのが正しい。すなわち、Pmis,α=1は、以下の(6)式のように表される。
mis,α=1=Pmis,α=1,e=3+Pmis,α=1,e=5+Pmis,α=1,e=7+・・・ (6)
mis,α=1,e=tは、1つの符号語にtビットのエラーが2シンボル以上に分かれて挿入され、RS符号を復号した結果誤った1ビットを訂正する確率を示す。。なお、Pmis,e=t=係数×βt×(1−β)Nr−t(β<<1)となるため、tが小さいほどPmisが大きくなる
α=2のとき、すなわち2ビット訂正の結果得られた符号語が誤訂正である確率Pmis,α=2は、以下の(7)式により表される。
mis、α=2=Pmis,α=2,e=2+Pmis,α=2,e=4+Pmis,α=2,e=6+・・・ (7)
同様にα=3および4の場合は、訂正の結果得られた符号語が誤訂正である確率は、それぞれ以下の(8)式および(9)式で表される。
mis,α=3=Pmis,α=3,e=3+Pmis,α=3,e=5+Pmis,α=3,e=7+・・・(8)
mis,α=4=Pmis,α=4,e=4+Pmis,α=4,e=6+Pmis,α=4,e=8+・・・(9)
(6)〜(9)式の右辺は(BER(β)<<1)の条件下でeの値が最も小さい項に近似することができる。従って、例えば(6)式は、右辺のうち最も寄与が大きいパターンであるt=3の場合の確率Pmis,α=1,e=3すなわち符号語内に3ビットのエラーが含まれているが1ビットしか検出されないパターンに近似できる。
この場合、(6)式は、さらに以下の(10)式のように変形できる。なお(N/2r)は、RS符号語の短縮による誤訂正検出の寄与に相当する。
mis,α=1≒Pmis,α=1,e=3
=(N/2r)××××β×(1−β)Nr−3 (10)
上記のようなPcorおよびPmisをそれぞれ(1)式のP(b=0|Yt=α)およびP(b=1|Yt=α)の代わりに用いることにより、RS符号に対するLLRが算出できる。
図7は、RS符号の1シンボル内のビット数を8としたときの1ビット訂正時のLLRの絶対値の算出結果の例を示す図である。Nはシンボル数を表す。図7ではN=10、15、20、25、30の場合の例が示されている。BERはエラー率を表す。図7ではBER=0.001、0.002、0.003、0.004、0.005、0.006、0.007、0.008、0.009、0.01、0.0125の場合の例が示されている。図7ではLLRの値が小数で表されているが、小数点を丸め込み、離散化した値を用いてもよい。
以上のようにして算出された、復号器202aによる復号の尤もらしさを表すLLRが、復号器202bによる軟判定復号時に算出されるように、軟判定復号で用いられるLLRテーブルがメモリシステム1のベンダーにより予め定義されるとともに、復号時には復号器202aが復号の状態に応じてこのLLRテーブルのインデックス(HB、SBインデックス)を決定する。復号器202aは、例えば以下のように、HBと復号器202aの訂正ビット数tとの組合せごとに、インデックスを決定する。
・HB=「0」、t=1:インデックスIDX1
・HB=「0」、t=2:インデックスIDX2
・HB=「0」、t=3:インデックスIDX3
・HB=「1」、t=1:インデックスIDX4
・HB=「1」、t=2:インデックスIDX5
・HB=「1」、t=3:インデックスIDX6
インデックスIDX1〜インデックスIDX6には、HBおよび訂正ビット数tに応じて上記のように算出されたLLRの値に対応づけられたインデックスが、メモリシステム1のベンダーによりそれぞれ定義される。インデックスのうちHB以外がSBインデックスに相当する。従って、インデックスを決定することは、SBインデックスを決定することを含む。
復号時には、復号器202aは、硬判定復号により得られたHBと、訂正ビット数tと、に対応するインデックスを、例えば上記のようにしてメモリシステム1のベンダーにより予め定義された6つのインデックスから決定する。復号器202aは、決定したインデックスに相当するHB、SB1〜SB4の値を、共有メモリ17に書き込む。
次に、このように構成された本実施形態にかかるメモリシステム1による反復復号処理の流れについて説明する。図8は、本実施形態における反復復号処理の一例を示すフローチャートである。
ホスト30からの読出し要求があった場合、制御部11は、不揮発性メモリ20からのデータ(ユーザデータおよびパリティ)の読み出しをメモリI/F13へ指示する。読み出されたデータは共有メモリ17に記憶される。本実施形態では、メモリI/F13は、HBおよびSB1〜SB4を共有メモリ17に書き込む(ステップS101)。
復号器202bは、共有メモリ17から軟判定復号に用いるデータ(HB、SB1〜SB4)を読み出す(ステップS102)。復号器202bは、読み出されたデータに対して軟判定復号を実行する(ステップS103)。復号器202aは、軟判定復号の結果であるHBを共有メモリ17に記憶する(ステップS104)。
符号化/復号部14は、エラーがすべて訂正されたか否かを判定する(ステップS105)。エラーがすべて訂正された場合(ステップS105:Yes)、反復復号処理が終了する。
エラーがすべて訂正されていない場合(ステップS105:No)、復号器202aは、共有メモリ17から硬判定復号に用いるデータ(HB)を読み出す(ステップS106)。復号器202aは、読み出されたデータに対して硬判定復号を実行する(ステップS107)。復号器202aは、復号結果であるHBおよび硬判定復号による訂正ビット数に応じてSBインデックス(SB1〜SB4)の値を決定する(ステップS108)。復号器202aは、復号結果であるHBと、決定したSBインデックス(SB1〜SB4)とを、共有メモリ17に記憶する(ステップS109)。
符号化/復号部14は、エラーがすべて訂正されたか否かを判定する(ステップS110)。エラーがすべて訂正された場合(ステップS110:Yes)、反復復号処理が終了する。
エラーがすべて訂正されていない場合(ステップS110:No)、符号化/復号部14は、反復復号を終了するか否かを判定する(ステップS111)。符号化/復号部14は、例えば、反復復号の回数が予め設定した上限数(M回)に達した場合に反復復号を終了すると判定する。反復復号を終了しない場合(ステップS111:No)、ステップS102に戻り処理が繰り返される。反復復号を終了すると判定した場合(ステップS111:Yes)、符号化/復号部14は、反復復号処理を終了する。
本実施形態に係るメモリシステムでは、SBインデックスを決定する機能を有するSBインデックス演算器が共有メモリ17内に備えられていてもよい。本実施形態に係るメモリシステムにおいて、以下、共有メモリ17内のSBインデックス演算器が、SBインデックスを決定する機能を備えるものとして説明する。まず、復号器202aは、硬判定復号による復号結果であるHB、および、訂正ビット数を共有メモリ17のSBインデックス演算器に渡す。SBインデックス演算器は、復号器202aから受け取ったHBおよび訂正ビット数に応じて、SBインデックス(SB1〜SB4)の値を決定する。SBインデックス演算器は、決定したSBインデックスの値を、共有メモリ17の記憶領域に記憶する。
以上のように、本実施形態によれば、硬判定復号の復号結果(1ビットのバイナリ情報)のみではなく、復号結果に基づいて復号の尤もらしさを算出するためのインデックス情報を求め、求めた情報を次の軟判定復号の入力に反映させることができる。従って、軟判定復号による訂正能力を向上させることが可能となる。
(第2の実施形態)
第1の実施形態では、復号結果(HB)と、訂正ビット数に応じてインデックス情報(SBインデックス)が決定された。第2の実施形態では、さらに、訂正されたビットの元のLLRの絶対値γも考慮してSBインデックスが決定される。すなわち本実施形態では、硬判定復号の状態として訂正ビット数と元のLLRの絶対値γとが用いられる。元のLLRとは、不揮発性メモリ20から読み出されたときに共有メモリ17に記憶されるSB1〜SB4を用いて算出されるLLRである。
図9は、第2の実施形態の符号化/復号部14−2の機能構成の一例を示すブロック図である。なお第2の実施形態に係るメモリシステムの概略構成は、符号化/復号部14−2以外は第1の実施形態のメモリシステムの概略構成を示す図1と同様であるため、説明を省略する。
図9に示すように、符号化/復号部14−2は、符号化器201a、201bと、復号器202−2a、202bとを含む。第2の実施形態では、復号器202−2aの機能が第1の実施形態の復号器202aと異なっている。その他の機能は第1の実施形態と同様であるため、同一の符号を付し説明を省略する。
復号器202−2aは、復号結果(HB)および訂正ビット数に加えて、訂正されたビットの元のLLRの絶対値γに応じて、SBインデックスを決定する。例えば不揮発性メモリ20から読み出されたときのSB1〜SB4を、共有メモリ17内の、反復復号の中で更新されるSB1〜SB4の記憶領域とは異なる領域に記憶しておき、復号器202−2aは、この領域に記憶されたSB1〜SB4と、LLRテーブル(例えば共有メモリ17内に記憶される)とから元のLLRを算出する。元のLLRは、例えば不揮発性メモリ20から読み出されたときのSB1〜SB4を用いて算出して共有メモリ17に記憶しておき、復号器202−2aで参照可能とされてもよい。
以下、SBインデックスの決定手順の詳細について説明する。本実施形態では、i番目のビットの復号後のLLRは以下の(11)式のように表される。なおabs(LLR)はLLRの絶対値を表す。
LLR(b)=log(P(b=0|Yt=α,abs(LLR)=γ)/P(b=1|Yt=α,abs(LLR)=γ)) (11)
第1の実施形態では、ある符号において想定されるエラー率(BER)がβのとき、訂正ビット数αで訂正される符号語の訂正が正しい確率と、誤訂正である確率とが、シミュレーションにより予め求められた。第2の実施形態では、想定されるエラー率(BER)がβであり、訂正ビット数αで訂正されたビットのLLRの絶対値がγであるときの、訂正が正しい確率と誤訂正である確率とがそれぞれシミュレーションにより求められる。
不揮発性メモリ20から読み出されたLLRの絶対値(正確にはインデックスの値からLLRテーブルを用いて決定されたLLRの絶対値)が小さいほど、対象のビットがエラーである確率は高いため、復号後のLLRは大きな値をとる。逆に、不揮発性メモリ20から読み出されたLLRの絶対値が大きいほど、対象のビットがエラーである確率は低いため、復号後のLLRの絶対値は小さい値をとる。
このため、復号器202−2aは、復号器202−2aによる硬判定復号の結果のHB、硬判定復号時の訂正ビット数α、および、元のLLRの絶対値γに応じて、例えば以下のようにインデックスの値を決定する。
・HB=「0」、t=1、γ<3:インデックスIDX1
・HB=「0」、t=1、γ≧3:インデックスIDX2
・HB=「0」、t=2、γ<3:インデックスIDX3
・HB=「0」、t=2、γ≧3:インデックスIDX4
・HB=「1」、t=1、γ<3:インデックスIDX5
・HB=「1」、t=1、γ≧3:インデックスIDX6
・HB=「1」、t=2、γ<3:インデックスIDX7
・HB=「1」、t=2、γ≧3:インデックスIDX8
このように、復号器202−2aは、HBと、訂正ビット数tと、元のLLRの絶対値γの値が含まれる範囲と、の組合せごとに異なるインデックスを決定してもよい。範囲の条件、および、インデックスの個数は上記例に限られるものではない。例えば、範囲の境界を示す値は「3」に限られず、他の値であってもよい。また、γ<3、3≦γ≦5、5<γのように、3以上の範囲の条件を用いてもよい。この場合、HB(0または1)および訂正ビット数t(1または2)の値に応じて、合計12個の組み合わせに対する12個のインデックスが用いられてもよい。LLRの値は使用できるインデックスの数に応じて統合されてもよい。例えば未使用インデックスが8個であり、12個のインデックスを割り当てられない場合は、12個のインデックスを上記のような8個のインデックスに統合して使用してもよい。
次に、このように構成された本実施形態にかかるメモリシステム1による反復復号処理の流れについて説明する。図10は、本実施形態における反復復号処理の一例を示すフローチャートである。
本実施形態では、ステップS208の処理が、第1の実施形態の反復復号処理の流れを示す図8のステップS108と異なる。ステップS201、ステップS202、ステップS203、ステップS204、ステップS205、ステップS206、ステップS207、ステップS209、ステップS210、および、ステップS211は、それぞれ第1の実施形態の反復復号処理の流れを示す図8のステップS101、ステップS102、ステップS103、ステップS104、ステップS105、ステップS106、ステップS107、ステップS109、ステップS110、および、ステップS111と同様であるため、説明を省略する。
ステップS208では、復号器202−2aは、復号結果であるHBと、硬判定復号による訂正ビット数と、訂正ビットの元のLLRの絶対値とに応じてSBインデックス(SB1〜SB4)の値を決定する(ステップS208)。
本実施形態に係るメモリシステムでは、SBインデックスを決定する機能を有するSBインデックス演算器が共有メモリ17内に備えられていてもよい。本実施形態に係るメモリシステムにおいて、以下、共有メモリ17内のSBインデックス演算器が、SBインデックスを決定する機能を備えるものとして説明する。まず、復号器202−2aは、硬判定復号による復号結果であるHB、および、訂正情報(訂正ビット数、訂正ビットの位置など)を共有メモリ17のSBインデックス演算器に渡す。SBインデックス演算器は、LLRテーブルと、元のSB1〜SB4とから、元のLLRを算出する。SBインデックス演算器は、復号器202−2aから受け取ったHBおよび訂正ビット数、並びに、算出した元のLLRの絶対値に応じて、SBインデックス(SB1〜SB4)の値を決定する。SBインデックス演算器は、決定したSBインデックスの値を、共有メモリ17の記憶領域に記憶する。
このように、本実施形態によれば、復号結果および訂正ビット数に加え、訂正ビットの元のLLRも考慮して、LLRを算出するためのインデックスが決定される。このため、第1の実施形態より正確にLLRを算出可能となる。
(第3の実施形態)
第3の実施形態では、第2の実施形態で用いた元のLLRの絶対値γの代わりに、復号の尤もらしさを表す指標であるIED(Incremental Euclidian Distance)が用いられる。すなわち本実施形態では、硬判定復号の状態としてIEDが用いられる。IEDは、例えば、復号結果である符号語Yが得られたときの、すべての訂正ビットの元のLLRの絶対値の総和を表す。
図11は、第3の実施形態の符号化/復号部14−3の機能構成の一例を示すブロック図である。なお第3の実施形態に係るメモリシステムの概略構成は、符号化/復号部14−3以外は第1の実施形態のメモリシステムの概略構成を示す図1と同様であるため、説明を省略する。
図11に示すように、符号化/復号部14−3は、符号化器201a、201bと、復号器202−3a、202bとを含む。第3の実施形態では、復号器202−3aの機能が第1の実施形態の復号器202aと異なっている。その他の機能は第1の実施形態と同様であるため、同一の符号を付し説明を省略する。
復号器202−3aは、復号結果(HB)に加えて、IEDの値ωに応じて、SBインデックスを決定する。例えば不揮発性メモリ20から読み出されたときのSB1〜SB4を、共有メモリ17内の、反復復号の中で更新されるSB1〜SB4の記憶領域とは異なる領域に記憶しておき、復号器202−3aは、この領域に記憶されたSB1〜SB4と、LLRテーブル(例えば共有メモリ17内に記憶される)とから1以上の訂正ビットそれぞれの元のLLRを算出する。さらに復号器202−3aは、訂正ビットそれぞれに対して算出したLLRの絶対値の総和をIEDの値ωとして算出する。
本実施形態では、i番目のビットの復号後のLLRは以下の(12)式のように表される。(12)式は、復号された符号語Yに対するIED(YIED)がωであったときの、各ビットの復号後のLLRを表す。
LLR(b)=log(P(b=0|YIED=ω)/P(b=1|YIED=ω)) (12)
本実施形態では、想定されるエラー率(BER)がβであり、IEDの値がωであるときの、訂正が正しい確率と誤訂正である確率とがそれぞれシミュレーションにより求められる。
訂正ビット数tが多くなるほどIEDも大きな値となり、また訂正ビットのLLRの絶対値が大きいとIEDも大きな値となる。すなわち、IEDが小さいほど符号語Yの信頼度は高いため、訂正後のLLRの絶対値の値は大きくなり、IEDが大きいほど符号語Yの信頼度は低いため、訂正後のLLRの絶対値の値は小さくなる。
このため、復号器202−3aは、復号器202−3aによる硬判定復号の結果のHB、および、IEDの値ωに応じて、例えば以下のようにインデックスの値を決定する。
・HB=「0」、 IED≦1:インデックスIDX1
・HB=「0」、1<IED≦3:インデックスIDX2
・HB=「0」、3<IED≦5:インデックスIDX3
・HB=「0」、5<IED≦9:インデックスIDX4
・HB=「0」、9<IED :インデックスIDX5
・HB=「1」、 IED≦1:インデックスIDX6
・HB=「1」、1<IED≦3:インデックスIDX7
・HB=「1」、3<IED≦5:インデックスIDX8
・HB=「1」、5<IED≦9:インデックスIDX9
・HB=「1」、9<IED :インデックスIDX10
このように、復号器202−3aは、HBと、IEDの値ωの値が含まれる範囲と、の組合せごとに異なるインデックスを決定してもよい。範囲の条件、および、インデックスの個数は上記例に限られるものではない。また第2の実施形態と同様に、LLRの値は使用できるインデックスの数に応じて統合されてもよい。
次に、このように構成された本実施形態にかかるメモリシステム1による反復復号処理の流れについて説明する。図12は、本実施形態における反復復号処理の一例を示すフローチャートである。
本実施形態では、ステップS308の処理が、第1の実施形態の反復復号処理の流れを示す図8のステップS108と異なる。ステップS301、ステップS302、ステップS303、ステップS304、ステップS305、ステップS306、ステップS307、ステップS309、ステップS310、および、ステップS311は、それぞれ第1の実施形態の反復復号処理の流れを示す図8のステップS101、ステップS102、ステップS103、ステップS104、ステップS105、ステップS106、ステップS107、ステップS109、ステップS110、および、ステップS111と同様であるため、説明を省略する。
ステップS308では、復号器202−3aは、復号結果であるHB、および、元のLLRの絶対値の総和であるIEDの値ωに応じてSBインデックス(SB1〜SB4)の値を決定する(ステップS308)。
本実施形態に係るメモリシステムでは、SBインデックスを決定する機能を有するSBインデックス演算器が共有メモリ17内に備えられていてもよい。本実施形態に係るメモリシステムにおいて、以下、共有メモリ17内のSBインデックス演算器が、SBインデックスを決定する機能を備えるものとして説明する。まず、復号器202−3aは、硬判定復号による復号結果であるHB、および、訂正情報(訂正ビット数、訂正ビットの位置など)を共有メモリ17のSBインデックス演算器に渡す。SBインデックス演算器は、LLRテーブルと、元のSB1〜SB4とから、1以上の訂正ビットそれぞれの元のLLRを算出する。SBインデックス演算器は、訂正ビットそれぞれに対して算出したLLRの絶対値の総和をIEDの値ωとして算出する。SBインデックス演算器は、復号器202−3aから受け取ったHB、および、算出したIEDの値ωに応じて、SBインデックス(SB1〜SB4)の値を決定する。SBインデックス演算器は、決定したSBインデックスの値を、共有メモリ17の記憶領域に記憶する。
このように、本実施形態によれば、復号結果に加え、訂正ビットの元のLLRの絶対値の総和(IED)も考慮して、LLRを算出するためのインデックスが決定される。このため、第1の実施形態より正確にLLRを算出可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14、14−2、14−3 符号化/復号部
15 ホストI/F
16 内部バス
17 共有メモリ
20 不揮発性メモリ
30 ホスト
201a、201b 符号化器
202a、202−2a、202−3a、202b 復号器

Claims (9)

  1. 符号を構成するシンボルのうち少なくとも1つのシンボルが少なくとも第1の成分符号と第2の成分符号とによって保護されている多次元の誤り訂正符号が記憶された不揮発性メモリと、
    前記誤り訂正符号を前記不揮発性メモリから読み出し、
    読み出した前記誤り訂正符号に対して、前記第1の成分符号の硬判定復号を実行し、当該硬判定復号の結果である第1復号結果と、前記第1復号結果の尤もらしさを算出するためのインデックス情報と、を出力し、
    前記硬判定復号に失敗した場合には、前記第1復号結果と前記インデックス情報とを用いて前記第2の成分符号の軟判定復号を実行して、前記軟判定復号の結果をハードビットとして出力し、
    前記軟判定復号に失敗した場合には、前記第1の成分符号に対応するデータであって前記ハードビットとして出力された前記軟判定復号の結果に対して、前記硬判定復号を実行する、
    メモリコントローラと、
    を備えるメモリシステム。
  2. 前記メモリコントローラは、前記第1復号結果と、前記第1復号結果で訂正したビット数と、に基づいて前記インデックス情報を決定する、
    請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、前記第1復号結果と、前記第1復号結果で訂正したビット数と、訂正したビットの訂正する前の値の尤もらしさと、に基づいて前記インデックス情報を決定する、
    請求項1に記載のメモリシステム。
  4. 前記メモリコントローラは、前記第1復号結果と、前記第1復号結果で訂正したビット数と、前記尤もらしさの値が含まれる範囲と、の組合せごとに異なる前記インデックス情報を決定する、
    請求項3に記載のメモリシステム。
  5. 前記メモリコントローラは、前記第1復号結果と、訂正した1以上のビットの訂正する前の値それぞれの尤もらしさの総和と、に基づいて前記インデックス情報を決定する、
    請求項1に記載のメモリシステム。
  6. 前記メモリコントローラは、前記第1復号結果と、前記総和の値が含まれる範囲と、の組合せごとに異なる前記インデックス情報を決定する、
    請求項5に記載のメモリシステム。
  7. 前記メモリコントローラは、
    前記第1復号結果および前記インデックス情報に対する前記第1復号結果の尤もらしさを対応づけた対応情報を用いて、前記第1復号結果および前記インデックス情報に対応する前記尤もらしさを求め、求めた前記尤もらしさを用いて、前記第2の成分符号の軟判定復号を実行する、
    請求項1に記載のメモリシステム。
  8. 前記誤り訂正符号は、前記第1の成分符号と前記第2の成分符号とによって保護されている2次元の誤り訂正符号であり、
    前記メモリコントローラは、
    前記軟判定復号に失敗した場合、さらに前記硬判定復号を実行する、
    請求項1に記載のメモリシステム。
  9. 前記メモリコントローラは、
    前記硬判定復号または前記軟判定復号により復号されたデータを、前記不揮発性メモリからのデータの読み出しを要求したホストに送信する、
    請求項1に記載のメモリシステム。
JP2019051045A 2019-03-19 2019-03-19 メモリシステム Active JP7237674B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019051045A JP7237674B2 (ja) 2019-03-19 2019-03-19 メモリシステム
US16/541,269 US10908994B2 (en) 2019-03-19 2019-08-15 Memory system and method of controlling nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019051045A JP7237674B2 (ja) 2019-03-19 2019-03-19 メモリシステム

Publications (2)

Publication Number Publication Date
JP2020155861A true JP2020155861A (ja) 2020-09-24
JP7237674B2 JP7237674B2 (ja) 2023-03-13

Family

ID=72515797

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019051045A Active JP7237674B2 (ja) 2019-03-19 2019-03-19 メモリシステム

Country Status (2)

Country Link
US (1) US10908994B2 (ja)
JP (1) JP7237674B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473460A (zh) * 2021-06-07 2021-10-01 西安电子科技大学 基于纠错码判决的无线物理层密钥协商方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021044750A (ja) * 2019-09-12 2021-03-18 キオクシア株式会社 メモリシステム
CN113890673B (zh) * 2021-09-01 2023-03-14 哲库科技(北京)有限公司 译码方法、译码装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009200732A (ja) * 2008-02-20 2009-09-03 Synthesis Corp 誤り訂正復号器
JP2018164174A (ja) * 2017-03-24 2018-10-18 東芝メモリ株式会社 復号装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010062907A (ja) 2008-09-04 2010-03-18 Toshiba Corp 復号装置および方法
JP2014140111A (ja) 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
US20150169406A1 (en) * 2013-12-16 2015-06-18 Sandisk Technologies Inc. Decoding techniques for a data storage device
US20160006458A1 (en) * 2014-07-01 2016-01-07 Sandisk Technologies Inc. Decoding techniques for low-density parity check codes
KR20160102740A (ko) * 2015-02-23 2016-08-31 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR20160102738A (ko) * 2015-02-23 2016-08-31 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US9600364B2 (en) * 2015-03-09 2017-03-21 Kabushiki Kaisha Toshiba Memory controller, storage device and decoding method
US20160266972A1 (en) * 2015-03-10 2016-09-15 Kabushiki Kaisha Toshiba Memory controller, storage device and decoding method
US10467090B2 (en) * 2016-03-02 2019-11-05 Toshiba Memory Corporation Memory controller and decoding method
US9954558B1 (en) * 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
KR102257050B1 (ko) * 2017-05-26 2021-05-27 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10878920B2 (en) * 2018-03-21 2020-12-29 SK Hynix Inc. Memory controller and memory system having the same

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009200732A (ja) * 2008-02-20 2009-09-03 Synthesis Corp 誤り訂正復号器
JP2018164174A (ja) * 2017-03-24 2018-10-18 東芝メモリ株式会社 復号装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473460A (zh) * 2021-06-07 2021-10-01 西安电子科技大学 基于纠错码判决的无线物理层密钥协商方法
CN113473460B (zh) * 2021-06-07 2022-07-01 西安电子科技大学 基于纠错码判决的无线物理层密钥协商方法

Also Published As

Publication number Publication date
US20200301777A1 (en) 2020-09-24
US10908994B2 (en) 2021-02-02
JP7237674B2 (ja) 2023-03-13

Similar Documents

Publication Publication Date Title
KR102643457B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US9984752B2 (en) Memory system and data encoding and decoding method to mitigate inter-cell interference
US10574272B2 (en) Memory system
KR20180027803A (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US20160266972A1 (en) Memory controller, storage device and decoding method
US11025281B2 (en) Memory system
CN111726121B (zh) 错误校正解码器和具有该错误校正解码器的存储器系统
JP7237674B2 (ja) メモリシステム
US10795761B2 (en) Memory system and method of controlling non-volatile memory
KR102314481B1 (ko) Siso 복호 방법, 디코더 및 반도체 메모리 시스템
JP2018160064A (ja) メモリコントローラ、メモリシステムおよび制御方法
US20220261312A1 (en) Memory system
US11150813B2 (en) Memory system
KR20200033688A (ko) 에러 정정 회로 및 이의 동작 방법
US10970166B2 (en) Memory system and method of controlling non-volatile memory
US10884858B2 (en) LDPC decoding device, memory system including the same and method thereof
KR20200098964A (ko) 컨트롤러 및 그것의 동작 방법
US11309918B2 (en) Memory system
US11204831B2 (en) Memory system
US11652496B2 (en) Memory system and method for controlling non-volatile memory
CN113138947B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
KR102530269B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
JP2022043635A (ja) メモリシステム
CN116743188A (zh) 存储系统和控制存储系统的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221021

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: 20230131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230301

R151 Written notification of patent or utility model registration

Ref document number: 7237674

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151