JP2021044043A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2021044043A
JP2021044043A JP2019166885A JP2019166885A JP2021044043A JP 2021044043 A JP2021044043 A JP 2021044043A JP 2019166885 A JP2019166885 A JP 2019166885A JP 2019166885 A JP2019166885 A JP 2019166885A JP 2021044043 A JP2021044043 A JP 2021044043A
Authority
JP
Japan
Prior art keywords
memory
value
read
memory controller
candidate
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
Application number
JP2019166885A
Other languages
English (en)
Inventor
和孝 滝澤
Kazutaka Takizawa
和孝 滝澤
小島 慶久
Yoshihisa Kojima
慶久 小島
黒田 純夫
Sumio Kuroda
純夫 黒田
雅章 新島
Masaaki Niijima
雅章 新島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2019166885A priority Critical patent/JP2021044043A/ja
Priority to US16/817,371 priority patent/US11127476B2/en
Publication of JP2021044043A publication Critical patent/JP2021044043A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/12Programming voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3477Circuits or methods to prevent overerasing of nonvolatile memory cells, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate erasing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1204Bit line control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • G11C2029/3602Pattern generator
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

【課題】リード性能が高いメモリシステムを得ること。【解決手段】メモリシステムは、第1メモリと、メモリコントローラと、第2メモリと、を備える。第1メモリは、それぞれはしきい値電圧に応じたデータを記憶する複数のメモリセルトランジスタを備える不揮発性のメモリである。メモリコントローラは、しきい値電圧とリード電圧との比較に基づいてしきい値電圧に対応するデータを第1メモリから取得するリード動作を、第1メモリに実行させる。メモリコントローラは、しきい値電圧に影響するストレスの度合いに基づいて、リード電圧の複数の候補値のうちから第1の候補値を選択し、第1の候補値をリード電圧として適用したリード動作を第1メモリに実行させる。【選択図】図1

Description

本実施形態は、メモリシステムに関する。
不揮発性のメモリセルトランジスタ(メモリセル)を有するメモリシステムが知られている。そのようなメモリシステムにおいては、リード動作において、メモリセルのしきい値電圧とリード電圧との比較に基づいて、そのメモリセルに保持されているデータが判定される。
メモリセルのしきい値電圧は、種々の要因によって変化し得る。メモリシステムは、メモリセルのしきい値電圧が変化したとしてもそのメモリセルから正しいデータを得ることができるように、リード電圧を変更することが可能に構成されている。
特許第5349256号公報 特開2018−156696号公報 米国特許第9799405号明細書 米国特許第9812215号明細書
一つの実施形態は、リード性能が高いメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、第1メモリと、メモリコントローラと、を備える。第1メモリは、それぞれはしきい値電圧に応じたデータを記憶する複数のメモリセルトランジスタを備える不揮発性のメモリである。メモリコントローラは、しきい値電圧とリード電圧との比較に基づいてしきい値電圧に対応するデータを第1メモリから取得するリード動作を、第1メモリに実行させる。メモリコントローラは、しきい値電圧に影響するストレスの度合いに基づいて、前記リード電圧の複数の候補値のうちから第1の候補値を選択し、第1の候補値をリード電圧として適用したリード動作を第1メモリに実行させる。
図1は、第1の実施形態のメモリシステムの構成例を示す模式的な図である。 図2は、第1の実施形態のメモリチップの構成例を示す模式的な図である。 図3は、第1の実施形態のブロックBLKの回路構成を示す模式的な図である。 図4は、第1の実施形態のブロックBLKの一部領域の断面図である。 図5は、第1の実施形態のメモリセルの取り得るしきい値電圧の分布の例を示す模式的な図である。 図6は、第1の実施形態のメモリセルの取り得るしきい値電圧の分布の別の一例を示す模式的な図である。 図7は、第1の実施形態のシフトインデックステーブルのデータ構造の一例を示す模式的な図である。 図8は、全メモリセルのデータが正常にイレースされた場合のしきい値電圧の分布を示す模式的な図である。 図9は、一部のメモリセルのデータのイレースが完了していない場合のしきい値電圧の分布を示す模式的な図である。 図10は、第1の実施形態のプログラム動作の際の一連の処理の一例を説明するためのフローチャートである。 図11は、第1の実施形態のリード動作にかかる一連の処理の一例を説明するためのフローチャートである。 図12は、異なるイレースエラー数を有するフレームと、エラービット数との関係を示す図である。 図13は、第2の実施形態のシフトインデックステーブルのデータ構造の一例を示す模式的な図である。 図14は、第2の実施形態のプログラム動作の際の一連の処理の一例を説明するためのフローチャートである。 図15は、第2の実施形態のリード動作にかかる一連の処理の一例を説明するためのフローチャートである。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す模式的な図である。メモリシステム1は、ホスト(Host)2と接続可能に構成されている。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。
メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。
メモリシステム1は、NAND型のフラッシュメモリ(NANDメモリ)100と、ホスト2とNANDメモリ100との間のデータ転送を実行するメモリコントローラ200と、を備えている。
NANDメモリ100は、第1メモリの一例である。
NANDメモリ100は、1以上のメモリチップ(Chip)101を含む。ここでは一例として、NANDメモリ100は4つのメモリチップ101を含む。
メモリコントローラ200は、ホストインタフェース(Host I/F)201と、RAM(Random Access Memory)202と、CPU(Central Processing Unit)203と、NANDC(NAND Controller)204と、ECC(Error Correction Circuit)205と、温度センサ206と、タイマ207と、を備える。
RAM202は第2メモリの一例である。
メモリコントローラ200は、例えばSoC(System-On-a-Chip)として構成され得る。メモリコントローラ200は、複数のチップによって構成されてもよい。メモリコントローラ200は、FPGA(field-programmable gate array)やASIC(application specific integrated circuit)で構成されてもよい。メモリコントローラ200の各機能は、ソフトウェア、ハードウェア、またはこれらの組み合わせによって実現され得る。RAM202は、メモリコントローラ200の外に配置されてもよい。
RAM202は、バッファ、あるいはCPU203のワークエリアとして使用されるメモリである。RAM202を構成するメモリの種類は、特定の種類に限定されない。例えば、RAM202は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成される。
第1の実施形態では、RAM202には、履歴情報208およびシフトインデックステーブル209が格納される。履歴情報208およびシフトインデックステーブル209については後述する。
ホストインタフェース201は、ホスト2との間の通信インタフェースの制御を実行する。ホストインタフェース201は、CPU203による制御の下で、ホスト2とRAM202との間のデータ転送を実行する。NANDC204は、CPU203による制御の下で、NANDメモリ100とRAM202との間のデータ転送を実行する。
CPU203は、ホストインタフェース201、RAM202、NANDC204、ECC205、温度センサ206、およびタイマ207を制御する。CPU203は、ファームウェアプログラムを実行することによって、上記した各種構成要素の制御を実現する。
ECC205は、NANDメモリ100に書き込まれるデータを符号化する。符号化は、誤り訂正符号による符号化である。ECC205は、NANDメモリ100から読み出されたデータに対し、復号化を実行し、それによって当該データに含まれるビットエラーの検出と訂正とを実施する。
ECC205が使用する符号化の方式は、特定の方式に限定されない。一例では、符号化の方式として、LDPC(Low Density Parity Check)が採用され得る。
温度センサ206は、メモリシステム1内の温度に対応した値を出力する。温度センサ206は、メモリコントローラ200の外に設けられてもよい。温度センサ206は、4つのメモリチップ101のうちの一部の各々または全部の各々に内蔵されてもよい。温度センサ206は、4つのメモリチップ101のうちの一部の各々の近傍または全部の各々の近傍に搭載されてもよい。メモリシステム1が備える温度センサ206の数は、1つに限定されない。
タイマ207は、時刻を計測する。なお、タイマ207が省略されて、時刻の計測は、CPU203によって実行されてもよい。
図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毎に異なる選択ゲート線に接続されてもよい。同一のブロック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に対してプログラム動作またはリード動作が実行され得るデータの集まりを「ページ」と表記する。
周辺回路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に含まれるグラフにおいて、縦軸は、メモリセルの数を示しており、横軸は、しきい値電圧(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に示されるように、それぞれ異なるステートに属する8つのローブを形成する。
8つのステートのそれぞれは、それぞれ異なる3ビットのデータに対応する。一例では、“Er”ステートは“111”に対応し、“A”ステートは“110”に対応し、“B”ステートは“100”に対応し、“C”ステートは“000”に対応し、“D”ステートは“010”に対応し、“E”ステートは“011”に対応し、“F”ステートは“001”に対応し、“G”ステートは“101”に対応する。このように、各メモリセルは、そのしきい値電圧が属するステートに対応したデータを保持することができる。
一例では、1つのメモリセルに保持される3ビットのデータのうち、先頭の桁はアッパービット、中央の桁はミドルビット、末尾の桁はロアービットと称され得る。各ワード線に書き込まれるロアービットの集合は、ロアーページと称され得る。各ワード線に書き込まれるミドルビットの集合は、ミドルページと称され得る。各ワード線に書き込まれるアッパービットの集合は、アッパーページと称され得る。1つのメモリセルに保持される3ビットのデータのうちの各桁の名称は上記に限定されない。また、各桁の集合によって構成されるページの名称は上記に限定されない。
しきい値電圧は、イレース動作によって“Er”ステートまで低下せしめられる。また、しきい値電圧は、プログラム動作によって、“Er”ステートに維持されるか、または“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステート、の何れかに至るまで、上昇せしめられる。
なお、“Er”ステートは、イレースステートとも称される。
隣接する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は、複数点のリード電圧のそれぞれとメモリセルのしきい値電圧とを比較することによって当該メモリセルが属するステートを特定し、特定したステートに応じたデータを出力する。
図5では、メモリセルが、互いに重ならない8つの分布を形成する場合を説明した。しかしながら、メモリセルのしきい値電圧は、種々の要因によって変化する。メモリセルのしきい値電圧が変化し得るので、現実的には、リード動作時において、ステート毎の分布が互いに重なり合った状態になっている場合がある。
図6は、第1の実施形態のメモリセルの取り得るしきい値電圧の分布の別の一例を示す模式的な図である。ここでは、説明を簡単にするために、“A”ステートおよび“B”ステートのいずれかに属するメモリセルの分布を図示している。実線は、“A”ステートおよび“B”ステートのいずれかに属するメモリセルの分布を示している。破線は、“A”ステートに属するメモリセルの分布を示し、一点鎖線は、“B”ステートに属するメモリセルの分布を示している。本図の例では、“A”ステートに属するメモリセルの分布の裾野と“B”ステートに属するメモリセルの分布の裾野とが重なり合っている。言い換えると、“A”ステートに属するメモリセルのしきい値電圧の最大値がリード電圧Vrbを超えており、かつ、“B”ステートに属するメモリセルのしきい値電圧の最小値がリード電圧Vrbを下回っている。“A”ステートに属し、かつ、しきい値電圧がリード電圧Vrbよりも大きいメモリセルがリードされた場合、そのメモリセルは“B”ステートに属するとして認識される。即ち、例えば、“110”としてプログラムされたデータが“100”としてリードされる。“B”ステートに属し、かつ、しきい値電圧がリード電圧Vrbよりも小さいメモリセルがリードされた場合、そのメモリセルは“A”ステートに属するとして認識される。即ち、“100”としてプログラムされたデータが“110”としてリードされる。
このように、リードされたデータは、しきい値電圧の変化によって、プログラムされた時点での値から変化した場合がある。データやしきい値電圧の変化に対しては、メモリコントローラ200は、エラー訂正と、リード電圧のシフトと、によって対処する。
具体的には、メモリコントローラ200では、ECC205によって、リードデータに対してエラー訂正を実行する。リード動作によって得られたデータに関するエラー訂正が失敗した場合には、そのリード動作は失敗であるので、メモリコントローラ200は、リード電圧を変えてリード動作をリトライする。リトライされるリード動作を、リトライリードと表記する。なお、エラー訂正が失敗するとは、変化後のデータから変化前のデータを復元できないことをいう。具体的には、エラー訂正が失敗するとは、リードデータに含まれるエラービットが訂正できないことをいう。エラー訂正が成功するとは、リードデータに含まれる全てのエラービットが訂正されたことをいう。メモリコントローラ200は、リード動作に成功するまで、つまりリード動作によって得られたデータに関するエラー訂正が成功するまで、リード電圧を変化させながらリトライリードを繰り返し実行する。
なお、リード電圧の値は、種々の量で表現され得る。また、リード電圧の値は、種々の表現で指示され得る。本実施形態では、一例として、リード電圧の種類(Vra〜Vrg)毎に基準値が予め設定されており、リード電圧の値は、基準値からの差分であるシフト量で表現される。また、メモリチップ101内の所定の位置に、リード電圧の種類毎に基準値が記録されている。そして、メモリコントローラ200は、リード電圧の種類毎に基準値からのシフト量をメモリチップ101に指示する。
なお、リード電圧の表現方法および指示の方法は、これに限定されない。例えば、リード電圧の値は差分ではなく電圧値で表現され、リード電圧は、メモリチップ101に対し、差分ではなく電圧値で指示されてもよい。
リトライリードでは、メモリコントローラ200は、リード動作において適用されるリード電圧を、シフトインデックステーブル209に基づいて取得する。
図7は、第1の実施形態のシフトインデックステーブル209のデータ構造の一例を示す模式的な図である。シフトインデックステーブル209には、複数のシフトパターンが記録されている。シフトインデックステーブル209の各列には、1つのシフトパターンが記録されている。シフトパターンは、全種類のリード電圧の候補値をそれぞれ1つずつ含むセットである。各シフトパターンが含むそれぞれの種類のリード電圧の候補値は、基準値からのシフト量の形式で表記される。シフト量X(XはA、B、C、D、E、F、G)は、リード電圧Vrx(xはa、b、c、d、e、f、g)の基準値からの差分を示す。
また、各シフトパターンには、インデックス(#1〜#N)が付与されている。Nは2以上の整数である。リトライリードが繰り返し実行される場合においては、インデックス順にシフトパターンが選択され得る。
ところで、しきい値電圧の変化に特に大きな影響を与える事象がいくつか存在する。以下に、代表的な3つの事象を説明する。
1つ目の事象は、データリテンション時間である。データリテンション時間は、プログラム動作によってデータが書き込まれてからの経過時間である。当該経過時間が長くなるほど、しきい値電圧の変化量が大きくなる。
2つ目の事象は、温度交差である。温度交差は、プログラム動作が実行された際のメモリセルアレイ111の温度と、リード動作が実行された際のメモリセルアレイ111の温度と、に差があることである。
各メモリセルのしきい値電圧は、温度に応じて変化する。よって、プログラム動作が実行された際のメモリセルアレイ111の温度と、リード動作が実行された際のメモリセルアレイ111の温度と、に差がある場合、リード動作時のしきい値電圧は、プログラム動作時のしきい値電圧を基準とすると、その温度差に応じて増減する。以降では、プログラム動作が実行された際のメモリセルアレイ111の温度と、リード動作が実行された際のメモリセルアレイ111の温度と、の差分を、交差温度、と表記する。
3つ目の事象は、イレース動作によってデータのイレースが完了していないメモリセルが残存することである。
図8および図9は、第1の実施形態のあるブロックに対するイレース動作が実行された後のしきい値電圧の分布の一例を示す模式的な図である。
図8は、全メモリセルのデータが正常にイレースされた場合のしきい値電圧の分布を示している。全メモリセルのデータが正常にイレースされた場合、本図に示されるように、しきい値電圧の分布を示すローブ全体が“Er”ステートに含まれる。
図9は、一部のメモリセルのデータのイレースが完了していない場合のしきい値電圧の分布を示している。本図に示されるように、しきい値電圧の分布を示すローブの一部が、“Er”ステートと“A”ステートとの境界を越えて、“A”ステート内に含まれている。データのイレースが完了していないメモリセルが残存している場合、イレース動作が実行された後のしきい値電圧の分布は、全メモリセルのデータが正常にイレースされた場合に比べてブロードになる。しきい値電圧の分布がこのような状態にあるブロックに対してプログラム動作が行われた場合、プログラム動作後のしきい値電圧の分布も、全メモリセルのデータが正常にイレースされたブロックの場合に比べてブロードになる。
よって、データのイレースが完了していないメモリセルが残存するブロックに対してプログラム動作とリード動作とが実行されると、そのリード動作のタイミングがたとえプログラム動作の直後であっても、全メモリセルのデータが正常にイレースされた場合に比べてより多くのエラービットが含まれたデータが読み出される。
つまり、データのイレースが完了していないメモリセルが残存する場合には、しきい値電圧の分布が理想的な分布からずれる。しきい値電圧の分布の理想的な分布からのずれの度合いは、データが正常にイレースされなかったメモリセルの数の増加に応じて悪化する。
なお、データのイレースが完了していないメモリセルは、例えば次のようにして発生する。周辺回路110は、イレース動作の対象のブロックに含まれる全てのメモリセルのしきい値電圧を、一括に“Er”ステートまでに低下せしめるために、半導体基板に所定の電圧を1回以上、印加する。周辺回路110は、当該電圧を印加する毎に、当該対象のブロックに含まれるメモリセルのしきい値電圧が所定のベリファイレベル(例えばリード電圧Vra)以下となったか否かの確認を実行する。
例えば、周辺回路110は、当該対象のブロックに含まれる全ワード線にベリファイレベルの電圧を印加することで、当該対象のブロックに含まれるビット線が導通状態となっているか否かをテストする。当該ビット線が導通状態となっている場合、周辺回路110は、当該ビット線に接続された全てのメモリセルのしきい値電圧はベリファイレベル以下となっていると判定する。
少ない回数の電圧の印加によって全てのビット線が導通状態となれば理想的であるが、何らかの原因で電圧の印加の回数が増加した場合には、導通状態となったビット線の数が所定値以上となった時点でイレース動作が終了される。その結果、データのイレースが完了していないメモリセルが残る。
以降では、データのイレースが完了していないメモリセル、換言すると、イレース動作後においてしきい値電圧が“Er”ステートに含まれていないメモリセルを、イレースエラーセルと表記する。データのイレースが完了していないことを、イレースエラーと表記する。
メモリセルでは、上記した3つの事象が主たるストレスとなって、しきい値電圧が大きく変化する。これらの3つの現象がしきい値電圧に与える影響は、今後、メモリセルの微細化に応じてますます大きくなることが想定される。
しきい値電圧の変化が小さい場合、リトライリードを実行する毎にシフトパターンをインデックス順に選択したとしても、比較的少ない回数のリトライリードによってエラー訂正の失敗なくデータが読み出され得る。しかしながら、上記した3つの事象が原因となってしきい値電圧が変化した場合、適切なシフトパターン、つまりエラー訂正の失敗なくデータを読み出すためのシフトパターンが得られるまでに、多くの回数のリトライリードが必要となることがある。つまり、エラーが含まれないデータが得られるまでに要する時間が増大する可能性がある。
そこで、第1の実施形態では、メモリコントローラ200は、上記3つの事象によるストレスの度合いを測定し、得られた測定値に応じてシフトパターンを選択するように構成される。ストレスの度合いとして測定される数値情報は、ここでは一例として、リテンション時間、交差温度、およびイレースエラーセル数である。なお、ストレスの度合いとして測定される数値情報はこれらに限定されない。リテンション時間、交差温度、およびイレースエラーセル数のうちの一部のみが測定されてもよいし、リテンション時間、交差温度、およびイレースエラーセル数以外の数値情報が測定されてもよい。なお、以降では、ストレスの度合いの測定値を、ストレス値と表記する。
ストレス値に応じてシフトパターンの選択を可能とするために、シフトインデックステーブル209によれば、一部または全部のシフトパターンには、ストレスの度合いにかかる判定基準値が対応付けられている。図7の例によれば、各シフトパターンに、リテンション時間、交差温度、およびイレースエラーセル数の各項目について判定基準値が対応付けられている。
CPU203は、シフトパターン毎に、ストレス値と、判定基準値と、の乖離量を演算する。そして、CPU203は、1回目のリトライリードにおいては、ストレス値からの乖離量が最も小さい判定基準値が対応付けられたシフトパターンを選択する。2回目以降のリトライリードにおいては、CPU203は、選択済みのシフトパターンを除いてストレス値からの乖離量が最も小さい判定基準値が対応付けられたシフトパターンを選択する。つまり、CPU203は、乖離量が小さいほうから順番にシフトパターンを選択する。
このように、シフトパターンがストレス値に基づいて選択されるので、シフトパターンがインデックス順に選択される場合に比べて、リトライリードの実行回数を低減することが可能となる。これによって、エラーがないデータを得るまでの要する時間が短縮されるので、リード性能が向上する。
なお、ストレス値と判定基準値との乖離量の演算方法としては、任意の演算方法が採用され得る。一例では、ストレス値と判定基準値との項目毎の差分の合計値が、乖離量として使用できる。項目毎の差分には、重み付け係数が乗算されてもよい。
続いて、図10および図11を参照して、第1の実施形態のメモリシステム1の動作を説明する。なお、図10および図11に示される動作はブロック単位で実行されることとして説明する。図10および図11に示される動作はブロックと異なる記憶領域毎に実行されてもよい。
図10は、第1の実施形態のプログラム動作の際の一連の処理の一例を説明するためのフローチャートである。
メモリコントローラ200は、まず、フリーブロックを選択する(S101)。選択されたフリーブロックを、対象ブロックと表記する。
フリーブロックは、そのブロックに書き込まれた全てのユーザデータが無効化されたブロックをいう。フリーブロックは、ガベージコレクションなどによって生成され得る。ガベージコレクションは、あるブロック(第1のブロックと表記する)に格納されたデータのうち、有効なデータを他のブロック(第2のブロックと表記する)に転記し、その後、第1のブロックに格納された全てのデータを無効と見なす処理である。ガベージコレクションによって、第1のブロックは、フリーブロックとなる。
メモリコントローラ200は、例えば、ガベージコレクションによって生成されたフリーブロックをフリーブロックプールに登録する。S101の処理では、メモリコントローラ200は、フリーブロックプールに登録されている1以上のブロックのうちから、対象ブロックを選択する。
続いて、メモリコントローラ200は、メモリチップ101に対象ブロックのイレース動作を実行させる(S102)。
イレース動作が実行された後、イレースエラーセル数を得るために、CPU203は、しきい値電圧(Vth)の分布の測定を実行する(S103)。
しきい値電圧の分布は、一例では、ディストリビューションリードを実行することによって得ることができる。ディストリビューションリードとは、ワード線に印加される電圧を所定の刻み幅ごとにシフトさせながら、当該ワード線に接続されたオン状態のメモリセルの数またはオフ状態のメモリセルの数を測定することによって、しきい値電圧の分布を測定する動作をいう。なお、しきい値電圧の分布の測定の方法はこれに限定されない。
また、対象ブロックに含まれる全てのメモリセルがしきい値電圧の分布の測定の対象として選択されてもよいし、対象ブロックに含まれる一部のメモリセル群がしきい値電圧の分布の測定の対象として選択されてもよい。
メモリセルアレイ111が図2〜4に例示されたような3次元構成を有する場合、メモリセルアレイ111は、例えば次のように製造される。即ち、まず、多数の配線層11、12、13が積層される。その後、これらの配線層11、12、13を貫通する孔がドライエッチングなどによって形成され、その孔にピラー状の導電体14などが形成される。
ここで、孔の径を深さ方向のどの位置でも一定とすることは難しい。孔は、例えば、深さ方向の位置に応じて拡径したり縮径したりする傾向がある。これによって、各メモリセルの特性は、深さ方向の位置毎に、つまりワード線の位置毎に、異なる場合がある。
イレースエラーの起こりやすさがワード線の位置に依存する場合には、イレースエラーが起こりやすいと推定される一部のワード線に接続されたメモリセル群がしきい値電圧の分布の測定の対象として設定されてもよい。
S103によって、図8または図9に示されるようなしきい値電圧の分布が得られる。S103の後、メモリコントローラ200は、得られた分布に基づいてイレースエラーセル数をカウントし、記録する(S104)。
なお、イレースエラーセル数が記録される位置は任意である。イレースエラーセル数は、例えばRAM202に記録されてもよいし、電源断の影響を受けないようにNANDメモリ100に記録されてもよい。イレースエラーセル数は、メモリシステム1の動作中にはRAM202に保持され、電源断の前にNANDメモリ100に退避されてもよい。
続いて、メモリコントローラ200は、メモリチップ101に対象のブロックに対するプログラム動作を実行させる(S105)。
プログラム動作が実行された際、メモリコントローラ200は、タイマ207から時刻(時刻の計測値)を取得し、温度センサ206から温度(温度の検出値)を取得し、取得した時刻および温度を記録する(S106)。
時刻および温度が記録される位置は任意である。時刻および温度が記録される位置は、イレースエラーセル数が記録される位置と同じであってもよいし、異なっていてもよい。
S106によって、プログラム動作の際の一連の処理が終了する。
図11は、第1の実施形態のリード動作にかかる一連の処理の一例を説明するためのフローチャートである。
まず、メモリコントローラ200は、メモリチップ101に対象ブロックに対するリード動作を実行させる(S201)。S201で使用される複数点のしきい値電圧は、任意に選択される。例えば、複数点のしきい値電圧のそれぞれとして、基準値が選択され得る。別の例では、複数点のしきい値電圧のそれぞれとして、シフトインデックステーブル209に記録されたシフトパターンのうちの所定のシフトパターン、例えばインデックス番号が0のシフトパターンに含まれる値が選択され得る。
メモリコントローラ200は、リード動作によってメモリセルアレイ111から読み出されたデータを取得して、ECC205によってエラーの検出および訂正を試みる。メモリコントローラ200は、エラー訂正に成功したか否かを判定する(S202)。なお、エラーが検出されなかった場合には、エラー訂正に成功したと判定される。
エラー訂正に成功した場合(S202:Yes)、リード動作にかかる一連の処理が終了する。
エラー訂正に失敗した場合(S202:No)、メモリコントローラ200は、図10のS104、S106の処理によって記録された、温度、時刻、およびイレースエラーセル数を読み出す(S203)。
続いて、メモリコントローラ200は、タイマ207から時刻(時刻の計測値)を取得し、温度センサ206から温度(温度の検出値)を取得する(S204)。
続いて、メモリコントローラ200は、S203によって読み出された時刻および温度と、S204によって取得された時刻および温度と、に基づいて、データリテンション時間および交差温度を計算する(S205)。
S203によって読み出されたイレースエラーセル数と、S205の計算によって得られたデータリテンション時間および交差温度は、第1の実施形態のストレス値を構成する。メモリコントローラ200は、ストレス値(データリテンション時間、交差温度、およびイレースエラーセル数)の何れかが所定のしきい値を超えているか否かを判定する(S206)。
例えば、ストレス値の項目毎にしきい値が予め設定されており、データリテンション時間、交差温度、およびイレースエラーセル数の何れかが、対応するしきい値を越えているか否かが判定される。項目毎のしきい値の設定方法は任意である。
S206は、インデックス順にシフトパターンを取得するか、ストレス値に基づいてシフトパターンを取得するかを判定する処理に該当する。ここでは一例として、ストレス値(データリテンション時間、交差温度、およびイレースエラーセル数)の何れかが所定のしきい値を超えているという条件が満たされている場合には、ストレス値に基づいてシフトパターンを取得することが決定され、当該条件が満たされていない場合には、インデックス順にシフトパターンを取得することが決定される。インデックス順にシフトパターンを取得するか、ストレス値に基づいてシフトパターンを取得するかを判定するために用いられる条件は、これに限定されない。
例えば、ストレス値と判定基準値との乖離量が、所定のしきい値と比較されてもよい。乖離量が当該しきい値を下回る場合には、インデックス順にシフトパターンを取得すると判定され、乖離量が当該しきい値を上回る場合には、ストレス値に基づいてシフトパターンを取得するかを判定すると判定されてもよい。
ストレス値(データリテンション時間、交差温度、およびイレースエラーセル数)の何れかが所定のしきい値を超えている場合(S206:Yes)、メモリコントローラ200は、インデックス毎にストレス値と判定基準値との乖離量を計算して、ストレス値との乖離量が最も小さい判定基準値が対応付けられたインデックスを選択する(S207)。そして、メモリコントローラ200は、メモリチップ101に、選択されたシフトパターンを適用した、対象ブロックに対するリード動作を実行させる(S208)。S208で実行されるリード動作は、リトライリードに該当する。
メモリコントローラ200は、S208のリトライリードによってメモリセルアレイ111から読み出されたデータを取得して、ECC205によってエラーの検出および訂正を試みる。メモリコントローラ200は、S202の場合と同様に、エラー訂正に成功したか否かを判定する(S209)。
エラー訂正に成功した場合(S209:Yes)、リード動作にかかる一連の処理が終了する。
エラー訂正に失敗した場合(S209:No)、メモリコントローラ200は、リトライリードを継続するか否かを判定する(S210)。
リトライリードを継続するか否かの判定の方法は任意である。例えば、メモリコントローラ200は、リトライリードの実行回数が、予め設定された上限値に達したか否かによって、リトライリードを継続するか否かを判定してもよい。または、メモリコントローラ200は、経過時間(例えばS201が実行されてからの経過時間)が、予め設定された上限値に達したか否かによって、リトライリードを継続するか否かを判定してもよい。または、メモリコントローラ200は、未選択のシフトパターンが残っているか否かによって、リトライリードを継続するか否かを判定してもよい。
リトライリードを継続する場合(S210:Yes)、メモリコントローラ200は、S207の処理を再び実行する。S207では、メモリコントローラ200は、未選択のシフトパターンのうちのストレス情報との乖離量が最も小さい判定基準値が対応付けられたシフトパターンを選択する。そして、S208の処理、つまりリトライリードが再び実行される。
リトライリードを継続しない場合(S210:No)、メモリコントローラ200は、所定の処理を実行して(S211)、リード動作にかかる一連の処理が終了する。S212にて実行される所定の処理は、任意に設定され得る。例えば、メモリコントローラ200は、ホスト2にエラー訂正が不可能である旨を通知してもよい。
ストレス値(データリテンション時間、交差温度、およびイレースエラーセル数)の何れも所定のしきい値を超えていない場合(S206:No)、メモリコントローラ200は、履歴情報208に記録されたインデックスを選択する(S212)。
履歴情報208には、インデックスに基づいて選択されたシフトパターンに基づいてリード動作が成功した場合に、そのインデックスが記録される。インデックスは、所定の記憶領域毎(例えばブロック毎)に記録される。つまり、過去に対象ブロックに対して、インデックスに基づいて選択されたシフトパターンが適用されたリード動作が実行されて、そのリード動作に成功した場合に、そのシフトパターンを示すインデックスが記録されている。S212では、リード動作に成功した実績のあるシフトパターンを示すインデックスが、履歴情報208から読み出される。
続いて、メモリコントローラ200は、メモリチップ101に、選択されたインデックスが示すシフトパターンを適用した、対象ブロックに対するリード動作を実行させる(S213)。S213で実行されるリード動作も、リトライリードに該当する。
メモリコントローラ200は、S213のリトライリードによってメモリセルアレイ111から読み出されたデータを取得して、ECC205によってエラーの検出および訂正を試みる。そして、メモリコントローラ200は、S202の場合と同様に、エラー訂正に成功したか否かを判定する(S214)。
エラー訂正に失敗した場合(S214:No)、メモリコントローラ200は、リトライリードを継続するか否かを判定する(S215)。S215における判定の方法は、S210と同様であってもよいし、S210と異なっていてもよい。
リトライリードを継続する場合(S215:Yes)、メモリコントローラ200は、後続のインデックスを選択する(S216)。そして、S213の処理が再び実行される。リトライリードを継続しない場合(S215:No)、S211の処理が実行される。
エラー訂正に成功した場合(S214:Yes)、メモリコントローラ200は、履歴情報208に記録されたインデックスを、最後に選択されたインデックスで更新して(S217)、リード動作にかかる一連の処理が終了する。
このように、第1の実施形態によれば、メモリコントローラ200は、シフトインデックステーブルに記録された複数のシフトパターンのうちから一つのシフトパターンをストレス値に基づいて選択する。
これによって、シフトパターンがインデックス順に選択される場合に比べて、リトライリードの実行回数を低減することが可能となる。エラーがないデータを得るまでに要する時間が短縮されるので、メモリシステム1のリード性能が向上する。
また、シフトインデックステーブル209に記録された複数のシフトパターンのうちの一部または全部のそれぞれには、判定基準値が対応づけられている。そして、メモリコントローラは、ストレス値と判定基準値との乖離量に基づいてシフトパターンを選択する。
これによって、上記した3つの事象が原因となってしきい値電圧が変化した場合において、適切なシフトパターン、つまりエラー訂正の失敗なくデータを読み出すためのシフトパターンを、初回のリトライリードで得ることができる可能性を高くすることができる。
また、メモリコントローラ200は、リトライリードに失敗した場合、既に選択されたシフトパターンを除いたシフトパターンのうちの、ストレス値との乖離量が最も小さい判定基準値が対応付けられたシフトパターン、つまり、既に選択されたシフトパターンの次にストレス値との乖離量が最も小さい判定基準値が対応付けられたシフトパターン、を選択する。そして、メモリコントローラ200は、リトライリードを再びメモリチップ101に実行させる。
これによって、上記した3つの事象が原因となってしきい値電圧が変化した場合において、少ない回数のリトライリードによって、エラーを含まないデータを得ることが可能となる。
また、シフトインデックステーブル209に記憶された各シフトパターンにはインデックスが対応付けられている。ストレス値が所定の条件を満たす場合には、メモリコントローラ200は、判定基準値に基づいて選択されたシフトパターンを適用したリード動作を第1メモリに実行させる。ストレス値が所定の条件を満たさない場合には、メモリコントローラ200は、インデックスに基づいて選択されたシフトパターンを適用したリード動作を第1メモリに実行させる。
これによって、上記した3つの事象が原因となってしきい値電圧が変化しているか否かに応じてシフトパターンの適切な選択方法を決定することが可能である。
なお、メモリコントローラ200は、インデックスに基づいて選択されたシフトパターンを適用したリード動作に失敗した場合には、インデックスの順番に基づいて別のシフトパターンを選択してリード動作をメモリチップ101に実行させる。
また、メモリコントローラ200は、メモリチップ101にイレース動作を実行させ、イレース動作の後、しきい値電圧が“Er”ステートに含まれないメモリセルの数をカウントする。メモリコントローラ200は、カウントされた、しきい値電圧が“Er”ステートに含まれないメモリセルの数を、ストレス値として使用する。
データのイレースが完了していないメモリセルが存在することによってしきい値電圧が大きく変化している場合においては、上記した構成によって、リトライリードの実行回数を低減することが可能となる。
また、メモリコントローラ200は、プログラム動作の際にタイマ207から時刻の計測値を取得する。メモリコントローラ200は、リード動作の際にもタイマ207から時刻の計測値を取得する。そして、メモリコントローラ200は、プログラム動作の際に取得された時刻の計測値と、リード動作の際に取得された時刻の計測値と、の差分、つまりデータリテンション時間、をストレス値として使用する。
データリテンション時間に応じてしきい値電圧が大きく変化している場合においては、上記した構成によって、リトライリードの実行回数を低減することが可能となる。
また、メモリコントローラ200は、プログラム動作の際に温度センサ206から温度の検出値を取得する。メモリコントローラ200は、リード動作の際にも温度センサ206から温度の検出値を取得する。そして、メモリコントローラ200は、プログラム動作の際に取得された温度の検出値と、リード動作の際に取得された温度の検出値と、の差分、つまり交差温度を、ストレス値として使用する。
温度交差によってしきい値電圧が大きく変化している場合においては、上記した構成によって、リトライリードの実行回数を低減することが可能となる。
(第2の実施形態)
第1の実施形態では、イレースエラーに関するストレス値として、イレースエラーセル数が測定された。イレースエラーに関するストレス値はこれに限定されない。
前述したように、イレースエラーセルを有するブロックにプログラム動作が実行された場合、プログラム動作後のしきい値電圧の分布が、イレースエラーセルがないブロックにプログラム動作が実行された場合に比べてブロードになる。
その結果、イレースエラーセルがあるブロックにプログラム動作が実行された場合、イレースエラーセルがないブロックにプログラム動作が実行された場合に比べて、ビットエラー数(Fail Bit Count : FBC)が多くなる傾向がある。
図12は、異なるイレースエラー数を有するフレームと、エラービット数との関係を示す図である。ここで、フレームは、エラー訂正の単位となるデータブロックである。
符号1201は、イレースエラーセルがないブロック(第3のブロックと表記する)に対して上記の動作が実行された場合に得られるエラービット分布を示している。符号1202は、イレースエラーセルがあるブロック(第4のブロックと表記する)に対して上記の動作が実行された場合に得られるエラービット分布を示している。符号1203は、含まれるイレースエラーセルの数が第4のブロックよりも多いブロック(第5のブロックと表記する)に対して上記の動作が実行された場合に得られるエラービット分布を示している。
図12からは、ビットエラーを多く含むフレームの数が、イレースエラーセルの数に応じて増加する傾向があることが読み取れる。
そこで、第2の実施形態では、所定値(例えば図12のCth)を超える数のビットエラーを含むフレームの数が、イレースエラーに関するストレス値として使用される。このようにして得られたストレス値は、イレースエラーセルの数に応じて大きくなる。
以降では、第1の実施形態と異なる事項について重点的に説明し、第1の実施形態と同じ事項については説明を省略する。
第2の実施形態では、シフトインデックステーブル209に代えて、シフトインデックステーブル209aがRAM202に格納されている。
図13は、第2の実施形態のシフトインデックステーブル209aのデータ構造の一例を示す模式的な図である。第2の実施形態のシフトインデックステーブル209aは、各シフトパターンに、イレースエラーセルの数にかかる判定基準値に代えて、Cthを超える数のビットエラーを含むフレームの数にかかる判定基準値が対応付けられている。
図14は、第2の実施形態のプログラム動作の際の一連の処理の一例を説明するためのフローチャートである。なお、本図以降のフローチャートにおいて、第1の実施形態と同じ処理には、第1の実施形態と同じステップ番号を付す。また、第1の実施形態と同じ処理については、簡略的に説明するか、または説明を省略する。
メモリコントローラ200は、まず、フリーブロックを選択する(S101)。選択されたフリーブロックを、対象ブロックと表記する。
続いて、メモリコントローラ200は、メモリチップ101に対象ブロックのイレース動作を実行させる(S102)。
続いて、メモリコントローラ200は、メモリチップ101に対象のブロックに対するプログラム動作を実行させる(S105)。
プログラム動作が実行された際、メモリコントローラ200は、タイマ207から時刻(時刻の計測値)を取得し、温度センサ206から温度(温度の検出値)を取得し、取得した時刻および温度を記録する(S106)。
時刻および温度が記録される位置は任意である。時刻または温度は、例えばRAM202に記録されてもよいし、電源断の影響を受けないようにNANDメモリ100に記録されてもよい。時刻または温度は、メモリシステム1の動作中にはRAM202に保持され、電源断の前にNANDメモリ100に退避されてもよい。
続いて、メモリコントローラ200は、Cthを超える数のビットエラーを含むフレームの数をカウントして記録する(S301)。
S301では、メモリコントローラ200は、例えば、メモリチップ101に対象ブロックに対するリード動作を実行させる。このリード動作においては、使用される複数点のしきい値電圧は、任意に選択される。例えば、複数点のしきい値電圧のそれぞれとして、基準値が選択され得る。別の例では、複数点のしきい値電圧のそれぞれとして、シフトインデックステーブル209に記録されたシフトパターンのうちの所定のシフトパターン、例えばインデックス番号が0のシフトパターンに含まれる値が選択され得る。
そして、メモリコントローラ200は、リード電圧を用いて読み出されたデータと当該データの期待値(正解データ)とを比較することによって、フレーム毎のビットエラー数を取得する。そして、メモリコントローラ200は、フレーム毎に取得されたビットエラー数に基づいて、Cthを超える数のビットエラーを含むフレームの数をカウントする。ビットエラー数は期待値データに対する読み出しデータの誤りビットとしてカウントする。期待値データは、予め保存された書き込みデータでもよいし、誤り訂正が成功した際の訂正後のデータであってもよい。なお、Cthと比較してビットエラー数が十分に小さい場合、当該フレームの数をカウントする動作を省略しても構わない。以降、Cthを超える数のビットエラーを含むフレームの数をエラーフレーム数と表記する。エラーフレーム数とは、誤り訂正に失敗したフレームの数を意味するものではない。
なお、上記のようにして得られたエラーフレーム数が記録される位置は任意である。エラーフレーム数は、例えばRAM202に記録されてもよいし、電源断の影響を受けないようにNANDメモリ100に記録されてもよい。エラーフレーム数は、メモリシステム1の動作中にはRAM202に保持され、電源断の前にNANDメモリ100に退避されてもよい。
S301によって、プログラム動作の際の一連の処理が終了する。
図15は、第2の実施形態のリード動作にかかる一連の処理の一例を説明するためのフローチャートである。本図に示される一連の処理は、図11に示された第1の実施形態のリード動作にかかる一連の処理のうちのS203、S206に代えてS401、S402を備えている。
S401では、メモリコントローラ200は、図14のS106、S301の処理によって記録された、温度、時刻、およびエラーフレーム数を読み出す(S401)。
S402では、メモリコントローラ200は、第2の実施形態のストレス値(データリテンション時間、交差温度、およびエラーフレーム数)の何れかが所定のしきい値を超えているか否かを判定する(S402)。
例えば、ストレス値の項目毎にしきい値が予め設定されており、データリテンション時間、交差温度、およびエラーフレーム数の何れかが、対応するしきい値を越えているか否かが判定される。項目毎のしきい値の設定方法は任意である。
S402は、インデックス順にシフトパターンを取得するか、ストレス値に基づいてシフトパターンを取得するかを判定する処理に該当する。ここでは一例として、ストレス値(データリテンション時間、交差温度、およびエラーフレーム数)の何れかが所定のしきい値を超えているという条件が満たされている場合には、ストレス値に基づいてシフトパターンを取得することが決定され、当該条件が満たされていない場合には、インデックス順にシフトパターンを取得することが決定される。第1の実施形態におけるS206の処理と同様に、インデックス順にシフトパターンを取得するか、ストレス値に基づいてシフトパターンを取得するかを判定するために用いられる条件は、これに限定されない。
ストレス値(データリテンション時間、交差温度、およびエラーフレーム数)の何れかが所定のしきい値を超えている場合(S402:Yes)、S207の処理が実行される。ストレス値(データリテンション時間、交差温度、およびエラーフレーム数)の何れも所定のしきい値を超えていない場合(S402:No)、S212の処理が実行される。
なお、以上の説明においては、ビットエラー数がフレーム毎にカウントされ、Cthを超える数のビットエラーを含むフレームの数が、イレースエラーに関するストレス値として使用された。ビットエラー数のカウントの単位とされる記憶領域は、フレームに限定されない。ビットエラー数のカウントの単位は、例えば、チップ、ブロック、ストリングユニット、ワード線、またはページであってもよい。
このように、第2の実施形態によれば、メモリコントローラ200は、プログラム動作の後、記憶領域毎にビットエラー数を測定し、所定値を超えるビットエラーを含む記憶領域の数をストレス値として使用する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、10 ウェル領域、11 配線層、12 配線層、13 配線層、14 導電体、15 ゲート絶縁膜、16 電荷蓄積層、17 ブロック絶縁膜、18 金属配線層、19 n+型不純物拡散層、20 コンタクトプラグ、21 金属配線層、22 p+型不純物拡散層、23 コンタクトプラグ、24 金属配線層、100 NANDメモリ、101 メモリチップ、110 周辺回路、111 メモリセルアレイ、114 NANDストリング、200 メモリコントローラ、201 ホストインタフェース、202 RAM、203 CPU、204 NANDコントローラ、205 ECC、206 温度センサ、207 タイマ、208 履歴情報、209,209a シフトインデックステーブル。

Claims (10)

  1. それぞれはしきい値電圧に応じたデータを記憶する複数のメモリセルトランジスタを備える不揮発性の第1メモリと、
    前記しきい値電圧とリード電圧との比較に基づいて前記しきい値電圧に対応するデータを前記第1メモリから取得するリード動作を、前記第1メモリに実行させるメモリコントローラと、
    を備え、
    前記メモリコントローラは、
    前記しきい値電圧に影響するストレスの度合いに基づいて、前記リード電圧の複数の候補値のうちから第1の候補値を選択し、前記第1の候補値を前記リード電圧として適用した前記リード動作を前記第1メモリに実行させる、
    メモリシステム。
  2. 前記複数の候補値を格納する第2メモリをさらに備える
    請求項1に記載のメモリシステム。
  3. 前記複数の候補値の一部または全部のそれぞれには、判定基準値が対応付けられており、
    前記メモリコントローラは、前記ストレスの度合いを測定し、前記ストレスの度合いの測定値と前記判定基準値との乖離量に基づいて前記第1の候補値を選択する、
    請求項1に記載のメモリシステム。
  4. 前記メモリコントローラは、
    前記第1の候補値を適用して実行された前記リード動作に失敗した場合には、前記複数の候補値のうちの未使用の候補値のうちから前記第1の候補値の次に前記判定基準値との乖離量が小さい第2の候補値を選択し、前記第2の候補値を前記リード電圧として適用した前記リード動作を前記第1メモリに実行させる、
    請求項3に記載のメモリシステム。
  5. 前記複数の候補値のそれぞれにはインデックスが対応付けられており、
    前記メモリコントローラは、
    前記ストレスの度合いが第1の条件を満たす場合には、前記第1の候補値を前記リード電圧として適用した前記リード動作を前記第1メモリに実行させ、
    前記ストレスの度合いが前記第1の条件を満たさない場合には、前記インデックスに基づいて前記複数の候補値のうちから第2の候補値を選択し、前記第2の候補値を前記リード電圧として適用した前記リード動作を前記第1メモリに実行させる、
    請求項1に記載のメモリシステム。
  6. 前記メモリコントローラは、
    前記第2の候補値を適用して実行された前記リード動作に失敗した場合には、前記複数の候補値のうちから前記インデックスの順番に基づいて第3の候補値を選択し、前記第3の候補値を前記リード電圧として適用した前記リード動作を前記第1メモリに実行させる、
    請求項5に記載のメモリシステム。
  7. 前記メモリコントローラは、前記第1メモリにイレース動作を実行させ、前記イレース動作の後、前記複数のメモリセルトランジスタのうちのイレースエラーとなったメモリセルトランジスタの数をカウントし、
    前記カウントされた数を前記ストレスの度合いとして用いる、
    請求項1に記載のメモリシステム。
  8. 前記第1メモリは、複数の記憶領域を備え、
    前記メモリコントローラは、前記第1メモリにイレース動作を実行させ、前記イレース動作の後、前記第1メモリにプログラム動作を実行させ、前記プログラム動作の後、ビットエラーの数を記憶領域毎に測定し、
    前記ビットエラーの数が第1値を超える記憶領域の数を前記ストレスの度合いとして用いる、
    請求項1に記載のメモリシステム。
  9. 時刻を計測するタイマをさらに備え、
    前記メモリコントローラは、前記第1メモリにプログラム動作を実行させ、前記プログラム動作の際に前記タイマから第1の計測値を取得し、前記リード動作を実行させようとする際に前記タイマから第2の計測値を取得し、
    前記第1の計測値と前記第2の計測値との差分を前記ストレスの度合いとして用いる、
    請求項1に記載のメモリシステム。
  10. 温度を検出する温度センサをさらに備え、
    前記メモリコントローラは、前記第1メモリにプログラム動作を実行させ、前記プログラム動作の際に前記温度センサから第1の検出値を取得し、前記リード動作を実行させようとする際に前記温度センサから第2の検出値を取得し、
    前記第1の検出値と前記第2の検出値との差分を前記ストレスの度合いとして用いる、
    請求項1に記載のメモリシステム。
JP2019166885A 2019-09-13 2019-09-13 メモリシステム Pending JP2021044043A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019166885A JP2021044043A (ja) 2019-09-13 2019-09-13 メモリシステム
US16/817,371 US11127476B2 (en) 2019-09-13 2020-03-12 Memory system controlling a threshold voltage in a read operation and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019166885A JP2021044043A (ja) 2019-09-13 2019-09-13 メモリシステム

Publications (1)

Publication Number Publication Date
JP2021044043A true JP2021044043A (ja) 2021-03-18

Family

ID=74864479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019166885A Pending JP2021044043A (ja) 2019-09-13 2019-09-13 メモリシステム

Country Status (2)

Country Link
US (1) US11127476B2 (ja)
JP (1) JP2021044043A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022164611A (ja) * 2021-04-16 2022-10-27 マイクロン テクノロジー,インク. メモリデバイスの電圧ビンを較正するための閾値電圧決定

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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
US11355204B2 (en) 2020-09-03 2022-06-07 SK Hynix Inc. Efficient read-threshold calculation method for parametric PV-level modeling
US11430530B2 (en) 2021-01-25 2022-08-30 SK Hynix Inc. Deep learning based program-verify modeling and voltage estimation for memory devices
US11514999B2 (en) 2021-04-16 2022-11-29 SK Hynix Inc. Systems and methods for parametric PV-level modeling and read threshold voltage estimation
US11749354B2 (en) 2021-07-13 2023-09-05 SK Hynix Inc. Systems and methods for non-parametric PV-level modeling and read threshold voltage estimation
US11769556B2 (en) 2021-07-27 2023-09-26 SK Hynix Inc. Systems and methods for modeless read threshold voltage estimation
US11769555B2 (en) 2021-07-27 2023-09-26 SK Hynix Inc. Read threshold voltage estimation systems and methods for parametric PV-level modeling
US11854629B2 (en) 2021-11-22 2023-12-26 SK Hynix Inc. System and method for non-parametric optimal read threshold estimation using deep neural network
US20240061606A1 (en) * 2022-08-16 2024-02-22 Yangtze Memory Technologies Co., Ltd. Read retry method for enhancing read performance and stability of 3d nand memory

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8072805B2 (en) * 2009-08-18 2011-12-06 Skymedi Corporation Method and system of finding a read voltage for a flash memory
JP5349256B2 (ja) 2009-11-06 2013-11-20 株式会社東芝 メモリシステム
KR101214285B1 (ko) * 2010-12-30 2012-12-20 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US9070481B1 (en) * 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
US9812215B2 (en) 2016-03-25 2017-11-07 Toshiba Memory Corporation Memory device that executes an erase operation for a nonvolatile memory
JP2018156696A (ja) 2017-03-15 2018-10-04 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
JP6779822B2 (ja) 2017-03-24 2020-11-04 キオクシア株式会社 メモリシステム
JP2020155167A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 不揮発性メモリ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022164611A (ja) * 2021-04-16 2022-10-27 マイクロン テクノロジー,インク. メモリデバイスの電圧ビンを較正するための閾値電圧決定

Also Published As

Publication number Publication date
US11127476B2 (en) 2021-09-21
US20210082528A1 (en) 2021-03-18

Similar Documents

Publication Publication Date Title
JP2021044043A (ja) メモリシステム
TWI608490B (zh) 三維記憶體的可適性操作
US9183945B2 (en) Systems and methods to avoid false verify and false read
US9218242B2 (en) Write operations for defect management in nonvolatile memory
US20190303236A1 (en) Multi-level recovery reads for memory
US9183086B2 (en) Selection of data for redundancy calculation in three dimensional nonvolatile memory
US8972675B2 (en) Efficient post write read in three dimensional nonvolatile memory
US9063671B2 (en) Write operations with full sequence programming for defect management in nonvolatile memory
US9208023B2 (en) Systems and methods for scheduling post-write read in nonvolatile memory
JP5550386B2 (ja) 不揮発性半導体記憶装置及びメモリシステム
JP2013520760A (ja) 隣接状態情報に基づく温度補償がなされる不揮発性記憶装置
JP2019164858A (ja) メモリシステム
TW201603022A (zh) 半導體記憶體裝置及記憶體系統
US20200202926A1 (en) Apparatus and methods for programming memory cells responsive to an indication of age of the memory cells
US20200019461A1 (en) Memory system and method for read operation of memory system
JP2021149991A (ja) メモリシステムおよび方法
WO2015002897A1 (en) Write operations for defect management in nonvolatile memory
JP5710815B1 (ja) 半導体記憶装置