JP2016170583A - メモリシステムおよび情報処理システム - Google Patents
メモリシステムおよび情報処理システム Download PDFInfo
- Publication number
- JP2016170583A JP2016170583A JP2015049330A JP2015049330A JP2016170583A JP 2016170583 A JP2016170583 A JP 2016170583A JP 2015049330 A JP2015049330 A JP 2015049330A JP 2015049330 A JP2015049330 A JP 2015049330A JP 2016170583 A JP2016170583 A JP 2016170583A
- Authority
- JP
- Japan
- Prior art keywords
- stream
- data
- information
- host
- write
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/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
Abstract
【課題】ホストに有用な情報を提供することができるメモリシステムを実現する。
【解決手段】実施形態によれば、メモリシステムは、複数の消去ブロックを含む不揮発性メモリと、コントローラとを具備する。前記コントローラは、第1ストリームに関連付けられたデータがライトされ前記第1ストリームに関連付けられていないデータがライトされない消去ブロックが、前記不揮発性メモリのガベージコレクション動作に使用されたか否かを示す第1情報を、ホストに提供するように構成されている。
【選択図】図1
【解決手段】実施形態によれば、メモリシステムは、複数の消去ブロックを含む不揮発性メモリと、コントローラとを具備する。前記コントローラは、第1ストリームに関連付けられたデータがライトされ前記第1ストリームに関連付けられていないデータがライトされない消去ブロックが、前記不揮発性メモリのガベージコレクション動作に使用されたか否かを示す第1情報を、ホストに提供するように構成されている。
【選択図】図1
Description
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NANDフラッシュ技術をベースとするソリッドステートドライブ(SSD)が知られている。SSDは、その低電力消費、高性能という特徴により、様々なコンピュータのメインストレージとして使用されている。
最近では、ホストからの制御によってSSDの性能改善を図る試みがされ始めている。
しかし、SSDの性能を改善できるようにするためには、性能改善のための有用な情報をホストに提供するための新たな機能の実現が要求される。
本発明の一つの実施形態は、ホストに有用な情報を提供することができるメモリシステムおよび情報処理システムを提供することを目的とする。
実施形態によれば、メモリシステムは、複数の消去ブロックを含む不揮発性メモリと、コントローラとを具備する。前記コントローラは、第1ストリームに関連付けられたデータがライトされ前記第1ストリームに関連付けられていないデータがライトされない消去ブロックが、前記不揮発性メモリのガベージコレクション動作に使用されたか否かを示す第1情報を、ホストに提供するように構成されている。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NANDフラッシュ技術をベースとするソリッドステートドライブ(SSD)3として実現されている。
情報処理システム1は、ホスト2と、SSD3とを含む。ホスト2は、パーソナルコンピュータ、サーバのような情報処理装置である。
SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)等が使用し得る。以下では、限定されないが、ホスト2とSSD3とが、SASを介して相互接続されるケースを主として想定する。
SSD3は、コントローラ4、NANDメモリ5、およびDRAM6を備える。NANDメモリ5は、限定されないが、複数のNANDフラッシュメモリチップによって編成されていてもよい。
NANDメモリ5は、多数の消去ブロックB0〜Bm−1を含む。消去ブロックB0〜Bm−1は、消去単位として機能する。消去ブロックは単に「ブロック」と称されることもある。
消去ブロックB0〜Bm−1は多数のページ(物理ページ)によって組成されている。つまり、消去ブロックB0〜Bm−1の各々は、多数のページP0〜Pn−1を含む。NANDメモリ5においては、データのリードおよびライトはページ単位で実行される。
コントローラ4は、NANDメモリ5に電気的に結合されている。コントローラ4は、NANDメモリ5のデータ管理とNANDメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
データ管理には、(1)論理ブロックアドレス(LBA)空間とNANDメモリ5上の物理記憶位置との間の対応関係の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。
ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。
このため、コントローラ4は、同じLBAへのライト(上書き)を、NANDメモリ5上の別のページにマッピングする。つまり、コントローラ4は、この別のページにデータをライトする。そして、コントローラ4は、このLBAをこの別のページに関連付ける。このLBAが関連付けられていた元のページ、つまり古いデータは、無効化される。
ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、消去ブロックの書き換え回数を平準化するための動作である。
ガベージコレクションは、フリースペースを作り出すための動作である。このガベージコレクション動作は、NANDメモリ5内のフリーブロックの個数を増やすため、有効データと無効データの混在する複数の消去ブロックを使用して、有効データの集約を行う。ガベージコレクション動作においては、有効データと無効データとが混在する消去ブロック群から有効データがリードされる。そして、リードされた有効データは、ある消去ブロック(フリーフロック)にライトされる。このコピー(データ移動)の結果、有効データが特定の幾つかの消去ブロック(フリーフロック)に集められる。有効データがフリーフロックにコピーされることによって空となった消去ブロック群は、その消去後に、フリーブロックとして再利用することが可能となる。
しかし、このガベージコレクション動作はSSD3をビジー状態にする要因となり得、さらに、データ移動によって内部的なデータライト回数の増加を引き起こす要因にもなり得る。
このガベージコレクションが実行される頻度を抑制できるようにするために、コントローラ4は、通常ライト動作に加え、ストリームライト動作をサポートしている。
ストリームライト動作は、ホスト2によって指定された同じIDを伴うデータ(つまり、同じ予期されるライフタイムを有するデータ)を、同じ消去ブロックにライトする動作である。一方、通常ライト動作は、どのストリームのIDも伴わないデータを、ストリームライト用に割り当てられていない任意の消去ブロック内の次の利用可能ページにライトする動作である。
ホスト2は、同じ予期されるライフタイムを有するデータを同じストリームに割り当てる。データのライフタイムは、データが生成される時点からこのデータが削除または更新される時点までの期間を意味する。同じ予期されるライフタイムを有するデータは、その削除または更新によってほぼ同時に無効化されることが可能なデータグループを意味する。例えば、単一のファイルに関連付けられたデータは、同じ予期されるライフタイムを有するデータとして扱われてもよい。
コントローラ4は、特定のストリームに関連付けられたデータを同じ消去ブロックにライトする。特定のストリームに関連付けられたデータは、特定のストリームのIDを伴うデータである。特定のストリームのIDは、ストリームライト動作を要求するライトコマンド内に含まれる。
特定のストリームに関連付けられたデータがライトされた消去ブロックには、この特定のストリームに関連付けられていないデータはライトされない。つまり、コントローラ4は、異なるストリームに対応する異なるデータグループを、異なる消去ブロックにそれぞれライトする。
このストリームライト動作により、消去ブロック内の全データが、アンマップまたは上書きによって、一斉に無効化される可能性を高めることができる。なぜなら、同じライフタイムを有するデータは、ホスト2によって一斉に削除または更新される可能性が高いからである。
全データが無効化された消去ブロックに関しては、コピー(データ移動)無しで、その消去ブロックを消去することのみによってフリーブロックにすることができる。結果として、ストリームライト動作は、フリーブロックの個数を増やすためのガベージコレクション動作の頻度を抑えることができる。
ストリームのIDの発行に関するルール(ID発行ポリシー)の内容は、個々のアプリケーションに依存している場合がある。
例えば、同じストリームに関連付けるべきデータを決定するために、異なる種類のデータ(例えば、システムデータと、ユーザデータなど)を異なるストリームのIDに割り当てるというルールが用いられてもよい。
あるいは、ある種類のデータ(例えばシステムデータ)のライトには通常ライト要求を使用し、別の種類のデータ(例えばユーザデータ)のライトにはストリームライト要求を使用するというルールが用いられてもよい。
しかし、アプリケーションプログラムが決めたルールは必ずしも適切なルールであるとは限らず、不適当なルールが使用される場合もあり得る。
適切なルールとは、一斉に無効化することが可能なデータだけを同じストリームに割り当てることが可能なルールを意味する。
一方、不適当なルールとは、一斉に無効化することが可能なデータだけを同じストリームに割り当てることができないルールを意味する。
例えば、実際には異なるライフタイムを有する2種類のユーザデータを扱うアプリケーションプログラムに関しては、単にシステムデータとユーザデータとを異なるストリームのIDに割り当てるというルールは、不適当なルールであると云える。なぜなら、実際には異なるライフタイムを有する2種類のユーザデータが同じストリームに関連付けられてしまう可能性があるためである。
アプリケーションプログラムが決めたルールが適切なルールであったならば、ストリームライト動作によって同じ消去ブロックにライトされたデータが、一斉に無効化される確率は高くなる。この場合、ガベージコレクション無しで、つまり消去のみによってこの消去ブロックをフリーブロックにすることができる。
一方、アプリケーションプログラムが決めたルールが不適当なルールであったならば、上述したように、実際には異なるライフタイムを有するデータが同じストリームに割り当てられてしまう。この場合、同じ消去ブロックにライトされた全データは一斉に無効化されないので、一部の有効データがこの消去ブロックに残る可能性がある。結果として、この消去ブロックはガベージコレクションの対象となり得る。
したがって、もし不適当なルールによって、一斉に無効化されないデータが同じストリームに関連付けられたならば、ガベージコレクションを抑える効果が得られなくなる。
異なるストリームのデータを異なる消去ブロックに書き込むため、コントローラ4は、オープンされたストリームのID数分の消去ブロック(書き込み先消去ブロック)を確保しておく必要がある。
ID1とID2の2つのストリームが使用される場合を想定する。この場合、コントローラ4は、ID1とID2の2つのストリームに対応する2つの消去ブロックを確保しておく必要がある。コントローラ4は、ID1のストリームに関連付けられたデータを、ID1のストリーム用に割り当てられた消去ブロックにライトする。ID1のストリーム用に割り当てられた消去ブロックには、ID1のストリームに関連付けられていないデータはライトされない。また、コントローラ4は、ID2のストリームに関連付けられたデータを、ID2のストリーム用に割り当てられた消去ブロックにライトする。ID2のストリーム用に割り当てられた消去ブロックには、ID2のストリームに関連付けられていないデータはライトされない。
このように、使用されるストリーム毎に専用の消去ブロックが割り当てられる。
このため、もし実際には異なるライフタイムを有するデータが関連付けられたストリームが使用されると、ガベージコレクションを抑える効果が見込めないだけでなく、SSD3内のフリーエリアが圧迫されるため、ガベージコレクションの頻度が増加し、SSD3の性能や寿命の劣化を招く危険性がある。
そこで、本実施形態では、コントローラ4は、ストリームライト動作が有効に働いたか否かを表す情報(フィードバック情報)をホスト2に提供する機能を有している。
コントローラ4は、同じストリームに関連付けられたデータがライトされた消去ブロックがガベージコレクション動作の対象になった場合に、このストリームに関するストリームライト動作は有効でないと判定してもよい。
つまり、コントローラ4は、ホスト2からのストリームに関連付けられたデータがライトされ、且つこのストリームに関連付けられていないデータがライトされない消去ブロックが、NANDメモリ5のガベージコレクション動作に使用されたか否かを示す情報を、上述のフィードバック情報として、ホスト2に提供する。
フィードバック情報は、ガベージコレクション動作に使用された全ての消去ブロックを示す情報ではなく、ストリームライト動作のために割り当てられた消去ブロックがガベージコレクション動作に使用されたか否かに関する情報である。
フィードバック情報は、SSD3内の記憶領域に保存されても良い。この場合、コントローラ4は、ホスト2からのフィードバック情報のリード要求に応答して、フィードバック情報をホスト2に提供(転送)してもよい。
例えば、コントローラ4は、有効に働かなかったストリームのIDと有効に働いたストリームのIDの双方をフィードバック情報としてホスト2に提供してもよい。有効に働いたストリームのIDとは、その全てのデータが一斉に無効化された消去ブロックが割り当てられたストリームのIDを意味する。
あるいは、コントローラ4は、有効に働かなかったストリームのID(つまり、ガベージコレクション動作に使用された消去ブロックが割り当てられたストリームのID)だけを示す情報をフィードバック情報として、ホスト2に提供してもよい。これにより、フィードバック情報のデータ量を削減できるので、効率よくホスト2に有用な情報を通知することができる。
ホスト2は、特定のストリームに関連付けられたデータを同じ消去ブロックにライトすることを要求するライトコマンドをSSD3に送出する。このライトコマンドは、この特定のストリームのIDを含む。ホスト2がSSD3からフィードバック情報を受信した時、ホスト2は、この特定のストリームのIDを含むライトコマンドの送出を制御するためのポリシーを、フィードバック情報に基づいて自動的に調整する。例えば、フィードバック情報が、この特定のストリームのデータがライトされた消去ブロックがガベージコレクション動作に使用されたことを示すならば、ホスト2は、この特定のストリームのIDを含むライトコマンドの送出が抑制されるように、ライトコマンドの送出を制御するためのポリシーを調整する。
例えば、ホスト2は、有効に機能しなかったストリームのIDの発行を要求したアプリケーションプログラムを特定し、このアプリケーションプログラムによる以降のストリームライト動作の使用を禁止するというポリシー調整処理を実行しても良い。
この場合、ホスト2は、特定されたアプリケーションプログラムからの以降のストリームライト動作の要求を、通常ライト動作の要求に置き換える制御を行ってもよい。
あるいは、アプリケーションプログラムがストリームのIDの発行を要求するのでは無く、ホスト2のオペレーティングシステム41自体が、ルール(ポリシー)に基づいて、ストリームのIDを発行する処理を行っても良い。この場合、ホスト2のオペレーティングシステム41は、一定時間内に生成されるファイル個数が閾値(閾個数)以上である場合には、それらのファイルに関連付けられるデータのライトのために(同じIDの)ストリームライトを使用し、一定時間内に生成されるファイル個数が閾個数未満である場合には、それらのファイルに関連付けられるデータのライトのために通常ライトを使用する、というルール(ポリシー)を採用してもよい。このルールは、ファイルの生成や削除にも時間的な局所性があると考えられるため、一斉に生成されたファイル群はやはり一斉に削除される可能性も高い、という考え方に基づくものである。
SSD3からのフィードバック情報が、ストリームライト動作が有効に働いていないことを示す場合、ホスト2は、ストリームライト動作のためのライトコマンドの送出を許可するための条件をより厳しくする、つまり上述の閾値を上げる、というポリシー調整処理を実行しても良い。
次に、コントローラ4の構成について説明する。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14、SRAM15は、バス10を介して相互接続される。
ホストインタフェース11は、ホスト2からコマンド(ライトコマンド、リードコマンド、アンマップ(UNMAP)コマンド等)を受信する。ライトコマンドは、SSD3に対し、このライトコマンドによって指定されたデータ(論理ブロック)をライトするように要求する。ライトコマンドは、先頭の論理ブロックのLBAと、転送長(論理ブロックの数)とを含む。
ライトコマンドの種類には、ストリームライト動作を要求するライトコマンドと、通常ライト動作を要求するライトコマンドとがある。ストリームライト動作を要求するライトコマンドは、限定されないが、例えば、WRITE(32)コマンドであってもよい。
WRITE(32)コマンドは、ライトデータを指定するための上述のLBAおよび転送長に加え、ストリームのIDを含む。このストリームのIDは、WRITE(32)コマンド内のLBAおよび転送長によって指定されるデータが関連付けられているストリームを示す。つまり、SSD3は、WRITE(32)コマンド内のLBAおよび転送長によって指定されるデータを、WRITE(32)コマンド内のストリームのIDを伴うデータとして取り扱う。
通常ライト動作を要求するライトコマンドは、限定されないが、WRITE(32)コマンド以外の他のライトコマンド、例えば、WRITE(16)コマンド、WRITE(12)コマンド、等であってもよい。通常ライト動作を要求するライトコマンドは、どのストリームのIDも含まない。
アンマップコマンドは、SSD3に対し、アンマップ対象の論理ブロックアドレス範囲を通知するためのコマンドである。ATAやSATAにおいては、アンマップコマンドの代わりに、Trimコマンドが、アンマップ対象の論理ブロックアドレス範囲をSSD3に通知するためのコマンドとして使用される。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、SRAM15を制御するように構成されたプロセッサである。CPU12は、上述のFTLレイヤの処理に加え、ホスト2からのコマンドを処理するためのコマンド処理等を実行する。さらに、CPU12は、上述のフィードバック情報を収集し、このフィードバック情報をホスト2に提供するストリーム情報収集処理を実行する。
これらFTLレイヤ処理、コマンド処理、およびストリーム情報収集処理は、CPU12によって実行されるファームウェアによって制御されてもよい。このファームウェアは、CPU12を、ライト動作制御部21、ストリーム管理部22、アンマップ制御部23、ガベージコレクション制御部24、およびストリーム情報収集部25として機能させる。
ライト動作制御部21は、ホスト2からのライトコマンドに応答して、上述の通常ライト動作またはストリームライト動作を選択的に実行する。
いま、ホスト2からの要求によってID1のストリームとID2のストリームとがオープンされている場合を想定する。ストリームライト動作においては、ライト動作制御部21は、ID1を伴うデータ(ID1のストリームに関連付けられたデータ)を、ID1のストリーム用に割り当てられた消去ブロックにライトし、ID2を伴うデータ(ID2のストリームに関連付けられたデータ)を、ID2のストリーム用に割り当てられた別の消去ブロックにライトする。
通常ライト動作においては、ライト動作制御部21は、IDを伴わないデータを、どのストリーム用にも割り当てられてない消去ブロックにライトする。
ストリーム管理部22は、オープンされている幾つかのストリームのIDと、それらストリームのIDを伴うデータがライトされた幾つかの消去ブロックとの対応関係を示すストリーム管理情報を、DRAM6内のストリーム管理テーブル33に記録する。
アンマップ制御部23は、ホスト2によって指定されたアンマップ対象の論理ブロックアドレス範囲に対応するデータを無効化する。DRAM3に格納されているルックアップテーブル32は、LBA空間とNANDメモリ5上の物理記憶位置との対応関係を示すアドレスマッピング情報を格納する。このアドレスマッピング情報は、さらに、LBAそれぞれの有効/無効を示すフラグを含む。アンマップ制御部23は、ホスト2によって指定されたアンマップ対象の論理ブロックアドレス範囲に属する各LBAに対応するフラグを、無効を示す値にセットする。これにより、ホスト2によって指定されたアンマップ対象の論理ブロックアドレス範囲に対応するデータを無効化することができる。
ガベージコレクション制御部24は、NANDメモリ5のガベージコレクション動作を実行する。すなわち、ガベージコレクション制御部24は、NANDメモリ5内のフリーブロックの個数を増やすため、有効データと無効データの混在する複数の消去ブロックを使用して、有効データを1以上の特定の消去ブロックに集約する。ガベージコレクション動作は、NANDメモリ5のフリーブロックの個数が閾値以下に低下した時に実行される。ガベージコレクション動作は、フリーブロックの個数がある個数以上に増えるまで継続されてもよい。また、ガベージコレクション動作は、ホスト2によってガベージコレクション動作の実行が明示的に要求された時も実行されてもよい。
ストリーム情報収集部25は、ガベージコレクション動作に使用された消去ブロックに関する情報と、ストリーム管理テーブル33のストリーム情報とを使用して、ガベージコレクション動作に使用された消去ブロックが割り当てられたストリームのIDに関する情報を収集する。
ストリームライト動作によってデータがライトされた消去ブロックとは、あるIDのストリーム用に割り当てられた消去ブロックを意味する。より詳しくは、この消去ブロックは、あるストリームに関連付けられたデータがライトされ、且つこのストリームに関連付けられていないデータがライトされない消去ブロックである。
ストリーム情報収集部25は、収集された情報を、フィードバック情報34としてホスト2に提供する。この場合、ストリーム情報収集部25は、フィードバック情報34を所定の記憶領域、例えばDRAM6に格納してもよい。そして、ストリーム情報収集部25は、ホスト2からのフィードバック情報34のリード要求に応答して、フィードバック情報34をホスト2に提供(転送)してもよい。
NANDインタフェース13は、CPU12の制御の下、NANDメモリ5を制御するように構成されたNANDコントローラである。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。
DRAM6の記憶領域の一部は、ガベージコレクション(GC)動作中に移動されるデータを一時的に格納するためのGCバッファ31として利用されてもよい。また、DRAM6の記憶領域は、上述のルックアップテーブル32、ストリーム管理テーブル33、およびフィードバック情報の格納のために用いられてもよい。
SRAM15は、NANDメモリ5にライトすべきデータを一時的に格納するためのライトバッファ、およびNANDメモリ5からリードされたデータを一時的に格納するためのリードバッファ等として利用されてもよい。
次に、ホスト2の構成について説明する。
ホスト2は、様々なプログラムを実行する情報処理装置である。ホスト2のオペレーティングシステム(OS)41は、ファイルの生成、保存、更新、削除等を管理する。このOS41はストリームライト動作をサポートしている。OS41がアプリケーションプログラムAPL0またはAPL1からストリーム書き込み要求を受信した時、OS41は、ストリーム書き込み要求によって指定されるストリームのIDを含むWRITE(32)コマンドを生成する。そして、OS41は、WRITE(32)コマンドをSSD3に送出する。
ホスト2は、さらに、ストリームライト動作を管理するための機能モジュールとして、ストリーム管理部42およびポリシー調整部43を含む。
ストリーム管理部42は、ストリームライト動作を要求したアプリケーションプログラム(つまりストリーム書き込み要求を発行したアプリケーションプログラム)と、OS41からSSD3に発行されたストリームのIDとの対応関係を示すストリーム管理情報を生成する。
ポリシー調整部43は、特定のストリームに関連付けられたデータを同じ消去ブロックにライトすることを要求するライトコマンドの送出を制御するためのポリシーを、SSD3からのフィードバック情報34に基づいて、調整するための処理を実行する。例えば、ある特定のアプリケーションプログラムが発行するストリームのID用に割り当てられた消去ブロックがガベージコレクションに使用されたならば、ポリシー調整部43は、この特定のアプリケーションからの以降の、このIDを含むストリームライトの要求を、通常のライト動作の要求に置き換える処理を実行してもよい。あるいは、ポリシー調整部43は、この特定のアプリケーションから以降の全てのストリームライトの要求を、通常のライト動作の要求に置き換える処理を実行してもよい。これにより、有効に機能しないWRITE(32)コマンドがSSD3に送出されることを抑制することができる。
あるいは、例えば、OS41が「一定時間に生成される第1閾個数以上のファイル群に対応するデータのライトは全てストリームライト動作を使用する」というポリシーを現在採用している場合には、ストリーム管理部42は、現在採用されているポリシーのIDと、OS41からSSD3に発行されたストリームのIDとの対応関係を示すストリーム管理情報を生成してもよい。OS41が、SSD3からのフィードバック情報34に基づいてストリームライト動作が上手く機能していないと判断した場合、ポリシー調整部43は、採用すべきポリシーを、第1閾個数よりも大きい第2閾個数を有する別のポリシーに変更してもよい。
このように、本実施形態では、SSD3がフィードバック情報34をホスト2に提供することにより、効果の見込めないWRITE(32)コマンドの送出をホスト2に抑制させることができる。
ストリーム管理部42およびポリシー調整部43の機能はOS41内に組み込まれていても良い。
図2は、SSD3のガベージコレクション制御部24によって実行されるガベージコレクション動作を示す。
図2では、5つの消去ブロックがガベージコレクション動作の対象に選択された場合が例示されている。図1のガベージコレクション制御部24は、有効データ(つまり有効ページ)と無効データ(つまり無効ページ)が混在する消去ブロックからガベージコレクション動作の対象とすべき幾つかの消去ブロックを選択する。ガベージコレクション制御部24は、例えば、ルックアップテーブル32を参照することによって、消去ブロックの容量に対する有効データの量の割合が少ない消去ブロックを優先的にガベージコレクション動作の対象として選択してもよい。ガベージコレクション制御部24は、ガベージコレクション動作の対象である各消去ブロックから有効データのみをリードする。リードされたデータはGCバッファ31に一時格納されてもよい。
図2の例では、上述の5つの消去ブロックの他に2つのフリーブロックが存在する。ガベージコレクション制御部24は、5つの消去ブロック内の全ての有効データを、この2つのフリーブロックにコピーする。これにより、全ての有効データが2つのフリーブロックに集められる。これら2つのフリーブロックは有効データで満たされる。
この後、ガベージコレクション制御部24は、有効データが残っていない5つの消去ブロックを消去してこれら5つの消去ブロックをフリーブロックにする。
ガベージコレクションの実行後は、有効データで満たされた2つの消去ブロックと、5つのフリーブロックとが存在する。
図3は、SSD3において使用されるストリームのIDの個数と確保される消去ブロックの個数との関係を示す。
図3では、消去ブロックB0は、通常ライト動作のための現在の書き込み先ブロックである。消去ブロックB1は、ID1のストリームのために割り当てられている。消去ブロックB1は、ID1のストリームの書き込み先ブロックとして利用される。ID1を伴うデータは、消去ブロックB1にライトされる。消去ブロックB1がID1を伴うデータで満たされて消去ブロックB1に未使用のページが無くなると、ID1のストリームのためにさらに別の消去ブロックが割り当てられる。そして、ID1を伴う次のデータは、ID1ストリームのために新たに割り当てられた別の消去ブロックにライトされる。
消去ブロックB2は、ID2のストリームのために割り当てられている。消去ブロックB2は、ID2のストリームの書き込み先ブロックとして利用される。ID2を伴うデータは、消去ブロックB2にライトされる。消去ブロックB2がID2を伴うデータで満たされて消去ブロックB2に未使用のページが無くなると、ID2のストリームのためにさらに別の消去ブロックが割り当てられる。そして、ID2を伴う次のデータは、ID2のストリームのために新たに割り当てられた別の消去ブロックにライトされる。
このように、SSD3においては、特定のストリームに関連付けられたデータは、この特定のストリーム用に割り当てられた1以上の消去ブロックにライトされる。
図4は、ライト動作制御部21によって実行されるライト動作(通常ライト動作およびストリームライト動作)を示す。
どのストリームのIDにも関連付けられていないデータ(LBA11によって指定されるデータ、LBA12によって指定されるデータ)は、通常ライト動作のための現在の書き込み先ブロックである消去ブロックB0にライトされる。
ID1を伴うデータ(LBA1によって指定されるデータ、LBA2によって指定されるデータ、LBA3によって指定されるデータ、LBA4によって指定されるデータ、LBA5によって指定されるデータ)は、ID1のストリーム用に割り当てられた消去ブロックB1にライトされる。
ID2を伴うデータ(LBA102によって指定されるデータ、LBA103によって指定されるデータ、LBA200によって指定されるデータ、LBA104によって指定されるデータ、LBA201によって指定されるデータ)は、ID2のストリーム用に割り当てられた消去ブロックB2にライトされる。
図5は、特定のストリーム用に割り当てられた消去ブロック内の全データが無効化される過程を示す。
理想的には、特定のストリームに関連付けられた消去ブロック内の全データは、アンマップまたは上書きによって、一斉に無効化されることが期待される。例えば、ホスト2は、この消去ブロック内の全データに対応するLBA範囲を指定するアンマップコマンドをSSD3に送出する。これにより、この消去ブロック内の全データは、アンマップコマンドの処理によって一斉に無効化される。あるいは、ホスト2は、この消去ブロック内のLBA群と同じLBA群へのライト(上書き)を一斉に要求するかもしれない。この場合も、この消去ブロック内の全データは、一斉に無効化される。
しかし、上述したように、実際には、異なるライフタイムを有するデータが同じストリームに関連付けられてしまう可能性がある。この場合、消去ブロックにライトされた全データが一斉に無効化されることはなく、一部の有効データがこの消去ブロックに残る可能性がある。この消去ブロック内の有効データの量が低下すると、この消去ブロックはガベージコレクション動作の対象となる可能性がある。この場合、この消去ブロック内の有効データは異なるブロックに移動される可能性もある。
図6は、特定のストリーム用に割り当てられた消去ブロック内のデータの一部が無効化された状態を示す。
図6において、消去ブロックB1には、ストリームのID2を伴うデータ(LBA102によって指定されるデータ、LBA103によって指定されるデータ、LBA200によって指定されるデータ、LBA104によって指定されるデータ、LBA201によって指定されるデータ)が既にライトされている。
もし、LBA200〜201によって指定されるデータとLBA102〜104によって指定されるデータとが異なるライフタイムを有するならば、LBA102〜104のLBA範囲を指定するアンマップコマンドだけがホスト2によって発行され、LBA200〜201のLBA範囲を指定するアンマップコマンドがホスト2によって発行されない可能性がある。
この場合、消去ブロックB1は有効データと無効データが混在するブロックとなるので、消去ブロックB1はガベージコレクション動作に使用される可能性がある。
図7は、ホスト2のストリーム管理部42によって管理されるストリーム管理情報のデータ構造例を示す。
ストリーム管理テーブル44には、アプリケーションプログラム名(またはアプリケーションプログラムのID)と、発行されたストリームのIDとの対応関係を示すストリーム管理情報が格納される。
図7では、アプリケーションプログラムAPL0からの要求によってID1を含むWRITE(32)コマンドが発行され、またアプリケーションプログラムAPL1からの要求によってID2を含むWRITE(32)コマンドと、ID3を含むWRITE(32)コマンドと、ID4を含むWRITE(32)コマンドとが発行された場合が想定されている。
ホスト2が、ガベージコレクション動作に使用された消去ブロックそれぞれが割り当てられたストリームのIDのリストを含むフィードバック情報34をSSD3から受信した場合、ホスト2は、ストリーム管理テーブル44を参照することにより、有効に機能しなかったIDを発行したアプリケーションプログラムを特定する。
例えば、有効に機能しなかったID、つまりガベージコレクション動作に使用された消去ブロック群が割り当てられたストリームのIDが、ID2と、ID3であった場合には、ホスト2は、アプリケーションプログラムAPL1が使用した3つのIDの内の2つのIDが有効に機能しなかったと判定することができる。この場合、ホスト2は、アプリケーションプログラムAPL1が要求したストリームのIDの個数に対する有効に機能しなかったストリームのIDの個数の割合が低いので、以降、アプリケーションプログラムAPL1がストリームライト動作を使用することを禁止してもよい。あるいは、ホスト2は、APL1がID2のストリームライト動作とID3のストリームライト動作を使用することだけを禁止して、APL1がID4のストリームライト動作を使用することは禁止しなくても良い。
図8は、SSD3によって管理されるストリーム管理情報のデータ構造例を示す。
ストリーム管理テーブル33には、ストリームのIDと、ストリームのIDを伴うデータがライトされた消去ブロックとの対応関係を示すストリーム管理情報が格納される。
図8では、ID1のストリームに関連付けられたデータのライトのために消去ブロックB1、B3、B4が使用され、ID2のストリームに関連付けられたデータのライトのために消去ブロックB2が使用された場合が想定されている。
もし消去ブロックB2がガベージコレクション制御部24によるガベージコレクション動作に使用されたならば、ストリーム情報収集部25は、ストリーム管理テーブル33に基づいて、ガベージコレクション動作に使用された消去ブロックB2がID2のストリームのために割り当てられていることを認識することができる。
図9は、SSD3によって管理されるストリーム管理情報の別のデータ構造例を示す。
ストリーム管理テーブル33には、ストリームのIDと、このストリームのIDを発行したアプリケーションプログラムのIDと、このストリームのIDを伴うデータがライトされた消去ブロックとの対応関係を示すストリーム管理情報が格納される。ストリームのオープンに伴って、アプリケーションのIDは、ホスト2からSSD3に別途送られる。あるストリームのIDを発行したアプリケーションプログラムのIDは、ホスト2からの上述のWRITE(32)コマンドに含まれていても良い。
もし消去ブロックB2がガベージコレクション制御部24によるガベージコレクション動作に使用されたならば、ストリーム情報収集部25は、ストリーム管理テーブル33に基づいて、ガベージコレクション動作に使用された消去ブロックB2が割り当てられたストリームのIDがID2であること、さらに、このID2を発行したアプリケーションプログラムがAPL1であることを認識できる。ストリーム情報収集部25は、ガベージコレクション動作に使用された消去ブロックが割り当てられていたストリームのIDのリストと、これらストリームのIDに対応するアプリケーションプログラムのIDのリストとを含むフィードバック情報34をホスト2に提供しても良い。これにより、たとえホスト2が、あるアプリケーションによって過去に使用されたストリームのIDを別のアプリケーションプログラムが再利用することを許容するように設計されている場合であっても、ホスト2は、フィードバック情報34に基づき、有効に機能しなかったIDを発行したアプリケーションプログラムを正しく特定することができる。
なお、SSD3側でWRITE(32)コマンドの内容からハッシュ値を生成して、このハッシュ値をアプリケーションプログラムのIDの代わりに使用してもよい。この場合、ストリーム管理テーブル33には、ストリームのIDと、このストリームのIDのオープンを要求したWRITE(32)コマンドのハッシュ値と、このストリームのIDを伴うデータがライトされた消去ブロックとの対応関係を示すストリーム管理情報が格納される。ストリーム情報収集部25は、ガベージコレクション動作に使用された消去ブロックが割り当てられたストリームのIDのリストと、これらストリームのIDに対応するハッシュ値のリストとを含むフィードバック情報34をホスト2に提供しても良い。ホスト2も、オープンされたストリームのIDと、このストリームのIDのオープンを要求したWRITE(32)コマンドのハッシュ値との対応関係をホスト2側のストリーム管理テーブル44に記録しても良い。これにより、ホスト2は、有効に機能しなかったIDを発行したアプリケーションプログラムを特定することができる。
図10のフローチャートは、SSD3によって実行されるライトコマンド処理の手順を示す。
SSD3のコントローラ4は、ホスト2からライトコマンドを受信する(ステップS11)。コントローラ4は、この受信したライトコマンドが、ストリームのIDを含むライトコマンドであるか否か、つまりこの受信したライトコマンドによって指定されるデータがストリームのIDを伴うデータであるか否かを判定する(ステップS12)。
受信したライトコマンドが、ストリームのIDを含むライトコマンドであるならば(ステップS12のYES)、コントローラ4は、ストリームライト動作を実行する(ステップS13)。ステップS13では、コントローラ4は、受信したライトコマンド内のLBAおよび転送長によって指定されるデータをホスト2のデータアウトバッファから転送する。そして、コントローラ4は、このデータを、このストリーム用に割り当てられた消去ブロック内の次の利用可能ページにライトする。さらに、コントローラ4は、ルックアップテーブル32を更新して、ライトコマンドによって指定されるLBA範囲に対応するデータの物理記憶位置をルックアップテーブル32に記録する。
受信したライトコマンドが、どのストリームのIDも含まないライトコマンドであるならば(ステップS12のNO)、コントローラ4は、通常ライト動作を実行する(ステップS14)。ステップS14では、コントローラ4は、受信したライトコマンド内のLBAおよび転送長によって指定されるデータをホスト2のデータアウトバッファから転送する。そして、コントローラ4は、このデータを、通常ライト動作に現在使用されている消去ブロック内の次の利用可能ページにライトする。さらに、コントローラ4は、ルックアップテーブル32を更新して、ライトコマンドによって指定されるLBA範囲に対応するデータの物理記憶位置をルックアップテーブル32に記録する。
図11のフローチャートは、SSD3によって実行されるアンマップコマンド処理の手順を示す。
SSD3のコントローラ4は、ホスト2からアンマップコマンドを受信する(ステップS21)。コントローラ4は、この受信したアンマップコマンドによって指定されるアンマップ対象の1以上のLBAに対応するデータを無効化する(ステップS22)。ステップS22では、コントローラ4は、ルックアップテーブル32を更新して、ホスト2によって指定されたアンマップ対象の各LBAに対応するフラグを無効を示す値にセットする。
図12のフローチャートは、SSD3によって実行されるガベージコレクション動作の手順を示す。
SSD3のコントローラ4は、残りフリーブロックの個数が閾値以下に低下したことが判定された場合(ステップS31のYES)、あるいはホスト2からガベージコレクション要求(GC要求)が受信された場合(ステップS32のYES)、ガベージコレクション動作を開始する。
コントローラ4は、ガベージコレクションの対象とすべき消去ブロック群を選択し、これら消去ブロック群を使用して有効データを幾つかの消去ブロックに集約する(ステップS33)。そして、コントローラ4は、有効データが他の消去ブロックにコピーされることによって無効データのみで満たされた消去ブロックを消去する(ステップS34)。
図13のフローチャートは、SSD3とホスト2とによって実行されるストリームライト動作制御に関する一連の処理の手順を示す。
アプリケーションプログラムは、ストリーム書き込み要求、つまりストリームのIDを含むライト要求を、OS41に発行する(ステップS41)。OS41は、このライト要求によって指定されたストリームのIDを含むライトコマンド(WRITE(32)コマンド)をSSD3に発行(送出)する。ホスト2のストリーム管理部42は、このアプリケーションプログラムと、発行されストリームのIDとの対応関係を示すストリーム管理情報を、ホスト2のストリーム管理テーブル44に記録する(ステップS43)。
SSD3のコントローラ4は、ホスト2からライトコマンドを受信する(ステップS51)。コントローラ4は、受信されたライトコマンドがストリームのIDを含むライトコマンドであるか否かを判定する(ステップS52)。
受信されたライトコマンドがストリームのIDを含まないライトコマンドであるならば(ステップS52のNO)、コントローラ4は、通常ライト動作を実行する(ステップS53)。
一方、受信されたライトコマンドがストリームのIDを含むライトコマンドであるならば(ステップS52のYES)、コントローラ4は、ストリームライト動作を実行する(ステップS54)。さらに、コントローラ4は、ストリームのIDと、データがライトされた消去ブロックとの対応関係を示すストリーム管理情報を、SSD3のストリーム管理テーブル33に記録する(ステップS55)。
コントローラ4は、必要な時にガベージコレクション動作を実行する。ガベージコレクション動作が実行されたならば(ステップS56のYES)、コントローラ4は、SSD3のストリーム管理テーブル33を参照することによって、ガベージコレクション動作に使用された消去ブロックそれぞれが割り当てられているストリームのIDに関する情報を収集する(ステップS57)。コントローラ4は、収集された情報をフィードバック情報34としてホスト2に提供する(ステップS58)。フィードバック情報34は、上述したように、ガベージコレクション動作に使用された消去ブロックそれぞれが割り当てられているストリームのIDのリストから構成されていてもよい。
ステップS58では、コントローラ4はフィードバック情報34をホスト2にすぐに転送してもよいが、代わりに、フィードバック情報34をSSD3のDRAM6に格納し、ホスト2からのフィードバック情報34の要求が受信された時にフィードバック情報34をホスト2に転送してもよい。
ホスト2は、SSD3からフィードバック情報34を受信する(ステップS44)。ホスト2は、フィードバック情報34とホスト2のストリーム管理テーブル44とに基づいて、有効に機能しなかったストリームのIDとこのストリームのIDを発行したアプリケーションプログラムとを特定する(ステップS45)。そして、ホスト2は、この特定されたストリームのIDを含むWRITE(32)コマンドの送出を制御するためのポリシーを調整する(ステップS46)。
ステップS46では、ホスト2は、採用すべきポリシーを、全てのアプリケーションプログラムから要求を無条件に受け入れるという現在のポリシーから、特定されたアプリケーションプログラムによる以降のストリームライト動作の使用を禁止するというポリシーに変更しても良い。この場合、特定されたアプリケーションプログラムからの以降のストリームライト動作の要求は、通常ライト動作を要求するライトコマンドに変換される。
図14のフローチャートは、ホスト2のOS41によって実行されるライトコマンド変換処理の手順を示す。
OS41は、アプリケーションプログラムからストリーム書き込み要求、つまりストリームのIDを含むライト要求を、受信する(ステップS61)。OS41は、受信されたライト要求(ストリーム書き込み要求)が、上述の特定されたアプリケーションプログラムからのライト要求(ストリーム書き込み要求)であるか否かを判定する(ステップS62)。
受信されたライト要求(ストリーム書き込み要求)が、上述の特定されたアプリケーションプログラムからのライト要求(ストリーム書き込み要求)であるならば(ステップS62のYES)、OS41は、このライト要求(ストリーム書き込み要求)を、ストリームのIDを含まない通常のライトコマンドに変換する(ステップS63)。そして、OS41は、この通常ライトコマンドをSSD3に発行する(ステップS64)。
一方、受信されたライト要求(ストリーム書き込み要求)が、上述の特定されたアプリケーションプログラムからのライト要求(ストリーム書き込み要求)ではないならば(ステップS62のNO)、OS41は、受信されたライト要求(ストリーム書き込み要求)に含まれるストリームのIDを含むライトコマンド(WRITE(32)コマンド)をSSD3に発行(送出)する(ステップS65)。
図15のフローチャートは、SSD3とホスト2とによって実行されるストリームライト動作制御に関する別の一連の処理の別の手順を示す。
ここでは、OS41が、OS41自体が保持するポリシーを使用して、ストリームのIDを発行する処理を行っている場合を想定する。
OS41は、アプリケーションプログラムからファイル生成要求を受信する(ステップS71)。OS41は、一定時間内に生成されるファイルの個数が現在のポリシーによって指定される閾個数以上であるか否かを判定する(ステップS72)。
生成されるファイルのサイズが、一定時間内に生成されるファイルの個数が、現在のポリシーによって指定される閾個数以上でないならば(ステップS72のNO)、OS41は、ストリームのIDを含まないライトコマンドをSSD3に発行して、SSD3に通常ライト動作を要求する(ステップS73)。
一方、一定時間内に生成される生成されるファイルの個数が、現在のポリシーによって指定される閾個数以上であるならば(ステップS72のYES)、OS41は、ストリームのIDを含むライトコマンドをSSD3に発行して、SSD3にストリームライト動作を要求する(ステップS74)。ホスト2のストリーム管理部42は、現在のポリシーと、発行されストリームのIDとの対応関係を示すストリーム管理情報をホスト2のストリーム管理テーブル44に記録する(ステップS75)。例えば、現在のポリシーがポリシー#1で、且つこのポリシー#1の制御の下にID1とID2の2つのストリームのIDが発行されたならば、ストリーム管理テーブル44には、図16に示すようなストリーム管理情報が記録される。
SSD3のコントローラ4は、ホスト2からライトコマンドを受信する(ステップS81)。コントローラ4は、受信されたライトコマンドがストリームのIDを含むライトコマンドであるか否かを判定する(ステップS82)。
受信されたライトコマンドがストリームのIDを含まないライトコマンドであるならば(ステップS82のNO)、コントローラ4は、通常ライト動作を実行する(ステップS83)。
一方、受信されたライトコマンドがストリームのIDを含むライトコマンドであるならば(ステップS82のYES)、コントローラ4は、ストリームライト動作を実行する(ステップS84)。さらに、コントローラ4は、ストリームのIDと、データがライトされた消去ブロックとの対応関係を示すストリーム管理情報を、SSD3のストリーム管理テーブル33に記録する(ステップS85)。
コントローラ4は、必要な時にガベージコレクション動作を実行する。ガベージコレクション動作が実行されたならば(ステップS86のYES)、コントローラ4は、SSD3のストリーム管理テーブル33を参照することによって、ガベージコレクション動作に使用された消去ブロックそれぞれが割り当てられているストリームのIDに関する情報を収集する(ステップS87)。コントローラ4は、収集された情報をフィードバック情報34としてホスト2に提供する(ステップS88)。フィードバック情報34は、上述したように、ガベージコレクション動作に使用された消去ブロックそれぞれが割り当てられているストリームのIDのリストから構成されていてもよい。
ステップS88では、コントローラ4はフィードバック情報34をホスト2にすぐに転送してもよいが、代わりに、フィードバック情報34をSSD3のDRAM6に格納し、ホスト2からのフィードバック情報34の要求が受信された時にフィードバック情報34をホスト2に転送してもよい。
ホスト2は、SSD3からフィードバック情報34を受信する(ステップS76)。ホスト2は、フィードバック情報34とホスト2のストリーム管理テーブル44とに基づいて、有効に機能しなかったストリームのIDとこのストリームのIDの発行に使用されたポリシーとを特定する(ステップS77)。そして、ホスト2は、現在使用中のポリシーを、特定されたポリシー内に保持されている閾値よりも大きい閾値を含む別のポリシーに変更する(ステップS78)。
図17は、SSD3のハードウェア構成例を示す。
SSD3のコントローラ4は、メインバス51、メッセージ通信路52、ホストインタフェース53、暗号化/復号化部(Advanced Encryption Standard (AES))54、ハードウェアエンジン55および56、4つのCPU57、NANDコントローラ(NANDC)58、DRAMコントローラ(DRAMC)59、SRAMコントローラ(SRAMC)60、SRAM61、SRAMコントローラ(SRAMC)62、SRAM63等を含む。
メインバス51は図1のバス10に対応する。メッセージ通信路52は、4つのCPU57とNANDコントローラ(NANDC)58との間のメッセージ通信に使用される。ホストインタフェース53は、図1のホストインタフェース11に対応する。暗号化/復号化部(AES)54は、データライト動作において、ホストインタフェースコントローラ53からのライトデータ(平文)を暗号化する。暗号化/復号化部(AES)54は、データリード動作において、NANDメモリ5からリードされる暗号化されたデータを復号する。なお、この暗号化/復号化部54を介さずに、ライトデータ及びリードデータを転送することも必要に応じて可能である。
ハードウェアエンジン55、56は、高負荷の処理を実行するためのハードウェア回路である。
4つのCPU57は図1のCPU12の処理を並列実行する。各CPU57はDMAコントローラ(DMAC)57Aを備えている。NANDコントローラ(NANDC)58は、図1のNANDインタフェース13に対応する。NANDコントローラ(NANDC)58は、CPU57を介さないデータ転送を実現するためのハードウェア連携機能を有していても良い。
DRAMコントローラ(DRAMC)59は、図1のDRAMインタフェース14に対応する。SRAM61、62は、図1のSRAM15に対応する。SRAM61の記憶領域はライトバッファおよびリードバッファとして利用される。ライトバッファは、NANDメモリ5に適した所定のデータサイズのライトデータが蓄積されるまでライトデータを一時的に格納する。リードバッファは、NANDメモリ5からリードされたデータを一時的に格納する。SRAM62の記憶領域は、4つのCPU57間の通信等に使用される。
図18は、ホスト2として機能する情報処理装置100のハードウェア構成例を示す。
情報処理装置100は、デスクトップパーソナルコンピュータ、ノートブックパーソナルコンピュータ、またはサーバコンピュータとして実現される。情報処理装置100は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、グラフィクスプロセッシングユニット(GPU)104、ネットワークコントローラ105、周辺インタフェースコントローラ106、Serial Attached SCSI(SAS)コントローラ107、エンベデッドコントローラ(EC)108、入力デバイス109等を含む。
プロセッサ101は、情報処理装置100の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、メインメモリ113にロードされた様々なプログラムを実行する。メインメモリ113は、DRAMのような揮発性メモリから構成される。プロセッサ101によって実行されるプログラムは、上述のOS41および各種アプリケーションプログラムを含む。OS41は、図1で説明したストリーム管理部42およびポリシー調整部43の機能を実行する。
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
GPU104は、本情報処理装置100のディスプレイモニタとして使用されるディスプレイ200を制御するように構成された表示コントローラである。ディスプレイ200は、情報処理装置100の筐体に取り付けられた内部ディスプレイであってもよいし、情報処理装置100の筐体にケーブルを介して接続される外部ディスプレイであってもよい。GPU104は、メインメモリ102の一部の記憶領域または専用のメモリをビデオメモリとして使用し、このビデオメモリに格納された表示データからディスプレイ200に供給すべき表示信号を生成する。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
SASコントローラ107は、SASコネクタ107Aに接続されるデバイスとの通信を実行するように構成されている。本実施形態では、SSD3がSASコネクタ107Aに接続される。SSD3は、情報処理装置100のメインストレージとして機能する。
EC108は、情報処理装置100の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置100をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)13などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
この情報処理装置100においては、OS41の制御の下、プロセッサ101は、以下の処理を実行する。
プロセッサ101は、同じ予期されるライフタイムを有するデータを特定のストリームに割り当てる。そして、プロセッサ101は、特定のストリームに関連付けられたデータを同じ消去ブロックにライトすることを要求するライトコマンド(WRITE(32)コマンド)をSSD3に送出する。このWRITE(32)コマンドは、特定のストリームのIDを含む。このWRITE(32)コマンドは、SASコントローラ107を介してSSD3に送出される。SSD3は、このWRITE(32)コマンドを処理することによって、上述のストリームライト動作を実行する。
プロセッサ101は、SSD3から上述のフィードバック情報を受信する。フィードバック情報は、特定のストリームに関連付けられたデータがライトされた消去ブロックがガベージコレクションに使用されたか否かを示す情報を含む。プロセッサ101は、フィードバック情報から、上述の特定のストリームが有効に機能しているかどうかを確認することができる。特定のストリームに関連付けられたデータがライトされた消去ブロックがガベージコレクションに使用されたことは、特定のストリームが有効に機能していないことを意味する。
プロセッサ101は、SSD3からのフィードバック情報に基づき、特定のストリームのIDを含むライトコマンド(WRITE(32)コマンド)の送出を制御するためのポリシーを自動的に調整する。例えば、上述の特定のストリームが有効に機能していない場合には、プロセッサ101は、特定のストリームのIDを含むライトコマンド(WRITE(32)コマンド)の送出が抑制されるようにポリシーを調整する。
このように、この情報処理装置100によれば、ガベージコレクションの頻度を下げる効果の見込めないWRITE(32)コマンドの送出を抑制することによって、SSD3のフリースペースの無駄な消費を削減でき、SSD3の寿命を延ばすことができる。
図19は、SSD3を利用して構成されたストレージシステム300の構成例を示す。
ストレージシステム300は、多数のSSD3Bを備える。これらSSD3Bの各々は、上述のSSD3と同等の機能を有している。
ストレージシステム300はエンタープライズ用SSD(eSSD)であり、データセンター内のサーバコンピュータ2Bのストレージとして使用可能である。
各SSD3Bは比較的小型のモジュールとして実現されている。各SSD3Bの外形寸法の一例は、20mm×30mm程度である。サーバコンピュータ2Bの筐体は、複数のコネクタ(スロット)30を備える。各コネクタ30は、SAS(Serial Attached SCSI)コネクタであってもよい。このSASコネクタは、6GbpsのDual Portによって、コンピュータ2Bと各SSD3Bとの間の高速通信を可能にする。あるいは、各コネクタ30は、PCIe(PCI Express)又はNVMe(NVM Express)であってもよい。
多数のSSD3Bは、コンピュータ2Bのコネクタ30にそれぞれ装着され、略鉛直方向に起立した姿勢でコンピュータ2Bの筐体の一面上に配置される。このような構成によれば、多数のSSD3Bをコンパクトに纏めて実装可能であり、ストレージシステム300の小型化を図ることができる。
なお、個々のSSD3Bは、ポータブルコンピュータ、タブレットといった電子機器の半導体記憶媒体としても適用可能である。
次に、図1のストリーム情報収集部25の実装例について説明する。
本実施形態では、ストリーム情報収集部25は、ストリームライト動作によってデータがライトされた消去ブロックがガベージコレクションの対象になったか否かに関する情報を収集する。ストリームライト動作によってデータがライトされた消去ブロックがガベージコレクションの対象になったということは、この消去ブロックにライトされたデータの実際のライフタイム間にある一定以上の差があったことを意味する。したがって、ストリームライト動作によってデータがライトされた消去ブロックがガベージコレクションの対象になったか否かに関する情報は、ライトされたデータの実際のライフタイムのばらつきに関する情報であるといえる。
ストリームライト動作によってデータがライトされた消去ブロックがガベージコレクションの対象になったか否かに関する情報に加えて、あるいは、この情報の代わりに、ストリーム情報収集部25は、以下の情報を、収集してもよい。
ストリーム情報収集部25は、ストリームライト動作によってデータがライトされた消去ブロックの全データが、アンマップまたは上書きにより無効化されるまでの時間を測定し、この時間に関する情報を収集しても良い。例えば、ストリーム情報収集部25は、特定のストリームに関連付けられたデータ内の一部が最初に無効化された時点から、このデータ内の最後の部分が無効化される時点までの実時間を測定しても良い。この実時間は、ストリームに関連付けられたデータの実際のライフタイムのばらつきの程度を示す。ストリーム情報収集部25は、この実時間をホスト2に提供する。ホスト2は、この実時間に基づいて、ストリームに関連付けられたデータの実際のライフタイムのばらつきの程度を確認できるので、適切なポリシー調整を行うことができる。
ストリーム情報収集部25は、ストリームライト動作によってデータがライトされた消去ブロックの全データが無効化されるまでに発行された、当該ストリームに関するアンマップまたは上書きの回数を測定し、この回数に関する情報を収集しても良い。この回数も、ストリームに関連付けられたデータの実際のライフタイムのばらつきのを表す指標として利用できる。ストリーム情報収集部25は、この回数をホスト2に提供する。ホスト2は、この回数に基づいて、ストリームに関連付けられたデータの実際のライフタイムのばらつきの程度を確認できるので、適切なポリシー調整を行うことができる。
以上説明したように、本実施形態によれば、SSD3内のコントローラ4は、ストリームに関連付けられたデータがライトされ、このストリームに関連付けられていないデータがライトされない消去ブロックが、ガベージコレクション動作に使用されたか否かを示すフィードバック情報を、ホスト2に提供する。よって、有効に機能しないストリームライト要求の発行の抑制または削減のために有用な情報をホスト2に対して提供できる。この結果、ガベージコレクションの頻度を下げる効果の無いストリームライト動作に起因するSSD3の性能や寿命の劣化を抑制できる。
なお、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、消去単位にライトされたデータが一斉に無効化されたならばこの消去単位に対するガベージコレクションなしで容易にフリースペースを作り出すことが可能な物理構造を有する様々な不揮発性メモリに適用可能である。例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような不揮発性メモリが上述の物理構造を有する場合には、本実施形態の機能は、これら不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NANDメモリ、21…ライト動作制御部、22…ストリーム管理部、23…アンマップ制御部、24…ガベージコレクション制御部24、25…ストリーム情報収集部、43…ポリシー調整部。
Claims (10)
- 複数の消去ブロックを含む不揮発性メモリと、
第1ストリームに関連付けられたデータがライトされ前記第1ストリームに関連付けられていないデータがライトされない消去ブロックが、前記不揮発性メモリのガベージコレクション動作に使用されたか否かを示す第1情報を、ホストに提供するように構成されたコントローラとを具備するメモリシステム。 - 前記コントローラは、
前記第1ストリームのIDを伴うデータを、前記第1ストリーム用に割り当てられた消去ブロックにライトし、第2ストリームのIDを伴うデータを、前記第2ストリーム用に割り当てられた別の消去ブロックにライトし、
前記ガベージコレクション動作に使用された消去ブロックが割り当てられたストリームのIDを示す情報を、前記第1情報として前記ホストに提供するように構成されている請求項1記載のメモリシステム。 - 前記コントローラは、前記ホストからの前記第1情報のリード要求に応答して、前記第1情報を前記ホストに提供するように構成されている請求項1記載のメモリシステム。
- 前記コントローラは、
前記第1ストリームのIDと前記第1ストリームに関連付けられたデータがライトされた1以上の消去ブロックとの対応関係を示すストリーム情報を記録し、
前記ガベージコレクション動作に使用された消去ブロックに関する情報と前記ストリーム情報とを使用して、前記ガベージコレクション動作に使用された消去ブロックが割り当てられたストリームのIDに関する情報を収集するように構成されている請求項1記載のメモリシステム。 - 複数の消去ブロックを含む不揮発性メモリと、
前記不揮発性メモリのガベージコレクション動作を実行するガベージコレクション制御部と、
第1ストリームのIDを伴うデータを、前記第1ストリーム用に割り当てられた消去ブロックにライトし、第2ストリームのIDを伴うデータを、前記第2ストリーム用に割り当てられた別の消去ブロックにライトするライト制御部と、
前記ガベージコレクション動作に使用された消去ブロックが割り当てられたストリームのIDを示す第1情報を、ホストに提供する情報提供部とを具備するメモリシステム。 - 前記ホストによって指定されたアンマップ対象の論理ブロックアドレス範囲に対応するデータを無効化する無効化処理部をさらに具備する請求項5記載のメモリシステム。
- 前記情報提供部は、前記ホストからの前記第1情報のリード要求に応答して、前記第1情報を前記ホストに提供する請求項5記載のメモリシステム。
- 前記第1ストリームのIDと前記第1ストリームのIDを伴うデータがライトされた1以上の消去ブロックとの対応関係と、前記第2ストリームのIDと前記第2ストリームのID伴うデータがライトされた1以上の消去ブロックとの対応関係とを示すストリーム情報を記録するストリーム情報管理部をさらに具備し、
前記情報提供部は、前記ガベージコレクション動作に使用された消去ブロックに関する情報と前記ストリーム情報とを使用して、前記ガベージコレクション動作に使用された消去ブロックが割り当てられたストリームのIDに関する情報を収集する請求項5記載のメモリシステム。 - メモリシステムとホストとを含む情報処理システムであって、
前記メモリシステムは、
複数の消去ブロックを含む不揮発性メモリと、
第1ストリームに関連付けられたデータがライトされ前記第1ストリームに関連付けられていないデータがライトされない消去ブロックが、前記不揮発性メモリのガベージコレクション動作に使用されたか否かを示す第1情報を、ホストに提供するように構成されたコントローラとを具備し、
前記ホストは、
前記第1ストリームに関連付けられたデータを同じ消去ブロックにライトすることを要求するライトコマンドであって、前記第1ストリームのIDを含むライトコマンドを、前記メモリシステムに送出し、前記ライトコマンドの送出を制御するためのポリシーを、前記メモリシステムからの前記第1情報に基づいて調整するように構成されたプロセッサを具備する、情報処理システム。 - 前記プロセッサは、前記第1情報が、前記第1ストリームに関連付けられたデータがライトされた前記消去ブロックが前記ガベージコレクション動作に使用されたことを示す場合、前記ライトコマンドの送出が抑制されるように前記ポリシーを調整するように構成されている請求項9記載の情報処理システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015049330A JP2016170583A (ja) | 2015-03-12 | 2015-03-12 | メモリシステムおよび情報処理システム |
US14/793,365 US10191688B2 (en) | 2015-03-12 | 2015-07-07 | Memory system and information processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015049330A JP2016170583A (ja) | 2015-03-12 | 2015-03-12 | メモリシステムおよび情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016170583A true JP2016170583A (ja) | 2016-09-23 |
Family
ID=56886611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015049330A Pending JP2016170583A (ja) | 2015-03-12 | 2015-03-12 | メモリシステムおよび情報処理システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10191688B2 (ja) |
JP (1) | JP2016170583A (ja) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018073412A (ja) * | 2016-10-26 | 2018-05-10 | 三星電子株式会社Samsung Electronics Co.,Ltd. | マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法 |
JP2018142238A (ja) * | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP2018185815A (ja) * | 2017-04-25 | 2018-11-22 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ソリッドステートドライブ(ssd)、そのガーベッジコレクションに係る方法、及びその具現に係る物品 |
JP2018190425A (ja) * | 2017-05-03 | 2018-11-29 | 三星電子株式会社Samsung Electronics Co.,Ltd. | マルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法 |
WO2019038859A1 (ja) * | 2017-08-23 | 2019-02-28 | 株式会社日立製作所 | 不揮発メモリデバイスを有するストレージシステム |
US10235284B2 (en) | 2017-03-23 | 2019-03-19 | Toshiba Memory Corporation | Memory system |
JP2019053727A (ja) * | 2017-09-15 | 2019-04-04 | 三星電子株式会社Samsung Electronics Co.,Ltd. | メモリ装置、及びそれを含むメモリシステム |
JP2019057151A (ja) * | 2017-09-21 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
CN110688324A (zh) * | 2018-07-06 | 2020-01-14 | 三星电子株式会社 | 固态驱动器及其存储器分配方法 |
US10715499B2 (en) | 2017-12-27 | 2020-07-14 | Toshiba Memory Corporation | System and method for accessing and managing key-value data over networks |
US11048624B2 (en) | 2017-04-25 | 2021-06-29 | Samsung Electronics Co., Ltd. | Methods for multi-stream garbage collection |
US11853202B2 (en) | 2020-11-02 | 2023-12-26 | SK Hynix Inc. | Memory system performing garbage collection operation by exchanging information related to garbage collection with host and method of operating the memory system |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9996302B2 (en) * | 2015-04-03 | 2018-06-12 | Toshiba Memory Corporation | Storage device writing data on the basis of stream |
US10656838B2 (en) * | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
US11461010B2 (en) * | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
US10282324B2 (en) | 2015-07-13 | 2019-05-07 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes |
US10509770B2 (en) | 2015-07-13 | 2019-12-17 | Samsung Electronics Co., Ltd. | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device |
US10324832B2 (en) | 2016-05-25 | 2019-06-18 | Samsung Electronics Co., Ltd. | Address based multi-stream storage device access |
CN105278876B (zh) * | 2015-09-23 | 2018-12-14 | 华为技术有限公司 | 一种固态硬盘的数据擦除方法及装置 |
US9886208B2 (en) * | 2015-09-25 | 2018-02-06 | International Business Machines Corporation | Adaptive assignment of open logical erase blocks to data streams |
US9804787B2 (en) * | 2015-11-03 | 2017-10-31 | Samsung Electronics Co., Ltd. | Mitigating GC effect in a raid configuration |
US9880780B2 (en) * | 2015-11-30 | 2018-01-30 | Samsung Electronics Co., Ltd. | Enhanced multi-stream operations |
US9898202B2 (en) | 2015-11-30 | 2018-02-20 | Samsung Electronics Co., Ltd. | Enhanced multi-streaming though statistical analysis |
US9959046B2 (en) | 2015-12-30 | 2018-05-01 | Samsung Electronics Co., Ltd. | Multi-streaming mechanism to optimize journal based data storage systems on SSD |
US10133493B2 (en) * | 2016-03-01 | 2018-11-20 | Marvell World Trade Ltd. | DRAM controller with adaptive precharge policy |
US10592171B2 (en) | 2016-03-16 | 2020-03-17 | Samsung Electronics Co., Ltd. | Multi-stream SSD QoS management |
US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
US10198215B2 (en) * | 2016-06-22 | 2019-02-05 | Ngd Systems, Inc. | System and method for multi-stream data write |
KR102229013B1 (ko) * | 2016-09-02 | 2021-03-17 | 삼성전자주식회사 | 자동 스트림 검출 및 할당 알고리즘 |
JP2018073040A (ja) * | 2016-10-27 | 2018-05-10 | 東芝メモリ株式会社 | メモリシステム |
US10108345B2 (en) | 2016-11-02 | 2018-10-23 | Samsung Electronics Co., Ltd. | Victim stream selection algorithms in the multi-stream scheme |
US20180150257A1 (en) * | 2016-11-30 | 2018-05-31 | Microsoft Technology Licensing, Llc | File System Streams Support And Usage |
US10768829B2 (en) * | 2017-02-15 | 2020-09-08 | Microsoft Technology Licensing, Llc | Opportunistic use of streams for storing data on a solid state device |
US10140040B1 (en) | 2017-05-25 | 2018-11-27 | Micron Technology, Inc. | Memory device with dynamic program-verify voltage calibration |
US11126546B2 (en) | 2017-10-09 | 2021-09-21 | Huawei Technologies Co., Ltd. | Garbage data scrubbing method, and device |
KR20190044968A (ko) * | 2017-10-23 | 2019-05-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US10754549B2 (en) * | 2018-02-15 | 2020-08-25 | Microsoft Technology Licensing, Llc | Append only streams for storing data on a solid state device |
JP6968016B2 (ja) * | 2018-03-22 | 2021-11-17 | キオクシア株式会社 | ストレージデバイスおよびコンピュータシステム |
US10664194B2 (en) | 2018-05-16 | 2020-05-26 | Micron Technology, Inc. | Memory system with dynamic calibration using a variable adjustment mechanism |
KR102620255B1 (ko) * | 2018-05-18 | 2024-01-04 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US10990466B2 (en) | 2018-06-20 | 2021-04-27 | Micron Technology, Inc. | Memory sub-system with dynamic calibration using component-based function(s) |
US11188416B2 (en) | 2018-07-12 | 2021-11-30 | Micron Technology, Inc. | Enhanced block management for a memory sub-system |
US11113129B2 (en) | 2018-07-13 | 2021-09-07 | Micron Technology, Inc. | Real time block failure analysis for a memory sub-system |
US10936246B2 (en) * | 2018-10-10 | 2021-03-02 | Micron Technology, Inc. | Dynamic background scan optimization in a memory sub-system |
US11138104B2 (en) * | 2019-02-07 | 2021-10-05 | Intel Corporation | Selection of mass storage device streams for garbage collection based on logical saturation |
US11507402B2 (en) | 2019-04-15 | 2022-11-22 | Microsoft Technology Licensing, Llc | Virtualized append-only storage device |
JP2021033945A (ja) | 2019-08-29 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20210094915A (ko) | 2020-01-22 | 2021-07-30 | 삼성전자주식회사 | 스토리지 컨트롤러, 이를 포함하는 스토리지 장치 및 스토리지 컨트롤러의동작 방법 |
US11379359B2 (en) * | 2020-02-11 | 2022-07-05 | Micron Technology, Inc. | Selecting data transfer units associated with a data stream for garbage collection |
JP2022112286A (ja) * | 2021-01-21 | 2022-08-02 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11789653B2 (en) * | 2021-08-20 | 2023-10-17 | Micron Technology, Inc. | Memory access control using a resident control circuitry in a memory device |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799191B2 (en) * | 2000-05-16 | 2004-09-28 | Sun Microsystems, Inc. | Object sampling technique for runtime observations of representative instances thereof |
US7984084B2 (en) * | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
US20090265403A1 (en) * | 2006-08-31 | 2009-10-22 | Keiji Fukumoto | File system |
US20080294813A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
US8516203B2 (en) | 2008-08-13 | 2013-08-20 | Sandisk Technologies Inc. | Methods and apparatus for passing information to a host system to suggest logical locations to allocate to a file |
US9110839B2 (en) | 2010-08-31 | 2015-08-18 | Nec Corporation | Storage system for storing target data and address data |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10073626B2 (en) * | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
-
2015
- 2015-03-12 JP JP2015049330A patent/JP2016170583A/ja active Pending
- 2015-07-07 US US14/793,365 patent/US10191688B2/en active Active
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11048411B2 (en) | 2016-10-26 | 2021-06-29 | Samsung Electronics Co., Ltd. | Method of consolidating data streams for multi-stream enabled SSDs |
JP2018073412A (ja) * | 2016-10-26 | 2018-05-10 | 三星電子株式会社Samsung Electronics Co.,Ltd. | マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法 |
JP2018142238A (ja) * | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10235284B2 (en) | 2017-03-23 | 2019-03-19 | Toshiba Memory Corporation | Memory system |
JP2018185815A (ja) * | 2017-04-25 | 2018-11-22 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ソリッドステートドライブ(ssd)、そのガーベッジコレクションに係る方法、及びその具現に係る物品 |
US11630767B2 (en) | 2017-04-25 | 2023-04-18 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement |
US11194710B2 (en) | 2017-04-25 | 2021-12-07 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement |
US11048624B2 (en) | 2017-04-25 | 2021-06-29 | Samsung Electronics Co., Ltd. | Methods for multi-stream garbage collection |
US11507326B2 (en) | 2017-05-03 | 2022-11-22 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments |
JP6993929B2 (ja) | 2017-05-03 | 2022-01-14 | 三星電子株式会社 | マルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法 |
JP2018190425A (ja) * | 2017-05-03 | 2018-11-29 | 三星電子株式会社Samsung Electronics Co.,Ltd. | マルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法 |
US11847355B2 (en) | 2017-05-03 | 2023-12-19 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments |
US10915441B2 (en) | 2017-08-23 | 2021-02-09 | Hitachi, Ltd. | Storage system having non-volatile memory device |
WO2019038859A1 (ja) * | 2017-08-23 | 2019-02-28 | 株式会社日立製作所 | 不揮発メモリデバイスを有するストレージシステム |
JP2019053727A (ja) * | 2017-09-15 | 2019-04-04 | 三星電子株式会社Samsung Electronics Co.,Ltd. | メモリ装置、及びそれを含むメモリシステム |
JP7316031B2 (ja) | 2017-09-15 | 2023-07-27 | 三星電子株式会社 | メモリ装置、及びそれを含むメモリシステム |
JP2019057151A (ja) * | 2017-09-21 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10715499B2 (en) | 2017-12-27 | 2020-07-14 | Toshiba Memory Corporation | System and method for accessing and managing key-value data over networks |
CN110688324A (zh) * | 2018-07-06 | 2020-01-14 | 三星电子株式会社 | 固态驱动器及其存储器分配方法 |
US11853202B2 (en) | 2020-11-02 | 2023-12-26 | SK Hynix Inc. | Memory system performing garbage collection operation by exchanging information related to garbage collection with host and method of operating the memory system |
Also Published As
Publication number | Publication date |
---|---|
US20160266792A1 (en) | 2016-09-15 |
US10191688B2 (en) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016170583A (ja) | メモリシステムおよび情報処理システム | |
JP6414853B2 (ja) | メモリシステムおよび制御方法 | |
US10592117B2 (en) | Memory system and method for controlling nonvolatile memory | |
JP6414852B2 (ja) | メモリシステムおよび制御方法 | |
TWI805323B (zh) | 儲存裝置 | |
JP6517685B2 (ja) | メモリシステムおよび制御方法 | |
US9996473B2 (en) | Selective underlying exposure storage mapping | |
US9990304B2 (en) | Multimode storage management system | |
JP2019169101A (ja) | 電子機器、コンピュータシステム、および制御方法 | |
JP2018160189A (ja) | メモリシステム | |
JP2015053075A (ja) | メモリシステム、情報処理装置および記憶装置 | |
JP2020123039A (ja) | メモリシステムおよび制御方法 | |
JP2016126737A (ja) | キャッシュメモリ装置及びプログラム | |
TW201624491A (zh) | 資訊處理裝置及非暫態電腦可讀取記錄媒體 | |
JP6552701B2 (ja) | メモリシステムおよび制御方法 | |
JP6721765B2 (ja) | メモリシステムおよび制御方法 | |
JP6666405B2 (ja) | メモリシステムおよび制御方法 | |
JP2016177822A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170531 |