JP2019049995A - Memory system and control method for nonvolatile memory - Google Patents

Memory system and control method for nonvolatile memory Download PDF

Info

Publication number
JP2019049995A
JP2019049995A JP2018198510A JP2018198510A JP2019049995A JP 2019049995 A JP2019049995 A JP 2019049995A JP 2018198510 A JP2018198510 A JP 2018198510A JP 2018198510 A JP2018198510 A JP 2018198510A JP 2019049995 A JP2019049995 A JP 2019049995A
Authority
JP
Japan
Prior art keywords
data
namespace
area
ssd
write
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.)
Granted
Application number
JP2018198510A
Other languages
Japanese (ja)
Other versions
JP6649452B2 (en
Inventor
菅野 伸一
Shinichi Sugano
伸一 菅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2018198510A priority Critical patent/JP6649452B2/en
Publication of JP2019049995A publication Critical patent/JP2019049995A/en
Application granted granted Critical
Publication of JP6649452B2 publication Critical patent/JP6649452B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

To realize a memory system useful for storage of various kinds of data.SOLUTION: A memory system comprises a nonvolatile memory and a controller. The controller manages a plurality of name spaces for individually storing a plurality of kinds of data having update frequency different from one another. The controller encodes write data by using first coding for suppressing consumption of a memory cell and generates first encoded data, and generates second encoded data to be written into the nonvolatile memory by adding an error correction code to the first encoded data. The controller changes a ratio between the first encoded data and the error correction code based on the name space into which the write data are to be written.SELECTED DRAWING: Figure 12

Description

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

近年、不揮発性メモリを備えるメモリシステムが広く普及している。   BACKGROUND In recent years, memory systems provided with non-volatile memories are widely used.

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

SSDの種類には、シングルレベルセル(SLC)−SSDのような小容量・高速SSD、マルチレベルセル(MLC)−SSD、トリプルレベルセル(TLC)−SSDのような大容量SSDなどがある。   The types of SSDs include small capacity and high speed SSDs such as Single Level Cell (SLC) -SSD, Multi Level Cell (MLC) -SSD, and Large Capacity SSDs such as Triple Level Cell (TLC) -SSD.

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

米国特許第8621328号明細書U.S. Pat. No. 8,621,328

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

本発明が解決しようとする課題は、様々な種類のデータの記憶に有用なメモリシステムおよび不揮発性メモリの制御方法を提供することである。   The problem to be solved by the present invention is to provide a memory system and a control method of non-volatile memory that are useful for storing various types of data.

実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記コントローラは、異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースを管理する。前記複数のネームスペースは第1種類のデータを格納するための第1ネームスペースと前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2ネームスペースとを含む。前記コントローラは、ライトデータに前記第1ネームスペースのIDが関連付けられている場合、メモリセルの消耗を抑制するためのコーディングを使用して前記ライトデータをエンコードして第1の長さの第1符号化データを生成し、前記第1符号化データに第2の長さのエラー訂正コードを付加することによって前記不揮発性メモリのページサイズにマッチし、第1のデータ量を有する第2符号化データを生成し、前記第2符号化データを前記第1ネームスペースに対応する前記不揮発性メモリの領域に書き込む。前記コントローラは、ライトデータに前記第2ネームスペースのIDが関連付けられている場合、メモリセルの消耗を抑制するためのコーディングを使用して前記ライトデータをエンコードして前記第1の長さよりも短い第3の長さの第3符号化データを生成し、前記第3符号化データに前記第2の長さよりも長い第4の長さのエラー訂正コードを付加することによって前記ページサイズにマッチし、前記第1のデータ量を有する第4符号化データを生成し、前記第4符号化データを前記第2ネームスペースに対応する前記不揮発性メモリの領域に書き込む。   According to an embodiment, a memory system comprises non-volatile memory and a controller. The controller manages a plurality of namespaces for storing a plurality of types of data having different update frequencies. The plurality of namespaces include a first namespace for storing data of a first type, and a second namespace for storing data of a second type having a lower update frequency than the data of the first type. Including. The controller may encode the write data using a coding for suppressing consumption of a memory cell when the ID of the first namespace is associated with the write data, to thereby generate the first length of the first data. A second encoding matching a page size of the non-volatile memory by generating encoded data and adding an error correction code of a second length to the first encoded data and having a first amount of data Data is generated and the second encoded data is written to the area of the non-volatile memory corresponding to the first namespace. When the ID of the second namespace is associated with write data, the controller may encode the write data using a coding for suppressing memory cell consumption and may be shorter than the first length. Matching the page size by generating third encoded data of a third length and adding an error correction code of a fourth length longer than the second length to the third encoded data; Generating fourth encoded data having the first amount of data, and writing the fourth encoded data in the area of the non-volatile memory corresponding to the second namespace.

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

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

ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(登録商標),Fibre channel等が使用し得る。   As an interface for interconnecting the host 2 and the 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は、消去単位として機能する。物理ブロックは「ブロック」または「消去ブロック」と称されることもある。   NAND memory 5 includes a large number of NAND blocks (physical blocks) B0 to Bm-1. Physical blocks B0 to Bm-1 function as erase units. Physical blocks are sometimes referred to as "blocks" or "erase blocks".

物理ブロックB0〜Bm−1は多数のページ(物理ページ)を含む。つまり、物理ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。NANDメモリ5においては、データのリードおよびデータのライトはページ単位で実行される。データの消去は物理ブロック単位で実行される。   Physical blocks B0 to Bm-1 include many 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 read and data write are executed page by page. Data erasure is performed in physical block units.

コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNANDメモリ5に電気的に結合されている。コントローラ4は、NANDメモリ5のデータ管理とNANDメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。   The controller 4 is electrically coupled to a NAND memory 5 which is a non-volatile memory via a NAND interface 13 such as Toggle or 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内の記憶位置を示す。物理アドレスは、物理ページアドレスと物理ブロックアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全ての物理ブロックに割り当てられている。   Data management includes (1) management of mapping information indicating a correspondence between a logical block address (LBA) and a physical address, and (2) concealing read / write in page units and erase operation in block units. Processing, etc. are included. Management of the mapping between LBA and physical addresses is performed using a look-up table (LUT) 33. The physical address corresponding to a certain LBA indicates the storage position in the NAND memory 5 to which the data of this LBA is written. Physical addresses include physical page addresses and physical block addresses. 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 a page only once per erase cycle.

このため、コントローラ4は、同じLBAへのライト(上書き)を、NANDメモリ5上の別のページにマッピングする。つまり、コントローラ4は、この別のページにデータをライトする。そして、コントローラ4は、ルックアップテーブル(LUT)33を更新して、このLBAをこの別のページに関連付けると共に、元のページ(つまりこのLBAが関連付けられていた古いデータ)を無効化する。   Thus, the controller 4 maps the 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 look-up table (LUT) 33 to associate this LBA with this other page and invalidates the original page (that is, the old data to 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 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. A block in which only invalid data is copied by copying valid data to another block is released as a free block. This allows this block to be reused after erasure.

ホスト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. The 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 a logical address, but in other embodiments, object ID may be used as a logical address. The LBA is represented by a serial number assigned to a logical sector (size: eg 512 bytes). Serial numbers start from zero. The controller 4 of the SSD 3 writes the write data specified by the starting logical address (Starting LBA) and the transfer length in the write command to the physical page of the physical block in the NAND memory 5. Furthermore, the controller 4 maps the LBA corresponding to the written data to the physical address corresponding to the physical storage position where the data is written by updating the look-up table (LUT) 33.

次に、コントローラ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, the NAND interface 13, the DRAM interface 14, and the 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 specified 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 specified by this read command. The read command includes the LBA of the leading logical block and the transfer length (the number of logical blocks).

拡張ネームスペース管理コマンドは、通常のネームスペース管理コマンドの拡張コマンドである。   Extended namespace management commands are extended commands of ordinary namespace management commands.

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

拡張ネームスペース管理コマンドは、SSD3に対し、ネームスペース用の論理ブロックアドレス(LBA)の数を指定できるだけでなく、SSD3に対し、このネームスペースのために割り当てるべき物理ブロックの個数を指定することができる。つまり、拡張ネームスペース管理コマンドは、作成されるべきネームスペース用に確保されるべき物理リソースの量(物理ブロックの個数)を示すパラメータを含む。拡張ネームスペース管理コマンドは、ホスト2(ホストソフトウェア)が、ホスト2内のワークロードに適した個数の物理ブロックをネームスペースそれぞれのために確保することを可能にする。通常、ネームスペースに割り当てられる物理ブロックの数が増えるほど、そのネームスペースの耐久性を高めることができる。したがって、ホストソフトウェアは、拡張ネームスペース管理コマンドを使用することにより、異なる特徴(耐久性)を備えたネームスペースそれぞれを作成することができる。   The extended namespace management command can not only specify the number of logical block addresses (LBA) for namespace for SSD 3 but also specify the number of physical blocks to be allocated for this namespace for SSD 3 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 enables host 2 (host software) to reserve a number of physical blocks suitable for the workload in host 2 for each namespace. Generally, as the number of physical blocks allocated to a namespace increases, the durability of that namespace can be improved. Thus, host software can create namespaces with different characteristics (durability) by using extended namespace management commands.

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

これらFTLレイヤ処理およびコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。このファームウェアは、CPU12を、ネームスペース制御部21、ライトアンプリフィケーション算出部22、ガベージコレクション動作制御部23、および消耗/リテンション制御部24として機能させる。   These FTL layer processing and command processing may be controlled by firmware executed by the CPU 12. The firmware causes the CPU 12 to function as a namespace control unit 21, a write amplification calculation unit 22, a garbage collection operation control unit 23, and a wear / 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 namespace corresponds to a type 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 the creation request of each namespace from the host 2. In other words, the namespace control unit 21 logically divides the NAND memory 5 into a plurality of areas (namespaces) based on the creation request of each namespace from the host 2. The host 2 can request the SSD 3 to create each of the namespaces using the extended namespace management command described above. The namespace control unit 21 assigns the physical blocks of the number specified by the host 2 to these individual areas (namespaces). These multiple areas (namespaces) are used to store multiple types of data having different update frequencies.

例えば、頻繁に更新されるタイプのデータ(Hotデータ)は、Hotデータを格納するための特定の領域にライトされる。Hotデータはダイナミックデータと称されることもある。更新の頻度が低いタイプのデータ(Coldデータ)は、Coldデータを格納するための特定の別の領域(tier)にライトされる。Coldデータは非ダイナミックデータまたはスタティックデータと称されることもある。   For example, frequently updated types of data (Hot data) are written to specific areas for storing Hot data. Hot data may be referred to as dynamic data. Data with a low frequency of updating (Cold data) is written to a specific separate area (tier) for storing 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 (tier) storages.

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

もしHotデータとColdデータとが同じ物理ブロックに混在される環境であったならば、ライトアンプリフィケーションは著しく増加する可能性がある。   If the Hot data and the Cold data are mixed in the same physical block, 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, updating of the Hot data invalidates only part of the data in the physical block at an early timing, while the remaining data part in the physical block ( Cold data may be maintained in the valid state for a long time.

ライトアンプリフィケーション(WA)は、以下のように定義される。   The 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 from host to SSD"
The “total amount of data written to the SSD” corresponds to the sum of the total amount of data written from the host to the SSD and the total amount of data internally written to the SSD by garbage collection and the like.

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

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

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

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

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

例えば、ホスト2が新たなネームスペースを作成したい時、ホスト2は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをSSD3に送出する。ネームスペース制御部21は、ネームスペース(NS#1)を作成し、このネームスペース(このネームスペースに関連付けられた領域)に、パラメータによって指定される個数の物理ブロックを割り当てる。   For example, when the host 2 wants to create a new namespace, the host 2 sends to the SSD 3 an extended namespace management command including a parameter indicating the number of physical blocks to be secured for the target namespace. The namespace control unit 21 creates a namespace (NS # 1), and assigns the number of physical blocks specified by the parameter to this namespace (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 secured for the target namespace. As a result, a plurality of namespaces (areas) are created, and the NAND memory 5 is logically divided into the 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 (the number of LBA) of the individual areas and the durability to be set in the respective areas. Can be allocated 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 name space (each area). Thereby, 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 the garbage collection operation in namespace units (area units), thereby preventing Hot data and Cold data from being mixed in the same physical block. More specifically, when the garbage collection operation control unit 23 receives an extended garbage collection control command from the host 2, the garbage collection operation control unit 23 determines the physical property assigned to the target namespace specified by the extended garbage collection control command. From the blocks, select the target physical blocks for garbage collection. Then, the garbage collection operation control unit 23 executes a garbage collection operation of copying the valid data from the target physical block group to the copy destination free block.

さらに、ガベージコレクション動作制御部23は、ネームスペース毎に実行されるガベージコレクション動作によって作り出されたフリーブロック群を、これらネームスペースによって共有される共有フリーブロック群として管理する。つまり、これらフリーブロック群は、ネームスペース間で共有される。ガベージコレクション動作制御部23は、最小のプログラム/イレーズ回数のフリーブロックをフリーブロック群から選択する。そして、ガベージコレクション動作制御部23は、選択されたフリーブロックを、上述の対象ネームスペースに対応する領域のコピー先フリーブロックとして割り当てる。   Furthermore, the garbage collection operation control unit 23 manages free blocks created by the garbage collection operation executed for each namespace as shared free blocks shared by these namespaces. That is, these free blocks are shared among namespaces. The garbage collection operation control unit 23 selects the free block of 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データ用の領域に自動的に割り当てることを可能にする。   Generally, the number of free block program / erase times created by the area garbage collection operation for Cold data is far less than the number of program / erase times of the free block created by the area garbage collection operation for Hot data . This is because, once a certain amount of Cold data is once written in the area for Cold data, the Cold data is not updated frequently, or is updated infrequently in many cases. On the other hand, the number of program / erase times of free blocks created by the garbage collection operation of the area for Hot data is usually relatively large. Therefore, the above-mentioned operation of allocating the free block of the minimum program / erase count as the copy destination free block automatically makes the block with a small program / erase count used in the area for cold data into the area for hot data. Allow to assign to.

消耗/リテンション制御部24は、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御することによって信頼性(データリテンション)と耐久性(DWPD値)との間のトレードオフを最適化するための動作を実行する。これにより、Hotデータ用の領域の耐久性を高めることができ、またColdデータ用の領域のデータリテンション(ライトされたデータのリテンション時間)を延ばすことができる。   The wear / retention control unit 24 trades between reliability (data retention) and durability (DWPD value) by controlling the ratio between a code for suppressing memory cell wear and an error correction code (ECC). Take action to optimize off. As a result, the durability of the area for Hot data can be improved, and data retention of the area for Cold data (retention time of written data) 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 to the NAND memory 5. In addition, the storage area of the DRAM 6 may be used as a GC buffer 32 for temporarily storing data moved during a garbage collection (GC) operation. Also, the storage area of the DRAM 6 may be used to store the above-described look-up table 33. The look-up table 33 includes a plurality of look-up tables (LUT # 1, LUT # 2, ...) respectively corresponding to a plurality of namespaces in order to be able to execute independent garbage collection (GC) operations for each namespace. It may be divided into.

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

ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ41、オペレーティングシステム42、ファイルシステム43が含まれる。   The host 2 is an information processing apparatus that executes various programs. The programs executed by the information processing apparatus 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 entire host 2 and controls the hardware in the host 2 and performs control to enable the application to use the hardware and the SSD 3 Is configured software.

ファイルシステム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 control file operations (creation, storage, update, deletion, 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 application software layer 41. Examples of application software threads include client software, database software, virtual machines, etc.

アプリケーションソフトウェアレイヤ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 a 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 the present 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 (region) for Hot data and a namespace (region) for Cold data. The hierarchy management unit 44 sends, to the SSD 3, an extended namespace management command including a parameter indicating the number of physical blocks to be allocated to the namespace (area) for Hot data. When a 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 a namespace ID for Hot data. Next, the hierarchy management unit 44 sends to the SSD 3 an extended namespace management command including a parameter indicating the number of physical blocks to be allocated to the namespace (area) for Cold data. When a 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 a 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 the SSD 3, the hierarchy management unit 44 sends a write command including the namespace ID for Hot data to the SSD 3. When it is necessary to write certain Cold data to the SSD 3, the hierarchy management unit 44 sends a write command including the namespace ID for Cold data to the SSD 3.

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

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

図2の左部に示される階層化ストレージシステムでは、3種類のSSDが用途に応じて使い分けられている。階層(T1)用のSSDは、小容量・高速SSDである。小容量・高速SSDは、例えば、メモリセル当たりに1ビットの情報を格納するSLC−SSDであってもよい。このため、階層(T1)用のSSDは、高価格SSDである。   In the tiered storage system shown in the left part of FIG. 2, three types of SSDs are used depending on applications. The SSD for 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 of information per memory cell. For this reason, the SSD for tier (T1) is a high price SSD.

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

SSDの耐久性を示す指標の一つに、DWPD(Drive Write Per Day)がある。例えば、DWPD=10は、1Tバイトの総容量を有するSSDに関しては、1日当たり10Tバイト(=10×1Tバイト)のデータのライトを5年間に渡って毎日実行することができることを意味する。階層(T1)用のSSDには、DWPD=10の耐久性が要求される場合がある。   One of the indicators showing the durability of SSD is DWPD (Drive Write Per Day). For example, DWPD = 10 means that for SSDs having a total capacity of 1 Tbyte, writing of 10 Tbytes (= 10 × 1 T bytes) of data can be performed daily for five years. 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 contents of the file.

階層(T2)用のSSDは、中容量SSDである。中容量SSDは、例えば、メモリセル当たりに2ビットの情報を格納するMLC−SSDであってもよい。階層(T2)用のSSDは、メタデータよりも、更新の頻度が低いデータのストレージとして使用される。階層(T2)用のSSDには、DWPD=1が要求される場合がある。階層化ストレージシステム全体の容量に対する階層(T2)の容量の割合は、例えば、4パーセントである。   The SSD for 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 tier (T2) is used as storage for data that is updated less frequently than metadata. DWPD = 1 may be required for SSDs for 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 tier (T3) is a low-cost, high-capacity SSD. This large capacity SSD may be, for example, MLC-SSD or TLC-SSD. The SSD for tier (T3) is used as storage of data that is rarely updated. In SSDs for tier (T3), durability as low as about 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 tiered storage system in which all data of three tiers T1 to T3 are stored in one SSD. The DWPD required for the entire single-tiered storage system can be determined 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
Thus, the application of a single tiered storage system significantly increases the capacity required for the SSD but reduces the durability required for the SSD. MLC-SSD or TLC-SSD is suitable for realizing low cost and high 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 comparable to that of SLC-SSD. Therefore, even with a single-tiered storage system that uses low-cost, high-capacity SSDs, it is almost equivalent to a tiered storage system by adding the function to optimize the durability relationship between multiple tiers Equivalent durability and performance can be obtained.

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

SSD#1のストレージスペースは、例えば、異なる更新頻度を有する複数種のデータ(Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータ)をそれぞれ格納するための領域51、52、53、54、55に論理的に分割される。   The storage space of the SSD # 1 includes, for example, areas 51, 52, 53, 54 for storing plural types of data (Hot data, Warm data, Middle data, Middle data, Cool data, Cold data) having different update frequencies, respectively. 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 frequency of the update. The data update frequency is reduced in the order of Hot data, Warm data, Middle data, Cool data, and Cold data. Warm data, middle data, and cool data are data having an update frequency intermediate between hot data and cold data.

領域51は、Hotデータを格納するための階層ストレージ(tier#1)として使用される。領域51には、ネームスペース(NS#1)が関連付けられている。領域51は、小容量・高更新頻度のHotデータ(アクティブデータ)を格納するために利用される。SSD#1の総容量に対する領域51の容量の割合の例は、1パーセントであってもよい。領域51に要求されるDWPDの例は、10であってもよい。   The area 51 is used as tiered 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) of small capacity and 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%. The example of the DWPD required for the area 51 may be ten.

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

領域53は、Middleデータを格納するための階層ストレージ(tier#3)として使用される。領域53には、ネームスペース(NS#3)が関連付けられている。SSD#1の総容量に対する領域53の容量の割合の例は、3パーセントであってもよい。領域53に要求されるDWPDの例は、1であってもよい。   The area 53 is used as tiered storage (tier # 3) for storing the Middle data. In the area 53, a namespace (NS # 3) is associated. An example of the ratio of the area 53 capacity to the total capacity of the SSD # 1 may be 3%. An 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 tiered storage (tier # 4) for storing the Cool data. The area 54 is associated with a namespace (NS # 4). 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 the DWPD required for the area 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 tiered storage (tier # n) for storing Cold data. The area 55 is associated with a namespace (NS # n). The area 55 is used to store large capacity / 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 update of the area 55 is about 1/100 of the frequency of update of the area 51. Therefore, the example of the DWPD required for the area 55 may be 0.1.

このように、Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータは異なる領域にそれぞれ格納される。よって、更新頻度が異なるデータ、例えばHotデータとColdデータとが同じブロックに混在するという状況の発生を防止することができる。この結果、SSD3のライトアンプリフィケーションを低下させることができる。   Thus, Hot data, Warm data, Middle data, Cool data, and Cold data are stored in different areas. Therefore, it is possible to prevent the occurrence of 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 physical resources are distributed to a plurality of areas 51 to 55 at a ratio as shown in FIG. 3, the DWPD required for the entire SSD 3 (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 × 0.01) + (3 × 0.02) + (1 × 0.03) + (0.3 × 0.14) + (0.1 × 0.8) = 0.312 In principle, this means that in regions 51 to 55 logically The divided SSD3 (SSD # 1) means that it can be realized by a large capacity / low priced SSD.

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

もし複数のtierが異なるSSDによって実現されているならば、使用されるSSD自体を交換しないかぎり、個々のtierのサイズを変えることはできない。本実施形態では、同じ一つのSSDが複数のtier(領域)に論理的に分割されている。したがって、個々のtierのサイズをワークロードおよび各tier(領域)に設定すべき耐久性に合わせて最適化することができる。   If multiple tiers are realized by different SSDs, the size of each tier can not be changed unless the used SSD itself is replaced. In the present embodiment, the same single 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 in each tier (area).

つまり、本実施形態では、領域51〜55に対して幾つの物理ブロックを割り当てるかをホスト2の制御によって領域毎に決定することができる。   That is, in the present embodiment, how many physical blocks are allocated to the areas 51 to 55 can be determined for each area by 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, with regard to the area 51 (tier # 1) for Hot data, the host software may request the SSD 3 to allocate a sufficient number of physical blocks exceeding the expected total amount of Hot data (user data capacity) . In response to this request, the controller 4 of the SSD 3 sets the designated number of physical blocks dedicated to the area 51 (tier # 1) for Hot data to the area 51 (tier # 1) for Hot data. assign. For example, if the expected total amount of Hot data (user data capacity) is 100 Gbytes, host software may request allocation of physical blocks corresponding to 200 Gbytes. In this case, the controller 4 allocates physical blocks corresponding in number to 200 Gbytes to the area 51 (tier # 1). As a result, physical blocks corresponding in number to twice the capacity of the user area of area 51 (tier # 1) are allocated for area 51 (tier # 1). The remaining 100 GB of physical resources obtained by subtracting the capacity of the user area from 200 Gbytes functions as an over-provision area of area 51 (tier # 1).

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

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

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

これに対し、本実施形態では、ホスト2によって指定された個数の物理ブロックを個々のネームスペース(領域)に割り当てることができ、さらに、この結果、所望の容量のオーバープロビジョン領域を領域毎に個別に設定することができる。   On the other hand, in the present embodiment, the physical blocks of the number specified by the host 2 can be allocated to each name space (area), and as a result, the over-provisioning area of the desired capacity is divided into areas. It 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 presence of the over-provisioned area 51b improves the durability and performance of the user area 51a in the area 51.

他の各領域に関しても、この領域に割り当てられた物理ブロックの総数によって決定される容量からこの領域内のユーザ領域の容量を引いた残りの容量が、この領域内のオーバープロビジョン領域として機能する。   With respect to each of the other areas, the remaining capacity obtained by subtracting the capacity of the user area in this area from the capacity determined by the total number of physical blocks allocated to this area functions as an over-provisioned 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 area 51 for Hot data, the host software also allocates a number of physical blocks exceeding the expected total amount of Warm data (the capacity of the user area) for the area 52 (tier # 2) for Warm data. You may request SSD3. In response to this request, the controller 4 of the SSD 3 allocates a designated number of physical blocks dedicated to the area 52 for Warm data to the area 52 (tier # 2) for this Warm data. For example, if the expected total amount of Warm data (user data capacity) is 200 Gbytes and assignment of physical blocks corresponding to 250 Gbytes is requested by the host software, controller 4 corresponds to 250 Gbytes. The physical blocks of the number are allocated to the area 52 (tier # 2). As a result, a physical resource that is 50 GB larger than the capacity of the user area of area 52 (tier # 2) is allocated to area 52 (tier # 2). The remaining 50 GB of physical resources obtained by subtracting the capacity of the user area from the physical resources of 250 Gbytes function as an over-provision area of 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 regard to the area 55 (tier # n) for Cold data, the host software assigns to SSD 3 the allocation of the minimum number of physical blocks determined in consideration of the expected total amount of Cold data (capacity of user data). You may request it. In response to this request, the controller 4 allocates a designated number of physical blocks dedicated to the area 55 (tier # n) for cold data to the area 55 (tier # n) for cold data. For example, if the expected total amount of Cold data (user data capacity) is 8000 Gbytes, and the host software requires allocation of physical blocks corresponding to 8001 Gbytes, the controller 4 corresponds to 8001 Gbytes. The physical blocks of the number are allocated 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 of physical resources obtained by subtracting user data capacity from 8001 Gbytes of physical resources functions as an over-provisioning area of area 55 (tier # n).

このように、SSD3は、確保すべき物理ブロックの個数をネームスペース毎に指定するホスト2からの要求に基づいて、個々の領域に対して、指定された個数の物理ブロックを割り当てる。この結果、個々の領域について、ユーザ領域の容量に対するオーバープロビジョン領域の容量の比率を最適化することが可能となる。例えば、上の階層になるほど、割り当てられるオーバープロビジョン領域の量が多くなるように、個々の領域に割り当てられる物理ブロックの個数が調整されても良い。この場合、例えば、領域55内のユーザ領域の容量に対する領域55内のオーバープロビジョン領域の容量の比率は、領域51内のユーザ領域の容量に対する領域51内のオーバープロビジョン領域の容量の比率よりも小さくなる。   As described above, the SSD 3 assigns the designated number of physical blocks to each area based on the request from the host 2 that designates the number of physical blocks to be secured for each namespace. As a result, it is possible to optimize the ratio of the over-provisioned area capacity to the user area capacity for each area. For example, the number of physical blocks allocated to each area may be adjusted such that the higher the hierarchy is, the more the over-provisioned area is allocated. In this case, for example, the ratio of the capacity of the over-provisioned area in the area 55 to the capacity of the user area in the area 55 is calculated from the ratio of the capacity of the over-provisioned 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, it is possible to effectively reduce the light amplification of the area 51 by utilizing the large size over-provision area. Because, even if the physical blocks of user area 51a of area 51 are filled with 100 M bytes of data, as a result, these physical blocks will not contain usable pages without erasing the blocks, This is because physical blocks in the over-provisioning area 51b can be used to write data instead of blocks. Therefore, the timing at which the garbage collection operation of the area 51 is performed can be sufficiently delayed. As data is written to the physical blocks in the over-provisioning area 51b, the data in the physical blocks in the user area 51a is invalidated by the update. Physical blocks for which all data has been invalidated can be reused without its garbage collection. Therefore, since the write amplification in the area 51 can be efficiently reduced, the number of write / erase times of the physical block group in 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-provisioning area of the area 55 is small, the light amplification of the area 55 is increased. However, the update frequency of the area 55 for Cold data is much lower than the update frequency of the area 51 for Hot data. For example, the update frequency of the area 55 for Cold data is 1/100 of the update frequency of the area 51 for Hot data. That is, since the area 55 is rewritten only once while the area 51 is rewritten 100 times, the number of programming / erasing times of each physical block of the area 55 of Cold data is very small. Therefore, with regard to the area 55 of Cold data, even if the write amplification is large, the number of program / erase times of the physical block group of the area 55 of Cold data immediately reaches the program / erase times upper limit value of SSD3. There is no occurrence of the phenomenon of

図4は、複数の領域51〜55とこれら領域51〜55にライトされるデータとの関係を示す。   FIG. 4 shows the relationship between a plurality of areas 51-55 and data written to these areas 51-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にライトされる。   NAND memory 5 is logically divided into areas 51-55 corresponding to namespaces NS # 1-NS # 5. The write data associated with the ID (NSID = 1) of the namespace NS # 1, that is, the Hot data is written to the area 51. The write data associated with the ID (NSID = 2) of the namespace NS # 2, that is, the Warm data, is written to the area 52. Similarly, write data associated with the ID (NSID = n) of the namespace NS # n, that is, Cold data, is written to the area 55.

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

ここでは、複数のネームスペース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 assigned to the namespace NS # 1. A logical address space (LBA space) A2 of 0 to E1 is assigned to the namespace NS # 2. Similarly, logical address spaces (LBA spaces) An of 0 to En are assigned to the namespace NS # n.

本実施形態では、ルックアップテーブルLUTは、ネームスペース毎に分割されている。つまり、ネームスペースNS#1〜NS#nに対応するn個のルックアップテーブルLUT#1〜LUT#nがSSD3のコントローラ4によって管理される。   In the present embodiment, the lookup table LUT is divided for each namespace. That is, the 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 look-up 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 the namespaces NS # 1 to NS # n.

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

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

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

(1)作成/削除
(2)LBA範囲
(3)物理リソースサイズ
(4)tier属性(オプショナル)
作成/削除のパラメータの値0hは、ネームスペースの作成をSSD3に要求する。作成/削除のパラメータの値1hは、ネームスペースの削除をSSD3に要求する。ネームスペースの削除を要求する場合には、削除対象のネームスペースのIDを示すパラメータが拡張ネームスペース管理コマンドに設定される。
(1) Create / delete (2) LBA range (3) Physical resource size (4) tier attribute (optional)
The create / delete parameter value 0h requests the SSD 3 to create a namespace. The creation / deletion parameter value 1h requests the SSD 3 to delete the namespace. When deletion of a namespace is requested, 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 (LBA 0 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 over-provision size instead of the physical resource size parameter.

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

tier属性のパラメータは、このネームスペースに対応する階層属性を示す。tier属性のパラメータの値とtier属性との関係は、次の通りである。   The parameter of the tier attribute indicates the tier attribute corresponding to this namespace. The relationship between the value of the parameter of the tier attribute 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 to the SSD 3 an extended namespace management command requesting creation of a namespace (area for Hot data). This extended namespace management command includes a physical resource size parameter that specifies the number of physical blocks to be secured for the area for Hot data. 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 area for Hot data. 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 designated 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 namespace management command to the SSD 3 requesting creation of the next namespace (area for Warm data). This extended namespace management command includes a physical resource size parameter that specifies the number of physical blocks to be secured for the area for Warm data. 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 designated 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 an extended namespace management command to the SSD 3 requesting 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 to be secured 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 designated 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 manner, the process of creating the namespace is repeated while assigning the designated number of physical blocks to the namespace, whereby the NAND memory 5 is logically divided into a plurality of areas, and further designated for each area. The assigned number of physical blocks is allocated.

図8のフローチャートは、SSD3によって実行される物理リソース割り当て処理の手順を示す。   The flowchart of FIG. 8 shows the procedure of 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 the extended namespace management command requests 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 creation of a namespace (YES in step S22), can the controller 4 secure the number of physical blocks specified by the physical resource parameter in the extended namespace management command? 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 remaining physical blocks is equal to or more than the designated number (YES in step S23), the controller 4 creates a namespace, and the designated number of physical blocks are associated with the namespace. (Step S24). The controller 4 notifies the host 2 of the completion of the command (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 an error may change the number of physical blocks to be secured. Alternatively, the host 2 notified of the error response may re-do the process of creating each namespace while specifying the number of physical blocks to be secured for each namespace.

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

ホスト2は、データをライトする要求が発生した時(ステップS31のYES)、このライトデータ(書き込むべきデータ)を、Hotデータ、Warmデータ、Middleデータ、Coolデータ、またはColdデータとして分類する(ステップS32)。ホスト2は、例えば、メタデータ、ファイルの中身(コンテンツ)といったデータ種別に応じて、ライトデータ(書き込むべきデータ)を、Hotデータ、Warmデータ、Middleデータ、Coolデータ、またはColdデータとして分類してもよい。   The host 2 classifies this write data (data to be written) as Hot data, Warm data, Middle data, Cool data, or Cold data when a request to write data occurs (YES in step S31) S32). The host 2 classifies write data (data to be written) as Hot data, Warm data, Middle data, Cool data, or Cold data according to data types such as metadata and file contents (content), for example. It is also 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 namespace for cold data 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 top LBA indicates the top LBA of the data to be written.

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

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

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

ホスト2は、ライトコマンドをSSD3に送出し、ライトデータをSSD3に送出する。SSD3のコントローラ4は、ライトデータをライトバッファ(WB)31にライトし(ステップS41)、そしてコマンド完了command completionのレスポンスをホスト2に通知する。この後、コントローラ4は、ライトデータを、ライトコマンド内のネームスペースIDによって指定されるネームスペースに関連付けられた領域内の利用可能ブロックにライトする(ステップS42)。   The host 2 sends a write command to the SSD 3 and sends write data to the SSD 3. 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 the command completion command completion. Thereafter, 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は、データがライトされるべきネームスペース(領域)に応じて、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御する処理を示す。   FIG. 12 shows a process of controlling the ratio between a code for suppressing memory cell wear and an error correction code (ECC) according to a name space (area) in which data is to be written.

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

ここで、1回の書き込み当たりのメモリセルの消耗を抑えるためのコード(コーディング)を使用して、ライトデータをエンコードする動作の概要について説明する。   Here, an outline of an operation of encoding write data using a code (coding) for suppressing memory cell consumption per one write 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 cell, and the first coded data (written as "endurance code" in FIG. 20) Generate part). This code (coding) 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 memory cells heavily. As this code (coding), for example, there is the above-mentioned endurance code (endurance coding) or the like.

例えば、MLCにおいては、メモリセルは、プログラムによって、2ビットに対応する4つのレベル(“E”レベル、“A”レベル、“B”レベル、“C”レベル)のいずれかに対応する状態(プログラムレベル)に設定される。“E”レベルは消去状態である。メモリセルの閾値電圧分布は、“E”レベル、“A”レベル、“B”レベル、“C”レベルの順で高くなる。“C”レベルの状態は、メモリセルを激しく消耗させる状態(プログラムレベル)である。   For example, in the MLC, the memory cell is in a state corresponding to any one of four levels (“E” level, “A” level, “B” level, “C” level) corresponding to 2 bits by programming. Program level is set. The "E" level is in 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 state of "C" level is a state (program level) of causing the memory cell to be depleted.

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

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

コントローラ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 the encoding, whereby the second encoded data (“endurance code” and “endurance code” in FIG. Data) and write the second encoded data 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)の比率を、ライトデータがどの領域(ネームスペース)にライトされるかに応じて、自動的に変更する。   Furthermore, the controller 4 automatically changes the ratio of the first encoded data to the error correction code (ECC) according to which area (name space) the write data is written to.

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

例えば、ライトデータがHotデータ用の領域にライトされるべきライトデータである場合、コントローラ4は、Hotデータ用の領域の耐久性(DWPD)を高めるために、より長い第1符号化データとより短いエラー訂正コードの組み合わせを含む第2符号化データが得られるように第1符号化データとエラー訂正コードの比率を制御する。つまり、Hotデータのライトにおいては、信頼性(データリテンション)よりも耐久性を優先するエンコード方法が利用される。   For example, if the write data is write data to be written to the area for Hot data, the controller 4 may use the first encoded data longer than the longer first encoded data to enhance the durability (DWPD) of the area for Hot data. The ratio of the first encoded data to the error correction code is controlled to obtain second encoded data including a combination of short error correction codes. That is, in the writing of 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, if the write data is the write data to be written to the area for Cold data, the controller 4 may make the first encoded data shorter to extend the data retention of the data to be written to the area for Cold data. The ratio of the first encoded data to the error correction code is controlled to obtain second encoded data including a combination of the second and the third error correction codes. That is, in the writing of Cold data, an encoding method is used in which reliability (data retention) is prioritized over durability.

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

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

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

図13は、SSD3によって実行されるエンコード処理およびデコード処理を示す。   FIG. 13 shows the encoding process and the decoding process performed 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, a systematic code is used to generate an ECC. Examples of the systematic code include a Hamming code, a BHC code, a Reed Solomon code, and the like.

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

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

エンデュランスコードエンコーダ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 appearing 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 losslessly compress the write data. The codebook 913 shows the correspondence between each bit pattern appearing in the write data and the conversion code corresponding to the bit pattern. The compression unit 912 assigns a short conversion code to a bit pattern with a high frequency of occurrence.

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

符号長チェック部916は、現在の圧縮データの符号長(ビット長)をチェックする。現在の圧縮データの符号長(ビット長)が予め決められた閾値(ターゲットビット長)よりも短い場合、探索および置き換えの処理が繰り返される。これにより、現在の圧縮データの符号長が最適化される。   The code length check unit 916 checks the code length (bit length) of the current compressed data. If the code length (bit length) of the current compressed data is shorter than a predetermined threshold (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 name space (area) has a higher rewrite frequency (update frequency). In other words, the bit length of the encoded data (endurance code) becomes shorter as the name space (area) has a lower rewrite frequency (update frequency).

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

図15のフローチャートは、メモリセルの消耗を抑制するためのエンコード処理の手順を示す。   The flowchart of FIG. 15 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 encodes the compressed data using a code for suppressing consumption of memory cells to generate encoded data.

この場合、コントローラ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 causes the memory cell to be consumed (step S3). The controller 4 converts the searched code (bit pattern) into another long code (bit pattern) with a small consumption of memory cells (step S4). The controller 4 updates the conversion code in the codebook corresponding to the 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 (coded data) is longer than the target bit length (step S6). The target bit length is predetermined according to the name space (area) in which data is to be written. For example, a long target bit length is used for data (Hot data) written to namespace NS # 1, and a short target bit length is used for data (Cold data) written to namespace NS # n. .

現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも短いならば、ステップS3〜S5の処理が再度実行される。ステップS3〜S5の処理が多く繰り返されるほど、メモリセルを激しく消耗させる特定の符号(例えば“C”レベルに対応するビットパターン)の出現頻度を下げることができる。その分、符号化データのビット長はより長くなる。   If the bit length of the current compressed data (coded data) is shorter than the target bit length, the processes of steps S3 to S5 are performed again. The more frequently 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 more heavily. Accordingly, the bit length of the encoded data becomes longer.

現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも長くなったならば(ステップS6のYES)、コントローラ4は、符号化データの例えば末尾にコードブックを付加する(ステップS7)。   If the bit length of the current compressed data (coded 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 coded data (step S7) .

図16のフローチャートは、SSD3によって実行されるライト制御処理の手順を示す。   The flowchart in FIG. 16 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 namespace (area) the write data to be received is the write data to be written, and the encoding method for encoding the write data according to the determination result Change The change of encoding method is implemented by changing the ratio of endurance code to 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 a write command from the host 2 (YES in step S101), the controller 4 determines the hierarchical attribute (Hot / Hot) of the target namespace (area) specified 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-provisioned area of the target namespace (area) (e.g., the ratio between the user area and the over-provisioned area). Alternatively, if the extended namespace management command which requested creation of the target namespace includes the tier attribute parameter, the controller 4 sets the hierarchical attribute indicated by the tier attribute parameter to the hierarchical attribute of the target namespace. It may be determined that Alternatively, the write command may include the 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 durability over reliability by control (step S104). According to the encoding method here, 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 available 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 of the endurance code to the ECC. The write data is encoded using an encoding method in which reliability is prioritized over durability by control (step S107). According to the encoding method herein, 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 available page of the physical block in the area 55 (step S108).

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

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

コントローラ4は、ネームスペース間で共有されるフリーブロック群を含むフリーブロックプール(フリーブロックリスト)60を管理する。コントローラ4は、フリーブロック群から、最小のプログラム/イレーズ回数のフリーブロックを選択する。コントローラ4は、選択されたフリーブロックを、ネームスペース(NS#1)に、コピー先フリーブロックB1000として割り当てる。コントローラ4は、ガベージコレクションの対象物理ブロック群(ここでは、ブロックB0〜B3)からコピー先フリーブロックB1000に全ての有効データをコピーする。そして、コントローラ4は、ルックアップテーブルLUT#1を更新して、有効データをコピー先フリーブロックB1000にマッピングする。ガベージコレクションの対象物理ブロック群B0〜B3は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプール60に移動される。   The controller 4 manages a free block pool (free block list) 60 including free blocks shared among namespaces. The controller 4 selects the free block of the minimum program / erase count from the free block group. The controller 4 assigns the selected free block to the namespace (NS # 1) as a 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 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 contain valid data. These free blocks are moved to the free block pool 60.

他のネームスペース(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 a target physical block of garbage collection from the physical block (active block) in the area 55 associated with the namespace (NS # n). select. For example, the controller 4 may identify the upper few physical blocks having the largest ratio of invalid data by referring to the lookup table LUT # n, and select this physical block as a target physical block for garbage collection. .

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

上述したように、ネームスペース(NS#n)の更新の頻度はネームスペース(NS#1)の更新の頻度よりも遙かに低いので、ネームスペース(NS#n)のガベージコレクションによって作り出されたフリーブロックのプログラム/イレーズ回数は少ない。本実施形態のガベージコレクション動作においては、ネームスペース(NS#1)のガベージコレクションが実行される度に、ネームスペース(NS#n)で過去に使用されていた物理ブロックがネームスペース(NS#1)のコピー先フリーブロックとして割り当てられる。したがって、ネームスペース(NS#n)で使用されていた、プログラム/イレーズ回数の少ない物理ブロックを、ネームスペース(NS#1)において有効に再利用することが可能となる。この結果、ネームスペース(NS#1)の耐久性を改善することができる。   As mentioned above, the frequency of updating namespace (NS # n) is much lower than the frequency of updating namespace (NS # 1), so it was created by garbage collection of namespace (NS # n) There are few program / erase times of free blocks. In the garbage collection operation of this embodiment, every time garbage collection of a namespace (NS # 1) is performed, a physical block used in the past in the namespace (NS # n) becomes a namespace (NS # 1). Is allocated as a copy destination free block of Therefore, it is possible to effectively reuse, in the namespace (NS # 1), physical blocks with a low program / erase count that have been used in the namespace (NS # n). 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)内の最小プログラム/イレーズ回数の物理ブロックと入れ替えてもよい。   Furthermore, 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 For example, the program / erase count of any physical block of physical blocks used in the namespace (NS # 1) is a threshold count (the threshold count is set to a value smaller than the upper limit of the program / erase count) When the controller 4 has reached, the physical block may be replaced with the physical block of the minimum program / erase count in the name space (NS # n).

図18は、SSD3によって実行されるライトデータ量カウント処理を示す。   FIG. 18 shows the 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 not the write amplification of the entire SSD 3 but the write amplification for each name space. For this purpose, the controller 4 has two kinds of counters, one for counting the amount of data written by the host 2 and the other for counting the amount of data written by the garbage collection operation. Prepare every time.

カウンタ61およびカウンタ62は、ネームスペース(NS#1)のライトアンプリフィケーションを算出するために使用される。カウンタ61は、ホスト2によってネームスペース(NS#1)、つまり領域51、にライトされたデータの量をカウントする。カウンタ62は、ネームスペース(NS#1)のガベージコレクションによってネームスペース(NS#1)、つまり領域51、にライトされたデータの量をカウントする。   The counters 61 and 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 to 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 counters 63 and 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 to 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 counters 65 and 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 to the namespace (NS # n), that is, the area 55, by garbage collection of the namespace (NS # n).

図19のフローチャートは、SSD3によって実行されるライトデータ量カウント処理の手順を示す。   The flowchart of FIG. 19 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 a write command from the host 2, the controller 4 determines a target namespace (area) in 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 to 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 a namespace (NS # 1) (YES in step S41), the controller 4 uses the counter 61 to write data 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 calculate the amount of data to be written to the namespace (NS # 2). It counts (step S45). In step S45, the current count value of the counter 63 may be increased by the transfer length of the write data.

対象ネームスペース(領域)がネームスペース(NS#n)であれば(ステップS43のYES)、コントローラ4は、カウンタ65を使用して、ネームスペース(NS#n)にライトされるデータの量をカウントする(ステップS46)。ステップS46では、カウンタ65の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。   If the target namespace (area) is a namespace (NS # n) (YES in step S43), the controller 4 uses the counter 65 to calculate the amount of data to be written to the namespace (NS # n). It counts (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 is written to the namespace (NS # 1) by this garbage collection operation using the counter 62. 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 is written to the namespace (NS # 2) by this garbage collection operation using the counter 64. 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 is written to the namespace (NS # n) by this garbage collection operation using the counter 66. 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.

図20のフローチャートは、SSD3によって実行されるライトアンプリフィケーション(WA)算出処理の手順を示す。   The flowchart of FIG. 20 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 to 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 to 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). 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 to 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). 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 to 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 to 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). 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に図21に示すリターンデータを送出して、ネームスペースそれぞれのライトアンプリフィケーションをホスト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 for requesting write amplification of each namespace is received from the host 2 (YES in step S70), the controller 4 sends the return data shown in FIG. The host 2 is notified of the write amplification of (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.

図22のフローチャートは、SSD3よって実行されるカウンタリセット処理の手順を示す。   The flowchart of FIG. 22 shows the procedure of the counter reset process performed 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 the occurrence of a specific reset event such as the change of the setting of the SSD 3. An example of the change of the setting of the SSD 3 may be a change of the setting of a certain namespace or a deletion of a certain namespace. Alternatively, an example of changing the setting of the SSD 3 may be changing the setting of the entire SSD 3.

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 the reception of this command, the SSD 3 may reset the counters 61 to 66 corresponding to all namespaces. If this command includes a namespace ID, the SSD 3 may reset only 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 entire SSD 3 may be treated as this request. The change of 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.

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

コントローラ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 a 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 parameters in the control command (step S82). The controller 4 clears the count values of the counters 61 and 62 corresponding to the name space (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 parameters 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 a namespace (NS # n) (YES in step S87), the controller 4 changes the setting of the namespace (NS # n) according to the parameters in the control command (step S88). The controller 4 clears the count values of the counters 65 and 66 corresponding to the name space (NS # n) to zero (step S89).

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

上述したように、拡張ガベージコレクション(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 any 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 namespace ID parameter indicates the ID of the target namespace for which garbage collection is to be performed.

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

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

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

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

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

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

図24のフローチャートは、SSD3によって実行されるガベージコレクション動作の手順を示す。   The flowchart of FIG. 24 shows the procedure of the garbage collection operation performed 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 S 91), the controller 4 selects the target name specified by the namespace ID in the extended garbage collection (GC) control command The space garbage collection operation is executed (step S92). In step S92, the controller 4 selects some physical blocks to be garbage collected from the active blocks in the target namespace, and copies valid data of these physical blocks to the copy destination physical block.

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

図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 as one storage device from the host 2. The flash array storage includes a plurality of SSDs, that is, SSD # 1, SSD # 2, SSD # 3,..., SSD # n, which are striping-controlled to realize 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 non-volatile memory. Furthermore, 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 the flash array, the area 51 (NS # 1) is disposed across the SSD # 1, the SSD # 2, the SSD # 3,..., The SSD # n. In other words, 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, the SSD # 2, the SSD # 3,..., The SSD # n. In other words, 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, the SSD # 2, the SSD # 3,..., The SSD # n. In other words, 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 disposed across the SSD # 1, the SSD # 2, the SSD # 3,..., The SSD # n. In other words, 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, the SSD # 2, the SSD # 3,..., The SSD # n. In other words, 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 the hardware configuration of the flash array storage of 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 above-described SSD # 1, SSD # 2, SSD # 3,..., SSD # n. The flash array controller 81 is configured to execute striping control for distributing data to the SSDs # 1, SSDs # 2, SSDs # 3,..., SSDs #n. For example, in the case of writing data to the area 51 (NS # 1), for example, the first 4 Kbyte data D1 is written to the area in the SSD # 1 corresponding to the NS # 1, and the next 4 Kbyte data D2 is written to the area in SSD # 2 corresponding to NS # 1, the following 4 Kbyte data D3 is written to the area in SSD # 3 corresponding to NS # 1, and the subsequent 4 Kbyte data Dn is NS # The data is written to the area in the SSD # n corresponding to 1 and the subsequent 4 Kbyte data Dn + 1 is written to the area in the SSD # 1 corresponding to the 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に並行してライトされてもよい。   As described above, the write data is distributed to the SSD # 1, SSD # 2, SSD # 3,..., SSD # n in units of predetermined data size (4 K bytes). For example, when the host 2 is required 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 K bytes), and these data portions May be written in parallel to SSD # 1, SSD # 2, SSD # 3,... SSD # n.

このように、SSD#1、SSD#2、SSD#3、…SSD#nは並行にして動作するので、データライトのための性能を高めることができる。   As described above, since the SSD # 1, the SSD # 2, the SSD # 3,..., The SSD # n operate in parallel, the performance for data writing can be enhanced.

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

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

ここでは、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 name space management command to the flash array controller 81 to reserve physical blocks corresponding to 1% of the total capacity of the entire flash array storage 80 for tier # 1 (NS # 1). Require to do things. The flash array controller 81 is a physical block to be secured for tier # 1 (NS # 1) in each SSD based on the capacity of each 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 the SSD # 1 is 100 GB, the capacity of the SSD # 2 is 200 GB, the capacity of the SSD # 3 is 1 TB, and the capacity of the 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 and the SSD # 1 has the number of physical blocks equivalent to 100 GB of 1% capacity (1 GB) to be secured for NS # 1. To request. The flash array controller 81 sends an extended name space management command to the SSD # 2 to make it possible to reserve the physical blocks corresponding to 200 GB of 1% capacity (2 GB) for the NS # 1. To request. The flash array controller 81 sends an extended name space management command to the SSD # 3 to make it possible to reserve the physical blocks corresponding to the 1 TB capacity (1 GB of capacity (10 GB)) for the NS # 1 using the SSD # 3. To request. The flash array controller 81 sends an extended namespace management command to the SSD # n, and the SSD # n is to reserve the physical blocks of the number corresponding to one 100 GB capacity (1 GB) (1 GB). To request.

図29は、図28の容量割り当てに対応するライト動作の例を示す。   FIG. 29 shows an example of the 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 writing data to the area 51 (NS # 1) by striping control, for example, the first 4 Kbyte data D1 is written to the area in the SSD # 1 corresponding to the NS # 1. The next 4K bytes of data D2 and the subsequent 4K bytes of data D3 are written to the area in SSD # 2 corresponding to NS # 1. The following data D3 to D13 are written to the area in the SSD # 3 corresponding to the NS # 1. The following 4K bytes of data D14 are written to the area in SSD # n corresponding to NS # 1, and the subsequent 4K bytes of data D15 are written to the area in SSD # 1 corresponding to NS # 1.

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

この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。   This information processing apparatus is realized as a server computer or a personal computer. The 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 the 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 random access memory such as DRAM. Programs executed by the processor 101 include the application software layer 41, the OS 42, and the file system 43 described above. The file system 43 functions as the hierarchy 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. The 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 communications 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 execute communication with devices respectively connected to the plurality of connectors 107A. In the present embodiment, the plurality of SSDs 3 are respectively connected to the plurality of connectors 107A. 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 execute power management of the information processing apparatus. The EC 108 powers on and off the information processing apparatus according to the user's operation of the power switch. The EC 108 is implemented as a processing circuit such as a one-chip microcontroller. The EC 108 may incorporate a keyboard controller that controls an input device such as a keyboard (KB).

この情報処理装置においては、ホストソフトウェア(アプリケーションソフトウェアレイヤ41、OS42およびファイルシステム43)の制御の下、プロセッサ101は、以下の処理を実行する。   In the information processing apparatus, the processor 101 executes the following processing under the control of host software (the application software layer 41, the OS 42, and the 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 SSD 3 to create a namespace NS # 1 (area 51) for Hot data in the SSD 3. The extended namespace management command includes a parameter indicating the number of physical blocks to be allocated to the namespace NS # 1 (area 51) for Hot data.

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

プロセッサ101は、ネームスペースNS#1のネームスペースIDをHotデータ用のネームスペースIDとして管理し、ネームスペースNS#2のネームスペースIDをWarmデータ用のネームスペースIDとして管理し、そしてネームスペースNS#nのネームスペースIDをColdデータ用のネームスペースIDとして管理する。   The processor 101 manages the namespace ID of namespace NS # 1 as the namespace ID for Hot data, manages the namespace ID of namespace NS # 2 as the namespace ID for Warm data, and namespace NS Manage namespace ID of #n as 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 the SSD 3, the processor 101 sends a write command including the namespace ID of the namespace NS # 1 to the SSD 3. When it is necessary to write certain Cold data to the SSD 3, the processor 101 sends a write command including the namespace ID of the namespace NS # n to the SSD 3.

図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に設けられたストロットに取り外し可能に挿入されてもよい。   The information processing apparatus includes a thin box-shaped housing 201 that can be accommodated in a rack. A large number of SSDs 3 may be disposed in the housing 201. In this case, each SSD 3 may be removably inserted into a slot provided on the front surface 201A of the housing 201.

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

以上説明したように、本実施形態によれば、異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペース(領域51〜55)が管理される。コントローラ4は、メモリセルの消耗を抑制するための第1のコードを使用してライトデータをエンコードして第1符号化データを生成し、第1符号化データにエラー訂正コードを付加することによってNANDメモリ5にライトされるべき第2符号化データを生成する。さらに、コントローラ4は、ライトデータがライトされるべきネームスペースに基づいて、第1符号化データとエラー訂正コードの比率を変更する。したがって、ネームスペース毎に信頼性(データリテンション)と耐久性(DWPD値)との間のトレードオフを最適化することが可能となり、様々な種類のデータの記憶に有用なメモリシステムを実現できる。   As described above, according to this embodiment, a plurality of namespaces (areas 51 to 55) for storing a plurality of types of data having different update frequencies are managed. The controller 4 encodes the write data using the first code for suppressing consumption of the memory cell to generate the first encoded data, and adds the error correction code to the first encoded data. The second encoded data to be written to the NAND memory 5 is generated. Furthermore, the controller 4 changes the ratio of the first encoded data to the error correction code based on the namespace in which the write data is to be written. Therefore, it is possible to optimize the trade-off between reliability (data retention) and durability (DWPD value) for each name space, and a memory system useful for storing various types of data can be realized.

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

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

不揮発性メモリと、
コントローラとを具備し、
前記コントローラは、
異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースを管理し、前記複数のネームスペースは第1種類のデータを格納するための第1ネームスペースと前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2ネームスペースとを含んでおり、
ライトデータに前記第1ネームスペースのIDが関連付けられている場合、メモリセルの消耗を抑制するためのコーディングを使用して前記ライトデータをエンコードして第1の長さの第1符号化データを生成し、前記第1符号化データに第2の長さのエラー訂正コードを付加することによって前記不揮発性メモリのページサイズにマッチし、第1のデータ量を有する第2符号化データを生成し、前記第2符号化データを前記第1ネームスペースに対応する前記不揮発性メモリの領域に書き込み、
ライトデータに前記第2ネームスペースのIDが関連付けられている場合、メモリセルの消耗を抑制するためのコーディングを使用して前記ライトデータをエンコードして前記第1の長さよりも短い第3の長さの第3符号化データを生成し、前記第3符号化データに前記第2の長さよりも長い第4の長さのエラー訂正コードを付加することによって前記ページサイズにマッチし、前記第1のデータ量を有する第4符号化データを生成し、前記第4符号化データを前記第2ネームスペースに対応する前記不揮発性メモリの領域に書き込むように構成されているメモリシステム。
Non-volatile memory,
Equipped with a controller,
The controller
A plurality of namespaces for storing a plurality of types of data having different update frequencies are managed, the plurality of namespaces being a first namespace for storing a first type of data and the first type of data And a second namespace for storing data of a second type that has a lower update frequency than
When the ID of the first name space is associated with write data, the write data is encoded using coding for suppressing memory cell consumption to generate first encoded data of a first length. Generating second encoded data having a first data amount matching the page size of the non-volatile memory by generating and adding an error correction code of a second length to the first encoded data; Writing the second encoded data to an area of the non-volatile memory corresponding to the first namespace;
If the ID of the second namespace is associated with write data, a third length shorter than the first length may be encoded using the coding for suppressing memory cell depletion. Matching the page size by generating a third encoded data of the frame length and adding an error correction code of a fourth length longer than the second length to the third encoded data; A memory system configured to generate fourth encoded data having a data amount of and write the fourth encoded data to an area of the non-volatile memory corresponding to the second namespace.
前記エンコードは、前記ライトデータに含まれる、メモリセルを消耗させる特定の符号を、前記特定の符号よりもメモリセルの消耗が小さく且つ前記特定の符号よりも長い別の符号に変換することを含む請求項1記載のメモリシステム。   The encoding includes converting a specific code that consumes a memory cell included in the write data into another code that consumes a smaller amount of memory cells than the specific code and is longer than the specific code. The memory system according to claim 1. 前記コントローラは、
ライトデータに前記第1ネームスペースのIDが関連付けられている場合、前記第1ネームスペースのIDが関連付けられている前記ライトデータを圧縮し、前記圧縮されたライトデータをエンコードして前記第1符号化データを生成し、
ライトデータに前記第2ネームスペースのIDが関連付けられている場合、前記第2ネームスペースのIDが関連付けられている前記ライトデータを圧縮し、前記圧縮されたライトデータをエンコードして前記第3符号化データを生成するように構成されている請求項1記載のメモリシステム。
The controller
When the ID of the first namespace is associated with the write data, the write data associated with the ID of the first namespace is compressed, and the compressed write data is encoded to generate the first code Generate data
When the ID of the second namespace is associated with the write data, the write data associated with the ID of the second namespace is compressed, and the compressed write data is encoded to generate the third code The memory system of claim 1, wherein the memory system is configured to generate
前記第1符号化データおよび前記第3符号化データの各々は前記圧縮されたライトデータよりも長い請求項3記載のメモリシステム。   The memory system according to claim 3, wherein each of the first encoded data and the third encoded data is longer than the compressed write data. 前記不揮発性メモリのメモリセルは、複数のビットに応じて、互いに閾値電圧が異なる複数のレベルのいずれかにプログラムされるように構成されており、
前記エンコードは、前記複数のレベルのうちの第1のレベルに対応し、メモリセルを消耗させる特定の符号が、前記第1のレベルよりも閾値電圧が低い第2のレベルに対応し、前記特定の符号よりもメモリセルの消耗が小さく且つ前記特定の符号よりも長い別の符号に変換されるように、前記ライトデータをエンコードすることを含む請求項1記載のメモリシステム。
The memory cell of the non-volatile memory is configured to be programmed to any one of a plurality of levels having different threshold voltages according to a plurality of bits.
The encoding corresponds to a first level among the plurality of levels, and a specific code for draining a memory cell corresponds to a second level having a threshold voltage lower than the first level, and the identification The memory system according to claim 1, further comprising encoding the write data such that consumption of memory cells is smaller than the code of and converted to another code longer than the specific code.
不揮発性メモリと、
コントローラとを具備し、
前記コントローラは、
前記不揮発性メモリを、異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数の領域であって複数のネームスペースにそれぞれ関連付けられている複数の領域に論理的に分割し、前記複数の領域は第1種類のデータを格納するための第1領域と前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2領域とを含んでおり、前記第1領域および前記第2領域は複数のネームスペースのうちの第1ネームスペースおよび第2ネームスペースにそれぞれ関連付けられており、
ライトデータに前記第1ネームスペースのIDが関連付けられている場合、メモリセルの消耗を抑制するためのコーディングを使用して前記ライトデータをエンコードして第1の長さの第1符号化データを生成し、前記第1符号化データに第2の長さのエラー訂正コードを付加することによって前記不揮発性メモリのページサイズにマッチし、第1のデータ量を有する第2符号化データを生成し、前記第2符号化データを前記不揮発性メモリの前記第1領域に書き込み、
ライトデータに前記第2ネームスペースのIDが関連付けられている場合、メモリセルの消耗を抑制するためのコーディングを使用して前記ライトデータをエンコードして前記第1の長さよりも短い第3の長さの第3符号化データを生成し、前記第3符号化データに前記第2の長さよりも長い第4の長さのエラー訂正コードを付加することによって前記ページサイズにマッチし、前記第1のデータ量を有する第4符号化データを生成し、前記第4符号化データを前記不揮発性メモリの前記第2領域に書き込むように構成されているメモリシステム。
Non-volatile memory,
Equipped with a controller,
The controller
The non-volatile memory is logically divided into a plurality of areas each storing a plurality of types of data having different update frequencies, each being associated with a plurality of namespaces, and the plurality of areas The area includes a first area for storing a first type of data and a second area for storing a second type of data having a lower update frequency than the first type of data, One area and the second area are respectively associated with a first namespace and a second namespace of a plurality of namespaces,
When the ID of the first name space is associated with write data, the write data is encoded using coding for suppressing memory cell consumption to generate first encoded data of a first length. Generating second encoded data having a first data amount matching the page size of the non-volatile memory by generating and adding an error correction code of a second length to the first encoded data; Writing the second encoded data to the first area of the non-volatile memory;
If the ID of the second namespace is associated with write data, a third length shorter than the first length may be encoded using the coding for suppressing memory cell depletion. Matching the page size by generating a third encoded data of the frame length and adding an error correction code of a fourth length longer than the second length to the third encoded data; A memory system configured to generate fourth encoded data having a data amount of and to write the fourth encoded data to the second area of the non-volatile memory.
前記不揮発性メモリのメモリセルは、複数のビットに応じて、互いに閾値電圧が異なる複数のレベルのいずれかにプログラムされるように構成されており、
前記エンコードは、前記複数のレベルのうちの第1のレベルに対応し、メモリセルを消耗させる特定の符号が、前記第1のレベルよりも閾値電圧が低い第2のレベルに対応し、前記特定の符号よりもメモリセルの消耗が小さく且つ前記特定の符号よりも長い別の符号に変換されるように、前記ライトデータをエンコードすることを含む請求項6記載のメモリシステム。
The memory cell of the non-volatile memory is configured to be programmed to any one of a plurality of levels having different threshold voltages according to a plurality of bits.
The encoding corresponds to a first level among the plurality of levels, and a specific code for draining a memory cell corresponds to a second level having a threshold voltage lower than the first level, and the identification The memory system according to claim 6, further comprising encoding the write data such that consumption of memory cells is smaller than the code of and converted to another code longer than the specific code.
不揮発性メモリの制御方法であって、
異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースを作成することと、前記複数のネームスペースは第1種類のデータを格納するための第1ネームスペースと前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2ネームスペースとを含んでおり、
ライトデータに前記第1ネームスペースのIDが関連付けられている場合、メモリセルの消耗を抑制するためのコーディングを使用して前記ライトデータをエンコードして第1の長さの第1符号化データを生成し、前記第1符号化データに第2の長さのエラー訂正コードを付加することによって前記不揮発性メモリのページサイズにマッチし、第1のデータ量を有する第2符号化データを生成し、前記第2符号化データを前記第1ネームスペースに対応する前記不揮発性メモリの領域に書き込むことと、
ライトデータに前記第2ネームスペースのIDが関連付けられている場合、メモリセルの消耗を抑制するためのコーディングを使用して前記ライトデータをエンコードして前記第1の長さよりも短い第3の長さの第3符号化データを生成し、前記第3符号化データに前記第2の長さよりも長い第4の長さのエラー訂正コードを付加することによって前記ページサイズにマッチし、前記第1のデータ量を有する第4符号化データを生成し、前記第4符号化データを前記第2ネームスペースに対応する前記不揮発性メモリの領域に書き込むこととを具備する制御方法。
A control method of non-volatile memory, comprising
Creating a plurality of namespaces for storing a plurality of types of data having different update frequencies; and a plurality of the namespaces being a first namespace for storing a first type of data and the first type of the plurality of namespaces And a second namespace for storing a second type of data having a lower update frequency than the data of
When the ID of the first name space is associated with write data, the write data is encoded using coding for suppressing memory cell consumption to generate first encoded data of a first length. Generating second encoded data having a first data amount matching the page size of the non-volatile memory by generating and adding an error correction code of a second length to the first encoded data; Writing the second encoded data to an area of the non-volatile memory corresponding to the first namespace;
If the ID of the second namespace is associated with write data, a third length shorter than the first length may be encoded using the coding for suppressing memory cell depletion. Matching the page size by generating a third encoded data of the frame length and adding an error correction code of a fourth length longer than the second length to the third encoded data; And generating fourth encoded data having a data amount of and writing the fourth encoded data to the area of the non-volatile memory corresponding to the second namespace.
前記エンコードすることは、前記ライトデータに含まれる、メモリセルを消耗させる特定の符号を、前記特定の符号よりもメモリセルの消耗が小さく且つ前記特定の符号よりも長い別の符号に変換することを含む請求項8記載の制御方法。   The encoding may convert a specific code that consumes a memory cell included in the write data into another code that consumes less in the memory cell than the specific code and is longer than the specific code. The control method according to claim 8, comprising 前記ライトデータを圧縮することを更に具備し、
前記第1符号化データおよび前記第3符号化データは、前記圧縮されたライトデータをエンコードすることによって生成される請求項8記載の制御方法。
The apparatus further comprises compressing the write data,
The control method according to claim 8, wherein the first encoded data and the third encoded data are generated by encoding the compressed light data.
前記不揮発性メモリのメモリセルは、複数のビットに応じて、互いに閾値電圧が異なる複数のレベルのいずれかにプログラムされるように構成されており、
前記エンコードすることは、前記複数のレベルのうちの第1のレベルに対応し、メモリセルを消耗させる特定の符号が、前記第1のレベルよりも閾値電圧が低い第2のレベルに対応し、前記特定の符号よりもメモリセルの消耗が小さく且つ前記特定の符号よりも長い別の符号に変換されるように、前記ライトデータをエンコードすることを含む請求項8記載の制御方法。
The memory cell of the non-volatile memory is configured to be programmed to any one of a plurality of levels having different threshold voltages according to a plurality of bits.
The encoding corresponds to a first level of the plurality of levels, and a specific code for draining a memory cell corresponds to a second level having a threshold voltage lower than the first level, The control method according to claim 8, further comprising encoding the write data such that memory cell consumption is smaller than the specific code and converted to another code longer than the specific code.
JP2018198510A 2018-10-22 2018-10-22 Memory system and control method for nonvolatile memory Expired - Fee Related JP6649452B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018198510A JP6649452B2 (en) 2018-10-22 2018-10-22 Memory system and control method for nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018198510A JP6649452B2 (en) 2018-10-22 2018-10-22 Memory system and control method for nonvolatile memory

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015145713A Division JP2017027388A (en) 2015-07-23 2015-07-23 Memory system and control method for nonvolatile memory

Publications (2)

Publication Number Publication Date
JP2019049995A true JP2019049995A (en) 2019-03-28
JP6649452B2 JP6649452B2 (en) 2020-02-19

Family

ID=65905655

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018198510A Expired - Fee Related JP6649452B2 (en) 2018-10-22 2018-10-22 Memory system and control method for nonvolatile memory

Country Status (1)

Country Link
JP (1) JP6649452B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11216188B2 (en) 2020-01-16 2022-01-04 Kioxia Corporation Memory system controlling nonvolatile memory
CN117149093A (en) * 2023-10-27 2023-12-01 四川省华存智谷科技有限责任公司 Method for improving reliability of storage system through SSD (solid State disk) capacity shrinkage

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003345650A (en) * 2002-05-23 2003-12-05 Mitsubishi Electric Corp Flash memory system
JP2009259113A (en) * 2008-04-18 2009-11-05 Toshiba Corp Nonvolatile memory management device
JP2010128697A (en) * 2008-11-26 2010-06-10 Toshiba Corp Memory system
JP2010262640A (en) * 2009-04-30 2010-11-18 Internatl Business Mach Corp <Ibm> Method and system for adaptive endurance coding of non-volatile memory
US20120226962A1 (en) * 2011-03-04 2012-09-06 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
JP2013161222A (en) * 2012-02-03 2013-08-19 Dainippon Printing Co Ltd Ic card and program

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003345650A (en) * 2002-05-23 2003-12-05 Mitsubishi Electric Corp Flash memory system
JP2009259113A (en) * 2008-04-18 2009-11-05 Toshiba Corp Nonvolatile memory management device
JP2010128697A (en) * 2008-11-26 2010-06-10 Toshiba Corp Memory system
JP2010262640A (en) * 2009-04-30 2010-11-18 Internatl Business Mach Corp <Ibm> Method and system for adaptive endurance coding of non-volatile memory
US20120226962A1 (en) * 2011-03-04 2012-09-06 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
JP2013161222A (en) * 2012-02-03 2013-08-19 Dainippon Printing Co Ltd Ic card and program

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11216188B2 (en) 2020-01-16 2022-01-04 Kioxia Corporation Memory system controlling nonvolatile memory
US11704021B2 (en) 2020-01-16 2023-07-18 Kioxia Corporation Memory system controlling nonvolatile memory
CN117149093A (en) * 2023-10-27 2023-12-01 四川省华存智谷科技有限责任公司 Method for improving reliability of storage system through SSD (solid State disk) capacity shrinkage
CN117149093B (en) * 2023-10-27 2024-03-26 四川省华存智谷科技有限责任公司 Method for improving reliability of storage system through SSD (solid State disk) capacity shrinkage

Also Published As

Publication number Publication date
JP6649452B2 (en) 2020-02-19

Similar Documents

Publication Publication Date Title
US11847318B2 (en) Memory system for controlling nonvolatile memory
US10241859B2 (en) Memory system and method of controlling nonvolatile memory
US11474702B2 (en) Storage device that writes data from a host during garbage collection
TWI765289B (en) storage system
JP7074453B2 (en) Memory system and control method
JP6553566B2 (en) Memory system and control method
JP6414852B2 (en) Memory system and control method
JP6716757B2 (en) Memory system and control method
WO2018189858A1 (en) Storage system
JP6785204B2 (en) Memory system and control method
JP6649452B2 (en) Memory system and control method for nonvolatile memory
JP6545876B2 (en) Memory system
JP6666405B2 (en) Memory system and control method
JP2019160347A (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: 20181022

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200116

R150 Certificate of patent or registration of utility model

Ref document number: 6649452

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees