JP2016095828A - 高速非同期ストリームを処理するための方法及び機器 - Google Patents

高速非同期ストリームを処理するための方法及び機器 Download PDF

Info

Publication number
JP2016095828A
JP2016095828A JP2015127616A JP2015127616A JP2016095828A JP 2016095828 A JP2016095828 A JP 2016095828A JP 2015127616 A JP2015127616 A JP 2015127616A JP 2015127616 A JP2015127616 A JP 2015127616A JP 2016095828 A JP2016095828 A JP 2016095828A
Authority
JP
Japan
Prior art keywords
host write
host
storage controller
write request
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.)
Pending
Application number
JP2015127616A
Other languages
English (en)
Inventor
デイビッド バレル マイケル
David Barrell Michael
デイビッド バレル マイケル
デイビッド トラウト ザカリー
David Traut Zachary
デイビッド トラウト ザカリー
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.)
Seagate Cloud Systems Corp
Original Assignee
Dot Hill Systems 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
Priority claimed from US14/628,839 external-priority patent/US9158687B2/en
Application filed by Dot Hill Systems Corp filed Critical Dot Hill Systems Corp
Publication of JP2016095828A publication Critical patent/JP2016095828A/ja
Pending legal-status Critical Current

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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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
    • 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/0689Disk arrays, e.g. RAID, JBOD

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】ストレージコントローラからストライプドストレージボリュームに書込みデータを効率的に処理するための方法を提供する。
【解決手段】この方法は、ストレージコントローラ108によって、ホスト書込み要求サイズを含むホスト書込み要求を受け取って、ホスト書込み要求を含むストライプ404を埋める時間がホスト保証書込み時間を下回ることを計算し、ホスト書込み要求をライトバックホスト書込み要求として処理する。ストレージコントローラは、ライトバックホスト書込み要求をライトキャッシュ328に記憶する。ストライプ404を埋める時間は、ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度で分割されたストライプのサイズであり、ホスト保証書込み時間は、ホスト書込み要求がライトキャッシュとストライプドストレージボリューム400の1つに関連付けられることを保証する最長待ち時間である。
【選択図】図3

Description

本発明は、コンピュータデータストレージシステムを対象とする。具体的には、本発明は、複数の書込みストリームに関する効率を最大限にするために、ストレージコントローラのキャッシュメモリ内で逐次ホスト書込みデータを効率的に処理するための方法及び機器を対象とする。
データストレージシステムでは、ライトバックキャッシングを含む良く知られているデータキャッシング技法を利用することによって書込みの性能が高められる。ストレージコントローラがホストコンピュータから書込み要求を受け取ると、ストレージコントローラは、ライトキャッシュ内に空きがある場合は書込みデータをライトキャッシュ内に記憶し、書込み要求が完了したことをホストコンピュータに知らせる。これにより、ホストコンピュータが追加の読取要求又は書込み要求を発行する必要がなくなる。ライトキャッシュの空き領域が使用できない場合、ストレージコントローラは、代わりに書込み要求をより低速のストレージデバイスに直接伝送しなければならず、その結果、書込み性能が低下する。
書込みデータがライトキャッシュ内に入ると、ストレージコントローラは、何時、どの、及びどの程度の量の書込みデータを宛先ストレージデバイスに伝送するのかを決定するための様々なポリシを制定する。この伝送を取り巻く動作は、ライトキャッシュからのデータのデステージングと呼ばれる。書込みデータのデステージングは、ホストコンピュータから新たな書込み要求を受け入れるためにライトキャッシュの空き領域を解放するので重要であり、データは冗長なRAID構成内のストレージデバイス上に記憶される。冗長なRAID構成は、単一のストレージデバイスが障害を起こした場合に、及び一部のRAID構成では複数のストレージデバイスが障害を起こした場合にデータを守る。従って、効率的にホスト書込み要求を処理し、ストレージコントローラのライトキャッシュからストレージデバイスに書込みデータをデステージすることが望ましい。
米国特許第5,640,530号明細書 米国特許第7,260,679号明細書 米国特許第8,478,945号明細書
本発明は、従来技術の不都合を解決することを対象とする。本発明の実施形態によれば、ストレージコントローラからストライプドストレージボリュームに書込みデータを効率的に処理するための方法が提供される。この方法は、ホスト書込み要求サイズを含むホスト書込み要求を受け取るステップと、ホスト書込み要求を含むストライプを埋める時間がホスト保証書込み時間を下回ることを計算するステップと、ホスト書込み要求をライトバックホスト書込み要求として処理するステップとを含む。ストレージコントローラは、ライトバックホスト書込み要求をライトキャッシュ内に記憶し、ストライプを埋める時間は、ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度に応じて分割されたストライプのサイズに対応する。ホスト保証書込み時間とは、ホスト書込み要求がライトキャッシュ及びストライプドストレージボリュームの1つに関連付けられることをストレージコントローラが保証する最長待ち時間である。
本発明の別の実施形態によれば、1台又は複数台のホストコンピュータから、1つ又は複数のストレージデバイスを含むストライプドストレージボリュームに書込みデータを効率的に処理するためのストレージコントローラが提供される。このストレージコントローラは、プロセッサとプロセッサに結合されるメモリとを含む。メモリは、ライトキャッシュ及びホスト保証書込み時間を含む。ホスト保証書込み時間とは、ストレージコントローラが、ホスト書込み要求がライトキャッシュ及びストライプドストレージボリュームの1つに関連付けられることを保証する最長待ち時間である。ストレージコントローラは、ホスト書込み要求サイズを含むホスト書込み要求を受け取り、ホスト書込み要求を含むストライプを埋める時間がホスト保証書込み時間を下回ることを計算し、ホスト書込み要求をライトバックホスト書込み要求として処理する。ストライプを埋める時間は、ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度に応じて分割されたホスト書込み要求を含むストライプのサイズに対応する。
本発明の更に他の実施形態によれば、ストレージデバイスに書込みデータを効率的に伝送するためのシステムが提供される。このシステムは、ホストコンピュータ、ホストコンピュータに結合されるストレージコントローラ、及びストレージコントローラに結合される1つ又は複数のストレージデバイスを含むストライプドボリュームを含む。ストレージコントローラは、プロセッサとプロセッサに結合されるメモリとを含む。メモリは、ライトキャッシュを含む。ホストコンピュータは、ホスト書込み要求をストレージコントローラに伝送し、ホスト書込み要求はストライプドストレージボリュームのストライプに関連付けられる(committed)。ホストコンピュータが、ホスト書込み要求をストレージコントローラに伝送することに応答し、ストレージコントローラは、ストライプを埋める時間がホスト保証書込み時間以下であることを計算し、ホスト書込み要求をライトバックホスト書込み要求として処理する。ストライプを埋める時間は、ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度に応じて分割されたホスト書込み要求を含むストライプのサイズに対応する。
本発明の利点は、書込みキャッシングの優先権を低速ストリームに優先して高速ストリームに与えることにより、複数のホスト書込みストリームに関する書込み性能を改善することである。高速ストリームは、低速ストリームよりも速く書込みデータをストレージコントローラに与え、従ってライトキャッシュ内の全ストライプを低速ストリームよりも速く埋めることが予期される。ライトキャッシュは、データが部分ストライプではなくフルストライプでデステージされる場合、ストレージデバイスのストライプドボリュームにデータを最も効率的にデステージする。フルストライプのデステージの頻度を最大限にすることにより、ライトキャッシュの利用率が最大限になり、ストレージコントローラの最終的な書込み性能が最大限になる。
本発明のもう1つの利点は、比較的小さいライトキャッシュを有するストレージコントローラが、本発明を利用しない比較的大きいライトキャッシュを有するストレージコントローラを凌ぐことである。ストレージコントローラの費用は、オンボードキャッシュメモリのサイズ及び速度によって部分的に決まる。従って、ストレージコントローラの費用対効果を保つために、より小さくより効率的なストレージコントローラのキャッシュメモリを利用することが望ましい。
本発明の更に別の利点は、ホストコンピュータのより高速の書込みデータ転送速度に、ストレージコントローラが遅れずについていくことを可能にすることである。場合によっては、この利点は、データ溢れ及びクライアントデータを失う可能性なしに、クライアントの高速データ転送速度にホストコンピュータが遅れずについていくことを可能にする。
本発明の実施形態の更なる特徴及び利点が、とりわけ添付図面と一緒に解釈するとき以下の説明からより容易に明らかになる。
本発明の実施形態による、第1の非ホストベースのデータストレージシステムの構成要素を示すブロック図である。 本発明の実施形態による、第2の非ホストベースのデータストレージシステムの構成要素を示すブロック図である。 本発明の実施形態による、第3の非ホストベースのデータストレージシステムの構成要素を示すブロック図である。 本発明の実施形態による、第1のホストベースのデータストレージシステムの構成要素を示すブロック図である。 本発明の実施形態による、第2のホストベースのデータストレージシステムの構成要素を示すブロック図である。 本発明の実施形態による、第3のホストベースのデータストレージシステムの構成要素を示すブロック図である。 本発明の実施形態による、データストレージシステムを示すブロック図である。 本発明の実施形態による、単一ストレージデバイスのストライプドボリュームを示す図である。 本発明の実施形態による、複数ストレージデバイスのストライプドボリュームを示す図である。 本発明の実施形態による、書込みデータストリームの一例示的図解を示す図である。 本発明の実施形態による、バーストのパラメータの一例示的図解を示す図である。 本発明の実施形態による、一例示的ホストデータストリームを示す図である。 本発明の実施形態による、高速ストリーム及び低速ストリームに関するストライプを埋める時間を示す図である。 本発明の実施形態による、全てのホスト書込みストリームのグローバルメタデータパラメータを示す図である。 本発明の実施形態による、ホストごとの書込みストリームメタデータパラメータを示す図である。 本発明の実施形態による、ホスト書込み要求プロセスを示す流れ図である。 本発明の実施形態による、ストリームプロファイリングプロセスを示す流れ図である。 本発明の実施形態による、高速ストリームプロセスに関する新たなホスト書込み要求を示す流れ図である。 本発明の実施形態による、LRUストリーム待ち行列の管理プロセスを示す流れ図である。
本発明者らは、ホストコンピュータからストレージコントローラへの特定の入出力作業負荷において様々な性能上の問題を観察してきた。具体的には、異なるデータ転送速度を有する多くの大きい逐次書込みストリーム(sequential write streams)が関与する場合、ストレージコントローラのライトキャッシュを効率的に管理することが困難であり得る。例えば、全てのホスト書込みストリームを同様に扱う場合、ストレージコントローラのライトキャッシュは、低速ストリームの部分ストライプ(partial stripe)ですぐに埋まってしまう。このことは、ライトキャッシュの空き領域を解放するためにストレージコントローラがライトキャッシュからストレージデバイスに部分ストリームをデステージする(destaging)こと、或いはライトキャッシュの空き領域を使用できないので、高速ストリームがライトスルーモードを使用しなければならないことを招く。部分ストライプの書込みは、フルストライプ(full stripe)内の全てのデータ未満のデータを含む。これらの結果の何れも極めて非効率である。従って、ストリームごとにデータ転送速度を追跡し、ストレージデバイスにデステージされるフルストライプの数を最大限にするために、高速ストリームにライトキャッシュの優先権を認めることが望ましい。
次に図1aを参照し、本発明の実施形態による、第1の非ホストベースのデータストレージシステム100の構成要素を示すブロック図が示されている。
データストレージシステム100は、1台又は複数台のホストコンピュータ104を含む。ホストコンピュータ104は概してサーバだが、デスクトップやモバイルコンピュータでも良い。ホストコンピュータ104は、ホストバス又はネットワーク112を介したストレージコントローラ108へのリード/ライト要求を生成するアプリケーションプログラムを実行する。一実施形態では、ホストバス又はネットワーク112は、SCSI、FC−AL、USB、ファイアワイヤ(Firewire)、SSA、SAS、SATA、インフィニバンド(Infiniband)等のバスである。別の実施形態では、ホストバス又はネットワーク112は、イーサネット、iSCSI、ファイバチャネル(Fiber Channel)、SSA、ESCON、ATM、FICON、NVMe、インフィニバンド等のネットワークである。
ホストコンピュータ104は、1つ又は複数のストレージコントローラ108とインターフェイスするが、明瞭にするためにストレージコントローラ108は1つしか図示していない。一実施形態では、ストレージコントローラ108がRAIDコントローラである。別の実施形態では、ストレージコントローラ108が、プロビジョニング、仮想化、複製、バックアップ機器等のストレージ機器(storage appliance)である。ストレージコントローラ108は、ストレージデバイス・バス120を介して、ストレージサブシステム124内のストレージデバイス(storage device)116a、116bとの間でデータをやり取りする。ストレージデバイス・バス120は、これだけに限定されないが、SCSI、ファイバチャネル、SAS、SATA、又はSSAを含む、ストレージコントローラ108とストレージデバイス116との間でデータを直接伝送するための任意の適切なストレージバス又はバス群である。
一実施形態では、ストレージサブシステム124が12個のストレージデバイス116を含む。他の実施形態では、ストレージサブシステム124が、12個未満のストレージデバイス116又は12個を上回るストレージデバイス116を含み得る。ストレージデバイス116は、ハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、及びテープドライブを含む様々な種類のストレージデバイスを含む。特定のストレージデバイスの種類の範囲内で、性能に応じて組織化されるストレージデバイス116の幾つかの下位区分がある場合がある。例えば、ハードディスクドライブは、キャッシュサイズ、ドライブRPM(例えば5,400、7,200、10,000、及び15,000)、待ち行列の長さ、ランダム転送速度、又は逐次転送速度に応じて組織化され得る。
次に図1bを参照し、本発明の実施形態による、第2の非ホストベースのデータストレージシステム128の構成要素を示すブロック図が示されている。非ホストベースのデータストレージシステム128は、ストレージコントローラ108がストレージデバイス116と共にストレージサブシステム132内にあることを除き、非ホストベースのデータストレージシステム100に似ている。図1bに示す実施形態では、ストレージコントローラ108が単一のRAIDコントローラ108である。但し、他の実施形態では、ストレージコントローラ108が複数のRAIDコントローラ108を表す。
次に図1cを参照し、本発明の実施形態による、第3の非ホストベースのデータストレージシステム136の構成要素を示すブロック図が示されている。データストレージシステム136は、ストレージコントローラ108が2つの冗長なストレージコントローラ108a、108bを表すことを除き、データストレージシステム100及び128に似ている。一実施形態では、ストレージコントローラ108a、108bの一方が故障した場合にホスト104がストレージデバイス116を引き続き使用できるようにするために、ストレージコントローラ108a、108bがアクティブ−アクティブフェイルオーバ(active-active failover)を利用する。コントローラ間メッセージングリンク140は、書込みデータをミラーリングし、フェイルオーバ及びフェイルバック操作を同期するために、ストレージコントローラ108a、108b間の通信及びデータ経路を提供する。
次に図2aを参照し、本発明の実施形態による、第1のホストベースのデータストレージシステム200の構成要素を示すブロック図が示されている。第1のホストベースのデータストレージシステム200は、ストレージコントローラ108がホストコンピュータ104内にあることを除き、図1aの第1の非ホストベースのストレージシステム100に似ている。ストレージコントローラ108は、ホストコンピュータ104のローカルバスを介してインターフェイスし、ローカルバスは、ラピッドIO、PCI、PCI−X、又はPCIエクスプレスを含む、ホストコンピュータ104のCPUとストレージコントローラ108との間の高速伝送用の任意の適切なバスとすることができる。ストレージコントローラ108は、ホストコンピュータ104のマザーボード上に組み込むことができ、又はホストコンピュータ104内の拡張ボード若しくは他の形式のアセンブリとすることができる。
次に図2bを参照し、本発明の実施形態による、第2のホストベースのデータストレージシステム204の構成要素を示すブロック図が示されている。第2のホストベースのデータストレージシステム204は、ストレージサブシステム124の機能をホストコンピュータ104内に組み込む。データストレージシステム204は、高度に統合された独立型のデータストレージシステムを表す。
次に図2cを参照し、本発明の実施形態による、第3のホストベースのデータストレージシステム208の構成要素を示すブロック図が示されている。第3のホストベースのデータストレージシステム208は、第1のホストベースのデータストレージシステム200に似ているが、組み込まれたストレージコントローラ108の代わりにソフトウェアに基づく手法を使用する。ホストコンピュータ104とストレージデバイス・バス120との間のインターフェイスは、適切なデータ及びコマンドバッファリング機能並びにプロトコル制御及び低レベル誤り処理(low-level error handling)を実現する、ホストバスアダプタ212によって提供される。CPU216はメモリ220内のアプリケーション224を実行し、メモリ220とストレージサブシステム124内のストレージデバイス116a、116bとの間のデータフローを制御する。
次に図3を参照し、本発明の実施形態による、データストレージシステム300を示すブロック図が示されている。データストレージシステム300は、バス又はネットワーク112を介してストレージコントローラ108に相互接続される1台又は複数台のホストコンピュータ104を含む。ホストコンピュータ104は、或る期間にわたって正の方向又は負の方向に移動する複数組のLBA逐次ホスト書込み要求(LBA-sequential host write requests)332である、ホストストリーム308を生成する。各ホストコンピュータ104は、任意の数のホストストリーム308を生成することができる。
ストレージコントローラ108は、CPU312に結合されるメモリ316内に記憶されるプログラム命令を実行する、CPU又はプロセッサ312を含む。CPU312は、インテル(Intel)x86互換プロセッサ、組込みプロセッサ、モバイルプロセッサ、及び/又はRISCプロセッサ等、ストレージコントローラ108のプログラムを実行するのに適した任意の処理装置を含む。CPU312は、書替え可能ゲートアレイ(FPGA)、メモリコントローラ、ノースブリッジ装置(North Bridge devices)、及び/又はサウスブリッジ装置(South Bridge devices)を含む幾つかの装置を含み得る。
メモリ316は、揮発性メモリ316、不揮発性メモリ316、又は揮発性メモリ及び不揮発性メモリの両方の組合せ316の1つ若しくは複数の形態とすることができる。メモリ316はファームウェアを含み、そのファームウェアは、本発明のプロセス用のプログラム命令を含む、CPU312が取り出して実行するプログラム命令を含む。不揮発性メモリ316の例には、これだけに限定されないが、フラッシュメモリ、SD、SSD、EPROM、EEPROM、ハードディスク、及びNOVRAMが含まれる。揮発性メモリ316は、様々なデータ構造及びユーザデータを記憶する。揮発性メモリ316の例には、これだけに限定されないが、SRAM、DDR RAM、DDR2 RAM、DDR3 RAM、Z−RAM、TTRAM、A−RAM、ETA RAM、及び他の形態の一時ストレージが含まれる。
メモリ316は、ホストコンピュータ104に対して改善されたリード・ライト性能をそれぞれ提供する、リードキャッシュ324及びライトキャッシュ328を含む。メモリ316は、データストリームメタデータ320も含む。データストリームメタデータ320は、ホスト書込み要求332に関係するパラメータを記憶し、データの書込み操作を制御するために使用される。
ストレージコントローラ108は、1つ又は複数のストライプドストレージデバイス116を含むストレージサブシステム124、132に結合され、ストレージデバイス116は、任意の数の仮想ディスク(virtual disk : VDisk)又はストライプドストレージボリューム(striped storage volume)400、434で構成され得る。各仮想ディスクは、1つ又は複数のストレージデバイス116を含む。頻繁にアクセスされるデータは仮想ディスクからリードキャッシュ324内に読み取られ、リードキャッシュ324では、データをホスト読取要求に応答して仮想ディスクから直接提供するよりもはるかに速く提供することができる。好ましくは、書込みデータがライトキャッシュ328内に最初に記憶され、かかるデータは仮想ディスクに直接送られる書込みよりもはるかに速い。
一部の実施形態では、ストレージコントローラ108がタイマ340を含む。タイマ340は、CPU312によって制御されるハードウェアのタイマとすることができ、又はCPU312上で実行されるソフトウェアルーチンでも良い。タイマ340は、ホスト書込み要求332のパラメータを測定し、以下の説明及び図面の中で論じる。タイマ340は、任意の数のタイマを表すことができ、本発明では全てのホスト書込み要求332に全般的に割り当てられた1つのタイマ340がある。
ストレージコントローラ108は、本発明の範囲又は動作から逸脱することなしに、無数の異なる機能上の構成及びアーキテクチャで機能的に構成され得ることを理解すべきである。
次に図4aを参照し、本発明の実施形態による、単一ストレージデバイスのストライプドボリューム400の構成要素を示すブロック図が示されている。
単一のストレージデバイス116又は単一のストレージデバイス116の一部を、ストライプドボリューム(striped volume)400とすることができる。ストレージデバイス116は、ハードディスクドライブ、光学ドライブ、テープドライブ、ソリッドステートデバイス(solid state device)、又は他の任意の形態の大容量データストレージデバイスとすることができる。ストライプドボリューム400は、2つ以上の均等の大きさにされたストライプを含む論理ボリュームである。1つのストレージデバイス116上のストライプの部分はチャンクである。
図4aは、4つのストライプ、つまりストライプN 404、ストライプN+1 408、ストライプN+2 412、及びストライプN+3 416を有するストライプドボリューム400を示す。ストライプN 404はチャンクA 420を有し、ストライプN+1 408はチャンクB 424を有し、ストライプN+2 412はチャンクC 428を有し、ストライプN+3 416はチャンクD 432を有する。図4aでは、4つのストライプ404、408、412、及び416、並びに4つのチャンク420、424、428、及び432を有する単一ストレージデバイスのストライプドボリューム400を示すが、単一ストレージデバイスのストライプドボリューム400は、4つのストライプ/チャンク未満、又は4つのストライプ/チャンクよりも多く有しても良いことを理解すべきである。更に、単一ストレージデバイスのストライプドボリューム400は、単一のストレージデバイス116上の使用可能なデータ記憶空間の一部分だけを占有することができ、同じストレージデバイス116上には他の単一ストレージデバイスのストライプドボリューム400があっても良い。仮想ディスク348が単一のストレージデバイス116である場合、仮想ディスクのストライプサイズは、チャンク420、424、428、又は432の大きさである。
次に図4bを参照し、本発明の実施形態による、複数ストレージデバイスのストライプドボリューム434の構成要素を示すブロック図が示されている。
複数のストレージデバイス116又は複数のストレージデバイス116の一部を、ストライプドボリューム434とすることができる。図4bは、3つのストレージデバイス116a、116b、及び116c上のストライプドボリューム434を示す。ストライプドボリューム434は4つのストライプ、つまりストライプM 436、ストライプM+1 440、ストライプM+2 444、及びストライプM+3 448を有する。ストライプM 436はチャンクE 452、チャンクF 456、及びチャンクG 460を有する。ストライプM+1 440は、チャンクH 464、チャンクI 468、及びチャンクJ 472を有する。ストライプM+2 444は、チャンクK 476、チャンクL 480、及びチャンクM 484を有する。ストライプM+3 448は、チャンクN 488、チャンクO 492、及びチャンクP 496を有する。図4bでは、4つのストライプ436、440、444、及び448、並びに3つのストレージデバイス116a、116b、及び116cを有する複数ストレージデバイスのストライプドボリューム434を示すが、複数ストレージデバイスのストライプドボリューム434が、4つのストライプ未満若しくはそれよりも多く、又は3つのストレージデバイス116未満若しくはそれよりも多く有しても良いことを理解すべきである。本発明で使用するとき、「ストライプドボリューム400、434」は、単一ストレージデバイスのストライプドボリューム400又は複数ストレージデバイスのストライプドボリューム434である。更に、複数ストレージデバイスのストライプドボリューム434は、ストレージデバイス116群上で使用可能なデータ記憶空間の一部しか占有しない場合があり、同じストレージデバイス116群上に他の複数ストレージデバイスのストライプドボリューム434があり得る。仮想ディスク348が複数のストレージデバイス116である場合、仮想ディスクのストライプサイズは、ストライプ内のチャンクの組み合わさった大きさ、つまり、図4bの3つのストレージデバイス116の事例では、チャンク452+456+460、464+468+472、476+480+484、又は488+492+496である。
次に図5aを参照し、本発明の実施形態による、書込みデータストリーム308の一例を示す図が示されている。6つのバースト516群が或る期間512にわたってストレージコントローラ108によって受け取られたと示されており、バースト516ごとにメガバイト(MB)単位のバーストサイズ508が示されている。図5aに示す例は、バースト0 516a、バースト1 516b、バースト2 516c、バースト3 516d、バースト4 516e、及びバースト5 516fとして識別する、逐次ホスト書込み要求332の6つのバースト516を示す。
バースト間の時間tlbが、連続した2つのバースト516ごとの間に示されている。バースト0 516aとバースト1 516bとの間の時間はtlb0である。バースト1 516bとバースト2 516cとの間の時間はtlb1である。バースト2 516cとバースト3 516dとの間の時間はtlb2である。バースト3 516dとバースト4 516eとの間の時間はtlb3である。バースト4 516eとバースト5 516fとの間の時間はtlb4である。
次に図5bを参照し、本発明の実施形態による、バースト516のパラメータを示す図が示されている。データストリームメタデータ320内に記憶されるバーストのパラメータを説明するために、図5bは図5aの例を参照する。書込みデータストリーム308は、1つ又は複数のバースト516を含む。
各バースト516は、関連するバースト長520のパラメータを有し、バースト0 516aは2MBのバースト長520を有し、バースト1 516bは1MBのバースト長520を有し、バースト2 516cは6MBのバースト長520を有し、バースト3 516dは2MBのバースト長520を有し、バースト4 516eは1MBのバースト長520を有し、バースト5 516fは2MBのバースト長520を有する。各バースト516の間は、最後のバーストからの時間tlb524である。Tlb0は200msであり、Tlb1は30msであり、Tlb2は60msであり、Tlb3は120msであり、Tlb4は200msである。
次に図6を参照し、本発明の実施形態による、例示的なホストデータストリーム308を示す図が示されている。ホストデータストリーム308aは、或る期間608にわたって受け取られる複数のホスト書込み要求332を含み、ホスト書込み要求332はホスト書込み要求612として個々に識別される。図6は、逐次ホスト書込み要求の第1のバースト612a、612b、及び612c、逐次ホスト書込み要求の第2のバースト612g、612h、612i、及び612j、並びに逐次ホスト書込み要求の第3のバースト612n、612o、612p、及び612qを示す。ストレージコントローラ108は、逐次書込み要求の3つのバーストが受け取られる間に他の非逐次ホスト書込み要求も受け取り、それらの非逐次ホスト書込み要求はホスト書込み要求612d、612e、612f、612k、612l、及び612mとして識別される。
ホストデータストリーム308は、図6に示すように或る期間608にわたってLBA604について逐次的に増加し得る、又は或る期間608にわたってLBA604について逐次的に減少し得るホスト書込み要求332、612を含むが、同じホストデータストリーム308内に両方は含まない。
各ホスト書込み要求612は関連するホスト書込み要求サイズ616を有し、簡潔にするために、この例では全てのホスト書込み要求612を同じホスト書込み要求サイズ616によって示す。更に、各ホスト書込み要求612が、開始LBAアドレス620及び終了LBAアドレス624を含むLBA範囲にアドレス指定される。ストレージコントローラ108は、各ホスト書込み要求612を特定の時点608において受け取る。例えば、ストレージコントローラ108は、逐次ホスト書込み要求0 612aを時点tにおいて、逐次ホスト書込み要求1 612bを時点tにおいて、逐次ホスト書込み要求2 612cを時点tにおいて受け取る。
ストレージコントローラ108は、受け取られる各ホスト書込み要求612が現在のストリーム308の一部かどうかを判定し、これについては以下の流れ図及び添付の説明に関してより詳細に説明する。逐次ホスト書込み要求612では、ストレージコントローラ108が、各ホスト書込みストリーム308の最初のホスト書込み要求612に基づき、LBA範囲620、624を含むストリームウィンドウ(stream window)632を確立する。好ましい実施形態では、ストリームウィンドウのLBA604の範囲が、ホスト書込み要求サイズ616に最初に依存する。ストレージコントローラ108は、ホスト入出力要求サイズ616に8を掛け、ストリームウィンドウオフセット(stream window offset)を作成する。ストレージコントローラ108は、ホスト入出力要求の開始LBAアドレス620にストリームウィンドウオフセットを加算して、ストリームウィンドウのLBA上限を取得し、受け取ったホスト入出力要求の開始LBAアドレス620からストリームウィンドウオフセットを減算し、ストリームウィンドウのLBA下限を作成する。
ストレージコントローラ108が、ストリームウィンドウ632の外側にある新たなホスト書込み要求612を受け取る場合、ストリームウィンドウ632の境界が変わる必要がある。目的は、同じホスト書込みストリーム308の逐次ホスト書込み要求612をストリームウィンドウ632内に保つことである。ストリームウィンドウ632を調節するためにストレージコントローラ108が使用するプロセスについては、2014年8月11日に出願され、参照により本明細書に援用する、逐次ストリーム入出力処理のための方法及び機器(METHOD AND APPARATUS FOR SEQUENTIAL STREAM I/O PROCESSING)と題された係属中の米国特許出願第14/456,328号明細書(整理番号 DHP0118 US)の中で詳述されている。
次に図7を参照し、本発明の実施形態による、高速ストリーム及び低速ストリーム308に関するストライプを埋める時間を示す図が示されている。ライトキャッシング704は、ライトバックキャッシング708又はライトスルーキャッシング712を使用することができる。ライトバックキャッシング708では、ストレージコントローラ108が、ホスト書込み要求332をライトキャッシュ328にまず伝送し、その後、ホスト書込み要求332の書込みデータを1つ又は複数のストレージデバイス116に伝送する。ライトスルーキャッシング712では、ストレージコントローラ108が、ホスト書込み要求332のデータをまず1つ又は複数のストレージデバイス116に直接伝送し、従ってライトキャッシュ328をバイパスする。
本発明では、ホスト書込み要求332を含むストライプ716を埋める時間に応じて、ホスト書込み要求332にライトバックキャッシング708を使用するか、またはライトスルーキャッシング712を使用するかに関する決定を下す。速いデータ転送速度は、遅いデータ転送速度よりも速くストライプを埋める。ストレージコントローラ108がライトバックキャッシング708を使用するか、またはライトスルーキャッシング712を使用するかを決めるために、ホスト保証書込み時間720の所定値をデータ転送速度(ストライプ716を埋める時間)と比較する。ストライプ716を埋める時間がホスト保証書込み時間720を下回る場合、ストレージコントローラ108はライトバックキャッシング708を使用する。それに対応して、ストライプ716を埋める時間がホスト保証書込み時間720を上回る場合、ストレージコントローラ108はライトスルーキャッシング712を使用する。ストライプ716を埋める時間がホスト保証書込み時間720に等しい場合、ストレージコントローラ108は、選択された実施形態に応じてライトバックキャッシング708又はライトスルーキャッシング712を使用することができる。
次に図8を参照し、本発明の実施形態による、全てのホスト書込みストリーム308のグローバルメタデータパラメータ(global metadata parameters)320を示す図が示されている。グローバルメタデータ320は、ホスト保証書込み時間720、804のパラメータを含む。ホスト保証書込み時間804は、ホスト書込み要求332のデータが、ライトキャッシュ328又は1つ若しくは複数のストレージデバイス116内にあることをストレージコントローラ108が保証する時間値である。このパラメータは本発明の要であり、限られたホストデータストレージ及びキャッシングの資源を管理するために、ホストコンピュータ104のアプリケーションにとって重要である。
グローバルメタデータ320は、LRUストリーム待ち行列(LRU stream queue)808も含む。LRUストリーム待ち行列808は、活性状態にある全てのホスト書込みストリーム308の古さをストレージコントローラ108が追跡することを可能にする。LRUストリーム待ち行列808内の各エントリは、特定のホスト書込みストリーム308のID値であり、そのため現在活性状態にある全てのホスト書込みストリーム308が一意に表わされる。最新のホスト書込みストリーム808aのIDがLRUストリーム待ち行列808の末尾に投入されるのに対し、最も古いホスト書込みストリーム808nのIDは、LRUストリーム待ち行列808の先頭に投入される。本発明では、諸条件が必要とする場合、ホスト書込みストリーム308をLRUストリーム待ち行列808に追加し、又はLRUストリーム待ち行列808から削除する。
グローバルメタデータ320は、RAWコンテナ一覧(raw container list)812も含む。RAWコンテナ812は、ストレージコントローラ108がデータに割り当てる、仮想化された空きの及び使用可能なメモリ316資源である。RAWコンテナ812は、新たな書込みデータが受け取られるときにストライプベースで割り当てられるデータ構造であり、ストライプの境界を超えない。それぞれのかかるRAWコンテナ812は、対応するストライプサイズ816を有し、或るRAWコンテナ812のストライプサイズ816は、別のRAWコンテナ812のストライプサイズ816と同じでも異なっても良い。好ましい実施形態では、ストレージコントローラ108が最大64のRAWコンテナ812をサポートする。
次に図9を参照し、本発明の実施形態による、ストリームごとのメタデータ320のパラメータを示す図が示されている。ストリームごとのメタデータ320のパラメータは、ホスト書込みストリーム308ごとに異なることができ、全てのホスト書込みストリーム308が図9に記載のパラメータの全てを有する。
ストリームごとのメタデータ320のパラメータは、ストリームID 904、ストリーム時間ラストヒットtlh 908、及びストリームデータ転送速度912を含む。ストリームID904は、ストリームを他のストリーム308から一意に識別する。ストリーム時間ラストヒットtlh 908は、ホスト書込みストリーム308が最後のホスト書込み要求332を受け取った時間、又は新たなホスト書込みストリーム308が作成された時間を反映するタイムスタンプである。ストリームデータ転送速度912は、以下で及び図5a及び図5bの中で説明する最後のバーストからの時間524の値に基づいて計算されるパラメータである。
ストリームごとのメタデータ320のパラメータは、現在のホスト書込みストリーム308の全てのペンディングの(即ち関連付けられていない(uncommitted))書込み要求332のメタデータ320を記憶する、ペンディングホスト書込み待ち行列(pending host write queue)916も含む。ペンディングホスト書込み待ち行列916は、待ち行列916の末尾にある最新のペンディングのホスト書込み要求916a、及び待ち行列916の先頭にある最も古いペンディングのホスト書込み要求916nから構成される。待ち行列916の各エントリは、3つのパラメータ、つまりホスト書込み要求920、ホスト書込み要求サイズ924、及びホスト書込み要求開始論理ブロックアドレス(LBA:Logical Block Address)928を含む。
ホストごとの書込みストリームメタデータ320のパラメータは、対応するホスト書込みストリーム308のデータ転送速度912を計算するためにバースト516のパラメータを管理するための、1対の結び付けられた待ち行列932、940を更に含む。
バーストサンプル待ち行列932は、直近の幾つかのバースト516のそれぞれについて、バースト長520を記憶する幾つかの位置を含む巡回待ち行列である。所定数のバースト長520よりも古いバースト長520は、待ち行列から外される。好ましい実施形態では、バーストサンプル待ち行列932内に10個のエントリがある。他の実施形態では、バーストサンプル待ち行列932内に10個未満の、又は10個を超えるエントリがある。現在のバースト長ポインタ936は、バーストサンプル待ち行列932内の現在のバースト長520のエントリを識別する。
最後のバーストからの時間(tlb)のサンプル待ち行列940は、直近の幾つかの連続したバースト516の対間の時間を記憶する。最後のバーストからの時間(tlb)524については、図5a及び図5bに関してより詳細に解説した。バーストサンプル待ち行列932内の各バースト長520のエントリは、最後のバーストからの時間(tlb)524の対応するエントリを最後のバーストからの時間(tlb)のサンプル待ち行列940内に有し、従って各待ち行列932、940内には同数のエントリがある。現在の前のバーストからの時間ポインタ944は、最後のバーストからの時間(tlb)のサンプル待ち行列940内の、最後のバーストからの時間(tlb)524の現在のエントリを識別する。
次に図10を参照し、本発明の実施形態による、ホスト書込み要求332のプロセスを示す流れ図が示されている。流れはブロック1004で始まる。
ブロック1004で、ストレージコントローラ108が、ホストコンピュータ104から新たなホスト書込み要求332を受け取る。流れはブロック1008に進む。
ブロック1008で、ストレージコントローラ108がストリームプロファイリングプロセスを実行し、このプロセスでは、ホスト書込みストリーム308が既に存在する場合、既存のホスト書込みストリーム308をホスト書込み要求332に関連させる。さもなければ、ストレージコントローラ108は新たなホスト書込みストリーム308を作成する。流れは判定ブロック1012に進む。
判定ブロック1012で、ストレージコントローラ108は、ホスト書込み要求332が関連付けられるストライプを埋める時間がホスト保証書込み時間804を下回るかどうかを判定する。この決定は本発明の要であり、ホスト書込み要求332を完了するためにストレージコントローラ108がライトスルーキャッシング712を使用するか、またはライトバックキャッシング708を使用するかを最終的に決める。ホスト保証書込み時間804は、ホスト書込み要求332のデータが、ライトキャッシュ328又は1つ若しくは複数のストレージデバイス116内にあることをストレージコントローラ108が保証する時間値であることを思い出されたい。つまり、ストレージコントローラ108は、ホスト書込み要求332を伝送したホストコンピュータ104に肯定応答を送り、その肯定応答は、ホスト書込み要求332のデータがライトキャッシュ328又はストレージデバイス116内にあることを示す。ホスト書込み要求332が関連付けられるストライプを埋める時間がホスト保証書込み時間804を下回る場合、対応するホスト書込みストリーム308は高速のデータ転送速度912を有し、流れはブロック1016に進む。ホスト書込み要求332が関連付けられるストライプを埋める時間がホスト保証書込み時間804を下回らない場合、対応するホスト書込みストリーム308は低速のデータ転送速度912を有し、流れは代わりにブロック1020に進む。
ブロック1016で、ストレージコントローラ108は、ホスト書込み要求332を延期すべきかどうかを判定する。延期するとは、ストレージコントローラ108が、対応するホスト書込みストリーム308について、ペンディングホスト書込み待ち行列916上にホスト書込み要求332を配置すべきかどうかを判定することを意味し、ホスト書込み要求332のデータをストレージコントローラ108に入れることが遅れることになる。但し、如何なる場合でも(即ちホスト書込み要求332が延期されてもされなくても)、ホスト書込み要求332は常にライトバック708書込み要求として最終的に処理される。ブロック1016の詳細については、図12のプロセスステップによってより詳細に図示し、説明している。
ブロック1020で、ストレージコントローラ108が、ホスト書込み要求332をライトスルー712書込み要求として処理する。つまり、ホスト書込み要求332に対応するホスト書込みストリーム308のデータ転送速度は遅く、従って、ホスト書込み要求332のデータをライトキャッシュ328内に記憶せず、代わりにホスト書込み要求332のデータをライトスルー712操作としてストレージデバイス116に直接記憶することにより効率が改善される。流れはブロック1004に続き、次のホスト書込み要求332を待つ。
代替的実施形態では、ストライプを埋める時間を測定する代わりに、ストライプのチャンクを埋める時間を代わりに測定することができる。遅く動くストリーム308は、全ストライプを書き込むのにホスト保証書込み時間804よりも長くかかる場合があるが、場合によってはチャンクを書き込むのにホスト保証書込み時間804よりも短い時間しかかからないことがある。チャンクに属する全てのホスト書込み要求332は、ライトキャッシュ328内に与えられ得る。複数のかかるホスト書込み要求332を、チャンクを含むストレージデバイス116への単一の書込みへと合体させ、それにより、単一のチャンクのリードモディファイ・ライトサイクル(read-modify write cycles)の数を最小限にすることができる。
次に図11を参照し、本発明の実施形態による、ストリーム308のプロファイリングプロセスを示す流れ図が示されている。図11のステップは、図10のブロック1016を実行するためのプロセスステップを詳述する。流れはブロック1104で始まる。
ブロック1104で、ストレージコントローラ108が、ホストコンピュータ104からホスト書込み要求332を受け取る。流れは判定ブロック1108に進む。
判定ブロック1108で、ストレージコントローラ108は、ホスト書込み要求612が現在のホスト書込みストリーム308に適合するかどうかを判定する。ホスト書込み要求612が現在のホスト書込みストリーム308に適合する場合、流れはブロック1116に進む。ホスト書込み要求612が現在のホスト書込みストリーム308に適合しない場合、流れは代わりにブロック1112に進む。
ブロック1112で、ホスト書込み要求612は現在のホスト書込みストリーム308に適合せず、ストレージコントローラ108が新たなホスト書込みストリーム308を作成する。新たなホスト書込みストリーム308は図9に示すメタデータを含み、そのメタデータには作成タイムスタンプ948、及び現在のバースト長520としてホスト書込み要求サイズが含まれる。現在のバースト長520は、現在のバースト長ポインタ936によって識別される。流れはブロック1112で終わり、従って制御権をブロック1016に戻し、ブロック1004で新たなホスト書込み要求332を待つ。
ブロック1116で、ホスト書込み要求332は現在のホスト書込みストリーム308に適合し、ストレージコントローラ108が経過時間を計算し、経過時間は、現在の時間から、ホスト書込み要求332に対応するホスト書込みストリーム308のストリーム時間ラストヒット(tlh)908を引いたものに等しい。経過時間は、単純にストレージコントローラ108が現在のホスト書込みストリーム308についての最後のホスト書込み要求332を受け取ってからの時間である。図3に関して説明したように、現在の時間は個別のタイマ340から、又はタイマソフトウェアルーチンから得ることができる。時間ラストヒット(tlh)908は、メタデータメモリ320から得られ、既存のホスト書込みストリーム308が新たなホスト書込み要求332を受け取る度に、又はストレージコントローラ108が新たなホスト書込みストリーム308を作成する度に更新される。流れは判定ブロック1120に進む。
判定ブロック1120で、ストレージコントローラ108は、ブロック1116で計算された経過時間が所定時間を上回るかどうかを判定する。所定時間は、ホスト書込み要求332が現在のバースト516の一部か、新たなバースト516の始まりかを確立する期間である。好ましい実施形態では、所定時間が10ミリ秒(ms)である。但し、他の実施形態では、所定時間が10msを上回っても下回っても良い。経過時間が所定時間を上回る場合、流れはブロック1124に進む。経過時間が所定時間以下である場合、流れはブロック1132に進む。
ブロック1124で、ストレージコントローラ108が、ホスト書込み要求332に対応するホスト書込みストリーム308のメタデータメモリ320内に経過時間及びホスト書込み要求サイズを記憶する。経過時間は、最後のバーストからの時間(tlb)524として、現在の最後のバーストからの時間ポインタ944によって識別される最後のバーストからの時間(tlb)のサンプル待ち行列940内の位置に記憶される。次いで、ストレージコントローラ108は、現在の最後のバーストからの時間ポインタ944をインクリメントする。その後、新たな最後のバーストからの時間(tlb)524の値が、現在のホスト書込みストリーム308の次の経過時間によって上書きされる。ホスト書込み要求サイズ616が、現在のバースト長ポインタ936によって識別されるバーストサンプル待ち行列932のバースト長520の位置に記憶され、その後、ストレージコントローラ108が現在のバースト長ポインタ936をインクリメントする。流れはブロック1128に進む。
ブロック1128で、ストレージコントローラ108が、ストリームデータ転送速度912を加重平均として計算し、ストリームデータ転送速度912をメタデータメモリ320に記憶する。好ましい実施形態では、ストレージコントローラ108が、最後のバーストからの時間(tlb)のサンプル待ち行列940内の、最後のバーストからの時間524の全てのエントリを使用して加重平均(weighted average)を計算する。最後のバーストから最も近い時間524のエントリが最大の加重(greatest weighting)を有し、最後のバーストから最も離れた時間524のエントリが最も低い加重(lowest weighting)を有し、他のエントリは最大荷重と最低加重との間の均等に分配された加重を有する。最終的に、最後のバーストからの時間524の加重値の和が、最後のバーストからの時間(tlb)のサンプル待ち行列940内のエントリ数の階乗で割られる。他の実施形態では、より適切な値に達するために、ストリームデータ転送速度912を別の方法、及びより洗練された方法で計算することができる。例えば、ストレージコントローラ108が10個のバースト516の完全な履歴を受け取るまで、ストリームデータ転送速度912を計算しなくても良い。流れはブロック1128で終わり、従って制御権をブロック1016に戻し、ブロック1004で新たなホスト書込み要求332を待つ。
ブロック1132で、ホスト書込み要求332が現在のバースト516の一部であると判定され、ストレージコントローラ108が、ホスト書込み要求サイズ924を現在のバースト長520に追加する。現在のバースト長520は、現在のバースト長ポインタ936によって識別される。流れはブロック1132で終わり、従って制御権をブロック1016に戻し、ブロック1004で新たなホスト書込み要求332を待つ。
次に図12を参照し、本発明の実施形態による、高速ストリーム308のプロセスに関する新たなホスト書込み要求332を示す流れ図が示されている。図12に示すプロセスは、図10のブロック1016をより詳細に示す。流れはブロック1204で始まる。
ブロック1204で、ストレージコントローラ108が、ストリームメタデータ320からストリームパラメータ及び未処理のコンテナ(raw container)812を得る。流れは判定ブロック1208に進む。
判定ブロック1208で、ストレージコントローラ108は、新たなホスト書込み要求332がストライプにまたがるか(span)、又はストライプを開始するかを判定する。ホスト書込み要求332がストライプの下方境界又は上方境界におけるLBAを含む場合、新たなホスト書込み要求332はストライプにまたがる。ホスト書込み要求332がストライプの始まりにおけるLBAを含む場合、新たなホスト書込み要求332がストライプを開始する。ストライプを作るために、又はストライプに可能な限り近づけるために、ホスト書込みペンディング待ち行列916に十分なホスト書込み要求332を供給するか又は記憶することが、ストレージコントローラ108にとって有利である。ホスト書込みストリーム308が無作為ではなく逐次的なので、本発明では、ストレージコントローラ108が新たなストライプの追跡を開始し、従ってホスト書込みペンディング待ち行列916上の全てのものが、ライトキャッシュ328に伝送され、後にストレージデバイス116にデステージされるべき古いストライプに属すると仮定する。新たなホスト書込み要求332がストライプにまたがり、又はストライプを開始する場合、流れはブロック1212に進む。新たなホスト書込み要求332がストライプにまたがらず、又はストライプを開始しない場合、流れは判定ブロック1224に進む。
ブロック1212で、ストレージコントローラ108が、現在のストリーム308(即ちホスト書込み要求332に対応するホスト書込みストリーム)の全てのペンディングのホスト書込み要求916a〜nを実行する。ホストコンピュータ104がストレージコントローラ108にホスト書込み要求332を送ると、ストレージコントローラ108はまず、ホスト書込み要求332を、ホスト書込み要求332に対応するホスト書込みストリーム308のペンディングホスト書込み待ち行列916上に配置する(place)。この時点で、ストレージコントローラ108は、ホスト書込み要求332のデータを送信側のホストコンピュータ104に要求しておらず、データはホストコンピュータ104内に留まる。従って、ペンディングのホスト書込み要求916a〜nは、ストレージコントローラ108が受け取るホスト書込み要求332だが、データ自体はまだ受け取られていない。
ストレージコントローラ108がペンディングのホスト書込み要求916a〜nを実行すると、ストレージコントローラ108が、全てのペンディングのホスト書込み要求916a〜nのデータをホストコンピュータ104に要求し、そのデータをストレージコントローラのライトキャッシュ328内に配置することを意味する。流れはブロック1216に進む。
ブロック1216で、もはやペンディングのホスト書込み要求916a〜nは一切なく、ストレージコントローラ108は、現在のホスト書込みストリーム308について、全てのペンディングのホスト書込み要求916a〜nをペンディングホスト書込み要求待ち行列916から削除する。流れはブロック1220に進む。
ブロック1220で、ストレージコントローラ108が、新たなストライプの開始LBA948をメタデータメモリ320内に記憶する。この開始LBAは、ホスト書込み要求332が現在のストライプの一部か、または前のストライプの一部かを決めるために、判定ブロック1224で使用される。流れはブロック1232に進む。
判定ブロック1224で、ストレージコントローラ108は、ホスト書込み要求332の開始LBA620が現在のストライプの開始LBA948未満かどうかを判定する。ホスト書込み要求332の開始LBA620が現在のストライプの開始LBA948を下回る場合、ホスト書込み要求332は現在のストライプの一部ではなく、ホスト書込み要求332をライトキャッシュ328内に与えることによって最高の性能が達成される。その場合、流れはブロック1244に進む。ホスト書込み要求332の開始LBA620が現在のストライプの開始LBA948未満でない場合、流れは判定ブロック1228に進み、ペンディングホスト書込み待ち行列916上の延期されたホスト書込み要求332の有無を確認する。
本明細書に示した流れは、次のホスト書込み要求332、612が現在のホスト書込み要求332よりも高い開始LBA620を有する、増加型の逐次ホスト書込みストリーム308の最も一般的な事例を反映することに留意すべきである。但し、逐次ホスト書込みストリーム308は、次のホスト書込み要求332、612が現在のホスト書込み要求332よりも低い開始LBA620を有する、減少型の逐次ホスト書込みストリーム308である場合があり得る。増加型又は減少型の逐次ホスト書込みストリーム308の任意の組合せを適合させるために、本発明の示したプロセスを修正する方法を当業者なら理解することが察せられる。何れにせよ、本発明は両方の種類の逐次ホスト書込みストリーム308を考える。
判定ブロック1228で、ストレージコントローラ108は、ペンディングホスト書込み待ち行列916上にペンディングのホスト書込み要求916a〜nがあるかどうかを判定する。ペンディングホスト書込み待ち行列916上にペンディングのホスト書込み要求916a〜nがある場合、新たなホスト書込み要求332をペンディングホスト書込み待ち行列916に追加することが有利であり、流れはブロック1232に進む。ペンディングホスト書込み待ち行列916上にペンディングのホスト書込み要求916a〜nがない場合、新たなホスト書込み要求332をライトキャッシュ328に直接追加することが有利であり、流れはブロック1244に進む。
ブロック1232で、ストレージコントローラ108は、現在のホスト書込みストリーム308について、新たなホスト書込み要求332をペンディングホスト書込み待ち行列916上の待ち行列916の末尾に配置する。流れはブロック1236に進む。
ブロック1236で、ストレージコントローラ108は、ストリーム時間ラストヒット(stream time last hit : tlh)908として現在の時間を記憶する。現在の時間はタイマ340から、又は現在の時間を保つソフトウェアルーチンから提供され得る。流れはブロック1240に進む。
ブロック1240で、ストレージコントローラ108は、現在のホスト書込みストリーム308を、最新のストリーム808aとしてLRUストリーム待ち行列808の末尾に移す。流れはブロック1240で終わり、制御権を図10のブロック1016に戻し、ブロック1004で新たなホスト書込み要求を待つ。
ブロック1244で、ストレージコントローラ108は、新たなホスト書込み要求332をストレージコントローラのライトキャッシュ328に伝送する。流れはブロック1244で終わり、制御権を図10のブロック1016に戻し、ブロック1004で新たなホスト書込み要求を待つ。
次に図13を参照し、本発明の実施形態による、LRUストリーム待ち行列808の管理プロセスを示す流れ図が示されている。図13に示すプロセスは他の図示のプロセスと非同期的に実行され、好ましい実施形態では1秒毎に実行される。他の実施形態では、LRUストリーム待ち行列808の管理プロセスが1秒よりも低頻度で、又は1秒よりも高頻度で実行されることに留意すべきである。流れは判定ブロック1304で始まる。
判定ブロック1304で、ストレージコントローラ108は、LRUストリーム待ち行列808が空かどうかを判定する。LRUストリーム待ち行列808が空の場合、更なるストリーム管理動作は必要なく、流れはブロック1304で終わる。LRUストリーム待ち行列808が空ではない場合、1つ又は複数のホスト書込みストリーム308が待ち行列808上にあり、流れはブロック1308に進む。
ブロック1308で、ストレージコントローラ108は、LRUストリーム待ち行列808の先頭808nにあるエントリを識別する。LRUストリーム待ち行列の先頭808nは、ストレージコントローラ108によって追跡されている、最も古いホスト書込みストリーム308を識別する。流れはブロック1312に進む。
ブロック1312で、ストレージコントローラ108は、現在のホスト書込みストリーム308について、現在の時間とストリーム時間ラストヒット(tlh)908との差に等しい経過時間を計算する。流れは判定ブロック1316に進む。
判定ブロック1316で、ストレージコントローラ108は、経過時間がホスト保証書込み時間804以上かどうかを判定する。経過時間がホスト保証書込み時間804以上である場合、流れはブロック1320に進む。経過時間がホスト保証書込み時間804以上ではない場合、流れは判定ブロック1316で終わる。
ブロック1320で、ストレージコントローラ108は、ペンディングホスト書込み待ち行列916内の全てのペンディングのホスト書込み要求916a〜nをライトキャッシュ328に伝送する。流れはブロック1324に進む。
ブロック1324で、ストレージコントローラ108は、LRUストリーム待ち行列808の先頭808nにあるエントリを削除する。これにより、ペンディングホスト書込み待ち行列916の1つ又は複数のエントリを有するストリーム308の更なるホスト書込み要求332をストレージコントローラ108が受け取っていない場合にさえ、ホスト保証書込み時間804を満たすために古いストリーム308が除去される。流れは判定ブロック1304に進み、LRUストリーム待ち行列808が空かどうかを再び確認する。
最後に、添付の特許請求の範囲によって定める本発明の趣旨及び範囲から逸脱することなしに、本発明の同一目的を実行するための他の構造を設計し又は修正するための基礎として、開示した概念及び具体的実施形態を容易に使用できることを当業者なら理解されよう。
108 ストレージコントローラ
108a ストレージコントローラ
108b ストレージコントローラ
328 ライトキャッシュ
400 ストライプドストレージボリューム
404 ストライプN
408 ストライプN+1
412 ストライプN+2
416 ストライプN+3

Claims (20)

  1. ストレージコントローラからストライプドストレージボリュームへの書込みデータを効率的に処理するための方法であって、
    ホスト書込み要求サイズを含むホスト書込み要求を前記ストレージコントローラによって受け取るステップと、
    前記ホスト書込み要求を含むストライプを埋める時間がホスト保証書込み時間を下回ることを前記ストレージコントローラによって計算するステップと、
    前記ホスト書込み要求をライトバックホスト書込み要求として前記ストレージコントローラによって処理するステップであって、前記ストレージコントローラは、ライトバックホスト書込み要求をライトキャッシュ内に記憶する、前記処理するステップとを備え、
    前記ストライプを埋める時間は、前記ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度によって分割された前記ストライプのサイズに対応し、
    前記ホスト保証書込み時間は、ホスト書込み要求が前記ライトキャッシュ及び前記ストライプドストレージボリュームの1つに関連付けられることを前記ストレージコントローラが保証する最長待ち時間である、方法。
  2. 前記対応するホスト書込みストリームは、或る期間にわたりLBAについて増加及び減少するうちの一方である1組のLBA逐次ホスト書込み要求である、請求項1に記載の方法。
  3. 前記ホスト書込み要求を受け取った後、及び前記ホスト書込み要求を含む前記ストライプを埋める時間を計算する前に、
    前記ホスト書込み要求が既存のホスト書込みストリームに適合するかどうかを前記ストレージコントローラによって判定するステップと、
    前記ホスト書込み要求が既存のホスト書込みストリームに適合しない場合、前記ストレージコントローラによって新たなホスト書込みストリームを作成するステップであって、
    前記新たなホスト書込みストリームは、
    新たなホスト書込みストリームが作成された時間を識別するタイムスタンプと、
    前記ホスト書込み要求サイズに等しい現在のバースト長と、
    前記ホスト書込み要求の開始LBAに対応するストリームウィンドウであって、前記ホスト書込み要求を上回るLBAの範囲を含む、前記ストリームウィンドウとを含む、前記新たなホスト書込みストリームを作成するステップと、
    前記ホスト書込み要求が既存のホスト書込みストリームに適合する場合、前記ホスト書込み要求に対応するホスト書込みストリームのメタデータを前記ストレージコントローラによって更新するステップとをさらに備え、
    前記対応するホスト書込みストリームは、既存のホスト書込みストリーム及び前記新たなホスト書込みストリームの1つである、請求項2に記載の方法。
  4. 前記ホスト書込み要求をライトバックホスト書込み要求として処理するステップは、
    前記ホスト書込み要求がストライプを開始するか、又はストライプにまたがるかを前記ストレージコントローラによって判定するステップを含み、該判定するステップに応答して、
    前記ホスト書込み要求がストライプを開始するか、又はストライプにまたがる場合、前記方法は、
    前記対応するホスト書込みストリームの全てのペンディングのホスト書込み要求を前記ストレージコントローラによって前記ライトキャッシュに伝送するステップと、
    前記ストライプの開始LBAを前記ストレージコントローラによって記憶するステップと、
    前記ホスト書込み要求をペンディングのホスト書込み要求へと前記ストレージコントローラによって変換するステップとを更に備え、
    前記ホスト書込み要求がストライプを開始しないか、又はストライプにまたがらない場合、前記方法は、
    追加のペンディングのホスト書込み要求があるかどうかを前記ストレージコントローラによって判定するステップを更に含み、該判定するステップに応答して、
    追加のペンディングのホスト書込み要求がある場合、前記方法は、
    前記ホスト書込み要求をペンディングのホスト書込み要求へと前記ストレージコントローラによって変換するステップを更に備え、
    追加のペンディングのホスト書込み要求がない場合、前記方法は、
    前記ホスト書込み要求を前記ライトキャッシュに前記ストレージコントローラによって伝送するステップを更に備える、請求項1に記載の方法。
  5. ペンディングのホスト書込み要求は、
    前記ペンディングのホスト書込み要求に対応するデータの要求を前記ストレージコントローラが遅らせている、前記ストレージコントローラによって受け取られるホスト書込み要求である、請求項4に記載の方法。
  6. 前記ホスト書込み要求をペンディングのホスト書込み要求に変換するステップは、
    前記対応するホスト書込みストリームについて、前記ホスト書込み要求をペンディングホスト書込み要求待ち行列上に前記ストレージコントローラによって配置するステップと、
    前記対応するホスト書込みストリームのタイムスタンプとして現在の時間を前記ストレージコントローラによって記憶するステップと、
    前記対応するホスト書込みストリームをホスト書込みストリーム待ち行列に前記ストレージコントローラによって移動させるステップとを含む、請求項5に記載の方法。
  7. 前記ストレージコントローラが前記ホスト書込みストリーム待ち行列を周期的に更新し、
    前記ホスト書込みストリーム待ち行列を周期的に更新することは、
    前記ホスト書込みストリーム待ち行列が空かどうかを前記ストレージコントローラによって判定するステップを含み、該判定するステップに応答して、
    前記ホスト書込みストリーム待ち行列が空の場合、
    前記ホスト書込みストリーム待ち行列の次の周期的更新を前記ストレージコントローラによって待ち、
    前記ホスト書込みストリーム待ち行列が空ではない場合、
    前記ホスト書込みストリーム待ち行列内の最も古いホスト書込みストリームを前記ストレージコントローラによって識別し、
    前記最も古いホスト書込みストリームの経過時間を前記ストレージコントローラによって計算し、
    前記経過時間が前記ホスト保証書込み時間を下回るかどうかを前記ストレージコントローラによって判定する、請求項6に記載の方法。
  8. 前記経過時間が前記ホスト保証書込み時間を下回るかどうかを判定することに応答して、
    前記経過時間が前記ホスト保証書込み時間を下回る場合、
    前記ホスト書込みストリーム待ち行列の次の周期的更新を前記ストレージコントローラによって待ち、
    前記経過時間が前記ホスト保証書込み時間を下回らない場合、
    前記ペンディングホスト書込み要求待ち行列内の全てのペンディングのホスト書込み要求を前記ライトキャッシュに前記ストレージコントローラによって伝送し、
    前記ホスト書込みストリーム待ち行列内の前記最も古いホスト書込みストリームを前記ストレージコントローラによって削除する、請求項7に記載の方法。
  9. 前記経過時間は、前記対応するホスト書込みストリームが直近のホスト書込み要求を受け取ってからの時間を識別し、
    前記経過時間は、現在の時間と前記対応するホスト書込みストリームの時間ラストヒットとの差を含む、請求項8に記載の方法。
  10. 1台又は複数台のホストコンピュータから、1つ又は複数のストレージデバイスを含むストライプドストレージボリュームに書込みデータを効率的に処理するためのストレージコントローラであって、
    プロセッサと、
    前記プロセッサに結合されるメモリと
    を備え、
    前記メモリは、
    ライトキャッシュと、
    ホスト保証書込み時間と
    を含み、
    前記ホスト保証書込み時間は、ホスト書込み要求が前記ライトキャッシュ及び前記ストライプドストレージボリュームの1つに関連付けられることを前記ストレージコントローラが保証する最長待ち時間であり、
    前記ストレージコントローラは、ホスト書込み要求サイズを含むホスト書込み要求を受け取り、前記ホスト書込み要求を含むストライプを埋める時間が前記ホスト保証書込み時間を下回ることを計算し、前記ホスト書込み要求をライトバックホスト書込み要求として処理し、
    前記ストライプを埋める時間は、前記ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度に応じて分割され、前記ホスト書込み要求を含むストライプのサイズに対応する、ストレージコントローラ。
  11. 前記対応するホスト書込みストリームは、或る期間にわたるLBAの増加及び減少のうちの一方を実行する1組のLBA逐次ホスト書込み要求である、請求項10に記載のストレージコントローラ。
  12. 前記ストレージコントローラが前記ホスト書込み要求を受け取った後、及び前記ストレージコントローラが前記ホスト書込み要求を含む前記ストライプを埋める時間を計算する前に、前記ストレージコントローラは、前記ホスト書込み要求が既存のホスト書込みストリームに適合するかどうかを判定し、
    前記ホスト書込み要求が既存のホスト書込みストリームに適合しない場合、前記ストレージコントローラは、新たなホスト書込みストリームが作成された時間を識別するタイムスタンプ、前記ホスト書込み要求サイズに等しい現在のバースト長、及び前記ホスト書込み要求の開始LBAに対応するストリームウィンドウであって、前記ホスト書込み要求を上回るLBAの範囲を含む、前記ストリームウィンドウを含む、前記新たなホスト書込みストリームを作成し、
    前記ホスト書込み要求が既存のホスト書込みストリームに適合する場合、前記ストレージコントローラは、前記ホスト書込み要求に対応するホスト書込みストリームのメタデータを更新し、
    前記対応するホスト書込みストリームは、既存のホスト書込みストリーム及び前記新たなホスト書込みストリームの1つである、請求項11に記載のストレージコントローラ。
  13. 前記ホスト書込み要求をライトバックホスト書込み要求として処理することは、
    前記ストレージコントローラが、前記ホスト書込み要求がストライプを開始するか、又はストライプにまたがるかを判定し、
    該判定に応答して、前記ホスト書込み要求がストライプを開始するか、又はストライプにまたがる場合、前記ストレージコントローラが、前記対応するホスト書込みストリームの全てのペンディングのホスト書込み要求を前記ライトキャッシュに伝送し、
    前記ストライプの開始LBAを記憶し、前記ホスト書込み要求をペンディングのホスト書込み要求へと変換し、前記ホスト書込み要求がストライプを開始しないか、又はストライプにまたがらない場合、前記ストレージコントローラが、追加のペンディングのホスト書込み要求があるかどうかを判定し、
    該判定に応答して、追加のペンディングのホスト書込み要求がある場合、前記ストレージコントローラが、前記ホスト書込み要求をペンディングのホスト書込み要求へと変換し、
    追加のペンディングのホスト書込み要求がない場合、前記ストレージコントローラが、前記ホスト書込み要求を前記ライトキャッシュに伝送する、請求項10に記載のストレージコントローラ。
  14. ペンディングのホスト書込み要求は、
    前記ペンディングのホスト書込み要求に対応するデータの要求を前記ストレージコントローラが遅らせている、前記ストレージコントローラによって受け取られるホスト書込み要求である、請求項13に記載のストレージコントローラ。
  15. 前記ホスト書込み要求をペンディングのホスト書込み要求に変換することは、
    前記ストレージコントローラが、前記対応するホスト書込みストリームについて、前記ホスト書込み要求をペンディングホスト書込み要求待ち行列上に配置し、前記対応するホスト書込みストリームのタイムスタンプとして現在の時間を記憶し、前記対応するホスト書込みストリームをホスト書込みストリーム待ち行列に移動させることを含む、請求項14に記載のストレージコントローラ。
  16. 前記ストレージコントローラが、前記ホスト書込みストリーム待ち行列を周期的に更新し、
    前記ホスト書込みストリーム待ち行列を周期的に更新することは、
    前記ホスト書込みストリーム待ち行列が空かどうかを前記ストレージコントローラが判定することを含み、該判定に応答して、前記ホスト書込みストリーム待ち行列が空の場合、前記ストレージコントローラが、前記ホスト書込みストリーム待ち行列の次の周期的更新を待ち、前記ホスト書込みストリーム待ち行列が空ではない場合、前記ストレージコントローラが、前記ホスト書込みストリーム待ち行列内の最も古いホスト書込みストリームを識別し、前記最も古いホスト書込みストリームの経過時間を計算し、前記経過時間が前記ホスト保証書込み時間を下回るかどうかを判定する、請求項15に記載のストレージコントローラ。
  17. 前記ストレージコントローラが、前記経過時間が前記ホスト保証書込み時間を下回るかどうかを判定することに応答して、前記経過時間が前記ホスト保証書込み時間を下回る場合、前記ストレージコントローラが、前記ホスト書込みストリーム待ち行列の次の周期的更新を待ち、前記経過時間が前記ホスト保証書込み時間を下回らない場合、前記ストレージコントローラが、前記ペンディングホスト書込み要求待ち行列内の全てのペンディングのホスト書込み要求を前記ライトキャッシュに伝送し、前記ホスト書込みストリーム待ち行列内の前記最も古いホスト書込みストリームを削除する、請求項16に記載のストレージコントローラ。
  18. 前記経過時間は、前記対応するホスト書込みストリームが直近のホスト書込み要求を受け取ってからの時間を識別し、
    前記経過時間は、現在の時間と前記対応するホスト書込みストリームの時間ラストヒットとの差を含む、請求項17に記載のストレージコントローラ。
  19. ストレージデバイスに書込みデータを効率的に伝送するためのシステムであって、
    ホストコンピュータと、
    前記ホストコンピュータに結合されるストレージコントローラであって、
    プロセッサと、
    前記プロセッサに結合され、ライトキャッシュを含むメモリとを含む前記ストレージコントローラと、
    前記ストレージコントローラに結合される1つ又は複数のストレージデバイスを含むストライプドボリュームとを備え、
    前記ホストコンピュータは、ホスト書込み要求を前記ストレージコントローラに伝送し、
    前記ホスト書込み要求は、ストライプドストレージボリュームのストライプに宛てられ、
    前記ホストコンピュータが前記ホスト書込み要求を前記ストレージコントローラに伝送することに応答し、前記ストレージコントローラは、前記ストライプを埋める時間がホスト保証書込み時間以下であることを計算し、前記ホスト書込み要求をライトバックホスト書込み要求として処理し、
    前記ストライプを埋める時間は、前記ホスト書込み要求を含む対応するホスト書込みストリームのデータ転送速度に応じて分割された前記ホスト書込み要求を含む前記ストライプのサイズに対応する、システム。
  20. 前記ストレージコントローラが、前記ホスト書込み要求をライトバックホスト書込み要求として処理することは、
    前記対応するホスト書込みストリームのペンディング待ち行列上に他のホスト書込み要求がなく、前記ホスト書込み要求がストライプにまたがらず、又はストライプを開始しない場合、前記ストレージコントローラが前記ホスト書込み要求を前記ライトキャッシュに伝送することを含み、
    前記ホスト書込み要求がストライプにまたがり、若しくはストライプを開始する場合、又は前記ホスト書込み要求がストライプにまたがり、若しくはストライプを開始し、前記ペンディング待ち行列上に少なくとも1つの他のホスト書込み要求がある場合、前記ストレージコントローラが、前記ホスト書込み要求を前記ペンディング待ち行列上に配置し、前記ペンディング待ち行列上のホスト書込み要求は、後で前記ライトキャッシュに伝送される、請求項19に記載のシステム。
JP2015127616A 2014-11-14 2015-06-25 高速非同期ストリームを処理するための方法及び機器 Pending JP2016095828A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462079674P 2014-11-14 2014-11-14
US62/079,674 2014-11-14
US14/628,839 2015-02-23
US14/628,839 US9158687B2 (en) 2013-03-04 2015-02-23 Method and apparatus for processing fast asynchronous streams

Publications (1)

Publication Number Publication Date
JP2016095828A true JP2016095828A (ja) 2016-05-26

Family

ID=53483685

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015127616A Pending JP2016095828A (ja) 2014-11-14 2015-06-25 高速非同期ストリームを処理するための方法及び機器

Country Status (4)

Country Link
EP (1) EP3021208B1 (ja)
JP (1) JP2016095828A (ja)
CN (1) CN105607864B (ja)
TW (1) TWI563384B (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017164456A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2017164452A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2017164455A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2017164457A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2017164454A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2018073412A (ja) * 2016-10-26 2018-05-10 三星電子株式会社Samsung Electronics Co.,Ltd. マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法
US11048624B2 (en) 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US11194710B2 (en) 2017-04-25 2021-12-07 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
JP2022103398A (ja) * 2020-07-13 2022-07-07 株式会社三洋物産 遊技機
JP2022103397A (ja) * 2020-07-13 2022-07-07 株式会社三洋物産 遊技機
JP2022103399A (ja) * 2020-07-15 2022-07-07 株式会社三洋物産 遊技機
JP2022107047A (ja) * 2020-07-13 2022-07-20 株式会社三洋物産 遊技機

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102336666B1 (ko) * 2017-09-15 2021-12-07 삼성전자 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04119441A (ja) * 1990-09-11 1992-04-20 Hitachi Ltd ディスク・キャッシュ制御方式
JPH05303528A (ja) * 1992-04-27 1993-11-16 Oki Electric Ind Co Ltd ライトバック式ディスクキャッシュ装置
US20110191534A1 (en) * 2010-02-01 2011-08-04 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
JP2012014450A (ja) * 2010-06-30 2012-01-19 Toshiba Corp データ記憶装置及びスライス割り当て方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7380067B2 (en) * 2004-07-19 2008-05-27 Infortrend Technology, Inc. IO-stream adaptive write caching policy adjustment
US8255627B2 (en) * 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
TWI497293B (zh) * 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US8886880B2 (en) * 2012-05-29 2014-11-11 Dot Hill Systems Corporation Write cache management method and apparatus
US9390055B2 (en) * 2012-07-17 2016-07-12 Coho Data, Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory
JP5976608B2 (ja) * 2012-10-30 2016-08-23 株式会社東芝 メモリデバイス
US20140281366A1 (en) * 2013-03-15 2014-09-18 Cognitive Electronics, Inc. Address translation in a system using memory striping

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04119441A (ja) * 1990-09-11 1992-04-20 Hitachi Ltd ディスク・キャッシュ制御方式
JPH05303528A (ja) * 1992-04-27 1993-11-16 Oki Electric Ind Co Ltd ライトバック式ディスクキャッシュ装置
US20110191534A1 (en) * 2010-02-01 2011-08-04 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
JP2013511081A (ja) * 2010-02-01 2013-03-28 インターナショナル・ビジネス・マシーンズ・コーポレーション デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法、システム及びコンピュータ・プログラム
JP2012014450A (ja) * 2010-06-30 2012-01-19 Toshiba Corp データ記憶装置及びスライス割り当て方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017164452A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2017164455A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2017164457A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2017164454A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
JP2017164456A (ja) * 2016-03-09 2017-09-21 株式会社三洋物産 遊技機
US11048411B2 (en) 2016-10-26 2021-06-29 Samsung Electronics Co., Ltd. Method of consolidating data streams for multi-stream enabled SSDs
JP2018073412A (ja) * 2016-10-26 2018-05-10 三星電子株式会社Samsung Electronics Co.,Ltd. マルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法
US11048624B2 (en) 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US11194710B2 (en) 2017-04-25 2021-12-07 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US11630767B2 (en) 2017-04-25 2023-04-18 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
JP2022103398A (ja) * 2020-07-13 2022-07-07 株式会社三洋物産 遊技機
JP2022103397A (ja) * 2020-07-13 2022-07-07 株式会社三洋物産 遊技機
JP2022107047A (ja) * 2020-07-13 2022-07-20 株式会社三洋物産 遊技機
JP2022103399A (ja) * 2020-07-15 2022-07-07 株式会社三洋物産 遊技機

Also Published As

Publication number Publication date
EP3021208A1 (en) 2016-05-18
CN105607864A (zh) 2016-05-25
TWI563384B (en) 2016-12-21
TW201617893A (zh) 2016-05-16
EP3021208B1 (en) 2019-01-09
CN105607864B (zh) 2019-03-26

Similar Documents

Publication Publication Date Title
US9158687B2 (en) Method and apparatus for processing fast asynchronous streams
JP2016095828A (ja) 高速非同期ストリームを処理するための方法及び機器
JP2016095829A (ja) 低速で低頻度のストリームを処理するための方法及び機器
US8930619B2 (en) Method and apparatus for efficiently destaging sequential I/O streams
US9552297B2 (en) Method and apparatus for efficient cache read ahead
US9152563B2 (en) Method and apparatus for processing slow infrequent streams
US9053038B2 (en) Method and apparatus for efficient read cache operation
US8886880B2 (en) Write cache management method and apparatus
US9684455B2 (en) Method and apparatus for sequential stream I/O processing
US10310980B2 (en) Prefetch command optimization for tiered storage systems
US8645626B2 (en) Hard disk drive with attached solid state drive cache
JP2015518987A (ja) フラッシュストレージのためのi/oアクセスパターンの特殊化
JP6154433B2 (ja) 逐次入出力ストリームを効率的にデステージするための方法及び装置
US10754730B2 (en) Copying point-in-time data in a storage to a point-in-time copy data location in advance of destaging data to the storage
Kim et al. Flash-Conscious Cache Population for Enterprise Database Workloads.
US10990289B2 (en) Data storage systems using time-based read ahead
US11055001B2 (en) Localized data block destaging
EP2985690B1 (en) Method and apparatus for sequential stream i/o processing
CA2896585A1 (en) Method and apparatus for processing asynchronous streams

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160726

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20160726

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160729

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20160726

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161025

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170228