JP2021047695A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2021047695A JP2021047695A JP2019170544A JP2019170544A JP2021047695A JP 2021047695 A JP2021047695 A JP 2021047695A JP 2019170544 A JP2019170544 A JP 2019170544A JP 2019170544 A JP2019170544 A JP 2019170544A JP 2021047695 A JP2021047695 A JP 2021047695A
- Authority
- JP
- Japan
- Prior art keywords
- value
- memory
- memory system
- read
- memory controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
- 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
-
- 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)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Read Only Memory (AREA)
- Non-Volatile Memory (AREA)
- Memory System (AREA)
- Semiconductor Memories (AREA)
Abstract
【課題】しきい値電圧の変化に対する読み出し電圧の追従性を向上させることができるメモリシステムを提供する。【解決手段】一つの実施形態によれば、メモリシステムは、複数のメモリセルと、メモリコントローラとを備える。前記メモリコントローラは、前記複数のメモリセルに対する読み出し電圧の設定値を複数のタイミングで更新する。前記メモリコントローラは、前記複数のタイミングのうちの所定のあるタイミングでは、前記読み出し電圧の最適値を観測し、前記最適値の観測結果に基づいて前記設定値を更新する第1の動作を実行する。前記メモリコントローラは、前記複数のタイミングのうちの前記所定のあるタイミングの1つ後のタイミングでは、前記最適値の観測を実行せずに、1つ前のタイミングで更新された前記設定値に基づいて前記設定値を更新する第2の動作を実行する。【選択図】図1
Description
本実施形態は、メモリシステムに関する。
従来、不揮発性のメモリセルを有するメモリシステムが知られている。NAND型のフラッシュメモリでは、メモリセルに記憶する複数のデータ値をしきい値電圧の複数の領域にそれぞれ対応させ、メモリセルのしきい値電圧が、記憶されるデータ値に対応する領域となるように電荷が注入される。そして、読み出し時には、メモリセルのしきい値電圧が、どの領域に存在するかを判定することにより、メモリセルに記憶されたデータ値を得ることができる。
一つの実施形態は、しきい値電圧の変化に対する読み出し電圧の追従性を向上させることができるメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、複数のメモリセルと、メモリコントローラとを備える。前記メモリコントローラは、前記複数のメモリセルに対する読み出し電圧の設定値を複数のタイミングで更新する。前記メモリコントローラは、前記複数のタイミングのうちの所定のあるタイミングでは、前記読み出し電圧の最適値を観測し、前記最適値の観測結果に基づいて前記設定値を更新する第1の動作を実行する。前記メモリコントローラは、前記複数のタイミングのうちの前記所定のあるタイミングの1つ後のタイミングでは、前記最適値の観測を実行せずに、1つ前のタイミングで更新された前記設定値に基づいて前記設定値を更新する第2の動作を実行する。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、実施形態に係るメモリシステム1の構成の一例を示す模式的な図である。メモリシステム1は、ホスト(Host)2と接続可能に構成されている。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。
図1は、実施形態に係るメモリシステム1の構成の一例を示す模式的な図である。メモリシステム1は、ホスト(Host)2と接続可能に構成されている。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。
メモリシステム1は、ホスト2からアクセス要求を受け付けることができる。アクセス要求は、リードコマンド及びライトコマンドを含む。
メモリシステム1は、NAND型のフラッシュメモリ(NANDメモリ)100と、ホスト2及びNANDメモリ100の間のデータ転送を実行するメモリコントローラ200とを備える。NANDメモリ100及びメモリコントローラ200とは、複数のチャネルを有するバス300により電気的に接続される。
メモリコントローラ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は、ソフトウェア、ハードウェア又はこれらの組み合わせによって構成され得る。
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のメモリセルのしきい値電圧の分布の一例を示す模式的な図である。図2に示す分布において、縦軸は、メモリセルの数(メモリセル数)を示し、横軸は、しきい値電圧を示す。すなわち、本図は、しきい値電圧に対するメモリセルの分布を示している。
なお、以降に説明される例では、特に断りがない限り、各メモリセルにデータを保持する方式として、TLC(Triple Level Cell)と呼ばれる方式が適用されていることとしている。TLCの方式によれば、各メモリセルは、3ビットのデータを保持することができる。つまり、本実施形態では、メモリセルが8値のデータを保持可能な場合について説明するが、保持可能なデータは8値に限定されない。本実施形態においては、メモリセルが2値以上のデータ(1ビット以上のデータ)を保持可能であればよい。
図5に示す例では、しきい値電圧の取り得る範囲は、8つの範囲に区分される。この8つの区分を、しきい値電圧が低いほうから順に、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステートと呼ぶことにする。各メモリセルのしきい値電圧は、周辺回路110によって、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステート、の何れかに属するように、制御される。その結果、しきい値電圧に対するメモリセルの数をプロットした場合、メモリセルは、理想的には、本図に示されるように、それぞれ異なるステートに属する互いに重ならない8つの分布を形成する。
8つのステートは、3ビットのデータに対応する。本図の例によれば、“Er”ステートは“111”に対応し、“A”ステートは“110”に対応し、“B”ステートは“100”に対応し、“C”ステートは“000”に対応し、“D”ステートは“010”に対応し、“E”ステートは“011”に対応し、“F”ステートは“001”に対応し、“G”ステートは“101”に対応する。このように、各メモリセルは、そのしきい値電圧が属するステートに応じたデータを保持することができる。なお、図5に示す対応関係は、データコーディングの一例である。データコーディングは本図の例に限定されない。
なお、1つのメモリセルに保持される3ビットのデータのうち、LSB(Least Significant Bit)をロアービット、MSB(Most Significant Bit)をアッパービット、LSBとMSBとの間のビットをミドルビットと表記する。
しきい値電圧は、イレース処理によって“Er”ステートに低下せしめられる。また、しきい値電圧は、プログラム処理によって、“Er”ステートに維持されたり、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート及び“G”ステートの何れかに至るまで上昇せしめられたりする。
以降、プログラム処理によってあるステートにしきい値電圧が設定されたメモリセルを、そのステートに属するメモリセル、と表記することがある。
隣接する2つのステート間には、読み出し電圧が設定される。例えば、図5に例示されるように、“Er”ステートと“A”ステートとの間に読み出し電圧Vraが設定され、“A”ステートと“B”ステートとの間に読み出し電圧Vrbが設定され、“B”ステートと“C”ステートとの間に読み出し電圧Vrcが設定され、“C”ステートと“D”ステートとの間に読み出し電圧Vrdが設定され、“D”ステートと“E”ステートとの間に読み出し電圧Vreが設定され、“E”ステートと“F”ステートとの間に読み出し電圧Vrfが設定され、“F”ステートと“G”ステートとの間に読み出し電圧Vrgが設定される。つまり、8つのステートが設定されるTLCモードでは、7点の読み出し電圧が設定される。リード処理においては、周辺回路110は、複数点の読み出し電圧を用いてメモリセルが属するステートを特定し、特定したステートをデータにデコードする。
なお、読み出し電圧の値は、種々の量で表現され得る。また、読み出し電圧の値は、種々の表現で指示され得る。本実施形態では、一例として、読み出し電圧の種類(Vra〜Vrg)ごとに基準値が予め設定されており、読み出し電圧の値は、基準値からの差分であるシフト量で表現される。また、メモリチップ101内の所定の位置に基準値が読み出し電圧の種類ごとに記憶されている。メモリコントローラ200は、読み出し電圧の種類ごとに基準値からのシフト量をメモリチップ101に指示する。
なお、読み出し電圧の表現方法及び指示の方法は、これに限定されない。例えば、読み出し電圧の値は差分ではなく電圧値で表現され、読み出し電圧は、メモリチップ101に対し、基準値に対する差分ではなく電圧値で指示されてもよい。
以上、図5を参照しつつ、メモリセルが、互いに重ならない8つの分布を形成する場合を説明した。しかしながら、メモリセルのしきい値電圧は、種々の要因によって変化し得る。メモリセルのしきい値電圧は、例えば、当該メモリセルへのアクセス、当該メモリセルへのプログラム完了時からの経過時間や温度履歴、当該メモリセルに隣接するメモリセルへのアクセス、当該メモリセルの疲弊状態などに応じて変化し得る。メモリセルの疲弊状態は、当該メモリセルに対するイレース処理/プログラム処理の実行回数、および当該メモリセルに対するイレース処理/プログラム処理の際の温度に影響される。メモリセルのしきい値電圧が変化するとき、リード処理時において、ステートごとの分布が互いに重なり合った状態になっている場合がある。
図6は、図3や図4のメモリセルのしきい値電圧の分布の別の一例を示す模式的な図である。図6に示す例では、説明の簡単のために、“A”ステート及び“B”ステートのいずれかに属するメモリセルの分布を図示している。実線は、“A”ステートおよび“B”ステートのいずれかに属するメモリセルの分布を示している。破線は、“A”ステートに属するメモリセルの分布を示し、一点鎖線は、“B”ステートに属するメモリセルの分布を示している。本図の例では、“A”ステートに属するメモリセルの分布の裾野と“B”ステートに属するメモリセルの分布の裾野とが重なり合っている。換言すれば、“A”ステートに属するメモリセルのしきい値電圧の最大値が読み出し電圧Vrbを超えており、かつ、“B”ステートに属するメモリセルのしきい値電圧の最小値が読み出し電圧Vrbを下回っている。“A”ステートに属し、かつ、しきい値電圧が読み出し電圧Vrbよりも大きいメモリセルがリードされた場合、そのメモリセルは“B”ステートに属するとして認識される。すなわち、“110”としてプログラムされたデータが“100”としてリードされる。“B”ステートに属し、かつ、しきい値電圧が読み出し電圧Vrbよりも小さいメモリセルがリードされた場合、そのメモリセルは“A”ステートに属するとして認識される。すなわち、“100”としてプログラムされたデータが“110”としてリードされる。
このように、リードされたデータは、しきい値電圧の変化によって、プログラムされた時点での値から変化している場合がある。換言すれば、しきい値電圧のローブの一部又は全部がステート間の境界にある読み出し電圧を越えた場合、データの誤判定が発生する。すなわち、プログラム処理時と異なった値が読み出される。プログラム処理時と異なった値を、ビットエラーと表記する。ビットエラーの発生を抑制するためには、しきい値電圧の変化に追従した読み出し電圧の設定が要求される。
メモリコントローラ200は、ビットエラーに対し、ECC205によるエラー訂正と、読み出し電圧のシフトとで対処することができる。
例えば、メモリコントローラ200は、NANDメモリ100から取得したデータに対してECC205を用いたエラー訂正を実行する。エラー訂正に失敗した場合、メモリコントローラ200は、読み出し電圧Vra〜Vrgの最適値を取得し、取得された読み出し電圧Vra〜Vrgの最適値を新たな設定値として設定してリード処理をリトライする。リトライされるリード処理を、リードリトライ処理と表記する。
なお、エラー訂正が失敗するとは、変化後のデータから変化前のデータを復元できないことをいう。具体的には、エラー訂正が失敗するとは、リードデータに含まれるエラービットが訂正できないことをいう。エラー訂正が成功するとは、リードデータに含まれる全てのエラービットが訂正されたことをいう。
なお、読み出し電圧の最適値は、ビットエラーの発生率を出来るだけ小さくすることができる読み出し電圧の値をいう。以下、読み出し電圧の最適値を最適読み出し電圧と呼ぶ場合もある。例えば図6の場合、“A”ステートと“B”ステートとの間においては、しきい値電圧がVbのとき、メモリセルの分布が極小となる。よって、Vbを新たな読み出し電圧の設定値として使用することによって、“110”としてプログラムされたデータが“100”としてリードされたり、“100”としてプログラムされたデータが“110”としてリードされたりするビットエラーの発生を低減することができる。
なお、読み出し電圧の最適値は、ビットエラーの発生率を最小にするための値であればよく、メモリセルの分布が有する極小点のしきい値電圧に限らない。極小点の他の点のしきい値電圧の値が、読み出し電圧の最適値として使用されても構わない。
バックグラウンド処理として、メモリコントローラ200が定期的にNANDメモリ100のパトロールリード(Patrol read)を実行し、パトロールリードにおいてしきい値電圧を観測して最適読み出し電圧を取得する。パトロールリードにおいて取得された最適読み出し電圧は、観測値として、管理情報に保持される。換言すれば、メモリコントローラ200は、複数のメモリセルに対する読み出し電圧の設定値を複数のタイミングで更新する。ここで、パトロールリードは、ホスト2からの要求(リードコマンド)に応じたリード動作ではなく、メモリシステム1において自発的に、例えば予め設定された周期や時点で実施されるリード動作である。一方で、ホストリードは、ホスト2からのリードコマンドに応じて実施されるリード動作である。ホストリード時には、直近のパトロールリードにより観測された最適読み出し電圧(管理情報)が、リードコマンドにより指定されたデータの読み出しのための読み出し電圧として使用され得る。このことから、パトロールリードは、読み出し電圧の最適値を観測(管理情報を更新)する動作であるとも表現できる。
しかしながら、パトロールリードを実行するとき、その処理の該当ブロック及び/又はワードラインからデータが読み出される。つまり、パトロールリード時には、バス300の有する複数のチャネルのうちの当該ブロック及び/又はワードラインを含むメモリチップ101に接続されたチャネルは、パトロールリードによりチャネルが占有(使用)されている状態にある。換言すれば、パトロールリードを実行するとき、ホスト2から見たチャネルのバンド幅が目減りする。このことから、ホストリード時にパトロールリードが実行されている場合には、パトロールリードによるチャネル占有率の増加がホストリードの性能を低下させる。このため、しきい値電圧の観測頻度を高くすることは困難である。
一方で、連続するパトロールリード間の時間間隔を長くすると、すなわちしきい値電圧の観測頻度を低くすると、パトロールリードによるチャネル占有率の増加を抑制できる一方、時間変化するしきい値電圧への読み出し電圧の追従性が低下する。しきい値電圧への読み出し電圧の追従性が低下すると、データの誤判定の発生及びリード処理のリトライ発生によりリードレイテンシが悪化する。
そこで、本実施形態に係るメモリシステム1は、バックグラウンド処理において、現時点での観測値を使用せずに管理情報を更新することにより、観測頻度を削減しつつ、しきい値電圧の変化に対する読み出し電圧の追従性を維持することができるように構成されている。換言すれば、本実施形態に係るメモリシステム1は、観測頻度を増加させずに、しきい値電圧の変化に対する読み出し電圧の追従性を向上させることができる。
<管理情報の更新処理の概要>
図7は、図1のメモリシステム1における管理情報の更新処理の概要を説明するための図である。図7に示すように、管理情報の更新処理は、現時点kでの観測値ykを使用して管理情報を更新する処理と、観測値ykを使用せずに管理情報を更新する処理とを含む。具体的には、時点kにおける観測値ykがある場合には、前の時点k−1での管理情報(μk−1,Sk−1)と、現時点kにおける観測値ykとから、現時点kでの管理情報(μk,Sk)を推定する。一方で、時点kにおける観測値ykがない場合には、前の時点k−1での管理情報(μk−1,Sk−1)から、現時点kでの管理情報(μk,Sk)を予測する。推定/予測された現時点kでの管理情報(μk,Sk)により管理情報を更新する。
図7は、図1のメモリシステム1における管理情報の更新処理の概要を説明するための図である。図7に示すように、管理情報の更新処理は、現時点kでの観測値ykを使用して管理情報を更新する処理と、観測値ykを使用せずに管理情報を更新する処理とを含む。具体的には、時点kにおける観測値ykがある場合には、前の時点k−1での管理情報(μk−1,Sk−1)と、現時点kにおける観測値ykとから、現時点kでの管理情報(μk,Sk)を推定する。一方で、時点kにおける観測値ykがない場合には、前の時点k−1での管理情報(μk−1,Sk−1)から、現時点kでの管理情報(μk,Sk)を予測する。推定/予測された現時点kでの管理情報(μk,Sk)により管理情報を更新する。
<バックグラウンド処理の概要>
図8は、図1のメモリシステム1におけるバックグラウンド処理の概要を説明するための図である。図8に示す例では、縦軸は、読み出し電圧の値の初期設定値(基準値)からのシフト量を示すシフト量[V]を示し、横軸は、書き込みからの経過時間[H]を示す。また、図8に示すシフト量の分布に関して、実線は、読み出し電圧の最適値を示し、破線は、本実施形態に係るメモリシステム1により予測/推定された読み出し電圧の値(予測値/推定値)を示し、プロットは、取得(観測)された読み出し電圧の最適値(観測値)を示す。ここで、図8に実線で示す読み出し電圧の最適値は、各時点において観測が実行された場合に各時点で取得される値であり、観測が行われていない場合には、メモリシステム1では未知の値である。
図8は、図1のメモリシステム1におけるバックグラウンド処理の概要を説明するための図である。図8に示す例では、縦軸は、読み出し電圧の値の初期設定値(基準値)からのシフト量を示すシフト量[V]を示し、横軸は、書き込みからの経過時間[H]を示す。また、図8に示すシフト量の分布に関して、実線は、読み出し電圧の最適値を示し、破線は、本実施形態に係るメモリシステム1により予測/推定された読み出し電圧の値(予測値/推定値)を示し、プロットは、取得(観測)された読み出し電圧の最適値(観測値)を示す。ここで、図8に実線で示す読み出し電圧の最適値は、各時点において観測が実行された場合に各時点で取得される値であり、観測が行われていない場合には、メモリシステム1では未知の値である。
バックグラウンド処理において、図8の矢印A1の時点では最適読み出し電圧の取得(観測)が行われるとする。また、矢印B1及び矢印C1の時点では、予測精度の監視により予測ズレが検出されたとする。予測ズレは、読み出し電圧の最適値と推定値/予測値との差が大きいことを示す。換言すれば、予測ズレが検出されたときは、読み出し電圧の予測精度が低いときである。同様に、予測ズレが検出されなかったときは、読み出し電圧の予測精度が高い又は許容できる程度のときであると表現することができる。つまり、予測精度の監視とは、読み出し電圧の予測値に基づいて予測精度を求め、求めた予測精度が低いか否か(劣化していないか否か)を判定することを意味する。最適読み出し電圧の取得(観測)と、予測ズレとについては、後述する。
矢印A1の時点では、取得された観測値を用いて読み出し電圧が推定される。管理情報は、推定値により更新される。次の時点では、その時点での観測値は使用されず、推定値を用いて読み出し電圧が予測され、予測値により管理情報が更新される。その後、矢印B1の時点までの期間において、定期的に予測値を用いて管理情報が更新され続ける。
矢印B1及び矢印C1の時点では、予測精度の監視により予測ズレが検出されたため、最適読み出し電圧の取得(観測)が行われる。その後、再び予測ズレが検出される時点までの期間において、予測値を用いて定期的に管理情報が更新され続ける。なお、例えばホストリード処理によって観測値が得られて管理情報が更新された直後など、直近で管理情報が更新された時点からの経過時間によっては、予測値を用いた管理情報の更新が行われない場合もあり得る。
<管理情報の更新処理について>
以下、管理情報の更新処理について、より詳細に説明する。
以下、管理情報の更新処理について、より詳細に説明する。
本実施形態に係る管理情報の更新処理は、例えば、読み出し電圧の値の時間変化のモデルに基づいた、カルマンフィルタアルゴリズムによる状態推定方法により実現される。なお、読み出し電圧の値の時間変化のモデルは、以下に説明する状態空間モデルにより表現されるとする。換言すれば、本実施形態に係る管理情報の更新処理は、状態空間モデルに基づいた、カルマンフィルタアルゴリズムによる状態推定方法により実現される。
なお、以下に説明する状態空間モデルは、例えばNANDメモリ100内の所定の位置に予め格納されている。メモリシステム1の起動時には、CPU203は、例えば図1に示すように、モデル情報206をRAM202にロードする。そして、CPU203は、RAM202にロードされたモデル情報206に基づいて、管理情報の推定及び/又は予測に係る処理を実現する。
また、CPU203は、電源オフの前に例えばNANDメモリ100内の所定の位置に管理情報207を格納し、電源オンのとき(メモリシステム1の起動時)に例えば図1に示すように、RAM202にロードする。なお、管理情報の推定及び/又は予測に係る処理において、管理情報207は、その処理の該当ブロック及び/又はワードラインの書き込み時に作成され、処理に応じて更新される。管理情報は、ブロック及び/又はワードラインごとに作成される。管理情報は、例えば所定の読み出し電圧ごとに推定及び/又は予測され、読み出し電圧ごとに更新される。所定の読み出し電圧としては、基準値又は推定及び/又は予測された読み出し電圧が使用可能である。なお、管理情報は、少なくとも1つの読み出し電圧に関して推定及び/又は予測された値が、他の読み出し電圧に関する管理情報の更新に使用される場合もあり得る。また、管理情報の更新には、少なくとも2つの読み出し電圧に関して推定及び/又は予測された値の平均値や中央値などの演算値が使用される場合もあり得る。なお、管理情報には、以下に説明する、読み出し電圧の推定値、読み出し電圧の予測値、読み出し電圧の時間変化量の値などが含まれる。また、該当ブロックの書き込みデータが消去されたり、無効化されたりする際には、保持されている管理情報は、消去されたり、無効化されたりする。
<状態空間モデルについて>
以下、離散的な時点k(k=1,...,n)において、読み出し電圧の観測値ykを得る手段があるものとする。ここで、離散的な時点k(k=1,...,n)は、複数のメモリセルに対する読み出し電圧の設定値がメモリコントローラ200により更新される複数のタイミングの一例である。また、直接観測することができない状態量として、時点kにおける真の読み出し電圧の値μ1,kと、その時間変化量μ2,kを考える。これらの変数の関係を、状態空間モデルで表す。状態空間モデルは、状態方程式及び観測方程式を含む。ここで、真の読み出し電圧の値μ1,kは、読み出し電圧の設定値の一例である。また、真の読み出し電圧の値μ1,kの時間変化量μ2,kは、読み出し電圧の設定値の変化量の一例である。
以下、離散的な時点k(k=1,...,n)において、読み出し電圧の観測値ykを得る手段があるものとする。ここで、離散的な時点k(k=1,...,n)は、複数のメモリセルに対する読み出し電圧の設定値がメモリコントローラ200により更新される複数のタイミングの一例である。また、直接観測することができない状態量として、時点kにおける真の読み出し電圧の値μ1,kと、その時間変化量μ2,kを考える。これらの変数の関係を、状態空間モデルで表す。状態空間モデルは、状態方程式及び観測方程式を含む。ここで、真の読み出し電圧の値μ1,kは、読み出し電圧の設定値の一例である。また、真の読み出し電圧の値μ1,kの時間変化量μ2,kは、読み出し電圧の設定値の変化量の一例である。
本実施形態では、時点k−1からkへの状態遷移、すなわち状態ベクトルμk−1から状態ベクトルμkへの状態遷移を表す状態方程式は、式(1)で表現されるとする。
ここで、ベクトルνk−1は、正規分布に従う過程誤差のベクトルであるとする。また、ベクトルνk−1の各成分(要素)の平均は、0であるとする。また、状態ベクトルμの真値の共分散行列Qは、以下の通りであるとする。
なお、式(1)に示す状態方程式は、式(2)のように表現することができる。
また、本実施形態では、時点kにおける観測方程式は、式(3)で表現されるとする。
ここで、wkは、正規分布に従う観測誤差であるとする。また、wkの平均は、0であるとする。また、wkの分散は、σ2 wであるとする。なお、式(3)に示す観測方程式は、式(4)のように表現することもできる。
ここで、上述の状態方程式に基づいた、カルマンフィルタアルゴリズムによる状態推定方法について説明する。管理情報の更新処理では、以下の3つのステップに従い、状態ベクトルμ^k及び状態ベクトルμ^kの共分散行列Skを更新する。なお、既知パラメータ、初期値、入力及び出力は、それぞれ以下に示す通りであるとする。ただし、σ0は、適度に大きな値であるとする。
≪1.予測処理≫
まず、以下に示す関係式により、状態ベクトルμ^k及び状態ベクトルμ^kの共分散行列Skの中間値を求める予測処理を行う。予測処理は、以下の関係式に示されるように、時点k−1(1つ前の時点)の管理情報に基づいて、時点k(現時点)での管理情報を予測する一期先予測を行う処理である。なお、以下に示す関係式において、共分散行列Skの(1,1)成分は、予測値の分散に相当する値であり、現時点kでの予測値の信頼性を示す値である。つまり、予測値の分散は、1つ前のタイミングで更新された設定値に関する分散である。ここで、時点k(現時点)は、第1のタイミングの一例である。また、時点k−1(1つ前の時点)は、第2のタイミングの一例である。予測処理は、第3の動作の一例である。
まず、以下に示す関係式により、状態ベクトルμ^k及び状態ベクトルμ^kの共分散行列Skの中間値を求める予測処理を行う。予測処理は、以下の関係式に示されるように、時点k−1(1つ前の時点)の管理情報に基づいて、時点k(現時点)での管理情報を予測する一期先予測を行う処理である。なお、以下に示す関係式において、共分散行列Skの(1,1)成分は、予測値の分散に相当する値であり、現時点kでの予測値の信頼性を示す値である。つまり、予測値の分散は、1つ前のタイミングで更新された設定値に関する分散である。ここで、時点k(現時点)は、第1のタイミングの一例である。また、時点k−1(1つ前の時点)は、第2のタイミングの一例である。予測処理は、第3の動作の一例である。
予測処理の後に、管理情報の更新処理を行う。以下に説明するように、観測値ykが得られている場合(例えば図8の矢印A1,B1,C1の時点)の更新処理と、観測値ykが得られていない場合(例えば図8の矢印A1〜B1の期間、矢印B1〜C1の期間及び矢印C1〜の期間)の更新処理とは異なる。
≪2.観測値ykが得られている場合の更新処理≫
ここでは、現時点kでの観測値ykが得られている場合について説明する。ここで、観測値ykが得られている場合の現時点kは、複数のタイミングのうちの所定のあるタイミングの一例である。また、観測値ykが得られている場合の更新処理は、第1の動作の一例である。まず、予測処理で得られた状態ベクトルの中間値を用いて、予測誤差νを求める。次いで、カルマンゲインベクトルgを求める。
ここでは、現時点kでの観測値ykが得られている場合について説明する。ここで、観測値ykが得られている場合の現時点kは、複数のタイミングのうちの所定のあるタイミングの一例である。また、観測値ykが得られている場合の更新処理は、第1の動作の一例である。まず、予測処理で得られた状態ベクトルの中間値を用いて、予測誤差νを求める。次いで、カルマンゲインベクトルgを求める。
その後、得られた予測誤差ν及びカルマンゲインベクトルgを用いて、状態推定値(状態ベクトルμ^k)及び状態推定値の共分散行列Skを更新する。
≪3.観測値ykが得られていない場合の更新処理≫
ここでは、現時点kでの観測値ykが得られていない場合について説明する。ここで、観測値ykが得られていない場合の現時点kは、複数のタイミングのうちの所定のあるタイミングの1つ後のタイミングの一例である。また、観測値ykが得られていない場合の更新処理は、第2の動作の一例である。この場合には、予測処理で一期先予測により得られた予測値(中間値)をそのまま用いて、状態推定値(状態ベクトルμ^k)及び状態推定値の共分散行列Skを更新する。
ここでは、現時点kでの観測値ykが得られていない場合について説明する。ここで、観測値ykが得られていない場合の現時点kは、複数のタイミングのうちの所定のあるタイミングの1つ後のタイミングの一例である。また、観測値ykが得られていない場合の更新処理は、第2の動作の一例である。この場合には、予測処理で一期先予測により得られた予測値(中間値)をそのまま用いて、状態推定値(状態ベクトルμ^k)及び状態推定値の共分散行列Skを更新する。
このように、本実施形態に係るメモリシステム1は、時点kの観測値ykがある場合に、値を推定する手法の1つであるカルマンフィルタアルゴリズムを用いた推定を含む更新処理により管理情報を更新する。一方で、メモリシステム1は、時点kの観測値ykがない場合には、予測処理の一期先予測により得られた予測値を用いた更新処理により管理情報を更新する。
なお、最適読み出し電圧(しきい値電圧)の観測手法(リード方式)としては、種々の方法が使用可能である。具体的には、例えば、シフトテーブルを用いたリード方式(以下、シフトテーブルリードという)や、トラッキングリード(Vth Trackingともいう)などが利用可能である。
シフトテーブルリードとは、各ページ種別(例えば、LOWER/MIDDLE/UPPERページ)に対して複数の読み出し電圧セットが登録されたシフトテーブルを用意しておき、この複数の読み出し電圧セットのそれぞれを順次使用してリード動作を実行することで、読出しに成功する最適読み出し電圧セットを特定するインデックスを特定するリード動作である。換言すれば、このリード動作は、複数の読み出し電圧セットのそれぞれを順次、NANDメモリ100の複数のメモリセルのしきい値電圧分布と比較して最適読み出し電圧セットを特定するリード動作である。
トラッキングリードとは、例えば、読み出し電圧を所定の刻み幅でシフトしながらリード動作を複数回実行することで、該当ページに含まれる複数のメモリセルにプログラムされたしきい値電圧の分布のヒストグラム(以下、単にしきい値電圧分布という)を生成し、生成したしきい値電圧分布に基づいて、読出しに成功する電圧レベルまで読み出し電圧をシフトさせるためのシフト量を特定するリード動作である。
なお、トラッキングリードとしては、メモリコントローラ200側で行なうリード方式であっても、NANDメモリ100内部で行なうリード方式(On-Chip Tracking Readともいう)であってもよい。
また、トラッキングリードにおいて、ヒストグラムと読み出し電圧の最適値との関係を示すモデル(行列)を予め用意しておくことにより、ヒストグラムの区間を粗く設定して読み出し電圧の最適値を特定することも可能である。ここで、以下、単にしきい値電圧分布という場合には、区間が粗く設定されたしきい値電圧分布のヒストグラムも含まれ得る。
以下、本実施形態に係るメモリシステム1の動作の一例について、図面を参照しつつ、より詳細に説明する。
図9は、図1のメモリシステム1において実行される、バックグラウンド処理の一例を示すフローチャートである。メモリコントローラ200は、メモリシステム1において有効な物理ブロックすべてについて、予め決められた時間内に完了するように、定期的に図9の流れを実行する。
まず、メモリコントローラ200は、バックグラウンド処理の実施対象の物理アドレス一覧を決定する(S101)。
S101に続いて、メモリコントローラ200は、バックグラウンド処理を実行する物理アドレスを決定する(S102)。S102に続いて、メモリコントローラ200は、該当物理アドレスに対応する過去の管理情報(状態ベクトル及び共分散行列)から、現在の管理情報(状態ベクトル及び共分散行列)を予測する(S103)。
S103に続いて、メモリコントローラ200は、該当物理アドレスに対応する一時点前の状態ベクトルに基づいて、予測値の分散が許容範囲内であるか否かを判定する。換言すれば、メモリコントローラ200は、予測値の分散に相当する値である共分散行列のSkの(1,1)成分の値が許容範囲内(例えば所定の閾値以下)であるか否かを判定する。許容範囲の大きさ(所定の閾値)は、例えば予め設定されてメモリコントローラ200内の記憶領域に記憶されているとする。なお、予測値の分散が許容範囲内であるか否かの判定は、予測の信頼性に関する判定であり、予測ズレが検出されたか否かの判定の一例である。
予測値の分散が許容範囲内であると判定されたとき(S104:Yes)、メモリコントローラ200は、予測値を含む更新された状態ベクトルを該当物理アドレスの管理情報として記憶する(S105)。一方で、予測値の分散が許容範囲内であると判定されなかった(例えば所定の閾値より大きい)とき(S104:No)、メモリコントローラ200は、読み出し電圧を観測して読み出し電圧の最適値を取得する(S106)。S106に続いて、メモリコントローラ200は、過去の管理情報と、取得した読み出し電圧値とを用いて管理情報を更新し(S107)、該当物理アドレスに対応する読み出し電圧の推定値と、更新された状態ベクトルとを該当物理アドレスの管理情報として記憶する(S108)。これらのことから、S104の判定は、観測値の取得の要否の判定であり、予測処理(第3の動作)の後に、観測値の取得(観測)を伴う更新処理(第1の動作)と、観測値の取得(観測)を伴わない更新処理(第2の動作)とのいずれを実行するかの判定であると表現できる。
S105又はS108に続いて、メモリコントローラ200は、バックグラウンド処理の実施対象の物理アドレスのうち、処理が未実施のアドレスがあるか否かを判定する(S109)。メモリコントローラ200は、処理が未実施のアドレスがあると判定された場合(S109:Yes)はS102〜S109の流れを繰り返し、判定されなかった場合(S109:No)は、今回のバックグラウンド処理を終了する。
このようにして更新される管理情報は、ホストリードにおいて使用される。図10は、図1のメモリシステムにおいて実行される、ホストリード処理の一例を示すフローチャートである。
メモリコントローラ200は、ホスト2からリードコマンドを受信(S201)した後、対応するNANDメモリ100の物理アドレスを特定する(S202)。S202に続いて、メモリコントローラ200は、該当物理アドレスに対応する状態ベクトルの成分(要素)の一部、すなわち読み出し電圧の予測値を、該当アドレスの読み出し電圧に設定し(S203)、該当アドレスからデータを読み出す(S204)。S204に続いて、メモリコントローラ200は、ECC205を使用してエラー訂正を実施し(S205)、エラー訂正が成功したか否かを判定する(S206)。
エラー訂正が成功したと判定されたとき(S206:Yes)、メモリコントローラ200は、ホスト2に読み出されたデータを転送し(S207)、今回のホストリード処理を終了する。一方で、エラー訂正が成功したと判定されなかったとき(S206:No)、メモリコントローラ200は、リードリトライ処理を実行する(S208〜S212)。
リードリトライ処理において、メモリコントローラ200は、上述のバックグラウンド処理と同様にして、最適読み出し電圧を観測して読み出し電圧の最適値を取得する(S208)。また、メモリコントローラ200は、過去の管理情報と、取得した読み出し電圧値とを用いて管理情報を更新し、該当物理アドレスに対応する読み出し電圧の推定値と、更新された状態ベクトル及び共分散行列とを管理情報として記憶する(S209)。S209に続いて、メモリコントローラ200は、更新された状態ベクトルの成分の一部、すなわち、更新された読み出し電圧の推定値を該当アドレスに対応する読み出し電圧に設定し(S210)、設定された読み出し電圧を用いて該当アドレスからデータを読み出す(S211)。S211に続いて、メモリコントローラ200は、ECC205を使用してエラー訂正を実施し(S212)、エラー訂正が成功したか否かを判定する(S213)。
リードリトライ処理において、エラー訂正が成功したと判定されたとき(S213:Yes)、メモリコントローラ200は、ホスト2に読み出されたデータを転送し(S207)、今回のホストリード処理を終了する。一方で、エラー訂正が成功したと判定されなかったとき(S213:No)、メモリコントローラ200は、ホスト2へリード失敗を通知する(S214)。
なお、リードリトライ処理のS211のように、読み出し電圧の最適値が取得(観測)された後に実施される読み出しでは、取得(観測)された読み出し電圧の値が使用されてもよい。例えば、取得(観測)された最適値に基づいて更新処理を実行する(S209)とともに、取得(観測)された最適値を設定値として一時的に設定してデータを読み出し(S211)、その後、更新された推定値を設定値に設定(S210)してもよい。この場合、一時的な設定値による読み出し(S211)の後に、更新処理(S209,S210)が実行されてもよい。また、例えば、リードリトライ処理では、S209,S210を実行せずに、リードリトライ処理において設定される読み出し電圧としてS208において取得(観測)された読み出し電圧の値が使用されてもよい。この場合、例えばリードリトライ処理のエラー訂正に失敗したとき(S213:No)にS209,S210が実行されてもよいし、次のバックグラウンド処理において観測値を用いた更新処理が実行されるように該当物理アドレスに対応する管理情報にマークが入れられてもよい。管理情報に入れられるマークについては、後述する。
なお、リードリトライ処理において、エラー訂正が成功したと判定されなかったとき(S213:No)、メモリコントローラ200は、他のECC成功率を向上させる処理を実行してもよい。
なお、管理情報が更新された時点の書き込みからの経過時間などは、例えばCPU203のクロックに基づいて、メモリコントローラ200により計測される。
このように、本実施形態に係るバックグラウンド処理は、予測値の分散が許容範囲内であると判定されなかった場合に、最適読み出し電圧の取得(観測)を実行するように構成されている。この構成によれば、読み出しを伴う処理を少なくすることができる。換言すれば、パトロールリードの頻度を削減しつつ、しきい値電圧の時間変動への追従性を維持することができる。また、本実施形態に係るホストリード処理は、リードリトライ処理において、上述のバックグラウンド処理と同様にして、管理情報を更新する。この構成によれば、ホストリード時に取得(観測)した最適読み出し電圧を用いて管理情報が更新されるため、バックグラウンド処理における読み出しを伴う処理をさらに少なくすることができる。つまり、本実施形態に係るメモリシステム1は、観測頻度を削減しつつ、しきい値電圧の変化に対する読み出し電圧の追従性を維持することができる。換言すれば、本実施形態に係るメモリシステム1は、観測頻度を増加させずに、しきい値電圧の変化に対する読み出し電圧の追従性を向上させることができる。
また、本実施形態に係るメモリシステム1における管理情報の更新処理では、1時点前の管理情報だけ保持していれば、その時点の管理情報を推定及び/又は予測することができる。
(第2の実施形態)
第1の実施形態では、管理情報の更新処理にカルマンフィルタアルゴリズムを用いる場合、すなわち共分散行列Skを更新する場合を例として説明したが、これに限らない。本実施形態に係るメモリシステム1は、RLS(Recursive Least Square)アルゴリズムを用いて逆相関行列Pkを更新する管理情報の更新処理を行う。
第1の実施形態では、管理情報の更新処理にカルマンフィルタアルゴリズムを用いる場合、すなわち共分散行列Skを更新する場合を例として説明したが、これに限らない。本実施形態に係るメモリシステム1は、RLS(Recursive Least Square)アルゴリズムを用いて逆相関行列Pkを更新する管理情報の更新処理を行う。
<RLSアルゴリズムについて>
RLSアルゴリズムは、下記のコスト関数を最小化する状態ベクトルμ^kを逐次的に求めるアルゴリズムである。
RLSアルゴリズムは、下記のコスト関数を最小化する状態ベクトルμ^kを逐次的に求めるアルゴリズムである。
ただし、ベクトルμi(i=1,2,...,k)には、次のような関係式があるとする。
RLSアルゴリズムは、以下に示すように、上述のカルマンフィルタアルゴリズムに似せた形で記述することができる。管理情報の更新処理では、以下の3つのステップに従い、状態ベクトルμ^k及び状態ベクトルμ^kの逆相関行列Pkを更新する。なお、既知パラメータ、初期値、入力及び出力は、それぞれ、以下に示す通りであるとする。ただし、λは、忘却係数であり、δは、正の微小量であるとする。
≪1.予測処理≫
まず、以下に示す関係式により、状態ベクトルμ^k及び状態ベクトルμ^kの逆相関行列Pkの中間値を求める予測処理を行う。予測処理は、以下の関係式に示されるように、時点k−1(1つ前の時点)の管理情報に基づいて、時点k(現時点)での管理情報を予測する一期先予測を行う処理である。なお、以下に示す関係式において逆相関行列Pkの(1,1)成分は、現時点kでの予測値の信頼性を示す値である。なお、逆相関行列Pkにスケール合わせの定数を乗じた行列は、共分散行列Skに相当する。したがって、逆相関行列Pkの(1,1)成分は、読み出し電圧の予測値の分散と表現されてもよい。例えば、図9のS104では、予測値の信頼性が許容範囲内(例えば所定の閾値以下)であるか否かが判定される。換言すれば、メモリシステム1においてメモリコントローラ200は、予測値の分散、すなわち逆相関行列Pkの(1,1)成分の値が所定の閾値より大きい場合に予測精度が低いと判定する。ここで、所定の閾値としては、例えば第1の実施形態に係る閾値をスケール合わせの定数で除した値が利用可能である。その後、予測値の信頼性が許容範囲内ではない(例えば所定の閾値より大きい)とき、観測値ykが取得(観測)される。なお、メモリコントローラ200は、読み出し電圧の設定値を更新する複数のタイミングの各々において、予測値の分散の値、すなわち逆相関行列Pkの(1,1)成分の値を保持する。
まず、以下に示す関係式により、状態ベクトルμ^k及び状態ベクトルμ^kの逆相関行列Pkの中間値を求める予測処理を行う。予測処理は、以下の関係式に示されるように、時点k−1(1つ前の時点)の管理情報に基づいて、時点k(現時点)での管理情報を予測する一期先予測を行う処理である。なお、以下に示す関係式において逆相関行列Pkの(1,1)成分は、現時点kでの予測値の信頼性を示す値である。なお、逆相関行列Pkにスケール合わせの定数を乗じた行列は、共分散行列Skに相当する。したがって、逆相関行列Pkの(1,1)成分は、読み出し電圧の予測値の分散と表現されてもよい。例えば、図9のS104では、予測値の信頼性が許容範囲内(例えば所定の閾値以下)であるか否かが判定される。換言すれば、メモリシステム1においてメモリコントローラ200は、予測値の分散、すなわち逆相関行列Pkの(1,1)成分の値が所定の閾値より大きい場合に予測精度が低いと判定する。ここで、所定の閾値としては、例えば第1の実施形態に係る閾値をスケール合わせの定数で除した値が利用可能である。その後、予測値の信頼性が許容範囲内ではない(例えば所定の閾値より大きい)とき、観測値ykが取得(観測)される。なお、メモリコントローラ200は、読み出し電圧の設定値を更新する複数のタイミングの各々において、予測値の分散の値、すなわち逆相関行列Pkの(1,1)成分の値を保持する。
予測処理の後に、管理情報の更新処理を行う。以下に説明するように、観測値ykが得られている場合(例えば図8の矢印A1,B1,C1の時点)の更新処理と、観測値ykが得られていない場合(例えば図8の矢印A1〜B1の期間、矢印B1〜C1の期間及び矢印C1〜の期間)の更新処理とは異なる。
≪2.観測値ykが得られている場合の更新処理≫
ここでは、現時点kでの観測値ykが得られている場合について説明する。まず、予測処理で得られた状態ベクトルの中間値を用いて、予測誤差νを求める。次いで、ゲインベクトルgを求める。
ここでは、現時点kでの観測値ykが得られている場合について説明する。まず、予測処理で得られた状態ベクトルの中間値を用いて、予測誤差νを求める。次いで、ゲインベクトルgを求める。
その後、得られた予測誤差ν及びゲインベクトルgを用いて、状態推定値(状態ベクトルμ^k)及び状態推定値の逆相関行列Pkを更新する。
≪3.観測値ykが得られていない場合の更新処理≫
ここでは、現時点kでの観測値ykが得られていない場合について説明する。この場合には、予測処理で一期先予測により得られた予測値(中間値)をそのまま用いて、状態推定値(状態ベクトルμ^k)及び状態推定値の逆相関行列Pkを更新する。
ここでは、現時点kでの観測値ykが得られていない場合について説明する。この場合には、予測処理で一期先予測により得られた予測値(中間値)をそのまま用いて、状態推定値(状態ベクトルμ^k)及び状態推定値の逆相関行列Pkを更新する。
このようにして管理情報の更新処理が行われても、第1の実施形態と同様の効果が得られる。さらに、RLSアルゴリズムを用いる状態推定方法は、上述のカルマンアルゴリズムを用いる状態推定方法と比較して、処理中に保持する情報量が少ないため、計算コストを低減できるという効果がある。
(第3の実施形態)
第1の実施形態では予測値の信頼性を示す共分散行列Skの(1,1)成分(予測値の分散)に基づいて予測ズレを検出するバックグラウンド処理を例として説明し、第2の実施形態では予測値の信頼性を示す逆相関行列Pkの(1,1)成分(予測値の分散)に基づいて予測ズレを検出するバックグラウンド処理を例として説明したが、これに限らない。予測ズレは、さらに他の手法により検出されてもよい。本実施形態に係るバックグランド処理では、現在の管理情報を予測した後に予測された管理情報に基づいてデータの読み出しを行う。予測ズレは、読み出されたデータに関するエラー訂正が成功したか否かに応じて判定される。
第1の実施形態では予測値の信頼性を示す共分散行列Skの(1,1)成分(予測値の分散)に基づいて予測ズレを検出するバックグラウンド処理を例として説明し、第2の実施形態では予測値の信頼性を示す逆相関行列Pkの(1,1)成分(予測値の分散)に基づいて予測ズレを検出するバックグラウンド処理を例として説明したが、これに限らない。予測ズレは、さらに他の手法により検出されてもよい。本実施形態に係るバックグランド処理では、現在の管理情報を予測した後に予測された管理情報に基づいてデータの読み出しを行う。予測ズレは、読み出されたデータに関するエラー訂正が成功したか否かに応じて判定される。
図11は、図1のメモリシステム1において実行される、バックグラウンド処理の別の一例を示すフローチャートである。
メモリコントローラ200は、それぞれ第1の実施形態に係るバックグラウンド処理(図9のS101〜S103)と同様にして、処理対象の物理アドレス一覧を決定し(S301)、処理を実行するアドレスを決定し(S302)、該当物理アドレスに対応する過去の管理情報(状態ベクトル及び共分散行列)を用いて、現在の時点における状態ベクトル及び共分散行列を予測(S303)する。
メモリコントローラ200は、第1の実施形態に係るホストリード処理(図10のS203〜S206)と同様にして、予測された状態ベクトルの成分(要素)の一部、すなわち読み出し電圧の予測値を、該当アドレスの読み出し電圧に設定し(S304)、該当アドレスからデータを読み出し(S305)、ECC205を使用してエラー訂正を実施し(S306)、エラー訂正が成功したか否かを判定する(S307)。
エラー訂正が成功したと判定されたとき(S307:Yes)、メモリコントローラ200は、第1の実施形態に係るバックグラウンド処理(図9のS105)と同様にして、予測値を含む更新された状態ベクトルを該当物理アドレスの管理情報として記憶する(S308)。一方で、エラー訂正が成功したと判定されなかったとき(S307:No)、メモリコントローラ200は、第1の実施形態に係るバックグラウンド処理(図9のS106〜S108)とそれぞれ同様にして、取得(観測)した読み出し電圧値を用いて更新された管理情報を記憶する(S309〜S311)。
S308又はS311に続いて、メモリコントローラ200は、第1の実施形態に係るバックグラウンド処理(図9のS109)と同様にして、処理が未実施のアドレスがあるか否かを判定する(S312)。メモリコントローラ200は、バックグラウンド処理の実施対象の物理アドレスのうち、処理が未実施のアドレスがあると判定された場合(S312:Yes)はS302〜S312の流れを繰り返し、判定されなかった場合(S312:No)は、今回のバックグラウンド処理を終了する。
このように、本実施形態に係るバックグラウンド処理は、エラー訂正が成功したか否かに基づいて予測ズレを検出する。この構成であれば、第1の実施形態と比較してデータ読み出しに伴う負荷は増加するものの、しきい値電圧の時間変動への追従性や予測/推定精度を向上させることができる。
(第4の実施形態)
第1の実施形態では、予測ズレが検出されたときに最適読み出し電圧を取得(観測)するバックグラウンド処理を例として説明したが、これに限らない。本実施形態に係るバックグランド処理では、予測ズレが生じているか否かに関わらず、最適読み出し電圧を取得(観測)し、上述のアルゴリズムを用いた推定により管理情報を更新する。
第1の実施形態では、予測ズレが検出されたときに最適読み出し電圧を取得(観測)するバックグラウンド処理を例として説明したが、これに限らない。本実施形態に係るバックグランド処理では、予測ズレが生じているか否かに関わらず、最適読み出し電圧を取得(観測)し、上述のアルゴリズムを用いた推定により管理情報を更新する。
図12は、図1のメモリシステム1において実行される、バックグラウンド処理の別の一例を示すフローチャートである。
メモリコントローラ200は、第1の実施形態に係るバックグラウンド処理(図9のS101〜S102)と同様にして、処理対象の物理アドレス一覧を決定し(S401)、処理を実行するアドレスを決定する(S402)。
メモリコントローラ200は、それぞれ第1の実施形態に係るバックグラウンド処理(図9のS106〜S108)と同様にして、最適読み出し電圧を観察して読み出し電圧の最適値を取得し(S403)、過去の管理情報と、取得された読み出し電圧とを用いて管理情報を更新し(S404)、更新された管理情報を該当物理アドレスの管理情報として記憶する(S405)。その後、メモリコントローラ200は、第1の実施形態に係るバックグラウンド処理(図9のS109)と同様にして、バックグラウンド処理の実施対象の物理アドレスのうち、処理が未実施のアドレスがあるか否かを判定する(S406)。本判定において、処理が未実施のアドレスがあると判定された場合(S406:Yes)はS402〜S406の流れを繰り返し、判定されなかった場合(S406:No)は今回のバックグラウンド処理を終了する。
このように、本実施形態に係るバックグラウンド処理は、予測ズレが生じているか否かに関わらず、最適読み出し電圧を取得(観測)する。この構成であれば、第1の実施形態と比較してパトロールリードの頻度は増加するものの、しきい値電圧の時間変動への追従性や予測/推定精度を向上させることができる。
(第5の実施形態)
第5の実施形態に係るホストリード処理は、エラー訂正が成功した場合に、次回のバックグラウンド処理における観測値取得の要否をさらに判定する。
第5の実施形態に係るホストリード処理は、エラー訂正が成功した場合に、次回のバックグラウンド処理における観測値取得の要否をさらに判定する。
図13は、図1のメモリシステム1において実行される、ホストリード処理の別の一例を示すフローチャートである。
S501〜S506は、それぞれ第1の実施形態に係るホストリード処理(図10のS201〜S206)と同様である。
エラー訂正が成功したと判定されたとき(S506:Yes)、メモリコントローラ200は、管理情報の更新処理による予測が十分に正確であるか否かを判定する(S507)。本判定は、例えば、BER(Bit Error Rate)が所定の閾値より大きいか否かに基づいて行われる。BERに関する所定の閾値は適宜設定されればよいが、例えばエラー訂正により1%まで訂正可能であるとすると、その80%(0.8%)等がBERに関する所定の閾値として使用されればよい。また、本判定は、ビットエラーの非対称性に基づいて行われてもよい。ビットエラーの非対称性に基づく判定は、例えば、“0”としてプログラムされたデータが“1”としてリードされた数及び/又は割合、“1”としてプログラムされたデータが“0”としてリードされた数及び/又は割合、これらの数の割合などの値が所定の閾値より大きいか否かに基づいて行われてもよい。また、ビットエラーの非対称性に基づく判定は、例えば、“0”としてリードされたデータが“1”にエラー訂正された数及び/又は割合、“1”としてリードされたデータが“0”にエラー訂正された数及び/又は割合、これらの数の割合などの値が所定の閾値より大きいか否かに基づいて行われてもよい。また、本判定は、BER及びビットエラーの非対称性の両方に基づいて行われてもよい。なお、判定に使用される各種の閾値は、例えば予め設定されてメモリコントローラ200内の記憶領域に記憶されているとする。
予測が十分に正確であると判定されたとき(S507:Yes)、メモリコントローラ200は、第1の実施形態に係るホストリード処理(図10のS207)と同様にして、ホスト2に読み出されたデータを転送し(S508)、今回のホストリード処理を終了する。一方で、予測が十分に正確であると判定されなかったとき(S507:No)、メモリコントローラ200は、次回バックグラウンド処理時に最適読み出し電圧の取得(観測)実行が行われるよう、該当物理アドレスに対応する管理情報にマークを入れる。つまり、S507の判定は、次回のバックグラウンド処理における観測値取得の要否の判定であると表現できる。管理情報に入れられたマークは、バックグラウンド処理における管理情報の予測時(図9のS103)に参照される。換言すれば、次回のバックグラウンド処理において、メモリコントローラ200は、過去の管理情報に基づいて現在の管理情報を予測する際にホストリード時のマークがあるか否かを確認する(図9のS103)。管理情報にマークを入れる方法としては、例えば、共分散行列に非常に大きな値(許容範囲を超える大きさの予測値の分散の値)を記憶しておく方法が使用可能である。この場合、次回のバックグラウンド処理において、予測値の分散の値が許容範囲を超えると判定され(図9のS104:No)、最適読み出し電圧が取得(観測)される(図9のS106)。
なお、管理情報にマークを入れるタイミングは、例えば、ホスト2に読み出されたデータを転送(S508)した後であってもよい。
一方で、エラー訂正が成功したと判定されなかったとき(S506:No)、メモリコントローラ200は、第1の実施形態に係るホストリード処理(図10のS208〜S214)と同様にして、リードリトライ処理などを実行する(S510〜S516)。
このように、本実施形態に係るホストリード処理は、エラー訂正が成功した場合に、次回のバックグラウンド処理における観測値取得の要否をさらに判定する。この構成によれば、エラー訂正が成功した場合であっても、予測が不十分である場合には次回のバックグラウンド処理において観測値を取得することができる。このため、第1の実施形態と比較してしきい値電圧の時間変動への追従性や予測/推定精度を向上させることができる。
なお、バックグラウンド処理において本実施形態に係るホストリード処理と同様にして観測値取得の要否が判定されてもよい。
(第6の実施形態)
NANDメモリ100など、メモリにデータが書き込まれた直後は、そのしきい値電圧の変化(例えば低下)が大きい。このため、本実施形態に係るバックグラウンド処理では、データの書き込み直後の期間と、その後の期間との間で、互いに異なる管理情報の更新処理を実行する。
NANDメモリ100など、メモリにデータが書き込まれた直後は、そのしきい値電圧の変化(例えば低下)が大きい。このため、本実施形態に係るバックグラウンド処理では、データの書き込み直後の期間と、その後の期間との間で、互いに異なる管理情報の更新処理を実行する。
図14は、図1のメモリシステムにおけるバックグラウンド処理の別の一例の概要を説明するための図である。図14に示す例では、縦軸は、読み出し電圧の値の初期設定値からのシフト量を示すシフト量[V]を示し、横軸は、書き込みからの経過時間[H]を示す。また、図14に示すシフト量の分布に関して、実線は、読み出し電圧の最適値を示し、破線は、本実施形態に係るメモリシステム1により予測/推定された読み出し電圧の値(予測値/推定値)を示し、プロットは、取得(観測)された読み出し電圧の最適値(観測値)を示す。ここで、図14に実線で示す読み出し電圧の最適値は、各時点において観測が実行された場合に各時点で取得される値であり、観測が行われていない場合には、メモリシステム1では未知の値である。
図14の矢印A2の期間は、メモリセルへのデータの書き込み直後の期間であるとする。また、矢印B2の期間は、メモリセルへのデータの書き込みから所定の時間が経過した後の期間であるとする。また、矢印C2の時点では、予測ズレが検出されたとする。
矢印A2の期間では、しきい値電圧の大きな変化に追従するために、一定時間間隔で最適読み出し電圧が取得(観測)され、観測値を用いて算出された推定値により管理情報が更新される。つまり、矢印A2の期間では、例えば第3の実施形態に係るバックグラウンド処理と同様のバックグラウンド処理が実行される。
一方で、矢印B2の期間では、推定値に基づいて管理情報の予測及び更新が行われた後、矢印C2の時点で予測ズレが検出されるまで、予測値に基づいて管理情報が更新され続ける。予測ズレが検出されたときには観測値が取得され、観測値に基づいて管理情報の推定及び更新が行われる。つまり、矢印B2の期間では、例えば第1の実施形態に係るバックグラウンド処理と同様のバックグラウンド処理が実行される。
なお、矢印A2の期間と、矢印B2の期間とは、書き込みからの所定の経過時間で切り替えられてもよいし、観測値及び/又は観測値の変化量と、所定の閾値との比較結果に基づいて、観測値の変化が小さくなったと判定されたときに切り替えられてもよい。なお、所定の経過時間や所定の閾値は、例えば予め設定されて、メモリコントローラ200の記憶領域などに記憶されていればよい。
このように、本実施形態に係るバックグラウンド処理は、データの書き込み直後の期間と、その後の期間との間で、互いに異なる管理情報の更新処理を実行する。この構成によれば、第1の実施形態と比較してしきい値電圧の時間変動への追従性や予測/推定精度を向上させることができる。
(第7の実施形態)
メモリシステム1において、何らかの原因により電源の供給が絶たれる場合がある。メモリシステムへ1への電源の供給が断たれている期間では、バックグラウンド処理が実行されないため、管理情報が更新されない。一方で、管理情報の更新が行われているか否かに関わらず、しきい値電圧は変化し得る。このため、電源の供給が再開されたときに、管理情報がしきい値電圧の変化に追従できていない可能性がある。そこで、本実施形態に係るメモリシステム1では、電源の供給が再開されたとき、管理情報の更新処理を繰り返すように構成される。
メモリシステム1において、何らかの原因により電源の供給が絶たれる場合がある。メモリシステムへ1への電源の供給が断たれている期間では、バックグラウンド処理が実行されないため、管理情報が更新されない。一方で、管理情報の更新が行われているか否かに関わらず、しきい値電圧は変化し得る。このため、電源の供給が再開されたときに、管理情報がしきい値電圧の変化に追従できていない可能性がある。そこで、本実施形態に係るメモリシステム1では、電源の供給が再開されたとき、管理情報の更新処理を繰り返すように構成される。
メモリコントローラ200は、電源の供給が再開されたとき、現時点での最適読み出し電圧を取得(観測)し、また、電源の供給が絶たれる前に更新された最新の管理情報に基づいて、読み出し電圧を予測し、観測値と予測値とを比較する。予測値が観測値に一致したとき、メモリコントローラ200は、通常のバックグラウンド処理を再開する。ここで、予測値が観測値に一致するとは、予測値と観測値との差が所定の範囲内にある場合を含む。一方で、予測値が観測値に一致しなかったとき、メモリコントローラ200は、予測値が観測値に一致するまで、管理情報を更新し続ける。
なお、観測値と予測値との比較は、上述の実施形態に係る予測ズレの検出と同様にして実行されてもよい。つまり、メモリコントローラ200は、電源の供給が再開されたとき、予測ズレが検出されなくなるまで管理情報の更新処理を繰り返すように構成されていてもよい。
ここで、電源の供給が絶たれていた期間は、メモリシステム1では未知の情報であるが、本実施形態に係るメモリコントローラ200によれば、電源の供給が再開されたとき、電源の供給が断たれていた期間を推定することができる。図15は、図1のメモリシステムにおける経過時間の推定について説明するための図である。図15に示す例では、縦軸は、読み出し電圧の値の初期設定値からのシフト量を示すシフト量[V]を示し、横軸は、書き込みからの経過時間[H]を示す。また、図15に示すシフト量の分布に関して、実線は、読み出し電圧の最適値を示し、破線は、本実施形態に係るメモリシステム1により予測/推定された読み出し電圧の値(予測値/推定値)を示し、プロットは、取得(観測)された読み出し電圧の最適値(観測値)を示す。ここで、図15に実線で示す読み出し電圧の最適値は、各時点において観測が実行された場合に各時点で取得される値であり、観測が行われていない場合には、メモリシステム1では未知の値である。図15に示す例では、矢印で示す期間において電源の供給が絶たれており、実際の経過時間はTであるとする。メモリコントローラ200は、予測値が観測値に一致したとき、管理情報を更新した回数(予測回数)と、バックグラウンド処理において規定される管理情報の更新間隔とに基づいて、電源の供給が絶たれてからの経過時間T´を推定する。
このように、本実施形態に係るメモリシステム1は、電源の供給が再開されたとき、管理情報の更新処理を繰り返す。この構成によれば、電源の供給が絶たれた場合であっても、しきい値電圧の時間変動への追従性や予測/推定精度を維持することができる。また、電源の供給が断たれていた期間を推定することができる。
(第8の実施形態)
第7の実施形態において、電源の供給が絶たれた場合の処理の一例について説明したが、電源の供給が絶たれる直前に更新された管理情報の予測値(推定値)によっては、予測を繰り返すごとに予測値と観測値との差が拡大するおそれがある。そこで、本実施形態に係るバックグラウンド処理では、電源の供給が再開されたとき、観測値の取得を伴う管理情報の更新(推定)処理を実行する。換言すれば、本実施形態に係るメモリシステム1は、電源の供給が再開されたとき、予測ズレが検出された場合と同様に動作する。この構成によれば、第7の実施形態と比較して、電源の供給が絶たれた場合における、しきい値電圧の時間変動への追従性や予測/推定精度を向上させることができる。また、電源の供給が断たれていた期間の推定精度を向上させることができる。
第7の実施形態において、電源の供給が絶たれた場合の処理の一例について説明したが、電源の供給が絶たれる直前に更新された管理情報の予測値(推定値)によっては、予測を繰り返すごとに予測値と観測値との差が拡大するおそれがある。そこで、本実施形態に係るバックグラウンド処理では、電源の供給が再開されたとき、観測値の取得を伴う管理情報の更新(推定)処理を実行する。換言すれば、本実施形態に係るメモリシステム1は、電源の供給が再開されたとき、予測ズレが検出された場合と同様に動作する。この構成によれば、第7の実施形態と比較して、電源の供給が絶たれた場合における、しきい値電圧の時間変動への追従性や予測/推定精度を向上させることができる。また、電源の供給が断たれていた期間の推定精度を向上させることができる。
(第9の実施形態)
第1の実施形態では、管理情報の更新処理において、式(1)及び式(2)により表される状態方程式を用いる場合を例として説明したが、これに限らない。管理情報の更新処理において、最適読み出し電圧(しきい値電圧)の時間変化量の減衰がさらに考慮されてもよい。
第1の実施形態では、管理情報の更新処理において、式(1)及び式(2)により表される状態方程式を用いる場合を例として説明したが、これに限らない。管理情報の更新処理において、最適読み出し電圧(しきい値電圧)の時間変化量の減衰がさらに考慮されてもよい。
図16は、図1のメモリシステムにおける管理情報の更新処理の別の一例の概要を説明するための図である。本実施形態では、図16に示すように、時点kにおける真の読み出し電圧の時間変化量μ2,kの係数として、パラメータαが導入される。
ここで、パラメータαは0<α≦1を満たす値であるとする。なお、上述の実施形態において、α=1の場合については説明した。このため、以下、パラメータαが0<α<1を満たす値である場合を例として説明する。α<1を満たすパラメータαは、時間の経過とともに傾きの絶対値が減衰していく傾向を表す。なお、パラメータαの値は、0<α≦1を満たす範囲で適宜設定されればよい。一例として、パラメータαの値は、管理情報を破棄するまでの間は固定である。また、別の一例として、パラメータαの値は、メモリセルの疲弊の状態やメモリセルの品質に応じて変化される。
このとき、第1の実施形態に係る状態方程式(式(1)及び式(2))は、それぞれ以下に示す式(5)及び式(6)に拡張されて表現されるとする。
図17は、図16の管理情報の更新処理の概要を説明するための図である。図17に示す例では、縦軸は、読み出し電圧の値の初期設定値からのシフト量を示すシフト量[V]を示し、横軸は、書き込みからの経過時間[H]を示す。また、図17に示すシフト量の分布に関して、実線は、読み出し電圧の最適値を示し、破線は、本実施形態に係るメモリシステム1により予測/推定された読み出し電圧の値(予測値/推定値)を示し、プロットは、取得(観測)された読み出し電圧の最適値(観測値)を示す。ここで、図17に実線で示す読み出し電圧の最適値は、各時点において観測が実行された場合に各時点で取得される値であり、観測が行われていない場合には、メモリシステム1では未知の値である。図17に示す例では、パラメータαの値として0.8が設定されている。図17の矢印A3の時点では、最適読み出し電圧の取得(観測)が行われるとする。メモリコントローラ200は、バックグラウンド処理において、A3の時点で観測値を用いて管理情報を推定し、推定された管理情報を記憶する。その後、予測ズレが検出されるまで、管理情報の予測(更新)を継続する。
このように、本実施形態に係る管理情報の更新処理では、パラメータαが導入された状態方程式が使用される。この構成によれば、最適読み出し電圧(しきい値電圧)の時間変化量の減衰が考慮されるため、第1の実施形態と比較してしきい値電圧の時間変動への追従性や予測/推定精度を向上させることができる。また、この構成によれば、図17に示すように、観測値の取得頻度を低減させることができる。
ここで、本実施形態に係るメモリシステム1における電源の供給が再開されたときの経過時間の推定について説明する。図18は、図1のメモリシステムにおける経過時間の推定の別の一例について説明するための図である。図18に示す例では、縦軸は、読み出し電圧の値の初期設定値からのシフト量を示すシフト量[V]を示し、横軸は、書き込みからの経過時間[H]を示す。また、図18に示すシフト量の分布に関して、実線は、読み出し電圧の最適値を示し、破線は、本実施形態に係るメモリシステム1により予測/推定された読み出し電圧の値(予測値/推定値)を示し、プロットは、取得(観測)された読み出し電圧の最適値(観測値)を示す。ここで、図18に実線で示す読み出し電圧の最適値は、各時点において観測が実行された場合に各時点で取得される値であり、観測が行われていない場合には、メモリシステム1では未知の値である。本実施形態に係る管理情報の更新処理によれば、図18に示すように、経過時間の推定精度を向上させることができる。また、本実施形態に係る管理情報の更新処理によれば、第1の実施形態と比較してしきい値電圧の時間変動への追従性や予測精度が高いため、例えば第7の実施形態に係る管理情報の更新処理と比較して経過時間の推定精度を向上させ、例えば第8の実施形態に係る管理情報の更新処理と比較して観測値の取得頻度を低減させることができる。
なお、上述の各実施形態に係る技術は、任意に組み合わせ可能である。
以上説明した少なくとも1つの実施形態によれば、現時点での観測値を使用せずに管理情報が更新されるため、観測頻度を削減しつつ、しきい値電圧の変化に対する読み出し電圧の追従性を維持することができる。換言すれば、以上説明した少なくとも1つの実施形態によれば、観測頻度を増加させずに、しきい値電圧の変化に対する読み出し電圧の追従性を向上させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、100 NANDメモリ、101 メモリチップ、110 周辺回路、111 メモリセルアレイ、200 メモリコントローラ、202 RAM、203 CPU、205 ECC、206 モデル情報、207 管理情報。
Claims (19)
- 複数のメモリセルと、
前記複数のメモリセルに対する読み出し電圧の設定値を複数のタイミングで更新するメモリコントローラと
を具備し、
前記メモリコントローラは、
前記複数のタイミングのうちの所定のあるタイミングでは、前記読み出し電圧の最適値を観測し、前記最適値の観測結果に基づいて前記設定値を更新する第1の動作を実行し、
前記複数のタイミングのうちの前記所定のあるタイミングの1つ後のタイミングでは、前記最適値の観測を実行せずに、1つ前のタイミングで更新された前記設定値に基づいて前記設定値を更新する第2の動作を実行する、
メモリシステム。 - 前記メモリコントローラは、前記複数のタイミングのそれぞれで、前記第1の動作及び前記第2の動作のうちのいずれかを実行する、請求項1に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のタイミングのうちの第1のタイミングにおいて、前記複数のタイミングのうちの前記第1のタイミングの1つ前のタイミングである第2のタイミングで更新された前記設定値に基づいて前記第1のタイミングにおける前記設定値の予測値を演算し、前記予測値に基づいて予測精度を求める第3の動作を実行し、
前記予測精度が低いとき、前記予測値及び前記最適値の観測結果に基づいて前記第1の動作を実行し、
前記予測精度が高いとき、前記予測値に基づいて前記第2の動作を実行する、
請求項1又は2に記載のメモリシステム。 - 前記メモリコントローラは、前記第3の動作において、前記求められた予測値を用いて前記複数のメモリセルに対するリード及びエラー訂正を実行し、前記エラー訂正が失敗した場合に前記予測精度が低いと判定する、請求項3に記載のメモリシステム。
- 前記メモリコントローラは、前記エラー訂正が成功し、訂正された誤りの数が所定の閾値より大きい場合に前記予測精度が低いと判定する、請求項4に記載のメモリシステム。
- 前記メモリコントローラは、前記エラー訂正が成功し、前記リードしたデータのうち0から1に訂正された数と1から0に訂正された数との間の偏りが所定の閾値より大きい場合に前記予測精度が低いと判定する、請求項4又は5に記載のメモリシステム。
- 前記メモリコントローラは、前記予測値の分散が所定の閾値より大きい場合に前記予測精度が低いと判定する、請求項3から6のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記メモリシステムへの電源の供給が再開されたとき、前記第1の動作を実行する、請求項1から7のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記メモリシステムへの電源の供給が再開されたとき、前記最適値を取得し、更新された前記設定値が前記最適値に応じた所定の範囲内の値になるまで、前記第2の動作を繰り返す、請求項1から8のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記メモリシステムへの電源の供給が再開された後の前記設定値の更新回数に基づいて、前記メモリシステムへの電源の供給が絶たれてからの経過時間を推定する、請求項9に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のタイミングのうちの前記メモリセルへのデータ書き込みから所定の時間が経過するまでの間のタイミングでは、前記第1の動作を実行する、請求項1から10のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のタイミングの各々のタイミングの前記第1の動作において、前記設定値の変化量の値をさらに更新する、請求項1から11のうちのいずれか1項に記載のメモリシステム。
- 前記変化量の値は、更新されるごとに減少する、請求項12に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のタイミングの各々において、少なくとも1つの前記設定値及び前記設定値の変化量の値を保持する、請求項1から13のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のタイミングの各々において、前記設定値の予測値の分散の値を保持する、請求項14に記載のメモリシステム。
- 前記複数のタイミングの各々において、前記少なくとも1つの前記設定値及び前記設定値の変化量の値は、前記複数のメモリセルが含まれるブロック及び/又はワードラインごとに保持される、請求項14又は15に記載のメモリシステム。
- 前記複数のメモリセルの各々は、2のn乗個のしきい値領域(nは自然数)に応じて前記nビットのデータを記憶可能であり、前記メモリコントローラは、前記複数のしきい値領域のうちの隣接するしきい値領域間の複数の読み出し電圧ごとに前記設定値を持つ、請求項1から16のうちのいずれか1項に記載のメモリシステム。
- 前記複数のタイミングは、所定の間隔を有する、請求項1から17のうちのいずれか1項に記載のメモリシステム。
- 前記メモリコントローラは、前記複数のタイミングの各々において、前記メモリセルへのデータ書き込みからの経過時間を計測する、請求項1から18のうちのいずれか1項に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019170544A JP2021047695A (ja) | 2019-09-19 | 2019-09-19 | メモリシステム |
US16/790,807 US11093173B2 (en) | 2019-09-19 | 2020-02-14 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019170544A JP2021047695A (ja) | 2019-09-19 | 2019-09-19 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021047695A true JP2021047695A (ja) | 2021-03-25 |
Family
ID=74876380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019170544A Pending JP2021047695A (ja) | 2019-09-19 | 2019-09-19 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11093173B2 (ja) |
JP (1) | JP2021047695A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022164611A (ja) * | 2021-04-16 | 2022-10-27 | マイクロン テクノロジー,インク. | メモリデバイスの電圧ビンを較正するための閾値電圧決定 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11907571B2 (en) * | 2020-07-13 | 2024-02-20 | SK Hynix Inc. | Read threshold optimization systems and methods using domain transformation |
JP2022052505A (ja) * | 2020-09-23 | 2022-04-04 | キオクシア株式会社 | メモリデバイス |
JP2022125660A (ja) * | 2021-02-17 | 2022-08-29 | キオクシア株式会社 | 記憶装置及び記憶方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5319641B2 (ja) * | 2010-10-14 | 2013-10-16 | 株式会社東芝 | 診断回路および半導体集積回路 |
JP2013122793A (ja) * | 2011-12-09 | 2013-06-20 | Toshiba Corp | 不揮発性半導体記憶装置 |
US9711231B1 (en) | 2016-06-24 | 2017-07-18 | Sandisk Technologies Llc | System solution for first read issue using time dependent read voltages |
JP6659494B2 (ja) | 2016-08-19 | 2020-03-04 | キオクシア株式会社 | 半導体記憶装置及びメモリシステム |
JP6725375B2 (ja) * | 2016-09-14 | 2020-07-15 | キオクシア株式会社 | メモリシステムおよび方法 |
JP2018163707A (ja) | 2017-03-24 | 2018-10-18 | 東芝メモリ株式会社 | 半導体記憶装置及びそのリード制御方法 |
JP2020144958A (ja) * | 2019-03-05 | 2020-09-10 | キオクシア株式会社 | メモリシステムおよび方法 |
-
2019
- 2019-09-19 JP JP2019170544A patent/JP2021047695A/ja active Pending
-
2020
- 2020-02-14 US US16/790,807 patent/US11093173B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022164611A (ja) * | 2021-04-16 | 2022-10-27 | マイクロン テクノロジー,インク. | メモリデバイスの電圧ビンを較正するための閾値電圧決定 |
Also Published As
Publication number | Publication date |
---|---|
US11093173B2 (en) | 2021-08-17 |
US20210089232A1 (en) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021047695A (ja) | メモリシステム | |
US20240021250A1 (en) | Memory system | |
CN107452421B (zh) | 固态储存装置及其状态预测方法 | |
US8332726B2 (en) | Non-volatile semiconductor memory device | |
US20220270687A1 (en) | Multi-bit memory system with adaptive read voltage controller | |
US11127476B2 (en) | Memory system controlling a threshold voltage in a read operation and method | |
KR101633048B1 (ko) | 메모리 시스템 및 그것의 데이터 처리 방법 | |
JP6725375B2 (ja) | メモリシステムおよび方法 | |
US10719396B2 (en) | Memory system | |
US20140146609A1 (en) | Weighted Read Scrub For Nonvolatile Memory | |
JP2020144958A (ja) | メモリシステムおよび方法 | |
US20180268891A1 (en) | Semiconductor memory device and memory system | |
US11138070B2 (en) | Memory system and method performed thereby | |
JP2019053806A (ja) | メモリシステム、及びメモリシステムの制御方法 | |
JP2019164858A (ja) | メモリシステム | |
JP5804584B1 (ja) | Nand型フラッシュメモリのプログラム方法 | |
JP2020107376A (ja) | メモリシステム | |
US20210295942A1 (en) | Memory system | |
US20240095112A1 (en) | Memory system and method | |
KR20090083204A (ko) | 메모리 장치 및 메모리 데이터 읽기 방법 | |
JP2021044034A (ja) | メモリシステム | |
US20200019461A1 (en) | Memory system and method for read operation of memory system | |
CN109215716B (zh) | 提高nand型浮栅存储器可靠性的方法及装置 | |
JP7023204B2 (ja) | メモリシステムおよびメモリシステムの制御方法 | |
US20240055065A1 (en) | Memory system and method |