JP2015518987A - フラッシュストレージのためのi/oアクセスパターンの特殊化 - Google Patents
フラッシュストレージのためのi/oアクセスパターンの特殊化 Download PDFInfo
- Publication number
- JP2015518987A JP2015518987A JP2015514161A JP2015514161A JP2015518987A JP 2015518987 A JP2015518987 A JP 2015518987A JP 2015514161 A JP2015514161 A JP 2015514161A JP 2015514161 A JP2015514161 A JP 2015514161A JP 2015518987 A JP2015518987 A JP 2015518987A
- Authority
- JP
- Japan
- Prior art keywords
- storage device
- solid state
- volatile solid
- state storage
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Abstract
ソリッドステート装置を効率的に使用するためのシステム及び方法が提供される。いくつかの実施形態は、性能を最大化するために、データアクセスパターンを下層の隠された装置実装に配列することを目的に、循環ログとして非揮発性ソリッドステート装置を使用するデータ処理システムを提供する。メタデータは、データアクセスパターンを下層の装置実装に配列するために、データが散在可能である。複数の入力/出力(I/O)バッファはまた、メタデータ及びデータの線形ログへのパイプライン挿入に使用可能である。複数のI/Oバッファの観測された待ち行列の動きは、(例えば、過度に長い応答時間を予測するために)ストレージ装置の利用率が飽和にいつ近づくかを判別するために使用可能である。その後、利用率が飽和に近づいたとき、ストレージ装置上のI/O負荷は制限されてもよい。結果として、システムの応答時間全体が改善される。
Description
本明細書に開示される種々の実施形態は一般に、ソリッドステートストレージ装置に関する。より具体的には、いくつかの実施形態は、ソリッドステートストレージ装置への書き込みを最適化するシステム及び方法に関する。
例えば、待ち時間が比較的に長い(すなわちアクセス時間がより長い)ハードディスクドライブ装置(HDD)、及びフラッシュメモリ又はDRAMなどの待ち時間が比較的に短い(すなわちアクセス時間がより短い)ソリッドステート装置(SSD)などの各種の非揮発性ストレージメディアは、情報を格納するために使用可能である。HDDは一般に、良好なストリーミング性能(例えば、大きな連続的ブロックの読み出し又は「トラック読み出し」)を提供するが、遅いアクセス時間によってランダムアクセス(すなわち、個別のディスクセクタの読み出し及び書き込み)に対してはうまく機能しない。その一方で、SSDは、待ち時間が比較的に短いため、ランダムアクセス及び頻繁なメモリアクセスにより適する。SSDは可動部分有しないために、HDDによって経験される大きな待ち時間をもたらす機械的な遅延を有さず、シーク時間は大幅に低減されてSSDは非常に高速となる。
フラッシュメモリは一般に、DRAMとディスクとの間のメモリ階層における新たな層として受け入れられている。ギガバイト(GB)当たりのコストの観点から、DRAM容量はフラッシュ容量よりも高価であり、フラッシュ容量はハードディスク容量よりも高価である。同時に、DRAM待ち時間はフラッシュよりも小さく、フラッシュ待ち時間はハードディスクよりも小さい。結果として、フラッシュメモリの入力/出力(I/O)動作当たりのコストは、DRAMと磁気メディアとの間にある。メモリ階層におけるこの配置によれば、多くの場合、フラッシュメモリはキャッシュのためには理想的となる。
フラッシュ及び他のソリッドステートメモリは時にはSCSIドライブ又はSATAドライブと同一のインタフェースを提供するが、下層の動作、実装、及び性能は、ソリッドステートメモリとSCSIドライブ又はSATAドライブとの間では実質的に相違する場合がある。例えば、主要な相違点のうちの1つは、SSDにおける格納場所が、情報がそこに書き込み可能である前に、消去される必要があるということである。装置は通常、従来の書き込みユニット(セクタ)よりも大きな単位(消去ブロック)で消去される。これら動作上の相違点があるとしても、SSDは多くの場合、HDDのために開発された入力/出力インタフェースを使用する。結果として、HDDのために開発されたアルゴリズムに基づいたSSDメモリの統合と実装は、アルゴリズムがSSDベースのストレージの特性に合わせて最適化されていないために、SSDメモリの恩恵を十分に受けることができない場合がある。それ故、フラッシュメモリ及び他のソリッドステート装置をより効率的に用いるために、改善された技術が必要とされる。
本明細書において説明される種々の実施形態は一般に、フラッシュストレージ装置又は他の非揮発性ソリッドステートストレージ装置のための入力/出力(I/O)アクセスパターンをカスタマイズするシステム及び方法に関する。いくつかの実施形態はこのカスタマイズを使用して、フラッシュに優しいキャッシングアルゴリズムを創出する。これらの技術は、種々の関連する構成要素及び動作と合わせ、非揮発性ソリッドステート装置(例えば、フラッシュ装置、バッテリでバックアップされたRAM、及びその他)をより効果的に利用することができる。例えば、ハードディスクドライブとは異なり、ソリッドステートドライブからデータを消去することは通常、書き込みよりもより多くの時間を要する。結果として、1つの空きセクタを回復するために消去を実行することは、セクタの消去ブロック全体を回復するために消去を実行することよりも、価値が低い。従って、本明細書において説明されるいくつかの実施形態において、書き込みは、消去ブロックの整数倍単位でのみ、ソリッドステートストレージ装置に対して実行される。また、ハードディスクドライブは多くの場合、データからメタデータを分離してシーク時間を最小化する。しかしながら、シーク時間はソリッドステート装置にとっての重要ではないために、メタデータは多くの実施形態において、データと混合される場合がある。
ある実施形態において、非揮発性ソリッドステートドライブは、論理セクタアドレスを非揮発性ソリッドステートドライブにおける物理アドレスにマップするための、関連した変換層を有し、非揮発性ソリッドステートドライブは、(例えばホスト側のキャッシュにおける)データを格納するための循環ログとして扱われ、該データは、書き込みユニット単位で、非揮発性ソリッドステートドライブに書き込まれる。ここで、書き込みユニットのサイズは、非揮発性ソリッドステートドライブの消去ブロックのサイズの整数倍である。少なくともいくつかの非揮発性ソリッドステートドライブは書き込みの前に消去ブロック単位で消去される必要があるために、技術のこの組み合わせ、及びその変形例は、性能を改善するために、データアクセスパターンを、下層の隠された装置実装に配列する。
本発明の実施形態はまた、他の方法、種々の構成要素を有するシステム、並びに1つ又は複数のプロセッサに方法、方法の変形例、及び本明細書において説明される他の動作を実行させる命令のセットを含むコンピュータ読み出し可能なストレージメディアを含む。複数の実施形態が開示されるが、本発明の更に他の実施形態は、本発明の例示的な実施形態を示し説明する以下の詳細な説明から、当業者にとって明白となる。当然のことながら、本発明は、本発明の範囲から全く逸脱すること無く、種々の態様において変更可能である。従って、図面及び詳細な説明は、本質的に例示的なものとして見なされるべきであり、限定的なものとして見なされるべきではない。
関連出願の相互参照
この出願は、2012年5月22日付提出の米国特許出願第13/477966号の優先権を主張するものであり、参照によってその全体が本明細書に組み込まれる。
この出願は、2012年5月22日付提出の米国特許出願第13/477966号の優先権を主張するものであり、参照によってその全体が本明細書に組み込まれる。
本発明の実施形態は、添付の図面を用いて説明及び解説される。
図面は、必ずしも縮尺通りには描かれていない。例えば、図におけるいくつかの要素の寸法は、本発明の実施形態の理解の向上を助けるために、拡大又は縮小されている場合がある。同様に、本発明の実施形態のうちのいくつかの議論の目的のために、いくつかの構成要素及び/又は動作は、異なる複数のブロックに分離される場合があり、あるいは単一のブロックに組み合わされる場合がある。更に、本発明は種々の変更又は代替の形式に修正可能であるが、特定の実施形態は、図面において例示として示されており、あるいは以下に詳細に説明される。しかしながら、その意図は、発明を、説明される特定の実施形態に限定することではない。むしろ、本発明は、添付の特許請求の範囲によって定義される発明の範囲内に入る全ての変更、均等、及び置換を含むことが意図される。
フラッシュベースのソリッドステートストレージ装置(SSD)及び他のSSDはランダムアクセスインタフェースを供給し、時としてSCSIディスクドライブ又はSATAディスクドライブになりすます。しかしながら、下層の実装及び性能プロファイルは、ディスクドライブから実質的に異なる。一般的な場合、ディスクドライブはディスク上に物理セクタを有し、該物理セクタは、ランダムアクセスインタフェースによってエクスポートされる論理セクタと同じ順番で配置される。例えば、セクタnはセクタn+1に物理的に隣接し、書き込みセクタn…(n+m)は、書き込みセクタn…(n+2m)のおよそ半分の長さを有する。ディスク書き込みを実行するに要する時間は実際上決定論的であり、書き込みのサイズ並びにディスクの物理的特性と状態(すなわち、書き込まれるセクタの数、ディスクヘッドの開始位置、及びプラッタの回転速度)によって導かれる。ひとたびディスクヘッドが適切に位置決めされると、セクタn…(n+m)に書き込む時間はドライブの物理的特性によって決定される。
フラッシュドライブは通例、ディスクドライブと同一のインタフェースを提供するが、実装は大きく異なる。主要な相違点のうちの1つは、フラッシュメモリが書き込みの前に消去され、また、従来の書き込みユニット(セクタ)よりも大きな単位(消去ブロック)で消去される必要がある、ということである。効果的にディスクドライブになりすますために、従来のフラッシュドライブは、フラッシュ変換層(FTL)ソフトウェアを使用する。FTLは、論理セクタアドレスのセットを、実質的により大きな物理ストレージプールにマップし、典型的には論理セクタnを物理セクタnにマップすることを試みる。データがフラッシュドライブに書き込まれるとき、FTLはデータを、現在割り当てられていない物理ストレージに格納して、データと関連する論理セクタ数から、データを保持する物理セクタへのマッピングを維持する。論理セクタが書き込まれるとき、FTLは新たなデータを同一の物理セクタに格納しようとする試みを行わず、これに代えて、FTLは、古い論理−物理マッピングを無効としてマークするとともに古い物理セクタを再利用のために利用可能としてマークして、新たなデータを別の物理セクタに書き込む。この処理が継続するものであった場合、それは最終的には結果として、物理ストレージの全てが充填されることとなる。
フラッシュドライブが完全に充填されないように保ってストレージを利用可能にするために、SSDは通常、該SSDが論理ストレージとして提供するよりも多くの物理ストレージを備えている。また、FTLは、(時として「ガベレージコレクション」と呼ばれる)クリーニングを実行する。通常、クリーニング処理は、1つ又は複数の消去ブロックである物理ストレージの領域を選択することと、領域におけるセクタのうちのどれが未だ有効であるかを判別することと、セクタをストレージの利用可能な領域にコピーすることと、そのようなセクタの論理−物理マッピングを更新することと、そして領域のバルク消去を実行することと、を含む。領域における無効なセクタは、利用可能な物理セクタの正味の増加をもたらすこととなる。
残念ながら、消去動作は、書き込み動作よりも実質的に多くの相当な時間を消費する。結果として、フラッシュドライブに書き込むための時間は、ドライブがどの程度「汚い」か(どれだけの空きスペースが現在利用可能であるか)と、そのようなスペースがドライブに亘ってどのように分散しているかと、FTLがバックグラウンドにおいてクリーニングをどの程度活動的に実行中であるかと、ドライブがどれだけのアイドル時間を有するかと、他の因子のホストと、に依存する。
本明細書に示す技術の種々の実施形態は、必要なハウスキーピングの量を低減する。いくつかの実施形態において、装置から(例えば、小さな時間オーバーヘッド又は小さな待ち時間を生じる)高い性能を提供する方法でメタデータ及びデータをフラッシュストレージ装置に書き込む技術が開示される。これらの技術の1つのアプリケーションはキャッシュ(例えば、ホスト側のフラッシュキャッシュ、又は、ネットワーク、サーバ上の仮想マシンハイパーバイザ等におけるなどの他の種類のフラッシュキャッシュ)にある。
いくつかの実施形態は、性能を最大化するために、データアクセスパターンを下層の隠された装置実装に配列することを目的に、循環ログとして非揮発性ソリッドステートストレージ装置(例えば、フラッシュストレージ装置)を使用するデータストレージシステムを提供する。例えば、書き込みブロックは、装置の消去ブロックの整数倍であることができる。また、メタデータ(記述的データ)は、データアクセスパターンを下層の装置実装に配列するために、データを用いて線形ログ中に散在されることが可能である。いくつかの実施形態はまた、置換アルゴリズムに依存する先読み又は回避を用いる線形ログエントリのクリーニングの技術を使用する。複数のI/Oバッファはまた、メタデータ及びデータの線形ログ中へのパイプライン挿入のために使用可能である。複数のI/Oバッファの観測される待ち行列の振る舞いは、(例えば、過度に長い応答時間を予測するために、)ストレージ装置の利用率が飽和に近づいているときを判別するために使用可能である。この場合、ストレージ装置上のI/O負荷は、利用率が飽和に近づいたとき、データの同一のコピーを含むバッキングストアに制限されてもよい。結果として、システムの応答時間全体が改善される。
図1は、本明細書において紹介される技術のいくつかの実施形態が利用されることができる処理システム100のブロック図を示す。図1に示す実施形態において、処理システム100はホスト110を備える。ホスト110は、ハイパーバイザ115を使用してストレージサーバ120とインタラクトする仮想マシン112を有する。図1に示すように、ストレージサーバ120は、1つ又は複数のプロセッサ122と、バッファキャッシュ138を有するメモリ124と、ネットワークアダプタ126と、システムバス125によって相互接続されたストレージアダプタ128とを備える。
ハイパーバイザ115は、複数のオペレーティングシステムがホストコンピュータ上で同時に動作することを可能にする仮想マシンマネージャ(VMM)である。ハイパーバイザ115は、仮想オペレーティングプラットフォームをオペレーティングシステムに提供する。多くの場合において、種々のオペレーティングシステムの複数のインスタンスは、仮想化されたハードウェアリソースを共有してもよい。本発明の種々の実施形態において、ライブ仮想マシン移行を通じたキャッシュ一貫性及び仮想ディスク上のデータ管理動作を可能とするために、ホスト110に接続されるSSD117A(例えば、PCIeフラッシュカード)を使用する非揮発性ソリッドステートキャッシュは、ハイパーバイザ115によって使用されてもよい。メタデータ及びデータの書き込みのために開示される技術は、性能を改善する(例えば、オーバーヘッド時間又は待ち時間を減少させる)方法で、ソリッドステートキャッシュを用いて利用可能である。
(複数の)ホスト110及び(複数の)仮想マシン112はそれぞれ、情報配信のクライアント/サーバモデルに従って、ストレージサーバ120とインタラクトしてもよい。すなわち、(複数の)ホスト110は、ストレージサーバ120のサービスを要求してもよく、システムは、ネットワーク160上でパケットを交換することによってなどして、ホスト110によって要求されたサービスの結果を返してもよい。(複数の)仮想ホスト110は、ファイルの形式で情報にアクセスするとき、TCP/IP上の共通インターネットファイルシステム(CIFS)プロトコル又はネットワークファイルシステム(NFS)プロトコルなどのファイルベースのアクセスプロトコルを含むパケットを発行してもよい。変形例として、(複数の)ホスト110は、LUN又はブロックの形式で情報にアクセスするとき、TCP上でカプセル化されたスモールコンピュータシステムインタフェース(SCSI)プロトコル(iSCSI)及びファイバーチャンネルプロトコル(FCP)上でカプセル化されたSCSIなどの、ブロックベースのアクセスプロトコルを含むパケットを発行してもよい。
ストレージサーバ120は、SSD及びHDDなどの書き込み可能な持続性ストレージメディア上の情報の編成に関連するストレージサービスを提供するコンピュータであることが可能である。ストレージサーバ120はまた、オペレーティングシステム200を含む。オペレーティングシステム200はファイルシステムを実装して、電子ストレージメディア140及び磁気ストレージメディア150上の論理データコンテナ(例えば、ボリューム、論理ユニット、ディレクトリ、及び/又はファイル)の階層構造として、格納されたデータを論理的に編成する。
本明細書において紹介される技術が任意の種類の特定目的コンピュータ(例えば、ファイルサーバ又はストレージサービス機器)、又は独立型のコンピュータ又はその一部を含むストレージサーバとして具現化される、若しくはこれを有する、一般目的コンピュータに適用できる、ということは当業者によって理解されるであろう。図1は、モノリシックの非分散型ストレージサーバ120を例示するが、種々の実施形態は他の種類のストレージ構成(例えば、クラスタストレージ構成)に対して適用可能である。更に、この説明の技術は、種々のストレージサーバアーキテクチャに適合可能である。ここで、種々のストレージサーバアーキテクチャは、クライアントコンピュータ又はホストコンピュータに直接的に接続されるネットワークアッタチトストレージ(NAS)、ストレージエリアネットワーク(SAN)、又はストレージ装置アセンブリを含むが、これらに限定されない。従って、用語「ストレージサーバ」は、データへのファイルベースのアクセス、データへのブロックベースのアクセス、又はその両方を提供するストレージサーバを含むような構成を含むように、広く解釈されるべきである。
メモリ124は、(複数の)プロセッサ122及びアダプタによってアドレス可能である格納場所を含み、ソフトウェアプログラム及びデータ構造を格納して本明細書において説明される技術を実行することができる。(複数の)プロセッサ122及びアダプタは、ソフトウェアプログラムを実行してデータ構造を操作するように構成された、処理要素及び/又は論理回路を備えてもよい。ストレージオペレーティングシステムの一部は、メモリ124に常駐してもよく、また(複数の)プロセッサ122によって実行されてもよい。このストレージオペレーティングシステムは、サーバ120上で実行するソフトウェア処理を支援して、ストレージ動作を起動することによってストレージサーバを機能的に組織化する。種々のコンピュータ読み出し可能なメディアなどの他のメモリ機構がむしろ使用されて、本明細書において説明される実施形態に関するプログラム命令を格納して実行してもよい、ということは当業者にとって明白となろう。電子ストレージメディア140及び磁気ストレージメディア150は、停電又はストレージサーバ120の他の障害の場合にデータを維持可能な、持続性のある書き込み可能なストレージスペースを提供するように構成される。従って、電子ストレージメディア140及び磁気ストレージメディア150は、大規模メモリアレイとして具現化されてもよい。
ネットワークアダプタ126は、ネットワーク160を介してストレージサーバ120をホスト110に接続するために必要とされる回路構成要素と機械的構成要素を備え、これはポイントツーポイント(P2P)接続又は共有メディアを含んでもよい。ネットワーク160は、情報を交換可能な相互接続される装置の任意のグループであることができる。いくつかの実施形態において、ネットワーク160は、ローカルエリアネットワーク(LAN)上のわずかのいくつかのパーソナルコンピュータ、特定目的コンピュータ、及び/又は、一般目的コンピュータであってもよく、又は、インターネットと同じ規模であってもよい。いくつかの場合において、ネットワーク160は、(プライベート及び/又は公共の)複数のネットワーク、更には複数の異種のネットワークを備えてもよい。ここで、複数の異種のネットワークは、種々のネットワークの間の通信を促進するように動作可能なゲートウェイを介して相互接続される、1つ又は複数のボーダーネットワーク、広帯域ネットワーク、サービスプロバイダーネットワーク、インターネットサービスプロバイダ(ISP)ネットワーク、及び/又は公衆交換電話網(PSTN)などである。
ストレージアダプタ128は、ストレージサーバ120上で実行するストレージオペレーティングシステム200と協働して、ホスト110によって要求された情報にアクセスする。情報は、SSD及びHDDとして例示的に具現化される電子ストレージメディア140及び磁気ストレージメディア150上に格納されてもよい。ストレージアダプタは、従来の高性能ファイバーチャンネルシリアルリンクトポロジーなどの、I/O相互接続配置を介してSSD140及びHDD150に接続するI/Oインタフェース回路を含む。情報はストレージアダプタ128によって検索され、必要であれば、システムバス125を介してネットワークアダプタ126に転送される前に(複数の)プロセッサ122(又はアダプタ128)によって処理される。ここで、上記情報はパケットにフォーマットされてホスト110に返される。
説明された実施形態において、バッファキャッシュ138はメモリ124の一部である。しかしながらこれは例示であって限定的ではなく、バッファキャッシュ138は、例えばポイントツーポイント接続を使用して、メモリと接続されてもよい。また、バッファキャッシュ138は、メモリ124から、メモリ124の一部から、又は(複数の)プロセッサ122の一部から分離されてもよい。一般的に、バッファキャッシュ138などのバッファキャッシュメモリは、メモリアクセスを実行する平均時間を低減するように動作可能な、RAM(例えばDRAM)などの、より小型でより小さな待ち時間を有する(高速の)メモリを含む。メモリアクセスが実行されるときにバッファキャッシュがまず、要求されたデータがそこに配置されているかを判別するようにチェックされて、そうである場合にはデータがSSD又はHDDなどの持続性ストレージメディアに代えてバッファキャッシュ138からアクセスされてもよいように、バッファキャッシュは通常、メモリ124における最も頻繁に使用される場所からのデータのコピーを格納する。このように、バッファキャッシュ138などのバッファキャッシュは、持続性ストレージにアクセスしてデータを取得せざるを得ない状況を回避することによって、メモリアクセス時間を低減する。
図2は、非揮発性ソリッドステートメモリ装置200の構成要素を示すブロック図である。非揮発性ソリッドステートメモリ装置200は、ストレージ環境内の、任意の種々の場所において、また任意の種々の目的のために、使用されてもよい。例えば、非揮発性ソリッドステートメモリ装置200は、ホスト側のキャッシュ、又は、処理システム100内のディスクバッキングストレージのためのキャッシュであってもよい。図2に例示する非揮発性ソリッドステートメモリ装置200の実施形態は、FTLソフトウェア220を動作させるコントローラ210と、一時ストレージ装置230と、各々がデータを格納する複数のセルを有するフラッシュメモリチップ240A〜240Hと、を備える。コントローラ210は、バス(例えば、PCI、SATA、SAS、FC、又は他のバス)を介して入力される要求を受け付け、また当該要求に応答し、フラッシュメモリチップ240A〜240Hとインタラクトする。従って、コントローラ210は通常、フラッシュメモリチップ240A〜240H(例えばNAND型メモリ構成要素)をホスト/クライアントコンピュータ、バス、又はサーバにブリッジする電子回路(例えば埋め込まれたプロセッサ)を備える。
コントローラ210は、種々の機能を実行してもよい。この種々の機能は、ガーベジコレクション、暗号化、キャッシング(読み出し及び書き込みの両方)、エラー訂正、及びその他の機能を含むが、これらに限定されない。通常、FTLソフトウェア220は、コントローラ上で(例えば埋め込まれたプロセッサ上で)、動作するソフトウェアを含むことが可能である。FTL220は、論理(クライアント)セクタ及びページアドレスを物理的(内部)ページアドレスにマップする。新たなデータはフラッシュドライブに送信されると、FTL220はドライブのフラッシュメモリチップ240A〜240H上の適切な未使用スペースを発見して、そこにデータを格納する。多くの実施形態において、FTL220は内部データ構造を使用して、論理アドレスと物理アドレスとの間の対応を追跡する。
フラッシュメモリチップ240A〜240Hにおける各メモリセルは、空き状態、使用状態、又は無効状態にあることができる。空き状態は、メモリセルが如何なるデータも格納していない状態を示す。使用状態は、メモリセルがあるデータを現在格納している状態を指す。無効状態は、メモリセルに格納されたデータがもはや有効ではない状態を指す。無効としてマークされたセルは、新たなデータがそのセルに書き込まれることができる前に消去される必要がある。しかしながら、非揮発性ソリッドステートメモリ装置の多くは、図3でより詳細に説明するように、ブロック単位で消去されることだけが可能である。
図3は、非揮発性ソリッドステートストレージ装置と関連するセクタ、ページ、及び消去ブロックの例を示すブロック図である。フラッシュ装置などの典型的な従来のSSDは、クライアントが512バイトのセクタ310を読み出し/書き込みすることを可能にするが、ページ320(通常は2キロバイト、4キロバイト、又は8キロバイト)を単位として実装される。SSDの多くは、何らかの書き込みが対象の格納場所に対して発生する前に、当該対象の格納場所を消去させて空きスペースを作る必要がある。一例はNAND型フラッシュである。消去の最小単位は消去ブロック330として参照される。消去ブロックは、32個、64個、128個、又は他の個数のページであってもよい。
SSDからデータを消去することは通常、SSDにデータを書き込むことよりも多くの時間を要するため、ドライブが消去動作を実行するに要する時間の効率を改善するは、性能の大幅な改善をもたらすことができる。例えば、1つの空きセクタを回復するための消去を実行することは、セクタの消去ブロック全体を回復するための消去を実行することよりも価値が低い。本明細書において紹介される技術の種々の実施形態は、無効化されているブロックで書き込まれているブロックを整列する。いくつかの実施形態において、セクタの消去ブロックの整数倍iは一度に書き出し可能である。i個の消去ブロックのサイズの領域は、実質的に同時に無効化され且つ割り当てられることが可能である。これにより、十分な価値を有する消去動作が得られる。
メモリ装置の消去ブロックのサイズは、常に始めから知られているとは限らない。いくつかの実施形態は、装置の種類、製造業者などの種々の情報と要素を使用して、消去ブロックのサイズを推定する。推定は、あるjに対する、2j個のセクタのサイズの消去ブロックから開始する。次いで、2k個のセクタの書き込みブロックは装置に書き込まれてもよい。ここで、kは少なくともjと同じ大きさであるように十分に大きく選択される。これは、各動作についての2k−j個の消去ブロックを無効化して、消去して、そして書き込むドライブをもたらすこととなる。これは、非揮発性ソリッドステートメモリの動作の従来の方法とは対照的であり、ここで、消去は、消去ブロックのサイズよりも小さい1つの書き込みセクタ又は複数のセクタを回復するために、発生する。
従来、メタデータ(記述データ)は、それを記述するデータから分離して、書き込まれて格納される。ディスクストレージを用いて、メタデータは、メタデータが少ない数のI/Oで読み込み可能であるように連続的な領域に格納可能であり、ディスクシーク動作の回数が低減される。しかしながらSSDはシーク時間遅延を示さず、そのため動機は適用されない。いくつかの実施形態において、メタデータはデータと混合される。
種々の実施形態は、ある時間期間だけ、特定のデータ項目又はメタデータ項目の非揮発性ソリッドステートストレージ装置への書き込みを遅延させてもよく、データ及びメタデータの2k個のセクタが蓄積されるまでバッファは書き込む。いくつかの場合において、これは望まれない場合がある。1つの例はストレージシステムであり、このストレージシステムはディスクバッキングストレージのためのキャッシュとしてフラッシュストレージを使用して、電源の障害又はシステムのクラッシュなどの予定外の中断の間、キャッシュ状態を損傷を受けていない状態に維持する必要がある。この場合において、フラッシュストレージ上に格納されるべきデータ及びメタデータに反映されるキャッシュの状態の変更は、キャッシュの状態の変更を開始したストレージシステムの読み出し又は書き込み動作の完了を確認する前に、フラッシュストレージに直ちに記録される必要がある。
いくつかの非揮発性ソリッドステートストレージ装置は、電力保護されたRAM書き込みバッファを含む。このバッファは、フラッシュ装置が、データをフラッシュストレージに実際に書き込むこと無く、書き込み要求を迅速に完了することを可能にする。電力保護されたRAM書き込みバッファを制御している非揮発性ソリッドステートストレージ装置におけるロジックは、バッファがフラッシュストレージにいつ書き込まれる(フラッシュされる)かを制御するポリシーを有する。通常、前の書き込みの連続的に次のものでない書き込み要求が受信されるとき、又はさもなければ、現在バッファされた書き込みの近くのアドレスに書き込まない書き込み要求が受信されるとき、バッファはフラッシュされる。バッファがフラッシュされるが消去ブロック全体よりも少なく含む場合、上述の性能の利点は失われる場合がある。
いくつかの実施形態において、2k個のセクタの部分的に充填された領域がフラッシュストレージに記録される必要があり且つフラッシュストレージ装置が電力保護されたRAM書き込みバッファを含む場合、更なる技術が用いられる。例えば、部分的に充填された領域の全体は、非揮発性ソリッドステートストレージ装置に書き込まれてもよい。書き込みは、完全に充填された領域のために通常使用され得るアドレスにおいて開始してもよい。部分的に充填された領域が充填されると、後続の記録は、部分的に充填された領域の全体を非揮発性ソリッドステートストレージ装置に書き込むことを継続する。後続の書き込みの各々は、領域全体が完全に充填されることがないとしても、完全に充填された領域のために通常使用され得る次のアドレスにおいて開始してもよい。このことは、部分的に充填された領域の先頭のセクタを上書きすることをもたらすが、互換性のある電力保護されたバッファフラッシュポリシーを有する非揮発性ソリッドステートストレージ装置は、消去ブロック全体が書き込まれるまで、それらのバッファをフラッシュすることはない。
いくつかの実施形態において、部分的に充填された領域の新たに変更されたセクタのみは、非揮発性ソリッドステートストレージ装置に書き込まれる。それらは、あたかも領域全体が書き込まれるかのように、同一のアドレスに書き込まれる。このことは、高々、最後の書き込みの最後のセクタのみにおいて上書きをもたらすが、互換性を有する電力保護されたバッファフラッシュポリシーを有する非揮発性ソリッドステートストレージ装置は、消去ブロック全体が書き込まれるまでそれらのバッファをフラッシュすることはない。
他の実施形態において、粗粒の技術は永続性を提供するために用いられてもよい。非揮発性ソリッドステートストレージ装置上の周知技術のセクタは、(例えば、電源の喪失による)ストレージ装置の制御されないシャットダウンを表示する「不正なシャットダウン」の表示を含むように選択されてもよい。不正なシャットダウンの表示は、単一のビットと同じように小さくてもよい。ストレージ装置が初期化するとき、不正なシャットダウンの表示は、その収容しているセクタを同期的に書き込むことによって、真値の状態に持続的に設定される。規則的なシャットダウンの間、非揮発性ソリッドステートストレージ装置へのI/Oは休止される。ひとたび非揮発性ソリッドステートストレージ装置への全ての未処理のI/Oが完了すると、不正なシャットダウンの表示は偽値に設定される。予定外の障害によってストレージ装置が予期せずシャットダウンした場合、不正なシャットダウンの表示は真の状態になり得る。非揮発性ソリッドステートストレージ装置の内容が信用できるかを判別するために、不正なシャットダウンの表示が用いられてもよい。偽値は、非揮発性ソリッドステートストレージ装置の内容が信用できることを示す。真値は、非揮発性ソリッドステートストレージ装置の内容が潜在的に整合性を有さず従って無視されるべきものであることを示す。
整数個の消去ブロックのみへの書き込みの技術はまた、多くの他のアプリケーションにおいて利点を有することが可能である。一例は、非揮発性ソリッドステートストレージ装置が循環ログとして使用されるときである。図4は、循環ログとして利用される非揮発性ソリッドステートメモリ装置に提示される書き込み要求を処理して、ストレージリソースを利用するための効果的で予測可能な処理を可能にする、処理400を示すフローチャートである。本発明の種々の実施形態によれば、処理400における1つ又は複数の動作は、図2におけるコントローラ210などの種々のシステム構成要素によって実施可能である。受信動作410は書き込み要求を受信して、データを非揮発性ソリッドステートストレージ装置(例えばフラッシュドライブ)に書き込む。決定動作420は、データをストレージ装置に書き込むために必要なセクタの数を決定する。例えば、セクタの数は、データサイズをセクタのサイズで除算して得られる結果を最も近い整数に切り上げることによって決定可能である。
いくつかの実施形態において、複数の書き込みブロックのセクタは、非揮発性ソリッドステートストレージ装置の消去ブロックのサイズの整数倍に対応するサイズに、(例えばセクタマネージャ又はコントローラによって)論理的に分割されている。循環ログと関連するセクタは、ターゲッティング動作430が、各連続的な書き込み動作の対象をストレージ装置上の次の連続的なセクタ範囲に向けるように、順序づけ可能である。ひとたび装置の終端に達すると、ターゲッティング動作430は再び、セクタの先頭から開始することができる。例えば、wが2kであるとき、セクタ0…(w−1)がまず書き込まれ、続いてセクタw…(2w−1)が書き込まれ、次いでセクタ2w…(3w−1)が書き込まれ、ドライブの論理的終端に到達するまで行われる。その時点で、ターゲッティング動作430は一周して元に戻り、書き込み動作の対象を書き込みブロック0…(w−1)に向ける。
ひとたび(複数の)セクタが決定されると、割り当て動作440は、次の連続的な(複数の)セクタに現在格納されているデータエントリを書き出して、関連したセルの状態を無効に変更して、データが書き込まれることを可能にするようにセルを割り当てる。次いで、書き込み動作450は、書き込み要求からのデータを(複数の)セクタに書き込む。
ひとたび非揮発性ソリッドステートストレージ装置が満杯になると、循環ログは周回して論理セクタの先頭に至る。この時点で、ログにおける古いメタデータエントリ及びデータエントリは、それらが割り当て動作440を用いて上書きされる前に、消去される必要がある(なぜならば、それらをまず消去しなければ、ソリッドステート装置が、現在使用されている場所への書き込みを許さないためである)。用語「ページ置換ポリシー」は、これらの古いログエントリをクリーニングするためのポリシー又はステラテジーを参照するために用いられる。CLOCKなどのいくつかの周知のページ置換ポリシーは、古いメタデータエントリ及びデータエントリのサブセットを保存してもよい。先入れ先出し(FIFO)などの他のページ置換ポリシーは、全てのエントリを事前に追い出す(エビクトする)。いくつかの実施形態は、図5においてより詳細に説明するようにページ置換ポリシーに基づいて、ログクリーニング動作を適応的に発行する。
いくつかの実施形態は、以下に図5を参照して説明するように、ページ置換ポリシーに基づいてログクリーニング動作を発行してもよい。図5は、ページ置換ポリシーの種類に基づいて非揮発性ソリッドステートメモリ装置を動作させる処理500を示すフローチャートである。ページ置換ポリシーの種類に依存して、古いエントリは、それらが追い出される前に読み出される必要がある場合がある。処理500における動作は、非揮発性ソリッドステートメモリ装置内のコントローラ、又はメモリ装置若しくはストレージシステムと関連するプロセッサによって、実行されてもよい。ページ置換決定動作510は、ストレージシステムのページ置換ポリシーを決定する。次いで、判別動作520は、ページ置換ポリシーの種類に基づいて、ページ置換ポリシーが(全てのデータを追い出すこととは対照的に)データを保存するか、を判別する。
ページ置換ポリシーが古いメタデータエントリ及びデータエントリのサブセットを保存してもよいものであるとき、判別動作520は読み出し動作530に分岐する。読み出し動作530は、古いエントリをメモリ(例えば図2のDRAM230)に読み出して、ページ置換ポリシーに照らしてそれらを評価する。評価動作540は、メモリに読み出された古いエントリが保存されるべきであるかを判別する。いくつかの実施形態において、読み出し動作530は、古いエントリを、それらが処理のために必要とされる前に、フラッシュストレージ装置からメモリに読み出すことができる。これらのエントリは、いくつかの実施形態において、事前に読み出されることが可能である。ここで、ログは連続的に書き込まれ、従ってこれらのエントリを含んでいるログブロックは、ページ置換ポリシーに照らしてエントリが評価される後まで、書き込まれることとはならない。フラッシュストレージ装置に対して発行される事前読み出し動作の数は、システム管理者又はインテリジェントマネジメントソフトウェアによって、動的に制御可能である。
ページ置換ポリシーが古いメタデータエントリ及びデータエントリを保存しない(すなわち、全てのエントリを追い出す)ものである場合、判別動作520は、追い出し動作550に分岐する。追い出し動作550は、データを読み出すことなく、古いデータエントリを自動的に追い出す。その結果、全てのログクリーニング読み出し動作は、それらが不要であるために、除外される。古いエントリの評価に代えて、ページ置換ポリシーは、メモリ内のデータ構造から古いエントリを追い出す。これらの読み出し動作を除外することによって、フラッシュストレージ装置の性能は、不要な動作を回避することによって改善される。
いくつかの実施形態において、非揮発性ソリッドステートメモリ装置へ/からの書き込み/読み出し動作は、待ち行列に入れられる。メモリ装置の利用率は、待ち行列の特性(例えば、長さ、待ち行列の長さの変化の速度)の関数として、推定可能である。例えばメモリ装置がキャッシュとして使用されており且つ利用率が過度に高い場合、読み出し又は書き込み動作を「制限する」と呼ばれる処理である、キャッシュをバイパスすることは、利点を有する場合がある。図6は、非揮発性ソリッドステートメモリ装置と関連する書き込み待ち行列からの書き込み要求及び/又は読み出し要求をリダイレクトする(制限する)処理600を示すフローチャートである。処理600と関連する1つ又は複数の動作は、プロセッサ、ストレージオペレーティングシステム、FTL、又は他のハードウェア構成要素によって、実行されてもよい。複数の書き込み動作が非揮発性ソリッドステートストレージ装置への待ち行列に入れられるとき、ストレージ装置の利用率は、監視動作610によって実行される書き込み(又は読み出し)待ち行列の長さの観察又は監視によって、推定されてもよい。
推定動作620は、非揮発性ソリッドステートメモリ装置の利用率の推定値を生成する。推定値は、監視動作610によって測定される書き込み待ち行列の長さに、少なくとも部分的に基づいてもよい。例えば、書き込みバッファの有限プールがほぼ空である(すなわち待ち行列の長さが長い)場合、非揮発性ソリッドステートメモリ装置はほぼ100%の利用率で動作していると推定され得る。書き込みバッファの有限プールがほぼ満杯である(すなわち待ち行列の長さが短い)場合、非揮発性ソリッドステートメモリ装置はほぼ0%の利用率で動作していると推測され得る。ほぼ100%の利用率で動作しているとき、新たに提示されたI/O要求は、待ち行列においてそれに先行しているI/Oの完了を待つことによって生じる待ち行列遅延によって、長い応答時間が認められることとなる。
ひとたび推定値が生成されると、第1の閾値判断動作630は、利用率の推定値が第1の閾値を超えるかを判別する。超えない場合、判断動作630は監視動作610に分岐して戻り、書き込み待ち行列の長さの監視を継続する。第1の閾値を超えていると判断動作630が判別した場合、動作630は、利用率の推定値が第2の閾値を超えるかを判別する第2の閾値判断動作640に分岐する。第2の閾値を超えない場合、判断動作640は書き込み制限動作650に分岐する。第1及び第2の閾値の両方は、監視されるシステム実行に基づいて、システム管理者によって、ストレージオペレーティングシステムによって、又はストレージシステムと関連する他の構成要素若しくはサブシステムによって、適応的に設定可能である。
書き込み制限動作650は、第2のストレージ装置への書き込み待ち行列内の書き込み要求(例えば、読み出し失敗から生じるものなどの非必須の書き込み)をリダイレクト(制限)する。例えば、あるバッキングストアのためのキャッシュとしてフラッシュストレージ装置を使用するストレージシステムに対して、又はいくつかの他のバッキングストア及びフラッシュストレージの両方においてデータが利用可能であるある他の編成に対して、バッキングストアのI/O容量全体(スループット)は、フラッシュストレージ装置のI/O容量全体を超えてもよい。バッキングストアは少なくとも、フラッシュストレージ装置のI/O容量に加えて、いくらかのI/O容量を提供する。I/O要求がフラッシュ装置のI/O容量を超える(すなわち、I/O要求がフラッシュストレージ装置の100%の利用率を超える)場合、ストレージシステムは、フラッシュストレージ装置からの負荷を制限することによって、また必要に応じてバッキングストレージを使用してI/O要求を満たすことによって、システムの性能全体を改善できる。
特に、非揮発性ソリッドステート装置(例えばフラッシュ)を使用するキャッシュストレージシステムに関して、システムは、ストレージ装置への書き込み待ち行列のサイズがある閾値を超えるときにキャッシュストレージ装置への非必須の書き込みを放棄することによって、負荷を制限することを選択してもよい。非必須の書き込みの例は、キャッシュにおける読み出し失敗かキャッシュへの書き込みのいずれかの結果としてキャッシュストレージ装置に新たなデータを入力する書き込みである。キャッシュに既に入力されたある場所への書き込みの場合、データがキャッシュストレージ装置に書き込まれない場合があるが、古いキャッシュエントリを無効化するメタデータはなおフラッシュストレージ装置に書き込まれる必要がある。しかしながら、このメタデータはデータよりも非常に小さく、そのため、正味の結果はそれでもやはり、フラッシュストレージ装置上のI/O負荷の減少を示す。キャッシュに入力されない書き込み要求は、データを直接バッキングストレージに書き込むことによって、操作される必要がある。キャッシュに入力されない読み出し失敗は、単に放棄されてもよい。
フラッシュストレージ装置への書き込み待ち行列のサイズがより大きな第2の閾値を超えると第2の閾値判断動作640が判別した場合、システムは、制限動作660を使用して、キャッシュストレージ装置からの(非必須の書き込みに加えて)非必須の読み出しを放棄することによって、更なる負荷を制限することを選択してもよい。非必須の読み出しの1つの例は、キャッシュの読み出しヒットを満たすためのフラッシュ読み出しである。読み出し要求はむしろ、要求されたデータがキャッシュに一意的に存在しない(例えば、キャッシュがライトスルーポリシー若しくはライトアラウンドポリシーを使用する、又はキャッシュがライトバックポリシーを使用するが要求されたデータがキャッシュにおいて利用可能であるのみとして印が付されていない)ならば、フラッシュストレージ装置よりはむしろ、バッキングストアから読み出すことによって操作されてもよい。その後、制限動作660は、書き込み待ち行列の長さが監視される監視動作610に分岐する。
書き込み要求の制限(リダイレクト)に加えて、本発明のいくつかの実施形態は、非必須の動作のためにキャッシュストレージをバイパスすることができる。コンピュータストレージシステムにおいて、ストレージキャッシュは頻繁に、バッキングストアよりも短いサービス時間を有するが、より低い全I/O容量(最大スループット)を有する。そのようなシステムにおいて、ある高いレベルのI/O要求では、キャッシュにアクセスする応答時間は、キャッシュのための下層のストレージにアクセスする際の大きな待ち行列遅延によって、バッキングストアに直接的にアクセスする応答時間を超える。このレベルのI/O要求では、システムは、非必須の動作のためにキャッシュストレージをバイパスすることによって、より良い性能を提供することができる。例えば、キャッシュからの読み出しI/O要求を提供することよりもむしろ、システムはバッキングストアから直接的に来る読み出しI/O要求を提供することによって、より良い性能を提示しても良い。
従来のキャッシュバイパスメカニズムは、キャッシュストレージとバッキングストレージとのサービス時間及び最大スループットの間に非対称性が無いCPUキャッシュに注目している。そのようなキャッシュにおいて、キャッシュバイパスメカニズムの目的は、再び参照されることのないデータのアドレスを特定することと、そのようなデータをキャッシュすることを回避することである。なぜならば、そのようなデータをキャッシュすると、無用なデータでキャッシュを汚染してしまい、それによってキャッシュヒット率が低下してしまうからである。対照的に、本明細書において議論される種々の実施形態は、キャッシュストレージとバッキングストレージとのサービス時間及び最大スループットの間に非対称性があるときに適用される。それは、キャッシュされるべきではないデータをそのアドレスによって特定することを試みず、むしろ、キャッシュ上の全I/O要求に対するキャッシュストレージ装置の利用可能なI/O容量の現在の比率に基づいて、日和見的な決定を行う。
図7は、デバイス上の負荷が非常に高いためにバッキングストアからのデータを取得がより高速であるときに非揮発性ソリッドステートストレージ装置をバイパスすることによって、ホスト側の非揮発性ソリッドステート装置(例えばフラッシュ)キャッシュの性能を改善する処理700を示すフローチャートである。処理700と関連する1つ又は複数の動作は、プロセッサ、ストレージオペレーティングシステム、又はバイパスロジックによって実行されても良い。いくつかの実施形態において、バイパスロジックは、キャッシュロジックをストレージ装置のI/O応答時間の直接の測定に結びつけることを必要としない;それはキャッシュアルゴリズムの中で自己完結的である。
図7に示すように、アクセス推定動作710は、現在のレベルのI/O要求が与えられたキャッシュにアクセスするための期待応答時間を推定する。アクセス推定動作は、予め決定されたスケジュール通りに、及び/又は1つ又は複数のイベントの検出に応じて、継続的且つ周期的に実行可能である。バイパス推定動作720は、キャッシュをバイパスしてバッキングストアに直接的にアクセスするための期待応答時間を推定する。これらの値を推定するための技術は後述される。キャッシュにアクセスするための期待応答時間が、バッキングストアに直接的にアクセスするための期待応答時間よりも小さいかこれに等しい、と比較動作730が判別した場合、比較動作730は、キャッシュがアクセスされるキャッシュアクセス動作750に分岐する。キャッシュにアクセスするための期待応答時間が、バッキングストアに直接的にアクセスするための期待応答時間よりも大きい、と比較動作730が判別した場合、比較動作730は、キャッシュアクセスが必須であるかを判別する判別動作760に分岐する。
キャッシュアクセスはキャッシュの正しい動作に必須である場合があり、この場合それはキャッシュをバイパスしない。必須の動作の一例は、データが上書きされるときのキャッシュにおける既存のデータの無効化である。必須の動作のもう1つの例は、キャッシュがデータの現在のコピーのみを含むときのライトバックキャッシュからのデータの読み出しである。非必須の動作の一例は、データが書き込まれるときのキャッシュにおけるデータの挿入である。非必須の動作のもう1つの例は、データの現在のコピーがバッキングストレージに存在するときのライトバックキャッシュ又はライトスルーキャッシュのいずれかからのデータの読み出しである。キャッシュアクセスが必須ではない場合、判別動作760は、システムがキャッシュをバイパスしてバッキングストアに直接的にアクセスするバイパス動作770に分岐する。読み出し動作及び書き込み動作の両方に対して、キャッシュアクセスが必須である場合、判別動作760は、キャッシュがアクセスされるキャッシュアクセス動作750に分岐する。
種々の実施形態において、キャッシュストレージ及びバッキングストレージのための期待応答時間は、モデルへの入力としてキャッシュロジックによって行われる測定を用いる待ち行列理論に基づいたモデルを用いて、推定されてもよい。例えば、キャッシュロジックは、キャッシュ及びバッキングストアのための平均応答時間、並びに、現在及び平均の待ち行列長さの測定結果を維持してもよい。測定された平均応答時間tr及び測定された平均待ち行列長さNが与えられると、我々はリトルの法則を使用して、平均サービス時間tsを以下のように表す:
ts=tr/N
ts=tr/N
期待される瞬間応答時間triはこの場合、単に、現在の瞬間待ち行列長さNiと平均サービス時間tsとの積である:
tri=Nits
tri=Nits
キャッシュロジックはこれらの期待応答時間を計算して、動作がキャッシュにとって非必須であり且つバッキングストアに対する期待応答時間がキャッシュストレージの期待応答時間よりも小さい場合に、キャッシュをバイパスするようにI/Oに命令してもよい。
いくつかの実施形態において、期待応答時間は、完全な統計量よりもむしろ、キャッシュストレージ及び/又はバッキングストレージに対する応答時間のサンプリングの測定と共にモデルを用いて、推定されてもよい。例えば、キャッシュストア上の全ての動作を測定することよりもむしろ、キャッシュロジックは、書き込み動作のみを測定してもよい。これにより、動作の一部のみが性能測定コードのオーバーヘッドコストを招くために、バイパスアルゴリズムのCPUオーバーヘッドコストが低減される。
他の実施形態において、期待応答時間は、定量的に推定されるよりもむしろ、モデルとキャッシュストレージ及び/又はバッキングストレージに対する応答時間のサンプリングの測定値とを用いて、定性的に推定されてもよい。動作のサンプリングされるサブセットの現在の瞬間待ち行列長さが大きいとき(すなわち、多くの未処理のサンプリングされた動作があるとき)、期待応答時間は大きい。キャッシュストレージの期待応答時間が大きく、且つ、バッキングストアの期待応答時間が小さいとき、キャッシュロジックは、動作がキャッシュにとって非必須である場合に、キャッシュをバイパスするようにI/Oに命令してもよい。
キャッシュストレージに対する期待応答時間は、上述の複数の方法のうちの1つを用いて推定されてもよいが、バッキングストレージに対する期待応答時間は、代表的なI/Oワークロードを用いて実験室において行われた性能測定に基づいている定数として推定されてもよい。
キャッシュヒット比率に対するキャッシュバイパスの影響は、どの種類の非必須の動作をバイパスさせるかを優先的に選択することによって、加減されてもよい。キャッシュストレージの期待応答時間がバッキングストアの期待応答時間に近づくと、バイパスロジックはまず、新たに書き込まれるデータのキャッシュへの挿入などの比較的に望ましくない動作をバイパスさせることを選択するが、キャッシュからのリードヒットを提供するなどのより望ましい動作をバイパスさせない。キャッシュストレージの期待応答時間がバッキングストアの期待応答時間を超えるとき、バイパスロジックは、全ての非必須の動作をバイパスさせて、キャッシュの正しい動作のために必須である動作のみは残す。
種々の実施形態において、キャッシュは、循環ログに付加しながら、キャッシュストレージ装置への全ての書き込みを管理する。それは、充填され次いでキャッシュストレージ装置上のログに同期的に書き込まれるべき空きバッファの固定サイズのプールを維持する。キャッシュストレージ装置にて進行中の書き込み動作の数は、プールのサイズからプールにおける空きバッファの現在の数を減算することによって推定可能であり、また上述のように、キャッシュストレージに対する応答時間を定性的に推定するために使用可能である。空きバッファの数が、(モデリングを介して又は実験的な測定を経て試行錯誤的に決定された)ある閾値よりも小さくなると、キャッシュロジックは、キャッシュにおける新たに書き込まれたデータの挿入と、キャッシュ読み出し失敗からのデータの挿入とをバイパスさせることを開始する。新たに書き込まれるデータが既にキャッシュにあるデータを上書きする場合、それはなお無効化に入る必要がある。空きバッファの数がより小さな第2の閾値よりも小さくなるとき、キャッシュがデータの最新のコピーのみを含まない限りは、キャッシュにおける新たに書き込まれるデータの挿入とキャッシュ読み出し失敗からのデータの挿入をバイパスすることを継続することに加えて、キャッシュロジックはキャッシュにおいてヒットする読み出し動作をバイパスすることを開始する。これらの実施形態の1つの利点は、それらが各I/O上の応答時間統計を集めることのオーバーヘッドを必要としないことであり、キャッシュ書き込みロギングコードに対してローカルなデータ構造のみにアクセスすることのソフトウェア構造的な利点があり、従って、キャッシュストレージとバッキングストレージとに対するデバイスドライバなどの、キャッシュソフトウェアモジュールと他の外部モジュールとの間を接続することを回避することができる。
本明細書において紹介される技術は、特定目的ハードウェア(例えば回路)として、若しくはソフトウェア及び/又はファームウェアを用いて適切にプログラムされたプログラム可能回路として、又は特定目的及びプログラム可能回路の組み合わせとして、具現化可能である。ここで、実施形態は、そこに命令が格納されている機械読み出し可能な媒体を含んでもよく、この命令はコンピュータ(又は他の電子装置)をプログラムして処理を実行するために使用されることができる。機械読み出し可能な媒体は、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク読み出し専用メモリ(CD−ROM)、及び光磁気ディスク、ROM、ランダムアクセスメモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、電子的消去可能プログラム可能読み出し専用メモリ(EEPROM)、磁気カード又は光カード、フラッシュメモリ、又は電子的命令を格納することに適合する他の種類のメディア/機械読み出し可能な媒体を備えてもよいが、これらに限定されない。
本明細書において、「いくつかの実施形態において」、「種々の実施形態によれば」、「示される実施形態において」、「他の実施形態において」などの語句は一般的に、当該語句の後に続く特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれることを意味し、また本発明の1つより多くの実施形態に含まれてもよいことを意味する。また、そのような語句は必ずしも同一の実施形態を全て参照するものではない。
本発明の1つ又は複数の実施形態の詳細な説明が上に与えられたが、種々の置換、変更、及び均等は、本発明の精神から逸脱することなく、当業者に明白である。例えば、上述の実施形態は特定の特徴について言及しているが、本発明の範囲はまた、複数の特徴の異なる組み合わせを有する実施形態と、説明された特徴の全て有するとは限らない実施形態を含む。従って、本発明の範囲は、特許請求の範囲に入るあらゆる置換、変更、及び変形、並びにそれらの全ての均等を包含することが意図されている。従って、明細書の記載は本発明の範囲を限定するものとして理解されるべきではなく、本発明の範囲は添付の特許請求の範囲によって定義される。
Claims (24)
- 処理システムにおいて、
非揮発性ソリッドステートストレージ装置に書き込まれるべきデータを特定するステップであって、前記非揮発性ソリッドステートストレージ装置は複数の消去ブロックを含み、各消去ブロックは複数の書き込みセクタを含み、前記非揮発性ソリッドステートストレージ装置は論理セクタアドレスを前記非揮発性ソリッドステートストレージ装置における物理アドレスにマップする関連した変換層を有する、ステップと、
データを格納するための循環ログとして前記非揮発性ソリッドステートストレージ装置を使用するステップであって、当該ステップは、書き込みユニット単位で、データを前記非揮発性ソリッドステートストレージ装置に書き込むことを含み、当該書き込みユニットのサイズは前記非揮発性ソリッドステートストレージ装置における消去ブロックのサイズの整数倍である、ステップと、
を含む方法。 - 前記非揮発性ソリッドステートストレージ装置は、バッキングストアのためのキャッシュとして動作され、
前記方法は、
ストレージ設備へのアクセスが要求される状態であって、当該アクセスは前記キャッシュへのアクセスによって果たされることが可能である、状態に応答して、
前記非揮発性ソリッドステートストレージ装置にアクセスするための第1の期待応答時間を推定して、
前記バッキングストアにアクセスするための第2の期待応答時間を推定して、
第2の期待応答時間が第1の期待応答時間よりも少ないとき、前記バッキングストアにアクセスして前記要求を満たすことによって、
前記アクセスを指示すべき対象のストレージ設備を判別するステップを更に含む、
請求項1記載の方法。 - 前記非揮発性ソリッドステートストレージ装置において、書き込まれるべきデータを含む複数の書き込み動作を受信するステップと、
前記複数の書き込み動作の対象を、前記非揮発性ソリッドステートストレージ装置上の連続的な書き込みセクタに向けるステップと、
を更に含む、請求項1記載の方法。 - バッファに書き込まれるべきデータを、前記バッファが書き込みユニット分のデータを含むまで格納するステップと、
前記書き込みユニット分のデータを、前記バッファから前記非揮発性ソリッドステートストレージ装置に書き込むステップと、
を更に含む、請求項1記載の方法。 - 前記データを前記非揮発性ソリッドステートストレージ装置に書き込むことは、書き込みユニットに書き込まれるデータ内のデータに関するメタデータを散在させることを含む、
請求項1記載の方法。 - 前記非揮発性ソリッドステートストレージ装置の消去ブロックのサイズを推定するステップと、
書き込みユニットのサイズを、消去ブロックサイズの推定値の整数倍に設定するステップと、
を更に含む、請求項1記載の方法。 - プロセッサと、
前記プロセッサに接続されたメモリと、
前記プロセッサに接続された非揮発性ソリッドステートストレージ装置と、を備え、
前記非揮発性ソリッドステートストレージ装置は、
前記非揮発性ソリッドステートストレージ装置の複数のセルを、前記非揮発性ソリッドステートストレージ装置の消去ブロックのサイズの整数倍に対応するサイズを有するセクタに、論理的にグループ化するセクタマネージャと、
前記プロセッサから書き込み要求を受信して前記非揮発性ソリッドステートストレージ装置のセクタを決定して、前記書き込み要求と関連するデータを前記セクタに書き込む前に、書き出し、無効化し、割り当てるコントローラと、を備える、
処理システム。 - 前記非揮発性ソリッドステートストレージ装置は、前記書き込み要求を処理する複数のチャンネルを備え、
前記ストレージシステムは、前記書き込み要求を待ち行列に入れる複数のバッファを更に備える、
請求項7記載の処理システム。 - 前記コントローラによって決定された前記セクタは、前記コントローラによって書き込まれる前のセクタに連続的に続くセクタである、
請求項7記載の処理システム。 - 前記非揮発性ソリッドステートストレージ装置は、古いメタデータエントリ及び古いデータエントリを追い出し且つ前記書き込み要求と関連するデータのためのスペースを作るページ置換ポリシーを用いるログクリーニング処理を有する管理モジュールを備える、
請求項7記載の処理システム。 - 前記管理モジュールは、前記ページ置換ポリシーが古いメタデータエントリ及び古いデータエントリのサブセットを保存するときに古いデータエントリが処理のために必要とされる前に、前記非揮発性ソリッドステートストレージ装置から前記メモリに、古いデータエントリを自動的に読み出す、
請求項10記載の処理システム。 - 前記管理モジュールは、前記ページ置換ポリシーがいかなる古いデータエントリも保存することがない場合、前記非揮発性ソリッドステートストレージ装置からの読み出しを回避する、
請求項10記載の処理システム。 - 前記コントローラは、クライアントページアドレスを内部ページアドレスにマップするフラッシュ変換層を備える、
請求項7記載の処理システム。 - 前記非揮発性ソリッドステートストレージ装置はNAND型フラッシュストレージ装置である、
請求項7記載の処理システム。 - 非揮発性ソリッドステートストレージ装置と、
コントローラと、を備え、
前記非揮発性ソリッドステートストレージ装置は、複数のセルを、前記非揮発性ソリッドステートストレージ装置の消去ブロックのサイズの整数倍に対応するサイズを有するセクタに、論理的にグループ化し、
前記コントローラは、前記非揮発性ソリッドステートストレージ装置の連続的なセクタからデータエントリを書き出し、前記セクタを実質的に同時に無効化して且つ割り当てる、
システム。 - メタデータは、前記非揮発性ソリッドステートストレージ装置の前記セクタにおける前記データエントリ内に散在される、
請求項15記載のシステム。 - 前記メタデータは、前記データエントリの先頭に格納される、
請求項16記載のシステム。 - 前記コントローラは、前記非揮発性ソリッドステートストレージ装置の連続的なセクタを対象にすることによって、連続的な書き込み動作を操作する、
請求項15記載のシステム。 - 前記連続的なセクタは、物理的に隣接したセクタである、
請求項15記載のシステム。 - セクタを有する非揮発性ソリッドステートストレージ装置の書き込み待ち行列を監視するステップであって、前記セクタは前記非揮発性ソリッドステートストレージ装置の消去ブロックのサイズの整数倍に対応するサイズを有する、ステップと、
プロセッサを使用して、前記書き込み待ち行列に基づいて前記非揮発性ソリッドステートストレージ装置の利用率の推定値を生成するステップと、
前記利用率の推定値が第1の利用率閾値を超えるかを判別するステップと、
前記利用率の推定値が前記利用率閾値を超えると判別したとき、前記書き込み待ち行列内の書き込み要求を第2のストレージ装置に制限するステップと、
を含む、方法。 - 前記第2のストレージ装置に制限された書き込み要求は、非必須の書き込みを含む、
請求項20記載の方法。 - 前記非必須の書き込みは、読み出し失敗から生じる書き込み要求を含む、
請求項21記載の方法。 - 前記利用率の推定値が第2の利用率閾値を超えるかを判別するステップと、
前記非揮発性ソリッドステートストレージ装置からの非必須の読み出しを放棄するステップと、
を更に備える、請求項20記載の方法。 - 前記非必須の読み出しはフラッシュ読み出しを含み、キャッシュ読み出しヒットを満たす、
請求項23記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/477,966 | 2012-05-22 | ||
US13/477,966 US9645917B2 (en) | 2012-05-22 | 2012-05-22 | Specializing I/O access patterns for flash storage |
PCT/US2013/042289 WO2013177320A1 (en) | 2012-05-22 | 2013-05-22 | Specializing i/o access patterns for flash storage |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015518987A true JP2015518987A (ja) | 2015-07-06 |
Family
ID=49622487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015514161A Pending JP2015518987A (ja) | 2012-05-22 | 2013-05-22 | フラッシュストレージのためのi/oアクセスパターンの特殊化 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9645917B2 (ja) |
JP (1) | JP2015518987A (ja) |
CN (1) | CN104487952A (ja) |
WO (1) | WO2013177320A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017151988A (ja) * | 2016-02-24 | 2017-08-31 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 大容量格納装置、システム、及び方法 |
JP2018516410A (ja) * | 2015-12-17 | 2018-06-21 | ▲騰▼▲訊▼科技(深▲セン▼)有限公司 | ストレージデバイスを管理するための方法および装置 |
US10346205B2 (en) | 2016-01-11 | 2019-07-09 | Samsung Electronics Co., Ltd. | Method of sharing a multi-queue capable resource based on weight |
US11068180B2 (en) | 2018-12-13 | 2021-07-20 | Hitachi, Ltd. | System including non-volatile memory drive |
Families Citing this family (124)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9195598B2 (en) | 2012-06-08 | 2015-11-24 | International Business Machines Corporation | Synchronous and asynchronous discard scans based on the type of cache memory |
US9336150B2 (en) * | 2012-06-08 | 2016-05-10 | International Business Machines Corporation | Performing asynchronous discard scans with staging and destaging operations |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US9208099B2 (en) | 2012-08-08 | 2015-12-08 | International Business Machines Corporation | Adjustment of the number of task control blocks allocated for discard scans |
US8972645B2 (en) * | 2012-09-19 | 2015-03-03 | Hewlett-Packard Development Company, L.P. | Request sent to storage device based on moving average |
US9112649B2 (en) * | 2012-10-11 | 2015-08-18 | Qualcomm Incorporated | Method and apparatus for predicting signal characteristics for a nonlinear power amplifier |
CN103793181B (zh) * | 2012-11-05 | 2019-05-24 | 腾讯科技(深圳)有限公司 | 一种多层关联存储架构的数据同步方法及数据同步系统 |
US9176892B2 (en) | 2013-01-22 | 2015-11-03 | International Business Machines Corporation | Performing staging or destaging based on the number of waiting discard scans |
US9842053B2 (en) * | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9201799B2 (en) * | 2013-06-03 | 2015-12-01 | Samsung Electronics Co., Ltd. | Method for disk defrag handling in solid state drive caching environment |
US9330055B2 (en) * | 2013-06-04 | 2016-05-03 | International Business Machines Corporation | Modular architecture for extreme-scale distributed processing applications |
US9785545B2 (en) * | 2013-07-15 | 2017-10-10 | Cnex Labs, Inc. | Method and apparatus for providing dual memory access to non-volatile memory |
US9412455B2 (en) * | 2013-09-11 | 2016-08-09 | Kabushiki Kaisha Toshiba | Data write control device and data storage device |
CN105683930B (zh) * | 2013-10-29 | 2019-05-31 | 上海宝存信息科技有限公司 | 用于数据存储系统的动态缓存方法和系统 |
US9699032B2 (en) * | 2013-10-29 | 2017-07-04 | Virtual Instruments Corporation | Storage area network queue depth profiler |
US9239679B2 (en) | 2013-12-19 | 2016-01-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System for efficient caching of swap I/O and/or similar I/O pattern(s) |
US9998347B2 (en) | 2014-07-31 | 2018-06-12 | International Business Machines Corporation | Monitoring device usage |
US9537740B2 (en) | 2014-07-31 | 2017-01-03 | International Business Machines Corporation | Monitoring device usage |
US10169182B2 (en) | 2014-07-31 | 2019-01-01 | International Business Machines Corporation | Monitoring levels of utilization of device |
CN105446653B (zh) | 2014-08-27 | 2018-12-14 | 阿里巴巴集团控股有限公司 | 一种数据合并方法和设备 |
US9600205B1 (en) * | 2014-09-22 | 2017-03-21 | Western Digital Technologies, Inc. | Power aware power safe write buffer |
US10503445B2 (en) * | 2015-03-23 | 2019-12-10 | Netapp, Inc. | Data structure store and data management |
JP6360627B2 (ja) * | 2015-04-28 | 2018-07-18 | 株式会社日立製作所 | 不揮発性メモリの制御方法、制御装置、および半導体記憶装置 |
KR20170001235A (ko) * | 2015-06-26 | 2017-01-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US9678869B1 (en) * | 2015-09-29 | 2017-06-13 | EMC IP Holding Company LLC | Optimized read processing |
US10102103B2 (en) | 2015-11-11 | 2018-10-16 | International Business Machines Corporation | System resource component utilization |
US10515016B2 (en) * | 2015-12-03 | 2019-12-24 | Hitachi, Ltd. | Method and apparatus for caching in software-defined storage systems |
KR102259868B1 (ko) * | 2015-12-17 | 2021-06-01 | 에스케이텔레콤 주식회사 | 메모리제어장치 및 메모리제어장치의 동작 방법 |
US9779026B2 (en) | 2016-01-14 | 2017-10-03 | Seagate Technology Llc | Cache bypass utilizing a binary tree |
US20170249080A1 (en) * | 2016-02-29 | 2017-08-31 | Itu Business Development A/S | Solid-state storage device with programmable physical storage access |
US10534716B2 (en) * | 2016-07-13 | 2020-01-14 | Seagate Technology Llc | Limiting access operations in a data storage device |
CN107797756B (zh) * | 2016-09-05 | 2021-01-12 | 上海宝存信息科技有限公司 | 固态硬盘系统的优先写入方法以及使用该方法的装置 |
US10621096B2 (en) | 2016-09-08 | 2020-04-14 | Seagate Technology Llc | Read ahead management in a multi-stream workload |
US10078591B2 (en) * | 2016-09-27 | 2018-09-18 | International Business Machines Corporation | Data storage cache management |
KR20180044635A (ko) | 2016-10-24 | 2018-05-03 | 삼성전자주식회사 | 저장 시스템 및 그것의 동작 방법 |
US10261876B2 (en) * | 2016-11-08 | 2019-04-16 | Micron Technology, Inc. | Memory management |
CN113655952A (zh) | 2016-11-26 | 2021-11-16 | 华为技术有限公司 | 数据迁移的方法、主机、及固态存储设备 |
US10318175B2 (en) | 2017-03-07 | 2019-06-11 | Samsung Electronics Co., Ltd. | SSD with heterogeneous NVM types |
US10649876B2 (en) | 2017-04-20 | 2020-05-12 | International Business Machines Corporation | Maintaining manageable utilization in a system to prevent excessive queuing of system requests |
CN108932105A (zh) * | 2017-05-25 | 2018-12-04 | 中兴通讯股份有限公司 | 一种存储网关分级存储的配置方法及系统 |
US10248330B2 (en) * | 2017-05-30 | 2019-04-02 | Seagate Technology Llc | Data storage device with buffer tenure management |
US10359954B2 (en) | 2017-05-31 | 2019-07-23 | Alibaba Group Holding Limited | Method and system for implementing byte-alterable write cache |
US10884926B2 (en) | 2017-06-16 | 2021-01-05 | Alibaba Group Holding Limited | Method and system for distributed storage using client-side global persistent cache |
US10303241B2 (en) | 2017-06-19 | 2019-05-28 | Alibaba Group Holding Limited | System and method for fine-grained power control management in a high capacity computer cluster |
US10678443B2 (en) | 2017-07-06 | 2020-06-09 | Alibaba Group Holding Limited | Method and system for high-density converged storage via memory bus |
US10564856B2 (en) | 2017-07-06 | 2020-02-18 | Alibaba Group Holding Limited | Method and system for mitigating write amplification in a phase change memory-based storage device |
US10423508B2 (en) | 2017-08-11 | 2019-09-24 | Alibaba Group Holding Limited | Method and system for a high-priority read based on an in-place suspend/resume write |
US10303601B2 (en) | 2017-08-11 | 2019-05-28 | Alibaba Group Holding Limited | Method and system for rearranging a write operation in a shingled magnetic recording device |
US10496829B2 (en) | 2017-09-15 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for data destruction in a phase change memory-based storage device |
US10642522B2 (en) | 2017-09-15 | 2020-05-05 | Alibaba Group Holding Limited | Method and system for in-line deduplication in a storage drive based on a non-collision hash |
US10789011B2 (en) * | 2017-09-27 | 2020-09-29 | Alibaba Group Holding Limited | Performance enhancement of a storage device using an integrated controller-buffer |
US10503409B2 (en) | 2017-09-27 | 2019-12-10 | Alibaba Group Holding Limited | Low-latency lightweight distributed storage system |
US10860334B2 (en) | 2017-10-25 | 2020-12-08 | Alibaba Group Holding Limited | System and method for centralized boot storage in an access switch shared by multiple servers |
US10445190B2 (en) | 2017-11-08 | 2019-10-15 | Alibaba Group Holding Limited | Method and system for enhancing backup efficiency by bypassing encoding and decoding |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10891239B2 (en) | 2018-02-07 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for operating NAND flash physical space to extend memory capacity |
US10831404B2 (en) | 2018-02-08 | 2020-11-10 | Alibaba Group Holding Limited | Method and system for facilitating high-capacity shared memory using DIMM from retired servers |
US10402112B1 (en) | 2018-02-14 | 2019-09-03 | Alibaba Group Holding Limited | Method and system for chunk-wide data organization and placement with real-time calculation |
CN110389904A (zh) * | 2018-04-20 | 2019-10-29 | 北京忆恒创源科技有限公司 | 具有压缩的ftl表的存储设备 |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US10725941B2 (en) * | 2018-06-30 | 2020-07-28 | Western Digital Technologies, Inc. | Multi-device storage system with hosted services on peer storage devices |
KR102495539B1 (ko) * | 2018-07-16 | 2023-02-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
CN108984126A (zh) * | 2018-07-17 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种数据读取方法、系统、装置及计算机可读存储介质 |
US10871921B2 (en) | 2018-07-30 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for facilitating atomicity assurance on metadata and data bundled storage |
US10747673B2 (en) | 2018-08-02 | 2020-08-18 | Alibaba Group Holding Limited | System and method for facilitating cluster-level cache and memory space |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
CN110968253B (zh) * | 2018-09-29 | 2023-06-06 | 阿里巴巴集团控股有限公司 | 一种数据存储方法、装置及系统 |
CN110968528A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | 应用统一缓存架构为非易失存储介质组装数据 |
US10852948B2 (en) | 2018-10-19 | 2020-12-01 | Alibaba Group Holding | System and method for data organization in shingled magnetic recording drive |
US10795586B2 (en) | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
US10769018B2 (en) | 2018-12-04 | 2020-09-08 | Alibaba Group Holding Limited | System and method for handling uncorrectable data errors in high-capacity storage |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US10884654B2 (en) | 2018-12-31 | 2021-01-05 | Alibaba Group Holding Limited | System and method for quality of service assurance of multi-stream scenarios in a hard disk drive |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
WO2020155431A1 (en) * | 2019-01-31 | 2020-08-06 | Huawei Technologies Co., Ltd. | Method and apparatus for accessing caches in clustered storage systems |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
CN111722785A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 一种缓存更新方法和装置 |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
CN111857546A (zh) * | 2019-04-28 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、网络适配器和计算机程序产品 |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
KR20210006102A (ko) | 2019-07-08 | 2021-01-18 | 에스케이하이닉스 주식회사 | 데이터 입출력 속도에 따라 버퍼의 사용을 결정할 수 있는 메모리 시스템 및 그의 동작 방법 |
US10977181B2 (en) * | 2019-07-10 | 2021-04-13 | International Business Machines Corporation | Data placement in write cache architecture supporting read heat data separation |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11093404B2 (en) * | 2019-10-14 | 2021-08-17 | EMC IP Holding Company LLC | Efficient pre-fetching on a storage system |
US11042307B1 (en) | 2020-01-13 | 2021-06-22 | Alibaba Group Holding Limited | System and method for facilitating improved utilization of NAND flash based on page-wise operation |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US10923156B1 (en) | 2020-02-19 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive |
US10872622B1 (en) | 2020-02-19 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for deploying mixed storage products on a uniform storage infrastructure |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11144250B2 (en) | 2020-03-13 | 2021-10-12 | Alibaba Group Holding Limited | Method and system for facilitating a persistent memory-centric system |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11941287B2 (en) * | 2020-06-17 | 2024-03-26 | EMC IP Holding Company, LLC | System and method for near-instant unmapping and write-same in a log-structured storage cluster |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
CN112130769B (zh) * | 2020-09-18 | 2022-10-28 | 苏州浪潮智能科技有限公司 | 一种机械硬盘数据处理方法、装置、设备及介质 |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
CN112612424A (zh) * | 2020-12-29 | 2021-04-06 | 江苏国科微电子有限公司 | 一种NVMe提交队列控制装置及方法 |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11614880B2 (en) * | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11775216B2 (en) * | 2021-08-30 | 2023-10-03 | Micron Technology, Inc. | Media access operation command management using media buffers |
US11709631B2 (en) | 2021-08-30 | 2023-07-25 | Micron Technology, Inc. | Read-modify-write data consistency management |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7020758B2 (en) * | 2002-09-18 | 2006-03-28 | Ortera Inc. | Context sensitive storage management |
US7093101B2 (en) * | 2002-11-21 | 2006-08-15 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
EP1619583A4 (en) * | 2003-04-25 | 2008-12-24 | Panasonic Corp | DATA RECORDING DEVICE |
US7363420B2 (en) * | 2003-12-15 | 2008-04-22 | Nortel Networks Limited | Method and file structures for managing data on a flash disk |
US7634585B2 (en) * | 2005-11-04 | 2009-12-15 | Sandisk Corporation | In-line cache using nonvolatile memory between host and disk device |
JP4749255B2 (ja) * | 2006-07-03 | 2011-08-17 | 株式会社日立製作所 | 複数種類の記憶デバイスを備えたストレージシステムの制御装置 |
US7739470B1 (en) * | 2006-10-20 | 2010-06-15 | Emc Corporation | Limit algorithm using queue depth to control application performance |
US8683139B2 (en) * | 2006-10-31 | 2014-03-25 | Hewlett-Packard Development Company, L.P. | Cache and method for cache bypass functionality |
US9104599B2 (en) * | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
JP4498426B2 (ja) * | 2008-03-01 | 2010-07-07 | 株式会社東芝 | メモリシステム |
US8392687B2 (en) * | 2009-01-21 | 2013-03-05 | Micron Technology, Inc. | Solid state memory formatting |
KR101056560B1 (ko) * | 2009-02-11 | 2011-08-11 | (주)인디링스 | 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치 |
US8364924B2 (en) * | 2009-10-21 | 2013-01-29 | International Business Machines Corporation | Achieving a high throughput in a storage cache application using a flash solid state disk |
US8352685B2 (en) * | 2010-08-20 | 2013-01-08 | Apple Inc. | Combining write buffer with dynamically adjustable flush metrics |
US9467505B2 (en) * | 2010-08-27 | 2016-10-11 | Vmware, Inc. | Saturation detection and admission control for storage devices |
US8463991B2 (en) * | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
-
2012
- 2012-05-22 US US13/477,966 patent/US9645917B2/en active Active
-
2013
- 2013-05-22 JP JP2015514161A patent/JP2015518987A/ja active Pending
- 2013-05-22 CN CN201380038857.6A patent/CN104487952A/zh active Pending
- 2013-05-22 WO PCT/US2013/042289 patent/WO2013177320A1/en active Application Filing
-
2017
- 2017-03-13 US US15/457,814 patent/US20170185512A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018516410A (ja) * | 2015-12-17 | 2018-06-21 | ▲騰▼▲訊▼科技(深▲セン▼)有限公司 | ストレージデバイスを管理するための方法および装置 |
US10198180B2 (en) | 2015-12-17 | 2019-02-05 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for managing storage device |
US10346205B2 (en) | 2016-01-11 | 2019-07-09 | Samsung Electronics Co., Ltd. | Method of sharing a multi-queue capable resource based on weight |
JP2017151988A (ja) * | 2016-02-24 | 2017-08-31 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 大容量格納装置、システム、及び方法 |
US11048541B2 (en) | 2016-02-24 | 2021-06-29 | Samsung Electronics Co., Ltd. | VM-aware FTL design for SR-IOV NVMe SSD |
US11068180B2 (en) | 2018-12-13 | 2021-07-20 | Hitachi, Ltd. | System including non-volatile memory drive |
Also Published As
Publication number | Publication date |
---|---|
US9645917B2 (en) | 2017-05-09 |
WO2013177320A1 (en) | 2013-11-28 |
US20170185512A1 (en) | 2017-06-29 |
CN104487952A (zh) | 2015-04-01 |
US20130318283A1 (en) | 2013-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9645917B2 (en) | Specializing I/O access patterns for flash storage | |
US8645626B2 (en) | Hard disk drive with attached solid state drive cache | |
US9043542B2 (en) | Concurrent content management and wear optimization for a non-volatile solid-state cache | |
US10102117B2 (en) | Systems and methods for cache and storage device coordination | |
US9251052B2 (en) | Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer | |
US8321645B2 (en) | Mechanisms for moving data in a hybrid aggregate | |
US11347428B2 (en) | Solid state tier optimization using a content addressable caching layer | |
EP2510446B1 (en) | Extending ssd lifetime using hybrid storage | |
US8966184B2 (en) | Apparatus, system, and method for managing eviction of data | |
US11138124B2 (en) | Migrating data between block pools in a storage system | |
US8549222B1 (en) | Cache-based storage system architecture | |
US10019352B2 (en) | Systems and methods for adaptive reserve storage | |
EP2802991B1 (en) | Systems and methods for managing cache admission | |
US8930619B2 (en) | Method and apparatus for efficiently destaging sequential I/O streams | |
US9053038B2 (en) | Method and apparatus for efficient read cache operation | |
US20150012689A1 (en) | Systems and methods for persistent address space management | |
US10310980B2 (en) | Prefetch command optimization for tiered storage systems | |
US9471252B2 (en) | Use of flash cache to improve tiered migration performance | |
KR101456370B1 (ko) | 스토리지 관리 방법 및 장치 |