JP2023002208A - メモリシステム及びリード方法 - Google Patents

メモリシステム及びリード方法 Download PDF

Info

Publication number
JP2023002208A
JP2023002208A JP2021103293A JP2021103293A JP2023002208A JP 2023002208 A JP2023002208 A JP 2023002208A JP 2021103293 A JP2021103293 A JP 2021103293A JP 2021103293 A JP2021103293 A JP 2021103293A JP 2023002208 A JP2023002208 A JP 2023002208A
Authority
JP
Japan
Prior art keywords
read
information
memory
shift
data
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
JP2021103293A
Other languages
English (en)
Inventor
裕樹 小松
Yuki Komatsu
康之 牛島
Yasuyuki Ushijima
克行 島田
Katsuyuki Shimada
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 JP2021103293A priority Critical patent/JP2023002208A/ja
Priority to US17/682,799 priority patent/US11881265B2/en
Publication of JP2023002208A publication Critical patent/JP2023002208A/ja
Pending legal-status Critical Current

Links

Images

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/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • 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
    • 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/5628Programming or writing circuits; Data input 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/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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • G11C16/3409Circuits or methods to recover overerased nonvolatile memory cells detected during erase verification, usually by means of a "soft" programming step
    • 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/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

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

Abstract

【課題】リードの性能を向上することができるメモリシステム及び方法を提供すること。【解決手段】実施形態によれば、メモリシステムはメモリセルを含む不揮発性メモリと、不揮発性メモリに複数の読み出し電圧を印加して複数のビットのデータをリードするコントローラを具備する。メモリセルは複数のグループを含む。コントローラは複数の読み出し電圧の値として設定可能な第1値を示す第1情報と、第1情報に従って複数の読み出し電圧の値が第1値に設定された場合に複数のグループから複数ビットのデータをリード出来たか否かを識別可能な情報を含む第2情報と、複数の読み出し電圧の値が第1値に設定された場合に複数ビットのデータがリード出来なかった少なくとも1個のグループから複数ビットのデータをリード出来た場合に複数の読み出し電圧の値として設定された第2値に関する情報を第2情報に基づいて特定可能な情報を含む第3情報を記憶する。【選択図】図13

Description

本発明の実施形態は、メモリシステム及びリード方法に関する。
メモリシステムは、複数のメモリセルを有するメモリデバイスを備える。メモリシステムでは、リードの際、読み出し対象のメモリセルに接続されたワード線に読み出し電圧が印加される。読み出し電圧の値が適正値ではないと、リードしたデータの誤りが多くなり、エラー訂正処理やリトライリードに時間が掛かる。その結果、リードのレイテンシが増加し、リードの性能が低下する。
特開2012-203957号公報 特開2013-122793号公報 特開2010-192049号公報 米国特許第8879325号明細書 米国特許第8879325号明細書
本発明の目的は、リードの性能を向上することができるメモリシステム及びリード方法を提供することである。
実施形態によれば、メモリシステムは、複数ビットのデータを夫々書き込むことができる第1の複数のメモリセルを含む不揮発性メモリと、不揮発性メモリに複数の読み出し電圧を印加して前記第1の複数のメモリセルのうちある数のメモリセルに書き込まれた複数のビットのデータをリードするコントローラと、を具備する。不揮発性メモリは、前記第1の複数のメモリセルのうち前記第1の複数より少ない第2の複数のメモリセルをそれぞれが含む複数のグループを含む。コントローラは、複数の読み出し電圧の夫々の値として設定可能な第1の値を示す第1情報と、前記第1情報に従って複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に複数のグループ夫々から複数ビットのデータをリード出来たか否かを識別可能な情報を含む第2情報と、複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に前記複数ビットのデータがリード出来なかった少なくとも1個のグループから複数ビットのデータをリード出来た場合に前記複数の読み出し電圧のぞれぞれの値として設定された第2の値に関する情報を前記第2情報に基づいて特定可能な情報を含む第3情報と、を記憶する。
第1実施形態によるメモリシステムの一例を示すブロック図。 メモリシステムに含まれるメモリチップの一例を示すブロック図。 メモリチップのメモリセルアレイの一例を示す回路図。 TLCモードで動作するメモリセルの閾値電圧の分布の一例を示す図。 RAMに記憶される読み出し電圧情報の一例を示す図。 デフォルトテーブルの一例を示す図。 シフトテーブルの一例を示す図。 L1テーブルの一例を示す図。 L2テーブルの一例を示す図。 L3テーブルの一例を示す図。 シグネチャ/インデックステーブルの一例を示す図。 L1テーブル、L2テーブル、L3テーブル及びシグネチャ/インデックステーブルの作成・更新の際のメモリコントローラの処理の一例を示すフローチャート。 ホストによるリード動作の際のメモリコントローラの処理の一例を示すフローチャート。 シフトパターンのインデックスを記憶するメモリサイズを説明する図。 シフトパターンのインデックスの使用の偏りを示す図。 第2実施形態の読み出し電圧情報の一例を示す図。 L1テーブルとL2テーブルの一例を示す図。 符号/インデックステーブルの一例を示す図。
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。
以下、図面を参照しながら本実施の形態について詳細に説明する。
(第1実施形態)
図1は、第1実施形態によるメモリシステム12の一例を示すブロック図である。メモリシステム12は、ホスト14にケーブル、コネクタ、ソケット又はネットワークを介して接続される。メモリシステム12は、ホスト14が備えるプリント配線基板に実装されてもよい。ホスト14は、メモリシステム12を制御するように構成された情報処理装置である。ホスト14は、例えば、サーバ装置、パーソナルコンピュータ、車載装置、又はモバイル型の情報処理装置などである。ホスト14は、メモリシステム12に対するアクセス要求を発行することができる。アクセス要求は、読み出し要求(リード要求とも称される)及び書き込み要求(ライト要求とも称される)を含む。本明細書では、読み出し動作はリード動作とも称され、書き込み動作はライト動作とも称される。
メモリシステム12は、メモリコントローラ20と、NAND型フラッシュメモリ(以下,NANDメモリと称される)40とを備える。メモリシステム12は、例えば、SSD(Solid State Drive)又はUFS(Universal Flash Storage)デバイスである。NANDメモリ40は不揮発性メモリの一例である。NANDメモリ40の代わりに、他の不揮発性メモリが用いられてもよい。不揮発性メモリの他の例は、NOR型フラッシュメモリ、MRAM(Magneto-resistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)である。
メモリコントローラ20は、ホストインターフェースコントローラ(ホストI/Fコントローラ)22、RAM(Random Access Memory)24、ROM(Read Only Memory)26、CPU(Central Processing Unit)28、ECC(Error Correcting Code)回路30、及びNANDコントローラ32を含む。ホストI/Fコントローラ22、RAM24、ROM26、CPU28、ECC回路30、及びNANDコントローラ32は、バス34に接続される。メモリコントローラ20は、上記の構成要素が1個のチップに纏められたSystem on aChip(SoC)で構成されてもよい。これらの構成要素の一部は、メモリコントローラ20の外部に設けられてもよい。
ホストI/Fコントローラ22は、CPU28による制御の下で、ホスト14とメモリシステム12との間の通信インターフェースの制御、及びホスト14とRAM24との間のデータ転送の制御を実行する。ホスト14とメモリシステム12との間の通信インターフェースの例は、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)、ATA(AT Attachment)、SATA(Serial ATA)、PCIe(PCI Express)(TM)、Ethernet(TM)、Fibre channel、NVMe(NVM Express)(TM)、USB(Universal Serial Bus)(TM)、UART(Universal Asynchronous Receiver/Transmitter)(TM)である。
RAM24の例は、DRAM(Dynamic Random Access Memory)又はSRAM(Static Random Access Memory)などであるが、これらに限定されない。
RAM24は、ホスト14とNANDメモリ40との間のデータ転送のためのバッファとして機能する。RAM24は、CPU28にワークエリアを提供する。RAM24には、メモリシステム12の動作時に、ROM26に記憶されているファームウェア(プログラム)がロードされる。
本実施形態では、メモリシステム12の動作時に、例えばNANDメモリ40に記憶されている読み出し電圧情報36がRAM24にロードされる。読み出し電圧情報36は、NANDメモリ40に対するリード動作において、後述する各ワード線WLに印加する読み出し電圧の設定値に関する情報を含む。読み出し電圧情報36についての詳細は後述する。
詳細は後述するが、本実施形態では、メモリコントローラ20は、各ワード線WLに印加される読み出し電圧の値を初期値に設定してリード動作を実行するようにNANDメモリ40に指示する。NANDメモリ40が備えるメモリセルの閾値は、プログラムディスターブ、リードディスターブ、あるいはデータリテンション等の様々な要因で変化する。閾値の変化に追従した読み出し電圧を設定しないと、リードしたデータの誤りビット数(FBC)が増加する。FBCがECC回路30により訂正できる誤りビット数以上の場合、メモリコントローラ20はリードエラーを検出する。メモリコントローラ20は、リードエラーを検出すると、読み出し電圧情報36に基づいて読み出し電圧の値を現在の設定値(例えば初期値)からシフトした値に設定してリトライリード(Retry Read)動作を実行するように、NANDメモリ40に指示する。メモリコントローラ20は、リード成功を検出するまで、リトライリード動作を実行するようにNANDメモリ40に指示する。リトライリード動作が実行されると、リード動作のレイテンシが増加する。そのため、メモリコントローラ20は、ホストからの読み出し要求を受ける前にメモリセルの閾値電圧を把握し、それに応じて読み出し電圧の値を設定することが望ましい。
なお、メモリコントローラ20が、読み出し電圧の値をシフトするたびに、シフト後の読み出し電圧の値をNANDメモリ40に指示しなくてもよい。NANDメモリ40が、読み出し電圧の現在の設定値を記憶し、メモリコントローラ20が読み出し電圧情報36をNANDメモリ40に通知し、NANDメモリ40がシフト後の読み出し電圧の値を計算してもよい。
CPU28は、ハードウェアプロセッサの一例である。CPU28は、例えばRAM24にロードされたファームウェアを実行することで、メモリコントローラ20を制御する。例えば、CPU28は、以下に説明するデータのライト動作、リード動作、及び消去動作を制御する。なお、動作毎に複数のCPU28が設けられてもよい。
ECC回路30は、NANDメモリ40へのライト動作の対象のデータ(書き込みデータ、又はライトデータとも称される)に対してエラー訂正のための符号化を行う。ECC回路30は、NANDメモリ40から読み出されたデータ(読み出しデータ、又はリードデータとも称される)にエラーが含まれる場合、ライト動作時に付与したエラー訂正符号に基づき、リードデータに対してエラー訂正を実行する。
NANDコントローラ32は、CPU28の制御の下で、RAM24とNANDメモリ40との間のデータ転送の制御を実行する。RAM24とNANDメモリ40との間のデータ転送の例は、Toggle DDR又はONFI(Open NAND Flash Interface)である。
メモリコントローラ20とNANDメモリ40とは、複数、例えば2つのチャネル(Ch0、Ch1)で接続される。チャネルの数は、1個又は3個以上でもよい。NANDコントローラ32は、各チャネルCh0、Ch1を介したデータ転送の制御を制御する。
NANDメモリ40は、複数、例えば4つのメモリチップ42a、42b、42c、42dを有する。チャネルCh0には、2つのメモリチップ42a、42bが接続される。チャネルCh1には、2つのメモリチップ42c、42dが接続される。各チャネルに、3以上のメモリチップが接続されてもよい。
図2は、メモリチップ42aの一例を示すブロック図である。他のメモリチップ42b、42c、42dも同様に構成される。
メモリチップ42aは、入出力信号処理回路(I/O信号処理回路)110、制御信号処理回路111、チップ制御回路112、コマンドレジスタ113、アドレスレジスタ114、レディ/ビジー(RY/BY)回路120、メモリセルアレイ118、カラムデコーダ115、データレジスタ116、センスアンプ117、及びロウデコーダ119を有する。
メモリチップ42aとNANDコントローラ32とを接続するチャネルCh0は、入出力(I/O)信号線、制御信号線、レディー/ビジー(RY/BY)信号線を含む。I/O信号線は、I/O信号処理回路110に接続される。I/O信号線は、データ、アドレス、各種指示、及び各種応答を伝送する。メモリコントローラ20は、I/O信号線を介して、読み出し指示(リード指示とも称される)、書き込み指示(ライド指示とも称される)、及び消去指示をメモリチップ42aに送信する。
制御信号線は、チップイネーブル(CE)信号線、コマンドラッチイネーブル(CLE)信号線、アドレスラッチイネーブル(ALE)信号線、ライトイネーブル(WE)信号線、リードイネーブル(RE)信号線などを含む。制御信号線は、制御信号処理回路111に接続される。CE信号線は、対象のメモリチップが選択中か否かを示す信号を伝送する。CLE信号線は、I/O信号線を用いて送られる信号がコマンドであることを示す信号を転送する。ALE信号線は、I/O信号線を用いて送られる信号がアドレスであることを示す信号を転送する。WE信号線は、I/O信号線の信号をメモリチップ42aに取り込ませるための信号を伝送する。RE信号線は、メモリチップ42aからの信号をI/O信号線に出力させるための信号を伝送する。
RY/BY信号線は、RY/BY生成回路120に接続される。RY/BY信号線は、NANDメモリ40が動作中か否かを示す信号を伝送する。RY/BY信号線を伝送する信号は、例えば、論理値Hレベルで非動作中に対応したレディー状態(RY)を示し、論理値Lレベルで動作中に対応したビジー状態(BY)を示す。
I/O信号処理回路110は、メモリコントローラ20とメモリチップ42aとの間でI/O信号を送受信するためのバッファ回路である。I/O信号処理回路110がラッチしたコマンドは、コマンドレジスタ113に振り分けられて格納される。I/O信号処理回路110がラッチしたアクセス先を指定するアドレスは、アドレスレジスタ114に振り分けられて格納される。I/O信号処理回路110がラッチしたデータは、データレジスタ116に振り分けられて格納される。I/O信号処理回路110は、データレジスタ116からデータを受け付ける。
アドレスレジスタ114に格納されたアドレスは、チップ番号、ロウアドレス、及びカラムアドレスを含む。チップ番号は、メモリチップ42aを区別するための識別情報である。チップ番号、ロウアドレス、及びカラムアドレスは、チップ制御回路112、ロウデコーダ119、及びカラムデコーダ115に読み出される。
制御信号処理回路111は、制御信号を受け付け、受け付けた制御信号に基づいて、I/O信号処理回路110が受け付けたI/O信号の格納先のレジスタの振り分けを実行する。また、制御信号処理回路111は、受け付けた制御信号をチップ制御回路112に転送する。
チップ制御回路112は、制御信号処理回路111を介して受信する各種制御信号に基づいて状態遷移する回路である。チップ制御回路112は、メモリチップ42aの動作を制御する。RY/BY生成回路120は、チップ制御回路112による制御の下でRY/BY信号線を伝送する信号の状態をレディー状態(RY)とビジー状態(BY)との間で遷移させる。
センスアンプ117は、リード動作において、メモリセルアレイ118に含まれるメモリセルMT(図3参照)の状態をセンスし、センスした状態に基づいてリードデータを生成する。センスアンプ117は、生成したリードデータをデータレジスタ116に格納する。データレジスタ116に格納されたリードデータは、データ線を通じてI/O信号処理回路110に送られ、I/O信号処理回路110からメモリコントローラ20へ転送される。
メモリセルアレイ118は、複数のメモリセルMTを有し、データを記憶する。メモリセルアレイ118は、複数の物理ブロックBLK(図3参照)を有する。各物理ブロックBLKは、複数のメモリセルMTを含む。物理ブロックBLKは、データ消去の最小単位である。すなわち、1個の物理ブロックBLKに記憶されている全てのデータは、一括して消去される。以下では、物理ブロックは単にブロックと称される。
図3は、メモリセルアレイ118の一例を示す回路図である。メモリセルアレイ118は、例えば、複数のメモリセルMTが立体状に配置されたいわゆる三次元構造のNANDメモリである。メモリセルアレイ118は、複数のブロックBLK0、BLK1、…を有する。例えば、メモリセルアレイ118は、数百から数千のブロックBLKを有する。
図3に示すように、m本のビット線BL0~BLm-1は、各ブロックBLK0、BLK1、…において、複数、例えば4つのストリングSTRとそれぞれ接続される。mは2以上の整数である。各ストリングSTRは、1個の第1選択ゲートトランジスタST(ST0、又はST1…STm-1)、複数のメモリセルMT(MT0~MT7)、及び1個の第2選択ゲートトランジスタDT(DT0、又はDT1…DTm-1)を含む。第1選択ゲートトランジスタST0(又はST1…STm-1)、複数のメモリセルMT0~MT7、及び1個の第2選択ゲートトランジスタDT0(又はDT1…DTm-1)は、それぞれこの順で、ソース線CELSRCと1個のビット線BL0(又はBL1…BLm-1)との間に直列に接続される。共通のワード線WLと第1選択ゲート線(ソース側選択ゲート線)SGSLと第2選択ゲート線(ドレイン側選択ゲート線)SGDLに接続され、相違する複数のビット線BL0~BLm-1それぞれに接続されたm個のストリングSTR0~STRm-1は、1個のストリングユニットSUを構成する。各ブロックBLK0、BLK1、…は、複数、例えば4つのストリングユニットSU0~SU3を含む。
第1選択ゲートトランジスタST0~STm-1の制御ゲート電極は、第1選択ゲート線(ソース側選択ゲート線)SGSLに接続される。第1選択ゲート線SGSLは、第1選択ゲートトランジスタST0~STm-1の制御ゲート電極を制御する信号線である。第1選択ゲートトランジスタST0~STm-1は、第1選択ゲート線SGSLを通じて印加される電圧に基づき、複数のメモリセルMT0~MT7とソース線CELSRCとの間を選択的に接続する。異なる4つの第1選択ゲート線SGSLが、ストリングユニットSU0~SU3にそれぞれ接続されてもよい。
第2選択ゲートトランジスタDT0~DTm-1の制御ゲート電極は、第2選択ゲート線(ドレイン側選択ゲート線)SGDL0~SGDL3にそれぞれ接続される。第2選択ゲート線SGDL0~SDGL3は、第2選択ゲートトランジスタDT0~DTm-1の制御ゲート電極をそれぞれ制御する信号線である。第2選択ゲートトランジスタDT0~DTm-1は、第2選択ゲート線SGDL0~SGDL3を通じてそれぞれ印加される電圧に基づき、複数のメモリセルMT0~MT7とビット線BL0~BLm-1との間をそれぞれ選択的に接続する。
各メモリセルMTは、積層ゲート構造を有したMOSFET(Metal Oxide Semiconductor Field Effect Transistor)で構成される。積層ゲート構造は、例えば、トンネル酸化膜を介在して形成されたフローティングゲートと、フローティングゲート上にゲート絶縁膜を介在して形成された制御ゲート電極とを含む。フローティングゲートに蓄えられる電荷の数に応じてメモリセルMTの閾値電圧が変化する。メモリセルMTは、書き込み時にはフローティングゲートに正の電荷が注入され、消去時にはフローティングゲートから正の電荷が引き抜かれる。各メモリセルMTは、2つ以上のデータ値のうちいずれか1つが書き込まれ得る。各メモリセルMTは、閾値電圧の違いに応じて2つ以上のデータ値のうちの1つを不揮発に記憶する。
各ブロックBLK0、BLK1、…において、各メモリセルMT0~MT7の制御ゲート電極は、対応するワード線WL0~WL7にそれぞれ接続される。各ワード線WL0~WL7は、メモリセルアレイ118においてX方向に並ぶ一行のメモリセルMTを選択するための制御信号線である。各ワード線WL0~WL7は、一行に並ぶこれら一群のメモリセルMTに共通に接続される。メモリセルMT0~MT7は、ワード線WL0~WL7とビット線BL0~BLm-1との交差部にそれぞれ設けられる。読み出し又は書き込みが行われるメモリセルMTに接続されたワード線WL(以下、選択ワード線WLとも称される)に、読み出し電圧又は書き込み電圧を印加することで、メモリセルMTの読み出し又は書き込みが可能になる。なお、メモリセルMTの読み出しと書き込みについては後ほど説明する。
各ブロックBLK0、BLK1、…において、4つのストリングユニットSU0~SU3それぞれのメモリセルMT0~MT7には、同じアドレスに対応するワード線WL0~WL7が共通に接続される。1つのストリングユニットSUにおいて、ワード線WLを共有する複数のメモリセルMTの組は、セルユニットCUと称される。1個のセルユニットCUに含まれる複数のメモリセルMTは、一括してデータが書き込まれ、また一括してデータが読み出される。1個のセルユニットCUの記憶空間は、1個又は複数のページを含む。
メモリシステム12では、各メモリセルMTが複数ビットの値を記憶可能に構成され得る。例えば、各メモリセルMTが複数ビット、例えばnビットの値を記憶可能な場合、ワード線WL当たりの記憶容量は、nページ分のサイズに等しくなる。nは2以上の整数である。ここでは一例として、各メモリセルMTが3ビットの値を記憶するトリプルレベルセル(TLC)モードで動作する場合について説明する。なお、各メモリセルMTが2ビットの値を記憶する動作モードはマルチレベルセル(MLC)モードと称し、各メモリセルMTが4ビットの値を記憶する動作モードはクアッドレベルセル(QLC)モードと称される。実施形態は、MLCモード、QLCモード、あるいは各メモリセルMTが複数のビットの値を記憶するその他のモードにも適用可能である。
TLCモードでは、各セルユニットCUに3ページ分のデータが記憶され得る。1個のセルユニットCUによって構成される3つのページのうち、先に書き込みがなされるページをロアーページ、ロアーページの後に書き込みがなされるページをミドルページ、ミドルページの後に書き込みがなされるページをアッパーページと称される。なお、1個のセルユニットCUによって構成される複数のページの一部又は全てのページに対して一括にプログラム(すなわち書き込み)が実行されるモードがあってもよい。
図4は、TLCモードで動作するメモリセルMTの閾値電圧の分布の一例を示す図である。図4において、横軸は、メモリセルMTの閾値電圧を表し、縦軸は、あるビット値(データ値)を示すメモリセルMTの数を表す。各メモリセルMTがTLCモードで動作する場合、メモリセルMTの閾値電圧は、図4に示すように8個の分布Er、分布A、分布B、分布C、分布D、分布E、分布F、及び分布Gを含む。
TLCモードによれば、各メモリセルMTは、アッパーページに属するデータxと、ミドルページに属するデータyと、ロアーページに属するデータzとで定義される8値データxyzを記憶可能である。データx、データy、及びデータzの値は、“0”又は“1”である。
各メモリセルMTの閾値電圧は、分布Er、分布A、分布B、分布C、分布D、分布E、分布F、及び分布Gの8個の分布のいずれかに属するように制御される。各分布と8値データxyzのデータ値との対応は、予め設定される。例えば、分布Erにはデータ値“111”が割り当てられる。分布Aにはデータ値“110”が割り当てられる。分布B~Gには図4に示す各データ値が割り当てられる。なお、各分布とデータ値との対応は、上記に限定されない。
NANDメモリ40のロウデコーダ119、カラムデコーダ115、データレジスタ116、及びセンスアンプ117について、図2も用いて補足的に説明する。ロウデコーダ119、カラムデコーダ115、データレジスタ116、及びセンスアンプ117は、メモリセルアレイ118に対する周辺回路の一部である。周辺回路は、チップ制御回路112による制御に基づいてメモリセルアレイ118に対する読み出し、書き込み、及び消去のアクセスを実行する。
例えばライト動作において、カラムデコーダ115は、カラムアドレスに対応したビット線BLを選択し活性化する。センスアンプ117は、カラムデコーダ115により選択されたビット線BLの電位を0ボルトとする。ロウデコーダ119は、ロウアドレスに対応して選択されたワード線WLに、プログラミングパルス(すなわち、1サイクル毎に電圧が徐々に高くなるパルス)を印加する。これにより、選択されたビット線BLと選択されたワード線WLとの交差部に位置するメモリセルMTのフローティングゲートに電荷が注入され、その結果、フローティングゲートの閾値電圧が上昇する。センスアンプ117は、プログラミングパルスの1サイクル毎に、書き込み対象のメモリセルMTの閾値電圧がデータレジスタ116に格納されているデータに応じた電圧に到達したか否かを確認する。センスアンプ117による確認結果に応じて、メモリセルMTの閾値電圧が書き込むデータ値に応じた電圧に到達するまで、ロウデコーダ119はプログラミングパルスの印加を継続する。
一方で、リード動作において、センスアンプ117は、ビット線BLに電源電位Vccをプリチャージする。ロウデコーダ119は、選択ワード線WLに、データ値“111”、”110”、“100”、“000”、“010”、“011”、“001”、“101”毎の分布を特定するための複数種類の読み出し電圧を順次印加する。なお、ロウデコーダ119は、非選択のワード線WLには転送電位の電圧を印加し、非選択のワード線WLに属するメモリセルMTを導通状態にしておく。センスアンプ117は、プリチャージにより蓄えられた電荷が、どの読み出し電圧が印加されたときにソース線CELSRCに流出したかを検知することによって、対象のメモリセルMTに記憶されているデータ値を判定する。
例えば、図4に示すように、読み出し電圧の値が分布Erと分布Aとの間の電圧VAである場合、読み出し電圧VA未満の閾値電圧を有するメモリセルMTは、分布Erに含まれると判断される。また、読み出し電圧の値が分布Aと分布Bとの間の電圧VBである場合、読み出し電圧VB未満の閾値電圧を有するメモリセルMTは、分布Er又は分布Aに含まれると判断される。同様に、図4に示すように、読み出し電圧の値が、隣接する2つの分布の電圧である場合、この読み出し電圧未満の閾値電圧を有するメモリセルMTは、2つの分布のうち閾値電圧が低い分布に含まれると判断される。以下では、読み出し電圧VA~VGを区別しない場合は、単に読み出し電圧Vと総称される。
メモリセルの閾値電圧は、プログラムディスターブ、リードディスターブ、又はデータリテンションなどのストレスの影響で変化する。閾値電圧が変化すると、読み出し電圧の適正値も変化する。そのため、既定の閾値分布に応じた既定の読み出し電圧ではリードできないことがある。メモリコントローラ20は、読み出し電圧の既定値(初期値とも称される)を管理する(具体的にはRAM24に格納する)ととともに、読み出し電圧の適正値が既定値からどれだけずれているかを示すシフト値も管理する。
シフト値は、複数のメモリセル毎に管理されることが好ましい。複数のメモリセルの例は、ブロックがある。なお、シフト値は、同じブロック内でもワード線毎に異なる可能性があるが、ワード線毎のシフト値のずれは、統計的な手法で補正できる。このため、シフト値は、ブロック毎に管理される。シフト値は、読み出し電圧情報36に含まれる。
TLCのNANDメモリでは、読み出し電圧は7個あるので、各読み出し電圧のシフト値を1バイトで表すと、ブロック当たりのシフト値は7バイトとなる。1つのメモリチップは数千個のブロックを含むことがある。しかも、NANDメモリ40は、多数のメモリチップを含むことがある。従って、NANDメモリ40の全ブロックの読み出し電圧のシフト値は膨大な情報量である。
シフト値を記憶するメモリのサイズを削減するために、シフト値そのものを記憶するのではなく、限られた数のシフトパターンを予め決めておき、シフトパターンの識別情報を記憶することが考えられている。シフトパターンは、7個のシフト値の組合せである。限られた数のシフトパターンは、それぞれに識別情報(インデックス)が付されて、シフトテーブルとして記憶されている。シフトパターンは、閾値電圧の推定結果に基づいて決定される。閾値電圧は、ある読み出し電圧でリードした時のリードデータの誤り(“0”を“1”と誤リードする割合と“1”を“0”と誤リードする割合との比)に基づいて推定される。例えば、“0”を“1”と誤リードする割合が“1”を“0”と誤リードする割合より大きい場合、閾値電圧はマイナス方向にシフトされていると推定できる。シフト量はシフト値をアナログ電圧に変換するD/A変換器の単位(DAC)で表される。閾値電圧のシフトに応じて読み出し電圧も同様にシフトされることが要求される。プログラムディスターブ、リードディスターブ、又はデータリテンションなどのストレスをNANDメモリ40に与えた時のシフト値が求められ、シフトテーブルに登録される。
例えば、シフトパターンの総数を256個とすると、シフトパターンは8ビット(すなわち1バイト)のインデックスにより特定可能である。このため、シフト値そのものを記憶する場合は1ブロック当たり7バイトのメモリサイズが必要であったが、256個のシフトパターンのインデックスを記憶することにより、1ブロック当たりのメモリサイズを1バイトに削減することができる。
メモリシステムの記憶能力の要求の高まりに伴い、NANDメモリ40のブロック数は増加している。例えば、NANDメモリが8個のメモリチップを含み、1メモリチップが3328ブロックを含む場合、シフトパターンのインデックスを記憶するメモリサイズは約26KB(=8×3328×1)となる。このメモリサイズは、低コストの設計が求められている組み込みシステムにおいては高い値である。近年、メモリチップ当たりのブロック数が増加する傾向であるので、シフトパターンのインデックスを記憶するメモリのサイズをより削減する管理手法が望まれている。
本実施形態では、シフトパターンのインデックスを多段階で管理することにより、読み出し電圧情報36の総データサイズを小さくすることができ、小さいメモリサイズで読み出し電圧情報36を効率よく記憶することができる。図5は、RAM24に記憶される読み出し電圧情報36の一例を示す。実施形態では、多段管理の例として3段管理を説明するが、段数はこれに限らない。読み出し電圧情報36は、デフォルトテーブル36a、シフトテーブル36b、シグネチャ/インデックステーブル36c、1段目のインデックス管理情報(L1テーブル)36d、2段目のインデックス管理情報(L2テーブル)36e、3段目のインデックス管理情報(L3テーブル)36fを含む。
図6は、デフォルトテーブル36aの一例を示す。デフォルトテーブル36aは読み出し電圧の初期値として設定可能な値を記憶する。メモリセルがTLCモードで動作する場合、デフォルトテーブルは、図4に示す7つの読み出し電圧VA~VGそれぞれの初期値VA0~VG0を記憶する。
メモリコントローラ20は、読み出し電圧の値を初期値に設定し、リード(動作を行う。初期値の読み出し電圧を用いたリード動作をノーマルリード動作と称する。ノーマルリード動作でエラー訂正に失敗する(すなわち、リードエラーが検出される)と、メモリコントローラ20は、シフトテーブル36bを参照して読み出し電圧のシフト値を取得する。メモリコントローラ20は、取得したシフト値を用いたリード動作を行う。読み出し電圧のシフト値を用いたリード動作をリトライリード動作又はシフトリード動作と称する。シフトリード動作でエラー訂正に失敗すると、メモリコントローラ20は、再びシフトテーブル36bを参照して読み出し電圧の他のシフト値を取得し、取得した他のシフト値を用いてシフトリード動作を行う。
図7は、シフトテーブル36bの一例を示す。シフトテーブル36bは、所定数(ここでは,256個)のシフトパターンを記憶する。シフトパターンは、読み出し電圧VA~VGそれぞれの初期値からのシフト量を示すシフト値Shift[A]、Shift[B]、Shift[C]、Shift[D]、Shift[E]、Shift[F]、Shift[G]を含む。シフトパターンの識別情報はインデックスと称される。例えば、256個のシフトパターンは、3ビットのインデックスで特定可能である。図7では、インデックスとシフト値は、10進数で表されている。
例えば、インデックス0のシフトパターンは、全てのシフト値が0であり、読み出し電圧は初期値である。例えば、インデックス1のシフトパターンは、値が0のShift[A]、値が1のShift[B]、値が-1のShift[C]、Shift[D]、値が0のShift[E]、Shift[F]、Shift[G]を含む。例えば、インデックス255のシフトパターンは、値が2のShift[A]、値が-5のShift[B]、値が-7のShift[C]、値が-10のShift[D]、値が-12のShift[E]、値が-14のShift[F]、値が-17のShift[G]を含む。256個の各インデックス0~255に含まれるシフト値Shift[A]、Shift[B]、Shift[C]、Shift[D]、Shift[E]、Shift[F]、Shift[G]の組みは、それぞれ異なる。
図8は、L1テーブル36dの一例を示す。図9は、L2テーブル36eの一例を示す。図10は、L3テーブル36fの一例を示す。図11は、シグネチャ/インデックステーブル36cの一例を示す。
図8に示すように、L1テーブル36dは、NANDメモリ40の全ブロックについてブロック毎の読み出し電圧に関する1ビットのL2フラグを記憶する。このため、L1テーブル36dを記憶するメモリサイズは、ブロック数×1ビットである。L2フラグは、読み出し電圧が初期値に設定された場合に全ブロック夫々から複数ビットのデータをリード出来たか否か、すなわちリード(ノーマルリード)が成功したか失敗したかを識別可能な情報を含む。値が“0”のL2フラグは、対応するブロックのノーマルリードが成功したことを識別可能な情報である。値が“1”のL2フラグは、対応するブロックのノーマルリードが失敗し、シフトリードが成功したことを識別可能な情報である。言い換えると、L2フラグが“0”のブロックは、ノーマルリードでデータをリードすることができるブロックであると想定される。L2フラグが“1”のブロックは、ノーマルリードでデータをリードすることができず、シフトリードが必要であるブロックであると想定される。
メモリコントローラ20は、ノーマルリードを行った時、リードが成功したブロックのL2フラグの値を“0”とし、リードが失敗したブロックのL2フラグの値を“1”とする。メモリコントローラ20は、リードが失敗したブロックに対して消去及びプログラムを行った後、リードが成功した場合、当該ブロックのL2フラグの値を“0”に戻すようにL1テーブル36dを更新する。
L1テーブル36dは、NANDメモリ40の全ブロックを一意的に識別するブロックアドレスを記憶しない。しかし、L2フラグがブロックアドレスの順にL1テーブル36dのエントリに記憶されていれば、メモリコントローラ20は、値が“1”のL2フラグが何番目のエントリに記憶されているかに応じて、ノーマルリードが失敗したブロックのアドレスを知ることができる。例えば、L1テーブル36dが“00001010…”を記憶していれば、メモリコントローラ20は、先頭から5番目と7番目のアドレスのブロックではノーマルリードが失敗し、シフトリードが必要であることを判断できる。L1テーブル36dは、シフトリードの必要の有無を示すL2フラグを記憶するが、シフトリードのためのシフトパターンのインデックスを記憶しないので、総データサイズを小さくすることができる。シフトリードが必要なブロックについてのシフトパターンのインデックスの記憶エリアとして、それぞれがあるデータサイズのL2テーブル36eとL3テーブル36fが用意されている。
図9に示すように、L2テーブル36eは、L1テーブル36dにおいて、L2フラグの値が“1”であるブロックについてのシフトパターンのインデックスに関する3ビットのシグネチャを記憶する。シグネチャは、L1テーブル36dにおいてL2フラグの値が“1”であるブロックの順に、L2テーブル36eのエントリに記憶される。3ビットのシグネチャは、8ビットのインデックスで表される256個のシフトパターンの中の最大8個のシフトパターンのインデックスを示すことができる。シグネチャは、シフトテーブル36bのインデックスから可逆変換により求められる符号である。
L2テーブル36eのエントリの数はブロックの数に対応する。L2テーブル36eのエントリの数は、ノーマルリードが失敗する確率(又は数、頻度)に応じて決定される。L2テーブル36eを記憶するメモリのサイズは、L1テーブル36dを記憶するメモリのサイズより小さい。
L2テーブル36eも、ブロックアドレスを記憶しない。しかし、シグネチャはL1テーブル36dの中の値が“1”のL2フラグのブロックに対応しているので、メモリコントローラ20は、当該シグネチャが何番目のL2フラグに対応するかに応じて、当該シグネチャに対応するブロックのアドレスを知ることができる。
L2テーブル36eは、シフトリードが必要なブロックのための全てのシフトパターンのインデックスを記憶することができない可能性がある。図10に示すように、L3テーブル36fは、3ビットのシグネチャが表しきれないシフトパターンが適用されるブロック毎に、ブロックアドレスと、シフトパターンのインデックスを記憶する。図10では、ブロックアドレスとインデックスは、10進数で表されている。ブロックアドレスは、16ビットであるとする。インデックスは、8ビットであるとする。
L3テーブル36fのエントリの数は、L2テーブル36eのエントリの数より少ない。L3テーブル36fを記憶するメモリのサイズは、L2テーブル36eを記憶するメモリのサイズより小さい。
図11に示すように、シグネチャ/インデックステーブル36cは、L2テーブル36eに記憶されているシグネチャとインデックスの対応関係を記憶する。シグネチャとインデックスの対応関係は更新可能である。7個のインデックスが7個のシグネチャにそれぞれ割り当てられる。残りの1個のシグネチャ、ここではシグネチャ“111”には、特定の情報、例えばNoneが割り当てられる。特定の情報は、これら7個のインデックス以外の単数又は複数の不特定のインデックスがシグネチャ“111”に割り当てられていることを意味するもので、Noneの具体的な情報は不定値でよい。すなわち、L3テーブル36fは、L2テーブル36eがシグネチャ“111”を記憶しているブロックのブロックアドレスと、当該ブロックのシフトパターンのインデックスとを記憶する。
図11は、左側のシグネチャ/インデックステーブル36c1に新しいインデックス(ここでは、インデックス35)が追加される場合、シグネチャ/インデックステーブル36c1は右側のシグネチャ/インデックステーブル36c2に更新されることを示す。シグネチャ/インデックステーブル36c1には、256個のシフトパターンのインデックスの中の7個のシフトパターンのインデックス138、139、155、…187、195がLeast Recetry Used(LRU)方式により7個のシグネチャ“000”~“110”にそれぞれ割り当てられている。この状態で、新しいインデックス35が追加される場合、最も古いインデックス195が追い出されて、更新されたシグネチャ/インデックステーブル36c2が得られる。シグネチャ/インデックステーブル36c2には、256個のシフトパターンのインデックスの中の7個のシフトパターンのインデックス35、138、139、155、…187がLeast Recetry Used(LRU)方式により7個のシグネチャ“000”~“110”にそれぞれ割り当てられている。
図12は、L1テーブル36d、L2テーブル36e、L3テーブル36f及びシグネチャ/インデックステーブル36cの作成・更新に関するメモリコントローラ20の処理の一例を示すフローチャートである。メモリコントローラ20は、リード動作、ライト動作、及び消去動作が行われない期間にこの処理を実行する。リード動作、ライト動作、及び消去動作は、ホスト14からの指示、又はガベージコレクション動作、リフレッシュ動作、及びパトロール動作等において行われてもよい。
S102で、メモリコントローラ20は、或るブロック(以下、対象ブロックと称する)に対してノーマルリード動作を実行する。
S104で、メモリコントローラ20は、ノーマルリードが成功したか否かを判定する。
ノーマルリードが成功した場合(S104のYES)、S106で、メモリコントローラ20は、L1テーブル36d内の対象ブロックに関するL2フラグを“0”とし、処理を終了する。L2フラグの初期値が“0”である場合、S106は省略可能である。
ノーマルリードが失敗した場合(S104のNO)、S108で、メモリコントローラ20は、L1テーブル36d内の対象ブロックに関するL2フラグを“1”とする。
S112で、メモリコントローラ20は、対象ブロックに対してリトライリード動作としてシフトリード動作を実行する。シフトリード動作の際、メモリコントローラ20は、現在設定されているシフトパターンのインデックスの次のインデックスのシフトパターンをシフトテーブル36bから読み出し、シフトパターンに応じて読み出し電圧をシフトする。例えば、ノーマルリード動作時はインデックス0が設定されており、メモリコントローラ20は、1回目のリシフトリード動作時はインデックス1のシフトパターンを読み出し、シフトパターンに応じて読み出し電圧をシフトする。
S114で、メモリコントローラ20は、シフトリードが成功したか否かを判定する。
シフトリードが失敗した場合(S114のNO)、メモリコントローラ20は、S112のシフトリード動作を繰り返す。すなわち、メモリコントローラ20は、シフトパターンのインデックスを1増加して、読み出し電圧をさらにシフトしてリード動作を繰り返す。
シフトリードが成功した場合(S114のYES)、S116で、メモリコントローラ20は、成功したシフトリードで使用したシフトパターンのインデックス(図11ではインデックス35)がシグネチャ/インデックステーブル36cに登録されているか否かを判定する。
インデックスがシグネチャ/インデックステーブル36cに登録されている場合(S116のYES)、S118で、メモリコントローラ20は、インデックスに対応するシグネチャをL2テーブル36eの対象ブロックに対応するエントリに登録し、処理を終了する。
インデックスがシグネチャ/インデックステーブル36cに登録されていない場合(S116のNO)、S122で、メモリコントローラ20は、シグネチャ/インデックステーブル36cのシグネチャ“110”にインデックスが未割り当てか否かを判定する。
シグネチャ“110”にインデックスが未割り当てでない、すなわち割り当てられている場合(S122のNO)、S124で、メモリコントローラ20は、シグネチャ“110”に割り当てられているインデックス(図11の場合、インデックス195)を対象ブロックアドレスと共にL3テーブル36fに登録する。
シグネチャ“110”にインデックスが未割り当ての場合(S122のYES)、又はS124の後、S126で、メモリコントローラ20は、シグネチャ“000”~“101”に割り当てられているインデックス(図11の場合、インデックス138~187)をシグネチャ“001”~“110”に割り当て変更する。
S128で、メモリコントローラ20は、成功したシフトリードで使用したインデックス(図11ではインデックス35)をシグネチャ/インデックステーブル36cのシグネチャ“000”に割り当てる。これにより、シグネチャ/インデックステーブル36cは、図11に示すように更新される。
S132で、メモリコントローラ20は、更新後のシグネチャ/インデックステーブル36cに従って、L2テーブル36eのシグネチャを書き換える。すなわち、インデックス138~187を表していたシグネチャ“000”~“101”を、新たにインデックス138~187を表すシグネチャ“001”~“110”に夫々書き換える。
図13は、リード動作に関するメモリコントローラ20の処理の流れの一例を示すフローチャートである。リード動作は、ホスト10によるリード動作及びガベージコレクション動作、リフレッシュ動作、パトロール動作等に含まれる自発的なリード動作を含む。
S202で、メモリコントローラ20は、L1テーブル36dを参照する。
S204で、メモリコントローラ20は、リード対象のブロックに関するL2フラグの値が“1”であるか否かを判定する。
L2フラグの値が“1”でない、すなわち“0”である場合(S204のNO)、S206で、メモリコントローラ20は、ノーマルリード動作を実行する。S206の処理は、図12に示したS102の処理に相当する。従って、メモリコントローラ20は、ノーマルリード動作の実行後、図12のS104以降の処理を実行する。
L2フラグの値が“1”である場合(S204のYES)、S208で、メモリコントローラ20は、L2テーブル36eを参照する。S212で、メモリコントローラ20は、リード対象ブロックに対応するエントリのシグネチャが“111”であるか否かを判定する。
シグネチャが“111”では無い場合(S212のNO)、S214で、メモリコントローラ20は、シグネチャ/インデックステーブル36cからシグネチャに対応するインデックスを読み出す。
シグネチャが“111”である場合(S212のYES)、S216で、メモリコントローラ20は、L3テーブル36fからリード対象ブロックのインデックスを読み出す。
S214、又はS216の後、S218で、メモリコントローラ20は、シフトテーブル36bからインデックスが示すシフトパターンを読み出す。
S222で、メモリコントローラ20は、読み出し電圧の値をシフトパターンに応じて初期値から変化させてシフトリード動作を行う。S222の処理は、図12に示したS112の処理に相当する。従って、メモリコントローラ20は、シフトリード動作の実行後、図12のS114以降の処理を実行する。
このように、実施形態では、L1テーブル36dは、メモリブロックに関するノーマルリードが成功したか失敗したかを識別可能な情報を1ブロック当たり1ビットの情報で全ブロックについて記憶し、L2テーブル36eは、シフトパターンを特定可能なインデックスを示す3ビットのシグネチャをノーマルリードが失敗したブロックについて記憶する。NANDメモリ40の全ブロックがシフトリードの際に使用するシフトパターンのインデックスの数(すなわち、シフトパターンの種類)が多く、3ビットのシグネチャでは使用する全てのシフトパターンのインデックスをL3テーブル36fが記憶できない場合がある。この場合、L3テーブル36fが、L2テーブル36eが記憶できないブロックについて、1ブロック当たり8ビットのシフトパターンのインデックスを記憶する。これにより、NANDメモリ40のシフトパターンのインデックスを記憶するメモリのサイズを削減することができる。
図14は、シフトパターンのインデックスを記憶するメモリのサイズを説明する図である。
ノーマルリードが成功する確率を70%とする。L1テーブル36dにおいて、値が“0”のL2フラグは70%であり、値が“1”のL2フラグは30%である。全ブロックの70%のブロックの読み出し電圧は、デフォルトテーブル36a及びL1テーブル36d(値が”0”のL2フラグ)により記憶できる。すなわち、L1テーブル36dのヒット率は70%である。残りの30%のブロックのシフトパターンのインデックスは少なくともL2テーブル36eを参照する必要がある。
残りの30%のブロックのうちの80%のブロックのシフトパターンのインデックスは7個のシグネチャに対応するインデックスであるとする。すなわち、L2テーブル36eのヒット率は80%である。このため、L2テーブル36eに用意しておくべきブロック数は、全ブロック数の24(=30×80)%である。
L2テーブル36eは、ノーマルリードが失敗したブロックのうちの20%のブロックのシフトパターンのインデックス(シグネチャ“111”に対応するインデックス)を記憶できない。これらのブロックのシフトパターンのインデックスは、L3テーブル36fに記憶される。このため、L3テーブル36fに用意しておくべきブロック数は、全ブロック数の6(=30×20)%である。
NANDメモリ40が8個のメモリチップを含み、メモリチップが3328個のブロックを含むとすると、シフトパターンのインデックスの総データサイズは以下である。
(1ビット+3ビット×0.3+(16ビット+8ビット)×0.3×0.2)×3328×8
=(1ビット+0.9ビット+1.44ビット)×3328×8
=88,924.16ビット
=11115.52バイト
≒1.12KB
各ブロック当たり1バイトでシフトパターンのインデックスの生データを記憶する場合は、メモリのサイズは約26KB必要である。実施形態によれば、シフトパターンのインデックスの総データサイズは、約11KBであり、従来に比べてシフトパターンのインデックスを記憶するメモリのサイズを半分以下に削減できる。
(第2実施形態)
第1実施形態では、シフトテーブル36bは、第1の個数、例えば255個のシフトパターンを記憶するが、全てのシフトパターンがシフトリードで使用されるとは限らない。シフトリードで使用されるシフトパターンは、第1の個数より少ない第2の個数のシフトパターンである可能性がある。図15(a)は、メモリセルがプログラムされた時点(直後)のシフトリードで使用されたシフトパターンのインデックスの一例を示す。図15(b)は、メモリセルがプログラムされてから第1時間経過後のシフトリードで使用されたシフトパターンのインデックスの一例を示す。図15(c)は、メモリセルがプログラムされてから第2時間経過後のシフトリードで使用されたシフトパターンのインデックスの一例を示す。図15(d)は、メモリセルがプログラムされてから第3時間経過後のシフトリードで使用されたシフトパターンのインデックスの一例を示す。第2時間は第1時間より長く、第3時間は第2時間より長い。ここでは、シフトリードされたブロックの総数は32とする。
例えば、プログラム直後のシフトリード(図15(a))では、32ブロックのうち半分の16ブロックがインデックス127に該当するシフトパターンの読み出し電圧で読み出し可能である。プログラムから第3時間経過後のシフトリード(図15(d))では、32ブロックのうちの12ブロックがインデックス138に該当するシフトパターンの読み出し電圧で読み出し可能である。
第2実施形態は、このようなシフトパターンの使用の偏りを利用してインデックスをシグネチャよりさらに短いビット数の符号で表現するとともに、インデックスの生データを記憶するL3テーブル36fを不要とするものである。
第2実施形態のメモリシステム12aの構成は、図1に示した第1実施形態のメモリシステム12の構成と略同じである。第2実施形態は、RAM24が読み出し電圧情報36の代わりに読み出し電圧情報136を記憶する点が第1実施形態と異なる。
図16は、読み出し電圧情報136の一例を示す。読み出し電圧情報136は、デフォルトテーブル136a、シフトテーブル136b、L1テーブル136d、L2テーブル136g、符号/インデックステーブル136hを含む。デフォルトテーブル136a、シフトテーブル136b及びL1テーブル136dは、第1実施形態のデフォルトテーブル36a、シフトテーブル36b及びL1テーブル36dに夫々対応する。
図17は、L1テーブル136dとL2テーブル136gの一例を示す。図17(a)に示すように、L1テーブル136dは、NANDメモリ40の全ブロックについてノーマルリードが成功したか失敗しかを示すL2フラグを記憶する。L1テーブル136dの構成は、第1実施形態のL1テーブル36dと同じ構成である。メモリコントローラ20は、L2フラグの値が“1”であるブロックに関するシフトパターンのインデックスの系列(図17(b))を符号化する。シフトパターンのインデックスの発生の連続性又は偏りを利用してインデックスを符号化すると、非常に少ないビット数でインデックスを符号化できる。符号化の例は、ハフマン符号化、シャノン・ファノ符号化、ランレングス符号化である。
メモリコントローラ20は、図17(b)に示した系列を符号化して得られる符号をL2テーブル136gに登録する。図17(b)に示すように、ノーマルリードが失敗し、シフトリードが成功したブロックのシフトパターンのインデックスの系列が127、127、127、156、127、127、…である場合、得られた符号は図17(c)に示すようになる。
図18は、符号/インデックステーブル136hの一例を示す。符号/インデックステーブル136hは、符号とインデックスの対応関係の一例を示す。符号“αi”は、L2フラグの値が“1”であるブロックに関するシフトパターンのインデックスの系列において、インデックスαがi回連続することを示す。すなわち、符号A3、B1、A3、…は、L2フラグの値が“1”であるブロックに関するシフトパターンのインデックスの系列において、インデックス127が3回連続し、インデックス156が1回だけ出現し、インデックス127が3回連続し、…であることを示す。従って、メモリコントローラ20は、符号/インデックステーブル136hから得られる符号を復号化することによって、図17(b)に示した系列を得ることができる。
このため、第2実施形態に係る読み出し電圧情報136は、シフトパターンのインデックスの生データを記憶する第1実施形態に係るL3テーブル36fを必要としない。さらに、第2実施形態に係るL2テーブル136gは、インデックスの系列の符号を記憶するので、インデックスそれぞれを示すシグネチャを記憶する第1実施形態に係るL2テーブル36eよりサイズを小さくすることができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を生成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
20…メモリコントローラ、36…読み出し電圧情報、36a…デフォルトテーブル、36b…シフトテーブル、36c…シグネチャ/インデックステーブル、36d…L1テーブル、36e…L2テーブル、36f…L3テーブル

Claims (8)

  1. 複数ビットのデータを夫々書き込むことができる第1の複数のメモリセルを含む不揮発性メモリと、
    前記不揮発性メモリに複数の読み出し電圧を印加して前記第1の複数のメモリセルのうちある数のメモリセルに書き込まれた前記複数のビットのデータをリードするコントローラと、
    を具備するメモリシステムであって、
    前記第1の複数のメモリセルは前記第1の複数のメモリセルのうち前記第1の複数より少ない第2の複数のメモリセルをそれぞれが含む複数のグループを含み、
    前記コントローラは、
    前記複数の読み出し電圧の夫々の値として設定可能な第1の値を示す第1情報と、
    前記第1情報に従って前記複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に前記複数のグループ夫々から複数ビットのデータをリード出来たか否かを識別可能な情報を含む第2情報と、
    前記複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に前記複数ビットのデータがリード出来なかった少なくとも1個のグループから複数ビットのデータをリード出来た場合に前記複数の読み出し電圧の夫々の値として設定された第2の値に関する情報を前記第2情報に基づいて特定可能な情報を含む第3情報と、
    を記憶する、メモリシステム。
  2. 前記第3情報は、
    前記複数の読み出し電圧夫々のシフト値の組合せを含む複数のシフトパターンの一部である第1シフトパターンの第1識別情報と、
    前記複数のシフトパターン中の前記第1シフトパターン以外の第2シフトパターンの第2識別情報と、を含む、請求項1記載のメモリシステム。
  3. 前記第1識別情報のビット数は、前記第2識別情報のビット数より少なく、
    前記第1識別情報の総データサイズは、前記第2識別情報の総データサイズより小さい、請求項2記載のメモリシステム。
  4. 前記第2情報は、前記複数のメモリセルグループ夫々についての1ビットの情報を含み、
    前記第3情報の総データサイズは、前記第2情報の総データサイズより小さい、請求項1記載のメモリシステム。
  5. 前記第3情報は、
    前記少なくとも1個のメモリセルグループに関する前記複数の読み出し電圧夫々のシフト値の組合せを含む複数のシフトパターンの識別情報を、前記識別情報の発生の連続性又は偏りを利用して符号化して得られた符号を含む、請求項1記載のメモリシステム。
  6. 前記符号化は、ハフマン符号化、シャノン・ファノ符号化、ランレングス符号化のいずれかである、請求項5記載のメモリシステム。
  7. 複数ビットのデータを夫々書き込むことができる第1の複数のメモリセルを含み、前記第1の複数のメモリセルは前記第1の複数のメモリセルのうち前記第1の複数より少ない第2の複数のメモリセルをそれぞれが含む複数のグループを含む不揮発性メモリを備えるメモリシステムにおけるリード方法であって、
    前記不揮発性メモリに複数の読み出し電圧を印加して前記第1の複数のメモリセルのうちある数のメモリセルに書き込まれた前記複数のビットのデータをリードし、
    第1情報、第2情報、及び第3情報を記憶し、
    前記第1情報は、前記複数の読み出し電圧の夫々の値として設定可能な第1の値を示し、
    前記第2情報は、前記第1情報に従って前記複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に前記複数のグループ夫々から複数ビットのデータをリード出来たか否かを識別可能な情報を含み、
    前記第3情報は、前記複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に前記複数ビットのデータがリード出来なかった少なくとも1個のグループから複数ビットのデータをリード出来た場合に前記複数の読み出し電圧の夫々の値として設定された第2の値に関する情報を前記第2情報に基づいて特定可能な情報を含む、リード方法。
  8. 前記第2情報を参照して、前記前記複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に前記複数のグループ夫々から前記複数ビットのデータをリード出来たか否かを判定し、
    前記複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に前記複数ビットのデータをリード出来た場合、前記複数の読み出し電圧の夫々の値を前記第1情報に従って設定してリード動作を行い、
    前記複数の読み出し電圧の夫々の値が前記第1の値に設定された場合に前記複数ビットのデータがリード出来なかった少なくとも1個のグループから複数ビットのデータをリード出来た場合、前記少なくとも1個のグループに関する前記複数の読み出し電圧の夫々の値を前記第3情報に従ってシフトしてリード動作を行う、請求項7に記載のリード方法。
JP2021103293A 2021-06-22 2021-06-22 メモリシステム及びリード方法 Pending JP2023002208A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021103293A JP2023002208A (ja) 2021-06-22 2021-06-22 メモリシステム及びリード方法
US17/682,799 US11881265B2 (en) 2021-06-22 2022-02-28 Memory system and read method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021103293A JP2023002208A (ja) 2021-06-22 2021-06-22 メモリシステム及びリード方法

Publications (1)

Publication Number Publication Date
JP2023002208A true JP2023002208A (ja) 2023-01-10

Family

ID=84490369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021103293A Pending JP2023002208A (ja) 2021-06-22 2021-06-22 メモリシステム及びリード方法

Country Status (2)

Country Link
US (1) US11881265B2 (ja)
JP (1) JP2023002208A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230393777A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Dynamic read level trim selection for scan operations of memory devices

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010192049A (ja) 2009-02-19 2010-09-02 Toshiba Corp 半導体記憶装置
JP2012203957A (ja) 2011-03-25 2012-10-22 Toshiba Corp メモリシステム
JP2013122793A (ja) 2011-12-09 2013-06-20 Toshiba Corp 不揮発性半導体記憶装置
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
KR101984900B1 (ko) * 2012-07-24 2019-05-31 삼성전자 주식회사 메모리 장치 및 상기 메모리 장치의 독출 전압 결정 방법
US11119697B2 (en) * 2019-07-12 2021-09-14 Micron Technology, Inc. Read voltage management based on write-to-read time difference
US11127471B2 (en) * 2019-07-23 2021-09-21 SK Hynix Inc. Read retry threshold voltage selection

Also Published As

Publication number Publication date
US11881265B2 (en) 2024-01-23
US20220406382A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
US8127073B2 (en) Memory system, multi-bit flash memory device, and associated methods
KR101736792B1 (ko) 플래시 메모리 및 그것의 셀프 인터리빙 방법
CN107967119B (zh) 存储设备、存储系统和计算设备
CN108735253B (zh) 非易失性存储器存储系统
US10706944B2 (en) Memory controller for controlling memory device based on erase state information and method of operating the memory controller
JP2020155180A (ja) メモリ読み出し方法及びメモリシステム並びにコンピュータ・プログラム
US11715516B2 (en) Nonvolatile memory device including a fast read page and a storage device including the same
US11790993B2 (en) Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory
US11461177B2 (en) Data storage device and method of operating the same
KR20160050393A (ko) 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
US11776615B2 (en) Sequential SLC read optimization
US20060239089A1 (en) Non-volatile semiconductor device for use in memory card and memory system
CN111177039A (zh) 数据存储设备、其操作方法及包括其的存储系统
US11881265B2 (en) Memory system and read method
JP2021152858A (ja) メモリシステム
US11462281B1 (en) Intervallic dynamic start voltage and program verify sampling in a memory sub-system
CN115527596A (zh) 用于在非易失性存储器装置中编程数据的设备及系统
US20230298672A1 (en) Memory system and read method
CN111798913A (zh) 存储器系统、存储器控制器及其操作方法
EP3783614B1 (en) Nonvolatile memory device including a fast read page and a storage device including the same
US11756612B2 (en) All levels dynamic start voltage programming of a memory device in a memory sub-system
US20240177786A1 (en) Page buffer, memory device including page buffer and memory system including memory device
US20230031193A1 (en) Memory system and operating method thereof
US20240192893A1 (en) Managing distribution of page addresses and partition numbers in a memory sub-system
KR102675131B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법