JP6716757B2 - Memory system and control method - Google Patents

Memory system and control method Download PDF

Info

Publication number
JP6716757B2
JP6716757B2 JP2019113376A JP2019113376A JP6716757B2 JP 6716757 B2 JP6716757 B2 JP 6716757B2 JP 2019113376 A JP2019113376 A JP 2019113376A JP 2019113376 A JP2019113376 A JP 2019113376A JP 6716757 B2 JP6716757 B2 JP 6716757B2
Authority
JP
Japan
Prior art keywords
namespace
area
data
request
physical blocks
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
JP2019113376A
Other languages
Japanese (ja)
Other versions
JP2019179571A (en
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 JP2019113376A priority Critical patent/JP6716757B2/en
Publication of JP2019179571A publication Critical patent/JP2019179571A/en
Application granted granted Critical
Publication of JP6716757B2 publication Critical patent/JP6716757B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。 Embodiments of the present invention relate to a technique for controlling a non-volatile memory.

近年、不揮発性メモリを備えるメモリシステムが広く普及している。 In recent years, a memory system including a non-volatile memory has become widespread.

このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。SSDは、その低電力消費、高性能という特徴により、様々なコンピュータのメインストレージとして使用されている。 A NAND flash technology-based solid state drive (SSD) is known as one of such memory systems. SSDs are used as main storages in various computers due to their low power consumption and high performance.

SSDの種類には、シングルレベルセル(SLC)−SSDのような小容量・高速SSD、マルチレベルセル(MLC)−SSD、トリプルレベルセル(TLC)−SSDのような大容量SSDなどがある。 Types of SSD include small-capacity/high-speed SSD such as single-level cell (SLC)-SSD, multi-level cell (MLC)-SSD, and large-capacity SSD such as triple-level cell (TLC)-SSD.

通常、データセンターにおいては、これら複数種のSSDは、用途に応じて選択的に使用される。 Usually, in a data center, these plural kinds of SSDs are selectively used according to the application.

米国特許第8621328号明細書U.S. Pat. No. 8621328

しかし、データ種類毎に専用の種類のSSDを使用することは、データセンターのTCO(Total Cost of Ownership)を増加させる要因となる。 However, using a dedicated SSD for each data type is a factor that increases the TCO (Total Cost of Ownership) of the data center.

本発明が解決しようとする課題は、様々な種類のデータの記憶に有用なメモリシステムを提供することである。 The problem to be solved by the present invention is to provide a memory system useful for storing various types of data.

実施形態によれば、メモリシステムは、複数の物理ブロックを含む不揮発性メモリと、前記不揮発性メモリを複数の領域に論理的に分割するための複数のネームスペースを管理するように構成されたコントローラとを具備する。前記コントローラは、第1ネームスペースの作成を要求する第1の要求をホストデバイスから受信する。前記第1の要求は前記第1ネームスペース用の論理アドレスの数と前記第1ネームスペース用に確保すべき物理リソースの量の双方を指定し、前記物理リソースの量は前記第1ネームスペース用に確保すべき物理ブロックの個数または前記第1ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示す。前記コントローラは、前記第1ネームスペースを作成し、前記第1の要求によって指定された前記物理リソースの量が前記第1ネームスペース用に確保すべき物理ブロックの個数を示す場合、前記第1の要求によって指定された個数の物理ブロックを前記第1ネームスペースに割り当て、前記第1の要求によって指定された個数の物理ブロックの容量から前記第1の要求によって指定された数の論理アドレスがマッピングされるユーザ領域の容量を引いた残りの容量を前記第1ネームスペースのオーバープロビジョン領域として割り当て、前記第1の要求によって指定された前記物理リソースの量が前記第1ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示す場合、前記第1の要求によって指定された個数の物理ブロックを前記第1ネームスペースのオーバープロビジョン領域として割り当てる。前記コントローラは、前記第1ネームスペースのIDに関連付けられたライトデータを前記第1ネームスペースに対応する前記不揮発性メモリの第1領域にライトする。 According to an embodiment, a memory system includes a non-volatile memory including a plurality of physical blocks, and a controller configured to manage a plurality of namespaces for logically dividing the non-volatile memory into a plurality of areas. And. The controller receives a first request from a host device requesting creation of a first namespace. The first request specifies both the number of logical addresses for the first namespace and the amount of physical resources to reserve for the first namespace, the amount of physical resources for the first namespace. Indicates the number of physical blocks to be reserved or the number of physical blocks to be reserved for the overprovision area of the first name space. When the controller creates the first namespace and the amount of the physical resource designated by the first request indicates the number of physical blocks to be reserved for the first namespace, the first The number of physical blocks specified by the request is allocated to the first namespace, and the number of logical addresses specified by the first request is mapped from the capacity of the number of physical blocks specified by the first request. The remaining capacity less the capacity of the user area is allocated as an overprovision area of the first namespace, and the amount of the physical resource designated by the first request is the overprovision area of the first namespace. When indicating the number of physical blocks to be reserved for use, the number of physical blocks designated by the first request is allocated as an overprovision area of the first namespace. The controller writes the write data associated with the ID of the first namespace into the first area of the non-volatile memory corresponding to the first namespace.

実施形態に係るメモリシステムの構成例を示すブロック図。3 is a block diagram showing a configuration example of a memory system according to an embodiment. FIG. 通常の階層化ストレージシステムと単一階層ストレージシステムとの関係を説明するための図。FIG. 3 is a diagram for explaining the relationship between a normal tiered storage system and a single tiered storage system. 同実施形態のメモリシステム内に設定される複数の階層(tier)を説明するための図。FIG. 3 is a diagram for explaining a plurality of layers (tiers) set in the memory system of the same embodiment. 同実施形態のメモリシステム内の複数の領域とこれら領域にライトされるデータとの関係を説明するための図。FIG. 3 is an exemplary view for explaining a relationship between a plurality of areas in the memory system of the same embodiment and data written in these areas. 同実施形態のメモリシステムのネームスペース管理を説明するための図。FIG. 3 is an exemplary view for explaining namespace management of the memory system of the same embodiment. 同実施形態のメモリシステムに適用される拡張ネームスペース管理コマンドを説明するための図。FIG. 5 is an exemplary view for explaining an extended namespace management command applied to the memory system of the same embodiment. 同実施形態のメモリシステムによって実行される物理リソース割り当て処理のシーケンスを示す図。FIG. 4 is an exemplary view showing a sequence of physical resource allocation processing executed by the memory system of the embodiment. 同実施形態のメモリシステムによって実行される物理リソース割り当て処理の手順を示すフローチャート。6 is an exemplary flowchart showing a procedure of physical resource allocation processing executed by the memory system of the embodiment. 同実施形態のメモリシステムに接続されるホストによって実行されるライトコマンド送出処理の手順を示すフローチャート。6 is an exemplary flowchart showing the procedure of a write command transmission process executed by a host connected to the memory system of the embodiment. 同実施形態のメモリシステムに適用されるライトコマンドを説明するための図。FIG. 4 is an exemplary view for explaining a write command applied to the memory system of the same embodiment. 同実施形態のメモリシステムによって実行されるライト動作の処理シーケンスを示す図。FIG. 3 is a diagram showing a processing sequence of a write operation executed by the memory system of the same embodiment. 同実施形態のメモリシステムによって実行される、ガベージコレクション動作およびコピー先フリーブロック割り当て動作を説明するための図。FIG. 6 is an exemplary view for explaining a garbage collection operation and a copy destination free block allocation operation, which are executed by the memory system of the same embodiment. 同実施形態のメモリシステムによって実行されるライトデータ量カウント処理を説明するための図。FIG. 6 is an exemplary view for explaining a write data amount counting process executed by the memory system of the embodiment. 同実施形態のメモリシステムによって実行されるライトデータ量カウント処理の手順を示すフローチャート。6 is an exemplary flowchart showing a procedure of write data amount counting processing executed by the memory system of the embodiment. 同実施形態のメモリシステムによって実行されるライトアンプリフィケーション(WA)算出処理の手順を示すフローチャート。6 is an exemplary flowchart showing the procedure of a write amplification (WA) calculation process executed by the memory system of the embodiment. 同実施形態のメモリシステムからホストに送信されるリターンデータの例を示す図。FIG. 6 is a diagram showing an example of return data transmitted from the memory system of the embodiment to the host. 同実施形態のメモリシステムによって実行されるカウンタリセット処理の手順を示すフローチャート。6 is an exemplary flowchart showing a procedure of counter reset processing executed by the memory system of the embodiment. 同実施形態のメモリシステムに適用される拡張ガベージコレクション制御コマンドを示す図。FIG. 6 is a view showing an extended garbage collection control command applied to the memory system of the same embodiment. 同実施形態のメモリシステムによって実行されるガベージコレクション動作の手順を示すフローチャート。5 is an exemplary flowchart showing a procedure of a garbage collection operation executed by the memory system of the same embodiment. 同実施形態のメモリシステムによって実行される、エンデュランスコードとECCの比率を制御する処理を説明するための図。FIG. 5 is an exemplary view for explaining a process of controlling the ratio of the endurance code and the ECC, which is executed by the memory system of the same embodiment. 同実施形態のメモリシステムによって実行されるエンコード処理およびデコード処理を説明するための図。FIG. 6 is an exemplary view for explaining an encoding process and a decoding process executed by the memory system of the same embodiment. 同実施形態のメモリシステム内のエンデュランスコードエンコーダの構成例を示すブロック図。3 is a block diagram showing a configuration example of an endurance code encoder in the memory system of the same embodiment. FIG. 同実施形態のメモリシステムによって実行されるエンコード処理の手順を示すフローチャート。6 is an exemplary flowchart showing the procedure of an encoding process executed by the memory system of the same embodiment. 同実施形態のメモリシステムによって実行されるライト制御処理の手順を示すフローチャート。6 is an exemplary flowchart showing the procedure of a write control process executed by the memory system of the embodiment. 同実施形態のメモリシステムに適用されるフラッシュアレイの構成を示す図。FIG. 3 is a diagram showing a configuration of a flash array applied to the memory system of the same embodiment. 同実施形態のフラッシュアレイストレージの構成を示す図。The figure which shows the structure of the flash array storage of the same embodiment. 同実施形態のフラッシュアレイストレージの別の構成を示す図。The figure which shows another structure of the flash array storage of the same embodiment. 同実施形態のフラッシュアレイストレージ内のSSDそれぞれの総容量と階層に割り当てられるべき物理リソースの量との関係を説明するための図。FIG. 3 is an exemplary view for explaining the relationship between the total capacity of each SSD in the flash array storage of the embodiment and the amount of physical resources to be assigned to a tier. 同実施形態のフラッシュアレイストレージのライト動作を説明するための図。FIG. 6 is a diagram for explaining a write operation of the flash array storage of the same embodiment. 同実施形態のホストの構成例を示すブロック図。The block diagram which shows the structural example of the host of the same embodiment. 同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示す図。FIG. 3 is a diagram showing a configuration example of a computer including a memory system and a host of the same embodiment.

以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
Hereinafter, embodiments will be described with reference to the drawings.
First, the configuration of an information processing system 1 including a memory system according to an embodiment will be described with reference to FIG.

このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。 This memory system is a semiconductor storage device configured to write data to a non-volatile memory and read data from the non-volatile memory. This memory system is realized, for example, as a solid state drive (SSD) 3 based on NAND flash technology.

情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、サーバ、パーソナルコンピュータのような情報処理装置である。 The information processing system 1 includes a host (host device) 2 and an SSD 3. The host 2 is an information processing device such as a server or a personal computer.

SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。 The SSD 3 can be used as a main storage of the information processing device that functions as the host 2. The SSD 3 may be built in the information processing device, or may be connected to the information processing device via a cable or a network.

ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(登録商標),Fibre channel等が使用し得る。 As interfaces for interconnecting the host 2 and SSD 3, SCSI, Serial Attached SCSI (SAS), ATA, Serial ATA (SATA), PCI Express (PCIe), Ethernet (registered trademark), Fiber channel, etc. are used. obtain.

SSD3は、コントローラ4、不揮発性メモリ(NANDメモリ)5、およびDRAM6を備える。NANDメモリ5は、限定されないが、複数のNANDフラッシュメモリチップを含んでいてもよい。 The SSD 3 includes a controller 4, a non-volatile memory (NAND memory) 5, and a DRAM 6. The NAND memory 5 may include, but is not limited to, a plurality of NAND flash memory chips.

NANDメモリ5は、多数のNANDブロック(物理ブロック)B0〜Bm−1を含む。物理ブロックB0〜Bm−1は、消去単位として機能する。物理ブロックは「ブロック」または「消去ブロック」と称されることもある。 The NAND memory 5 includes a large number of NAND blocks (physical blocks) B0 to Bm-1. The physical blocks B0 to Bm-1 function as erase units. The physical block is sometimes referred to as a “block” or an “erase block”.

物理ブロックB0〜Bm−1は多数のページ(物理ページ)を含む。つまり、物理ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。NANDメモリ5においては、データのリードおよびデータのライトはページ単位で実行される。データの消去は物理ブロック単位で実行される。 The physical blocks B0 to Bm-1 include a large number of pages (physical pages). That is, each of the physical blocks B0 to Bm-1 includes pages P0 to Pn-1. In the NAND memory 5, data reading and data writing are executed in page units. Data is erased in physical block units.

コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNANDメモリ5に電気的に結合されている。コントローラ4は、NANDメモリ5のデータ管理とNANDメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。 The controller 4 is electrically coupled to the NAND memory 5 which is a non-volatile memory via a NAND interface 13 such as Toggle and ONFI. The controller 4 may function as a flash translation layer (FTL) configured to perform data management of the NAND memory 5 and block management of the NAND memory 5.

データ管理には、(1)論理ブロックアドレス(LBA)と物理アドレスとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。LBAと物理アドレスとの間のマッピングの管理は、ルックアップテーブル(LUT)33を用いて実行される。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNANDメモリ5内の記憶位置を示す。物理アドレスは、物理ページアドレスと物理ブロックアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全ての物理ブロックに割り当てられている。 The data management includes (1) management of mapping information indicating a correspondence relationship between a logical block address (LBA) and a physical address, and (2) hiding read/write in page units and erase operation in block units. Processing, etc. are included. The management of the mapping between the LBA and the physical address is performed using the look-up table (LUT) 33. The physical address corresponding to a certain LBA indicates the storage position in the NAND memory 5 where the data of this LBA is written. The physical address includes a physical page address and a physical block address. Physical page addresses are assigned to all pages, and physical block addresses are assigned to all physical blocks.

ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。 Data can be written to the page only once per erase cycle.

このため、コントローラ4は、同じLBAへのライト(上書き)を、NANDメモリ5上の別のページにマッピングする。つまり、コントローラ4は、この別のページにデータをライトする。そして、コントローラ4は、ルックアップテーブル(LUT)33を更新して、このLBAをこの別のページに関連付けると共に、元のページ(つまりこのLBAが関連付けられていた古いデータ)を無効化する。 Therefore, the controller 4 maps a write (overwrite) to the same LBA to another page on the NAND memory 5. That is, the controller 4 writes data to this other page. Then, the controller 4 updates the lookup table (LUT) 33 to associate this LBA with this other page and invalidates the original page (that is, the old data with which this LBA was associated).

ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、物理ブロックそれぞれのプログラム/イレーズ回数を平準化するための動作である。 Block management includes bad block management, wear leveling, garbage collection, and the like. Wear leveling is an operation for leveling the program/erase count of each physical block.

ガベージコレクションは、NANDメモリ5内のフリースペースを作り出すための動作である。このガベージコレクション動作は、NANDメモリ5のフリーブロックの個数を増やすため、有効データと無効データとが混在する幾つかの対象ブロック内の全ての有効データを別のブロック(例えばフリーブロック)にコピーする。そして、ガベージコレクション動作は、ルックアップテーブル(LUT)33を更新して、コピーされた有効データのLBAそれぞれを正しい物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみなったブロックはフリーブロックとして開放される。これによって、このブロックは消去後に再利用することが可能となる。 Garbage collection is an operation for creating a free space in the NAND memory 5. In this garbage collection operation, in order to increase the number of free blocks in the NAND memory 5, all valid data in some target blocks in which valid data and invalid data are mixed are copied to another block (for example, free block). .. Then, the garbage collection operation updates the look-up table (LUT) 33 to map each LBA of the copied valid data to the correct physical address. By copying the valid data to another block, the block regarded as the invalid data is released as a free block. This allows this block to be reused after being erased.

ホスト2は、ライトコマンドをSSD3に送出する。このライトコマンドは、ライトデータ(つまり書き込むべきデータ)の論理アドレス(開始論理アドレス)と、転送長とを含む。この実施形態においては、LBAが論理アドレスとして使用されるが、他の実施形態においてはオブジェクトIDが論理アドレスとして使用されても良い。LBAは、論理セクタ(サイズ: 例えば512バイト)に付与されるシリアル番号によって表現される。シリアル番号はゼロから始まる。SSD3のコントローラ4は、ライトコマンド内の開始論理アドレス(Starting LBA)と転送長とによって指定されるライトデータを、NANDメモリ5内の物理ブロックの物理ページにライトする。さらに、コントローラ4は、ルックアップテーブル(LUT)33を更新することによって、ライトされたデータに対応するLBAを、このデータがライトされた物理記憶位置に対応する物理アドレスにマッピングする。 The host 2 sends a write command to the SSD 3. This write command includes the logical address (start logical address) of the write data (that is, the data to be written) and the transfer length. In this embodiment, LBA is used as the logical address, but in other embodiments the object ID may be used as the logical address. The LBA is represented by a serial number given to a logical sector (size: 512 bytes, for example). Serial numbers start from zero. The controller 4 of the SSD 3 writes the write data specified by the starting logical address (Starting LBA) in the write command and the transfer length to the physical page of the physical block in the NAND memory 5. Further, the controller 4 updates the look-up table (LUT) 33 to map the LBA corresponding to the written data to the physical address corresponding to the physical storage location where the data is written.

次に、コントローラ4の構成について説明する。 Next, the configuration of the controller 4 will be described.

コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15は、バス10を介して相互接続される。 The controller 4 includes a host interface 11, a CPU 12, a NAND interface 13, a DRAM interface 14, an SRAM 15, and the like. The CPU 12, NAND interface 13, DRAM interface 14, and SRAM 15 are interconnected via the bus 10.

ホストインタフェース11は、ホスト2から様々なコマンド(ライトコマンド、リードコマンド、拡張ネームスペース管理コマンド、拡張ガベージコレクション制御コマンド、アンマップ(UNMAP)コマンド、等)を受信する。 The host interface 11 receives various commands (write command, read command, extended namespace management command, extended garbage collection control command, unmap (UNMAP) command, etc.) from the host 2.

ライトコマンドは、SSD3に対し、このライトコマンドによって指定されたデータをライトするように要求する。ライトコマンドは、先頭の論理ブロックのLBAと、転送長(論理ブロックの数)とを含む。リードコマンドは、SSD3に対し、このリードコマンドによって指定されたデータをリードするように要求する。リードコマンドは、先頭の論理ブロックのLBAと、転送長(論理ブロックの数)とを含む。 The write command requests the SSD 3 to write the data designated by this write command. The write command includes the LBA of the leading logical block and the transfer length (the number of logical blocks). The read command requests the SSD 3 to read the data designated by this read command. The read command includes the LBA of the leading logical block and the transfer length (the number of logical blocks).

拡張ネームスペース管理コマンドは、通常のネームスペース管理コマンドの拡張コマンドである。 The extended namespace management command is an extended command of the ordinary namespace management command.

一般に、ホストソフトウェアが指定できるのは、ネームスペース用の論理ブロックアドレス(LBA)の数のみであり、実際にこのネームスペース用に割り当てられるべき物理ブロックの個数(不揮発性メモリ容量)を指定することはできない。すなわち、通常、ネームスペースのサイズはそのネームスペース作成動作において要求されたLBAの数に基づく。通常のSSDでは、このネームスペース用に割り当てられる物理ブロックの個数はSSD内のコントローラによって決定されてしまう。例えば、ネームスペース用に要求されたLBAの数に対応するサイズが90Mバイトであり、1つの物理ブロックの容量が100Mバイトであるならば、通常のSSDのコントローラは、1つの物理ブロックをこのネームスペース用に割り当てるかもしれない。あるいは、ネームスペース用に要求されたLBAの数に対応するサイズが120Mバイトであり、1つの物理ブロックの容量が100Mバイトであるならば、通常のSSDのコントローラは、2つの物理ブロックをこのネームスペース用に割り当てるかもしれない。しかし、このようなSSD依存の物理ブロック割り当て方法では、ホストソフトウェアが、異なる特徴(耐久性)を備えたネームスペースそれぞれの作成をSSDに要求することはできない。 Generally, the host software can specify only the number of logical block addresses (LBA) for the namespace, and specify the number of physical blocks (nonvolatile memory capacity) that should be actually allocated for this namespace. I can't. That is, typically the size of a namespace is based on the number of LBAs requested in the create namespace operation. In a normal SSD, the number of physical blocks allocated for this namespace is determined by the controller in the SSD. For example, if the size corresponding to the number of LBAs requested for the namespace is 90 Mbytes and the capacity of one physical block is 100 Mbytes, a normal SSD controller will allocate one physical block to this name. May be allocated for space. Alternatively, if the size corresponding to the number of LBAs requested for the namespace is 120 Mbytes and the capacity of one physical block is 100 Mbytes, a normal SSD controller will use two physical blocks for this name. May be allocated for space. However, in such an SSD-dependent physical block allocation method, the host software cannot request the SSD to create each namespace having different characteristics (durability).

拡張ネームスペース管理コマンドは、SSD3に対し、ネームスペース用の論理ブロックアドレス(LBA)の数を指定できるだけでなく、SSD3に対し、このネームスペースのために割り当てるべき物理ブロックの個数を指定することができる。つまり、拡張ネームスペース管理コマンドは、作成されるべきネームスペース用に確保されるべき物理リソースの量(物理ブロックの個数)を示すパラメータを含む。拡張ネームスペース管理コマンドは、ホスト2(ホストソフトウェア)が、ホスト2内のワークロードに適した個数の物理ブロックをネームスペースそれぞれのために確保することを可能にする。通常、ネームスペースに割り当てられる物理ブロックの数が増えるほど、そのネームスペースの耐久性を高めることができる。したがって、ホストソフトウェアは、拡張ネームスペース管理コマンドを使用することにより、異なる特徴(耐久性)を備えたネームスペースそれぞれを作成することができる。 The extended namespace management command can specify not only the number of logical block addresses (LBA) for a namespace to SSD3 but also the number of physical blocks to be allocated for this namespace to SSD3. it can. That is, the extended namespace management command includes a parameter indicating the amount of physical resources (the number of physical blocks) to be reserved for the namespace to be created. The extended namespace management command allows host 2 (host software) to reserve an appropriate number of physical blocks for the workload in host 2 for each namespace. In general, the more physical blocks allocated to a namespace, the more durable that namespace can be. Therefore, the host software can create each namespace with different characteristics (durability) by using the extended namespace management command.

拡張ガベージコレクション制御コマンドは、ホスト2によってSSD3のガベージコレクション動作を制御するためのホスト・イニシエーティッド・ガベージコレクションコマンドの拡張コマンドである。拡張ガベージコレクション制御コマンドは、SSD3に対し、ガベージコレクションの対象とすべきネームスペースを指定することができる。つまり、拡張ガベージコレクション制御コマンドは、ガベージコレクションが実行されるべき対象ネームスペースを示すパラメータを含む。 The extended garbage collection control command is an extended command of the host initiated garbage collection command for controlling the garbage collection operation of the SSD 3 by the host 2. The extended garbage collection control command can specify to SSD3 the namespace to be the target of garbage collection. That is, the extended garbage collection control command includes a parameter indicating the target namespace in which garbage collection should be performed.

CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、SRAM15を制御するように構成されたプロセッサである。CPU12は、上述のFTLレイヤの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行する。 The CPU 12 is a processor configured to control the host interface 11, the NAND interface 13, the DRAM interface 14, and the SRAM 15. The CPU 12 executes command processing for processing various commands from the host 2 and the like in addition to the above-described FTL layer processing.

これらFTLレイヤ処理およびコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。このファームウェアは、CPU12を、ネームスペース制御部21、ライトアンプリフィケーション算出部22、ガベージコレクション動作制御部23、および消耗/リテンション制御部24として機能させる。 The FTL layer process and the command process may be controlled by the firmware executed by the CPU 12. This firmware causes the CPU 12 to function as the namespace control unit 21, the write amplification calculation unit 22, the garbage collection operation control unit 23, and the consumption/retention control unit 24.

ネームスペース制御部21は、複数のネームスペースを管理するためのマルチネームスペース管理機能を有する。ネームスペースは、不揮発性メモリであるNANDメモリ5内の一種の領域に相当する。ネームスペース制御部21は、ホスト2からのネームスペースそれぞれの作成要求に基づいて、複数のネームスペースを作成する。換言すれば、ネームスペース制御部21は、ホスト2からのネームスペースそれぞれの作成要求に基づいて、NANDメモリ5を複数の領域(ネームスペース)に論理的に分割する。ホスト2は、上述の拡張ネームスペース管理コマンドを使用してネームスペースそれぞれの作成をSSD3に要求することができる。ネームスペース制御部21は、これら個々の領域(ネームスペース)に対して、ホスト2によって指定された個数の物理ブロックを割り当てる。これら複数の領域(ネームスペース)は、異なる更新頻度を有する複数種のデータをそれぞれ格納するために使用される。 The namespace control unit 21 has a multi-namespace management function for managing a plurality of namespaces. The name space corresponds to a kind of area in the NAND memory 5 which is a non-volatile memory. The namespace control unit 21 creates a plurality of namespaces based on a request from the host 2 to create each namespace. In other words, the namespace control unit 21 logically divides the NAND memory 5 into a plurality of areas (namespaces) based on a request from the host 2 to create each namespace. Host 2 can request SSD 3 to create each namespace using the extended namespace management command described above. The name space control unit 21 allocates the number of physical blocks designated by the host 2 to these individual areas (name spaces). These plural areas (name spaces) are used to respectively store plural kinds of data having different update frequencies.

例えば、頻繁に更新されるタイプのデータ(Hotデータ)は、Hotデータを格納するための特定の領域にライトされる。Hotデータはダイナミックデータと称されることもある。更新の頻度が低いタイプのデータ(Coldデータ)は、Coldデータを格納するための特定の別の領域(tier)にライトされる。Coldデータは非ダイナミックデータまたはスタティックデータと称されることもある。 For example, frequently updated type data (Hot data) is written to a specific area for storing Hot data. Hot data is sometimes called dynamic data. The data of a type with a low update frequency (Cold data) is written in a specific different area (tier) for storing the Cold data. Cold data may also be referred to as non-dynamic data or static data.

つまり、SSD3は物理的には一つのストレージデバイスであるが、SSD3内の複数の領域は異なる階層(tier)ストレージとして機能する。 That is, although the SSD 3 is physically one storage device, a plurality of areas in the SSD 3 function as different tier storages.

これら複数の領域は、複数のネームスペースにそれぞれ関連付けられている。これにより、ホストソフトウェアは、Hotデータを特定のネームスペースのIDに関連付け、且つColdデータを特定の別のネームスペースのIDに関連付けるだけで、これらデータがライトされるべき領域(tier)を容易に指定することができる。 The plurality of areas are respectively associated with the plurality of namespaces. As a result, the host software can easily associate the Hot data with the ID of a specific namespace and the Cold data with the ID of another specific namespace to easily determine the area (tier) to which these data are to be written. Can be specified.

もしHotデータとColdデータとが同じ物理ブロックに混在される環境であったならば、ライトアンプリフィケーションは著しく増加する可能性がある。 If the Hot data and the Cold data are mixed in the same physical block, the write amplification may increase significantly.

なぜなら、HotデータとColdデータとが混在する物理ブロックにおいては、Hotデータの更新によって物理ブロック内の一部のデータだけが早いタイミングで無効化される一方、この物理ブロック内の残りのデータ部(Coldデータ)は有効状態に長い間維持される可能性があるためである。 This is because, in a physical block in which Hot data and Cold data are mixed, only a part of the data in the physical block is invalidated at an early timing by updating the Hot data, while the remaining data section ( This is because the Cold data) may be maintained in the valid state for a long time.

ライトアンプリフィケーション(WA)は、以下のように定義される。 Write amplification (WA) is defined as follows.

WA=「SSDにライトされたデータの総量」 / 「ホストからSSDにライトされたデータの総量」
「SSDにライトされたデータの総量」は、ホストからSSDにライトされたデータの総量とガベージコレクション等によって内部的にSSDにライトされたデータの総量との和に相当する。
WA = "total amount of data written to SSD" / "total amount of data written to SSD from host"
The "total amount of data written to the SSD" corresponds to the sum of the total amount of data written to the SSD from the host and the total amount of data internally written to the SSD by garbage collection or the like.

ライトアンプリフィケーション(WA)の増加は、SSD3内の物理ブロックそれぞれの書き換え回数(プログラム/イレーズ回数)の増加を引き起こす。つまり、ライトアンプリフィケーション(WA)が大きい程、物理ブロックのプログラム/イレーズ回数が、そのプログラム/イレーズ回数の上限値に速く達しやすくなる。この結果、SSD3の耐久性および寿命の劣化が引き起こされる。 An increase in write amplification (WA) causes an increase in the number of times of rewriting (program/erase number) of each physical block in the SSD 3. That is, the larger the write amplification (WA), the easier the program/erase count of the physical block reaches the upper limit of the program/erase count. As a result, the durability and life of the SSD 3 are degraded.

もしHotデータのみによって物理ブロックが満たされていたならば、このブロック内の全てのデータがそれらデータの更新によって、比較的速いタイミングで無効化される可能性が高い。したがって、このブロックは、ガベージコレクションを実行すること無しで、このブロックを消去することのみによって、再利用することが可能となる。 If the physical block was filled with only Hot data, it is highly possible that all the data in this block will be invalidated at a relatively fast timing by updating those data. Therefore, this block can be reused only by erasing it without performing garbage collection.

一方、Coldデータのみによって物理ブロックが満たされているならば、このブロック内の全てのデータは、長い間、有効状態に維持される。したがって、このブロックは、ガベージコレクションの対象とならない可能性が高い。 On the other hand, if the physical block is filled with only Cold data, all data in this block will remain valid for a long time. Therefore, this block is not likely to be subject to garbage collection.

本実施形態では、異なる更新頻度を有する複数種のデータは、異なる領域(異なるネームスペース)にライトされる。例えば、Hotデータは、ある特定のネームスペース(NS#1)に関連付けられた領域にライトされ、Coldデータは、別の特定のネームスペース(NS#n)に関連付けられた別の領域にライトされる。したがって、HotデータとColdデータとが同じ物理ブロックに混在するという状況の発生を防止することができる。このことは、ガベージコレクション動作が実行される頻度を減少させることを可能とし、この結果、ライトアンプリフィケーションを低下させることができる。 In this embodiment, a plurality of types of data having different update frequencies are written in different areas (different namespaces). For example, Hot data is written in an area associated with a specific namespace (NS#1), and Cold data is written in another area associated with another specific namespace (NS#n). It Therefore, it is possible to prevent a situation in which Hot data and Cold data are mixed in the same physical block. This makes it possible to reduce the frequency with which garbage collection operations are performed, which in turn can reduce write amplification.

さらに、本実施形態では、ネームスペース制御部21は、確保すべき物理ブロックの個数をネームスペース毎に指定するホスト2からの要求に基づいて、所望の個数の物理ブロックを領域(ネームスペース)それぞれに個別に割り当てる。 Further, in the present embodiment, the namespace control unit 21 sets a desired number of physical blocks for each area (namespace) based on a request from the host 2 that specifies the number of physical blocks to be secured for each namespace. Individually assigned to.

例えば、ホスト2が新たなネームスペースを作成したい時、ホスト2は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをSSD3に送出する。ネームスペース制御部21は、ネームスペース(NS#1)を作成し、このネームスペース(このネームスペースに関連付けられた領域)に、パラメータによって指定される個数の物理ブロックを割り当てる。 For example, when the host 2 wants to create a new namespace, the host 2 sends an extended namespace management command including a parameter indicating the number of physical blocks to be reserved for the target namespace to the SSD 3. The namespace control unit 21 creates a namespace (NS#1) and allocates the number of physical blocks designated by the parameter to this namespace (the area associated with this namespace).

ホスト2は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータの値を変更しながら、SSD3に拡張ネームスペース管理コマンドを繰り返し送出する。この結果、複数のネームスペース(領域)が作成され、NANDメモリ5はこれら複数の領域に論理的に分割される。 The host 2 repeatedly sends the extended namespace management command to the SSD 3 while changing the value of the parameter indicating the number of physical blocks to be reserved for the target namespace. As a result, a plurality of namespaces (areas) are created, and the NAND memory 5 is logically divided into these plurality of areas.

したがって、個々の領域のサイズ(LBAの数)と個々の領域に設定すべき耐久性とに基づいて、複数の領域(複数のtier)にNANDメモリ5の物理リソース(物理ブロックの個数)を最適に配分することができる。 Therefore, the physical resources (the number of physical blocks) of the NAND memory 5 are optimized for a plurality of areas (a plurality of tiers) based on the size of each area (the number of LBAs) and the durability to be set for each area. Can be distributed to

ライトアンプリフィケーション算出部22は、SSD3全体のライトアンプリフィケーションではなく、個々のネームスペース(個々の領域)のライトアンプリフィケーションを算出する。これにより、ライトアンプリフィケーション算出部22は、各ネームスペース(各領域)に対応するライトアンプリフィケーションをホスト2に提供することができる。 The write amplification calculation unit 22 calculates not the write amplification of the entire SSD 3, but the write amplification of each namespace (individual area). Accordingly, the write amplification calculation unit 22 can provide the host 2 with the write amplification corresponding to each name space (each area).

ガベージコレクション動作制御部23は、ネームスペース単位(領域単位)で、ガベージコレクション動作を実行し、これによってHotデータとColdデータとが同じ物理ブロックに混在してしまうことを防止する。より詳しくは、ガベージコレクション動作制御部23が拡張ガベージコレクション制御コマンドをホスト2から受信した時、ガベージコレクション動作制御部23は、拡張ガベージコレクション制御コマンドによって指定される対象ネームスペースに割り当てられている物理ブロック群から、ガベージコレクションの対象物理ブロック群を選択する。そして、ガベージコレクション動作制御部23は、有効データを対象物理ブロック群からコピー先フリーブロックにコピーするガベージコレクション動作を実行する。 The garbage collection operation control unit 23 executes a garbage collection operation in namespace units (area units), and thereby prevents Hot data and Cold data from being mixed in the same physical block. More specifically, when the garbage collection operation control unit 23 receives the extended garbage collection control command from the host 2, the garbage collection operation control unit 23 determines that the physical space allocated to the target namespace specified by the extended garbage collection control command. A target physical block group for garbage collection is selected from the block group. Then, the garbage collection operation control unit 23 executes the garbage collection operation of copying the valid data from the target physical block group to the copy destination free block.

さらに、ガベージコレクション動作制御部23は、ネームスペース毎に実行されるガベージコレクション動作によって作り出されたフリーブロック群を、これらネームスペースによって共有される共有フリーブロック群として管理する。つまり、これらフリーブロック群は、ネームスペース間で共有される。ガベージコレクション動作制御部23は、最小のプログラム/イレーズ回数のフリーブロックをフリーブロック群から選択する。そして、ガベージコレクション動作制御部23は、選択されたフリーブロックを、上述の対象ネームスペースに対応する領域のコピー先フリーブロックとして割り当てる。 Further, the garbage collection operation control unit 23 manages the free block group created by the garbage collection operation executed for each namespace as a shared free block group shared by these namespaces. That is, these free block groups are shared between namespaces. The garbage collection operation control unit 23 selects the free block having the minimum program/erase count from the free block group. Then, the garbage collection operation control unit 23 allocates the selected free block as a copy destination free block of the area corresponding to the above-mentioned target namespace.

通常、Coldデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム/イレーズ回数は、Hotデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム/イレーズ回数よりも遙かに少ない。なぜなら、ある量のColdデータがColdデータ用の領域に一旦ライトされた後は、このColdデータは頻繁には更新されないか、あるいは、滅多に更新されない場合が多いからである。一方、Hotデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム/イレーズ回数は、通常、比較的多い。したがって、最小のプログラム/イレーズ回数のフリーブロックをコピー先フリーブロックとして割り当てる上述の動作は、Coldデータ用の領域において使用されていたプログラム/イレーズ回数の少ないブロックを、Hotデータ用の領域に自動的に割り当てることを可能にする。 Normally, the number of program/erase times of the free block created by the garbage collection operation of the area for Cold data is much smaller than the number of program/erase of the free block created by the garbage collection operation of the area for Hot data. .. This is because, after a certain amount of Cold data is once written in the area for Cold data, this Cold data is often not updated or rarely updated. On the other hand, the number of program/erase times of the free block created by the garbage collection operation of the hot data area is usually relatively large. Therefore, the above-described operation of allocating the free block having the minimum program/erase count as the copy destination free block automatically changes the block used in the Cold data area to the Hot data area with a small program/erase count. To be assigned to.

消耗/リテンション制御部24は、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御することによって信頼性(データリテンション)と耐久性(DWPD値)との間のトレードオフを最適化するための動作を実行する。これにより、Hotデータ用の領域の耐久性を高めることができ、またColdデータ用の領域のデータリテンション(ライトされたデータのリテンション時間)を延ばすことができる。 The consumption/retention control unit 24 controls the ratio of the code for suppressing the consumption of the memory cell and the error correction code (ECC) to trade the reliability (data retention) and the durability (DWPD value). Take action to optimize off. As a result, the durability of the Hot data area can be enhanced, and the data retention (retention time of written data) of the Cold data area can be extended.

NANDインタフェース13は、CPU12の制御の下、NANDメモリ5を制御するように構成されたNANDコントローラである。 The NAND interface 13 is a NAND controller configured to control the NAND memory 5 under the control of the CPU 12.

DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。 The DRAM interface 14 is a DRAM controller configured to control the DRAM 6 under the control of the CPU 12.

DRAM6の記憶領域の一部は、NANDメモリ5にライトすべきデータを一時的に格納するためのライトバッファ(WB)31として利用されてもよい。また、DRAM6の記憶領域は、ガベージコレクション(GC)動作中に移動されるデータを一時的に格納するためのGCバッファ32として利用されてもよい。また、DRAM6の記憶領域は、上述のルックアップテーブル33の格納のために用いられてもよい。ルックアップテーブル33は、ネームスペース毎に独立したガベージコレクション(GC)動作を実行できるようにするために、複数のネームスペースにそれぞれ対応する複数のルックアップテーブル(LUT#1、LUT#2、…)に分割されていてもよい。 A part of the storage area of the DRAM 6 may be used as a write buffer (WB) 31 for temporarily storing data to be written in the NAND memory 5. Further, the storage area of the DRAM 6 may be used as a GC buffer 32 for temporarily storing the data moved during the garbage collection (GC) operation. Further, the storage area of the DRAM 6 may be used for storing the above-mentioned lookup table 33. The lookup table 33 includes a plurality of lookup tables (LUT#1, LUT#2,...) Corresponding to a plurality of namespaces so that an independent garbage collection (GC) operation can be performed for each namespace. ).

次に、ホスト2の構成について説明する。 Next, the configuration of the host 2 will be described.

ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ41、オペレーティングシステム42、ファイルシステム43が含まれる。 The host 2 is an information processing device that executes various programs. The programs executed by the information processing device include an application software layer 41, an operating system 42, and a file system 43.

一般に知られているように、オペレーティングシステム42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。 As is generally known, the operating system 42 manages the host 2 as a whole, controls the hardware in the host 2, and executes controls for allowing an application to use the hardware and the SSD 3. The software is configured as follows.

ファイルシステム43は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。例えば、ZFS、Btrfs、XFS、ext4、NTFSなどがファイルシステム42として使用されても良い。あるいは、ファイルオブジェクトシステム(例えば、Ceph Object Storage Daemon)、Key Value Store System (例えば、Rocks DB) がファイルシステム42として使用されても良い。 The file system 43 is used to perform control for file operations (creating, saving, updating, deleting, etc.). For example, ZFS, Btrfs, XFS, ext4, NTFS, etc. may be used as the file system 42. Alternatively, a file object system (for example, Ceph Object Storage Daemon) or a Key Value Store System (for example, Rocks DB) may be used as the file system 42.

様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ41上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。 Various application software threads run on the application software layer 41. Examples of application software threads include client software, database software, virtual machines and the like.

アプリケーションソフトウェアレイヤ13がリードコマンドまたはライトコマンドのようなリクエストをSSD3に送出することが必要な時、アプリケーションソフトウェアレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをファイルシステム43に送出する。ファイルシステム43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。ファイルシステム43は、コマンドを、SSD3に送出する。SSD3からのレスポンスが受信された際、ファイルシステム43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションソフトウェアレイヤ41に送出する。 When the application software layer 13 needs to send a request such as a read command or a write command to the SSD 3, the application software layer 41 sends the request to the OS 42. The OS 42 sends the request to the file system 43. The file system 43 translates the request into a command (read command, write command, etc.). The file system 43 sends the command to the SSD 3. When the response from the SSD 3 is received, the file system 43 sends the response to the OS 42. The OS 42 sends the response to the application software layer 41.

本実施形態では、ホスト2は、上述の拡張ネームスペース管理コマンド、拡張ガベージコレクション制御コマンド等を使用することによって、SSD3を賢く管理、制御する。例えば、ファイルシステム43の階層管理部44がHotデータ用のネームスペース(領域)とColdデータ用のネームスペース(領域)の作成が必要な場合を想定する。階層管理部44は、Hotデータ用のネームスペース(領域)に割り当てるべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをSSD3に送出する。SSD3からこのネームスペースのIDを含むレスポンスが受信された際、階層管理部44は、このネームスペースのIDをHotデータ用のネームスペースIDとして管理する。次いで、階層管理部44は、Coldデータ用のネームスペース(領域)に割り当てるべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをSSD3に送出する。SSD3からこのネームスペースのIDを含むレスポンスが受信された際、階層管理部44は、このネームスペースのIDをColdデータ用のネームスペースIDとして管理する。 In this embodiment, the host 2 intelligently manages and controls the SSD 3 by using the above-mentioned extended namespace management command, extended garbage collection control command, and the like. For example, it is assumed that the hierarchy management unit 44 of the file system 43 needs to create a namespace (area) for Hot data and a namespace (area) for Cold data. The hierarchical management unit 44 sends an extended namespace management command including a parameter indicating the number of physical blocks to be assigned to the hot data namespace (area) to the SSD 3. When the response including the ID of this namespace is received from the SSD 3, the hierarchy management unit 44 manages the ID of this namespace as the namespace ID for Hot data. Next, the hierarchy management unit 44 sends an extended namespace management command including a parameter indicating the number of physical blocks to be allocated to the cold data namespace (area) to the SSD 3. When the response including the ID of this namespace is received from the SSD 3, the hierarchy management unit 44 manages the ID of this namespace as the namespace ID for Cold data.

あるHotデータをSSD3にライトすることが必要な時、階層管理部44は、Hotデータ用のネームスペースIDを含むライトコマンドをSSD3に送出する。あるColdデータをSSD3にライトすることが必要な時、階層管理部44は、Coldデータ用のネームスペースIDを含むライトコマンドをSSD3に送出する。 When it is necessary to write certain Hot data to SSD3, the tier management unit 44 sends a write command including the namespace ID for Hot data to SSD3. When it is necessary to write certain Cold data to SSD3, the hierarchy management unit 44 sends a write command including the namespace ID for Cold data to SSD3.

あるHotデータをリードすることが必要な時、階層管理部44は、Hotデータ用のネームスペースIDを含むリードコマンドをSSD3に送出する。あるColdデータをリードすることが必要な時、階層管理部44は、Coldデータ用のネームスペースIDを含むリードコマンドをSSD3に送出する。 When it is necessary to read a certain Hot data, the hierarchy management unit 44 sends a read command including the namespace ID for the Hot data to the SSD 3. When it is necessary to read certain Cold data, the hierarchy management unit 44 sends a read command including the namespace ID for Cold data to the SSD 3.

図2は、通常の階層化ストレージシステムと単一階層ストレージシステムとの関係を示す。 FIG. 2 shows the relationship between a normal tiered storage system and a single tiered storage system.

図2の左部に示される階層化ストレージシステムでは、3種類のSSDが用途に応じて使い分けられている。階層(T1)用のSSDは、小容量・高速SSDである。小容量・高速SSDは、例えば、メモリセル当たりに1ビットの情報を格納するSLC−SSDであってもよい。このため、階層(T1)用のSSDは、高価格SSDである。 In the hierarchical storage system shown on the left side of FIG. 2, three types of SSDs are properly used according to the purpose. The SSD for the tier (T1) is a small capacity/high speed SSD. The small capacity/high speed SSD may be, for example, an SLC-SSD that stores 1-bit information per memory cell. Therefore, the SSD for the tier (T1) is a high-priced SSD.

階層(T1)用のSSDは、アクセス(リード/ライト)の頻度の高いデータ、例えば頻繁に更新されるデータのストレージとして使用される。アクセス頻度の高いデータの例には、ファイルシステムのメタデータが含まれる。メタデータは、ファイル内のデータの記憶位置、このデータの作成日時、このデータが更新された日時、このデータがリードされた日時、等の様々な管理情報を含む。このため、メタデータに対するアクセスの頻度(ライトアクセスの頻度、リードアクセスの頻度)は非常に高い。したがって、メタデータの格納に使用される階層(T1)用のSSDには、高い耐久性が必要とされる。 The SSD for the tier (T1) is used as a storage for data that is frequently accessed (read/write), for example, frequently updated data. Examples of frequently accessed data include file system metadata. The metadata includes various management information such as a storage position of data in a file, a creation date and time of this data, a date and time when this data was updated, a date and time when this data was read. Therefore, the frequency of accessing the metadata (frequency of write access, frequency of read access) is very high. Therefore, the SSD for the tier (T1) used for storing the metadata requires high durability.

SSDの耐久性を示す指標の一つに、DWPD(Drive Write Per Day)がある。例えば、DWPD=10は、1Tバイトの総容量を有するSSDに関しては、1日当たり10Tバイト(=10×1Tバイト)のデータのライトを5年間に渡って毎日実行することができることを意味する。階層(T1)用のSSDには、DWPD=10の耐久性が要求される場合がある。 DWPD (Drive Write Per Day) is one of the indicators showing the durability of SSD. For example, DWPD=10 means that for an SSD having a total capacity of 1 Tbyte, 10 Tbytes (=10×1 Tbyte) of data can be written every day for 5 years every day. The SSD for the tier (T1) may be required to have a durability of DWPD=10.

階層化ストレージシステム全体の容量に対する階層(T1)の容量の割合は、例えば、1パーセントである。メタデータのサイズはファイルの中身のサイズよりも極めて小さいからである。 The ratio of the capacity of the tier (T1) to the capacity of the entire tiered storage system is, for example, 1%. The size of the metadata is much smaller than the size of the file contents.

階層(T2)用のSSDは、中容量SSDである。中容量SSDは、例えば、メモリセル当たりに2ビットの情報を格納するMLC−SSDであってもよい。階層(T2)用のSSDは、メタデータよりも、更新の頻度が低いデータのストレージとして使用される。階層(T2)用のSSDには、DWPD=1が要求される場合がある。階層化ストレージシステム全体の容量に対する階層(T2)の容量の割合は、例えば、4パーセントである。 The SSD for the tier (T2) is a medium capacity SSD. The medium capacity SSD may be, for example, an MLC-SSD that stores 2 bits of information per memory cell. The SSD for the tier (T2) is used as a storage for data that is updated less frequently than metadata. DWPD=1 may be required for the SSD for the tier (T2). The ratio of the capacity of the tier (T2) to the capacity of the entire tiered storage system is, for example, 4%.

階層(T3)用のSSDは、低価格の大容量SSDである。この大容量SSDは、例えば、MLC−SSDまたはTLC−SSDであってもよい。階層(T3)用のSSDは、滅多に更新されないデータのストレージとして使用される。階層(T3)用のSSDにおいては、DWPD=0.1程度の低い耐久性で十分な場合がある。階層化ストレージシステム全体の容量に対する階層(T3)の容量の割合は、例えば、95パーセントである。 The SSD for the tier (T3) is a low-cost, large-capacity SSD. The large capacity SSD may be, for example, an MLC-SSD or a TLC-SSD. The SSD for the tier (T3) is used as a storage for data that is rarely updated. In the SSD for the tier (T3), the durability as low as DWPD=0.1 may be sufficient. The ratio of the capacity of the tier (T3) to the capacity of the entire tiered storage system is, for example, 95%.

図2の右部は、一台のSSDに3つの階層T1〜T3の全てのデータを格納する単一階層ストレージシステムの例を示す。単一階層ストレージシステム全体に要求されるDWPDは、次のように求めることができる。 The right part of FIG. 2 shows an example of a single tier storage system in which one SSD stores all data of three tiers T1 to T3. The DWPD required for the entire single tier storage system can be obtained as follows.

DWPD=(10×0.01) + (1×0.04) + (0.1×0.95) =0.235
したがって、単一階層ストレージシステムを適用すれば、SSDに必要とされる容量は大幅に増加するものの、SSDに必要とされる耐久性は低下される。低価格・大容量のSSDの実現には、MLC−SSDまたはTLC−SSDが好適である。MLC−SSD/TLC−SSDのライト速度は、SLC−SSDのライト速度よりも遅いが、MLC−SSD/TLC−SSDのリード速度はSLC−SSDと同程度である。したがって、低価格・大容量のSSDを使用する単一階層ストレージシステムであっても、複数の階層間の耐久性の関係を最適化するための機能を追加することによって、階層化ストレージシステムとほぼ同等の耐久性・性能を得ることができる。
DWPD = (10 x 0.01) + (1 x 0.04) + (0.1 x 0.95) = 0.235
Therefore, if the single tier storage system is applied, the capacity required for the SSD is significantly increased, but the durability required for the SSD is reduced. The MLC-SSD or TLC-SSD is suitable for realizing a low-cost, large-capacity SSD. The write speed of MLC-SSD/TLC-SSD is slower than the write speed of SLC-SSD, but the read speed of MLC-SSD/TLC-SSD is similar to that of SLC-SSD. Therefore, even with a single-tier storage system that uses low-priced, large-capacity SSDs, by adding a function to optimize the durability relationship between multiple tiers, The same durability and performance can be obtained.

図3は、本実施形態のSSD3(SSD#1)にける複数の領域(ネームスペース)間の物理リソースの配分の例を示す。 FIG. 3 shows an example of distribution of physical resources among a plurality of areas (name spaces) in the SSD 3 (SSD#1) of this embodiment.

SSD#1のストレージスペースは、例えば、異なる更新頻度を有する複数種のデータ(Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータ)をそれぞれ格納するための領域51、52、53、54、55に論理的に分割される。 The storage space of SSD#1 is, for example, areas 51, 52, 53, 54 for storing a plurality of types of data (Hot data, Warm data, Middle data, Cool data, Cold data) having different update frequencies, It is logically divided into 55.

データは、その更新の頻度に応じて5つのデータグループ(Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータ)に分類される。Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータの順に、データの更新頻度は減少される。Warmデータ、Middleデータ、Coolデータは、HotデータとColdデータの中間の更新頻度を有するデータである。 The data is classified into five data groups (Hot data, Warm data, Middle data, Cool data, Cold data) according to the update frequency. The data update frequency decreases in the order of Hot data, Warm data, Middle data, Cool data, and Cold data. The Warm data, the Middle data, and the Cool data are data having an update frequency intermediate between the Hot data and the Cold data.

領域51は、Hotデータを格納するための階層ストレージ(tier#1)として使用される。領域51には、ネームスペース(NS#1)が関連付けられている。領域51は、小容量・高更新頻度のHotデータ(アクティブデータ)を格納するために利用される。SSD#1の総容量に対する領域51の容量の割合の例は、1パーセントであってもよい。領域51に要求されるDWPDの例は、10であってもよい。 The area 51 is used as a hierarchical storage (tier #1) for storing Hot data. A namespace (NS#1) is associated with the area 51. The area 51 is used to store Hot data (active data) having a small capacity and a high update frequency. An example of the ratio of the capacity of the area 51 to the total capacity of the SSD #1 may be 1%. An example of DWPD required for area 51 may be 10.

領域52は、Warmデータを格納するための階層ストレージ(tier#2)として使用される。領域52には、ネームスペース(NS#2)が関連付けられている。SSD#1の総容量に対する領域52の容量の割合の例は、2パーセントであってもよい。領域52に要求されるDWPDの例は、3であってもよい。 The area 52 is used as a tiered storage (tier #2) for storing Warm data. A namespace (NS#2) is associated with the area 52. An example of the ratio of the capacity of the area 52 to the total capacity of the SSD #1 may be 2%. An example of DWPD required for region 52 may be three.

領域53は、Middleデータを格納するための階層ストレージ(tier#3)として使用される。領域53には、ネームスペース(NS#3)が関連付けられている。SSD#1の総容量に対する領域53の容量の割合の例は、3パーセントであってもよい。領域53に要求されるDWPDの例は、1であってもよい。 The area 53 is used as a hierarchical storage (tier#3) for storing Middle data. A namespace (NS#3) is associated with the area 53. An example of the ratio of the capacity of the area 53 to the total capacity of the SSD #1 may be 3%. The example of the DWPD required for the area 53 may be one.

領域54は、Coolデータを格納するための階層ストレージ(tier#4)として使用される。領域54には、ネームスペース(NS#4)が関連付けられている。SSD#1の総容量に対する領域54の容量の割合の例は、14パーセントであってもよい。領域54に要求されるDWPDの例は、0.3でであってもよい。 The area 54 is used as a hierarchical storage (tier #4) for storing Cool data. A namespace (NS#4) is associated with the area 54. An example of the ratio of the capacity of the area 54 to the total capacity of the SSD #1 may be 14%. An example of DWPD required for region 54 may be 0.3.

領域55は、Coldデータを格納するための階層ストレージ(tier#n)として使用される。領域55には、ネームスペース(NS#n)が関連付けられている。領域55は、大容量・低更新頻度のColdデータ(非アクティブデータ)を格納するために利用される。SSD#1の総容量に対する領域55の容量の割合の例は、80パーセントであってもよい。例えば、領域55の更新の頻度は、領域51の更新の頻度の1/100程度である。したがって、領域55に要求されるDWPDの例は、0.1であってもよい。 The area 55 is used as a hierarchical storage (tier #n) for storing Cold data. A namespace (NS#n) is associated with the area 55. The area 55 is used for storing large capacity and low update frequency Cold data (inactive data). An example of the ratio of the capacity of the area 55 to the total capacity of the SSD#1 may be 80%. For example, the frequency of updating the area 55 is about 1/100 of the frequency of updating the area 51. Thus, the example DWPD required for region 55 may be 0.1.

このように、Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータは異なる領域にそれぞれ格納される。よって、更新頻度が異なるデータ、例えばHotデータとColdデータとが同じブロックに混在するという状況の発生を防止することができる。この結果、SSD3のライトアンプリフィケーションを低下させることができる。 In this way, the Hot data, Warm data, Middle data, Cool data, and Cold data are stored in different areas, respectively. Therefore, it is possible to prevent a situation in which data having different update frequencies, for example, Hot data and Cold data are mixed in the same block. As a result, the write amplification of the SSD 3 can be reduced.

図3のような比率で物理リソースが複数の領域51〜55に配分された場合、SSD3(SSD#1)全体に要求されるDWPDは、次のように求めることができる。 When the physical resources are distributed to the plurality of areas 51 to 55 at the ratio shown in FIG. 3, the DWPD required for the entire SSD3 (SSD#1) can be obtained as follows.

DWPD=(10×0.01) + (3×0.02) + (1×0.03) + (0.3×0.14) + (0.1×0.8)=0.312
このことは、原理的には、領域51〜55に論理的に分割されたSSD3(SSD#1)は、大容量・低価格のSSDによって実現可能であることを意味する。
DWPD = (10 x 0.01) + (3 x 0.02) + (1 x 0.03) + (0.3 x 0.14) + (0.1 x 0.8) = 0.312
This means that in principle, the SSD3 (SSD#1) logically divided into the areas 51 to 55 can be realized by a large-capacity, low-cost SSD.

本実施形態では、上述したように、ホスト2は、確保すべき物理ブロックの個数をネームスペース毎に指定することするができ、SSD3は、指定された個数の物理ブロックを個々の領域(tier)に個別に割り当てることができる。 In the present embodiment, as described above, the host 2 can specify the number of physical blocks to be reserved for each namespace, and the SSD 3 can specify the specified number of physical blocks in individual areas (tiers). Can be individually assigned to.

もし複数のtierが異なるSSDによって実現されているならば、使用されるSSD自体を交換しないかぎり、個々のtierのサイズを変えることはできない。本実施形態では、同じ一つのSSDが複数のtier(領域)に論理的に分割されている。したがって、個々のtierのサイズを、ワークロードおよび各tier(領域)に設定すべき耐久性に合わせて最適化することができる。 If multiple tiers are implemented by different SSDs, the individual tiers cannot be resized unless the SSDs themselves are replaced. In this embodiment, the same SSD is logically divided into a plurality of tiers (areas). Therefore, the size of each tier can be optimized according to the workload and the durability to be set for each tier (region).

つまり、本実施形態では、領域51〜55に対して幾つの物理ブロックを割り当てるかをホスト2の制御によって領域毎に決定することができる。 That is, in this embodiment, how many physical blocks are allocated to the areas 51 to 55 can be determined for each area under the control of the host 2.

例えば、ホストソフトウェアは、Hotデータ用の領域51(tier#1)に関しては、Hotデータの予期される総量(ユーザデータ容量)を超える十分な個数の物理ブロックの割り当てをSSD3に要求してもよい。この要求に応答して、SSD3のコントローラ4は、Hotデータ用の領域51(tier#1)に専用の、指定された個数の物理ブロックを、このHotデータ用の領域51(tier#1)に割り当てる。例えば、Hotデータの予期される総量(ユーザデータ容量)が100Gバイトである場合、ホストソフトウェアは、200Gバイトに相当する個数の物理ブロックの割り当てを要求してもよい。この場合、コントローラ4は、200Gバイトに相当する個数の物理ブロックを領域51(tier#1)に割り当てる。この結果、領域51(tier#1)のユーザ領域の2倍の容量に相当する個数の物理ブロックが領域51(tier#1)用に割り当てられる。200Gバイトからユーザ領域の容量を引いた残りの100GBの物理リソースは、領域51(tier#1)のオーバープロビジョン領域として機能する。 For example, the host software may request the SSD 3 to allocate a sufficient number of physical blocks for the hot data area 51 (tier #1), which exceeds the expected total amount of hot data (user data capacity). .. In response to this request, the controller 4 of the SSD 3 allocates a specified number of physical blocks dedicated to the Hot data area 51 (tier #1) to the Hot data area 51 (tier #1). assign. For example, if the expected total amount of Hot data (user data capacity) is 100 Gbytes, the host software may request allocation of physical blocks equal in number to 200 Gbytes. In this case, the controller 4 allocates the number of physical blocks corresponding to 200 Gbytes to the area 51 (tier#1). As a result, the number of physical blocks corresponding to twice the capacity of the user area of the area 51 (tier #1) is allocated for the area 51 (tier #1). The remaining 100 GB of physical resources obtained by subtracting the capacity of the user area from 200 GB functions as an over-provision area of the area 51 (tier #1).

ここで、オーバープロビジョン領域について説明する。 Here, the over-provision area will be described.

オーバープロビジョニングは、ホスト2には利用可能なユーザスペース(ユーザアクセス可能LBAスペース)として見えないSSD3内のストレージ容量を割り当てることを意味する。ホスト2にユーザアクセス可能LBAスペースとして見えないストレージ容量が割り当てられたスペースが、オーバープロビジョン領域である。オーバープロビジョニングにより、ユーザアクセス可能LBAスペース(ユーザ領域の容量)を超える容量の物理ブロック群が割り当てられる。 Over-provisioning means allocating storage capacity in the SSD 3 which is not visible to the host 2 as an available user space (user accessible LBA space). A space to which a storage capacity that is invisible as a user-accessible LBA space is allocated to the host 2 is an overprovision area. By over-provisioning, a physical block group having a capacity exceeding the user accessible LBA space (capacity of user area) is allocated.

通常のSSDにおいては、ホストはあるネームスペース用のLBAの数を指定することはできても、このネームスペース用に幾つの物理ブロックを割り当てるべきかを指定することはできない。また、通常は、ただ一つのオーバープロビジョン領域のみが、1台のSSD内に設定される。 In a normal SSD, the host can specify the number of LBAs for a namespace, but not how many physical blocks should be allocated for this namespace. Also, normally, only one over provision area is set in one SSD.

これに対し、本実施形態では、ホスト2によって指定された個数の物理ブロックを個々のネームスペース(領域)に割り当てることができ、さらに、この結果、所望の容量のオーバープロビジョン領域を領域毎に個別に設定することができる。 On the other hand, in the present embodiment, the number of physical blocks designated by the host 2 can be assigned to each namespace (area), and as a result, an overprovision area having a desired capacity can be assigned to each area. Can be set individually.

例えば、領域51の総容量(総NS#1容量)は、領域51に割り当てられた物理ブロックの総数によって決定される。領域51は、ユーザ領域51aとオーバープロビジョン領域51bとを含む。領域51の総容量からユーザ領域51aの容量を引いた残りの容量が、オーバープロビジョン領域51bとして機能する。ユーザ領域51aは、LBAに割り当てられた物理ブロック群である。オーバープロビジョン領域51bの存在によって、領域51内のユーザ領域51aの耐久性・性能が改善される。 For example, the total capacity of the area 51 (total NS#1 capacity) is determined by the total number of physical blocks allocated to the area 51. The area 51 includes a user area 51a and an over-provision area 51b. The remaining capacity obtained by subtracting the capacity of the user area 51a from the total capacity of the area 51 functions as the over-provision area 51b. The user area 51a is a physical block group assigned to the LBA. The existence of the over-provision area 51b improves the durability and performance of the user area 51a in the area 51.

他の各領域に関しても、この領域に割り当てられた物理ブロックの総数によって決定される容量からこの領域内のユーザ領域の容量を引いた残りの容量が、この領域内のオーバープロビジョン領域として機能する。 For each of the other areas, the remaining capacity, which is the capacity determined by the total number of physical blocks allocated to this area minus the capacity of the user area in this area, functions as the over-provision area in this area. ..

Hotデータ用の領域51と同様に、ホストソフトウェアは、Warmデータ用の領域52(tier#2)に関しても、Warmデータの予期される総量(ユーザ領域の容量)を超える個数の物理ブロックの割り当てをSSD3に要求してもよい。この要求に応答して、SSD3のコントローラ4は、Warmデータ用の領域52に専用の、指定された個数の物理ブロックを、このWarmデータ用の領域52(tier#2)に割り当てる。例えば、Warmデータの予期される総量(ユーザデータ容量)が200Gバイトであり、ホストソフトウェアによって250Gバイトに相当する個数の物理ブロックの割り当てが要求されたならば、コントローラ4は、250Gバイトに相当する個数の物理ブロックを領域52(tier#2)に割り当てる。この結果、領域52(tier#2)のユーザ領域の容量よりも50GBだけ大きい物理リソースが領域52(tier#2)に割り当てられる。250Gバイトの物理リソースからユーザ領域の容量を引いた残りの50GBの物理リソースは、領域52(tier#2)のオーバープロビジョン領域として機能する。 Similar to the hot data area 51, the host software allocates physical blocks of a number exceeding the expected total amount of the warm data (user area capacity) to the warm data area 52 (tier #2). You may request SSD3. In response to this request, the controller 4 of the SSD 3 allocates the specified number of physical blocks dedicated to the Warm data area 52 to the Warm data area 52 (tier #2). For example, if the expected total amount of Warm data (user data capacity) is 200 Gbytes and the host software requests allocation of physical blocks of a number corresponding to 250 Gbytes, the controller 4 corresponds to 250 Gbytes. The number of physical blocks is allocated to the area 52 (tier #2). As a result, a physical resource 50 GB larger than the capacity of the user area of the area 52 (tier #2) is allocated to the area 52 (tier #2). The remaining 50 GB physical resource obtained by subtracting the capacity of the user area from the physical resource of 250 GB functions as an over-provision area of the area 52 (tier #2).

同様にして、ホストソフトウェアは、残りの全ての領域の各々について、割り当てるべき物理ブロックの量を指定する。 Similarly, the host software specifies the amount of physical blocks to allocate for each of all remaining areas.

例えば、ホストソフトウェアは、Coldデータ用の領域55(tier#n)に関しては、Coldデータの予期される総量(ユーザデータの容量)を考慮して決定される最小個数の物理ブロックの割り当てをSSD3に要求してもよい。この要求に応答して、コントローラ4は、Coldデータ用の領域55(tier#n)に専用の、指定された個数の物理ブロックを、このColdデータ用の領域55(tier#n)に割り当てる。例えば、Coldデータの予期される総量(ユーザデータ容量)が8000Gバイトであり、ホストソフトウェアによって8001Gバイトに相当する個数の物理ブロックの割り当てが要求されたならば、コントローラ4は、8001Gバイトに相当する個数の物理ブロックを領域55(tier#n)に割り当てる。この結果、領域55(tier#n)のユーザ領域の容量よりも1GBだけ大きい物理リソースが領域55(tier#n)に割り当てられる。8001Gバイトの物理リソースからユーザデータ容量を引いた残りの1GBの物理リソースは、領域55(tier#n)のオーバープロビジョン領域として機能する。 For example, with respect to the area 55 (tier #n) for Cold data, the host software allocates the minimum number of physical blocks determined in consideration of the expected total amount of Cold data (capacity of user data) to SSD3. You may request. In response to this request, the controller 4 allocates the specified number of physical blocks dedicated to the cold data area 55 (tier #n) to this cold data area 55 (tier #n). For example, if the expected total amount of Cold data (capacity of user data) is 8000 Gbytes, and the host software requests allocation of physical blocks of the number corresponding to 8001 Gbytes, the controller 4 corresponds to 8001 Gbytes. The number of physical blocks is assigned to the area 55 (tier#n). As a result, a physical resource larger by 1 GB than the capacity of the user area of the area 55 (tier#n) is allocated to the area 55 (tier#n). The remaining 1 GB physical resource obtained by subtracting the user data capacity from the 8001 Gbyte physical resource functions as an over-provision area of the area 55 (tier #n).

このように、SSD3は、確保すべき物理ブロックの個数をネームスペース毎に指定するホスト2からの要求に基づいて、個々の領域に対して、指定された個数の物理ブロックを割り当てる。この結果、ユーザ領域の容量に対するオーバープロビジョン領域の容量の比率を、個々の領域毎に、最適化することが可能となる。例えば、上の階層になるほど、割り当てられるオーバープロビジョン領域の量が多くなるように、個々の領域に割り当てられる物理ブロックの個数が調整されても良い。この場合、例えば、領域55内のユーザ領域の容量に対する領域55内のオーバープロビジョン領域の容量の比率は、領域51内のユーザ領域の容量に対する領域51内のオーバープロビジョン領域の容量の比率よりも小さくなる。 In this way, the SSD 3 allocates the specified number of physical blocks to each area based on a request from the host 2 that specifies the number of physical blocks to be reserved for each namespace. As a result, the ratio of the capacity of the over-provision area to the capacity of the user area can be optimized for each individual area. For example, the number of physical blocks allocated to each area may be adjusted such that the higher the hierarchy, the larger the amount of overprovision area allocated. In this case, for example, the ratio of the capacity of the over-provision area in the area 55 to the capacity of the user area in the area 55 is more than the ratio of the capacity of the over-provision area in the area 51 to the capacity of the user area in the area 51. Also becomes smaller.

領域51においては、大きなサイズのオーバープロビジョン領域の活用によって、領域51のライトアンプリフィケーションを効率よく減少することができる。なぜなら、たとえ領域51のユーザ領域51aの物理ブロック群が100Mバイトのデータで満たされ、この結果、これら各物理ブロックがそのブロックの消去無しで利用可能ページを含まない状態になっても、これら物理ブロックの代わりにオーバープロビジョン領域51bの物理ブロック群をデータのライトに使用することができるからである。よって、領域51のガベージコレクション動作が実行されるタイミングを十分に遅らせることができる。オーバープロビジョン領域51bの物理ブロック群にデータがライトされるにつれ、ユーザ領域51aの物理ブロック群内のデータはその更新によって無効化される。全てのデータが無効化された物理ブロックはそのガベージコレクションなしで再利用することができる。したがって、領域51のライトアンプリフィケーションを効率よく減少することができるので、領域51の物理ブロック群のライト/イレーズ回数を低く抑えることができる。このことは、領域51の耐久性を向上させることできることを意味している。 In the area 51, the write amplification of the area 51 can be efficiently reduced by utilizing the large-sized overprovision area. This is because even if the physical block group of the user area 51a of the area 51 is filled with 100 Mbytes of data and, as a result, each of these physical blocks does not include an available page without erasing the block, the physical blocks This is because the physical block group of the over-provision area 51b can be used for writing data instead of the block. Therefore, it is possible to sufficiently delay the timing at which the garbage collection operation of the area 51 is executed. As the data is written in the physical block group in the over-provision area 51b, the data in the physical block group in the user area 51a is invalidated by the update. A physical block with all data invalidated can be reused without its garbage collection. Therefore, since the write amplification of the area 51 can be efficiently reduced, the number of write/erase times of the physical block group of the area 51 can be suppressed low. This means that the durability of the region 51 can be improved.

領域55のオーバープロビジョン領域は小さいので、領域55のライトアンプリフィケーションは増加する。しかし、Coldデータ用の領域55の更新頻度は、Hotデータ用の領域51の更新頻度に比べて、遙かに低い。例えば、Coldデータ用の領域55の更新頻度は、Hotデータ用の領域51の更新頻度の100分の1である。つまり、領域51が100回書き換えられる間に、領域55は1回しか書き換えられないので、Coldデータの領域55の物理ブロックそれぞれのプログラム/イレーズ回数は非常に少ない。したがって、Coldデータの領域55に関しては、たとえそのライトアンプリフィケーションが大きくても、Coldデータの領域55の物理ブロック群のプログラム/イレーズ回数が、SSD3のプログラム/イレーズ回数上限値にすぐに達してしまうという現象は発生しない。 Since the over-provision area of the area 55 is small, the write amplification of the area 55 increases. However, the update frequency of the Cold data area 55 is much lower than the update frequency of the Hot data area 51. For example, the update frequency of the Cold data area 55 is 1/100 of the update frequency of the Hot data area 51. That is, since the area 55 is rewritten only once while the area 51 is rewritten 100 times, the number of programs/erases of each physical block of the cold data area 55 is very small. Therefore, for the Cold data area 55, even if the write amplification is large, the program/erase count of the physical block group of the Cold data area 55 immediately reaches the upper limit value of the SSD3 program/erase count. It does not occur.

図4は、複数の領域51〜55とこれら領域51〜55にライトされるデータとの関係を示す。 FIG. 4 shows the relationship between the plurality of areas 51 to 55 and the data written in these areas 51 to 55.

NANDメモリ5は、ネームスペースNS#1〜NS#5に対応する領域51〜55に論理的に分割されている。ネームスペースNS#1のID(NSID=1)に関連付けられたライトデータ、つまり、Hotデータは、領域51にライトされる。ネームスペースNS#2のID(NSID=2)に関連付けられたライトデータ、つまり、Warmデータは、領域52にライトされる。同様にして、ネームスペースNS#nのID(NSID=n)に関連付けられたライトデータ、つまり、Coldデータは、領域55にライトされる。 The NAND memory 5 is logically divided into areas 51 to 55 corresponding to the namespaces NS#1 to NS#5. Write data associated with the ID of the namespace NS#1 (NSID=1), that is, Hot data, is written in the area 51. Write data associated with the ID (NSID=2) of the namespace NS#2, that is, Warm data, is written in the area 52. Similarly, the write data associated with the ID (NSID=n) of the namespace NS#n, that is, the Cold data, is written in the area 55.

図5は、SSD3によるネームスペース管理を示す。 FIG. 5 shows namespace management by SSD3.

ここでは、複数のネームスペースNS#1〜NS#nが作成されている場合を想定する。ネームスペースNS#1には、0〜E0の論理アドレス空間(LBA空間)A1が割り当てられている。ネームスペースNS#2には、0〜E1の論理アドレス空間(LBA空間)A2が割り当てられている。同様に、ネームスペースNS#nには、0〜Enの論理アドレス空間(LBA空間)Anが割り当てられている。 Here, it is assumed that a plurality of namespaces NS#1 to NS#n are created. A logical address space (LBA space) A1 of 0 to E0 is allocated to the name space NS#1. A logical address space (LBA space) A2 of 0 to E1 is allocated to the name space NS#2. Similarly, a logical address space (LBA space) An of 0 to En is allocated to the namespace NS#n.

本実施形態では、ルックアップテーブルLUTは、ネームスペース毎に分割されている。つまり、ネームスペースNS#1〜NS#nに対応するn個のルックアップテーブルLUT#1〜LUT#nがSSD3のコントローラ4によって管理される。 In this embodiment, the lookup table LUT is divided for each namespace. That is, n lookup tables LUT#1 to LUT#n corresponding to the namespaces NS#1 to NS#n are managed by the controller 4 of the SSD 3.

ルックアップテーブルLUT#1は、ネームスペースNS#1のLBA空間A1とNANDメモリ5の物理アドレスとの間のマッピングを管理する。ルックアップテーブルLUT#2は、ネームスペースNS#2のLBA空間A2とNANDメモリ5の物理アドレスとの間のマッピングを管理する。ルックアップテーブルLUT#nは、ネームスペースNS#nのLBA空間AnとNANDメモリ5の物理アドレスとの間のマッピングを管理する。 The lookup table LUT#1 manages the mapping between the LBA space A1 of the namespace NS#1 and the physical address of the NAND memory 5. The lookup table LUT#2 manages the mapping between the LBA space A2 of the namespace NS#2 and the physical address of the NAND memory 5. The lookup table LUT#n manages the mapping between the LBA space An of the namespace NS#n and the physical address of the NAND memory 5.

コントローラ14は、ルックアップテーブルLUT#1〜LUT#nを使用することによって、ネームスペース(領域)毎に独立してガベージコレクション動作を行う事ができる。 The controller 14 can perform the garbage collection operation independently for each namespace (area) by using the lookup tables LUT#1 to LUT#n.

管理データ100は、ネームスペースNS#1〜NS#nとこれらネームスペースNS#1〜NS#nに割り当てられた物理ブロックの個数との間の関係を示す情報を保持しても良い。 The management data 100 may hold information indicating the relationship between the namespaces NS#1 to NS#n and the number of physical blocks allocated to these namespaces NS#1 to NS#n.

本実施形態においては、ガベージコレクションによって生成されたフリーブロックは、ネームスペースNS#1〜NS#n間で共有することができる。 In this embodiment, the free block generated by garbage collection can be shared between the namespaces NS#1 to NS#n.

図6は、拡張ネームスペース管理コマンドを示す。 FIG. 6 shows an extended namespace management command.

拡張ネームスペース管理コマンドは、ネームスペースの作成および削除を含むネームスペース管理のために使用される。拡張ネームスペース管理コマンドは、以下のパラメータを含む。 Extended namespace management commands are used for namespace management, including namespace creation and deletion. The extended namespace management command includes the following parameters.

(1)作成/削除
(2)LBA範囲
(3)物理リソースサイズ
(4)tier属性(オプショナル)
作成/削除のパラメータの値0hは、ネームスペースの作成をSSD3に要求する。作成/削除のパラメータの値1hは、ネームスペースの削除をSSD3に要求する。ネームスペースの削除を要求する場合には、削除対象のネームスペースのIDを示すパラメータが拡張ネームスペース管理コマンドに設定される。
(1) Creation/deletion (2) LBA range (3) Physical resource size (4) tier attribute (optional)
A value of 0h for the create/delete parameter requests SSD3 to create a namespace. The value 1h of the create/delete parameter requests SSD3 to delete the namespace. When requesting deletion of a namespace, a parameter indicating the ID of the namespace to be deleted is set in the extended namespace management command.

LBA範囲のパラメータは、ネームスペースのLBA範囲(LBA0〜n−1)を示す。このLBA範囲は、このネームスペースのユーザ領域にマッピングされる。 The LBA range parameter indicates the LBA range (LBA0 to n-1) of the namespace. This LBA range is mapped to the user area of this namespace.

物理リソースサイズのパラメータは、ネームスペース用に確保されるべき物理ブロックの個数を示す。 The physical resource size parameter indicates the number of physical blocks to be reserved for the namespace.

別の実施形態では、拡張ネームスペース管理コマンドは、物理リソースサイズのパラメータ代わりに、オーバープロビジョンのサイズを示すパラメータを含んでいてもよい。 In another embodiment, the extended namespace management command may include a parameter indicating the size of overprovision instead of the physical resource size parameter.

オーバープロビジョンのサイズのパラメータは、ネームスペースに関連付けられた領域内のオーバープロビジョン領域用に確保されるべき物理ブロックの個数を示す。もし拡張ネームスペース管理コマンドがオーバープロビジョンのサイズのパラメータを含むならば、SSD3は、ネームスペースを作成し、且つこのネームスペースに関連付けられた領域内のオーバープロビジョン領域に、このパラメータによって指定された個数の物理ブロックを割り当ててもよい。 The overprovision size parameter indicates the number of physical blocks to be reserved for the overprovision area in the area associated with the namespace. If the extended namespace management command includes a parameter of size of overprovisioning, SSD3 creates the namespace and specifies by this parameter the overprovision area within the area associated with this namespace. A different number of physical blocks may be assigned.

tier属性のパラメータは、このネームスペースに対応する階層属性を示す。tier属性のパラメータの値とtier属性との関係は、次の通りである。 The tier attribute parameter indicates the hierarchical attribute corresponding to this namespace. The relationship between the value of the tier attribute parameter and the tier attribute is as follows.

000: Hot
001: Warm
010: Middle
011: Cool
100: Cold
図7は、ホスト2とSSD3とによって実行される物理リソース割り当て処理のシーケンスを示す。
000: Hot
001: Warm
010: Middle
011: Cool
100: Cold
FIG. 7 shows a sequence of physical resource allocation processing executed by the host 2 and the SSD 3.

ホスト2は、ネームスペース(Hotデータ用の領域)の作成を要求する拡張ネームスペース管理コマンドをSSD3に送出する。この拡張ネームスペース管理コマンドは、Hotデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。SSD3内の一つの物理ブロックの容量はSSD3からホスト2に報告されているので、ホスト2は、Hotデータ用の領域に適した個数の物理ブロックを要求することができる。この拡張ネームスペース管理コマンドの受信に応答して、SSD3のコントローラ4は、ネームスペース(NS#1)を作成し、このネームスペース(NS#1)に、指定された個数の物理ブロックを割り当てる(ステップS11)。コントローラ4は、コマンド完了を示すレスポンスをホスト2に送出する。このレスポンスは、作成されたネームスペースのIDを含んでいてもよい。 The host 2 sends an extended namespace management command requesting the creation of a namespace (area for Hot data) to the SSD 3. This extended namespace management command includes a physical resource size parameter that specifies the number of physical blocks to be reserved for the Hot data area. Since the capacity of one physical block in the SSD 3 is reported from the SSD 3 to the host 2, the host 2 can request the number of physical blocks suitable for the hot data area. In response to the reception of this extended namespace management command, the controller 4 of the SSD 3 creates a namespace (NS#1) and allocates a specified number of physical blocks to this namespace (NS#1) ( Step S11). The controller 4 sends a response indicating the completion of the command to the host 2. This response may include the ID of the created namespace.

ホスト2は、次のネームスペース(Warmデータ用の領域)の作成を要求する拡張ネームスペース管理コマンドをSSD3に送出する。この拡張ネームスペース管理コマンドは、Warmデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。この拡張ネームスペース管理コマンドの受信に応答して、SSD3のコントローラ4は、ネームスペース(NS#2)を作成し、このネームスペース(NS#2)に、指定された個数の物理ブロックを割り当てる(ステップS12)。コントローラ4は、コマンド完了を示すレスポンスをホスト2に送出する。このレスポンスは、作成されたネームスペースのIDを含んでいてもよい。 The host 2 sends an extended name space management command requesting the creation of the next name space (area for Warm data) to the SSD 3. This extended namespace management command includes a physical resource size parameter that specifies the number of physical blocks that should be reserved for the Warm data area. In response to the reception of this extended namespace management command, the controller 4 of the SSD 3 creates a namespace (NS#2) and allocates a specified number of physical blocks to this namespace (NS#2) ( Step S12). The controller 4 sends a response indicating the completion of the command to the host 2. This response may include the ID of the created namespace.

同様にして、ネームスペース(Middleデータ用の領域)、ネームスペース(Coolデータ用の領域)が作成される。 Similarly, a namespace (area for Middle data) and a namespace (area for Cool data) are created.

そして、ホスト2は、次のネームスペース(Coldデータ用の領域)の作成を要求する拡張ネームスペース管理コマンドをSSD3に送出する。この拡張ネームスペース管理コマンドは、Coldデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。この拡張ネームスペース管理コマンドの受信に応答して、SSD3のコントローラ4は、ネームスペース(NS#n)を作成し、このネームスペース(NS#n)に、指定された個数の物理ブロックを割り当てる(ステップS13)。コントローラ4は、コマンド完了を示すレスポンスをホスト2に送出する。このレスポンスは、作成されたネームスペースのIDを含んでいてもよい。 Then, the host 2 sends to the SSD 3 an extended namespace management command requesting the creation of the next namespace (area for Cold data). This extended namespace management command includes a physical resource size parameter that specifies the number of physical blocks that should be reserved for the area for Cold data. In response to the reception of this extended namespace management command, the controller 4 of the SSD 3 creates a namespace (NS#n) and allocates a specified number of physical blocks to this namespace (NS#n) ( Step S13). The controller 4 sends a response indicating the completion of the command to the host 2. This response may include the ID of the created namespace.

このようにして、指定された個数の物理ブロックをネームスペースに割り当てながらネームスペースを作成する処理が繰り返されることによって、NANDメモリ5は複数の領域に論理的に分割され、さらに領域毎に、指定された個数の物理ブロックが割り当てられる。 In this way, by repeating the process of creating a namespace while allocating the designated number of physical blocks to the namespace, the NAND memory 5 is logically divided into a plurality of regions, and further, the designation is performed for each region. The allocated number of physical blocks is allocated.

図8のフローチャートは、SSD3によって実行される物理リソース割り当て処理の手順を示す。 The flowchart of FIG. 8 shows the procedure of the physical resource allocation processing executed by the SSD 3.

SSD3のコントローラ4は、拡張ネームスペース管理コマンドをホスト2から受信する(ステップS21)。コントローラ4は、拡張ネームスペース管理コマンド内の作成/削除パラメータに基づいて、拡張ネームスペース管理コマンドがネームスペースの作成を要求しているか否かを判定する(ステップS22)。 The controller 4 of the SSD 3 receives the extended namespace management command from the host 2 (step S21). The controller 4 determines whether or not the extended namespace management command requests the creation of a namespace based on the creation/deletion parameter in the extended namespace management command (step S22).

拡張ネームスペース管理コマンドがネームスペースの作成を要求しているならば(ステップS22のYES)、コントローラ4は、拡張ネームスペース管理コマンド内の物理リソースパラメータによって指定された個数の物理ブロックを確保可能か否かを、フリーブロック群内の残り物理ブロックの個数に基づいて判定する(ステップS23)。 If the extended namespace management command requests the creation of a namespace (YES in step S22), the controller 4 can secure the number of physical blocks designated by the physical resource parameter in the extended namespace management command. Whether or not it is determined based on the number of remaining physical blocks in the free block group (step S23).

物理ブロックの個数が、指定された個数以上であるならば(ステップS23のYES)、コントローラ4は、ネームスペースを作成し、指定された個数の物理ブロックを、このネームスペースに関連付けられた領域に割り当てる(ステップS24)。コントローラ4は、コマンド完了をホスト2に通知する(ステップS25)。 If the number of physical blocks is greater than or equal to the designated number (YES in step S23), the controller 4 creates a namespace and stores the designated number of physical blocks in the area associated with this namespace. Allocate (step S24). The controller 4 notifies the host 2 of the command completion (step S25).

残り物理ブロックの個数が、指定された個数よりも少ないならば(ステップS23のNO)、コントローラ4は、エラーをホスト2に通知する(ステップS26)。エラーが報告されたホスト2は、確保すべき物理ブロックの個数を変更してもよい。あるいは、エラーのレスポスが通知されたホスト2は、各ネームスペース用に確保すべき物理ブロックの個数を指定しながらネームスペースそれぞれを作成する処理を、最初からやり直しても良い。 If the number of remaining physical blocks is smaller than the designated number (NO in step S23), the controller 4 notifies the host 2 of an error (step S26). The host 2 that has reported the error may change the number of physical blocks to be secured. Alternatively, the host 2 notified of the error response may restart the process of creating each namespace while designating the number of physical blocks to be reserved for each namespace.

図9のフローチャートは、ホスト2よって実行されるライトコマンド送出処理の手順を示す。 The flowchart of FIG. 9 shows the procedure of the write command transmission process executed by the host 2.

ホスト2は、データをライトする要求が発生した時(ステップS31のYES)、このライトデータ(書き込むべきデータ)を、Hotデータ、Warmデータ、Middleデータ、Coolデータ、またはColdデータとして分類する(ステップS32)。ホスト2は、例えば、メタデータ、ファイルの中身(コンテンツ)といったデータ種別に応じて、ライトデータ(書き込むべきデータ)を、Hotデータ、Warmデータ、Middleデータ、Coolデータ、またはColdデータとして分類してもよい。 When a request to write data occurs (YES in step S31), the host 2 classifies the write data (data to be written) as Hot data, Warm data, Middle data, Cool data, or Cold data (step S31). S32). The host 2 classifies the write data (data to be written) as Hot data, Warm data, Middle data, Cool data, or Cold data according to the data type such as metadata or file content (content). Good.

ライトデータがHotデータであるならば(ステップS33のYES)、ホスト2は、Hotデータ用のネームスペースのID(NSID#1)を含むライトコマンドをSSD3に送出する(ステップS36)。 If the write data is Hot data (YES in step S33), the host 2 sends a write command including the ID (NSID#1) of the namespace for Hot data to the SSD 3 (step S36).

ライトデータがWarmデータであるならば(ステップS34のYES)、ホスト2は、Warmデータ用のネームスペースのID(NSID#2)を含むライトコマンドをSSD3に送出する(ステップS37)。 If the write data is Warm data (YES in step S34), the host 2 sends a write command including the ID (NSID#2) of the namespace for Warm data to the SSD 3 (step S37).

ライトデータがColdデータであるならば(ステップS35のYES)、ホスト2は、Coldデータ用のネームスペースのID(NSID#n)を含むライトコマンドをSSD3に送出する(ステップS38)。 If the write data is Cold data (YES in step S35), the host 2 sends a write command including the ID (NSID#n) of the cold data namespace to the SSD 3 (step S38).

図10は、ライトコマンドを示す。 FIG. 10 shows a write command.

ライトコマンドは、以下のパラメータを含む。 The write command includes the following parameters.

(1)先頭LBA
(2)論理ブロックの数
(3)ネームスペースID
先頭LBAのパラメータは、書き込まれるべきデータの先頭LBAを示す。
(1) First LBA
(2) Number of logical blocks (3) Name space ID
The parameter of the head LBA indicates the head LBA of the data to be written.

論理ブロックの数のパラメータは、書き込まれるべきデータに対応する論理ブロックの数(つまり、転送長)を示す。 The number of logical blocks parameter indicates the number of logical blocks (that is, the transfer length) corresponding to the data to be written.

ネームスペースIDのパラメータは、データがライトされるべきネームスペースのIDを示す。 The namespace ID parameter indicates the ID of the namespace in which the data should be written.

図11は、ホスト2とSSD3とによって実行されるライト動作の処理シーケンスを示す。 FIG. 11 shows a processing sequence of a write operation executed by the host 2 and SSD 3.

ホスト2は、ライトコマンドをSSD3に送出し、ライトデータをSSD3に送出する。SSD3のコントローラ4は、ライトデータをライトバッファ(WB)31にライトし(ステップS41)、そしてコマンド完了command completionのレスポンスをホスト2に通知する。この後、コントローラ4は、ライトデータを、ライトコマンド内のネームスペースIDによって指定されるネームスペースに関連付けられた領域内の利用可能ブロックにライトする(ステップS42)。 The host 2 sends a write command to SSD3 and sends write data to SSD3. The controller 4 of the SSD 3 writes the write data to the write buffer (WB) 31 (step S41), and notifies the host 2 of the response of command completion command completion. After that, the controller 4 writes the write data to an available block in the area associated with the namespace specified by the namespace ID in the write command (step S42).

図12は、SSD3によって実行されるガベージコレクション動作およびコピー先フリーブロック割り当て動作を示す。 FIG. 12 shows a garbage collection operation and a copy destination free block allocation operation executed by the SSD 3.

上述したように、ガベージコレクション動作はネームスペース毎に実行される。ネームスペース(NS#1)のガベージコレクション動作においては、SSD3のコントローラ4は、ネームスペース(NS#1)に関連付けられた領域51内の物理ブロック(アクティブブロック)から、ガベージコレクションの対象物理ブロックを選択する。例えば、コントローラ4は、ルックアップテーブルLUT#1を参照することによって無効データの比率が最も大きい上位幾つかの物理ブロックを特定し、この物理ブロックをガベージコレクションの対象物理ブロックとして選択してもよい。 As described above, the garbage collection operation is executed for each namespace. In the garbage collection operation of the namespace (NS#1), the controller 4 of the SSD 3 extracts the target physical block for garbage collection from the physical blocks (active blocks) in the area 51 associated with the namespace (NS#1). select. For example, the controller 4 may refer to the lookup table LUT#1 to specify some upper physical blocks having the highest ratio of invalid data, and select the physical blocks as the target physical blocks for garbage collection. ..

コントローラ4は、ネームスペース間で共有されるフリーブロック群を含むフリーブロックプール(フリーブロックリスト)60を管理する。コントローラ4は、フリーブロック群から、最小のプログラム/イレーズ回数のフリーブロックを選択する。コントローラ4は、選択されたフリーブロックを、ネームスペース(NS#1)に、コピー先フリーブロックB1000として割り当てる。コントローラ4は、ガベージコレクションの対象物理ブロック群(ここでは、ブロックB0〜B3)からコピー先フリーブロックB1000に全ての有効データをコピーする。そして、コントローラ4は、ルックアップテーブルLUT#1を更新して、有効データをコピー先フリーブロックB1000にマッピングする。ガベージコレクションの対象物理ブロック群B0〜B3は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプールに移動される。 The controller 4 manages a free block pool (free block list) 60 including a group of free blocks shared between namespaces. The controller 4 selects a free block having the minimum number of program/erase times from the free block group. The controller 4 allocates the selected free block to the namespace (NS#1) as the copy destination free block B1000. The controller 4 copies all valid data from the target physical block group for garbage collection (here, blocks B0 to B3) to the copy destination free block B1000. Then, the controller 4 updates the lookup table LUT#1 and maps the valid data to the copy destination free block B1000. The target physical block groups B0 to B3 for garbage collection are free blocks that do not include valid data. These free blocks are moved to the free block pool.

他のネームスペース(NS#2〜NS#n)についても同様にしてガベージコレクション動作が実行される。 The garbage collection operation is similarly performed for the other namespaces (NS#2 to NS#n).

例えば、ネームスペース(NS#n)のガベージコレクション動作においては、コントローラ4は、ネームスペース(NS#n)に関連付けられた領域55内の物理ブロック(アクティブブロック)から、ガベージコレクションの対象物理ブロックを選択する。例えば、コントローラ4は、ルックアップテーブルLUT#nを参照することによって無効データの比率が最も大きい上位幾つかの物理ブロックを特定し、この物理ブロックをガベージコレクションの対象物理ブロックとして選択してもよい。 For example, in the garbage collection operation of the namespace (NS#n), the controller 4 selects the target physical block for garbage collection from the physical blocks (active blocks) in the area 55 associated with the namespace (NS#n). select. For example, the controller 4 may identify some upper physical blocks with the highest ratio of invalid data by referring to the lookup table LUT#n and select the physical blocks as the target physical blocks for garbage collection. ..

コントローラ4は、フリーブロック群から、最小のプログラム/イレーズ回数のフリーブロックを選択する。コントローラ4は、選択されたフリーブロックを、ネームスペース(NS#n)に、コピー先フリーブロックB1001として割り当てる。コントローラ4は、ガベージコレクションの対象物理ブロック群(ここでは、ブロックB2000〜B2003)からコピー先フリーブロックB1001に全ての有効データをコピーする。そして、コントローラ4は、ルックアップテーブルLUT#nを更新して、有効データをコピー先フリーブロックB1001にマッピングする。ガベージコレクションの対象物理ブロック群B2000〜B2003は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプールに移動される。 The controller 4 selects a free block having the minimum number of program/erase times from the free block group. The controller 4 allocates the selected free block to the namespace (NS#n) as the copy destination free block B1001. The controller 4 copies all valid data from the target physical block group (here, blocks B2000 to B2003) of the garbage collection to the copy destination free block B1001. Then, the controller 4 updates the lookup table LUT#n and maps the valid data to the copy destination free block B1001. The target physical block groups B2000 to B2003 for garbage collection are free blocks that do not include valid data. These free blocks are moved to the free block pool.

上述したように、ネームスペース(NS#n)の更新の頻度はネームスペース(NS#1)の更新の頻度よりも遙かに低いので、ネームスペース(NS#n)のガベージコレクションによって作り出されたフリーブロックのプログラム/イレーズ回数は少ない。本実施形態のガベージコレクション動作においては、ネームスペース(NS#1)のガベージコレクションが実行される度に、ネームスペース(NS#n)で過去に使用されていた物理ブロックがネームスペース(NS#1)のコピー先フリーブロックとして割り当てられる。したがって、ネームスペース(NS#n)で使用されていた、プログラム/イレーズ回数の少ない物理ブロックを、ネームスペース(NS#1)において有効に再利用することが可能となる。この結果、ネームスペース(NS#1)の耐久性を改善することができる。 As described above, since the update frequency of the namespace (NS#n) is much lower than the update frequency of the namespace (NS#1), it is created by the garbage collection of the namespace (NS#n). The number of free block programs/erases is small. In the garbage collection operation of this embodiment, every time the garbage collection of the namespace (NS#1) is executed, the physical block used in the past in the namespace (NS#n) is renamed to the namespace (NS#1). ) Is allocated as a copy destination free block. Therefore, it is possible to effectively reuse the physical block used in the namespace (NS#n) and having a small number of programs/erases in the namespace (NS#1). As a result, the durability of the namespace (NS#1) can be improved.

さらに、コントローラ4は、ネームスペース(NS#1)の耐久性を改善するために、ネームスペース(NS#1)とネームスペース(NS#n)との間で物理ブロックを入れ替えるウェアレベリング処理を実行することもできる。例えば、ネームスペース(NS#1)で使用されている物理ブロックのいずれかの物理ブロックのプログラム/イレーズ回数が閾回数(閾回数はプログラム/イレーズ回数の上限よりも少ない値に設定されている)に達したならば、コントローラ4は、この物理ブロックを、ネームスペース(NS#n)内の最小プログラム/イレーズ回数の物理ブロックと入れ替えてもよい。 Further, the controller 4 executes a wear leveling process of exchanging physical blocks between the namespace (NS#1) and the namespace (NS#n) in order to improve the durability of the namespace (NS#1). You can also do it. For example, the program/erase count of one of the physical blocks used in the namespace (NS#1) is the threshold count (the threshold count is set to a value smaller than the upper limit of the program/erase count). Controller 4, the controller 4 may replace the physical block with a physical block having the minimum program/erase count in the namespace (NS#n).

図13は、SSD3によって実行されるライトデータ量カウント処理を示す。 FIG. 13 shows a write data amount counting process executed by the SSD 3.

SSD3のコントローラ4は、SSD3全体のライトアンプリフィケーションではなく、ネームスペース毎のライトアンプリフィケーションを算出することができる。このために、コントローラ4は、ホスト2によってライトされたデータの量をカウントするためのカウンタとガベージコレクション動作によってライトされたデータの量をカウントするためのカウンタとの2種類のカウンタを、ネームスペース毎に備える。 The controller 4 of the SSD 3 can calculate the write amplification for each namespace instead of the write amplification of the SSD 3 as a whole. To this end, the controller 4 uses two types of counters, a counter for counting the amount of data written by the host 2 and a counter for counting the amount of data written by the garbage collection operation, in the namespace. Prepare for each.

カウンタ61およびカウンタ62は、ネームスペース(NS#1)のライトアンプリフィケーションを算出するために使用される。カウンタ61は、ホスト2によってネームスペース(NS#1)、つまり領域51、にライトされたデータの量をカウントする。カウンタ62は、ネームスペース(NS#1)のガベージコレクションによってネームスペース(NS#1)、つまり領域51、にライトされたデータの量をカウントする。 The counter 61 and the counter 62 are used to calculate the write amplification of the namespace (NS#1). The counter 61 counts the amount of data written by the host 2 to the namespace (NS#1), that is, the area 51. The counter 62 counts the amount of data written in the namespace (NS#1), that is, the area 51 by garbage collection of the namespace (NS#1).

カウンタ63およびカウンタ64は、ネームスペース(NS#2)のライトアンプリフィケーションを算出するために使用される。カウンタ63は、ホスト2によってネームスペース(NS#2)、つまり領域52、にライトされたデータの量をカウントする。カウンタ64は、ネームスペース(NS#2)のガベージコレクションによってネームスペース(NS#2)、つまり領域52、にライトされたデータの量をカウントする。 The counter 63 and the counter 64 are used to calculate the write amplification of the namespace (NS#2). The counter 63 counts the amount of data written by the host 2 to the namespace (NS#2), that is, the area 52. The counter 64 counts the amount of data written in the namespace (NS#2), that is, the area 52, by garbage collection of the namespace (NS#2).

カウンタ65およびカウンタ66は、ネームスペース(NS#n)のライトアンプリフィケーションを算出するために使用される。カウンタ65は、ホスト2によってネームスペース(NS#n)、つまり領域55、にライトされたデータの量をカウントする。カウンタ66は、ネームスペース(NS#n)のガベージコレクションによってネームスペース(NS#n)、つまり領域55、にライトされたデータの量をカウントする。 The counter 65 and the counter 66 are used to calculate the write amplification of the namespace (NS#n). The counter 65 counts the amount of data written by the host 2 to the namespace (NS#n), that is, the area 55. The counter 66 counts the amount of data written in the namespace (NS#n), that is, the area 55 by the garbage collection of the namespace (NS#n).

図14のフローチャートは、SSD3によって実行されるライトデータ量カウント処理の手順を示す。 The flowchart of FIG. 14 shows the procedure of the write data amount counting process executed by the SSD 3.

SSD3のコントローラ4がホスト2からライトコマンドを受信した時、コントローラ4は、ライトコマンド内に含まれるネームスペースIDに基づいて、ライトデータがライトされるべき対象ネームスペース(領域)を決定する(ステップS41〜S43)。そして、コントローラ4は、ライトデータを対象ネームスペース(領域)にライトすると共に、ライトされるデータの量をカウントする(ステップS44〜S46)。 When the controller 4 of the SSD 3 receives the write command from the host 2, the controller 4 determines the target namespace (area) to which the write data is to be written, based on the namespace ID included in the write command (step). S41 to S43). Then, the controller 4 writes the write data in the target namespace (area) and counts the amount of data to be written (steps S44 to S46).

例えば、対象ネームスペース(領域)がネームスペース(NS#1)であれば(ステップS41のYES)、コントローラ4は、カウンタ61を使用して、ネームスペース(NS#1)にライトされるデータの量をカウントする(ステップS44)。ステップS44では、カウンタ61の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。 For example, when the target namespace (area) is the namespace (NS#1) (YES in step S41), the controller 4 uses the counter 61 to store the data written in the namespace (NS#1). The amount is counted (step S44). In step S44, the current count value of the counter 61 may be increased by the transfer length of the write data.

対象ネームスペース(領域)がネームスペース(NS#2)であれば(ステップS42のYES)、コントローラ4は、カウンタ63を使用して、ネームスペース(NS#2)にライトされるデータの量をカウントする(ステップS45)。ステップS45では、カウンタ63の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。 If the target namespace (area) is the namespace (NS#2) (YES in step S42), the controller 4 uses the counter 63 to determine the amount of data written in the namespace (NS#2). Count (step S45). In step S45, the current count value of the counter 63 may be increased by the write data transfer length.

対象ネームスペース(領域)がネームスペース(NS#n)であれば(ステップS43のYES)、コントローラ4は、カウンタ65を使用して、ネームスペース(NS#n)にライトされるデータの量をカウントする(ステップS46)。ステップS46では、カウンタ65の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。 If the target namespace (area) is the namespace (NS#n) (YES in step S43), the controller 4 uses the counter 65 to determine the amount of data written in the namespace (NS#n). Count (step S46). In step S46, the current count value of the counter 65 may be increased by the transfer length of the write data.

ネームスペース(NS#1)のガベージコレクション動作が実行される時(ステップS51のYES)、コントローラ4は、カウンタ62を使用して、このガベージコレクション動作によってネームスペース(NS#1)にライトされるデータの量をカウントする(ステップS54)。ステップS54では、カウンタ62のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。 When the garbage collection operation of the namespace (NS#1) is executed (YES in step S51), the controller 4 uses the counter 62 to write to the namespace (NS#1) by this garbage collection operation. The amount of data is counted (step S54). In step S54, the count value of the counter 62 may be increased by the total amount of all valid data in the target block group of the garbage collection operation.

ネームスペース(NS#2)のガベージコレクション動作が実行される時(ステップS52のYES)、コントローラ4は、カウンタ64を使用して、このガベージコレクション動作によってネームスペース(NS#2)にライトされるデータの量をカウントする(ステップS55)。ステップS55では、カウンタ64のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。 When the garbage collection operation of the namespace (NS#2) is executed (YES in step S52), the controller 4 uses the counter 64 to write to the namespace (NS#2) by this garbage collection operation. The amount of data is counted (step S55). In step S55, the count value of the counter 64 may be increased by the total amount of all valid data in the target block group of the garbage collection operation.

ネームスペース(NS#n)のガベージコレクション動作が実行される時(ステップS53のYES)、コントローラ4は、カウンタ66を使用して、このガベージコレクション動作によってネームスペース(NS#n)にライトされるデータの量をカウントする(ステップS56)。ステップS56では、カウンタ66のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。 When the garbage collection operation of the namespace (NS#n) is executed (YES in step S53), the controller 4 uses the counter 66 to write to the namespace (NS#n) by this garbage collection operation. The amount of data is counted (step S56). In step S56, the count value of the counter 66 may be increased by the total amount of all valid data in the target block group of the garbage collection operation.

図15のフローチャートは、SSD3によって実行されるライトアンプリフィケーション(WA)算出処理の手順を示す。 The flowchart of FIG. 15 shows the procedure of the write amplification (WA) calculation process executed by the SSD 3.

SSD3のコントローラ4は、ホスト2によってネームスペース(NS#1)にライトされたデータの量(カウンタ61のカウント値)を取得する(ステップS61)。コントローラ4は、ネームスペース(NS#1)のガベージコレクション動作によってネームスペース(NS#1)にライトされたデータの量(カウンタ62のカウント値)を取得する(ステップS62)。コントローラ4は、カウンタ61のカウント値とカウンタ62のカウント値とに基づいて、ネームスペース(NS#1)のライトアンプリフィケーションを算出する(ステップS63)。ネームスペース(NS#1)のライトアンプリフィケーション(NS#1−WA)は、次のように得られる。 The controller 4 of the SSD 3 acquires the amount of data (count value of the counter 61) written in the namespace (NS#1) by the host 2 (step S61). The controller 4 acquires the amount of data (count value of the counter 62) written in the namespace (NS#1) by the garbage collection operation of the namespace (NS#1) (step S62). The controller 4 calculates the write amplification of the namespace (NS#1) based on the count value of the counter 61 and the count value of the counter 62 (step S63). The write amplification (NS#1-WA) of the namespace (NS#1) is obtained as follows.

NS#1−WA=「カウンタ61のカウント値+カウンタ62のカウント値」/「カウンタ61のカウント値」
コントローラ4は、ホスト2によってネームスペース(NS#2)にライトされたデータの量(カウンタ63のカウント値)を取得する(ステップS64)。コントローラ4は、ネームスペース(NS#2)のガベージコレクション動作によってネームスペース(NS#2)にライトされたデータの量(カウンタ64のカウント値)を取得する(ステップS65)。コントローラ4は、カウンタ63のカウント値とカウンタ64のカウント値とに基づいて、ネームスペース(NS#2)のライトアンプリフィケーションを算出する(ステップS66)。ネームスペース(NS#2)のライトアンプリフィケーション(NS#2−WA)は、次のように得られる。
NS#1-WA=“count value of counter 61+count value of counter 62”/“count value of counter 61”
The controller 4 acquires the amount of data (count value of the counter 63) written in the namespace (NS#2) by the host 2 (step S64). The controller 4 acquires the amount of data (count value of the counter 64) written in the namespace (NS#2) by the garbage collection operation of the namespace (NS#2) (step S65). The controller 4 calculates the write amplification of the namespace (NS#2) based on the count value of the counter 63 and the count value of the counter 64 (step S66). The write amplification (NS#2-WA) of the namespace (NS#2) is obtained as follows.

NS#2−WA=「カウンタ63のカウント値+カウンタ64のカウント値」/「カウンタ63のカウント値」
コントローラ4は、ホスト2によってネームスペース(NS#n)にライトされたデータの量(カウンタ65のカウント値)を取得する(ステップS67)。コントローラ4は、ネームスペース(NS#n)のガベージコレクション動作によってネームスペース(NS#n)にライトされたデータの量(カウンタ66のカウント値)を取得する(ステップS68)。コントローラ4は、カウンタ65のカウント値とカウンタ66のカウント値とに基づいて、ネームスペース(NS#n)のライトアンプリフィケーションを算出する(ステップS69)。ネームスペース(NS#n)のライトアンプリフィケーション(NS#n−WA)は、次のように得られる。
NS#2-WA=“count value of counter 63+count value of counter 64”/“count value of counter 63”
The controller 4 acquires the amount of data (count value of the counter 65) written in the namespace (NS#n) by the host 2 (step S67). The controller 4 acquires the amount of data (count value of the counter 66) written in the namespace (NS#n) by the garbage collection operation of the namespace (NS#n) (step S68). The controller 4 calculates the write amplification of the namespace (NS#n) based on the count value of the counter 65 and the count value of the counter 66 (step S69). The write amplification (NS#n-WA) of the namespace (NS#n) is obtained as follows.

NS#n−WA=「カウンタ65のカウント値+カウンタ66のカウント値」/「カウンタ65のカウント値」
ネームスペースそれぞれのライトアンプリフィケーションを要求するWAゲットコマンドがホスト2から受信された時(ステップS70のYES)、コントローラ4は、ホスト2に図16に示すリターンデータを送出して、ネームスペースそれぞれのライトアンプリフィケーションをホスト2に通知する(ステップS71)。
NS#n-WA=“count value of counter 65+count value of counter 66”/“count value of counter 65”
When a WA get command requesting write amplification for each namespace is received from the host 2 (YES in step S70), the controller 4 sends the return data shown in FIG. The write amplification of is notified to the host 2 (step S71).

ステップS61〜S69の処理は、WAゲットコマンドの受信に応答して実行されても良い。 The processes of steps S61 to S69 may be executed in response to the reception of the WA get command.

図17のフローチャートは、SSD3よって実行されるカウンタリセット処理の手順を示す。 The flowchart of FIG. 17 shows the procedure of the counter reset process executed by the SSD 3.

このカウンタリセット処理は、SSD3の設定の変更のような特定のリセットイベントが発生した後のSSD3の各ネームスペースのライトアンプリフィケーションを、ホスト2に提供するために利用される。SSD3の設定の変更の例は、あるネームスペースの設定の変更であってもよいし、あるネームスペースの削除であってもよい。あるいは、SSD3の設定の変更の例は、SSD3全体の設定の変更であってもよい。 This counter reset process is used to provide the host 2 with the write amplification of each namespace of the SSD 3 after a specific reset event such as a change in the setting of the SSD 3 has occurred. An example of changing the setting of the SSD 3 may be changing the setting of a certain namespace or deleting a certain namespace. Alternatively, an example of changing the setting of the SSD 3 may be changing the setting of the SSD 3 as a whole.

SSD3は、ホスト2からの要求に応じて、カウンタリセット処理を実行する。 The SSD 3 executes counter reset processing in response to a request from the host 2.

この要求は、カウンタをリセットすることを要求するコマンドであってもよい。このコマンドの受信に応答して、SSD3は、全てのネームスペースに対応するカウンタ61〜66をリセットしてもよい。このコマンドがネームスペースIDを含む場合には、SSD3は、ネームスペースIDに対応するネームスペースに関連付けられた2つのカウンタだけをリセットしてもよい。 This request may be a command requesting to reset the counter. In response to receiving this command, SSD3 may reset the counters 61 to 66 corresponding to all namespaces. If this command contains a namespace ID, SSD3 may only reset the two counters associated with the namespace corresponding to the namespace ID.

あるいは、あるネームスペースの設定またはSSD3全体の設定を変更するためのコントロールコマンドを、この要求として取り扱っても良い。あるネームスペースの設定の変更は、このネームスペースのサイズ(LBA範囲)の変更であってもよいし、このネームスペース用の物理ブロックの個数の変更であってもよい。 Alternatively, a control command for changing the setting of a certain namespace or the setting of the SSD 3 as a whole may be treated as this request. The change of the setting of a certain namespace may be the change of the size (LBA range) of this namespace or the change of the number of physical blocks for this namespace.

以下では、限定されないが、あるネームスペースの設定の変更に応答してカウンタリセット処理が実行される場合を例示してカウンタリセット処理の手順を説明する。 The procedure of the counter reset process will be described below by exemplifying, but not limited to, the case where the counter reset process is executed in response to a change in a certain namespace setting.

コントローラ4がネームスペースの設定の変更を要求するコントロールコマンドをホスト2から受信した時、コントローラ4は、コントロールコマンド内のネームスペースIDに基づいて、設定変更の対象ネームスペースを決定する。 When the controller 4 receives from the host 2 a control command requesting to change the setting of the namespace, the controller 4 determines the target namespace of the setting change based on the namespace ID in the control command.

対象ネームスペースがネームスペース(NS#1)ならば(ステップS81のYES)、コントローラ4は、コントロールコマンド内のパラメータに従ってネームスペース(NS#1)の設定を変更する(ステップS82)。コントローラ4は、ネームスペース(NS#1)に対応するカウンタ61、62のカウント値をゼロにクリアする(ステップS83)。 If the target namespace is the namespace (NS#1) (YES in step S81), the controller 4 changes the setting of the namespace (NS#1) according to the parameter in the control command (step S82). The controller 4 clears the count values of the counters 61 and 62 corresponding to the namespace (NS#1) to zero (step S83).

対象ネームスペースがネームスペース(NS#2)ならば(ステップS84のYES)、コントローラ4は、コントロールコマンド内のパラメータに従ってネームスペース(NS#2)の設定を変更する(ステップS85)。コントローラ4は、ネームスペース(NS#2)に対応するカウンタ63、64のカウント値をゼロにクリアする(ステップS86)。 If the target namespace is the namespace (NS#2) (YES in step S84), the controller 4 changes the setting of the namespace (NS#2) according to the parameter in the control command (step S85). The controller 4 clears the count values of the counters 63 and 64 corresponding to the namespace (NS#2) to zero (step S86).

対象ネームスペースがネームスペース(NS#n)ならば(ステップS87のYES)、コントローラ4は、コントロールコマンド内のパラメータに従ってネームスペース(NS#n)の設定を変更する(ステップS88)。コントローラ4は、ネームスペース(NS#n)に対応するカウンタ65、66のカウント値をゼロにクリアする(ステップS89)。 If the target namespace is the namespace (NS#n) (YES in step S87), the controller 4 changes the setting of the namespace (NS#n) according to the parameter in the control command (step S88). The controller 4 clears the count values of the counters 65 and 66 corresponding to the namespace (NS#n) to zero (step S89).

図18は、拡張ガベージコレクション(GC)制御コマンドを示す。 FIG. 18 shows an extended garbage collection (GC) control command.

上述したように、拡張ガベージコレクション(GC)制御コマンドは、ホスト2によってSSD3の任意のネームスペースのガベージコレクション動作を制御するためのホスト・イニシエーティッド・ガベージコレクションコマンドとして使用される。 As described above, the extended garbage collection (GC) control command is used by the host 2 as a host initiated garbage collection command for controlling the garbage collection operation of an arbitrary namespace of the SSD 3.

この拡張ガベージコレクション(GC)制御コマンドは、以下のパラメータを含む。 This extended garbage collection (GC) control command includes the following parameters.

(1)ネームスペースID
(2)フリーブロックの量
(3)タイマ
ネームスペースIDのパラメータは、ガベージコレクションが実行されるべき対象ネームスペースのIDを示す。
(1) Name space ID
(2) Amount of free blocks (3) Timer The parameter of the namespace ID indicates the ID of the target namespace in which garbage collection should be executed.

フリーブロックの量のパラメータは、対象ネームスペースのために確保されるべきフリーブロックの量(例えば、フリーブロックの個数)を示す。 The free block amount parameter indicates the amount of free blocks (for example, the number of free blocks) to be reserved for the target namespace.

タイマのパラメータは、ガベージコレクション動作の最大時間を指定する。 The timer parameter specifies the maximum time for garbage collection operation.

ホスト2は、拡張ガベージコレクション(GC)制御コマンドを使用することによって、ネームスペース(NS#1)〜ネームスペース(NS#n)内の任意のネームスペースのガベージコレクションの実行をSSD3に要求することができる。 The host 2 requests the SSD 3 to perform garbage collection of any namespace in the namespace (NS#1) to namespace (NS#n) by using the extended garbage collection (GC) control command. You can

例えば、ホスト2は、WAゲットコマンドをSSD3に定期的に送信することによって個々のネームスペース(領域)のライトアンプリフィケーションを監視してもよい。あるネームスペース(領域)のライトアンプリフィケーションがこのネームスペースに対応するライトアンプリフィケーション閾値に達した時、ホスト2は、このネームスペースのネームスペースIDを含む拡張ガベージコレクション(GC)制御コマンドをSSD3に送出してもよい。 For example, the host 2 may monitor the write amplification of each namespace (area) by periodically transmitting a WA Get command to the SSD 3. When the write amplification of a certain namespace (area) reaches the write amplification threshold value corresponding to this namespace, the host 2 sends an extended garbage collection (GC) control command including the namespace ID of this namespace. It may be sent to SSD3.

あるいは、ホスト2があるネームスペース(領域)へのデータのライトを良好なレイテンシで行うことを望む場合に、ホスト2は、このネームスペースのネームスペースIDを含む拡張ガベージコレクション(GC)制御コマンドをSSD3に送出してもよい。 Alternatively, if the host 2 wants to write data to a certain namespace (area) with good latency, the host 2 may issue an extended garbage collection (GC) control command containing the namespace ID of this namespace. It may be sent to SSD3.

ホスト2からの拡張ガベージコレクション(GC)制御コマンドの受信に応答して、SSD3のコントローラ4は、対象ネームスペースのための専用の、指定された量のフリースペースを確保するためのガベージコレクション動作を実行する。コントローラ4は、指定された量のフリースペースが確保された時点または最大時間が経過する時点のいずれか早いほうの時点で、ガベージコレクション動作を終了する。 In response to receiving the extended garbage collection (GC) control command from the host 2, the controller 4 of the SSD 3 performs a garbage collection operation for reserving a specified amount of free space dedicated for the target namespace. Execute. The controller 4 ends the garbage collection operation at the time when the specified amount of free space is secured or when the maximum time elapses, whichever is earlier.

図19のフローチャートは、SSD3によって実行されるガベージコレクション動作の手順を示す。 The flowchart of FIG. 19 shows the procedure of the garbage collection operation executed by the SSD 3.

SSD3のコントローラ4が拡張ガベージコレクション(GC)制御コマンドをホスト2から受信した時(ステップS91のYES)、コントローラ4は、拡張ガベージコレクション(GC)制御コマンド内のネームスペースIDによって指定される対象ネームスペースのガベージコレクション動作を実行する(ステップS92)。ステップS92では、コントローラ4は、対象ネームスペースのアクティブブロック群からガベージコレクション対象の幾つかの物理ブロックを選択し、これら物理ブロックの有効データをコピー先物理ブロックにコピーする。 When the controller 4 of the SSD 3 receives the extended garbage collection (GC) control command from the host 2 (YES in step S91), the controller 4 determines the target name specified by the namespace ID in the extended garbage collection (GC) control command. A space garbage collection operation is executed (step S92). In step S92, the controller 4 selects some physical blocks for garbage collection from the active block group of the target namespace, and copies the valid data of these physical blocks to the copy destination physical block.

ガベージコレクション動作は、指定された量のフリースペースが確保された時点または最大時間が経過する時点のいずれか早いほうの時点で、終了される(ステップS93、S94)。 The garbage collection operation is ended when the specified amount of free space is secured or when the maximum time elapses, whichever is earlier (steps S93 and S94).

図20は、データがライトされるべきネームスペース(領域)に応じて、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御する処理を示す。 FIG. 20 shows a process of controlling the ratio of the code for suppressing the consumption of the memory cell and the error correction code (ECC) according to the name space (area) where the data is to be written.

本実施形態においては、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御することによって信頼性(データリテンション)と耐久性(DWPD値)との間のトレードオフが最適化される。 In this embodiment, the trade-off between reliability (data retention) and durability (DWPD value) is achieved by controlling the ratio of the code for suppressing the consumption of the memory cell and the error correction code (ECC). Optimized.

ここで、1回の書き込み当たりのメモリセルの消耗を抑えるためのコード(コーディング)を使用して、ライトデータをエンコードする動作の概要について説明する。 Here, the outline of the operation of encoding the write data using the code (coding) for suppressing the consumption of the memory cell per one writing will be described.

SSD3のコントローラ4は、まず、メモリセルの消耗を抑制するためのコード(コーディング)を使用してライトデータをエンコードして、第1符号化データ(図20において“endurance code”と書かれている部分)を生成する。このコード(コーディング)は、メモリセルを激しく消耗させる特定の符号(高閾値電圧に対応する高プログラムレベルの符号)の出現頻度を下げために使用される。このコード(コーディング)としては、例えば、上述のendurance code(endurance coding)等がある。 The controller 4 of the SSD 3 first encodes the write data using a code (coding) for suppressing the consumption of the memory cells, and writes the first encoded data (in FIG. 20, written as “endurance code”). Part)). This code is used to reduce the frequency of occurrence of a specific code (a high program level code corresponding to a high threshold voltage) that consumes the memory cell severely. Examples of this code (coding) include the above-mentioned endurance code (endurance coding).

例えば、MLCにおいては、メモリセルは、プログラムによって、2ビットに対応する4つのレベル(“E”レベル、“A”レベル、“B”レベル、“C”レベル)のいずれかに対応する状態(プログラムレベル)に設定される。“E”レベルは消去状態である。メモリセルの閾値電圧分布は、“E”レベル、“A”レベル、“B”レベル、“C”レベルの順で高くなる。“C”レベルの状態は、メモリセルを激しく消耗させる状態(プログラムレベル)である。 For example, in the MLC, a memory cell corresponds to one of four levels (“E” level, “A” level, “B” level, “C” level) corresponding to 2 bits depending on a program ( Program level) is set. The "E" level is the erased state. The threshold voltage distribution of the memory cell becomes higher in the order of “E” level, “A” level, “B” level, and “C” level. The "C" level state is a state (program level) in which the memory cell is heavily consumed.

メモリセルの消耗を抑制するためのコード(コーディング)を使用したエンコードにおいては、例えば、メモリセルの消耗が大きい特定のレベル(例えば“C”レベル)に対応する符号が、別の符号(例えば、2つの“B”レベルが連続した“B−B”に対応した長いビットパターン)に変換されてもよい。 In encoding using a code for suppressing consumption of memory cells (coding), for example, a code corresponding to a specific level (for example, “C” level) in which consumption of memory cells is large is another code (for example, Two "B" levels may be converted into a long bit pattern corresponding to consecutive "BB".

このように、エンコードにおいては、メモリセルを消耗させる特定の符号(ビットパターン)が別の長い符号(ビットパターン)に置き換えられるので、ライトデータの符号語が延びる。このため、エンコードにおいては、コントローラ4は、まず、ライトデータを可逆圧縮してもよい。そして、コントローラ4は、圧縮されたライトデータ内の各特定のビットパターンを、メモリセルの消耗の少ない別の長いビットパターンに置き換えてもよい。 Thus, in encoding, a specific code (bit pattern) that consumes a memory cell is replaced with another long code (bit pattern), so that the code word of write data is extended. Therefore, in encoding, the controller 4 may first losslessly compress the write data. Then, the controller 4 may replace each specific bit pattern in the compressed write data with another long bit pattern that consumes less memory cells.

コントローラ4は、エンコードによって得られる第1符号化データ(図20における“endurance code”)にエラー訂正コード(ECC)を付加し、これによって第2符号化データ(図20における“endurance code”と“ECC”とを含むデータ)を生成し、この第2符号化データを物理ブロック内の利用可能ページにライトする。各ページはデータ領域と冗長領域とを含む。第2符号化データのビット長は、データ領域と冗長領域とを含むページのサイズにマッチする。 The controller 4 adds an error correction code (ECC) to the first encoded data (“endurance code” in FIG. 20) obtained by encoding, and thereby adds the second encoded data (“endurance code” and “endurance code” in FIG. 20). Data including ECC") is generated, and this second encoded data is written to an available page in the physical block. Each page includes a data area and a redundant area. The bit length of the second encoded data matches the size of the page including the data area and the redundant area.

さらに、コントローラ4は、第1符号化データとエラー訂正コード(ECC)の比率を、ライトデータがどの領域(ネームスペース)にライトされるかに応じて、自動的に変更する。 Further, the controller 4 automatically changes the ratio of the first encoded data and the error correction code (ECC) according to which area (name space) the write data is written to.

第1符号化データ(endurance code)が長くなるほど、メモリセルを激しく消耗させる特定の符号の出現頻度が減少される。したがって、第1符号化データ(endurance code)が長くなるほど、1回の書き込み当たりのメモリセルの消耗を抑制することができる。 The longer the first endurance code, the less frequently a particular code that consumes memory cells is reduced. Therefore, the longer the first encoded data (endurance code), the more the consumption of the memory cell per write can be suppressed.

例えば、ライトデータがHotデータ用の領域にライトされるべきライトデータである場合、コントローラ4は、Hotデータ用の領域の耐久性(DWPD)を高めるために、より長い第1符号化データとより短いエラー訂正コードの組み合わせを含む第2符号化データが得られるように第1符号化データとエラー訂正コードの比率を制御する。つまり、Hotデータのライトにおいては、信頼性(データリテンション)よりも耐久性を優先するエンコード方法が利用される。 For example, when the write data is the write data to be written in the hot data area, the controller 4 further increases the durability of the hot data area (DWPD) by using the longer first encoded data and The ratio of the first coded data and the error correction code is controlled so that the second coded data including the combination of the short error correction codes is obtained. That is, in writing Hot data, an encoding method that prioritizes durability over reliability (data retention) is used.

一方、ライトデータがColdデータ用の領域にライトされるべきライトデータである場合、コントローラ4は、Coldデータ用の領域にライトされるデータのデータリテンションを伸ばすために、より短い第1符号化データとより長いエラー訂正コードの組み合わせを含む第2符号化データが得られるように第1符号化データとエラー訂正コードの比率を制御する。つまり、Coldデータのライトにおいては、耐久性よりも信頼性(データリテンション)を優先するエンコード方法が利用される。 On the other hand, when the write data is the write data to be written in the area for Cold data, the controller 4 shortens the first encoded data in order to extend the data retention of the data written in the area for Cold data. The ratio of the first coded data and the error correction code is controlled so that the second coded data including a longer combination of error correction codes can be obtained. That is, in writing Cold data, an encoding method that prioritizes reliability (data retention) over durability is used.

本実施形態では、図20に示されているように、書き換え頻度(更新の頻度)が高いネームスペース(領域)ほど、ECCのビット長が短くなり、代わりに第1符号化データ(エンデュランスコード)のビット長が長くなる。また、書き換え頻度(更新の頻度)が低いネームスペース(領域)ほど、ECCのビット長が長くなり、代わりに第1符号化データ(エンデュランスコード)のビット長が短くなる。 In the present embodiment, as shown in FIG. 20, the higher the rewrite frequency (update frequency), the shorter the ECC (bit length) of the namespace (area), and instead the first encoded data (endurance code). The bit length of becomes longer. Further, the smaller the rewriting frequency (update frequency) of the namespace (area), the longer the ECC bit length, and instead the shorter the bit length of the first encoded data (endurance code).

ECCのビット長が長くなるほど、訂正可能なビットの数が増えるので、信頼性(データリテンション)が改善される。通常、時間の経過とともに、ビットエラーレートは増加する。したがって、訂正可能なビットの数の増加は、データリテンションを改善することができる。 Since the number of correctable bits increases as the ECC bit length increases, reliability (data retention) is improved. Generally, the bit error rate increases with time. Therefore, increasing the number of correctable bits can improve data retention.

一方、上述したように、エンデュランスコードのビット長が長くなるほど、ページ内のメモリセル群の消耗を抑えることができるので、耐久性が改善される。 On the other hand, as described above, the longer the bit length of the endurance code, the more the wear of the memory cell group in the page can be suppressed, and the durability is improved.

図21は、SSD3によって実行されるエンコード処理およびデコード処理を示す。 FIG. 21 shows an encoding process and a decoding process executed by the SSD 3.

SSD3のコントローラ4は、エンデュランスコードエンコーダ91、ECCエンコーダ92、エンデュランスコードデコーダ93、およびECCデコーダ94を含む。 The controller 4 of the SSD 3 includes an endurance code encoder 91, an ECC encoder 92, an endurance code decoder 93, and an ECC decoder 94.

ECCエンコーダ92およびECCデコーダ94は、ECCを生成するECCエンコード処理およびエラー訂正のためのECCデコード処理をそれぞれ実行する。ECCエンコーダ92においては、ECCを生成するために組織符号が使用される。組織符号としては、例えば、ハミング符号、BHC符号、リードソロモン符号、等がある。 The ECC encoder 92 and the ECC decoder 94 respectively execute an ECC encoding process for generating an ECC and an ECC decoding process for error correction. In the ECC encoder 92, the systematic code is used to generate the ECC. Examples of systematic codes include Hamming codes, BHC codes, Reed-Solomon codes, and the like.

エンデュランスコードエンコーダ91およびエンデュランスコードデコーダ93は、メモリセルの消耗を抑制するためのエンコード処理およびこのエンコード処理に対応するデコード処理を実行する。エンデュランスコードエンコーダ91においては、第1符号化データ(エンデュランスコード)を生成するために、非組織符号であるエンデュランスコードが使用される。エンデュランスコードエンコーダ91においては、上述したように、メモリセルを激しく消耗させる特定の符号(例えば“C”レベルに対応するビットパターン)が、別の長い符号(例えば、“B−B”に対応した長いビットパターン、等)に変換される。つまり、このエンコード処理は、符号語を伸張する伸張処理である。 The endurance code encoder 91 and the endurance code decoder 93 execute an encoding process for suppressing consumption of the memory cells and a decoding process corresponding to this encoding process. In the endurance code encoder 91, an endurance code that is a non-systematic code is used to generate the first encoded data (endurance code). In the endurance code encoder 91, as described above, the specific code (for example, the bit pattern corresponding to the “C” level) that consumes the memory cell drastically corresponds to another long code (for example, “BB”). Long bit patterns, etc.). That is, this encoding process is a decompression process for decompressing the codeword.

図22は、エンデュランスコードエンコーダ91の構成例を示す。 FIG. 22 shows a configuration example of the endurance code encoder 91.

エンデュランスコードエンコーダ91は、エントロピー解析部911、圧縮部912、探索部914、置き換え部915、符号長チェック部916、及び出力部917等を含む。 The endurance code encoder 91 includes an entropy analysis unit 911, a compression unit 912, a search unit 914, a replacement unit 915, a code length check unit 916, an output unit 917, and the like.

エントロピー解析部911は、ライトデータ内に出現するビットパターンそれぞれの出現回数(または出現確率)を求める。圧縮部912は、エントロピー解析部911の解析結果に基づきコードブック913を生成し、コードブック913を使用して、ライトデータを可逆圧縮する。コードブック913は、ライトデータ内に出現するビットパターンそれぞれとこれらビットパターンに対応する変換コードとの間の対応関係を示す。圧縮部912は、出現回数の多いビットパターンに短い変換コードを割り当てる。 The entropy analysis unit 911 obtains the number of appearances (or the appearance probability) of each bit pattern that appears in the write data. The compression unit 912 generates a codebook 913 based on the analysis result of the entropy analysis unit 911, and uses the codebook 913 to reversibly compress the write data. The code book 913 shows the correspondence between each bit pattern appearing in the write data and the conversion code corresponding to these bit patterns. The compression unit 912 assigns a short conversion code to a bit pattern having a large number of appearances.

探索部914は、メモリセルを激しく消耗させる特定の符号を求めて、圧縮データ(圧縮されたライトデータ)を例えばその最上位ビットから探索する。特定の符号は、例えば“C”レベルに対応するビットパターンであってもよい。置き換え部915は、探索部914によって探索された特定の符号を、別の長い符号(例えば、“B−B”に対応した長いビットパターン、等)に置き換える。これによって、圧縮データ内の特定の符号が、メモリセルの消耗が少ない別の長い符号に変換される。置き換え部915は、コードブック913を更新し、これによって、上述の特定の符号に対応するコードブック913内の特定の変換コードを、上述の別の長い符号に置き換える。 The search unit 914 searches for compressed data (compressed write data) from, for example, the most significant bit, in order to find a specific code that consumes memory cells severely. The specific code may be, for example, a bit pattern corresponding to the “C” level. The replacement unit 915 replaces the specific code searched by the search unit 914 with another long code (for example, a long bit pattern corresponding to “BB”). This converts a specific code in the compressed data into another long code that consumes less memory cells. The replacing unit 915 updates the codebook 913, thereby replacing the specific conversion code in the codebook 913 corresponding to the specific code described above with another long code described above.

符号長チェック部916は、現在の圧縮データの符号長(ビット長)をチェックする。現在の圧縮データの符号長(ビット長)が予め決められた閾値(ターゲットビット長)よりも短い場合、探索および置き換えの処理が繰り返される。これにより、現在の圧縮データの符号長が最適化される。 The code length check unit 916 checks the code length (bit length) of the current compressed data. When the code length (bit length) of the current compressed data is shorter than a predetermined threshold value (target bit length), the search and replacement process is repeated. This optimizes the code length of the current compressed data.

ターゲットビット長は、ライトデータがライトされるべきネームスペース(領域)に応じて適応的に変更される。したがって、書き換え頻度(更新の頻度)が高いネームスペース(領域)ほど、符号化データ(エンデュランスコード)のビット長が長くなる。換言すれば、書き換え頻度(更新の頻度)が低いネームスペース(領域)ほど、符号化データ(エンデュランスコード)のビット長が短くなる。 The target bit length is adaptively changed according to the name space (area) in which the write data is to be written. Therefore, the bit length of the encoded data (endurance code) becomes longer as the namespace (area) having a higher rewriting frequency (update frequency). In other words, the bit length of the encoded data (endurance code) becomes shorter as the namespace (area) having a lower rewriting frequency (update frequency).

出力部917は、最適化されたビット長の圧縮データを第1符号化データ(エンデュランスコード)として出力する。第1符号化データにはコードブック913が付加されても良い。 The output unit 917 outputs the compressed data having the optimized bit length as the first encoded data (endurance code). A codebook 913 may be added to the first encoded data.

図23のフローチャートは、メモリセルの消耗を抑制するためのエンコード処理の手順を示す。 The flowchart of FIG. 23 shows the procedure of the encoding process for suppressing the consumption of the memory cell.

コントローラ4は、ライトデータ内の幾つかのビットパターンの出現回数を求め、これらビットパターンを出現回数の大きい順にソートする(ステップS1)。コントローラ4は、エントロピー解析の結果に基づき、各ビットパターンを圧縮するための変換コードを含むコードブック913を生成し、そしてコードブック913を使用してライトデータを可逆圧縮する(ステップS2)。 The controller 4 obtains the number of appearances of some bit patterns in the write data, and sorts these bit patterns in descending order of the number of appearances (step S1). The controller 4 generates a codebook 913 including a conversion code for compressing each bit pattern based on the result of the entropy analysis, and losslessly compresses the write data using the codebook 913 (step S2).

コントローラ4は、この圧縮データをメモリセルの消耗を抑制するためのコードを使用してエンコードすることによって、符号化データを生成する。 The controller 4 generates encoded data by encoding this compressed data using a code for suppressing consumption of the memory cell.

この場合、コントローラ4は、まず、圧縮データから、メモリセルを消耗させるある特定の符号(特定のビットパターン)を探索する(ステップS3)。コントローラ4は、探索されたこの符号(ビットパターン)をメモリセルの消耗の小さな長い別の符号(ビットパターン)に変換する(ステップS4)。コントローラ4は、探索されたこの特定の符号に対応するコードブック内の変換コードを更新する(ステップS5)。 In this case, the controller 4 first searches the compressed data for a specific code (specific bit pattern) that consumes memory cells (step S3). The controller 4 converts this searched code (bit pattern) into another long code (bit pattern) that consumes less memory cells (step S4). The controller 4 updates the conversion code in the codebook corresponding to this searched specific code (step S5).

コントローラ4は、現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも長いか否かを判定する(ステップS6)。ターゲットビット長は、データがライトされるべきネームスペース(領域)に応じて予め決定される。例えば、ネームスペースNS#1にライトされるデータ(Hotデータ)に関しては長いターゲットビット長が使用され、ネームスペースNS#nにライトされるデータ(Coldデータ)に関しては短いターゲットビット長が使用される。 The controller 4 determines whether the bit length of the current compressed data (encoded data) is longer than the target bit length (step S6). The target bit length is predetermined according to the name space (area) in which the data is to be written. For example, a long target bit length is used for data (Hot data) written in the namespace NS#1, and a short target bit length is used for data (Cold data) written in the namespace NS#n. ..

現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも短いならば、ステップS3〜S5の処理が再度実行される。ステップS3〜S5の処理が多く繰り返されるほど、メモリセルを激しく消耗させる特定の符号(例えば“C”レベルに対応するビットパターン)の出現頻度を下げることができる。その分、符号化データのビット長はより長くなる。 If the bit length of the current compressed data (encoded data) is shorter than the target bit length, the processes of steps S3 to S5 are executed again. The more the processes of steps S3 to S5 are repeated, the lower the frequency of appearance of a specific code (for example, a bit pattern corresponding to the "C" level) that consumes the memory cell severely can be reduced. As a result, the bit length of the encoded data becomes longer.

現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも長くなったならば(ステップS6のYES)、コントローラ4は、符号化データの例えば末尾にコードブックを付加する(ステップS7)。 If the bit length of the current compressed data (encoded data) becomes longer than the target bit length (YES in step S6), the controller 4 adds a codebook to, for example, the end of the encoded data (step S7). ..

図24のフローチャートは、SSD3によって実行されるライト制御処理の手順を示す。 The flowchart of FIG. 24 shows the procedure of the write control process executed by the SSD 3.

SSD3のコントローラ4は、受信されたライトデータがどの階層属性のネームスペース(領域)にライトされるべきライトデータであるかを判定し、この判定結果にしたがって、ライトデータをエンコードするためのエンコード方法を変更する。エンコード方法の変更は、エンデュランスコードとECCとの比率を制御することによって実行される。 The controller 4 of the SSD 3 determines which hierarchical attribute name space (area) the received write data should be written to, and according to the determination result, an encoding method for encoding the write data. To change. The change of the encoding method is performed by controlling the ratio between the endurance code and the ECC.

すなわち、SSD3のコントローラ4がライトコマンドをホスト2から受信した時(ステップS101のYES)、コントローラ4は、ライトコマンド内のネームスペースIDによって指定される対象ネームスペース(領域)の階層属性(Hot/Warm/Middle/Cool/Cold)を判定する(ステップS102)。対象ネームスペース(領域)の階層属性は、対象ネームスペース(領域)のオーバープロビジョン領域のサイズ(ユーザ領域とオーバープロビジョン領域との比率等)に基づいて決定されてもよい。あるいは、もし対象ネームスペースの作成を要求した拡張ネームスペース管理コマンドがtier属性パラメータを含んでいたならば、コントローラ4は、このtier属性パラメータによって示される階層属性を、対象ネームスペースの階層属性であると判定しても良い。あるいは、ライトコマンドが、対象ネームスペースのIDに加え、対象ネームスペースの階層属性を示すパラメータを含んでいてもよい。 That is, when the controller 4 of the SSD 3 receives the write command from the host 2 (YES in step S101), the controller 4 determines the hierarchical attribute (Hot/Hot/Hot/) of the target namespace (area) designated by the namespace ID in the write command. Warm/Middle/Cool/Cold) is determined (step S102). The hierarchical attribute of the target namespace (area) may be determined based on the size of the over-provision area of the target namespace (area) (the ratio between the user area and the over-provision area, etc.). Alternatively, if the extended namespace management command requesting the creation of the target namespace includes the tier attribute parameter, the controller 4 sets the hierarchical attribute indicated by this tier attribute parameter as the hierarchical attribute of the target namespace. May be determined. Alternatively, the write command may include a parameter indicating the hierarchical attribute of the target namespace in addition to the ID of the target namespace.

例えば、対象ネームスペースの階層属性がHotならば(ステップS103のYES)、つまりライトデータがネームスペースNS#1のIDに関連付けられていたならば、コントローラ4は、エンデュランスコードとECCとの比率を制御することによって信頼性よりも耐久性を優先するエンコード方法を使用して、ライトデータをエンコードする(ステップS104)。ここでのエンコード方法によれば、ライトデータは、より長いエンデュランスコードとより短いECCとの組み合わせを含むデータにエンコードされる。コントローラ4は、エンコードされたデータを、領域51内の物理ブロックの利用可能ページにライトする(ステップS105)。 For example, if the hierarchical attribute of the target namespace is Hot (YES in step S103), that is, if the write data is associated with the ID of the namespace NS#1, the controller 4 sets the ratio between the endurance code and the ECC. The write data is encoded using an encoding method that prioritizes reliability over reliability by controlling (step S104). According to the encoding method here, the write data is encoded into data including a combination of a longer endurance code and a shorter ECC. The controller 4 writes the encoded data to the usable page of the physical block in the area 51 (step S105).

例えば、対象ネームスペースの階層属性がColdならば(ステップS106のYES)、つまりライトデータがネームスペースNS#nのIDに関連付けられていたならば、コントローラ4は、エンデュランスコードとECCとの比率を制御することによって耐久性よりも信頼性を優先するエンコード方法を使用して、ライトデータをエンコードする(ステップS107)。ここでのエンコード方法によれば、ライトデータは、より短いエンデュランスコードとより長いECCとの組み合わせを含むデータにエンコードされる。コントローラ4は、エンコードされたデータを、領域55内の物理ブロックの利用可能ページにライトする(ステップS108)。 For example, if the hierarchical attribute of the target namespace is Cold (YES in step S106), that is, if the write data is associated with the ID of the namespace NS#n, the controller 4 sets the ratio between the endurance code and the ECC. The write data is encoded by using an encoding method that prioritizes reliability over durability by controlling (step S107). According to the encoding method here, the write data is encoded into data including a combination of a shorter endurance code and a longer ECC. The controller 4 writes the encoded data to the usable page of the physical block in the area 55 (step S108).

図25は、本実施形態のフラッシュアレイストレージの構成を示す。 FIG. 25 shows the configuration of the flash array storage of this embodiment.

このフラッシュアレイストレージは、ホスト2からは1台のストレージデバイスとして認識される。このフラッシュアレイストレージは、大容量化および高速化を実現するために、ストライピング制御される、複数のSSD、つまりSSD#1、SSD#2、SSD#3、…SSD#nを含む。 This flash array storage is recognized by the host 2 as one storage device. This flash array storage includes a plurality of SSDs, that is, SSD#1, SSD#2, SSD#3,... SSD#n, which are striped in order to realize a large capacity and high speed.

SSD#1、SSD#2、SSD#3、…SSD#nの各々は、不揮発性メモリを含む。さらに、SSD#1、SSD#2、SSD#3、…SSD#nの各々は、本実施形態のSSD3と同様のネームスペース管理機能を有している。 Each of SSD#1, SSD#2, SSD#3,..., SSD#n includes a non-volatile memory. Further, each of SSD#1, SSD#2, SSD#3,... SSD#n has the same namespace management function as SSD3 of this embodiment.

このフラッシュアレイにおいては、領域51(NS#1)は、SSD#1、SSD#2、SSD#3、…SSD#nに跨がって配置される。つまり、領域51は、SSD#1のネームスペース(NS#1)用に確保された幾つかの物理ブロックと、SSD#2のネームスペース(NS#1)用に確保された幾つかの物理ブロックと、SSD#3のネームスペース(NS#1)用に確保された幾つかの物理ブロックと、SSD#nのネームスペース(NS#1)用に確保された幾つかの物理ブロックとを含む。 In this flash array, the area 51 (NS#1) is arranged across SSD#1, SSD#2, SSD#3,..., SSD#n. In other words, the area 51 includes some physical blocks reserved for the SSD#1 namespace (NS#1) and some physical blocks reserved for the SSD#2 namespace (NS#1). And some physical blocks reserved for the SSD#3 namespace (NS#1) and some physical blocks reserved for the SSD#n namespace (NS#1).

領域52(NS#2)も、SSD#1、SSD#2、SSD#3、…SSD#nに跨がって配置される。つまり、領域52は、SSD#1のネームスペース(NS#2)用に確保された幾つかの物理ブロックと、SSD#2のネームスペース(NS#2)用に確保された幾つかの物理ブロックと、SSD#3のネームスペース(NS#2)用に確保された幾つかの物理ブロックと、SSD#nのネームスペース(NS#2)用に確保された幾つかの物理ブロックとを含む。 The area 52 (NS#2) is also arranged across the SSD#1, SSD#2, SSD#3,..., SSD#n. In other words, the area 52 includes some physical blocks reserved for the SSD#1 namespace (NS#2) and some physical blocks reserved for the SSD#2 namespace (NS#2). And some physical blocks reserved for the SSD#3 namespace (NS#2) and some physical blocks reserved for the SSD#n namespace (NS#2).

領域53(NS#3)も、SSD#1、SSD#2、SSD#3、…SSD#nに跨がって配置される。つまり、領域53は、SSD#1のネームスペース(NS#3)用に確保された幾つかの物理ブロックと、SSD#2のネームスペース(NS#3)用に確保された幾つかの物理ブロックと、SSD#3のネームスペース(NS#3)用に確保された幾つかの物理ブロックと、SSD#nのネームスペース(NS#3)用に確保された幾つかの物理ブロックとを含む。 The area 53 (NS#3) is also arranged across the SSD#1, SSD#2, SSD#3,..., SSD#n. That is, the area 53 includes some physical blocks reserved for the SSD#1 namespace (NS#3) and some physical blocks reserved for the SSD#2 namespace (NS#3). And some physical blocks reserved for the SSD#3 namespace (NS#3) and some physical blocks reserved for the SSD#n namespace (NS#3).

領域54(NS#4)も、SSD#1、SSD#2、SSD#3、…SSD#nに跨がって配置される。つまり、領域54は、SSD#1のネームスペース(NS#4)用に確保された幾つかの物理ブロックと、SSD#2のネームスペース(NS#4)用に確保された幾つかの物理ブロックと、SSD#3のネームスペース(NS#4)用に確保された幾つかの物理ブロックと、SSD#nのネームスペース(NS#4)用に確保された幾つかの物理ブロックとを含む。 The area 54 (NS#4) is also arranged across the SSD#1, SSD#2, SSD#3,..., SSD#n. In other words, the area 54 includes some physical blocks reserved for the SSD#1 namespace (NS#4) and some physical blocks reserved for the SSD#2 namespace (NS#4). And some physical blocks reserved for the SSD#3 namespace (NS#4) and some physical blocks reserved for the SSD#n namespace (NS#4).

領域55(NS#n)も、SSD#1、SSD#2、SSD#3、…SSD#nに跨がって配置される。つまり、領域55は、SSD#1のネームスペース(NS#n)用に確保された幾つかの物理ブロックと、SSD#2のネームスペース(NS#n)用に確保された幾つかの物理ブロックと、SSD#3のネームスペース(NS#n)用に確保された幾つかの物理ブロックと、SSD#nのネームスペース(NS#n)用に確保された幾つかの物理ブロックとを含む。 The area 55 (NS#n) is also arranged across the SSD#1, SSD#2, SSD#3,..., SSD#n. That is, the area 55 includes some physical blocks reserved for the SSD#1 namespace (NS#n) and some physical blocks reserved for the SSD#2 namespace (NS#n). And some physical blocks reserved for the SSD#3 namespace (NS#n) and some physical blocks reserved for the SSD#n namespace (NS#n).

図26は、図25のフラッシュアレイストレージのハードウェア構成を示す。 FIG. 26 shows a hardware configuration of the flash array storage shown in FIG.

フラッシュアレイストレージ80は、上述のSSD#1、SSD#2、SSD#3、…SSD#nに加え、フラッシュアレイコントローラ81を含む。フラッシュアレイコントローラ81は、データを、SSD#1、SSD#2、SSD#3、…SSD#nに分散させるためのストライピング制御を実行するように構成されている。例えば、領域51(NS#1)にデータをライトする場合においては、例えば、最初の4KバイトのデータD1はNS#1に対応するSSD#1内の領域にライトされ、次の4KバイトのデータD2はNS#1に対応するSSD#2内の領域にライトされ、続く4KバイトのデータD3はNS#1に対応するSSD#3内の領域にライトされ、続く4KバイトのデータDnはNS#1に対応するSSD#n内の領域にライトされ、続く4KバイトのデータDn+1はNS#1に対応するSSD#1内の領域にライトされる。 The flash array storage 80 includes a flash array controller 81 in addition to the SSD#1, SSD#2, SSD#3,... SSD#n described above. The flash array controller 81 is configured to execute striping control for distributing data to SSD#1, SSD#2, SSD#3,... SSD#n. For example, when writing data to the area 51 (NS#1), for example, the first 4 Kbytes of data D1 are written to the area in SSD#1 corresponding to NS#1 and the next 4 Kbytes of data are written. D2 is written in the area in SSD#2 corresponding to NS#1, the subsequent 4K-byte data D3 is written in the area in SSD#3 corresponding to NS#1, and the subsequent 4K-byte data Dn is written in NS#. 1 is written in the area in SSD#n corresponding to 1, and the subsequent 4 Kbytes of data Dn+1 is written in the area in SSD#1 corresponding to NS#1.

このように、ライトデータは所定データサイズ(4Kバイト)単位でSSD#1、SSD#2、SSD#3、…SSD#nに分散される。例えば、ホスト2によってNS#1への1Mバイトのデータをライトすることが要求され場合、1Mバイトのデータは各々が所定データサイズ(4Kバイト)を有する複数のデータ部分に分割され、これらデータ部分がSSD#1、SSD#2、SSD#3、…SSD#nに並行してライトされてもよい。 In this way, the write data is distributed to SSD#1, SSD#2, SSD#3,... SSD#n in units of a predetermined data size (4 Kbytes). For example, when the host 2 is requested to write 1 Mbyte of data to NS#1, the 1 Mbyte of data is divided into a plurality of data portions each having a predetermined data size (4 Kbytes). May be written in parallel to SSD#1, SSD#2, SSD#3,... SSD#n.

このように、SSD#1、SSD#2、SSD#3、…SSD#nは並行にして動作するので、データライトのための性能を高めることができる。 In this way, SSD#1, SSD#2, SSD#3,... SSD#n operate in parallel, so that the performance for data write can be improved.

フラッシュアレイコントローラ81は、図27に示されるように、フラッシュアレイストレージ80内ではなく、ホスト2内に設けられていてもよい。 The flash array controller 81 may be provided in the host 2 instead of in the flash array storage 80 as shown in FIG.

図28は、フラッシュアレイストレージ80内のSSDそれぞれの容量とこれらSSDからある階層のために配分される容量の割合との関係を示す。 FIG. 28 shows the relationship between the capacity of each SSD in the flash array storage 80 and the ratio of the capacity allocated from these SSDs to a certain tier.

ここでは、tier#1(NS#1)を例示して説明する。ホスト2は、拡張ネームスペース管理コマンドをフラッシュアレイコントローラ81に送出して、フラッシュアレイストレージ80全体の総容量の1パーセントに相当する個数の物理ブロックをtier#1(NS#1)用に確保すべきことを要求する。フラッシュアレイコントローラ81は、SSD#1、SSD#2、SSD#3、…SSD#nのそれぞれの容量に基づいて、各SSD内においてtier#1(NS#1)用に確保されるべき物理ブロックの個数を決定する。 Here, tier #1 (NS#1) will be described as an example. The host 2 sends an extended namespace management command to the flash array controller 81, and reserves a number of physical blocks corresponding to 1% of the total capacity of the flash array storage 80 for the tier #1 (NS#1). Demand what it should do. The flash array controller 81 is a physical block to be reserved for tier#1 (NS#1) in each SSD based on the respective capacities of SSD#1, SSD#2, SSD#3,... SSD#n. Determine the number of.

ここでは、SSD#1の容量が100GB、SSD#2の容量が200GB、SSD#3の容量が1TB、SSD#nの容量が100GBである場合を想定する。 Here, it is assumed that the capacity of SSD#1 is 100 GB, the capacity of SSD#2 is 200 GB, the capacity of SSD#3 is 1 TB, and the capacity of SSD#n is 100 GB.

フラッシュアレイコントローラ81は、拡張ネームスペース管理コマンドをSSD#1に送出して、100GBの1パーセントの容量(1GB)に相当する個数の物理ブロックをNS#1用に確保すべきことをSSD#1に要求する。フラッシュアレイコントローラ81は、拡張ネームスペース管理コマンドをSSD#2に送出して、200GBの1パーセントの容量(2GB)に相当する個数の物理ブロックをNS#1用に確保すべきことをSSD#2に要求する。フラッシュアレイコントローラ81は、拡張ネームスペース管理コマンドをSSD#3に送出して、1TBの1パーセントの容量(10GB)に相当する個数の物理ブロックをNS#1用に確保すべきことをSSD#3に要求する。フラッシュアレイコントローラ81は、拡張ネームスペース管理コマンドをSSD#nに送出して、100GBの1パーセントの容量(1GB)に相当する個数の物理ブロックをNS#1用に確保すべきことをSSD#nに要求する。 The flash array controller 81 sends an extended name space management command to the SSD#1 to indicate that the number of physical blocks corresponding to 1% capacity (1 GB) of 100 GB should be reserved for the NS#1. To request. The flash array controller 81 sends an extended namespace management command to the SSD#2 to indicate that the number of physical blocks corresponding to 1% capacity (2 GB) of 200 GB should be reserved for the NS#1. To request. The flash array controller 81 sends an extended name space management command to the SSD#3 to indicate that the number of physical blocks equivalent to 1% of 1 TB (10 GB) should be reserved for the NS#1. To request. The flash array controller 81 sends an extended name space management command to the SSD#n to notify the SSD#n that a number of physical blocks corresponding to 1% capacity (1 GB) of 100 GB should be reserved for the NS#1. To request.

図29は、図28の容量割り当てに対応するライト動作の例を示す。 FIG. 29 shows an example of a write operation corresponding to the capacity allocation of FIG.

ストライピング制御によって領域51(NS#1)にデータをライトする場合においては、例えば、最初の4KバイトのデータD1はNS#1に対応するSSD#1内の領域にライトされる。次の4KバイトのデータD2と続く4KバイトのデータD3は、NS#1に対応するSSD#2内の領域にライトされる。続くデータD3〜D13は、NS#1に対応するSSD#3内の領域にライトされる。続く4KバイトのデータD14はNS#1に対応するSSD#n内の領域にライトされ、続く4KバイトのデータD15はNS#1に対応するSSD#1内の領域にライトされる。 When data is written to the area 51 (NS#1) by striping control, for example, the first 4 Kbytes of data D1 is written to the area in SSD#1 corresponding to NS#1. The next 4 Kbytes of data D2 and the subsequent 4 Kbytes of data D3 are written to the area in SSD#2 corresponding to NS#1. Subsequent data D3 to D13 are written in the area in SSD#3 corresponding to NS#1. The subsequent 4 Kbytes of data D14 are written in the area in SSD#n corresponding to NS#1, and the subsequent 4 Kbytes of data D15 are written in the area in SSD#1 corresponding to NS#1.

図30は、ホスト2として機能する情報処理装置のハードウェア構成例を示す。 FIG. 30 shows a hardware configuration example of an information processing device that functions as the host 2.

この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。 This information processing device is realized as a server computer or a personal computer. This information processing apparatus includes a processor (CPU) 101, a main memory 102, a BIOS-ROM 103, a network controller 105, a peripheral interface controller 106, a controller 107, an embedded controller (EC) 108, and the like.

プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ41、OS42およびファイルシステム43を含む。ファイルシステム43は、上述の階層管理部44として機能する。 The processor 101 is a CPU configured to control the operation of each component of this information processing apparatus. The processor 101 executes various programs loaded into the main memory 102 from any one of the plurality of SSDs 3. The main memory 102 is composed of a random access memory such as DRAM. The program executed by the processor 101 includes the application software layer 41, the OS 42, and the file system 43 described above. The file system 43 functions as the layer management unit 44 described above.

また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。 The processor 101 also executes a basic input/output system (BIOS) stored in the BIOS-ROM 103 which is a non-volatile memory. BIOS is a system program for hardware control.

ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。 The network controller 105 is a communication device such as a wired LAN controller or a wireless LAN controller. Peripheral interface controller 106 is configured to perform communication with peripheral devices such as USB devices.

コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のSSD3が複数のコネクタ107Aにそれぞれ接続される。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。 The controller 107 is configured to perform communication with the devices respectively connected to the plurality of connectors 107A. In this embodiment, the plurality of SSDs 3 are connected to the plurality of connectors 107A, respectively. The controller 107 is a SAS expander, a PCIe switch, a PCIe expander, a flash array controller, a RAID controller, or the like.

EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。 The EC 108 functions as a system controller configured to perform power management of the information processing device. The EC 108 powers on and powers off the information processing device according to the operation of the power switch by the user. The EC 108 is realized as a processing circuit such as a one-chip microcontroller. The EC 108 may include a keyboard controller that controls an input device such as a keyboard (KB).

この情報処理装置においては、ホストソフトウェア(アプリケーションソフトウェアレイヤ41、OS42およびファイルシステム43)の制御の下、プロセッサ101は、以下の処理を実行する。 In this information processing apparatus, the processor 101 executes the following processing under the control of the host software (application software layer 41, OS 42, and file system 43).

プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Hotデータ用のネームスペースNS#1(領域51)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Hotデータ用のネームスペースNS#1(領域51)に割り当てるべき物理ブロックの個数を示すパラメータを含む。 The processor 101 sends an extended namespace management command to the SSD3 to create a namespace NS#1 (area 51) for Hot data in the SSD3. The extended namespace management command includes a parameter indicating the number of physical blocks to be assigned to the hot data namespace NS#1 (area 51).

プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Warmデータ用のネームスペースNS#2(領域52)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Warmデータ用のネームスペースNS#2(領域52)に割り当てるべき物理ブロックの個数を示すパラメータを含む。 The processor 101 sends an extended namespace management command to the SSD3 to create a namespace NS#2 (area 52) for Warm data in the SSD3. The extended namespace management command includes a parameter indicating the number of physical blocks to be assigned to the namespace NS#2 (area 52) for Warm data.

同様にして、プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Coldデータ用のネームスペースNS#n(領域55)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Cold用のネームスペースNS#n(領域55)に割り当てるべき物理ブロックの個数を示すパラメータを含む。 Similarly, the processor 101 sends an extended namespace management command to the SSD3 to create a namespace NS#n (area 55) for Cold data in the SSD3. The extended name space management command includes a parameter indicating the number of physical blocks to be assigned to the cold name space NS#n (area 55).

プロセッサ101は、ネームスペースNS#1のネームスペースIDをHotデータ用のネームスペースIDとして管理し、ネームスペースNS#2のネームスペースIDをWarmデータ用のネームスペースIDとして管理し、そしてネームスペースNS#nのネームスペースIDをColdデータ用のネームスペースIDとして管理する。 The processor 101 manages the namespace ID of the namespace NS#1 as a namespace ID for Hot data, the namespace ID of the namespace NS#2 as a namespace ID for Warm data, and the namespace NS. The namespace ID of #n is managed as a namespace ID for Cold data.

あるHotデータをSSD3にライトすることが必要な時、プロセッサ101は、ネームスペースNS#1のネームスペースIDを含むライトコマンドをSSD3に送出する。あるColdデータをSSD3にライトすることが必要な時、プロセッサ101は、ネームスペースNS#nのネームスペースIDを含むライトコマンドをSSD3に送出する。 When it is necessary to write certain Hot data to SSD3, the processor 101 sends a write command including the namespace ID of the namespace NS#1 to SSD3. When it is necessary to write certain Cold data to SSD3, the processor 101 sends a write command including the namespace ID of the namespace NS#n to SSD3.

図31は、複数のSSD3とホスト2とを含む情報処理装置の構成例を示す。 FIG. 31 shows a configuration example of an information processing apparatus including a plurality of SSDs 3 and a host 2.

この情報処理装置は、ラックに収容可能な薄い箱形の筐体201を備える。多数のSSD3は筐体201内に配置されても良い。この場合、各SSD3は筐体201の前面201Aに設けられたストロットに取り外し可能に挿入されてもよい。 This information processing apparatus includes a thin box-shaped housing 201 that can be housed in a rack. A large number of SSDs 3 may be arranged in the housing 201. In this case, each SSD 3 may be removably inserted into a strobe provided on the front surface 201A of the housing 201.

システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。 The system board (motherboard) 202 is arranged in the housing 201. Various electronic components including a CPU 101, a memory 102, a network controller 105, and a controller 107 are mounted on a system board (motherboard) 202. These electronic components function as the host 2.

以上説明したように、本実施形態によれば、複数種のデータを格納するための複数のネームスペース(領域)が管理され、さらに、確保すべき物理リソースの量(物理ブロックの個数)をネームスペース毎に指定するホスト2からの要求に基づいて、指定された個数の物理ブロックがこれらネームスペース用の物理リソースとして個別に割り当てられる。したがって、複数種のデータそれぞれの容量や更新頻度を考慮して、物理ブロック群を複数のネームスペース(領域)に容易に最適配分することができる。よって、ネームスペース(領域)毎に、格納すべきデータの更新の頻度に適した耐久性を実現でき、更新の頻度が高いデータ用のネームスペース(領域)のライトアンプリフィケーションを減少させることができるので、SSDの寿命の最大化を実現できる。 As described above, according to this embodiment, a plurality of namespaces (areas) for storing a plurality of types of data are managed, and furthermore, the amount of physical resources to be secured (the number of physical blocks) is designated. Based on a request from the host 2 which is designated for each space, a designated number of physical blocks are individually allocated as physical resources for these namespaces. Therefore, it is possible to easily and optimally allocate the physical block group to the plurality of namespaces (areas) in consideration of the capacities and the update frequencies of the plurality of types of data. Therefore, durability suitable for the frequency of updating the data to be stored can be realized for each namespace (area), and write amplification of the namespace (area) for data that is frequently updated can be reduced. Therefore, the life of the SSD can be maximized.

換言すれば、本実施形態によれば、更新の頻度が高いデータ用のネームスペース(領域)用に多くの量のオーバープロビジョン領域を確保したり、更新の頻度が低いデータ用のネームスペース(領域)用に少ない量のオーバープロビジョン領域を確保するといった制御を柔軟に行う事ができる。これにより、更新の頻度が高いデータ用のネームスペース(領域)のライトアンプリフィケーションを減少させることができるので、SSDの寿命の最大化を実現できる。 In other words, according to the present embodiment, a large amount of over-provision area is reserved for a namespace (area) for data that is frequently updated, and a namespace for data that is frequently updated ( It is possible to flexibly perform control such as securing a small amount of over-provision area for the area. As a result, the write amplification of the namespace (area) for data that is frequently updated can be reduced, so that the life of the SSD can be maximized.

なお、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random
Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
In addition, in the present embodiment, the NAND memory is illustrated as the nonvolatile memory. However, the functions of the present embodiment are, for example, MRAM (Magnetoresistive Random Access Memory), PRAM (Phase change Random Access Memory), and ReRAM (Resistive Random).
The present invention can also be applied to various other non-volatile memories such as Access Memory) or FeRAM (Ferroelectric Random Access Memory).

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although some embodiments of the present invention have been described, these embodiments are presented as examples and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the spirit of the invention. These embodiments and modifications thereof are included in the scope and the gist of the invention, and are also included in the invention described in the claims and an equivalent range thereof.

2…ホスト、3…SSD、4…コントローラ、5…NANDメモリ、51、52、53、54、55…領域。 2... Host, 3... SSD, 4... Controller, 5... NAND memory, 51, 52, 53, 54, 55... Area.

Claims (10)

複数の物理ブロックを含む不揮発性メモリと、
前記不揮発性メモリを複数の領域に論理的に分割するための複数のネームスペースを管理するように構成されたコントローラとを具備し、
前記コントローラは、
第1ネームスペースの作成を要求する第1の要求をホストデバイスから受信し、前記第1の要求は前記第1ネームスペース用の論理アドレスの数と前記第1ネームスペース用に確保すべき物理リソースの量の双方を指定し、前記物理リソースの量は前記第1ネームスペース用に確保すべき物理ブロックの個数または前記第1ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示し、
前記第1ネームスペースを作成し、
前記第1の要求によって指定された前記物理リソースの量が前記第1ネームスペース用に確保すべき物理ブロックの個数を示す場合、前記第1の要求によって指定された個数の物理ブロックを前記第1ネームスペースに割り当て、前記第1の要求によって指定された個数の物理ブロックの容量から前記第1の要求によって指定された数の論理アドレスがマッピングされるユーザ領域の容量を引いた残りの容量を前記第1ネームスペースのオーバープロビジョン領域として割り当て、
前記第1の要求によって指定された前記物理リソースの量が前記第1ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示す場合、前記第1の要求によって指定された個数の物理ブロックを前記第1ネームスペースのオーバープロビジョン領域として割り当て、
前記第1ネームスペースのIDに関連付けられたライトデータを前記第1ネームスペースに対応する前記不揮発性メモリの第1領域にライトするように構成されている、メモリシステム。
A non-volatile memory including a plurality of physical blocks,
A controller configured to manage a plurality of namespaces for logically dividing the non-volatile memory into a plurality of areas,
The controller is
A first request is received from a host device requesting creation of a first namespace, the first request being the number of logical addresses for the first namespace and physical resources to be reserved for the first namespace. Of the physical resources, the physical resource quantity indicates the number of physical blocks to be reserved for the first namespace or the number of physical blocks to be reserved for the overprovision area of the first namespace. ,
Create the first namespace,
When the amount of the physical resource designated by the first request indicates the number of physical blocks to be reserved for the first namespace, the number of physical blocks designated by the first request is set to the first block. The remaining capacity, which is allocated to the namespace and is the capacity of the number of physical blocks designated by the first request, minus the capacity of the user area to which the number of logical addresses designated by the first request is mapped, is Assigned as the overprovision area of the first namespace,
When the amount of the physical resource designated by the first request indicates the number of physical blocks to be reserved for the over-provision area of the first namespace, the number of physical blocks designated by the first request is Allocate the block as the over-provision area of the first namespace,
A memory system configured to write write data associated with an ID of the first namespace to a first area of the non-volatile memory corresponding to the first namespace.
前記コントローラは、
第2ネームスペースの作成を要求する第2の要求を前記ホストデバイスから受信し、前記第2の要求は前記第2ネームスペース用の論理アドレスの数と前記第2ネームスペース用に確保すべき物理リソースの量の双方を指定し、前記物理リソースの量は前記第2ネームスペース用に確保すべき物理ブロックの個数または前記第2ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示し、
前記第2ネームスペースを作成し、
前記第2の要求によって指定された前記物理リソースの量が前記第2ネームスペース用に確保すべき物理ブロックの個数を示す場合、前記第2の要求によって指定された個数の物理ブロックを前記第2ネームスペースに割り当て、前記第2の要求によって指定された個数の物理ブロックの容量から前記第2の要求によって指定された数の論理アドレスがマッピングされるユーザ領域の容量を引いた残りの容量を前記第2ネームスペースのオーバープロビジョン領域として割り当て、
前記第2の要求によって指定された前記物理リソースの量が前記第2ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示す場合、前記第2の要求によって指定された個数の物理ブロックを前記第2ネームスペースのオーバープロビジョン領域として割り当て、
前記第2ネームスペースのIDに関連付けられたライトデータを前記第2ネームスペースに対応する前記不揮発性メモリの第2領域にライトするように構成されている請求項1記載のメモリシステム。
The controller is
A second request is received from the host device requesting the creation of a second namespace, the second request being the number of logical addresses for the second namespace and the physical address to be reserved for the second namespace. Both of the resource amounts are specified, and the physical resource amount is the number of physical blocks to be reserved for the second namespace or the number of physical blocks to be reserved for the over-provision area of the second namespace. Shows,
Create the second namespace,
When the amount of the physical resource designated by the second request indicates the number of physical blocks to be reserved for the second namespace, the second number of physical blocks designated by the second request is used. The remaining capacity, which is assigned to the namespace and is the capacity of the number of physical blocks designated by the second request, minus the capacity of the user area to which the number of logical addresses designated by the second request is mapped, is Assigned as the overprovision area of the second namespace,
When the amount of the physical resource designated by the second request indicates the number of physical blocks to be reserved for the overprovision area of the second namespace, the number of physical blocks designated by the second request is Allocate the block as the over-provision area of the second namespace,
2. The memory system according to claim 1, wherein the write data associated with the ID of the second name space is configured to be written in a second area of the non-volatile memory corresponding to the second name space.
前記第1ネームスペースは第1種類のデータを格納するために使用され、前記第2ネームスペースは前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するために使用され、
前記第2ネームスペースのユーザ領域の容量に対する前記第2ネームスペース用のオーバープロビジョン領域の容量の比率は、前記第1ネームスペースのユーザ領域の容量に対する前記第1ネームスペース用のオーバープロビジョン領域の容量の比率よりも低い請求項2記載のメモリシステム。
The first namespace is used to store a first type of data and the second namespace is used to store a second type of data that has a lower update frequency than the first type of data. ,
The ratio of the capacity of the over-provision area for the second namespace to the capacity of the user area of the second namespace is determined to be the over-provision area for the first namespace with respect to the capacity of the user area of the first namespace. The memory system according to claim 2, wherein the memory system has a capacity ratio lower than that of the memory system.
前記コントローラは、
前記第1の要求または前記第2の要求を受信した場合、前記受信された要求によって指定された個数の物理ブロックの割り当てが可能か否かを、前記不揮発性メモリの有効データを格納していない物理ブロックの個数に基づいて判定し、
前記指定された個数の物理ブロックの割り当てが可能でない場合、エラーのレスポンスを前記ホストデバイスに通知するように構成されている請求項2記載のメモリシステム。
The controller is
When the first request or the second request is received, it is determined whether or not the number of physical blocks designated by the received request can be allocated, and valid data in the nonvolatile memory is not stored. Judge based on the number of physical blocks,
The memory system according to claim 2, wherein when the specified number of physical blocks cannot be allocated, an error response is notified to the host device.
前記コントローラは、不揮発性メモリを各々が含む複数のストレージデバイスに、データを分散させるためのストライピング制御を実行するように構成され、
前記複数のネームスペースの各々は前記複数のストレージデバイスに跨がって配置されている請求項1または請求項2記載のメモリシステム。
The controller is configured to perform striping control for distributing data to a plurality of storage devices each including a non-volatile memory,
The memory system according to claim 1 or 2, wherein each of the plurality of namespaces is arranged across the plurality of storage devices.
複数の物理ブロックを含む不揮発性メモリを制御する制御方法であって、
前記不揮発性メモリを複数の領域に論理的に分割する複数のネームスペースを管理することと、
第1ネームスペースの作成を要求する第1の要求をホストデバイスから受信することと、前記第1の要求は前記第1ネームスペース用の論理アドレスの数と前記第1ネームスペース用に確保すべき物理リソースの量の双方を指定し、前記物理リソースの量は前記第1ネームスペース用に確保すべき物理ブロックの個数または前記第1ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示し、
前記第1ネームスペースを作成することと、
前記第1の要求によって指定された前記物理リソースの量が前記第1ネームスペース用に確保すべき物理ブロックの個数を示す場合、前記第1の要求によって指定された個数の物理ブロックを前記第1ネームスペースに割り当て、前記第1の要求によって指定された個数の物理ブロックの容量から前記第1の要求によって指定された数の論理アドレスがマッピングされるユーザ領域の容量を引いた残りの容量を前記第1ネームスペースのオーバープロビジョン領域として割り当てることと、
前記第1の要求によって指定された前記物理リソースの量が前記第1ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示す場合、前記第1の要求によって指定された個数の物理ブロックを前記第1ネームスペースのオーバープロビジョン領域として割り当てることと、
前記第1ネームスペースのIDに関連付けられたライトデータを前記第1ネームスペースに対応する前記不揮発性メモリの第1領域にライトすることと
を具備する制御方法。
A control method for controlling a nonvolatile memory including a plurality of physical blocks, comprising:
Managing a plurality of namespaces that logically divide the non-volatile memory into a plurality of areas;
Receiving a first request from a host device requesting creation of a first namespace, said first request should be reserved for the number of logical addresses for said first namespace and for said first namespace. Both physical resource quantities are specified, and the physical resource quantity is the number of physical blocks to be reserved for the first namespace or the number of physical blocks to be reserved for the overprovision area of the first namespace. Indicates
Creating the first namespace,
When the amount of the physical resource designated by the first request indicates the number of physical blocks to be reserved for the first namespace, the number of physical blocks designated by the first request is set to the first block. The remaining capacity, which is allocated to the namespace and is the capacity of the number of physical blocks designated by the first request, minus the capacity of the user area to which the number of logical addresses designated by the first request is mapped, is Allocating it as the overprovision area of the first namespace,
When the amount of the physical resource designated by the first request indicates the number of physical blocks to be reserved for the over-provision area of the first namespace, the number of physical blocks designated by the first request is Assigning a block as an over-provision area of the first namespace;
Writing the write data associated with the ID of the first namespace into the first area of the non-volatile memory corresponding to the first namespace.
第2ネームスペースの作成を要求する第2の要求を前記ホストデバイスから受信することと、前記第2の要求は前記第2ネームスペース用の論理アドレスの数と前記第2ネームスペース用に確保すべき物理リソースの量の双方を指定し、前記物理リソースの量は前記第2ネームスペース用に確保すべき物理ブロックの個数または前記第2ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示し、
前記第2ネームスペースを作成することと、
前記第2の要求によって指定された前記物理リソースの量が前記第2ネームスペース用に確保すべき物理ブロックの個数を示す場合、前記第2の要求によって指定された個数の物理ブロックを前記第2ネームスペースに割り当て、前記第2の要求によって指定された個数の物理ブロックの容量から前記第2の要求によって指定された数の論理アドレスがマッピングされるユーザ領域の容量を引いた残りの容量を前記第2ネームスペースのオーバープロビジョン領域として割り当てることと、
前記第2の要求によって指定された前記物理リソースの量が前記第2ネームスペースのオーバープロビジョン領域用に確保すべき物理ブロックの個数を示す場合、前記第2の要求によって指定された個数の物理ブロックを前記第2ネームスペースのオーバープロビジョン領域として割り当てることと、
前記第2ネームスペースのIDに関連付けられたライトデータを前記第2ネームスペースに対応する前記不揮発性メモリの第2領域にライトすることと
をさらに具備する請求項6記載の制御方法。
Receiving a second request from the host device requesting creation of a second namespace, the second request securing a number of logical addresses for the second namespace and the second namespace. Specifying both the amount of physical resources to be allocated, the amount of physical resources being the number of physical blocks to be reserved for the second namespace or the physical blocks to be reserved for the overprovision area of the second namespace. Shows the number,
Creating the second namespace,
When the amount of the physical resource designated by the second request indicates the number of physical blocks to be reserved for the second namespace, the second number of physical blocks designated by the second request is used. The remaining capacity, which is assigned to the namespace and is the capacity of the number of physical blocks designated by the second request, minus the capacity of the user area to which the number of logical addresses designated by the second request is mapped, is Allocating it as an over-provision area in the second namespace,
When the amount of the physical resource designated by the second request indicates the number of physical blocks to be reserved for the overprovision area of the second namespace, the number of physical blocks designated by the second request is Assigning a block as an over-provision area of the second namespace;
7. The control method according to claim 6, further comprising writing write data associated with an ID of the second namespace to a second area of the nonvolatile memory corresponding to the second namespace.
前記第1ネームスペースは第1種類のデータを格納するために使用され、前記第2ネームスペースは前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するために使用され、
前記第2ネームスペースのユーザ領域の容量に対する前記第2ネームスペース用のオーバープロビジョン領域の容量の比率は、前記第1ネームスペースのユーザ領域の容量に対する前記第1ネームスペース用のオーバープロビジョン領域の容量の比率よりも低い請求項7記載の制御方法。
The first namespace is used to store a first type of data and the second namespace is used to store a second type of data that has a lower update frequency than the first type of data. ,
The ratio of the capacity of the over-provision area for the second namespace to the capacity of the user area of the second namespace is determined to be the over-provision area for the first namespace with respect to the capacity of the user area of the first namespace. The control method according to claim 7, which is lower than the ratio of the capacities.
前記第1の要求または前記第2の要求を受信した場合、前記受信された要求によって指定された個数の物理ブロックの割り当てが可能か否かを、前記不揮発性メモリの有効データを格納していない物理ブロックの個数に基づいて判定することと、
前記指定された個数の物理ブロックの割り当てが可能でない場合、エラーのレスポンスを前記ホストデバイスに通知することと
をさらに具備する請求項7記載の制御方法。
When the first request or the second request is received, it is determined whether or not the number of physical blocks designated by the received request can be allocated, and valid data in the nonvolatile memory is not stored. Determination based on the number of physical blocks,
The control method according to claim 7, further comprising: notifying the host device of an error response when the specified number of physical blocks cannot be allocated.
不揮発性メモリを各々が含む複数のストレージデバイスに、データを分散させるためのストライピング制御を実行することをさらに具備し、
前記複数のネームスペースの各々は前記複数のストレージデバイスに跨がって配置されている請求項6または請求項7記載の制御方法。
Further comprising executing striping control for distributing data to a plurality of storage devices each including a non-volatile memory,
The control method according to claim 6 or 7, wherein each of the plurality of namespaces is arranged across the plurality of storage devices.
JP2019113376A 2019-06-19 2019-06-19 Memory system and control method Active JP6716757B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019113376A JP6716757B2 (en) 2019-06-19 2019-06-19 Memory system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019113376A JP6716757B2 (en) 2019-06-19 2019-06-19 Memory system and control method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018158365A Division JP6545876B2 (en) 2018-08-27 2018-08-27 Memory system

Publications (2)

Publication Number Publication Date
JP2019179571A JP2019179571A (en) 2019-10-17
JP6716757B2 true JP6716757B2 (en) 2020-07-01

Family

ID=68278676

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019113376A Active JP6716757B2 (en) 2019-06-19 2019-06-19 Memory system and control method

Country Status (1)

Country Link
JP (1) JP6716757B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210117320A1 (en) * 2019-10-22 2021-04-22 Micron Technology, Inc. Construction of a block device
US20210117117A1 (en) * 2019-10-22 2021-04-22 Micron Technology, Inc. Construction of a block device
JP2021114038A (en) 2020-01-16 2021-08-05 キオクシア株式会社 Memory system and control method
JP7366795B2 (en) 2020-02-14 2023-10-23 キオクシア株式会社 Memory system and control method

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060282610A1 (en) * 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
JP2013068993A (en) * 2011-09-20 2013-04-18 Toshiba Corp Memory controller
CN105867840B (en) * 2011-09-30 2018-10-16 株式会社日立制作所 Flash memory component and nonvolatile semiconductor memory component
JP5895565B2 (en) * 2012-02-03 2016-03-30 大日本印刷株式会社 IC card and program

Also Published As

Publication number Publication date
JP2019179571A (en) 2019-10-17

Similar Documents

Publication Publication Date Title
US11429277B2 (en) Memory system for controlling nonvolatile memory
US10241859B2 (en) Memory system and method of controlling nonvolatile memory
JP6553566B2 (en) Memory system and control method
JP6716757B2 (en) Memory system and control method
JP6414852B2 (en) Memory system and control method
US10884630B2 (en) Storage system
TW201917580A (en) Computing system and method for controlling storage device
KR20150105323A (en) Method and system for data storage
JP6649452B2 (en) Memory system and control method for nonvolatile memory
WO2018167890A1 (en) Computer system and management method
JP6545876B2 (en) Memory system
JP6666405B2 (en) Memory system and control method
JP6721765B2 (en) Memory system and control method
JP2019016386A (en) Memory system and control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190619

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200423

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: 20200512

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200610

R150 Certificate of patent or registration of utility model

Ref document number: 6716757

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150