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

メモリシステム Download PDF

Info

Publication number
JP2020107376A
JP2020107376A JP2018245035A JP2018245035A JP2020107376A JP 2020107376 A JP2020107376 A JP 2020107376A JP 2018245035 A JP2018245035 A JP 2018245035A JP 2018245035 A JP2018245035 A JP 2018245035A JP 2020107376 A JP2020107376 A JP 2020107376A
Authority
JP
Japan
Prior art keywords
voltage
memory
read
data
memory cells
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
JP2018245035A
Other languages
English (en)
Inventor
征平 浅見
Shohei Asami
征平 浅見
敏克 檜田
Toshikatsu Hida
敏克 檜田
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 JP2018245035A priority Critical patent/JP2020107376A/ja
Priority to US16/565,625 priority patent/US10777283B2/en
Publication of JP2020107376A publication Critical patent/JP2020107376A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/08Address circuits; Decoders; Word-line control 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/26Sensing or reading circuits; Data output circuits
    • G11C16/28Sensing or reading circuits; Data output circuits using differential sensing or reference cells, e.g. dummy cells
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Non-Volatile Memory (AREA)
  • Semiconductor Memories (AREA)

Abstract

【課題】最適な読出し電圧の探索に要する時間を短縮する。【解決手段】一実施形態のメモリシステムは、複数のメモリセルを含むメモリセルアレイを備えた半導体メモリと、複数のメモリセルに対してトラッキング処理を実行するように構成されたメモリコントローラと、を備える。メモリコントローラは、トラッキング処理において、複数のメモリセルから第1乃至第3データのみを読み出し、第1乃至第3データはそれぞれ第2乃至第4電圧を使用して読み出され、第1及び第2データに基づき、複数のメモリセルのうちの、第2及び第3電圧間の第1電圧範囲に対応する第1メモリセルの数を決定し、第2及び第3データに基づき、複数のメモリセルのうちの、第3及び第4電圧間の第2電圧範囲に対応する第2メモリセルの数を決定し、第1及び第2メモリセルの数に基づき、第1電圧を決定するように構成される。【選択図】図7

Description

実施形態は、メモリシステムに関する。
半導体メモリとしてのNANDフラッシュメモリと、当該NANDフラッシュメモリを制御するメモリコントローラと、を備えるメモリシステムが知られている。
特開2013−122804号公報 特許第5444340号公報 特許第5638537号公報 米国特許第9431130号明細書 特許第5620973号公報
最適な読出し電圧の探索に要する時間を短縮する。
実施形態のメモリシステムは、複数のメモリセルを含むメモリセルアレイを備えた半導体メモリと、上記複数のメモリセルに対して第1トラッキング処理を実行して第1電圧を決定し、上記第1トラッキング処理の後の読出し処理において上記第1電圧を使用して上記複数のメモリセルからデータを読み出すように構成されたメモリコントローラと、を備える。上記メモリコントローラは、上記第1トラッキング処理において、上記複数のメモリセルから第1データ、第2データ、及び第3データのみを読み出し、上記第1データは第2電圧を使用して読み出され、上記第2データは第3電圧を使用して読み出され、上記第3データは第4電圧を使用して読み出され、上記第1データ及び上記第2データに基づき、上記複数のメモリセルのうちの、上記第2電圧と上記第3電圧との間の第1電圧範囲に対応する第1メモリセルの数を決定し、上記第2データ及び上記第3データに基づき、上記複数のメモリセルのうちの、上記第3電圧と上記第4電圧との間の第2電圧範囲に対応する第2メモリセルの数を決定し、上記第1メモリセルの数及び上記第2メモリセルの数に基づき、上記第1電圧を決定するように構成される。
第1実施形態に係るメモリシステムの構成を説明するためのブロック図。 第1実施形態に係るメモリセルアレイの構成を説明するための回路図。 第1実施形態に係るメモリセルアレイの構成を説明するための断面図。 第1実施形態に係るメモリセルアレイの閾値電圧分布を説明するための模式図。 第1実施形態に係るメモリセルアレイの閾値電圧分布に生じる変動を説明するための模式図。 第1実施形態に係るメモリシステムにおけるトラッキング処理で算出される区間セル数を説明するための模式図。 第1実施形態に係るメモリシステムにおけるトラッキング処理を伴う読出し処理を説明するためのフローチャート。 第1実施形態に係るメモリシステムにおける3点トラッキング処理を説明するためのフローチャート。 第1実施形態に係るメモリシステムにおける3点トラッキング処理を説明するための模式図。 第1実施形態に係るメモリシステムにおけるm点トラッキング処理を説明するためのフローチャート。 第1実施形態に係るメモリシステムにおけるm点トラッキング処理を説明するための模式図。 第1実施形態に係るメモリシステムにおけるm点トラッキング処理を説明するための模式図。 第1実施形態に係るメモリシステムにおけるm点トラッキング処理を説明するための模式図。 第2実施形態に係るメモリシステムにおける3点トラッキング処理を説明するためのフローチャート。 第2実施形態に係るメモリシステムにおける3点トラッキング処理を説明するための模式図。 第3実施形態に係るメモリシステムにおける3点トラッキング処理を説明するためのフローチャート。 第3実施形態に係るメモリシステムにおける3点トラッキング処理を説明するための模式図。 第3実施形態に係るメモリシステムにおける3点トラッキング処理を説明するための模式図。 第3実施形態の変形例に係るメモリシステムにおけるトラッキング処理後にバックグラウンドでの二次関数の二次係数の更新処理を伴う場合の処理を説明するためのフローチャート。 第3実施形態の変形例に係るメモリシステムにおいてバックグラウンドで実行される二次関数の二次係数の更新処理を説明するためのフローチャート。
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
1.第1実施形態
第1実施形態に係るメモリシステムについて説明する。以下では、半導体メモリとしてのNANDフラッシュメモリと、当該NANDフラッシュメモリを備えたメモリシステムを例に挙げて説明する。
1.1 構成
第1実施形態に係るメモリシステムの構成について説明する。
1.1.1 メモリシステムの構成
まず、第1実施形態に係るメモリシステムの構成の概要について、図1を用いて説明する。
図1に示すように、メモリシステム1は、半導体メモリ(NANDフラッシュメモリ)100とメモリコントローラ200とを備えている。NANDフラッシュメモリ100とメモリコントローラ200とは、例えばそれらの組み合わせにより一つのメモリシステム1を構成しても良く、その例としてはSDTMカードのようなメモリカードや、SSD(solid state drive)等が挙げられる。なお、半導体メモリ100は、NAND型のフラッシュメモリに限らず、NOR型であってもよい。
NANDフラッシュメモリ100は複数のメモリセルを備え、データを不揮発に記憶する。メモリコントローラ200は、NANDバスによってNANDフラッシュメモリ100に接続され、ホストバスによってホスト機器300に接続される。そしてメモリコントローラ200は、NANDフラッシュメモリ100を制御し、またホスト機器300から受信した命令に応答して、NANDフラッシュメモリ100にアクセスする。ホスト機器300は、例えばデジタルカメラやパーソナルコンピュータ等であり、ホストバスは、例えばSDTMインタフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、PCIe(PCI EXPRESSTM(Peripheral component interconnect express))、又はNVMe(NVM EXPRESSTM(Non-volatile memory express))に従ったバスである。NANDバスは、NANDインタフェースに従った信号の送受信を行う。
NANDインタフェースの信号の具体例は、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディ・ビジー信号RBn、及び入出力信号DQである。なお、以降の説明では、信号名に接尾辞として“n”が付与される場合、当該信号は、負論理である。すなわち、当該信号は“L(Low)”レベルでアサートされる信号であることを示す。
信号CEnは、NANDフラッシュメモリ100をイネーブルにするための信号であり、“L”レベルでアサートされる。信号CLE及びALEは、NANDフラッシュメモリ100への入力信号DQがそれぞれコマンド及びアドレスであることをNANDフラッシュメモリ100に通知する信号である。信号WEnは“L”レベルでアサートされ、入力信号DQをNANDフラッシュメモリ100に取り込ませるための信号である。信号REnも“L”レベルでアサートされ、NANDフラッシュメモリ100から出力信号DQを読み出すための信号である。レディ・ビジー信号RBnは、NANDフラッシュメモリ100がレディ状態(例えば、メモリコントローラ200からの命令を受信出来る状態)であるか、それともビジー状態(例えば、メモリコントローラ200からの命令を受信出来ない状態)であるかを示す信号であり、“L”レベルがビジー状態を示す。入出力信号DQは、例えば8ビットの信号である。そして入出力信号DQは、NANDフラッシュメモリ100とメモリコントローラ200との間で送受信されるデータの実体であり、コマンドCMD、アドレスADD、並びに書き込みデータ及び読出しデータ等のデータDATである。
1.1.2 メモリコントローラの構成
引き続き図1を用いて、メモリコントローラ200の構成の詳細について説明する。
メモリコントローラ200は、例えば、SoC(System-on-a-chip)であり、ホストインタフェース回路210、メモリ(RAM)220、プロセッサ(CPU)230、バッファメモリ240、NANDインタフェース回路250、及びECC回路260を備えている。なお、以下に説明されるメモリコントローラ200の各部210−260の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
ホストインタフェース回路210は、ホストバスを介してホスト機器300と接続され、ホスト機器300から受信した命令及びデータを、それぞれプロセッサ230及びバッファメモリ240に転送する。またプロセッサ230の命令に応答して、バッファメモリ240内のデータをホスト機器300へ転送する。
メモリ220は、例えばSRAM(Static random access memory)等の半導体メモリであり、プロセッサ230の作業領域として使用される。そしてメモリ220は、NANDフラッシュメモリ100を制御するためのファームウェアや、各種の管理テーブル等を保持する。
プロセッサ230は、メモリコントローラ200全体の動作を制御する。例えば、プロセッサ230は、ホスト機器300から書き込み命令を受信した際には、それに応答して、NANDインタフェース回路250に対して書き込み命令を発行する。読出し処理及び消去処理の際も同様である。またプロセッサ230は、NANDフラッシュメモリ100を制御するための様々な処理を実行する。例えば、プロセッサ230は、後述するトラッキング処理に付随する内部処理として、読出し処理を、トラッキング処理に対してバックグラウンドで実行し得る。
バッファメモリ240は、例えば、DRAM(Dynamic random access memory)であり、書込みデータや読出しデータを一時的に保持する。
NANDインタフェース回路250は、NANDバスを介してNANDフラッシュメモリ100と接続され、NANDフラッシュメモリ100との通信を司る。そして、プロセッサ230から受信した命令に基づき、信号CEn、ALE、CLE、WEn、及びREnをNANDフラッシュメモリ100へ出力する。また書込み処理時には、プロセッサ230で発行された書込みコマンド、及びバッファメモリ240内の書込みデータを、入出力信号DQとしてNANDフラッシュメモリ100へ転送する。更に読出し処理時には、プロセッサ230で発行された読出しコマンドを、入出力信号DQとしてNANDフラッシュメモリ100へ転送し、更にNANDフラッシュメモリ100から読み出されたデータを入出力信号DQとして受信し、これをバッファメモリ240へ転送する。
ECC回路260は、NANDフラッシュメモリ100に記憶されるデータに関する誤り検出及び誤り訂正処理を行う。すなわちECC回路260は、データの書き込み時には誤り訂正符号を生成して、これを書込みデータに付与し、データの読出し処理時にはこれを復号し、誤りビットの有無を検出する。そして誤りビットが検出された際には、その誤りビットの位置を特定し、誤りを訂正する。誤り訂正の方法は、例えば、硬判定復号(Hard bit decoding)及び軟判定復号(Soft bit decoding)を含む。硬判定復号に用いられる硬判定復号符号としては、例えば、BCH(Bose - Chaudhuri - Hocquenghem)符号やRS(Reed- Solomon)符号等を用いることができ、軟判定復号に用いられる軟判定復号符号としては、例えば、LDPC(Low Density Parity Check)符号等を用いることができる。
1.1.3 NANDフラッシュメモリの構成
次に、NANDフラッシュメモリ100の構成について説明する。図1に示すようにNANDフラッシュメモリ100は、メモリセルアレイ110、ロウデコーダ120、ドライバ130、センスアンプモジュール140、アドレスレジスタ150、コマンドレジスタ160、及びシーケンサ170を備える。
メモリセルアレイ110は、それぞれがロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを含む複数のブロックBLKを備えている。図1では一例として4つのブロックBLK0〜BLK3が図示されている。そしてメモリセルアレイ110は、メモリコントローラ200から与えられたデータを記憶する。
ロウデコーダ120は、アドレスレジスタ150内のブロックアドレスBAに基づいてブロックBLK0〜BLK3のいずれかを選択し、更に選択したブロックBLKにおいてワード線を選択する。
ドライバ130は、選択されたブロックBLKに対して、アドレスレジスタ150内のページアドレスPAに基づいて、ロウデコーダ120を介して電圧を供給する。
センスアンプモジュール140は、データの読出し時には、メモリセルアレイ110内のメモリセルトランジスタの閾値電圧をセンスすることで、データを読み出す。そして、このデータDATをメモリコントローラ200に出力する。データの書き込み時には、メモリコントローラ200から受信した書き込みデータDATを、メモリセルアレイ110に転送する。
アドレスレジスタ150は、メモリコントローラ200から受信したアドレスADDを保持する。このアドレスADDには、上述のブロックアドレスBAとページアドレスPAとが含まれる。コマンドレジスタ160は、メモリコントローラ200から受信したコマンドCMDを保持する。
シーケンサ170は、コマンドレジスタ160に保持されたコマンドCMDに基づき、NANDフラッシュメモリ100全体の動作を制御する。
次に、上記ブロックBLKの構成について、図2を用いて説明する。図2は、いずれかのブロックBLKの回路図である。
図2に示すように、ブロックBLKは、例えば4つのストリングユニットSU(SU0〜SU3)を含む。そして各々のストリングユニットSUは、複数のNANDストリングNSを含む。メモリセルアレイ110内のブロック数及びブロックBLK内のストリングユニット数は任意である。
NANDストリングNSの各々は、例えば64個のメモリセルトランジスタMT(MT0〜MT63)並びに選択トランジスタST1及びST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そしてメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。
ストリングユニットSU0〜SU3の各々の複数のNANDストリングNSに含まれる選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD0〜SGD3に接続される。これに対してストリングユニットSU0〜SU3の各々の複数のNANDストリングNSに含まれる選択トランジスタST2のゲートは、例えばセレクトゲート線SGSに共通接続される。あるいは、ストリングユニットSU0〜SU3の各々の複数のNANDストリングNSに含まれる選択トランジスタST2のゲートは、ストリングユニット毎に異なるセレクトゲート線SGS0〜SGS3に接続されても良い。また、同一のブロックBLK内にある複数のNANDストリングNSに含まれるメモリセルトランジスタMT0〜MT63の制御ゲートは、それぞれワード線WL0〜WL63に共通接続される。
また、メモリセルアレイ110内において複数のブロックBLKに含まれる同一列にあるNANDストリングNSの選択トランジスタST1のドレインは、ビット線BL(BL0〜BL(L−1)、但しLは2以上の自然数)に共通接続される。すなわちビット線BLは、複数のブロックBLK間で同一列にあるNANDストリングNSを共通に接続する。更に、複数の選択トランジスタST2のソースは、ソース線CELSRCに共通に接続されている。
つまりストリングユニットSUは、異なるビット線BLに接続され、かつ同一のセレクトゲート線SGDに接続されたNANDストリングNSの集合体である。ストリングユニットSUのうち、同一のワード線WLに共通接続されたメモリセルトランジスタMTの集合体を、セルユニットCU(又はメモリセルグループ)とも言う。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合体である。そしてメモリセルアレイ110は、ビット線BLを共通にする複数のブロックBLKの集合体である。
図3は、ブロックBLKの一部領域の断面図である。図3に示すように、p型ウェル領域10の上方に、複数のNANDストリングNSが形成されている。すなわち、p型ウェル領域10の上方には、セレクトゲート線SGSとして機能する例えば4層の配線層11、ワード線WL0〜WL63として機能する64層の配線層12、及びセレクトゲート線SGDとして機能する例えば4層の配線層13が、順次積層されている。積層された配線層間には、図示せぬ絶縁膜が形成されている。
そして、これらの配線層13、12、11を通過してp型ウェル領域10に達するピラー状の導電体14が形成されている。導電体14の側面には、ゲート絶縁膜15、電荷蓄積層(絶縁膜または導電膜)16、及びブロック絶縁膜17が順次形成され、これらによってメモリセルトランジスタMT、並びに選択トランジスタST1及びST2が形成されている。導電体14は、NANDストリングNSの電流経路として機能し、各トランジスタのチャネルが形成される領域となる。そして導電体14の上方には、ビット線BLとして機能する金属配線層18が設けられる。導電体14及び金属配線層18は、例えば、コンタクトプラグ25を介して接続される。
p型ウェル領域10の表面領域内には、n型不純物拡散層19が形成されている。n型不純物拡散層19上にはコンタクトプラグ20が形成され、コンタクトプラグ20は、ソース線SLとして機能する金属配線層21に接続される。更に、p型ウェル領域10の表面領域内には、p型不純物拡散層22が形成されている。p型不純物拡散層22上にはコンタクトプラグ23が形成され、コンタクトプラグ23は、ウェル配線CPWELLとして機能する金属配線層24に接続される。ウェル配線CPWELLは、p型ウェル領域10を介して導電体14に電位を印加するための配線である。
以上の構成が、図3を記載した紙面の奥行き方向に複数配列されており、奥行き方向に並ぶ複数のNANDストリングNSの集合によってストリングユニットSUが形成される。
本実施形態では、1つのメモリセルトランジスタMTが例えば3ビットデータを保持可能である。この3ビットデータを、下位ビットからそれぞれ下位(Lower)ビット、中位(Middle)ビット、及び上位(Upper)ビットと呼ぶことにする。そして、同一のセルユニットCUに属するメモリセルの保持する下位ビットの集合を下位ページと呼び、中位ビットの集合を中位ページと呼び、上位ビットの集合を上位ページと呼ぶ。つまり、1つのストリングユニットSU内における1本のワード線WL(1つのセルユニットCU)には3ページが割当てられ、64本のワード線WLを含むストリングユニットSUは192ページ分の容量を有することになる。あるいは言い換えるならば、「ページ」とは、セルユニットCUに形成されるメモリ空間の一部、と定義することも出来る。データの書き込み及び読出しは、このページ毎又はセルユニットCU毎に行っても良い。一方、データの消去は、ブロックBLK単位に行われる。
図4は、メモリセルアレイ内の各メモリセルトランジスタMTの取り得るデータ、閾値電圧分布、並びに読出し時及び書込み時に用いる電圧について示したダイアグラムである。
上述の通り、メモリセルトランジスタMTは、3ビットデータを保持可能である。すなわち、メモリセルトランジスタMTは、閾値電圧に応じて8個の状態を取ることが出来る。この8個の状態を、閾値電圧の低いものから順に、“Er”状態、“A”状態、“B”状態、“C”状態、…、“G”状態と呼ぶことにする。
“Er”状態のメモリセルトランジスタMTの閾値電圧は、電圧VA未満であり、データの消去状態に相当する。“A”状態のメモリセルトランジスタMTの閾値電圧は、電圧VA以上であり且つ電圧VB(>VA)未満である。“B”状態のメモリセルトランジスタMTの閾値電圧は、電圧VB以上であり且つ電圧VC(>VB)未満である。“C”状態のメモリセルトランジスタMTの閾値電圧は、電圧VC以上であり且つ電圧VD(>VC)未満である。“D”状態のメモリセルトランジスタMTの閾値電圧は、電圧VD以上であり且つ電圧VE(>VD)未満である。“E”状態のメモリセルトランジスタMTの閾値電圧は、電圧VE以上であり且つ電圧VF(>VE)未満である。“F”状態のメモリセルトランジスタMTの閾値電圧は、電圧VF以上であり且つ電圧VG(>VF)未満である。“G”状態のメモリセルトランジスタMTの閾値電圧は、電圧VG以上であり且つ電圧VREAD(>VG)未満である。このように分布する8個の状態のうちで、“G”状態が、閾値電圧の最も高い状態である。電圧VA〜VGは、総称して「読出し電圧VCGR」又は単に「読出し電圧」とも言う。電圧VREADは、例えば、読出し動作時において読出し対象でないワード線WLに印加される電圧であり、保持データにかかわらずメモリセルトランジスタMTをオンさせる電圧である。つまり、電圧VREADは、読出し電圧VCGRより高い。
また上記閾値電圧分布は、前述の下位ビット、中位ビット、及び上位ビットからなる3ビット(3ページ)データを書き込むことで実現される。すなわち、上記“Er”状態から“G”状態と、下位ビット、中位ビット、及び上位ビットとの関係は、次の通りである。
“Er”状態:“111”(“上位/中位/下位”の順で表記)
“A”状態:“110”
“B”状態:“100”
“C”状態:“000”
“D”状態:“010”
“E”状態:“011”
“F”状態:“001”
“G”状態:“101”
このように、閾値電圧分布において隣り合う2つの状態に対応するデータ間では、3ビットのうちの1ビットのみが変化する。
下位ビットを読み出す際には、下位ビットの値(“0”or“1”)が変化する境界に相当する電圧を用いれば良く、このことは中位ビット及び上位ビットでも同様である。
すなわち、図4に示すように、下位ページ読出しは、“Er”状態と“A”状態とを区別する電圧VA、及び“D”状態と“E”状態とを区別する電圧VEを読出し電圧として用いる。電圧VA及びVEを用いた読出し動作を、それぞれ読出し動作AR及びERと呼ぶ。
読出し動作ARは、メモリセルトランジスタMTの閾値電圧が電圧VA未満か否かを判定する。つまり、読出し動作ARにより、消去状態のメモリセルトランジスタMTが特定される。読出し動作ERは、メモリセルトランジスタMTの閾値電圧が電圧VE未満か否かを判定する。
中位ページ読出しは、“A”状態と“B”状態とを区別する電圧VB、“C”状態と“D”状態とを区別する電圧VD、及び“E”状態と“F”状態とを区別する電圧VFを読出し電圧として用いる。電圧VB、VD、及びVFを用いた読出し動作を、それぞれ読出し動作BR、DR、及びFRと呼ぶ。
読出し動作BRは、メモリセルトランジスタMTの閾値電圧が電圧VB未満か否かを判定する。読出し動作DRは、メモリセルトランジスタMTの閾値電圧が電圧VD未満か否かを判定する。読出し動作FRは、メモリセルトランジスタMTの閾値電圧が電圧VF未満か否かを判定する。
そして上位ページ読出しは、“B”状態と“C”状態とを区別する電圧VC、及び“F”状態と“G”状態とを区別する電圧VGを読出し電圧として用いる。電圧VC及びVGを用いた読出し動作を、それぞれ読出し動作CR及びGRと呼ぶ。
読出し動作CRは、メモリセルトランジスタMTの閾値電圧が電圧VC未満か否かを判定する。読出し動作GRは、メモリセルトランジスタMTの閾値電圧が電圧VG未満か否かを判定する。
また、データの消去は、ブロックBLK単位、又はブロックBLKよりも小さい単位で行うことが出来る。消去方法に関しては、例えば“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE”という2011年9月18日に出願された米国特許出願13/235,389号に記載されている。また、“NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE”という2010年1月27日に出願された米国特許出願12/694,690号に記載されている。更に、“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE AND DATA ERASE METHOD THEREOF”という2012年5月30日に出願された米国特許出願13/483,610号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
更に、メモリセルアレイ110の構成については上記とは異なる構成であっても良い。すなわちメモリセルアレイ110の構成については、例えば、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。また、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月18日に出願された米国特許出願12/406,524号、“NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME”という2010年3月25日に出願された米国特許出願12/679,991号、及び“SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME”という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
1.2 動作
次に、第1実施形態に係るメモリシステムの動作について説明する。
1.2.1 トラッキング処理の概要
第1実施形態に係るトラッキング処理の概要について説明する。
先に説明した図4では、或るセルユニットCUにおける各データの閾値電圧分布は互いに独立している。よって、読出し電圧VCGRを用いた読出し処理において、読出し電圧VCGRが各データの閾値電圧分布の間に設定されていれば、正しいデータを読み出すことができる。
しかしながら、種々の要因により、閾値電圧は変動し得る。その結果、図4における閾値電圧分布は、その分布幅が広がり、又は分布が移動することにより、隣り合う分布同士が重なる場合がある。この様子を図5に示す。
図5は、第1実施形態に係るメモリセルアレイの閾値電圧分布に生じる変動を説明するための模式図である。例えば、データを書き込んだ直後において、“A”状態に属する閾値電圧分布、及び“B”状態に属する閾値電圧分布が図5(A)に示す通りであったとする。しかし、時間が経過すると、隣接セルとの干渉等により閾値電圧分布が低電圧側又は高電圧側にシフトする場合がある(これを「データリテンションエラー」と呼ぶ)。また、閾値電圧分布は、他のメモリセルトランジスタMTへの書込み処理や、読出し処理によっても変動し得る(これを「ディスターブ」と呼ぶ)。このようなデータリテンションエラーやディスターブ等の要因により、図5(B)に示すように閾値電圧の分布が変動したとする。すると、当初設定されていた読出し電圧VB0で読出しを行うと、斜線部分の領域に相当するメモリセルトランジスタMTの読出しデータがエラーとなる。そして、エラービット数がECC回路260の訂正可能エラービット数を超えていれば、データを正しく訂正することができない。
このような場合、エラービット数が少なくなるように、より2つの状態間の閾値電圧分布の重なりが小さくなる電圧が新たな読出し電圧として設定されることが望ましい。読み出されたデータのエラービット数を最小とするためには、2つの状態間の閾値電圧分布の重なりが最小となる位置(つまり、2つの状態間の閾値電圧分布の谷位置)における電圧(例えば、図5(B)における電圧VBopt)が読出し電圧として設定されることが望ましい。トラッキング処理は、このような最適な読出し電圧を探索し、決定するための処理の一つである。なお、以降の説明では、「電圧の位置」は「電圧の値」と読み替え可能であり、「状態間の閾値電圧分布の重なりが最小となる位置」は「状態間の閾値電圧分布の重なりが最小となる電圧」と読み替え可能であるものとする。
図6は、第1実施形態に係るメモリシステムにおけるトラッキング処理で算出される区間セル数を説明するための模式図である。図6(A)は、一例として、或るセルユニットCUにおける閾値電圧の分布のうちの“A”状態に属する閾値電圧分布と、“B”状態に属する閾値電圧分布とを示す。図6(B)は、読出し電圧に対してオン状態となるメモリセル数(「オンセル数」とも呼ぶ)の推移を示す。図6(C)は、2つの読出し電圧間におけるオンセル数変化量を示す。なお、図6(B)及び6(C)は、図6(A)に示される閾値電圧分布を有するセルユニットCUに対応してプロットされたものである。
図6(B)に示すように、読出し電圧を低くしていくと、“B”状態の最頻値である電圧VBmidよりわずかに高い電圧でオンセル数が急激に減少し、|dM/dR|が極大となる。ここで、最頻値とは、図6(A)において最も閾値電圧の分布確率が高い電圧であり、Mはオンセル数で、Rは読出し電圧である。更に読出し電圧を低くしていくと、オンセル数の減少率は小さくなり、或る値の読出し電圧においてオンセル数の減少率が極小となる。オンセル数の減少率の極小値は、“A”状態に属する閾値電圧分布と、“B”状態に属する閾値電圧分布とが重ならない場合にはゼロとなる。他方で、“A”状態に属する閾値電圧分布と、“B”状態に属する閾値電圧分布とが重なる場合には、オンセル数の減少率の極小値はゼロではない値(>0)となる。そして更に読出し電圧を低くしていくと、再びオンセル数の減少率が大きくなり、“A”状態の最頻値である電圧VAmidよりわずかに高い電圧で再び|dM/dR|が極大となる。
上述のオンセル数の変化によって、2つの状態間の閾値電圧分布の重なりが最も小さくなる読出し電圧(すなわち、2つの状態の閾値電圧分布の交点に対応する読出し電圧)を検出することができる。例えば、まず、読出し電圧R0を用いて読出し処理を行う。この時のオンセル数をM0とする。次に、電圧R0よりΔVだけ低い電圧R1を用いて読出し処理を行う。この時のオンセル数をM1とする。すると、読出し電圧がR0からR1に低下した際に新たにオフするメモリセルトランジスタMTの数は、C1=M0−M1個である。すなわち、閾値電圧が[R0,R1]間にあるメモリセルの数がC1個である。
引き続き、電圧R1よりΔVだけ低い電圧R2を用いて読出し処理を行う。この時のオンセル数をM2とする。すると、読出し電圧がR1からR2に低下した際に新たにオフするメモリセルトランジスタMTの数は、C2=M1−M2個である。そして、C1>C2であったとすれば、|dM/dR|が最小となる電圧は、少なくとも電圧R1より低電圧側に位置すると考えられる。
引き続き、電圧R2よりΔVだけ低い電圧R3を用いて読出し処理を行う。この時のオンセル数をM3とする。すると、読出し電圧がR2からR3に低下した際に新たにオフするメモリセルトランジスタMTの数は、C3=M2−M3であり、C3>C2であったとすれば、図6(C)のようなヒストグラムが得られる。
以上の結果、オンセル数変化量(「区間セル数」とも呼ぶ。)によって、図6(C)における一点鎖線で示されるような閾値電圧分布を推定することができ、“A”状態に属する閾値電圧分布と“B”状態に属する閾値電圧分布との重なりが最も小さくなる読出し電圧の位置(「谷位置」とも呼ぶ。)が電圧R1と電圧R2との間にあることが推定できる。なお、以下の説明では、便宜上、2つの電圧間に対応付けられる1つの区間セル数を「1点の区間セル数」と数える。
以下の説明では、トラッキング処理は、複数回の読出し電圧によって複数個の区間セル数を算出することにより、隣り合う状態間の閾値電圧分布の重なりが最も小さくなる位置を探索し、当該位置に近いと予想される点に対応する電圧(最適な読出し電圧と予想される電圧)を決定する処理の総称として用いられる。トラッキング処理は、例えば、後述するように、1つの最適な読出し電圧の探索に対して使用する読出し電圧の数に応じて分類され、3点トラッキング処理、及びm点トラッキング処理を含む(mは、4以上の整数)。
1.2.2 トラッキング処理を伴う読出し処理
まず、第1実施形態に係るメモリシステムにおけるトラッキング処理を伴う読出し処理の一例について、図7に示すフローチャートを用いて説明する。図7では、読出し対象のデータに対する誤り訂正処理が失敗した場合に、当該読出し対象のデータを誤り訂正可能な読出し電圧を探索するために実行される各種トラッキング処理を含むフローの一例が示される。
ステップST10において、メモリコントローラ200は、例えば、ホスト機器300からのデータの読出し命令を受信すると、NANDフラッシュメモリ100に対して読出し処理を実行する旨のリードコマンドを発行する。NANDフラッシュメモリ100は、リードコマンドに含まれる情報に基づいて読出し電圧を設定し、当該読出し電圧を用いてデータを読み出す。NANDフラッシュメモリ100は、読み出したデータをメモリコントローラ200に送信する。
ステップST20において、読出しデータを受けたメモリコントローラ200では、ECC回路260が誤り訂正処理を実行する。読出しデータに誤りが含まれない場合、又はECC回路260により誤りを訂正できた場合(ステップST20;yes)、メモリコントローラ200は、トラッキング処理を実行することなく、読み出したデータをホスト機器300に返信し(図示せず)、データの読出し処理を終了する。一方、読出しデータに含まれるエラービット数がECC回路260で訂正可能なビット数を超えており、ECC回路260による誤りの訂正ができない場合(ステップST20;nо)、処理はステップST30に進む。
ステップST30において、メモリコントローラ200は、3点トラッキング処理の実行を開始する。3点トラッキング処理では、メモリコントローラ200は、読出し対象ページの読み出し処理において必要となる読出し電圧VCGRのそれぞれに対して、互いに異なる3点の読出し電圧を使用してNANDフラッシュメモリ100から3つの読出しデータを読み出し、当該読出しデータに基づいて2点の区間セル数のみを算出する。具体的には、例えば、下位ページのデータに対する読出し処理の場合、電圧VA及びVEの各々に対して、3点トラッキング処理が実行される。そして、メモリコントローラ200は、3点トラッキング処理が実行された読出し電圧ごとに、算出された2点の区間セル数に基づいて、最適な読出し電圧の近傍に位置すると推定される電圧値を読出し電圧Vest1として算出する。3点トラッキング処理の詳細については、後述する。
なお、3点トラッキング処理は、必ずしも読出し対象ページの読出し処理において必要となる読出し電圧の全てに対して実行されなくてもよく、一部の読出し電圧に対して実行されてもよい。
ステップST40において、メモリコントローラ200は、ステップST30において算出された読出し電圧Vest1を用いて再度読出し処理を実行する旨のリードコマンドをNANDフラッシュメモリ100に対して発行する。NANDフラッシュメモリ100は、読出し電圧Vest1を用いて、ステップST10と同じ読出し対象のページからデータを読み出す。NANDフラッシュメモリ100は、読み出したデータをメモリコントローラ200に送信する。
ステップST50において、読出しデータを受けたメモリコントローラ200では、ECC回路260が誤り訂正処理を実行する。読出しデータに誤りが含まれない場合、又はECC回路260により誤りを訂正できた場合(ステップST50;yes)、メモリコントローラ200は、更なるトラッキング処理を実行することなく、読み出したデータをホスト機器300に返信し(図示せず)、データの読出し処理を終了する。一方、読出しデータに含まれるエラービット数がECC回路260で訂正可能なビット数を超えており、ECC回路260による誤りの訂正ができない場合(ステップST50;nо)、処理はステップST60に進む。
ステップST60において、メモリコントローラ200は、3点トラッキング処理によって取得した情報を使用しつつ、m点トラッキング処理の実行を開始する。m点トラッキング処理では、メモリコントローラ200は、読出し対象ページの読み出し処理において必要となる読出し電圧VCGRのそれぞれに対して、互いに異なるm点の読出し電圧を使用して読み出されたm個の読出しデータから(m−1)点の区間セル数を算出する。そして、メモリコントローラ200は、算出された(m−1)点の区間セル数に基づいて、最適な読出し電圧の近傍に位置すると推定される電圧値を読出し電圧Vest2として算出する。
なお、メモリコントローラ200は、m点トラッキング処理に際して、ステップST30における3点トラッキング処理の際に算出された2点の区間セル数を利用する。すなわち、ステップST60では、メモリコントローラ200は、残りの(m−3)点の区間セル数を算出する処理を行う。これにより、ステップST60におけるm点トラッキング処理では、ステップST30における2点の区間セル数と、更に算出される(m−3)点の区間セル数と、に基づいて電圧Vest2が算出される。m点トラッキング処理の詳細については、後述する。
ステップST70において、メモリコントローラ200は、ステップST60において算出された読出し電圧Vest2を用いて再度読出し処理を実行する旨のリードコマンドをNANDフラッシュメモリ100に対して発行する。NANDフラッシュメモリ100は、読出し電圧Vest2を用いて、ステップST10と同じ読出し対象のページからデータを読み出す。NANDフラッシュメモリ100は、読み出したデータをメモリコントローラ200に送信する。
ステップST80において、読出しデータを受けたメモリコントローラ200では、ECC回路260が誤り訂正処理を実行する。読出しデータに含まれるエラービット数がECC回路260で訂正可能なビット数を超えており、ECC回路260による誤りの訂正ができない場合(ステップST80;nо)、処理はステップST90に進む。ステップST90において、メモリコントローラ200は、次のリトライ処理を実行する。次のリトライ処理は、例えば、より多くの読出しデータを用いて実行されるより詳細なトラッキング処理や、軟判定符号を用いた誤り訂正処理等を含み得る。
一方、読出しデータに誤りが含まれない場合、又はECC回路260により誤りを訂正できた場合(ステップST80;yes)、メモリコントローラ200は、読み出したデータをホスト機器300に返信し(図示せず)、データの読出し処理を終了する。
以上により、トラッキング処理を伴う読出し処理が終了する。
1.2.3 3点トラッキング処理
次に、3点トラッキング処理について説明する。
図8は、第1実施形態に係るメモリシステムにおける3点トラッキング処理を説明するためのフローチャートである。図8に示されるステップST31〜ST36は、図7におけるステップST30に対応する。なお、図8では、説明の便宜上、読出し対象のページに対して、読出し電圧VCGRのうちの1つに対応する読出し電圧Vest1を算出する際の処理が示される。
ステップST31において、メモリコントローラ200は、電圧R0を使用した読出し処理を実行する旨のリードコマンドをNANDフラッシュメモリ100に対して発行する。NANDフラッシュメモリ100は、電圧R0を使用してデータD0を読み出し、メモリコントローラ200に送信する。メモリコントローラ200は、取得したデータD0をバッファメモリ240に一時的に格納する。
ステップST32において、メモリコントローラ200は、電圧R1を使用した読出し処理を実行する旨のリードコマンドをNANDフラッシュメモリ100に対して発行する。NANDフラッシュメモリ100は、電圧R1を使用してデータD1を読み出し、メモリコントローラ200に送信する。メモリコントローラ200は、取得したデータD1をバッファメモリ240に一時的に格納する。
ステップST33において、メモリコントローラ200は、データD0及びD1に基づき、代表電圧V1における区間セル数C1を算出する。具体的には、メモリコントローラ200は、データD0及びD1を比較し、オン状態からオフ状態となったビットの数を数え、区間セル数C1とする。代表電圧V1は、電圧R0と電圧R1との間の範囲(以下、範囲[R0,R1]とも表す)内の任意の電圧が設定可能であり、例えば、V1=(R0+R1)/2である。これにより、範囲[R0,R1]に閾値電圧を有するメモリセルトランジスタMTの数である区間セル数C1と、代表電圧V1とが関連付けてメモリ220に記憶される。以下では、区間セル数の算出における読出し処理に使用された2つの電圧の間に位置し、区間セル数に対応付けられる電圧を、「代表電圧」と呼ぶ。
ステップST34において、メモリコントローラ200は、電圧R2を使用した読出し処理を実行する旨のリードコマンドをNANDフラッシュメモリ100に対して発行する。NANDフラッシュメモリ100は、電圧R2を使用してデータD2を読み出し、メモリコントローラ200に送信する。メモリコントローラ200は、取得したデータD2をバッファメモリ240に一時的に格納する。なお、電圧R0〜R2の大小関係は任意であるが、以下の説明では、説明の便宜上、R0>R1>R2であり、例えば、R0−R1=R1−R2=ΔVであるとする。
ステップST35において、メモリコントローラ200は、データD1及びD2に基づき、代表電圧V2における区間セル数C2を算出する。代表電圧V2は、範囲[R1,R2]内の任意の電圧が設定可能であり、例えば、V2=(R1+R2)/2である。これにより、範囲[R1,R2]に閾値電圧を有するメモリセルトランジスタMTの数である区間セル数C2と、代表電圧V2とが関連付けてメモリ220に記憶される。
ステップST36において、メモリコントローラ200は、2点(C1,V1)及び(C2,V2)を参照し、区間セル数C1及びC2の小さい方に対応する代表電圧を読出し電圧Vest1と判定する。すなわち、メモリコントローラ200は、区間セル数C1が区間セル数C2より小さい場合には区間セル数C1に対応する代表電圧V1を読出し電圧Vest1と判定し、区間セル数C2が区間セル数C1より小さい場合には区間セル数C2に対応する代表電圧V2を読出し電圧Vest1と判定する。なお、区間セル数C1及びC2の値が等しい場合、メモリコントローラ200は、代表電圧V1及びV2の中点値(mid-range)を読出し電圧Vest1と判定する(Vest1=(V1+V2)/2)。
以上により、3点トラッキング処理が終了する。
なお、図8の例では、区間セル数C1を算出した後にデータD2を取得し、しかる後に区間セル数C2を算出する場合について説明したが、これに限られない。具体的には、例えば、区間セル数C1及びC2は、全てのデータD0〜D2が取得されたのちに、まとめて算出されてもよい。つまり、図8に示されたステップST33は、ステップST34の後に実行されてもよい。
また、図8の例では、ステップST31、ST32、及びST34において、NANDフラッシュメモリ100は、データD1〜D3をメモリコントローラ200に送信する場合について説明したが、これに限られない。例えば、NANDフラッシュメモリ100は、ステップST31、ST32、及びST34においてそれぞれ、データD1〜D3に基づいてオンセル数又はオフセル数をカウントし、当該カウント結果を示す情報をメモリコントローラ200に送信してもよい。この場合、メモリコントローラ200は、ステップST33において、データD0及びD1の各々に関するカウント結果に基づいて区間セル数C1を算出し、ステップST35において、データD1及びD2の各々に関するカウント結果に基づいて区間セル数C2を算出する。
図9は、第1実施形態に係るメモリシステムにおける3点トラッキング処理を説明するための模式図である。図9では、最適な読出し電圧Voptに対する読出し電圧Vest1の誤差が模式的に示される。より具体的には、図9では、電圧Voptと電圧R0〜R2との間の位置関係が、当該誤差に与える影響が示される。なお、図9の例では、電圧R0及びR1間の差、並びに電圧R1及びR2間の差の絶対値は、いずれも値ΔVであるものとする(|R0−R1|=|R1−R2|=ΔV)。しかしながら、電圧R0及びR1間の差、並びに電圧R1及びR2間の差は、必ずしも同じ値である必要はなく、互いに異なる値であってもよい。
図9(A)に示すように、電圧Voptが範囲[R0,R1]内に存在する場合、代表電圧V1が範囲[R0,R1]の中央に設定されていれば、読出し電圧Vest1は、電圧Voptに対して高々値(ΔV/2)の誤差で算出される。すなわち、値ΔVを適切に設定することによって電圧Voptに近い値を読出し電圧Vest1として算出することができ、ひいては、図7のステップST50における誤り訂正処理を成功させることができる。
同様に、図9(B)に示すように、電圧Voptが範囲[R1,R2]内に存在する場合、代表電圧V2が範囲[R1,R2]の中央に設定されていれば、読出し電圧Vest1は、電圧Voptに対して高々値(ΔV/2)の誤差で算出される。すなわち、値ΔVを適切に設定することによって電圧Voptに近い値を読出し電圧Vest1として算出することができ、ひいては、図7のステップST50における誤り訂正処理を成功させることができる。
一方、図9(C)に示すように、電圧Voptが範囲[R0,R2]外に存在する場合、読出し電圧Vest1は、電圧Voptに対して値(ΔV/2)よりも大きな誤差を有して算出される可能性がある。このため、図7のステップST50における誤り訂正処理に失敗する程度に、読出し電圧Vest1の精度が悪化する可能性がある。読出し電圧Vest1を使用して読み出したデータに対する誤り訂正処理が失敗した場合、図7のステップST60に示したように、3点トラッキング処理に続いてm点トラッキング処理が実行される。これにより、トラッキング処理の精度が担保される。
1.2.4 m点トラッキング処理
次に、m点トラッキング処理について説明する。
図10は、第1実施形態に係るメモリシステムにおけるm点トラッキング処理を説明するためのフローチャートである。図10に示されるステップST61〜ST66は、図7におけるステップST60に対応する。なお、図10では、説明の便宜上、図8と同様に、読出し対象のセルユニットCUに対して、読出し電圧VCGRのうちの1つに対応する読出し電圧Vest2を算出する際の処理が示される。
ステップST61において、メモリコントローラ200は、ステップST30で算出され、ステップST36において参照された2点(V1,C1)及び(V2,C2)を示す情報をメモリ220から再度参照する。
ステップST62において、メモリコントローラ200は、k回目に実行する読出し処理で使用する読出し電圧Rkを決定する(m−1≧k≧3)。読出し電圧Rkの決定方法については、後述する。
ステップST63において、メモリコントローラ200は、電圧Rkを使用した読出し処理を実行する旨のリードコマンドをNANDフラッシュメモリ100に対して発行する。NANDフラッシュメモリ100は、電圧Rkを使用してデータDkを読み出し、メモリコントローラ200に送信する。メモリコントローラ200は、例えば、データDkをバッファメモリ240に一時的に格納する。
ステップST64において、メモリコントローラ200は、データDk、及び電圧Rkと隣り合う電圧(すなわち、電圧(Rk+ΔV)又は(Rk−ΔV)に相当する電圧)を使用して取得されたデータに基づき、代表電圧Vkにおける区間セル数Ckを算出する。代表電圧Vkは、電圧Rkと、電圧Rkに隣り合う電圧と、の間の範囲内の任意の電圧が設定可能であり、例えば、当該2つの電圧の中点値である。これにより、区間セル数Ckと、代表電圧Vkとが関連付けて記憶される。
ステップST65において、メモリコントローラ200は、点(V1,C1)〜(Vk,Ck)について、端点以外に区間セル数が極小となる点(極小点)(Vmin,Cmin)が存在するか否かを判定する。ここで、「端点」とは、代表電圧V1〜Vkのうちの最低電圧に対応する点、及び最高電圧に対応する点、の2点である。端点以外に極小点(Vmin,Cmin)が存在しない、又は、点(V1,C1)〜(Vk,Ck)を、代表電圧の値が低い順に結ぶ曲線が電圧軸方向に単調減少又は単調増加に並ぶと判定された場合(ステップST65;nо)、処理はステップST66に進む。ステップST66において、メモリコントローラ200は、kをインクリメントした後、ステップST62〜ST65を繰り返し実行する。
一方、端点以外に極小点(Vmin,Cmin)が存在する、又は、点(V1,C1)〜(Vk,Ck)を、代表電圧の値が低い順に結ぶ曲線において、電圧軸方向に減少から増加に転じる点があると判定された場合(ステップST65;yes)、処理はステップST67に進む。ステップST67において、メモリコントローラ200は、電圧Vminを読出し電圧Vest2と判定する。なお、以下の説明では、電圧Vminを読出し電圧Vest2と判定する場合について説明するが、読出し電圧Vest2の導出では、内分計算をする等より細かな精度を持つ方法が適用されてもよい。
以上で、m点トラッキング処理が終了する。
図11〜図13は、第1実施形態に係るメモリシステムにおけるm点トラッキング処理での読出し電圧探索アルゴリズムの一例を説明するための模式図である。図11〜図13では、一例として、m点トラッキング処理での読出し電圧探索アルゴリズムを、3つのパターンに分類して示している。すなわち、図11は、代表電圧V1が代表電圧Vminであると判定される場合を示す。図12は、代表電圧Vminが代表電圧V1よりも低電圧側にあると判定される場合を示し、図13は、代表電圧Vminが代表電圧V1よりも高電圧側にあると判定される場合を示す。図12は図12(A)及び図12(B)を含み、図12(A)は、代表電圧V2が代表電圧Vminであると判定される場合を示し、図12(B)は、代表電圧V(m−2)が代表電圧Vminであると判定される場合を示す(m−2≧3)。図13は図13(A)及び図13(B)を含み、図13(A)は、代表電圧V3が代表電圧Vminであると判定される場合を示し、図13(B)は、代表電圧V(m−2)が代表電圧Vminであると判定される場合を示す(m−2≧4)。
なお、上述の通り、第1実施形態に係るメモリシステムにおけるm点トラッキング処理では、3点トラッキング処理で算出された区間セル数C1及びC2が再度利用される。このため、電圧R0〜R2の大小関係は、図9に図示した3点トラッキング処理と同様に、R0>R1>R2であるものとして説明する。
図11に示すように、区間セル数C2が区間セル数C1よりも大きい場合、最適な読出し電圧Voptは、少なくとも電圧R1より高電圧側に存在することが推定される。このため、メモリコントローラ200は、図10のステップST62及びST63において、電圧R0より高電圧側の電圧R3を使用する読出し処理を実行する旨のコマンドをNANDフラッシュメモリ100に対して発行し、NANDフラッシュメモリ100からデータD3を取得する。これにより、メモリコントローラ200は、ステップST64において、データD0及びD3に基づき、範囲[R3,R0]内の代表電圧V3に対応する区間セル数C3を算出する。
図11の場合では、区間セル数C3が区間セル数C1よりも大きいため、C2>C1かつC1<C3となり、点(V1,C1)が極小点となる。したがって、メモリコントローラ200は、区間セル数C1〜C3に基づき、代表電圧V1を読出し電圧Vest2と判定することができる。
図12(A)に示すように、区間セル数C2が区間セル数C1よりも小さい場合、最適な読出し電圧Voptは、少なくとも電圧R1より低電圧側に存在することが推定される。このため、メモリコントローラ200は、図10のステップST62及びST63において、電圧R2より低電圧側の電圧R3を使用する読出し処理を実行する旨のコマンドをNANDフラッシュメモリ100に対して発行し、NANDフラッシュメモリ100からデータD3を取得する。これにより、メモリコントローラ200は、ステップST64において、データD2及びD3に基づき、範囲[R2,R3]内の代表電圧V3に対応する区間セル数C3を算出する。
図12(A)の場合では、区間セル数C3が区間セル数C2よりも大きいため、C3>C2かつC2<C1となり、点(V2,C2)が極小点となる。したがって、メモリコントローラ200は、区間セル数C1〜C3に基づき、代表電圧V2を読出し電圧Vest2と判定することができる。
また、図12(B)に示すように、区間セル数C1、C2、…、C(m−2)がこの順に小さくなっていく場合、最適な読出し電圧Voptは、少なくとも電圧R2より低電圧側に存在することが推定される。このため、メモリコントローラ200は、区間セル数C(m−2)よりも大きい区間セル数C(m−1)が算出されるまで、図10のステップST62〜ST66に示した処理を繰り返す。区間セル数C(m−2)よりも大きい区間セル数C(m−1)が算出されると、C(m−1)>C(m−2)かつC(m−2)<C(m−3)<…<C2<C1となり、点(V(m−2),C(m−2))が極小点となる。したがって、メモリコントローラ200は、区間セル数C1〜C(m−1)に基づき、代表電圧V(m−2)を読出し電圧Vest2と判定することができる。
図13(A)に示すように、区間セル数C2が区間セル数C1よりも大きく、かつ区間セル数C3が区間セル数C1よりも小さい場合、最適な読出し電圧Voptは、少なくとも電圧R0より高電圧側に存在することが推定される。このため、メモリコントローラ200は、図10のステップST62及びST63において、電圧R3より高電圧側の電圧R4を使用する読出し処理を実行する旨のコマンドをNANDフラッシュメモリ100に対して発行し、NANDフラッシュメモリ100からデータD4を取得する。これにより、メモリコントローラ200は、ステップST64において、データD3及びD4に基づき、範囲[R4,R3]内の代表電圧V4に対応する区間セル数C4を算出する。
図13(A)の場合では、区間セル数C4が区間セル数C3よりも大きいため、C4>C3かつC3<C0となり、点(V3,C3)が極小点となる。したがって、メモリコントローラ200は、区間セル数C1〜C4に基づき、代表電圧V3を読出し電圧Vest2と判定することができる。
また、図13(B)に示すように、区間セル数C2、C1、C3、…、C(m−2)がこの順に小さくなっていく場合、最適な読出し電圧Voptは、少なくとも電圧R0よりも高電圧側に存在することが推定される。このため、メモリコントローラ200は、区間セル数C(m−2)よりも大きい区間セル数C(m−1)が算出されるまで、図10のステップST62〜ST66に示した処理を繰り返す。区間セル数C(m−2)よりも大きい区間セル数C(m−1)が算出されると、C2>C1>C3>…>C(m−3)>C(m−2)かつC(m−2)<C(m−1)となり、点(V(m−2),C(m−2))が極小点となる。したがって、メモリコントローラ200は、区間セル数C1〜C(m−1)に基づき、代表電圧V(m−2)を読出し電圧Vest2と判定することができる。
以上のように動作することにより、メモリコントローラ200は、m点トラッキング処理において、少なくとも4回以上の読出し電圧を使用して、少なくとも3点以上の区間セル数を算出することにより、読出し電圧Vest2を算出することができる。
1.3 本実施形態に係る効果
第1実施形態によれば、メモリコントローラ200は、電圧R0〜R2を使用して3回の読出し処理を行い、NANDフラッシュメモリ100からデータD0〜D2を取得する。メモリコントローラ200は、データD0〜D2に基づいて2点の区間セル数C1及びC2を算出し、当該2点の区間セル数に基づいて読出し電圧Vest1を決定する。これにより、読出し電圧Vest1の探索に要する読出し処理を3回に抑えることができ、4回以上の読出し処理を要するm点トラッキング処理よりも、トラッキング処理に要する時間を短縮することができる。
補足すると、トラッキング処理は、一般に、読み出すデータの数が多いほど(つまり、読出し処理の回数が多いほど)、最適な読出し電圧Voptに対する誤差が小さい読出し電圧を算出することができる。一方、読出し処理の回数が多いほど、トラッキング処理に要する時間が増加し、ホスト機器300に対するメモリコントローラ200の読出し処理応答時間を悪化させる可能性がある。このため、誤り訂正処理が成功可能な程度の精度を保ちつつ、より高速に処理可能なトラッキング処理が求められる。特に、メモリシステム1が常時通電状態である状況では、電源断の状態が発生する状況よりも、閾値電圧分布の変化が小さいと考えられる。このため、メモリシステム1が常時通電状態である場合、読出し処理の回数が少ないトラッキング処理でも十分に精度の高い読出し電圧を算出することができると考えられるため、高速に処理可能なトラッキング処理がより有用であり得る。
第1実施形態によれば、メモリコントローラ200は、3回の読出し処理によって2点の区間セル数を算出し、このうちの小さい方に対応する代表電圧を読出し電圧Vest1と判定する。これにより、最適な読出し電圧Voptが範囲[R0,R2]内に存在する場合には、値ΔV/2(ΔVは、読出し処理に使用する電圧R0及びR1間の間隔、並びに電圧R1及びR2間の間隔)以下の精度で、電圧Voptに対して読出し電圧Vest1を算出することができる。したがって、値ΔVを適切な値に予め設定することにより、高速に動作しつつ、所望の精度が担保された読出し電圧Vest1を算出することができる。
なお、電圧Voptが範囲[R0,R2]外に存在する場合には、所望の精度が担保されない可能性があるが、その場合には、3点トラッキング処理に続いて、m点トラッキング処理が実行される。m点トラッキング処理に際しては、3点トラッキング処理に使用された点(V1,C1)及び(V2,C2)を示す情報等が利用される。このため、3点トラッキング処理後にm点トラッキング処理が実行された場合でも、m点トラッキング処理が1回実行された場合と同程度の時間で読出し電圧Vest2を算出することができる。このため、3点トラッキング処理による読出し電圧Vest1で訂正処理に失敗した場合には、トラッキング処理全体に要する時間をm点トラッキング処理1回分よりも増加させることなく、m点トラッキング処理による読出し電圧Vest2を算出することができる。
2. 第2実施形態
次に、第2実施形態に係るメモリシステムについて説明する。第1実施形態では、3点トラッキング処理において、区間セル数C1及びC2のうちの小さい方に対応する代表電圧を読出し電圧Vest1と判定した。第2実施形態では、3点トラッキング処理において、範囲[V1,V2]を区間セル数C1及びC2の比で内分する点に対応する電圧を読出し電圧Vest1と判定する点において、第1実施形態と異なる。以下では、第1実施形態と同等の構成及び動作についてはその説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
2.1 3点トラッキング処理
図14は、第2実施形態に係るメモリシステムにおける3点トラッキング処理を説明するためのフローチャートである。図14は、第1実施形態において示された図8に対応し、図8におけるステップST36に代えて、ステップST37が実行される。
図14に示されたステップST31〜ST35の処理は、図8に示されたステップST31〜ST35の処理と同等であるため、説明を省略する。これにより、読出し電圧VCGRのうちの1つに対して、互いに異なる電圧R0〜R2を使用した3回の読出し処理が実行され、データD0〜D2が読み出される。そして、データD0〜D2に基づき、代表電圧V1に対応付けられた区間セル数C1、及び代表電圧V2に対応付けられた区間セル数C2が算出される。
ステップST37において、メモリコントローラ200は、区間セル数C1及びC2に基づいて、代表電圧V1及びV2の内分点を算出し、当該内分点を読出し電圧Vest1と判定する。具体的には、メモリコントローラ200は、読出し電圧Vest1を、以下に示す式に従って算出する。
Vest1=V1−(V1−V2)×C1/(C1+C2)
以上により、3点トラッキング処理が終了する。
図15は、第2実施形態に係るメモリシステムにおける3点トラッキング処理を説明するための模式図である。図15では、未知である最適な読出し電圧Voptと代表電圧V1及びV2との間の位置関係が、電圧Voptに対する読出し電圧Vest1の誤差に与える影響が模式的に示される。なお、図15の例では、代表電圧V1及びV2間の差の絶対値は、値ΔVであるものとする(|V1−V2|=ΔV)。
上述の通り、読出し電圧Vest1は、範囲[V1,V2]を内分する点として算出されるため、必ず代表電圧V1と代表電圧V2との間に位置する。このため、図15(A)に示すように、電圧Voptが範囲[V1,V2]内に存在する場合、読出し電圧Vest1は、電圧Voptに対して高々値ΔV/2の誤差で算出される。加えて、読出し電圧Vest1を算出するための内分比は、区間セル数C1及びC2の値に応じて適応的に変更される。このため、範囲[V1,V2]内における電圧Voptの位置に依る誤差の変動量が抑制され、当該誤差の平均値の増加が抑制される。
また、代表電圧V1と読出し電圧Vest1との差の絶対値|V1−Vest1|を値ΔV1、代表電圧V2と読出し電圧Vest1との差の絶対値|V2−Vest1|を値ΔV2とすると、区間セル数C1及びC2、並びに値ΔV1及びΔV2の間には、以下の関係が成立する。
ΔV1:ΔV2=C1:C2
つまり、読出し電圧Vest1は、区間セル数C1が区間セル数C2より小さい場合には代表電圧V1側に近い値として算出され、区間セル数C1が区間セル数C2より大きい場合には代表電圧V2側に近い値として算出される。言い換えれば、読出し電圧Vest1は、区間セル数C1及びC2のうちの小さい方に対応する代表電圧に、区間セル数C1及びC2の差が大きいほど近づいていく。
なお、区間セル数Cは、電圧Voptから近ければ近いほど、小さな値となる。このため、電圧Voptは、区間セル数C1及びC2のうちの小さい方に対応する代表電圧に近い値であることが期待される。
このように、読出し電圧Vest1は、電圧Voptが存在すると期待される側の値として算出される。したがって、電圧Voptに対する誤差をより小さくすることができる。
一方、図15(B)に示すように、電圧Voptが範囲[V1,V2]外に存在する場合、読出し電圧Vest1は、電圧Voptに対して値ΔV/2よりも大きな誤差を有して算出される可能性がある。このため、読出し電圧Vest1を使用して読み出したデータに対する誤り訂正処理に失敗する程度に、読出し電圧Vest1の精度が悪化する可能性がある。図7のステップST50に示したように、読出し電圧Vest1を使用して読み出したデータに対する誤り訂正処理が失敗した場合には、図7のステップST60のように3点トラッキング処理に続いてm点トラッキング処理が実行される。これにより、読出し電圧Vest2を算出することができ、トラッキング処理全体としての精度を担保することができる。
2.2 本実施形態に係る効果
第2実施形態によれば、メモリコントローラ200は、区間セル数C1及びC2の比に基づき、範囲[V1,V2]を内分する点に対応する電圧を読出し電圧Vest1と判定する。これにより、電圧Voptが範囲[V1,V2]内に存在する場合、3点トラッキング処理によって、電圧Voptに対する誤差が小さい読出し電圧Vest1を算出することができる。したがって、従来のm点トラッキング処理と比較して、トラッキング処理に要する時間を短縮することができる。
また、電圧Voptが範囲[V1,V2]外に存在し、読出し電圧Vest1の誤差が大きくなってしまった場合、メモリコントローラ200は、3点トラッキング処理に続いてm点トラッキング処理を実行する。これにより、m点トラッキング処理1回分の時間で、読出し電圧Vest2を算出することができ、トラッキング処理に要する時間の増加を抑制することができる。
3. 第3実施形態
次に、第3実施形態に係るメモリシステムについて説明する。第3実施形態では、区間セル数と代表電圧との関係を二次関数で近似する。そして、3点トラッキング処理において、2点(V1,C1)及び(V2,C2)を通過する二次関数を特定し、当該二次関数の極小点に対応する電圧を読出し電圧Vest1と判定する点において、第1実施形態及び第2実施形態と異なる。以下では、第1実施形態と同等の構成及び動作についてはその説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
3.1 3点トラッキング処理
図16は、第3実施形態に係るメモリシステムにおける3点トラッキング処理を説明するためのフローチャートである。図16は、第1実施形態において示された図8に対応し、図8におけるステップST36に代えて、ステップST38及びST39が実行される。
図16に示されたステップST31〜ST35の処理は、図8に示されたステップST31〜ST35の処理と同等であるため、説明を省略する。これにより、読出し電圧VCGRのうちの1つに対して、互いに異なる電圧R0〜R2を使用した3回の読出し処理が実行され、データD0〜D2が読み出される。そして、データD0〜D2に基づき、代表電圧V1に対応付けられた区間セル数C1、及び代表電圧V2に対応付けられた区間セル数C2が算出される。
ステップST38において、メモリコントローラ200は、2点(V1,C1)及び(V2,C2)を通過し得る無数に存在する二次関数のうちの1つを特定するため、当該特定すべき二次関数の二次係数Aを決定する。なお、当該二次関数は、区間セル数Cと代表電圧Vとの関係を表し、代表電圧V1を入力すると区間セル数C1を出力し、代表電圧V2を入力すると区間セル数C2を出力する関数である。また、当該二次関数は、隣り合う閾値電圧分布間が重なり合う部分(谷位置)の形状を近似するため、必ず下に凸な形状を有する。したがって、ステップST38において決定される二次係数Aは、正の値を有する(A>0)。すなわち、上述の二次関数は、以下に示す関係を満たす。なお、Cest1は、二次関数の極小点に対応する区間セル数である(すなわち、極小点の座標値は(Vest1、Cest1)となる)。
C1=A(V1−Vest1)^2+Cest1
C2=A(V2−Vest1)^2+Cest2
メモリコントローラ200は、例えば、二次係数Aを、予め定めた固定値としてメモリ220等に記憶していてもよいが、これに限られず、いくつかのパラメタに応じて変化可能なテーブルとしてメモリ220等に記憶してもよい。
上述したように、閾値電圧分布は、データリテンションエラー等の影響を受け、書込み処理後の経過時間(以下、単に「経過時間」とも呼ぶ)に応じて変化し得る。また、メモリセルアレイ110の特性は書込み処理及び消去処理を繰り返すことによって変化するため、閾値電圧分布は、書き込み処理及び消去処理の回数(以下、「W/E回数」とも呼ぶ)に応じて変化し得る。また、このような閾値電圧分布の変動特性は、セルユニットCUの積層位置の違い、接続されるワード線WLの違い、或いはメモリセルアレイ110の製造プロセスの違いに応じて変化し得る。なお、以下の説明では、同一のワード線に接続されるメモリセルトランジスタMT群は、単に「ワード線」とも呼び得る。
このため、二次係数Aをテーブルとして記憶する場合、経過時間、W/E回数、接続ワード線WL、及びメモリセルアレイ110の製造プロセス等がパラメタとして含まれ得る。
ステップST39において、メモリコントローラ200は、ステップST38において決定された二次係数Aを有し、2点(V1,C1)及び(V2,C2)を通過する2次関数を特定する。そして、メモリコントローラ200は、特定された二次関数の極小点に対応する電圧を、読出し電圧Vest1と判定する。
より具体的には、メモリコントローラ200は、読出し電圧Vest1を、以下の式に基づいて算出する。
Vest1=(V1+V2)/2−(C1−C2)/2A(V1−V2)
以上により、3点トラッキング処理が終了する。
図17及び図18は、第3実施形態に係るメモリシステムにおける3点トラッキング処理を説明するための模式図である。図17及び図18ではいずれも、電圧R0〜R2から区間セル数C1及びC2が得られた場合が想定される。図17は、範囲[V1,V2]内に二次関数の極小点が存在する場合を模式的に示す。図18は、範囲[V1,V2]外に二次関数の極小点が存在する場合を模式的に示す。図17及び図18は、図16におけるステップST39に相当する。
まず、図17を用いて、2点(V1,C1)及び(V2,C2)の間に極小点が位置する場合について説明する。
図17に示すように、メモリコントローラ200は、決定されたAを用いて、2点(V1,C1)及び(V2,C2)を通るような二次関数Y=A(X−Vest1)^2+Cest1における極小点(Vest1,Cest1)を算出する。この際、2つの区間セル数間の差の絶対値|C1−C2|が十分小さければ(具体的には、|C1−C2|≦A(V1−V2)^2であれば)、読出し電圧Vest1は、範囲[V1,V2]内の値として算出される。
一方、図18に示すように、絶対値|C1−C2|が十分大きければ(具体的には、|C1−C2|>A(V1−V2)^2であれば)、読出し電圧Vest2は、範囲[V1,V2]外の値として算出される。
いずれにしても、第3実施形態によれば、メモリコントローラ200は、最適な読出し電圧Voptが範囲[V1,V2]内にあるか否かに依らず、区間セル数が最も小さくなることが期待される電圧を読出し電圧Vest1として算出することができる。
3.2 本実施形態に係る効果
第3実施形態によれば、メモリコントローラ200は、3点トラッキング処理に際して、代表電圧と区間セル数との関係を表す二次関数の二次係数Aを予め定める。メモリコントローラ200は、当該二次係数Aを有し、2点(V1,C1)及び(V2,C2)を通過する二次関数を特定し、当該二次関数の極小点における電圧を読出し電圧Vest1と判定する。これにより、電圧Voptが範囲[V1,V2]内に存在するか否かに関わらず、二次係数Aによって定まる二次関数の形状に沿って、区間セル数が極小になると期待される位置における電圧値を読出し電圧Vest1として算出することができる。このため、二次係数Aによって決定される二次関数の形状が実情に沿ったものである限り、2点の区間セル数のみから、最適な読出し電圧Voptに近い値を読出し電圧Vest1として算出することができる。
なお、二次係数Aは、トラッキング処理に際して、予め決定される。二次係数Aは、固定値であってもよく、予め定められたテーブルにしたがってパラメトリックに変更可能であってもよい。パラメタは、経過時間、W/E回数、ワード線WL、並びにメモリセルアレイ110の製造プロセスを含む。これにより、閾値電圧分布が変化する要因に応じて、二次関数を適切な形状に変化させることができる。このため、NANDフラッシュメモリ100の使用状況に即して、読出し電圧Vest1を精度よく算出することができる。
3.3 変形例
なお、第3実施形態では、二次係数Aが予め定められた固定値又はテーブルに基づいて決定される場合について説明したが、これに限られない。例えば、二次係数Aは、トラッキング処理が実行されるに伴って、前回のトラッキング処理の結果に応じて適応的に更新されてもよい。以下では、第3実施形態と同等の構成及び動作についてはその説明を省略し、第3実施形態と異なる構成及び動作について主に説明する。
3.3.1 トラッキング処理後にバックグラウンドで更新処理を伴う場合
第3実施形態の変形例に係るメモリシステムにおけるトラッキング処理後にバックグラウンドで更新処理を伴う場合の処理の一例について、図19に示すフローチャートを用いて説明する。図19では、各種トラッキング処理を伴う読出し処理が終了した後にバックグラウンドで実行される二次係数Aの更新処理を含むフローの一例が示される。
図19に示されたステップST10〜ST90の処理は、図7に示されたステップST10〜ST90の処理と同等であるため、主な説明を省略する。なお、ステップST30では、第3実施形態において示された図16のステップST31〜ST35、ST38、及びST39が実行されるものとする。すなわち、ステップST30において、メモリコントローラ200は、2点の区間セル数及び二次係数Aに基づき特定された二次関数の極小点に対応する電圧を読出し電圧Vest1と判定する。なお、読出し電圧Vest1の算出に使用される二次係数Aは、例えば、メモリ220に記憶された値が参照される。
ステップST80の誤り訂正処理において、読出しデータに誤りが含まれない場合、又はECC回路260により誤りを訂正できた場合(つまり、読出し電圧Vest1では誤り訂正処理に失敗し、読出し電圧Vest2では誤り訂正処理に成功した場合)(ステップST80;yes)、データの読出し処理が終了すると共に、処理はステップST100に進む。
ステップST100において、メモリコントローラ200は、バックグラウンドで二次係数Aの更新処理を実行する。なお、本変形例における「バックグラウンドで処理を実行する」とは、例えば、以下のように処理を実行することを含む。
(A)トラッキング処理の終了後、ホスト機器300からの処理要求に対する応答性能に影響を及ぼさない期間(例えば、ホスト機器300からの当初の読出し要求に対して読出しデータを送出した後の期間)において、処理を実行すること
(B)トラッキング処理の終了後、ホスト機器300からの指示に基づく同一の物理アドレスに対する次の読出し処理(同一の物理アドレスに対する次のホストリード処理)を受けるまでに処理が終了しているように、予め(例えば、できるだけ早く)処理を実行すること
なお、更新処理の詳細については、後述する。
以上により、トラッキング処理後にバックグラウンドで更新処理を伴う場合の一連の処理が終了する。
図20は、第3実施形態の変形例に係るメモリシステムにおいてバックグラウンドで実行される二次係数Aの更新処理を説明するためのフローチャートである。
図20に示すように、ステップST101において、メモリコントローラ200は、読出し電圧Vest2近傍の4つの電圧R0’〜R3’を使用した4回の読出し処理により、それぞれデータD0’〜D3’を取得する。なお、電圧R0’〜R3’は、例えば、それぞれ値ΔVで等間隔に設定されるものとする。また、「読出し電圧Vest2近傍の4つの電圧R0’〜R3’」とは、例えば、4つの電圧R0’〜R3’のうちの最大値と最小値との間に読出し電圧Vest2が位置することを含む。しかしながら、上述の例に限らず、電圧R0’〜R3’はいずれも、読出し電圧Vest2より高く設定されても、低く設定されてもよい。
ステップST102において、メモリコントローラ200は、データD0’〜D3’に基づき、代表電圧V1’に対応付けられた区間セル数C1’、代表電圧V2’に対応付けられた区間セル数C2’、及び代表電圧V3’に対応付けられた区間セル数C3’を算出する。
ステップST103において、メモリコントローラ200は、代表電圧と区間セル数との関係を表す二次関数のうち、3点(V1’,C1’)、(V2’,C2’)、及び(V3’,C3’)を通る二次関数を特定し、当該二次関数の二次係数A’を算出する。そして、メモリコントローラ200は、特定された二次関数の極小点に対応する電圧を読出し電圧Vest1’と判定する。
ステップST104において、メモリコントローラ200は、ステップST103において算出された読出し電圧Vest1’を用いて読出し処理を実行する旨のリードコマンドをNANDフラッシュメモリ100に対して発行する。NANDフラッシュメモリ100は、読出し電圧Vest1’を用いて、読出し対象のページからデータを読み出す。NANDフラッシュメモリ100は、読み出したデータをメモリコントローラ200に送信する。
ステップST105において、読出しデータを受けたメモリコントローラ200では、ECC回路260が誤り訂正処理を実行する。ECC回路260による誤りの訂正ができない場合(ステップST105;nо)、処理はステップST106に進む。ステップST106において、メモリコントローラ200は、例えば、リフレッシュ処理等の例外処理を実行する。リフレッシュ処理とは、例えば、書き込まれたデータを別のブロックBLK又は同じブロックBLKに書き直すことにより、変化した閾値電圧分布を書込み処理直後の理想的な状態に戻す処理を含む。また、リフレッシュ処理は、同じブロックBLKに対して同一のデータを上書きすることにより、データリテンションエラーの影響を軽減する方法が実施されてもよい。
一方、読出しデータに誤りが含まれない場合、又はECC回路260により誤りを訂正できた場合(図20のステップST105;yes)、処理はステップST107に進む。ステップST107において、メモリコントローラ200は、メモリ220に記憶されている二次係数Aの値を、ステップST103において算出された二次係数A’に更新する。これにより、二次係数A’が次回以降のトラッキング処理に適用される。
以上により、二次係数A’の更新処理が終了する。なお、図20の例では、読出し電圧Vest1’を用いてデータが正しく読み出せるか否かを確認する処理(ステップST104〜ST106)が実行される場合について説明したが、これに限られない。具体的には、例えば、処理は、ステップST103の後、ステップST104〜ST106を省略して、ステップST107に進んでもよい。
3.3.2 本変形例に係る効果
第3実施形態の変形例によれば、メモリコントローラ200は、トラッキング処理の終了後、二次係数Aの更新処理を実行する。更新処理では、代表電圧と区間セル数との関係を表す二次関数が、少なくとも3点以上の区間セル数及び当該区間セル数に対応する代表電圧に基づいて特定される。これにより、予め決定された二次係数Aに依らず、実測された区間セル数及び代表電圧のみで二次関数を特定することができ、ひいては、現状の閾値電圧分布に即した二次係数A’を算出することができる。このため、当該二次係数A’を、同一の物理アドレスに対する次回のホストリード処理に適用することにより、読出し電圧Vest1の精度の劣化を抑制することができる。
また、更新処理は、ホスト機器300からの処理要求に対する応答性能に影響を及ぼさない期間おいて、又は同一の物理アドレスに対する次のホストリード処理を受けるまでに実行される。これにより、ホスト機器300に対するメモリコントローラ200の応答性能を劣化させることなく、二次係数AをA’に更新することができる。なお、メモリコントローラ200は、二次係数A’に基づいて算出される読出し電圧Vest1’をキャッシュしておく。これにより、同一の物理アドレスに対する次回のホストリード処理の際に、当該読出し電圧Vest1’を用いることができる。したがって、読出し電圧を最適値に近い状態に保つことができる。
なお、図19において示した例では、更新処理が、ステップST10におけるホストリード処理の誤り訂正処理(ステップST20)、及び3点トラッキング処理の結果を使用した読出し処理の誤り訂正処理(ステップST50)に失敗したことをトリガとして実行される場合について説明したが、これに限られない。例えば、更新処理は、或る物理アドレスに対するホストリード処理に失敗したか否かに依らず、当該物理アドレスに対して次に実行されるホストリード処理に備えて、予め実行されてもよい。また、更新処理は、或る物理アドレスに対するホストリード処理をトリガとすることなく、当該物理アドレスに対して新たに実行されるホストリード処理に備えて、メモリシステム1によって自発的に実行されてもよい。すなわち、バックグラウンドで更新処理を実行することは、ホスト機器300からの処理要求に対する応答性能に影響を及ぼさない期間において、ホスト機器300からの新たな読出し処理要求に備えて予め実行することを含む。
4.その他
以上、種々の実施形態について説明したが、第1実施形態、第2実施形態、及び第3実施形態は、これに限られず、種々の変形が適宜適用可能である。
第3実施形態の変形例では、図20のステップST101において、新たに4回の読出し処理を実行してデータD0’〜D3’を取得した。そして、ステップST102において、当該データD0’〜D3’に基づいて区間セル数C1’〜C3’を算出する場合について説明したが、これに限られない。例えば、ステップST101及びST102に代えて、図19のステップST60のm点トラッキング処理で算出された3点の区間セル数を利用してもよい。この場合、バックグラウンドでの二次係数A’の更新処理では新たな読出し処理を実行する必要がないため、メモリシステム1への負荷をより低減することができる。
また、二次係数A’の更新処理において使用する区間セル数の数は3点に限らず、4点以上であってもよい。すなわち、m点トラッキング処理で算出された区間セル数を利用する場合には、当該m点トラッキング処理において算出された4点以上の区間セル数を用いてもよく、また、第3実施形態の変形例の場合には、図20におけるステップST101及びST102に代えて4点以上の区間セル数を算出してもよい。この場合、メモリコントローラ200は、例えば、算出された4点以上の区間セル数からの残差が最も小さくなるような二次関数を特定することによって、二次係数A’を算出してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1…メモリシステム、100…NANDフラッシュメモリ、110…メモリセルアレイ、120…ロウデコーダ、130…ドライバ、140…センスアンプモジュール、150…アドレスレジスタ、160…コマンドレジスタ、170…シーケンサ、200…メモリコントローラ、210…ホストインタフェース回路、220…メモリ、230…プロセッサ、240…バッファメモリ、250…NANDインタフェース回路、260…ECC回路、300…ホスト機器。

Claims (20)

  1. 複数のメモリセルを含むメモリセルアレイを備えた半導体メモリと、
    前記複数のメモリセルに対して第1トラッキング処理を実行して第1電圧を決定し、前記第1トラッキング処理の後の読出し処理において前記第1電圧を使用して前記複数のメモリセルからデータを読み出すように構成されたメモリコントローラと、
    を備え、
    前記メモリコントローラは、前記第1トラッキング処理において、
    前記複数のメモリセルから第1データ、第2データ、及び第3データのみを読み出し、前記第1データは第2電圧を使用して読み出され、前記第2データは第3電圧を使用して読み出され、前記第3データは第4電圧を使用して読み出され、
    前記第1データ及び前記第2データに基づき、前記複数のメモリセルのうちの、前記第2電圧と前記第3電圧との間の第1電圧範囲に対応する第1メモリセルの数を決定し、
    前記第2データ及び前記第3データに基づき、前記複数のメモリセルのうちの、前記第3電圧と前記第4電圧との間の第2電圧範囲に対応する第2メモリセルの数を決定し、
    前記第1メモリセルの数及び前記第2メモリセルの数に基づき、前記第1電圧を決定する
    ように構成された、
    メモリシステム。
  2. 前記第3電圧は、前記第2電圧と前記第4電圧との間の大きさを有する
    請求項1記載のメモリシステム。
  3. 前記メモリコントローラは、前記第1トラッキング処理において、前記第1電圧範囲及び前記第2電圧範囲のうち、前記第1メモリセルの数及び前記第2メモリセルの数のうちの少ない方に対応する電圧範囲内の電圧を、前記第1電圧として決定するように構成された、
    請求項1記載のメモリシステム。
  4. 前記メモリコントローラは、前記第1トラッキング処理において、前記第1電圧範囲内の第1代表電圧と前記第2電圧範囲内の第2代表電圧との間の第3電圧範囲のうち、前記第1メモリセルの数と前記第2メモリセルの数との比に基づいて決定される電圧を、前記第1電圧として決定するように構成された、
    請求項1記載のメモリシステム。
  5. 前記第1電圧は、前記第1トラッキング処理において、前記第3電圧範囲を前記比で内分する点に対応する、
    請求項4記載のメモリシステム。
  6. 前記メモリコントローラは、前記第1トラッキング処理において、
    前記第1電圧範囲内の第1代表電圧、前記第2電圧範囲内の第2代表電圧、前記第1メモリセルの数、前記第2メモリセルの数、及び第1値に基づいて、第1関数を特定し、
    前記特定された第1関数の極小点に対応する電圧を、前記第1電圧として決定する
    ように構成された、
    請求項1記載のメモリシステム。
  7. 前記第1関数は、
    前記第1値を正の2次係数として有する二次関数であり、
    前記第1代表電圧の入力に対する出力と前記第1メモリセルの数との間の残差、及び前記第2代表電圧の入力に対する出力と前記第2メモリセルの数との間の残差を最小にする、
    請求項6記載のメモリシステム。
  8. 前記第1値は、固定値である、
    請求項6記載のメモリシステム。
  9. 前記第1値は、前記メモリセルアレイへデータを書き込んでからの経過時間、前記メモリセルアレイへのデータの書込み回数、前記メモリセルアレイからのデータの消去回数、及び前記複数のメモリセルが接続されるワード線のうちの少なくとも1つに応じて変化する、
    請求項6記載のメモリシステム。
  10. 前記メモリコントローラは、前記第1値を更新する更新処理を実行するように構成され、
    前記メモリコントローラは、前記更新処理において、
    前記複数のメモリセルから第5電圧を使用して第4データを更に読み出し、
    前記第3データ及び前記第4データに基づき、前記複数のメモリセルのうちの、前記第2電圧又は前記第4電圧と前記第5電圧との間の第3電圧範囲に対応する第3メモリセルの数を決定し、
    前記第1代表電圧、前記第2代表電圧、前記第3電圧範囲内の第3代表電圧、前記第1メモリセルの数、前記第2メモリセルの数、及び前記第3メモリセルの数に基づいて、第2関数を特定し、
    前記第1値を、前記特定された第2関数の二次係数を示す第2値に更新する
    ように構成された、
    請求項6記載のメモリシステム。
  11. 前記メモリコントローラは、前記第1電圧を使用して前記複数のメモリセルから読み出されたデータの誤り訂正処理に失敗した場合、前記更新処理を実行するように構成された、
    請求項10記載のメモリシステム。
  12. 前記第2関数は、
    前記第2値を正の2次係数として有する二次関数であり、
    前記第1代表電圧の入力に対する出力と前記第1メモリセルの数との差、前記第2代表電圧の入力に対する出力と前記第2メモリセルの数との差、及び前記第3代表電圧の入力に対する出力と前記第3メモリセルの数との差に関する残差を最小にする、
    請求項10記載のメモリシステム。
  13. 前記メモリコントローラは、前記読出し処理によって読み出されたデータを外部機器に送出した後に、前記更新処理を実行するように構成された、
    請求項10記載のメモリシステム。
  14. 前記メモリコントローラは、ホスト機器から前記複数のメモリセルに対する新たな読出し要求を受ける前に、前記更新処理を実行するように構成された、
    請求項10記載のメモリシステム。
  15. 前記メモリコントローラは、
    前記第1電圧を使用して前記複数のメモリセルから読み出されたデータの誤り訂正処理に失敗した場合、第6電圧を決定する第2トラッキング処理を実行し、
    前記第1トラッキング処理及び前記第2トラッキング処理の後に前記読出し処理を実行するように構成され、
    前記メモリコントローラは、前記第2トラッキング処理において、
    前記複数のメモリセルから第5電圧を使用して第4データを更に読み出し、
    前記第3データ及び前記第4データに基づき、前記複数のメモリセルのうちの、前記第2電圧又は前記第4電圧と前記第5電圧との間の第3電圧範囲に対応する第3メモリセルの数を決定し、
    前記第1メモリセルの数、前記第2メモリセルの数、及び前記第3メモリセルの数に基づき、前記第6電圧を決定する
    ように構成された、
    請求項1記載のメモリシステム。
  16. 前記メモリコントローラは、前記第1トラッキング処理において、
    前記第1電圧範囲内の第1代表電圧、前記第2電圧範囲内の第2代表電圧、前記第1メモリセルの数、前記第2メモリセルの数、及び第1値に基づいて、第1関数を特定し、
    前記特定された第1関数の極小点に対応する電圧を、前記第1電圧として決定する
    ように構成された、
    請求項15記載のメモリシステム。
  17. 前記メモリコントローラは、前記第1値を更新する更新処理を実行するように構成され、
    前記メモリコントローラは、前記更新処理において、
    前記第1代表電圧、前記第2代表電圧、前記第3電圧範囲内の第3代表電圧、前記第1メモリセルの数、前記第2メモリセルの数、及び前記第3メモリセルの数に基づいて、第2関数を特定し、
    前記第1値を、前記特定された第2関数の二次係数を示す第2値に更新する
    ように構成された、
    請求項16記載のメモリシステム。
  18. 前記メモリコントローラは、前記第1電圧を使用して前記複数のメモリセルから読み出されたデータの誤り訂正処理に失敗した場合、前記更新処理を実行するように構成された、
    請求項17記載のメモリシステム。
  19. 前記メモリコントローラは、前記読出し処理によって読み出されたデータを外部機器に送出した後に、前記更新処理を実行するように構成された、
    請求項17記載のメモリシステム。
  20. 前記メモリコントローラは、ホスト機器から前記複数のメモリセルに対する新たな読出し要求を受ける前に、前記更新処理を実行するように構成された、
    請求項17記載のメモリシステム。
JP2018245035A 2018-12-27 2018-12-27 メモリシステム Pending JP2020107376A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018245035A JP2020107376A (ja) 2018-12-27 2018-12-27 メモリシステム
US16/565,625 US10777283B2 (en) 2018-12-27 2019-09-10 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018245035A JP2020107376A (ja) 2018-12-27 2018-12-27 メモリシステム

Publications (1)

Publication Number Publication Date
JP2020107376A true JP2020107376A (ja) 2020-07-09

Family

ID=71124377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018245035A Pending JP2020107376A (ja) 2018-12-27 2018-12-27 メモリシステム

Country Status (2)

Country Link
US (1) US10777283B2 (ja)
JP (1) JP2020107376A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7086449B1 (ja) * 2021-01-20 2022-06-20 ウェスタン デジタル テクノロジーズ インコーポレーテッド 符号化されたFoggy-Fineプログラミングを用いた、不揮発性メモリのための読み出し閾値の較正

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220080790A (ko) 2020-12-07 2022-06-15 삼성전자주식회사 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법
CN112562762A (zh) * 2020-12-23 2021-03-26 江苏国科微电子有限公司 一种wl阈值电压分布的获取方法、系统及相关组件
CN114242149B (zh) * 2022-02-28 2022-05-27 杭州阿姆科技有限公司 一种基于读数据的电压分布分析方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7460398B1 (en) * 2007-06-19 2008-12-02 Micron Technology, Inc. Programming a memory with varying bits per cell
JP5142692B2 (ja) 2007-12-11 2013-02-13 株式会社東芝 不揮発性半導体記憶装置
US7751253B2 (en) * 2008-03-17 2010-07-06 Micron Technology, Inc. Analog sensing of memory cells with a source follower driver in a semiconductor memory device
JP2009238874A (ja) 2008-03-26 2009-10-15 Toshiba Corp 半導体メモリ及びその製造方法
JP2009266944A (ja) 2008-04-23 2009-11-12 Toshiba Corp 三次元積層不揮発性半導体メモリ
JP5283960B2 (ja) 2008-04-23 2013-09-04 株式会社東芝 三次元積層不揮発性半導体メモリ
US7808831B2 (en) 2008-06-30 2010-10-05 Sandisk Corporation Read disturb mitigation in non-volatile memory
US7859932B2 (en) 2008-12-18 2010-12-28 Sandisk Corporation Data refresh for non-volatile storage
JP2010199235A (ja) 2009-02-24 2010-09-09 Toshiba Corp 不揮発性半導体記憶装置
JP2012069205A (ja) 2010-09-22 2012-04-05 Toshiba Corp 不揮発性半導体記憶装置
JP2012252740A (ja) 2011-06-02 2012-12-20 Toshiba Corp 不揮発性半導体記憶装置
JP2013122804A (ja) 2011-12-12 2013-06-20 Toshiba Corp 半導体記憶装置
US8773904B2 (en) 2011-12-28 2014-07-08 Apple Inc. Optimized threshold search in analog memory cells
US9431130B2 (en) 2014-03-04 2016-08-30 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7086449B1 (ja) * 2021-01-20 2022-06-20 ウェスタン デジタル テクノロジーズ インコーポレーテッド 符号化されたFoggy-Fineプログラミングを用いた、不揮発性メモリのための読み出し閾値の較正

Also Published As

Publication number Publication date
US10777283B2 (en) 2020-09-15
US20200211654A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
US11763893B2 (en) Memory system
US11195585B2 (en) Calculating shift amounts for read voltage correction
US20220270687A1 (en) Multi-bit memory system with adaptive read voltage controller
US11609814B2 (en) Memory system
JP2020107376A (ja) メモリシステム
US9514830B2 (en) Non-volatile memory device, memory system including the same, and method of operating the same
US10860251B2 (en) Semiconductor memory device
JP2018028956A (ja) 半導体記憶装置及びメモリシステム
US9548127B1 (en) Memory system
JP7353889B2 (ja) メモリシステムおよび方法
JP2019053806A (ja) メモリシステム、及びメモリシステムの制御方法
JP2022146585A (ja) メモリシステム
US10310942B2 (en) Memory system
US11017837B2 (en) Memory system
US10861536B2 (en) Semiconductor memory device
US11424002B2 (en) Memory system that includes a NAND flash memory and a memory controller
JP2019160379A (ja) 半導体記憶装置及びメモリシステム
US11810642B2 (en) Memory device including defective column addresses stored in ascending order
US20230298685A1 (en) Memory system and method
JP2024001713A (ja) メモリシステム