JP5999645B2 - ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法 - Google Patents

ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法 Download PDF

Info

Publication number
JP5999645B2
JP5999645B2 JP2012528882A JP2012528882A JP5999645B2 JP 5999645 B2 JP5999645 B2 JP 5999645B2 JP 2012528882 A JP2012528882 A JP 2012528882A JP 2012528882 A JP2012528882 A JP 2012528882A JP 5999645 B2 JP5999645 B2 JP 5999645B2
Authority
JP
Japan
Prior art keywords
data
storage device
storage
solid state
state storage
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.)
Expired - Fee Related
Application number
JP2012528882A
Other languages
English (en)
Other versions
JP2013504142A (ja
Inventor
フリン デイビッド
フリン デイビッド
ストラッサー ジョン
ストラッサー ジョン
タッチャー ジョナサン
タッチャー ジョナサン
アトキソン デイビッド
アトキソン デイビッド
ザッペ マイケル
ザッペ マイケル
アウネ ジョシュア
アウネ ジョシュア
ビー ヴィゴール ケヴィン
ビー ヴィゴール ケヴィン
Original Assignee
ロンギチュード エンタープライズ フラッシュ エスエイアールエル
ロンギチュード エンタープライズ フラッシュ エスエイアールエル
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ロンギチュード エンタープライズ フラッシュ エスエイアールエル, ロンギチュード エンタープライズ フラッシュ エスエイアールエル filed Critical ロンギチュード エンタープライズ フラッシュ エスエイアールエル
Publication of JP2013504142A publication Critical patent/JP2013504142A/ja
Application granted granted Critical
Publication of JP5999645B2 publication Critical patent/JP5999645B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、ソリッドステート記憶デバイス上でデータをキャッシングすることに関し、具体的には、キャッシュを管理し、グルーミング操作を行う用途のためにキャッシュおよびソリッドステート記憶デバイスに関するメタデータを維持することに関する。
キャッシュデバイスは、システム内においてデータがより迅速にアクセスされることを可能にするために使用される記憶デバイスである。キャッシュは、キャッシュ内のデータを使用する操作のための入力/出力(I/O)時間を縮小することにより、システム内の性能を著しく改善することができる。一般的に、キャッシュは、キャッシュデバイスより大きな記憶容量を有するがキャッシュデバイスよりI/O時間が遅い別の記憶デバイスの前に実装される。キャッシュの利点はよく理解されており、キャッシュは、CPU内のキャッシュからストレージエリアネットワーク(SAN)内のキャッシュに及ぶ、様々なコンテキストおよび規模で有利に実装されている。
米国特許出願公開第11/952,101号明細書 米国特許出願公開第11/952,091号明細書 米国特許出願公開第11/952,115号明細書
キャッシュの性質もまた、コンテキストに基づき変化し得、例えば、単一コンピュータ(デスクトップまたはラップトップ等)において、キャッシュは、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、または他のもの等の揮発性メモリ内に実装することができる。現在、キャッシュグルーミングは、他のメモリ管理操作から独立しているため、効率的ではない。
ソリッドステート記憶デバイスは、不揮発性補助記憶装置のための不揮発性キャッシュデバイスとして作動することができる。このソリッドステート記憶デバイスは、ソリッドステート記憶デバイスにより提示される論理空間を使用し、クライアントに対して透過的であり得る。いくつかの実施形態において、このソリッドステート記憶デバイスは、ソリッドステート記憶デバイスの物理的記憶サイズに関わらず、ソリッドステート記憶デバイスが補助記憶装置と同一のサイズである論理記憶空間をクライアントへ提示するように、補助記憶装置の物理的サイズと同一である論理的サイズをクライアントへ提示するように構成することができる。代替として、またはさらに、このソリッドステート記憶デバイスは、ソリッドステート記憶デバイスおよび補助記憶装置の両方の物理記憶容量を上回る論理アドレス空間をクライアントへ提示することができる。
ソリッドステート記憶デバイスは、ソリッドステート記憶デバイス上で行われるキャッシュ操作および記憶操作に関するメタデータを維持することができる。記憶メタデータは、ソリッドステート記憶デバイス上で行われる逐次的な記憶操作に関するメタデータ(例えば、デバイス上のクライアント論理アドレスと記憶ユニットとの間の関連性、記憶ログメタデータ等)、逐次的な記憶操作に関連する保全操作(例えば、記憶装置復旧、ガーベジコレクション、エラー訂正等)、記憶媒体の状態(例えば、磨耗率、信頼性、整合性等)等を含んでもよいが、それらに限定されない。記憶メタデータは、無効データを含む記憶ユニットと、有効データを含む記憶ユニットからとを区別するための有効性インジケータを含むことができる。記憶ユニットとは、ソリッドステート記憶デバイス上のあらゆるアドレス可能な記憶位置を指すことができる。
ソリッドステート記憶デバイスは、ソリッドステート記憶デバイスの記憶ユニット内のデータをキャッシュすることができる。キャッシュメタデータは、ソリッドステート記憶デバイス上に記憶されるキャッシュ、ソリッドステート記憶デバイス上で行われるキャッシュ操作(例えば、アクセスパターン等)、キャッシュ管理(例えば、キャッシュ排除および/またはキャッシュ保持ポリシー、キャッシュ属性、キャッシュ指令等)等に関するメタデータを含んでもよい。キャッシュメタデータは、破棄することができるデータを識別するための破棄可能性インジケータを含んでもよい。破棄可能なデータは、補助記憶装置上にバックアップされた(例えば、記憶された)キャッシュデータであり得る。
ソリッドステート記憶デバイスにより維持されるメタデータは、デバイス上にキャッシュされるデータ(例えば、ソリッドステート記憶デバイスの記憶ユニット内にキャッシュされるデータ)を表すことができる、キャッシュエントリを含むことができる。キャッシュエントリは、データがソリッドステート記憶デバイス上のどこに記憶されたかを識別する上で、(記憶クライアントの)論理アドレスと1つ以上の記憶位置(例えば、記憶ユニット)を関連付けることができ、キャッシュエントリは、クライアント論理アドレスおよびソリッドステート記憶デバイス記憶位置(例えば、記憶ユニット)間のインデックスまたはマッピングを提供することができる。いくつかの実施形態において、キャッシュエントリは、可変サイズを有することができ、したがってソリッドステート記憶デバイス上の記憶ユニットの一部、単一記憶ユニット、および/または多重記憶ユニットを参照することができる。例えば、第1のキャッシュエントリは、単一記憶ユニット上の第1のデータ量(例えば、単一記憶ユニットの一部上の256バイト)を含み得るのに対し、第2のキャッシュエントリは、多重記憶ユニット上の異なる第2のデータ量(例えば、複数の記憶ユニットまたは仮想記憶ユニット上の4キロバイト)を含み得る。
キャッシュエントリは、クライアント記憶要求に応答して高速かつ効率的にキャッシュエントリへアクセスすることを可能にすることができる論理アドレスによりインデックス付けされてもよい。キャッシュエントリは、ソリッドステート記憶デバイスの逐次的な記憶操作に、ならびにキャッシュに関するメタデータを含む、共有メタデータを記憶(および/または参照)するために使用することができる。例えば、ソリッドステート記憶デバイスのグルーマー(以下に記載される)は、記憶装置復旧および/または保全操作を効果的に行うためにキャッシュに関するメタデータにアクセスすることができる。同様に、ソリッドステート記憶デバイス上および/またはそれと併せて作動するキャッシュマネージャ(以下に記載される)は、キャッシュを効果的に管理するためにメタデータにアクセスすることができる(例えば、キャッシュ排除および/または保持に関連するキャッシュポリシーを決定する等)。いくつかの実施形態において、ソリッドステート記憶デバイスは、記憶クライアントにメタデータの一部を現し得る記憶インターフェース(または一般的に「インターフェース」)を提供することができる。このインターフェースを使用して、記憶クライアントは、ソリッドステート記憶デバイスを設定することができる(例えば、キャッシュ属性を設定する、キャッシュ指令、トリム(TRIM)コマンドを発行する等)。さらに、このインターフェースは、冗長アドレス変換層(例えば、フル64ビットアドレス空間内で)なしに、記憶クライアントがソリッドステート記憶デバイスと情報をやり取りすることを可能にするインターフェースを通して、「まばらな」または「細く供給された」論理アドレス空間を現すことができる。
いくつかの実施形態において、バックアップエンジンは、ソリッドステート記憶デバイス上にキャッシュされるデータを補助記憶装置へバックアップするように構成することができる。補助記憶装置上に記憶される場合、データと関連付けられる(例えば、キャッシュエントリおよび/または対応する記憶ユニットと関連付けられる)メタデータは、データが破棄可能であることを示すように更新されてもよい。バックアップエンジンは、ソリッドステート記憶デバイスの記憶ユニットを通して年代順に(最古から最新へ)繰り返し適用することができる。この走査は、ソリッドステート記憶デバイスにより維持される共有メタデータによって有効にすることができる(例えば、記憶ユニットの逆インデックスおよび/またはシーケンスインジケータ)。バックアップエンジンの動作は記憶メタデータによって情報を得ることができる、例えば、バックアップエンジンは、メタデータが無効であることを示す(例えば、データが、復旧操作、逐次書き込み、修正等に起因して異なる記憶位置へ移動された)キャッシュエントリ(および/または関連付けられた記憶ユニット)と関連付けられるデータを無視することができる。
いくつかの実施形態において、バックアップエンジンは、比較的に低い優先度で作動する(例えば、バックグラウンドプロセスまたは操作として)。バックアップエンジンは、必要に応じて、より高い優先度で作動するように設定されてもよい。例えば、メタデータは、ソリッドステート記憶デバイスの物理記憶容量、対象の占有量、最大占有量、および/または現在の占有量を示すことができる。現在の占有量が閾値を上回る(例えば、対象の占有量、最大占有量、または他の何らかの閾値を上回る)と、バックグラウンドエンジンは、より高い優先度で作動するように設定することができる。
記憶装置復旧および保全操作は、メタデータによって同様に情報を得ることができる。例えば、ソリッドステート記憶デバイスの記憶区分を復旧するように構成されるグルーマープロセスは、メタデータを使用して優先順位を付けることができる(例えば、現在の占有量が閾値を上回る場合、優先度を高める)。グルーマーは、キャッシュに関するメタデータにそのデータ復旧操作を行うときであってもアクセスしてもよい。例えば、このグルーマーは、メタデータに基づく復旧のための記憶区分を選択することができ、メタデータ等を使用して保持する(例えば、異なる記憶区分へ移動する)ために記憶区分内の記憶ユニットを選択することができる。
したがって、いくつかの実施形態において、ソリッドステート記憶デバイス上のデータをキャッシュするための方法は、ソリッドステート記憶デバイス上で行われるキャッシュ操作およびソリッドステート記憶デバイスの記憶操作に関するメタデータを維持すること、ソリッドステート記憶デバイスの記憶操作を管理するためにメタデータにアクセスすること、ならびにソリッドステート記憶デバイス上に記憶されるキャッシュを管理するためにメタデータにアクセスすることを含むことができる。キャッシュ操作に関するメタデータおよび記憶操作に関するメタデータは、共有データ構造内に記憶することができる。
メタデータは、補助記憶装置上に記憶されている記憶ユニットを識別する破棄可能性インジケータを含んでもよく、このインジケータは、復旧のための記憶区分を選択するために使用することができる。キャッシュ排除メタデータ(例えば、コールド、ホット、ウォーム等)は、復旧のための記憶区分を選択するため、および/または復旧のために選択された記憶区分内の記憶ユニットが保持されるべきであるかどうかを判定するために使用することができる。メタデータは、キャッシュエントリの論理アドレスと関連付けられてもよく、したがってデータに対応する記憶位置がソリッドステート記憶デバイス上で変化する時、キャッシュエントリと関連付けられたままであることができる。
キャッシュに関するメタデータ(例えば、共有キャッシュメタデータ)は、記憶区分の復旧、ガーベジコレクション、エラー管理、逐次的な記憶(例えば、ログベースの記憶操作)等のような、ソリッドステート記憶デバイスの逐次的な記憶操作を管理するために使用することができる。逐次的な記憶操作に関するメタデータ(例えば、共有記憶メタデータ)は、キャッシュを管理するために使用することができる。例えば、バックアップ、キャッシュ排除、占有量、キャッシュデータ移動等のようなキャッシュ操作は、共有される記憶メタデータによって情報を得ることができる。
メタデータは、複数のキャッシュエントリを含んでもよく、それぞれは、論理アドレスをキャッシュエントリのデータを含むソリッドステート記憶デバイス上の記憶ユニットと関連付ける。クライアント記憶要求は、キャッシュエントリを使用して対応することができる。特定の論理アドレスに対するキャッシュエントリがメタデータ内に存在する場合、対応するデータは、ソリッドステート記憶デバイス上で利用可能であり得、そうでなければ、データは利用不可であり得る(そしてキャッシュミスが起こる可能性がある)。クライアント記憶要求は、キャッシュエントリが論理アドレスにより(例えば、Bツリーデータ構造内において)インデックス付けされているため、迅速かつ効果的に対応することができる。メタデータは、ソリッドステート記憶デバイスの現在の占有量を判定するために使用されることができる。クライアントエントリは、キャッシュおよび/または記憶操作に応じて修正されてもよい。近似の論理アドレスが記憶される場合、対応するキャッシュエントリは、マージされ得、特定の論理アドレスを見つけるために検索されなければならないエントリ数を減らすることができる。同様に、論理アドレスが除去される場合、対応するキャッシュエントリは、分割してもよい(またはしなくてもよい)。キャッシュエントリは、可変サイズのものであってもよく、したがって、単一論理アドレス、論理アドレスの範囲、1組の論理アドレス等を含んでもよい。
本明細書を通じた特徴、利点、または類似する表現への参照は、本発明で実現することができる特徴および利点の全てが本発明のいかなる単一の実施形態内にあるべきまたはあることも暗示することはない。そうではなく、特徴および利点に言及する表現は、1つの実施形態に関して記載される特定の特徴、利点、または特質は本発明の少なくともいくつかの実施形態において含まれることを意味すると理解される。したがって、特徴および利点ならびに同様の表現の考察は、本明細書を通して、必須ではないが、同一の実施形態に言及し得る。
さらに、記載される本発明の特徴、利点、および特質は、任意の好適な方法で、1つ以上の実施形態に組み込まれてもよい。当業者は、本発明を特定の実施形態の1つ以上の特定の特徴または利点なしに実施することができることを認識するであろう。他の事例において、本発明のすべての実施形態において提示されない可能性がある追加の特徴および利点が、いくつかの実施形態において、認識され得る。
本発明のこれらの特徴および利点は、続く説明および付属の請求項からより十分に明白となり、または以下に定める本発明の実施により知ることができ得る。
本発明の利点が容易に理解されるように、上で簡潔に記載した本発明のより具体的な説明が、添付の図面に図示される具体的な実施形態を参照することにより提供される。これらの図面が本発明の典型的な実施形態のみを描写し、したがってその範囲を限定すると見なされるべきではないことを理解した上で、本発明は、添付の図面の使用を通じてさらに具体的かつに記載および説明される。
データをキャッシュするように構成されるシステムであるソリッドステート記憶デバイスの例示的実施形態を図示する略ブロック図である。 補助記憶装置により提供される物理空間と同一のサイズである論理記憶空間を提示するソリッドステート記憶デバイスを含むシステムの例示的実施形態を図示する略ブロック図である。 キャッシュ管理装置の実施形態を図示する略ブロック図である。 ファイルシステムと、キャッシュとして機能しているソリッドステート記憶デバイスと、および補助記憶装置として機能しているハードディスクドライブとの間の書き込み中における相互作用の例示的実施形態を図示する略ブロック図である。 ファイルシステムと、キャッシュとして機能しているソリッドステート記憶デバイスと、および補助記憶装置として機能しているハードディスクドライブとの間の読み込み中における相互作用の例示的実施形態を図示する略ブロック図である。 ソリッドステート記憶デバイスを構成するための方法の別の実施形態を図示する概略フローチャート図である。 ソリッドステート記憶デバイスにおける読み込みを処理するための方法の例示的実施形態を図示する概略フローチャート図である。 ソリッドステート記憶デバイスにおける書き込みを処理するための方法の例示的実施形態を図示する概略フローチャート図である。 ソリッドステート記憶デバイス内のユニット上で作動しているバックアップエンジンの例示的実施形態を図示している略ブロック図である。 ソリッドステート記憶デバイス内のユニット上で作動しているバックアップエンジンの例示的実施形態を図示している略ブロック図である。 ソリッドステート記憶デバイス内のユニットをグルーミングするための方法における例示的実施形態を図示する概略フローチャート図である。 共有メタデータを維持するための例示的データ構造の略ブロック図である。 ソリッドステート記憶デバイス上のデータをキャッシュするための方法の一実施形態のフロー図である。 ソリッドステート記憶デバイス上のデータをキャッシュするための方法の別の実施形態のフロー図である。 ソリッドステート記憶デバイス上のデータをキャッシュするための方法の別の実施形態のフロー図である。 ソリッドステート記憶デバイス上のデータをキャッシュするための方法の別の実施形態のフロー図である。 ソリッドステート記憶デバイス上のデータをキャッシュするための方法の別の実施形態のフロー図である。
本明細書内に記載される機能ユニットの多くは、それらの実装独立性をより詳細に強調する目的でモジュールと呼ばれている。例えば、モジュールは、カスタムVLSI回路もしくはゲートアレイ、または論理チップのような既製の半導体、トランジスタ、もしくは他の離散的構成要素を含むハードウェア回路として実装することができる。モジュールはまた、フィールドプログラマブルゲートアレイ、プログラム可能アレイ論理、プログラム可能論理回路等のようなプログラム可能なハードウェアデバイス内に実装されてもよい。
モジュールはまた、様々な種類のプロセッサによる実行のためのソフトフェア内に実装されてもよい。例えば、実行コードの特定されるモジュールは、例えばオブジェクト、手続き、または関数として編成することができるコンピュータ命令の1つ以上の物理または論理ブロックを含む。それにもかかわらず、特定されたモジュールの実行ファイルは、物理的にともに位置する必要はなく、論理的にともに結び付けられる場合、モジュールを含みモジュールのために定められた目的を達成する、異なる位置において記憶される全く異なる命令を含むことができる。
実際に、実行コードのモジュールは、単一命令または多くの命令であってもよく、ならびに数個の異なるコードセグメント、異なるプログラムの間、および数個ににわたるメモリデバイスに至るところに分散される可能性さえある。同様に、操作可能なデータは、モジュール内において本明細書に特定および図示することができ、あらゆる好適な形態において具現化することができ、あらゆる好適な種類のデータ構造内において編成することができる。操作可能なデータは、単一データセットとして収集されてもよく、または異なる記憶デバイスにわたることを含む異なる位置にわたって分散することができ、少なくとも部分的に、ただ単にシステムまたはネットワーク上の電子信号として存在することができる。モジュールまたはモジュールの一部がソフトフェア内に実装される場合、ソフトフェア部は、1つ以上のコンピュータ可読媒体上に記憶される。
本明細書を通じた「一実施形態」、「実施形態」、または類似する表現への言及は、実施形態に関連して記載される特定の特徴、構造、または特質が、本発明の少なくとも一実施形態に含まれることを意味する。したがって、本明細書を通して、「一実施形態において」、「実施形態において」、および類似する表現の出現は、必須ではないが、全て、同一の実施形態を指し得る。
コンピュータ可読媒体への言及は、デジタルデータ処理装置上に機械可読命令を記憶する能力があるあらゆる形態をとり得る。コンピュータ可読媒体は、伝送回線、コンパクトディスク、デジタルビデオディスク、磁気テープ、ベルヌーイドライブ(Bernoulli drive)、磁気ディスク、パンチカード、フラッシュメモリ、集積回路、または他のデジタルデータ処理装置メモリデバイスにより具現化され得る。
さらに、本発明の記載される特徴、構造、または特質は、任意の好適な方法で1つ以上の実施形態に組み合わせてもよい。続く説明において、プログラミング、ソフトフェアモジュール、ユーザ選択、ネットワークトランザクション、データベースクエリ、データベース構造、ハードウェアモジュール、ハードウェア回路、ハードウェアチップ等の例のような多数の具体的な詳細は、本発明の実施形態を十分に理解することをもたらすために、提供される。しかしながら、当業者は、本発明が1つ以上の特定の詳細なしに、または他の方法、構成要素、材料、およびその他によって実施されてもよいことを認識するであろう。他の事例において、周知の構造、材料、または操作は、本発明の態様を曖昧にすることを避けるために詳細中に示されないあるいは記載されない。
本明細書に含まれる概略フローチャート図は、概して論理フローチャート図として提示される。それゆえに、この描写される順番および名前が付けられるステップは、提示される方法の一実施形態を示す。図示される方法の1つ以上のステップまたはそれらの一部への機能、論理、または効果において同等である他のステップおよび方法が、想達可能であろう。さらに、採用されるこのフォーマットおよび記号は、方法の論理的なステップを説明するために提供され、方法の範囲を限定しないことが理解される。様々な矢印の種類および線種をフローチャート図内に採用され得るが、それらは対応する方法の範囲を限定しないことが理解される。実際に、いくつかの矢印または他のコネクタを、方法の論理フローのみを示すために使用することができる。例えば、矢印は、描写される方法の列挙されたステップ間の不特定の持続期間における、待機期間または監視期間を示すことができる。さらに、特定の方法が起こる順番は、示されるステップに対応する順番に従っても、従わなくても良い。
本明細書に使用されるメタデータは、ソリッドステート記憶デバイスの操作に関するいかなるデータをも指すことができる。したがって、メタデータは、キャッシュメタデータおよび/または記憶メタデータを指してもよい。いくつかの実施形態において、ソリッドステート記憶デバイスは、キャッシュおよび/または記憶メタデータを含む共有データ構造を維持するように構成することができる。データ構造は、キャッシュマネージャ、グルーマー、および/または他の管理モジュールによりアクセス可能となり得、それらは、ソリッドステート記憶デバイスのキャッシング、記憶装置、および/または保全操作(例えば、グルーミング)を効果的に管理するためにメタデータを使用することができる。
本明細書に使用されるキャッシュメタデータは、ソリッドステート記憶デバイス上に記憶されるキャッシュおよび/またはソリッドステート記憶デバイス上で行われるキャッシュ操作に関するいかなるデータをも指し得る。キャッシュメタデータは、補助記憶装置へバックアップされているキャッシュエントリ記憶ユニットを識別するための破棄可能性インジケータ、キャッシュ排除メタデータ、キャッシュ属性(例えば、PIN、BLACKLIST)、キャッシュ指令(例えば、フラッシュ(Flush))等を含み得るがそれらに限定されない。例えば、キャッシュ排除メタデータは、最近最も使われていないパターン、アクセス頻度等のデータアクセスパターンを含んでもよい。キャッシュ排除メタデータは、特定のキャッシュエントリに関して、キャッシュ排除を決定するために使用することができる。例えば、このキャッシュ排除メタデータは、「ホット」、「ウォーム」、および/またはコールド等であるキャッシュエントリを識別するために使用されてもよい。コールドキャッシュエントリは排除の対象にされる可能性があり、「ホット」エントリは保持され得る。このキャッシュ排除メタデータは、PIN、BLACKLIST等のようなキャッシュ属性も含んでもよく、それらは、キャッシュ操作を管理するために使用することができる(例えば、PIN指令は、データをソリッドステート記憶デバイスから排除されていることから防ぐことができる)。同様に、キャッシュ排除メタデータは、キャッシュからキャッシュエントリをフラシュする、あるいは排除する「FLUSH」指令のようなキャッシュ指令に応答することができる。
本明細書に使用される記憶メタデータは、ソリッドステート記憶デバイスのソリッドステート記憶媒体および/またはソリッドステート記憶デバイス上で行われる記憶操作に関するいかなるデータをも指すことができる。記憶メタデータは、ソリッドステート記憶デバイス上の有効データおよび/または無効データを識別するための有効性インジケータ、記憶ユニット検索へ効率的な論理アドレスを提供するための順インデックスメタデータ、論理アドレス検索へ効率的な記憶ユニットを提供するための逆インデックスメタデータ、占有量メタデータ(例えば、ソリッドステート記憶デバイス上に記憶されるデータ、占有量閾値等)、記憶媒体ステータス(例えば、磨耗率、信頼性、エラー率等)、逐次記憶メタデータ(例えば、ロギング等)等を含んでもよいがそれらに限定されない。
本明細書に使用される記憶ユニットは、ソリッドステート記憶デバイス上にデータを記憶するためのいかなる位置をも指すことができる。したがって、記憶ユニットは、ソリッドステート記憶素子のブロック、複数のソリッドステート記憶素子上のブロックを含む仮想ブロックまたはそれらの一部分、ページ、複数のソリッドステート記憶素子のページを含む仮想ページ、またはそれらの一部分、記憶区分、仮想記憶区分、消去ブロック、仮想消去ブロック等を含んでもよい。
記憶ユニットは記憶区分の一部であってもよい。本明細書に使用される記憶区分は、ソリッドステート記憶デバイスの消去可能な区分を指すことができる。したがって、記憶区分は、ソリッドステート記憶素子の消去ブロック、複数のソリッドステート記憶素子上の記憶区分を含む仮想消去ブロックまたはそれらの一部分等を指すことができる。
いくつかの実施形態において、キャッシュは複数の「キャッシュエントリ」を含んでもよい。キャッシュエントリは、論理アドレス(または、論理アドレスの範囲、この論理アドレスの範囲は、順序付けられたアドレス、順序付けられていないアドレス、連続アドレス、および不連続なアドレスを含んでもよい)および論理アドレスに対応するデータがソリッドステート記憶デバイス上に記憶される1つ以上の記憶ユニットを含んでもよい。キャッシュエントリのデータは、記憶ユニットの一部、単一記憶ユニット、および/または多重記憶ユニット上に記憶されてもよい。キャッシュエントリは、可変サイズを有してもよい。上述のように、キャッシュエントリは、クライアントの論理アドレスと関連付けることができる。論理アドレスとそれぞれのキャッシュエントリとの間の関連は、ソリッドステート記憶デバイス114により(例えば、メタデータ117内に)維持することができる。キャッシュエントリのデータは、ソリッドステート記憶デバイスの記憶ユニット内(例えば、ページ、仮想ページ、消去ブロック、および/または消去ブロック)に記憶されてもよい。代替として、キャッシュエントリのデータは、記憶境界をまたがることができる(例えば、複数のページ、仮想ページ、消去ブロック、および/または仮想消去ブロック上に記憶される)。
ソリッドステート記憶デバイスにより維持されるメタデータは、複数のキャッシュエントリを含むことができ、それぞれが論理アドレスを対応するソリッドステート記憶デバイス上の記憶ユニットに関連付ける。これらの関連は、マップまたはインデックス(「順マップ」または「順インデックス」として言及される)内において維持することができる。本明細書に使用される順マップまたは順インデックス(または一般的にインデックス)は、キャッシュエントリ論理アドレス(例えば、クライアントからの論理ブロックアドレス)をソリッドステート記憶デバイスの記憶ユニットと関連付けることができるいかなるデータ構造をも指し得る。いくつかの実施形態において、インデックスは、Bツリー等のようなツリーデータ構造を含んでもよい。ツリーデータ構造は、論理アドレス、または論理アドレスのセット(例えば、範囲および/または長さとして)によりインデックス付けされるキャッシュエントリを含んでもよい。したがって、インデックスは、範囲Bツリー(Range B−Tree)または(一般的にBツリー)と称することができる。複数のキャッシュエントリを含むデータ構造の例は、図11と併せて以下に記載される。
順インデックスは、論理アドレスに対応するデータが、ソリッドステート記憶デバイス上に記憶されるかどうかを判定するために使用することができる。例えば、アドレスと関連付けられる節点がインデックス内にある場合、アドレスに対する有効データはソリッドステート記憶デバイス上で利用可能であるが、その反対に、インデックス内に節点が存在しない場合、論理アドレスに対応するデータはソリッドステート記憶デバイス上に記憶されていない。
メタデータは、(順マップ内として論理アドレスによりインデックス付けすることとは逆に)それらの物理アドレスにより記憶ユニットをインデックス付けすることができる逆インデックスをさらに含んでもよい。したがって、この逆インデックスは、特定の記憶ユニットの高速かつ効率的な検索を提供することができ、および/またはソリッドステート記憶デバイスの物理アドレス空間を通して逐次的な走査を提供することができる。いくつかの実施形態において、逆インデックスは、順インデックスと同一の節点(葉節点)につなぐことができる(例えば、逆インデックスは、順インデックスのミラーとすることができ、葉節点が論理アドレスではなく物理アドレスによりインデックス付けされる点で異なる)。代替として、逆インデックスは、ツリー、マップ、配列、テーブル、ビットマップ等のような分離データ構造を含んでよい。いくつかの実施形態において、逆インデックスは、記憶ユニットと、有効性インジケータ、破棄可能性インジケータ(例えば、記憶ユニットのデータが補助記憶装置上に記憶されたかどうか)、記憶ユニット磨耗率、エラー率、アクセスパターン等のような記憶ユニットメタデータとの間の関連付けを提供することができる。
本明細書に使用されるキャッシュ排除メタデータは、キャッシュ排除(または保持)決定するために使用されるメタデータを指すことができる。キャッシュ排除メタデータは、キャッシュエントリと関連付けることができ、したがって、ソリッドステート記憶デバイス上の特定の記憶位置ではなく、論理アドレスによりインデックス付けることができる。これは、(例えば、逐次的な記憶操作による)データの物理的記憶位置の変更にもかかわらず、キャッシュ排除メタデータが維持されることを可能にする。キャッシュ排除メタデータは、「ホット」、「ウォーム」、および/または「コールド」であるキャッシュエントリを識別することができる。本明細書に使用される「ホット」、「ウォーム」、および/または「コールド」データは、特定のアクセスおよび/または使用パターン、他のデータとの物理的な空間相関関係を有するデータを指すことができる(言い換えれば、1組のデータの「温度」は、データが物理的に媒体上でまたは論理的に論理アドレス空間内で、どれほどキャッシュ内で使用される他のデータと近いかによって、決定され得るまたは影響を受け得る)。例えば、「ホット」または「ウォーム」データは、(キャッシュ排除メタデータによって示されるように)最近アクセスされたおよび/または特定の頻度でアクセスされたデータを指すことができる。それに対し、「コールド」データは、(これも、キャッシュ排除メタデータによって示されるように)特定の時間閾値内に、特定の頻度で、または同様にアクセスされていない等のデータを指すことができる。当技術分野において知られる様々な異なる技術および/またはデータアクセスパターンを、「ホット」、「ウォーム」、および/または「コールド」データを識別するために使用することができ、それらのいずれかは本開示の教示下で実現することができる。さらに、キャッシュ排除メタデータは、キャッシュ属性および/または指令を含むことができる。キャッシュ属性は、キャッシュ管理に情報を与えることができ、例えば、「PIN」キャッシュ指令は、特定のキャッシュエントリがソリッドステート記憶デバイスから排除されることを防ぐことができ、「BLACKLIST」属性および/または「FLUSH」指令は、データがキャッシュ内において保持されることを防ぐことができる。
いくつかの実施形態において、ソリッドステート記憶デバイスは、データを逐次的に記憶することができる。本明細書に使用される逐次的な記憶装置は、データが1つ以上の付加ポイントに記憶される位置のずれた記憶スキームを指すことができる。したがって、ソリッドステート記憶デバイス上に記憶されているデータが修正される(また他の理由のため復元される)場合、データは、(例えば、データが本来記憶された同一の記憶ユニットへ再書き換えされるのではなく)ソリッドステート記憶デバイスの異なる記憶ユニットに記憶され得る。
逐次的な記憶装置はまた、ソリッドステート記憶デバイスにより記憶メタデータ(例えば、ログベースの記憶装置)を維持するための機構を指してもよい。記憶メタデータは、ソリッドステート記憶デバイス上で行われる記憶操作のシーケンスが再構成または再生することを可能にする。記憶メタデータは、記憶区分タイムスタンプ、シーケンスインジケータ、パケットヘッダー、順および/または逆インデックス等を含んでもよい。例えば、第1の論理アドレスに対応するデータがソリッドステート記憶デバイス上に記憶される場合、ロギングデータを維持することができる。メタデータは、上に開示される順インデックス(例えば、Bツリー)内のデータをインデックス付けすることを含んでもよい。例えば、論理アドレスに対応するキャッシュエントリはインデックスへ追加され得、インデックスは、論理アドレスに対応するデータを含むソリッドステート記憶装置上の記憶ユニットを参照するように設定することができる。上述のように、論理アドレスは、アドレス、および長さもしくは範囲を含んでよく、および/または1組の論理アドレスを含んでもよい。データがクライアント(または他の実体)により変更される場合、変更されたデータは、ソリッドステート記憶デバイス上に(例えば、「位置がずれて」)逐次的に記憶され得る。したがって、論理アドレスと関連付けられる有効データを含む記憶ユニットは変化し得る。キャッシュエントリは、新しい記憶ユニット(1つまたは複数)を反映するように更新することができ、古い記憶ユニットは無効にすることができる(例えば、逆インデックスまたは他のデータ構造において)。記憶操作のこのシーケンスは、順マップ、ソリッドステート記憶デバイス上に記憶されるシーケンスインジケータ、および/または他の記憶メタデータ(例えば、逆インデックス等)を使用して再生することができる。他の逐次的な記憶操作は、記憶区分復旧、ガーベジコレクション、エラー管理、仮想記憶管理、逐次的な記憶装置(例えば、ログベース記憶操作)等を含んでもよいが、それらに限定はされない。本明細書に使用される逐次的な記憶操作は、上述のいずれの記憶操作をも指し得る。
図1は、クライアント110a〜c、キャッシュとして操作するよう構成されたソリッドステート記憶デバイス114、コミュニケーション・バス116、および補助記憶装置118を備えるシステム100の一実施形態を示す。システム100は、ストレージ接続ネットワーク(「SAN」)、ネットワーク接続ストレージ(「NAS」)、またはソリッドステート記憶デバイス114とともにクライアント110a〜cおよび補助記憶装置118の他の構造であってもよい。クライアント110a〜cは、補助記憶装置110内に記憶されたデータにアクセスするコンピューティングデバイスである。クライアント110a〜cは、デスクトップ、ワークステーション、サーバ、または他の特定の種類のコンピューティングデバイスのようなパーソナルコンピュータであってもよい。代替として、またはさらに、クライアント110a〜cは、オペレーティングシステム(OS)、ファイルシステム(FS)、ウェブサーバ、データベースサーバ等のようなコンピューティングデバイス上で作動しているプロセスまたはサービスを含むことができる。
ソリッドステート記憶デバイス114は、クライアント110a〜cおよび/または補助記憶装置118へキャッシングサービスを提供するように構成することができる。ソリッドステート記憶デバイス114をキャッシュとして使用することは、いくつかの異なる利点を提供することができる。例えば、ソリッドステート記憶デバイス114からの読み込み、およびソリッドステート記憶デバイス114へ書き込みを行うクライアント110a〜cのアクセス時間は、補助記憶装置118から/補助記憶装置118へデータを直接的に読み込むならびに書き込むクライアント110a〜cのアクセス時間より少なくなり得、ソリッドステート記憶デバイス114はクライアント110a〜cがより迅速にデータにアクセスすることを可能にする。いくつかの実施形態において、ソリッドステート記憶デバイス114は、論理的なインターフェースをクライアント110a〜cへ提示することができ、ソリッドステート記憶デバイス114の物理記憶容量を上回る論理アドレス空間を含むことができる。論理アドレス空間は、補助記憶装置118の物理記憶容量と対応することができる、クライアントが透過的に(例えば、それらがあたかも補助記憶装置118に直接的にアクセスしていたかのように)ソリッドステート記憶デバイス114と情報をやりとりすることを可能にする。代替として、またはさらに、ソリッドステート記憶デバイス114はソリッドステート記憶デバイス114および補助記憶装置118(例えば、「まばらな」または「細い」論理アドレス空間)の両方の物理記憶容量を上回る論理アドレス空間を提示することができる。論理アドレス空間は、64ビットアドレス空間、32ビットアドレス空間、またはクライアント110a〜cによって使用される別のアドレス方式を含んでもよい。
ソリッドステート記憶デバイス114は、クライアント110a〜cのマップ論理アドレスを、ソリッドステート記憶デバイス114上の記憶ユニットへマップするために、論理対物理のインデックスを実装することができ、それによりクライアント110a〜cによって実装される冗長変換層を除去すること、記憶デバイス114および118へのクライアント110a〜cのアクセスを単純化すること、および/またはクライアント110a〜cのための柔軟な記憶基礎構造(例えば、「まばらな」「細く供給された」記憶サービス)を提供することができる。
ソリッドステート記憶デバイス114は、ソリッドステート記憶コントローラ115を含むことができ、ソリッドステート記憶コントローラ115は、ソリッドステート記憶デバイス114上に記憶されるキャッシュと関連する(および/またはデバイス114上で行われるキャッシュ操作に関連する)メタデータ117、ならびに、ソリッドステート記憶デバイス114上で行われる記憶操作に関連する記憶メタデータ、ソリッドステート記憶デバイス114上の記憶ユニットのステータス等を維持するように構成され得る。メタデータは、有効性マップおよび破棄可能性マップを含むことができる。有効性マップは、有効データ(最新であり、ならびにクライアント110a〜cの論理アドレスと関連付けられるデータ)を含むソリッドステート記憶デバイス114の記憶ユニットを識別することができる。したがって、有効性マップは上述の順インデックスを含んでもよい。無効性マップは、有効性マップから得ることができ(例えば、有効性マップ内にない全ての記憶ユニットは、無効データを含むものとして識別されてもよい)、および/または逆インデックス等のような別個のデータ構造内に維持されてもよい。破棄可能性マップは、補助記憶装置118上に記憶されているキャッシュエントリ記憶ユニットを識別することができる。
ソリッドステート記憶デバイス114および/またはコントローラ115は、クライアント記憶要求に応答してキャッシュエントリを識別するためにメタデータを使用することができるキャッシュ管理装置130を含んでもよい。いくつかの実施形態において、キャッシュ管理装置130は、デバイスドライバ(例えば、Linuxデバイスドライバ)を使用して実装してもよい。
図1は1つのソリッドステート記憶デバイス114を示すが、システム100の他の実施形態は、クライアント110a〜cのためのキャッシュとして機能を果たす複数のソリッドステート記憶デバイス114を含んでもよい。いくつかの実施形態において、キャッシュ管理装置130は、本システムにおける各ソリッドステート記憶デバイス114上に実装されてもよい。他の実施形態において、キャッシュ管理装置130は、システム100内のソリッドステート記憶デバイス114の至るところに分配させてもよい。
ソリッドステート記憶デバイス114は、補助記憶装置118のためのキャッシュとして機能する。いくつかの実施形態において、ソリッドステート記憶デバイス114および補助記憶装置118は、コミュニケーション・バス116によって接続される。コミュニケーション・バス116は、ローカルのコミュニケーション・バス(例えば、コンピュータシステムのコミュニケーション・バス)、分散型バス、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、または他の種類の通信ネットワークであってもよく、様々なプロトコルを使用して実装されることができる。いくつかの実施形態において、ソリッドステート記憶デバイス114は、補助記憶装置118に直接接続される。ソリッドステート記憶デバイス114および補助記憶装置118はまた、バスによってさらに接続されてもよい。
ソリッドステート記憶デバイス114は、補助記憶装置118とほぼ同時にデータアクセス要求を認識するルックアサイドキャッシュとしての機能を果たすように構成されることができる。他の実施形態において、ソリッドステート記憶デバイス114は、補助記憶装置118の前にデータアクセス要求を認識するルックスルーキャッシュとして機能を果たすように構成してもよい。ソリッドステート記憶デバイス114がルックスルーキャッシュであるいくつかの実施形態において、ソリッドステート記憶デバイス114は、ソリッドステート記憶デバイス114上でのアクセスの試みが失敗した場合データアクセス要求を補助記憶装置118へ渡す。さらにソリッドステート記憶デバイス114は、書き戻しキャッシュとして実装されてもよい。いくつかの実施形態において、現在のキャッシュモードは、ソリッドステート記憶デバイス114によって維持されるメタデータ内において利用可能であり得る。キャッシュモードは、記憶インターフェース、強化記憶インターフェース等を介して、クライアント110a〜cによって変更可能であり得る。さらにメタデータは、PIN、BLACKLIST等のようなキャッシュ属性、および/またはキャッシュ指令(例えば、FLUSH)を示すことができる。キャッシュ属性および/または指令は、キャッシュ管理装置130および/またはソリッドステート記憶コントローラ115によるアクセスのためにソリッドステート記憶デバイス114によって維持されるメタデータ内で記憶されてもよい。
補助記憶装置118は、補助記憶装置118から/補助記憶装置118へデータを読み込むならびに書き込むクライアント110a〜cのための記憶手段を提供することができる。補助記憶装置118は、ソリッドステート記憶装置、ハードディスクドライブ、テープ、他の何らかの不揮発性データ記憶媒体、または先行例の組み合わせのような1つ以上の不揮発性記憶デバイスを含んでもよい。いくつかの実施形態において、補助記憶装置118、または補助記憶装置118内の少なくともいくつかの記憶媒体は、ソリッドステート記憶デバイス114のそれより低いアクセスおよび/またはスループット性能を有し得る。
いくつかの実施形態において、システム100は、コンピューティングデバイス内に実装される。例えば、ソリッドステート記憶デバイス114は、デスクトップのようなコンピューティングデバイスのマザーボードに取り付けられることができ、ハードディスクドライブである補助記憶装置118のためのキャッシュとして機能することができる。コンピューティングデバイスのCPUは、データの読み込みならびに書き込みを行うために補助記憶装置118と比較してソリッドステート記憶デバイス114のより高速な読み込み/書き込み時間を活用することができる。いくつかの実施形態において、システム100はまた、追加的なソリッドステート記憶デバイス114を含む。例えば、システム100は、キャッシュ階層に編成される複数のソリッドステート記憶デバイス114で多層のキャッシュを実装することができる。
図2は、ソリッドステート記憶デバイス114により提示される論理的かつ物理的な記憶空間を図示するシステム200の一実施形態を示す。システム200は、システム200の構成要素としてファイルシステム210を図示する。ファイルシステム210は、物理的コンピューティングデバイス上で作動する論理的実体である。いくつかの実施形態において、ファイルシステム210は、図1のクライアント110a〜cの1つの上に実装されてもよい。ファイルシステム210はシステム200内のコンピュータファイルおよびデータを記憶し編成する。多くの実施形態において、ファイルシステム210は、記憶装置のブロックをファイルおよびディレクトリに編成し、どのブロックがどのファイルに属するかを追跡する。図2はファイルシステム210を描写するが、本開示はこの観点において限定されず、当技術分野において知られる、データベース、サーバ(例えば、ウェブサーバ、記憶サーバ等)、アプリケーション、ユーザ等を含むがそれらに限定されない、いかなる記憶クライアントと併せても使用することができる。
いくつかの実施形態において、補助記憶装置118は、ファイルシステム210によってデータが実際に記憶される物理的記憶空間を提供する。補助記憶装置118によって利用可能である容量は、システム200に応じて幅広く異なり、500GBがデスクトップコンピュータの典型であり得るが、テラバイト(「TB」)またはペタバイト(「PB」)台の補助記憶装置118がストレージエリアネットワーク(SAN)等の分散型記憶システムにおいて提供され得る。一般的に、補助記憶装置118はブロック記憶デバイスである記憶デバイスで構成されるが、他の種類の補助記憶デバイスが補助記憶装置118内において使用されてもよい。
ソリッドステート記憶デバイス114は、事前に決定される物理記憶容量を有し得る。いくつかの実施形態において、ソリッドステート記憶デバイス114は、ソリッドステート記憶デバイス114の物理空間の一部が補助記憶装置118のためのキャッシュとして機能を果たすこと専用に用いられ、ならびにソリッドステート記憶デバイス114の一部は記憶装置(例えば、補助記憶装置118の一部または他の記憶サービス)として作動するよう構成されるように、論理的におよび/または物理的に分割されてもよい。例えば、ソリッドステート記憶デバイス114は、200GBの物理空間がキャッシュとしての機能を果たすことのためだけに用いられ、フォーマットされてもよく、残りの120GBが補助記憶装置118の一部として扱われ得る。
いくつかの実施形態において、ソリッドステート記憶デバイス114は、ソリッドステート記憶デバイス114の物理的サイズにかかわらず、補助記憶装置118の物理空間と同一のサイズであるキャッシュ論理空間220をファイルシステム210へ提示する。例えば、ソリッドステート記憶デバイス114は、補助記憶装置118と同一のサイズとなるようにフォーマットされてもよい。典型的な実施形態において、補助記憶装置118の物理記憶容量(例えば、1PB)は、ソリッドステート記憶デバイス114の物理記憶容量(例えば、80GB)より大きい。
いくつかの実施形態において、ソリッドステート記憶デバイス114は、補助記憶装置118の物理空間(ならびにソリッドステート記憶デバイス114自体)より大きい論理アドレス空間220をファイルシステム210へ提示することができる。ユーザは、補助記憶装置118に物理空間をキャッシュ論理空間220のサイズの変更なしに追加することができ得る。ソリッドステート記憶デバイス114は、デバイス114および/または補助記憶装置118における論理アドレスと「まばらな」または「細く供給された」記憶ユニットとの間の関連付けを、上述の順マップを使用して維持することもできる。いくつかの実施形態において、ソリッドステート記憶デバイス114は、ソリッドステート記憶デバイス114および/または補助記憶装置118の占有量が閾値を上回る場合に、追加の記憶空間(例えば、追加の補助記憶装置118)を要求するように構成することができる。ソリッドステート記憶デバイス114は、クライアント(例えば、ファイルシステム210)が、ソリッドステート記憶デバイス114の実際の物理容量、補助記憶装置118、残存している記憶容量、現在の占有量レベル(例えば、ソリッドステート記憶デバイス上に現在記憶される有効データの量)等を決定するためにクエリを発行することができるインターフェースを提示することができる。さらにインターフェースは、クライアント(例えば、ファイルシステム210)へ記憶容量の要求、記憶容量の予約等のコールを提供することもできる。
いくつかの実施形態において、ソリッドステート記憶デバイス114は、補助記憶装置118の変動する物理的記憶装置に基づきキャッシュ論理空間220のサイズを動的に調整することができる。例えば、新しい記憶デバイスが補助記憶装置118に追加される場合、ソリッドステート記憶デバイス114はファイルシステム210に提示されるキャッシュ論理空間220のサイズを動的に大きくすることができる。
いくつかの実施形態において、ソリッドステート記憶デバイス114は、ファイルシステム210に対し透過的であってもよい。ファイルシステム210は、ソリッドステート記憶デバイス114によってファイルシステム210へ提示されるキャッシュ論理空間220のみを認識することができる。いくつかの実施形態において、ソリッドステート記憶デバイス114は、補助記憶装置118のコントローラとしての機能を果たす。したがって、ファイルシステム210は、データアクセスイベント(読み込みおよび書き込み要求等)を、ソリッドステート記憶デバイス114によって提示されるキャッシュ論理空間220へ向ける。ファイルシステム210は、それが処理しているソリッドステート記憶デバイス114がキャッシュ論理空間220程大きい物理的記憶空間を有していないことを認識しない場合がある。いくつかの実施形態において、ソリッドステート記憶デバイス114は、データをRAID構造において、補助記憶装置118にストライプ状にする。いくつかの実施形態において、ソリッドステート記憶デバイス114は、RAID構造で、他のソリッドステート記憶デバイスで構成されてもよい。
したがって、ソリッドステート記憶デバイス114は、まばらにマップされる64ビットアドレス空間を実装することができる。いくつかの実施形態において、ファイルシステム210がデータ(例えば、読み込み要求)を要求し、要求データのためのアドレス(論理ブロックアドレス、またはLBA等)を提供する際、ソリッドステート記憶デバイス114(および/またはコントローラ115)は、ソリッドステート記憶デバイス114により維持されるメタデータ117(上述の順インデックスのようなインデックス)内のアドレスを検索することができ、論理アドレスと関連付けられるデータがソリッドステート記憶デバイス114上で利用可能である場合、対応する記憶ユニットにおいて読み込みを開始する。ソリッドステート記憶デバイス114は、データが特定されたアドレスにない場合、および/または論理アドレスがインデックス内にない場合、エラーを生成することができる。エラーはキャッシュミスとして解釈され得、補助記憶装置118から要求データを読み込み、1つ以上の記憶ユニット内のデータをキャッシングするソリッドステート記憶デバイス114によって処理され得る。キャッシュミスは、論理アドレスを参照するためにメタデータを更新すること(例えばインデックスに葉節点を追加する)等をさらに含み得る。
ソリッドステート記憶デバイス114がソリッドステート記憶デバイス114の物理空間より大きいキャッシュ論理空間220を提示する実施形態において、キャッシュ管理装置130は、ソリッドステート記憶デバイス114がその物理記憶容量を上回らないことを保証するように、ソリッドステート記憶デバイス114を管理する。より大きい論理空間220を提示しながらソリッドステート記憶デバイス114の物理記憶容量を管理するための例示的アプローチを、以下に記載する。
そのような実施形態において、ソリッドステート記憶デバイス114は、ファイルシステム210および補助記憶装置118へのアクセスを求める他の実体に対し透過的であり得る。ソリッドステート記憶デバイス114を管理することおよびデータの検索の複雑性は、ファイルシステム210から隠され得る。したがって、ファイルシステム210は、読み込む、または補助記憶装置118への書き込みの代わりにソリッドステート記憶デバイス114へ書き込むデータについてソリッドステート記憶デバイス114へチェックインをする必要がない可能性がある。その代わりに、ファイルシステム210は、ソリッドステート記憶デバイス114によって提示されるキャッシュ論理空間220内のデータに簡単にアクセスし、ソリッドステート記憶デバイス114が、データを処理する最も効率的な手段を透過的に判定することを可能にする。キャッシュ論理空間220の根底にある物理的記憶配置(つまり、ソリッドステート記憶デバイス114のおよびその補助記憶装置118との関係)は、ファイルシステム210から隠される。さらに、ソリッドステート記憶デバイス114がデータのキャッシングを管理できるようにさせることにより、キャッシュ管理装置130は、ファイルシステム210に対して通常利用可能ではないソリッドステート記憶デバイス114によって維持されるメタデータ117を使用して、キャッシュ保全についての賢い選択をすることができる。
図3は、グルーマー310およびキャッシュ管理装置130を備えるソリッドステート記憶コントローラ115の例示的実施形態を示す。ソリッドステート記憶コントローラ115は、ソリッドステート記憶媒体320へ結合(例えば、バスまたは他の通信管路を直接的に介して)することができる。ソリッドステート記憶媒体320は、ローカルのコミュニケーション・バス、ネットワークバス、ネットワーク接続等を介して、コントローラ115へ結合されてもよい。いくつかの実施形態において、ソリッドステート記憶デバイス114および/またはコントローラ115は、複数のソリッドステート記憶媒体320へ通信可能に結合されてもよい。ソリッドステート記憶媒体320は、1つ以上のソリッドステート記憶素子(示されていない)を含んでもよく、それらはバンク内に配置されてもよい。ソリッドステート記憶コントローラ115は、並行してバンクの1つ以上にアクセスすることができ、および/またはソリッドステート記憶デバイス114は、複数のソリッドステート記憶コントローラ115を備えることができる。
描写される実施形態において、キャッシュ管理装置130は、キャッシュコントローラ312およびバックアップエンジン314を備える。グルーマー310およびキャッシュ管理装置130は、とりわけ、有効性マップを含んでもよい記憶メタデータ316、および破棄可能性マップを含んでもよい記憶メタデータ318を含むことができるメタデータ117へのアクセスを有することができる。グルーマー310および/またはキャッシュ管理装置130は、ファームウェア、ソフトフェア、ハードウェア、またはそれらのある種の組み合わせとして実装されてもよい。図3に示されるように、グルーマー310およびキャッシュ管理装置130は、ソリッドステート記憶コントローラ115上に実装することがきる。しかしながら、本開示はこの観点において限定されない。例えば、いくつかの実施形態において、グルーマー310および/またはキャッシュ管理装置130は、別個のコントローラ、プロセッサ、FPGA等を使用して実装することができる。代替として、またはさらに、ソリッドステート記憶コントローラ115、グルーマー310、および/またはキャッシュ管理装置130は、ソリッドステート記憶デバイス114上で作動する1つ以上のドライバとして実装されてもよい。
グルーマー310は、ソリッドステート記憶媒体320上に記憶されるデータを、記憶区分復旧(例えば、消去ブロック復旧)、データリフレッシュ操作、データエラー訂正、エラー処理等のような保全操作の一部として移動する。グルーマー310は、ファイルシステム210および補助記憶装置118に対して透過的な方法で、ソリッドステート記憶媒体320内の記憶ユニット間でデータを移動することができる。例えば、グルーマー310は、ソリッドステート記憶デバイス114上の記憶空間を再生するために、ソリッドステート記憶デバイス114として作動しているソリッドステート記憶デバイス内のデータ上のガーベジコレクション操作を行うことができる。さらにグルーマー310は、ソリッドステート記憶デバイス114内において大量に断片化されるファイルをデフラグすることができる。例示的グルーミング操作は、2007年12月6日に申請されたDavid Flynnらの「Apparatus, System, and Method for Storage Space Recovery in Solid−state Storage」と題される米国特許出願第11/952,101号に記載され、これは、参照することによりその全体が本明細書に組み込まれる。同様に、グルーマー310は、読み込み妨害からデータを保護するため、および/または磨耗レベリング操作の一部として、データを移動する。当業者は、データ保全および空き空間保全の目的のために、記憶デバイス内にデータの移動することを必要とし得る他のグルーミング操作を理解するであろう。復旧のために選択される記憶区分、有効性マップ、記憶区分エラー率、記憶区分磨耗率、アクセスパターン等のようなグルーマーの操作に関するメタデータは、メタデータ117内(例えば、記憶メタデータ316内)に維持されてもよい。メタデータ117(例えば、記憶メタデータ316)は、記憶クライアントによって提供される論理アドレスと論理アドレスに関連する有効データが記憶されるソリッドステート記憶媒体320上の記憶ユニット間の関連付けを含むインデックスをさらに含むことができる。上述のように、インデックスは、論理アドレスによってインデックス付けされる節点をエンコードされる長さおよび/または範囲を含むBツリーを備えることができる。
キャッシュコントローラ312は、ソリッドステート記憶デバイス114に関して記憶クライアント(クライアント110a〜c、ファイルシステム210、またはその他等)と補助記憶装置118との間のデータの交換を調整する。いくつかの実施形態において、キャッシュコントローラ312は、いつならびにどのようにソリッドステート記憶デバイス114からデータを排除するかを指定する排除ポリシーを維持することに関与する。いくつかの実施形態において、排除ポリシーは、とりわけ、データアクセスパターン(例えば、データは「ホット」、「ウォーム」、「コールド」等であるかどうか)を含むことができるキャッシュ排除メタデータに基づくことができる。排除メタデータは、最後のアクセス時間(最近に最も使用されていない)、アクセス頻度、キャッシュエントリサイズのアクセス時間に対する比率、および/またはアクセス頻度等に対応することができる。
いくつかの実施形態において、キャッシュ排除メタデータは、排除を決定するのに使用することができるキャッシュ属性および/または命令を含むことができる。例えば、PINキャッシュ属性は、データが「コールド」であったとしても関連データをキャッシュ内に保持させることができる。キャッシュ指令(例えば、FLUSH指令)は、特定のキャッシュエントリをソリッドステート記憶デバイス114からフラッシュさせることができる。キャッシュ属性および/または指令は、記憶クライアント(例えば、クライアント110a〜c)によってインターフェースを介して提供されてもよい。例えば、ソリッドステート記憶デバイス114は、クライアントがキャッシュ内に保持する(例えば、PIN属性)、あるいはキャッシュから除去する(例えば、BLACKLISTまたはFLUSH)等の、データを特定することできるインターフェースを提供することができる。いくつかの実施形態において、キャッシュ排除決定は、記憶メタデータ316に基づき得る。上述のように、記憶メタデータ316は、個々の論理アドレス(または論理アドレスセットもしくは範囲)をそれぞれ含むキャッシュエントリとソリッドステート記憶装置114上のそれぞれの記憶ユニットを関連付ける順マップを含むことができる。インデックスは、アクセスパターンメタデータと対応論理アドレスとの間の関連を維持するのに使用することができる(例えばツリーインデックス内のカウントは、特定の節点、エッジ、または葉がどれくらい頻繁にアクセスされるか、ならびにどの操作の種類(読み込み、書き込み、トリム)のためのものであるかを追跡することができる)。これらの関連は、その根底にあるデータがソリッドステート記憶デバイス上で移動される(例えば、記憶区分復旧操作の間に、変更に応答して第1の記憶ユニットから第2の記憶ユニットへ移動される等の)場合でさえも保持されることができる。したがって、排除決定を行う際、キャッシュコントローラ312(または他の実体)は、関連アクセスパターンメタデータを得るために、記憶メタデータ316にアクセスすることができる。
いくつかの実施形態において、キャッシュ排除ポリシーは、空間的なおよび/または時間的な近接性に基づくことができる。空間的な近接性は論理アドレスが「ホット」である場合、(それらがまだアクセスされていないとしても)空間的に近接の論理アドレスも「ホット」である可能性が高いとみなす。キャッシュエントリ間の「空間的な位置」は、記憶メタデータ316内に維持することができる(例えば、インデックスまたは順マップを使用すること)。上述のように、記憶メタデータ316の順インデックスは、論理アドレスをソリッドステート記憶デバイス114の物理的記憶ユニットと関連付けることができる。論理アドレスは、記憶ユニットへ恣意的にマップされてもよく、位置のずれた書き込みおよび他の逐次的な記憶操作に起因して、データの物理的位置は時間と共に変化し得る。したがって、記憶ユニットのアドレスのみを使用して論理的な近接を判定することは非実用的である可能性がある。キャッシュコントローラ312(または他の実体)は、排除決定をするための空間的な近接を特定するために記憶メタデータ316にアクセスすることができる(例えば、論理アドレス空間内において空間的に「ホット」データに近接するデータは、排除がより好ましくなく、空間的に「ホット」データに近接しないデータは排除がより好ましくあり得る)。
いくつかの実施形態において、ソリッドステート記憶コントローラ115は、キャッシングのサポートに使用するためにソリッドステート記憶デバイス114上で利用可能な物理的記憶空間の最大量で構成される。管理者(または他の実体)は、ソリッドステート記憶デバイス114を構成する際にこの情報を提供することができる。他の実施形態において、キャッシュコントローラ312は、それ自体のために記憶空間の最大量を見出す(例えば、ソリッドステート記憶デバイス114の物理記憶容量を特定することによって)。最大占有量(およびそれによって導き出される閾値)は、時と共に変化し得る。例えば、ソリッドステート記憶デバイス114の特定の記憶位置は、信頼性が低下するおよび/または機能しなくなる可能性があり、デバイス114の物理記憶容量を縮小し得る。したがって、最大占有量は縮小され得る。いくつかの実施形態において、その縮小は、クライアントに対し透過的に起こり得る(例えば、ソリッドステート記憶デバイス114は、操作を継続し、および/またはクライアントに同一の論理アドレス空間を提示することができる)。代替として、クライアント(例えば、クライアント110a〜c)に、記憶容量内の縮小を知らせる通知を発行する。同様に、ソリッドステート記憶デバイス114の物理記憶容量は、増加し得る(例えば、追加ソリッドステート記憶媒体が追加される場合)。占有量閾値は、追加記憶容量に従って調整することができる。
情報内の最大占有量を使用して、キャッシュコントローラ312は、キャッシュ管理装置130がソリッドステート記憶デバイス114内にキャッシュされることを許す最大データ量を特定する最大占有量閾値を導き出すことができる。いくつかの実施形態において、最大占有量閾値は、全ての使用可能な物理容量を使用せず、その代わりに、ソリッドステート記憶デバイス114のために、記憶空間復旧、および/または、使い古したまたは信頼性の低い記憶ユニットの交換のような保全操作を行うため、物理容量の一部を確保することができる。いくつかの実施形態において、キャッシュコントローラ312(または他の実体)は、最大占有量閾値を動的に決定することができる。最大占有量閾値は、データアクセスパターン等のメタデータ117に基づくことができる。例えば、ソリッドステート記憶デバイス114が、排除されると後続のキャッシュミスを引き起こす可能性のある大量の「ホット」データを含む場合、占有量閾値は動的に縮小され得る。逆に、ソリッドステート記憶デバイス114が後続のキャッシュミスの可能性が低く排除することができる大量の「コールド」データを含む場合、最大占有量閾値を増加さることができる。代替として、またはさらに、ソリッドステート記憶デバイス114は、理想的な閾値を帰納的に決定するために、メタデータ117内のキャッシュ動作を追跡するように構成することができる。例えば、最近排除されたキャッシュエントリの高いキャッシュミス率は、追加のキャッシュ記憶空間が必要とされること(またはキャッシュ排除ポリシーを調整するべきであること)等を示し得る。あるいは、キャッシュミス率が低い場合、閾値は縮小され、ソリッドステート記憶デバイスの過剰の記憶空間が他の目的(例えば、他の補助記憶装置のためのキャッシュとして、記憶空間として等)に使用してもよい。
最大占有量閾値は、例えば、ソリッドステート記憶デバイス114によって提供される記憶の量から、ソリッドステート記憶デバイス114によって使用され、それらに記憶されるソフトフェアまたは他のデータによって占有される記憶量を差し引いた記憶量であり得る。他の実施形態において、最大占有量閾値は、ソリッドステート記憶デバイス114内において利用可能である記憶量のいくらかの割合(%)であり得る。いくつかの実施形態において、最大占有量閾値は、サービスの質(QOS)属性等のような性能基準に基づき、ソリッドステート記憶デバイス114によって決定される。最大占有量閾値は、要求、ジョブ優先順位、または管理手順に基づき動的に変化し得る。さらに他の基準を、調整、整調、あるいはそれ以外の最大占有量閾値の変更のために使用することができる。いくつかの実施形態において、ソリッドステート記憶デバイス114は、占有量閾値が設定され得るインターフェースを提供することができる。代替として、またはさらに、インターフェースは、最大占有量閾値を決定することができる1つ以上のキャッシュ属性および/または指令(例えば、QOS、PIN、BLACKLIST等)を、クライアントが設定することを可能にする。
いくつかの実施形態において、キャッシュコントローラ312は、ソリッドステート記憶デバイス114が最大占有量閾値を上回らないことを保証するために、ソリッドステート記憶デバイス114上で利用可能な残存物理記憶容量の量を判定するためにメタデータ117を問い合わせる。キャッシュコントローラ312(または他のモジュール)は、ソリッドステート記憶デバイス114内へのデータの各挿入に先立ってメタデータ117を使用して、残存物理容量を判定することができる。他の実施形態において、キャッシュコントローラ312は、ソリッドステート記憶デバイス114内に残存する物理記憶容量の量に依存して可変な頻度で判定することができる。例えば、ソリッドステート記憶デバイス114が利用可能なその物理記憶容量の半分を超える容量を有する場合、キャッシュコントローラ312は各挿入に先立って残存物理記憶容量を要求しない可能性があり、代わりにキャッシュコントローラ312は、特定数のキャッシュ挿入が発生するまで待機した後判定を行う。ソリッドステート記憶デバイス114が次第に満杯になるにつれて、残存物理記憶容量を判定するための問い合わせの頻度は、キャッシュコントローラ312がソリッドステート記憶デバイス114内への各挿入に先立って問い合わせをする時点まで増えることができる。
いくつかの実施形態において、キャッシュコントローラ312は、ソリッドステート記憶デバイス114が最大占有量閾値によって定義される最大占有量に達すると、ソリッドステート記憶デバイス114へのいかなるキャッシュ挿入も追加記憶容量が利用可能となるまで防ぐ。キャッシュコントローラ312は、ソリッドステート記憶デバイス114が最大占有量に達した時でさえも、読み込みが、ソリッドステート記憶デバイス114内のデータ上で発生することを可能にする。ソリッドステート記憶デバイス114は、ソリッドステート記憶デバイス114が過剰に記憶されないこと、ならびにソリッドステート記憶デバイス114内に記憶されるデータの保護を提供することを、上述のように保証することができる。
いくつかの実施形態において、キャッシュコントローラ312は、ソリッドステート記憶デバイス114上で使用される物理記憶容量の量を定義する対象の占有量閾値をさらに定義することができる。いくつかの実施形態において、キャッシュコントローラ312は、ソリッドステート記憶デバイス114が対象の占有量閾値に達すると、ソリッドステート記憶デバイス114からデータが排除される比率を高めるための操作を行うことができる。いくつかの実施形態において、キャッシュ管理装置130は、対象の占有量閾値が到達された時点でのみソリッドステート記憶デバイス114からデータを排除することを開始する。他の実施形態において、キャッシュコントローラ312は、対象の占有量閾値に到達した際に、バックアップエンジン314の優先度を高めることができる(例えば、フォアグラウンドプロセスとして作動するようにバックアップエンジン314を設定する、あるいはその別様に優先度および/またはバックアップエンジン314に割り当てられる相対帯域幅を高める)。このような実施形態において、バックアップエンジン314は、対象の占有量閾値が到達されるまでバックグラウンド処理として作動する(例えば、低い優先度または低い帯域幅割り当てのバックアップエンジン314を与えることにより)。現在の物理記憶容量、閾値等は、キャッシュコントローラ312および/またはグルーマー310によるアクセスのために、メタデータ117内に維持することができる。
上述のように、メタデータ117は、有効性マップを含むことができる記憶メタデータ316を含むことができる。本明細書で使用されるマップは、固有キーの集団とそれぞれの値とを関連付けるいかなる関連付けデータ構造をも指す。マップ内の固有キーの検索は、関連する値を戻す。有効性マップは、ソリッドステート記憶デバイス114の記憶ユニットと、ユニットと関連付けられるデータが、有効または無効のどちらかであると特定する有効性インジケータとを関連付けることができる。有効性インジケータは、1つの状態が有効データを表し、他方の状態が無効データを表す、有効性マップ内のビットであってもよい。有効性マップ316は、ビットマップ、テーブル、リスト、または当技術分野において知られる他のデータ構造であり得る。例えば、有効性マップは、アドレス空間のような非常に大きく潜在的にまばらに追加されるドメインを管理することに適した、有効または無効な記憶ユニット(および/または記憶ユニットセットまたは範囲)のみの表現を含むデータ構造であり得る。例えば、有効性マップは、有効データを含む各記憶ユニットのエントリのまばらな配列を含んでもよい。無効性は、有効性マップ(位置が有効性マップ内にない場合、次いで、位置は無効である)から得ることができ、あるいはその逆もまた同様である。
ソリッドステート記憶デバイス114のユニットまたは記憶ユニットは、アドレス可能なソリッドステート記憶媒体320上の物理的記憶ユニットを指し得る。いくつかの実施形態において、メタデータ117は、1対1の記憶ユニットに対する論理ブロックアドレス(LBA)の比率を維持することができ、すなわち、1つのLBAは、1つの記憶ユニットまたはユニットと関連付けられ得る。代替として、またはさらに、LBA(またはインデックス節点)は、記憶ユニットの長さまたは範囲と関連付けられ得る。いくつかの実施形態において、記憶ユニットは、フラッシュメモリまたは他の不揮発性記憶媒体を備えることができるソリッドステート記憶媒体320内の物理的ブロックアドレス(「PBA」)によってアドレス決定される、物理的ブロックである。別の実施形態において、記憶ユニットは、ハードディスクドライブ上のシリンダーヘッドセクター(「CHS」)位置を指し得る。記憶ユニットの性質は、ソリッドステート記憶デバイス114によって使用される特定の記憶媒体によって異なる。ソリッドステート記憶デバイス114は、多種類の記憶ユニットを同時サポートすることができる。
有効性マップ316内において有効とマークされるソリッドステート記憶デバイス114の記憶ユニットと関連付けられるデータはソリッドステート記憶デバイス114上に保持することができ、その一方無効ユニットと関連付けられるデータ(マークされるおよび/または推測されるどちらか一方)はソリッドステート記憶デバイス114から除去され得る。無効記憶ユニットは、記憶区分再生プロセス(例えば、ガーベジコレクション)における除去の候補となり得る。復旧される記憶区分内の有効データは、ソリッドステート記憶デバイス114の他の記憶区分へ有効データを書き込むことによりソリッドステート記憶デバイス114上に保持することができる。
キャッシュメタデータ316は、ビットマップ、テーブル、リスト、または当技術分野において知られる他のデータ構造を含むことができる破棄可能性マップを含んでもよい。破棄可能性マップは、ソリッドステート記憶デバイス114の記憶ユニットを、ユニットに関連付けられるデータが破棄可能または破棄不可能であるかどうかを特定する破棄可能性インジケータと関連付けることができる。ユニットと関連付けられるデータは、それが補助記憶装置118に記憶されている場合、破棄可能である。ユニットと関連付けられるデータが補助記憶装置118内に記憶されていない場合は一般的に破棄不可能である。
図3の例において、記憶メタデータ316およびキャッシュメタデータ318は、同一のデータ構造(メタデータ117)で実装される。例えば、有効性マップおよび破棄可能性マップは、1つのビットが有効性を表し第2のビットが破棄可能性を表す単一マップ内に実装することができる。しかしながら、いくつかの実施形態において、記憶装置ならびにキャッシュメタデータ316および318は、別個のデータ構造として実装することができる。このような実施形態において、1つのデータ構造の単一の読み込みで、特定の記憶ユニットの有効性ステータスおよび破棄可能性ステータスとの両方を判定することができる。例えば、有効性インジケータは、組み合わされたマップの1列であってもよく、破棄可能性インジケータは組み合わされたマップの別の列であってもよい。
キャッシュ管理装置130は、メタデータ117を使用して補助記憶装置118上にバックアップするためのキャッシュエントリを識別するように構成されるバックアップエンジン314を備えることができる。バックアップエンジン314は、記憶メタデータ316において有効として、ならびにキャッシュメタデータ318において破棄不可能としてマークされる記憶ユニットを、補助記憶装置118上に記憶させることができる。補助記憶装置118は、補助記憶装置118から外へ適切に読み出すことができるようにデータを記憶する。例えば、バックアップエンジン314は、メタデータ117を使用して有効および破棄不可能としてマークされる記憶ユニットを識別することができる。ユニットと関連付けられるデータは、LBAおよびLBAに対応するデータを含むことができる(ソリッドステート記憶媒体320上に記憶されるように)。バックアップエンジン314は、データを読み込み、データを補助記憶装置118で記憶させることができる。結果として、補助記憶装置118を対象とするLBAのための今後の読み込み要求は、LBAと関連付けられるデータを適切に受けとる。補助記憶装置118上に無事に記憶されたことを判定した後、バックアップエンジン314は、記憶ユニットを破棄可能としてマークすることができる。
いくつかの実施形態において、バックアップエンジン314は、ソリッドステート記憶デバイス114上でバックグラウンド処理として作動する。したがって、バックアップエンジン314は、低い優先度で実行され、ソリッドステート記憶デバイス114上の予備のサイクルおよび帯域幅を消費するのみである可能性がある。いくつかの実施形態において、キャッシュコントローラ312は、バックアップエンジン314の優先度を高める、あるいはそれ以外でバックアップエンジン314をフォアグラウンドへ移すことができる。いくつかの実施形態において、キャッシュコントローラ312は、ソリッドステート記憶デバイス114が目標とする占有量閾値に達する際、バックアップエンジン314の優先度を高める。キャッシュコントローラ312は、ソリッドステート記憶デバイス114が最大占有閾値に近づくにつれて、キャッシュコントローラ312の優先度をさらに高め得る。いくつかの実施形態において、キャッシュコントローラ312は、バックアップエンジン314に、ソリッドステート記憶デバイス114が最大占有閾値に達する時点で、ソリッドステート記憶デバイス114内において破棄可能としてマークされるユニットがない場合、またはソリッドステート記憶デバイス114内において破棄可能としてマークされるユニットが不十分な数存在する場合、最高の優先度を与える。
いくつかの実施形態において、バックアップエンジン314は、最古のデータと関連付けられるソリッドステート記憶デバイス114内のユニットから開始し、図9に関連してさらに詳しく記載されるバックアップ操作を行うソリッドステート記憶デバイス114内のユニットを通して年代順に進行する。上述のように、バックアップエンジン314は、破棄可能性インジケータに対応するステータスにかかわらず、バックアップメタデータ117内に無効としてマークされる記憶ユニットと関連付けられるデータをバックアップしない可能性がある。記憶ユニットと関連付けられるデータが補助記憶装置118内に記憶される時点で、バックアップエンジン314は破棄可能性インジケータを破棄不可能から破棄可能へ変更するようメタデータ117を更新する。バックアップエンジン314は、破棄可能性インジケータを変更する前に、データが補助記憶装置118内に無事に記憶されたことを確認するために補助記憶装置118に対して待機することができる。いくつかの実施形態において、バックアップエンジン314は、グルーマー310に対し、ソリッドステート記憶デバイス114の特定の記憶領域がバックアップされたこと、ならびに破棄可能であることを示すことができる。関連する実施形態において、バックアップエンジン314は、グルーマー310に対し記憶領域の年代を示し得、それによりグルーマー310が記憶領域をいずれのさらなるデータの移動もなしに再生することを可能にする。
メタデータ117は、ソリッドステート記憶デバイス114の記憶ユニット内におけるデータの年代を追跡するために、インジケータ(例えば、ログ)を含むことができる。メタデータは、データが特定の記憶ユニットへ書き込まれたとき、および/またはデータが特定の記憶ユニットから読み込まれたときに関するインジケータを含むことができる。参照することにより本明細書に組み込まれる、2007年12月6日に申請されたDavid Flynnらに対する「Apparatus, System, and Method for Managing Data Using a Data Pipeline」と題される米国特許出願第11/952,091号は、ソリッドステート記憶デバイス内にデータを連続的に記憶するアプローチを説明する。このようなデバイスにおいて、データが記憶ユニット内に記憶される順、したがって、それらの記憶ユニットと関連付けられるデータの年代は、ほとんどの場合、記憶デバイス内のデータのシーケンスから得られる。上記アプリケーションにおいて記載されるようにソリッドステート記憶デバイス114がデータを連続的に記憶する実施形態において、キャッシュコントローラ312は、ユニットがソリッドステート記憶デバイス114内に記憶されている順、および/または記憶ユニットの記憶区分と関連付けられるシーケンスインジケータからデータの年代に関する情報を導き出すことができる。そのような実施形態において、キャッシュ管理装置130は、メモリおよび書き込みが発生した際に追跡するための分離ログを維持することの計算における関連コストなしに、データの年代を導き出すまたは見積もることができる。
いくつかの実施形態において、メタデータ117は、ソリッドステート記憶デバイス114の特定のユニット内におけるデータ上の読み込み数を追跡するのに使用することができる。メタデータ117はまた、いつそれらの読み込みが発行されたかのインジケータを含むこともできる。このメタデータ117は、ソリッドステート記憶コントローラ115、グルーマー310、またはソリッドステート記憶デバイス114の他のプロセスによって維持することができる。キャッシュコントローラ312は、特定の記憶ユニットの最後の読み込みが発行されたのがいつか、(最も長い間使用されていない記憶ユニットを判定する)、追跡するためにメタデータ117にアクセスすることができる。代替として、またはさらに、キャッシュコントローラ312は、記憶ユニットアクセスパターンを追跡するためにメタデータ117を使用することができ、特定のユニットがホットまたはコールドデータを含んでいるかどうかを判定する際に、アクセスの頻度またはタイミングを考慮に入れることができる。
図4は、記憶クライアント(例えば、ファイルシステム210)と、キャッシュデバイスの機能を果たすソリッドステート記憶デバイス114と、補助記憶装置118の機能を果たすハードディスクドライブとの間の相互作用における例示的実施形態を示す。他の媒体との本システム上の他の変形も、ほかの実施形態で実装することができる。
ファイルシステム210が、(例えば、ファイルとして)永続記憶装置で記憶されるべきデータを有する場合、それは使用する1つ以上の適正なLBAを一般的に決定する。ファイルシステム210は、関連付けられるデータを持たない利用可能なLBAのプールから1つのLBAを選択することができる。例えば、ファイルシステム210がデータDを書き込む場合、ファイルシステムはデータDに対してLBA0のような1つのLBAを選択する。ファイルシステムは、ソリッドステート記憶デバイス114の機能を果たすソリッドステート記憶デバイスへデータDを書き込む。いくつかの実施形態において、上述のように、ファイルシステム210は、ソリッドステート記憶デバイス114によって提示される論理空間と情報をやり取りし、ソリッドステート記憶デバイス114の存在を認識しない。
ソリッドステート記憶デバイスは、初期化され使用できる状態の記憶ユニット402を有する。ソリッドステート記憶デバイス114は、LBAとソリッドステート記憶デバイス114上の記憶ユニットと関連付けるメタデータを記憶することができる。記憶ユニット402は、ソリッドステート記憶デバイス114上でアドレス指定可能であり得る、いくつかの実施形態において、記憶ユニット402のアドレスは、物理ブロックアドレス(「PBA」)である。具体的な実施形態において、ソリッドステート記憶デバイス114には、PBAに対するLBAの1対1のマッピングが存在する。
メタデータ117において、記憶ユニット402は、有効性インジケータ(「有効」列によって表される)および破棄可能性インジケータ(「破棄」列によって表される)と関連付けることができる。いくつかの実施形態において、メタデータは、「まばら」であってもよく、有効データが存在するエントリのみを含む。したがって、有効性インジケータは、メタデータ117内に含められるかどうかから推測することができる(例えば、LBAおよび/または記憶ユニットがメタデータ内にある場合、記憶ユニットが有効データを含む、さもなければ、記憶ユニットが無効データを含む)。いくつかの実施形態において、記憶ユニット402は、記憶ユニット402に対する物理アドレス(例えば、PBA)を鍵として使用して(例えば、上述の逆インデックス)有効性インジケータおよび破棄可能性インジケータへマップすることができる。
ソリッドステートソリッドステート記憶デバイス114が、ファイルシステム210から書き込み要求を受け取る際、ソリッドステートソリッドステート記憶デバイス114は、要求内で参照されるデータが記憶される初期化されたユニット(記憶ユニット402等)を選択する。その要求は、データを含むことができ、データの一部を含んでもよく、および/または実質的にデータがない場合がある。上述のように、記憶ユニット402の選択は、逐次的書き込みの機構に従って行われ得る。例えば、メタデータ117は、「次の」利用可能な記憶ユニットを参照する1つ以上の付加ポイント(示されない)を維持することができる。データがソリッドステート記憶デバイス114に書き込まれると、付加ポイントは、ソリッドステート記憶デバイス114の次の記憶ユニットへ逐次的に増加され得る。この逐次的な書き込みは、とりわけ、磨耗レベリングの利点を提供することができ、書き込み増幅(write amplification)を低減させることができる。
ソリッドステート記憶デバイス114は、選択された記憶ユニット402に記憶要求のデータ(例えば、論理アドレスLBA0およびデータD)を記憶し、それに応じてメタデータ117を更新する。メタデータ117を更新することは、LBA0を記憶ユニット402の参照(例えば、物理アドレス)と関連付けるようにインデックス410を更新することを含んでもよい。更新することは、Bツリーへの葉節点を追加することまたは他の順マップデータ構造を含んでもよい。エントリは、高速かつ効率的なLBA対記憶ユニットの関連付けを可能にするため、LBA(LBA0)によってインデックス付けされてもよい。
メタデータ117を更新することは、記憶ユニット402のための有効性および破棄可能性インジケータを設定することをさらに含むことができる。これらの操作は、図4の「SSDイベントの行を追加する」という列で表され、それは論理アドレスLBA0がデータ「D」(順および/または逆インデックスで)と関連付けられ、記憶ユニット402の有効性インジケータを「1」(例えば、有効)へ設定し、破棄可能性インジケータを「0」(破棄不可能)へ設定することを示す。破棄可能性インジケータは、データDが補助記憶装置(例えば、ハードディスクドライブ)上でバックアップされていないため「0」(破棄不可能)に設定され、ハードディスクドライブへバックアップすることなく、ソリッドステート記憶デバイス114からデータDを除去すると、データの損失および/または破損をもたらすこととなる。
図4で示されるように、クライアント(例えば、ファイルシステム210)は、データDを修正することができる。更新されたデータは、D’によって表される。更新は、データDを修正する(またはデータDに対する修正をもたらす別の操作を行う)ファイルシステム210(またはいくつかの他の実体)を含むことができる。ファイルシステム210は、LBA0で修正データD´を記憶するための記憶要求を発行することができる。いくつかの実施形態において、ファイルシステム210は、ソリッドステート記憶デバイス114が存在するということを認識しているが(非透過キャッシュ)、他の実施形態においては、ファイルシステム210は、ソリッドステート記憶デバイス114を認識せず、更新要求はソリッドステート記憶デバイス114によって透過的に処理される。
記憶要求に応答して、ソリッドステート記憶デバイス114は、修正データD’をソリッドステート記憶媒体へ逐次的に書き込むことができる。上述のように、逐次記憶は、ソリッドステート記憶デバイスの異なるユニットにおいて、修正データD’を「位置をずらせて」記憶することを含むことができる。逐次的な書き込みは、とりわけ磨耗レベリングの利点を提供することができ、書き込み増幅を低減させることができる(例えば、同一の記憶ユニット402上で修正データD’を記憶することは、記憶ユニット402の記憶区分を削除すること、および記憶区分上の他の有効データを伴ってD’を書き込むことを必要とし得る)。
修正データD’を記憶することは、ソリッドステート記憶デバイス114が修正データD’を記憶するための「次の」記憶ユニット(記憶ユニット404)を選択することを含むことができる。この選択は、上述の逐次的な記憶装置の機構に従って行うことができる(例えば、1つ以上の付加ポイントでの「次の」記憶ユニットであり得る)。記憶区分402に関するメタデータ117は、データがもはや有効ではなく、破棄可能である(または気にしなくてよい状態にある)ことを示すために更新することができる。記憶ユニットに対して論理アドレスを関連付けるメタデータ117は、LBA0を選択された記憶区分404と関連付けるために更新することができる。さらに、選択された記憶ユニット404に関するメタデータは、記憶ユニット404が有効、破棄不可能データを含むことを示すために更新することができる。図4は、更新1のデータD’が、記憶ユニット404へ書き込まれ、前と同じく、有効性インジケータは、ユニット404のデータD’が有効かつ破棄不可能であることを示すために変更されることを示す。
グルーマー310は、ある時点で、ユニット402の有効性インジケータを検査し、無効に設定されていることを確認し、ユニット402上でガーベジコレクション操作(GC1)を行うことができる。ガーベジコレクション操作は、記憶ユニット402を初期化状態に戻し、その時点でユニット402はデータを記憶するために再び使用することができる。
図4は、ユニット404のデータD’上でバックアップ操作(BU1)を行うソリッドステート記憶デバイス114をさらに示す。いくつかの実施形態において、バックアップエンジン314は、バックアップを行う。バックアップエンジン314は、データD’をLBA0の論理アドレスおよびデータ値D’でハードディスクドライブ内で記憶させるようにする。バックアップエンジン314は、ハードディスクドライブ宛にデータD’とともに、LBA0に宛てたアドレスを取る書き込み要求を送ることができる。いくつかの実施形態において、バックアップエンジン314は、破棄可能性インジケータを破棄不可能から破棄可能(「1」へ)変更する前に、ハードディスクドライブがLBA0でD’を首尾よく保存したという確認を待つ。ハードディスクドライブは、データD’のために、LBAと物理アドレスとの間の独自の内部関連付けを(例えば、特定のCHSに対してのLBA0のような)行うことができる。
いくつかの実施形態において、バックアップ操作は、ファイルシステムに対して透過的である様態で起こる、すなわち、ファイルシステムは、データD’が今や、ソリッドステート記憶デバイス114とハードディスクドライブの両方に存在するということを認識しない。同様に、GC1のようなグルーミング操作は、ファイルシステムに対して透過的に行うことができる。
図4は、データをD´´に変更するLBA0のためにファイルシステム210(または他の実体)によって生じるさらなる更新2を示す。ユニット402と同様に、それに応答して、ソリッドステート記憶デバイス114はユニット404をメタデータ117内において無効としてマークする。ユニット404が無効として識別されるため、破棄可能性インジケータは変更されてもよいし変更されなくてもよく、破棄可能性インジケータのステータスは、ユニット404がグルーマー310によってゴミ集めされる(GC2に示される)、ユニット404は有効性マップおよび破棄可能性マップ内のエントリとともに、ユニット404が新しいデータを記憶するために再び使用されるように初期化されるので、意味を成さなくなる。
さらに更新2は、LBA0およびデータD´´を、上記のように有効に設定された有効性インジケータを有する新しいユニット406へ、逐次的に書き込ませる。データD´´がハードディスクドライブへ移動されていないため、でなければ、ハードディスクドライブ内にないため、破棄可能性インジケータは破棄不可能に設定される。更新2は、メタデータ117のインデックス410を、LBA0を記憶ユニット406と関連付けるために修正することをさらに含んでもよい。バックアップエンジン314が、示されるようにデータD´´をハードディスクドライブへフラッシュする時点(BU2)で、破棄可能性インジケータは破棄可能に変更される。
ファイルシステムは、さらに、TRIMコマンドをソリッドステート記憶デバイス114として機能しているソリッドステート記憶デバイスへ発行することができる。TRIMコマンドは、ファイルシステムが、どのデータ記憶ユニット(論理ブロックアドレス)が使われていないかを、ソリッドステート記憶デバイス(ソリッドステート記憶デバイス114等)へ伝えることを可能にする。これは、ソリッドステート記憶デバイス114がどの記憶ユニットが使用中であるか、およびどれが空いているかを知ることを確実にし、ソリッドステート記憶デバイスが、ファイルシステムが必要ないおよび/または無効であると認識するデータを保持しないことを確実にする。TRIMコマンド仕様は専門委員会(Technical Committee)T13が主唱するAT Attachment(「ATA」)インターフェース規格の一部として現在標準化されている。
図4に示されるように、いくつかの実施形態において、ファイルシステムは、LBA0(テキストファイル等)と関連付けられるデータD´´が削除されていることを判定し、LBA0を利用可能なプールに追加する。ファイルシステム(または他の実体)は、TRIMコマンドを含む記憶要求をソリッドステート記憶デバイス114へ送ることができる。ソリッドステート記憶デバイス114は、TRIMコマンドを受け取り、いくつかの実施形態においては、データを保留している影響されるユニット(ユニット406等)を無効としてマークする無効SSDイベントで応答する。ソリッドステート記憶デバイス114は、次いで、その後の時点で、ユニット406を復旧するためにガーベジコレクション操作GC3を将来の使用のために実行することができる。TRIMは、LBA0のエントリを除去するためにメタデータ117のインデックス410を更新することをさらに含んでもよい(例えば、0を表す葉節点をBツリーから除去する)。
いくつかの実施形態において、ソリッドステート記憶デバイス114として機能しているソリッドステート記憶デバイスは、TRIMをサポートしない場合がある。いくつかの実施形態においては、ソリッドステート記憶デバイス114および補助記憶装置118の両方ともが、TRIMをサポートすることができる。そのような実施形態において、ソリッドステート記憶デバイス114は、TRIMコマンドを実行することができ、次いで図4に示されるようにTRIMコマンドを補助記憶装置118へ渡すことができる。他の実施形態において、ソリッドステート記憶デバイス114および補助記憶装置118のうちの1つはTRIMをサポートすることができるが、他方はサポートしない場合がある。そのような実施形態において、ソリッドステート記憶デバイス114および補助記憶装置118は、それらがTRIMコマンドを無視するように構成することができる。他の実施形態において、TRIMをサポートするデバイスは、TRIMコマンドを実行することができ、他方からTRIMコマンドを隠すことができる。
関連する実施形態において、ソリッドステート記憶デバイス114は、補助記憶装置118内のLBAがトリムされているというインジケータを維持することができ、HDDがTRIMをサポートしないにもかかわらず、クライアントファイルシステムに正確に応答するためにこの情報を利用することができる。したがって、例えば、ハードディスクドライブ上のトリムされたLBA内のデータにアクセスすることを試みる操作は、トリムされたLBAのデータがハードディスクドライブ上に依然として存在するにもかかわらず、ソリッドステート記憶デバイス114によって遮られる。ソリッドステート記憶デバイス114は、さらに、HDD上のLBAに関連するデータを上書きし、あるいは別様に、その不適切な部分を削除し、データが復旧可能でないことを確実にすることができる。ソリッドステート記憶デバイス114は、ファイルシステムおよびHDDの観点からすれば、これらの操作を透過的に行うことができる。
図5は、読み込みアクセス要求を処理する本システムの1つの例を示す。図5に示されるように、ファイルシステムは、LBA1を、データAを保持するように割り当て、このデータが記憶されるようにしている。図5は、データAがハードディスクドライブのLBA1と関連付けられるが、ソリッドステート記憶デバイス114において不在であることを示す。ファイルシステム210は、LBA1におけるデータの読み込みを発行する。いくつかの実施形態において、ソリッドステート記憶デバイス114は、読み込み要求を受信し、LBA1と関連付けられるデータAがソリッドステート記憶デバイス114内に記憶されていないことを判定する(図5に示されるようにミスとして解釈される)。いくつかの実施形態において、ソリッドステート記憶デバイス114は、LBA1と関連付けられるユニットでデータを読み込むことを試みることにより、データAがソリッドステート記憶デバイス114内にないことを判定する。ソリッドステート記憶デバイス114は、例えば、メタデータ117、具体的にはインデックス410を使用してLBA1にアクセスすることを試みることができる。インデックス410内にLBA1に対するエントリがない場合、ソリッドステート記憶デバイス114は、エラーを生成させ得、それはキャッシュミスとして解釈され得る。メタデータ117はLBA(Bツリーデータ構造内において)によってインデックス付けすることができるため、この判定は迅速かつ効果的になされる。
キャッシュミスに応答して、ソリッドステート記憶デバイス114は、ハードディスクドライブへ読み込み要求をリダイレクトし、これはLBA1においてデータAにアクセスする。データAはハードディスクドライブから読み出され、ファイルシステム210に戻される。ソリッドステート記憶デバイス114のキャッシュコントローラ312は、さらに、選択記憶ユニット502内にデータAをLBA1の論理アドレスとともに記憶するために、投入SSDイベント(投入1)を実行する。ソリッドステート記憶デバイス114は、インデックス410内の記憶ユニット502にLBA1を関連付けるために、メタデータ117を更新することができる。
図5に示されるように、読み込み2に応答して、ソリッドステート記憶デバイス114は、読み込み2がキャッシュヒットとなっているので、ユニット502からデータAを読み出す。ソリッドステート記憶デバイス114は、データAをファイルシステム210へ読み込み要求2への応答として返却する。ソリッドステート記憶デバイス114は、速くかつ効果的に、LBA1に対応するデータがソリッドステート記憶デバイス114上で利用可能であることを判定することができ、メタデータ117(インデックス410)を使用してデータを含む記憶ユニット502を特定することができる。
データAが投入1操作の一部としてユニット502内に記憶される場合、ソリッドステート記憶デバイス114は、データAがハードディスクドライブ内のLBA1内に適切に記憶され、それと関連付けられていることを反映するために、有効性インジケータを有効に設定し、さらに破棄可能性インジケータを破棄可能に設定する。したがって、データAは、ソリッドステート記憶デバイス114からデータの破損なしに除去することができる。例えば、ソリッドステート記憶デバイス114上で作動するキャッシュ管理装置は、排除ポリシーを適用することができ、(例えば、アクセスパターン、グルーミング考慮等に基づいて)データAが排除されるべきであることを判定することができる。破棄可能性インジケータがメタデータ117内において「1」に設定されているため、排除に先立つユニット502上のバックアップなしに、排除が発生し得る。
図5は、LBA1と関連付けられるデータをAからA´へ変更する更新1を発行するファイルシステム210をさらに示す。前述のように、ソリッドステート記憶デバイス114は、無効性マップを使用してユニット502を無効としてマークし、グルーマー310は、将来使用するために利用可能とするようにユニット502を初期化するために、ガーベジコレクション操作GC1を行う。さらに、ソリッドステート記憶デバイス114は、LBA1およびデータA´を新しいユニット504内に記憶し、無効性インジケータを有効に設定し、破棄可能性インジケータを破棄不可能に設定する。メタデータ117のインデックス410は、上述のようにLBA1を記憶ユニット504に関係付けるように更新することができる。ソリッドステート記憶デバイス114は、バックアップ操作BU1の間、データA´をハードディスクドライブへ記憶し、破棄可能性インジケータを破棄可能に設定する。
図5は、排除SSDイベント(排除1)においてデータA´がソリッドステート記憶デバイス114から排除されることをさらに示す。いくつかの実施形態において、排除1操作は、ファイルシステムに対して透過的である。ソリッドステート記憶デバイス114は、キャッシュコントローラ312がデータがコールドになったことを判定する場合、例えば、ファイルシステム210が所定の期間の間データA´を読み込んでいない場合、データA´を排除することができる。いくつかの実施形態において、キャッシュコントローラ312は、有効性インジケータを無効に設定することによりデータA´を排除する。排除は、インデックス410内のLBA1と記憶ユニット504との間の関連を除去することをさらに含むことができる。除去はLBA1のデータA´がソリッドステート記憶デバイス114上にもはや記憶されていないことを示すことができる。
次いで、ソリッドステート記憶デバイス114は、ユニット504を初期状態に戻すよう設定するためにユニット504をガーベジコレクトすることができる。他の実施形態において、ソリッドステート記憶デバイス114は、ユニット504を排除1で示される中間状態にする代わりに、排除プロセスの一部としてユニット504を直接的にガーベジコレクトする。他の実施形態において、グルーマー310は、以下により詳細に説明されるように、データA´が有効としてマークされるにもかかわらずグルーミング操作の一部としてデータA´を排除する。
図6は、補助記憶装置118のためのソリッドステート記憶デバイス114として作動するように記憶デバイスを構成するための方法600のいくつかの実施形態を示す。いくつかの実施形態において、方法600のステップは、ソリッドステート記憶デバイス、ソリッドステート記憶媒体、通信インターフェース、プロセッサ、メモリ等のような特定の機械構成要素と結び付けられることができる。機械が方法600を実装させるよう構成された機械可読命令は、不揮発性メモリ、ディスク、光媒体等のような持続性機械可読記憶媒体上に記憶されてもよい。
いくつかの実施形態において、クライアント110a〜cは、ファイルサーバ210を通してソリッドステート記憶デバイス114と通信する。しかしながら、本開示は、この点に限定されず、クライアント110a〜cは、直接的におよび/またはデータベースサーバ、ウェブサーバ、記憶プロトコル等の他のプロセスもしくは実体を通してソリッドステート記憶デバイス114と通信することができる。方法600は、ユーザがソリッドステート記憶デバイス114を本システム100において利用可能にすし602、補助記憶装置118を本システム100において利用可能にする604ことから開始する。
いくつかの実施形態において、ステップ606において、ソリッドステート記憶デバイスは、補助記憶装置118と同じ物理記憶容量を有する論理アドレス空間を提供するように構成することができる。補助記憶装置118が、ソリッドステート記憶デバイス114の物理記憶容量より大きい物理記憶容量を有する場合、ソリッドステート記憶デバイス114は、ソリッドステート記憶デバイス114がソリッドステート記憶デバイス114上で物理的に利用可能なものより大きい論理アドレス空間を提示することができるように、まばらなアドレスをサポートするよう構成されてもよい。例えば、ソリッドステート記憶デバイス114は、FUSION_SPARSEFS_SUPPORTフラグセットで構築されてもよい。いくつかの実施形態において、ステップ606の構成は、ソリッドステート記憶デバイス114および補助記憶装置118の両方の物理記憶容量を上回る論理アドレス空間を提示するソリッドステート記憶デバイスを含むことができる。
ステップ608において、ソリッドステート記憶デバイス114および補助記憶装置118の両方が本システム内に存在する状態で、ソリッドステート記憶デバイス114は、補助記憶装置118のためのキャッシュとしての機能を果たすよう構築されてもよい。方法600は、リッドステート記憶デバイス114上でキャッシュとして使用するために利用可能である物理空間の最大量を定義する最大の占有量閾値610を設定することも含むことができる。最大の占有量閾値は、外部の実体(例えば、管理者)によってソリッドステート記憶デバイス114に提供されてもよく、またはキャッシュ管理装置130自体が適正な閾値を決定することができる。
ステップ612において、ソリッドステート記憶デバイス114に対する目標とする占有量閾値は、上述のように(例えば、実体および/またはソリッドステート記憶デバイス114によって)設定することができ、方法600は終了する。いくつかの実施形態において、キャッシュ管理装置130は、ソリッドステート記憶デバイス114内の占有量を目標の占有量閾値未満に保つよう試みる。キャッシュ管理装置130は、ソリッドステート記憶デバイス114が対象の占有量閾値を上回ると、キャッシュ排除を開始することによってそれを行うことができる。
図7は、ソリッドステート記憶デバイス上でデータをキャッシングするための方法700の例示的な実施形態を示す。上述のように、方法700のステップは、特定の機械構成要素と結び付けられる、および/または持続性機械可読記憶媒体上に記憶される機械可読命令を使用して実装されてもよい。
方法700は、702ソリッドステート記憶デバイス114がLBA等のデータのためのアドレスを含む読み込み要求を受け取ることで開始する。ステップ704で、方法700は、そのアドレスと関連付けられたデータがソリッドステート記憶デバイス114上で利用可能かどうかを判定する。判定は、ソリッドステート記憶デバイスによって維持されたメタデータ117、具体的には、論理アドレスと関連する記憶ユニットとの関連を含むインデックスを使用して行われ得る。アドレスがインデックスに存在する場合、方法700は、データが利用可能であると判定することができ、流れは、ステップ706へ続くことができ、そうでなければフローはステップ710へ続くことができる。
要求データは、ステップ706において1つ以上の記憶ユニット上でアクセスされ得る。記憶ユニットは、上述のように、インデックス内で特定され得る。ステップ708において、記憶操作と関するメタデータが、データアクセスを反映するように更新され得る。メタデータは、「ホット」および/または「コールド」論理アドレス等のアクセスパターンを決定すること、アクセス時間を判定すること等のために使用することができる。いくつかの実施形態において、記憶メタデータは、記憶区分の復旧操作を行うためにグルーマー310に対して、および/またはキャッシング操作(例えば、排除ポリシー)を管理するためにキャッシュ管理装置130に対してアクセス可能であってもよい。フローはその後終了することができる。
ステップ710において、方法700は、読み込み要求を補助記憶装置118内のアドレスへリダイレクトする。キャッシュコントローラ312は、データを読み込み712、読み込み要求を生み出した実体へそのデータを戻す。
キャッシュコントローラ312は、また、データをソリッドステート記憶デバイス114へ挿入し714、データを特定したアドレスに(インデックスまたは他のメタデータにおいて)関連付ける。いくつかの実施形態において、データは、逐次的に、および/または図8に関連して説明された書き込み方法に従って、書き込まれる。いくつかの実施形態において、ソリッドステート記憶デバイス114に空いている記憶ユニットがない場合、キャッシュコントローラ312は、ソリッドステート記憶デバイス114へデータを挿入しない。
キャッシュコントローラ312は、データがソリッドステート記憶デバイス114から除去されるまで、今後の読み込み要求がソリッドステート記憶デバイス114からデータを読み出すように、メタデータ(インデックス)を更新することができる。さらに、キャッシュコントローラ312は、メタデータ117を更新して、データを含む記憶ユニットが有効かつ破棄可能であることを示すことができる。ステップ716は、キャッシュコントローラ312がロギングメタデータをいつデータがソリッドステート記憶デバイス114に挿入されたかを示すように更新することをさらに含み、方法700は終了する。他の実施形態において、ソリッドステート記憶デバイス114は、データを逐次的に記憶し、データの年代はソリッドステート記憶デバイス114内のその位置から導き出される。
図8は、ソリッドステート記憶デバイス上のデータをキャッシングする方法800の例示的な実施形態を示す。上述のように、方法800のステップは、特定の機械構成要素と結び付けられる、および/または持続性機械可読記憶媒体上に記憶される機械可読命令を使用して実装されてもよい。
キャッシュ管理装置130は、ソリッドステート記憶デバイス114を書き戻しキャッシュとして構成することができ、そこではデータがまずクライアントによってソリッドステート記憶デバイス114に書き込まれ、後に補助記憶装置118へ移動される。方法800は802キャッシュ管理装置130が書き込み要求を受け取ることで開始する。書き込み要求は、永続記憶装置に記憶されるであろうデータを参照することができる。要求は、このデータを含んでもよく、および/または実質的にデータを含まなくてもよい。書き込み要求は、論理アドレス(例えば、LBA)と関連付けられてもよい。
キャッシュコントローラ312は、ソリッドステート記憶デバイス114上に空き領域があるかどうかを判定する804。キャッシュコントローラ312は、ソリッドステート記憶デバイス114がその最大容量の閾値を上回らないことを確実にするためにこのチェックを行う。いくつかの実施形態において、キャッシュコントローラ312は、ソリッドステート記憶デバイス114へデータを書き込むことに先立って、判定804を行う。他の実施形態においては、上述のように、判定804の頻度は変動する。
判定は、ソリッドステート記憶デバイス114によって維持されるメタデータにアクセスすることを含み得る。メタデータは、論理ブロックアドレスを記憶ユニットと関連付けるインデックスを含んでもよい。有効データによって占有されている記憶ユニットは記憶に対して利用可能ではなく、一方で占有されていない記憶ユニットは使用に対して利用可能であり得る。メタデータは、さらに、ソリッドステート記憶デバイス114の記憶ユニットを各有効性/破棄可能性インジケータに関連付ける逆インデックスを含んでもよい。無効および/または破棄可能である記憶ユニットは、記憶のために利用可能であるとみなされ得る。
ソリッドステート記憶デバイス114内に空き領域がある場合、キャッシュコントローラ312はデータをソリッドステート記憶デバイス114のユニットへ書き込み806、そのユニットを破棄不可能としてマークする。ステップ806の書き込みは、上述のような逐次的な記憶操作を含んでもよい。逐次的な書き込みは、データを記憶するために(例えば、付加ポイントまたは他の逐次インジケータを使用して)記憶ユニットを選択すること、選択される記憶ユニット上にデータを書き込むこと、書き込み要求の論理アドレス(1つまたは複数)を選択される記憶ユニットに関連付けるようにソリッドステート記憶デバイス114のメタデータを更新すること等を含むことができる。
バックアップエンジン314は、次いで、データが補助記憶装置118内に記憶されるように、データを補助記憶装置118へバックアップ808することができる。記憶ユニットのバックアップは、記憶ユニットが破棄可能であることを示すようにソリッドステート記憶デバイスを更新することを含んでもよい。バックアップエンジン314は、選択された優先度レベルで作動することができ、したがって、データを補助記憶装置118へバックアップ808するのに良いタイミングまで待機することができる。ステップ808に続いて、方法800は終了することができる。
ソリッドステート記憶デバイス114上にデータのための空間が無い場合、キャッシュ管理装置130は、キャッシュ管理装置130がソリッドステート記憶デバイス114内にデータのための場所を用意するまで、書き込み要求を一時停止810する。他の実施形態において、キャッシュ管理装置130は、データを補助記憶装置118に書き込ませることができ、ソリッドステート記憶デバイス114内に十分な空間が生み出されると読み込み操作を行い、その結果、ソリッドステート記憶デバイス114へデータが挿入されることになる。
書き込み要求を一時停止810した後、キャッシュ管理装置130は、(メタデータ117を使用して)ソリッドステート記憶デバイス114内に破棄可能および/または無効としてマークされる記憶ユニットがあるかどうかを判定する812ことができる。このチェックは、さらに、有効/破棄可能メタデータに対する「気にしなくて良い」状態を評価することを含んでもよい。いくつかの実施形態において、破棄不可能な記憶ユニットは、無効としてマークされてもなお保有されることがある(例えば、スナップショット、バックアップ等のために保有されることがある)。破棄可能な記憶ユニットがある場合は、いくつかの実施形態において、キャッシュ管理デバイス130は、破棄可能であるユニットを見つけ820、それらをソリッドステート記憶デバイス114から排除し、戻り、ソリッドステート記憶デバイス114上の空間が利用可能かどうかを判定804する。キャッシュコントローラ312は、例えば、破棄可能である全てのユニットを無効としてマークすることができる。別の実施形態においては、グルーマー310は、破棄可能とマークされたユニット内のデータを保存することなくソリッドステート記憶デバイス114をグルームしてもよい。排除後にソリッドステート記憶デバイス114上に余地がある場合、データはソリッドステート記憶デバイス114に記憶される。
ソリッドステート記憶デバイス114に破棄可能な記憶ユニットがない場合、キャッシュ管理装置130は、破棄可能性マップにおいて破棄不可能とマークされるキャッシュ内に記憶ユニットを見つけ814、それらのユニットを補助記憶装置118にバックアップする816ことができる。いくつかの実施形態において、キャッシュ管理装置130は、バックアップエンジン314の優先度を高めることによりこれを行う。データが補助記憶装置118に移動されると、キャッシュ管理装置130は、それらのユニットを破棄可能としてマーク818するようにメタデータ117を更新し、破棄可能であるユニットを見つけ820、それをソリッドステート記憶デバイス114から排除する。キャッシュ管理装置130が戻り、ソリッドステート記憶デバイス114上にデータを書き込むために空間が利用可能かどうかを再度判定する804。
図9aはソリッドステート記憶デバイス114の記憶ユニット914からユニット926を通してバックアップ操作を行っているバックアップエンジン314の例示的な実施形態を示す。図9aは、関連する有効性インジケータ930a〜gおよび破棄可能性インジケータ940a〜gを有する各記憶ユニット914から926を示す。有効性インジケータ930a〜gおよび破棄可能性インジケータ940a〜gは、記憶ユニットの関連に対するキャッシュエントリを備えるマップ等のデータ構造によって、それぞれユニット914〜926と関連付けられる。図9aは、初期状態におけるユニットを示し、図9bは、バックアップエンジン314がユニット914〜926を通して移動する際のユニットを示す。
いくつかの実施形態において、ユニット914から926内のデータは、逐次的に書き込まれる。このような実施形態において、ユニット914から926は、ソリッドステート記憶デバイス114上に徐々に増加する物理アドレスを有する。例えば、ユニット914は、物理アドレス「0」を有し得、ユニット916は物理アドレス「1」を有する等であり得る。データが逐次的に書き込まれる場合は、データは最も低い利用可能な物理アドレスで書き込まれる。ファイルシステムは、データ「A」をソリッドステート記憶デバイス114へ書き込み始める時、データ「A」をユニット914へ物理アドレス0で書き込み、その後に次のデータ「B」をユニット916へ物理アドレス1で書き込む等である。
そのような実施形態において、ソリッドステート記憶デバイス114上のデータの物理的構成を、どのデータが最古でどのデータが最新であるかを示すログとして使用することができる。例えば、ユニット914内に書き込まれたデータはユニット920内に書き込まれたデータより古いことを想定できる。他の実施形態において、ログは、ソリッドステート記憶デバイス114内のデータの年代を絶対的(つまり、タイムスタンプの使用を通じて)、またはソリッドステート記憶デバイス114内の他のデータと比較して、または双方の方法で特定するデータ構造である。いくつかの実施形態において、ソリッドステート記憶デバイス114上のデータの物理的構成が、ソリッドステート記憶デバイス114内のユニットの世代を決定するために、ログと併せて使用される。
図9bに示されるように、いくつかの実施形態におけるバックアップエンジン314は、データを補助記憶装置118にフラッシュすることにより、ソリッドステート記憶デバイス114内でデータのバックアップを開始する。いくつかの実施形態において、バックアップエンジン314は、ソリッドステート記憶デバイス114内の最古のデータで始動し、最新の記憶ユニットに達するまでソリッドステート記憶デバイス114内の記憶ユニット914〜926を通して年代順に移動する。いくつかの実施形態において、バックアップエンジン314は、ソリッドステート記憶デバイス114内の記憶ユニット914〜926を通して逐次的に移動し、1つのユニット内のデータを補助記憶装置118へデータをバックアップし、次いで、物理アドレスを増加させて次のユニットへ移動することによってそれを行う。他の実施形態において、バックアップエンジン314は、ソリッドステート記憶デバイス114によって維持されるメタデータ(例えば、逆インデックスおよび/またはログデータ構造)を参照することによって、ユニット914〜926を通して年代順に移動する。例えば、バックアップエンジン314は、逆インデックスまたはログ内における1つのユニットのためのエントリで始動し、データをバックアップし、次のエントリに移動し、そしてそれをログ全体が読み込まれるまで続けることができ、その時点でバックアップエンジン314は、構造の始めにループバックすることができる。
いくつかの実施形態において、バックアップエンジン314は、まずメタデータ(例えば逆インデックスまたはログ)を使用して、特定のユニット914〜926に対してデータが有効であるか無効であるかを判定し、そのメタデータは、上述のように、有効性インジケータ930a〜gを備えることができる。この有効性インジケータ930a〜gが、無効に設定されている場合、バックアップエンジン314は、ユニット914〜926内のデータをバックアップしないことを選択し得る。例えば、図9bに示されるように、バックアップエンジン314は、ソリッドステート記憶デバイス114内の最古ユニットであるユニット914で始動し、有効性インジケータ930aを検査し、有効性インジケータが無効に設定されるかどうかを調べることができる。有効性インジケータ930aが無効に設定されるため、バックアップエンジン314は、ユニット914と関連付けられるデータAをバックアップすることなしに、次のユニット916へ移動する。破棄可能性インジケータ940aは、ユニット914が無効と判断される場合は意味を成さないため、破棄可能性インジケータ940aは、「気にしなくて良い」として表されることがある、すなわち、破棄可能性インジケータのステータスは、無効性インジケータがデータを無効であることを示す場合、バックアップエンジン314に対して無意味である。
図9bにおいて、バックアップエンジン314は、次いで、データBを有するユニット916を補助記憶装置118に記憶する。有効性インジケータはデータBがまだ有効であることを示す。いくつかの実施形態において、データBが有効であるとの判定の後、バックアップエンジン314は、次いで破棄可能性インジケータ940bを検査し、データBが補助記憶装置118にバックアップされたかどうかを判定する。破棄可能性インジケータ940bが破棄可能に設定される場合は、バックアップエンジン314は、データBが補助記憶装置118内に既に記憶されているため、補助記憶装置118にデータBを記憶せずに次のユニット918に移動する。
破棄可能性インジケータ940bが破棄不可能と設定される場合、バックアップエンジン314は、データBを補助記憶装置118に記憶することができる。いくつかの実施形態において、バックアップエンジン314は、データBに対して、補助記憶装置118へ向けた書き込み要求を開始する。いくつかの実施形態において、前に説明したように、データは、データおよびそのデータが関連付けられるLBAの両方を含む。そのような実施形態において、バックアップエンジン314は、LBAをユニット916におけるデータから抽出し、データが補助記憶装置118内のそのLBAに書き込まれることを要求することができる。
図9aは、初めに、ユニット916におけるデータBが破棄不可能であることを示す。データBが補助記憶装置118へ書き込まれる際、バックアップエンジン314は、図9bにおいて示されるように、破棄可能性インジケータ940bを破棄可能(図9bにおいて「1」)に変更するように、メタデータを更新する。いくつかの実施形態において、バックアップエンジン314は、破棄可能性インジケータを変更する前にデータBが無事にバックアップされたという補助記憶装置118からの確認を待つ。いくつかの実施形態において、バックアップエンジン314が一定の期間内に確認を受け取らない場合、バックアップエンジン314は、データを補助記憶装置118へ保存することを再試行する。データBが補助記憶装置118に無事にバックアップされ、破棄可能性インジケータ940bが破棄可能に設定されると、バックアップエンジン314は、ソリッドステート記憶デバイス114のユニット918等の次のユニットへ移動する。
上で説明したように、バックアップエンジン314は、ユニット918内のデータCが無効であると判定し得、したがって、データCのバックアップなしに先へ移動することができる。バックアップエンジン314は、次いで、ユニット920内のデータDをバックアップし、破棄可能性インジケータ940dを破棄可能に変更することができる。
ある事例において、バックアップエンジン314は、ユニット924等の有効かつ破棄可能としてマークされるデータCを伴うユニットと遭遇する可能性がある。破棄可能性インジケータ940fが破棄可能に設定されている(データCが既にバックアップされたことを示している)場合、バックアップエンジン314は、データCをバックアップすることなしに次のユニットに移動することができる。
いくつかの実施形態において、バックアップエンジン314は、ソリッドステート記憶デバイス114内のユニット914〜926上を連続してスキャンする。他の実施形態においては、バックアップエンジン314は、ソリッドステート記憶デバイス114内のユニット914〜926を通して反復を完了させ、第2の反復を開始する前に、ある期間待機する。いくつかの実施形態において、バックアップエンジン314は、ソリッドステート記憶デバイス114上においてバックグラウンドプロセスとして機能し、予備のサイクル(CPUサイクル、バスサイクル、または他のサイクルのどれか)が利用可能なである場合に作動する。バックアップエンジン314は、設定されたスケジュールを与えられてもよい。例えば、管理者はトラフィックが低い夜間等の間にバックアップエンジン314がバッキング操作を行うように、ソリッドステート記憶デバイス114を設定することができる。
いくつかの実施形態において、バックアップエンジン314は、動作が求められる場所を判定するために有効性および破棄可能性インジケータを検索し、リソースが利用可能になった時に実行されるバックアップ活動およびコマンドをキューイングすることができる。例えば、バックアップエンジン314は、図9の論理を経るが、どのコマンドも実際には実行しない場合がある、より正確には、バックアップエンジン314は特定のユニットに対してどのような動作が必要かを判定し、その動作を一覧に追加し、そして次のユニットに移動する。このようにして、バックアップエンジン314は、ソリッドステート記憶デバイス114上のユニットおよび関連するマップを通して進んで行きながら、動作の一覧を編成することができる。別のプロセスは、非同期的に動作および/またはコマンドを一覧から引き出し、それらを実行することができる。
バックアップエンジン314は、記憶ユニットと関連付けられるメタデータ117に基づいて、バックアップ操作に優先度を与えることができる。例えば、メタデータ117は、破棄不可能データを含む記憶ユニットが、高いレベルの摩耗および/または高いエラー率を有することを示し得る。メタデータ117に基づいて、バックアップエンジン314は、識別される記憶ユニットのバックアップの優先度を高めることができる。優先度を高めることは、バックアップ操作をキューの先頭に挿入し、他の破棄不可能な記憶ユニットバックアップ等を飛ばすことを含んでもよい。
いくつかの実施形態において、上述のように、キャッシュコントローラ312は、バックアップエンジン314の操作の優先度を高めることができる。例えば、キャッシュコントローラ312は、ソリッドステート記憶デバイス114が満杯であり、ソリッドステート記憶デバイス114内に破棄可能としてマークされているユニット914〜926が全くない(または十分なユニット914〜926がない)場合、バックアップエンジン314に、最も高い優先度を与えることができる。いくつかの実施形態において、キャッシュコントローラ312は、ソリッドステート記憶デバイス114が埋まり始め、ソリッドステート記憶デバイス114上の利用可能な記憶空間が減少するにつれて、バックアップエンジン314の優先度を徐々に高める。
いくつかの実施形態において、バックアップエンジン314は、年代順のバックアッププロセスを補うために適切なタイミングで起動することができる。バックアップエンジン314は、ソリッドステート記憶デバイス114内のユニットを年代順で進むが、それでも順番とは関係なく適切なタイミングで起動するように利用可能なように構成することができる。例えば、ソリッドステート記憶デバイス114は、データが読み込まれている時およびバックアップ資源が利用可能である時に、1つ以上のユニットにデータをバックアップするようにバックアップエンジン314を起動することができる。読み込みは、データにアクセスしているクライアントによって開始されてもよい。読み込みは、ガーベジコレクションを行うこと、データをスクラブすること、磨耗または故障ブロックからデータを復旧する、または他のグルーミング操作の間に、グルーマー310によって開始されてもよい。
読み込みは、脱重複プロセスによって開始されてもよい。また、読み込みは、2007年12月6日に申請されたDavid Flynnらの「Apparatus, System, and Method for Reliable, High Performance Storage of Data with Progressive RAID」と題される米国特許出願第11/952,115号に記載されるように、RAID再構築またはプログレッシブRAID操作によって開始されてもよく、この出願はその全体が参照として本書に組み込まれる。バックアップエンジン314は、システムオーバーヘッドを低減させるために、他のプロセスと併せて動作することができる。当業者は、他のプロセスがバックアップを開始させるために適切に使用されることがあることを認識するだろう。
バックアップエンジン314は、グルーマー310によって起動されてもよい。いくつかの実施形態において、グルーマー310は、記憶区分(例えば、ソリッドステート記憶デバイス114の消去ブロック)を解放するためにバックアップエンジン314を起動する。例えば、グルーマー310は、メタデータ117にアクセスし、特定の記憶区分が、かなり多くの量の破棄不可能データを含み、そのデータがコールドであることを判定し得る。グルーマー310は、バックアップエンジン314を起動して特定の消去ブロックのユニットをバックアップし、次いで消去ブロックをグルームし、新たに破棄可能なユニットを無効であるかのように扱い、そうしてソリッドステート記憶デバイス114上に空間を解放することができる。
図10は、グルーミングのためにキャッシュ操作に関するメタデータを使用するグルーマー310のための方法1000の例示的な実施形態を示す。上述のように、方法800のステップは、特定の機械構成要素と結び付けられる、および/または持続性機械可読記憶媒体上に記憶される機械可読命令を使用して実装されてもよい。
グルーマー310は、図10に挙げられる判断を行うための操作を行うことができる、または操作の一部もしくは全部の負荷を取り除くために他のルーティンもしくはプロセスをコールすることができる。方法1000は、グルーマー310がグルーミング操作のための記憶区にアクセスする1002ことで開始する。グルーミング操作は、いくつかの実施形態において、ガーベジコレクション操作であってもよい。他の実施形態においては、グルーミング操作は、読み込みもしくは書き込み妨害、デフラグ、リフレッシュ、または他のデータグルーミング操作に起因するデータ移動であってもよい。いくつかの実施形態において、グルーミング操作のために記憶区分にアクセスする際、グルーマー310は、メタデータ(例えば、有効性インジケータ)を使用して、ソリッドステート記憶デバイス114のどの記憶ユニットが有効データを含むかを判定する1004。記憶区分復旧操作では、有効性マップ内に無効データを含むとして識別されるこれらの記憶ユニット内のデータは、新しい消去ブロックへ移動されない。その結果、消去ブロックが初期化される(例えば、全ページに1が書き込まれる)時、無効データは消去される。
グルーマー310は、次いで、破棄可能である有効データを含む1006記憶ユニットを(例えば、破棄可能性マップを使用して)識別するためにメタデータ117にアクセスする。いくつかの実施形態において、グルーマー310が破棄不可能と判定するユニットは、グルーミング操作の一部として新しい記憶区分へ移動され1010、方法1000は終了する。グルーマー310は、初めに有効かつ破棄不可能なデータを、データを新しい記憶区分へ移動することに備えてバッファ内に移動することができる。いくつかの実施形態において、グルーマー310は、バックアップエンジン314を起動してこれらのユニット内のデータをバックアップすることもでき、そうしてユニットは破棄可能になる。いくつかの実施形態において、グルーマー310は、バックアップエンジン314を起動し、バックアップエンジン314がデータを補助記憶装置118へ移動するまで、グルーミング操作を一時停止してもよい。グルーマー310は次いで、バックアップ操作が完了した後に再開し、新しく破棄可能なユニットを破棄可能データとして扱ことができる。
グルーマー310が特定のユニットが破棄可能であると判定する1006である場合、グルーマー310は、破棄可能であるユニットと関連付けられるデータが排除できる(例えば、コールドである)かどうかに関して判定する1008ことができる。判定は、とりわけ、ソリッドステート記憶デバイス114上で行われる記憶操作に関連する、アクセスパターン、頻度等のメタデータを使用してキャッシュ管理装置130によって行われてもよい。グルーマー310が、データが排除できることを判定する1008と、グルーマー310はデータを新しい消去ブロックへ移動せず1012、方法1000は終了する。グルーマー310が、データがコールドではないと判定すると1008、グルーマー310はデータを新しい消去ブロックへ移動し1010、方法1010は終了する。
いくつかの実施形態において、グルーマー310は、バックアップされ、それによって破棄可能に設定されている破棄可能性インジケータを有する全てのユニットがコールドであると想定することができる。そのような実施形態において、破棄可能に設定された破棄可能性インジケータを有する全てのユニットは、グルーミング操作中に移動されない。そのような実施形態は、グルーマー310がソリッドステート記憶デバイス114内に空間を積極的に再生することにつながり、ソリッドステート記憶デバイス114が最大容量の時または最大容量に近づいている時に特に有用である。さらに、バックアップエンジン314がバックアップ操作を年代順に行う実施形態においては、少なくとも書き込みの観点からは、データが古ければ古いほど、より新しいデータよりも破棄可能にマークされやすいため、破棄可能とマークされたユニットがコールドデータを含んでいることは、妥当な想定である。
他の実施形態において、グルーマー310は、単一の記憶ユニットが排除可能(キャッシュ管理装置130のキャッシングポリシー等に従って)であるかどうかについて、メタデータ117を使用して判定することができる。いくつかの実施形態において、グルーマー310は、単一の記憶ユニットについて排除可能性の判定を行い、隣接した1組のユニットを同様に扱う。例えば、論理アドレスの範囲(例えば、インデックスまたはBツリー内の特定の節点)と関連付けられる1組の記憶ユニットは、グループとして排除(または保持)されてもよい。グルーマー310は、排除可能性を判定するのに必要な命令を実装してもよく、どのユニットがコールドデータを含んでいるかについて、キャッシュコントローラ312等の他の実体に問い合わせてもよい。
いくつかの実施形態において、キャッシュコントローラ312は、どの記憶ユニットがコールドデータを含んでおり、どの記憶ユニットがウォームデータを含んでいるかを判定するために、記憶操作に関するメタデータにアクセスすることができる。いくつかの実施形態において、メタデータ117は、記憶ユニット(または論理アドレス)上の読み込みならびに記憶ユニットへの書き込みを追跡するための読み込みログ(またはタイムスタンプ)を含み、読み込みは、ユニット内のデータがコールドかどうかを判定する際に考慮される。キャッシュコントローラ312は、ログの開始時におけるあらゆるデータはコールドになり、一旦データが補助記憶装置118へバックアップされると、排除可能であると判断することができる。
いくつかの実施形態において、キャッシュコントローラ312は、対象の占有量が閾値に達するまではデータがコールドであると判断しない。したがって、ソリッドステート記憶デバイス114の使用済みの記憶が目標の占有量閾値未満である間は、キャッシュコントローラ312は、ソリッドステート記憶デバイス114からいかなるデータも排除しないことを選択することができる。そのような実施形態において、バックアップエンジン314は、依然としてデータ上でバックアップ操作を行うが、しかしながら、キャッシュコントローラ312は、対象の占有量が閾値に達するまでは、グルーマー310が破棄可能に設定された破棄可能性インジケータを有するデータを、コールドとして処理しないように指示することができる。キャッシュコントローラ312は、一旦対象の占有量が閾値に達すると、グルーマー310が破棄可能に設定された破棄可能性インジケータを有するデータを処理するように指示することができる。
いくつかの実施形態において、キャッシュコントローラ312は、データがコールドであるかどうかを判定するために多重の基準を有してもよい。例えば、キャッシュコントローラ312は、特定の期間(例えば、4時間)より古いいかなるデータもコールドであり、ソリッドステート記憶デバイス114の占有量にかかわらず排除の対象であると判断することができる。また、キャッシュコントローラ312は、上述のように、一旦対象の占有量が閾値に達すると、データをコールドであると指定するための新しい規則を有することもできる。
いくつかの実施形態において、キャッシュコントローラ312は、何のデータがコールドであると考えられるのかに対する規則を、パラメータに基づいて動的に変更する。例えば、キャッシュコントローラ312は、いつ高い書き込み作業負荷があるのかを学習し、コールド(したがって排除)と判断されるデータ量を増やすことによって、それによりソリッドステート記憶デバイス114上の空間を解放することにより、ソリッドステート記憶デバイス114を準備することができる。キャッシュコントローラ312は、毎日が空のソリッドステート記憶デバイス114で開始するように、ソリッドステート記憶デバイス114を毎日の終わりに空にすることができる。
いくつかの実施形態において、キャッシュコントローラ312は、ユニットのデータがコールドの場合のみ、記憶ユニットのデータを補助記憶装置118へバックアップするようにバックアップエンジン314を指示することができる。キャッシュコントローラ312は、上述と同様のアプローチを使用して、どのデータがコールドかを判定することができる。そのような実施形態において、グルーマー310は、破棄可能に設定された破棄可能性インジケータを有する全てのユニットがコールドであると見なすことができる。
いくつかの実施形態において、1つより多い記憶ユニットからのデータが、論理的なデータユニットの一部となる。これらの論理ユニット対記憶のユニットの関連は、メタデータ117内に(例えば、正および/または逆インデックス内)に維持され得る。例えば、特定のファイルは、単一記憶ユニット内に記憶するには大きすぎることがあり、したがって、そのファイルは、複数の記憶ユニットに記憶されてもよく、ソリッドステート記憶デバイス114内の各記憶ユニットは、固有の記憶ユニットLBAに対応する。キャッシュコントローラ312が、LBA内のデータがどのように(したがって種々のユニット内のデータがどのように)関係しているかを特定するこのコンテキスト情報(マップなど)を説明するメタデータにアクセスするところでは、バックアップエンジン314およびキャッシュコントローラ312は、より効率的な操作を可能にするために論理的なレベルで動作することができる。
例えば、バックアップエンジン314は、特定のユニットのためのデータをバックアップし、同一の論理データユニットのデータを保持するさらなる記憶ユニットがソリッドステート記憶デバイス114内にあるかどうかを判定し、これらの記憶ユニットも同様にバックアップすることができる。同様に、グルーマー310が、特定の記憶ユニットが有効、破棄可能、およびコールドなデータを含んでいると判定する場合、グルーマー310は、他のユニットのどれが関連データを含んでいるかを判定するために、そのコンテキスト情報を使用することができる。いくつかの実施形態において、グルーマー310は、関連データを含む記憶ユニットもバックアップされることを確実にし、無効性インジケータを無効に設定する。記憶ユニットがバックアップされない場合、グルーマー310は、関連ユニット内のデータをバックアップするようにバックアップエンジン314をコールすることができる。
いくつかの実施形態において、ソリッドステート記憶デバイス114は、キャッシュ管理装置130がソリッドステート記憶デバイス114の種々の記憶ユニット内のデータ間の関連性を断定的に判定することを可能にするコンテキスト情報へのアクセスを有さないことがある。いくつかの実施形態において、キャッシュコントローラ312は、メタデータ117(例えば、逐次記憶ログ等の記憶メタデータ316)に基づき、どのユニットがグループを成すかについて、賢い推測をすることができる。例えば、キャッシュコントローラ312は、連続的に書き込まれた1組の記憶ユニットが、ファイル等の論理的なデータユニットを構成すると想定し得る。同様に、キャッシュコントローラ312は、一貫して共に読み込まれる1組のユニットが、論理的なデータユニットを構成すると想定し得る。キャッシュコントローラ312は次いで、バックアップエンジン314およびグルーマー310に、そのユニットのセットを上述のような論理的なデータユニットとして扱うように指示する。関連する実施形態において、一般的に共にアクセスされる複数のファイルおよびデータセットは、ソリッドステート記憶デバイス114によって、グループとして論理的に関連付けられる、および操作され得る。
いくつかの実施形態において、一旦キャッシュコントローラ312が、1組のユニットが論理的なデータユニットを形成しているデータを保持すると判定すると、キャッシュコントローラは、ユニットが共にバックアップされることを確実にするように、バックアップエンジン314を管理する。これらのユニットは、ソリッドステート記憶デバイス114内に連続して記憶される必要はない。補助記憶装置118内の多数のハードディスクドライブおよび他の媒体は、データがストリームとして表される際に、より効果的にデータを読み込む。したがって、キャッシュコントローラ312は、ソリッドステート記憶デバイス114に論理的なデータユニットを形成するユニットからハードディスクドライブにデータをストリームさせることができる。同様に、キャッシュコントローラ312は、キャッシュミスに応答して、データ補助記憶装置118からのストリームとしてデータを受け取ることができる。
図11は、共有メタデータを含む例示的なデータ構造の略ブロック図である。インデックス1104は、複数のキャッシュエントリ(例えば、節点1108、1114、1116等)を含むツリー(または他のデータ構造)を備えることができる。インデックス1104内の各キャッシュエントリは、論理アドレス(または論理アドレス範囲もしくはセット)を、ソリッドステート記憶デバイス上の1つ以上の記憶場所(例えば、記憶ユニット)と関連付けることができる。記憶ユニットは、アドレス1117(例えば、エントリ1114において描写されるような)または他の何らかの識別子によって識別することができる。インデックス1104内のキャッシュエントリは、単一エントリ(例えば、エントリ1114)が1組の論理アドレス、論理アドレスの範囲等を参照することができるように、可変の長さのものであってもよい。論理アドレスは連続したものであり得る(例えば072〜083)。1118等の他のエントリは、論理アドレスの不連続のセット(例えば、論理アドレス454〜477および535〜598)を含み得る。したがって、インデックス1104は、可変サイズのキャッシュエントリ(例えば、論理アドレスの任意のセットまたは範囲のデータを含むソリッドステート記憶デバイス114上の1つ以上の記憶ユニットに対応するキャッシュエントリ)を表すために使用されてもよい。
図11において示されるように、キャッシュエントリは、高速かつ効率的な検索を可能にし得る論理アドレスによって(エッジ1110などのエッジを使用して)インデックス付けされてもよい。論理アドレス「182」を含むキャッシュエントリの例示的な検索は、以下のように進むことができる。検索は、ルートキャッシュエントリで開始してもよく、それは図11の例におけるキャッシュエントリ1108である。単一論理アドレス(またはアドレス範囲)がルートキャッシュエントリ1108などの特定のキャッシュエントリに含まれるところでは、検索されている論理アドレス(「182」)がキャッシュエントリ1108の論理アドレスよりも低い場合、検索は有向エッジ1110をキャッシュエントリ1108の左へ続けて行くことができる。検索される論理アドレス(「182」)が現在のキャッシュエントリ1108と一致する場合(例えば、キャッシュエントリ1108の範囲内に位置する)、検索は、識別されている現在のキャッシュエントリ1108で無事に終了する。検索される論理アドレス1106が現在の節点1108よりも大きい場合、検索は有向エッジ1112を現在のキャッシュエントリ1108の右へ続けて行くことができる。1つのキャッシュエントリが、2つの論理アドレスまたはアドレス範囲(例えば、エントリ1118において示されるような不連続的なセット)を含み、検索される論理アドレス(「182」)が一覧の仮想アドレスの間に位置するところでは、検索は、中央の有向エッジ(示されていない)を現在の節点1108の2つの論理アドレスの中間に位置する論理アドレスを持つエントリへ続けていくことができる。検索は、キャッシュエントリが識別されるまで、または葉のキャッシュエントリに達して、検索が失敗するまでインデックス1104を続ける。図11の例において、検索は、一致するキャッシュエントリ1116(例えば、検索される論理アドレス「182」を含むキャッシュエントリ1116)で無事に終了する。
図11の例において、インデックス1104は、論理アドレスによってインデックス付けされるBツリーのデータ構造を使用して実装されるが、他の実施形態においては、インデックス1104は、内容アドレス可能メモリ(「CAM」)、バイナリツリー、ハッシュテーブル、または当該技術分野において知られる他のデータ構造を使用して実装され得る。
インデックス1104内の各キャッシュエントリは、1つ以上の論理アドレスを、ソリッドステート記憶デバイス114の各記憶ユニット(1つまたは複数)と関連付けることができる。例えば、エントリ1114は、論理アドレス範囲072〜083を記憶ユニット95〜106と関連付けることができる。当業者は、記憶ユニットの物理アドレスがインデックス1104内に記憶されてもよいこと、またはソリッドステート記憶媒体の1つ以上の記憶構造内へのオフセットであってもよいことを認識するだろう。上述のように、エントリ1114の記憶ユニットは、根底にあるデータに対する変更のため(例えば、変更、または復旧操作等のため)変化し得る。キャッシュエントリはさらに、キャッシュ排除のメタデータ(例えば、キャッシュエントリのアクセスパターン)、キャッシュエントリ年代、サイズ、キャッシュ属性、キャッシュ指令、記憶メタデータ(例えば、記憶ユニット1117のアドレス)等を含むメタデータ1119を含むおよび/または参照することができる。メタデータ1119は、論理アドレス(例えば、アドレス1115)によってインデックス付けされるキャッシュエントリと関連付けられるため、メタデータ1119は、根底にあるデータが記憶される位置の変更(例えば、記憶ユニットアドレス1117の変更)にかかわらず、キャッシュエントリ1114と関連付けられたままであり得る。
インデックス1104は、ソリッドステート記憶デバイス114がクライアント記憶要求で参照されるデータを含むかどうかを効果的に判定するため、および/またはデバイス114上のデータの位置を特定するために使用することができる。例えば、ソリッドステート記憶デバイス114は、特定の論理アドレスのための記憶要求1102を受け取り得る。この要求は、補助記憶装置に向けられ得、またはソリッドステート記憶デバイス114に向けられ得る。要求1102は、論理アドレスおよび長さ(例えば、論理アドレス074から始まるデータの3ユニットを要求)を特定することができる。代替として、要求1102は、1組の論理アドレス、論理アドレス範囲(連続的または不連続的)等を含むことができる。
ソリッドステート記憶デバイス114は、上述のような検索操作を使用して、要求された論理アドレスに対応するキャッシュエントリがインデックス1104内で利用可能かどうかを判定することができる。要求された論理アドレスを含むキャッシュエントリが、インデックス1104内に見られる場合、ソリッドステート記憶デバイス114は要求されたデータ(キャッシュヒット)を含み、そうでなければキャッシュミスが起こる。
図11に描写される例において、記憶要求1102に対応するキャッシュエントリは、インデックス1104(キャッシュエントリ1114)内にあり、したがって、キャッシュヒットが起こる。要求に対応するために、データは、キャッシュエントリ114内で識別された記憶ユニット1117から読み込まれ、発信者または要求へ返却され得る。キャッシュミスが起こる場合(例えば、要求が、インデックス1104内に存在しない論理アドレスを参照する)、ソリッドステート記憶デバイス114は補助記憶装置118からデータを読み込み、ソリッドステート記憶デバイス114上の1つ以上の記憶ユニットにデータを記憶し、新しいキャッシュエントリをインデックス1104内に作成する。新しいキャッシュエントリは、その論理アドレスに従ってインデックス付けされ、データを含む記憶ユニットを参照することができる。
キャッシュミスが既にインデックス1104内にあるキャッシュエントリと近似の論理アドレスを参照する場合(例えば、アドレス084〜088を参照)、マージ操作が起こり得る。マージ操作において、既存のキャッシュエントリは、1つ以上の他のキャッシュエントリと「マージされ」てもよい。例えば、論理アドレス084〜088のための新しいキャッシュエントリは、エントリ1114とマージされてもよい。マージは、新しいアドレス(例えば、072〜088)を含むためにキャッシュエントリの論理アドレス1115を変更することを含むことができ、および/またはデータ書き込みが記憶される記憶ユニットを含む記憶ユニット1117であってもよい。
部分的なキャッシュミスが起こる際に、同様の操作が起こり得る。部分的なキャッシュミスは、インデックス1104が要求データの全部ではなく一部を含む際に起こる。例えば、記憶要求1102は、アドレス078〜088を要求し得る。この場合、エントリ1114は、要求データの一部を参照するが、データの全部は参照しないことがある。要求に対応するために、ソリッドステート記憶ユニットは、ソリッドステート記憶デバイス上で利用可能なデータを読み込み(例えば、論理アドレス083まで)、補助記憶装置118から残りの(例えば、欠落)データにアクセスすることができる。補助記憶装置から読み込まれたデータは、ソリッドステート記憶デバイス114上に記憶され、別個のキャッシュエントリとしてインデックス1104に、および/またはキャッシュエントリ1114内に含められることができる。
インデックス1104内のキャッシュエントリは、記憶ユニットのアドレス(例えば、アドレス1117)への参照を含むとして示されるが、本開示はこの点に限定されない。他の実施形態において、キャッシュエントリは、記憶ユニットへの参照または間接的なリンクを含む。例えば、キャッシュエントリは、記憶ユニットの識別子(または逆インデックス1122への参照)を含むことができる。
図11のメタデータは、キャッシュエントリの論理アドレスと関連付けられたデータを含む、記憶ユニットを識別することができる逆マップ1122をさらに含むことができる。逆マップ1122は、記憶ユニットを有効性インジケータ1130、破棄可能性インジケータ1132、および/または他のメタデータ1136(以下に記載される)等のメタデータと関連付けることができる。いくつかの実施形態において、記憶ユニットアドレス1126および/または長さ1128は、逆マップ1122内に明示的に含まれ得る。代替として、記憶ユニットアドレス1126および/またはデータ長1128は、逆マップ1122内のエントリの位置(例えば、1120)から推測され得、したがって、アドレス1126および/またはデータ長1128は、必要とされない場合がある。いくつかの実施形態において、逆マップ1122は、論理アドレス1134への参照を随意に含むことができる。論理アドレス参照1134は、逆マップ1122にアクセスする実体が、記憶ユニットと関連付けられた論理的な実体に関するメタデータ(例えば、インデックス1104内の特定のキャッシュエントリ)に迅速にアクセスすることができるようにする。
メタデータ1136は、記憶ユニット上で行われる逐次的な記憶操作に関するメタデータを含むがこれに限定されない。例えば、メタデータ1136は、シーケンスインジケータ(例えば、タイムスタンプ)を含むことができ、それは記憶ユニットが記憶されたシーケンス(例えば、ならびに記憶ユニットの「年代」等も)を示すことができる。メタデータは、磨耗率、信頼性、エラー率、妨害ステータス等のような、記憶媒体に関するメタデータをさらに含むことができる。上述のように、記憶メタデータは、キャッシュ排除判定、キャッシュデータ移動(例えば、「ホット」キャッシュエントリのデータが信頼性の低い記憶ユニットに記憶される場合)等のようなキャッシュ管理操作を効果的に実施するために使用されてもよい。
逆マップ1122は、ソリッドステート記憶デバイス114の記憶区分(例えば、消去ブロック)に従って構成されてもよい。この例において、キャッシュエントリ1118に対応するエントリ1120は、消去ブロックn 1138に位置する。消去ブロックn 1138の前に、消去ブロックn−1 1140が先行し、消去ブロックn+1 1142(消去ブロックn−1およびn+1のコンテンツは示されていない)が続く。消去ブロックは、所定の数の記憶ユニットを含んでもよい。消去ブロックは、記憶装置復旧操作において同時に消去されるソリッドステート記憶デバイス114内の領域を参照することができる。
有効性メタデータおよび/または破棄可能性メタデータ1130および1132は、キャッシュ管理のバックアッププロセスおよびグルーマー(例えば、記憶装置復旧および維持)によって共有されてもよい。バックアッププロセスは、記憶ユニット上を年代順(最古から最新へ)に反復するために、逆マップ1122を使用することができる。バックアッププロセスは、(メタデータ1130および1132によって示されるように)有効かつ破棄不可能である記憶ユニットを補助記憶装置にバックアップすることができる。バックアッププロセスは、メタデータ1136を使用してバックアップに優先順位を与えることができる、例えば、バックアップエンジンは、メタデータ1136によって示されるように、信頼できない、または高い量の摩耗を有する等の記憶ユニット上に記憶されたデータのバックアップの優先度を高めることができる。
同様に、グルーマーは、逐次的な記憶操作を行うために、メタデータ1130、1132、および/または1136を使用することができる。例えば、記憶区分を復旧する際、グルーマーは、次の記憶区分へ有効データを保持する(例えば、書き換える)よう要求され得る。しかしながら、破棄可能性インジケータ1132が、データが破棄可能であると示す場合、グルーマーは、データを復元しないように決定することができ、それによりグルーマーが、より効果的に作動すること(例えば、書き込み増幅を低減すること)を可能にする。代替として、またはそれに加えて、グルーマーは、論理アドレス1134の関連を使用し、キャッシュメタデータ(例えば、メタデータ1119)にアクセスし、記憶区分の復旧操作の際にソリッドステート記憶デバイス上に保有されるべき記憶ユニットを識別することができる(破棄可能データがメタデータ1119によると「ホット」の場合、保有する)。グルーマーは、キャッシュメタデータ(例えば、メタデータ1119)を、データリフレッシュ操作を行うこと、データ移動を行うこと(例えば、「ホット」データを信頼できない記憶ユニットから別の記憶ユニットへ移動する)等を含むがこれらに限定されない他の目的のために使用することができる。
一般的に、逆マップ1122は、記憶装置復旧および/またはリフレッシュの決定を効果的に行うために消去ブロック(例えば消去ブロックn1138)と関連付けられたマップのセクションを走査することができるように記憶区分(例えば消去ブロック)または消去領域に従って配置される。仮想アドレス1106から物理アドレス1126を識別するために迅速に検索され得る順マップ1104内、ならびに消去ブロック1138内の有効データおよび有効データの量を識別するために速く検索され得る逆マップ1122内へ、インデックスを配置することは、逆マップ1122が検索と記憶装置復旧操作のために最適化され得るため、有益である。当業者は、インデックス1104および逆マップ1122を伴うインデックスの他の利点を認識するだろう。
図12は、ソリッドステート記憶デバイス上でデータをキャッシングするための方法の一実施形態のフロー図である。上述のように、方法1200のステップは、特定の機械構成要素と結び付けられる、および/または持続性機械可読記憶媒体上に記憶される機械可読命令を使用して実装されてもよい。
ステップ1210で、ソリッドステート記憶デバイスは使用のために初期化されてもよい。初期化は、通信インターフェース(例えば、バス、ネットワーク等)等のソリッドステート記憶デバイス(例えば、ソリッドステート記憶デバイス114)のためのリソースを割り当てること、揮発性メモリを割り当てること、およびソリッドステート記憶媒体にアクセスすること等を含んでもよい。初期化は、図11と併せて上で説明されたデータ構造のような共有メタデータのデータ構造を初期化すること、補助記憶装置デバイス(例えば、補助記憶装置118)を識別すること、および/または1つ以上のクライアント(例えば、クライアント110a〜c)に対して記憶インターフェースを提供することをさらに含むことができる。
ステップ1220において、ソリッドステート記憶デバイスは、1つ以上のクライアントからの記憶要求に対応することができる。記憶要求は、(ソリッドステート記憶デバイスが透過的にデータをキャッシュするように構成される場合)補助記憶装に向けられ得、および/またはソリッドステート記憶デバイスそのものへ向けられてもよい。
ステップ1230で、ソリッドステート記憶デバイスは記憶要求に関連する共有メタデータ(例えば、メタデータ117)を維持してもよい。共有メタデータは、ソリッドステート記憶デバイス上で行われる記憶操作に関連する、および/またはソリッドステート記憶媒体に関連する記憶メタデータ(例えば、メタデータ316)を含んでもよい。したがって、記憶メタデータは、論理アドレスとソリッドステート記憶ユニットとの間の関連、有効性マップ、記憶再生利用メタデータ(例えば、磨耗率、信頼性、付加ポイント等)等を含むことができる。
ステップ1230において維持される共有メタデータは、ソリッドステート記憶デバイス上に記憶されるキャッシュに関連する(例えば、ソリッドステート記憶デバイス上で行われるキャッシュ操作に関連する)キャッシュメタデータをさらに含んでもよい。キャッシュメタデータは、記憶メタデータの記憶ユニットインデックスに対する論理アドレスを共有してもよい。共有メタデータは、したがって、それぞれが論理アドレスをソリッドステート記憶デバイスの1つ以上の記憶ユニットに関連づける複数のキャッシュエントリを含む1つのインデックス(例えば、インデックス1104)を含んでもよい。キャッシュメタデータは、データアクセスパターン、キャッシュ属性、キャッシュ指令等のようなキャッシュ排除メタデータをさらに含んでもよい(例えば、図11のメタデータ1119内に記憶される)。ステップ1230で維持されるメタデータは、インデックス(例えば、図11のインデックス1104)、および/または逆インデックス(例えば、図11の逆インデックス1122)を含んでもよい。
ステップ1240において、方法1200は、ソリッドステート記憶デバイス上で記憶操作を行うために共有メタデータへアクセスすることができる。逐次的な記憶操作は、逐次的な(例えば、位置のずれた)記憶操作を行うこと、論理対記憶ユニットの関連を維持すること、記憶ユニットの有効性ンジケーターを維持すること、復旧のための記憶区分を選択すること(例えば、ガーベジコレクション)、ソリッドステート記憶デバイスの現在の占有量レベルを判定すること、記憶区分の復旧操作の間に保持する記憶ユニットを選択すること等を含んでもよいが、それに限定されない。
ステップ1260において、方法1200は、ソリッドステート記憶デバイス上に記憶されるキャッシュを管理するために共有メタデータへアクセスすることができる。キャッシュを管理することは、補助記憶装置へ記憶区分をバックアップすること、キャッシュ排除メタデータを維持すること、排除のためのキャッシュエントリを選択すること等を含んでもよいが、それに限定されない。
図13は、ソリッドステート記憶デバイス上のデータをキャッシュするための方法1300のフロー図である。上述のように、方法1200のステップは、特定の機械構成要素と結び付けられる、および/または持続性機械可読記憶媒体上に記憶される機械可読命令を使用して実装されてもよい。
ステップ1310、1320、および1330において、方法1300は、上述のように、初期化されてもよく、記憶要求に対応してよく、および共有メタデータを維持してもよい。
ステップ1340で、方法1300は、ソリッドステート記憶デバイスの逐次的な記憶操作を管理するために共有メタデータにアクセスすることができる。
ステップ1342で、方法1300は、復旧のための記憶区分を選択するためにキャッシュメタデータを使用することができる。ステップ1342は、補助記憶装置(例えば、破棄可能記憶ユニット)上に記憶されている記憶ユニットを識別するキャッシュメタデータにアクセスすることを含み得る。記憶区分の選択は、記憶デバイス上に保持されるべき(例えば、別の記憶場所へ書き換えられるべき)記憶区分内の有効データの閾値に基づいてもよい。有効データの量は破棄可能性インジケータを使用して判定することができる。記憶ユニットが有効かつ破棄可能である場合、記憶ユニットはデータを損失することおよび/または破損することなく復旧作業の間に消去することができる。
ステップ1342は、記憶ユニットがソリッドステート記憶デバイス上に保持されるべきであるキャッシュエントリと関連付けられているかどうかを判定するために(例えば、排除ポリシーまたは他のメタデータに従って)、キャッシュメタデータにアクセスすることをさらに含み得る。例えば、キャッシュエントリが「ホット」である(除去されると、キャッシュミスをもたらす可能性が高い)場合、記憶ユニットは、破棄可能として識別されるにもかかわらず、復旧作業の間保持され得る。
ステップ1344において、方法1300は、選択される記憶区分上に復旧操作を実施することができる。この復旧操作は、復旧操作を行うためにキャッシュメタデータ(共有メタデータ内)にアクセスすることができる。復旧操作は、(キャッシュメタデータを使用して)記憶区分上の破棄不可能記憶ユニットを識別すること、および識別された記憶ユニットを別の記憶区分上に記憶させること、および/または破棄不可能記憶ユニットを補助記憶装置上に記憶させることを含み得る。この操作は、ソリッドステート記憶デバイス上に保持されるべきキャッシュエントリと関連付けられる記憶ユニットを識別するために、メタデータにアクセスすることをさらに含み得る(例えば、キャッシュエントリと関連付けられるキャッシュ排除メタデータに従って)。識別された記憶ユニットは、ソリッドステート記憶デバイスの別の記憶区分に記憶することができる。
ステップ1346で、方法1300は、記憶ユニットをリフレッシュおよび/または管理するためにデータグルーミング操作を実施することができる(データグルーミング操作は、ステップ1342および1344と併せて上で説明されるように、記憶装置復旧操作を含むこともできる)。グルーミング操作は、キャッシュ操作に関連する共有メタデータにアクセスすることができる。例えば、グルーミング操作は、「ホット」キャッシュエントリ、または「PIN」属性等の特定のキャッシュ属性を有するキャッシュエントリ(例えば、キャッシュ排除メタデータを使用して)、破棄不可能な記憶ユニット等と関連付けられる記憶ユニットを識別することができる。グルーミング操作は、記憶区分磨耗率、信頼性(例えば、エラー率)、読み込み妨害、年代等に基づいて、記憶区分が別の記憶区分へ移動されるべきであるかどうかを判定するために、記憶メタデータを調べることもできる。
ステップ1360で、方法1300は、ソリッドステート記憶デバイス上に記憶されるキャッシュを管理するために共有メタデータにアクセスすることができる。
ステップ1362で、方法1300は、補助記憶装置上に記憶するための記憶ユニットを選択することができる。この選択は、記憶ユニットがいつ書き込まれたかという年代順配列(最古から最新へ)に基づいてもよく、それはソリッドステート記憶デバイス上で行われた記憶操作のシーケンスに関連する記憶メタデータを使用して判定することができる。いくつかの実施形態において、この選択は、キャッシュ排除メタデータ(例えば、アクセス頻度等のようなアクセスパターン)に基づいてもよい。使用事例によっては、高い変更率を有するキャッシュは、帯域幅の使用およびバックアップを行う待機時間の費用を最適化するためにバックアップのために選択されない場合がある。ステップ1362の選択は、有効性インジケータにアクセスすることを含むことができ、無効としてマークされたデータは、その年代および/または破棄可能性インジケータにかかわらず、バックアップされないことがある。
いくつかの実施形態において、ステップ1362は、バックアップ操作に優先順位を付けることを含んでもよい。優先順位付けは、記憶区分磨耗率、信頼性、占有量等のような記憶メタデータに基づくことができる。例えば、信頼できない(または高摩耗の)記憶区分上に記憶された記憶ユニット(記憶メタデータにより示されるように)は、より信頼性のある(またはあまり摩耗していない)記憶区分上に記憶された記憶ユニットより前にバックアップされることができる。
ステップ1364で、方法1300は、とりわけ記憶メタデータに基づいて、記憶区分のバックアップ操作の優先順位を付けることができる。この記憶メタデータは、ソリッドステート記憶デバイスの現在の占有量を判定するために使用することができる。バックアップ操作の優先度は、現在の占有量に基づいて判定され得る。占有量が(占有量閾値と比較して)低い場合、バックアップはバックグラウンドにおいて操作するように構成され得る。占有量が高い場合、バックアップ操作の優先度が高くなり得る(例えば、フォアグラウンドへ移動される)。
ステップ1366において、方法1300は、共有メタデータ(例えば、記憶メタデータ)を使用して、排除のためのキャッシュエントリを識別することができる。上述のように、キャッシュエントリは、アクセスパターン、キャッシュ属性、キャッシュ指令等を含むキャッシュ排除メタデータと関連付けられ得る。このメタデータは、キャッシュエントリデータに関連し得る。しかしながら、逐次的な記憶操作の性質(例えば、位置のずれた書き込み等)のために、記憶ユニットとキャッシュメタデータとの間の関連性は失われることがある(例えば、物理的記憶位置が変化する際)。記憶メタデータは、しかしながら、論理対記憶ユニットの関連(図11のキャッシュエントリ)を維持することができ、キャッシュエントリとその関連キャッシュ排除メタデータとの間の関連性が、その根底にある逐次的記憶操作(例えば、キャッシュデータの物理アドレスへの変化)にかかわらず保持されることを可能にする。別の実施形態において、記憶メタデータは、論理対記憶区分の関連(図11のキャッシュエントリ)を維持することができ、キャッシュエントリとそれらの関連キャッシュ排除メタデータとの間の関連性が、その根底にある逐次的記憶操作(例えば、キャッシュデータの物理アドレスへの変化)にかかわらず保持されることを可能にする。
ステップ1366の識別は、他の種類の記憶メタデータにアクセスしてもよい。例えば、高摩耗および/または信頼できない記憶区分上に記憶されるキャッシュエントリは、より信頼性のある記憶区分等上に記憶される同様のエントリを上回って排除に対して好適とされ得る。
ステップ1368において、方法1300は、共有メタデータ(例えば、記憶メタデータ)を使用してキャッシュ維持操作を行うことができる。キャッシュ維持操作は、「ホット」キャッシュエントリを識別すること、記憶メタデータを使用して、「ホット」キャッシュエントリをソリッドステート記憶デバイスの別の記憶区分へ移動させることを含んでもよい。この移動は、磨耗レベリング目的のため、過剰の読み込み妨害を防ぐ等のために行われてもよい。この選択は、記憶ユニット、記憶区分、仮想記憶区分、または他の粒度レベルにおいて維持される、関連する記憶統計値(例えば、読み込みカウント、年代、等)を維持する記憶メタデータに従って行うことができる。
ステップ1368のキャッシュ維持操作は、一定の年代のおよび/またはバックアップされていない(例えば、破棄不可能である)記憶ユニットを移動することをさらに含む。破棄不可能である記憶ユニットは補助記憶装置上に記憶されておらず、したがって、それが失われると、データの損失および/または破損を引き起こす可能性がある。これらの記憶ユニットは、そのような損失を防ぐために信頼できないおよび/または高摩耗記憶区分から移動することができる。同様に、破棄不可能記憶ユニットは、読み込み妨害により引き起こされるエラーまたは他の状態を防ぐために、「ホット」記憶エントリの近隣から移動することができる。
図14は、ソリッドステート記憶デバイス上のデータをキャッシュするための方法1400のフロー図である。上述のように、方法1400のステップは、特定の機械構成要素と結び付けられる、および/または持続性機械可読記憶媒体上に記憶される機械可読命令を使用して実装されてもよい。
ステップ1410、1420、および1430において、方法1400は、上述のように、初期化されること、記憶要求に対応すること、共有メタデータを保持することができる。共有メタデータは、それぞれが論理アドレスをキャッシュエントリのデータを含む1つ以上の記憶ユニットと関連付ける複数のキャッシュエントリを含んでもよい。いくつかの実施形態において、メタデータは、図11において描写されるBツリーのデータ構造のような順インデックスを含むことができる。
ステップ1440において、方法1400は、特定の論理アドレスにおけるデータに対する要求を受け取ることができる。
ステップ1450において、方法1400は、特定の論理アドレスに対応するデータがソリッドステート記憶デバイス上に記憶されているかどうかを判定することができる。いくつかの実施形態において、ステップ1450は、共有メタデータの順インデックスを検索することを含んでもよい。特定の論理アドレスを含むキャッシュエントリが順インデックスにおいて存在する場合、方法1400は、データが利用可能であることを判定し、このフローはステップ1460において続くことができる、さもなければ、このフローはステップ1470において続くことができる。
ステップ1460において、記憶要求が対応され得る。記憶要求に対応することは、要求データを含む1つ以上の記憶ユニットを判定するためにステップ1450において識別されたキャッシュエントリにアクセスすることを含み得る。記憶ユニットを読み込むことができ、結果のデータを要求側へ戻すことができる。
ステップ1470において、キャッシュミスが起こり得る。キャッシュミスは、補助記憶装置118等の別のデータ記憶内の特定の論理アドレスに対応するデータにアクセスすることによって対応することができる。
ステップ1472において、データは、ソリッドステート記憶デバイス上に逐次的に記憶することができる。ステップ1474において、メタデータは、データがソリッドステート記憶デバイスで利用可能であることを示すように更新され得、ステップ1476において、データが要求側へ提供され得る。
ステップ1474は、新しいキャッシュエントリをメタデータへ追加することを含むことができる。新しいキャッシュエントリは、特定の論理アドレスを、補助記憶装置から読み込まれたデータを含む記憶ユニットと関連付けることができる。
いくつかの実施形態において、ステップ1474は、既存のキャッシュエントリ更新することを含むことができる。特定の論理アドレスは、メタデータ内の論理アドレスに近接し得る。したがって、新しい別個のキャッシュエントリを追加するよりもむしろ、既存のキャッシュエントリが、特定の論理アドレスを含むように、および補助記憶装置から読み込まれたデータを含む記憶ユニットを参照するように更新されてもよい。特定の論理アドレスが2つ以上の既存のキャッシュエントリの間に位置する(例えば、キャッシュエントリ間のギャップを埋める)場合、ステップ1474の更新操作は、新しい範囲(例えば、元のキャッシュエントリの論理アドレスおよび特定の論理アドレス)を含むように、ならびに元の記憶ユニットおよび補助記憶装置から読み込まれたデータ含む記憶ユニットを参照するようにキャッシュエントリをマージすることを含んでもよい。
いくつかの実施形態において、キャッシュエントリは、要求データの一部を含むことができるが、そのデータの全ては含まない場合がある。この場合、ステップ1470および1472において、方法1400は、データの欠落部分のみを読み込み、記憶することができる。ステップ1474において、新しいキャッシュエントリは、特定の論理アドレスを補助記憶装置から読み込まれるデータを含む記憶ユニットに関連させるために追加することができる。代替として、ステップ1474は、上述のように、既存のキャッシュエントリを更新することを含んでもよい。
図15は、ソリッドステート記憶デバイス上でデータをキャッシュするための方法1500の一実施形態のフロー図である。上述のように、方法1500のステップは、特定の機械構成要素と結び付けられる、および/または持続性機械可読記憶媒体上に記憶される機械可読命令を使用して実装されてもよい。
ステップ1510、1520、および1530において、方法1500は、上述のように、初期化されること、記憶要求に対応すること、および共有メタデータを保持することができる。ステップ1540において、方法1500は、ソリッドステート記憶デバイス上に記憶されたデータを除去する記憶要求を受け取り得る。この要求は論理アドレスによってデータを参照し得る。
ステップ1550において、方法1500は、図14と併せて上で述べたように、論理アドレスに対応するデータがソリッドステート記憶デバイス上に記憶されているかどうかを判定することができる。
ステップ1560において、この方法は、ソリッドステート記憶デバイスからデータを除去することができる。データを除去することは、論理アドレスと関連付けられるキャッシュエントリをメタデータから除去すること、および/またはキャッシュエントリの記憶ユニットを無効にすることを含み得る。キャッシュエントリがソリッドステート記憶デバイス上に保持されるべきデータを含む場合、キャッシュエントリは、除去される論理アドレスおよび/または無効にされる記憶ユニットとキャッシュエントリとの関連を取り除くように更新することができる。関連を取り除くことは上述のようにキャッシュエントリを分割することを含み得る。ステップ1560は、TRIMコマンド(例えば、方法1500によって提供される記憶インターフェースを通して発行される)等に応答して行われ得る。
ステップ1570において、記憶要求は、補助記憶装置がデータを除去するように補助記憶装置へ渡されてもよい。
図16は、ソリッドステート記憶デバイス上のデータをキャッシュするための方法1600の一実施形態のフロー図である。上述のように、方法1600のステップは、特定の機械構成要素と結び付けられる、および/または持続性機械可読記憶媒体上に記憶される機械可読命令を使用して実装されてもよい。
ステップ1610、1620、および1630において、方法1600は、上述のように、初期化されること、記憶要求に対応すること、共有メタデータを維持することができる。ステップ1630において維持されるメタデータは、論理アドレスをソリッドステート記憶デバイスの記憶ユニットと関連付ける順インデックスを含んでもよい。メタデータは、有効性および/または破棄可能性メタデータをさらに含んでもよい。
ステップ1640において、ソリッドステート記憶デバイスの最大占有量は、共有メタデータ117(例えば、記憶メタデータ316)を使用して計算することができる。記憶メタデータ316は、エラー率、信頼性、磨耗率等のようなソリッドステート記憶媒体に関するメタデータを含んでもよい。記憶メタデータ316は、もはや使用可能でない(許容できないエラー率または他の状態のため)記憶区分または記憶ユニットのインジケータを含んでもよい。ソリッドステート記憶デバイスの最大占有量は、元の最大占有量(例えば、物理記憶容量またはその係数)から使用不可能な記憶区分を差し引くことによって計算することができる。データをキャッシュするために利用可能な物理的記憶空間は、記憶ユニットが摩耗または他のエラー状態のために利用不可能になるにつれて、同様に経時的に変化し得る。ソリッドステート記憶デバイスは、利用不可能な記憶区分および/または記憶ユニットに起因する、利用可能な物理記憶容量の縮小にもかかわらず、(同一のサイズまたは同様のサイズの論理アドレス空間を提示する)キャッシュとして作動し続けることができる。利用可能な物理記憶容量内の縮小は、ソリッドステート記憶デバイスがもはやデータをキャッシュするために利用可能な物理容量を有さず、入力/出力速度が補助記憶装置に直接アクセスことに対する速度に類似するまで継続し得る。
ステップ1650において、ソリッドステート記憶デバイスの現在の占有量は、共有メタデータ117を使用して計算することができる。いくつかの実施形態において、現在の占有量は、ソリッドステート記憶デバイス上の全ての有効データを含むものとして計算され得る。有効データは、順インデックス(例えば、図11のインデックス1104)を走査することによって識別され得る。代替として、より積極的な計算は、有効かつ破棄不可能な記憶ユニットのみを計算することを含み得る。この場合、方法1600は、破棄可能な記憶ユニットがデータ損失なしにソリッドステート記憶デバイスから除去することができ、したがって、利用可能な記憶空間としてカウントされてもよいと想定することができる。
ステップ1660において、方法1600は、バックアップエンジン、グルーマー、キャッシュマネージャ等のような要求側へ、最大占有量および/または現在の占有量を提供することができる。
いくつかの実施形態において、方法1600は、補助記憶装置のアドレス空間を上回る論理アドレス空間を提示することができる。ステップ1670において、方法1600は、補助記憶装置の論理アドレス範囲の外側にある論理アドレスと関連付けられる記憶要求に対応することができる。ソリッドステート記憶デバイスは、ソリッドステート記憶デバイス上にデータを記憶することによって要求に対応することができる。しかしながら、データは、補助記憶装置へバックアップされないことがある(そのアドレスが補助記憶装置の論理アドレスから外れるため)。したがって、論理アドレスと関連付けられるキャッシュエントリの記憶ユニットは、破棄不可能としてマークされ得、追加の論理的または物理的補助記憶装置容量が利用可能になるまで、破棄不可能のままであり得る。いくつかの実施形態において、ステップ1670は、追加の補助記憶装置を要求すること、および/または論理記憶空間が上回ったという通知を発行することを含むことができる。
本明細書を通じた「いくつかの実施形態」または「実施形態」への言及は、実施形態に関連して記載される具体的な特徴、構造、または特質が少なくとも一実施形態において含まれることを意味する。したがって、本明細書中の様々な場所における「一実施形態において」または「いくつかの実施形態において」という表現の出現は、必ずしも全てが同一の実施形態を指しているわけではない。さらに、「実施形態」は、システム、デバイス、製造品目、方法、および/またはプロセスであり得る。
本明細書中の「に接続される」、「ネットワーク化される」、および「と通信して」、「通信的に結合される」という表現は、機械的な、電気の、磁気の、および電磁気の相互作用を含む2つ以上の実体間における相互作用のあらゆる形態を指す。2つの構成要素は、物理的に直接互いに接しておらず、2つの構成要素の間に中間のデバイスがある可能性があるにもかかわらず、互いに接続し合うことができる。
本明細書に開示される実施形態とともに使用することができる基礎構造のいくつかは、汎用のプロセッサ、プログラムツールおよび技術、持続性の、コンピュータ可読記憶媒体および/または機械可読記憶媒体、ならびに通信ネットワークおよびインターフェース等であり、既に利用可能である。IEDおよび/またはモニタリングデバイス等のコンピューティングデバイスは、マイクロプロセッサ、マイクロコントローラ、論理電気回路網等のようなプロセッサを含んでもよい。プロセッサは、ASIC、PAL、PLA、PLD、FPGA、または他の処理手段のような特殊目的のプロセスデバイスを含んでもよい。コンピューティングデバイスはまた、不揮発性メモリ、スタティックRAM、ダイナミックRAM、ROM、CD−ROM、ディスク、テープ、磁気、光学、フラッシュメモリ、または他の持続性機械可読記憶媒体等のコンピュータ可読記憶媒体も含むことができる。
上記の説明は、本明細書に記載される実施形態の十分な理解のために多数の具体的な詳細を提供する。しかしながら、当業者は、具体的な詳細のうちの1つ以上が省略されてもよく、または他の方法、構成要素、もしくは材料が使用されてもよいことを認識するだろう。場合によっては、操作が詳細には示されていないかまたは記載されていない。
本開示の特定の実施形態および応用が例示説明され記載されたが、本開示が本明細書に開示される厳密な構成および構成要素に限定されないことを理解されたい。当業者にとって明白である様々な修正、変更、および変形が、本開示の精神および範囲から逸脱することなく、本開示の方法およびシステムの配置、操作、および詳細になされてもよい。


Claims (21)

  1. ソリッドステート記憶媒体を備えるソリッドステート記憶デバイス上でデータをキャッシングする方法であって、
    リッドステート記憶デバイスを管理するように構成された記憶コントローラ前記ソリッドステート記憶デバイスにメタデータを維持することを含み、前記メタデータは前記ソリッドステート記憶媒体の複数の記憶ユニットに関連し、且つ、前記記憶コントローラがアクセス可能なメモリ内に維持されるインデックスを有し、
    前記メタデータを維持することは、
    a)前記ソリッドステート記憶媒体上に記憶されたデータの複数の論理識別子を前記ソリッドステート記憶媒体の前記複数の記憶ユニットの各物理アドレスにマッピングすること、及び
    b)前記ソリッドステート記憶媒体上にキャッシュされた補助記憶装置のデータの複数の論理識別子を前記ソリッドステート記憶媒体の複数の記憶ユニットの各物理アドレスにマッピングすること、を含み、
    前記方法は、
    記メタデータにアクセスして、前記ソリッドステート記憶媒体上にキャッシュされた前記補助記憶装置の前記データを管理することをさらに含む、方法。
  2. 前記インデックスは、複数の論理識別子によりインデックス付けされたツリーデータ構造を有する、請求項1に記載の方法。
  3. 記憶ユニットに関連する前記メタデータを維持することは、前記ソリッドステート記憶媒体の関連する記憶ユニットのデータが前記補助記憶装置上に記憶されている場合に該データが破棄可能であることを示す破棄可能性インジケータを維持することを含み、
    前記方法は、
    前記記憶コントローラ、データ復旧対象の記憶区分を選択するために前記破棄可能性インジケータを使用すること、
    をさらに含む、請求項1に記載の方法。
  4. 前記方法は、前記記憶コントローラが、
    棄不可能なデータを含む前記ソリッドステート記憶媒体の第1の記憶ユニットを識別することと、
    記記憶ユニットの前記破棄不可能なデータを、前記ソリッドステート記憶媒体の第2の記憶区分上に記憶させることと、を含み、
    前記第1の記憶ユニットは、破棄不可能なデータが、前記データは破棄可能であると示している破棄可能性インジケータを含まない前記第1の記憶ユニットに関連する前記メタデータであると認識される、請求項3に記載の方法。
  5. 選択された記憶ユニットに関連する前記メタデータを維持することは、前記記憶コントローラが、前記ソリッドステート記憶媒体上に前記関連する記憶ユニットのデータが保持されるべきことを示すキャッシュ排除メタデータを維持することを含み、前記キャッシュ排除メタデータはデータアクセスパターンに基づいて維持され、
    前記方法は、
    前記記憶ユニットに関連する前記キャッシュ排除メタデータに基づいてデータ復旧対象の記憶ユニットを選択することをさらに含む、請求項1に記載の方法。
  6. 記憶ユニットに関連する前記メタデータを維持することは、
    前記記憶コントローラによって、前記関連する記憶ユニットのデータが前記補助記憶装置上に記憶されている場合に該データが破棄可能であることを示す破棄可能性インジケータを維持することと、
    前記記憶コントローラによって、前記関連する記憶ユニットのデータが前記ソリッドステート記憶デバイス上に保持されるべきことを示すキャッシュ排除メタデータを維持することを含み、前記キャッシュ排除メタデータはデータアクセスパターンに基づいて維持され、
    前記方法は、前記記憶コントローラが、
    棄可能なデータを含む第1の記憶ユニットを、破棄可能性インジケータに基づいて識別することと、
    前記ソリッドステート記憶媒体上に保持されるべき破棄可能なデータを、前記第1の記憶ユニットに関連付けられたキャッシュ排除メタデータに基づいて識別することと、
    記識別された破棄可能なデータを、ソリッドステート記憶媒体の第2の記憶ユニット上に記憶させることと、
    をさらに含む、請求項1に記載の方法。
  7. 記憶ユニットに関連する前記メタデータを維持することは、前記記憶コントローラがキャッシュ管理に用いる複数のキャッシュ属性を維持することを含み、前記方法は、前記記憶コントローラが、
    1又はそれ以上の記憶ユニットに関連する前記キャッシュ属性にアクセスすることと、
    前記アクセスされたキャッシュ属性を使用して、データ復旧対象の記憶ユニットを選択することと、
    をさらに含む、請求項1に記載の方法。
  8. 記憶ユニットに関連する前記メタデータを維持することは、前記記憶コントローラが、
    前記関連する記憶ユニットのデータが前記補助記憶装置上に記憶されている場合に該データが破棄可能であることを示す破棄可能性インジケータを維持することと、
    前記関連する記憶ユニットの前記データが最新である場合に該データが有効であることを示す有効性インジケータを維持することと、をさらに含み、
    前記方法は、前記記憶コントローラが、
    記ソリッドステート記憶媒体の第1の記憶区分の記憶ユニットに保持されたデータの論理アドレスを含む記憶要求を受け取ることと、
    記ソリッドステート記憶媒体の第2の記憶区分の記憶ユニット内に、前記記憶要求のデータを記憶することと、
    前記インデックスを更新することによって前記データの論理識別子を前記第2の記憶区分内の前記記憶ユニットにマッピングし、前記第1の記憶区分内の前記記憶ユニットの前記データが無効であることを示すように前記有効性インジケータを更新し前記記憶ユニットの前記データが破棄不可能であることを示すように、前記第2の記憶区分内の前記記憶ユニットに関連付けられた破棄可能性インジケータを更新することによって、前記メタデータを更新することと、
    をさらに含む、請求項1に記載の方法。
  9. 前記ソリッドステート記憶デバイスは、前記補助記憶装置に通信可能に結合され、バックアップエンジンを備えており、前記メタデータは、前記ソリッドステート記憶デバイスの現在の容量占有量を示す情報を含み、前記方法は、前記記憶コントローラが、
    記補助記憶装置の容量以上の容量を有する論理アドレス空間をクライアントコンピューティングデバイスに提供することと、
    前記ソリッドステート記憶媒体の複数の前記記憶ユニットに関連する前記メタデータに基づいて、前記ソリッドステート記憶デバイスの現在の容量占有量を判定することと、
    記現在の容量占有量が目標の占有量閾値を上回る場合に記憶ユニットの破棄不可能なデータを前記補助記憶装置上に記憶させるように構成された処理であって、前記バックアップエンジンが実行する処理の優先度を高めることと、
    をさらに含む、請求項に記載の方法。
  10. 記方法は、前記記憶コントローラが、
    記補助記憶装置の論理アドレス空間の容量よりも大きい容量を有する論理アドレス空間を提供することと、
    記補助記憶装置の前記論理アドレス空間から外れる論理識別子と関連付けられる記憶要求を識別することと、
    記論理識別子と関連付けられる前記記憶ユニットのデータが破棄不可能であることを示すように破棄可能性インジケータを維持すること、
    をさらに含む、請求項に記載の方法。
  11. 記方法は、前記記憶コントローラが、
    記メタデータの前記インデックスに含まれる第1の論理識別子と、前記メタデータの前記インデックスに含まれない第2の論理識別子とを参照する記憶要求を受け取ることと、
    前記インデックス内の前記第1の論理識別子にマッピングされた記憶ユニットに記憶されデータと、前記補助記憶装置の記憶位置から読み込まれ前記第2の論理アドレスに対応するデータとを返すことにより、前記要求に対応することと、
    をさらに含む、請求項1に記載の方法。
  12. 前記記憶要求のデータの論理アドレス範囲が不連続である、請求項11に記載の方法。
  13. 複数の記憶区分を含むソリッドステート記憶デバイス上でデータをキャッシングするための方法であって、前記ソリッドステート記憶デバイスを管理するように構成された記憶コントローラ、前記記憶コントローラがアクセス可能なメモリ上に記憶されるインデックスであって、a)前記ソリッドステート記憶デバイス上に記憶されたデータの論理識別子を前記ソリッドステート記憶デバイスの物理アドレスに対応する各記憶位置にマップするように構成され、b)前記ソリッドステート記憶デバイス上にキャッシュされた補助記憶装置のデータに対応する複数の論理識別子を前記ソリッドステート記憶デバイスの物理アドレスに対応する各記憶位置にマップするように構成された前記インデックスを用いて、論理アドレス空間を維持することと、
    記ソリッドステート記憶デバイスの各記憶区分上に前記補助記憶装置のデータを記憶することと、
    タデータにアクセスして前記ソリッドステート記憶デバイスの最大記憶容量よりも少ないキャッシュ占有量閾値を決定することと、を含み、
    前記メタデータは、前記記憶コントローラによって維持され、前記ソリッドステート記憶デバイスの現在の容量占有量を示す情報を含む、方法。
  14. 前記メタデータは、データアクセスパターンに基づいて前記メタデータに関連するデータが前記ソリッドステート記憶デバイス上に保持されるべきことを示すキャッシュ排除メタデータを含み、前記方法は、前記記憶コントローラが、
    記ソリッドステート記憶デバイス上に記憶された前記補助記憶装置のデータに関連するキャッシュ排除メタデータを維持することと、
    記キャッシュ排除メタデータにアクセスして、データ復旧のために選択された記憶区分の記憶ユニットであってキャッシュから排除可能なキャッシュデータを含む前記記憶ユニットを識別することにより、記憶復旧操作を管理することと、
    をさらに含む、請求項13に記載の方法。
  15. 前記メタデータは、前記メタデータに関連するデータが前記補助記憶装置上に記憶されている場合に該データが破棄可能であることを示す破棄可能性インジケータをさらに含み、前記方法は、記破棄可能性インジケータに基づいて、データ復旧対象の記憶区分を選択することをさらに含む、請求項14に記載の方法。
  16. 前記メタデータは、前記ソリッドステート記憶デバイスの記憶ユニットのデータが前記補助記憶装置上に記憶されている場合に該データが破棄可能であることを示す破棄可能性インジケータをさらに含み、前記方法は、前記記憶コントローラが、
    記メタデータを使用して、復旧のために選択される記憶区分内で、前記ソリッドステート記憶デバイス上に保持するキャッシュエントリと関連付けられる記憶ユニットの破棄可能なデータを識別することと、
    記識別された記憶ユニットの破棄可能なデータを、前記ソリッドステート記憶デバイスの異なる記憶区分上に記憶させることと、
    をさらに含む、請求項14に記載の方法。
  17. ソリッドステート記憶デバイス上でデータをキャッシングするための方法であって、
    ソリッドステート記憶媒体を備えるソリッドステート記憶デバイスを管理するように構成された記憶コントローラ、前記記憶コントローラがアクセス可能なメモリ上に記憶されるインデックスであって、a)前記ソリッドステート記憶デバイス上に記憶されたデータの論理識別子を前記ソリッドステート記憶媒体の物理アドレスに対応する各記憶位置にマップするように構成され、b)前記ソリッドステート記憶媒体上にキャッシュされた補助記憶装置のデータに対応する複数の識別子を前記ソリッドステート記憶媒体の物理アドレスに対応する各記憶位置にマップするように構成された前記インデックスを提供する、前記ソリッドステート記憶媒体の前記記憶ユニット上にキャッシュされた前記補助記憶装置のデータを示すキャッシュエントリを用いて、論理アドレス空間を維持することと、
    つ以上の逐次的な記憶操作において、データをソリッドステート記憶媒体上に記憶することと、
    記ソリッドステート記憶媒体の記憶ユニットの磨耗率及び信頼性のうち少なくとも一方を示す情報を含むメタデータを維持することと、
    記メタデータにアクセスして、前記メタデータにより示される前記記憶ユニットの前記磨耗率及び前記信頼性のうち少なくとも一方に基づいて、前記キャッシュエントリを管理することと、
    を含む、方法。
  18. 前記記憶コントローラ、大量の摩耗を有する前記キャッシュエントリのデータを含む記憶ユニット、小量の摩耗を有する記憶ユニット、および信頼できない記憶ユニットのデータのうちの1つを示す前記メタデータに基づいて、排除対象のキャッシュエントリを選択することをさらに含む、請求項17に記載の方法。
  19. 前記記憶コントローラ、大量の摩耗を有する記憶区分、少量の摩耗を有する記憶区分、および信頼できない記憶区分のうちの1つを示す前記メタデータに基づいて、前記ソリッドステート記憶媒体の第1の記憶ユニット上に記憶されるキャッシュエントリのデータを、前記ソリッドステート記憶媒体の第2の記憶ユニット上に記憶させることをさらに含む、請求項17に記載の方法。
  20. 前記記憶コントローラ、大量の摩耗を有する記憶区分、少量の摩耗を有する記憶区分、および信頼できない記憶区分のうちの1つを示す前記メタデータに基づいて、ソリッドステート記憶デバイス上に記憶される記憶ユニットのデータを、前記補助記憶装置上に記憶させることをさらに含む、請求項17に記載の方法。
  21. 持続性機械可読媒体上に記憶される命令を含むコンピュータプログラムであって、前記命令は、ソリッドステート記憶デバイス上でデータをキャッシングするための方法を機械に行わせるように構成され、前記方法は、
    ソリッドステート記憶媒体を備えるソリッドステート記憶デバイスによりアクセス可能なメモリ内に、前記ソリッドステート記憶媒体の記憶ユニットの磨耗率及び信頼性のうち少なくとも一方を示す情報を含むメタデータを維持することと、
    前記メタデータにアクセスして、前記ソリッドステート記憶デバイスの記憶操作であって前記メタデータを使用して復旧対象の前記ソリッドステート記憶媒体の記憶区分を選択する前記記憶操作を管理することと、
    前記ソリッドステート記憶デバイス上に記憶されるキャッシュを管理するために前記メタデータにアクセスすることと、を含み、
    前記キャッシュを管理することは、前記記憶区分の磨耗率及び信頼性のうち少なくとも一方に関連する前記メタデータを使用して、前記ソリッドステート記憶媒体の記憶ユニットを選択して補助記憶装置へバックアップすることを含む、コンピュータプログラム。
JP2012528882A 2009-09-08 2010-09-08 ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法 Expired - Fee Related JP5999645B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US24057309P 2009-09-08 2009-09-08
US61/240,573 2009-09-08
US24096609P 2009-09-09 2009-09-09
US61/240,966 2009-09-09
US37327110P 2010-08-12 2010-08-12
US61/373,271 2010-08-12
PCT/US2010/048174 WO2011031796A2 (en) 2009-09-08 2010-09-08 Apparatus, system, and method for caching data on a solid-state storage device

Publications (2)

Publication Number Publication Date
JP2013504142A JP2013504142A (ja) 2013-02-04
JP5999645B2 true JP5999645B2 (ja) 2016-10-05

Family

ID=43731599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012528882A Expired - Fee Related JP5999645B2 (ja) 2009-09-08 2010-09-08 ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法

Country Status (6)

Country Link
US (1) US8719501B2 (ja)
EP (1) EP2476055B1 (ja)
JP (1) JP5999645B2 (ja)
KR (1) KR101717644B1 (ja)
CN (1) CN102696010B (ja)
WO (1) WO2011031796A2 (ja)

Families Citing this family (219)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193854A (zh) * 2010-03-02 2011-09-21 鸿富锦精密工业(深圳)有限公司 存储设备及其存储容量指示方法
US8712984B2 (en) * 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
US9235531B2 (en) 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US8458417B2 (en) * 2010-03-10 2013-06-04 Seagate Technology Llc Garbage collection in a storage device
US9063728B2 (en) * 2010-03-17 2015-06-23 Apple Inc. Systems and methods for handling hibernation data
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US20110320733A1 (en) * 2010-06-04 2011-12-29 Steven Ted Sanford Cache management and acceleration of storage media
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US8386717B1 (en) * 2010-09-08 2013-02-26 Symantec Corporation Method and apparatus to free up cache memory space with a pseudo least recently used scheme
US9575973B2 (en) * 2010-11-05 2017-02-21 Atc Logistics & Electronics, Inc. System and method for systematically removing customer personal information from an electronic device
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
CN102651009B (zh) * 2011-02-28 2014-09-24 国际商业机器公司 一种存储***中检索数据的方法和设备
US8756474B2 (en) * 2011-03-21 2014-06-17 Denso International America, Inc. Method for initiating a refresh operation in a solid-state nonvolatile memory device
EP2702491A4 (en) 2011-04-26 2015-02-25 Lsi Corp VARIABLE OVERSIZING FOR NON-VOLATILE STORAGE
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US8886881B2 (en) 2011-05-24 2014-11-11 International Business Machines Corporation Implementing storage adapter performance optimization with parity update footprint mirroring
US8656213B2 (en) * 2011-05-24 2014-02-18 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path
US8868828B2 (en) 2011-05-24 2014-10-21 International Business Machines Corporation Implementing storage adapter performance optimization with cache data/directory mirroring
US8793462B2 (en) 2011-05-24 2014-07-29 International Business Machines Corporation Implementing storage adapter performance optimization with enhanced resource pool allocation
US20120311271A1 (en) * 2011-06-06 2012-12-06 Sanrad, Ltd. Read Cache Device and Methods Thereof for Accelerating Access to Data in a Storage Area Network
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US8949508B2 (en) * 2011-07-18 2015-02-03 Apple Inc. Non-volatile temporary data handling
US8880977B2 (en) 2011-07-22 2014-11-04 Sandisk Technologies Inc. Systems and methods of storing data
US9323659B2 (en) 2011-08-12 2016-04-26 Sandisk Enterprise Ip Llc Cache management including solid state device virtualization
US8719619B2 (en) 2011-09-20 2014-05-06 International Business Machines Corporation Performance enhancement technique for raids under rebuild
US9092316B2 (en) 2011-10-28 2015-07-28 International Business Machines Corporation Methods and storage devices for managing write operations
US9268701B1 (en) * 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
WO2013098463A1 (en) * 2011-12-29 2013-07-04 Nokia Corporation Method for erasing data entity in memory module
US10353637B1 (en) * 2011-12-30 2019-07-16 EMC IP Holding Company LLC Managing data storage
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10102117B2 (en) * 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
KR101629879B1 (ko) * 2012-02-06 2016-06-13 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 캐시 사용 기반 어댑티브 스케줄링을 가지는 멀티코어 컴퓨터 시스템
US8892811B2 (en) 2012-03-01 2014-11-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing write amplification in a flash memory
US20130238851A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Hybrid storage aggregate block tracking
CN102662606B (zh) * 2012-03-12 2015-07-08 记忆科技(深圳)有限公司 Raid配置信息的处理方法和raid控制器
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9104684B2 (en) 2012-04-04 2015-08-11 International Business Machines Corporation Cache handling in a database system
US20140047210A1 (en) * 2012-08-08 2014-02-13 Lsi Corporation Trim mechanism using multi-level mapping in a solid-state media
US9684670B2 (en) * 2012-06-13 2017-06-20 Microsoft Technology Licensing, Llc Moving shared files
CN102789368B (zh) * 2012-06-21 2015-10-21 记忆科技(深圳)有限公司 一种固态硬盘及其数据管理方法、***
US9141544B2 (en) * 2012-06-26 2015-09-22 Qualcomm Incorporated Cache memory with write through, no allocate mode
US9442858B2 (en) * 2012-07-13 2016-09-13 Ianywhere Solutions, Inc. Solid state drives as a persistent cache for database systems
US9274963B2 (en) * 2012-07-20 2016-03-01 International Business Machines Corporation Cache replacement for shared memory caches
CN108595345B (zh) * 2012-07-25 2021-11-23 慧荣科技股份有限公司 管理闪存中所储存的数据的方法及相关记忆装置与控制器
TWI485560B (zh) * 2012-08-31 2015-05-21 Ibm 資料分析系統、快取裝置、與資料處理方法
US10095705B2 (en) 2012-09-24 2018-10-09 Microsoft Technology Licensing, Llc Integrated data retention policy for solid state and asymmetric access
US9286219B1 (en) * 2012-09-28 2016-03-15 Emc Corporation System and method for cache management
US9092364B2 (en) 2012-10-04 2015-07-28 International Business Machines Corporation Implementing storage adapter performance control
US9251067B1 (en) 2012-11-01 2016-02-02 Western Digital Technologies, Inc. High speed trim command processing in a solid state drive
US20140129758A1 (en) * 2012-11-06 2014-05-08 Spansion Llc Wear leveling in flash memory devices with trim commands
US8959281B1 (en) * 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
CN102999401B (zh) * 2012-11-30 2015-04-29 华为技术有限公司 一种平均备份数据的方法和装置
US9146688B2 (en) 2012-12-05 2015-09-29 SanDisk Technologies, Inc. Advanced groomer for storage array
US9417999B2 (en) * 2012-12-17 2016-08-16 International Business Machines Corporation Write peformance in solid state storage by recognizing copy source to target operations and only storing updates instead of entire block
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
CN103503414B (zh) 2012-12-31 2016-03-09 华为技术有限公司 一种计算存储融合的集群***
CN103797770B (zh) * 2012-12-31 2015-12-02 华为技术有限公司 一种共享存储资源的方法和***
JP6017065B2 (ja) * 2013-01-31 2016-10-26 株式会社日立製作所 ストレージシステム及びキャッシュコントロール方法
US9239682B2 (en) * 2013-02-27 2016-01-19 Vmware, Inc. I/O hint framework for Server Flash Cache
US20140258591A1 (en) * 2013-03-07 2014-09-11 Kabushiki Kaisha Toshiba Data storage and retrieval in a hybrid drive
US20140281124A1 (en) * 2013-03-14 2014-09-18 Bryan E. Veal System and method for caching a storage medium
US9165009B1 (en) * 2013-03-14 2015-10-20 Emc Corporation Lightweight appliance for content storage
US9552432B1 (en) * 2013-03-14 2017-01-24 EMC IP Holding Company LLC Lightweight appliance for content retrieval
US10180951B2 (en) 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
US9740623B2 (en) 2013-03-15 2017-08-22 Intel Corporation Object liveness tracking for use in processing device cache
US9858052B2 (en) 2013-03-21 2018-01-02 Razer (Asia-Pacific) Pte. Ltd. Decentralized operating system
KR102025240B1 (ko) 2013-04-01 2019-11-04 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TW201441817A (zh) * 2013-04-23 2014-11-01 Hon Hai Prec Ind Co Ltd 資料緩存系統及方法
CN104216796B (zh) * 2013-06-04 2018-02-09 北京联想核芯科技有限公司 一种数据备份、恢复方法及电子设备
US9645920B2 (en) * 2013-06-25 2017-05-09 Marvell World Trade Ltd. Adaptive cache memory controller
US20150019822A1 (en) * 2013-07-11 2015-01-15 Lsi Corporation System for Maintaining Dirty Cache Coherency Across Reboot of a Node
US20150032982A1 (en) * 2013-07-26 2015-01-29 Fusion-Io, Inc. Systems and methods for storage consistency
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US20160210237A1 (en) * 2013-07-30 2016-07-21 Nec Corporation Storage device, data access method, and program recording medium
CN103440207B (zh) * 2013-07-31 2017-02-22 北京智谷睿拓技术服务有限公司 缓存方法及装置
CN103473184B (zh) * 2013-08-01 2016-08-10 记忆科技(深圳)有限公司 文件***的缓存方法及***
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
GB201315435D0 (en) 2013-08-30 2013-10-16 Ibm Cache management in a computerized system
US9984000B2 (en) * 2013-09-06 2018-05-29 Lyve Minds, Inc. Electronic device data distribution
US9268502B2 (en) * 2013-09-16 2016-02-23 Netapp, Inc. Dense tree volume metadata organization
KR102116702B1 (ko) 2013-09-27 2020-05-29 삼성전자 주식회사 데이터 미러링 제어 장치 및 방법
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
JP6299169B2 (ja) 2013-11-14 2018-03-28 富士通株式会社 ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム
KR102103543B1 (ko) * 2013-11-28 2020-05-29 삼성전자 주식회사 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템
US9436606B2 (en) * 2014-01-02 2016-09-06 Qualcomm Incorporated System and method to defragment a memory
US9208086B1 (en) * 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
US9323615B2 (en) * 2014-01-31 2016-04-26 Google Inc. Efficient data reads from distributed storage systems
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
CN104881333B (zh) * 2014-02-27 2018-03-20 国际商业机器公司 一种存储***及其使用的方法
US9646012B1 (en) * 2014-03-06 2017-05-09 Veritas Technologies Llc Caching temporary data in solid state storage devices
US10019323B1 (en) * 2014-03-25 2018-07-10 EMC IP Holding Company LLC Method and system for container data recovery in a storage system
US10108622B2 (en) 2014-03-26 2018-10-23 International Business Machines Corporation Autonomic regulation of a volatile database table attribute
KR102318478B1 (ko) 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
CN106133707B (zh) * 2014-04-28 2020-03-20 慧与发展有限责任合伙企业 高速缓存管理
US10114576B2 (en) * 2014-07-24 2018-10-30 Sandisk Technologies Llc Storage device metadata synchronization
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US10678880B2 (en) * 2014-08-07 2020-06-09 Greenman Gaming Limited Digital key distribution mechanism
US9244858B1 (en) * 2014-08-25 2016-01-26 Sandisk Technologies Inc. System and method of separating read intensive addresses from non-read intensive addresses
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US10152412B2 (en) * 2014-09-23 2018-12-11 Oracle International Corporation Smart flash cache logger
US10650027B2 (en) * 2014-11-05 2020-05-12 International Business Machines Corporation Access accelerator for active HBase database regions
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9619158B2 (en) 2014-12-17 2017-04-11 International Business Machines Corporation Two-level hierarchical log structured array architecture with minimized write amplification
US9606734B2 (en) 2014-12-22 2017-03-28 International Business Machines Corporation Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9542328B2 (en) 2015-01-26 2017-01-10 International Business Machines Corporation Dynamically controlling a file system write cache
US9921963B1 (en) * 2015-01-30 2018-03-20 EMC IP Holding Company LLC Method to decrease computation for cache eviction using deferred calculations
US9892045B1 (en) * 2015-01-30 2018-02-13 EMC IP Holding Company LLC Methods to select segments of an evicted cache unit for reinsertion into the cache
US9720835B1 (en) * 2015-01-30 2017-08-01 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints
US9892044B1 (en) * 2015-01-30 2018-02-13 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
KR101643087B1 (ko) * 2015-03-06 2016-07-26 한양대학교 산학협력단 메모리 제어 방법 및 메모리 제어 장치
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10146616B1 (en) * 2015-03-31 2018-12-04 EMC IP Holding Company LLC Cache based recovery of corrupted or missing data
US9483408B1 (en) * 2015-04-09 2016-11-01 International Business Machines Corporation Deferred metadata initialization
CN104765656A (zh) * 2015-04-23 2015-07-08 浪潮电子信息产业股份有限公司 一种冷数据的备份方法及装置
US9811462B2 (en) 2015-04-30 2017-11-07 Toshiba Memory Corporation Memory system executing garbage collection
KR102397582B1 (ko) * 2015-06-22 2022-05-13 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
KR20170001235A (ko) * 2015-06-26 2017-01-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US9652405B1 (en) * 2015-06-30 2017-05-16 EMC IP Holding Company LLC Persistence of page access heuristics in a memory centric architecture
WO2017010004A1 (ja) * 2015-07-16 2017-01-19 株式会社東芝 メモリコントローラ、情報処理装置および処理装置
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
CN105045685A (zh) * 2015-08-04 2015-11-11 浪潮电子信息产业股份有限公司 缓存数据的备份方法及装置、缓存数据的恢复方法及装置
KR20170051563A (ko) * 2015-10-29 2017-05-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9916249B2 (en) * 2015-11-17 2018-03-13 International Business Machines Corporation Space allocation in a multi-grained writeback cache
US9965390B2 (en) 2015-11-17 2018-05-08 International Business Machines Corporation Reducing defragmentation in a multi-grained writeback cache
US9971692B2 (en) 2015-11-17 2018-05-15 International Business Machines Corporation Supporting concurrent operations at fine granularity in a caching framework
US9817757B2 (en) * 2015-11-17 2017-11-14 International Business Machines Corporation Scalable metadata management in a multi-grained caching framework
US10095595B2 (en) * 2015-11-17 2018-10-09 International Business Machines Corporation Instant recovery in a multi-grained caching framework
US10108547B2 (en) 2016-01-06 2018-10-23 Netapp, Inc. High performance and memory efficient metadata caching
US10402101B2 (en) 2016-01-07 2019-09-03 Red Hat, Inc. System and method for using persistent memory to accelerate write performance
US20170220476A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Systems and Methods for Data Caching in Storage Array Systems
US10001924B2 (en) 2016-03-07 2018-06-19 HGST Netherlands B.V. Efficient and dynamically sized reverse map to handle variable size data
US10437521B2 (en) * 2016-03-25 2019-10-08 Netapp, Inc. Consistent method of indexing file system information
US10191850B2 (en) 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10178152B2 (en) * 2016-04-29 2019-01-08 Splunk Inc. Central repository for storing configuration files of a distributed computer system
CN107436727A (zh) * 2016-05-26 2017-12-05 中兴通讯股份有限公司 精简卷的存储空间管理方法和装置
TWI615705B (zh) * 2016-05-31 2018-02-21 瑞昱半導體股份有限公司 於電腦系統中重置記憶體的方法
US10996989B2 (en) 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories
US10754772B2 (en) * 2016-06-14 2020-08-25 Sap Se Reclamation of in-memory database memory resources
US10430081B2 (en) * 2016-06-28 2019-10-01 Netapp, Inc. Methods for minimizing fragmentation in SSD within a storage system and devices thereof
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US10698732B2 (en) * 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US10387127B2 (en) 2016-07-19 2019-08-20 Sap Se Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases
US10783146B2 (en) 2016-07-19 2020-09-22 Sap Se Join operations in hybrid main memory systems
US10452539B2 (en) 2016-07-19 2019-10-22 Sap Se Simulator for enterprise-scale simulations on hybrid main memory systems
US10474557B2 (en) 2016-07-19 2019-11-12 Sap Se Source code profiling for line-level latency and energy consumption estimation
US11977484B2 (en) 2016-07-19 2024-05-07 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
US10437798B2 (en) 2016-07-19 2019-10-08 Sap Se Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems
US10540098B2 (en) 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10791172B2 (en) 2016-07-22 2020-09-29 Tinker Pte. Ltd. Systems and methods for interacting with nearby people and devices
US20180052779A1 (en) * 2016-08-19 2018-02-22 Advanced Micro Devices, Inc. Data cache region prefetcher
US10204045B2 (en) 2016-08-30 2019-02-12 International Business Machines Corporation Data file handling in a volatile memory
US10061524B2 (en) * 2016-09-01 2018-08-28 International Business Machines Corporation Wear-leveling of memory devices
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
CN106528608B (zh) * 2016-09-27 2022-07-01 中国电力科学研究院 一种云架构下的电网gis数据冷热存储方法和***
US10540102B2 (en) * 2016-09-30 2020-01-21 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay
CN106502592A (zh) * 2016-10-26 2017-03-15 郑州云海信息技术有限公司 固态硬盘缓存块回收方法及***
US10402345B2 (en) * 2016-10-28 2019-09-03 Intel Corporation Deferred discard in tile-based rendering
US10592115B1 (en) * 2016-11-30 2020-03-17 EMC IP Holding Company LLC Cache management system and method
US10162756B2 (en) * 2017-01-18 2018-12-25 Intel Corporation Memory-efficient last level cache architecture
US10635581B2 (en) 2017-01-20 2020-04-28 Seagate Technology Llc Hybrid drive garbage collection
US10740251B2 (en) * 2017-01-20 2020-08-11 Seagate Technology Llc Hybrid drive translation layer
US10430285B2 (en) * 2017-02-17 2019-10-01 International Business Machines Corporation Backing up metadata
US9998147B1 (en) * 2017-02-27 2018-06-12 International Business Machines Corporation Method for using write intents in a distributed storage network
US10650885B2 (en) 2017-03-07 2020-05-12 Alibaba Group Holding Limited Extending flash storage lifespan and data quality with data retention protection
CN108664214B (zh) * 2017-03-31 2023-05-16 北京忆恒创源科技股份有限公司 用于固态存储设备的分布式缓存的掉电处理方法与装置
CN115129618A (zh) * 2017-04-17 2022-09-30 伊姆西Ip控股有限责任公司 用于优化数据缓存的方法和设备
US10474587B1 (en) 2017-04-27 2019-11-12 EMC IP Holding Company LLC Smart weighted container data cache eviction
US10423533B1 (en) * 2017-04-28 2019-09-24 EMC IP Holding Company LLC Filtered data cache eviction
US10657069B2 (en) 2017-05-15 2020-05-19 Seagate Technology Llc Fine-grained cache operations on data volumes
CN107221351B (zh) * 2017-05-27 2020-06-02 华中科技大学 一种固态盘***中纠错码的优化处理方法及其应用
US10915527B2 (en) * 2017-06-07 2021-02-09 International Business Machines Corporation Parallel search of a partitioned data set extended (PDSE) in parallel
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
US11010379B2 (en) 2017-08-15 2021-05-18 Sap Se Increasing performance of in-memory databases using re-ordered query execution plans
US10681137B2 (en) * 2017-12-22 2020-06-09 Samsung Electronics Co., Ltd. System and method for network-attached storage devices
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复***和计算机可读介质
US10705969B2 (en) * 2018-01-19 2020-07-07 Samsung Electronics Co., Ltd. Dedupe DRAM cache
WO2019155241A1 (en) * 2018-02-12 2019-08-15 Google Llc Caching using machine learned predictions
CN109213450B (zh) * 2018-09-10 2021-08-31 郑州云海信息技术有限公司 一种基于闪存阵列的关联元数据删除方法、装置及设备
CN109408496A (zh) * 2018-09-18 2019-03-01 沈文策 一种减少数据冗余的方法及装置
US10831378B2 (en) * 2018-09-24 2020-11-10 International Business Machines Corporation Optimizing data access in a DSN memory for wear leveling
US10564864B1 (en) 2018-10-04 2020-02-18 Dell Products L.P. Method for estimating data retention time in a solid state drive
US10949346B2 (en) 2018-11-08 2021-03-16 International Business Machines Corporation Data flush of a persistent memory cache or buffer
US11232039B2 (en) * 2018-12-10 2022-01-25 Advanced Micro Devices, Inc. Cache for storing regions of data
CN110046132B (zh) * 2019-04-15 2022-04-22 苏州浪潮智能科技有限公司 一种元数据请求处理方法、装置、设备及可读存储介质
US11068455B2 (en) * 2019-04-26 2021-07-20 EMC IP Holding Company LLC Mapper tree with super leaf nodes
US11494338B2 (en) 2019-04-26 2022-11-08 International Business Machines Corporation Caching files in a directory
US11163500B2 (en) * 2019-04-26 2021-11-02 International Business Machines Corporation Caching files in a directory
US11036594B1 (en) 2019-07-25 2021-06-15 Jetstream Software Inc. Disaster recovery systems and methods with low recovery point objectives
CN112306378B (zh) * 2019-08-01 2024-04-09 兆易创新科技集团股份有限公司 用户数据搬移的恢复方法、装置、电子设备及存储介质
CN111026331A (zh) * 2019-11-28 2020-04-17 深信服科技股份有限公司 请求响应方法、装置、设备及计算机可读存储介质
CN114443277A (zh) * 2020-10-31 2022-05-06 华为终端有限公司 内存管理方法、装置、电子设备以及计算机可读存储介质
US11409599B2 (en) * 2020-12-04 2022-08-09 Micron Technology, Inc. Managing probabilistic data integrity scans in workloads with localized read patterns
US11467737B2 (en) 2020-12-04 2022-10-11 Micron Technology, Inc. Reducing probabilistic data integrity scan collisions
US11699498B2 (en) 2020-12-04 2023-07-11 Micron Technology, Inc. Managing probabilistic data integrity scan intervals
US11609857B2 (en) 2020-12-04 2023-03-21 Micron Technology, Inc. Identification and caching of frequent read disturb aggressors
CN113111014B (zh) * 2021-04-07 2023-01-06 山东英信计算机技术有限公司 缓存中非热点数据的清理方法、装置、设备及存储介质
US11481134B1 (en) * 2021-05-24 2022-10-25 Sap Se Adaptive caching for hybrid columnar databases with heterogeneous page sizes
US11656792B2 (en) * 2021-06-29 2023-05-23 International Business Machines Corporation Mirroring data in write caches of a controller of a non-volatile memory
US11494303B1 (en) 2021-09-29 2022-11-08 EMC IP Holding Company LLC Data storage system with adaptive, memory-efficient cache flushing structure
CN113868192B (zh) * 2021-12-03 2022-04-08 深圳市杉岩数据技术有限公司 一种数据存储设备、方法与分布式数据存储***
US11934706B2 (en) * 2021-12-22 2024-03-19 Western Digital Technologies, Inc. Smart relocation scan optimization
CN114579596B (zh) * 2022-05-06 2022-09-06 达而观数据(成都)有限公司 一种实时更新搜索引擎索引数据的方法及***
CN115480697A (zh) * 2022-07-29 2022-12-16 天翼云科技有限公司 数据处理方法、装置、计算机设备及存储介质
CN116303586B (zh) * 2022-12-09 2024-01-30 中电云计算技术有限公司 一种基于多级b+tree的元数据缓存淘汰方法

Family Cites Families (343)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5291496A (en) 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5313475A (en) 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
JPH06243042A (ja) * 1993-02-19 1994-09-02 Hitachi Ltd 記憶制御装置
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) * 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5553261A (en) * 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) * 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
AU5386796A (en) * 1995-04-11 1996-10-30 Kinetech, Inc. Identifying data in a data processing system
US5682499A (en) * 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
DE69615278T2 (de) 1995-06-06 2002-06-27 Hewlett Packard Co SDRAM-Datenzuweisungsanordnung und -verfahren
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) * 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) * 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US5957158A (en) * 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) * 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US7233977B2 (en) * 1998-12-18 2007-06-19 Emc Corporation Messaging mechanism employing mailboxes for inter processor communications
US6629112B1 (en) * 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
JP2000259525A (ja) 1999-03-10 2000-09-22 Nec Corp 通信プロトコルにおける応答返却方法および通信制御装置
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
KR100330164B1 (ko) * 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) * 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7660941B2 (en) * 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US7934074B2 (en) * 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US6336174B1 (en) * 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
AU2746001A (en) 1999-10-25 2001-05-08 Infolibria, Inc. Fast indexing of web objects
ATE247296T1 (de) 1999-10-25 2003-08-15 Sun Microsystems Inc Speichersystem mit unterstützung von dateistufenzugriffen und blockstufenzugriffen
US8171204B2 (en) * 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6785785B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Method for supporting multi-level stripping of non-homogeneous memory to maximize concurrency
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6779094B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
GB2379538B (en) 2000-06-23 2005-01-12 Intel Corp Non-volatile cache
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US6549987B1 (en) * 2000-11-16 2003-04-15 Intel Corporation Cache structure for storing variable length data
US20020159552A1 (en) * 2000-11-22 2002-10-31 Yeshik Shin Method and system for plesiosynchronous communications with null insertion and removal
US20020069317A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
CN100553150C (zh) 2001-05-08 2009-10-21 国际商业机器公司 用于高速应用的8b/10b编码和解码
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) * 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US7290109B2 (en) 2002-01-09 2007-10-30 Renesas Technology Corp. Memory system and memory card
TWI257085B (en) * 2002-01-21 2006-06-21 Koninkl Philips Electronics Nv Method of encoding and decoding
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) * 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7082512B2 (en) 2002-11-21 2006-07-25 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
ATE504446T1 (de) 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
US6957158B1 (en) * 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US6959369B1 (en) * 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7149947B1 (en) 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
US7315923B2 (en) 2003-11-13 2008-01-01 Commvault Systems, Inc. System and method for combining data streams in pipelined storage operations in a storage network
WO2005050453A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. ファイル記録装置
US7350127B2 (en) 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7328307B2 (en) * 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
KR100526190B1 (ko) * 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
US7130956B2 (en) * 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7231497B2 (en) * 2004-06-15 2007-06-12 Intel Corporation Merging write-back and write-through cache policies
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US7664239B2 (en) * 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) * 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
WO2006025322A1 (ja) 2004-08-30 2006-03-09 Matsushita Electric Industrial Co., Ltd. 記録装置
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
US7603532B2 (en) * 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7310711B2 (en) 2004-10-29 2007-12-18 Hitachi Global Storage Technologies Netherlands B.V. Hard disk drive with support for atomic transactions
US7873782B2 (en) * 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
EP1839154A4 (en) 2004-12-06 2008-07-09 Teac Aerospace Technologies In SYSTEM AND METHOD FOR ERASING NON-VOLATILE RECORDING MEDIUM
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) * 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US7130960B1 (en) * 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) * 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US7526614B2 (en) * 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
JP4807063B2 (ja) * 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US20070143567A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
KR100755700B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
KR100781520B1 (ko) * 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
JP4392049B2 (ja) 2006-02-27 2009-12-24 富士通株式会社 キャッシュ制御装置およびキャッシュ制御プログラム
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US20070245217A1 (en) * 2006-03-28 2007-10-18 Stmicroelectronics S.R.L. Low-density parity check decoding
US20070233937A1 (en) * 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
JP4836647B2 (ja) * 2006-04-21 2011-12-14 株式会社東芝 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7970989B2 (en) * 2006-06-30 2011-06-28 Intel Corporation Write ordering on disk cached platforms
US7721059B2 (en) * 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
US7676625B2 (en) * 2006-08-23 2010-03-09 Sun Microsystems, Inc. Cross-coupled peripheral component interconnect express switch
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) * 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP4942446B2 (ja) * 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) * 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7783830B2 (en) * 2006-11-29 2010-08-24 Seagate Technology Llc Solid state device pattern for non-solid state storage media
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US9104599B2 (en) * 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) * 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
JP4813385B2 (ja) * 2007-01-29 2011-11-09 株式会社日立製作所 ストレージシステムの複数の論理リソースを制御する制御装置
US20080201535A1 (en) * 2007-02-21 2008-08-21 Hitachi, Ltd. Method and Apparatus for Provisioning Storage Volumes
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
US20080229046A1 (en) * 2007-03-13 2008-09-18 Microsoft Corporation Unified support for solid state storage
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US9152349B2 (en) * 2007-03-23 2015-10-06 Emc Corporation Automated information life-cycle management with thin provisioning
US8135900B2 (en) * 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
JP2008276646A (ja) * 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US8195806B2 (en) * 2007-07-16 2012-06-05 International Business Machines Corporation Managing remote host visibility in a proxy server environment
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) * 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) * 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
US7934072B2 (en) * 2007-09-28 2011-04-26 Lenovo (Singapore) Pte. Ltd. Solid state storage reclamation apparatus and method
ES2493015T3 (es) * 2007-11-05 2014-09-11 Cellular Communications Equipment Llc Método, aparato y soporte legible por ordenador para la transmisión de informes de estado de buffer
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8131927B2 (en) * 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8239611B2 (en) * 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
JP2009181314A (ja) * 2008-01-30 2009-08-13 Toshiba Corp 情報記録装置およびその制御方法
KR101086855B1 (ko) * 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
EP2304568B1 (en) 2008-06-06 2013-08-14 Pivot3 Method and system for distributed raid implementation
US7917803B2 (en) * 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
KR101086857B1 (ko) * 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) * 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) * 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8417928B2 (en) * 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8347041B2 (en) * 2009-01-02 2013-01-01 Lsi Corporation System and method to preserve and recover unwritten data present in data cache of a disk subsystem across power outages
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8566508B2 (en) 2009-04-08 2013-10-22 Google Inc. RAID configuration in a flash memory data storage device
US8595572B2 (en) 2009-04-08 2013-11-26 Google Inc. Data storage device with metadata command
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8214610B2 (en) * 2009-07-15 2012-07-03 Lsi Corporation Managing backup device metadata in a high availability disk subsystem
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8176284B2 (en) 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage

Also Published As

Publication number Publication date
EP2476055A2 (en) 2012-07-18
CN102696010A (zh) 2012-09-26
WO2011031796A3 (en) 2011-06-30
EP2476055A4 (en) 2013-07-24
WO2011031796A2 (en) 2011-03-17
JP2013504142A (ja) 2013-02-04
KR20120090965A (ko) 2012-08-17
US20110066808A1 (en) 2011-03-17
EP2476055B1 (en) 2020-01-22
CN102696010B (zh) 2016-03-23
KR101717644B1 (ko) 2017-03-27
US8719501B2 (en) 2014-05-06

Similar Documents

Publication Publication Date Title
JP5999645B2 (ja) ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
US11010102B2 (en) Caching of metadata for deduplicated luns
US8880787B1 (en) Extent metadata update logging and checkpointing
US10042853B2 (en) Flash optimized, log-structured layer of a file system
US9619160B2 (en) NVRAM data organization using self-describing entities for predictable recovery after power-loss
US9430161B2 (en) Storage control device and control method
US10108547B2 (en) High performance and memory efficient metadata caching
US10133511B2 (en) Optimized segment cleaning technique
US9529546B2 (en) Global in-line extent-based deduplication
WO2012106362A2 (en) Apparatus, system, and method for managing eviction of data
WO2012116369A2 (en) Apparatus, system, and method for managing contents of a cache
WO2014114203A1 (en) Tiered caching and migration in differing granularities
US8478727B2 (en) Storage system and control method for the same
US10620844B2 (en) System and method to read cache data on hybrid aggregates based on physical context of the data
WO2012021847A2 (en) Apparatus, system and method for caching data
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
KR101968474B1 (ko) 플래시 캐시에서 트랜잭션 지원 방법 및 장치

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130416

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130716

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130723

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130816

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130823

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130917

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140128

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140424

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140502

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140528

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140627

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150224

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150624

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150804

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20150911

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20160802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160823

R150 Certificate of patent or registration of utility model

Ref document number: 5999645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees