JP7490469B2 - ストレージデバイス、ストレージシステム及び制御方法 - Google Patents

ストレージデバイス、ストレージシステム及び制御方法 Download PDF

Info

Publication number
JP7490469B2
JP7490469B2 JP2020109978A JP2020109978A JP7490469B2 JP 7490469 B2 JP7490469 B2 JP 7490469B2 JP 2020109978 A JP2020109978 A JP 2020109978A JP 2020109978 A JP2020109978 A JP 2020109978A JP 7490469 B2 JP7490469 B2 JP 7490469B2
Authority
JP
Japan
Prior art keywords
write
host
write mode
data
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.)
Active
Application number
JP2020109978A
Other languages
English (en)
Other versions
JP2022007191A (ja
Inventor
貴宏 栗田
徹也 砂田
伸一 菅野
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 JP2020109978A priority Critical patent/JP7490469B2/ja
Priority to US17/201,559 priority patent/US11573717B2/en
Publication of JP2022007191A publication Critical patent/JP2022007191A/ja
Priority to US18/089,904 priority patent/US20230161492A1/en
Application granted granted Critical
Publication of JP7490469B2 publication Critical patent/JP7490469B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
ストレージデバイスの1つとして、不揮発性メモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、ホストデバイス(以下、ホストと称する)から受け取ったデータを不揮発性メモリに書き込む。
書き込みモードとして、書き込み速度優先の第1の書き込みモードと、書き込み容量優先の第2の書き込みモードを備え、書き込み状況等に基づいて書き込みモードを選択するSSDが開発されている。
しかし、書き込みモードの切り替えタイミングは、SSDが判断している。従って、ホストが望むタイミングで書き込み性能を高くすることができない場合がある。
米国特許出願公開第2017/0177469号明細書
本発明が解決しようとする課題は、ホストが望むタイミングで書き込み性能を高くすることができるストレージデバイス、ストレージシステム及び制御方法を提供することである。
実施形態によれば、ストレージデバイスは、ホストに接続可能であり、不揮発性メモリと、不揮発性メモリに電気的に接続されるコントローラと、を具備する。コントローラは、ホストから第1の指示を受け取った場合、ホストから受け取ったライトデータの書き込みモードとして、不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むための第1の書き込みモードを選択し、ホストから第2の指示を受け取った場合、書き込みモードとして、不揮発性メモリの第2の領域にメモリセル当たりにmビットのデータを書き込むための第2の書き込みモードを選択し、ホストから第1の書き込みモードによる書き込み時間の目標値を示す第4の指示を受け取った場合、第1の書き込みモードによるデータ書き込み時間が目標値に達すると、第1の書き込みモードによるデータ書き込み動作を停止する。nは1以上の正整数であmはnよりも大きい正整数である
実施形態に係るストレージデバイスを含むストレージシステムの構成例を示すブロック図である。 実施形態に係るストレージデバイスに含まれるNAND型フラッシュメモリの一構成例を示す図である。 実施形態に係るストレージデバイスに含まれるNAND型フラッシュメモリの他の構成例を示す図である。 実施形態に係るストレージデバイスに含まれるNAND型フラッシュメモリに含まれるSLCバッファの構成例を示す図である。 第1実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第1実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第1実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。 第1実施形態に係るストレージシステムのホストの書き込み処理の他の例を示すフローチャートである。 第2実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第2実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第2実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。 第3実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第3実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第4実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第4実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。 第4実施形態に係るストレージシステムのホストの書き込み処理の他の例を示すフローチャートである。 第4実施形態に係るストレージシステムのストレージデバイスの書き込み処理の他の例を示すフローチャートである。 第5実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第5実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第5実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。 第6実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第6実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第6実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。 第7実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第7実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第7実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。 第8実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第8実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第8実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。 第9実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第9実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第9実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。 第10実施形態に係るストレージシステムのホストの書き込み処理の一例を示すフローチャートである。 第10実施形態に係るストレージシステムのストレージデバイスの書き込み処理の一例を示すフローチャートである。 第10実施形態に係るストレージデバイスの書き込み処理の一例を示す図である。
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接的な接続のみならず、他の要素を介して間接的に接続されることも意味する。
以下、実施の形態について図面を参照して説明する。
(第1実施形態)
第1実施形態に係るストレージデバイスを含むストレージシステムの構成について説明する。図1は、第1実施形態に係るストレージデバイスを含むストレージシステム1の構成例を示すブロック図である。ストレージデバイスは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。不揮発性メモリの一例は、これに限定されないが、NAND型フラッシュメモリを含む。以下、不揮発性メモリをNAND型フラッシュメモリと称する。ここでは、半導体ストレージデバイスは、NAND型フラッシュメモリ5を含むSSD3である。
ストレージシステム1は、ホスト2と、SSD3とを含む。ホスト2は、SSD3を制御するように構成された情報処理装置である。ホスト2の例は、パーソナルコンピュータ、サーバコンピュータ、携帯端末、車載機器である。
ここでは、ホスト2にケーブルまたはネットワークを介してSSD3が接続されている例について説明するが、SSD3は、ホスト2に内蔵されてもよい。
ホスト2とSSD3とを接続するためのインタフェースとしては、これに限定されないが、SATA(Serial ATA)、SAS(Serial Attached SCSI)、UFS(Universal Flash Storage)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)を使用し得る。
SSD3は、コントローラ4と、NAND型フラッシュメモリ5と、DRAM6と、を備える。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを有する。NAND型フラッシュメモリ5は、2次元構造のフラッシュメモリであってもよいし、3次元構造のフラッシュメモリであってもよい。NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(すなわち複数のNAND型フラッシュメモリダイ)を含んでいてもよい。各チップは、メモリセル当たりに1ビット又は複数ビットのデータを格納可能に構成されたフラッシュメモリとして実現され得る。
メモリセル当たりに1ビットのデータを格納可能に構成されたフラッシュメモリは、メモリセル当たりに1ビットのデータを格納可能なシングルレベルセル(SLC)フラッシュメモリと称される。メモリセル当たりに複数ビットのデータを格納可能に構成されたフラッシュメモリの例は、メモリセル当たりに2ビットのデータを格納可能なマルチレベルセル(MLC、あるいは4LC)フラッシュメモリ、メモリセル当たりに3ビットのデータを格納可能なトリプルレベルセル(TLC、あるいは8LC)フラッシュメモリ、メモリセル当たりに4ビットのデータを格納可能なクワッドレベルセル(QLC、あるいは16LC)フラッシュメモリ、メモリセル当たりに5ビット以上のデータを格納可能なフラッシュメモリ等を含む。なお、メモリセル当たりに2ビット以上のデータを格納するフラッシュメモリをMLCフラッシュメモリと称することもあるが、以下では、メモリセル当たりに2ビットのデータを格納するフラッシュメモリをMLCフラッシュメモリと称する。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、複数のページP0~Py-1を含む。ページP0~Py-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ブロックBLK0~BLKx-1の各々は、NAND型フラッシュメモリ5からデータを消去するデータ消去動作の単位である。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページは、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
ブロックBLK0~BLKx-1の各々に対して許容できる最大プログラム/イレーズサイクル数には限界がある。あるブロックの1回のプログラム/イレーズサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作(より詳しくは、プログラム動作)とを含む。
コントローラ4は、System-on-a-chip(SoC)のような回路によって実現されてもよい。コントローラ4は、NANDインタフェース(I/F)13を介して、NAND型フラッシュメモリ5に電気的に接続されている。NAND I/F13は、これに限定されないが、Toggle NANDフラッシュインタフェース、オープンNANDフラッシュインタフェース(ONFI)に準拠している。NAND I/F13は、複数のチャネル(Ch)を介して、NAND型フラッシュメモリ5内の複数のNAND型フラッシュメモリチップにそれぞれ接続されている。複数のNAND型フラッシュメモリチップが並列に駆動されることにより、NAND型フラッシュメモリ5に対するアクセスを広帯域化することができる。NAND I/F13は、ECC処理部18を含んでいる。ここでは、NAND I/F13内にECC処理部18が設けられている例について説明するが、コントローラ4内にECC処理部18が設けられてもよい。
ECC処理部18は、NAND型フラッシュメモリ5に書き込まれるデータと、NAND型フラッシュメモリ5から読み出されたデータとを、誤り訂正符号(ECC)で保護するための機能を有する回路として実現され得る。ECC処理部18は、NAND型フラッシュメモリ5に書き込まれるデータにECCを付加する。また、ECC処理部18は、NAND型フラッシュメモリ5から読み出されたデータに付加されたECCを用いて、読み出されたデータに誤りが発生しているか否かを判別し、誤りが発生している場合にはその誤りを訂正する。
コントローラ4は、NAND型フラッシュメモリ5を制御する。
コントローラ4は、上述したNAND I/F13以外に、ホストインタフェース(I/F)11、CPU12、DRAMインタフェース(I/F)14、ダイレクトメモリアクセスコントローラ(DMAC)15、スタティックRAM(SRAM)16を含む。これらホストI/F11、CPU12、NAND I/F13、DRAM I/F14、DMAC15、SRAM16は、バス10を介して相互接続される。
ホストI/F11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。ホストI/F11は、例えば、SATAインタフェースコントローラ、SASインタフェースコントローラ、PCIeコントローラ、Ethernetコントローラ等である。
ホストI/F11は、ホスト2から様々なコマンドを受信する。SATAインタフェースではATA規格で定義されたATAコマンドが使用され、SASインタフェースではSCSI規格で定義されたSCSIコマンドが使用され、PCIeインタフェースおよびEthernetインタフェースではNVM Express(NVMe)(登録商標)規格で規定されたNVMeコマンドが使用される。
CPU12は、ホストインタフェース11、NANDコントローラ13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。CPU12はライト制御部22、ガベージコレクション(以下、GCと称する)/コンパクション制御部26として機能することができる。
SSD3は、揮発性メモリであるランダムアクセスメモリ(RAM)として、ダイナミックランダムアクセスメモリ(DRAM6)を備えている。ここでは、DRAM6を備えている場合について説明するが、スタティックランダムアクセスメモリ(SRAM)のようなランダムアクセスメモリがコントローラ4に内蔵されていてもよい。なお、DRAM6は、コントローラ4に内蔵されていてもよい。
DRAM6等のランダムアクセスメモリには、NAND型フラッシュメモリ5に書き込まれるデータを一時的に格納するためのライトバッファ32が設けられる。
また、DRAM6等のランダムアクセスメモリには、論理物理アドレス変換テーブルとして機能するルックアップテーブル(L2Pテーブル)34のキャッシュ領域が設けられている。論理アドレスは、SSD3の論理アドレス空間内の論理アドレスをアドレス指定するためにホスト2によって使用されるアドレスである。論理アドレスとしては、論理ブロックアドレス(LBA:Logical Block Address(Addressing))が使用され得る。L2Pテーブル34は、論理アドレス(以下、LBAと称する)それぞれとNAND型フラッシュメモリ5の物理アドレス(PBA:Physical Block Address)それぞれとの間のマッピングを管理する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理及びブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
FTLによって実行されるデータ管理は、(1)LBAそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック単位の消去動作)を隠蔽するための処理、を含む。
コントローラ4は、L2Pテーブル34を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを管理する。あるLBAに対応する物理アドレスは、このLBAに対応するデータが書き込まれたNAND型フラッシュメモリ5内の最新の物理的な記憶位置を示す。L2Pテーブル34は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
NAND型フラッシュメモリ5においては、ページへのデータ書き込みはそのページが含まれるブロックの1消去サイクル(プログラム/イレーズサイクル)当たり1回のみ可能である。つまり、データが既に書き込まれているブロック内の領域に新たなデータを直接上書きすることができない。そのため、既に書き込まれているデータを更新する場合には、コントローラ4はそのブロック(または別のブロック)内の未書き込み領域に新たなデータを書き込み、そして以前のデータを無効データとして扱う。換言すれば、コントローラ4は、あるLBAに対応する更新データを、このLBAに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、L2Pテーブル34を更新してこの別の物理記憶位置を示す物理アドレスをこのLBAに関連付けると共に、以前のデータを無効化する。
無効データとは、L2Pテーブル34から参照されていない物理的な記憶位置に記憶されているデータを意味する。例えば、L2Pテーブル34から参照されていない物理的な記憶位置に記憶されているデータ(すなわち最新のデータとしてLBAに関連付けられていないデータ)は無効データである。無効データは、もはやホスト2からリードされる可能性が無いデータである。あるLBAに関連付けられている論理領域に更新データが格納されると、それまでその論理領域に格納されていた有効データは無効データとなり、更新データが有効データとなる。
有効データとは、あるLBAに対応する最新のデータを意味する。例えば、L2Pテーブル34から参照されている物理的な記憶位置に記憶されているデータ(すなわち最新のデータとしてLBAに関連付けられているデータ)は有効データである。有効データは、後にホスト2からリードされる可能性があるデータである。
FTLによって実行されるブロック管理は、バッドブロック(不良ブロック)の管理と、ウェアレベリング処理と、GC処理を含む。
ウェアレベリング処理は、ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)を均一化するための動作である。
GC処理は、有効データと無効データとが混在するブロックの個数を減らし且つフリーブロックの個数を増やすための動作である。フリーブロックとは、有効データを含まないブロックを意味する。フリーブロックは、データ消去動作が施された後、新たなデータの書き込み先ブロックとして利用可能なブロックである。一方、有効データを格納しているブロックはアクティブブロックである。
NAND型フラッシュメモリ5は、メモリセル当たりに何ビットのデータが書き込まれるかにより異なる複数の書き込みモードにより書き込み処理を実行することができる。書き込みモードは、例えばメモリセル当たりに1ビットのデータが書き込まれる書き込みモード(以下、SLCモードと称する)、メモリセル当たりに2ビットのデータが書き込まれる書き込みモード(以下、MLCモードと称する)、メモリセル当たりに3ビットのデータが書き込まれる書き込みモード(以下、TLCモードと称する)、メモリセル当たりに4ビットのデータが書き込まれる書き込みモード(以下、QLCモードと称する)、メモリセル当たりに5ビット以上のデータが書き込まれる書き込みモード等を含む。
例えば、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ビットのデータを書き込むことができる。
各書き込みモードにおけるメモリセル当たりの記憶密度は、SLCモードでは2値(すなわち、ワード線当たり1ページ)であり、MLCモードでは4値(すなわち、ワード線当たり2ページ)であり、TLCモードでは8値(すなわち、ワード線当たり3ページ)であり、QLCモードでは16値(すなわち、ワード線当たり4ページ)である。そして、NAND型フラッシュメモリ5に対するデータの読み出し速度および書き込み速度は、記憶密度が高いほど遅く、記憶密度が低いほど速い。したがって、これら4つのモードでは、QLCモードにおけるデータの読み出しおよび書き込みが最も遅く、SLCモードにおける読み出しおよび書き込みが最も速い。
また、NAND型フラッシュメモリ5の寿命(エンデュランス)は、記憶密度が高いほど短く、記憶密度が低いほど長い。記憶密度が低いほど、隣り合う状態に対応する閾値電圧分布間のマージンは広くなり、記憶密度が高いほど、閾値電圧分布間のマージンは狭くなる。広いマージンは、たとえメモリセルに加わるストレスによってこのメモリセルの閾値電圧がずれても、このメモリセルのデータが誤ったデータとして読み出されてしまう確率の上昇を抑制する。
そのため、例えば、SLCモードにおける許容可能なメモリセルの個別の疲弊度は、QLCモードにおける許容可能なメモリセルの個別の疲弊度よりも高くなる。したがって、閾値電圧分布間のマージンが広い低記憶密度の書き込みモードを使用した場合は、閾値電圧分布間のマージンが狭い高記憶密度の書き込みモードを使用した場合に比べ、NAND型フラッシュメモリ5の寿命を長くすること(すなわち、許容できる最大プログラム/イレーズサイクル数を増やすこと)ができる。
4つのモードでは、QLCモードにおける寿命が最も短くなり、SLCモードにおける寿命が最も長くなる。例えば、QLCモードでデータが書き込まれた場合に許容できる最大プログラム/イレーズサイクル数は数kサイクルであり、SLCモードでデータが書き込まれた場合に許容できる最大プログラム/イレーズサイクル数は数十kサイクルである。
なお、NAND型フラッシュメモリ5は、メモリセル当たりに5ビット以上を格納可能に構成されていてもよい。この場合においても、NAND型フラッシュメモリ5内の任意の領域は、メモリセル当たりに4ビット以下のデータのみが書き込まれる領域として使用され得る。
各書き込みモードに応じたNAND型フラッシュメモリ5の記憶容量の例を説明する。ここでは、NAND型フラッシュメモリ5に含まれる複数のNAND型フラッシュメモリチップが、メモリセル当たりに4ビットを格納可能に構成されたQLCフラッシュメモリとして実現される場合を想定する。また、NAND型フラッシュメモリ5にQLCモードでデータが書き込まれた場合、SSD3の記憶容量は512GBであることを想定する。
バッドブロック等がない最適な条件下では、NAND型フラッシュメモリ5にTLCモードでデータが書き込まれた場合のSSD3の記憶容量は384GBであり、MLCモードでデータが書き込まれた場合のSSD3の記憶容量は256GBであり、SLCモードでデータが書き込まれた場合のSSD3の記憶容量は128GBである。
このように、データがいずれの書き込みモードで書き込まれるかによって、NAND型フラッシュメモリ5の記憶容量は異なる。
実施形態では、NAND型フラッシュメモリ5の書き込みモードは、メモリセル当たりに格納可能なビット数が異なる第1、第2の書き込みモードが選択可能となっている。第1の書き込みモードは、メモリセル当たりに格納可能なビット数が少ない、SSD3のライト性能(およびリード性能)を向上させるための性能優先の書き込みモードである。一方、第2の書き込みモードは、メモリセル当たりに格納可能なビット数が多い、記憶容量を増加させるための容量優先の書き込みモードである。NAND型フラッシュメモリ5が書き込みモードとして、SLCモード、MLCモード、TLCモード、QLCモードを備える場合の第1の書き込みモードと第2の書き込みモードの組み合わせの例を示す。
(1)第1の組み合わせでは、第1の書き込みモードはSLCモードとし、第2の書き込みモードはMLCモードとする。
(2)第2の組み合わせでは、第1の書き込みモードはSLCモードとし、第2の書き込みモードはTLCモードとする。
(3)第3の組み合わせでは、第1の書き込みモードはSLCモードとし、第2の書き込みモードはQLCモードとする。
(4)第4の組み合わせでは、第1の書き込みモードはMLCモードとし、第2の書き込みモードはTLCモードとする。
(5)第5の組み合わせでは、第1の書き込みモードはMLCモードとし、第2の書き込みモードはQLCモードとする。
(6)第6の組み合わせでは、第1の書き込みモードはTLCモードとし、第2の書き込みモードはQLCモードとする。
以下の説明では、性能優先の第1の書き込みモードはSLCモードであり、容量優先の第2の書き込みモードはTLCモードとする。従来は、SSDが第1、第2の書き込みモードの何れを使うかを決めていた。例えば、ランダムアクセスが続いた場合や大量のライトデータを受け取った場合、SSDは書き込み速度を維持するために、性能優先の第1の書き込みモードを選択する可能性がある。例えば、第1の書き込みモードによる書き込み処理の実行によるフリーブロックの使用量は、第2の書き込みモードによる書き込み処理の実行によるフリーブロックの使用量より多くなる。
従来のストレージシステムでは、NAND型フラッシュメモリ5の書き込みモードはSSD3が或る戦略に基づいて選択していた。しかし、SSD3の選択結果は、ホスト2の希望と一致する保証はない。ホスト2が性能優先の第1の書き込みモードによる書き込みを望むタイミングの前に、SSD3が性能優先の第1の書き込みモードによる書き込み処理を実行して、NAND型フラッシュメモリ5のブロックを使用することがある。この場合、書き込み可能なブロック数が限られているため、ホスト2が性能優先の第1の書き込みモードによる書き込みを望むタイミングで、性能優先の第1の書き込みモードを選択することはできず、容量優先の第2の書き込みモードを選択せざるを得ない。
実施形態では、後述するように、ホスト2がNAND型フラッシュメモリ5の書き込みモードを指定するように構成されている。
NAND型フラッシュメモリ5の書き込み処理の概要を説明する。ここでは、一例として、第1の書き込みモードとしてSLCモード、第2の書き込みモードとしてTLCモードが使用される場合を説明する。NAND型フラッシュメモリ5の各ブロックはTLCブロックとしてもSLCブロックとしても使用可能である。
ホスト2からSSD3に送られたライトデータはライトバッファ32に一旦記憶される。ライトバッファ32から読み出されたライトデータはNAND型フラッシュメモリ5の書き込み先ブロックに書き込まれる。
図2は、NAND型フラッシュメモリ5の書き込みモードがSLCモードに設定された場合の書き込み処理の一例を示す。書き込みモードがSLCモードに設定された場合、ライトデータはSLC書き込み先ブロック102に書き込まれる。SLC書き込み先ブロック102はSLCブロックである。
図3は、NAND型フラッシュメモリ5の書き込みモードがTLCモードに設定された場合の書き込み処理の一例を示す。書き込みモードがTLCモードに設定された場合、ライトデータはTLC書き込み先ブロック126に書き込まれる。TLC書き込み先ブロック126はTLCブロックである。
図2及び図3に示すように、NAND型フラッシュメモリ5は、アクティブブロックプール104とフリーブロックプール116を含む。コントローラ4は、NAND型フラッシュメモリ5の各ブロックBLKをアクティブブロックプール104かフリーブロックプール116に割り当てる。アクティブブロックプール104は、1以上のSLCブロック106と1以上のTLCブロック108を含む。フリーブロックプール116は、1以上のフリーブロック118を含む。
コントローラ4は、フリーブロックプール116に割り当てられているフリーブロック118のいずれか1つにデータ消去処理を実行した後、当該ブロックをSLC書き込み先ブロック102又はTLC書き込み先ブロック126に割り当てる。
コントローラ4は、SLC書き込み先ブロック102又はTLC書き込み先ブロック126に新たなデータを書き込み余地が無くなると、すなわち、SLC書き込み先ブロック102又はTLC書き込み先ブロック126がライトデータで埋まると、SLC書き込み先ブロック102又はTLC書き込み先ブロック126をアクティブブロックプール104に割り当てる。
フリーブロックプール116に割り当てられているフリーブロックの数を増やすためにGC/コンパクション処理が実行される。GC/コンパクション処理においては、コントローラ4は、アクティブブロックプール104に割り当てられているSLCブロック106、TLCブロック108のいずれか1のブロックをコピー元ブロック112とする。例えば、コントローラ4は、有効データと無効データとが混在するアクティブブロックの中で有効データが少ないブロックをコピー元ブロックとしてもよい。コントローラ4は、フリーブロックプール116に割り当てられているフリーブロック118のいずれか1のブロックをコピー先ブロック114とする。
コントローラ4は、コピー元ブロック112の有効データをコピー先ブロック114にコピーする。コントローラ4は、L2Pテーブル34を更新して、コピーされたコピー元ブロック112の有効データのLBAそれぞれにコピー先ブロック114の物理アドレスをマッピングする。有効データがコピー先ブロック114にコピーされることによって無効データのみを含むことになったコピー元ブロック112はフリーブロックに割り当てられる。
なお、各ブロックはTLCブロックとしてもSLCブロックとしても使用可能であるので、SLC書き込み先ブロック102に割り当てられるブロックは特定のブロックに固定する必要はない。SLC書き込み先ブロック102に割り当てられるフリーブロックを生成するためのGC/コンパクション処理のコピー元ブロックはSLCブロックに限らず、TLCブロックでもよい。SLCブロックは、TLCブロックに比べて33%のデータしか格納しておらず、コピーするデータ量が少ないので、コピー元ブロックとして選ばれる可能性が高い。しかし、TLCブロックでも無効データの割合が高く、有効データの割合が低い場合、コピー元ブロックとして選ばれる可能性がある。例えば、ブロックBLK0はSLC書き込み先ブロック102に割り当てられ、SLCアクティブブロック106とされた後、GC/コンパクション処理によりフリーブロック118とされ、次にTLC書き込み先ブロック126に割り当てられてもよい。このような方式をSLC/TLC切り替え方式と称する。SLC/TLC切り替え方式では、書き込みモードがSLCモードの場合でもTLCモードの場合でも、フリーブロックプール116は共通である。
これに対して、SLC書き込み先ブロック102に割り当てられるブロックが特定のブロック、例えばブロックBLK0~BLK99に決められている方式もある。この方式をSLC固定方式と称する。SLC固定方式では、SLC書き込み先ブロック用のフリーブロックプールとTLC書き込み先ブロック用のフリーブロックプールとを別々に設ける必要がある。そして、SLC書き込み先ブロック102用のフリーブロックを作るGC/コンパクション処理とTLC書き込み先ブロック126用のフリーブロックを作るGC/コンパクション処理は別々な処理となる。
実施形態は、SLC/TLC切り替え方式にもSLC固定方式にも適用可能である。
なお、SLCブロックがコピー元ブロック112として選択され、SLCバッファのデータがGC処理によってTLCブロックに書き直す処理をコンパクション処理と称することもあるが、この明細書では、アクティブブロックであるコピー元ブロックの有効データをコピー先ブロックにコピーしてコピー元ブロックをフリーブロックとすることによりフリーブロックを生成する処理をGC/コンパクション処理と総称する。
NAND型フラッシュメモリ5において、SLCブロックとして使われているブロックの集合をSLCバッファと称する。SLCバッファは、本来はTLCブロックであるが、一時的にSLCモードによりデータが書き込まれるSLCブロックを含む。SLCバッファ内のSLCブロックに書き込まれたデータは、GC/コンパクション処理によりTLCブロックにTLCモードにより書き直される。
図4は、SLCバッファの概念を説明する図である。図4(a)は、NAND型フラッシュメモリ5の書き込みモードがSLCモードに設定された場合のSLCバッファ122の一例を示す。この場合、SLCバッファ122は、ライトデータの書き込み先ブロックとされているSLC書き込み先ブロック102と、ライトデータが既に書き込まれたSLCブロック106を含む。NAND型フラッシュメモリ5のSLCバッファ122以外のブロックは、TLCブロック108を含む。
図4(b)は、NAND型フラッシュメモリ5の書き込みモードがTLCモードに設定された場合のSLCバッファ122の一例を示す。この場合、SLCバッファ122は、ライトデータが既に書き込まれたSLCブロック106を含む。NAND型フラッシュメモリ5のSLCバッファ122以外のブロックは、TLCブロック108とTLC書き込み先ブロック126を含む。
上述したように、SLCブロック102、106の記憶容量はTLCブロック126、108の記憶容量の1/3であるので、SLCバッファ122のブロック数が増えると、SSD3の記憶容量が減少する。SSD3の記憶容量が所定容量以下にならないようにするため、SLCバッファ122のブロック数には上限が決められてもよい。
図5は、第1実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図6は、第1実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図7は、第1実施形態に係るSSD3の書き込み処理における書き込み性能とフリーブロック数の変化の一例を示す図である。
図5に示すように、ホスト2は、ステップS102で、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング及びSLC書き込み許可タイミングを決定する。ホスト2のオペレーティングシステム又はアプリケーションプログラムは、高い書き込み性能を望むタイミングを先ず決定する。ホスト2のSSDドライバ(NVMeドライバ、SATAドライバ等)を駆動するOSは、高い書き込み性能を望むタイミングを決定することができる。ホスト2のユーザ又はオペレータがこのタイミングを決定し、ホスト2に入力してもよい。次いで、ホスト2は、高い書き込み性能を望むタイミング又はその直前のタイミングをSLC書き込み許可タイミングとする。さらに、ホスト2は、SLC書き込み許可タイミングより前のいずれかのタイミングをSLC書き込み禁止タイミングとする。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。ホスト2は、ステップS106の処理の実行後、書き込みたいデータがあれば、ライトコマンドをSSD3に送ってもよい。
ステップS106の処理の実行後、ホスト2は、ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、ステップS112で、ライトコマンドをSSD3に送り、処理を終了する。なお、ステップS112は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS112の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
SSD3では、図6に示すように、コントローラ4が、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。
コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS128で、フリーブロックプール116に十分な数のフリーブロック118があるか否かを判定する。具体的には、フリーフロックの数が予め設定された個数を超えているか否かを判定する。この個数は、SLCモードによる書き込み処理を実行できる条件に関するものであり、例えば10個としてもよい。この場合、フリーブロックプール116内のフリーブロック118の数が10個より多ければSLCモードによる書き込み処理を実行することができるが、10個以下であればSLCモードによる書き込み処理を実行することができないとされる。
フリーブロックプール116に十分な数のフリーブロックが無いことを判定した場合(ステップS128のNO)、コントローラ4は、ステップS130で、エラーをホスト2に返す。ステップS130の処理の実行後、コントローラ4は、処理を終了する。
フリーブロックプール116に十分な数のフリーブロックがあることを判定した場合(ステップS128のYES)、コントローラ4は、ステップS132で、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込む。ステップS136の処理の実行後、コントローラ4は、処理を終了する。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
なお、フローチャートには示していないが、フリーブロックの数が所定数以下になると、コントローラ4は、ホスト2からの指示とは無関係に、ライトデータの書き込みモードをTLCモードに変更してもよい。そして、フリーブロックの数が増えると、SLC書き込みが禁止されていなければ、コントローラ4は、ライトデータの書き込みモードをSLCモードに変更してもよい。
また、図5では、ホスト2は、SLC書き込み禁止コマンドとSLC書き込み許可コマンドの一組をSSD3に送る例を示すが、高い書き込み性能を望むタイミングが複数ある場合は、二組以上のSLC書き込み禁止コマンド、SLC書き込み許可コマンドをSSD3に送ってもよい。
図7は、書き込み性能とフリーブロック数の変化の一例を示す図である。図7(a)は、SSD3が書き込みモードを決定する比較例における書き込み性能とフリーブロック数の変化の一例を示す。SSD3は、書き込みモードとしてSLCモードを先ず選択したとする。最初は書き込み性能は高いが、フリーブロックの数は減少する。書き込み処理が進むと、フリーブロックの数は減少する。フリーブロックの数が所定数以下になると、SLCモードによる書き込み処理が不可能となり、書き込みモードはTLCモードに変更され、書き込み性能は低くなる。そのため、この後、ホスト2がSLCモードによる書き込み処理を望んだとしても、そのタイミングでSLCモードによる書き込み処理は実行されない。
図7(b)は第1実施形態における書き込み性能とフリーブロック数の変化の一例を示す。SSD3は、ホスト2から指示が無ければ、書き込みモードとしてSLCモードを選択するとする。比較例と同様に、最初は書き込み性能は高いが、フリーブロックの数は急激に減少する。ホスト2は、或る時点でSLC書き込み禁止コマンドをSSD3に送る。この時点以降は書き込みモードがTLCモードに設定されるので、書き込み性能が低くなるが、フリーブロックの数の減少は緩やかになる。ホスト2は、高い書き込み性能を望むタイミング又はその直前のタイミングでSLC書き込み許可コマンドをSSD3に送る。SSD3は、SLC書き込み許可コマンドを受け取ると、書き込みモードをSLCモードに設定するので、SSD3は、ホスト2が望むタイミングでSLCモードによる書き込み処理を実行できる。
図8は、第1実施形態に係るストレージシステム1におけるホスト2の書き込み処理の他の例を示すフローチャートである。図5に示した例では、ホスト2は、SLC書き込み禁止/許可の2つのタイミングを事前に決定し、そのタイミングになったら、SLC禁止/許可コマンドをSSD3に送る。しかし、図8に示すように、事前にタイミングを決定しない方法も可能である。
ホスト2は、ステップS140で、ホスト動作についてのSLC書き込み/禁止の閾値を決定する。例えば、ホスト2が含むCPUの使用率について60%を閾値としてもよい。ホスト2は、CPU使用率が60%を上回ったらアプリケーションの負荷が高いと判断できるので、SLC書き込みを許可し、書き込み処理の実行速度を高速にしてユーザエクスペリエンスを上げてもよい。ホスト2は、CPU使用率が60%を下回ったらSLC書き込みを禁止し、書き込み処理の実行速度を低速にしてもよい。
ホスト2は、ステップS142で、閾値を下回る動作をした(CPU使用率が60%以下である)か否かを判定する。閾値を下回る動作をしたことを判定すると(ステップS142のYES)、ホスト2は、ステップS144で、SLC書き込み禁止コマンドをSSD3に送る。ホスト2は、ステップS144の処理の実行後、書き込みたいデータがあれば、ライトコマンドをSSD3に送ってもよい。
ステップS144の処理の実行後又はステップS142で閾値を下回る動作をしていないことを判定すると(ステップS142のNO)、ホスト2は、ステップS146で、閾値を上回る動作をした(CPU使用率が60%より大きい)か否かを判定する。閾値を上回る動作をしたことを判定すると(ステップS146のYES)、ホスト2は、ステップS148で、SLC書き込み許可コマンドをSSD3に送り、ステップS150で、ライトコマンドをSSD3に送る。なお、ステップS150は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS150の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
ステップS146で閾値を上回る動作をしていないことを判定すると(ステップS146のNO)、ホスト2は、ステップS142の処理を再度実行する。
このようにしても、ホスト2は、ホスト2の動作からSLC書き込み禁止/許可タイミングを随時判定し、判定結果に基づいてSLC書き込み禁止/許可コマンドをSSD3に送るので、望むタイミングでSSD3の書き込みモードをSLC書き込みモードに設定できる。
SSD3は、ホスト2からSLC書き込みに関するコマンドを受け取ると、コマンドの種類(SLC書き込み禁止コマンドかSLC書き込み許可コマンド)を判別し、図6と同様な処理を実行する。
以上説明したように、第1実施形態によれば、ホスト2が望むタイミングでSLCモードによる書き込み処理を実行することができる。
他の実施形態を説明する。他の実施形態の説明において、第1実施形態と同じ構成要素は同じ参照数字を付して詳細な説明は省略する。また、第1実施形態と同じ図面は図示を省略する。
(第2実施形態)
第1実施形態では、SLCモード処理コマンドを受け取ると、SLC禁止コマンドを受け取るまでSSD3ではSLCモードによる書き込み処理が実行される。第2実施形態では、SLCモードによる書き込み処理の実行を制限する。より詳細には、第2実施形態では、SLC書き込み可能容量をホスト2が指定し、SLC書き込み容量が可能容量を超えると、SLCモードによる書き込み処理が停止される。
図9は、第2実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図10は、第2実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図11は、第2実施形態に係るSSD3の書き込み処理における書き込み性能とフリーブロック数の変化の一例を示す図である。
図9に示すように、ホスト2は、ステップS102Aで、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング及びSLCモードによる書き込み処理により書き込みたい容量(以下、SLC書き込み可能容量と称する)を決定する。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。ホスト2は、ステップS106の処理の実行後、ライトコマンドをSSD3に送ってもよい。
ステップS106の処理の実行後、ホスト2は、ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS202で、SLC書き込み可能容量をSSD3に送る。SLC書き込み可能容量はSLC書き込み可能容量指定コマンドとしてSSD3に送られてもよい。ホスト2は、何バイトのデータをSLCモードにより書き込みたいかを把握しているので、データ量に応じてSLC書き込み可能容量を決定することができる。
ステップS202の処理の実行後、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、ステップS112で、ライトコマンドをSSD3に送り、処理を終了する。なお、ステップS112は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS112の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
なお、SLC書き込み可能容量とSLC書き込み許可コマンドを送る順番はこの逆でもよい。また、SLC書き込み可能容量とSLC書き込み許可コマンドを別々に送る代わりに、SLC書き込み可能容量とSLC書き込み許可コマンドを同時に送ってもよい。例えば、SLC書き込み許可コマンドのパラメータにSLC書き込み可能容量を含めてもよい。
SSD3では、図10に示すように、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、コントローラ4は、ステップS212で、SLC書き込み可能容量をホスト2から受け取る。コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS128で、フリーブロックプール116に十分な数のフリーブロック118があるか否かを判定する。
なお、ホスト2がSLC書き込み可能容量とSLC書き込み許可コマンドの送り方(同時に送るか否か、別々に送る場合の順番等)を図9に示した例から変更した場合は、その変更に従ってSSD3のSLC書き込み可能容量とSLC書き込み許可コマンドの受け取り方も変更される。
フリーブロックプール116に十分な数のフリーブロックが無いことを判定した場合(ステップS118のNO)、コントローラ4は、ステップS130で、エラーをホスト2に返す。ステップS130の処理の実行後、コントローラ4は、処理を終了する。
フリーブロックプール116に十分な数のフリーブロックがあることを判定した場合(ステップS118のYES)、コントローラ4は、ステップS132で、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込む。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
コントローラ4は、ステップS214で、SLCモードによる書き込み容量が書き込み可能容量を超えたか否か、又はフリーブロックプール116に十分な数のフリーブロックが無いか否かを判定する。SLCモードによる書き込み容量が書き込み可能容量を超えていないこと、又はフリーブロックプール116に十分な数のフリーブロックがあることを判定した場合(ステップS214のNO)、コントローラ4は、ステップS135で、ライトコマンドを受け取ると、ステップS136の書き込み処理を継続する。
SLCモードによる書き込み容量が書き込み可能容量を超えていること、又はフリーブロックプール116に十分な数のフリーブロックが無いことを判定した場合(ステップS214のYES)、コントローラ4は、ステップS216で、ホスト2からのコマンドを受け取らなくても、ライトデータの書き込みモードをTLCモードに設定し、ステップS218で、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込み、処理を終了する。
図11は、書き込み性能とフリーブロック数の変化の一例を示す図である。図11(a)は、図7(a)に示した比較例の変化の一例を示す。
図11(b)は第2実施形態における書き込み性能とフリーブロック数の変化の一例を示す。第1実施形態と同様に、ユーザが望むタイミングで書き込み性能が高くなる。さらに、第2実施形態によれば、書き込み容量が書き込み可能容量を超えた場合、又はフリーブロックプール116に十分な数のフリーブロックが無くなった場合、SLCモードによる書き込み処理の実行は停止され、以降はTLCモードによる書き込み処理が実行される。これ以降、書き込み性能は低下するが、フリーブロックの数の減少は緩やかになる。図11(b)は、書き込み容量が書き込み可能容量を超えたことにより、SLCモードによる書き込み処理の実行が停止された例を示す。
(第3実施形態)
第2実施形態と同様に、第3実施形態もSLCモードによる書き込み処理の実行制限に関する。第3実施形態では、SLCモードによる書き込み処理を実行したい時間(以下、SLC書き込み可能時間)をホスト2が指定し、SLC書き込み時間が可能時間を超えると、SLCモードによる書き込み処理が停止される。
図12は、第3実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図13は、第3実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。
図12に示すように、ホスト2は、ステップS102Bで、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング及びSLC書き込み可能時間を決定する。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。ホスト2は、ステップS106の処理の実行後、書き込みたいデータがあれば、ライトコマンドをSSD3に送ってもよい。
ステップS106の処理の実行後、ホスト2は、ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS302で、SLC書き込み可能時間をSSD3に送る。SLC書き込み可能時間はSLC書き込み可能時間指定コマンドとしてSSD3に送られてもよい。ホスト2は、データをSLCモードにより何秒間書き込みたいかを把握しているので、書き込みたい時間に応じてSLC書き込み可能時間を決定することができる。
ステップS302の処理の実行後、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、ステップS112で、ライトコマンドをSSD3に送り、処理を終了する。なお、ステップS112は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS112の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
なお、SLC書き込み可能時間とSLC書き込み許可コマンドを送る順番はこの逆でもよい。また、SLC書き込み可能時間とSLC書き込み許可コマンドを別々に送る代わりに、SLC書き込み可能時間とSLC書き込み許可コマンドを同時に送ってもよい。例えば、SLC書き込み許可コマンドのパラメータにSLC書き込み可能時間を含めてもよい。
SSD3では、図13に示すように、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。この後、コントローラ4は、ステップS312で、SLC書き込み可能時間をホスト2から受け取る。コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS128で、フリーブロックプール116に十分な数のフリーブロック118があるか否かを判定する。
なお、ホスト2がSLC書き込み可能時間とSLC書き込み許可コマンドの送り方を図12に示した例から変更した場合は、その変更に従ってSSD3のSLC書き込み可能容量とSLC書き込み許可コマンドの受け取り方も変更される。
フリーブロックプール116に十分な数のフリーブロックが無いことを判定した場合(ステップS128のNO)、コントローラ4は、ステップS130で、エラーをホスト2に返す。ステップS130の処理の実行後、コントローラ4は、処理を終了する。
フリーブロックプール116に十分な数のフリーブロックがあることを判定した場合(ステップS128のYES)、コントローラ4は、ステップS132で、ホスト2からのコマンドを受け取らなくても、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込む。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
コントローラ4は、ステップS314で、SLCモードによる書き込み時間が書き込み可能時間を超えたか否か、又はフリーブロックプール116に十分な数のフリーブロックが無いか否かを判定する。SLCモードによる書き込み時間が書き込み可能時間を超えていないこと、又はフリーブロックプール116に十分な数のフリーブロックがあることを判定した場合(ステップS314のNO)、コントローラ4は、ステップS135で、ライトコマンドを受け取ると、ステップS136の書き込み処理を継続する。
SLCモードによる書き込み時間が書き込み可能時間を超えていること、又はフリーブロックプール116に十分な数のフリーブロックが無いことを判定した場合(ステップS314のYES)、コントローラ4は、ステップS216で、ライトデータの書き込みモードをTLCモードに設定し、ステップS218で、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込み、処理を終了する。
第3実施形態によれば、書き込み時間が書き込み可能時間を超えた場合、又はフリーブロックプール116に十分な数のフリーブロックが無くなった場合、SLCモードによる書き込み処理の実行は停止され、以降はTLCモードによる書き込み処理が実行される。第2実施形態では、書き込み時間ではなく書き込み容量に基づいて、SLCモードによる書き込み処理の実行は停止される。第3実施形態による書き込み性能とフリーブロック数の変化の一例は、図11に示した第2実施形態による変化例と同じであるので、図示は省略する。第3実施形態と第2実施形態は、書き込み性能が低下するタイミングを決める基準が異なるが、書き込み容量と書き込み時間は互いに関連する。そのため、第2実施形態、第3実施形態の何れを用いても効果はほぼ同じである。
第2、第3実施形態のホスト2の処理は、図5に示した第1実施形態のホスト2の処理に基づくが、第2、第3実施形態のホスト2の処理は、図8に示した第1実施形態の変形例のホスト2の処理に基づいてもよい。その場合、図8のSLC書き込み許可コマンドを送信するステップS148の直前にSLC書き込み可能容量をSSD3に送るステップS202(図9)又はSLC書き込み可能時間をSSD3に送るステップS302(図12)が実行される。
(第4実施形態)
第2、第3実施形態は、SLC書き込み許可時の書き込み処理の実行制限についての実施形態であった。次に、SLC書き込み禁止時にGC/コンパクション処理を実行して、フリーブロックを生成し、フリーブロックの数を回復させる第4実施形態を説明する。
図14は、第4実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図15は、第4実施形態に係るSSD3の書き込み処理における書き込み性能とフリーブロック数の変化の一例を示す図である。
ホスト2の処理は、図5に示す第1実施形態、図8に示す第1実施形態の変形例、図9に示す第2実施形態、図12に示す第3実施形態の処理のいずれであってもよい。
SSD3では、図14に示すように、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。この後、コントローラ4は、ステップS402で、図3に示すように、フリーブロックを生成するためのGC/コンパクション処理を実行する。GC/コンパクション処理の実行タイミングは、ホスト2からライトコマンドやリードコマンド等のI/Oコマンドが送られて来ない、所謂アイドル期間であってもよい。しかし、アイドル期間が無い場合は、ホストからのI/Oコマンドの実行を遅延させて、GC/コンパクション処理を優先的に実行することがある。GC/コンパクション処理とホストからのI/Oコマンドのどちらを優先的に実行するかを示す指標としてGC/コンパクション処理の優先度がある。優先度は、SSD3が決めてもよいし、ホスト2が指定してもよい。
ステップS402の処理の実行後、コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS132で、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込む。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
ステップS136の処理の実行後、コントローラ4は、ステップS404で、フリーブロックプール116に十分な数のフリーブロック118があるか否かを判定する。
フリーブロックプール116に十分な数のフリーブロックがあることを判定した場合(ステップS404のYES)、コントローラ4は、ステップS135で、ライトコマンドを受け取ると、ステップS136の書き込み処理を継続する。
フリーブロックプール116に十分な数のフリーブロックが無いことを判定した場合(ステップS404のNO)、コントローラ4は、ステップS406で、ライトデータの書き込みモードをTLCモードに設定し、ステップS407で、ライトコマンドをホスト2から受け取ると、ステップS408で、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込み、処理を終了する。
図15は、書き込み性能とフリーブロック数の変化の一例を示す図である。図15(a)は、図7(b)に示した第1実施形態における書き込み性能とフリーブロック数の変化の例を比較のために示す。
図15(b)は第4実施形態における書き込み性能とフリーブロック数の変化の一例を示す。第4実施形態においては、SSD3がSLC書き込み禁止コマンドを受け取ると、GC/コンパクション処理が実行され、フリーブロック数は増加する。そのため、ホスト2が望むタイミングになった時、フリーブロックの数は、第1実施形態に比べて多い。そのため、ホスト2が高い書き込み性能を望むタイミングが長時間であっても、その期間の最後までフリーブロックが存在し、SLCモードによる書き込み処理が実行できる。
しかし、GC/コンパクション処理を実行しない第1実施形態では、図15(a)に示すように、SLC書き込み禁止コマンドを受け取っても、TLCモードによる書き込み処理の実行によりフリーブロック数は緩やかに減少する。そのため、ホスト2が高い書き込み性能を望むタイミングが長時間の場合、その期間の途中でフリーブロックが所定の数以下となり、それ以降SLCモードによる書き込み処理が実行できなくなる場合がある。
図14に示すSSD3の書き込み処理例では、GC/コンパクション処理の実行タイミングはSSD3が決めている。しかし、GC/コンパクション処理の実行タイミングをホスト2が指定するように第4実施形態を変形することも可能である。
図16は、第4実施形態の変形例に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図17は、第4実施形態の変形例に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。
図16に示すように、ホスト2は、ステップS102で、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング及びSLC書き込み許可タイミングを決定する。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。ホスト2は、ステップS106の処理の実行後、書き込みたいデータがあれば、ライトコマンドをSSD3に送ってもよい。
ステップS106の処理の実行後、ホスト2は、ステップS412で、GC/コンパクションコマンドをSSD3に送る。ホスト2は、I/OコマンドをSSD3に送らないタイミングでGC/コンパクションコマンドをSSD3に送る。GC/コンパクションコマンドは、GC/コンパクション処理の優先度を含んでもよい。ホスト2は、優先度を含むGC/コンパクションコマンドをSSD3に送ることにより、GC/コンパクション処理の実行の優先度を制御することができ、その結果、書き込み性能の劣化度合いも制御することができる。そのため、GC/コンパクション処理の実行による書き込み性能の劣化を制御することができる。
ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、ステップS112で、ライトコマンドをSSD3に送り、処理を終了する。なお、ステップS112は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS112の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
なお、図16の処理は、図5に示した第1実施形態のホスト2の処理に基づくが、図16の処理は、図8に示した第1実施形態の変形例のホスト2の処理に基づいてもよい。その場合、図8のSLC書き込み禁止コマンドをSSD3に送るステップS144とSLC書き込み許可コマンドをSSD3に送るステップS148との間にGC/コンパクションコマンドをSSD3に送るステップS412が実行される。
SSD3では、図17に示すように、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。この後、コントローラ4は、ステップS416で、GC/コンパクションコマンドを受け取ると、ステップS418で、GC/コンパクション処理を実行する。GC/コンパクションコマンドとともに、GC/コンパクション処理の優先度を受け取った場合、コントローラ4は、ステップS418で、受け取った優先度に従ってGC/コンパクション処理を実行する。
ステップS418の処理の実行後、コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS132で、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込む。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
ステップS136の処理の実行後、コントローラ4は、ステップS422で、フリーブロックプール116に十分な数のフリーブロック118があるか否かを判定する。
フリーブロックプール116に十分な数のフリーブロックがあることを判定した場合(ステップS422のYES)、コントローラ4は、ステップS136の書き込み処理を継続する。
フリーブロックプール116に十分な数のフリーブロックが無いことを判定した場合(ステップS422のNO)、コントローラ4は、ステップS424で、ライトデータの書き込みモードをTLCモードに設定し、ステップS425で、ライトコマンドをホスト2から受け取ると、ステップS426で、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込み、処理を終了する。
(第5実施形態)
第4実施形態はGC/コンパクション処理の実行開始に関するものであるが、GC/コンパクション処理を必要以上に実行すると、書き込み性能が必要以上に劣化する。次に、GC/コンパクション処理の実行終了タイミングを制御する第5実施形態を説明する。
図18は、第5実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図19は、第5実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図20は、第5実施形態に係るSSD3の書き込み処理における書き込み性能とフリーブロック数の変化の一例を示す図である。
図18に示すように、ホスト2は、ステップS102Cで、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング及びフリーブロックの目標容量を決定する。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS502で、フリーブロックの目標容量をSSD3に送る。目標容量は目標容量指定コマンドとしてSSD3に送られてもよい。フリーブロックの目標容量は、GC/コンパクション処理の実行終了時点あるいはホスト2が高性能を望むタイミングの開始時点でフリーブロックプール116に割り当てられているフリーブロック118の容量である。言い換えると、フリーブロックの目標容量は、GC/コンパクション処理を何時まで実行するかを判断するための指標である。フリーブロックの目標容量は、ホスト2が高性能を望むタイミングの終了時点でフリーブロックプール116に割り当てられているフリーブロックが十分残るような値に決定されている。
ステップS502の処理の実行後、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。ホスト2は、ステップS106の処理の実行後、書き込みたいデータがあれば、ライトコマンドをSSD3に送ってもよい。
ステップS106の処理の実行後、ホスト2は、ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、ステップS112で、ライトコマンドをSSD3に送り、処理を終了する。なお、ステップS112は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS112の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
なお、フリーブロックの目標容量とSLC書き込み禁止コマンドを送る順番はこの逆でもよい。また、フリーブロックの目標容量とSLC書き込み禁止コマンドを別々に送る代わりに、フリーブロックの目標容量とSLC書き込み禁止コマンドを同時に送ってもよい。例えば、SLC書き込み禁止コマンドのパラメータにフリーブロックの目標容量を含めてもよい。
なお、図18の処理は、図5に示した第1実施形態のホスト2の処理に基づくが、図18の処理は、図8に示した第1実施形態の変形例のホスト2の処理に基づいてもよい。その場合、図8のSLC書き込み禁止コマンドをSSD3に送るステップS144の前にフリーブロックの目標容量をSSD3に送るステップS502が実行される。
SSD3では、図19に示すように、コントローラ4は、ステップS504で、フリーブロックの目標容量をホスト2から受け取ると、ステップS506で、目標容量をSLCモードで書き込んだ際のブロックサイズで除算して、目標容量を実現するために必要な目標ブロック数を計算する。
ステップS506の処理の実行後、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。
なお、ホスト2がフリーブロックの目標容量とSLC書き込み禁止コマンドの送り方を図18に示した例から変更した場合は、その変更に従ってSSD3のフリーブロックの目標容量とSLC書き込み禁止コマンドの受け取り方も変更される。
ステップS124の処理の実行後、コントローラ4は、ステップS508で、フリーブロックプール116に割り当てられているフリーブロック118の数が目標ブロック数を超えているか否かを判定する。
フリーブロック118の数が目標ブロック数を超えていないことを判定した場合(ステップS508のNO)、コントローラ4は、ステップS512で、GC/コンパクション処理を実行する。コントローラ4は、フリーブロック118の数が目標ブロック数を超えることを判定するまでステップS512の処理を実行する。すなわち、コントローラ4は、フリーブロック118の数が目標ブロック数を超えると、GC/コンパクション処理の実行を停止する。
フリーブロック118の数が目標ブロック数を超えていることを判定した場合(ステップS508のYES)、コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS132で、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込み、処理を終了する。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
図20は、書き込み性能とフリーブロック数の変化の一例を示す図である。図20(a)は、図15(b)に示した第4実施形態における書き込み性能とフリーブロック数の変化の例を示す。図20(b)は第5実施形態における書き込み性能とフリーブロック数の変化の一例を示す。
図20(a)に示すように、第4実施形態では、SSD3がSLC書き込み禁止コマンドを受け取ると、GC/コンパクション処理を実行し、フリーブロック数は増加する。しかし、GC/コンパクション処理が実行されると、その間、ホスト2からのライトデータの書き込み処理は待機するので、書き込み性能は劣化する。
しかし、第5実施形態によれば、図20(b)に示すように、SLC書き込み禁止コマンドとともにフリーブロックの目標容量がホスト2から送られ、フリーブロックの目標容量が実現されると、GC/コンパクション処理の実行は停止するので、必要以上にGC/コンパクション処理が実行されることがない。GC/コンパクション処理の実行による書き込み性能劣化期間は、第4実施形態に比べて短い。GC/コンパクション処理の実行時間が短いので、ブロックの疲弊を抑えることができる。
(第6実施形態)
第5実施形態では、ホスト2が、フリーブロックの目標容量を指定して、SSD3がそれに従ってGC/コンパクション処理の実行終了タイミングを決めるが、次に、ホスト2が、GC/コンパクション処理の目標実行時間を指定して、SSD3がそれに従ってGC/コンパクション処理の実行終了タイミングを決める第6実施形態を説明する。
図21は、第6実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図22は、第6実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図23は、第6実施形態に係るSSD3の書き込み処理における書き込み性能とフリーブロック数の変化の一例を示す図である。
図21に示すように、ホスト2は、ステップS102Dで、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング及びCG/コンパクション処理の目標実行時間を決定する。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS602で、GC/コンパクション処理の目標実行時間をSSD3に送る。目標実行時間は目標実行時間指定コマンドとしてSSD3に送られてもよい。GC/コンパクション処理の目標実行時間は、例えばSLC書き込み禁止期間のGC/コンパクション処理の実行による性能低下を許容する時間から決定される。
ステップS602の処理の実行後、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。ホスト2は、ステップS106の処理の実行後、書き込みたいデータがあれば、ライトコマンドをSSD3に送ってもよい。
ステップS106の処理の実行後、ホスト2は、ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、ステップS112で、ライトコマンドをSSD3に送り、処理を終了する。なお、ステップS112は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS112の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
なお、GC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドを送る順番はこの逆でもよい。また、GC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドを別々に送る代わりに、GC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドを同時に送ってもよい。例えば、SLC書き込み禁止コマンドのパラメータにGC/コンパクション処理の目標実行時間を含めてもよい。
なお、図21の処理は、図5に示した第1実施形態のホスト2の処理に基づくが、図21の処理は、図8に示した第1実施形態の変形例のホスト2の処理に基づいてもよい。その場合、図8のSLC書き込み禁止コマンドをSSD3に送るステップS144の前にGC/コンパクション処理の目標実行時間をSSD3に送るステップS602が実行される。
SSD3では、図22に示すように、コントローラ4は、ステップS602で、GC/コンパクション処理の目標実行時間をホスト2から受け取る。
ステップS602の処理の実行後、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。
なお、ホスト2がGC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドの送り方を図21に示した例から変更した場合は、その変更に従ってSSD3のGC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドの受け取り方も変更される。
ステップS124の処理の実行後、コントローラ4は、ステップS604で、GC/コンパクション処理の実行時間が目標実行時間を超えているか否かを判定する。
GC/コンパクション処理の実行時間が目標実行時間を超えていないことを判定した場合(ステップS604のNO)、コントローラ4は、ステップS606で、GC/コンパクション処理を実行する。コントローラ4は、GC/コンパクション処理の実行時間が目標実行時間を超えることを判定するまでステップS604の処理を実行する。すなわち、コントローラ4は、GC/コンパクション処理の実行時間が目標実行時間を超えると、GC/コンパクション処理の実行を停止する。
GC/コンパクション処理の実行時間が目標実行時間を超えていることを判定した場合(ステップS604のYES)、コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS132で、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込み、処理を終了する。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
図23は、書き込み性能とフリーブロック数の変化の一例を示す図である。図23(a)は、図15(b)に示した第4実施形態における書き込み性能とフリーブロック数の変化の例を示す。図23(b)は第6実施形態における書き込み性能とフリーブロック数の変化の一例を示す。
図23(a)に示すように、第4実施形態では、SSD3がSLC書き込み禁止コマンドを受け取ると、GC/コンパクション処理が実行され、フリーブロック数は増加する。しかし、GC/コンパクション処理が実行されると、その間、ホスト2からのライトデータの書き込み処理は待機するので、書き込み性能は劣化する。
しかし、第6実施形態によれば、図23(b)に示すように、SLC書き込み禁止コマンドとともにGC/コンパクション処理の目標実行時間がホスト2から送られ、GC/コンパクション処理の実行時間が目標実行時間に達すると、GC/コンパクション処理の実行は停止するので、必要以上にGC/コンパクション処理が実行されることがない。GC/コンパクション処理の実行による書き込み性能劣化期間は、第4実施形態に比べて短い。GC/コンパクション処理の実行時間が短いので、ブロックの疲弊を抑えることができる。
なお、第5、第6実施形態では、SLC書き込み禁止コマンド毎に、フリーブロックの目標容量、GC/コンパクション処理の目標実行時間をホスト2が指定しているが、これらの目標容量、目標実行時間は変更された時だけ指定してもよい。この場合、SSD3は、目標容量、目標実行時間を記憶しておいて、目標容量、目標実行時間がホスト2から指定されない場合は、記憶しておいた前回の目標容量、目標実行時間を使ってもよい。さらに、目標容量、目標実行時間は毎回同じでもよい。その場合、ホスト2は、SLC書き込み禁止コマンドの最初の送信時に目標容量、目標実行時間を送信してもよい。
(第7実施形態)
第5実施形態又は第6実施形態では、ホスト2がフリーブロックの目標容量又はGC/コンパクション処理の目標実行時間を指定し、指定された目標容量又は目標実行時間に基づいて、SSD3がGC/コンパクション処理の実行終了タイミングを決めることにより、書き込み性能が劣化する期間を短くしている。しかし、第5実施形態又は第6実施形態では、SLC書き込み禁止コマンドの受信時からSLC書き込み許可コマンドの受信時までの期間の前半はGC/コンパクション処理の実行期間であり、後半はGC/コンパクション処理が実行されない期間である。次に、SLC書き込み禁止コマンドの受信時からSLC書き込み許可コマンドの受信時までの期間中、ホスト2の指定情報に基づいた優先度でGC/コンパクション処理を実行する第7実施形態を説明する。
図24は、第7実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図25は、第7実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図26は、第7実施形態に係るSSD3の書き込み処理における書き込み性能とフリーブロック数の変化の一例を示す図である。
図24に示すように、ホスト2は、ステップS102Eで、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング及び書き込み性能の劣化度合いの許容値を決定する。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS702で、書き込み性能の劣化度合いの許容値をSSD3に送る。許容値は許容値指定コマンドとしてSSD3に送られてもよい。書き込み性能は保証スループット(バイト/秒)、レイテンシー(秒)等により表され得る。保証スループット(バイト/秒)の下限値、レイテンシー(秒)の上限値が劣化度合いの許容値としてSSD3に送られる。
ステップS702の処理の実行後、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。
ステップS106の処理の実行後、ホスト2は、ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、ステップS112で、ライトコマンドをSSD3に送り、処理を終了する。なお、ステップS112は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS112の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
なお、書き込み性能の劣化度合いの許容値とSLC書き込み禁止コマンドを送る順番はこの逆でもよい。また、書き込み性能の劣化度合いの許容値とSLC書き込み禁止コマンドを別々に送る代わりに、書き込み性能の劣化度合いの許容値とSLC書き込み禁止コマンドを同時に送ってもよい。例えば、SLC書き込み禁止コマンドのパラメータに書き込み性能の劣化度合いの許容値を含めてもよい。
なお、図24の処理は、図5に示した第1実施形態のホスト2の処理に基づくが、図24の処理は、図8に示した第1実施形態の変形例のホスト2の処理に基づいてもよい。その場合、図8のSLC書き込み禁止コマンドをSSD3に送るステップS144の前に書き込み性能の劣化度合いの許容値をSSD3に送るステップS702が実行される。
SSD3では、図25に示すように、コントローラ4は、ステップS704で、書き込み性能の劣化度合いの許容値をホスト2から受け取る。
ステップS704の処理の実行後、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。
なお、ホスト2が書き込み性能の劣化度合いの許容値とSLC書き込み禁止コマンドの送り方を図24に示した例から変更した場合は、その変更に従ってSSD3の書き込み性能の劣化度合いの許容値とSLC書き込み禁止コマンドの受け取り方も変更される。
ステップS124の処理の実行後、コントローラ4は、ステップS706で、書き込み性能の劣化度合いが許容値を超えないようにGC/コンパクション処理の優先度を決定する。GC/コンパクション処理の優先度が高い程、フリーブロックの生成速度は向上するが、書き込み性能は劣化し、GC/コンパクション処理の優先度が低い程、フリーブロックの生成速度は低下するが、書き込み性能は余り劣化しない。コントローラ4は、ホスト2が指定した書き込み性能の劣化度合いの許容値に応じてGC/コンパクション処理の優先度を決定する。第5、第6実施形態と異なり、第7実施形態では、GC/コンパクション処理は、SLC書き込み禁止コマンドの受信時からSLC書き込み許可コマンドの受信時までの期間中実行される。
ステップS706の処理の実行後、コントローラ4は、ステップS708で、この決定した優先度に従ってGC/コンパクション処理を実行する。これにより、GC/コンパクション処理の実行により書き込み性能は劣化するが、劣化の度合いは許容値に収まっている。
ステップS708の処理の実行後、コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS132で、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込み、処理を終了する。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
図26は、書き込み性能とフリーブロック数の変化の一例を示す図である。図26(a)は、図23(b)に示した第6実施形態における書き込み性能とフリーブロック数の変化の例を示す。図26(b)は第7実施形態における書き込み性能とフリーブロック数の変化の一例を示す。
図26(a)に示すように、第6実施形態では、SSD3がSLC書き込み禁止コマンドを受け取ると、GC/コンパクション処理が実行され、フリーブロック数は増加する。しかし、GC/コンパクション処理が実行されると、その間、ホスト2からのライトデータの書き込み処理は待機するので、書き込み性能は劣化する。SLC書き込み禁止コマンドの受信時からSLC書き込み許可コマンドの受信時までの期間の前半のみでGC/コンパクション処理が実行される。そのため、SLC書き込み禁止コマンドの受信時からSLC書き込み許可コマンドの受信時までの期間の前半と後半では書き込み性能が異なる。
しかし、第7実施形態によれば、SLC書き込み禁止コマンドとともに書き込み性能の劣化度合いの許容値がホスト2から送られ、劣化度合いの許容値に応じたGC/コンパクション処理の優先度をSSD3が計算する。そのため、図26(b)に示すように、SLC書き込み禁止コマンドの受信時からSLC書き込み許可コマンドの受信時までの期間中GC/コンパクション処理が実行され、その期間中の書き込み性能は均一になる。
(第8実施形態)
第7実施形態では、書き込み性能の劣化は抑えられるが、GC/コンパクション処理の実行終了時にフリーブロックプール116に割り当てられているフリーブロックの数が所望数に達しない可能性がある。次に、所望数のフリーブロックを生成するとともに、書き込み性能の劣化を最小限に抑えることができる第8実施形態を説明する。
図27は、第8実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図28は、第8実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図29は、第8実施形態に係るSSD3の書き込み処理における書き込み性能とフリーブロック数の変化の一例を示す図である。
図27に示すように、ホスト2は、ステップS102Fで、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング、フリーブロック生成の目標容量及びGC/コンパクション処理の目標実行時間を決定する。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS712で、フリーブロックの目標容量をSSD3に送る。目標容量は目標容量指定コマンドとしてSSD3に送られてもよい。フリーブロックの目標容量は、第5実施形態で説明した容量である。
ステップS712の処理の実行後、ホスト2は、ステップS714で、GC/コンパクション処理の目標実行時間をSSD3に送る。目標実行時間は目標実行時間指定コマンドとしてSSD3に送られてもよい。GC/コンパクション処理の目標実行時間は、第6実施形態で説明した時間である。
ステップS714の処理の実行後、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。
ステップS106の処理の実行後、ホスト2は、ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、ステップS112で、ライトコマンドをSSD3に送り、処理を終了する。なお、ステップS112は書き込むデータがある場合に実行されるものである。そのため、ホスト2は、ステップS112の処理を複数回実行する場合もあるし、1回も実行しない場合もある。
なお、フリーブロックの目標容量とGC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドを送る順番が変わってもよい。また、フリーブロックの目標容量とGC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドを別々に送る代わりに、フリーブロックの目標容量とGC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドを同時に送ってもよい。例えば、SLC書き込み禁止コマンドのパラメータにフリーブロックの目標容量とGC/コンパクション処理の目標実行時間を含めてもよい。
なお、図27の処理は、図5に示した第1実施形態のホスト2の処理に基づくが、図27の処理は、図8に示した第1実施形態の変形例のホスト2の処理に基づいてもよい。その場合、図8のSLC書き込み禁止コマンドをSSD3に送るステップS144の前にフリーブロックの目標容量をSSD3に送るステップS712とGC/コンパクション処理の目標実行時間をSSD3に送るステップS714が実行される。
SSD3では、図28に示すように、コントローラ4は、ステップS722で、フリーブロックの目標容量をホスト2から受け取り、ステップS723で、GC/コンパクション処理の目標実行時間を受け取る。
ステップS723の処理の実行後、コントローラ4は、ステップS724で、目標容量をSLCモードで書き込んだ際のブロックサイズで除算して、目標容量を実現するために必要な目標ブロック数を計算する。
ステップS724の処理の実行後、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。
なお、ホスト2が、フリーブロックの目標容量とGC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドの送り方を図27に示した例から変更した場合は、その変更に従ってSSD3のフリーブロックの目標容量とGC/コンパクション処理の目標実行時間とSLC書き込み禁止コマンドの受け取り方も変更される。
ステップS124の処理の実行後、コントローラ4は、ステップS726で、GC/コンパクション処理を目標実行時間だけ実行すると、フリーブロックプール116に割り当てられているフリーブロックの数が目標ブロック数に達するようにGC/コンパクション処理の優先度を決定する。GC/コンパクション処理の優先度が高い程、フリーブロックの数の増加率はより大きく、GC/コンパクション処理の優先度が低い程、フリーブロックの数の増加率はより小さい。
ステップS726の処理の実行後、コントローラ4は、ステップS728で、この決定した優先度に従って、目標実行時間だけGC/コンパクション処理を実行する。これにより、GC/コンパクション処理の実行により目標とする数のフリーブロックを生成し、かつ書き込み性能の劣化を最小限に抑えることができる。
ステップS728の処理の実行後、コントローラ4は、ステップS126で、SLC書き込み許可コマンドをホスト2から受け取ると、ステップS132で、ライトデータの書き込みモードをSLCモードに設定し、ステップS134で、書き込みモードをSLCモードに設定したことをホスト2に返す。
ステップS135で、ホスト2からライトコマンドを受け取ると、コントローラ4は、ステップS136で、図2に示すように、ライトデータをNAND型フラッシュメモリ5のSLC書き込み先ブロック102に書き込み、処理を終了する。なお、ホスト2からライトコマンドが送られてこない場合は、ステップS135、S136は実行されない。
図29は、書き込み性能とフリーブロック数の変化の一例を示す図である。図29(a)は、図15(b)に示した第4実施形態における書き込み性能とフリーブロック数の変化の例を示す。図29(b)は第8実施形態における書き込み性能とフリーブロック数の変化の一例を示す。
図29(a)に示すように、第4実施形態では、SSD3がSLC書き込み禁止コマンドを受け取ってからSSD3がSLC書き込み許可コマンドを受け取るまで、GC/コンパクション処理が実行され、フリーブロック数は増加する。しかし、GC/コンパクション処理が実行されると、その間、ホスト2からのライトデータの書き込み処理は待機するので、書き込み性能は劣化する。
しかし、第8実施形態によれば、図29(b)に示すように、SLC書き込み許可コマンドとともにフリーブロックの目標容量とGC/コンパクション処理の実行時間がホスト2から送られ、GC/コンパクション処理の実行終了時にフリーブロックプール116に割り当てられているフリーブロックの数が目標ブロック数に達するようにGC/コンパクション処理の優先度をSSD3が決定する。そのため、GC/コンパクション処理の実行により目標とする数のフリーブロックを生成し、かつ書き込み性能の劣化を最小限に抑えることができる。
(第9実施形態)
GC/コンパクション処理の実行によりWAFが悪化しそうな場合、GC/コンパクション処理の実行を停止する第9実施形態を説明する。
図30は、第9実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図31は、第9実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図32は、第9実施形態に係るSSD3の書き込み処理におけるWAF変化の一例を示す図である。
図30に示すように、ホスト2は、ステップS102Gで、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング、フリーブロック生成の目標容量及びWAF制限値Wを決定する。
ホスト2は、ステップS104で、SLC書き込み禁止タイミングになったか否かを判定し、SLC書き込み禁止タイミングになるまで、ステップS104の処理を繰り返し実行する。
SLC書き込み禁止タイミングになったことを判定した場合(ステップS104のYES)、ホスト2は、ステップS802で、フリーブロックの目標容量をSSD3に送る。目標容量は目標容量指定コマンドとしてSSD3に送られてもよい。フリーブロックの目標容量は、第5実施形態で説明した容量である。
ステップS802の処理の実行後、ホスト2は、ステップS804で、WAF制限値WをSSD3に送る。WAF制限値WはWAF制限値指定コマンドとしてSSD3に送られてもよい。WAFは、ホスト2から送られてきたライトデータのデータ量に対するNAND型フラッシュメモリ5に実際に書き込まれたデータのデータ量の比であり、GC/コンパクション処理の実行により1より大きくなる。WAFが大きくなることは、プログラム/イレーズサイクルが増加するので、NAND型フラッシュメモリ5の疲弊が進む。第9実施形態は、WAFに基づいてGC/コンパクション処理の実行を停止するものであり、WAF制限値Wは停止条件に関する。
ステップS804の処理の実行後、ホスト2は、ステップS106で、SLC書き込み禁止コマンドをSSD3に送る。
ステップS106の処理の実行後、ホスト2は、ステップS108で、SLC書き込み許可タイミングになったか否かを判定し、SLC書き込み許可タイミングになるまで、ステップS108の処理を繰り返し実行する。
SLC書き込み許可タイミングになったことを判定した場合(ステップS108のYES)、ホスト2は、ステップS110で、SLC書き込み許可コマンドをSSD3に送り、処理を終了する。なお、書き込むデータがある場合、ホスト2は、ステップS110の処理の実行後、ライトコマンドをSSD3に送る。
なお、フリーブロックの目標容量とWAF制限値Wを送る順番はこの逆でもよい。また、フリーブロックの目標容量とWAF制限値WとSLC書き込み禁止コマンドを別々に送る代わりに、フリーブロックの目標容量とWAF制限値WとSLC書き込み禁止コマンドを同時に送ってもよい。例えば、SLC書き込み禁止コマンドのパラメータにフリーブロックの目標容量とWAF制限値Wを含めてもよい。
なお、図30の処理は、図5に示した第1実施形態のホスト2の処理に基づくが、図30の処理は、図8に示した第1実施形態の変形例のホスト2の処理に基づいてもよい。その場合、図8のSLC書き込み禁止コマンドをSSD3に送るステップS144の前にフリーブロックの目標容量をSSD3に送るステップS802とWAF制限値WをSSD3に送るステップS804が実行される。
SSD3では、図31に示すように、コントローラ4は、ステップS812で、フリーブロックの目標容量をホスト2から受け取り、ステップS814で、目標容量をSLCモードで書き込んだ際のブロックサイズで除算して、目標容量を実現するために必要な目標ブロック数を計算する。
ステップS814の処理の実行後、コントローラ4は、ステップS816で、WAF制限値Wをホスト2から受け取る。
ステップS816の処理の実行後、コントローラ4は、ステップS122で、SLC書き込み禁止コマンドをホスト2から受け取ると、ステップS124で、ライトデータの書き込みモードをTLCモードに設定する。この後、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。
なお、ホスト2が、フリーブロックの目標容量とWAF制限値WとSLC書き込み禁止コマンドの送り方を図30に示した例から変更した場合は、その変更に従ってSSD3のフリーブロックの目標容量とWAF制限値WとSLC書き込み禁止コマンドの受け取り方も変更される。
ステップS124の処理の実行後、コントローラ4は、ステップS822で、フリーブロック数が目標ブロック数を超えているか否かを判定する。
フリーブロック数が目標ブロック数を超えていることを判定すると(ステップS822のYES)、コントローラ4は、処理を終了する。ここでも、ホスト2からライトデータを受け取った場合、コントローラ4は、図3に示すように、ライトデータをNAND型フラッシュメモリ5のTLC書き込み先ブロック126に書き込む。
フリーブロック数が目標ブロック数を超えていないことを判定すると(ステップS822のNO)、コントローラ4は、ステップS824で、GC/コンパクション処理の対象ブロックを選択し、選択したブロックをコピー元ブロックとする。対象ブロックの選択方法の一例は、有効データ量が少ない順に選択することである。選択方法の他の例は、今後上書きされる可能性の低いコールドデータが格納されているブロックであって、WAF制限値を超えないブロックを選択することである。
ステップS824の処理の実行後、コントローラ4は、ステップS826で、GC/コンパクション処理の対象ブロック内の有効データ量Dを取得し、ステップS828で(D+B)/B≦Wであるか否かを判定する。Bは、ブロックのデータサイズである。(D+B)/Bは、現在のGC/コンパクション処理の実行によりDサイズのデータの書き込みが行われ、Bサイズのデータの書き込みが将来あった場合のWAFを示す。そのため、ステップS828の処理は、WAFがWAF制限値W以上悪化するか否かを判定する。
(D+B)/B≦Wであることを判定すると(ステップS828のYES)、コントローラ4は、ステップS830で、GC/コンパクション処理を実行する。ステップS830の処理の実行後、コントローラ4は、ステップS822の処理を実行する。
(D+B)/B≦Wでないことを判定すると(ステップS828のNO)、コントローラ4は、処理を終了する。
図32は、GC/コンパクション処理の実行とWAFの変化の一例を示す図である。ここでは、フリーブロックの目標数が3であり、ブロックBLK1、BLK2、BLK3がコピー元ブロックとして選択され得る場合を想定する。ブロックBLK1、BLK2、BLK3の有効データ量はそれぞれ25%、50%、75%とする。WAF制限値Wは1.5とする。
先ず、ブロックBLK1がコピー元ブロックとして選択されると、WAFは1.25となり、ステップS828の判定はYESとなり、ステップS803でGC/コンパクション処理が実行される。
次に、ブロックBLK2がコピー元ブロックとして選択されると、WAFは1.5となり、ステップS828の判定はYESとなり、ステップS803でGC/コンパクション処理が実行される。
最後に、ブロックBLK3がコピー元ブロックとして選択されると、WAFは1.75となり、ステップS828の判定はNOとなり、GC/コンパクション処理が実行されない。
第9実施形態によれば、コピー元ブロックの選択の際、GC/コンパクション処理の実行によりWAFが悪化しそうな場合、コピー元ブロックとして選択しないので、GC/コンパクション処理の実行によりNAND型フラッシュメモリ5の疲弊が進むことを防止できる。
(第10実施形態)
第9実施形態は、1回のGC/コンパクション処理の実行に関するWAFに基づきGC/コンパクション処理の実行を制御するものであるが、次に、GC/コンパクション処理の実行を開始してからのWAFの平均値に基づいてGC/コンパクション処理の実行を制御する第10実施形態を説明する。
図33は、第10実施形態に係るストレージシステム1におけるホスト2の書き込み処理の一例を示すフローチャートである。図34は、第10実施形態に係るストレージシステム1におけるSSD3の書き込み処理の一例を示すフローチャートである。図35は、第10実施形態に係るSSD3の書き込み処理におけるWAF変化の一例を示す図である。
図33に示すように、第10実施形態のホスト2の処理は、高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング、フリーブロック生成の目標容量及びWAF制限値Wを決定するステップS102G(図30)が高い書き込み性能を望むタイミング、SLC書き込み禁止タイミング、SLC書き込み許可タイミング、フリーブロック生成の目標容量及びWAF平均制限値W2を決定するステップS102Hに変更された点と、WAF制限値WをSSD3に送るステップS804(図30)がWAF制限平均値W2をSSD3に送るステップS806に変更された点が第9実施形態の処理と異なる。
図34に示すように、第10実施形態のSSD3の処理は、WAF制限値Wをホストから受け取るステップS816(図31)がWAF制限平均値W2をホストから受け取るステップS904に変更された点と、GC/コンパクション対象ブロック内の有効データを取得するステップS826(図31)の次に実行WAFの平均値を計算するステップS914が追加された点と、WAFを制限値Wと比較するステップS828(図31)がWAF平均値を制限値W2と比較するステップS916に変更された点が第9実施形態の処理と異なる。
図35は、GC/コンパクション処理の実行とWAFの変化の一例を示す図である。ここでも、フリーブロックの目標数が3であり、ブロックBLK1、BLK2、BLK3がコピー元ブロックとして選択され得る場合を想定する。ブロックBLK1、BLK2、BLK3の有効データ量はそれぞれ25%、50%、75%とする。WAF制限値W2は1.5とする。
先ず、ブロックBLK1がコピー元ブロックとして選択されると、WAFは1.25となり、ステップS916の判定はYESとなり、ステップS803でGC/コンパクション処理が実行される。
次に、ブロックBLK2がコピー元ブロックとして選択されると、WAF平均値は1.375となり、ステップS828の判定はYESとなり、ステップS803でGC/コンパクション処理が実行される。
最後に、ブロックBLK3がコピー元ブロックとして選択されると、WAFは1.5となり、ステップS828の判定はYESとなり、ステップS803でGC/コンパクション処理が実行される。
第10実施形態によっても、GC/コンパクション処理の実行によりWAFが悪化しそうな場合、GC/コンパクション処理の実行を停止するので、GC/コンパクション処理の実行によりNAND型フラッシュメモリ5の疲弊が進むことを防止できる。
なお、各実施形態を説明したが、各実施形態を組み合わせて新しい実施形態とすることも可能である。各実施形態に、それ以外の複数の実施形態の中の少なくとも一つの実施形態を組み合わせてもよい。
なお、本発明は上記の各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
1…ストレージシステム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、11…ホストI/F、12…CPU、13…NAND I/F、14…DRAM I/F、22…ライト制御部、26…GC/コンパクション制御部

Claims (17)

  1. 不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されるコントローラと、
    を具備し、ホストに接続可能なストレージデバイスであって、
    前記コントローラは、
    前記ホストから第1の指示を受け取った場合、前記ホストから受け取ったライトデータの書き込みモードとして、前記不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むための第1の書き込みモードを選択し、
    前記ホストから第2の指示を受け取った場合、前記書き込みモードとして、前記不揮発性メモリの第2の領域にメモリセル当たりにmビットのデータを書き込むための第2の書き込みモードを選択し、
    前記ホストから前記第1の書き込みモードによる書き込み時間の目標値を示す第4の指示を受け取った場合、前記第1の書き込みモードによるデータ書き込み時間が前記目標値に達すると、前記第1の書き込みモードによるデータ書き込み動作を停止し、
    前記nは1以上の正整数であ
    前記mは前記nよりも大きい正整数である、ストレージデバイス。
  2. 前記コントローラは、前記ホストから前記第1の書き込みモードによる書き込みデータ量の目標量を示す第3の指示を受け取った場合、前記第1の書き込みモードによる書き込みデータ量が前記目標量に達すると、前記第1の書き込みモードによるデータ書き込み動作を停止する、請求項記載のストレージデバイス。
  3. 前記コントローラは、前記第1の書き込みモードによるデータ書き込み動作を停止した後、前記書き込みモードとして前記第2の書き込みモードを選択する、請求項記載のストレージデバイス。
  4. 不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されるコントローラと、
    を具備し、ホストに接続可能なストレージデバイスであって、
    前記不揮発性メモリは、各々がデータ消去動作の単位である複数のブロックを含み、
    前記複数のブロックの各々は、有効データを格納しているアクティブブロック又は有効データを格納していないフリーブロックであり、
    前記コントローラは、
    前記ホストから第1の指示を受け取った場合、前記ホストから受け取ったライトデータの書き込みモードとして、前記不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むための第1の書き込みモードを選択し、
    前記ホストから第2の指示を受け取った場合、前記書き込みモードとして、前記第1の書き込みモード以外の書き込みモードを選択し、
    前記ホストから前記第2の指示を受け取った場合、さらに、前記第1の領域のフリーブロックの個数を増やすためのフリーブロック生成処理を実行し、
    前記ホストから前記フリーブロック生成処理の実行による書き込み性能の劣化度合いの許容値を示す第7の指示を受信した場合、前記フリーブロック生成処理の実行による書き込み性能の劣化度合いが前記許容値を超えないように、前記フリーブロック生成処理の実行優先度を調整し、
    前記nは1以上の正整数である、ストレージデバイス。
  5. 前記フリーブロック生成処理はガベージコレクション処理とコンパクション処理の少なくとも一方を含む、請求項記載のストレージデバイス。
  6. 前記コントローラは、前記ホストから前記フリーブロック生成処理の実行後に前記第1の領域に含まれている前記フリーブロックの総容量の目標量を示す第5の指示を受信した場合、前記第1の領域に含まれている前記フリーブロックの総容量が前記目標量に達すると、前記フリーブロック生成処理の実行を停止する、請求項記載のストレージデバイス。
  7. 前記コントローラは、前記ホストから前記フリーブロック生成処理の実行時間の目標時間を示す第6の指示を受信した場合、前記フリーブロック生成処理の実行時間が前記目標時間に達すると、前記フリーブロック生成処理の実行を停止する、請求項記載のストレージデバイス。
  8. 前記書き込み性能は、スループット又はレイテンシーを含む、請求項記載のストレージデバイス。
  9. 前記コントローラは、前記ホストから前記フリーブロック生成処理の実行後に前記第1の領域に含まれている前記フリーブロックの総容量の目標量及び前記フリーブロック生成処理の実行時間の目標時間を示す第8の指示を受信した場合、前記フリーブロック生成処理の実行後に前記第1の領域に含まれている前記フリーブロックの総容量が前記目標量に達するように、前記フリーブロック生成処理の実行優先度を調整する、請求項記載のストレージデバイス。
  10. 不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されるコントローラと、
    を具備し、ホストに接続可能なストレージデバイスであって、
    前記不揮発性メモリは、各々がデータ消去動作の単位である複数のブロックを含み、
    前記複数のブロックの各々は、有効データを格納しているアクティブブロック又は有効データを格納していないフリーブロックであり、
    前記コントローラは、
    前記ホストから第1の指示を受け取った場合、前記ホストから受け取ったライトデータの書き込みモードとして、前記不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むための第1の書き込みモードを選択し、
    前記ホストから第2の指示を受け取った場合、前記書き込みモードとして、前記第1の書き込みモード以外の書き込みモードを選択し、
    前記ホストから前記第2の指示を受け取った場合、さらに、前記第1の領域のフリーブロックの個数を増やすためのフリーブロック生成処理を実行し、
    前記ホストから前記不揮発性メモリの疲弊の進み度合いの目標値を示す第9の指示を受信した場合、1個のアクティブブロックの有効データを他のアクティブブロックにコピーするコピー動作を実行する前に、前記コピー動作の実行の結果前記不揮発性メモリの疲弊の進み度合いが前記目標値を超える場合、前記コピー動作を実行せず、
    前記nは1以上の正整数である、ストレージデバイス。
  11. 不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されるコントローラと、
    を具備し、ホストに接続可能なストレージデバイスであって、
    前記不揮発性メモリは、各々がデータ消去動作の単位である複数のブロックを含み、
    前記複数のブロックの各々は、有効データを格納しているアクティブブロック又は有効データを格納していないフリーブロックであり、
    前記コントローラは、
    前記ホストから第1の指示を受け取った場合、前記ホストから受け取ったライトデータの書き込みモードとして、前記不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むための第1の書き込みモードを選択し、
    前記ホストから第2の指示を受け取った場合、前記書き込みモードとして、前記第1の書き込みモード以外の書き込みモードを選択し、
    前記ホストから前記第2の指示を受け取った場合、さらに、前記第1の領域のフリーブロックの個数を増やすためのフリーブロック生成処理を実行し、
    前記ホストから前記不揮発性メモリの疲弊の進み度合いの目標値を示す第10の指示を受信した場合、1個のアクティブブロックの有効データを他のアクティブブロックにコピーするコピー動作を実行する前に、前記コピー動作の実行の結果前記フリーブロック生成処理の実行開始時からの前記不揮発性メモリの疲弊の進み度合いの平均値が前記目標値を超える場合、前記コピー動作を実行せず、
    前記nは1以上の正整数である、ストレージデバイス。
  12. ホストと、
    前記ホストに接続可能なストレージデバイスと、
    を具備するストレージシステムであって、
    前記ホストは、前記ストレージデバイスに性能を優先させる場合、第1の指示を前記ストレージデバイスに送り、前記ストレージデバイスに容量を優先させる場合、第2の指示を前記ストレージデバイスに送り、
    前記ストレージデバイスは、
    不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されるコントローラと、を具備し、
    前記コントローラは、
    前記ホストから前記第1の指示を受け取った場合、前記ホストから受け取ったライトデータの書き込みモードとして、前記不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むための第1の書き込みモードを選択し、
    前記ホストから前記第2の指示を受け取った場合、前記書き込みモードとして、前記不揮発性メモリの第2の領域にメモリセル当たりにmビットのデータを書き込むための第2の書き込みモードを選択し、
    前記ホストから前記第1の書き込みモードによる書き込み時間の目標値を示す第4の指示を受け取った場合、前記第1の書き込みモードによるデータ書き込み時間が前記目標値に達すると、前記第1の書き込みモードによるデータ書き込み動作を停止し、
    前記nは1以上の正整数であ
    前記mは前記nよりも大きい正整数である、ストレージシステム。
  13. 不揮発性メモリを制御する制御方法であって、
    ホストから第1の指示を受け取った場合、前記ホストから受け取ったライトデータの書き込みモードとして、前記不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むための第1の書き込みモードを選択することと、
    前記ホストから第2の指示を受け取った場合、前記書き込みモードとして、前記不揮発性メモリの第2の領域にメモリセル当たりにmビットのデータを書き込むための第2の書き込みモードを選択することと、
    前記ホストから前記第1の書き込みモードによる書き込み時間の目標値を示す第4の指示を受け取った場合、前記第1の書き込みモードによるデータ書き込み時間が前記目標値に達すると、前記第1の書き込みモードによるデータ書き込み動作を停止することと、を具備し、
    前記nは1以上の正整数であ
    前記mは前記nよりも大きい正整数である、制御方法。
  14. 前記ホストから前記第1の書き込みモードによる書き込みデータ量の目標量を示す第3の指示を受け取った場合、前記第1の書き込みモードによる書き込みデータ量が前記目標量に達すると、前記第1の書き込みモードによるデータ書き込み動作を停止することをさらに具備する、請求項13記載の制御方法。
  15. 前記第1の書き込みモードによるデータ書き込み動作を停止した後、前記書き込みモードとして前記第2の書き込みモードを選択することをさらに具備する、請求項13記載の制御方法。
  16. 不揮発性メモリを制御する制御方法であって、
    前記不揮発性メモリは、各々がデータ消去動作の単位である複数のブロックを含み、前記複数のブロックの各々は、有効データを格納しているアクティブブロック又は有効データを格納していないフリーブロックであり、
    ホストから第1の書き込みモードによる書き込み処理の実施を許可する第1の指示を受け取った場合、前記ホストから受け取ったライトデータの書き込みモードとして、前記第1の書き込みモードを選択し、前記第1の書き込みモードにおいて、前記不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むことと、
    前記ホストから前記第1の書き込みモードによる書き込み処理の実施を禁止する第2の指示を受け取った場合、前記書き込みモードとして、前記第1の書き込みモード以外の第2の書き込みモードを選択し、前記第2の書き込みモードにおいて、前記不揮発性メモリの第2の領域にメモリセル当たりにmビットのデータを書き込むことと、
    前記第1の書き込みモードによる書き込み処理の実施が禁止されている第1の状態で、前記第1の領域のフリーブロックの個数を増やすためのフリーブロック生成処理を実行することと、
    前記ホストから前記フリーブロック生成処理の実行後に前記第1の領域に含まれている前記フリーブロックの総容量の目標量を示す第5の指示を受信した場合、前記第1の領域に含まれている前記フリーブロックの総容量が前記目標量に達すると、前記フリーブロック生成処理の実行を停止し、前記フリーブロック生成処理の実行を停止した後も、前記第1の状態を維持することと、
    前記ホストから前記第1の指示を受け取った場合、前記第1の状態を解除し、前記書き込みモードとして前記第1の書き込みモードを選択することと、を具備し、
    前記nは1以上の正整数であり、前記mは前記nよりも大きい正整数である、
    制御方法。
  17. 不揮発性メモリを制御する制御方法であって、
    前記不揮発性メモリは、各々がデータ消去動作の単位である複数のブロックを含み、前記複数のブロックの各々は、有効データを格納しているアクティブブロック又は有効データを格納していないフリーブロックであり、
    ホストから第1の書き込みモードによる書き込み処理の実施を許可する第1の指示を受け取った場合、前記ホストから受け取ったライトデータの書き込みモードとして、前記第1の書き込みモードを選択し、前記第1の書き込みモードにおいて、前記不揮発性メモリの第1の領域にメモリセル当たりにnビットのデータを書き込むことと、
    前記ホストから前記第1の書き込みモードによる書き込み処理の実施を禁止する第2の指示を受け取った場合、前記書き込みモードとして、前記第1の書き込みモード以外の第2の書き込みモードを選択し、前記第2の書き込みモードにおいて、前記不揮発性メモリの第2の領域にメモリセル当たりにmビットのデータを書き込むことと、
    前記第1の書き込みモードによる書き込み処理の実施が禁止されている第1の状態で、前記第1の領域のフリーブロックの個数を増やすためのフリーブロック生成処理を実行することと、
    前記ホストから前記フリーブロック生成処理の実行時間の目標時間を示す第6の指示を受信した場合、前記フリーブロック生成処理の実行時間が前記目標時間に達すると、前記フリーブロック生成処理の実行を停止し、前記フリーブロック生成処理の実行を停止した後も、前記第1の状態を維持することと、
    前記ホストから前記第1の指示を受け取った場合、前記第1の状態を解除し、前記書き込みモードとして前記第1の書き込みモードを選択することと、を具備し、
    前記nは1以上の正整数であり、前記mは前記nよりも大きい正整数である、
    制御方法。
JP2020109978A 2020-06-25 2020-06-25 ストレージデバイス、ストレージシステム及び制御方法 Active JP7490469B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020109978A JP7490469B2 (ja) 2020-06-25 2020-06-25 ストレージデバイス、ストレージシステム及び制御方法
US17/201,559 US11573717B2 (en) 2020-06-25 2021-03-15 Storage device having a controller configured to select modes as write modes based on received instructions, storage system, and control method
US18/089,904 US20230161492A1 (en) 2020-06-25 2022-12-28 Storage device having a controller configured to select modes as write modes based on received instructions, storage system, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020109978A JP7490469B2 (ja) 2020-06-25 2020-06-25 ストレージデバイス、ストレージシステム及び制御方法

Publications (2)

Publication Number Publication Date
JP2022007191A JP2022007191A (ja) 2022-01-13
JP7490469B2 true JP7490469B2 (ja) 2024-05-27

Family

ID=79031998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020109978A Active JP7490469B2 (ja) 2020-06-25 2020-06-25 ストレージデバイス、ストレージシステム及び制御方法

Country Status (2)

Country Link
US (2) US11573717B2 (ja)
JP (1) JP7490469B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11709617B2 (en) * 2020-08-19 2023-07-25 Micron Technology, Inc. Multi-stage memory device performance notification
US11494299B2 (en) 2021-02-18 2022-11-08 Silicon Motion, Inc. Garbage collection operation management with early garbage collection starting point
US20220300184A1 (en) * 2021-03-19 2022-09-22 Silicon Motion, Inc. Method of performing wear-leveling operation in flash memory and related controller and storage system
JP2022146531A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム
US11797228B2 (en) * 2021-06-24 2023-10-24 Western Digital Technologies, Inc. Efficient handling of background operations for improving sustained performance of host reads and writes
US12112062B2 (en) 2021-06-24 2024-10-08 SanDisk Technologies, Inc. Write performance by relocation during sequential reads
US11797199B2 (en) * 2021-07-06 2023-10-24 International Business Machines Corporation Balancing utilization of memory pools of physical blocks of differing storage densities
US12061819B2 (en) * 2021-12-06 2024-08-13 Micron Technology, Inc. Managing single-level and multi-level programming operations
CN118369721A (zh) * 2022-11-17 2024-07-19 长江存储科技有限责任公司 存储系统操作方法、存储控制器、存储系统及电子设备
CN116909492B (zh) * 2023-09-12 2023-12-08 合肥康芯威存储技术有限公司 一种存储设备及其控制方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161706A1 (en) 2005-01-20 2006-07-20 International Business Machines Corporation Storage controller and methods for using the same
JP2011192260A (ja) 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2013196161A (ja) 2012-03-16 2013-09-30 Toshiba Corp 半導体記憶装置の制御方法
JP2015088121A (ja) 2013-11-01 2015-05-07 株式会社東芝 メモリシステムおよび方法
JP2015232888A (ja) 2015-07-09 2015-12-24 株式会社日立製作所 ストレージシステム
US20160313943A1 (en) 2015-04-24 2016-10-27 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US20170068615A1 (en) 2015-09-09 2017-03-09 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
JP2018120439A (ja) 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2019057193A (ja) 2017-09-22 2019-04-11 東芝メモリ株式会社 メモリシステム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
JP2010198407A (ja) 2009-02-26 2010-09-09 Sony Corp 情報処理装置、およびデータ記録制御方法、並びにプログラム
KR101662827B1 (ko) * 2010-07-02 2016-10-06 삼성전자주식회사 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US9569352B2 (en) * 2013-03-14 2017-02-14 Sandisk Technologies Llc Storage module and method for regulating garbage collection operations based on write activity of a host
JP6331773B2 (ja) * 2014-06-30 2018-05-30 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
US10031670B2 (en) * 2015-09-04 2018-07-24 Toshiba Memory Corporation Control unit and control method for controlling writes and background operations of multiple semiconductor storage devices
US10193579B2 (en) * 2015-09-08 2019-01-29 Toshiba Memory Corporation Storage control device, storage system, and storage control method
US10229049B2 (en) 2015-12-17 2019-03-12 Toshiba Memory Corporation Storage system that performs host-initiated garbage collection
JP6968016B2 (ja) 2018-03-22 2021-11-17 キオクシア株式会社 ストレージデバイスおよびコンピュータシステム
KR20200110547A (ko) * 2019-03-14 2020-09-24 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치
US11188461B2 (en) * 2019-06-19 2021-11-30 Micron Technology, Inc. Garbage collection adapted to memory device life expectancy
KR102653659B1 (ko) * 2019-07-05 2024-04-03 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR102694542B1 (ko) * 2019-11-07 2024-08-13 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR20210060867A (ko) * 2019-11-19 2021-05-27 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11244717B2 (en) * 2019-12-02 2022-02-08 Micron Technology, Inc. Write operation techniques for memory systems

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161706A1 (en) 2005-01-20 2006-07-20 International Business Machines Corporation Storage controller and methods for using the same
JP2011192260A (ja) 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2013196161A (ja) 2012-03-16 2013-09-30 Toshiba Corp 半導体記憶装置の制御方法
JP2015088121A (ja) 2013-11-01 2015-05-07 株式会社東芝 メモリシステムおよび方法
US20160313943A1 (en) 2015-04-24 2016-10-27 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
JP2015232888A (ja) 2015-07-09 2015-12-24 株式会社日立製作所 ストレージシステム
US20170068615A1 (en) 2015-09-09 2017-03-09 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
JP2018120439A (ja) 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2019057193A (ja) 2017-09-22 2019-04-11 東芝メモリ株式会社 メモリシステム

Also Published As

Publication number Publication date
JP2022007191A (ja) 2022-01-13
US20230161492A1 (en) 2023-05-25
US11573717B2 (en) 2023-02-07
US20210405900A1 (en) 2021-12-30

Similar Documents

Publication Publication Date Title
JP7490469B2 (ja) ストレージデバイス、ストレージシステム及び制御方法
US11355197B2 (en) Memory system with nonvolatile cache and control method thereof
US10545863B2 (en) Memory system and method for controlling nonvolatile memory
US11436136B2 (en) Memory system including non-volatile buffer and control method thereof
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
KR101551584B1 (ko) 하이브리드 slc/mlc 메모리 내의 블록 관리 방식들
TWI474324B (zh) 平均讀寫記憶元件的方法及記憶體系統
US10229049B2 (en) Storage system that performs host-initiated garbage collection
US10031670B2 (en) Control unit and control method for controlling writes and background operations of multiple semiconductor storage devices
US20200073795A1 (en) Memory system and method
US10782909B2 (en) Data storage device including shared memory area and dedicated memory area
JP6697410B2 (ja) メモリシステムおよび制御方法
US20200218451A1 (en) Storage device having dual access procedures
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20190265910A1 (en) Memory system
TW202201232A (zh) 記憶體系統及控制方法
KR20220049397A (ko) 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US12079499B2 (en) Managing superblock writes using data transfer lists
US20240329882A1 (en) Memory system and information processing system
JP2024085796A (ja) メモリシステム
JP2024033081A (ja) メモリシステムおよび制御方法
JP2010250534A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
TW202414217A (zh) 資料處理方法及對應之資料儲存裝置
TW202414221A (zh) 資料處理方法及對應之資料儲存裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240515

R150 Certificate of patent or registration of utility model

Ref document number: 7490469

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150