JP5305621B2 - 複数のデータ構造を用いてキャッシュ内のデータを管理するシステム - Google Patents

複数のデータ構造を用いてキャッシュ内のデータを管理するシステム Download PDF

Info

Publication number
JP5305621B2
JP5305621B2 JP2007186509A JP2007186509A JP5305621B2 JP 5305621 B2 JP5305621 B2 JP 5305621B2 JP 2007186509 A JP2007186509 A JP 2007186509A JP 2007186509 A JP2007186509 A JP 2007186509A JP 5305621 B2 JP5305621 B2 JP 5305621B2
Authority
JP
Japan
Prior art keywords
entry
data
readable medium
computer readable
determining
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
JP2007186509A
Other languages
English (en)
Other versions
JP2008027444A (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 JP2008027444A publication Critical patent/JP2008027444A/ja
Application granted granted Critical
Publication of JP5305621B2 publication Critical patent/JP5305621B2/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数のデータ構造を使用してキャッシュ内のデータを管理するシステムに関する。
キャッシュ管理システムは、ストレージ装置内に維持されるデータを、メモリ装置などのより高速なアクセス媒体に格納し、その結果、ストレージからのデータを求める要求に、より高速アクセスのキャッシュ・メモリから、より高速にサービスすることができる。キャッシュ管理システムは、ストレージからキャッシュにステージされたデータ単位ごとに1エントリを有するリンク・リストを維持することができる。一般的に使用される最長時間未使用(LRU:Least Recently Used)キャッシュ技法では、キャッシュ内のデータアクセスされた場合、すなわちキャッシュ「ヒット」の場合、アクセスされたデータに関するLRUリスト内のエントリが、リストの最短時間未使用(MRU:Most Recently Used)端に移動される。要求されたデータがキャッシュ内にない場合、すなわちキャッシュ・ミスである場合、そのエントリがリストのLRU端にあるキャッシュ内のデータを削除する(すなわちストレージにデステージする)ことができ、キャッシュにステージされた新しいデータに関するエントリがLRUリストのMRU端に追加される。このLRUキャッシュ技法では、より頻繁にアクセスされるデータがキャッシュにとどまる可能性が高く、一方あまり頻繁にアクセスされないデータがリストのLRU端から削除されて、新たにアクセスされるデータのためにキャッシュ内に空間が作成される可能性が高くなる。
複数のスレッド、またはマルチプロセッサ環境内の異なるプロセッサが同一のキャッシュからのデータにアクセスしている非同期コンピューティング環境では、MRUエントリがロックによって保護され、MRUエントリへのアクセスが直列化される。このことは、1つまたは複数のスレッドが、そのキャッシュ・ヒット・オペレーションまたはキャッシュ・ミス・オペレーションを完了するために、MRUエントリに対するロックを保持するスレッドを待機しなければならないことを意味する。マルチスレッド化環境では、すべてのキャッシュ・ヒットおよびキャッシュ・ミスはこのロックに対するアクセスを必要とするので、このロックに対する著しい量の競合が存在する。そのような競合は、仮想メモリ、データベース、ファイル・システム、およびストレージ・コントローラなどの高性能環境および高スループット環境にとって望ましくないと考えられる。
図1に、ストレージ装置からキャッシュされたデータを管理するために従来技術で周知のクロック・データ構造(または「クロック」)2を示す。クロック2は循環バッファを備える。クロックは、クロック2のヘッド・エントリ6とテール・エントリ8との間を指し示すクロック・ハンド4を含む。ストレージからのデータがヘッド・エントリ6に追加される。クロック・アルゴリズムは、クロック2のエントリすなわちページごとに「ページ参照ビット」を維持する。データが最初にストレージからキャッシュに運ばれたとき、キャッシュされたデータに関するエントリに対するページ参照ビットが0にセットされる。キャッシュ内のデータアクセスされたとき、アクセスされたデータに関するページ参照ビットが1にセットされる。
キャッシュ内のデータをストレージから新たにアクセスされたデータと置き換えるために、クロック・ハンド4の所のヘッド・エントリがページ参照ビット0を有する場合、ヘッド・エントリに対応するデータがキャッシュからデステージされ、新しいページに関する情報がヘッド・エントリ6に追加される。現ヘッド・エントリに関するページ参照ビットが1である場合、ページ参照ビットが0にリセットされ、置き換えるためのページ参照ビット0を有するヘッド・エントリを見つけるまで、クロック・ハンド4がクロック2内を前方に移動する。仮想メモリ応用例では、ページ参照ビットをハードウェアで変更することができる。
クロック・キャッシュ技法の1つの利点は、LRUキャッシュ技法の場合のようにキャッシュ・ヒットに関するMRU位置にページを移動する必要がないことである。LRUキャッシュ技法は、アクセスされたデータに関するLRUリスト内のエントリをMRU位置に移動するのにロックおよび直列化を必要とする。さらに、クロック・キャッシュ技法のヒット率は通常、LRUキャッシュ方法のヒット率に匹敵する。このため、クロック・キャッシュ技法の変形例が多くのオペレーティング・システムおよびアプリケーション・プログラムで使用されている。しかし、ページをクロック構造のヘッド・エントリに追加するとき、キャッシュ・ミスに関してロックが依然として必要である。したがって、LRU技法とクロック・キャッシュ技法は共に、キャッシュ内のデータを置き換えるときにロック競合を必要とする。
こうした理由で、キャッシュ内のデータを管理する技法を提供することが当技術分野で求められている。
複数のデータ構造を使用してキャッシュ内のデータを管理するシステムが提供される。複数のデータ構造がそれぞれ、第2コンピュータ可読媒体に追加された第1コンピュータ可読媒体からのデータを識別するエントリをそれぞれ有する。第1コンピュータ可読媒体内のデータを求める要求が受信される。要求されたデータに関するエントリがデータ構造のうちの1つの中に存在するかどうかに関して判定が行われる。要求されたデータに関するエントリがデータ構造のうちの1つの中に存在しないと判定したことに応答して、要求されたデータが第1コンピュータ可読媒体から取り出され、第2コンピュータ可読媒体に格納される。要求されたデータに関するエントリがデータ構造のうちの1つの中に存在しないと判定したことに応答して、データ構造のうちの1つが選択され、取り出されたデータに関するエントリが、選択されたデータ構造に追加される。
別の実施形態では、データ構造のうちの1つを選択することは、データ構造のうちの1つをランダムに選択することを含む。
別の実施形態では、要求されたデータに関するエントリがデータ構造のうちの1つの中に存在しないと判定したことに応答して、取り出された要求されたデータを格納するために利用可能なスペースを第2コンピュータ可読媒体が有するかどうかに関して判定が行われる。第2コンピュータ可読媒体が利用可能なスペースを有さないと判定したことに応答して、データ構造のうちの1つから1つのエントリが選択される。選択されたエントリに関するデータが第2コンピュータ可読媒体からデステージされる。
別の実施形態では、第2コンピュータ可読媒体が利用可能なスペースを有さないと判定したことに応答して、データ構造のうちの1つから1つのエントリを選択することは、最も古いエントリを有するデータ構造のうちの1つを求めることを含み、選択したエントリが、求めたデータ構造内の最も古いエントリを含む。
別の実施形態では、第2コンピュータ可読媒体が利用可能なスペースを有さないと判定したことに応答して、データ構造のうちの1つから1つのエントリを選択することは、データ構造のランダムなサブセットを選択すること、および選択したランダムなサブセットから、その最も古いエントリが選択したサブセット内の任意の他のデータ構造内の最も古いエントリよりも新しくない1つのデータ構造を選択することを含む。
別の実施形態では、データ構造は最長時間未使用(LRU)リストを含み、取り出されたデータに関するエントリを追加することは、選択されたLRUリストの最短時間未使用(MRU)端にエントリを追加することを含む。
別の実施形態では、データ構造はクロックを含み、各クロックは、リスト内で互いに隣接するヘッド・エントリおよびテール・エントリを有し、取り出されたデータに関するエントリを追加することは、選択されたクロックのヘッド・エントリにエントリを追加することを含む。
別の実施形態では、クロック内のエントリは、エントリがアクセスされたかどうかを示す。要求されたデータに関するエントリがクロックのうちの1つの中に存在しないと判定したことに応答して、取り出された要求されたデータを格納するために利用可能なスペースを第2コンピュータ可読媒体が有するかどうかに関して判定が行われる。クロックのうちの1つが選択され、アクセスされていないと示されるクロック内の1つのエントリが求められる。求められたエントリに関するデータが、第2コンピュータ可読媒体からデステージされる。
別の実施形態では、複数のデータ構造がそれぞれ、第2コンピュータ可読媒体に追加された第1コンピュータ可読媒体からのデータを識別するエントリをそれぞれ有する。第1コンピュータ可読媒体内のデータを求める要求が受信され、要求されたデータに関するエントリがデータ構造のうちの1つの中に存在するかどうかに関して判定が行われる。要求されたデータに関する1つのエントリがデータ構造のうちの1つの中に存在すると判定したことに応答して、データ要求に関して、要求されたデータが第2コンピュータ可読媒体からアクセスされる。要求されたデータに関する1つのエントリがデータ構造のうちの1つの中に存在すると判定したことに応答して、データ構造のうちの1つが選択され、要求されたデータに関する1つのエントリが存在すると判定したことに応答して、要求されたデータに関する求められたエントリが、選択されたデータ構造に移動される。
別の実施形態では、要求されたデータに関する1つのエントリがデータ構造のうちの1つの中に存在すると判定したことに応答して、データ構造がランダムに選択される。
別の実施形態では、各データ構造が最長時間未使用(LRU)リストおよびクロック・データ構造のうちの1つを含む1組のデータ構造のメンバである。
図2にコンピューティング環境の一実施形態を示す。システム12は1つまたは複数のプロセッサ14a、14b...14nを含み、各プロセッサ14a、14b...14nは、ストレージ16内の記憶位置を対象とする入出力(I/O)要求をサブミットする。キャッシュ・マネージャ18はI/O要求を処理し、プロセッサ14a、14b...14nによって要求されるデータを、メモリ22に格納された複数の最長時間未使用(LRU)リスト20a、20b...20nのうちの1つにキャッシュする。キャッシュ・マネージャ18は、LRUリスト20a、20b...20nを使用して、メモリ22にキャッシュされたストレージ16からのデータを管理し、ストレージ16からデータをいつステージおよびデステージするかを判定し、キャッシュ・ヒットを最適化し、キャッシュ・ミスを最小限に抑える。各LRUリスト20a、20b...20nは、最短時間未使用(MRU)端24a、24b...24nおよびLRU端26a、26b...26nを含む。LRUリスト20a、20b...20nで識別されるストレージ16からアクセスされるデータが、メモリ22にキャッシュされる。
キャッシュ・マネージャ18はさらに、メモリ22のキャッシュ内に維持されるストレージ6からのデータに関する情報を有するキャッシュ・インデックス28を維持する。キャッシュ・インデックス28は、ストレージ16内の特定の記憶アドレスまたは記憶位置からのデータがLRUリスト20a、20b...20nのうちの1つの中のエントリで識別されるかどうかを示す。ストレージ16内の記憶アドレスまたは記憶位置は、トラック、ブロック、ページ、またはストレージ16内のデータの任意のその他のセグメントを含むことができる。
ストレージ16は、1つまたは複数のディスク・ドライブなどの1つまたは複数のストレージ装置、Justa Bunch of Disks (JBOD)、直接アクセス・ストレージ装置(DASD)、Redundant Array of Independent Disks(RAID)アレイ、仮想化装置、テープ・ストレージ、フラッシュ・メモリなどのストレージ装置のアレイを含むことができる。メモリ22は、ストレージ16よりもスループットが高く、アクセスが高速である1つまたは複数のメモリ装置を含むことができる。代替実施形態では、メモリ22およびストレージ16は、当技術分野で周知の任意の適切なコンピュータ可読媒体を含むことができ、それによって、あるコンピュータ可読媒体が、I/O要求が対象とする別のコンピュータ可読媒体に対する高速アクセス・キャッシュとして機能する。プロセッサ14a、14b...14nは、別々のマイクロプロセッサ装置、あるいは1つまたは複数のマルチコア・マイクロプロセッサ装置上に実装された別々の処理コアを含むことができる。キャッシュ・マネージャ18は、プロセッサ14a、14b...14nのうちの1つまたは複数によって実行されるコンピュータ・プログラムとして実装することができ、またはメモリ22ハードウェア内に実装することができる。
一実施形態では、システム12は、接続された複数のホストからストレージ16に対する読取り要求および書込み要求を受信するストレージ・コントローラを備えることができる。
図3に、キャッシュ・インデックス28内のキャッシュ・インデックス・エントリ30の一実施形態を示し、キャッシュ・インデックス・エントリ30は、記憶アドレスなどの記憶位置32、キャッシュされた記憶位置32に関するエントリを有するLRUリスト10a、10b...10nを識別するLRUリスト・フィールド34、およびキャッシュされた記憶位置32に関して識別されるLRUリスト内のエントリ36位置を示す。
キャッシュ・インデックス28は、記憶位置32のハッシュに基づいてそのエントリが索引付けされるハッシュ・テーブルを含むことができる。あるいは、キャッシュ・インデックス28は、ハッシュ・テーブル以外の当技術分野で周知の適切なインデックス型データ構造として実装することもできる。
図4は、ストレージ16からメモリ22へのデータのキャッシングを管理するためにキャッシュ・マネージャ18によって実行されるオペレーションの一実施形態を示す。(ブロック100で)ストレージ16内のデータにアクセスする要求、例えば読取り要求または書込み要求を受信した時、キャッシュ・マネージャ18は、(ブロック102で)キャッシュ・インデックス28を処理し、要求された記憶アドレスがLRUリスト20a、20b...20nのうちの1つの中にあるかどうかを判定する。キャッシュされるデータの記憶位置は、ブロック、トラック、ページ、またはストレージのセグメントのその他の単位を含むことができる。(ブロック104で)要求された記憶アドレスに関するキャッシュ・インデックス・エントリ30(図3)が存在する場合、要求されたデータがキャッシュ内にあり、すなわち「キャッシュ・ヒット」となる。そのような場合、キャッシュ・マネージャ18は、(ブロック106で)キャッシュ・インデックス28から、フィールド34からのLRUリスト20a、20b...20nと、要求されたデータに関するリスト内のエントリ36とを求める。一実施形態では、キャッシュ・マネージャ18は、アクセスされたデータに関するエントリを、エントリが含まれる現LRUリスト20a、20b...20nのMRU端24a、24b...24nに移動することができる。代替実施形態では、キャッシュ・マネージャ18は、(ブロック108で)LRUリスト20a、20b...20n(求めたエントリを既に含むLRUリストを含むことがあり、または含まないことがある)のうちの1つを選択することができ、例えばランダムに選択することができ、(ブロック110で)要求されたデータに関する求めたエントリを、選択したLRUリスト20a、20b...20nのMRU端24a、24b...24nに移動することができる。
(ブロック104で)要求された記憶アドレスに関するキャッシュ・インデックス28内のエントリが存在しない場合、要求されたデータはキャッシュ内に存在せず、すなわち「キャッシュ・ミス」となる。そのような場合、(ブロック112で)キャッシュ・メモリ22が満杯でない場合、すなわち要求されたデータに関して利用可能なスペースを有する場合、キャッシュ・マネージャ18は、(ブロック114で)要求されたデータをキャッシュ・メモリ22内にステージする。キャッシュ・メモリ22内にステージされたデータに関するLRUリスト・エントリを作成するために、キャッシュ・マネージャ18は、(ブロック116で)LRUリスト20a、20b...20nのうちの1つを例えばランダムに選択し、(ブロック118で)ステージされたデータに関するエントリを、選択したLRUリスト20a、20b...20nのMRU端24a、24b...24nに追加する。また、(ブロック120で)キャッシュ・インデックス・エントリ30(図3)が、キャッシュ・インデックス28に追加される。このキャッシュ・インデックス・エントリ30は、要求されたデータの記憶アドレス32とLRUエントリ3が追加される選択したLRUリスト20a、20b...20nを識別するLRUリスト・フィールド34とを含む。(ブロック112で)キャッシュが満杯である場合、すなわち要求されたデータに関して利用可能なスペースを有さない場合、データをデステージする必要がある。データをデステージするために、キャッシュ・マネージャ18は、(ブロック124で)ランダムに選択したリストのサブセットを処理して、そのサブセットのうち最も古いLRUエントリ26a、26b...26nを有するリストを求めることにより、リストのうちの1つを選択する。各キャッシュ・エントリと共に、そのエントリに対する最後のアクセスの時刻を格納するタイムスタンプを維持することによって最も古いエントリを求めることができる。例えば、n個のLRUリストが存在する場合、ランダムに選択したリストのサブセットはm個のリストを含むことができる。一実施形態では、リストのサブセットすなわちmは2でよい。次いで、キャッシュ・マネージャ18は、(ブロック126で)LRUエントリ26a...26nに関するデータを選択したLRUリスト20a、20b...20nからデステージする。データのデステージは、メモリ22からデータを削除し、データに対する何らかの更新をストレージ16に適用する。データをデステージした後、制御はブロック114に進み、要求されたデータをステージインする。ブロック110または120より、制御はブロック128に進み、要求されたデータを要求側プロセッサ14a、14b...14nに返す。
各LRUリストの間でエントリをランダムに分散させることにより、記載の実施形態は、同時にアクセスされる記憶位置が異なるLRUリスト内のエントリを有する可能性を増加させて、データを要求するプロセッサ14a、14b...14nによるロック競合を回避しようとする。例えば、そのLRUエントリが異なるLRUリスト上にある記憶位置に対する2つの同時要求が存在する場合、2つの要求が同一のLRUリスト内のMRUエントリに対するアクセスを要求するときに生じるロック競合および直列化による遅延はない。しかし、2つの同時要求が、そのエントリが同一リスト上にあるデータに対するものである場合、ロック競合は依然として生じる可能性がある。それでも、記載の実施形態は、最後にアクセスしたエントリをMRU端およびLRU端に対する別々のロックを有する複数のLRUリストにわたってランダムに分散させることにより、ロック競合の可能性を大幅に低減する。
図5は、LRUリスト20a、20b...20n(図2)を使用する代わりに、キャッシュ・マネージャ18がクロック・データ構造(または「クロック」)150a、150b...150nをメモリ152内に維持して、ストレージ16からのデータをキャッシュ・メモリ152内で管理する代替実施形態である。各クロック150a、150b...150nは、それぞれのテール・エントリ156a、156b...156nとヘッド・エントリ158a、158b...158nとの間の位置に対するポインタを与えるクロック・ハンド154a、154b...154nを含む。キャッシュ・インデックス160は、クロックのうちの1つの中のエントリに対する記憶アドレスのインデックスを提供する。キャッシュ・インデックス160は、ハッシュ・テーブルまたはその他の適切なインデックス・データ構造を含むことができる。
図6は、キャッシュ・インデックス160内のエントリ170の一実施形態であり、エントリ170は、記憶アドレスなどの記憶位置172、記憶位置172に関するエントリを有するクロック150a、150b...150nを識別するクロック・フィールド174、および記憶位置172に関して識別されるクロック内のエントリ176を示す。
図7に、キャッシュ・メモリ152を管理するためにクロック150a、150b...150nを使用してキャッシュ・マネージャ18によって実行されるオペレーションの一実施形態を示す。(ブロック200で)記憶アドレスを求める要求を受信した時、キャッシュ・マネージャ18は、(ブロック202で)キャッシュ・インデックス160を処理し、要求されたデータがクロック150a、150b...150nのうちの1つの中にあるかどうかを判定する。(ブロック204で)要求された記憶アドレスに関するキャッシュ・インデックス・エントリ160が存在する場合、すなわち「キャッシュ・ヒット」である場合、キャッシュ・マネージャ18は、(ブロック206で)キャッシュ・インデックス160から、要求されたデータに関するクロック150a、150b...150nと、要求されたデータに関するクロック150a、150b...150n内のエントリ176(図6)とを求める。次いで、キャッシュ・マネージャ18は、(ブロック208で)求めたエントリに関するエントリ・ビットをセットして、エントリがアクセスされたことを示し(例えば、ページ参照ビットを「1」にセットする)、(ブロック210で)要求されたデータを返す。(ブロック204で)キャッシュ・インデックス160が要求された記憶アドレスに関するエントリを含まない場合、すなわち「キャッシュ・ミス」である場合、かつ(ブロック212で)キャッシュ・メモリ152が満杯でない場合、すなわち要求されたデータに関して利用可能なスペースを有する場合、キャッシュ・マネージャ18は、(ブロック214で)要求されたデータをキャッシュ・メモリ152にステージし、(ブロック216で)クロック150a、150b...150nのうちの1つを選択する。クロック150a、150b...150nのうちの1つはランダムに選択することができる。(ブロック218で)ステージしたデータに関するクロック・エントリ17(図6)が選択したクロック150a、150b...150nのヘッド・エントリ158a、158b...158nに追加され、(ブロック220で)キャッシュ・インデックス・エントリ170がキャッシュ・インデックス10に追加される。このキャッシュ・インデックス・エントリ170は、要求されたデータの記憶アドレス172、選択したクロックを識別するクロック・フィールド174、およびメモリ152にステージされたデータに関する選択したクロック内のエントリ176を含む。ブロック220から、制御はブロック210に進み、データを返す。
(ブロック212で)メモリ・キャッシュ152が満杯である場合、すなわち要求されたデータに関して利用可能なスペースを有さない場合、キャッシュ・マネージャ18は、(ブロック222で)クロック150a、150b...150nのサブセットをランダムに選択して、ランダムに選択したクロックのサブセットのうち最大のクロック、すなわち最も多くのエントリ17を有するクロック(そのクロックからエントリ削除されることになる)を求めることにより、クロック150a、150b...150nのうちの1つを選択することができる。各クロックについて、クロック内のエントリの数を示すカウンタが維持される。カウンタを使用して、1組のクロックの中から、最大のクロック、すなわち最も多くのエントリを含むクロックを求めることができる。あるいは、キャッシュ・マネージャ18は、キャッシュ・ミスのためにメモリ152にステージされるデータに関するエントリで更新すべきクロック150a、150b...150nのうちの1つをランダムに選択することもできる。
(ブロック224で)選択したクロック150a、150b...150nのクロック・ハンド154a、154b...154nの所のヘッド・エントリ158a、158b...158nがアクセスされたと示される場合、すなわちそのエントリに関するページ参照ビットが「1」にセットされる場合、キャッシュ・マネージャ18は、(ブロック226で)記憶アドレスがアクセスされていないことを示すようにエントリ17に関するビットを例えば「0」にセットして、クロック・ハンド154a、154b...154nを1エントリ前方に移動し、その結果、以前のヘッド・エントリ158a、158b...158nが今度は新しいクロック・ハンド位置のテール・エントリ156a、156b...156nとなる。「未アクセス」、例えば「0」を示すようにエントリに関するビットをリセットした後、(ブロック226で)制御はブロック224に戻り、その結果、エントリが最近アクセスされていないこと、例えばページ参照ビットが0であることをそのアクセス・ビットが示すヘッド・エントリ158a、158b...158nに達するまで、クロック・ハンド154a、54b...154nは前方に移動し続ける。
(ブロック224で)キャッシュ内の記憶アドレスがアクセスされていないこと、例えばページ参照ビットが0であることをクロック・ハンド154a、154b...154nの所のヘッド・エントリ158a、158b...158nが示す場合、キャッシュ・マネージャ18は、(ブロック228で)ヘッド・エントリ158a、158b...158nに関するデータが修正された場合、そのデータをキャッシュ・メモリ152からストレージ16にデステージする。データが修正されていない場合、データを廃棄することができる。次いで、制御はブロック214に進み、要求されたデータをステージインし、要求されたデータに関するエントリをクロック150a、150b...150nのうちの1つに追加し、要求されたデータを返す。
各クロック・データ構造の間でエントリをランダムに分散させることにより、記載の実施形態は、同時にアクセスされる記憶位置が異なるクロック内のエントリを有する可能性を増加させて、キャッシュ・ミスがあるときにプロセッサ14a、14b...14nによるロック競合を回避しようとする。例えば、そのクロック・エントリが異なるクロック上にある記憶位置に対する2つの同時要求が存在する場合、キャッシュ・ミスが存在する場合にロック競合および直列化による遅延はない。キャッシュ・ミスに対して、キャッシュにステージされるデータに関して異なるクロックを別々に更新することができるからである。記載の実施形態は、最後にアクセスしたエントリを別々のロックを有する複数のクロックにわたってランダムに分散させることにより、ロック競合の可能性を大幅に低減する。さらに、複数のリストの使用は、ロッキング遅延を回避することによってシステム転送スループットを改善する。
追加の実施形態の詳細
ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを生成するための標準プログラミング技法または標準エンジニアリング技法あるいはその両方を使用する方法、装置、または製品(article of manufacture)、さらにはプログラムとして記載のオペレーションを実装することができる。「コンピュータ可読媒体」内に維持されるコードとして記載のオペレーションを実装することができる。プロセッサは、コンピュータ可読媒体からコードを読み取り、実行することができる。コンピュータ可読媒体は、磁気記憶媒体(例えばハード・ディスク・ドライブ、フロッピィ・ディスク、テープなど)、光学式ストレージ(CD−ROM、DVD、光ディスクなど)、揮発性および不揮発性メモリ装置(例えばEEPROM、ROM、PROM、RAM、DRAM、SRAM、フラッシュ・メモリ、ファームウェア、プログラマブル論理など)の媒体を含むことができる。さらに、記載のオペレーションを実装するコードを、ハードウェア論理(例えば集積回路チップ、プログラマブル・ゲート・アレイ(PGA)、特定用途向け集積回路(ASIC)など)として実装することができる。さらに、記載のオペレーションを実装するコードを「伝送信号」として実装することができる。伝送信号は、空間を介して、または光ファイバ、銅線などの伝送媒体を介して伝播することができる。コードまたは論理がその中に符号化される伝送信号は、ワイヤレス信号、衛星伝送、電波、赤外線信号、Bluetoothなどをさらに含むことができる。コードまたは論理がその中に符号化される伝送信号は、送信局で送信することができ、受信局で受信することができ、伝送信号内に符号化されるコードまたは論理は、受信側および送信側の局または装置で復号化し、ハードウェアまたはコンピュータ可読媒体内に格納することができる。「製品」は、コードをその中に実装することのできるコンピュータ可読媒体、ハードウェア論理、または伝送信号、あるいはそれらの組合せを含む。記載のオペレーションの実施形態を実装するコードがその中に符号化される装置は、コンピュータ可読媒体またはハードウェア論理を含むことができる。もちろん、本発明の範囲から逸脱することなくこの構成に対して多くの修正を行えること、および製品が当技術分野で周知の適切な情報運搬媒体を含むことができることを当業者は理解されよう。
記載の実施形態では、キャッシュ内のデータに関するエントリを格納するのに使用されるデータ構造は、LRUリストまたはクロックを含んだ。代替実施形態では、追加の適切なデータ構造を使用して情報のエントリを格納し、キャッシュ内のデータを管理することができる。さらに、記載の実施形態では、エントリを格納するのに使用されるデータ構造が、同じタイプの例えばLRUリスト、クロックであった。代替実施形態では、キャッシュ・エントリを格納するのに使用される複数のデータ構造は混合タイプでよい。
変数「n」および「m」は、要素の可変数を表すのに使用されるときに、要素の任意の数の例を示すことがあり、異なる要素と共に使用されるときに、異なる整数を表すことがある。
互いに通信する装置は、明白に指定されるのでない限り、互いに連続的に通信する必要はない。さらに、互いに通信する装置は、1つまたは複数の媒介を介して直接的または間接的に通信することができる。
互いに通信するいくつかの構成要素を有する一実施形態の記述は、すべてのそのような構成要素が必要であることを示唆しない。逆に、本発明の可能な多種多様な実施形態を示すのに様々な任意選択の構成要素が記述される。
さらに、プロセス・ステップ、方法ステップ、アルゴリズムなどが順番に記述されることがあるが、そのようなプロセス、方法、およびアルゴリズムを代替の順序で機能するように構成することができる。言い換えれば、記述される何らかのシーケンスまたは順序のステップは、必ずしも、ステップがその順序で実施されるという要件を示すわけではない。本明細書に記載のプロセスのステップは、実用的な任意の順序で実施することができる。さらに、一部のステップを同時に実施することができる。
単一の装置または物品が本明細書で説明されるとき、複数の装置/物品(それらが協働するか否かに関わらず)を単一の装置/物品の代わりに使用できることを容易に理解されよう。同様に、複数の装置または物品が本明細書で説明される場合に(それらが協働するか否かに関わらず)、その複数の装置または物品の代わりに単一の装置/物品を使用することができ、あるいは図示される数の装置またはプログラムの代わりに異なる数の装置/物品を使用できることを容易に理解されよう。装置の機能または特徴あるいはその両方を、そのような機能/特徴を有するものとして明示的には説明されていない1つまたは複数の他の装置で代替的に実施することができる。したがって、本発明の他の実施形態は、装置自体を含む必要がない。
図示される図4および7のオペレーションは、一定のイベントが一定の順序で生じることを示す。代替実施形態では、一定のオペレーションを異なる順序で実行することができ、修正または除去することができる。さらに、上述の論理にステップを追加することができ、ステップは、依然として記載の実施形態に準拠することができる。さらに、本明細書に記載のオペレーションを順次行うことができ、または一定のオペレーションを並列に処理することができる。さらに、オペレーションを単一の処理装置または分散処理装置で実行することができる。
上記の本発明の様々な実施形態の説明を例示および説明のために提示した。これは網羅的なものではなく、本発明を開示の厳密な形態に限定するものでもない。上記の教示に照らして多数の修正形態および変形形態が可能である。本発明の範囲はこの詳細な説明によって限定されるのではなく、本明細書に添付の特許請求の範囲によって限定されるものとする。上記の仕様、例、およびデータは、本発明の構成の製造および使用の完全な説明を与える。本発明の精神および範囲から逸脱することなく本発明の多数の実施形態を作成することができるので、本発明は本明細書に添付の特許請求の範囲に属する。
キャッシュ管理のために使用される従来技術のクロック・データ構造を示す図である。 コンピューティング環境の一実施形態を示す図である。 図2のコンピューティング環境内でキャッシュを管理するのに使用されるインデックス・エントリの一実施形態を示す図である。 図2および3のデータ構造を使用してキャッシュを管理するためのオペレーションの一実施形態を示す図である。 キャッシュを管理するのに使用されるメモリ内の構成要素の一実施形態を示す図である。 図5のメモリと共にキャッシュを管理するのに使用されるインデックス・エントリの一実施形態を示す図である。 図5および6のデータ構造を使用してキャッシュを管理するためのオペレーションの一実施形態を示す図である。
符号の説明
2 クロック・データ構造
4 クロック・ハンド
6 ヘッド・エントリ
8 テール・エントリ
12 システム
14a、14b...14n プロセッサ
16 ストレージ
18 キャッシュ・マネージャ
20a、20b...20n 最長時間未使用(LRU)リスト
22 メモリ
24a、24b...24n 最短時間未使用(MRU)端
26a、26b...26n LRU端
28 キャッシュ・インデックス
30 キャッシュ・インデックス・エントリ
32 記憶位置
34 LRUリスト
36 エントリ
150a、150b...150n クロック・データ構造
152 キャッシュ・メモリ
154a、154b...154n クロック・ハンド
156a、156b...156n テール・エントリ
158a、158b...158n ヘッド・エントリ
160 キャッシュ・インデックス
170 エントリ
172 記憶位置
174 クロック
176 エントリ

Claims (10)

  1. 第1コンピュータ可読媒体と通信するシステムであって、
    少なくとも1つのプロセッサと、
    第2コンピュータ可読媒体と、
    前記第2コンピュータ可読媒体に追加された前記第1コンピュータ可読媒体からのデータを識別するエントリをそれぞれ有する複数のデータ構造と、
    前記第2コンピュータ可読媒体に対するアクセスを管理するキャッシュ・マネージャとを備え、
    前記キャッシュ・マネージャによって実行されるオペレーションが、
    前記第1コンピュータ可読媒体内のデータを求める要求を1つのプロセッサから受信するステップと、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在するかどうかを判定するステップと、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在しないと判定したことに応答して、前記第1コンピュータ可読媒体から前記要求されたデータを取り出し、前記第2コンピュータ可読媒体に格納するステップと、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在しないと判定したことに応答して、前記データ構造のうちの1つをランダムに選択するステップと、
    前記取り出したデータに関するエントリを前記選択したデータ構造に追加するステップと
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在しないと判定したことに応答して、前記取り出した要求されたデータを格納するために利用可能なスペースを前記第2コンピュータ可読媒体が有するかどうかを判定するステップと、
    前記第2コンピュータ可読媒体が利用可能なスペースを有さないと判定したことに応答して、前記データ構造のうちの1つから1つのエントリを選択するステップと、
    前記第2コンピュータ可読媒体から前記選択したエントリに関するデータをデステージするステップとを含み、
    前記第2コンピュータ可読媒体が利用可能なスペースを有さないと判定したことに応答して、前記データ構造のうちの1つから1つのエントリを選択するステップが、
    前記データ構造のランダムなサブセットを選択するステップと、
    前記選択したランダムなサブセットから、その最も古いエントリが前記選択したサブセット内の任意の他のデータ構造内の最も古いエントリよりも新しくない1つのデータ構造を選択するステップとを含む、システム。
  2. 第1コンピュータ可読媒体と通信するシステムであって、
    少なくとも1つのプロセッサと、
    第2コンピュータ可読媒体と、
    前記第2コンピュータ可読媒体に追加された前記第1コンピュータ可読媒体からのデータを識別するエントリをそれぞれ有する複数のデータ構造と、
    前記第2コンピュータ可読媒体に対するアクセスを管理するキャッシュ・マネージャとを備え、
    前記キャッシュ・マネージャによって実行されるオペレーションが、
    前記第1コンピュータ可読媒体内のデータを求める要求を1つのプロセッサから受信するステップと、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在するかどうかを判定するステップと、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在しないと判定したことに応答して、前記第1コンピュータ可読媒体から前記要求されたデータを取り出し、前記第2コンピュータ可読媒体に格納するステップと、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在しないと判定したことに応答して、前記データ構造のうちの1つをランダムに選択するステップと、
    前記取り出したデータに関するエントリを前記選択したデータ構造に追加するステップとを含み、
    前記データ構造がクロックを含み、各クロックが、循環バッファ内で互いに隣接するヘッド・エントリおよびテール・エントリを有し、前記取り出したデータに関する前記エントリを追加するステップが、前記選択したクロックの前記ヘッド・エントリに前記エントリを追加するステップを含む、システム。
  3. 前記クロック内の前記エントリは、前記エントリにアクセスされたかどうかを示し、前記キャッシュ・マネージャによって実行される前記オペレーションが、
    前記要求されたデータに関するエントリが前記クロックのうちの1つの中に存在しないと判定したことに応答して、前記取り出した要求されたデータを格納するために利用可能なスペースを前記第2コンピュータ可読媒体が有するかどうかを判定するステップと、
    前記クロックのうちの1つをランダムに選択するステップと、
    アクセスされていないと示される前記クロック内の1つのエントリを求めるステップと、
    前記求めたエントリに関するデータを前記第2コンピュータ可読媒体からデステージするステップとをさらに含む、請求項に記載のシステム。
  4. 前記クロック内の1つのエントリを求めるステップが、
    前記クロックのランダムなサブセットを選択するステップと、
    前記選択したランダムなサブセットから、最も多くのエントリを有する1つのクロックを選択するステップと
    を含む請求項に記載のシステム。
  5. 前記データ構造が最長時間未使用(LRU)リストを含み、前記取り出したデータに関する前記エントリを追加するステップが、選択したLRUリストの最短時間未使用(MRU)端に前記エントリを追加するステップを含む、請求項1〜4の何れかに記載のシステム。
  6. 前記第2コンピュータ可読媒体内の記憶位置に関するデータが前記データ構造のうちの1つの中の1つのエントリで識別されるかどうかを示すキャッシュ・インデックスをさらに備え、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在するかどうかを判定するステップが、
    前記キャッシュ・インデックスから、前記要求されたデータに関する前記エントリが存在するかどうかを判定するステップを含む、請求項1〜4の何れかに記載のシステム。
  7. 第1コンピュータ可読媒体と通信するシステムであって、
    プロセッサと、
    第2コンピュータ可読媒体と、
    前記第2コンピュータ可読媒体に追加された前記第1コンピュータ可読媒体からのデータを識別するエントリをそれぞれ有する複数のデータ構造と、
    前記第2コンピュータ可読媒体に対するアクセスを管理するキャッシュ・マネージャとを備え、前記キャッシュ・マネージャによって実行されるオペレーションが、
    前記第1コンピュータ可読媒体内のデータを求める要求を前記プロセッサから受信するステップと、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在するかどうかを判定するステップと、
    前記要求されたデータに関する1つのエントリが前記データ構造のうちの1つの中に存在すると判定したことに応答して、前記データ要求に関して、前記第2コンピュータ可読媒体から前記要求されたデータにアクセスするステップと、
    前記要求されたデータに関する1つのエントリが前記データ構造のうちの1つの中に存在すると判定したことに応答して、前記データ構造のうちの1つをランダムに選択するステップと、
    前記要求されたデータに関する1つのエントリが存在すると判定したことに応答して、前記要求されたデータに関する求めたエントリを選択された前記データ構造に移動するステップと
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在しないと判定したことに応答して、前記取り出した要求されたデータを格納するために利用可能なスペースを前記第2コンピュータ可読媒体が有するかどうかを判定するステップと、
    前記第2コンピュータ可読媒体が利用可能なスペースを有さないと判定したことに応答して、前記データ構造のうちの1つから1つのエントリを選択するステップと、
    前記第2コンピュータ可読媒体から前記選択したエントリに関するデータをデステージするステップとを含み、
    前記第2コンピュータ可読媒体が利用可能なスペースを有さないと判定したことに応答して、前記データ構造のうちの1つから1つのエントリを選択するステップが、
    前記データ構造のランダムなサブセットを選択するステップと、
    前記選択したランダムなサブセットから、その最も古いエントリが前記選択したサブセット内の任意の他のデータ構造内の最も古いエントリよりも新しくない1つのデータ構造を選択するステップとを含む、システム。
  8. 第1コンピュータ可読媒体と通信するシステムであって、
    プロセッサと、
    第2コンピュータ可読媒体と、
    前記第2コンピュータ可読媒体に追加された前記第1コンピュータ可読媒体からのデータを識別するエントリをそれぞれ有する複数のデータ構造と、
    前記第2コンピュータ可読媒体に対するアクセスを管理するキャッシュ・マネージャとを備え、前記キャッシュ・マネージャによって実行されるオペレーションが、
    前記第1コンピュータ可読媒体内のデータを求める要求を前記プロセッサから受信するステップと、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在するかどうかを判定するステップと、
    前記要求されたデータに関する1つのエントリが前記データ構造のうちの1つの中に存在すると判定したことに応答して、前記データ要求に関して、前記第2コンピュータ可読媒体から前記要求されたデータにアクセスするステップと、
    前記要求されたデータに関する1つのエントリが前記データ構造のうちの1つの中に存在すると判定したことに応答して、前記データ構造のうちの1つをランダムに選択するステップと、
    前記要求されたデータに関する1つのエントリが存在すると判定したことに応答して、前記要求されたデータに関する求めたエントリを選択された前記データ構造に移動するステップとを含み、
    前記データ構造がクロックを含み、各クロックが、循環バッファ内で互いに隣接するヘッド・エントリおよびテール・エントリを有し、前記取り出したデータに関する前記エントリを追加するステップが、前記選択したクロックの前記ヘッド・エントリに前記エントリを追加するステップを含む、システム。
  9. 前記クロック内の前記エントリは、前記エントリにアクセスされたかどうかを示し、前記キャッシュ・マネージャによって実行される前記オペレーションが、
    前記要求されたデータに関するエントリが前記クロックのうちの1つの中に存在しないと判定したことに応答して、前記取り出した要求されたデータを格納するために利用可能なスペースを前記第2コンピュータ可読媒体が有するかどうかを判定するステップと、
    前記クロックのうちの1つをランダムに選択するステップと、
    アクセスされていないと示される前記クロック内の1つのエントリを求めるステップと、
    前記求めたエントリに関するデータを前記第2コンピュータ可読媒体からデステージするステップとをさらに含む、請求項8に記載のシステム。
  10. 前記第2コンピュータ可読媒体内の記憶位置に関するデータが前記データ構造のうちの1つの中の1つのエントリで識別されるかどうかを示すキャッシュ・インデックスをさらに備え、
    前記要求されたデータに関するエントリが前記データ構造のうちの1つの中に存在するかどうかを判定するステップが、
    前記キャッシュ・インデックスから、前記要求されたデータに関する前記エントリが存在するかどうかを判定するステップを含む、請求項7〜の何れかに記載のシステム。
JP2007186509A 2006-07-20 2007-07-18 複数のデータ構造を用いてキャッシュ内のデータを管理するシステム Expired - Fee Related JP5305621B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/459,004 US7908236B2 (en) 2006-07-20 2006-07-20 Using multiple data structures to manage data in cache
US11/459004 2006-07-20

Publications (2)

Publication Number Publication Date
JP2008027444A JP2008027444A (ja) 2008-02-07
JP5305621B2 true JP5305621B2 (ja) 2013-10-02

Family

ID=38972599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007186509A Expired - Fee Related JP5305621B2 (ja) 2006-07-20 2007-07-18 複数のデータ構造を用いてキャッシュ内のデータを管理するシステム

Country Status (3)

Country Link
US (1) US7908236B2 (ja)
JP (1) JP5305621B2 (ja)
CN (1) CN101110061A (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783839B2 (en) * 2007-01-08 2010-08-24 International Business Machines Corporation Using different algorithms to destage different types of data from cache
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8868611B2 (en) 2011-07-28 2014-10-21 Hewlett-Packard Development Company, L.P. Data management system for efficient storage and retrieval of multi-level/multi-dimensional data
US9710397B2 (en) * 2012-02-16 2017-07-18 Apple Inc. Data migration for composite non-volatile storage device
US8930624B2 (en) * 2012-03-05 2015-01-06 International Business Machines Corporation Adaptive cache promotions in a two level caching system
US8909866B2 (en) * 2012-11-06 2014-12-09 Advanced Micro Devices, Inc. Prefetching to a cache based on buffer fullness
US10073851B2 (en) 2013-01-08 2018-09-11 Apple Inc. Fast new file creation cache
US9262415B2 (en) * 2013-11-08 2016-02-16 Sybase, Inc. Cache efficiency in a shared disk database cluster
CN104166634A (zh) * 2014-08-12 2014-11-26 华中科技大学 一种固态盘系统中的映射表缓存管理方法
US9710398B2 (en) * 2014-11-18 2017-07-18 International Business Machines Corporation RE-MRU of metadata tracks to reduce lock contention
US10067884B2 (en) 2015-08-21 2018-09-04 International Business Machines Corporation Distributing a plurality of tracks to add to cache to lists assigned to processors
US9921974B2 (en) 2015-08-21 2018-03-20 International Business Machines Corporation Assigning cache control blocks and cache lists to multiple processors to cache and demote tracks in a storage system
US10108552B2 (en) 2015-08-21 2018-10-23 International Business Machines Corporation Using cache lists for processors to determine tracks to demote from a cache
US9952904B2 (en) 2015-08-21 2018-04-24 International Business Machines Corporation Distributing tracks to add to cache to processor cache lists based on counts of processor access requests to the cache
US10114753B2 (en) * 2015-08-21 2018-10-30 International Business Machines Corporation Using cache lists for multiple processors to cache and demote tracks in a storage system
US9952982B2 (en) * 2016-06-06 2018-04-24 International Business Machines Corporation Invoking demote threads on processors to demote tracks indicated in demote ready lists from a cache when a number of free cache segments in the cache is below a free cache segment threshold
US9971508B2 (en) 2016-06-06 2018-05-15 International Business Machines Corporation Invoking input/output (I/O) threads on processors to demote tracks from a cache
US9971689B2 (en) 2016-06-06 2018-05-15 International Business Machines Corporation Invoking input/output (I/O) threads and demote threads on processors to demote tracks from a cache
US10942844B2 (en) 2016-06-10 2021-03-09 Apple Inc. Reserved memory in memory management system
CN106936913B (zh) * 2017-03-16 2020-06-19 宿州学院 一种基于节点位移和lru记录的缓存更新方法及网络
US10248577B2 (en) 2017-04-07 2019-04-02 International Business Machines Corporation Using a characteristic of a process input/output (I/O) activity and data subject to the I/O activity to determine whether the process is a suspicious process
US10282543B2 (en) * 2017-05-03 2019-05-07 International Business Machines Corporation Determining whether to destage write data in cache to storage based on whether the write data has malicious data
US10445497B2 (en) 2017-05-03 2019-10-15 International Business Machines Corporation Offloading processing of writes to determine malicious data from a first storage system to a second storage system
CN109902092B (zh) * 2019-02-22 2020-05-05 广州荔支网络技术有限公司 一种数据存储系统的操作方法、装置和移动终端
US11580023B2 (en) 2020-03-11 2023-02-14 Fujitsu Limited Information processing apparatus, computer-readable recording medium having stored therein memory control program, and computer-readable recording medium having stored therein information processing program
US11163699B2 (en) 2020-03-30 2021-11-02 EMC IP Holding Company LLC Managing least recently used cache using reduced memory footprint sequence container
US11307935B2 (en) 2020-03-31 2022-04-19 EMC IP Holding Company LLC Management of volume snapshots in a data storage system
US11301162B2 (en) 2020-05-31 2022-04-12 EMC IP Holding Company LLC Balancing resiliency and performance by selective use of degraded writes and spare capacity in storage systems
US11262933B2 (en) 2020-07-01 2022-03-01 EMC IP Holding Company LLC Sharing memory resources between asynchronous replication workloads
US11636089B2 (en) 2020-08-03 2023-04-25 EMC IP Holding Company LLC Deferred reclamation of invalidated entries that are associated with a transaction log in a log-structured array
US10986174B1 (en) 2020-09-18 2021-04-20 EMC IP Holding Company LLC Automatic discovery and configuration of server nodes
US11487432B2 (en) 2020-10-08 2022-11-01 EMC IP Holding Company LLC Direct response to IO request in storage system with remote replication
US11687536B2 (en) 2020-10-14 2023-06-27 EMC IP Holding Company LLC Pipeline-based system for configuration checking and reporting associated with an information processing system
US11606429B2 (en) 2020-10-14 2023-03-14 EMC IP Holding Company LLC Direct response to IO request in storage system having an intermediary target apparatus
US11900131B2 (en) 2020-10-15 2024-02-13 EMC IP Holding Company LLC Dynamic remediation actions in response to configuration checks in an information processing system
US11416396B2 (en) 2020-10-22 2022-08-16 EMC IP Holding Company LLC Volume tiering in storage systems
US11573736B2 (en) 2020-11-30 2023-02-07 EMC IP Holding Company LLC Managing host connectivity to a data storage system
US11487460B2 (en) 2020-12-16 2022-11-01 EMC IP Holding Company LLC Deferred reclamation of invalidated entries associated with replication in a log-structured array
US11704160B2 (en) 2021-01-11 2023-07-18 EMC IP Holding Company LLC Redistribution of processing groups between server nodes based on hardware resource utilization
US11418589B1 (en) 2021-04-16 2022-08-16 EMC IP Holding Company LLC Object synchronization of server nodes in a network computing environment
US11809274B2 (en) 2021-04-21 2023-11-07 EMC IP Holding Company LLC Recovery from partial device error in data storage system
US11733874B2 (en) 2021-05-03 2023-08-22 EMC IP Holding Company LLC Managing replication journal in a distributed replication system
US11966294B2 (en) 2021-05-05 2024-04-23 EMC IP Holding Company LLC Journal barrier consistency determination
US11537312B2 (en) 2021-05-05 2022-12-27 EMC IP Holding Company LLC Maintaining replication consistency during distribution instance changes
US11675789B2 (en) 2021-06-29 2023-06-13 EMC IP Holding Company LLC Tracking utilization of data blocks in a storage system
US11650920B1 (en) 2021-10-27 2023-05-16 Dell Products L.P. Write cache management
US11550479B1 (en) 2021-10-27 2023-01-10 Dell Products L.P. Metadata management in storage systems
US11609854B1 (en) 2021-10-28 2023-03-21 Dell Products L.P. Utilizing checkpoints for resiliency of metadata in storage systems
US11630773B1 (en) 2022-01-05 2023-04-18 Dell Products L.P. Utilizing a persistent write cache as a redo log
US11789917B2 (en) 2022-01-25 2023-10-17 Dell Products L.P. Data deduplication in a storage system
US11842051B2 (en) 2022-01-25 2023-12-12 Dell Products L.P. Intelligent defragmentation in a storage system
US11868248B2 (en) 2022-02-25 2024-01-09 Dell Products L.P. Optimization for garbage collection in a storage system
US11704053B1 (en) 2022-04-06 2023-07-18 Dell Products L.P. Optimization for direct writes to raid stripes
US11960481B2 (en) 2022-06-29 2024-04-16 Dell Products L.P. Managing lookup operations of a metadata structure for a storage system
US11971825B2 (en) 2022-07-14 2024-04-30 Dell Products L.P. Managing granularity of a metadata structure for a storage system
US11921714B2 (en) 2022-07-19 2024-03-05 Dell Products L.P. Managing insert operations of a metadata structure for a storage system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4636946A (en) 1982-02-24 1987-01-13 International Business Machines Corporation Method and apparatus for grouping asynchronous recording operations
US5778442A (en) 1996-03-25 1998-07-07 Oracle Corporation Method and apparatus for buffering data in a computer system
US6078995A (en) 1996-12-26 2000-06-20 Micro Magic, Inc. Methods and apparatus for true least recently used (LRU) bit encoding for multi-way associative caches
US6141731A (en) 1998-08-19 2000-10-31 International Business Machines Corporation Method and system for managing data in cache using multiple data structures
US6393525B1 (en) 1999-05-18 2002-05-21 Intel Corporation Least recently used replacement method with protection
US6457102B1 (en) * 1999-11-05 2002-09-24 Emc Corporation Cache using multiple LRU's
GB2372589B (en) * 2001-02-21 2003-01-22 3Com Corp Memory aliasing in a processor system
US6961804B2 (en) * 2001-07-20 2005-11-01 International Business Machines Corporation Flexible techniques for associating cache memories with processors and main memory
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
US6615318B2 (en) * 2002-01-22 2003-09-02 International Business Machines Corporation Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US7096321B2 (en) * 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
US20070186048A1 (en) * 2004-03-24 2007-08-09 Matsushita Electric Industrial Co., Ltd. Cache memory and control method thereof
US7337273B2 (en) * 2004-03-31 2008-02-26 Microsoft Corporation Strategies for reading information from a mass storage medium using a cache memory
US20060143396A1 (en) * 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy

Also Published As

Publication number Publication date
CN101110061A (zh) 2008-01-23
JP2008027444A (ja) 2008-02-07
US20080021853A1 (en) 2008-01-24
US7908236B2 (en) 2011-03-15

Similar Documents

Publication Publication Date Title
JP5305621B2 (ja) 複数のデータ構造を用いてキャッシュ内のデータを管理するシステム
US10067883B2 (en) Using an access increment number to control a duration during which tracks remain in cache
US9921973B2 (en) Cache management of track removal in a cache for storage
US8930624B2 (en) Adaptive cache promotions in a two level caching system
US7783839B2 (en) Using different algorithms to destage different types of data from cache
US8775729B2 (en) Prefetching data tracks and parity data to use for destaging updated tracks
US8650354B2 (en) Prefetching tracks using multiple caches
US8825944B2 (en) Populating strides of tracks to demote from a first cache to a second cache
US9021201B2 (en) Demoting partial tracks from a first cache to a second cache
US8793436B2 (en) Cache management of tracks in a first cache and a second cache for a storage
US8825957B2 (en) Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache
US9471496B2 (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
EP2805241B1 (en) Populating a first stride of tracks from a first cache to write to a second stride in a second cache
US8825952B2 (en) Handling high priority requests in a sequential access storage device having a non-volatile storage cache
US8996789B2 (en) Handling high priority requests in a sequential access storage device having a non-volatile storage cache
US20210042241A1 (en) Using insertion points to determine locations in a cache list at which to indicate tracks in a shared cache accessed by a plurality of processors

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130401

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: 20130604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130625

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees