JP2017027387A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2017027387A
JP2017027387A JP2015145712A JP2015145712A JP2017027387A JP 2017027387 A JP2017027387 A JP 2017027387A JP 2015145712 A JP2015145712 A JP 2015145712A JP 2015145712 A JP2015145712 A JP 2015145712A JP 2017027387 A JP2017027387 A JP 2017027387A
Authority
JP
Japan
Prior art keywords
data
namespace
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.)
Granted
Application number
JP2015145712A
Other languages
English (en)
Other versions
JP6403162B2 (ja
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Corp filed Critical Toshiba Corp
Priority to JP2015145712A priority Critical patent/JP6403162B2/ja
Priority to EP15190795.3A priority patent/EP3121730B1/en
Priority to US14/949,078 priority patent/US9830079B2/en
Priority to CN201510887983.XA priority patent/CN106372001B/zh
Priority to CN201910603526.1A priority patent/CN110321247B/zh
Publication of JP2017027387A publication Critical patent/JP2017027387A/ja
Priority to US15/785,860 priority patent/US10782879B2/en
Application granted granted Critical
Publication of JP6403162B2 publication Critical patent/JP6403162B2/ja
Priority to US17/010,487 priority patent/US11429277B2/en
Priority to US17/869,569 priority patent/US11847318B2/en
Priority to US18/386,631 priority patent/US20240061574A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】様々な種類のデータの記憶に有用なメモリシステムを実現する。【解決手段】実施形態によれば、メモリシステムは、複数の物理ブロックを含む不揮発性メモリと、コントローラとを具備する。前記コントローラは、異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースであって、少なくとも第1種類のデータを格納するための第1ネームスペースと、前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2ネームスペースとを含む複数のネームスペースを管理する。前記コントローラは、確保すべき物理リソースの量をネームスペース毎に指定するホストデバイスからの要求に基づいて、第1の個数の物理ブロックを前記第1ネームスペース用の物理リソースとして割り当て、第2の個数の物理ブロックを前記第2ネームスペース用の物理リソースとして割り当てる。【選択図】図3

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。SSDは、その低電力消費、高性能という特徴により、様々なコンピュータのメインストレージとして使用されている。
SSDの種類には、シングルレベルセル(SLC)−SSDのような小容量・高速SSD、マルチレベルセル(MLC)−SSD、トリプルレベルセル(TLC)−SSDのような大容量SSDなどがある。
通常、データセンターにおいては、これら複数種のSSDは、用途に応じて選択的に使用される。
米国特許第8621328号明細書
しかし、データ種類毎に専用の種類のSSDを使用することは、データセンターのTCO(Total Cost of Ownership)を増加させる要因となる。
本発明が解決しようとする課題は、様々な種類のデータの記憶に有用なメモリシステムを提供することである。
実施形態によれば、メモリシステムは、複数の物理ブロックを含む不揮発性メモリと、コントローラとを具備する。前記コントローラは、異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースであって、少なくとも第1種類のデータを格納するための第1ネームスペースと、前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2ネームスペースとを含む複数のネームスペースを管理する。前記コントローラは、確保すべき物理リソースの量をネームスペース毎に指定するホストデバイスからの要求に基づいて、第1の個数の物理ブロックを前記第1ネームスペース用の物理リソースとして割り当て、第2の個数の物理ブロックを前記第2ネームスペース用の物理リソースとして割り当てる。
実施形態に係るメモリシステムの構成例を示すブロック図。 通常の階層化ストレージシステムと単一階層ストレージシステムとの関係を説明するための図。 同実施形態のメモリシステム内に設定される複数の階層(tier)を説明するための図。 同実施形態のメモリシステム内の複数の領域とこれら領域にライトされるデータとの関係を説明するための図。 同実施形態のメモリシステムのネームスペース管理を説明するための図。 同実施形態のメモリシステムに適用される拡張ネームスペース管理コマンドを説明するための図。 同実施形態のメモリシステムによって実行される物理リソース割り当て処理のシーケンスを示す図。 同実施形態のメモリシステムによって実行される物理リソース割り当て処理の手順を示すフローチャート。 同実施形態のメモリシステムに接続されるホストによって実行されるライトコマンド送出処理の手順を示すフローチャート。 同実施形態のメモリシステムに適用されるライトコマンドを説明するための図。 同実施形態のメモリシステムによって実行されるライト動作の処理シーケンスを示す図。 同実施形態のメモリシステムによって実行される、ガベージコレクション動作およびコピー先フリーブロック割り当て動作を説明するための図。 同実施形態のメモリシステムによって実行されるライトデータ量カウント処理を説明するための図。 同実施形態のメモリシステムによって実行されるライトデータ量カウント処理の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるライトアンプリフィケーション(WA)算出処理の手順を示すフローチャート。 同実施形態のメモリシステムからホストに送信されるリターンデータの例を示す図。 同実施形態のメモリシステムによって実行されるカウンタリセット処理の手順を示すフローチャート。 同実施形態のメモリシステムに適用される拡張ガベージコレクション制御コマンドを示す図。 同実施形態のメモリシステムによって実行されるガベージコレクション動作の手順を示すフローチャート。 同実施形態のメモリシステムによって実行される、エンデュランスコードとECCの比率を制御する処理を説明するための図。 同実施形態のメモリシステムによって実行されるエンコード処理およびデコード処理を説明するための図。 同実施形態のメモリシステム内のエンデュランスコードエンコーダの構成例を示すブロック図。 同実施形態のメモリシステムによって実行されるエンコード処理の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるライト制御処理の手順を示すフローチャート。 同実施形態のメモリシステムに適用されるフラッシュアレイの構成を示す図。 同実施形態のフラッシュアレイストレージの構成を示す図。 同実施形態のフラッシュアレイストレージの別の構成を示す図。 同実施形態のフラッシュアレイストレージ内のSSDそれぞれの総容量と階層に割り当てられるべき物理リソースの量との関係を説明するための図。 同実施形態のフラッシュアレイストレージのライト動作を説明するための図。 同実施形態のホストの構成例を示すブロック図。 同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示す図。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。
情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、サーバ、パーソナルコンピュータのような情報処理装置である。
SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(登録商標),Fibre channel等が使用し得る。
SSD3は、コントローラ4、不揮発性メモリ(NANDメモリ)5、およびDRAM6を備える。NANDメモリ5は、限定されないが、複数のNANDフラッシュメモリチップを含んでいてもよい。
NANDメモリ5は、多数のNANDブロック(物理ブロック)B0〜Bm−1を含む。物理ブロックB0〜Bm−1は、消去単位として機能する。物理ブロックは「ブロック」または「消去ブロック」と称されることもある。
物理ブロックB0〜Bm−1は多数のページ(物理ページ)を含む。つまり、物理ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。NANDメモリ5においては、データのリードおよびデータのライトはページ単位で実行される。データの消去は物理ブロック単位で実行される。
コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNANDメモリ5に電気的に結合されている。コントローラ4は、NANDメモリ5のデータ管理とNANDメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
データ管理には、(1)論理ブロックアドレス(LBA)と物理アドレスとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。LBAと物理アドレスとの間のマッピングの管理は、ルックアップテーブル(LUT)33を用いて実行される。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNANDメモリ5内の記憶位置を示す。物理アドレスは、物理ページアドレスと物理ブロックアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全ての物理ブロックに割り当てられている。
ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。
このため、コントローラ4は、同じLBAへのライト(上書き)を、NANDメモリ5上の別のページにマッピングする。つまり、コントローラ4は、この別のページにデータをライトする。そして、コントローラ4は、ルックアップテーブル(LUT)33を更新して、このLBAをこの別のページに関連付けると共に、元のページ(つまりこのLBAが関連付けられていた古いデータ)を無効化する。
ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、物理ブロックそれぞれのプログラム/イレーズ回数を平準化するための動作である。
ガベージコレクションは、NANDメモリ5内のフリースペースを作り出すための動作である。このガベージコレクション動作は、NANDメモリ5のフリーブロックの個数を増やすため、有効データと無効データとが混在する幾つかの対象ブロック内の全ての有効データを別のブロック(例えばフリーブロック)にコピーする。そして、ガベージコレクション動作は、ルックアップテーブル(LUT)33を更新して、コピーされた有効データのLBAそれぞれを正しい物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみなったブロックはフリーブロックとして開放される。これによって、このブロックは消去後に再利用することが可能となる。
ホスト2は、ライトコマンドをSSD3に送出する。このライトコマンドは、ライトデータ(つまり書き込むべきデータ)の論理アドレス(開始論理アドレス)と、転送長とを含む。この実施形態においては、LBAが論理アドレスとして使用されるが、他の実施形態においてはオブジェクトIDが論理アドレスとして使用されても良い。LBAは、論理セクタ(サイズ: 例えば512バイト)に付与されるシリアル番号によって表現される。シリアル番号はゼロから始まる。SSD3のコントローラ4は、ライトコマンド内の開始論理アドレス(Starting LBA)と転送長とによって指定されるライトデータを、NANDメモリ5内の物理ブロックの物理ページにライトする。さらに、コントローラ4は、ルックアップテーブル(LUT)33を更新することによって、ライトされたデータに対応するLBAを、このデータがライトされた物理記憶位置に対応する物理アドレスにマッピングする。
次に、コントローラ4の構成について説明する。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15は、バス10を介して相互接続される。
ホストインタフェース11は、ホスト2から様々なコマンド(ライトコマンド、リードコマンド、拡張ネームスペース管理コマンド、拡張ガベージコレクション制御コマンド、アンマップ(UNMAP)コマンド、等)を受信する。
ライトコマンドは、SSD3に対し、このライトコマンドによって指定されたデータをライトするように要求する。ライトコマンドは、先頭の論理ブロックのLBAと、転送長(論理ブロックの数)とを含む。リードコマンドは、SSD3に対し、このリードコマンドによって指定されたデータをリードするように要求する。リードコマンドは、先頭の論理ブロックのLBAと、転送長(論理ブロックの数)とを含む。
拡張ネームスペース管理コマンドは、通常のネームスペース管理コマンドの拡張コマンドである。
一般に、ホストソフトウェアが指定できるのは、ネームスペース用の論理ブロックアドレス(LBA)の数のみであり、実際にこのネームスペース用に割り当てられるべき物理ブロックの個数(不揮発性メモリ容量)を指定することはできない。すなわち、通常、ネームスペースのサイズはそのネームスペース作成動作において要求されたLBAの数に基づく。通常のSSDでは、このネームスペース用に割り当てられる物理ブロックの個数はSSD内のコントローラによって決定されてしまう。例えば、ネームスペース用に要求されたLBAの数に対応するサイズが90Mバイトであり、1つの物理ブロックの容量が100Mバイトであるならば、通常のSSDのコントローラは、1つの物理ブロックをこのネームスペース用に割り当てるかもしれない。あるいは、ネームスペース用に要求されたLBAの数に対応するサイズが120Mバイトであり、1つの物理ブロックの容量が100Mバイトであるならば、通常のSSDのコントローラは、2つの物理ブロックをこのネームスペース用に割り当てるかもしれない。しかし、このようなSSD依存の物理ブロック割り当て方法では、ホストソフトウェアが、異なる特徴(耐久性)を備えたネームスペースそれぞれの作成をSSDに要求することはできない。
拡張ネームスペース管理コマンドは、SSD3に対し、ネームスペース用の論理ブロックアドレス(LBA)の数を指定できるだけでなく、SSD3に対し、このネームスペースのために割り当てるべき物理ブロックの個数を指定することができる。つまり、拡張ネームスペース管理コマンドは、作成されるべきネームスペース用に確保されるべき物理リソースの量(物理ブロックの個数)を示すパラメータを含む。拡張ネームスペース管理コマンドは、ホスト2(ホストソフトウェア)が、ホスト2内のワークロードに適した個数の物理ブロックをネームスペースそれぞれのために確保することを可能にする。通常、ネームスペースに割り当てられる物理ブロックの数が増えるほど、そのネームスペースの耐久性を高めることができる。したがって、ホストソフトウェアは、拡張ネームスペース管理コマンドを使用することにより、異なる特徴(耐久性)を備えたネームスペースそれぞれを作成することができる。
拡張ガベージコレクション制御コマンドは、ホスト2によってSSD3のガベージコレクション動作を制御するためのホスト・イニシエーティッド・ガベージコレクションコマンドの拡張コマンドである。拡張ガベージコレクション制御コマンドは、SSD3に対し、ガベージコレクションの対象とすべきネームスペースを指定することができる。つまり、拡張ガベージコレクション制御コマンドは、ガベージコレクションが実行されるべき対象ネームスペースを示すパラメータを含む。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、SRAM15を制御するように構成されたプロセッサである。CPU12は、上述のFTLレイヤの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行する。
これらFTLレイヤ処理およびコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。このファームウェアは、CPU12を、ネームスペース制御部21、ライトアンプリフィケーション算出部22、ガベージコレクション動作制御部23、および消耗/リテンション制御部24として機能させる。
ネームスペース制御部21は、複数のネームスペースを管理するためのマルチネームスペース管理機能を有する。ネームスペースは、不揮発性メモリであるNANDメモリ5内の一種の領域に相当する。ネームスペース制御部21は、ホスト2からのネームスペースそれぞれの作成要求に基づいて、複数のネームスペースを作成する。換言すれば、ネームスペース制御部21は、ホスト2からのネームスペースそれぞれの作成要求に基づいて、NANDメモリ5を複数の領域(ネームスペース)に論理的に分割する。ホスト2は、上述の拡張ネームスペース管理コマンドを使用してネームスペースそれぞれの作成をSSD3に要求することができる。ネームスペース制御部21は、これら個々の領域(ネームスペース)に対して、ホスト2によって指定された個数の物理ブロックを割り当てる。これら複数の領域(ネームスペース)は、異なる更新頻度を有する複数種のデータをそれぞれ格納するために使用される。
例えば、頻繁に更新されるタイプのデータ(Hotデータ)は、Hotデータを格納するための特定の領域にライトされる。Hotデータはダイナミックデータと称されることもある。更新の頻度が低いタイプのデータ(Coldデータ)は、Coldデータを格納するための特定の別の領域(tier)にライトされる。Coldデータは非ダイナミックデータまたはスタティックデータと称されることもある。
つまり、SSD3は物理的には一つのストレージデバイスであるが、SSD3内の複数の領域は異なる階層(tier)ストレージとして機能する。
これら複数の領域は、複数のネームスペースにそれぞれ関連付けられている。これにより、ホストソフトウェアは、Hotデータを特定のネームスペースのIDに関連付け、且つColdデータを特定の別のネームスペースのIDに関連付けるだけで、これらデータがライトされるべき領域(tier)を容易に指定することができる。
もしHotデータとColdデータとが同じ物理ブロックに混在される環境であったならば、ライトアンプリフィケーションは著しく増加する可能性がある。
なぜなら、HotデータとColdデータとが混在する物理ブロックにおいては、Hotデータの更新によって物理ブロック内の一部のデータだけが早いタイミングで無効化される一方、この物理ブロック内の残りのデータ部(Coldデータ)は有効状態に長い間維持される可能性があるためである。
ライトアンプリフィケーション(WA)は、以下のように定義される。
WA=「SSDにライトされたデータの総量」 / 「ホストからSSDにライトされたデータの総量」
「SSDにライトされたデータの総量」は、ホストからSSDにライトされたデータの総量とガベージコレクション等によって内部的にSSDにライトされたデータの総量との和に相当する。
ライトアンプリフィケーション(WA)の増加は、SSD3内の物理ブロックそれぞれの書き換え回数(プログラム/イレーズ回数)の増加を引き起こす。つまり、ライトアンプリフィケーション(WA)が大きい程、物理ブロックのプログラム/イレーズ回数が、そのプログラム/イレーズ回数の上限値に速く達しやすくなる。この結果、SSD3の耐久性および寿命の劣化が引き起こされる。
もしHotデータのみによって物理ブロックが満たされていたならば、このブロック内の全てのデータがそれらデータの更新によって、比較的速いタイミングで無効化される可能性が高い。したがって、このブロックは、ガベージコレクションを実行すること無しで、このブロックを消去することのみによって、再利用することが可能となる。
一方、Coldデータのみによって物理ブロックが満たされているならば、このブロック内の全てのデータは、長い間、有効状態に維持される。したがって、このブロックは、ガベージコレクションの対象とならない可能性が高い。
本実施形態では、異なる更新頻度を有する複数種のデータは、異なる領域(異なるネームスペース)にライトされる。例えば、Hotデータは、ある特定のネームスペース(NS#1)に関連付けられた領域にライトされ、Coldデータは、別の特定のネームスペース(NS#n)に関連付けられた別の領域にライトされる。したがって、HotデータとColdデータとが同じ物理ブロックに混在するという状況の発生を防止することができる。このことは、ガベージコレクション動作が実行される頻度を減少させることを可能とし、この結果、ライトアンプリフィケーションを低下させることができる。
さらに、本実施形態では、ネームスペース制御部21は、確保すべき物理ブロックの個数をネームスペース毎に指定するホスト2からの要求に基づいて、所望の個数の物理ブロックを領域(ネームスペース)それぞれに個別に割り当てる。
例えば、ホスト2が新たなネームスペースを作成したい時、ホスト2は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータを含む拡張ネームスペース管理コマンドをSSD3に送出する。ネームスペース制御部21は、ネームスペース(NS#1)を作成し、このネームスペース(このネームスペースに関連付けられた領域)に、パラメータによって指定される個数の物理ブロックを割り当てる。
ホスト2は、対象ネームスペース用に確保すべき物理ブロックの個数を示すパラメータの値を変更しながら、SSD3に拡張ネームスペース管理コマンドを繰り返し送出する。この結果、複数のネームスペース(領域)が作成され、NANDメモリ5はこれら複数の領域に論理的に分割される。
したがって、個々の領域のサイズ(LBAの数)と個々の領域に設定すべき耐久性とに基づいて、複数の領域(複数のtier)にNANDメモリ5の物理リソース(物理ブロックの個数)を最適に配分することができる。
ライトアンプリフィケーション算出部22は、SSD3全体のライトアンプリフィケーションではなく、個々のネームスペース(個々の領域)のライトアンプリフィケーションを算出する。これにより、ライトアンプリフィケーション算出部22は、各ネームスペース(各領域)に対応するライトアンプリフィケーションをホスト2に提供することができる。
ガベージコレクション動作制御部23は、ネームスペース単位(領域単位)で、ガベージコレクション動作を実行し、これによってHotデータとColdデータとが同じ物理ブロックに混在してしまうことを防止する。より詳しくは、ガベージコレクション動作制御部23が拡張ガベージコレクション制御コマンドをホスト2から受信した時、ガベージコレクション動作制御部23は、拡張ガベージコレクション制御コマンドによって指定される対象ネームスペースに割り当てられている物理ブロック群から、ガベージコレクションの対象物理ブロック群を選択する。そして、ガベージコレクション動作制御部23は、有効データを対象物理ブロック群からコピー先フリーブロックにコピーするガベージコレクション動作を実行する。
さらに、ガベージコレクション動作制御部23は、ネームスペース毎に実行されるガベージコレクション動作によって作り出されたフリーブロック群を、これらネームスペースによって共有される共有フリーブロック群として管理する。つまり、これらフリーブロック群は、ネームスペース間で共有される。ガベージコレクション動作制御部23は、最小のプログラム/イレーズ回数のフリーブロックをフリーブロック群から選択する。そして、ガベージコレクション動作制御部23は、選択されたフリーブロックを、上述の対象ネームスペースに対応する領域のコピー先フリーブロックとして割り当てる。
通常、Coldデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム/イレーズ回数は、Hotデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム/イレーズ回数よりも遙かに少ない。なぜなら、ある量のColdデータがColdデータ用の領域に一旦ライトされた後は、このColdデータは頻繁には更新されないか、あるいは、滅多に更新されない場合が多いからである。一方、Hotデータ用の領域のガベージコレクション動作によって作り出されたフリーブロックのプログラム/イレーズ回数は、通常、比較的多い。したがって、最小のプログラム/イレーズ回数のフリーブロックをコピー先フリーブロックとして割り当てる上述の動作は、Coldデータ用の領域において使用されていたプログラム/イレーズ回数の少ないブロックを、Hotデータ用の領域に自動的に割り当てることを可能にする。
消耗/リテンション制御部24は、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御することによって信頼性(データリテンション)と耐久性(DWPD値)との間のトレードオフを最適化するための動作を実行する。これにより、Hotデータ用の領域の耐久性を高めることができ、またColdデータ用の領域のデータリテンション(ライトされたデータのリテンション時間)を延ばすことができる。
NANDインタフェース13は、CPU12の制御の下、NANDメモリ5を制御するように構成されたNANDコントローラである。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。
DRAM6の記憶領域の一部は、NANDメモリ5にライトすべきデータを一時的に格納するためのライトバッファ(WB)31として利用されてもよい。また、DRAM6の記憶領域は、ガベージコレクション(GC)動作中に移動されるデータを一時的に格納するためのGCバッファ32として利用されてもよい。また、DRAM6の記憶領域は、上述のルックアップテーブル33の格納のために用いられてもよい。ルックアップテーブル33は、ネームスペース毎に独立したガベージコレクション(GC)動作を実行できるようにするために、複数のネームスペースにそれぞれ対応する複数のルックアップテーブル(LUT#1、LUT#2、…)に分割されていてもよい。
次に、ホスト2の構成について説明する。
ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ41、オペレーティングシステム42、ファイルシステム43が含まれる。
一般に知られているように、オペレーティングシステム42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
ファイルシステム43は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。例えば、ZFS、Btrfs、XFS、ext4、NTFSなどがファイルシステム42として使用されても良い。あるいは、ファイルオブジェクトシステム(例えば、Ceph Object Storage Daemon)、Key Value Store System (例えば、Rocks DB) がファイルシステム42として使用されても良い。
様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ41上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
アプリケーションソフトウェアレイヤ13がリードコマンドまたはライトコマンドのようなリクエストをSSD3に送出することが必要な時、アプリケーションソフトウェアレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをファイルシステム43に送出する。ファイルシステム43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。ファイルシステム43は、コマンドを、SSD3に送出する。SSD3からのレスポンスが受信された際、ファイルシステム43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションソフトウェアレイヤ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として管理する。
あるHotデータをSSD3にライトすることが必要な時、階層管理部44は、Hotデータ用のネームスペースIDを含むライトコマンドをSSD3に送出する。あるColdデータをSSD3にライトすることが必要な時、階層管理部44は、Coldデータ用のネームスペースIDを含むライトコマンドをSSD3に送出する。
あるHotデータをリードすることが必要な時、階層管理部44は、Hotデータ用のネームスペースIDを含むリードコマンドをSSD3に送出する。あるColdデータをリードすることが必要な時、階層管理部44は、Coldデータ用のネームスペースIDを含むリードコマンドをSSD3に送出する。
図2は、通常の階層化ストレージシステムと単一階層ストレージシステムとの関係を示す。
図2の左部に示される階層化ストレージシステムでは、3種類のSSDが用途に応じて使い分けられている。階層(T1)用のSSDは、小容量・高速SSDである。小容量・高速SSDは、例えば、メモリセル当たりに1ビットの情報を格納するSLC−SSDであってもよい。このため、階層(T1)用のSSDは、高価格SSDである。
階層(T1)用のSSDは、アクセス(リード/ライト)の頻度の高いデータ、例えば頻繁に更新されるデータのストレージとして使用される。アクセス頻度の高いデータの例には、ファイルシステムのメタデータが含まれる。メタデータは、ファイル内のデータの記憶位置、このデータの作成日時、このデータが更新された日時、このデータがリードされた日時、等の様々な管理情報を含む。このため、メタデータに対するアクセスの頻度(ライトアクセスの頻度、リードアクセスの頻度)は非常に高い。したがって、メタデータの格納に使用される階層(T1)用のSSDには、高い耐久性が必要とされる。
SSDの耐久性を示す指標の一つに、DWPD(Drive Write Per Day)がある。例えば、DWPD=10は、1Tバイトの総容量を有するSSDに関しては、1日当たり10Tバイト(=10×1Tバイト)のデータのライトを5年間に渡って毎日実行することができることを意味する。階層(T1)用のSSDには、DWPD=10の耐久性が要求される場合がある。
階層化ストレージシステム全体の容量に対する階層(T1)の容量の割合は、例えば、1パーセントである。メタデータのサイズはファイルの中身のサイズよりも極めて小さいからである。
階層(T2)用のSSDは、中容量SSDである。中容量SSDは、例えば、メモリセル当たりに2ビットの情報を格納するMLC−SSDであってもよい。階層(T2)用のSSDは、メタデータよりも、更新の頻度が低いデータのストレージとして使用される。階層(T2)用のSSDには、DWPD=1が要求される場合がある。階層化ストレージシステム全体の容量に対する階層(T2)の容量の割合は、例えば、4パーセントである。
階層(T3)用のSSDは、低価格の大容量SSDである。この大容量SSDは、例えば、MLC−SSDまたはTLC−SSDであってもよい。階層(T3)用のSSDは、滅多に更新されないデータのストレージとして使用される。階層(T3)用のSSDにおいては、DWPD=0.1程度の低い耐久性で十分な場合がある。階層化ストレージシステム全体の容量に対する階層(T3)の容量の割合は、例えば、95パーセントである。
図2の右部は、一台のSSDに3つの階層T1〜T3の全てのデータを格納する単一階層ストレージシステムの例を示す。単一階層ストレージシステム全体に要求されるDWPDは、次のように求めることができる。
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を使用する単一階層ストレージシステムであっても、複数の階層間の耐久性の関係を最適化するための機能を追加することによって、階層化ストレージシステムとほぼ同等の耐久性・性能を得ることができる。
図3は、本実施形態のSSD3(SSD#1)にける複数の領域(ネームスペース)間の物理リソースの配分の例を示す。
SSD#1のストレージスペースは、例えば、異なる更新頻度を有する複数種のデータ(Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータ)をそれぞれ格納するための領域51、52、53、54、55に論理的に分割される。
データは、その更新の頻度に応じて5つのデータグループ(Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータ)に分類される。Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータの順に、データの更新頻度は減少される。Warmデータ、Middleデータ、Coolデータは、HotデータとColdデータの中間の更新頻度を有するデータである。
領域51は、Hotデータを格納するための階層ストレージ(tier#1)として使用される。領域51には、ネームスペース(NS#1)が関連付けられている。領域51は、小容量・高更新頻度のHotデータ(アクティブデータ)を格納するために利用される。SSD#1の総容量に対する領域51の容量の割合の例は、1パーセントであってもよい。領域51に要求されるDWPDの例は、10であってもよい。
領域52は、Warmデータを格納するための階層ストレージ(tier#2)として使用される。領域52には、ネームスペース(NS#2)が関連付けられている。SSD#1の総容量に対する領域52の容量の割合の例は、2パーセントであってもよい。領域52に要求されるDWPDの例は、3であってもよい。
領域53は、Middleデータを格納するための階層ストレージ(tier#3)として使用される。領域53には、ネームスペース(NS#3)が関連付けられている。SSD#1の総容量に対する領域53の容量の割合の例は、3パーセントであってもよい。領域53に要求されるDWPDの例は、1であってもよい。
領域54は、Coolデータを格納するための階層ストレージ(tier#4)として使用される。領域54には、ネームスペース(NS#4)が関連付けられている。SSD#1の総容量に対する領域54の容量の割合の例は、14パーセントであってもよい。領域54に要求されるDWPDの例は、0.3でであってもよい。
領域55は、Coldデータを格納するための階層ストレージ(tier#n)として使用される。領域55には、ネームスペース(NS#n)が関連付けられている。領域55は、大容量・低更新頻度のColdデータ(非アクティブデータ)を格納するために利用される。SSD#1の総容量に対する領域55の容量の割合の例は、80パーセントであってもよい。例えば、領域55の更新の頻度は、領域51の更新の頻度の1/100程度である。したがって、領域55に要求されるDWPDの例は、0.1であってもよい。
このように、Hotデータ、Warmデータ、Middleデータ、Coolデータ、Coldデータは異なる領域にそれぞれ格納される。よって、更新頻度が異なるデータ、例えばHotデータとColdデータとが同じブロックに混在するという状況の発生を防止することができる。この結果、SSD3のライトアンプリフィケーションを低下させることができる。
図3のような比率で物理リソースが複数の領域51〜55に配分された場合、SSD3(SSD#1)全体に要求されるDWPDは、次のように求めることができる。
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によって実現可能であることを意味する。
本実施形態では、上述したように、ホスト2は、確保すべき物理ブロックの個数をネームスペース毎に指定することするができ、SSD3は、指定された個数の物理ブロックを個々の領域(tier)に個別に割り当てることができる。
もし複数のtierが異なるSSDによって実現されているならば、使用されるSSD自体を交換しないかぎり、個々のtierのサイズを変えることはできない。本実施形態では、同じ一つのSSDが複数のtier(領域)に論理的に分割されている。したがって、個々のtierのサイズを、ワークロードおよび各tier(領域)に設定すべき耐久性に合わせて最適化することができる。
つまり、本実施形態では、領域51〜55に対して幾つの物理ブロックを割り当てるかをホスト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)のオーバープロビジョン領域として機能する。
ここで、オーバープロビジョン領域について説明する。
オーバープロビジョニングは、ホスト2には利用可能なユーザスペース(ユーザアクセス可能LBAスペース)として見えないSSD3内のストレージ容量を割り当てることを意味する。ホスト2にユーザアクセス可能LBAスペースとして見えないストレージ容量が割り当てられたスペースが、オーバープロビジョン領域である。オーバープロビジョニングにより、ユーザアクセス可能LBAスペース(ユーザ領域の容量)を超える容量の物理ブロック群が割り当てられる。
通常のSSDにおいては、ホストはあるネームスペース用のLBAの数を指定することはできても、このネームスペース用に幾つの物理ブロックを割り当てるべきかを指定することはできない。また、通常は、ただ一つのオーバープロビジョン領域のみが、1台のSSD内に設定される。
これに対し、本実施形態では、ホスト2によって指定された個数の物理ブロックを個々のネームスペース(領域)に割り当てることができ、さらに、この結果、所望の容量のオーバープロビジョン領域を領域毎に個別に設定することができる。
例えば、領域51の総容量(総NS#1容量)は、領域51に割り当てられた物理ブロックの総数によって決定される。領域51は、ユーザ領域51aとオーバープロビジョン領域51bとを含む。領域51の総容量からユーザ領域51aの容量を引いた残りの容量が、オーバープロビジョン領域51bとして機能する。ユーザ領域51aは、LBAに割り当てられた物理ブロック群である。オーバープロビジョン領域51bの存在によって、領域51内のユーザ領域51aの耐久性・性能が改善される。
他の各領域に関しても、この領域に割り当てられた物理ブロックの総数によって決定される容量からこの領域内のユーザ領域の容量を引いた残りの容量が、この領域内のオーバープロビジョン領域として機能する。
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)のオーバープロビジョン領域として機能する。
同様にして、ホストソフトウェアは、残りの全ての領域の各々について、割り当てるべき物理ブロックの量を指定する。
例えば、ホストソフトウェアは、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)のオーバープロビジョン領域として機能する。
このように、SSD3は、確保すべき物理ブロックの個数をネームスペース毎に指定するホスト2からの要求に基づいて、個々の領域に対して、指定された個数の物理ブロックを割り当てる。この結果、ユーザ領域の容量に対するオーバープロビジョン領域の容量の比率を、個々の領域毎に、最適化することが可能となる。例えば、上の階層になるほど、割り当てられるオーバープロビジョン領域の量が多くなるように、個々の領域に割り当てられる物理ブロックの個数が調整されても良い。この場合、例えば、領域55内のユーザ領域の容量に対する領域55内のオーバープロビジョン領域の容量の比率は、領域51内のユーザ領域の容量に対する領域51内のオーバープロビジョン領域の容量の比率よりも小さくなる。
領域51においては、大きなサイズのオーバープロビジョン領域の活用によって、領域51のライトアンプリフィケーションを効率よく減少することができる。なぜなら、たとえ領域51のユーザ領域51aの物理ブロック群が100Mバイトのデータで満たされ、この結果、これら各物理ブロックがそのブロックの消去無しで利用可能ページを含まない状態になっても、これら物理ブロックの代わりにオーバープロビジョン領域51bの物理ブロック群をデータのライトに使用することができるからである。よって、領域51のガベージコレクション動作が実行されるタイミングを十分に遅らせることができる。オーバープロビジョン領域51bの物理ブロック群にデータがライトされるにつれ、ユーザ領域51aの物理ブロック群内のデータはその更新によって無効化される。全てのデータが無効化された物理ブロックはそのガベージコレクションなしで再利用することができる。したがって、領域51のライトアンプリフィケーションを効率よく減少することができるので、領域51の物理ブロック群のライト/イレーズ回数を低く抑えることができる。このことは、領域51の耐久性を向上させることできることを意味している。
領域55のオーバープロビジョン領域は小さいので、領域55のライトアンプリフィケーションは増加する。しかし、Coldデータ用の領域55の更新頻度は、Hotデータ用の領域51の更新頻度に比べて、遙かに低い。例えば、Coldデータ用の領域55の更新頻度は、Hotデータ用の領域51の更新頻度の100分の1である。つまり、領域51が100回書き換えられる間に、領域55は1回しか書き換えられないので、Coldデータの領域55の物理ブロックそれぞれのプログラム/イレーズ回数は非常に少ない。したがって、Coldデータの領域55に関しては、たとえそのライトアンプリフィケーションが大きくても、Coldデータの領域55の物理ブロック群のプログラム/イレーズ回数が、SSD3のプログラム/イレーズ回数上限値にすぐに達してしまうという現象は発生しない。
図4は、複数の領域51〜55とこれら領域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によるネームスペース管理を示す。
ここでは、複数のネームスペースNS#1〜NS#nが作成されている場合を想定する。ネームスペースNS#1には、0〜E0の論理アドレス空間(LBA空間)A1が割り当てられている。ネームスペースNS#2には、0〜E1の論理アドレス空間(LBA空間)A2が割り当てられている。同様に、ネームスペースNS#nには、0〜Enの論理アドレス空間(LBA空間)Anが割り当てられている。
本実施形態では、ルックアップテーブルLUTは、ネームスペース毎に分割されている。つまり、ネームスペースNS#1〜NS#nに対応するn個のルックアップテーブルLUT#1〜LUT#nがSSD3のコントローラ4によって管理される。
ルックアップテーブルLUT#1は、ネームスペースNS#1のLBA空間A1とNANDメモリ5の物理アドレスとの間のマッピングを管理する。ルックアップテーブルLUT#2は、ネームスペースNS#2のLBA空間A2とNANDメモリ5の物理アドレスとの間のマッピングを管理する。ルックアップテーブルLUT#nは、ネームスペースNS#nのLBA空間AnとNANDメモリ5の物理アドレスとの間のマッピングを管理する。
コントローラ14は、ルックアップテーブルLUT#1〜LUT#nを使用することによって、ネームスペース(領域)毎に独立してガベージコレクション動作を行う事ができる。
管理データ100は、ネームスペースNS#1〜NS#nとこれらネームスペースNS#1〜NS#nに割り当てられた物理ブロックの個数との間の関係を示す情報を保持しても良い。
本実施形態においては、ガベージコレクションによって生成されたフリーブロックは、ネームスペースNS#1〜NS#n間で共有することができる。
図6は、拡張ネームスペース管理コマンドを示す。
拡張ネームスペース管理コマンドは、ネームスペースの作成および削除を含むネームスペース管理のために使用される。拡張ネームスペース管理コマンドは、以下のパラメータを含む。
(1)作成/削除
(2)LBA範囲
(3)物理リソースサイズ
(4)tier属性(オプショナル)
作成/削除のパラメータの値0hは、ネームスペースの作成をSSD3に要求する。作成/削除のパラメータの値1hは、ネームスペースの削除をSSD3に要求する。ネームスペースの削除を要求する場合には、削除対象のネームスペースのIDを示すパラメータが拡張ネームスペース管理コマンドに設定される。
LBA範囲のパラメータは、ネームスペースのLBA範囲(LBA0〜n−1)を示す。このLBA範囲は、このネームスペースのユーザ領域にマッピングされる。
物理リソースサイズのパラメータは、ネームスペース用に確保されるべき物理ブロックの個数を示す。
別の実施形態では、拡張ネームスペース管理コマンドは、物理リソースサイズのパラメータ代わりに、オーバープロビジョンのサイズを示すパラメータを含んでいてもよい。
オーバープロビジョンのサイズのパラメータは、ネームスペースに関連付けられた領域内のオーバープロビジョン領域用に確保されるべき物理ブロックの個数を示す。もし拡張ネームスペース管理コマンドがオーバープロビジョンのサイズのパラメータを含むならば、SSD3は、ネームスペースを作成し、且つこのネームスペースに関連付けられた領域内のオーバープロビジョン領域に、このパラメータによって指定された個数の物理ブロックを割り当ててもよい。
tier属性のパラメータは、このネームスペースに対応する階層属性を示す。tier属性のパラメータの値とtier属性との関係は、次の通りである。
000: Hot
001: Warm
010: Middle
011: Cool
100: Cold
図7は、ホスト2とSSD3とによって実行される物理リソース割り当て処理のシーケンスを示す。
ホスト2は、ネームスペース(Hotデータ用の領域)の作成を要求する拡張ネームスペース管理コマンドをSSD3に送出する。この拡張ネームスペース管理コマンドは、Hotデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。SSD3内の一つの物理ブロックの容量はSSD3からホスト2に報告されているので、ホスト2は、Hotデータ用の領域に適した個数の物理ブロックを要求することができる。この拡張ネームスペース管理コマンドの受信に応答して、SSD3のコントローラ4は、ネームスペース(NS#1)を作成し、このネームスペース(NS#1)に、指定された個数の物理ブロックを割り当てる(ステップS11)。コントローラ4は、コマンド完了を示すレスポンスをホスト2に送出する。このレスポンスは、作成されたネームスペースのIDを含んでいてもよい。
ホスト2は、次のネームスペース(Warmデータ用の領域)の作成を要求する拡張ネームスペース管理コマンドをSSD3に送出する。この拡張ネームスペース管理コマンドは、Warmデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。この拡張ネームスペース管理コマンドの受信に応答して、SSD3のコントローラ4は、ネームスペース(NS#2)を作成し、このネームスペース(NS#2)に、指定された個数の物理ブロックを割り当てる(ステップS12)。コントローラ4は、コマンド完了を示すレスポンスをホスト2に送出する。このレスポンスは、作成されたネームスペースのIDを含んでいてもよい。
同様にして、ネームスペース(Middleデータ用の領域)、ネームスペース(Coolデータ用の領域)が作成される。
そして、ホスト2は、次のネームスペース(Coldデータ用の領域)の作成を要求する拡張ネームスペース管理コマンドをSSD3に送出する。この拡張ネームスペース管理コマンドは、Coldデータ用の領域用に確保すべき物理ブロックの個数を指定する物理リソースサイズパラメータを含む。この拡張ネームスペース管理コマンドの受信に応答して、SSD3のコントローラ4は、ネームスペース(NS#n)を作成し、このネームスペース(NS#n)に、指定された個数の物理ブロックを割り当てる(ステップS13)。コントローラ4は、コマンド完了を示すレスポンスをホスト2に送出する。このレスポンスは、作成されたネームスペースのIDを含んでいてもよい。
このようにして、指定された個数の物理ブロックをネームスペースに割り当てながらネームスペースを作成する処理が繰り返されることによって、NANDメモリ5は複数の領域に論理的に分割され、さらに領域毎に、指定された個数の物理ブロックが割り当てられる。
図8のフローチャートは、SSD3によって実行される物理リソース割り当て処理の手順を示す。
SSD3のコントローラ4は、拡張ネームスペース管理コマンドをホスト2から受信する(ステップS21)。コントローラ4は、拡張ネームスペース管理コマンド内の作成/削除パラメータに基づいて、拡張ネームスペース管理コマンドがネームスペースの作成を要求しているか否かを判定する(ステップS22)。
拡張ネームスペース管理コマンドがネームスペースの作成を要求しているならば(ステップS22のYES)、コントローラ4は、拡張ネームスペース管理コマンド内の物理リソースパラメータによって指定された個数の物理ブロックを確保可能か否かを、フリーブロック群内の残り物理ブロックの個数に基づいて判定する(ステップS23)。
物理ブロックの個数が、指定された個数以上であるならば(ステップS23のYES)、コントローラ4は、ネームスペースを作成し、指定された個数の物理ブロックを、このネームスペースに関連付けられた領域に割り当てる(ステップS24)。コントローラ4は、コマンド完了をホスト2に通知する(ステップS25)。
残り物理ブロックの個数が、指定された個数よりも少ないならば(ステップS23のNO)、コントローラ4は、エラーをホスト2に通知する(ステップS26)。エラーが報告されたホスト2は、確保すべき物理ブロックの個数を変更してもよい。あるいは、エラーのレスポスが通知されたホスト2は、各ネームスペース用に確保すべき物理ブロックの個数を指定しながらネームスペースそれぞれを作成する処理を、最初からやり直しても良い。
図9のフローチャートは、ホスト2よって実行されるライトコマンド送出処理の手順を示す。
ホスト2は、データをライトする要求が発生した時(ステップS31のYES)、このライトデータ(書き込むべきデータ)を、Hotデータ、Warmデータ、Middleデータ、Coolデータ、またはColdデータとして分類する(ステップS32)。ホスト2は、例えば、メタデータ、ファイルの中身(コンテンツ)といったデータ種別に応じて、ライトデータ(書き込むべきデータ)を、Hotデータ、Warmデータ、Middleデータ、Coolデータ、またはColdデータとして分類してもよい。
ライトデータがHotデータであるならば(ステップS33のYES)、ホスト2は、Hotデータ用のネームスペースのID(NSID#1)を含むライトコマンドをSSD3に送出する(ステップS36)。
ライトデータがWarmデータであるならば(ステップS34のYES)、ホスト2は、Warmデータ用のネームスペースのID(NSID#2)を含むライトコマンドをSSD3に送出する(ステップS37)。
ライトデータがColdデータであるならば(ステップS35のYES)、ホスト2は、Coldデータ用のネームスペースのID(NSID#n)を含むライトコマンドをSSD3に送出する(ステップS38)。
図10は、ライトコマンドを示す。
ライトコマンドは、以下のパラメータを含む。
(1)先頭LBA
(2)論理ブロックの数
(3)ネームスペースID
先頭LBAのパラメータは、書き込まれるべきデータの先頭LBAを示す。
論理ブロックの数のパラメータは、書き込まれるべきデータに対応する論理ブロックの数(つまり、転送長)を示す。
ネームスペースIDのパラメータは、データがライトされるべきネームスペースのIDを示す。
図11は、ホスト2とSSD3とによって実行されるライト動作の処理シーケンスを示す。
ホスト2は、ライトコマンドをSSD3に送出し、ライトデータをSSD3に送出する。SSD3のコントローラ4は、ライトデータをライトバッファ(WB)31にライトし(ステップS41)、そしてコマンド完了command completionのレスポンスをホスト2に通知する。この後、コントローラ4は、ライトデータを、ライトコマンド内のネームスペースIDによって指定されるネームスペースに関連付けられた領域内の利用可能ブロックにライトする(ステップS42)。
図12は、SSD3によって実行されるガベージコレクション動作およびコピー先フリーブロック割り当て動作を示す。
上述したように、ガベージコレクション動作はネームスペース毎に実行される。ネームスペース(NS#1)のガベージコレクション動作においては、SSD3のコントローラ4は、ネームスペース(NS#1)に関連付けられた領域51内の物理ブロック(アクティブブロック)から、ガベージコレクションの対象物理ブロックを選択する。例えば、コントローラ4は、ルックアップテーブルLUT#1を参照することによって無効データの比率が最も大きい上位幾つかの物理ブロックを特定し、この物理ブロックをガベージコレクションの対象物理ブロックとして選択してもよい。
コントローラ4は、ネームスペース間で共有されるフリーブロック群を含むフリーブロックプール(フリーブロックリスト)60を管理する。コントローラ4は、フリーブロック群から、最小のプログラム/イレーズ回数のフリーブロックを選択する。コントローラ4は、選択されたフリーブロックを、ネームスペース(NS#1)に、コピー先フリーブロックB1000として割り当てる。コントローラ4は、ガベージコレクションの対象物理ブロック群(ここでは、ブロックB0〜B3)からコピー先フリーブロックB1000に全ての有効データをコピーする。そして、コントローラ4は、ルックアップテーブルLUT#1を更新して、有効データをコピー先フリーブロックB1000にマッピングする。ガベージコレクションの対象物理ブロック群B0〜B3は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプールに移動される。
他のネームスペース(NS#2〜NS#n)についても同様にしてガベージコレクション動作が実行される。
例えば、ネームスペース(NS#n)のガベージコレクション動作においては、コントローラ4は、ネームスペース(NS#n)に関連付けられた領域55内の物理ブロック(アクティブブロック)から、ガベージコレクションの対象物理ブロックを選択する。例えば、コントローラ4は、ルックアップテーブルLUT#nを参照することによって無効データの比率が最も大きい上位幾つかの物理ブロックを特定し、この物理ブロックをガベージコレクションの対象物理ブロックとして選択してもよい。
コントローラ4は、フリーブロック群から、最小のプログラム/イレーズ回数のフリーブロックを選択する。コントローラ4は、選択されたフリーブロックを、ネームスペース(NS#n)に、コピー先フリーブロックB1001として割り当てる。コントローラ4は、ガベージコレクションの対象物理ブロック群(ここでは、ブロックB2000〜B2003)からコピー先フリーブロックB1001に全ての有効データをコピーする。そして、コントローラ4は、ルックアップテーブルLUT#nを更新して、有効データをコピー先フリーブロックB1001にマッピングする。ガベージコレクションの対象物理ブロック群B2000〜B2003は、有効データを含まないフリーブロックとなる。これらフリーブロックは、フリーブロックプールに移動される。
上述したように、ネームスペース(NS#n)の更新の頻度はネームスペース(NS#1)の更新の頻度よりも遙かに低いので、ネームスペース(NS#n)のガベージコレクションによって作り出されたフリーブロックのプログラム/イレーズ回数は少ない。本実施形態のガベージコレクション動作においては、ネームスペース(NS#1)のガベージコレクションが実行される度に、ネームスペース(NS#n)で過去に使用されていた物理ブロックがネームスペース(NS#1)のコピー先フリーブロックとして割り当てられる。したがって、ネームスペース(NS#n)で使用されていた、プログラム/イレーズ回数の少ない物理ブロックを、ネームスペース(NS#1)において有効に再利用することが可能となる。この結果、ネームスペース(NS#1)の耐久性を改善することができる。
さらに、コントローラ4は、ネームスペース(NS#1)の耐久性を改善するために、ネームスペース(NS#1)とネームスペース(NS#n)との間で物理ブロックを入れ替えるウェアレベリング処理を実行することもできる。例えば、ネームスペース(NS#1)で使用されている物理ブロックのいずれかの物理ブロックのプログラム/イレーズ回数が閾回数(閾回数はプログラム/イレーズ回数の上限よりも少ない値に設定されている)に達したならば、コントローラ4は、この物理ブロックを、ネームスペース(NS#n)内の最小プログラム/イレーズ回数の物理ブロックと入れ替えてもよい。
図13は、SSD3によって実行されるライトデータ量カウント処理を示す。
SSD3のコントローラ4は、SSD3全体のライトアンプリフィケーションではなく、ネームスペース毎のライトアンプリフィケーションを算出することができる。このために、コントローラ4は、ホスト2によってライトされたデータの量をカウントするためのカウンタとガベージコレクション動作によってライトされたデータの量をカウントするためのカウンタとの2種類のカウンタを、ネームスペース毎に備える。
カウンタ61およびカウンタ62は、ネームスペース(NS#1)のライトアンプリフィケーションを算出するために使用される。カウンタ61は、ホスト2によってネームスペース(NS#1)、つまり領域51、にライトされたデータの量をカウントする。カウンタ62は、ネームスペース(NS#1)のガベージコレクションによってネームスペース(NS#1)、つまり領域51、にライトされたデータの量をカウントする。
カウンタ63およびカウンタ64は、ネームスペース(NS#2)のライトアンプリフィケーションを算出するために使用される。カウンタ63は、ホスト2によってネームスペース(NS#2)、つまり領域52、にライトされたデータの量をカウントする。カウンタ64は、ネームスペース(NS#2)のガベージコレクションによってネームスペース(NS#2)、つまり領域52、にライトされたデータの量をカウントする。
カウンタ65およびカウンタ66は、ネームスペース(NS#n)のライトアンプリフィケーションを算出するために使用される。カウンタ65は、ホスト2によってネームスペース(NS#n)、つまり領域55、にライトされたデータの量をカウントする。カウンタ66は、ネームスペース(NS#n)のガベージコレクションによってネームスペース(NS#n)、つまり領域55、にライトされたデータの量をカウントする。
図14のフローチャートは、SSD3によって実行されるライトデータ量カウント処理の手順を示す。
SSD3のコントローラ4がホスト2からライトコマンドを受信した時、コントローラ4は、ライトコマンド内に含まれるネームスペースIDに基づいて、ライトデータがライトされるべき対象ネームスペース(領域)を決定する(ステップS41〜S43)。そして、コントローラ4は、ライトデータを対象ネームスペース(領域)にライトすると共に、ライトされるデータの量をカウントする(ステップS44〜S46)。
例えば、対象ネームスペース(領域)がネームスペース(NS#1)であれば(ステップS41のYES)、コントローラ4は、カウンタ61を使用して、ネームスペース(NS#1)にライトされるデータの量をカウントする(ステップS44)。ステップS44では、カウンタ61の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。
対象ネームスペース(領域)がネームスペース(NS#2)であれば(ステップS42のYES)、コントローラ4は、カウンタ63を使用して、ネームスペース(NS#2)にライトされるデータの量をカウントする(ステップS45)。ステップS45では、カウンタ63の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。
対象ネームスペース(領域)がネームスペース(NS#n)であれば(ステップS43のYES)、コントローラ4は、カウンタ65を使用して、ネームスペース(NS#n)にライトされるデータの量をカウントする(ステップS46)。ステップS46では、カウンタ65の現在のカウント値が、ライトデータの転送長だけ増加されてもよい。
ネームスペース(NS#1)のガベージコレクション動作が実行される時(ステップS51のYES)、コントローラ4は、カウンタ62を使用して、このガベージコレクション動作によってネームスペース(NS#1)にライトされるデータの量をカウントする(ステップS54)。ステップS54では、カウンタ62のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。
ネームスペース(NS#2)のガベージコレクション動作が実行される時(ステップS52のYES)、コントローラ4は、カウンタ64を使用して、このガベージコレクション動作によってネームスペース(NS#2)にライトされるデータの量をカウントする(ステップS55)。ステップS55では、カウンタ64のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。
ネームスペース(NS#n)のガベージコレクション動作が実行される時(ステップS53のYES)、コントローラ4は、カウンタ66を使用して、このガベージコレクション動作によってネームスペース(NS#n)にライトされるデータの量をカウントする(ステップS56)。ステップS56では、カウンタ66のカウント値が、ガベージコレクション動作の対象ブロック群内の全有効データの総量だけ増加されてもよい。
図15のフローチャートは、SSD3によって実行されるライトアンプリフィケーション(WA)算出処理の手順を示す。
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)は、次のように得られる。
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#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#n−WA=「カウンタ65のカウント値+カウンタ66のカウント値」/「カウンタ65のカウント値」
ネームスペースそれぞれのライトアンプリフィケーションを要求するWAゲットコマンドがホスト2から受信された時(ステップS70のYES)、コントローラ4は、ホスト2に図16に示すリターンデータを送出して、ネームスペースそれぞれのライトアンプリフィケーションをホスト2に通知する(ステップS71)。
ステップS61〜S69の処理は、WAゲットコマンドの受信に応答して実行されても良い。
図17のフローチャートは、SSD3よって実行されるカウンタリセット処理の手順を示す。
このカウンタリセット処理は、SSD3の設定の変更のような特定のリセットイベントが発生した後のSSD3の各ネームスペースのライトアンプリフィケーションを、ホスト2に提供するために利用される。SSD3の設定の変更の例は、あるネームスペースの設定の変更であってもよいし、あるネームスペースの削除であってもよい。あるいは、SSD3の設定の変更の例は、SSD3全体の設定の変更であってもよい。
SSD3は、ホスト2からの要求に応じて、カウンタリセット処理を実行する。
この要求は、カウンタをリセットすることを要求するコマンドであってもよい。このコマンドの受信に応答して、SSD3は、全てのネームスペースに対応するカウンタ61〜66をリセットしてもよい。このコマンドがネームスペースIDを含む場合には、SSD3は、ネームスペースIDに対応するネームスペースに関連付けられた2つのカウンタだけをリセットしてもよい。
あるいは、あるネームスペースの設定またはSSD3全体の設定を変更するためのコントロールコマンドを、この要求として取り扱っても良い。あるネームスペースの設定の変更は、このネームスペースのサイズ(LBA範囲)の変更であってもよいし、このネームスペース用の物理ブロックの個数の変更であってもよい。
以下では、限定されないが、あるネームスペースの設定の変更に応答してカウンタリセット処理が実行される場合を例示してカウンタリセット処理の手順を説明する。
コントローラ4がネームスペースの設定の変更を要求するコントロールコマンドをホスト2から受信した時、コントローラ4は、コントロールコマンド内のネームスペースIDに基づいて、設定変更の対象ネームスペースを決定する。
対象ネームスペースがネームスペース(NS#1)ならば(ステップS81のYES)、コントローラ4は、コントロールコマンド内のパラメータに従ってネームスペース(NS#1)の設定を変更する(ステップS82)。コントローラ4は、ネームスペース(NS#1)に対応するカウンタ61、62のカウント値をゼロにクリアする(ステップS83)。
対象ネームスペースがネームスペース(NS#2)ならば(ステップS84のYES)、コントローラ4は、コントロールコマンド内のパラメータに従ってネームスペース(NS#2)の設定を変更する(ステップS85)。コントローラ4は、ネームスペース(NS#2)に対応するカウンタ63、64のカウント値をゼロにクリアする(ステップS86)。
対象ネームスペースがネームスペース(NS#n)ならば(ステップS87のYES)、コントローラ4は、コントロールコマンド内のパラメータに従ってネームスペース(NS#n)の設定を変更する(ステップS88)。コントローラ4は、ネームスペース(NS#n)に対応するカウンタ65、66のカウント値をゼロにクリアする(ステップS89)。
図18は、拡張ガベージコレクション(GC)制御コマンドを示す。
上述したように、拡張ガベージコレクション(GC)制御コマンドは、ホスト2によってSSD3の任意のネームスペースのガベージコレクション動作を制御するためのホスト・イニシエーティッド・ガベージコレクションコマンドとして使用される。
この拡張ガベージコレクション(GC)制御コマンドは、以下のパラメータを含む。
(1)ネームスペースID
(2)フリーブロックの量
(3)タイマ
ネームスペースIDのパラメータは、ガベージコレクションが実行されるべき対象ネームスペースのIDを示す。
フリーブロックの量のパラメータは、対象ネームスペースのために確保されるべきフリーブロックの量(例えば、フリーブロックの個数)を示す。
タイマのパラメータは、ガベージコレクション動作の最大時間を指定する。
ホスト2は、拡張ガベージコレクション(GC)制御コマンドを使用することによって、ネームスペース(NS#1)〜ネームスペース(NS#n)内の任意のネームスペースのガベージコレクションの実行をSSD3に要求することができる。
例えば、ホスト2は、WAゲットコマンドをSSD3に定期的に送信することによって個々のネームスペース(領域)のライトアンプリフィケーションを監視してもよい。あるネームスペース(領域)のライトアンプリフィケーションがこのネームスペースに対応するライトアンプリフィケーション閾値に達した時、ホスト2は、このネームスペースのネームスペースIDを含む拡張ガベージコレクション(GC)制御コマンドをSSD3に送出してもよい。
あるいは、ホスト2があるネームスペース(領域)へのデータのライトを良好なレイテンシで行うことを望む場合に、ホスト2は、このネームスペースのネームスペースIDを含む拡張ガベージコレクション(GC)制御コマンドをSSD3に送出してもよい。
ホスト2からの拡張ガベージコレクション(GC)制御コマンドの受信に応答して、SSD3のコントローラ4は、対象ネームスペースのための専用の、指定された量のフリースペースを確保するためのガベージコレクション動作を実行する。コントローラ4は、指定された量のフリースペースが確保された時点または最大時間が経過する時点のいずれか早いほうの時点で、ガベージコレクション動作を終了する。
図19のフローチャートは、SSD3によって実行されるガベージコレクション動作の手順を示す。
SSD3のコントローラ4が拡張ガベージコレクション(GC)制御コマンドをホスト2から受信した時(ステップS91のYES)、コントローラ4は、拡張ガベージコレクション(GC)制御コマンド内のネームスペースIDによって指定される対象ネームスペースのガベージコレクション動作を実行する(ステップS92)。ステップS92では、コントローラ4は、対象ネームスペースのアクティブブロック群からガベージコレクション対象の幾つかの物理ブロックを選択し、これら物理ブロックの有効データをコピー先物理ブロックにコピーする。
ガベージコレクション動作は、指定された量のフリースペースが確保された時点または最大時間が経過する時点のいずれか早いほうの時点で、終了される(ステップS93、S94)。
図20は、データがライトされるべきネームスペース(領域)に応じて、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御する処理を示す。
本実施形態においては、メモリセルの消耗を抑えるためのコードとエラー訂正コード(ECC)との比率を制御することによって信頼性(データリテンション)と耐久性(DWPD値)との間のトレードオフが最適化される。
ここで、1回の書き込み当たりのメモリセルの消耗を抑えるためのコード(コーディング)を使用して、ライトデータをエンコードする動作の概要について説明する。
SSD3のコントローラ4は、まず、メモリセルの消耗を抑制するためのコード(コーディング)を使用してライトデータをエンコードして、第1符号化データ(図20において“endurance code”と書かれている部分)を生成する。このコード(コーディング)は、メモリセルを激しく消耗させる特定の符号(高閾値電圧に対応する高プログラムレベルの符号)の出現頻度を下げために使用される。このコード(コーディング)としては、例えば、上述のendurance code(endurance coding)等がある。
例えば、MLCにおいては、メモリセルは、プログラムによって、2ビットに対応する4つのレベル(“E”レベル、“A”レベル、“B”レベル、“C”レベル)のいずれかに対応する状態(プログラムレベル)に設定される。“E”レベルは消去状態である。メモリセルの閾値電圧分布は、“E”レベル、“A”レベル、“B”レベル、“C”レベルの順で高くなる。“C”レベルの状態は、メモリセルを激しく消耗させる状態(プログラムレベル)である。
メモリセルの消耗を抑制するためのコード(コーディング)を使用したエンコードにおいては、例えば、メモリセルの消耗が大きい特定のレベル(例えば“C”レベル)に対応する符号が、別の符号(例えば、2つの“B”レベルが連続した“B−B”に対応した長いビットパターン)に変換されてもよい。
このように、エンコードにおいては、メモリセルを消耗させる特定の符号(ビットパターン)が別の長い符号(ビットパターン)に置き換えられるので、ライトデータの符号語が延びる。このため、エンコードにおいては、コントローラ4は、まず、ライトデータを可逆圧縮してもよい。そして、コントローラ4は、圧縮されたライトデータ内の各特定のビットパターンを、メモリセルの消耗の少ない別の長いビットパターンに置き換えてもよい。
コントローラ4は、エンコードによって得られる第1符号化データ(図20における“endurance code”)にエラー訂正コード(ECC)を付加し、これによって第2符号化データ(図20における“endurance code”と“ECC”とを含むデータ)を生成し、この第2符号化データを物理ブロック内の利用可能ページにライトする。各ページはデータ領域と冗長領域とを含む。第2符号化データのビット長は、データ領域と冗長領域とを含むページのサイズにマッチする。
さらに、コントローラ4は、第1符号化データとエラー訂正コード(ECC)の比率を、ライトデータがどの領域(ネームスペース)にライトされるかに応じて、自動的に変更する。
第1符号化データ(endurance code)が長くなるほど、メモリセルを激しく消耗させる特定の符号の出現頻度が減少される。したがって、第1符号化データ(endurance code)が長くなるほど、1回の書き込み当たりのメモリセルの消耗を抑制することができる。
例えば、ライトデータがHotデータ用の領域にライトされるべきライトデータである場合、コントローラ4は、Hotデータ用の領域の耐久性(DWPD)を高めるために、より長い第1符号化データとより短いエラー訂正コードの組み合わせを含む第2符号化データが得られるように第1符号化データとエラー訂正コードの比率を制御する。つまり、Hotデータのライトにおいては、信頼性(データリテンション)よりも耐久性を優先するエンコード方法が利用される。
一方、ライトデータがColdデータ用の領域にライトされるべきライトデータである場合、コントローラ4は、Coldデータ用の領域にライトされるデータのデータリテンションを伸ばすために、より短い第1符号化データとより長いエラー訂正コードの組み合わせを含む第2符号化データが得られるように第1符号化データとエラー訂正コードの比率を制御する。つまり、Coldデータのライトにおいては、耐久性よりも信頼性(データリテンション)を優先するエンコード方法が利用される。
本実施形態では、図20に示されているように、書き換え頻度(更新の頻度)が高いネームスペース(領域)ほど、ECCのビット長が短くなり、代わりに第1符号化データ(エンデュランスコード)のビット長が長くなる。また、書き換え頻度(更新の頻度)が低いネームスペース(領域)ほど、ECCのビット長が長くなり、代わりに第1符号化データ(エンデュランスコード)のビット長が短くなる。
ECCのビット長が長くなるほど、訂正可能なビットの数が増えるので、信頼性(データリテンション)が改善される。通常、時間の経過とともに、ビットエラーレートは増加する。したがって、訂正可能なビットの数の増加は、データリテンションを改善することができる。
一方、上述したように、エンデュランスコードのビット長が長くなるほど、ページ内のメモリセル群の消耗を抑えることができるので、耐久性が改善される。
図21は、SSD3によって実行されるエンコード処理およびデコード処理を示す。
SSD3のコントローラ4は、エンデュランスコードエンコーダ91、ECCエンコーダ92、エンデュランスコードデコーダ93、およびECCデコーダ94を含む。
ECCエンコーダ92およびECCデコーダ94は、ECCを生成するECCエンコード処理およびエラー訂正のためのECCデコード処理をそれぞれ実行する。ECCエンコーダ92においては、ECCを生成するために組織符号が使用される。組織符号としては、例えば、ハミング符号、BHC符号、リードソロモン符号、等がある。
エンデュランスコードエンコーダ91およびエンデュランスコードデコーダ93は、メモリセルの消耗を抑制するためのエンコード処理およびこのエンコード処理に対応するデコード処理を実行する。エンデュランスコードエンコーダ91においては、第1符号化データ(エンデュランスコード)を生成するために、非組織符号であるエンデュランスコードが使用される。エンデュランスコードエンコーダ91においては、上述したように、メモリセルを激しく消耗させる特定の符号(例えば“C”レベルに対応するビットパターン)が、別の長い符号(例えば、“B−B”に対応した長いビットパターン、等)に変換される。つまり、このエンコード処理は、符号語を伸張する伸張処理である。
図22は、エンデュランスコードエンコーダ91の構成例を示す。
エンデュランスコードエンコーダ91は、エントロピー解析部911、圧縮部912、探索部914、置き換え部915、符号長チェック部916、及び出力部917等を含む。
エントロピー解析部911は、ライトデータ内に出現するビットパターンそれぞれの出現回数(または出現確率)を求める。圧縮部912は、エントロピー解析部911の解析結果に基づきコードブック913を生成し、コードブック913を使用して、ライトデータを可逆圧縮する。コードブック913は、ライトデータ内に出現するビットパターンそれぞれとこれらビットパターンに対応する変換コードとの間の対応関係を示す。圧縮部912は、出現回数の多いビットパターンに短い変換コードを割り当てる。
探索部914は、メモリセルを激しく消耗させる特定の符号を求めて、圧縮データ(圧縮されたライトデータ)を例えばその最上位ビットから探索する。特定の符号は、例えば“C”レベルに対応するビットパターンであってもよい。置き換え部915は、探索部914によって探索された特定の符号を、別の長い符号(例えば、“B−B”に対応した長いビットパターン、等)に置き換える。これによって、圧縮データ内の特定の符号が、メモリセルの消耗が少ない別の長い符号に変換される。置き換え部915は、コードブック913を更新し、これによって、上述の特定の符号に対応するコードブック913内の特定の変換コードを、上述の別の長い符号に置き換える。
符号長チェック部916は、現在の圧縮データの符号長(ビット長)をチェックする。現在の圧縮データの符号長(ビット長)が予め決められた閾値(ターゲットビット長)よりも短い場合、探索および置き換えの処理が繰り返される。これにより、現在の圧縮データの符号長が最適化される。
ターゲットビット長は、ライトデータがライトされるべきネームスペース(領域)に応じて適応的に変更される。したがって、書き換え頻度(更新の頻度)が高いネームスペース(領域)ほど、符号化データ(エンデュランスコード)のビット長が長くなる。換言すれば、書き換え頻度(更新の頻度)が低いネームスペース(領域)ほど、符号化データ(エンデュランスコード)のビット長が短くなる。
出力部917は、最適化されたビット長の圧縮データを第1符号化データ(エンデュランスコード)として出力する。第1符号化データにはコードブック913が付加されても良い。
図23のフローチャートは、メモリセルの消耗を抑制するためのエンコード処理の手順を示す。
コントローラ4は、ライトデータ内の幾つかのビットパターンの出現回数を求め、これらビットパターンを出現回数の大きい順にソートする(ステップS1)。コントローラ4は、エントロピー解析の結果に基づき、各ビットパターンを圧縮するための変換コードを含むコードブック913を生成し、そしてコードブック913を使用してライトデータを可逆圧縮する(ステップS2)。
コントローラ4は、この圧縮データをメモリセルの消耗を抑制するためのコードを使用してエンコードすることによって、符号化データを生成する。
この場合、コントローラ4は、まず、圧縮データから、メモリセルを消耗させるある特定の符号(特定のビットパターン)を探索する(ステップS3)。コントローラ4は、探索されたこの符号(ビットパターン)をメモリセルの消耗の小さな長い別の符号(ビットパターン)に変換する(ステップS4)。コントローラ4は、探索されたこの特定の符号に対応するコードブック内の変換コードを更新する(ステップS5)。
コントローラ4は、現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも長いか否かを判定する(ステップS6)。ターゲットビット長は、データがライトされるべきネームスペース(領域)に応じて予め決定される。例えば、ネームスペースNS#1にライトされるデータ(Hotデータ)に関しては長いターゲットビット長が使用され、ネームスペースNS#nにライトされるデータ(Coldデータ)に関しては短いターゲットビット長が使用される。
現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも短いならば、ステップS3〜S5の処理が再度実行される。ステップS3〜S5の処理が多く繰り返されるほど、メモリセルを激しく消耗させる特定の符号(例えば“C”レベルに対応するビットパターン)の出現頻度を下げることができる。その分、符号化データのビット長はより長くなる。
現在の圧縮データ(符号化データ)のビット長がターゲットビット長よりも長くなったならば(ステップS6のYES)、コントローラ4は、符号化データの例えば末尾にコードブックを付加する(ステップS7)。
図24のフローチャートは、SSD3によって実行されるライト制御処理の手順を示す。
SSD3のコントローラ4は、受信されたライトデータがどの階層属性のネームスペース(領域)にライトされるべきライトデータであるかを判定し、この判定結果にしたがって、ライトデータをエンコードするためのエンコード方法を変更する。エンコード方法の変更は、エンデュランスコードとECCとの比率を制御することによって実行される。
すなわち、SSD3のコントローラ4がライトコマンドをホスト2から受信した時(ステップS101のYES)、コントローラ4は、ライトコマンド内のネームスペースIDによって指定される対象ネームスペース(領域)の階層属性(Hot/Warm/Middle/Cool/Cold)を判定する(ステップS102)。対象ネームスペース(領域)の階層属性は、対象ネームスペース(領域)のオーバープロビジョン領域のサイズ(ユーザ領域とオーバープロビジョン領域との比率等)に基づいて決定されてもよい。あるいは、もし対象ネームスペースの作成を要求した拡張ネームスペース管理コマンドがtier属性パラメータを含んでいたならば、コントローラ4は、このtier属性パラメータによって示される階層属性を、対象ネームスペースの階層属性であると判定しても良い。あるいは、ライトコマンドが、対象ネームスペースのIDに加え、対象ネームスペースの階層属性を示すパラメータを含んでいてもよい。
例えば、対象ネームスペースの階層属性がHotならば(ステップS103のYES)、つまりライトデータがネームスペースNS#1のIDに関連付けられていたならば、コントローラ4は、エンデュランスコードとECCとの比率を制御することによって信頼性よりも耐久性を優先するエンコード方法を使用して、ライトデータをエンコードする(ステップS104)。ここでのエンコード方法によれば、ライトデータは、より長いエンデュランスコードとより短いECCとの組み合わせを含むデータにエンコードされる。コントローラ4は、エンコードされたデータを、領域51内の物理ブロックの利用可能ページにライトする(ステップS105)。
例えば、対象ネームスペースの階層属性がColdならば(ステップS106のYES)、つまりライトデータがネームスペースNS#nのIDに関連付けられていたならば、コントローラ4は、エンデュランスコードとECCとの比率を制御することによって耐久性よりも信頼性を優先するエンコード方法を使用して、ライトデータをエンコードする(ステップS107)。ここでのエンコード方法によれば、ライトデータは、より短いエンデュランスコードとより長いECCとの組み合わせを含むデータにエンコードされる。コントローラ4は、エンコードされたデータを、領域55内の物理ブロックの利用可能ページにライトする(ステップS108)。
図25は、本実施形態のフラッシュアレイストレージの構成を示す。
このフラッシュアレイストレージは、ホスト2からは1台のストレージデバイスとして認識される。このフラッシュアレイストレージは、大容量化および高速化を実現するために、ストライピング制御される、複数のSSD、つまりSSD#1、SSD#2、SSD#3、…SSD#nを含む。
SSD#1、SSD#2、SSD#3、…SSD#nの各々は、不揮発性メモリを含む。さらに、SSD#1、SSD#2、SSD#3、…SSD#nの各々は、本実施形態のSSD3と同様のネームスペース管理機能を有している。
このフラッシュアレイにおいては、領域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)用に確保された幾つかの物理ブロックとを含む。
領域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)用に確保された幾つかの物理ブロックとを含む。
領域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)用に確保された幾つかの物理ブロックとを含む。
領域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)用に確保された幾つかの物理ブロックとを含む。
領域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)用に確保された幾つかの物理ブロックとを含む。
図26は、図25のフラッシュアレイストレージのハードウェア構成を示す。
フラッシュアレイストレージ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内の領域にライトされる。
このように、ライトデータは所定データサイズ(4Kバイト)単位でSSD#1、SSD#2、SSD#3、…SSD#nに分散される。例えば、ホスト2によってNS#1への1Mバイトのデータをライトすることが要求され場合、1Mバイトのデータは各々が所定データサイズ(4Kバイト)を有する複数のデータ部分に分割され、これらデータ部分がSSD#1、SSD#2、SSD#3、…SSD#nに並行してライトされてもよい。
このように、SSD#1、SSD#2、SSD#3、…SSD#nは並行にして動作するので、データライトのための性能を高めることができる。
フラッシュアレイコントローラ81は、図27に示されるように、フラッシュアレイストレージ80内ではなく、ホスト2内に設けられていてもよい。
図28は、フラッシュアレイストレージ80内のSSDそれぞれの容量とこれらSSDからある階層のために配分される容量の割合との関係を示す。
ここでは、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)用に確保されるべき物理ブロックの個数を決定する。
ここでは、SSD#1の容量が100GB、SSD#2の容量が200GB、SSD#3の容量が1TB、SSD#nの容量が100GBである場合を想定する。
フラッシュアレイコントローラ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に要求する。
図29は、図28の容量割り当てに対応するライト動作の例を示す。
ストライピング制御によって領域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内の領域にライトされる。
図30は、ホスト2として機能する情報処理装置のハードウェア構成例を示す。
この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ41、OS42およびファイルシステム43を含む。ファイルシステム43は、上述の階層管理部44として機能する。
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のSSD3が複数のコネクタ107Aにそれぞれ接続される。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
この情報処理装置においては、ホストソフトウェア(アプリケーションソフトウェアレイヤ41、OS42およびファイルシステム43)の制御の下、プロセッサ101は、以下の処理を実行する。
プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Hotデータ用のネームスペースNS#1(領域51)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Hotデータ用のネームスペースNS#1(領域51)に割り当てるべき物理ブロックの個数を示すパラメータを含む。
プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Warmデータ用のネームスペースNS#2(領域52)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Warmデータ用のネームスペースNS#2(領域52)に割り当てるべき物理ブロックの個数を示すパラメータを含む。
同様にして、プロセッサ101は、拡張ネームスペース管理コマンドをSSD3に送出して、Coldデータ用のネームスペースNS#n(領域55)をSSD3内に作成する。拡張ネームスペース管理コマンドは、Cold用のネームスペースNS#n(領域55)に割り当てるべき物理ブロックの個数を示すパラメータを含む。
プロセッサ101は、ネームスペースNS#1のネームスペースIDをHotデータ用のネームスペースIDとして管理し、ネームスペースNS#2のネームスペースIDをWarmデータ用のネームスペースIDとして管理し、そしてネームスペースNS#nのネームスペースIDをColdデータ用のネームスペースIDとして管理する。
あるHotデータをSSD3にライトすることが必要な時、プロセッサ101は、ネームスペースNS#1のネームスペースIDを含むライトコマンドをSSD3に送出する。あるColdデータをSSD3にライトすることが必要な時、プロセッサ101は、ネームスペースNS#nのネームスペースIDを含むライトコマンドをSSD3に送出する。
図31は、複数のSSD3とホスト2とを含む情報処理装置の構成例を示す。
この情報処理装置は、ラックに収容可能な薄い箱形の筐体201を備える。多数のSSD3は筐体201内に配置されても良い。この場合、各SSD3は筐体201の前面201Aに設けられたストロットに取り外し可能に挿入されてもよい。
システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。
以上説明したように、本実施形態によれば、複数種のデータを格納するための複数のネームスペース(領域)が管理され、さらに、確保すべき物理リソースの量(物理ブロックの個数)をネームスペース毎に指定するホスト2からの要求に基づいて、指定された個数の物理ブロックがこれらネームスペース用の物理リソースとして個別に割り当てられる。したがって、複数種のデータそれぞれの容量や更新頻度を考慮して、物理ブロック群を複数のネームスペース(領域)に容易に最適配分することができる。よって、ネームスペース(領域)毎に、格納すべきデータの更新の頻度に適した耐久性を実現でき、更新の頻度が高いデータ用のネームスペース(領域)のライトアンプリフィケーションを減少させることができるので、SSDの寿命の最大化を実現できる。
換言すれば、本実施形態によれば、更新の頻度が高いデータ用のネームスペース(領域)用に多くの量のオーバープロビジョン領域を確保したり、更新の頻度が低いデータ用のネームスペース(領域)用に少ない量のオーバープロビジョン領域を確保するといった制御を柔軟に行う事ができる。これにより、更新の頻度が高いデータ用のネームスペース(領域)のライトアンプリフィケーションを減少させることができるので、SSDの寿命の最大化を実現できる。
なお、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NANDメモリ、51、52、53、54、55…領域。

Claims (13)

  1. 複数の物理ブロックを含む不揮発性メモリと、
    異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数のネームスペースであって、少なくとも第1種類のデータを格納するための第1ネームスペースと、前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2ネームスペースとを含む複数のネームスペースを管理するコントローラとを具備し、
    前記コントローラは、確保すべき物理リソースの量をネームスペース毎に指定するホストデバイスからの要求に基づいて、第1の個数の物理ブロックを前記第1ネームスペース用の物理リソースとして割り当て、第2の個数の物理ブロックを前記第2ネームスペース用の物理リソースとして割り当てるように構成されている、メモリシステム。
  2. 前記コントローラは、
    前記第1の個数の物理ブロックの容量から前記第1ネームスペースのユーザ領域の容量を引いた残りの容量を前記第1ネームスペース用のオーバープロビジョン領域のために割り当て、
    前記第2の個数の物理ブロックの容量から前記第2ネームスペースのユーザ領域の容量を引いた残りの容量を前記第2ネームスペース用のオーバープロビジョン領域のために割り当てる請求項1記載のメモリシステム。
  3. 前記第2ネームスペースのユーザ領域の容量に対する前記第2ネームスペース用のオーバープロビジョン領域の容量の比率は、前記第1ネームスペースのユーザ領域の容量に対する前記第1ネームスペース用のオーバープロビジョン領域の容量の比率よりも低い請求項2記載のメモリシステム。
  4. 前記コントローラは、
    前記第1ネームスペースのIDに関連付けられたライトデータを前記第1ネームスペースに前記第1種類のデータのデータとしてライトし、
    前記第2ネームスペースのIDに関連付けられたライトデータを前記第2ネームスペースに前記第2種類のデータとしてライトするように構成されている請求項1記載のメモリシステム。
  5. 前記コントローラは、
    ネームスペースの作成を要求するネームスペース管理コマンドを前記ホストデバイスから受信し、前記ネームスペース管理コマンドは、確保されるべき物理ブロックの個数を指定するパラメータを含み、
    ネームスペースを作成し、
    前記パラメータによって指定された個数の物理ブロックを、前記作成されたネームスペースに割り当てるように構成されている請求項1記載のメモリシステム。
  6. 前記コントローラは、
    前記パラメータによって指定された個数の物理ブロックの割り当てが可能か否かを、前記不揮発性メモリの残り物理ブロックの個数に基づいて判定し、
    前記指定された個数の物理ブロックの割り当てが可能でない場合、エラーのレスポンスを前記ホストデバイスに通知するように構成されている請求項5記載のメモリシステム。
  7. 前記コントローラは、
    前記ホストデバイスによって前記第1ネームスペースにライトされたデータの量と前記第1ネームスペースのガベージコレクション動作によって前記第1ネームスペースにライトされたデータの量とをカウントすることによって前記第1ネームスペースのライトアンプリフィケーションを算出し、
    前記ホストデバイスによって前記第2ネームスペースにライトされたデータの量と前記第2ネームスペースのガベージコレクション動作によって前記第2ネームスペースにライトされたデータの量とをカウントすることによって前記第2ネームスペースのライトアンプリフィケーションを算出し、
    前記第1ネームスペースおよび前記第2ネームスペースにそれぞれ対応するライトアンプリフィケーションを前記ホストデバイスに提供するように構成されている請求項1記載のメモリシステム。
  8. 前記コントローラは、
    対象ネームスペースのガベージコレクションの開始を要求する制御コマンドを、前記ホストデバイスから受信し、
    前記対象ネームスペース用の物理ブロック群から、ガベージコレクションの対象物理ブロック群を選択し、
    有効データを前記対象物理ブロック群からコピー先フリーブロックにコピーするガベージコレクション動作を実行するように構成されている請求項1記載のメモリシステム。
  9. 前記コントローラは、
    ネームスペース毎に実行されるガベージコレクション動作によって作り出されたフリーブロック群を前記複数のネームスペースの共有フリーブロック群として管理し、
    前記フリーブロック群から最小のプログラム/イレーズ回数のフリーブロックを選択し、
    前記選択されたフリーブロックを、前記対象ネームスペースに対応する領域の前記コピー先フリーブロックとして割り当てるように構成されている請求項8記載のメモリシステム。
  10. 前記コントローラは、メモリセルの消耗を抑制するための第1のコーディングを使用してライトデータをエンコードして第1符号化データを生成し、前記第1符号化データにエラー訂正コードを付加することによって第2符号化データを生成し、前記第2符号化データを物理ブロックにライトするように構成され、
    前記コントローラは、さらに、前記第1符号化データと前記エラー訂正コードと比率を、ライトデータがライトされるべきネームスペースに応じて、変更するように構成されている請求項1記載のメモリシステム。
  11. 前記コントローラは、
    前記ライトデータが前記第1ネームスペースにライトされるべきライトデータである場合、第1の長さの第1符号化データと第2の長さのエラー訂正コードとを含む第2符号化データが得られるように前記第1符号化データと前記エラー訂正コードの比率を制御し、
    前記ライトデータが前記第2ネームスペースにライトされるべきライトデータである場合、前記第1の長さよりも短い第3の長さの第1符号化データと前記第2の長さよりも長い第4の長さのエラー訂正コードとを含む第2符号化データが得られるように前記第1符号化データと前記エラー訂正コードの比率を制御するように構成されている請求項10記載のメモリシステム。
  12. 前記コントローラは、不揮発性メモリを各々が含む複数のストレージデバイスに、データを分散させるためのストライピング制御を実行するように構成され、
    前記複数のネームスペースの各々は前記複数のストレージデバイスに跨がって配置されている請求項1記載のメモリシステム。
  13. 複数の物理ブロックを含む不揮発性メモリと、
    前記不揮発性メモリを、異なる更新頻度を有する複数種のデータをそれぞれ格納するための複数の領域であって複数のネームスペースにそれぞれ関連付けられている複数の領域に論理的に分割するように構成されたコントローラであって、前記複数の領域は、少なくとも、第1ネームスペースに関連付けられ、第1種類のデータを格納するための第1領域と、第2ネームスペースに関連付けられ、前記第1種類のデータよりも低い更新頻度を有する第2種類のデータを格納するための第2領域とを含む、コントローラとを具備し、
    前記コントローラは、
    確保すべき物理リソースの量をネームスペース毎に指定するホストデバイスからの要求に基づいて、第1の個数の物理ブロックを前記第1領域に割り当て、第2の個数の物理ブロックを前記第2領域に割り当て、
    前記第1ネームスペースのIDに関連付けられたライトデータを前記第1領域に前記第1種類のデータとしてライトし、
    前記第2ネームスペースのIDに関連付けられたライトデータを前記第2領域に前記第2種類のデータとしてライトするように構成されている、メモリシステム。
JP2015145712A 2015-07-23 2015-07-23 メモリシステム Active JP6403162B2 (ja)

Priority Applications (9)

Application Number Priority Date Filing Date Title
JP2015145712A JP6403162B2 (ja) 2015-07-23 2015-07-23 メモリシステム
EP15190795.3A EP3121730B1 (en) 2015-07-23 2015-10-21 Memory system for controlling nonvolatile memory
US14/949,078 US9830079B2 (en) 2015-07-23 2015-11-23 Memory system for controlling nonvolatile memory
CN201910603526.1A CN110321247B (zh) 2015-07-23 2015-12-07 内存系统
CN201510887983.XA CN106372001B (zh) 2015-07-23 2015-12-07 内存系统
US15/785,860 US10782879B2 (en) 2015-07-23 2017-10-17 Memory system for controlling nonvolatile memory
US17/010,487 US11429277B2 (en) 2015-07-23 2020-09-02 Memory system for controlling nonvolatile memory
US17/869,569 US11847318B2 (en) 2015-07-23 2022-07-20 Memory system for controlling nonvolatile memory
US18/386,631 US20240061574A1 (en) 2015-07-23 2023-11-03 Memory system for controlling nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015145712A JP6403162B2 (ja) 2015-07-23 2015-07-23 メモリシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018158365A Division JP6545876B2 (ja) 2018-08-27 2018-08-27 メモリシステム

Publications (2)

Publication Number Publication Date
JP2017027387A true JP2017027387A (ja) 2017-02-02
JP6403162B2 JP6403162B2 (ja) 2018-10-10

Family

ID=54337689

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015145712A Active JP6403162B2 (ja) 2015-07-23 2015-07-23 メモリシステム

Country Status (4)

Country Link
US (5) US9830079B2 (ja)
EP (1) EP3121730B1 (ja)
JP (1) JP6403162B2 (ja)
CN (2) CN106372001B (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018147490A (ja) * 2017-03-07 2018-09-20 三星電子株式会社Samsung Electronics Co.,Ltd. パフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法
JP2019008729A (ja) * 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2019057193A (ja) * 2017-09-22 2019-04-11 東芝メモリ株式会社 メモリシステム
JP2019057151A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
KR20190105414A (ko) * 2018-03-05 2019-09-17 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
JP2019169216A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 メモリシステム
JP2020198128A (ja) * 2020-08-31 2020-12-10 キオクシア株式会社 メモリシステム
JP2021007058A (ja) * 2020-10-23 2021-01-21 キオクシア株式会社 メモリシステムおよび制御方法
JPWO2021033681A1 (ja) * 2019-08-20 2021-02-25
KR20210054440A (ko) * 2019-11-05 2021-05-13 웨스턴 디지털 테크놀로지스, 인코포레이티드 구역화된 네임스페이스들에 대한 내구성 그룹들의 적용
JP2021121901A (ja) * 2020-01-31 2021-08-26 キオクシア株式会社 メモリシステムおよび制御方法
JP2021525924A (ja) * 2018-05-31 2021-09-27 マイクロン テクノロジー,インク. データの2つの部分を有するメモリのデータの再配置
JP2022548642A (ja) * 2019-09-17 2022-11-21 マイクロン テクノロジー,インク. タイプ付けされていないメモリアクセスのタイプ付けされているメモリアクセスに対するマッピング
JP2022548886A (ja) * 2019-09-17 2022-11-22 マイクロン テクノロジー,インク. メモリ名前空間へデータをバインドするためのメモリシステム
JP7451809B2 (ja) 2022-02-17 2024-03-18 キオクシア株式会社 方法

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
TWI625729B (zh) * 2015-11-25 2018-06-01 旺宏電子股份有限公司 資料配置方法及應用其之電子系統
US20170199698A1 (en) * 2016-01-08 2017-07-13 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Intra-storage device data tiering
KR102580820B1 (ko) * 2016-03-10 2023-09-20 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9817593B1 (en) * 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
KR102550343B1 (ko) * 2016-07-27 2023-07-03 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법
US10437799B2 (en) * 2016-12-02 2019-10-08 International Business Machines Corporation Data migration using a migration data placement tool between storage systems based on data access
US10437800B2 (en) * 2016-12-02 2019-10-08 International Business Machines Corporation Data migration using a migration data placement tool between storage systems based on data access
JP6765321B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
US10331584B2 (en) 2017-03-09 2019-06-25 Toshiba Memory Corporation Internal system namespace exposed through use of two local processors and controller memory buffer with two reserved areas
US10866912B2 (en) * 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US10866732B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Namespace re-sizing
CN108628762B (zh) * 2017-03-22 2021-05-28 北京忆恒创源科技有限公司 一种固态存储设备及其处理io命令的方法
US10115437B1 (en) * 2017-06-26 2018-10-30 Western Digital Technologies, Inc. Storage system and method for die-based data retention recycling
WO2019049129A1 (en) * 2017-09-07 2019-03-14 Kaminario Technologies Ltd. DIRECT READ CONTROL IN A DATA STORAGE SYSTEM
CN109558333B (zh) * 2017-09-27 2024-04-05 北京忆恒创源科技股份有限公司 具有可变额外存储空间的固态存储设备命名空间
CN109656833B (zh) * 2017-10-12 2022-11-11 慧荣科技股份有限公司 数据储存装置
US10782993B2 (en) * 2017-10-13 2020-09-22 Dell Products L.P. Systems and methods for secure runtime dynamic resizing of memory namespaces
US10503404B2 (en) 2017-10-23 2019-12-10 Micron Technology, Inc. Namespace management in non-volatile memory devices
US10642488B2 (en) 2017-10-23 2020-05-05 Micron Technology, Inc. Namespace size adjustment in non-volatile memory devices
US10437476B2 (en) 2017-10-23 2019-10-08 Micron Technology, Inc. Namespaces allocation in non-volatile memory devices
US10915440B2 (en) 2017-11-16 2021-02-09 Micron Technology, Inc. Namespace mapping optimization in non-volatile memory devices
US10678703B2 (en) 2017-11-16 2020-06-09 Micron Technology, Inc. Namespace mapping structual adjustment in non-volatile memory devices
US11580034B2 (en) 2017-11-16 2023-02-14 Micron Technology, Inc. Namespace encryption in non-volatile memory devices
US10223254B1 (en) 2017-11-16 2019-03-05 Micron Technology, Inc. Namespace change propagation in non-volatile memory devices
US20190188475A1 (en) * 2017-12-15 2019-06-20 SpokeHub, Inc. Social media systems and methods
US11132133B2 (en) 2018-03-08 2021-09-28 Toshiba Memory Corporation Workload-adaptive overprovisioning in solid state storage drive arrays
KR102586741B1 (ko) * 2018-04-23 2023-10-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200044461A (ko) * 2018-10-19 2020-04-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR102610821B1 (ko) * 2018-11-15 2023-12-06 삼성전자주식회사 내구성 저하를 판단하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작방법
CN109753240B (zh) * 2018-11-28 2021-12-21 上海威固信息技术股份有限公司 一种采用垃圾回收机制的数据存储方法
KR20200073604A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
US11188231B2 (en) * 2019-03-01 2021-11-30 International Business Machines Corporation Data placement on storage devices
CN112115067A (zh) 2019-06-21 2020-12-22 慧荣科技股份有限公司 闪存物理资源集合管理装置及方法及计算机可读取存储介质
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US11573708B2 (en) 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US11768613B2 (en) * 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US10942846B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
US11762798B2 (en) 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US11068165B2 (en) 2019-06-27 2021-07-20 Western Digital Technologies, Inc. Non-volatile memory data write management
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
JP7467064B2 (ja) * 2019-10-17 2024-04-15 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
US11169855B2 (en) * 2019-12-03 2021-11-09 Sap Se Resource allocation using application-generated notifications
KR20210077230A (ko) * 2019-12-17 2021-06-25 에스케이하이닉스 주식회사 메모리 시스템의 동작 방법 및 장치
JP2021114038A (ja) 2020-01-16 2021-08-05 キオクシア株式会社 メモリシステムおよび制御方法
KR20210097353A (ko) * 2020-01-30 2021-08-09 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11144328B2 (en) * 2020-02-03 2021-10-12 Dell Products L.P. System method to update failover process by running basic input/output (BIOS) system boot code from non-volatile memory express device (NVME)
JP7366795B2 (ja) 2020-02-14 2023-10-23 キオクシア株式会社 メモリシステムおよび制御方法
US20210373809A1 (en) * 2020-05-29 2021-12-02 Western Digital Technologies, Inc. Write Data-Transfer Scheduling in ZNS Drive
KR20220003786A (ko) 2020-07-02 2022-01-11 삼성전자주식회사 스토리지 장치의 동작 방법
US11262923B2 (en) * 2020-07-08 2022-03-01 Samsung Electronics Co., Ltd. Method for managing namespaces in a storage device using an over-provisioning pool and storage device employing the same
CN112181303A (zh) * 2020-09-29 2021-01-05 广东艾科技术股份有限公司 数据存储方法、装置、计算机设备和存储介质
CN114327240A (zh) * 2020-09-29 2022-04-12 慧荣科技股份有限公司 计算机可读存储介质、闪存存储器的数据存储方法及装置
US11455124B2 (en) * 2020-10-09 2022-09-27 Western Digital Technologies, Inc. Command prioritization to reduce latencies of zone commands
KR20220048569A (ko) 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 메모리 시스템에서 저장 공간을 제어하는 장치 및 방법
KR20220066601A (ko) 2020-11-16 2022-05-24 삼성전자주식회사 스토리지 장치, 상기 스토리지 장치를 포함하는 전자 시스템 및 상기 스토리지 장치의 동작 방법
US11726692B2 (en) * 2020-12-02 2023-08-15 International Business Machines Corporation Enhanced application performance using storage system optimization
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11693594B2 (en) * 2021-03-29 2023-07-04 Micron Technology, Inc. Zone striped zone namespace memory
TWI768799B (zh) * 2021-03-30 2022-06-21 宏碁股份有限公司 資料讀取方法及電子系統
US11775200B2 (en) 2021-04-19 2023-10-03 Western Digital Technologies, Inc. Control block management in storage devices
TWI811674B (zh) * 2021-05-06 2023-08-11 大陸商北京集創北方科技股份有限公司 快閃記憶體的操作方法、系統單晶片及資訊處理裝置
US20230031304A1 (en) * 2021-07-22 2023-02-02 Vmware, Inc. Optimized memory tiering
US11853565B2 (en) 2021-10-01 2023-12-26 Western Digital Technologies, Inc. Support higher number of active zones in ZNS SSD
KR20230050719A (ko) 2021-10-08 2023-04-17 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN113986140B (zh) * 2021-11-03 2023-10-27 深圳市源微创新实业有限公司 一种高传输率大容量云存储固态硬盘
JP2023136816A (ja) * 2022-03-17 2023-09-29 キオクシア株式会社 メモリシステム
WO2023201462A1 (en) * 2022-04-18 2023-10-26 Micron Technology, Inc. Namespace level valid translation unit count

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330850A (ja) * 1999-05-19 2000-11-30 Casio Comput Co Ltd フラッシュメモリ制御方法
JP2003345650A (ja) * 2002-05-23 2003-12-05 Mitsubishi Electric Corp フラッシュメモリシステム
JP2009503629A (ja) * 2005-06-08 2009-01-29 サンディスク アイエル リミテッド プログラム可能な耐久度を有するフラッシュメモリ
WO2010013445A1 (ja) * 2008-07-30 2010-02-04 パナソニック株式会社 不揮発性記憶装置、ホスト装置、不揮発性記憶システム、データ記録方法、およびプログラム
JP2010262640A (ja) * 2009-04-30 2010-11-18 Internatl Business Mach Corp <Ibm> 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム
US20120226962A1 (en) * 2011-03-04 2012-09-06 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
JP2013161222A (ja) * 2012-02-03 2013-08-19 Dainippon Printing Co Ltd Icカード、及びプログラム
WO2015052811A1 (ja) * 2013-10-10 2015-04-16 株式会社日立製作所 ストレージシステムおよびデータ記憶方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5477553A (en) * 1994-07-22 1995-12-19 Professional Computer Systems, Inc. Compressed memory address parity checking apparatus and method
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
TWI328350B (en) 2004-08-04 2010-08-01 Delta Electronics Inc Method for a driving circuit
US7603359B2 (en) * 2006-01-17 2009-10-13 International Business Machines Corporation Method and apparatus for maintaining federated name context bindings in a name space
US8479080B1 (en) * 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
CN102473140B (zh) * 2009-07-17 2015-05-13 株式会社东芝 存储器管理装置
US8677054B1 (en) * 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
JP2012058770A (ja) * 2010-09-03 2012-03-22 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
GB2513551B (en) * 2010-09-24 2018-01-10 Ibm High-speed memory system
US8510528B2 (en) * 2010-12-29 2013-08-13 Teradata Us, Inc. Differential data storage based on predicted access frequency
US9141528B2 (en) * 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
JP6016137B2 (ja) * 2011-05-24 2016-10-26 マーベル ワールド トレード リミテッド ソリッドステートドライブおよびその動作方法
FR2977047B1 (fr) * 2011-06-22 2013-08-16 Starchip Procede de gestion de l'endurance de memoires non volatiles.
WO2013048503A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9467512B2 (en) * 2012-01-17 2016-10-11 Intel Corporation Techniques for remote client access to a storage medium coupled with a server
US8832506B2 (en) * 2012-01-20 2014-09-09 International Business Machines Corporation Bit error rate based wear leveling for solid state drive memory
IN2014DN05977A (ja) * 2012-02-08 2015-06-26 Hitachi Ltd
US9953725B2 (en) * 2012-02-29 2018-04-24 Samsung Electronics Co., Ltd. Semiconductor memory devices and methods of operating the same
TWI447580B (zh) * 2012-04-03 2014-08-01 Phison Electronics Corp 管理記憶體空間的方法、記憶體控制器與記憶體儲存裝置
US8990670B2 (en) * 2012-09-28 2015-03-24 Intel Corporation Endurance aware error-correcting code (ECC) protection for non-volatile memories
US9071269B2 (en) * 2012-10-01 2015-06-30 Sandisk Technologies Inc. Encoding data for storage in a data storage device
US9542306B2 (en) * 2013-03-13 2017-01-10 Seagate Technology Llc Dynamic storage device provisioning
US9632926B1 (en) * 2013-05-16 2017-04-25 Western Digital Technologies, Inc. Memory unit assignment and selection for internal memory operations in data storage systems
CN104182350B (zh) * 2013-05-28 2017-07-21 中国银联股份有限公司 一种针对包括多个进程的应用的内存管理方法和装置
JP5649709B2 (ja) * 2013-10-29 2015-01-07 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム
CN104049918B (zh) * 2014-07-03 2016-12-07 浪潮集团有限公司 一种双控存储服务器的缓存管理方法
US9542119B2 (en) * 2014-07-09 2017-01-10 Toshiba Corporation Solid-state mass storage media having data volumes with different service levels for different data types
US10346039B2 (en) 2015-04-21 2019-07-09 Toshiba Memory Corporation Memory system
JP2017027388A (ja) * 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330850A (ja) * 1999-05-19 2000-11-30 Casio Comput Co Ltd フラッシュメモリ制御方法
JP2003345650A (ja) * 2002-05-23 2003-12-05 Mitsubishi Electric Corp フラッシュメモリシステム
JP2009503629A (ja) * 2005-06-08 2009-01-29 サンディスク アイエル リミテッド プログラム可能な耐久度を有するフラッシュメモリ
WO2010013445A1 (ja) * 2008-07-30 2010-02-04 パナソニック株式会社 不揮発性記憶装置、ホスト装置、不揮発性記憶システム、データ記録方法、およびプログラム
JP2010262640A (ja) * 2009-04-30 2010-11-18 Internatl Business Mach Corp <Ibm> 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム
US20120226962A1 (en) * 2011-03-04 2012-09-06 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
JP2013161222A (ja) * 2012-02-03 2013-08-19 Dainippon Printing Co Ltd Icカード、及びプログラム
WO2015052811A1 (ja) * 2013-10-10 2015-04-16 株式会社日立製作所 ストレージシステムおよびデータ記憶方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NVM EXPRESS REVISION 1.1B, JPN6018019450, 2 July 2014 (2014-07-02), pages 8 - 10, ISSN: 0003804728 *

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018147490A (ja) * 2017-03-07 2018-09-20 三星電子株式会社Samsung Electronics Co.,Ltd. パフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法
US10782903B2 (en) 2017-06-28 2020-09-22 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US10338839B2 (en) 2017-06-28 2019-07-02 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
JP2019008729A (ja) * 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステムおよび制御方法
US10545862B2 (en) 2017-09-21 2020-01-28 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11797436B2 (en) 2017-09-21 2023-10-24 Kioxia Corporation Memory system and method for controlling nonvolatile memory
JP2019057151A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
US11144451B2 (en) 2017-09-21 2021-10-12 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
JP2019057193A (ja) * 2017-09-22 2019-04-11 東芝メモリ株式会社 メモリシステム
JP7030463B2 (ja) 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
KR20190105414A (ko) * 2018-03-05 2019-09-17 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102503177B1 (ko) 2018-03-05 2023-02-24 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
JP2019169216A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 メモリシステム
JP2021525924A (ja) * 2018-05-31 2021-09-27 マイクロン テクノロジー,インク. データの2つの部分を有するメモリのデータの再配置
JP7232921B2 (ja) 2019-08-20 2023-03-03 株式会社ソニー・インタラクティブエンタテインメント ストレージ管理装置、ストレージの管理方法およびプログラム
JPWO2021033681A1 (ja) * 2019-08-20 2021-02-25
WO2021033681A1 (ja) * 2019-08-20 2021-02-25 株式会社ソニー・インタラクティブエンタテインメント ストレージ管理装置、ストレージの管理方法およびプログラム
JP2022548642A (ja) * 2019-09-17 2022-11-21 マイクロン テクノロジー,インク. タイプ付けされていないメモリアクセスのタイプ付けされているメモリアクセスに対するマッピング
JP2022548886A (ja) * 2019-09-17 2022-11-22 マイクロン テクノロジー,インク. メモリ名前空間へデータをバインドするためのメモリシステム
JP7427081B2 (ja) 2019-09-17 2024-02-02 マイクロン テクノロジー,インク. メモリ名前空間へデータをバインドするためのメモリシステム
KR20210054440A (ko) * 2019-11-05 2021-05-13 웨스턴 디지털 테크놀로지스, 인코포레이티드 구역화된 네임스페이스들에 대한 내구성 그룹들의 적용
US11726679B2 (en) 2019-11-05 2023-08-15 Western Digital Technologies, Inc. Applying endurance groups to zoned namespaces
JP2021121901A (ja) * 2020-01-31 2021-08-26 キオクシア株式会社 メモリシステムおよび制御方法
JP2022051902A (ja) * 2020-08-31 2022-04-01 キオクシア株式会社 メモリシステム
JP7342163B2 (ja) 2020-08-31 2023-09-11 キオクシア株式会社 メモリシステム
JP2020198128A (ja) * 2020-08-31 2020-12-10 キオクシア株式会社 メモリシステム
JP7102482B2 (ja) 2020-10-23 2022-07-19 キオクシア株式会社 メモリシステムおよび制御方法
JP2022121655A (ja) * 2020-10-23 2022-08-19 キオクシア株式会社 メモリシステムおよび制御方法
JP2021007058A (ja) * 2020-10-23 2021-01-21 キオクシア株式会社 メモリシステムおよび制御方法
JP7451809B2 (ja) 2022-02-17 2024-03-18 キオクシア株式会社 方法

Also Published As

Publication number Publication date
US20220350489A1 (en) 2022-11-03
US10782879B2 (en) 2020-09-22
CN110321247B (zh) 2023-05-26
JP6403162B2 (ja) 2018-10-10
CN110321247A (zh) 2019-10-11
US11847318B2 (en) 2023-12-19
EP3121730A1 (en) 2017-01-25
CN106372001B (zh) 2019-08-09
US20170024137A1 (en) 2017-01-26
US20240061574A1 (en) 2024-02-22
EP3121730B1 (en) 2021-07-14
US11429277B2 (en) 2022-08-30
US20180039417A1 (en) 2018-02-08
CN106372001A (zh) 2017-02-01
US9830079B2 (en) 2017-11-28
US20200401311A1 (en) 2020-12-24

Similar Documents

Publication Publication Date Title
US11847318B2 (en) Memory system for controlling nonvolatile memory
US10241859B2 (en) Memory system and method of controlling nonvolatile memory
JP6553566B2 (ja) メモリシステムおよび制御方法
TWI765289B (zh) 儲存系統
JP6414852B2 (ja) メモリシステムおよび制御方法
JP7074453B2 (ja) メモリシステムおよび制御方法
JP6414853B2 (ja) メモリシステムおよび制御方法
JP6716757B2 (ja) メモリシステムおよび制御方法
WO2018189858A1 (ja) ストレージシステム
JP6649452B2 (ja) メモリシステムおよび不揮発性メモリの制御方法
JP6545876B2 (ja) メモリシステム
JP6666405B2 (ja) メモリシステムおよび制御方法
JP6721765B2 (ja) メモリシステムおよび制御方法
JP6552701B2 (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180629

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

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180905

R150 Certificate of patent or registration of utility model

Ref document number: 6403162

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