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

メモリシステム Download PDF

Info

Publication number
JP2020035128A
JP2020035128A JP2018160233A JP2018160233A JP2020035128A JP 2020035128 A JP2020035128 A JP 2020035128A JP 2018160233 A JP2018160233 A JP 2018160233A JP 2018160233 A JP2018160233 A JP 2018160233A JP 2020035128 A JP2020035128 A JP 2020035128A
Authority
JP
Japan
Prior art keywords
mode
write
data
qlc
slc
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
JP2018160233A
Other languages
English (en)
Inventor
滋博 浅野
Shigehiro Asano
滋博 浅野
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 JP2018160233A priority Critical patent/JP2020035128A/ja
Priority to US16/433,148 priority patent/US11372753B2/en
Publication of JP2020035128A publication Critical patent/JP2020035128A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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/061Improving I/O performance
    • 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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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
    • G11C11/5635Erasing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Abstract

【課題】ホストによる書き込み速度の要求を満たしながら不揮発性メモリを効率的に利用できるメモリシステムを提供する。【解決手段】情報処理システム1におけるメモリシステム3は、不揮発性メモリ5と、ライトコマンドを受け付けたことに伴ってホスト2から受信されたデータを格納するRAM6と、メモリセル当たりにNビットのデータが書き込まれる第1モードとメモリセル当たりにMビットのデータが書き込まれる第2モードの少なくとも一方を書き込みモードとして選択し、RAM内のデータを不揮発性メモリに書き込むコントローラ4とを具備する。Nは1以上の数であり、MはNよりも大きい数である。コントローラは、ライトコマンドを受け付けたことに伴ってホストから受信されたデータの受信速度が閾値以下である場合、第2モードを、受信速度が閾値を超えている場合、第1モードと第2モードとを、書き込みモードとして選択する。【選択図】図1

Description

本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの1つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、ハードディスクドライブ(HDD)と比較して、高速なアクセスが可能であり、消費電力が低いので、様々なコンピューティングデバイスのメインストレージとして使用される事例が増加している。
NAND型フラッシュメモリのような不揮発性メモリにおいては、その許容できる最大プログラム/イレーズ(P/E)サイクル数に限界があり、実行されたP/Eサイクル数がその限界値に達すると不揮発性メモリが所定の信頼性を保持できない可能性がある。
また、不揮発性メモリにおいては、メモリセル当たりに格納されるデータのビット数(すなわち、記憶密度)が増えれば増えるほど、全体の記憶容量は増加するものの、データを書き込むために要する時間およびデータを読み出すために要する時間は長くなる。
最近では、1つのメモリセルに1ビットのデータを格納するシングルレベルセル(SLC)モードと、1つのメモリセルに2ビット以上のデータを格納するマルチレベルセル(MLC)モードとを選択的に使用して、データを不揮発性メモリに書き込むことが可能なメモリシステムも開発されている。
米国特許出願公開第2016/0070336号明細書 米国特許出願公開第2018/0059761号明細書 特開2016−170759号公報
本発明が解決しようとする課題は、ホストによる書き込み速度の要求を満たしながら、不揮発性メモリを効率的に利用できるメモリシステムを提供することである。
実施形態によれば、メモリシステムは、不揮発性メモリと、ランダムアクセスメモリと、コントローラとを具備する。前記ランダムアクセスメモリは、ホストからライトコマンドを受け付けた場合に、当該ライトコマンドを受け付けたことに伴って前記ホストから受信されたデータを格納する。前記コントローラは、前記不揮発性メモリと前記ランダムアクセスメモリとに電気的に接続され、前記不揮発性メモリのメモリセル当たりにNビットのデータが書き込まれる第1モードと前記不揮発性メモリのメモリセル当たりにMビットのデータが書き込まれる第2モードの少なくとも一方を書き込みモードとして選択し、前記ランダムアクセスメモリに格納されているデータを前記不揮発性メモリに書き込む。前記Nは1以上の数であり、前記Mは前記Nよりも大きい数である。前記コントローラは、1つ以上のライトコマンドを受け付けたことに伴って前記ホストから受信されたデータの受信速度が閾値以下である場合、前記第2モードを前記書き込みモードとして選択し、前記受信速度が前記閾値を超えている場合、前記第1モードと前記第2モードとを前記書き込みモードとして選択する。
実施形態に係るメモリシステムの構成例を示すブロック図。 同実施形態のメモリシステムで用いられるルックアップテーブル(LUT)の構成例を示す図。 同実施形態のメモリシステムで用いられるLBA範囲−書き込みモードテーブルの構成例を示す図。 同実施形態のメモリシステムで用いられる書き込みモードの特徴を説明するための図。 図4の書き込みモードに応じたNAND型フラッシュメモリの記憶容量の例を示す図。 同実施形態のメモリシステムによって、QLCモードとSLCモードでそれぞれデータが書き込まれる場合に要する時間の例を示す図。 同実施形態のメモリシステムにおいて、ユーザデータがSLCモードでの書き込みを経由してQLCモードで書き込まれる場合に、各モードでの書き込みに用いられるブロック群の記憶容量と書き込み耐性との関係の例を説明するための図。 同実施形態のメモリシステムにおいて、ユーザデータがSLCモードでの書き込みを経由してQLCモードで書き込まれる場合に、各モードでの書き込みに用いられるブロック群の記憶容量と書き込み耐性との関係の別の例を説明するための図。 同実施形態のメモリシステムによって、書き込みバンド幅が閾値以下である場合に、QLC用ライトバッファに格納されたユーザデータがQLCブロック群に並列に書き込まれる例を示す図。 同実施形態のメモリシステムによって、書き込みバンド幅が閾値を超えている場合に、QLC用ライトバッファに格納されたユーザデータがQLCブロック群に、SLC用ライトバッファに格納されたユーザデータがSLCブロック群に、並列に書き込まれる例を示す図。 同実施形態のメモリシステムによって、書き込みバンド幅が閾値以下である場合に、ユーザデータがQLCモードでNAND型フラッシュメモリに書き込まれる例を示す図。 同実施形態のメモリシステムによって、書き込みバンド幅が閾値を超えている場合に、ユーザデータがQLCモードとSLCモードとでNAND型フラッシュメモリに書き込まれる例を示す図。 図11のメモリシステムにおいて、外部電源からの電力供給が遮断されたことに応じて、QLC用ライトバッファ内のユーザデータがSLCモードでNAND型フラッシュメモリに書き込まれる例を示す図。 図12のメモリシステムにおいて、外部電源からの電力供給が遮断されたことに応じて、QLC用ライトバッファおよびSLC用ライトバッファ内のユーザデータがSLCモードでNAND型フラッシュメモリに書き込まれる例を示す図。 同実施形態のメモリシステムによって、NAND型フラッシュメモリに暫定的にSLCモードで書き込まれたユーザデータが、QLCモードで改めて書き込まれる例を示す図。 同実施形態のメモリシステムにおいて、(A)システムが成立する書き込みバンド幅の遷移の例と、(B)システムが成立しない書き込みバンド幅の推移の例とを説明するための図。 同実施形態のメモリシステムによって実行されるモード制御処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるバッファリング処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCライト処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるQLCライト処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるパワー・ロス・プロテクション(PLP)処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行される書き換え処理の手順の例を示すフローチャート。
以下、実施の形態について図面を参照して説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、NAND型フラッシュメモリ5のような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NAND型フラッシュメモリ5を備えるソリッドステートドライブ(SSD)3として実現されている。
情報処理システム1は、ホストデバイス(以下、ホストとも称する)2と、SSD3とを含む。ホスト2は、SSD3にアクセスする情報処理装置である。ホスト2は、大量且つ多様なデータをSSD3に保存するストレージサーバであってもよいし、パーソナルコンピュータであってもよい。
SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等が使用され得る。
SSD3は、コントローラ4、およびNAND型フラッシュメモリ5を備える。コントローラ4は、System−on−a−chip(SoC)のような回路によって実現され得る。
また、SSD3は、揮発性メモリであるランダムアクセスメモリ(RAM)、例えば、ダイナミックランダムアクセスメモリ(DRAM)6を備えていてもよい。あるいは、スタティックランダムアクセスメモリ(SRAM)のようなランダムアクセスメモリがコントローラ4に内蔵されていてもよい。なお、DRAM6が、コントローラ4に内蔵されていてもよい。
DRAM6等のランダムアクセスメモリには、NAND型フラッシュメモリ5に書き込まれるデータや、NAND型フラッシュメモリ5から読み出されるデータを一時的に格納するためのバッファ領域が設けられる。このバッファ領域は、例えば、NAND型フラッシュメモリ5にクワッドレベルセル(QLC)モードで書き込まれるべきデータを一時的に格納するためのQLC用ライトバッファ21、NAND型フラッシュメモリ5にシングルレベルセル(SLC)モードで書き込まれるべきデータを一時的に格納するためのSLC用ライトバッファ22、および異なる書き込みモードでの書き換えに用いられるデータを一時的に格納するための書き換え用バッファ23として割り当てられ得る。
また、DRAM6等のランダムアクセスメモリには、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)26のキャッシュ領域が設けられている。LUT26は、図2に示すように、論理アドレス(例えば、論理ブロックアドレス(LBA))それぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。
さらに、DRAM6等のランダムアクセスメモリには、ホスト2から受け付けたコマンドの処理のために用いられる各種の値(例えば、書き込み要求量24等)や、各種のテーブル(例えば、LBA範囲−書き込みモードテーブル27等)の格納領域が設けられてもよい。LBA範囲−書き込みモードテーブル27は、図3に示すように、LBA範囲とこのLBA範囲に対応する書き込みモードとの対応関係を管理する。各LBA範囲は開始LBAおよび終了LBAによって規定されてもよいし、開始LBAとサイズとによって規定されてもよい。
図1に戻り、SSD3は電源制御部7をさらに備えている。電源制御部7は、SSD3内の各部に電力を供給する。電源制御部7は、例えば、図示しない外部電源から電源制御部7に供給される電力を用いて、SSD3内の各部に供給される電力を制御する。外部電源から供給される電力が遮断された場合、電源制御部7は、蓄電装置71に蓄積された電荷を用いて、SSD3内の各部に一時的に電力を供給する。蓄電装置71は、キャパシタ、バッテリ等として実現され得る。
蓄電装置71は、外部電源から供給される電力が遮断された場合のバックアップ用の電源として機能する。蓄電装置71には、例えば、外部電源から電力が供給されている間に、SSD3がパワー・ロス・プロテクション(PLP)機能を用いて動作するために必要な電荷が蓄積されている。PLP機能は、外部電源からSSD3に供給される電力が遮断された場合に、蓄電装置71に蓄積された電荷のエネルギーを用いて、DRAM6に格納され、且つNAND型フラッシュメモリ5には書き込まれていないユーザデータ等を、NAND型フラッシュメモリ5に書き込むための機能である。
また、NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(すなわち複数のNAND型フラッシュメモリダイ)を含んでいてもよい。各チップは、メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリとして実現され得る。
メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリの例には、メモリセル当たりに2ビットのデータを格納可能なマルチレベルセル(MLC、あるいは4LC)フラッシュメモリ、メモリセル当たりに3ビットのデータを格納可能なトリプルレベルセル(TLC、あるいは8LC)フラッシュメモリ、メモリセル当たりに4ビットのデータを格納可能なクワッドレベルセル(QLC、あるいは16LC)フラッシュメモリ、等が含まれる。なお、メモリセル当たりに2ビット以上のデータを格納するフラッシュメモリをMLCフラッシュメモリと称することもあるが、以下では、メモリセル当たりに2ビットのデータを格納するフラッシュメモリをMLCフラッシュメモリと称する。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイ502を含む。このNAND型フラッシュメモリ5は、二次元構造のNAND型フラッシュメモリであってもよいし、三次元構造のNAND型フラッシュメモリであってもよい。
NAND型フラッシュメモリ5は、コントローラ4によって転送される書き込み対象のユーザデータを一時的に格納するページバッファ503を備える。例えば、コントローラ4によって、ページバッファ503にユーザデータが格納され、プログラムが指示された場合に、NAND型フラッシュメモリ5はこのユーザデータをメモリセルアレイ502に書き込む。つまり、NAND型フラッシュメモリ5は、コントローラ4からページバッファ503を介して書き込み対象のユーザデータを受け取ることができる。
NAND型フラッシュメモリ5のメモリセルアレイ502は、複数のブロックB0〜Bm−1を含む。ブロックB0〜Bm−1の各々は複数のページ(ここでは、ページP0〜Pn−1)を含む。ブロックB0〜Bm−1は、最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページP0〜Pn−1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0〜Pn−1は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
ブロックB0〜Bm−1の各々に対して許容できる最大P/Eサイクル数には限界がある。あるブロックの1回のP/Eサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作(より詳しくは、プログラム動作)とを含む。
NAND型フラッシュメモリ5は、メモリセル当たりに1ビットのデータが書き込まれるSLCモード、メモリセル当たりに2ビットのデータが書き込まれるMLCモード、メモリセル当たりに3ビットのデータが書き込まれるTLCモード、メモリセル当たりに4ビットのデータが書き込まれるQLCモードのいずれかで、書き込み動作を実行することができる。
例えば、NAND型フラッシュメモリ5は、メモリセル当たりに2ビットを格納可能なMLCフラッシュメモリ(すなわち、4LCフラッシュメモリ)として実現されていてもよい。
この場合、通常は、2ページ分のデータである下位ページデータおよび上位ページデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに2ビットのデータを書き込むことができる。このMLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、メモリセル当たりに1ビットのデータのみを格納可能なSLC領域として使用することができる。
このSLC領域にデータを書き込む書き込み動作においては、1ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、SLC領域として使用される各ブロックにおいては、SLCフラッシュメモリ内の各ブロック(すなわち、SLCブロック)と同様に、メモリセル当たりに1ビットのデータのみを書き込むことができる。この結果、SLC領域として使用される各ブロックは、SLCブロックとして機能する。
あるいは、NAND型フラッシュメモリ5は、メモリセル当たりに3ビットのデータを格納可能なTLCフラッシュメモリ(8LCフラッシュメモリ)であってもよい。
この場合、通常は、3ページ分のデータである下位ページデータ、ミドルページデータ、および上位ページデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに3ビットのデータを書き込むことができる。このTLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、メモリセル当たりに2ビットのデータを格納可能なMLC領域として使用されてもよい。なお、SLC領域およびMLC領域は、ブロックよりも細かい単位(例えば、ワード線の単位、ブロック内のワード線の集合の単位)で設定されてもよい。MLC領域においては、2ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、MLC領域においては、メモリセル当たりに2ビットのデータのみを書き込むことができる。
あるいは、NAND型フラッシュメモリ5は、メモリセル当たりに4ビットを格納可能なQLCフラッシュメモリ(16LCフラッシュメモリ)であってもよい。
この場合、通常、4ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに4ビットのデータを書き込むことができる。このQLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、上述のMLC領域として使用されてもよいし、あるいは、メモリセル当たりに3ビットのデータを格納可能なTLC領域として使用されてもよい。なお、SLC領域、MLC領域、およびTLC領域は、ブロックよりも細かい単位(例えば、ワード線の単位、ブロック内のワード線の集合の単位)で設定されてもよい。TLC領域においては、3ページ分のデータのみが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、TLC領域においては、メモリセル当たりに3ビットのデータを書き込むことができる。
図4に示すように、各書き込みモードにおけるメモリセル当たりの記憶密度は、SLCモードでは2値(すなわち、ワード線当たり1ページ)であり、MLCモードでは4値(すなわち、ワード線当たり2ページ)であり、TLCモードでは8値(すなわち、ワード線当たり3ページ)であり、QLCモードでは16値(すなわち、ワード線当たり4ページ)である。そして、NAND型フラッシュメモリ5に対するデータの読み出し速度および書き込み速度は、記憶密度が高いほど遅く、記憶密度が低いほど速い。したがって、これら4つのモードでは、QLCモードにおけるデータの読み出しおよび書き込みが最も遅く、SLCモードにおける読み出しおよび書き込みが最も速い。
また、NAND型フラッシュメモリ5の寿命(エンデュランス)は、記憶密度が高いほど短く、記憶密度が低いほど長い。寿命と記憶密度の関係について、メモリセルの閾値電圧分布に着目して説明する。記憶密度が低いほど、隣り合う状態に対応する閾値電圧分布間のマージンは広くなり、記憶密度が高いほど、閾値電圧分布間のマージンは狭くなる。広いマージンは、たとえメモリセルに加わるストレスによってこのメモリセルの閾値電圧がずれても、このメモリセルのデータが誤ったデータとして読み出されてしまう確率の上昇を抑制する。
このため、例えば、SLCモードにおける許容可能なメモリセルの個別の疲弊度は、QLCモードにおける許容可能なメモリセルの個別の疲弊度よりも高くなる。したがって、閾値電圧分布間のマージンが広い低記憶密度の書き込みモードを使用した場合は、閾値電圧分布間のマージンが狭い高記憶密度の書き込みモードを使用した場合に比べ、NAND型フラッシュメモリ5の寿命を長くすること(すなわち、許容できる最大P/Eサイクル数を増やすこと)ができる。
図4に示す4つのモードでは、QLCモードにおける寿命が最も短くなり、SLCモードにおける寿命が最も長くなる。例えば、QLCモードでデータが書き込まれた場合に許容できる最大P/Eサイクル数は数kサイクルであり、SLCモードでデータが書き込まれた場合に許容できる最大P/Eサイクル数は数十kサイクルである。
なお、NAND型フラッシュメモリ5は、メモリセル当たりに5ビット以上を格納可能に構成されていてもよい。この場合においても、NAND型フラッシュメモリ5内の任意の領域は、メモリセル当たりに4ビット以下のデータのみが書き込まれる領域として使用され得る。
図5は、各書き込みモードに応じたNAND型フラッシュメモリ5の記憶容量の例を示す。ここでは、NAND型フラッシュメモリ5に含まれる複数のNAND型フラッシュメモリチップが、メモリセル当たりに4ビットを格納可能に構成されたQLCフラッシュメモリとして実現される場合を例示する。また、NAND型フラッシュメモリ5にQLCモードでデータが書き込まれた場合、SSD3の記憶容量は512GBであることを想定する。
図5に示すように、バッドブロック等がない最適な条件下では、NAND型フラッシュメモリ5にTLCモードでデータが書き込まれた場合のSSD3の記憶容量は384GBであり、MLCモードでデータが書き込まれた場合のSSD3の記憶容量は256GBであり、SLCモードでデータが書き込まれた場合のSSD3の記憶容量は128GBである。
このように、データがいずれの書き込みモードで書き込まれるかによって、NAND型フラッシュメモリ5の記憶容量は異なる。
図1に戻り、コントローラ4は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応するNANDインタフェースを備えるNANDコントローラ13およびECC処理部15を介して、NAND型フラッシュメモリ5に電気的に接続されている。NANDコントローラ13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。
NANDコントローラ13およびECC処理部15は、複数のチャネル(Ch)を介して、NAND型フラッシュメモリ5内の複数のNAND型フラッシュメモリチップにそれぞれ接続されていてもよい。複数のNAND型フラッシュメモリチップが並列に駆動されることにより、NAND型フラッシュメモリ5に対するアクセスを広帯域化することができる。
ECC処理部15は、NAND型フラッシュメモリ5に書き込まれるデータと、NAND型フラッシュメモリ5から読み出されたデータとを、誤り訂正符号(ECC)で保護するための機能を有する回路として実現され得る。ECC処理部15は、NAND型フラッシュメモリ5に書き込まれるデータにECCを付加する。また、ECC処理部15は、NAND型フラッシュメモリ5から読み出されたデータに付加されたECCを用いて、読み出されたデータに誤りが発生しているか否かを判別し、誤りが発生している場合にはその誤りを訂正する。
コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして機能する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位の読み出し(リード)動作および書き込み(ライト)動作のための処理、等が含まれる。論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。以下では、この論理アドレスとして、論理ブロックアドレス(LBA)が使用されることを想定する。
LBAそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するLUT26を用いて実行される。コントローラ4は、LUT26を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるLBAに対応する物理アドレスは、このLBAのデータが書き込まれたNAND型フラッシュメモリ5内の物理記憶位置を示す。LUT26は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
1つのページへのデータ書き込みは、1回のP/Eサイクル当たり1回のみ可能である。このため、コントローラ4は、あるLBAに対応する更新データを、このLBAに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、このLBAをこの別の物理記憶位置に関連付けるようにLUT26を更新することにより、以前のデータを無効化する。
以下では、LUT26から参照されているデータ(すなわち、LBAと紐付けられているデータ)を有効データと称する。また、どのLBAとも紐付けられていないデータを無効データと称する。有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、もはやホスト2からリードされる可能性がないデータである。
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
コントローラ4は、ホストインタフェース11、CPU12、NANDコントローラ13、DRAMインタフェース14、ECC処理部15等を含んでもよい。これらホストインタフェース11、CPU12、NANDコントローラ13、DRAMインタフェース14、およびECC処理部15は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2から様々なコマンド、例えば、I/Oコマンド、各種制御コマンド、等を受信する回路として機能する。I/Oコマンドには、ライトコマンド、リードコマンド、等が含まれ得る。制御コマンドには、アンマップコマンド(トリムコマンド)、フォーマットコマンド、フラッシュコマンド等が含まれ得る。フォーマットコマンドは、SSD3全体をアンマップするためのコマンドである。フラッシュコマンドは、SSD3内にキャッシュまたはバッファされているダーティデータ(例えば、ユーザデータおよび関連する管理データ)をNAND型フラッシュメモリ5に書き込むためのコマンドである。
DRAMインタフェース14は、DRAM6のアクセスを制御するように構成されたDRAM制御回路として機能する。DRAM6の記憶領域は、書き込み要求量24、LUT26、およびLBA範囲−書き込みモードテーブル27等を格納するため領域や、QLC用ライトバッファ21、SLC用ライトバッファ22、および書き換え用バッファ23として利用される領域に割り当てられる。LBA範囲−書き込みモードテーブル27は、LBA範囲とこのLBA範囲に対応する書き込みモードとの対応関係を管理するために用いられるテーブルである。
CPU12は、ホストインタフェース11、NANDコントローラ13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行されてもよい。
上述したように、SSD3では、DRAM6のようなランダムアクセスメモリがバッファとして用いられる。SSD3では、ホスト2からのライトコマンドを受け付けたことに伴って当該ホスト2から受信された書き込み対象のユーザデータがDRAM6に格納された時点で、そのユーザデータがNAND型フラッシュメモリ5に書き込まれる前に、ホスト2に応答することにより、応答時間が短縮されている。
この応答の時点では、ユーザデータのNAND型フラッシュメモリ5への書き込みは完了していない。そのため、もしSSD3に供給される電力が遮断されたならば、揮発性メモリであるDRAM6に格納されているユーザデータは失われてしまう。
そこで、ホスト2とSSD3からなる情報処理システム1におけるデータの一貫性を保つために、SSD3はPLP機能を有することがある。PLP機能を有するSSD3は、外部電源からSSD3に供給される電力が遮断された場合、SSD3内に設けられた蓄電装置71に蓄積された電荷のエネルギーを用いて、DRAM6に格納され、且つNAND型フラッシュメモリ5には書き込まれていないユーザデータを、NAND型フラッシュメモリ5に書き込むように構成される。
ところで、SSD3の市場での成長を支えている特徴の1つに、装置当たりの記憶容量の増大がある。装置当たりの記憶容量の増大は、NAND型フラッシュメモリ5の集積度の向上によるところが大きい。NAND型フラッシュメモリ5の集積度の向上は、メモリセルの微細化と共に、メモリセルに記憶されるデータの多値化によって達成されている。
メモリセルに記憶されるデータの多値化は、1つのメモリセルに1ビットのデータを格納するSLCから、2ビットのデータを格納するMLCや3ビットのデータを格納するTLCに進展し、最近では、4ビットのデータを格納するQLCが実用化されつつある。
多値化されたデータを記憶するメモリセルでは、メモリセル間の干渉が発生することがある。このようなメモリセル間の干渉を緩和させるためには、メモリセルに対して同じデータを複数回入力する等の処理が必要な可能性がある。そのため、NAND型フラッシュメモリ5への書き込みが完了するまで、多くのデータをライトバッファ(例えば、DRAM6)に保持しておく必要がある。
ここで、ライトバッファのサイズとPLPとの関係について説明する。上述した近年の多値化の進展により、ライトバッファのサイズは増大しつつある。また、コントローラ4がホスト2から受信する書き込み対象のユーザデータの受信速度(以下、書き込みバンド幅とも称する)が速いほど、複数のNAND型フラッシュメモリチップを並列に駆動して、コントローラ4がNAND型フラッシュメモリ5にユーザデータを書き込む書き込み速度を速くする必要がある。そのため、書き込みバンド幅が大きくなることに比例してライトバッファのサイズが大きくなる。ホスト2は、書き込み対象のユーザデータをある書き込みバンド幅でコントローラ4に受信させることにより、結果として、コントローラ4に対して、この書き込みバンド幅に応じた書き込み速度でユーザデータをNAND型フラッシュメモリ5に書き込むことを要求する。換言すると、書き込みバンド幅に応じて、要求されるNAND型フラッシュメモリ5への書き込み速度が決定されると云える。
以上を鑑みて、PLPの動作で書き込まれ得る最大のデータ量に相当するライトバッファのサイズは増大しつつある。さらに、PLPの動作は、蓄電装置71に蓄積された電荷のエネルギーを利用するが、蓄電装置71に蓄積可能な電荷量にも限界がある。
外部電源からSSD3に供給される電力が遮断された場合、PLPの動作により、ライトバッファに格納されているユーザデータは、例えば、NAND型フラッシュメモリ5内の専用の領域にSLCモードで書き込まれる。これは、SLCモードでの書き込みが高速であるので、すなわち、MLCモード、TLCモード、およびQLCモードの場合と比較して短時間での書き込みが可能であるので、書き込み動作で消費される電荷量が少ないためである。
PLPの動作で書き込まれるべき、ライトバッファに格納されているデータの量(以下、バッファ量とも称する)を低減する方法として、例えば、ホスト2から受信したユーザデータを、一旦、SLCモードでNAND型フラッシュメモリ5に書き込み、その書き込まれたユーザデータを、アイドル時に、QLCモード(あるいは、TLCモードまたはMLCモード)でNAND型フラッシュメモリ5に改めて書き込む方法がある。
この方法では、NAND型フラッシュメモリ5に対するSLCモードでの書き込み動作(すなわち、データ入力動作およびプログラム動作)に要する時間が短いこと等から、必要なライトバッファのサイズは小さいので、バッファ量も少なくなる。したがって、PLPの動作に必要な電荷量も少ない。
しかし、この方法では、データがSLCモードで書き込まれるSLCブロックの書き込み耐性に問題が生じる可能性がある。すなわち、SLCブロックに対して実行されるP/Eサイクル数が、SLCブロックの最大P/Eサイクル数を超える可能性がある。
例えば、NAND型フラッシュメモリ5全体の記憶容量が、データがQLCモードで書き込まれるQLCブロック群の記憶容量(以下、QLC記憶容量とも称する)と、データがSLCモードで書き込まれるSLCブロック群の記憶容量(以下、SLC記憶容量とも称する)とで構成される場合を想定する。この場合に、SLC記憶容量が、QLC記憶容量の1%となるように構成され、各QLCブロックの最大P/Eサイクル数が10,000回であり、各SLCブロックの最大P/Eサイクル数が100,000回であるならば、QLCブロック群に対するすべての書き込み量が、その1%の記憶容量を有するSLCブロック群を経由することになる。したがって、各SLCブロックには、1,000,000(=10,000/0.01)回の書き込みが行われることになり、これは、SLCブロックの最大P/Eサイクル数を超えている。なお、上述したように、あるブロックの1回のP/Eサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作とを含む。本実施形態では、説明を分かりやすくするために、X回のP/Eサイクルを、X回の書き込みと称することがある。
SLCブロック群を経由することによって発生する書き込み回数(すなわち、P/Eサイクル数)が、最大P/Eサイクル数の範囲内となるようにするためには、SLC記憶容量が、QLC記憶容量の10%となるように、NAND型フラッシュメモリ5を構成する必要がある。この場合、各SLCブロックには、100,000(=10,000/0.1)回の書き込みが行われることになり、SLCブロックの最大P/Eサイクル数の範囲内となる。
しかし、QLC記憶容量の10%がSLC記憶容量となるようにNAND型フラッシュメモリ5が構成されることは、記憶容量の観点において、NAND型フラッシュメモリ5の経済性を損なうものである。つまり、上記の方法では、SLCブロックの書き込み耐性に起因して、NAND型フラッシュメモリ5の経済性が損なわれる。
そのため、本実施形態では、ホスト2からSSD3に要求される書き込み速度を決定する書き込みバンド幅に応じて、書き込みモードを選択する。書き込みバンド幅は、例えば、ホスト2からライトコマンドを受け付けた場合に、ライトコマンドを受け付けたことに伴ってホスト2から受信される、書き込み対象のユーザデータの受信速度である。より具体的には、書き込みバンド幅が閾値以下である場合、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータが第2モードでNAND型フラッシュメモリ5に書き込まれ、書き込みバンド幅が閾値を超えている場合、ユーザデータが第1モードまたは第2モードで書き込まれる。第1モードではメモリセル当たりにNビットのデータが書き込まれ、第2モードではメモリセル当たりにMビットのデータが書き込まれる。なお、Nは1以上の数であり、MはNよりも大きい数である。例えば、第1モードはSLCモードであり、第2モードはQLCモード、TLCモード、またはMLCモードである。
書き込みバンド幅が閾値以下である場合、第2ライトバッファ(例えば、QLC用ライトバッファ21)に第2モードで書き込まれるべきユーザデータが格納され、この第2ライトバッファに格納されたユーザデータが第2モードでNAND型フラッシュメモリ5に書き込まれる。
また、書き込みバンド幅が閾値を超えたことに応じて、DRAM6内の記憶領域が、第1モードで書き込まれるべきユーザデータが格納される第1ライトバッファ(例えば、SLC用ライトバッファ22)にさらに割り当てられる。書き込みバンド幅が閾値を超えている場合、第1バッファに格納されたユーザデータが第1モードでNAND型フラッシュメモリ5に書き込まれ、第2バッファに格納されたユーザデータが第2モードでNAND型フラッシュメモリ5に書き込まれる。
このような構成により、書き込みバンド幅が閾値以下である場合には、ユーザデータが第1モード(例えば、SLCモード)で書き込まれず、書き込みバンド幅が閾値を超えている場合に、ユーザデータが第1モードで書き込まれるので、第1モードでデータが書き込まれるブロックの最大P/Eサイクル数(すなわち、書き込み耐性)を考慮しても、データが第1モードで書き込まれるブロック群として必要な記憶容量を低減することができる。したがって、NAND型フラッシュメモリ5全体の記憶容量を効率的に使用でき、経済性を高めることができる。
以上のことから、第1モードは、メモリセル当たりに格納可能なビット数を減らすことによってSSD3のライト性能およびリード性能を向上させるための性能優先の書き込みモードであると云える。一方、第2モードは、メモリセル当たりに格納可能なビット数を増やすことによって、記憶容量を増加させるための容量優先の書き込みモードであると云える。
図6を参照して、第1モードと第2モードとの間のライト性能の差について説明する。ここでは、第1モードがSLCモードであり、第2モードがQLCモードである場合を例示する。
QLCモードでの書き込みでは、まず、4ページ分のデータが、1回目のData In動作301でNAND型フラッシュメモリチップ内のページバッファ503に格納される。つまり、1ページ当たりのデータサイズが16KBであるならば、64KBのデータがNAND型フラッシュメモリチップ内のページバッファ503に格納される。そして、ページバッファ503に格納された4ページ分のデータをNAND型フラッシュメモリチップ内のメモリセルアレイ502にプログラムするための1回目のプログラム動作302が行われる。
同様にして、4ページ分のデータが、2回目のData In動作303でNAND型フラッシュメモリチップ内のページバッファ503に格納される。2回目のData In動作303で格納されるデータは、1回目のData In動作301で格納されるデータと同一である。そして、ページバッファ503に格納された4ページ分のデータをNAND型フラッシュメモリチップ内のメモリセルアレイ502にプログラムするための2回目のプログラム動作304が行われる。
したがって、QLCモードでの1回の書き込み動作に要する時間には、2回のData In動作301,303に要する時間と、2回のプログラム動作302,304に要する時間とが含まれる。ここでは、これら時間の合計が10ミリ秒(ms)であることを想定する。つまり、64KBのデータを10msで書き込めるので、QLCモードでのSSD3の書き込み速度は、6.4MB/s(=64KB/10ms)であると云える。
DRAM6内のライトバッファは、1回目のData In動作301の始まりから2回目のプログラム304の完了まで、データを保持する必要がある。したがって、6.4MB/sの書き込み速度を実現するためには、DRAM6内の64KBの領域を、ライトバッファとして割り当てる必要がある。
仮に、SSD3において、QLCモードでの書き込みのみで640MB/sの書き込み速度を実現するためには、100個(=640/6.4)のNAND型フラッシュメモリチップを並列に駆動する必要がある。そして、そのためには、DRAM6内の6.4MB(=64KB×100)の領域を、ライトバッファとして割り当てる必要がある。
一方、SLCモードでの書き込みでは、まず、1ページ分のデータが、Data In動作311でNAND型フラッシュメモリチップ内のページバッファ503に格納される。そして、ページバッファ503に格納された1ページ分のデータをNAND型フラッシュメモリチップ内のメモリセルアレイ502にプログラムするためのプログラム動作312が行われる。
したがって、SLCモードでの1回の書き込み動作に要する時間には、1回のData In動作311に要する時間と、1回のプログラム動作312に要する時間とが含まれる。ここでは、これら時間の合計が300マイクロ秒(μs)であることを想定する。つまり、16KBのデータを300μsで書き込めるので、SLCモードでのSSD3の書き込み速度は、53MB/s(=16KB/300μs)であると云える。
仮に、SSD3において、SLCモードでの書き込みのみで640MB/sの書き込み速度を実現するためには、12個(≒640/53)のNAND型フラッシュメモリチップを並列に駆動する必要がある。そして、そのためには、DRAM6内の192KB(=16KB×12)の領域を、ライトバッファとして割り当てる必要がある。
上述した例のように、QLCモード、TLCモード、またはMLCモードでの書き込みは、SLCモードでの書き込みと比較して、書き込み速度が遅い。そのため、ホスト2によって要求される書き込みバンド幅を満たすために、多数のNAND型フラッシュメモリチップを並列に駆動する必要があると共に、ライトバッファとして割り当てられるDRAM6内の記憶容量も増大する。
外部電源からSSD3に供給される電力が遮断された場合、ライトバッファにはDRAM6内の記憶領域が割り当てられているので、当該ライトバッファに格納されているユーザデータは失われてしまう。また、SSD3は、ユーザデータがライトバッファ(すなわち、DRAM6)に書き込まれた時点でホスト2に応答している。そのため、SSD3とホスト2との間のデータの一貫性を保つために、蓄電装置71に蓄積された電荷で電力供給が維持されている間に、ライトバッファに残っているユーザデータをNAND型フラッシュメモリ5に書き込むPLPの動作が行われる。この書き込みには、高速で、消費電力が低いSLCモードが用いられてもよい。
ところで、上述した例では、QLCモードのみでの書き込みで、640MB/sの書き込みバンド幅を実現するためには、6.4MBのライトバッファが必要であることを示した。しかし、PLPの動作のために供給される電荷を蓄積する蓄電装置71の容量には限界があり、蓄電装置71から供給される電荷で電力供給が維持される間に、ライトバッファに格納され得る6.4MBのデータをNAND型フラッシュメモリ5に書き込むための処理を完了できない場合がある。
ライトバッファのサイズを小さくするための対処方法としては、(A)書き込みバンド幅を低下させる方法、あるいは(B)ホスト2から受信したユーザデータを、一旦、SLCモードでNAND型フラッシュメモリ5に書き込み、その書き込まれたユーザデータを、アイドル時に、QLCモード(あるいは、TLCモードまたはMLCモード)でNAND型フラッシュメモリ5に改めて書き込む方法、等が挙げられる。
(A)の方法では、書き込みバンド幅を下げるほど、ライトバッファの容量も減少するが、ホスト2によって要求される書き込みバンド幅を満たすことができなくなる。
また、(B)の方法では、必要なライトバッファの容量は192KBに減少するが、SLCモードでの書き込みに用いられるブロック群が、SLCモードでの最大P/Eサイクル数に達し、障害が発生する場合がある。
図7および図8を参照して、(B)の方法が適用されたSSD3の例について具体的に説明する。
図7に示す例では、以下の条件を想定する。
(1)NAND型フラッシュメモリ5の全体の記憶容量は、データがQLCモードで書き込まれるQLCブロック群611の記憶容量(以下、QLC記憶容量とも称する)と、データがSLCモードで書き込まれるSLCブロック群612の記憶容量(以下、SLC記憶容量とも称する)とで構成され、QLC記憶容量とSLC記憶容量との比は、100対1である。つまり、SLC記憶容量は、QLC記憶容量の1%である。
(2)各QLCブロックの最大P/Eサイクル数は、10,000サイクルである。
(3)各SLCブロックの最大P/Eサイクル数は、100,000サイクルである。
(B)の方法では、ホスト2から受信されたユーザデータが、暫定的にSLCブロックに書き込まれた後、QLCブロックに改めて書き込まれる。図6を参照して上述したように、SLCモードでの書き込み速度は、QLCモードでの書き込み速度よりも速い。そのため、ある書き込みバンド幅を実現するために、ライトバッファに割り当てられるDRAM6内の記憶容量は、QLCモードで書き込みが行われる場合よりも、SLCモードで書き込みが行われる場合の方が少なく済む。
(B)の方法では、QLCブロック群611に書き込まれるすべてのユーザデータが、QLCブロック群611の1%の記憶容量を有するSLCブロック群612への書き込みを経由する。この場合、各SLCブロックには、各QLCブロックに10,000回の書き込みが行われるまでに、1,000,000(=10,000/0.01)回の書き込みが行われることになる。このP/Eサイクル数は、SLCブロックの最大P/Eサイクル数を超えている。
したがって、図7に示す例では、(B)の方法が適用された場合に、NAND型フラッシュメモリ5に信頼性の低下が発生する可能性があり、システムとして成立しない。例えば、実行されたP/Eサイクル数が最大P/Eサイクル数に達したSLCブロック群612にデータが書き込めなくなることによって、ホスト2から新たに書き込みが要求されるユーザデータを、NAND型フラッシュメモリ5に書き込むことができなくなる可能性がある。
一方、図8に示す例では、以下の条件を想定する。
(1)NAND型フラッシュメモリ5の全体の記憶容量は、データがQLCモードで書き込まれるQLCブロック群621の記憶容量(QLC記憶容量)と、データがSLCモードで書き込まれるSLCブロック群622の記憶容量(SLC記憶容量)とで構成され、QLC記憶容量とSLC記憶容量との比は、10対1である。つまり、SLC記憶容量は、QLC記憶容量の10%である。
(2)各QLCブロックの最大P/Eサイクル数は、10,000サイクルである。
(3)各SLCブロックの最大P/Eサイクル数は、100,000サイクルである。
なお、条件(2)および(3)については、図7に示した例と同じである。
(B)の方法では、QLCブロック群621に書き込まれるすべてのユーザデータが、QLCブロック群621の10%の記憶容量を有するSLCブロック群622への書き込みを経由する。この場合、各SLCブロックには、各QLCブロックに10,000回の書き込みが行われるまでに、100,000(=10,000/0.1)回の書き込みが、すなわち、100,000回のP/Eサイクルが、行われることになる。このP/Eサイクル数は、SLCブロックの最大P/Eサイクル数の範囲内である。換言すると、各SLCブロック622に対して実行されるP/Eサイクル数が、SLCブロックの最大P/Eサイクル数の範囲内となるようにするためには、NAND型フラッシュメモリ5に含まれるブロック群において、QLCブロック群621の10%の記憶容量に相当するSLCブロック群622を確保する必要があると云える。
このように、図8に示す例は、(B)の方法が適用された場合にシステムとして成立する。しかし、NAND型フラッシュメモリ5に含まれるブロック群の内、QLCブロック群621の10%の記憶容量に相当するブロック群を、SLCブロック群622として使用することは、NAND型フラッシュメモリ5全体の記憶容量を減少させるので、記憶容量の観点からNAND型フラッシュメモリ5を効率的に利用することができない。つまり、(B)の方法では、各SLCブロック622に対して実行されるP/Eサイクル数がSLCブロックの最大P/Eサイクル数未満になるように、SLCブロック群622の記憶容量が設定されるために、QLCブロック群621の記憶容量が減少するので、NAND型フラッシュメモリ5の経済性が著しく低下する。
そのため、本実施形態では、例えば、書き込みバンド幅が閾値以下である場合、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータをQLCモードでNAND型フラッシュメモリ5に書き込み、書き込みバンド幅が閾値を超えている場合、ユーザデータをQLCモードまたはSLCモードでNAND型フラッシュメモリ5に書き込む。
書き込みバンド幅が閾値以下である場合、QLC用ライトバッファ21にQLCモードで書き込まれるべきユーザデータが格納され、このQLC用ライトバッファ21に格納されたユーザデータがQLCモードでNAND型フラッシュメモリ5に書き込まれる。
また、書き込みバンド幅が閾値を超えたことに応じて、DRAM6内の記憶領域が、SLCモードで書き込まれるべきユーザデータが格納されるSLC用ライトバッファ22にさらに割り当てられる。書き込みバンド幅が閾値を超えている場合、QLC用ライトバッファ21に格納されたユーザデータがQLCモードでNAND型フラッシュメモリ5に書き込まれ、SLC用ライトバッファ22に格納されたユーザデータがSLCモードでNAND型フラッシュメモリ5に書き込まれる。
図9および図10を参照して、書き込みバンド幅に応じて、書き込みモードが選択され、選択された書き込みモードに対応するライトバッファが使用される例を示す。ここでは、図6から図8を参照して上述した例と同様に、640MB/sの書き込みバンド幅を実現するためには、QLCモードのみでユーザデータが書き込まれるならば6.4MBのライトバッファが必要であり、SLCモードのみでユーザデータが書き込まれるならば192KBのライトバッファが必要である場合を想定する。また、閾値は、320MB/sであるとする。
図9に示すように、書き込みバンド幅が320MB/s以下である場合、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータは、すべてQLCモードで書き込まれる。
この320MB/sの書き込みバンド幅を実現するために、DRAM6内の3.2MBの記憶領域が、QLC用ライトバッファ21として割り当てられるが、DRAM6内のいずれの記憶領域も、SLC用ライトバッファ22としては割り当てられない。したがって、ホスト2から受信されたユーザデータはすべて、QLC用ライトバッファ21に格納される。
そして、QLC用ライトバッファ21に格納されているユーザデータが、QLCブロック群561に並列に書き込まれる。このQLCブロック群561に含まれるブロックの数は、最大で50個である。
また、図10に示すように、書き込みバンド幅が320MB/sを超え、且つ640MB/s以下である場合、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータは、QLCモードまたはSLCモードで書き込まれる。
640MB/sの書き込みバンド幅を実現するために、DRAM6内の3.2MBの記憶領域が、QLC用ライトバッファ21として割り当てられる。また、DRAM6内の96KBの記憶領域が、SLC用ライトバッファ22として割り当てられる。したがって、ホスト2から受信されたユーザデータは、QLC用ライトバッファ21とSLC用ライトバッファ22のいずれか一方に格納される。
受信されたユーザデータは、例えば、QLC用ライトバッファ21に優先して格納される。この場合、受信されたユーザデータを格納するための空き領域がQLC用ライトバッファ21内に存在するならば、このユーザデータはQLC用ライトバッファ21に格納される。一方、受信されたユーザデータを格納するための空き領域がQLC用ライトバッファ21内に存在しないならば、このユーザデータはSLC用ライトバッファ22に格納される。
そして、QLC用ライトバッファ21に格納されているユーザデータがQLCブロック群571に並列に書き込まれる。このQLCブロック群571に含まれるブロックの数は、最大で50個である。
同様に、SLC用ライトバッファ22に格納されているユーザデータがSLCブロック群572に並列に書き込まれる。このSLCブロック群572に含まれるブロックの数は、最大で6個である。
なお、各SLCブロック572に書き込まれたユーザデータは、例えば、SSD3がアイドル状態である間に、読み出され、QLCブロック573に書き込まれる。つまり、書き込みバンド幅が320MB/sを超えている場合に、一旦、ユーザデータをSLCブロック572に書き込んだ後、そのユーザデータをQLCブロック573に改めて書き込むことができる。
このようなSLCブロック572からQLCブロック573にユーザデータを移動するための動作において、SLCブロック572に書き込まれているユーザデータは、移動先のQLCブロック573への当該ユーザデータの書き込みが完了するまで、消去されない。そのため、この動作中に、外部電源からSSD3に供給される電力が遮断されたとしても、移動対象のユーザデータが失われることはない。したがって、外部電源からSSD3に電力が供給されるようになった後、再度、そのユーザデータをSLCブロック572からQLCブロック573に移動するための動作が改めて行われればよい。
上述したように、640MB/sの書き込みバンド幅を実現するためには、ユーザデータをQLCモードのみでNAND型フラッシュメモリ5に書き込む場合、DRAM6内の6.4MBの記憶領域をQLC用ライトバッファ21として割り当てる必要がある。しかし、図10に示した方法では、320MB/s分の書き込みバンド幅をQLCモードでの書き込みでサポートすると共に、残りの320MB/s分の書き込みバンド幅をSLCモードでの書き込みでサポートすることにより、QLC用ライトバッファ21およびSLC用ライトバッファ22として割り当てられるDRAM6内の記憶領域のサイズを3.2MB+96KBに低減することができる。
これにより、SSD3に外部電源から供給される電力が遮断された場合に、PLP機能を用いて、ライトバッファ21,22に格納されているユーザデータを、SLCモードでNAND型フラッシュメモリ5に書き込むために要する電荷量、すなわち、蓄電装置71に蓄積されるべき電荷量を減らすことができる。
一方、640MB/sの書き込みバンド幅を実現するために、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータすべてを、暫定的にSLCモードでNAND型フラッシュメモリ5に書き込む場合には、DRAM6内の192KBの記憶領域が、SLC用ライトバッファ22として割り当てられる。また、DRAM6内のいずれの記憶領域も、QLC用ライトバッファ21としては割り当てられない。そのため、図10に示した例よりも、ライトバッファとして割り当てられるDRAM6内の記憶容量を小さくすることができ、したがって、蓄電装置71に蓄積されるべき電荷量(すなわち、PLPの動作のために必要な電荷量)をより減らすことができる。
しかしながら、暫定的にSLCモードで書き込まれたユーザデータを、QLCモードで改めて書き込む構成では、図8を参照して上述したように、NANDフラッシュメモリ5全体の記憶容量を、QLC記憶容量と、そのQLC記憶容量の10%の容量を有するSLC記憶容量とで構成する必要がある。これは、NAND型フラッシュメモリ5の経済性を損なうものである。
そのため、本実施形態では、図10に示したように、640MB/sの書き込みバンド幅を実現するために、320MB/s分の書き込みバンド幅をQLCモードでの書き込みでサポートすると共に、残りの320MB/s分の書き込みバンド幅をSLCモードでの書き込みでサポートする。これにより、ホスト2による書き込みバンド幅の要求を満たしながら、NANDフラッシュメモリ5全体の記憶容量に占めるSLC記憶容量を低減でき、NAND型フラッシュメモリ5の経済性を高めることができる。
図1に戻り、上述した動作を実現するための構成について具体的に例示する。CPU12は、モード制御部121、ライト制御部122、バッファリング処理部123、PLP処理部124、および書き換え処理部125として機能することができる。
モード制御部121は、ライトコマンドを受け付けたことに伴ってホスト2から受信されるユーザデータをNAND型フラッシュメモリ5に書き込むための書き込みモードを制御する。モード制御部121は、メモリセル当たりにNビットのデータが書き込まれる第1モードとメモリセル当たりにMビットのデータが書き込まれる第2モードの少なくとも一方を書き込みモードとして選択する。ここで、Nは1以上の数であり、MはNよりも大きい数である。
より具体的には、モード制御部121は、例えば、ホスト2によってSSD3に対して要求される書き込み速度である書き込みバンド幅に基づいて、書き込みモードとして、第2モードを単独で使用するか、それとも第1モードと第2モードとを併用するかを動的に切り替えるように構成されている。
第1モードと第2モードの組み合わせの例は、以下の通りである。
組み合わせ#1: SLCモードが第1モードとして使用され、QLCモードが第2モードとして使用される。
組み合わせ#2: SLCモードが第1モードとして使用され、TLCモードが第2モードとして使用される。
組み合わせ#3: SLCモードが第1モードとして使用され、MLCモードが第2モードとして使用される。
組み合わせ#4: MLCモードが第1モードとして使用され、TLCモードが第2モードとして使用される。
組み合わせ#5: MLCモードが第1モードとして使用され、QLCモードが第2モードとして使用される。
組み合わせ#6: TLCモードが第1モードとして使用され、QLCモードが第2モードとして使用される。
あるいは、モード制御部121は、書き込みモードとして、第3モードを単独で使用するか、それとも第1モードと第2モードと第3モードとを併用するかを動的に切り替えるように構成されていてもよい。第3モードは、メモリセル当たりにLビットのデータが書き込まれるモードであり、LはMよりも大きい数である。
第1モードと第2モードと第3モードの組み合わせの例は、以下の通りである。
組み合わせ#7: SLCモードが第1モードとして使用され、MLCモードが第2モードとして使用され、TLCモードが第3モードとして使用される。
組み合わせ#8: SLCモードが第1モードとして使用され、TLCモードが第2モードとして使用され、QLCモードが第3モードとして使用される。
組み合わせ#9: SLCモードが第1モードとして使用され、MLCモードが第2モードとして使用され、QLCモードが第3モードとして使用される。
組み合わせ#10: MLCモードが第1モードとして使用され、TLCモードが第2モードとして使用され、QLCモードが第3モードとして使用される。
同様にして、モード制御部121は、メモリセル当たりに格納可能なビット数が互いに異なる4種類以上のモードの内、書き込みモードとして用いられるモードを動的に切り替えるように構成されていてもよい。
以下では、組み合わせ#1が使用される場合を例示する。この場合、モード制御部121は、QLCモードが単独で使用される書き込みモード(以下、QLC単独モードとも称する)と、QLCモードとSLCモードとが併用される書き込みモード(以下、QLC/SLC併用モードとも称する)とを動的に切り替える。
モード制御部121は、書き込みバンド幅を計測し、計測された書き込みバンド幅に基づいて、書き込みモードとして選択されるモードが、QLC単独モードとQLC/SLC併用モードとの間で動的に切り替えられるように構成される。
モード制御部121は、ホスト2が第1時間内に書き込みを要求したユーザデータの総量(すなわち、第1時間内に、1つ以上のライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータの総量)を、書き込み要求量24として集計する。例えば、モード制御部121は、ある時点から第1時間が経過するまでの間、ホスト2から書き込みが要求される毎に、その書き込みが要求されたユーザデータの量を、書き込み要求量24に加算する。そして、第1時間が経過した時、モード制御部121は、取得された書き込み要求量24を第1時間で割ることにより、書き込みバンド幅を算出する。
モード制御部121は、書き込みバンド幅が閾値以下である場合、書き込みモードとしてQLC単独モードを選択する。SSD3の起動時等に、DRAM6内の領域が、QLCモードで書き込まれるべきユーザデータが格納されるQLC用ライトバッファ21として予め確保されている。
一方、モード制御部121は、書き込みバンド幅が閾値を超えている場合、書き込みモードとしてQLC/SLC併用モードを選択する。モード制御部121は、書き込みバンド幅が閾値を超えたことに応じて、DRAM6内の領域を、SLCモードで書き込まれるべきユーザデータが格納されるSLC用ライトバッファ22として確保する。また、モード制御部121は、SLC用ライトバッファ22に格納されているユーザデータがすべてNAND型フラッシュメモリ5に書き込まれたことに応じて、SLC用ライトバッファ22を解放する。
バッファリング処理部123は、ライトコマンドを受け付けたことに伴ってホスト2から受信したユーザデータを、モード制御部121によって決定された書き込みモードに応じて、DRAM6内のいずれかのライトバッファ21,22に格納する。ライト制御部122は、ライトバッファ21,22に格納されているユーザデータを、書き込み単位分のデータ毎にNAND型フラッシュメモリ5に書き込む。
図11に示すように、書き込みバンド幅が閾値以下であって、書き込みモードとしてQLC単独モードが選択されている場合、バッファリング処理部123は、受信したユーザデータをQLC用ライトバッファ21に格納する。そして、ライト制御部122は、QLC用ライトバッファ21に格納された、NAND型フラッシュメモリ5に対するQLCモードでの書き込み単位分のユーザデータを、NAND型フラッシュメモリ5に書き込む。
より具体的には、ライト制御部122は、QLC用ライトバッファ21に、NAND型フラッシュメモリ5に対するQLCモードでの書き込み単位分のユーザデータが格納されたならば、NAND型フラッシュメモリチップ501内のページバッファ503に、その書き込み単位分のユーザデータを転送する。書き込み単位は、例えば、4ページ分のデータ、すなわち、64KBのデータである。
そして、ライト制御部122は、NAND型フラッシュメモリチップ501に、QLCモードでのプログラムを指示する。すなわち、ライト制御部122は、NAND型フラッシュメモリチップ501にプログラムコマンドを送ることにより、メモリセルアレイ502内の書き込み先ブロック553に、転送されたユーザデータ(すなわち、ページバッファ503に格納されたユーザデータ)をQLCモードでプログラムさせる。
さらに、ライト制御部122は、同一のユーザデータについて、データ転送とプログラム指示とを再度行う。つまり、ライト制御部122は、図6を参照して上述したように、QLCモードでの書き込み単位分のあるユーザデータについて、1回目のデータ転送およびプログラム指示を行った後、2回目のデータ転送およびプログラム指示を行う。
メモリセルアレイ502は複数のブロック551〜556を含んでいる。ブロックは、有効データを格納しているアクティブブロックと、有効データを格納しておらず、イレーズ処理を施した後、新たなデータの書き込みに利用可能なフリーブロックとに大別される。1つ以上のフリーブロックから選択された1つのブロックが、イレーズ処理を施された後、書き込み先ブロック553として割り当てられる。書き込み先ブロック553は、有効データを格納し得る。
次いで、ライト制御部122は、このプログラムが完了したことに応じて、QLC用ライトバッファ21内の、転送されたユーザデータが格納されていた領域を解放する。ライト制御部122は、ライトコマンドに指定されたLBAと、ユーザデータが書き込まれたNAND型フラッシュメモリ5の物理アドレスとをマッピングし、当該マッピングを示すエントリを用いてLUT26を更新する。また、ライト制御部122は、ライトコマンドに指定されたLBA(またはLBA範囲)と、当該LBAに関連付けられた書き込みモード(ここでは、QLCモード)とを示すエントリを用いて、LBA範囲−書き込みモードテーブル27を更新する。
なお、ライト制御部122は、QLC用ライトバッファ21に格納された書き込み単位分のユーザデータを書き込むための動作を、複数のNAND型フラッシュメモリチップ501に対して並列に行うことができる。つまり、ライト制御部122は、QLC用ライトバッファ21に格納された複数の書き込み単位分のユーザデータそれぞれを、複数のQLC用の書き込み先ブロックそれぞれに並列して書き込むことができる。これら複数のQLC用の書き込み先ブロックは、複数のNAND型フラッシュメモリチップ501においてそれぞれ割り当てられている。
また、図12に示すように、書き込みバンド幅が閾値を超えていて、書き込みモードとしてQLC/SLC併用モードが選択されている場合、バッファリング処理部123は、受信したユーザデータをQLC用ライトバッファ21またはSLC用ライトバッファ22に格納する。
例えば、バッファリング処理部123は、書き込みバンド幅が閾値を超えている場合、SLC用ライトバッファ22に格納される第1データ量と、QLC用ライトバッファ21に格納される第2データ量との比を決定する。第1データ量は、NAND型フラッシュメモリ5にSLCモードで書き込まれることになるデータ量である。また、第2データ量は、NAND型フラッシュメモリ5にQLCモードで書き込まれることになるデータ量である。バッファリング処理部123は、例えば、書き込み速度が高いほど、第1データ量と第2データ量との和(すなわち、NAND型フラッシュメモリ5に書き込まれるユーザデータの総量)に対する第1データ量の割合を増加させる。
この場合、バッファリング処理部123は、受信したユーザデータを、例えば、QLC用ライトバッファ21に優先して格納する。例えば、バッファリング処理部123は、QLC用ライトバッファ21に、受信したユーザデータを格納できる空き領域がある場合に、当該ユーザデータをQLC用ライトバッファ21に格納する。一方、QLC用ライトバッファ21に、受信したユーザデータを格納できる空き領域がない場合、バッファリング処理部123は、当該ユーザデータをSLC用ライトバッファ22に格納する。
なお、バッファリング処理部123は、受信したユーザデータを、例えば、SLC用ライトバッファ22に優先して格納してもよい。その場合、バッファリング処理部123は、SLC用ライトバッファ22に、受信したユーザデータを格納できる空き領域がある場合に、当該ユーザデータをSLC用ライトバッファ22に格納する。一方、SLC用ライトバッファ22に、受信したユーザデータを格納できる空き領域がない場合、バッファリング処理部123は、当該ユーザデータをQLC用ライトバッファ21に格納する。
ライト制御部122は、QLC用ライトバッファ21およびSLC用ライトバッファ22の各々に格納されたユーザデータを、書き込み単位分のデータ毎にNAND型フラッシュメモリ5に書き込む。
より詳しくは、ライト制御部122は、QLC用ライトバッファ21に、NAND型フラッシュメモリ5に対するQLCモードでの書き込み単位分のユーザデータ(例えば、4ページ分のデータ)が格納されたならば、NAND型フラッシュメモリチップ501内のページバッファ503に、その書き込み単位分のユーザデータを転送する。
ライト制御部122は、NAND型フラッシュメモリチップ501に、QLCモードでのプログラムを指示する。すなわち、ライト制御部122は、NAND型フラッシュメモリチップ501にプログラムコマンドを送ることにより、メモリセルアレイ502内の書き込み先ブロック553に、転送されたユーザデータをQLCモードでプログラムさせる。さらに、ライト制御部122は、同一のユーザデータについて、データ転送とプログラム指示とを再度行う。
そして、ライト制御部122は、このプログラムが完了したことに応じて、QLC用ライトバッファ21内の、転送されたユーザデータが格納されていた領域を解放する。ライト制御部122は、ライトコマンドに指定されたLBAと、ユーザデータが書き込まれたNAND型フラッシュメモリ5の物理アドレスとをマッピングし、当該マッピングを示すエントリを用いてLUT26を更新する。また、ライト制御部122は、ライトコマンドに指定されたLBA(またはLBA範囲)と、当該LBAに関連付けられた書き込みモード(ここでは、QLCモード)とを示すエントリを用いて、LBA範囲−書き込みモードテーブル27を更新する。
さらに、ライト制御部122は、SLC用ライトバッファ22に、NAND型フラッシュメモリ5に対するSLCモードでの書き込み単位分のユーザデータが格納されたならば、NAND型フラッシュメモリチップ501内のページバッファ503に、その書き込み単位分のユーザデータ(例えば、1ページ分のデータ)を転送する。
ライト制御部122は、NAND型フラッシュメモリチップ501に、SLCモードでのプログラムを指示する。すなわち、ライト制御部122は、NAND型フラッシュメモリチップ501にプログラムコマンドを送ることにより、メモリセルアレイ502内の書き込み先ブロック554に、転送されたユーザデータをSLCモードでプログラムさせる。
そして、ライト制御部122は、このプログラムが完了したことに応じて、SLC用ライトバッファ22内の、転送されたユーザデータが格納されていた領域を解放する。ライト制御部122は、ライトコマンドに指定されたLBAと、ユーザデータが書き込まれたNAND型フラッシュメモリ5の物理アドレスとをマッピングし、当該マッピングを示すエントリを用いてLUT26を更新する。また、ライト制御部122は、ライトコマンドに指定されたLBA(またはLBA範囲)と、当該LBAに関連付けられた書き込みモード(ここでは、SLCモード)とを示すエントリを用いて、LBA範囲−書き込みモードテーブル27を更新する。
なお、ライト制御部122は、QLC用ライトバッファ21に格納された書き込み単位分のユーザデータを書き込むための動作を、複数のNAND型フラッシュメモリチップ501に対して並列に行うことができると共に、SLC用ライトバッファ22に格納された書き込み単位分のユーザデータを書き込むための動作を、別の複数のNAND型フラッシュメモリチップ501に対して並列に行うことができる。つまり、ライト制御部122は、QLC用ライトバッファ21に格納された複数の書き込み単位分のユーザデータそれぞれを、複数のQLC用の書き込み先ブロックそれぞれに並列して書き込むと共に、SLC用ライトバッファ22に格納された複数の書き込み単位分のユーザデータそれぞれを、複数のSLC用の書き込み先ブロックそれぞれに並列して書き込むことができる。複数のQLC用の書き込み先ブロックは、複数のNAND型フラッシュメモリチップ501においてそれぞれ割り当てられ、複数のSLC用の書き込み先ブロックは、別の複数のNAND型フラッシュメモリチップ501においてそれぞれ割り当てられている。
以上により、バッファリング処理部123およびライト制御部122は、モード制御部121によって書き込みバンド幅に応じて決定された書き込みモードで、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータをNAND型フラッシュメモリ5に書き込むことができる。
PLP処理部124は、外部電源からSSD3に供給される電力が遮断された場合に、蓄電装置71に蓄積された電荷を用いて、ライトバッファ21,22に格納されているユーザデータを特定の書き込みモードでNAND型フラッシュメモリ5に書き込む。この特定の書き込みモードは、例えば、SLCモードである。
図13は、書き込みバンド幅が閾値以下である間に(すなわち、書き込みモードがQLC単独モードである間に)、外部電源からSSD3に供給される電力が遮断された場合の、PLP処理部124による書き込み動作を示す。PLP処理部124は、外部電源からSSD3に供給される電力が遮断された場合、QLC用ライトバッファ21に格納されているユーザデータを、SLCモードでNAND型フラッシュメモリ5に書き込む。
より具体的には、PLP処理部124は、QLC用ライトバッファ21にユーザデータが格納されているならば、NAND型フラッシュメモリ5に対するSLCモードでの書き込み単位分のユーザデータを、QLC用ライトバッファ21からNAND型フラッシュメモリ5内のページバッファ503に転送する。書き込み単位は、例えば、1ページ分のデータ、すなわち、16KBのデータである。
そして、PLP処理部124は、NAND型フラッシュメモリチップ501に、SLCモードでのプログラムを指示する。すなわち、コントローラ4は、NAND型フラッシュメモリチップ501にプログラムコマンドを送ることにより、メモリセルアレイ502内の書き込み先ブロック554に、転送されたユーザデータをSLCモードでプログラムさせる。
そして、PLP処理部124は、このプログラムが完了したことに応じて、QLC用ライトバッファ21内の、転送されたユーザデータが格納されていた領域を解放する。また、PLP処理部124は、LUT26およびLBA範囲−書き込みモードテーブル27を更新する。この更新内容は、図12に示した例において、ライト制御部122がSLCモードでユーザデータをNAND型フラッシュメモリ5に書き込んだ場合と同様である。
PLP処理部124は、このような書き込み動作を、QLC用ライトバッファ21に格納されているユーザデータがなくなるまで、繰り返し行う。これにより、SSD3に外部電源から供給される電力が遮断された場合にも、揮発性のDRAM6内の記憶領域が割り当てられたQLC用ライトバッファ21に格納されているユーザデータを、NAND型フラッシュメモリ5に書き込むことができる。したがって、PLP機能により、ホスト2とSSD3との間のデータの一貫性を保証することができる。
図14は、書き込みバンド幅が閾値を超えている間に(すなわち、書き込みモードがQLC/SLC併用モードである間に)、外部電源からSSD3に供給される電力が遮断された場合の、PLP処理部124による書き込み動作を示す。PLP処理部124は、外部電源からSSD3に供給される電力が遮断された場合、QLC用ライトバッファ21およびSLC用ライトバッファ22に格納されているユーザデータを、SLCモードでNAND型フラッシュメモリ5に書き込む。
より具体的には、PLP処理部124は、QLC用ライトバッファ21にユーザデータが格納されているならば、NAND型フラッシュメモリ5に対するSLCモードでの書き込み単位分のユーザデータ(例えば、1ページ分のユーザデータ)を、QLC用ライトバッファ21からNAND型フラッシュメモリ5内のページバッファ503に転送する。
そして、PLP処理部124は、NAND型フラッシュメモリチップ501に、SLCモードでのプログラムを指示する。すなわち、PLP処理部124は、NAND型フラッシュメモリチップ501にプログラムコマンドを送ることにより、メモリセルアレイ502内の書き込み先ブロック554に、転送されたユーザデータをSLCモードでプログラムさせる。そして、PLP処理部124は、このプログラムが完了したことに応じて、QLC用ライトバッファ21内の、転送されたユーザデータが格納されていた領域を解放し、LUT26およびLBA範囲−書き込みモードテーブル27を更新する。
また、PLP処理部124は、SLC用ライトバッファ22にユーザデータが格納されているならば、NAND型フラッシュメモリ5に対するSLCモードでの書き込み単位分のユーザデータ(例えば、1ページ分のユーザデータ)を、SLC用ライトバッファ22からNAND型フラッシュメモリ5内のページバッファ503に転送する。
そして、PLP処理部124は、NAND型フラッシュメモリチップ501に、SLCモードでのプログラムを指示する。すなわち、PLP処理部124は、NAND型フラッシュメモリチップ501にプログラムコマンドを送ることにより、メモリセルアレイ502内の書き込み先ブロック554に、ページバッファ503に格納されたユーザデータをSLCモードでプログラムさせる。そして、PLP処理部124は、このプログラムが完了したことに応じて、SLC用ライトバッファ22内の、転送されたユーザデータが格納されていた領域を解放し、LUT26およびLBA範囲−書き込みモードテーブル27を更新する。
PLP処理部124は、このような書き込み動作を、QLC用ライトバッファ21およびSLC用ライトバッファ22に格納されているユーザデータがなくなるまで、繰り返し行う。これにより、外部電源からSSD3に供給される電力が遮断された場合にも、揮発性のDRAM6内の記憶領域が割り当てられたQLC用ライトバッファ21およびSLC用ライトバッファ22に格納されているユーザデータを、NAND型フラッシュメモリ5に書き込むことができる。したがって、PLP機能により、ホスト2とSSD3との間のデータの一貫性を保証することができる。
また、書き換え処理部125は、NAND型フラッシュメモリ5に、暫定的にSLCモードで書き込まれたユーザデータを、QLCモードでNAND型フラッシュメモリ5に改めて書き込むための書き換え動作を行う。この書き換え動作は、例えば、SSD3がアイドル状態である期間に行われ得る。
図12から図14に示した動作において、NAND型フラッシュメモリ5にSLCモードで書き込まれたユーザデータは、図15に示すように、書き換え処理部125によって、NAND型フラッシュメモリ5にQLCモードで書き込まれると共に、それまでSLCモードで書き込まれていたユーザデータは無効化される。NAND型フラッシュメモリ5にSLCモードで書き込まれたユーザデータは、書き込みバンド幅が閾値を超えた場合に、SLCモードでNAND型フラッシュメモリ5に書き込まれたユーザデータと、PLP機能によりSLCモードでNAND型フラッシュメモリ5に書き込まれたユーザデータである。したがって、この書き換え動作により、あるユーザデータがNAND型フラッシュメモリ5に書き込まれるモードが、SLCモードからQLCモードに変更される。
より具体的には、書き換え処理部125は、LBA範囲−書き込みモードテーブル27とLUT26とを用いて、SLCモードで書き込まれたユーザデータの物理アドレスを特定する。書き換え処理部125は、NAND型フラッシュメモリ5から書き換え用バッファ23に、特定された物理アドレスのユーザデータを読み出す。特定される物理アドレスは、例えば、SLCモードで書き込まれたユーザデータを含むアクティブブロック552内の物理記憶位置を示す。この場合、書き換え処理部125は、そのアクティブブロック552内の物理記憶位置から書き換え用バッファ23に、ユーザデータを読み出す。
書き換え用バッファ23に、NAND型フラッシュメモリ5に対するQLCモードでの書き込み単位分のユーザデータ(例えば、4ページ分のユーザデータ)が格納されたならば、書き換え処理部125は、NAND型フラッシュメモリチップ501内のページバッファ503に、その書き込み単位分のユーザデータを転送する。
書き換え処理部125は、NAND型フラッシュメモリチップ501に、QLCモードでのプログラムを指示する。すなわち、コントローラ4は、NAND型フラッシュメモリチップ501にプログラムコマンドを送ることにより、メモリセルアレイ502内の書き込み先ブロック553に、転送されたユーザデータをQLCモードでプログラムさせる。さらに、書き換え処理部125は、同一のユーザデータについて、データ転送とプログラム指示とを再度行う。つまり、書き換え処理部125は、図6を参照して上述したように、QLCモードでの書き込み単位分のあるユーザデータについて、1回目のデータ転送およびプログラム指示を行った後、2回目のデータ転送およびプログラム指示を行う。
そして、書き換え処理部125は、このプログラムが完了したことに応じて、LUT26およびLBA範囲−書き込みモードテーブル27を更新し、書き換え用バッファ23内の、転送されたユーザデータが格納されていた領域を解放する。
書き換え処理部125は、例えば、SSD3がアイドル状態である期間中に、暫定的にSLCモードで書き込まれたすべてのユーザデータが、QLCモードでNAND型フラッシュメモリ5に書き込まれるまで、上述した動作を繰り返し行い得る。これにより、書き込みバンド幅が閾値を超えたことにより、あるいはPLP機能により、暫定的にSLCモードで書き込まれたユーザデータを、メモリセル当たりの記憶密度がより高いQLCモードでNAND型フラッシュメモリ5に書き込むことができる。
なお、上述した例では、想定される最大の書き込みバンド幅(例えば、640MB/s)を決定し、その半分の書き込みバンド幅(例えば、320MB/s)を閾値に設定した。閾値は、最大の書き込みバンド幅よりも小さい値であればよく、任意の値に設定することができる。また、閾値は、DRAM6の記憶容量、NAND型フラッシュメモリ5に対する各モードでの書き込み速度、最大消費電力等を考慮して設定されてもよい。
以上の構成により、ホスト2による書き込みバンド幅の要求を満たしながら、NAND型フラッシュメモリ5を効率的に利用することができる。モード制御部121は、1つ以上のライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータの受信速度である書き込みバンド幅が閾値以下である場合、記憶密度が高い第2モードを書き込みモードとして選択し、書き込みバンド幅が閾値を超えている場合、第2モードと、第2モードよりも記憶密度が低い第1モードとを書き込みモードとして選択する。これにより、PLP機能を有するSSD3で、暫定的に記憶密度が低い第1モードで書き込まれたユーザデータを、より記憶密度が高い第2モードで改めて書き込む処理が行われる場合に、ホスト2による書き込みバンド幅の要求を満たしながら、NAND型フラッシュメモリ5の記憶容量に関する経済性を高めることができる。
図16を参照して、書き込みバンド幅とワークロードとの関係について説明する。図16(A)および図16(B)は、書き込みバンド幅の推移の例をそれぞれ示す。ホスト2からSSD3へのワークロードは、書き込みバンド幅の推移から導出することができる。
図16(A)に示す書き込みバンド幅の推移61では、この推移61により決定される全体の面積62が、推移61に対応する期間におけるホスト2からSSD3への全体のワークロードに相当する。そして、この全体の面積62の内、閾値(ここでは、320MB/s)を超えた部分の面積63Aおよび面積63Bが、この期間において、320MB/sを超えた書き込みバンド幅を必要としたワークロードに相当する。
図16(A)に示す例では、全体の面積62に対する、閾値を超えた部分の面積63Aおよび面積63Bの割合は、1/10である。これは、ホスト2によるワークロードの10%が、320MB/sを超えた書き込みバンド幅を必要とし、ワークロードの残りの90%が、320MB/s以下の書き込みバンド幅で済むことを示す。つまり、SLCモードでの書き込み量は、総書き込み量の10%である。
この場合、図7に示した例における条件下で、すなわち、SLC記憶容量がQLC記憶容量の1%であり、QLCブロックの最大P/Eサイクル数が、10,000回であり、SLCブロックの最大P/Eサイクル数が100,000回である条件下において、システムとして成立する。より具体的には、総書き込み量の10%が、SLCブロック群を経由するので、各SLCブロックには、各QLCブロックに10,000回の書き込みが行われるまでに、100,000(=10,000×0.1/0.01)回の書き込みが行われることになる。この書き込み回数は、SLCブロックの最大P/Eサイクル数の範囲内であり、システムが成立する。
一方、図16(B)に示す書き込みバンド幅の推移65では、この推移65により決定される全体の面積66が、推移65に対応する期間におけるホスト2からSSD3への全体のワークロードに相当する。そして、全体の面積66の内、閾値(ここでは、320MB/s)を超えた部分の面積67が、この期間において、320MB/sを超えた書き込みバンド幅を必要としたワークロードに相当する。
図16(B)に示す例では、全体の面積66に対する、閾値を超えた部分の面積67の割合は、1/4である。これは、ホスト2によるワークロードの25%が、320MB/sを超えた書き込みバンド幅を必要とし、ワークロードの残りの75%が、320MB/s以下の書き込みバンド幅で済むことを示す。つまり、SLCモードでの書き込み量は、総書き込み量の25%である。
この場合、図7に示した例における条件下で、すなわち、SLC記憶容量がQLC記憶容量の1%であり、QLCブロックの最大P/Eサイクル数が10,000回であり、SLCブロックの最大P/Eサイクル数が100,000回である条件下において、システムとして成立しない。より具体的には、総書き込み量の25%が、SLCブロック群を経由するので、各SLCブロックには、各QLCブロックに10,000回の書き込みが行われるまでに、250,000(=10,000×0.25/0.01)回の書き込みが行われることになる。この書き込み回数は、SLCブロックの最大P/Eサイクル数を超えており、システムとして成立しない。このような場合、ホスト2では、例えば、SSD3からの応答が遅くなり、書き込みバンド幅が低下することになる。
このように、書き込みバンド幅の推移から、全体のワークロードに対する、閾値を超えた書き込みバンド幅を必要とするワークロードの割合を導出し、導出された割合に基づいて、ある条件下でシステムが成立しているか否かを判断することができる。
図17から図22のフローチャートを参照して、コントローラ4によって実行される処理の手順について説明する。コントローラ4は、図17から図20のフローチャートに示すモード制御処理、バッファリング処理、SLCライト処理、およびQLCライト処理を並行して実行することができる。また、コントローラ4は、外部電源からSSD3への電力供給が遮断されたことに応じて、図21のフローチャートに示すPLP処理を実行する。さらに、コントローラ4は、アイドル時に、図22のフローチャートに示す書き換え処理を実行する。
図17のフローチャートは、コントローラ4によって実行されるモード制御処理の手順の例を示す。モード制御処理では、ホスト2によって要求される書き込み速度を示す書き込みバンド幅に応じて、NAND型フラッシュメモリ5の書き込みに使用される書き込みモードが切り替えられる。ここでは、書き込みモードとして、QLC単独モードとQLC/SLC併用モードとが切り替えて用いられる場合について例示する。
まず、コントローラ4は、書き込み要求量24を初期化する(ステップS101)。書き込み要求量24は、ホスト2によって書き込みが要求されたユーザデータの量を集計するために用いられる。
次に、コントローラ4は、書き込みバンド幅を更新するタイミングであるか否かを判定する(ステップS101)。書き込みバンド幅は、第1時間毎に(例えば、100ミリ秒毎に)更新され得る。コントローラ4は、書き込みバンド幅が前回更新されてから第1時間が経過した場合に、書き込みバンド幅を更新するタイミングであると判断する。
書き込みバンド幅を更新するタイミングでない場合(ステップS102のNO)、ステップS102に戻り、書き込みバンド幅を更新するタイミングであるか否かが再度判定される。
一方、書き込みバンド幅を更新するタイミングである場合(ステップS102のYES)、コントローラ4は、書き込み要求量24に基づいて書き込みバンド幅を更新する(ステップS103)。つまり、コントローラ4は、直近の第1時間内に、1つ以上のライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータの総量を示す書き込み要求量24に基づいて、要求される書き込み速度(=書き込み要求量/第1時間)を算出することにより、書き込みバンド幅を更新する。そして、コントローラ4は、書き込み要求量24を初期化する(ステップS104)。
次いで、コントローラ4は、更新された書き込みバンド幅が閾値を超えているか否かを判定する(ステップS105)。書き込みバンド幅が閾値を超えている場合(ステップS105のYES)、現在の書き込みモードに応じて処理を分岐する(ステップS106)。
現在の書き込みモードがQLC単独モードである場合(ステップS106のQLC)、コントローラ4は、DRAM6内の記憶領域をSLC用ライトバッファ22に割り当てる(ステップS107)。そして、コントローラ4は、書き込みモードとして、QLC/SLC併用モードを選択し(ステップS108)、ステップS102に戻る。
一方、現在の書き込みモードがQLC/SLC併用モードである場合(ステップS106のQLC/SLC)、ステップS102に戻る。
また、書き込みバンド幅が閾値以下である場合(ステップS105のNO)、コントローラ4は、現在の書き込みモードに応じて処理を分岐する(ステップS109)。現在の書き込みモードがQLC単独モードである場合(ステップS109のQLC)、更新された書き込みバンド幅でも、書き込みモードがQLC単独モードに維持されるので、ステップS102に戻る。
現在の書き込みモードがQLC/SLC併用モードである場合(ステップS109のQLC/SLC)、コントローラ4は、SLC用ライトバッファ22内にユーザデータが格納されているか否かを判定する(ステップS110)。SLC用ライトバッファ22内にユーザデータが格納されている場合(ステップS110のYES)、ステップS110に戻る。すなわち、コントローラ4は、ステップS110の判定を行うことにより、SLC用ライトバッファ22内のユーザデータを、SLCモードでNAND型フラッシュメモリ5に書き込むためのSLCライト処理の完了を待つ。SLCライト処理については、図19のフローチャートを参照して後述する。
一方、SLC用ライトバッファ22内にユーザデータが格納されていない場合(ステップS110のNO)、SLC用ライトバッファ22を解放する(ステップS111)。これにより、DRAM6内のいずれの記憶領域も、SLC用ライトバッファ22として割り当てられていない状態となる。そして、コントローラ4は、書き込みモードとしてQLC単独モードを選択し(ステップS112)、ステップS102に戻る。
以上により、ホスト2の書き込みバンド幅に応じて、NAND型フラッシュメモリ5の書き込みモードを選択することができる。書き込みバンド幅が閾値未満である場合にQLCモードを単独で使用し、書き込みバンド幅が閾値を超えた場合にQLCモードとSLCモードとを併用することにより、ライトバッファ21,22として割り当てられるDRAM6の記憶容量が増大することを抑制すると共に、SLCモードよりもQLCモードでの書き込みを優先することでSSD3の経済性を高めることができる。
図18のフローチャートは、コントローラ4によって実行されるバッファリング処理の手順の例を示す。バッファリング処理では、上述したモード制御処理において選択された書き込みモードに応じたライトバッファに、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータが格納される。
まず、コントローラ4は、ホスト2からライトコマンドを受け付けたか否かを判定する(ステップS21)。ホスト2からライトコマンドを受け付けていない場合(ステップS21のNO)、ステップS21に戻り、ホスト2からライトコマンドを受け付けたか否かが再度判定される。
ホスト2からライトコマンドを受け付けた場合(ステップS21のYES)、コントローラ4は、書き込み要求量24に、そのライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータの量を加算する(ステップS22)。そして、コントローラ4は、現在の書き込みモードに応じて処理を分岐する(ステップS23)。現在の書き込みモードがQLC単独モードである場合(ステップS23のQLC)、コントローラ4は、ユーザデータをQLC用ライトバッファ21に格納する(ステップS24)。そして、コントローラ4は、ライトコマンドに対する応答をホスト2に返信し(ステップS27)、ステップS21に戻る。
一方、現在の書き込みモードがQLC/SLC併用モードである場合(ステップS23のQLC/SLC)、コントローラ4は、QLC用ライトバッファ21に、ユーザデータを格納できる空き領域があるか否かを判定する(ステップS25)。空き領域がある場合(ステップS25のYES)、コントローラ4は、ユーザデータをQLC用ライトバッファ21に格納し(ステップS24)、ステップS21に戻る。空き領域がない場合(ステップS25のNO)、コントローラ4は、ユーザデータをSLC用ライトバッファ22に格納する(ステップS26)。そして、コントローラ4は、ライトコマンドに対する応答をホスト2に返信し(ステップS27)、ステップS21に戻る。
以上により、ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータを、現在の書き込みモードに応じて適切なライトバッファ21,22に格納することができる。
図19のフローチャートは、コントローラ4によって実行されるSLCライト処理の手順の例を示す。SLCライト処理では、SLC用ライトバッファ22に格納されているユーザデータが、SLCモードでNAND型フラッシュメモリ5に書き込まれる。SLCライト処理は、DRAM6内の記憶領域がSLC用ライトバッファ22として割り当てられている場合に実行される。
まず、コントローラ4は、SLC用ライトバッファ22に1ページ分のユーザデータが格納されているか否かを判定する(ステップS31)。1ページ分のユーザデータが格納されていない場合(ステップS31のNO)、ステップS31に戻る。
一方、1ページ分のユーザデータが格納されている場合(ステップS31のYES)、コントローラ4は、SLC用ライトバッファ22からNAND型フラッシュメモリチップ501内のページバッファ503に、1ページ分のユーザデータを転送する(ステップS32)。コントローラ4は、NAND型フラッシュメモリチップ501に、転送されたユーザデータのSLCモードでのプログラムを指示する(ステップS33)。これにより、NAND型フラッシュメモリチップ501に設けられるメモリセルアレイ502内のSLC用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。
次いで、コントローラ4は、LUT26を更新し(ステップS34)、LBA範囲−書き込みモードテーブル27を更新する(ステップS35)。そして、コントローラ4は、転送されたユーザデータが格納されていた、SLC用ライトバッファ22内の領域を解放する(ステップS36)。
以上により、SLC用ライトバッファ22内に格納されているユーザデータを、SLCモードでNAND型フラッシュメモリ5に書き込むことができる。
図20のフローチャートは、コントローラ4によって実行されるQLCライト処理の手順の例を示す。QLCライト処理では、QLC用ライトバッファ21に格納されているユーザデータが、QLCモードでNAND型フラッシュメモリ5に書き込まれる。
まず、コントローラ4は、QLC用ライトバッファ21に4ページ分のユーザデータが格納されているか否かを判定する(ステップS41)。4ページ分のユーザデータが格納されていない場合(ステップS41のNO)、ステップS41に戻る。
一方、4ページ分のユーザデータが格納されている場合(ステップS41のYES)、コントローラ4は、QLC用ライトバッファ21から、NAND型フラッシュメモリチップ501内のページバッファ503に、4ページ分のユーザデータを転送する(ステップS42)。コントローラ4は、NAND型フラッシュメモリチップ501に、転送されたユーザデータのQLCモードでの1回目のプログラムを指示する(ステップS43)。
次いで、コントローラ4は、QLC用ライトバッファ21から、NAND型フラッシュメモリチップ501内のページバッファ503に、4ページ分のユーザデータを転送する(ステップS44)。転送されるユーザデータは、ステップS42で転送されたユーザデータと同一である。コントローラ4は、NAND型フラッシュメモリチップ501に、転送されたユーザデータのQLCモードでの2回目のプログラムを指示する(ステップS45)。1回目および2回目のプログラム指示に応じて、NAND型フラッシュメモリチップ501に設けられるメモリセルアレイ502内のQLC用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。
コントローラ4は、LUT26を更新し(ステップS46)、LBA範囲−書き込みモードテーブル27を更新する(ステップS47)。そして、コントローラ4は、転送されたユーザデータが格納されていた、QLC用ライトバッファ21内の領域を解放する(ステップS48)。
以上により、QLC用ライトバッファ21内に格納されているユーザデータを、QLCモードでNAND型フラッシュメモリ5に書き込むことができる。
図21のフローチャートは、コントローラ4によって実行されるPLP処理の手順の例を示す。PLP処理では、SSD3への電力供給が遮断されたことに応じて、蓄電装置71に蓄積された電荷を用いて、ライトバッファに格納されているユーザデータが、SLCモードでNAND型フラッシュメモリ5に書き込まれる。
まず、コントローラ4は、現在の書き込みモードに応じて処理を分岐する(ステップS501)。現在の書き込みモードがQLC/SLC併用モードである場合(ステップS501のQLC/SLC)、コントローラ4は、SLC用ライトバッファ22にユーザデータが格納されているか否かを判定する(ステップS502)。
SLC用ライトバッファ22にユーザデータが格納されている場合(ステップS502のYES)、コントローラ4は、SLC用ライトバッファ22からNAND型フラッシュメモリチップ501内のページバッファ503に、1ページ分のユーザデータを転送する(ステップS503)。コントローラ4は、NAND型フラッシュメモリチップ501に、転送されたユーザデータのSLCモードでのプログラムを指示する(ステップS504)。これにより、NAND型フラッシュメモリチップ501に設けられるメモリセルアレイ502内のSLC用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。
次いで、コントローラ4は、LUT26を更新し(ステップS505)、LBA範囲−書き込みモードテーブル27を更新する(ステップS506)。そして、コントローラ4は、転送されたユーザデータが格納されていた、SLC用ライトバッファ22内の領域を解放し(ステップS507)、ステップS502に戻る。したがって、SLC用ライトバッファ22に格納されているユーザデータがなくなるまで、ステップS502からステップS507までの手順が繰り返し実行される。
SLC用ライトバッファ22にユーザデータが格納されていない場合(ステップS502のNO)、または現在の書き込みモードがQLC単独モードである場合(ステップS501のQLC)、コントローラ4は、QLC用ライトバッファ21にユーザデータが格納されているか否かを判定する(ステップS508)。
QLC用ライトバッファ21にユーザデータが格納されている場合(ステップS508のYES)、コントローラ4は、QLC用ライトバッファ21からNAND型フラッシュメモリチップ501内のページバッファ503に、1ページ分のユーザデータを転送する(ステップS509)。コントローラ4は、NAND型フラッシュメモリチップ501に、転送されたユーザデータのSLCモードでのプログラムを指示する(ステップS510)。これにより、NAND型フラッシュメモリチップ501に設けられるメモリセルアレイ502内のSLC用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。つまり、QLC用ライトバッファ21に格納されていたユーザデータは、QLCモードでの書き込み動作よりも、高速で必要な電荷量が少ないSLCモードで書き込まれる。
次いで、コントローラ4は、LUT26を更新し(ステップS511)、LBA範囲−書き込みモードテーブル27を更新する(ステップS512)。そして、コントローラ4は、転送されたユーザデータが格納されていた、QLC用ライトバッファ21内の領域を解放し(ステップS513)、ステップS508に戻る。したがって、QLC用ライトバッファ21に格納されているユーザデータがなくなるまで、ステップS508からステップS513までの手順が繰り返し実行される。
また、QLC用ライトバッファ21にユーザデータが格納されていない場合(ステップS508のNO)、処理を終了する。
以上により、SSD3への電力供給が遮断された場合に、(1)現在の書き込みモードがQLC単独モードであるならば、QLC用ライトバッファ21に格納されているすべてのユーザデータをSLCモードでNAND型フラッシュメモリ5に書き込み、(2)現在の書き込みモードがQLC/SLC併用モードであるならば、QLC用ライトバッファ21およびSLC用ライトバッファ22に格納されているすべてのユーザデータをSLCモードでNAND型フラッシュメモリ5に書き込む。このように、PLP処理では、SLC用ライトバッファ22に格納されているユーザデータだけでなく、QLC用ライトバッファ21に格納されているユーザデータも、高速で、必要な電荷量が少ないSLCモードでNAND型フラッシュメモリ5に書き込まれる。したがって、SSD3への電力供給が遮断された場合に、蓄電装置71に蓄積された限られた電荷を用いて、DRAM6内にバッファリングされているユーザデータが失われることなく、NAND型フラッシュメモリ5に書き込まれる。
図22のフローチャートは、コントローラ4によって実行される書き換え処理の手順の例を示す。書き換え処理では、NAND型フラッシュメモリ5に暫定的にSLCモードで書き込まれていたユーザデータが、SSD3がアイドル状態である間に、QLCモードでNAND型フラッシュメモリ5に書き込まれる。
まず、コントローラ4は、SSD3がアイドル状態であるか否かを判定する(ステップS601)。アイドル状態は、例えば、SSD3内の各種リソース(例えば、CPU12、DRAM6、等)の使用量または使用率が第2閾値以下である状態を表す。SSD3がアイドル状態でない場合(ステップS601のNO)、ステップS601に戻り、SSD3がアイドル状態であるか否かが再度判定される。
SSD3がアイドル状態である場合(ステップS601のYES)、コントローラ4は、NAND型フラッシュメモリ5にSLCモードで書き込まれたユーザデータがあるか否かを判定する(ステップS602)。コントローラ4は、例えば、LBA範囲−書き込みモードテーブル27に、書き込みモードがSLCモードであるエントリが含まれている場合に、NAND型フラッシュメモリ5にSLCモードで書き込まれたユーザデータがあると判断する。SLCモードで書き込まれたユーザデータがない場合(ステップS602のNO)、ステップS601に戻る。
SLCモードで書き込まれたユーザデータがある場合(ステップS602のYES)、コントローラ4は、SLCモードで書き込まれているユーザデータを、NAND型フラッシュメモリ5から書き換え用バッファ23に読み出す(ステップS603)。そして、コントローラ4は、書き換え用バッファ23に、4ページ分のユーザデータが読み出されたか否かを判定する(ステップS604)。4ページ分のユーザデータが読み出されていない場合(ステップS604のNO)、ステップS603に戻り、SLCモードで書き込まれているユーザデータが、NAND型フラッシュメモリ5から書き換え用バッファ23にさらに読み出される。
一方、4ページ分のユーザデータが読み出された場合(ステップS604のYES)、コントローラ4は、書き換え用バッファ23からNAND型フラッシュメモリチップ501内のページバッファ503に、その4ページ分のユーザデータを転送する(ステップS605)。コントローラ4は、NAND型フラッシュメモリチップ501に、転送されたユーザデータのQLCモードでの1回目のプログラムを指示する(ステップS606)。
次いで、コントローラ4は、書き換え用バッファ23から、NAND型フラッシュメモリチップ501内のページバッファ503に、4ページ分のユーザデータを転送する(ステップS607)。転送されるユーザデータは、ステップS605で転送されたユーザデータと同一である。コントローラ4は、NAND型フラッシュメモリチップ501に、転送されたユーザデータのQLCモードでの2回目のプログラムを指示する(ステップS608)。1回目および2回目のプログラム指示に応じて、NAND型フラッシュメモリチップ501に設けられたメモリセルアレイ502内のQLC用の書き込み先ブロックに、転送されたユーザデータがプログラムされる。
コントローラ4は、LUT26を更新し(ステップS609)、LBA範囲−書き込みモードテーブル27を更新する(ステップS610)。そして、コントローラ4は、転送されたユーザデータが格納されていた、書き換え用バッファ23内の領域を解放し(ステップS611)、ステップS601に戻る。
以上により、NAND型フラッシュメモリ5にSLCモードで書き込まれていたユーザデータを、QLCモードで改めて書き込むことができる。
以上説明したように、本実施形態によれば、ホスト2による書き込み速度の要求を満たしながら、不揮発性メモリを効率的に利用することができる。DRAM6は、ホスト2からライトコマンドを受け付けた場合に、当該ライトコマンドを受け付けたことに伴ってホスト2から受信されたユーザデータを格納する。コントローラ4は、NAND型フラッシュメモリ5とDRAM6とに電気的に接続され、NAND型フラッシュメモリ5のメモリセル当たりにNビットのデータが書き込まれる第1モードとNAND型フラッシュメモリ5のメモリセル当たりにMビットのデータが書き込まれる第2モードの少なくとも一方を書き込みモードとして選択し、DRAM6に格納されているデータをNAND型フラッシュメモリ5に書き込む。Nは1以上の数であり、MはNよりも大きい数である。コントローラ4は、1つ以上のライトコマンドを受け付けたことに伴ってホスト2から受信されたデータの受信速度が閾値以下である場合、第2モードを書き込みモードとして選択し、この受信速度が閾値を超えている場合、第1モードと第2モードとを書き込みモードとして選択する。
これにより、ライトコマンドを受け付けたことに伴ってホスト2から受信されるデータの受信速度が閾値以下である場合には、記憶密度がより高い第2モードでユーザデータをNAND型フラッシュメモリ5に書き込み、受信速度が閾値を超えている場合には、第2モードだけでなく、ライト性能が高い第1モードも併用して、ユーザデータをNAND型フラッシュメモリ5に書き込むことができる。したがって、ホスト2からのユーザデータの受信速度に対処するために要求されるNAND型フラッシュメモリ5への書き込み速度を満たしながら、NAND型フラッシュメモリ5を効率的に利用することができる。
また、外部電源からSSD3に供給される電力が遮断された場合に、PLP機能を用いて、ライトバッファからNAND型フラッシュメモリ5に書き込まれるユーザデータの量を低減できる。したがって、その動作の際に必要となる、蓄電装置71に蓄積されるべき電荷量も低減することができる。
本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、7…電源制御部、11…ホストI/F、12…CPU、13…NANDコントローラ、14…DRAM I/F、15…ECC処理部、121…モード制御部、122…ライト制御部、123…バッファリング処理部、124…PLP処理部、125…書き換え処理部、21…QLC用ライトバッファ、22…SLC用ライトバッファ、23…書き換え用バッファ、24…書き込み要求量、26…LUT、27…LBA範囲−書き込みモードテーブル、71…蓄電装置。

Claims (11)

  1. 不揮発性メモリと、
    ホストからライトコマンドを受け付けた場合に、当該ライトコマンドを受け付けたことに伴って前記ホストから受信されたデータを格納するランダムアクセスメモリと、
    前記不揮発性メモリと前記ランダムアクセスメモリとに電気的に接続され、前記不揮発性メモリのメモリセル当たりにNビットのデータが書き込まれる第1モードと前記不揮発性メモリのメモリセル当たりにMビットのデータが書き込まれる第2モードの少なくとも一方を書き込みモードとして選択し、前記ランダムアクセスメモリに格納されているデータを前記不揮発性メモリに書き込むように構成されるコントローラとを具備し、前記Nは1以上の数であり、前記Mは前記Nよりも大きい数であり、
    前記コントローラは、
    1つ以上のライトコマンドを受け付けたことに伴って前記ホストから受信されたデータの受信速度が閾値以下である場合、前記第2モードを前記書き込みモードとして選択し、
    前記受信速度が前記閾値を超えている場合、前記第1モードと前記第2モードとを前記書き込みモードとして選択するように構成されるメモリシステム。
  2. 蓄電装置をさらに具備し、
    前記コントローラは、外部電源から前記メモリシステムへの電力供給が遮断された場合、前記蓄電装置に蓄積された電荷を用いて、前記ランダムアクセスメモリに格納されているデータを、前記第1モードで前記不揮発性メモリに書き込むように構成される請求項1記載のメモリシステム。
  3. 前記コントローラは、前記メモリシステムがアイドル状態である場合、前記第1モードで前記不揮発性メモリに書き込まれたデータを、前記第2モードで前記不揮発性メモリに書き込むように構成される請求項1記載のメモリシステム。
  4. 前記コントローラは、前記受信速度が前記閾値を超えている場合、前記受信速度に基づいて、前記不揮発性メモリに前記第1モードで書き込まれる第1データ量と前記不揮発性メモリに前記第2モードで書き込まれる第2データ量との比を決定するように構成される請求項1記載のメモリシステム。
  5. 前記コントローラは、前記受信速度が前記閾値を超えている場合、前記受信速度が高いほど、前記第1データ量と前記第2データ量との和に対する前記第1データ量の割合を増加させるように構成される請求項4記載のメモリシステム。
  6. 前記コントローラは、
    前記ランダムアクセスメモリ内の第2記憶領域を、前記第2モードで書き込まれるべきデータを格納するための第2バッファとして割り当て、
    前記受信速度が前記閾値を超えたことに応じて、前記ランダムアクセスメモリ内の第1記憶領域を、前記第1モードで書き込まれるべきデータを格納するための第1バッファとして割り当てるように構成される請求項1記載のメモリシステム。
  7. 前記コントローラは、
    前記受信速度が前記閾値以下である場合、ライトコマンドを受け付けたことに伴って前記ホストから受信された第2データを、前記第2バッファに格納し、
    前記受信速度が前記閾値を超えている場合、ライトコマンドを受け付けたことに伴って前記ホストから受信された第3データを、前記第1バッファまたは前記第2バッファに格納するように構成される請求項6記載のメモリシステム。
  8. 前記コントローラは、前記受信速度が前記閾値を超えている場合に、前記第2バッファに前記第3データを格納するための空き領域があるならば、前記第3データを前記第2バッファに格納し、前記空き領域がないならば、前記第3データを前記第1バッファに格納するように構成される請求項7記載のメモリシステム。
  9. 蓄電装置をさらに具備し、
    前記コントローラは、
    前記受信速度が前記閾値以下である間に、外部電源から前記メモリシステムへの電力供給が遮断された場合、前記蓄電装置に蓄積された電荷を用いて、前記第2バッファに格納されているデータを前記第1モードで前記不揮発性メモリに書き込み、
    前記受信速度が前記閾値を超えている間に、前記外部電源から前記メモリシステムへの電力供給が遮断された場合、前記蓄電装置に蓄積された電荷を用いて、前記第1バッファに格納されているデータと前記第2バッファに格納されているデータとを前記第1モードで前記不揮発性メモリに書き込むように構成される請求項7記載のメモリシステム。
  10. 前記コントローラは、前記閾値を超えていた前記受信速度が、前記閾値以下になった場合、前記第1バッファに格納されているデータを前記第1モードで前記不揮発性メモリに書き込んだ後、前記第1バッファを解放するように構成される請求項6記載のメモリシステム。
  11. 前記コントローラは、第1時間内に、1つ以上のライトコマンドを受け付けたことに伴って前記ホストから受信したデータの量に基づいて、前記受信速度を算出するように構成される請求項1記載のメモリシステム。
JP2018160233A 2018-08-29 2018-08-29 メモリシステム Pending JP2020035128A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018160233A JP2020035128A (ja) 2018-08-29 2018-08-29 メモリシステム
US16/433,148 US11372753B2 (en) 2018-08-29 2019-06-06 Memory system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018160233A JP2020035128A (ja) 2018-08-29 2018-08-29 メモリシステム

Publications (1)

Publication Number Publication Date
JP2020035128A true JP2020035128A (ja) 2020-03-05

Family

ID=69639373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018160233A Pending JP2020035128A (ja) 2018-08-29 2018-08-29 メモリシステム

Country Status (2)

Country Link
US (1) US11372753B2 (ja)
JP (1) JP2020035128A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11914896B2 (en) 2020-08-06 2024-02-27 Kioxia Corporation Memory system and write control method

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI698749B (zh) * 2019-03-13 2020-07-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
KR20210006102A (ko) * 2019-07-08 2021-01-18 에스케이하이닉스 주식회사 데이터 입출력 속도에 따라 버퍼의 사용을 결정할 수 있는 메모리 시스템 및 그의 동작 방법
US11347403B2 (en) * 2019-09-04 2022-05-31 Seagate Technolagy LLC Extending the life of a solid state drive by using MLC flash blocks in SLC mode
US11762569B2 (en) * 2019-10-29 2023-09-19 International Business Machines Corporation Workload based relief valve activation for hybrid controller architectures
US11205473B2 (en) * 2020-02-04 2021-12-21 Western Digital Technologies, Inc. Dual SLC/QLC programming and resource releasing
TWI738442B (zh) * 2020-07-29 2021-09-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US20230359551A1 (en) * 2021-03-19 2023-11-09 Micron Technology, Inc. Techniques for a fragment cursor
US11726671B2 (en) * 2021-06-24 2023-08-15 Micron Technology, Inc. Memory access mode selection
US11755237B2 (en) * 2021-08-31 2023-09-12 Micron Technology, Inc. Overwriting at a memory system

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671388A (en) * 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
JP2000347927A (ja) * 1999-06-01 2000-12-15 Nec Software Kyushu Ltd メモリ管理システムおよびメモリ管理方法、並びに記録媒体
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP2013137665A (ja) * 2011-12-28 2013-07-11 Toshiba Corp 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ
US20130304966A1 (en) * 2012-05-14 2013-11-14 SK Hynix Inc. Non-volatile memory device and method for programming the same
US20160259589A1 (en) * 2015-03-06 2016-09-08 Kabushiki Kaisha Toshiba Memory system
US20170068488A1 (en) * 2015-09-07 2017-03-09 Kabushiki Kaisha Toshiba Memory system and method for controlling non-volatile memory
US20180081594A1 (en) * 2016-09-19 2018-03-22 Samsung Electronics Co., Ltd. Storage device and method of operating the same

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4400316B2 (ja) * 2004-06-02 2010-01-20 日産自動車株式会社 運転意図推定装置、車両用運転操作補助装置および車両用運転操作補助装置を備えた車両
US7711890B2 (en) * 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
KR100825787B1 (ko) * 2006-08-18 2008-04-29 삼성전자주식회사 전하트랩층을 포함하는 반도체 메모리소자
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
TWI385516B (zh) * 2008-08-12 2013-02-11 Phison Electronics Corp 快閃記憶體儲存系統及其資料寫入方法
KR101038167B1 (ko) * 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
JP5192352B2 (ja) * 2008-10-30 2013-05-08 株式会社日立製作所 記憶装置及びデータ格納領域管理方法
US8103822B2 (en) * 2009-04-26 2012-01-24 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
CN102473140B (zh) * 2009-07-17 2015-05-13 株式会社东芝 存储器管理装置
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US8495423B2 (en) * 2009-08-11 2013-07-23 International Business Machines Corporation Flash-based memory system with robust backup and restart features and removable modules
US8255620B2 (en) * 2009-08-11 2012-08-28 Texas Memory Systems, Inc. Secure Flash-based memory system with fast wipe feature
US9245653B2 (en) * 2010-03-15 2016-01-26 Intelligent Intellectual Property Holdings 2 Llc Reduced level cell mode for non-volatile memory
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
US20120155167A1 (en) * 2010-12-21 2012-06-21 Kabushiki Kaisha Toshiba Non-volatile storage device, information processing system and write control method of non-volatile storage device
US9612978B2 (en) * 2010-12-31 2017-04-04 International Business Machines Corporation Encrypted flash-based data storage system with confidentiality mode
KR101895605B1 (ko) * 2011-11-21 2018-10-25 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
US9146851B2 (en) * 2012-03-26 2015-09-29 Compellent Technologies Single-level cell and multi-level cell hybrid solid state drive
US9312885B2 (en) * 2012-08-15 2016-04-12 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory system error correction capability of which is improved
US9183144B2 (en) * 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
US9489263B2 (en) * 2014-01-09 2016-11-08 Sandisk Technologies Llc Selective ECC refresh for on die buffered non-volatile memory
US9836108B2 (en) * 2014-09-10 2017-12-05 Toshiba Memory Corporation Memory system and controller
US10353598B2 (en) * 2014-10-06 2019-07-16 Sandisk Technologies Llc System and method for refreshing data in a memory device
US20160162215A1 (en) * 2014-12-08 2016-06-09 Sandisk Technologies Inc. Meta plane operations for a storage device
JP6301865B2 (ja) 2015-03-11 2018-03-28 東芝メモリ株式会社 記憶装置およびサーバ装置
US9811489B2 (en) 2015-03-11 2017-11-07 Toshiba Memory Corporation Storage device and server device
JP6510635B2 (ja) * 2015-04-09 2019-05-08 株式会社日立製作所 ストレージシステム及びデータ制御方法
KR20180024615A (ko) 2016-08-30 2018-03-08 삼성전자주식회사 보조 전력을 공급하기 위한 커패시터들을 포함하는 전자 장치의 전력 및 성능 관리 방법
US10572388B2 (en) * 2017-08-30 2020-02-25 Micron Technology, Inc. Managed NVM adaptive cache management
US10545685B2 (en) * 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
JP7030463B2 (ja) * 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
US10580495B2 (en) * 2017-12-21 2020-03-03 Western Digital Technologies, Inc. Partial program operation of memory wordline
US10482969B2 (en) * 2017-12-21 2019-11-19 Western Digital Technologies, Inc. Programming to a correctable amount of errors

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671388A (en) * 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
JP2000347927A (ja) * 1999-06-01 2000-12-15 Nec Software Kyushu Ltd メモリ管理システムおよびメモリ管理方法、並びに記録媒体
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP2013137665A (ja) * 2011-12-28 2013-07-11 Toshiba Corp 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ
US20130304966A1 (en) * 2012-05-14 2013-11-14 SK Hynix Inc. Non-volatile memory device and method for programming the same
US20160259589A1 (en) * 2015-03-06 2016-09-08 Kabushiki Kaisha Toshiba Memory system
US20170068488A1 (en) * 2015-09-07 2017-03-09 Kabushiki Kaisha Toshiba Memory system and method for controlling non-volatile memory
US20180081594A1 (en) * 2016-09-19 2018-03-22 Samsung Electronics Co., Ltd. Storage device and method of operating the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11914896B2 (en) 2020-08-06 2024-02-27 Kioxia Corporation Memory system and write control method

Also Published As

Publication number Publication date
US11372753B2 (en) 2022-06-28
US20200073795A1 (en) 2020-03-05

Similar Documents

Publication Publication Date Title
US11733888B2 (en) Memory system
US11355197B2 (en) Memory system with nonvolatile cache and control method thereof
JP2020035128A (ja) メモリシステム
US11474702B2 (en) Storage device that writes data from a host during garbage collection
JP7366795B2 (ja) メモリシステムおよび制御方法
US20190129842A1 (en) Memory system having persistent garbage collection
US9298534B2 (en) Memory system and constructing method of logical block
US11436136B2 (en) Memory system including non-volatile buffer and control method thereof
US11573717B2 (en) Storage device having a controller configured to select modes as write modes based on received instructions, storage system, and control method
JP2014116031A (ja) メモリデバイスを備えた電子システム
KR20100107456A (ko) 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템
JP6139381B2 (ja) メモリシステムおよび方法
JP6697410B2 (ja) メモリシステムおよび制御方法
CN112506438B (zh) 一种映射表管理方法及固态硬盘
US20200293221A1 (en) Storage device and computing device including storage device
CN113924546A (zh) 非易失性存储器中的磨损感知块模式转换
JP2019148913A (ja) メモリシステム
KR20220114078A (ko) 캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행
WO2018167890A1 (ja) 計算機システム及び管理方法
JP7451809B2 (ja) 方法
US20230409470A1 (en) Scratchpad cache for gaming and iot hosts
US20240061589A1 (en) Code rate as function of logical saturation
JP2024033081A (ja) メモリシステムおよび制御方法
JP2022062264A (ja) メモリシステム
CN114981786A (zh) 高速缓存媒体管理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210318

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220621