JP2023116927A - メモリシステムおよびメモリ制御方法 - Google Patents
メモリシステムおよびメモリ制御方法 Download PDFInfo
- Publication number
- JP2023116927A JP2023116927A JP2022019335A JP2022019335A JP2023116927A JP 2023116927 A JP2023116927 A JP 2023116927A JP 2022019335 A JP2022019335 A JP 2022019335A JP 2022019335 A JP2022019335 A JP 2022019335A JP 2023116927 A JP2023116927 A JP 2023116927A
- Authority
- JP
- Japan
- Prior art keywords
- read
- memory
- data
- memory cells
- read voltages
- 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
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000012545 processing Methods 0.000 description 49
- 238000010586 diagram Methods 0.000 description 18
- 238000012937 correction Methods 0.000 description 13
- 238000009826 distribution Methods 0.000 description 13
- 238000000926 separation method Methods 0.000 description 9
- 230000010365 information processing Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- YQSLEUWHWUBKLA-JCOPYZAKSA-O [n'-[3-[1-[(2s)-1-[4-[4-[4-[2-[4-[3-[[amino(azaniumyl)methylidene]amino]propyl]triazol-1-yl]acetyl]piperazin-1-yl]-6-[2-[2-(2-prop-2-ynoxyethoxy)ethoxy]ethylamino]-1,3,5-triazin-2-yl]piperazin-1-yl]-1-oxopropan-2-yl]triazol-4-yl]propyl]carbamimidoyl]azani Chemical compound [Cl-].O=C([C@H](C)N1N=NC(CCCN=C(N)[NH3+])=C1)N(CC1)CCN1C(N=1)=NC(NCCOCCOCCOCC#C)=NC=1N(CC1)CCN1C(=O)CN1C=C(CCCN=C(N)[NH3+])N=N1 YQSLEUWHWUBKLA-JCOPYZAKSA-O 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/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
- G06F11/1024—Identification of the type of error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5642—Sensing or reading circuits; Data output circuits
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
【課題】復号に要する時間を短縮する。【解決手段】メモリシステムは、複数のメモリセルを備える不揮発性メモリと、メモリコントローラと、を備える。メモリコントローラは、複数の第1読み出し電圧を用いて複数のメモリセルから読み出された第1データに対して第1復号処理を実行し、第1復号処理に失敗した場合に、複数の第1読み出し電圧ごとに、複数の第2読み出し電圧を用いて複数のメモリセルから複数の第2データを読み出すことにより、複数のメモリセルの閾値電圧ごとのメモリセル数を表すヒストグラムを生成し、生成したヒストグラムの谷の位置を特定するトラッキング処理を実行し、複数の第1読み出し電圧に対して特定した複数の谷ごとに定められた尤度テーブルと、トラッキング処理で読み出された複数の第2データと、を用いて、第2データの尤度情報を求め、尤度情報を用いる第2復号処理を実行する。【選択図】図1
Description
以下の実施形態は、メモリシステムおよびメモリ制御方法に関する。
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
本発明の1つの実施形態は、復号に要する時間を短縮することが可能なメモリシステムおよびメモリ制御方法を提供することを目的とする。
実施形態のメモリシステムは、複数のメモリセルを備える不揮発性メモリと、メモリコントローラと、を備える。メモリコントローラは、複数の第1読み出し電圧を用いて複数のメモリセルから読み出された第1データに対して第1復号処理を実行し、第1復号処理に失敗した場合に、複数の第1読み出し電圧ごとに、複数の第2読み出し電圧を用いて複数のメモリセルから複数の第2データを読み出すことにより、複数のメモリセルの閾値電圧ごとのメモリセル数を表すヒストグラムを生成し、生成したヒストグラムの谷の位置を特定するトラッキング処理を実行し、複数の第1読み出し電圧に対して特定した複数の谷ごとに定められた尤度テーブルと、トラッキング処理で読み出された複数の第2データと、を用いて、第2データの尤度情報を求め、尤度情報を用いる第2復号処理を実行する。
以下に添付図面を参照して、実施形態に係るメモリシステムおよびメモリ制御方法を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
まず、本実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図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およびデータバッファ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からの読み出し処理を行う。
データバッファ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メモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。
図2は、ブロックの構成例を示す図である。各ブロックは、所定の第1方向に沿って順に配列された(m+1)個のNANDストリングNSを備えている(mは、0以上の整数)。NANDストリングは、メモリストリングとも称される。(m+1)個のNANDストリングNSにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0~BLmに接続され、ゲートが選択ゲート線SGDに共通接続されている。選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各NANDストリングNSにおいて、(n+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が所定の第2方向に沿って電気的に直列接続されるように配置されている(nは、0以上の整数)。
最もソース側に位置するメモリセルトランジスタMTから順に、制御ゲート電極がワード線WL0~WLnにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMT0のソースは選択トランジスタST2のドレインに接続され、ワード線WLnに接続されたメモリセルトランジスタMTnのドレインは選択トランジスタST1のソースに接続されている。
ワード線WL0~WLnは、ブロック内のNANDストリングNS間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。すなわち、ブロック内のNANDストリングNS間において所定の第1方向に沿って隣接するメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続される。この同一のワード線WLに接続される(m+1)個のメモリセルトランジスタMTはメモリセルグループと呼ぶ。なお、メモリセルトランジスタMTはメモリセルとも称される。
メモリセルがシングルレベルセル(SLC:Single Level Cell)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC:Multiple Level Cell)である場合は、1つのメモリセルグループが複数ページに対応する。なお、本説明において、MLCには、1つのメモリセルに3ビットを記憶するTLC(Triple Level Cell)や1つのメモリセルに4ビットを記憶するQLC(Quad Level Cell)等が含まれる。また各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
不揮発性メモリ20からのデータの読み出し時には、読み出し対象となるデータが書き込まれたメモリセルが接続されるワード線に読み出し電圧が印加され、読み出し対象となるデータが書き込まれたメモリセルが接続されるワード線以外のワード線については所定の電圧(VREAD)が印加される。VREADは、メモリセルが記憶するデータに関わらずメモリセルがオン状態になるような電圧である。
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12に一旦記憶される。符号化/復号部14は、不揮発性メモリ20に記憶されるユーザデータを符号化して符号語を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された符号語(受信語ともいう)を復号してユーザデータを復元する。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
次に、符号語の復号処理の詳細について説明する。誤り訂正符号の復号技術として、ハードビット復号(硬判定復号)とソフトビット復号(軟判定復号)がある。ハードビット復号では、入力の値は、0または1の1ビット(ハードビット)である。これに対してソフトビット復号では、入力の値は、0または1の確からしさを表す対数尤度比(Log Likelihood Ratio:LLR)などの尤度情報である。LLRは、例えば-127(0である確率が高い)から127(1である確率が高い)の範囲の数値で表される。
次に、不揮発性メモリ20からのデータの読み出しについてさらに説明する。上記のように、不揮発性メモリ20の各メモリセルは、1ページ(SLCの場合)、または、複数ページ(MLCの場合)に相当するデータを記憶することができる。以下では、各メモリセルから、各ページのデータを読み出すことをページリードという。ページリードでは、読み出し対象のページのデータが0であるか1であるかを示す読み出し結果(リードデータ)が得られる。
図3は、ページリードの具体例を説明するための図である。図3は、TLCにおけるデータコーディングとページリードの例を示す。TLCでは、1つのメモリセルに記憶される3ビットのデータは、例えば、アッパー(Upper)ビット、ミドル(Middle)ビット、および、ロワー(Lower)ビットと呼ばれる。
図3の中段は、1つのメモリセル当たり3ビットのデータが格納されたメモリセルの閾値電圧の分布(以下、閾値分布という)を示す。横軸は、閾値電圧を示し、縦軸は、メモリセルの数(セル数)、すなわちビットカウントを示している。
同一のワード線に接続されるすべてのメモリセルのアッパービットの集合を、アッパーページと呼ぶ。同一のワード線に接続されるすべてのメモリセルのミドルビットの集合を、ミドルページと呼ぶ。同一のワード線に接続されるすべてのメモリセルのロワービットの集合を、ロワーページと呼ぶ。
TLCの場合、図3に示すように、閾値電圧の取り得る範囲は、8個に分けられる。8個の範囲を、閾値電圧が小さいほうから順に、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、“G”ステートと呼ぶ。ステートは、閾値電圧の大きさを表す情報に相当する。
ページリードでは、ページごとに定められた複数の読み出し電圧を用いて読み出しが行われ、複数の読み出し電圧による読み出し結果から、各ページのデータが0であるか1であるかが特定される。図3の例では、ロワーページを対象とするページリード(ロワーページリード)の場合、VAおよびVEの2つの読み出し電圧が用いられる。ミドルページを対象とするページリード(ミドルページリード)の場合、VB、VDおよびVFの3つの読み出し電圧が用いられる。アッパーページを対象とするページリード(アッパーページリード)の場合、VCおよびVGの2つの読み出し電圧が用いられる。
各読み出し電圧による読み出しでは、メモリセルの閾値電圧が、読み出し電圧より大きいか否かを示す1ビットの読み出し結果(リードデータ)が得られる。例えば閾値電圧が読み出し電圧より大きい場合、0を示すリードデータが得られる。また、閾値電圧が読み出し電圧より小さい場合、1を示すリードデータが得られる。以下では、このように1つの読み出し電圧に対する閾値電圧の大小を示すリードデータを取得する処理を、シングルステートリードという。
ページリードでは、複数回のシングルステートリードにより得られるリードデータから、各ページのデータが0であるか1であるかが特定される。図3のAR~GRは、読み出し電圧VA~VGを用いたシングルステートリードを表す。図3の例で、ロワーページをVAおよびVEの2つの読み出し電圧で読み出した結果が、それぞれ0および1であったとする。この場合、メモリセルの閾値電圧は、VAより大きくVEより小さいこと、すなわち、ロワーページのデータは0であることが特定できる。
同様にして、ミドルページおよびアッパーページのデータが0であるか1であるかが特定される。3ページのリードデータから、メモリセルがいずれのステートに相当するかが特定できる。
あるページに保持されているデータの割り出しに必要な複数のリードは、当該ページについて必要な境界リードと称される。例えばロワーページの割り出しには、境界リードとして、ARおよびERが実行される。
図3に示すような各メモリセルの閾値分布は、時間経過とともに、または、アクセスごとに、変化し得る。
図4は、変化後の閾値分布の例を示す図である。図4は、説明を簡単にするために、“A”ステートおよび“B”ステートのみを示している。“A”ステートの閾値分布の裾野と“B”ステートの閾値分布の裾野とが重なり合っている。言い換えると、“A”ステートの最大値が読み出し電圧VBを超えており、かつ、“B”ステートの最小値が読み出し電圧VBを下回っている。閾値電圧が“A”ステートに属し、かつ、閾値電圧が読み出し電圧VBよりも大きいメモリセルがリードされた場合、そのメモリセルの閾値電圧は“B”ステートに属するとして認識される。すなわち、“110”としてプログラムされたデータが“100”としてリードされる。閾値電圧が“B”ステートに属し、かつ、閾値電圧が読み出し電圧VBよりも小さい、メモリセルがリードされた場合、そのメモリセルの閾値電圧は“A”ステートに属するとして認識される。すなわち、“100”としてプログラムされたデータが“110”としてリードされる。プログラム時から変化したデータは、符号化/復号部14によってエラーとして検出され、訂正が試みられる。
しかしながら、符号化/復号部14の訂正能力には上限が存在する。メモリコントローラ10は、エラーとして検出されるビットの数(以降、エラー数)をできるだけ少なくするために、境界リードに使用される読み出し電圧をシフトさせることができる。メモリコントローラ10は、エラー数を最小にする読み出し電圧の値を、境界リードで使用される読み出し電圧ごとに推定する。エラー数を最小にする読み出し電圧を推定する処理を、トラッキング処理という。また、エラー数を最小にする読み出し電圧を、最適読み出し電圧という。
トラッキング処理は、例えば、読み出し電圧(第2読み出し電圧)を予め定められた刻み幅でシフトしながら読み出し動作を複数回実行することで、該当ページに含まれる複数のメモリセルに書き込まれた閾値電圧ごとのメモリセル数を表すヒストグラムを生成し、生成したヒストグラムの谷の位置を最適読み出し電圧として推定する処理である。
図4において、“A”ステートの閾値分布と“B”ステートの閾値分布との交点における電圧Vb_crossが読み出し電圧として使用された場合、データ“110”がデータ“100”としてリードされるエラーの数と、データ“100”がデータ“110”としてリードされるエラーの数と、の合計の数が最小になる。すなわち、電圧Vb_crossは、BRの最適読み出し電圧である。
メモリコントローラ10は、各最適読み出し電圧を推定し、各最適読み出し電圧の推定値を用いたリードを不揮発性メモリ20に指示することができる。なお、各最適読み出し電圧の推定値は、各最適読み出し電圧と必ずしも一致していなくてもよい。不揮発性メモリ20は、メモリコントローラ10から設定された各最適読み出し電圧の推定値を用いてメモリセルに対する読み出し動作を行う。以降、特にことわりがない限り、最適読み出し電圧の推定値を、単に、最適読み出し電圧という。また、境界リードで使用される各読み出し電圧をシフトさせて実行される読み出し動作を、シフトリードという。
なお、メモリコントローラ10は、どのようなタイミングでトラッキング処理を実行してもよい。本実施形態では一例として、メモリコントローラ10は、符号化/復号部14がエラー訂正に失敗した場合に、トラッキング処理を実行する。
トラッキング処理で得られた最適読み出し電圧は、例えば、データバッファ12などに履歴値として記憶され、以降の読み出し動作で使用されてもよい。以下では、データバッファ12などに記憶された履歴値を読み出し電圧(第1読み出し電圧の一例)として用いた読み出し動作を履歴値リードという場合がある。履歴値はどのような単位で記憶されてもよいが、例えば、1ページ単位または複数ページ単位で記憶される。
図5~図7を用いて、トラッキング処理の詳細を説明する。トラッキング処理は、例えばページごとに実行される。以下では、ミドルページの読み出し動作で使用される読み出し電圧VB、VD、VFの最適値を推定するトラッキング処理(以下、ミドルトラッキング処理という)を例に説明する。
ミドルトラッキング処理においては、各読み出し電圧を変更(シフト)させながら複数回のシフトリードが実行される。ミドルトラッキング処理に含まれる各シフトリードは、ミドルページを対象としたページリードと同様であり、具体的には、シングルステートリードBR、DR、FRを実行することによってミドルビットのデータを判定する処理である。各シフトリードで、読み出し電圧VB、VDおよびVFがそれぞれシフトされる。
図5は、ミドルトラッキング処理において使用される各読み出し電圧を示している。図5の例では、5点の読み出し電圧を用いた5回のシフトリードが実行される。なお、シフトリードの回数は5回に限られず、4回または6回以上であってもよい。以下ではj点(jは4以上の整数)の読み出し電圧を用いたj回のシフトリードをj点のシフトリードという場合がある。各シフトリードでは、読み出し電圧VBとしてShift_bxが、読み出し電圧VDとしてShift_dxが、読み出し電圧VFとしてShift_fxが使用される。なお、xは、1~5の整数である。
以下では、“Er”ステートの閾値分布と“A”ステートの閾値分布との間の谷をEr-A谷という。同様に、その他の隣接するステートの閾値分布間の谷は以下のように称される。
・“A”ステートと“B”ステートとの間:A-B谷
・“B”ステートと“C”ステートとの間:B-C谷
・“C”ステートと“D”ステートとの間:C-D谷
・“D”ステートと“E”ステートとの間:D-E谷
・“E”ステートと“F”ステートとの間:E-F谷
・“F”ステートと“G”ステートとの間:F-G谷
・“A”ステートと“B”ステートとの間:A-B谷
・“B”ステートと“C”ステートとの間:B-C谷
・“C”ステートと“D”ステートとの間:C-D谷
・“D”ステートと“E”ステートとの間:D-E谷
・“E”ステートと“F”ステートとの間:E-F谷
・“F”ステートと“G”ステートとの間:F-G谷
本実施形態では、一例として、1回のシフトリードでは、読み出し電圧VB、VDおよびVFのそれぞれは、読み出し電圧VB、VDおよびVFの基準値から同一の量だけシフトされることとする。以降、シフト量は、特にことわりがない限り、基準値からのシフト量を意味することとする。また、j点のシフトリードに適用されるシフト量の間隔は、等間隔であることとする。
ミドルトラッキング処理においては、シフトリードの他に、マスクデータを取得するためのリードが実行される。シフトリードのリードデータは、複数のシングルステートリードの読み出し結果を用いた演算によって生成される。マスクデータは、シフトリードのリードデータから、それぞれのシングルステートリードの読み出し結果を分離するために使用される。マスクデータを取得するためのリードを、マスクデータリードという。読み出し結果を分離する処理はレベル分離とも称される。レベル分離は、シフトリードのリードデータが、いずれの谷に対応するデータであるかを特定する処理であると解釈することもできる。
マスクデータリードにおいては、対象のワード線WLに特定の電圧が印加される。特定の電圧は、例えば互いに隣接する2つの推定対象の最適読み出し電圧の間の電圧である。例えば、互いに隣接する2つの推定対象の最適読み出し電圧から十分に遠い電圧が特定の電圧として採用される。換言すると、ミドルビットを判定するための3つの読み出し電圧VB、VDおよびVFのうちいずれか1つの読み出し電圧と、当該読み出し電圧の次に大きい読み出し電圧と、の間に設定された電圧が、特定の電圧として採用される。
ミドルページリードでは、読み出し電圧VB、VDおよびVFが使用される。従って、ミドルトラッキング処理においては、一例では、マスクデータリードとして、CRおよびERが実行される。すなわち、CRの読み出し結果およびERの読み出し結果が、マスクデータとして使用される。
ミドルトラッキング処理においては、各メモリセルの閾値電圧が存在し得る範囲は、5点のシフトリードで使用される各読み出し電圧と、CRで使用される読み出し電圧VCと、ERで使用される読み出し電圧VEと、によって、合計18個の区分(図5の(1)~(18))に分けられる。
例えば、あるメモリセルにかかるCRの読み出し結果が“1(メモリセルがオン状態)”であることは、そのメモリセルの閾値電圧が区分(1)~(6)に含まれていることを示す。あるメモリセルにかかるCRの読み出し結果が“0(メモリセルがオフ状態)”であることは、そのメモリセルの閾値電圧が区分(1)~(6)に含まれていないことを示す。すなわち、5点のシフトリードのリードデータに対してCRの読み出し結果を用いてマスクすることによって、区分(1)~(6)に閾値電圧が含まれるメモリセルと、区分(1)~(6)に閾値電圧が含まれていないメモリセルと、を分離することが可能である。
区分(1)~(6)においては、シフトリードによるリードデータが“1”であるか否かは、BRの読み出し結果のみに基づいて決定される。BRの読み出し結果が“1(メモリセルがオン状態)”であれば、リードデータは“1”とされる。BRの読み出し結果が“0(メモリセルがオフ状態)”であれば、リードデータは“0”とされる。
よって、一例では、各シフトリードによって得られたリードデータのそれぞれに対し、CRの読み出し結果との論理積(AND)演算を行うことで、各シフトリードそれぞれによって得られたリードデータからBRの読み出し結果を取得することができる。
区分(7)~(12)および区分(13)~(18)についても同様にして読み出し結果を取得することができる。
図6は、レベル分離の一例を説明するための図である。図6の例では、上記と同様に、マスクデータリードとして、CRおよびERが実行される。“Upper”、“Middle”、“Lower”は、それぞれアッパーページ、ミドルページ、ロワーページでのシフトリードのリードデータを表す。“CR”、“ER”は、それぞれCR、ERによるリードデータを表す。
6行目から12行目は、谷を特定するための演算の例を示す。例えば6行目の演算である“Lower&CR”は、ロワーページのリードデータが、Er-A谷に対応するデータであることを特定することができる。
以降、マスクデータを用いることによってシフトリードのリードデータから分離された各読み出し結果を、分離データという。また、シフトリードにおいて読み出し電圧として使用される電圧を、シフト読み出し電圧ということがある。
対象のワード線WLに属する複数のメモリセルは、シフトリードごとの各分離データに基づいてそれぞれの区分に分類される。そして、各区分に分類されたメモリセルの数(セル数)が区分ごとにカウントされる。区分ごとのカウントは、具体的には、次のように実行される。すなわち、ある区分の両側のシフト読み出し電圧を用いて実行された2回のシフトリードによって得られた2つの分離データ間で、値が異なるメモリセルがカウントされる。カウントによって得られる結果が、その区分に分類されたメモリセルの数に該当する。
例えば、Shift_biを用いたシフトリードによって得られた分離データと、Shift_b(i+1)を用いたシフトリードによって得られた分離データと、のそれぞれに含まれる“1(メモリセルがオン状態)”の数がカウントされる。この処理は、Shift_biを読み出し電圧として用いた場合にオン状態となるメモリセルの数Count_biと、Shift_b(i+1)を読み出し電圧として用いた場合にオン状態となるメモリセルの数Count_b(i+1)と、をそれぞれカウントしていることに相当する。カウント後、Count_biとCount_b(i+1)との差分が演算される。演算された差分が、Shift_biとShift_b(i+1)との間の区分に分類されたメモリセルの数に該当する。なお、オフ状態のメモリセルの数がカウントされてもよい。
これによって、閾値電圧の区分ごとにメモリセルの数を度数として示すヒストグラムが完成する。
図7は、ミドルトラッキング処理で生成されるヒストグラムの一例を示す図である。上段のグラフは、閾値分布を示すグラフである。中段のグラフは、各シフト読み出し電圧が適用された場合にオン状態のメモリセルの数を示すグラフである。下段のグラフは、ヒストグラムである。
図7では読み出し電圧VBに対するヒストグラムの例のみが示されているが、ミドルトラッキング処理では、読み出し電圧VB、VDおよびVFのそれぞれについてヒストグラムが生成される。各ヒストグラムにおいて、度数が極小値となる区分から、最適読み出し電圧がそれぞれ個別に推定される。例えば、度数が極小値となる区分に隣接する2つの区分の度数の内分比によって、最適読み出し電圧の推定値が演算される。なお、最適読み出し電圧の演算方法はこれに限定されない。
読み出し電圧のシフト量ΔRより小さい粒度で表される谷の位置を特定するようにトラッキング処理が構成される場合には、算出される最適読み出し電圧と、シフト読み出し電圧と、の位置の差(ずれ量)が生じる場合がある。例えば、最適読み出し電圧がDAC(Digital to Analogue Convertor)値で表され、トラッキング処理のシフトリードに適用されるシフト量ΔRがαDAC値(αは2以上の整数)に相当する場合、0DAC値~(α-1)DAC値のずれ量が生じうる。0DAC値は、ずれがない場合のずれ量を表す。例えばα=16(ΔR=16DAC値)の場合、ずれ量は0~15までの16値を取りうる。なお、複数のシフト読み出し電圧のうち他のシフト読み出し電圧より谷の位置に近いシフト読み出し電圧が、ずれの基準とするシフト読み出し電圧として用いられる。例えば、区分の両側のシフト読み出し電圧のうち予め定められた一方が、ずれの基準とするシフト読み出し電圧として用いられる。
ここで、本実施形態のメモリシステム1による復号処理の概要について説明する。メモリシステム1は、まず履歴値リードまたはノーマルリードにより読み出したデータ(第1データ)に対する復号処理DecA(第1復号処理)を実行する。ノーマルリードは、例えば、読み出し時にワード線に印加する読み出し電圧として予め設定される読み出し電圧(第1読み出し電圧の一例)の基準値を用いるページリードである。例えば履歴値が記憶されていない場合に、読み出し電圧の基準値を用いたノーマルリードが実行される。
メモリシステム1は、復号処理DecAによる復号に失敗した場合、より精度の高い復号処理DecBを実行する。復号処理DecBは、トラッキング処理と、トラッキング処理で読み出されたデータ(第2データ)に対して尤度情報(LLR)を求め、求めたLLRを用いるソフトビット復号(第2復号処理)と、を含む。上記のようなずれ量が生じるトラッキング処理が用いられる場合は、メモリシステム1は、ずれ量に応じたソフトビット復号を実行するように構成される。
復号処理DecBは、トラッキング処理のデータを利用した復号処理ともいう。以下、トラッキング処理のデータを利用した復号処理を含む、本実施形態のメモリシステム1による読み出し処理の詳細について説明する。
図8は、メモリシステム1による読み出し処理の一例を示すフローチャートである。なお、図8に示す読み出し処理は、例えばホスト30から読み出し要求を受信した場合、並びに、パトロールリードおよびガベージコレクション等のイベントが発生した場合に実行される。
制御部11は、例えば、読み出し対象の物理アドレス(以下、対象アドレスという)で指定されるワードラインを含むページに対して履歴値が記憶されているか否かを判定する(ステップS101)。
履歴値が記憶されていない場合(ステップS101:No)、制御部11は、メモリI/F13に対して、対象アドレスを指定してノーマルリードにより不揮発性メモリ20からデータを読み出すよう指示する。これに対し、メモリI/F13はノーマルリードを実行する(ステップS102)。
履歴値が記憶されている場合(ステップS101:Yes)、制御部11は、メモリI/F13に対して、対象アドレスを指定して履歴値リードにより不揮発性メモリ20からデータを読み出すよう指示する。これに対し、メモリI/F13は履歴値リードを実行する(ステップS103)。
ノーマルリードまたは履歴値リードにより読み出されたリードデータは、符号化/復号部14に入力される。符号化/復号部14は、リードデータを用いて誤り訂正を実行する(ステップS104)。制御部11は、誤り訂正に成功したか否かを判定する(ステップS105)。
誤り訂正に失敗した場合(ステップS105:No)、符号化/復号部14は、トラッキング処理のデータを利用した復号処理である復号処理DecBを実行する(ステップS106)。復号処理DecBの詳細は後述する。
制御部11は、復号処理DecBによる復号に成功したか否かを判定する(ステップS107)。復号に失敗した場合(ステップS107:No)、制御部11は、さらに信頼性が高い読み出し動作である高信頼性リードを実行する(ステップS108)。高信頼性リードは、復号処理DecAおよび復号処理DecBより信頼性が高ければどのような読み出し動作であってもよい。
符号化/復号部14は、高信頼性リードにより読み出されたリードデータを用いて誤り訂正を実行する(ステップS109)。制御部11は、誤り訂正に成功したか否かを判定する(ステップS110)。
誤り訂正に失敗した場合(ステップS110:No)、制御部11は、ホスト30に対して読み出しエラーを通知する(ステップS111)。その後、読み出し処理が終了する。
ステップS105、ステップS110で誤り訂正に成功したと判定された場合、または、ステップS107で復号に成功したと判定された場合(ステップS105:Yes、ステップS107:Yes、ステップS110:Yes)、すなわち、符号化/復号部14においてユーザデータが復元できた場合、復元されたユーザデータが例えばデータバッファ12へ出力され、その後、読み出し処理が終了する。
上記のように、トラッキング処理で得られた最適読み出し電圧は、データバッファ12などに履歴値として記憶され、以降の読み出し動作で使用することができる。なお、履歴値リードは実行されないように構成されてもよい。この場合の読み出し処理は、例えば図9のステップS101およびステップS103が実行されず、ノーマルリード(ステップS102)以降の処理が実行されるような処理となる。
次に、ステップS106のトラッキング処理のデータを利用した復号処理(復号処理DecB)の詳細について説明する。図9は、実施形態に係るメモリシステム1による、トラッキング処理のデータを利用した復号処理の流れを説明するための図である。
以下では、5点のシフトリードを用いるトラッキング処理を適用した場合を例に説明する。また、以下では、ミドルページを読み出す場合を例に説明する。4回または6回以上のシフトリードを用いるトラッキング処理、および、他のページ(ロワーページ、アッパーページ)を対象とするトラッキング処理のデータを利用した復号処理についても同様の手順を適用できる。
まず、符号化/復号部14は、トラッキング処理(ミドルトラッキング処理)を実行する(ステップS201)。ミドルトラッキング処理では、5点のシフトリードと、レベル分離のためのシングルステートリードと、の読み出し結果が利用され、谷ごとに最適読み出し電圧が求められる。
5点のシフトリードは、図5で示したように、各谷について5個の読み出し電圧を用いて読み出し処理を行うことを意味する。例えばA-B谷については、Shift_b1~Shift_b5の5個の読み出し電圧が用いられる。
符号化/復号部14は、シフトリードのリードデータを谷ごとに分離するためのレベル分離を実行し(ステップS202)、谷ごとの5点のリードデータを得る。トラッキング処理(ステップS201)内でステップS202に相当する処理が実行される場合は、ステップS202は省略されてもよい。
符号化/復号部14は、トラッキング処理で得られた最適読み出し電圧を参照し、谷ごとに、5点のリードデータから4点のリードデータを選択する(ステップS203)。例えば符号化/復号部14は、5点の読み出し電圧のうち、最適読み出し電圧に近い順に4点の読み出し電圧を特定する。符号化/復号部14は、特定した4点の読み出し電圧により読み出された4点のリードデータを選択する。
リードデータの選択について、A-B谷に対するトラッキング処理で図7の下段のようなヒストグラムが得られた場合を例に説明する。この例では、最適読み出し電圧Vb_crossは、Shift_b1~Shift_b5により分けられる4つの区分(2)~(5)のうち、区分(4)に含まれる。この場合、符号化/復号部14は、Shift_b1~Shift_b5のうち、最適読み出し電圧Vb_crossに近い4点の読み出し電圧であるShift_b2~Shift_b5を特定する。そして符号化/復号部14は、Shift_b2~Shift_b5により読み出された4点のリードデータを選択する。
最適読み出し電圧Vb_crossが区分(5)に含まれる場合であれば、符号化/復号部14は、Shift_b1~Shift_b5のうち、最適読み出し電圧Vb_crossに近い4点の読み出し電圧であるShift_b2~Shift_b5を特定する。そして符号化/復号部14は、Shift_b2~Shift_b5により読み出された4点のリードデータを選択する。
最適読み出し電圧Vb_crossが区分(2)または区分(3)に含まれる場合であれば、符号化/復号部14は、Shift_b1~Shift_b5のうち、最適読み出し電圧Vb_crossに近い4点の読み出し電圧であるShift_b1~Shift_b4を特定する。そして符号化/復号部14は、Shift_b1~Shift_b4により読み出された4点のリードデータを選択する。
符号化/復号部14は、選択した4点のリードデータを用いて、ラベル列を作成する(ステップS204)。ラベル列は、LLRテーブル(尤度テーブルの一例)を用いてLLRを求めるときに指定する複数のラベルの列である。
図10は、ラベル列の作成方法を説明するための図である。図10は、図9と同様にミドルページを読み出す場合の例である。ミドルページについては、3つの谷(A-B谷、C-D谷、E-F谷)に対してそれぞれ4点の読み出し電圧が特定される。すなわち、合計12点の読み出し電圧が特定される。また、12点の読み出し電圧によって、合計13個の読み出し電圧の範囲が得られる。符号化/復号部14は、このような13個の読み出し電圧の範囲をそれぞれ表す13個のラベル<0>~<12>を作成する。
なお、ロワーページおよびアッパーページの谷の個数は2であるため、特定される読み出し電圧は8点となり、作成されるラベルの個数は9個(例えば<0>~<8>)となる。
図9に戻り、符号化/復号部14は、LLRテーブルを参照して、リードデータに該当するラベルに対応するLLRの値を算出し(ステップS209)、算出したLLRの列(LLR列)を入力とするソフトビット復号を実行する(ステップS210)。
上記のように、ずれ量が生じるトラッキング処理が用いられる場合は、メモリシステム1は、ずれ量に応じた復号処理を実行する。この場合、谷ごと、および、ずれ量ごとに定められる複数のLLRテーブルが使用される。例えば、ずれ量が0~15までの16値を取りうる場合、谷ごとに16個のLLRテーブルが用意され、ずれ量に応じたLLRテーブルが選択されて使用される。
図9のLLRテーブル901~903は、それぞれA-B谷、C-D谷、および、E-F谷に対して定められるLLRテーブルを表す。例えばA-B谷については、5個のラベル<0>~<4>ごとのLLRである(A0,A1,A2,A3,A4)を定めた16個のLLRテーブル901が用意される。C-D谷については、5個のラベル<4>~<8>ごとのLLRである(C0,C1,C2,C3,C4)を定めた16個のLLRテーブル902が用意される。E-F谷については、5個のラベル<8>~<12>ごとのLLRである(E0,E1,E2,E3,E4)を定めた16個のLLRテーブル903が用意される。
図11は、LLRテーブルのデータ構造の一例を示す図である。図11は、A-B谷に対応するLLRテーブル901の例を示す。なお図11のLLRテーブル901は、16値のずれ量に対するLLRの値をまとめて1つのテーブルの形式で表されている。16個のLLRテーブルは、それぞれ個別のテーブルの形式で表されてもよい。
図9に戻り、符号化/復号部14は、谷ごとに、ずれ量に応じた1つのLLRテーブルを選択する。A-B谷については、符号化/復号部14は、16個のLLRテーブル901から、ずれ量に応じたLLRテーブルを選択する(ステップS205)。C-D谷については、符号化/復号部14は、16個のLLRテーブル902から、ずれ量に応じたLLRテーブルを選択する(ステップS206)。E-F谷については、符号化/復号部14は、16個のLLRテーブル903から、ずれ量に応じたLLRテーブルを選択する(ステップS207)。
符号化/復号部14は、各谷について選択された複数のLLRテーブルを1つのLLRテーブルに再構成する(ステップS208)。例えばミドルページの読み出しの場合、符号化/復号部14は、A-B谷に対応するラベル<0>~<4>のLLRである(A0,A1,A2,A3,A4)、C-D谷に対応するラベル<4>~<8>のLLRである(C0,C1,C2,C3,C4)、および、E-F谷に対応するラベル<8>~<12>のLLRである(E0,E1,E2,E3,E4)を統合し、13個のラベル<0>~<12>それぞれに対する13個のLLR(X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12)を定める1つのLLRテーブルを再構成する。
なお、同じラベルに対するLLRが谷ごとに異なる場合がありうる。このような場合は、いずれかの谷のLLRを使用してもよいし、複数のLLRの値の平均値を使用してもよい。また、最適読み出し電圧と、シフト読み出し電圧と、の位置の差(ずれ量)が生じないようなトラッキング処理が用いられる場合は、ずれ量に応じたLLRテーブルを選択する処理は不要である。
図9に戻り、符号化/復号部14は、このようにして再構成されたLLRテーブルを参照してLLRの値を算出し(ステップS209)、算出したLLR列を入力とするソフトビット復号を実行する(ステップS210)。
谷ごとのずれ量に応じたLLRテーブルは、例えば製品出荷前に、メモリシステム1を用いた測定、または、シミュレーションなどにより作成される。以下に、LLRテーブルの作成方法の例について説明する。
LLRテーブルは、例えば、メモリシステム1に接続されるホスト30などの情報処理装置によって作成される。情報処理装置は、例えば以下の(1)式に従い、谷ごとおよびラベルごとのLLRを算出する。
LLR=λ×ln(p(1)/p(0))・・・(1)
LLR=λ×ln(p(1)/p(0))・・・(1)
p(1)は該当ラベルに対する1の確率である。p(0)は該当ラベルに対する0の確率である。λは定数である。各確率は、例えば、ラベルに対応するメモリセルに書き込んだ値(0または1)のカウント値と、メモリセルから読み出されたリードデータ(0または1)のカウント値とから算出される。
図12は、LLRテーブルの作成手順の例を説明するための図である。図12の座標軸は、シフト読み出し電圧に対するずれ量を表す。0は、シフト読み出し電圧に相当する。図12は、最適読み出し電圧が、シフト読み出し電圧-8DAC値(ずれ量=8DAC)であった場合の例を示す。この場合、情報処理装置は、ずれ量8に対するLLRテーブルを作成する。
ずれ量8に対するLLRテーブルを作成したときの不揮発性メモリ20を用いて、他のずれ量に対するLLRテーブルをさらに作成するように構成されてもよい。例えばずれ量8DACのLLRテーブルを作成した場合、情報処理装置は、ずれ量が(α-1)DACに相当するまで、1DAC刻みでずらしたシフト読み出し電圧を用いて読み出しを行い、リードデータを得る。情報処理装置は、各ずれ量に対応するシフト読み出し電圧によるリードデータを用いて、上記の(1)式により、当該ずれ量に対するLLRテーブルを作成する。
図12の例では、-9DACから-(α+7)DACまでのずれに応じたリードデータが得られる。これらのリードデータにより、ずれ量9DACのLLRテーブル~ずれ量(α-1)DACのLLRテーブル、および、ずれ量0DACのLLRテーブル~ずれ量7DACのLLRテーブルがさらに作成される。
(変形例1)
LLRテーブルの作成方法は上記に限られない。例えば、情報処理装置は、あるずれ量(例えばずれ量0DAC)に対して作成したLLRテーブルの各LLRの値を用いた演算により、他のずれ量(例えばずれ量1DAC~αDAC)のLLRテーブルを作成してもよい。
LLRテーブルの作成方法は上記に限られない。例えば、情報処理装置は、あるずれ量(例えばずれ量0DAC)に対して作成したLLRテーブルの各LLRの値を用いた演算により、他のずれ量(例えばずれ量1DAC~αDAC)のLLRテーブルを作成してもよい。
(変形例2)
ソフトビット復号は並列に実行可能とするように構成されてもよい。例えば図9のステップS210のソフトビット復号を、複数の回路により並列に実行するようにメモリシステム1が構成されてもよい。これにより、複数のLLRテーブルから求められた複数のLLR列に対して並列にソフトビット復号を実行することができる。これにより、復号処理を高速化することが可能となる。複数のLLRテーブルは、例えば、谷ごとのLLRテーブルであってもよい。
ソフトビット復号は並列に実行可能とするように構成されてもよい。例えば図9のステップS210のソフトビット復号を、複数の回路により並列に実行するようにメモリシステム1が構成されてもよい。これにより、複数のLLRテーブルから求められた複数のLLR列に対して並列にソフトビット復号を実行することができる。これにより、復号処理を高速化することが可能となる。複数のLLRテーブルは、例えば、谷ごとのLLRテーブルであってもよい。
トラッキング処理を適用した復号処理としては、トラッキング処理により最適読み出し電圧を求めた後、求めた最適読み出し電圧を用いてさらにシフトリードを実行する技術がある。このような技術では、トラッキング処理の後に、さらにシフトリードを行うため、復号処理の速度が低下するおそれがある。これに対して本実施形態では、トラッキング処理によるリードデータを再利用してソフトビット復号を実行する。これにより、追加のシフトリードなどが不要となり、復号処理の速度を向上させることができる。
また、トラッキング処理で得られる最適読み出し電圧とシフト読み出し電圧との間にずれ量が生じる場合であっても、ずれ量に応じた複数のLLRテーブルを用いることができる。これにより、誤り訂正の精度を向上させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
20 不揮発性メモリ
30 ホスト
10 メモリコントローラ
11 制御部
12 データバッファ
13 メモリI/F
14 符号化/復号部
15 ホストI/F
16 内部バス
20 不揮発性メモリ
30 ホスト
Claims (9)
- 複数のメモリセルを備える不揮発性メモリと、
複数の第1読み出し電圧を用いて前記複数のメモリセルから読み出された第1データに対して第1復号処理を実行し、
前記第1復号処理に失敗した場合に、複数の前記第1読み出し電圧ごとに、複数の第2読み出し電圧を用いて前記複数のメモリセルから複数の第2データを読み出すことにより、前記複数のメモリセルの閾値電圧ごとのメモリセル数を表すヒストグラムを生成し、生成した前記ヒストグラムの谷の位置を特定するトラッキング処理を実行し、
複数の前記第1読み出し電圧に対して特定した複数の前記谷ごとに定められた尤度テーブルと、前記トラッキング処理で読み出された複数の前記第2データと、を用いて、前記第2データの尤度情報を求め、
前記尤度情報を用いる第2復号処理を実行する、
メモリコントローラと、
を備えるメモリシステム。 - 前記谷の位置は、複数の前記第2読み出し電圧間の差より小さい粒度で特定され、
前記メモリコントローラは、
複数の前記第1読み出し電圧に対して特定した複数の前記谷ごと、および、前記谷の位置と、複数の前記第2読み出し電圧のうち他の前記第2読み出し電圧より前記谷の位置に近い前記第2読み出し電圧との間のずれ量ごと、に定められた尤度テーブルと、前記トラッキング処理で読み出された複数の前記第2データと、を用いて前記尤度情報を求める、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、
複数の前記第1読み出し電圧ごとに、5個の前記第2読み出し電圧を用いて複数の前記第2データを読み出し、5個の前記第2読み出し電圧のうち隣接する2つの前記第2読み出し電圧によって定められる4個の区間の前記閾値電圧ごとのメモリセル数を表す前記ヒストグラムを生成し、生成した前記ヒストグラムの前記谷の位置を特定する前記トラッキング処理を実行する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、
5個の前記第2読み出し電圧のうち、特定した前記谷に相当する読み出し電圧に近い順に4個の前記第2読み出し電圧によって定められる3個の区間それぞれに対応する複数の前記尤度情報を定めた前記尤度テーブルを用いて、前記トラッキング処理で読み出された複数の前記第2データの読み出しに用いられた前記第2読み出し電圧が含まれる区間に対応する前記尤度情報を求める、
請求項3に記載のメモリシステム。 - 前記メモリコントローラは、
前記トラッキング処理で読み出された複数の前記第2データが複数の前記谷のいずれに対応するかを求め、求めた前記谷に対して定められた前記尤度テーブルを用いて前記尤度情報を求める、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、
前記トラッキング処理の後に前記複数のメモリセルから前記第1データを読み出すときに、前記トラッキング処理により特定した前記谷の位置に相当する読み出し電圧を前記第1読み出し電圧として用いる、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、
前記複数のメモリセルのうち少なくとも2つ以上の前記メモリセルに対する複数の前記第2復号処理を並列に実行する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、
前記谷ごとに定められた複数の前記尤度テーブルを1つに統合した尤度テーブルを用いて前記尤度情報を求める、
請求項1に記載のメモリシステム。 - 複数のメモリセルを備える不揮発性メモリを制御するメモリ制御方法であって、
メモリコントローラが、
複数の第1読み出し電圧を用いて前記複数のメモリセルから読み出された第1データに対して第1復号処理を実行し、
前記第1復号処理に失敗した場合に、複数の前記第1読み出し電圧ごとに、複数の第2読み出し電圧を用いて前記複数のメモリセルから複数の第2データを読み出すことにより、前記複数のメモリセルの閾値電圧ごとのメモリセル数を表すヒストグラムを生成し、生成した前記ヒストグラムの谷の位置を特定するトラッキング処理を実行し、
複数の前記第1読み出し電圧に対して特定した複数の前記谷ごとに定められた尤度テーブルと、前記トラッキング処理で読み出された複数の前記第2データと、を用いて、前記第2データの尤度情報を求め、
前記尤度情報を用いる第2復号処理を実行する、
メモリ制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022019335A JP2023116927A (ja) | 2022-02-10 | 2022-02-10 | メモリシステムおよびメモリ制御方法 |
US17/895,465 US11940871B2 (en) | 2022-02-10 | 2022-08-25 | Memory system and memory control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022019335A JP2023116927A (ja) | 2022-02-10 | 2022-02-10 | メモリシステムおよびメモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023116927A true JP2023116927A (ja) | 2023-08-23 |
Family
ID=87520947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022019335A Pending JP2023116927A (ja) | 2022-02-10 | 2022-02-10 | メモリシステムおよびメモリ制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11940871B2 (ja) |
JP (1) | JP2023116927A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023136079A (ja) * | 2022-03-16 | 2023-09-29 | キオクシア株式会社 | メモリシステム及びリード方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10320429B2 (en) | 2015-03-04 | 2019-06-11 | Toshiba Memory Corporation | Memory controller, memory system and memory control method |
US9819362B2 (en) * | 2015-03-27 | 2017-11-14 | Intel Corporation | Apparatus and method for detecting and mitigating bit-line opens in flash memory |
JP6783666B2 (ja) * | 2017-01-05 | 2020-11-11 | キオクシア株式会社 | 半導体記憶装置及びメモリシステム |
JP2018147231A (ja) | 2017-03-06 | 2018-09-20 | 東芝メモリ株式会社 | メモリコントローラ、メモリシステムおよびメモリシステムの制御方法 |
US10783972B2 (en) | 2018-08-02 | 2020-09-22 | SK Hynix Inc. | NAND flash memory with reconfigurable neighbor assisted LLR correction with downsampling and pipelining |
US10891189B2 (en) | 2019-01-28 | 2021-01-12 | Seagate Technology Llc | Customized parameterization of read parameters after a decoding failure for solid state storage devices |
JP2021007061A (ja) * | 2019-06-28 | 2021-01-21 | キオクシア株式会社 | メモリシステム |
-
2022
- 2022-02-10 JP JP2022019335A patent/JP2023116927A/ja active Pending
- 2022-08-25 US US17/895,465 patent/US11940871B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11940871B2 (en) | 2024-03-26 |
US20230251928A1 (en) | 2023-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10847230B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11609814B2 (en) | Memory system | |
CN104126205B (zh) | 用于减轻同时多状态感测引起的变化的存储器及其方法 | |
US8793543B2 (en) | Adaptive read comparison signal generation for memory systems | |
US8305809B2 (en) | Methods, devices, and systems for dealing with threshold voltage change in memory devices | |
US10320429B2 (en) | Memory controller, memory system and memory control method | |
US10884855B1 (en) | Performance in reading memory cells affected by neighboring memory cells | |
US9711240B2 (en) | Memory system | |
CN111540402B (zh) | 用纠错码(ecc)综合征权重辅助快速恢复错误 | |
US9665426B2 (en) | Semiconductor device and reading method | |
US20200211654A1 (en) | Memory system | |
US10210042B2 (en) | Memory system | |
KR20230100620A (ko) | 다단 연결 코드를 사용하는 계층적 오류 정정 코드 디코딩 | |
US9697892B1 (en) | Generation and application of gray codes | |
US11940871B2 (en) | Memory system and memory control method | |
US10803930B2 (en) | Memory system including a memory controller and error correction circuit for reading multi-bit data and for detecting and correcting read data errors | |
US11874736B2 (en) | Calculating soft metrics depending on threshold voltages of memory cells in multiple neighbor word lines | |
US11424002B2 (en) | Memory system that includes a NAND flash memory and a memory controller | |
US20170373705A1 (en) | Apparatuses and methods for erasure-assisted ecc decoding | |
JP2021149990A (ja) | メモリシステム | |
WO2024124417A1 (en) | Best read reference voltage search of 3d nand memory | |
US11621048B2 (en) | Positioning read thresholds in a nonvolatile memory based on successful decoding | |
WO2024148459A1 (en) | Dummy data-based read reference voltage search of nand memory | |
CN118830023A (zh) | Nand存储器的基于虚拟数据的读取参考电压搜索 |