JP2014174992A - システム・リブートを通じて改善されたキャッシュ・ランプアップを達成するためにキャッシュ・ストアを管理するためのシステム、方法、およびコンピュータ可読媒体 - Google Patents

システム・リブートを通じて改善されたキャッシュ・ランプアップを達成するためにキャッシュ・ストアを管理するためのシステム、方法、およびコンピュータ可読媒体 Download PDF

Info

Publication number
JP2014174992A
JP2014174992A JP2014037980A JP2014037980A JP2014174992A JP 2014174992 A JP2014174992 A JP 2014174992A JP 2014037980 A JP2014037980 A JP 2014037980A JP 2014037980 A JP2014037980 A JP 2014037980A JP 2014174992 A JP2014174992 A JP 2014174992A
Authority
JP
Japan
Prior art keywords
cache
store
metadata
data storage
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014037980A
Other languages
English (en)
Inventor
Bangalore Shivashankaraiah Vinay
バンガロール シヴァシャンカライア ヴィナイ
Parameswaran Subramanian
パラメスワラン サブラマニアン
Ish Mark
イシュ マーク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Corp filed Critical LSI Corp
Publication of JP2014174992A publication Critical patent/JP2014174992A/ja
Pending legal-status Critical Current

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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned 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/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system

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)

Abstract

【課題】キャッシュ・ストアを管理するためのシステムおよび方法を提供すること
【解決手段】キャッシュ・ストアを持ち記憶システムに関連するキャッシュ・コントローラは、それ自体のリブートを通じてキャッシュ・ストアに格納された情報を維持し、ホスト・コンピュータ・システムおよびデータ記憶システムと通信し、メタデータ部分およびログ部分を含めるためにキャッシュ・メモリを区分する。キャッシュ・コントローラは、ホスト・コンピュータ・システムにアクセス可能な分離したメモリにメタデータのコピーを維持し、データはメタデータ・ログがその容量に到達したときにキャッシュ・ストアに書き込まれる。リブート時に、メタデータはホスト・コンピュータ・システムにコピーして戻され、メタデータ・ログは、データ記憶システムに保存されていないキャッシュに追加の変更をコピーするためにトラバースされる。
【選択図】図2

Description

本発明は、一般的に、データ記憶システムに関し、より詳細には、フラッシュ・メモリ・ベースのデータ・キャッシュを用いるデータ記憶システムに関する。
一部の従来のコンピューティング・システムは、コンピューティング・システムおよび/またはコンピューティング・システムによって実行されるアプリケーションのパフォーマンスを改善するために、より低速なデータ記憶装置(たとえば、磁気ディスク記憶媒体、光ディスク記憶媒体、またはネットワークを介してアクセス可能な1つまたは複数のデータ記憶装置)に対するブロック・レベルまたはファイル・レベルの記憶装置の代替として不揮発性メモリ装置を用いる。この点で、より低速な記憶装置に対するよりも、一部の不揮発性メモリ装置(以下、簡潔さのために「キャッシュ装置」)に対する方が入出力(I/O)動作を大幅に高速に実行できるため、キャッシュ装置を使用することで、I/O動作の速度を大きく改善する機会が提供される。
データ記憶マネージャおよび記憶アレイによってサポートされたデータ記憶システムのI/Oパフォーマンスを超えて、I/Oのパフォーマンスを上昇させるためにデータ・キャッシュを組み込むことが知られている。たとえば、図1に示したシステムでは、データ記憶マネージャ10は、信頼性が高いデータの記憶を可能にする方法で記憶アレイ12を制御する。ホスト(コンピュータ)システム14は、データ記憶マネージャ10を介して、記憶アレイ12にデータを格納し、記憶アレイ12からデータを取得する。すなわち、アプリケーション・プログラムまたはAPP18により動作するプロセッサ16は、記憶アレイ12にデータを書き込み、記憶アレイ12からデータを読み込むために要求を発行する。明瞭さのために、ホスト・システム14およびデータ記憶マネージャ10は別々の要素として図1に描写しているが、そのようなホスト・システム14のマザーボードまたはバックプレーンに接続するカードとして、データ記憶マネージャ10を物理的に統合することは一般的である。
そのようなシステムは、記憶アレイ12のデータ記憶装置24、26、28、および30に格納されている特定のデータへのアクセスの頻度に基づいてデータをキャッシュすることができる。このキャッシュされたまたは「ホットな」データ、たとえば要素Aは、フラッシュベースのメモリ装置15のキャッシュ・メモリ・モジュール22に格納される。要素Aは、ブロック・レベルまたはファイル・レベルで識別することができる。その後、「ホットな」データに対して、APP18などのアプリケーションによって発行された要求は、データ記憶システムではなく、フラッシュベースのメモリ装置15によってサービスされる。そのような従来のデータ・キャッシュ・システムは拡張可能で、フラッシュベースの記憶装置15の容量によってのみ制限される。したがって、フラッシュベースの記憶装置15の全容量を満たすには、かなりの時間がかかる場合がある。フラッシュベースのキャッシュ装置15には、ホスト・システム14によって頻繁に読み込まれるデータ・アイテムをキャッシュするように指示することができるが、フラッシュベースの装置15のリブートを通じて、どのデータがキャッシュされていたかを記憶していることは依然として重要である。どのデータがホスト・システム14によって頻繁に必要とされるかに関する情報がない場合、キャッシュされたデータの再構築にかなりの時間がかかる場合があり、その間、フラッシュベースのキャッシュ装置15のパフォーマンスおよびホスト・システム14のパフォーマンスの一方または両方が影響を受け、その結果、そのような従来システムのユーザが気づく可能性あるアプリケーションのパフォーマンスの低下につながる。
データ記憶マネージャ10と通信する分離した別個のキャッシュ・メモリ・モジュール21は、記憶アレイ12の記憶要素24、26、28、および30全体にデータを確実に分散するように構成された処理ステップの前またはその間に、一時的にデータ要素Bをキャッシュすることができる。
リダンダント・アレイ・オブ・インエクスペンシブ(またはインデペンデント)ディスク(RAID)は、1つまたは複数の記憶装置の障害からの回復を可能にすることによって、信頼性に取り組むデータ記憶システムの一般的なタイプである。RAIDシステムではデータ・キャッシュを組み込むことが知られている。図1に示したシステムでは、データ記憶マネージャ10は、ブロックの単位でデータをキャッシュするRAID処理システム20を含み、このブロックの単位は、リード・キャッシュ・ブロック(RCB)およびライト・キャッシュ・ブロック(WCB)と呼ぶことができる。WCBは、記憶アレイ12にデータを格納する要求の一部としてデータ記憶マネージャ10にホスト・システム14が送信するデータを含む。ホスト・システム14からのそのような書き込み要求に応じて、データ記憶マネージャ10は、1つまたは複数のキャッシュ・メモリ・モジュール21にWCBをキャッシュまたは一時的に格納し、次に、ホスト・システム14に肯定メッセージを返す。後の時点で、データ記憶マネージャ10は、(典型的には、以前にキャッシュされた他のWCBに加えて)キャッシュされたWCBを記憶アレイ12に転送する。RCBは、ホスト・システム14からの読み込み要求に応じて、データ記憶マネージャ10が記憶アレイ12から頻繁に読み込んだデータを含む。キャッシュ・メモリ・モジュール21は、フラッシュ・メモリなど、データ記憶アレイ12が含むメモリ(たとえばディスク・ドライブ)のタイプよりはるかに速くアクセスできるメモリのタイプであるため、頻繁に要求されるデータをキャッシュすることは、ホスト・システム14がそれを要求するたびに、記憶アレイ12から読み込むより効率的である。
特開2009−53955号公報
リブート動作の後の改善されたキャッシュ・ランプアップ(ramp-up)のためにキャッシュ・ストアを管理するためのシステムおよび方法の実施形態が示され、代表的な実施形態に記述される。キャッシュ・ランプアップは、キャッシュに格納されたデータ要素のコンテンツを回復および検証するために、キャッシュ・コントローラが必要とする時間である。
代表的な実施例では、キャッシュ・コントローラは、ホスト・コンピュータ・システムおよびデータ記憶システムと通信するために少なくとも1つのインターフェースを含む。キャッシュ・コントローラは、キャッシュ・ストアおよび処理システムをさらに含む。処理システムは、キャッシュ・ストアに格納されたヘッダー情報および実行可能命令に応答する。処理システムは、キャッシュ・コントローラの現在の状態に応じて状態識別子にプログラム可能な方法で応答し、メタデータ・ログに対して次に使用可能なシーケンス番号を識別し、キャッシュ・ストアにおけるメタデータ・ストアの位置およびサイズを識別し、キャッシュ・ストアにおけるメタデータ・ログの位置およびサイズを識別し、キャッシュ・ストアにおける複数のキャッシュ・ウィンドウの位置およびサイズを識別し、各キャッシュ・ウィンドウは、キャッシュ・コントローラによってさらに識別される複数のキャッシュ・ラインを含むように構成される。指定された条件に応じて、処理システムは、メタデータの表現で格納され、ホスト・コンピュータ・システムを介してアクセス可能な情報をキャッシュ・ストアに書き込み、メタデータ・ログで次に使用可能なシーケンス番号を置き換えるようにさらに構成される。
他の代表的な実施形態では、ホスト・コンピュータ・システムに関連するキャッシュ・ストア、およびキャッシュ・ホスト・コントローラのリブートを通じてキャッシュ・ストアに情報を維持するデータ・ストアを管理するための方法が開示される。方法は、メタデータを格納するための第1の部分と、キャッシュ・ストアに属するデータとしてデータ記憶マネージャによって識別されたデータ値を格納するための第2の部分と、メタデータへの変更を格納するための第3の部分と、ホストおよびキャッシュ・ストアに関する情報を含む第4の部分とを提供するためにキャッシュ・ストアを区分するステップと、第1の部分の表現をメタデータで、第2の部分の表現をデータ記憶マネージャによって指示されたデータ値でポピュレートするステップであって、データ記憶マネージャは、データ記憶システムに格納された特定のデータ・アイテムに対して所望される回数を超える要求を表す頻度値により、キャッシュ・ストアに格納されるデータ・アイテムを識別するステップと、データ記憶マネージャによって指示されたように、第1の部分の表現にメタデータがポピュレートされ、第2の部分の表現にデータ値がポピュレートされるたびに第3の部分の表現にエントリを作成するステップであって、第1の部分、第2の部分、および第3の部分の表現は、ホスト・コンピュータ・システム、データ記憶マネージャ、およびキャッシュ・ホスト・コントローラの1つまたは複数を介してアクセス可能な揮発性メモリに格納されるステップと、第3の部分のデータ記憶容量に到達したときに、第3の部分のデータ記憶容量に到達したときを決定するために、第3の部分の表現における現在のインデックスを最初のインデックスと比較するステップと、キャッシュ・ストアの対応する第1のストアに第1の部分の表現における情報を書き込むステップと、最初のインデックスをキャッシュ・ストアの第3の部分における次に利用可能な保存場所に置き換えるステップとを含む。
代表的な実施形態では、キャッシュ・コントローラのリブートが完了するときに、処理システムは、キャッシュ・ストアの表現のコンテンツであって、ホスト・コンピュータ・システムにアクセス可能な揮発性メモリに格納され、次に使用可能なシーケンス番号をさらに含むコンテンツを読み込み、ホスト・コンピュータ・システムにアクセス可能な揮発性メモリにメタデータ・ストアのコンテンツをコピーし、回復されたメタデータを生成するためにメタデータ・ストアにおいて1つまたは複数のエントリ上に有効なログ・エントリを適用し、データ記憶システムからの対応するデータを用いて更新するために、適切なキャッシュ・ウィンドウを識別するために回復されたメタデータをトラバースし、適切なキャッシュ・ウィンドウの状態を変更し、ハッシュ・テーブルおよび優先度インデックスにキャッシュ・ウィンドウを挿入し、かつキャッシュ・メモリへのI/O動作が有効であることをデータ記憶システムに示すフラグを更新する実行可能命令を実行する。
ホスト・コンピュータおよび記憶システムに結合された従来のキャッシュ装置を示すブロック図である。 本発明の代表的な一実施形態による改善されたキャッシュ・コントローラを示すブロック図である。 図2のキャッシュ・ストアを示す概略図である。 図3のメタデータ・ストアを示す概略図である。 図3のログ・ストアを示す概略図である。 図2のホスト・メモリ表現またはキャッシュ・ストア・ミラーを示す概略図である。 時間の経過による図3のログ・ストアの使用を示す概略図である。 図2のキャッシュ・ソフトウェアを示す概略図である。 キャッシュ装置のリブートを通じて改善されたランプアップを達成するために、キャッシュ・ストアを管理するための方法を示す流れ図である。 キャッシュ装置のリブートを通じて改善されたランプアップを達成するために、キャッシュ・ストアを管理するための方法を示す流れ図である。
キャッシュ・ストアを持ち、記憶システムに関連するキャッシュ・コントローラは、キャッシュ・コントローラのリブートを通じてキャッシュ・ストアに格納された情報を維持する。キャッシュ・コントローラは、ホスト・コンピュータ・システムおよびデータ記憶システムと通信する。改善されたキャッシュ・コントローラは、ホスト・コンピュータ・システムに結合されたフラッシュベースのキャッシュ装置で用いることができる。キャッシュ・コントローラは、メタデータ部分およびログ部分を含めるためにキャッシュ・メモリを区分する。分離した部分は、キャッシュされたデータ要素に使用される。キャッシュ・コントローラは、ホスト・コンピュータ・システムにアクセス可能な分離したメモリにメタデータのコピーを維持する。データは、メタデータ・ログがその容量に到達したときにキャッシュ・ストアに書き込まれる。リブート時に、メタデータはホスト・コンピュータ・システムにコピーして戻され、メタデータ・ログは、データ記憶システムおよび/またはキャッシュ・ストアに保存されていない追加の変更をキャッシュにコピーするためにトラバースされる。
図2に示すように、本発明の例示的または代表的な実施形態では、ホスト・システム100は、データ・ストア140およびフラッシュベースのキャッシュ装置130に結合される。データ・ストア140は、ダイレクト・アタッチト・ストレージ(DAS)またはストレージ・エリア・ネットワーク(SAN)でもよい。これらの実施形態では、データ・ストア140は、データ記憶マネージャの指示のもとに、記憶アレイ12(図1)に関して記述したものなど、複数のデータ記憶装置を含む。明瞭さのために本明細書には詳細には図示および記述しないが、データ記憶マネージャは、複数のデータ記憶装置を通じてデータを分散することによって、たとえばRAID5の保護など、RAID保護を提供するように動作することを理解するべきである。
RAIDコントローラ(図示せず)は、バスなどのインターフェースを介してデータ・ストア140と通信し、また、他のバスなど他のインターフェースを介してホスト(コンピュータ)システム100と通信する。簡単のために、RAIDコントローラおよびそのインターフェース、ホスト・システム100、ならびにデータ・ストア140は、ホスト・システム100とデータ・ストア140との間の2方向の矢印によって図2に示している。RAIDコントローラは、ホスト・システム100のマザーボードまたはバックプレーン(図示せず)にプラグ接続できるアセンブリまたは他の適切な構造に物理的に統合することができる。
ホスト・システム100は、データ・ストア140にデータを格納し、データ・ストア140からデータを取得する。すなわち、アプリケーション・プログラム124または同様のソフトウェアにより動作する、ホスト・システム100のプロセッサ110は、データ・ストア140からデータを読み込み、データ・ストア140にデータを書き込むための要求を発行する。アプリケーション・プログラム124は、メモリ120に格納されるか、または存在するような概念的な方法で描写されているが、そのようなソフトウェアは、複数のモジュール、セグメント、プログラム、ファイルなどの形式を取ることができ、それらは、従来のコンピュータ原理により必要に応じてメモリ120にロードされることを当業者は理解できることに留意されたい。同様に、メモリ120は、明瞭さのために単一の要素として描写しているが、メモリ120は、複数の要素を含むことができる。同様に、プロセッサ110は、明瞭さのために単一の要素として描写しているが、プロセッサ110は複数の要素を含むことができる。
アプリケーション・プログラム124に加えて、メモリ120は、データ・ファイルおよびプログラムを管理するためのファイル・システム122、キャッシュ・ストア・ミラー600、およびキャッシュ・ソフトウェア800をさらに含む。キャッシュ・ストア・ミラー600のアーキテクチャおよび使用については、図6の図の記述に関して詳細に記述する。同様に、キャッシュ・ソフトウェア800のアーキテクチャおよび動作は、図8の図の記述に関して詳細に記述する。
フラッシュベースのキャッシュ装置130は、キャッシュ・ストア300のデータ・ストア140の最も頻繁にアクセスされるデータを戦略的にキャッシュすることによって、APP124などアプリケーションのパフォーマンスを改善するように配置される。キャッシュ・ソフトウェア800などホスト・システム・ベースのソフトウェアは、データ・ストア140に格納された頻繁にアクセスされたデータ・アイテムを検出し、キャッシュ・ストア300にそれらを格納するように設計されている。
フラッシュベースのキャッシュ装置130のキャッシュ・コントローラ(図示せず)は、バスなどのインターフェースを介してホスト・システム100およびデータ・ストア140と通信する。フラッシュベースのキャッシュ装置130は、ホスト・システム100のマザーボードまたはバックプレーン(図示せず)にプラグ接続できるアセンブリまたは他の適切な構造に物理的に統合することができる。好ましい実施形態では、フラッシュベースのキャッシュ装置130は、2方向の矢印によって描写されたPeripheral Component Interconnect Express2.0(PCIe)インターフェース・バスを介してホスト・システム100に結合される。
図3は、図2のキャッシュ・ストア300の概略図である。キャッシュ・ストア300は、少なくとも4つの個別の記憶エリアに区分または分割される。第1の部分またはパーティションはヘッダー情報310を含む。第2の部分は、1組のキャッシュ・ウィンドウ320を含む。第3の部分は、メタデータ・ストア400を含む。第4の部分は、ログ・ストア500を含む。ヘッダー情報は、フラッシュベースのキャッシュ装置130(図1)の運転状態を示すフラグまたは他のインジケータ、ログ・ストア500においてエントリのナビゲートに使用される次に使用可能なシーケンス番号、メタデータ・ストア400の位置およびサイズを示す情報、ログ・ストア500の位置およびサイズを示す情報とともに、第2の部分のキャッシュ・ウィンドウ322の数を示す情報を含む。キャッシュ・ストア300のかなりの量の記憶容量が、キャッシュ・ウィンドウとして図に識別された領域に割り当てられる。各キャッシュ・ウィンドウは、所望のサイズのラインのキャッシュ・ブロックへとさらに細分される。
データ・ストア140の規定された領域にアクセスするI/O動作は、仮想キャッシュ・ウィンドウを割り当てられる。規定された領域に繰り返しアクセスされたとき(およびしきい値に到達した後)、仮想キャッシュ・ウィンドウ(VCW)は、物理的なキャッシュ・ウィンドウに変換される。VCWが解放されている間、物理的なキャッシュ・ウィンドウ(CW)(つまりキャッシュ・ウィンドウ322の1つ)は、データ・ストア140の規定された領域からのデータで満たされる。CWへの書き込み動作が正常に完了した後、規定された領域の次の読み込み要求は、データ・ストア140ではなくフラッシュベースのキャッシュ装置130によって処理される。
フラッシュベースのキャッシュ装置130がホスト・システム100に最初に導入されるとき、キャッシュ・ウィンドウ・オブジェクトは、ホスト・メモリ120において割り当てられ、フリー・キャッシュ・ウィンドウ・リスト(free cache window list)(図示せず)に追加される。十分な数のVCWオブジェクトも割り当てられ、フリー仮想キャッシュ・ウィンドウ・リスト(free virtual cache window list)に入れられる。I/O動作が受信されると、ハッシュ・テーブルでVCWまたはCWが検索される。それが見つからない場合、VCWはフリー・リストから削除され、受信されたI/Oの領域を追跡するために使用される。このVCWは、ここで、ハッシュ・テーブルに挿入される。VCWへの十分なアクセスを受信すると、物理的なCWがフリー・リストから取られる。キャッシュ・ウィンドウ322は、キャッシュ・ストア300において1組のキャッシュ・ウィンドウ320の対応する位置で満たされる。キャッシュ・ストア300が初めて初期化される場合、ヘッダー情報310は、次に使用可能なシーケンス番号0を含み、ログ・ストア500およびメタデータ・ストア400のエントリはすべて、所望の2進値(つまり論理0または論理1)に初期化される。
図4は、図3のメタデータ・ストア400におけるエントリ402の概略図である。メタデータ・エントリ402は、キャッシュ・ストア300に格納されたデータに関する情報を保持する1組のフィールドを含む。メタデータ・ストア400の各エントリ402は、物理的なCWを表している(つまり、1組のキャッシュ・ウィンドウ320に格納されたキャッシュ・ウィンドウ322。メタデータ・ストア400のサイズは、割り当てられたCW322の数に依存する。メタデータ・ストア400の各メタデータ・エントリ402は、キャッシュ・ストア300における特定のCW322をマッピングまたは識別する。各メタデータ・エントリ402は、仮想ディレクトリ識別子(VDI)と、仮想ディレクトリ論理ブロック・アドレス(VD LBA)と、優先度インデックス(PI)と、キャッシュ・ストア300に転送されたデータの範囲またはブロックに対するキャッシュ・ライン・ビットマップとを含む。各メタデータ・エントリ400は、「ダーティ」ビットを格納するために予約されたストアをさらに含む。ダーティ・ビットは、データ・ストア140の対応する保存場所に転送されていない、キャッシュ・ストアのデータへの変更を記録する。
好ましい実施形態では、VDIは、1:1の関係で、データ・ストア140で64までのデータ記憶装置に対応する64までの仮想ディスクを識別するために、6ビットを含む。VD LBAは、論理的なソース・アドレスまたは参照位置0から、参照から削除された64TBまでの位置の、キャッシュされるデータの範囲を識別するために26ビットを含む。PIは、CWが論理的に挿入される16の優先度レベルまたはキューを識別するために4ビットを含む。キャッシュ・ライン・ビットマップは、キャッシュ・ブロックのどれが使用されているかを示す。メタデータ・エントリ402におけるフィールドの代替的な配置(つまり位置およびビット長)が考えられる。
ホスト・システム100のアプリケーションによってデータがどれくらい頻繁にアクセスされるかの測定を表すPIインデックスは、第1の優先度レベルまたはバケットでキャッシュ・ストア300に移動し、時間とともに優先度レベルを上下する一部のCWで動的である。記憶容量がキャッシュ・コントローラによって使用されるため、頻繁にアクセスされないキャッシュされたCWが交換される。優先度インデックスによって、キャッシュ・コントローラは、領域内のキャッシュ・ヒットの重みに基づいてCWのデータを区別することができる。指定された時間内に十分な数のヒットがあった後に、特定のCWは、より高い優先度の値またはインデックスに昇格される。一定期間を通じて特定のCWが十分なI/O動作を受信していない場合、CWは、より低い優先度レベルに降格される。記憶容量が利用できなくなると、CWは、最も低い優先度レベルからそれを削除した後に再使用または再割り当てされる。
1TBのキャッシュ・データ・ストア容量および1MBのCWを持つ例示的な実施形態では、100万のCWが必要である。100万のCWを表すために、メタデータ・ストア400は、8MBの記憶容量が必要である。さらに64MBのデータ容量が、ログ・ストア500に割り当てられるか、または区分される。ログ・ストア500は、I/O動作が処理されるときに、割り当てられたCW322のいずれかのメタデータへの更新を記録するために利用することができる。
各フラッシュベースのキャッシュ装置130についてメタデータ・ストア400を構成および維持することによって、複数のフラッシュベースのキャッシュ装置を展開することができる。複数のフラッシュベースのキャッシュ装置130がそのように展開されると、キャッシュ・ソフトウェア800は、指定されたグループ識別子を用いて装置を関連付けて追跡する。
図5は、図3のログ・ストア500のエントリ502を示す概略図である。ログ・エントリ502は、メタデータ・エントリ402で提供されるのと同じ組のフィールドを含む。その情報に加えて、ログ・エントリ502は、エントリに利用可能なログ・ストアでの位置を識別するチェックポイントまたはシーケンス番号、およびキャッシュ・ストア300において個々のCW322を表すCWインデックスをさらに含む。
キャッシュ可能な領域が「ホット」(ホスト・システム100で実行するアプリケーションまたはアプリケーション群によって頻繁にアクセスされるものとして識別されること)になるたびに、VCWは、物理的なCWに変換される。CW322のI/Oアクセスごとに、キャッシュ・ラインが満たされていない場合、データの所望の範囲(たとえば64KB)は、データ・ストア140から取り出され、キャッシュ・ストア300の対応する空間に満たされる。同時に、CW322内のキャッシュ・ライン・ビットマップで適切なビットが有効になる。I/O動作がキャッシュ・ラインおよび・またはCW322にオーバラップする場合、特別な配慮が払われる。
CWがフリー・プール(free pool)から利用される場合は常に、キャッシュ・ライン・ビットマップには変更があり、優先度バケット内のCW昇格(promotion)/降格(demotion)が発生する。したがって、対応する情報は、ホスト・システム100に関連するメモリ120に維持されるキャッシュ・ストア・ミラー600(メタデータ・ストアおよびキャッシュ・ウィンドウ・オブジェクトの表現)で更新される。メタデータ・エントリの位置は、キャッシュ装置のCWの位置に基づいてメタデータ・ストア内で選択される。次に、ログ・エントリが生成され、キャッシュ・ストア300のログ・ストア500に記録される。ホスト・システムのI/Oは、すべてのメタデータ・トランザクションが完了すると完了する。
ログ・ストア500に割り当てられた記憶装置(たとえば64MB)にすべてのログ・エントリが満たされると、メタデータ・ブロックまたはメタデータ・ミラーのホスト・メモリ表現は、フラッシュベースのキャッシュ装置130のキャッシュ・ストア300に書き込まれる。メタデータ・ストア400の更新が成功した後に、キャッシュ・ストア300のヘッダー情報310は、次に使用可能なログ・シーケンス番号で更新される。
図5に示したログ・エントリ配置は、CWインデックスが20ビットを割り当てられるときに、1TBのキャッシュ・メモリ容量を提供するために、100万までのCWを表すことができる。シーケンス番号は、ログ・ストア500を循環(wrap around)できる値を持つ。ログ・エントリ502のフィールドの代替の配置(つまり位置およびビット長)が考えられる。
図6は、図2のホスト・メモリ表現またはキャッシュ・ストア・ミラー600の概略図である。図6に示すように、キャッシュ・ソフトウェア800は、ホスト・システム・メモリ120にキャッシュ・ストア・ミラー600を維持する。キャッシュ・ストア・ミラーは、フラッシュベースのキャッシュ装置130のキャッシュ・ストア300からのメタデータ・ストアのコピーを含み、キャッシュ・ストア300に転送するように指定されたCWからのキャッシュ・ウィンドウ・オブジェクトを保持する。上記のように、キャッシュ・ストア300においてログ・ストア500がその記憶容量に到達した後のみ、キャッシュ・ストア300の情報を更新するために、キャッシュ・ストア・ミラー600の情報が使用される。
図7は、時間の経過による図3のログ・ストア500の使用を示す概略図である。図7に示すように、ログ・エントリ712はログ・ストア500に記録されるため、それらは、矢印710によって概略的に示した最初のチェックポイントまたはシーケンス番号で始まり連続的な方法で追加される。上記のように、最初のシーケンス番号は、キャッシュ・ストア300のヘッダー情報310に規定される。
図8は、図2のキャッシュ・ソフトウェア800の概略図である。図示する実施形態では、様々な論理要素またはモジュールが、キャッシュ・ソフトウェア800の個々のコンポーネントとして互いに離れて示されている。この点で、キャッシュ・ソフトウェア800は、管理ロジック805、パーティション・ロジック810、キャッシュ・ストア・ロジック812、ログ・エントリ・ロジック814、比較ロジック816、およびメタデータ回復ロジック818を含む。管理ロジック805は、プロセッサによって実行されたときに、データ・ストア140との間、およびフラッシュベースのキャッシュ装置130との間で、I/O動作を含むホスト・システム100内のデータ操作を調整する実行可能命令を含む。動作において、管理ロジック805は、フラッシュベースのキャッシュ装置130にキャッシュされるべきデータ・ストア140のデータを識別するデータ記憶マネージャを有効にする。
パーティション・ロジック810は、プロセッサによって実行されたときに、フラッシュベースのキャッシュ装置130のキャッシュ・ストア300内のヘッダー情報310、CWストア320、メタデータ・ストア400、およびログ・ストア500の相対的な配置およびサイズを調整する実行可能命令を含む。パーティション・ロジック810は、データ・ストア140およびフラッシュベースのキャッシュ装置130の特性を識別する1つまたは複数の入力パラメータにより、メタデータ・ストア400およびログ・ストア500の最適なサイズおよび配置を計算するためのルールおよびアルゴリズムを含むことができる。
キャッシュ・ストア・ロジック812は、プロセッサによって実行されたときに、フラッシュベースのキャッシュ装置130との間のI/O動作を調整する実行可能命令を含む。上記のように、キャッシュ・ストア・ロジック812は、VCW、CW、VCWフリー・リストを管理し、テーブル、及び優先度リストまたはバケットを持つ。キャッシュ・ストア・ロジック812は、フラッシュベースのキャッシュ装置130に転送されるべき、そこに格納されたデータ・アイテムを識別するために、ホスト・システム100とデータ・ストア140との間のI/O動作を監視するモジュールに統合することができる。あるいは、キャッシュ・ストア・ロジック812は、ホスト・システム100で実行され、そのような「ホット」なデータを識別するように構成された分離したアプリケーションから入力を受信することができる。さらに、キャッシュ・ストア・ロジック812は、エントリ402の形で適切に配置された情報のメタデータ・ストア400への転送を指示する。
図5に示した実施形態に関して図示し、上に記述したように、ログ・エントリ・ロジック814は、プロセッサによって実行されたときに、ログ・ストア500の適切に配置されたログ・エントリ502に、どの情報を転送するかを決定する実行可能命令を含む。また、上に示したように、ログ・エントリ・ロジック814は、最初のインデックスまたはシーケンス番号を取得し、ログ・エントリのそれぞれを連続して入力し、各ログ・エントリは、キャッシュ・ストア300のCW322と1:1関係で、かつメタデータ・ストア400のエントリと同様に情報フィールドを介してデータ・ストア140に配置されたデータ・アイテムにマッピングされることになる。
比較ロジック816は、プロセッサによって実行されたときに、ログ・ストア500の有効なログ・エントリを決定する実行可能命令を含む。この点で、各エントリのシーケンス番号は、次のエントリと比較される。一意の増分するシーケンス番号が用いられる。結果的に、シーケンス番号の差が0または1である限り、ログ・エントリは有効である(そしてメタデータ400に適用される)。差が0または1でない場合、比較ロジック816は、プロセスが無効なログ・エントリに到達したことを示し、それ以上のログの処理は終了する。上記のように、ヘッダー情報310は、比較に使用される第1のシーケンス番号を提供する。
初期化プロセスの間に、ランダムなシーケンス番号が選択される。ランダムなシーケンス番号は、キャッシュ・ストアのヘッダー情報に記録される。最初のログ・エントリは、ヘッダー情報に格納されたシーケンス番号を使用する。次のログ・エントリについては、シーケンス番号は1ずつ増分される。また、上に示したように、シーケンス番号は、処理が、ログ・ストア500の終わりからログ・ストア500の始めに折り返す方法で配置される。ログが一杯の場合、0または1でない差値によって決定されるように、揮発性メモリのメタデータは、キャッシュ・ストアに書き込まれ、シーケンス番号は1つ増分されてヘッダー情報に格納される。ログへの次の更新は、シーケンス番号によって識別されたログ位置にある。
メタデータ回復ロジック818は、プロセッサによって実行されたときに、メタデータ・ストア400のコンテンツおよびログ・ストア500の有効なエントリからキャッシュ・ミラー600を再構築するために、一連の活動を実行する実行可能命令を含む。最初に、キャッシュ・ストア300のレイアウトを理解し、次に使用可能なシーケンス番号を取得するために、キャッシュ・ストア300のヘッダー情報310が読み込まれる。メタデータ・ストア400のコンテンツは、ホスト・システム100のメモリ120のキャッシュ・ミラー600にコピーされる。第1のログ・エントリは、ヘッダー情報310から回復された次に使用可能なシーケンス番号と照合される。シーケンス番号が一致する場合、ログ・エントリは有効であり、ログ・エントリに関連するデータが回復されるべきである。その後、シーケンス番号は増分され、有効なログ・エントリの有無がチェックされる。有効なログ・エントリは、キャッシュ・ミラー600上に適用される。シーケンス番号が一致しない場合、最新のメタデータはキャッシュ・ストアに格納され、ログの処理は終了する。キャッシュ・ミラー600のメタデータはトラバース(traverse)され、適切なCWが更新される。回復されたメタデータは、キャッシュ・ストアに書き込まれ、次に使用可能なシーケンス番号はヘッダー情報310に格納される。これらのCWはフリー・リストから削除され、適切な優先度インデックスまたは値でハッシュ・テーブルおよび優先度リストに挿入される。さらに、適切な相対的な「ホットさ(hotness)」の範囲でCWが識別されることを保証するために、CWヒット・カウントは、優先度インデックスまたはバケットおよびプロモーションしきい値に応じて初期化される。その後、ホストのI/O動作が許可される。次のログ・エントリは、ヘッダー情報310に格納されたシーケンス番号によりログ・ストアに格納される。
図9Aおよび図9Bは、キャッシュ装置のリブートを通じて改善されたランプアップを達成するために、キャッシュ・ストアを管理するための方法900を示す流れ図を含む。ランプアップは、キャッシュ・コントローラがリブート動作から回復するのに必要な時間である。回復によって、キャッシュ・ストア300は、すべての「ホットさ」および優先度のキュー特性を含む有効な状態へと回復することが意図される。別の言い方をすれば、キャッシュ履歴は損失なく回復される。
方法900は、リブート動作を通じてメタデータを維持できるシステムを確立するための予備ステップを含むステップ、およびリブートからのシステム回復を検出したときに実行されるステップを含むことを理解されたい。方法900はブロック902から始まり、ここで、キャッシュ・ストアは、メタデータ・ストア、ログ・ストア、1組のCW、およびヘッダー情報ストアをサポートするために分割される。ブロック904では、メタデータ・コピーおよびCWオブジェクトのコピーは、ホスト・システムにアクセス可能な分離したメモリにポピュレート(populate)される。ブロック906では、メタデータ・コピーおよびCWオブジェクトが分離したメモリに格納されたコピーで更新されるたび、キャッシュ装置のログ・ストアにエントリが作成される。ブロック908では、ログ・ストアの現在のインデックスまたはシーケンス番号は、ログ・ストアの容量にいつ到達したかを決定するために、最初のインデックスまたはチェックポイントと比較される。判定ブロック910では、ログが一杯かどうかに関して決定が行われる。ログが一杯でない場合、判定ブロック910から出ている「いいえ」と書かれたフロー制御の矢印によって示されているように、処理はブロック906に戻る。そうでない場合、処理はブロック912へと継続し、ここで、分離したメモリのメタデータ・コピーおよびCWオブジェクトは、キャッシュ・ストアに転送される。その後、ブロック914に示したように、ヘッダー情報の最初のインデックスまたはシーケンス番号は、分離したメモリの次に利用可能な保存場所に置き換えられる。
結合子Aによって示すように、方法900は、判定ブロック916へと継続し、ここで、キャッシュ装置がリブート動作から回復したかどうかが決定される。回復していない場合、結合子B(Connector B)によって示すように処理はブロック906へと継続する。そうでない場合、システムはリブートが完了して処理はブロック918へと継続し、ここで、状態フラグは、キャッシュ装置130からホストのI/O動作をサスペンドするように設定され、ログで次に利用可能な保存場所を識別するために、ヘッダー情報がキャッシュ・ストアから読み込まれる。ブロック920では、キャッシュに格納されたメタデータのコンテンツは、ホスト・システムにアクセス可能な分離したメモリのメタデータ・ミラーにコピーされる。ブロック922では、有効なログ・エントリはメタデータ上に適用される。ブロック924では、回復されたメタデータは、データ記憶システムからの情報で更新される必要のあるCWを識別するために処理される。ブロック926では、CWはフリー・リストから削除され、ハッシュ・テーブルで更新されて、優先度インデックスにより適切な位置に挿入される。ブロック928では、カウンターは、優先度インデックスのプロモーションしきい値により初期化される。その後、判定ブロック932に示すように、次のログ・エントリが有効かどうかに関して決定が行われる。有効な場合、インデックスは、ブロック932に示したように一意のシーケンス番号で増分され、処理はブロック924に戻る。そうでない場合、すべてのログ・エントリの処理が完了し、I/O動作が有効であることを示すために、ブロック934で状態フラグがリセットされる。
その結果、キャッシュが一杯で、新しいデータ要素がキャッシュに属するものと識別されている場合、キャッシュ・コントローラは、CW置き換えの適切な候補として、リブートの直前の期間に比較的低いI/O要求を受信したCWを識別する。このようにして、改善されたキャッシュ・コントローラは、キャッシュ・ストアから比較的「よりホットな(hotter)」データ領域を破棄する代わりに、比較的低いI/O要求を受信するCWを再使用する。
CWが頻繁に昇格(promote)または降格(demote)される場合にログ更新の頻度を減らすために、ログ・エントリにおける更新の粒度を変更することができる。たとえば、優先度レベルの25%を超えてCWが昇格または降格された場合、レベルの数に関係なく、1つのログ・エントリだけが記録される。
図9Aおよび図9Bの流れ図は、上記の方法の基礎となるロジックの代表または例示のみを意図していることを理解されるだろう。様々な実施形態において、キャッシュ処理システムまたはキャッシュ・コントローラを含むデータ処理システムは、上記の方法を達成するために様々な方法のいずれかでプログラムまたは構成できることを当業者は理解されるだろう。上記のステップまたは動作は、並行して、または相互に非同期的になど、任意の適切な順序または連続で発生することができる。図9Aおよび図9Bに関して上に記述したステップまたは動作は、他のステップまたは動作と組み合わせることも、または一部の実施形態では省略することもできる。明瞭さのために図9Aおよび図9Bに流れ図の形で描写しているが、基礎をなすロジックは、モジュール化することも、または任意の適切な方法で配置することもできる。当業者は、上記の方法を達成するために、特定用途向け集積回路(ASIC)もしく同様の装置または装置の組合せの形などで、適切なソフトウェアまたは適切なロジックを容易にプログラムまたは構成することができるだろう。また、ソフトウェア命令または同様のロジックと、ローカル・メモリ120またはプロセッサ110によって実行するために、そのようなソフトウェア命令または同様のロジックが格納または統合化されている他のメモリとの組合せは、その用語が特許用語集に使用されるように、「コンピュータ可読媒体」または「コンピュータ・プログラム製品」を含むことを理解するべきである。
本発明は、本発明の原理および概念を示す目的で、1つまたは複数の代表的な実施形態に関して記述していることを留意されたい。本発明は、これらの実施形態に限定されない。当業者には理解されるように、本明細書で提供される記述を考慮して、本明細書に記述した実施形態には多数の変形形態を構成することができ、そのような変形形態はすべて、特許請求の範囲に規定される本発明の範囲内にある。

Claims (20)

  1. ホスト・コンピュータ・システムに関連するキャッシュ・ストア、およびキャッシュ・ホスト・コントローラのリブートを通じて前記キャッシュ・ストアに情報を維持するデータ記憶システムを管理する方法であって、
    メタデータを格納するための第1の部分、前記キャッシュ・ストアに属するデータとしてデータ記憶マネージャによって識別されたデータ値を格納するための第2の部分、前記メタデータへの変更を格納するための第3の部分、ならびに前記ホストおよび前記キャッシュ・ストアに関する情報を含む第4の部分を提供するために前記キャッシュ・ストアを区分するステップと、
    前記第1の部分の表現をメタデータで、前記第2の部分の表現を前記データ記憶マネージャによって指示されたデータ値でポピュレートするステップであって、前記データ記憶マネージャは、前記データ記憶システムに格納された特定のデータ・アイテムに対して所望される回数を超える要求を表す頻度値に従って前記キャッシュ・ストアに格納されるデータ・アイテムを識別する、ステップと、
    前記データ記憶マネージャによって指示されたように、前記第1の部分の前記表現がメタデータでポピュレートされ前記第2の部分の前記表現がデータ値でポピュレートされるたびに、前記キャッシュ・ストアの前記第3の部分にエントリを作成するステップであって、前記第1の部分および前記第2の部分の前記表現は、前記ホスト・コンピュータ・システム、前記データ記憶マネージャ、および前記キャッシュ・ホスト・コントローラの1つまたは複数を介してアクセス可能な揮発性メモリに格納される、ステップと、
    前記第3の部分のデータ記憶容量に到達したときに、前記第3の部分の前記データ記憶容量に到達したときを決定するために、前記キャッシュ・ストアの前記第3の部分の現在のインデックスを最初のインデックスと比較するステップと、
    前記キャッシュ・ストアの前記対応する第1のストアに前記第1の部分の前記表現における前記情報を書き込むステップと、
    前記最初のインデックスを前記キャッシュ・ストアの前記第3の部分における次に利用可能な保存場所に置き換えるステップと
    を含む方法。
  2. 前記第1の部分の前記表現、前記第2の部分の前記表現、および前記第3の部分の前記表現を所望の2進値に初期化するステップをさらに含む、請求項1に記載の方法。
  3. 前記第4の部分は、前記ホストの状態の指示、前記第1の部分の位置およびサイズを規定する第1の識別子および第1の範囲、キャッシュ記憶ユニットの数および前記第2の部分のキャッシュ記憶ユニット内の各キャッシュ・ラインのサイズを識別する第2の識別子および第3の識別子、ならびに前記第3の部分のそれぞれの位置およびサイズを規定する第4の識別子および第4の範囲を含む、請求項1に記載の方法。
  4. 前記第1の部分が第1のエントリを含み、前記第1のエントリが、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ライン・ビットマップを含む、請求項1に記載の方法。
  5. 前記第3の部分が、シーケンス番号、キャッシュ・ライン・ビットマップ、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ウィンドウ・インデックスを含む、請求項1に記載の方法。
  6. 前記キャッシュ・ホスト・コントローラのリブート時に、次に使用可能なシーケンス番号を識別するために前記第4の部分のコンテンツを読み込むステップと、
    前記データ記憶マネージャおよびキャッシュ・ストアによってアクセス可能な前記揮発性メモリに前記キャッシュ・メモリ装置の前記第1の部分をコピーするステップと、
    回復されたメタデータを生成するために、前記データ記憶マネージャおよび前記キャッシュ・ストアによってアクセス可能な前記揮発性メモリの前記第1の部分内の1つまたは複数のエントリの上部に有効なログ・エントリを適用するステップと、
    前記データ記憶システムからの対応するデータで更新するために適切なキャッシュ・ウィンドウを識別するために前記回復されたメタデータをトラバースするステップと、
    前記適切なキャッシュ・ウィンドウの状態を変更するステップと、
    ハッシュ・テーブルおよび前記優先度インデックスに前記キャッシュ・ウィンドウを挿入するステップと、
    すべてのメタデータ・エントリがトラバースされたら、前記キャッシュ・ホスト・コントローラに指示を送信するステップと
    をさらに含む、請求項1に記載の方法。
  7. 有効なログ・エントリを決定すること、第1のエントリ内のシーケンス番号を次のエントリ内の前記シーケンス番号に対して比較することを含む、請求項6に記載の方法。
  8. 前記比較は、
    前記第1のエントリ内のシーケンス番号と前記次のエントリ内の前記シーケンス番号の差を計算することと、
    前記差が0か1かを決定することと、
    前記差が0または1でない場合に、前記回復されたメタデータの前記トラバースを終了することと
    を含む請求項7に記載の方法。
  9. ホスト・コンピュータ・システムおよびデータ記憶システムとデータを通信するためのインターフェースと、
    キャッシュ・ストアと、
    前記キャッシュ・ストアに格納されたヘッダー情報に応答する処理システムと
    を含むキャッシュ・コントローラであって、
    前記処理システムは、
    前記キャッシュ・コントローラの現在の状態に応じて状態識別子にプログラム可能な方法で応答し、
    メタデータ・ログに対して次に使用可能なシーケンス番号を識別し、
    前記キャッシュ・ストア内のメタデータ・ストアの位置およびサイズを識別し、
    前記キャッシュ・ストア内のメタデータ・ログの位置およびサイズを識別し、
    前記キャッシュ・ストア内の複数のキャッシュ・ウィンドウの位置およびサイズを識別し、各キャッシュ・ウィンドウは、前記キャッシュ・コントローラによってさらに識別される複数のキャッシュ・ラインを含み、
    前記メタデータの表現で格納され、前記ホスト・コンピュータ・システムを介して前記キャッシュ・ストアにアクセス可能な情報を書き込み、
    前記メタデータ・ログ内の前記次に使用可能なシーケンス番号を置き換える
    ように構成されている、
    キャッシュ・コントローラ。
  10. 前記処理システムは、
    前記キャッシュ・ストアに前記メタデータ、キャッシュ・ウィンドウ・オブジェクト、および前記メタデータ・ログを維持する
    ようにさらに構成されている、
    請求項9に記載のキャッシュ・コントローラ。
  11. 前記メタデータは、少なくとも1つのエントリを含み、前記エントリが、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ライン・ビットマップを含む、請求項10に記載のキャッシュ・コントローラ。
  12. 前記メタデータ・ログは、前記シーケンス番号、前記キャッシュ・ライン・ビットマップ、前記仮想ディレクトリ識別子、前記論理ブロック・アドレス、前記優先度インデックス、前記予約された領域の情報、および前記キャッシュ・ウィンドウ・インデックスを含む、請求項11に記載のキャッシュ・コントローラ。
  13. 前記処理システムは、
    前記キャッシュ・コントローラのリブートが完了するときに、
    前記キャッシュ・ストアの表現のコンテンツであって、前記ホスト・コンピュータ・システムにアクセス可能な揮発性メモリに格納され、前記次に使用可能なシーケンス番号をさらに含むコンテンツを読み込み、
    前記ホスト・コンピュータ・システムにアクセス可能な前記揮発性メモリに前記メタデータ・ストアのコンテンツをコピーし、
    回復されたメタデータを生成するために前記メタデータ・ストアにおいて1つまたは複数のエントリの上部に有効なログ・エントリを適用し、
    前記データ記憶システムからの対応するデータで更新するために適切なキャッシュ・ウィンドウを識別するために前記回復されたメタデータをトラバースし、
    前記適切なキャッシュ・ウィンドウの状態を変更し、
    ハッシュ・テーブルおよび前記優先度インデックスに前記キャッシュ・ウィンドウを挿入し、
    前記キャッシュ・メモリへの入出力動作が有効であることをデータ記憶システムに示すフラグを更新する
    ようにさらに構成されている、
    請求項9に記載のキャッシュ・コントローラ。
  14. 有効なログ・エントリは、第1のエントリ内のシーケンス番号を次のエントリ内の前記シーケンス番号に対し比較することによって識別される、請求項13に記載のキャッシュ・コントローラ。
  15. 前記比較は、
    前記第1のエントリ内のシーケンス番号と前記次のエントリ内の前記シーケンス番号の差を計算することと、
    前記差が0か1かを決定することとを含む、請求項14に記載のキャッシュ・コントローラ。
  16. キャッシュ・コントローラの処理システムで実行されたときに
    メタデータを格納するための第1の部分、キャッシュ・ストアに属するデータとしてデータ記憶マネージャによって識別されたデータ値を格納するための第2の部分、前記メタデータへの変更を格納するための第3の部分、ならびにホストおよび前記キャッシュ・ストアに関する情報を含む第4の部分を提供するために前記キャッシュ・ストアを区分し、
    前記第1の部分の表現をメタデータで、前記第2の部分の表現を前記データ記憶マネージャによって指示されたデータ値でポピュレートし、ここで、前記データ記憶マネージャは、前記データ記憶システムに格納された特定のデータ・アイテムに対して所望される回数を超える要求を表す頻度値に従って前記キャッシュ・ストアに格納されるデータ・アイテムを識別するものであり、
    前記データ記憶マネージャによって指示されるように、前記第1の部分の前記表現がメタデータでポピュレートされ前記第2の部分の前記表現がデータ値でポピュレートされるたびに前記第3の部分の表現にエントリを作成し、前記第1の部分、第2の部分、および第3の部分の前記表現は、ホスト・コンピュータ・システム、前記データ記憶マネージャ、およびキャッシュ・ホスト・コントローラの1つまたは複数を介してアクセス可能な揮発性メモリに格納され、
    前記第3の部分のデータ記憶容量に到達したときに、前記第3の部分の前記データ記憶容量に到達したときを決定するために、前記第3の部分の前記表現における現在のインデックスを最初のインデックスと比較し、
    前記キャッシュ・ストアの前記対応する第1のストアに前記第1の部分の前記表現における前記情報を書き込み、
    前記最初のインデックスを前記キャッシュ・ストアの前記第3の部分における次に利用可能な保存場所に置き換える
    ように前記処理システムに指示する命令をコンピュータ実行可能な非過渡的な形式で格納するコンピュータ可読媒体。
  17. プロセッサは、前記第1の部分の前記表現、前記第2の部分の前記表現、および前記第3の部分の前記表現を所望の2進値に初期化するようにさらに指示される、請求項16に記載のコンピュータ可読媒体。
  18. 前記第4の部分は、前記ホストの状態の指示、前記第1の部分の位置およびサイズを規定する第1の識別子および第1の範囲、キャッシュ記憶ユニットの数および前記第2の記憶部のキャッシュ記憶ユニット内の各キャッシュ・ラインのサイズを識別する第2の識別子および第3の識別子、ならびに前記第3の部分のそれぞれの位置およびサイズを規定する第4の識別子および第4の範囲を含む、請求項16に記載のコンピュータ可読媒体。
  19. 前記第1の部分が第1のエントリを含み、前記第1のエントリが、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ライン・ビットマップを含み、前記第3の部分が、シーケンス番号、キャッシュ・ライン・ビットマップ、仮想ディレクトリ識別子、論理ブロック・アドレス、優先度インデックス、予約された領域、およびキャッシュ・ウィンドウ・インデックスを含む、請求項16に記載のコンピュータ可読媒体。
  20. プロセッサが、
    前記キャッシュ・ホスト・コントローラのリブート時に、次に使用可能なシーケンス番号を識別するために前記第4の部分のコンテンツを読み込み、
    前記データ記憶マネージャ、ホスト・コンピュータ・システム、およびキャッシュ・コントローラによってアクセス可能な前記揮発性メモリに前記キャッシュ・ストアの前記第1の部分をコピーし、
    回復されたメタデータを生成するために、前記データ記憶マネージャおよび前記キャッシュ・ストアによってアクセス可能な前記揮発性メモリの前記第1の部分内の1つまたは複数のエントリの上部に有効なログ・エントリを適用し、
    前記データ記憶システムからの対応するデータで更新するために適切なキャッシュ・ウィンドウを識別するために前記回復されたメタデータをトラバースし、
    前記適切なキャッシュ・ウィンドウの状態を変更し、
    ハッシュ・テーブルおよび前記優先度インデックスに前記キャッシュ・ウィンドウを挿入し、
    すべてのメタデータ・エントリがトラバースされたら、前記キャッシュ・ホスト・コントローラに指示を送信する
    ようにさらに指示される、請求項16に記載のコンピュータ可読媒体。
JP2014037980A 2013-03-11 2014-02-28 システム・リブートを通じて改善されたキャッシュ・ランプアップを達成するためにキャッシュ・ストアを管理するためのシステム、方法、およびコンピュータ可読媒体 Pending JP2014174992A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN272/KOL/2013 2013-03-11
IN272KO2013 2013-03-11

Publications (1)

Publication Number Publication Date
JP2014174992A true JP2014174992A (ja) 2014-09-22

Family

ID=50241211

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014037980A Pending JP2014174992A (ja) 2013-03-11 2014-02-28 システム・リブートを通じて改善されたキャッシュ・ランプアップを達成するためにキャッシュ・ストアを管理するためのシステム、方法、およびコンピュータ可読媒体

Country Status (6)

Country Link
US (1) US20140258628A1 (ja)
EP (1) EP2778933A1 (ja)
JP (1) JP2014174992A (ja)
KR (1) KR20140111588A (ja)
CN (1) CN104050094A (ja)
TW (1) TW201439763A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020532803A (ja) * 2017-09-05 2020-11-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 同期入出を介して生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新をする方法、システム、コンピュータ・プログラムおよび記憶制御装置

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
US10061590B2 (en) * 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10255182B2 (en) 2015-02-11 2019-04-09 Samsung Electronics Co., Ltd. Computing apparatus and method for cache management
US9684596B2 (en) 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Application cache replication to secondary application(s)
US9600417B2 (en) 2015-04-29 2017-03-21 Google Inc. Data caching
CN106503008B (zh) * 2015-09-07 2020-02-14 网宿科技股份有限公司 文件存储方法和装置及文件查询方法和装置
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
KR102517129B1 (ko) 2015-11-19 2023-04-04 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
EP3188025A1 (en) * 2015-12-29 2017-07-05 Teknologian Tutkimuskeskus VTT Oy Memory node with cache for emulated shared memory computers
KR102504763B1 (ko) * 2016-02-05 2023-03-02 에스케이하이닉스 주식회사 데이터 저장 장치
US10037149B2 (en) * 2016-06-17 2018-07-31 Seagate Technology Llc Read cache management
JP6717153B2 (ja) * 2016-10-06 2020-07-01 富士通株式会社 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
US10769134B2 (en) 2016-10-28 2020-09-08 Microsoft Technology Licensing, Llc Resumable and online schema transformations
US10599585B2 (en) * 2017-03-23 2020-03-24 Intel Corporation Least recently used-based hotness tracking mechanism enhancements for high performance caching
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
WO2019010703A1 (zh) * 2017-07-14 2019-01-17 华为技术有限公司 读、部分写数据方法以及相关装置
US10691566B2 (en) 2017-07-27 2020-06-23 International Business Machines Corporation Using a track format code in a cache control block for a track in a cache to process read and write requests to the track in the cache
CN111108485B (zh) * 2017-08-08 2023-11-24 大陆汽车科技有限公司 操作高速缓存的方法
US10579532B2 (en) 2017-08-09 2020-03-03 International Business Machines Corporation Invalidating track format information for tracks in cache
US11036641B2 (en) 2017-08-09 2021-06-15 International Business Machines Corporation Invalidating track format information for tracks demoted from cache
US11347600B2 (en) 2017-09-12 2022-05-31 Western Digital Technologies, Inc. Database transaction log migration
CN110413199B (zh) * 2018-04-28 2023-02-21 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机可读存储介质
CN111338560A (zh) * 2018-12-19 2020-06-26 北京奇虎科技有限公司 一种缓存重建方法和装置
CN111475345B (zh) * 2019-01-24 2023-03-31 旺宏电子股份有限公司 存储器及存储器操作方法
US10884959B2 (en) * 2019-02-13 2021-01-05 Google Llc Way partitioning for a system-level cache
US11755476B2 (en) * 2020-04-13 2023-09-12 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
KR102435253B1 (ko) 2020-06-30 2022-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102406449B1 (ko) 2020-06-25 2022-06-08 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102495910B1 (ko) 2020-04-13 2023-02-06 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US10976965B1 (en) * 2020-10-14 2021-04-13 First Capitol Consulting, Inc. Optimization of in-memory processing of data represented by an acyclic graph so that the removal and re-materialization of data in selected nodes is minimized
CN113050893B (zh) * 2021-03-30 2022-08-30 重庆紫光华山智安科技有限公司 一种高并发的文件存储方法、系统、介质及电子终端
US11868256B2 (en) * 2021-07-20 2024-01-09 EMC IP Holding Company LLC Techniques for metadata updating and retrieval
CN114301931B (zh) * 2022-03-11 2022-07-08 上海凯翔信息科技有限公司 一种基于云端nas的数据同步系统
CN115437853B (zh) * 2022-11-07 2023-03-10 四川省华存智谷科技有限责任公司 系统异常重启下的缓存数据保护方法及系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260114B1 (en) * 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
US6678787B2 (en) * 2000-12-21 2004-01-13 International Business Machines Corporation DASD-free non-volatile updates
US6920533B2 (en) * 2001-06-27 2005-07-19 Intel Corporation System boot time reduction method
KR100457812B1 (ko) * 2002-11-14 2004-11-18 삼성전자주식회사 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
US7380059B2 (en) * 2003-05-16 2008-05-27 Pillar Data Systems, Inc. Methods and systems of cache memory management and snapshot operations
US7143240B2 (en) * 2003-10-31 2006-11-28 International Business Machines Corporation System and method for providing a cost-adaptive cache
JP2005339299A (ja) * 2004-05-28 2005-12-08 Hitachi Ltd ストレージ装置のキャッシュ制御方法
US20070208904A1 (en) * 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
CN101202732A (zh) * 2006-12-11 2008-06-18 中兴通讯股份有限公司 一种基于媒体服务器实现高速缓存的方法和装置
US20110191522A1 (en) * 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
US20110320733A1 (en) * 2010-06-04 2011-12-29 Steven Ted Sanford Cache management and acceleration of storage media
US8812788B2 (en) * 2010-11-09 2014-08-19 Lsi Corporation Virtual cache window headers for long term access history
KR101824295B1 (ko) * 2011-08-12 2018-01-31 샌디스크 테크놀로지스 엘엘씨 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리
US20130238851A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Hybrid storage aggregate block tracking
US9251056B2 (en) * 2012-06-01 2016-02-02 Macronix International Co., Ltd. Bucket-based wear leveling method and apparatus

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020532803A (ja) * 2017-09-05 2020-11-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 同期入出を介して生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新をする方法、システム、コンピュータ・プログラムおよび記憶制御装置
JP7104289B2 (ja) 2017-09-05 2022-07-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 同期入出を介して生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新をする方法、システム、コンピュータ・プログラムおよび記憶制御装置

Also Published As

Publication number Publication date
KR20140111588A (ko) 2014-09-19
CN104050094A (zh) 2014-09-17
US20140258628A1 (en) 2014-09-11
EP2778933A1 (en) 2014-09-17
TW201439763A (zh) 2014-10-16

Similar Documents

Publication Publication Date Title
JP2014174992A (ja) システム・リブートを通じて改善されたキャッシュ・ランプアップを達成するためにキャッシュ・ストアを管理するためのシステム、方法、およびコンピュータ可読媒体
US10152381B1 (en) Using storage defragmentation function to facilitate system checkpoint
US10983955B2 (en) Data unit cloning in memory-based file systems
US10402091B1 (en) Managing data in log-structured storage systems
US9280478B2 (en) Cache rebuilds based on tracking data for cache entries
US9251086B2 (en) Apparatus, system, and method for managing a cache
JP5593577B2 (ja) ストレージシステム及びその制御情報の管理方法
US20150347310A1 (en) Storage Controller and Method for Managing Metadata in a Cache Store
US9286209B2 (en) System, method and computer-readable medium using map tables in a cache to manage write requests to a raid storage array
US9053038B2 (en) Method and apparatus for efficient read cache operation
US20140082310A1 (en) Method and apparatus of storage tier and cache management
US20150212752A1 (en) Storage system redundant array of solid state disk array
CN109344090B (zh) 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心
US20140181377A1 (en) Concurrent content management and wear optimization for a non-volatile solid-state cache
US20120198152A1 (en) System, apparatus, and method supporting asymmetrical block-level redundant storage
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
US8806134B2 (en) Mirrored cache protection
US20160004644A1 (en) Storage Controller and Method for Managing Modified Data Flush Operations From a Cache
CN110737394B (zh) 管理缓存的方法、装置和计算机程序产品
CN111857540B (zh) 数据存取方法、装置和计算机程序产品
US20170220481A1 (en) Raid Data Migration Through Stripe Swapping
JP2014041471A (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
US20140372672A1 (en) System and method for providing improved system performance by moving pinned data to open nand flash interface working group modules while the system is in a running state
US20170052899A1 (en) Buffer cache device method for managing the same and applying system thereof

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140812

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140829

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150522