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

メモリシステム Download PDF

Info

Publication number
JP2023130864A
JP2023130864A JP2022035409A JP2022035409A JP2023130864A JP 2023130864 A JP2023130864 A JP 2023130864A JP 2022035409 A JP2022035409 A JP 2022035409A JP 2022035409 A JP2022035409 A JP 2022035409A JP 2023130864 A JP2023130864 A JP 2023130864A
Authority
JP
Japan
Prior art keywords
program operation
storage location
memory
controller
block
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
JP2022035409A
Other languages
English (en)
Inventor
智之 神谷
Tomoyuki Kamiya
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 JP2022035409A priority Critical patent/JP2023130864A/ja
Priority to US17/821,960 priority patent/US12056368B2/en
Publication of JP2023130864A publication Critical patent/JP2023130864A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/30Power supply circuits
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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/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)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】異常電源遮断に対処できるメモリシステムを実現する。【解決手段】メモリシステムのコントローラは、メモリシステムに対する電力が回復されたことに応じ、ブロックに含まれる複数の記憶位置のうち、第2段階のプログラム動作が最後に実行された第3の記憶位置を特定する。コントローラは、第3の記憶位置に対する第2段階のプログラム動作の前に第1段階のプログラム動作が実行された第4の記憶位置が読み出し不可能なデータを格納しており、且つ、第4の記憶位置に対する第1段階のプログラム動作の次に第1段階のプログラム動作が実行されるべき第5の記憶位置に含まれる複数のメモリセルが消去状態に対応する閾値電圧を有している、という第1の条件が満たされているか否かを判定する。【選択図】図15

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。メモリシステムは、コンピュータ、モバイル機器、車載機器、といった様々なコンピューティングデバイスのストレージとして使用されている。
例えば、バッテリーが取り外し可能なタイプのモバイル機器に搭載されるメモリシステムにおいては、モバイル機器からバッテリーが取り外されると、メモリシステムへの電力の供給が、メモリシステムへの予告なしに突然遮断される。
このため、メモリシステムへの電力の供給が突然遮断されるという異常電源遮断に対する対策が必要とされている。
米国特許出願公開第2020/0379905号明細書 特開2020-030875号公報 米国特許出願公開第2020/0371718号明細書
本発明の一実施形態が解決しようとする課題は、異常電源遮断に対処できるメモリシステムを提供することである。
実施形態によれば、メモリシステムは、各々がデータ消去動作の単位である複数のブロックを含む不揮発性メモリであって、前記複数のブロックの各々は複数の記憶位置を含み、前記複数の記憶位置の各々は複数のメモリセルを含む、不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、前記複数のブロックのうちの書き込み先ブロックに対するデータ書き込み動作を第1段階のプログラム動作と第2段階のプログラム動作とを少なくとも含む複数段階のプログラム動作を使用して実行するように構成されている。前記書き込み先ブロックに対するデータの書き込みは、前記書き込み先ブロックの第1の記憶位置に対する前記第1段階のプログラム動作が実行され、前記第1の記憶位置に対する前記第1段階のプログラム動作が完了した後、前記書き込み先ブロックの第2の記憶位置に対する前記第1段階のプログラム動作が実行され、前記第2の記憶位置に対する前記第1段階のプログラム動作の完了に応じて、前記第1の記憶位置に対する前記第2段階のプログラム動作が実行される、という順序で実行される。前記コントローラは、前記メモリシステムに対する電力の供給の遮断後に、前記メモリシステムに対する電力が回復されたことに応じ、前記複数のブロックのうちの第1のブロックに含まれる前記複数の記憶位置のうち、前記第2段階のプログラム動作が最後に実行された第3の記憶位置を特定する。前記コントローラは、前記第3の記憶位置に対する前記第2段階のプログラム動作の前に前記第1段階のプログラム動作が実行された第4の記憶位置が読み出し不可能なデータを格納しており、且つ、前記第4の記憶位置に対する前記第1段階のプログラム動作の次に前記第1段階のプログラム動作が実行されるべき第5の記憶位置に含まれる複数のメモリセルの各々が消去状態に対応する閾値電圧を有している、という第1の条件が満たされているか否かを判定する。前記第1の条件が満たされている場合、前記コントローラは、前記第5の記憶位置を次の書き込み先位置に決定する。
第1実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。 第1実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリの構成例を示すブロック図。 第1実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリのブロックの構成例を示す図。 第1実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリのブロックの回路構成例を示す図。 第1実施形態に係るメモリシステムにおいて、データ書き込み動作中に異常電源遮断が起きたときのブロックのデータの状態とメモリシステムが再起動されたときのブロックのデータの状態とを示す図。 第1実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリの複数のメモリセルの閾値電圧分布の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される複数段階のプログラム動作の手順を示す図。 第1実施形態に係るメモリシステムにおいて実行される複数段階のプログラム動作の書き込み順序を示す図。 第1実施形態に係るメモリシステムにおける、記憶位置に含まれる複数のメモリセルの閾値電圧分布の第1の例を示す図。 第1実施形態に係るメモリシステムにおける、記憶位置に含まれる複数のメモリセルの閾値電圧分布の第2の例を示す図。 第1実施形態に係るメモリシステムにおける、記憶位置に含まれる複数のメモリセルの閾値電圧分布の第3の例を示す図。 第1実施形態に係るメモリシステムにおける、記憶位置に含まれる複数のメモリセルの閾値電圧分布の第4の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、ホストから受信されたライトコマンドに対応するデータ書き込み動作と、ガベージコレクション動作によって内部的に実行されるデータ書き込み動作との例を示す図。 比較例に係るメモリシステムにおいて実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係を示す図。 第1実施形態に係るメモリシステムにおいて実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第1の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第2の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第3の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第4の例を示す図。 比較例に係るメモリシステムにおいて実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第1の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第2の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第3の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第4の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、各ブロックに含まれるストリングユニットが1つである場合の、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第1の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、各ブロックに含まれるストリングユニットが1つである場合の、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第2の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、各ブロックに含まれるストリングユニットが1つである場合の、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第3の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される、各ブロックに含まれるストリングユニットが1つである場合の、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第4の例を示す図。 第1実施形態に係るメモリシステムにおいて実行される異常電源遮断判定処理の手順を示すフローチャート。 第1実施形態に係るメモリシステムにおいて実行される、データ書き込み動作の手順を示すフローチャート。 第2実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。 第2実施形態に係るメモリシステムにおいて実行される、フォギープログラム動作を示す図。 第2実施形態に係るメモリシステムにおいて実行される、ファインプログラム動作を示す図。 第2実施形態に係るメモリシステムにおいて実行される、各ブロックに含まれるストリングユニットが1つである場合の、フォギープログラム動作を示す図。 第2実施形態に係るメモリシステムにおいて実行される、各ブロックに含まれるストリングユニットが1つである場合の、ファインプログラム動作を示す図。 第2実施形態に係るメモリシステムにおいて実行される、フォギープログラム動作の完了に応じてフォギープログラム管理情報を更新および保存する処理の手順を示すフローチャート。 第2実施形態に係るメモリシステムにおいて実行される、ファインプログラム動作を開始する前にフォギープログラム管理情報を更新および保存する処理の手順を示すフローチャート。 第2実施形態に係るメモリシステムにおいて実行される、異常電源遮断判定処理の手順を示すフローチャート。 第3実施形態に係るメモリシステムを含む情報処理システムの構成例を示す図。 第3実施形態に係るメモリシステムにおいて実行される、フォギープログラム動作と、フォギープログラム管理情報を不揮発性メモリに保存する処理との関係を示す図。 第3実施形態に係るメモリシステムにおいて実行される、フォギープログラム管理情報を管理する処理の手順を示すフローチャート。 第4実施形態に係るメモリシステムにおいて実行される、メモリセルの閾値電圧をフォギープログラム状態からファインプログラム状態に遷移させる追加書き込み動作を示す図。 第4実施形態に係るメモリシステムにおいて、異常電源遮断が起きた時のブロックの各記憶位置の状態と、追加書き込み動作が実行された後のブロックの各記憶位置の状態とを示す図。 第4実施形態に係るメモリシステムにおいて実行される、追加書き込み動作の手順を示すフローチャート。 第5実施形態に係るメモリシステムにおける、記憶位置に含まれる複数のメモリセルの閾値電圧分布の第1の例と、第2の例とを示す図。 第5実施形態に係るメモリシステムにおける、記憶位置に含まれる複数のメモリセルの閾値電圧分布の第3の例と、第4の例とを示す図。 第5実施形態に係るメモリシステムにおいて実行される、フォギープログラム動作の手順を示すフローチャート。 第5実施形態に係るメモリシステムにおいて実行される、ファインプログラム動作の手順を示すフローチャート。 第5実施形態に係るメモリシステムにおいて実行される、異常電源遮断判定処理の手順を示すフローチャート。
以下、図面を参照して、実施形態を説明する。
(第1実施形態)
図1は、第1実施形態に係るメモリシステム3を含む情報処理システム1の構成例を示すブロック図である。第1実施形態に係るメモリシステム3は、不揮発性メモリを含むストレージデバイスである。
情報処理システム1は、ホスト(ホストデバイス)2と、メモリシステム3とを含む。ホスト2と、メモリシステム3とは、バス4を介して接続可能である。
ホスト2は、情報処理装置である。ホスト2は、例えば、パーソナルコンピュータ、サーバコンピュータ、モバイル機器、または車載機器である。ホスト2は、メモリシステム3にアクセスする。具体的には、ホスト2は、データを書き込むためのコマンドであるライトコマンドをメモリシステム3に送信する。また、ホスト2は、データを読み出すためのコマンドであるリードコマンドをメモリシステム3に送信する。
メモリシステム3は、半導体ストレージデバイスである。メモリシステム3は、例えば、ソリッドステートドライブ(SSD)、またはUFS(Universal Flash Storage)デバイスである。メモリシステム3は、不揮発性メモリを含む。メモリシステム3は、不揮発性メモリにデータを書き込む。そして、メモリシステム3は、不揮発性メモリからデータを読み出す。
バス4は、例えば、PCI ExpressTM(PCIeTM)規格、またはMobile Industry Processor InterfaceTM(MIPITM)規格に準拠したバスである。バス4は、ホスト2とメモリシステム3とを接続する伝送路である。バス4は、ホスト2からメモリシステム3へのデータおよび入出力(I/O)コマンドの送信、並びにメモリシステム3からホスト2へのデータおよび応答の送信のために使用される。I/Oコマンドは、不揮発性メモリに対するデータの書き込みまたは読み出しを行うためのコマンドである。I/Oコマンドは、ライトコマンドおよびリードコマンドを含む。
次に、ホスト2の内部構成について説明する。ホスト2は、プロセッサ21と、メモリ22とを含む。
プロセッサ21は、例えばcentral processing unit(CPU)である。プロセッサ21は、バス4を介してメモリシステム3との通信を行う。プロセッサ21は、メモリシステム3、または、ホスト2に接続された他のストレージデバイスからメモリ22にロードされるソフトウェア(ホストソフトウェア)を実行する。ホストソフトウェアは、オペレーティングシステム、ファイルシステム、デバイスドライバ、またはアプリケーションプログラムを含む。
メモリ22は、例えば揮発性のメモリである。メモリ22は、例えばダイナミックランダムアクセスメモリ(DRAM)である。
次に、メモリシステム3の内部構成について説明する。メモリシステム3は、コントローラ5と、不揮発性メモリ6とを含む。不揮発性メモリ6の一例は、NAND型フラッシュメモリである。以下では、不揮発性メモリ6を、NANDメモリ6と称する。
コントローラ5は、メモリコントローラである。コントローラ5は、例えば、system-on-a-chip(SoC)のような半導体デバイスである。コントローラ5は、NANDメモリ6と電気的に接続されている。コントローラ5は、NANDメモリ6に対するデータの書き込みおよび読み出しを実行する。また、コントローラ5は、バス4を介して、ホスト2との通信を実行する。コントローラ5とNANDメモリ6とを接続する物理インタフェースとしては、例えば、Toggle NANDフラッシュインタフェース、またはオープンNANDフラッシュインタフェース(ONFI)が使用される。コントローラ5の各部の機能は専用ハードウェア、プログラムを実行するプロセッサ、またはこれらの組み合わせにより実現され得る。
NANDメモリ6は、例えば、二次元構造のフラッシュメモリ、または三次元構造のフラッシュメモリである。NANDメモリ6は、複数のブロックを含む。各ブロックは、NANDメモリ6に記憶されたデータの消去の最小単位、つまりデータ消去動作の単位である。
メモリシステム3は、ダイナミックランダムアクセスメモリ(DRAM)7を含み得る。DRAM7は、揮発性のメモリである。DRAM7の記憶領域の一部は、例えば、ホスト2から受信したライトデータ、またはNANDメモリ6から読み出されたリードデータを一時的に保持する。つまり、DRAM7は、ライトバッファまたはリードバッファとして使用されてもよい。
メモリシステム3は、電源回路8をさらに含む。電源回路8は、電源制御回路である。電源回路8は、例えばホスト2から供給される電力をメモリシステム3の各構成要素に供給する。
次に、コントローラ5の内部構成について説明する。コントローラ5は、ホストインタフェース(ホストI/F)51と、CPU52と、スタティックRAM(SRAM)53と、直接メモリアクセスコントローラ(DMAC)54と、ECC(Error Checking and Correction)回路55と、DRAMインタフェース(DRAM I/F)56と、NANDインタフェース(NAND I/F)57とを含む。これら各部は、内部バス50を介して相互接続される。
ホストインタフェース51は、ハードウェアインタフェース回路である。ホストインタフェース51は、ホスト2との通信を実行する。ホストインタフェース51は、例えば、ホスト2からI/Oコマンドを受信する。
CPU52は、プロセッサである。CPU52は、ホストインタフェース51、SRAM53、DMAC54、ECC回路55、DRAMインタフェース56、およびNANDインタフェース57を制御する。CPU52は、NANDメモリ6または図示しないROMに格納されている制御プログラム(ファームウェア)をSRAM53にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはDRAM7にロードされてもよい。
CPU52は、例えば、フラッシュトランスレーション層(FTL)として、NANDメモリ6に記憶されたデータの管理およびNANDメモリ6に含まれるブロックの管理を実行する。NANDメモリ6に記憶されたデータの管理は、例えば、論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理を含む。論理アドレスは、NANDメモリ6をアクセスするためにホスト2によって使用されるアドレスである。論理アドレスは、例えば、LBA(logical block address)である。物理アドレスは、NANDメモリ6に含まれる物理的な記憶素子の位置を示すアドレスである。CPU52は、論理物理アドレス変換テーブル(logical-to-physical translation table:L2Pテーブル)71を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを管理する。また、NANDメモリ6に含まれるブロックの管理は、例えば、ガベージコレクションと、不良ブロック(バッドブロック)の管理と、ウェアレベリングとを含む。
SRAM53は、揮発性のメモリである。SRAM53は、例えば、CPU52の作業領域として使用される。また、SRAM53の記憶領域の一部は、ライトバッファまたはリードバッファとして使用されてもよい。
DMAC54は、直接メモリアクセス(DMA)を実行する回路である。DMAC54は、ホスト2のメモリ22と、DRAM7またはSRAM53との間のデータ転送を実行する。
ECC回路55は、データのエンコードと、データのデコードとを実行する回路である。ECC回路55は、NANDメモリ6にデータを書き込む際に、エンコード処理を実行する。エンコード処理において、ECC回路55は、書き込むべきデータにECCパリティを冗長コードとして付加する。ECC回路55は、NANDメモリ6から読み出されたデータに付加されたECCパリティを使用して、デコード処理を実行する。デコード処理において、ECC回路55は、読み出されたデータの誤りを訂正する。ECC回路55は、NANDメモリ6から読み出されたデータの誤り訂正に成功した場合、つまり読み出されたデータの誤りが訂正できた場合、ECCパスをCPU52に通知する。ECC回路55は、NANDメモリ6から読み出されたデータの誤り訂正に失敗した場合、つまり読み出されたデータの誤りが訂正できなかった場合、ECCエラーをCPU52に通知する。
DRAMインタフェース56は、DRAM7を制御する回路である。DRAMインタフェース56は、DRAM7にデータを格納し、DRAM7に格納されているデータを読み出す。
NANDインタフェース57は、NANDメモリ6を制御する回路である。NANDインタフェース57は、例えば、NANDコントローラ571-0、571-1、571-2、…、571-31を含む。NANDコントローラ571-0、571-1、571-2、…、571-31の各々は、1以上のチャンネル(ch)0、1、2、…、31のうちの対応する一つのチャンネルを介して、NANDメモリ6に含まれる1以上のフラッシュダイに接続される。フラッシュダイは、フラッシュチップとも称される。NANDコントローラ571-0、571-1、571-2、…、571-31は、例えば、NANDメモリ6に含まれるフラッシュダイ(#0)61-0、フラッシュダイ(#1)61-1、…、フラッシュダイ(#31)61-31をそれぞれ制御する。
次に、DRAM7に格納される情報について説明する。DRAM7に格納される情報は、L2Pテーブル71と、ブロック管理テーブル72と、フリーブロックリスト73と、シングルレベルセル(SLC)アクティブブロックリスト74と、クワドレベルセル(QLC)アクティブブロックリスト75とを含む。L2Pテーブル71と、ブロック管理テーブル72と、フリーブロックリスト73と、SLCアクティブブロックリスト74と、QLCアクティブブロックリスト75の一部または全ては、DRAM7ではなく、SRAM53に格納されてもよい。
L2Pテーブル71は、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングをセクタのような所定のサイズ単位で管理する。
ブロック管理テーブル72は、NANDメモリ6に含まれる各ブロックを管理する。ブロック管理テーブル72は、例えば、各ブロックが利用可能であるか否かを管理する。
フリーブロックリスト73は、有効データを格納していないNANDメモリ6の各ブロックをフリーブロックとして管理する。各ブロックに記憶されているデータは、有効データと無効データとに大別される。ここで、有効データとは、L2Pテーブル71から参照されている最新のデータを意味する。つまり、有効データは、論理アドレスに関連付けられている(すなわち、マッピングされている)物理アドレスによって位置が指定される物理的な記憶素子に記憶されているデータである。有効データは、後にホスト2からリードされる可能性があるデータである。一方、無効データは、もはやL2Pテーブル71から参照されなくなった古いデータを意味する。つまり、無効データは、論理アドレスに関連付けられていない(すなわち、マッピングが解消された)物理アドレスによって位置が指定される物理的な記憶素子に記憶されているデータである。無効データは、もはやホスト2によってリードされる可能性がないデータである。
SLCアクティブブロックリスト74およびQLCアクティブブロックリスト75の各々は、NANDメモリ6のアクティブブロックを管理する。アクティブブロックは、少なくとも有効データを格納しているブロックである。具体的には、SLCアクティブブロックリスト74は、SLCモードで書き込まれた有効データを格納しているアクティブブロックを管理する。SLCモードは、NANDメモリ6の一つのメモリセル当たりに1ビットのデータを記憶する書き込みモードである。QLCアクティブブロックリスト75は、QLCモードで書き込まれた有効データを格納しているアクティブブロックを管理する。QLCモードは、NANDメモリ6の一つのメモリセル当たりに4ビットのデータを記憶する書き込みモードである。
次に、NANDメモリ6に含まれるフラッシュダイ61の構成例について説明する。図2は、第1実施形態に係るメモリシステム3に含まれるNANDメモリ6のフラッシュダイ61の構成例を示すブロック図である。
ここでは、フラッシュダイ(#0)61-0に着目してフラッシュダイ61の構成を説明する。他のフラッシュダイもフラッシュダイ(#0)61-0と同じ構成を有している。フラッシュダイ(#0)61-0は、周辺回路611-0と、メモリセルアレイ612-0とを含む。
周辺回路611-0は、メモリセルアレイ612-0を制御する回路である。周辺回路611-0は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路611-0は、NANDコントローラ571-0からアドレスおよびコマンドを受信したことに応じて、プログラム動作、リード動作、あるいはイレーズ動作をメモリセルアレイ612-0に対して実行する。
メモリセルアレイ612-0は、複数のブロック(BLK0、BLK1、BLK2、…)を含む。各ブロックBLKは、不揮発性メモリセルトランジスタ(以降では、単にメモリセルトランジスタまたはメモリセルと称する)の集合である。各ブロックは、複数のストリングユニット(SU0、SU1、SU2、SU3)を含む。各ストリングユニットSUは、メモリセルトランジスタの集合である。各ストリングユニットSUは、複数のNANDストリングNS(単にストリングとも称する)を含む。各NANDストリングNSは、メモリセルトランジスタの集合である。
図2では、各ブロックに4つのストリングユニットSU0、SU1、SU2、SU3が含まれている場合について説明した。各ブロックに含まれているストリングユニットSUの数は、3つ以下であってもよいし、5つ以上であってもよい。なお、各ブロックが一つのストリングユニットSUのみを含む構成が使用されてもよい。つまり、各ブロックは、一つ以上のストリングユニットSUを含む。
次に、ブロックの構成例について説明する。図3は、第1実施形態に係るメモリシステム3に含まれるNANDメモリ6のブロックの構成例を示す図である。
図3では、ブロックBLK0に着目してブロックの構成を説明する。他のブロックも、ブロックBLK0と同じ構成を有している。ブロックBLK0は、4つのストリングユニット(SU0、SU1、SU2、SU3)を含む。4つのストリングユニット(SU0、SU1、SU2、SU3)は、複数のワード線WL0~WL7が積層された方向(垂直方向)と直交する方向(水平方向)に配置されている。各ストリングユニットSUは、複数のNANDストリングNSを含む。各NANDストリングNSの一端は、複数のビット線(BL0~BL(L-1))のうちの対応するビット線に接続されている。各NANDストリングNSは、垂直方向に延在している。各NANDストリングNSに含まれる複数のメモリセルトランジスタの制御ゲートは、複数のワード線(WL0、WL1、…、WL7)にそれぞれ接続されている。
次に、ブロックの回路構成について説明する。図4は、第1実施形態に係るメモリシステム3に含まれるNANDメモリ6のブロックの回路構成例を示す図である。
図4では、ブロックBLK0に着目してブロックの構成を説明する。他のブロックも、ブロックBLK0と同じ構成を有している。ブロックBLK0は、4つのストリングユニット(SU0、SU1、SU2、SU3)を含む。各ストリングユニットSUは、複数のNANDストリングNSを含む。
各NANDストリングNSは、例えば、8つのメモリセルトランジスタMT(MT0~MT7)、および2つの選択トランジスタST1、ST2を含んでいる。各メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを含み、データを不揮発に保持する。そして、メモリセルトランジスタMT(MT0~MT7)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、NANDストリングNS内のメモリセルトランジスタMTの数は、8つに限定されない。
ストリングユニットSU0の各選択トランジスタST1のゲートは、ストリングユニットSU0に対応する選択ゲート線SGD0に接続される。ストリングユニットSU1の各選択トランジスタST1のゲートは、ストリングユニットSU1に対応する選択ゲート線SGD1に接続される。ストリングユニットSU2の各選択トランジスタST1のゲートは、ストリングユニットSU2に対応する選択ゲート線SGD2に接続される。ストリングユニットSU3の各選択トランジスタST1のゲートは、ストリングユニットSU3に対応する選択ゲート線SGD3に接続される。これに対してストリングユニットSU0~SU3の選択トランジスタST2のゲートは、選択ゲート線SGSに共通接続される。なお、ストリングユニットSU0~SU3の選択トランジスタST2のゲートは、ストリングユニットごとに異なる選択ゲート線(SGS0~SGS3)に接続されてもよい。同一のブロックBLKにあるメモリセルトランジスタMT0~MT7の制御ゲートは、それぞれワード線WL0~WL7に共通接続される。
周辺回路611によるプログラム動作およびリード動作は、一つのストリングユニットSUにおける一つのワード線に接続された複数のメモリセルMTに対して、一括して実行され得る。プログラム動作およびリード動作の際に、一括して選択されるメモリセルMTの集合をメモリセルグループMGと称する。メモリセルグループMGはプログラム動作およびリード動作の単位であり、記憶位置として扱われる。各メモリセルMTが1ビットのデータを記憶するように構成されている場合にメモリセルグループMGあたりに記憶されるデータのサイズをページと称する。各メモリセルMTが4ビットのデータを記憶するように構成されている場合、メモリセルグループMGあたりに記憶されるデータのサイズは4ページである。
周辺回路611によるイレーズ動作は、ブロック単位で実行される。すなわち、一つのブロックに含まれる全てのメモリセルMTに格納されたデータは、一括して消去される。
次に、データ書き込み動作中に異常電源遮断が生じた後の再起動の処理について説明する。図5は、第1実施形態に係るメモリシステム3において、データ書き込み動作中に異常電源遮断が起きたときのブロックBLK0のデータの状態とメモリシステム3が再起動されたときのブロックBLK0のデータの状態を示す図である。ここでは、フルシーケンスプログラム動作を使用してデータ書き込み動作が実行される場合について説明する。フルシーケンスプログラム動作は、一回のプログラム動作によって、一つのストリングユニットSUにおける一つの記憶位置(メモリセルグループMG)にデータを書き込むプログラム動作である。プログラム動作は、例えば1つ以上のプログラムループを含む。各プログラムループは、メモリセルMTの電荷蓄積層に電荷を注入しメモリセルMTの閾値電圧を上昇させる第1動作と、メモリセルMTの閾値電圧が書き込み対象データに応じた電圧以上になったかを検証する第2動作と、を含む。
(a)コントローラ5は、書き込み先ブロックとして割り当てられたブロックBLK0に対するデータ書き込み動作を、フルシーケンスプログラム動作を使用して実行する。プログラム動作が完了した各記憶位置に記憶されるデータを、書き込み完了データと称する。書き込み完了データは、読み出すことが可能なデータである。コントローラ5は、書き込み先ブロックに含まれる記憶位置のうち、次にデータ書き込み動作が実行されるべき記憶位置を示す情報を、書き込み先位置として、NANDメモリ6に定期的に記録する。ここでは、コントローラ5は、次にデータ書き込み動作が実行されるべき記憶位置として書き込み先位置Aを記録する。
(b)次に、コントローラ5は、書き込み先位置Aによって示される記憶位置から、書き込み先位置Bによって示される記憶位置まで、フルシーケンスプログラム動作を使用してデータ書き込み動作を実行する。ここで、書き込み先位置Bによって示される記憶位置に対するプログラム動作が実行されている最中に異常電源遮断が起きた場合を想定する。異常電源遮断は、ホスト2からシャットダウン通知をメモリシステム3が事前に受信することなく、メモリシステム3に対する電力の供給が遮断される現象である。
(c)書き込み先位置Bによって示される記憶位置に対するプログラム動作の実行中に電源遮断が起きた場合、プログラム動作が完了する前に、プログラム動作が中断される。この結果、この記憶位置は、リード不可データを含む記憶位置になる。リード不可データは、NANDメモリ6から正常に読み出すことができないデータである。リード不可データを含む記憶位置からデータが読み出された場合、ECC回路55はこのデータの誤りを訂正できないため、ECCエラーを示すステータスを出力する。このリード不可データが格納された記憶位置に含まれる各メモリセルMTの閾値電圧は、中断されたプログラム動作によって既に変更されている場合がある。このため、コントローラ5は、この記憶位置に対して再度プログラム動作を実行しない。
(d)メモリシステム3に対する電力の供給が回復されてメモリシステム3が再起動した際に、コントローラ5は、書き込み先位置を示す情報をNANDメモリ6から取得する。書き込み先位置Bを示す情報はNANDメモリ6に記録されていない。このため、NANDメモリ6から取得される情報は書き込み先位置Aを示す。コントローラ5は、取得した書き込み先位置Aによって示される記憶位置からデータを読み出し、この記憶位置にリード可能データが格納されているか否かを判定する。リード可能データは、NANDメモリ6から正常に読み出すことができるデータである。この記憶位置にリード可能データが格納されている場合、ECC回路55による誤り訂正は成功し得る。すなわち、コントローラ5は、ECC回路55がCPU52に通知するECCパス/ECCエラーに基づいて、NANDメモリ6に格納されているデータがリード可能データまたはリード不可データのいずれであるかを判定することができる。コントローラ5は、書き込み先位置Aによって示される記憶位置に格納されているデータがリード可能データであった場合、さらに、書き込み先位置Aに後続する記憶位置に格納されているデータを読み出して、この記憶位置に格納されているデータがリード可能データであるか否かを判定する。
(e)コントローラ5は、(d)で説明した動作を繰り返すことによって、リード不可データを格納している最初の記憶位置を特定する。そして、コントローラ5は、特定した記憶位置がイレーズ(erased)状態か否かを判定する。イレーズ状態の記憶位置に含まれる全てのメモリセルMTには、いずれも、イレーズ動作の後にプログラム動作が実行されていない。特定した記憶位置がイレーズ状態であった場合、コントローラ5は、特定した記憶位置に対してデータ書き込み動作を実行することができる。そのため、コントローラ5は、ブロックBLK0に対するデータ書き込み動作を続行する。一方、特定した記憶位置がイレーズ状態でない場合、コントローラ5は、特定した記憶位置に対してデータ書き込み動作を続行することができない。この場合、コントローラ5は、ブロックBLK0を、データの書き込みに利用不可能なブロックとしてブロック管理テーブル72に登録し、別のブロックを書き込み先ブロックとして新たに割り当ててもよい。そして、コントローラ5は、書き込み先ブロックとして新たに割り当てられたブロックに対してデータ書き込み動作を実行し得る。
このように、フルシーケンスプログラム動作を使用するケースにおいては、コントローラ5は、幾つかの記憶位置の各々にリード可能データが格納されているか否かを判定する処理と、リード不可データを格納している最初の記憶位置がイレーズ状態であるか否かを判定する処理とによって、プログラム動作の実行中に電源遮断が起きたか否かを判定することができる。
次に、QLCモードでデータが書き込まれた複数のメモリセルの閾値電圧分布について説明する。QLCモードでは、1つのメモリセルあたりに4ビットのデータが書き込まれる。図6は、第1実施形態に係るメモリシステム3に含まれるNANDメモリ6の複数のメモリセルの閾値電圧分布の例を示す図である。
各メモリセルの閾値電圧Vthは、各メモリセルの電荷蓄積層が保持する電荷量に応じて変化する。NANDメモリ6は、記憶されるべき情報を示す複数のデータ値を、メモリセルの閾値電圧Vthの閾値電圧分布に対応させることで、情報を記憶する。
QLCモードでは、各メモリセルが取り得る閾値電圧は、16個の閾値電圧範囲に区分される。この16個の閾値電圧範囲を閾値電圧が低い方から順番に、Erステート、Aステート、Bステート、Cステート、…、Oステートと称する。各メモリセルの閾値電圧Vthは、プログラム動作によって、いずれかの閾値電圧範囲に属するように制御される。
これら16個のステートは、それぞれ異なる4ビットのデータに対応する。Aステートに対応する4ビットのデータがプログラムされたメモリセルの閾値電圧Vthは、Vr1からVr2までの閾値電圧範囲に設定される。同様に、Bステートに対応する4ビットのデータがプログラムされたメモリセルの閾値電圧Vthは、Vr2からVr3までの閾値電圧範囲に設定される。同様に、Oステートに対応する4ビットのデータがプログラムされたメモリセルの閾値電圧Vthは、Vr15からVr16までの閾値電圧範囲に設定される。他のステートについても同様である。
次に、複数段階のプログラム動作について説明する。図7は、QLCモードでデータを書き込む際に第1実施形態に係るメモリシステム3において実行される複数段階のプログラム動作の手順を示す図である。
コントローラ5は、書き込み先ブロックに含まれる複数の記憶位置のそれぞれに対するデータ書き込み動作を、第1段階のプログラム動作と第2段階のプログラム動作とを少なくとも含む複数段階のプログラム動作を使用して実行する。第1段階のプログラム動作では、書き込むべき4ページ分のデータがNANDメモリ6に転送され、あるワード線に接続された、書き込み先ブロック内のある記憶位置に含まれる複数のメモリセル(メモリセルグループMG)に、このデータが書き込まれる。第1段階のプログラム動作では、各メモリセルの閾値電圧は、粗く設定される。この状態では、各メモリセルからデータを正常に読み出すことはできない。第2段階のプログラム動作では、第1段階のプログラム動作で転送されたデータと同じ4ページ分のデータがNANDメモリ6に再び転送され、この記憶位置に対応するメモリセルグループMGに、このデータが書き込まれる。第2段階のプログラム動作では、各メモリセルの閾値電圧は、書き込むべきデータに対応する目標閾値電圧に設定される。第2段階のプログラム動作が完了すると、各メモリセルからデータを正しく読み出すことができる。
各記憶位置に対する第2段階のプログラム動作は、この記憶位置が接続されているワード線に後続するワード線に接続された別の記憶位置に対する第1段階のプログラム動作が実行された後に、実行される。
複数段階のプログラム動作としては、例えば、フォギー・ファインプログラム動作が使用され得る。フォギー・ファインプログラム動作は、フォギープログラム動作と、ファインプログラム動作とを含む。フォギープログラム動作は、各メモリセルの閾値電圧を粗く設定するプログラム動作(第1段階のプログラム動作)である。ファインプログラム動作は、各メモリセルの閾値電圧を調整して各メモリセルの閾値電圧を目標閾値電圧に設定するプログラム動作(第2段階のプログラム動作)である。
書き込み先ブロックに対するフォギー・ファインプログラム動作は、以下のように実行される。以下では、あるワード線WLxに接続され、且つ、あるストリングユニットSUyに含まれている記憶位置を、MG(WLx、SUy)と称する。
(1)まず、MG(WL0、SU0)に対するフォギープログラム動作が実行される。ここで、NANDメモリ6には、4ページ分のサイズを有するライトデータ、つまり、ページサイズの4倍のサイズを有するライトデータが転送される。ページサイズは、一つのストリングユニットSUに含まれるストリングの数、つまり、一つの記憶位置(メモリセルグループMG)に含まれるメモリセルの数に相当する。
(2)次いで、MG(WL0、SU1)に対するフォギープログラム動作が実行される。
(3)次いで、MG(WL0、SU2)に対するフォギープログラム動作が実行される。
(4)次いで、MG(WL0、SU3)に対するフォギープログラム動作が実行される。
(5)MG(WL0、SU0)~MG(WL0、SU3)に対するフォギープログラム動作が完了すると、MG(WL1、SU0)に対するフォギープログラム動作が実行される。
(6)MG(WL1、SU0)に対するフォギープログラム動作が完了すると、MG(WL0、SU0)に対するファインプログラム動作が実行される。ここで、NANDメモリ6には、MG(WL0、SU0)に対するフォギープログラム動作で使用されたライトデータと同じライトデータが再び転送される。そして、MG(WL0、SU0)に対するファインプログラム動作が実行される。このファインプログラム動作が完了すると、MG(WL0、SU0)は、ファインプログラム状態になる。ファインプログラム状態の記憶位置に格納されているデータは、正しく読み出すことが可能なリード可能データである。
(7)次いで、MG(WL1、SU1)に対するフォギープログラム動作が実行される。
(8)MG(WL1、SU1)に対するフォギープログラム動作が完了すると、MG(WL0、SU1)に対するファインプログラム動作が実行される。ファインプログラム動作が完了すると、MG(WL0、SU1)は、ファインプログラム状態になる。
(9)次いで、MG(WL1、SU2)に対するフォギープログラム動作が実行される。
(10)MG(WL1、SU2)に対するフォギープログラム動作が完了すると、MG(WL0、SU2)に対するファインプログラム動作が実行される。これにより、MG(WL0、SU2)は、ファインプログラム状態になる。
(11)次いで、MG(WL1、SU3)に対するフォギープログラム動作が実行される。
(12)MG(WL1、SU3)に対するフォギープログラム動作が完了すると、MG(WL0、SU3)に対するファインプログラム動作が実行される。これにより、MG(WL0、SU3)は、ファインプログラム状態になる。
(13)MG(WL1、SU0)~MG(WL1、SU3)に対するフォギープログラム動作が完了すると、MG(WL2、SU0)に対するフォギープログラム動作が実行される。
(14)MG(WL2、SU0)に対するフォギープログラム動作が完了すると、MG(WL1、SU0)に対するファインプログラム動作が実行される。これにより、MG(WL1、SU0)は、ファインプログラム状態になる。
(15)次いで、MG(WL2、SU1)に対するフォギープログラム動作が実行される。
(16)MG(WL2、SU1)に対するフォギープログラム動作が完了すると、MG(WL1、SU1)に対するファインプログラム動作が実行される。これにより、MG(WL1、SU1)は、ファインプログラム状態になる。
(17)次いで、MG(WL2、SU2)に対するフォギープログラム動作が実行される。
(18)MG(WL2、SU2)に対するフォギープログラム動作が完了すると、MG(WL1、SU2)に対するファインプログラム動作が実行される。これにより、MG(WL1、SU2)は、ファインプログラム状態になる。
次に、各ブロックに含まれる複数の記憶位置のそれぞれに対してフォギー・ファインプログラム動作が実行される順序について説明する。図8は、第1実施形態に係るメモリシステム3において実行される、ブロックに対する複数段階のプログラム動作の書き込み順序を示す図である。
各ブロックには、一つ以上のストリングユニットSUが含まれる。コントローラ5は、あるワード線(第1のワード線)に接続され、且つ、一つ以上のストリングユニットSUにそれぞれ含まれている一つ以上のメモリセルグループMG(第1の記憶位置と称する)に対するフォギープログラム動作を実行する。一つ以上の第1の記憶位置の全てに対するフォギープログラム動作が完了した後に、コントローラ5は、第1のワード線に後続する第2のワード線に接続され、且つ、一つ以上のストリングユニットSUにそれぞれ含まれている一つ以上のメモリセルグループMG(第2の記憶位置と称する)のうちの一つの第2の記憶位置に対するフォギープログラム動作を実行する。
そして、この一つの第2の記憶位置に対するフォギープログラム動作が完了したことに応じて、コントローラ5は、第1のワード線に接続されており、且つ、この一つの第2の記憶位置と同じストリングユニットに含まれている第1の記憶位置に対するファインプログラム動作を実行する。
コントローラ5は、書き込み先ブロックに含まれる複数の記憶位置に対するフォギー・ファインプログラム動作をこのような書き込み順序で実行する。そして、各記憶位置に書き込まれたデータは、各記憶位置に対するファインプログラム動作が完了した後に読み出し可能になる。
図8においては、一つのブロックに含まれる複数の記憶位置に対する書き込み順序が数字によって表されている。ここでは、ブロック当たりのワード線の数が8(ワード線WL0~WL7)である場合が想定されている。1番目のデータ書き込み動作では、MG(WL0、SU0)に対するフォギープログラム動作が実行される。
2番目のデータ書き込み動作では、MG(WL0、SU1)に対するフォギープログラム動作が実行される。3番目のデータ書き込み動作では、MG(WL0、SU2)に対するフォギープログラム動作が実行される。4番目のデータ書き込み動作では、MG(WL0、SU3)に対するフォギープログラム動作が実行される。
5番目のデータ書き込み動作では、MG(WL1、SU0)に対するフォギープログラム動作が実行される。6番目のデータ書き込み動作では、MG(WL0、SU0)に対するファインプログラム動作が実行される。
7番目のデータ書き込み動作では、MG(WL1、SU1)に対するフォギープログラム動作が実行される。8番目のデータ書き込み動作では、MG(WL0、SU1)に対するファインプログラム動作が実行される。
9番目のデータ書き込み動作では、MG(WL1、SU2)に対するフォギープログラム動作が実行される。10番目のデータ書き込み動作では、MG(WL0、SU2)に対するファインプログラム動作が実行される。
11番目のデータ書き込み動作では、MG(WL1、SU3)に対するフォギープログラム動作が実行される。12番目のデータ書き込み動作では、MG(WL0、SU3)に対するファインプログラム動作が実行される。
13番目のデータ書き込み動作では、MG(WL2、SU0)に対するフォギープログラム動作が実行される。14番目のデータ書き込み動作では、MG(WL1、SU0)に対するファインプログラム動作が実行される。
このように、MG(WL x、SU y+1)は、MG(WL x、SU y)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置である。また、MG(WL x+1、SU0)は、MG(WL x、SU3)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置である。MG(WL x+1、SU y)は、MG(WL x、SU y)に対するファインプログラム動作の前にフォギープログラム動作が実行された記憶位置である。また、MG(WL x+1、SU y+1)は、MG(WL x、SU y)に対するファインプログラム動作の次にフォギープログラム動作が実行されるべき記憶位置である。
次に、各記憶位置に含まれる複数のメモリセルの閾値電圧分布について説明する。まず、消去(イレーズ)状態の記憶位置に含まれる複数のメモリセルの閾値電圧について説明する。図9は、第1実施形態に係るメモリシステムにおける、イレーズ状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布を示す図である。
イレーズ状態の記憶位置に含まれる複数のメモリセルの各々の閾値電圧は、イレーズページ閾値電圧よりも低い。イレーズページ閾値電圧は、例えば0Vである。イレーズページ閾値電圧は、例えば、図6を参照して説明したVr1である。言い換えれば、イレーズ動作が実行された後、複数のメモリセルのいずれの閾値電圧もErステートの閾値電圧範囲に維持されている記憶位置が、イレーズ状態の記憶位置である。イレーズ状態の記憶位置には、イレーズページ閾値電圧以上の閾値電圧を有するメモリセルは存在しない。そのため、コントローラ5は、ある記憶位置に対してイレーズページチェックを実行することによって、その記憶位置がイレーズ状態であるか否かを判定することができる。イレーズページチェックにおいて、コントローラ5は、イレーズページ閾値電圧以上の閾値電圧を有するメモリセルがその記憶位置に含まれているか否かを判定する。
また、イレーズ状態の記憶位置は、データを正常に読み出すことができない記憶位置でもある。イレーズ状態の記憶位置からデータが読み出された場合、ECCパリティが記憶されていないため、ECC回路55は、読み出されたデータの誤りを訂正できない。
なお、イレーズページチェックでは、コントローラ5は、ECC回路55をバイパスすることによって、記憶位置から読み出された生データを取得してもよい。生データに含まれる全メモリセルのデータがErステートに対応するデータであれば、コントローラ5は、その記憶位置に含まれる全てのメモリセルがイレーズ状態に対応する閾値電圧を有していると判定することができる。
あるいは、イレーズページ閾値電圧以上の閾値電圧を有するメモリセルの数をカウントする回路がコントローラ5に設けられている場合には、コントローラ5は、この回路から出力されるカウント値に基づいて、記憶位置に含まれる全てのメモリセルがイレーズ状態に対応する閾値電圧を有しているか否かを判定してもよい。この回路は、例えば、イレーズページチェック対象のワード線にイレーズページ閾値電圧をリード電圧として印可するようにNANDメモリ6を制御し得る。そして、この回路は、NANDメモリ6から読み出されたデータに含まれる、Erステートに対応するデータ以外のデータを記憶しているメモリセルの数を、イレーズページ閾値電圧以上の閾値電圧を有するメモリセルの数としてカウントし得る。
イレーズ状態の記憶位置は、データ書き込み動作が実行可能な記憶位置である。
次に、リード可能データを格納している記憶位置に含まれる複数のメモリセルの閾値電圧分布について説明する。図10は、第1実施形態に係るメモリシステムにおける、データの読み出しが可能な状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布を示す図である。
データの読み出しが可能な状態の記憶位置は、フルシーケンスプログラム動作が完了したフルシーケンスプログラム状態の記憶位置、あるいはファインプログラム動作が完了したファインプログラム状態の記憶位置である。この記憶位置からデータが読み出された場合、ECCパリティが記憶されているため、ECC回路55は、読み出されたデータの誤りを訂正できる。この記憶位置に含まれる各メモリセルの閾値電圧は、そのメモリセルに格納されているデータに対応する閾値電圧に変更されている。そのため、この記憶位置に含まれる各メモリセルの閾値電圧は、Erステート、Aステート、Bステート、Cステート、…、Oステートのうちのいずれかのステートに対応する閾値電圧を有している。フルシーケンスプログラム状態またはファインプログラム状態の記憶位置は、この記憶位置を含むブロックに対するイレーズ動作を実行しない限り、新たなデータの書き込みに利用することができない。
次に、フォギープログラム動作が完了した記憶位置に含まれる複数のメモリセルの閾値電圧分布について説明する。図11は、第1実施形態に係るメモリシステム3における、フォギープログラム動作が完了したフォギープログラム状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布を示す図である。フォギープログラム状態の記憶位置は、フォギープログラム動作が完了し、且つ、ファインプログラム動作がまだ開始されていない記憶位置である。
フォギープログラム状態の記憶位置に含まれる各メモリセルの閾値電圧は、粗い精度で設定されている。そのため、フォギープログラム状態の記憶位置は、データを正常に読み出すことができない記憶位置である。フォギープログラム状態の記憶位置からデータが読み出された場合、ECC回路55は、このデータの誤りを訂正できない。一方、フォギープログラム状態の記憶位置は、イレーズページ閾値電圧以上の閾値電圧を有するメモリセルを含み得る。したがって、コントローラ5は、フォギープログラム状態の記憶位置と、イレーズ状態の記憶位置とを区別することができる。
フォギープログラム状態の記憶位置は、第2段階のプログラム動作(ファインプログラム動作)を実行可能な記憶位置である。つまり、フォギープログラム状態の記憶位置は、イレーズ状態ではないが、ファインプログラム動作が実行可能な記憶位置である。
次に、データ書き込み動作中に電源遮断が発生した状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布について説明する。図12は、第1実施形態に係るメモリシステム3における、データ書き込み動作中に電源遮断が発生した状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布を示す図である。
データ書き込み動作(フルシーケンスプログラム動作、フォギープログラム動作、またはファインプログラム動作)の実行中にメモリシステム3に対する電力の供給が遮断されることによってこれらの動作が中断された記憶位置は、正しく読み出すことができないデータを格納しているプログラム中断状態の記憶位置である。プログラム中断状態の記憶位置からデータが読み出された場合、ECC回路55は、この読み出されたデータの誤りを訂正できない。一方で、プログラム中断状態の記憶位置に含まれる幾つかのメモリセルの閾値電圧は、イレーズページ閾値電圧を上回っている。したがって、コントローラ5は、プログラム中断状態の記憶位置と、イレーズ状態の記憶位置とを区別することができる。
プログラム中断状態の記憶位置は、イレーズ状態ではないため、新たなデータの書き込みに利用することができない。
以下では、プログラム中断状態の記憶位置が存在しない状態、すなわち、記憶位置の状態が、フルシーケンスプログラム状態、ファインプログラム状態、フォギープログラム状態またはイレーズ状態のいずれかである場合を、書き込み動作が正常に停止された状態と称する。
プログラム中断状態の記憶位置またはフォギープログラム状態の記憶位置のどちらからデータが読み出された場合でも、ECC回路55によってECCエラーが判定され、且つ、イレーズページチェックでこの記憶位置はイレーズ状態ではないと判定される。そのため、これら二つの判定だけでは、コントローラ5は、この記憶位置が、プログラム中断状態またはフォギープログラム状態のどちらの状態であるかを正しく判定することができない。
次に、ホスト2から受信されたライトコマンドに対応するデータ書き込み動作と、ガベージコレクション動作によって内部的に実行されるデータ書き込み動作について説明する。図13は、第1実施形態に係るメモリシステムにおいて実行される、ホスト2から受信されたライトコマンドに対応するデータ書き込み動作と、ガベージコレクション動作によって内部的に実行されるデータ書き込み動作の例を示す図である。まず、ホスト2から受信されたライトコマンドに対応するデータ書き込み動作、つまり、ホスト2から受信されたライトコマンドに基づいて実行されるデータ書き込み動作について説明する。
コントローラ5は、ホスト2から受信されたライトコマンドに関連付けられたライトデータをホスト2のメモリ22から取得し、取得したライトデータをライトバッファ(WB)に一時的に格納する。DRAM7の記憶領域の一部がライトバッファとして使用されてもよいし、SRAM53の記憶領域の一部がライトバッファとして使用されてもよい。
コントローラ5は、フリーブロックリスト73からSLCブロックを選択し、その選択したSLCブロックを書き込み先ブロックに割り当てる。SLCブロックは、NANDメモリ6に含まれるブロックのうち、SLCモードによるデータの書き込みが実行されるブロックである。既に書き込み先ブロックにSLCブロックが割り当てられている場合、コントローラ5は、この動作を省略する。
コントローラ5は、ライトバッファに格納されたライトデータの総サイズが書き込み単位に達すると、書き込み先ブロックに割り当てられたSLCブロックにライトデータを書き込む。このとき、コントローラ5は、SLCモードのデータ書き込み動作を実行する。
書き込み先ブロックに割り当てられたSLCブロックがフルになると、コントローラ5は、そのSLCブロックをSLCアクティブブロックリスト74に登録し、そのSLCブロックを書き込み先ブロックから解除する。そして、コントローラ5は、フリーブロックリスト73から別のSLCブロックを選択し、その選択した別のSLCブロックを書き込み先ブロックに割り当てる。
また、コントローラ5は、アイドル状態の期間中に、またはフリーブロックリスト73に含まれるSLCブロック(フリーSLCブロック)の数が閾値を下回ったことに応じて、SLCアクティブブロックリスト74に含まれるSLCブロックに対するガベージコレクション動作を実行する。アイドル状態は、実行すべきホスト2からのコマンドが無い状態を意味する。
コントローラ5は、フリーブロックリスト73からQLCブロックを選択して、コピー先ブロックに割り当てる。QLCブロックは、NANDメモリ6に含まれるブロックのうち、QLCモードによるフォギー・ファインプログラム動作が実行されるブロックである。QLCブロックに含まれるメモリセルの各々は、4ビットのデータを格納する。そのため、QLCブロックは、SLCブロックの4倍の容量を有する。既にコピー先ブロックにQLCブロックが割り当てられている場合、コントローラ5は、この動作を省略する。
コントローラ5は、SLCアクティブブロックリスト74から任意のブロックを選択し、コピー元ブロックに割り当てる。コントローラ5は、格納されている有効データの量が少ないブロックを優先して選択してもよい。あるいは、コントローラ5は、任意のアルゴリズムに基づいてコピー元ブロックに割り当てられるべきブロックを選択してもよい。
コントローラ5は、コピー元ブロックの記憶位置(コピー元記憶位置)に格納されている有効データを選択し、選択した有効データを読み出す。コントローラ5は、読み出された有効データを、QLCモードによるフォギー・ファインプログラム動作を使用してコピー先ブロックにおける記憶位置(コピー先記憶位置)に書き込む。コントローラ5は、この有効データに対応する論理アドレスに関連付けられている物理アドレスがコピー元記憶位置を示す物理アドレスからコピー先記憶位置を示す物理アドレスに変更されるように、L2Pテーブル71を更新する。これにより、コピー元記憶位置に格納されていた有効データは、無効データになる。
コントローラ5は、コピー元ブロックが有効データを保持していないブロックになると、このブロックをフリーブロックリスト73に返却し、コピー元ブロックから解除する。
そして、コントローラ5は、再度、SLCアクティブブロックリスト74から任意のブロックを選択し、コピー元ブロックに割り当てる。
また、コントローラ5は、コピー先ブロックに割り当てられているQLCブロックがフルになると、そのQLCブロックをQLCアクティブブロックリスト75に登録し、コピー先ブロックから解除する。
ここでは、ガベージコレクション動作によるQLCブロックへのデータの書き込みの際に、コントローラ5がフォギー・ファインプログラム動作を実行する場合について説明した。しかしながら、ホスト2から受信したライトコマンドに基づくデータの書き込みの際にも、書き込み先ブロックとしてQLCブロックが割り当てられてもよい。以降では、書き込み先ブロックにデータを書き込む動作を説明する。この書き込み先ブロックは、ガベージコレクション動作におけるコピー先ブロックであってもよいし、ホスト2からのデータが書き込まれるべきブロックであってもよい。
このように、メモリシステム3では、SLCモードによるデータ書き込み動作の他に、QLCモードによるデータ書き込み動作が実行される。QLCモードによるデータ書き込み動作は、複数段階のプログラム動作を使用して実行される。
次に、複数段階のプログラム動作を使用したデータ書き込み動作の最中に電源遮断が生じたときの動作について説明する。
図14は、比較例に係るメモリシステムにおいて実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係を示す図である。
ここでは、ワード線WL N+2(Nは1以上の整数)に接続されており、且つ、ストリングユニットSU2に含まれる記憶位置(MG(WL N+2、SU2))に対するフォギープログラム動作が完了してから、ワード線WL N+1に接続されており、且つ、ストリングユニットSU2に含まれる記憶位置(MG(WL N+1、SU2))に対するファインプログラム動作が開始されるまでの間にメモリシステムに対する電力の供給が遮断された場合を想定する。
メモリシステムに対する電力の供給の遮断後に、メモリシステムに対する電力の供給が再開されたことに応じて、コントローラは、NANDメモリに格納されている書き込み先位置を取得し、書き込み先位置に後続する各記憶位置に格納されているデータがリード可能データであるか否かを判定する。
これにより、コントローラは、ワード線WL Nに接続されている4つの記憶位置(MG(WL N、SU0)~MG(WL N、SU3))と、ワード線WL N+1に接続されている4つの記憶位置(MG(WL N+1、SU0)~MG(WL N+1、SU3))のうちの2つの記憶位置(MG(WL N+1、SU0)及びMG(WL N+1、SU1))とが、ファインプログラム状態であると判定することができる。最後にファインプログラム状態になった記憶位置は、MG(WL N+1、SU1)である。
そして、コントローラは、例えば、最後にファインプログラム状態になったMG(WL N+1、SU1)に後続する各記憶位置に対するイレーズページチェックを実行することによって、最後にファインプログラム状態になったMG(WL N+1、SU1)に後続する各記憶位置がイレーズ状態であるか否かを判定する。
これにより、コントローラは、MG(WL N+1、SU2)と、MG(WL N+1、SU3)と、MG(WL N+2、SU0)と、MG(WL N+2、SU1)と、MG(WL N+2、SU2)とが、イレーズ状態でないことを判定することができる。
しかし、コントローラは、イレーズ状態でない各記憶位置が、フォギープログラム状態の記憶位置であるか、あるいはプログラム中断状態の記憶位置であるかを判定することができない。
そのため、コントローラは、これらの判定によって得られた情報からでは、MG(WL N+1、SU2)~MG(WL N+2、SU2)の状態が、
(1)MG(WL N+1、SU2)に対するファインプログラム動作の実行中に電源遮断が発生した状態
(2)MG(WL N+2、SU2)に対するフォギープログラム動作の実行中に電源遮断が発生した状態
(3)MG(WL N+2、SU2)に対するフォギープログラム動作が完了してから、MG(WL N+1、SU2)に対するファインプログラム動作が開始されるまでの間に、電源遮断が発生したが、書き込み動作は正常に停止された状態
のうちのいずれであるかを判定することができない。
つまり、コントローラは、前回の書き込み動作が正常に停止されたか否かを判別できない。
そこで、第1実施形態に係るメモリシステム3は、フォギープログラム動作と、このフォギープログラム動作の完了によって実行可能になるファインプログラム動作とを一連のプログラム動作として実行する規則に従い、データ書き込み動作を実行する。
図15は、第1実施形態に係るメモリシステム3において実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第1の例を示す図である。
コントローラ5は、図8で説明したフォギー・ファインプログラム動作の書き込み順序に則って、書き込み先ブロックに含まれる複数の記憶位置に対するデータ書き込み動作を実行する。コントローラ5は、MG(WL N+2、SU2)に対するフォギープログラム動作が完了したことに応じて、MG(WL N+1、SU2)に対するファインプログラム動作を実行する。つまり、コントローラ5は、MG(WL N+2、SU2)に対するフォギープログラム動作と、MG(WL N+1、SU2)に対するファインプログラム動作とを、一連のプログラム動作として実行する。
ここで、MG(WL N+1、SU2)に対するファインプログラム動作が完了した後に、メモリシステム3に対する電力の供給が異常電源遮断により遮断された場合を想定する。
メモリシステム3に対する電力の供給の遮断後に、メモリシステム3に対する電力が回復されたことに応じ、つまり、メモリシステム3に対する電力の供給が再開されたことに応じ、コントローラ5は、NANDメモリ6から書き込み先位置を示す情報を取得する。コントローラ5は、取得した情報によって示される記憶位置からデータを読み出し、ECC回路55によるエラー訂正の結果(ECCパスまたはECCエラー)に基づいて、この記憶位置に格納されているデータがリード可能データであるか否かを判定する。この記憶位置に格納されているデータがリード可能データである場合、つまりECCパスである場合、コントローラ5は、この記憶位置に後続する記憶位置に格納されているデータを読み出し、ECC回路55によるエラー訂正の結果に基づいて、この記憶位置に格納されているデータがリード可能データであるか否かを再び判定する。
このようにして、リード不可データが格納されている最初の記憶位置が見つかるまで、コントローラ5は、読み出し対象の記憶位置を変更しながら、読み出し対象の記憶位置に格納されているデータがリード可能データであるか否かを判定する。これによって、コントローラ5は、リード可能データが格納されている最後の記憶位置を特定する。つまり、コントローラ5は、書き込み先ブロックに含まれる複数の記憶位置のうち、最後に読み出しが可能になったデータが格納されている記憶位置を特定する。ここでは、コントローラ5は、MG(WL N+1、SU2)を、最後に読み出しが可能になったデータが格納されている記憶位置として特定する。
次いで、コントローラ5は、(1―A)特定された記憶位置が接続されているワード線に後続するワード線に接続されている4つの記憶位置のうち、特定された記憶位置と同じストリングユニットに含まれている記憶位置がリード不可データを格納しており、且つ、(1-B)この記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態である、という第1の条件が満たされているか否かを判定する。
具体的には、まず、コントローラ5は、MG(WL N+2、SU2)からデータを読み出し、ECC回路55によるエラー訂正の結果(ECCパスまたはECCエラー)に基づいて、このMG(WL N+2、SU2)がリード不可データを格納しているか否かを判定する。
MG(WL N+2、SU2)がリード不可データを格納している場合、コントローラ5は、MG(WL N+2、SU2)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL N+2、SU3)がイレーズ状態であるか否かを判定する。
リード可能データが格納されている最後の記憶位置がMG(WL N+1、SU2)であるので、MG(WL N+2、SU2)に対するフォギープログラム動作は完了している。したがって、MG(WL N+2、SU2)がリード不可データを格納しており、且つ、MG(WL N+2、SU3)がイレーズ状態であれば、コントローラ5は、MG(WL N+2、SU2)に対するフォギープログラム動作が完了している、と判定できる。
つまり、コントローラ5は、MG(WL N+2、SU2)がリード不可データを格納しており、且つ、MG(WL N+2、SU3)がイレーズ状態である場合、MG(WL N+2、SU2)は、フォギープログラム状態である、と判定できる。また、MG(WL N+2、SU3)がイレーズ状態であるので、MG(WL N+1、SU3)に対するファイン書き込み動作は開始されていない。よって、コントローラ5は、MG(WL N+1、SU3)も、フォギープログラム状態である、と判定できる。
MG(WL N+2、SU2)がリード不可データを格納しており、且つ、MG(WL N+2、SU3)がイレーズ状態である場合、第1の条件が満たされる。したがって、この場合には、コントローラ5は、メモリシステム3の前回の書き込み動作は正常に停止された、つまり、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在していないと判定する。そして、コントローラ5は、イレーズ状態であると判定されたこのMG(WL N+2、SU3)を次の書き込み先位置に決定する。
つまり、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されたと判定すると、書き込み先ブロックとして割り当てられているブロックに対するデータ書き込み動作を続行し、MG(WL N+2、SU3)を次のフォギープログラム動作が実行されるべき記憶位置に決定する。
第1の条件が満たされなかった場合には、コントローラ5は、フォギープログラム動作またはファインプログラム動作の実行中に電源遮断が起きた記憶位置が存在する、つまり、メモリシステム3の前回の書き込み動作が正常に停止されなかった、と判定する。例えば、MG(WL N+2、SU2)がリード不可データを格納しているが、MG(WL N+2、SU3)がイレーズ状態ではなかった場合に、コントローラ5は、前回の書き込み動作が正常に停止されなかった、と判定する。
なお、コントローラ5は、MG(WL N+2、SU2)が、イレーズ状態ではなく、リード不可データを格納しており、且つ、MG(WL N+2、SU3)がイレーズ状態である、という条件が満たされているか否かを判定し、満たされている場合に、メモリシステム3の前回の書き込み動作が正常に停止された、と判定してもよい。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定されるケースについて説明する。図16は、第1実施形態に係るメモリシステム3において実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第2の例を示す図である。
ここでは、MG(WL N+2、SU2)に対するフォギープログラム動作の実行中に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。ここでは、コントローラ5は、MG(WL N+1、SU1)を、リード可能データが格納されている最後の記憶位置として特定する。
次いで、コントローラ5は、特定された記憶位置が接続されているワード線に後続するワード線に接続されている4つの記憶位置のうち、特定された記憶位置と同じストリングユニットに含まれている記憶位置が、リード不可データを格納しているか否かを判定する。つまり、コントローラ5は、MG(WL N+2、SU1)がリード不可データを格納しているか否かを判定する。
MG(WL N+2、SU1)がリード不可データを格納している場合、コントローラ5は、MG(WL N+2、SU1)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL N+2、SU2)が、イレーズ状態であるか否かを判定する。
MG(WL N+2、SU2)に対するフォギープログラム動作の実行中に電源遮断が起きた場合、MG(WL N+2、SU2)からは正常にデータを読み出すことができない。また、MG(WL N+2、SU2)は、イレーズページ閾値電圧よりも高い閾値電圧を有する一つ以上のメモリセルを含む。したがって、MG(WL N+2、SU2)は、イレーズ状態ではないと判定される。この結果から、コントローラ5は、MG(WL N+2、SU2)に対するフォギープログラム動作と、MG(WL N+1、SU2)に対するファインプログラム動作とを、一連のプログラム動作として完了することができなかった、と判定する。この場合、コントローラ5は、MG(WL N+2、SU2)がフォギープログラム状態であるのか、MG(WL N+2、SU2)に対するフォギープログラム動作の実行中に電源遮断が起きたのかを判定することができない。
また、コントローラ5は、MG(WL N+1、SU2)がフォギープログラム状態であるのか、MG(WL N+1、SU2)に対するファインプログラム動作の実行中に電源遮断が起きたのかも判定することができない。なぜなら、MG(WL N+1、SU2)に格納されているデータがリード不可データであり、且つ、MG(WL N+2、SU2)がイレーズ状態ではないからである。このため、MG(WL N+1、SU2)は、フォギープログラム状態である可能性もあり、またファインプログラム動作の実行中に電源遮断が起きたプログラム中断状態である可能性もある。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
コントローラ5は、前回の書き込み動作が正常に停止されなかったと判定すると、書き込み先ブロックに割り当てられているブロックを利用不可のブロックとして、ブロック管理テーブル72に登録する。コントローラ5は、登録されたブロックを書き込み先ブロックから解除する。そして、コントローラ5は、フリーブロックリスト73から別のブロックを選択する。コントローラ5は、選択されたブロックを書き込み先ブロックに新たに割り当てる。コントローラ5は、新たに割り当てられたブロックに含まれる記憶位置のうちの先頭の記憶位置であるMG(WL0、SU0)を、次の書き込み先位置に決定する。なお、MG(WL N+2、SU1)に格納されているデータがリード可能データである場合も第1の条件は満たされない。この場合も、前回の書き込み動作は正常に停止されなかったと判定される。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定される別のケースについて説明する。図17は、第1実施形態に係るメモリシステム3において実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第3の例を示す図である。
ここでは、MG(WL N+1、SU2)に対するファインプログラム動作の実行中に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。MG(WL N+1、SU2)に対するファインプログラム動作の実行中に電源遮断が起きた場合、MG(WL N+1、SU2)からは正常にデータを読み出すことができない。このため、コントローラ5は、MG(WL N+1、SU1)を、リード可能データが格納されている最後の記憶位置として特定する。
次いで、コントローラ5は、特定された記憶位置が接続されているワード線に後続するワード線に接続されている4つの記憶位置のうち、特定された記憶位置と同じストリングユニットに含まれている記憶位置が、リード不可データを格納しているか否かを判定する。つまり、コントローラ5は、MG(WL N+2、SU1)がリード不可データを格納しているか否かを判定する。
MG(WL N+2、SU1)がリード不可データを格納している場合、コントローラ5は、MG(WL N+2、SU1)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL N+2、SU2)が、イレーズ状態であるか否かを判定する。
MG(WL N+2、SU2)はフォギープログラム状態であるため、MG(WL N+2、SU2)からは正常にデータを読み出すことができない。また、MG(WL N+2、SU2)は、イレーズページ閾値電圧よりも高い閾値電圧を有する一つ以上のメモリセルを含む。したがって、MG(WL N+2、SU2)は、イレーズ状態ではないと判定される。この結果から、コントローラ5は、MG(WL N+2、SU2)に対するフォギープログラム動作と、MG(WL N+1、SU2)に対するファインプログラム動作とを、一連のプログラム動作として完了することができなかった、と判定する。この場合、コントローラ5は、MG(WL N+2、SU2)がフォギープログラム状態であるのか、MG(WL N+2、SU2)に対するフォギープログラム動作の実行中に電源遮断が起きたのかを判定することができない。
また、コントローラ5は、MG(WL N+1、SU2)がフォギープログラム状態であるのか、MG(WL N+1、SU2)に対するファインプログラム動作の実行中に電源遮断が起きたのかも判定することができない。なぜなら、MG(WL N+1、SU2)に格納されているデータがリード不可データであり、且つ、MG(WL N+2、SU2)がイレーズ状態ではないからである。このため、MG(WL N+1、SU2)は、フォギープログラム状態である可能性もあり、またファインプログラム動作の実行中に電源遮断が起きたプログラム中断状態である可能性もある。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定されるさらに別のケースについて説明する。図18は、第1の実施形態に係るメモリシステム3において実行される、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第4の例を示す図である。
ここでは、MG(WL N+2、SU2)に対するフォギープログラム動作が完了してから、MG(WL N+1、SU2)に対するファインプログラム動作の実行が開始されるまでの間に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。ここでは、コントローラ5は、MG(WL N+1、SU1)を、リード可能データが格納されている最後の記憶位置として特定する。
次いで、コントローラ5は、特定された記憶位置が接続されているワード線に後続するワード線に接続されている4つの記憶位置のうち、特定された記憶位置と同じストリングユニットに含まれている記憶位置が、リード不可データを格納しているか否かを判定する。つまり、コントローラ5は、MG(WL N+2、SU1)がリード不可データを格納しているか否かを判定する。
MG(WL N+2、SU1)がリード不可データを格納している場合、コントローラ5は、MG(WL N+2、SU1)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL N+2、SU2)が、イレーズ状態であるか否かを判定する。
MG(WL N+2、SU2)はフォギープログラム状態であるため、MG(WL N+2、SU2)からは正常にデータを読み出すことができない。また、MG(WL N+2、SU2)は、イレーズページ閾値電圧よりも高い閾値電圧を有する一つ以上のメモリセルを含む。したがって、MG(WL N+2、SU2)は、イレーズ状態ではないと判定される。この結果から、コントローラ5は、MG(WL N+2、SU2)に対するフォギープログラム動作と、MG(WL N+1、SU2)に対するファインプログラム動作とを、一連のプログラム動作として完了することができなかった、と判定する。この場合、コントローラ5は、MG(WL N+2、SU2)がフォギープログラム状態であるのか、MG(WL N+2、SU2)に対するフォギープログラム動作の実行中に電源遮断が起きたのかを判定することができない。
また、コントローラ5は、MG(WL N+1、SU2)がフォギープログラム状態であるのか、MG(WL N+1、SU2)に対するファインプログラム動作の実行中に電源遮断が起きたのかも判定することができない。なぜなら、MG(WL N+1、SU2)に格納されているデータがリード不可データであり、且つ、MG(WL N+2、SU2)がイレーズ状態ではないからである。このため、MG(WL N+1、SU2)は、フォギープログラム状態である可能性もあり、またファインプログラム動作の実行中に電源遮断が起きたプログラム中断状態である可能性もある。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
次に、書き込み先ブロックの先頭のワード線に接続されている4つの記憶位置に対するデータ書き込み動作について説明する。まず、比較例に係るメモリシステムにおいて実行されるブロックの先頭のワード線に接続されている4つの記憶位置に対するデータ書き込み動作について説明する。図19は、比較例に係るメモリシステムにおいて実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係を示す図である。
ここで、MG(WL0、SU2)に対するフォギープログラム動作が完了した後であって、MG(WL0、SU3)に対するフォギープログラム動作が開始されるまでの間に、メモリシステムに対する電源遮断が起きた場合を想定する。
比較例に係るメモリシステムのコントローラは、ワード線WL0に接続された4つの記憶位置のうちの一つの記憶位置に書き込むべきデータが準備される度に、フォギープログラム動作を使用して、ワード線WL0に接続された一つの記憶位置にこのデータを書き込む。したがって、ワード線WL0に接続された4つの記憶位置のいずれに対してもファインプログラム動作が完了していない状態でメモリシステムの電源遮断が起こり得る。
図19のケースでは、メモリシステムの再起動後、コントローラは、MG(WL0、SU2)が、フォギープログラム状態、または、フォギープログラム動作の実行中に電源遮断が起きたプログラム中断状態、のいずれの状態であるかを判定することができない。
そこで、第1実施形態に係るメモリシステム3では、書き込み先ブロックの先頭のワード線に接続されている4つの記憶位置に対するフォギープログラム動作を、最初のファインプログラム動作が実行可能になったことに応じて開始する。図20は、第1実施形態に係るメモリシステム3において実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第1の例を示す図である。
コントローラ5は、先頭のワード線であるワード線WL0に接続されている4つの記憶位置(MG(WL0、SU0)~MG(WL0、SU3))に対するフォギープログラム動作と、ワード線WL1に接続されており、且つ、ストリングユニットSU0に含まれている記憶位置(MG(WL1、SU0))に対するフォギープログラム動作と、MG(WL0、SU0)に対するファインプログラム動作と、を一連のプログラム動作として実行する。つまり、コントローラ5は、MG(WL0、SU0)~MG(WL0、SU3)に書き込むべきデータと、MG(WL1、SU0)に書き込むべきデータと、が準備されるまで待つ。コントローラ5は、例えば、これらのデータの全てがライトバッファに格納されるのを待つ。これらデータの全てが準備されたことに応じ、コントローラ5は、MG(WL0、SU0)~MG(WL0、SU3)に対するフォギープログラム動作と、MG(WL1、SU0)に対するフォギープログラム動作と、MG(WL0、SU0)に対するファインプログラム動作とを実行する。
これにより、コントローラ5は、異常電源遮断が起こらない限り、MG(WL0、SU0)に対するファインプログラム動作を完了することができる。MG(WL0、SU0)に格納されているデータがリード可能データである場合、コントローラ5は、図15で説明した動作と同じ手順で、書き込み先ブロックに対する異常電源遮断判定処理を実行することができる。メモリシステム3が再起動した際に、MG(WL0、SU0)に格納されているデータがリード不可データであり、且つ、このMG(WL0、SU0)がイレーズ状態ではなかった場合には、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定することができる。
以下、具体的に説明する。図20では、MG(WL0、SU0)に対するファインプログラム動作が完了した後に、メモリシステム3に対する電力の供給が異常電源遮断により遮断された場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。ここでは、コントローラ5は、MG(WL0、SU0)を、リード可能データが格納されている最後の記憶位置として特定する。
次いで、コントローラ5は、特定された記憶位置が接続されているワード線に後続するワード線に接続されている4つの記憶位置のうち、特定された記憶位置と同じストリングユニットに含まれている記憶位置が、リード不可データを格納しているか否かを判定する。つまり、ここでは、コントローラ5は、MG(WL1、SU0)がリード不可データを格納しているか否かを判定する。
MG(WL1、SU0)がリード不可データを格納している場合、コントローラ5は、MG(WL1、SU0)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL1、SU1)がイレーズ状態であるか否かを判定する。
リード可能データが格納されている最後の記憶位置がMG(WL0、SU0)であるので、MG(WL1、SU0)に対するフォギープログラム動作は完了している。したがって、MG(WL1、SU0)がリード不可データを格納しており、且つ、MG(WL1、SU1)がイレーズ状態であれば、コントローラ5は、MG(WL1、SU0)に対するフォギープログラム動作が完了している、と判定できる。
つまり、コントローラ5は、MG(WL1、SU0)がリード不可データを格納しており、且つ、MG(WL1、SU1)がイレーズ状態である場合、MG(WL1、SU0)は、フォギープログラム状態である、と判定できる。また、MG(WL1、SU1)がイレーズ状態であるので、MG(WL0、SU1)に対するファイン書き込み動作は開始されていない。よって、コントローラ5は、MG(WL0、SU1)も、フォギープログラム状態である、と判定できる。
MG(WL1、SU0)がリード不可データを格納しており、且つ、MG(WL1、SU1)がイレーズ状態である場合、第1の条件が満たされる。したがって、この場合には、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止された、つまり、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在していないと判定する。そして、コントローラ5は、イレーズ状態であると判定されたこのMG(WL1、SU1)を次の書き込み先位置に決定する。
つまり、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されたと判定すると、書き込み先ブロックとして割り当てられているブロックに対するデータ書き込み動作を続行し、MG(WL1、SU1)を次のフォギープログラム動作が実行されるべき記憶位置に決定する。
第1の条件が満たされなかった場合には、コントローラ5は、フォギープログラム動作またはファインプログラム動作の実行中に電源遮断が起きた記憶位置が存在する、つまり、メモリシステム3の前回の書き込み動作が正常に停止されなかった、と判定する。例えば、MG(WL1、SU0)がリード不可データを格納しているが、MG(WL1、SU1)がイレーズ状態ではなかった場合に、コントローラ5は、前回の書き込み動作が正常に停止されなかった、と判定する。
なお、コントローラ5は、MG(WL1、SU0)が、イレーズ状態ではなく、リード不可データを格納しており、且つ、MG(WL1、SU1)がイレーズ状態である、という条件が満たされているか否かを判定し、満たされている場合に、メモリシステム3の前回の書き込み動作が正常に停止された、と判定してもよい。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定されるケースについて説明する。図21は、第1実施形態に係るメモリシステム3において実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第2の例を示す図である。
ここでは、MG(WL1、SU0)に対するフォギープログラム動作の実行中に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。図21のケースでは、どの記憶位置もリード可能データを格納していない。よって、コントローラ5は、リード可能データが格納されている記憶位置、つまり、ファインプログラム状態の記憶位置は存在しないと判定する。したがって、コントローラ5は、MG(WL0、SU0)~MG(WL0、SU3)に対するフォギープログラム動作と、MG(WL1、SU0)に対するフォギープログラム動作と、MG(WL0、SU0)に対するファインプログラム動作とが、一連のプログラム動作として完了することができなかった、と判定する。この場合、コントローラ5は、MG(WL1、SU0)がフォギープログラム状態であるのか、MG(WL1、SU0)に対するフォギープログラム動作の実行中に電源遮断が起きたのかを判定することができない。
また、コントローラ5は、MG(WL0、SU0)がフォギープログラム状態であるのか、MG(WL0、SU0)に対するファインプログラム動作の実行中に電源遮断が起きたのかも判定することができない。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
コントローラ5は、前回の書き込み動作が正常に停止されなかったと判定すると、書き込み先ブロックに割り当てられているブロックを利用不可のブロックとして、ブロック管理テーブル72に登録する。コントローラ5は、登録されたブロックを書き込み先ブロックから解除する。そして、コントローラ5は、フリーブロックリスト73から別のブロックを選択する。コントローラ5は、選択されたブロックを書き込み先ブロックとして新たに割り当てる。コントローラ5は、新たに割り当てられたブロックに含まれる記憶位置のうちの先頭の記憶位置であるMG(WL0、SU0)を、次の書き込み先位置に決定する。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定される別のケースについて説明する。図22は、第1実施形態に係るメモリシステム3において実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第3の例を示す図である。
ここでは、MG(WL0、SU0)に対するファインプログラム動作の実行中に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。図22のケースでは、どの記憶位置もリード可能データを格納していない。よって、コントローラ5は、リード可能データが格納されている記憶位置、つまり、ファインプログラム状態の記憶位置は存在しないと判定する。したがって、コントローラ5は、MG(WL0、SU0)~MG(WL0、SU3)に対するフォギープログラム動作と、MG(WL1、SU0)に対するフォギープログラム動作と、MG(WL0、SU0)に対するファインプログラム動作とが、一連のプログラム動作として完了することができなかった、と判定する。
この場合、コントローラ5は、MG(WL0、SU0)がフォギープログラム状態であるのか、MG(WL0、SU0)に対するファインプログラム動作の実行中に電源遮断が起きたのかを判定することができない。また、コントローラ5は、MG(WL1、SU0)がフォギープログラム状態であるのか、MG(WL1、SU0)に対するフォギープログラム動作の実行中に電源遮断が起きたのかも判定することができない。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定されるさらに別のケースについて説明する。図23は、第1実施形態に係るメモリシステム3において実行される、書き込み先ブロックの先頭ワード線に対するフォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第4の例を示す図である。
ここでは、MG(WL1、SU0)に対するフォギープログラム動作が完了してから、MG(WL0、SU0)に対するファインプログラム動作の実行が開始されるまでの間に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。図23のケースでは、どの記憶位置もリード可能データを格納していない。よって、コントローラ5は、リード可能データが格納されている記憶位置、つまり、ファインプログラム状態の記憶位置は存在しないと判定する。したがって、コントローラ5は、MG(WL0、SU0)~MG(WL0、SU3)に対するフォギープログラム動作と、MG(WL1、SU0)に対するフォギープログラム動作と、MG(WL0、SU0)に対するファインプログラム動作とが、一連のプログラム動作として完了することができなかった、と判定する。
この場合、コントローラ5は、MG(WL1、SU0)がフォギープログラム状態であるのか、MG(WL1、SU0)に対するフォギープログラム動作の実行中に電源遮断が起きたのかを判定することができない。また、コントローラ5は、MG(WL0、SU0)がフォギープログラム状態であるのか、MG(WL0、SU0)に対するファインプログラム動作の実行中に電源遮断が起きたのかも判定することができない。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
図20~図23では、MG(WL1、SU0)に対するフォギープログラム動作が完了した後に、MG(WL0、SU0)に対するファインプログラム動作が実行可能になる場合について説明したが、他のプログラム順序でフォギー・ファインプログラム動作が実行されてもよい。例えば、MG(WL0、SU0)に対するファインプログラム動作は、MG(WL0、SU1)に対するフォギープログラム動作が完了した後に、実行可能になってもよい。この場合、MG(WL0、SU0)に対するフォギープログラム動作は、MG(WL0、SU0)、およびMG(WL0、SU1)に書き込まれるべきデータが準備されたときに、開始される。
次に、各ブロックに含まれるストリングユニットの数が1つである場合について説明する。図24は、第1実施形態に係るメモリシステム3において実行される、各ブロックに含まれるストリングユニットSUが1つである場合の、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第1の例を示す図である。以下では、あるワード線WLxに接続されている記憶位置を、MG(WLx)と称する。
各ブロックに含まれるストリングユニットSUが1つである場合、コントローラ5は、MG(WL0)に対するフォギープログラム動作、MG(WL1)に対するフォギープログラム動作、MG(WL0)に対するファインプログラム動作、MG(WL2)に対するフォギープログラム動作、MG(WL1)に対するファインプログラム動作、という順序で、データ書き込み動作を実行する。
ここで、コントローラ5は、フォギープログラム動作と、このフォギープログラム動作の完了によって実行可能になるファインプログラム動作とを一連のプログラム動作として実行する。そのため、コントローラ5は、MG(WL1)に対するフォギープログラム動作と、MG(WL0)に対するファインプログラム動作とを、一連のプログラム動作として実行する。
以下、具体的に説明する。図24では、MG(WL6)に対するファインプログラム動作が完了した後に、メモリシステム3に対する電力の供給が異常電源遮断により遮断された場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。ここでは、コントローラ5は、MG(WL6)を、リード可能データが格納されている最後の記憶位置として特定する。
次いで、コントローラ5は、特定された記憶位置が接続されているワード線に後続するワード線に接続されている記憶位置のうち、特定された記憶位置と同じストリングユニットに含まれている記憶位置が、リード不可データを格納しているか否かを判定する。ここでは、ストリングユニットが一つしかないため、コントローラ5は、単に後続するワード線に接続されている記憶位置を参照する。すなわち、コントローラ5は、MG(WL7)がリード不可データを格納しているか否かを判定する。
MG(WL7)がリード不可データを格納している場合、コントローラ5は、MG(WL7)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL8)がイレーズ状態であるか否かを判定する。
リード可能データが格納されている最後の記憶位置が、MG(WL6)であるので、MG(WL7)に対するフォギープログラム動作は完了している。したがって、MG(WL7)がリード不可データを格納しており、且つ、MG(WL8)がイレーズ状態であれば、コントローラ5は、MG(WL7)に対するフォギープログラム動作が完了している、と判定できる。
MG(WL7)がリード不可データを格納しており、且つ、MG(WL8)がイレーズ状態である場合、第1の条件が満たされる。したがって、コントローラ5は、メモリシステム3の前回の書き込み動作は正常に停止された、つまり、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在していないと判定する。そして、コントローラ5は、このイレーズ状態であると判定されたこのMG(WL8)を次の書き込み先位置に決定する。
第1の条件が満たされなかった場合には、コントローラ5は、フォギープログラム動作またはファインプログラム動作の実行中に電源遮断が起きた記憶位置が存在する、つまり、メモリシステム3の前回の書き込み動作が正常に停止されなかった、と判定する。例えば、MG(WL7)がリード不可データを格納しているが、MG(WL8)がイレーズ状態ではなかった場合に、コントローラ5は、前回の書き込み動作が正常に停止されなかった、と判定する。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定されるケースについて説明する。図25は、第1実施形態に係るメモリシステム3において実行される、各ブロックに含まれるストリングユニットが1つである場合の、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第2の例を示す図である。
ここでは、MG(WL7)に対するフォギープログラム動作の実行中に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。ここでは、コントローラ5は、MG(WL5)を、リード可能データが格納されている最後の記憶位置として特定する。
次いで、特定された記憶位置が接続されているワード線に後続するワード線に接続されている記憶位置が、リード不可データを格納しているか否かを判定する。つまり、コントローラ5は、MG(WL6)がリード不可データを格納しているか否かを判定する。
MG(WL6)が、リード不可データを格納している場合、コントローラ5は、MG(WL6)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL7)がイレーズ状態であるか否かを判定する。
MG(WL7)に対するフォギープログラム動作の実行中に電源遮断が起きた場合、コントローラ5は、MG(WL7)から正常にデータを読み出すことができない。また、MG(WL7)は、イレーズページ閾値電圧よりも高い閾値電圧を有する一つ以上のメモリセルを含む。したがって、MG(WL7)は、イレーズ状態ではないと判定される。この結果から、コントローラ5は、MG(WL7)に対するフォギープログラム動作と、MG(WL6)に対するファインプログラム動作とを、一連のプログラム動作として完了することができなかった、と判定する。この場合、コントローラ5は、MG(WL7)がフォギープログラム状態であるのか、MG(WL7)に対するフォギープログラム動作の実行中に電源遮断が起きたのかを判定することができない。
また、コントローラ5は、MG(WL6)がフォギープログラム状態であるのか、MG(WL6)に対するファインプログラム動作の実行中に電源遮断が起きたのかも判定することができない。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
コントローラ5は、前回書き込み動作が正常に停止されなかったと判定すると、書き込み先ブロックに割り当てられているブロックを利用不可のブロックとして、ブロック管理テーブル72に登録する。コントローラ5は、登録されたブロックを書き込み先ブロックから解除する。そして、コントローラ5は、フリーブロックリスト73から別のブロックを選択する。コントローラ5は、選択された別のブロックを書き込み先ブロックに新たに割り当てる。コントローラ5は、新たに割り当てられた別のブロックに含まれる記憶位置のうちの先頭の記憶位置であるMG(WL0)を、次の書き込み先位置に決定する。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定される別のケースについて説明する。図26は、第1実施形態に係るメモリシステム3において実行される、各ブロックに含まれるストリングユニットが1である場合の、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第3の例を示す図である。
ここでは、MG(WL6)に対するファインプログラム動作の実行中に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。MG(WL6)に対するファインプログラム動作の実行中に電源遮断が起きた場合、MG(WL6)からは正常にデータを読み出すことができない。このため、コントローラ5は、MG(WL5)を、リード可能データが格納されている最後の記憶位置として特定する。
次いで、コントローラ5は、特定された記憶位置が接続されているワード線に後続するワード線に接続されている記憶位置が、リード不可データを格納しているか否かを判定する。つまり、コントローラ5は、MG(WL6)がリード不可データを格納しているか否かを判定する。
MG(WL6)がリード不可データを格納している場合、コントローラ5は、MG(WL6)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL7)が、イレーズ状態であるか否かを判定する。
MG(WL7)は、フォギープログラム状態であるため、MG(WL7)からは正常にデータを読み出すことができない。また、MG(WL7)は、イレーズページ閾値電圧よりも高い閾値電圧を有する一つ以上のメモリセルを含む。したがって、MG(WL7)は、イレーズ状態ではないと判定される。この結果から、コントローラ5は、MG(WL7)に対するフォギープログラム動作と、MG(WL6)に対するファインプログラム動作とを、一連のプログラム動作として完了することができなかったと、判定する。この場合、コントローラ5は、MG(WL7)がフォギープログラム状態であるのか、MG(WL7)に対するフォギープログラム動作の実行中に電源遮断が起きたのかを判定することができない。
また、コントローラ5は、MG(WL6)がフォギープログラム状態であるのか、MG(WL6)に対するファインプログラム動作の実行中に電源遮断が起きたのかも判定することができない。なぜなら、MG(WL6)に格納されているデータがリード不可データであり、且つ、MG(WL7)がイレーズ状態ではないからである。このため、MG(WL6)は、フォギープログラム状態である可能性もあり、またファインプログラム動作の実行中に電源遮断が起きたプログラム中断状態である可能性もある。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
次に、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定されるさらに別のケースについて説明する。図27は、第1実施形態に係るメモリシステム3において実行される、各ブロックに含まれるストリングユニットが1である場合の、フォギー・ファインプログラム動作と異常電源遮断判定処理との関係の第4の例を示す図である。
ここでは、MG(WL7)に対するフォギープログラム動作が完了してから、MG(WL6)に対するファインプログラム動作の実行が開始されるまでの間に電源遮断が起きた場合を想定する。
メモリシステム3に対する電力の供給が遮断された後に、メモリシステム3が再起動すると、コントローラ5は、図15で説明した手順と同じ手順で、リード可能データが格納されている最後の記憶位置を特定する。ここでは、コントローラ5は、MG(WL5)を、リード可能データが格納されている最後の記憶位置として特定する。
次いで、コントローラ5は、特定された記憶位置が接続されているワード線に後続するワード線に接続されている記憶位置が、リード不可データを格納しているか否かを判定する。つまり、コントローラ5は、MG(WL6)がリード不可データを格納しているか否かを判定する。
MG(WL6)がリード不可データを格納している場合、コントローラ5は、MG(WL6)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL7)が、イレーズ状態であるか否かを判定する。
MG(WL7)は、フォギープログラム状態であるであるため、MG(WL7)からは正常にデータを読み出すことができない。また、MG(WL7)は、イレーズページ閾値電圧よりも高い閾値電圧を有する一つ以上のメモリセルを含む。したがって、MG(WL7)は、イレーズ状態ではないと判定される。この結果から、コントローラ5は、MG(WL7)に対するフォギープログラム動作と、MG(WL6)に対するファインプログラム動作とを、一連のプログラム動作として完了することができなかったと、判定する。この場合、コントローラ5は、MG(WL7)がフォギープログラム状態であるのか、MG(WL7)に対するフォギープログラム動作の実行中に電源遮断が起きたのかを判定することができない。
また、MG(WL6)がフォギープログラム状態であるのか、MG(WL6)に対するファインプログラム動作の実行中に電源遮断が起きたのかも判定することができない。なぜなら、MG(WL6)に格納されているデータがリード不可データであり、且つ、MG(WL7)がイレーズ状態ではないからである。このため、MG(WL6)は、フォギープログラム状態である可能性もあり、またファインプログラム動作の実行中に電源遮断が起きたプログラム中断状態である可能性もある。
このように、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性がある場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。
次に、異常電源遮断判定処理の手順について説明する。図28は、第1実施形態に係るメモリシステム3において実行される異常電源遮断判定処理の手順を示すフローチャートである。コントローラ5は、メモリシステム3に対する電力の供給が遮断された後、メモリシステム3が再起動すると、つまり、メモリシステム3に対する電力供給が再開されると、異常電源遮断判定処理を実行する。異常電源遮断判定処理は、メモリシステム3の前回の書き込み動作が正常停止されたか否かを判定して、次の書き込み先位置を適切に決定する処理である。
メモリシステム3に対する電力の供給が再開された場合、コントローラ5は、書き込み先位置を示す情報を取得する(ステップS102)。コントローラ5は、書き込み先位置を示す情報をNANDメモリ6から読み出す。書き込み先位置を示す情報は、NANDメモリ6に定期的に保存される。したがって、NANDメモリ6から取得される情報によって書き込み先位置として示される記憶位置は、前回の電源遮断のときに書き込み先ブロックに割り当てられていたブロックに含まれる記憶位置のうちの、既にデータ書き込み動作が完了している記憶位置である。
コントローラ5は、ステップS102で取得された情報によって示される記憶位置からデータリード動作を開始する(ステップS103)。コントローラ5は、ステップS102で取得された情報によって示される記憶位置に対するデータリード動作を実行し、ECC回路55によるエラー訂正の結果(ECCパスまたはECCエラー)を確認する。これにより、コントローラ5は、この記憶位置に格納されているデータが読み出し可能データであるか否かを判定する。この記憶位置に格納されているデータが読み出し可能データである場合、コントローラ5は、この記憶位置に後続する次の記憶位置に対するデータリード動作を実行し、ECC回路55によるエラー訂正の結果を確認する。これにより、コントローラ5は、次の記憶位置に格納されているデータが読み出し可能データであるか否かを判定する。
コントローラ5は、ステップS103でデータリード動作とエラー訂正の結果の確認とを繰り返すことにより、リード可能データが格納されている最後の記憶位置を特定する(ステップS104)。リード可能データが格納されている最後の記憶位置は、書き込み先ブロックに含まれる複数の記憶位置のうちの、最後に読み出し可能になったデータが格納されている記憶位置である。
コントローラ5は、特定された最後の記憶位置(つまり、リード可能データが格納されている最後の記憶位置)が接続されているワード線に後続する次のワード線に接続され、且つ、特定された最後の記憶位置と同じストリングユニットに含まれている記憶位置に格納されているデータが、リード可能データであるか否かを判定する(ステップS105)。
特定された最後の記憶位置が接続されているワード線に後続する次のワード線に接続され、且つ、特定された最後の記憶位置と同じストリングユニットに含まれている記憶位置に格納されているデータがリード可能データでない場合(ステップS105でNo)、コントローラ5による処理はステップS106に進む。この場合、特定された最後の記憶位置が接続されているワード線に後続する次のワード線に接続され、且つ、特定された最後の記憶位置と同じストリングユニットに含まれている記憶位置に格納されているデータは、リード不可データである。
コントローラ5は、このリード不可データが格納されている記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態であるか否かを判定する(ステップS106)。コントローラ5は、このリード不可データが格納されている記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置に対するイレーズページチェックを実行する。コントローラ5は、イレーズページチェックを実行することで、対象の記憶位置に、閾値電圧がイレーズページ閾値電圧以上であるメモリセルが含まれるか否かを判定する。閾値電圧がイレーズページ閾値電圧以上であるメモリセルが含まれない場合、コントローラ5は、対象の記憶位置がイレーズ状態であると判定する。
リード不可データが格納されている記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態である場合(ステップS106でYes)、すなわち、第1の条件が満たされている場合(ステップS105でNo及びステップS106でYes)、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されたと判定する(ステップS107)。コントローラ5は、ステップS104で特定された記憶位置に対するファインプログラム動作が完了された後から、ステップS106でイレーズページチェックが実行された記憶位置に対するフォギープログラム動作が開始されるまでの間に前回の電源遮断が起きたと認識する。このことから、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止された、と判定する。
コントローラ5は、ステップS106でイレーズ状態であることが判定された記憶位置を、次のフォギープログラム動作が実行されるべき次の書き込み先位置に決定する(ステップS108)。つまり、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されたと判定すると、書き込み先ブロックに割り当てられているブロックへの書き込みを継続することを決定する。
ステップS104で特定された最後の記憶位置が接続されているワード線に後続する次のワード線に接続され、且つ、特定された最後の記憶位置と同じストリングユニットに含まれている記憶位置に格納されているデータがリード可能データである場合(ステップS105でYes)、コントローラ5による処理は、ステップS104に戻る。
この場合、第1の条件が満たされていない。且つ、ステップS104において特定された最後の記憶位置が誤っていたと判定される。このため、コントローラ5は、再度、リード可能データが格納されている最後の記憶位置を特定する(ステップS104)。
また、ステップS105でリード不可データが格納されていると判定された記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態でない場合(ステップS106でNo)、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する(ステップS109)。コントローラ5は、ステップS106でイレーズ状態でないと判定された記憶位置に対するフォギープログラム動作が開始されてから、ステップS104で特定された記憶位置に対するファインプログラム動作の次にファインプログラム動作が実行されるべき記憶位置に対するファインプログラム動作が完了するまでの間に、メモリシステム3の前回の電源遮断が起きたと認識する。そのため、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する。この場合、書き込み先ブロックとして割り当てられているブロックには、プログラム中断状態の記憶位置が存在している可能性がある。
この場合、第1の条件が満たされていない。このため、コントローラ5は、書き込み先ブロックに割り当てられているブロックを利用不可のブロックに決定する(ステップS110)。コントローラ5は、このブロックを利用不可のブロックとしてブロック管理テーブル72に登録する。
コントローラ5は、別のブロックを新たな書き込み先ブロックとして割り当てる(ステップS111)。コントローラ5は、フリーブロックリスト73から別のブロックを選択する。そして、コントローラ5は、この選択された別のブロックを書き込み先ブロックに割り当てる。
コントローラ5は、書き込み先ブロックに割り当てられたブロックに含まれる複数の記憶位置のうちの先頭の記憶位置、つまり先頭のワード線に接続されている一つ以上の記憶位置のうちの一つの記憶位置、を次の書き込み先位置に決定する(ステップS112)。
コントローラ5は、基本的には、前回の電源遮断が、電力の供給が突然遮断される異常電源遮断であったのか、あるいはホスト2からのシャットダウン通知を受信した後に実行される電源遮断であったのかに関係なく、電力の供給が再開される度に、異常電源遮断判定処理を実行し得る。
なお、コントローラ5は、前回の電源遮断が異常電源遮断である場合にのみ、電力の供給の再開に応じ、異常電源遮断判定処理を実行してもよい。ホスト2からシャットダウン通知を受信した場合、コントローラ5は、必要なデータをNANDメモリ6に保存する処理を含むシャットダウン準備処理を行う。よって、コントローラ5は、電力の供給の再開に応じ、例えば、シャットダウン準備処理が完了したことを示す情報がNANDメモリ6に保存されているか否かを判定し、シャットダウン準備処理が完了したことを示す情報がNANDメモリ6に保存されていない場合に、前回の電源遮断が異常電源遮断であると判定してもよい。
次に、書き込み先ブロックに対するデータ書き込み動作の手順について説明する。図29は、第1実施形態に係るメモリシステム3において実行される、データ書き込み動作の手順を示すフローチャートである。
コントローラ5は、書き込み先ブロックに書き込まれるべきデータが準備されたか否かを判定する(ステップS21)。例えば、コントローラ5は、書き込まれるべきデータのサイズが書き込み単位のサイズに達したか否かを判定する。書き込み単位のサイズは、書き込み先ブロックの一つの記憶位置(メモリセルグループMG)に書き込むべきデータのサイズである。書き込み先ブロックにQLCモードでデータを書き込む場合、書き込み単位のサイズは、4ページ分のサイズである。
書き込み先ブロックに書き込まれるべきデータが準備されていない場合(ステップS21でNo)、コントローラ5は、書き込み先ブロックに書き込まれるべきデータが準備されるまで待機する。
書き込み先ブロックに書き込まれるべきデータが準備された場合(ステップS21でYes)、コントローラ5は、次の書き込み先の記憶位置が、書き込み先ブロックの先頭のワード線に接続された記憶位置であるか否かを判定する(ステップS22)。
次の書き込み先の記憶位置が、書き込み先ブロックの先頭のワード線に接続された記憶位置でない場合(ステップS22でNo)、コントローラ5は、次の書き込み先の記憶位置に対するフォギープログラム動作を実行する(ステップS23)。
コントローラ5は、ステップS23で実行されたフォギープログラム動作によってファインプログラム動作が実行可能になった記憶位置に対して、ファインプログラム動作を実行する(ステップS24)。
次の書き込み先の記憶位置が、書き込み先ブロックの先頭のワード線に接続された記憶位置である場合(ステップS22でYes)、コントローラ5は、書き込み先ブロックに書き込まれるべきデータの総サイズが、ファインプログラム動作が実行可能になるサイズに達しているか否かを判定する(ステップS25)。例えば、書き込み先ブロックが4つのストリングユニットSUを含む場合、ファインプログラム動作が実行可能になるサイズは、5つの記憶位置(5つのメモリセルグループMG)分のデータサイズである。したがって、書き込み先ブロックにQLCモードでデータを書き込む場合には、ファインプログラム動作が実行可能になるサイズは、20ページ分のサイズである。
書き込み先ブロックに書き込まれるべきデータの総サイズが、ファインプログラム動作が実行可能になるサイズに達していない場合(ステップS25でNo)、コントローラ5は、書き込み先ブロックに書き込まれるべきデータの総サイズが、ファインプログラム動作が実行可能になるサイズに達するまで待つ。この場合、コントローラ5による処理は、ステップS25に戻る。
書き込み先ブロックに書き込まれるべきデータの総サイズが、ファインプログラム動作が実行可能になるサイズに達している場合(ステップS25でYes)、コントローラ5は、ファインプログラム動作が実行可能になるまで、フォギープログラム動作を実行する(ステップS23)。つまり、コントローラ5は、書き込み先ブロックの先頭のワード線に接続された一以上の記憶位置に対するフォギープログラム動作と、先頭のワード線に後続するワード線に接続された一つの記憶位置に対するフォギープログラム動作とを実行する。
そして、コントローラ5は、ステップS23で実行されたフォギープログラム動作によってファインプログラム動作が実行可能になった記憶位置に対するファインプログラム動作を実行する(ステップS24)。
このように、第1実施形態では、フォギープログラム動作と、このフォギープログラム動作の完了によって実行可能になるファインプログラム動作とを、一連のプログラム動作として実行するという規則を利用して、コントローラ5が、前回の書き込み動作が正常に停止されたか否かを判定でき、これによって次の書き込み先位置を適切に決定できる。
次に、第1実施形態において、一連のプログラム動作におけるファインプログラム動作が実行されるべき記憶位置が、フォギープログラム状態であるのか、あるいはファインプログラム動作の実行中に電源遮断が起きたプログラム中断状態であるのか、を判定する方法を説明する。
例えば、図18のケースにおいては、MG(WL N+1、SU2)は、フォギープログラム状態であるのか、ファインプログラム動作の実行中に電源遮断が起きたプログラム中断状態であるのかを判定できない記憶位置である。
MG(WL N+2、SU2)に対するフォギープログラム動作と、MG(WL N+1、SU2)に対するファインプログラム動作とを、一連のプログラム動作として完了することができなかったと判定した場合、コントローラ5は、以下の動作を実行してもよい。
コントローラ5は、MG(WL N+1、SU2)に対するファインプログラム動作を実行する。MG(WL N+1、SU2)に対するファインプログラム動作が完了すると、コントローラ5は、MG(WL N+1、SU2)から正常にデータを読み出すことができるか否かを判定する。MG(WL N+1、SU2)から正常にデータを読み出すことができた場合、コントローラ5は、前回の書き込み動作が停止された時にMG(WL N+1、SU2)はフォギープログラム状態であったと判定できる。
次に、第1実施形態において、たとえ書き込み動作の実行中に異常電源遮断が起きたとしても、一連のプログラム動作を完了できるようにするための対策を説明する。
図1に破線で示すように、メモリシステム3は、キャパシタ81をさらに含んでもよい。キャパシタ81は、電力を蓄えることができる素子である。キャパシタ81は、電源回路8に電気的に接続される。ホスト2から供給される電源電圧の値が異常電源遮断によって低下した場合、電源回路8は、キャパシタ81に蓄えられている電力をメモリシステム3の各構成要素に供給する。
異常電源遮断が起きた場合、コントローラ5は、キャパシタ81からの電力を使用して、少なくとも、実行中の一連のプログラム動作が完了されるまで、書き込み動作を継続する。例えば、図16のケースでは、MG(WL N+2、SU2)に対するフォギープログラム動作の実行中に異常電源遮断が起きる。この場合、コントローラ5は、キャパシタ81からの電力を使用して、MG(WL N+2、SU2)に対するフォギープログラム動作を継続する。MG(WL N+2、SU2)に対するフォギープログラム動作が完了すると、コントローラ5は、キャパシタ81からの電力を使用して、MG(WL N+1、SU2)に対するファインプログラム動作を実行する。これによって、一連のプログラム動作が完了する。
また、例えば、図17のケースでは、MG(WL N+1、SU2)に対するファインプログラム動作の実行中に異常電源遮断が起きる。この場合、コントローラ5は、キャパシタ81からの電力を使用して、MG(WL N+1、SU2)に対するファインプログラム動作を継続する。これによって、一連のプログラム動作が完了する。
また、例えば、図18のケースでは、MG(WL N+2、SU2)に対するフォギープログラム動作の完了から、MG(WL N+1、SU2)に対するファインプログラム動作の開始までの間に、異常電源遮断が起きる。この場合、コントローラ5は、キャパシタ81からの電力を使用して、MG(WL N+1、SU2)に対するファインプログラム動作を実行する。これによって、一連のプログラム動作が完了する。
次に、第1実施形態において、キャパシタ81からの電力を使用して、書き込み動作が中断された記憶位置を示す情報を、NANDメモリ6に書き込む動作を説明する。
例えば、図16のケースでは、MG(WL N+2、SU2)に対するフォギープログラム動作の実行中に異常電源遮断が起きる。この場合、コントローラ5は、キャパシタ81からの電力を使用して、書き込みが中断されたMG(WL N+2、SU2)を示す情報をNANDメモリ6に書き込む。
また、例えば、図17のケースでは、MG(WL N+1、SU2)に対するファインプログラム動作の実行中に異常電源遮断が起きる。この場合、コントローラ5は、キャパシタ81からの電力を使用して、書き込みが中断されたMG(WL N+1、SU2)を示す情報をNANDメモリ6に書き込む。
また、例えば、図18のケースでは、MG(WL N+2、SU2)に対するフォギープログラム動作の完了から、MG(WL N+1、SU2)に対するファインプログラム動作の開始までの間に、異常電源遮断が起きる。この場合、コントローラ5は、MG(WL N+2、SU2)に対するフォギープログラム動作とMG(WL N+1、SU2)に対するファインプログラム動作の間で書き込み動作が中断されたことを示す情報をNANDメモリ6に書き込む。
このように、書き込み動作が中断された記憶位置に関する情報をNANDメモリ6に書き込むことにより、前回の書き込み動作が正常に停止されたか否かを容易に判別できる。
(第2実施形態)
第2実施形態について説明する。図30は、第2実施形態に係るメモリシステム3を含む情報処理システム1の構成例を示すブロック図である。
第2実施形態に係るメモリシステム3に含まれるほとんど全ての構成要素は、図1で説明した第1実施形態に係るメモリシステム3と同じである。そのため、第1実施形態に係るメモリシステム3と異なる点について注目して説明する。
第2実施形態に係るメモリシステム3では、コントローラ5は、フォギープログラム管理情報76をさらに管理する。フォギープログラム管理情報76は、例えば、DRAM7に格納される。
フォギープログラム管理情報76は、書き込み先ブロックに割り当てられているブロックに含まれる複数の記憶位置のうち、フォギープログラム状態の記憶位置を示す情報である。具体的には、フォギープログラム管理情報76は、フォギープログラム動作が完了し、且つ、ファインプログラム動作が開始されていない各記憶位置を示す。
次に、フォギープログラム動作の完了に応じて、フォギープログラム管理情報76を更新する動作について説明する。図31は、第2実施形態に係るメモリシステム3において実行される、フォギープログラム動作について示す図である。
図31に初期状態として示されているように、ワード線WL Nに接続されたMG(WL N、SU0)は、ファインプログラム状態である。ワード線WL Nに接続された他の3つのMG(WL N、SU1)、(WL N、SU2)、(WL N、SU3)は、フォギープログラム状態である。また、ワード線WL N+1に接続されたMG(WL N+1、SU0)も、フォギープログラム状態である。したがって、図31に初期状態として示されているように、フォギープログラム管理情報76には、MG(WL N、SU1)~MG(WL N、SU3)を示す情報と、MG(WL N+1、SU0)を示す情報とが管理されている。
ステップ1:コントローラ5は、例えば、MG(WL N+1、SU1)に対するフォギープログラム動作を実行する。
ステップ2:フォギープログラム動作が完了したことに応じて、コントローラ5は、DRAM7に格納されているフォギープログラム管理情報76を更新する。コントローラ5は、フォギープログラム動作が完了した記憶位置を示す情報、つまり、MG(WL N+1、SU1)を示す情報を、フォギープログラム管理情報76に追加する。
ステップ3:コントローラ5は、更新されたフォギープログラム管理情報76をNANDメモリ6に書き込む。
このように、コントローラ5は、フォギープログラム動作の完了に応じて、フォギープログラム管理情報76を更新する。そして、コントローラ5は、更新された最新のフォギープログラム管理情報76をNANDメモリ6に保存する。
このように、フォギープログラム動作の完了後に、フォギープログラム管理情報76が更新され、NANDメモリ6に書き込まれる。このため、例えば、MG(WL N+1、SU1)に対するフォギープログラム動作の実行中に電源遮断が起きたならば、このMG(WL N+1、SU1)を示す情報は、フォギープログラム管理情報76に登録されない。したがって、メモリシステム3への電力の供給が再開された時に、コントローラ5は、NANDメモリ6からフォギープログラム管理情報76を読み出すことにより、電源遮断時に書き込み先ブロックに割り当てられていたブロックにおけるフォギープログラム状態の各記憶位置を正しく判定することができる。そして、コントローラ5は、リード不可データを格納しているMG(WL N+1、SU1)がプログラム中断状態であると判定することができる。このため、コントローラ5は、前回の書き込み動作が正常に停止されなかったと判定することができる。
次に、ファインプログラム動作を開始する前にフォギープログラム管理情報76を更新する動作について説明する。図32は、第2実施形態に係るメモリシステム3において実行される、ファインプログラム動作について示す図である。ここでは、図31に示した状態の後、MG(WL N、SU1)に対するファインプログラム動作を開始する場合を想定する。
ステップ1:MG(WL N、SU1)に対するファインプログラム動作を開始する前に、コントローラ5は、フォギープログラム管理情報76を更新する。つまり、コントローラ5は、次にファインプログラム動作が実行されるMG(WL N、SU1)を示す情報をフォギープログラム管理情報76から削除する。
ステップ2:コントローラ5は、更新されたフォギープログラム管理情報76をNANDメモリ6に書き込む。
ステップ3:コントローラ5は、MG(WL N、SU1)に対するファインプログラム動作を実行する。
このように、コントローラ5は、ある記憶位置に対するファインプログラム動作を開始する前に、この記憶位置を示す情報がフォギープログラム管理情報76から削除されるようにフォギープログラム管理情報76を更新する。そして、コントローラ5は、更新された最新のフォギープログラム管理情報76をNANDメモリ6に保存する。
MG(WL N、SU1)に対するファインプログラム動作の実行中に電源遮断が起きた場合、このMG(WL N、SU1)は、フォギープログラム状態ではなく、プログラム中断状態になる。このMG(WL N、SU1)は、フォギープログラム管理情報76から既に削除されている。したがって、たとえファインプログラム動作の実行中に電源遮断が起きた場合であっても、メモリシステム3への電力の供給が再開された時に、コントローラ5は、NANDメモリ6からフォギープログラム管理情報76を読み出すことにより、電源遮断時に書き込み先ブロックに割り当てられていたブロックにおけるフォギープログラム状態の各記憶位置を正しく判定することができる。
よって、コントローラ5は、フォギープログラム管理情報76に基づいて、リード不可データが格納されている各記憶位置がフォギープログラム状態であるのか、プログラム中断状態であるのかを正しく判定できる。よって、コントローラ5は、電源遮断時に書き込み先ブロックに割り当てられていたブロックに、プログラム中断状態の記憶位置が存在するか否かを正しく判定できる。ブロックにプログラム中断状態の記憶位置が存在しないと判定した場合には、コントローラ5は、このブロックに対するデータ書き込み動作を続行する。
具体的には、メモリシステム3への電力の供給が再開された時に、コントローラ5は、以下の異常電源遮断判定処理を実行し得る。
コントローラ5は、NANDメモリ6からフォギープログラム管理情報76を読み出す。コントローラ5は、フォギープログラム管理情報76を参照して、書き込み先ブロックのフォギープログラムの状況を確認する。ここで、図32に示すフォギープログラム管理情報76がNANDメモリ6に保存されている場合を想定する。図32に示すフォギープログラム管理情報76においては、MG(WL N、SU2)、MG(WL N、SU3)、MG(WL N+1、SU0)、およびMG(WL N+1、SU1)が、フォギープログラム状態の記憶位置である。また、MG(WL N、SU2)が、フォギープログラム状態を有する最も古い記憶位置である。そして、MG(WL N+1、SU1)が、フォギープログラム状態を有する最も新しい記憶位置である。
コントローラ5は、(2-A)フォギープログラム管理情報76によって示されるフォギープログラム状態を有する最も古い記憶位置(MG(WL N、SU2))に対するフォギープログラム動作よりも一つ前にフォギープログラム動作が実行された記憶位置(MG(WL N、SU1))が読み出し可能データを格納しており、(2-B)フォギープログラム管理情報76によって示される記憶位置(MG(WL N、SU2)、MG(WL N、SU3)、MG(WL N+1、SU0)、およびMG(WL N+1、SU1))の各々がリード不可データを格納しており、且つ、(2-C)フォギープログラム管理情報76によって示されるフォギープログラム状態を有する最も新しい記憶位置(MG(WL N+1、SU1))に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置(MG(WL N+1、SU2))がイレーズ状態である、という第2の条件が満たされるか否かを判定する。
この条件が満たされた場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されたと判定し、MG(WL N+1、SU2)を、次の書き込み先位置に決定する。
この条件が満たされない場合、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されず、書き込み先ブロックにプログラム中断状態の記憶位置が存在すると判定し、新たなブロックを書き込み先ブロックとして割り当てる。
次に、各ブロックに含まれるストリングユニットの数が1つである場合に、フォギープログラム動作の完了に応じてフォギープログラム管理情報76を更新する動作について説明する。図33は、第2実施形態に係るメモリシステム3において実行される、各ブロックに含まれるストリングユニットが1つである場合の、フォギープログラム動作について示す図である。
図33に示す例では、MG(WL0)~MG(WL6)は、ファインプログラム状態である。MG(WL7)は、フォギープログラム状態である。したがって、フォギープログラム管理情報76には、MG(WL7)を示す情報が管理されている。
ステップ1:コントローラ5は、例えば、ワード線WL8に接続されている記憶位置に対するフォギープログラム動作を実行する。
ステップ2:フォギープログラム動作が完了したことに応じて、コントローラ5は、DRAM7に格納されているフォギープログラム管理情報76を更新する。コントローラ5は、フォギープログラム動作が完了した記憶位置を示す情報、つまり、MG(WL8)を示す情報をフォギープログラム管理情報76に追加する。
ステップ3:コントローラ5は、更新されたフォギープログラム管理情報76をNANDメモリ6に書き込む。
次に、各ブロックに含まれるストリングユニットの数が1つである場合に、ファインプログラム動作を開始する前にフォギープログラム管理情報76を更新する動作について説明する。図34は、第2実施形態に係るメモリシステム3において実行される、各ブロックに含まれるストリングユニットが1つである場合の、ファインプログラム動作について示す図である。ここでは、図33に示した状態の後、MG(WL7)に対するファインプログラム動作を開始する場合を想定する。
ステップ1:MG(WL7)に対するファインプログラム動作を開始する前に、コントローラ5は、フォギープログラム管理情報76を更新する。コントローラ5は、次にファインプログラム動作が実行されるMG(WL7)を示す情報をフォギープログラム管理情報76から削除する。
ステップ2:コントローラ5は、更新されたフォギープログラム管理情報76をNANDメモリ6に書き込む。
ステップ3:コントローラ5は、MG(WL7)に対するファインプログラム動作を実行する。
このように、各ブロックに含まれるストリングユニットの数が1つであっても、各ブロックに含まれるストリングユニットの数が2つ以上の場合と同じように、コントローラ5は、フォギープログラム管理情報76の更新およびNANDメモリ6への書き込みを実行する。
次に、フォギープログラム管理情報76を更新する処理について説明する。図35は、第2実施形態に係るメモリシステム3において実行される、フォギープログラム動作の完了に応じてフォギープログラム管理情報76を更新および保存する処理の手順を示すフローチャートである。
まず、コントローラ5は、ある記憶位置に対するフォギープログラム動作が完了したか否かを判定する(ステップS31)。
フォギープログラム動作が完了していない場合(ステップS31でNo)、コントローラ5は、フォギープログラム動作が完了するまで待つ。
フォギープログラム動作が完了した場合(ステップS31でYes)、コントローラ5は、フォギープログラム管理情報76を更新する(ステップS32)。コントローラ5は、フォギープログラム動作が完了することによってフォギープログラム状態になった記憶位置を示す情報をフォギープログラム管理情報76に追加する。
コントローラ5は、ステップS32で更新されたフォギープログラム管理情報76をNANDメモリ6に書き込む(ステップS33)。これにより、更新されたフォギープログラム管理情報76がNANDメモリ6に保存される。更新されたフォギープログラム管理情報76は、例えば、SLCブロックに書き込まれてもよい。
図36は、第2実施形態に係るメモリシステム3において実行される、ファインプログラム動作を開始する前にフォギープログラム管理情報76を更新および保存する処理の手順を示すフローチャートである。
まず、コントローラ5は、いずれかの記憶位置に対するファインプログラム動作が実行可能であるか否かを判定する(ステップS41)。
ファインプログラム動作が実行可能でない場合(ステップS41でNo)、コントローラ5は、ファインプログラム動作が実行可能になるまで待つ。
ファインプログラム動作が実行可能である場合(ステップS41でYes)、コントローラ5は、フォギープログラム管理情報76を更新する(ステップS42)。コントローラ5は、実行可能になったファインプログラム動作が実行されるべき記憶位置を示す情報をフォギープログラム管理情報76から削除する。
コントローラ5は、ステップS42で更新されたフォギープログラム管理情報76をNANDメモリ6に書き込む(ステップS43)。これにより、更新されたフォギープログラム管理情報76がNANDメモリ6に保存される。
そして、コントローラ5は、ファインプログラム動作を実行する(ステップS44)。
次に、異常電源遮断判定処理について説明する。図37は、第2実施形態に係るメモリシステム3において実行される、異常電源遮断判定処理の手順を示すフローチャートである。
メモリシステム3に対する電力の供給が再開された場合、コントローラ5は、フォギープログラム管理情報76をNANDメモリ6から読み出す(ステップS502)。
コントローラ5は、ステップS502で読み出したフォギープログラム管理情報76から、書き込み先ブロックのフォギープログラム状況を取得する(ステップS503)。
コントローラ5は、フォギープログラム管理情報76を参照して、書き込み先ブロックのフォギープログラム状況を確認する(ステップS504)。具体的には、コントローラ5は、フォギープログラム管理情報76から、フォギープログラム状態を有する最も古い記憶位置、およびフォギープログラム状態を有する最も新しい記憶位置を特定する。そして、コントローラ5は、(1)フォギープログラム状態を有する最も古い記憶に対するフォギープログラム動作よりも一つ前にフォギープログラム動作が実行された記憶位置がリード可能データを格納しており、(2)フォギープログラム管理情報76によって示される各記憶位置がリード不可データを格納しており、且つ、(3)フォギープログラム状態を有する最も新しい記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態である、という第2の条件が満たされているか否かを判定する。
第2の条件が満たされている場合(ステップS504でYes)、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止された、つまり、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在していないと判定する(ステップS505)。
コントローラ5は、ステップS502で読み出したフォギープログラム管理情報76に基づいて、次の書き込み先位置を決定する(ステップS506)。フォギープログラム状態を有する最も新しい記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置が、次の書き込み先位置に決定される。
第2の条件が満たされていない場合(ステップS504でNo)、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止されなかったと判定する(ステップS507)。
コントローラ5は、書き込み先ブロックに割り当てられているブロックを利用不可のブロックとしてブロック管理テーブル72に登録する(ステップS508)。
コントローラ5は、別のブロックを新たな書き込み先ブロックとして割り当てる(ステップS509)。コントローラ5は、フリーブロックリスト73から別のブロックを選択し、選択したブロックを書き込み先ブロックとして割り当てる。
コントローラ5は、別のブロックの先頭の記憶位置を次の書き込み先位置に決定する(ステップS510)。
コントローラ5は、基本的には、前回の電源遮断が、電力の供給が突然遮断される異常電源遮断であったのか、あるいはホスト2からのシャットダウン通知を受信した後に実行される電源遮断であったのかに関係なく、電力の供給が再開される度に、異常電源遮断判定処理を実行し得る。
なお、コントローラ5は、前回の電源遮断が異常電源遮断である場合にのみ、電力の供給の再開に応じ、異常電源遮断判定処理を実行してもよい。
このように、第2実施形態に係るメモリシステム3では、NANDメモリ6に書き込まれたフォギープログラム管理情報76を使用して、コントローラ5が、前回の書き込み動作が正常に停止されたか否かを判定でき、これによって次の書き込み先位置を適切に決定できる。
(第3実施形態)
第3実施形態に係るメモリシステム3では、フォギープログラム管理情報76をNANDメモリ6に書き込む回数を低減する構成が採用されている。
具体的には、第3実施形態に係るメモリシステム3では、ホスト2からの通知なしでメモリシステム3に対する電力の供給が断たれるような、異常電源遮断の場合にのみ、フォギープログラム管理情報76がNANDメモリ6に書き込まれる。
まず、第3実施形態に係るメモリシステム3の構成について説明する。図38は、第3実施形態に係るメモリシステム3を含む情報処理システム1の構成例を示す図である。
第3実施形態に係るメモリシステム3に含まれるほとんど全ての構成要素は、図30で説明した第2実施形態に係るメモリシステム3と同じである。そのため、異なる点について注目して説明する。
第3実施形態に係るメモリシステム3は、キャパシタ81をさらに含む。
異常電源遮断が起きた場合、コントローラ5は、キャパシタ81からの電力を使用して、フォギープログラム管理情報76をNANDメモリ6に保存する処理を実行する。
次に、フォギープログラム動作と、フォギープログラム管理情報76をNANDメモリ6に書き込む動作について説明する。図39は、第3実施形態に係るメモリシステム3において実行される、フォギープログラム動作と、フォギープログラム管理情報をNANDメモリ6に保存する処理とを示す図である。
ステップ1:コントローラ5は、例えば、MG(WL N+1、SU1)に対するフォギープログラム動作を実行する。
ステップ2:フォギープログラム動作が完了したことに応じて、コントローラ5は、DRAM7に格納されているフォギープログラム管理情報76を更新する。コントローラ5は、フォギープログラム動作が完了されたMG(WL N+1、SU1)を示す情報をフォギープログラム管理情報76に追加する。
また、第2実施形態と同じく、ある記憶位置に対するファインプログラム動作を開始する前に、コントローラ5は、この記憶位置を示す情報が削除されるように、DRAM7に格納されているフォギープログラム管理情報76を更新する。
コントローラ5は、異常電源遮断が起きたことを検知すると、DRAM7に格納されているフォギープログラム管理情報76をNANDメモリ6に書き込む。このとき、コントローラ5およびNANDメモリ6は、キャパシタ81に蓄えられた電力を使用して動作する。フォギープログラム管理情報76をNANDメモリ6に書き込んだ後、コントローラ5は、電源回路8を制御してメモリシステム3の動作を停止させる。
そして、メモリシステム3に対する電力の供給が再開されると、コントローラ5は、NANDメモリ6からフォギープログラム管理情報76を読み出す。
次に、フォギープログラム管理情報76を管理する処理について説明する。図40は、第3実施形態に係るメモリシステム3において実行される、フォギープログラム管理情報を管理する処理の手順を示すフローチャートである。
まず、コントローラ5は、異常電源遮断が発生したか否かを判定する(ステップS61)。
異常電源遮断が発生した場合(ステップS61でYes)、コントローラ5は、DRAM7に格納されているフォギープログラム管理情報76をNANDメモリ6に書き込む(ステップS62)。
異常電源遮断が発生していない場合(ステップS61でNo)、コントローラ5は、フォギープログラム動作が実行可能か否かを判定する(ステップS63)。
フォギープログラム動作が実行可能でない場合(ステップS63でNo)、コントローラ5は、フォギープログラム動作が実行可能になるか、あるいは異常電源遮断が発生するまで待つ。
フォギープログラム動作が実行可能である場合(ステップS63でYes)、コントローラ5は、フォギープログラム動作を実行する(ステップS64)。
そして、フォギープログラム動作の完了に応じ、コントローラ5は、フォギープログラム管理情報76を更新する(ステップS65)。コントローラ5は、フォギープログラム動作が完了した記憶位置を示す情報をフォギープログラム管理情報76に追加する。
コントローラ5は、ファインプログラム動作が実行可能であるか否かを判定する(ステップS66)。
ファインプログラム動作が実行可能でない場合(ステップS66でNo)、コントローラ5は、ファインプログラム動作が実行可能になるまで待つ。
ファインプログラム動作が実行可能である場合(ステップS66でYes)、コントローラ5は、ファインプログラム動作を開始する前に、フォギープログラム管理情報76を更新する(ステップS67)。コントローラ5は、ファインプログラム動作が実行されるべき記憶位置を示す情報をフォギープログラム管理情報76から削除する。
コントローラ5は、ファインプログラム動作を実行する(ステップS68)。そして、コントローラ5による処理は、ステップS61に戻る。
これにより、第3実施形態に係るメモリシステム3では、第2実施形態と同じ方法で、コントローラ5は、前回の書き込み動作が正常に停止されたか否かを判定することができる。
さらに、キャパシタ81を使用することによって、異常電源遮断が発生したときにのみフォギープログラム管理情報76をNANDメモリ6に書き込むことにより、フォギープログラム管理情報76が更新される度にフォギープログラム管理情報76をNANDメモリ6に書き込む場合に比し、フォギープログラム管理情報76をNANDメモリ6に書き込む動作が実行される頻度を減らすことができる。そのため、ライトアンプリフィケーション、およびI/O性能に対する影響を抑えることができる。
(第4実施形態)
第4実施形態に係るメモリシステム3の構成要素は、図38で説明した第3実施形態に係るメモリシステム3の構成要素と同じであるため、説明を省略する。
第4実施形態に係るメモリシステム3において実行される、データ書き込み動作について説明する。第4実施形態に係るメモリシステム3では、異常電源遮断が起きた場合、キャパシタ81に蓄えられた電力を使用して、フォギープログラム状態の全ての記憶位置をファインプログラム状態に遷移させる書き込み動作が実行される。図41は、実施形態に係るメモリシステム3において実行される、メモリセルの閾値電圧をフォギープログラム状態からファインプログラム状態に遷移させる追加書き込み動作を示す図である。
図41の(a)に示すように、フォギープログラム動作が実行され、且つ、未だファインプログラム動作が実行されていないフォギープログラム状態の記憶位置に含まれる複数のメモリセルの各々の閾値電圧は、正常にデータを読み出すことができない粗い精度で設定されている。
第4実施形態に係るメモリシステム3では、フォギープログラム状態の記憶位置が存在するときに異常電源遮断が発生すると、コントローラ5は、キャパシタ81に蓄えられている電力を使用して、フォギープログラム状態の記憶位置に対するファインプログラム動作を実行する。
図41の(b)に示すように、ファインプログラム状態の記憶位置に含まれる複数のメモリセルの各々は、各メモリセルに記憶されるべきデータ値に対応する閾値電圧を有している。
次に、異常電源遮断発生時にデータ書き込み動作が実行されるブロックについて説明する。図42は、第4実施形態に係るメモリシステム3において、異常電源遮断が起きた時のブロックの各記憶位置の状態と、追加書き込み動作が実行された後のブロックの各記憶位置の状態とを示す図である。
図42の(a)は、異常電源遮断が起きた時のブロックの各記憶位置の状態を示す。ここでは、MG(WL N+2、SU2)に対するフォギープログラム動作が完了してから、MG(WL N+1、SU2)に対するファインプログラム動作が完了するまでの間に、異常電源遮断が起きた場合が想定されている。
異常電源遮断が起きた場合、コントローラ5は、キャパシタ81に蓄えられている電力を使用して、書き込み先ブロックに含まれるフォギープログラム状態の各記憶位置をファインプログラム状態にするための追加書き込み動作を実行する。
あるワード線に接続された各ストリングユニットに含まれる記憶位置に対するファインプログラム動作を実行するためには、このワード線に後続する次のワード線に接続された同じストリングユニットに含まれる記憶位置に対するフォギープログラム動作を行う必要がある。図42の(a)に示す追加書き込み動作の例では、コントローラ5は、MG(WL N+1、SU2)に対するファインプログラム動作を完了させた後、MG(WL N+2、SU3)に対するフォギープログラム動作を行う。この場合、MG(WL N+2、SU3)には、ダミーデータが書き込まれていてもよい。
図42の(b)は、追加書き込み動作が実行された後の書き込み先ブロックの各記憶位置の状態を示す。図42の(b)に示すように、書き込み先ブロックに含まれる全ての記憶位置は、ファインプログラム状態になる。書き込み先ブロックがフルになったため、コントローラ5は、この書き込み先ブロックをQLCアクティブブロックリスト75に登録する。
そして、コントローラ5は、メモリシステム3に対する電力の供給が再開されたとき、フリーブロックリスト73から別のブロックを選択し、選択されたブロックを新たに書き込み先ブロックとして割り当てる。そして、コントローラ5は、新たな書き込み先ブロックの先頭の記憶位置を次の書き込み先位置に決定する。
次に、異常電源遮断発生時のデータ書き込み動作の手順について説明する。図43は、第4実施形態に係るメモリシステム3において実行される、異常電源遮断発生時のデータ書き込み動作の手順を示すフローチャートである。
まず、コントローラ5は、異常電源遮断が発生したか否かを判定する(ステップS71)。
異常電源遮断が発生していない場合(ステップS71でNo)、コントローラ5は、異常電源遮断が発生するまで待つ。
異常電源遮断が発生した場合(ステップS71でYes)、コントローラ5は、追加書き込み動作を実行する(ステップS72)。コントローラ5は、書き込み先ブロックに含まれる全ての記憶位置に対するファインプログラム動作が完了し、書き込み先ブロックがフルになるまで追加書き込み動作を続行する。
このように、第4実施形態に係るメモリシステム3では、コントローラ5は、異常電源遮断が発生した際に、書き込み先ブロックがフルになるまで追加書き込み動作を続行する。そのため、メモリシステム3に対する電力の供給が再開された際に、コントローラ5は、前回の電源遮断が異常電源遮断であるか否かを判定する必要がない。
(第5実施形態)
第5実施形態に係るメモリシステム3の構成要素は、図1で説明した第1実施形態に係るメモリシステム3の構成要素と同じであるため、説明を省略する。
第5実施形態では、コントローラ5は、記憶位置に含まれる複数のメモリセルのうち、管理フラグを格納するための少なくとも1つのメモリセルにフラグ(フォギーフラグ)を書き込む。フォギーフラグは、この記憶位置がフォギープログラム状態であることを示す情報である。
まず、フォギーフラグについて説明する。図44は、第5実施形態に係るメモリシステム3における、フォギープログラム状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布と、フォギープログラム動作の実行中に電源遮断が起きたプログラム中断状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布とを示す図である。
各ブロックに含まれる複数の記憶位置の各々は、データを格納するための複数のメモリセルと、管理情報を格納するための少なくとも一つのメモリセルとを含む。以下では、管理情報を格納するための少なくとも一つのメモリセルを冗長メモリセルと称する。
コントローラ5は、ある記憶位置に対するフォギープログラム動作が完了したことに応じて、その記憶位置に含まれる冗長メモリセルにフォギーフラグを書き込む。
フォギーフラグを書き込まれた冗長メモリセルの閾値電圧は、フォギー・ファインプログラム動作において使用される閾値電圧範囲よりも高い。つまり、コントローラ5は、ある記憶位置に対するフォギープログラム動作が完了したことに応じて、その記憶位置に含まれる冗長メモリセルの閾値電圧を、フォギー・ファインプログラム動作において使用される閾値電圧範囲よりも高く設定することによって、冗長メモリセルにフォギーフラグを書き込む。
図44(a)は、フォギープログラム動作が完了された記憶位置に含まれている複数のメモリセルの閾値電圧分布を示す。フォギープログラム動作が完了された記憶位置に含まれている複数のメモリセルの閾値電圧分布は、データを正常に読み出すことが不可能な粗い精度に設定されている。そして、複数のメモリセルのうちの冗長メモリセルの閾値電圧は、フォギー・ファインプログラム動作において使用される閾値電圧範囲よりも高く設定されている。具体的には、フォギーフラグが書き込まれた冗長メモリセルの閾値電圧は、フォギーフラグ閾値電圧より高く、ファインフラグ閾値電圧よりも低い値に設定されている。フォギーフラグ閾値電圧は、例えば、図6を参照して説明したVr16よりも高い。
コントローラ5は、例えば、この記憶位置にフォギーフラグ閾値電圧以上の閾値電圧を有するメモリセルが存在し、且つ、ファインフラグ閾値電圧以上の閾値電圧を有するメモリセルが存在しない、ということを確認することによって、この記憶位置にフォギーフラグが書き込まれていると判定することができる。
このように、フォギープログラム動作が完了された記憶位置は、リード不可データを格納しており、さらに、フォギーフラグを格納している。よって、コントローラ5は、フォギーフラグが存在し、且つ、データを正常に読み出すことができない記憶位置を、フォギープログラム状態の記憶位置であると判定することができる。
図44の(b)は、フォギープログラム動作の実行中に電源遮断が発生した記憶位置に含まれる複数のメモリセルの閾値電圧分布を示す。この記憶位置の冗長メモリセルには、フォギーフラグは書き込まれていない。このため、この記憶位置に含まれる全てのメモリセルの閾値電圧は、フォギー・ファインプログラム動作において使用される閾値電圧範囲に含まれている。
コントローラ5は、例えば、この記憶位置にフォギーフラグ閾値電圧以上の閾値電圧を有するメモリセルが存在しないことを確認することによって、この記憶位置にフォギーフラグが書き込まれていないと判定することができる。
このように、フォギープログラム動作の実行中に電源遮断が起きた記憶位置は、リード不可データを格納しているが、フォギーフラグを格納していない。よって、コントローラ5は、フォギーフラグが存在せず、且つ、データを正常に読み出すことができない記憶位置を、プログラム中断状態の記憶位置、つまり、フォギープログラム動作の実行中に電源遮断が起きた記憶位置、であると判定することができる。
次に、ファインフラグについて説明する。図45は、第5実施形態に係るメモリシステム3における、ファインプログラム動作の実行中に電源遮断が起きたプログラム中断状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布と、ファインプログラム状態の記憶位置に含まれる複数のメモリセルの閾値電圧分布とを示す図である。
コントローラ5は、ある記憶位置に対するファインプログラム動作が実行可能になると、ファインプログラム動作を開始する前に、この記憶位置に含まれる冗長メモリセルからフォギーフラグを取り除く。具体的には、コントローラ5は、冗長メモリセルの閾値電圧を、フォギーフラグ閾値電圧に対応する電圧から、ファインフラグ閾値電圧に対応する電圧に変更し、これによって冗長メモリセルからフォギーフラグを取り除く。ファインフラグ閾値電圧に対応する閾値電圧を有する冗長メモリセルは、ファインフラグが書き込まれているメモリセルとも称される。つまり、コントローラ5は、冗長メモリセルにファインフラグを書き込み、これによって冗長メモリセルからフォギーフラグを取り除く。
図45の(a)は、ファインプログラム動作の実行中に電源遮断が発生した記憶位置に含まれる複数のメモリセルの閾値電圧分布を示す。この記憶位置の冗長メモリセルにおいては、フォギーフラグは書き込まれていない。つまり、ファインプログラム動作の実行中に電源遮断が発生した記憶位置は、リード不可データを格納しており、フォギーフラグを格納していない(一方で、ファインフラグを格納している)。よって、コントローラ5は、フォギーフラグが存在せず、且つ、データを正常に読み出すことができない記憶位置を、プログラム中断状態の記憶位置であると判定することができる。
また、コントローラ5は、ファインフラグが存在するか否かを判定してもよい。この場合、コントローラ5は、ファインフラグが存在し、且つ、データを正常に読み出すことができない記憶位置を、ファインプログラム動作の実行中に電源遮断が起きた記憶位置、であると判定することもできる。
図45の(b)は、ファインプログラム動作が完了された記憶位置に含まれる複数のメモリセルの閾値電圧分布を示す。この記憶位置の冗長メモリセルにおいては、フォギーフラグは書き込まれていない。つまり、ファインプログラム動作が完了された記憶位置は、リード可能データを格納しており、フォギーフラグを格納していない(一方で、ファインフラグを格納している)。コントローラ5は、データを正常に読み出すことができる記憶位置をファインプログラム状態の記憶位置であると判定する。
このように、コントローラ5は、リード不可データを格納している記憶位置のフォギーフラグを確認することで、フォギープログラム状態の記憶位置を正しく判定することができる。すなわち、コントローラ5は、リード不可データが格納されている各記憶位置にフォギーフラグが格納されているか否かに基づいて、リード不可データが格納されている各記憶位置がフォギープログラム状態であるのか、プログラム中断状態であるのかを正しく判定できる。よって、コントローラ5は、電源遮断時に書き込み先ブロックに割り当てられていたブロックに、プログラム中断状態の記憶位置が存在するか否かを正しく判定できる。ブロックにプログラム中断状態の記憶位置が存在しないと判定した場合には、コントローラ5は、このブロックに対するデータ書き込み動作を続行する。
具体的には、メモリシステム3への電力の供給が再開された時に、コントローラ5は、以下の異常電源遮断判定処理を実行し得る。
メモリシステム3に対する電力の供給が遮断された後、メモリシステム3に対する電力供給が再開されると、コントローラ5は、書き込み先ブロックに含まれる複数の記憶位置のうち、最後に読み出し可能になったデータが格納されている記憶位置を特定する。そして、コントローラ5は、(3-A)最後に読み出し可能になったデータが格納されている記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行された第1の個数の記憶位置の各々が、リード不可データおよびフォギーフラグを格納しており、且つ、(3-B)第1の個数の記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態である、という第3の条件が満たされているか否かを判定する。
第1の個数は、各ブロックに含まれるストリングユニットSUの数に基づいて定められる。
例えば、各ブロックが4つのストリングユニットSUを含む場合、第1の個数は4(または5)である。各ブロックが1つのストリングユニットSUを含む場合、第1の個数は1(または2)である。
したがって、各ブロックが4つのストリングユニットSUを含むケースにおいては、コントローラ5は、最後に読み出し可能になったデータが格納されている記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき4つまたは5つの記憶位置の各々が、リード不可データおよびフォギーフラグを格納しており、且つ、これら4つまたは5つの記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態である、という第3の条件が満たされているか否かを判定する。
例えば、図7に示した例と同様に、MG(WL1、SU2)に対するファインプログラム動作が完了した時点では、MG(WL1、SU2)が最後に読み出し可能になったデータが格納されている記憶位置である。このとき、MG(WL1、SU2)に対するフォギープログラム動作の次にフォギープログラム動作が実行された記憶位置は、MG(WL1、SU3)である。コントローラ5は、MG(WL1、SU3)がリード不可データおよびフォギーフラグを格納しているか否かを判定する。さらに、コントローラ5は、MG(WL2、SU0)からMG(WL2、SU2)までの3個の記憶位置がリード不可データおよびフォギーフラグを格納しているか否かを判定する。ここでは、第1の個数は、4個である。そして、コントローラ5は、MG(WL2、SU2)に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置であるMG(WL2、SU3)がイレーズ状態であるか否かを判定する。これにより、コントローラ5は、第3の条件が満たされているか否かを判定する。
また、各ブロックが1つのストリングユニットSUのみを含むケースにおいては、コントローラ5は、最後に読み出し可能になったデータが格納されている記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行された1つまたは2つの記憶位置の各々が、リード不可データおよびフォギーフラグを格納しており、且つ、これら1つまたは2つの記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態である、という条件が満たされているか否かを判定する。
リード不可データおよびフォギーフラグを格納している各記憶位置は、フォギープログラム動作が完了し、且つ、ファインプログラム動作が開始されていない、フォギープログラム状態の記憶位置である。
よって、この条件が満たされている場合、書き込み先ブロックに割り当てられているブロックに、プログラム中断状態の記憶位置が存在しない、と判定できる。この場合、コントローラ5は、リード不可データおよびフォギーフラグを格納している記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべきイレーズ状態の記憶位置を、次の書き込み先位置に決定する。
次に、フォギープログラム動作について説明する。図46は、第5実施形態に係るメモリシステム3において実行される、フォギープログラム動作の手順を示すフローチャートである。
まず、コントローラ5は、次にフォギープログラム動作が実行されるべき記憶位置に対するフォギープログラム動作が実行可能である否かを判定する(ステップS81)。
フォギープログラム動作が実行可能でない場合(ステップS81でNo)、コントローラ5は、フォギープログラム動作が実行可能になるまで待つ。
フォギープログラム動作が実行可能である場合(ステップS81でYes)、コントローラ5は、この記憶位置に対するフォギープログラム動作を実行する(ステップS82)。
この記憶位置に対するフォギープログラム動作が完了すると、コントローラ5は、この記憶位置の冗長メモリセルの閾値電圧をフォギーフラグ閾値電圧に対応する電圧に設定することによって、冗長メモリセルにフォギーフラグを書き込む(ステップS83)。
次に、ファインプログラム動作について説明する。図47は、第5実施形態に係るメモリシステム3において実行される、ファインプログラム動作の手順を示すフローチャートである。
まず、コントローラ5は、次にファインプログラム動作が実行されるべき記憶位置に対するファインプログラム動作が実行可能である否かを判定する(ステップS91)。
ファインプログラム動作が実行可能でない場合(ステップS91でNo)、コントローラ5は、ファインプログラム動作が実行可能になるまで待つ。
ファインプログラム動作が実行可能である場合(ステップS91でYes)、コントローラ5は、この記憶位置に対するファインプログラム動作を開始する前に、この記憶位置の冗長メモリセルからフォギーフラグを取り除く(ステップS92)。すなわち、コントローラ5は、この冗長メモリセルの閾値電圧をファインフラグ閾値電圧に対応する電圧に変更する。
そして、コントローラ5は、この記憶位置に対するファインプログラム動作を実行する(ステップS93)。
次に、異常電源遮断判定処理の手順について説明する。図48は、第5実施形態に係るメモリシステムにおいて実行される、異常電源遮断判定処理の手順を示すフローチャートである。
メモリシステム3に対する電力の供給が再開された場合、コントローラ5は、書き込み先位置を示す情報をNANDメモリ6から取得する(ステップS1002)。
そして、コントローラ5は、取得された情報によって示される記憶位置から始まる幾つかの記憶位置に対するデータリード動作を実行することによって、リード可能データが格納されている最後の記憶位置を特定する(ステップS1003~S1005)。
この場合、まず、コントローラ5は、取得された情報によって示される記憶位置を、データリード動作を実行すべき最初の記憶位置として特定する(ステップS1003)。
コントローラ5は、特定された記憶位置に書き込まれているデータがリード可能データであるか否かを判定する(ステップS1004)。特定された記憶位置に書き込まれているデータがリード可能データである場合(ステップS1004でYes)、コントローラ5は、特定された記憶位置に後続する次の記憶位置を特定する(ステップS1005)。そして、コントローラ5による処理は、ステップS1004に戻る。ステップS1004で、コントローラ5は、ステップS1005で特定された記憶位置に書き込まれているデータがリード可能データであるか否かを判定する。
リード可能データを格納している記憶位置に後続する記憶位置がリード不可データを格納している場合、コントローラ5は、リード可能データを格納している記憶位置を、リード可能データが格納されている最後の記憶位置であると決定する。
リード可能データが格納されている最後の記憶位置が決定されると、コントローラ5は、リード可能データが格納されているこの最後の記憶位置に後続する記憶位置、すなわち、この最後の記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行された記憶位置が、フォギープログラム状態であるか否かを判定する(ステップS1006~S1009)。
後続する記憶位置が、リード不可データを格納しており、且つ、フォギーフラグを格納している場合、この後続する記憶位置はフォギープログラム状態であると判定できる。ここでは、後続する記憶位置がリード不可データを格納していることは、ステップS1004で既に確認済みである。したがって、コントローラ5は、後続する記憶位置がフォギーフラグを格納しているか否かを判定すればよい。
あるいは、コントローラ5は、後続する記憶位置がイレーズ状態であるか否かを最初に判定してもよい。この場合、コントローラ5、後続する記憶位置がイレーズ状態でないことが判定された場合に、後続する記憶位置がフォギーフラグを格納しているか否かを判定してもよい。
ここでは、例として、コントローラ5が、後続する記憶位置がイレーズ状態であるか否かを最初に判定し、後続する記憶位置がイレーズ状態でないことが判定された場合に、後続する記憶位置がフォギーフラグを格納しているか否かを判定する場合について説明する。
コントローラ5は、後続する記憶位置がイレーズ状態であるか否かを判定する(ステップS1006)。つまり、コントローラ5は、後続する記憶位置にイレーズページ閾値電圧以上の閾値電圧を持つメモリセルが存在するか否かを判定する。
後続する記憶位置がイレーズ状態ではない場合(ステップS1006でNo)、コントローラ5は、後続する記憶位置にフラグが書き込まれているか否かを判定する(ステップS1007)。コントローラ5は、後続する記憶位置に含まれている複数のメモリセルに、フォギーフラグ閾値電圧以上の閾値電圧を持つメモリセルが存在するか否かを判定する。
後続する記憶位置にフラグが書き込まれている場合(ステップS1007でYes)、コントローラ5は、後続する記憶位置に書き込まれているフラグがフォギーフラグまたはファインフラグのいずれであるかを判定する(ステップS1008)。コントローラ5は、後続する記憶位置に含まれている複数のメモリセルに、ファインフラグ閾値電圧以上の閾値電圧を持つメモリセルが存在するか否かを判定する。ファインフラグ閾値電圧以上の閾値電圧を持つメモリセルが存在する場合、コントローラ5は、後続する記憶位置に書き込まれているフラグがファインフラグであると判定する。また、ファインフラグ閾値電圧以上の閾値電圧を持つメモリセルが存在しない場合、コントローラ5は、後続する記憶位置に書き込まれているフラグがフォギーフラグであると判定する。
後続する記憶位置に書き込まれているフラグがフォギーフラグである場合(ステップS1008でフォギーフラグ)、コントローラ5は、後続する記憶位置にさらに後続する記憶位置を特定する(ステップS1009)。そして、コントローラ5による処理はステップS1006に戻る。ステップS1006で、コントローラ5は、ステップS1009で特定された記憶位置がイレーズ状態であるか否かを判定する。
このようにして、コントローラ5は、最後に読み出し可能になったデータが格納されている記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行された第1の個数の記憶位置の各々が、リード不可データおよびフォギーフラグを格納しているか否かを判定する。
各々がリード不可データおよびフォギーフラグを格納している第1の個数の記憶位置にさらに後続する記憶位置が、ステップS1009で特定される。そして、ステップS1006にて、コントローラ5は、第1の個数の記憶位置にさらに後続する記憶位置がイレーズ状態であるか否かを判定する。
後続する記憶位置がイレーズ状態である場合(ステップS1006でYes)、コントローラ5は、メモリシステム3の前回の書き込み動作が正常に停止された、つまり、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在していないと判定する(ステップS1010)。
そして、コントローラ5は、後続する記憶位置を次の書き込み先位置に決定する(ステップS1011)。
後続する記憶位置がイレーズ状態でなく(ステップS1006でNo)、且つ、後続する記憶位置にフォギーフラグが書き込まれていない場合(ステップS1007でNo、またはステップS1008でファインフラグ)、コントローラ5は、前回の書き込み動作が正常に停止されなかったと判定する(ステップS1012)。
また、第1の個数の記憶位置の各々がリード不可データおよびフォギーフラグを格納しているか否かを判定する処理において、判定対象の記憶位置にフォギーフラグが書き込まれていない場合(ステップS1007でNo、またはステップS1008でファインフラグ)も、コントローラ5は、前回の書き込み動作が正常に停止されなかったと判定する(ステップS1012)。つまり、コントローラ5は、書き込み先ブロックとして割り当てられているブロックにプログラム中断状態の記憶位置が存在している可能性があると判定する。
コントローラ5は、書き込み先ブロックを利用不可のブロックに決定する(ステップS1013)。
コントローラ5は、別のブロックを新たな書き込み先ブロックとして割り当てる(ステップS1014)。コントローラ5は、フリーブロックリスト73から別のブロックを選択する。そして、コントローラ5は、選択されたブロックを書き込み先ブロックとして割り当てる。
コントローラ5は、別のブロックの先頭の記憶位置を次の書き込み先位置に決定する(ステップS1015)。コントローラ5は、ステップS1014で書き込み先ブロックに割り当てられたブロックの先頭の記憶位置を次の書き込み先位置に決定する。
このように、第5実施形態では、各記憶位置に含まれる複数のメモリセルのうちの少なくとも一つのメモリセル(冗長メモリセル)にフォギーフラグを書き込む。そして、メモリシステム3に対する電力の供給が遮断された後、メモリシステム3に対する電力の供給が再開されたことに応じ、コントローラ5は、最後に読み出し可能になったデータが格納されている記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行された第1の個数の記憶位置の各々が、リード不可データおよびフォギーフラグを格納しており、且つ、第1の個数の記憶位置に対するフォギープログラム動作の次にフォギープログラム動作が実行されるべき記憶位置がイレーズ状態である、という条件が満たされているか否かを判定する。これにより、コントローラ5は、前回の書き込み動作が正常に停止されたか否かを正しく判定できる。
コントローラ5は、基本的には、前回の電源遮断が、電力の供給が突然遮断される異常電源遮断であったのか、あるいはホスト2からのシャットダウン通知を受信した後に実行される電源遮断であったのかに関係なく、電力の供給が再開される度に、異常電源遮断判定処理を実行し得る。
なお、コントローラ5は、前回の電源遮断が異常電源遮断である場合にのみ、電力の供給の再開に応じ、異常電源遮断判定処理を実行してもよい。
以上説明したように、第1~第5実施形態によれば、たとえ第1段階のプログラム動作(フォギープログラム動作)の実行中または第2段階のプログラム動作(フォギープログラム動作)の実行中に、メモリシステム3への電力の供給が異常電源遮断により突然遮断された場合であっても、次の書き込み先位置を正しく決定できる。
なお、第1~第5実施形態のうちの任意の2以上の実施形態を適宜組み合わせることも可能である。
また、第1~第5実施形態では、ホスト2から受信されたデータをSLCブロックに書き込んだ後に、SLCブロックに格納されているデータを、複数段階のプログラム動作を使用して、QLCブロックに書き込む場合を説明した。しかしながら、第1~第5実施形態の構成は、これに限定されず、例えば、ホスト2から受信されたデータを、複数段階のプログラム動作を使用して、QLCブロックに書き込んでもよい。
リード可能データが格納されている最後の記憶位置は、第2段階のプログラム動作(すなわち、ファインプログラム動作)が最後に実行された記憶位置である。リード不可データは、読み出し不可能なデータとも称される。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム、2…ホスト、3…メモリシステム、4…バス、5…コントローラ、6…NAND型フラッシュメモリ、7…DRAM、8…電源回路、21…プロセッサ、22…メモリ、50…内部バス、51…ホストインタフェース、52…CPU、53…SRAM、54…DMAC、55…ECC回路、56…DRAMインタフェース、57…NANDインタフェース、71…L2Pテーブル、72…ブロック管理テーブル、73…フリーブロックリスト、74…SLCアクティブブロックリスト、75…QLCアクティブブロックリスト。

Claims (13)

  1. メモリシステムであって、
    各々がデータ消去動作の単位である複数のブロックを含む不揮発性メモリであって、前記複数のブロックの各々は複数の記憶位置を含み、前記複数の記憶位置の各々は複数のメモリセルを含む、不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記複数のブロックのうちの書き込み先ブロックに対するデータ書き込み動作を、第1段階のプログラム動作と第2段階のプログラム動作とを少なくとも含む複数段階のプログラム動作を使用して実行するように構成されたコントローラとを具備し、
    前記書き込み先ブロックに含まれる前記複数の記憶位置に対するデータの書き込みは、前記書き込み先ブロックの第1の記憶位置に対する前記第1段階のプログラム動作が実行され、前記第1の記憶位置に対する前記第1段階のプログラム動作が完了した後、前記書き込み先ブロックの第2の記憶位置に対する前記第1段階のプログラム動作が実行され、前記第2の記憶位置に対する前記第1段階のプログラム動作の完了に応じて、前記第1の記憶位置に対する前記第2段階のプログラム動作が実行される、という順序で実行され、
    前記コントローラは、
    前記メモリシステムに対する電力の供給の遮断後に、前記メモリシステムに対する電力が回復されたことに応じ、
    前記複数のブロックのうちの第1のブロックに含まれる前記複数の記憶位置のうち、前記第2段階のプログラム動作が最後に実行された第3の記憶位置を特定し、
    前記第3の記憶位置に対する前記第2段階のプログラム動作の前に前記第1段階のプログラム動作が実行された第4の記憶位置が読み出し不可能なデータを格納しており、且つ、前記第4の記憶位置に対する前記第1段階のプログラム動作の次に前記第1段階のプログラム動作が実行されるべき第5の記憶位置に含まれる複数のメモリセルの各々が消去状態に対応する閾値電圧を有している、という第1の条件が満たされているか否かを判定し、
    前記第1の条件が満たされている場合、前記第5の記憶位置を次の書き込み先位置に決定する、ように構成されている
    メモリシステム。
  2. 前記コントローラは、
    前記第1の条件が満たされていない場合、前記第1のブロックを利用不可のブロックとして管理し、前記複数のブロックのうちの第2のブロックを新たな書き込み先ブロックとして割り当て、前記第2のブロックに含まれる前記複数の記憶位置のうちの先頭の記憶位置を次の書き込み先位置に決定するように構成されている
    請求項1に記載のメモリシステム。
  3. 前記複数のブロックの各々は複数のワード線を含み、前記複数のワード線の各々は複数の前記記憶位置を接続し、
    前記コントローラは、
    前記第1の記憶位置と前記第2の記憶位置とが、前記書き込み先ブロックの先頭のワード線に接続されている場合、
    前記第1の記憶位置に書き込むべき第1のデータと、前記第2の記憶位置に書き込むべき第2のデータと、が少なくとも準備されるまで待ち、
    前記第1のデータと前記第2のデータとが準備されたことに応じ、前記第1の記憶位置に対する前記第1段階のプログラム動作と、前記第2の記憶位置に対する前記第1段階のプログラム動作とを実行し、
    前記第2の記憶位置に対する前記第1段階のプログラム動作が少なくとも完了したことに応じて、前記第1の記憶位置に対する前記第2段階のプログラム動作を実行するように構成されている
    請求項1に記載のメモリシステム。
  4. 前記コントローラは、
    前記メモリシステムに対する電力の供給が異常電源遮断により遮断された後に、前記メモリシステムに対する電力が回復されたことに応じ、
    前記第3の記憶位置を特定し、
    前記第1の条件が満たされているか否かを判定し、
    前記第1の条件が満たされている場合、前記第5の記憶位置を次の書き込み先位置に決定する、ように構成されている
    請求項1に記載のメモリシステム。
  5. メモリシステムであって、
    各々がデータ消去動作の単位である複数のブロックを含む不揮発性メモリであって、前記複数のブロックの各々は複数の記憶位置を含み、前記複数の記憶位置の各々は複数のメモリセルを含む、不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記複数のブロックのうちの書き込み先ブロックに対するデータ書き込み動作を、第1段階のプログラム動作と第2段階のプログラム動作とを少なくとも含む複数段階のプログラム動作を使用して実行するように構成されたコントローラとを具備し、
    前記書き込み先ブロックに含まれる前記複数の記憶位置に対するデータの書き込みは、前記書き込み先ブロックの第1の記憶位置に対する前記第1段階のプログラム動作が実行され、前記第1の記憶位置に対する前記第1段階のプログラム動作が完了した後、前記書き込み先ブロックの第2の記憶位置に対する前記第1段階のプログラム動作が実行され、前記第2の記憶位置に対する前記第1段階のプログラム動作の完了に応じて、前記第1の記憶位置に対する前記第2段階のプログラム動作が実行される、という順序で実行され、
    前記コントローラは、
    前記複数のブロックのうちの第1のブロックに含まれる前記複数の記憶位置のうち、前記第1段階のプログラム動作が完了し、且つ、前記第2段階のプログラム動作が開始されていない第1の状態を有する各記憶位置を示す第1の情報を管理し、
    前記複数の記憶位置のうちの一つの記憶位置に対する前記第1段階のプログラム動作が完了したことに応じ、前記第1段階のプログラム動作が完了した前記一つの記憶位置を示す情報が前記第1の情報に追加されるように前記第1の情報を更新し、
    前記複数の記憶位置のうちの一つの記憶位置に対する前記第2段階のプログラム動作を開始する前に、前記第2段階のプログラム動作が開始されるべき前記一つの記憶位置を示す情報が前記第1の情報から削除されるように前記第1の情報を更新し、
    前記更新された第1の情報を前記不揮発性メモリに保存する、ように構成されている
    メモリシステム。
  6. 前記コントローラは、
    前記メモリシステムに対する電力の供給の遮断後に、前記メモリシステムに対する電力が回復されたことに応じ、
    前記第1の情報を前記不揮発性メモリから読み出し、
    前記第1の情報により示される前記第1の状態を有する最も古い記憶位置に対する前記第1段階のプログラム動作よりも一つ前に前記第1段階のプログラム動作が実行された第3の記憶位置が読み出し可能データを格納しており、前記第1の情報により示される各記憶位置が読み出し不可能なデータを格納しており、且つ、前記第1の情報により示される前記第1の状態を有する最も新しい第4の記憶位置に対する前記第1段階のプログラム動作の次に前記第1段階のプログラム動作が実行されるべき第5の記憶位置に含まれる複数のメモリセルの各々が消去状態に対応する閾値電圧を有している、という第2の条件が満たされているか否かを判定し、
    前記第2の条件が満たされている場合、前記第5の記憶位置を次の書き込み先位置に決定するように構成されている
    請求項5に記載のメモリシステム。
  7. 前記コントローラは、
    前記第2の条件が満たされていない場合、前記第1のブロックを利用不可のブロックとして管理し、前記複数のブロックのうちの第2のブロックを新たな書き込み先ブロックとして割り当て、前記第2のブロックに含まれる前記複数の記憶位置のうちの先頭の記憶位置を次の書き込み先位置に決定するように構成されている
    請求項6に記載のメモリシステム。
  8. 前記コントローラは、
    前記メモリシステムに対する電力の供給が異常電源遮断により遮断された後に、前記メモリシステムに対する電力が回復されたことに応じ、
    前記第1の情報を前記不揮発性メモリから読み出し、
    前記第2の条件が満たされているか否かを判定し、
    前記第2の条件が満たされている場合、前記第5の記憶位置を次の書き込み先位置に決定する、ように構成されている
    請求項6に記載のメモリシステム。
  9. 前記メモリシステムに供給される電力を蓄えるキャパシタをさらに具備し、
    前記コントローラは、
    前記メモリシステムに前記電力が供給されている間、前記更新された第1の情報を前記不揮発性メモリに保存せず、前記メモリシステムへの前記電力の供給が遮断された場合、前記キャパシタに蓄えられた電力を使用して、前記更新された第1の情報を前記不揮発性メモリに保存するように構成されている
    請求項5に記載のメモリシステム。
  10. メモリシステムであって、
    各々がデータ消去動作の単位である複数のブロックを含む不揮発性メモリであって、前記複数のブロックの各々は複数の記憶位置を含み、前記複数の記憶位置の各々はデータを格納するための複数の第1のメモリセルと管理情報を格納するための少なくとも一つの第2のメモリセルとを含む、不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記複数のブロックのうちの書き込み先ブロックに含まれる前記複数の第1のメモリセルそれぞれに対するデータ書き込み動作を、第1段階のプログラム動作と第2段階のプログラム動作とを少なくとも含む複数段階のプログラム動作を使用して実行するように構成されたコントローラとを具備し、
    前記書き込み先ブロックに含まれる前記複数の記憶位置に対するデータの書き込みは、前記書き込み先ブロックの第1の記憶位置に対する前記第1段階のプログラム動作が実行され、前記第1の記憶位置に対する前記第1段階のプログラム動作が完了した後、前記書き込み先ブロックの第2の記憶位置に対する前記第1段階のプログラム動作が実行され、前記第2の記憶位置に対する前記第1段階のプログラム動作の完了に応じて、前記第1の記憶位置に対する前記第2段階のプログラム動作が実行される、という順序で実行され、
    前記コントローラは、
    前記複数のブロックのうちの第1のブロックに含まれる前記複数の記憶位置のうちの各記憶位置に対する前記第1段階のプログラム動作が完了したことに応じ、各記憶位置に含まれる前記第2のメモリセルの閾値電圧を前記複数段階のプログラム動作において使用される閾値電圧範囲よりも高い第1の電圧に設定することによって前記第2のメモリセルに第1のフラグを書き込み、
    前記複数の記憶位置のうちの各記憶位置に対する前記第2段階のプログラム動作を開始する前に、各記憶位置に含まれる前記第2のメモリセルの閾値電圧を前記第1の電圧から前記第1の電圧よりも高い第2の電圧に変更することによって前記第2のメモリセルから前記第1のフラグを取り除く、ように構成されている
    メモリシステム。
  11. 前記コントローラは、
    前記メモリシステムに対する電力の供給の遮断後に、前記メモリシステムに対する電力が回復されたことに応じ、
    前記第1のブロックに含まれる前記複数の記憶位置のうち、前記第2段階のプログラム動作が最後に実行された第3の記憶位置を特定し、
    前記第3の記憶位置に対する前記第1段階のプログラム動作の次に前記第1段階のプログラム動作が実行された第4の記憶位置が、読み出し不可能なデータおよび前記第1のフラグを格納しており、且つ、前記第4の記憶位置に対する前記第1段階のプログラム動作の次に前記第1段階のプログラム動作が実行されるべき第5の記憶位置に含まれる複数の前記第1のメモリセルの各々が消去状態に対応する閾値電圧を有している、という第3の条件が満たされているか否かを判定し、
    前記第3の条件が満たされている場合、前記第5の記憶位置を次の書き込み先位置に決定する、ように構成されている
    請求項10に記載のメモリシステム。
  12. 前記コントローラは、
    前記第3の条件が満たされていない場合、前記第1のブロックを利用不可のブロックとして管理し、前記複数のブロックのうちの第2のブロックを新たな書き込み先ブロックとして割り当て、前記第2のブロックに含まれる前記複数の記憶位置のうちの先頭の記憶位置を次の書き込み先位置に決定するように構成されている
    請求項11に記載のメモリシステム。
  13. 前記コントローラは、
    前記メモリシステムに対する電力の供給が異常電源遮断により遮断された後に、前記メモリシステムに対する電力が回復されたことに応じ、
    前記第3の記憶位置を特定し、
    前記第3の条件が満たされているか否かを判定し、
    前記第3の条件が満たされている場合、前記第5の記憶位置を次の書き込み先位置に決定する、ように構成されている
    請求項11に記載のメモリシステム。
JP2022035409A 2022-03-08 2022-03-08 メモリシステム Pending JP2023130864A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022035409A JP2023130864A (ja) 2022-03-08 2022-03-08 メモリシステム
US17/821,960 US12056368B2 (en) 2022-03-08 2022-08-24 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022035409A JP2023130864A (ja) 2022-03-08 2022-03-08 メモリシステム

Publications (1)

Publication Number Publication Date
JP2023130864A true JP2023130864A (ja) 2023-09-21

Family

ID=87931695

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022035409A Pending JP2023130864A (ja) 2022-03-08 2022-03-08 メモリシステム

Country Status (2)

Country Link
US (1) US12056368B2 (ja)
JP (1) JP2023130864A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114328281B (zh) * 2021-11-30 2023-11-14 苏州浪潮智能科技有限公司 固态硬盘异常掉电处理方法、装置、电子设备及介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8054684B2 (en) * 2009-12-18 2011-11-08 Sandisk Technologies Inc. Non-volatile memory and method with atomic program sequence and write abort detection
US9460780B2 (en) * 2015-01-20 2016-10-04 Sandisk Technologies Llc Initialization techniques for multi-level memory cells using multi-pass programming
US9703494B1 (en) * 2016-09-26 2017-07-11 Intel Corporation Method and apparatus for protecting lower page data during programming in NAND flash
US20180261281A1 (en) * 2017-03-10 2018-09-13 Micron Technology, Inc. Methods for mitigating power loss events during operation of memory devices and memory devices employing the same
JP2020030875A (ja) 2018-08-23 2020-02-27 キオクシア株式会社 メモリシステム
KR102610395B1 (ko) * 2019-01-22 2023-12-05 삼성전자주식회사 비휘발성 메모리 장치를 포함하는 메모리 시스템
CN111984441B (zh) 2019-05-21 2023-09-22 慧荣科技股份有限公司 瞬间断电回复处理方法及装置以及计算机可读取存储介质
KR20200136183A (ko) 2019-05-27 2020-12-07 에스케이하이닉스 주식회사 스토리지 장치 및 그것의 동작 방법
US11586385B1 (en) * 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
US11663068B2 (en) * 2020-06-29 2023-05-30 Western Digital Technologies, Inc. Write abort error detection in multi-pass programming

Also Published As

Publication number Publication date
US20230289067A1 (en) 2023-09-14
US12056368B2 (en) 2024-08-06

Similar Documents

Publication Publication Date Title
US11862263B2 (en) Storage device and method of operating the same
CN109783009B (zh) 存储器系统及其操作方法
US8621266B2 (en) Nonvolatile memory system and related method of performing erase refresh operation
US9870836B2 (en) Memory system and method of controlling nonvolatile memory
CN111007983A (zh) 在读取回收操作中使用缓冲存储器的存储设备
JP2009134416A (ja) メモリシステム
US11681619B2 (en) Controller and operation method thereof for managing read count information of memory block
KR20200126533A (ko) 메모리 시스템 및 그의 온도 조절 방법
US20170168725A1 (en) Memory system that updates firmware in response to predetermined events
CN112015329A (zh) 存储系统及其操作方法
US10181352B2 (en) Memory system and method of controlling nonvolatile memory
US11380402B2 (en) Memory system and operating method thereof
KR102353363B1 (ko) 메모리 시스템의 동작 방법
US9792068B2 (en) Memory system and method of controlling nonvolatile memory
JP2019169205A (ja) メモリシステム
CN111755061A (zh) 检查存储器系统中的存储器装置的操作状态的设备及方法
JP2023130864A (ja) メモリシステム
US20200242024A1 (en) Method for managing flash memory module and associated flash memory controller and electronic device
US11392322B2 (en) Memory system for read operation and operating method thereof
KR20200005229A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
JP2022176035A (ja) メモリシステム及びメモリシステムの動作方法
US20230297247A1 (en) Memory system and method of controlling nonvolatile memory
US20240202113A1 (en) Memory system
US20240264744A1 (en) Memory controller and memory system including the memory controller and memory device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240911