JP2018120439A - メモリシステムおよび制御方法 - Google Patents

メモリシステムおよび制御方法 Download PDF

Info

Publication number
JP2018120439A
JP2018120439A JP2017011590A JP2017011590A JP2018120439A JP 2018120439 A JP2018120439 A JP 2018120439A JP 2017011590 A JP2017011590 A JP 2017011590A JP 2017011590 A JP2017011590 A JP 2017011590A JP 2018120439 A JP2018120439 A JP 2018120439A
Authority
JP
Japan
Prior art keywords
data
mode
slc
write
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017011590A
Other languages
English (en)
Inventor
俊一 井川原
Shunichi Ikawahara
俊一 井川原
敏克 檜田
Toshikatsu Hida
敏克 檜田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory 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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2017011590A priority Critical patent/JP2018120439A/ja
Priority to US15/876,923 priority patent/US10614888B2/en
Publication of JP2018120439A publication Critical patent/JP2018120439A/ja
Priority to US16/788,586 priority patent/US11355197B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7202Allocation control and policies
    • 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/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2209Concurrent read and write
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2245Memory devices with an internal cache buffer
    • 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

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 Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】寿命と性能のバランスを保つことができるメモリシステムを実現する。【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリに書き込まれたデータ量が許容データ量に達するまで、ホストから受信されるライトコマンドに応じてデータを第1モードで不揮発性メモリに書き込む。不揮発性メモリに書き込まれたデータ量が許容データ量に達した場合、メモリシステムは、書き込みモードを第2モードに変更し、ホストから受信されるライトコマンドに応じてデータを第2モードで不揮発性メモリに書き込む。メモリシステムは、アイドル状態の検出に応答して、許容データ量を第1データ量だけ増やし、アイドル状態の検出の後に不揮発性メモリに書き込まれたデータ量が第1データ量に達するまで、ホストから受信されるライトコマンドに応じてデータを第1モードで不揮発性メモリに書き込む。【選択図】図23

Description

本発明の実施形態は、不揮発性メモリを備えるメモリシステムおよびその制御方法に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
NAND型フラッシュメモリのような不揮発性メモリにおいては、そのプログラム/イレーズサイクル数が制限されており、実行されたプログラム/イレーズサイクル数がその制限値に達すると不揮発性メモリに障害が起きる。
また、不揮発性メモリにおいては、メモリセル当たりに格納されるビットの数が増えれば増えるほど、そのメモリ容量(記憶密度)は増加し、一方、その不揮発性メモリへデータを書き込むために要する時間およびその不揮発性メモリからデータを読み出すために要する時間は長くなる。
最近では、シングルレベルセル(SLC)モードとマルチレベルセル(MLC)モードとを選択的に使用してデータを不揮発性メモリに書き込むことが可能なメモリシステムも開発されている。
米国特許第8990458号明細書
SLCモードでデータを不揮発性メモリに書き込むことにより、書き込み性能(書き込み速度)および読み出し性能(読み出し速度)を改善することができる。
しかし、SLCモードを使用した場合には、不揮発性メモリ内の一つのブロックに格納可能なデータ量はMLCモードを使用した場合より減少される。
したがって、SLCモードを使用した場合においては、MLCモードを使用した場合よりも高い頻度でブロックそれぞれの書き込み/消去動作が行われ、これによってプログラム/イレーズサイクル数が増加し易くなる。
上述したように不揮発性メモリは制限されたプログラム/イレーズサイクル数を有しているので、プログラム/イレーズサイクル数の増加は、メモリシステムの寿命期間中に書き込み可能な総データ量を表す指標であるTBW(Total Byte Written)を低下させ、これによってメモリシステムの寿命低下が引き起こされる。
本発明が解決しようとする課題は、寿命と性能のバランスを保つことができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、メモリセル当たりにnビットデータが書き込まれる第1モードまたはメモリセル当たりにmビットデータが書き込まれる第2モードを書き込みモードとして選択し、選択された書き込みモードで、データを前記不揮発性メモリに書き込むように構成されたコントローラとを具備する。前記nは1以上の整数であり、前記mは前記nよりも大きい整数である。前記コントローラは、前記書き込みモードとして前記第1モードを選択し、前記不揮発性メモリに書き込まれたデータ量が前記第1モードで書き込み可能なデータの量を示す許容データ量に達するまで、前記ホストから受信されるライトコマンドに応じてデータを前記第1モードで前記不揮発性メモリに書き込む。前記不揮発性メモリに書き込まれた前記データ量が前記許容データ量に達した場合、前記コントローラは、前記書き込みモードを前記第2モードに変更し、前記ホストから受信されるライトコマンドに応じてデータを前記第2モードで前記不揮発性メモリに書き込む。前記コントローラは、前記ホストからコマンドが閾時間以上の期間中受信されないアイドル状態を検出する。前記アイドル状態の検出に応答して、前記コントローラは、前記許容データ量を第1データ量だけ増やす。前記コントローラは、前記アイドル状態の検出の後に前記不揮発性メモリに書き込まれたデータ量が前記第1データ量に達するまで、前記アイドル状態の検出の後に前記ホストから受信されるライトコマンドに応じてデータを前記第1モードで前記不揮発性メモリに書き込む。
実施形態に係るメモリシステムの構成例を示すブロック図。 アイドル状態が検出されない場合に同実施形態のメモリシステムによって実行される書き込み動作の例を示す図。 同実施形態のメモリシステムによってアイドル状態を挟んで実行される書き込み動作の例を示す図。 同実施形態のメモリシステムによってアイドル状態を挟んで実行される書き込み動作の別の例を示す図。 同実施形態のメモリシステムによってアイドル状態を挟んで実行される書き込み動作のさらに別の例を示す図。 同実施形態のメモリシステムによって実行される書き込み動作の手順を示すフローチャート。 同実施形態のメモリシステムに適用される書き込み動作制御パラメータセットの例を示す図。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加/解放/割り当て処理の手順を示すフローチャート。 同実施形態のメモリシステムによって管理されるフリーブロックプールとSLCブロックプールとMLCアクティブブロックプールとの関係を示す図。 同実施形態のメモリシステムによって実行されるブロック管理動作の例を示す図。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加処理の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加処理の別の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加処理のさらに別の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加処理のさらに別の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加処理のさらに別の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加処理のさらに別の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加処理のさらに別の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック追加処理のさらに別の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック解放処理の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック解放処理の別の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるSLCバッファブロック解放処理のさらに別の手順を示すフローチャート。 アイドル状態が検出されない場合に同実施形態のメモリシステムによって実行される書き込み動作を示すタイミングチャート。 同実施形態のメモリシステムによってアイドル状態を挟んで実行される書き込み動作を示すタイミングチャート。 ホストの構成例を示すブロック図。 ホストと同実施形態のメモリシステムとを含むコンピュータの構成例を示す図。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NAND型フラッシュメモリを備えたソリッドステートドライブ(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を備える。SSD3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。あるいは、SRAMのようなランダムアクセスメモリがコントローラ4に内蔵されていてもよい。
NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(複数のNAND型フラッシュメモリダイ)を含んでいてもよい。各チップは、メモリセル当たりに複数ビットを格納可能に構成されたマルチレベルセル(MLC)フラッシュメモリとして実現されている。
MLCフラッシュメモリの例には、メモリセル当たりに2ビットのデータを格納可能な4レベル−MLCフラッシュメモリ、メモリセル当たりに3ビットのデータを格納可能な8レベル−MLC(TLC:トリプルレベルセル)フラッシュメモリ、メモリセル当たりに4ビットのデータを格納可能な16レベル−MLC(QLC:クワッドレベルセル)フラッシュメモリ、等が含まれる。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。このNAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックB0〜Bm−1を含む。ブロックB0〜Bm−1の各々は多数のページ(ここではページP0〜Pn−1)を含む。ブロックB0〜Bm−1は、最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページP0〜Pn−1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0〜Pn−1は、データ書き込み動作およびデータ読み込み動作の単位である。
NAND型フラッシュメモリ5は、メモリセル当たりに1ビットが書き込まれるシングルレベルセル(SLC)モード、またはメモリセル当たりに複数ビットが書き込まれるマルチレベルセル(MLC)モードのいずれかで、書き込み動作を実行することができる。
例えば、NAND型フラッシュメモリ5は、メモリセル当たりに2ビットを格納可能な4レベル−MLCフラッシュメモリとして実現されていてもよい。
この場合、通常は、2ページ分のデータ(下位ページデータおよび上位ページデータ)が、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに2ビットを書き込むことができる。この4レベル−MLCフラッシュメモリ内の任意の領域(例えば、一つ以上の任意のブロック)は、メモリセル当たりに1ビットのみを格納可能な領域(SLC領域)として使用することができる。
このSLC領域にデータを書き込む書き込み動作においては、1ページ分のデータ(下位ページデータ)のみが同一ワード線に接続された複数のメモリセルに書き込まれてもよい。これにより、SLC領域として使用される各ブロックにおいては、SLCフラッシュメモリ内の各ブロック(SLCブロック)と同様に、メモリセル当たりに1ビットのみを書き込むことができる。この結果、SLC領域として使用される各ブロックは、擬似的なSLCブロックとして機能する。
あるいは、NAND型フラッシュメモリ5は、メモリセル当たりに3ビットを格納可能な8レベル−MLCフラッシュメモリ(トリプルレベルセル(TLC)フラッシュメモリ)であってもよい。
この場合、通常は、3ページ分のデータ(下位ページデータ、ミドルページデータ、および上位ページデータ)が、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに3ビットを書き込むことができる。このTLCフラッシュメモリ内の任意の領域(例えば、一つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、メモリセル当たりに2ビットを格納可能な4レベル−MLC領域として使用されてもよい。この4レベル−MLC領域においては、2ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、4レベル−MLC領域においては、メモリセル当たりに2ビットのみを書き込むことができる。
あるいは、NAND型フラッシュメモリ5は、メモリセル当たりに4ビットを格納可能な16レベル−MLCフラッシュメモリ(クワッドレベルセル(QLC)フラッシュメモリ)であってもよい。
この場合、通常、4ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに4ビットを書き込むことができる。このQLCフラッシュメモリ内の任意の領域(例えば、一つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、上述の4レベル−MLC領域として使用されてもよいし、あるいは、メモリセル当たりに3ビットを格納可能な8レベル−MLC領域として使用されてもよい。8レベル−MLC領域においては、3ページ分のデータのみが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、8レベル−MLC領域においては、メモリセル当たりに3ビットを書き込むことができる。
なお、NAND型フラッシュメモリ5は、メモリセル当たりに5ビット以上を格納可能に構成されていてもよい。この場合においても、NAND型フラッシュメモリ5内の任意の領域は、メモリセル当たりに4ビット以下のデータのみが書き込まれる領域として使用され得る。
ブロックB0〜Bm−1の各々は、限られたプログラム/イレーズサイクル数を有している。あるブロックの1回のプログラム/イレーズサイクルは、このブロック内の全てのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作(プログラム動作)とを含む。
コントローラ4は、Toggle、Open NAND Flash Interface(ONFI)のようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。NANDインタフェース13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。NANDインタフェース13は、複数のチャンネルを介して、NAND型フラッシュメモリ5内の複数のチップにそれぞれ接続されていてもよい。
コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして機能する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、通常、論理ブロックアドレス(LBA)が使用される。
論理ブロックアドレス(LBA)それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル(LUT)32を用いて実行される。コントローラ4は、ルックアップテーブル(LUT)32を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNANDフラッシュメモリ5内の物理記憶位置を示す。アドレス変換テーブル(LUT32)は、SSD3の電源オン時にNANDフラッシュメモリ5からDRAM6にロードされてもよい。
ページへのデータ書き込みは、一つのプログラム/イレーズサイクル当たり1回のみ可能である。このため、コントローラ4は、あるLBAに対応する更新データを、このLBAに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、ルックアップテーブル(LUT)32を更新してこのLBAをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。
ブロック管理には、バッドブロックの管理と、ウェアレベリングと、ガベージコレクション、等が含まれる。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14等を含んでもよい。これらCPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2から様々なコマンド、例えば、I/Oコマンド(ライトコマンド、リードコマンド)、各種制御コマンド、等を受信する。
CPU12は、ホストインタフェース11、NANDインタフェース13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
CPU12は、書き込み制御部21、アイドル状態検出部22、SLCカウント部23、およびガベージコレクション動作制御部24として機能することができる。
書き込み制御部21は、SSD3の寿命の低下を招くこと無くSSD3の性能をできるだけ改善できるようにするために、ホスト2から受信されるデータ(書き込みデータ)をNAND型フラッシュメモリ5に書き込むための書き込みモードを適応的に制御する。つまり、書き込み制御部21は、書き込みモードを、メモリセル当たりにnビットデータが書き込まれる第1モードと、メモリセル当たりにmビットデータが書き込まれる第2モードとの間で動的に切り換えるように構成されている。ここで、nは1以上の整数であり、mはnよりも大きい整数である。
第1モードは、メモリセル当たりに格納可能なビット数を減らすことによってSSD3の書き込み性能および読み出し性能を改善するための性能重視の書き込みモードである。一方、第2モードは、メモリセル当たりに格納可能なビット数を増やすことによって第1モードを使用した場合よりも上述のTBWを増やすことが可能な寿命重視の書き込みモードである。
第1モードと第2モードの組み合わせの例は、以下の通りである。
組み合わせ#1: メモリセル当たりに1ビットが書き込まれるSLCモードが第1モードとして使用され、メモリセル当たりに複数ビットが書き込まれるMLCモードが第2モードとして使用される。MLCモードは、メモリセル当たりに2ビットが書き込まれる4レベル−MLCモードであってもよいし、メモリセル当たりに3ビットが書き込まれる8レベル−MLCモード(TLCモード)であってもよいし、メモリセル当たりに4ビットが書き込まれる16レベル−MLCモード(QLCモード)であってもよい。
組み合わせ#2: 4レベル−MLCモードが第1モードとして使用され、8レベル−MLCモード(TLCモード)または16レベル−MLCモード(QLCモード)が第2モードとして使用される。
組み合わせ#3: 8レベル−MLCモード(TLCモード)が第1モードとして使用され、16レベル−MLCモード(QLCモード)が第2モードとして使用される。
以下では、組み合わせ#1(メモリセル当たりに1ビットが書き込まれるSLCモード、メモリセル当たりに複数ビットが書き込まれるMLCモード)を使用する場合を例示して、書き込みモードを動的に切り換える処理について説明する。
SSD3の工場出荷後のSSD3の初回の電源オン時に、書き込み制御部21は、書き込みモードとしてSLCモードを選択する。そして、書き込み制御部21は、NAND型フラッシュメモリ5に書き込まれたデータ量がSLCモードで書き込み可能なデータの量を示す許容データ量に達するまで、ホスト2から受信されるデータをSLCモードでNAND型フラッシュメモリ5に書き込む。許容データ量は、予め設定されたデータ量である。例えば、NAND型フラッシュメモリ5の容量の1パーセントあるいは数パーセントが、許容データ量として予め設定されていてもよい。
SSD3の工場出荷後の初回の電源オンから許容データ量分のデータがホスト2によってSSD3に書き込まれるまでの期間においては、ホスト2からのデータは、SLCモードでNAND型フラッシュメモリ5に高速で書き込まれる(性能重視)。
書き込みモードがSLCモードである間、ホスト2から受信されるデータ(書き込みデータ)は、SLC領域(SLCバッファとも云う)として割り当てられたNAND型フラッシュメモリ5内の記憶領域に書き込まれる。SLC領域として割り当て可能な記憶領域の最小単位は、SLCバッファユニットと称される。一つのSLCバッファユニットを構成するブロックの個数は、1でもよいし、2以上の任意の個数であってもよい。あるいは、一つのSLCバッファユニットを構成するブロックの個数は、並列動作可能なフラッシュメモリチップの個数と同数であってもよい。
なお、ページが、SLCバッファユニットとして使用されてもよい。あるいは、一つのブロックが幾つかのサブブロックによって構成されている場合には、一つのサブブロックが、SLCバッファユニットとして使用されてもよい。
以下では、一つ以上のブロックから構成されるSLCバッファユニットが、SLC領域として割り当て可能な記憶領域の最小単位として使用される場合を主に想定する。上述の許容データ量は、SLCバッファユニットの数によって指定される。また、以下では、SLCモードでデータを書き込むために使用されるブロックを「SLCバッファブロック」または「SLCブロック」と称し、MLCモードでデータを書き込むために使用されるブロックを「MLCブロック」と称する。
書き込みモードがSLCモードである間、ホスト2から受信されるデータ(書き込みデータ)は、SLC領域に、つまりSLCバッファブロックとして割り当てられたNAND型フラッシュメモリ5内の一つ以上のブロックに、書き込まれる。換言すれば、書き込み制御部21は、ホスト2から受信されるライトコマンドに応じてデータをNAND型フラッシュメモリ5にSLCモードで書き込む。
NAND型フラッシュメモリ5にSLCモードで書き込まれたデータ量が許容データ量に達した場合、書き込み制御部21は、書き込みモードをMLCモードに変更する。そして、書き込み制御部21は、ホスト2から受信されるライトコマンドに応じてデータをMLCモードでNAND型フラッシュメモリ5に書き込む。書き込みモードがMLCモードである間、ホスト2から受信されるデータ(書き込みデータ)は、MLC領域に、つまりMLCブロックとして割り当てられたNAND型フラッシュメモリ5内の一つ以上のブロックに、書き込まれる。
これにより、許容データ量を超える分のデータは、基本的には、MLCモードでNAND型フラッシュメモリ5に書き込まれる(寿命重視)。
例えば、許容データ量が30Mバイトであり、ホスト2から受信される幾つかのライトコマンドによって90Mバイトのデータの書き込みが要求された場合には、最初の30Mバイト分のデータはSLCモードでNAND型フラッシュメモリ5に書き込まれる。後続する60Mバイトのデータは、MLCモードでNAND型フラッシュメモリ5に書き込まれる。
ここで、一つのブロック当たりにMLCモードで書き込み可能なデータ量が20Mバイトであり、一つのブロック当たりにSLCモードで書き込み可能なデータ量が10Mバイトである場合を想定する。
この場合、最初の30Mバイト分のデータは3つのSLCバッファブロックにSLCモードで高速で書き込まれるが、後続する60Mバイトのデータは、3つのMLCブロックにMLCモードで書き込まれる。
このように、連続的に書き込み動作を実行することが必要な期間中、つまり書き込むべきデータ量が多い期間中においては、書き込み動作はMLCモードで実行される。書き込み動作がMLCモードで実行される期間中の総ブログラム/イレーズサイクル数の増加は、この書き込み動作がSLCモードで実行される場合よりも低く抑えることができる。総ブログラム/イレーズサイクル数は、NAND型フラッシュメモリ5において実行されたブログラム/イレーズサイクルの総数、つまりNAND型フラッシュメモリ5内の全ブロックそれぞれのブログラム/イレーズサイクル数の合計値である。
この後、書き込み制御部21は、アイドル状態の検出に応答して、アイドル状態の直後の書き込みモードをSLCモードに戻すために、許容データ量をあるデータ量だけ増やす(追加する)。ここで、アイドル状態とは、ホスト2からコマンドが閾時間以上の期間中受信されない状態を意味する。換言すれば、このアイドル状態はホストインタフェース11のアイドル状態である。
そして、書き込み制御部21は、アイドル状態の検出の後にSLCモードでNAND型フラッシュメモリ5に書き込まれたデータ量が、追加されたデータ量に達するまで、アイドル状態の検出の後にホスト2から受信されるライトコマンドに応じてデータをSLCモードでNAND型フラッシュメモリ5に書き込む。
このように、アイドル状態が検出された時、書き込み制御部21は、現在の期間が、連続的に書き込み動作を実行することが必要とされない期間、つまり書き込むべきデータ量が多くない期間であると判定する。このような期間中においては、たとえSLCモードが使用されたとしても、総ブログラム/イレーズサイクル数が短期間の間に著しく増加するという現象は起こらない。したがって、アイドル状態の直後の書き込みモードをMLCモードからSLCモードに戻すことにより、総ブログラム/イレーズサイクル数の著しい増加を招くこと無く、アイドル状態直後の書き込み性能を一時的に向上させることができる。また、アイドル状態の直後にSLCモードで書き込み可能なデータ量は、追加されたデータ量までに制限される。したがって、たとえ書き込みデータの量が増え始めたとしても、データ書き込みのために使用可能なSLCバッファブロックの数を追加されたデータ量に対応する個数までに制限することができ、これによって総ブログラム/イレーズサイクル数の著しい増加を防止することができる。
SLCカウント部23は、現在使用可能なSLCバッファユニット数を示す値(SLCバッファブロックカウンタ値)をカウントする。許容データ量が一つのSLCバッファユニットに対応するデータ量だけ増やされたならば、SLCカウント部23は、SLCバッファブロックカウンタ値を1だけ増やす。一つのSLCバッファユニットに対応する一つ以上のSLCバッファブロックが書き込み先ブロックとして割り当てられてデータがこのSLCバッファブロックに書き込まれた場合には、SLCカウント部23は、SLCバッファブロックカウンタ値を1だけ減らす。
ガベージコレクション動作制御部24は、データを書き込むことが可能なフリーブロックの個数を増やすためにガベージコレクション動作を実行する。ガベージコレクション動作では、ガベージコレクション動作制御部24は、有効データと無効データとが混在する幾つかのブロック内の有効データを別のブロック(例えばフリーブロック)にコピーする動作を含む。ここで、有効データとは、ルックアップテーブル(LUT)32から参照されている(すなわち論理アドレスから最新のデータとして紐付けられている)、後にホスト2からリードされる可能性があるデータを意味する。無効データとは、もはやホスト2からリードされることが無いデータを意味する。例えば、あるLBAに関連付けられているデータは有効データであり、どのLBAにも関連付けられていないデータは無効データである。そして、ガベージコレクション動作制御部24は、ルックアップテーブル(LUT)32を更新して、コピーされた有効データのLBAそれぞれをコピー先の物理アドレス(正しい物理アドレス)にマッピングする。有効データが別のブロックにコピーされることによって無効データのみになったブロックは、有効データを含まないフリーブロックとして解放される。このブロックはその消去動作が実行された後に再利用することが可能となる。
図2は、アイドル状態が検出されない場合にSSD3のコントローラ4によって実行される書き込み動作の例を示す。
ここでは、説明の簡単化のために、上述の許容データ量が一つのSLCバッファブロック(一つのSLCバッファブロック)分のデータ量である場合を想定する。
(1)最初に、書き込み制御部21は、SLCモードを書き込みモードとして選択する。そして、書き込み制御部21は、フリーブロック71をSLCモード用の書き込み先ブロック(SLCバッファブロック)41として割り当て、ホスト2から受信されるデータをSLCバッファブロック41にSLCモードで書き込む。
(2)SLCバッファブロック41がデータで満たされると、つまり許容データ量分のデータがSLCモードで書き込まれると、書き込み制御部21は、書き込みモードをMLCモードに変更する。そして、書き込み制御部21は、次のフリーブロック72をMLCモード用の書き込み先ブロック(MLCブロック)51として割り当て、ホスト2から受信されるデータをMLCブロック51にMLCモードで書き込む。
(3)MLCブロック51がデータで満たされると、書き込み制御部21は、次のフリーブロック73をMLCモード用の書き込み先ブロック(MLCブロック)52として割り当て、ホスト2から受信されるデータをMLCブロック52にMLCモードで書き込む。
(4)MLCブロック52がデータで満たされると、書き込み制御部21は、次のフリーブロック74をMLCモード用の書き込み先ブロック(MLCブロック)53として割り当て、ホスト2から受信されるデータをMLCブロック53にMLCモードで書き込む。
図3は、コントローラ4によってアイドル状態を挟んで実行される書き込み動作の例を示す。
(1)最初に、書き込み制御部21は、SLCモードを書き込みモードとして選択する。そして、書き込み制御部21は、フリーブロック71をSLCモード用の書き込み先ブロック(SLCバッファブロック)41として割り当て、ホスト2から受信されるデータをSLCバッファブロック41にSLCモードで書き込む。
(2)SLCバッファブロック41がデータで満たされると、つまり許容データ量分のデータがSLCモードで書き込まれると、書き込み制御部21は、書き込みモードをMLCモードに変更する。そして、書き込み制御部21は、次のフリーブロック72をMLCモード用の書き込み先ブロック(MLCブロック)51として割り当て、ホスト2から受信されるデータをMLCブロック51にMLCモードで書き込む。
(3)アイドル状態検出部22によってアイドル状態が検出された場合、書き込み制御部21は、許容データ量を一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)だけ追加し、書き込みモードをSLCモードに戻す。これにより、許容データ量が一つのSLCバッファブロック分のデータ量だけ増やされるので、さらに一つのフリーブロックをSLCバッファブロックとして利用することが可能となる。この場合、一つのフリーブロックが、SLCバッファブロックとして割り当て可能なブロックとして追加(確保)されてもよい。
(4)そして、書き込み制御部21は、次のフリーブロック73をSLCモード用の書き込み先ブロック(SLCバッファブロック)42として割り当て、アイドル状態の検出の後にホスト2から受信されるデータをSLCバッファブロック42にSLCモードで書き込む。フリーブロック73は、(3)でSLCバッファブロック用に割り当て可能なブロックとして追加(確保)されたブロックに相当する。
(5)SLCバッファブロック42がデータで満たされると、つまり、アイドル状態の検出の後にSLCモードで書き込まれたデータ量が一つのSLCバッファブロック分のデータ量に達すると、書き込み制御部21は、書き込みモードを再びMLCモードに変更する。そして、書き込み制御部21は、次のフリーブロック74をMLCモード用の書き込み先ブロック(MLCブロック)52として割り当て、ホスト2から受信されるデータをMLCブロック52にMLCモードで書き込む。
図4は、コントローラ4によってアイドル状態を挟んで実行される書き込み動作のさらに別の例を示す。
(1)最初に、書き込み制御部21は、SLCモードを書き込みモードとして選択する。そして、書き込み制御部21は、フリーブロック71をSLCモード用の書き込み先ブロック(SLCバッファブロック)41として割り当て、ホスト2から受信されるデータをSLCバッファブロック41にSLCモードで書き込む。
(2)SLCバッファブロック41がデータで満たされると、つまり許容データ量分のデータがSLCモードで書き込まれると、書き込み制御部21は、書き込みモードをMLCモードに変更する。そして、書き込み制御部21は、次のフリーブロック72をMLCモード用の書き込み先ブロック(MLCブロック)51として割り当て、ホスト2から受信されるデータをMLCブロック51にMLCモードで書き込む。
(3)アイドル状態検出部22によってアイドル状態が検出された場合、書き込み制御部21は、許容データ量を一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)だけ追加し、書き込みモードをSLCモードに戻す。
(4)そして、書き込み制御部21は、次のフリーブロック73をSLCモード用の書き込み先ブロック(SLCバッファブロック)42として割り当て、アイドル状態の検出の後にホスト2から受信されるデータをSLCバッファブロック42にSLCモードで書き込む。
(5)SLCバッファブロック42がデータで満たされる前に、アイドル状態検出部22によってアイドル状態が再び検出された場合、書き込み制御部21は、許容データ量を一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)だけ再び追加し、書き込みモードをSLCモードに維持する。これにより、許容データ量が一つのSLCバッファブロック分のデータ量だけ再び増やされるので、さらにもう一つのフリーブロックをSLCバッファブロックとして利用することが可能となる。この場合、一つのフリーブロックが、SLCバッファブロックとして割り当て可能なブロックとして追加(確保)されてもよい。
なお、許容データ量を一つのバッファブロック全体に対応するデータ量だけ追加せずに、許容データ量を、一つのバッファブロック分のデータ量からSLCバッファブロック42の空き領域を引いた残りのデータ量(つまり、一つのSLCバッファユニットに不足している分のデータ量)だけ追加してもよい。SLCバッファブロック42の空き領域は、まだデータが書き込まれていないSLCバッファブロック42内の利用可能領域である。
(6)書き込み制御部21は、2回目のアイドル状態の検出の後にホスト2から受信されるデータを、SLCバッファブロック42の空き領域にSLCモードで書き込む。
(7)SLCバッファブロック42がデータで満たされると、書き込み制御部21は、次のフリーブロック74をSLCモード用の書き込み先ブロック(SLCバッファブロック)43として割り当てる。このフリーブロック74は、(5)でSLCバッファブロック用に割り当て可能なブロックとして追加(確保)されたブロックに相当する。書き込み制御部21は、ホスト2から受信されるデータをSLCバッファブロック43にSLCモードで書き込む。なお、2回目のアイドル状態の検出の後にホスト2から受信されるデータは、最初に、SLCバッファブロック43にSLCモードで書き込まれてもよく、そして、SLCバッファブロック43がデータで満たされた後に、後続のデータがSLCバッファブロック42の空き領域にSLCモードで書き込まれてもよい。
図5は、コントローラ4によってアイドル状態を挟んで実行される書き込み動作のさらに別の例を示す。
(1)最初に、書き込み制御部21は、SLCモードを書き込みモードとして選択する。そして、書き込み制御部21は、フリーブロック71をSLCモード用の書き込み先ブロック(SLCバッファブロック)41として割り当て、ホスト2から受信されるデータをSLCバッファブロック41にSLCモードで書き込む。
(2)SLCバッファブロック41がデータで満たされると、つまり許容データ量分のデータがSLCモードで書き込まれると、書き込み制御部21は、書き込みモードをMLCモードに変更する。そして、書き込み制御部21は、次のフリーブロック72をMLCモード用の書き込み先ブロック(MLCブロック)51として割り当て、ホスト2から受信されるデータをMLCブロック51にMLCモードで書き込む。
(3)MLCブロック51がデータで満たされる前にアイドル状態検出部22によってアイドル状態が検出された場合、書き込み制御部21は、まず、許容データ量を一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)だけ追加し、書き込みモードをSLCモードに戻す。これにより、許容データ量が一つのSLCバッファブロック分のデータ量だけ再び増やされるので、さらに一つのフリーブロックをSLCバッファブロックとして利用することが可能となる。この場合、一つのフリーブロックが、SLCバッファブロックとして割り当て可能なブロックとして追加(確保)されてもよい
(4)そして、書き込み制御部21は、次のフリーブロック73をSLCモード用の書き込み先ブロック(SLCバッファブロック)42として割り当て、アイドル状態の検出の後にホスト2から受信されるデータをSLCバッファブロック42にSLCモードで書き込む。このフリーブロック73は、(3)でSLCバッファブロック用に割り当て可能なブロックとして追加(確保)されたブロックに相当する。
(5)SLCバッファブロック42がデータで満たされると、つまり、アイドル状態の検出の後にSLCモードで書き込まれたデータ量が一つのSLCバッファブロック分のデータ量に達すると、書き込み制御部21は、書き込みモードを再びMLCモードに変更する。そして、書き込み制御部21は、ホスト2から受信されるデータをMLCブロック51の空き領域にMLCモードで書き込む。MLCブロック51の空き領域は、まだデータが書き込まれていない利用可能領域である。
なお、最初に、MLCブロック51の空き領域にデータを書き込んでもよく、そしてMLCブロック51の空き領域がデータで満たされた後に、後続のデータをSLCバッファブロック42に書き込んでもよい。
(6)MLCブロック51がデータで満たされると、書き込み制御部21は、次のフリーブロック74をMLCモード用の書き込み先ブロック(MLCブロック)52として割り当て、ホスト2から受信されるデータをMLCブロック52にMLCモードで書き込む。
図6のフローチャートは、コントローラ4によって実行される書き込み動作の手順を示す。
本実施形態では、許容データ量分のホスト2からのデータは優先的にSLCモードでNAND型フラッシュメモリ5に書き込まれる。許容データ量は、「SLCバッファユニットの最小数」と称されるパラメータによって予め指定される。
すなわち、コントローラ4の書き込み制御部21は、最初に、SLCモードを選択し、ホスト2から受信されるデータ(書き込みデータ)をSLCモードでNAND型フラッシュメモリ5に書き込む(ステップS101)。
NAND型フラッシュメモリ5に書き込まれたデータ量がSLCバッファユニットの最小数に相当するデータ量(許容データ量)に達した場合(ステップS102のYES)、書き込み制御部21は、アイドル状態検出部22によってホストインタフェース11のアイドル状態が検出されたか否かを判定する(ステップS103)。
アイドル状態が検出されないならば、つまり書き込み動作が現在連続的に実行されているならば(ステップS103のNO)、書き込み制御部21は、書き込みモードをMLCモードに変更し、ホスト2から受信されるデータをMLCモードでNAND型フラッシュメモリ5に書き込む(ステップS104)。
書き込み動作が連続的に実行されている間は、書き込みモードはMLCモードに維持される。そして、もしMLCモードで書き込み動作が実行されている間にアイドル状態が検出されたならば(ステップS103のYES)、書き込み制御部21は、SLCモードで書き込み可能なデータ量(許容データ量)を例えば一つのSLCバッファユニット分のデータ量だけ増加し、これによって書き込みモードをSLCモードに戻す(ステップS105)。書き込み可能なデータ量(許容データ量)が増加される単位は、一つのSLCバッファユニットに対応するデータ量に限定されず、例えば、2SLCバッファユニットに対応するデータ量の単位で許容データ量が増加されてもよいし、3以上のSLCバッファユニットに対応するデータ量の単位で許容データ量が増加されてもよい。このアイドル状態の後、書き込み制御部21は、ホスト2から受信されるデータをSLCモードでNAND型フラッシュメモリに書き込む(ステップS106)。
書き込み制御部21は、ステップS105において増加されたデータ量分のデータがSLCモードでNAND型フラッシュメモリに書き込まれたか否かを判定する(ステップS107)。
増加されたデータ量分のデータの書き込みが完了する前にアイドル状態が検出されたならば(ステップS107のNO、ステップS108のYES)、書き込み制御部21は、SLCモードで書き込み可能なデータ量(許容データ量)を例えば一つのSLCバッファユニット分のデータ量だけ増加する(ステップS109)。
増加された総データ量分のデータの書き込みが完了したならば(ステップS107のYES)、書き込み制御部21は、ステップS104の処理に進み、書き込みモードをMLCモードに変更する。
図7は、コントローラ4によって使用される書き込み動作制御パラメータセットの例を示す。
書き込み動作制御パラメータセットは、SLCモードまたはMLCモードを選択的に使用するためにコントローラ4によって使用されるパラメータ群である。書き込み動作制御パラメータセットは、例えば、図示しないROMに上述のファームウェアと一緒に保存されていてもよい。書き込み動作制御パラメータセットは、以下のパラメータを含んでもよい。
(1)SLCバッファユニット
(2)SLCバッファユニットの最小数
(3)SLCバッファユニットの最大数
(4)インターバルタイム
(5)プログラム/イレーズサイクルカウント閾値
「SLCバッファユニット」のパラメータは、一つのSLCバッファユニットのデータ量を示す。一つのSLCバッファユニットは、SLCモードで書き込み可能なデータ量(許容データ量)を増加(追加)するための単位である。つまり、アイドル状態が検出される度に、許容データ量は、一つのSLCバッファユニット分のデータ量だけ、または一つのSLCバッファユニットに不足している分だけのデータ量だけ増やされる。
「SLCバッファユニットの最小数」のパラメータは、上述の許容データ量として最低限割り当てられるSLCバッファユニットの数を示す。このパラメータは、SSD3の初期状態(例えば出荷直後)においてSLC領域として割り当てられるSLCバッファのデータ量、つまり上述の許容データ量の初期値に相当する。
「SLCバッファユニットの最大数」のパラメータは、割り当て可能なSLCバッファユニット数の最大値を示す。この値は、SLCモードで書き込み可能なデータの最大量に相当する。初期状態から増やされた後の許容データ量の最大量は、SLCモードで書き込み可能なデータの最大量以下に制限され、SLCバッファユニット数の最大値を超えることはない。つまり、本実施形態では、アイドル状態の検出の度に許容データ量(SLCバッファの量)は、例えば一つのSLCバッファユニット分だけ増やされるが、増やされた許容データ量(現在のSLCバッファユニットのデータ量:SLCバッファユニットの最小数と既に追加されたSLCバッファユニット数との合計に対応するデータ量)が「SLCバッファユニットの最大数」に達した後は、たとえアイドル状態が検出されても、SLCバッファの量は増やされず、書き込みモードはMLCモードに維持される。換言すれば、書き込み制御部21は、増やされた許容データ量がSLCバッファユニットの最大数に達していない場合、アイドル状態の検出の度に、許容データ量を第1データ量だけ増やす。これにより、ホスト2によって利用可能な実際のストレージ容量が、SSD3によってホスト2に報告されるストレージ容量(ユーザ容量)よりも減少してしまうことを防止することができる。
「インターバルタイム」のパラメータは、アイドル状態を検出するために使用される閾時間を示す。ホスト2からコマンドが受信されない期間がインターバルタイムによって指定される時間以上継続した時、現在の状態が、アイドル状態であることが検出され、SLCバッファが例えば一つのSLCバッファユニット分だけ増量される。
「プログラム/イレーズサイクルカウント閾値」のパラメータは、「SLCバッファユニットの最大数」と同様に、許容データ量を増やすことを許可するための条件(必要条件)として利用される。NAND型フラッシュメモリ5のプログラム/イレーズサイクル数が「プログラム/イレーズサイクルカウント閾値」に達するまでは、許容データ量(SLCバッファ)を増やすことが許可される。NAND型フラッシュメモリ5のプログラム/イレーズサイクル数が「プログラム/イレーズサイクルカウント閾値」に達した後は、たとえアイドル状態が検出されても、SLCバッファの量は増やされず、書き込みモードはMLCモードに維持される。これにより、SSD3の寿命低下を防止することができる。
NAND型フラッシュメモリ5の現在のプログラム/イレーズサイクル数が「プログラム/イレーズサイクルカウント閾値」に達すると、たとえ増やされた許容データ量(現在のSLCバッファのデータ量)が「SLCバッファユニットの最大数」未満であっても、許容データ量(SLCバッファ)の増加は禁止される。
NAND型フラッシュメモリ5のプログラム/イレーズサイクル数の増加の割合は、ホスト2からの書き込みデータのパターンに依存する。したがって、増やされた許容データ量(現在のSLCバッファのデータ量)が「SLCバッファユニットの最大数」未満である期間内であっても、ホスト2からの書き込みデータのパターンによっては、NAND型フラッシュメモリ5のプログラム/イレーズサイクル数が過度に増加する場合がある。本実施形態では、「プログラム/イレーズサイクルカウント閾値」を許容データ量を増やすことを許可するための条件として使用することによって、SSD3の寿命の低下をより確実に抑制することができ、ストレージ寿命を達成することができる。
許容データ量を増やすことを許可するための条件としては、「SLCバッファユニットの最大数」、「プログラム/イレーズサイクルカウント閾値」のいずれか一方が使用されてもよいし、「SLCバッファユニットの最大数」と「プログラム/イレーズサイクルカウント閾値」の双方が使用されてもよい。
換言すれば、許容データ量を増やすことを許可するための条件としては、増やされた許容データ量(現在のSLCバッファのデータ量)が「SLCバッファユニットの最大数」未満であるという第1条件のみが使用されてもよい。あるいは、許容データ量を増やすことを許可するための条件としては、NAND型フラッシュメモリ5の現在のプログラム/イレーズサイクル数が「プログラム/イレーズサイクルカウント閾値」以下であるという第2条件のみが使用されてもよい。あるいは、許容データ量を増やすことを許可するための条件としては、増やされた許容データ量(現在のSLCバッファのデータ量)が「SLCバッファユニットの最大数」未満であり、且つNAND型フラッシュメモリ5の現在のプログラム/イレーズサイクル数が「プログラム/イレーズサイクルカウント閾値」以下であるという第3条件が使用されてもよい。
なお、「プログラム/イレーズサイクルカウント閾値」は、NAND型フラッシュメモリ5の全てのブロックの現在の総プログラム/イレーズサイクル数と比較するための閾値Y1であってもよいし、NAND型フラッシュメモリ5の現在の最大プログラム/イレーズサイクル数と比較するための閾値Y2であってもよいし、NAND型フラッシュメモリ5の現在の平均プログラム/イレーズサイクル数と比較するための閾値Y3であってもよいし、NAND型フラッシュメモリ5の現在の最小プログラム/イレーズサイクル数と比較するための閾値Y4であってもよい。
「プログラム/イレーズサイクルカウント閾値」がNAND型フラッシュメモリ5の現在の総プログラム/イレーズサイクル数と比較するための閾値Y1であるならば、NAND型フラッシュメモリ5の現在の総プログラム/イレーズサイクル数が閾値Y1以下である場合にのみ、SLCバッファを増量する処理が許可される。
NAND型フラッシュメモリ5の現在の総プログラム/イレーズサイクル数は、NAND型フラッシュメモリ5において実行されたプログラム/イレーズサイクルの総数、つまり、NAND型フラッシュメモリ5内の全てのブロックのプログラム/イレーズサイクル数の合計値を示す。なお、現在の総プログラム/イレーズサイクル数は、一部のブロックのプログラム/イレーズサイクル数のみをサンプリングすることによって求めることもできる。
「プログラム/イレーズサイクルカウント閾値」がNAND型フラッシュメモリ5の現在の最大プログラム/イレーズサイクル数と比較するための閾値Y2であるならば、NAND型フラッシュメモリ5の現在の最大プログラム/イレーズサイクル数が閾値Y2以下である場合にのみ、SLCバッファを増量する処理が許可される。NAND型フラッシュメモリ5の現在の最大プログラム/イレーズサイクル数は、NAND型フラッシュメモリ5内の全てのブロックそれぞれのプログラム/イレーズサイクル数の内の最大値を示す。なお、現在の最大プログラム/イレーズサイクル数も、一部のブロックのプログラム/イレーズサイクル数のみをサンプリングすることによって求めることもできる。
「プログラム/イレーズサイクルカウント閾値」がNAND型フラッシュメモリ5の現在の平均プログラム/イレーズサイクル数と比較するための閾値Y3であるならば、NAND型フラッシュメモリ5の現在の平均プログラム/イレーズサイクル数が閾値Y3以下である場合にのみ、SLCバッファを増量する処理が許可される。NAND型フラッシュメモリ5の現在の平均プログラム/イレーズサイクル数は、NAND型フラッシュメモリ5内の全てのブロックそれぞれのプログラム/イレーズサイクル数の平均を示す。なお、現在の平均プログラム/イレーズサイクル数も、一部のブロックのプログラム/イレーズサイクル数のみをサンプリングすることによって求めることもできる。
「プログラム/イレーズサイクルカウント閾値」がNAND型フラッシュメモリ5の現在の最小プログラム/イレーズサイクル数と比較するための閾値Y4であるならば、NAND型フラッシュメモリ5の現在の最小プログラム/イレーズサイクル数が閾値Y4以下である場合にのみ、SLCバッファを増量する処理が許可される。NAND型フラッシュメモリ5の現在の最小プログラム/イレーズサイクル数は、NAND型フラッシュメモリ5内の全てのブロックそれぞれのプログラム/イレーズサイクル数の内の最小値を示す。なお、現在の最小プログラム/イレーズサイクル数も、一部のブロックのプログラム/イレーズサイクル数のみをサンプリングすることによって求めることもできる。
以下では、「プログラム/イレーズサイクル数」を「P/Eサイクル数」と称する。
図8のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加/解放/割り当て処理の手順を示す。
コントローラ4は、SLCバッファブロック追加条件が満たされるか否かを判定する(ステップS201)。SLCバッファブロック追加条件は、SLCバッファブロックを追加することを許可するための必要条件を示す。SLCバッファブロック追加条件の例は、少なくともアイドル状態の検出を含む。さらに、SLCバッファブロック追加条件の例は、(1)ストレージ寿命を達成可能であること(NAND型フラッシュメモリ5の現在のプログラム/イレーズサイクル数がプログラム/イレーズサイクルカウント閾値以下であること)、または(2)増やされた許容データ量(現在のSLCバッファのデータ量)が予め設定された最大量を超えないこと、の内の少なくとも一つをSLCバッファブロックを追加することを許可するための追加の必要条件として含んでもよい。
なお、通常は、SLCバッファブロックの追加はアイドル状態の検出の度に実行されるが、現在利用可能なSLCバッファが無いか、あるいはSLCモードで書き込み可能な現在のデータ量が一つのSLCバッファユニットに満たない場合にのみ、SLCバッファブロックの追加を実行するというモードを使用することも可能である。
SLCバッファブロック追加条件が満たされるならば(ステップS201のYES)、コントローラ4は、一つのSLCバッファユニット分の一つ以上のSLCバッファブロックをSLCバッファとして追加する(ステップS202)。この場合、SLCカウント部23は、SLCバッファブロックカウンタ値を「1」だけ増加させる。
次に、コントローラ4は、SLCバッファブロック解放条件が満たされるか否かを判定する(ステップS203)。SLCバッファブロック解放条件は、有効データを含むSLCバッファブロックを有効データを含まないフリーブロックにすることを許可するための必要条件を示す。
SLCバッファブロック解放条件を満たすSLCバッファブロックが存在するならば(ステップS203のYES)、コントローラ4は、このSLCバッファブロックを解放する(ステップS204)。ステップS204では、例えば、コントローラ4は、このSLCバッファブロック内の有効データを他のブロックにコピーすることによってこのSLCバッファブロックをフリーブロックにする。フリーブロックとして解放されたこのブロックは、SLCモードでデータ書き込み可能なSLCバッファブロックとして維持されてもよいし、フリーブロック群を管理するためのフリーブロックプールに移動されてもよい。前者の場合には、SLCカウント部23は、SLCバッファブロックカウンタ値を「1」だけ増加させる。
次に、コントローラ4は、新規SLCバッファブロックへのデータ書き込み動作が必要か否かを判定する(ステップS205)。現在の書き込み先ブロックがデータで満たされ、且つSLCバッファブロックカウンタ値が1以上であるならば、新規SLCバッファブロックへのデータ書き込み動作が必要であると判定される。新たなフリーブロックをSLCモード用の新たな書き込み先ブロックとして割り当てることが必要だからである。
新規SLCバッファブロックへのデータ書き込み動作が必要ならば(ステップS205のYES)、コントローラ4は、新規SLCバッファブロックをSLCモード用の新たな書き込み先ブロックとして割り当て、ホスト2からのデータをこの書き込み先ブロックにSLCモードで書き込む(ステップS206)。SLCカウント部23は、SLCバッファブロックカウンタ値を「1」だけ減少させる。なお、SLCモードで書き込み可能なデータ量を追加する単位(最小SLCバッファ単位)は、一つのSLCバッファユニットよりも小さい単位であってもよい。この場合、SLCバッファブロックカウンタ値は、例えば、追加された最小SLCバッファ単位の数だけインクリメントされてもよく、データ書き込みに使用された最小SLCバッファ単位の数だけデクリメントされてもよい。
図9は、コントローラ4によって管理されるフリーブロックプール60とSLCブロックプール61とMLCアクティブブロックプール62との関係を示す。
ブロックは、有効データを格納しているブロック(アクティブブロック)と、有効データを格納しておらず新たなデータの書き込みに利用可能なブロック(フリーブロック)とに大別される。
また、アクティブブロックは、以下に示す(1)、(2)に分けられる。
(1)データがSLCモードで書き込まれたブロック(SLCアクティブブロック)
(2)データがMLCモードで書き込まれたブロック(MLCアクティブブロック)
さらに、フリーブロックは、以下に示す(3)、(4)に分けられる。
(3)SLCモードで書き込まれることが予定されているフリーブロック(SLCフリーブロック)
(4)SLCモード、MLCモードのいずれのモードで書き込みが行われるかについて確定していないフリーブロック(コンプリートフリーブロック)
SLCアクティブブロック及びSLCフリーブロックは、SLCブロックプール61と称されるリストによって管理される。
SLCブロックプール61は、SLCアクティブブロックプール61AとSLCフリーブロックプール61Bとを有している。
各SLCアクティブブロックは、SLCアクティブブロックプール61Aで管理される。各SLCフリーブロックは、SLCフリーブロックプール61Bで管理される。
MLCアクティブブロックは、MLCアクティブブロックプール62と称されるリストによって管理される。コンプリートフリーブロックは、フリーブロックプール60と称されるリストによって管理される。
なお、SLCカウント部23は、SLCフリーブロックプール61B内に存在するブロックの数をカウントする。
前述した「SLCバッファブロックの追加」とは、フリーブロックプール60のブロックをSLCフリーブロックプール61Bに移動させることに相当する。
また、前述した「SLCバッファブロックの解放」とは、SLCアクティブブロックプール61A内のSLCアクティブブロックに格納された有効データを他のブロックにコピー(移動)することで、このSLCアクティブブロックを、無効データのみを含むフリーブロックにすることに相当する。SLCバッファブロックを解放する処理では、あるSLCバッファブロック内の有効データをMLCブロックに移動する処理が実行されてもよいし、幾つかのSLCバッファブロック内の有効データを一つのブロックに集めるガベージコレクション処理が実行されてもよい。
解放されたブロックは、SLCアクティブブロックプール61AからSLCフリーブロックプール61Bに移動されてもよいし、SLCアクティブブロックプール61Aからフリーブロックプール60に移動されてもよい。解放されたブロックがSLCアクティブブロックプール61AからSLCフリーブロックプール61Bに移動された場合には、SLCカウント部23によってSLCバッファブロックカウンタ値が「1」だけ増加される。
図10は、コントローラ4によって実行されるブロック管理動作の例を示す。
ここでは、書き込み動作を中心に説明する。
書き込み制御部21は、SLCカウント部23によってカウントされているSLCバッファブロックカウンタ値を基に、SLCモードまたはMLCモードを書き込みモードとして選択する。SLCバッファブロックカウンタ値が1以上の場合、書き込み制御部21は、SLCモードを書き込みモードとして選択し、SLCフリーブロックプール61Bのブロックを書き込み先ブロックとして割り当て、その割り当てられたブロックにホスト2からのデータをSLCモードで書き込む。この割り当てられたブロックがホスト2からのデータで満たされると、このブロックは、SLCアクティブブロックプール61Aに移動する。
一方、SLCバッファブロックカウンタ値が0の場合、書き込み制御部21は、MLCモードを書き込みモードとして選択し、フリーブロックプール60のブロックを書き込み先ブロックとして割り当て、その割り当てられたブロックにホスト2からのデータをMLCモードで書き込む。この割り当てられたブロックがホスト2からのデータで満たされると、このブロックは、MLCアクティブブロックプール62に移動する。
ガベージコレクション動作制御部24は、データを書き込むことが可能なブロック(コンプリートフリーブロック、SLCフリーブロック)の個数を増やすためにガベージコレクションを実行する。
ガベージコレクションでは、ガベージコレクション動作制御部24は、有効データと無効データとが混在する、幾つかのSLCアクティブブロックまたはMLCアクティブブロックをコピー元ブロックとして選択し、これらコピー元ブロック内の有効データのみをコピー先ブロック(フリーブロック)にコピーする。コピー先ブロックは、フリーブロックプール60内のフリーブロックであってもよいし、SLCフリーブロックプール61B内のSLCフリーブロックであってもよい。例えば、有効データがフリーブロックプール60内のフリーブロックにMLCモードで書き込まれた場合には、有効データがMLCモードで書き込まれたこのブロックは、MLCアクティブブロックプール62によって管理される。一方、有効データがSLCフリーブロックプール61B内のSLCフリーブロックにSLCモードで書き込まれた場合には、有効データがSLCモードで書き込まれたこのブロックは、SLCアクティブブロックプール61Aによって管理される。
なお、コントローラ4は、SSD3の電源オフによってSLCバッファブロックカウンタ値が消失されるのを防止するために、SSD3の電源オフの直前に、現在のSLCバッファブロックカウンタ値をNAND型フラッシュメモリ5に保存する不揮発化処理を実行してもよいし、この不揮発化処理を実行しなくてもよい。不揮発化処理を実行したケースにおいては、次回SSD3が電源オンされた時に、保存されたSLCバッファブロックカウンタ値がNAND型フラッシュメモリ5からリードされ、このリードされたSLCバッファブロックカウンタ値に基づいて、使用すべき書き込みモードが決定される。
不揮発化処理が実行されないケースにおいては、SSD3の電源オフによって現在のSLCバッファブロックカウンタ値はゼロにリセットされる。この場合、SLCフリーブロックプール61Bによって管理されている各ブロックはコンプリートフリーブロックとなる。次回SSD3が電源オンされた時、SLCバッファブロックカウンタ値はゼロであるので、書き込みモードとしてMLCモードが選択される。そして、アイドル状態が検出された時にSLCバッファブロックが追加され、SLCバッファブロックカウンタ値が1だけ増加される。
図11のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加処理の手順を示す。
ここでは、SLCバッファブロックを追加することを許可するための必要条件がアイドル状態の検出のみである場合を想定する。
アイドル状態検出部22は、ホストインタフェース11を介してホスト2から受信されるコマンドを監視し、ホスト2からコマンドが上述のインターバルタイム以上の期間中受信されない状態を、アイドル状態(アイドルタイム)として検出する。
アイドル状態であるか否かを判定するために監視されるコマンドの種類は、ライトコマンドのみであってもよい。この場合、アイドル状態検出部22は、ホスト2からライトコマンドがインターバルタイム以上の期間中受信されない第1状態をアイドル状態として検出する。
アイドル状態であるか否かを判定するために監視されるコマンドの種類は、I/Oコマンド(ライトコマンドおよびリードコマンド)であってもよい。この場合、アイドル状態検出部22は、ホスト2からI/Oコマンドがインターバルタイム以上の期間中受信されない第2状態をアイドル状態として検出する。この第2状態は、ライトコマンド、リードコマンドのどちらも、インターバルタイム以上の期間中受信されない状態である。ホスト2によってI/Oコマンド(ライトコマンド、またはリードコマンド)がSSD3に送出された時、ライトコマンド、リードコマンドのどちらも、コントローラ4内のI/Oコマンドキューに格納される。したがって、アイドル状態検出部22は、I/Oコマンドキューを監視するだけで、ホスト2からI/Oコマンドが受信されたか否かを容易に判定することができる。
アイドル状態であるか否かを判定するために監視されるコマンドの種類は、I/Oコマンド(ライトコマンドおよびリードコマンド)および制御コマンドの双方であってもよい。制御コマンドは、SSD3の管理のためのADMINコマンドであってもよい。この場合、アイドル状態検出部22は、ホスト2からI/Oコマンドおよび制御コマンドがインターバルタイム以上の期間中受信されない第3状態をアイドル状態として検出する。この第3状態は、I/Oコマンド、制御コマンドのどちらも、インターバルタイム以上の期間中受信されない状態である。ホスト2によって制御コマンド(ADMINコマンド)がSSD3に送出された時、この制御コマンド(ADMINコマンド)は、コントローラ4内の制御(ADMIN)コマンドキューに格納される。したがって、アイドル状態検出部22は、制御(ADMIN)コマンドキューを監視するだけで、ホスト2から制御コマンド(ADMINコマンド)コマンドが受信されたか否かを容易に判定することができる。
なお、ホスト2は、コマンドをSSD3に一定期間以上送出する予定が無い場合に、SSD3をローパワーステート(低消費電力状態)に遷移させるためのパワー管理コマンドを送信する場合がある。このパワー管理コマンドの受信に応答して、コントローラ4は、コントローラ4の状態をローパワーステート(低消費電力状態)に遷移させる制御を実行する。したがって、アイドル状態検出部22は、パワー管理コマンドをホスト2から受信したことをアイドル状態として検出してもよい。換言すれば、パワー管理コマンドが受信されると、その時点で、直ちに、現在の状態がアイドル状態であると検出されてもよい。
アイドル状態検出部22によってアイドル状態が検出されると(ステップS301のYES)、書き込み制御部21は、SLCバッファブロックを追加する(ステップS302)。これにより、SLCモードで書き込むことができる許容データ量が増加し、書き込みモードとしてSLCモードを使用することが可能となる。
図12のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加処理の別の手順を示す。
ここでは、SLCバッファブロックを追加することを許可するための必要条件が、アイドル状態が検出され且つフリーブロックの数が閾値X1以上である場合を想定する。
アイドル状態検出部22によってアイドル状態が検出されると(ステップS401のYES)、コントローラ4は、残りのフリーブロックの数が閾値X1以上であるか否かを判定する(ステップS402)。残りのフリーブロックの数は、フリーブロックプール60によって管理されているフリーブロックの現在の数を示す。
残りのフリーブロックの数が閾値X1以上であるならば(ステップS402のYES)、書き込み制御部21は、SLCバッファブロックを追加する(ステップS403)。これにより、SLCモードで書き込むことができる許容データ量が増加し、書き込みモードとしてSLCモードを使用することが可能となる。
一方、フリーブロックの数が閾値X1よりも少ないならば(ステップS402のNO)、書き込み制御部21は、SLCバッファブロックを追加しない。
なお、ステップS403では、書き込み制御部21は、SLCバッファブロックが追加された後の残りのフリーブロックの数が閾値X1以上となるようにSLCバッファブロックを追加してもよい。
もし残りのフリーブロックの数が少ない場合にSLCモードで書き込み動作が実行されたならば、残りのフリーブロックの数は、ガベージコレクションが開始される閾値まで早期に低下する。ホスト2からのデータの書き込みと並行してガベージコレクションが実行されると、書込み性能が低下してしまう。しかし、残りのフリーブロックの数が多い場合には、SLCモードで書き込み動作を実行しても、残りのフリーブロックの数は、ガベージコレクションが開始される閾値まですぐには低下しない。ゆえに、残りのフリーブロックの数が多い場合にのみ、SLCバッファブロックの追加を許可することが有効である。
なお、ガベージコレクションの実行直後の期間中においては、書き込み制御部21は、ステップS402において、閾値X1よりも大きい閾値X1’を選択し、残りのフリーブロックの数が閾値X1’以上であるか否かを判定してもよい。残りのフリーブロックの数が閾値X1’以上である場合にのみ、SLCバッファブロックの追加が許可される。この制御により、ガベージコレクションによってせっかく増やされたフリーブロックが、SLCモードを使用した書き込み動作によって速い速度で消費されてしまうことを防止することができる。
図13のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加処理のさらに別の手順を示す。
ここでは、SLCバッファブロックを追加することを許可するための必要条件が、アイドル状態が検出され、且つ増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満である場合を想定する。
増やされた許容データ量(現在のSLCバッファのデータ量)を表す値として、SLCブロックプール61に存在するSLCバッファブロックの総数、つまりSLCアクティブブロックプール61A内に存在するSLCバッファブロックの数とSLCフリーブロックプール61B内に存在するSLCバッファブロックの数との合計を使用してもよい。
アイドル状態検出部22によってアイドル状態が検出されると(ステップS501のYES)、コントローラ4は、SLCブロックプール61内に存在するSLCバッファブロックの総数がSLCバッファユニットの最大数未満か否か、つまり増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満か否かを判定する(ステップS502)。このSLCバッファブロックの総数がSLCバッファユニットの最大数未満であるならば(ステップS502のYES)、書き込み制御部21は、SLCバッファブロックを追加する(ステップS503)。
SLCバッファブロックの総数が増えすぎてしまうと、SLCバッファブロックの総数が少ない場合と比べて、SLCモードによる書き込みが多くなり、NAND型フラッシュメモリ5のP/Eサイクル数が増加する割合が高まる。これにより、SSD3が早期に寿命に達してしまう場合がある。ゆえに、SLCバッファユニットの最大数(SLCモードで書き込み可能なデータの最大量に相当)という上限値を設け、SLCモードで書き込むことが可能な許容データ量の増加を制限することが有効である。
図14のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加処理のさらに別の手順を示す。
ここでは、SLCバッファブロックを追加することを許可するための必要条件が、アイドル状態が検出され、且つNAND型フラッシュメモリ5のP/Eサイクル数が閾値以下であることとする場合を想定する。以下では、NAND型フラッシュメモリ5のP/Eサイクル数としてNAND型フラッシュメモリ5の総P/Eサイクル数を使用する場合について説明するが、総P/Eサイクル数の代わりに、NAND型フラッシュメモリ5の最大P/Eサイクル数、NAND型フラッシュメモリ5の最小P/Eサイクル数、またはNAND型フラッシュメモリ5の平均P/Eサイクル数、等を使用してもよい。すなわち、SLCバッファブロックを追加することを許可するための必要条件としては、NAND型フラッシュメモリ5のP/Eサイクル数に限らず、NAND型フラッシュメモリ5の寿命を判断し得る他の任意の指標を使用してもよい。
アイドル状態検出部22によってアイドル状態が検出されると(ステップS601のYES)、コントローラ4は、NAND型フラッシュメモリ5の現在の総P/Eサイクル数が閾値Y1以下であるか否かを判定する(ステップS602)。
現在の総P/Eサイクル数が閾値Y1以下であるならば(ステップS602のYES)、書き込み制御部21は、フリーブロックプール60からP/Eサイクル数が閾値Z1(例えば、Z1<Y1)以下のフリーブロックを選択し、その選択されたブロックをSLCバッファブロックとして追加する(ステップS603)。
SLCモードで書き込むことができる許容データ量を増加させると、総P/Eサイクル数が増加する割合が高まる。このため、総P/Eサイクル数が多い場合に当該許容データ量を増加させると、SSD3が早期に寿命に達してしまう。ゆえに、総P/Eサイクル数が多い場合には、SLCモードで書き込むことが可能な許容データ量を増加することを禁止することが有効である。
また、ステップS603において、P/Eサイクル数が少ないフリーブロックをSLCモードで書き込まれるべきブロックにしている。つまり、ブロック同士でのP/Eサイクル数の偏りを小さくしているため、SSD3の寿命を延ばすことができる。
なお、ステップS602では、NAND型フラッシュメモリ5の現在の総P/Eサイクル数に基づいてSLCバッファブロックを追加するか否かを決定しているが、以下に示す方法を用いてもよい。
(A)NAND型フラッシュメモリ5の現在の最大P/Eサイクル数が閾値Y2以下である場合に、SLCバッファブロックを追加する処理を許可する。
(B)NAND型フラッシュメモリ5の現在の平均P/Eサイクル数が閾値Y3以下である場合に、SLCバッファブロックを増量する処理を許可する。
(C)NAND型フラッシュメモリ5の現在の最小P/Eサイクル数が閾値Y4以下である場合に、SLCバッファブロックを追加する処理を許可する。
図15のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加処理のさらに別の手順を示す。
ここでは、SLCバッファブロックを追加することを許可するための必要条件が、アイドル状態が検出され、且つフリーブロックの数が閾値X1以上であり、且つ増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満である場合を想定する。
アイドル状態検出部22によってアイドル状態が検出されると(ステップS701のYES)、コントローラ4は、残りのフリーブロックの数が閾値X1以上であるか否かを判定する(ステップS702)。残りのフリーブロックの数は、フリーブロックプール60によって管理されているフリーブロックの現在の数を示す。
残りのフリーブロックの数が閾値X1以上であるならば(ステップS702のYES)、コントローラ4は、SLCブロックプール61内に存在するSLCバッファブロックの総数がSLCバッファユニットの最大数未満か否か、つまり増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満か否かを判定する(ステップS703)。このSLCバッファブロックの総数がSLCバッファユニットの最大数未満であるならば(ステップS703のYES)、書き込み制御部21は、SLCバッファブロックを追加する(ステップS704)。
このように、アイドル状態が検出され、且つフリーブロックの数が閾値X1以上であり、且つ増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満であることをSLCバッファブロック追加条件に設定し、SLCバッファブロックの追加を制限してもよい。
図16のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加処理のさらに別の手順を示す。
ここでは、SLCバッファブロックを追加することを許可するための必要条件が、アイドル状態が検出され、且つフリーブロックの数が閾値X1以上であり、且つNAND型フラッシュメモリ5のP/Eサイクル数が閾値以下であることとする場合を想定する。以下では、NAND型フラッシュメモリ5のP/Eサイクル数としてNAND型フラッシュメモリ5の総P/Eサイクル数を使用する場合について説明するが、総P/Eサイクル数の代わりに、NAND型フラッシュメモリ5の最大P/Eサイクル数、NAND型フラッシュメモリ5の最小P/Eサイクル数、またはNAND型フラッシュメモリ5の平均P/Eサイクル数を使用してもよい。
アイドル状態検出部22によってアイドル状態が検出されると(ステップS801のYES)、コントローラ4は、残りのフリーブロックの数が閾値X1以上であるか否かを判定する(ステップS802)。残りのフリーブロックの数は、フリーブロックプール60によって管理されているフリーブロックの現在の数を示す。
残りのフリーブロックの数が閾値X1以上であるならば(ステップS802のYES)、コントローラ4は、NAND型フラッシュメモリ5の現在の総P/Eサイクル数が閾値Y1以下であるか否かを判定する(ステップS803)。なお、ステップS803において、上述した(A)、(B)、(C)のいずれかの方法を用いてもよい。
現在の総P/Eサイクル数が閾値Y1以下であるならば(ステップS803のYES)、書き込み制御部21は、フリーブロックプール60からP/Eサイクル数が閾値Z1以下のフリーブロックを選択し、その選択されたブロックをSLCバッファブロックとして追加する(ステップS804)。
このように、アイドル状態が検出され、且つフリーブロックの数が閾値X1以上であり、且つNAND型フラッシュメモリ5のP/Eサイクル数が閾値以下であることをSLCバッファブロック追加条件に設定し、SLCバッファブロックの追加を制限してもよい。
図17のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加処理のさらに別の手順を示す。
ここでは、SLCバッファブロックを追加することを許可するための必要条件が、アイドル状態が検出され、且つ増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満であり、且つNAND型フラッシュメモリ5のP/Eサイクル数が閾値以下であることとする場合を想定する。以下では、NAND型フラッシュメモリ5のP/Eサイクル数としてNAND型フラッシュメモリ5の総P/Eサイクル数を使用する場合について説明するが、総P/Eサイクル数の代わりに、NAND型フラッシュメモリ5の最大P/Eサイクル数、NAND型フラッシュメモリ5の最小P/Eサイクル数、またはNAND型フラッシュメモリ5の平均P/Eサイクル数を使用してもよい。
アイドル状態検出部22によってアイドル状態が検出されると(ステップS901のYES)、コントローラ4は、SLCブロックプール61A内に存在するSLCバッファブロックの総数がSLCバッファユニットの最大数未満か否か、つまり増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満か否かを判定する(ステップS902)。
このSLCバッファブロックの総数がSLCバッファユニットの最大数未満であるならば(ステップS902のYES)、コントローラ4は、NAND型フラッシュメモリ5の現在の総P/Eサイクル数が閾値Y1以下であるか否かを判定する(ステップS903)。なお、ステップS903において、上述した(A)、(B)、(C)のいずれかの方法を用いてもよい。
現在の総P/Eサイクル数が閾値Y1以下であるならば(ステップS903のYES)、書き込み制御部21は、フリーブロックプール60からP/Eサイクル数が閾値Z1以下のフリーブロックを選択し、その選択されたブロックをSLCバッファブロックとして追加する(ステップS904)。
このように、アイドル状態が検出され、且つ増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満であり、且つNAND型フラッシュメモリ5のP/Eサイクル数が閾値以下であることをSLCバッファブロック追加条件に設定し、SLCバッファブロックの追加を制限してもよい。
図18のフローチャートは、コントローラ4によって実行されるSLCバッファブロック追加処理のさらに別の手順を示す。
ここでは、SLCバッファブロックを追加することを許可するための必要条件が、アイドル状態が検出され、且つフリーブロックの数が閾値X1以上であり、且つ増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満であり、且つNAND型フラッシュメモリ5のP/Eサイクル数が閾値以下であることとする場合を想定する。以下では、NAND型フラッシュメモリ5のP/Eサイクル数としてNAND型フラッシュメモリ5の総P/Eサイクル数を使用する場合について説明するが、総P/Eサイクル数の代わりに、NAND型フラッシュメモリ5の最大P/Eサイクル数、NAND型フラッシュメモリ5の最小P/Eサイクル数、またはNAND型フラッシュメモリ5の平均P/Eサイクル数を使用してもよい。
アイドル状態検出部22によってアイドル状態が検出されると(ステップS1001のYES)、コントローラ4は、残りのフリーブロックの数が閾値X1以上であるか否かを判定する(ステップS1002)。残りのフリーブロックの数は、フリーブロックプール60によって管理されているフリーブロックの現在の数を示す。
残りのフリーブロックの数が閾値X1以上であるならば(ステップS1002のYES)、コントローラ4は、SLCブロックプール61内に存在するSLCバッファブロックの総数がSLCバッファユニットの最大数未満か否か、つまり増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満か否かを判定する(ステップS1003)。このSLCバッファブロックの総数がSLCバッファユニットの最大数未満であるならば(ステップS1003のYES)、コントローラ4は、NAND型フラッシュメモリ5の現在の総P/Eサイクル数が閾値Y1以下であるか否かを判定する(ステップS1004)。なお、ステップS1004において、上述した(A)、(B)、(C)のいずれかの方法を用いてもよい。
現在の総P/Eサイクル数が閾値Y1以下であるならば(ステップS1005のYES)、書き込み制御部21は、フリーブロックプール60からP/Eサイクル数が閾値Z1以下のフリーブロックを選択し、その選択されたブロックをSLCバッファブロックとして追加する(ステップS1005)。
このように、アイドル状態が検出され、且つフリーブロックの数が閾値X1以上であり、且つ増やされた許容データ量(現在のSLCバッファのデータ量)がSLCバッファユニットの最大数未満であり、且つNAND型フラッシュメモリ5のP/Eサイクル数が閾値以下であることをSLCバッファブロック追加条件に設定し、SLCバッファブロックの追加を制限してもよい。
図19のフローチャートは、コントローラ4によって実行されるSLCバッファブロック解放処理の手順を示す。
コントローラ4は、SLCバッファブロック解放条件を満たすSLCバッファブロックを解放する処理を実行する。SLCバッファブロック解放条件は、有効データを含むSLCバッファブロックを有効データを含まないフリーブロックにすることを許可するための必要条件である。SLCバッファブロック解放条件の例としては、以下の条件が挙げられる。
(1)SLCバッファブロック内の有効データの量が閾値以下
(2)SLCバッファブロック内のデータのリード回数が閾値以下
(3)SLCバッファブロックのP/Eサイクル数が閾値以下
(1)の条件は、SLCバッファブロックを解放するためにコピーすることが必要なデータの量が少ないSLCバッファブロックを解放対象ブロック(ガベージコレクション対象ブロック)として選択するために使用される。
(2)の条件は、ホスト2によってリードされる頻度が低いデータを格納しているSLCバッファブロックを解放対象ブロック(ガベージコレクション対象ブロック)として選択するために使用される。リードされる頻度が低いデータを格納しているSLCバッファブロックを解放してフリーブロックにすることにより、このSLCバッファブロックを、ホスト2によってリードされる頻度が高いデータのような新たなデータの格納に利用することができる。
(3)の条件は、低い更新頻度を有するデータ(コールドデータ)を格納しているSLCバッファブロックを解放対象ブロック(ガベージコレクション対象ブロック)として選択するために使用される。コールドデータを格納しているSLCバッファブロックを解放してフリーブロックにすることにより、このSLCバッファブロックを、新たな書き込み先ブロックとして積極的に利用することが可能となる。この結果、全てのブロックのP/Eサイクル数を均一化するためのウェアレベリングを行うことができる。
なお、各SLCバッファブロックのP/Eサイクル数と比較される閾値は、全ブロックの平均P/Eサイクル数であってもよいし、全ブロックのP/Eサイクル数の最小値(つまりNAND型フラッシュメモリ5の現在の最小プログラム/イレーズサイクル数)であってもよい。後者の場合には、最小プログラム/イレーズサイクル数を有するSLCバッファブロックが解放対象として選択される。
まず、コントローラ4は、(1)の条件を満たすSLCバッファブロックが存在するかいなかを判定するために、SLCアクティブブロックプール61A内の各SLCバッファブロックの有効データ量と閾値A1とを比較する(ステップS1101)。
有効データ量が閾値A1以下のSLCバッファブロックが存在するならば(ステップS1102のYES)、コントローラ4は、このSLCバッファブロックを解放対象ブロックとして選択し、この選択されたSLCバッファブロックを解放する(ステップS1103)。ステップS1103では、選択されたSLCバッファブロック内の有効データは、MLCブロックに移動されてもよいし、他のSLCバッファブロックに移動されてもよい。選択されたSLCバッファブロックの有効データをMLCブロックに移動する処理では、SLCバッファブロック内の有効データをMLCモードでフリーブロックに書き込む処理が実行され、これによって有効データがMLCブロックに移動される。選択されたSLCバッファブロックの有効データを他のSLCバッファブロックに移動する処理では、選択されたSLCバッファブロック内の有効データをSLCモードでコンプリートフリーブロック(またはSLCフリーブロック)に書き込む処理が実行され、これによって有効データが他のSLCバッファブロックに移動される。
次に、コントローラ4は、SLCアクティブブロックプール61A内の各SLCバッファブロックのリード回数と閾値B1とを比較する(ステップS1104)。
リード回数が閾値B1以下のSLCバッファブロックが存在するならば(ステップS1105のYES)、コントローラ4は、リード回数が閾値B1以下のSLCバッファブロックを解放対象ブロックとして選択し、この選択されたSLCバッファブロックを解放する(ステップS1106)。ステップS1106では、選択されたSLCバッファブロック内の有効データは、MLCブロックに移動されてもよいし、他のSLCバッファブロックに移動されてもよい。
次に、コントローラ4は、SLCアクティブブロックプール61A内の各SLCバッファブロックのP/Eサイクル数と閾値C1とを比較する(ステップS1107)。
P/Eサイクル数が閾値C1以下のSLCバッファブロックが存在するならば(ステップS1108のYES)、コントローラ4は、P/Eサイクル数が閾値C1以下のSLCバッファブロックを解放対象ブロックとして選択し、この選択されたSLCバッファブロックを解放する(ステップS1109)。ここで、閾値C1としてNAND型フラッシュメモリ5の現在の平均P/Eサイクル数、またはNAND型フラッシュメモリ5の現在の最小P/Eサイクル数を用いてもよい。閾値C1として最小P/Eサイクル数が使用された場合には、SLCアクティブブロックプール61Aから、最小P/Eサイクル数を有するSLCバッファブロックが解放対象ブロックとして選択される。
また、ステップS1109では、選択されたSLCバッファブロック内の有効データは、MLCブロックに移動されてもよいし、他のSLCバッファブロックに移動されてもよい。
図20のフローチャートは、コントローラ4によって実行されるSLCバッファブロック解放処理の別の手順を示す。
コントローラ4は、SLCアクティブブロックプール61A内の各SLCバッファブロックの有効データ量と閾値A1とを比較する(ステップS1201)。
有効データ量が閾値A1以下のSLCバッファブロックが存在するならば(ステップS1202のYES)、コントローラ4は、その有効データ量が閾値A1以下のSLCバッファブロックを解放対象のSLCバッファブロックとして選択し、この選択したSLCバッファブロックのリード回数が閾値B1以下であるか否かを判定する(ステップS1203)。
選択したSLCバッファブロックのリード回数が閾値B1以下であるならば(ステップS1203のYES)、コントローラ4は、選択したSLCバッファブロックの有効データをMLCブロックに移動させる(ステップS1204)。
一方、選択されたSLCバッファブロックのリード回数が閾値B1を超えているならば(ステップS1203のNO)、コントローラ4は、選択されたSLCバッファブロックの有効データを他のSLCバッファブロックに移動させる(ステップS1205)。
選択されたSLCバッファブロックのリード回数が多い場合には、この選択されたSLCバッファブロックに格納されているデータの読み出し頻度は多いため、このデータをMLCブロックに移動してしまうと、このデータの読み出し性能が低下してしまう。他方、選択されたSLCバッファブロックのリード回数が少ない場合には、この選択されたSLCバッファブロックに格納されているデータの読み出し頻度は少ないため、このデータをMLCブロックに移動したとしても、このデータの読み出し性能の低下による影響はほとんどない。
図21のフローチャートは、コントローラ4によって実行されるSLCバッファブロック解放処理のさらに別の手順を示す。
コントローラ4は、SLCアクティブブロックプール61A内の各SLCバッファブロックのP/Eサイクル数と閾値C1とを比較する(ステップS1301)。
P/Eサイクル数が閾値C1以下のSLCバッファブロックが存在するならば(ステップS1302のYES)、コントローラ4は、そのP/Eサイクル数が閾値C1以下のSLCバッファブロックを解放対象のSLCバッファブロックとして選択し、選択されたSLCバッファブロックのリード回数が閾値B1以下であるか否かを判定する(ステップS1303)。
選択されたSLCバッファブロックのリード回数が閾値B1以下であるならば(ステップS1303のYES)、コントローラ4は、選択されたSLCバッファブロックの有効データをMLCブロックに移動させる(ステップS1204)。
選択されたSLCバッファブロックのリード回数が閾値B1を超えているならば(ステップS1303のNO)、コントローラ4は、選択されたSLCバッファブロックの有効データを他のSLCバッファブロックに移動させる(ステップS1305)。
なお、閾値C1の値としては、NAND型フラッシュメモリ5の現在の平均P/Eサイクル数を使用してもよい。この場合、平均P/Eサイクル数以下のP/Eサイクル数を有するSLCバッファブロックが解放対象のSLCバッファブロックとして選択される。あるいは、閾値C1の値としては、NAND型フラッシュメモリ5の現在の最小P/Eサイクル数を使用してもよい。この場合、SLCアクティブブロックプール61Aから、最小P/Eサイクル数を有するSLCバッファブロックが解放対象のSLCバッファブロックとして選択される。
図22のタイミングチャートは、アイドル状態が検出されない場合にSSD3のコントローラ4によって実行される書き込み動作を示す。
ここでは、説明の簡単化のために、上述の許容データ量が一つのSLCバッファブロック分のデータ量である場合を想定する。
(1)最初に、書き込み制御部21は、SLCモードを書き込みモードとして選択する。そして、書き込み制御部21は、ホスト2から受信されるデータをSLCバッファブロックにSLCモードで書き込む。このとき、MLCモードによる書き込みよりも書き込み速度が速い(書き込み性能が高い)。
(2)SLCバッファユニットがデータで満たされると、つまり許容データ量分のデータがSLCモードで書き込まれると、書き込み制御部21は、書き込みモードをMLCモードに変更する。そして、書き込み制御部21は、ホスト2から受信されるデータをMLCブロックにMLCモードで書き込む。このとき、SLCモードによる書き込み時よりも書き込み速度が遅くなる(書き込み性能が低くなる)。その反面、SLCモードによる書き込み時よりも総P/Eサイクル数が増加する割合が低くなるため、SLCモードで書き込みを行っている場合に比べ、SSD3の寿命の短縮を防ぐことができる。
このまま、データの書き込みが行われていくと、残りのフリーブロックの数がある閾値まで低下する。そうなると、ガベージコレクション動作制御部24は、フリーブロックの数を増やすために、ガベージコレクションを実行する。ガベージコレクションが実行されると、データのコピーが行われるため、ホスト2からのデータの書き込み性能が、ガベージコレクションを実行していないときに比べて低下する。
図23のタイミングチャートは、コントローラ4によってアイドル状態を挟んで実行される書き込み動作を示す。
ここでは、説明の簡単化のために、上述の許容データ量が一つのSLCバッファブロック分のデータ量である場合を想定する。
(1)最初に、書き込み制御部21は、SLCモードを書き込みモードとして選択する。そして、書き込み制御部21は、ホスト2から受信されるデータをSLCバッファブロックにSLCモードで書き込む。このとき、MLCモードによる書き込みよりも書き込み速度が速い(書き込み性能が高い)。
(2)SLCバッファユニットがデータで満たされると、つまり許容データ量分のデータがSLCモードで書き込まれると、書き込み制御部21は、書き込みモードをMLCモードに変更する。そして、書き込み制御部21は、ホスト2から受信されるデータをMLCブロックにMLCモードで書き込む。このとき、SLCモードによる書き込み時よりも書き込み速度が遅くなる(書き込み性能が低くなる)。その反面、SLCモードによる書き込み時よりもP/Eサイクル数の増加する割合が低くなるため、SLCモードで書き込みを行っている場合に比べ、SSD3の寿命の短縮を防ぐことができる。
(3)アイドル状態検出部22によって1回目のアイドル状態が検出された場合、書き込み制御部21は、許容データ量を一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)だけ追加し、書き込みモードをSLCモードに戻す。
(4)そして、書き込み制御部21は、1回目のアイドル状態の検出の後にホスト2から受信されるデータをSLCバッファブロックにSLCモードで書き込む。
(5)SLCバッファブロックがデータで満たされると、つまり、1回目のアイドル状態の検出の後にSLCモードで書き込まれたデータ量が一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)に達すると、書き込み制御部21は、書き込みモードを再びMLCモードに変更する。そして、書き込み制御部21は、ホスト2から受信されるデータをMLCブロックにMLCモードで書き込む。
(6)アイドル状態検出部22によって2回目のアイドル状態が検出された場合、書き込み制御部21は、許容データ量を一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)だけ追加し、書き込みモードをSLCモードに戻す。
(7)そして、書き込み制御部21は、2回目のアイドル状態の検出の後にホスト2から受信されるデータをSLCバッファブロックにSLCモードで書き込む。
(8)2回目のアイドル状態検出時に追加されたSLCバッファブロックがデータで満たされる前に、アイドル状態検出部22によってアイドル状態が再び検出された場合(3回目)、書き込み制御部21は、許容データ量を一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)だけ追加し、書き込みモードをSLCモードに維持する。
(9)そして、書き込み制御部21は、3回目のアイドル状態の検出の後にホスト2から受信されるデータをSLCバッファブロックにSLCモードで書き込む。
(10)3回目のアイドル状態検出時に追加されたSLCバッファブロックがデータで満たされる前に、アイドル状態検出部22によってアイドル状態が再び検出された場合(4回目)、書き込み制御部21は、許容データ量を一つのSLCバッファユニット分のデータ量(ここでは、一つのSLCバッファブロック分のデータ量)だけ追加し、書き込みモードをSLCモードに維持する。
(11)そして、書き込み制御部21は、4回目のアイドル状態の検出の後にホスト2から受信されるデータをSLCバッファブロックにSLCモードで書き込む。
(12)4回目のアイドル状態検出時に追加されたSLCバッファブロックがデータで満たされると、書き込み制御部21は、書き込みモードをMLCモードに変更する。そして、書き込み制御部21は、ホスト2から受信されるデータをMLCブロックにMLCモードで書き込む。このとき、SLCモードによる書き込み時よりも書き込み速度が遅くなる(書き込み性能が低くなる)。その反面、SLCモードによる書き込み時よりもP/Eサイクル数が増加する割合が低くなるため、SLCモードで書き込みを行っている場合に比べ、SSD3の寿命の短縮を防ぐことができる。
このまま、データの書き込みが行われていくと、残りのフリーブロックの数がある閾値まで低下する。そうなると、ガベージコレクション動作制御部24は、フリーブロックの数を増やすために、ガベージコレクションを実行する。ガベージコレクションが実行されると、データのコピーが行われるため、ホスト2からのデータの書き込み性能が、ガベージコレクションを実行していないときに比べて低下する。
このように、アイドル状態が検出される度に、許容データ量が一つのSLCバッファユニット分のデータ量だけ追加されるので、アイドル状態の直後の書き込み動作をSLCモードで実行することができる。この結果、アイドル状態が検出される度に、その検出されたアイドル状態の直後の書き込み性能を向上させることができる。また、アイドル状態の直後にSLCモードで書き込み可能なデータ量は、追加されたデータ量までに制限される。したがって、データ書き込みのために使用可能なSLCバッファブロックの数を追加されたデータ量に対応する個数までに制限することができ、これによって総ブログラム/イレーズサイクル数の著しい増加を防止することができる。
図24は、ホスト2として機能する情報処理装置(コンピューティングデバイス)のハードウェア構成例を示す。
この情報処理装置は、サーバのようなコンピューティングデバイスとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。複数のSSD3が複数のコネクタ107Aにそれぞれ接続されてもよい。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。
図25は、複数のSSD3とホスト2とを含む情報処理装置(サーバ)の構成例を示す。
この情報処理装置(サーバ)は、ラックに収容可能な薄い箱形の筐体201を備える。多数のSSD3は筐体201内に配置されてもよい。この場合、各SSD3は筐体201の前面201Aに設けられたスロットに取り外し可能に挿入されてもよい。
システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。
以上説明したように、本実施形態によれば、書き込みモードとしてSLCモードが選択され、NAND型フラッシュメモリ5に書き込まれたデータ量が最小SLCバッファユニット分のデータ量(許容データ量)に達するまで、ホスト2から受信されるライトコマンドに応じてデータがSLCモードでNAND型フラッシュメモリ5に書き込まれる。
そして、NAND型フラッシュメモリ5に書き込まれたデータ量が許容データ量に達した場合、書き込みモードがMLCモードに変更され、ホスト2から受信されるライトコマンドに応じてデータがMLCモードでNAND型フラッシュメモリ5に書き込まれる。また、ホスト2からコマンドがインターバル時間以上の期間中受信されないアイドル状態が検出されると、書き込みモードをSLCモードに戻すために許容データ量がSLCバッファユニット分のデータ量(第1データ量)だけ増加される。
そして、アイドル状態の検出の後にNAND型フラッシュメモリ5に書き込まれたデータ量が第1データ量に達するまで、アイドル状態の検出後にホスト2から受信されるライトコマンドに応じてデータがSLCモードでNAND型フラッシュメモリ5に書き込まれる。
これにより、アイドル状態の検出の直後の書き込み性能を向上させることができる。また、アイドル状態の直後にSLCモードで書き込み可能なデータ量は、追加されたデータ量(第1データ量)までに制限される。したがって、たとえ書き込みデータの量が増え始めたとしても、SLCモードで書き込まれるデータ量を追加された第1データ量までに制限することができるので、NAND型フラッシュメモリ5の総ブログラム/イレーズサイクル数の著しい増加を防止することができる。よって、SSD3の寿命と性能とのバランスを保つことができる。
さらに、本実施形態では、アイドル状態の検出の度に、許容データ量の増加を許可する条件が満たされているか否かが判定される。許容データ量の増加を許可する条件としては、増やされた許容データ量がSLCモードで書き込み可能なデータの最大量未満であるという条件、NAND型フラッシュメモリ5の現在のP/Eサイクル数(総P/Eサイクル数、最大総P/Eサイクル数、最小P/Eサイクル数、または平均P/Eサイクル数)が対応する閾値以下であるという条件、等を使用することができる。あるいは、これら条件を適宜組み合わせることも可能である。許容データ量の増加を許可する条件が満たされている場合、書き込みモードをSLCモードに戻すために許容データ量が第1データ量だけ増加され、ホスト2から受信される第1データ量分のデータがSLCモードでNAND型フラッシュメモリ5に書き込まれる。一方、許容データ量の増加を許可する条件が満たされていない場合、書き込みモードはMLCモードに維持される。
これにより、SLCモードとMLCモードの比率を適正化することが可能となり、SLCモードで書き込むことが可能なデータ量(許容データ量)が増加しすぎることによるSSD3の寿命の短縮を防ぐことができる。
なお、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、21…書き込み制御部、22…アイドル状態検出部、23…SLCカウント部、24…ガベージコレクション動作制御部。

Claims (14)

  1. ホストに接続可能なメモリシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、メモリセル当たりにnビットデータが書き込まれる第1モードまたはメモリセル当たりにmビットデータが書き込まれる第2モードを書き込みモードとして選択し、データを前記不揮発性メモリに書き込むように構成されたコントローラとを具備し、前記nは1以上の整数であり、前記mは前記nよりも大きい整数であり、
    前記コントローラは、
    前記書き込みモードとして前記第1モードを選択し、前記不揮発性メモリに書き込まれたデータ量が前記第1モードで書き込み可能なデータの量を示す許容データ量に達するまで、前記ホストから受信されるライトコマンドに応じてデータを前記第1モードで前記不揮発性メモリに書き込み、
    前記不揮発性メモリに書き込まれた前記データ量が前記許容データ量に達した場合、前記書き込みモードを前記第2モードに変更し、前記ホストから受信されるライトコマンドに応じてデータを前記第2モードで前記不揮発性メモリに書き込み、
    前記ホストからコマンドが閾時間以上の期間中受信されないアイドル状態を検出し、
    前記アイドル状態の検出に応答して、前記許容データ量を第1データ量だけ増やし、
    前記アイドル状態の検出の後に前記不揮発性メモリに書き込まれたデータ量が前記第1データ量に達するまで、前記アイドル状態の検出の後に前記ホストから受信されるライトコマンドに応じてデータを前記第1モードで前記不揮発性メモリに書き込むように構成されている、メモリシステム。
  2. 前記コントローラは、前記不揮発性メモリ内のフリーブロックの数が第1閾値以上である場合、前記許容データ量を前記第1データ量だけ増やすように構成されている請求項1記載のメモリシステム。
  3. 前記コントローラは、増やされた前記許容データ量が、前記第1モードで書き込み可能なデータの最大量に達していない場合、前記アイドル状態の検出の度に前記許容データ量を第1データ量だけ増やすように構成されている請求項1記載のメモリシステム。
  4. 前記コントローラは、前記不揮発性メモリの全ブロックのプログラム/イレーズサイクル数の合計を示す現在の総プログラム/イレーズサイクル数が第2閾値以下である場合、前記許容データ量を前記第1データ量だけ増やすように構成されている請求項1記載のメモリシステム。
  5. 前記コントローラは、前記現在の総プログラム/イレーズサイクル数が前記第2閾値以下である場合、プログラム/イレーズサイクル数が第3閾値以下のフリーブロックを前記第1モードでデータが書き込まれるべき書き込み先ブロックとして割り当てるように構成されている請求項4記載のメモリシステム。
  6. 前記コントローラは、前記不揮発性メモリの全ブロックそれぞれのプログラム/イレーズサイクル数のうちの最大値が第4閾値以下である場合、前記許容データ量を前記第1データ量だけ増やすように構成されている請求項1記載のメモリシステム。
  7. 前記コントローラは、前記不揮発性メモリの全ブロックそれぞれのプログラム/イレーズサイクルの平均が第5閾値以下である場合、前記許容データ量を前記第1データ量だけ増やすように構成されている請求項1記載のメモリシステム。
  8. 前記コントローラは、前記不揮発性メモリの全ブロックそれぞれのプログラム/イレーズサイクルのうちの最小値が第6閾値以下である場合、前記許容データ量を前記第1データ量だけ増やすように構成されている請求項1記載のメモリシステム。
  9. 前記コントローラは、前記ホストからライトコマンドが前記閾時間以上の期間中受信されない第1状態を前記アイドル状態として検出するように構成されている請求項1記載のメモリシステム。
  10. 前記コントローラは、前記ホストからI/Oコマンドが前記閾時間以上の期間中受信されない第2状態を前記アイドル状態として検出するように構成されている請求項1記載のメモリシステム。
  11. 前記コントローラは、前記ホストからI/Oコマンドおよび制御コマンドが前記閾時間以上の期間中受信されない第3状態を前記アイドル状態として検出するように構成されている請求項1記載のメモリシステム。
  12. 前記コントローラは、ローパワーステートへの遷移を要求するパワー管理コマンドを前記ホストから受信したことを前記アイドル状態として検出するように構成されている請求項1記載のメモリシステム。
  13. ホストに接続可能なメモリシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、メモリセル当たりにnビットデータが書き込まれる第1モードまたはメモリセル当たりにmビットデータが書き込まれる第2モードを書き込みモードとして選択し、選択された書き込みモードで、データを前記不揮発性メモリに書き込むように構成されたコントローラとを具備し、前記nは1以上の整数であり、前記mは前記nよりも大きい整数であり、
    前記コントローラは、
    前記書き込みモードとして前記第1モードを選択し、前記不揮発性メモリに書き込まれたデータ量が前記第1モードで書き込み可能なデータの量を示す許容データ量に達するまで、前記ホストから受信されるライトコマンドに応じてデータを前記第1モードで前記不揮発性メモリに書き込み、
    前記不揮発性メモリに書き込まれた前記データ量が前記許容データ量に達した場合、前記書き込みモードを前記第2モードに変更し、前記ホストから受信されるライトコマンドに応じてデータを前記第2モードで前記不揮発性メモリに書き込み、
    前記ホストからコマンドが閾時間以上の期間中受信されないアイドル状態を検出し、
    前記アイドル状態の検出の度に、前記許容データ量を増やすことを許可するための条件が満たされているか否かを判定し、
    前記条件が満たされている場合、前記許容データ量を第1データ量だけ増やし、検出された前記アイドル状態の後に前記ホストから受信されるライトコマンドに応じて前記第1データ量分のデータを前記第1モードで前記不揮発性メモリに書き込み、
    前記条件が満たされていない場合、前記書き込みモードを前記第2モードに維持するように構成され、
    前記条件は、増やされた前記許容データ量が前記第1モードで書き込み可能なデータの最大量未満であるという第1条件、前記不揮発性メモリの全ブロックのプログラム/イレーズサイクル数の合計を示す総プログラム/イレーズサイクル数、前記全ブロックのプログラム/イレーズサイクル数のうちの最大値、前記全ブロックのプログラム/イレーズサイクル数のうちの最小値、または前記全ブロックのプログラム/イレーズサイクル数の平均が、対応する閾値以下であるという第2条件、または前記増やされた後の前記許容データ量が前記最大量未満であり且つ前記現在の総プログラム/イレーズサイクル数、前記最大値、前記最小値、または前記平均が前記対応する閾値以下であるという第3条件のいずれかを含む、メモリシステム。
  14. メモリセル当たりにnビットデータが書き込まれる第1モードまたはメモリセル当たりにmビットデータが書き込まれる第2モードを書き込みモードとして選択し、選択された書き込みモードで、データを不揮発性メモリに書き込む制御方法であって、前記nは1以上の整数であり、前記mは前記nよりも大きい整数であり、
    前記書き込みモードとして前記第1モードを選択し、前記不揮発性メモリに書き込まれたデータ量が前記第1モードで書き込み可能なデータの量を示す許容データ量に達するまで、前記ホストから受信されるデータを前記第1モードで前記不揮発性メモリに書き込み、
    前記不揮発性メモリに書き込まれた前記データ量が前記許容データ量に達した場合、前記書き込みモードを前記第2モードに変更し、前記ホストから受信されるライトコマンドに応じてデータを前記第2モードで前記不揮発性メモリに書き込み、
    前記ホストからコマンドが閾時間以上の期間中受信されないアイドル状態を検出し、
    前記アイドル状態の検出に応答して、前記許容データ量を第1データ量だけ増やし、
    前記アイドル状態の検出の後に前記不揮発性メモリに書き込まれたデータ量が前記第1データ量に達するまで、前記アイドル状態の検出の後に前記ホストから受信されるライトコマンドに応じてデータを前記第1モードで前記不揮発性メモリに書き込む制御方法。
JP2017011590A 2017-01-25 2017-01-25 メモリシステムおよび制御方法 Pending JP2018120439A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017011590A JP2018120439A (ja) 2017-01-25 2017-01-25 メモリシステムおよび制御方法
US15/876,923 US10614888B2 (en) 2017-01-25 2018-01-22 Memory system that selectively writes in single-level cell mode or multi-level cell mode to reduce program/erase cycles
US16/788,586 US11355197B2 (en) 2017-01-25 2020-02-12 Memory system with nonvolatile cache and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017011590A JP2018120439A (ja) 2017-01-25 2017-01-25 メモリシステムおよび制御方法

Publications (1)

Publication Number Publication Date
JP2018120439A true JP2018120439A (ja) 2018-08-02

Family

ID=62907099

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017011590A Pending JP2018120439A (ja) 2017-01-25 2017-01-25 メモリシステムおよび制御方法

Country Status (2)

Country Link
US (2) US10614888B2 (ja)
JP (1) JP2018120439A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021114039A (ja) * 2020-01-16 2021-08-05 キオクシア株式会社 メモリシステム
US11573717B2 (en) 2020-06-25 2023-02-07 Kioxia Corporation Storage device having a controller configured to select modes as write modes based on received instructions, storage system, and control method
US20230325109A1 (en) * 2022-03-24 2023-10-12 Kioxia Corporation Memory system and method of operating memory system

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120439A (ja) 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7030463B2 (ja) * 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
US10372342B2 (en) * 2017-10-02 2019-08-06 Western Digital Technologies, Inc. Multi-level cell solid state device and method for transferring data between a host and the multi-level cell solid state device
TWI700635B (zh) * 2018-04-26 2020-08-01 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US11209998B2 (en) * 2018-06-11 2021-12-28 Western Digital Technologies, Inc. Adjustment of storage device parameters based on workload characteristics
KR20200015247A (ko) * 2018-08-03 2020-02-12 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
TW202018513A (zh) 2018-11-07 2020-05-16 威剛科技股份有限公司 固態硬碟及其資料存取的方法
JP7095568B2 (ja) * 2018-11-21 2022-07-05 Tdk株式会社 メモリコントローラ及びこれを備えるフラッシュメモリシステム
KR20200078046A (ko) * 2018-12-21 2020-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN111367460B (zh) * 2018-12-25 2023-05-09 兆易创新科技集团股份有限公司 一种***数据处理的方法以及装置
JP6767532B2 (ja) * 2019-03-11 2020-10-14 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
TWI698749B (zh) * 2019-03-13 2020-07-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
KR20200132050A (ko) * 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 컨트롤러의 동작 방법
CN111949202A (zh) * 2019-05-17 2020-11-17 北京兆易创新科技股份有限公司 一种存储器及其控制方法和控制装置
US11164634B2 (en) * 2019-06-24 2021-11-02 Western Digital Technologies, Inc. Non-volatile storage system with fast SLC operation
US11182089B2 (en) * 2019-07-01 2021-11-23 International Business Machines.Corporation Adapting memory block pool sizes using hybrid controllers
US11237732B2 (en) * 2019-08-06 2022-02-01 Intel Corporation Method and apparatus to improve write bandwidth of a block-based multi-level cell nonvolatile memory
US11119659B2 (en) * 2019-08-12 2021-09-14 Micron Technology, Inc. Write buffer implementation for multiple memory array memory spaces
KR20210050635A (ko) * 2019-10-28 2021-05-10 삼성전자주식회사 메모리 장치, 및 이를 포함하는 컴퓨터 시스템
US11237955B2 (en) 2019-10-28 2022-02-01 Samsung Electronics Co., Ltd. Memory device, method of operating memory device, and computer system including memory device
US11157379B2 (en) * 2019-10-30 2021-10-26 International Business Machines Corporation Managing blocks of memory based on block health using hybrid controllers
TW202123653A (zh) * 2019-12-11 2021-06-16 慧榮科技股份有限公司 分層異構儲存之資料中心
US11188459B2 (en) * 2019-12-23 2021-11-30 Micron Technology, Inc. Data block switching at a memory sub-system
KR20210127026A (ko) * 2020-04-13 2021-10-21 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP2021174566A (ja) * 2020-04-27 2021-11-01 キオクシア株式会社 半導体記憶装置
CN111679945A (zh) * 2020-06-12 2020-09-18 地平线(上海)人工智能技术有限公司 处理器的检测方法、装置及计算机可读存储介质
US11610641B2 (en) * 2020-07-09 2023-03-21 SK Hynix Inc. Wafer-yields and write-QoS in flash-based solid state drives
US11709617B2 (en) * 2020-08-19 2023-07-25 Micron Technology, Inc. Multi-stage memory device performance notification
CN112988068B (zh) * 2021-03-10 2023-03-10 深圳宏芯宇电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制器
JP2022143231A (ja) * 2021-03-17 2022-10-03 キオクシア株式会社 ストレージデバイス、ストレージシステム、及び制御方法
JP2022146531A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム
US20220374149A1 (en) * 2021-05-21 2022-11-24 Samsung Electronics Co., Ltd. Low latency multiple storage device system
CN116107491A (zh) * 2021-11-10 2023-05-12 三星电子株式会社 存储器控制器、存储装置和存储装置的操作方法
TWI793932B (zh) * 2021-12-21 2023-02-21 建興儲存科技股份有限公司 固態儲存裝置及其相關的寫入控制方法
US11853201B2 (en) * 2022-05-25 2023-12-26 Micron Technology, Inc. Selective single-level memory cell operation
US11977739B2 (en) 2022-09-01 2024-05-07 Western Digital Technologies, Inc. Handling write data burst for improved performance and resource usage

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI397912B (zh) * 2008-02-13 2013-06-01 Genesys Logic Inc 調整存取效能的快閃記憶體儲存裝置
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
TWI436369B (zh) * 2009-11-13 2014-05-01 Silicon Motion Inc 記憶裝置之使用壽命量測方法及系統內編程碼置換方法、及其資料儲存系統
US8621141B2 (en) * 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
CN103858116B (zh) * 2011-08-09 2015-09-02 Lsi公司 I/o设备及计算主机互操作
US8719660B2 (en) * 2011-12-20 2014-05-06 Sandisk Technologies Inc. Apparatus and methods for indicating the health of removable storage devices
US8990458B2 (en) 2013-02-28 2015-03-24 Kabushiki Kaisha Toshiba Controller, semiconductor storage device and method of controlling data writing
US10008250B2 (en) * 2015-03-27 2018-06-26 Intel Corporation Single level cell write buffering for multiple level cell non-volatile memory
KR102333220B1 (ko) * 2015-09-24 2021-12-01 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법
TWI591635B (zh) * 2016-02-05 2017-07-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
TWI611410B (zh) * 2016-05-13 2018-01-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
JP2018120439A (ja) * 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
US10223259B1 (en) * 2017-08-31 2019-03-05 Micron Technology, Inc. Memory device with dynamic storage mode control

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021114039A (ja) * 2020-01-16 2021-08-05 キオクシア株式会社 メモリシステム
JP7346311B2 (ja) 2020-01-16 2023-09-19 キオクシア株式会社 メモリシステム
US11573717B2 (en) 2020-06-25 2023-02-07 Kioxia Corporation Storage device having a controller configured to select modes as write modes based on received instructions, storage system, and control method
JP7490469B2 (ja) 2020-06-25 2024-05-27 キオクシア株式会社 ストレージデバイス、ストレージシステム及び制御方法
US20230325109A1 (en) * 2022-03-24 2023-10-12 Kioxia Corporation Memory system and method of operating memory system

Also Published As

Publication number Publication date
US20200194075A1 (en) 2020-06-18
US10614888B2 (en) 2020-04-07
US20180211708A1 (en) 2018-07-26
US11355197B2 (en) 2022-06-07

Similar Documents

Publication Publication Date Title
US11355197B2 (en) Memory system with nonvolatile cache and control method thereof
US11474702B2 (en) Storage device that writes data from a host during garbage collection
US10592117B2 (en) Memory system and method for controlling nonvolatile memory
TWI765289B (zh) 儲存系統
US20210248065A1 (en) Memory system and method for controlling nonvolatile memory
EP3121730B1 (en) Memory system for controlling nonvolatile memory
JP6414852B2 (ja) メモリシステムおよび制御方法
JP6517685B2 (ja) メモリシステムおよび制御方法
KR102088403B1 (ko) 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US11372753B2 (en) Memory system and method
US11436136B2 (en) Memory system including non-volatile buffer and control method thereof
WO2018189858A1 (ja) ストレージシステム
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
US11132143B2 (en) Universal flash storage (UFS) device and computing device and computing device including storage UFS device for reporting buffer size based on reuse time after erase
JP2015088121A (ja) メモリシステムおよび方法
JP2019148913A (ja) メモリシステム
US10365857B2 (en) Memory system
US20220300185A1 (en) Storage device, storage system, and control method
WO2018167890A1 (ja) 計算機システム及び管理方法
US12019872B2 (en) Storage device that writes data from a host during garbage collection
JP6721765B2 (ja) メモリシステムおよび制御方法
KR20220135786A (ko) 메모리 시스템에 포함된 복수의 메모리 장치에서 수행되는 동작에 대해 스케줄링하는 장치 및 방법
JP2019016386A (ja) メモリシステムおよび制御方法
JP2019016383A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830