JP2021044034A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2021044034A JP2021044034A JP2019163969A JP2019163969A JP2021044034A JP 2021044034 A JP2021044034 A JP 2021044034A JP 2019163969 A JP2019163969 A JP 2019163969A JP 2019163969 A JP2019163969 A JP 2019163969A JP 2021044034 A JP2021044034 A JP 2021044034A
- Authority
- JP
- Japan
- Prior art keywords
- estimation
- actual read
- memory
- estimation function
- read
- 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
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/10—Programming or data input circuits
- G11C16/12—Programming voltage switching 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
- 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/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
-
- 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/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- 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/06—Acceleration testing
-
- 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
- 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)
- 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の取得処理と、第1のヒストグラムと第1の推定関数とに基づいて実リード電圧を推定する第1の推定処理と、第1の推定処理によって取得された実リード電圧を用いてデータをリードする第1の実リード処理と、を実行する。メモリコントローラは、第1の実リード処理によってデータを取得できない場合、第1の推定関数と異なる第2の推定関数を用いて実リード電圧を推定する第2の推定処理および第2の推定処理によって取得された実リード電圧を用いてデータをリードする第2の実リード処理を実行する。【選択図】図8
Description
本実施形態は、メモリシステムに関する。
不揮発性のメモリセルを有するメモリシステムが知られている。そのようなメモリシステムにおいては、リード処理においては、メモリセルのしきい値電圧とリード電圧との比較に基づいて、そのメモリセルに保持されているデータが判定される。
メモリセルのしきい値電圧は、種々の要因によって変化し得る。メモリシステムは、メモリセルのしきい値電圧が変化したとしてもそのメモリセルから正しいデータを得ることができるように、リード電圧を変更することが可能に構成されている。
一つの実施形態は、利便性が高いメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、複数のメモリセルと、コントローラと、を備える。前記複数のメモリセルは、データが格納される。前記コントローラは、第1の参照リード処理と、第1の取得処理と、第1の推定処理と、第1の実リード処理と、を実行する。前記第1の参照リード処理は、1点以上の第1の参照リード電圧を用いて前記複数のメモリセルに対してリードする処理である。前記第1の取得処理は、前記第1の参照リード処理の結果に基づいてしきい値電圧に対するメモリセルの数を示す第1のヒストグラムを取得する処理である。前記第1の推定処理は、前記第1のヒストグラムと第1の推定関数とに基づいて1点以上の実リード電圧を推定する処理である。前記第1の実リード処理は、前記第1の推定処理によって取得された前記1点以上の実リード電圧を用いて前記データをリードする処理である。前記第1の実リード処理によって前記データを取得できない場合、前記メモリコントローラは、第2の推定処理および第2の実リード処理を実行する。前記第2の推定処理は、前記第1の推定関数と異なる第2の推定関数を用いて前記1点以上の実リード電圧を推定する処理である。前記第2の実リード処理は、前記第2の推定処理によって取得された前記1点以上の実リード電圧を用いて前記データをリードする処理である。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す模式的な図である。メモリシステム1は、ホスト(Host)2と接続可能に構成されている。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。
図1は、第1の実施形態のメモリシステムの構成例を示す模式的な図である。メモリシステム1は、ホスト(Host)2と接続可能に構成されている。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。
メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。
メモリシステム1は、NAND型のフラッシュメモリ(NANDメモリ)100と、ホスト2とNANDメモリ100との間のデータ転送を実行するメモリコントローラ200と、を備えている。
メモリコントローラ200は、ホストインタフェース(Host I/F)201と、RAM(Random Access Memory)202と、CPU(Central Processing Unit)203と、NANDC204と、ECC(Error Correction Circuit)205と、を備える。
メモリコントローラ200は、例えばSoC(System-On-a-Chip)として構成され得る。メモリコントローラ200は、複数のチップによって構成されてもよい。例えば、RAM202は、メモリコントローラ200とは異なるチップとして構成されてもよい。また、メモリコントローラ200は、CPU203に代えて、FPGA(field-programmable gate array)やASIC(application specific integrated circuit)を備えていてもよい。即ち、メモリコントローラ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は、ファームウェアプログラムを実行することによって、上記した各種構成要素の制御を実現する。
ECC205は、NANDメモリ100に送られるデータを符号化する。符号化は、誤り訂正符号による符号化である。ECC205は、NANDメモリ100から送られてきたデータに対し、復号化を実行し、それによって当該データに含まれるビットエラーの検出と訂正とを実施する。
ECC205が使用する符号化の方式は、特定の方式に限定されない。一例では、符号化の方式として、LDPC(Low Density Parity Check)が採用され得る。
NANDメモリ100は、1以上のメモリチップ(Chip)101を含む。ここでは一例として、NANDメモリ100は4つのメモリチップ101を含む。
図2は、第1の実施形態のメモリチップ101の構成例を示す模式的な図である。図示するようにメモリチップ101は、周辺回路110およびメモリセルアレイ111を備える。
メモリセルアレイ111は、各々が複数の不揮発性メモリセルトランジスタの集合である複数のブロックBLK(BLK0、BLK1、…)を備える。ブロックBLKの各々は、それぞれがワード線およびビット線に関連付けられたメモリセルトランジスタの集合である複数のストリングユニットSU(SU0、SU1、…)を備える。ストリングユニットSUの各々は、メモリセルトランジスタが直列接続された複数のNANDストリング114を備える。なお、ストリングユニットSU内のNANDストリング114の数は任意である。
周辺回路110は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路110は、メモリコントローラ200からコマンドを受信すると、メモリセルアレイ111に対し、プログラム処理、リード処理、およびイレース処理のうちの当該コマンドに対応した処理を実行する。
図3は、第1の実施形態のブロック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に共通接続される。
ストリングユニット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は、第1の実施形態のブロックBLKの一部領域の断面図である。本図に示されるように、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は、第1の実施形態のメモリセルのしきい値電圧の分布の例を示す模式的な図である。図5に含まれる3つのグラフにおいて、縦軸は、メモリセルの数(ビットカウント)を示しており、横軸は、しきい値電圧(Vth)を示している。なお、ここでは一例として、各メモリセルにデータを保持する方式として、TLC(Triple Level Cell)と呼ばれる方式が適用されていることとしている。TLCの方式によれば、各メモリセルは、3ビットのデータを保持することができる。
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”に対応する。このように、各メモリセルは、そのしきい値電圧が属するステートに対応したデータを保持することができる。
しきい値電圧は、イレース処理によって“Er”ステートまで低下せしめられる。また、しきい値電圧は、プログラム処理によって、“Er”ステートに維持されるか、または“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステート、の何れかに至るまで、上昇せしめられる。
隣接する2つのステートの境界には、データの判定のための電圧が設定される。この電圧を、後述する参照リード電圧(reference read voltage)と区別するために、実リード電圧(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は、複数点の実リード電圧を用いてメモリセルが属するステートを特定し、特定したステートをデータにデコードする。
ここで、メモリセルのしきい値電圧は、種々の要因によって変化し得る。しきい値電圧のローブの一部または全部がステート間の境界にある実リード電圧を越えた場合、データの誤判定が発生する。即ち、プログラム処理時と異なった値が読み出される。プログラム処理時と異なった値を、ビットエラーと表記する。
メモリコントローラ200は、ビットエラーに対し、ECC205によるエラー訂正と、実リード電圧のシフトと、で対処することができる。
例えば、メモリコントローラ200は、NANDメモリ100から取得したデータに対してECC205を用いたエラー訂正を実行する。エラー訂正が失敗した場合、メモリコントローラ200は、実リード電圧Va〜Vgの最適値を推定し、推定によって得られた実リード電圧Va〜Vgの最適値を実リード電圧Va〜Vgの新たな設定値として設定してリード処理をリトライする。
実リード電圧Va〜Vgの最適値は、ビットエラーの発生率を出来るだけ小さくすることができる実リード電圧Va〜Vgの値をいう。
図5の(B)は、図5の(A)に示される分布が得られてからしばらくの間、メモリシステム1が使用された後に得られる、しきい値電圧の分布を示している。本図に示されるように、それぞれ異なるステートに対応する8つのローブは、図5の(A)に示される8つのローブとは形状および位置が異なっている。8つのローブの裾野が重なり合って、1つの連続した分布が形成されている。このような分布が得られた場合、当該分布が有する7つの極小点を実リード電圧Va〜Vgとして設定すれば、ビットエラーの発生率を最小にすることが可能と考えられる。即ち、Va_opt,Vb_opt,Vc_opt,Vd_opt,Ve_opt,Vf_opt,Vg_optが、図5の(B)の状態の分布における実リード電圧Va〜Vgの最適値に該当する。
なお、実リード電圧Va〜Vgの最適値は、必ずしも当該分布が有する極小点、例えばビットエラーの発生率を最小にするための値、でなくてもよい。
第1の実施形態および以降に説明する実施形態では、メモリコントローラ200は、予め決められた1点以上の参照リード電圧を用いてリードを実行することによって、しきい値電圧に対するメモリセルの数を示すヒストグラムを取得する。そして、メモリコントローラ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,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7を順次印加させて、参照リード電圧毎に各メモリセルがオン状態であるかオフ状態であるかを判定させる。この処理は、例えば、メモリコントローラ200が、対象のワード線を備えるメモリチップ101に、Vr1〜Vr7の間でそれぞれ異なる参照リード電圧を指定した7セットのリードコマンドを送信することで実現できる。つまり、リード電圧を変えながら7回のリード処理が実行される。メモリコントローラ200は、メモリチップ101から、各メモリセルがオン状態であるかオフ状態であるかを示す参照リードの結果を参照リード電圧毎に取得する。そして、メモリコントローラ200は、対象のワード線に接続された複数のメモリセルのうちの、オン状態およびオフ状態のうちの予め決められた状態のメモリセルの数をカウントする。そして、メモリコントローラ200は、参照リード電圧毎に得られたカウント値に基づいて、参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,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つのビンを有するヒストグラムを生成し、当該ヒストグラムに基づいて7つの実リード電圧Va〜Vgを取得してもよい。
本明細書では、ヒストグラムを生成するために実行される、1点以上の参照リード電圧(例えば参照リード電圧Vr1〜Vr7)を用いた1回以上のリード処理のセットを、参照リード処理と表記する。
図6は、第1の実施形態の推定関数の構成の一例を説明ための模式的な図である。本図の例では、推定関数300は、8つの行(row)と7つの列(column)とによって構成された行列である。推定関数300の行の数は、参照リード処理によって得られるヒストグラム(ヒストグラム400)を構成するビンの数と等しい。推定関数300の列の数は、推定される実リード電圧の数と等しい。メモリコントローラ200は、ヒストグラム400の各ビンの値(度数)を要素として有するベクトルの右側から推定関数300を乗算することによって、7点の要素を有するベクトルを演算する。当該ベクトルを構成する7点の要素は、実リード電圧Va〜Vgの最適値の推定値に該当する。
推定関数300は、下記のようにして生成される。
例えば、メモリチップ101の1以上のサンプル品などから、ヒストグラムと、7点の実リード電圧Va〜Vgの最適値のセットと、の対が、メモリチップ101のストレス条件を種々に変更しながら、多数、取得される。例えば、メモリチップ101の1以上のサンプル品が試験装置に接続され、試験装置は、メモリシステム1の実際の使用を模擬した試験を実施する。つまり、試験装置は、各サンプル品に対して実際の使用で想定される種々のコマンドを種々のパターンで送信する。
試験では、アクセスのパターンなどを異ならせることで、各サンプル品は、プログラム/イレースサイクル(P/Eサイクル)の実行回数やリード処理の実行回数などストレス条件の点で異なる状態にされる。なお、プログラム/イレースサイクルは、プログラム処理とイレース処理との対である。試験装置は、各状態においてヒストグラムを取得する。
つまり、試験装置は、周辺回路110に、対象のワード線に参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7を順次印加させて、参照リード電圧毎に各メモリセルがオン状態であるかオフ状態であるかを判定させる。試験装置は、参照リード電圧毎に、対象のワード線に接続された複数のメモリセルのうちの、オン状態およびオフ状態のうちの予め決められた状態のメモリセルの数をカウントする。そして、試験装置は、参照リード電圧毎に得られたカウント値に基づいて、参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7によって区切られた8つの区間をビンとし、メモリセルの数を度数とするヒストグラムを生成する。
試験装置は、サンプル品からヒストグラムを取得する際に、実リード電圧の最適値を取得する。実リード電圧の最適値の取得方法は、特定の方法に限定されない。実リード電圧の最適値は、例えば、ディストリビューションリードを実行することによって得ることができる。ディストリビューションリードとは、ワード線に印加される電圧を所定の刻み幅ごとにシフトさせながら当該ワード線に接続された、オン状態のメモリセルの数またはオフ状態のメモリセルの数を観測することによって、例えば図5の(B)に示されるようなメモリセルのしきい値電圧の分布を測定する動作をいう。試験装置は、ディストリビューションリードによって得られたメモリセルのしきい値電圧の分布から、7つの極小点を特定し、特定された7つの極小点を実リード電圧の最適値として取得する。なお、実リード電圧の最適値の取得方法はこれに限定されない。
試験装置は、ヒストグラムと、ヒストグラムを取得した際に取得した実リード電圧の最適値のセットと、を出力する。
上記のようにしてヒストグラムと実リード電圧の最適値のセットとの対が集められ、集められた多数の対を用いることで、ヒストグラムと実リード電圧の最適値のセットとを対応付ける推定関数300が生成される。つまり、推定関数300は、ヒストグラムを説明変数とし、実リード電圧の最適値のセットを目的変数とする回帰モデルである。
ところで、しきい値電圧を変化させるストレスとしては、多くの種類があり、かつ各ストレスの度合いにも幅がある。ストレスの種類およびストレスの度合いを、ストレス条件と表記している。広範囲のストレス条件下での実リード電圧の最適値の推定を、1つの推定関数で実現しようとすると、実リード電圧の最適値の推定の精度が劣化する。
実リード電圧の最適値の推定の精度の劣化を抑制するために、第1の実施形態によれば、それぞれ異なるストレス条件下で使用されることが想定された複数の推定関数が設けられている。
図7は、第1の実施形態の複数の推定関数のそれぞれが設定される複数のストレス条件の一例を説明するための模式的な図である。
プログラム/イレースサイクルの実行や、リード処理の実行は、メモリセルを疲弊させる。メモリセルの疲弊が進行するに従って、しきい値電圧が変動し易くなる。よって、図7では、ストレスの種類の例として、プログラム/イレースサイクルの実行回数と、リード処理の実行回数との2種類を挙げている。本図におけるリード処理は、典型的には実リード処理である。しかしながら、本図におけるリード処理は、参照リード処理を含んでもよい。
図7によれば、一例として、範囲311と、範囲311よりも強いストレス条件を示す範囲312とが規定されている。そして、範囲311をカバーするストレス条件において実リード電圧の最適値を推定するための推定関数300(第1の推定関数301)と、範囲312をカバーするストレス条件において実リード電圧の最適値を推定するための推定関数300(第2の推定関数302)と、が設けられている。
例えば、第1の推定関数301は、範囲311に含まれるストレス条件下で得られた、ヒストグラムと、実リード電圧の最適値のセットと、の対に基づいて生成されている。よって、第1の推定関数301によれば、メモリセルが範囲311に含まれるストレス条件下にある場合に、ヒストグラムから実リード電圧の最適値を精度よく推定することができる。
また、例えば、第2の推定関数302は、範囲312に含まれるストレス条件下で得られた、ヒストグラムと、実リード電圧の最適値のセットと、の対に基づいて生成されている。よって、第2の推定関数302によれば、メモリセルが範囲312に含まれるストレス条件下にある場合に、ヒストグラムから実リード電圧の最適値を精度よく推定することができる。
第1の推定関数301および第2の推定関数302は、次のようにして使用される。即ち、メモリコントローラ200は、まず、ヒストグラムを取得し、当該ヒストグラムと第1の推定関数301とを用いた推定を行う。そして、メモリコントローラ200は、第1の推定関数301を用いた推定によって得られた実リード電圧を用いて実リード処理を行う。
第1の推定関数301を用いた推定によって得られた実リード電圧を用いた実リード処理によって、データが取得できなかった場合、つまり、当該実リード処理によって読み出されたデータのエラー訂正が失敗した場合、対象のメモリセルが受けているストレス条件は、範囲311から逸脱している可能性がある。そこで、メモリコントローラ200は、第2の推定関数302を用いた推定を行う。そして、メモリコントローラ200は、第2の推定関数302を用いた推定によって得られた実リード電圧を用いて実リード処理を再び実行する。対象のメモリセルが受けているストレス条件が範囲312に含まれていれば、第2の推定関数302を用いた推定によって得られた実リード電圧を用いた実リード処理によって正しいデータを得ることができる可能性が高い。
このように、メモリセルが受けているストレス条件が範囲311を逸脱した場合であっても、データを正しく読み出すことが可能となる。また、カバーするストレス条件の範囲が異なる複数の推定関数300が用いられることから、1つの推定関数のみが使用される場合に比べて、実リード電圧の最適値の推定の精度の悪化を抑制することが可能である。
さらに、第1の実施形態では、第1の推定関数301と、第2の推定関数302とは、共通のヒストグラムが入力可能に構成されている。例えば、第1の推定関数301と、第2の推定関数302とは、同一の数の行を備えている。メモリコントローラ200は、いちどヒストグラムを取得すれば、そのヒストグラムを、第1の推定関数301による推定と、第2の推定関数302による推定と、の何れにも供することができる。これによって、参照リード処理を実行する回数を低減することが可能とされる。
なお、第1の推定関数301および第2の推定関数302は、例えば、メモリシステム1の出荷前などに不揮発性メモリ(例えばNANDメモリ100)に格納される。そして、メモリシステム1が起動された際に、RAM202にロードされる。そして、メモリコントローラ200は、RAM202にロードされた第1の推定関数301および第2の推定関数302を使用することができる。
なお、第1の実施形態では、第1の推定関数301と第2の推定関数302とは、図6の推定関数300と同様の構成を有するものとして説明する。つまり、第1の実施形態では、第1の推定関数301と第2の推定関数302とは、8個の行と7個の列からなる行列であって、8個のビンを有するヒストグラムから7個の実リード電圧Va〜Vgの最適値を推定することが可能に構成されていることとする。
続いて、第1の実施形態のメモリシステム1の動作を説明する。
図8は、第1の実施形態のメモリシステム1の動作の一例を説明するためのフローチャートである。
メモリシステム1がホスト2からリード要求を受信すると(S101)、メモリコントローラ200は、リード要求によって要求されたデータをNANDメモリ100から取得するための実リード処理を実行する(S102)。S102の実リード処理で使用される実リード電圧の値は、何らかの方法で予め設定されている。例えば、実リード電圧の初期値が使用される。または、同一の位置(ワードラインまたはブロックなど)に対して最後に実リード処理が実行された際に使用された値と同じ値が、実リード電圧として使用される。
メモリコントローラ200は、実リード処理によってNANDメモリ100から取得されたデータに対し、ECC205によって、エラー訂正を実行する(S103)。エラー訂正が成功した場合(S103:pass)、メモリコントローラ200は、上記データをホスト2に送信して(S104)、動作を終了する。
エラー訂正が失敗した場合(S103:fail)、メモリコントローラ200は、参照リード電圧Vr1〜Vr7を用いた参照リード処理を実行する(S105)。具体的には、メモリコントローラ200は、Vr1〜Vr7のうちのそれぞれ異なる値をリード電圧として指定して、合計7回のリード処理をメモリチップ101に実行させる。そして、メモリコントローラ200は、7回のリード処理によって得られた7個のデータを、例えばRAM202に格納する。これら7個のデータを、参照リード処理の結果、と表記する。
続いて、メモリコントローラ200(例えばCPU203)は、参照リード処理の結果に基づいて8個のビンを有するヒストグラムを生成する(S106)。
そして、メモリコントローラ200(例えばCPU203)は、第1の推定関数301を用いて実リード電圧Va〜Vgを取得する(S107)。第1の推定関数301は、例えば図6の推定関数300と同様に、8つの行と7つの列とを有する行列として構成されている。CPU203は、S106の処理によって得られたヒストグラムの各ビンの度数を要素とするベクトルに、第1の推定関数301を乗算することによって、実リード電圧Va〜Vgのそれぞれの最適値の推定値を要素とするベクトルを得ることができる。
続いて、メモリコントローラ200は、S107の処理によって得られた実リード電圧Va〜Vgを用いて実リード処理を再び実行する(S108)。そして、S108の処理によってNANDメモリ100から取得されたデータに対し、S103の処理と同様に、エラー訂正が実行される(S109)。
エラー訂正が成功した場合(S109:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S109:fail)、メモリコントローラ200(例えばCPU203)は、第2の推定関数302を用いて実リード電圧Va〜Vgを取得する(S110)。第2の推定関数302は、第1の推定関数301と同様の構成を備えている。ただし、第2の推定関数302は、第1の推定関数301と異なるストレス条件の範囲から得られたヒストグラムと実リード電圧の最適値のセットとの対に基づいて生成されている。S110の処理では、CPU203は、S106の処理によって得られたヒストグラムの各ビンの度数を要素とするベクトルに、第2の推定関数302を乗算することによって、実リード電圧Va〜Vgのそれぞれの最適値の推定値を要素とするベクトルを得ることができる。
続いて、メモリコントローラ200は、S110の処理によって得られた実リード電圧Va〜Vgを用いて実リード処理を再び実行する(S111)。そして、S111の処理によってNANDメモリ100から取得されたデータに対し、S103の処理と同様に、エラー訂正が実行される(S112)。
エラー訂正が成功した場合(S112:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S112:fail)、メモリコントローラ200は、所定の処理を実行して(S113)、動作を終了する。
所定の処理は、任意に設定され得る。例えば、所定の処理は、ホスト2にエラー訂正が不可能である旨を通知する処理であってもよい。
または、所定の処理は、S103、S109、またはS112と異なる方式でエラー訂正を行うことであってもよい。例えば、LDPCは、硬判定および軟判定をサポートする。硬判定は、軟判定よりも誤り訂正の強度が低いが、高速に誤り訂正を実行することができる。軟判定は、硬判定よりも誤り訂正の強度が高いが、誤り訂正に要する時間が大きい。例えば、ECC205の符号化方式としてLDPCが採用される場合、ECC205は、S103、S109、およびS112においては、硬判定を実行する。そして、S112の処理において誤り訂正に失敗した場合、つまり硬判定の誤り訂正が失敗した場合、メモリコントローラ200は、所定の処理として軟判定を実行してもよい。
なお、以上では、メモリコントローラ200は、2つの推定関数301、302を使用することができるとして説明した。第1の実施形態および以降の実施形態では、メモリコントローラ200は、3以上の推定関数を使用可能に構成されてもよい。第1の実施形態では、例えば、S112の誤り訂正が失敗した場合、メモリコントローラ200は、第1の推定関数301および第2の推定関数302の何れとも異なる別の推定関数を用いた推定を行ってもよい。
また、以上では、各メモリセルにデータを保持する方式として、TLCが適用されている例について説明した。各推定関数301、302の列の数を変更することで、第1の実施形態および以降の実施形態は、各メモリセルに2ビット以上のデータを保持する任意の方式が適用されたメモリシステムに適用され得る。
例えば、各メモリセルにデータを保持する方式として、QLC(Quad Level Cell)と呼ばれる、各メモリセルに4ビットのデータを保持する方式がある。QLCによれば、16個のステートのそれぞれを特定するために、15点の実リード電圧が使用される。よって、例えば、各推定関数301、302は、15個の列が具備されることで、15点の実リード電圧を推定できるように構成される。なお、参照リード電圧の数は、実リード電圧の数(つまり15点)と等しくてもよいし、等しくなくてもよい。
また、以上では、実リード電圧の推定のための一連の処理(例えばS105〜S113の処理)は、ホスト2からのリード要求を処理する際に実行された。実リード電圧の推定の契機は、ホスト2からのリード要求を処理することに限定されない。
例えば、メモリコントローラ200は、ガベージコレクション、ウェアレベリング、またはリフレッシュなどを実行することができる。これらの処理は、NANDメモリ100に対するリード処理(実リード処理)を含む。メモリコントローラ200は、ガベージコレクション、ウェアレベリング、またはリフレッシュなどに含まれる実リード処理を実行して、当該実リード処理によって得られたデータのエラー訂正が失敗したことを契機として、実リード電圧の推定のための一連の処理(例えばS105〜S113の処理)を実行することが可能に構成されてもよい。
あるいは、メモリコントローラ200は、例えばホスト2からのアクセス要求が途絶えたタイミングなどにS105〜S113の処理を自発的に実行することで、データを正しく読むことが可能な実リード電圧を取得して記憶し、ホスト2からのリード要求を受信した場合に、当該記憶した実リード電圧を用いて実リード処理を実行することが可能に構成されてもよい。
また、以上では、第1の推定関数301は、範囲311のストレス条件をカバーし、第2の推定関数302は、範囲312のストレス条件をカバーする、として説明した。各推定関数301、302がカバーする範囲はこれに限定されない。第1の推定関数301がカバーする範囲と第2の推定関数302がカバーする範囲とが一部で重複していてもよい。
このように、第1の実施形態によれば、メモリコントローラ200は、1点以上の参照リード電圧を用いて参照リード処理を実行し(例えばS105)、当該参照リード処理の結果に基づいてしきい値電圧に対するメモリセルの数を示すヒストグラムを取得し(例えばS106)、当該ヒストグラムと第1の推定関数301とに基づいて1点以上の実リード電圧を推定し(S107)、当該1点以上の実リード電圧を用いて実リード処理を実行する(S108)。当該実リード処理によってデータを取得できない場合(S109:fail)、メモリコントローラ200は、第1の推定関数301と異なる第2の推定関数302を用いて1点以上の実リード電圧を推定し(S110)、当該1点以上の実リード電圧を用いて実リード処理を実行する(S111)。
よって、広範囲のストレス条件下で、実リード電圧の最適値を高い精度で推定することが可能である。つまり、利便性が向上する。
また、第1の実施形態では、第1の推定関数301を用いた推定と、第2の推定関数302を用いた推定と、の両方で、同一のヒストグラムが使用される。
よって、いちどヒストグラムを取得すれば、もう一度ヒストグラムを取得する必要なく第2の推定関数302を用いた推定を行うことが可能であるので、リード要求の処理に要するトータルの時間を抑制することが可能である。
(第2の実施形態)
第1の実施形態では、第1の推定関数301と第2の推定関数302とは同一の構成を有する。つまり、第1の推定関数301と第2の推定関数302とは、8個のビンを有するヒストグラムから7点の実リード電圧Va〜Vgを取得できるように、8個の行と7個の列とを備えた行列として構成されている。第1の推定関数301と第2の推定関数302とは、必ずしも互いに同じ構成を備えていなくてもよい。第2の実施形態では、第1の推定関数301と異なる構成を有する第2の推定関数302を用いた場合の1つの例について説明する。
第1の実施形態では、第1の推定関数301と第2の推定関数302とは同一の構成を有する。つまり、第1の推定関数301と第2の推定関数302とは、8個のビンを有するヒストグラムから7点の実リード電圧Va〜Vgを取得できるように、8個の行と7個の列とを備えた行列として構成されている。第1の推定関数301と第2の推定関数302とは、必ずしも互いに同じ構成を備えていなくてもよい。第2の実施形態では、第1の推定関数301と異なる構成を有する第2の推定関数302を用いた場合の1つの例について説明する。
第1の推定関数301は、第1の実施形態と同様に、8個のビンを有するヒストグラムから7点の実リード電圧Va〜Vgを取得できるように構成されている。つまり、第1の推定関数301は、8個の行と7個の列とを備えた行列である。
これに対し、第2の推定関数302は、8個のビンを有するヒストグラムから7点の実リード電圧Va〜Vgの一部を取得できるように構成されている。
各メモリセルが2ビット以上のデータを保持することができる方式では、複数点の実リード電圧のうちの最小の実リード電圧と最大の実リード電圧は、それら以外の実リード電圧に比べてより大きく変動する傾向がある。よって、複数点の実リード電圧のうちの最小の実リード電圧と最大の実リード電圧のみをより精度よく推定できれば、データを正しく読み出すことができる確率が向上する。
第2の実施形態では、第2の推定関数302は、7点の実リード電圧Va〜Vgのうちの最小値であるVaの最適値の推定値と、7点の実リード電圧Va〜Vgのうちの最大値であるVgの最適値の推定値とを取得できるように構成される。つまり、例えば、第2の推定関数302は、8個の行と2個の列とを備えた行列である。
第2の推定関数302は、例えば、第1の推定関数301と異なる範囲のストレス条件をカバーするように構成されている。例えば、第2の推定関数302は、範囲312に含まれるストレス条件下で得られた、ヒストグラムと、実リード電圧の最適値のセットと、の対に基づいて生成されている。
メモリコントローラ200は、第2の推定関数302を用いて実リード電圧VaおよびVgを推定すると、第1の推定関数301を用いることで得られた実リード電圧Va〜VgのうちのVb〜Vfと、第2の推定関数302を用いることで得られた実リード電圧VaおよびVgと、を用いて実リード処理を実行する。以降、第2の推定関数302を用いることで得られた実リード電圧Va、Vgの最適値の推定値を、Va’、Vg’と表記する。
図9は、第2の実施形態のメモリシステム1の動作の一例を説明するためのフローチャートである。なお、第1の実施形態と同じ処理には、第1の実施形態と同じステップ番号を付して、詳細な説明を省略する。
まず、第1の実施形態と同様に、S101〜S109の処理が実行される。そして、S109のエラー訂正が失敗した場合(S109:fail)、メモリコントローラ200(例えばCPU203)は、第2の推定関数302を用いて実リード電圧Va’、Vg’を取得する(S201)。
そして、メモリコントローラ200は、S107の処理によって得られた実リード電圧Va〜VgのうちのVb〜Vfと、S201の処理によって得られた実リード電圧Va’、Vg’と、を用いて実リード処理を再び実行する(S202)。そして、S202の処理によってNANDメモリ100から取得されたデータに対し、エラー訂正が実行される(S112)。
エラー訂正が成功した場合(S112:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S112:fail)、メモリコントローラ200は、S113の処理を実行して、動作を終了する。
このように、メモリコントローラ200は、第2の推定関数302を用いた推定では、一部の実リード電圧のみを推定するように構成されてもよい。
なお、以上の説明では、第2の推定関数302は、7点の実リード電圧Va〜Vgのうちの最小値であるVaと最大値であるVgとを取得できるように構成されるとされた。第2の推定関数302によって取得できる実リード電圧の最適値の推定値は以上述べた例に限定されない。第2の推定関数302は、1または3以上の実リード電圧の最適値の推定値が取得できるように構成されてもよい。また、第2の推定関数302は、複数点の実リード電圧のうちの最大値および最小値と異なる任意の実リード電圧の最適値の推定値を得ることが可能に構成されてもよい。
(第3の実施形態)
メモリセルが受けたストレスの度合いが大きい場合、参照リード処理によって得られるヒストグラムに、メモリセルが大きなストレスを受けたことを示す特徴が表れる場合がある。例えば、メモリセルが大きなストレスを受けて、しきい値電圧が変動しやすくなっている場合、全ステートのしきい値電圧の分布が一方向(正方向あるいは負方向の何れか)に一律に大きく変化することで度数の分布が同方向に大きく偏ったヒストグラムが得られることがある。
メモリセルが受けたストレスの度合いが大きい場合、参照リード処理によって得られるヒストグラムに、メモリセルが大きなストレスを受けたことを示す特徴が表れる場合がある。例えば、メモリセルが大きなストレスを受けて、しきい値電圧が変動しやすくなっている場合、全ステートのしきい値電圧の分布が一方向(正方向あるいは負方向の何れか)に一律に大きく変化することで度数の分布が同方向に大きく偏ったヒストグラムが得られることがある。
度数の分布が一方向に大きく偏ったヒストグラムが得られるような、メモリセルが大きなストレスを受けたことが推定されるような状況においては、第1の推定関数301よりも、より厳しいストレス条件での使用を想定して生成された第2の推定関数302を用いたほうが、エラー訂正が成功する確率が高くなると考えられる。
第3の実施形態によれば、メモリコントローラ200は、第1の推定関数301による推定と、第1の推定関数301による推定結果を用いた実リード処理と、を、ヒストグラムに基づいてスキップできるように構成されている。
図10は、第3の実施形態のメモリシステム1の動作の一例を説明するためのフローチャートである。なお、第1の実施形態と同じ処理には、第1の実施形態と同じステップ番号を付して、詳細な説明を省略する。
まず、第1の実施形態と同様に、S101〜S106の処理が実行される。S106の処理によってヒストグラムが得られると、メモリコントローラ200(例えばCPU203)は、第1の推定関数301を用いた推定をスキップするか否かを、ヒストグラムに基づいて判定する(S301)。S301の判定の方法は、特定の方法に限定されない。
一例では、CPU203は、ヒストグラムの全ビンの度数の積和演算を行う。積和演算によって得られる値は、しきい値電圧の分布の一方向への偏りの度合いを示す。よって、CPU203は、積和演算によって得られる値をS301の判定の指標として使用する。
例えば、しきい値電圧の分布が正方向または負方向に著しく偏っていることによって、上記指標が所定の上限値を超えるか、または所定の下限値を下回る場合がある。そのような場合、メモリセルが大きなストレスを受けたことが推定されるため、第1の推定関数301によって得られる実リード電圧を用いた実リード処理を行ったとしても、エラー訂正が成功する確率が低いと考えられる。よって、CPU203は、第1の推定関数301を用いた推定をスキップする、と判定する。
逆に、上記指標が所定の上限値と所定の下限値との間に収まっている場合には、メモリセルが受けたストレスは大きくはないと推定されるため、CPU203は、第1の推定関数301を用いた推定をスキップしない、と判定する。
なお、以上に挙げた判定方法は一例である。CPU203は、任意の方法でS301の判定を実行することができる。
第1の推定関数301を用いた推定をスキップすると判定された場合(S301:Yes)、第1の推定関数を用いて実リード電圧Va〜Vgを取得する処理(S107)、S107の処理によって得られた実リード電圧Va〜Vgを用いた実リード処理(S108)、および当該実リード処理によって得られたデータに対するエラー訂正の処理(S109)、がスキップされて、第2の推定関数302を用いて実リード電圧Va〜Vgを取得する処理が実行される(S110)。その後、S111〜S113の処理が実行される。
第1の推定関数301を用いた推定をスキップしないと判定された場合(S301:No)、S107〜S113の処理が実行される。
このように、メモリコントローラ200は、第1の推定関数301を用いた実リード電圧を推定する処理(例えばS107)および当該実リード電圧を用いた実リード処理(例えばS108)をスキップして第2の推定関数302を用いた推定(例えばS110)を実行するか否かを、ヒストグラムに基づいて判定することができる。
よって、第1の推定関数301よりも第2の推定関数302を用いたほうがエラー訂正が成功する確率が高くなると推定されるような状況では、第1の推定関数301に関する各種処理(S107〜S109)をスキップすることが可能となる。これによって、リード要求の処理に要するトータルの時間を抑制することが可能である。
なお、メモリコントローラ200は、3以上の推定関数を使用できるように構成されている場合には、3以上の推定関数のうちの任意の推定関数に関する処理の直前までの処理をヒストグラムに基づいてスキップできるように構成されてもよい。
(第4の実施形態)
第3の実施形態で述べたように、ヒストグラムには、ストレス条件にかかる特徴が表れ得る。よって、複数の推定関数のうちから推定に使用する推定関数をヒストグラムに基づいて選択することが考えられる。
第3の実施形態で述べたように、ヒストグラムには、ストレス条件にかかる特徴が表れ得る。よって、複数の推定関数のうちから推定に使用する推定関数をヒストグラムに基づいて選択することが考えられる。
第4の実施形態によれば、メモリコントローラ200は、複数の推定関数のうちから推定に使用する推定関数をヒストグラムに基づいて選択するように構成されている。
図11は、第4の実施形態のメモリシステム1の動作の一例を説明するためのフローチャートである。なお、第1の実施形態と同じ処理には、第1の実施形態と同じステップ番号を付して、詳細な説明を省略する。
まず、第1の実施形態と同様に、S101〜S106の処理が実行される。S106の処理によってヒストグラムが得られると、メモリコントローラ200(例えばCPU203)は、第1の推定関数301と第2の推定関数302とのうち、第1の推定関数301を選択するか否かを、S106の処理によって得られたヒストグラムに基づいて判定する(S401)。S401の判定の方法は、特定の方法に限定されない。
一例では、メモリコントローラ200は、8個の定数(m1、m2、m3、m4、m5、m6、m7、m8)と、S106の処理によって得られたヒストグラムの全ビンの度数(h1、h2、h3、h4、h5、h6、h7、h8)と、の積和演算を実行する。そして、メモリコントローラ200は、積和演算によって得られた値としきい値との比較に基づいて、第1の推定関数301と第2の推定関数302とのうち、第1の推定関数301を選択するか否かを決定する。
具体的には、例えば、メモリコントローラ200は、下記の式(1)に示される関係が成立しているか否かに基づいてS401の判定を実行する。ただし、bは上記したしきい値である。
m1*h1+m2*h2+m3*h3+m4*h4+m5*h5+m6*h6+m7*h7+m8*h8>b ・・・(1)
m1*h1+m2*h2+m3*h3+m4*h4+m5*h5+m6*h6+m7*h7+m8*h8>b ・・・(1)
式(1)が成立していない場合には、第1の推定関数301を選択すると判定される。式(1)が成立していない場合には、第1の推定関数301を選択しないと判定される。なお、式(1)の成立/非成立と、第1の推定関数301の選択/非選択との関係は、上記とは逆であってもよい。
別の例では、第3の実施形態のS301の処理と同様に、CPU203は、ヒストグラムの全ビンの度数の積和演算を行い、当該積和演算によって得られた値を指標として用いることで、第1の推定関数301を選択するか否かを判定してもよい。例えば、当該指標が所定の上限値と所定の下限値との間に収まっている場合には、CPU203は、第1の推定関数301を選択すると判定する。逆に、当該指標が所定の上限値を超えるか、または所定の下限値を下回る場合、CPU203は、第1の推定関数301を選択しないと判定する。なお、この判定方法は一例である。
第1の推定関数301を選択すると判定された場合(S401:Yes)、メモリコントローラ200(例えばCPU203)は、第1の推定関数301を用いて実リード電圧Va〜Vgを取得して(S107)、当該実リード電圧Va〜Vgを用いた実リード処理を実行する(S108)。そして、S108の処理によってNANDメモリ100から取得されたデータに対し、エラー訂正が実行される(S402)。
エラー訂正が成功した場合(S402:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S402:fail)、メモリコントローラ200(例えばCPU203)は、所定の処理を実行し(S113)、動作を終了する。
第1の推定関数301を選択しないと判定された場合(S401:No)、メモリコントローラ200(例えばCPU203)は、第2の推定関数302を用いて実リード電圧Va〜Vgを取得して(S110)、当該実リード電圧Va〜Vgを用いて実リード処理を実行する(S111)。そして、S111の処理によってNANDメモリ100から取得されたデータに対し、S103の処理と同様に、エラー訂正が実行される(S112)。
エラー訂正が成功した場合(S112:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S112:fail)、メモリコントローラ200は、所定の処理を実行して(S113)、動作を終了する。
なお、以上では、メモリコントローラ200は、2つの推定関数301、302のうちから使用する推定関数を選択する、として説明した。メモリコントローラ200は、3以上の推定関数から使用する推定関数を選択するように構成されてもよい。
このように、メモリコントローラ200は、複数の推定関数のうちから1つの推定関数を、ヒストグラムに基づいて選択し(例えばS401)、選択した推定関数を用いて実リード電圧を取得する。
よって、第3の実施形態と同様に、リード要求の処理に要するトータルの時間を抑制することが可能となる。
(第5の実施形態)
第4の実施形態では、複数の推定関数のうちから1つが選択されると、当該1つの選択された推定関数を用いた推定のみ実行された。第5の実施形態では、メモリコントローラ200は、複数の推定関数から最初の推定で使用する推定関数を選択し、当該選択された推定関数を用いた推定を行ってもエラー訂正が失敗した場合には、別の推定関数を用いた推定を実行するように構成されている。
第4の実施形態では、複数の推定関数のうちから1つが選択されると、当該1つの選択された推定関数を用いた推定のみ実行された。第5の実施形態では、メモリコントローラ200は、複数の推定関数から最初の推定で使用する推定関数を選択し、当該選択された推定関数を用いた推定を行ってもエラー訂正が失敗した場合には、別の推定関数を用いた推定を実行するように構成されている。
図12は、第5の実施形態のメモリシステム1の動作の一例を説明するためのフローチャートである。なお、第1の実施形態と同じ処理には、第1の実施形態と同じステップ番号を付して、詳細な説明を省略する。
まず、第1の実施形態と同様に、S101〜S106の処理が実行される。S106の処理によってヒストグラムが得られると、メモリコントローラ200(例えばCPU203)は、第1の推定関数301と第2の推定関数302とのうち、第1の推定関数301を選択するか否かを、S106の処理によって得られたヒストグラムに基づいて判定する(S501)。S501の判定の方法は、特定の方法に限定されない。S501の判定の方法は、第4の実施形態のS401の判定の方法と同様であってもよい。
第1の推定関数301を選択すると判定された場合(S501:Yes)、S107〜S113の処理が実行される。つまり、メモリコントローラ200(例えばCPU203)は、第1の推定関数301を用いた実リード電圧Va〜Vgの取得(S107)と、当該実リード電圧Va〜Vgを用いた実リード処理(S108)とを実行する。そして、メモリコントローラ200は、得られたデータに対するエラー訂正(S109)の結果に応じて、第2の推定関数302を用いた実リード電圧Va〜Vgの取得(S110)を行うことができる。
第1の推定関数301を選択しないと判定された場合(S501:No)、メモリコントローラ200(例えばCPU203)は、第2の推定関数302を用いて実リード電圧Va〜Vgを取得して(S502)、当該実リード電圧Va〜Vgを用いて実リード処理を実行する(S503)。そして、S503の処理によってNANDメモリ100から取得されたデータに対し、S103の処理と同様に、エラー訂正が実行される(S504)。
エラー訂正が成功した場合(S504:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S504:fail)、メモリコントローラ200(例えばCPU203)は、第1の推定関数301を用いて実リード電圧Va〜Vgを取得して(S505)、当該実リード電圧Va〜Vgを用いた実リード処理を実行する(S506)。そして、S506の処理によってNANDメモリ100から取得されたデータに対し、S103の処理と同様に、エラー訂正が実行される(S507)。
エラー訂正が成功した場合(S507:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S507:fail)、メモリコントローラ200(例えばCPU203)は、所定の処理を実行し(S113)、動作を終了する。
このように、メモリコントローラ200は、最初に選択された推定関数を使用してもエラー訂正が失敗した場合には、別の推定関数を使用できるように構成されてもよい。
(第6の実施形態)
第3の実施形態では、後続するいくつかの処理をスキップするか否かが、ヒストグラムに基づいて判定された。後続するいくつかの処理をスキップするか否かの判定は、ヒストグラムを用いた判定だけに限定されない。
第3の実施形態では、後続するいくつかの処理をスキップするか否かが、ヒストグラムに基づいて判定された。後続するいくつかの処理をスキップするか否かの判定は、ヒストグラムを用いた判定だけに限定されない。
第6の実施形態のメモリコントローラ200は、一例として、推定によって得られた実リード電圧に基づいて後続する処理をスキップすることができるように構成されている。
図13は、第6の実施形態のメモリシステム1の動作の一例を説明するためのフローチャートである。なお、第1の実施形態と同じ処理には、第1の実施形態と同じステップ番号を付して、詳細な説明を省略する。
まず、第1の実施形態と同様に、S101〜S107の処理が実行される。第1の推定関数301を用いた実リード電圧Va〜Vgの取得が実行されると(S107)、メモリコントローラ200(例えばCPU203)は、当該実リード電圧Va〜Vgを用いた実リード処理をスキップするか否かを判定する(S601)。S601の判定の方法は、特定の方法に限定されない。
一例では、CPU203は、実リード電圧Va〜Vgの全てが所定の範囲に収まっているか否かを判定する。所定の範囲は、例えば、周辺回路110がリード電圧を設定可能な範囲である。第1の推定関数301によって得られた実リード電圧Va〜Vgの何れか(例えばVaまたはVg)が、周辺回路110がリード電圧を設定可能な範囲を逸脱している場合、それらの実リード電圧Va〜Vgを用いた実リード処理を実行することができない。その場合には、CPU203は、実リード処理をスキップする、と判定する。実リード電圧Va〜Vgの全てが所定の範囲に収まっている場合には、CPU203は、実リード処理をスキップしない、と判定する。なお、実リード処理をスキップするか否かの判定の方法はこの方法に限定されない。
実リード処理をスキップすると判定された場合(S601:Yes)、S107の処理によって得られた実リード電圧Va〜Vgを用いた実リード処理(S108)、および当該実リード処理によって得られたデータに対するエラー訂正の処理(S109)、がスキップされて、第2の推定関数302を用いて実リード電圧Va〜Vgを取得する処理が実行される(S110)。その後、S111〜S113の処理が実行される。
実リード処理をスキップしないと判定された場合(S601:No)、S108〜S113の処理が実行される。
このように、メモリコントローラ200は、実リード処理をスキップして別の推定関数を用いた推定を実行するか否かを、推定によって得られた1点以上の実リード電圧に基づいて判定してもよい。
これによって、第3の実施形態と同様に、リード要求の処理に要するトータルの時間を抑制することが可能となる。
(第7の実施形態)
推定の元となるヒストグラムのビンの数が多くすれば、より高精度な推定が可能である。しかしながら、多くのビンを有するヒストグラムを生成するためには、参照リード処理において、ビンの数に応じた回数のリード処理が必要となる。つまり、参照リード処理に、より多くの時間が必要となる。
推定の元となるヒストグラムのビンの数が多くすれば、より高精度な推定が可能である。しかしながら、多くのビンを有するヒストグラムを生成するためには、参照リード処理において、ビンの数に応じた回数のリード処理が必要となる。つまり、参照リード処理に、より多くの時間が必要となる。
第7の実施形態では、メモリコントローラ200は、初回の推定では、少ない数のビンを有する第1のヒストグラムを使用し、2回目の推定では、初回の推定よりも多い数のビンを有する第2のヒストグラムを使用するように構成されている。これによって、初回の推定の際には、参照リード処理に要する時間を短縮され、2回目の推定の際には、より精度が高い推定が実行される。
図14は、第7の実施形態のメモリシステム1の動作の一例を説明するためのフローチャートである。なお、第1の実施形態と同じ処理には、第1の実施形態と同じステップ番号を付して、詳細な説明を省略する。
まず、第1の実施形態と同様に、S101〜S104の処理が実行される。S104の誤り訂正が失敗した場合(S103:fail)、メモリコントローラ200は、参照リード電圧Vr2、Vr4、Vr6を用いた参照リード処理を実行する(S701)。具体的には、メモリコントローラ200は、Vr2、Vr4、Vr6のうちのそれぞれ異なる値をリード電圧として指定して、合計3回のリード処理を実行する。そして、メモリコントローラ200は、3回のリード処理によって得られた3個のデータを、例えばRAM202に格納する。この3個のデータを、1回目の参照リード処理の結果、と表記する。
続いて、メモリコントローラ200(例えばCPU203)は、1回目の参照リード処理の結果に基づいて4個のビンを有するヒストグラムを生成する(S702)。そして、メモリコントローラ200(例えばCPU203)は、第1の推定関数301を用いて実リード電圧Va〜Vgを取得する(S703)。
第7の実施形態では、第1の推定関数301が乗算されるヒストグラムのビンの数は、4である。そして、第1の推定関数301によって推定される実リード電圧の数は、第1の実施形態と同様に、7つである。よって、第7の実施形態の第1の推定関数301は、4つの行と7つの列とを有する行列として構成されている。CPU203は、S702の処理によって得られたヒストグラムの各ビンの度数を要素とするベクトルに、上記の第1の推定関数301を乗算することによって、実リード電圧Va〜Vgのそれぞれを要素とするベクトルを得ることができる。
続いて、メモリコントローラ200は、S703の処理によって得られた実リード電圧Va〜Vgを用いて実リード処理を再び実行する(S108)。そして、S108の処理によってNANDメモリ100から取得されたデータに対し、S103の処理と同様に、エラー訂正が実行される(S109)。
エラー訂正が成功した場合(S109:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S109:fail)、メモリコントローラ200は、参照リード電圧Vr1〜Vr7のうちの1回目の参照リード処理で使用されていない電圧Vr1、Vr3、Vr5、Vr7を用いた参照リード処理を実行する(S704)。具体的には、メモリコントローラ200は、Vr1、Vr3、Vr5、Vr7のうちのそれぞれ異なる値をリード電圧として指定して、合計4回のリード処理を実行する。そして、メモリコントローラ200は、4回のリード処理によって得られた4個のデータを、例えばRAM202に格納する。この4個のデータを、2回目の参照リード処理の結果、と表記する。
1回目の参照リード処理の結果と、2回目の参照リード処理の結果とを得ることで、第1の実施形態の参照リード処理を行った場合と同等の7個のデータが得られる。つまり、当該7個のデータは、Vr1〜Vr7のうちのそれぞれ異なる値をリード電圧として使用して得られたデータの群である。メモリコントローラ200(例えばCPU203)は、1回目の参照リード処理の結果と、2回目の参照リード処理の結果と、に基づいて、8個のビンを有するヒストグラムを生成する(S705)。
そして、メモリコントローラ200(例えばCPU203)は、第2の推定関数302を用いて実リード電圧Va〜Vgを取得する(S706)。
第7の実施形態では、第2の推定関数302が乗算されるヒストグラムのビンの数は、8である。そして、第2の推定関数302によって推定される実リード電圧の数は、7つである。よって、第7の実施形態の第2の推定関数302は、8つの行と7つの列とを有する行列として構成されている。なお、第7の実施形態の第2の推定関数302は、第1の実施形態の第2の推定関数302と同じであってもよい。CPU203は、S705の処理によって得られたヒストグラムの各ビンの度数を要素とするベクトルに、上記の第1の推定関数301を乗算することによって、実リード電圧Va〜Vgのそれぞれを要素とするベクトルを得ることができる。
続いて、メモリコントローラ200(例えばCPU203)は、S706の処理によって得られた実リード電圧Va〜Vgを用いて実リード処理を実行する(S111)。そして、S111の処理によってNANDメモリ100から取得されたデータに対し、S103の処理と同様に、エラー訂正が実行される(S112)。
エラー訂正が成功した場合(S112:pass)、メモリコントローラ200は、S104の処理を実行する。エラー訂正が失敗した場合(S112:fail)、メモリコントローラ200は、所定の処理を実行して(S113)、動作を終了する。
このように、メモリコントローラ200は、初回の推定では、少ない数のビンを有する第1のヒストグラムを使用し、2回目の推定では、初回の推定よりも多い数のビンを有する第2のヒストグラムを使用するように構成されている。そして、メモリコントローラ200は、2回目の推定の際には、初回の推定の際の参照リード処理の結果(第1の参照リード処理の結果)と、追加で実行された参照リード処理の結果(第2の参照リード処理の結果)とに基づいてヒストグラムを取得する。
これによって、初回の推定の際には、参照リード処理に要する時間を短縮され、2回目の推定の際には、より精度が高い推定が実行される。
なお、メモリコントローラ200は、3以上の推定関数を順次、用いるように構成されている場合には、i回目の推定の際に第1のヒストグラムを使用し、(i+1)回目の推定の際に第2のヒストグラムを使用するように構成されてもよい。ただしiは2以上の整数である。
(第8の実施形態)
第1〜第7の実施形態では、第1の推定関数301および第2の推定関数302は、行列の構成を有するとして説明した。第1の推定関数301および第2の推定関数302の一方または両方は、行列の構成を有していなくてもよい。
第1〜第7の実施形態では、第1の推定関数301および第2の推定関数302は、行列の構成を有するとして説明した。第1の推定関数301および第2の推定関数302の一方または両方は、行列の構成を有していなくてもよい。
図15は、第8の実施形態の第1の推定関数301および第2の推定関数302の構成の一例を説明するための模式的な図である。本図に示されるように、第8の実施形態では、第1の推定関数301および第2の推定関数302は、ともにニューラルネットワークモデル500である。
図15の例では、ニューラルネットワークモデル500は、1つの隠れ層を有する多層パーセプトロン(Multi-Layer Perceptron : MLP)の構成を有している。ニューラルネットワークモデル500は、全結合のMLP(fully connected MLP)であってもよいし、非全結合のMLP(sparsely connected MLP)であってもよい。隠れ層で使用される活性化関数は、例えばReLU(Rectified Linear Units)関数であり、出力層で使用される活性化関数は、例えば線形関数である。
ニューラルネットワークモデル500の入力層にはヒストグラムが入力される。即ち、入力層は、ヒストグラムが入力されるノードとして、ヒストグラムが備えるビンの数に対応した数(即ち8個)のノードを備える。ニューラルネットワークモデル500の出力層は、実リード電圧Va〜Vgの数に対応した数(即ち7個)のノードを備える。隠れ層は、1以上のノードによって構成される。図15の例では、隠れ層は15個のノードを備える。
隠れ層および出力層では、各ノードは、バイアスおよび前の層のノードからの各入力値に対して重みを乗じ、重みが乗じられた後の各値の総和に対して活性化関数を適用し、活性化関数の適用によって得られた値を出力する。
各重みは、トレーニングによって予め決定されている。つまり、ニューラルネットワークモデル500は、ヒストグラムを実リード電圧Va〜Vgの最適値にマップするように予めトレーニングされている。例えば、第1の推定関数301は、範囲311に含まれるストレス条件下で得られた、ヒストグラムと、実リード電圧の最適値のセットと、の対を学習データとして用いてトレーニングされている。また、第2の推定関数302は、範囲312に含まれるストレス条件下で得られた、ヒストグラムと、実リード電圧の最適値のセットと、の対を学習データとして用いてトレーニングされている。なお、学習データの例はこれに限定されない。
このように、第1の推定関数301および第2の推定関数302のそれぞれは、行列ではなく、ニューラルネットワークモデルであってもよい。なお、第1の推定関数301および第2の推定関数302のうちの一方が行列であり、他方がニューラルネットワークモデルであってもよい。
また、入力層に入力されるデータは、ヒストグラムだけに限定されない。温度情報やストレス条件など、種々のデータが入力され得る。
(第9の実施形態)
第3〜第6の実施形態では、処理のスキップの判定または推定関数の選択の基準として、ヒストグラムまたは推定によって得られた実リード電圧が使用された。処理のスキップの判定または推定関数の選択の基準はこれらに限定されない。
第3〜第6の実施形態では、処理のスキップの判定または推定関数の選択の基準として、ヒストグラムまたは推定によって得られた実リード電圧が使用された。処理のスキップの判定または推定関数の選択の基準はこれらに限定されない。
例えば、メモリコントローラ200は、メモリシステム1を正常に動作させるために各種の管理情報を記録している。メモリコントローラ200は、管理情報に基づいて処理のスキップの判定または推定関数の選択を行ってもよい。
図16は、第9の実施形態のメモリコントローラ200によって記録される管理情報の構成の一例を示す図である。本図に示されるように、管理情報600は、プログラム/イレースサイクルの実行回数、リード処理の実行回数、プログラムされてからの経過時間、または温度を含む。プログラム/イレースサイクルの実行回数、リード処理の実行回数、プログラムされてからの経過時間は、所定の記憶領域(例えばページやブロック)毎に記録される。温度は、例えばメモリシステム1に具備される不図示の温度センサによって取得される。
管理情報600は、例えばRAM202に保持されており、メモリコントローラ200は、RAM202上の管理情報600を任意のタイミングで更新することができる。また、メモリコントローラ200は、電源断などに備えて、適時、RAM202上の管理情報600をNANDメモリ100などの不揮発性メモリに退避することができる。メモリコントローラ200は、管理情報600に記録されたこれらの情報に基づいて処理のスキップの判定または推定関数の選択を行ってもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、100 NANDメモリ、101 メモリチップ、110 周辺回路、111 メモリセルアレイ、200 メモリコントローラ、201 ホストインタフェース、202 RAM、203 CPU、204 NANDC、205 ECC、300 推定関数、301 第1の推定関数、302 第2の推定関数、400 ヒストグラム、500 ニューラルネットワークモデル、600 管理情報。
Claims (11)
- データが格納される複数のメモリセルと、
1点以上の第1の参照リード電圧を用いて前記複数のメモリセルに対してリードする第1の参照リード処理を実行し、
前記第1の参照リード処理の結果に基づいてしきい値電圧に対するメモリセルの数を示す第1のヒストグラムを取得する第1の取得処理を実行し、
前記第1のヒストグラムと第1の推定関数とに基づいて1点以上の実リード電圧を推定する第1の推定処理を実行し、
前記第1の推定処理によって取得された前記1点以上の実リード電圧を用いて前記データをリードする第1の実リード処理を実行し、
前記第1の実リード処理によって前記データを取得できない場合、第2の推定処理および第2の実リード処理を実行し、
前記第2の推定処理は、前記第1の推定関数と異なる第2の推定関数を用いて前記1点以上の実リード電圧を推定する処理であり、
前記第2の実リード処理は、前記第2の推定処理によって取得された前記1点以上の実リード電圧を用いて前記データをリードする処理である、
メモリコントローラと、
を備えるメモリシステム。 - 前記メモリコントローラは、前記第2の推定処理において、前記第1のヒストグラムと前記第2の推定関数とに基づいて前記1点以上の実リード電圧の少なくとも一つを推定する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記第1の推定処理および前記第1の実リード処理をスキップして前記第2の推定処理を実行するか否かを、前記第1のヒストグラムに基づいて判定する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記第1の実リード処理をスキップして前記第2の推定処理を実行するか否かを、前記第1の推定処理によって取得された前記1点以上の実リード電圧に基づいて判定する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、
前記第1の実リード処理によって前記データを取得できない場合、第2の参照リード処理および第2の取得処理をさらに実行し、
前記第2の参照リード処理は、前記1点以上の第1の参照リード電圧と異なる1点以上の第2の参照リード電圧を用いて前記複数のメモリセルに対してリードする処理であり、
前記第2の取得処理は、前記第1の参照リード処理の前記結果と前記第2の参照リード処理の結果とに基づいて前記第1のヒストグラムよりも備えるビンの数が多い第2のヒストグラムを取得する処理であり、
前記第2の推定処理において、前記第2のヒストグラムと前記第2の推定関数とに基づいて前記1点以上の実リード電圧を推定する、
請求項1に記載のメモリシステム。 - 前記メモリシステムはホストに接続され、
前記メモリコントローラは、
前記ホストからのリードコマンドに応じて前記データをリードする第3の実リード処理を実行し、
前記第3の実リード処理によって前記データを取得できない場合、前記第1の参照リード処理を実行する、
請求項1に記載のメモリシステム。 - データが格納された複数のメモリセルと、
1点以上の参照リード電圧を用いて前記複数のメモリセルに対するリードを行うことによってしきい値電圧に対するメモリセルの数を示すヒストグラムを取得する取得処理と、
複数の推定関数のうちの一を選択する選択処理と、
前記ヒストグラムと前記選択処理によって選択された推定関数である第1の推定関数とに基づいて1点以上の実リード電圧を推定する第1の推定処理を実行し、
前記第1の推定処理によって取得された前記1点以上の実リード電圧を用いて前記データをリードする第1の実リード処理を実行する、
メモリコントローラと、
を備えるメモリシステム。 - 前記メモリコントローラは、
前記第1の実リード処理によって前記データを取得できない場合、第2の推定処理および第2の実リード処理を実行し、
前記第2の推定処理は、前記複数の推定関数のうちの前記第1の推定関数と異なる第2の推定関数を用いて前記1点以上の実リード電圧を推定する処理であり、
前記第2の実リード処理は、前記第2の推定処理によって取得された前記1点以上の実リード電圧を用いて前記データをリードする処理である、
請求項7に記載のメモリシステム。 - 前記メモリコントローラは、前記選択処理において、前記ヒストグラムに基づいて前記複数の推定関数のうちの前記一を選択する、
請求項7に記載のメモリシステム。 - 前記メモリコントローラは、前記選択処理において、前記複数のメモリセルに対するプログラム/イレースサイクルの実行回数、前記複数のメモリセルに対する前記データのリード処理の実行回数、前記複数のメモリセルに対して前記データがプログラムされてからの経過時間、および温度、のうちの少なくとも一つに基づいて前記複数の推定関数のうちの前記一を選択する、
請求項7に記載のメモリシステム。 - 前記メモリシステムはホストに接続され、
前記メモリコントローラは、
前記ホストからのリードコマンドに応じて前記データをリードする第3の実リード処理を実行し、
前記第3の実リード処理によって前記データを取得できない場合、前記取得処理を実行する、
請求項7に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019163969A JP2021044034A (ja) | 2019-09-09 | 2019-09-09 | メモリシステム |
US16/802,477 US10957400B1 (en) | 2019-09-09 | 2020-02-26 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019163969A JP2021044034A (ja) | 2019-09-09 | 2019-09-09 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021044034A true JP2021044034A (ja) | 2021-03-18 |
Family
ID=74851366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019163969A Pending JP2021044034A (ja) | 2019-09-09 | 2019-09-09 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10957400B1 (ja) |
JP (1) | JP2021044034A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021149995A (ja) | 2020-03-23 | 2021-09-27 | キオクシア株式会社 | メモリシステム |
US12046306B2 (en) * | 2022-05-27 | 2024-07-23 | Sandisk Technologies Llc | Temperature dependent programming techniques in a memory device |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009072102A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices |
JP5361603B2 (ja) * | 2009-08-13 | 2013-12-04 | 株式会社東芝 | コントローラ |
US8964464B2 (en) * | 2010-08-24 | 2015-02-24 | Densbits Technologies Ltd. | System and method for accelerated sampling |
US9069659B1 (en) | 2013-01-03 | 2015-06-30 | Densbits Technologies Ltd. | Read threshold determination using reference read threshold |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US10180876B2 (en) * | 2015-08-04 | 2019-01-15 | Toshiba Memory Corporation | Memory controller and semiconductor memory device |
TWI592869B (zh) * | 2016-04-22 | 2017-07-21 | 大心電子(英屬維京群島)股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
JP6783666B2 (ja) | 2017-01-05 | 2020-11-11 | キオクシア株式会社 | 半導体記憶装置及びメモリシステム |
KR102349382B1 (ko) * | 2017-10-11 | 2022-01-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
JP2020038738A (ja) * | 2018-09-03 | 2020-03-12 | キオクシア株式会社 | 不揮発性メモリ及びメモリシステム |
JP2020042884A (ja) * | 2018-09-13 | 2020-03-19 | キオクシア株式会社 | メモリシステム |
-
2019
- 2019-09-09 JP JP2019163969A patent/JP2021044034A/ja active Pending
-
2020
- 2020-02-26 US US16/802,477 patent/US10957400B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10957400B1 (en) | 2021-03-23 |
US20210074366A1 (en) | 2021-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934666B2 (en) | Memory device with dynamic program-verify voltage calibration | |
TWI693605B (zh) | 具有動態程式化校準之記憶體裝置 | |
TWI688959B (zh) | 具有動態處理位準校準之記憶體裝置 | |
US11086569B2 (en) | Memory system and method | |
CN107452421B (zh) | 固态储存装置及其状态预测方法 | |
TWI596616B (zh) | 胞元間干擾的消除 | |
US11127476B2 (en) | Memory system controlling a threshold voltage in a read operation and method | |
JP5693615B2 (ja) | 隣接状態情報に基づく温度補償がなされる不揮発性記憶装置 | |
US9069659B1 (en) | Read threshold determination using reference read threshold | |
US10719396B2 (en) | Memory system | |
KR20100033517A (ko) | 멀티 레벨 메모리 스토리지 시스템에서의 멀티 비트 에러 교정 기법 | |
US10777283B2 (en) | Memory system | |
JP2019164858A (ja) | メモリシステム | |
JP2021047695A (ja) | メモリシステム | |
US11342040B2 (en) | Memory system | |
JP2021044034A (ja) | メモリシステム | |
US20240095112A1 (en) | Memory system and method | |
JP2020009513A (ja) | メモリシステム | |
US20240055065A1 (en) | Memory system and method | |
US20210295937A1 (en) | Memory system and method | |
JP2021149990A (ja) | メモリシステム |