JP6968016B2 - ストレージデバイスおよびコンピュータシステム - Google Patents

ストレージデバイスおよびコンピュータシステム Download PDF

Info

Publication number
JP6968016B2
JP6968016B2 JP2018054918A JP2018054918A JP6968016B2 JP 6968016 B2 JP6968016 B2 JP 6968016B2 JP 2018054918 A JP2018054918 A JP 2018054918A JP 2018054918 A JP2018054918 A JP 2018054918A JP 6968016 B2 JP6968016 B2 JP 6968016B2
Authority
JP
Japan
Prior art keywords
data
host
block
memory
multivalue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018054918A
Other languages
English (en)
Other versions
JP2019168822A (ja
Inventor
謙一郎 吉井
大典 岩井
徹也 砂田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2018054918A priority Critical patent/JP6968016B2/ja
Priority to TW107123304A priority patent/TWI682279B/zh
Priority to KR1020180083935A priority patent/KR102094236B1/ko
Priority to CN201810801383.0A priority patent/CN110297780B/zh
Priority to US16/047,205 priority patent/US10871920B2/en
Publication of JP2019168822A publication Critical patent/JP2019168822A/ja
Priority to US16/951,785 priority patent/US20210072923A1/en
Application granted granted Critical
Publication of JP6968016B2 publication Critical patent/JP6968016B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

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

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
パーソナルコンピュータに代表されるコンピュータシステムは、ユーザが所望する処理を行うホスト(ホストコンピュータ)と、演算結果やデータなどを格納するストレージデバイスなどから構成される。
ストレージデバイスとしては、不揮発性メモリを備えるストレージデバイスが広く普及している。このようなストレージデバイスの一つとしては、NANDフラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
米国特許出願公開第2018/0032275号明細書
最近では、コンピュータシステムの性能改善を図るため、ストレージデバイスの性能の向上が求められている。
本発明が解決しようとする課題は、性能を向上することができるストレージデバイスおよびコンピュータシステムを提供することである。
実施形態によれば、ホストに接続可能なストレージデバイスは、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備する。前記コントローラは、前記ホスト上で動作している総プロセス数を示す情報を前記ホストから受信する。前記コントローラは、前記総プロセス数が第1の閾値を上回っているとの判定をした後、前記不揮発性メモリの少なくとも一つのブロックに格納されているデータを前記不揮発性メモリの他の少なくとも一つのブロックに移動する処理を実行する。
第1実施形態に係るストレージデバイスを含むコンピュータシステムの構成例を示すブロック図。 ホスト(ホストコンピュータ)の内部構成例を示すブロック図。 第1実施形態のストレージデバイスの構成例を示すブロック図。 第1実施形態のストレージデバイス内に設けられた不揮発性メモリの構成例を示す図。 第1実施形態のストレージデバイスによって使用される、不揮発性メモリの使用状況を管理するためのテーブルの例を示す図。 プロセス監視部を含む、ホストの内部構成例を示すブロック図。 ホストのプロセス監視部によって使用される管理テーブルの例を示す図。 ホストと第1実施形態のストレージデバイスとによって実行される、総プロセス数通知処理およびデータ移動処理の手順を示すフローチャート。 ホストと第1実施形態のストレージデバイスとによって実行される、プロセス数増減通知処理およびデータ移動処理の手順を示すフローチャート。 第2実施形態のストレージデバイスに対応するホストの内部構成例を示すブロック図。 第2実施形態のストレージデバイスによって作成される管理テーブルの例を示す図。 ホストと第2実施形態のストレージデバイスとによって実行されるデータ読み出し/書き込み処理の手順を示すフローチャート。 プロセスの終了に応じてホストと第2実施形態のストレージデバイスとによって実行される、プロセス識別子通知処理およびデータ移動処理の手順を示すフローチャート。 総プロセス数が閾値を超えている場合またはプロセス数の増加の通知を受信した場合に第2実施形態のストレージデバイスによって実行されるデータ移動処理の手順を示すフローチャート。 ホストによって実行される、生成されたプロセスの種別(ユーザプロセス/システムプロセス)をストレージデバイスに通知する処理の手順を示すフローチャート。 ホストと第3実施形態のストレージデバイスとによって実行される、プロセス数増減通知処理およびデータ移動処理の手順を示すフローチャート。 ホストと第3実施形態のストレージデバイスとによって実行される、総プロセス数通知処理およびデータ移動処理の手順を示すフローチャート。 第3実施形態のストレージデバイスによって実行される、終了されたプロセスのうち、ユーザプロセスのデータを優先的に移動する処理の手順を示すフローチャート。 ホストと第4実施形態のストレージデバイスとによって実行される、使用メモリ量通知処理およびデータ移動処理の手順を示すフローチャート。 ホストと第5実施形態のストレージデバイスとによって実行される、スワップアウトによってストレージデバイスに書き込まれるデータ量を通知する処理およびデータ移動処理の手順を示すフローチャート。 ホストと第5実施形態のストレージデバイスとによって実行される、使用メモリ量/スワップアウトによってストレージデバイスに書き込まれるデータ量を通知する処理およびデータ移動処理の手順を示すフローチャート。 ホストと第6実施形態のストレージデバイスとによって実行される、頻繁に起動されるプログラムを通知する処理およびデータ移動処理の手順を示すフローチャート。
以下、図面を参照して、実施形態を説明する。
(第1実施形態)
<コンピュータシステムの説明>
まず、図1を参照して、第1実施形態に係るストレージデバイスを含むコンピュータシステム1の構成を説明する。
このストレージデバイスは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このストレージデバイスは、例えば、NANDフラッシュメモリを備えたソリッドステートドライブ(SSD)3として実現されている。
コンピュータシステム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、SSD3をアクセスするコンピュータ(ホスト計算機)である。ホスト2として機能するコンピュータの例には、パーソナルコンピュータ、サーバコンピュータ、他の様々な電子機器(例えば、スマートフォン、等)が含まれる。
<ホストとSSDの間の接続や通信プロトコルの説明>
ホスト2とSSD3との間にはその間で要求や情報を送受信するための経路が存在する。また、要求や情報を送受信するための取り決めとして標準規格等が存在する。
ホスト2は、様々な要求を信号線20を介してSSD3に送る。これら要求には、データの読み出しを要求する読み出し要求およびデータの書き込みを要求する書き込み要求を含む各種データ処理要求、SSD3の状態を変化させる状態変化要求、SSD3の状態を取得する状態取得要求、等が含まれる。
一方、SSD3は、ホスト2から受信した要求に対する返答を信号線20を介してホスト2に送る。返答の例には、データ読み出し/書き込みの結果、状態変化の結果、SSD3自身の状態、等がある。
様々なホストと様々なストレージデバイスが相互接続できるように信号線20を介して要求や返答を送る方法として標準規格が存在する。
ホストとストレージデバイスとの間で信号線20を介して情報を送受信するための標準規格には、例えばPCI Express(PCIe)(登録商標)が存在する。
またホストとストレージデバイスとの間で送受信される要求や返答の手続きやデータフォーマット等の標準規格には、例えばNon−Volatile Memory Express(NVMe)(登録商標)が存在する。
本実施形態では、信号線20を介して情報を送受信するための仕組みや、要求や返答を送受信するための手続きおよびデータフォーマットについては、特定の規格を仮定しない。本実施形態の技術は、PCIeやNVMeをはじめ、様々な標準規格および標準規格以外の方法を用いた場合でも適用可能である。
さらに、ホスト2とSSD3は物理的な信号線で接続されている必要はない。ホスト2とSSD3は無線LAN等の物理的な信号線を伴わない方法で接続されていても構わない。ホスト2とSSD3が物理的な信号線を伴わない方法で接続されていても本実施形態の技術は適用可能である。
<ホストの説明>
ホスト2は、そのハードウェアコンポーネントとして、ホストストレージコントローラ11、プロセッサ12、およびメモリ13を備える。これらホストストレージコントローラ11、プロセッサ12、メモリ13は、バス10を介して相互接続されていてもよい。ホスト2は、さらに、ネットワークインターフェース14、ディスプレイインターフェース15を備えていても構わない。
ホストストレージコントローラ11はSSD3との通信を実行する。詳しくは、ホストストレージコントローラ11は、プロセッサ12の制御の下、上述の様々な要求をSSD3に送信し、またこれら要求に対する返答をSSD3から受信する。プロセッサ12はホスト2内の様々なコンポーネントを制御するCPUであり、SSD3からメモリ13にロードされる様々なプログラムを実行する。メモリ13は、Dynamic Random Access Memory (DRAM)のようなランダムアクセスメモリによって実現される。
<SSDの説明>
SSD3は、コントローラ4および不揮発性メモリ(NANDフラッシュメモリ)5を備える。NANDフラッシュメモリ5は、複数のNANDフラッシュメモリチップを含んでいてもよい。コントローラ4は、NANDフラッシュメモリ5に電気的に接続され、NANDフラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。このコントローラ4は、System−on−a−chip(SoC)のような回路によって実現されてもよい。SSD3は、DRAMも備えていてもよい。SSD3がDRAMも備える構成である場合には、DRAMは、コントローラ4の外部に設けられていてもよい。
NANDフラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NANDフラッシュメモリ5は、2次元構造のNANDフラッシュメモリであってもよいし、3次元構造のNANDフラッシュメモリであってもよい。
<ホストの内部構成>
図2は、ホスト(ホストコンピュータ)2の内部構成例を示す。
ホスト2においては、プロセッサ12上で動作するホストソフトウェアとして、ストレージドライバ31と、オペレーティングシステム(OS)32と、ファイルシステム33と、ユーザプロセス34と、システムプロセス35が存在する。
<オペレーティングシステム(OS)とプロセスの説明>
ここでは、プロセスにはメモリが割り当てられていること、オペレーティングシステム(OS)32、さらに言えばオペレーティングシステム(OS)32のプロセス管理部が、ホスト2上で動作するプロセスの情報をすべて知っていること、について説明する。
オペレーティングシステム(OS)32は、プロセス管理部321と、メモリ管理部322と、デバイス管理部323とを含む。
図2の例では、オペレーティングシステム(OS)32に上記3つの管理部が含まれているが、またさらにファイルシステム33およびストレージドライバ31のうちの一部または全てがオペレーティングシステム(OS)32に含まれていても構わない。
オペレーティングシステム(OS)32は、例えばMicrosoft Windows(登録商標)、Linux(登録商標)のようなソフトウェアであり、プロセッサ12、メモリ13、およびSSD3を含む、コンピュータシステム1全体の資源を管理する。
オペレーティングシステム32はまた、ホスト2上で動作するアプリケーションプログラム(以下プログラムと記載する)の管理を行う。ホスト2上では、オペレーティングシステム32の管理のもと、1つ以上の機能を実現するプログラムが、一つ以上動作状態にある。
プログラムが動作状態になる際には、以下の手続きが行われる。
最初に、ユーザによる直接の要求によって、もしくはユーザに特定の機能を提供するためにオペレーティングシステム32自身によって、プロセス管理部321にプログラムの起動が要求される。
次に、プロセス管理部321がこのプログラムの起動を承認してこのプログラム用のプロセスを生成する。そしてプロセス管理部321がメモリ管理部322に対して当該プロセスに対するメモリ割り当てを要求する。メモリ割り当て要求を受けたメモリ管理部322は、当該プロセスにメモリ13内のメモリ領域を割り当てる。プロセス管理部321は、このプログラムをSSD3から読み出し、当該プロセスに割り当てられたメモリ領域にこのプログラムをロードする。最後に、プロセス管理部321は、当該プロセスをプロセッサ12の実行時間の割り当て対象とする。つまり、プログラムの実行の実体はプロセスであり、プロセスにはメモリが割り当てられている。
本実施形態では、ユーザの要求によって生成されたプロセスのことをユーザプロセスと呼ぶ。これに対して、オペレーティングシステム32自身が特定の機能を実現するために生成したプロセスのような、ユーザプロセス以外のプロセスのことをシステムプロセスと呼ぶ。
例えば、ユーザがWebブラウジングのために使うWebブラウザのプログラムを起動することによって生成されたプロセスは、ユーザプロセスである。一方、キーボードやマウスからの入力を受け付けるプログラムやディスプレイへの映像出力を行うプログラムから生成されたプロセスは、システムプロセスである。
したがって、プロセス管理部321は、ある時刻にホスト2上に存在するプロセスを、ユーザプロセスおよびシステムプロセスにかかわらずすべて把握可能である。
<プロセスのスワップの説明>
ここでは、プロセスに割り当てられたメモリ領域の内容が、スワップアウトまたはスワップインのタイミングで、SSD3に書き込まれ、またはSSD3から読み出されることを説明する。
プロセス管理部321が新たなプロセスを生成しようとした際に、当該プロセスに割り当てるメモリが足りない場合がある。その際、プロセス管理部321からメモリ割り当ての要求を受けたメモリ管理部322は、当該プロセスに割り当てるメモリ領域を確保するために、別のプロセスのメモリ領域に格納されているデータをSSD3に退避することがある。この退避処理はプロセスのスワップアウトと呼ばれる。
スワップアウトの対象プロセスは、様々な基準で選定される。例えば、最後にプロセッサ12上で動作した時刻が最も古いプロセスから順に選択する方法がある。また例えば、生成時刻が最も古いプロセスから順に選択する方法もある。さらに例えば、選択対象のプロセスをユーザプロセスに限定する方法もある。
いずれにせよ、プロセスに割り当てられたメモリ領域に格納されたデータは、スワップアウトによってSSD3に書きこまれることがある。
なお、一旦スワップアウトしたプロセスがプロセッサ12上で再度動作する際は、スワップアウトによってSSD3に書きこまれたデータをSSD3から読み出して、メモリ13内のメモリ領域に復元する処理が行われる。この復元処理はプロセスのスワップインと呼ばれる。
本実施形態では、スワップアウトおよびスワップインの処理は、プロセス管理部321が行う。
<プロセスがSSD3にアクセスする際の処理の説明>
ここでは、各プロセスがファイルシステム33を経由してSSD3にアクセスするケースにおいては、ファイルシステム33はどのプロセスがどの論理アドレス(論理ブロックアドレス:LBA)にいつアクセスしたかを知っているということと、ファイルシステム33を経由せずにSSD3にアクセスできる経路も存在するということ、について説明する。
プロセスがSSD3に対するデータの読み出しまたは書き込みを行う場合、一般的に、ファイルシステム33に対してデータの読み出しまたは書き込みを要求する。これは、ユーザプロセスでもシステムプロセスでも同じである。
ファイルシステム33を経由してSSD3に対するデータの読み出しまたは書き込みを行う場合、プロセスはファイルシステム33にアクセス要求を送出する。詳しくは、プロセスはファイルシステム33に対して、読み出しまたは書き込みをしたいファイル名と、読み出し/書き込みの種別と、読み出しまたは書き込みをしたいデータサイズと、データ読み出しの場合は読出し先メモリ領域を、データ書き込みの場合は書き込みたいデータが格納されているメモリ領域を指定する。
ファイルシステム33は、当該プロセスが、指定したファイルに対してアクセス権を持つかどうかをチェックし、当該プロセスがアクセス権を持つ場合はアクセス要求を承認し、アクセス権を持たない場合は当該アクセス要求を却下する。
つまり、ファイルシステム33はどのプロセスがどのファイルにいつアクセスを要求したかを知っている。
ファイルシステム33は、プロセスによるアクセス要求を承認すると、当該アクセス対象ファイルに対応する、SSD3の論理ブロックアドレス(LBA)を解決する。
データ読み出しの場合、ファイルシステム33は、ファイルシステム自身が持つファイル名それぞれとLBAそれぞれとの対応関係を示す表から、SSD3に対して読出しを要求する、先頭LBAとサイズの組を一つ以上作成する。先頭LBAとサイズの組が複数になる可能性があるのは、一つのファイルを構成するデータが、SSD3のLBA空間上で、複数の領域に分割(フラグメント化)されている可能性があるためである。
データ書き込みの場合、ファイルシステム33は、ファイルシステム33自身が持つ未使用LBA領域の中から当該書き込み要求に割り当てるLBA領域を一つ以上選択し、先頭LBAとサイズの組を一つ以上作成する。先頭LBAとサイズの組が複数になる可能性があるのは、書き込み要求サイズをまとめて格納できる空きの連続LBA領域が存在しない可能性があるためである。
ファイルシステム33が、SSD3に要求する、読み書き対象の先頭LBAとサイズの組を含む要求情報を作成すると、ファイルシステム33は、その要求情報とともに、ストレージドライバ31にデータ読み出し/書き込みの要求を送出する。
ストレージドライバ31は、ファイルシステム33から受信したデータ読み出し/書き込みの要求から、ホストストレージコントローラ11に対する操作を生成し、ホストストレージコントローラ11を適切に操作し、信号線20を介してSSD3に読み出し/書き込み要求(リード/ライトコマンド)を送信する。
ストレージドライバ31は、SSD3から返答される、読み出し/書き込み要求の結果を、ホストストレージコントローラ11経由で受信し、読み出し/書き込み要求の結果を、データ読み出し/書き込みの要求を送出したファイルシステム33に送る。ファイルシステム33は、このデータ読み出し/書き込みの要求の大元の要求元であるプロセスに、このデータ読み出し/書き込みの要求の結果を送る。
このようにして、プロセスによるSSD3からのデータの読み出しおよびプロセスによるSSD3へのデータの書き込みは処理される。したがって、ファイルシステム33は、どのプロセスがどのLBAにいつアクセスしたかを知っている。
なお、プロセスからSSD3へ送出される要求は、読み出し/書き込み要求だけではない。例えば、SSD3への総書き込みデータ量、SSD3からの総読出しデータ量といった統計情報をSSD3から取得する要求や、SSD3の状態を低消費電力状態へ変化させる要求がSSD3に送信される場合もある。
これらの要求は、ファイルシステム33を経由せず、プロセスからストレージドライバ31に直接送出されることが多い。
ファイルシステム33は、例えば、NTFS(NT File System)や、ext4(fourth extended file system)などである。ホスト2内に複数のファイルシステムが存在することもある。
<SSD3の構成の説明>
ここでは、SSD3のデータ制御部403が、ホスト2がデータを読み出し/書き込みするために指定するLBAと、そのLBAに対応する最新データが格納されているNANDフラッシュメモリ5上の記憶位置との対応関係を管理していること、について説明する。
図3は、SSD3の構成例を示す。
SSD3は、図1で説明したように、コントローラ4とNANDフラッシュメモリ5とを含む。コントローラ4は、図3に示されているように、インターフェースコントローラ401と、ホスト要求処理部402と、データ制御部403と、バッファメモリ404と、Direct Memory Access Controller(DMAC)405と、誤り訂正符号処理部406と、NANDインターフェースコントローラ407とを含む。
インターフェースコントローラ401は、信号線20を介してホスト2から送信されたSSD3に対する処理要求を受信し、ホスト要求処理部402にこの要求の内容を伝える。またインターフェースコントローラ401は、ホスト要求処理部402からの要求に従い、ホスト2からの要求に対する処理結果の返答を、信号線20を介してホスト2に送信する。またインターフェースコントローラ401は、DMAC405からの指示に従い、書き込みデータをホスト2側のメモリ13から読み出してバッファメモリ404に書き込んだり、ホスト2からのリード要求によって指定されるデータをバッファメモリ404から読みだしてホスト2側のメモリ13に書き込んだりする。
ホスト要求処理部402は、ホスト2から送信された処理要求をインターフェースコントローラ401から受信し、処理要求の内容を解釈し、処理要求の内容にしたがって、SSD3内部の動作を制御する。
ホスト要求処理部402は、例えば、ホスト2から読み出し要求(リードコマンド)を受信すると、NANDフラッシュメモリ5から当該読み出し要求によって指定されたデータをバッファメモリ404に読み出すようにデータ制御部403に対して指示し、バッファメモリ404に読み出されたデータを、DMAC405を操作してホスト2側のメモリ13に転送する。またホスト要求処理部402は、例えば、ホスト2から書き込み要求(ライトコマンド)を受信すると、DMAC405を操作してホスト2側のメモリ13から書き込みデータをバッファメモリ404に転送し、バッファメモリ404内の書き込みデータをNANDフラッシュメモリに書き込むようデータ制御部403に対して指示する。そしてホスト要求処理部402は、ホスト2から受信した要求の処理が完了したら、ホスト2に対して処理結果を送信する。
SSD3がホスト2から受信する要求は、読み出し要求、書き込み要求だけではない。前述の通り、例えば、総書き込みデータ量や総読出しデータ量といった統計情報を取得する要求や、SSD3の状態を低消費電力状態へ変化させる要求を受信することもある。これらの要求を受信したホスト要求処理部402は、データ制御部403に具体的な処理を要求して、所望の処理を実現する。
データ制御部403は、SSD3内に格納されているデータの管理およびNANDフラッシュメモリ5に対するアクセスの制御を行う。具体的には、データ制御部403は、ホストによって指定されるLBAと、そのLBAに対応する最新データが格納されているNANDフラッシュメモリ5内の記憶位置を示す位置情報との組を保持している。このNANDフラッシュメモリ5内の位置情報のことをNAND物理アドレス(NAND Physical Address: NPA)と呼ぶことにする。また、データ制御部403によって管理される、LBAそれぞれとNPAそれぞれとの間の対応関係を管理するテーブルのことを論物変換テーブルと呼ぶことにする。
NANDフラッシュメモリ5は、メモリセルアレイを有する1以上のNANDフラッシュメモリチップを有する。メモリセルアレイは、マトリクス状に配列された複数のメモリセルを有する。NANDフラッシュメモリ5のメモリセルアレイは、図4に示されているように、複数のブロック(物理ブロック)BLK0〜BLK(j−1)を含む。ブロックBLK0〜BLK(j−1)は、消去動作の単位として機能する。
ブロックBLK0〜BLK(j−1)は複数のページ(物理ページ)を含む。つまり、ブロックBLK0〜BLK(j−1)の各々は、ページP0、P1、…P(k−1)を含む。各ページは、同一ワード線に接続された複数のメモリセルを含む。NANDフラッシュメモリ5においては、データの読み出しおよびデータの書き込みはページ単位で実行される。
<SSD3へデータを書き込む処理の説明>
ここでは、データ書き込み時に論物変換テーブルが更新されることについて説明する。
ホスト2からSSD3に対してデータ書き込み要求が送られた場合、SSD3のコントローラ4は次のように処理を行う。
コントローラ4においては、まず、ホスト要求処理部402がインターフェースコントローラ401経由でこの書き込み要求を受信する。
この書き込み要求には、書き込み先LBA領域の先頭LBAと、書き込みサイズと、書き込みデータが格納されているホストメモリの先頭アドレスが含まれている。そこでホスト要求処理部402は、DMAC405を操作して、このホストメモリの先頭アドレスから、この書き込みサイズ分のデータを、バッファメモリ404に転送する。そして、ホスト要求処理部402は、データ制御部403に対してバッファメモリ404内のデータをNANDフラッシュメモリ5に書き込むよう指示する。
なお、ホスト要求処理部402は、ホスト2から受信した書き込み要求に対する返答を、書き込みを要求されたデータをすべてバッファメモリ404に転送し終わった時点でホスト2に送信してもよいし、書き込みを要求されたデータをすべてNANDフラッシュメモリ5に書き終えた時点でホスト2に送信してもよい。
ホスト要求処理部402からデータの書き込み指示を受領したデータ制御部403は、当該データをNANDフラッシュメモリ5のどのNPAに対応する記憶位置に書き込むかを決定し、必要に応じて誤り訂正符号処理部406を操作して当該データから当該データと誤り訂正符号とを含む符号化データを作成し、NANDインターフェースコントローラ407を操作して当該データ(または当該符号化データ)をNANDフラッシュメモリ5に書き込む。
データ制御部403は、当該データをNANDフラッシュメモリ5に書き込んだ後に、当該データのLBAに、当該データが書き込まれた記憶位置を示すNPAが対応付けられるように、論物変換テーブルを更新する。もし論物変換テーブルにおいて、当該LBAに、当該LBAの古いデータに対応するNPAが対応付けられていたならば、この古いデータに対応するNPAは、当該データが書き込まれた記憶位置を示すNPA(新しいNPA)で更新される。このようにして、論物変換テーブルの内容は、LBAとNPAの対応関係が常に最新になるように管理される。
<多値度の使い分け>
ここでは、SSD3は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のプログラムモード(SLCモード/MLCモード/TLCモード)を適宜使い分けてデータをNANDフラッシュメモリ5に書き込むことができることについて説明する。
例えば、NANDフラッシュメモリ5が、一つのメモリセルに3ビットのデータが格納されるトリプルレベルセル(TLC)−NANDフラッシュメモリとして実現されている場合には、NANDフラッシュメモリ5は、多値度が互いに異なる複数のプログラムモード、つまり(1)一つのメモリセルに1ビットのデータが格納されるシングルレベルセル(SLC)モード、(2)一つのメモリセルに2ビットのデータが格納されるマルチレベルセル(MLC)モード、(3)一つのメモリセルに3ビットのデータが格納されるトリプルレベルセル(TLC)モード、を選択的に使用して、データをNANDフラッシュメモリ5に書き込むことができる。
一般的に、一つのメモリセルに書き込まれるデータ量(ビット数)が多い、つまり多値度が高いほうが、メモリコストは低くなり、NANDフラッシュメモリ5の利用効率が上がる。しかし、多値度が高いプログラムモードでデータをメモリセルに書き込むためには、また多値度が高いプログラムモードで書き込まれたデータをメモリセルから読み出すためには、複雑な処理が必要になり、データの書き込み/読み出しにかかる時間が長くなることが多い。
したがって、データ制御部403は、ホスト2から指示された書き込み要求をなるべく速く完了させたい場合に、NANDフラッシュメモリ5のブロックにSLCモードのような多値度の低いプログラムモードで書き込むことがある。
逆に、データ制御部403は、NANDフラッシュメモリ5の利用効率を上げたい時には、ガベージコレクション(GC)などを行って、多値度の低いプログラムモードで書き込まれたデータを、TLCモードのようなより多値度の高いプログラムモードで再書き込みする。GCは、有効データと無効データとが混在する幾つかのブロック(GCソースブロック)内の有効データを新たなブロック(GCデスティネーションブロック)に移動し、GCソースブロックを有効データを含まないフリーブロックにする動作である。
プログラムモードの切り替えはNANDフラッシュメモリ5のブロックの単位で行われる。つまり、NANDフラッシュメモリ5に含まれる複数のブロックは、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用される。
以降、SLCとして使用されているNANDフラッシュメモリ5のブロック(つまり、SLCモードでデータが書き込まれるブロック)のことをSLCブロックと呼ぶ。同様に、MLCとして使用されているNANDフラッシュメモリ5のブロック(つまり、MLCモードでデータが書き込まれるブロック)のことをMLCブロック、TLCとして使用されているNANDフラッシュメモリ5のブロック(つまり、TLCモードでデータが書き込まれるブロック)のことをTLCブロックと呼ぶ。
例えば、データ制御部403は、まず、ホスト2によるデータ書き込みを速く完了させるため、ホスト2から受信したほとんど全ての書き込み要求に対応する書き込みデータを多値度の低いブロック(例えばSLCブロック)に書き込んでもよい。そして、後に、データ制御部403は、必要に応じて、多値度の低い一つ以上のブロックに格納されているデータ(有効データ)を、より多値度の高い一つ以上のブロック(MLCブロック、またはTLCブロック)に移動してもよい。
ここで、データの移動とは、NANDフラッシュメモリ5の少なくとも一つのブロック(移動元ブロック)に格納されているデータをNANDフラッシュメモリ5の他の少なくとも一つのブロック(移動先ブロック)へデータをコピーし、移動元ブロック内のこのデータを無効化することを意味する。
また、有効データとは、LBAのような論理アドレスに関連付けられている最新のデータを意味する。無効データとは、どの論理アドレスにも関連付けられていない古いデータを意味する。
このような移動処理を制御するため、データ制御部403は、図5のような管理テーブルを作成して、NANDフラッシュメモリ5の使用状況を管理する。
<NANDフラッシュメモリの使用状況を管理するテーブルの説明>
図5は、データ制御部403が作成して管理する、SSD3内のNANDフラッシュメモリ5の使用状況を管理するテーブルを示す。このテーブルのことを、以下NAND管理テーブルと呼ぶ。
この図5のNAND管理テーブルには、SLC、MLC、TLCといったNANDフラッシュメモリ5の利用可能な多値度別に、各多値度で使用しているNANDフラッシュメモリ5のブロック数(使用ブロック数)、使用されているブロック内に格納されている有効データの総量(有効データ量)、各多値度で使用可能な最大ブロック数、最大ブロック数を各多値度で使用した場合に格納可能な最大データ量、および各多値度で現在使用できる空きブロック数(フリーブロック数)が記録され、管理されている。
また、図5のNAND管理テーブルには、多値度とは関係なく、SSD3全体としての、上記使用ブロック数、有効データ量、最大ブロック数、最大データ量、およびフリーブロック数も記録され、管理されている。
データ制御部403がNANDフラッシュメモリ5にデータを書き込んだ場合、データ制御部403は、書き込み時の多値度に従って、NAND管理テーブルを更新する。例えば、データ制御部403がSLCのフリーブロックから一つブロックを取得し、当該ブロックに4キロバイトのデータをSLCモードで書き込んだならば、データ制御部403は、NAND管理テーブル内のSLCの行の使用ブロック数を1増加させ、SLCの行の有効データ量を4キロバイト増加させ、SLCの行のフリーブロック数を1減少させる。
この時、このデータの書き込みによって例えばMLCブロックに格納されている4キロバイトのデータが古いデータとなった(無効データになった)場合、データ制御部403は、NAND管理テーブル内のMLCの行の有効データ量を4キロバイト減少させる。
また、データ制御部403は、SSD全体の行の使用ブロック数を1増加させ、SSD全体の行のフリーブロック数を1減少させる。なお、SSD全体の行の有効データ量は変化しない。なぜなら、SLCブロックに新たに書き込まれた4キロバイトのデータが有効データとなった代わりに、MLCブロックに格納されていた4キロバイトのデータが無効データとなったからである。
<NAND管理テーブルから分かることの説明>
図5のNAND管理テーブルを見ると、SSD3内部の状態について、次のようなことがわかる。
SLCブロックの使用ブロック数が多い場合、NANDフラッシュメモリ5の利用効率が低下していることがわかる。SLCブロックは読み書きが速いが、多値度が低いため利用効率は悪い。したがって、SLCブロックとして使用する最大ブロック数はある程度少なく設定する必要がある。
SLCの使用ブロック数が予め設定した最大ブロック数に近づいた場合、NANDフラッシュメモリ5の利用効率が落ちているだけでなく、さらなるホスト2からの書き込み要求に対してSLCブロックを割り当てることができなくなる。そこで、SLCブロックに格納されているデータをより多値度の高いブロックに移動させる必要があると判断できる。
また、すべての多値度について、使用ブロック数が増加しているにも関わらず、有効データ量が最大データ量と比較して少ない場合は、無効データが多く、NANDフラッシュメモリ5内の多くのブロックが有効活用されていないことがわかる。
この時には、同時に全体的にフリーブロック数が減っている。したがって、データ制御部403はGCによって使用ブロック数を減らし、フリーブロック数を増やす必要があると判断できる。
このように、図5のNAND管理テーブルを使用してSSD3内のNANDフラッシュメモリ5の使用状況をチェックすることで、データ制御部403は次にどのような処理が必要かを判断することができる。
<第1実施形態のデータ移動処理の説明>
まず、第1実施形態のデータ移動処理の概要について説明する。
ホスト2のプロセッサ12によって実行されるホストソフトウェアには、プロセス監視部41が追加される。このプロセス監視部41はホスト2上で動作するプロセス数を知っていて、総プロセス数をSSD3に通知することができる。なお、プロセス監視部41は、総プロセス数の増減をSSD3に通知してもよい。
SSD3のコントローラ4は、ホスト2から通知される総プロセス数がある閾値を上回ったか否かを判定し、総プロセス数がある閾値を上回ったと判定した場合、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動させる処理を実行する。この場合、例えば、SLCブロックに格納されているデータ(有効データ)をMLCブロックまたはTLCブロックに移動する処理が実行される。これにより、現在使用されているSLCブロックをフリーブロックにすることができる。上述したように、総プロセス数が多くなると、スワップアウト、スワップインが起こりやすくなる。本実施形態では、総プロセス数に基づいて、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動させる処理が実行されるので、スワップアウト、スワップインが起こり易くなる前に、多値度の低いブロック(例えばSLCブロック)のフリーブロック数を増やすことが可能となる。よって、後にプロセスのスワップアウトやスワップインが発生した時に多値度の低いブロックをデータの書き込みおよびデータの読み出しに使用できる可能性が高くなる。この結果、スワップアウトやスワップインにかかる時間を短縮することができる。
なお、データの移動は、同じ多値度のブロック間で行ってもよい。このデータ移動は、上述のGCの一形態である。このデータ移動によって生成されたフリーブロックをSLCのフリーブロックとして割り当てることにより、後続のホスト2からの書き込み要求に備えることができる。
また、データを移動する処理は、必ずしも、総プロセス数がある閾値を上回ったと判定された時点で直ちに実行される必要は無く、総プロセス数がある閾値を上回ったと判定された後に実行されればよい。
例えば、総プロセス数がある閾値を上回ったと判定された時点で、コントローラ4(例えばホスト要求処理部402)はデータを移動する処理を実行すべきことを決定し、このデータ移動のための処理を待ち行列にキューイングしてもよい。
あるいは、総プロセス数が閾値を上回ったことをトリガとして、ホスト要求処理部402は、データ移動のための処理の優先度を上げてもよい。これにより、データ移動のための処理の優先度が幾つかの他の処理の優先度よりも高くなるので、データ移動のための処理を、これら幾つかの他の処理よりも優先して実行することが可能となる。
あるいは、総プロセス数がある閾値を上回ったと判定された時点で、ホスト要求処理部402はデータを移動する処理を実行すべきことを決定し、そしてSLCの有効データ量がある閾値にまで低下する、またはSSD3全体のフリーブロック数がある閾値にまで低下する、といった条件が成立するまで待ち、この条件が成立した時に、データ移動のための処理を実行してもよい。
以下、総プロセス数に基づくデータ移動処理を実現するための具体的な構成について説明する。
図6は、プロセス監視部41を含む、ホスト2の内部構成例を示す。
この図6の構成例は、図2の構成例に対して、プロセス監視部41を追加したものである。
プロセス監視部41は、OS32のプロセス管理部321やメモリ管理部322、さらにはファイルシステム33との情報の授受を通じて、ホスト2で動作しているプロセス、これら各プロセスに割り当てられているメモリ領域、その領域サイズ、さらには各プロセスがアクセスしたSSD3のLBA、等の情報を取得し、管理する。
具体的には、プロセス監視部41は、図7のような管理テーブルを使用して前記情報を管理している。図7のような管理テーブルは、複数のプロセスに対応する複数のエントリ(行)を有する。各行は、プロセス識別子フィールド、プロセス種別フィールド、メモリ使用量フィールド、複数のLBA利用リストフィールド、最終起動時刻フィールドを含む。
あるプロセスに対応する行において、プロセス識別子フィールドは、このプロセスの識別子を示す。プロセス種別フィールドは、このプロセスの種別(ユーザプロセス/システムプロセス)を示す。メモリ使用量フィールドは、このプロセスによって使用されているホストメモリ上のメモリ領域の容量を示す。LBA利用リストフィールドは、このプロセスがアクセス(読み出し/書き込み)したSSD3のLBAのリストを示す。最終起動時刻フィールドは、このプロセスが最後に起動された時刻を示す。
前述の通り、プロセス生成時にはプロセス管理部321がSSD3からプログラムを読み出す他、プロセスがSSD3に対する読み出し/書き込み要求を発行する。したがって、プロセスが生成されると、SSD3へのデータの書き込み、SSD3からのデータの読み出しが行われる可能性が高い。
そこで、プロセス監視部41がプロセス管理部321に問い合わせることによってプロセスが生成されたことを検出したら、プロセス監視部41はそのことをSSD3に通知する。このSSD3への通知は、NVMe等の標準規格のコマンドを使用してもよいし、別の方法を使っても構わない。
ホスト2からプロセス数が増えたことを通知されたSSD3のコントローラ4においては、その通知を受領したホスト要求処理部402は、データ制御部403に、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動させ、これによって多値度の低いブロック用のフリーブロック数を増やし、後続のホスト2からのアクセスに備える。
また、プロセス数が減少することはプロセスが終了したことを意味する。プロセスが終了すると、当該終了したプロセスがSSD3に対して読み書きしたデータは当分の間アクセスされない可能性が高い。
そこで、プロセス監視部41がプロセス管理部321に問い合わせることによってプロセスが終了したことを検出したら、プロセス監視部41はそのことをSSD3に通知する。このSSD3への通知も、NVMe等の標準規格のコマンドを使用してもよいし、別の方法を使っても構わない。
ホスト2からプロセス数が減ったことを通知されたSSD3のコントローラ4においては、その通知を受領したホスト要求処理部402は、データ制御部403に、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動させ、これによって多値度の低いブロック用のフリーブロック数を増やし、NANDフラッシュメモリ5の利用効率の改善を図る。
さらに、プロセスの総数が少ないことは、ホスト2からSSD3へ送信される読み出し/書き込み要求が少ない可能性を示す。
またプロセスの総数が多いことは、前述したプロセスのスワップアウトとスワップインが起こる可能性が高いことを示す。
そこでプロセス監視部41は、プロセス管理部321に問い合わせた結果から総プロセス数を管理し、その総プロセス数をSSD3に通知する。このSSD3への通知も、NVMe等の標準規格のコマンドを使用してもよいし、別の方法を使っても構わない。SSD3に総プロセス数を通知するタイミングは、プロセス数が増減した時でもよいし、定期的に通知するようにしてもよい。
ホスト2から総プロセス数の通知を受けたSSD3のコントローラ4においては、その通知を受領したホスト要求処理部402は、通知された総プロセス数が予め設定された閾値(第1の閾値)を上回っているかをチェックする。
もし総プロセス数が前記第1の閾値を上回っていた場合、ホスト要求処理部402は、データ制御部403に、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動させるよう指示する。これにより、多値度の低いブロックに格納されているデータがより多値度の高いブロックに移動されるので、多値度の低いブロック用のフリーブロック数が増え、後にプロセスのスワップアウトやスワップインが発生した時に多値度の低いブロックを使用できる可能性が高くなる。この結果、スワップアウトやスワップインにかかる時間が短縮され、ホスト2から見たSSD3の性能、ひいてはユーザから見たSSD3の性能を向上させることができる。
また、ホスト要求処理部402は、総プロセス数が予め設定された閾値(第2の閾値)を下回っているかをチェックする。例えば、第2の閾値は、第1の閾値よりも小さい値である。
もし総プロセス数が第2の閾値を下回っていた場合、ホスト要求処理部402は、データ制御部403に、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動させるよう指示する。これにより、多値度の低いブロックに格納されているデータがより多値度の高いブロックに移動されるので、多値度の低いブロック用のフリーブロック数が増え、NANDフラッシュメモリ5の利用効率が改善する。
図8のフローチャートは、ホスト2とSSD3によって実行される、総プロセス数通知処理およびデータ移動処理の手順を示す。
ホスト2のプロセス監視部41は、プロセス管理部321と共同して、ホスト2のプロセッサ12上で動作している総プロセス数を管理する(ステップS11)。総プロセス数が増減した、または前回の通知から一定期間が経過した、といった通知条件が成立した時(ステップS12のYES)、プロセス監視部41は、総プロセス数を示す情報をSSD3に送信して総プロセス数をSSD3に通知する(ステップS13)。
SSD3のコントローラ4は、総プロセス数を示す通知をホスト2から受信する(ステップS21)。コントローラ4のホスト要求処理部402は、ホスト2によって通知された総プロセス数を第1の閾値と比較して、総プロセス数が第1の閾値を上回っているか否かを判定する(ステップS22)。
総プロセス数が第1の閾値を上回っているならば(ステップS22のYES)、ホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS23)。ステップS23では、ホスト要求処理部402からデータ制御部403にデータ移動が指示される。そして、データ制御部403がデータを多値度の低いブロックから多値度の高いブロックに移動する。例えば、データ制御部403は、SLCブロックに格納されているデータ(有効データ)を読み出し、このデータを、MCLブロックにMLCモードで書き込むか、またはTLCブロックにTLCモードで書き込む。これにより、SLCブロックに格納されているデータがSLCブロックからMCLブロックまたはTLCブロックに移動される。データの移動によって有効データが無くなったSLCブロックはフリーブロックとなる。
したがって、ホスト2(プロセッサ12)上で動作しているプロセスの数の増加によってスワップアウトが起こる前に、SLCのフリーブロックを事前に確保しておくことが可能となり、スワップアウトに要する時間を低減することができる。この結果、コンピュータシステム1全体の性能を改善することが可能となる。
総プロセス数が第1の閾値を上回っていないならば(ステップS22のNO)、ホスト要求処理部402は、総プロセス数を第2の閾値(<第1の閾値)と比較して、総プロセス数が第2の閾値を下回っているか否かを判定する(ステップS24)。
総プロセス数が第2の閾値を下回っているならば(ステップS24のYES)、ホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS25)。ステップS25では、ホスト要求処理部402からデータ制御部403にデータの移動が指示される。そして、データ制御部403は、データを多値度の低いブロックから多値度の高いブロックに移動する。例えば、データ制御部403は、SLCブロックに格納されているデータ(有効データ)を読み出し、このデータを、MCLブロックにMLCモードで書き込むか、またはTLCブロックにTLCモードで書き込む。これにより、SLCブロックに格納されているデータがSLCブロックからMCLブロックまたはTLCブロックに移動される。このデータの移動によって、NANDフラッシュメモリ5の利用効率が改善される。
なお、ステップS23では、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行したが、例えば、TLCブロック間でデータ(有効データ)を移動してもよい。上述したように、このデータ移動はGCの一形態である。この場合でも、データ移動によって生成されたフリーブロックをSLC用のフリーブロックとして割り当てることによって、後のスワップアウトに備えることができる。
同様に、ステップS25でも、例えば、TLCブロック間でデータ(有効データ)を移動してもよい。
図9のフローチャートは、ホスト2とSSD3とによって実行される、プロセス数増減通知処理およびデータ移動処理の手順を示す。
ホスト2のプロセス監視部41は、プロセス管理部321と共同して、ホスト2のプロセッサ12上で動作している総プロセス数の増減を管理する(ステップS31)。
総プロセス数が増加したならば(ステップS32のYES)、プロセス監視部41は、総プロセス数の増加を示す通知をSSD3に送信する(ステップS33)。
一方、総プロセス数が減少したならば(ステップS34のYES)、プロセス監視部41は、総プロセス数の減少を示す通知をSSD3に送信する(ステップS35)。
SSD3のコントローラ4が総プロセス数の増加を示す通知をホスト2から受信したならば(ステップS41のYES)、コントローラ4のホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS42)。ステップS42では、ホスト要求処理部402からデータ制御部403にデータの移動が指示され、データ制御部403がデータを多値度の低いブロックから多値度の高いブロックに移動する。例えば、データ制御部403は、SLCブロックに格納されているデータ(有効データ)を読み出し、このデータを、MCLブロックにMLCモードで書き込むか、またはTLCブロックにTLCモードで書き込む。これにより、SLCブロックに格納されているデータがSLCブロックからMCLブロックまたはTLCブロックに移動される。データの移動によって有効データが無くなったSLCブロックはフリーブロックとなる。
したがって、スワップアウトが起こる前に、SLC用のフリーブロックを事前に確保しておくことが可能となり、スワップアウトに要する時間を低減することができる。この結果、コンピュータシステム1全体の性能を改善することが可能となる。
SSD3のコントローラ4が総プロセス数の減少を示す通知をホスト2から受信したならば(ステップS43のYES)、コントローラ4のホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS44)。ステップS44では、ホスト要求処理部402からデータ制御部403にデータの移動が指示され、データ制御部403がデータを多値度の低いブロックから多値度の高いブロックに移動する。例えば、データ制御部403は、SLCブロックに格納されているデータ(有効データ)を読み出し、このデータを、MCLブロックにMLCモードで書き込むか、またはTLCブロックにTLCモードで書き込む。これにより、SLCブロックに格納されているデータがSLCブロックからMCLブロックまたはTLCブロックに移動される。このデータの移動によって、NANDフラッシュメモリ5の利用効率が改善される。
なお、ステップS42では、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行したが、例えば、TLCブロック間でデータ(有効データ)を移動してもよい。上述したように、このデータ移動はGCの一形態である。この場合でも、データ移動によって生成されたフリーブロックをSLC用のフリーブロックとして割り当てることによって、後のスワップアウトに備えることができる。
同様に、ステップS44でも、例えば、TLCブロック間でデータ(有効データ)を移動してもよい。これにより、TLCブロックのフラグメンテーションを低減することができる。
図8のフローチャートおよび図9のフローチャートを参照して説明したホスト2の処理は、ホストソフトウェア(ストレージドライバ31、オペレーティングシステム(OS)32、ファイルシステム33、プロセス監視部41、等)を実行するように構成されたプロセッサ12によって実行される。
(第2実施形態)
第1実施形態では、ホスト2からSSD3に通知される総プロセス数(または総プロセス数の増減)に基づいてデータ移動を実行した。第2実施形態では、プロセスの識別子がホスト2からSSD3に通知され、特定のプロセスによって書き込まれたデータがブロック間で移動される。なお、第2実施形態におけるSSD3のハードウェア構成およびホスト2のハードウェア構成は第1実施形態のSSD3およびホスト2と同様である。
<第2実施形態のデータ移動処理の説明>
まず、第2実施形態のデータ移動処理の概要について説明する。
ホスト2は、ホスト2において生成された各プロセスの識別子を示す情報をSSD3に通知することができる。また、ホスト2は、データの書き込みを要求したプロセスの識別子が各々に付与された書き込み要求それぞれをSSD3に送信することができる。SSD3のコントローラ4は、生成された各プロセスの識別子と、前記生成された各プロセスによって書き込まれたデータに対応するアドレス範囲との対応関係を管理テーブルを使用して管理する。
SSD3のコントローラ4は、あるプロセスの終了を示す通知をホスト2から受信した後、管理テーブルに基づいて、終了したプロセスによってNANDフラッシュメモリ5に書き込まれたデータを多値度の低いブロックからより多値度の高いブロックに移動する処理を実行する。
終了したプロセスに対応するデータは、しばらくの間、ホスト2からアクセスされることはない。したがって、終了したプロセスに対応するデータをより多値度の高いブロックに移動させても、このデータの読み出し速度が低下するといった現象は起こらないので、性能の低下を招くことなく、後続のホスト2からの書き込み要求に備えることができる。
なお、終了したプロセスに対応するデータの移動は、同じ多値度のブロック間で行ってもよい。この場合でも、データ移動は、上述のGCの一形態である。このデータ移動によって生成されたフリーブロックをSLCのフリーブロックとして割り当てることにより、後続のホスト2からの書き込み要求に備えることができる。
また、ホスト2は、データの書き込みを要求したプロセスの識別子が各々に付与された書き込み要求をSSD3に送信するだけでなく、データの読み出しを要求したプロセスの識別子が各々に付与された読み出し要求をもSSD3に送信してもよい。この場合、SSD3のコントローラ4は、生成された各プロセスの識別子と、生成された各プロセスによってアクセスされた(読み出しまたは書き込みされた)データに対応するアドレス範囲との対応関係を管理テーブルを使用して管理すればよい。そして、SSD3のコントローラ4は、あるプロセスの終了を示す通知をホスト2から受信した後、この管理テーブルに基づいて、終了したプロセスによってアクセスされた(読み出しまたは書き込みされた)データを多値度の低いブロックからより多値度の高いブロックに移動させる。
また、第1実施形態と同様に、データを移動する処理は、必ずしも、終了したプロセスがホスト2から通知された時点で直ちに実行される必要は無く、後で実行されてもよい。
以下、第2実施形態のデータ移動処理を実現するための具体的な構成について説明する。
図10は、ホスト2の内部構成例を示す。
図10の内部構成例は、図6の内部構成例に比し、ストレージドライバ31の前段にフィルタドライバ42が追加されている点が異なる。
第1実施形態で説明したように、ホスト2のプロセス監視部41はホスト2で動作しているプロセスそれぞれを把握している。またプロセス監視部41は、ファイルシステム33から、各プロセスが読み書きしたLBA領域(LBA範囲)の情報を取得している。また、読み出し要求および書き込み要求の各々はアクセス先LBA領域を指定する情報(先頭LBAとデータサイズ)を含む。このため、プロセス監視部41は、フィルタドライバ42を追加し、読み出し/書き込み要求に含まれるアクセス先LBA領域を参照することによって、このデータの読み出し/書き込みを要求した要求元のプロセスを特定することができ、さらに、フィルタドライバ42を使用して、この特定されたプロセスの識別子をこの読み出し/書き込み要求に付与することができる。したがって、ストレージドライバ31は、データの読み出し/書き込みを要求したプロセスの識別子が付与された読み出し/書き込み要求をSSD3に送信することができる。この場合、プロセスの識別子を含む読み出し/書き込み要求(リード/ライトコマンド)がSSD3に送信されてもよい。
SSD3のコントローラ4は、プロセスの識別子が付与された読み出し/書き込み要求をホスト2から受信する。したがって、コントローラ4は、この読み出し/書き込み要求に基づいて、データの読み出し/書き込みを要求した要求元のプロセスの識別子を検出することができる。
このプロセスの識別子は、プロセスIDでもよいし、プロセスの元となったプログラムのIDでもよいし、このプログラムの名称またはこのプログラムのファイル名でもよい。
SSD3のデータ制御部403は、受信された読み出し/書き込み要求内のプロセス識別子を使用して、図11に示すテーブル(以下、プロセスデータ管理テーブルと呼ぶ)を作成する。
データ制御部403は、データの読み出し/書き込みを要求したプロセスそれぞれの識別子と、これらプロセスそれぞれによってアクセス(読み出し/書き込み)されたデータに対応するアドレス範囲それぞれとの対応関係を、プロセスデータ管理テーブルを使用して管理する。
このプロセスデータ管理テーブルは、複数のプロセスに対応する複数のエントリ(行)を有する。各行は、プロセス識別子フィールド、SLCフィールド、MLCフィールド、TLCフィールド、プロセス種別フィールド、LBA領域・多値度フィールド、最終アクセス時刻フィールドを含む。
あるプロセスに対応する行において、プロセス識別子フィールドは、このプロセスの識別子を示す。SLCフィールドは、このプロセスによってアクセスされる全データ量のうち、SLCモードで格納されているデータ量を示す。MLCフィールドは、このプロセスによってアクセスされる全データ量のうち、MLCモードで格納されているデータ量を示す。TLCフィールドは、このプロセスによってアクセスされる全データ量のうち、TLCモードで格納されているデータ量を示す。プロセス種別フィールドは、このプロセスがシステムプロセスまたはユーザプロセスのいずれであるかを示す。LBA領域・多値度フィールドは、このプロセスによってアクセス(読み出し/書き込み)されたLBA領域(先頭LBAとサイズ(論理ブロックの数))と、そのLBA領域のデータがどの多値度のブロックに格納されているかを示す。このLBA領域は、このプロセスによって読み出し/書き込みされたデータに対応するアドレス範囲を表している。最終アクセス時刻フィールドは、このプロセスが最後にSSD3にアクセスした最終アクセス時刻、つまりこのプロセスが最後にSSD3からのデータの読み出しまたはSSD3へのデータの書き込みを行った最終アクセス時刻を示す。なお、最終アクセス時刻は、図11に示すように、LBA領域毎に管理されてもよい。
本実施形態では、データを多値度の異なる複数のブロック間で移動することにより、同じプロセスのデータを多値度の異なる複数のブロックに分散させることもできる。例えば、あるプロセスに対応するプログラムがTLCブロックのような多値度の高いブロックに格納されてもよいし、このプロセスによって作成されたファイルのようなデータがSLCブロックに格納されてもよい。この場合、このプログラムに割り当てられたLBA領域に対応する多値度はTLCを示し、ファイルのようなデータに割り当てられたLBA領域に対応する多値度はSLCを示す。通常、プログラムは滅多に更新されないのに対し、ファイルのようなデータは比較的高い頻度で更新される。したがって、あるプロセスに対応するプログラムをTLCブロックのような多値度の高いブロックに格納し、このプロセスによって作成されたファイルのようなデータをSLCブロックに格納するというデータ配置を利用することによって、ファイルのようなデータを高速に読み出し/書き込みすることと、NANDフラッシュメモリ5の利用効率の改善することの双方を実現することができる。
図11のプロセスデータ管理テーブルは、図5のNAND管理テーブルと同様に、データ制御部403が管理および更新する。
プロセスデータ管理テーブルに新しいプロセスの行を追加するタイミングは、例えば、ホスト2のプロセス監視部41が、プロセスが生成されたことをSSD3に通知した時である。例えば、プロセス監視部41は、ホスト2において生成されたプロセスの識別子を含む情報を、プロセスの生成を示す通知としてSSD3に送信してもよい。
一方、プロセスデータ管理テーブルから特定のプロセスの行を削除するタイミングは、例えば、ホスト2のプロセス監視部41が、プロセスが終了したことをSSD3に通知した時である。例えば、プロセス監視部41は、ホスト2において終了されたプロセスの識別子を含む情報を、プロセスの終了を示す通知としてSSD3に送信してもよい。
なお、プロセスが終了したことがホスト2から通知されても、プロセスデータ管理テーブルからこのプロセスの行を削除しない形態も考えられる。
特に、プロセスを識別する識別子として、プロセスの元となったプログラム名を使用する構成においては、後に同一プログラムが起動された場合に備えて、プロセスデータ管理テーブルに終了されたプロセスに関するデータ(行)を残しておく、という活用方法が考えられる。この場合、プロセスデータ管理テーブルからデータ(行)を削除するタイミングは、プロセスデータ管理テーブルのサイズが大きくなりすぎた時、などが考えられる。
具体的な処理は次のようになる。
まず、プロセスの終了時に、ホスト2のプロセス監視部41が終了したプロセスの識別子をSSD3に通知する。SSD3のコントローラ4が終了したプロセスの識別子をホスト2から受信した後、コントローラ4は、プロセスデータ管理テーブルからこの終了したプロセスの行を特定し、この終了したプロセスがアクセスしていたデータ(例えば、終了したプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、または終了したプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、より多値度の高いブロックに移動させる。これにより、より効率的に多値度の低いブロックのフリーブロック数を増やし、NANDフラッシュメモリ5の利用効率の改善を図ることができる。
また、図11のプロセスデータ管理テーブルは、第1実施形態において移動対象データを選択するためにも利用できる。
例えば、ホスト2のプロセス監視部41から通知された総プロセス数が第1の閾値を超えているならば、あるいはホスト2のプロセス監視部41から総プロセス数の増加が通知されたならば、SSD3のコントローラ4は、図11のプロセスデータ管理テーブルを参照し、多値度の低いブロックにより多くのデータが格納されているプロセスを特定し、この特定されたプロセスがアクセスしていたデータ(例えば、この特定したプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはこの特定したプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、多値度の低いブロックからより多値度の高いブロックに移動する処理を実行する。
もしくは、ホスト2のプロセス監視部41から通知された総プロセス数が第1の閾値を超えているならば、あるいはホスト2のプロセス監視部41から総プロセス数の増加が通知されたならば、SSD3のコントローラ4は、図11のプロセスデータ管理テーブルを参照し、最終アクセス時刻の最も古いプロセスを特定し、この特定されたプロセスがアクセスしていたデータ(例えば、この特定したプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはこの特定したプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、多値度の低いブロックからより多値度の高いブロックに移動する処理を実行してもよい。
図12のフローチャートは、ホスト2とSSD3とによって実行されるデータ読み出し/書き込み処理の手順を示す。
読み出し/書き込み要求をSSD3に送信すべき時(ステップS51のYES)、ホスト2のプロセス監視部41は、データの読み出しまたは書き込みを要求した要求元のプロセスの識別子をこの読み出し/書き込み要求に付与し(ステップS52)、この要求元のプロセスの識別子が付与された読み出し/書き込み要求をSSD3に送信する(ステップS53)。
SSD3のコントローラ4は、読み出し/書き込み要求をホスト2から受信する(ステップS61)。ホスト要求処理部402は、この受信された読み出し/書き込み要求に基づいて、NANDフラッシュメモリ5からのデータの読み出しまたはNANDフラッシュメモリ5へのデータの書き込みをデータ制御部403に指示し、データ制御部403は、NANDフラッシュメモリ5からのデータの読み出しまたはNANDフラッシュメモリ5へのデータの書き込みを行う(ステップS62)。さらに、データ制御部403は、読み出し/書き込み要求に付与されたプロセスの識別子と、このプロセスによって読み出しまたは書き込まれたデータのアドレス範囲(LBA領域)との対応関係を図11のプロセスデータ管理テーブルに格納する(ステップS63)。
図13のフローチャートは、プロセスの終了に応じてホストと第2実施形態のストレージデバイスとによって実行される、プロセス識別子通知処理およびデータ移動処理の手順を示す。
あるプロセスが終了した時(ステップS54のYES)、ホスト2のプロセス監視部41は、この終了したプロセスの識別子をSSD3に通知する(ステップS55)。
SSD3のコントローラ4は、終了したプロセスの識別子をホスト2から受信する(ステップS64)。ホスト要求処理部402は、データ制御部403に、終了したプロセスのデータの移動を指示し、データ制御部403は、図11のプロセスデータ管理テーブルに基づいて、終了したプロセスによってアクセスされたデータ(例えば、終了したプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、または終了したプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)をより多値度の高いブロックに移動する処理を実行する(ステップS65)。
図14のフローチャートは、総プロセス数が閾値を超えている場合またはプロセス数の増加の通知を受信した場合にSSD3によって実行されるデータ移動処理の手順を示す。
ホスト2から通知された総プロセス数が第1の閾値を超えているならば、あるいはホスト2のプロセス監視部41から総プロセス数の増加が通知されたならば(ステップS71のYES)、ホスト要求処理部402は、データ制御部403にデータの移動を指示する。データ制御部403は、図11のプロセスデータ管理テーブルを参照し、多値度の低いブロックにより多くのデータが格納されているプロセスを特定し、この特定されたプロセスがアクセスしていたデータ(例えば、この特定したプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはこの特定したプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、多値度の低いブロックからより多値度の高いブロックに移動する処理を実行する(ステップS72)。
あるいは、ステップS72では、データ制御部403は、図11のプロセスデータ管理テーブルを参照し、最終アクセス時刻の最も古いプロセスを特定し、この特定されたプロセスがアクセスしていたデータ(例えば、この特定したプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはこの特定したプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、多値度の低いブロックからより多値度の高いブロックに移動する処理を実行してもよい。
図12のフローチャート、図13のフローチャート、および図14のフローチャートを参照して説明したホスト2の処理は、ホストソフトウェア(ストレージドライバ31、オペレーティングシステム(OS)32、ファイルシステム33、プロセス監視部41、等)を実行するように構成されたプロセッサ12によって実行される。
(第3実施形態)
以下、生成されたプロセスの識別子と生成されたプロセスがシステムプロセスまたはユーザプロセスのいずれであるかを示す種別(プロセス種別)とをホスト2からSSD3に通知し、SSD3が、ユーザプロセスによってアクセスされたデータ(例えばユーザプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはユーザプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、システムプロセスによってアクセスされたデータ(例えばシステムプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはシステムプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)よりも優先して移動対象データとして選択する処理を実行する、という構成を、第3実施形態として説明する。
なお、第2実施形態におけるSSD3のハードウェア構成およびホスト2のハードウェア構成は第1実施形態のSSD3およびホスト2と同様であり、ホスト2の内部構成は図10で説明した内部構成と同様である。
第1実施形態および第2実施形態において、プロセス監視部41はホスト2上のプロセスの状態を管理しているが、前述の通り、プロセスにはユーザプロセスとシステムプロセスといった種別がある
前述した通り、プロセスはスワップアウトやスワップインすることがあるが、システムプロセスはホスト2の正常な動作のため必要なプロセスであるため、スワップアウトすることは稀である。換言すれば、スワップアウト、スワップインされるほとんどのプロセスはユーザプロセスであり、システムプロセスはホスト2のメモリ13に常駐するケースが多い。したがって、起動されたシステムプロセスは、SSD3に読み出し/書き込み要求を送出する可能性が高い。
そこで、ホスト2のプロセス監視部41は、SSD3にプロセスの生成を通知する際に、その生成されたプロセスの識別子だけでなく、その生成されたプロセスがシステムプロセスまたはユーザプロセスのいずれであるかを示す種別もSSD3に通知する。
SSD3のデータ制御部403は、図11のプロセスデータ管理テーブルを使用して、生成された各プロセスの識別子と、生成された各プロセスの種別と、生成された各プロセスによってアクセスされたデータ(例えば、生成されたプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、または生成されたプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)に対応するアドレス範囲(LBA領域)、等との対応関係を管理する。そして、データ制御部403は、どのプロセスのデータをより多値度の高いブロックに移動させるかを判断する場合に、種別がユーザプロセスであるプロセスによってアクセスされたデータを、種別がシステムプロセスであるプロセスによってアクセスされたデータよりも優先して選択する。これにより、ユーザプロセスのデータを、アクセスされる可能性が高いシステムプロセスのデータよりも優先して多値度の高いブロックに移動することができるので、ホスト2から見たSSD3の性能、ひいてはユーザから見たSSD3の性能をより向上させることができる。
図15のフローチャートは、ホスト2によって実行される、生成されたプロセスの種別(ユーザプロセス/システムプロセス)をSSD3に通知する処理の手順を示す。
ホスト2において新たなプロセスが生成されたことを検出した場合(ステップS81のYES)、ホスト2のプロセス監視部41は、生成されたプロセスの識別子とこの生成されたプロセスの種別とをSSD3に通知する(ステップS82)。
図16のフローチャートは、ホスト2とSSD3とによって実行される、プロセス数増減通知処理およびデータ移動処理の手順を示す。
ホスト2のプロセス監視部41は、プロセス管理部321と共同して、ホスト2のプロセッサ12上で動作している総プロセス数の増減を管理する(ステップS91)。
総プロセス数が増加したならば(ステップS92のYES)、プロセス監視部41は、総プロセス数の増加を示す通知をSSD3に送信する(ステップS93)。
一方、総プロセス数が減少したならば(ステップS94のYES)、プロセス監視部41は、総プロセス数の減少を示す通知をSSD3に送信する(ステップS95)。
SSD3のコントローラ4が総プロセス数の増加を示す通知をホスト2から受信したならば(ステップS101のYES)、コントローラ4のホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS102)。ステップS102では、ホスト要求処理部402からデータ制御部403にデータの移動が指示され、データ制御部403が、図11のプロセスデータ管理テーブルに基づき、ユーザプロセスによってアクセスされたデータ(例えば、ユーザプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはユーザプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、システムプロセスによってアクセスされたデータ(例えば、システムプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはシステムプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)よりも優先して移動対象データとして選択し、この選択した移動対象データを、多値度の低いブロックから多値度の高いブロックに移動する。
したがって、スワップアウトが起こる前に、SLC用のフリーブロックを事前に確保しておくことが可能となり、スワップアウトに要する時間を低減することができる。この結果、コンピュータシステム1全体の性能を改善することが可能となる。
SSD3のコントローラ4が総プロセス数の減少を示す通知をホスト2から受信したならば(ステップS103のYES)、コントローラ4のホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS104)。ステップS104では、ホスト要求処理部402からデータ制御部403にデータの移動が指示され、データ制御部403が、図11のプロセスデータ管理テーブルに基づき、ユーザプロセスによってアクセスされたデータ(例えば、ユーザプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはユーザプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、システムプロセスによってアクセスされたデータ(例えば、システムプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはシステムプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)よりも優先して移動対象データとして選択し、この選択した移動対象データを、多値度の低いブロックから多値度の高いブロックに移動する。このデータの移動によって、NANDフラッシュメモリ5の利用効率が改善される。
なお、ステップS102では、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行したが、例えば、ユーザプロセスによってアクセスされたデータ(有効データ)をTLCブロック間で移動してもよい。上述したように、このデータ移動はGCの一形態である。この場合でも、データ移動によって生成されたフリーブロックをSLC用のフリーブロックとして割り当てることによって、後のスワップアウトに備えることができる。
同様に、ステップS104でも、例えば、TLCブロック間でユーザプロセスのデータ(有効データ)を移動してもよい。
図17のフローチャートは、ホスト2とSSD3とによって実行される、総プロセス数通知処理およびデータ移動処理の手順を示す。
ホスト2のプロセス監視部41は、プロセス管理部321と共同して、ホスト2のプロセッサ12上で動作している総プロセス数を管理する(ステップS111)。総プロセス数が増減した、または前回の通知から一定期間が経過した、といった通知条件が成立した時(ステップS112のYES)、プロセス監視部41は、総プロセス数を示す情報をSSD3に送信して総プロセス数をSSD3に通知する(ステップS113)。
SSD3のコントローラ4は、総プロセス数を示す通知をホスト2から受信する(ステップS121)。コントローラ4のホスト要求処理部402は、ホスト2によって通知された総プロセス数を第1の閾値と比較して、総プロセス数が第1の閾値を上回っているか否かを判定する(ステップS122)。
総プロセス数が第1の閾値を上回っているならば(ステップS122のYES)、ホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS123)。ステップS123では、ホスト要求処理部402からデータ制御部403にデータ移動が指示される。そして、データ制御部403が、図11のプロセスデータ管理テーブルに基づき、ユーザプロセスによってアクセスされたデータ(例えば、ユーザプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはユーザプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、システムプロセスによってアクセスされたデータ(例えば、システムプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはシステムプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)よりも優先して移動対象データとして選択し、この選択した移動対象データを、多値度の低いブロックから多値度の高いブロックに移動する。
したがって、スワップアウトが起こる前に、SLC用のフリーブロックを事前に確保しておくことが可能となり、スワップアウトに要する時間を低減することができる。この結果、コンピュータシステム1全体の性能を改善することが可能となる。
総プロセス数が第1の閾値を上回っていないならば(ステップS122のNO)、ホスト要求処理部402は、総プロセス数を第2の閾値(<第1の閾値)と比較して、総プロセス数が第2の閾値を下回っているか否かを判定する(ステップS124)。
総プロセス数が第2の閾値を下回っているならば(ステップS124のYES)、ホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS125)。ステップS125では、ホスト要求処理部402からデータ制御部403にデータの移動が指示される。そして、データ制御部403は、図11のプロセスデータ管理テーブルに基づき、ユーザプロセスによってアクセスされたデータ(例えば、ユーザプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはユーザプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)を、システムプロセスによってアクセスされたデータ(例えば、システムプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはシステムプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)よりも優先して移動対象データとして選択し、この選択した移動対象データを、多値度の低いブロックから多値度の高いブロックに移動する。このデータの移動によって、NANDフラッシュメモリ5の利用効率が改善される。
なお、ステップS123では、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行したが、例えば、ユーザプロセスによってアクセスされたデータ(有効データ)をTLCブロック間で移動してもよい。上述したように、このデータ移動はGCの一形態である。この場合でも、データ移動によって生成されたフリーブロックをSLC用のフリーブロックとして割り当てることによって、後のスワップアウトに備えることができる。
同様に、ステップS125でも、例えば、TLCブロック間でユーザプロセスのデータ(有効データ)を移動してもよい。
また、もし複数のプロセスの終了がホスト2からSSD3に通知されたならば、SSD3のコントローラ4は、終了が通知されたプロセスのうち、種別がユーザプロセスであるプロセスによってアクセスされたデータを、種別がシステムプロセスであるプロセスによってアクセスされたデータよりも優先して移動対象データとして選択してもよい。
この場合、図18のフローチャートで示す手順がSSD3のコントローラ4によって実行される。
複数のプロセスの終了がホスト2からSSD3に通知されたならば、SSD3のコントローラ4のホスト要求処理部402は、データ制御部403にデータの移動を指示する。そして、データ制御部403は、図11のプロセスデータ管理テーブルに基づき、終了が通知されたプロセスのうち、種別がユーザプロセスであるプロセスによってアクセスされたデータ(ユーザプロセスによってNANDフラッシュメモリ5に書き込まれたデータ、またはユーザプロセスによってNANDフラッシュメモリ5からの読み出しまたはNANDフラッシュメモリ5への書き込みのいずれかが行われたデータ)をシステムプロセスのデータよりも優先して移動対象データとして選択する(ステップS127)。
そして、データ制御部403は、この移動対象データをより多値度の高いブロックに移動する処理を実行する(ステップS128)。
図15のフローチャート、図16のフローチャート、図17のフローチャート、および図18のフローチャートを参照して説明したホスト2の処理は、ホストソフトウェア(ストレージドライバ31、オペレーティングシステム(OS)32、ファイルシステム33、プロセス監視部41、等)を実行するように構成されたプロセッサ12によって実行される。
(第4実施形態)
第4実施形態では、ホスト2のメモリ13の使用量がホスト2からSSD3に通知される。SSD3のコントローラ4は、メモリ13の使用量が第3の閾値を上回っている場合、スワップアウトに備えてデータの移動を行う。このデータの移動は、GCの一形態である。
また、メモリ13の使用量が第3の閾値よりも小さい第4の閾値を下回っている場合も、SSD3のコントローラ4は、データの移動を行ってもよい。このデータの移動も、GCの一形態である。メモリ13の使用量が少ないときは、スワップアウトは発生しにくいので、ホスト2からのデータの書き込み量は比較的少ない。したがって、メモリ13の使用量が少ないときにデータ移動を行うことにより、ホスト2から見たSSD3のデータ書き込み性能の低下を招くこと無く、例えば、SLCのフリーブロックを事前に増やすことができる。
なお、ホスト2のメモリ13の使用量は、メモリ13の総使用量によって表されてもよいし、メモリ13の総メモリサイズに対するメモリ13の総使用量の割合によって表されてもよい。
また、第4実施形態におけるSSD3のハードウェア構成およびホスト2のハードウェア構成は第1実施形態のSSD3およびホスト2と同様であり、ホスト2の内部構成は図10で説明した内部構成と同様である。
前述の通り、ホスト2のプロセス監視部41は、ホスト2上で動作しているプロセスに割り当てられたメモリ領域のサイズを知っている。そこで、プロセス監視部41は、ホスト2のメモリの13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)をSSD3に通知する。SSD3は、ホスト2のメモリの13の使用量に関する情報を受信し、以下の処理を行う。
SSD3のコントローラ4は、ホスト2のメモリの13の使用量が第3の閾値より多い場合、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動させる。ホスト2のメモリ使用量が多くなったことは、プロセスのスワップアウトが近い将来行われる可能性が高いことを示す。したがって、低い多値度用のフリーブロックを作成しておくことにより、プロセスのスワップアウトおよびスワップインをより短い時間で行うことができるようになる。これにより、ホスト2から見たSSD3の性能、ひいてはユーザから見たSSD3の性能をより向上させることができる。
またSSD3のコントローラ4は、ホスト2のメモリの13の使用量が第4の閾値(<第3の閾値)より少ない場合、多値度の低いブロックに記録されているデータをより多値度の高いブロックに移動させる。ホスト2のメモリ使用量が少ないということは、近い将来、SSD3へのアクセスが少ない可能性が高いことを示す。したがって、低い多値度用のフリーブロックを作成することにより、NANDフラッシュメモリ5の利用効率を改善することができる。
フリーブロックを作成するために、どのプロセスのデータを移動対象にするかの判断は、例えば、これまでに説明した各実施形態と同様の方法で行うことができる。
図19のフローチャートは、ホスト2とSSD3とによって実行される、使用メモリ量通知処理およびデータ移動処理の手順を示す。
ホスト2のプロセス監視部41は、プロセス管理部321と共同して、ホスト2のメモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)を管理する(ステップS131)。メモリ13の使用量が増減した、または前回の通知から一定期間が経過した、といった通知条件が成立した時(ステップS132のYES)、プロセス監視部41は、ホスト2のメモリ13の使用量を示す情報(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)をSSD3に送信してホスト2のメモリ13の使用量をSSD3に通知する(ステップS133)。
SSD3のコントローラ4は、ホスト2のメモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)をホスト2から受信する(ステップS141)。コントローラ4のホスト要求処理部402は、ホスト2によって通知されたメモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)を第3の閾値と比較して、メモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)が第3の閾値を上回っているか否かを判定する(ステップS142)。
メモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)が第3の閾値を上回っているならば(ステップS142のYES)、ホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS143)。ステップS143では、ホスト要求処理部402からデータ制御部403にデータ移動が指示される。そして、データ制御部403がデータを多値度の低いブロックから多値度の高いブロックに移動する。
メモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)が第3の閾値を上回っていないならば(ステップS142のNO)、ホスト要求処理部402は、メモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)を第4の閾値(<第3の閾値)と比較して、メモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)が第4の閾値を下回っているか否かを判定する(ステップS144)。
メモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)が第4の閾値を下回っているならば(ステップS144のYES)、ホスト要求処理部402は、データ制御部403を使用して、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS145)。ステップS145では、ホスト要求処理部402からデータ制御部403にデータの移動が指示される。そして、データ制御部403は、データを多値度の低いブロックから多値度の高いブロックに移動する。
なお、ステップS143では、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理(GCの一形態)を実行したが、例えば、TLCブロック間でデータ(有効データ)を移動する処理(GCの一形態)を実行してもよい。この場合でも、データ移動によって生成されたフリーブロックをSLC用のフリーブロックとして割り当てることによって、後のスワップアウトに備えることができる。
同様に、ステップS145でも、例えば、TLCブロック間でデータ(有効データ)を移動する処理(GCの一形態)を実行してもよい。
図19のフローチャートを参照して説明したホスト2の処理は、ホストソフトウェア(ストレージドライバ31、オペレーティングシステム(OS)32、ファイルシステム33、プロセス監視部41、等)を実行するように構成されたプロセッサ12によって実行される。
(第5実施形態)
第5実施形態では、次に起こるスワップアウトによってホスト2からSSD3に書き込まれるデータ量を示す情報がSSD3に通知される。SSD3のコントローラ4は、例えば、メモリ13の使用量が第3の閾値を上回っている場合、ホスト2から通知されたデータ量に対応する空き容量が多値度の低いブロックに確保されるように、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する。
ホスト2のプロセス監視部41は、次にホスト2で行われるスワップアウトの対象プロセスを知ることができる。スワップアウトの対象プロセスは、例えば、最終起動時刻が古いプロセスや、最も割り当てメモリサイズの大きいプロセスである。したがって、プロセス監視部41は、次に起こるスワップアウトによってSSD3に書きこまれるデータ量を予測することができる。そこで、プロセス監視部41は次に起こるスワップアウトによってSSD3に書きこまれると予測されるデータ量をSSD3に通知する。
通知を受けたSSD3のコントローラは、多値度の低いブロックに通知された量の空き容量ができるように、データの移動を行う。これにより、スワップアウトにかかる時間を短縮でき、ホスト2から見たSSD3の性能、ひいてはユーザから見たSSD3の性能をより向上させることができる。
どのプロセスのデータを移動対象にするかの判断は、例えば、これまでに説明した各実施形態と同様の方法で行うことができる。
図20のフローチャートは、ホスト2とSSD3とによって実行される、スワップアウトによってSSD3に書き込まれるデータ量を通知する処理およびデータ移動処理の手順を示す。
ホスト2のプロセス監視部41は、次に起こるスワップアウトによってSSD3に書き込まれるデータ量を推定する(ステップS151)。そして、プロセス監視部41は、この推定されるデータ量を示す情報をSSD3に送信してこの推定されるデータ量をSSD3に通知する(ステップS152)。
SSD3のコントローラ4は、この推定されるデータ量の通知をホスト2から受信する(ステップS161)。コントローラ4のホスト要求処理部402は、この推定されるデータ量に対応する空き容量が多値度の低いブロックに確保されるように多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動すべきことをデータ制御部403に指示する。この指示を受けたデータ制御部403は、この推定されるデータ量に対応する空き容量が多値度の低いブロックに確保されるように、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS162)。
なお、ステップS162では、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行したが、例えば、TLCブロック間でデータ(有効データ)を移動してもよい。上述したように、このデータ移動はGCの一形態である。この場合でも、データ移動によって生成されたフリーブロックをSLC用のフリーブロックとして割り当てることによって、後のスワップアウトに備えることができる。
図21のフローチャートは、ホスト2とSSD3とによって実行される、使用メモリ量/スワップアウトによってSSD3に書き込まれるデータ量を通知する処理およびデータ移動処理の手順を示す。
ホスト2のプロセス監視部41は、プロセス管理部321と共同して、ホスト2のメモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)を管理する。そして、プロセス監視部41は、ホスト2のメモリ13の使用量を示す情報と、次に起こるスワップアウトでSSD3に書き込まれる推定データ量とをSSD3に通知する(ステップS153)。
SSD3のコントローラ4は、ホスト2のメモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)と、次に起こるスワップアウトでSSD3に書き込まれる推定データ量とをホスト2から受信する(ステップS163)。
コントローラ4のホスト要求処理部402は、ホスト2によって通知されたメモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)を第3の閾値と比較して、メモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)が第3の閾値を上回っているか否かを判定する(ステップS164)。
メモリ13の使用量(メモリ13の総使用量、またはメモリ13の総メモリサイズに対するメモリ13の総使用量の割合)が第3の閾値を上回っているならば(ステップS164のYES)、ホスト要求処理部402は、データ制御部403を使用して、通知された推定データ量に対応する空き容量が多値度の低いブロックに確保されるように多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動すべきことをデータ制御部403に指示する。この指示を受けたデータ制御部403は、この推定されるデータ量に対応する空き容量が多値度の低いブロックに確保されるように、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行する(ステップS165)。
なお、ステップS165では、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行したが、例えば、TLCブロック間でデータ(有効データ)を移動してもよい。上述したように、このデータ移動はGCの一形態である。この場合でも、データ移動によって生成されたフリーブロックをSLC用のフリーブロックとして割り当てることによって、後のスワップアウトに備えることができる。
また、次に起こるスワップアウトによってホスト2からSSD3に書き込まれるデータ量をホスト2からSSD3に通知する処理は、第4実施形態のみならず、第1実施形態、第2実施形態、または第3実施形態に適用してもよい。例えば、スワップアウトによってホスト2からSSD3に書き込まれるデータ量をホスト2からSSD3に通知する処理が第1実施形態に適用されたならば、SSD3のコントローラ4は、総プロセス数が第1の閾値を上回っているとの判定をした後、通知されたデータ量分の空き容量が多値度の低いブロックに確保されるように、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動してもよい。
また、図20のフローチャート、および図21のフローチャートを参照して説明したホスト2の処理は、ホストソフトウェア(ストレージドライバ31、オペレーティングシステム(OS)32、ファイルシステム33、プロセス監視部41、等)を実行するように構成されたプロセッサ12によって実行される。
(第6実施形態)
第6実施形態では、ホスト2のプロセス監視部41は、プログラムそれぞれが起動される頻度と共に、これらプログラムのリストを管理している。プロセス監視部41は、起動頻度の高いプログラムを示す情報をSSD3に通知する。あるプログラムの起動頻度は、例えば、このプログラムがある基準期間内に起動された回数、またはホスト2のOS32のブートからシャットダウンまでの期間にこのプログラムが起動された回数、等によって表すことができる。基準期間内に起動された回数(またはOS32のブートからシャットダウンまでの期間に起動された回数)がある閾値を上回るプログラムが、起動頻度の高いプログラムとして検出されてもよい。
SSD3のコントローラ4は、ホスト2から通知された起動頻度の高いプログラムに対応するプロセスによって読み出しまたは書き込まれたデータを、多値度の高いブロックからより多値度の低いブロックに移動する処理を実行する。これにより、このプログラムを起動するために要する時間を短縮することができ、このプログラムを高速に起動することが可能となる。
起動頻度の高いプログラムのデータをより多値度の低いブロックに移動する処理を実行するタイミングは、これに限定されないが、例えば、ホスト2から通知される総プロセス数が第2の閾値を下回ったとの判定の後であってもよいし、ホスト2から総プロセス数の減少が通知された後であってもよいし、あるいは、ホストメモリの使用量が第4の閾値を下回ったとの判定の後であってもよい。
また、SSD3のコントローラ4は、多値度の低いブロックのデータを多値度の高いブロックに移動させるときに、起動頻度の低いプログラムのデータを移動対象データとして優先的に選択してもよい。
なお、第6実施形態におけるSSD3のハードウェア構成およびホスト2のハードウェア構成は第1実施形態のSSD3およびホスト2と同様であり、ホスト2の内部構成は図10で説明した内部構成と同様である。
以下、第6実施形態のデータ移動処理について具体的に説明する。
前述の通り、ホスト2のプロセス監視部41は、ホスト2上で動作しているプロセスがどのプログラムに対応するかを管理している。プログラムは、起動と終了を繰り返し、そのたびにプロセスは生成され、破棄される。
プロセスの識別子のうち、プロセスIDはプロセスが生成されるたびに異なる数値が割り当てられるが、対応するプログラム、例えばプログラム名は同一である。したがって、プロセス監視部41は、生成されたプロセスがどのプログラムに対応するのかを記録しておくことで、頻繁に起動されるプログラムを知ることができる。そこで、プロセス監視部41は、SSD3に対して、頻繁に起動されるプログラム、つまり起動頻度の高いプログラムを通知する。
SSD3のコントローラ4は、生成された各プロセスの識別子と、生成された各プロセスによって読み出しまたは書き込まれたデータに対応するアドレス範囲、等との対応関係を図11のプロセスデータ管理テーブルを使用して管理する。さらに、SSD3のコントローラ4は、図11のプロセスデータ管理テーブルに、各プロセス識別子がどのプログラムに対応するかを合わせて記録する。そして、コントローラ4は、プロセス監視部41から通知された頻繁に起動されるプログラムに対応するプロセスがアクセス(読み出しまたは書き込み)するデータを移動対象データとして選択し、この移動対象データを多値度の高いブロックからより多値度の低いブロックに移動させる。これにより、ユーザもしくはシステムによって頻繁に起動されるプログラムのデータを多値度の低いブロックに集めることができ、ホスト2から見たSSD3の性能、ひいてはユーザから見たSSD3の性能をより向上させることができる。
また、他の各実施形態で説明したデータ移動処理対象のプロセスを選択する際に、コントローラ4は、プロセス監視部41から通知された頻繁に起動されるプログラムを、多値度の低いブロックから多値度の高いブロックへ移動すべき移動対象データとして選択しないようにしてもよい。例えば、ホスト2上で動作する総プロセス数が第1の閾値を上回っとの判定の後、あるいはホスト2のメモリ13の使用量が第4の閾値を上回ったとの判定の後、コントローラ4は、図11のプロセスデータ管理テーブルに基づいて、ホスト2によって通知された起動頻度の高いプログラムを除く他のプログラムに対応するプロセスの中から、データを移動すべきプロセスを選択してもよく、そして、この選択したプロセスによって読み出しまたは書き込まれたデータを多値度の低いブロックから多値度の高いブロックへ移動させてもよい。
これにより、ユーザもしくはシステムが頻繁に起動するプログラムのデータが多値度の低いブロックに記録されている状態が維持されるので、ホスト2から見たSSD3の性能、ひいてはユーザから見たSSD3の性能をより向上させることができる。
図22のフローチャートは、ホスト2とSSD3とによって実行される、頻繁に起動されるプログラムを通知する処理およびデータ移動処理の手順を示す。
ホスト2のプロセス監視部41は、頻繁に起動されるプログラムを検出する(ステップS171)。プロセス監視部41は、検出されたプログラムつまり起動頻度の高いプログラムを示す情報をSSD3に送信して、起動頻度の高いプログラムをSSD3に通知する(ステップS172)。
SSD3のコントローラ4は、起動頻度の高いプログラムを示す情報をホスト2から受信する。そして、コントローラ4のホスト要求処理部402は、データ制御部403に対して、起動頻度の高いプログラムよってアクセスされたデータをより多値度の低いブロックに移動すべきことを指示する。この指示を受けたデータ制御部403は、図11のプロセスデータ管理テーブルに基づいて、ホスト2によって通知された起動頻度の高いプログラムに対応するプロセスによって読み出しまたは書き込まれたデータを多値度の高いブロックからより多値度の低いブロックに移動する処理を実行する(ステップS173)。
図22のフローチャートを参照して説明したホスト2の処理は、ホストソフトウェア(ストレージドライバ31、オペレーティングシステム(OS)32、ファイルシステム33、プロセス監視部41、等)を実行するように構成されたプロセッサ12によって実行される。
以上説明したように、本第1実施形態〜第6実施形態によれば、ホスト2の内部状態に関する情報(総プロセス数、総プロセス数の増加または減少、生成された各プロセスの識別子、生成された各プロセスの種別、終了されたプロセスの識別子、要求元のプロセスの識別子が付与された読み出し/書き込み要求、ホストメモリの使用量、次に起こるスワップアウトでSSD3に書き込まれるデータ量、頻繁に起動されるプログラム、等)がホスト2からSSD3に通知され、この情報に基づいて、多値レベルが互いに異なるブロック間でのデータ移動やGCのためのデータ移動といったSSD3の内部動作が制御される。
このように、ホスト2の状態変化をSSD3の内部の制御に利用することで、ホスト2から見たSSD3の性能、ひいてはユーザから見たSSD3の性能を向上させることができる。また、SSD3内部のNANDフラッシュメモリ5の利用効率の改善を図ることができる。
なお、ここでは、ホスト2の内部状態を通知処理とホスト2から通知される内部状態に基づくデータ移動処理とを第1実施形態〜第6実施形態にそれぞれ分けて説明したが、これら実施形態の処理は適宜組み合わせて使用することができる。また、第1実施形態〜第6実施形態のうちの任意の2以上の実施形態の構成を併せ持つ構成が利用されてもよい。
また、SSD3に対するホスト2の状態の通知は、様々な標準規格に従った方法で行ってもよいし、標準規格以外の方法を用いて行ってもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD(ストレージデバイス)、4…コントローラ、5…NANDフラッシュメモリ、31…ストレージドライバ、32…オペレーティングシステム、33…ファイルシステム、321…プロセス管理部、41…プロセス監視部、42…フィルタドライバ、402…ホスト要求処理部、403……データ制御部。

Claims (18)

  1. ホストに接続可能なストレージデバイスであって、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
    前記コントローラは、
    前記ホスト上で動作している総プロセス数を示す情報を前記ホストから受信し、
    前記総プロセス数が第1の閾値を上回っているとの判定をした後、前記不揮発性メモリの少なくとも一つのブロックに格納されているデータを前記不揮発性メモリの他の少なくとも一つのブロックに移動する処理を実行するように構成されている、ストレージデバイス。
  2. 前記複数のブロックの各々は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用され、
    前記コントローラは、前記総プロセス数が前記第1の閾値を上回っているとの判定をした後、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行するように構成されている請求項1記載のストレージデバイス。
  3. 前記コントローラは、
    前記ホストにおいて生成された各プロセスの識別子と前記生成された各プロセスがシステムプロセスまたはユーザプロセスのいずれであるかを示す種別とを示す情報と、データの書き込みを要求したプロセスの識別子が各々に付与された書き込み要求それぞれとを前記ホストから受信し、
    前記生成された各プロセスの識別子と、前記生成された各プロセスの種別と、前記生成された各プロセスによって書き込まれたデータに対応するアドレス範囲との対応関係を第1の管理テーブルを使用して管理し、
    前記総プロセス数が前記第1の閾値を上回っているとの判定をした後、前記第1の管理テーブルに基づいて、種別が前記ユーザプロセスであるプロセスによって前記不揮発性メモリに書き込まれたデータを、種別が前記システムプロセスであるプロセスによって前記不揮発性メモリに書き込まれたデータよりも優先して移動対象データとして選択し、前記移動対象データを、前記移動対象データが格納されているブロックから他のブロックに移動する処理を実行するように構成されている請求項1記載のストレージデバイス。
  4. 前記複数のブロックの各々は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用され、
    前記コントローラは、前記移動対象データを多値度の低いブロックからより多値度の高いブロックに移動する処理を実行するように構成されている請求項3記載のストレージデバイス。
  5. ホストに接続可能なストレージデバイスであって、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
    前記コントローラは、
    前記ホストにおいて生成された各プロセスの識別子を示す情報と、データの書き込みを要求したプロセスの識別子が各々に付与された書き込み要求それぞれとを前記ホストから受信し、
    前記生成された各プロセスの識別子と、前記生成された各プロセスによって書き込まれたデータに対応するアドレス範囲との対応関係を第1のテーブルを使用して管理し、
    終了したプロセスの識別子を示す情報を前記ホストから受信した後、前記第1のテーブルに基づいて、前記終了したプロセスによって前記不揮発性メモリに書き込まれた第1のデータを、前記第1のデータが格納されているブロックから他のブロックに移動する処理を実行するように構成されている、ストレージデバイス。
  6. 前記複数のブロックの各々は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用され、
    前記コントローラは、前記終了したプロセスによって前記不揮発性メモリに書き込まれた前記第1のデータを多値度の低いブロックからより多値度の高いブロックに移動する処理を実行するように構成されている請求項5記載のストレージデバイス。
  7. ホストに接続可能なストレージデバイスであって、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
    前記コントローラは、
    前記ホストのメモリの使用量を示す情報を前記ホストから受信し、
    前記ホストのメモリの使用量が第3の閾値を上回っているとの判定をした後、前記不揮発性メモリの少なくとも一つのブロックに格納されているデータを前記不揮発性メモリの他の少なくとも一つのブロックに移動する処理を実行するように構成されている、ストレージデバイス。
  8. 前記複数のブロックの各々は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用され、
    前記コントローラは、前記ホストのメモリの使用量が前記第3の閾値を上回っているとの判定をした後、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行するように構成されている請求項7記載のストレージデバイス。
  9. 前記コントローラは、
    次に起こるプロセスのスワップアウトによって前記ストレージデバイスに書き込まれるデータ量を示す情報を前記ホストから受信し、
    前記ホストのメモリの使用量が前記第3の閾値を上回っているとの判定をした後、前記受信された情報によって示されるデータ量に対応する空き容量が確保されるように前記不揮発性メモリの少なくとも一つのブロックに格納されているデータを前記不揮発性メモリの他の少なくとも一つのブロックに移動する処理を実行するように構成されている請求項7記載のストレージデバイス。
  10. 前記複数のブロックの各々は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用され、
    前記コントローラは、
    次に起こるプロセスのスワップアウトによって前記ストレージデバイスに書き込まれるデータ量を示す情報を前記ホストから受信し、
    前記ホストのメモリの使用量が前記第3の閾値を上回っているとの判定をした後、前記受信された情報によって示されるデータ量に対応する空き容量が多値度の低いブロックに確保されるように、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行するように構成されている請求項7記載のストレージデバイス。
  11. ホストに接続可能なストレージデバイスであって、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
    前記複数のブロックの各々は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用され、
    前記コントローラは、
    前記ホストにおいて生成された各プロセスの識別子を示す情報と、データの読み出しまたは書き込みを要求したプロセスの識別子が各々に付与された読み出し/書き込み要求それぞれと、起動頻度の高いプログラムを示す情報とを前記ホストから受信し、
    前記生成された各プロセスの識別子と、前記生成された各プロセスによって読み出しまたは書き込まれたデータに対応するアドレス範囲との対応関係を第1の管理テーブルを使用して管理し、
    前記第1の管理テーブルに基づいて、前記起動頻度の高いプログラムに対応するプロセスによって読み出しまたは書き込まれたデータを多値度の高いブロックからより多値度の低いブロックに移動する処理を実行するように構成されている、ストレージデバイス。
  12. プロセッサおよびメモリを含むコンピュータと、ストレージデバイスとを具備するコンピュータシステムであって、
    前記プロセッサは、前記プロセッサ上で動作している総プロセス数を前記ストレージデバイスに通知する処理を実行するように構成され、
    前記ストレージデバイスは、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
    前記コントローラは、
    前記コンピュータから通知される前記総プロセス数が第1の閾値を上回っているとの判定をした後、前記不揮発性メモリの少なくとも一つのブロックに格納されているデータを前記不揮発性メモリの他の少なくとも一つのブロックに移動する処理を実行するように構成されている、コンピュータシステム。
  13. 前記複数のブロックの各々は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用され、
    前記コントローラは、前記総プロセス数が前記第1の閾値を上回っているとの判定をした後、多値度の低いブロックに格納されているデータをより多値度の高いブロックに移動する処理を実行するように構成されている請求項12記載のコンピュータシステム。
  14. 前記プロセッサは、前記コンピュータにおいて生成された各プロセスの識別子と前記生成された各プロセスがシステムプロセスまたはユーザプロセスのいずれであるかを示す種別とを示す情報と、データの書き込みを要求したプロセスの識別子が各々に付与された書き込み要求それぞれとを前記ストレージデバイスに送信するように構成され、
    前記コントローラは、
    前記生成された各プロセスの識別子と、前記生成された各プロセスの種別と、前記生成された各プロセスによって書き込まれたデータに対応するアドレス範囲との対応関係を第1の管理テーブルを使用して管理し、
    前記総プロセス数が前記第1の閾値を上回っているとの判定をした後、前記第1の管理テーブルに基づいて、種別がユーザプロセスであるプロセスによって前記不揮発性メモリに書き込まれたデータを、種別が前記システムプロセスであるプロセスによって前記不揮発性メモリに書き込まれたデータよりも優先して移動対象データとして選択し、前記移動対象データを、前記移動対象データが格納されているブロックから他のブロックに移動する処理を実行するように構成されている請求項12記載のコンピュータシステム。
  15. 前記複数のブロックの各々は、一つのメモリセルに格納されるビットの数を示す多値度が互いに異なる複数種のブロックのいずれかとして選択的に使用され、
    前記コントローラは、前記移動対象データを多値度の低いブロックからより多値度の高いブロックに移動する処理を実行するように構成されている請求項14記載のコンピュータシステム。
  16. 前記プロセッサは、前記コンピュータの前記メモリの使用量を前記ストレージデバイスに通知するように構成され、
    前記コントローラは、前記コンピュータの前記メモリの使用量が第3の閾値を上回っているとの判定をした後、前記不揮発性メモリの少なくとも一つのブロックに格納されているデータを前記不揮発性メモリの他の少なくとも一つのブロックに移動する処理を実行するように構成されている請求項12記載のコンピュータシステム。
  17. 前記プロセッサは、次に起こるプロセスのスワップアウトによって前記ストレージデバイスに書き込まれるデータ量を前記ストレージデバイスに通知するように構成され、
    前記コンピュータの前記メモリの使用量が前記第3の閾値を上回っているとの判定をした後、前記通知されたデータ量に対応する空き容量が確保されるように前記不揮発性メモリの少なくとも一つのブロックに格納されているデータを前記不揮発性メモリの他の少なくとも一つのブロックに移動する処理を実行するように構成されている請求項16記載のコンピュータシステム。
  18. 前記プロセッサは、前記コンピュータにおいて生成された各プロセスの識別子を前記ストレージデバイスに通知する処理と、データの読み出しまたは書き込みを要求したプロセスの識別子が各々に付与された読み出し/書き込み要求それぞれを前記ストレージデバイスに送信する処理と、起動頻度の高いプログラムを前記ストレージデバイスに通知する処理とを実行するように構成され、
    前記コントローラは、
    前記生成された各プロセスの識別子と、前記生成された各プロセスによって読み出しまたは書き込まれたデータに対応するアドレス範囲との対応関係を第1の管理テーブルを使用して管理し、
    前記第1の管理テーブルに基づいて、前記起動頻度の高いプログラムに対応するプロセスによって読み出しまたは書き込まれたデータを多値度の高いブロックからより多値度の低いブロックに移動する処理を実行するように構成されている請求項12記載のコンピュータシステム。
JP2018054918A 2018-03-22 2018-03-22 ストレージデバイスおよびコンピュータシステム Active JP6968016B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2018054918A JP6968016B2 (ja) 2018-03-22 2018-03-22 ストレージデバイスおよびコンピュータシステム
TW107123304A TWI682279B (zh) 2018-03-22 2018-07-05 儲存裝置及電腦系統
KR1020180083935A KR102094236B1 (ko) 2018-03-22 2018-07-19 스토리지 디바이스 및 컴퓨터 시스템
CN201810801383.0A CN110297780B (zh) 2018-03-22 2018-07-20 存储装置及计算机系统
US16/047,205 US10871920B2 (en) 2018-03-22 2018-07-27 Storage device and computer system
US16/951,785 US20210072923A1 (en) 2018-03-22 2020-11-18 Storage device and computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018054918A JP6968016B2 (ja) 2018-03-22 2018-03-22 ストレージデバイスおよびコンピュータシステム

Publications (2)

Publication Number Publication Date
JP2019168822A JP2019168822A (ja) 2019-10-03
JP6968016B2 true JP6968016B2 (ja) 2021-11-17

Family

ID=67983633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018054918A Active JP6968016B2 (ja) 2018-03-22 2018-03-22 ストレージデバイスおよびコンピュータシステム

Country Status (5)

Country Link
US (2) US10871920B2 (ja)
JP (1) JP6968016B2 (ja)
KR (1) KR102094236B1 (ja)
CN (1) CN110297780B (ja)
TW (1) TWI682279B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
US11768701B2 (en) * 2019-09-17 2023-09-26 Western Digital Technologies, Inc. Exception analysis for data storage devices
CN113590509B (zh) * 2020-04-30 2024-03-26 华为技术有限公司 一种页交换的方法、存储系统和电子设备
JP2022007191A (ja) 2020-06-25 2022-01-13 キオクシア株式会社 ストレージデバイス、ストレージシステム及び制御方法
US11907539B2 (en) * 2020-11-20 2024-02-20 Samsung Electronics Co., Ltd. System and method for stream based data placement on hybrid SSD
CN112559392B (zh) * 2020-12-23 2023-08-15 深圳大普微电子科技有限公司 一种加速读存储介质的方法、读加速硬件模块及存储器
US20220374216A1 (en) * 2021-05-20 2022-11-24 Lenovo (United States) Inc. Method of manufacturing information processing apparatus and mobile computer
CN113504994B (zh) * 2021-07-26 2022-05-10 上海遁一信息科技有限公司 一种内存池性能弹性伸缩的实现方法及系统
CN114201233A (zh) * 2021-11-18 2022-03-18 成都网思科平科技有限公司 一种基于快照参照的减少进程模块加载数据存储的方法
US11977739B2 (en) 2022-09-01 2024-05-07 Western Digital Technologies, Inc. Handling write data burst for improved performance and resource usage
US11960742B1 (en) * 2022-10-14 2024-04-16 Oracle International Corporation High-performance, block-level fail atomicity on byte-level non-volatile media

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US7594128B2 (en) * 2004-08-04 2009-09-22 Hewlett-Packard Development Company, L.P. Systems and methods to determine processor utilization
JP4805696B2 (ja) 2006-03-09 2011-11-02 株式会社東芝 半導体集積回路装置およびそのデータ記録方式
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US20080222348A1 (en) * 2007-03-08 2008-09-11 Scandisk Il Ltd. File system for managing files according to application
TW200841343A (en) * 2007-04-02 2008-10-16 Apacer Technology Inc A data storage device consisting of NAND (Not-AND) flash memory and its data storing method
KR101085393B1 (ko) * 2008-12-24 2011-11-21 주식회사 코아로직 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치
JP2010266962A (ja) * 2009-05-12 2010-11-25 Toshiba Storage Device Corp 記憶装置、その制御方法及びその記憶装置を備える電子装置
US8402214B2 (en) * 2009-09-16 2013-03-19 Hitachi, Ltd. Dynamic page reallocation storage system management
JP5066209B2 (ja) * 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
WO2011151963A1 (ja) * 2010-05-31 2011-12-08 パナソニック株式会社 メモリ管理装置、メモリ管理方法、メモリ管理プログラム、メモリ管理プログラムを記録したコンピュータ読み取り可能な記録媒体及び集積回路
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
US8537613B2 (en) * 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
TWI471862B (zh) 2011-08-19 2015-02-01 Silicon Motion Inc 快閃記憶體控制器
US20170017406A1 (en) * 2015-07-14 2017-01-19 HGST Netherlands B.V. Systems and methods for improving flash-oriented file system garbage collection
CN108108311A (zh) * 2013-12-12 2018-06-01 株式会社日立制作所 存储装置及存储装置的控制方法
US9678797B2 (en) * 2014-03-10 2017-06-13 Microsoft Technology Licensing, Llc Dynamic resource management for multi-process applications
US9928169B2 (en) * 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US10452280B2 (en) * 2014-10-03 2019-10-22 International Business Machines Corporation Hybrid storage system employing reconfigurable memory
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283125A1 (en) * 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
TWI672706B (zh) * 2015-12-14 2019-09-21 南韓商愛思開海力士有限公司 記憶體儲存裝置及其操作方法
KR102259868B1 (ko) 2015-12-17 2021-06-01 에스케이텔레콤 주식회사 메모리제어장치 및 메모리제어장치의 동작 방법
US11169707B2 (en) * 2016-01-22 2021-11-09 Netapp, Inc. Garbage collection pacing in a storage system
US10235079B2 (en) * 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device
US10185658B2 (en) * 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
US20170249092A1 (en) * 2016-02-25 2017-08-31 Canon Kabushiki Kaisha Apparatus having volatile memory, memory control method, and storage medium
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
KR102550343B1 (ko) 2016-07-27 2023-07-03 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법
TWI615710B (zh) * 2016-12-14 2018-02-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
TWI602061B (zh) * 2017-03-16 2017-10-11 群聯電子股份有限公司 資料寫入方法、記憶體儲存裝置與記憶體控制電路單元
TWI615711B (zh) * 2017-03-28 2018-02-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10496297B2 (en) * 2017-11-21 2019-12-03 Micron Technology, Inc. Data categorization based on invalidation velocities
US10713158B2 (en) * 2018-06-28 2020-07-14 Western Digital Technologies, Inc. Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring

Also Published As

Publication number Publication date
JP2019168822A (ja) 2019-10-03
CN110297780A (zh) 2019-10-01
US20190294365A1 (en) 2019-09-26
US20210072923A1 (en) 2021-03-11
TWI682279B (zh) 2020-01-11
US10871920B2 (en) 2020-12-22
KR102094236B1 (ko) 2020-04-23
KR20190111714A (ko) 2019-10-02
TW201941060A (zh) 2019-10-16
CN110297780B (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
JP6968016B2 (ja) ストレージデバイスおよびコンピュータシステム
US11669444B2 (en) Computing system and method for controlling storage device
JP6785205B2 (ja) メモリシステムおよび制御方法
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
CN106874217B (zh) 存储器系统及控制方法
CN106874211B (zh) 存储器系统及非易失性存储器的控制方法
JP6517684B2 (ja) メモリシステムおよび制御方法
US10761731B2 (en) Array controller, solid state disk, and method for controlling solid state disk to write data
JP6517685B2 (ja) メモリシステムおよび制御方法
JP6139381B2 (ja) メモリシステムおよび方法
US11023132B2 (en) Electronic device, computer system, and control method
JP2019148913A (ja) メモリシステム
CN110908595B (zh) 存储装置及信息处理系统
JP2021007059A (ja) メモリシステム
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
JP6721765B2 (ja) メモリシステムおよび制御方法
JP6666405B2 (ja) メモリシステムおよび制御方法
EP4287028A1 (en) Storage device providing high purge performance and memory block management method thereof
JP2019016386A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200915

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210922

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210928

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211026

R150 Certificate of patent or registration of utility model

Ref document number: 6968016

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150