JP6113199B2 - データを管理する方法、コンピュータ・プログラム、およびシステム - Google Patents

データを管理する方法、コンピュータ・プログラム、およびシステム Download PDF

Info

Publication number
JP6113199B2
JP6113199B2 JP2014560468A JP2014560468A JP6113199B2 JP 6113199 B2 JP6113199 B2 JP 6113199B2 JP 2014560468 A JP2014560468 A JP 2014560468A JP 2014560468 A JP2014560468 A JP 2014560468A JP 6113199 B2 JP6113199 B2 JP 6113199B2
Authority
JP
Japan
Prior art keywords
cache
page
storage
block
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014560468A
Other languages
English (en)
Other versions
JP2015516613A (ja
Inventor
グプタ、ローケーシュ、モハン
エレフセリウー、エヴァンゲロス、スタブロス
コルトシダス、イオアニス
フー、シャオ−ユウ
プレッカ、ローマン
ハース、ローベルト
ブリニク、スティーヴン
ベナス、マイケル、トーマス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2015516613A publication Critical patent/JP2015516613A/ja
Application granted granted Critical
Publication of JP6113199B2 publication Critical patent/JP6113199B2/ja
Active 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/122Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、2レベルのキャッシュ・システムにおける適合的なキャッシュのプロモートに関する。
キャッシュ管理システムは、読出し動作および書き込み動作の結果最近アクセスされた記憶装置内のページを、要求されたページを記憶している記憶装置よりも高速にアクセスできるメモリなどの記憶装置にバッファしておく。後にアクセスが高速なキャッシュ・メモリのページに読出し要求があると、そのページは、アクセスに時間がかかるストレージから要求されるページを返す場合よりも速い速度で返され、それにより読み出しの待ち時間が短縮される。キャッシュ管理システムは、記憶装置を行き先とする変更後のページがキャッシュ・メモリに書き込まれたときに、変更されたページがハード・ディスク・ドライブなどの記憶装置に書き出される前に、書き込み要求の完了を返すこともできる。記憶装置に書き込む際の待ち時間は、通例、キャッシュ・メモリに書き込みを行う際の待ち時間と比べて大幅に長い。そのため、キャッシュを使用すると書き込みの待ち時間も短縮する。
キャッシュ管理システムは、キャッシュに記憶されたページごとに1つのエントリを持つ連結リストを保持することができ、この連結リストは、記憶装置に書き込む前にキャッシュにバッファされている書き込みデータか、または読み出されたデータを含むことができる。一般に使用されるLRU(Least Recently Used:最も過去に使用された)方式のキャッシュ技術では、キャッシュのページがアクセスされる、すなわちキャッシュ「ヒット」があると、アクセスされたページに対応するLRUリストのエントリがリストのMRU(Most Recently Used:最近使用された)側に移動される。要求されるページがキャッシュにない場合、すなわちキャッシュ・ミスの場合は、エントリがリストのLRU側にあるキャッシュのページを削除する(またはデステージ(destage)してストレージに戻す)ことができ、ストレージからキャッシュにステージされたページ・データのエントリをLRUリストのMRU側に追加する。このLRUキャッシュ技術では、より頻繁にアクセスされるページがキャッシュ内に残る可能性が高く、アクセスの頻度が少ないデータはリストのLRU側から削除されて、新たにアクセスされるページのためにキャッシュに余地を作る可能性が高い。
LRUキャッシュ技術は、デステージ動作の回数を最小にするために、近いうちに再書き込みされる可能性が最も低いページをデステージするように時間的な局所性をシークして最適化する。つまり、デステージされない書き込みが上書きされると、その上書きされた書き込みのデステージが回避され、それによりそのデータをキャッシュからディスクに書き込む時間と手間が節減される。一方で、空間的な局所性を活用するようにデステージすることも求められる。つまり、データを互いに最も近い記憶場所に書き込むことにより、次の書き込みを行う記憶場所に到達するために記憶装置の書き込み機構と記憶媒体を移動しなければならない距離を最小にする。
時間的な局所性と空間的な局所性の両方を利用する技術の1つはWOW(WiseOrdering for Writes)アルゴリズムである。WOWアルゴリズムは循環連結リストまたはクロックを用い、循環連結リストにはキャッシュにバッファされた書き込み要求ごとに1つのエントリがある。エントリは関連する書き込み要求が行き先とする記憶場所に従って連結リスト内で順序付けして、空間的な局所性の利点を活かす。さらに、各エントリは、キャッシュ内の記憶場所に対応する書き込みデータが最近更新されたかどうかを示すビットを含む。エントリに対応するビットは、そのエントリの書き込みデータが更新されたときに設定される。ポインタが循環連結リスト内の現在のエントリを指す。WOWアルゴリズムを使用するタスクは、このポインタでアドレス指定されるエントリにアクセスする。エントリのビットが、キャッシュ内でそのエントリのデータが最近更新されたことを示すと、書き込みデータが最近更新されていないと示すようにビットを設定し、ポインタを増分して次のエントリを指すようにして、前回書き込まれた記憶場所に空間的に次に近い記憶場所に書き込むデータを持つエントリが考慮されるようにする。前回書き込みが行われた記憶場所に空間的に最も近く、かつビットがそのエントリの書き込みデータが最近更新されていないことを示すエントリが書き込みのために選択される。
そのようにして最後にデステージされた書き込み要求に空間的に最も近いエントリが次の書き込み対象として選択されるため、WOWアルゴリズムでは空間的な局所性が活かされる。さらに、最近書き込まれたエントリはポインタが一周してそのエントリを検討対象として指すまでスキップされるため、時間的な局所性も活かされる。
ディスク・ドライブは、WOWアルゴリズム、および書き込みページの線形位置と角度位置の両方を考慮し、現在の書き込みヘッドの位置に対して両方を最適化して最小の合計サービス時間を決定する他のアルゴリズムを実装することができる。この処理は、「シークと回転の最適化に基づくコマンドの並べ替え」と呼ばれる。ディスク・ドライブのロジック・ボードは書き込み要求を分析し、各種のシリンダと書き込むページの角度位置までシークするために要する時間と、データが回転してヘッドの下に来るのを待つ時間の両方に基づいて、どの要求を最初に処理するかを決定する。
当技術分野では、2レベルのキャッシュ・システムを使用するための改良された技術が必要とされる。
第1のキャッシュおよび第2のキャッシュのデータを管理するためのコンピュータ・プログラム製品、システム、および方法が提供される。ページが第2のキャッシュに記憶されたときにページについて第2のキャッシュに参照カウントを維持する。ページを第2のキャッシュから第1のキャッシュにプロモート(promote)することを決定する。参照カウントがゼロより大きいと判定するのに応じて、ページを、第1のキャッシュ内のLRUリストのLRU(Least Recently Used)側に追加する。参照カウントがゼロ以下であると判定するのに応じて、ページを、第1のキャッシュ内のLRUリストのMRU(Most Recently Used)側に追加する。
以下で添付図面を参照して単なる例として本発明の実施形態を説明する。
コンピューティング環境の一実施形態の図である。 第1のキャッシュ管理情報の一実施形態の図である。 第2のキャッシュ管理情報の一実施形態の図である。 第1のキャッシュ制御ブロックの一実施形態の図である。 第2のキャッシュ制御ブロックの一実施形態の図である。 空間インデックス・エントリの一実施形態の図である。 第1のキャッシュから無変更のページをデモート(demote)する動作の一実施形態を説明する図である。 第1のキャッシュから変更ページをデステージする動作の一実施形態を説明する図である。 第1のキャッシュにページを追加する動作の一実施形態を説明する図である。 第2のキャッシュにページをプロモートする動作の一実施形態を説明する図である。 第2のキャッシュの空間を解放する動作の一実施形態を説明する図である。 第2のキャッシュから変更ページをデステージする動作の一実施形態を説明する図である。 読出し要求に対して返すページの要求を処理する動作の一実施形態を説明する図である。 2レベルのキャッシュ・システムおよびストレージの一実施形態の図である。 第2のキャッシュから第1のキャッシュにページを追加する動作の一実施形態を説明する図である。
図1は、コンピューティング環境の一実施形態を示す。複数のホスト2a、2b、...2nが、ネットワーク6を通じてストレージ・コントローラ4に入出力(I/O)要求を発行して、ストレージ・コントローラ4に結合されたストレージ10のボリューム8(例えば、論理単位番号、論理デバイス、論理サブシステム等)でデータにアクセスすることができる。ストレージ・コントローラ4はプロセッサ複合体12を含み、プロセッサ複合体12は、シングル・コアまたはマルチ・コアの1つまたは複数のプロセッサ、第1のキャッシュ14、キャッシュ14のページをバックアップする第1のキャッシュ・バックアップ・デバイス16、および第2のキャッシュ18を含む。第1のキャッシュ14および第2のキャッシュ18は、ホスト2a、2b、...2nとストレージ10との間で転送されるデータをキャッシュする。第1のキャッシュ・バックアップ・デバイス16は、第1のキャッシュ14のページの不揮発性のストレージを提供することができる。他の実施形態では、第1のキャッシュ・バックアップ・デバイス16は、第1のキャッシュ14とは異なる電力境界にあるクラスタまたはハードウェアに配置することができる。
ストレージ・コントローラ4はメモリ20を有し、メモリ20は、ホスト2a、2b、...2nとストレージ10間で転送されるページの転送を管理するストレージ・マネジャ22と、第1のキャッシュ14、第1のキャッシュ・バックアップ・デバイス16、および第2のキャッシュ18でホスト2a、2b、...2nとストレージ10間で転送されるデータを管理するキャッシュ・マネジャ24とを含む。ページは、ページや論理ブロック・アドレス(LBA)等のストレージ10で設定される任意のデータ単位からなっていてもよく、ページは、ボリュームや論理デバイス等のより大きなページのグループ化の一部である。キャッシュ・マネジャ24は、第1のキャッシュ管理情報26および第2のキャッシュ管理情報28を保持して、第1のキャッシュ14および第2のキャッシュ18における読み出し(無変更)と書き込み(変更)ページを管理する。第1のキャッシュ・バックアップ・デバイス・インデックス30は、第1のキャッシュ・バックアップ・デバイス16内の位置を示すページ識別子のインデックスを提供する。
図1では、ストレージ・マネジャ22およびキャッシュ・マネジャ24は、メモリ20にロードされてプロセッサ複合体12で実行されるプログラム・コードとして示している。それに代えて、機能の一部またはすべてを特定用途集積回路(ASIC)等のストレージ・コントローラ4内のハードウェア・デバイスとして実装してもよい。
第2のキャッシュ18は、ログ構造配列(LSA)32でページを記憶することができ、ページは受け取られた順序で書き込まれ、それにより第2のキャッシュ18に書き込まれるページの時間的な順序付けを提供する。LSAでは、LSAにすでにあるページのより新しいバージョンはLSA32の最後に書き込まれる。代替実施形態では、第2のキャッシュ18はLSA以外の形式でデータを記憶することができる。
ある実施形態では、第1のキャッシュ14は動的ランダム・アクセス・メモリ(DRAM)等のランダム・アクセス・メモリ(RAM)であってもよく、第2のキャッシュ18は固体素子デバイス等のフラッシュ・メモリであってもよく、ストレージ10は、ハード・ディスク・ドライブや磁気テープ等の1つまたは複数の順次アクセス記憶装置からなる。ストレージ10は、1つの順次アクセス記憶装置からなっても、JBOD(Just a Bunch of Disks)、ダイレクト・アクセス記憶装置(DASD)、RAID(Redundant Array of Independent Disks)アレイ、仮想化装置等の記憶装置の配列からなってもよい。ストレージ10は、第1のキャッシュ14および第2のキャッシュ18の少なくとも1つに結合される。ある実施形態では、第1のキャッシュ14は第2のキャッシュ18より高速にアクセスできるデバイスであり、第2のキャッシュ18はストレージ10より高速にアクセスできるデバイスである。さらに、第1のキャッシュ14は第2のキャッシュ18よりも記憶単位あたりのコストが高く、第2のキャッシュ18はストレージ10の記憶装置よりも記憶単位あたりのコストが高い場合がある。さらに、ある実施形態では、第2のキャッシュ18は第1のキャッシュ14よりもはるかに大きい場合がある。
第1のキャッシュ14は、メモリ20の一部としても、または、DRAMなど、別個のメモリ装置に実装してもよい。ある実施形態では、第1のキャッシュ・バックアップ・デバイス16は、不揮発性のメモリ、例えば、バッテリでバックアップされたランダム・アクセス・メモリ(RAM)、静的RAM(SRAM)などの不揮発性バックアップ・ストレージ(NVS)から構成することができる。
ネットワーク6は、ストレージ・エリア・ネットワーク(SAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット等からなることができる。
本明細書の実施形態のいくつかではページのキャッシュ・インデックスの粒度を参照するが、他の実施形態は、トラックやエクステントなどの異なるキャッシュ・インデックスの粒度のデータに適用される。
図2は、第1のキャッシュ管理情報26の一実施形態の図であり、キャッシュ管理情報26は、制御ブロック・ディレクトリ52のブロックを制御する第1のキャッシュ14のページのインデックスを提供するページ・インデックス50、第1のキャッシュ14で無変更の連続したページの時間的な順序付けを提供する無変更連続LRUリスト54、第1のキャッシュ14で変更された連続したページおよび不連続ページの時間的な順序付けを提供する変更LRUリスト56、第1のキャッシュ14で無変更の不連続ページの時間的な順序付けを提供する無変更不連続LRUリスト58、参照カウンタ60、および高速LRU62を含む。
図3は、第2のキャッシュ管理情報28の一実施形態を示し、キャッシュ管理情報28は、制御ブロック・ディレクトリ72のブロックを制御する第2のキャッシュ18のページのインデックスを提供するページ・インデックス70、第2のキャッシュ18の無変更のページの時間的な順序付けを提供する無変更リスト74、ストレージ10内で変更ページが記憶された物理的な位置に基づいて第2のキャッシュ18の変更ページの空間的な順序付けを提供する空間インデックス76、および参照カウンタ78を含む。
LRUリスト54、56、58、および74はすべて、特定されたページが前回アクセスされた時間に従って順序付けされた第1のキャッシュ14および第2のキャッシュ18内のページのページIDを含むことができる。LRUリスト54、56、58、および74は、一番最近アクセスされたページを示すMRU(most recently used:一番最近使用された)側と、最も長く使用またはアクセスがないページを示すLRU側とを有する。キャッシュ14および18に追加されるページのページIDは(ページの「熱さ(heat)」に応じて)LRUリストのMRU側かLRU側のどちらかに追加され、キャッシュ14および18からデモートされたページはLRU側からアクセスされる。ページ・インデックス50および70、ならびに空間インデックス76は、スキャッタ・インデックス・テーブル(SIT)を構成することができる。代替の種類のデータ構造を使用してキャッシュ14および18におけるページの時間的な順序付けと、第2のキャッシュ18のページの空間的な順序付けを提供することができる。
不連続のページはOLTP(Online Line TransactionProcessing)ページ等であり、これは多くの場合、完全にはランダムでなく参照に多少の局所性がある、すなわち繰り返しアクセスされる可能性がある小さなブロックの書き込みである。
図4は、制御ブロック・ディレクトリ52の第1のキャッシュ制御ブロック100のエントリの一実施形態の図であり、制御ブロック識別子(ID)102、第1のキャッシュ14内のページの物理的な位置である第1のキャッシュ位置104、ページが変更されているか無変更であるかを示す情報106、およびページが順次アクセスであるか不連続のアクセスであるかを示す情報108を含む。
図5は、第2のキャッシュ制御ブロック・ディレクトリ72の第2のキャッシュ制御ブロック120のエントリの一実施形態の図であり、制御ブロック識別子(ID)122、LSA32内のページが位置するLSA位置124、およびページが変更されているか無変更であるかを示す情報126を含む。
図6は空間インデックス・エントリ140の一実施形態を示し、これは、第2のキャッシュ18のページのページ識別子142、およびシリンダ、プラッタ、ブロック・アドレス、記憶装置の識別子など、ストレージ10のページが記憶された物理的な位置144を含む。
図7は、第1のキャッシュ14から無変更のページをデモートするためにキャッシュ・マネジャ24によって行われる動作の一実施形態を示す。デモート動作は、第1のキャッシュ14の空間を解放することを決定すると開始することができる。第1のキャッシュ14からページを削除して第1のキャッシュ14の空間を解放するかどうかを決定する動作を開始すると(ブロック200)、キャッシュ・マネジャ24は、種々の種類の無変更のページへの予想されるヒット率に基づいて不連続の無変更ページをデモートするか、連続した無変更のページをデモートするかを決定する(ブロック202)。無変更の連続したページをデモートすると決定する(ブロック204)と、キャッシュ・マネジャ24は無変更連続LRUリスト54を使用して、リストのLRU側からデモートする無変更の連続したページを決定し(ブロック206)、それらのページは第2のキャッシュ18にプロモートされない。無変更の不連続ページをデモートすると決定した場合(ブロック204)、キャッシュ・マネジャは無変更不連続LRUリスト58を使用してデモートする無変更の不連続ページを決定する(ブロック208)。その無変更の不連続ページを第2のキャッシュ18にプロモートする(ブロック210)。
図8は、変更ページを第1のキャッシュ14からデステージするためにキャッシュ・マネジャ24によって行われる動作の一実施形態を示す。キャッシュ・マネジャ24は、スケジュールされた動作の一部として周期的にページをデステージすることができ、第1のキャッシュ・バックアップ・デバイス16に空間が必要とされる場合はデステージの率を上げることができる。変更ページをデステージする動作を開始すると(ブロック250)、キャッシュ・マネジャ24は変更LRUリスト56を処理して、LRUリスト56のLRU側からデステージする変更ページを決定する(ブロック252)。決定された変更ページが連続している場合(ブロック254)、キャッシュ・マネジャ24は、決定された変更された連続したページをストレージ10に書き込んで(ブロック256)、第2のキャッシュ18を迂回する。変更ページが不連続である場合(ブロック254)、キャッシュ・マネジャ24は、決定された変更された不連続ページを第2のキャッシュ18にプロモートし(ブロック258)、決定された変更ページのコピーを第1のキャッシュ・バックアップ・デバイス16から破棄する(ブロック260)。
図7および図8の動作では、不連続のページがデモートされるが、第2のキャッシュ18にはプロモートされない。連続した変更ページ(書き込み)は直接ストレージ10に書き込まれ、第2のキャッシュを迂回する。連続した無変更のページ(読み出し)は破棄され、どこにもコピーされず、第1のキャッシュ14からデモートされた無変更の不連続ページは第2のキャッシュ18にプロモートされる。
図9は、ページを第1のキャッシュ14に追加、すなわちプロモートするためにキャッシュ・マネジャ24によって行われる動作の一実施形態を示し、このページは、ホスト2a、2b、...2nからの書き込みまたは変更ページであるか、またはキャッシュ14にも18にもなく、ストレージ10から取り出される読み出しが要求されるデータであってもよい。第1のキャッシュ14に追加するページを受け取ると(ブロック300)、キャッシュ・マネジャ24は、追加するページの制御ブロック100(図4)を作成して(ブロック301)、第1のキャッシュ14内の位置104と、そのページが変更/無変更であるか106および連続している/不連続であるか108を示す。この制御ブロック100は第1のキャッシュ14の制御ブロック・ディレクトリ52に追加される。キャッシュ・マネジャ24は、追加するページのページIDを持つ第1のキャッシュ・ページ・インデックス50にエントリを追加し、作成されたキャッシュ制御ブロック100へのインデックスを制御ブロック・ディレクトリ52に追加する(ブロック302)。追加するページのページ・タイプのLRUリスト54、56、または58のMRU側にエントリが追加される(ブロック304)。追加するページが変更された不連続ページである場合(ブロック306)は、追加するページも第1のキャッシュ・バックアップ・デバイス16にコピーし、追加されるページについて第1のキャッシュ・バックアップ・デバイス・インデックス30にエントリが追加される(ブロック308)。追加するページが無変更で連続している場合(ブロック306)は制御が終了する。
図10は、第1のキャッシュ14からデモートされる不連続のページを第2のキャッシュ18にプロモートするためにキャッシュ・マネジャ24によって行われる動作の一実施形態を示す。第2のキャッシュ18にページをプロモートする動作を開始すると(ブロック350)、キャッシュ・マネジャ24はプロモートするページを第2のキャッシュ18のLSA32に追加し(ブロック352)、追加するページの制御ブロック120(図5)を作成して(ブロック354)、LSA32におけるページの位置124を示し、ページが変更/無変更であるか126を示す。プロモートしたページのページIDを持つ第2のキャッシュ・ページ・インデックス70にエントリを追加し、第2のキャッシュ18に対応する制御ブロック・ディレクトリ72に作成したキャッシュ制御ブロック120へのインデックスを追加する(ブロック356)。(ブロック358の「NO」の分岐から)プロモートするページが無変更のデータである場合、キャッシュ・マネジャ24はページIDをMRU側に追加する等により、無変更LRUリスト74のMRU側にプロモートされたページを示す(ブロック360)。プロモートするページが変更データである場合(ブロック358)、キャッシュ・マネジャ24は、ストレージ10で変更されたプロモートされたページを書き込む物理的な位置を決定し(ブロック362)、空間インデックス76にエントリを追加して(ブロック364)、プロモートされたページのページID142と、ストレージ10におけるプロモートされたページの決定された物理的な位置144を示す。
図11は、第2のキャッシュ18に追加する新しいページ、すなわち第1のキャッシュ14からデモートされるページのために第2のキャッシュ18の空間を解放するためにキャッシュ・マネジャ24によって行われる動作の一実施形態を示す。この動作を開始すると(ブロック400)、キャッシュ・マネジャ24は、無変更LRUリスト74のLRU側から第2のキャッシュ18の無変更のページを決定し(ブロック402)、決定した無変更のページを、無効化した無変更のページをストレージ10にデステージせずに無効化する(ブロック404)と共に、無効化した無変更のページを無変更LRUリスト74から削除する。
図12は、第2のキャッシュ12の変更ページをストレージ10にデステージするためにキャッシュ・マネジャ24によって行われる動作の一実施形態を示す。デステージ動作を開始すると(ブロック420)、キャッシュ・マネジャ24は空間インデックス76を使用して、場所で順序付けされた空間インデックス76で連続しているエントリ140(図6)にあるページのグループなど、空間インデックス76におけるページの順序に基づいて、ストレージ10で互いに近接した物理的な位置にある第2のキャッシュ18の変更ページをグループ化対象として決定する(ブロック422)。決定したグループ化された変更ページが第2のキャッシュ18からストレージ10にデステージされる(ブロック424)。
図12の動作は、ストレージ10でストレージ10の書き込み面上で物理的に最も近接した物理的な位置にページを書き込ませて、第2のキャッシュ18のページをストレージ10に書き込む際のストレージ10の書き込みヘッドのシークと移動の量を最小にすることにより、順次アクセス記憶装置からなるストレージ10への書き込み動作を最適化する。ページは、ハード・ディスク・ドライブなどの順次アクセス・ストレージ10への連続した書き込みのために最適化された順序ではなく、LRUリスト54、56、58における各自の位置などの時間的な要素に基づいて第1のキャッシュ16から第2のキャッシュ18にプロモートされる。すなわち、図12の動作は、ストレージ10における各自の空間的な位置に基づいて時間的に順序付けされた変更ページを最適化して、ストレージ10の書き込みを最適化する。
図13は、読出し要求に対応する要求されるページをキャッシュ14および18ならびにストレージ10から取り出すためにキャッシュ・マネジャ24によって行われる動作の一実施形態を示す。読出し要求を処理するストレージ・マネジャ22が、要求されるページについてキャッシュ・マネジャ24に要求を発行することができる。ページの要求を受け取ると(ブロック450)、キャッシュ・マネジャ24は第1のキャッシュ・ページ・インデックス50を使用して、要求されるページがすべて第1のキャッシュ14にあるかどうかを判定する(ブロック454)。要求されるページがすべては第1のキャッシュ14にない場合(ブロック454)、キャッシュ・マネジャ24は第2のキャッシュ・ページ・インデックス70を使用して、要求されるページの中で、第1のキャッシュ14にはなく第2のキャッシュ18にあるものがあるかどうかを判定する(ブロック456)。要求されるページの中で第1のキャッシュ14にも第2のキャッシュ18にもないページがある場合(ブロック458)、キャッシュ・マネジャ24は、要求されるページの中で、第1のキャッシュ14および第2のキャッシュ18になくストレージ10にあるページがあるかどうかを、第2のキャッシュ・ページ・インデックス70から判定する(ブロック460)。キャッシュ・マネジャ24は次いで第2のキャッシュ18およびストレージ10にあると判定されたページを第1のキャッシュ14にプロモートする(ブロック462)。キャッシュ・マネジャ24は第1のキャッシュ・ページ・インデックス50を使用して、第1のキャッシュ14から要求されるページを取り出して、読出し要求に対して返す(ブロック464)。取り出されたページのエントリを、取り出されたページのエントリを含むLRUリスト54、56、58のMRU側に移動する(ブロック466)。図13の動作では、キャッシュ・マネジャ24は、要求されるページを最上位のキャッシュ14から取り出した後、まず第2のキャッシュ18に行ってから、ストレージ10に行く。これは、キャッシュ14および18に要求されるページの最も新しい変更されたバージョンがあるためである。最も新しいバージョンは初めに第1のキャッシュ14で見つかり、第1のキャッシュ14にない場合は第2のキャッシュ18に見つかり、キャッシュ14、18にもない場合はストレージ10にある。
図13の動作では、キャッシュ・マネジャ24は要求されるページを最上位のキャッシュ14から取り出した後、まず第2のキャッシュ18に行ってから、ストレージ10に行く。これは、キャッシュ14および18に要求されるページの最も新しい変更されたバージョンがあるためである。最も新しいバージョンは初めに第1のキャッシュ14で見つかり、第1のキャッシュ14にない場合は第2のキャッシュ18に見つかり、キャッシュ14、18にもない場合はストレージ10にある。
記載される実施形態は、最も高速にアクセスできる第1のキャッシュ14が1バイトあたりの費用で最も高費用の空間を有し、第1のキャッシュよりも低費用であるがストレージよりも高速の第2のキャッシュを使用してシステム内でキャッシュされるデータ量を増大させることができる場合に、一次または第1レベルのキャッシュとストレージの間で第2レベルのキャッシュを使用できるようにしてキャッシュ空間を増大する技術を提供する。高速のアクセスが可能なキャッシュ記憶空間を増やすと、要求されるデータがキャッシュにあり、アクセスに時間がかかる低費用のストレージから取り出す代わりにキャッシュから返すことができる場合に、キャッシュ・データへのアクセスが改善される。さらに、記載される実施形態では、第1のキャッシュにおける時間的な順序付けに基づいて第2のキャッシュにページが追加され、次いで順次アクセス・ストレージにおける空間的な物理位置に基づいて第2のキャッシュ内で並べ替えられるので、デステージされたページがストレージ内で近接または連続した物理的な位置にページのグループとして書き込まれて、ストレージへのページの書き込みが最適化される。
図14は、2レベルのキャッシュ・システム14、18、およびストレージ10の一実施形態を示す。2レベルのキャッシュは第1のキャッシュ14および第2のキャッシュ18である。
キャッシュ・マネジャ24は、第1のキャッシュ14と第2のキャッシュ18が2レベルのキャッシュ・システムを形成する2つのキャッシュである2レベルのキャッシュ・システムで第1のキャッシュ14を最適化する。キャッシュ・マネジャ24は、第2のキャッシュ18から第1のキャッシュ14にページがプロモートされるときにページの有用性を予測する。ページの有用性に基づいて、キャッシュ・マネジャ24はページを適切なLRUリスト54、56、58の適切な位置に挿入することにより、第1のキャッシュ14を最適化する。
キャッシュ・マネジャ24は、第1のキャッシュ14の利用を改善して、第2のキャッシュ18から第1のキャッシュ14にプロモートされるページが、第1のキャッシュ14におけるヒット率を最大にするように第1のキャッシュ14のLRUリスト54、56、58に挿入されるようにする。
ある実施形態では、ページは参照されると第1のキャッシュ14に入れられる。そのため、ページは、そのページが第2のキャッシュ18でヒットするたびに第1のキャッシュ14にプロモートされる。それでも、第2のキャッシュ18でページの「熱さ」が「冷たい(cold)」(すなわちあまり頻繁にアクセスされない)場合、キャッシュ・マネジャ24はその「冷たい」ページに第1のキャッシュ14のページ・フレームを長時間占有させたくない。したがって、キャッシュ・マネジャ24はその「冷たい」ページを、MRUではなく第1のキャッシュ14のLRUリストに挿入して、「冷たい」ページが直ちに追い出されるようにする。キャッシュ・マネジャ24は、「熱い(hot)」(すなわち頻繁にアクセスされる)ページは、第1のキャッシュ14のLRUリストのMRUに挿入することができる。
キャッシュ・マネジャ24は、第1のキャッシュ14および第2のキャッシュ18に参照カウンタ60、78を維持することにより、ページが第1および第2のキャッシュ14、18にある間のページの「熱さ」を特定する。第2のキャッシュ18にキャッシュされるページはいずれもその前に第1のキャッシュ14にあり、第1のキャッシュ14で経過しているので、キャッシュ・マネジャ24は以下の規則を利用して、現在第2のキャッシュ18にキャッシュされているページがまだ「熱い」か、または「冷たく」なっているか(すなわちそれぞれ第1のキャッシュ14のLRUリストのMRU側にプロモートすべきか、第1のキャッシュ14のLRUリストのLRU側にプロモートすべきか)を特定する。すなわち、第2のキャッシュ18にあるページは、そのページが以前に第1のキャッシュ14にキャッシュされていたときのヒットよりも第2のキャッシュ18の方でヒットが多い場合は、第1のキャッシュ14のLRUリストのMRU側にプロモートする。詳細には、
1.第1のキャッシュ14と第2のキャッシュ18の両方について、ページごとに参照カウンタ60、78を維持する。「c」および「c」をそれぞれ第1のキャッシュ14および第2のキャッシュ18のカウンタとする。
2.ページが第1のキャッシュ14にキャッシュされている間は、ページが参照されるたびにcを増分する。
3.ページが第1のキャッシュ14から第2のキャッシュ18にデモートされるときにc<0であれば、cを初期化してkcにする(k=1,2,3,...)。kは、ページの「熱さ」を調整するために使用される定数である。
4.ページが第2のキャッシュにキャッシュされている間は、ページが参照されるとcを減分する。
>0の場合、ページを第1のキャッシュ14のLRUリストのLRU側にプロモートして、ページが間もなく追い出されるようにする。
それ以外の場合、ページは第1のキャッシュ14のLRUリストのMRU側にプロモートする。
このようにして、長時間にわたって「熱い」状態を保つページが第1のキャッシュ14のフレームを占有する。「冷たく」なり始めたページは、第2のキャッシュ18に送り、第2のキャッシュ18にはるかに長い時間とどまり、それにより、それらのページが近い将来に再び「熱く」なった場合に第1のキャッシュ14のLRUリストのMRU位置に入れる機会をもう一度与える。ある実施形態では、第2のキャッシュ18で少なくともK回のヒットがあったページだけを第1のキャッシュ14のLRUリストのMRU位置にプロモートすべき場合に、cをkcおよび定数Kの最大値に初期化することができる。
ある実施形態では、kは静的な設定パラメータであり、システム管理者によって設定される。特定の代替実施形態では、kは動的な設定パラメータであり、自動的に調整される(例えばキャッシュ・マネジャ24により)。それらの代替実施形態の一部では、kは、2つのキャッシュ14、18の平均の「熱さ」として決定される。そのため、kは、2つのキャッシュ14、18についての適切な調整係数となる。
ある実施形態では、「冷たい」ページは、第1のキャッシュ14の別のLRUリストのLRU側に追加されるのではなく、第2のキャッシュ18から高速LRUリスト62にプロモートされる。第1のキャッシュ14からページを追い出す場合は、追い出すページを高速LRUリスト62から選択する。
図15は、第1のキャッシュ14にページを追加、すなわちプロモートするためにキャッシュ・マネジャ24によって行われる動作の一実施形態を示し、このページは、読出し要求が発生し、その結果第2のキャッシュ18から第1のキャッシュ14に移動される第2のキャッシュ18にある不連続ページであってもよい。第1のキャッシュ14に追加するページを受け取ると(ブロック500)、キャッシュ・マネジャ24は、追加するページについての制御ブロック100(図4)を作成して(ブロック502)、第1のキャッシュ14内の位置104と、そのページが変更/無変更であるか106および連続している/不連続であるか108を示す。この制御ブロック100を第1のキャッシュ14の制御ブロック・ディレクトリ52に追加する。キャッシュ・マネジャ24は、追加ページのページIDを持つ第1のキャッシュ・ページ・インデックス50にエントリを追加し、制御ブロック・ディレクトリ52に作成したキャッシュ制御ブロック100へのインデックスを追加する(ブロック504)。
ブロック506で、キャッシュ・マネジャ24はそのページがc>0であるかどうかを判定する。c>0である場合、処理はブロック510に進み、そうでない場合処理はブロック512に進む。追加するページのページ・タイプのLRUリスト54、56、または58のMRU側にエントリを追加する(ブロック508)。追加するページのページ・タイプのLRUリスト54、56、または58のLRU側にエントリを追加する(ブロック510)。追加するページが変更された不連続ページである場合(ブロック512)、追加するページも第1のキャッシュ・バックアップ・デバイス16にコピーし、追加するページについて第1のキャッシュ・バックアップ・デバイス・インデックス30にエントリを追加する(ブロック514)。追加するページが無変更で連続している場合は(ブロック512)、制御が終了する。
このように、実施形態は、第2レベルのキャッシュ(すなわち第2のキャッシュ18)から第1レベルのキャッシュ(すなわち第1のキャッシュ14)にページが入れられる2レベル・キャッシュにおけるプロモートを対象とする。実施形態は、プロモート対象のページの最近の履歴に着目する。ページが比較的「熱い」場合、キャッシュ・マネジャ24は第1レベルのキャッシュのLRUリストのMRU側にその「熱い」ページを入れる。ページが比較的「冷たい」場合、キャッシュ・マネジャ24は、ページをすぐに追い出されるような状態にする(すなわち第1レベルのキャッシュのMRUリストのLRU側に入れる)。
記載される動作は、ソフトウェア、ファームウェア、ハードウェア、もしくはその組み合わせを製造する標準的なプログラミング技術または工学技術あるいはその両方を使用して、方法、装置、またはコンピュータ・プログラム製品として実施することができる。したがって、実施形態の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、本明細書で一般に「回路」、「モジュール」、もしくは「システム」と称するソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形をとることができる。さらに、実施形態の態様は、コンピュータ可読のプログラム・コードが具現化された1つまたは複数のコンピュータ可読媒体として実施されたコンピュータ・プログラム製品の形をとることができる。
1つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体である。コンピュータ可読記憶媒体は、これらに限定されないが、例えば、電子、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、またはそれらの任意の適切な組み合わせである。コンピュータ可読記憶媒体のより具体的な例(ただし完全な網羅ではない列挙)は、1つまたは複数の配線を有する電気接続、携帯可能コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラム可能読取専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯可能コンパクト・ディスク読取専用メモリ(CD−ROM)、光学記憶装置、磁気記憶装置、またはそれらの任意の適切な組み合わせを含む。本文献の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによる使用のために、またはそれらとの関連でプログラムを保持または記憶することが可能な任意の有形媒体とすることができる。
コンピュータ可読信号媒体は、例えばベースバンドや搬送波の一部としてコンピュータ可読のプログラム・コードが内部に具現化された伝搬データ信号を含んでもよい。そのような伝搬信号は、これらに限定されないが、電磁気、光学、またはそれらの任意の適切な組み合わせを含む各種形態のいずれかをとることができる。コンピュータ可読信号媒体は、命令実行システム、装置、またはデバイスによる使用のために、またはそれらとの関連でプログラムを通信、伝搬、または移送することが可能な、コンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってよい。
コンピュータ可読媒体に具現化されるプログラム・コードは、これらに限定されないが、ワイヤレス、電線、光ファイバ・ケーブル、RF等、またはそれらの任意の適切な組み合わせを含む任意の適当な媒体を使用して伝送することができる。
本発明の態様の動作を実施するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++等のオブジェクト指向のプログラミング言語と、「C」プログラミング言語または類似のプログラミング言語等の従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、独立型のソフトウェア・パッケージとして、すべてがユーザのコンピュータで実行されても、一部がユーザのコンピュータで実行されても、一部がユーザのコンピュータで実行され、一部がリモート・コンピュータで実行されても、またはすべてがリモート・コンピュータまたはサーバで実行されてもよい。後者の場合は、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)やワイド・エリア・ネットワーク(WAN)を含む任意種のネットワークを通じてユーザのコンピュータに接続しても、または外部のコンピュータに接続してもよい(例えばインターネット・サービス・プロバイダを使用してインターネットを通じて)。
本発明の態様について、上記では本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明した。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせはコンピュータ・プログラム命令によって実施できることが理解されよう。コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を生成するべく、このようなコンピュータ・プログラム命令は汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
コンピュータ可読媒体に記憶された命令により、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する命令を含んだ製造品を作製するべく、このようなコンピュータ・プログラム命令はコンピュータ可読媒体に記憶され、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに特定の方式で機能するように指示するものであってよい。
コンピュータまたは他のプログラム可能装置で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する処理を提供するように、コンピュータによって実施される処理を生成するべく、コンピュータ・プログラム命令はコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってよい。
用語「一実施形態」、「実施形態」、「実施形態(複数形)」、「この実施形態」、「この実施形態(複数形)」、「1つまたは複数の実施形態」、「一部の実施形態」、および「1つの実施形態」は、明示的に指定しない限り、「(1つまたは複数の)本発明の1つまたは複数の(しかしすべてではない)実施形態」を意味する。
用語「〜を含む(including)」、「〜を含む(comprising)」、「〜を有する(having)」およびそれらの変形は、明示的に指定しない限り、「〜を含むがそれらに限定されない」ことを意味する。
要素の列挙は、明示的に指定しない限り、それらの要素のいずれかまたはすべてが相互排他的であることを意味しない。
用語「a」、「an」、および「the」は、明示的に指定しない限り、「1つまたは複数」を意味する。
相互と通信状態にあるデバイスは、明示的に指定しない限り、相互と継続的な通信状態にある必要はない。また、相互と通信状態にあるデバイスは、直接、または1つもしくは複数の媒介を通じて間接的に互いと通信することができる。
相互と通信状態にあるいくつかの構成要素を持つ実施形態の記載は、それらの構成要素のすべてが必要であることを意味しない。その逆に、各種の任意選択の構成要素を記載して、本発明の可能な実施形態の多様性を示す。
さらに、処理のステップ、方法のステップ、アルゴリズム等は連続した順序で説明する場合があるが、そのような処理、方法、およびアルゴリズムは、代替の順序で動作するように構成してもよい。すなわち、記載され得るステップのいずれの順番または順序も、必ずしも、それらのステップをその順序で行うことが必要であることを意味しない。本明細書に記載される処理のステップは任意の実際的な順序で行うことができる。さらに、いくつかのステップを同時に行ってもよい。
単一のデバイスまたは物品が本明細書に記載される場合、1つのデバイス/物品に代えて2つ以上のデバイス/物品(それらが協働するか否かに関わらず)を使用してよいことは直ちに明らかであろう。同様に、2つ以上のデバイスまたは物品(それらが協働するか否かに関わらず)が本明細書に記載される場合、2つ以上のデバイスまたは物品に代えて1つのデバイス/物品を使用する、または記載される数のデバイスまたはプログラムに代えて異なる数のデバイス/物品を使用することも可能であることは直ちに明らかであろう。デバイスの機能または特徴あるいはその両方は、代わりに、そのような機能/特徴を有すると明示的には記載されない1つまたは複数の他のデバイスによって実現することもできる。したがって、本発明の他の実施形態はそのデバイス自体を含む必要はない。
図7〜13および図15に示す動作は、一定の順序で発生するいくつかの事象を示している。代替実施形態では、ある動作は、異なる順序で行う、変更を加える、または排除することができる。さらに、上記のロジックにステップを追加することができ、それでもなお記載の実施形態に準ずる。さらに、本明細書に記載の動作は順に行う、または一部の動作は並行して処理することができる。さらに、動作は、1つの処理装置で行っても、分散した処理装置で行ってもよい。
前述の本発明の各種実施形態の説明は、例示と説明の目的で提示した。この説明は網羅的なものでも、本発明を開示される通りの形態に限定するものでもない。上記の教示に照らして多数の変更と変形が可能である。本発明の範囲は上記の詳細な説明で限定されるのではなく、添付の特許請求の範囲で限定されることが企図される。上記の詳細な説明、例、およびデータは、本発明の構成の製造および使用の完全な説明を提供する。本発明の主旨および範囲から逸脱することなく、本発明の多数の実施形態を作製できるため、本発明は添付の特許請求の範囲にある。

Claims (9)

  1. 第1のキャッシュおよび第2のキャッシュのデータを管理する方法であって、
    コンピュータのプロセッサを使用して、ページが前記第2のキャッシュに記憶されたときに前記ページについて前記第2のキャッシュに参照カウントを維持するステップと、
    前記ページを前記第2のキャッシュから前記第1のキャッシュにプロモートすることを決定するステップと、
    前記参照カウントがゼロより大きいと判定するのに応じて、前記ページを、前記第1のキャッシュ内のLRUリストのLRU(Least Recently Used)側に追加するステップと、
    前記参照カウントがゼロ以下と判定するのに応じて、前記ページを、前記第1のキャッシュ内の前記LRUリストのMRU(Most Recently Used)側に追加するステップと
    を含む方法。
  2. 前記第1のキャッシュおよび前記第2のキャッシュがストレージに結合される、請求項1に記載の方法。
  3. 前記第1のキャッシュが前記第2のキャッシュよりも高速にアクセスできるデバイスであり、前記第2のキャッシュがストレージよりも高速にアクセスできるデバイスである、請求項1または請求項2に記載の方法。
  4. 前記第1のキャッシュがランダム・アクセス・メモリ(RAM)を含み、前記第2のキャッシュがフラッシュ・デバイスを含み、ストレージが順次書き込みデバイスを含む、請求項1に記載の方法。
  5. 前記参照カウントが第1の参照カウントを含み、前記方法がさらに、
    前記ページが前記第1のキャッシュに記憶されたときに前記ページについて前記第1のキャッシュに第2の参照カウントを維持するステップを含み、前記第1のキャッシュにある前記ページについての前記第2の参照カウントは、前記第1のキャッシュで前記ページが参照されるたびに増分される、請求項1ないし4のいずれかに記載の方法。
  6. 前記第2のキャッシュで前記ページが参照されるたびに前記第2のキャッシュ内の前記ページの前記参照カウントを減分するステップをさらに含む、請求項1ないし5のいずれかに記載の方法。
  7. 前記参照カウントが第1の参照カウントを含み、前記方法がさらに、
    前記ページが前記第1のキャッシュから前記第2のキャッシュにデモートされると決定されるのに応じて、
    前記第1の参照カウントがゼロ未満であるかどうかを判定するステップと、
    前記第1の参照カウントがゼロ未満であると判定されるのに応じて、前記第1の参照カウントを、第2の参照カウントに定数(k)を乗じた値に等しく設定するステップと
    を含む、請求項1に記載の方法。
  8. 第1のキャッシュおよび第2のキャッシュのデータを管理するコンピュータ・プログラムであって、
    コンピュータに請求項1ないし7のいずれか1項に記載のステップを実行させるコンピュータ・プログラム。
  9. データを管理するシステムであって、
    第1のキャッシュと、
    第2のキャッシュと、
    プロセッサと、
    請求項1ないし7のいずれか1項に記載のステップを前記プロセッサに実行させるコンピュータ・プログラムと、
    を備えるシステム。
JP2014560468A 2012-03-05 2013-02-18 データを管理する方法、コンピュータ・プログラム、およびシステム Active JP6113199B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/412,412 US8930624B2 (en) 2012-03-05 2012-03-05 Adaptive cache promotions in a two level caching system
US13/412,412 2012-03-05
PCT/IB2013/051313 WO2013132370A1 (en) 2012-03-05 2013-02-18 Adaptive cache promotions in a two level caching system

Publications (2)

Publication Number Publication Date
JP2015516613A JP2015516613A (ja) 2015-06-11
JP6113199B2 true JP6113199B2 (ja) 2017-04-12

Family

ID=49043503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014560468A Active JP6113199B2 (ja) 2012-03-05 2013-02-18 データを管理する方法、コンピュータ・プログラム、およびシステム

Country Status (6)

Country Link
US (2) US8930624B2 (ja)
JP (1) JP6113199B2 (ja)
CN (1) CN104145252B (ja)
DE (1) DE112013001284B4 (ja)
GB (1) GB2514501B (ja)
WO (1) WO2013132370A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700861B1 (en) * 2012-03-28 2014-04-15 Emc Corporation Managing a dynamic list of entries for cache page cleaning
JP2015517697A (ja) * 2012-05-23 2015-06-22 株式会社日立製作所 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法
US9547604B2 (en) 2012-09-14 2017-01-17 International Business Machines Corporation Deferred RE-MRU operations to reduce lock contention
US9733991B2 (en) 2012-09-14 2017-08-15 International Business Machines Corporation Deferred re-MRU operations to reduce lock contention
US8990524B2 (en) * 2012-09-27 2015-03-24 Hewlett-Packard Development Company, Lp. Management of data elements of subgroups
US9286219B1 (en) * 2012-09-28 2016-03-15 Emc Corporation System and method for cache management
US9703505B2 (en) * 2013-12-30 2017-07-11 Teradata Us, Inc. Management of data in multi-storage systems that can include non-volatile and volatile storages
US10268410B2 (en) 2014-10-20 2019-04-23 Netapp, Inc. Efficient modification of storage system metadata
US9965196B2 (en) * 2014-10-20 2018-05-08 Netapp, Inc. Resource reservation for storage system metadata updates
US10817425B2 (en) * 2014-12-26 2020-10-27 Intel Corporation Hardware/software co-optimization to improve performance and energy for inter-VM communication for NFVs and other producer-consumer workloads
CN105938447B (zh) * 2015-03-06 2018-12-14 华为技术有限公司 数据备份装置及方法
US9652406B2 (en) 2015-04-30 2017-05-16 International Business Machines Corporation MRU batching to reduce lock contention
US10320936B2 (en) 2015-10-20 2019-06-11 International Business Machines Corporation Populating a secondary cache with unmodified tracks in a primary cache when redirecting host access from a primary server to a secondary server
US10127152B2 (en) 2015-10-20 2018-11-13 International Business Machines Corporation Populating a second cache with tracks from a first cache when transferring management of the tracks from a first node to a second node
US10033810B2 (en) 2015-12-03 2018-07-24 International Business Machines Corporation Recovery point objective via dynamic usage of bind segments in a global mirror environment
KR20170109133A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 하이브리드 메모리 장치 및 그의 데이터 관리 방법
KR20170130011A (ko) * 2016-05-17 2017-11-28 삼성전자주식회사 캐시 메모리를 포함하는 서버 장치 및 그것의 동작 방법
US10037149B2 (en) * 2016-06-17 2018-07-31 Seagate Technology Llc Read cache management
CN106844231A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 末级高速缓存软硬件协作分区域管理系统及管理方法
CN106844232A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种面向多核处理器的共享末级高速缓存访存方法和装置
US10235283B2 (en) 2017-03-14 2019-03-19 International Business Machines Corporation Techniques for supporting in-place updates with a log-structured array controller
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复系统和计算机可读介质
CN110413214B (zh) * 2018-04-28 2023-07-18 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
CN110413545B (zh) * 2018-04-28 2023-06-20 伊姆西Ip控股有限责任公司 存储管理方法、电子设备和计算机程序产品
US10983922B2 (en) * 2018-05-18 2021-04-20 International Business Machines Corporation Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module
CN109857680B (zh) * 2018-11-21 2020-09-11 杭州电子科技大学 一种基于动态页面权重的lru闪存缓存管理方法
US11151057B2 (en) * 2019-12-06 2021-10-19 EMC IP Holding Company LLC Method and system for efficiently evicting data from memory slots in a storage system
US11022014B1 (en) 2020-04-28 2021-06-01 Faurecia Emissions Control Technologies, Usa, Llc Exhaust aftertreatment system with heated flash-boiling doser
CN111915763A (zh) * 2020-07-24 2020-11-10 东风汽车有限公司 一种汽车高级驾驶辅助功能异常信息采集方法及电子设备
US11379382B2 (en) * 2020-12-08 2022-07-05 International Business Machines Corporation Cache management using favored volumes and a multiple tiered cache memory
US11372778B1 (en) 2020-12-08 2022-06-28 International Business Machines Corporation Cache management using multiple cache memories and favored volumes with multiple residency time multipliers
CN114138186B (zh) * 2021-11-10 2024-02-23 杭州当虹科技股份有限公司 一种可动态调节的缓存方法和装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61131142A (ja) 1984-11-30 1986-06-18 Casio Comput Co Ltd Lru機構
US5381539A (en) 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
JPH0652060A (ja) 1992-07-28 1994-02-25 Hitachi Ltd Lruリスト制御方式
US5860131A (en) * 1996-06-17 1999-01-12 Helix Software Co. Method for providing dynamic cache management in a computer system
US6141731A (en) * 1998-08-19 2000-10-31 International Business Machines Corporation Method and system for managing data in cache using multiple data structures
JP2001109664A (ja) 1999-10-08 2001-04-20 Ricoh Co Ltd 情報処理装置およびそのバッファ管理方法
US6738865B1 (en) 2000-06-09 2004-05-18 International Business Machines Corporation Method, system, and program for demoting data from cache based on least recently accessed and least frequently accessed data
CA2312444A1 (en) 2000-06-20 2001-12-20 Ibm Canada Limited-Ibm Canada Limitee Memory management of data buffers incorporating hierarchical victim selection
US6507893B2 (en) 2001-01-26 2003-01-14 Dell Products, L.P. System and method for time window access frequency based caching for memory controllers
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
JP2004355365A (ja) * 2003-05-29 2004-12-16 Fujitsu Ltd キャッシュ管理装置およびキャッシュメモリ管理方法
US7769974B2 (en) 2004-09-10 2010-08-03 Microsoft Corporation Increasing data locality of recently accessed resources
US20060136668A1 (en) * 2004-12-17 2006-06-22 Rudelic John C Allocating code objects between faster and slower memories
US20070067575A1 (en) 2005-09-20 2007-03-22 Morris John M Method of managing cache memory based on data temperature
US8363519B2 (en) 2006-06-30 2013-01-29 Seagate Technology Llc Hot data zones
US7908236B2 (en) * 2006-07-20 2011-03-15 International Business Machines Corporation Using multiple data structures to manage data in cache
US20080104323A1 (en) 2006-10-26 2008-05-01 Colglazier Daniel J Method for identifying, tracking, and storing hot cache lines in an smp environment
US7711905B2 (en) 2007-07-16 2010-05-04 International Business Machines Corporation Method and system for using upper cache history information to improve lower cache data replacement
US8171224B2 (en) * 2009-05-28 2012-05-01 International Business Machines Corporation D-cache line use history based done bit based on successful prefetchable counter
US8880835B2 (en) 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
US20110107042A1 (en) 2009-11-03 2011-05-05 Andrew Herron Formatting data storage according to data classification
JP2011150684A (ja) * 2009-12-21 2011-08-04 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
JP5434738B2 (ja) 2010-03-26 2014-03-05 日本電気株式会社 ディスク装置

Also Published As

Publication number Publication date
US8935479B2 (en) 2015-01-13
DE112013001284T5 (de) 2014-12-24
GB201414607D0 (en) 2014-10-01
GB2514501B (en) 2015-03-25
US20130232295A1 (en) 2013-09-05
GB2514501A (en) 2014-11-26
US20130232294A1 (en) 2013-09-05
DE112013001284B4 (de) 2022-07-07
CN104145252B (zh) 2017-03-29
CN104145252A (zh) 2014-11-12
US8930624B2 (en) 2015-01-06
JP2015516613A (ja) 2015-06-11
WO2013132370A1 (en) 2013-09-12

Similar Documents

Publication Publication Date Title
JP6113199B2 (ja) データを管理する方法、コンピュータ・プログラム、およびシステム
US8806122B2 (en) Caching data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US8650354B2 (en) Prefetching tracks using multiple caches
US8788742B2 (en) Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US8825944B2 (en) Populating strides of tracks to demote from a first cache to a second cache
US8799578B2 (en) Managing unmodified tracks maintained in both a first cache and a second cache
US8793436B2 (en) Cache management of tracks in a first cache and a second cache for a storage
US9021201B2 (en) Demoting partial tracks from a first cache to a second cache
US8825952B2 (en) Handling high priority requests in a sequential access storage device having a non-volatile storage cache
US8959279B2 (en) Populating a first stride of tracks from a first cache to write to a second stride in a second cache
US20140365718A1 (en) Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache
US8996789B2 (en) Handling high priority requests in a sequential access storage device having a non-volatile storage cache

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170123

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170314

R150 Certificate of patent or registration of utility model

Ref document number: 6113199

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150