JP6545876B2 - Memory system - Google Patents
Memory system Download PDFInfo
- Publication number
- JP6545876B2 JP6545876B2 JP2018158365A JP2018158365A JP6545876B2 JP 6545876 B2 JP6545876 B2 JP 6545876B2 JP 2018158365 A JP2018158365 A JP 2018158365A JP 2018158365 A JP2018158365 A JP 2018158365A JP 6545876 B2 JP6545876 B2 JP 6545876B2
- Authority
- JP
- Japan
- Prior art keywords
- namespace
- data
- area
- ssd
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Memory System (AREA)
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.
しかし、データ種類毎に専用の種類の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 that is useful for storing various types of data.
実施形態によれば、メモリシステムは、複数の物理ブロックを含む不揮発性メモリと、コントローラとを具備する。前記コントローラは、ホストデバイスから受信される第1のネームスペース作成要求および第2のネームスペース作成要求に基づいて、第1ネームスペースおよび第2ネームスペースを作成する。前記コントローラは、前記ホストデバイスによって前記第1ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第1ネームスペースのガベージコレクション動作によって前記第1ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第1ネームスペースのライトアンプリフィケーションを算出する。前記コントローラは、前記ホストデバイスによって前記第2ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第2ネームスペースのガベージコレクション動作によって前記第2ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第2ネームスペースのライトアンプリフィケーションを算出する。前記コントローラは、前記第1ネームスペースおよび前記第2ネームスペースにそれぞれ対応するライトアンプリフィケーションを前記ホストデバイスに提供する。 According to an embodiment, a memory system comprises a non-volatile memory comprising a plurality of physical blocks and a controller. The controller creates the first namespace and the second namespace based on the first namespace creation request and the second namespace creation request received from the host device. The controller corresponds to the first namespace according to an amount of data written by the host device to the area of the non-volatile memory corresponding to the first namespace and a garbage collection operation of the first namespace. The write amplification of the first namespace is calculated by counting the amount of data written to the non-volatile memory area. The controller corresponds to the second namespace according to an amount of data written by the host device to the area of the nonvolatile memory corresponding to the second namespace and a garbage collection operation of the second namespace. The write amplification of the second namespace is calculated by counting the amount of data written to the non-volatile memory area. The controller provides the host device with write amplification corresponding to the first namespace and the second namespace, respectively.
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
Hereinafter, embodiments will be described with reference to the drawings.
First, the configuration of an
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、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
SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
The
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(登録商標),Fibre channel等が使用し得る。
As an interface for interconnecting the
SSD3は、コントローラ4、不揮発性メモリ(NANDメモリ)5、およびDRAM6を備える。NANDメモリ5は、限定されないが、複数のNANDフラッシュメモリチップを含んでいてもよい。
The
NANDメモリ5は、多数のNANDブロック(物理ブロック)B0〜Bm−1を含む。物理ブロックB0〜Bm−1は、消去単位として機能する。物理ブロックは「ブロック」または「消去ブロック」と称されることもある。
物理ブロック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
コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNANDメモリ5に電気的に結合されている。コントローラ4は、NANDメモリ5のデータ管理とNANDメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
The
データ管理には、(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
ページへのデータ書き込みは、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
ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、物理ブロックそれぞれのプログラム/イレーズ回数を平準化するための動作である。 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
ホスト2は、ライトコマンドをSSD3に送出する。このライトコマンドは、ライトデータ(つまり書き込むべきデータ)の論理アドレス(開始論理アドレス)と、転送長とを含む。この実施形態においては、LBAが論理アドレスとして使用されるが、他の実施形態においてはオブジェクトIDが論理アドレスとして使用されても良い。LBAは、論理セクタ(サイズ: 例えば512バイト)に付与されるシリアル番号によって表現される。シリアル番号はゼロから始まる。SSD3のコントローラ4は、ライトコマンド内の開始論理アドレス(Starting LBA)と転送長とによって指定されるライトデータを、NANDメモリ5内の物理ブロックの物理ページにライトする。さらに、コントローラ4は、ルックアップテーブル(LUT)33を更新することによって、ライトされたデータに対応するLBAを、このデータがライトされた物理記憶位置に対応する物理アドレスにマッピングする。
The
次に、コントローラ4の構成について説明する。
Next, the configuration of the
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15は、バス10を介して相互接続される。
The
ホストインタフェース11は、ホスト2から様々なコマンド(ライトコマンド、リードコマンド、拡張ネームスペース管理コマンド、拡張ガベージコレクション制御コマンド、アンマップ(UNMAP)コマンド、等)を受信する。
The
ライトコマンドは、SSD3に対し、このライトコマンドによって指定されたデータをライトするように要求する。ライトコマンドは、先頭の論理ブロックのLBAと、転送長(論理ブロックの数)とを含む。リードコマンドは、SSD3に対し、このリードコマンドによって指定されたデータをリードするように要求する。リードコマンドは、先頭の論理ブロックのLBAと、転送長(論理ブロックの数)とを含む。
The write command requests the
拡張ネームスペース管理コマンドは、通常のネームスペース管理コマンドの拡張コマンドである。 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
拡張ガベージコレクション制御コマンドは、ホスト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
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、SRAM15を制御するように構成されたプロセッサである。CPU12は、上述のFTLレイヤの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行する。
The
これらFTLレイヤ処理およびコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。このファームウェアは、CPU12を、ネームスペース制御部21、ライトアンプリフィケーション算出部22、ガベージコレクション動作制御部23、および消耗/リテンション制御部24として機能させる。
These FTL layer processing and command processing may be controlled by firmware executed by the
ネームスペース制御部21は、複数のネームスペースを管理するためのマルチネームスペース管理機能を有する。ネームスペースは、不揮発性メモリであるNANDメモリ5内の一種の領域に相当する。ネームスペース制御部21は、ホスト2からのネームスペースそれぞれの作成要求に基づいて、複数のネームスペースを作成する。換言すれば、ネームスペース制御部21は、ホスト2からのネームスペースそれぞれの作成要求に基づいて、NANDメモリ5を複数の領域(ネームスペース)に論理的に分割する。ホスト2は、上述の拡張ネームスペース管理コマンドを使用してネームスペースそれぞれの作成をSSD3に要求することができる。ネームスペース制御部21は、これら個々の領域(ネームスペース)に対して、ホスト2によって指定された個数の物理ブロックを割り当てる。これら複数の領域(ネームスペース)は、異なる更新頻度を有する複数種のデータをそれぞれ格納するために使用される。
The
例えば、頻繁に更新されるタイプのデータ(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
これら複数の領域は、複数のネームスペースにそれぞれ関連付けられている。これにより、ホストソフトウェアは、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
もし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
例えば、ホスト2が新たなネームスペースを作成したい時、ホスト2は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをSSD3に送出する。ネームスペース制御部21は、ネームスペース(NS#1)を作成し、このネームスペース(このネームスペースに関連付けられた領域)に、パラメータによって指定される個数の物理ブロックを割り当てる。
For example, when the
ホスト2は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータの値を変更しながら、SSD3に拡張ネームスペース管理コマンドを繰り返し送出する。この結果、複数のネームスペース(領域)が作成され、NANDメモリ5はこれら複数の領域に論理的に分割される。
The
したがって、個々の領域のサイズ(LBAの数)と個々の領域に設定すべき耐久性とに基づいて、複数の領域(複数のtier)にNANDメモリ5の物理リソース(物理ブロックの個数)を最適に配分することができる。
Therefore, the physical resources (the number of physical blocks) of the
ライトアンプリフィケーション算出部22は、SSD3全体のライトアンプリフィケーションではなく、個々のネームスペース(個々の領域)のライトアンプリフィケーションを算出する。これにより、ライトアンプリフィケーション算出部22は、各ネームスペース(各領域)に対応するライトアンプリフィケーションをホスト2に提供することができる。
The write
ガベージコレクション動作制御部23は、ネームスペース単位(領域単位)で、ガベージコレクション動作を実行し、これによってHotデータとColdデータとが同じ物理ブロックに混在してしまうことを防止する。より詳しくは、ガベージコレクション動作制御部23が拡張ガベージコレクション制御コマンドをホスト2から受信した時、ガベージコレクション動作制御部23は、拡張ガベージコレクション制御コマンドによって指定される対象ネームスペースに割り当てられている物理ブロック群から、ガベージコレクションの対象物理ブロック群を選択する。そして、ガベージコレクション動作制御部23は、有効データを対象物理ブロック群からコピー先フリーブロックにコピーするガベージコレクション動作を実行する。
The garbage collection
さらに、ガベージコレクション動作制御部23は、ネームスペース毎に実行されるガベージコレクション動作によって作り出されたフリーブロック群を、これらネームスペースによって共有される共有フリーブロック群として管理する。つまり、これらフリーブロック群は、ネームスペース間で共有される。ガベージコレクション動作制御部23は、最小のプログラム/イレーズ回数のフリーブロックをフリーブロック群から選択する。そして、ガベージコレクション動作制御部23は、選択されたフリーブロックを、上述の対象ネームスペースに対応する領域のコピー先フリーブロックとして割り当てる。
Furthermore, the garbage collection
通常、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 /
NANDインタフェース13は、CPU12の制御の下、NANDメモリ5を制御するように構成されたNANDコントローラである。
The
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。
The
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
次に、ホスト2の構成について説明する。
Next, the configuration of the
ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ41、オペレーティングシステム42、ファイルシステム43が含まれる。
The
一般に知られているように、オペレーティングシステム42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
As is generally known, the
ファイルシステム43は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。例えば、ZFS、Btrfs、XFS、ext4、NTFSなどがファイルシステム42として使用されても良い。あるいは、ファイルオブジェクトシステム(例えば、Ceph Object Storage Daemon)、Key Value Store System (例えば、Rocks DB) がファイルシステム42として使用されても良い。
The
様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ41上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
Various application software threads run on
アプリケーションソフトウェアレイヤ13がリードコマンドまたはライトコマンドのようなリクエストをSSD3に送出することが必要な時、アプリケーションソフトウェアレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをファイルシステム43に送出する。ファイルシステム43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。ファイルシステム43は、コマンドを、SSD3に送出する。SSD3からのレスポンスが受信された際、ファイルシステム43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションソフトウェアレイヤ41に送出する。
When the
本実施形態では、ホスト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
あるHotデータをSSD3にライトすることが必要な時、階層管理部44は、Hotデータ用のネームスペースIDを含むライトコマンドをSSD3に送出する。あるColdデータをSSD3にライトすることが必要な時、階層管理部44は、Coldデータ用のネームスペースIDを含むライトコマンドをSSD3に送出する。
When it is necessary to write certain Hot data to the
あるHotデータをリードすることが必要な時、階層管理部44は、Hotデータ用のネームスペースIDを含むリードコマンドをSSD3に送出する。あるColdデータをリードすることが必要な時、階層管理部44は、Coldデータ用のネームスペースIDを含むリードコマンドをSSD3に送出する。
When it is necessary to read certain Hot data, the
図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 a 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
データは、その更新の頻度に応じて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
領域52は、Warmデータを格納するための階層ストレージ(tier#2)として使用される。領域52には、ネームスペース(NS#2)が関連付けられている。SSD#1の総容量に対する領域52の容量の割合の例は、2パーセントであってもよい。領域52に要求されるDWPDの例は、3であってもよい。
The
領域53は、Middleデータを格納するための階層ストレージ(tier#3)として使用される。領域53には、ネームスペース(NS#3)が関連付けられている。SSD#1の総容量に対する領域53の容量の割合の例は、3パーセントであってもよい。領域53に要求されるDWPDの例は、1であってもよい。
The
領域54は、Coolデータを格納するための階層ストレージ(tier#4)として使用される。領域54には、ネームスペース(NS#4)が関連付けられている。SSD#1の総容量に対する領域54の容量の割合の例は、14パーセントであってもよい。領域54に要求されるDWPDの例は、0.3でであってもよい。
The
領域55は、Coldデータを格納するための階層ストレージ(tier#n)として使用される。領域55には、ネームスペース(NS#n)が関連付けられている。領域55は、大容量・低更新頻度のColdデータ(非アクティブデータ)を格納するために利用される。SSD#1の総容量に対する領域55の容量の割合の例は、80パーセントであってもよい。例えば、領域55の更新の頻度は、領域51の更新の頻度の1/100程度である。したがって、領域55に要求されるDWPDの例は、0.1であってもよい。
The
このように、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
図3のような比率で物理リソースが複数の領域51〜55に配分された場合、SSD3(SSD#1)全体に要求されるDWPDは、次のように求めることができる。
When physical resources are distributed to a plurality of
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
本実施形態では、上述したように、ホスト2は、確保すべき物理ブロックの個数をネームスペース毎に指定することするができ、SSD3は、指定された個数の物理ブロックを個々の領域(tier)に個別に割り当てることができる。
In the present embodiment, as described above, the
もし複数の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
例えば、ホストソフトウェアは、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
ここで、オーバープロビジョン領域について説明する。 Here, the over-provisioning area will be described.
オーバープロビジョニングは、ホスト2には利用可能なユーザスペース(ユーザアクセス可能LBAスペース)として見えないSSD3内のストレージ容量を割り当てることを意味する。ホスト2にユーザアクセス可能LBAスペースとして見えないストレージ容量が割り当てられたスペースが、オーバープロビジョン領域である。オーバープロビジョニングにより、ユーザアクセス可能LBAスペース(ユーザ領域の容量)を超える容量の物理ブロック群が割り当てられる。
Over-provisioning means allocating a storage capacity in the
通常の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
例えば、領域51の総容量(総NS#1容量)は、領域51に割り当てられた物理ブロックの総数によって決定される。領域51は、ユーザ領域51aとオーバープロビジョン領域51bとを含む。領域51の総容量からユーザ領域51aの容量を引いた残りの容量が、オーバープロビジョン領域51bとして機能する。ユーザ領域51aは、LBAに割り当てられた物理ブロック群である。オーバープロビジョン領域51bの存在によって、領域51内のユーザ領域51aの耐久性・性能が改善される。
For example, the total capacity of 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
同様にして、ホストソフトウェアは、残りの全ての領域の各々について、割り当てるべき物理ブロックの量を指定する。 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
このように、SSD3は、確保すべき物理ブロックの個数をネームスペース毎に指定するホスト2からの要求に基づいて、個々の領域に対して、指定された個数の物理ブロックを割り当てる。この結果、ユーザ領域の容量に対するオーバープロビジョン領域の容量の比率を、個々の領域毎に、最適化することが可能となる。例えば、上の階層になるほど、割り当てられるオーバープロビジョン領域の量が多くなるように、個々の領域に割り当てられる物理ブロックの個数が調整されても良い。この場合、例えば、領域55内のユーザ領域の容量に対する領域55内のオーバープロビジョン領域の容量の比率は、領域51内のユーザ領域の容量に対する領域51内のオーバープロビジョン領域の容量の比率よりも小さくなる。
As described above, the
領域51においては、大きなサイズのオーバープロビジョン領域の活用によって、領域51のライトアンプリフィケーションを効率よく減少することができる。なぜなら、たとえ領域51のユーザ領域51aの物理ブロック群が100Mバイトのデータで満たされ、この結果、これら各物理ブロックがそのブロックの消去無しで利用可能ページを含まない状態になっても、これら物理ブロックの代わりにオーバープロビジョン領域51bの物理ブロック群をデータのライトに使用することができるからである。よって、領域51のガベージコレクション動作が実行されるタイミングを十分に遅らせることができる。オーバープロビジョン領域51bの物理ブロック群にデータがライトされるにつれ、ユーザ領域51aの物理ブロック群内のデータはその更新によって無効化される。全てのデータが無効化された物理ブロックはそのガベージコレクションなしで再利用することができる。したがって、領域51のライトアンプリフィケーションを効率よく減少することができるので、領域51の物理ブロック群のライト/イレーズ回数を低く抑えることができる。このことは、領域51の耐久性を向上させることできることを意味している。
In the
領域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
図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にライトされる。
図5は、SSD3によるネームスペース管理を示す。
FIG. 5 shows namespace management by the
ここでは、複数のネームスペース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
本実施形態では、ルックアップテーブル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
ルックアップテーブル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
コントローラ14は、ルックアップテーブルLUT#1〜LUT#nを使用することによって、ネームスペース(領域)毎に独立してガベージコレクション動作を行う事ができる。
The
管理データ100は、ネームスペースNS#1〜NS#nとこれらネームスペースNS#1〜NS#nに割り当てられた物理ブロックの個数との間の関係を示す情報を保持しても良い。
The
本実施形態においては、ガベージコレクションによって生成されたフリーブロックは、ネームスペース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
LBA範囲のパラメータは、ネームスペースのLBA範囲(LBA0〜n−1)を示す。このLBA範囲は、このネームスペースのユーザ領域にマッピングされる。
The LBA range parameter indicates the LBA range (
物理リソースサイズのパラメータは、ネームスペース用に確保されるべき物理ブロックの個数を示す。 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
ホスト2は、ネームスペース(Hotデータ用の領域)の作成を要求する拡張ネームスペース管理コマンドをSSD3に送出する。この拡張ネームスペース管理コマンドは、Hotデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。SSD3内の一つの物理ブロックの容量はSSD3からホスト2に報告されているので、ホスト2は、Hotデータ用の領域に適した個数の物理ブロックを要求することができる。この拡張ネームスペース管理コマンドの受信に応答して、SSD3のコントローラ4は、ネームスペース(NS#1)を作成し、このネームスペース(NS#1)に、指定された個数の物理ブロックを割り当てる(ステップS11)。コントローラ4は、コマンド完了を示すレスポンスをホスト2に送出する。このレスポンスは、作成されたネームスペースのIDを含んでいてもよい。
The
ホスト2は、次のネームスペース(Warmデータ用の領域)の作成を要求する拡張ネームスペース管理コマンドをSSD3に送出する。この拡張ネームスペース管理コマンドは、Warmデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。この拡張ネームスペース管理コマンドの受信に応答して、SSD3のコントローラ4は、ネームスペース(NS#2)を作成し、このネームスペース(NS#2)に、指定された個数の物理ブロックを割り当てる(ステップS12)。コントローラ4は、コマンド完了を示すレスポンスをホスト2に送出する。このレスポンスは、作成されたネームスペースのIDを含んでいてもよい。
The
同様にして、ネームスペース(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
このようにして、指定された個数の物理ブロックをネームスペースに割り当てながらネームスペースを作成する処理が繰り返されることによって、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
図8のフローチャートは、SSD3によって実行される物理リソース割り当て処理の手順を示す。
The flowchart of FIG. 8 shows the procedure of physical resource allocation processing executed by the
SSD3のコントローラ4は、拡張ネームスペース管理コマンドをホスト2から受信する(ステップS21)。コントローラ4は、拡張ネームスペース管理コマンド内の作成/削除パラメータに基づいて、拡張ネームスペース管理コマンドがネームスペースの作成を要求しているか否かを判定する(ステップS22)。
The
拡張ネームスペース管理コマンドがネームスペースの作成を要求しているならば(ステップS22のYES)、コントローラ4は、拡張ネームスペース管理コマンド内の物理リソースパラメータによって指定された個数の物理ブロックを確保可能か否かを、フリーブロック群内の残り物理ブロックの個数に基づいて判定する(ステップS23)。
If the extended namespace management command requests creation of a namespace (YES in step S22), can the
物理ブロックの個数が、指定された個数以上であるならば(ステップS23のYES)、コントローラ4は、ネームスペースを作成し、指定された個数の物理ブロックを、このネームスペースに関連付けられた領域に割り当てる(ステップS24)。コントローラ4は、コマンド完了をホスト2に通知する(ステップS25)。
If the number of physical blocks is equal to or greater than the designated number (YES in step S23), the
残り物理ブロックの個数が、指定された個数よりも少ないならば(ステップ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
図9のフローチャートは、ホスト2よって実行されるライトコマンド送出処理の手順を示す。
The flowchart of FIG. 9 shows the procedure of write command transmission processing executed by the
ホスト2は、データをライトする要求が発生した時(ステップS31のYES)、このライトデータ(書き込むべきデータ)を、Hotデータ、Warmデータ、Middleデータ、Coolデータ、またはColdデータとして分類する(ステップS32)。ホスト2は、例えば、メタデータ、ファイルの中身(コンテンツ)といったデータ種別に応じて、ライトデータ(書き込むべきデータ)を、Hotデータ、Warmデータ、Middleデータ、Coolデータ、またはColdデータとして分類してもよい。
The
ライトデータがHotデータであるならば(ステップS33のYES)、ホスト2は、Hotデータ用のネームスペースのID(NSID#1)を含むライトコマンドをSSD3に送出する(ステップS36)。
If the write data is Hot data (YES in Step S33), the
ライトデータがWarmデータであるならば(ステップS34のYES)、ホスト2は、Warmデータ用のネームスペースのID(NSID#2)を含むライトコマンドをSSD3に送出する(ステップS37)。
If the write data is Warm data (YES in step S34), the
ライトデータがColdデータであるならば(ステップS35のYES)、ホスト2は、Coldデータ用のネームスペースのID(NSID#n)を含むライトコマンドをSSD3に送出する(ステップS38)。
If the write data is Cold data (YES in step S35), the
図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
ホスト2は、ライトコマンドをSSD3に送出し、ライトデータをSSD3に送出する。SSD3のコントローラ4は、ライトデータをライトバッファ(WB)31にライトし(ステップS41)、そしてコマンド完了command completionのレスポンスをホスト2に通知する。この後、コントローラ4は、ライトデータを、ライトコマンド内のネームスペースIDによって指定されるネームスペースに関連付けられた領域内の利用可能ブロックにライトする(ステップS42)。
The
図12は、SSD3によって実行されるガベージコレクション動作およびコピー先フリーブロック割り当て動作を示す。
FIG. 12 shows the garbage collection operation and the copy destination free block allocation operation performed by the
上述したように、ガベージコレクション動作はネームスペース毎に実行される。ネームスペース(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
コントローラ4は、ネームスペース間で共有されるフリーブロック群を含むフリーブロックプール(フリーブロックリスト)60を管理する。コントローラ4は、フリーブロック群から、最小のプログラム/イレーズ回数のフリーブロックを選択する。コントローラ4は、選択されたフリーブロックを、ネームスペース(NS#1)に、コピー先フリーブロックB1000として割り当てる。コントローラ4は、ガベージコレクションの対象物理ブロック群(ここでは、ブロックB0〜B3)からコピー先フリーブロックB1000に全ての有効データをコピーする。そして、コントローラ4は、ルックアップテーブルLUT#1を更新して、有効データをコピー先フリーブロックB1000にマッピングする。ガベージコレクションの対象物理ブロック群B0〜B3は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプールに移動される。
The
他のネームスペース(NS#2〜NS#n)についても同様にしてガベージコレクション動作が実行される。
The garbage collection operation is similarly performed for the other namespaces (
例えば、ネームスペース(NS#n)のガベージコレクション動作においては、コントローラ4は、ネームスペース(NS#n)に関連付けられた領域55内の物理ブロック(アクティブブロック)から、ガベージコレクションの対象物理ブロックを選択する。例えば、コントローラ4は、ルックアップテーブルLUT#nを参照することによって無効データの比率が最も大きい上位幾つかの物理ブロックを特定し、この物理ブロックをガベージコレクションの対象物理ブロックとして選択してもよい。
For example, in the garbage collection operation of the namespace (NS # n), the
コントローラ4は、フリーブロック群から、最小のプログラム/イレーズ回数のフリーブロックを選択する。コントローラ4は、選択されたフリーブロックを、ネームスペース(NS#n)に、コピー先フリーブロックB1001として割り当てる。コントローラ4は、ガベージコレクションの対象物理ブロック群(ここでは、ブロックB2000〜B2003)からコピー先フリーブロックB1001に全ての有効データをコピーする。そして、コントローラ4は、ルックアップテーブルLUT#nを更新して、有効データをコピー先フリーブロックB1001にマッピングする。ガベージコレクションの対象物理ブロック群B2000〜B2003は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプールに移動される。
The
上述したように、ネームスペース(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
図13は、SSD3によって実行されるライトデータ量カウント処理を示す。
FIG. 13 shows the write data amount counting process executed by the
SSD3のコントローラ4は、SSD3全体のライトアンプリフィケーションではなく、ネームスペース毎のライトアンプリフィケーションを算出することができる。このために、コントローラ4は、ホスト2によってライトされたデータの量をカウントするためのカウンタとガベージコレクション動作によってライトされたデータの量をカウントするためのカウンタとの2種類のカウンタを、ネームスペース毎に備える。
The
カウンタ61およびカウンタ62は、ネームスペース(NS#1)のライトアンプリフィケーションを算出するために使用される。カウンタ61は、ホスト2によってネームスペース(NS#1)、つまり領域51、にライトされたデータの量をカウントする。カウンタ62は、ネームスペース(NS#1)のガベージコレクションによってネームスペース(NS#1)、つまり領域51、にライトされたデータの量をカウントする。
The
カウンタ63およびカウンタ64は、ネームスペース(NS#2)のライトアンプリフィケーションを算出するために使用される。カウンタ63は、ホスト2によってネームスペース(NS#2)、つまり領域52、にライトされたデータの量をカウントする。カウンタ64は、ネームスペース(NS#2)のガベージコレクションによってネームスペース(NS#2)、つまり領域52、にライトされたデータの量をカウントする。
The
カウンタ65およびカウンタ66は、ネームスペース(NS#n)のライトアンプリフィケーションを算出するために使用される。カウンタ65は、ホスト2によってネームスペース(NS#n)、つまり領域55、にライトされたデータの量をカウントする。カウンタ66は、ネームスペース(NS#n)のガベージコレクションによってネームスペース(NS#n)、つまり領域55、にライトされたデータの量をカウントする。
The
図14のフローチャートは、SSD3によって実行されるライトデータ量カウント処理の手順を示す。
The flowchart of FIG. 14 shows the procedure of the write data amount counting process executed by the
SSD3のコントローラ4がホスト2からライトコマンドを受信した時、コントローラ4は、ライトコマンド内に含まれるネームスペースIDに基づいて、ライトデータがライトされるべき対象ネームスペース(領域)を決定する(ステップS41〜S43)。そして、コントローラ4は、ライトデータを対象ネームスペース(領域)にライトすると共に、ライトされるデータの量をカウントする(ステップS44〜S46)。
When the
例えば、対象ネームスペース(領域)がネームスペース(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
対象ネームスペース(領域)がネームスペース(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
対象ネームスペース(領域)がネームスペース(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
ネームスペース(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
ネームスペース(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
ネームスペース(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
図15のフローチャートは、SSD3によって実行されるライトアンプリフィケーション(WA)算出処理の手順を示す。
The flowchart of FIG. 15 shows the procedure of the write amplification (WA) calculation process executed by the
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
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
The
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
The
NS#n−WA=「カウンタ65のカウント値+カウンタ66のカウント値」/「カウンタ65のカウント値」
ネームスペースそれぞれのライトアンプリフィケーションを要求するWAゲットコマンドがホスト2から受信された時(ステップS70のYES)、コントローラ4は、ホスト2に図16に示すリターンデータを送出して、ネームスペースそれぞれのライトアンプリフィケーションをホスト2に通知する(ステップS71)。
NS # n−WA = “count value of
When a WA get command for requesting write amplification of each namespace is received from the host 2 (YES in step S70), the
ステップS61〜S69の処理は、WAゲットコマンドの受信に応答して実行されても良い。 The processes of steps S61 to S69 may be executed in response to the reception of the WA get command.
図17のフローチャートは、SSD3よって実行されるカウンタリセット処理の手順を示す。
The flowchart of FIG. 17 shows the procedure of the counter reset process performed by the
このカウンタリセット処理は、SSD3の設定の変更のような特定のリセットイベントが発生した後のSSD3の各ネームスペースのライトアンプリフィケーションを、ホスト2に提供するために利用される。SSD3の設定の変更の例は、あるネームスペースの設定の変更であってもよいし、あるネームスペースの削除であってもよい。あるいは、SSD3の設定の変更の例は、SSD3全体の設定の変更であってもよい。
This counter reset process is used to provide the
SSD3は、ホスト2からの要求に応じて、カウンタリセット処理を実行する。
The
この要求は、カウンタをリセットすることを要求するコマンドであってもよい。このコマンドの受信に応答して、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
あるいは、あるネームスペースの設定またはSSD3全体の設定を変更するためのコントロールコマンドを、この要求として取り扱っても良い。あるネームスペースの設定の変更は、このネームスペースのサイズ(LBA範囲)の変更であってもよいし、このネームスペース用の物理ブロックの個数の変更であってもよい。
Alternatively, a control command for changing the setting of a certain namespace or the setting of the
以下では、限定されないが、あるネームスペースの設定の変更に応答してカウンタリセット処理が実行される場合を例示してカウンタリセット処理の手順を説明する。 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
対象ネームスペースがネームスペース(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
対象ネームスペースがネームスペース(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
対象ネームスペースがネームスペース(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
図18は、拡張ガベージコレクション(GC)制御コマンドを示す。 FIG. 18 shows extended garbage collection (GC) control commands.
上述したように、拡張ガベージコレクション(GC)制御コマンドは、ホスト2によってSSD3の任意のネームスペースのガベージコレクション動作を制御するためのホスト・イニシエーティッド・ガベージコレクションコマンドとして使用される。
As described above, the extended garbage collection (GC) control command is used by the
この拡張ガベージコレクション(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に要求することができる。
例えば、ホスト2は、WAゲットコマンドをSSD3に定期的に送信することによって個々のネームスペース(領域)のライトアンプリフィケーションを監視してもよい。あるネームスペース(領域)のライトアンプリフィケーションがこのネームスペースに対応するライトアンプリフィケーション閾値に達した時、ホスト2は、このネームスペースのネームスペースIDを含む拡張ガベージコレクション(GC)制御コマンドをSSD3に送出してもよい。
For example, the
あるいは、ホスト2があるネームスペース(領域)へのデータのライトを良好なレイテンシで行うことを望む場合に、ホスト2は、このネームスペースのネームスペースIDを含む拡張ガベージコレクション(GC)制御コマンドをSSD3に送出してもよい。
Alternatively, when the
ホスト2からの拡張ガベージコレクション(GC)制御コマンドの受信に応答して、SSD3のコントローラ4は、対象ネームスペースのための専用の、指定された量のフリースペースを確保するためのガベージコレクション動作を実行する。コントローラ4は、指定された量のフリースペースが確保された時点または最大時間が経過する時点のいずれか早いほうの時点で、ガベージコレクション動作を終了する。
In response to receiving an extended garbage collection (GC) control command from
図19のフローチャートは、SSD3によって実行されるガベージコレクション動作の手順を示す。
The flowchart of FIG. 19 shows the procedure of the garbage collection operation performed by the
SSD3のコントローラ4が拡張ガベージコレクション(GC)制御コマンドをホスト2から受信した時(ステップS91のYES)、コントローラ4は、拡張ガベージコレクション(GC)制御コマンド内のネームスペースIDによって指定される対象ネームスペースのガベージコレクション動作を実行する(ステップS92)。ステップS92では、コントローラ4は、対象ネームスペースのアクティブブロック群からガベージコレクション対象の幾つかの物理ブロックを選択し、これら物理ブロックの有効データをコピー先物理ブロックにコピーする。
When the
ガベージコレクション動作は、指定された量のフリースペースが確保された時点または最大時間が経過する時点のいずれか早いほうの時点で、終了される(ステップ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).
図20は、データがライトされるべきネームスペース(領域)に応じて、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御する処理を示す。 FIG. 20 shows a process of controlling the ratio of a code for suppressing memory cell consumption to 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
例えば、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
コントローラ4は、エンコードによって得られる第1符号化データ(図20における“endurance code”)にエラー訂正コード(ECC)を付加し、これによって第2符号化データ(図20における“endurance code”と“ECC”とを含むデータ)を生成し、この第2符号化データを物理ブロック内の利用可能ページにライトする。各ページはデータ領域と冗長領域とを含む。第2符号化データのビット長は、データ領域と冗長領域とを含むページのサイズにマッチする。
The
さらに、コントローラ4は、第1符号化データとエラー訂正コード(ECC)の比率を、ライトデータがどの領域(ネームスペース)にライトされるかに応じて、自動的に変更する。
Furthermore, the
第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
一方、ライトデータが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
本実施形態では、図20に示されているように、書き換え頻度(更新の頻度)が高いネームスペース(領域)ほど、ECCのビット長が短くなり、代わりに第1符号化データ(エンデュランスコード)のビット長が長くなる。また、書き換え頻度(更新の頻度)が低いネームスペース(領域)ほど、ECCのビット長が長くなり、代わりに第1符号化データ(エンデュランスコード)のビット長が短くなる。 In the present embodiment, as shown in FIG. 20, 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.
図21は、SSD3によって実行されるエンコード処理およびデコード処理を示す。
FIG. 21 shows the encoding process and the decoding process performed by the
SSD3のコントローラ4は、エンデュランスコードエンコーダ91、ECCエンコーダ92、エンデュランスコードデコーダ93、およびECCデコーダ94を含む。
The
ECCエンコーダ92およびECCデコーダ94は、ECCを生成するECCエンコード処理およびエラー訂正のためのECCデコード処理をそれぞれ実行する。ECCエンコーダ92においては、ECCを生成するために組織符号が使用される。組織符号としては、例えば、ハミング符号、BHC符号、リードソロモン符号、等がある。
The
エンデュランスコードエンコーダ91およびエンデュランスコードデコーダ93は、メモリセルの消耗を抑制するためのエンコード処理およびこのエンコード処理に対応するデコード処理を実行する。エンデュランスコードエンコーダ91においては、第1符号化データ(エンデュランスコード)を生成するために、非組織符号であるエンデュランスコードが使用される。エンデュランスコードエンコーダ91においては、上述したように、メモリセルを激しく消耗させる特定の符号(例えば“C”レベルに対応するビットパターン)が、別の長い符号(例えば、“B−B”に対応した長いビットパターン、等)に変換される。つまり、このエンコード処理は、符号語を伸張する伸張処理である。
The
図22は、エンデュランスコードエンコーダ91の構成例を示す。
FIG. 22 shows a configuration example of the
エンデュランスコードエンコーダ91は、エントロピー解析部911、圧縮部912、探索部914、置き換え部915、符号長チェック部916、及び出力部917等を含む。
The
エントロピー解析部911は、ライトデータ内に出現するビットパターンそれぞれの出現回数(または出現確率)を求める。圧縮部912は、エントロピー解析部911の解析結果に基づきコードブック913を生成し、コードブック913を使用して、ライトデータを可逆圧縮する。コードブック913は、ライトデータ内に出現するビットパターンそれぞれとこれらビットパターンに対応する変換コードとの間の対応関係を示す。圧縮部912は、出現回数の多いビットパターンに短い変換コードを割り当てる。
The
探索部914は、メモリセルを激しく消耗させる特定の符号を求めて、圧縮データ(圧縮されたライトデータ)を例えばその最上位ビットから探索する。特定の符号は、例えば“C”レベルに対応するビットパターンであってもよい。置き換え部915は、探索部914によって探索された特定の符号を、別の長い符号(例えば、“B−B”に対応した長いビットパターン、等)に置き換える。これによって、圧縮データ内の特定の符号が、メモリセルの消耗が少ない別の長い符号に変換される。置き換え部915は、コードブック913を更新し、これによって、上述の特定の符号に対応するコードブック913内の特定の変換コードを、上述の別の長い符号に置き換える。
The
符号長チェック部916は、現在の圧縮データの符号長(ビット長)をチェックする。現在の圧縮データの符号長(ビット長)が予め決められた閾値(ターゲットビット長)よりも短い場合、探索および置き換えの処理が繰り返される。これにより、現在の圧縮データの符号長が最適化される。
The code
ターゲットビット長は、ライトデータがライトされるべきネームスペース(領域)に応じて適応的に変更される。したがって、書き換え頻度(更新の頻度)が高いネームスペース(領域)ほど、符号化データ(エンデュランスコード)のビット長が長くなる。換言すれば、書き換え頻度(更新の頻度)が低いネームスペース(領域)ほど、符号化データ(エンデュランスコード)のビット長が短くなる。 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
図23のフローチャートは、メモリセルの消耗を抑制するためのエンコード処理の手順を示す。 The flowchart of FIG. 23 shows the procedure of the encoding process for suppressing consumption of the memory cell.
コントローラ4は、ライトデータ内の幾つかのビットパターンの出現回数を求め、これらビットパターンを出現回数の大きい順にソートする(ステップS1)。コントローラ4は、エントロピー解析の結果に基づき、各ビットパターンを圧縮するための変換コードを含むコードブック913を生成し、そしてコードブック913を使用してライトデータを可逆圧縮する(ステップS2)。
The
コントローラ4は、この圧縮データをメモリセルの消耗を抑制するためのコードを使用してエンコードすることによって、符号化データを生成する。
The
この場合、コントローラ4は、まず、圧縮データから、メモリセルを消耗させるある特定の符号(特定のビットパターン)を探索する(ステップS3)。コントローラ4は、探索されたこの符号(ビットパターン)をメモリセルの消耗の小さな長い別の符号(ビットパターン)に変換する(ステップS4)。コントローラ4は、探索されたこの特定の符号に対応するコードブック内の変換コードを更新する(ステップS5)。
In this case, the
コントローラ4は、現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも長いか否かを判定する(ステップS6)。ターゲットビット長は、データがライトされるべきネームスペース(領域)に応じて予め決定される。例えば、ネームスペースNS#1にライトされるデータ(Hotデータ)に関しては長いターゲットビット長が使用され、ネームスペースNS#nにライトされるデータ(Coldデータ)に関しては短いターゲットビット長が使用される。
The
現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも短いならば、ステップ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
図24のフローチャートは、SSD3によって実行されるライト制御処理の手順を示す。
The flowchart in FIG. 24 shows the procedure of the write control process executed by the
SSD3のコントローラ4は、受信されたライトデータがどの階層属性のネームスペース(領域)にライトされるべきライトデータであるかを判定し、この判定結果にしたがって、ライトデータをエンコードするためのエンコード方法を変更する。エンコード方法の変更は、エンデュランスコードとECCとの比率を制御することによって実行される。
The
すなわち、SSD3のコントローラ4がライトコマンドをホスト2から受信した時(ステップS101のYES)、コントローラ4は、ライトコマンド内のネームスペースIDによって指定される対象ネームスペース(領域)の階層属性(Hot/Warm/Middle/Cool/Cold)を判定する(ステップS102)。対象ネームスペース(領域)の階層属性は、対象ネームスペース(領域)のオーバープロビジョン領域のサイズ(ユーザ領域とオーバープロビジョン領域との比率等)に基づいて決定されてもよい。あるいは、もし対象ネームスペースの作成を要求した拡張ネームスペース管理コマンドがtier属性パラメータを含んでいたならば、コントローラ4は、このtier属性パラメータによって示される階層属性を、対象ネームスペースの階層属性であると判定しても良い。あるいは、ライトコマンドが、対象ネームスペースのIDに加え、対象ネームスペースの階層属性を示すパラメータを含んでいてもよい。
That is, when the
例えば、対象ネームスペースの階層属性が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
例えば、対象ネームスペースの階層属性が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
図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
SSD#1、SSD#2、SSD#3、…SSD#nの各々は、不揮発性メモリを含む。さらに、SSD#1、SSD#2、SSD#3、…SSD#nの各々は、本実施形態のSSD3と同様のネームスペース管理機能を有している。
Each of
このフラッシュアレイにおいては、領域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
領域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
領域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
領域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
領域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
図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
このように、ライトデータは所定データサイズ(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は並行にして動作するので、データライトのための性能を高めることができる。
As described above, since the
フラッシュアレイコントローラ81は、図27に示されるように、フラッシュアレイストレージ80内ではなく、ホスト2内に設けられていてもよい。
The
図28は、フラッシュアレイストレージ80内のSSDそれぞれの容量とこれらSSDからある階層のために配分される容量の割合との関係を示す。
FIG. 28 shows the relationship between the capacity of each of the SSDs in the
ここでは、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
ここでは、SSD#1の容量が100GB、SSD#2の容量が200GB、SSD#3の容量が1TB、SSD#nの容量が100GBである場合を想定する。
Here, it is assumed that the capacity of the
フラッシュアレイコントローラ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
図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
図30は、ホスト2として機能する情報処理装置のハードウェア構成例を示す。
FIG. 30 shows an example of the hardware configuration of the information processing apparatus functioning as the
この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ(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
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ41、OS42およびファイルシステム43を含む。ファイルシステム43は、上述の階層管理部44として機能する。
The
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
The
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
The
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のSSD3が複数のコネクタ107Aにそれぞれ接続される。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。
The
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
The
この情報処理装置においては、ホストソフトウェア(アプリケーションソフトウェアレイヤ41、OS42およびファイルシステム43)の制御の下、プロセッサ101は、以下の処理を実行する。
In the information processing apparatus, the
プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Hotデータ用のネームスペースNS#1(領域51)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Hotデータ用のネームスペースNS#1(領域51)に割り当てるべき物理ブロックの個数を示すパラメータを含む。
The
プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Warmデータ用のネームスペースNS#2(領域52)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Warmデータ用のネームスペースNS#2(領域52)に割り当てるべき物理ブロックの個数を示すパラメータを含む。
The
同様にして、プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Coldデータ用のネームスペースNS#n(領域55)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Cold用のネームスペースNS#n(領域55)に割り当てるべき物理ブロックの個数を示すパラメータを含む。
Similarly, the
プロセッサ101は、ネームスペースNS#1のネームスペースIDをHotデータ用のネームスペースIDとして管理し、ネームスペースNS#2のネームスペースIDをWarmデータ用のネームスペースIDとして管理し、そしてネームスペースNS#nのネームスペースIDをColdデータ用のネームスペースIDとして管理する。
The
ある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
図31は、複数のSSD3とホスト2とを含む情報処理装置の構成例を示す。
FIG. 31 shows a configuration example of an information processing apparatus including a plurality of
この情報処理装置は、ラックに収容可能な薄い箱形の筐体201を備える。多数のSSD3は筐体201内に配置されても良い。この場合、各SSD3は筐体201の前面201Aに設けられたストロットに取り外し可能に挿入されてもよい。
The information processing apparatus includes a thin box-shaped
システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。
The system board (motherboard) 202 is disposed in the
以上説明したように、本実施形態によれば、複数種のデータを格納するための複数のネームスペース(領域)が管理され、さらに、確保すべき物理リソースの量(物理ブロックの個数)をネームスペース毎に指定するホスト2からの要求に基づいて、指定された個数の物理ブロックがこれらネームスペース用の物理リソースとして個別に割り当てられる。したがって、複数種のデータそれぞれの容量や更新頻度を考慮して、物理ブロック群を複数のネームスペース(領域)に容易に最適配分することができる。よって、ネームスペース(領域)毎に、格納すべきデータの更新の頻度に適した耐久性を実現でき、更新の頻度が高いデータ用のネームスペース(領域)のライトアンプリフィケーションを減少させることができるので、SSDの寿命の最大化を実現できる。
As described above, according to this embodiment, a plurality of namespaces (areas) for storing a plurality of types of data are managed, and the amount of physical resources to be secured (the number of physical blocks) Based on the request from the
換言すれば、本実施形態によれば、更新の頻度が高いデータ用のネームスペース(領域)用に多くの量のオーバープロビジョン領域を確保したり、更新の頻度が低いデータ用のネームスペース(領域)用に少ない量のオーバープロビジョン領域を確保するといった制御を柔軟に行う事ができる。これにより、更新の頻度が高いデータ用のネームスペース(領域)のライトアンプリフィケーションを減少させることができるので、SSDの寿命の最大化を実現できる。 In other words, according to the present embodiment, a large amount of over-provisioned area is secured for a data space (area) for which the frequency of updating is high, or a name space for data for which the frequency of updating is low ( Control can be flexibly performed such as securing a small amount of over-provisioning area for the area). As a result, it is possible to reduce the write amplification of the name space (area) for the data that is frequently updated, so that the life of the SSD can be maximized.
なお、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。 In 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 (8)
コントローラとを具備し、
前記コントローラは、
ホストデバイスから受信される第1のネームスペース作成要求および第2のネームスペース作成要求に基づいて、第1ネームスペースおよび第2ネームスペースを作成し、
前記ホストデバイスによって前記第1ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第1ネームスペースのガベージコレクション動作によって前記第1ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第1ネームスペースのライトアンプリフィケーションを算出し、
前記ホストデバイスによって前記第2ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第2ネームスペースのガベージコレクション動作によって前記第2ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第2ネームスペースのライトアンプリフィケーションを算出し、
前記第1ネームスペースおよび前記第2ネームスペースにそれぞれ対応するライトアンプリフィケーションを前記ホストデバイスに提供するように構成されている、メモリシステム。 Non-volatile memory containing multiple physical blocks,
Equipped with a controller,
The controller
Creating a first namespace and a second namespace based on the first namespace creation request and the second namespace creation request received from the host device;
The amount of data written to the area of the non-volatile memory corresponding to the first namespace by the host device, and the non-volatile memory corresponding to the first namespace by the garbage collection operation of the first namespace Calculating the light amplification of the first namespace by counting the amount of data written to the area;
The amount of data written to the area of the non-volatile memory corresponding to the second namespace by the host device, and the non-volatile memory corresponding to the second namespace by the garbage collection operation of the second namespace Calculating the write amplification of the second namespace by counting the amount of data written to the area;
A memory system configured to provide the host device with write amplification corresponding respectively to the first namespace and the second namespace.
前記第1のネームスペース作成要求に基づいて、前記第1ネームスペースを作成すると共に、前記第1のネームスペース作成要求によって指定された第1の個数の物理ブロックを前記第1ネームスペースに割り当て、
前記ホストデバイスから受信される第2のネームスペース作成要求に基づいて、前記第2ネームスペースを作成すると共に、前記第2のネームスペース作成要求によって指定された第2の個数の物理ブロックを前記第2ネームスペースに割り当てるように構成されている請求項1記載のメモリシステム。 The controller
The first namespace is created based on the first namespace creation request, and a first number of physical blocks specified by the first namespace creation request are assigned to the first namespace,
The second namespace is created based on a second namespace creation request received from the host device, and the second number of physical blocks specified by the second namespace creation request is The memory system of claim 1 configured to be assigned to two namespaces.
対象ネームスペースのガベージコレクションの開始を要求する制御コマンドを、前記ホストデバイスから受信し、
前記対象ネームスペース用の物理ブロック群から、ガベージコレクションの対象物理ブロック群を選択し、
有効データを前記対象物理ブロック群からコピー先フリーブロックにコピーするガベージコレクション動作を実行するように構成されている請求項1記載のメモリシステム。 The controller
Receiving from the host device a control command requesting start of garbage collection of a target namespace;
From the physical blocks for the target namespace, select the target physical blocks for garbage collection,
The memory system according to claim 1, wherein the memory system is configured to execute a garbage collection operation of copying valid data from the target physical block group to a copy destination free block.
ネームスペース毎に実行されるガベージコレクション動作によって作り出されたフリーブロック群を前記複数のネームスペースの共有フリーブロック群として管理し、
前記フリーブロック群から最小のプログラム/イレーズ回数のフリーブロックを選択し、
前記選択されたフリーブロックを、前記対象ネームスペースに対応する領域の前記コピー先フリーブロックとして割り当てるように構成されている請求項4記載のメモリシステム。 The controller
Manage free blocks created by garbage collection operations executed for each namespace as shared free blocks of the multiple namespaces,
Select the minimum number of program / erase free blocks from the free block group,
5. The memory system according to claim 4, wherein the selected free block is configured to be allocated as the copy destination free block of the area corresponding to the target namespace.
前記コントローラは、さらに、前記第1符号化データと前記エラー訂正コードとの比率を、ライトデータがライトされるべきネームスペースに応じて、変更するように構成されている請求項1記載のメモリシステム。 The controller encodes write data using a first coding to suppress memory cell consumption to generate first coded data, and adds an error correction code to the first coded data. To generate second encoded data, and write the second encoded data to a physical block,
The memory system according to claim 1, wherein the controller is further configured to change a ratio between the first encoded data and the error correction code in accordance with a name space in which write data is to be written. .
前記ライトデータが前記第1ネームスペースにライトされるべきライトデータである場合、第1の長さの第1符号化データと第2の長さのエラー訂正コードとを含む第2符号化データが得られるように前記第1符号化データと前記エラー訂正コードとの比率を制御し、
前記ライトデータが前記第2ネームスペースにライトされるべきライトデータである場合、前記第1の長さよりも短い第3の長さの第1符号化データと前記第2の長さよりも長い第4の長さのエラー訂正コードとを含む第2符号化データが得られるように前記第1符号化データと前記エラー訂正コードとの比率を制御するように構成されている請求項6記載のメモリシステム。 The controller
When the write data is write data to be written to the first namespace, second encoded data including first encoded data of a first length and an error correction code of a second length is Controlling a ratio between the first encoded data and the error correction code so as to be obtained;
When the write data is write data to be written to the second namespace, the first encoded data of a third length shorter than the first length and the fourth encoded data longer than the second length 7. A memory system according to claim 6, wherein the ratio of said first coded data to said error correction code is controlled to obtain second coded data including a length of an error correction code. .
異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースであって、第1種類のデータを格納するための第1ネームスペースと前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2ネームスペースとを少なくとも含む複数のネームスペースを管理するコントローラとを具備し、
前記コントローラは、
ホストデバイスから受信される第1のネームスペース作成要求に基づいて、前記第1ネームスペースを作成すると共に、前記第1のネームスペース作成要求によって指定された第1の個数の物理ブロックを前記第1ネームスペースに割り当て、
前記ホストデバイスから受信される第2のネームスペース作成要求に基づいて、前記第2ネームスペースを作成すると共に、前記第2のネームスペース作成要求によって指定された第2の個数の物理ブロックを前記第2ネームスペースに割り当て、
前記第1ネームスペースのIDに関連付けられたライトデータを前記第1ネームスペースに対応する前記不揮発性メモリの領域に前記第1種類のデータとしてライトし、
前記第2ネームスペースのIDに関連付けられたライトデータを前記第2ネームスペースに対応する前記不揮発性メモリの領域に前記第2種類のデータとしてライトし、
前記ホストデバイスによって前記第1ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第1ネームスペースのガベージコレクション動作によって前記第1ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第1ネームスペースのライトアンプリフィケーションを算出し、
前記ホストデバイスによって前記第2ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量と、前記第2ネームスペースのガベージコレクション動作によって前記第2ネームスペースに対応する前記不揮発性メモリの領域にライトされたデータの量とをカウントすることによって、前記第2ネームスペースのライトアンプリフィケーションを算出し、
前記第1ネームスペースおよび前記第2ネームスペースにそれぞれ対応するライトアンプリフィケーションを前記ホストデバイスに提供するように構成されている、メモリシステム。 Non-volatile memory containing multiple physical blocks,
A plurality of namespaces for storing a plurality of types of data having different update frequencies, wherein the first namespace for storing a first type of data and an update frequency lower than that of the first type of data And a controller for managing a plurality of namespaces including at least a second namespace for storing the second type of data.
The controller
The first namespace is created based on a first namespace creation request received from a host device, and the first number of physical blocks specified by the first namespace creation request is the first Assign to a namespace,
The second namespace is created based on a second namespace creation request received from the host device, and the second number of physical blocks specified by the second namespace creation request is Assign to 2 namespaces,
Writing write data associated with the ID of the first namespace into the area of the non-volatile memory corresponding to the first namespace as the first type of data;
Writing write data associated with the ID of the second namespace into the area of the non-volatile memory corresponding to the second namespace as the second type of data;
The amount of data written to the area of the non-volatile memory corresponding to the first namespace by the host device, and the non-volatile memory corresponding to the first namespace by the garbage collection operation of the first namespace Calculating the light amplification of the first namespace by counting the amount of data written to the area;
The amount of data written to the area of the non-volatile memory corresponding to the second namespace by the host device, and the non-volatile memory corresponding to the second namespace by the garbage collection operation of the second namespace Calculating the write amplification of the second namespace by counting the amount of data written to the area;
A memory system configured to provide the host device with write amplification corresponding respectively to the first namespace and the second namespace.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018158365A JP6545876B2 (en) | 2018-08-27 | 2018-08-27 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018158365A JP6545876B2 (en) | 2018-08-27 | 2018-08-27 | Memory system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015145712A Division JP6403162B2 (en) | 2015-07-23 | 2015-07-23 | Memory system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019113376A Division JP6716757B2 (en) | 2019-06-19 | 2019-06-19 | Memory system and control method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018200720A JP2018200720A (en) | 2018-12-20 |
JP6545876B2 true JP6545876B2 (en) | 2019-07-17 |
Family
ID=64667320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018158365A Active JP6545876B2 (en) | 2018-08-27 | 2018-08-27 | Memory system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6545876B2 (en) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4402512B2 (en) * | 2004-04-30 | 2010-01-20 | 東芝テック株式会社 | Flash memory area allocation method |
US20060282610A1 (en) * | 2005-06-08 | 2006-12-14 | M-Systems Flash Disk Pioneers Ltd. | Flash memory with programmable endurance |
CN103562842B (en) * | 2011-05-24 | 2018-09-14 | 马维尔国际贸易有限公司 | The method for realizing low write amplification with low reserved space for storage device |
US9064579B2 (en) * | 2012-07-16 | 2015-06-23 | Kabushiki Kaisha Toshiba | Semiconductor memory apparatus, data transmission device, and recording method |
-
2018
- 2018-08-27 JP JP2018158365A patent/JP6545876B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018200720A (en) | 2018-12-20 |
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 | |
JP6716757B2 (en) | Memory system and control method | |
JP6414852B2 (en) | Memory system and control method | |
JP6785204B2 (en) | Memory system and control method | |
WO2018189858A1 (en) | Storage system | |
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 |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190426 |
|
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: 20190521 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190619 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6545876 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |