JP2023136083A - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP2023136083A JP2023136083A JP2022041509A JP2022041509A JP2023136083A JP 2023136083 A JP2023136083 A JP 2023136083A JP 2022041509 A JP2022041509 A JP 2022041509A JP 2022041509 A JP2022041509 A JP 2022041509A JP 2023136083 A JP2023136083 A JP 2023136083A
- Authority
- JP
- Japan
- Prior art keywords
- write
- data
- host
- block
- memory system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 24
- 239000003990 capacitor Substances 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000013507 mapping Methods 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 4
- 238000012005 ligant binding assay Methods 0.000 description 53
- 238000010586 diagram Methods 0.000 description 17
- 230000010365 information processing Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 1
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/28—Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/30—Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】どのデータが失われたのかを特定することができるメモリシステムを実現する。【解決手段】メモリシステムのコントローラは、論理アドレスを指定するライトコマンドをホストから受信したことに応じて、ホストから受信されるデータを第1の書き込み先ブロックに書き込む。コントローラは、ホストから受信済みであり且つ第1の書き込み先ブロックへの書き込みが完了していない書き込み未完了データにそれぞれ対応する複数の論理アドレスを含む第1のリストと、第1の書き込み先ブロックのうち、データの書き込みが完了していない書き込み未完了領域の先頭の記憶位置を示す第1の記憶位置情報とを管理する。コントローラは、ホストからの予告無しで電力喪失が起きた場合、キャパシタからの電力を使用して、第1のリストと、第1の記憶位置情報とを、不揮発性メモリに書き込む。【選択図】図7
Description
本発明の実施形態は、不揮発性メモリを制御するメモリシステムおよび制御方法に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
SSDのようなメモリシステムにおいては、予期しない電力喪失に対処するためのパワーロスプロテクション機能(PLP機能とも呼ぶ場合もある)が使用される場合がある。
パワーロスプロテクション機能は、キャパシタに蓄えられた電力を使用して、バッファに格納されている書き込み未完了データを不揮発性メモリに書き込む機能である。
しかしながら、キャパシタに蓄えられた電力を使用して不揮発性メモリに書き込むことができるデータ量は、ある上限値までに制限される。そのため、書き込み未完了データの量が多い場合には、書き込み未完了データの一部が失われてしまう場合がある。
本発明の一実施形態が解決しようとする課題は、どのデータが失われたのかを特定することができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、複数のブロックを含む不揮発性メモリと、論理アドレスを指定するライトコマンドを前記ホストから受信したことに応じて、前記ホストから受信したデータを前記複数のブロックから割り当てた第1の書き込み先ブロックに書き込むように構成されたコントローラとを具備する。前記コントローラは、前記ホストから受信済みであり且つ前記第1の書き込み先ブロックへの書き込みが完了していない書き込み未完了データにそれぞれ対応する複数の論理アドレスを含む第1のリストと、前記第1の書き込み先ブロックのうち、データの書き込みが完了していない書き込み未完了領域の先頭の記憶位置を示す第1の記憶位置情報とを管理する。前記コントローラは、前記ホストからの予告無しで前記メモリシステムへの電力の供給が断たれる電力喪失が起きた場合、前記メモリシステムに供給される電力を蓄えるキャパシタからの電力を使用して、前記第1のリストと、前記第1の記憶位置情報とを、前記不揮発性メモリに書き込む。
以下、図面を参照して、実施形態を説明する。
図1は、実施形態に係るメモリシステム3を含む情報処理システム1の構成例を示すブロック図である。実施形態に係るメモリシステム3は、不揮発性メモリ6を含むストレージデバイスである。
図1は、実施形態に係るメモリシステム3を含む情報処理システム1の構成例を示すブロック図である。実施形態に係るメモリシステム3は、不揮発性メモリ6を含むストレージデバイスである。
情報処理システム1は、ホスト(ホストデバイス)2と、メモリシステム3とを含む。ホスト2と、メモリシステム3とは、バス4を介して接続可能である。
ホスト2は、情報処理装置である。ホスト2は、例えば、パーソナルコンピュータ、またはサーバコンピュータである。ホスト2は、メモリシステム3にアクセスする。具体的には、ホスト2は、データを書き込むためのコマンドであるライトコマンドをメモリシステム3に送信する。また、ホスト2は、データを読み出すためのコマンドであるリードコマンドをメモリシステム3に送信する。
メモリシステム3は、半導体ストレージデバイスである。メモリシステム3は、例えば、ソリッドステートドライブ(SSD)である。メモリシステム3は、不揮発性メモリ6を含む。メモリシステム3は、不揮発性メモリ6にデータを書き込む。そして、メモリシステム3は、不揮発性メモリ6からデータを読み出す。
バス4は、例えば、PCI ExpressTM(PCIeTM)規格に準拠したバスである。バス4は、ホスト2とメモリシステム3とを接続する伝送路である。バス4は、ホスト2からメモリシステム3へのデータおよび入出力(I/O)コマンドの送信、並びにメモリシステム3からホスト2へのデータおよび応答の送信のために使用される。I/Oコマンドは、不揮発性メモリ6に対するデータの書き込みまたは読み出しを行うためのコマンドである。I/Oコマンドは、ライトコマンドおよびリードコマンドを含む。
次に、ホスト2の内部構成について説明する。ホスト2は、プロセッサ21と、メモリ22とを含む。
プロセッサ21は、例えばCPU(Central Pprocessing Unit)である。プロセッサ21は、バス4を介してメモリシステム3との通信を行う。プロセッサ21は、メモリシステム3、または、ホスト2に接続された他のストレージデバイスからメモリ22にロードされるソフトウェア(ホストソフトウェア)を実行する。ホストソフトウェアは、オペレーティングシステム、ファイルシステム、デバイスドライバ、またはアプリケーションプログラムを含む。
メモリ22は、例えば揮発性のメモリである。メモリ22は、例えば、ダイナミックランダムアクセスメモリ(DRAM)である。
次に、メモリシステム3の内部構成について説明する。メモリシステム3は、コントローラ5と、不揮発性メモリ6とを含む。不揮発性メモリ6の一例は、NAND型フラッシュメモリである。以下では、不揮発性メモリ6を、NANDメモリ6と称する。
コントローラ5は、メモリコントローラである。コントローラ5は、例えば、SoC(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は、コントローラ5と、不揮発性メモリ6に加えて、ダイナミックランダムアクセスメモリ(DRAM)7を含み得る。DRAM7は、揮発性のメモリである。DRAM7の記憶領域の一部は、例えば、ホスト2から受信したライトデータ、またはNANDメモリ6から読み出されたリードデータを一時的に保持する内部バッファ73として使用されてもよい。
メモリシステム3は、さらに電源回路8を含む。電源回路8は、電源制御回路である。電源回路8は、例えばホスト2から供給される電力をコントローラ5、NANDメモリ6、DRAM7など、メモリシステム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とを含む。これらコントローラ5内の各部は、内部バス50を介して相互接続される。この内部バス50にも電源回路8からの電力は供給される。
ホストインタフェース51は、ハードウェアインタフェース回路である。ホストインタフェース51は、ホスト2との通信を実行する。ホストインタフェース51は、例えば、ホスト2からI/Oコマンドを受信する。また、ホストインタフェース51は、受信したI/Oコマンドに対する応答をホスト2に送信する。
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に含まれるブロックの管理は、例えば、ガベージコレクションと、不良ブロック(バッドブロック)の管理と、ウェアレベリングとを含む。CPU62は、ブロック管理テーブル72を使用して、NANDメモリ6に含まれるブロックの管理を実行する。
SRAM53は、揮発性のメモリである。SRAM53は、例えば、CPU52の作業領域として使用される。また、SRAM53は、内部バッファ531を含む。内部バッファ531は、ホスト2から受信されるライトコマンドに関連付けられたデータを一時的に保持する記憶領域である。
DMAC54は、直接メモリアクセス(DMA)を実行する回路である。DMAC54は、ホスト2のメモリ22と、DRAM7またはSRAM53との間のデータ転送を実行する。
ECC回路55は、データのエンコードと、データのデコードとを実行する回路である。ECC回路55は、NANDメモリ6にデータを書き込む際に、エンコード処理を実行する。エンコード処理において、ECC回路55は、書き込むべきデータにECCパリティを冗長コードとして付加する。ECC回路55は、NANDメモリ6から読み出されたデータに付加されたECCパリティを使用して、デコード処理を実行する。デコード処理において、ECC回路55は、読み出されたデータの誤りを訂正する。
DRAMインタフェース56は、DRAM7を制御する回路である。DRAMインタフェース56は、DRAM7にデータを格納する。また、DRAMインタフェース56は、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以上のチャンネルch0、ch1、ch2、…、ch31のうちの対応する一つのチャンネルを介して、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とを含む。L2Pテーブル71と、ブロック管理テーブル72の一部または全ては、DRAM7ではなく、SRAM53に格納されてもよい。
L2Pテーブル71は、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングをセクタのような所定のサイズ単位で管理する。
ブロック管理テーブル72は、NANDメモリ6に含まれる各ブロックを管理する。ブロック管理テーブル72は、例えば、各ブロックが利用可能であるか否かを管理する。また、ブロック管理テーブル72は、各ブロックがパワーロスプロテクション動作の対象であるか否かを管理していてもよい。
メモリシステム3は、キャパシタ81をさらに含む。キャパシタ81は、電力を蓄えることができる素子である。キャパシタ81は、電源回路8に電気的に接続される。電源回路8は、ホスト2から供給される電源電圧の値が、ホスト2からの予告無しで低下した場合、キャパシタ81に蓄えられている電力をメモリシステム3の各構成要素に供給する。キャパシタ81に蓄えられている電力は、例えば、コントローラ5がLBAリスト保存動作を実行するために使用され得る。
次に、コントローラ5によって実行されるLBAリスト保存動作を説明する。LBAリスト保存動作は、予期しない電力喪失によって失われたデータを特定できるようにするために実行される。予期しない電力喪失は、ホスト2からの予告(電源遮断予告通知)無しで、メモリシステム3への電力の供給が遮断される現象である。電源遮断予告通知は、メモリシステム3への電力の供給が断たれることを予告する通知である。ホスト2の電源がオフになる前に、ホスト2は、電源遮断予告通知をメモリシステム3に送信して、メモリシステム3への電力の供給がまもなく断たれることをメモリシステム3に通知する。電源遮断予告通知は、例えば、NVMe規格で規定されているShutdown Notification、またSATA規格で規定されているSTANDBY IMMEDIATEコマンドである。
コントローラ5は、NANDメモリ6にデータを書き込むためのライトコマンドをホスト2から受信する。ライトコマンドは、開始論理アドレス(開始LBA)、データサイズ、およびデータポインタ等を指定する。開始LBAは、ライトコマンドに関連付けられたライトデータが書き込まれるべき論理アドレス、つまりライトデータが書き込まれるべき最初の論理ブロックを示す。データサイズは、ライトデータのサイズを示す。データサイズは、例えば、LBAの数によって表される。データポインタは、ライトデータが格納されているホスト2のメモリ22上の位置を示すバッファアドレスである。ライトコマンドは、書き込み先の領域を指定する識別子を含んでいてもよい。書き込み先の領域を指定する識別子は、例えば、ゾーンドネームスペース規格で規定されたゾーンを指定する論理アドレス、ネームスペースを識別するネームスペース識別子、あるいは、ストリームを識別するストリーム識別子であってもよい。
コントローラ5は、LBA(開始LBA)を指定するライトコマンドをホスト2から受信したことに応じて、NANDメモリ6に対するデータ書き込み動作を実行する。データ書き込み動作において、コントローラ5は、ホスト2から受信したライトデータを、NANDメモリ6に含まれる複数のブロックから割り当てた書き込み先ブロックに書き込む。つまり、コントローラ5は、NANDメモリ6に含まれる複数のブロックのうちのブロックを選択する、そして、コントローラ5は、選択したブロックを、書き込み先ブロックとして割り当てる。書き込み先ブロックは、データが書き込まれるべきブロックである。書き込み先ブロックは、例えば、スーパーブロックである。あるいは、書き込み先ブロックは、物理ブロックであってもよい。コントローラ5は、異なる複数の領域にそれぞれ対応する複数の書き込み先ブロックを、同時に割り当てられていてもよい。以下では、一つの書き込み先ブロックに着目して、LBAリスト保存動作を説明する。
コントローラ5は、書き込み先ブロックに対応するLBAリストを管理する。LBAリストは、ホスト2から受信済みであり且つ書き込み先ブロックへの書き込みが完了していない書き込み未完了データにそれぞれ対応する複数のLBAを含むリストである。書き込み先ブロックへのデータの書き込みは、書き込み先ブロックの先頭から終端に向けて実行される。このため、書き込みが進行している書き込み先ブロックは、書き込み完了領域と、書き込み未完了領域と、データ未受領領域とを含む。書き込み完了領域は、ホストから書き込むデータを受信済みであり、且つ、書き込み先ブロックへのデータの書き込みが完了した領域である。書き込み完了領域に記憶されているデータは、読み出し可能なデータである。書き込み未完了領域は、ホスト2から書き込むデータを受信済みであり、且つ、書き込み先ブロックへのデータの書き込みが完了していない領域(本来、書き込み未完了データが書き込まれるべき領域)である。もし、書き込むデータを受信済みであり、且つ、書き込み先ブロックへの書き込みが完了したデータが存在しなければ、ホスト2から指定されるライトデータの書き込み先に対応する領域の全てが書き込み未完了領域となる。データ未受領領域は、書き込むべきデータをホスト2からまだ受信していないが、受信した場合には、そこに書き込まれる領域である。なお、ホスト2からのデータの受信は、ホスト2からのデータの受領とも称する。また、ホスト2からデータをまだ受信していないことを、データの未受領またはデータの未受信と称し、ホスト2からデータを既に受信したことを、データの受信済みまたはデータの受領済みとも称する。
ホスト2からの予告無しで電力喪失が起きた場合、つまり予期しない電力喪失が起きた場合、失われるデータは、書き込み未完了領域に対応するデータである。そのため、コントローラ5は、書き込み未完了領域に書き込み予定のデータである書き込み未完了データにそれぞれ対応する複数のLBAを、LBAリストを使用して管理する。具体的には、LBAリストは、ホスト2から受信済みであり且つ書き込み先ブロックに書き込まれるデータにそれぞれ対応するLBAの集合から、書き込み先ブロックへの書き込みが完了して書き込み先ブロックから読み出し可能となったデータにそれぞれ対応するLBAの集合を除いた、残りのLBAの集合を含む。ここで、ホスト2から受信済みであり且つ書き込み先ブロックに書き込まれるデータは、ホスト2から受信済みであり且つ書き込み先ブロックへの書き込みが完了した書き込み完了データと、ホスト2から受信済みであり且つ書き込み先ブロックへの書き込みが完了していない書き込み未完了データと、を含む。
さらに、コントローラ5は、書き込み未完了領域の先頭の記憶位置を示す位置情報を管理する。位置情報は、書き込み先ブロックのブロックアドレスと、書き込み先ブロックにおけるオフセットとによって表される。オフセットは、書き込み先ブロックの先頭の記憶位置に対する書き込み未完了領域の先頭の記憶位置のオフセットを示す。
予期しない電力喪失が起きた場合、コントローラ5は、キャパシタ81からの電力を使用して、書き込み未完了データではなく、LBAリストを、NANDメモリ6に書き込む。具体的には、コントローラ5は、キャパシタ81からの電力を使用して、LBAリストと、書き込み未完了領域の先頭の記憶位置を示す位置情報とを、NANDメモリ6に書き込む。
このように、LBAリストをNANDメモリ6に書き込むことにより、予期しない電力喪失によって失われたデータを明確に特定することが可能となる。LBAリストのサイズは、書き込み未完了データのサイズに比べ十分に小さい。従って、キャパシタ81の電力を使用できる限られた時間内にLBAリストをNANDメモリ6に書き込むことができる。
また、書き込み未完了領域の先頭の記憶位置を示す位置情報をNANDメモリ6に書き込むことにより、予期しない電力喪失によって書き込みが中断された記憶位置を特定することができる。
メモリシステム3に対する電力が回復された後、コントローラ5は、保存されたLBAリストと位置情報とを使用して、リカバリ処理を実行することができる。例えば、コントローラ5は、失われたデータに対応するLBAをホスト2に報告する処理を実行してもよい。また、コントローラ5は、書き込みが中断された記憶位置をエラー位置に設定する処理を実行してもよい。
次に、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は、複数のプレーンを含む。複数のプレーンを有する構成は、マルチプレーン構成と称される。メモリセルアレイ612-0は、複数のプレーン(ここでは、PLANE#0、およびPLANE#1)を並列動作させることができる。
メモリセルアレイ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は、実施形態に係るメモリシステム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)にそれぞれ接続されている。
次に、複数のチャンネルと複数のフラッシュダイ61との関係について説明する。図4は、実施形態に係るメモリシステム3において使用される、複数のチャンネルch.0、ch.1、…、ch.31と複数のフラッシュダイ61(61-0、61-1、…、61-31)との関係の例を示す図である。
図4では、32個のフラッシュダイ61それぞれは、2個のプレーン(PLANE#0、PLANE#1)を含むマルチプレーン構成を有している。各プレーンは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、複数のワード線を含む。一つのワード線当たり、4つのストリングユニット(SU0、SU1、SU2、SU3)に対応する4つのメモリセルグループが接続される。ブロックBLK0~BLKx-1の各々は、データを消去するデータ消去動作の単位である。ブロックBLK0~BLKx-1の各々は、物理ブロック、物理メモリブロック、消去ブロック、またはフラッシュブロックとも称される。
32個のフラッシュダイ61それぞれは、並列動作が可能である。さらに、個々のフラッシュダイ61においては、2つのプレーンそれぞれは、並列動作が可能である。
複数の物理ブロックに対するデータ書き込み動作を並列に実行するために、複数のブロックグループがコントローラ5によって管理される。ブロックグループは、並列動作が可能な複数の物理ブロックによって構成される。以下では、ブロックグループをスーパーブロックと称する。
次に、スーパーブロックの構成例を説明する。図5は、実施形態に係るメモリシステム3におけるスーパーブロックの構成例と、スーパーブロックに含まれる複数の記憶位置それぞれと複数のオフセットそれぞれとの間の関係の例を示す図である。
ここでは、任意のフラッシュダイ61に含まれるプレーン#0(PLANE#0)のブロックBLK0、およびプレーン#1(PLANE#1)のブロックBLK0がスーパーブロックSB0を構築する場合を想定する。
各ブロックは、4つのストリングユニット(SU0、SU1、SU2、およびSU3)を含む。そして、各ストリングユニットは、複数のワード線(WL0、WL1、…)に接続されている。
メモリセル当たりに4ビットのデータを記憶するクワドレベルセル(QLC)モードでデータをスーパーブロックSB0に書き込む場合、一つのワード線に接続され、且つ、一つのストリングユニットに含まれているメモリセルグループには、4つのページ(lower、middle、upper、およびhigher)に対応するデータが書き込まれる。一つのページのサイズは、例えば、16KBである。一つのページは、複数のセクタを含む。例えば、一つのセクタのサイズが4KBである場合、一つのページは、4つのセクタを含む。したがって、一つのワード線に接続され、且つ、一つのストリングユニットに含まれているメモリセルグループは、16個のセクタに対応する16個の記憶位置を含む。
以下では、ワード線WLnに接続され、且つストリングユニットSUmに含まれているメモリセルグループ(以下、MGと称する)を、MG(WLn、SUm)と表す。
スーパーブロックSB0のある記憶位置xを示す物理アドレスは、スーパーブロックSB0のブロックアドレスと、スーパーブロックSB0の先頭の記憶位置に対する記憶位置xのオフセットとによって表される。オフセットは、セクタの倍数によって表される。
各記憶位置のオフセットは、各セクタに対してデータが書き込まれる順序に基づいて設定される。
コントローラ5は、まず、プレーン#0のブロックBLK0のMG(WL0、SU0)に対する4ページ(lower、middle、upper、およびhigher)分のデータの書き込みと、プレーン#1のブロックBLK0のMG(WL0、SU0)に対する4ページ(lower、middle、upper、およびhigher)分のデータの書き込みとを実行する。プレーン#0のブロックBLK0のMG(WL0、SU0)とプレーン#1のブロックBLK0のMG(WL0、SU0)は、計32個の記憶位置を含む(=4セクタ×QLC(4ページ)×2プレーン)。このため、プレーン#0のブロックBLK0のMG(WL0、SU0)とプレーン#1のブロックBLK0のMG(WL0、SU0)には、計32個のオフセット(+0~+31)が設定される。例えば、プレーン#0のブロックBLK0のMG(WL0、SU0)においては、lowerページの4セクタにオフセット(+0~+3)が設定され得、middleページの4セクタにオフセット(+4~+7)が設定され得、upperページの4セクタにオフセット(+8~+11)が設定され得、higherページの4セクタにオフセット(+12~+15)が設定され得る。また、プレーン#1のブロックBLK0のMG(WL0、SU0)においては、lowerページの4セクタにオフセット(+16~+19)が設定され得、middleページの4セクタにオフセット(+20~+23)が設定され得、upperページの4セクタにオフセット(+24~+27)が設定され得、higherページの4セクタにオフセット(+28~+31)が設定され得る。
次に、コントローラ5は、プレーン#0のブロックBLK0のMG(WL0、SU1)に対する4ページ分のデータの書き込みと、プレーン#1のブロックBLK0のMG(WL0、SU1)に対する4ページ分のデータの書き込みとを実行する。このため、プレーン#0のブロックBLK0のMG(WL0、SU1)とプレーン#1のブロックBLK0のMG(WL0、SU0)には、計32個のオフセット(+32~+63)が設定される。例えば、プレーン#0のブロックBLK0のMG(WL0、SU1)においては、lowerページの4セクタにオフセット(+32~+35)が設定され得、middleページの4セクタにオフセット(+36~+39)が設定され得、upperページの4セクタにオフセット(+40~+43)が設定され得、higherページの4セクタにオフセット(+44~+47)が設定され得る。また、プレーン#1のブロックBLK0のMG(WL0、SU1)においては、lowerページの4セクタにオフセット(+48~+51)が設定され得、middleページの4セクタにオフセット(+52~+55)が設定され得、upperページの4セクタにオフセット(+56~+59)が設定され得、higherページの4セクタにオフセット(+60~+69)が設定され得る。
次に、コントローラ5は、プレーン#0のブロックBLK0のMG(WL0、SU2)に対する4ページ分のデータの書き込みと、プレーン#1のブロックBLK0のMG(WL0、SU2)に対する4ページ分のデータの書き込みとを実行する。このため、プレーン#0のブロックBLK0のMG(WL0、SU2)とプレーン#1のブロックBLK0のMG(WL0、SU2)には、計32個のオフセット(+64~+95)が設定される。例えば、プレーン#0のブロックBLK0のMG(WL0、SU2)においては、lowerページの4セクタにオフセット(+64~+67)が設定され得、middleページの4セクタにオフセット(+68~+71)が設定され得、upperページの4セクタにオフセット(+72~+75)が設定され得、higherページの4セクタにオフセット(+76~+79)が設定され得る。また、プレーン#1のブロックBLK0のMG(WL0、SU2)においては、lowerページの4セクタにオフセット(+80~+83)が設定され得、middleページの4セクタにオフセット(+84~+87)が設定され得、upperページの4セクタにオフセット(+88~+91)が設定され得、higherページの4セクタにオフセット(+92~+95)が設定され得る。
次に、コントローラ5は、プレーン#0のブロックBLK0のMG(WL0、SU3)に対する4ページ分のデータの書き込みと、プレーン#1のブロックBLK0のMG(WL0、SU3)に対する4ページ分のデータの書き込みとを実行する。このため、プレーン#0のブロックBLK0のMG(WL0、SU3)とプレーン#1のブロックBLK0のMG(WL0、SU3)には、計32個のオフセット(+96~+127)が設定される。例えば、プレーン#0のブロックBLK0のMG(WL0、SU3)においては、lowerページの4セクタにオフセット(+96~+99)が設定され得、middleページの4セクタにオフセット(+100~+71)が設定され得、upperページの4セクタにオフセット(+72~+103)が設定され得、higherページの4セクタにオフセット(+104~+107)が設定され得る。また、プレーン#1のブロックBLK0のMG(WL0、SU3)においては、lowerページの4セクタにオフセット(+112~+115)が設定され得、middleページの4セクタにオフセット(+116~+119)が設定され得、upperページの4セクタにオフセット(+120~+123)が設定され得、higherページの4セクタにオフセット(+124~+127)が設定され得る。
次に、コントローラ5は、プレーン#0のブロックBLK0のMG(WL1、SU0)に対する4ページ分のデータの書き込みと、プレーン#1のブロックBLK0のMG(WL1、SU0)に対する4ページ分のデータの書き込みとを実行する。このため、プレーン#0のブロックBLK0のMG(WL1、SU0)とプレーン#1のブロックBLK0のMG(WL1、SU0)には、計32個のオフセット(+128~+159)が設定される。
次に、複数段階のプログラム動作について説明する。QLCモードでデータを書き込む場合、コントローラ5は、書き込み先ブロックに含まれる複数のメモリセルグループのそれぞれに対するデータ書き込み動作を、第1段階のプログラム動作と第2段階のプログラム動作とを少なくとも含む複数段階のプログラム動作を使用して実行する。第1段階のプログラム動作では、書き込むべき4ページ分のデータがNANDメモリ6に転送され、書き込み先ブロックのメモリセルグループMG(WLn、SUm)に、この4ページ分のデータが書き込まれる。第1段階のプログラム動作では、各メモリセルの閾値電圧は、粗く設定される。この状態では、各メモリセルからデータを正常に読み出すことはできない。第2段階のプログラム動作では、第1段階のプログラム動作で転送されたデータと同じ4ページ分のデータがNANDメモリ6に再び転送され、第1段階のプログラム動作が実行されたメモリセルグループMG(WLn、SUm)に、この4ページ分のデータが書き込まれる。第2段階のプログラム動作では、各メモリセルの閾値電圧は、書き込むべきデータに対応する目標閾値電圧に設定される。第2段階のプログラム動作が完了すると、メモリセルグループMG(WLn、SUm)からデータを正しく読み出すことができる。
メモリセルグループMG(WLn、SUm)に対する第2段階のプログラム動作は、メモリセルグループMG(WLn、SUm)と同じストリングユニットSUmに属し、且つ、メモリセルグループMG(WLn、SUm)が接続されているワード線WLnに後続するワード線WL(n+1)に接続された別のメモリセルグループMG(WL(n+1)、SUm)に対する第1段階のプログラム動作が実行された後に、実行される。
複数段階のプログラム動作としては、例えば、フォギー・ファインプログラム動作が使用され得る。フォギー・ファインプログラム動作は、フォギープログラム動作と、ファインプログラム動作とを含む。フォギープログラム動作は、各メモリセルの閾値電圧を粗く設定するプログラム動作(第1段階のプログラム動作)である。ファインプログラム動作は、各メモリセルの閾値電圧を調整して各メモリセルの閾値電圧を目標閾値電圧に設定するプログラム動作(第2段階のプログラム動作)である。
書き込み先ブロックに対するフォギー・ファインプログラム動作は、以下のように実行される。以下では、コントローラ5が、図5に示されるスーパーブロックSB0を書き込み先ブロックとして割り当てられた場合を想定する。
(1)まず、プレーン#0のブロックBLK0のMG(WL0、SU0)に対するフォギープログラム動作と、プレーン#1のブロックBLK0のMG(WL0、SU0)に対するフォギープログラム動作とが実行される。ここで、NANDメモリ6には、8ページ分のサイズを有するライトデータが転送される。ページサイズは、一つのストリングユニットSUに含まれるストリングの数、つまり、一つのメモリセルグループMGに含まれるメモリセルの数に相当する。
(2)次いで、プレーン#0のブロックBLK0のMG(WL0、SU1)に対するフォギープログラム動作と、プレーン#1のブロックBLK0のMG(WL0、SU1)に対するフォギープログラム動作とが実行される。
(3)次いで、プレーン#0のブロックBLK0のMG(WL0、SU2)に対するフォギープログラム動作と、プレーン#1のブロックBLK0のMG(WL0、SU2)に対するフォギープログラム動作とが実行される。
(4)次いで、プレーン#0のブロックBLK0のMG(WL0、SU3)に対するフォギープログラム動作と、プレーン#1のブロックBLK0のMG(WL0、SU3)に対するフォギープログラム動作とが実行される。
(5)プレーン#0のブロックBLK0のMG(WL0、SU0)~MG(WL0、SU3)に対するフォギープログラム動作と、プレーン#1のブロックBLK0のMG(WL0、SU0)~MG(WL0、SU3)に対するフォギープログラム動作とが完了すると、プレーン#0のブロックBLK0のMG(WL1、SU0)に対するフォギープログラム動作と、プレーン#0のブロックBLK0のMG(WL1、SU0)に対するフォギープログラム動作とが実行される。
(6)プレーン#0のブロックBLK0のMG(WL1、SU0)に対するフォギープログラム動作と、プレーン#0のブロックBLK0のMG(WL1、SU0)に対するフォギープログラム動作とが完了すると、プレーン#0のブロックBLK0のMG(WL0、SU0)に対するファインプログラム動作と、プレーン#1のブロックBLK0のMG(WL0、SU0)に対するファインプログラム動作とが実行される。ここで、NANDメモリ6には、プレーン#0のブロックBLK0のMG(WL0、SU0)とプレーン#1のブロックBLK0のMG(WL0、SU0)とに対するフォギープログラム動作で使用されたライトデータと同じライトデータが再び転送される。そして、プレーン#0のブロックBLK0のMG(WL0、SU0)に対するファインプログラム動作と、プレーン#1のブロックBLK0のMG(WL0、SU0)に対するファインプログラム動作とが実行される。このファインプログラム動作が完了すると、プレーン#0のブロックBLK0のMG(WL0、SU0)とプレーン#1のブロックBLK0のMG(WL0、SU0)とに対する書き込みが完了する。つまり、プレーン#0のブロックBLK0のMG(WL0、SU0)に書き込まれたデータと、プレーン#1のブロックBLK0のMG(WL0、SU0)に書き込込まれたデータとは、NANDメモリ6から正常に読み出すことが可能な読み出し可能データとなる。
(7)次いで、プレーン#0のブロックBLK0のMG(WL1、SU1)に対するフォギープログラム動作と、プレーン#1のブロックBLK0のMG(WL1、SU1)に対するフォギープログラム動作とが実行される。
(8)プレーン#0のブロックBLK0のMG(WL1、SU1)に対するフォギープログラム動作と、プレーン#1のブロックBLK0のMG(WL1、SU1)に対するフォギープログラム動作とが完了すると、プレーン#0のブロックBLK0のMG(WL0、SU1)に対するファインプログラム動作と、プレーン#1のブロックBLK0のMG(WL0、SU1)に対するファインプログラム動作とが実行される。このファインプログラム動作が完了すると、プレーン#0のブロックBLK0のMG(WL0、SU1)とプレーン#1のブロックBLK0のMG(WL0、SU1)とに対する書き込みが完了する。つまり、プレーン#0のブロックBLK0のMG(WL0、SU1)に書き込まれデータと、プレーン#1のブロックBLK0のMG(WL0、SU1)に書き込込まれたデータとは、NANDメモリ6から正常に読み出すことが可能な読み出し可能データとなる。
次に、書き込み先ブロックに対する書き込み動作とパワーロスプロテクション(PLP)動作を説明する。図6は、メモリシステム3において実行される書き込み先ブロックに対する書き込み動作とPLP動作の例を示す図である。
コントローラ5は、2種類のPLP動作を実行し得る。2種類のPLP動作の一方は、予期しない電力喪失が起きた場合に、LBAリストをバックアップするPLP動作(第1のPLP動作)である。2種類のPLP動作の他方は、予期しない電力喪失が起きた場合に、NANDメモリ6への書き込み未完了データの書き込みを完了させるPLP動作(第2のPLP動作)である。
コントローラ5は、ホスト2から受信済みであり且つNANDメモリ6への書き込みが完了していない書き込み未完了データにそれぞれ対応するLBAのリストをバックアップする第1のモードで書き込みを制御する第1のブロックの集合と、NANDメモリ6への書き込み未完了データの書き込みを完了させる第2のブロックの集合とを管理する。
以下では、第2のブロックの集合に属するブロックをPLP対象のブロックと称し、第1のブロックの集合に属するブロックをPLP対象外のブロックと称する。
図6は、コントローラ5が、スーパーブロックSB0~SB19の20個のスーパーブロックと、1個のシングルレベルセル(SLC)ブロックとを、書き込み先ブロックとして割り当てた場合を例として示している。SLCブロックは、メモリセル当たりに1ビットのデータを記憶するSLCモードでデータが書き込まれるブロックである。スーパーブロックSB0~SB14は、PLP対象のブロックである。スーパーブロックSB15~SB19は、PLP対象外のブロックである。
まず、PLP対象のブロック、例えば、スーパーブロックSB0にデータを書き込む場合について説明する。
(1)ホスト2からライトコマンドを受信する度、コントローラ5は、ホスト2から受信されるデータを内部バッファ531に格納する。コントローラ5は、書き込みサイズ分のデータが内部バッファ531に格納されるまで待つ。ページサイズが4セクタ(=16KB)である場合、QLCモードでスーパーブロックSB0にデータを書き込むケースでは、書き込みサイズは、32セクタ(=4セクタ×2プレーン×4(QLC))である。コントローラ5は、スーパーブロックSB0に書き込む32セクタ分のデータが内部バッファ531に蓄積されるまで待つ。
(2-a)スーパーブロックSB0に書き込む32セクタ分のデータが内部バッファ531に蓄積されると、コントローラ5は、32セクタ分のデータをスーパーブロックSB0に書き込むフォギープログラム動作を実行する。例えば、スーパーブロックSB0のプレーン#0のブロックのMG(WL0,SU0)に4ページ(=16セクタ分)のデータが書き込まれる。また、スーパーブロックSB0のプレーン#1のブロックのMG(WL0,SU0)に4ページ(=16セクタ分)のデータが書き込まれる。プレーン#0のブロックのMG(WL0,SU0)に対するファインプログラム動作は、プレーン#0のブロックのMG(WL0,SU1)~MG(WL0,SU3)、MG(WL1,SU0)に対するフォギープログラム動作が実行された後に、実行可能となる。同様に、プレーン#1のブロックのMG(WL0,SU0)に対するファインプログラム動作も、プレーン#1のブロックのMG(WL1,SU0)~MG(WL0,SU3)、MG(WL1,SU0)に対するフォギープログラム動作が実行された後に、実行可能となる。よって、スーパーブロックSB0への書き込みが進行すると、スーパーブロックSB0への書き込み動作が実行中の計160セクタ(=4セクタ×2プレーン×4(QLC)×5ストリングユニット)分のデータが内部バッファ531に維持される。
(3-a)書き込みが進行している途中のタイミングで予期しない電力喪失が起きた場合、コントローラ5は、キャパシタ81からの電力を使用して、スーパーブロックSB0への書き込みが完了していない書き込み未完了データをNANDメモリ6に書き込む。書き込み未完了データは、スーパーブロックSB0に書き込まれてもよいし、NANDメモリ6のシングルレベルセル(SLC)ブロックに書き込まれてもよい。SLCブロックは、メモリセル当たりに1ビットのデータを記憶するSLCモードでデータが書き込まれるブロックである。
次に、PLP対象外のブロック、例えば、スーパーブロックSB15にデータを書き込む場合について説明する。スーパーブロックSB15には、一つのLBAリストが割り当てられる。
(1)ホスト2からライトコマンドを受信する度、コントローラ5は、ホスト2から受信されるデータを内部バッファ531に格納する。
(2-b)スーパーブロックSB15に書き込むデータが内部バッファ531に格納される度、コントローラ5は、内部バッファ531に格納されたデータにそれぞれに対応するLBAの集合を、スーパーブロックSB15に対応するLBAリストに追加する。また、コントローラ5は、スーパーブロックSB15の書き込み未完了領域の先頭の記憶位置を示す位置情報(スーパーブロックアドレスSBA、オフセット)を、LBAリストに関連付けて、管理する。コントローラ5は、スーパーブロックSB15に書き込む32セクタ分のデータが内部バッファ531に蓄積されるまで待つ。
(3-b)スーパーブロックSB15に書き込む32セクタ分のデータが内部バッファ531に蓄積されると、コントローラ5は、32セクタ分のデータをスーパーブロックSB15に書き込むフォギープログラム動作を実行する。例えば、スーパーブロックSB15のプレーン#0のブロックのMG(WL0,SU0)に4ページ(=16セクタ分)のデータが書き込まれる。また、スーパーブロックSB15のプレーン#1のブロックのMG(WL0,SU0)に4ページ(=16セクタ分)のデータが書き込まれる。プレーン#0のブロックのMG(WL0,SU0)に対するファインプログラム動作は、プレーン#0のブロックのMG(WL0,SU1)~MG(WL0,SU3)、MG(WL1,SU0)に対するフォギープログラム動作が実行された後に、実行可能となる。同様に、プレーン#1のブロックのMG(WL0,SU0)に対するファインプログラム動作も、プレーン#1のブロックのMG(WL1,SU0)~MG(WL0,SU3)、MG(WL1,SU0)に対するフォギープログラム動作が実行された後に、実行可能となる。よって、スーパーブロックSB15への書き込みが進行すると、スーパーブロックSB15への書き込み動作が実行中の計160セクタ((=4セクタ×2プレーン×4(QLC)×5ストリングユニット))分のデータが内部バッファ531に維持される。そして、160セクタにそれぞれ対応する160個のLBAは、スーパーブロックSB15に書き込み中のデータにそれぞれ対応するLBAの集合である。スーパーブロックSB15に対応するLBAリストには、これら160個のLBAが維持される。また、スーパーブロックSB15に対応するLBAリストには、ホスト2から受信済みであり、且つスーパーブロックSB15への書き込みがまだ開始されていないデータにそれぞれ対応するLBAも維持される。スーパーブロックSB15の書き込みサイズが32セクタである場合、受信済み且つ未書き込みであるデータの最大サイズは、32セクタである。よって、スーパーブロックSB15に対応するLBAリストに含まれるLBAの最大数は、192(=4セクタ×2プレーン×4(QLC)×(5ストリングユニット+1))である。
(4-b)書き込みが進行している途中のタイミングで予期しない電力喪失が起きた場合、コントローラ5は、キャパシタ81からの電力を使用して、スーパーブロックSB15に対応するLBAリストに含まれるLBAの集合と、スーパーブロックSB15の書き込み未完了領域の先頭の記憶位置を示す位置情報(スーパーブロックアドレスSBA、オフセット)とをNANDメモリ6に書き込む。LBAの集合と位置情報は、NANDメモリ6のSLCブロックに書き込まれてもよい。
次に、書き込み先ブロックと論理アドレスリスト(LBAリスト)との関係を説明する。図7は、実施形態に係るメモリシステム3において管理される、書き込み先ブロックと論理アドレスリスト(LBAリスト)との関係の例を示す図である。
PLP対象外のスーパーブロックが書き込み先ブロックとして割り当てられた場合、スーパーブロックには一つのLBAリストが割り当てられる。
LBAリストは、ホスト2から受信済みであり且つスーパーブロックへの書き込みが完了していない書き込み未完了データにそれぞれ対応する複数のLBAを保持するために使用される。
スーパーブロックは、「書き込み未完了」領域と、「書き込みデータ未受領・未書き込み」領域とを含む。「書き込み未完了」領域は、ホスト2から受信済みであり、且つスーパーブロックへの書き込みが完了していない書き込み未完了データが書き込まれるべき領域である。
「書き込み未完了」領域は、「書き込みデータ受領済み・書き込み中」領域と、「書き込みデータ受領済み・未書き込み領域」とを含む。
「書き込みデータ受領済み・書き込み中」領域は、書き込み動作が実行中である領域である。ページサイズが4セクタである場合、フォギー・ファインプログラム動作を使用してスーパーブロックにQLCモードでデータを書き込むケースにおいては、「書き込みデータ受領済み・書き込み中」領域のサイズは、160セクタ(=4セクタ×2プレーン×4(QLC)×5ストリングユニット)である。
「書き込みデータ受領済み・未書き込み領域」は、ホスト2から書き込みデータが受信済みみであるが、書き込みが開始されていない領域である。ページサイズが4セクタである場合、フォギー・ファインプログラム動作を使用してスーパーブロックにQLCモードでデータを書き込むケースにおいては、「書き込みデータ受領済み・未書き込み領域」の最大サイズは、32セクタ(=4セクタ×2プレーン×4(QLC))である。
したがって、「書き込み未完了」領域のサイズは、192セクタ(=4セクタ×2プレーン×4(QLC)×(5ストリングユニット+1))である。
また、フルシーケンスプログラム動作を使用してスーパーブロックにTLCモードでデータを書き込むケースにおいては、3ページ分のデータをメモリセルグループに書き込むことによって3ページ分のデータの書き込みが完了する。したがって、「書き込みデータ受領済み・書き込み中」領域のサイズは、24セクタ(=4セクタ×2プレーン×3(TLC)×1ストリングユニット)である。また、「書き込みデータ受領済み・未書き込み領域」の最大サイズは、24セクタ(=4セクタ×2プレーン×3(TLC))である。
したがって、「書き込み未完了」領域のサイズは、48セクタ(=4セクタ×2プレーン×4(QLC)×(1ストリングユニット+1))である。
以下では、フォギー・ファインプログラム動作を使用してスーパーブロックにQLCモードでデータを書き込むケースを想定する。
LBAリストに含まれる160個のLBA(LBA#0~#31、LBA#32~#63、LBA#64~#95、LBA#96~#127、LBA#128~#159)は、ホスト2から受信済みであり、且つスーパーブロックへの書き込みが完了していない書き込み未完了データにそれぞれ対応するLBAである。
例えば、最初の32個のLBA#0~#31は、オフセット#0~#31に対応するスーパーブロックの32個の記憶位置に書き込まれるデータにそれぞれ対応するLBAである。オフセット#0~#31は、図5で説明したオフセット+0~+31によって示される記憶位置である。
LBA#0~#31の次の32個のLBA#32~#63は、オフセット#32~#63に対応するスーパーブロックの32個の記憶位置に書き込まれるデータにそれぞれ対応するLBAである。オフセット#0~#31は、図5で説明したオフセット+32~+63によって示される記憶位置である。
LBA#32~#63の次の32個のLBA#64~#95は、オフセット#64~#95に対応するスーパーブロックの32個の記憶位置に書き込まれるデータにそれぞれ対応するLBAである。オフセット#64~#95は、図5で説明したオフセット+64~+95によって示される記憶位置である。
LBA#64~#95の次の32個のLBA#96~#127は、オフセット#96~#127に対応するスーパーブロックの32個の記憶位置に書き込まれるデータにそれぞれ対応するLBAである。オフセット#96~#127は、図5で説明したオフセット+96~+127によって示される記憶位置である。
LBA#96~#127の次の32個のLBA#128~#159は、オフセット#128~#159に対応するスーパーブロックの32個の記憶位置に書き込まれるデータにそれぞれ対応するLBAである。オフセット#128~#159は、図5で説明したオフセット+128~+159によって示される記憶位置である。
また、「書き込みデータ受領済み・未書き込み領域」に書き込まれるデータが内部バッファ531に格納されると、格納されたデータにそれぞれ対応するLBA(例えば、LBA#160~#n)がLBAリストに追加される。このとき、LBA#160~#nと一緒に、オフセット#160~#nがLBAリストに追加されてもよい。
このように、LBAリストにおいては、書き込み未完了データにそれぞれ対応するLBA(LBA#0~#159、#160~#n)は、書き込み未完了データが書き込み未完了領域に書き込まれる順序と同じ順序で、つまりオフセット#0~#159、#160~#nの順序と同じ順序で並べられている。また、LBAリストにおいては、LBA#0~#159、#160~#nのみならず、オフセット#0~#159、#160~#nも保持されていてもよい。
LBAリストは、2つのポインタP1、P2によって管理される。ポインタP1は、LBAリストから削除または取り出される次のLBAの位置を示すポインタである。ポインタP2は、新たなLBAを格納する位置を示すポインタである。
また、図7においては、書き込み未完了領域の先頭の記憶位置を示す位置情報は、スーパーブロックアドレスSBAとオフセット#0とによって表される。
図8は、実施形態に係るメモリシステム3において管理される、書き込み先ブロックと論理アドレスリスト(LBAリスト)との関係の別の例を示す図である。
図8は、LBA#0~#31に対応する32セクタ分のデータの書き込みが完了して、32セクタ分のデータの読み出しが可能になった場合を例として示している。
スーパーブロックの先頭の32個の記憶位置は、「書き込み完了・読み出し可」領域となる。「書き込み完了・読み出し可」領域は、書き込みが完了してスーパーブロックから読み出し可能になったデータが記憶されている領域である。32セクタ分のデータが読み出し可能になると、読み出し可能データに対応する32個のLBA#0~#31がLBAリストから削除される。これにより、新たな32個のLBAを格納するための空き領域がLBAリストに確保される。また、書き込み未完了領域の先頭の記憶位置を示す位置情報は、書き込みサイズ(32セクタ)分だけ進められる。
図8では、LBAリストには、160個のLBA#32~#191が、「書き込みデータ受領済み・書き込み中」領域に書き込み中のデータにそれぞれ対応するLBAとして保持されている。
また、「書き込みデータ受領済み・未書き込み領域」に書き込まれるデータが内部バッファ531に格納されると、格納されたデータにそれぞれ対応するLBA(例えば、LBA#192~#m)がLBAリストに追加される。
LBAリストがLBA#32~#191、LBA#192~#mを保持している状態で、予期しない電力喪失が起きた場合、LBA#32~#191およびLBA#192~#mと、書き込み未完了領域の先頭の記憶位置を示す位置情報(スーパーブロックアドレスSBA、オフセット#32)が、NANDメモリ6に書き込まれる。
なお、スーパーブロック全体に対するデータの書き込みが完了すると、スーパーブロック全体が「書き込み完了・読み出し可」領域となる。この場合、LBAリストは空になる。そして、コントローラ5は、このスーパーブロックに対するLBAリストの割り当てを解除する。スーパーブロックに対する割り当てが解除されたLBAリストは、書き込み先ブロックに新たに割り当てられたスーパーブロックに割り当てられる。
次に、リングバッファの構成を説明する。図9は、LBAリストを保持するために使用されるリングバッファの構成例を示す図である。
リングバッファは、複数のエントリ、例えば、192個のエントリを含む。リングバッファの複数のエントリの各々は、一つのLBAを保持する領域である。ポインタP1は、リングバッファから削除または取り出される次のLBAが格納されているエントリを示すポインタである。ポインタP1は、ヘッドポインタとも称される。ポインタP2は、新たなLBAを格納するための次のエントリを示すポインタである。ポインタP2は、テールポインタとも称される。
図9(A)では、ポインタP1からポインタP2で示される、エントリ#0~#qにそれぞれLBAが格納されている。
スーパーブロックに書き込むデータがホスト2から新たに受信されると、図9(B)に示すように、受信されたデータにそれぞれ対応するLBAがリングバッファに追加される。ポインタP2の値は、追加されたLBAの数だけインクリメントされる。図9(B)では、ポインタP1からインクリメントされたポインタP2が示す、エントリ#0~#rにそれぞれLBAが格納されている。
エントリ#0~#31に対応する32個のLBAに対応するデータのファインプログラム動作が完了すると、図9(C)に示すように、ポインタP1の値がインクリメントされて32に更新される。これにより、エントリ#0~#31が解放されるので、32個のLBAがリングバッファから削除される。図9(C)では、インクリメントされたポインタP1からポインタP2が示す、エントリ#32~#sにそれぞれLBAが格納されている。この時、ポインタP2も更新されている。
ポインタP2の値に1を加えた値が192になると、ポインタP2の値はゼロにリセットされる。これにより、リングバッファの先頭の空きエントリそれぞれにLBAを追加することができる。図9(D)はそのようなリングバッファの先頭の空きエントリにLBAが追加された場合を示している。図9(D)では、ポインタP1がエントリ#32を示し、ポインタP2がエントリ#t(<32)を示している状態を表している。このように、図9(D)では、エントリ#32~#191、エントリ#0~#tにそれぞれLBAが格納されている。
次に、データ書き込み動作の手順について説明する。図10は、実施形態に係るメモリシステム3において実行されるデータ書き込み動作の手順を示すフローチャートである。
コントローラ5は、ホスト2からライトコマンドを受信したか否かを判定する(S101)。
ライトコマンドを受信していない場合(S101でNo)、コントローラ5は、ライトコマンドを受信するまで待つ。
ライトコマンドを受信した場合(S102でYes)、コントローラ5は、ホスト2からライトデータを受信する(S102)。コントローラ5は、受信したデータを内部バッファ531に格納する。
コントローラ5は、受信したライトデータを書き込む書き込み先ブロックが、PLP対象であるか否かを判定する(S103)。
書き込み先ブロックがPLP対象である場合(S103でYes)、コントローラ5は、ライトデータが書き込みサイズに達したか否かを判定する(S104)。例えば、書き込みサイズは、32セクタ分のデータサイズである。
ライトデータが書き込みサイズに達していない場合(S104でNo)、コントローラ5は、後続のライトコマンドを受信するまで待つ(S101に戻る)。
ライトデータが書き込みサイズに達した場合(S104でYes)、コントローラ5は、書き込みサイズのライトデータをNANDメモリ6に書き込むライト動作を実行する(S105)。
そして、コントローラ5は、データ書き込み動作を終了する(終了)。
書き込み先ブロックがPLP対象でない場合(S103でNo)、コントローラ5は、受信したライトコマンドによって指定されたLBAと、ライトデータが書き込まれる記憶位置に対応するオフセットとをLBAリストに追加する(S106)。コントローラ5は、書き込み先ブロックに対応するLBAリストを選択する。そして、コントローラ5は、選択したLBAリストに、LBAと、オフセットと、を追加する。また、コントローラ5は、LBAを追加したことに基づいて、LBAリストのポインタP2をインクリメントする。
コントローラ5は、ライトデータが書き込みサイズに達したか否かを判定する(S107)。
ライトデータが書き込みサイズに達していない場合(S107でNo)、コントローラ5は、後続のライトコマンドを受信するまで待つ(S101に戻る)。
ライトデータが書き込みサイズに達した場合(S107でYes)、コントローラ5は、書き込みサイズのライトデータをNANDメモリ6に書き込むライト動作を実行する(S108)。
コントローラ5は、S108で実行されたライト動作によって読み出し可能になったデータがあるか否かを判定する(S109)。コントローラ5は、S108のライト動作で、ファイン書き込み動作が実行されたか否かを判定する。
読み出し可能になったデータが無い場合(S109でNo)、コントローラ5は、データ書き込み動作を終了する(終了)。
読み出し可能になったデータがある場合(S109でYes)、コントローラ5は、読み出し可能データに対応するLBAをLBAリストから削除し、LBAリストに対応する記憶位置情報を更新する(S110)。コントローラ5は、書き込み先ブロックに対応するLBAリストのポインタP1をインクリメントする。
そして、コントローラ5は、データ書き込み動作を終了する(終了)。
次に、PLP動作の手順について説明する。図11は、実施形態に係るメモリシステム3において実行されるPLP動作の手順を示すフローチャートである。
コントローラ5は、予期しない電力喪失が起きたか否かを判定する(S201)。コントローラ5は、メモリシステム3に対する電力の供給が、ホスト2からの通知なしで、遮断されたか否かを判定する。
予期しない電力喪失が起きていない場合(S201でNo)、コントローラ5は、待つ。
予期しない電力喪失が起きた場合(S201でYes)、コントローラ5は、書き込み先ブロックから任意のブロックを選択する(S202)。
コントローラ5は、選択したブロックがPLP対象であるか否かを判定する(S203)。
選択したブロックがPLP対象でない場合(S203でNo)、コントローラ5は、LBAリストと、位置情報(SBA、オフセット)とをSLCブロックに書き込む(S204)。コントローラ5は、選択したブロックに対応するLBAリストに格納されている情報と、位置情報とをSLCブロックに書き込む事で、不揮発化する。
コントローラ5は、全ての書き込み先ブロックが選択されたか否かを判定する(S205)。
未だ選択されていない書き込み先ブロックがある場合(S205でNo)、コントローラ5は、選択されていない書き込み先ブロックから、任意のブロックを選択する(S202)。
選択したブロックがPLP対象である場合(S203でYes)、コントローラ5は、選択したブロックに対応する、書き込み未完了データの書き込みを完了させる(S206)。例えば、コントローラ5は、書き込み未完了データと、ダミーデータとを選択したブロックに書き込むことで、選択したブロックをクローズ状態にする。また、コントローラ5は、書き込み未完了データをSLCブロックに書き込んでもよい。
そして、コントローラ5は、全ての書き込み先ブロックが選択されたか否かを判定する(S205)。
全ての書き込み先ブロックが選択された場合(S205でYes)、コントローラ5は、PLP動作を終了する(終了)。
次に、LBA通知動作の手順を説明する。図12は、実施形態に係るメモリシステム3おいて実行されるLBA通知動作の手順を示すフローチャートである。
メモリシステム3に対する電力が回復されると(S301でYes)、コントローラ5は、SLCブロックにLBAリストの情報が存在するか否かを判定する(S302)。
SLCブロックにLBAリストの情報が存在する場合(S302でYes)、コントローラ5は、L2Pテーブル71を更新する(S303)。コントローラ5は、LBAリストの情報に含まれるLBAに対応するL2Pテーブル71のエントリに、エラーを示す値を格納する。エラーを示す値は、例えば、無効な物理アドレス(PBA)を示すマジックナンバーであってもよい。
コントローラ5は、LBAリストの情報をホスト2に通知する(S304)。コントローラ5は、ホスト2から受信したメモリシステム3のログを取得するコマンドに応じて、LBAリストの情報をホスト2に提供する。また、コントローラ5は、S303の手順を実行する前に、LBAリストの情報をホスト2に通知する手順を実行してもよい。
そして、コントローラ5は、LBA通知動作を終了する(終了)。
また、SLCブロックにLBAリストの情報が存在しない場合(S302でNo)、コントローラ5は、LBA通知動作を終了する(終了)。
次に、データ読み出し動作の手順について説明する。図13は、実施形態に係るメモリシステム3において実行されるデータ読み出し動作の手順を示すフローチャートである。
コントローラ5は、ホスト2からリードコマンドを受信したか否かを判定する(S401)。
リードコマンドを受信していない場合(S401でNo)、コントローラ5は、リードコマンドを受信するまで待つ。
リードコマンドを受信した場合(S402でYes)、コントローラ5は、読み出し対象LBAが、無効なPBAに対応するか否かを判定する(S402)。コントローラ5は、L2Pテーブル71を参照することによって、リードコマンドが指定するLBAに対応するPBAを取得する。コントローラ5は、取得したPBAが無効な値であるか否かを判定する。
読み出し対象LBAが無効なPBAに対応する場合(S402でYes)、コントローラ5は、ホスト2にエラーを通知する(S403)。コントローラ5は、受信したリードコマンドに対する応答として、エラーを示す通知をホスト2に送信する。
そして、コントローラ5は、リード動作を終了する(終了)。
読み出し対象LBAが無効なPBAに対応しない場合(S402でNo)、コントローラ5は、リード動作を実行する(S404)。コントローラ5は、読み出し対象LBAに対応するPBAが示す記憶位置に記憶されているデータを読み出す。
コントローラ5は、読み出したデータをホスト2に送信する(S405)。
そして、コントローラ5は、リード動作を終了する(終了)。
以上説明したように、本実施形態によれば、コントローラ5は、キャパシタ81からの電力を使用して、書き込み未完了データにそれぞれ対応するLBAの集合を含むLBAリストと、書き込み未完了領域の先頭の記憶位置を示す位置情報とを、NANDメモリ6に書き込む。このように、LBAリストをNANDメモリ6に書き込むことにより、予期しない電力喪失によって失われたデータを明確に特定することが可能となる。
よって、予期せぬ電力喪失によって、書き込み未完了データが失われた場合であっても、コントローラ5は、失われたデータに対応するLBAの情報をホスト2に提供することができる。
また、書き込み未完了領域の先頭の記憶位置を示す位置情報をNANDメモリ6に書き込むことにより、予期しない電力喪失によって書き込みが中断された記憶位置を特定することができる。
また、失われたデータに対応するLBAを無効なPBA(マジックナンバー)と対応付けることによって、コントローラ5は、このLBAを指定するリードコマンドを受信した場合であっても、エラーを通知することができる。このことは、コントローラ5が間違ったデータを読み出して、ホスト2に送信することを防ぐことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム、2…ホスト、3…メモリシステム、4…バス、5…コントローラ、6…不揮発性メモリ、7…DRAM、8…電源回路、21…プロセッサ、22…メモリ、50…内部バス、51…ホストインタフェース、52…CPU、53…SRAM、54…DMAC、55…ECC回路、56…DRAMインタフェース、57…NANDインタフェース、71…L2Pテーブル、72…ブロック管理テーブル、81…キャパシタ、531…内部バッファ。
Claims (10)
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
論理アドレスを指定するライトコマンドを前記ホストから受信したことに応じて、前記ホストから受信するデータを前記複数のブロックから割り当てた第1の書き込み先ブロックに書き込むように構成されたコントローラと、を具備し、
前記コントローラは、
前記ホストから受信済みであり且つ前記第1の書き込み先ブロックへの書き込みが完了していない書き込み未完了データにそれぞれ対応する複数の論理アドレスを含む第1のリストと、前記第1の書き込み先ブロックのうち、データの書き込みが完了していない書き込み未完了領域の先頭の記憶位置を示す第1の記憶位置情報とを管理し、
前記ホストからの予告無しで前記メモリシステムへの電力の供給が断たれる電力喪失が起きた場合、前記メモリシステムに供給される電力を蓄えるキャパシタからの電力を使用して、前記第1のリストと、前記第1の記憶位置情報とを、前記不揮発性メモリに書き込むように構成されている、
メモリシステム。 - 前記第1のリストは、前記ホストから受信済みであり且つ前記第1の書き込み先ブロックに書き込まれるデータにそれぞれ対応する論理アドレスの集合から、前記第1の書き込み先ブロックへの書き込みが完了して前記第1の書き込み先ブロックから読み出し可能となったデータにそれぞれ対応する論理アドレスの集合を除いた残りの論理アドレスの集合を含む、
請求項1に記載のメモリシステム。 - 前記第1のリストに含まれる前記複数の論理アドレスは、前記書き込み未完了データが前記書き込み未完了領域に書き込まれる順序と同じ順序で並べられている、
請求項1に記載のメモリシステム。 - 前記メモリシステムに対する電力が回復した後、前記コントローラは、前記不揮発性メモリに記憶されている前記第1のリストを、前記電力喪失によって失われたデータを示す情報として、前記ホストに提供するように構成されている、
請求項1に記載のメモリシステム。 - 前記コントローラは、
前記メモリシステムをアクセスするために前記ホストによって使用される論理アドレスそれぞれと前記不揮発性メモリの物理アドレスそれぞれとの間のマッピングを、論理物理アドレス変換テーブルを使用して管理し、
前記メモリシステムに対する電力が回復した後、前記不揮発性メモリに記憶されている前記第1のリストに基づいて、前記第1のリストに含まれる前記複数の論理アドレスの各々に対応する前記論理物理アドレス変換テーブルのエントリに、エラーを示す値を格納するように構成されている、
請求項1に記載のメモリシステム。 - 前記コントローラは、
前記電力喪失が起きた場合、前記ホストから受信済みであり且つ前記不揮発性メモリへの書き込みが完了していない書き込み未完了データにそれぞれ対応する論理アドレスのリストをバックアップする第1のモードで書き込みを制御する第1のブロックの集合と、前記電力喪失が起きた場合、前記不揮発性メモリへの前記書き込み未完了データの書き込みを完了させる第2のモードで書き込みを制御する第2のブロックの集合とを管理するように構成されている、
請求項1に記載のメモリシステム。 - 前記第1の記憶位置情報は、前記第1の書き込み先ブロックのブロックアドレスと、前記第1の書き込み先ブロックの先頭の記憶位置に対する前記書き込み未完了領域の先頭の記憶位置のオフセットとを含む、
請求項1に記載のメモリシステム。 - 前記第1の書き込み先ブロックは、複数の物理ブロックを含むブロックグループである、
請求項1に記載のメモリシステム。 - ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記メモリシステムに供給される電力を蓄えるキャパシタと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラと、を具備し、
前記コントローラは、
前記複数のブロックのうちの一つのブロックを第1の書き込み先ブロックとして割り当て、
論理アドレスを指定するライトコマンドを前記ホストから受信する度、前記ライトコマンドに関連付けられたデータを内部バッファに格納し、
前記内部バッファに格納された前記データにそれぞれに対応する論理アドレスの集合を、前記ホストから受信済みであり且つ前記第1の書き込み先ブロックへの書き込みが完了していない書き込み未完了データにそれぞれ対応する複数の論理アドレスを保持するための第1のリストに追加し、
前記内部バッファに格納されている未書き込みのデータのサイズが前記不揮発性メモリの書き込みサイズに達する度、前記書き込みサイズを有するデータを前記第1の書き込み先ブロックに書き込み、
前記第1の書き込み先ブロックから前記書き込みサイズ分のデータが読み出し可能になった場合、前記読み出し可能になったデータに対応する論理アドレスの集合を前記第1のリストから削除し、第1の記憶位置情報が前記第1の書き込み先ブロックの書き込み未完了領域の先頭の記憶位置を示すように、前記第1の記憶位置情報が示す記憶位置を前記書き込みサイズ分だけ進め、
前記ホストからの予告無しで前記メモリシステムへの電力の供給が断たれる電力喪失が起きた場合、前記キャパシタからの電力を使用して、前記第1のリストと、前記第1の記憶位置情報とを、前記不揮発性メモリに書き込むように構成されている、
メモリシステム。 - 複数のブロックを含む不揮発性メモリを含むメモリシステムを制御する制御方法であって、
前記複数のブロックのうちの一つのブロックを第1の書き込み先ブロックとして割り当てることと、
論理アドレスを指定するライトコマンドをホストから受信する度、前記ライトコマンドに関連付けられたデータを前記メモリシステムの内部バッファに格納することと、
前記内部バッファに格納された前記データにそれぞれに対応する論理アドレスの集合を、前記ホストから受信済みであり且つ前記第1の書き込み先ブロックへの書き込みが完了していない書き込み未完了データにそれぞれ対応する複数の論理アドレスを保持するための第1のリストに追加することと、
前記内部バッファに格納されている未書き込みのデータのサイズが前記不揮発性メモリの書き込みサイズに達する度、前記書き込みサイズを有するデータを前記第1の書き込み先ブロックに書き込むことと、
前記第1の書き込み先ブロックから前記書き込みサイズ分のデータが読み出し可能になった場合、前記読み出し可能になったデータに対応する論理アドレスの集合を前記第1のリストから削除し、第1の記憶位置情報が前記第1の書き込み先ブロックの書き込み未完了領域の先頭の記憶位置を示すように、前記第1の記憶位置情報が示す記憶位置を前記書き込みサイズ分だけ進めることと、
前記ホストからの予告無しで前記メモリシステムへの電力の供給が断たれる電力喪失が起きた場合、前記メモリシステムに供給される電力を蓄えるキャパシタからの電力を使用して、前記第1のリストと、前記第1の記憶位置情報とを、前記不揮発性メモリに書き込むことと、を具備する
制御方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022041509A JP2023136083A (ja) | 2022-03-16 | 2022-03-16 | メモリシステムおよび制御方法 |
TW112131600A TW202401261A (zh) | 2022-03-16 | 2022-05-19 | 記憶體系統 |
TW111118640A TWI816401B (zh) | 2022-03-16 | 2022-05-19 | 記憶體系統及記憶體系統之控制方法 |
CN202210711021.9A CN116795729A (zh) | 2022-03-16 | 2022-06-22 | 存储器系统以及存储器系统的控制方法 |
US17/941,388 US20230297247A1 (en) | 2022-03-16 | 2022-09-09 | Memory system and method of controlling nonvolatile memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022041509A JP2023136083A (ja) | 2022-03-16 | 2022-03-16 | メモリシステムおよび制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023136083A true JP2023136083A (ja) | 2023-09-29 |
Family
ID=88048608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022041509A Pending JP2023136083A (ja) | 2022-03-16 | 2022-03-16 | メモリシステムおよび制御方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230297247A1 (ja) |
JP (1) | JP2023136083A (ja) |
CN (1) | CN116795729A (ja) |
TW (2) | TW202401261A (ja) |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836108B2 (en) * | 2014-09-10 | 2017-12-05 | Toshiba Memory Corporation | Memory system and controller |
US20170242822A1 (en) * | 2016-02-18 | 2017-08-24 | Samsung Electronics Co., Ltd. | Dram appliance for data persistence |
JP2017156803A (ja) * | 2016-02-29 | 2017-09-07 | 株式会社東芝 | ストレージ装置及び同装置における管理情報退避方法 |
US9990150B2 (en) * | 2016-03-22 | 2018-06-05 | Toshiba Memory Corporation | Method to provide transactional semantics for updates to data structures stored in a non-volatile memory |
JP6732684B2 (ja) * | 2017-03-15 | 2020-07-29 | キオクシア株式会社 | 情報処理装置、ストレージデバイスおよび情報処理システム |
JP6640776B2 (ja) * | 2017-03-17 | 2020-02-05 | キオクシア株式会社 | メモリシステム |
US10802727B2 (en) * | 2017-06-07 | 2020-10-13 | ScaleFlux, Inc. | Solid-state storage power failure protection using distributed metadata checkpointing |
TWI668700B (zh) * | 2017-12-22 | 2019-08-11 | 慧榮科技股份有限公司 | 資料儲存裝置與記憶體裝置之資料處理方法 |
TWI645404B (zh) * | 2017-12-28 | 2018-12-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體操作方法 |
US11263180B2 (en) * | 2019-02-23 | 2022-03-01 | National Tsing Hua University | Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device |
US11042322B2 (en) * | 2019-09-13 | 2021-06-22 | Toshiba Memory Corporation | SSD supporting low latency operation |
US11726704B2 (en) * | 2020-03-31 | 2023-08-15 | Kioxia Corporation | Buffer optimization for solid-state drives |
US20210382828A1 (en) * | 2020-06-03 | 2021-12-09 | Alibaba Group Holding Limited | Method and system for facilitating acceleration of a mapping table reconstruction |
US11379141B2 (en) * | 2020-07-31 | 2022-07-05 | Kioxia Corporation | SSD supporting read-only mode after PLP backup failure |
US20220187992A1 (en) * | 2020-12-16 | 2022-06-16 | Kioxia Corporation | Systems and methods for data copy offload for storage devices |
TWI787848B (zh) * | 2021-03-17 | 2022-12-21 | 日商鎧俠股份有限公司 | 記憶體系統 |
US20230044942A1 (en) * | 2021-08-03 | 2023-02-09 | Kioxia Corporation | Conditional update, delayed lookup |
-
2022
- 2022-03-16 JP JP2022041509A patent/JP2023136083A/ja active Pending
- 2022-05-19 TW TW112131600A patent/TW202401261A/zh unknown
- 2022-05-19 TW TW111118640A patent/TWI816401B/zh active
- 2022-06-22 CN CN202210711021.9A patent/CN116795729A/zh active Pending
- 2022-09-09 US US17/941,388 patent/US20230297247A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
TW202338620A (zh) | 2023-10-01 |
TW202401261A (zh) | 2024-01-01 |
CN116795729A (zh) | 2023-09-22 |
TWI816401B (zh) | 2023-09-21 |
US20230297247A1 (en) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107957961B (zh) | 存储设备、存储系统和计算设备 | |
TWI643066B (zh) | 用來於一記憶裝置中重新使用關於垃圾收集的一目的地區塊之方法、記憶裝置及其控制器以及電子裝置 | |
CN112416242B (zh) | 数据存储设备及其操作方法 | |
CN107077427B (zh) | 跨电源周期来跟踪对写入命令和解除映射命令的混合 | |
US8453021B2 (en) | Wear leveling in solid-state device | |
US20110231713A1 (en) | Flash memory module | |
US8694748B2 (en) | Data merging method for non-volatile memory module, and memory controller and memory storage device using the same | |
JP2010191782A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US9798475B2 (en) | Memory system and method of controlling nonvolatile memory | |
US20130275655A1 (en) | Memory management method and memory controller and memory storage device using the same | |
US8316208B2 (en) | Memory controller, flash memory system with memory controller, and method of controlling flash memory | |
TWI693520B (zh) | 用來於一記憶裝置中進行系統備份的方法、相關記憶裝置及其控制器、以及相關電子裝置 | |
US10181352B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11366751B2 (en) | Storage device and storage control method | |
US9792068B2 (en) | Memory system and method of controlling nonvolatile memory | |
TWI816401B (zh) | 記憶體系統及記憶體系統之控制方法 | |
JP2023001494A (ja) | メモリシステムおよび制御方法 | |
CN109002265B (zh) | 一种数据处理的方法以及相关装置 | |
CN113393886A (zh) | 用于读取操作的存储器系统及其操作方法 | |
US20230289067A1 (en) | Memory system | |
US20240202113A1 (en) | Memory system | |
US20230297262A1 (en) | Memory system and control method | |
JP4684587B2 (ja) | メモリカード | |
JP2024033081A (ja) | メモリシステムおよび制御方法 | |
JP2024033402A (ja) | メモリシステムおよび制御方法 |