JP6851951B2 - マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法 - Google Patents

マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法 Download PDF

Info

Publication number
JP6851951B2
JP6851951B2 JP2017204461A JP2017204461A JP6851951B2 JP 6851951 B2 JP6851951 B2 JP 6851951B2 JP 2017204461 A JP2017204461 A JP 2017204461A JP 2017204461 A JP2017204461 A JP 2017204461A JP 6851951 B2 JP6851951 B2 JP 6851951B2
Authority
JP
Japan
Prior art keywords
software
streams
stream
value
criterion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017204461A
Other languages
English (en)
Other versions
JP2018073412A5 (ja
JP2018073412A (ja
Inventor
慶 鈞 フエン
慶 鈞 フエン
昌 皓 崔
昌 皓 崔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2018073412A publication Critical patent/JP2018073412A/ja
Publication of JP2018073412A5 publication Critical patent/JP2018073412A5/ja
Application granted granted Critical
Publication of JP6851951B2 publication Critical patent/JP6851951B2/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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

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 Networks & Wireless Communication (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、ソリッドステートドライブ(SSDs:Solid State Drives)に関し、より詳細には、マルチストリームSSD並びにそのためのドライバー及びデータストリームの統合方法に関する。
マルチストリーミングSSD(multi−streaming solid state drives)は、入力データのスマート配置(smart placement)が内部ガベージコレクション(GC:garbage collection)の影響を最少化し、書込み増加現象(write amplification)を減少させる。マルチストリーミングはホストからSSDに伝送された書込み要請の各々に単純タグ(ストリームID)を追加することによって達成される。このようなタグに基づいて、SSDはデータを共通ブロックにグループ化する。
大型コンピュータシステムで、アプリケーションは多くのファイルを同時にオープンする。理想的に、各ファイル形態はストリーム書込み(stream writes)を遂行する時、割当される自分のストリームIDを有する。しかし、SSDは1回に使用可能な制限された数の活性書込みストリームのみを支援する。これはシステムによってオープンされる全てのファイルの収容に時々十分ではない。
ホストマシンからSSDへのストリームのマッピングを管理する方法に対する要求が相変わらず存在する。
米国特許第9158687号明細書 米国特許出願公開第2016/0162203号明細書 米国特許出願公開第2016/0283125号明細書 米国特許出願公開第2016/0306552号明細書
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的はマルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法を提供することにある。
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブ(SSD:Solid State Drive)は、データを格納するフラッシュメモリと、前記SSD内の複数の装置ストリームのための支援(support)手段と、複数のコマンドに応答して前記フラッシュメモリへのデータの書込み及び前記フラッシュメモリからのデータの読出しを管理するSSDコントローラと、ホストインターフェイスロジックと、を備え、前記ホストインターフェイスロジックは、ホストから複数のソフトウェアストリームに関連する前記複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する統計コレクターと、前記複数のソフトウェアストリームの各々に対して前記少なくとも1つの基準に対する少なくとも1つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームを前記SSD内の複数の装置ストリームの中の固有装置ストリーム(unique device stream)にマッピングし、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、を含む。
上記目的を達成するためになされた本発明の一態様によるコンピュータシステムで使用されるドライバーは、ホストから複数のソフトウェアストリームに関連する複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する統計コレクターと、前記複数のソフトウェアストリームの各々に対して前記少なくとも1つの基準に対する少なくとも1つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームをソリッドステートドライブ(SSD:Solid State Drive)内の複数の装置ストリームの中の固有装置ストリームにマッピングし、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、前記複数のコマンドの各々に関連するソフトウェアストリームに対応する装置ストリームに対する装置ストリーム識別子(ID:identifier)を追加的な複数のコマンドの各々に追加する装置ストリームIDアダーと、前記追加的な複数のコマンドの各々を前記SSDに伝送する伝送器と、を備える。
上記目的を達成するためになされた本発明の一態様によるコンピュータシステムで使用されるデータストリームの統合方法は、複数のソフトウェアストリームに関連し、複数の装置ストリームを含むソリッドステートドライブ(SSD:Solid State Drive)を使用して処理される複数のコマンドを受信する段階と、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する段階と、前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階と、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームを前記SSD内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームに対応付けるマッピングを生成する段階と、前記マッピングを生成した後に、前記複数のソフトウェアストリームに関連する第2複数のコマンドを受信する段階と、前記マッピングに応答して前記複数の装置ストリームの中の1つに前記第2複数のコマンドの各々を割当する段階と、前記割当された装置ストリームを使用して前記SSDで第2複数のコマンドの各々を処理する段階と、を有する。
本発明によれば、向上させた性能を有するマルチストリームが可能なソリッドステートドライブのためのデータストリームを統合する方法を提供することができる。
本発明の一実施形態によるソリッドステートドライブ(SSD:Solid State Drvice)を具備するマシンを示す図である。 図1のマシンの追加的な詳細構成を示す図である。 図1のSSDの詳細を示す図である。 図1のSSD内の装置ストリームにマッピングされた多様なソフトウェアストリームに関連する多様なコマンドを示す図である。 図3のホストインターフェイスロジックの詳細を示す図である。 図4のソフトウェアストリームに対する装置ストリームへのマッピングを支援する複数のコマンドに対する統計を演算するために使用されるウインドウを示す図である。 図6のマッピングを生成するために使用される多様な基準(criteria)を示す図である。 図5のランカーの詳細を示す図である。 図5のランカーがソフトウェアストリームを整列(rank)させる他の方法を示す図である。 図5のランカーがソフトウェアストリームを整列(rank)させる他の方法を示す図である。 本発明の一実施形態による図4のマッピングを生成する例示的な手続を示すフローチャートである。 本発明の一実施形態による図4のマッピングを生成する例示的な手続を示すフローチャートである。 本発明の一実施形態による図5の統計コレクターが基準に対する値を決定する例示的な手続を示すフローチャートである。 本発明の一実施形態による図5のランカーがどのソフトウェアストリームがどの装置ストリームにマッピングされるかを決定する例示的な手続を示すフローチャートである。 本発明の一実施形態による図5のマッパーがソフトウェアストリームを装置ストリームにマッピングする例示的な手続を示すフローチャートである。
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。以下の詳細な説明で、多様な詳細な説明は本発明の技術的思想の理解を助けるためである。しかし、当業者がこのような詳細な説明無しに本発明の思想を遂行可能なことはよく理解される。他の例として、実施形態が不必要に曖昧にならないように広く公知された方法、手続、構成、回路、及びネットワークは説明しない。
第1、第2等の用語を本文で多様な要素を説明するために使用するが、このような要素はこのような用語に限定されないことはよく理解される。このような用語は単に1つの要素から他の1つを区分するために使用される。例えば、本発明の思想から逸脱することなく、第1モジュールは第2モジュールを示し、同様に第2モジュールは第1モジュールを示す。
本明細書で使用する用語は単に特定の実施形態を説明するための目的を有し、本発明を限定するものとして意図しない。本明細書及び特許請求の範囲で使用するように、単数用語は脈絡が明確に他のことを指称しない限り、複数の形態を含むものと意図する。本明細書で使用する“及び/又は”の用語は列挙された目録の1つ以上の可能な組合せを含むか、或いは参照することであることはよく理解される。詳細な説明で使用する“含む”の用語は言及する特性、数、段階、動作、及び/又は構成要素の存在を明示し、1つ以上の他の特性、数、段階、動作、構成要素、及び/又はこれらのグループの存在又は追加を排除しない。図面の特徴及び構成は実際の比率で必須的に示さない。
マルチストリーミング技術で、アプリケーションからの書込みストリームIDの数はSSD(Solid State Drive)によって支援されるストリームの最大数を時々超過する。このような問題点を解決するために、SSDは、各ファイル形態/ストリームIDの書込みパターンを評価し、ホストストリーム特性(例えば、書込み頻度、累積データサイズ、順次書込み(write sequentially)、サービス品質(QoS:Quality of Service)要求、遊休時間等)の間で類似点及び差異点(similarities and differences)に基づいて実際のストリーム(actual streams、device streams)をファイル/ホストストリームに割当する。
従来のデータセットと異なり、ストリームデータは多様なアップデート速度と共に持続的にコンピュータシステムに対して流入及び流出する。膨大なデータサイズによって、全てのデータストリームを格納するか又は数回全てのデータストリームをスキャンすることは不可能である。一方、処理のためにデータストリームを維持することはシステムで大きなボトルネック(huge bottleneck)を発生させる。本発明の実施形態は、ストリームの単一スキャン及びオンラインを使用してストリーム管理を支援する。
入力/出力(I/O:input/output)要請は、ホストコンピュータシステム又はSSDのファームウェアの内部の中の1つで1つ以上のキュー(queues)に一般的に管理される。本発明の実施形態は、このような位置の中の1つで具現される。マルチストリーム可能なシステム(multi−stream−enabled system)で、キューの各要請はアプリケーション割当ストリームID(application−assigned stream ID)を含む。アプリケーション割当ストリームIDをSSD支援ストリームID(SSD−supported stream ID)に変換するために、モジュールがキューで要請のウインドウ(window of requests)を監視(monitoring)するように具現される。ウインドウサイズはウインドウのデータセット(dataset)がホストマシンの作業負荷(workload)によって生成されたデータの分散を代表するように選択されるか、或いはウインドウサイズは適切なサイズに設定される。例えば、分散されたデータベースで発生するように、SSDが多様なマシンからのコマンドを処理する場合、SSDを含むホストマシンに対する作業負荷をキャプチャするように設計されたウインドウサイズは、コマンドが到着した他のマシン(other machines from which commands arrive)に対する作業負荷を表さない可能性がある。このような場合、異なるウインドウサイズがSSDに要請を伝送する全てのマシンに対する作業負荷を(おそらく)より良く表すために使用される。コマンドがウインドウに進入する(enter)ことによって、統計(statistics)(例えば、各アプリケーション割当ストリームIDに対する累積データサイズ又はカウンター)がコマンドに基づいて計算される。ウインドウが一杯に満たされた場合、アプリケーション割当ストリームIDはカウンター値に基づいてSSD支援ストリームIDにマッピングされる。
例えば、SSDがn個のストリームを支援すると仮定する。n−1個の最も大きいカウンター値を有するアプリケーション割当ストリームIDは1〜n−1のSSD支援ストリームIDに各々マッピングされる。アプリケーション割当ストリームIDに拘わらず、ウインドウで残りの要請は最後のSSD支援ストリームID(SSD支援ストリームID n)を使用する。
データ要請の動的な属性(dynamic nature)を管理するために、キューウインドウ(queue window)がFIFO(FIFO:First In、First Out)又はスライディング(sliding)ウインドウとして管理される。各要請がウインドウから進出する(exit)ことによって、関連するアプリケーション割当ストリームIDに対応する累積データサイズ又はカウンターのような統計が進出要請(exiting request)に基づいて減少される。このような方式で、統計は単にウインドウ内の要請に対してのみに維持される。アプリケーション割当ストリームID対SSD支援ストリームIDマップ(application−assigned stream ID to SSD−supported stream ID map)は周期的に更新されてデータロードの変化を調節する。
図1は、本発明の一実施形態によるSSD(Solid State Drive)を具備するマシンを示す図である。図1は、マシン105を示す。マシン105は、デスクトップコンピュータ又はラップトップコンピュータ、サーバー(独立サーバー又はラックサーバーの中の1つ)、或いは本発明の実施形態で長所を有する他の装置を含むが、これに限定されない適切なマシン(desired machine)である。マシン105は、専門的な携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置を更に含む。マシン105は適切なアプリケーションを実行する。データベースアプリケーションは望ましい例であるが、本発明の実施形態は他の望ましいアプリケーションに拡張される。
マシン105は、その特定の形態に拘らず、プロセッサ110、メモリ115、及びSSD120(Solid State Drive)を含む。プロセッサ110は、多様な形態のプロセッサ、例えばインテル(Intel)社製のゼオン(Xeon(登録商標))、セレロン(Celeron(登録商標))、イタニアム(Itanium(登録商標))、アトムプロセッサ(Atom(登録商標) Processor)、AMD社製のオプテロン(Opteron(登録商標))プロセッサ、ARM社製のARMプロセッサ等である。図1は単一プロセッサを示しているが、マシン105は多数のプロセッサを含むことができる。メモリ115は、多様なメモリ、例えばフラッシュメモリ、SRAM(Static Random Access Memory)、永久的なRAM(Persistent Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)のようなNVRAM(Non−Volatile Random Access Memory)等であるが、一般的にDRAMである。メモリ115は他のメモリタイプの適切な組合せであってもよい。メモリ115は、メモリコントローラ125、又はマシン105の一部によって制御される。
SSD120は、多様なSSDであり、ガベージコレクションを遂行する(フラッシュメモリを使用しなくとも)他の形態のストレージを含むものとして拡張される。SSD120は、プロセッサ110に集積されるか、又はマシン105の一部であるストレージコントローラ130によって制御される。
図2は、図1のマシンの追加的な詳細構成を示す図である。図2を参照すると、一般的に、マシン105は、マシン105の構成の動作を編成するために使用されるクロック205及びメモリコントローラ125を含む1つ以上のプロセッサ110を含む。プロセッサ110は、例としてRAM(random access memory)、ROM(read−only memory)、又は他の状態保持媒体を含むメモリ115に更に接続される。プロセッサ110は、ストレージ装置120、イーサーネット(登録商標)コネクター(Ethernet(登録商標) connector)又は無線コネクター(wireless connector)であるネットワークコネクター210に更に接続される。プロセッサ110は、バス215に更に接続され、他の構成の中の入力/出力(I/O)エンジン225を使用して管理される入力/出力インターフェイスポート及び使用者インターフェイス220がバス215に接続される。
図3は、図1のSSD120の詳細を示す図である。図3で、SSD120は、ホストインターフェイスロジック305、SSDコントローラ310、及び多様なチャンネル(320−1〜320−4)に編成される多様なフラッシュメモリチップ(315−1〜315−8)を含む。ホストインターフェイスロジック305はSSD120及び図1のマシン105の間の通信を管理する。SSDコントローラ310はフラッシュメモリチップ(315−1〜315−8)に対するガベージコレクション動作と共に読出し及び書込み動作を管理する。SSDコントローラ310はこのような管理の一部を遂行するフラッシュ変換階層325を含む。
図3は4つのチャンネル(320−1〜320−4)に編成された8個のフラッシュメモリチップ(315−1〜315−8)を含むSSD120を示しているが、本実施形態は多数のチャンネルに編成された多数のフラッシュメモリチップを支援する。
図4は、図1のSSD120内の装置ストリームにマッピングされた多様なソフトウェアストリームに関連する多様なコマンドを示す図である。図4は、多様なコマンド(405−1〜405−k)を示す。コマンド(405−1〜405−k)は図1のマシン105のソフトウェアソースから由来する。一般的に例示的なソースは、図1のマシン105で実行されるアプリケーション及び図1のマシン105で実行されるオペレーティングシステム(operating system)を含むが、コマンド(405−1〜405−k)に対する他のソースが可能である。
コマンド(405−1〜405−k)はソフトウェアストリーム(410−1〜410−n)に編成される。“ソフトウェアストリーム(software streams)”という用語は“装置ストリーム(device streams)”と称されるSSD120内部のストリームと区分するために使用され、“ソフトウェアストリーム(software streams)”はアプリケーション及びオペレーティングシステムを含む可能なストリームソースを含むものと意図する。一般的に、ソフトウェアストリーム(410−1〜410−n)はコマンド(405−1〜405−k)のソースによって定義される。特定ソースがオープンするストリームの数は制限されない。例えば、アプリケーションは図1のSSD120に書き込むか又は読み出される各ファイルに対して単一ストリーム(single stream)をオープンする。即ち、ストリームの数(n)は図1のSSD120にコマンドを発行するオペレーティングシステム及びアプリケーションの数を超過する。同じ脈絡で、アプリケーションがソフトウェアストリーム当たり複数のコマンドを発行できるため、コマンドの数(k)はソフトウェアストリームの数(n)を超過する。
各コマンドはタグ415を含む。タグ415はどのソフトウェアストリーム(410−1〜410−n)がどのコマンドに関連するかを判定する。このような方式で、各コマンドソース(アプリケーション、オペレーティングシステムスレッド、又は一部の他のソース)はソースに最も適切な方式で自身のコマンドを管理する。
しかし、ソフトウェアストリームの数(n)が利用可能なメモリ(available memory)によってのみ制限される一方、装置ストリーム(420−1〜420−m)の数は一般的に制限される。即ち、図1のSSD120は、固定された数の装置ストリームまでを支援し、予め定められた数以上は支援しない可能性がある。ソフトウェアストリームの数(n)が装置ストリームの数(m)よりも多くない場合、ソフトウェアストリームは装置ストリームと一対一関係に割当される。しかし、ソフトウェアストリームが装置ストリームよりも多い場合(数学的に、n>mである場合)、障害が発生する。例えば、少なくとも1つの装置ストリームは複数のソフトウェアストリームに関連するコマンドを管理する必要がある。マッピング425はソフトウェアストリーム(410−1〜410−n)が装置ストリーム(420−1〜420−m)といかにマッピングされるかを格納する。図5〜図9Bはマッピング425が如何に生成されるかを示す。
図5は、図3のホストインターフェイスロジック305の詳細を示す図である。図5は、図3のホストインターフェイスロジック305が図4のマッピング425の生成を担当することを示す。しかし、他の実施形態で、図5に示した構成は、例えば図1のメモリコントローラ125、図1のストレージコントローラ130の一部として含まれ、ソフトウェア形態で具現されるか、書込みコマンドを発生する前にストリームを組合せて、書込み要請を傍受するライブラリルーチン(library routines)として具現されるか、又は図1のSSD120又はマシン105内の他の場所で別の特定目的ハードウェア(special purpose hardware)として具現される。説明を簡易にするために、図5〜図9Bの説明は、図3のホストインターフェイスロジック305内の具現に重点を置くとしても、図4のマッピングの生成に対する参照はあらゆる特定位置での具現を含むように意図する。
図5で、ホストインターフェイスロジック305(host interface logic)は、受信機505(receiver)、タイマー510(timer)、統計コレクター515(statistics collector)、ランカー520(ranker)、及びマッパー525(mapper)を含む。このような構成は、適切な具現のために、ソフトウェア又はハードウェアの中の1つの形態で具現される。例えば、図3のホストインターフェイスロジック305内に具現された実施形態に対して、その具現は、回路を含む一方、図1のメモリコントローラ125又は図1のストレージコントローラ130内に具現された実施形態に対してソフトウェアを含む。
受信機505は多様なソフトウェアソースから図4のコマンド(405−1〜405−k)を受信する。即ち、図4のコマンド(405−1〜405−k)の各々は図4のどのソフトウェアストリーム(410−1〜410−n)がどのコマンドに関連するかを示す図4のタグ415を含む。
タイマー510は、ウインドウがオープンされ、クローズされる時刻を測定するために使用される。一定時間の間にウインドウを使用することによって、統計コレクター515は図4のソフトウェアストリーム(410−1〜410−n)と図4の装置ストリーム(420−1〜420−k)とのマッピングを支援する図1のマシン105上の作業負荷を代表する図4のソフトウェアストリーム(410−1〜410−n)に対する統計を演算する。
図6は、図1のSSD内の図4のソフトウェアストリームに対する図4の装置ストリームへのマッピングを支援する図4の複数のコマンドに対する統計を演算するために使用されるウインドウを示す図であり、このようなウインドウの例を示す。図6で、ウインドウ605は、コマンド(405−1〜405−k)の一部、特にコマンド405−1〜405−3をスパニング(spanning)するものとして示す。ウインドウ605の間に発行されたコマンドの統計分析に基づいて、図1のマシン105上の作業負荷の代表分析が決定される。図6に示したように、3つのコマンドが図1のマシン105の作業負荷の代表サンプルを提供するものではないが、本実施形態は特定ウインドウ内の多数のコマンドを支援する。ウインドウ605が合理的な数のコマンドをカバーするように示すと、図6は解読不可になる程度に複雑になる。
ウインドウ605のサイズ(図5のタイマー510によって測定されるように)は図1のマシン105が設置される利用法に応じて変わる。例えば、単位時間当たり発行されるコマンドの平均数は同一であるが、標準偏差(standard deviations)の変化が大きい2つのマシンを考慮する。コマンドの数で小さい標準偏差を有するマシンは時間の経過に応じて相当に均一に分散されるコマンドを含む。これは小さいウインドウ605がコマンドの代表サンプルをキャプチャすることを意味する。反面、コマンドの数で大きい標準偏差を有するマシンは相対的に低い活動度及び高い活動度の組合された区間を含む。ウインドウ605が、狭いウインドウであり、相対的に低い活動度の区間をキャプチャする場合、それらのコマンドの統計分析は全てのマシン上の作業負荷を表すことができない。従って、ウインドウ605はコマンドの数で小さい標準偏差を有するマシンで使用されるウインドウよりも相対的により大きいウインドウである必要がある。
ウインドウ605はスライディングウインドウ(sliding window)又は不連続ウインドウ(discrete window)の中の1つである。スライディングウインドウは、名称が暗示するように、周辺をスライディングするウインドウである。一般的に、スライディングウインドウは固定された時間区間をカバーし、時間の経過に応じて時間方向に移動する。例えば、スライディングウインドウは時刻Tで開始する。スライディングウインドウは時刻Tまでオープンを維持する。時刻Tで始めて、ウインドウはウインドウが現在時刻で常に終了するように前方に移動する。スライディングウインドウが前方に移動することによって、新しい情報がウインドウに進入(enter)し、スライディングウインドウの開始における情報(即ち、時刻Tに最も近い情報)はウインドウから進出(exit)する。
一方、不連続ウインドウは、時間が固定された時間区間をカバーし、移動しない。例えば、不連続ウインドウは時刻Tから時刻Tまでの区間で統計を収集する。時刻Tに到達した時、ウインドウに対する統計の収集は終了する(新しいウインドウが時刻Tのような時点で開始する)。
統計コレクター515は適切な基準(criteria)に対する統計(statistics)を収集する。
図7は、図6のマッピングを生成するために使用される多様な基準(criteria)を示す図であり、例示的な基準を図7に示す。基準705の例は以下の構成を含む。
・頻度710(Frequency):図6のウインドウ605の間に特定ソフトウェアストリームに関連するコマンド(読出し、書込み、又は両方)がどれくらい多く発行されたかを示す。より多くのコマンドを有するソフトウェアストリームはより少ないコマンドを有するソフトウェアストリームよりもより高い等級(higher rank)を有する。
・累積データサイズ715(Accumulated data size):図6のウインドウ605の間に特定ソフトウェアストリームに対してどれくらい多くのデータが書き込まれたかを示す。より大きい累積データサイズを有するソフトウェアストリームはより小さい累積データサイズを有するソフトウェアストリームよりもより高い等級を有する。
・順次書込みの数720(Number of sequential writes):図6のウインドウ605の間に特定ソフトウェアストリーム内で順次的な(又は順次的にパターン化された)論理ブロックアドレス(LBAs:logical block addresses)への書込みがどれくらい多く発生したかを示す。より多くの順次書込みを有するソフトウェアストリームはより少ない順次書込みを有するソフトウェアストリームよりもより高い等級を有する。
・サービス品質725(Quality of Service):特定ソフトウェアストリームが特定のサービス品質(quality of service)を要求するか否かを示す(他のソフトウェアストリームよりもこのソフトウェアストリームにより高い優先順位が付与される)。例示的な他のサービス品質の特徴は米国仮特許出願番号US62/309、446(2016.03.16)を優先権主張する米国特許出願番号US15/167、974(2016.05.27)に詳しく開示され、レファレンスとして参照される。より高いサービス品質要求を有するソフトウェアストリームはより低いサービス品質要求を有するソフトウェアストリームよりもより高い等級を有する。
・遊休時間730(Idle time):特定ソフトウェアストリームに対するコマンドの間でどれくらい長い時間が消耗されるかを示す。より短い遊休時間を有するソフトウェアストリームはより長い遊休時間を有するソフトウェアストリームよりもより高いランクを有する。
図5の統計コレクター515は適切な方式で統計を収集する。例えば、図6のウインドウ605が不連続ウインドウである場合、図5の統計コレクター515は図6のウインドウ605の開始で全ての統計をゼロ(zero、0)にリセットする。その後に、ストリームに対する統計で変化を生じるコマンドが発生すると、図5の統計コレクター515は適切に統計を調整する。
例えば、基準(criterion)として頻度710を使用することを考慮する。コマンドが受信される時毎に、図5の統計コレクター515はコマンドに関連するソフトウェアストリームが何であるかを判定する。図5の統計コレクター515は決定されたソフトウェアストリームに対する頻度カウンター(値)を増加させる。累積データサイズ715に対して書き込まれたデータの総量を合計すること、順次書込みの数720に対して順次書込みの数をカウンティングすること、サービス品質725に対して特定サービス品質を示す値を割当すること、又は遊休時間730に対して特定ソフトウェアストリームが係留中であるコマンドを含まない時間の総量を合計することのように、図5の統計コレクター515は他の基準に対して同様の値を収集する。
一方、図6のウインドウ605がスライディングウインドウである場合、図5の統計コレクター515は、図6のウインドウ605に進入するか又はウインドウ605から進出するかによって統計を調整する。例として、頻度710を使用することを再び考慮すると、特定ソフトウェアストリームに関連するコマンドが図6のウインドウ605に進入する場合、図5の統計コレクター515は特定ソフトウェアストリームに関連するカウンターを増加させる。特定ソフトウェアストリームに関連するコマンドが図6のウインドウ605から進出する場合、図5の統計コレクター515は特定ソフトウェアストリームに関連するカウンターを減少させる。このような方式で図5の統計コレクター515によって収集された統計は図6のウインドウ605内のコマンドを常に示す。図5の統計コレクター515は他の基準に対して同様に動作する。
一実施形態で、ウインドウ605が不連続ウインドウである場合、ウインドウ605が引き続きオープンされても(従って、コマンド(405−1〜405−k)の全てが統計的な目的のために処理されなくとも)、ウインドウ605に対して今まで使用可能な統計を使用してマッピング425が設定される。しかし、他の実施形態で、1つのウインドウの間に生成された統計は実際にウインドウ605がクローズされた後の時間周期の間にマッピング425を設定するために使用される。即ち、ウインドウ605が時刻Tから時刻Tまでの拡張の間に統計を収集するために使用される場合、それらの統計は時刻Tの後に受信されたコマンド(405−1〜405−k)に対するマッピング425を設定するために使用される。分散されたウインドウ605が繰り返す分散されたウインドウである場合、即ちウインドウ605が固定されたサイズを有し、1つのウインドウがクローズされて他のウインドウが自動的にオープンされる場合、各ウインドウで収集された統計は次のウインドウに対するマッピング425を設定するために使用される。例えば、時刻Tと時刻Tとの間で収集された統計は時刻Tと時刻Tとの間でマッピング425を生成するために使用され、時刻Tと時刻Tとの間で収集された統計は時刻Tと時刻Tとの間でマッピング425を生成するために使用される。
他の実施形態で、ウインドウ605が不連続ウインドウである場合、図5の統計コレクター515はマシン105の使用者のマシン105によって命令される場合にのみ統計を収集するように動作する。即ち、ウインドウ605は新しい統計収集のために受動的に(manually)オープンされる。新しい統計が収集されると、マッピング425が生成される。その後に、マッピング425は図3のホストインターフェイスロジック305が新しいマッピング425を生成する命令を受信する時まで無期限に維持される。その後に、新しいウインドウ605がオープンされ、図5の統計コレクター515は新しいウインドウ605の間に受信されたコマンドに基づいて新しい統計を収集する。
ウインドウ605がスライディングウインドウである場合、マッピング425は適切なスケジュール上で調整される。例えば、マッピング425は図5の統計コレクター515によって収集された統計が変更される時毎に変更される。例えば、コマンドがウインドウ605に進入する時毎に、対応するアプリケーション割当ストリームIDに対する図7の頻度710が増加し、コマンドがウインドウ605から進出する時毎に、対応するアプリケーション割当ストリームIDに対する図7の頻度710が減少する。或いは、マッピング425が特定区間(例えば、時間T又はその倍数)で調整される。本実施形態は他の適切なスケジュールに従ってマッピング425のアップデートを支援する。
ウインドウ605がスライディングウインドウ又は不連続ウインドウであることに拘らず、初期ウインドウ605の間にソフトウェアストリーム(410−1〜410−n)を装置ストリーム(420−1〜420−n)にどのようにマッピングするかに対する疑問が発生する。初期ウインドウ605の間に、前に収集された統計が無い場合、(予め定められたマッピングが全ての状況で最適化されないため)どのようなマッピングも使用され得る。しかし、図5の統計コレクター515が一部の統計を収集した場合、その後のコマンドに対するマッピング425を生成することが可能になる。
図5を再び参照すると、ウインドウ605に対して統計が収集された場合、ランカー520はそれらの統計を使用して図4のソフトウェアストリーム(410−1〜410−n)を等級付ける(rank)。一般的に値が低くなるほど等級が高くなるが、本実施形態は高い値が高い等級を示すことを支援する。与えられた基準で、アプリケーション割当ストリームIDには基準に対するそれらの値の整列された位置に従って等級が割当される。例えば、頻度710が基準として使用される場合、最も高い頻度を有するアプリケーション割当ストリームIDには等級1(rank 1)が割当され、次に高い頻度を有するアプリケーション割当ストリームIDには等級2(rank 2)が割当され、最も低い周期を有するアプリケーション割当ストリームIDまで等級が低下する。等級は以下の表1及び表2を参照してより詳細に説明する。図4のソフトウェアストリーム(410−1〜410−n)が等級付けられた場合、マッパー525は図4のソフトウェアストリーム(410−1〜410−n)を装置ストリーム(420−1〜420−m)にマッピングする。
マッパー525は、図4のソフトウェアストリーム(410−1〜410−n)を2つのサブセットに分割することによって、図4のマッピング425を生成する。第1サブセットのソフトウェアストリームは一対一マッピングで装置ストリームに割当される。第2サブセットのソフトウェアストリームは1つの統合装置ストリーム(single consolidated device stream)に全て割当される。即ち、第1サブセットのソフトウェアストリームは割当された固有の装置ストリームを獲得する一方、第2サブセットの全てのソフトウェアストリームは1つの装置ストリームを共有する。第2サブセットの全てのソフトウェアストリームが単一装置ストリームを共有するため、これは第1サブセットがm−1個のソフトウェアストリームを含むことを意味する。ここで、mは図1のSSD120によって支援される図4の装置ストリーム(420−1〜420−m)の数である。
図4のソフトウェアストリーム(410−1〜410−n)のサブセットはランカー520によって決定されたソフトウェアストリーム(410−1〜410−n)に対する等級に基づいて決定される。例えば、図1のSSD120によって支援される図4のm個の装置ストリーム(420−1〜420−m)が存在すると仮定すると、(選択された1つ以上の基準によって等級付けられるように)m−1個の最上位等級のソフトウェアストリームは第1サブセットに含まれ、低い等級のソフトウェアストリームの全ては第2サブセットに含まれる。このような割当は各々固有装置ストリームが割当された最高等級を有するソフトウェアストリーム及び統合された装置ストリームを共有する低い等級のソフトウェアストリームを引き起こす。
m−1個の特定ソフトウェアストリームが第1サブセットに含まれるものと識別されない場合(例えば、等級m−1が同一である場合)、(選択事項が全て同一の等級を有するため)、適切な解決策が第1サブセットのための最終ソフトウェアストリームを選択するために使用される。例えば、m個のソフトウェアストリームが全て最上位等級を有すると仮定する(やむを得ない場合に可能であるシナリオ)。m個のソフトウェアストリームは全て同一である等級を有するため、m個のソフトウェアストリームの中のm−1が第1サブセットのために選択され、1つの選択されないストリームは第2サブセットの一部になることによって、統合装置ストリームを共有することが委ねられる。
全ての装置ストリームが同等である場合、どの装置ストリームが第2サブセットのソフトウェアストリームに対して統合されたストリームとして使用されるか、或いは第1サブセットのm−1個のソフトウェアストリームがm−1個の装置ストリームに対してどのようにマッピングされるかに差異はない。しかし、装置ストリームが区分可能である場合、マッピングが重要になる。例えば、最も高い優先順位装置ストリーム(the highest priority device stream)が統合装置ストリームとして使用される(その装置ストリームが多数のソフトウェアストリームに亘って共有されるためである)。残りの装置ストリームは使用された基準に基づいてそれらのランク付けに従って第1サブセットのソフトウェアストリームに割当される(最上位等級を有するソフトウェアストリームは使用可能な最も高い優先順位装置ストリームを受信し、2番目に高い等級を有するソフトウェアストリームは使用可能な2番目に高い優先順位装置ストリームを受信する)。或いは、統合装置ストリームが基準に従って低い等級を有する多数のソフトウェアストリームの間で共有されるため、統合装置ストリームは使用可能な最も低い優先順位装置ストリームとして選択され、第1サブセットのソフトウェアストリームは基準に従うソフトウェアストリームの等級に従って最も高い優先順位装置ストリームにマッピングされる。本実施形態はソフトウェアストリームから装置ストリームへの適切なマッピング技法を支援する。
上述した説明は1つの装置ストリームのみが統合装置ストリームとして動作することを説明したが、他の実施形態が可能である。例えば、複数の装置ストリームが統合装置ストリームとして使用される。このような実施形態は図4のソフトウェアストリーム(410−1〜410−n)の数が図4の装置ストリーム(420−1〜420−m)の数を相当に超過する場合に有用である。ソフトウェアストリーム(410−1〜410−n)の大部分を1つの統合装置ストリームに統合することはソフトウェアストリームの全体の性能低下を誘発する。複数の統合装置ストリームを使用することによって、統合されたソフトウェアストリームの性能が向上する(但し、固有の装置ストリームに割当されるソフトウェアストリームの数が減少する)。
どれくらい多くの装置ストリームが統合装置ストリームとして使用されるかは適切な技法を使用して判別される。例えば、図7の頻度710を基準として使用する場合、上限値(upper limit)が1つの統合装置ストリームに割当されるソフトウェアストリームの数として設定される。第2サブセットのソフトウェアストリームの数がこのような上限値より大きい場合、統合装置ストリームに割当されたソフトウェアストリームの数がこのような上限値以下に維持されるために必要であるくらい追加的な装置ストリームが統合装置ストリームとして使用される。同一の概念が図7の他の基準705を使用して適用される。例えば、図7の累積データサイズ715を基準として使用する場合、1つの統合装置ストリームを使用して書き込まれる累積データの総量に対する上限値が割当される。或いは、図7のサービス品質725を基準として使用する場合、最大全体レイテンシが図6のウインドウ605の持続期間に基づいて統合装置ストリームのために設定される。統合装置ストリームに割当されたコマンドの全体数が、統合装置ストリームに対する全体レイテンシがこのような最大全体レイテンシよりも大きいことを意味する場合、追加的な統合装置ストリームが使用される。
更に、適切な装置ストリームが統合装置ストリーム使用のために選択される。例えば、統合装置ストリームが多数のソフトウェアソースに関連するコマンドを処理するため、統合装置ストリームが1つのソフトウェアストリームに関連するコマンドを処理する他の装置ストリームよりもより多くのコマンドを含むものと予想することが妥当である。即ち、高い優先順位を有する装置ストリームを統合装置ストリームとして選択することが有利である(これは統合装置ストリームが単に1つのソフトウェアストリームに関連するコマンドを処理する装置ストリームよりも相対的に遅くコマンドを処理する事実を補償するためである)。このような選択は(たとえQoSが高い優先順位の装置ストリームを統合装置ストリームに選択するための唯一の理由ではなくとも)、ストリームがQoS保証を提供する場合に特に有利である。
基準を組合せることもまた可能である。例えば、図4のマッピング425のためにストリームを等級決定するために使用される基準が遊休時間730を使用するが、どれくらい多くの統合装置ストリームを使用するかを決定するために使用される基準はウインドウ605の間に統合装置ストリームに割当されたコマンドの最大数である。本実施形態はどれくらい多くの統合装置ストリームを使用するかを判別するために基準の使用を支援する(以下の図8〜図9Bを参照して説明するように、ソフトウェアストリーム(410−1〜410−n)の等級決定に複数の基準を使用することが可能である)。
上述したように、本実施形態は、図3のホストインターフェイスロジック305内に具現される。このような実施形態で、その具現は図1のSSD120に含まれる。SSD120が図4のマッピング425を直接的に管理するため、どの装置ストリームがどの特定ソフトウェアストリームに割当されるかを知ることが難しくない。このような実施形態で、伝送器530及び装置ストリーム識別子IDアダー535は必要ではない(技術的に、ホストインターフェイスロジック305はデータを要請したアプリケーション又はオペレーティングシステムのスレッドに情報を再び伝送する伝送器を含むことができる。但し、伝送器530は図1のSSD120の従来の伝送器として動作する)。
但し、本実施形態が図1のメモリコントローラ125、図1のストレージコントローラ130、又はライブラリルーチンで具現される場合、図1のSSD120は図4のマッピング425へのアクセスを必須的に含まない。一部の実施形態で、図1のSSD120がマッパー525によって判別されるようにマッピングを遂行するように伝送器530は図4のマッピング425を伝送する。しかし、図4のマッピング425を図1のSSD120に伝送する代わりに、他の実施形態は装置ストリームIDアダー535を使用することによってどの装置ストリームにどの特定コマンドが割当されるかを図1のSSD120に通知する。装置ストリームIDアダー535は図4の関連する装置ストリーム(420−1〜420−m)を指称する図4のタグ415と類似な追加タグを含む。このような方式で図1のSSD120は図4のどの装置ストリーム(420−1〜420−m)がどの特定コマンド処理のために使用されるかが分かる。
本実施形態が具現されることに拘らず、図4のマッピング425は自動的に又は受動的に再生成される。例えば、図4のマッピング425は、コマンドが図6のウインドウ605に進入し、ウインドウ605から進出することによって更新される。これはソフトウェアストリーム(410−1〜410−n)に対する統計に影響を及ぼし、順に図4のマッピング425の再生成を開始する。或いは図6のウインドウ605が一定の間隔で使用される不連続ウインドウである場合、図6の不連続ウインドウ605が閉じられる時はいつでも、図4のマッピング425は自動的に再生成されて統計コレクター515によって収集された新しい統計を反映する。
一方、受動的再生成が開始される時まで図4のマッピング425が維持される。受動的再生成を達成するために、図3のホストインターフェイスロジック305、図1のメモリコントローラ125、図1のストレージコントローラ130、又はライブラリルーチンは、受動的再生成を始めるコマンドを受信し、統計をクリアーし、新しい統計を収集する支援(support)を含む。このようなコマンドを処理する支援はファームウェア形態(図3のホストインターフェイスロジック305に図示せず)又はソフトウェア形態(図1のメモリコントローラ125内、図1のストレージコントローラ130内、又はライブラリルーチン)で具現される。
図8は、図5のランカー520の詳細を示す図である。上述したように、ランカー520は選択された1つ以上の基準に基づいてソフトウェアストリーム(410−1〜410−n)を等級決定する。図8は、ランカー520が、1つ以上の基準805、基準値810、及び比較器815を含むものとして示す。基準805はソフトウェアストリームを等級決定するために使用される基準を識別する。図5の統計コレクター515が1つの基準に対する統計のみを収集する場合、ランカー520はどのような基準が使用されるかを分かる必要がなく、この場合、基準805は省略されるため、基準805を点線で示す。しかし、図5の統計コレクター515が1つの基準に対する統計のみを収集しても、ランカー520はどの基準が使用されるかを分かる必要があり、このような情報は等級順序に影響を及ぼす。例えば、図7の頻度710は対応する高い頻度を有するソフトウェアストリームに対してより高い等級を提案するが、図7の遊休時間730は対応する低い遊休時間を有するソフトウェアストリームに対してより高い等級を提案する。
ランカー520が1つの基準のみを使用して動作する場合、全てのランカー520は各ソフトウェアストリームに対応する基準に対する値に依存してソフトウェアストリーム(410−1〜410−n)を順に配置しなければならない。しかし、ランカー520は図4のソフトウェアストリーム(410−1〜410−n)を等級決定するために1つ以上の基準を使用する。
一実施形態で、ランカー520は2つ以上の基準を使用して図4のソフトウェアストリーム(410−1〜410−n)を等級決定する。このような実施形態で、ランカー520は基準値810(threshold)及び比較器815(comparator)を含む。値が基準値810を超過する場合に1つの基準が使用され、第1基準に対する値が基準値810を超過しない場合に他の基準が使用される。比較器815はソフトウェアストリームを等級決定するためにどのような基準が使用されるかを判別するために使用される。
図9Aは、図5のランカーがソフトウェアストリームを整列(rank)させる他の方法を示す図であり、このような等級決定の手続を示す。図9Aで、比較器815はソフトウェアストリーム(410−1〜410−n)を等級決定するために使用される2つの基準に対する値(905−1、905−2)及び基準値810を受信する。例えば、比較器815は基準値810及び第1値905−1(基準値810に関連する基準に対する値としてここでは任意に選択される)を比較する。第1値905−1が基準値810よりも大きい場合、比較器815は第1値905−1を(選択された値910として)選択して図4のソフトウェアストリーム(410−1〜410−n)を等級決定するために使用する。
一例はこのようなシナリオで図5のランカー520の動作を説明するために役に立つ。選択された第1基準が図7の累積データサイズ715であり、第2基準は図7の頻度710であると仮定する。また、図4のソフトウェアストリーム(410−1〜410−n)は以下の表1に示した基準に対する統計結果になるものと仮定する。
Figure 0006851951
基準値810が1MBに設定された場合、4つのソフトウェアストリームは4、1、3、2の順に等級決定される。ソフトウェアストリーム1及び4の各々は1MBを超過する累積データサイズを有し、ソフトウェアストリーム4は最も大きい累積データサイズを有する(ソフトウェアストリーム1がソフトウェアストリーム4よりもより多くの関連するコマンドを有する事実は関連がない)。一方、ソフトウェアストリーム2及び3は1MBよりも小さい累積データサイズを有し、このようなストリームはそれらの周期に基づいて等級決定される。ソフトウェアストリーム3は最も小さい累積データを書き込むにも拘らず、より多くの関連するコマンド有するため、ソフトウェア2よりも高く等級決定される。
上述した説明は2つの基準を使用する場合を説明しているが、本実施形態はソフトウェアストリームの最終等級を決定するために多数の基準を使用することを支援する。即ち、第1基準が第1基準値を超過する値を有するソフトウェアストリームを等級決定するために使用され、残りのソフトウェアストリームの第2基準に対する値が第2基準値よりも大きい場合、第2基準は残りのソフトウェアストリーム(即ち、第1基準に対する値が第1基準値を超過しないソフトウェアストリーム)を等級決定するために使用される。また、このような説明は特定基準値を超過する値を有するソフトウェアストリームを説明しているが、本実施形態は等級決定の目的のために、(下限境界の代わりに)上限境界(upper bound)として1つ以上の基準値を使用することを支援する。例えば、遊休時間が100msより小さい場合、遊休時間が少なくとも100msであるソフトウェアストリームに対する等級決定基準として使用される図7の頻度710と共に、図7の遊休時間730が等級決定基準として使用される。
図8を再び参照すると、他の実施形態として、ランカー520は加重値の合計(weighted sum)を遂行することによって複数の基準を使用する。このような実施形態で、ランカー520は算術論理ユニット820(ALU:arithmetic logic unit)及び加重値(825−1〜825−l)を含む。加重値(825−1〜825−l)は加重値の合計に含まれる別の基準の各々に適用される加重値を示し、ALU820は加重値の合計を演算するために必須的な計算を遂行する。即ち、加重値(825−1〜825−l)は加重値の合計を演算するために使用される基準の相対的な重要度(relative importance)を示す。低い等級が高い重要度を示す場合、加重値(825−1〜825−l)は加重値の合計で基準に対する高い重要度を示すために小さい値を同様に使用する。
加重値の合計を演算するために、ランカー520は各基準に従って個別的に図4のソフトウェアストリーム(410−1〜410−n)を優先等級決定する。その後に、加重値を各ソフトウェアストリームの等級に掛け算して最終の加重値の合計を生成する。低い数字は高い等級を示す(等級1は最も高い等級)ため、小さい加重値はより重要な基準を指称するために使用される。加重値(825−1〜825−l)が1.0に合計されることが有用である(但し、必須ではない)。加重値(825−1〜825−l)の中の唯1つのみが0でない正数値を有し、他の加重値(825−1〜825−l)が0の値を有する場合、1つの基準に従って図4のソフトウェアストリーム(410−1〜410−n)を等級決定することは複数の基準に従って図4のソフトウェアストリーム(410−1〜410−n)を等級決定することと同一である。加重値の合計は整数結果でなくてもよい。加重値の合計の結果が再びランク付けされて図4のソフトウェアストリーム(410−1〜410−n)に対する最終等級を生成するため、このような結果は許容される。
図9Bは、図5のランカーがソフトウェアストリームを整列(rank)させる他の方法を示す図であり、このような等級決定の手続を示す。図9Bで、図8のALU820は図4のソフトウェアストリーム(410−1〜410−n)を等級決定するために使用される2つの基準に対する値(905−1、905−2)を加重値(825−1、825−2)と共に受信する。次に、図8のALU820は、第1値901−1と第1加重値825−1との積を第2値905−2と第2加重値825−2との積に加算することによって選択された値910を演算する。選択された値910は図4のソフトウェアストリーム(410−1〜410−n)を等級決定するために使用される値になる。
また、一例はこのようなシナリオで図5のランカー520の動作を説明するために役に立つ。選択された第1基準は図7の累積データサイズ715であり、第2基準は図7の頻度710であると仮定する。図4のソフトウェアストリーム(410−1〜410−n)は以下の表2に示した基準に対する統計結果になるものと仮定する。
Figure 0006851951
事項を単純化するために、表2は、累積データサイズ及び頻度に関する4つのソフトウェアストリームに対する等級を示す。
図7の累積データサイズ715に関連する加重値が1に設定され、図7の頻度710に関連する加重値が0に設定された場合、等級は等級1に記載した列に示したようになる。仮に加重値が入れ替えられた場合、等級は等級2に記載した列に示したようになる。
累積データサイズが頻度より3倍くらい重要であるものと看做されると仮定する。結果的な加重値は累積データに対して0.25であり、周期に対して0.75である(低い数字は高い等級を意味し、加重値の小さい値は大きい重要度を意味することに留意する)。ソフトウェアストリームに対する等級の加重値の合計は各々1.25、3、2.5、及び3.25である。これはソフトウェアストリームが1、3、2、4の順序に等級が決定されることを意味する。これは等級2に記載された列と同一の等級であるが、このような事実は偶然の一致である。
図8〜図9Bは2つの基準を使用する等級決定が遂行される方法を示した。本実施形態は図示した手続の単純一般化によって2以上の基準を使用することを支援する。例えば、図8の3つ以上の加重値(825−1〜825−l)は0ではない値(non−zero values)に与えられるか、或いは図8の複数の基準値810が図4のソフトウェアストリーム(410−1〜410−n)を等級決定する場合、どのような基準を使用するかを決定するために設定される。
図10A及び図10Bは、本発明の一実施形態による図4のマッピング425を生成する例示的な手続を示すフローチャートである。図10Aの1005段階で、図3のホストインターフェイスロジック305は図6のウインドウ605を識別して図4のソフトウェアストリーム(410−1〜410−n)に関する統計の収集に使用する(以下の図10A〜図13で、図3のホストインターフェイスロジック305の参照は、本実施形態が具現されることに従って図1のストレージコントローラ130又は図1のメモリコントローラ125の参照によって代替される)。1010段階で、ホストインターフェイスロジック305は図4の複数のコマンド(405−1〜405−k)を受信する。コマンドの中の一部は図6のウインドウ605がオープンされる時に受信される。1015段階で、統計コレクター515は図4の複数のコマンド(405−1〜405−k)(少なくとも、図6のウインドウ605がオープンされる時に受信されたコマンド)に基づいて図7の基準705に対する値を決定する。
1020段階で、図5のランカー520は図5の統計コレクター515によって決定された値に基づいて図4のソフトウェアストリーム(410−1〜410−n)のサブセットを識別する。1025段階で、図5のマッパー525は図4のソフトウェアストリーム(410−1〜410−n)を図4の装置ストリーム(420−1〜420−m)にマッピングするための図4のマッピング425を生成する。
1030段階で、図3のホストインターフェイスロジック305は図4の追加的なコマンド(405−1〜405−k)を受信する。1035段階で、図5のマッパー525は図4のマッピング425を使用して図4の追加的なコマンド(405−1〜405−k)の各々を図4の装置ストリーム(420−1〜420−m)に割当する。
図10Bの1040段階で、図1のSSD120は図4の割当された装置ストリーム(420−1〜420−m)を使用して図4の追加的なコマンド(405−1〜405−k)を処理する。1045段階で、図1のSSD120は図4の追加的なコマンド(405−1〜405−k)に対する処理結果を返す。
1050段階で、図3のホストインターフェイスロジック305は図4のマッピング425を自動的に生成するか否かを判別する(図6のウインドウ605がスライディングウインドウであるか、或いはSSD120が図6の周期的な不連続ウインドウ605に新しい統計を反復的に収集するように構成されるためである)。マッピング425を生成する場合、制御は図10Aの1005段階に戻って図4のマッピング425を生成する手続を再び開始する。マッピング425を生成しない場合、1055段階で、図3のホストインターフェイスロジック305は図1のマシン105の使用者又は図1のマシン105によって発行されるマッピング425を再生成するコマンドを受信したか否かを判別する。コマンドを受信した場合、制御は図10Aの1005段階に戻って図4のマッピング425を生成する手続を再び開始する。コマンドが受信されない場合、1060段階で、図3のホストインターフェイスロジック305は図4のマッピング425を維持し、その後に、手続は図10Aの1030段階に戻る(或いは、図4の追加的なコマンド(405−1〜405−k)が受信されない場合、手続はこの段階で単純に終了する)。
図11は、本発明の一実施形態による図5の統計コレクター515が図7の基準705に対する値を決定する例示的な手続を示すフローチャートである。図11の1105段階で、図5の統計コレクター515はコマンドが図6のウインドウ605に進入し、ウインドウ605から進出することによって、ソフトウェアストリーム(410−1〜410−n)に対する値を調整する。即ち、コマンドが図6のウインドウに進入することによって、図5の統計コレクター515は図4のソフトウェアストリーム(410−1〜410−n)に対する値を増加させ、コマンドが図6のウインドウ605から進出することによって、図5の統計コレクター515は図4のソフトウェアストリーム(410−1〜410−n)に対する値を減少させる。
或いは、1110段階で、図5の統計コレクター515はソフトウェアストリーム(410−1〜410−n)に対する値をリセットする。その後、1115段階で、図5の統計コレクター515は図6のウインドウ605を通じて図4のソフトウェアストリーム(410−1〜410−n)に対する新しい統計を収集する。
図12は、本発明の一実施形態による図5のランカー520が図4のどのソフトウェアストリーム(410−1〜410−n)が図4のどの装置ストリーム(420−1〜420−m)にマッピングされるかを決定する例示的な手続を示すフローチャートである。図12を参照すると、1205段階で、図5のランカー520は図5の統計コレクター515によって収集された統計に従って図4のソフトウェアストリーム(410−1〜410−n)を等級決定する。1210段階で、図5のランカー520は多様な基準に対する図8の加重値(825−1〜825−l)を決定する。1215段階で、ランカー520は初期等級及び図8の加重値(825−1〜825−l)を使用して図4のソフトウェアストリーム(410−1〜410−n)の最終等級を決定する。点線1220で示したように、1210段階及び1215段階は省略され得る。また、図8を参照して説明したように、図8の加重値(825−1〜825−l)の中の1つにのみ0ではない正の値が与えられた場合、1つの基準に従う等級決定が1210段階及び1215段階を通じて効率的に達成される。
或いは、図5のランカー520が図8の基準値810及び比較器815を使用して複数の基準を使用する場合、1225段階で、図5のランカー520は第1基準に対する図8の基準値810(仮に図8の1つの基準値810が使用される場合、追加的な基準に対する基準値)を決定する。1230段階で、図4のソフトウェアストリーム(410−1〜410−n)は第1基準に対する値が図8の基準値810を超過するソフトウェアストリームに対して第1基準に従って等級決定される。1235段階で、図4のソフトウェアストリーム(410−1〜410−n)は第1基準が図8の基準値810を超過しないソフトウェアストリームに対して第2基準に従って等級決定される。
図5のランカー520が最終等級決定をいかに達成するかに拘らず、1240段階で、図5のランカー520は第1サブセットのために最上位等級のソフトウェアストリーム(the highest ranking software streams)を選択し、1245段階で、図5のランカー520は第2サブセットのために残る全てのソフトウェアストリーム(remaining software streams)を選択する。
図13は、本発明の一実施形態による図5のマッパー525が図4のソフトウェアストリーム(410−1〜410−n)を図4の装置ストリーム(420−1〜420−m)にマッピングする例示的な手続を示すフローチャートである。図13を参照すると、1305段階で、図5のマッパー525は第1サブセット内の各ソフトウェアストリームを固有装置ストリームにマッピングする。1310段階で、図5のマッパー525は第2サブセット内の全てのソフトウェアストリームを統合装置ストリームにマッピングする。図5を参照して説明したように、必要に応じて、1つ以上の統合装置ストリームが存在する。
図10A〜図13で、本発明の実施形態を図示した。しかし、当業者は一部の段階の順序を変更するか、一部の段階を省略するか、又は図面に示さない接続を含むことによって、他の実施形態が可能であることを理解すべきである。フローチャートのこのような全ての変形は明示的に説明したことに拘らず、本発明の実施形態であると看做される。
以下の説明は、本発明の特定の思想が具現されるマシン又は適切なマシン(machine)の一般的な説明を提供する。1つ以上のマシンは、少なくとも一部で、キーボード、マウス等のような一般的な入力装置からの入力のみならず、他のマシンから受信された命令語、仮想現実環境(virtual reality environment)、生体フィードバック、又は他の入力信号によって制御される。本明細書で使用したように、“マシン(machine)”という用語は、単一マシン、1つ以上の仮想マシン、仮想マシン又は共に作動する装置が通信的に接続されたシステムを広く含むものとして意図する。例示的なマシンは、パーソナルコンピュータ、ワークステーション、サーバー、携帯用コンピュータ、小型コンピュータ、電話機、タブレット等のようなコンピューティング装置のみならず、大衆交通、例えば自動車、汽車、タクシー等のような運送装置を含む。
1つ以上のマシンはプログラム可能又はプログラム不可能なロジック装置又はアレイ、ASIC(Application Specific Integrated Circuit)、内装されたコンピュータ、スマトカード等のような内装されたコントローラを含む。1つ以上のマシンは、ネットワークインターフェイス、モデム、或いは他の通信接続等のように1つ以上の遠隔装置と1つ以上の接続を活用する。装置は、イントラネット、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等のような物理的及び/又は論理的ネットワーク方法によって相互接続される。当業者は、ネットワーク通信が無線周波数(RF:Radio Frequency)、衛星、マイクロウェーブ、IEEE(Institute of Electrical and Electronics Engineers)802.11、ブルートゥース(登録商標)、光、赤外線、ケーブル、レーザー等のような多様な有線又は無線短波長又は長波長搬送波及びプロトコルが活用されることを認知する。
本発明の実施形態は、マシンによってアクセスされる時にマシンに作業を遂行させるか、或いは要約データタイプ又は低レベルハードウェア構成を定義する機能、手続、データ構造、アプリケーションプログラムを含む関連するデータを参照するか又は関連して説明される。関連するデータは、揮発性若しくは不揮発性メモリ(例えば、RAM、ROM)に格納されるか、又はハードドライブ、フロッピー(登録商標)ディスク、光ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージ等を含む関連するストレージ媒体及び他の格納装置に格納される。関連するデータは物理的又は論理的ネットワークを含む伝送環境上で、パケット、直列データ、並列データ、電波信号等のような形態で提供され、圧縮されるか又は暗号化された形式で使用される。関連するデータは分散された環境で使用され、論理的に又は遠隔に装置アクセスのために格納される。
本発明の実施形態は、1つ以上のプロセッサによって実行される命令語を含む類型の非一時的なコンピュータ読み取り可能な記録媒体(tangible、non−transitory machine−readable medium)を含む。命令語は本明細書に記載したような本発明の構成要素を遂行するための命令語を含む。
実施形態を参照して本発明の理論を説明したが、実施形態は本発明の技術的思想から逸脱せずに変形され、他の適切な方式と組合されることはよく理解されるべきである。そして、詳細な説明が特定の実施形態に集中したが、他の構成が考慮される。特に、本明細書で“本発明の実施形態によると”のような表現を使用したが、このような表現は一般的に、参照実施形態の可能性を意味し、本発明が特定の実施形態の構成に限定されることを意味しない。本明細書に記載したように、このような用語は他の実施形態と組合される同一又は他の実施形態を参照する。
上述した実施形態は、本発明を限定するものではない。一部の実施形態を説明したが、当業者は本文の長所及び新しい特徴から逸脱せずに、本発明の可能な多様な変形を容易に遂行することができる。従って、このような変形は本発明の思想内に含まれるように意図される。
本発明の実施形態は、以下のステートメントに制限無しに拡張される。
ステートメント1.本発明の一実施形態によるソリッドステートドライブ(SSD:Solid State Drive)は、データを格納するフラッシュメモリと、前記SSD内の複数の装置ストリームのための支援(support)手段と、複数のコマンドに応答して前記フラッシュメモリへのデータの書込み及び前記フラッシュメモリからのデータの読出しを管理するSSDコントローラと、ホストインターフェイスロジックと、を備え、前記ホストインターフェイスロジックは、ホストから複数のソフトウェアストリームに関連する前記複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する統計コレクターと、前記複数のソフトウェアストリームの各々に対して前記少なくとも1つの基準に対する少なくとも1つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームを前記SSD内の複数の装置ストリームの中の固有装置ストリーム(unique device stream)にマッピングし、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、を含む。
ステートメント2.ステートメント1において、前記複数のコマンドの各々は、前記複数のソフトウェアストリームの中の前記マッピングに応答して対応する装置ストリームが割当される対応する1つのソフトウェアストリームを識別(identifying)するソフトウェアストリーム識別子(ID:identifier)タグを含む。
ステートメント3.ステートメント1において、前記SSDは、前記複数のソフトウェアストリームから追加的な複数のコマンド受信し、前記マッピングに従って前記追加的な複数のコマンドを前記複数の装置ストリームに割当する。
ステートメント4.ステートメント1において、前記ウインドウは、スライディングウインドウであり、前記統計コレクターは、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の前記少なくとも1つの基準に対する少なくとも1つの値を調整する。
ステートメント5.ステートメント1において、前記ウインドウは、不連続ウインドウである。
ステートメント6.ステートメント1において、前記ホストインターフェイスロジックは、異なって命令される時まで前記マッピングを維持し、前記受信機は、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングするコマンドを受信する。
ステートメント7.ステートメント5において、前記ホストインターフェイスロジックは、複数の順次的な不連続ウインドウに対して前記複数のソフトウェアストリームを前記複数の装置ストリームに反復的に再マッピングする。
ステートメント8.ステートメント1において、前記複数のソフトウェアストリームの第1サブセットは、最上位等級を有する複数のソフトウェアストリームを含み、前記最上位等級を有する複数のソフトウェアストリームの数は、前記複数の装置ストリームの数よりも1つ少なく、前記複数のソフトウェアストリームの第2サブセットは、前記複数のソフトウェアストリームの第1サブセットに含まれない全てのソフトウェアストリームを含む。
ステートメント9.ステートメント1において、前記統計コレクターは、前記複数のソフトウェアストリームの各々に対して第1基準に対する第1値及び第2基準に対する第2値を決定する。
ステートメント10.ステートメント9において、前記ランカーは、前記第1基準に対する第1加重値及び前記第2基準に対する第2加重値を含み、前記第1加重値を使用した前記第1値に対する第1等級及び前記第2加重値を使用した前記第2値に対する第2等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する。
ステートメント11.ステートメント9において、前記ランカーは、前記第1基準に対する基準値を含み、前記第1基準に対する基準値よりも大きい第1値を有するソフトウェアストリームに対して前記第1基準に従い、前記第1基準に対する基準値よりも小さい第1値を有するソフトウェアストリームに対して前記第2基準に従って前記複数のソフトウェアストリームを等級決定する。
ステートメント12.本発明の一実施形態によるコンピュータシステムで使用されるドライバーは、ホストから複数のソフトウェアストリームに関連する複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する統計コレクターと、前記複数のソフトウェアストリームの各々に対して前記少なくとも1つの基準に対する少なくとも1つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームをソリッドステートドライブ(SSD:Solid State Drive)内の複数の装置ストリームの中の固有装置ストリームにマッピングし、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、前記複数のコマンドの各々に関連するソフトウェアストリームに対応する装置ストリームに対する装置ストリーム識別子(ID:identifier)を追加的な複数のコマンドの各々に追加する装置ストリームIDアダーと、前記追加的な複数のコマンドの各々を前記SSDに伝送する伝送器と、を備える。
ステートメント13.ステートメント12において、前記ドライバーは、前記複数のソフトウェアストリームから前記追加的な複数のコマンドを受信し、前記マッピングに従って前記追加的な複数のコマンドを前記複数の装置ストリームに割当する。
ステートメント14.ステートメント12において、前記ウインドウは、スライディングウインドウ(sliding window)であり、前記統計コレクターは、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の前記少なくとも1つの基準に対する少なくとも1つの値を調整する。
ステートメント15.ステートメント12において、前記ウインドウは、不連続ウインド(ウdiscrete window)である。
ステートメント16.ステートメント15において、前記ドライバーは、異なって命令される時まで前記マッピングを維持し、前記受信機は、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングするコマンドを受信する。
ステートメント17.ステートメント15において、前記ドライバーは、複数の順次的な不連続ウインドウに対して前記複数のソフトウェアストリームを前記複数の装置ストリームに反復的に再マッピングする。
ステートメント18.ステートメント12において、前記複数のソフトウェアストリームの第1サブセットは、最上位等級を有する複数のソフトウェアストリームを含み、前記最上位等級を有する複数のソフトウェアストリームの数は、前記複数の装置ストリームの数よりも1つ少なく、前記複数のソフトウェアストリームの第2サブセットは、前記複数のソフトウェアストリームの第1サブセットに含まれない全てのソフトウェアストリームを含む。
ステートメント19.ステートメント12において、前記統計コレクターは、前記複数のソフトウェアストリームの各々に対して第1基準に対する第1値及び第2基準に対する第2値を決定する。
ステートメント20.ステートメント19において、前記ランカーは、前記第1基準に対する第1加重値及び前記第2基準に対する第2加重値を含み、前記第1加重値を使用した前記第1値に対する第1等級及び前記第2加重値を使用した前記第2値に対する第2等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する。
ステートメント21.ステートメント19において、前記ランカーは、前記第1基準に対する基準値を含み、前記第1基準に対する基準値よりも大きい第1値を有するソフトウェアストリームに対して前記第1基準に従い、前記第1基準に対する基準値よりも小さい第1値を有するソフトウェアストリームに対して前記第2基準に従って前記複数のソフトウェアストリームを等級決定する。
ステートメント22.本発明の一実施形態によるコンピュータシステムで使用されるデータストリームの統合方法は、複数のソフトウェアストリームに関連し、複数の装置ストリームを含むソリッドステートドライブ(SSD:Solid State Drive)を使用して処理される複数のコマンドを受信する段階と、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する段階と、前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別(identifying)する段階と、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームを前記SSD内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームに対応付けるマッピングを生成する段階と、前記マッピングを生成した後に、前記複数のソフトウェアストリームに関連する第2複数のコマンドを受信する段階と、前記マッピングに応答して前記複数の装置ストリームの中の1つに前記複数のコマンドの各々を割当する段階と、前記割当された装置ストリームを使用して前記SSDで前記第2複数のコマンドの各々を処理する段階と、を有する。
ステートメント23.ステートメント22において、前記方法は、前記複数のソフトウェアストリームに関連する前記複数のコマンドの処理に応答して前記SSDから結果を返す段階を更に含む。
ステートメント24.ステートメント22において、前記複数のソフトウェアストリームに関連する前記複数のコマンドの各々は、ソフトウェアストリーム識別子(ID:identifier)タグを含み、前記SSDからの前記結果の各々は、前記複数のソフトウェアストリームに関連する前記複数のコマンドの中の対応する1つからの前記ソフトウェアストリームIDタグを含む。
ステートメント25.ステートメント22において、前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階は、ウインドー内の少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階を含む。
ステートメント26.ステートメント25において、前記ウインドウは、スライディングウインドウである。
ステートメント27.ステートメント26において、前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する段階は、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の少なくとも1つの基準に対する少なくとも1つの値を調整する段階を含む。
ステートメント28.ステートメント25において、前記ウインドウは、不連続ウインドウである。
ステートメント29.ステートメント28において、前記方法は、前記第2複数のコマンドを含む第2不連続ウインドウを識別する段階と、前記第2不連続ウインドウの間に前記第2複数のコマンドに応答して前記少なくとも1つの基準に対する少なくとも1つの第2値を決定する段階と、前記少なくとも1つの基準に対する少なくとも1つの第2値に応答して前記複数のソフトウェアストリームの第3及び第4サブセットを識別する段階と、前記複数のソフトウェアストリームの第3サブセット内の各ソフトウェアストリームを前記SSD内の前記複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第4サブセット内の全てのソフトウェアストリームを前記SSD内の前記複数の装置ストリームの中の統合装置ストリームに対応付ける第2マッピングを生成する段階と、を更に含む。
ステートメント30.ステートメント28において、前記方法は、前記不連続ウインドウがクローズされた後に前記マッピングを維持する段階と、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングする要請を受信する段階と、第2不連続ウインドウを識別し、少なくとも1つの第2値を決定し、第3及び第4サブセットを識別し、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングする要請に応答して第2マッピングを生成する段階を遂行する段階と、を更に含む。
ステートメント31.ステートメント22において、前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階は、前記少なくとも1つの基準に対する少なくとも1つの値に従って前記複数のソフトウェアストリームを等級決定する段階と、前記複数のソフトウェアストリームの数が前記複数の装置ストリームの数よりも1つ小さい最上位等級を有するソフトウェアストリームを含むように前記複数のソフトウェアストリームの第1サブセットを選択する段階と、前記複数のソフトウェアストリームの中から、前記複数のソフトウェアストリームの第1サブセット内に含まれない全てのソフトウェアストリームを含むように前記複数のソフトウェアストリームの第2サブセットを選択する段階と、を含む
ステートメント32.ステートメント31において、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する段階は、前記複数のソフトウェアストリームの各々に対して第1基準に対する第1値及び第2基準に対する第2値を決定する段階を含み、前記少なくとも1つの基準に対する少なくとも1つの値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記複数のソフトウェアストリームの各々に対して前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリームを等級決定する段階を含む。
ステートメント33.ステートメント32において、前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記第1基準に対する第1加重値及び前記第2基準に対する第2加重値を決定する段階と、前記第1加重値を使用した前記第1値に対する第1等級及び前記第2加重値を使用した前記第2値に対する第2等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する段階と、を含む。
ステートメント34.ステートメント32において、前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記第1基準に対する基準値を決定する段階と、前記第1基準に対する基準値よりも大きい第1値を有するソフトウェアストリームに対して前記第1基準に従い、前記第1基準に対する基準値よりも小さい第1値を有するソフトウェアストリームに対して前記第2基準に従って前記複数のソフトウェアストリームを等級決定する段階と、を含む。
ステートメント35.本発明の一実施形態によるデータストリームの統合方法を、マシンによって実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、記録された非一時的な命令により、複数の装置ストリームを含むソリッドステートドライブ(SSD:Solid State Drive)を使用して処理される複数のコマンドを受信する段階と、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する段階と、前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階と、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームを前記SSD内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの前記第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームに対応付けるマッピングを生成する段階と、前記マッピングを生成した後に、前記複数のソフトウェアストリームに関連する第2複数のコマンドを受信する段階と、前記マッピングに応答して前記複数の装置ストリームの中の1つに前記複数のコマンドの各々を割当する段階と、前記割当された装置ストリームを使用して前記SSDで前記第2複数のコマンドの各々を処理する段階と、を実行させる。
ステートメント36.ステートメント35において、前記記録媒体は、前記複数のソフトウェアストリームに関連する前記複数のコマンドの処理に応答して前記SSDから結果を返す段階を実行させる非一時的な命令語を更に含む。
ステートメント37.ステートメント35において、前記複数のソフトウェアストリームに関連する前記複数のコマンドの各々は、ソフトウェアストリーム識別子(ID:identifier)タグを含み、前記SSDからの前記結果の各々は、前記複数のソフトウェアストリームに関連する前記複数のコマンドの中の対応する1つからの前記ソフトウェアストリームIDタグを含む。
ステートメント38.ステートメント35において、前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階は、ウインドウ内の少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階を含む。
ステートメント39.ステートメント38おいて、前記ウインドウは、スライディングウインドウである。
ステートメント40.ステートメント39において、前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する段階は、前記複数のコマンドの各々が、前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の少なくとも1つの基準に対する少なくとも1つの値を調整する段階を含む。
ステートメント41.ステートメント38において、前記ウインドウは、不連続ウインドウである。
ステートメント42.ステートメント41において、前記記録媒体は、前記第2複数のコマンドを含む第2不連続ウインドウを識別する段階と、前記第2不連続ウインドウの間に前記第2複数のコマンドに応答して前記少なくとも1つの基準に対する少なくとも1つの第2値を決定する段階と、前記少なくとも1つの基準に対する少なくとも1つの第2値に応答して前記複数のソフトウェアストリームの第3及び第4サブセットを識別する段階と、前記複数のソフトウェアストリームの第3サブセット内の各ソフトウェアストリームを前記SSD内の前記複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第4サブセット内の全てのソフトウェアストリームを前記SSD内の前記複数の装置ストリームの中の統合装置ストリームに対応付ける第2マッピングを生成する段階と、を実行させる非一時的な命令語を更に含む。
ステートメント43.ステートメント41において、前記記録媒体は、前記不連続ウインドウがクローズされた後に前記マッピングを維持する段階と、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングする要請を受信する段階と、前記第2不連続ウインドウを識別し、少なくとも1つの第2値を決定し、第3及び第4サブセットを識別し、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングする要請に応答して第2マッピングを生成する段階を遂行する段階と、を実行させる非一時的な命令語を更に含む。
ステートメント44.ステートメント35において、前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階は、前記少なくとも1つの基準に対する少なくとも1つの値に従って前記複数のソフトウェアストリームを等級決定する段階と、前記複数のソフトウェアストリームの数が前記複数の装置ストリームの数よりも1つ小さい最上位等級を有するソフトウェアストリームを含むように前記複数のソフトウェアストリームの第1サブセットを選択する段階と、前記複数のソフトウェアストリームの中から、前記複数のソフトウェアストリームの第1サブセット内に含まれない全てのソフトウェアストリームを含むように前記複数のソフトウェアストリームの第2サブセットを選択する段階と、を含む。
ステートメント45.ステートメント44において、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも1つの基準に対する少なくとも1つの値を決定する段階は、前記複数のソフトウェアストリームの各々に対して第1基準に対する第1値及び第2基準に対する第2値を決定する段階を含み、前記少なくとも1つの基準に対する少なくとも1つの値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記複数のソフトウェアストリームの各々に対して前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリームを等級決定する段階を含む。
ステートメント46.ステートメント45において、前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記第1基準に対する第1加重値及び前記第2基準に対する第2加重値を決定する段階と、前記第1加重値を使用した前記第1値に対する第1等級及び前記第2加重値を使用した前記第2値に対する第2等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する段階と、を含む。
ステートメント47.ステートメント45において、前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記第1基準に対する基準値を決定する段階と、前記第1基準に対する基準値よりも大きい第1値を有するソフトウェアストリームに対して前記第1基準に従い、前記第1基準に対する基準値よりも小さい第1値を有するソフトウェアストリームに対して前記第2基準に従って前記複数のソフトウェアストリームを等級決定する段階と、を含む。
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
105 マシン
110 プロセッサ
115 メモリ
120 ソリッドステートドライブ(SSD)(ストレージ装置)
125 メモリコントローラ
130 ストレージコントローラ
205 クロック
210 ネットワークコネクター
215 バス
220 使用者インターフェイス
225 I/Oエンジン
305 ホストインターフェイスロジック
310 SSDコントローラ
315−1〜315−8 フラッシュメモリチップ
320−1〜320−4 チャンネル
325 フラッシュ変換階層
405−1〜405−k コマンド
410−1〜410−n ソフトウェアストリーム
415 タグ
420−1〜420−m 装置ストリーム
425 マッピング
505 受信機
510 タイマー
515 統計コレクター
520 ランカー
525 マッパー
530 伝送器
535 装置ストリームIDアダー
605 ウインドウ
705、805 基準
710 頻度
715 累積データサイズ
720 順次書込みの数
725 サービス品質
730 遊休時間
810 基準値
815 比較器
820 算術論理ユニット(ALU)
825−1〜825−l 加重値
905−1 第1値
905−2 第2値
910 選択された値

Claims (20)

  1. ソリッドステートドライブ(SSD)であって、
    データを格納するフラッシュメモリと、
    前記SSD内の複数の装置ストリームのための支援手段と、
    複数のコマンドに応答して前記フラッシュメモリへのデータの書込み及び前記フラッシュメモリからのデータの読出しを管理するSSDコントローラと、
    少なくとも回路を使用して実装されたホストインターフェイスロジックと、を備え、
    前記ホストインターフェイスロジックは、
    複数のソフトウェアストリームの各々を識別するためのソフトウェアストリーム識別子タグを含む前記複数のコマンドをホストから受信する受信機と、
    前記複数のコマンドによる前記ホストの作業負荷を分析するためのウインドウの時間を測定するタイマーと、
    前記複数のコマンドに応答して、前記ウインドウの間前記複数のソフトウェアストリームの各々に対して選択された少なくとも1つの基準に対する少なくとも1つの値を決定して前記作業負荷の統計を演算して収集する統計コレクターと、
    前記ウインドウの間の前記複数のソフトウェアストリームの各々に対して選択された少なくとも1つの基準に対する少なくとも1つの値に従って演算された統計を使用して前記作業負荷を表す前記複数のソフトウェアストリーム等級決定するランカーと、
    前記等級に基づいて前記複数のソフトウェアストリームをサブセットに分割して前記複数の装置ストリームにマッピングするマッパーと、を含み、
    前記マッパーは、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームを前記SSD内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームに対応付けるように作動するマッピングを設定すことを特徴とするソリッドステートドライブ。
  2. 前記SSDは、前記複数のソフトウェアストリームから追加的な複数のコマンド受信し、前記マッピングに従って前記追加的な複数のコマンドを前記複数の装置ストリームに割当するように作動することを特徴とする請求項1に記載のソリッドステートドライブ。
  3. 前記ウインドウは、スライディングウインドウであり、
    前記統計コレクターは、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の前記少なくとも1つの基準に対する少なくとも1つの値を調整するように作動することを特徴とする請求項1に記載のソリッドステートドライブ。
  4. 前記ウインドウは、特定の時間区間を有する不連続ウインドウ(discrete window)であることを特徴とする請求項1に記載のソリッドステートドライブ。
  5. 前記複数のソフトウェアストリームの第1サブセットは、前記複数の装置ストリームの数よりも1つ少ない数の最上位等級を有するソフトウェアストリーム含み、
    前記複数のソフトウェアストリームの第2サブセットは、前記複数のソフトウェアストリームの第1サブセットに含まれない全てのソフトウェアストリームを含むことを特徴とする請求項1に記載のソリッドステートドライブ。
  6. 前記統計コレクターは、前記複数のソフトウェアストリームの各々に対して第1基準に対する第1値及び第2基準に対する第2値を決定するように作動することを特徴とする請求項1に記載のソリッドステートドライブ。
  7. 前記ランカーは、
    前記第1基準に対する第1加重値及び前記第2基準に対する第2加重値を含み、
    前記第1加重値を使用した前記第1値に対する第1等級及び前記第2加重値を使用した前記第2値に対する第2等級の加重値の合計に従って前記複数のソフトウェアストリーム等級決定するように作動することを特徴とする請求項6に記載のソリッドステートドライブ。
  8. 前記ランカーは、
    前記第1基準に対する閾値を含み、
    前記第1基準に対する閾値よりも大きい第1値を有するソフトウェアストリームに対して前記第1基準に従い、前記第1基準に対する閾値よりも小さい第1値を有するソフトウェアストリームに対して前記第2基準に従って前記複数のソフトウェアストリーム等級決定するように作動することを特徴とする請求項6に記載のソリッドステートドライブ。
  9. マシンで実行されるドライバーが格納された有形の非一時的な記録媒体を含む物品であって、
    前記ドライバーは、
    複数のソフトウェアストリームの各々を識別するためのソフトウェアストリーム識別子タグを含む複数のコマンドをホストから受信する受信機と、
    前記複数のコマンドによる前記ホストの作業負荷を分析するためのウインドウの時間を測定するタイマーと、
    前記複数のコマンドに応答して、前記ウインドウの間前記複数のソフトウェアストリームの各々に対して選択された少なくとも1つの基準に対する少なくとも1つの値を決定して前記作業負荷の統計を演算して収集する統計コレクターと、
    前記ウインドウの間の前記複数のソフトウェアストリームの各々に対して選択された少なくとも1つの基準に対する少なくとも1つの値に従って演算された統計を使用して前記作業負荷を表す前記複数のソフトウェアストリーム等級決定するランカーと、
    前記等級に基づいて前記複数のソフトウェアストリームをサブセットに分割して前記複数の装置ストリームにマッピングするマッパーと、
    前記複数のコマンドの各々に関連するソフトウェアストリームに対応する装置ストリームに対する装置ストリーム識別子(ID)を追加的な複数のコマンドの各々に追加する装置ストリームIDアダーと、
    前記追加的な複数のコマンドの各々をソリッドステートドライブ(SSDに伝送する伝送器と、を備え
    前記マッパーは、前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームを前記SSD内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームに対応付けるように作動するマッピングを設定することを特徴とする物品。
  10. 前記ウインドウは、スライディングウインドウであり、
    前記統計コレクターは、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の前記少なくとも1つの基準に対する少なくとも1つの値を調整するように作動することを特徴とする請求項9に記載の物品。
  11. 前記ウインドウは、特定の時間区間を有する不連続ウインドウであることを特徴とする請求項9に記載の物品。
  12. 前記複数のソフトウェアストリームの第1サブセットは、前記複数の装置ストリームの数よりも1つ少ない数の最上位等級を有するソフトウェアストリーム含み、
    前記複数のソフトウェアストリームの第2サブセットは、前記複数のソフトウェアストリームの第1サブセットに含まれない全てのソフトウェアストリームを含むことを特徴とする請求項9に記載の物品。
  13. 前記統計コレクターは、前記複数のソフトウェアストリームの各々に対して第1基準に対する第1値及び第2基準に対する第2値を決定するように作動することを特徴とする請求項9に記載の物品。
  14. 前記ランカーは、
    前記第1基準に対する第1加重値及び前記第2基準に対する第2加重値を含み、
    前記第1加重値を使用した前記第1値に対する第1等級及び前記第2加重値を使用した前記第2値に対する第2等級の加重値の合計に従って前記複数のソフトウェアストリーム等級決定するように作動することを特徴とする請求項13に記載の物品。
  15. 前記ランカーは、
    前記第1基準に対する閾値を含み、
    前記第1基準に対する閾値よりも大きい第1値を有するソフトウェアストリームに対して前記第1基準に従い、前記第1基準に対する閾値よりも小さい第1値を有するソフトウェアストリームに対して前記第2基準に従って前記複数のソフトウェアストリーム等級決定するように作動することを特徴とする請求項13に記載の物品。
  16. マシンで実行されるデータストリームの統合方法であって、
    複数の装置ストリームに変換されてソリッドステートドライブ(SSD)処理される複数のソフトウェアストリームの各々を識別するためのソフトウェアストリーム識別子タグを含む複数のコマンドをホストから受信する段階と、
    前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して選択された少なくとも1つの基準に対する少なくとも1つの値を決定して前記複数のコマンドによる前記ホストの作業負荷の統計を演算して収集する段階と、
    前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階と、
    前記複数のソフトウェアストリームの第1サブセット内の各ソフトウェアストリームを前記SSD内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第2サブセット内の全てのソフトウェアストリームを前記SSD内の複数の装置ストリームの中の統合装置ストリームに対応付けるように作動するマッピングを生成する段階と、
    前記マッピングを生成した後に、前記複数のソフトウェアストリームに関連する第2複数のコマンドを受信する段階と、
    前記マッピングに応答して前記複数の装置ストリームの中の1つに前記第2複数のコマンドの各々を割当する段階と、
    前記割当された装置ストリームを使用して前記SSDで前記第2複数のコマンドの各々を処理する段階と、を有することを特徴とする方法。
  17. 前記少なくとも1つの基準に対する少なくとも1つの値に応答して前記複数のソフトウェアストリームの第1及び第2サブセットを識別する段階は、
    前記少なくとも1つの基準に対する少なくとも1つの値に従って演算された統計を使用して前記作業負荷を表す前記複数のソフトウェアストリーム等級決定する段階と、
    前記複数の装置ストリームの数よりも1つ少ない数の最上位等級を有するソフトウェアストリーム含むように前記複数のソフトウェアストリームの第1サブセットを選択する段階と、
    前記複数のソフトウェアストリームの中から、前記複数のソフトウェアストリームの第1サブセット内に含まれない全てのソフトウェアストリームを含むように前記複数のソフトウェアストリームの第2サブセットを選択する段階と、を含むことを特徴とする請求項16に記載の方法。
  18. 前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して選択された少なくとも1つの基準に対する少なくとも1つの値を決定して前記複数のコマンドによる前記ホストの作業負荷の統計を演算して収集する段階は、前記複数のソフトウェアストリームの各々に対して第1基準に対する第1値及び第2基準に対する第2値を決定する段階を含み、
    前記少なくとも1つの基準に対する少なくとも1つの値に従って演算された統計を使用して前記作業負荷を表す前記複数のソフトウェアストリーム等級決定する段階は、前記複数のソフトウェアストリームの各々に対して前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリーム等級決定する段階を含むことを特徴とする請求項17に記載の方法。
  19. 前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリーム等級決定する段階は、
    前記第1基準に対する第1加重値及び前記第2基準に対する第2加重値を決定する段階と、
    前記第1加重値を使用した前記第1値に対する第1等級及び前記第2加重値を使用した前記第2値に対する第2等級の加重値の合計に従って前記複数のソフトウェアストリーム等級決定する段階と、を含むことを特徴とする請求項18に記載の方法。
  20. 前記第1基準に対する第1値及び前記第2基準に対する第2値に従って前記複数のソフトウェアストリーム等級決定する段階は、
    前記第1基準に対する閾値を決定する段階と、
    前記第1基準に対する閾値よりも大きい第1値を有するソフトウェアストリームに対して前記第1基準に従い、前記第1基準に対する閾値よりも小さい第1値を有するソフトウェアストリームに対して前記第2基準に従って前記複数のソフトウェアストリーム等級決定する段階と、を含むことを特徴とする請求項18に記載の方法。
JP2017204461A 2016-10-26 2017-10-23 マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法 Active JP6851951B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662413177P 2016-10-26 2016-10-26
US62/413,177 2016-10-26
US201762448958P 2017-01-20 2017-01-20
US62/448,958 2017-01-20
US15/458,968 US10216417B2 (en) 2016-10-26 2017-03-14 Method of consolidate data streams for multi-stream enabled SSDs
US15/458,968 2017-03-14

Publications (3)

Publication Number Publication Date
JP2018073412A JP2018073412A (ja) 2018-05-10
JP2018073412A5 JP2018073412A5 (ja) 2020-12-03
JP6851951B2 true JP6851951B2 (ja) 2021-03-31

Family

ID=61969550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017204461A Active JP6851951B2 (ja) 2016-10-26 2017-10-23 マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法

Country Status (5)

Country Link
US (3) US10216417B2 (ja)
JP (1) JP6851951B2 (ja)
KR (1) KR102267480B1 (ja)
CN (1) CN107992266B (ja)
TW (1) TWI718337B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018088137A (ja) 2016-11-29 2018-06-07 東芝メモリ株式会社 半導体記憶装置
US10877691B2 (en) * 2017-12-29 2020-12-29 Intel Corporation Stream classification based on logical regions
WO2020000480A1 (zh) * 2018-06-30 2020-01-02 华为技术有限公司 数据存储方法及数据存储装置
US11182101B2 (en) * 2018-12-03 2021-11-23 Western Digital Technologies, Inc. Storage system and method for stream management in a multi-host virtualized storage system
KR20200088563A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200145151A (ko) 2019-06-20 2020-12-30 삼성전자주식회사 맵핑 정보를 축약하는 플래시 변환 계층 구조를 이용하여 메모리 리소스를 관리하는 데이터 저장 장치
US11481150B2 (en) * 2020-04-01 2022-10-25 Western Digital Technologies, Inc. Read modify write optimization for video performance
US11301173B2 (en) * 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
KR20210156190A (ko) 2020-06-17 2021-12-24 삼성전자주식회사 스토리지 장치 지원 실시간 가상 머신 마이그레이션
US11863623B2 (en) * 2020-09-11 2024-01-02 Western Digital Technologies, Inc. Variable QoS management of multiple data streams
KR102652396B1 (ko) * 2021-05-31 2024-03-28 한국항공대학교산학협력단 멀티스트림을 활용한 분산 병렬 시스템의 데이터 분리 저장 장치 및 방법

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
US20090119352A1 (en) 2007-11-05 2009-05-07 Steven Joseph Branda Method for Optimizing Generational Garbage Collection Through Object Life Heuristics
US8429658B2 (en) 2008-10-16 2013-04-23 International Business Machines Corporation Lock deferral for real-time garbage collection
CN102473140B (zh) 2009-07-17 2015-05-13 株式会社东芝 存储器管理装置
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
WO2012020544A1 (ja) 2010-08-11 2012-02-16 日本電気株式会社 データ処理システム、データ処理方法、およびプログラム
US20150121003A1 (en) * 2010-09-07 2015-04-30 Daniel L. Rosenband Storage controllers
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US20120110239A1 (en) * 2010-10-27 2012-05-03 Seagate Technology Llc Causing Related Data to be Written Together to Non-Volatile, Solid State Memory
JP5500309B2 (ja) 2011-09-07 2014-05-21 日本電気株式会社 ストレージ装置
US10203881B2 (en) * 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
JP5723812B2 (ja) 2012-03-16 2015-05-27 株式会社 日立産業制御ソリューションズ ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム
US8886880B2 (en) 2012-05-29 2014-11-11 Dot Hill Systems Corporation Write cache management method and apparatus
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9158687B2 (en) * 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9367353B1 (en) * 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US20160196076A1 (en) 2013-07-08 2016-07-07 Wilus Institute Of Standards And Technology Inc. Memory system and method for controlling same
JP2016534389A (ja) * 2013-07-31 2016-11-04 カリフォルニア インスティチュート オブ テクノロジー 開口走査フーリエタイコグラフィ撮像
KR102074329B1 (ko) * 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US9854270B2 (en) 2013-12-19 2017-12-26 Qualcomm Incorporated Device and method for scalable coding of video information
US9459810B2 (en) 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
KR101544309B1 (ko) 2014-02-26 2015-08-12 한양대학교 산학협력단 스트림 기반의 비휘발성 메모리 제어 방법 및 장치
TWI554944B (zh) 2014-06-20 2016-10-21 慧榮科技股份有限公司 快閃記憶體控制裝置、快閃記憶體控制系統以及快閃記憶體控制方法
EP3021208B1 (en) * 2014-11-14 2019-01-09 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9519429B2 (en) 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
US10409526B2 (en) 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
KR20160105624A (ko) 2015-02-27 2016-09-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작 방법
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283125A1 (en) 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
US9760281B2 (en) 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
US9996302B2 (en) * 2015-04-03 2018-06-12 Toshiba Memory Corporation Storage device writing data on the basis of stream
US10261725B2 (en) * 2015-04-10 2019-04-16 Toshiba Memory Corporation Storage system capable of invalidating data stored in a storage device thereof
US10013177B2 (en) 2015-04-20 2018-07-03 Hewlett Packard Enterprise Development Lp Low write amplification in 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
US9594513B1 (en) * 2015-06-29 2017-03-14 EMC IP Holding Company LLC Data storage system with file system stream detection
KR102381343B1 (ko) 2015-07-27 2022-03-31 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
JP6403164B2 (ja) 2015-09-11 2018-10-10 東芝メモリ株式会社 メモリシステム
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
JP2018022275A (ja) 2016-08-02 2018-02-08 東芝メモリ株式会社 半導体記憶装置
JP2018160195A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび不揮発性メモリの制御方法

Also Published As

Publication number Publication date
US20180113642A1 (en) 2018-04-26
US10216417B2 (en) 2019-02-26
US11048411B2 (en) 2021-06-29
KR102267480B1 (ko) 2021-06-22
US20190129617A1 (en) 2019-05-02
TWI718337B (zh) 2021-02-11
US10739995B2 (en) 2020-08-11
TW201816620A (zh) 2018-05-01
JP2018073412A (ja) 2018-05-10
CN107992266B (zh) 2022-01-28
US20200264774A1 (en) 2020-08-20
KR20180045786A (ko) 2018-05-04
CN107992266A (zh) 2018-05-04

Similar Documents

Publication Publication Date Title
JP6851951B2 (ja) マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法
US11086523B2 (en) Automatic tiering of storage using dynamic grouping
US8375180B2 (en) Storage application performance matching
US10853139B2 (en) Dynamic workload management based on predictive modeling and recommendation engine for storage systems
JP4699837B2 (ja) ストレージシステム、管理計算機及びデータ移動方法
US10387038B1 (en) Storage space allocation for logical disk creation
US10140034B2 (en) Solid-state drive assignment based on solid-state drive write endurance
US11474945B2 (en) Cache and I/O management for analytics over disaggregated stores
EP3285187B1 (en) Optimized merge-sorting of data retrieved from parallel storage units
US20180254999A1 (en) Multidimensional resource allocation in data centers
US20150317556A1 (en) Adaptive quick response controlling system for software defined storage system for improving performance parameter
US11762770B2 (en) Cache memory management
US9177274B2 (en) Queue with segments for task management
US10956084B2 (en) Drive utilization in multi-tiered systems with read-intensive flash
KR101734160B1 (ko) 작업부하 편중을 완화하는 저장 장치
KR101694299B1 (ko) 클라우드 스토리지의 저장장치를 관리하기 위한 방법 및 메타데이터 서버
CN116991335B (zh) 队列资源分配方法、装置、磁盘阵列卡、设备和介质
EP4033422A1 (en) Systems, methods, and apparatus for storage query planning

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180214

AA79 Non-delivery of priority document

Free format text: JAPANESE INTERMEDIATE CODE: A24379

Effective date: 20180306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201022

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201022

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20201022

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20201104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210129

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: 20210209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210310

R150 Certificate of patent or registration of utility model

Ref document number: 6851951

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250