JP2021044750A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2021044750A JP2021044750A JP2019166652A JP2019166652A JP2021044750A JP 2021044750 A JP2021044750 A JP 2021044750A JP 2019166652 A JP2019166652 A JP 2019166652A JP 2019166652 A JP2019166652 A JP 2019166652A JP 2021044750 A JP2021044750 A JP 2021044750A
- Authority
- JP
- Japan
- Prior art keywords
- decoding
- value
- llr
- estimated
- unit
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3723—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3738—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/451—Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/451—Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
- H03M13/453—Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD] wherein the candidate code words are obtained by an algebraic decoder, e.g. Chase decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】誤り訂正(復号)能力を向上させることができるメモリシステムを提供する。【解決手段】実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、誤り訂正符号で符号化されたデータが記憶される。メモリコントローラは、不揮発性メモリからデータを読み出し、読み出されたデータと、尤度情報を計算するためのLLRテーブルとから尤度情報を計算し、尤度情報に基づいて、読み出されたデータの復号処理のパラメタを決定し、決定されたパラメタに基づいて復号処理を実行し、復号処理により得らえた復号結果を出力する。【選択図】図1
Description
以下の実施形態は、メモリシステムに関する。
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
本発明の実施形態は、誤り訂正(復号)能力を向上させることができるメモリシステムを提供することを目的とする。
実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、誤り訂正符号で符号化されたデータが記憶される。メモリコントローラは、不揮発性メモリからデータを読み出し、読み出されたデータと、尤度情報を計算するためのLLRテーブルとから尤度情報を計算し、尤度情報に基づいて、読み出されたデータの復号処理のパラメタを決定し、決定されたパラメタに基づいて復号処理を実行し、復号処理により得らえた復号結果を出力する。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
また、実施形態を説明するにあたり、用語について以下のように定義する。
「通信路(ストレスともいう)」とは、書込み値(送信値ともいう)xへの雑音の影響を表す確率モデルであり、通信路行列で特徴付けられるものである。なお、通信路行列を特徴付ける要因としては、いわゆるプログラムディスターブやデータリテンションやリードディスターブや温度交差などが考えられる。
「尤度」とは、ある書込み値xが与えられたときに通信路の出力値(受信値ともいう)yが得られる条件付き確率P(y|x)である。
「通信路行列」とは、尤度を全ての(x,y)の組に関して記載した行列である。
「対数尤度比(LLR)」とは、記憶されたビットが‘0’である時の尤度と‘1’である時の尤度とを対数比で表現した情報であり、尤度情報とも、LLR値とも称される。
「LLRテーブル」とは、通信路の出力値yと復号器の入力であるLLRとの対応関係を示すテーブルである。従って、通信路行列から得られた値ln[P(y|x=0)/P(y|x=1)]が出力値yに対応するLLR値となる。一般的に、異なる通信路行列に対しては、異なるLLRテーブルが用意される。
「既定のLLRテーブル」とは、デフォルトで使用されるLLRテーブルである。この既定のLLRテーブルには、例えば、多様な通信路での訂正が想定される中で、典型的に使用されそうな通信路から得られたLLRテーブルが用いられる。
「ECCフレーム」とは、復号器が動作するためのデータブロックであり、受信値の系列から符号語を再構成するためのデータブロックのことである。
「復号結果の推定書込み値(推定値ともいう)k」は、復号器の出力である一つ一つの推定書込み値である。従って、復号の終了時には、ECCフレームに対応する推定書込み値kの系列{k}が得られる。なお、復号に成功するとは、答えの系列{x}と復号結果の系列{k}とが完全に一意することを意味する。一方、復号に失敗するとは、ECCフレーム内でx≠kとなる箇所が発生し、系列{x}と{k}とが一致しないことを意味する。真に復号の成否を知るためには、答えの系列を知らなければならない。復号器は答えの系列を知らないので、真の復号の成否は分からないが、復号の成否の推定情報は持つ。以下で復号を説明する文脈で、単に復号の成否といった場合、復号器が推定した成否であることを意味する。
「真の通信路行列」とは、正確な答えであるxに基づいた条件付き確率P(y|x)を要素とした通信路行列である。一方、「推定通信路行列」とは、復号器から出力された推定書込み値kを用いた条件付き確率P(y|k)を要素とした通信路行列である。
「推定LLRテーブル」とは、推定通信路行列に基づいたLLRテーブルである。
「シンボル」とは、誤り訂正符号の少なくとも一つ以上の構成単位である。1シンボルは、例えば1ビット(二元体(binary field)の元(element))、または、二元体以外の有限体(finite field)などのアルファベットの元で構成される。
「通信路(ストレスともいう)」とは、書込み値(送信値ともいう)xへの雑音の影響を表す確率モデルであり、通信路行列で特徴付けられるものである。なお、通信路行列を特徴付ける要因としては、いわゆるプログラムディスターブやデータリテンションやリードディスターブや温度交差などが考えられる。
「尤度」とは、ある書込み値xが与えられたときに通信路の出力値(受信値ともいう)yが得られる条件付き確率P(y|x)である。
「通信路行列」とは、尤度を全ての(x,y)の組に関して記載した行列である。
「対数尤度比(LLR)」とは、記憶されたビットが‘0’である時の尤度と‘1’である時の尤度とを対数比で表現した情報であり、尤度情報とも、LLR値とも称される。
「LLRテーブル」とは、通信路の出力値yと復号器の入力であるLLRとの対応関係を示すテーブルである。従って、通信路行列から得られた値ln[P(y|x=0)/P(y|x=1)]が出力値yに対応するLLR値となる。一般的に、異なる通信路行列に対しては、異なるLLRテーブルが用意される。
「既定のLLRテーブル」とは、デフォルトで使用されるLLRテーブルである。この既定のLLRテーブルには、例えば、多様な通信路での訂正が想定される中で、典型的に使用されそうな通信路から得られたLLRテーブルが用いられる。
「ECCフレーム」とは、復号器が動作するためのデータブロックであり、受信値の系列から符号語を再構成するためのデータブロックのことである。
「復号結果の推定書込み値(推定値ともいう)k」は、復号器の出力である一つ一つの推定書込み値である。従って、復号の終了時には、ECCフレームに対応する推定書込み値kの系列{k}が得られる。なお、復号に成功するとは、答えの系列{x}と復号結果の系列{k}とが完全に一意することを意味する。一方、復号に失敗するとは、ECCフレーム内でx≠kとなる箇所が発生し、系列{x}と{k}とが一致しないことを意味する。真に復号の成否を知るためには、答えの系列を知らなければならない。復号器は答えの系列を知らないので、真の復号の成否は分からないが、復号の成否の推定情報は持つ。以下で復号を説明する文脈で、単に復号の成否といった場合、復号器が推定した成否であることを意味する。
「真の通信路行列」とは、正確な答えであるxに基づいた条件付き確率P(y|x)を要素とした通信路行列である。一方、「推定通信路行列」とは、復号器から出力された推定書込み値kを用いた条件付き確率P(y|k)を要素とした通信路行列である。
「推定LLRテーブル」とは、推定通信路行列に基づいたLLRテーブルである。
「シンボル」とは、誤り訂正符号の少なくとも一つ以上の構成単位である。1シンボルは、例えば1ビット(二元体(binary field)の元(element))、または、二元体以外の有限体(finite field)などのアルファベットの元で構成される。
(第1の実施形態)
まず、第1の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図1ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
まず、第1の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図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への書込みを制御する。また、メモリコントローラ10は、ホスト30からの読出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、例えばSoC(System On a Chip)として構成される半導体集積回路である。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部(コーデック)14およびデータバッファ12を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14およびデータバッファ12は、内部バス16で相互に接続されている。以下で説明するメモリコントローラ10の各構成要素の動作の一部または全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した命令、書込み対象のユーザデータなどを内部バス16に出力する。また、ホストI/F15は、不揮発性メモリ20から読み出されて復元されたユーザデータ、制御部11からの応答などをホスト30へ送信する。
メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20への書込み処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
制御部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には、TLC(Triple Level Cell)やQLC(Quad Level Cell)等が含まれる。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
データバッファ12は、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時記憶する。また、データバッファ12は、不揮発性メモリ20から読み出したユーザデータをホスト30へ送信するまでに一時記憶する。データバッファ12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。なお、データバッファ12は、メモリコントローラ10に内蔵されずに、メモリコントローラ10の外部に搭載されてもよい。
ホスト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-Chaudhuri-Hocquenghem)符号、および、RS(Reed-Solomon)符号のような代数的符号を用いた符号化方式、これらの符号を行方向および列方向の成分符号として用いた符号化方式(積符号など)、並びに、LDPC(Low-Density Parity-Check)符号のような疎グラフに基づく符号を用いた符号化方式を採用することができる。メモリI/F13は、制御部11から指示された不揮発性メモリ20上の記憶場所へ符号語を記憶する制御を行う。
次に、本実施形態の不揮発性メモリ20からの読出し時の処理について説明する。制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、復号部18へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスから受信語を読み出し、読み出した受信語を復号部18に入力する。復号部18は、この不揮発性メモリ20から読み出された受信語を復号する。
復号部18は、不揮発性メモリ20から読み出された受信語を復号する。図2は、本実施形態に係る復号部の構成例を示すブロック図である。図2に示すように、復号部18は、硬判定値を入力とし、その結果として硬判定値を出力する硬判定復号を実行する硬判定復号部181と、軟判定値を入力とし、その結果として軟判定値を出力する軟判定復号を実行する軟判定復号部182とを備える。一般に、軟判定復号は、硬判定復号より誤り訂正能力は高いが処理時間が長いという特徴を持つ。そこで、例えば硬判定復号部181がまず硬判定復号を実行し、この硬判定復号により復号できなかった場合に、軟判定復号部182が軟判定復号を実行するように構成することもできる。ただし、本実施形態は、このような構成に限定されず、例えば硬判定復号部181が省略されてもよい。
図3は、第1の実施形態に係るデータの読出し処理の一例を示すフローチャートである。制御部11は、メモリI/F13に対して、読み出すアドレスを指定してハードビットリード(HBR)により不揮発性メモリ20からデータを読み出すよう指示し、これに対し、メモリI/F13はハードビットリードを実行する(ステップS1)。ハードビットリードとは、読出し対象のデータを構成する各ビットを0または1の硬判定値の受信語として読出す読出し方法である。読み出された硬判定値の受信語は、例えば、内部バス16を経由して符号化/復号部14の復号部18に入力される。
不揮発性メモリ20がNANDメモリの場合、データの書き込み時に、書込み値xに応じて、フローティングゲートの電子数(電荷量)が複数の分布(しきい値分布)のいずれかに対応するように電子を注入する。ここでは、説明を簡略化するため、1つのメモリセルが1ビットを記憶するシングルレベルセル(SLC)の例について説明する。SLCの場合、2つの分布のうちいずれか一方が0に対応し、他方が1に対応する。メモリセルに、電圧を印加した場合、該メモリセルの電荷量に応じた電圧値以上の電圧を印加すると電流が流れ、該電圧値未満の電圧を印加すると電流が流れない。従って、この境目となる電圧はメモリセルごとに該メモリセルの電荷量に応じて決まる。このメモリセルの電荷量に応じて決まる電圧値を、ここでは閾値電圧とよぶ。初期状態で、2つの閾値電圧分布のいずれかに対応するように電荷を注入して、読出し時には、2つの閾値電圧分布を区切る基準読出し電圧(基準リードレベルともいう)をメモリセルに印加することにより、このメモリセルに記憶されているデータが1であるか0であるかを判定することができる。
ハードビットリードでは、メモリセルに基準読出し電圧が印加されて、メモリセルに記憶されているデータが1であるか0であるかが判定され、判定された結果が受信値yとして出力される。なお、ハードビットリードの際に印加する読出し電圧は、基準読出し電圧から変更されることもある。
図3の説明に戻る。制御部11は、復号部18に硬判定復号の実施を指示し、これに対し、復号部18の硬判定復号部181は、受信語に対して硬判定復号を行う(ステップS2)。具体的には、硬判定復号部181は、受信語に対して、例えば限界距離復号等の復号を行う。ただし、硬判定復号部181が行う硬判定復号は、限界距離復号に限定されずどのような硬判定復号であってもよい。
ステップS2の後、硬判定復号部181は、復号に成功したか否かを判断し、この判断結果を制御部11へ通知する。制御部11は、硬判定復号部181からの通知に基づいて、復号に成功したか否かを判断し(ステップS3)、復号に成功した場合(ステップS3のYES)、読出し処理を終了する。
一方、復号に失敗していた場合(ステップS3のNO)、制御部11は、メモリI/F13に対して、読み出すアドレスを指定してソフトビットリード(SBR)により不揮発性メモリ20からデータを読み出すよう指示し、これに対し、メモリI/F13は、各メモリセルが記憶するデータをハードビットリードで使用する基準読出し電圧に対して所定の刻み幅で設定された1以上の読出し電圧でも読み出した結果も含んだ受信値yとして読み出す読出しであるソフトビットリードを実行する(ステップS4)。読み出された受信値yは、例えばECCフレーム単位の系列{y}として、内部バス16を経由して符号化/復号部14の復号部18に入力される。
ステップS5では、制御部11が復号部18に軟判定復号の実施を指示し、これに対し、復号部18の軟判定復号部182が、ECCフレーム単位で入力された受信値yの系列{y}に対して、軟判定復号を実行する(ステップS5)。その後、本動作は、ステップS3へリターンする。なお、本実施形態に係る軟判定復号の詳細については、次に詳述する。
軟判定復号では、軟判定復号の動作を定める様々なパラメタ(復号パラメタ)が存在するが、通信路(ストレス状況)に応じて復号性能を最大化するパラメタは異なる。通信路に応じて個別にパラメタを用意することは難しいため、一般的には、事前に(オフラインで)最適化された単一のパラメタを用いることが多い。
これに対して本実施形態では、通信路に合わせてパラメタを適応的に(オンラインで)決定する。これにより、訂正能力をより向上させ、計算量を削減することが可能となる。
図4は、本実施形態に係る軟判定復号部182のより詳細な構成例を示すブロック図である。図4に示すように、軟判定復号部182は、LLR変換部101と、パラメタ決定部111と、復号器102と、復号制御部103と、を備える。
復号制御部103は、復号処理を制御する。例えば復号制御部103は、復号器102に対して使用するLLRテーブルを指定する。本実施形態では、復号制御部103は、既定のLLRテーブルを指定する。また復号制御部103には、復号器102からの復号結果としてのECCフレーム単位の推定値kの系列{k}が入力される。また、復号制御部103には、復号に成功したか失敗したか等の復号後に得られる情報も入力される。そして、復号制御部103は、復号に成功したか失敗したかに応じて外部への出力を制御する。
LLR変換部101は、復号制御部103から指定されたLLRテーブルを用いて、不揮発性メモリ20から読み出されて入力された受信値yをLLR値に変換する。具体的には、LLR変換部101へは、不揮発性メモリ20から読み出された受信値yの系列{y}が入力される。また、LLR変換部101には、受信値yとLLR値との変換に使用される既定のLLRテーブルが入力される。さらに、LLR変換部101には、復号制御部103から、使用するLLRテーブルの指定情報も入力される。そして、LLR変換部101は、復号制御部103から指定されたLLRテーブルを用いて受信値yを変換することで得られたLLR値の系列を、パラメタ決定部111および復号器102へ出力する。
パラメタ決定部111は、入力されたLLR値の系列に基づいて、復号器102が実行する復号処理のパラメタを決定する。以下では、軟判定復号部182の復号方式として、シンボルの値の反転(フリップ)を行って復号を実行する復号方式を採用し、フリップするシンボルの範囲(フリップ領域)をパラメタとして決定する場合を例に説明する。フリップ領域の決定は、例えば、フリップ領域の開始位置およびサイズ、または、フリップ領域の開始位置および終了位置を決定することを含む。フリップを行う復号方式では、入力されたLLR値とフリップ領域とからフリップの対象とするシンボルが決定され、復号が実行される。
このような復号方式としては、OSD(Ordered Statistics Decoding)およびChase復号が挙げられる。復号方式は、OSDおよびChase復号のうち少なくとも一方を繰り返し実行する反復復号であってもよい。なお、適用可能な復号方式はOSDおよびChase復号に限られるものではなく、フリップを行う他の復号方式を用いてもよい。また、パラメタ決定部111は、フリップ領域以外のパラメタを決定してもよい。パラメタの決定方法の詳細は後述する。
復号器102は、ECCフレーム単位のLLR値の系列から復号に関する情報や推定値kの系列{k}を計算する。具体的には、復号器102は、LLR変換部101からLLR値の系列を入力し、パラメタ決定部111から決定されたパラメタを入力する。復号器102は、入力されたパラメタに従い、LLR値の系列に対して復号処理を実行する。なお、復号器102には、一度の復号でECCフレームに対応する系列が入力される。そして、復号器102は、入力されたLLR値の系列を復号することで得られた推定値kの系列{k}を復号制御部103へ出力する。なお、復号器102は、一度の復号の結果として、ECCフレームに対応する系列{k}を出力する。また、復号器102は、復号の成否など、復号で得られた情報も復号制御部103へ出力する。
次に、OSDの詳細について説明する。図5は、OSDで用いられるフリップ領域の一例を説明するための図である。OSDでは、ソート処理、フェーズ0処理、フェーズn処理(nは1以上の整数)などが実行される。
ソート処理は、入力されたLLR値の系列をLLR値の絶対値によってソートし、LLR値の系列を、LLR値が相対的に大きい(信頼度が高い)LLR値を含むMRB(Most Reliable Basis)と、LLR値が相対的に小さい(信頼度が低い)LLR値を含むLRB(Low Reliable Basis)と、に分割する処理である。図5では、LLR値の系列が、MRB511と、LRB512とに分割される例が示されている。
フェーズ0処理では、LRBを用いた処理が実行される。フェーズn処理では、MRB内でフリップ領域が決定され、フリップ領域内に含まれるnビットがフリップされ、復号が実行される。フェーズn処理では、図5に示すように、フリップ領域501は、MRB内で信頼度が低い順に並べられた複数のLLR値を含む領域として決定される。
フリップ領域のサイズが大きいほど訂正能力が高くなるが、その分計算量が増加する。フェーズn処理では、フリップ領域内のnビットの組み合わせ(例えばすべてのnビットの組み合わせ)それぞれに対してフリップおよび復号が実行される。このため、nが大きくなるに従い、計算量の増加が顕著となる。
フリップ領域のサイズを決定する方法としては、例えば、要求される訂正能力および計算量を考慮した最適な値(固定値)を、フリップ領域のサイズとして決定する方法がある。しかしこのような方法では、例えば、信頼度が低いビットが相対的に少ない場合であっても、信頼度が低いビットが相対的に多い場合と同じサイズのビットをフリップさせることになる。このため、かえって訂正能力が低下する場合、および、不要な計算量の増加を招く場合がある。また、信頼度が低いビットが相対的に多い場合には、より多くのビットをフリップすれば訂正能力が増加する可能性があるが、フリップ領域のサイズを固定値とする方法では、このような機能を実現できない。
そこで本実施形態では、フリップ領域を適応的(動的)に決定し、信頼度がより低い(エラー確率が高い)領域に限定してフリップを実行することで、フェーズn処理での訂正能力を低下させずに、計算量の増加を抑制させる。
図6は、フリップ領域の決定方法の一例を説明するための図である。パラメタ決定部111は、入力されたLLR値の系列から、LLR値の絶対値(LLR絶対値)それぞれの個数を求め、LLR絶対値それぞれの個数のLLR値の総数に対する割合を計算する。図6では、例えば、LLR絶対値が1、3、5、および、9の割合が、それぞれ4%、6%、10%、および、80%となった例が示されている。
パラメタ決定部111は、求めた割合を、さらに、閾値TH以下のLLR絶対値の割合と、閾値THより大きいLLR絶対値の割合とに縮約する。図6では、閾値THを3とした場合に、閾値TH=3以下であるLLR絶対値の割合である10%、および、閾値TH=3より大きいLLR絶対値の割合である90%に縮約される例が示されている。
パラメタ決定部111は、入力されたLLR値の系列における閾値TH以下のLLR値の個数の期待値からLRBのサイズを減算することにより、フリップ領域のサイズを決定する。閾値TH以下のLLR値の個数の期待値は、閾値TH以下のLLR絶対値の割合と誤り訂正符号の符号長との積により計算することができる。すなわち、パラメタ決定部111は、「符号長×(閾値TH以下のLLR絶対値の割合)−(LRBのサイズ)」によりフリップ領域のサイズを計算する。例えば符号長が720ビット、LRBのサイズが32ビット、閾値TH以下のLLR絶対値の割合が図6に示すように10%であった場合、パラメタ決定部111は、720×0.1−32=40ビットを、フリップ領域のサイズとして決定する。
このように、パラメタ決定部111は、閾値TH以下のLLR絶対値の割合が大きいほど、フリップ領域のサイズが大きくなるように、フリップ領域を決定する。図6に示す決定方法は一例であり、これに限られるものではない。LLR値を用いて、信頼度がより低い領域に限定してフリップを実行できるようにフリップ領域を決定する方法であれば、どのような方法を適用してもよい。例えばパラメタ決定部111は、LLR絶対値のばらつきが大きいほどフリップ領域のサイズが大きくなるように、フリップ領域を決定してもよい。
パラメタ決定部111は、例えば√(n×RLow×(1−RLow))により標準偏差を計算し(nは復号対象データ長、RLowは閾値TH以下のLLR絶対値の割合)、計算した標準偏差に予め定められたスケール値を乗じた値を補正値として計算する。パラメタ決定部111は、上記計算式により計算されたサイズを、補正値により補正する。例えばパラメタ決定部111は、補正値を上記計算式により計算されたサイズに加算して、最終的なフリップ領域のサイズを計算する。
次に、Chase復号を用いる例について説明する。図7は、Chase復号で用いられるフリップ領域の一例を説明するための図である。Chase復号では、テストパタンの生成処理、生成されたテストパタンを用いた復号処理などが実行される。
テストパタンは、エラービット(フリップするビット)の位置および個数(フリップ数)の組合せを仮定するパタンである。例えば、フリップ数jをそれぞれ1、2、3、4および5とした5つのテストパタンが生成される。なお、フリップ数は5に限られるものではない。5つのテストパタンは、それぞれ対応するフリップ領域r1〜r5に従って生成される。図7に示すように、Chase復号の場合は、フリップ領域r1〜r5は、復号対象データ全体の中で信頼度が低い順に並べられた複数のLLR値を含む領域として決定される。
フリップ数をjとするテストパタンは、フリップ領域rjに含まれるビットからいずれかのjビットが選択されて生成される。フリップ領域rj(j=1〜5)のテストパタンは、jビットを選択する組み合わせの個数分、生成される。すなわち、フリップ領域rjのテストパタンの個数は、rjCjで表すことができる。なおrjはフリップ領域rjのサイズ(ビット数)を表す。
Chase復号を用いる場合、パラメタ決定部111は、フリップ領域rjそれぞれのサイズを、入力されたLLR値を用いて決定する。各フリップ領域rjのサイズの決定方法は、OSDを用いる場合と同様の方法を適用できる。パラメタ決定部111は、フリップ数jに応じて異なる閾値THjを用いて、対応するフリップ領域rjのサイズを計算する。例えばパラメタ決定部111は、フリップ数jが大きくなるほど、小さい値となる閾値THjを用いるように構成することができる。
Chase復号の場合、図5のLRB512に相当する領域がないため、LRBのサイズを減算する処理は不要である。すなわち、パラメタ決定部111は、例えば「符号長×(閾値THj以下のLLR絶対値の割合)」によりフリップ領域のサイズを計算する。
次に、本実施形態に係る復号動作を、図面を参照して詳細に説明する。図8は、本実施形態に係る復号動作の概略例を示すフローチャートである。図8に示すように、まず、メモリI/F13が、不揮発性メモリ20から読み出されたECCフレーム単位の受信値yの系列{y}を軟判定復号部182に入力する(ステップS101)。軟判定復号部182に入力された系列{y}は、LLR変換部101に入力される。
次に、復号制御部103は、使用するLLRテーブルを既定のLLRテーブルとする旨の指示をLLR変換部101に入力する(ステップS102)。LLR変換部101は、指定された既定のLLRテーブルを用いて、受信値yの系列{y}をLLR値の系列に変換し、これにより得られたLLR値の系列を、パラメタ決定部111および復号器102に入力する(ステップS103)。パラメタ決定部111は、入力されたLLR値の系列を用いてパラメタ、すなわち、フリップ領域を決定する(ステップS104)。
復号器102は、決定されたパラメタを用いて、入力されたLLR値の系列を復号し、その結果として得られた推定値kの系列{k}と、復号の成否などの情報とを復号制御部103へ出力する(ステップS105)。
次に、例えば復号制御部103が、復号器102から入力された情報に基づいて、復号に成功したか否かを判断する(ステップS106)。復号に成功していた場合(ステップS106のYES)、例えば復号制御部103は、制御部11(図1参照)へ復号成功を通知する(ステップS107)。また、復号制御部103は、復号により得られた推定値kの系列{k}を出力する(ステップS108)。その後、本動作が終了する。なお、出力された系列{k}は、例えば、データバッファ12(図1参照)に蓄積され、書込み値であるユーザデータに復元された後、読出し要求を発行したホスト30へ送信される。
一方、復号に失敗していた場合(ステップS106のNO)、例えば復号制御部103は、制御部11(図1参照)へ復号失敗を通知する(ステップS109)。その後、本動作が終了する。制御部11は、例えば、要求されたデータの読出しエラーを読出し要求を発行したホスト30へ送信する。
以上のように、本実施形態では、不揮発性メモリから読み出された受信値を変換して得られるLLR値に基づいて、復号処理のパラメタを適応的(動的)に決定する。これにより、通信路(ストレス状況)に応じて、訂正能力を低下させずに、計算量の増加を抑制した復号処理を実行可能となる。
(第2の実施形態)
次に、第2の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第1の実施形態と同様の構成および動作については、それを引用することで、重複する説明を省略する。
次に、第2の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第1の実施形態と同様の構成および動作については、それを引用することで、重複する説明を省略する。
第1の実施形態は、既定のLLRテーブルを用いてLLR値を変換する構成を備えていた。これに対し、第2の実施形態は、復号に失敗した場合でも、失敗した復号により得られた推定値kの系列を使用して、推定LLRテーブルを作成し、推定LLRテーブルを用いて再度復号処理を実行する。
本実施形態に係るメモリシステムは、第1の実施形態において図1を用いて説明したメモリシステム1と同様の構成を備えてよい。ただし、本実施形態では、図4における軟判定復号部182が図9に示す軟判定復号部182−2に置き換えられる。
ここで、「軟判定復号に必要な通信路の推定」と「LLRテーブル」との関係について説明する。なお、以下の説明では、簡単のため、送信値xが取り得る値を0,1とし、受信値yが取り得る値を0,1,2,3とする。
軟判定復号では、復号対象の通信路が決定すると、不揮発性メモリ20に書き込まれる送信値xが記憶されるとともに、不揮発性メモリ20から読み出された送信値xがどの受信値yに変化したかが記憶される。そこで本説明では、以下の表1に示すようなヒストグラムが得られたと仮定する。
表1には、8128回の観測の結果、(x=0,y=0)という組が1回観測され、(x=1,y=0)という組が3375回観測され、(x=0,y=1)という組が125回観測され、(x=1,y=1)という組が1331回観測され、(x=0,y=2)という組が729回観測され、(x=1,y=2)という組が343回観測され、(x=0,y=3)という組が2197回観測され、(x=1,y=3)という組が27回観測されたことが示されている。
真の通信路の条件付き確率P(y|x)は、このような表1に基づいて以下のように推定される。すなわち、(x,y)の組それぞれの観測回数(以下、度数ともいう)をF(x,y)とすると、例えば、(x=0,y=0)という組が観測される条件付き確率P(y=0|x=0)は、以下の式(1)のように求まり、また、(x=1,y=0)という組が観測される条件付き確率Pは、以下の式(2)のように求まる。
そこで、想定した通信路に対しては、例えば受信値yが0である場合に以下の式(3)から求まるLLR値が割り当てられるように、LLRテーブルが作成される。式(3)のLLR値は小数点第二位で四捨五入している。
同様に、他の受信値yが1〜3のそれぞれである場合に対しても、以下の式(4)〜(6)から求まるLLRが割り当てられるように、LLRテーブルが作成される。式(4)〜(6)のLLR値は小数点第二位で四捨五入している。
上記のようにして作成されるLLRテーブルは、十分な数の(x,y)の組を収集することで真の通信路行列から作成されたLLRテーブルに十分に近づけることが可能である。すなわち、十分な数の(x,y)の組を収集することができれば、正確に「軟判定復号に必要な通信路の推定」を行なうことが可能となり、それにより、復号対象の通信路に対して理想的な「LLRテーブル」を作成することが可能となる。
つづいて、「通信路の推定」について説明する。例えば、復号対象となる通信路の数が非常に多い場合、全ての異なる通信路について事前にLLRテーブルを用意できない場合がある。そのような場合、運よく復号に成功していれば、推定される送信値(以下、推定値という)kが送信値xと一致している。そこで、送信値xの代わりに推定値kを使用して上記のようなLLRテーブルの作成を実行し、これにより作成されたLLRテーブルを同様の通信路で復号失敗したECCフレームに使用する。これにより、LLRテーブルを事前に用意できなかった場合でも復号特性の劣化を抑えることができる。
ただし、復号に失敗していた場合でも、この復号によって誤りビットの数がある程度下げられている場合には、推定値kの系列{k}を使用して上記のLLRテーブル作成を実行し、これにより改めて得られたLLRテーブル(以下、推定LLRテーブルという)を使用することで、復号に成功する場合がある。
このように、メモリシステムにおける復号では、事前に想定していた通信路と実際の通信路とが異なっていると、復号に失敗する蓋然性が高まるが、失敗した復号結果に基づくことで、推定する通信路を正しい通信路に近づけることが可能な場合がある。
そこで本実施形態では、復号に失敗した場合でも、その失敗の結果から通信路を推定する手順、言い換えれば、LLRテーブルを作成する手順を1回以上行うことで、通信路の不一致に基づく復号失敗を救出することを可能にする。
図9は、本実施形態に係る軟判定復号部のより詳細な構成例を示すブロック図である。図9に示すように、軟判定復号部182−2は、LLR変換部101−2と、パラメタ決定部111と、復号器102−2と、推定LLRテーブル作成制御部103−2と、推定通信路行列集計部104と、推定LLRテーブル作成部105と、受信語バッファ106とを備える。
この構成において、受信語バッファ106は、受信値yの系列{y}をECCフレーム単位で記憶する。具体的には、受信語バッファ106は、不揮発性メモリ20から読み出された受信値yの系列{y}を、ECCフレーム単位で入力して記憶する。また、受信語バッファ106は、後述する推定LLRテーブル作成制御部103−2から、出力開始の指示や、どのECCフレームに関連する受信値yの系列{y}を出力するかを指定する情報、若しくは、ECCフレーム内の特定の受信値yを出力するかを指定する情報を入力する。そして、受信語バッファ106は、出力開始の指示に従い、現在記憶しているECCフレーム単位の受信値yのうち、指定された系列{y}または指定された受信値yを推定通信路行列集計部104へ出力する。
推定LLRテーブル作成制御部103−2は、特定の(k,y)の組から推定通信路行列を逐次的に作成する。具体的には、推定LLRテーブル作成制御部103−2には、復号器102−2からの復号結果としてのECCフレーム単位の推定値kの系列{k}が入力される。また、推定LLRテーブル作成制御部103−2には、復号に成功したか失敗したか等の復号後に得られる情報も入力される。そして、推定LLRテーブル作成制御部103−2は、入力された推定値kの系列{k}に対し、外部へ出力するか、推定通信路行列集計部104へ出力するかを判断し、判断した先へ推定値kの系列{k}を出力する。また、推定LLRテーブル作成制御部103−2は、受信語バッファ106に出力開始を指示する信号、および、推定通信路行列集計部104を制御するための制御信号を出力する。
推定通信路行列集計部104は、(k,y)の組を集計して推定通信路行列を作成し記憶する。具体的には、推定通信路行列集計部104は、推定LLRテーブル作成制御部103−2によって選定されたECCフレーム単位の推定値kの系列{k}と、受信語バッファ106からの出力であって、推定LLRテーブル作成制御部103−2から入力された推定値kの系列{k}と同じECCフレームに所属する受信値yの系列{y}とを入力する。そして、推定通信路行列集計部104は、入力された系列{k}および{y}から(k,y)の組を集計し、これにより得られた現在の集計結果に基づいて、尤度P(y|k)の一覧である推定通信路行列若しくは尤度Pの元となる度数分布を作成する。また、推定通信路行列集計部104は、作成した推定通信路行列若しくは度数分布を推定LLRテーブル作成部105へ出力する。なお、推定通信路行列集計部104には、推定LLRテーブル作成制御部103−2から、集計結果のリセット信号や、出力のタイミングを知らせる制御信号等も入力される。
推定LLRテーブル作成部105は、推定通信路行列集計部104から入力された推定通信路行列または度数分布から推定LLRテーブルを計算する。そして、推定LLRテーブル作成部105は、計算により得られた推定LLRテーブルをLLR変換部101−2へ出力する。
LLR変換部101−2は、推定LLRテーブル作成制御部103−2から指定されたLLRテーブルまたは推定LLRテーブルを用いることで、不揮発性メモリ20から読み出されて入力された受信値yをLLR値に変換する。また、LLR変換部101−2には、既定のLLRテーブルに加えて、受信値yとLLR値との変換に使用される推定LLRテーブル作成部105からのLLRテーブルが入力される。そして、LLR変換部101−2は、推定LLRテーブル作成制御部103−2から指定されたLLRテーブルを用いて受信値yを変換することで得られたLLR値の系列を、パラメタ決定部111および復号器102−2へ出力する。
復号器102−2は、復号により得られた推定値kの系列{k}、および、復号の成否などの復号で得られた情報を、推定LLRテーブル作成制御部103−2に出力する点が、第1の実施形態の復号器102と異なっている。
つづいて、本実施形態に係る復号動作を、図面を参照して詳細に説明する。図10は、本実施形態に係る復号動作の概略例を示すフローチャートである。図10に示すように、本動作では、まず、メモリI/F13によって不揮発性メモリ20から読み出されたECCフレーム単位の受信値yの系列{y}が軟判定復号部182−2に入力される(ステップS201)。軟判定復号部182−2に入力された系列{y}は、受信語バッファ106に記憶されると共に、LLR変換部101−2に入力される。
次に、例えば推定LLRテーブル作成制御部103−2が、推定LLRテーブル作成の繰返し回数をカウントする不図示のカウンタのカウント値Sをリセット(S=0)する(ステップS202)。
次に、推定LLRテーブル作成制御部103−2が、例えばカウント値Sが0であることに基づき、入力された受信値yの系列{y}に対して使用するLLRテーブルを既定のLLRテーブルとする旨の指示をLLR変換部101−2に入力する(ステップS203)。LLR変換部101−2は、指定されたLLRテーブルを用いて、受信値yの系列{y}をLLR値の系列に変換し、これにより得られたLLR値の系列をパラメタ決定部111および復号器102−2に入力する(ステップS204)。パラメタ決定部111は、入力されたLLR値の系列を用いてパラメタ、すなわち、フリップ領域を決定する(ステップS205)。
復号器102−2は、決定されたパラメタを用いて、入力されたLLR値の系列を復号し、その結果として得られた推定値kの系列{k}と、復号の成否などの情報とを推定LLRテーブル作成制御部103−2へ出力する(ステップS206)。なお、以下の説明では、カウント値Sのときに得られた推定値kをkSとし、推定値kSの系列を復号系列{kS}とする。
次に、例えば推定LLRテーブル作成制御部103−2が、復号器102−2から入力された情報に基づいて、復号に成功したか否かを判断する(ステップS207)。復号に成功していた場合(ステップS207のYES)、本動作は、ステップS212へ進む。一方、復号に失敗していた場合(ステップS207のNO)、例えば推定LLRテーブル作成制御部103−2が、カウント値Sを1インクリメントする(ステップS208)。つづいて、推定LLRテーブル作成制御部103−2は、カウント値Sが繰返し回数の最大値S_maxより大きいか否かを判定する(ステップS209)。この最大値S_maxは、復号に成功するまで失敗した復号結果に基づく推定LLRテーブルの作成(ステップS207〜S211)が繰り返されることを回避するための制限値である。カウント値Sが最大値S_maxより大きい場合(ステップS209のYES)、本動作は、ステップS214へ進む。一方、カウント値Sが最大値S_max以下である場合(ステップS209のNO)、本動作は、ステップS210へ進む。
ステップS210では、ステップS206の復号により得られた推定値kSと受信値yとの組(kS,y)それぞれの度数から、推定LLRテーブルが作成される。具体的には、推定通信路行列集計部104が、推定LLRテーブル作成制御部103−2を経由して入力された推定値kSの系列{kS}と、受信語バッファ106から入力された受信値yの系列{y}とから(kS,y)の組を作成し、それぞれの組の度数を集計する。そして、推定通信路行列集計部104は、現在の集計結果に基づいて、尤度P(y|kS)の一覧である推定通信路行列若しくは度数分布を作成し、作成した推定通信路行列若しくは度数分布を推定LLRテーブル作成部105に入力する。推定LLRテーブル作成部105は、入力された推定通信路行列若しくは度数分布に基づき、例えば上述した式(3)〜(6)を用いることで、推定LLRテーブルを作成する。作成した推定LLRテーブルは、LLR変換部101−2へ入力される。
次に、推定LLRテーブル作成制御部103−2は、作成された推定LLRテーブルを、使用するLLRテーブルとして指定する(ステップS211)。その後、本動作は、ステップS204へリターンする。これにより、受信値yの系列{y}が推定LLRテーブルを用いて復号される(ステップS204〜ステップS206)。
ステップS206の復号に成功していた場合(ステップS207のYES)、復号成功が例えば推定LLRテーブル作成制御部103−2から制御部11(図1参照)へ通知される(ステップS212)。また、推定LLRテーブル作成制御部103−2からは、復号により得られた推定値kSの復号系列{kS}も出力される(ステップS213)。その後、本動作が終了する。なお、出力された復号系列{kS}は、例えば、データバッファ12(図1参照)に蓄積され、書込み値であるユーザデータに復元された後、読出し要求を発行したホスト30へ送信される。
カウント値Sが最大値S_maxに達するまで推定LLRテーブルの作成を繰り返しても復号に成功しなかった場合(ステップS209のYES)には、復号失敗が例えば推定LLRテーブル作成制御部103−2から制御部11(図1参照)へ通知され(ステップS214)、本動作が終了する。これに対し、制御部11は、例えば、要求されたデータの読出しエラーを読出し要求を発行したホスト30へ送信する。
なお、図10では、LLR値の系列が出力されるごとにパラメタが決定されるが、例えば、カウント値Sが規定値に達するまでは固定のパラメタを用い、カウント値Sが規定値以上となったときに、パラメタ決定部111によるパラメタ決定処理を実行するように構成してもよい。
以上のように、本実施形態では、復号に失敗した場合でも、この失敗した復号により得られた推定値kの系列{k}を使用して、推定LLRテーブルの作成を1回以上実行する。これにより、推定する通信路を正しい通信路に近づけることが可能になる。その結果、通信路の不一致に基づく復号失敗を救済できる可能性が高まるため、通信路の不一致に基づく復号特性の劣化を抑えることが可能なメモリシステムを実現することができる。
また、本実施形態では、第1の実施形態と同様に、不揮発性メモリから読み出された受信値を変換して得られるLLR値に基づいて、復号処理のパラメタを適応的(動的)に決定する。これにより、通信路(ストレス状況)に応じて、訂正能力を低下させずに、計算量の増加を抑制した復号処理を実行可能となる。
(第3の実施形態)
次に、第3の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第2の実施形態と同様の構成および動作については、それを引用することで、重複する説明を省略する。
次に、第3の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第2の実施形態と同様の構成および動作については、それを引用することで、重複する説明を省略する。
第2の実施形態は、失敗した復号結果に基づいて推定LLRテーブルを作成する動作を1回以上繰り返すことで、推定する通信路を正しい通信路に近づける構成を備えていた。これに対し、第3の実施形態は、第2の実施形態と同様にして作成された推定LLRテーブルをさらに補正する構成を備える。
本実施形態に係るメモリシステムは、第1の実施形態において図1を用いて説明したメモリシステム1と同様の構成を備えてよい。ただし、本実施形態では、図9における軟判定復号部182−2が図11に示す軟判定復号部182−3に置き換えられる。
図11に示すように、本実施形態に係る軟判定復号部182−3は、図9に示す軟判定復号部182−2と同様の構成に加え、推定LLRテーブル補正部107−3をさらに備える。推定LLRテーブル補正部107−3は、例えば推定LLRテーブル作成制御部103−2からの指示に従い、推定LLRテーブル作成部105で作成された推定LLRテーブルを補正し、補正後の推定LLRテーブルをLLR変換部101に入力する。
ここで、推定LLRテーブル補正部107−3が実行する補正の一例について説明する。図12は、不揮発性メモリ20を構成する各メモリセルが1ビットのデータを記憶するシングルレベルセル(SLC)である場合の閾値電圧分布と読出し電圧との関係を示す模式図である。図12において、Er分布は、例えば‘1’のデータが書き込まれたメモリセルの閾値電圧の分布を示し、A分布は、例えば‘0’のデータが書き込まれたメモリセルの閾値電圧の分布を示している。また、Vr1〜Vr7は、メモリセルからデータを読み出す際に使用する読出し電圧(以下、リードレベルという)の例を示している。なお、Vr1〜Vr7のうち、Vr4は、硬判定読出し(ハードビットリード)の際に使用するリードレベルの例を示し、Vr1〜Vr3およびVr5〜Vr7は、軟判定読出(ソフトビットリード)の際に使用するリードレベルの例を示している。ただし、ソフトビットリードの際に使用されるリードレベルには、Vr4が含まれてもよい。
このような閾値電圧分布に対し、メモリセルの閾値電圧が例えばEr分布のピーク付近の電圧である場合、そのメモリセルが記憶するデータの値は‘1’である可能性が高い。同様に、メモリセルの閾値電圧が例えばA分布のピーク付近の電圧である場合、そのメモリセルが記憶するデータの値は‘0’である可能性が高い。そこで、このような場合に推定LLRテーブル補正部107−3が実行する補正の一例としては、読出しデータからメモリセルの閾値電圧がいずれかの分布のピーク付近にあると認められる場合には、その分布に対応する値である確率が高いとして、そのLLR値の絶対値が高い値となるように補正する。
また、メモリセルの閾値電圧が例えばEr分布とA分布との境界付近の電圧である場合、そのメモリセルが記憶するデータの値が‘1’である可能性と‘0’である可能性とはほぼ同等である。そこで、このような場合に推定LLRテーブル補正部107−3が実行する補正の一例としては、読出しデータからメモリセルの閾値電圧が隣接する分布の境界付近にあると認められる場合には、いずれの分布に対応する値であるかが不確定であるとして、そのLLR値の絶対値が低い値となるように補正する。その際、LLR値の正負が反転してもよい。
なお、補正の方法としては、LLR値の絶対値を固定値とする方法や、LLR値の絶対値に対して所定の値を加算または減算する方法など、種々の方法を適用することが可能である。
つづいて、本実施形態に係る復号動作を、図面を参照して詳細に説明する。図13は、本実施形態に係る復号動作の概略例を示すフローチャートである。図13に示すように、本実施形態に係る復号動作は、図10に示した第2の実施形態に係る復号動作と同様の動作において、ステップS211がステップS301〜S302に置き換えられている。
すなわち、本実施形態では、ステップS206の復号により得られた推定値kSと受信値yとの組(kS,y)それぞれの度数から推定LLRテーブルを作成すると(ステップS210)、作成した推定LLRテーブルが補正される(ステップS301)。具体的には、推定LLRテーブル作成部105によって作成された推定LLRテーブルが推定LLRテーブル補正部107−3に入力されると、推定LLRテーブル補正部107−3は、推定LLRテーブル作成制御部103−2から入力された補正情報に基づいて推定LLRテーブルを補正し、補正後の推定LLRテーブルをLLR変換部101−2に入力する。
次に、推定LLRテーブル作成制御部103−2は、補正後の推定LLRテーブルを、使用するLLRテーブルとして指定する(ステップS302)。その後、本動作は、ステップS204へリターンする。これにより、受信値yの系列{y}が補正後の推定LLRテーブルを用いて復号される(ステップS204〜ステップS206)。
以上のように、本実施形態では、失敗した復号結果に基づいて作成された推定LLRテーブルを補正する構成を備える。それにより、本実施形態では、ストレスにとって補正が適切であれば、より安定して復号に成功するように推定LLRテーブルを補正することが可能となる。
なお、その他の構成、動作および効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第4の実施形態)
次に、第4の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第2または第3の実施形態と同様の構成および動作については、それを引用することで、重複する説明を省略する。
次に、第4の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第2または第3の実施形態と同様の構成および動作については、それを引用することで、重複する説明を省略する。
上述した第2または第3の実施形態では、1つのECCフレームの復号結果に基づいて推定LLRテーブルを作成する場合を例示した。これに対し、第4の実施形態では、複数のECCフレームの復号結果に基づいて推定LLRテーブルを作成する場合を例示する。
同じような雑音の影響を受けることが想定される通信路であれば、それらの通信路から得られる条件付き確率P(y|x)は同様のものとなる。そこで本実施形態では、同様の通信路で雑音の影響を受けると思われる複数のECCフレームを一括で処理できる場合に、その全てのECCフレームの集計結果から推定LLRテーブルを作成する。それにより、推定LLRテーブルの作成に使用する(k,y)の組の数を増加させることが可能となるため、推定する通信路をより真の通信路に近づけることが可能となる。なお、同じような雑音の影響を受けることが想定される通信路としては、同一または隣接するワードラインに書き込まれたECCフレームなどが想定されるが、これに限定されるものではない。
本実施形態に係るメモリシステムおよびその復号部の構成は、例えば上述した第2または第3の実施形態に係るメモリシステム1およびその軟判定復号部182−2または182−3と同様であってよい。ただし、本実施形態では、軟判定復号部182−2または182−3が、複数のECCフレームを一括に処理できるように構成され、復号器102には、複数のECCフレームが入力され、受信語バッファ106には、複数のECCフレームが記憶される。
つづいて、本実施形態に係る復号動作を、図面を参照して詳細に説明する。なお、以下の説明では、第3の実施形態において例示した復号動作(図13参照)をベースとするが、これに限定されず、第2の実施形態において例示した復号動作(図10参照)をベースとするなど、種々変形することが可能である。
図14は、本実施形態に係る復号動作の概略例を示すフローチャートである。図14に示すように、本実施形態に係る復号動作は、図13に示した第3の実施形態に係る復号動作と同様の動作において、ステップS201、S207、S210およびS302がそれぞれステップS401、S402、S403およびS404に置き換えられている。
すなわち、本実施形態では、まず、メモリI/F13によって不揮発性メモリ20から読み出された複数のECCフレームの系列{y}が軟判定復号部182−3に入力される(ステップS401)。軟判定復号部182−3に入力された複数のECCフレームの系列{y}は、受信語バッファ106に記憶されると共に、LLR変換部101−2に入力される。
次に、カウント値Sをリセット(S=0)した後(ステップS202)、入力された複数のECCフレームの系列{y}が、指定されたLLRテーブルを用いて復号される(ステップS203〜206)。なお、個々のECCフレームの系列{y}に対する復号は、上述した実施形態と同様であってよい。
次に、例えば推定LLRテーブル作成制御部103−2が、復号器102−2から入力された情報に基づいて、全てのECCフレームに対する復号に成功したか否かを判断する(ステップS402)。全てのECCフレームに対する復号に成功していた場合(ステップS402のYES)、本動作は、ステップS212へ進み、以降の動作を実行する。一方、復号に失敗したECCフレームが存在する場合(ステップS402のNO)、カウント値Sが1インクリメントされ(ステップS208)、インクリメント後のカウント値Sが最大値S_maxより大きいか否かが判定される(ステップS209)。その後、カウント値Sが最大値S_maxより大きい場合(ステップS209のYES)、本動作は、ステップS214へ進み、以降の動作を実行する。一方、カウント値Sが最大値S_max以下である場合(ステップS209のNO)、本動作は、ステップS403へ進む。
ステップS403では、ステップS206の復号により得られた推定値kSの系列{kS}のうち、同様のストレスを受けた1以上のECCフレームの推定値kSの系列{kS}と受信値yとの組(kS,y)それぞれの度数から、推定LLRテーブルが作成される。具体的には、推定通信路行列集計部104が、推定LLRテーブル作成制御部103−2を経由して入力された複数のECCフレームのうち、同様のストレスを受けていると想定される1以上のECCフレームを特定する。つづいて、推定通信路行列集計部104は、特定した1以上のECCフレームそれぞれの推定値kSの系列{kS}と、受信語バッファ106から入力された受信値yの系列{y}とから(kS,y)の組を作成し、それぞれの組の度数を集計する。そして、推定通信路行列集計部104は、現在の集計結果に基づいて、尤度P(y|kS)の一覧である推定通信路行列若しくは度数分布を作成し、作成した推定通信路行列若しくは度数分布を推定LLRテーブル作成部105に入力する。推定LLRテーブル作成部105は、入力された推定通信路行列若しくは度数分布に基づき、例えば上述した式(3)〜(6)を用いることで、推定LLRテーブルを作成する。作成した推定LLRテーブルは、推定LLRテーブル補正部107−3に入力されて補正される(ステップS301)。
次に、推定LLRテーブル作成制御部103−2は、全てのECCフレームのうち、未だ復号に成功していないECCフレームの受信値yの系列{y}に対して使用するLLRテーブルとして、補正後の推定LLRテーブルを指定する(ステップS404)。その後、本動作は、ステップS204へリターンする。これにより、復号に成功していないECCフレームの受信値yの系列{y}が補正後の推定LLRテーブルを用いて復号される(ステップS204〜ステップS206)。なお、個々のECCフレームの系列{y}に対する復号は、上述した実施形態と同様であってよい。
以上のように、本実施形態では、同様の通信路で雑音の影響を受けると思われる複数のECCフレームを一括で処理できる場合に、その全てのECCフレームの集計結果から推定LLRテーブルを作成する。それにより、推定LLRテーブルの作成に使用する(k,y)の組の数を増加させることが可能となるため、推定する通信路をより真の通信路に近づけることが可能となる。
なお、その他の構成、動作および効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第5の実施形態)
次に、第5の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第2〜第4の実施形態のいずれかと同様の構成および動作については、それを引用することで、重複する説明を省略する。
次に、第5の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第2〜第4の実施形態のいずれかと同様の構成および動作については、それを引用することで、重複する説明を省略する。
第2の実施形態は、失敗した復号結果に基づいて推定LLRテーブルを作成する動作を1回以上繰り返すことで、推定する通信路を正しい通信路に近づける構成を備えていた。これに対し、第5の実施形態は、推定LLRテーブルを作成するために事後確率情報を利用することができる構成を備える。
本実施形態に係るメモリシステムは、第1の実施形態において図1を用いて説明したメモリシステム1と同様の構成を備えてよい。ただし、本実施形態では、図1における軟判定復号部182−2が図15に示す軟判定復号部182−5に置き換えられる。
図15に示すように、本実施形態に係る軟判定復号部182−5は、図9に示す軟判定復号部182−2と同様の構成に加え、図9における推定値を出力する復号器102−2が図15に示す事後LLRを出力する復号器102−5に置き換えられる。事後LLRは、推定値の元になる情報であって、事後確率情報に関する対数尤度比であり、受信値の系列{y}に加えて符号情報による推定も加わった軟判定復号部の出力である。事後LLRから推定値kが得られ、記憶されたビットが‘0’である確率と‘1’である確率とが同じである通常のケースであれば、その値の正負がビット‘0’と‘1’に対応し、絶対値が復号器による書込み値の推定の信頼度と関係する。
復号器102−5の出力は、事後LLRに代わって外部値であってもよい。外部値とは、事後LLRから入力時点でのLLRを引いたものである。事後LLRに代えて外部値を用いた場合でも第5の実施形態を実現できる。
また、本実施形態では、図9における推定値の系列{k}を使用する推定LLRテーブル作成制御部103−2が、図15における事後LLRの系列{l}を使用する推定LLRテーブル作成制御部103−5に置き換えられる。
推定LLRテーブル作成制御部103−5での事後LLRの具体的な使用例を図16を用いて説明する。図16には、受信値の系列{y}、事後LLRの系列{l}、そして事後LLRの系列から得られる推定値の系列{k}の一例が示されている。図16において、縦に並んだ受信値、推定値および事後LLRは、それぞれ同一のビットに関する情報である。一番右のビットに着目すると、受信値3と組になる事後LLRは+5である。この値はプラスであるため、一番右のビットに関しては、ビット‘0’が推定値となる。この時、事後LLRの絶対値が5と小さい値ではないため、(k=0,y=3)という組が推定通信路行列集計部104で使用される。一方、右から二番目のビットに関しては、その事後LLRの絶対値が1と小さい値である。そのため、二番目のビットに関わる(k=1,y=0)は推定通信路行列集計部104で使用されない。なお、図16では、絶対値が2以下の事後LLRに対応する推定値と受信値との組を推定通信路行列集計部104で使用しない場合が例示されているが、使用/不使用を判断する際に使用する事後LLRの絶対値に対する閾値は2に限定されず、種々変更することが可能である。
つづいて、本実施形態に係る復号動作を、図面を参照して詳細に説明する。図17は、本実施形態に係る復号動作の概略例を示すフローチャートである。図17に示すように、本実施形態に係る復号動作では、図10に示した第2の実施形態に係る復号動作と同様の動作において、ステップS210がステップS501〜S503に置き換えられている。また、図17のステップS206では、復号結果として、推定値の系列{kS}の代わりに事後LLRの系列{lS}が出力される。
ステップS206の復号に失敗し(ステップS207のNO)、且つ、繰返し回数を示すカウント値Sが最大値S_max以下である場合(ステップS209のNO)、推定LLRテーブル作成制御部103−5は、ステップS206の復号により得られた事後LLRの系列{lS}から、絶対値が所定の閾値(図16に示す例では2)以下である事後LLRを除外する(ステップS501)。つづいて、推定LLRテーブル作成制御部103−5は、残った事後LLRの系列{lS’}に対して推定値の系列{kS’}を生成する(ステップS502)。
生成された推定値の系列{kS’}は、推定通信路行列集計部104に入力される。また、推定通信路行列集計部104には、絶対値が所定の閾値より大きい事後LLRに対応する受信値の系列{y’’}も入力される。従って、ステップS403では、推定通信路行列集計部104が、推定LLRテーブル作成制御部103−2から入力された推定値の系列{kS’}と、受信語バッファ106から入力された受信値の系列{y’’}とから(kS’,y’’)の組を作成し、それぞれの組の度数を集計し、その集計結果に基づいて推定通信路行列若しくは度数分布を作成し、作成した推定通信路行列若しくは度数分布を推定LLRテーブル作成部105に入力する。これに対し、推定LLRテーブル作成部105は、入力された推定通信路行列若しくは度数分布に基づき、例えば上述した式(3)〜(6)を用いることで、推定LLRテーブルを作成する。なお、作成した推定LLRテーブルは、LLR変換部101−2へ入力される。
以上のように、本実施形態によれば、推定LLRテーブルの作成に事後確率情報を利用した場合でも、上述した第2〜第4の実施形態と同様の効果を奏することが可能である。また、本実施形態において、推定通信路行列集計部104で集計する(k,y)の組をその事後LLRの絶対値に基づいて制限することで、誤り訂正能力を向上することが可能となる。
なお、その他の構成、動作および効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。また、本実施形態では、第2の実施形態に係る構成をベースとして、推定LLRテーブルの作成に事後確率情報を利用する構成を適用した場合を例示したが、ベースとする構成は第2の実施形態に限られない。例えば、第3または第4の実施形態に係る構成に対し、本実施形態を適用することも可能である。
(第6の実施形態)
次に、第6の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第5の実施形態と同様の構成および動作については、それを引用することで、重複する説明を省略する。
次に、第6の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。なお、以下の説明において、第5の実施形態と同様の構成および動作については、それを引用することで、重複する説明を省略する。
第5の実施形態は、信頼度が低い事後LLR(例えば、絶対値が所定の閾値以下である事後LLR)を除外して度数を集計する構成を備えていた。このような構成では、推定LLRテーブルの作成に用いるサンプルの個数が少なくなり、より安定して復号に成功するような推定LLRテーブルを作成できない場合がある。これに対し、第6の実施形態は、信頼度が低い事後LLRを除外せずに集計に用いるように構成する。これにより、サンプル数を増加させ、より安定して復号に成功するような推定LLRテーブルを作成可能となる。
本実施形態に係るメモリシステムは、第5の実施形態と同様に、第1の実施形態において図1を用いて説明したメモリシステム1と同様の構成を備えてよい。ただし、本実施形態では、図15を用いて説明した第5の実施形態の軟判定復号部182−5が図18に示す軟判定復号部182−6に置き換えられる。
図18に示すように、本実施形態に係る軟判定復号部182−6は、図15に示す軟判定復号部182−5と同様の構成を備えるが、図15における推定通信路行列集計部104が、図18に示す推定通信路行列集計部104−6に置き換えられる。
推定通信路行列集計部104−6は、信頼度が相対的に低い(事後LLRの絶対値が小さい)ビットについては、度数(出現数)をカウントするカウンタのスケール値(第1スケール値)を、信頼度が相対的に高いビットのカウンタのスケール値(第2スケール値)以下の値となるように変換する。スケール値は、カウンタの最小単位(目盛)に相当する値である。推定通信路行列集計部104−6は、例えば事後LLRの絶対値が所定の閾値以下である場合に、信頼度が低いと判定し、事後LLRの絶対値が所定の閾値より大きい場合に、信頼度が高いと判定する。推定通信路行列集計部104−6は、小数値も加算することができるようなカウンタを用いる。
図19は、本実施形態で用いるカウンタの構成例を示す図である。図19の例では、カウンタのサイズは、17ビット長である。左端の1ビットが指数部に相当し、残りの16ビットが仮数部に相当する。指数部をE、仮数部をFとすると、カウンタの値は、2S(E−1)×Fで表される。
Sはスケール値を定める数値(例えば自然数)であり、例えば、2−Sで表される。スケール値が2−Sの場合、図19のカウンタで表現可能な値の範囲は、2−S〜2−16−1となる。216−Sより小さい値に対するカウンタの最小単位は2−Sである。216−S以上の値に対するカウンタの最小単位は1である。例えばS=5の場合、スケール値は2−5(=0.03125)となる。216−5=211=2048より小さい値に対するカウンタの最小単位は2−5である。211以上の値に対するカウンタの最小単位は1である。
カウンタの構成は図19の例に限られず、どのような構成であってもよい。図19は浮動小数点を表すカウンタの例であるが、固定小数点を表すカウンタであってもよい。小数点を表現可能とするためにカウンタの構成が複雑になるが、例えば図19に示すような構成であればカウンタに必要な回路規模の増加を抑制することができる。また、カウンタのスケール値は、信頼度が相対的に高いビットに対するスケール値(第2スケール値)を1とし、信頼度が相対的に低いビットに対するスケール値(第1スケール値)を1以下とする構成に限られず、第1スケール値≧第2スケール値を満たす関係であればよい。
図20は、本実施形態に係る復号動作の概略例を示すフローチャートである。図20に示すように、本実施形態に係る復号動作は、図17に示した第5の実施形態に係る復号動作と同様の動作において、ステップS501〜S503がステップS601〜S602に置き換えられている。なお、ステップS206では、第5の実施形態と同様に、復号結果として、推定値の系列{kS}の代わりに事後LLRの系列{lS}が出力される。
ステップS206の復号に失敗し(ステップS207のNO)、且つ、繰返し回数を示すカウント値Sが最大値S_max以下である場合(ステップS209のNO)、推定LLRテーブル作成制御部103−5は、ステップS206の復号により得られた事後LLRの系列{lS}に対して推定値の系列{kS}を生成する(ステップS601)。
生成された推定値の系列{kS}は、推定通信路行列集計部104−6に入力される。ステップS502では、推定通信路行列集計部104−6は、推定LLRテーブル作成制御部103−5から入力された推定値の系列{kS}と、受信語バッファ106から入力された受信値の系列{y}とから(kS,y)の組を作成し、それぞれの組の度数を集計し、その集計結果に基づいて推定通信路行列若しくは度数分布を作成し、作成した推定通信路行列若しくは度数分布を推定LLRテーブル作成部105に入力する。
このとき、推定通信路行列集計部104−6は、絶対値が所定の閾値以下である事後LLRについては、図19を用いて説明したようなスケール値(例えば2−5)を1に乗じた値を度数として加算する。
推定LLRテーブル作成部105は、入力された推定通信路行列若しくは度数分布に基づき、例えば上述した式(3)〜(6)を用いることで、推定LLRテーブルを作成する。なお、作成した推定LLRテーブルは、LLR変換部101−2へ入力される。
なお、推定LLRテーブル作成部105は、度数分布の値に予め定められた0より大きい補正値を加算した上で、LLR値を算出してもよい。以下の式(7)は、この場合に用いることができるLLR値の算出式の例である。式(7)では、補正値を1としているが、0より大きい値であれば補正値は1以外であってもよい。
補正値を加算することにより、度数が0の場合に0による除算が生じることを回避可能となる。なお0による除算を回避する方法はこれに限られるものではなく、例えば、除数が0となる場合には除数を1に置き換えて演算する方法を適用してもよい。なお、このような0による除算を回避する方法は、本実施形態のみでなく、第2〜第5の実施形態に適用することもできる。
これまでは、信頼度として事後LLRの絶対値を用いる例を説明したが、これに限られるものではない。例えば、第2〜第4の実施形態のように推定値kを出力する復号器102−2が、さらに推定値kの信頼度を出力するように構成し、推定通信路行列集計部104−6が、復号器102−2が出力した信頼度を用いるように構成してもよい。
信頼度は、例えば、0および1の2値のフラグ(低信頼度フラグ)で表されてもよい。例えば低信頼度フラグは、値が0の場合、信頼度が高いことを表し、値が1の場合、信頼度が低いことを表す。この場合、推定通信路行列集計部104−6は、低信頼度フラグ=1であるビットについては、度数をカウントするカウンタのスケール値を、低信頼度フラグ=0であるビットに対するカウンタのスケール値以下の値となるように変換する。
信頼度は、低いか高いかの2値である必要はなく、3値以上で表されてもよい。例えば、信頼度として、0=高信頼度、1=中信頼度、2=低信頼度の3値をとるフラグを用いてもよい。この場合、推定通信路行列集計部104−6は、フラグの値に応じて相互に異なるスケール値を用いて度数を集計する。例えば推定通信路行列集計部104−6は、フラグ=1であるビットについては、度数をカウントするカウンタの値を、スケール値S1を用いて変換して集計する。推定通信路行列集計部104−6は、フラグ=2であるビットについては、度数をカウントするカウンタの値を、スケール値S2(<S1)を用いて変換して集計する。
信頼度として事後LLRの絶対値を用いる場合は、絶対値と2つ以上の閾値との比較結果に応じて異なるスケール値を用いて出現数を集計してもよい。例えば、閾値1=2、閾値2=4の2つの閾値を用いる場合は、絶対値が2より大きく4以下である場合に、カウンタの値をスケール値S1を用いて変換して集計し、絶対値が2以下である場合に、カウンタの値をスケール値S2(<S1)を用いて変換して集計する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
17 符号化部
18 復号部
20 不揮発性メモリ
30 ホスト
101、101−2 LLR変換部
102、102−2、102−5 復号器
103 復号制御部
103−2、103−5 推定LLRテーブル作成制御部
104 推定通信路行列集計部
105 推定LLRテーブル作成部
106 受信語バッファ
107−3 推定LLRテーブル補正部
111 パラメタ決定部
181 硬判定復号部
182、182−3、182−5、182−6 軟判定復号部
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
17 符号化部
18 復号部
20 不揮発性メモリ
30 ホスト
101、101−2 LLR変換部
102、102−2、102−5 復号器
103 復号制御部
103−2、103−5 推定LLRテーブル作成制御部
104 推定通信路行列集計部
105 推定LLRテーブル作成部
106 受信語バッファ
107−3 推定LLRテーブル補正部
111 パラメタ決定部
181 硬判定復号部
182、182−3、182−5、182−6 軟判定復号部
Claims (14)
- 誤り訂正符号で符号化されたデータが記憶された不揮発性メモリと、
前記不揮発性メモリから、前記データを読み出し、
読み出された前記データと、尤度情報を計算するためのLLRテーブルとから前記尤度情報を計算し、
前記尤度情報に基づいて、読み出された前記データの復号処理のパラメタを決定し、
決定された前記パラメタに基づいて前記復号処理を実行し、
前記復号処理により得らえた復号結果を出力する、
メモリコントローラと、
を備えるメモリシステム。 - 前記パラメタは、読み出された前記データのうち反転させるシンボルの範囲であり、
前記メモリコントローラは、決定された前記範囲のシンボルのうち所定の数のシンボルを反転したデータに基づいて前記復号処理を実行する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記尤度情報の絶対値が閾値以下であるシンボルの個数の読み出された前記データに含まれるシンボルの総数に対する割合に基づいて、前記範囲を決定する、
請求項2に記載のメモリシステム。 - 前記メモリコントローラは、前記割合が大きいほど前記範囲を大きい値に決定するように構成された、
請求項3に記載のメモリシステム。 - 前記メモリコントローラは、前記誤り訂正符号の符号長と前記割合との積に基づく値を前記範囲として決定する、
請求項3に記載のメモリシステム。 - 前記メモリコントローラは、前記尤度情報の絶対値が閾値以下であるシンボルの個数の標準偏差に基づく補正値を計算し、前記補正値で前記積を補正した値を前記範囲として決定する、
請求項5に記載のメモリシステム。 - 前記メモリコントローラは、前記補正値が大きいほど大きい値となる前記範囲を決定する、
請求項6に記載のメモリシステム。 - 前記メモリコントローラは、
読み出された前記データおよび前記復号結果に基づいて前記LLRテーブルを作成し、
前記LLRテーブルを用いて読み出された前記データを前記尤度情報に変換する、
請求項1に記載のメモリシステム。 - 前記誤り訂正符号は、BCH(Bose-Chaudhuri-Hocquenghem)符号またはRS(Reed-Solomon)符号である、
請求項1に記載のメモリシステム。 - 前記誤り訂正符号は、積符号であり、前記積符号を構成する行方向の成分符号、および、列方向の成分符号のそれぞれが、BCH符号またはRS符号である、
請求項1に記載のメモリシステム。 - 前記復号処理は、OSD(Ordered Statistics Decoding)である、
請求項1に記載のメモリシステム。 - 前記復号処理は、Chase復号である、
請求項1に記載のメモリシステム。 - 前記復号処理は、OSDおよびChase復号のうち少なくとも一方を繰り返し実行する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、
前記復号処理により、読み出された前記データの復号に失敗した場合、前記復号結果に基づいてLLRテーブルを作成し、前記作成されたLLRテーブルを使用して読み出された前記データを前記尤度情報に変換する、
請求項1に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019166652A JP2021044750A (ja) | 2019-09-12 | 2019-09-12 | メモリシステム |
US16/804,940 US11204831B2 (en) | 2019-09-12 | 2020-02-28 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019166652A JP2021044750A (ja) | 2019-09-12 | 2019-09-12 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021044750A true JP2021044750A (ja) | 2021-03-18 |
Family
ID=74862636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019166652A Pending JP2021044750A (ja) | 2019-09-12 | 2019-09-12 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11204831B2 (ja) |
JP (1) | JP2021044750A (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3567733B2 (ja) | 1998-05-08 | 2004-09-22 | 株式会社日立製作所 | 信号復号方法、信号復号回路及びこれを用いた情報伝送通信装置、情報記憶再生装置 |
JP5251000B2 (ja) * | 2006-11-01 | 2013-07-31 | 富士通株式会社 | 誤り訂正回路及び媒体記憶装置 |
US10164656B2 (en) * | 2016-03-30 | 2018-12-25 | Silicon Motion Inc. | Bit flipping algorithm for providing soft information during hard decision hard decoding |
US10205469B2 (en) | 2016-08-11 | 2019-02-12 | SK Hynix Inc. | Low latency soft decoder architecture for generalized product codes |
JP2019054448A (ja) | 2017-09-15 | 2019-04-04 | 東芝メモリ株式会社 | メモリシステム |
JP6847796B2 (ja) * | 2017-09-20 | 2021-03-24 | キオクシア株式会社 | メモリシステム |
JP7039298B2 (ja) | 2018-01-16 | 2022-03-22 | キオクシア株式会社 | メモリシステム |
JP7237674B2 (ja) * | 2019-03-19 | 2023-03-13 | キオクシア株式会社 | メモリシステム |
-
2019
- 2019-09-12 JP JP2019166652A patent/JP2021044750A/ja active Pending
-
2020
- 2020-02-28 US US16/804,940 patent/US11204831B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210081275A1 (en) | 2021-03-18 |
US11204831B2 (en) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101995609B1 (ko) | 복수의 패리티 세그먼트를 갖는 코드워드를 디코딩하기 위한 시스템, 방법 및 장치들 | |
KR101795123B1 (ko) | 메모리에 특정한 패리티-체크 행렬을 사용한 데이터 엔코더 및 디코더 | |
US9319073B2 (en) | Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding | |
US9170876B1 (en) | Method and system for decoding encoded data stored in a non-volatile memory | |
US9048876B2 (en) | Systems, methods and devices for multi-tiered error correction | |
US11768732B2 (en) | Soft decoding method using LLR conversion table | |
US11108408B2 (en) | Memory controller and method of accessing flash memory | |
US9529666B2 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
TWI541820B (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
KR20200058106A (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
KR20150091148A (ko) | 계층적 반복 에러 교정을 위한 종료 기준 | |
US8935598B1 (en) | System and method for adaptive check node approximation in LDPC decoding | |
TW201503604A (zh) | 在低密度奇偶性校驗(ldpc)解碼器中之對數相似比(llr)抑制 | |
US20190089384A1 (en) | Memory system | |
US11025281B2 (en) | Memory system | |
JP2019160014A (ja) | メモリシステム | |
JP7237674B2 (ja) | メモリシステム | |
CN112860474A (zh) | 快速收敛的低密度奇偶校验码的软位翻转解码器 | |
US10970166B2 (en) | Memory system and method of controlling non-volatile memory | |
JP2021044750A (ja) | メモリシステム | |
JP7309551B2 (ja) | メモリシステム | |
KR101496052B1 (ko) | 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로 | |
US20240086280A1 (en) | Memory system and control method | |
CN113496752B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 |