JP2019169101A - 電子機器、コンピュータシステム、および制御方法 - Google Patents
電子機器、コンピュータシステム、および制御方法 Download PDFInfo
- Publication number
- JP2019169101A JP2019169101A JP2018058610A JP2018058610A JP2019169101A JP 2019169101 A JP2019169101 A JP 2019169101A JP 2018058610 A JP2018058610 A JP 2018058610A JP 2018058610 A JP2018058610 A JP 2018058610A JP 2019169101 A JP2019169101 A JP 2019169101A
- Authority
- JP
- Japan
- Prior art keywords
- cold
- data
- host
- block
- logical address
- 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
- 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
- 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/0608—Saving storage space on 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/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】 ホストからのアクセスへの影響を軽減しながら、コールドブロック内の余剰容量を回収できる電子機器を実現する。【解決手段】 実施形態によれば、電子機器は、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、前記不揮発性メモリに格納されているコールドデータに対応する第1論理アドレス範囲と、前記コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量とを示す情報をホストに送信可能であり、前記ホストから受信可能である前記第1論理アドレス範囲を指定したリードコマンドに応じて、前記不揮発性メモリから前記コールドデータを読み出して前記ホストに送信可能であり、前記ホストから、前記第1論理アドレス範囲を指定したライトコマンドに応じて受信可能である前記コールドデータを、前記不揮発性メモリに書き込む。【選択図】図5
Description
本発明の実施形態は、不揮発性メモリを備える電子機器、コンピュータシステム、およびその制御方法に関する。
近年、不揮発性メモリを備えるストレージが広く普及している。
このようなストレージの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
SSDでは、ガベージコレクション(GC)動作により、ガベージコレクションソースブロック(GCソースブロック)内の有効データがガベージコレクションデスティネーションブロック(GCデスティネーションブロック)に移動され、フリーブロックが生成される。各フリーブロックは、イレーズ処理を経ることで新たな書き込み先ブロックとして使用することができる。
GCソースブロックには、例えば、有効データ量が少ないブロックが選択される。このようなGCソースブロックの選択により、より多くのフリーブロックを効率的に生成することができる。
一方、有効データ量が多いブロックはGCソースブロックとして選択されにくいので、このブロック内の無効データの領域に相当する余剰容量(オーバープロビジョニング:OP)は、データの書き込みに利用できないままとなる。そして、有効データ量が多いブロックが多数存在する場合には、このような無効データの領域が大量に存在することになる。
本発明が解決しようとする課題は、ホストからのアクセスへの影響を軽減しながら、コールドブロック内の余剰容量を回収できる電子機器、コンピュータシステム、および制御方法を提供することである。
実施形態によれば、電子機器は、インタフェースを介してホストと接続可能な電子機器であって、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、前記電子機器が前記ホストと接続された場合に、前記不揮発性メモリに格納されているコールドデータに対応する第1論理アドレス範囲と、前記コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量とを示す情報を前記ホストに送信可能であり、前記ホストから受信可能である前記第1論理アドレス範囲を指定したリードコマンドに応じて、前記不揮発性メモリから前記コールドデータを読み出して前記ホストに送信可能であり、前記ホストから、前記第1論理アドレス範囲を指定したライトコマンドに応じて受信可能である前記コールドデータを、前記不揮発性メモリに書き込む。
以下、実施の形態について図面を参照して説明する。
(第1実施形態)
まず、図1を参照して、実施形態に係るコンピュータシステム1の構成を説明する。
(第1実施形態)
まず、図1を参照して、実施形態に係るコンピュータシステム1の構成を説明する。
コンピュータシステム1は、ホスト(ホストデバイス)2と、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスとを含む。
ホスト2は、半導体ストレージデバイスにアクセスする情報処理装置(コンピューティングデバイス)である。ホスト2は、大量且つ多様なデータを半導体ストレージデバイスに保存するサーバ(ストレージサーバ)であってもよいし、パーソナルコンピュータであってもよい。半導体ストレージデバイスは、例えば、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から読み出されたデータを一時的に格納するためのバッファ領域であるリードバッファ(RB)31と、NAND型フラッシュメモリ5に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ(WB)32およびGCバッファ33と、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル(LUT)34のキャッシュ領域とが設けられている。さらに、DRAM6等のランダムアクセスメモリには、処理中に用いられる各種の情報(例えば、ブロック管理情報35、コールドブロック情報36等)の格納領域が設けられてもよい。なお、DRAM6は、コントローラ4の内部に設けられていてもよい。LUT34は、論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。
NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(複数のNAND型フラッシュメモリダイ)を含んでいてもよい。各チップは、メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリとして実現されている。
コントローラ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)それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル(LUT)34を用いて実行される。コントローラ4は、LUT34を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNAND型フラッシュメモリ5内の物理記憶位置を示す。LUT34は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
1つのページへのデータ書き込みは、1つのP/Eサイクル当たり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の記憶領域は、リードバッファ(RB)31、ライトバッファ(WB)32、GCバッファ33、LUT34、ブロック管理情報35、コールドブロック情報36等を格納するために利用される。
CPU12は、ホストインタフェース11、NANDインタフェース13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行されてもよい。
また、コンピュータシステム1は、SSD3のコールドブロック内の余剰容量(オーバープロビジョニング:OP)を回収するための機能を有する。コールドブロックは、当該ブロック内のデータの大半がコールドデータによって構成されるブロックである。コールドデータは、アクセス頻度が低いLBA範囲のデータを指す。コールドブロックには、基本的に有効なデータが多数含まれるが、無効となったデータも含まれる。無効となったデータは、コールドブロック内のOPとなる。
本実施形態では、SSD3がコールドデータおよびコールドブロックに関する情報を管理し、インタフェースを介してSSD3からホスト2にこの情報を通知することにより、SSD3とホスト2とが協調してコールドデータを扱う方式を実現する。これにより、SSD3は、ホスト2と協調して、コールドブロック内のOPを回収することができる。
図2を参照して、コンピュータシステム1によって回収されるコールドブロック内のOPについて説明する。
NAND型フラッシュメモリ5の全体の物理容量(実装容量)20は、表記容量(キャパシティ:CAP)211と余剰容量(OP)212とから構成される。余剰容量212は、物理容量20と表記容量211との差である。表記容量211に対する余剰容量212の比率は余裕率と称される。一般に、余裕率が高い方が、NAND型フラッシュメモリ5全体での有効データ量が少なくなることから、GCにおけるフリーブロックの生成効率が上がり、ライト・アンプリフィケーション・ファクタ(WAF)が低下する。そのため、OPの確保は重要である。
ユーザのワークロードには、アクセス範囲に局所性が無い場合と、アクセス範囲に局所性が有る場合とが想定される。アクセス範囲に局所性が無いワークロードは、例えば、時系列的に近接するアクセス(複数のコマンド)において、アクセス対象の論理アドレスが広い論理アドレス空間に亘っており、狭い論理アドレス空間内におさまっていないアクセスパターンに相当する。また、アクセス範囲に局所性が有るワークロードは、例えば、時系列的に近接するアクセスにおいて、アクセス対象の論理アドレスが狭い論理アドレス空間内におさまっているアクセスパターンに相当する。
ユーザのワークロードによるアクセス範囲に局所性が無い場合、表記容量211と余剰容量212とはいずれも実質的に有効な容量となる。
一方、ユーザのワークロードによるアクセス範囲に局所性が有る場合、NAND型フラッシュメモリ5内にコールドブロック22が増加し、またそれらコールドブロック22内で無効データが占めている記憶領域、すなわち、余剰容量(OP)224が増加することがある。
コールドブロック22は、例えば、有効データであるコールドデータ223と、余剰容量224に対応する無効データとを含む。対応する論理アドレスへのアクセス頻度が低いSSD3内のデータ(例えば、アクセス頻度が第1閾値未満である論理アドレスのデータ)をコールドデータ223と称する。また、ブロック内のデータの大半がコールドデータで構成されているブロックをコールドブロック22と称する。例えば、コールドデータのデータ量が第2閾値を超えているブロックや、ブロック内の全データに対するコールドデータの割合が特定の割合を超えているブロックが、コールドブロック22である。
コールドブロック22はデータの新たな書き込みに使用されないので、このコールドブロック22を除いた、有効データであるホットデータ221が格納されている容量と余剰容量(OP)222とが実質的に有効な容量となる。ホットデータ221は、対応する論理アドレスへのアクセス頻度が高いSSD3内のデータ(例えば、アクセス頻度が第1閾値以上であるデータ)である。
このようなコールドブロック22内の余剰容量(OP)224を回収するためには、例えば、コールドブロック22をGCソースブロックとするGC動作を行うことが考えられる。このGC動作により、コールドブロック22内に含まれていた余剰容量224が回収されるので、回収された余剰容量224を加えた余剰容量225と、ホットデータが格納されている容量221とを実質的に有効な容量として利用することができる。
図3を参照して、通常のGC動作とコールドブロックをGCソースブロックとするGC動作とについて説明する。ここでは、書き込み時期が新しいものから順にブロック251,252,253,254がある場合について例示する。各ブロックは、有効データで構成される有効クラスタ25Aと、無効データで構成される無効クラスタ25Bの少なくとも一方で構成される。
図3(A)は、通常のGC動作におけるGCソースブロックを示す。通常のGC動作では、有効データ量が少ないブロック251,252がGCソースブロックとして選択される。各ブロックの有効データ量は、例えば、有効クラスタの数、ブロック内のクラスタの総数に対する有効クラスタの数の割合、有効クラスタに相当するバイトのような単位で表され得る。
通常のGC動作では、有効データ量が多いブロック253,254は、GCソースブロックとして選択されないまま残る。つまり、アクセス頻度が低いコールドデータを含むコールドブロック253,254は、少量の無効データ(無効クラスタ)を含んでいたとしても、GC対象とならないまま残る。そのため、ブロック253,254に含まれる無効データ分の容量(OP)は、通常のGC動作では回収することができない。
図3(B)は、書き込み時期を考慮したGC動作におけるGCソースブロックを示す。書き込み時期を考慮したGC動作では、有効データ量が少ないブロック251,252だけでなく、書き込み時期が古いブロック254(例えば、特定の日時よりも前に書き込まれた有効データを含むブロック)もGCソースブロックとして選択される。つまり、書き込み時期が古いブロック254は、有効データ量(有効クラスタ)が多い場合にもGCソースブロックとして選択される。したがって、書き込み時期を考慮したGC動作では、書き込み時期が古く、有効データ量が多いコールドブロック254に含まれる無効データ分の容量(OP)も回収することができる。
しかし、有効データ量が多いコールドブロック254をGCソースブロックとしたGC動作では、コールドブロック254内の多数の有効データをGCデスティネーションブロックにコピー(移動)するので、NAND型フラッシュメモリ5に対するアクセスのバンド幅が大量に消費される。
図4を参照して、NAND型フラッシュメモリ5に対するアクセスのバンド幅について説明する。NAND型フラッシュメモリ5には複数のメモリチップMC0〜MC3が含まれる。コントローラ4は、複数のチャネルを介して、複数のメモリチップMC0〜MC3にそれぞれアクセスする。各メモリチップMC0〜MC3へのアクセスのためのバンド幅は限られており、その限られたバンド幅が全て消費されているならば、メモリチップMC0〜MC3にアクセスすることはできない。そのため、バンド幅に空きができるまでメモリチップMC0〜MC3へのアクセスを待つことによるレイテンシが発生することがある。
図4(A)は、ホスト2によって発行されたライトコマンドに応じた動作(ホストライト動作)と、通常のGC動作とが行われる場合を示す。ホストライト動作では、ホストI/F11とFTL120とを介して、ライトコマンドに応じて受信されるユーザデータをメモリチップMC0〜MC3に書き込むために、メモリチップMC0〜MC3へのアクセスのバンド幅が消費される。また、FTL120内のGC制御部126による通常のGC動作に応じて、GCソースブロックからGCデスティネーションブロック261にデータを移動するために、メモリチップMC0〜MC3へのアクセスのバンド幅が消費される。したがって、図4(A)に示す例では、ホストライト動作と通常のGC動作とによって、メモリチップMC0〜MC3へのアクセスのバンド幅が消費される。
次いで、図4(B)は、ホストライト動作および通常のGC動作に加えて、コールドブロックをGCソースブロックとするコールドブロックGC動作がさらに行われる場合を示す。この場合、FTL120内のコールドブロックGC制御部127によるコールドブロックGC動作に応じて、コールドブロックであるGCソースブロックから、コールドブロックのGCデスティネーションブロック262にデータを移動するために、メモリチップMC0〜MC3へのアクセスのバンド幅がさらに消費される。したがって、図4(B)に示す例では、ホストライト動作と通常のGC動作とコールドブロックのGC動作とによって、メモリチップMC0〜MC3へのアクセスのバンド幅が消費される。
コールドブロックには、大量の有効データが格納されているので、その有効データをGCデスティネーションブロック262にコピーするために、メモリチップMC0〜MC3へのアクセスのバンド幅が大量に消費される。ホスト2がSSD3にアクセス要求を送出したときに、SSD3内のコールドブロックGC動作によってメモリチップMC0〜MC3に対するアクセスのバンド幅が消費されているならば、ホスト2側からはアクセスに対するレイテンシの発生と解釈されることになる。レイテンシの変動は、SSD3の品質を評価する重要な要素であり、コールドブロック内のOPを回収するための動作に起因するものであったとしても、許容することは難しい。
また、NAND型フラッシュメモリ5に対するアクセスのバンド幅に影響を与えない速度で、例えば、非常に長い時間をかけて、コールドブロック内のOPを回収するGC動作を行うことも考えられる。しかし、GC動作に長い時間をかけることは、コールドブロック内のOPの回収が完了するまでの時間を長引かせることになり望ましくない。
さらに、コールドブロック内のOPを回収せずに放置するという判断も考えられるが、局所性を有するアクセスパターンでは、コールドブロックが大量に発生する可能性もある。したがって、各々に含まれるOPが少量であったとしても、大量のコールドブロック内のOPを回収せずに放置することは望ましくない。
このようなことから、ホスト2からのアクセスへの影響を軽減しながら、コールドブロック内のOPを回収できる新たな機能の実現が必要とされる。本実施形態では、この機能を実現するために、ホスト2とSSD3とが協調して動作する。
以下では、上記機能に関する構成についてより具体的に説明する。
図1に戻り、SSD3に設けられるコントローラ4内のCPU12は、コールドブロック制御インタフェース(I/F)部121、ブロック管理部122、コールドブロック制御部123、リード制御部124、ライト制御部125、GC制御部126、およびコールドブロックGC制御部127として機能することができる。
コールドブロック制御I/F部121は、SSD3内のコールドブロックの制御のためにホスト2と通信するインタフェース機能を有する。
ブロック管理部122は、SSD3内のブロック毎に、イレーズ回数(プログラム/イレーズサイクル数)、イレーズ順序番号、有効データ数(有効データ量)等を含むブロック管理情報35を管理する。ブロック管理部122は、例えば、各ブロックに対する書き込み動作、トリム(アンマップ)動作、イレーズ動作等を監視し、このような動作が行われる毎に、ブロック管理情報35を更新する。
コールドブロック制御部123は、ブロック管理情報35を用いて、NAND型フラッシュメモリ5内の複数のブロックB0〜Bm−1から、コールドブロックを選択する。そして、コールドブロック制御部123は、例えば、ホスト2による問い合わせに応じて、選択されたコールドブロックに関するコールドブロック情報36を生成する。コールドブロック情報36は、コールドブロックから回収可能なOP量、コールドブロックをデータを書き込み可能なブロック(フリーブロック)にするための処理時間または処理量、等を含む。
リード制御部124は、リードコマンドに指定された論理アドレス(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のチップにプログラムコマンドを送ることにより、当該チップに対して、転送されたユーザデータを書き込み先ブロックにプログラムさせる。チップ内のメモリセルアレイは複数のブロックを含んでいる。ブロックは、有効データを格納していて、新たにデータを書き込むことができないブロック(アクティブブロック)と、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なブロック(フリーブロック)とに大別される。1つ以上のフリーブロックから、1個が選択され、イレーズ処理を経ることで、書き込み先ブロックとして割り当てられる。書き込み先ブロックは、有効データを格納し得る。
GC制御部126も、GCバッファ33を用いて、上述したようなライト制御部125による書き込み動作と同様にして、NAND型フラッシュメモリ5への書き込みを行うことができる。GC制御部126は、有効データを格納しているアクティブブロック群からGCソースブロックを選択し、このGCソースブロック内の有効データを、フリーブロック群から書き込み先ブロックとして確保されたGCデスティネーションブロックに書き込む。
また、コールドブロックGC制御部127も、GC制御部126と同様に、NAND型フラッシュメモリ5への書き込みを行うことができる。コールドブロックGC制御部127は、コールドブロックをGCソースブロックとして、このGCソースブロック内の有効データを、フリーブロック群から書き込み先ブロックとして確保されたGCデスティネーションブロックに書き込む。GC制御部127は、GCバッファ33とは別のバッファを用いて、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に送出する。
ファイルシステム43は、コールドブロック制御I/F部431を含む。コールドブロック制御I/F部431は、SSD3内のコールドブロックの制御のためにSSD3と通信するインタフェース機能を有する。コールドブロック制御I/F部431は、例えば、SSD3にコールドブロックに関する情報を問い合わせる。また、コールドブロック制御I/F部431は、コールドブロックに関する情報を用いて、コールドブロック内のOPの回収を行うべきタイミングである場合に、コールドブロック内のOPの回収をSSD3に要求する。
また、ファイルシステム43は、コールドデータ管理部432をさらに含んでいてもよい。コールドデータ管理部432は、あるLBA範囲のデータが、いずれのSSDに格納されているかを管理する。
図5は、コンピュータシステム1におけるコールドブロック内のOPを回収するための動作の例を示す。ここでは、SSD3は、DASとして、1対1でホスト2に接続されている。
まず、ホスト2は、SSD3にコールドブロック情報36を問い合わせる。SSD3は、この問い合わせに応じて、コールドブロック情報36をホスト2に送信する。コールドブロック情報36は、SSD3のNAND型フラッシュメモリ5内のコールドブロックに関する情報を含む。より具体的には、コールドブロック情報36は、コールドブロックから回収可能なOP量、コールドブロックからOPを回収する動作(コールドブロックGC動作)のみが行われた場合の推定される処理時間または処理量、等を含む。
ホスト2は、コールドブロック情報36を用いて、SSD3にコールドブロックGCの実行を要求するか否かを判定する。ホスト2は、例えば、ホスト2がアイドル状態である場合のように、コールドブロックGCが実行されたとしても、ホスト2からSSD3へのアクセスに対する影響が小さい場合に、SSD3にコールドブロックGCの実行を要求する。SSD3は、ホスト2による要求に応じて、NAND型フラッシュメモリ5に対するコールドブロックGCの実行を開始する。
また、図6は、コールドブロック内のOPを回収するためのコンピュータシステム1内の構成を示す。ホスト2は、コールドブロック制御I/F部431を備えている。SSD3は、コールドブロック制御I/F部121を備え、FTL120にブロック管理部122、コールドブロック制御部123、およびコールドブロックGC制御部127を備えている。以下では、各部によるコールドブロック内のOPを回収するための手順について説明する。
(1)SSD3のブロック管理部122は、当該SSD3内のブロック毎に、イレーズ回数(プログラム/イレーズサイクル数)、イレーズ順序番号、有効データ数(有効データ量)等のブロック管理情報35を管理する。
図7は、ブロック管理部122によって生成および更新されるブロック管理情報35の一構成例を示す。ブロック管理情報35は、NAND型フラッシュメモリ5内の複数のブロックB0〜Bm−1に対応する複数のレコードを含む。各レコードは、例えば、ブロック番号、イレーズ回数、イレーズ順序番号、および有効データ量を含む。
あるブロックに対応するレコードにおいて、「ブロック番号」は、そのブロックに割り当てられたブロック番号を示す。なお、ブロック番号の代わりに、そのブロックを識別するための任意の情報が用いられてもよい。
「イレーズ回数」は、そのブロックがイレーズされた回数(例えば、そのブロックにこれまでに施されたイレーズ処理の回数)を示す。したがって、そのブロックにイレーズ処理が施されたことに応じて、当該ブロックに対応するイレーズ回数が1だけ増加する。
「イレーズ順序番号」は、例えば、ある時点(例えば、SSD3の使用開始時点)から、NAND型フラッシュメモリ5内のいずれかのブロックにイレーズ処理が施される毎にカウントアップされる番号であり、そのイレーズ処理が施されたブロックに対応するレコードの「イレーズ処理番号」として設定される。
「有効データ量」は、対応するブロックに含まれる有効データの量を示す。各ブロックの有効データ量は、クラスタの数によって表現されてもよいし、パーセンテージによって表現されてよいし、あるいはバイトのような単位で表現されてもよい。
(2)SSD3のコールドブロック制御部123は、ブロック管理情報35を用いて、NAND型フラッシュメモリ5内の複数のブロックB0〜Bm−1から、コールドブロックを選択し、コールドブロックのリストを生成する。生成されたリストには、例えば、コールドブロックとして選択された一つ以上のブロックに対応する一つ以上のブロック番号が含まれる。コールドブロックは、例えば、書き換え時期が古いブロックである。コールドブロック制御部123は、例えば、書き換えの日時が特定の日時よりも前であるブロックをコールドブロックであると判定する。
なお、コールドブロック制御部123は、ブロック毎のイレーズ順序番号を用いて、あるブロックがコールドブロックであるか否かを判定してもよい。上述したように、イレーズ順序番号は、例えば、ある時点(例えば、SSD3の使用開始時点)から、NAND型フラッシュメモリ5内のいずれかのブロックにイレーズ処理が施される毎にカウントアップされる番号である。イレーズ順序番号は、そのイレーズされたブロックに関連付けられる。コールドブロック制御部123は、イレーズ順序番号が特定の番号よりも小さいブロックをコールドブロックであると判定してもよい。また、コールドブロック制御部123は、最新のイレーズ順序番号(イレーズ順序番号の最大値)と注目するブロックのイレーズ順序番号とを比較して、その差が第3閾値を超えた場合に、当該ブロックをコールドブロックであると判定してもよい。
あるいは、コールドブロック制御部123は、イレーズ回数が第4閾値未満であるブロックをコールドブロックであると判定してもよい。イレーズ回数が少ないブロックが、GCソースブロックとして選択されずに残っているということは、アクセス頻度が低いコールドデータを大量に含むコールドブロックであると云えるためである。
(3)ホスト2のコールドブロック制御I/F部431は、SSD3にコールドブロック情報36を問い合わせる。
(4)SSD3のコールドブロック制御部123は、コールドブロック制御I/F部121を介して、ホスト2によるコールドブロック情報36の問い合わせを受け付ける。コールドブロック制御部123は、この問い合わせに応じて、生成されているコールドブロックのリストに基づきコールドブロック情報36を生成する。コールドブロック情報36は、例えば、SSD3でコールドブロック内のOPを回収するための処理のみが実行される場合(ホスト2から新たなI/Oコマンドが発行されない場合等)に、コールドブロック内の有効データ量から推定される、その開始から完了までの処理時間または処理量と、この処理の完了によって利用可能になるOP量(すなわち、回収されるコールドブロック内のOP量)とを含む。コールドブロック制御部123は、コールドブロック制御I/F部121を介して、ホスト2にコールドブロック情報36を送信する。
図8は、コールドブロック制御部123によって生成されるコールドブロック情報36の一構成例を示す。コールドブロック情報36は、コールドブロックであると判別された一つ以上のブロックに対応する一つ以上のレコードを含む。各レコードは、例えば、ブロック番号、処理時間(または処理量)、およびOP回収量を含む。
あるコールドブロックに対応するレコードにおいて、「ブロック番号」は、そのブロックに割り当てられたブロック番号を示す。「処理時間」は、そのブロックをGCソースブロックとするGC動作に要すると推定される処理時間(または処理量)を示す。「OP回収量」は、そのブロックをGCソースブロックとするGC動作によって回収される記憶容量を示す。
なお、「ブロック番号」の値のみが設定されたレコードを含むコールドブロック情報36を、手順(2)のコールドブロックのリストとして用いてもよい。
(5)ホスト2のコールドブロック制御I/F部431は、SSD3からコールドブロック情報36を受信し、このコールドブロック情報36を用いて、コールドブロック内のOPの回収を行うべきタイミングであるか否かを判定する。コールドブロック制御I/F部431は、コールドブロックをGCソースブロックとするGC動作に要すると推定される処理量と、SSD3に対するアクセス頻度と、ホスト2のリソースがビジー状態である時間と、ホスト2のプロセッサによって実行中であるプロセスの量の少なくともいずれかに基づいて、コールドブロック内のOPの回収を行うべきタイミングであるか否かを判定する。
より具体的には、コールドブロック制御I/F部431は、ホスト2上で同時に動作しているプロセス数や、各種のリソースがビジー状態である時間等の指標に基づいて、SSD3へのアクセス頻度が低いとき、コールドブロック内のOPの回収を行うべきタイミングであると判定する。コールドブロック制御I/F部431は、例えば、プロセス数が第4閾値未満である場合、リソースがビジー状態である時間が第5閾値未満である場合等に、コールドブロック内のOPの回収を行うべきタイミングであると判定する。第4閾値および第5閾値は、例えば、コールドブロック情報36を用いて、SSD3でコールドブロック内のOPを回収するための処理のみが行われる場合の処理時間が長いほど、小さく設定されてもよい。また、第4閾値または第5閾値は、コールドブロック情報36を用いて、SSD3でコールドブロック内のOPを回収するための処理の完了によって利用可能になるOP量が多いほど、大きく設定されてもよい。
(6)コールドブロック制御I/F部431は、コールドブロック内のOPの回収を行うべきタイミングであると判定された場合、コールドブロック内のOPを回収するリクエストをSSD3に発行する。
このリクエストを実現する方法の一例として、例えば、NVMe規格のデバイス・セルフ・テスト(Device self−test)を利用する方法がある。デバイス・セルフ・テストのコマンドは、NVMe Adminコマンドに分類され、主に、デバイス自体のテストのために用いられる。デバイス・セルフ・テストの処理は、バックグラウンドで実行されることが要求される。そのため、別のコマンドを処理する必要がある場合、SSD3のコントローラ4は、一旦、デバイス・セルフ・テストの処理を中断し、その別のコマンドを処理する。その別のコマンドの処理が完了した後、コントローラ4は、デバイス・セルフ・テストの処理を再開する。
図9は、デバイス・セルフ・テストに用いられるコマンドのフォーマットを示す。図9に示すように、コマンド内の[03:00]ビットに対応するフィールドには、当該コマンドによって起きるアクションを特定するセルフテストコード(STC)が設定される。このフィールドに“1h”または“2h”が設定されたコマンドに応じて、関連付けられたセルフテストオペレーションが開始される。また、このフィールドに“Fh”が設定されたコマンドに応じて、実行中のデバイス・セルフ・テストが中断(abort)される。
(7)SSD3のコールドブロックGC制御部127は、ホスト2からコールドブロック内のOPを回収するリクエストを受信したことに応じて、コールドブロック内のOPを回収する動作を行う。つまり、SSD3では、通常の動作(ホストライト、GC等)に加えて、コールドブロック内のOPを回収する動作が行われる。
コールドブロックGC制御部127は、例えば、手順(2)で生成されたリストに示される各コールドブロックをGCソースブロックとするGC動作を行うことにより、コールドブロック内のOPを回収する。より具体的には、コールドブロックGC制御部127は、GCソースブロックであるコールドブロック内の有効データ(コールドデータ)を読み出し(GCリード)、GCバッファ33に蓄積する。そして、GCバッファ33に書き込み単位分(ページ分)のデータが蓄積されたならば、そのデータをコールドブロックのGCデスティネーションブロックに書き込む(GCライト)。
(8)コールドブロックGC制御部127は、リストに示される全てのコールドブロック内のOPが回収された場合(すなわち、全てのコールドブロックをGCソースブロックとしたGC処理が完了した場合)、その完了をホスト2に通知する。
なお、上記の手順(7)において、ホスト2のコールドブロック制御I/F部431は、ホスト2上のプロセス数やリソースの状況に応じて、コールドブロック内のOPを回収する処理を中断するリクエストをSSD3に発行することもできる。例えば、NVMeのデバイス・セルフ・テストのコマンドが用いられる場合、コールドブロック制御I/F部431は、デバイス・セルフ・テストの中断(abort)を指示するための値が設定されたコマンドを発行することにより、コールドブロック内のOPを回収する処理の中断をSSD3に要求する。
SSD3のコールドブロックGC制御部127は、このようなコマンドによる要求に応じて、コールドブロック内のOPを回収する動作を中断する。これにより、SSD3は通常の動作(ホストライト、GC等)に移行する。そして、コールドブロック制御部123は、中断に応じて、手順(2)で生成されたコールドブロックのリストを更新する。コールドブロック内のOPを回収する動作を再開する場合には、例えば、ホスト2のコールドブロック制御I/F部431がコールドブロック情報36をSSD3に問い合わせる手順(3)から開始される。
また、OPを回収する対象となるブロックは、データリテンション(信頼性)のために移動すべきデータを含むブロックであってもよい。その場合、例えば、データリテンション対策で実施される巡回(パトロール)における、リード時の誤り訂正における誤りビット数等に基づき、リテンションエラーが発生する可能性が高いデータを含むブロックが特定される。上述したコールドブロックに対する動作を、この特定されたブロックに対する動作に置き換えることにより、当該ブロック内のOPを回収することができる。
図10のフローチャートは、SSD3のコントローラ4によって実行されるコールドブロック管理処理の手順の例を示す。
コントローラ4はブロック管理情報35を生成(更新)する(ステップS11)。ブロック管理情報35には、図7に示したようなブロック毎のレコードが含まれている。コントローラ4は、ホスト2から受信したコマンドに応じた動作やガベージコレクション動作に応じて、イレーズ動作が発生した場合や各ブロックの有効データ量が変動した場合に、ブロック管理情報35を更新する。
次いで、コントローラ4は、コールドブロックをリストアップするタイミングであるか否かを判定する(ステップS12)。コントローラ4は、例えば、一定時間毎に、コールドブロックをリストアップするタイミングであると判定する。
コールドブロックをリストアップするタイミングである場合(ステップS12のYES)、コントローラ4は、コールドブロックのリストを生成(更新)する(ステップS13)。コントローラ4は、ブロック管理情報35を用いて、コールドブロックであると推定されるブロックを検出することにより、コールドブロックのリストを生成(更新)する。
コールドブロックをリストアップするタイミングでない場合(ステップS12のNO)、ステップS13をスキップする。
そして、コントローラ4は、ホスト2からコールドブロック情報36の問合せがあったか否かを判定する(ステップS14)。コールドブロック情報36の問合せがない場合(ステップS14のNO)、ステップS11に戻り、ブロック管理情報35の更新が続行される。
一方、コールドブロック情報36の問合せがあった場合(ステップS14のYES)、コントローラ4は、ブロック管理情報35とコールドブロックのリストとを用いて、コールドブロック情報36を生成する(ステップS15)。そして、コントローラ4は、生成されたコールドブロック情報36をホスト2に送信する(ステップS16)。
図11のフローチャートは、SSD3のコントローラ4によって実行されるOP回収制御処理の手順の例を示す。
コントローラ4は、ホスト2からコールドブロック内のOPの回収が指示されたか否かを判定する(ステップS21)。コールドブロック内のOPの回収が指示されていない場合(ステップS21のNO)、ステップS21に戻る。
コールドブロック内のOPの回収が指示された場合(ステップS21のYES)、コントローラ4は、コールドブロック内のOP回収処理、すなわち、コールドブロックをGCソースブロックとするGC処理を実行する(ステップS22)。
そして、このコールドブロック内のOP回収処理が完了したならば、コントローラ4は、ホスト2に回収完了と通知する(ステップS23)。
また、図12のフローチャートは、ホスト2によって実行されるコールドブロック制御処理の手順の例を示す。
ホスト2は、SSD3にコールドブロック情報36を問い合わせるタイミングであるか否かを判定する(ステップS31)。ホスト2は、例えば、一定時間毎に、コールドブロック情報36を問い合わせるタイミングであると判定する。コールドブロック情報36を問い合わせるタイミングでない場合(ステップS31のNO)、ステップS31に戻る。
コールドブロック情報36を問い合わせるタイミングである場合(ステップS31のYES)、ホスト2は、SSD3にコールドブロック情報36を問い合わせる(ステップS32)。そして、ホスト2は、この問合せに応じて、SSD3によって送信されたコールドブロック情報36を受信する(ステップS33)。
次いで、ホスト2は、コールドブロック内のOPの回収指示タイミングであるか否かを判定する(ステップS34)。ホスト2は、例えば、ホスト2上で同時に動作しているプロセス数が少ない等の指標に基づいて、SSD3へのアクセスの頻度が低いタイミングを、コールドブロック内のOPの回収指示タイミングとして検出する。コールドブロック内のOPの回収指示タイミングでないと判定された場合(ステップS34のNO)、ステップS31に戻る。
一方、コールドブロック内のOPの回収指示タイミングであると判定された場合(ステップS34のYES)、コントローラ4は、SSD3にコールドブロック内のOP回収のリクエストを発行する(ステップS35)。
そして、ホスト2は、SSD3から、OP回収の完了通知を受信したか否かを判定する(ステップS36)。完了通知を受信していない場合(ステップS36のNO)、ステップS36に戻る。一方、完了通知を受信した場合(ステップS36のYES)、処理を終了する。
以上のように、ホスト2は、SSD3から受信したコールドブロック情報36を用いて、ホスト2からのアクセスへの影響が少ないタイミングで、SSD3に対してコールドブロック内のOPの回収を指示する。これにより、ホスト2からのアクセスへの影響を軽減しながら、SSD3において、コールドブロック内のOPを回収することができる。
(第2実施形態)
第1実施形態では、SSD3は、ホスト2からの問い合わせに応じて、コールドブロック内のOPを回収するために要する処理時間または処理量や、コールドブロックから回収可能なOP量等を含むコールドブロック情報36をホスト2に送信している。これに対して、第2実施形態では、ホスト2による問い合わせの有無に関わらず、特定の条件を満たした場合に、SSD3が、コールドブロック内のOPを回収すべきであるとの情報をホスト2に通知する。
第1実施形態では、SSD3は、ホスト2からの問い合わせに応じて、コールドブロック内のOPを回収するために要する処理時間または処理量や、コールドブロックから回収可能なOP量等を含むコールドブロック情報36をホスト2に送信している。これに対して、第2実施形態では、ホスト2による問い合わせの有無に関わらず、特定の条件を満たした場合に、SSD3が、コールドブロック内のOPを回収すべきであるとの情報をホスト2に通知する。
第2実施形態に係るコンピュータシステム1の構成は第1実施形態のコンピュータシステム1と同様であり、第2実施形態と第1実施形態とでは、SSD3のコールドブロック制御部123によって実行される処理の手順のみが異なる。以下、第1実施形態と異なる点のみを説明する。
コールドブロック制御部123は、ブロック管理情報35を用いて、NAND型フラッシュメモリ5内の複数のブロックB0〜Bm−1から、コールドブロックを選択し、コールドブロックのリストを生成する。そして、コールドブロック制御部123は、このコールドブロックのリストに基づきコールドブロック情報36を生成する。図8を参照して上述した通り、コールドブロック情報36は、例えば、SSD3でコールドブロック内のOPを回収するための回収処理のみが実行される場合(ホスト2から新たなI/Oコマンドが発行されない場合等)に、コールドブロック内の有効データ量から推定される、その開始から完了までの処理時間または処理量と、この回収処理の完了によって利用可能になるOP量(すなわち、回収されるコールドブロック内のOP量)を含む。
コールドブロック制御部123は、コールドブロック情報36を用いて、コールドブロック内のOPを回収すべきであるか否かを判定する。コールドブロック制御部123は、例えば、コールドブロック内のOP量が第6閾値を超えた場合に、コールドブロック内のOPを回収すべきであると判定する。コールドブロック制御部123は、コールドブロック内のOPを回収すべきであると判定した場合、コールドブロック内のOPを回収すべきであるとの情報(すなわち、コールドブロックを、データを書き込み可能な一つ以上のブロックにする処理が必要であるとの情報)をホスト2に通知する。また、コールドブロック制御部123は、コールドブロック内のOP量(無効データ量)が第6閾値を超えたことをホスト2に通知してもよい。また、コールドブロック制御部123は、このような通知と共に、コールドブロック情報36をホスト2に送信してもよい。
ホスト2のコールドブロック制御I/F部431は、この通知に応じて、コールドブロック内のOPの回収を行うべきタイミングであるか否かを判定する。コールドブロック制御I/F部431は、ホスト2上で同時に動作しているプロセス数や、各種のリソースがビジー状態である時間等の指標に基づいて、SSD3へのアクセス頻度が低いとき、コールドブロック内のOPの回収を行うべきタイミングであると判定する。そして、コールドブロック制御I/F部431は、コールドブロック内のOPの回収を行うべきタイミングであると判定された場合、コールドブロック内のOPを回収するリクエストをSSD3に発行する。
コールドブロック内のOPを回収するための処理については、第1実施形態において上述した通りである。
以上の構成により、SSD3において、コールドブロック内のOPを回収すべきであるか否かを判断することができる。ホスト2は、SSD3に対してコールドブロックに関する問い合わせを行うことなく、SSD3からコールドブロック内のOPを回収すべきであるとの情報が通知されたことに応じて、ホスト2上のプロセスやリソースの状況に基づきコールドブロック内のOPの回収を行うべきタイミングであるか否かを判断することができる。
図13のフローチャートは、SSD3のコントローラ4によって実行されるコールドブロック管理処理の手順の例を示す。
まず、コントローラ4はブロック管理情報35を生成(更新)する(ステップS41)。次いで、コントローラ4は、コールドブロックをリストアップするタイミングであるか否かを判定する(ステップS42)。コントローラ4は、例えば、一定時間毎に、コールドブロックをリストアップするタイミングであると判定する。
コールドブロックをリストアップするタイミングでない場合(ステップS42のNO)、ステップS41に戻り、ブロック管理情報35の更新が続行される。
一方、コールドブロックをリストアップするタイミングである場合(ステップS42のYES)、コントローラ4は、コールドブロックのリストを生成(更新)する(ステップS13)。コントローラ4は、ブロック管理情報35を用いて、コールドブロックであると推定されるブロックを検出することにより、コールドブロックのリストを生成(更新)する。そして、コントローラ4は、ブロック管理情報35とコールドブロックのリストとを用いて、コールドブロック情報36を生成する(ステップS44)。
次いで、コントローラ4は、コールドブロック内のOPを回収する必要があるか否かを判定する(ステップS45)。コントローラ4は、例えば、コールドブロック内のOP量が閾値を超えているか否かに基づいて、コールドブロック内のOP量が閾値を超えている場合に、コールドブロック内のOPを回収する必要があると判定する。コールドブロック内のOPを回収する必要がないと判定された場合(ステップS45のNO)、ブロックB41に戻る。
一方、コールドブロック内のOPを回収する必要があると判定された場合(ステップS45のYES)、コントローラ4は、ホスト2に対して、コールドブロック内のOPを回収する必要がある旨を通知する(ステップS45)。コントローラ4は、この通知と共に、コールドブロック情報36をホスト2に送信してもよい。
また、図14のフローチャートは、ホスト2によって実行されるコールドブロック制御処理の手順の例を示す。
ホスト2は、SSD3から、コールドブロック内のOPを回収する必要がある旨の通知を受信したか否かを判定する(ステップS51)。コールドブロック内のOPを回収する必要がある旨の通知を受信していない場合(ステップS51のNO)、ステップS51に戻る。
コールドブロック内のOPを回収する必要がある旨の通知を受信した場合(ステップS51のYES)、ホスト2は、ステップS52からステップS54までの手順を行う。このステップS52からステップS54までの手順は、図12のフローチャートを参照して上述したステップS34からステップS36までの手順と同様である。
このように、ホスト2ではなく、SSD3においてコールドブロック内のOPを回収する必要があるか否かを判断し、SSD3からホスト2に、コールドブロック内のOPを回収する必要がある旨を通知することもできる。
(第3実施形態)
第1実施形態では、SSD3は、コールドブロック内のOPを回収するために要する処理時間または処理量や、コールドブロックから回収可能なOP量等を含むコールドブロック情報36をホスト2に送信し、また第2実施形態では、SSD3は、コールドブロック内のOPを回収すべきであるとの情報をホスト2に通知している。これに対して、第3実施形態では、SSD3は、コールドデータの論理アドレス範囲を示すリストをホスト2に送信する。
第1実施形態では、SSD3は、コールドブロック内のOPを回収するために要する処理時間または処理量や、コールドブロックから回収可能なOP量等を含むコールドブロック情報36をホスト2に送信し、また第2実施形態では、SSD3は、コールドブロック内のOPを回収すべきであるとの情報をホスト2に通知している。これに対して、第3実施形態では、SSD3は、コールドデータの論理アドレス範囲を示すリストをホスト2に送信する。
第3実施形態に係るコンピュータシステム1の構成は第1および第2実施形態のコンピュータシステム1と同様であり、第3実施形態と第1および第2実施形態とでは、SSD3のコールドブロック制御部123とホスト2のコールドブロック制御I/F部431とによって実行される処理の手順のみが異なる。以下、第1および第2実施形態と異なる点のみを説明する。
図15は、本実施形態のコンピュータシステム1におけるコールドブロック内のOPを回収するための動作の例を示す。ここでは、SSD3は、ダイレクト・アタッチド・ストレージ(DAS)として、1対1でホスト2に接続されている。
まず、ホスト2は、SSD3にコールドブロック情報36を問い合わせる。SSD3(コントローラ4)は、この問い合わせに応じて、コールドブロック情報36を生成し、ホスト2に送信する。コールドブロック情報36は、SSD3のNAND型フラッシュメモリ5内のコールドデータに対応する論理アドレスの範囲(LBA範囲)のリストを含む。コールドデータは、コールドブロック内の有効データであり、対応するLBA範囲へのアクセス頻度が低いデータである。
図15に示すように、コールドブロック情報36は、コールドデータのLBA範囲をそれぞれ示す一つ以上のエントリを含む。LBA範囲は、例えば、開始LBAとその長さ(例えば、論理ブロック数)とで表される。また、LBA範囲は、開始LBAと終了LBAとで表されてもよい。なお、コールドブロック情報36には、コールドブロックから回収可能なOP量、コールドブロックをデータを書き込み可能なブロックにするための(すなわち、コールドブロックからOPを回収するための)推定されるSSD3の処理時間または処理量、等がさらに含まれていてもよい。
コールドブロック情報36に含まれる、コールドデータに対応するLBA範囲のリストは、例えば、NVMe規格のデータセット・マネジメント・コマンドに従ったフォーマットで作成され得る。このフォーマットでは、図16に示すように、例えば、最大で256個のLBA範囲(Range 0からRange 255)を示すことができ、各LBA範囲について、開始LBAと論理ブロック長とコンテキスト属性とが含まれる。
「開始LBA」は、LBA範囲の先頭のLBAを示す。「論理ブロック長」は、そのLBA範囲に含まれる論理ブロックの数(NLB)を示す。「コンテキスト属性」は、そのLBA範囲に関連する各種の属性を示す。このフォーマットにおいて、各LBA範囲に対応する情報のサイズは16バイトである。したがって、256個のLBA範囲を示すコールドブロック情報36を、4キロバイト(KiB)でホスト2に送信することができる。
ホスト2は、SSD3から受信したコールドブロック情報36を用いて、コールドデータのLBA範囲を指定したリードコマンドをSSD3に発行する。SSD3は、リードコマンドに応じて、NAND型フラッシュメモリ5から、指定されたLBA範囲のコールドデータを読み出し、ホスト2に送信する。以上により、ホスト2は、SSD3からコールドデータを読み出すことができる。
そして、ホスト2は、そのLBA範囲を指定した、読み出されたコールドデータを書き込むためのライトコマンドをSSD3に発行する。なお、このライトコマンドには、書き込まれるデータがコールドデータであることを示す情報が含まれていてもよい。
書き込まれるデータがコールドデータであることを示す情報としては、例えば、上述したNVMeのデータセット・マネジメント・コマンドの「コンテキスト属性」に設定される属性の一つであるアクセス頻度を用いることができる。図17は、コンテキスト属性の[03:00]ビットに対応するアクセス頻度のフィールドに設定され得る値を示す。図17に示す例では、対応するLBA範囲への低頻度のライトを示す値である“0010b”または“0011b”が、書き込まれるデータがコールドデータであることを示す情報として用いられる。
SSD3は、ライトコマンドに応じて、NAND型フラッシュメモリ5にそのコールドデータを書き込む。SSD3は、コールドデータを、コールドデータがこれまで書き込まれていた第1物理記憶領域とは別の第2物理記憶領域(ホストライトの書き込み先ブロック)に書き込む。SSD3は、ライトコマンドに含まれる、書き込まれるデータがコールドデータであることを示す情報に応じて、コールドデータの書き込みに適したブロック(例えば、プログラム/イレーズサイクル数が多いブロック)を書き込み先ブロックとして選択してもよい。以上により、ホスト2は、SSD3にコールドデータを新たに書き込むことができる。
このようなコールドデータの読み出しおよび書き込みにより、コールドデータを、コールドブロックから、ホストライトのための書き込み先ブロックに移動することができる。SSD3は、ライトコマンドに指定されたLBA範囲が、そのコールドデータが新たに書き込まれた第2物理記憶領域にマッピングされるようにLUT34を更新する。したがって、コールドデータがそれまで書き込まれていたコールドブロック内の第1物理記憶領域は、いずれのLBAにもマッピングされていない、無効データが格納される領域となる。
ホスト2は、コールドブロック情報36に示されるLBA範囲毎に、上記の動作を行う。このような動作により、SSD3において、コールドブロック内の全てのコールドデータ(有効データ)が、ホストライトのための書き込み先ブロックに移動されたならば、そのコールドブロックは、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なフリーブロックとなる。したがって、コールドブロック内のOPを回収することができる。
なお、OPを回収する動作の対象となるブロックは、データリテンション(信頼性)のために移動すべきデータを含むブロックであってもよい。その場合、例えば、データリテンション対策で実施される巡回における、リード時の誤り訂正における誤りビット数等に基づき、リテンションエラーが発生する可能性が高いデータが特定される。上述したコールドデータに対応するLBA範囲のリストを含むコールドブロック情報36を、この特定されたデータに対応するLBA範囲のリストを含む情報に置き換えることにより、リテンションエラーが発生する可能性が高いデータを含むブロック内のOPを回収することができる。
図18のフローチャートは、SSD3のコントローラ4によって実行されるコールドブロック管理処理の手順の例を示す。ステップS61からステップS64までの手順は、図10のフローチャートを参照して上述したステップS11からステップS14までの手順と同様である。
ホスト2からコールドブロック情報36の問合せがあった場合(ステップS64のYES)、コントローラ4は、コールドデータを示すリストを含むコールドブロック情報36を生成する(ステップS65)。コールドデータを示すリストは、例えば、図16に示したフォーマットに基づくリストであり、コールドデータが格納されているLBA領域の先頭のLBA(開始LBA)とその長さ(論理ブロックの数:NLB)とを含む。コントローラ4は、生成されたコールドデータを示すリストを含むコールドブロック情報36をホスト2に送信する(ステップS66)。
また、図19のフローチャートは、ホスト2によって実行されるコールドブロック制御処理の手順の例を示す。
ホスト2は、SSD3にコールドブロック情報36を問い合わせるタイミングであるか否かを判定する(ステップS71)。ホスト2は、例えば、一定時間毎に、コールドブロック情報36を問い合わせるタイミングであると判定する。コールドブロック情報36を問い合わせるタイミングでない場合(ステップS71のNO)、ステップS71に戻る。
コールドブロック情報36を問い合わせるタイミングである場合(ステップS71のYES)、ホスト2は、SSD3にコールドブロック情報36を問い合わせる(ステップS72)。そして、ホスト2は、この問合せに応じてSSD3によって送信された、コールドデータを示すリストを含むコールドブロック情報36を受信する(ステップS73)。コールドデータを示すリストには、コールドデータに対応する一つ以上のLBA範囲に対応する一つ以上のエントリが含まれる。
次いで、ホスト2は、コールドブロック内のOPの回収タイミングであるか否かを判定する(ステップS74)。ホスト2は、例えば、ホスト2上で同時に動作しているプロセス数が少ない等の指標に基づいて、SSD3へのアクセス頻度が低いタイミングを、コールドブロック内のOPの回収タイミングとして検出する。コールドブロック内のOPの回収タイミングでないと判定された場合(ステップS74のNO)、ステップS71に戻る。
一方、コールドブロック内のOPの回収タイミングであると判定された場合(ステップS74のYES)、ホスト2は、コールドデータを示すリスト内のあるエントリに基づいて、コールドデータに対応するLBA範囲を指定したリードコマンドをSSD3に発行する(ステップS75)。SSD3では、このリードコマンドに応じて、指定されたLBA範囲のコールドデータが読み出され、ホスト2に送信される。
次いで、ホスト2は、このLBA範囲を指定し、読み出されたコールドデータを書き込むためのライトコマンドをSSD3に発行する(ステップS76)。SSD3では、このライトコマンドに応じて、コールドデータが格納されていた第1物理記憶領域ではなく、別の第2物理記憶領域にコールドデータが書き込まれる。そして、SSD3では、LUT34が更新され、このLBA範囲が第2物理記憶領域に関連付けられると共に、これまで格納されていた第1物理記憶領域のデータが無効化される。したがって、第2物理記憶領域に格納されているデータは有効データであり、第1物理記憶領域に格納されているデータは無効データとなる。
そして、ホスト2は、コールドデータを示すリストに、移動すべきコールドデータを示す別のエントリが含まれているか否かを判定する(ステップS77)。リストに別のエントリが含まれている場合(ステップS77のYES)、ステップS75に戻り、その別のエントリに基づく処理が続行される。
リストに別のエントリが含まれていない場合(ステップS77のNO)、すなわち、リスト内の全てのエントリに基づく処理が完了した場合、コールドブロック制御処理を終了する。
以上のように、SSD3は、コールドデータのLBA範囲を示すリストを含むコールドブロック情報36をホスト2に送信する。そして、ホスト2は、リストに示されるLBA範囲のコールドデータを読み出すためのリードコマンドと、当該LBA範囲に読み出されたコールドデータを書き込むためのライトコマンドとを発行する。これらコマンドに応じて、リストに示される論理アドレス範囲のコールドデータが、コールドブロックから新たな書き込み先ブロックに移動されることにより、コールドブロック内のOPが回収される。ホスト2は、コマンドを発行するタイミングを制御できるので、ホスト2のリソースや、ホスト2からSSD3へのアクセスに対する影響が低いタイミングで、SSD3に、コールドブロック内のOPを回収するための動作を行わせることができる。
(第4実施形態)
第3実施形態では、SSD3は、コールドデータの論理アドレス範囲を示すリストを含むコールドブロック情報36をホスト2に送信し、ホスト2によって発行されるコマンドに応じて、リストに示される論理アドレス範囲のコールドデータが、コールドブロックから新たな書き込み先ブロックに移動されることにより、コールドブロック内のOPを回収する。これに対して、第4実施形態では、リストに示される論理アドレス範囲のコールドデータだけでなく、その周辺の論理アドレスのデータも、新たな書き込み先ブロックに移動する。
第3実施形態では、SSD3は、コールドデータの論理アドレス範囲を示すリストを含むコールドブロック情報36をホスト2に送信し、ホスト2によって発行されるコマンドに応じて、リストに示される論理アドレス範囲のコールドデータが、コールドブロックから新たな書き込み先ブロックに移動されることにより、コールドブロック内のOPを回収する。これに対して、第4実施形態では、リストに示される論理アドレス範囲のコールドデータだけでなく、その周辺の論理アドレスのデータも、新たな書き込み先ブロックに移動する。
第4実施形態に係るコンピュータシステム1の構成は第1乃至第3実施形態のコンピュータシステム1と同様であり、第4実施形態と第1乃至第3実施形態とでは、ホスト2のコールドブロック制御I/F部431によって実行される処理の手順のみが異なる。以下、第1乃至第3実施形態と異なる点のみを説明する。
図20は、コールドブロック内のOPを回収する際に、コールドデータのLBA範囲の周辺のLBAのデータも、新たな書き込み先ブロックに移動される例を示す。ここでは、コールドブロック51(コールドブロックA)内のコールドデータ(有効データ)に対応するLBA範囲のリストを含むコールドブロック情報36が、SSD3からホスト2に送信される場合を想定する。
コールドブロック51には、有効データ511と無効データ512,513,514とが含まれている。これら無効データ512,513,514は、有効データ511と同時期に書き込まれたデータが、対応するLBAへの上書きが要求されたことに応じて、別のブロック52,53,54(ブロックB,C,D)に新たなデータが書き込まれたことにより、無効化されたものである。
無効データ512の物理記憶位置にマッピングされていたLBAは、このLBAへの上書きの要求に応じてブロック52に新たに書き込まれたデータ521の物理記憶位置にマッピングされている。無効データ513の物理記憶位置にマッピングされていたLBAは、このLBAへの上書きの要求に応じてブロック53に新たに書き込まれたデータ531の物理記憶位置にマッピングされている。また、無効データ514の物理記憶位置にマッピングされていたLBAは、このLBAへの上書きの要求に応じてブロック54に新たに書き込まれたデータ541の物理記憶位置にマッピングされている。
これらデータ521,531,541は、コールドブロック51への書き込み時には有効データ511と同時期に書き込まれたが、一部の上書き(書き換え)によって、別のブロック52,53,54に書き込まれ、断片化されたデータであると云える。したがって、コールドブロック51内の有効データ511と、ブロック52,53,54内に断片化されたデータ521,531,541とは、元々は同時期に書き込まれた一連のデータであるので、これらデータ511,521,531,541をまとめて一つのブロックに書き込むことにより、アクセス性能の向上が期待できる。
そのため、コールドブロック51のOPを回収する処理を行う際に、コールドブロック51内の有効データ511を新たな書き込み先ブロック55(コールドブロックX)に移動すると共に、データ521,531,541もこの書き込み先ブロック55に移動する。これらデータ511,521,531,541は、対応するLBAに従った順序で、書き込み先ブロック内に書き込まれてもよい。この移動に応じて、データ511,521,531,541に対応するLBA範囲に、これらデータ511,521,531,541が書き込まれたブロック55の物理記憶位置がマッピングされるようにLUT34が更新されると共に、ブロック51,52,53,54に書き込まれていた以前のデータ511,521,531,541が無効化される。これにより、コールドブロック51は、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なフリーブロックとなる。
なお、第1実施形態および第2実施形態において、コールドブロックGCを行う際に、上記と同様にして周辺のLBAのデータも、GCデスティネーションブロックに移動するようにしてもよい。
以下に、上記の処理を実現するための構成の一例について説明する。
ホスト2のコールドブロック制御I/F部431は、コールドブロック51内のコールドデータ(有効データ)を示すLBA範囲のリストを用いて、図21に示すように、コールドデータを示すLBA範囲に、元来コールドデータであると推定されるデータに対応する周辺のLBA(またはLBA範囲)を加えたリストを生成する。周辺のLBAは、例えば、リストに示されるLBA範囲に先行するLBAや、当該LBA範囲に後続するLBAである。
例えば、コールドブロック制御I/F部431は、開始LBAが“0”であり、NLBが“10”である第1LBA範囲のエントリと、開始LBAが“11”であり、NLBが“9”である第2LBA範囲のエントリとを用いて、その周辺のLBAである“10”を検出する。そして、コールドブロック制御I/F部431は、LBAが“10”であるデータが、元来コールドデータであるか否かを判定する。コールドブロック制御I/F部431は、LBAが“10”であるデータが、例えば、第1LBA範囲のデータと第2LBA範囲のデータとが書き込まれているコールドブロックに、第1LBA範囲のデータおよび第2LBA範囲のデータと同時期に書き込まれていたデータの更新(上書き)データである場合や、そのコールドブロックに、第1LBA範囲のデータおよび第2LBA範囲のデータと同プロセスで書き込まれていたデータの更新データである場合に、LBAが“10”であるデータが元来コールドデータであると判定する。
コールドブロック制御I/F部431は、LBAが“10”であるデータが元来コールドデータであると判定された場合、リストに示されるコールドデータのLBA範囲にLBA“10”がさらに含まれるように、当該リストを変更する。コールドブロック制御I/F部431は、例えば、図21に示すように、第1LBA範囲および第2LBA範囲のエントリを、第1LBA範囲と第2LBA範囲とLBA“10”とを含む、開始LBAが“0”であり、NLBが“20”であるエントリに変更する。
このように変更されたリストを用いることにより、コールドブロック内のOPを回収する際に、そのコールドブロック内のコールドデータだけでなく、元来コールドデータである周辺のLBAのデータも、新たな書き込み先ブロックに移動されるので、OPの確保だけでなく、アクセス性能も向上させることができる。
図22のフローチャートは、ホスト2によって実行されるコールドブロック制御処理の手順の例を示す。ステップS81からステップS84までの手順は、図19のフローチャートを参照して上述したステップS71からステップS74までの手順と同様である。
コールドブロック内のOP回収のタイミングであると判定された場合(ステップS84のYES)、ホスト2は、受信したコールドデータを示すリストを用いて、コールドデータが格納されていると推定される周辺のLBA(LBA範囲)をさらに含むリストを作成する(ステップS85)。したがって、作成されたリストには、例えば、コールドデータに対応するLBA範囲と、コールドデータと推定されるデータのLBA(LBA範囲)とを示す一つ以上のエントリが含まれている。
ホスト2は、作成されたリスト内のあるエントリに基づいて、コールドデータと、コールドデータであると推定されるデータの少なくとも一方に対応するLBA範囲を指定したリードコマンドをSSD3に発行する(ステップS86)。SSD3では、このリードコマンドに応じて、指定されたLBA範囲のデータが読み出され、ホスト2に送信される。
ホスト2は、このLBA範囲を指定した、読み出されたデータを書き込むためのライトコマンドをSSD3に発行する(ステップS87)。SSD3では、このライトコマンドに応じて、そのデータが格納されていた第1物理記憶領域ではなく、別の第2物理記憶領域にデータが書き込まれる。そして、SSD3では、LUT34が更新され、このLBA範囲が第2物理記憶領域に関連付けられると共に、これまで格納されていた第1物理記憶領域のデータが無効化される。したがって、第2物理記憶領域に格納されているデータは有効データであり、第1物理記憶領域に格納されているデータは無効データとなる。
そして、ホスト2は、ステップS85で作成されたリストに、移動すべきデータを示す別のエントリが含まれているか否かを判定する(ステップS88)。リストに別のエントリが含まれている場合(ステップS88のYES)、ステップS86に戻り、その別のエントリに基づく処理が続行される。
リストに別のエントリが含まれていない場合(ステップS88のNO)、すなわち、リスト内の全てのエントリに基づく処理が完了した場合、コールドブロック制御処理を終了する。
(第5実施形態)
第1乃至第4実施形態では、SSD3において、コールドブロック内のコールドデータを別のブロックに移動することにより、コールドブロック内のOPを回収している。これに対して、第5実施形態では、SSD3のコールドブロック内のコールドデータを、別のストレージに移動することにより、コールドブロック内のOPを回収する。
第1乃至第4実施形態では、SSD3において、コールドブロック内のコールドデータを別のブロックに移動することにより、コールドブロック内のOPを回収している。これに対して、第5実施形態では、SSD3のコールドブロック内のコールドデータを、別のストレージに移動することにより、コールドブロック内のOPを回収する。
第5実施形態に係るコンピュータシステムの構成は、第1乃至第4実施形態と同様のコンピュータシステム1に別のストレージをさらに設けたものであり、ホスト2のコールドブロック制御I/F部431とコールドデータ管理部432とによって実行される処理の手順のみが異なる。以下、第1乃至第4実施形態と異なる点のみを説明する。
図23は、ホスト2と第1SSD3に加えて、第2SSD7をさらに備えるコンピュータシステム1Aにおける、コールドブロック内のOPを回収するための動作の例を示す。第1SSD3は、ホットデータを格納するためのホットストレージであり、コールドブロック内のOPを回収する対象となるストレージである。また、第2SSD7は、コールドデータを格納するためのコールドストレージである。なお、コールドストレージとして、第2SSD7の代わりにHDDが用いられてもよい。第1SSD3と第2SSD7とはそれぞれ、DASとしてホスト2に接続されている。
ホスト2は、第1SSD3にコールドブロック情報36を問い合わせる。第1SSD3は、この問合せに応じて、コールドブロック情報36をホスト2に送信する。コールドブロック情報36は、第1SSD3のNAND型フラッシュメモリ5内のコールドデータに対応する論理ブロックアドレスの範囲(LBA範囲)のリストを含む。このコールドブロック情報36については、図15および図16を参照して上述した通りである。
ホスト2は、コールドブロック情報36を用いて、コールドデータのLBA範囲を指定したリードコマンドを第1SSD3に発行する。第1SSD3は、リードコマンドに応じて、NAND型フラッシュメモリ5から指定されたLBA範囲のコールドデータを読み出し、ホスト2に送信する。以上により、ホスト2は、第1SSD3からコールドデータを読み出すことができる。
そして、ホスト2は、そのLBA範囲を指定した、読み出されたコールドデータを書き込むためのライトコマンドを第2SSD7に発行する。なお、このライトコマンドには、図17に示したような、書き込まれるデータがコールドデータであることを示す情報が含まれていてもよい。
第2SSD7は、ライトコマンドに応じて、第2SSD7内のNAND型フラッシュメモリにそのコールドデータを書き込む。第2SSD7は、ライトコマンドに含まれる、書き込まれるデータがコールドデータであることを示す情報に応じて、コールドデータの書き込みに適したブロック(例えば、プログラム/イレーズサイクル数が多いブロック)を書き込み先ブロックとして選択してもよい。また、第2SSD7では、ライトコマンドで指定されたLBA範囲が、コールドデータが書き込まれた物理記憶領域にマッピングされるように、第2SSD7内のLUTが更新される。以上により、ホスト2は、第2SSD7にコールドデータを書き込むことができる。
このようなコールドデータの読み出しおよび書き込みにより、コールドデータを、第1SSD3内のコールドブロックから、第2SSD7内のホストライトのための書き込み先ブロックに移動することができる。ホスト2は、移動されたデータのLBA範囲を指定したトリムコマンドを第1SSD3に発行する。第1SSD3は、トリムコマンドに指定されたLBA範囲が、いずれの物理記憶領域にもマッピングされないアンマップ状態になるように、LUT34を更新する。したがって、コールドデータがそれまで書き込まれていたコールドブロック内の物理記憶領域は、いずれのLBAにもマッピングされていない、無効データが格納される領域となる。
また、ホスト2のコールドデータ管理部432は、あるLBA範囲のデータが、いずれのSSD3,7に格納されているかを管理する。例えば、あるLBA範囲のデータが、第1SSD3から第2SSD7に移動された場合、そのLBA範囲のデータが第2SSD7に格納されていることを管理する。この管理には、例えば、LBA範囲−ストレージ管理テーブル412Aが用いられる。
図24は、LBA範囲−ストレージ管理テーブル412Aの一構成例を示す。LBA範囲−ストレージ管理テーブル412Aは、一つ以上のLBA範囲に対応する一つ以上のレコードを含む。各レコードは、例えば、開始LBA、長さ(論理ブロックの数)、およびストレージIDを含む。
あるLBA範囲に対応するレコードにおいて、「開始LBA」は、そのLBA範囲の先頭のLBAを示す。「長さ」は、そのLBA範囲に含まれる論理ブロックの数(NLB)を示す。「ストレージID」は、そのLBA範囲に対応するデータが格納されているストレージの識別情報を示す。例えば、図23に示すコンピュータシステム1の構成であれば、「ストレージID」には、第1SSD3に付与された識別情報(ここでは“0001”)、または第2SSD7に付与された識別情報(ここでは“0002”)のいずれかが設定される。
コールドデータ管理部432は、図24に示すように、例えば、開始LBAが“500”であり、NLBが“80”であるLBA範囲のデータが、第1SSD3(ストレージID“0001”)から第2SSD7(ストレージID“0002”)に移動された場合、開始LBAが“500”であり、NLBが“80”であるLBA範囲に対応するレコードに設定されるストレージIDを“0001”から“0002”に変更する。
コールドデータ管理部432は、あるLBA範囲へのアクセスが要求された場合、LBA範囲−ストレージ管理テーブル412Aを用いて、そのLBA範囲に関連付けられたストレージIDのストレージにアクセスされるように(例えば、そのストレージに対してコマンドが発行されるように)制御する。コールドデータ管理部432は、例えば、図24の更新されたLBA範囲−ストレージ管理テーブル412Aを用いて、開始LBAが“500”であり、NLBが“80”であるLBA範囲へのアクセスが要求された場合には、第2SSD7にアクセスされるように制御する。
ホスト2では、例えば、コールドブロック情報36に示されるLBA範囲毎に、上述したような、コールドデータを第1SSD3から第2SSD7に移動するための動作が行われる。このような動作により、第1SSD3内のコールドブロックに含まれる全てのコールドデータ(有効データ)が、第2SSD7内のホストライトのための書き込み先ブロックに移動されたならば、そのコールドブロックは、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なフリーブロックとなる。したがって、コールドブロック内のOPを回収することができる。
図25のフローチャートは、ホスト2によって実行されるコールドブロック制御処理の手順の例を示す。
ホスト2は、第1SSD3にコールドブロック情報36を問い合わせるタイミングであるか否かを判定する(ステップS91)。ホスト2は、例えば、一定時間毎に、第1SSD3にコールドブロック情報36を問い合わせるタイミングであると判定する。コールドブロック情報36を問い合わせるタイミングでない場合(ステップS91のNO)、ステップS91に戻る。
コールドブロック情報36を問い合わせるタイミングである場合(ステップS91のYES)、ホスト2は、第1SSD3にコールドブロック情報36を問い合わせる(ステップS92)。そして、ホスト2は、第1SSD3によって送信された、コールドデータを示すリストを含むコールドブロック情報36を受信する(ステップS93)。コールドデータを示すリストには、コールドデータに対応する一つ以上のLBA範囲に対応する一つ以上のエントリが含まれる。
次いで、ホスト2は、第1SSD3のコールドブロック内のOPの回収タイミングであるか否かを判定する(ステップS94)。ホスト2は、例えば、ホスト2上で同時に動作しているプロセス数が少ない等の指標に基づいて、第1SSD3へのアクセスの頻度が低いタイミングを、コールドブロック内のOPの回収タイミングとして検出する。コールドブロック内のOPの回収タイミングでないと判定された場合(ステップS94のNO)、ステップS91に戻る。
一方、コールドブロック内のOPの回収タイミングであると判定された場合(ステップS94のYES)、ホスト2は、コールドデータを示すリスト内のあるエントリに基づいて、コールドデータに対応するLBA範囲を指定したリードコマンドを第1SSD3に発行する(ステップS95)。第1SSD3では、このリードコマンドに応じて、指定されたLBA範囲のコールドデータが読み出され、ホスト2に送信される。
次いで、ホスト2は、このLBA範囲を指定した、読み出されたコールドデータを書き込むためのライトコマンドを第2SSD7に発行する(ステップS96)。第2SSD7では、このライトコマンドに応じて、ある物理記憶位置にコールドデータを書き込む。そして、第2SSD7では、LUTが更新され、このLBA範囲が当該物理記憶位置に関連付けられる。
第2SSD7における書き込みが完了したならば、ホスト2は、このLBA範囲を指定したトリムコマンドを第1SSD3に発行する(ステップS97)。第1SSD3では、指定されたLBA範囲に対応する物理記憶領域、すなわち、コールドデータが書き込まれていた物理記憶領域のデータが無効化されると共に、LUT34が更新され、指定されたLBA範囲がいずれの物理記憶領域にもマッピングされないアンマップ状態にされる。
次いで、ホスト2は、このLBA範囲に対応するデータが第2SSD7に格納されていることを示すように、LBA範囲−ストレージ管理テーブル412A内の、当該LBA範囲に対応するレコードを更新する(ステップS98)。これにより、ホスト2は、LBA範囲−ストレージ管理テーブル412Aを用いて、このLBA範囲のデータにアクセスする場合に、第2SSD7にコマンドを発行すべきであると判断することができる。
そして、ホスト2は、コールドデータを示すリストに、移動すべきコールドデータを示す別のエントリが含まれているか否かを判定する(ステップS99)。リストに別のエントリが含まれている場合(ステップS99のYES)、ステップS95に戻り、その別のエントリに基づく処理が続行される。
リストに別のエントリが含まれていない場合(ステップS99のNO)、すなわち、リスト内の全てのエントリに基づく処理が完了した場合、コールドブロック制御処理を終了する。
以上の構成により、第2SSD7(コールドストレージ)がさらに設けられる場合、第1SSD3(ホットストレージ)のコールドブロック内のコールドデータがその第2SSD7に移動される。これにより、ホストライトに対する、第1SSD3のNANDアクセスのバンド幅を消費することなく、コールドブロック内のOPを回収できると共に、コールドデータとホットデータとを別々のSSD3,7に分離することができる。
(第6実施形態)
第5実施形態では、第1SSD3のコールドブロック内のコールドデータを、ホスト2にDASとして接続された第2SSD7に書き込んでいる。これに対して、第6実施形態では、第1SSD3のコールドブロック内のコールドデータを、ネットワークを介してホスト2に接続された別のストレージに書き込む。
第5実施形態では、第1SSD3のコールドブロック内のコールドデータを、ホスト2にDASとして接続された第2SSD7に書き込んでいる。これに対して、第6実施形態では、第1SSD3のコールドブロック内のコールドデータを、ネットワークを介してホスト2に接続された別のストレージに書き込む。
第6実施形態に係るコンピュータシステムの構成は、第5実施形態のコンピュータシステム1A内の第2SSD7をDASとしてではなく、ネットワークを介してホスト2に接続したものであり、第6実施形態と第1乃至第5実施形態とでは、ホスト2のコールドブロック制御I/F部431によって実行される処理の手順のみが異なる。以下、第1乃至第5実施形態と異なる点のみを説明する。
図26は、ホスト2と第1SSD3に加えて、第2SSD7をさらに備えるコンピュータシステム1Bにおける、コールドブロック内のOPを回収するための動作の例を示す。第1SSD3は、ホットデータを格納するためのホットストレージであり、コールドブロック内のOPを回収する対象となるストレージである。また、第2SSD7は、コールドデータを格納するためのコールドストレージである。なお、コールドストレージとして、第2SSD7の代わりにHDDが用いられてもよいし、コールドストレージが複数であってもよい。第1SSD3はDASとしてホスト2に接続されている。また、第2SSD7は、NASやクラウドストレージのような、ネットワーク8を介してホスト2に接続されるストレージである。
ホスト2は、第1SSD3にコールドブロック情報36を問い合わせる。第1SSD3は、この問合せに応じて、コールドブロック情報36をホスト2に送信する。コールドブロック情報36は、第1SSD3のNAND型フラッシュメモリ5内のコールドデータに対応する論理アドレスの範囲(LBA範囲)のリストを含む。このコールドブロック情報36については、図15および図16を参照して上述した通りである。
ホスト2は、コールドブロック情報36を用いて、コールドデータのLBA範囲を指定したリードコマンドを第1SSD3に発行する。第1SSD3は、リードコマンドに応じて、NAND型フラッシュメモリ5から、指定されたLBA範囲のコールドデータを読み出し、ホスト2に送信する。以上により、ホスト2は、第1SSD3からコールドデータを読み出すことができる。
そして、ホスト2は、そのLBA範囲を指定した、読み出されたコールドデータを書き込むためのライトコマンドを、ネットワーク8を介して第2SSD7に発行する。なお、このライトコマンドには、図17に示したように、書き込まれるデータがコールドデータであることを示す情報が含まれていてもよい。
第2SSD7は、ライトコマンドに応じて、第2SSD7内のNAND型フラッシュメモリにそのコールドデータを書き込む。第2SSD7は、ライトコマンドに含まれる、書き込まれるデータがコールドデータであることを示す情報に応じて、コールドデータの書き込みに適したブロック(例えば、プログラム/イレーズサイクル数が多いブロック)を書き込み先ブロックとして選択してもよい。また、第2SSD7では、ライトコマンドで指定されたLBA範囲が、コールドデータが書き込まれた物理記憶領域にマッピングされるように、第2SSD7内のLUTが更新される。以上により、ホスト2は、第2SSD7にコールドデータを書き込むことができる。
このようなコールドデータの読み出しおよび書き込みにより、コールドデータを、第1SSD3内のコールドブロックから、第2SSD7内のホストライトのための書き込み先ブロックに移動することができる。ホスト2は、移動されたデータのLBA範囲を指定したトリムコマンドを第1SSD3に発行する。第1SSD3は、トリムコマンドに指定されたLBA範囲が、いずれの物理記憶領域にもマッピングされないアンマップ状態になるように、LUT34を更新する。したがって、コールドデータがそれまで書き込まれていたコールドブロック内の物理記憶領域は、いずれのLBAにもマッピングされていない、無効データが格納される領域となる。
また、ホスト2のコールドデータ管理部432は、あるLBA範囲のデータが、いずれのSSD3,7に格納されているかを管理する。例えば、あるLBA範囲のデータが、第1SSD3から第2SSD7に移動された場合、そのLBA範囲のデータがネットワーク8を介して接続された第2SSD7に格納されていることを管理する。
この管理には、例えば、LBA範囲−ストレージ管理テーブル412Aが用いられる。LBA範囲−ストレージ管理テーブル412Aについては、図24を参照して上述した通りである。なお、あるLBA範囲のデータがネットワーク8を介して接続されている第2SSD7に格納された場合、LBA範囲−ストレージ管理テーブル412Aにおいて、「ストレージID」の代わりに、ネットワーク上の位置が管理されてもよい。
コールドデータ管理部432は、あるLBA範囲へのアクセスが要求された場合、LBA範囲−ストレージ管理テーブル412Aを用いて、そのLBA範囲に関連付けられたネットワーク上の位置のストレージにアクセスされるように(例えば、そのストレージに対してコマンドが発行されるように)制御する。
以上の構成により、ネットワーク8を介して第2SSD7(コールドストレージ)が設けられる場合にも、第1SSD3(ホットストレージ)のコールドブロック内のコールドデータがその第2SSD7に移動される。これにより、ホストライトに対する、第1SSD3のNANDアクセスのバンド幅を消費することなく、コールドブロック内のOPを回収できると共に、コールドデータとホットデータとを別々のSSD3,7に分離することができる。
(第7実施形態)
第1および第2実施形態では、ホスト2がSSD3にコールドブロック内のOPの回収(コールドブロックGCの実行)を要求している。また、第3乃至第6実施形態では、ホスト2によるSSD3からのコールドデータの読み出しおよび書き込みによって、コールドブロック内のOPが回収されている。第7実施形態では、第1および第2実施形態と同様に、ホスト2による要求に応じてコールドブロック内のOPの回収を開始するが、SSD3による別のSSD7へのコールドデータの書き込みによって、コールドブロック内のOPが回収される。
第1および第2実施形態では、ホスト2がSSD3にコールドブロック内のOPの回収(コールドブロックGCの実行)を要求している。また、第3乃至第6実施形態では、ホスト2によるSSD3からのコールドデータの読み出しおよび書き込みによって、コールドブロック内のOPが回収されている。第7実施形態では、第1および第2実施形態と同様に、ホスト2による要求に応じてコールドブロック内のOPの回収を開始するが、SSD3による別のSSD7へのコールドデータの書き込みによって、コールドブロック内のOPが回収される。
第7実施形態に係るコンピュータシステムの構成は、第6実施形態のコンピュータシステム1Bにおいて、ネットワーク8を介して、ホスト2とSSD7とが接続されるだけでなく、SSD3とSSD7も接続され、第7実施形態と第1乃至第6実施形態とでは、SSD3のコールドブロック制御部123によって実行される処理の手順のみが異なる。以下、第1乃至第6実施形態と異なる点のみを説明する。
図27は、ホスト2と第1SSD3に加えて、第2SSD7をさらに備えるコンピュータシステム1Bにおける、コールドブロック内のOPを回収するための動作の例を示す。第1SSD3は、ホットデータを格納するためのホットストレージであり、コールドブロックのOPを回収する対象となるストレージである。また、第2SSD7は、コールドデータを格納するためのコールドストレージである。なお、コールドストレージとして、第2SSD7の代わりにHDDが用いられてもよいし、コールドストレージが複数であってもよい。第1SSD3はDASとしてホスト2に接続されている。また、第2SSD7は、NASやクラウドストレージのような、ネットワーク8を介してホスト2に接続されるストレージである。さらに、第1SSD3と第2SSD7とは、ネットワーク8を介して接続されている。
ホスト2は、第1SSD3にコールドブロック情報36を問い合わせる。第1SSD3は、この問合せに応じて、コールドブロック情報36をホスト2に送信する。コールドブロック情報36は、例えば、コールドブロックから回収可能なOP量、コールドブロックからOPを回収する動作のみが行われた場合の推定される処理時間または処理量、等を含む。
ホスト2は、コールドブロック情報36を用いて、第1SSD3にコールドブロック内のOPの回収を指示するか否かを判定する。ホスト2は、例えば、ホスト2がアイドル状態である場合のように、コールドブロック内のOPを回収する動作が実行されたとしても、ホスト2からのアクセスへの影響が小さい場合に、第1SSD3にコールドブロック内のOPの回収を指示する。第1SSD3は、ホスト2による指示に応じて、コールドブロック内のOPを回収するための処理の実行を開始する。
第1SSD3(リード制御部124)は、コールドブロックのリストに示されるコールドブロックから、コールドデータ(有効データ)を読み出す。コールドブロックのリストは、例えば、コールドブロック情報36に含まれている。ここでは、読み出されたコールドデータが、第1LBA範囲に対応するデータであることを想定する。
第1SSD3は、第1LBA範囲を指定した、読み出されたコールドデータを書き込むためのライトコマンドを第2SSD7に発行する。なお、このライトコマンドには、図17に示したように、書き込まれるデータがコールドデータであることを示す情報が含まれていてもよい。
第2SSD7は、ライトコマンドに応じて、第2SSD7内のNAND型フラッシュメモリにそのコールドデータを書き込む。第2SSD7は、ライトコマンドに含まれる、書き込まれるデータがコールドデータであることを示す情報に応じて、コールドデータの書き込みに適したブロック(例えば、プログラム/イレーズサイクル数が多いブロック)を書き込み先ブロックとして選択してもよい。また、第2SSD7では、ライトコマンドで指定されたLBA範囲が、コールドデータが書き込まれた物理記憶領域にマッピングされるように、第2SSD7内のLUTが更新される。以上により、第1SSD3は、第2SSD7にコールドデータを書き込むことができる。
このようなコールドデータの読み出しおよび書き込みにより、コールドデータを、第1SSD3内のコールドブロックから、第2SSD7内の書き込み先ブロックに移動することができる。第1SSD3は、第2SSD7に移動されたコールドデータの第1LBA範囲が、第1SSD3内のいずれの物理記憶領域にもマッピングされないアンマップ状態になるように、LUT34を更新する。したがって、コールドデータがそれまで書き込まれていたコールドブロック内の物理記憶領域は、いずれのLBAにもマッピングされていない、無効データが格納される領域となる。
そして、第1SSD3は、第1LBA範囲のデータが第1SSD3から第2SSD7に移動されたことを、ホスト2に通知する。
ホスト2のコールドデータ管理部432は、第1SSD3からの通知に基づき、第1LBA範囲のデータが第2SSD7に格納されていることを管理する。この管理には、例えば、LBA範囲−ストレージ管理テーブル412Aが用いられる。LBA範囲−ストレージ管理テーブル412Aについては、図24を参照して上述した通りである。なお、あるLBA範囲のデータがネットワーク8を介して接続されている第2SSD7に格納された場合、LBA範囲−ストレージ管理テーブル412Aにおいて、「ストレージID」の代わりに、ネットワーク上の位置が管理されてもよい。
コールドデータ管理部432は、あるLBA範囲へのアクセスが要求された場合、LBA範囲−ストレージ管理テーブル412Aを用いて、そのLBA範囲に関連付けられたネットワーク上の位置のストレージにアクセスされるように(例えば、そのストレージに対してコマンドが発行されるように)制御する。
以上の構成により、第1SSD3は、ホスト2によるコールドブロック内のOPの回収指示に応じて、第1SSD3(ホットストレージ)のコールドブロック内のコールドデータを第2SSD7(コールドストレージ)に移動する。これにより、ホストライトに対する、第1SSD3のNANDアクセスのバンド幅を消費することなく、コールドブロック内のOPを回収できると共に、コールドデータとホットデータとを別々のSSD3,7に分離することができる。
図28のフローチャートは、第1SSD3のコントローラ4によって実行されるOP回収制御処理の手順の例を示す。
コントローラ4は、ホスト2からコールドブロック内のOPの回収が指示されたか否かを判定する(ステップS201)。コールドブロック内のOPの回収が指示されていない場合(ステップS201のNO)、ステップS201に戻る。
コールドブロック内のOPの回収が指示された場合(ステップS201のYES)、コントローラ4は、コールドブロックのリストに示される、あるコールドブロック内のコールドデータ(有効データ)を読み出す(ステップS202)。そして、コントローラ4は、読み出されたコールドデータが格納されていた物理記憶領域に対応するLBA範囲に、その読み出されたコールドデータを書き込むためのライトコマンドを、ネットワーク8を介して第2SSD7に発行する(ステップS203)。第2SSD7では、このライトコマンドに応じて、ある物理記憶領域にコールドデータを書き込む。そして、第2SSD7では、LUTが更新され、このLBA範囲が当該物理記憶領域に関連付けられる。
第2SSD7における書き込みが完了したならば、コントローラ4は、LUT34を更新し、このLBA範囲をいずれの物理記憶領域にもマッピングされないアンマップ状態にして、当該LBA範囲に対応する物理記憶領域、すなわち、コールドデータが書き込まれていた物理記憶領域のデータを無効化する(ステップS204)。そして、コントローラ4は、このLBA範囲のコールドデータが第2SSD7に移動されたことをホスト2に通知する(ステップS205)。
次いで、コントローラ4は、移動すべき別のコールドデータがあるか否かを判定する(ステップS206)。コントローラ4は、例えば、コールドブロックにまだ移動されていないコールドデータがある場合や、処理されていない別のコールドブロックがある場合に、移動すべき別のコールドデータがあると判定する。移動すべき別のコールドデータがある場合(ステップS206のYES)、ステップS202に戻り、その別のコールドデータを第2SSD7に移動するための処理が続行される。
移動すべき別のコールドデータがない場合(ステップS206のNO)、すなわち、全てのコールドデータが第2SSD7に移動された場合、コントローラ4は、コールドブロック内のOPの回収完了をホスト2に通知する(ステップS207)。
また、図29のフローチャートは、ホスト2によって実行されるコールドブロック制御処理の手順の例を示す。
ホスト2は、第1SSD3にコールドブロック情報36を問い合わせるタイミングであるか否かを判定する(ステップS301)。ホスト2は、例えば、一定時間毎に、第1SSD3にコールドブロック情報36を問い合わせるタイミングであると判定する。コールドブロック情報36を問い合わせるタイミングでない場合(ステップS301のNO)、ステップS301に戻る。
コールドブロック情報36を問い合わせるタイミングである場合(ステップS301のYES)、ホスト2は、第1SSD3にコールドブロック情報36を問い合わせる(ステップS302)。そして、ホスト2は、第1SSD3によって送信されたコールドブロック情報36を受信する(ステップS303)。
次いで、ホスト2は、第1SSD3に対するコールドブロック内のOPの回収指示タイミングであるか否かを判定する(ステップS304)。ホスト2は、例えば、ホスト2上で同時に動作しているプロセス数が少ない等の指標に基づいて、第1SSD3へのアクセスの頻度が低いタイミングを、コールドブロック内のOPの回収指示タイミングとして検出する。コールドブロック内のOPの回収指示タイミングでないと判定された場合(ステップS304のNO)、ステップS301に戻る。
一方、コールドブロック内のOPの回収指示タイミングであると判定された場合(ステップS304のYES)、ホスト2は、第1SSD3にコールドブロック内のOP回収のリクエストを発行する(ステップS305)。
そして、ホスト2は、第1SSD3から、コールドデータが移動されたことを示す通知を受信したか否かを判定する(ステップS306)。この通知には、移動されたコールドデータに対応するLBA範囲を示す情報が含まれる。コールドデータが移動されたことを示す通知を受信していない場合(ステップS306のNO)、ステップS306に戻る。
コールドデータが移動されたことを示す通知を受信した場合(ステップS306のYES)、その通知に示されるLBA範囲に対応するデータが第2SSD7に格納されていることを示すように、LBA範囲−ストレージ管理テーブル412A内の、このLBA範囲に対応するレコードを更新する(ステップS307)。これにより、ホスト2は、LBA範囲−ストレージ管理テーブル412Aを用いて、あるLBA範囲のデータにアクセスする場合に、いずれのストレージにコマンドを発行すべきであるかを決定することができる。
そして、ホスト2は、OP回収の完了通知を受信したか否かを判定する(ステップS308)。完了通知を受信していない場合(ステップS308のNO)、ステップS306に戻る。一方、完了通知を受信した場合(ステップS308のYES)、処理を終了する。
以上の構成により、ネットワーク8を介して第2SSD7(コールドストレージ)が設けられる場合に、ホスト2による要求に応じた第1SSD3(ホットストレージ)の動作によって、第1SSD3のコールドブロック内のコールドデータがその第2SSD7に移動される。これにより、第1SSD3のNANDアクセスのバンド幅を消費することなく、コールドブロック内のOPを回収できると共に、コールドデータとホットデータとを別々のSSD3,7に分離することができる。
図30は、第1乃至第7実施形態のいずれかにおいてホスト2として機能する情報処理装置(コンピューティングデバイス)のハードウェア構成例を示す。
この情報処理装置は、サーバ(例えば、ストレージサーバ)のようなコンピューティングデバイスとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションレイヤ41、OS42、ファイルシステム43を含む。
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。ネットワークコントローラ105を用いた有線通信または無線通信により、例えば、SSD7のようなストレージデバイスとの間でデータを送受信することもできる。
周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。複数のSSD3が複数のコネクタ107Aにそれぞれ接続されてもよい。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボードなどの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
以上説明したように、第1乃至第7実施形態によれば、ホストからのアクセスへの影響を軽減しながら、コールドブロック内の余剰容量(OP)を回収することができる。例えば、SSD3のコントローラ4は、NAND型フラッシュメモリ5に格納されているコールドデータに対応する第1論理アドレス範囲と、コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量とを示すコールドブロック情報36をホスト2に送信する。ホスト2のプロセッサ101は、このコールドブロック情報36を受信し、第1論理アドレス範囲を指定したリードコマンドをSSD3に発行する。コントローラ4は、このリードコマンドに応じて、NAND型フラッシュメモリ5からコールドデータを読み出してホスト2に送信する。プロセッサ101は、コールドデータを受信し、第1論理アドレス範囲を指定した、受信したコールドデータを書き込むためのライトコマンドをSSD3に発行する。コントローラ4は、このライトコマンドに応じて受信されるコールドデータを、NAND型フラッシュメモリ5に書き込む。
このようなコンピュータシステム1において、ホスト2は、リードコマンドおよびライトコマンドが発行されるタイミングを制御できるので、ホスト2にとって予期しないタイミングでホストライトに対するNANDアクセスのバンド幅が消費されることなく、SSD3に格納されているコールドブロック内のOPを回収することができる。ホスト2は、SSD3に格納されているコールドデータの状況を把握することができ、その用途に応じて適切な管理を行うことができる。
また、第1乃至第7実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。これら実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
また、第1乃至第7実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、これら実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…コンピュータシステム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、10…バス、11…ホストI/F、12…CPU、13…NAND I/F、14…DRAM I/F、121…コールドブロック制御I/F部、122…ブロック管理部、123…コールドブロック制御部、124…リード制御部、125…ライト制御部、126…GC制御部、127…コールドブロックGC制御部、31…リードバッファ、32…ライトバッファ、33…GCバッファ、34…LUT、35…ブロック管理情報、36…コールドブロック情報、431…コールドブロック制御I/F部、432…コールドデータ管理部。
Claims (20)
- インタフェースを介してホストと接続可能な電子機器であって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラとを具備し、
前記コントローラは、前記電子機器が前記ホストと接続された場合に、
前記不揮発性メモリに格納されているコールドデータに対応する第1論理アドレス範囲と、前記コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量とを示す情報を前記ホストに送信可能であり、
前記ホストから受信可能である前記第1論理アドレス範囲を指定したリードコマンドに応じて、前記不揮発性メモリから前記コールドデータを読み出して前記ホストに送信可能であり、
前記ホストから、前記第1論理アドレス範囲を指定したライトコマンドに応じて受信可能である前記コールドデータを、前記不揮発性メモリに書き込むように構成される電子機器。 - 前記コントローラは、
前記不揮発性メモリ内の第1物理記憶領域に前記コールドデータが格納されている場合に、前記ホストから受信可能である問合せに応じて、前記第1物理記憶領域に対応する前記第1論理アドレス範囲を示す情報を前記ホストに送信可能であり、
前記ホストから受信可能である前記第1論理アドレス範囲を指定したリードコマンドに応じて、前記不揮発性メモリから前記コールドデータを読み出して前記ホストに送信可能であり、
前記ホストから、前記第1論理アドレス範囲を指定したライトコマンドに応じて受信可能である前記コールドデータを、前記不揮発性メモリ内の第2物理記憶領域に書き込むように構成される請求項1記載の電子機器。 - 前記第1論理アドレス範囲は、前記第1論理アドレス範囲の先頭の論理アドレスと、前記第1論理アドレス範囲に含まれる論理ブロックの数とによって示される請求項1記載の電子機器。
- 前記第1論理アドレス範囲に対するアクセス頻度は閾値未満である請求項1記載の電子機器。
- 前記コールドブロックは、イレーズ回数が閾値未満であるブロック、またはブロックがイレーズされた順序を示す番号が特定の番号よりも小さいブロックであり、
前記コールドデータは、前記コールドブロック内の有効データである請求項1記載の電子機器。 - 前記コントローラは、さらに、前記電子機器が前記ホストと接続された場合に、
前記ホストから受信可能である問い合わせに応じて、前記不揮発性メモリ内の一つ以上のコールドブロックを、データを書き込み可能な一つ以上のブロックにするための処理量を示す情報を前記ホストに送信可能であり、
前記ホストから受信可能である要求に応じて、前記一つ以上のコールドブロックを、データを書き込み可能な一つ以上のブロックにするための処理を実行するように構成される請求項1記載の電子機器。 - 前記コントローラは、さらに、前記電子機器が前記ホストと接続された場合に、
前記不揮発性メモリ内の一つ以上のコールドブロックに含まれる無効データ量が閾値を超えた場合、前記無効データ量が前記閾値を超えたことを示す情報、または前記一つ以上のコールドブロックを、データを書き込み可能な一つ以上のブロックにする処理が必要であることを示す情報を前記ホストに送信可能である請求項1記載の電子機器。 - 前記ライトコマンドは、書き込まれるデータがコールドデータであることを示す情報を含む請求項1記載の電子機器。
- 前記コントローラは、さらに、前記電子機器が前記ホストと接続された場合に、
前記ホストから受信可能である、前記第1論理アドレス範囲と当該第1論理アドレス範囲に先行または後続する論理アドレスとを含む第2論理アドレス範囲を指定したリードコマンドに応じて、前記不揮発性メモリから第2データを読み出して前記ホストに送信可能であり、
前記ホストから、前記第2論理アドレス範囲を指定したライトコマンドに応じて受信可能である前記第2データを、前記不揮発性メモリに書き込むように構成される請求項1記載の電子機器。 - 前記コントローラは、さらに、前記電子機器が前記ホストと接続された場合に、
前記不揮発性メモリに格納されているデータリテンションのために移動すべき第3データに対応する第3論理アドレス範囲と、前記第3データを含むブロックをデータを書き込み可能なブロックにするための処理量とを示す情報を前記ホストに送信可能であり、
前記ホストから受信可能である前記第3論理アドレス範囲を指定したリードコマンドに応じて、前記不揮発性メモリから前記第3データを読み出して前記ホストに送信可能であり、
前記ホストから、前記第3論理アドレス範囲を指定したライトコマンドに応じて受信可能である前記第3データを、前記不揮発性メモリに書き込むように構成される請求項1記載の電子機器。 - 前記コントローラは、さらに、前記電子機器が前記ホストと接続された場合に、
前記不揮発性メモリから前記コールドデータを読み出し、
前記第1論理アドレス範囲を指定した、前記読み出されたコールドデータを書き込むためのライトコマンドを第2電子機器に発行し、
前記ライトコマンドに応じて前記コールドデータが前記第2電子機器内の第2不揮発性メモリに書き込まれた場合、前記不揮発性メモリに格納されている前記コールドデータを無効化し、
前記第1論理アドレス範囲に対応する前記コールドデータが前記第2電子機器に格納されていることを、前記ホストに通知可能であるように構成される請求項1記載の電子機器。 - メモリと、
前記メモリに格納されたプログラムを実行するように構成されたプロセッサとを具備し、
前記プロセッサは、
複数のブロックを含む不揮発性メモリを備えるストレージデバイスから、前記不揮発性メモリに格納されているコールドデータに対応する第1論理アドレス範囲と、前記コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量とを示す情報を受信し、
前記第1論理アドレス範囲を指定したリードコマンドを前記ストレージデバイスに発行し、前記ストレージデバイスから前記コールドデータを受信し、
前記第1論理アドレス範囲を指定した、前記受信したコールドデータを書き込むためのライトコマンドを、前記ストレージデバイスに発行するように構成される電子機器。 - 前記プロセッサは、
前記処理量と、前記ストレージデバイスに対するアクセス頻度と、前記電子機器のリソースがビジー状態である時間と、前記プロセッサによって実行中であるプロセスの量の少なくともいずれかに基づいて、前記コールドブロックを、データを書き込み可能なブロックにするための処理を実行すべきタイミングであるか否かを判定し、
前記コールドブロックを、データを書き込み可能なブロックにするための処理を実行すべきタイミングであると判定された場合に、
前記第1論理アドレス範囲を指定したリードコマンドを前記ストレージデバイスに発行し、前記ストレージデバイスから前記コールドデータを受信し、
前記第1論理アドレス範囲を指定した、前記受信したコールドデータを書き込むためのライトコマンドを前記ストレージデバイスに発行するように構成される請求項12記載の電子機器。 - 前記第1論理アドレス範囲は、前記第1論理アドレス範囲の先頭の論理アドレスと、前記第1論理アドレス範囲に含まれる論理ブロックの数とによって示される請求項12記載の電子機器。
- ストレージデバイスとホストとを含むコンピュータシステムであって、
前記ストレージデバイスは、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラとを具備し、
前記ホストは、
メモリと、
前記メモリに格納されたプログラムを実行するように構成されたプロセッサとを具備し、
前記コントローラは、
前記不揮発性メモリに格納されているコールドデータに対応する第1論理アドレス範囲と、前記コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量とを示す情報を前記ホストに送信し、
前記ホストから受信される前記第1論理アドレス範囲を指定したリードコマンドに応じて、前記不揮発性メモリから前記コールドデータを読み出して前記ホストに送信し、
前記ホストから、前記第1論理アドレス範囲を指定したライトコマンドに応じて受信される前記コールドデータを、前記不揮発性メモリに書き込むように構成され、
前記プロセッサは、
前記情報を受信し、
前記第1論理アドレス範囲を指定したリードコマンドを前記ストレージデバイスに発行し、前記ストレージデバイスから前記コールドデータを受信し、
前記第1論理アドレス範囲を指定した、前記受信したコールドデータを書き込むためのライトコマンドを前記ストレージデバイスに発行するように構成されるコンピュータシステム。 - 前記プロセッサは、
前記処理量と、前記ストレージデバイスに対するアクセス頻度と、前記ホストのリソースがビジー状態である時間と、前記プロセッサによって実行中であるプロセスの量の少なくともいずれかに基づいて、前記コールドブロックを、データを書き込み可能なブロックにするための処理を実行すべきタイミングであるか否かを判定し、
前記コールドブロックを、データを書き込み可能なブロックにするための処理を実行すべきタイミングであると判定された場合に、
前記第1論理アドレス範囲を指定したリードコマンドを前記ストレージデバイスに発行し、前記ストレージデバイスから前記コールドデータを受信し、
前記第1論理アドレス範囲を指定した、前記受信したコールドデータを書き込むためのライトコマンドを前記ストレージデバイスに発行するように構成される請求項15記載のコンピュータシステム。 - 前記第1論理アドレス範囲は、前記第1論理アドレス範囲の先頭の論理アドレスと、前記第1論理アドレス範囲に含まれる論理ブロックの数とによって示される請求項15記載のコンピュータシステム。
- 複数のブロックを含む不揮発性メモリを備える電子機器の制御方法であって、
前記不揮発性メモリに格納されているコールドデータに対応する論理アドレス範囲を示す情報と、前記コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量を示す情報とをホストに送信し、
前記ホストから受信される前記論理アドレス範囲を指定したリードコマンドに応じて、前記不揮発性メモリから前記コールドデータを読み出して前記ホストに送信し、
前記ホストから、前記論理アドレス範囲を指定したライトコマンドに応じて受信される前記コールドデータを、前記不揮発性メモリに書き込む制御方法。 - 複数のブロックを含む不揮発性メモリを備えるストレージデバイスから、前記不揮発性メモリに格納されているコールドデータに対応する論理アドレス範囲を示す情報と、前記コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量を示す情報とを受信し、
前記論理アドレス範囲を指定したリードコマンドを前記ストレージデバイスに発行し、
前記ストレージデバイスから前記コールドデータを受信し、
前記論理アドレス範囲を指定した、前記受信したコールドデータを書き込むためのライトコマンドを前記ストレージデバイスに発行する制御方法。 - 複数のブロックを含む不揮発性メモリを備えるストレージデバイスと、ホストとを含むコンピュータシステムの制御方法であって、
前記不揮発性メモリに格納されているコールドデータに対応する論理アドレス範囲と、前記コールドデータを含むコールドブロックをデータを書き込み可能なブロックにするための処理量とを示す情報を前記ストレージデバイスから前記ホストに送信し、
前記論理アドレス範囲を指定したリードコマンドを前記ホストから前記ストレージデバイスに送信し、
前記リードコマンドに応じて前記不揮発性メモリから読み出された前記コールドデータを前記ホストに送信し、
前記論理アドレス範囲を指定したライトコマンドを前記ホストから前記ストレージデバイスに送信し、
前記ライトコマンドに応じて受信される前記コールドデータを、前記不揮発性メモリに書き込む、制御方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018058610A JP2019169101A (ja) | 2018-03-26 | 2018-03-26 | 電子機器、コンピュータシステム、および制御方法 |
TW107127266A TWI712881B (zh) | 2018-03-26 | 2018-08-06 | 電子機器及其控制方法、電腦系統及其控制方法以及主機之控制方法 |
CN201810886696.0A CN110362499B (zh) | 2018-03-26 | 2018-08-06 | 电子机器及其控制方法、计算机系统及其控制方法以及主机的控制方法 |
US16/126,084 US10585590B2 (en) | 2018-03-26 | 2018-09-10 | Electronic device, computer system, and control method |
US16/780,101 US11023132B2 (en) | 2018-03-26 | 2020-02-03 | Electronic device, computer system, and control method |
US17/235,144 US11747979B2 (en) | 2018-03-26 | 2021-04-20 | Electronic device, computer system, and control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018058610A JP2019169101A (ja) | 2018-03-26 | 2018-03-26 | 電子機器、コンピュータシステム、および制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019169101A true JP2019169101A (ja) | 2019-10-03 |
Family
ID=67985230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018058610A Pending JP2019169101A (ja) | 2018-03-26 | 2018-03-26 | 電子機器、コンピュータシステム、および制御方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10585590B2 (ja) |
JP (1) | JP2019169101A (ja) |
CN (1) | CN110362499B (ja) |
TW (1) | TWI712881B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021045306A (ja) * | 2019-09-18 | 2021-03-25 | 株式会社大都技研 | 遊技台 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI696074B (zh) * | 2019-01-24 | 2020-06-11 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
TWI718492B (zh) * | 2019-03-12 | 2021-02-11 | 群聯電子股份有限公司 | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 |
US11467980B2 (en) * | 2020-01-10 | 2022-10-11 | Micron Technology, Inc. | Performing a media management operation based on a sequence identifier for a block |
US11640262B2 (en) * | 2020-05-07 | 2023-05-02 | Micron Technology, Inc. | Implementing variable number of bits per cell on storage devices |
US11868642B2 (en) * | 2021-08-31 | 2024-01-09 | Micron Technology, Inc. | Managing trim commands in a memory sub-system |
JP2023135390A (ja) * | 2022-03-15 | 2023-09-28 | キオクシア株式会社 | 情報処理装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030039152A1 (en) * | 2000-01-31 | 2003-02-27 | Danny Shum | It flash memory recovery scheme for over-erasure |
FI109620B (fi) * | 1999-10-26 | 2002-09-13 | Tellabs Oy | Menetelmä ja järjestely atomaaristen päivitysten toteuttamiseksi loogista flashmuistilaitetta käyttäen |
JP2004310650A (ja) * | 2003-04-10 | 2004-11-04 | Renesas Technology Corp | メモリ装置 |
JP2008033788A (ja) * | 2006-07-31 | 2008-02-14 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 |
KR100866962B1 (ko) * | 2007-03-08 | 2008-11-05 | 삼성전자주식회사 | Hdd를 하이브리드 hdd에서 노멀 hdd로 전환시키는방법 |
JP6414853B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR102550343B1 (ko) * | 2016-07-27 | 2023-07-03 | 삼성전자주식회사 | 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법 |
US11126544B2 (en) * | 2016-12-14 | 2021-09-21 | Via Technologies, Inc. | Method and apparatus for efficient garbage collection based on access probability of data |
CN107479825A (zh) * | 2017-06-30 | 2017-12-15 | 华为技术有限公司 | 一种存储系统、固态硬盘和数据存储方法 |
-
2018
- 2018-03-26 JP JP2018058610A patent/JP2019169101A/ja active Pending
- 2018-08-06 TW TW107127266A patent/TWI712881B/zh active
- 2018-08-06 CN CN201810886696.0A patent/CN110362499B/zh active Active
- 2018-09-10 US US16/126,084 patent/US10585590B2/en active Active
-
2020
- 2020-02-03 US US16/780,101 patent/US11023132B2/en active Active
-
2021
- 2021-04-20 US US17/235,144 patent/US11747979B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021045306A (ja) * | 2019-09-18 | 2021-03-25 | 株式会社大都技研 | 遊技台 |
Also Published As
Publication number | Publication date |
---|---|
US20190294341A1 (en) | 2019-09-26 |
TWI712881B (zh) | 2020-12-11 |
US11747979B2 (en) | 2023-09-05 |
TW201941061A (zh) | 2019-10-16 |
CN110362499A (zh) | 2019-10-22 |
CN110362499B (zh) | 2023-08-15 |
US10585590B2 (en) | 2020-03-10 |
US20210240352A1 (en) | 2021-08-05 |
US11023132B2 (en) | 2021-06-01 |
US20200167081A1 (en) | 2020-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713161B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10789162B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10592117B2 (en) | Memory system and method for controlling nonvolatile memory | |
JP6517685B2 (ja) | メモリシステムおよび制御方法 | |
US10635310B2 (en) | Storage device that compresses data received from a host before writing therein | |
TWI712881B (zh) | 電子機器及其控制方法、電腦系統及其控制方法以及主機之控制方法 | |
KR101038167B1 (ko) | 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
JP2016170583A (ja) | メモリシステムおよび情報処理システム | |
JP2014522537A (ja) | 使用によるフラッシュ・ベースの記憶装置へのデータ配置の管理 | |
CA2978845A1 (en) | Storage system and system garbage collection method | |
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: 20180830 |