JP6729914B2 - ソリッドステートストレージドライブ、システム、および方法 - Google Patents

ソリッドステートストレージドライブ、システム、および方法 Download PDF

Info

Publication number
JP6729914B2
JP6729914B2 JP2017542850A JP2017542850A JP6729914B2 JP 6729914 B2 JP6729914 B2 JP 6729914B2 JP 2017542850 A JP2017542850 A JP 2017542850A JP 2017542850 A JP2017542850 A JP 2017542850A JP 6729914 B2 JP6729914 B2 JP 6729914B2
Authority
JP
Japan
Prior art keywords
stream
write
sequential write
sequential
write stream
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
JP2017542850A
Other languages
English (en)
Other versions
JP2018511112A (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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2018511112A publication Critical patent/JP2018511112A/ja
Application granted granted Critical
Publication of JP6729914B2 publication Critical patent/JP6729914B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/061Improving I/O performance
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

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

Description

本発明の特定の実施形態は、概して、シーケンシャル書き込みストリーム用の書き込みデータが格納されるストレージに関する。
コンピューティングシステムは、1または複数のプロセッサノードを有する場合があり、各ノードは、1または複数の中央処理装置、マイクロプロセッサ、マイクロプロセッサのコア、または特定のコンピューティングシステムのエミュレーションである仮想マシン(VM)の共有処理リソースによって提供される処理リソースを有する。コンピューティングシステムのプロセッサノードは、例えば、ストレージなどのリソースを共有し得る。ブロックストレージと呼ばれる1つのタイプのストレージにおいて、データは、例えば、512バイトの倍数などの倍数にて受け入れられる。共有ストレージに関して、各プロセッサノードは、プロセッサノードから共有ストレージに読み出しコマンド、書き込みコマンドおよび他のストレージコマンドを提供すべく、1または複数のストレージコマンド送信キューを有し得る。
いくつかの共有ストレージデザインにおいて、共有ストレージは、様々なプロセッサノードのストレージコマンド送信キューの各々によって発行されるストレージコマンドを受信し、共有ストレージによる実行を待つ共通の未決ストレージコマンドキューのストレージコマンドを統一するコントローラを有する。プロセッサノード間の共有ストレージへのアクセスを分配すべく、ブロックストレージコントローラは、例えば、「ラウンドロビン」配信プロセスなどのアクセス分配プロセスを利用し得る。そのようなアクセス分配プロセスにおいて、ブロックストレージコントローラは、1つのコマンド送信キューからストレージコマンドを受け入れ、それを1ターンで共通の未決ストレージコマンドキューに配置し、次のコマンド送信キューからストレージコマンドを受け入れ、それを次のターンで共通の未決ストレージコマンドキューに配置するなどである。共有ストレージアクセス分配プロセスの結果として、特定のプロセッサノードの特定のコマンド送信キューによって発行されるストレージコマンドは、同じまたは他のプロセッサノードの他のストレージコマンド送信キューによって発行されるストレージコマンドと混合状態になる場合がある。
多くの場合、1または複数のプロセッサノードによって共有されるブロックストレージの1つの例は、ソリッドステートドライブ(SSD)である。SSDは、データを永続的に格納すべく、集積回路アセンブリを不揮発性ストレージとして使用するデータストレージデバイスである。SSDは通常、可動機械コンポーネントを有せず、これは、SSDを、回転ディスクおよび移動可能な読み出し/書き込みヘッドを含む、ハードディスクドライブ(HDD)またはフロッピー(登録商標)ディスク等の従来の電気機械磁気ディスクと区別する。電気機械ディスクと比較して、SSDは通常、物理的衝撃により耐性があり、静かに実行し、アクセス時間が短く、およびレイテンシが少ない。多くのタイプのSSDは、電源なくデータを保持するNANDベースのフラッシュメモリセルを使用し、不揮発性ストレージ技術のタイプである。
SSDのブロックストレージコントローラは、書き込みコマンドに応答して書き込みデータを共有ストレージの1または複数のストレージバンド(band)へと書き込むことができる。ストレージバンド内で、SSDブロックストレージコントローラは頻繁に、1度にストレージブロック全体を動作する。例えば、SSDのメモリセルブロック内のメモリセルに書き込む前に、ストレージブロック全体が、メモリセルブロックのメモリセルに1度で大電圧を印加することによって、通常1度で消去される。しかしながら、保存されるべきデータを含むデータブロックを消去する前に、不変のままであるべきデータが通常読み出され、セーブされる。消去が一度完了すると、新しいデータおよび保存データは両方が、新たに消去されたブロックに書き込まれるか、または場合によっては、前に消去されたブロックに書き込まれる。
結果として、新しいデータをSSDへと書き込むべく、新しいデータの書き込みを実現するために実際に書き込まれるデータ量は、多くの場合に新しいデータ量を超える場合がある。この現象は、「ライトアンプリフィケーション(write amplification)」と呼ばれることがあり、SSD性能に悪影響を与える場合がある。
本開示の実施形態は限定のためではなく、例として示され、添付の図面の図において、同様の参照番号は同様の構成要素を指す。
本開示の実施形態によるシーケンシャル書き込みストリーム管理を採用する、コンピューティングシステムの選択態様を示す上位ブロック図を示す。 図1のコンピューティングシステムの複数の送信キューから受信されたストレージコマンドをキュー処理するためのストレージキューの例を示す。 本開示の実施形態によるシーケンシャル書き込みストリーム管理を採用する、図1のコンピューティングシステムのための書き込みストリーム管理ロジックの例の概略図を示す。 本開示の実施形態によるシーケンシャル書き込みストリーム管理を採用する、図1のコンピューティングシステムのためのソリッドステートドライブのストレージのストレージ領域を示す。 本開示の実施形態によるシーケンシャル書き込みストリーム管理のための動作例を示す。 本開示の実施形態によるシーケンシャル書き込みストリーム管理のための動作例を示す。 図3の本開示の書き込みストリーム管理ロジックによって検出されるシーケンシャル書き込みストリームの例を示す。 本開示の実施形態によるシーケンシャル書き込みストリーム管理を採用する、のコンピューティングシステムの別の例を示す。
以下の説明では、同様の構成要素には、それらが異なる実施形態中に示されるかどうかに拘わらず、同じ参照番号を付することとする。本開示の実施形態を明瞭かつ簡潔なやり方で示すために、図面は必ずしも縮尺どおりとは限らず、特定の特性は多少概略的な形態で示され得る。1つの実施形態に関連して説明される、および/または図示される特性は、1または複数の他の実施形態にて同じまたは類似の方法にて、および/または他の実施形態の特性と組み合わせて、またはそれらの代わりに使用され得る。
本明細書の1つの実施形態は、様々なコマンド送信キューからの複数の書き込みコマンドは、共通のコマンドキューにおいてキュー処理され、共通のコマンドキューから実行されるコンピューティングシステムに向けられる。本明細書の1つの態様において、キュー処理書き込みコマンド内のシーケンシャル書き込みストリームは、特定のシーケンシャル書き込みストリームとして検出および識別される。従って、識別シーケンシャル書き込みストリームは、例えば、異なる識別(ID)名または番号に割り当てられ得、割り当てシーケンシャル書き込みストリーム識別のファンクション(function)として特定のストレージエリアまたは領域に割り当てられ得る。
1つの実施形態において、転送バッファストレージは、データをストレージに書き込む前に、一時的にデータを格納するために提供される。実行中のコマンドの書き込みデータは、シーケンシャル書き込みストリームの識別のファンクションとしてそのような転送バッファストレージの異なるシーケンシャル書き込みストリームバッファパーティションへと書き込まれ得る。例えば、1つの識別シーケンシャル書き込みストリームの書き込みデータは、転送バッファストレージの1つのシーケンシャル書き込みストリームバッファパーティションに集約され得、別の識別シーケンシャル書き込みストリームの書き込みデータは、転送バッファストレージの異なるシーケンシャル書き込みストリームバッファパーティションに集約され得る。以下により詳細]に説明されるように、シーケンシャル書き込みストリーム識別のファンクションとしての転送バッファにおけるそのような書き込みデータのパーティション化により、ソリッドステートストレージデバイスのライトアンプリフィケーションを低減し得る。
本明細書の別の態様において、実行中のコマンドの書き込みデータは、識別シーケンシャル書き込みストリームのファンクションとして、ソリッドステートストレージの異なるシーケンシャル書き込みストリームストレージエリアまたは領域へと書き込まれ得る。例えば、1つの識別シーケンシャル書き込みストリームの書き込みデータは、ソリッドステートストレージの1つのシーケンシャル書き込みストリームストレージ領域に集約され得、別の識別シーケンシャル書き込みストリームの書き込みデータは、ソリッドステートストレージの異なるシーケンシャル書き込みストリームストレージ領域に集約され得る。以下により詳細に説明されるように、シーケンシャル書き込みストリーム識別のファンクションとしての異なる隔離シーケンシャル書き込みストリームストレージ領域におけるそのような書き込みデータの集約化によりまた、ソリッドステートストレージデバイスのライトアンプリフィケーションを低減し得る。
本明細書の別の態様において、検出シーケンシャル書き込みストリームは、検出シーケンシャル書き込みストリームの様々な特性のファンクションとして特定のシーケンシャル書き込みストリームと識別され得る。1つの実施形態において、書き込みストリームのそのような1つの特性は、シーケンシャル書き込みストリームがストレージに更新または上書きされるレートの基準である「書き込み速度」と本明細書において呼ばれる。1つの例において、シーケンシャル書き込みストリームは、循環バッファにわたってデータ書き込みがラップアラウンドまたはループバックされる循環バッファとしてモデル化され得る。データ更新レートが低い小型循環バッファは、2つの循環バッファが同じレートでラップアラウンドまたはループバックされた場合、データ更新レートが高い大型循環バッファと同じ書き込み速度を有することができる。
1つの実施形態において、検出シーケンシャル書き込みストリームのための書き込み速度特性が、検出され得、当該検出シーケンシャル書き込みストリームに割り当てられる識別は、検出シーケンシャル書き込みストリームのための検出書き込み速度のファンクションであり得る。従って、1つの例において、同じまたは同様の書き込み速度特性を有する(例えば、同じ範囲内の)2つの異なる検出シーケンシャル書き込みストリームは、同じシーケンシャル書き込みストリーム識別に割り当てられ得る。本明細書による書き込み速度検出は、データ更新レートの他の基準を有する他のデータ書き込み実施形態に適用され得ることが理解される。
1つの実施形態において、同じまたは同様の書き込み速度特性と、同じ割り当てシーケンシャル書き込みストリーム識別とを有する2つの異なる検出シーケンシャル書き込みストリームのための書き込みデータは、異なる検出シーケンシャル書き込みストリームのために1または複数のシーケンシャル書き込みストリームストレージエリアを含み得る共通のストリーム速度ストレージ領域に書き込まれ得る。その結果、ソリッドステートストレージの異なるシーケンシャルストリームストレージエリアは、共通のストレージ領域内のストレージエリアに割り当てられる検出シーケンシャル書き込みストリームの書き込み速度が同じまたは同様であると決定されている共通のストリーム速度ストレージ領域に集約され得る。以下により詳細に説明されるように、共通のストリーム速度ストレージ領域に同じまたは同様の書き込み速度を有する異なる検出シーケンシャル書き込みストリームのそのような書き込みデータの集約化によりまた、ソリッドステートストレージデバイスのライトアンプリフィケーションを低減し得る。
他の実施形態において、検出シーケンシャル書き込みストリームは、書き込み速度以外の特性のファンクションとして識別され得ることが理解される。従って、いくつかの検出シーケンシャル書き込みストリームは、例えば、書き込み速度特性に加えて、またはそれの代わりに、特性のファンクションとしてシーケンシャル書き込みストリーム識別に割り当てられ得る。
図1は、本明細書の1つの実施形態によるシーケンシャル書き込みストリーム管理を採用するコンピューティングシステム100のブロック図を示す。この実施形態において、コンピューティングシステム100は、ソリッドステートドライブ106へのアクセスを共有する複数のプロセッサノード104a、104b、...104nを含む。各プロセッサノードは、1つまたは複数の中央処理装置(CPU)、マイクロプロセッサ、処理コア、仮想マシンまたは他の処理リソースを有し得る。プロセッサノード104a、104b...104nおよびソリッドステートドライブ106は、システムオンチップ(SoC)などの単一のコンポーネントとして製造され得、あるいは半導体パッケージにもしくは1または複数の回路基板上に、またはデバイスハウジングに共に結合される別個のコンポーネントとして製造され得、あるいは別な方法で共に電気的に結合され得る。
ソリッドステートドライブ106は、ブロックストレージコントローラ110と、NANDストレージ、NORストレージまたは他の適切な不揮発性ストレージなどの不揮発性ストレージ120とから成り得る。コンピューティングシステム100と同様に、ブロックストレージコントローラ110および不揮発性ストレージ120は、システムオンチップ(SoC)などの単一のコンポーネントとして製造され得、あるいは半導体パッケージにもしくは1または複数の回路基板上に、またはデバイスハウジングに共に結合される別個のコンポーネントとして製造され得、あるいは別な方法で共に電気的に結合され得る。
特定の実施形態において、ソリッドステートドライブ106は、特定の用途に応じて、数テラバイトデータ以上または以下を格納することが可能となり得る。特定の実施形態は、他のタイプの不揮発性ストレージまたはメモリ、相変化メモリ(PCM)、3次元クロスポイントメモリ、抵抗メモリ、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、 メモリスタ技術を組み入れる磁気抵抗トランジスタランダムアクセスメモリ(MRAM)、スピントランスファトルク(STT)MRAM、バイトアドレス指定可能ランダムアクセス不揮発性メモリなどに適用され得る。
特定の実施形態において、コンピューティングシステム100は、例えば、パーソナルコンピュータ、メインフレーム、テレフォニデバイス、スマートフォン、ストレージコントローラ、ブレードコンピュータ、ストレージ付きのプロセッサなどの任意の適切な計算デバイスを含み得る。コンピューティングシステム100の各プロセッサノード104a、104b...104nは、例えば、周辺構成要素相互接続(PCIe)リンクなどの1または複数の通信リンクまたはバスを通じて、関連プロセッサノードによってSSD106に発行される読み出し、書き込みまたは他のストレージコマンドのために1または複数のストレージコマンド送信キュー124a、124b...124nを有する。プロセッサノード104bなどのプロセッサノードは、キュー124b、124cによって表される1より多い送信キューを有し得る。他のタイプの通信リンクまたはバスは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)、シリアル・アタッチド・スモール・コンピュータシステム(SAS)バス、または、例えば、インターネット、ストレージエリアネットワーク(SAN)、ローカルエリアネットワーク(LAN)などのネットワークを含む。SATA仕様のさらなる詳細は、SATAインターナショナル機構(SATA−IO)、ビーバートン(オレゴン州)によって2013年8月に公表された「シリアルATA仕様、リビジョン3.2」と題した出版物に見いだされ得る。別の例において、インターフェースおよび/または相互接続プロトコルは、NVMe(不揮発性メモリ・ホスト・コントローラ・インターフェース・エクスプレス)と適合し得、および/または互換性があり得る。NVMeのさらなる詳細は、NVMエクスプレス(登録商標)ワークグループによって2014年11月3日に公表された「NVMエクスプレス(登録商標)、リビジョン1.2」と題した刊行物、および/またはこの仕様の早期および/または最近のバージョン(NVMエクスプレスは、NVMエクスプレス社の登録商標である)に見いだされ得る。SATAおよびSAS規格などの規格を採用する実施形態は、複数のコマンドインターフェースまたは他の送信キューを有しない場合があることが理解される。しかしながら、本明細書によるシーケンシャル書き込みストリーム管理はまた、そのような実施形態、特に、ストレージ動作が混合状態となる、例えば、ブロックストレージを共有する複数の仮想マシンを採用するそのような実施形態に適用され得る。
プロセッサノード104a、104b...104nの様々なストレージコマンド送信キュー124a、124b...124nからブロックストレージコントローラ110によって受信された書き込みストレージコマンドのストリームは、この実施形態において、未決の書き込みコマンドキュー132である1または複数の共通のキューにおいてキュー処理され、未決の書き込みコマンドキュー132の例は、図2に概略的に示される。本明細書の1つの態様によれば、ブロックストレージコントローラ110は、未決の書き込みコマンドキュー132から得られたデータを利用する書き込みストリーム管理ロジック136を含み、より効率的なデータ書き込み動作を促進するような態様で転送バッファ140および不揮発性ストレージ120の1または複数のエリアの書き込みデータの配置を制御する。例えば、この実施形態の転送バッファ140は、シーケンシャルストリームバッファパーティション150a、150b、150c...150nを含み、バッファパーティションの各々は、割り当てられたシーケンシャル書き込みストリームまたはそれの複数の書き込みデータを集約するために、1または複数の識別シーケンシャル書き込みストリームに割り当てられ得る。同様に、不揮発性ストレージ120は、ストレージ領域160a、160b、160c...160nを含み、ストレージ領域の各々は、割り当てられたシーケンシャル書き込みストリームまたはそれの複数の書き込みデータを集約するために、1または複数の識別シーケンシャル書き込みストリームに割り当てられ得る。書き込みストリーム管理ロジック136は、データ書き込み動作を改善すべく、コンピューティングシステム100のブロックストレージコントローラ110、不揮発性ストレージ120、1または複数のプロセッサノード104a−104n、または任意の他のコンポーネント内に位置付けられ得、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組み合わせに実装され得る。
例えば、CPUコアまたは他の処理ノードから共有SSDに直接コマンドストリームを送信すべく、複数の送信キューを利用する多くのシステムは通常、様々なCPUコアからのストレージコマンドの送信をシリアルに変換せず、別な方法で調整することが認められる。その結果、1つのCPUコアから論理的に隣接するストレージエリアへの書き込みコマンドのシーケンシャル書き込みストリームは、ソリッドステートドライブ106のブロックストレージコントローラインターフェースにて、システムの他のCPUコアからのストレージコマンドと最終的に混合され得る。その結果、従来のシステムにおいて、本明細書による書き込みストリーム管理ロジック136がないときは、組み合わされるコマンドストリームからSSDに書き込まれるデータは、任意の元のシーケンシャル書き込みストリームのシーケンシャル性を失う場合がある。元のシーケンシャル書き込みストリームのシーケンシャル性の喪失の程度は、コマンドが様々な送信キューにてより深くキュー処理されるほど、悪化され得る。その結果、本明細書による書き込みストリーム管理ロジック136がないときは、SSDのシーケンシャル書き込み性能は、異なるストリームからのキュー深度およびコマンド混合が増加するにつれて低下し得る。たとえ単一のスレッド化されたシナリオにて動作する場合でさえ、オペレーティングシステムは、異なるハイパースレッド化されたCPUコア上の特定のスレッドを起動させる傾向があるので、スレッドのコマンドストリームは、異なるコマンド送信キューに移動し得、それによりコマンドのさらなる混合という結果になり得る。
図3は、本明細書による書き込みストリーム管理ロジック136の1つの例を示す。この実施形態において、書き込みストリーム管理ロジック136のシーケンシャル書き込みストリーム識別ロジック300は、シーケンシャル書き込みストリーム検出ロジック302に発見的方法を採用し、SSD106によって受信される書き込みコマンドにシーケンシャル書き込みストリームが存在することを検出する。検出シーケンシャル書き込みストリームごとに、1つの実施形態において、シーケンシャル書き込みストリームの書き込み速度は、シーケンシャル書き込みストリーム書き込み速度検出ロジック310によって検出される。前述のように、本明細書において使用される用語「書き込み速度」は、データがホストの用途によって更新されるレートを指す。いくつかの実施形態において、書き込み速度検出は、検出シーケンシャル書き込みストリームのために省略され得ることが理解される。
1つの実施形態において、検出シーケンシャル書き込みストリームに割り当てられるアイデンティティは、検出シーケンシャル書き込みストリームの特性のファンクションである。1つの実施形態において、検出シーケンシャル書き込みストリームに割り当てられるアイデンティティは、特定の検出シーケンシャル書き込みストリームに対して検出される書き込み速度特性のファンクションである。共通または同様の書き込み速度を有する検出シーケンシャル書き込みストリームに関して、それらのシーケンシャル書き込みストリームは、シーケンシャル書き込みストリーム識別ロジック300によって共通の、または関連するシーケンシャル書き込みストリーム識別名または番号に割り当てられ得る。従って、1つの実施形態において、特定の識別シーケンシャル書き込みストリームは、例えば、共通または同様の書き込み速度を有する1または複数の検出シーケンシャル書き込みストリームの組み合わせであり得る。他の実施形態において、各検出シーケンシャル書き込みストリームは、一意のシーケンシャル書き込みストリーム識別に割り当てられ得る。別の実施形態において、共通または同様の書き込み速度を有する検出書き込みストリームは、グループの各シーケンシャル書き込みストリームが同じまたは同様の書き込み速度を有するシーケンシャル書き込みストリーム識別のグループ化を示すデータ構造に示され得る。シーケンシャル書き込みストリーム識別は、特定の用途に応じて、様々な技術に割り当てられ得ることが予想される。例えば、検出シーケンシャル書き込みストリームは、特定の用途に応じて、ロジカルブロックアドレッシング(LBA)書き込みストリームの宛先、シーケンシャル書き込みストリームの送信キュー元、または他の特性などの書き込み速度以外の、またはそれに加えて書き込みストリーム特性のファンクションとして識別され得る。
シーケンシャル書き込みストリームを識別すると、当該特定の識別シーケンシャル書き込みストリームのための書き込みデータは、当該識別シーケンシャル書き込みストリームのために隔離されるストレージエリアに集約され得る。例えば、識別シーケンシャル書き込みストリームのための書き込みデータは、識別シーケンシャル書き込みストリームに割り当てられる特定のシーケンシャル書き込みストリーム転送バッファパーティション150a、150b、...150n(図1)の転送バッファパーティション書き込みストリームデータ集約ロジック304によって集約され得る。以下により詳細に説明されるように、割り当てシーケンシャル書き込みストリーム転送バッファパーティションにおいて識別シーケンシャル書き込みストリームの書き込みデータを内部で再組立てすべく、識別シーケンシャル書き込みストリームによってそのような書き込みデータを集約することにより、SSD106の書き込み性能を改善し得ることが考えられる。例えば、識別シーケンシャル書き込みストリームの書き込みデータのシーケンシャル性は、ブロックストレージコントローラの共通の未決書き込みキューにおける様々なコマンド送信キューからの書き込みコマンドの混合にかかわらず、割り当てシーケンシャルストリーム転送バッファパーティションにおける識別シーケンシャル書き込みストリームの書き込みデータの集約によって、ある程度は復元され得ることが考えられる。
1または複数の識別シーケンシャル書き込みストリームのための書き込みデータはまた、それぞれの識別シーケンシャル書き込みストリームに割り当てられる特定の不揮発性ストレージ領域160a、160b、...160n(図1)におけるストレージ領域書き込み速度データ集約ロジック320によって集約され得る。1つの実施形態において、特定のストレージ領域に割り当てられる識別シーケンシャル書き込みストリームの検出シーケンシャル書き込みストリームまたはその複数は、同じまたは同様の書き込み速度を有する。以下、より詳細に説明されるように、割り当て不揮発性ストレージ領域160a、160b...160n(図1)の検出シーケンシャル書き込みストリームの書き込みデータを内部で再組立て(reassemble)すべく、同じまたは同様の書き込み速度を有する検出シーケンシャル書き込みストリームによってそのような書き込みデータを集約することにより、また、SSD106の書き込み性能を改善し得ることが考えられる。例えば、同じまたは同様の書き込み速度を有する検出シーケンシャル書き込みストリームに割り当てられるストレージ領域の書き込みデータを集約することにより、領域の識別シーケンシャル書き込みストリームの集約書き込みデータは、同時または同様の時間で更新され得、それによりガベージコレクションを促進し、データ再配置およびライトアンプリフィケーションを低減し得ることが考えられる。
前述のように、いくつかの実施形態において、検出シーケンシャル書き込みストリームは、例えば、書き込み速度特性に加えて、またはそれの代わりに、特性のファンクションとしてシーケンシャル書き込みストリーム識別に割り当てられ得る。従って、様々な要因に起因して、書き込み速度が等しくないシーケンシャル書き込みストリームを格納するストレージ領域において、シーケンシャル書き込みストリームが領域内に隣接して格納される事実により、異なる書き込み速度にかかわらず、データを消去すべき時である場合にバルクなデータ無効化が促進され得ることが理解される。その結果、ライトアンプリフィケーションが、改善され得る。
本明細書のさらなる別の態様において、割り当て不揮発性ストレージ領域160a、160b...160n(図1)の識別シーケンシャル書き込みストリームによって書き込みデータを集約するストレージ領域書き込みストリームデータ集約ロジック320はさらに、共通のシーケンシャル書き込みストリーム識別によって識別される検出シーケンシャル書き込みストリームの様々な特性のファンクションとして、ストレージ領域160a、160b...160n(図1)内の異なるストレージエリアの識別シーケンシャル書き込みストリームの書き込みデータを再オーダして、パックし得る。
例えば、図4は、書き込みデータ集約ストレージエリア400aおよび書き込みデータ集約ストレージエリア400bによって表わされる複数のストレージエリアを含む書き込み速度データ集約ストレージ領域160aを示す。書き込み速度データ集約ストレージ領域160aは、例えば、識別シーケンシャルストリーム_ID0の書き込みデータを受信すべく割り当てられ得る。同様に、書き込み速度データ集約ストレージ領域160bは、書き込みデータ集約ストレージエリア400cおよび書き込みデータ集約ストレージエリア400dによって表される複数のストレージエリアを含む。書き込み速度データ集約ストレージ領域160bは、例えば、識別シーケンシャルストリーム_ID1の書き込みデータを受信すべく割り当てられ得る。
1つの例において、検出シーケンシャル書き込みストリームのストリーム−0、ストリーム−1、ストリーム−2、ストリーム−3は、例えば、同じシーケンシャル書き込みストリーム識別ストリーム_ID0を有し、検出書き込み速度の特定の範囲内に書き込みデータを有する。従って、検出シーケンシャル書き込みストリームのストリーム−0、ストリーム−1、ストリーム−2、ストリーム−3の書き込みデータは、例えば、同じ書き込み速度データ集約ストレージ領域160aに集約される。しかしながら、ストレージ領域160aの集約書き込みデータ内にて、シーケンシャル書き込みストリーム識別ストリーム_ID0によって識別される検出シーケンシャル書き込みストリームのストリーム−0、ストリーム−1、ストリーム−2、ストリーム−3の書き込みデータは、識別シーケンシャル書き込みストリームの検出シーケンシャル書き込みストリームの様々な特性のファンクションとして、書き込み速度データ集約ストレージ領域160aのストレージエリア400a、400bの1または複数に隣接してシーケンシャルに再オーダおよびパックされ得る。従って、この例において、シーケンシャル書き込みストリーム識別ストリーム_ID0によって識別される検出シーケンシャル書き込みストリームのストリーム−0、ストリーム−1の書き込みデータは、書き込み速度データ集約ストレージ領域160aの、例えば、ストレージエリア400aに隣接してシーケンシャルに再オーダおよびパックされ得る。同様に、シーケンシャル書き込みストリーム識別ストリーム_ID0によっても識別される検出シーケンシャル書き込みストリームのストリーム−2、ストリーム−3の書き込みデータは、書き込み速度データ集約ストレージ領域160aの、例えば、ストレージエリア400bに隣接してシーケンシャルに再オーダされ、パックされ得る。
識別速度ストリームを有するシーケンシャル書き込みストリーム内にシーケンシャル書き込みデータをシーケンシャルに再パックすることにより、ガベージコレクションが促進されることが考えられる。従って、たとえ検出シーケンシャル書き込みストリームの1または複数の書き込み速度が誤って検出されたとしても、ガベージコレクションは促進されることが考えられる。例えば、ブロックを消去する前に、データがストレージ領域内のブロックから読み出される場合、シーケンシャルコンテンツの読み出しは、ランダムコンテンツと比較して実質的により速く、より効率的であり得る。いくつかの実施形態において、シーケンシャルにオーダされたデータのそのような読み出しは、特定の用途に応じて、4倍から16倍高速であり得る。例えば、システムオンチップ(SoC)チャネルによって発生されるボトルネックは、データをシーケンシャルにオーダすることにより実現される利得を希釈する場合がある。
1つの実施形態において、ストレージ領域160aの、例えば、ストレージエリア400aは、例えば、ロジカルブロックアドレッシング(LBA)によって示される書き込みストリームのストリーム−0の書き込みデータ宛先アドレスなどの特定の検出書き込みストリームの様々な特性のファンクションとして、または、当該書き込みデータストリームに対する書き込みコマンドが発した送信キューのファンクションとして、例えば、書き込みストリームのストリーム−0などの検出シーケンシャル書き込みストリーム書き込みの再オーダされた隣接する書き込みデータを格納すべく割り当てられ得る。ここでまた、検出シーケンシャル書き込みストリームの書き込みデータのシーケンシャル性は、ブロックストレージコントローラの共通のコマンドキュー内で、様々なコマンド送信キューからの書き込みコマンドの混合にかかわらず、割り当てシーケンシャルストリームストレージエリアの検出シーケンシャル書き込みストリームの書き込みデータの集約によってある程度は復元され得ることが考えられる。シーケンシャル書き込みストリーム識別_ID1によって識別される、検出シーケンシャル書き込みストリームのストリーム−4、ストリーム−5、ストリーム−6、ストリーム−7の書き込みデータが、検出シーケンシャル書き込みストリームの特性のファンクションとして、書き込み速度データ集約ストレージ領域160bのために示されるストレージエリア400c、400dに隣接して、同様に再オーダおよびパックされ得る。
前述のように、書き込みストリーム管理ロジック136は、データ書き込み動作を改善すべく、コンピューティングシステム100のブロックストレージコントローラ110、不揮発性ストレージ120、1または複数のプロセッサノード104a−104n、または任意の他のコンポーネント内に位置付けられ得、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組み合わせに実装され得る。しかしながら、いくつかの実施形態において、SSD106内に書き込みストリーム管理ロジック136の主要コンポーネントを配置することにより、例えば、プロセッサノード104a−104nのプロセッサノードにおいて主に動作するソフトウェアと比較して、機能強化をもたらし得ることが理解される。例えば、シーケンシャル書き込みストリームとランダム書き込み動作との混合を回避すべく、単一の送信キューにおいて、シリアルかつシーケンシャルなやり方にて書き込みコマンドを配置するホストソフトウェアは、SSD106内の書き込みストリーム管理ロジック136と比較して、入出力動作に影響を及ぼす場合がある。その上、そのようなホストレベルコマンドの再オーダは、他のプロセッサノードのための相互に排他的なイベント(mutex)処理、キャッシュコヒーレンシおよび遅延プロシージャコールに悪影響を与える場合がある。
1つの共有ストレージデザインにおいて、ブロックストレージコントローラは、共有ストレージ内の1または複数のストレージ空間「バンド」を保留し得、そこで、各保留バンドは、仮想マシンなどの特定のプロセッサノードに割り当てられる。従って、特定の保留ストレージバンドに書き込まれる書き込みデータは、共有ストレージにデータを書き込む他の仮想マシンによって発行される書き込みデータの除外に対して、当該保留ストレージバンドに割り当てられる特定の仮想マシンに限定され得る。
比較して、本明細書の1つの実施形態によるシーケンシャル書き込みストリーム管理において、ストレージバンドなどの特定のストレージエリアに書き込まれる書き込みデータは、単に書き込みコマンドのソースのプロセッサアイデンティティというよりもむしろ、識別シーケンシャル書き込みストリームのファンクションとして保留され得る。識別シーケンシャル書き込みストリームの書き込みデータは、例えば、シーケンシャルかつランダムな書き込みコマンドが混合された書き込みコマンドのストリームから、または、例えば、異なる書き込み速度を有するシーケンシャル書き込みストリームの書き込みコマンドが混合されたストリームから、抽出され得る。
識別シーケンシャルストリームの抽出書き込みデータは、識別シーケンシャル書き込みストリームの書き込みコマンドが1つより多いプロセッサノードから発した場合があるにもかかわらず、当該識別シーケンシャルストリームに割り当てられたストレージエリアまたは領域に集約され得る。しかしながら、いくつかの実施形態において、書き込みコマンドのソースのプロセッサアイデンティティまたは送信キューアイデンティティは、当該検出シーケンシャル書き込みストリームまたは同様な特性を有する他の検出シーケンシャル書き込みストリームに対して保留されるストレージエリアに、識別シーケンシャル書き込みストリームの書き込みデータを集約する検出シーケンシャル書き込みストリームの他の特性と関連して、使用され得ることが理解される。
図5は、本明細書によるシーケンシャル書き込みストリーム管理を採用するコンピューティングシステムの動作の1つの例を示す。1つの動作において、例えば、コマンド送信キュー124a、124b...124n(図1)などの複数の異なるコマンド送信キューからの書き込みコマンドが、例えば、ブロックストレージコントローラ110の未決の書き込みコマンドキュー132(図1)などの共通のキューに様々な書き込みコマンドを混合する場合がある共通のキューにおいてキュー処理される(ブロック510、図5)。書き込みコマンド内のシーケンシャル書き込みストリームは、例えば、図3の書き込みストリーム管理ロジック136のシーケンシャル書き込みストリーム識別ロジック300などの適切なロジックによって識別される(ブロック514)。
識別シーケンシャル書き込みストリームに関して、当該識別書き込みストリームの書き込みデータは、当該識別シーケンシャル書き込みストリームに割り当てられるストレージエリアまたは領域に抽出または集約される(ブロック518)。1つの実施形態において、識別シーケンシャル書き込みストリームの書き込みデータは、例えば、図3の書き込みストリーム管理ロジック136の転送バッファパーティション書き込みストリームデータ集約ロジック304などのロジックによって抽出および集約され得る。前述のように、転送バッファパーティション書き込みストリームデータ集約ロジック304は、識別シーケンシャル書き込みストリームに割り当てられる特定のシーケンシャルストリーム転送バッファパーティション150a、150b、150n(図1)などのストレージエリアに、識別シーケンシャル書き込みストリームの書き込みデータを集約することができる。
1つの実施形態において、識別シーケンシャル書き込みストリームの書き込みデータは、当該識別シーケンシャル書き込みストリームに割り当てられる特定のシーケンシャルストリーム転送バッファパーティション150a、150b、...150n内に1または複数の書き込みデータのページとして集約される。一度、割り当てシーケンシャルストリーム転送バッファパーティション150a、150b、...150nに集約およびバッファされると、シーケンシャル書き込みストリームの集約書き込みデータは、不揮発性ストレージ領域160a、160b、...160n(図1、4)などの当該識別シーケンシャル書き込みストリームに割り当てられる不揮発性ストレージ120内の特定のストレージエリアまたは領域に、1または複数の書き込みデータのページとして書き込まれる。書き込みデータが、転送バッファストレージ140および不揮発性ストレージ120に集約およびバッファされる粒度は、特定の用途に応じて変化し得ることが理解される。
本明細書の1つの態様において、シーケンシャルストリーム転送バッファパーティション150a、150b、...150nの数は、特定の用途に応じて、転送バッファストレージ140のサイズ、入出力ワークロードのサイズおよび他の要因などの様々な要因のファンクションとして数が制限され得る。従って、1つの例において、サイズが1MB(メガバイト)の転送バッファストレージにおいて、例えば、120〜720KBなどの転送バッファストレージ空間の範囲は、識別されているシーケンシャル書き込みストリームからの書き込みデータをバッファするために割り当てられ得る。従って、シーケンシャル書き込みストリームのストリーム_ID0、ストリーム_ID1、ストリーム_ID2などの3つのシーケンシャル書き込みストリームが識別された例において、720KB転送バッファ空間は、例えば、3つの識別シーケンシャル書き込みストリームのストリーム_ID0、ストリーム_ID1、ストリーム_ID2の抽出および集約書き込みデータに対して、それぞれ3つのシーケンシャルストリーム転送バッファパーティション150a、150b、150cへとパーティション化され得る。
1つの実施形態において、3つのシーケンシャルストリーム転送バッファパーティション150a、150b、150cは、サイズが固定され得る。別の実施形態において、シーケンシャルストリーム転送バッファパーティション150a、150b、150cのサイズは、割り当てられた識別シーケンシャル書き込みストリームのサイズと、他の識別シーケンシャル書き込みストリームの数とに応じて変化し得る。
バッファパーティション530(図1)として表される残りの転送バッファ空間は、この例ではサイズが1000KBマイナス720KB、または280KBであり、不揮発性ストレージ120からの読み出しデータをバッファする、またはシーケンシャル書き込みストリームの一部と識別されない書き込みコマンドからの書き込みデータなどの残りの書き込みデータをバッファする未割り当て空間であり得る。例えば、不揮発性ストレージ120に対するランダム、非シーケンシャルデータ書き込み、ガベージコレクションおよび他のデータ再配置と関連する転送バッファ140にバッファされるべき書き込みデータは、データバッファパーティション530にバッファされ得る。転送バッファ140内のパーティションの数およびサイズは、特定の用途に応じて変化し得ることが理解される。
1つの実施形態において、シーケンシャルストリーム転送バッファパーティション150a、150b、150cにバッファされたシーケンシャル書き込みストリームの書き込みデータが一度、不揮発性ストレージ120(図1)に転送されたなら、当該特定のシーケンシャルストリーム転送バッファパーティションの転送バッファストレージ空間は、バッファパーティション530の未割り当て空間に解放および付加され得る。別のシーケンシャル書き込みストリームの識別時に、未割り当てパーティション530の一部は、新たなシーケンシャル書き込みストリームパーティションとして再割り当てされ、新たに識別されたシーケンシャル書き込みストリームに割り当てられ得る。別の実施形態において、シーケンシャルストリーム転送バッファパーティション150a、150b、150cにバッファされるシーケンシャル書き込みストリームの書き込みデータは一度、不揮発性ストレージ120(図1)に転送されたら、当該シーケンシャルストリーム転送バッファパーティションのストレージ空間は、別の識別シーケンシャル書き込みストリームへの割り当てを待つべく、保留にされ得る。
前述のように、本明細書の1つの実施形態において、1回でアクティブとなる同時シーケンシャルストリーム転送バッファパーティション150a、150b、...150nの数は、特定の用途に応じて、転送バッファストレージ140のサイズ、入出力ワークロードのサイズおよび他の要因などの様々な要因のファンクションとして数が制限され得る。従って、同時シーケンシャルストリーム転送バッファパーティション150a、150b、...150nの数は、例えば、1度に、最大限で3つの識別シーケンシャル書き込みストリームパーティションなどに制限され得る。
1つの実施形態において、この例において3つの同時シーケンシャルストリーム転送バッファパーティションの各々は、それに割り当てられる1つのアクティブ識別シーケンシャル書き込みストリームを有する。従って、別のアクティブシーケンシャル書き込みストリームが、同時アクティブ識別シーケンシャル書き込みストリームの最大数(この例においてそのような3つの識別同時アクティブシーケンシャル書き込みストリームである)を超えて識別された場合、シーケンシャルストリーム転送バッファパーティションは、付加的な識別シーケンシャル書き込みストリームへの割り当てには利用できないだろう。
そのような場合には、本明細書の別の態様によれば、最大数の同時アクティブ識別シーケンシャル書き込みストリームを超える識別シーケンシャル書き込みストリームの書き込みデータの処理は、ある期間一時停止され得る。既存のシーケンシャルストリーム転送バッファパーティションと、当該ストレージ空間の解放との1つからの書き込みデータの転送の完了時に、シーケンシャルストリーム転送バッファパーティションは、新たに識別および前に一時停止されたシーケンシャル書き込みストリームに対して割り当てられ得、書き込みデータの処理が、新たに識別されたシーケンシャル書き込みストリームに対して再開され得る。一時停止期間の満了時に、シーケンシャルストリーム転送バッファパーティションは、新たに識別されたシーケンシャル書き込みストリームに配分および割り当てられていない場合、当該ストリームに対する書き込みデータの処理が再開され得、処理された書き込みデータは、未割り当て転送バッファパーティション530にバッファされ得る。未割り当て転送バッファパーティション530にバッファされるシーケンシャルデータは、非シーケンシャルデータと混合され得ることが認められる。
いくつかの実施形態において、1つより多い識別シーケンシャル書き込みストリームが、特定のシーケンシャルストリーム転送バッファパーティションに割り当てられ得ることが理解される。そうだとしたら、シーケンシャルストリーム転送バッファパーティションにバッファされ得る同時アクティブ識別アクティブシーケンシャル書き込みストリームの最大数は、それに応じて増加し得る。以下により詳細]に説明されるように、共通のエリア領域またはパーティションにバッファまたは別な方法で格納され得るシーケンシャル書き込みストリームのタイプは、1つの実施形態において、検出シーケンシャル書き込みストリームの特性のファンクションであり得る。
いくつかの実施形態は、転送バッファストレージ140などの転送バッファストレージを欠き得るか、または特定の識別シーケンシャル書き込みストリームに割り当てられる転送バッファのパーティションを欠き得ることが理解される。従って、1つの実施形態において、識別書き込みストリームの書き込みデータは、例えば、図3の書き込みストリーム管理ロジック136のストレージ領域書き込みストリームデータ集約ロジック320などのロジックによって、不揮発性ストレージのストレージエリアまたは領域へと直接抽出および集約され得る(ブロック518)。このように、割り当て転送バッファパーティションの識別シーケンシャルストリーム書き込みデータの集約はバイパスされ得、識別シーケンシャル書き込みストリームのために抽出される書き込みデータは、割り当て転送バッファパーティションで最初にバッファされないで、上述のように、割り当てストレージ領域160a、160bまたはストレージエリア400a、400bへと直接集約および格納され得る。
図6は、例えば、図3の書き込みストリーム管理ロジック136のシーケンシャル書き込みストリーム識別ロジック300のシーケンシャル書き込みストリーム検出ロジック302の動作例を示す。1つの動作において、シーケンシャル書き込みストリーム検出処理は、ブロックストレージコントローラ110の未決の書き込みコマンドキュー132(図1、2)などの共通のコマンドキューの書き込みコマンドに対して開始される(ブロック710)。前述のように、未決の書き込みコマンドキュー132は、ブロックストレージコントローラ110による書き込み処理を待機する書き込みコマンドキューであり、そこで、書き込みコマンドは、複数のプロセッサノード104a、104b...104nからの複数の送信キュー124a、124b、...124nから受信されている。その結果、シーケンシャル書き込みストリームの書き込みコマンドは、他のシーケンシャル書き込みストリームの書き込みコマンド、ならびにランダム、非シーケンシャル書き込みコマンドと混合される。
図2において最も良く分かるように、未決の書き込みコマンドキュー132は、エントリ712a−712hによって表されるキュー132の書き込みコマンドごとにエントリを有する。この例において、シーケンシャル書き込みストリーム検出処理が開始される(ブロック710)次の書き込みコマンドは、「ヘッド」矢印によって示されるキューのヘッドに現在あるエントリ712cの書き込みコマンドである。キューのエントリの数は、特定の用途に応じて変化し得ることが理解される。
キュー132の各エントリ712a−712hは、例えば、キューエントリフィールド714a−714dで表わされる複数のキューエントリフィールドを有する。第1のキューエントリフィールド714aは、ブロックストレージコントローラ110(図1)による書き込み処理を待機するエントリの書き込みコマンドそれ自体を含む。この実施形態において、キューエントリフィールド714b−714dは、エントリの書き込みコマンドと関連した様々なパラメータを識別する。従って、第2のキューエントリフィールド714bは、エントリのコマンドが得られた特定の送信キューを書き込みコマンドパラメータとして識別する。第3のキューエントリフィールド714cは、エントリの書き込みコマンドのターゲットまたは宛先アドレスを識別する。例示された実施形態において、書き込みコマンドのターゲットアドレスは、不揮発性ストレージ120の物理的アドレスにブロックストレージコントローラ110によって変換されるロジカルブロックアドレッシング(LBA)フォーマットにて規定される。第4のキューエントリフィールド714cは、エントリの書き込みコマンドの書き込み動作の書き込みデータによって占有されるべきストレージ空間の長さを識別する。長さは、LBAアドレスの範囲、または例えば、バイト、ページ、ブロックなどの物理的ストレージ空間量に換算して表現され得る。
例えば、図7は、各LBA範囲 LBA0、LBA1...LBAnの長さまたはサイズLが、範囲ごとに変化するシーケンシャルで隣接するLBA範囲 LBA0、LBA1...LBAnによって表わされる不揮発性ストレージ120のストレージ空間の部分780を示す。この例において、不揮発性ストレージ120に格納される場合、シーケンシャル書き込みストリーム指定ストリーム_0の書き込みデータが、4つのシーケンシャルで隣接するLBA範囲LBA1、LBA2、LBA3およびLBA4によって表される論理的に隣接するアドレス空間に書き込まれるだろう。4つのLBA範囲LBA1、LBA2、LBA3およびLBA4は、シーケンシャルで隣接するので、各LBA範囲の始めのLBAアドレスは、前のLBA範囲の終わりのLBAアドレスから連続して続く。従って、LBA範囲LBA2の始めのLBAアドレスは、この例では、LBA範囲LBA1である前のLBA範囲の終わりのLBAアドレスから連続して続く。同様にして、他のシーケンシャル書き込みストリームのストリーム1、ストリーム2の各LBA範囲の始めのLBAアドレスは、特定のシーケンシャル書き込みストリームの一連のLBA範囲について、前のLBA範囲の終わりのLBAアドレスから連続して続く。
キュー132のヘッドでのエントリ712cの書き込みコマンドに対するシーケンシャル書き込みストリーム検出処理の開始(ブロック710)時に、ヘッドエントリ712cのキューエントリフィールド714b−dに格納される書き込みコマンドパラメータが、確認され得(ブロック716)、図2の「履歴」矢印によって示されるように、この例ではエントリ712bである前の履歴エントリのキューエントリフィールド714b−dに格納される対応書き込みコマンドパラメータと比較される(ブロック718)。従って、ヘッドエントリ712cの書き込みコマンドが、書き込みデータを図7の書き込み宛先LBA範囲LBA2に書き込む書き込みコマンドである場合であり、前の履歴エントリ712bの書き込みコマンドが、その書き込みデータを図7の書き込み宛先LBA範囲LBA1に書き込む書き込みコマンドである場合、それらの2つのコマンドエントリのLBAおよび長さパラメータは、一致を示すことになる。すなわち、ヘッドエントリ712cのキューエントリフィールド714c、714dによって定義されるLBA範囲LBA2の始めのLBAアドレスは、前の履歴エントリ712bのキューエントリフィールド714c、714dによって定義されるLBA範囲LBA1である前のLBA範囲の終わりのLBAアドレスから連続して続くことになる。従って、ヘッドエントリおよび前の履歴エントリの書き込みコマンドのパラメータは、それらの2つのエントリの書き込みコマンドは、シーケンシャル書き込みストリームの可能性の高い書き込みコマンドであることを示す。
比較パラメータは、シーケンシャル書き込みストリームの一連の書き込みコマンドのうちの2つの書き込みコマンドの予期されるそれらと一致する場合(ブロック722)、「ヒット」が、図3の検出履歴データ構造724のデータ構造などの適切なデータ構造に記録される。ブロック722の動作と関連して記録される「ヒット」が3つの連続ヒットの3番目と判定された(ブロック726)場合、シーケンシャル書き込みストリームの正検出は戻され(ブロック730)、検出履歴データ構造724に記録される(図3)。
シーケンシャル書き込みストリームが一度検出されたなら、シーケンシャル書き込みストリーム識別ロジック300(図3)によってシーケンシャルストリーム識別に割り当てられる。検出書き込みストリームに割り当てられる特定のシーケンシャル書き込みストリーム識別は、以下により詳細に説明されるように、検出シーケンシャル書き込みストリームに対して検出される書き込み速度といった、検出シーケンシャル書き込みストリームの特性などの付加的な要因に依存し得る。
さらに、キューのヘッドにおけるエントリ714cの書き込みコマンドの書き込み処理は、本明細書において述べられるように、シーケンシャルストリーム識別を使用して開始され得る。キューのヘッドは、次のエントリ714dにインクリメントされ得、キューの履歴マーカは、次のエントリ714cにインクリメントされ得る。シーケンシャル書き込みストリーム検出処理は、エントリ714dの次の書き込みコマンドに対して開始され得る(ブロック710)。
比較パラメータが、シーケンシャル書き込みストリームの一連の書き込みコマンドの2つの書き込みコマンドのうち予期されるそれらと一致しない場合(ブロック722)、ヘッドエントリ712cの書き込みコマンドがおそらくシーケンシャル書き込みストリームの書き込みコマンドではない、すなわち、「ヒット無」であることを示す場合、検出履歴データ構造724(図3)に記録される検出履歴が確認され(ブロック740)、シーケンシャル書き込みストリームの前の検出を示す、パラメータ一致に対する3連続ヒットが以前に記録されているかどうかを判定する(ブロック744)。そうだとしたら、キュー132のヘッドエントリ712c後に次のエントリ712dの書き込みコマンドのキューエントリフィールド714b−dに格納される書き込みコマンドパラメータが確認され得(ブロック750)、この例では、エントリ712bである前の履歴エントリのキューエントリフィールド714b−dに格納される対応書き込みコマンドパラメータと比較され得る(ブロック754)。従って、次のエントリ712dの書き込みコマンドが、書き込みデータを図7の書き込み宛先LBA範囲LBA2に書き込む書き込みコマンドである場合であり、前の履歴エントリ712bの書き込みコマンドが、その書き込みデータを図7の書き込み宛先LBA範囲LBA1に書き込む書き込みコマンドである場合、それらの2つのコマンドエントリのLBAおよび長さパラメータは、一致を示すことになる。
すなわち、ヘッドエントリ712cのキューエントリフィールド714c、714dによって定義されるLBA範囲LBA2の始めのLBAアドレスは、前の履歴エントリ712bのキューエントリフィールド714c、714dによって定義されるLBA範囲LBA1である前のLBA範囲の終わりのLBAアドレスから連続して続くことになる。従って、次のエントリ712dおよび前の履歴エントリ712bの書き込みコマンドのパラメータは、それらの2つのエントリの書き込みコマンドは、シーケンシャル書き込みストリームの可能性の高い書き込みコマンドであることを示し、シーケンシャル書き込みストリーム「ヒット」が示される(ブロック760)。
比較パラメータが、シーケンシャル書き込みストリームの一連の書き込みコマンドの2つの書き込みコマンドのうち予期されるそれらと一致する、「ヒット」を示す場合(ブロック760)、シーケンシャル書き込みストリームの正検出が戻され(ブロック766)、共通のキュー132が再オーダされ、それにより、この例では、エントリ714dの書き込みコマンドであるヒットの書き込みコマンドがキューのヘッドにあることになり、その結果、書き込み処理が、エントリ714cの書き込みコマンドに対して上述のように、エントリ714dの書き込みコマンドに対して開始され得る。
シーケンシャル書き込みストリームの正検出の戻り(ブロック766)は、検出履歴データ構造724に記録される。シーケンシャル書き込みストリームが一度検出されたら、上述のように、書き込み処理のために、シーケンシャル書き込みストリーム識別ロジック300(図3)によってシーケンシャルストリーム識別に割り当てられる。
比較パラメータが、シーケンシャル書き込みストリームの一連の書き込みコマンドの2つの書き込みコマンドのうち予期されるそれらと一致しない場合(ブロック760)、次のエントリ712dの書き込みコマンドが、履歴エントリ712bに対して、おそらくシーケンシャル書き込みストリームの書き込みコマンドではない、すなわち、「ヒット無」であることを示す場合、この例では上述のようにして、キュー132のエントリ712d後の次のエントリ712eの書き込みコマンドのキューエントリフィールド714a−dに格納される書き込みコマンドパラメータが確認され(ブロック750)、エントリ712bである前の履歴エントリのキューエントリフィールド714a−dに格納される対応書き込みコマンドパラメータと比較され得る(ブロック754)。付加的なヒットに対する未決の書き込みキュー132の検索が一度、付加的なヒットなく完了したとすると、キュー132のヘッドにおける書き込みコマンドが書き込み処理され得、ヘッドエントリインジケータが次のキューエントリ712dに移動され得、履歴インジケータが次のキューエントリ712cに移動され得、図7のシーケンシャル書き込みストリーム検出プロセスは、未決の書き込みコマンドキューの書き込みコマンド全てが、シーケンシャル書き込みストリームの検出および処理される書き込みに対して検査されてしまうまで、繰り返され得る。
前述のように、識別シーケンシャル書き込みストリームの数が、最大数の同時アクティブ識別シーケンシャル書き込みストリームを超える場合、付加的なシーケンシャル書き込みストリームの処理は、ある期間一時停止され得る。既存のシーケンシャルストリーム転送バッファパーティションと、当該ストレージ空間の解放との1つからの書き込みデータの転送の完了時に、シーケンシャルストリーム転送バッファパーティションが、新たに識別されたシーケンシャル書き込みストリームに対して割り当てられ得、書き込みデータの処理が、再開され得る。一時停止期間の満了時に、シーケンシャルストリーム転送バッファパーティションは、新たに識別されたシーケンシャル書き込みストリームに配分および割り当てられていない場合、当該ストリームに対する書き込みデータの処理が再開され得、処理された書き込みデータは、未割り当て転送バッファパーティション530にバッファされ得る。
例示された実施形態において、シーケンシャル書き込みストリーム書き込み速度検出ロジック310(図3)は、検出シーケンシャル書き込みストリームの書き込み速度を、検出シーケンシャル書き込みストリームの書き込みコマンド間の時差のファンクションとして決定する。1つの例において、時差は、共通の未決書き込みバッファ132(図1)における特定の検出シーケンシャル書き込みストリームのシーケンシャル書き込みコマンドの到達の間で決定され得る。シーケンシャル書き込みストリームのシーケンシャル書き込みコマンド間の到達時間差は、検出履歴データ構造724などのデータ構造に記録され得る。1つの実施形態において、シーケンシャル書き込みストリームのシーケンシャル書き込みコマンド間の到達時間差の平均は、検出シーケンシャル書き込みストリームの書き込み速度の基準を提供すべく決定され得る。特定の用途に応じて、検出シーケンシャル書き込みストリームのための書き込み速度を測定すべく他の技術が使用され得ることが理解される。
本明細書の1つの態様において、検出シーケンシャル書き込みストリームの書き込み速度は、いくつかの例において、例えば、1.0のライトアンプリフィケーション程度に低減すべく採用され得る。前述のように、多くのソリッドステートドライブにおいて、不揮発性ストレージは通常、1度にストレージブロックが消去される。従って、消去ブロック、すなわち、消去されるブロックのコンテンツ全体は、同時に消去される。
ブロックのコンテンツの全てが1回で消去され得るように、ホストが1回で当該ブロックのコンテンツの全てを更新した場合、ライトアンプリフィケーションは、1.0程度に低減され得る。逆に、特定のブロックのコンテンツのいくつかのみが更新され、更新される用意ができていないブロックの残りのコンテンツがそれにもかかわらず有効である場合、現在データ、残りの非更新の有効な現在データは、ブロックが消去され得る前に、非更新データを保存すべくガベージコレクションプロセスによって再配置される。データ再配置の結果とて、ライトアンプリフィケーションは1.0を超えて上昇する。
データ再配置に起因してライトアンプリフィケーションが1.0より上に上昇する例においてさえ、データ再配置プロセスそれ自体は、本明細書によるシーケンシャル書き込みストリーム管理によって促進され得ることが理解される。例えば、再配置されるデータが大きな部分においてシーケンシャルに再パックされた場合、データ読み出し動作の効率は、例えば、再配置データが、読み出し動作ごとに複数の4Kブロックなどの大きな部分にてシーケンシャルに配置されることに起因して、改善され得る。
本明細書の1つの態様によれば、検出シーケンシャル書き込みストリームは、シーケンシャル書き込みストリーム書き込み速度検出ロジック310によって、検出シーケンシャル書き込みストリームのために測定される書き込み速度のファンクションとして、シーケンシャル書き込みストリーム識別ロジック300によって識別され得る。同じまたは同様の書き込み速度を有する検出シーケンシャル書き込みストリームの書き込みデータは、同時または同様の時間で更新される傾向があることが理解される。従って、同じまたは同様の書き込み速度を有する検出シーケンシャル書き込みストリームに対する書き込みデータは、ガベージコレクションデータ再配置を低減することによってライトアンプリフィケーションの低減を促進すべく、同じストレージエリアまたは領域に配置され得る。
従って、例えば、シーケンシャル書き込みストリームのストリーム−0およびストリーム−1例えば、図4)などの2つの異なる検出シーケンシャル書き込みストリームに対する書き込み速度が、同じまたは同様(例えば、特定の書き込み速度範囲内など)と測定された場合、2つの異なるシーケンシャル書き込みストリームは、例えば、ストリーム_ID0などの同じシーケンシャル書き込みストリーム識別名または番号によって識別され得る。従って、図4のストリームのストリーム−0およびストリーム−1などの2つの異なる検出シーケンシャル書き込みストリームのための書き込みデータは、シーケンシャル書き込みストリーム識別、この例においてストリーム_ID0に割り当てられている、例えば、同じ書き込み速度データ集約ストレージ領域160aに配置され得る。前述のように、同じシーケンシャル書き込みストリーム識別を有するシーケンシャルストリームの書き込みデータは、検出シーケンシャル書き込みストリームに対して、書き込みデータ宛先アドレス指定(例えば、LBAなど)および送信キュー元情報に基づいて、ストレージ領域160aのエリア400a、400bなどの書き込みデータ集約ストレージエリアに隣接して、再オーダおよびパックされ得る。
シーケンシャル書き込みストリーム管理が、ソリッドステートドライブの効率を改善し得る1つの例は、ソリッドステートドライブに対して、複数の仮想マシンおよび複数のコマンド送信キューを有すべく、多くの場合仮想化されるエンタープライズシステムにおいてである。様々な送信キューのキュー深度が比較的低い状況においてさえ、複数の仮想マシンからの入出力動作の混合に起因して、シーケンシャル書き込み性能が著しく低下され得ることが本明細書において理解される。そのような動作の混合は、ソリッドステートドライブに備えられているシーケンシャル書き込みストリームのシーケンシャル性を難読化する場合がある。
例えば、多くのエンタープライズレベルシステムにて動作するエンタープライズソフトウェアは、多くの場合、仮想マシンをホストするサーバまたは他のコンピューティングデバイスの予期しない電源故障の場合におけるデータ損失回復のためになんらかの形式のジャーナリング技術を利用する。シーケンシャル書き込みストリームに対するそのようなデータ損失回復プロセスは、保存されるべきシーケンシャル書き込みデータが、バッファが満たされるまで循環バッファへとシーケンシャルに書き込まれる循環バッファ技術を頻繁に採用する。バッファが一度バッファの終わりまで満たされると、書き込み動作はバッファの始めまでループバックする。その結果、保存されるべき付加的な書き込みデータは、循環バッファの始めに最も古いシーケンシャル書き込みデータをシーケンシャルに上書きする。このようにして、最も新しいシーケンシャル書き込みデータが、予期しない電源故障の場合に保存されている。1回で保存されるシーケンシャル書き込みデータの量は、循環バッファのサイズのファンクションである。
しかしながら、様々な仮想マシンからの書き込みコマンドの混合に起因して、様々な循環バッファの書き込みデータは、ソリッドステートストレージにおいて、互いに、およびランダムかつ非シーケンシャルな書き込みデータと混合され得る。従って、ソリッドステートストレージブロックのコンテンツは、同時に更新されない場合があり、それによりガベージコレクションデータ再配置およびライトアンプリフィケーションを増大する場合がある。結果として、ソリッドステートドライブ性能は、低下され得る。
本明細書のシーケンシャル書き込みストリーム管理の1つの実施形態によれば、シーケンシャル書き込みストリームに対するより速いストレージ応答が提供され得るが、一方ランダム書き込みは、ライトアンプリフィケーションに起因してより低い性能を受け得る。多くのホスト用途において、ホストは、データ回復ジャーナル更新を優先度の高い書き込み動作として処理し、その上、サービスされないままである(または低バンド幅でサービスされた)場合、ホストは非ジャーナル書き込み動作を阻止し得る。
本明細書の1つの態様において、書き込みストリームが、各循環バッファタイプのストレージエリアのより古い書き込みデータを上書きすべくループバックするレートが同じである限り、著しい性能の低下なく、ストレージの循環タイプバッファに対する2つの異なるシーケンシャル書き込みストリームが混合され得ることが認められる。1つの実施形態において、シーケンシャルストリームの書き込み速度は、データが循環タイプのバッファに更新されるループバックレートである。その結果、同じまたは同様の書き込み速度を有する2つの異なるシーケンシャル書き込みストリームの書き込みデータの混合にかかわらず、ライトアンプリフィケーションは、1.0程度に低減され得る。
例えば、第1のシーケンシャル書き込みストリーム_0(図7)は、例えば、10MBなどの第1のサイズを有する循環バッファと実際には視覚化され得る。同様に、第2のシーケンシャル書き込みストリーム_0は、例えば、20MBなどの第2の異なるサイズを有する循環バッファと実際には視覚化され得る。本明細書によれば、2つの異なるシーケンシャル書き込みストリームの書き込みデータは共に混合され、例えば、ストレージ領域160aなどの同じストレージバンドへと配置され、2つのシーケンシャル書き込みストリームのループバックレート、すなわち、書き込み速度が同じである場合、例えば1.0などの低ライトアンプリフィケーションを維持することが認められる。
従って、2つの異なる検出シーケンシャル書き込みストリームは、例えばストリーム_ID0などの単一の識別シーケンシャル書き込みストリームと識別され得、2つの検出シーケンシャル書き込みストリームは、同じまたは同様のループバックレートの形式で同じまたは同様の書き込み速度を有するので、例えば、1.0などの低ライトアンプリフィケーションを保持し得る。それらのループバックレートは同じであるので、シーケンシャル書き込みストリームのストリーム_0およびストリーム_1に対するストレージエリア400aは、シーケンシャル書き込みストリームのストリーム_0およびストリーム_1の混合書き込みデータから成り、それらのそれぞれのサイズまたは書き込みレートに比例して1:2(10:20MB)の比率にて混合されるだろう。従って、シーケンシャル書き込みストリームのストリーム_0およびストリーム_1を発行するホストソフトウェアは、ストレージエリア400aが一度満たされるとぐるりとループバックする場合、ガベージコレクションプロセスは、ストレージエリア400a内の無効化ストレージブロックを十分に発見することになり、これらのストリームに対して低ライトアンプリフィケーションという結果になるだろう。
シーケンシャル書き込みストリーム書き込み速度検出ロジック310による書き込み速度検出の精度を改善すべく、ソリッドステートドライブ106に対するプロセッサノード104a−104n内のホストソフトウェアのドライバソフトウェアは、シーケンシャル書き込みストリームがソリッドステートドライブ106に向けられることを特徴付けるデータを提供し得る。例えば、ホストのソリッドステートドライブドライバソフトウェアは、検出シーケンシャル書き込みストリームごとの書き込み速度決定を促進すべく、各シーケンシャル書き込みストリームのサイズを識別するデータを提供し得る。シーケンシャル書き込みストリームサイズデータおよび他のシーケンシャル書き込みストリーム特性データは、例えば、適切な書き込みコマンドを使用して、ドライバソフトウェアによってブロックストレージコントローラ110に渡され得る。シーケンシャル書き込みストリーム特性データは、特定の用途に応じて、他の技術およびフォーマットを用いてホストからソリッドステートドライブ106に渡され得ることが理解される。
前述のように、1つの実施形態において、ライトアンプリフィケーションを低減すべく、異なる書き込み速度を有する識別シーケンシャル書き込みストリームの書き込みデータは、例えば、上述のように、異なる転送バッファパーティション、または不揮発性ストレージの異なるストレージエリアもしくは領域であり得る別個のストレージバンドに書き込まれ得る。複数の識別シーケンシャル書き込みストリームを調整すべく複数のオープンバンドを有することにより、書き込みデータ更新の完了前の予期しない電源故障の場合に、データを回復するためのデータ損失回復技術に複雑さを付加する場合があることが理解される。1つの実施形態において、そのようなデータ損失回復は、書き込みデータが識別シーケンシャル書き込みストリームごとに、割り当てストレージバンドに安全に集約および格納される前に、様々な識別シーケンシャル書き込みストリームに対して抽出されている書き込みデータを記録する適切なジャーナルを提供することによって促進され得る。例えば、データ損失回復のための1つの既知の技術は、ストレージの更新プロセスを完了する前に電源が不意に喪失される場合に、書き込み更新データを記録する「間接更新ジャーナル」の使用を含む。そのような間接更新ジャーナルは通常、適切な間接更新ジャーナル用の不揮発性ストレージについてGBにつき付加的な1MBを利用している。
本明細書の1つの態様におけるシーケンシャル書き込みストリーム管理は、たとえ書き込みコマンドがキュー処理されず、別な方法でシーケンシャルに処理されたとしても、例えば、転送バッファなどのストレージエリアのコンテンツをシーケンシャルになるようにオーダすることできることが上記から分かる。いくつかの実施形態において、これは、例えば、元の直接メモリーアクセス(DMA)シーケンスとは異なるオーダとなる不揮発性ストレージのデータの再オーダ化という結果になり得る。そのような再オーダ化は、例えば、特に0.5KB粒度でのデータ書き込みなどのより大きいホストデータ書き込みに対して、データ損失回復技術に複雑さを付加する場合があることが理解される。前述のように、そのようなデータ損失回復は、書き込みデータが識別シーケンシャル書き込みストリームごとに、割り当てストレージバンドに安全に集約および格納される前に、様々な識別シーケンシャル書き込みストリームに対して抽出されている書き込みデータを記録する適切なジャーナルを提供することによって促進され得る。
シーケンシャル書き込みストリーム検出および書き込み速度検出は、検出動作を調整すべく付加的な処理およびメモリリソースを利用し得ることが、さらに理解される。しかしながら、そのような変形は、ストレージ効率の改善と、ホストレベルの入出力ボトルネックを低減または回避することとによりオフセットされるだろうことが考えられる。
図8は、本明細書によるシーケンシャル書き込みストリーム管理を採用する、コンピューティングシステム800の別の例の選択態様を示す上位ブロック図である。システム800は、メモリまたはストレージデバイスを含み得る複数の電子デバイスおよび/またはコンピューティングデバイスのいずれかを表し得る。そのような電子デバイスおよび/またはコンピューティングデバイスは、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、テレフォニデバイス、ネットワーク機器、仮想化デバイス、ストレージコントローラ、可搬または携帯デバイス(例えば、ラップトップ、ネットブック、タブレットコンピュータ、携帯情報端末(PDA)、可搬型メディアプレーヤ、可搬型ゲームデバイス、デジタルカメラ、携帯電話、スマートフォン、フィーチャーフォンなど)、または構成要素(例えば、システムオンチップ、プロセッサ、ブリッジ、ブロックストレージコントローラ、ストレージなど)等のコンピューティングデバイスを含み得る。代替的な実施形態では、システム800は、より多数の構成要素、より少数の構成要素、および/または異なる構成要素を含み得る。その上、システム800は別個の構成要素を含むように図示され得るが、そのような構成要素は1つのプラットフォーム、例えば、システムオンチップ(SoC)等、に統合され得ることが理解されよう。例示の実施例では、システム800は、マイクロプロセッサ820、ブロックストレージコントローラ830、メモリまたはストレージ840および周辺構成要素850を含み、周辺構成要素850は、例えば、ビデオコントローラ、入力デバイス、出力デバイス、ストレージ、ネットワークアダプタなどを含み得る。マイクロプロセッサ820は、命令およびデータを格納するメモリ階層の一部であり得る処理ロジック827およびキャッシュ825を含み、システムメモリまたはストレージ840は、メモリまたはストレージ階層の一部でもあり得る。マイクロプロセッサ820とメモリまたはストレージ840との間の通信はブロックストレージコントローラ(またはチップセット)830により容易にされ得、それにより周辺構成要素850との通信もまた容易となり得る。
周辺構成要素850のストレージは、例えば、ソリッドステートドライブ、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、フラッシュメモリなどの、不揮発性ストレージであり得る。ストレージは、内部ストレージデバイスもしくは取付け型またはネットワークアクセス可能なストレージを備え得る。マイクロプロセッサ820は、メモリまたはストレージ840にデータを書き込み、それからデータを読み出すように構成される。ストレージ中のプログラムは、メモリへとロードされ、プロセッサにより実行される。ネットワークコントローラまたはネットワークアダプタは、イーサネット(登録商標)、ファイバ・チャネル調停ループなどの、ネットワークとの通信を可能にする。さらに、アーキテクチャは、特定の実施形態では、ディスプレイモニタで情報をレンダリングするように構成されたビデオコントローラを含み得、ビデオコントローラは、ビデオカード上に具体化されるか、またはマザーボードまたは他の基板に搭載された集積回路構成要素に統合され得る。入力デバイスは、ユーザ入力をプロセッサに提供するために使用され、キーボード、マウス、ペンスタイラス、マイクロフォン、タッチ感応型ディスプレイスクリーン、入力ピン、ソケット、もしくは当該技術分野で既知の任意の他の起動または入力手段を含み得る。出力デバイスは、プロセッサ、または、表示モニタ、プリンタ、ストレージ、出力ピン、ソケットなどの、他の構成要素から送信された情報をレンダリングできる。ネットワークアダプタは、周辺構成要素相互接続(PCI)カード、PCIエクスプレス、または何か他のI/Oカード等の、ネットワークカード上に、もしくはマザーボードまたは他の基板に搭載された集積回路構成要素上に具体化され得る。
特定の用途に応じて、デバイス800のコンポーネントの1または複数は、省略され得る。例えば、ネットワークルータは、例えば、ビデオコントローラを欠き得る。メモリデバイス825、840、および他のデバイス800、830、850の任意の1または複数は、本明細書によるシーケンシャル書き込みストリーム管理を含み得る。 [例] 以下の例はさらなる実施形態に関係する。
例1は、複数のプロセッサノードの複数のコマンド送信キューと共に使用するための装置であり、
複数のストレージ空間領域を有する不揮発性ストレージと、共通のコマンドキューを有するストレージコントローラとを含むソリッドステートストレージドライブを備え、コントローラは、
複数のコマンド送信キューからの複数の書き込みコマンドを共通のコマンドキューにおいてキュー処理し、
共通のコマンドキューにおいてキュー処理された書き込みコマンドを実行するように構成され、
コントローラは、書き込みコマンドの第1および第2のシーケンシャル書き込みストリームを検出するように構成されるシーケンシャル書き込みストリーム検出ロジックを含むシーケンシャル書き込みストリーム識別ロジックを有し、
シーケンシャル書き込みストリーム識別ロジックは、検出された第1および第2のシーケンシャル書き込みストリームを、検出された第1および第2のシーケンシャル書き込みストリームの特性のファンクションとして、第1および第2の識別シーケンシャル書き込みストリームとそれぞれ識別するように構成され、
コントローラはさらに、書き込みストリーム識別のファンクションとして、ソリッドステートストレージの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを書き込むように構成されるシーケンシャル書き込みストリーム集約ロジックを有し、
ソリッドステートストレージの第1のシーケンシャル書き込みストリームストレージ領域に第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
ソリッドステートストレージの第2のシーケンシャル書き込みストリームストレージ領域に第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
を含む。
例2において、例1−7(本例を除く)の主題は、ソリッドステートストレージドライブはさらに、シーケンシャル書き込みストリームバッファパーティションを有する転送バッファストレージを含み、
コントローラはさらに、シーケンシャル書き込みストリーム識別ロジックによる書き込みストリーム識別のファンクションとして、転送バッファストレージの異なるシーケンシャル書き込みストリームバッファパーティションへと実行中のコマンドの書き込みデータを書き込むように構成される転送バッファパーティション書き込みストリームデータ集約ロジックを有し、転送バッファパーティション書き込みストリームデータ集約ロジックは、
転送バッファストレージの第1のシーケンシャル書き込みストリームバッファパーティションにおける第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
転送バッファストレージの第2のシーケンシャル書き込みストリームバッファパーティションに第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
を含むことを任意に含むことができる。
例3において、例1−7(本例を除く)の主題は、シーケンシャル書き込みストリーム検出ロジックはさらに、書き込みコマンドの第3のシーケンシャル書き込みストリームを検出するように構成され、
シーケンシャル書き込みストリーム識別ロジックはさらに、第1および第3の検出シーケンシャル書き込みストリームの特性のファンクションとして、検出された第3のシーケンシャル書き込みストリームを第1の識別シーケンシャル書き込みストリームと識別するように構成され、
ストレージコントローラはさらに、書き込みストリーム識別のファンクションとして、ソリッドステートストレージの異なる領域へと実行中のコマンドの書き込みデータを書き込むことは、ソリッドステートストレージの第1の領域エリアにおける第3の検出シーケンシャル書き込みストリームの書き込みデータを集約することを含むように構成される、
ことを任意に含むことができる。
例4において、例1−7(本例を除く)の主題は、シーケンシャル書き込みストリーム識別ロジックはさらに、検出シーケンシャル書き込みストリームごとに書き込み速度特性を決定するように構成されるシーケンシャル書き込みストリーム書き込み速度検出ロジックを含み、
シーケンシャル書き込みストリーム識別ロジックはさらに、第1の識別シーケンシャル書き込みストリームとして検出された第1および第3のシーケンシャル書き込みストリームを識別すること、および、検出された第2のシーケンシャル書き込みストリームを第2の識別シーケンシャル書き込みストリームとして識別することが、第1の範囲に検出された書き込み速度特性を有する検出された第1および第3のシーケンシャル書き込みストリーム、および、第2の範囲に検出された書き込み速度特性を有する検出された第2のシーケンシャル書き込みストリームのファンクションであるように構成される、
ことを任意に含むことができる。
例5において、例1−7(本例を除く)の主題は、シーケンシャル書き込みストリーム検出ロジックはさらに、
書き込みコマンドの第1および第2のシーケンシャル書き込みストリームを検出することは、共通のコマンドキューの書き込みコマンドのパラメータを確認することであって、パラメータは書き込みデータ宛先パラメータを含む、確認することと、2つの書き込みコマンドの書き込みデータ宛先パラメータが、シーケンシャル書き込みストリームに対する一連の書き込みコマンドの2つの書き込みコマンドのパラメータと一致するかどうかを判定すること
とを含むように構成されることを任意に含むことができる。
例6において、例1−7(本例を除く)の主題は、パラメータは、共通のコマンドキューの書き込みコマンドごとにコマンド送信キュー元パラメータを含むことを任意に含むことができることを任意に含むことができる。
例7において、例1−7(本例を除く)の主題は、シーケンシャル書き込みストリーム集約ロジックはさらに、ソリッドステートストレージの第1の領域に第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することは、
第1のシーケンシャル書き込みストリームの書き込み宛先アドレス特性を含む第1の識別シーケンシャル書き込みストリームの特性のファンクションとして、第1の領域内に隣接して第1の識別シーケンシャル書き込みストリームの書き込みデータをシーケンシャルに再オーダおよびパックすることを含むように構成される、
ことを任意に含むことができる。
例8は、複数のコマンド送信キューを有する複数のプロセッサノードと、
複数のストレージ空間領域を有する不揮発性ストレージと、共通のコマンドキューを有するストレージコントローラとを含むソリッドステートストレージドライブと、
ストレージに格納されるデータを表すデータを表示するためのビデオコントローラと
を備えるディスプレイと共に使用するためのシステムであり、
ストレージコントローラは、
複数のコマンド送信キューからの複数の書き込みコマンドを共通のコマンドキューにおいてキュー処理し、
共通のコマンドキューにおいてキューされた書き込みコマンドを実行するように構成され、
ストレージコントローラは、書き込みコマンドの第1および第2のシーケンシャル書き込みストリームを検出するように構成されるシーケンシャル書き込みストリーム検出ロジックを含むシーケンシャル書き込みストリーム識別ロジックを有し、
シーケンシャル書き込みストリーム識別ロジックは、検出された第1および第2のシーケンシャル書き込みストリームを、検出された第1および第2の検出シーケンシャル書き込みストリームの特性のファンクションとして、第1および第2の識別シーケンシャル書き込みストリームとそれぞれ識別するように構成され、
ストレージコントローラはさらに、書き込みストリーム識別のファンクションとして、ソリッドステートストレージの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを書き込むように構成されるシーケンシャル書き込みストリーム集約ロジックを有し、
ソリッドステートストレージの第1のシーケンシャル書き込みストリームストレージ領域に第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、ソリッドステートストレージの第2のシーケンシャル書き込みストリームストレージ領域に第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
を含む。
例9において、例8−14(本例を除く)の主題は、ソリッドステートストレージドライブはさらに、シーケンシャル書き込みストリームバッファパーティションを有する転送バッファストレージを有する転送バッファストレージを含み、
ストレージコントローラはさらに、シーケンシャル書き込みストリーム識別ロジックによる書き込みストリーム識別のファンクションとして、転送バッファストレージの異なるシーケンシャル書き込みストリームバッファパーティションへと実行中のコマンドの書き込みデータを書き込むように構成される転送バッファパーティション書き込みストリームデータ集約ロジックを有し、転送バッファパーティション書き込みストリームデータ集約ロジックは、
転送バッファストレージの第1のシーケンシャル書き込みストリームバッファパーティションにおける第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
転送バッファストレージの第2のシーケンシャル書き込みストリームバッファパーティションにおける第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
を含むことを任意に含むことができる。
例10において、例8−14(本例を除く)の主題は、シーケンシャル書き込みストリーム検出ロジックはさらに、書き込みコマンドの第3のシーケンシャル書き込みストリームを検出するように構成され、
シーケンシャル書き込みストリーム識別ロジックはさらに、第1および第3の検出シーケンシャル書き込みストリームの特性のファンクションとして、検出された第3のシーケンシャル書き込みストリームを第1の識別シーケンシャル書き込みストリームと識別するように構成され、
メモリストレージコントローラはさらに、書き込みストリーム識別のファンクションとして、ソリッドステートストレージの異なる領域へと実行中のコマンドの書き込みデータを書き込むことは、ソリッドステートストレージの第1の領域エリアにおける第3の検出シーケンシャル書き込みストリームの書き込みデータを集約することを含むように構成される、
ことを任意に含むことができる。
例11において、例8−14(本例を除く)の主題は、シーケンシャル書き込みストリーム識別ロジックはさらに、検出シーケンシャル書き込みストリームごとに書き込み速度特性を決定するように構成されるシーケンシャル書き込みストリーム書き込み速度検出ロジックを含み、
シーケンシャル書き込みストリーム識別ロジックはさらに、第1の識別シーケンシャル書き込みストリームとして検出された第1および第3のシーケンシャル書き込みストリームを識別すること、および、検出された第2のシーケンシャル書き込みストリームを第2の識別シーケンシャル書き込みストリームとして識別することが、第1の範囲に検出された書き込み速度特性を有する検出された第1および第3のシーケンシャル書き込みストリーム、および、第2の範囲に検出された書き込み速度特性を有する検出された第2のシーケンシャル書き込みストリームのファンクションであるように構成される、
ことを任意に含むことができる。
例12において、例8−14(本例を除く)の主題は、シーケンシャル書き込みストリーム検出ロジックはさらに、
書き込みコマンドの第1および第2のシーケンシャル書き込みストリームを検出することは、共通のコマンドキューの書き込みコマンドのパラメータを確認することであって、パラメータは書き込みデータ宛先パラメータを含む、確認することと、
2つの書き込みコマンドの書き込みデータ宛先パラメータが、シーケンシャル書き込みストリームに対する一連の書き込みコマンドの2つの書き込みコマンドのパラメータと一致するかどうかを判定すること
とを含むように構成されることを任意に含むことができる。
例13において、例8−14(本例を除く)の主題は、パラメータは、共通のコマンドキューの書き込みコマンドごとにコマンド送信キュー元パラメータを含むことを任意に含むことができる。
例14において、例8−14(本例を除く)の主題は、シーケンシャル書き込みストリーム集約ロジックはさらに、ソリッドステートストレージの第1の領域に第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することは、
第1のシーケンシャル書き込みストリームの書き込み宛先アドレス特性を含む第1の識別シーケンシャル書き込みストリームの特性のファンクションとして、第1の領域内に隣接して第1の識別シーケンシャル書き込みストリームの書き込みデータをシーケンシャルに再オーダおよびパックすることを含むように構成される、
ことを任意に含むことができる。
例15は、共通のコマンドキューの複数のコマンド送信キューからの複数の書き込みコマンドをキュー処理する工程と、
共通のコマンドキューにキュー処理された書き込みコマンドを実行する工程と
書き込みコマンドの第1および第2のシーケンシャル書き込みストリームを検出する工程と、
検出された第1および第2のシーケンシャル書き込みストリームを、検出された第1および第2の検出シーケンシャル書き込みストリームの特性のファンクションとして、第1および第2の識別シーケンシャル書き込みストリームとそれぞれ識別する工程と、
書き込みストリーム識別のファンクションとして、ソリッドステートストレージの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを書き込む工程と
を備える方法であって、
書き込みデータを書き込む工程は、
ソリッドステートストレージの第1のシーケンシャル書き込みストリームストレージ領域に第1の識別シーケンシャル書き込みストリームの書き込みデータを集約する工程と、
ソリッドステートストレージの第2のシーケンシャル書き込みストリームストレージ領域に第2の識別シーケンシャル書き込みストリームの書き込みデータを集約する工程と
を有する。
例16において、例15−21(本例を除く)の主題は、書き込みストリーム識別のファンクションとして、転送バッファストレージの異なるシーケンシャル書き込みストリームバッファパーティションへと実行中のコマンドの書き込みデータを書き込む工程をさらに含み、転送バッファストレージの書き込みデータを書き込む工程は、
転送バッファストレージの第1のシーケンシャル書き込みストリームバッファパーティションにおける第1の識別シーケンシャル書き込みストリームの書き込みデータを集約する工程と、
転送バッファストレージの第2のシーケンシャル書き込みストリームバッファパーティションにおける第2の識別シーケンシャル書き込みストリームの書き込みデータを集約する工程と
を有する、
ことを任意に含むことができる。
例17において、例15−21(本例を除く)の主題は、書き込みコマンドの第3のシーケンシャル書き込みストリームを検出する工程と、
第1および第3の検出シーケンシャル書き込みストリームの特性のファンクションとして、検出された第3のシーケンシャル書き込みストリームを第1の識別シーケンシャル書き込みストリームと識別する工程と
をさらに含み、
書き込みストリーム識別のファンクションとして、ソリッドステートストレージの異なる領域へと実行中のコマンドの書き込みデータを書き込む工程は、
ソリッドステートストレージの第1の領域エリアにおける第3の検出シーケンシャル書き込みストリームの書き込みデータを集約する工程をさらに有する、
ことを任意に含むことができる。
例18において、例15−21(本例を除く)の主題は、検出シーケンシャル書き込みストリームごとに書き込み速度特性を決定する工程をさらに含み、
第1の識別シーケンシャル書き込みストリームとして検出された第1および第3のシーケンシャル書き込みストリームを識別する工程、および、検出された第2のシーケンシャル書き込みストリームを第2の識別シーケンシャル書き込みストリームとして識別する工程が、第1の範囲に検出された書き込み速度特性を有する検出された第1および第3のシーケンシャル書き込みストリーム、および、第2の範囲に検出された書き込み速度特性を有する検出された第2のシーケンシャル書き込みストリームのファンクションである、
ことを任意に含むことができる。
例19において、例15−21(本例を除く)の主題は、書き込みコマンドの第1および第2のシーケンシャル書き込みストリームを検出する工程は、共通のコマンドキューの書き込みコマンドのパラメータを確認する工程であって、パラメータは書き込みデータ宛先パラメータを含む、工程と、
2つの書き込みコマンドの書き込みデータ宛先パラメータが、シーケンシャル書き込みストリームに対する一連の書き込みコマンドの2つの書き込みコマンドのパラメータと一致するかどうかを判定する工程
とを有することを任意に含むことができる。
例20において、例15−21(本例を除く)の主題は、パラメータは、共通のコマンドキューの書き込みコマンドごとにコマンド送信キュー元パラメータを含むことを任意に含むことができることを任意に含むことができる。
例21において、例15−21(本例を除く)の主題は、ソリッドステートストレージの第1の領域に第1の識別シーケンシャル書き込みストリームの書き込みデータを集約する工程は、
第1のシーケンシャル書き込みストリームの書き込み宛先アドレス特性を含む第1の識別シーケンシャル書き込みストリームの特性のファンクションとして、第1の領域内に隣接して第1の識別シーケンシャル書き込みストリームの書き込みデータをシーケンシャルに再オーダおよびパックする工程を含む、
ことを任意に含むことができる。
例22において、例1−7の主題は、ディスプレイと共に使用するためのシステムを任意に含むことができ、システムは、複数のコマンド送信キューを有する複数のプロセッサノードと、ソリッドステートストレージドライブと、ストレージに格納されるデータを示すデータを表示するビデオコントローラとを有する。
例23は、任意の前述の例に記載される方法を実行する手段を含む装置である。
説明される動作は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生産する標準プログラミングおよび/または工学技法を用いて、方法、装置、またはコンピュータプログラム製品として実装され得る。説明される動作は、プロセッサによるコンピュータ可読記憶媒体からコードの読み出しおよび実行し得る「コンピュータ可読記憶媒体」に維持されたコンピュータプログラムコードとして実装され得る。コンピュータ可読記憶媒体は、電子回路部、ストレージ材料、無機材料、有機材料、生物材料、ケース類、筐体、被覆物、およびハードウェアのうちの少なくとも1つを含む。コンピュータ可読記憶媒体は限定されないが、磁気記憶媒体(例えば、ハードディスクドライブ、フロッピー(登録商標)ディスク、テープなど)、光ストレージ(CD―ROM、DVD、光ディスクなど)、揮発性および不揮発性メモリデバイス(例えば、EEPROM、ROM、PROM、RAM、DRAM、SRAM、フラッシュメモリ、ファームウェア、プログラム可能ロジックなど)、ソリッドステートデバイス(SSD)などを含み得る。説明される動作を実装するコードは、ハードウェアデバイス(例えば、集積回路チップ、プログラム可能ゲートアレイ(PGA)、特定用途向集積回路(ASIC)など)に実装されたハードウェアロジック回路にさらに実装され得る。さらに、説明される動作を実装するコードは、「送信信号」中にも実装され得、このような送信信号は空間を介して、または光ファイバ、銅電線などの、送信媒体を通って伝搬し得る。コードまたは論理が符号化された送信信号は、無線信号、衛星送信、電波、赤外線信号、ブルートゥース(登録商標)などをさらに含み得る。コンピュータ可読記憶媒体に埋め込まれたプログラムコードは、送信局またはコンピュータから受信局またはコンピュータに送信信号として送信され得る。コンピュータ可読記憶媒体は、送信信号のみで構成されるものではない。当業者であれば、本明細書の適用範囲から逸脱することなくこの構成に多くの修正がなされ得、製造物品には当該技術分野で既知の適切な情報保持媒体を含み得ることを認識するだろう。もちろん、当業者は、本明細書の範囲から逸脱することなく、多くの修正が本構成に対しなされ得、製造物品は、当該技術分野で既知の任意の有形情報保持媒体を含み得ることを認識するだろう。
特定の用途では、本明細書によるデバイスは、モニタまたはコンピュータシステムに結合された他のディスプレイに表示する情報をレンダリングするビデオコントローラ、デバイスドライバ、およびネットワークコントローラを含むコンピュータシステム、例えば、デスクトップ、ワークステーション、サーバ、メインフレーム、ラップトップ、手持ち型コンピュータなどを備えたコンピュータシステムに具体化され得る。あるいは、デバイスとしての実施形態は、例えば、スイッチ、ルータなどの、ビデオコントローラを含まない、または、例えば、ネットワークコントローラを含まない、コンピューティングデバイスに具体化され得る。
説明される図のロジックは、特定の順序で起こるある特定のイベントを示し得る。代替的な実施形態では、特定の動作は異なる順序で実行され、修正され、または除去され得る。その上、上記に説明されるロジックには動作を付加し得るが、それらもやはり説明される実施形態に従い得る。さらに、本明細書において説明された動作は、シーケンシャル発生し得るか、またはある特定の動作は並列に処理され得る。また、動作は単一の処理ユニットにより、または分散型処理ユニットにより実行され得る。
様々な実施形態に関する以上の説明は、図解および説明の目的で提示されたものである。それらは包括的に意図されたものではなく、または開示した厳密な形態に限定するように意図されたものでもない。上記の教示に鑑みて多くの修正例および変形例が可能である。

Claims (21)

  1. 複数のプロセッサノードの複数のコマンド送信キューと共に使用するためのソリッドステートストレージドライブであって、
    複数のストレージ空間領域を有する不揮発性ストレージと、共通のコマンドキューを有するストレージコントローラと備え、前記ストレージコントローラは、
    前記複数のコマンド送信キューからの複数の書き込みコマンドを前記共通のコマンドキューにおいてキュー処理し、
    前記共通のコマンドキューにおいてキュー処理された書き込みコマンドを実行し、
    前記ストレージコントローラは、前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを検出するシーケンシャル書き込みストリーム検出ハードウェアロジックを含むシーケンシャル書き込みストリーム識別ハードウェアロジックを有し、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックは、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームを、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームの特性のファンクションに基づいて、第1の識別シーケンシャル書き込みストリームおよび第2の識別シーケンシャル書き込みストリームとして、それぞれ識別し、
    前記ストレージコントローラはさらに、前記書き込みストリーム識別のファンクションに基づいて、前記ソリッドステートストレージドライブの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを書き込むシーケンシャル書き込みストリーム集約ハードウェアロジックを有し、
    前記ソリッドステートストレージドライブの第1のシーケンシャル書き込みストリームストレージ領域に前記第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
    前記ソリッドステートストレージドライブの第2のシーケンシャル書き込みストリームストレージ領域に前記第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
    を含み、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックは、書き込み速度特性が第1の範囲に含まれる複数のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームとして識別し、
    前記シーケンシャル書き込みストリーム集約ハードウェアロジックは、前記ソリッドステートストレージドライブの第1の領域に前記複数のシーケンシャル書き込みストリームを配置し、前記複数のシーケンシャル書き込みストリームの送信キュー元情報または書き込みデータ宛先に基づいて、前記複数のシーケンシャル書き込みストリームを再オーダおよびパックする
    ソリッドステートストレージドライブ。
  2. 複数のプロセッサノードの複数のコマンド送信キューと共に使用するためのソリッドステートストレージドライブであって、
    複数のストレージ空間領域を有する不揮発性ストレージと、共通のコマンドキューを有するストレージコントローラとを備え、前記ストレージコントローラは、
    前記複数のコマンド送信キューからの複数の書き込みコマンドを前記共通のコマンドキューにおいてキュー処理し、
    前記共通のコマンドキューにおいてキュー処理された書き込みコマンドを実行し、
    前記ストレージコントローラは、前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを検出するシーケンシャル書き込みストリーム検出ハードウェアロジックを含むシーケンシャル書き込みストリーム識別ハードウェアロジックを有し、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックは、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームを、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームの特性のファンクションに基づいて、第1の識別シーケンシャル書き込みストリームおよび第2の識別シーケンシャル書き込みストリームとして、それぞれ識別し、
    前記ストレージコントローラはさらに、前記書き込みストリーム識別のファンクションに基づいて、前記ソリッドステートストレージドライブの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを書き込むシーケンシャル書き込みストリーム集約ハードウェアロジックを有し、
    前記ソリッドステートストレージドライブの第1のシーケンシャル書き込みストリームストレージ領域に前記第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
    前記ソリッドステートストレージドライブの第2のシーケンシャル書き込みストリームストレージ領域に前記第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
    を含み、
    前記シーケンシャル書き込みストリーム検出ハードウェアロジックはさらに、前記書き込みコマンドの第3のシーケンシャル書き込みストリームを検出し、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックはさらに、検出された前記第1のシーケンシャル書き込みストリームおよび検出された前記第3のシーケンシャル書き込みストリームの特性のファンクションに基づいて、検出された前記第3のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームとして識別し、
    前記ストレージコントローラはさらに、前記書き込みストリーム識別のファンクションに基づいて、前記ソリッドステートストレージドライブの異なる領域へと実行中のコマンドの書き込みデータを前記書き込むことは、前記ソリッドステートストレージドライブの第1の領域エリアにおける検出された前記第3のシーケンシャル書き込みストリームの書き込みデータを集約することを含むように構成される、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックはさらに、検出シーケンシャル書き込みストリームごとに書き込み速度特性を決定するシーケンシャル書き込みストリーム書き込み速度検出ハードウェアロジックを含み、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックはさらに、前記第1の識別シーケンシャル書き込みストリームとして、検出された前記第1のシーケンシャル書き込みストリームおよび前記第3のシーケンシャル書き込みストリームを前記識別すること、および、検出された前記第2のシーケンシャル書き込みストリームを前記第2の識別シーケンシャル書き込みストリームとして前記識別することが、第1の範囲に検出された書き込み速度特性を有する検出された前記第1のシーケンシャル書き込みストリームおよび前記第3のシーケンシャル書き込みストリーム、および、第2の範囲に検出された書き込み速度特性を有する検出された前記第2のシーケンシャル書き込みストリームのファンクションであるように構成される、
    ソリッドステートストレージドライブ。
  3. 前記ソリッドステートストレージドライブはさらに、シーケンシャル書き込みストリームバッファパーティションを有する転送バッファストレージを含み、
    前記ストレージコントローラはさらに、前記シーケンシャル書き込みストリーム識別ハードウェアロジックによる前記書き込みストリーム識別のファンクションに基づいて、前記転送バッファストレージの異なるシーケンシャル書き込みストリームバッファパーティションへと実行中のコマンドの書き込みデータを書き込む転送バッファパーティション書き込みストリームデータ集約ハードウェアロジックを有し、前記転送バッファパーティション書き込みストリームデータ集約ハードウェアロジックは、
    前記転送バッファストレージの第1のシーケンシャル書き込みストリームバッファパーティションにおける前記第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
    前記転送バッファストレージの第2のシーケンシャル書き込みストリームバッファパーティションに前記第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
    を含む、
    請求項1または2に記載のソリッドステートストレージドライブ
  4. 前記シーケンシャル書き込みストリーム検出ハードウェアロジックはさらに、前記書き込みコマンドの第3のシーケンシャル書き込みストリームを検出し、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックはさらに、検出された前記第1のシーケンシャル書き込みストリームおよび検出された前記第3のシーケンシャル書き込みストリームの特性のファンクションに基づいて、検出された前記第3のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームとして識別し、
    前記ストレージコントローラはさらに、前記書き込みストリーム識別のファンクションに基づいて、前記ソリッドステートストレージドライブの異なる領域へと実行中のコマンドの書き込みデータを前記書き込むことは、前記ソリッドステートストレージドライブの第1の領域エリアにおける検出された前記第3のシーケンシャル書き込みストリームの書き込みデータを集約することを含むように構成される、
    請求項に記載のソリッドステートストレージドライブ
  5. 前記シーケンシャル書き込みストリーム検出ハードウェアロジックはさらに、
    前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを前記検出することは、前記共通のコマンドキューの前記書き込みコマンドのパラメータを確認することであって、前記パラメータは書き込みデータ宛先パラメータを含む、確認することと、
    2つの書き込みコマンドの前記書き込みデータ宛先パラメータが、シーケンシャル書き込みストリームに対する一連の書き込みコマンドの2つの書き込みコマンドのパラメータと一致するかどうかを判定することと
    を含むように構成される、
    請求項1から4のいずれか一項に記載のソリッドステートストレージドライブ
  6. 前記パラメータは、前記共通のコマンドキューの書き込みコマンドごとにコマンド送信キュー元パラメータを含む、
    請求項5に記載のソリッドステートストレージドライブ
  7. 前記シーケンシャル書き込みストリーム集約ハードウェアロジックはさらに、前記ソリッドステートストレージドライブの第1の領域に前記第1の識別シーケンシャル書き込みストリームの前記書き込みデータを前記集約することは、
    前記第1のシーケンシャル書き込みストリームの書き込み宛先アドレス特性を含む前記第1の識別シーケンシャル書き込みストリームの特性のファンクションに基づいて、前記第1の領域内に隣接して前記第1の識別シーケンシャル書き込みストリームの書き込みデータをシーケンシャルに再オーダおよびパックすることを含むように構成される、
    請求項3に記載のソリッドステートストレージドライブ
  8. 複数のコマンド送信キューを有する複数のプロセッサノードと、
    複数のストレージ空間領域を有する不揮発性ストレージと、共通のコマンドキューを有するストレージコントローラとを含むソリッドステートストレージドライブと、
    前記不揮発性ストレージに格納されるデータを表すデータを表示するためのビデオコントローラと
    を備えるディスプレイと共に使用するためのシステムであって、
    前記ストレージコントローラは、
    前記複数のコマンド送信キューからの複数の書き込みコマンドを前記共通のコマンドキューにおいてキュー処理し、
    前記共通のコマンドキューにおいてキュー処理された書き込みコマンドを実行し、
    前記ストレージコントローラは、前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを検出するシーケンシャル書き込みストリーム検出ハードウェアロジックを含むシーケンシャル書き込みストリーム識別ハードウェアロジックを有し、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックは、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームを、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームの特性のファンクションに基づいて、第1の識別シーケンシャル書き込みストリームおよび第2の識別シーケンシャル書き込みストリームとして、それぞれ識別し、
    前記ストレージコントローラはさらに、前記書き込みストリーム識別のファンクションに基づいて、前記ソリッドステートストレージドライブの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを書き込むシーケンシャル書き込みストリーム集約ハードウェアロジックを有し、
    前記ソリッドステートストレージドライブの第1のシーケンシャル書き込みストリームストレージ領域に前記第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
    前記ソリッドステートストレージドライブの第2のシーケンシャル書き込みストリームストレージ領域に前記第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
    を含み、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックは、書き込み速度特性が第1の範囲に含まれる複数のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームとして識別し、
    前記シーケンシャル書き込みストリーム集約ハードウェアロジックは、前記ソリッドステートストレージドライブの第1の領域に前記複数のシーケンシャル書き込みストリームを配置し、前記複数のシーケンシャル書き込みストリームの送信キュー元情報または書き込みデータ宛先に基づいて、前記複数のシーケンシャル書き込みストリームを再オーダおよびパックする
    システム。
  9. 複数のコマンド送信キューを有する複数のプロセッサノードと、
    複数のストレージ空間領域を有する不揮発性ストレージと、共通のコマンドキューを有するストレージコントローラとを含むソリッドステートストレージドライブと、
    前記不揮発性ストレージに格納されるデータを表すデータを表示するためのビデオコントローラと
    を備えるディスプレイと共に使用するためのシステムであって、
    前記ストレージコントローラは、
    前記複数のコマンド送信キューからの複数の書き込みコマンドを前記共通のコマンドキューにおいてキュー処理し、
    前記共通のコマンドキューにおいてキュー処理された書き込みコマンドを実行し、
    前記ストレージコントローラは、前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを検出するシーケンシャル書き込みストリーム検出ハードウェアロジックを含むシーケンシャル書き込みストリーム識別ハードウェアロジックを有し、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックは、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームを、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームの特性のファンクションに基づいて、第1の識別シーケンシャル書き込みストリームおよび第2の識別シーケンシャル書き込みストリームとして、それぞれ識別し、
    前記ストレージコントローラはさらに、前記書き込みストリーム識別のファンクションに基づいて、前記ソリッドステートストレージドライブの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを書き込むシーケンシャル書き込みストリーム集約ハードウェアロジックを有し、
    前記ソリッドステートストレージドライブの第1のシーケンシャル書き込みストリームストレージ領域に前記第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
    前記ソリッドステートストレージドライブの第2のシーケンシャル書き込みストリームストレージ領域に前記第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
    を含み、
    前記シーケンシャル書き込みストリーム検出ハードウェアロジックはさらに、前記書き込みコマンドの第3のシーケンシャル書き込みストリームを検出し、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックはさらに、検出された前記第1のシーケンシャル書き込みストリームおよび検出された前記第3のシーケンシャル書き込みストリームの特性のファンクションに基づいて、検出された前記第3のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームと識別し、
    前記ストレージコントローラはさらに、前記書き込みストリーム識別のファンクションに基づいて、前記ソリッドステートストレージドライブの異なる領域へと実行中のコマンドの書き込みデータを前記書き込むことは、前記ソリッドステートストレージドライブの第1の領域エリアにおける検出された前記第3のシーケンシャル書き込みストリームの書き込みデータを集約することを含むように構成され、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックはさらに、検出シーケンシャル書き込みストリームごとに書き込み速度特性を決定するシーケンシャル書き込みストリーム書き込み速度検出ハードウェアロジックを含み、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックはさらに、前記第1の識別シーケンシャル書き込みストリームとして、検出された前記第1のシーケンシャル書き込みストリームおよび前記第3のシーケンシャル書き込みストリームを前記識別すること、および、検出された前記第2のシーケンシャル書き込みストリームを前記第2の識別シーケンシャル書き込みストリームとして前記識別することが、第1の範囲に検出された書き込み速度特性を有する検出された前記第1のシーケンシャル書き込みストリームおよび前記第3のシーケンシャル書き込みストリーム、および、第2の範囲に検出された書き込み速度特性を有する検出された前記第2のシーケンシャル書き込みストリームのファンクションであるように構成される、
    システム。
  10. 前記ソリッドステートストレージドライブはさらに、シーケンシャル書き込みストリームバッファパーティションを有する転送バッファストレージを有する転送バッファストレージを含み、
    前記ストレージコントローラはさらに、前記シーケンシャル書き込みストリーム識別ハードウェアロジックによる前記書き込みストリーム識別のファンクションに基づいて、前記転送バッファストレージの異なるシーケンシャル書き込みストリームバッファパーティションへと実行中のコマンドの書き込みデータを書き込む転送バッファパーティション書き込みストリームデータ集約ハードウェアロジックを有し、前記転送バッファパーティション書き込みストリームデータ集約ハードウェアロジックは、
    前記転送バッファストレージの第1のシーケンシャル書き込みストリームバッファパーティションにおける前記第1の識別シーケンシャル書き込みストリームの書き込みデータを集約することと、
    前記転送バッファストレージの第2のシーケンシャル書き込みストリームバッファパーティションにおける前記第2の識別シーケンシャル書き込みストリームの書き込みデータを集約することと
    を含む、
    請求項8または9に記載のシステム。
  11. 前記シーケンシャル書き込みストリーム検出ハードウェアロジックはさらに、前記書き込みコマンドの第3のシーケンシャル書き込みストリームを検出し、
    前記シーケンシャル書き込みストリーム識別ハードウェアロジックはさらに、検出された前記第1のシーケンシャル書き込みストリームおよび検出された前記第3のシーケンシャル書き込みストリームの特性のファンクションに基づいて、検出された前記第3のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームと識別し、
    前記ストレージコントローラはさらに、前記書き込みストリーム識別のファンクションに基づいて、前記ソリッドステートストレージドライブの異なる領域へと実行中のコマンドの書き込みデータを前記書き込むことは、前記ソリッドステートストレージドライブの第1の領域エリアにおける検出された前記第3のシーケンシャル書き込みストリームの書き込みデータを集約することを含むように構成される、
    請求項に記載のシステム。
  12. 前記シーケンシャル書き込みストリーム検出ハードウェアロジックはさらに、
    前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを前記検出することは、前記共通のコマンドキューの前記書き込みコマンドのパラメータを確認することであって、前記パラメータは書き込みデータ宛先パラメータを含む、確認することと、
    2つの書き込みコマンドの前記書き込みデータ宛先パラメータが、シーケンシャル書き込みストリームに対する一連の書き込みコマンドの2つの書き込みコマンドのパラメータと一致するかどうかを判定すること
    とを含むように構成される、
    請求項8から11のいずれか一項に記載のシステム。
  13. 前記パラメータは、前記共通のコマンドキューの書き込みコマンドごとにコマンド送信キュー元パラメータを含む、
    請求項12に記載のシステム。
  14. 前記シーケンシャル書き込みストリーム集約ハードウェアロジックはさらに、前記ソリッドステートストレージドライブの第1の領域に前記第1の識別シーケンシャル書き込みストリームの前記書き込みデータを前記集約することは、
    前記第1のシーケンシャル書き込みストリームの書き込み宛先アドレス特性を含む前記第1の識別シーケンシャル書き込みストリームの特性のファンクションに基づいて、前記第1の領域内に隣接して前記第1の識別シーケンシャル書き込みストリームの書き込みデータをシーケンシャルに再オーダおよびパックすることを含むように構成される、
    請求項11に記載のシステム。
  15. 共通のコマンドキューの複数のコマンド送信キューからの複数の書き込みコマンドをコンピュータがキュー処理する段階と、
    前記共通のコマンドキューにおいてキュー処理される書き込みコマンドを前記コンピュータが実行する段階と
    前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを前記コンピュータが検出する段階と、
    検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームを、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームの特性のファンクションに基づいて、第1の識別シーケンシャル書き込みストリームおよび第2の識別シーケンシャル書き込みストリームとして、それぞれ前記コンピュータが識別する段階と、
    前記書き込みストリーム識別のファンクションに基づいて、ソリッドステートストレージの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを前記コンピュータが書き込む段階と
    を備える、前記コンピュータにより実行される方法であって、
    前記書き込みデータを書き込む段階は、
    前記ソリッドステートストレージの第1のシーケンシャル書き込みストリームストレージ領域に前記第1の識別シーケンシャル書き込みストリームの書き込みデータを前記コンピュータが集約する段階と、
    前記ソリッドステートストレージの第2のシーケンシャル書き込みストリームストレージ領域に前記第2の識別シーケンシャル書き込みストリームの書き込みデータを前記コンピュータが集約する段階と
    を有し、
    前記識別する段階は、書き込み速度特性が第1の範囲に含まれる複数のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームとして前記コンピュータが識別する段階を含み、
    前記集約する段階は、前記ソリッドステートストレージの第1の領域に前記複数のシーケンシャル書き込みストリームを前記コンピュータが配置し、前記複数のシーケンシャル書き込みストリームの送信キュー元情報または書き込みデータ宛先に基づいて、前記複数のシーケンシャル書き込みストリームを前記コンピュータが再オーダおよびパックする段階を含む
    方法。
  16. 共通のコマンドキューの複数のコマンド送信キューからの複数の書き込みコマンドをコンピュータがキュー処理する段階と、
    前記共通のコマンドキューにおいてキュー処理される書き込みコマンドを前記コンピュータが実行する段階と
    前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを前記コンピュータが検出する段階と、
    検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームを、検出された前記第1のシーケンシャル書き込みストリームおよび前記第2のシーケンシャル書き込みストリームの特性のファンクションに基づいて、第1の識別シーケンシャル書き込みストリームおよび第2の識別シーケンシャル書き込みストリームとして、それぞれ前記コンピュータが識別する段階と、
    前記書き込みストリーム識別のファンクションに基づいて、ソリッドステートストレージの異なるシーケンシャル書き込みストリーム領域へと実行中のコマンドの書き込みデータを前記コンピュータが書き込む段階と
    を備える、前記コンピュータにより実行される方法であって、
    前記書き込みデータを書き込む段階は、
    前記ソリッドステートストレージの第1のシーケンシャル書き込みストリームストレージ領域に前記第1の識別シーケンシャル書き込みストリームの書き込みデータを前記コンピュータが集約する段階と、
    前記ソリッドステートストレージの第2のシーケンシャル書き込みストリームストレージ領域に前記第2の識別シーケンシャル書き込みストリームの書き込みデータを前記コンピュータが集約する段階と
    を有し、
    前記方法は、
    前記書き込みコマンドの第3のシーケンシャル書き込みストリームを前記コンピュータが検出する段階と、
    検出された前記第1のシーケンシャル書き込みストリームおよび前記第3のシーケンシャル書き込みストリームの特性のファンクションに基づいて、検出された前記第3のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームとして前記コンピュータが識別する段階と
    をさらに備え、
    前記書き込みストリーム識別のファンクションに基づいて、ソリッドステートストレージの異なる領域へと実行中のコマンドの書き込みデータを前記コンピュータが前記書き込む段階は、
    前記ソリッドステートストレージの第1の領域のエリアにおける検出された前記第3のシーケンシャル書き込みストリームの書き込みデータを前記コンピュータが集約する段階をさらに有し、
    前記方法は、
    検出シーケンシャル書き込みストリームごとに書き込み速度特性を前記コンピュータが決定する段階をさらに備え、
    前記第1の識別シーケンシャル書き込みストリームとして、検出された前記第1のシーケンシャル書き込みストリームおよび前記第3のシーケンシャル書き込みストリームを前記コンピュータが前記識別する段階、および、検出された前記第2のシーケンシャル書き込みストリームを前記第2の識別シーケンシャル書き込みストリームとして前記コンピュータが前記識別する段階が、第1の範囲に検出された書き込み速度特性を有する検出された前記第1のシーケンシャル書き込みストリームおよび前記第3のシーケンシャル書き込みストリーム、および、第2の範囲に検出された書き込み速度特性を有する検出された前記第2のシーケンシャル書き込みストリームのファンクションである、
    方法。
  17. 前記書き込みストリーム識別のファンクションに基づいて、転送バッファストレージの異なるシーケンシャル書き込みストリームバッファパーティションへと実行中のコマンドの書き込みデータを前記コンピュータが書き込む段階をさらに備え、前記転送バッファストレージの前記書き込む段階は、
    前記転送バッファストレージの第1のシーケンシャル書き込みストリームバッファパーティションにおける前記第1の識別シーケンシャル書き込みストリームの書き込みデータを前記コンピュータが集約する段階と、
    前記転送バッファストレージの第2のシーケンシャル書き込みストリームバッファパーティションにおける前記第2の識別シーケンシャル書き込みストリームの書き込みデータを前記コンピュータが集約する段階と
    を有する、
    請求項15または16に記載の方法。
  18. 前記書き込みコマンドの第3のシーケンシャル書き込みストリームを前記コンピュータが検出する段階と、
    検出された前記第1のシーケンシャル書き込みストリームおよび前記第3のシーケンシャル書き込みストリームの特性のファンクションに基づいて、検出された前記第3のシーケンシャル書き込みストリームを前記第1の識別シーケンシャル書き込みストリームとして前記コンピュータが識別する段階と
    をさらに備え、
    前記書き込みストリーム識別のファンクションに基づいて、ソリッドステートストレージの異なる領域へと実行中のコマンドの書き込みデータを前記コンピュータが前記書き込む段階は、
    前記ソリッドステートストレージの第1の領域のエリアにおける検出された前記第3のシーケンシャル書き込みストリームの書き込みデータを前記コンピュータが集約する段階をさらに有する、
    請求項15に記載の方法。
  19. 前記書き込みコマンドの第1のシーケンシャル書き込みストリームおよび第2のシーケンシャル書き込みストリームを前記検出する段階は、前記共通のコマンドキューの前記書き込みコマンドのパラメータを前記コンピュータが確認する段階であって、前記パラメータは書き込みデータ宛先パラメータを含む、段階と、
    2つの書き込みコマンドの前記書き込みデータ宛先パラメータが、シーケンシャル書き込みストリームに対する一連の書き込みコマンドの2つの書き込みコマンドのパラメータと一致するかどうかを前記コンピュータが判定する段階と
    を有する、請求項15から17のいずれか一項に記載の方法。
  20. 前記パラメータは、前記共通のコマンドキューの書き込みコマンドごとにコマンド送信キュー元パラメータを含む、
    請求項19に記載の方法。
  21. 前記ソリッドステートストレージの前記第1の領域に前記第1の識別シーケンシャル書き込みストリームの前記書き込みデータを前記コンピュータが前記集約する段階は、
    前記第1のシーケンシャル書き込みストリームの書き込み宛先アドレス特性を含む前記第1の識別シーケンシャル書き込みストリームの特性のファンクションに基づいて、前記第1の領域内に隣接して前記第1の識別シーケンシャル書き込みストリームの書き込みデータをシーケンシャルに前記コンピュータが再オーダおよびパックする段階を含む、
    請求項18に記載の方法。
JP2017542850A 2015-03-27 2016-02-19 ソリッドステートストレージドライブ、システム、および方法 Active JP6729914B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/671,968 US9760281B2 (en) 2015-03-27 2015-03-27 Sequential write stream management
US14/671,968 2015-03-27
PCT/US2016/018795 WO2016160172A1 (en) 2015-03-27 2016-02-19 Sequential write stream management

Publications (2)

Publication Number Publication Date
JP2018511112A JP2018511112A (ja) 2018-04-19
JP6729914B2 true JP6729914B2 (ja) 2020-07-29

Family

ID=56975382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017542850A Active JP6729914B2 (ja) 2015-03-27 2016-02-19 ソリッドステートストレージドライブ、システム、および方法

Country Status (6)

Country Link
US (1) US9760281B2 (ja)
EP (1) EP3274806B1 (ja)
JP (1) JP6729914B2 (ja)
KR (2) KR102561727B1 (ja)
CN (2) CN117687568A (ja)
WO (1) WO2016160172A1 (ja)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10013177B2 (en) * 2015-04-20 2018-07-03 Hewlett Packard Enterprise Development Lp Low write amplification in solid state drive
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10466908B2 (en) * 2015-08-25 2019-11-05 Toshiba Memory Corporation Memory system that buffers data before writing to nonvolatile memory
JP6403164B2 (ja) * 2015-09-11 2018-10-10 東芝メモリ株式会社 メモリシステム
US10089039B2 (en) * 2015-10-30 2018-10-02 Toshiba Memory Corporation Memory controller, memory device having the same, and memory control method
CN107347058B (zh) 2016-05-06 2021-07-23 阿里巴巴集团控股有限公司 数据加密方法、数据解密方法、装置及系统
US10216417B2 (en) 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
US10491797B2 (en) * 2016-12-20 2019-11-26 Shanghai Xiaoyi Technology Co., Ltd. Apparatus and method for controlling imaging devices
US10503434B2 (en) * 2017-04-12 2019-12-10 Micron Technology, Inc. Scalable low-latency storage interface
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10698808B2 (en) * 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US10733100B2 (en) * 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and apparatus for classifying and buffering write commands
KR102398181B1 (ko) 2017-07-03 2022-05-17 삼성전자주식회사 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치
US10643707B2 (en) * 2017-07-25 2020-05-05 Western Digital Technologies, Inc. Group write operations for a data storage device
US10878859B2 (en) * 2017-12-20 2020-12-29 Micron Technology, Inc. Utilizing write stream attributes in storage write commands
US10877691B2 (en) 2017-12-29 2020-12-29 Intel Corporation Stream classification based on logical regions
CN110018784B (zh) 2018-01-09 2023-01-10 阿里巴巴集团控股有限公司 数据处理方法、装置及计算设备
US10824562B2 (en) * 2018-01-09 2020-11-03 Hossein Asadi Reconfigurable caching
KR102406340B1 (ko) * 2018-02-26 2022-06-13 에스케이하이닉스 주식회사 전자 장치 및 그것의 동작 방법
US11803325B2 (en) 2018-03-27 2023-10-31 Micron Technology, Inc. Specifying media type in write commands
CN112352216B (zh) * 2018-06-30 2022-06-14 华为技术有限公司 数据存储方法及数据存储装置
CN108932155A (zh) * 2018-07-25 2018-12-04 迈普通信技术股份有限公司 虚拟机存储管理方法、装置、电子设备及可读存储介质
CN109450620B (zh) 2018-10-12 2020-11-10 创新先进技术有限公司 一种移动终端中共享安全应用的方法及移动终端
US11188250B2 (en) 2018-10-25 2021-11-30 Micron Technology, Inc. Two-stage hybrid memory buffer for multiple streams
US11061591B2 (en) * 2018-11-02 2021-07-13 Samsung Electronics Co., Ltd. Storage device processing stream data, system including the same, and operation method thereof
US10990315B2 (en) * 2018-12-03 2021-04-27 International Business Machines Corporation Write transfer resource management in a data storage system
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
JP6920001B2 (ja) * 2018-12-04 2021-08-18 株式会社日立製作所 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法
US11231873B2 (en) * 2018-12-07 2022-01-25 Intel Corporation Apparatus and method for assigning velocities to write data
CN109558092A (zh) * 2018-12-17 2019-04-02 杭州普创电子有限公司 一种芯片内部flash存储方法及装置
US11347647B2 (en) * 2018-12-18 2022-05-31 Western Digital Technologies, Inc. Adaptive cache commit delay for write aggregation
CN109799959B (zh) * 2019-01-22 2020-07-10 华中科技大学 一种提高开放通道固态盘写并行性的方法
US11055022B2 (en) * 2019-03-25 2021-07-06 Western Digital Technologies, Inc. Storage system and method for early host command fetching in a low queue depth environment
CN111813326B (zh) * 2019-04-12 2024-04-19 建兴储存科技(广州)有限公司 具多数据流写入的固态存储装置及其相关写入方法
KR20210012439A (ko) * 2019-07-25 2021-02-03 삼성전자주식회사 마스터 지능 소자 및 이의 제어 방법
JP2021033845A (ja) 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
CN110716699A (zh) * 2019-10-17 2020-01-21 北京百度网讯科技有限公司 用于写入数据的方法和装置
KR20210053384A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20210061544A (ko) * 2019-11-20 2021-05-28 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US11429519B2 (en) * 2019-12-23 2022-08-30 Alibaba Group Holding Limited System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive
US11216364B2 (en) * 2020-02-18 2022-01-04 Micron Technology, Inc. Sequential read optimization in a memory sub-system that programs sequentially
CN112015672A (zh) * 2020-08-28 2020-12-01 北京浪潮数据技术有限公司 一种存储系统中数据处理方法、装置、设备及存储介质
US11880595B2 (en) * 2020-11-06 2024-01-23 Micron Technology, Inc. Memory cell access techniques for memory systems
KR20220073998A (ko) * 2020-11-27 2022-06-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TW202225987A (zh) 2020-12-21 2022-07-01 韓商愛思開海力士有限公司 用以分配儲存裝置的多個記憶通道以進行串流資料寫入的方法、儲存裝置及其記錄媒體
KR20220104511A (ko) * 2021-01-18 2022-07-26 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11675539B2 (en) * 2021-06-03 2023-06-13 International Business Machines Corporation File system operations for a storage supporting a plurality of submission queues
CN113703664B (zh) * 2021-06-24 2024-05-03 杭州电子科技大学 一种eMMC芯片随机写入速率优化实现方法
CN115729443A (zh) * 2021-09-01 2023-03-03 北京特纳飞电子技术有限公司 用于对数据进行排序的方法和装置,存储装置
KR102553878B1 (ko) * 2021-11-25 2023-07-10 삼성전자주식회사 비휘발성 메모리 기반의 저장 장치, 장치 컨트롤러 및 방법
CN116166415A (zh) * 2021-11-25 2023-05-26 三星电子株式会社 装置控制器、存储装置及其方法
US11899984B1 (en) 2022-07-26 2024-02-13 Beijing Tenafe Electronic Technology Co., Ltd. Virtual queue for messages
US11907147B1 (en) 2022-07-28 2024-02-20 Beijing Tenafe Electronic Technology Co., Ltd. Programmable message inspection engine implemented in hardware that generates an output message using a content modification plan and a destination control plan
US11989458B2 (en) 2022-09-12 2024-05-21 Western Digital Technologies, Inc. Splitting sequential read commands

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001001262A1 (fr) * 1999-06-24 2001-01-04 Fujitsu Limited Controleur de peripherique et systeme d'entree/sortie
JP2001222380A (ja) * 2000-02-07 2001-08-17 Hitachi Ltd 外部記憶装置とそれを備えた情報処理システム
US7917903B2 (en) * 2003-03-27 2011-03-29 Hewlett-Packard Development Company, L.P. Quality of service controller and method for a data storage system
US8416657B2 (en) * 2007-12-03 2013-04-09 Mediatek Inc. Method and system for managing data from host to optical disc
US8725928B1 (en) * 2008-12-17 2014-05-13 Micron Technology, Inc. Method and apparatus for configuring write performance for electrically writable memory devices
US9230002B2 (en) 2009-01-30 2016-01-05 Oracle International Corporation High performant information sharing and replication for single-publisher and multiple-subscriber configuration
US20120110291A1 (en) 2009-04-06 2012-05-03 Kaminario Technologies Ltd. System and method for i/o command management
US8463983B2 (en) * 2009-09-15 2013-06-11 International Business Machines Corporation Container marker scheme for reducing write amplification in solid state devices
US8806143B1 (en) * 2009-10-09 2014-08-12 Netapp, Inc. Queuing received write blocks for reducing file fragmentation
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
JP2011154547A (ja) * 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP2011175615A (ja) * 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス
US20110320733A1 (en) 2010-06-04 2011-12-29 Steven Ted Sanford Cache management and acceleration of storage media
CN102004698B (zh) * 2010-11-23 2012-07-04 深圳市江波龙电子有限公司 一种闪存管理方法及系统
US8458435B1 (en) * 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8521948B2 (en) * 2011-01-03 2013-08-27 Apple Inc. Handling dynamic and static data for a system having non-volatile memory
EP2715510B1 (en) * 2011-05-24 2018-05-02 Marvell World Trade Ltd. Method for storage devices to achieve low write amplification with low over provision
CN102521269B (zh) * 2011-11-22 2013-06-19 清华大学 一种基于索引的计算机连续数据保护方法
JP2013131060A (ja) * 2011-12-21 2013-07-04 Panasonic Corp 情報処理装置
US20130173842A1 (en) * 2011-12-28 2013-07-04 King Ying Ng Adaptive Logical Group Sorting to Prevent Drive Fragmentation
US8930619B2 (en) 2012-05-29 2015-01-06 Dot Hill Systems Corporation Method and apparatus for efficiently destaging sequential I/O streams
US9552297B2 (en) * 2013-03-04 2017-01-24 Dot Hill Systems Corporation Method and apparatus for efficient cache read ahead
JP2016506585A (ja) * 2013-01-08 2016-03-03 ヴァイオリン メモリー インコーポレイテッド データストレージのための方法及びシステム
US9223698B2 (en) * 2013-01-15 2015-12-29 Kaminario Technologies Ltd. SSD-block aligned writes
JP2014167763A (ja) * 2013-02-28 2014-09-11 Canon Inc 電子機器及びその制御方法
US8966164B1 (en) * 2013-09-27 2015-02-24 Avalanche Technology, Inc. Storage processor managing NVME logically addressed solid state disk array
KR102074329B1 (ko) * 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
CN103631940B (zh) * 2013-12-09 2017-02-08 中国联合网络通信集团有限公司 一种应用于hbase数据库的数据写入方法及系统
TWI515735B (zh) * 2013-12-09 2016-01-01 群聯電子股份有限公司 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
CN104331250B (zh) * 2014-11-18 2017-05-24 苏州佳世达电通有限公司 资料写入方法
US9658966B2 (en) * 2014-11-24 2017-05-23 Sandisk Technologies Llc Systems and methods of write cache flushing
CN104461935B (zh) * 2014-11-27 2018-03-13 华为技术有限公司 一种进行数据存储的方法、装置及系统

Also Published As

Publication number Publication date
US20160283116A1 (en) 2016-09-29
CN107430493B (zh) 2023-10-03
KR102561727B1 (ko) 2023-07-31
CN107430493A (zh) 2017-12-01
WO2016160172A1 (en) 2016-10-06
EP3274806A1 (en) 2018-01-31
CN117687568A (zh) 2024-03-12
EP3274806B1 (en) 2023-12-06
US9760281B2 (en) 2017-09-12
KR20170130376A (ko) 2017-11-28
JP2018511112A (ja) 2018-04-19
KR20230117258A (ko) 2023-08-07
EP3274806A4 (en) 2018-12-05

Similar Documents

Publication Publication Date Title
JP6729914B2 (ja) ソリッドステートストレージドライブ、システム、および方法
US9928167B2 (en) Information processing system and nonvolatile storage unit
US9348747B2 (en) Solid state memory command queue in hybrid device
EP3608787A1 (en) Virtualizing isolation areas of solid-state storage media
US11307992B2 (en) Method and apparatus for performing operations to namespaces of a flash memory device
JP2012508428A (ja) 単一のコマンドにより複数の非連続アドレス範囲の転送をキューイングするための方法及びシステム
US10209897B2 (en) Storage device and control method of the same
US10983701B2 (en) Memory system that constructs virtual storage regions for virtual machines
US9983826B2 (en) Data storage device deferred secure delete
US20120221809A1 (en) Storage apparatus and data processing method of the same
US10649909B2 (en) Logical block addressing range collision crawler
Jung et al. Architecture exploration of flash memory storage controller through a cycle accurate profiling
US8683161B2 (en) Method and apparatus for increasing file copy performance on solid state mass storage devices
CN114610654A (zh) 一种固态存储设备以及向其写入数据的方法
TWI601058B (zh) 減少在固態驅動機中混植輸入與輸出操作的技術
US9898208B2 (en) Storage system with hybrid logical volumes utilizing in-band hinting
TWI805505B (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
WO2016098202A1 (ja) ストレージ装置およびその制御方法
TW202416108A (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
TW202416120A (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
Jeremic et al. Dataset Management-Aware Software Architecture for Storage Systems Based on SSDs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200626

R150 Certificate of patent or registration of utility model

Ref document number: 6729914

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250