JP2019179455A - 記憶装置及びコンピュータシステム - Google Patents
記憶装置及びコンピュータシステム Download PDFInfo
- Publication number
- JP2019179455A JP2019179455A JP2018069140A JP2018069140A JP2019179455A JP 2019179455 A JP2019179455 A JP 2019179455A JP 2018069140 A JP2018069140 A JP 2018069140A JP 2018069140 A JP2018069140 A JP 2018069140A JP 2019179455 A JP2019179455 A JP 2019179455A
- Authority
- JP
- Japan
- Prior art keywords
- data
- read
- buffer
- controller
- block
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Abstract
【課題】 アクセス性能及び信頼性を向上させる記憶装置を提供する。【解決手段】 実施形態によれば、記憶装置は、インターフェースを介してホストと接続可能である。記憶装置は、複数のブロックを含む不揮発性メモリと、不揮発性メモリに電気的に接続されたコントローラとを具備する。コントローラは、ホストからリードコマンドを受信した場合に、リードコマンドによって指定される第1のデータを不揮発性メモリの第1のブロックから読み出してホストに送信するとともに、第1のデータを第1のブロックではない不揮発性メモリの第2のブロックに書き込むように構成される。【選択図】 図1
Description
本発明の実施形態は、記憶装置及びコンピュータシステムに関する。
近年、不揮発性メモリを備えるストレージが広く普及している。このようなストレージの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
NAND型フラッシュメモリを用いて大容量の記憶装置を構築する場合においては、1つのメモリセルに複数ビットのデータを記録可能な多値度の高いNAND型フラッシュメモリが用いられる。例えば、1セルに3ビットのデータを記録するメモリセルはトリプルレベルセル(TLC)と呼ばれ、1セルに4ビットのデータを記録するメモリセルはクアッドレベルセル(QLC)と呼ばれる。
本発明が解決しようとする課題は、アクセス性能及び信頼性を向上させることができる記憶装置及びコンピュータシステムを提供することである。
実施形態によれば、記憶装置は、インターフェースを介してホストと接続可能である。記憶装置は、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、前記ホストからリードコマンドを受信した場合に、前記リードコマンドによって指定される第1のデータを前記不揮発性メモリの第1のブロックから読み出して前記ホストに送信するとともに、前記第1のデータを前記第1のブロックではない前記不揮発性メモリの第2のブロックに書き込むように構成される。
本実施形態において、多値度とは、1つのメモリセルに格納されるデータのビット数に関連する指標である。例えば、1つのメモリセルに格納されるデータのビット数が多いほど、多値度は高くなる。
多値度の高いNAND型フラッシュメモリにおいては、1チップあたりの容量が大きくなるにつれ、必要な容量を確保するためのチップ数は少なくなる。したがって、複数のチップに対し並列してアクセスされにくくなる(すなわち、アクセスの並列数が低下する)ため、NAND型フラッシュメモリへのアクセス性能は低下する。
一般的に、NAND型フラッシュメモリの多値度が高いほど読み出し(リード)、書き込み(ライト)、消去(イレーズ)にかかる時間が長くなる。また、多値度が高いほどデータリテンション期間が短くなり、信頼性が低下する。
SSDの読み出し速度を向上させるために、SSD内部にリードバッファが搭載される。SSDは、このリードバッファにデータをキャッシングすることにより、NAND型フラッシュメモリから直接データを読み出すよりも高速にデータを読み出すことができる。
通常、リードバッファにはSRAM,DRAMなどの揮発性メモリが用いられる。SRAM,DRAMは高価であり、SSDの容量に対してごく僅かな容量しか用意されない場合が多いため、リードバッファには多くのデータを格納することは出来ない。
また、上述のように多値度の高いNAND型フラッシュメモリほどデータリテンション期間が短くなるため、適切なタイミングでデータ保持のためのリフレッシュ動作が必要となる。従来、このリフレッシュ動作を効率的なタイミングで実行することはあまり考慮されておらず、例えば定期的に巡回を行うソフトウェア(もしくはファームウェア)による通知、又は、データの読み出し時にリトライ処理が行われたことをトリガとして実行されていた。
そこで、以下に説明する各実施形態においては、SSDにおける読み出し処理に着目し、SSDに対するデータの読み出し速度などのアクセス性能を向上するため、及び、適切なタイミングでリフレッシュ動作を行うためのSSDの構成及び処理について説明する。
より具体的には、例えばSSDは、多値度の高いブロックを対象に発行されたホストからの読み出し処理に対し、当該多値度の高いブロックからデータを読み出すとともに、読み出したデータをSSD内の別ブロック(又はバッファ)などにライトする。当該データのライト先のブロック(又はバッファ)は、揮発性メモリ又は多値度の低い不揮発性メモリにより構成される。そして、これ以降の当該データに対する読み出し処理は、当該データが格納されたブロック(又はバッファ)に対して行われる。
なお、読み出し元のブロックの多値度と、読み出したデータの書き込み先のブロック(又はバッファ)の多値度の差が大きいほど、当該データの2度目以降の読み出し速度が向上する。
また、リードコマンドをトリガにして読み出し対象のデータが別ブロックへライト(書き戻し)されることは、換言すれば、アクセス頻度の高いデータに対して適切なタイミングでリフレッシュ動作が行われることにもなる。
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
[第1の実施形態]
図1は、本実施形態に係るコンピュータシステム1の構成例を示すブロック図である。
図1は、本実施形態に係るコンピュータシステム1の構成例を示すブロック図である。
コンピュータシステム1は、ホスト(ホストデバイス)2と、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスとを含む。
ホスト2は、SSD3にアクセスする情報処理装置(コンピューティングデバイス)である。ホスト2は、大量且つ多様なデータをSSD3に保存するサーバ(ストレージサーバ)であってもよいし、パーソナルコンピュータであってもよい。半導体ストレージデバイスは、例えば、NAND型フラッシュメモリを備えたソリッドステートドライブ(SSD)3として実現されている。
SSD3は記憶装置であり、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。SSD3は、例えば、ダイレクト・アタッチド・ストレージ(DAS)としてホスト2に接続されている。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)などが使用され得る。
SSD3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。コントローラ4は、System−on−a−chip(SoC)のような回路によって実現され得る。SSD3は、揮発性メモリであるランダムアクセスメモリ、例えば、DRAM6を備えていてもよい。あるいは、SRAMのようなランダムアクセスメモリがコントローラ4に内蔵されていてもよい。
DRAM6などのランダムアクセスメモリには、例えば、NAND型フラッシュメモリ5から読み出されたデータを一時的に格納するためのバッファ領域であるリードバッファ31と、NAND型フラッシュメモリ5に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ32およびGCバッファ33と、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル(LUT)34のキャッシュ領域とが設けられている。
さらに、DRAM6などのランダムアクセスメモリには、処理中に用いられる各種の情報(例えば、ブロック管理情報35など)の格納領域が設けられてもよい。なお、DRAM6は、コントローラ4の内部に設けられていてもよい。LUT34は、論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。
NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(複数のNAND型フラッシュメモリダイ)を含んでいてもよい。
各チップは、メモリセルアレイを含む。このメモリセルアレイは、複数のNANDブロック(ブロック)B0〜Bm−1を含む。ブロックB0〜Bm−1は、消去単位として機能する。ブロックは「物理ブロック」又は「消去ブロック」と称されることもある。
ブロックB0〜Bm−1は複数のページ(物理ページ)を含む。つまり、ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。不揮発性メモリにおいては、データの読み出し及びデータの書き込みはページ単位で実行される。データの消去はブロック単位で実行される。
また、各チップは、メモリセル当たりに1ビットのデータを格納するシングルセル(SLC)及び/又は複数ビットを格納するメモリセルを用いて構成される。複数ビットを格納するメモリセルとしては、例えばマルチセル(MLC)、トリプルセル(TLC)、クアッドセル(QLC)などが用いられる。
また、NAND型フラッシュメモリ5は、例えばインプットバッファ36を含む。インプットバッファ36は、例えばSSD3がホスト2よりライトコマンドを受信した場合の、ライト対象となるデータ(ライトデータ)の格納先として用いられる。なお、インプットバッファは、NAND型フラッシュメモリ5の外部に備えられてもよい。
インプットバッファ36は、例えばNAND型フラッシュメモリ5の総容量の数パーセント程度の記憶容量を有する。また、リードバッファ31及びライトバッファ32は、例えばインプットバッファ36の100分の1倍程の記憶容量を有する。
インプットバッファ36には、多値度の低いNAND型フラッシュメモリが用いられることが好ましい。以下では、インプットバッファ36は、例えばSLCを用いて構成されるとする。
また、インプットバッファ36には、NAND型フラッシュメモリ5だけでなく、SRAM,DRAMといった揮発性メモリが用いられてもよい。
コントローラ4は、Toggle DDR、Open NAND Flash Interface(ONFI)のようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。NANDインタフェース13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。NANDインタフェース13は、複数のチャンネルを介して、NAND型フラッシュメモリ5内の複数のチップにそれぞれ接続されていてもよい。
コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして機能する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位の読み出し/書き込みとブロック単位の消去動作とを隠蔽するための処理、などが含まれる。論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、例えば、論理ブロックアドレス(LBA)が使用される。
論理ブロックアドレス(LBA)それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するLUT34を用いて実行される。コントローラ4は、ルックアップテーブルLUT34を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNAND型フラッシュメモリ5内の物理記憶位置を示す。アドレス変換テーブルLUT34は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
1つのページへのデータ書き込みは、1つの消去サイクル(プログラム/イレーズサイクル)当たり1回のみ可能である。このため、コントローラ4は、あるLBAに対応する更新データを、このLBAに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、LUT34を更新してこのLBAをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。以下では、LUT34から参照されているデータ(すなわち論理アドレスと紐付けられているデータ)を有効データと称する。また、どの論理アドレスとも紐付けられていないデータを無効データと称する。有効データは、後にホスト2から読み出される可能性があるデータである。無効データは、もはやホスト2から読み出される可能性が無いデータである。
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション(GC)、などが含まれる。
NAND型フラッシュメモリ5では、データの書き込み/読み出しがページ単位で行われ、消去がブロック単位で行われる。ブロックの消去には長い時間を要するが、NAND型フラッシュメモリ5内の各ブロックは、消去が行われるまで、同じ物理記憶位置にデータを上書きすることができないという特性を有する。
そのため、SSD3は、ホスト2から受信した書き込みデータを、NAND型フラッシュメモリ5上の新たな物理記憶位置に追記する書き込み方式により動作する。このような追記を進めた場合、データの書き込み先ブロックが枯渇するので、フリーブロックを生成するためのGCが行われる。
GCでは、既に書き込み済みのブロック(アクティブブロック)からGCソースブロックを選択し、GCソースブロックから有効データを集め、それを新しいブロック(GCデスティネーションブロック)に書き込み、有効データが元々格納されていたブロックをフリーブロックとする。フリーブロックは、消去処理を経ることにより、新たな書き込み先ブロックとして利用することができる。GCソースブロックには、有効データ数が少ないブロックが選択されることが多い。これは、フリーブロックの生成効率が良いためである。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14などを含んでもよい。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2から様々なコマンド、例えば、I/Oコマンド、各種制御コマンド、などを受信する回路として機能する。I/Oコマンドには、ライト(書き込み)コマンド、リード(読み出し)コマンド、アンマップコマンド(トリムコマンド)、フォーマットコマンド、フラッシュコマンドなどが含まれ得る。なお、ライトコマンドは、プログラムコマンドとも呼ばれる。フォーマットコマンドは、メモリシステム(SSD3)全体をアンマップするためのコマンドである。フラッシュコマンドは、メモリシステム内にキャッシュされている(バッファされている)ダーティデータ(ユーザデータおよび関連する管理データ)をNAND型フラッシュメモリ5に書き込むことですべてクリーンな状態にするためのコマンドである。
DRAMインタフェース14は、DRAM6のアクセスを制御するように構成されたDRAMコントローラとして機能する。DRAM6の記憶領域は、リードバッファ31、ライトバッファ32、GCバッファ33、LUT34、ブロック管理情報35、インプットバッファ36などを格納するために利用される。
CPU12は、ホストインタフェース11、NANDインタフェース13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROMなどに格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理などを実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
本実施形態において、CPU12は、例えばブロック管理部121、リード制御部123、ライト制御部125、GC制御部127として機能することができる。
ブロック管理部121は、SSD3内のブロック毎に、消去回数(プログラム/イレーズサイクル数)、消去順序番号、有効データ数(有効データ量)等を含むブロック管理情報35を管理する。ブロック管理部121は、例えば、各ブロックに対する書き込み動作、トリム(アンマップ)動作、消去動作等が行われる毎に、ブロック管理情報35を更新する。
リード制御部123は、論理アドレス(LBA)に対応するLUT34のエントリに基づいて、LBAに対応する物理アドレスを求め、NAND型フラッシュメモリ5からリードコマンドに応じたデータを読み出すことができる。
ライト制御部125は、ライトコマンドに応じてホスト2から受信されたユーザデータを、DRAM6上のライトバッファ32に蓄積する。ライト制御部125は、ユーザデータを蓄積するためのライトバッファ32の領域を予め確保しておき、確保できない間は、ホスト2からライトコマンドを受け付けないようにする。
そして、ライト制御部125は、ライトバッファ32内にNAND型フラッシュメモリ5の書き込み単位分のユーザデータが蓄積されたならば、NAND型フラッシュメモリ5のチップ(チップのデータラッチ)にその書き込み単位分のユーザデータを転送する。ライト制御部125は、ライトバッファ32内の、転送されたユーザデータが蓄積されていた領域を解放する。
次いで、ライト制御部125は、NAND型フラッシュメモリ5のチップにプログラムを指示する。すなわち、ライト制御部125は、NAND型フラッシュメモリ5のチップにプログラムコマンドを送ることにより、当該チップに対して、転送されたユーザデータを書き込み先ブロックにプログラムさせる。チップ内のメモリセルアレイ50は複数のブロックを含んでいる。ブロックは、有効データを格納していて、新たにデータを書き込むことができないブロック(アクティブブロック)と、有効データを格納しておらず、消去処理を経ることで新たなデータの書き込みに利用可能なブロック(フリーブロック)とに大別される。1つ以上のフリーブロックから、1個が選択され、消去処理を経ることで、書き込み先ブロックとして割り当てられる。書き込み先ブロックは、有効データを格納し得る。
GC制御部127も、GCバッファ33を用いて、上述したようなライト制御部125による書き込み動作と同様にして、NAND型フラッシュメモリ5への書き込みを行うことができる。GC制御部127は、有効データを格納しているアクティブブロック群からガベージコレクションソースブロック(GCソースブロック)を選択し、このGCソースブロック内の有効データを、フリーブロック群から書き込み先ブロックとして確保されたガベージコレクションデスティネーションブロック(GCデスティネーションブロック)に書き込む。
次に、ホスト2の構成について説明する。ホスト2は、DASとして接続されているSSD3にアクセスするための機能を有する。また、ホスト2は、ネットワーク(クラウド)上のストレージにアクセスするための機能を有していてもよい。
ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションレイヤ41、オペレーティングシステム(OS)42、ファイルシステム43等が含まれる。
一般に知られているように、オペレーティングシステム(OS)42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
ファイルシステム43は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。例えば、ZFS、Btrfs、XFS、ext4、NTFSなどがファイルシステム43として使用されてもよい。あるいは、ファイルオブジェクトシステム(例えば、Ceph Object Storage Daemon)、Key Value Store System(例えば、Rocks DB)がファイルシステム43として使用されてもよい。
様々なアプリケーションソフトウェアスレッドがアプリケーションレイヤ41上で実行される。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
アプリケーションレイヤ41がリードコマンドまたはライトコマンドのようなリクエストをSSD3に送出することが必要な時、アプリケーションレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをファイルシステム43に送出する。ファイルシステム43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。ファイルシステム43は、コマンドを、SSD3に送出する。SSD3からのレスポンスが受信された際、ファイルシステム43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションレイヤ41に送出する。
アプリケーションレイヤ41は、SSD制御部411を含む。SSD制御部411は、SSD3の各種制御のためにSSD3と通信するインタフェース機能を有する。SSD制御部411は、SSD3に対し、各種制御コマンド及びデータなどを送信する。
本実施形態においては、ホスト2よりSSD3に対してリードコマンドが発行された場合に、読み出し対象となるデータ(以下、リードデータと呼ぶ)がNAND型フラッシュメモリ5内の別のブロックに書き込まれる。以下、図2及び図3を用いて、本実施形態に係るコンピュータシステム1内のSSD3におけるデータフローについて説明する。
なお、図3はホスト2及びSSD3間のデータの流れを概念的に示したものであり、例えばコントローラ4、DRAM6などSSD3に含まれる一部の構成要素の記載は省略されている。また、図3の矢印A201〜A203は、データの流れを示している。
ステップS101において、SSD3のコントローラ4は、ホスト2よりリードコマンドを受信する。リードコマンドにより、読み出し対象となるデータの開始(先頭)LBAと、データ長が指定される。読み出し対象となるデータのLBA範囲(論理アドレス範囲)は、開始(先頭)LBAとデータ長とによって定まる。
ステップS102において、コントローラ4は、例えばリードコマンドにより指定されたLBAが(X)であるデータD1をNAND型フラッシュメモリ5より読み出し、リードバッファ31に書き込む(矢印A201)。なお、当該データD1は、ブロックBaに格納されているとする。
ステップS103において、コントローラ4は、リードバッファ31に格納されたデータD1をホストへ送信する(矢印A202)。
ステップS104において、コントローラ4は、例えばデータD1をNAND型フラッシュメモリ5内の「別ブロック」であるブロックBcに書き戻す。なお、ステップS103及びS104の処理は、どちらが先に実行されてもよい。
当該別ブロックは、リードキャッシュブロックとも呼ばれる。本実施形態においては、同一のLBA(X)のデータが、読み出し元のブロックBa上及び書き込み先のブロックBc(リードキャッシュブロック)上の2箇所に存在する。
ここで、本実施形態においては、ステップS102においてデータD1が読み出されるブロックBaの多値度と、ステップS104においてデータD1が書き込まれるブロックBc(リードキャッシュブロック)の多値度は異なる。より具体的には、ブロックBaの多値度は、ブロックBc(リードキャッシュブロック)の多値度よりも大きい。図3の例では、リードコマンドにより読み出されるデータD1は、QLCのブロックBaから読み出され、SLCのブロックBcに書き込まれる。
なお以下では、リードコマンドの対象となるデータD1が格納されているブロックの多値度はQLCであるとするが、例えばTLC,MLCなど他の多値度でもよい。
ステップS105において、コントローラ4は、データD1のLBAと、リードキャッシュブロック内の物理アドレスとの対応付けを管理するための第2のLUTを更新する。なお、DRAM6のLUT34は、データD1のLBAと、データD1が格納されているブロックBa内の物理アドレスとの対応付けを管理するためのLUTである。このため、ブロックBc(リードキャッシュブロック)に格納されたデータD1は、LUT34とは異なる第2のLUTで管理される必要がある。
また、ホスト2より読み出されたデータD1は、参照の局所性より、アクセス頻度が高いデータであり、ホスト2より何度も読み出される可能性が高い。
以下図4を用いて、上述のようにデータD1がブロックBcに書き込まれた後に、再度ホスト2からデータD1が読み出される際のデータフローについて説明する。
コントローラ4は、ホスト2からデータD1を読み出す旨のリードコマンドを受信した場合に、LUT34を探索する前に上記の第2のLUTを探索することにより、リードキャッシュブロック(ブロックBc)から当該データD1を読み出す(矢印A204,A205)。これにより、データD1は、ブロックBaより読み出される場合に比べ、高速に読み出される。また、多値度が低いブロックの方が、多値度の高いブロックに比べてデータリテンション期間が長いため、読み出されたデータD1の信頼性が向上する。
なお、リードキャッシュブロック(ブロックBc)に対しては、GCによるデータコピーを行わずに再利用する。すなわち、当該リードキャッシュブロックの最終ページまでデータが書かれた場合、コントローラ4は、第2のLUTをクリアし、当該リードキャッシュブロックをブロック消去する。
以上説明したように、本実施形態では、SSD3のNAND型フラッシュメモリ5において、データが格納される多値度の高いブロックとは別に、多値度の低いリードキャッシュブロックが確保される。そして、ホスト2からのリードコマンドに基づいてNAND型フラッシュメモリ5よりデータが読み出される際に、リードキャッシュブロックへ当該データが書き込まれる。これにより、次回以降のリードコマンドに対し、当該データはリードキャッシュブロックより読み出される。したがって、ホスト2は、SSD3に対しより多値度の低いブロックへ高速かつ信頼性の高いアクセスを行うことができる。
なお、本実施形態において、リードバッファ31は省略されてもよい。すなわち、コントローラ4は、リードバッファ31を経由することなくデータD1を読み出し、ホスト2に送信又はNAND型フラッシュメモリ5に書き込んでもよい。
[第2の実施形態]
本実施形態は、第1の実施形態の変形例である。第1の実施形態では、リードコマンドにより指定されたLBAのデータがリードキャッシュブロックに書き込まれたが、参照の局所性を考慮すると、当該データの周辺データについても同時にアクセスされることが多い。これは、例えばあるアプリケーション・プログラムにおいて、必要となるデータは所定の範囲のLBAに格納される可能性が高いためである。
本実施形態は、第1の実施形態の変形例である。第1の実施形態では、リードコマンドにより指定されたLBAのデータがリードキャッシュブロックに書き込まれたが、参照の局所性を考慮すると、当該データの周辺データについても同時にアクセスされることが多い。これは、例えばあるアプリケーション・プログラムにおいて、必要となるデータは所定の範囲のLBAに格納される可能性が高いためである。
本実施形態では、リードコマンドにより読み出されたデータの周辺のLBAのデータについても、リードキャッシュブロックへ書き込まれる。
なお、本実施形態に係るコンピュータシステム1の構成は、第1の実施形態と同様であるため、説明を省略する。
図5は、本実施形態に係るコンピュータシステム1内のSSD3における、データフローの一例を示すフローチャートである。
ステップS201において、SSD3のコントローラ4は、ホスト2よりリードコマンドを受信する。
ステップS202において、コントローラ4は、例えばリードコマンドにより指定されたデータD1、及び、データD1のLBA範囲(論理アドレス範囲)の周辺のLBA範囲のデータを、NAND型フラッシュメモリ5のブロックBaより読み出す。ここで、周辺のLBA範囲は、データD1のLBA範囲をLBA(x)〜LBA(y)とし、kを整数とすると、LBA(x−k)〜LBA(x−1)及び/又はLBA(y+1)〜LBA(y+k)により表される。読み出されたデータは、リードバッファ31へ書き込まれる。なお、データD1のデータ長が1の場合、xとyは等しくなる。
ステップS203において、コントローラ4は、リードバッファ31より、データD1(すなわち、リードコマンドにより指定されたLBAのデータ)を読み出し、当該データD1をホストへ送信する。
ステップS204において、コントローラ4は、ステップS104と同様に、リードバッファ31に格納されたデータをブロックBc(リードキャッシュブロック)へ書き込む。なお、ステップS203及びS204の処理は、どちらが先に実行されてもよい。
ステップS205において、コントローラ4は、ステップS105と同様に、第2のLUTのうちステップS204において書き込まれたデータに関連する箇所を更新する。
以上説明したように、本実施形態においては、ホスト2よりあるLBAに対してリードコマンドを受信した場合、当該リードコマンドが示す当該LBAのデータに加えて当該LBAの前後(又は周辺)の範囲のLBAのデータも合わせて読み出され、リードキャッシュブロックに書き込まれる。これにより、ホスト2のSSD3に対するアクセス性能がさらに向上する。
なお、第1の実施形態と同様に、本実施形態においてもリードバッファ31は省略可能である。
[第3の実施形態]
本実施形態は、第1及び第2の実施形態の変形例である。第1及び第2の実施形態では、リードコマンドにより読み出されたデータは、読み出し元のブロックに残る。すなわち、読み出されたデータは、読み出し元のブロック及びリードキャッシュブロックの両方に存在する。一方、本実施形態においては、読み出し元のブロックに存在するデータを削除する。すなわち、読み出されたデータは、リードキャッシュブロックにのみ存在する。
本実施形態は、第1及び第2の実施形態の変形例である。第1及び第2の実施形態では、リードコマンドにより読み出されたデータは、読み出し元のブロックに残る。すなわち、読み出されたデータは、読み出し元のブロック及びリードキャッシュブロックの両方に存在する。一方、本実施形態においては、読み出し元のブロックに存在するデータを削除する。すなわち、読み出されたデータは、リードキャッシュブロックにのみ存在する。
なお、本実施形態に係るコンピュータシステム1の構成は、第1及び第2の実施形態と同様であるため、説明を省略する。
図6は、本実施形態に係るコンピュータシステム1内のSSD3における、データフローの一例を示すフローチャートである。
ステップS301〜S304の処理は、図2のステップS101〜S104の処理と同様であるため、説明を省略する。
ステップS305において、コントローラ4は、読み出しのデータを削除し、LUT34がリードキャッシュブロック上を示すようLUT34を更新する。より具体的には、コントローラ4は、LUT34のうちデータD1が格納されていたブロックBa内の物理アドレスを、ブロックBc(リードキャッシュブロック)におけるデータD1のが書き込み先の物理アドレスに書き換える。このようにLUT34を書き換えることにより、読み出し元のデータは無効化される。
なお、リードキャッシュブロックの最終ページまでデータが書かれ、リードキャッシュブロックが再利用される場合において、LUT34がリードキャッシュブロックに格納されたデータを指す場合は、当該データはGC対象となる。この場合、当該データは、多値度の高いブロック(例えば、ブロックBa,Bbなど)へ書き込まれる。
以上説明したように、本実施形態では、読み出されたデータは読み出し元において無効化(すなわち、読み出し元より削除)され、書き込み先のリードキャッシュブロックに存在するものとして扱われる。すなわち、データが読み出される際には、当該データに対してリフレッシュ動作も実行されることになる。
一般的に、リフレッシュ動作は、データの種類によらず一律に所定の期間ごと又はタイミングで実行されることが多いが、本実施形態においては、当該データが読み出されるタイミングで、すなわち当該データへのアクセス頻度が高まる際にも当該データに対してリフレッシュ動作が行われる。これにより、SSD3は、より適切なタイミングでのリフレッシュ動作が可能となり、SSD3に格納されるデータの信頼性が向上する。
なお、第1の実施形態と同様に、本実施形態においてもリードバッファ31は省略可能である。
また、本実施形態の構成は、第2の実施形態と組み合されてもよい。すなわち、第2の実施形態においてリードキャッシュブロックに書き込まれた全てのデータ(リードデータと、リードデータの周辺のLBAを有するデータ)についてLUT34が書き換えられ、読み出し元のデータが無効化されるとしてもよい。
[第4の実施形態]
図7は、本実施形態に係るコンピュータシステム1内のSSD3における、データフローの第1の例を示す図である。
図7は、本実施形態に係るコンピュータシステム1内のSSD3における、データフローの第1の例を示す図である。
本実施形態においては、SSD3は、リードバッファ31、ライトバッファ32、NAND型フラッシュメモリ5の他、インプットバッファ36を備える。インプットバッファ36は、NAND型フラッシュメモリ5に含まれていてもよい。インプットバッファ36は、上述のように、ホスト2よりライトコマンドを受信した場合の、ライトデータの格納先として機能する。
また、上述のように、NAND型フラッシュメモリ5の多値度は、インプットバッファ36の多値度よりも大きいことが好ましい。以下では、NAND型フラッシュメモリ5はQLC、インプットバッファ36はSLCを用いて構成されるとする。
本実施形態においては、図2及び図3の構成と同様に、ホスト2よりリードコマンドを受信した場合に、リードデータがNAND型フラッシュメモリ5よりリードバッファに書き込まれ、当該リードバッファよりホスト2へリードデータが送信される。
また、ホスト2よりライトコマンドを受信した場合に、ライトデータがライトバッファに書き込まれ、当該ライトデータがインプットバッファに書き込まれ、最終的にNAND型フラッシュメモリ5に書き込まれる。
なお、本実施形態においては、リードバッファ31及びライトバッファ32などが含まれる構成とするが、リードバッファ31及びライトバッファ32は省略可能である。
以下、図8及び図9を用いて、本実施形態に係るコンピュータシステム1内のSSD3におけるデータフローについて説明する。
なお、図9は、図2と同様にホスト2及びSSD3間のデータの流れを概念的に示したものである。また、図3の矢印A401〜A403は、データの流れを示している。
SSD3のコントローラ4は、NAND型フラッシュメモリ5に格納済のデータを、LUT34などを用いて管理しているものとする。
ステップS401において、コントローラ4は、ホスト2が発行したリードコマンドを受信する。リードコマンドには、少なくともリードデータのLBAと、リード長であるNLB(Number of Logical Block)とが含まれる。
ステップS402において、コントローラ4は、リードコマンドに含まれるLBAに対応するデータが、リードバッファ31、ライトバッファ32及びインプットバッファ36のいずれかに含まれるか否かを確認する。
当該データが、リードバッファ31、ライトバッファ32及びインプットバッファ36のいずれかに含まれる場合には、コントローラ4は、ステップS405において、当該データをホストへ送信する。一方、当該データが、リードバッファ31、ライトバッファ32及びインプットバッファ36のいずれにも含まれない場合には、処理はステップS403へ進む。
ステップS403において、コントローラ4は、ホスト2が指定したデータのLBA及びNLBを用いてLUT34を探索することにより、当該データが格納されるNAND型フラッシュメモリ5上の物理アドレスを取得する。
ステップS404において、コントローラ4は、NAND型フラッシュメモリ5に対し、当該物理アドレスに格納されたデータを読み出すためのリードコマンドを発行し、当該データを読み出す。
次に、コントローラ4は、ステップS406において、リードバッファ31にリードデータを書き込む(矢印A401)とともに、ステップS405において、リードデータをホストへ送信する(矢印A402)。このステップS405及びステップS406の処理は、並列して実行されてもよい。
ステップS407において、コントローラ4は、リードデータをインプットバッファ36に書き込む(矢印A403)。なお、インプットバッファ36は、上述のようにSLCを用いて構成され、ホスト2からのライトデータの格納先でもある。
ステップS408において、コントローラ4は、当該リードデータがインプットバッファ36に格納されていることを示すデータを更新する。より具体的には、第3の実施形態で説明したように、LUT34を用いてインプットバッファ36に格納されるデータのLBAと当該データの物理アドレスとの対応が管理されている場合には、LUT34が更新される。また、第1及び第2の実施形態と同様に、第2のLUTなどによりインプットバッファ36に格納されるデータのLBAと当該データの物理アドレスとの対応が管理されている場合には、当該第2のLUTが更新される。
なお、ステップS406において、NAND型フラッシュメモリ5からのデータの読み出し処理に失敗した場合は、処理を終了する。読み出し処理に失敗した場合とは、例えば、ECC(Error Check and Correction)による誤り訂正に失敗した場合などである。
図10は、上述のようにリードデータがインプットバッファ36に書き込まれた後に、再度ホスト2から当該リードデータが読み出される際のデータフローを示す。
コントローラ4は、ホスト2からデータを読み出す旨のリードコマンドを受信した場合に、インプットバッファ36に当該データがあるか否かを確認し、当該データがある場合には、インプットバッファ36より当該データを読み出してホスト2に送信する(矢印A404)。なお、当該データがインプットバッファ36にない場合は、NAND型フラッシュメモリ5より当該データが読み出される。
また、コントローラ4は、インプットバッファ36に格納されたデータ量が例えば所定の閾値を超えた場合に、インプットバッファ36に格納されたデータをNAND型フラッシュメモリ5へ書き込む(矢印A405)。
以上説明したように、本実施形態においては、NAND型フラッシュメモリ5においてデータが格納されている多値度の高いブロックに加え、多値度の低いインプットバッファ36を含む。そして、ホスト2からのリードコマンドに基づいてNAND型フラッシュメモリ5よりデータが読み出される際に、インプットバッファ36へ当該データが書き込まれる。これにより、次回以降のリードコマンドに対し、当該データはインプットバッファ36より読み出される。したがって、ホスト2は、SSD3に対しより多値度の低いブロックへ高速かつ信頼性の高いアクセスを行うことができる。
また、本実施形態においては、リードバッファ31に代えてインプットバッファ36のみが用いられてもよい。すなわち、ステップS406の処理は省略されてもよい。インプットバッファ36が例えばSLCを用いたNAND型フラッシュメモリにより構成される場合、リードデータを全てインプットバッファ36に格納することによって、リードバッファ31として使用するDRAM6の容量を0にすることができる。一般に、DRAMよりもNAND型フラッシュメモリの方が安価であるため、上述のようにDRAM6の容量を削減することにより、SSD3のコストを低減することができる。
また、一般的に、DRAM6に格納されたデータは、例えばSSD3が低電力モードへ遷移すること、又は、SSD3の電源のオンもしくはオフ(すなわち、パワーサイクルを跨ぐこと)などにより消去される。したがって、インプットバッファ36にデータがキャッシュされることにより、インプットバッファ36のキャッシュとしての利用効果が高まる。
なお、ステップS407の処理において、コントローラ4は、インプットバッファ36に代えてライトバッファ32へリードデータを格納してもよい。ライトバッファ32は、上述のように、SRAM,DRAMなど揮発性のメモリで構成される。ライトバッファ32に格納されたリードデータは、コントローラ4の制御に基づき、インプットバッファ36に書き込まれ、最終的に多値度の高いブロックで構成されるNAND型フラッシュメモリ5に書き込まれ、不揮発化される。
このように、ライトバッファ32へリードデータが書き込まれることにより、例えば、NAND型フラッシュメモリ5より読み出されたリードデータが例えばリードモディファイライト(Read Modify Write)の対象である場合、すなわち、当該リードデータの一部の書き換えのために読み出されたデータである場合に、インプットバッファ36の書き換え回数を減らすことができる。
より具体的に説明する。例えば、当該リードモディファイライトの対象となるデータをインプットバッファ36へ書き込んでもすぐに書き換えられらるため、再度書き換え後のデータをインプットバッファ36へ書き込む必要がある。このため、NAND型フラッシュメモリで構成されるインプットバッファ36の書き換え可能回数を消費してしまう。一方、当該リードモディファイライトの対象となるデータを揮発性メモリ上で更新することにより、インプットバッファ36への不要な書き込みを防ぐことができる。
なお、コントローラ4は、ホスト2からのコマンドなどにより、リードデータをライトバッファ32へ書き込むか、又は、インプットバッファ36へ書き込むかを選択するとしてもよい。このように、リードデータごとに適切な書き込み先が選択されることにより、インプットバッファ36の書き換えによる負担を低減できる。
[第5の実施形態]
本実施形態は、第4の実施形態の変形例である。第4の実施形態では、ステップS406において、NAND型フラッシュメモリ5より読み出されたリードデータがリードバッファ31へ書き込まれた後、直ちにインプットバッファ36にも書き込まれた。一方、本実施形態においては、当該リードデータをインプットバッファ36に書き込むか否かが所定の条件に基づいて判定される。そして、当該条件が満たされたと判定された場合に、当該リードデータがインプットバッファ36に書き込まれる。
本実施形態は、第4の実施形態の変形例である。第4の実施形態では、ステップS406において、NAND型フラッシュメモリ5より読み出されたリードデータがリードバッファ31へ書き込まれた後、直ちにインプットバッファ36にも書き込まれた。一方、本実施形態においては、当該リードデータをインプットバッファ36に書き込むか否かが所定の条件に基づいて判定される。そして、当該条件が満たされたと判定された場合に、当該リードデータがインプットバッファ36に書き込まれる。
図11は、本実施形態に係るコンピュータシステム1内のSSD3における、データフローの一例を示すフローチャートである。
ステップS501〜S506の処理は、図8のステップS401〜S406の処理と同様であるため、説明を省略する。
ステップS507において、コントローラ4は、インプットバッファ36に書き込まれるリードデータがリフレッシュを必要としているか否かを判定する。より具体的には、コントローラ4は、例えば、リードデータがNAND型フラッシュメモリ5に書き込まれてからの期間を示す情報を管理し、当該情報に基づいて、当該リードデータがリフレッシュを必要としているか否かを判定してもよい。
当該リードデータがリフレッシュを必要としていないと判定された場合は、処理を終了する。一方、当該リードデータがリフレッシュを必要としていると判定された場合は、ステップS508において当該リードデータはインプットバッファ36に書き込まれる。
なお、インプットバッファ36に書き込まれたリードデータは、最終的にNAND型フラッシュメモリ5へ書き込まれる、すなわちリフレッシュされる。
ステップS508,S509の処理は、図8のステップS407,S408の処理と同様であるため、説明を省略する。
以上説明したように、本実施系形態において、コントローラ4は、リードデータのリフレッシュが必要か否かを判定し、リフレッシュが必要な場合に当該リードデータをインプットバッファ36に書き込む。これにより、SSD3は、効率よくリードデータのインプットバッファ36への書き込みを実行することができる。また、リードデータをインプットバッファ36に書き込む回数が低減されるため、インプットバッファ36の寿命を延ばすことができる。
[第6の実施形態]
本実施形態は、第5の実施形態の変形例である。本実施形態においては、リードデータをインプットバッファ36に書き込むか否かの判定が、第5の実施形態のステップS507において説明された条件と異なる条件に基づいて行われる。
本実施形態は、第5の実施形態の変形例である。本実施形態においては、リードデータをインプットバッファ36に書き込むか否かの判定が、第5の実施形態のステップS507において説明された条件と異なる条件に基づいて行われる。
図12は、本実施形態に係るコンピュータシステム1内のSSD3における、データフローの一例を示すフローチャートである。なお、ステップS601〜S606の処理は、図11のステップS501〜S506の処理と同様であるため、説明を省略する。
ステップS607において、コントローラ4は、リードデータをインプットバッファ36に書き込むか否かを判定する。
一般に、ホスト2よりライトコマンドを受信する毎に、SSD3の書き込み容量は増加する。上述の各実施形態においては、リードコマンドを受信した場合にも、リードデータがインプットバッファ36に書き込まれるため、SSD3への書き込み容量が増加する。すなわち、SSD3へのアクセスがあるたびに、書き込ま容量が増加してしまう。
そこで、ステップS607において、コントローラ4は、書き込み容量が所定の閾値を超えたか否かを確認し、書き込み容量が所定の閾値以下である場合に、当該リードデータをインプットバッファ36に書き込む。
また、コントローラ4は、ステップS607の処理を実行するために、SSD3内に書き込み容量を示すデータを記憶する。当該データは、例えばブロック管理情報35などに格納されてもよい。当該データは、NAND型フラッシュメモリ5に対して書き込まれる毎に更新されることが好ましい。
なお、所定の閾値は、例えばSSD3の耐久性、製品寿命などに関する指標に基づいて定められる。より具体的には、所定の閾値は、SSD3のDWPD(Drive Write Per Day)に基づいて定められてもよい。ここで、DWPDとは、SSD3が少なくとも保証寿命期間にわたり使用されるために、SSD3の全記憶容量を1単位として1日当たりに何単位の容量を書き換え可能であるかを示した指標である。なお、当該所定の閾値は、例えばSSD3の最大書き換え容量(TBW:Tera Byte Written)など、他の指標に基づいて定められてもよい。
ステップS608,S609の処理は、図11のステップS508,S509の処理と同様であるため、説明を省略する。
以上説明したように、本実施形態において、コントローラ4は、SSD3のDWPDなどに基づいた所定の閾値を設定し、当該所定の閾値と比較してSSD3内の書き込み容量に余裕がある場合に、インプットバッファ36にリードデータを書き込む。これにより、上記各実施形態のように無条件にリードデータをインプットバッファ36に書き込む場合に比べ、SSD3の耐久性を向上させることができる。
なお、本実施形態において、コントローラ4は、例えばSSD3の利用者ごとに、SSDの利用特性を示すデータを記憶し、SSD内部に格納してもよい。利用特性を示すデータとは、例えば、時間帯ごとのSSD3への書き込み容量、書き込み回数などに関する統計データである。コントローラ4は、上述のステップS607において、上述の書き込み容量に加えこの利用特性を示すデータを用いることにより、さらに柔軟に判定処理を実行可能である。
例えば、ある時点のSSD3の利用状況により、利用特性を示すデータが更新される。そして次の時点において、更新された利用特性を示すデータに基づいて、SSD3内部のリードデータをインプットバッファ36に書き込む処理の頻度などが補正されてもよい。
より具体的には、例えば、ある日にSSD3が大量のリードコマンドを受信したことにより、インプットバッファ36に大量のリードデータが書き込まれたとする。コントローラ4は、この日のSSD3の利用状況から、利用特性を示すデータを更新する。そして、コントローラ4は、当該更新された利用特性データを参照することにより、例えば次の日にはリードデータがインプットバッファ36に書き込まれる容量が減るよう(すなわち、書き込み処理を抑制するように)、当該書き込み処理の頻度を補正してもよい。
[第7の実施形態]
本実施形態は、第5及び第6の実施形態の変形例である。第5及び第6の実施形態では、SSD3のコントローラ4が所定の条件に基づいてリードデータをインプットバッファ36に書き込むか否かを判定した。一方、本実施形態においては、ホスト2がSSD3に対し、リードデータをインプットバッファ36に書き込むか否かを判定するために必要な情報を送信する。
本実施形態は、第5及び第6の実施形態の変形例である。第5及び第6の実施形態では、SSD3のコントローラ4が所定の条件に基づいてリードデータをインプットバッファ36に書き込むか否かを判定した。一方、本実施形態においては、ホスト2がSSD3に対し、リードデータをインプットバッファ36に書き込むか否かを判定するために必要な情報を送信する。
図13は、本実施形態に係るコンピュータシステム1内のSSD3における、データフローの一例を示すフローチャートである。
ステップS701において、SSD3は、ホスト2より発行されたリードコマンドを受信する。当該リードコマンドには、当該リードコマンド(又は読み出し処理)の種別に関する情報(以下、リード種別と呼ぶ)が含まれる。リード種別は、例えばリードコマンドがどのような用途に用いられるか、又は、リードデータもしくは読み出し処理がどのような性質のものであるかなどを示す情報であり、リードコマンドの発行元であるホスト2により生成される。
このリード種別には、例えば、リードコマンドが一度のみ必要なデータを読み出すために発行される予定である旨を示す第1の種別、リードコマンドがリードモディファイライトのために発行される予定である旨を示す第2の種別、リードコマンドが複数回読み出すために発行される予定である旨を示す第3の種別、リードコマンドが今後ホットデータとなるデータを読み出すために発行される予定である旨を示す第4の種別、及び、リードコマンドが今後コールドデータとなるデータを読み出すために発行される旨を示す第5の種別などが含まれる。
ここで、ホットデータとは、短い時間のうちに再度アクセスされるデータである。また、コールドデータは、一度アクセスされた後、しばらく(長時間)アクセスされないデータである。
このリード種別は、図14に示すように、例えばSSDの接続規格であるNVMe(Non-Volatile Memory Express)規格のデータセット・マネジメント・コマンドに含まれる「コンテキスト属性」を用いて表されてもよい。図14は、データセット・マネジメント・コマンドにおける、あるLBA範囲のデータのコンテキスト属性を示す。このコンテキスト属性は、指定されたLBA範囲のデータに関連する各種の属性を示す、例えば4バイト(32ビット)の情報である。
ホスト2は、例えば開始(先頭)LBAと、論理ブロック長に加え、この開始LBAと論理ブロック長により指定されたLBA範囲のコンテキスト属性をデータセット・マネジメント・コマンドに含める。
図14において、例えば[10]ビットは、当該データが書き込み対象であるか否かを示す1ビットの情報である。ホスト2は、例えばリードデータがリードモディファイライトの対象である場合に、この[10]ビットをオンする。すなわち、ホスト2は、当該属性情報の[10]ビットを用いて、リードデータが上記第2の種別であることをSSD2に通知可能である。
また、例えば[03:00]ビットは、アクセス頻度(Access Frequency)を示す4ビットの情報である。例えば、[03:00]ビットが“0001b”である場合は、当該データが通常の(典型的な)アクセス頻度で書き込み及び読み出しが実行されることを示している。同様に、例えば、[03:00]ビットが“0101b”である場合は、当該データが高頻度で書き込まれ、かつ高頻度で読み出されることを示している。
ホスト2は、例えばリードデータがホットデータである場合に、この[03:00]ビットを“0100b”又は“0101b”とする。これにより、リード種別が上記第4の種別であることが、SSD3に通知される。また、ホスト2は、例えばリードデータがコールドデータである場合に、この[03:00]ビットを“0010b”又は“0011b”とする。これにより、リード種別が上記第5の種別であることが、SSD3に通知される。
このリード種別は、他の方法により表されてもよい。例えば、リード種別は、リードコマンドに含まれていてもよい。より具体的には、リードコマンドに含まれるデータセット・マネジメント・フィールドの数ビットを用いて、上述の第1〜第5の種別が表されてもよい。また、このリード種別は、リードコマンドとは別のコマンドによりSSD3に通知されてもよい。
図13に戻り、ステップS702〜S706において、コントローラ4は、リードコマンドにより指定されるリードデータをNAND型フラッシュメモリ5より読み出し、リードバッファへ書き込むとともにホスト2に送信する。なお、ステップS702〜S706の処理は、ステップS602〜S606の処理と同様である。
ステップS707において、コントローラ4は、受信したリード種別が所定の条件を満たすか否かを判定し、当該条件を満たす場合に、リードデータをインプットバッファ36へ書き込む。より具体的には、コントローラ4は、リード種別に基づき、例えば以下(A)〜(E)のように、リードデータのインプットバッファ36への書き込みを制御する。
(A)上記第1の情報を受信した場合、すなわち当該リードデータに対する読み出しが一度だけである場合、対象のデータはホットデータではない可能性がある。したがって、コントローラ4は、当該リードデータをインプットバッファ36に書き込まない。
(B)上記第2の情報を受信した場合、すなわち当該リードデータを用いてリードモディファイライトが行われる場合、当該リードデータは古くなる可能性が高くなる。したがって、コントローラ4は、当該リードデータをインプットバッファ36に書き込まない。
(C)上記第3の情報を受信した場合、すなわち当該リードデータが複数回読み出される場合、当該リードデータはホットデータである可能性が高い。したがって、コントローラ4は、当該リードデータをインプットバッファ36へ書き込む。これにより、当該リードデータはNAND型フラッシュメモリ5からではなく、積極的にインプットバッファ36から読み出される。
(D)上記第4の情報を受信した場合、すなわちリードデータがホットデータである場合、コントローラ4は、当該リードデータをインプットバッファ36へ書き込む。
(E)上記第5の情報を受信した場合、すなわちリードデータがコールドデータである場合、コントローラ4は、当該リードデータをインプットバッファ36へ書き込まない。
なお、コールドデータは、ホスト2より続けて参照される可能性が低いため、インプットバッファ36へ書き込まないことにより、インプットバッファ36への不要な書き込みを避けることができる。
また、ホスト2からのライトコマンドにより指定され、インプットバッファ36に書き込まれるライトデータはホットデータである。ここで、一般に、コールドデータとホットデータが混在するブロックにおいては、GC効率が低下する。したがって、本実施形態においては、コールドデータをインプットバッファ36へ書き込まないことより、インプットバッファ36のGC効率の低下を防ぐことができる。
ステップS708,S709の処理は、図12のステップS608,S609の処理と同様であるため、説明を省略する。
以上説明したように、本実施形態において、ホスト2は、リード種別をSSD3に通知する。そして、SSD3は、当該情報に基づいてリードデータをインプットバッファ36に書き込むか否かを判定する。これにより、SSD3は、インプットバッファ36への不要な書き込みを抑止することができる。
また、インプットバッファ36が例えばSLCを用いたNAND型フラッシュメモリにより構成される場合、リードコマンドの種別に応じてインプットバッファ36にデータを書き込むことにより、リードバッファ31として使用するDRAM6の容量を減らすことができる。これにより、SSD3のコストを低減することができる。
[第8の実施形態]
本実施形態は、第7の実施形態の変形例である。本実施形態においても第7の実施形態と同様に、ホスト2がSSD3に対し、リードデータをインプットバッファ36に書き込むか否かを判定するために必要な情報を送信する。
本実施形態は、第7の実施形態の変形例である。本実施形態においても第7の実施形態と同様に、ホスト2がSSD3に対し、リードデータをインプットバッファ36に書き込むか否かを判定するために必要な情報を送信する。
図15は、本実施形態に係るコンピュータシステム1内のSSD3における、データフローの一例を示すフローチャートである。
ステップS801において、SSD3は、ホスト2より発行されたリードコマンドを受信する。当該リードコマンドには、インプットバッファ36の利用の有無を示す情報が含まれる。
インプットバッファ36の利用の有無を示す情報は、リードコマンドの発行元であるホスト2により生成される。当該情報は、例えば、インプットバッファ36を利用する旨を示す情報、インプットバッファ36を利用しない旨を示す情報、又は、インプットバッファ36の利用の有無をSSD3の判断に任せる旨を示す情報などのうちいずれかの情報を含む。
このインプットバッファ36の利用の有無を示す情報は、リードコマンドに含まれることが好ましい。例えばホスト2は、当該情報をリードコマンドの予約(Reserved)領域の数ビットを用いて表してもよい。また、例えばホスト2は、当該情報を、当該リードデータに対して高速にアクセスするか否かを指定することにより表してもよい。
また、このリード種別は、リードコマンドとは別のコマンドによりSSD3に通知されてもよい。
ステップS802〜S806の処理は、ステップS702〜S706の処理と同様であるため、説明を省略する。
ステップS807において、コントローラ4は、インプットバッファ36の利用の有無を示す情報を確認し、リードデータをインプットバッファ36に書き込むか否かを判定する。なお、当該情報により、インプットバッファ36の利用の有無がSSD3の判断に委ねられている場合は、コントローラ4は、例えば第4〜第6の実施形態に示した処理により、インプットバッファ36の利用の有無を判定してもよい。
ステップS808,S809の処理は、図13のステップS708,S709の処理と同様であるため、説明を省略する。
以上説明したように、本実施形態によれば、ホスト2は、インプットバッファ36の利用の有無を示す情報をSSD3に通知する。SSD3は、当該情報に基づいてリードデータをインプットバッファ36に書き込むか否かを判定する。すなわち、SSD3はインプットバッファ36の利用の有無の判定をホスト2に委ねることができるため、SSD3の処理負荷を低減できる。また、ホスト2が当該判定を行うため、インプットバッファ36への不要な書き込みをより確実に抑止することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…コンピュータシステム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、10…バス、11…ホストI/F、12…CPU、13…NAND I/F、14…DRAM I/F、31…リードバッファ、32…ライトバッファ、33…GCバッファ、34…LUT、35…ブロック管理情報、36…インプットバッファ、41…アプリケーションレイヤ、42…オペレーティングシステム、43…ファイルシステム、121…ブロック管理部、123…リード制御部、125…ライト制御部、127…GC制御部、411…SSD制御部、B0〜Bm−1…ブロック、P0〜Pn−1…ページ。
Claims (17)
- インターフェースを介してホストと接続可能な記憶装置であって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、
を具備し、
前記コントローラは、前記ホストからリードコマンドを受信した場合に、前記リードコマンドによって指定される第1のデータを前記不揮発性メモリの第1のブロックから読み出して前記ホストに送信するとともに、前記第1のデータを前記第1のブロックではない前記不揮発性メモリの第2のブロックに書き込むように構成される
記憶装置。 - 前記第1のブロックの多値度と、前記第2のブロックの多値度とは異なる
請求項1に記載の記憶装置。 - 前記第1のブロックの多値度は、前記第2のブロックの多値度よりも高い
請求項1又は請求項2に記載の記憶装置。 - 前記コントローラは、前記第1のブロックから前記第1のデータを読み出す際に、前記第1のデータとともに、前記第1のデータの論理アドレス範囲の周辺の論理アドレス範囲に対応する第2のデータを読み出し、前記第1のデータ及び前記第2のデータを前記第2のブロックに書き込むように構成される
請求項1乃至請求項3のいずれか一項に記載の記憶装置。 - 複数の論理アドレスと、前記不揮発性メモリの複数の物理アドレスとのマッピングを管理するアドレス変換テーブルと、
を具備し、
前記コントローラは、前記第1のデータを前記第2のブロックに書き込む際に、前記アドレス変換テーブルを更新することによって、前記第1のデータの論理アドレスに前記第1のデータの書き込み先の物理アドレスをマッピングするように構成される
請求項1乃至請求項3のいずれか一項に記載の記憶装置。 - 前記コントローラは、前記第1のデータを前記第2のブロックに書き込んだ後、前記ホストから前記第1のデータを指定したリードコマンドを受信した場合に、前記不揮発性メモリの前記第2のブロックから前記第1のデータを読み出して前記ホストに送信する
請求項1乃至請求項5のいずれか一項に記載の記憶装置。 - インターフェースを介してホストと接続可能な記憶装置であって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、
前記不揮発性メモリの多値度よりも低い多値度を有し、前記ホストから前記不揮発性メモリへ書き込まれるデータを受信した場合に、当該データを格納するバッファと、
を具備し、
前記コントローラは、前記ホストからリードコマンドを受信した場合に、前記リードコマンドによって指定される第1のデータを前記不揮発性メモリの第1のブロックから読み出して前記ホストに送信するとともに、前記第1のデータを前記バッファに書き込むように構成される
記憶装置。 - 前記コントローラは、前記第1のデータのリフレッシュが必要であると判定した場合に、前記第1のデータを前記バッファに書き込み、前記第1のデータのリフレッシュが必要でないと判定した場合に、前記第1のデータを前記バッファに書き込まないように構成される
請求項7に記載の記憶装置。 - 前記コントローラは、前記不揮発性メモリに対する書き込み容量を記憶し、前記書き込み容量が所定の閾値以下である場合に、前記第1のデータを前記バッファに書き込み、前記書き込み容量が前記所定の閾値以下でない場合に、前記第1のデータを前記バッファに書き込まないように構成される
請求項7に記載の記憶装置。 - 前記所定の閾値は、前記不揮発性メモリの全記憶容量を1単位として1日当たりに何単位の容量を書き換え可能であるかを示した指標であるDWPD(Drive Write Per Day)に基づいて設定される
請求項9に記載の記憶装置。 - 前記コントローラは、前記ホストから前記リードコマンド又は前記リードコマンドに対応する読み出し処理の種別を示す情報を受信した場合に、前記情報に基づいて前記第1のデータを前記バッファに書き込むか否かを判定するように構成される
請求項7に記載の記憶装置。 - 前記コントローラは、前記情報が、前記第1のデータに対する前記読み出し処理が複数回行われ、かつ、リードモディファイライトの対象でないことを示す場合に、前記第1のデータを前記バッファに書き込むように構成される
請求項11に記載の記憶装置。 - 前記コントローラは、前記ホストから前記バッファの利用の有無を示す情報を受信した場合であって、かつ、前記情報が前記バッファを利用する旨を示す場合に、前記第1のデータを前記バッファに書き込み、前記ホストから受信した前記情報が前記バッファを利用しない旨を示す場合に、前記第1のデータを前記バッファに書き込まないように構成される
請求項7に記載の記憶装置。 - 前記コントローラは、前記第1のデータを前記バッファに書き込んだ後、前記ホストから前記第1のデータを指定したリードコマンドを受信した場合に、前記バッファから前記第1のデータを読み出して前記ホストに送信する
請求項7乃至請求項13のいずれか一項に記載の記憶装置。 - コンピュータと、
インターフェースを介して前記コンピュータに接続可能な記憶装置と
を具備し、
前記記憶装置は、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、
前記不揮発性メモリの多値度よりも低い多値度を有し、前記コンピュータから前記不揮発性メモリへ書き込まれるデータを格納するバッファと、
を具備し、
前記コンピュータは、前記記憶装置に対し、第1のデータを読み出すための第1の情報と、前記第1のデータを前記バッファに書き込むか否かを判定するための第2の情報とを含むリードコマンドを送信し、
前記コントローラは、前記第1の情報により指定される第1のデータを前記不揮発性メモリの第1のブロックから読み出して前記コンピュータに送信するとともに、前記第2の情報に基づいて、前記第1のデータを前記バッファに書き込むか否かを判定するように構成される
コンピュータシステム。 - 前記第2の情報は、前記リードコマンド又は前記リードコマンドに対応する読み出し処理の種別を示す情報である、
請求項15に記載のコンピュータシステム。 - 前記第2の情報は、前記バッファの利用の有無を示す情報である
請求項15に記載のコンピュータシステム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018069140A JP2019179455A (ja) | 2018-03-30 | 2018-03-30 | 記憶装置及びコンピュータシステム |
TW107123306A TWI699650B (zh) | 2018-03-30 | 2018-07-05 | 記憶裝置及電腦系統 |
CN201810839569.5A CN110321065B (zh) | 2018-03-30 | 2018-07-27 | 存储装置及计算机系统 |
US16/126,582 US10936203B2 (en) | 2018-03-30 | 2018-09-10 | Memory storage device and system employing nonvolatile read/write buffers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018069140A JP2019179455A (ja) | 2018-03-30 | 2018-03-30 | 記憶装置及びコンピュータシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019179455A true JP2019179455A (ja) | 2019-10-17 |
Family
ID=68056208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018069140A Pending JP2019179455A (ja) | 2018-03-30 | 2018-03-30 | 記憶装置及びコンピュータシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US10936203B2 (ja) |
JP (1) | JP2019179455A (ja) |
CN (1) | CN110321065B (ja) |
TW (1) | TWI699650B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021182178A (ja) * | 2020-05-18 | 2021-11-25 | Necプラットフォームズ株式会社 | ストレージシステム、ストレージ制御方法およびストレージ制御プログラム |
US11726705B2 (en) | 2020-03-23 | 2023-08-15 | Kioxia Corporation | Semiconductor device |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10726930B2 (en) * | 2017-10-06 | 2020-07-28 | Western Digital Technologies, Inc. | Method and system for a storage (SSD) drive-level failure and health prediction leveraging machine learning on internal parametric data |
US10852979B1 (en) * | 2019-06-19 | 2020-12-01 | Dell Products L.P. | System and method of utilizing a non-volatile solid state storage device |
US11119914B2 (en) * | 2019-11-15 | 2021-09-14 | Micron Technology, Inc. | Method of operating a memory with dynamically changeable attributes |
US11940935B2 (en) * | 2021-04-19 | 2024-03-26 | Mellanox Technologies, Ltd. | Apparatus, method and computer program product for efficient software-defined network accelerated processing using storage devices which are local relative to a host |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6941505B2 (en) * | 2000-09-12 | 2005-09-06 | Hitachi, Ltd. | Data processing system and data processing method |
JP2004280752A (ja) * | 2003-03-19 | 2004-10-07 | Sony Corp | データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム |
US7979627B2 (en) | 2007-05-14 | 2011-07-12 | Buffalo Inc. | Storage device with binary and multivalued memory |
JP4781373B2 (ja) * | 2007-05-14 | 2011-09-28 | 株式会社バッファロー | 記憶装置 |
JP4746658B2 (ja) | 2008-09-29 | 2011-08-10 | 株式会社東芝 | 半導体記憶システム |
JP2012164114A (ja) * | 2011-02-07 | 2012-08-30 | Renesas Electronics Corp | 不揮発性半導体記憶装置及びデータ処理システム |
US9612949B2 (en) * | 2013-06-13 | 2017-04-04 | Arm Limited | Memory allocation in a multi-core processing system based on a threshold amount of memory |
US9218282B2 (en) * | 2013-10-31 | 2015-12-22 | Micron Technology, Inc. | Memory system data management |
KR102190670B1 (ko) | 2014-03-03 | 2020-12-14 | 삼성전자주식회사 | 마이그레이션 관리자를 포함하는 메모리 시스템 |
US20150261444A1 (en) * | 2014-03-12 | 2015-09-17 | Kabushiki Kaisha Toshiba | Memory system and information processing device |
US20170060425A1 (en) * | 2015-08-27 | 2017-03-02 | Kabushiki Kaisha Toshiba | Memory system and method of controlling nonvolatile memory |
JP6414853B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US9933963B1 (en) * | 2017-03-01 | 2018-04-03 | Seagate Technology | Open block handling to reduce write errors |
TWI649759B (zh) * | 2017-09-28 | 2019-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置與將資料寫入記憶體裝置之方法 |
-
2018
- 2018-03-30 JP JP2018069140A patent/JP2019179455A/ja active Pending
- 2018-07-05 TW TW107123306A patent/TWI699650B/zh active
- 2018-07-27 CN CN201810839569.5A patent/CN110321065B/zh active Active
- 2018-09-10 US US16/126,582 patent/US10936203B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726705B2 (en) | 2020-03-23 | 2023-08-15 | Kioxia Corporation | Semiconductor device |
JP2021182178A (ja) * | 2020-05-18 | 2021-11-25 | Necプラットフォームズ株式会社 | ストレージシステム、ストレージ制御方法およびストレージ制御プログラム |
JP7044403B2 (ja) | 2020-05-18 | 2022-03-30 | Necプラットフォームズ株式会社 | ストレージシステム、ストレージ制御方法およびストレージ制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
US10936203B2 (en) | 2021-03-02 |
CN110321065A (zh) | 2019-10-11 |
TWI699650B (zh) | 2020-07-21 |
US20190303019A1 (en) | 2019-10-03 |
CN110321065B (zh) | 2023-08-11 |
TW201942749A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11922039B2 (en) | Storage device that secures a block for a stream or namespace and system having the storage device | |
US11733888B2 (en) | Memory system | |
US20210349632A1 (en) | Memory system and method for controlling nonvolatile memory | |
US11669444B2 (en) | Computing system and method for controlling storage device | |
US10761780B2 (en) | Memory system | |
CN110321065B (zh) | 存储装置及计算机系统 | |
US10747666B2 (en) | Memory system | |
US10635310B2 (en) | Storage device that compresses data received from a host before writing therein | |
CN110321247B (zh) | 内存系统 | |
CN109240938B (zh) | 存储系统以及控制非易失性存储器的控制方法 | |
CN106874217B (zh) | 存储器系统及控制方法 | |
EP2605142B1 (en) | Lba bitmap usage | |
JP6016137B2 (ja) | ソリッドステートドライブおよびその動作方法 | |
US11042305B2 (en) | Memory system and method for controlling nonvolatile memory | |
US9201784B2 (en) | Semiconductor storage device and method for controlling nonvolatile semiconductor memory | |
US11436136B2 (en) | Memory system including non-volatile buffer and control method thereof | |
US20190188130A1 (en) | Data Storage Device and Non-Volatile Memory Control Method | |
JP6139381B2 (ja) | メモリシステムおよび方法 | |
US20230214158A1 (en) | Read performance of memory devices | |
US11422930B2 (en) | Controller, memory system and data processing system | |
JP2019169101A (ja) | 電子機器、コンピュータシステム、および制御方法 | |
CN108073359B (zh) | 数据储存装置的操作方法 | |
CN113934647A (zh) | 用于存储器子系统的命名空间管理 | |
JP2019215777A (ja) | メモリシステム | |
KR20230115196A (ko) | 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180830 |