JP6993929B2 - マルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法 - Google Patents

マルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法 Download PDF

Info

Publication number
JP6993929B2
JP6993929B2 JP2018089023A JP2018089023A JP6993929B2 JP 6993929 B2 JP6993929 B2 JP 6993929B2 JP 2018089023 A JP2018089023 A JP 2018089023A JP 2018089023 A JP2018089023 A JP 2018089023A JP 6993929 B2 JP6993929 B2 JP 6993929B2
Authority
JP
Japan
Prior art keywords
storage device
storage
stream
management unit
streaming performance
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
JP2018089023A
Other languages
English (en)
Other versions
JP2018190425A (ja
JP2018190425A5 (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 JP2018190425A publication Critical patent/JP2018190425A/ja
Publication of JP2018190425A5 publication Critical patent/JP2018190425A5/ja
Application granted granted Critical
Publication of JP6993929B2 publication Critical patent/JP6993929B2/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/02Transmitters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/06Receivers

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はSSD(Solid State Drive)ストレージ装置に関するもので、さらに詳しくは、相異なる遂行性能を有するSSDを用いたマルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法{Storage Device, Storage Manager, and Method for Multi-streaming}に関する。
マルチストリーミング(multi-streaming)は、システムによる“ストリーム”のデータへの割り当てを可能にする最新のSSD(Solid State Drive)の主要な特長である。各ストリームはSSD上で物理的に分離されていて、ガーベージコレクション(Garbage Collection、‘ゴミ’(不用品)回収)動作及びライト増幅因子(Write Amplification Factor)動作を改善する。類似した寿命が予想されるデータは、一つのストリーム内にまとめてグループ化でき、(理想的には)ほぼ同時に消去ブロックの全てのデータが無効化される。結果的に、ガーベージコレクションに際して、或る消去ブロックを実際に消去する前に、該消去ブロックから有効データを他のブロックにプログラムする必要を削減できるか、(理想的には)解消でき、結局、SSDのライト増幅因子を削減できる。
システムの内の全てのストレージ装置が全ての点から同一であれば、マルチストリーミングの具現は単純な問題であり得る。特定のデータをライト(write)するため選択されるストリームが何であるかに拘わらず、ターゲットストレージ(target storage)装置の予想される性能は同一であろう(又は、ほぼ同一)。それは、ほぼ全てのデータは、ほぼ全てのストリーム及びドライブに割り当てできるからである。
しかしながら、システムの内の斯かる同質性は稀である。普通、システムは混合されたストレージ装置を含む。それは、相異なる類型の装置(例えば、ハードディスクドライブ(hard disk drive)対SSD)、相異なる性能レベル(例えば、相異なるリード(read)及び/又はライト(write)の待ち時間(latencies)、又は相異なるガーベージコレクションの特性)、及び/又は相異なるコネクタ(例えば、SAS(Serial Attached Small Computer Systems Interface)対イーサネット(Ethernet))である。
製造及び連結以外は同一の装置も相異なるように遂行され得る。例えば、同一のホストマシン(machine)に連結された2つのSSDストレージ装置を考慮する。2つのSSDの中で1つが、ホストマシンにより発行された全命令の中で実質的に50%よりも多い命令を受信すると、当該SSDは入出力(I/O)キューの内の命令がより多くなるせいで、性能が遅くなることは勿論、ガーベージコレクション及びライト増幅が、結局、相棒のSSDよりもずっと多くなる事態に陥る。
異種のストレージ装置のためのストリーム管理を決定する方法が必要となる。
米国登録特許第9465753B2号公報 米国登録特許第9569178B1号公報 米国公開特許第2012/0072798A1号公報 米国公開特許第2015/0324255A1号公報 米国公開特許第2016/0044077A1号公報
本発明は、上述した技術的課題を解決するためのもので、相異なる遂行性能を有するSSDを用いた場合の、高性能マルチストリーミングのためのストレージ装置、ストレージ管理部、及び方法を提供する。
本発明の一態様によるストレージ装置は、第1類型の第1ストレージ及び前記第1類型とは異なる第2類型の第2ストレージを含むデータのためのストレージと、前記第1ストレージ及び前記第2ストレージからのデータのリード(read)と前記第1ストレージ及び前記第2ストレージへのデータのライト(write)とを制御する1つ以上のコントローラと、前記ストレージへのデータライトに用いられる多数の装置ストリームと、前記ストレージ装置のストリーミング性能インベントリ(inventory)を作成する、少なくとも一部がプロセッサで実装されるストリーミング性能分析器と、前記ストレージ装置のストリーミング性能を少なくとも1つのストレージ管理部へ送信する送信機と、を備え前記第1ストレージは、少なくとも第1チャネル及び第2チャネルによりアクセスされ、前記第2ストレージは、少なくとも第3チャネル及び第4チャネルによりアクセスされ、前記ストレージ装置により支援される前記多数の装置ストリームの中第1装置ストリームは前記第1ストレージ関連し、前記ストレージ装置により支援される前記多数の装置ストリームの中第2装置ストリームは前記第2ストレージ関連し、前記多数の装置ストリームの中の第1装置ストリームは、前記第1チャネル又は前記第2チャネルのいずれかを介して前記第1ストレージに第1データを格納するように用いられ、前記多数の装置ストリームの中の第2装置ストリームは、前記第3チャネル又は前記第4チャネルのいずれかを介して前記第2ストレージに第2データを格納するように用いられ、前記ストリーミング性能は、前記ストレージ装置の消去ブロックサイズ、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームのライトサイズ、前記ストレージ装置により支援されるストレージ内コンピューティング(In-Storage Computing:ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、並びに前記ストレージ装置により支援される装置ストリームの処理能力(throughput)の制限、の全てを含む集合から導出されることを特徴とする
本発明の一態様によるストレージ管理部は、少なくとも1つのストレージ装置からの前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能、少なくとも1つのソフトウェアストリームに対するQoS(Quality of Service)要求及び前記少なくとも1つのソフトウェアストリームからの要請を受信する受信機と、前記少なくとも1つのソフトウェアストリームに対するQoS及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのストレージ装置により支援される多数の装置ストリームの中1つを選択する、少なくとも一部がプロセッサで実装される装置ストリームの選択機と、前記多数の装置ストリームの中から選択され1つを支援する前記少なくとも1つのストレージ装置の中の第1ストレージ装置に前記要請を送信する送信機と、を備え、前記多数の装置ストリームの中から選択される1つに関連するデータは、前記ストレージ装置により提供される少なくとも2つのチャネルの中のいずれかを通じてライト(write)され、前記第1ストレージ装置は、前記ストレージ装置からのデータをリード(read)し前記ストレージ装置へのデータをライトするように制御する第1コントローラを含み、前記QoS要求は、最少帯域幅、最大帯域幅、優先レベル、最大レイテンシ、又は好ましいレイテンシの中の少なくとも1つを含み、前記少なくとも1つのソフトウェアストリームは、アプリケーションによって規定され、前記ストリーミング性能は、前記ストレージ装置の消去ブロックサイズ、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームのライトサイズ、前記ストレージ装置により支援されるストレージ内コンピューティング(ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、並びに前記ストレージ装置により支援される装置ストリームの処理能力の制限、の全てを含む集合から導出されることを特徴とする。
本発明の一態様による方法は、ストレージ管理部で、多数の装置ストリームを支援する少なくとも1つのストレージ装置の少なくともつのストリーミング性能を受信するステップと、ストレージ管理部で、アプリケーションによって規定された少なくとも1つのソフトウェアストリームから要請を受信するステップと、前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS(Quality of Service)要求を判別するステップと、前記ストレージ管理部で、前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS求及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中少なくとも1つを選択するステップと、前記ストレージ管理部が前記多数の装置ストリームの中から選択され少なくとも1つを用いて、前記少なくも1つのソフトウェアストリームからの前記要請を前記少なくとも1つのストレージ装置送信するステップと、を有し、前記少なくとも1つのQoS要求は、最少帯域幅、最大帯域幅、優先レベル、最大レイテンシ、又は好ましいレイテンシレベルの中の少なくとも1つを含み、前記多数の装置ストリームの中から選択される少なくとも1つに関連するデータは、前記少なくとも1つのストレージ装置により提供される少なくとも2つのチャネルの中のいずれかを通じてライト(write)され、前記ストレージ装置は、前記ストレージ装置からのデータをリード(read)し前記ストレージ装置へのデータをライトするように制御するコントローラを含み、前記ストリーミング性能は、前記ストレージ装置上の消去ブロックサイズ、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームのライトサイズ、前記ストレージ装置により支援されるストレージ内コンピューティング(ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、並びに前記ストレージ装置により支援される装置ストリームの処理能力の制限、の全てを含む集合から導出されることを特徴とする。
マルチストリーミングの脈略の内で、アプリケーションの或る小さい部分が高レベルのQoS(Quality of Service)資源を要求する場合、該アプリケーション全体に高レベルのQoS資源を提供のではなく、本発明の実施例では、アプリケーションの内、小さいが高レベルのQoSを要求する部分に対してのみ1つの高レベルQoSストリームが提供され、該アプリケーションの他のストリームには低レベルのQoS資源が提供されるので、高性能マルチストリーミングが具現される。
図1は、本発明の実施例によって、ストレージ装置を備えたマシンを図示する。 図2は、図1のマシンの追加の細部事項を図示する。 図3は、相異なる類型及び性能を有するストレージを含む図1のストレージ装置、及びそれらと通信する図1のストレージ管理部を図示する。 図4は、図3においてストレージがSSD型(フラッシュ型)の場合のストレージ装置の細部事項を図示する。 図5は、図1のストレージ装置のコントローラの細部事項を図示する。 図6は、図1のストレージ装置から、図1のストレージ管理部へ報告され得る多様なストリーミング性能を図示する。 図7は、図6のストリーミング性能を図1のストレージ管理部に通信する図1のストレージ装置を図示する。 図8は、図1のマシン上で実行され、ソフトウェアストリームを介して要請を送信するアプリケーションを図示する。 図9は、図1のストレージ管理部の細部事項を図示する。 図10(A)及び図10(B)は共に、図1のストレージ装置のストリーミング性能を格納するための例示的なストリーミング性能関連データ構造及びマッピング関連データ構造を図示する。 図11は、図1のストレージ管理部がストリームをアプリケーションに割り当てる例示的なメカニズムの動作順序図を図示する。 図12は、図9の装置ストリームの選択機の細部事項を図示する。 図13は、図12のマッパー(mapper)の細部事項を図示する。 図14は、本発明の実施例により、図1のストレージ装置がそれ自身のストリーミング性能をセルフインベントリ(self-inventory)して、その情報を図1のストレージ管理部へ送信するための例示的な手順の順序図を図示する。 図15は、本発明の実施例により、ストリーミング性能がいつ変化したかを判別するための図1のストレージ装置のための例示的な手順の順序図を図示する。 図16は、本発明の実施例により、図1のストレージ管理部が要請を図1のストレージ装置の内の装置ストリーミングに割り当てるための例示的な手順の順序図を図示する。 図17は、本発明の実施例により、図1のストレージ管理部がソフトウェアストリームを装置ストリームにマッピングするための例示的な手順の順序図を図示する。 図18は、本発明の実施例により、図1のストレージ管理部がソフトウェアストリームのために、装置ストリームを選択するための例示的な手順の順序図を図示する。
以下、本発明の具体的な実施例に対する参照が詳細に提供され、本発明の具体的な実施例に対する例示は、添付された図面に図示される。後述する詳細な記述において、本発明に対する完全な理解が可能となるように数多くの具体的な事項が提供される。しかしながら、斯かる詳細な記述が無くとも、当業者ならば本発明を実施できると理解されるべきである。他の例示では、公知の方法、ステップ、構成、回路、及びネットワークについては、実施例の諸様相を不必要に曖昧にしないように詳細な記述を避けた。
本明細書で、第1、第2などが多様な構成要素を説明するのに使用されるが、斯かる構成要素は、斯かる用語により限定されないものとして理解されるべきである。斯かる用語は単に、1つの構成要素を他のものと区別するために使用される。例えば、第1モジュールは第2モジュールと命名でき、そして同様に本発明の範囲を逸脱せずに、第2モジュールは第1モジュールと命名できる。
本明細書で、本発明の説明に使用された用語は、単に特定の実施例を記述するための目的で使用され、本発明を限定する意図では使用されない。文脈上、そうではないと明確に規定されない限り、単数の形態が本発明の説明及び付加された請求項で使用される時、複数の形態を含むと意図される。なお、本明細書に使用された“及び/又は”の用語は1つ又はそれ以上の関連・羅列された事項の全ての可能な組合を表わすか包含すと理解されるべきである。“包含する”の用語が本明細書に使用される場合、記述された特徴、数字、ステップ、動作、構成、及び/又は要素の存在を明記するが、これらの1つ又はそれ以上の他の特徴、数字、ステップ、動作、構成、要素、及び/又はグループの存在又は付加を排除しないと、さらに理解されるべきである。図面の構成要素及び特徴は必ずしも実寸の比率で描かれない。
2015年11月30日出願された米国の仮特許出願(62/261,303)の利益を主張する、現在係属中の2016年2月17日出願された米国特許出願(15/046,439)は本出願に関連し、これらの両者は、全ての目的のため本明細書にここで参照により組み込まれる。
2015年12月30日出願された米国の仮特許出願(62/273,323)の利益を主張する、現在係属中の2016年4月1日出願された米国特許出願(15/089,237)は本出願に関連し、これらの両者は、全ての目的のため本明細書にここで参照により組み込まれる。
2015年11月30日出願された米国仮特許出願(62/261,303)の利益を主張する、現在係属中の2016年2月17日出願された米国特許出願(15/046,239)のCIP(Continuation-In-Part)出願であって現在係属中の2016年5月4日出願された米国特許出願(15/146,708)は本出願に関連し、これらの全部は全ての目的のため、本明細書にここで参照により組み込まれる。
そして、2016年3月1日出願された米国仮特許出願(62/302,162)の利益を主張する、2016年5月4日出願された米国特許出願(15/146,708)は、全ての目的のため、本明細書にここで参照により組み込まれる。
2016年3月29日出願された米国仮特許出願(62/314,920)の利益を主張する、現在係属中の2016年5月20日出願された米国特許出願(15/161,144)は本出願に関連し、これらの両者は、全ての目的のため本明細書にここで参照により組み込まれる。
2016年3月16日出願された米国仮特許出願(62/309,446)の利益を主張する、現在係属中の2016年5月27日出願された米国特許出願(15/167,974)は本出願に関連し、これらの両者は、全ての目的のため本明細書にここで参照により組み込まれる。
2017年4月11日出願された米国仮特許出願(62/484,387)の利益を主張する、現在係属中の2017年7月18日出願された米国特許出願(15/653,479)は本出願に関連し、これらの両者は、全ての目的のため本明細書にここで参照により組み込まれる。
“マルチストリーミング(multi-streaming)”の脈略において、関心のある2つの類型のストリームがある。ストリームの第1類型は、ソフトウェアストリーム(software stream、ときにはアプリケーションストリーム(application stream)と呼ばれる)である。ソフトウェアストリームは、ストリームを定義するアプリケーションに依存するソフトウェア概念である。
アプリケーションはそれ自身が使用する目的に合わせ任意の個数のストリーミングを定義できる。例えば、アプリケーション又は運営体制(OS)は寿命が長いデータに対して1つのストリームを、単に一時的に格納されるデータに対して他のストリームなどを定義できる。なお、アプリケーションはストリームの区別に際して他の条件を利用できる。即ち、データ寿命の使用は、単に1つの例示的なやり方(approach)である。
ストリームの第2類型は、装置ストリーム(device stream)である。装置ストリームはデータの格納のためストレージ装置を通じる個別“経路”を示すハードウェア概念である。各装置は特定の個数の装置ストリームを支援することが可能である。装置ストリームの個数は、ハードウェアの制約によって縛られているので一般的に事前に知られている。
ストレージ装置は、全体のドライブ(drive)及びその潜在的ストリームの双方に関連する特定の物理的及び論理的属性(又は、選択的には、これらの情報を抽象化したもの)をホストとの間で通信する。この情報を用いてホストは、アプリケーション(及びそれらの個別ストリーム)が賦課する任意のQoS (Quality of Service)要求に基づいてストリームをアプリケーションに割り当てる。各ドライブ及びその装置ストリームに関連する性能(場合によっては、ホストはストリームの外の因子を補充できる)をホストに知らせることで、ホストはマルチストリーミングの容量を最大限効率的に利用できる。
例として、SLC(Single-Level Cell)及びTLC(Triple-Level Cell)フラッシュの全てを有し、8個のストリームを支援できるイーサネット(Ethernet)連結のSSDを考慮する。このドライブはホストに次の事項を報告できる。
1)ドライブ類型(例えば、イーサネットSSDである事実)。
2)そのホストとの通信に際して経験された全てのネットワーク待機時間。
3)SLC及びTLCの待機時間(又は相対的な待機時間)。
4)SLC対TLCにストリームを割り当てる際の全ての制約。
他のドライブは、それらの必須的なストリーム基準(metrics)をホストに同様に報告できる。その後に、ホストはアプリケーション(又は個別ストリーム)からの全てのQoS要求を分析し、そのアプリケーション(又はストリーム)をそれに最も適したドライブに割り当てる。
ストレージ装置の始め(及びその以後周期的に)から、ストレージ装置はそのストリーミング性能をセルフインベントリ(自己棚卸、self-inventory)する。本発明の実施例において、ストリーミング性能は、支援されるハードウェアストリーミングの個数、消去ブロックのサイズ、内部の物理的異種性、オートストリーミング(auto-streaming)能力及びパラメータ、そして潜在的なストリームと関連されたプログラム及び消去速度を、他の性能と並んで包含する。
なお、本発明によればアプリケーションが多重ストリームを利用でき、該多重ストリームの各々は、データ寿命の要求とは相異なるQoS要求ができる。従来のマルチストリーミングのシステムでは、各ストリームが類似した性能を提供すると仮定していたが、本発明の実施例はこの仮定を捨てる。結果的に、本発明の実施例はより微細なQoSの細分性(粒度、granularity)の生成によって、システム上の全般的な「QoS」の負担を必然的に低減する。
即ち、マルチストリーミングの脈略の内で、アプリケーションの或る小さい部分が高レベルのQoS資源を要求するからといって、該アプリケーション全体に高レベルのQoS資源を提供するよりは、本発明の実施例では、アプリケーションの内、小さいが高レベルのQoSを要求する部分に対してのみ1つの高レベルQoSストリームが提供され、該アプリケーションの他のストリームには低レベルのQoS資源が提供される。
図1は本発明の実施例によって、ストレージ装置を備えたマシンを図示する。図1で、マシン(machine)105が図示された。マシン105はデスクトップ(desktop)又はラップトップコンピュータ (laptop computer)、サーバ(独立実行型サーバ又はラックサーバの中で1つ)又は本発明の実施例が役立つ任意の他の装置を包含するが、これに限定されない任意の所望の(desired)マシンであり得る。マシン105は専門家された携帯用コンピューティング装置、タブレッドコンピュータ、スマートフォン、及び他のコンピューティング装置を、なお包含できる。マシン105は任意の所望のアプリケーションを実行できる。つまり、データベースアプリケーションがよい例であるが、本発明の実施例は任意の所望のアプリケーションまで拡張できる。
マシン105は、その特定の形態と関係なしに、プロセッサ110、メモリ115、及びストレージ装置120を包含する。プロセッサ110は任意の多様なプロセッサであり得る。つまり、例えばインテル社の、ジーオン(Xeon)、セレロン(Celeron)、アイテニアム(Itanium)、又はアトム(Atom)プロセッサ、AMD(Advanced Micro Devices)社のオプテロン(Opteron)プロセッサ、ARM(Acorn(又は、Advanced) RISC Machine)社の各種ARMプロセッサなどであり得る。図1は1つのプロセッサを図示するが、マシン105は任意の個数のプロセッサを包含でき、各々はシングルコア(single core)又はマルチコア(multi-core)のプロセッサであり得る。
メモリ115は、フラッシュメモリ、SRAM(Static_RAM(Random Access Memory))、PRAM(Persistent_RAM、又はPhase_shift_RAM)、FRAM(登録商標)(Ferroelectric_RAM)、又は、MRAM(Magnetoresistive_RAM)のようなNVRAM(Non-Volatile_RAM)などの任意の多様なメモリであり得るが、一般的にはDRAM(Dynamic_RAM)である。なお、メモリ115は相異なるメモリ種類の任意の組合せであり得る。メモリ115は、なおマシン105の一部であり得るメモリコントローラ125により制御される。
ストレージ装置120はマルチストリーミングを支援できる任意の多様なストレージ装置である。ストレージ装置120はメモリ115の内にソフトウェアとして駐在する装置ドライバ130により制御される。
最終的に、マシン105はストレージ管理部135を包含する。ストレージ管理部(storage manager)135はアプリケーション又は他のソフトウェア資源からの要請を適切な目的地に仕向ける。本発明の実施例において、ストレージ管理部135はストレージ装置120のストリーミング性能に基づいて、要請をストレージ装置120と関連された装置ストリームに割り当てる。図1は、単に1つのストレージ装置120を図示するが、本発明の実施例は任意の個数のストレージ装置の場合を支援できる。又は、ストレージ装置120はマシン105の内に位置するか、又は外部に位置できる(恐らくネットワーク(図示せず)を通じて接近可能)。ストレージ管理部135はハードウェア、ハードウェア及びソフトウェアの組合せ又はプロセッサ110上で実行されるソフトウェアとして具現される。本明細書を通じて、「ストレージ管理部135」への任意の参照はマシン105の記述として、もう少し一般的に読み替えられる。
図2は、図1のマシン105の追加の細部事項を図示する。図2を参照すると、一般的に、マシン105はマシン105の構成要素の動作を調整するのに用いられ、メモリコントローラ125及びクロック205を包含する1つ以上のプロセッサ110を包含する。プロセッサ110は、なお、例示としてRAM(Random Access Memory)、ROM(Read-only Memory)、又は他の状態保持媒体を包含するメモリ115と連結される。プロセッサ110は、なお、ストレージ装置120と連結され、そして例えば、イーサネットコネクタ又は無線コネクタであり得るネットワークコネクタ210と連結される。なお、プロセッサ110は他の構成要素の中でユーザインタフェース220及び入出力エンジン225を用いて管理される入出力インタフェースポートが付着されるバス215と連結される。
図3は、相異なる類型及び性能を有するストレージを含む図1のストレージ装置120-1~120-5、及びそれらと通信する図1のストレージ管理部135を図示する。図3では、ストレージ管理部135が相異なる類型のストレージを有する5個のストレージ装置と通信し、そして種々の通信プロトコルを利用する場合が図示された。
ストレージ管理部135は、SATA(Serial AT Attachment)、SCIS(Small Computer Systems Interface)、又は他の適切な規約である旧型プロトコル305-1を用いてシングルド(shingled、屋根葺型記録方式)HDD(Hard Disk Drive)120-1と通信できる。
また、ストレージ管理部135は、PCIe(Peripheral Component Interconnect express)連結の4個のラインを通せるプロトコル305-2を用いた、マルチストリーミングのSSD(Solid State Drives)である、新型フラッシュメモリのストレージ装置120-2と通信できる。
ストレージ管理部135はSAS(Serial Attachment Small Computer Systems Interface)であるプロトコル305-3を用いて、混合された媒体のストレージ装置120-3と通信できる。
ストレージ管理部135は、PCIe連結の2個のラインを通せるプロトコル305-4を用いて、旧型のフラッシュメモリのストレージ装置120-4と通信できる。
そして、ストレージ管理部135はイーサネット(登録商標)連結であるプロトコル305-5を用いて、NVMeoF(Non-Volatile Memory express over Fabric)のフラッシュメモリストレージ装置120-5と通信できる。
フラッシュストレージ装置120-2、120-4及び NVMeoFのストレージ装置120-5の概念が十分に理解されている一方、シングルドHDD120-1及び混合された媒体ストレージ装置120-3に対しては追加的な説明が有用であろう。従来HDDで、データの各トラック(track)は分離される。つまり、トラックは互いにオーバーラップ(overlap)しない。これはHHD上のデータ管理を簡単にする。つまり、データを変更する時、HDD上の任意の他のデータに影響を与えずに、当該トラックだけをオーバライト(overwrite)すれば良い。シングルドHDD120-1はHDD上の隣接したトラックが部分的に重なり合うSMR(Shingled(屋根葺型) Magnetic Recording)を用いる。このやり方はHDDのデータ密度を増加させる長所を有するが(トラックが狭いほど、より多くのデータがライト(write)される)、データのライト過程を複雑にする。特に、データがHDDにライトされる時、このライト過程は隣接したオーバラップされたトラックに影響を与える。従って、シングルドHDD120-1がデータをライトする時、データを当該トラックにライトしない。代わりに、シングルドHDD120-1は新たなトラックにデータをライトし、そしてフラッシュメモリのストレージ装置120-2、120-4及びNVMeoFのストレージ装置120-5のように、以前の(当該)トラックをガーベージコレクションする。
混合された媒体のストレージ装置120-3は、複数の類型のストレージ媒体を含むストレージ装置である。例えば、混合された媒体のストレージ装置120-3は、SLC(Single-Level Cells)、MLC(Multi-Level Cells)、TLC(Triple-Level Cells)などの多数の相異なる類型のフラッシュメモリを包含できる。又は、混合された媒体のストレージ装置120-3は幾つかのフラッシュメモリ及びHDDのような幾つかの他のストレージフォーマット(format)を包含できる。このように本発明の実施例は無制限に任意の相異なる類型のストレージ媒体を含む混合されたストレージ装置120-3を支援できる。
図3は5個の相異なるプロトコルを用いて、5個の相異なるストレージ装置と通信するストレージ管理部135を図示するが、本発明の実施例は任意の個数のプロトコルを通じた、任意の個数のストレージ装置との通信を支援できる。ストレージ装置120は類型の任意の混合を包含でき、そしてプロトコル305の任意の混合を使用してストレージ管理部135と通信できる。
図4は、図3においてストレージがSSD型(フラッシュ型)の場合のストレージ装置120-2の細部事項を図示する。図4で、SSD120-2はホストインタフェースロジック(host interface logic)405、SSDコントローラ410及び多様なチャンネル420-1~420-4に編成されている多様なフラッシュメモリチップ415-1~415-8を包含する。ホストインタフェースロジック405は、SSD120-2と図1のストレージ管理部135又はマシン105との間の通信を管理する。
SSD120-2は、装置ストリームを用いて図1のストレージ管理部135又はホストマシン105と通信する(図8を参照して後述するように、SSD120-2及び図1のホストマシン105は、アプリケーションストリームを通じて通信するとしても理解できる。つまり、一般的に装置ストリーム425-1~425-3又はアプリケーションストリームの中で、何れか1つに寄与(attribute)した特性は他の類型のストリームにも寄与できる。)。
SSDコントローラ410は、ストレージ415、ここではフラッシュメモリチップ415-1~415-8)に対する、ガーベージコレクション動作と共にリード(read)及びライト(write)動作を管理する。SSDコントローラ410は、フラッシュ変換階層430を含み、この管理の一部を遂行する。
図4は、4個チャンネル420-1~420-4で編成された8個のフラッシュメモリチップ415-1~415-8を含むSSD120-2を図示するが、本発明の実施例は任意の個数のチャンネルで編成された任意の個数のフラッシュメモリチップを支援できる。なお、本発明の実施例は任意の個数の装置ストリーム425-1~425-3を支援できる。
フラッシュメモリチップ415-1~415-8は、全部同一な類型であるか、又は相異なる類型である。例えば、図4でフラッシュメモリチップ415-1、415-2、415-5、415-6はSLCとして図示された反面、フラッシュメモリチップ415-3、415-4、415-7、415-8はMLCとして図示された。SLCは、1ビットのみ(0又は1の中で何れか1つ)を格納でき、そして一般的にMLCより高価であるが、一般的により高速のライト速度を有し、且つ、多数回のライト及び消去ができる。MLCは低コストで複数ビット、多様なMLCにより、2ビット,3ビット、又は、4ビット以上のデータを格納できるが、一般的にライト速度がSLCより低速になり、且つ、SLCに比べて少ない回数のライト及び消去しかできない。
図4に図示されたように、SSD120-2はSSD120-2に特有の細部事項を図示する反面、図4で表現された概念は他のストレージ装置で一般化できる。例えば、図3のシングルド(shingled)のHDD120-1はフラッシュメモリの代わりに、リード(read)及びライト(write)ヘッドと磁気媒体を用いてデータを格納する。しかしながら、図3のシングルド(shingled)のHDD120-1は装置ストリーム425-1~425-3を提供できる。例えば、図1のシングルド(shingled)のHDD120-1は、SSD120-2と異なった形でそのリード及びライト動作を管理し、具体的にはSSDコントローラ以外の構成要素を用いてリード及びライト動作を管理する。しかし、全体的な機能(データリード及びライト、多重の装置ストリームに対する支援、など)は類似である。従って、図1のストレージ装置120の特有の具現は相異なり得るが、図3の他のストレージ装置120は同一の動作を支援できる。
図5は、図1のストレージ装置120のコントローラ410の細部事項を図示する。図5で、コントローラ410は受信機505、ストリーミング性能分析器510、送信機515及びアプデイト感知器520を包含できる。受信機505は図1のストレージ装置120のストリーミング性能情報に対する要請を、図1のストレージ管理部135から受信する。コントローラ410が図1のストレージ装置120のストリーミング性能を図1のストレージ管理部135へ自動的に送信できる(即ち、図1のストレージ装置135から催促されずに)という意味で、受信機505は選択的である。幾つかのストレージ装置は受動的に動作し、斯かるストリーミング性能などの情報要請を受信した後に、その情報だけを送信する。
又は、幾つかのストレージ管理部は、要請していない情報を受信しないように設定されており、ストレージ装置にそのストリーミング性能を要請した後にのみ、ストレージ装置のストリーミング性能を処理する。本発明の斯かる実施例において、受信機505はコントローラ410が図1のストレージ装置120のセルフインベントリを遂行する前に、図1のストレージ管理部135から要請を受信できる(受信機505は、アプリケーションからリード及びライトの要請を受信するなどの他の目的のために使用でき、コントローラ410の一部であり得る。しかし、受信機505は本発明の全ての実施例において、ストリーミング性能の管理に必須ではない。)。
ストリーミング性能分析器510は、図1のストレージ装置120のストリーミング性能を判定する。即ち、ストリーミング性能分析器は、図1のストレージ装置120をインベントリし、図1のストレージ装置120がどのような性能及び制限を有するかを判定する。インベントリされ得る性能及び制限の例示は下の図6を参照して一層説明される。この情報は、送信機515を介して図1のストレージ管理部135へ提供され、図1のストレージ管理部135はアプリケーションからの特定の要請のための最適の装置ストリーム/ストレージ装置を選択する。
アプデイト感知器520は、図1のストレージ装置120のストリーミング性能が、いつ変化したかを感知する。図1のストレージ装置120のストリーミング性能が変更されると、ストリーミング性能分析器510及び送信機515は、図1のストレージ管理部135へアプデイトされたストリーミング性能を提供する機能を新たに遂行する。
図1のストレージ装置120のストリーミング性能は多くの理由に起因して変化する。例えば、図1のストレージ装置120は、図4のそれの装置ストリーム425-1~425-3の中の1つを特定のアプリケーション又はソフトウェアストリームに割り当て、この場合、その装置ストリームは、一般的に最早、使用可能ではない。図1のストレージ装置120は、ストレージ管理部135に報告されているストリーミング性能をアプデイトして自身の提供する装置ストリーム数が1つ減少することを呈示する。
図1のストレージ装置120が自身のストリーミング性能をアプデイトする理由の他の例示として、内蔵(built-in)されたオートストリーミング(auto-streaming)性能を有するストレージ装置、つまり自身の(内部)ストリーミングを遂行するストレージ装置を考慮する。このようなストレージ装置に対しては、図1のストレージ管理部135はそのストレージ装置へ送信された要求に対し、特定のストリームを規定する必要がなく、代わりに、単に該ストレージ装置のオートストリーミング性能に依存してストリームの割り当てを管理できる。
ストレージ装置がどのようにオートストリーミングを遂行するかを制御するパラメータが変化すると、この変化は、図1のストレージ管理部135がストレージ装置のオートストリーミング性能への依存を所望するか否かに影響を与える。この変化の報告を受けることにより、図1のストレージ管理部135は、ストレージ装置の現在最新のストリーミング性能情報を踏まえて図1のホストマシン105からの要請に対して適切な装置ストリーム/ストレージ装置をより良く選択できる。例えば、ストレージ装置のオートストリーミング性能の変化は、図1のストレージ管理部135がこれ以上ストレージ装置のオートストリーミング性能に依存せずに、代わりに自らストリームを割り当てるべきであることを意味する場合もある。
図1のストレージ装置120が、そのストリーミング性能をアプデイトする理由の更に他の例示は、その物理的装置自体、又は図1のホストマシン105へのその連結の中の何れか1つにおける変化のためであり得る。例えば、図1のストレージ装置120が主要連結のためイーサネットを用い、補助連結として(例えば、コマンドプレーン(command plane)として)PCIe(Pheripheral Component Interconnect express)を用いるイーサネットSSDである場合、イーサネットの連結が失敗すると、図1のストレージ装置120はデータ通信のためPCIeの連結に切り替えられる。図1のホストマシン105への連結でのこの変化(帯域幅の減少など)は、図1のストレージ装置120がどのように利用されるかに影響を与える。
ストリーミング性能が図1のストレージ管理部135にどのように報告されるかの細部事項は、これまで議論されなかった。これは設計によるものである。本発明の実施例は、図1のストレージ装置120から図1のストレージ管理部135に報告される情報に専ら関心がある。従って、図1のストレージ管理部135に提示されるデータのフォーマット(format)には関心が低い。
2017年4月11日出願された米国仮特許出願(62/484,387)の利益を主張する、現在係属中の2017年7月18日出願された米国特許出願(15/653,479)(これら両者は、全ての目的のため、本明細書にここで参照により組み込まれる。)は、図1のストレージ装置120が、そのストリーミング性能を図1のストレージ管理部135に報告できる1つの方法を説明するが、しかし本発明の実施例は、図1のストレージ装置120がそのストリーミング性能を図1のストレージ管理部135に報告する他のメカニズムも支援できる。図1のストレージ管理部135に情報を報告する何らかの方法が有ると仮定できれば、その報告を作るのに使用される具体的なやり方は核心事ではない。
コントローラ410は開始時点において図1のストレージ装置120のセルフインベントリを遂行する。アプデイト感知器520の存在により言及されたように、コントローラ410はアプデイトが感知される場合のような他の時点でも、図1のストレージ装置120のセルフインベントリを遂行できる。コントローラ410は、甚だしくは変化が感知されない場合でも図1のストレージ装置120のセルフインベントリを遂行できる。コントローラ410は、図1のストレージ装置120の周期的なセルフインベントリを遂行できる。つまり、例えば、毎日一回(又は任意の他の所望の間隔で)などである。この周期はタイマー(timer)(図5で、図示されない)を用いて測定され、タイマーは周期測定を完了すると、ストリーミング性能分析器510及び送信機515の動作をトリガ(trigger)する。
図6は、図1のストレージ装置120から図1のストレージ管理部135へ報告され得る多様なストリーミング性能を図示する。図6で、ストリーミング性能605は下記のような多様な性能を包含する。
● 装置ストリームの個数610。つまり、図1のストレージ装置120が支援する図4の装置ストリーム425が幾つであるか。
● 消去ブロックのサイズ615。つまり、図1のストレージ装置120内の消去ブロックのサイズ(図1のストレージ装置120がガーベージコレクション又は類似した動作を遂行すると仮定)
● 物理的異種性(physical_heterogeneity)620。つまり、図1のストレージ装置120内の使用可能な相異なる類型のストレージが何であるか。例えば、図4で、フラッシュメモリチップ415-1、415-2、415-5、415-6はSLCであり、その反面、フラッシュメモリチップ415-3、415-4、415-7、415-8はMLCである。図1のストレージ装置120内の全てのストレージが同一の類型に属する場合には、図1のストレージ装置120内のどこにデータがライトされるかに関係せず、性能上の差異は無いか又は殆ど無い。しかし、図1のストレージ装置120が相異なる類型のストレージを支援する場合には、データが実際どこにライトされるかは、図1のストレージ装置120の性能に影響する。
● オートストリーミング性能625。つまり、ストレージ装置120がオートストリーミングを支援するか否か、そして図1のストレージ装置120により支援されるオートストリーミングのパラメータ。図1のストレージ装置120がオートストリーミングを支援し、そしてオートストリーミングのパラメータが有用であれば、図1のストレージ管理部135は外部から選択された装置ストリームを賦課する代わりに、内部的なオートストリーミングの遂行を図1のストレージ装置120に委任する。
● 最適のストリームのライトサイズ630。つまり、図1のストレージ装置120が最適の又は実質的に最適のストリームのライトサイズを有するか否か。最適のストリームのライトサイズ630は、他の因子の中でフラッシュ‐ブロックページサイズ、バッファサイズ、ストレージ装置120上で同時に動作するストリームの個数、これらのストリームにより消耗される帯域幅、及び他の因子を含む、ストレージ装置120の多様な制約因子に関連する。
● ストレージ内コンピューティング(In-Storage Computing: ISC)635。つまり、図1のストレージ装置120がストレージ内コンピューティングを提供するか否か。そして、提供する場合、プロセッサの個数、各プロセッサのIPS(秒当たり命令実行数)、ストレージ内コンピューティングプロセッサ上で実行されるアプリケーションにより使用されるデータを格納するために使用可能なメモリ量、などのストレージ内コンピューティング性能。
● プログラム及び消去速度のパラメータ640。つまり、図1のストレージ装置120が、どのようにガーベージコレクションを遂行するかに関するパラメータ(図1のストレージ装置120がガーベージコレクションを遂行すると仮定)。このパラメータは、消去ブロックを消去するのに必要な平均時間、消去ブロックから有効データをプログラムするのに必要な平均時間などを包含する。このパラメータは消去ブロックサイズ615を包含し得る。
● バッファサイズ645。つまり、ストレージ装置120内に含まれたバッファのサイズ。バッファサイズ645は追加的な関連のバッファ情報を包含できる。即ち、例えば、バッファが図4に提供された装置ストリーム425(又はネームスペース(namespace))の間に分割されるか否か、又はバッファが図4の装置ストリーム425(又はネームスペース)を通じて共有されるか否か。
● 処理能力(throughput)の制限650。つまり、図1のストレージ装置120の制限。例えば、使用可能な帯域幅又は待ち時間。
● ファームウェアのバージョン655。つまり、(図4の装置ストリーム425-1~425-3の動作に影響する)図1のストレージ装置120のファームウェアのバージョン。
図6で、図示された因子は図1のストレージ装置120のストリーミング性能に影響を与え得る因子の内の僅かな部分集合を示す。例えば、図1のストレージ装置120のフリー(未利用、free)ブロックの数(又は、関連して、百分率として図1のストレージ装置120がどのくらいフル(利用中、full)か)は、図1のストレージ装置120が早晩ガーベージコレクションを遂行する必要があるか否かを、そしてストレージ装置120のストリーミング性能に(少なくとも短期的に)、なお影響を与え得るかをある程度まで表わせる。
2017年4月11日出願された米国仮特許出願(62/484,387)の利益を主張する、現在係属中の2017年7月18日出願された米国特許出願(15/653,479)は本出願に関連し、これらの両者は、全ての目的のため本明細書にここで参照により組み込まれて図1のストレージ装置120に対する多数の他の情報を列挙し、該情報は図1のストレージ装置120の性能(よって、ストリーミング性能)に影響する。これらの因子の全ては、図6のストリーミング性能の一部として考慮され、よって図1のストレージ管理部135への報告の対象であり得る。
図7は、図6のストリーミング性能605を図1のストレージ管理部135に通信する図1のストレージ装置120を図示する。図7で、ストレージ管理部135は、ストレージ装置120からストリーミング性能(情報)605を要請する要請705をストレージ装置120に送信する。これに応答してストレージ装置120はストリーミング性能(情報)605をストレージ管理部135に返信する。ストレージ装置120は、要請という誘導なしにストリーミング性能605をストレージ管理部135に送信できる。つまり、要請705は選択的であり得るが、これは、何故、要請705が括弧付きで図示されたかを説明する。
前記した説明で、ストレージ管理部135は、図1のストレージ装置120の全てのストリーミング性能を知りたがると仮定した。この仮定は合理的であるが、ソフトウェアの要請に対して装置ストリーミング/ストレージ装置を選択する際の最大情報をストレージ管理部135に提供するので、ストレージ管理部135は図1のストレージ装置120のストリーミング性能の一部にのみ依存できる。この状況で、要請705はストレージ管理部135がどのストリーミング性能に、特別に関心があるかを規定でき、図1のストレージ装置120はその関心のあるストリーミング性能のみをストレージ管理部135に報告できる。
図8は、図1のマシン105上で実行され(run)、ソフトウェアストリームを介して要請を送信するアプリケーションを図示する。図8では、アプリケーション805が図示された。アプリケーション805はソフトウェアストリームの任意の個数を規定する。つまり、図8は、3個のソフトウェアストリーム810-1~810-3を図示する。要請805のような要請は各ストリームと関連される。
図9は、図1のストレージ管理部135の細部事項を図示する。図9で、ストレージ管理部135は受信機905、装置ストリーム選択機910、及び送信機915を包含する。受信機905は、図1のストレージ装置120から図6のストリーミング性能605を受信する。なお、受信機905は、図1のマシン105上のアプリケーションから図8の要請805を受信する。装置ストリーム選択機910は図8の要請805に対して、複数の装置ストリーム425から一つの装置ストリームを選択する。送信機915は、次に、図8の要請805を図1の選択されたストレージ装置120に送信し、その際、選択された装置ストリームを特定する。
図6のストリーミング性能605は、図1のストレージ装置120の性能に関する有用な情報を提供する反面、ストリーミングに影響与え得る特定の因子は、図1のストレージ装置120に必ずしも知られる必要はない。例えば、(図1のストレージ装置120が図1のマシン内になければ)ストレージ装置120と通信するのに必要な時間は、図1のストレージ装置120が知る範囲にない。従って、ストレージ管理部135は、なおオーグメンタ(augmenter、補強装置)920を包含できる。
オーグメンタ920はストレージ管理部135(又は図1のマシン105内の幾つかの他の構成要素)が測定できる、ストレージ装置に依存しない考慮事項を用いて図6のストリーミング性能605を補強する。オーグメンタ920は、他の可能性の中で、ストレージ管理部135と図1のストレージ装置との間で通信するのに必要な時間、又は図1のプロセッサ110と図1のストレージ装置120と間の連結による帯域幅を測定できる。ストレージ管理部135は、オーグメンタ920により決定された、この情報を図6のストリーミング性能605に加えて図1のストレージ装置120に関する追加情報として提供できる。
最終的に、ストレージ管理部135はストレージ925を包含する。ストレージ925は、図1の各ストレージ装置120からの図6のストリーミング性能605を格納できるストリーミング性能関連データ構造930などの情報を格納する。
本発明のいくつか実施例において、装置ストリーム選択機910はアプリケーションから個別要請を受信し、そして装置ストリーム選択機910はストレージ管理部135が各要請を受信する間に、適切な装置ストリームを選択する。しかし、本発明の他の実施例において、装置ストリーム選択機910は、どの装置ストリームが個別ソフトウェアストリームと関連された要請に対して使用されるべきかを事前に決定できる。本発明のこのような実施例において、ストレージ925はソフトウェアストリームを装置ストリームにマッピング(mapping)するマッピングデータ構造935を格納する。
図10(A)及び図10(B)は、図1のストレージ装置120の図6のストリーミング性能605と関連された情報を格納するための例示的な図9のストリーミング性能関連データ構造930、及びマッピング関連データ構造935を図示する。図10(A)には、表1005が図示された。そして、図10(B)には、表1010が図示された。
表1005は図1のストレージ装置120の図6のストリーミング性能605を格納できるデータ構造の例示である。表1005に図示された情報は単なる例示である。つまり、本発明の実施例は任意の個数のストレージ装置、ストレージ装置当たり(又は媒体類型当たり)任意の個数のストリーム、そしてストレージ装置当たり(又は媒体類型当たり)任意の他のパラメータを支援できる。
図10(A)の表1005において、装置は装置識別子(ID)により識別され、関連されたストリームIDが、格納される。装置ID_1、装置ID_2を有するストレージ装置(装置ID_1を有するストレージ装置は、単にSMRを提供する反面、装置ID_2を有するストレージ装置は、単にMLCを提供)は、物理的に同種である反面、装置ID_3を有するストレージ装置は物理的に異種である。即ち、ストレージ装置は多数の相異なる媒体の類型、特にSLC及びMLC媒体類型を有する。このような相異なる媒体の類型には表1005内において、それら自身の別々のエントリ(entry、)が設けられる。
装置ID_3を有するストレージ装置が多重の媒体類型を含む事実以外に、表1005は、なおストリーミングのためにストレージ装置を選択する際の、他の適切な因子を示す。装置ID_3を有するストレージ装置はストレージ内コンピューティングを支援する。一方、装置ID_1,_2を有するストレージ装置はそうではない。装置ID_2、_3を有するストレージ装置は、テール待ち時間(tail latency)の管理を支援する。一方、装置ID_1を有するストレージ装置はそうではない。装置ID_1を有するストレージ装置は6GBのSASの連結を利用する。一方、装置ID_2を有するストレージ装置は10GBのイーサネット連結を利用する。他方、装置ID_3を有するストレージ装置は4レーン(lane)のPCIe連結を利用する。装置ID_1を有するストレージ装置は64MBのガーベージコレクションの消去ブロックサイズを有する。一方、装置ID_2を有し、MLC媒体を提供するストレージ装置は、4MBのガーベージコレクションの消去ブロックサイズを有する。他方、装置ID_3を有し、SLC媒体を提供するストレージ装置は、1MBのガーベージコレクションの消去ブロックサイズを有する。
以上、全てで3個のストレージ装置は、装置ID_3を有するストレージ装置のSLC媒体のための低いものから、装置ID_1を有するストレージ装置のSMR媒体のための極めて高いものまで多様なガーベージコレクションの待ち時間を有する(「低い」、「中間」、「高い」、「極めて高い」のような任意的記述子を利用するよりは、数値的待ち時間が代わりに使用できる。)。以上全てで3個のストレージ装置は、なお相異なるバッファサイズを提供する。つまり、装置ID_3を有するストレージ装置はSLC及びMLC媒体の間でその1GBのバッファを共有する。
本発明がいくつかの実施例において、ストレージ装置はネームスペースと関連され得る。図10(A)及び図10(B)では図示されなかったが、本発明のこのような実施例は、表1005内の情報のより微細な細分性(granularity)を許容する。
図10(B)の表1010は図8のソフトウェアストリーム810-1~810-3から図4の装置ストリーム425-1~425-3へのマッピングに用いられるストリーミング関連情報を格納できるデータ構造935の例示である。表1010で、多様な使用事例が図示されている。つまり、(データが頻繁に変化しないと予想される)長期的な格納、(頻繁に変化するデータに対する高速アクセスが必要な)ストレージ内コンピューティング動作、そして(アクセス速度が重要と考慮される)高い処理能力、などの事例である。各使用事例には、多様なストレージ装置から選択されたストリーム、及び各使用事例のため選択されたストリームを識別するのに使用されて表1005内の列に対応する加重値が連関される。
(本発明の実施例では任意の所望の値及び/又は範囲の加重値を利用できるが)一般的に加重値は、0と1の間の値で割り当てられ、その特定のストリーミング性能により決まるストレージ装置のランク(rank)に関してその特定のストリーミング性能の相対的な優先順位を反映する。任意の与えられたストリーミング性能に対して、加重値が0に近いほどストリーミング性能がもっと重要なものと考えられる。
各ストレージ装置は、各ストリーミング性能によりランクされる。例示としてガーベージコレクションの待ち時間を使用すると、装置ID_3を有するストレージ装置のSLC媒体にはランク1が割り当てられ、反面装置ID_1を有するストレージ装置にはランク4が割り当てられる。より低い数字がより良いと見なされるので、加重値が0に近いほどストリーミング性能がもっと重要なものと考えられる。
ガーベージコレクション待ち時間のような幾つかの性能は、全ての使用事例において同一の方式でランクできる。例えば、ガーベージコレクションを遂行するのに必要な時間量が大きいほど、(該当性能に対する)ストレージ装置の性能が悪くなる。いくつかの使用事例に対して、この考慮が重要ではない場合があり、そして、他の使用事例に対して、この考慮が極めて重要であり得る。しかし、その性能がいくら重要であるかに関係なしにストレージ装置は、性能により同一の方式でランクされる。
反面に、幾つかのストリーミング性能は使用事例により異なる場合がある。例えば、図10(A)の表1005に図示されたストレージ装置の各々に対する媒体類型を考慮する。装置ID_1を有するストレージ装置はSMRを提供し、装置ID_1を有するストレージ装置はMLCを提供し、そして装置ID_3を有するストレージ装置はSLC及びMLCの双方を提供する。斯かる相異なる媒体は相異なる特性を有し、これは相異なる状況下においてデータを格納するための選択の良し悪しに影響する。
任意の媒体類型が任意の使用事例に対してデータを格納するのに利用できるけれども、特定の媒体類型は、相異なる使用事例によっては他の媒体類型より良く適合する場合がある。つまり、(必要な使用事例に依存するが、特定の環境では単一の媒体類型が全ての使用事例に対して最適になる場合があり得るが、)任意の特定の媒体類型が全ての使用事例に対して最適と考えられることはあまり無い。従って、長期間のデータ格納のためにはSMRが、SLC又はMLCの中の何れか1つより選好され、反面にストレージ内コンピューティング及び高い処理能力の使用事例のためには、SLCが選好される。
媒体類型によって、ストレージ装置に適切に加重値を与えるには、ストレージ装置を簡単にランキング(ranking)するのとは相異なる接近法が要求される。1つの可能性のある接近法は、問題の使用事例に基づいてそのストレージ装置に対するランクを決定する。例えばストレージ装置は、長期的な格納の使用事例のためには、装置ID_1、_2,_3の順序にランキングでき、他の使用事例のためには、装置ID_3,_2,_1の順序にランキングされる。他の可能性のある接近法は、全てのストレージ装置を同一の「ランク」を有するものとして単純に扱い、相異なる加重値を相異なる媒体類型に適用する。
例えば、長期的な格納の使用事例の場合には、高い加重を意味する0.25のような低い値がSMRに提供され、一方SLC及びMLCには0.5及び/又は0.75のような高い値(即ち、低い加重)が与えられる。逆に、ストレージ内コンピューティング及び高い処理能力の使用事例の場合には、SLCには0.25のような、低い値(高い加重)が与えられ、一方MLC及びSMRには0.5及び0.75のような、高い値(即ち、低い加重)が与えられる。(多様な媒体類型に対して図示された値は、単に例示的な値であり、そして任意の所望の値がその代わりに使用され得る。)何れの接近法を用いるにせよ、特定の使用事例のための最適のストレージ装置は、媒体類型の使用事例とどのように相互作用するのかを考慮に入れて決定される。
全ての加重値及びランクが、各性能のためストレージ装置に対して知られると、各使用事例のため、各ストリーミング性能のための各ストレージ装置のランクの加重和(weighted sum)が計算される。その次に、加重和が一番低いストレージ装置が、特定の使用事例に対する最適のストレージ装置として選択される。
ストレージ装置が特定のストリーミング性能のためランクされる方式によって、加重値がどのように割り当てられるかに差異を生ずることに留意されたい。例えば、ストレージ装置が、一番低いガーベージコレクション待ち時間から一番高いガーベージコレクション待ち時間までにランクされると、速いガーベージコレクションは正数の値の低い加重値により選好される。ストレージ装置が、一番高いガーベージコレクション待ち時間から一番低いガーベージコレクション待ち時間までにランクされると、速いガーベージコレクションは大きな絶対値を有する負数の加重値を要求する。
長期の格納の使用事例に対しては、装置ID_1を有するストレージ装置から、装置ストリーム0~3が選択される。SMR媒体はMLC又はSLC媒体の中で何れか1つより選好され、ストレージ内コンピューティング及びテール待ち時間管理は低い優先順位に考慮され、反面にガーベージコレクションの待ち時間は高い優先順位に考慮される。連結、ガーベージコレクションの消去ブロックサイズ、及びバッファサイズのための加重値0に注目されたい。つまり、斯かる基準はこの使用事例に対しては重要なものとして考慮されずに無視される。
ストレージ内コンピューティングの使用事例に対しては、装置ID_3を有するストレージ装置から、装置ストリーム12~13が選択される。ストレージ内コンピューティング性能のため加重値として-100の使用に注目されたい。この「大きな」負数の値はこのストリーミング性能が「必ず持つべき」基準であることを強調する。結局のところ、ストレージ装置がストレージ内コンピューティング性能を有しないと、そのストレージ装置はストレージ内コンピューティングの使用事例を支援できない。しかし、ストレージ内コンピューティングを提供する1つ以上のストレージ装置があれば、他のストリーミング性能のための加重値も相変わらず問題であり得る。従って、残りの加重値は、SLC媒体がSMR媒体より選好されるMLC媒体より選好され、テール待ち時間管理及びガーベージコレクション待ち時間は重要と見なされ、ガーベージコレクションの消去ブロックサイズ及びバッファサイズは、その重要性が低いと見なされ、そして連結(の類型)は無関係(irrelevant)と見なされることを示す。
高い処理能力の使用事例に対しては、装置ID_2を有するストレージ装置から、装置ストリーム4~11が選択される。加重値は、ストレージ内コンピューティング及びガーベージコレクション待ち時間は重要と考慮され、ガーベージコレクション消去ブロックサイズ及び連結(の類型)は中間程度の重要と考慮され、そしてテール待ち時間管理及びバッファサイズは重要性が低いと見なされることを示す。
(直接的に又は前述した使用事例を通じて)特定のソフトウェアストリームのための適切なストレージ装置を識別するのに利用される加重値は、図1のストレージ管理部135又は図8のアプリケーション805の中で何れか1つにより決定される。即ち、図8のアプリケーション805はソフトウェアストリームの特定の要求のため利用するべき加重値を規定し、又は、図1のストレージ管理部135は遂行される動作に基づいて、装置ストリームを選択するのに利用するべき適切な加重値を選択する。
例えば、データが長期の格納のためライトされると、データの速い接近及び頻繁な変化を要求する場合と異なる加重値の集合が適用される。加重値は、なお追加情報に基づいて設定され得る(又は調整され得る)。例えば、図8のアプリケーション805はその所望の加重値を設定できるが、しかし図1のマシン105により提供される約束されたQoSに基づいて(又は、図8アプリケーション805が何のために支払うかに基づいて)加重値はターゲットQoSを反映するように、上へ又は下へ調整される。
加重値が図8のアプリケーション805により提供されると、多重アプリケーションストリーム810-1~810-3(又は、相異なるアプリケーション805のためのアプリケーションストリーム)の各々が、図1の同一のストレージ装置120に対して同一の装置ストリームを要請すれば(又は後述するように、ストリームプール(pool)の容量を超過するのに十分な装置ストリームをストリームプールに対して要請すれば)、より良い加重和を有するアプリケーションストリームには要請された通りの装置ストリームが割り当てられる。一方、他のアプリケーションストリームには必ずしも最適ではない装置ストリーム(例えば、必ずしも最適ではない装置、又は必ずしも最適ではないストリームプールと関連された装置ストリーム)が割り当てられる。
アプリケーションにより提供された加重値を決定する他の方法は、互いに衝突するアプリケーションストリームの各々に要請された装置ストリームを割り当てた結果、特に、必ずしも最適ではない装置ストリームが割り当てられた他のアプリケーションストリームにおける結果を考慮することによる。例えば、1つの(第1)アプリケーションが極めて低い待ち時間の装置ストリームが必要な状況を考慮すれば、他の(第2)アプリケーションは簡単にSLCストレージを選好する。
図10(A)の表1005を用いると、斯かるアプリケーションストリームの双方は装置ID_3、ストリームID_12~_13を有するストレージ装置に向かうであろう。しかし、第2アプリケーションストリームはSLCを選好するかも知れないが、ストリームID_4~_11、又は、ストリームID_14~_17を用いるMLCでも満足できる。しかし、ストリームID_12~_13のみが第1アプリケーションストリームに必要な低い待ち時間を提供する。第1アプリケーションストリームにストリームID_12~_13の中で1つが割り当てられないと、第1アプリケーションストリームには相当に否定的な影響を被る。従って、選好するストリームが割り当てられなかった場合のアプリケーションストリームへの影響の大きさを比較することで、加重和に基づくならば他のアプリケーションがその装置ストリームを割り当てられるべき場合であっても、アプリケーションストリームはそれを選好する装置ストリームに割り当てられる場合がある。
一般的に、表1005,1010の中の1つのみが格納される。表の中で1つに情報が与えられると、他の表の情報が(少なくとも部分的に)誘導できる。
図11は、図1のストレージ管理部135がストリームをアプリケーションに割り当てる例示的なメカニズムの動作順序図を図示する。図11で、図3のストレージ管理部135は、図1のストレージ装置120からストリーミング性能605-1~605-kを受信する。図1のマシン105内に位置しないストレージ装置に対するネットワークの待ち時間のようなストレージ装置に依存しない考慮事項1105及び図8のソフトウェアストリーム810-1~810-3のQoS要求1110を結合して、図1のストレージ管理部135は装置ストリームを相異なる性能を提供するストリームの等級(classes、又はプール(pools))に分類する(1115)。
例えば、幾つかの装置ストリームは、反応の速い高性能ストリームとして分類され(様々な他の可能性がある中で、例えば、図1のストレージ装置120内の処理のためのストリームには高い優先順位が割り当てられ、又は、該ストリームは高い帯域幅、又は、低い待ち時間で動作する)、反面に他のストリームは低性能ストリームとして分類される(例えば、該ストリームは古いストレージ装置により提供され、又は該ストリームは遅い連結又はまだ安定的ではない連結を利用するストレージ装置により支援される)。
任意の個数の等級があり得る。つまり、本発明の実施例は、装置ストリームが「高い性能」又は「低い性能」で分類される場合に限定されない。相異なるストレージ装置及び媒体類型の数よりも等級の数は通常少ないが、図1のストレージ管理部135は任意の所望の個数の等級を設定できる。等級は必ずしも相互排他的ではない。つまり、ストレージ装置により支援される特定のストリームは、その可能な用途に依存して(例えば、高性能ストリームは、ストレージ内コンピューティングを支援するストリームでもあり得る)、複数の等級が割り当てられる。勿論、ストリームに複数の等級が割り当てられると、そのストリームが特定の用途に割り当てられると、(そのストリームを再び使用しようとする試みを防止するため)そのストリームは全ての等級から除去される必要がある。
図4の装置ストリーム425-1~425-3が等級分類されると、ソフトウェアストリームの要求1120に応答して、図1のストレージ管理部135は、図8のソフトウェアストリーム810-1~810-3のため装置ストリームを選択する(1125)。図1のストレージ管理部135は、図4の装置ストリーム425-1~425-3を利用する(1130)。図4の装置ストリーム425-1~425-3の利用(1130)は、ストリーミング性能605-1~605-3に影響するフィードバック(feedback)を惹起し、該フィードバックは図1のストリーミング管理部135に再び提供され、図1のストレージ管理部135が将来的に図4の装置ストリーム425-1~425-3をどのように利用するのかを潜在的に変更する。
装置ストリームを分類する(1115)のは選択的である(即ち、必須ではない)。図1のストレージ管理部135は、先に図4の装置ストリーム425-1~425-3を分類することなく、図8のソフトウェアストリーム810-1~810-3に対する図4の装置ストリーム425-1~425-3を選択できる。
図12は、図9の装置ストリーム選択機910の細部事項を図示する。図12で、 装置ストリーム選択機910は、マッパー(mapper)1205、マッピングアプデイタ(mapping updater)1210.及び加重値割り当て機(weight assignor)1215を包含する。マッパー1205は図6のストリーミンング性能605を獲得し、それらを図8のソフトウェアストリーム810-1~810-3とマッチアップする。マッピングアプデイタ1210は、図6のストリーミング性能605の変化を判別し、それに合わせてアプデイトする。
(別の選択肢として、図6のストリーミンング性能が変更されると、マッパー1205は単に再呼出しされて、図1のストレージ装置120のため、図6のストリーミング性能605を再生成する。)
そして、加重値割り当て機1215は、図8のソフトウェアストリーム810-1~810-3のために図4の装置ストリーム425-1~425-3を選択するに当たり使用するべき加重値を、ソフトウェアストリーム810-1~810-3に対するソフトウェアストリーム要求1120に割り当てる。加重値の割り当て機1215は、任意のソースから加重値を割り当てる。例えば、加重値は特定の使用事例のための使用者から、又は多様な使用事例のため、ストリーミング性能のための加重値を格納するファイルから出てくる。
図13は、図12のマッパー1205の細部事項を図示する。前述した通り、本発明の幾つかの実施例で、図1のストレージ管理部135は図4の装置ストリーム425-1~425-3及び図8のソフトウェアストリーム810-1~810-3を分類できる。図13は、本発明の斯かる実施例のマッパー1205の動作を示す。マッパー1205は装置ストリーム分類機(classifier)1305及びソフトウェアストリーム分類機1310を包含する。
装置ストリーム分類機1305は、図4の装置ストリーム425-1~425-3を等級別に、又はプール別に分類し、ソフトウェアストリーム分類機1310は、図8のソフトウェアストリーム810-1~810-3を等級別に同様に分類する。これにより、マッパー1205は、対応する等級に基づいて図8のソフトウェアストリーム810-1~810-3と図4の装置ストリーム425-1~425-3とをマッチングできる。
本発明の実施例は、従来のシステムより勝る幾つかの技術的な長所を提供する。一番目に、図1のストレージ管理部135に図1のストレージ装置120のストリーミング性能に関する、より多くの情報を提供するので、図1のストレージ管理部135は(ストレージ装置の内又はストレージ装置の全般にかけて)多重の媒体類型に跨るストリーミングを管理できる。二番目に、図1のストレージ管理部135は、図1のストレージ装置120を、より良く利用できる。例えば、図8のアプリケーション805は相異なるプロファイル(profiles)を相異なるストリームに割り当てできる。
従来のシステムでは、図8のアプリケーション805からのデータは、結局図3のストレージ装置120-1~120-5の何れかに格納配置されるが、その際、組織的配置が無く、図3のストレージ装置120-1~120-5におけるストリーミング特性に関する考慮が無ない。しかし、本発明の実施例においては、図8の相異なるソフトウェアストリーム810-1~810-3と関連されたデータは、特定の相異なるストレージ装置へ送信される。この結果は低性能ストリームのデータに対して高性能の資源を浪費するのを防止する。例えば、長期間格納されるデータはフラッシュメモリのストレージ装置よりHDDに格納され得る。
図14は、本発明の実施例により、図1のストレージ装置120が図6の自身のストリーミング性能605をセルフインベントリして、その情報を図1のストレージ管理部135に送信するための例示的な手順の順序図を図示する。図14において、ステップ1405で、図5の受信機505は、図1のストレージ管理部135から図7の要請705を受信する。破線の矢印1410で図示された通りに、ステップ1405は選択的である。ステップ1415で、図5のストリーミング性能分析器510は、図1のストレージ装置120の図6のストリーミング性能605を判別してインベントリする。ステップ1420で、図1のストレージ装置120は、図1のストレージ装置120を用いる図1のストレージ管理部135を識別する。破線の矢印1425で図示された通りに、ステップ1420は選択的である。ステップ1430で、図6の送信機615は、図6のストリーミング性能605を図1のストレージ管理部135へ報告する。
図1のストレージ装置120が図6のストリーミング性能605を単に一回だけセルフインベントリすると、順序図は終了できる。しかし、前述した通りに、図1のストレージ装置120は何回でも図6のストリーミング性能605をセルフインベントリする状況がある。一例で、図1のストレージ装置120は、一番正確な図6のストリーミング性能605を判別するため、セルフインベントリを周期的に反復し、その結果は図1のストレージ管理部135に報告される。
二番目の例で、図1のストレージ装置120は図6のストリーミング性能605が変化したことを感知し、これは、セルフインベントリを反復し、図1のストレージ管理部135へ報告することを正当化する。ステップ1415、1420、1430の反復は、図1のストレージ装置120が、図6のストリーミング性能605を図1の多重のストレージ管理部135に報告する場合、特に適切である。つまり、図1の1つのストレージ管理部135の動作は、他のストレージ管理部に影響を与え得るが、他のストレージ管理部は、図1のストレージ装置120が図6のストリーミング性能605の変化を、それらに報告しないと、その変化を知ることができない。
三番目の例で、ステップ1415、1420,1430が図6のストリーミング性能605を図1の1つのストレージ管理部135に報告することを説明した通りに、図1のストレージ装置120はストリーミング性能を1つ以上の図1のストレージ管理部135に報告する必要がある。
(図6のストリーミング性能605を図1のストレージ管理部135に報告する際に、ステップ1415を必ずしも多重回遂行せず、ステップ1420、1430のみを簡単に反復していると、ステップ1415が、なお反復される必要がある状況が有り得る。例えば、図1の相異なるストレージ管理部135が、報告された図6の相異なるストリーミング性能605を所望する場合である。)
図1のストレージ装置120が図6のストリーミング性能605の周期的な報告を遂行すれば、又は図1のストレージ装置120が図6のストリーミング性能605を図1の多数のストレージ管理部135に報告するべきであれば、破線1435に沿って追加的な報告が遂行される。或いは、図1のストレージ装置120が図6のストリーミング性能605が変化したと判別した場合、ステップ1440で、図5のアプデイト感知器520は斯かる確認(check)を遂行する。確認が図6のストリーミング性能605が変化したことを明示すると、制御は図6のストリーミング性能605のセルフインベントリを反復するため、ステップ1415に戻り、その情報を図1のストレージ管理部135に報告する。
図15は、本発明の実施例により、図6のストリーミング性能605が、いつ変化したかを判別するための、図1のストレージ装置120のための例示的な手順の順序図を図示する。図15において、ステップ1505で、図5のアプデイト感知器520は図4の装置ストリーム425の中で任意のものが特定の使用に割り当てられたか(よって、一般的に利用できない)を確認する。そうではないと(即ち、どの装置ストリームも割り当てられていない場合)、ステップ1510で、図5のアプデイト感知器520はオートストリーミング性能が変化したかを確認する。図1のストレージ装置120は、自身が受信するデータをどのように最適に管理するのかを判別するので、オートストリーミングは調整過程であり、従ってオートストリーミングは任意の時間で変化できる。
そうではないと(即ち、オートストリーミング性能が変化していない場合)、ステップ1515で、図5のアプデイト感知器520は、任意の他のストリーミング性能が変化したかを確認する。つまり、例えば、他の可能性と並んで、ストレージ装置の処理能力、ストレージ装置のリード/ライト/消去の待ち時間、割り当てられたか、又は割り当てが解除されたストリーム、大きなストレージ内コンンピューティング作業の始まりなどである。斯かる確認の中で何れか一つが肯定的な結果となる(即ち、変化が確認された)と、ステップ1520で、図1のストレージ装置120は図6のストリーミング性能605が変化したことを知る。そうではないと、ステップ1525で、図1のストレージ装置120は、図6のストリーミング性能605が変化しないことを知る。
図16は、本発明の実施例により、図1のストレージ管理部135が要請を図1のストレージ装置120の内の図4の装置ストリーム425に割り当てるための例示的な手順の順序図を図示する。図16において、ステップ1605で、図9の受信機905は図6のストレージ装置120から図6のストリーミング性能605を受信する。図9の受信機905が図1の1つ以上のストレージ装置120から図6のストリーミング性能605を受信すると、破線1610で図示された通りに、ステップ1605は反復される。ステップ1615で、図9のオーグメンタ920はストレージ装置に依存しない考慮事項を用いて図6のストリーミング性能605を補強する。破線で図示された通りに、ステップ1615は省略可能である。ステップ1625で、図9の受信機905は図8のソフトウェアストリーム810から図8の要請815を受信する。ステップ1630で、図1のストレージ管理部135は、図11のソフトウェアストリーム要求1125を判別する。ステップ1635で、図9の装置ストリーム選択機910は図4の装置ストリーム425を選択して図8のソフトウェアストリーム810から要請を受信する。ステップ1640で、図9の送信機915は、図8の要請815を図4の選択された装置ストリーム425へ送信する。
図17は、本発明の実施例により、図1のストレージ管理部135が、図8のソフトウェアストリーム810を図4の装置ストリーム425にマッピングするための例示的な手順の順序図を図示する。図17において、ステップ1705で、図13の装置ストリーム分類機1305は、図4の各装置ストリーム425を或る等級に割り当てる。ステップ1710で、図13のソフトウェアストリーム分類機1310は、図8の各ソフトウェアストリーム810を或る等級に割り当てる。ステップ1715で、図12のマッパー1205は、図8のソフトウェアストリーム810を図4の装置ストリーム425にマッピングする。ステップ1720で、図9の装置ストリーム選択機910は図8の特定のソフトウェアストリーム810のため、図4の装置ストリーム425を選択する。
ステップ1725で、図9の受信機905は図1のストレージ装置120から図6のアプデイトされたストリーミング性能605を受信する。この場合、ステップ1730で、図1のマッパーアプデイタ1210は図6のアプデイトされたストリーミング性能605に基づいて、図8のソフトウェアストリーム810から図4の装置ストリーム425へのマッピングをアプデイトする。
図18は、本発明の実施例により、図1のストレージ管理部135が、図8のソフトウェアストリーム810のため、図4の装置ストリーム425を選択するための例示的な手順の順序図を図示する。図18において、ステップ1805で、図12の加重値割り当て機1215は加重値を、図11のQoS要求1110に基づいて割り当てる。ステップ1810で、図1のストレージ管理部135は個別的なストリーミング性能に基づいて図4の装置ストリーム425をランクする。ステップ1815で、図1のストレージ管理部135はストリーミング性能の加重値及びランクに基づいて、加重和を用いて図8のソフトウェアストリーム810のため図4の装置ストリーム425を選択する。
以上、図14乃至図18において、本発明の幾つかの実施例が図示された。しかし、当業者はステップの順序の変更、ステップの省略す、又は図示されないリンク(link)の追加により、本発明の他の実施例も可能であると認識するはずである。順序図の全ての斯かる変形は明示的な説明の有無に係らず本発明の実施例であると見なされる。
以下の説明は、本発明の一部の側面が具現される適合なマシン又はマシンの簡潔で一般的な説明を提供するため意図される。単数又は複数のマシンは、少なくとも一部は、キーボード、マウスなどのような従来の入力装置からの入力によるだけでなく、他のマシンから受信される指示、仮想現実(VR)環境との相互作用、生体フィードバック、又は他の入力信号により制御される。本明細書で使用されるように、「マシン」の用語は単一マシン、仮想マシン、又は複数のマシン、複数の仮想マシン又は共に動作する装置と通信するように連結されたシステムを広く含むと意図される。例示的なマシンは、例えば、自動車、汽車、タクシーなどのような個人用又は公共輸送のような輸送装置だけではなくPC(Personal Computer)、ワークステーション、サーバ、ポータブルコンピュータ(portable computer)、ハンドヘルド(handheld)装置、電話、タブレット(tablet)などのようなコンピューティング装置を包含する。
単数又は複数のマシンはプログラム可能な又はプログラム不能な論理装置又は論理アレイ、ASIC(Application Specific Integrated Circuit)、エンベッデド(embedded)コンピュータ、スマートカードなどのエンベッデドコントローラを包含する。単数又は複数のマシンはネットワークインタフェース、モデム、又は他の通信連結を通じて一つ又はそれ以上の遠隔マシンに対する1つ以上の連結を使用する。マシンはイントラネット(intranet)、インタネット、LAN(Local Area Networks)、WAN(Wide Area Networks)などの物理的及び/又は論理的ネットワークの手段で互いに連結される。当業者はネットワーク通信が多様な有線及び/又は無線近距離又は遠距離キャリア(carrier)及び無線周波数(RF)、衛星、マイクロ波、IEEE 802.11、ブルートゥース(登録商標)、光学、赤外線、レーザーなどを含むプロトコルを利用することを理解している筈である。
本発明の実施例は、関数、手順、データ構造、アプリケーションプログラムなどを含む関連データを参照又は連携して記述できる。これらの関連データは結局、マシンによりアクセスされるときに、作業を遂行するか、或いは抽象的類型のデータ又は下位レベルのハードウェアコンテクスト(context)の定義を惹起するマシンに帰着する。関連データは、例えばRAM、ROMなどのような揮発性及び/又は不揮発性メモリ、又は他のストレージ装置、そしてハードドライブ、フロッピディスク、光学格納、テープ、フラッシュメモリ、メモリスティック(stick)、デジタルビデオディスク、生体格納などを含み関連する格納媒体に格納される。関連されたデータは物理的及び/又は論理的ネットワークを含む通信環境を通じてパケット、直列データ、並列データ、伝播された信号などの形態で伝達され、圧縮された又は暗号化されたフォーマットで使用される。関連データは、分散環境で使用でき、マシンアクセスのため地域的に及び/又は遠隔に格納できる。
本発明の実施例は、一つ又はそれ以上のプロセッサにより実行可能な命令を含む非一時的なマシンの読出し(リード)可能な媒体を含み、該命令は本明細書で説明されたように、本発明の要素を遂行する命令を包含する。
図示された実施例を参照して説明され、図示された本発明の原理を有すると、図示された実施例が、斯かる原理から逸脱せずに配列及び細部事項で修正されることができ、任意の所望の方法で組み合せられることが理解されるはずである。そして、前述した説明が具体的な実施例に集中したが、他の構成も又は考慮される。具体的に、「本発明の実施例による」のような説明又は本明細書で使用された、類似したことにも関わらず、斯かる文句は一般的に実施例の可能性を参照するため意図され、本発明を特定の実施例の構成に限定することを意図しない。本明細書で使用されたように、斯かる用語は他の実施例で組み合せ可能な同一な又は相異なる実施例を参照できる。
前述した例示的な実施例は、本発明をそれらに限定するものとして解釈されない。少ない実施例が説明されたが、当業者は本記載の新規な説明及び長所から実質的に逸脱せずに、斯かる実施例に対して多くの修正が可能であることを十分に理解するであろう。従って、斯かる全ての修正は請求項で定義されるように、本発明の範囲内に含まれることで意図される。
本発明の実施例は、制限なしに次の叙述に拡張されることができる。
叙述1.本発明の実施例はストレージ装置を含み、該ストレージ装置は、
データのためのストレージと、
前記ストレージに前記データをライト(write)するのに用いられる多数の装置ストリームと、
前記ストレージ装置のストリーミング性能をインベントリ(inventory)するストリーミング性能分析器と、
前記ストレージ装置の前記ストリーミング性能を少なくとも1つストレージ管理部に送信する送信機と、を包含する。

叙述2.本発明の実施例は叙述1によるストレージ装置を包含するが、
前記ストレージ装置は次のフォーマットの中で1つを支援する。つまり、 NVMeoF(Non-Volatile Memory express over Fabric)装置、シングルド(shingled)ハードディスクドライブ、フラッシュメモリのストレージ装置、及び混合された媒体ストレージ装置。

叙述3.本発明の実施例は叙述2によるストレージ装置を包含するが、前記フラッシュメモリのストレージ装置はフラッシュメモリのSSD(Solid State Drive)を包含する。

叙述4.本発明の実施例は叙述2によるストレージ装置を包含するが、前記混合された媒体ストレージは混合された媒体のSSDを包含する。

叙述5.本発明の実施例は叙述1によるストレージ装置を包含し、前記ストレージ装置は前記ストリーミング選択分析器及び前記送信機を含むコントローラをさらに包含する。

叙述6.本発明の実施例は叙述1によるストレージ装置を包含するが、
前記ストレージ装置は前記ストレージ装置の前記ストリーミング性能にアプデイトがある時を感知するように動作するアプデイト感知器をさらに包含し、
前記ストリーミング性能分析器は前記ストレージ装置の前記アプデイトされたストリーミング性能を再インベントリするように動作し、そして
前記送信機は前記ストレージ装置の前記アプデイトされたストリーミング性能を前記少なくとも1つのストレージ管理部に送信するように動作する。

叙述7.本発明の実施例は叙述1によるストレージ装置を包含するが、
前記ストリーミング性能分析器は前記ストレージ装置の前記ストリーミング性能を周期的にインベントリするように動作し、そして
前記送信機は各インベントリ以後に前期ストレージ装置の前記ストリーミング性能を前記少なくとも1つのストレージ管理部に送信するように動作する。

叙述8.本発明の実施例は叙述1によるストレージ装置を包含するが、
前記ストリーミング性能は、前記ストレージ装置により支援される前記多数の装置ストリーム、前記ストレージ装置上の消去ブロックのサイズ、前記ストレージ装置の物理的異種性の記述、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームライトのサイズ、前記ストレージ装置によりストレージ内コンピューティング(In-Storage Computing: ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、前記ストレージ装置により支援される前記装置ストリームの処理能力の制限、そして前記ストレージ装置のファームウェアバージョンを含む集合から導出される。

叙述9.本発明の実施例は叙述1によるストレージ装置を包含するが、
データのための前記ストレージは第1類型の第1ストレージ及び第2類型の第2ストレージを含み、前記第1類型は前記第2類型と相異なり、
前記ストレージ装置により支援される前記多数の装置ストリームの中で第1装置ストリームは前記第1ストレージと関連され、そして
前記ストレージ装置により支援される前記多数の装置ストリームの中で第2装置ストリームは前記第2ストレージと関連される。

叙述10.本発明の実施例は叙述1によるストレージ装置を包含し、前記ストレージ装置は前記少なくとも1つのストレージ管理部から前期ストレージ装置の前記ストリーミング性能に対する要請を受信する受信機をさらに包含する。

叙述11.本発明の実施例はストレージ管理部を包含し、ストレージ管理部は、
少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能、少なくとも1つのソフトウェアストリームに対する要求及び前記少なくとも1つのソフトウェアストリームからの要請を受信する受信機と、
前記少なくとも1つのソフトウェアストリーム及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対する前記要求に対応する前記少なくとも1つのストレージ装置により支援される多数の装置ストリームの中で1つを選択する装置ストリーム選択機と、及び
前記要請を前記少なくとも1つのストレージ装置の中で、前記多数の装置ストリームの中で選択された1つを支援する第1ストレージ装置に送信する送信機を包含する。
叙述12.本発明の実施例は叙述11によるストレージ管理部を包含し、ストレージ管理部はストレージ装置に依存しない考慮事項を用いて前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能を補強するオーグメンタ(augmenter)をさらに包含する。

叙述13.本発明の実施例は叙述11によるストレージ管理部を包含し、前記ストレージ管理部はホストマシン上のプロセッサ上で実行されるソフトウェアを用いて具現される。

叙述14.本発明の実施例は叙述11によるストレージ管理部を包含し、 前記ストレージ管理部はホストマシン内でハードウェアモジュールとして具現される。

叙述15.本発明の実施例は叙述11によるストレージ管理部を包含するが、前記ストリーミング性能は、前記ストレージ装置により支援される前記多数の装置ストリーム、前記ストレージ装置上の消去ブロックのサイズ、前記ストレージ装置の物理的異種性の記述、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームライトのサイズ、前記ストレージ装置によりストレージ内コンピューティング(In-Storage Ccomputing: ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、前記ストレージ装置により支援される前記装置ストリームの処理能力の制限、そして前記ストレージ装置のファームウェアバージョンを含む集合から導出される。

叙述16.本発明の実施例は叙述11のストレージ管理部を包含するが、前記ストリーム選択機は前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つへのマッピング(mapping)を生成するマッパー(mapper)を包含する。

叙述17.本発明の実施例は叙述16によるストレージ管理部を包含するが、
前記受信機は前記少なくとも1つのストレージ装置の少なくとも1つのアプデイトされたストリーミング性能を受信するように動作し、そして
前記装置ストリーム選択機は前記少なくとも1つのストレージ装置の前記少なくとも1つのアプデイトされたストリーミング性能に対応する前記マッピングをアプデイトするマッピングアプデイタをさらに包含する。

叙述18.本発明の実施例は叙述16によるストレージ管理部を包含するが、前記マッパーは、
前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの各々を少なくとも二つの等級の中で一つに割り当てる装置ストリーム分類機と、及び
前記少なくとも1つのソフトウェアストリームの各々を前記少なくとも二つの等級の中で一つに割り当てるソフトウェアストリーム分類機を包含し、
前記装置ストリーム選択機は前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で、前記少なくとも1つのソフトウェアストリームと共に等級内にある1つを選択するように動作する。

叙述19.本発明の実施例は叙述16によるストレージ管理部を包含し、ストレージ管理部は前記マッピングを格納するデータ構造のためのストレージをさらに包含する。

叙述20.本発明の実施例は叙述11によるストレージ管理部を包含し、ストレージ管理部は前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能を格納するデータ構造のためのストレージをさらに包含する。

叙述21.本発明の実施例は叙述11によるストレージ管理部を包含し、前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能は、前記少なくとも1つのストレージ装置が第1類型の第1ストレージと第2類型の第2ストレージとの包含を規定し、前記第1類型は前記第2類型と相異なる。

叙述22.本発明の実施例は叙述11によるストレージ管理部を包含し、前記少なくとも1つのストレージ装置は第1ストレージ装置及び第2ストレージ装置を包含し、前記第1ストレージ装置と前記第2ストレージ装置とは相異なるストリーミング性能を支援する。

叙述23.本発明の実施例は叙述22によるストレージ管理部を包含するが、
前記第1ストレージ装置は第1類型のストレージを支援し、そして
前記第2ストレージ装置は第2類型のストレージを支援し、前記第2類型のストレージは前記第1類型のストレージと相異なる。

叙述24.本発明の実施例は叙述22によるストレージ管理部を包含するが、前記相異なるストリーミング性能は相異なる多数の装置ストリーム、相異なる消去ブロックサイズ、相異なるストレージ容量、相異なるオートストリーミング性能、相異なる最適のストリームライトのサイズ、相異なるストレージ内コンピューティング性能、相異なるプログラム及び消去速度のパラメータ、相異なるバッファサイズ、相異なる処理能力の制限、そして相異なるファームウェアバージョンを包含する。

叙述25.本発明の実施例は叙述11によるストレージ管理部を包含するが、
前記少なくとも1つのソフトウェアストリームに対する前記要求は前記少なくとも1つのソフトウェアストリームに対する少なくとも二つの要求を包含し、
前記装置ストリーム選択機は加重値を前記少なくとも1つのソフトウェアストリームに対する前記少なくとも二つの要求に割り当てる加重値の割り当て機を包含し、そして
前記装置ストリーム選択機は前記加重値及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つを選択するように動作する。

叙述26.本発明の実施例は方法を包含し、方法は、
ストレージ装置のストリーミング性能を前記ストレージ装置により判別するステップと、
前記ストレージ装置と通信する少なくとも1つのストレージ管理部を識別するステップと、及び
前記ストリーミング性能を前記ストレージ装置で前記少なくとも1つのストレージ管理部に報告するステップと、を包含する。

叙述27.本発明の実施例は叙述26による方法を包含し、方法は、
前記ストレージ装置の第2ストリーミング性能を後で判別するステップと、及び
前記第2ストリーミング性能を前記少なくとも1つのストレージ管理部に報告するステップと、をさらに包含する。

叙述28.本発明の実施例は叙述26による方法を包含するが、
ストレージ装置のストリーミング性能を前記ストレージ装置により判別するステップは前記ストレージ装置の前記ストリーミング性能を前記ストレージ装置により周期的に判別するステップを包含し、そして
前記ストリーミング性能を前記ストレージ装置で前記少なくとも1つのストレージ管理部に報告するステップは前記ストリーミング性能を前記ストレージ装置で前記少なくとも1つのストレージ管理部に周期的に報告するステップを包含する。

叙述29.本発明の実施例は叙述26による方法を包含し、方法は、
前記ストレージ装置の前記ストリーミング性能が変化したことを識別するステップと、
前記ストレージ装置の前記ストリーミング性能が変化したことを識別した後、前記ストレージ装置の第2ストリーミング性能を判別するステップと、及び
前第2ストリーミング性能を前記少なくとも1つのストレージ管理部に報告するステップを更に包含する。

叙述30.本発明の実施例は叙述29による方法を包含するが、前記ストレージ装置の前記ストリーミング性能が変化したことを識別するステップは前記ストレージ装置により支援される多数の装置ストリームの中で1つを前記少なくとも1つのストレージ管理部の中で1つに割り当てるステップを包含する。

叙述31.本発明の実施例は叙述29による方法を包含するが、前記ストレージ装置の前記ストリーミング性能が変化したことを識別するステップは前記ストレージ装置のオートストリーミング性能を変更するステップを包含する。

叙述32.本発明の実施例は叙述26による方法を包含するが、前記ストリーミング性能は、前記ストレージ装置により支援される前記多数の装置ストリーム、前記ストレージ装置上の消去ブロックのサイズ、前記ストレージ装置の物理的異種性の記述、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームライトのサイズ、前記ストレージ装置によりストレージ内コンピューティング(in-storage computing: ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、前記ストレージ装置により支援される前記装置ストリームの処理能力の制限、そして前記ストレージ装置のファームウェアバージョンを含む集合から導出される。

叙述33.本発明の実施例は叙述32による方法を包含するが、
前記ストレージ装置の前記物理的異種性は第1類型の第1ストレージ及び第2類型の第2ストレージを包含し、前記第1類型は前記第2類型と相異なり、
前記ストレージ装置により支援される前記装置ストリームの中で第1装置ストリームは前記第1ストレージと関連され、そして
前記ストレージ装置により支援される前記装置ストリームの中で第2装置ストリームは前記第2ストレージと関連される。

叙述34.本発明の実施例は叙述26による方法を包含するが、前記ストレージ装置はNVMeoF(Non-Volatile Memory express over Fabric)装置、シングルドハード(shingled)ディスクドライブ、フラッシュメモリのストレージ装置及び混合された媒体のストレージ装置を包含する集合から導出される。

叙述35.本発明の実施例は叙述34による方法を包含するが、前記フラッシュメモリのストレージ装置はフラッシュメモリSSD(Solid State Drive)を包含する。

叙述36.本発明の実施例は叙述34による方法を包含するが、前記混合された媒体のストレージ装置は混合された媒体SSDを包含する。

叙述37.本発明の実施例は叙述26による方法を包含するが、
前記方法は前記少なくとも1つのストレージ管理部から前記ストレージ装置の前記ストリーミング性能に対する要請を受信するステップをさらに包含し、
ストレージ装置のストリーミング性能を前記ストレージ装置により判別するステップは、前記少なくとも1つのストレージ管理部から前記ストレージ装置の前記ストリーミング性能に対する前記要請に対応する前記ストレージ装置の前記ストリーミング性能を判別するステップを包含し、そして
前記ストリーミング性能を前記少なくとも1つのストレージ管理部に報告するステップは前記ストリーミング性能を前記少なくとも1つのストレージ管理部から前記ストレージ装置の前記ストリーミング性能に対する前記要請に対応する前記少なくとも1つのストレージ管理部に報告するステップを包含する。

叙述38.本発明の実施例は方法を包含し、方法は、
多数の装置ストリームを支援する少なくとも1つのストレージ装置の少なくとも2つのストリーミング性能を受信するステップと、
少なくとも1つのソフトウェアストリームから要請を受信するステップと、
前記少なくとも1つのソフトウェアストリームの少なくとも1つの要求を判別するステップと、
前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つを選択するステップと、及び
前記多数の装置ストリームの中で前記選択された少なくとも一つを用いて前記要請を前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのストレージ装置に送信するステップと、を包含する。

叙述39.本発明の実施例は叙述38による方法を包含し、前記少なくとも2つのストリーミング性能は多数の装置ストリーム、消去ブロックサイズ、ストレージ容量、オートストリーミング性能、最適のストリームライトのサイズ、ストレージ内コンピューティング性能、プログラム及び消去速度のパラメータ、バッファサイズ、処理能力の制限及びファームウェアバージョンの中で少なくとも1つに対して相異なる。
叙述40.本発明の実施例は叙述38による方法を包含するが、前記ストリーミング性能は、前記ストレージ装置により支援される前記多数の装置ストリーム、前記ストレージ装置上の消去ブロックのサイズ、前記ストレージ装置の物理的異種性の記述、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームライトのサイズ、前記ストレージ装置によりストレージ内コンピューティング(In-Storage Computing: ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、前記ストレージ装置により支援される前記装置ストリームの処理能力の制限、そして前記ストレージ装置のファームウェアバージョンを含む集合から導出される。

叙述41.本発明の実施例は叙述38による方法を包含し、方法はストレージ装置に依存しない考慮事項を用いて前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能を補強するステップと、をさらに包含する。

叙述42.本発明の実施例は叙述38による方法を包含し、前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つを選択するステップは、
前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つへのマッピング(mapping)を生成するステップと、及び
前記少なくとも1つのソフトウェアストリームに対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で前記少なくとも1つを選択する前記マッピングを用いるステップと、を包含する。

叙述43.本発明の実施例は叙述42による方法を包含するが、
前記少なくとも1つのストレージ装置の少なくとも1つのアプデイトされたストリーミング性能を受信するステップと、及び
前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのストレージ装置の前記少なくとも1つのアプデイトされたストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で前記少なくとも1つへの前記マッピングをアプデイトするステップと、をさらに包含する。

叙述44.本発明の実施例は叙述42による方法を包含するが、前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つへのマッピング(mapping)を生成するステップは、
前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの各々を前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能を用いて少なくとも2つの等級の中で1つに割り当てるステップと、
前記少なくとも1つのソフトウェアストリームを前記少なくとも2つの等級の中で1つに割り当てるステップと、及び
前記少なくとも1つのソフトウェアストリームを同一な等級を有する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で前記少なくとも1つに割り当てることで前記マッピングを生成するステップと、を包含する。

叙述45.本発明の実施例は叙述38による方法を包含するが、多数の装置ストリームを支援する少なくとも1つのストレージ装置の少なくとも2つのストリーミング性能を受信するステップは、
少なくとも第1類型のストレージを支援する少なくとも第1ストレージ装置の少なくとも第1ストリーミング性能を受信するステップと、及び
少なくとも第2類型のストレージを支援する少なくとも第2ストレージ装置の少なくとも第2ストリーミング性能を受信するステップを包含し、前記第2類型のストレージは前記第1類型のストレージと相異なる。

叙述46.本発明の実施例は叙述38による方法を包含するが、前記少なくとも1つのストレージ装置は第1類型の第1ストレージ及び第2類型の第2ストレージを包含し、前記第1類型は前記第2類型と相異なる。

叙述47.本発明の実施例は叙述38による方法を包含するが、
前記少なくとも1つのソフトウェアストリームの少なくとも1つの要求を判別するステップは前記少なくとも1つのソフトウェアストリームの少なくとも2つの要求を判別するステップを包含し、前記少なくとも2つの要求は前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能の部分集合を表し、そして
前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つを選択するステップは、
加重値を前記少なくとも1つのソフトウェアストリームの前記少なくとも2つの要求に割り当てるステップと、及び
前記加重値及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリ-ムの中で前記少なくとも1つを選択するステップと、を包含する。

叙述48.本発明の実施例は非一時的ストレージ媒体を含む物品を包含し、前記非一時的ストレージ媒体は機械により実行される時、
ストレージ装置のストリーミング性能を前記ストレージ装置により判別するステップと、
前記ストレージ装置と通信する少なくとも1つのストレージ管理部を識別するステップと、及び
前記ストリーミング性能を前記ストレージ装置で前記少なくとも1つのストレージ管理部に報告するステップを惹起する格納されたそれに対する命令語を有する。

叙述49.本発明の実施例は叙述48による物品を包含し、前記非一時的ストレージ媒体は機械により実行される時、
前記ストレージ装置の第2ストリーミング性能を後で判別するステップと、及び
前記第2ストリーミング性能を前記少なくとも1つのストレージ管理部に報告するステップを惹起する格納されたそれに対する追加の命令語を有する。

叙述50.本発明の実施例は叙述48による物品を包含し、前記非一時的ストレージ媒体は機械により実行される時、
前記ストレージ装置の前記ストリーミング性能が変化したことを識別するステップと、
前記ストレージ装置の前記ストリーミング性能が変化したことを識別した後、前記ストレージ装置の第2ストリーミング性能を判別するステップと、及び
前第2ストリーミング性能を前記少なくとも1つのストレージ管理部に報告するステップを惹起する格納されたそれに対する追加の命令語を有する。

叙述51.本発明の実施例は叙述48による物品を包含するが、前記ストレージ装置の前記ストリーミング性能が変化したことを識別するステップは前記ストレージ装置により支援される多数の装置ストリームの中で1つを前記少なくとも1つのストレージ管理部の中で1つに割り当てるステップを包含する。

叙述52.本発明の実施例は叙述50による物品を包含するが、前記ストレージ装置の前記ストリーミング性能が変化したことを識別するステップは前記ストレージ装置のオートストリーミング性能を変更するステップを包含する。

叙述53.本発明の実施例は叙述48による物品を包含するが、前記ストリーミング性能は、前記ストレージ装置により支援される前記多数の装置ストリーム、前記ストレージ装置上の消去ブロックのサイズ、前記ストレージ装置の物理的異種性の記述、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームライトのサイズ、前記ストレージ装置によりストレージ内コンピューティング(In-Storage Computing: ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、前記ストレージ装置により支援される前記装置ストリームの処理能力の制限、そして前記ストレージ装置のファームウェアバージョンを含む集合から導出される。

叙述54.本発明の実施例は叙述53による物品を包含するが、
前記ストレージ装置の前記物理的異種性は第1類型の第1ストレージ及び第2類型の第2ストレージを包含し、前記第1類型は前記第2類型と相異なり、
前記ストレージ装置により支援される前記装置ストリームの中で第1装置ストリームは前記第1ストレージと関連され、そして
前記ストレージ装置により支援される前記装置ストリームの中で第2装置ストリームは前記第2ストレージと関連される。

叙述55.本発明の実施例は叙述48による物品を包含するが、前記ストレージ装置はNVMeoF(Non-Volatile Memory express over Fabric)装置、シングルドハード(shingled)ディスクドライブ、フラッシュメモリのストレージ装置及び混合された媒体のストレージ装置を包含する集合から導出される。

叙述56.本発明の実施例は叙述55による物品を包含するが、前記フラッシュメモリのストレージ装置はフラッシュメモリSSD(Solid State Drive)を包含する

叙述57.本発明の実施例は叙述55による物品を包含するが、前記混合された媒体のストレージ装置は混合された媒体SSDを包含する。

叙述58.本発明の実施例は叙述48による物品を包含するが、
前記方法は前記少なくとも1つのストレージ管理部から前記ストレージ装置の前記ストリーミング性能に対する要請を受信するステップをさらに包含し、
ストレージ装置のストリーミング性能を前記ストレージ装置により判別するステップは、前記少なくとも1つのストレージ管理部から前記ストレージ装置の前記ストリーミング性能に対する前記要請に対応する前記ストレージ装置の前記ストリーミング性能を判別するステップを包含し、そして
前記ストリーミング性能を前記ストレージ装置で前記少なくとも1つのストレージ管理部に報告するステップは前記ストリーミング性能を前記少なくとも1つのストレージ管理部から前記ストレージ装置の前記ストリーミング性能に対する前記要請に対応する前記少なくとも1つのストレージ管理部に報告するステップを包含する。

叙述59.本発明の実施例は非一時的ストレージ媒体を含む物品を包含し、前記非一時的ストレージ媒体は機械により実行される時、
多数の装置ストリームを支援する少なくとも1つのストレージ装置の少なくとも2つのストリーミング性能を受信するステップと、
少なくとも1つのソフトウェアストリームから要請を受信するステップと、
前記少なくとも1つのソフトウェアストリームの少なくとも1つの要求を判別するステップと、
前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つを選択するステップと、及び
前記多数の装置ストリームの中で前記選択された少なくとも一つを用いて前記要請を前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのストレージ装置に送信するステップを惹起する格納されたそれに対する命令語を有する。

叙述60.本発明の実施例は叙述59による物品を包含するが、前記少なくとも2つのストリーミング性能は多数の装置ストリーム、消去ブロックサイズ、ストレージ容量、オートストリーミング性能、最適のストリームライトのサイズ、ストレージ内コンピューティング性能、プログラム及び消去速度のパラメータ、バッファサイズ、処理能力の制限及びファームウェアバージョンの中で少なくとも1つに対して相異なる。

叙述61.本発明の実施例は叙述59による物品を包含するが、前記ストリーミング性能は、前記ストレージ装置により支援される前記多数の装置ストリーム、前記ストレージ装置上の消去ブロックのサイズ、前記ストレージ装置の物理的異種性の記述、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームライトのサイズ、前記ストレージ装置によりストレージ内コンピューティング(in-storage computing: ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、前記ストレージ装置により支援される前記装置ストリームの処理能力の制限、そして前記ストレージ装置のファームウェアバージョンを含む集合から導出される。

叙述62.本発明の実施例は叙述59による物品を包含し、前記非一時的ストレージ媒体は機械により実行される時、ストレージ装置に依存しない考慮事項を用いて前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能を補強するステップ惹起する格納されたそれに対する追加命令語を有する。

叙述63.本発明の実施例は叙述59による物品を包含するが、前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つを選択するステップは、
前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つへのマッピング(mapping)を生成するステップと、及び
前記少なくとも1つのソフトウェアストリームに対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で前記少なくとも1つを選択する前記マッピングを用いるステップと、を包含する。

叙述64.本発明の実施例は叙述63による物品を包含し、前記非一時的ストレージ媒体は機械により実行される時、
前記少なくとも1つのストレージ装置の少なくとも1つのアプデイトされたストリーミング性能を受信するステップと、及び
前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのストレージ装置の前記少なくとも1つのアプデイトされたストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で前記少なくとも1つへの前記マッピングをアプデイトするステップを惹起する格納されたそれに対する追加命令語を有する。

叙述65.本発明の実施例は叙述63による物品を包含するが、前記少なくとも1つのソフトウェアストリームで前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つへのマッピング(mapping)を生成するステップは、
前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの各々を前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能を用いて少なくとも2つの等級の中で1つに割り当てるステップと、
前記少なくとも1つのソフトウェアストリームを前記少なくとも2つの等級の中で1つに割り当てるステップと、及び
前記少なくとも1つのソフトウェアストリームを同一な等級を有する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で前記少なくとも1つに割り当てることで前記マッピングを生成するステップと、を包含する。

叙述66.本発明の実施例は叙述59による物品を包含するが、多数の装置ストリームを支援する少なくとも1つのストレージ装置の少なくとも2つのストリーミング性能を受信するステップは、
少なくとも第1類型のストレージを支援する少なくとも第1ストレージ装置の少なくとも第1ストリーミング性能を受信するステップと、及び
少なくとも第2類型のストレージを支援する少なくとも第2ストレージ装置の少なくとも第2ストリーミング性能を受信するステップを包含し、前記第2類型のストレージは前記第1類型のストレージと相異なる。

叙述67.本発明の実施例は叙述59による物品を包含するが、前記少なくとも1つのストレージ装置は第1類型の第1ストレージ及び第2類型の第2ストレージを包含し、前記第1類型は前記第2類型と相異なる。

叙述68.本発明の実施例は叙述59による物品を包含するが、
前記少なくとも1つのソフトウェアストリームの少なくとも1つの要求を判別するステップは前記少なくとも1つのソフトウェアストリームの少なくとも2つの要求を判別するステップを包含し、前記少なくとも2つの要求は前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能の部分集合を表し、そして
前記少なくとも1つのソフトウェアストリームの前記少なくとも1つの要求及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中で少なくとも1つを選択するステップは、
加重値を前記少なくとも1つのソフトウェアストリームの前記少なくとも2つの要求に割り当てるステップと、及び
前記加重値及び前記少なくとも1つのストレージ装置の前記少なくとも1つのストリーミング性能に対応する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリ-ムの中で前記少なくとも1つを選択するステップと、を包含する。
結論的に、本明細書に説明された実施例に対する幅広く多様な変更の観点から、この詳細な説明及び添付された資料は単に例示的なものとして意図され、本発明の範囲を限定するものと見做されてはならない。従って、本発明として請求されるのは以下の請求項及びその均等物の範囲及び思想内に有り得るような全ての変形である。
本発明は、マルチストリーミングのために相異なる性能の異種SSDのストリーム管理に有用である。
105 マシン
110 プロセッサ
115 メモリ
120 ストレージ装置
120-1 シングルドHDD
120-2 新型SSD(フラッシュメモリストレージ装置)
120-3 混合媒体ストレージ装置
120-4 旧型SSD(フラッシュメモリストレージ装置)
120-5 NVMeoF_SSD(フラッシュメモリストレージ装置)
125 メモリコントローラ
135 ストレージ管理部
205 クロック
210 コネクタ
215 バス
220 インタフェース
225 入出力エンジン
305 プロトコル
305-1 旧型プロトコル(SATA、SCSI)
305-2 PCIe(x4)
305-3 SAS
305-4 PCIe(x2)
305-5 イーサネット
405 インタフェースロジック
410 コントローラ、SSDコントローラ
415 ストレージ
415-1~415-8 フラッシュメモリチップ
420、420-1~420-4 チャンネル
425、425-1~425-3 装置ストリーム
430 フラッシュ変換階層
505,905 受信機
510 ストリーミング性能分析器
515,915 送信機
520 アプデイト感知器
605 ストリーミング性能
610 装置ストリームの個数
615 消去ブロックサイズ
620 物理的異種性
625 オートストリーミング性能
630 最適のストリームライトサイズ
635 ストレージ内コンピューティング
640 プログラム/消去速度のパラメータ
645 バッファサイズ
650 処理能力の制限
655 ファームウェアバージョン
705 要請
805 アプリケーション
810、810-1~810-3 ソフトウェアストリーム、ソフトウェアストリーム1~3
815 要請
910 装置ストリーム選択機
920 オーグメンタ
925 ストレージ
930 ストリーミング性能関連データ構造
935 マッピング関連データ構造
1005 表
1010 表
1110 QoS要求
1115 装置ストリームを分類
1120 ソフトウェアストリーム要求
1125 装置ストリームを選択
1130 装置ストリームを利用
1205 マッパー
1210 マッピングアプデイタ
1215 加重値割り当て器
1305 装置ストリーム分類器
1310 ソフトウェアストリーム分類器

Claims (23)

  1. ストレージ装置であって、
    第1類型の第1ストレージ及び前記第1類型とは異なる第2類型の第2ストレージを含むデータのためのストレージと、
    前記第1ストレージ及び前記第2ストレージからのデータのリード(read)と前記第1ストレージ及び前記第2ストレージへのデータのライト(write)とを制御する1つ以上のコントローラと、
    前記ストレージへのデータのライトに用いられる多数の装置ストリームと、
    前記ストレージ装置のストリーミング性能インベントリ(inventory)を作成する、少なくとも一部がプロセッサで実装されるストリーミング性能分析器と、
    前記ストレージ装置のストリーミング性能を少なくとも1つのストレージ管理部に送信する送信機と、を備え、
    前記第1ストレージは、少なくとも第1チャネル及び第2チャネルによりアクセスされ、
    前記第2ストレージは、少なくとも第3チャネル及び第4チャネルによりアクセスされ、
    前記ストレージ装置により支援される前記多数の装置ストリームの中の第1装置ストリームは、前記第1ストレージに関連し、
    前記ストレージ装置により支援される前記多数の装置ストリームの中の第2装置ストリームは、前記第2ストレージに関連し、
    前記多数の装置ストリームの中の第1装置ストリームは、前記第1チャネル又は前記第2チャネルのいずれかを介して前記第1ストレージに第1データを格納するように用いられ、
    前記多数の装置ストリームの中の第2装置ストリームは、前記第3チャネル又は前記第4チャネルのいずれかを介して前記第2ストレージに第2データを格納するように用いられ、
    前記ストリーミング性能は、前記ストレージ装置の消去ブロックサイズ、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームのライトサイズ、前記ストレージ装置により支援されるストレージ内コンピューティング(In-Storage Computing:ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、並びに前記ストレージ装置により支援される装置ストリームの処理能力(throughput)の制限、の全てを含む集合から導出されることを特徴とするストレージ装置。
  2. 前記ストレージ装置は、前記ストレージ装置のストリーミング性能にアップデイトがある場合を感知するように動作する、少なくとも一部が前記プロセッサで実装されるアップデイト感知器を更に含み、
    前記ストリーミング性能分析器は、前記ストレージ装置のアップデイトされたストリーミング性能インベントリを再作成するように動作し、
    前記送信機は、前記ストレージ装置のアップデイトされたストリーミング性能を前記少なくとも1つのストレージ管理部に送信するように動作することを特徴とする請求項1に記載のストレージ装置。
  3. 前記ストレージ管理部は、ソフトウェアストリームのQoS(Quality of Service)要求及び前記ストレージ装置のストリーミング性能の中の少なくとも一部に基づいて1つ以上の操作を実行するように動作することを特徴とする請求項1に記載のストレージ装置。
  4. 前記QoS要求は、最少帯域幅、最大帯域幅、優先レベル、最大レイテンシ、及び好ましいレイテンシレベルの中の少なくとも1つを含むことを特徴とする請求項3に記載のストレージ装置。
  5. 前記ストレージ管理部は、全てのQoS要求の合計が前記ストレージ装置の性能を超えないことを保証するように動作することを特徴とする請求項4に記載のストレージ装置。
  6. 少なくとも1つのストレージ装置からの前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能、少なくとも1つのソフトウェアストリームに対するQoS(Quality of Service)要求、及び前記少なくとも1つのソフトウェアストリームからの要請を受信する受信機と、
    前記少なくとも1つのソフトウェアストリームに対するQoS要求及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのストレージ装置により支援される多数の装置ストリームの中の1つを選択する、少なくとも一部がプロセッサで実装される装置ストリーム選択機と、
    前記多数の装置ストリームの中から選択される1つを支援する前記少なくとも1つのストレージ装置の中の第1ストレージ装置に前記要請を送信する送信機と、を備え、
    前記多数の装置ストリームの中から選択される1つに関連するデータは、前記ストレージ装置により提供される少なくとも2つのチャネルの中のいずれかを通じてライト(write)され、
    前記第1ストレージ装置は、前記ストレージ装置からのデータをリード(read)し前記ストレージ装置へのデータをライトするように制御する第1コントローラを含み、
    前記QoS要求は、最少帯域幅、最大帯域幅、優先レベル、最大レイテンシ、又は好ましいレイテンシの中の少なくとも1つを含み
    前記少なくとも1つのソフトウェアストリームは、アプリケーションによって規定され、
    前記ストリーミング性能は、前記ストレージ装置の消去ブロックサイズ、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームのライトサイズ、前記ストレージ装置により支援されるストレージ内コンピューティング(ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、並びに前記ストレージ装置により支援される装置ストリームの処理能力の制限、の全てを含む集合から導出されることを特徴とするストレージ管理部。
  7. ストレージ装置に依存しない考慮事項を用いて前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能を補強する、少なくとも一部が前記プロセッサで実装されるオーグメンタ(augmenter)を更に含み、
    前記ストレージ装置に依存しない考慮事項は、前記ストレージ管理部と前記少なくとも1つのストレージ装置との間の帯域幅、又は前記ストレージ管理部と前記少なくとも1つのストレージ装置との間の通信に要求される時間の中の少なくとも1つを含むことを特徴とする請求項6に記載のストレージ管理部。
  8. 前記装置ストリーム選択機は、前記少なくとも1つのソフトウェアストリームのQoS要求及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのソフトウェアストリームから前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つへのマッピング(mapping)を生成する、少なくとも一部が前記プロセッサで実装されるマッパー(mapper)を含むことを特徴とする請求項6に記載のストレージ管理部。
  9. 前記マッピングを格納するデータ構造のためのストレージを更に含むことを特徴とする請求項8に記載のストレージ管理部。
  10. 前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能を格納するデータ構造のためのストレージを更に含むことを特徴とする請求項6に記載のストレージ管理部。
  11. 前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能は、前記少なくとも1つのストレージ装置が第1類型の第1ストレージ及び前記第1類型とは異なる第2類型の第2ストレージを含むことを規定することを特徴とする請求項6に記載のストレージ管理部。
  12. 前記少なくとも1つのストレージ装置は、第1ストレージ装置及び第2ストレージ装置を含み、
    第1コントローラを含む前記第1ストレージ装置と第2コントローラを含む前記第2ストレージ装置とは、異なるストリーミング性能を支援することを特徴とする請求項6に記載のストレージ管理部。
  13. 前記第1ストレージ装置は、第1類型のストレージを支援し、
    前記第2ストレージ装置は、前記第1類型のストレージとは異なる第2類型のストレージを支援することを特徴とする請求項12に記載のストレージ管理部。
  14. 前記異なるストリーミング性能は、異なる消去ブロックサイズ、異なるストレージ容量、異なるオートストリーミング性能、異なる最適のストリームのライトサイズ、異なるストレージ内コンピューティング性能、異なるプログラム及び消去速度のパラメータ、異なるバッファサイズ、並びに異なる処理能力の制限を含むことを特徴とする請求項12に記載のストレージ管理部。
  15. 前記少なくとも1つのソフトウェアストリームに対するQoS要求は、前記少なくとも1つのソフトウェアストリームに対する少なくとも2つのQoS要求を含み、
    前記装置ストリーム選択機は、前記少なくとも1つのソフトウェアストリームに対する少なくとも2つのQoS要求に加重値を割り当てる、少なくとも一部が前記プロセッサで実装される加重値の割り当て機を含み、
    前記装置ストリーム選択機は、前記少なくとも1つのソフトウェアストリームに対する要求、前記加重値、及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つを選択するように動作することを特徴とする請求項6に記載のストレージ管理部。
  16. 前記ストレージ管理部は、全てのQoS要求の合計が前記ストレージ装置の性能を超えないことを保証するように動作することを特徴とする請求項6に記載のストレージ管理部。
  17. ストレージ管理部で、多数の装置ストリームを支援する少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能を受信するステップと、
    ストレージ管理部で、アプリケーションによって規定され少なくとも1つのソフトウェアストリームからの要請を受信するステップと、
    前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS(Quality of Service)要求を判別するステップと、
    前記ストレージ管理部で、前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS要求及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つを選択するステップと、
    前記ストレージ管理部が前記多数の装置ストリームの中から選択される少なくとも1つを用いて、前記少なくとも1つのソフトウェアストリームからの前記要請を前記少なくとも1つのストレージ装置に送信するステップと、を有し、
    前記少なくとも1つのQoS要求は、最少帯域幅、最大帯域幅、優先レベル、最大レイテンシ、又は好ましいレイテンシレベルの中の少なくとも1つを含み、
    前記多数の装置ストリームの中から選択される少なくとも1つに関連するデータは、前記少なくとも1つのストレージ装置により提供される少なくとも2つのチャネルの中のいずれかを通じてライト(write)され、
    前記ストレージ装置は、前記ストレージ装置からのデータをリード(read)し前記ストレージ装置へのデータをライトするように制御するコントローラを含み、
    前記ストリーミング性能は、前記ストレージ装置上の消去ブロックサイズ、前記ストレージ装置のオートストリーミング性能、前記ストレージ装置の最適のストリームのライトサイズ、前記ストレージ装置により支援されるストレージ内コンピューティング(ISC)、前記ストレージ装置のプログラム及び消去速度のパラメータ、前記ストレージ装置のバッファサイズ、並びに前記ストレージ装置により支援される装置ストリームの処理能力の制限、の全てを含む集合から導出されることを特徴とする方法。
  18. ストレージ装置に依存しない考慮事項を用いて前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能を補強するステップを更に含み、
    前記ストレージ装置に依存しない考慮事項は、前記ストレージ管理部と前記少なくとも1つのストレージ装置との間の帯域幅、又は前記ストレージ管理部と前記少なくとも1つのストレージ装置との間の通信に要求される時間の中の少なくとも1つを含むことを特徴とする請求項17に記載の方法。
  19. 前記ストレージ管理部で、前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS要求及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つを選択するステップは、
    前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS要求及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのソフトウェアストリームから前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つへのマッピング(mapping)を生成するステップと、
    前記マッピングを用いて前記少なくとも1つのソフトウェアストリームに対応するように、前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つを選択するステップと、を含むことを特徴とする請求項17に記載の方法。
  20. 前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS要求及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのソフトウェアストリームから前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つへのマッピング(mapping)を生成するステップは、
    前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの各々を前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能を用いて少なくとも2つの等級の中の1つに割り当てるステップと、
    前記少なくとも1つのソフトウェアストリームを前記少なくとも2つの等級の中の1つに割り当てるステップと、
    同一の等級を有する前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つに前記少なくとも1つのソフトウェアストリームを割り当てることによりマッピングを生成するステップと、を含ことを特徴とする請求項19に記載の方法。
  21. 前記ストレージ管理部で、多数の装置ストリーム及び少なくとも2つの異なる類型のストレージを支援する少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能を受信するステップは、
    前記ストレージ管理部で、第1コントローラを含み前記少なくとも2つの異なる類型のうちの少なくとも第1類型のストレージを支援する少なくとも1つの第1ストレージ装置のストリーミング性能のうちの少なくとも第1ストリーミング性能を受信するステップと、
    前記ストレージ管理部で、第2コントローラを含み少なくとも前記第1類型のストレージとは異なる第2類型のストレージを支援する少なくとも1つの第2ストレージ装置のストリーミング性能のうちの少なくとも第2ストリーミング性能を受信するステップと、を含むことを特徴とする請求項17に記載の方法。
  22. 前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS要求を判別するステップは、前記少なくとも1つのソフトウェアストリームの少なくとも2つのQoS要求を判別するステップを含み、
    前記少なくとも2つのQoS要求は、前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能の部分集合を表し、
    前記ストレージ管理部で、前記少なくとも1つのソフトウェアストリームの少なくとも1つのQoS要求及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリームの中の少なくとも1つを選択するステップは、
    前記少なくとも1つのソフトウェアストリームの少なくとも2つのQoS要求に加重値を割り当てるステップと、
    前記ストレージ管理部で、前記加重値及び前記少なくとも1つのストレージ装置の少なくとも1つのストリーミング性能に対応するように、前記少なくとも1つのストレージ装置により支援される前記多数の装置ストリ-ムの中の少なくとも1つを選択するステップと、を含むことを特徴とする請求項17に記載の方法。
  23. 前記ストレージ管理部は、全てのQoS要求の合計が前記ストレージ装置の性能を超えないことを保証するように動作することを特徴とする請求項17に記載の方法。
JP2018089023A 2017-05-03 2018-05-07 マルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法 Active JP6993929B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762501087P 2017-05-03 2017-05-03
US62/501,087 2017-05-03
US201762511957P 2017-05-26 2017-05-26
US62/511,957 2017-05-26
US15/690,270 2017-08-29
US15/690,270 US20180321855A1 (en) 2017-05-03 2017-08-29 Multistreaming in heterogeneous environments

Publications (3)

Publication Number Publication Date
JP2018190425A JP2018190425A (ja) 2018-11-29
JP2018190425A5 JP2018190425A5 (ja) 2021-06-10
JP6993929B2 true JP6993929B2 (ja) 2022-01-14

Family

ID=64014700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018089023A Active JP6993929B2 (ja) 2017-05-03 2018-05-07 マルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法

Country Status (5)

Country Link
US (3) US20180321855A1 (ja)
JP (1) JP6993929B2 (ja)
KR (1) KR102559022B1 (ja)
CN (1) CN108806750B (ja)
TW (1) TWI771396B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11024390B1 (en) * 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US11262942B2 (en) * 2018-07-16 2022-03-01 ScaleFlux, Inc. Integrating host-side storage device management with host-side non-volatile memory
EP3857952A4 (en) * 2018-09-27 2022-07-06 Telefonaktiebolaget LM Ericsson (publ) METHOD AND DEVICE FOR INTERACTION BETWEEN WIRELESS AND WIRED COMMUNICATION NETWORKS
TWI710904B (zh) * 2019-02-18 2020-11-21 宏碁股份有限公司 資料寫入方法與儲存裝置
CN109979508A (zh) * 2019-03-15 2019-07-05 合肥沛睿微电子股份有限公司 固态硬盘装置与相关的固态硬盘控制电路
TWI701552B (zh) * 2019-03-22 2020-08-11 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
US11500587B2 (en) * 2020-11-20 2022-11-15 Samsung Electronics Co., Ltd. System and method for in-SSD data processing engine selection based on stream IDs

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012523623A (ja) 2009-04-08 2012-10-04 グーグル インコーポレイテッド フラッシュメモリデータストレージデバイスのパーティション化
JP2016170583A (ja) 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160299715A1 (en) 2015-04-10 2016-10-13 Kabushiki Kaisha Toshiba Storage system capable of invalidating data stored in a storage device thereof
US20160313943A1 (en) 2015-04-24 2016-10-27 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US7296124B1 (en) * 2004-06-29 2007-11-13 National Semiconductor Corporation Memory interface supporting multi-stream operation
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
JP4524703B2 (ja) * 2008-02-29 2010-08-18 ソニー株式会社 情報処理装置および方法、並びにプログラム
EP2455865B1 (en) 2009-07-17 2020-03-04 Toshiba Memory Corporation Memory management device
JP2011175615A (ja) * 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス
WO2012020544A1 (ja) 2010-08-11 2012-02-16 日本電気株式会社 データ処理システム、データ処理方法、およびプログラム
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US8682639B2 (en) 2010-09-21 2014-03-25 Texas Instruments Incorporated Dedicated memory window for emulation address
US20120290786A1 (en) 2011-05-11 2012-11-15 Mesnier Michael P Selective caching in a storage system
KR102079339B1 (ko) * 2011-08-31 2020-02-19 삼성전자주식회사 클라우드 시스템상의 컨텐츠를 디엘엔에이로 연결된 디바이스로 전달하는 전자 장치 및 방법
US9158461B1 (en) * 2012-01-18 2015-10-13 Western Digital Technologies, Inc. Measuring performance of data storage systems
US8788658B2 (en) * 2012-02-03 2014-07-22 International Business Machines Corporation Allocation and balancing of storage resources
JP5723812B2 (ja) 2012-03-16 2015-05-27 株式会社 日立産業制御ソリューションズ ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム
US20160196076A1 (en) 2013-07-08 2016-07-07 Wilus Institute Of Standards And Technology Inc. Memory system and method for controlling same
US9542293B2 (en) * 2014-01-14 2017-01-10 Netapp, Inc. Method and system for collecting and pre-processing quality of service data in a storage system
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US9740574B2 (en) * 2014-05-09 2017-08-22 Commvault Systems, Inc. Load balancing across multiple data paths
US20160044077A1 (en) 2014-08-06 2016-02-11 Dell Products L.P. Policy use in a data mover employing different channel protocols
US10963126B2 (en) 2014-12-10 2021-03-30 D2L Corporation Method and system for element navigation
US9886210B2 (en) * 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US9552384B2 (en) 2015-06-19 2017-01-24 HGST Netherlands B.V. Apparatus and method for single pass entropy detection on data transfer
KR102381343B1 (ko) 2015-07-27 2022-03-31 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US9582250B1 (en) 2015-08-28 2017-02-28 International Business Machines Corporation Fusion recommendation for performance management in streams
KR102401600B1 (ko) 2015-08-31 2022-05-25 삼성전자주식회사 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치
US10681110B2 (en) 2016-05-04 2020-06-09 Radware, Ltd. Optimized stream management
JP2018022275A (ja) 2016-08-02 2018-02-08 東芝メモリ株式会社 半導体記憶装置
US10768829B2 (en) * 2017-02-15 2020-09-08 Microsoft Technology Licensing, Llc Opportunistic use of streams for storing data on a solid state device
US10298649B2 (en) 2017-02-15 2019-05-21 Microsoft Technology Licensing, Llc Guaranteeing stream exclusivity in a multi-tenant environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012523623A (ja) 2009-04-08 2012-10-04 グーグル インコーポレイテッド フラッシュメモリデータストレージデバイスのパーティション化
JP2016170583A (ja) 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160299715A1 (en) 2015-04-10 2016-10-13 Kabushiki Kaisha Toshiba Storage system capable of invalidating data stored in a storage device thereof
US20160313943A1 (en) 2015-04-24 2016-10-27 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device

Also Published As

Publication number Publication date
KR102559022B1 (ko) 2023-07-24
CN108806750B (zh) 2023-11-07
JP2018190425A (ja) 2018-11-29
US20180321855A1 (en) 2018-11-08
TW201843591A (zh) 2018-12-16
CN108806750A (zh) 2018-11-13
KR20180122546A (ko) 2018-11-13
TWI771396B (zh) 2022-07-21
US11507326B2 (en) 2022-11-22
US20230042833A1 (en) 2023-02-09
US20210232321A1 (en) 2021-07-29
US11847355B2 (en) 2023-12-19

Similar Documents

Publication Publication Date Title
JP6993929B2 (ja) マルチストリーミングのための、ストレージ装置、ストレージ管理部、及び方法
US11216365B1 (en) Maintenance of non-volaitle memory on selective namespaces
US10996863B1 (en) Nonvolatile memory with configurable zone/namespace parameters and host-directed copying of data across zones/namespaces
US9710377B1 (en) Multi-array operation support and related devices, systems and software
KR102533072B1 (ko) 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
US9323463B2 (en) Storage system and cache control method
US11740801B1 (en) Cooperative flash management of storage device subdivisions
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
CN110865770A (zh) 存储器系统
KR20220063756A (ko) 저장 장치 내의 호스트 인터페이스 계층 및 그에 의해 서브미션 큐들로부터의 요청들을 처리하는 방법
CN114464234A (zh) 提供隔离的系统和方法
US11567883B2 (en) Connection virtualization for data storage device arrays
US11768628B2 (en) Information processing apparatus
JP2018036711A (ja) ストレージシステム,ストレージ制御装置および制御プログラム
US11507321B1 (en) Managing queue limit overflow for data storage device arrays
US20230205427A1 (en) Storage device including memory controller and operating method of the same
WO2019021415A1 (ja) ストレージシステム及びデータ格納制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210422

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210422

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20210423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211019

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211210

R150 Certificate of patent or registration of utility model

Ref document number: 6993929

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150