JP2021149995A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2021149995A JP2021149995A JP2020051262A JP2020051262A JP2021149995A JP 2021149995 A JP2021149995 A JP 2021149995A JP 2020051262 A JP2020051262 A JP 2020051262A JP 2020051262 A JP2020051262 A JP 2020051262A JP 2021149995 A JP2021149995 A JP 2021149995A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- read
- model
- memory controller
- parameters
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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
- 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/5671—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 trapping in an insulator
-
- 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
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
- G11C29/50004—Marginal testing, e.g. race, voltage or current testing of threshold voltage
-
- 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
-
- 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C2029/1802—Address decoder
Abstract
【課題】リード電圧の推定の精度を向上させたメモリシステムを提供する。【解決手段】一つの実施形態によれば、メモリシステムは、不揮発性メモリと、メモリコントローラとを備える。前記不揮発性メモリは、複数のメモリセルを有する。前記メモリコントローラは、前記複数のメモリセルから複数の参照リード電圧を用いて読み出したデータに基づいて、しきい値電圧に対するメモリセル数を示すヒストグラムを生成し、前記ヒストグラムを、前記複数のメモリセルに格納されたデータを読み出すための複数の実リード電圧の推定値を出力するモデルに入力することで前記推定値を算出し、前記複数のメモリセルに対する複数の実リード電圧の観測値を算出し、前記推定値と前記観測値とに基づいて前記モデルのパラメータを更新する。【選択図】図8
Description
本実施形態は、メモリシステムに関する。
不揮発性のメモリセルを有するメモリシステムが知られている。そのようなメモリシステムにおいては、リード処理において、メモリセルのしきい値電圧とリード電圧との比較に基づいて、そのメモリセルに保持されているデータが判定される。
メモリセルのしきい値電圧は、種々の要因によって変化し得る。メモリシステムは、メモリセルのしきい値電圧が変化したとしてもそのメモリセルから正しいデータを得ることができるように、リード電圧を変更することが可能に構成されている。
一つの実施形態は、リード電圧の推定の精度を向上させたメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、不揮発性メモリと、メモリコントローラとを備える。前記不揮発性メモリは、複数のメモリセルを有する。前記メモリコントローラは、前記複数のメモリセルから複数の参照リード電圧を用いて読み出したデータに基づいて、しきい値電圧に対するメモリセル数を示すヒストグラムを生成し、前記ヒストグラムを、前記複数のメモリセルに格納されたデータを読み出すための複数の実リード電圧の推定値を出力するモデルに入力することで前記推定値を算出し、前記複数のメモリセルに対する複数の実リード電圧の観測値を算出し、前記推定値と前記観測値とに基づいて前記モデルのパラメータを更新する。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、実施形態に係るメモリシステム1の構成の一例を示す模式的な図である。メモリシステム1は、ホスト(Host)2と接続可能に構成されている。ホスト2としては、例えばパーソナルコンピュータや携帯情報端末、サーバなどが適宜利用可能である。
図1は、実施形態に係るメモリシステム1の構成の一例を示す模式的な図である。メモリシステム1は、ホスト(Host)2と接続可能に構成されている。ホスト2としては、例えばパーソナルコンピュータや携帯情報端末、サーバなどが適宜利用可能である。
メモリシステム1は、ホスト2からアクセス要求を受け付けることができる。アクセス要求は、リードコマンド及びライトコマンドを含む。
メモリシステム1は、不揮発性メモリとしてのNAND型のフラッシュメモリ(NANDメモリ100)と、メモリコントローラ200とを備える。NANDメモリ100及びメモリコントローラ200は、複数のチャネルを有するバス300により電気的に接続される。
メモリコントローラ200は、ホスト2及びNANDメモリ100の間のデータ転送を実行する。メモリコントローラ200は、ホストインタフェース(Host I/F)201、RAM(Random Access Memory)202、CPU(Central Processing Unit)203、NANDC204及びECC(Error Correction Circuit)205を備える。ホストインタフェース201、RAM202、CPU203、NANDC204及びECC205は、例えばバス等を介して、互いに通信可能に接続される。
メモリコントローラ200は、例えばSoC(System-On-a-Chip)として構成され得る。メモリコントローラ200は、複数のチップによって構成されてもよい。メモリコントローラ200は、CPU203に代えて、FPGA(field-programmable gate array)やASIC(application specific integrated circuit)を備えていてもよい。メモリコントローラ200は、並列処理可能な専用演算器又はDSP(Digital Signal Processor)をさらに備えていてもよい。すなわち、メモリコントローラ200は、ソフトウェア、ハードウェア又はこれらの組み合わせによって構成され得る。
RAM202は、バッファ、あるいはCPU203のワークエリアとして使用されるメモリである。RAM202を構成するメモリの種類は、特定の種類に限定されない。例えば、RAM202は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)又はこれらの組み合わせによって構成される。
ホストインタフェース201は、ホスト2との間の通信インタフェースの制御を実行する。ホストインタフェース201は、CPU203による制御の下で、ホスト2とRAM202との間のデータ転送を実行する。NANDC204は、CPU203による制御の下で、NANDメモリ100とRAM202との間のデータ転送を実行したりする。
CPU203は、ホストインタフェース201、RAM202、NANDC204及びECC205を制御する。CPU203は、例えばRAM202にロードされたファームウェアプログラムを実行することによって、上記した各種構成要素の制御を実現する。
ECC205は、NANDメモリ100に送られるデータを符号化する。符号化は、誤り訂正符号による符号化である。ECC205は、NANDメモリ100から送られてきたデータに対し、復号を実行し、それによって当該データに含まれるビットエラーの検出と訂正とを実施する。
ECC205が使用する符号化の方式は、特定の方式に限定されない。一例では、符号化の方式として、LDPC(Low Density Parity Check)が採用され得る。
NANDメモリ100は、1以上のメモリチップ(Chip)101を含む。1以上のメモリチップ101の各々は、バス300によりNANDC204に電気的に接続される。ここでは、一例として、NANDメモリ100は、4つのメモリチップ101を含む。
図2は、図1のメモリチップ101の構成の一例を示す模式的な図である。図示するようにメモリチップ101は、周辺回路110及びメモリセルアレイ111を備える。
メモリセルアレイ111は、各々が複数の不揮発性メモリセルトランジスタの集合である複数のブロックBLK(BLK0、BLK1、BLK2、…)を備える。複数のブロックBLKの各々は、それぞれがワード線(ワードライン)及びビット線に関連付けられたメモリセルトランジスタの集合である複数のストリングユニットSU(SU0、SU1、SU2、…)を備える。複数のストリングユニットSUの各々は、メモリセルトランジスタが直列接続された複数のNANDストリング114を備える。なお、ストリングユニットSU内のNANDストリング114の数は任意である。
周辺回路110は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路及び電圧発生回路を含む。周辺回路110は、メモリコントローラ200からコマンドを受信すると、メモリセルアレイ111に対し、プログラム処理、リード処理及びイレース処理のうちの当該コマンドに対応した処理を実行する。
図3は、図2のブロックBLKの回路構成の一例を示す模式的な図である。なお、各ブロックBLKは、同一の構成を有している。ブロックBLKは、例えば4つのストリングユニットSU0〜SU3を有する。各ストリングユニットSUは、複数のNANDストリング114を含む。
複数のNANDストリング114の各々は、例えば64個のメモリセルトランジスタMT(MT0〜MT63)及び選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。64個のメモリセルトランジスタMT(MT0〜MT63)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS型であってもよいし、電荷蓄積層に導電膜を用いたFG型であってもよい。さらに、NANDストリング114内のメモリセルトランジスタMTの個数は64個に限定されない。
ストリングユニットSU0〜SU3の各々における選択トランジスタST1のゲートは、それぞれ選択ゲート線SGD0〜SGD3に接続される。これに対してストリングユニットSU0〜SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0〜SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSUごとに異なる選択ゲート線SGS0〜SGS3に接続されてもよい。同一のブロックBLK内にあるメモリセルトランジスタMT0〜MT63の制御ゲートは、それぞれワード線WL0〜WL63に共通接続される。以下、ワード線WLをワードラインと記載する場合もある。
各ストリングユニットSU内にある各NANDストリング114の選択トランジスタST1のドレインは、それぞれ異なるビット線BL(BL0〜BL(L−1)、ただしLは2以上の自然数)に接続される。また、ビット線BLは、複数のブロックBLK間で各ストリングユニットSU内にある1つのNANDストリング114を共通に接続する。さらに、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
つまり、ストリングユニットSUは、異なるビット線BLに接続され、かつ、同一の選択ゲート線SGDに接続されたNANDストリング114の集合である。また、ブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合である。メモリセルアレイ111は、ビット線BLを共通にする複数のブロックBLKの集合である。
周辺回路110によるプログラム処理及びリード処理は、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して実行され得る。1つのストリングユニットSUにおける1つのワード線WLに対してプログラム処理又はリード処理が実行され得る1ビットのデータの集まりを「ページ」と表記する。
周辺回路110によるイレース処理は、ブロックBLK単位で実行される。すなわち、1つのブロックBLKに格納された全てのデータは、一括にイレースされる。
図4は、図3のブロックの一部領域の断面図である。本図に示すように、p型のウェル領域(半導体基板)10上に、複数のNANDストリング114が形成されている。すなわち、ウェル領域10上には、選択ゲート線SGSとして機能する例えば4層の配線層11、ワード線WL0〜WL63として機能する64層の配線層12及び選択ゲート線SGDとして機能する例えば4層の配線層13が、順次積層されている。積層された配線層間には、絶縁膜が形成されている。
これらの配線層13,12,11を貫通してウェル領域10に達するピラー状の導電体14が形成されている。導電体14の側面には、ゲート絶縁膜15、電荷蓄積層(絶縁膜または導電膜)16及びブロック絶縁膜17が順次形成され、これらによってメモリセルトランジスタMT及び選択トランジスタST1,ST2が形成されている。導電体14は、NANDストリング114の電流経路として機能し、各トランジスタのチャネルが形成される領域となる。導電体14の上端は、ビット線BLとして機能する金属配線層18に接続される。
ウェル領域10の表面領域内には、n+型不純物拡散層19が形成されている。拡散層19上にはコンタクトプラグ20が形成され、コンタクトプラグ20は、ソース線SLとして機能する金属配線層21に接続される。さらに、ウェル領域10の表面領域内には、p+型不純物拡散層22が形成されている。拡散層22上にはコンタクトプラグ23が形成され、コンタクトプラグ23は、ウェル配線CPWELLとして機能する金属配線層24に接続される。ウェル配線CPWELLは、ウェル領域10を介して導電体14に電位を印加するための配線である。
以上の構成が、半導体基板に平行な第2方向D2に複数配列されており、第2方向D2に並ぶ複数のNANDストリング114の集合によってストリングユニットSUが形成される。
なお、図2〜図4に示された構成は一例である。メモリセルアレイ111の構成は、上記した構成に制限されない。例えば、メモリセルアレイ111は、NANDストリング114が2次元的に配列された構成を有していてもよい。
以降では、メモリセルトランジスタMTを、単に、メモリセルと表記する。
図5は、図3や図4のメモリセルのしきい値電圧の分布の一例を示す模式的な図である。図5に含まれる3つのグラフにおいて、縦軸は、メモリセルの数(ビットカウント)を示し、横軸は、しきい値電圧(Vth)を示す。すなわち、本図は、しきい値電圧に対するメモリセルの数の分布を示す。
なお、以降に説明される例では、特に断りがない限り、各メモリセルにデータを保持する方式として、TLC(Triple Level Cell)と呼ばれる方式が適用されていることとしている。TLCの方式によれば、各メモリセルは、3ビットのデータを保持することができる。つまり、本実施形態では、メモリセルが8値のデータを保持可能な場合について説明するが、これに限らない。メモリセルが保持可能なデータは、2値以上のデータ(1ビット以上のデータ)であり得る。
図5に示すように、TLCの場合、しきい値電圧の取り得る範囲は、8つの範囲に区分される。この8つの区分を、しきい値電圧が低いほうから順に、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート及び“G”ステートと呼ぶことにする。周辺回路110は、プログラム処理の際に、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート及び“G”ステートのうちの何れかのステートに属するように、各メモリセルのしきい値電圧を制御する。
その結果、しきい値電圧に対するメモリセルの数をプロットした場合、メモリセルのしきい値電圧の分布は、図5の(A)に示されるように、それぞれ異なるステートに属する8つのローブを形成する。
8つのステートは、それぞれ異なる3ビットのデータに対応する。一例では、“Er”ステートは、“111”に対応する。また、“A”ステートは、“110”に対応する。また、“B”ステートは、“100”に対応する。また、“C”ステートは、“000”に対応する。また、“D”ステートは、“010”に対応する。また、“E”ステートは、“011”に対応する。また、“F”ステートは、“001”に対応する。また、“G”ステートは、“101”に対応する。このように、各メモリセルは、そのしきい値電圧が属するステートに対応したデータを保持することができる。なお、図5の(A)に示す対応関係は、データコーディングの一例であり、これに限定されない。
なお、1つのメモリセルに保持される3ビットのデータの各桁は、位置に対応した名称で表記される。例えばLSB(Least Significant Bit)はロアービット、MSB(Most Significant Bit)はアッパービット、LSBとMSBとの間のビットはミドルビット、と称される。
しきい値電圧は、イレース処理によって“Er”ステートまで低下せしめられる。また、しきい値電圧は、プログラム処理によって、“Er”ステートに維持されるたり、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート及び“G”ステート、のうちの何れかのステートに至るまで上昇せしめられたりする。
具体的には、プログラム処理においては、周辺回路110は、カラムアドレスに対応したビット線BLを選択する。周辺回路110は、選択されたビット線BLの電位をゼロとする。周辺回路110は、ロウアドレスに対応したワード線WLを選択し、選択されたワード線WLに、プログラミングパルスを印加する。すると、選択されたビット線BLおよび選択されたワード線WLとの交点に位置するメモリセルの電荷蓄積層16に電子が注入され、その結果、メモリセルのしきい値電圧が上昇する。周辺回路110は、所定のタイミングでデータのリードを行うことで、メモリセルのしきい値電圧がライトデータのデータに対応した目標のステートに到達したか否かを確認する(ベリファイリード)。周辺回路110は、メモリセルのしきい値電圧が目標のステートに到達するまで、プログラムパルスの印加を継続する。
以降、プログラム処理によってあるステートにしきい値電圧が設定されたメモリセルを、そのステートに属するメモリセル、と表記することがある。
隣接する2つのステートの境界には、データの判定のための電圧が設定される。この電圧を、後述する参照リード電圧Vr1〜Vr7(reference read voltage)と区別するために、実リード電圧Va〜Vg(actual read voltage)と表記する。
例えば、図5の(A)に例示されるように、“Er”ステートと“A”ステートとの間に実リード電圧Vaが設定される。また、“A”ステートと“B”ステートとの間に実リード電圧Vbが設定される。また、“B”ステートと“C”ステートとの間に実リード電圧Vcが設定される。また、“C”ステートと“D”ステートとの間に実リード電圧Vdが設定される。また、“D”ステートと“E”ステートとの間に実リード電圧Veが設定される。また、“E”ステートと“F”ステートとの間に実リード電圧Vfが設定される。また、“F”ステートと“G”ステートとの間に実リード電圧Vgが設定される。つまり、8つのステートが設定されるTLCモードでは、7点の実リード電圧が設定される。リード処理において、周辺回路110は、設定された複数点の実リード電圧を用いてメモリセルが属するステートを特定し、特定したステートをデータにデコードする。
具体的には、リード処理においては、周辺回路110は、ビット線BLに電源電圧をプリチャージする。周辺回路110は、ロウアドレスに対応したワード線WLを選択する。周辺回路110は、非選択のワード線WLに属するメモリセルを導通状態にし、選択されたワード線WLに、複数種類の実リード電圧を順次印加する。周辺回路110は、プリチャージにより蓄えられた電荷がどの実リード電圧が印加されたときにソース線SLに流出したかを検知することによって、対象のメモリセルが属するステートに対応するデータを判定する。周辺回路110は、判定されたデータをラッチ回路に格納する。メモリコントローラ200は、例えばリードイネーブル(RE)信号をトグルさせることによって、ラッチ回路内のデータをリードデータとして取得することができる。
ここで、メモリセルのしきい値電圧は、種々の要因によって変化し得る。メモリセルのしきい値電圧は、例えば、当該メモリセルへのアクセス、当該メモリセルへのプログラム完了時からの経過時間や温度履歴、当該メモリセルに隣接するメモリセルへのアクセス、当該メモリセルの疲弊状態などに応じて変化し得る。メモリセルの疲弊状態は、当該メモリセルに対するイレース処理/プログラム処理の実行回数、および当該メモリセルに対するイレース処理/プログラム処理の際の温度に影響される。メモリセルのしきい値電圧が変化するとき、リード処理時において、例えば図5の(B)に示すように、ステートごとの分布が互いに重なり合った状態になっている場合がある。
このように、リードされたデータは、しきい値電圧の変化によって、プログラムされた時点での値から変化している場合がある。しきい値電圧のローブの一部又は全部がステート間の境界にある実リード電圧を越えた場合、データの誤判定が発生する。すなわち、しきい値電圧のローブの一部又は全部がステート間の境界にある実リード電圧の設定値を越えた場合、プログラム処理時と異なった値が読み出される。読み出されたデータのうち、プログラム処理時と異なった値を、ビットエラーと表記する。
メモリコントローラ200において、CPU203などのプロセッサ及びECC205のうちの少なくとも一方は、エラー訂正(復号)と、実リード電圧のシフトとによりビットエラーに対処することができる。以下、一例として、ECC205によりエラー訂正(復号)が実行され、プロセッサ(CPU203)により実リード電圧のシフトが実行される場合を例示する。
例えば、メモリコントローラ200は、NANDメモリ100から取得したデータに対してECC205を用いたエラー訂正を実行する。エラー訂正に失敗した場合、メモリコントローラ200は、実リード電圧Va〜Vgの最適値を推定し、推定によって得られた実リード電圧Va〜Vgの最適値の推定値を実リード電圧Va〜Vgの新たな設定値として設定してリード処理をリトライする。以下、実リード電圧の最適値の推定値を実リード電圧の推定値と記載する。また、実リード電圧の最適値の観測値を実リード電圧の観測値と記載する。リトライされるリード処理を、リードリトライ処理と表記する。
ここで、エラー訂正が失敗するとは、変化後のデータから変化前のデータを復元できないことをいう。具体的には、エラー訂正が失敗するとは、リードデータに含まれるエラービットが訂正できないことをいう。エラー訂正が成功するとは、リードデータに含まれる全てのエラービットが訂正されたことをいう。
メモリコントローラ200により設定される実リード電圧の設定値は、例えば図1に示すようにRAM202にロードされた管理情報207に含まれる。
管理情報207には、実リード電圧の設定値が、所定の単位領域ごとに記録される。単位領域は、例えばブロックBLKである。つまり、1つのブロックBLKに含まれる全てのメモリセルに対し、共通する実リード電圧の設定値が使用される。なお、単位領域はブロックBLKに限定されない。例えば、単位領域はワード線やページなどであってもよい。
また、図1の例では、管理情報207はRAM202に格納されている。例えば、管理情報207は、メモリシステム1の電源断の前には、RAM202からNANDメモリ100に退避される。メモリシステム1の起動後には、NANDメモリ100からRAM202にロードされる。なお、管理情報207は、NANDメモリ100に退避されなくてもよい。また、管理情報207が格納される位置はRAM202に限定されない。
なお、メモリコントローラ200により設定された実リード電圧の設定値は、如何なる方法で周辺回路110に送信されてもよい。
一例として、実リード電圧の設定値は、メモリコントローラ200からメモリチップ101に送信されるデータリード用のコマンドとともに送られる。この場合、メモリコントローラ200は、実リード電圧の設定値を、データリード用のコマンドのコマンドシーケンスに含めてメモリチップ101に送信する。当該コマンドシーケンスを受信したメモリチップ101では、周辺回路110は、当該コマンドシーケンスに含まれる実リード電圧の設定値の電圧をリード対象のメモリセルにワード線を介して印加することで、リード対象のメモリセルのデータを読み出す。
別の一例では、実リード電圧の設定値は、データリード用のコマンドとは異なるコマンドによってメモリチップ101に送られる。周辺回路110は、各種パラメータを保持することができるフィーチャレジスタを有している。例えば、フィーチャレジスタは、パラメータの一種として、実リード電圧の設定値を保持できるように構成されている。周辺回路110は、メモリコントローラ200からデータリード用のコマンドを受信した場合、フィーチャレジスタから実リード電圧の設定値を取得して、当該設定値の電圧を、リード対象のメモリセルにワード線を介して印加することで、リード対象のメモリセルのデータを読み出す。フィーチャレジスタは、セットフィーチャコマンドによって値を設定することができる。つまり、メモリコントローラ200は、セットフィーチャコマンドによって実リード電圧の設定値をメモリチップ101に送信することができる。なお、実リード電圧の設定値は、セットフィーチャコマンドに限らず、他の任意のコマンドによって送信されてもよい。
なお、実リード電圧の設定値は、電圧値を示す数値情報としてメモリチップ101に送られてもよいし、予め決められた基準となる電圧値からの差分として表現された数値情報としてメモリチップ101に送られてもよい。
実リード電圧Va〜Vgの最適値は、ビットエラーの発生率を出来るだけ小さくすることができる実リード電圧Va〜Vgの値をいう。なお、実リード電圧Va〜Vgの最適値は、ビットエラーの発生率を最小にするための値であればよく、メモリセルの分布が有する極小点のしきい値電圧に限らない。極小点の他の点のしきい値電圧の値が、実リード電圧Va〜Vgの最適値として使用されても構わない。
図5の(B)は、図5の(A)に示される分布が得られてからしばらくの間、メモリシステム1が使用された後に得られる、しきい値電圧の分布を示している。本図に示されるように、それぞれ異なるステートに対応する8つのローブは、図5の(A)に示される8つのローブとは形状及び位置が異なっている。8つのローブの裾野が重なり合って、1つの連続した分布が形成されている。このような分布が得られた場合、当該分布が有する7つの極小点を実リード電圧Va〜Vgとして設定すれば、ビットエラーの発生率を最小にすることが可能と考えられる。すなわち、図5の(B)の状態の分布における実リード電圧Va〜Vgの最適値は、Va_opt,Vb_opt,Vc_opt,Vd_opt,Ve_opt,Vf_opt及びVg_optである。
本実施形態では、メモリコントローラ200は、以下に説明するしきい値電圧の分布(ヒストグラム)と、推定関数(係数行列)とを用いることによって実リード電圧Va〜Vgを推定する。ここで、推定関数(係数行列)は、ヒストグラムと実リード電圧Va〜Vgとの関係を示すモデルである。
具体的には、メモリコントローラ200は、予め決められた1点以上の参照リード電圧Vr1〜Vr7を用いてリードを実行することによって、しきい値電圧に対するメモリセルの数を示すヒストグラムを生成(取得)する。換言すれば、メモリコントローラ200は、複数のメモリセルを複数の参照リード電圧を用いて読み出した結果に基づいて、しきい値電圧に対するメモリセル数を示すヒストグラムを生成する。一例として、メモリコントローラ200は、複数のメモリセルの、例えば各ワードライン、各ページ又は各ブロックについてヒストグラムを生成する。メモリコントローラ200は、生成されたヒストグラムをモデル(係数行列)に入力する。メモリコントローラ200は、ヒストグラムの入力に応じたモデル(係数行列)の出力を実リード電圧Va〜Vgの推定値として取得する。換言すれば、メモリコントローラ200は、取得したヒストグラムと係数行列とを乗じた結果を、実リード電圧Va〜Vgの推定値として取得する。また、メモリコントローラ200は、実リード電圧Va〜Vgの推定値を、データを判定するための実際のリード電圧、すなわち実リード電圧Va〜Vgの設定値として用いて、リードを実行する。換言すれば、メモリコントローラ200は、モデル(係数行列)から出力された実リード電圧Va〜Vgの推定値に基づいて、複数のメモリセルに格納されたデータを読み出す。
図5の(B)の例では、7点の参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7が予め設定されている。
ワード線に参照リード電圧Vri(ただしiは1から7までの整数)を印加した場合、当該ワード線に接続された複数のメモリセルのうち、しきい値電圧がVriより低いメモリセルは、オン状態となり、しきい値電圧がVriより高いメモリセルは、オフ状態となる。メモリセルがオン状態であるかオフ状態であるかは、周辺回路110が備えるセンスアンプによって判定される。
メモリコントローラ200は、周辺回路110に、対象のワード線に参照リード電圧Vr1〜Vr7を順次印加させて、参照リード電圧ごとに各メモリセルがオン状態であるかオフ状態であるかを判定させる。メモリコントローラ200は、参照リード電圧ごとに、対象のワード線に接続された複数のメモリセルのうちの、オン状態およびオフ状態のうちの予め決められた状態のメモリセルの数をカウントする。そして、メモリコントローラ200は、参照リード電圧ごとに得られたカウント値に基づいて、7つの参照リード電圧Vr1〜Vr7によって区切られた8つの区間をビンとし、メモリセルの数を度数とするヒストグラムを生成する。
例えば、参照リード電圧Vriが印加された場合のオン状態のメモリセルの数をCiと表記し、対象のワード線に接続されたメモリセルの数をCmtと表記すると、VrjとVr(j+1)とによって区切られた区間の度数は、C(j+1)−Cjの演算によって得ることができる。ただし、jは1から6までの整数である。Vr1より小さい区間の度数は、C1とされる。Vr7より大きい区間の度数は、Cmt−C7とされる。
図5の(C)は、上記の処理によって得られたヒストグラムを示す模式図である。
なお、参照リード電圧Vr1〜Vr7は、予め設定されている。参照リード電圧Vr1〜Vr7の設定方法は、特定の方法に限定されない。
例えば、7つの実リード電圧Va〜Vgのそれぞれの初期値が予め決められており、メモリコントローラ200は、各実リード電圧の初期値からの差分を用いて周辺回路110に各実リード電圧を設定する場合がある。そのような場合においては、7つの実リード電圧Va〜Vgの初期値が7つの参照リード電圧Vr1〜Vr7として使用されてもよい。
また、図5の例では、参照リード電圧の数は、実リード電圧の数と等しい。参照リード電圧の数は、実リード電圧の数と異なっていてもよい。例えば、参照リード電圧の数が3つであり、メモリコントローラ200は、当該3つの参照リード電圧を用いて4つのビンを有するヒストグラムを生成してもよい。
図6は、図1のメモリシステム1において実行される、推定器(係数行列)を用いて実リード電圧Va〜Vgを推定する推定処理の概要を模式的に示す図である。係数行列は、例えば、ヒストグラムの各書き込みレベルに対応する度数を要素とするベクトルとの積により、実リード電圧の推定値を算出するモデルである。例えばメモリセルがTLCであり、書き込みレベルが8個(Er,A,B,C,D,E,F,G)となる場合、係数行列は、8個の書き込みレベルに対応する8個の度数を要素とするベクトルから、7個の実リード電圧を推定するための8×7の行列である。図6は、メモリコントローラ200が、7個の参照リード電圧Vr1〜Vr7を用いて8個のビンを有するヒストグラムを生成した例を示す。メモリコントローラ200の推定器は、図6に示すように、ヒストグラムの8個のビン(書き込みレベル)に対応する度数を要素とするベクトルと、8×7の係数行列との積により、7個の実リード電圧Va〜Vgを推定する。
なお、参照リード電圧の個数は7個である必要はない。例えば8個以上の参照リード電圧を用いることにより、より高精度にヒストグラムを生成できる。また7個未満の参照リード電圧を用いることにより、処理をより高速化することができる。
なお、参照リード電圧及び係数行列は、ある誤り訂正符号の符号化方式が決定されれば、この符号化方式を適用したNANDメモリ100について例えばベンダー(メモリシステム1のベンダー、メモリコントローラ200のベンダー又はNANDメモリ100のベンダーなど)が製品を出荷する前に算出、すなわちオフライン学習することができる。すなわち、メモリコントローラ200は、例えば出荷前に算出されてNANDメモリ100などに記憶されたモデル情報206(係数行列)及び管理情報207(参照リード電圧)を、NANDメモリ100から読み出して利用することができる。読み出されたモデル情報206及び管理情報207は、図1に示すように、RAM202にロードされる。
しかしながら、製品の出荷前に係数行列(推定器)のパラメータが算出(学習)されている場合、すなわちオフライン学習の場合、製品の出荷時には想定しきれない状況や環境下にメモリシステム1がおかれた場合に推定器の推定精度が低下するおそれがある。そこで、本実施形態に係るメモリシステム1は、出荷後、すなわち実機環境下でも学習データを取得し、推定器のパラメータをオンライン学習により逐次更新する。
図7は、図1のメモリシステム1の機能構成の一例を示す図である。CPU203は、例えばRAM202にロードされたファームウェアプログラムを実行することによって、推定器210及び学習器220としての機能を実現する。図8は、図1のメモリシステム1において実行される、学習器220を用いて推定器210のパラメータを更新する更新処理の概要を模式的に示す図である。
ここで、図1の例では、モデル情報206(係数行列211)はRAM202に格納されている。例えば、モデル情報206は、メモリシステム1の電源断の前には、RAM202からNANDメモリ100に退避される。メモリシステム1の起動後には、NANDメモリ100からRAM202にロードされる。なお、モデル情報206は、NANDメモリ100に退避されなくてもよい。また、モデル情報206が格納される位置はRAM202に限定されず、メモリコントローラ200の外部に設けられたメモリに格納されることでもよい。
図7に示す例において、係数行列Pn−1は、更新前の係数行列Pを表現する。また、ベクトルhは、ヒストグラムの各書き込みレベル(Er,A,B,C,D,E,F,G)に対応する度数を要素とするベクトルである。ベクトルhnは、パラメータ更新の際のリード処理において得られたベクトルhである。また、ベクトルv^は、後述するリード処理において、図6に示すように、ベクトルhと係数行列Pとの積により得られる、7個の実リード電圧の推定値を要素とするベクトルである。ここで、ベクトルhと、ベクトルv^と、ベクトルvn^とは、それぞれ以下の式(1)、式(2)及び式(3)のように表現される。
また、図7において、ベクトルvnは、具体的な観測値の算出方法は後述するが、例えばリード処理で実行される軟判定読み出し(観測)で読み出されたデータに基づいて算出される、7個の実リード電圧の観測値を要素とするベクトルである。したがって、後述のリード処理における係数行列の更新(図9:S109参照)は、ベクトルvn^と、ベクトルvnとを含む一組の学習データが得られた状態で実行される処理である。
メモリコントローラ200は、このようにして一組の学習データが得られたとき、ベクトルvn^と、ベクトルvnとの誤差、すなわち図8に示すように、モデル(係数行列P)から出力された実リード電圧の推定値と実リード電圧の観測値との差分に基づいて、モデル(係数行列P)のパラメータ(各成分)を更新する。より詳細には、メモリコントローラ200は、実リード電圧の推定値と実リード電圧の観測値との差分が小さくなるように、係数行列Pを更新する。ここで、ベクトルvn^と、ベクトルvnとの誤差を示すベクトルenは、以下の式(4)のように表現される。
一例として、本実施形態に係る学習器220は、以下の式(5)に示す更新式を用いた係数適応制御により、係数行列Pを更新する。ここで、学習率μは、更新処理における更新の程度(強度)を示すパラメータである。学習率μの値としては、適度に小さい値が用いられる。
ここで、ベクトルhnの転置ベクトルと、誤差を示すベクトルenとの積を行列Qとする。このとき、更新式の右側2項目は、学習率μと行列Qとの積である。行列Qは、二乗誤差の係数行列Pについての微分の符号を反転したものに相当する。ここで、二乗誤差と、二乗誤差の係数行列Pについての微分とは、それぞれ以下の式(6)及び式(7)のように表現される。
二乗誤差(ロス関数)の係数行列Pのある成分に関する微分の値が正であることは、その成分を大きくするとロス関数が大きくなることを示す。つまり、ある成分に関する微分の値が正であるとき、その成分を小さくすれば、ロス関数が小さくなる。一方で、ある成分に関する微分の値が負であることは、その成分を大きくするとロス関数が小さくなることを示す。このように、上述の更新式は、これらの各成分に関する微分の値の正負と、ロス関数の増減との関係に基づいて規定されている。したがって、上述の更新式を用いて係数行列Pを更新することで、ロス関数(二乗誤差)を小さくすることができる。
以下、本実施形態に係るメモリシステム1の動作の一例について、図面を参照しつつ、より詳細に説明する。
図9は、図1のメモリシステム1において実行される、リード処理の一例を示すフローチャートである。図9は、任意のタイミングで実行される、1つのブロックに関するリード処理の流れを例示する。
まず、メモリコントローラ200は、例えばホスト2からのリードコマンドを受信(S101)したことを契機として、硬判定読み出しを実行する(S102)。硬判定読み出しでは、実リード電圧の設定値の電圧を用いてデータが読み出され、読み出されたデータに対し、例えばECC205により、硬判定復号が実行される。なお、硬判定復号は、CPU203などのプロセッサにより実行されてもよいし、プロセッサ及びECC205により実行されてもよい。
メモリコントローラ200は、S102の処理に続いて、硬判定読み出しにおいてECC205による復号が成功したか否かを判定する(S103)。復号が成功したとき(S103:Yes)、メモリコントローラ200は、ホスト2に読み出されたデータを転送(S111)し、当該1つのブロックに関するリード処理を終了する。
一方で、復号が失敗したとき(S103:No)、メモリコントローラ200は、リードリトライ処理(S104〜S108)を開始する。
リードリトライ処理において、メモリコントローラ200は、上述したように、ヒストグラムと係数行列とを用いることによって実リード電圧を推定する推定処理を実行する(S104)。推定処理については、後述する。CPU203は、推定処理により得られた実リード電圧の推定値を管理情報207に実リード電圧の設定値として記録する。その後、メモリコントローラ200は、管理情報207に記録された実リード電圧の設定値、すなわち推定処理で推定された実リード電圧を用いて、S102の処理と同様にして、硬判定読み出しを実行する(S105)。メモリコントローラ200は、S103の処理と同様にして、復号が成功したか否かを判定する(S106)。復号が成功したとき(S106:Yes)、メモリコントローラ200は、ホスト2に読み出されたデータを転送(S111)し、当該1つのブロックに関するリード処理を終了する。
一方で、復号が失敗したとき(S106:No)、メモリコントローラ200は、軟判定読み出しを実行する(S107)。軟判定読み出しは、例えばCPU203などのプロセッサにより実行されるが、ECC205により実行されてもよいし、プロセッサ及びECC205により実行されてもよい。上述の硬判定読み出しでは、しきい値分布を分ける境界に対応する1つの実リード電圧を印加することにより、当該境界よりメモリセルのしきい値電圧が高いか否かを判定する。これに対し、軟判定読み出しでは、判定対象の1つの境界に対して複数の実リード電圧で読み出しを実施することにより、当該境界に対する実リード電圧の観測値を算出する。
なお、実リード電圧の観測値を算出する方法(リード方式)としては、種々の方法が使用可能である。具体的には、例えば、シフトテーブルを用いたリード方式(以下、シフトテーブルリードという)や、シフトリード、トラッキングリード(Vth Trackingともいう)などが利用可能である。
シフトテーブルリードとは、各ページ種別(例えば、LOWER/MIDDLE/UPPERページ)に対して複数の実リード電圧セットが登録されたシフトテーブルを用意しておき、この複数の実リード電圧セットのそれぞれを順次使用してリード動作を実行することで、読み出しに成功する実リード電圧セットを特定するインデックスを特定するリード動作である。換言すれば、このリード動作は、複数の実リード電圧セットのそれぞれを順次、NANDメモリ100の複数のメモリセルのしきい値電圧分布と比較して実リード電圧セットを特定するリード動作である。
シフトリードとは、予め設定された読み出し電圧からシフトさせた電圧値を用いて行う読み出し動作である。シフトリードは、例えば、各しきい値電圧の分布に対応した予め設定された読み出し電圧を含めた探索領域を設けて、この探索領域内において読み出し電圧を一定量ずつ変化させ、各読み出し電圧ごとにNANDメモリ100に対して読み出し動作を実行し、読み出しデータのうち誤りビット数の最も少ない読み出し電圧に基づいて実リード電圧の観測値を決定する。
トラッキングリードとは、例えば、実リード電圧を所定の刻み幅でシフトしながらリード動作を複数回実行することで、該当ページに含まれる複数のメモリセルにプログラムされたしきい値電圧の分布のヒストグラムを生成し、生成したヒストグラムの谷の位置を実リード電圧として特定するリード動作である。
なお、トラッキングリードとしては、メモリコントローラ200側で行なうリード方式であっても、NANDメモリ100内部で行なうリード方式(On-Chip Tracking Readともいう)であってもよい。
メモリコントローラ200は、S107の処理に続いて、例えばS103及びS108の処理と同様にして、復号が成功したか否かを判定する(S108)。復号が失敗したとき(S108:No)、メモリコントローラ200は、ホスト2へリード失敗を通知(S110)し、当該1つのブロックに関するリード処理を終了する。
一方で、復号が成功したとき(S108:Yes)、メモリコントローラ200の学習器220は、後述するように、実リード電圧の観測値を用いて、推定器210のパラメータ、すなわち係数行列Pを更新する更新処理を実行する(S109)。更新処理については、後述する。更新処理の後、CPU203は、モデル情報206を更新する。また、CPU203は、軟判定読み出しにより得られた実リード電圧の観測値を管理情報207に実リード電圧の設定値として記録する。メモリコントローラ200は、次にNANDメモリ100に対してデータのリードを行う際には、管理情報207に記録された実リード電圧の設定値、すなわち軟判定読み出しにより得られた実リード電圧の観測値を使用する。その後、メモリコントローラ200は、ホスト2に読み出されたデータを転送(S111)し、当該1つのブロックに関するリード処理を終了する。
図10は、図9のリード処理における推定処理(S104)の一例を示すフローチャートである。メモリコントローラ200は、対象のワード線に対する参照リード電圧Vr1〜Vr7を用いた読み出しにより、参照リード電圧ごとに各メモリセルの状態を取得する(S201)。その後、メモリコントローラ200(例えばCPU203)は、参照リード電圧ごとの各メモリセルの状態に基づいて、ヒストグラムを生成する(S202)。メモリコントローラ200(例えばCPU203)は、生成されたヒストグラムを推定器210に入力(S203)し、入力されたヒストグラムに応じた推定器210の出力を取得(S204)する。メモリコントローラ200は、取得された推定器210の出力、すなわち実リード電圧の推定値を実リード電圧の設定値に設定する。
図11は、図9のリード処理における更新処理(S109)の一例を示すフローチャートである。メモリコントローラ200(例えばCPU203)は、ヒストグラムと、実リード電圧の推定値とを取得(S301)するとともに、実リード電圧の観測値を取得(S302)する。ここで、取得とは、例えばRAM202に一時的に保持された値を読み出すことを含む。その後、メモリコントローラ200は、上述の更新式に従い、実リード電圧の推定値と、実リード電圧の観測値との差分(ベクトルen)を計算(S303)するとともに、ヒストグラム(ベクトルh)と差分(ベクトルen)とを用いて、推定器210のパラメータ、すなわち係数行列211の成分を更新する(S304)。
なお、実施形態では、硬判定読み出しにおいて復号が失敗したときに実リード電圧の推定値が算出される場合を例示したが、これに限らない。実リード電圧の推定値の算出タイミングは、リード処理時に限られず、任意のタイミングで実行されてもよい。つまり、硬判定読み出しにおいては、リード処理とは別のタイミングで算出された推定値が使用されてもよい。
なお、実施形態では、軟判定読み出しにおいて実リード電圧の観測値が算出される場合を例示したが、これに限らない。実リード電圧の観測値の算出タイミングは、軟判定読み出し時に限られず、任意のタイミングで実行されてもよい。
なお、実施形態では、硬判定読み出しにおける復号に失敗した後の軟判定読み出しにおける復号に成功したときに更新処理を実行するメモリコントローラ200を例示したが、これに限らない。例えば、メモリコントローラ200は、硬判定読み出しにおける復号に成功したとき(S106:Yes)、更新処理(S109)を実行しても構わない。しかしながら、硬判定復号に成功するごとに更新処理を実行すると、更新処理の頻度が高くなる。硬判定復号に成功していることから、計算コストなどの観点から、更新処理の頻度は高くないことが好ましい。このため、一例として、メモリコントローラ200は、硬判定読み出しにおける復号に成功したとき(S106:Yes)のうち、その硬判定読み出しにおける訂正ビット数が所定の閾値以上であるとき、更新処理(S109)を実行する。硬判定読み出しにおける訂正ビット数は、例えばECC205から出力される。なお、硬判定読み出しにおける訂正ビット数が所定の閾値以上であるか否かは、エラー訂正(復号)の前後のデコーダの出力に基づいて判定されてもよい。ここで、所定の閾値は、例えば予め設定されて管理情報207などに記憶されているとする。所定の閾値としては、例えば硬判定復号により復号可能なビット数の8割などの値が適宜利用可能である。また、メモリコントローラ200は、実リード電圧の観測値を算出するために追加で読み出しを行う。なお、実リード電圧の観測値は、上述したように、如何なる方法により算出されてもよい。
なお、実施形態に係るリード処理は、ホストリード時に限らず、バックグラウンド処理として実行されるパトロールリード(Patrol read)時に実行されてもよい。ここで、ホストリードは、上述のように、ホスト2からの要求(リードコマンド)に応じたリード動作を言う。一方で、パトロールリードは、メモリシステム1において自発的に、例えば予め設定された周期や時点で実施されるリード動作を言う。
このように、本実施形態に係るメモリコントローラ200は、一組の学習データを用いて、ロス関数が小さくなるように推定器210の係数行列P(モデルのパラメータ)を更新する。一組の学習データは、実リード電圧の観測値と、ヒストグラムとを含む。ここで、実リード電圧の観測値は、書き込み値が判明している状態で得られた実リード電圧の最適値を言う。また、ヒストグラムは、リード処理において実リード電圧を推定する推定処理において使用される。より具体的には、本実施形態に係るメモリコントローラ200は、ヒストグラムの入力に応じて推定器210から出力された実リード電圧の推定値と、実リード電圧の観測値との差分とに基づいて、推定器210のパラメータを更新する。
この構成によれば、実機環境下で学習データを取得し、推定器210のパラメータをオンライン学習により逐次更新することができる。このため、製品の出荷時には想定しきれない状況や環境下にメモリシステム1がおかれた場合であっても、あるいは、製造のバラつきなどに起因して個々のメモリシステム1の特性が異なっていても、その状況や環境、特性に応じてパラメータを調整することができる。したがって、実施形態に係る技術によれば、リード電圧の推定の精度を向上させたメモリシステム1を提供することができる。実施形態に係る技術によれば、学習データを実機環境下で取得できることから、製品出荷前などの学習データの準備期間を短縮することもできる。
(第2の実施形態)
別の一例として、本実施形態に係る学習器220は、以下の式(8)に示す更新式を用いた係数適応制御により、係数行列Pを更新する。ここで、正則化パラメータαは、更新処理における係数行列Pの極端な変化,すなわち各成分の更新に伴う振幅(振動)を抑制するためのパラメータである。正則化パラメータαの値としては、適度に小さい値が用いられる。ここで、正則化パラメータを含む正則化行列Iαは、以下の式(9)のように表現される。
別の一例として、本実施形態に係る学習器220は、以下の式(8)に示す更新式を用いた係数適応制御により、係数行列Pを更新する。ここで、正則化パラメータαは、更新処理における係数行列Pの極端な変化,すなわち各成分の更新に伴う振幅(振動)を抑制するためのパラメータである。正則化パラメータαの値としては、適度に小さい値が用いられる。ここで、正則化パラメータを含む正則化行列Iαは、以下の式(9)のように表現される。
このように、本実施形態に係る学習器220は、係数行列Pを更新する際に、現在の係数に比例した値を減算することにより係数行列の正則化を行う。この構成によれば、各更新回において実リード電圧の観測値に引きずられ過ぎることなく、すなわち係数行列Pの各成分が極端に変化することを抑制できるため、推定結果を安定化させ、リード電圧の推定の精度をさらに向上させることができる。
なお、本実施形態は、1つ目のリードレベルに関して正則化する更新式を例示するが、これに限らない。正則化は、いずれのリードレベルを対象としてもよい。また、正則化は、複数のリードレベルを対象としてもよい。
(第3の実施形態)
別の一例として、本実施形態に係る学習器220は、以下の式(10)に示す更新式を用いた係数適応制御により、係数行列Pを更新する。ここで、更新式における重み付け行列Knは、以下の式(9)のように表現される。
別の一例として、本実施形態に係る学習器220は、以下の式(10)に示す更新式を用いた係数適応制御により、係数行列Pを更新する。ここで、更新式における重み付け行列Knは、以下の式(9)のように表現される。
ここで、式(11)に示す重み付け行列Knの対角成分の各要素は、各リードレベル(書き込みレベル)に対応するビットエラー数に比例した値を有する。具体的には、1〜7行目の各対角成分は、それぞれ、A〜Gの各リードレベルに対応する。一例として、ビットエラー数が大きいとき、重み付け行列Knの対角成分の各要素は、大きい値となる。一方で、推定結果が安定しているとき、すなわち推定器210から出力された実リード電圧の推定値と、実リード電圧の観測値との差分が小さいとき、重み付け行列Knの対角成分の各要素は、小さい値となる。
このように、本実施形態に係るメモリコントローラ200(学習器220)は、複数のメモリセルに格納されたデータを読み出したときの各リードレベルに対応するビットエラー数に応じた重み付けを行うことにより、推定器210のモデル(係数行列211)のパラメータを更新する。この構成によれば、実際のビットエラー数に応じて推定器210のパラメータを調整することができるため、リード電圧の推定の精度をさらに向上させることができる。
なお、本実施形態は、各リードレベルに対応するビットエラー数に比例した値を対角成分の各要素として有する重み付け行列Knを例示したが、これに限らない。重み付け行列Knは、更新したいリードレベルの列だけ抜き出されて、すなわち他の列がマスクされた状態で係数行列Pの更新に用いられてもよい。この構成によれば、少ないデータで必要な要素だけ更新することができる。
なお、本実施形態に係る更新式において、学習率μは、重み付け行列Knと同様に、リードレベルごとに用意されていてもよい。このとき、係数行列Pの成分ごとに用意された複数の学習率μを成分とする行列は、重み付け行列Knとともに用いられてもよいし、重み付け行列Knに代えて用いられてもよい。
(第4の実施形態)
別の一例として、本実施形態に係る推定器210は、機械学習モデルを用いて実リード電圧を推定する。図12は、実施形態に係る推定器210(ニューラルネットワーク212)の構成の一例を示す模式的な図である。ニューラルネットワーク212は、1つの隠れ層(中間層)を有する多層パーセプトロン(Multi-Layer Perceptron : MLP)の構成を有している。
別の一例として、本実施形態に係る推定器210は、機械学習モデルを用いて実リード電圧を推定する。図12は、実施形態に係る推定器210(ニューラルネットワーク212)の構成の一例を示す模式的な図である。ニューラルネットワーク212は、1つの隠れ層(中間層)を有する多層パーセプトロン(Multi-Layer Perceptron : MLP)の構成を有している。
なお、本実施形態に係る機械学習モデルは、複数の関数が合成され、パラメータ付きの合成関数であり、複数の調整可能な関数及びパラメータの組合せにより定義されるとする。本実施形態に係る機械学習モデルは、複数の調整可能な関数及びパラメータの組合せにより定義される如何なるパラメータ付きの合成関数であってもよいが、少なくとも多層のネットワークモデルであるとする。なお、本実施形態に係る機械学習モデルは、畳み込みニューラルネットワーク(CNN)モデルとして構成されてもよいし、全結合のネットワークモデルであってもよい。以下、本実施形態に係る機械学習モデルを単にニューラルネットワークと記載する。
なお、本実施形態に係るメモリシステム1は、CPU203に加えて、さらにGPU(Graphics Processing Unit)を備えていてもよい。つまり、ニューラルネットワークを用いた実リード電圧の推論や、ニューラルネットワークのパラメータの更新は、GPUを用いて実行されても構わない。
また、ニューラルネットワークは、CPU203やGPUに代えて、専用のハードウェア回路によって実現することも可能である。例えば、メモリシステム1は、並列処理可能な専用演算器又はDSPを備える。例えば、レジスタ、乗算器及び加算器を備えるプロセッサユニットの群によってニューラルネットワークが構成されてもよい。各プロセッサユニットが、ニューラルネットワークの各ノードと同様の接続関係で相互に接続され、各プロセッサユニットのレジスタには、学習済みの重みが格納されることで、プロセッサユニットの群をニューラルネットワークとして機能させることが可能である。
図12の例では、入力層に入力されるデータは、ヒストグラムの8値と、1つのWL番号rとを含むベクトルxである。入力データのベクトルxは、以下の式(12)のように表現される。ここで、入力データのベクトルxは、上述の実施形態に係るベクトルhに相当する。
また、入力層は、ヒストグラムが入力されるノードとして、ヒストグラムが備えるビンの数に対応した数(図12の例では8個)のノードを備える。また、入力層は、WL番号が入力されるノードとして、ヒストグラムに対応するワード線WLの数に対応した数(ここでは1個)のノードを備える。ここで、入力層は、入力データをそのまま出力するとする。入力層z(1)は、以下の式(13)のように表現される。
また、中間層は、1以上のノード(図12の例では15個)によって構成される。中間層では、各ノードは、バイアス及び前の層のノードからの各入力値に対して重みを乗じ、重みが乗じられた後の各値の総和に対して活性化関数を適用し、活性化関数の適用によって得られた値を出力する。各重みは、例えば製品を出荷する前のオフライン学習により予め決定されている。つまり、ニューラルネットワーク212は、ヒストグラム及びワード線WLの番号を含む入力データ(ベクトルx)を実リード電圧Va〜Vgにマップするように予め学習されている。中間層z(2)は、9×15の係数行列W(2)と、15要素のバイアス項ベクトルb(2)とを用いて、以下の式(14)及び式(15)のように表現される。なお、活性化関数f(・)は、例えばReLU(Rectified Linear Unit)関数を使用する。ここで、係数行列W(2)は、上述の実施形態に係る係数行列Pに相当する。
また、出力層は、実リード電圧Va〜Vgの数に対応した数(図12の例では7個)のノードを備える。出力層z(3)は、15×7の係数行列W(3)と、7要素のバイアス項ベクトルb(3)とを用いて、以下の式(16)及び式(17)のように表現される。ここで、係数行列W(3)は、上述の実施形態に係る係数行列Pに相当する。なお、図12の例では、出力層において活性化関数が使用されていないが、これに限らない。出力層において、何らかの活性化関数が使用されても構わない。
また、出力層から出力されるデータは、7要素のベクトルyであり、以下の式(18)及び式(19)のように表現される。ここで、出力データのベクトルyは、実リード電圧の推定値であり、上述の実施形態に係るベクトルv^に相当する。
したがって、本実施形態に係る推定器210による推定処理(S104)は、以下の式(20)の関係式により表現することができる。つまり、メモリコントローラ200は、ヒストグラムと、ワード線WLの番号との入力に応じて、実リード電圧の推定値を出力するようにパラメータが学習されたニューラルネットワーク212(推定器210)に、S202の処理で生成されたヒストグラムとともに対応するワード線WLの番号(ベクトルx)を入力し、入力に応じたニューラルネットワーク212の出力(ベクトルy)を取得(S204)することにより、実リード電圧を推定する。
なお、ヒストグラムの生成(S201,S202)に使用される参照リード電圧Vr1〜Vr7は、ニューラルネットワーク212の学習時に入力側の学習用データとして使用されるヒストグラムを得るために使用された参照リード電圧に等しい。また、この参照リード電圧を用いた読み出し(S201)が実行されたワード線WLの番号は、管理情報207に記憶されている。
なお、上述したニューラルネットワーク212の構成は、上述の実施形態に係る係数行列211と同様に、モデル情報206に記録されている。モデル情報206は、例えば、複数のノードの定義と、ノード間の接続関係の定義と、バイアスとを含む。モデル情報206では、各ノードには、学習済みの重みが関連付けられている。また、モデル情報206では、一部の層の各ノードには、活性化関数が関連付けられている。
次に、本実施形態に係る更新処理(S109)について説明する。以下の説明では、任意の時間(取得時点)の任意のブロックに関する1つのワード線WLについて、一組の学習データ(xn,dn)が得られた後の流れを主に説明する。ここで、ベクトルxnは、入力側の学習用データであり、任意の時間(取得時点)で任意のブロックに関する1つのワード線WLからの読み出しにより得られたベクトルxである。また、ベクトルdnは、出力側の学習データであり、入力側の学習データに対応するワード線WLの実リード電圧の観測値である。ここで、ベクトルdnは、実リード電圧の観測値であり、上述の実施形態に係るベクトルvに相当する。
メモリコントローラ200は、確率的勾配降下法(Stochastic Gradient Decent:SGD)を用いて、以下の式(21)、式(22)、式(23)及び式(24)に示す更新式を用いた係数適応制御により、ニューラルネットワーク212の各層のパラメータを更新する。以下に示す更新式において、係数εは、更新の程度を示す係数であり、上述の実施形態に係る学習率μに相当する。係数εの値としては、適度に小さい値が用いられる。
この更新式は、上述の実施形態と同様に、ロス関数に関して、微分の値が正の成分が小さくなり、微分の値が負の成分が大きくなるように規定されている。つまり、各層のパラメータの更新は、各成分に関する微分の値の正負と、ロス関数の増減との関係に基づいて規定される。具体的には、メモリコントローラ200は、ロス関数に対する各層の誤差逆伝播を利用して、ニューラルネットワーク212のパラメータの勾配計算を実行する。ここで、本実施形態に係る更新処理では、一組の学習データ(xn,dn)に対応するロス関数を以下の式(25)のように設定する。なお、ロス関数の重み付け行列Knの対角成分は、上述の実施形態と同様に、各リードレベルに対応するビットエラー数である。
1×7のデルタδn (3)と、15×7の微分∂Wn (3)と、1×7の微分∂bn (3)とは、それぞれ以下の式(26)、式(27)及び式(28)のように表現される。ここで、デルタδn (3)は、順伝播における入力側の学習データ(ベクトルxn)の入力に応じたニューラルネットワーク212の出力であり、誤差逆伝播における出力層z(3)の入力である。また、微分∂Wn (3)は、出力層z(3)の係数についてのロス関数であり、順伝播における出力層z(3)への入力、すなわち順伝播における中間層z(2)の出力と、デルタδn (3)とを用いて算出される。また、微分∂bn (3)は、出力層z(3)のバイアスbn (3)についてのロス関数であり、デルタδn (3)である。
また、1×15のデルタδn (2)と、9×15の微分∂Wn (2)と、1×15の微分∂bn (2)とは、それぞれ以下の式(29)、式(30)及び式(31)のように表現される。ここで、デルタδn (2)は、誤差逆伝播におけるデルタδn (3)に基づいて重み係数が更新された出力層z(3)からのデルタδn (3)の入力に応じた出力であり、誤差逆伝播における中間層z(2)の入力である。また、微分∂Wn (2)は、中間層z(2)の係数についてのロス関数であり、順伝播における中間層z(2)への入力、すなわち順伝播における入力層z(1)の出力と、デルタδn (2)とを用いて算出される。また、微分∂bn (2)は、中間層z(2)のバイアスbn (2)についてのロス関数であり、デルタδn (2)である。
つまり、上述の更新式における微分∂Wn (3)と、微分∂Wn (2)と、微分∂bn (3)と、微分∂bn (2)とは、それぞれ以下の式(32)、式(33)、式(34)及び式(35)のように表現される。
このように、本実施形態に係るメモリコントローラ200の推定器210は、ニューラルネットワーク212をモデル(推定関数)として使用して、実リード電圧を推定する。また、学習器220は、一組の学習データ(xn,dn)を用いて推定器210のパラメータを逐次更新する。具体的には、学習器220は、差分(yn−dn)に基づく誤差逆伝播法を用いて推定器210のニューラルネットワーク212(モデル)のパラメータを更新する。この構成によれば、上述の実施形態と同様の効果を得ることができる。また、入力データにワード線WL番号、すなわちメモリセルの位置情報が含まれるため、メモリセルの位置ごとの特性の違いを考慮した推論が可能となる。
(第5の実施形態)
なお、第4の実施形態では、任意の時間(取得時点)の任意のブロックに関する1つのワード線WLについて、一組の学習データ(xn,dn)が得られた場合の流れを例示したが、これに限らない。学習器220による更新処理(S109)は、ミニバッチごとに実行されてもよい。
なお、第4の実施形態では、任意の時間(取得時点)の任意のブロックに関する1つのワード線WLについて、一組の学習データ(xn,dn)が得られた場合の流れを例示したが、これに限らない。学習器220による更新処理(S109)は、ミニバッチごとに実行されてもよい。
一例として、以下の式(36)に示すN個の学習データに対応するロス関数が、第4の実施形態と同様に設定されているとする。N個の学習データ(複数組の学習データ)の各々は、任意のワード線WLに関する、時間(取得時点)及びブロックのうちの少なくとも一方が互いに異なる。
メモリコントローラ200は、N個の学習データについて、第4の実施形態と同様にして、それぞれ微分を計算する。また、メモリコントローラ200(学習器220)は、N通りの微分値の平均値を用いて、推定器210のパラメータを更新する。平均値は、逐次計算されてもよいし、ミニバッチごとに計算されてもよい。このとき、更新式は、以下の式(37)及び式(38)のように表現される。
この構成によれば、各学習データのバラつきの影響を低減できるため、推定器210のパラメータの更新処理を安定化させることができる。
なお、本実施形態では、第4の実施形態との組合せを例示したが、これに限らない。第1〜第3の実施形態に係る更新処理において、複数組の学習データ(xn,dn)(n=1,2,・・・,N)のうちの任意の数の組の学習データが1回の更新処理に使用されても構わない。具体的には、学習器220は、上述と同様にして、複数組の学習データを用いて得られた更新量の平均値を用いて推定器210の係数行列211(モデル)のパラメータを更新する。この構成によれば、第1〜第3の実施形態に係る更新処理を安定化させることができる。
(第6の実施形態)
なお、第4の実施形態及び第5の実施形態に係る更新処理(S109)において、ニューラルネットワーク212のパラメータの更新の程度は、層ごとに互いに異なっていてもよいし、一部の層だけ他の複数の層と異なっていてもよい。したがって、係数εの値は、各層について調整することもできる。なお、係数εの値を調整する層は、更新回ごとに異なっていてもよいし、固定されていてもよい。この構成によれば、推定器210のパラメータの更新処理における収束性を向上させ、収束までに要する時間を低減することができる。
なお、第4の実施形態及び第5の実施形態に係る更新処理(S109)において、ニューラルネットワーク212のパラメータの更新の程度は、層ごとに互いに異なっていてもよいし、一部の層だけ他の複数の層と異なっていてもよい。したがって、係数εの値は、各層について調整することもできる。なお、係数εの値を調整する層は、更新回ごとに異なっていてもよいし、固定されていてもよい。この構成によれば、推定器210のパラメータの更新処理における収束性を向上させ、収束までに要する時間を低減することができる。
(第7の実施形態)
さらに、第4〜第6の実施形態に係る更新処理(S109)において、ニューラルネットワーク212のパラメータは、一部の層だけ更新されても構わない。換言すれば、学習器220は、ニューラルネットワーク212が有する複数の層のうちの少なくとも1つの層のパラメータを更新する。一例として、パラメータを更新しない層に関して、係数εの値を0(ゼロ)に設定する。なお、上述の実施形態では、入力データをそのまま出力する入力層z(1)を例示しているため、この少なくとも1つの更新される層は、入力層z(1)を含まない。換言すれば、更新される層は、ニューラルネットワーク212が有する複数の層のうちの少なくとも1つの重み係数が設定された層である。なお、パラメータを更新する層は、更新回ごとに異なっていてもよいし、固定されていてもよい。この構成によれば、推定器210のパラメータの更新処理における収束性を向上させ、収束までに要する時間を低減することができる。
さらに、第4〜第6の実施形態に係る更新処理(S109)において、ニューラルネットワーク212のパラメータは、一部の層だけ更新されても構わない。換言すれば、学習器220は、ニューラルネットワーク212が有する複数の層のうちの少なくとも1つの層のパラメータを更新する。一例として、パラメータを更新しない層に関して、係数εの値を0(ゼロ)に設定する。なお、上述の実施形態では、入力データをそのまま出力する入力層z(1)を例示しているため、この少なくとも1つの更新される層は、入力層z(1)を含まない。換言すれば、更新される層は、ニューラルネットワーク212が有する複数の層のうちの少なくとも1つの重み係数が設定された層である。なお、パラメータを更新する層は、更新回ごとに異なっていてもよいし、固定されていてもよい。この構成によれば、推定器210のパラメータの更新処理における収束性を向上させ、収束までに要する時間を低減することができる。
(第8の実施形態)
なお、上述の各実施形態に係る更新処理(S109)において、更新前の推定器210のパラメータが保持されても構わない。具体的には、メモリコントローラ200は、推定器210として、パラメータを更新しない推定器と、パラメータを更新する推定器とを実現することもできる。
なお、上述の各実施形態に係る更新処理(S109)において、更新前の推定器210のパラメータが保持されても構わない。具体的には、メモリコントローラ200は、推定器210として、パラメータを更新しない推定器と、パラメータを更新する推定器とを実現することもできる。
一例として、メモリコントローラ200は、パラメータを更新しない推定器を用いて、図9のS101〜S109の処理を実行する。そして、軟判定読み出し(S107)における復号が失敗したとき(S108:No)、メモリコントローラ200は、パラメータを更新する推定器を用いて、図9のS101〜S109の処理を実行する。その後、軟判定読み出し(S107)における復号に成功したとき(S108:Yes)、メモリコントローラ200は、パラメータを更新する推定器に関する更新処理(S109)を実行する。
なお、パラメータを更新しない推定器と、パラメータを更新する推定器とを用いる順序はこれに限らない。パラメータを更新する推定器を用いたS101〜S109の処理において軟判定読み出し(S107)における復号が失敗したとき(S108:No)、パラメータを更新しない推定器を用いたS101〜S109の処理が実行されてもよい。
この構成によれば、オフライン学習時の推定器210の性能を担保しつつ、オンライン学習により推定器210のパラメータを実機環境に合わせて逐次更新することができる。
(第9の実施形態)
なお、上述の各実施形態において、更新処理(S109)は、各チップの消去単位や書き込み単位を品質によって分類したクラスごとに実行されてもよい。つまり、本実施形態に係る推定器210は、品質によって分類されたクラスごとにパラメータが決定(学習)された複数の推定器を有する。
なお、上述の各実施形態において、更新処理(S109)は、各チップの消去単位や書き込み単位を品質によって分類したクラスごとに実行されてもよい。つまり、本実施形態に係る推定器210は、品質によって分類されたクラスごとにパラメータが決定(学習)された複数の推定器を有する。
メモリコントローラ200は、クラスごとに推定に用いる推定器210を選択し、推定処理(S104)を実行する。また、メモリコントローラ200の学習器220は、クラスごとに各推定器210に関する更新処理(S109)を実行する。
ここで、品質は、メモリセルのしきい値電圧を変化させ得る種々の要因に関する。メモリセルのしきい値電圧は、例えば、当該メモリセルへのアクセス、当該メモリセルへのプログラム完了時からの経過時間や温度履歴、当該メモリセルに隣接するメモリセルへのアクセス、当該メモリセルの疲弊状態などに応じて変化し得る。つまり、品質とは、一例として、プログラム/イレースサイクルの実行回数である。これにより、プログラム/イレースサイクルの実行回数に起因するしきい値電圧の変化を考慮した推定が可能となる。また、品質とは、別の一例として、リードの実行回数である。これにより、リードディスターブを考慮した推定が可能となる。また、品質とは、別の一例として、プログラムが実行されてからの経過時間やリードレイテンシ、温度などのメモリシステム1の実使用の状況やストレス条件である。これにより、実機環境を考慮した推定が可能となる。なお、これらの品質を示す各種の情報は、例えば、ブロックBLKなどの所定の単位領域ごとに管理情報207に記録されている。なお、単位領域はブロックBLKに限定されない。単位領域はワード線WLやページなどであってもよい。
なお、上述の各実施形態に係る技術は、任意に組み合わせ可能である。
一例として、第8の実施形態と第9の実施形態とを組み合わせる場合、第8の実施形態に係る推定器210のパラメータを更新する推定器は、品質により分類されたクラスごとの複数の推定器を有する。また、図9のS101〜S109の処理は、品質により分類されたクラスごとの複数の推定器のうちの少なくとも2つに関して実行されても構わない。
一例として、第4〜第8の実施形態のうちの少なくとも1つと、第9の実施形態とを組み合わせる場合、品質により分類されたクラスを特定するための情報が、ニューラルネットワーク212への入力データに含まれていても構わない。この場合、少なくとも1つのモデル(推定器210)のパラメータがモデル情報206として記憶される。
なお、上述の各実施形態に係る学習器220は、独立した学習装置として構成することもできる。つまり、学習器220としての機能は、例えばホスト2などのメモリコントローラ200の外部のコンピュータにより実現されても構わない。また、学習器220としての機能は、メモリコントローラ200の外部に設けられた専用のハードウェア回路によって実現することも可能である。
以上説明した少なくとも1つの実施形態によれば、リード電圧の推定の精度を向上させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、100 NANDメモリ、101 メモリチップ、110 周辺回路、111 メモリセルアレイ、200 メモリコントローラ、202 RAM、203 CPU、205 ECC、206 モデル情報、207 管理情報、210 推定器、220 学習器。
Claims (13)
- 複数のメモリセルを有する不揮発性メモリと、
前記複数のメモリセルから複数の参照リード電圧を用いて読み出したデータに基づいて、しきい値電圧に対するメモリセル数を示すヒストグラムを生成し、前記ヒストグラムを、前記複数のメモリセルに格納されたデータを読み出すための複数の実リード電圧の推定値を出力するモデルに入力することで前記推定値を算出し、
前記複数のメモリセルに対する複数の実リード電圧の観測値を算出し、
前記推定値と前記観測値とに基づいて前記モデルのパラメータを更新する
メモリコントローラと
を具備するメモリシステム。 - 前記メモリコントローラは、シフトリード又はトラッキングリードを使用して、前記複数の実リード電圧の観測値を算出する、請求項1に記載のメモリシステム。
- 前記メモリコントローラは、前記推定値を使用して前記複数のメモリセルからデータを読み出し、前記読み出したデータの復号に失敗した場合に、前記観測値を算出する、請求項1又は請求項2に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のメモリセルに格納されたデータを読み出したときの復号結果を用いて、前記観測値を算出する、請求項1から請求項3のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記推定値と前記観測値との差分の二乗誤差に基づいて前記モデルのパラメータを更新する、請求項1から請求項4のうちのいずれか1項に記載のメモリシステム。
- 前記モデルは、前記ヒストグラムと前記観測値との関係を示す係数行列であり、
前記メモリコントローラは、前記係数行列の正則化を行うことにより前記モデルのパラメータを更新する、
請求項5に記載のメモリシステム。 - 前記モデルは、前記ヒストグラムの入力に応じて、前記推定値を出力するようにパラメータが学習されたニューラルネットワークであり、
前記メモリコントローラは、前記推定値と前記観測値との差分に基づく誤差逆伝播法を用いて前記モデルのパラメータを更新する、
請求項1から請求項4のうちのいずれか1項に記載のメモリシステム。 - 前記メモリコントローラは、前記複数のメモリセルに格納されたデータを読み出したときの各リード電圧に対応するビットエラー数に応じた重み付けを行うことにより前記モデルのパラメータを更新する、請求項1から請求項7のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、複数の学習データを用いて算出された、前記モデルのパラメータの複数の更新量の平均値を用いて前記モデルのパラメータを更新し、
前記複数の学習データの各々は、共通のワードライン、かつ、取得時点及びブロックのうちの少なくとも一方が互いに異なる、前記推定値と前記観測値との組である、
請求項1から請求項8のうちのいずれか1項に記載のメモリシステム。 - 前記メモリコントローラは、更新前の前記モデルのパラメータと、更新後の前記モデルのパラメータとのうちの少なくとも一方を保持する、請求項1から請求項9のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のメモリセルを所定の単位領域ごとに分類したクラスごとに前記モデルのパラメータを保持する、請求項1から請求項10のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のメモリセルに格納されたデータの前記モデルから出力された前記推定値を用いた硬判定読み出しにおいて復号に失敗したとき、かつ、前記複数のメモリセルに格納されたデータの軟判定読み出しにおいて復号に成功したとき、前記軟判定読み出しにおける復号結果を用いて前記モデルのパラメータを更新する、請求項1から請求項11のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のメモリセルに格納されたデータの前記モデルから出力された前記推定値を用いた硬判定読み出しにおいて復号に成功したとき、かつ、訂正ビット数が所定の閾値以上であるとき、前記観測値を算出し、前記硬判定読み出しにおける復号結果と、算出された前記観測値とを用いて前記モデルのパラメータを更新する、請求項1から請求項12のうちのいずれか1項に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020051262A JP2021149995A (ja) | 2020-03-23 | 2020-03-23 | メモリシステム |
US17/184,120 US11342040B2 (en) | 2020-03-23 | 2021-02-24 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020051262A JP2021149995A (ja) | 2020-03-23 | 2020-03-23 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021149995A true JP2021149995A (ja) | 2021-09-27 |
Family
ID=77746946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020051262A Pending JP2021149995A (ja) | 2020-03-23 | 2020-03-23 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11342040B2 (ja) |
JP (1) | JP2021149995A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117608501A (zh) * | 2024-01-23 | 2024-02-27 | 合肥兆芯电子有限公司 | 电压调整方法、存储器存储装置及存储器控制电路单元 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230116566A (ko) * | 2022-01-28 | 2023-08-04 | 에스케이하이닉스 주식회사 | 메모리 장치의 읽기 기준 전압 결정 장치 및 그 동작 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5361603B2 (ja) | 2009-08-13 | 2013-12-04 | 株式会社東芝 | コントローラ |
US9069659B1 (en) | 2013-01-03 | 2015-06-30 | Densbits Technologies Ltd. | Read threshold determination using reference read threshold |
US9190159B2 (en) | 2013-03-15 | 2015-11-17 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
JP2019160355A (ja) | 2018-03-07 | 2019-09-19 | 東芝メモリ株式会社 | メモリシステム、読み出し方法、プログラムおよびメモリコントローラ |
KR102634700B1 (ko) * | 2018-08-14 | 2024-02-13 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 |
JP2020144958A (ja) | 2019-03-05 | 2020-09-10 | キオクシア株式会社 | メモリシステムおよび方法 |
JP2021044034A (ja) | 2019-09-09 | 2021-03-18 | キオクシア株式会社 | メモリシステム |
KR20210082875A (ko) * | 2019-12-26 | 2021-07-06 | 삼성전자주식회사 | 머신 러닝을 이용한 비휘발성 메모리 장치의 동작 제어 방법 및 스토리지 시스템 |
-
2020
- 2020-03-23 JP JP2020051262A patent/JP2021149995A/ja active Pending
-
2021
- 2021-02-24 US US17/184,120 patent/US11342040B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117608501A (zh) * | 2024-01-23 | 2024-02-27 | 合肥兆芯电子有限公司 | 电压调整方法、存储器存储装置及存储器控制电路单元 |
CN117608501B (zh) * | 2024-01-23 | 2024-05-03 | 合肥兆芯电子有限公司 | 电压调整方法、存储器存储装置及存储器控制电路单元 |
Also Published As
Publication number | Publication date |
---|---|
US11342040B2 (en) | 2022-05-24 |
US20210295942A1 (en) | 2021-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020144958A (ja) | メモリシステムおよび方法 | |
TWI596616B (zh) | 胞元間干擾的消除 | |
JP5693615B2 (ja) | 隣接状態情報に基づく温度補償がなされる不揮発性記憶装置 | |
KR20220043243A (ko) | 동적 프로그래밍 교정을 이용하는 메모리 디바이스 | |
JP2019149219A (ja) | メモリシステム | |
US11221769B2 (en) | Performing noise cancellation on a memory device using a neural network | |
KR20110062543A (ko) | 플래시 메모리 장치 및 그것의 프로그램 방법 | |
US9690697B2 (en) | Memory controller, storage device and memory control method | |
US20170068591A1 (en) | Efficient search for optimal read thresholds in flash memory | |
US10497453B2 (en) | Memory device | |
US11205498B1 (en) | Error detection and correction using machine learning | |
US10777283B2 (en) | Memory system | |
KR20210082875A (ko) | 머신 러닝을 이용한 비휘발성 메모리 장치의 동작 제어 방법 및 스토리지 시스템 | |
JP2021111826A (ja) | 復号装置及び復号方法 | |
US11915766B2 (en) | Automatic program voltage selection network | |
US11342040B2 (en) | Memory system | |
EP3944152A2 (en) | Mobile electronic device and methods for programming data to and reading data from a memory device | |
US20200194073A1 (en) | Nonvolatile memory device and operation method thereof | |
JP2021047695A (ja) | メモリシステム | |
CN112837738A (zh) | 控制非易失性存储器件的操作的方法、用于执行该方法的数据转换器以及存储系统 | |
JP2021044034A (ja) | メモリシステム | |
JP2021047963A (ja) | メモリシステム | |
JP2022050898A (ja) | メモリシステムおよびメモリシステムの制御方法 | |
CN112242157B (zh) | 数据读电压的确定方法、参数确定方法、装置及设备 | |
JP2024024383A (ja) | メモリシステム |