JP2017102908A - ソリッドステートドライブ及びその動作方法 - Google Patents

ソリッドステートドライブ及びその動作方法 Download PDF

Info

Publication number
JP2017102908A
JP2017102908A JP2016206191A JP2016206191A JP2017102908A JP 2017102908 A JP2017102908 A JP 2017102908A JP 2016206191 A JP2016206191 A JP 2016206191A JP 2016206191 A JP2016206191 A JP 2016206191A JP 2017102908 A JP2017102908 A JP 2017102908A
Authority
JP
Japan
Prior art keywords
stream
block
lifetime
solid state
state drive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016206191A
Other languages
English (en)
Other versions
JP6713906B2 (ja
JP2017102908A5 (ja
Inventor
ジェイソン マーティノー,
Martineau Jason
ジェイソン マーティノー,
昌 皓 崔
Changho Choi
昌 皓 崔
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017102908A publication Critical patent/JP2017102908A/ja
Publication of JP2017102908A5 publication Critical patent/JP2017102908A5/ja
Application granted granted Critical
Publication of JP6713906B2 publication Critical patent/JP6713906B2/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/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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0611Improving I/O performance in relation to response time
    • 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
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0643Management of files
    • 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
    • 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/0688Non-volatile semiconductor memory arrays

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】向上された性能を有するソリッドステートドライブ及びそれの動作方法を提供する。【解決手段】本発明のソリッドステートドライブは、第1生存時間を含む第1ストリームのデータを受信し、第2生存時間を含む第2ストリームのデータを受信する受信回路、第1生存時間及び第2生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択する選択ロジック、及び第1ストリームのデータ及び第2ストリームのデータをソリッドステートドライブのブロックに書き込む書込みロジックを含み、第2生存時間は第1生存時間と異なる。【選択図】図5

Description

本発明は、ソリッドステートドライブ及びその動作方法に関し、より詳しくは、向上したマルチストリームオペレーションを有するソリッドステートドライブ及びその動作方法並びにソリッドステートドライブに対するロジックに関する。
今日、ストレージ装置には多くの技術が統合されている。重要な技術の中の1つはNANDフラッシュメモリである。ソリッドステートドライブ(SSD)のようなストレージ装置に使用されるフラッシュメモリは多様な設計考慮事項を含む。重要な考慮事項は、ストレージ容量を効率的に利用するための戦略を含む。
前に格納されたデータ値がフラッシュメモリにアップデートされる場合、データ値を格納する既存ページは内部的に無効(invalid)にフラッグ(flag)され、アップデートされたデータ値は新しいページに格納される。データが削除される場合、データを格納するページは同じく無効にフラッグされる。無効ページ(invalid pages)は、ガーベッジコレクション(garbage collection)と称される工程を通じて復旧される。ガーベッジコレクションは、複数のページを含むブロックレベル(block level)で動作する。仮に1つのブロックが完全に空きになる時まで(即ち、ブロック内のすべてのページが無効にフラッグされる時まで)ガーベッジコレクションが待機する場合、ソリッドステートドライブは、データを書き込むことができるフリーページ(free pages)を有しない。したがって、ガーベッジコレクションの実行は、削除対象ブロックから有効ページ(valid pages)を他のブロックに移動させることを要求する。
ソリッドステートドライブは、データが到達した順序で到達したデータをページに書き込む。これは、全く関係ないファイルからのデータ(ソリッドステートドライブがマルチクライアントシステムとして使用される場合、全く無関係なクライアントによって使用されるデータ)が、ソリッドステートドライブ上で隣接し得ることを意味する。ソリッドステートドライブは、(従来のハード・ディスク・ドライブとは対照的に)周囲に読出しヘッドを移動させることに関連する待機時間(latency)を要求しないので、ソリッドステートドライブの読出し及び書込みアクセス時間はデータ書込み戦略によって影響を受けない。
ソリッドステートドライブの他の動作に対するガーベッジコレクション動作の影響を最小化するための方法の必要性は相変わらず残っている。
米国特許第6138221号明細書 米国特許第7254668号明細書 米国特許第7590664号明細書 米国特許第7852854号明細書 米国特許第8122220号明細書 米国特許第8144515号明細書 米国特許第8738882号明細書
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、向上した性能を有するソリッドステートドライブ及びその動作方法並びにソリッドステートドライブに対するロジックを提供することにある。
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブは、受信回路、選択ロジック、及び書込みロジックを備える。受信回路は、第1生存時間を含む第1ストリームのデータを受信し、第1生存時間と異なる第2生存時間を含む第2ストリームのデータを受信する。選択ロジックは、第1生存時間及び第2生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択する。書込みロジックは、第1ストリームのデータ及び第2ストリームのデータをソリッドステートドライブのブロックに書き込むことを特徴とする。。
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブに対するロジックは、ストレージ及び選択ロジックを備える。ストレージは、ソリッドステートドライブのブロックに対するブロックの生存時間のためのものである。選択ロジックは、ブロックの生存時間、第1生存時間、及び第2生存時間に基づいて、第1生存時間を有する第1ストリーム及び第2生存時間を有する第2ストリームの中からブロックに書き込むストリームを選択することを特徴とする。
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブの動作方法は、ソリッドステートドライブのブロックを識別するステップと、第1生存時間を含む第1ストリームを受信するステップと、第1生存時間と異なる第2生存時間を含む第2ストリームを受信するステップと、第1生存時間及び第2生存時間に基づいてブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップと、第1ストリーム及び第2ストリームの両方のデータをブロックに書き込むステップと、を有することを特徴とする。
本発明によれば、向上した性能を有するソリッドステートドライブ及びその動作方法が提供される。
一般的なシステムで生存時間に連関するストリームのデータを受信するブロックを示す。 異なる生存時間を有する複数のストリームに連関するデータを受信する図1のブロックの一例を示す。 異なる生存時間を有する複数のストリームに連関するデータを受信する図1のブロックの一例を示す。 異なる生存時間を有する複数のストリームに連関するデータを受信する図1のブロックの一例を示す。 異なる生存時間を有する複数のストリームに連関するデータを受信する図1のブロックの一例を示す。 図1のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。 図1のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。 図1のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。 図1のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。 第2次ストリームの一実施形態を示す図である。 本発明の一実施形態による異なるストリームのデータを図1のブロックに書き込むソリッドステートドライブを示す構成図である。 図11の選択ロジックの詳細を示す構成図である。 図12の平均書込みサイズ演算器の詳細を示す図である。 図12の平均書込み到達比率演算器の詳細を示す図である。 図12のストリーム選択ロジックの詳細を示す図である。 図11の生存時間演算器の詳細を示す図である。 図11のソリッドステートドライブを含むマシン(machine)の詳細を示す構成図である。 本発明の一実施形態による異なるストリームのデータを図1のブロックに書き込む図11のソリッドステートドライブの動作を示すフローチャートである。 本発明の一実施形態による第2次ストリームを利用して異なるストリームのデータを図1のブロックに書き込む図11のソリッドステートドライブの動作を示すフローチャートである。
上述した特性及び以下の詳細な説明は、全て本発明の説明及び理解を助けるための例示的な事項である。即ち、本発明は、これらの実施形態に限定されず、他の実施形態で具体化され得る。以下の実施形態は、単に本発明を完全に開示するための例であり、本発明が属する技術分野の通常の知識を有する者に本発明を伝達するためのものである。したがって、本発明の構成要素を具現するための方法が多数ある場合には、これらの方法の中で特定なもの又はこれと同一性があるものの中のいずれも本発明の具現が可能である。
本明細書で第1、第2などの用語は多様な構成要素を説明するために利用されるが、これらの構成要素はこのような用語によって制限されない。これらの用語は単に他の構成要素から1つの構成要素を区別するために利用される。例えば、本発明の技術範囲で第1モジュールは第2モジュールと称され、これと同様に第2モジュールは第1モジュールと称される。
本明細書で所定の構成が特定要素を含むと記載された場合、又は所定の工程が特定段階を含むと記載された場合は、その外の他の要素又は他の段階がさらに含まれることを意味する。即ち、本明細書で使用される用語は特定の実施形態を説明するためのものであり、本発明の概念を限定するものではない。さらに、発明の理解を助けるために説明した例はそれに対する相補的な実施形態も含む。
上述したように、ソリッドステートドライブ(solid state drive、SSD)は、データをページに書き込む。ページは、順次的にブロックを構成する。データがアップデートされる時、既存データを格納するページは、ランダムアクセスメモリ(random access memory、RAM)にコピーされ、修正された後に、ソリッドステートドライブのフリーページに書き込まれる。続いて、元のページは無効(invalid)にマーク(mark)され、新しいページは有効(valid)にマークされる。
時間が経過するとともに、無効ページの数は増加する。結局、無効ページがガーベッジコレクションの実行を通じて復旧されなければ、ソリッドステートドライブはそれ以上のフリーページを有しないことになる。ガーベッジコレクションは、対象ブロックを識別するステップ、対象ブロック内のすべての有効ページを新しいブロックにコピーするステップ、及び元の対象ブロックを消去するステップを含む。このような有効データ(valid−data)のコピーには、時間とエネルギーとを要する。その上、フラッシュメモリは制限された回数の書込みのみを支援するので、ガーベッジコレクションはソリッドステートドライブの寿命に負の影響を及ぼす。
フラッシュメモリのガーベッジコレクションは、ストレージ装置の性能(performance)、応答性(responsiveness)、及び寿命(lifespan)に相当な影響を及ぼすので、ガーベッジコレクションの効率を最適化するのに役立つ多様な方法が存在する。これらの方法の中の1つは、マルチストリーム(Multi−stream)と称されるものであって、これはコンピューティングシステムがデータ書込み活動(data write activity)を分類することを許容する方式である。
マルチストリーミング(Multi−streaming)は、データ書込みオペレーション(data write operations)をストリーム(streams)に結合するためのソリッドステートドライブの動作方法を提供する。データ書込みオペレーションは、予測(expectation)に基づく複数のストリームの中のいずれか1つのストリームに連関する。予測は、ストリームに連関するすべてのデータが同様の生存時間(TTL:Time−To−Live)を有する。これは、ストレージ装置が、狭く(narrow)予測可能な(predictable)タイムフレーム内で集中的にデータが無効になることを期待して、フラッシュ媒体(Flash media)内にデータを共に配置することを可能にする。ガーベッジコレクションされたブロックのいずれの有効データも他のブロックに保存される必要がないので、この配置戦略(placement strategy)は、ガーベッジコレクションの動作集中度(operational intensiveness)を減少させる。
図1は、一般的なシステムで生存時間に連関するストリームのデータを受信するブロックを示す。図1を参照すると、ストレージ装置は、1つの特定のストリームに対する複数の書込み要請を実行する。一実施形態として、ストレージ装置は、先ず利用可能な未使用ブロックをストリームに割当(assigning)した後、専用(dedicating)させることによって、ストリーム要請(stream requests)を実行する。その後、ストレージ装置は、提示データ値(presented data values)をブロック内の第1利用可能領域(即ち、ページ)に書き込み、最下位の位置アドレスから始めて上位の位置アドレスに進行させながら、ストリーム要請を実行する。ブロックがいっぱいになった場合、その他のブロックがストリームに割当られ、専用される。その後、ブロックがガーベッジコレクションによって完全にリクレイム(reclaimed)されると、同じストリーム又は他のストリームに対する後続割当(subsequent assignment)のためにブロックは利用可能ブロックプール(Available−Block pool)に返還される。
図1を参照すると、最も早く書き込まれたデータ値(earliest−written data values)のストレージ位置(storage locations)が無効である場合、最も早く書き込まれたデータ値の中の一部は、削除されるか又はアップデートされる。例えば、ブロック103は、ストリームに専用されている。ストリーム書込み(106、109、112)は、ページ(115、118、121)に書き込まれている。結局、ページ(115、118、121)は全て無効になる。一方、最も最近のストリーム書込み(124、127)はページ(130、133)に書き込まれ、他のページ(136、139、142、145)はフリー状態で残される。ページ(115、118、121)からのデータ値がアップデートされた場合、新規にアップデートされた値は、ブロック内のさらに上位アドレス、例えば、ページ(148、151、130、133)に置かれる。また、新規値(new value)は、ストリームに割当られ、その後、後続の他の専用ブロックに置かれる。
図1を参照すると、有効ページ(148、151、130、133)が、残余の生存時間値(remaining TTL values)とともに示されている。これらの値は、ソリッドステートドライブに実際に格納されないが、ページ内のデータが満了することが予測される時までの時間を示す。これらの値は、ストリーム内のデータの生存時間(TTL)及び当該データがソリッドステートドライブにどのくらい長く維持されるかに基づいて演算される。例えば、生存時間値154は、ページ148内のデータが1分で満了すると予測されることを示し、生存時間値157は、ページ151内データが2分で満了すると予測されることを示し、生存時間値160は、ページ130内のデータが59分で満了すると予測されることを示し、生存時間値163は、ページ133内のデータが60分で満了すると予測されることを示す。例えば、ストリームが、60分の生存時間を有する場合に、このような状況が発生する。そして、ブロック103の1つのページを占めるデータは、毎分ごとにストリームに到達する。
ブロック103がページ133で終了する場合、生存時間値163を有するページ133は、満了するデータを有する最後のページであり、満了に60分を要する。したがって、ソリッドステートドライブがブロック103にガーベッジコレクションの実行を準備する時、ソリッドステートドライブはページ133内のデータが満了する時(ページが書き込まれた後60分)まで待機する。又はソリッドステートドライブは、ブロック103から有効データをその他のブロックにコピー(copy)してブロック103を消去する。
図1に示すように、従来(traditional)のマルチストリーミングストレージにおいて、単一ブロック(single block)は、単一ストリーム(single stream)に連関する。ブロック103に書き込まれるデータは、予測可能な生存時間を有する。しかし、ブロックを満たすために要求される時間によって、ブロック103のページは「ウェーブ(wave)」で無効になる。即ち、ブロック103内のページは、時間経過とともに順次に満了する。これは、ソリッドステートドライブを「難しい(difficult)」位置(position)に置く。ソリッドステートドライブは、「自由空間(freeable space)」の活用が不可能なタイムペナルティー(time penalty)を経ながら、すべてのデータが満了する時まで待機しなければならない。あるいは、ソリッドステートドライブは、公知のガーベッジコレクションペナルティー(garbage collection penalty)を経ながら、ブロック103にガーベッジコレクションを実行するために、一部の有効ページを他のブロックにコピーしなければならない。
図1は、また、マルチストリーミングストレージ(multi−streaming storage)無しでソリッドステートドライブがブロックを満たす方式を示す。ソリッドステートドライブがマルチストリーミングストレージ無しで動作する場合、各ページは本質的にランダムな生存時間を有する。そして、ブロック103の任意データが満了する時期を予測することは不可能である。ランダムな値を有するシーケンシャルな生存時間値(154、157、160、163)を交換(exchanging)すること、及びブロック103内で有効ページと無効ページとを混合することによって、図1は、従来の非マルチストリーミングストレージ(non−multi−streaming storage)を反映する。
しかし、従来のマルチストリーミングシステムは、特定のストリームをストレージブロック(storage blocks)に割当する反面、ストレージブロックは特定のストリームに割当されることを必要としない。代わりに、全体的な寿命(overall lifetime)がブロックに割当される。そして、様々な生存時間のストリームのデータが、目的(aim)を有してブロックに書き込まれる。その目的とは、ブロック内のデータが、単一(single)で、定義された時間に満了することを意味する。ストレージ装置の知能(storage device intelligence)及び過去のデータ(historical data)を利用して、ソリッドステートドライブは、現在のストリーム(current stream)のデータをブロックに書き込むことを続けるか、又は他のストリーム(different stream)のデータをブロックの残余ページ(remaining pages)に書き込むかの中で、いずれがより効率的であるかを判断する。もちろん、同じロジックが、ブロックの後続に割当てられるストリーム(later−assigned stream)にも適用される。特に、ストレージ装置は、その後、第3ストリームのデータをブロックに書き込むことが第2ストリームのデータをブロックに書き込むことより効率的であるか否かを判断する。もちろん、ブロックから切り離された(switched away)ストリームのデータは、他のブロックに書き込まれるデータを含む。
他の解決策は、「第2次ストリーム(second−order streams)」を利用することである。先に記載されたストリームは、第1次ストリーム(first−order streams)として考えられる。即ち、各ストリームは同様の生存時間(TTL)特性を有するデータを保有する。但し、第1次ストリームのデータをブロックに書き込む代わりに、第1次ストリームのデータは第2次ストリームに書き込まれる。第2次ストリームは、それ自身の生存時間を有する。そして、第2次ストリームに伝達されたデータは、ブロックに書き込まれる。他の第1次ストリームは、第2次ストリームの寿命がどのくらい残っているかによって、データを第2次ストリームに提供する。本実施形態において、ブロック内でデータのより一貫した満了(consistent expiration)を達成しながら、第2次ストリームとソリッドステートドライブのブロックとの間の連関性(association)は維持される。
図2〜図5は、異なる生存時間を有する複数のストリームに連関するデータを受信する図1のブロックの一例を示す。図2〜図5は、複数のストリーム(multiple streams)のデータを単一ブロック(single block)に書き込むことの利点を示す。図2〜図5で、ソリッドステートドライブに対するブロック103が1MBの大きさであると仮定する。そして、ソリッドステートドライブは、2つのストリームを受信していると仮定する。ストリーム205は、60分の予測生存時間(expected TTL)を有し、1度に平均24KBのデータを書き込み、平均で1分毎に1ファイルを書き込む。ストリーム210は、45分の予測生存時間を有し、1度に平均256KBのデータを書き込み、平均で5分毎に1ファイルを書き込む。
図2は、ブロック103に書き込まれたすべてのデータが単一ストリームに連関する状況を示す。ストリーム205に対するデータの平均的なファイルサイズは24KBであり、1分毎に1つのファイルの平均書込み到着率(average write arrivial rate)が与えられる場合、ブロック103の1MB容量を満たすのに大略45分掛かる。したがって、ブロック103が満たされた後、ブロック103に書き込まれた最初のデータは、15分の残余の生存時間値215を有する。これと異なり、ブロック103に書き込まれた最後のデータは、60分の残余の生存時間値220を有する。そして、ブロック103は、合計で1時間45分間の有効データを有する(最後のデータが書き込まれるまでの45分に加え、当該データの生存時間として1時間所要)。
仮に、ブロックに最後のデータが追加された後、1時間より前の任意の時点に対象ブロックがガーベッジコレクションを実行するように命令されると、ガーベッジコレクションの間に他のブロックに移動(transfer)を要請するブロック内の有効データが依然として存在する。さらに、ソリッドステートドライブがブロックにガーベッジコレクションをより早く実行するほど、ソリッドステートドライブの他のブロックに再配置(relocated)させる必要があるより多くの有効データが残るようになる。
一方、図3を参照すると、ストリーム205は、22分間だけブロック103にデータを書き込む(その時点でブロック103は半分が満たされる)。0:22(0時22分、以下同様に記載)時点で、書き込まれた最初のデータは、38分の残余の生存時間値215を有する。そして、書き込まれた最後のデータは60分の残余の生存時間値225を有する。
図4に示すように、0:22時点の後、ブロック103はストリーム210に連結する。0:27時点で、ストリーム210は、45分の生存時間値230を有するデータを追加しながら、データをブロック103に書き込む。生存時間値(215、225)は、ストリーム210がその最初のデータを書き込むために待機する5分が減少する。
最後に、0:32時点で、ストリーム210は、第2ファイルをブロック103に書き込む。与えられたストリーム210に対する平均書込みサイズ(average write size)と書込み到達比率(write arrival rate)にしたがって、第2ファイルはブロック103に全部書き込まれる。この時点で、ストリーム205から書き込まれたデータは、残余の生存時間を有する。残余の生存時間は、生存時間値215が28分、生存時間値225が50分に変化する。そして、ストリーム210から書き込まれたデータは、生存時間値230及び生存時間値235が各々40分及び45分を有する。0:32時点で、ブロック103は完全に満たされるので、最も長い残余の生存時間225を有するデータは、50分後に満了すると予測される。ブロック103は、図2で発生した時点より23分早い1:22時点で、ガーベッジコレクションを実行する可能性が高い。その上、より多くのデータが同時に満了する可能性が存在するので、すべてのデータが満了する前にブロック103はガーベッジコレクションのための望ましくない候補になる。
より多くのストリーム、フィルレート(fill rate)のための多数のオプション、生存時間、データサイズ、そして一度にすべての「無効化」ページが向上されるようにブロックを満たすストリームを切り替える能力は重要である。各々の生存時間、平均書込みサイズ、及び平均書込み到達比率を有する複数のストリームが存在し得る。
図6〜図9は、図1のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。図6〜図9において、ストリームの間の主要な差異点(primary difference)は生存時間であるので、同一のデータフィルレート(data fill rate)及び同一の平均書込みサイズ(average write size)を有する4つのストリームがあると仮定する。図6〜図9に示す4つのストリームは、各々60分、45分、30分、及び15分の生存時間値を有する。
図6で、ストリーム305は、60分の生存時間240を有するブロック103に書き込む。ストリーム305は、60分の生存時間310を有する。そして、15分の時間内に、60分の最も長い残余の生存時間315を有するデータで、ブロック103の1/4を満たすように充分なデータが書き込まれる。この時点で、図7に示すように、ソリッドステートドライブは、ストリーム305をストリーム320に切り替える。ストリーム320は、45分の生存時間を有する。再び、15分の時間内に、ブロック103の他の1/4を満たすようにストリーム320から充分なデータが書き込まれる。この時点で、ブロック103は、45分で満了することが予測されるデータ(315、330)で半分が満たされる。
図8に示すように、ソリッドステートドライブは、ストリーム335に切り替える。ストリーム335は、30分の生存時間を有する。再び15分の時間内に、ストリーム335は、ブロック103のその他の1/4を満たすために充分なデータを書き込む。この場合、ブロック103は、残余の生存時間(315、330、345)が30分であるデータで3/4が満たされる。この時点で、図9に示すようにソリッドステートドライブは、ストリーム350に切り替える。ストリーム350は、15分の生存時間を有する。その後の15分で、ストリーム350は、ブロック103を完全に満たすのに充分なデータを書き込む。そして、ブロック103のデータ(315、330、345、360)は15分で満了すると予測される。したがって、図6のストリーム305から最初のデータがブロック103に書き込まれた後に1:15時点で、ブロック103のすべてのデータは満了すると予測される。そして、全体ブロックはガーベッジコレクションされる。
従来のシステムに比べて、図3〜図9の例は、向上したガーベッジコレクション性能を提供する。マルチストリーミングストレージを利用することによって、ブロックは減少する生存時間値を有するデータで順次的に満たされる。ブロックのデータは全体的により速やかに満了する。そして、より多くのデータが同時に満了する傾向を有する。その結果、ガーベッジコレクションが実行される場合、ブロックに対してガーベッジコレクションを実行する前にすべての有効データを他のブロックにコピーする必要が無いので、ブロックは全部満了データを有するようになる。その上、より多くのデータが同時に満了する傾向を有するので、ブロックは、ブロックのすべてのデータが満了する前にガーベッジコレクションが選択されにくくなる。
図3〜図9を比較すると、選択するためのストリームがさらに多くある場合、ブロックのすべてのデータが満了する時までの時間が短く所要される。例えば、図3〜図5で、ブロックのすべてのデータは1:32時点で満了すると予測される。図6〜図9で、ブロックのすべてのデータは、1:15時点で満了すると予測される。ブロックがガーベッジコレクションのために選択されにくくなるので、ブロックが依然有効データを有する間にブロックのすべてのデータは大略同様の時点で満了する傾向を有する。
図2〜図5で、2つのストリームがブロック103にデータを書き込むために利用される。図6〜図9で、4つのストリームがブロック103にデータを書き込むために利用される。しかし、これらの例は、ブロック103にデータを書き込むために利用されるすべてのストリームを示すが、本発明の他の実施形態は単に利用可能なストリームのサブセットのみを利用する。例えば、図2〜図9で、ソリッドステートドライブに書き込まれる20のストリームがあり、これらの中で、いずれかのストリームのみがブロック103に書き込まれる。そして、多様なストリームは、制限無しに、異なる生存時間、書込みサイズ、及び書込み到達比率を含む。
ブロックがどのくらい早く最適なガーベッジコレクションの準備ができるかということについては下限(lower limit)が存在する。ブロック103に書き込まれた各ページは、それぞれが開始された(originated)ストリームに応じて各々の生存時間(TTL)を有する。最悪の場合、ブロックは、当該ブロックを満たす時間に、ブロックに書き込まれたデータの中で最大の生存時間を併せた時間の間、有効データを有する。さらに正確には、ブロック103は一部有効データを下記数式1に示す時間まで保有する。
Figure 2017102908
早く書き込まれたページが長い生存時間を有し、遅く書き込まれたページが短い生存時間を有する場合、早く書き込まれたページに対する満了時間(expiration time)は遅く書き込まれたページに対する満了時間よりも遅くなる。しかし、しばしば、ブロック内のすべてのデータに対する満了時間は、ブロックに書き込まれた最後のデータに対する満了時間になる。したがって、1つのブロックを完全に満たすのに1時間が掛かり、最後に書き込まれたデータが15分の生存時間を有する場合、ブロック内のすべてのデータは、大略1時間15分で満了すると予測される。
本発明の他の実施形態において、すべての第1次ストリーム(first−order streams)は先に示したように分析される。しかし、ブロックに直接書き込む代わりに、第1次ストリームは、第2次ストリーム(second−order streams)の残余時間に基づいて、時間制約を受ける第2次ストリーム(time−limited second−order streams)に書き込むようになる。
図10は、第2次ストリームの一実施形態を示す図である。簡単な場合として、図6〜図9に示したのと同一の第1次ストリームを仮定する。
ストリーム305は、60分の生存時間を有する。
ストリーム320は、45分の生存時間を有する。
ストリーム335は、30分の生存時間を有する。
ストリーム350は、15分の生存時間を有する。
また、60分の生存時間を有する単一の第2次ストリーム405を仮定する。
第2次ストリーム405が生成される時、ストリーム305からデータが初めに割当される。第2次ストリームの寿命(lifespan)が45分に到達すると、第2次ストリーム405はストリーム305からデータを受信することを中止し、ストリーム320からデータを受信することを開始する。同様に、第2次ストリーム405の寿命が30分に到達すると、ストリーム335からデータを受信する。そして、寿命が15分に到達すると、ストリーム350からデータを受信する。
このアプローチでは、第2次ストリーム405に割当されたブロック103は、すべてのデータが15分以内に無効化されるようにする。全体ブロックの最大寿命は大略1:15になる。このような動作は、先に示した図6〜図9の実施形態と同様である。データフィルレートが、データの寿命又はブロックの残余サイズ(remaining size)に比べて高い事例において、第2次ストリームは多くの柔軟性を提供する。仮に1つのブロックが満了する前に第2次ストリームがそのブロックを満たせば、第2次ストリームは新しいブロックに移動することができる。一方、既存ブロック(old block)は、大略同一の時期に満了するデータを有するようになる。即ち、第2次ストリームのメカニズムを有し、低寿命(low−lifespan)又は寿命の終わりに隣接するブロックを満たす速いフィルレート(fast−fill rate)のストリームを探すためのシステムの歪曲(strain)は存在しない。満了する第2次ストリームによって満たされない任意のブロックは既にブロックに格納されたデータの残余の生存時間と同様の寿命を有する新しいストリームによって満たされる。
より多くの第1次ストリームを有するほど、より小さい時間単位を得ることができる(これは、ページが他のページのさらに安全な時間内に無効化される傾向を有することを意味する)。
先に示した第1の実施形態のように、多くの第2次ストリームは同時に動作することができる。第1次ストリームの属性にしたがって、他の二次ストリームは異なる寿命を有するように生成される。
ソリッドステートドライブが他のストリームに切り替える時、ソリッドステートドライブは、新しいストリームを選択するために任意の望ましいアルゴリズムを利用する。新しい第1次ストリームを選択するためのアルゴリズムは、ブロックに対する残余の生存時間よりも大きく、同時に最も小さい生存時間を有するストリームを選択する。第1次ストリームを選択するためのアルゴリズムは、第2次ストリームに対する残余の生存時間よりも大きく、且つ最も小さい生存時間を有するストリームを選択する(仮にブロック又は第2次ストリームに対する残余の生存時間よりも大きい生存時間を有するストリームが存在しなければ、最も大きい生存時間を選択する)。したがって、図6に戻れば、ブロック103は、60分の生存時間240を有するので、ストリーム305が60分の生存時間240を有するようにすることが最高の選択である。図7で、生存時間240が45分に低下する時、本アルゴリズムを利用してストリーム320が45分の生存時間325を有するようにすることが最高の選択になる。図8で、生存時間240が30分に低下する時、アルゴリズムを利用してストリーム335が30分の生存時間340を有するようにすることが最高の選択になる。図10の第2次ストリーム405に連関する第1次ストリームを選択する時、同じ戦略が適用される。
他の実施形態として、ソリッドステートドライブは、ブロックに対する残余の生存時間に最も近い生存時間を有する第1次ストリームを選択する。したがって、図6に戻れば、60分の生存時間310を有するストリーム305は、60分のブロックの生存時間240に最も近い。そして、ストリーム305は0:07.5時点まで維持される。その時間の後に、45分の生存時間を有するストリーム325は残りの52.5分のブロックの生存時間240に最も近い。そして、ストリーム320は0:22.5時点まで維持される。0:22.5時点で、30分の生存時間を有するストリーム335は残りの37.5分のブロックの生存時間240に最も近い。
図11は、本発明の一実施形態による異なるストリームのデータを図1のブロックに書き込むソリッドステートドライブを示す構成図である。図11には、ソリッドステートドライブ505が示される。ソリッドステートドライブ505は、回路510を含む。回路510は、情報を送信及び受信するために利用される。例えば、情報はオペレーション(operations)又はデータである。ソリッドステートドライブ505は、ソリッドステートドライブコントローラ515(以下、SSDコントローラ)とフラッシュメモリ520とを含む。SSDコントローラ515は、ソリッドステートドライブの動作を制御する。フラッシュメモリ520はデータを格納する(即ち、フラッシュメモリ520はブロックの中で図1のブロック103を格納する)。
SSDコントローラ515は、他の構成要素として、選択ロジック525、書込みロジック530、及び生存時間演算器(TTL演算器)535を含む。選択ロジック525は、図1のブロック103に書き込むために利用されるストリームを選択する。また、選択ロジック525は、図10の第2次ストリーム405を割当するために利用されるストリームを選択する。書込みロジック530は、データをフラッシュメモリ520に書き込む。より具体的に、書込みロジック530は、データをフラッシュメモリ520のページ、例えば、図1のブロック103のページに書き込む。生存時間演算器535は、ストリーム又はブロックに対する生存時間(TTL)を計算する。この場合のストリームの生存時間は、図2〜図5の生存時間(245、250)、そして図6〜図9の生存時間(310、325、340、355)である。この場合のブロックは、図2〜図9のブロックの生存時間240である。
第2次ストリームを利用する本発明の一実施形態において、SSDコントローラ515は、第2次ストリーム生成器540を含む。第2次ストリーム生成器540は、図10のブロック103に連関する図10の第2次ストリーム405を生成する。
図12は、図11の選択ロジックの詳細を示す構成図である。図12で、選択ロジック525は、比較器605、平均書込みサイズ演算器610、平均書込み到達比率演算器615、ストリーム選択ロジック620、及びストレージ625を含む。ストレージ625は、ブロックの生存時間(TTL)240及び/又は第2次ストリームの生存時間(TTL)410を格納する(但し、ブロックの生存時間240及び第2次ストリームの生存時間410は、選択ロジック525の外部に格納される)。本実施形態による比較器605は、ブロックの生存時間240又は第2次ストリームの生存時間410を利用して図2〜図5の生存時間(245、250)及び図6〜図9の生存時間(310、325、340、355)のそれぞれのストリームを比較する。比較に基づいて、本実施形態によるストリーム選択ロジック620は、どのストリームが図1のブロック103に書き込むか又はどのストリームが図10の第2次ストリーム405に割当られるかを選択する。
選択ロジック525は、任意の所望の時間に動作する。例えば、選択ロジック525は、定期的に(例えば、5分毎に)利用される。又は、新しい書込みオペレーションが図11のソリッドステートドライブに伝達される時毎に、選択ロジック525が利用される。或いは、ブロック生存時間240又は第2次ストリーム生存時間410が図2〜図5の生存時間(245、250)又は図6〜図9の生存時間(310、325、340、355)より短くなる時毎に、選択ロジック525が利用される。この場合、図2〜図5の生存時間(245、250)又は図6〜図9の生存時間(310、325、340、355)は、図1のブロック103又は図10の第2次ストリームに現在書込み中であるストリームを意味する。選択ロジック525は、他の情報を反映する。他の情報は、1つのストリームを選択する時の平均書込みサイズ又は各ストリームの平均書込み到達比率である。例えば、図2〜図9に示した60分の生存時間を有するブロック103を考慮する。そして、図2〜図9のブロック103が60ページを含むと仮定する。60分の生存時間を有し、分毎に1ページを書き込むストリームは、ブロック103が120分間有効データを保有することを意味する(最後のページが書き込まれる時まで60分、そしてページが満了する時までの60分)。しかし、利用可能である他のストリームが15分の生存時間を有するページを5分毎に書き込み、選択ロジック525が0:45時点に他のストリームに切り替える場合、ブロック103を満たすのに120分の時間が所要される。さらに、ブロック103の最後のデータが満了する前に15分が加わる。したがって、平均書込みサイズ及び平均書込み到達比率はストリームを変化させる最適の時間に影響を及ぼす。また、選択ロジック525を利用するための他のスケジュールが制限無しで利用される。
図13は、図12の平均書込みサイズ演算器の詳細を示す図である。図13で、平均書込みサイズ演算器610は、与えられたストリームの書込みオペレーション(106、109、112、124、127)に対する情報を受信する。そして、平均書込みサイズ演算器610は、それらの書込みに対する平均書込みサイズ705を演算する(即ち、実行された書込みオペレーションの回数によって分割された書き込みデータ量の合計を意味する)。先に説明したように、、平均書込みサイズ演算器610は、ストリームに対するすべての利用可能な情報、ストリームに対する最も最近のn個の書込みオペレーション、ストリームに対する最後のn個の書込みオペレーションの中で最も早いk個若しくは最後のt分間に発生したストリームに対する書込みオペレーション、又はストリームに対する書込みオペレーションを選択するために任意の望ましいアプローチを利用する。
図14は、図12の平均書込み到達比率演算器の詳細を示す図である。図14において、平均書込み到達比率演算器615は、与えられたストリームの書込みオペレーション(106、109、112、124、127)に対する情報を受信する。そして、平均書込み到達比率演算器615は、それらの書き込みに対する平均書込み到達比率805を演算する(即ち、その間隔(interval)で実行された書込みオペレーションの回数によって分割された最初と最後の書込みオペレーションとの間の時間量を意味する)。先に説明したように、、平均書込み到達比率演算器615は、ストリームに対するすべての利用可能な情報、ストリームに対する最も最近のn個の書込みオペレーション、ストリームに対する最後のn個の書込みオペレーションの中で最も早いk個若しくは最後のt分内に発生したストリームに対する書込みオペレーション、又はストリームに対する書込みペレーションを選択するために任意の他の望ましいアプローチを利用する。
図15は、図12のストリーム選択ロジックの詳細を示す図である。図15で、ストリーム選択ロジック620は、多様な情報を受信する。多様な情報は、例えば、図2〜図9のブロックの生存時間240、図2〜図5のストリーム(205、210)の生存時間(245、250)、図6〜図9のストリーム(305、320、335、350)の生存時間(310、325、340、355)、各ストリームに対する平均書込みサイズ705、及び各ストリームに対する平均書込み到達比率805である。ストリーム選択ロジック620は、図3〜図9のブロック103に書き込むストリーム905を選択するためにこのような情報を利用する。ストリーム選択ロジック620は、図3〜図9のブロック103、又は図10の第2次ストリーム405に書き込むストリーム905を選択するための任意の望ましい戦略を利用する。例えば、ストリーム選択ロジック620は、図2〜図9のブロック103に対する残余の生存時間よりも短く、且つその中で最も高い生存時間を有するストリームを選択する。また、ストリーム選択ロジック620は、例示的に先の図2〜図5を参照して、データ満了を最適化するためにストリームを切り替える時点を演算する。また、ストリーム選択ロジック620は、他の選択戦略を利用する。先に説明したように、ストリーム選択ロジック620は、ストリームを選択するために提供されたすべての情報又は情報の中の一部を利用する。本実施形態によれば、ストリーム選択ロジック620が図15に示したすべての情報を利用しない場合、ストリーム選択ロジック620は図15に示したすべての情報が提供される必要は無い。
図16は、図11の生存時間演算器の詳細を示す図である。図16で、生存時間演算器535は、与えられたストリームの書込みオペレーション(106、109、112、124、127)に対する情報を受信する。そして、生存時間演算器535は、これらのストリームに対する生存時間(310、325、340、355)を演算する(即ち、データが書き込まれた時期とデータが変更されるか又は削除された時期との間の持続時間を測定し、その後、これらの持続時間を加算し,影響を受けたページの個数で分割する)。先に説明したように、生存時間演算器535は、ストリームに対するすべての利用可能な情報、ストリームに対する最も最近のn個の書込みオペレーション、ストリームに対する最後のn個の書込みオペレーションの中で最も先のk個若しくは最後のt分間に発生したストリームに対する書込みオペレーション、又はストリームに対する書込みオペレーションを選択するための任意の他の望ましいアプローチを利用する。
図17は、図11のソリッドステートドライブを含むマシン(machine)の詳細を示す構成図である。図17を参照すると、マシン(又は複数のマシン)1105は、少なくとも1つのプロセッサ1110を含む。少なくとも1つのプロセッサ1110は、メモリコントローラ1115及びクロック1120を含む。クロック1120は、マシン1105の構成要素のオペレーションを調整(coordinate)するために利用される。例えば、プロセッサ1110は、メモリ1125としてランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、又は他の状態保存媒体(other state preserving media)を含む。プロセッサ1110は、ストレージ装置505及びネットワークコネクター1130に連結される。例えば、ネットワークコネクター1130は、イーサーネット(登録商標)コネクターである。プロセッサ1110は、バス1135に連結される。バス1135は、他の構成要素との間でユーザーインターフェイス1140及び入出力エンジン1145を利用して管理される入出力インターフェイスポートに連結される。
図18は、本発明の一実施形態による異なるストリームのデータを図1のブロックに書き込む図11のソリッドステートドライブの動作を示すフローチャートである。図18を参照すると、ステップS1205で、図11のソリッドステートドライブ505は、図1のブロック103を識別する。ステップS1210で、図11のソリッドステートドライブ505は、図2〜図9の生存時間240を図1のブロック103に連関させる。ステップS1215で、図11のソリッドステートドライブ505は、図2〜図5のストリーム(205、210)と図6〜図9のストリーム(305、320、335、350)とを受信する。ステップS1220で、図11のソリッドステートドライブ505は、図1のブロック103に書き込むストリーム905を選択する。ステップS1225で、図11のソリッドステートドライブ505は、選択されたストリーム905のデータを図1のブロック103に書き込む。破線S1230で示すように、図18のフローチャートは、より遅い時点で図11のソリッドステートドライブが図1のブロック103に書き込む他のストリームを選択可能なように選択的にステップS1220に戻ることができる。
図19は、本発明の一実施形態による第2次ストリームを利用して異なるストリームのデータを図1のブロックに書き込む図11のソリッドステートドライブの動作を示すフローチャートである。図19を参照すると、ステップS1305で、図11のソリッドステートドライブ505は、図1のブロック103を識別する。ステップS1310で、図11のソリッドステートドライブ505は、図10の第2次ストリーム405を生成する。ステップS1315で、図11のソリッドステートドライブ505は、図10の生存時間410を図10の第2次ストリーム405に割当する。ステップS1320で、図11のソリッドステートドライブ505は、図2〜図5のストリーム(205、210)を受信するか又は図6〜図9のストリーム(305、320、335、350)を受信する。ステップS1325で、図11のソリッドステートドライブ505は、図10の第2次ストリーム405に割当するストリーム905を選択する。ステップS1330で、図11のソリッドステートドライブ505は、選択されたストリーム905のデータを図10の第2次ストリーム405に書き込む。ステップS1335で、図11のソリッドステートドライブ505は、図10の第2次ストリーム405のデータを図1のブロック103に書き込む。破線S1340で示すように、図19のフローチャートは、より遅い時点で図11のソリッドステートドライブ505が図10の第2次ストリーム405に書き込む他のストリームを選択可能なように選択的にステップS1325に戻ることができる。
以下の説明は、本発明の概念の特定な観点で具現される好適なマシン(machine)又は複数のマシン(machines)の簡略かつ一般的な説明を提供するものである。マシン(machine)又は複数のマシン(machines)の少なくとも一部は、他の装置から受信した指示(directives)のみでなく、キーボード、マウスのような通常の入力装置からの入力(input)によって制御される。装置又は複数の装置の少なくとも一部は、仮想現実(VR:virtual reality)環境との相互作用、バイオフィードバック(bio feedback)、又は他の入力信号によっても制御される。本明細書で使用される用語である「マシン(machine)」は、単一マシン(single machine)、仮想マシン(virtual machine)、又は通信接続されたマシンのシステム(a system of communicatively coupled machines)、仮想マシン(virtual machine)、又は共に動作する装置を広く含むことを意図している。例示的な複数のマシンは、コンピューティング装置(computing devices)及び輸送装置(transportation devices)を含む。例えば、コンピューティング装置は、パーソナルコンピュータ、ワークステーション、サーバー、携帯用コンピュータ、携帯用装置、携帯電話、タブレット等である。例えば、輸送装置は、個人又は公共交通手段(例えば、自動車、汽車、タクシー等)である。
マシン(machine)又は複数のマシン(machines)は、埋め込み型コントローラ(embedded controllers)を含む。例えば、埋め込み型コントローラは、プログラム可能な(又はプログラム不可能な)ロジックディバイス又はアレイ、特定用途向け半導体(ASICs:Application Specific Integrated Circuits)、埋め込み型コンピュータ(embedded computers)、スマートカード(smart cards)、及びこれと類似なものである。ネットワークインターフェイス(network interface)、モデム又は他の通信連結(communicative coupling)を通じて、マシン(machine)又は複数のマシン(machines)は1つ以上の遠隔マシン(remote machines)に対して1つ以上の接続(connections)を利用する。マシン(machines)は、インターネット、近距離ネットワーク(LAN:local area networks)、広域ネットワーク(WAN:wide area networks)等のような物理的な及び/又は論理的なネットワークを通じて相互接続される。通常の技術者には、ネットワーク通信が多様な有線及び/又は無線近距離又は長距離キャリヤー(carriers)及びプロトコルを利用できることが理解される。この場合、多様な有線及び/又は無線近距離又は長距離キャリヤー及びプロトコルは、無線周波数(radio frequency)、衛星(satellite)、マイクロ波(microwave)、米国電気電子学会(IEEE)802.11、ブルートゥース(登録商標)等である。
本発明による実施形態は、機能(functions)、手続(procedures)、データ構造(data structures)、応用プログラム(application programs)等を含む関連データ(associated data)を共に参照して説明される。この場合、関連データは、マシンによってアクセスされる時、タスク(tasks)を遂行するか、或いは抽象データ形式(abstract data types)又はローレベルのハードウェアコンテキスト(low−level hardware contexts)を定義するマシン駆動の結果にしたがうものである。例えば、関連データは、揮発性及び/又は不揮発性メモリ(例えば、RAM、ROM等)又は他のストレージ装置及び関連格納媒体(associated storage media)に格納される。例えば、関連格納媒体は、ハードディスクドライブ、フロッピーディスク(登録商標)、光学格納装置(optical storage)、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生物学的格納装置(biological storage)等を含む。関連データは、伝送環境(transmission environments)を通じて伝達される。例えば、伝送環境は、パケット形式、直列データ形式、並列データ形式、伝搬信号形式(form of propagated signals)等を有する物理及び/又は論理ネットワークを含む。また、関連データは、圧縮(compressed)されるか又は暗号化(encrypted)されたフォーマットで使用される。関連データは、分散環境(distributed environment)で使用され、マシンアクセス(machine access)のためにローカル的に及び/又は遠隔的に格納される。
本発明の実施形態は、1つ以上のプロセッサによって実行される指示語(instructions)を含む類型の(tangible)非一時的な(non−transitory)マシン−読出し可能媒体(machine−readable medium)を含む。このような指示語は、本明細書に記載した本発明の構成要素を実行するための指示語を含む。
上述した実施形態を参照して本発明の概念の原理を説明した。上述の実施形態は、このような原理から逸脱することなく、配置及び詳細において変形されることができ、任意の方法で組み合せることができる。そして、上述した論議は特定の実施形態に集中したが、他の構成が考慮される。特に、「本発明の一実施形態において」又はこれと類似の表現が本明細書で使用されたが、このような記載は一般的に実施可能性を参照するためのものであり、本発明の概念を特定の実施形態の構成に限定するものではない。本明細書で使用したこれらの用語は、他の実施形態に結合される同一又は他の実施形態を参照する。
上述した実施形態は、本発明の概念を制限するものとして解釈されない。幾つの実施形態が説明されたが、通常の技術者はこれらの実施形態に対して実質的に新規な教示及び本発明の長所から逸脱しないで、多くの変形が可能であることを容易に理解する。したがって、このようなすべての変形は請求の範囲に記載された本発明の概念の範囲内に含まれる。
本発明の実施形態は、制限無しに下記のステートメントに拡張することができる。
第1ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1生存時間を含む第1ストリームのデータを受信し、第1生存時間と異なる第2生存時間を含む第2ストリームのデータを受信する受信回路、第1生存時間及び第2生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択する選択ロジック、及びソリッドステートドライブのブロックに第1ストリーム及び第2ストリームのデータを書き込む書込みロジックを備える。
第2ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1ステートメントのソリッドステートドライブを含み、ブロックに第1ストリーム及び第2ストリームの中のいずれか1つのストリームのデータのみが書き込まれている場合よりも早く、ブロックに格納された全てのデータが満了することを予測する。
第3ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1ステートメントのソリッドステートドライブを含み、選択ロジックは、第1生存時間及び第2生存時間に基づいて第1時点にブロックに書き込む第1ストリームを選択し、第1生存時間及び第2生存時間に基づいて第2時点にブロックに書き込む第2ストリームを選択するように動作する。
第4ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1ステートメントのソリッドステートドライブを含み、選択ロジックは、第1生存時間及び第2生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを周期的に選択するように動作する。
第5ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1ステートメントのソリッドステートドライブを含み、受信回路が第1ストリーム又は第2ストリームのデータを受信する時、選択ロジックは、第1生存時間及び第2生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択するように動作する。
第6ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1ステートメントのソリッドステートドライブを含み、選択ロジックは、第1生存時間及び第2生存時間をブロックに連関するブロック生存時間と比較する比較器を含む。
第7ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1ステートメントのソリッドステートドライブを含み、選択ロジックは、第1ストリームに連関する書込みオペレーションに対する第1平均書込みサイズ及び第2ストリームに連関する書込みオペレーションに対する第2平均書込みサイズを演算する平均書込みサイズ演算器と、第1ストリームに対する第1平均書込み到達比率及び第2ストリームに対する第2平均書込み到達比率を演算する平均書込み到達比率演算器と、を含む。
第8ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第7ステートメントのソリッドステートドライブを含み、選択ロジックは、第1生存時間、第2生存時間、第1平均書込みサイズ、第1平均書込み到達比率、第2平均書込みサイズ、及び第2平均書込み到達比率の中の少なくとも2つに基づいてソリッドステートドライブのブロックに書き込むストリームを選択する。
第9ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第7ステートメントのソリッドステートドライブを含み、第1ストリームに対する第1生存時間及び第2ストリームに対する第2生存時間を演算する生存時間演算器をさらに含む。
第10ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1ステートメントのソリッドステートドライブを含み、第2次ストリームを生成する第2次ストリーム生成器をさらに含み、選択ロジックは、第1ストリーム及び第2ストリームの中から第2次ストリームに書き込むストリームを選択するストリーム選択ロジックを含み、書込みロジックは、第2次ストリームをブロックに書き込むように動作する。
第11ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第1ステートメントのソリッドステートドライブを含み、選択ロジックは、第1ストリーム、第2ストリーム、及び第3生存時間を含む第3ストリームのデータを受信する受信回路と、第1生存時間、第2生存時間、及び第3生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択するように動作する選択ロジックと、ソリッドステートドライブのブロックに第1ストリーム、第2ストリーム、及び第3ストリームのデータを書き込む書込みロジックと、を含む。
第12ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、ソリッドステートドライブのブロックに対するブロックの生存時間のためのストレージと、ブロックの生存時間、第1生存時間、及び第2生存時間に基づいて、第1生存時間を有する第1ストリーム及び第2生存時間を有する第2ストリームの中からブロックに書き込むストリームを選択する選択ロジックと、を含む。
第13ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントのソリッドステートドライブに対するロジックを含み、ブロックに第1ストリーム及び第2ストリームの中のいずれか1つのストリームのデータのみが書き込まれている場合よりも早く、ブロックに格納された全てのデータが満了することを予測する。
第14ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、ブロックの生存時間、第1生存時間、及び第2生存時間に基づいて第1時点にブロックに書き込む第1ストリームを選択し、ブロックの生存時間、第1生存時間、及び第2生存時間に基づいて第2時点にブロックに書き込む第2ストリームを選択するように動作する。
第15ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、ブロックの生存時間、第1生存時間、及び第2生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを周期的に選択するように動作する。
第16ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントのソリッドステートドライブに対するロジックを含み、ソリッドステートドライブが第1ストリーム又は第2ストリームのデータを受信する時、選択ロジックは、ブロックの生存時間、第1生存時間、及び第2生存時間に基づいてソリッドステートドライブのブロックにどのストリームを書き込むかを選択するように動作する。
第17ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、第1生存時間及び第2生存時間をブロックの生存時間と比較する比較器を含む。
第18ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、第1ストリームに連関する書込みオペレーショに対する第1平均書込みサイズ及び第2ストリームに連関する書込みオペレーショに対する第2平均書込みサイズを演算する平均書込みサイズ演算器と、第1ストリームに対する第1平均書込み到達比率及び第2ストリームに対する第2平均書込み到達比率を演算する平均書込み到達比率演算器と、を含む。
第19ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第18ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、ブロックの生存時間、第1生存時間、第2生存時間、第1平均書込みサイズ、第1平均書込み到達比率、第2平均書込みサイズ、及び第2平均書込み到達比率の中の少なくとも2つに基づいてソリッドステートドライブのブロックに書き込むストリームを選択するように動作する。
第20ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントのソリッドステートドライブに対するロジックを含み、第1ストリームに対する第1生存時間及び第2ストリームに対する第2生存時間を演算する生存時間演算器をさらに含む。
第21ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントのソリッドステートドライブに対するロジックを含み、第2次ストリームを生成する第2次ストリーム生成器をさらに含み、選択ロジックは、第1ストリーム及び第2ストリームの中から第2次ストリームに書き込むストリームを選択するストリーム選択ロジックを含み、第2次ストリームはブロックに書き込まれる。
第22ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第12ステートメントによるソリッドステートドライブに対するロジックを含み、選択ロジックは、ブロックの生存時間、第1生存時間、第2生存時間、及び第3生存時間に基づいて第1生存時間を有する第1ストリーム、第2生存時間を有する第2ストリーム、及び第3生存時間を有する第3ストリームの中からブロックに書き込むストリームを選択するように動作する。
第23ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、ソリッドステートドライブのブロックを識別するステップと、第1生存時間を含む第1ストリームを受信するステップと、第1生存時間と異なる第2生存時間を含む第2ストリームを受信するステップと、第1生存時間及び第2生存時間に基づいてブロックに第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップと、第1ストリーム及び第2ストリームの両方のデータをブロックに書き込むステップと、を有する。
第24ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第23ステートメントの動作方法を含み、ソリッドステートドライブは、ブロックに第1ストリーム及び第2ストリームの中のいずれか1つのストリームのデータのみ書き込まれている場合よりも早く、ブロックに格納された全てのデータが満了することを予測する。
第25ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第23ステートメントの動作方法を含み、ブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップは、第1生存時間及び第2生存時間に基づいて第1時点に第1ストリームをブロックに書き込むように選択するステップと、第1生存時間及び第2生存時間に基づいて第2時点に第2ストリームをブロックに書き込むように選択するステップと、を含む。
第26ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第23ステートメントの動作方法を含み、ブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップは、第1生存時間及び第2生存時間に基づいて第1ストリーム又は第2ストリームのいずれをブロックに書き込むかを周期的に選択するステップを含む。
第27ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第23ステートメントの動作方法を含み、ブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップは、第1ストリーム又は第2ストリームのデータがソリッドステートドライブ書き込まれる時毎に、第1生存時間又は第2生存時間に基づいて第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップを含む。
第28ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第23ステートメントの動作方法を含み、ブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップは、第1生存時間、第2生存時間、第1ストリームに対する第1平均書込みサイズ、第2ストリームに対する第2平均書込みサイズ、第1ストリームに対する第1平均書込み到達比率、及び第2ストリームに対する第2平均書込み到達比率の中の少なくとも2つに基づいてブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップを含む。
第29ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第23ステートメントの動作方法を含み、ソリッドステートドライブのブロックを識別するステップは、ブロックの生存時間をブロックに連関させるステップを含む。
第30ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第29ステートメントの動作方法を含み、ブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップは、第1生存時間、第2生存時間、及びブロックの生存時間に基づいてブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップを含む。
第31ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第30ステートメントの動作方法を含み、ブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップは、第1生存時間又は第2生存時間の中のブロックの生存時間により近い生存時間に基づいて第1ストリーム又は第2ストリームの中からブロックに書き込むストリームを選択するステップを含む。
第32ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第23ステートメントの動作方法を含み、第2次ストリームを生成するステップと、第2次ストリームをブロックに連関させるステップと、をさらに含み、ブロックに第1次ストリーム又は第2次ストリームのいずれを書き込むかを選択するステップは、第1ストリーム及び第2ストリームのデータの中から第2次ストリームに割当するデータを選択するステップを含む。
第33ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第23ステートメントの動作方法を含み、第1生存時間及び第2生存時間と異なる第3生存時間を含む第3ストリームを受信するステップをさらに含み、ブロックに第1ストリーム又は第2ストリームのいずれを書き込むかを選択するステップは、第1生存時間、第2生存時間、及び第3生存時間に基づいて第1ストリーム、第2ストリーム、又は第3ストリームの中からブロックに書き込むストリームを選択するステップを含み、第1ストリーム及び第2ストリームの両方のデータをブロックに書き込むステップは、第1ストリームのデータ、第2ストリームのデータ、及び第3ストリームのデータをブロックに書き込むステップを含む。
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
103 ブロック
106、109、112、124、127 ストリーム書込み(オペレーション)
115、118、121 (無効)ページ
130、133、148、151 (有効)ページ
136、139、142、145 ページ
154、157、160、163 生存時間値
205、210、305、320、335、350 ストリーム
215、220、225、230、235、315、330、345、360 (残余の)生存時間値
240 (ブロックの)生存時間(TTL)
245、250、310、325、340、355 生存時間(TTL)
405 第2次ストリーム
410 第2次ストリームの生存時間(TTL)
505 ソリッドステートドライブ(SSD)
510 回路
515 SSDコントローラ
520 フラッシュメモリ
525 選択ロジック
530 書込みロジック
535 生存時間演算器(TTL演算器)
540 第2次ストリーム生成器
605 比較器
610 平均書込みサイズ演算器
615 平均書込み到達比率演算器
620 ストリーム選択ロジック
625 ストレージ
705 平均書込みサイズ
805 平均書込み到達比率
905 選択されたストリーム
1105 マシン
1110 プロセッサ
1115 メモリコントローラ
1120 クロック
1125 メモリ
1130 ネットワークコネクター
1135 バス
1140 ユーザーインターフェイス
1145 入出力エンジン

Claims (22)

  1. ソリッドステートドライブであって、
    第1生存時間を含む第1ストリームのデータを受信し、前記第1生存時間と異なる第2生存時間を含む第2ストリームのデータを受信する受信回路と、
    前記第1生存時間及び前記第2生存時間に基づいて前記ソリッドステートドライブのブロックに書き込むストリームを選択する選択ロジックと、
    前記第1ストリーム及び前記第2ストリームのデータを前記ソリッドステートドライブのブロックに書き込む書込みロジックと、を備えることを特徴とするソリッドステートドライブ。
  2. 前記ソリッドステートドライブは、前記ブロックに前記第1ストリーム及び前記第2ストリームの中のいずれか1つのストリームのデータのみが書き込まれている場合よりも早く、前記ブロックに格納された全てのデータが満了することを予測することを特徴とする請求項1に記載のソリッドステートドライブ。
  3. 前記選択ロジックは、前記第1生存時間及び前記第2生存時間に基づいて第1時点に前記ブロックに書き込む前記第1ストリームを選択し、前記第1生存時間及び前記第2生存時間に基づいて第2時点に前記ブロックに書き込む前記第2ストリームを選択するように動作することを特徴とする請求項1に記載のソリッドステートドライブ。
  4. 前記選択ロジックは、
    前記第1ストリームに連関する書込みオペレーションに対する第1平均書込みサイズ及び前記第2ストリームに連関する書込みオペレーションに対する第2平均書込みサイズを演算する平均書込みサイズ演算器と、
    前記第1ストリームに対する第1平均書込み到達比率及び前記第2ストリームに対する第2平均書込み到達比率を演算する平均書込み到達比率演算器と、を含むことを特徴とする請求項1に記載のソリッドステートドライブ。
  5. 前記選択ロジックは、前記第1生存時間、前記第2生存時間、前記第1平均書込みサイズ、前記第1平均書込み到達比率、前記第2平均書込みサイズ、及び前記第2平均書込み到達比率の中の少なくとも2つに基づいて前記ソリッドステートドライブのブロックに書き込むストリームを選択するように動作することを特徴とする請求項4に記載のソリッドステートドライブ。
  6. 前記ソリッドステートドライブは、第2次ストリームを生成する第2次ストリーム生成器をさらに含み、
    前記選択ロジックは、前記第1ストリーム及び前記第2ストリームの中から前記第2次ストリームに書き込むストリームを選択するストリーム選択ロジックを含み、
    前記書込みロジックは、前記第2次ストリームを前記ブロックに書き込むように動作することを特徴とする請求項1に記載のソリッドステートドライブ。
  7. ソリッドステートドライブに対するロジックであって、
    前記ソリッドステートドライブのブロックに対するブロックの生存時間のためのストレージと、
    前記ブロックの生存時間、第1生存時間、及び第2生存時間に基づいて、前記第1生存時間を有する第1ストリーム及び前記第2生存時間を有する第2ストリームの中から前記ブロックに書き込むストリームを選択する選択ロジックと、を備えることを特徴とするロジック。
  8. 前記ロジックは、前記ブロックに前記第1ストリーム及び前記第2ストリームの中のいずれか1つのストリームのデータのみが書き込まれている場合よりも早く、前記ブロックに格納された全てのデータが満了することを予測することを特徴とする請求項7に記載のロジック。
  9. 前記選択ロジックは、前記ブロックの生存時間、前記第1生存時間、及び前記第2生存時間に基づいて第1時点に前記ブロックに書き込む前記第1ストリームを選択し、前記ブロックの生存時間、前記第1生存時間、及び前記第2生存時間に基づいて第2時点に前記ブロックに書き込む前記第2ストリームを選択するように動作することを特徴とする請求項7に記載のロジック。
  10. 前記選択ロジックは、
    前記第1ストリームに連関する書込みオペレーションに対する第1平均書込みサイズ及び前記第2ストリームに連関する書込みオペレーションに対する第2平均書込みサイズを演算する平均書込みサイズ演算器と、
    前記第1ストリームに対する第1平均書込み到達比率及び前記第2ストリームに対する第2平均書込み到達比率を演算する平均書込み到達比率演算器と、を含むことを特徴とする請求項7に記載のロジック。
  11. 前記選択ロジックは、前記ブロックの生存時間、前記第1生存時間、前記第2生存時間、前記第1平均書込みサイズ、前記第1平均書込み到達比率、前記第2平均書込みサイズ、及び前記第2平均書込み到達比率の中の少なくとも2つに基づいて前記ソリッドステートドライブのブロックに書き込むストリームを選択するように動作することを特徴とする請求項10に記載のロジック。
  12. 前記選択ロジックは、前記ブロックの生存時間、前記第1生存時間、及び前記第2生存時間に基づいて第1時点に前記ブロックに書き込む前記第1ストリームを選択し、前記ブロックの生存時間、前記第1生存時間、及び前記第2生存時間に基づいて第2時点に前記ブロックに書き込む前記第2ストリームを選択するように動作することを特徴とする請求項7に記載のロジック。
  13. 前記ロジックは、第2次ストリームを生成する第2次ストリーム生成器をさらに含み、
    前記選択ロジックは、前記第1ストリーム及び前記第2ストリームの中から前記第2次ストリームに書き込むストリームを選択するストリーム選択ロジックを含み、
    前記第2次ストリームは、前記ブロックに書き込まれることを特徴とする請求項7に記載のロジック。
  14. ソリッドステートドライブの動作方法であって、
    ソリッドステートドライブのブロックを識別するステップと、
    第1生存時間を含む第1ストリームを受信するステップと、
    前記第1生存時間と異なる第2生存時間を含む第2ストリームを受信するステップと、
    前記第1生存時間及び前記第2生存時間に基づいて前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップと、
    前記第1ストリーム及び前記第2ストリームの両方のデータを前記ブロックに書き込むステップと、を有することを特徴とするソリッドステートドライブの動作方法。
  15. 前記ソリッドステートドライブは、前記ブロックに前記第1ストリーム及び前記第2ストリームの中のいずれか1つのストリームのデータのみが書き込まれている場合よりも早く、前記ブロックに格納された全てのデータが満了することを予測することを特徴とする請求項14に記載のソリッドステートドライブの動作方法。
  16. 前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップは、
    前記第1生存時間及び前記第2生存時間に基づいて第1時点に前記第1ストリームを前記ブロックに書き込むように選択するステップと、
    前記第1生存時間及び前記第2生存時間に基づいて第2時点に前記第2ストリームを前記ブロックに書き込むように選択するステップと、を含むことを特徴とする請求項14に記載のソリッドステートドライブの動作方法。
  17. 前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップは、前記第1生存時間、前記第2生存時間、前記第1ストリームに対する第1平均書込みサイズ、前記第2ストリームに対する第2平均書込みサイズ、前記第1ストリームに対する第1平均書込み到達比率、及び前記第2ストリームに対する第2平均書込み到達比率の中の少なくとも2つに基づいて前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップを含むことを特徴とする請求項14に記載のソリッドステートドライブの動作方法。
  18. ソリッドステートドライブのブロックを識別するステップは、前記ブロックの生存時間を前記ブロックに連関させるステップを含むことを特徴とする請求項14に記載のソリッドステートドライブの動作方法。
  19. 前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップは、前記第1生存時間、前記第2生存時間、及び前記ブロックの生存時間に基づいて前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップを含むことを特徴とする請求項18に記載のソリッドステートドライブの動作方法。
  20. 前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップは、前記第1生存時間又は前記第2生存時間の中の前記ブロックの生存時間により近い生存時間に基づいて前記第1ストリーム又は前記第2ストリームの中から前記ブロックに書き込むストリームを選択するステップを含むことを特徴とする請求項19に記載のソリッドステートドライブの動作方法。
  21. 前記ソリッドステートドライブの動作方法は、
    第2次ストリームを生成するステップと、
    前記第2次ストリームを前記ブロックに連関させるステップと、をさらに含み、
    前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップは、前記第1ストリーム及び前記第2ストリームのデータの中から前記第2次ストリームに割当するデータを選択するステップを含むことを特徴とする請求項14に記載のソリッドステートドライブの動作方法。
  22. 前記ソリッドステートドライブの動作方法は、前記第1生存時間及び前記第2生存時間と異なる第3生存時間を含む第3ストリームを受信するステップをさらに含み、
    前記ブロックに前記第1ストリーム又は前記第2ストリームのいずれを書き込むかを選択するステップは、前記第1生存時間、前記第2生存時間、及び前記第3生存時間に基づいて前記ブロックに前記第1ストリーム、前記第2ストリーム、又は前記第3ストリームの中から前記ブロックに書き込むストリームを選択するステップを含み、
    前記第1ストリーム及び前記第2ストリームの両方のデータを前記ブロックに書き込むステップは、前記第1ストリームのデータ、前記第2ストリームのデータ、及び前記第3ストリームのデータを前記ブロックに書き込むステップを含むことを特徴とする請求項14に記載のソリッドステートドライブの動作方法。
JP2016206191A 2015-11-30 2016-10-20 ソリッドステートドライブ及びその動作方法 Active JP6713906B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562261303P 2015-11-30 2015-11-30
US62/261,303 2015-11-30
US15/046,439 US9880780B2 (en) 2015-11-30 2016-02-17 Enhanced multi-stream operations
US15/046,439 2016-02-17

Publications (3)

Publication Number Publication Date
JP2017102908A true JP2017102908A (ja) 2017-06-08
JP2017102908A5 JP2017102908A5 (ja) 2019-11-28
JP6713906B2 JP6713906B2 (ja) 2020-06-24

Family

ID=58777631

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016206191A Active JP6713906B2 (ja) 2015-11-30 2016-10-20 ソリッドステートドライブ及びその動作方法

Country Status (5)

Country Link
US (1) US9880780B2 (ja)
JP (1) JP6713906B2 (ja)
KR (1) KR102363519B1 (ja)
CN (1) CN106814970B (ja)
TW (1) TWI729988B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018208177A1 (de) 2017-05-24 2018-11-29 Koito Manufacturing Co., Ltd. Lichtemissions-Ansteuervorrichtung und Fahrzeugleuchte
WO2019038859A1 (ja) * 2017-08-23 2019-02-28 株式会社日立製作所 不揮発メモリデバイスを有するストレージシステム

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031689B2 (en) * 2016-09-15 2018-07-24 Western Digital Technologies, Inc. Stream management for storage devices
US10216417B2 (en) 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
US10108345B2 (en) * 2016-11-02 2018-10-23 Samsung Electronics Co., Ltd. Victim stream selection algorithms in the multi-stream scheme
US11048624B2 (en) 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10698808B2 (en) 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
KR102387935B1 (ko) * 2017-10-23 2022-04-15 삼성전자주식회사 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치
KR102457400B1 (ko) 2017-11-16 2022-10-21 삼성전자주식회사 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템
KR102656172B1 (ko) 2018-03-28 2024-04-12 삼성전자주식회사 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법
KR102314784B1 (ko) * 2018-04-17 2021-10-19 한국과학기술원 Ftl 관리 장치 및 방법
US11093408B1 (en) * 2018-04-26 2021-08-17 Lightbits Labs Ltd. System and method for optimizing write amplification of non-volatile memory storage media
US11074173B1 (en) 2018-04-26 2021-07-27 Lightbits Labs Ltd. Method and system to determine an optimal over-provisioning ratio
CN108874309B (zh) * 2018-05-25 2021-07-23 新华三技术有限公司 一种管理固态硬盘中物理块的方法和装置
KR20200053204A (ko) 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
KR20210056520A (ko) 2019-11-11 2021-05-20 삼성전자주식회사 저장 장치 및 저장 장치 시스템과 그 동작 방법
KR20210156190A (ko) 2020-06-17 2021-12-24 삼성전자주식회사 스토리지 장치 지원 실시간 가상 머신 마이그레이션
CN112631952A (zh) * 2020-12-25 2021-04-09 上海威固信息技术股份有限公司 一种固态硬盘冷热数据分离方法
US11385798B1 (en) 2020-12-28 2022-07-12 Lightbits Labs Ltd. Method and system for application aware, management of write operations on non-volatile storage

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000505983A (ja) 1996-12-23 2000-05-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ流を供給するための方法および系
JP3726663B2 (ja) 2000-09-07 2005-12-14 日産自動車株式会社 電子制御装置の制御データ記憶装置
US6946715B2 (en) 2003-02-19 2005-09-20 Micron Technology, Inc. CMOS image sensor and method of fabrication
JPWO2004034282A1 (ja) 2002-10-10 2006-02-09 富士通株式会社 コンテンツ再利用管理装置およびコンテンツ再利用支援装置
US7254668B1 (en) 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
EP1568208A4 (en) 2002-11-27 2010-06-23 Rgb Networks Inc METHOD AND APPARATUS FOR TEMPORARILY PROCESSING MULTIPLE DIGITAL VIDEO PROGRAMS
US20040139042A1 (en) 2002-12-31 2004-07-15 Schirmer Andrew L. System and method for improving data analysis through data grouping
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
JP2006215954A (ja) 2005-02-07 2006-08-17 Hitachi Ltd ストレージシステム及びストレージ装置のアーカイブ管理方法
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
JP2006350599A (ja) 2005-06-15 2006-12-28 Hitachi Ltd ストレージシステム及びストレージシステムのデータマイグレーション方法
US7660264B1 (en) 2005-12-19 2010-02-09 Chelsio Communications, Inc. Method for traffic schedulign in intelligent network interface circuitry
US8812637B2 (en) * 2006-11-28 2014-08-19 International Business Machines Corporation Aggregation of multiple media streams to a user
US8122220B1 (en) 2006-12-20 2012-02-21 Marvell International Ltd. Memory usage in imaging devices
US9207876B2 (en) * 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8321579B2 (en) 2007-07-26 2012-11-27 International Business Machines Corporation System and method for analyzing streams and counting stream items on multi-core processors
US20090119352A1 (en) * 2007-11-05 2009-05-07 Steven Joseph Branda Method for Optimizing Generational Garbage Collection Through Object Life Heuristics
US8612668B2 (en) 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
US20100161687A1 (en) * 2008-12-24 2010-06-24 International Business Machines Corporation System and method for optimizing garbage collection with allocation modifiers
US8144515B2 (en) 2009-07-23 2012-03-27 Stec, Inc. Interleaved flash storage system and method
US9076543B2 (en) 2009-07-27 2015-07-07 Micron Technology, Inc. Techniques for providing a direct injection semiconductor memory device
US9063886B2 (en) 2009-09-18 2015-06-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
US20110096828A1 (en) 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US20130138915A1 (en) * 2010-08-11 2013-05-30 Nec Corporation Data processing system, data processing method, and program
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US8738882B2 (en) * 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
US10089017B2 (en) 2011-07-20 2018-10-02 Futurewei Technologies, Inc. Method and apparatus for SSD storage access
KR20140047732A (ko) * 2011-08-26 2014-04-22 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 어레이에서의 저항성 스위칭 소자를 판독하기 위한 회로 및 그 방법
US9158540B1 (en) 2011-11-14 2015-10-13 Emc Corporation Method and apparatus for offloading compute resources to a flash co-processing appliance
US10203881B2 (en) 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
KR101907059B1 (ko) 2011-12-21 2018-10-12 삼성전자 주식회사 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9146855B2 (en) * 2012-01-09 2015-09-29 Dell Products Lp Systems and methods for tracking and managing non-volatile memory wear
US20130290601A1 (en) 2012-04-26 2013-10-31 Lsi Corporation Linux i/o scheduler for solid-state drives
US8799561B2 (en) 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US20140122774A1 (en) * 2012-10-31 2014-05-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method for Managing Data of Solid State Storage with Data Attributes
JP2014130387A (ja) 2012-12-27 2014-07-10 Fujitsu Ltd ストレージコントローラ選択システム、ストレージコントローラ選択方法、およびストレージコントローラ選択プログラム
US9075731B2 (en) * 2013-01-23 2015-07-07 Vmware, Inc. Using transaction entries to achieve crash consistency when performing write-behind caching using a flash storage-based cache
US9195396B2 (en) 2013-03-14 2015-11-24 SanDisk Technologies, Inc. Estimating access frequency statistics for storage device
US9042181B2 (en) 2013-03-15 2015-05-26 SanDisk Technologies, Inc. Periodic erase operation for a non-volatile medium
US9335950B2 (en) 2013-03-15 2016-05-10 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems
US9213633B2 (en) 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
KR102210961B1 (ko) * 2013-06-12 2021-02-03 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동적 접근 방법
TWI527037B (zh) * 2014-04-10 2016-03-21 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
KR102289919B1 (ko) * 2014-04-15 2021-08-12 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US9632927B2 (en) * 2014-09-25 2017-04-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US9519429B2 (en) * 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283125A1 (en) 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US11461010B2 (en) * 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10048876B2 (en) 2015-09-10 2018-08-14 Western Digital Technologies, Inc. Method for providing nonvolatile storage write bandwidth using a caching namespace
US20170131948A1 (en) 2015-11-06 2017-05-11 Virtium Llc Visualization of usage impacts on solid state drive life acceleration

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018208177A1 (de) 2017-05-24 2018-11-29 Koito Manufacturing Co., Ltd. Lichtemissions-Ansteuervorrichtung und Fahrzeugleuchte
DE102018208177B4 (de) 2017-05-24 2024-04-11 Koito Manufacturing Co., Ltd. Lichtemissions-Ansteuervorrichtung und Fahrzeugleuchte
WO2019038859A1 (ja) * 2017-08-23 2019-02-28 株式会社日立製作所 不揮発メモリデバイスを有するストレージシステム
US10915441B2 (en) 2017-08-23 2021-02-09 Hitachi, Ltd. Storage system having non-volatile memory device

Also Published As

Publication number Publication date
TWI729988B (zh) 2021-06-11
KR102363519B1 (ko) 2022-02-16
US9880780B2 (en) 2018-01-30
CN106814970A (zh) 2017-06-09
US20170153848A1 (en) 2017-06-01
TW201721440A (zh) 2017-06-16
JP6713906B2 (ja) 2020-06-24
CN106814970B (zh) 2021-01-12
KR20170063332A (ko) 2017-06-08

Similar Documents

Publication Publication Date Title
JP6713906B2 (ja) ソリッドステートドライブ及びその動作方法
US9244617B2 (en) Scheduling requests in a solid state memory device
RU2658886C1 (ru) Способ управления файлами, распределенная система хранения и узел управления
KR102352257B1 (ko) 분산 스토리지 시스템 노드 및 그것의 동작 방법
RU2479013C2 (ru) Способ оптимизации твердотельного накопителя и оптимизатор
US9898202B2 (en) Enhanced multi-streaming though statistical analysis
US8645614B2 (en) Method and apparatus for managing data of flash memory via address mapping
KR102307130B1 (ko) 복수 배열 독립 디스크 구성에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법
KR102594657B1 (ko) 비순차적 리소스 할당을 구현하는 방법 및 장치
JP2013509658A (ja) 将来の使用推量に基づく記憶メモリの割り当て
KR20120112965A (ko) 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법
KR102412978B1 (ko) 이중 쓰기를 수행하는 스토리지 시스템 및 그것의 이중 쓰기 방법
KR20200023757A (ko) 메모리 시스템
US9164885B2 (en) Storage control device, storage control method, and recording medium
KR20210046377A (ko) 마이그레이션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법
JP2017162355A (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
CN106383667B (zh) 业务运行中lun迁移的方法和装置
JP5818824B2 (ja) デュアル・モード・リーダ・ライタ・ロック
US9753803B2 (en) Storage system and information processing apparatus
US20190087181A1 (en) Storage system
JP2016045563A (ja) Nandバックグラウンド処理制御装置
US10671307B2 (en) Storage system and operating method thereof
JP2006079463A (ja) 時系列データ記録用バッファ管理方法、装置、システムおよびプログラム
CN117667299A (zh) 虚拟机迁移方法、芯片、网卡、处理设备、***及介质
CN112445412A (zh) 一种数据存储方法及装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191016

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191016

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20191016

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20191018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200604

R150 Certificate of patent or registration of utility model

Ref document number: 6713906

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250