JP6099059B2 - ストレージのためのトラックのキャッシュ管理するプログラム、システム、および方法 - Google Patents

ストレージのためのトラックのキャッシュ管理するプログラム、システム、および方法 Download PDF

Info

Publication number
JP6099059B2
JP6099059B2 JP2014511989A JP2014511989A JP6099059B2 JP 6099059 B2 JP6099059 B2 JP 6099059B2 JP 2014511989 A JP2014511989 A JP 2014511989A JP 2014511989 A JP2014511989 A JP 2014511989A JP 6099059 B2 JP6099059 B2 JP 6099059B2
Authority
JP
Japan
Prior art keywords
cache
tracks
modified
track
unmodified
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
JP2014511989A
Other languages
English (en)
Other versions
JP2014519650A (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 JP2014519650A publication Critical patent/JP2014519650A/ja
Application granted granted Critical
Publication of JP6099059B2 publication Critical patent/JP6099059B2/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems

Landscapes

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

Description

本発明は、ストレージのための第1キャッシュおよび第2キャッシュにおけるトラックのキャッシュ管理のためのコンピュータ・プログラム製品(プログラム)、システム、および方法に関する。
キャッシュ管理システムは、読み出し操作および書き込み操作の結果として最近アクセスされたストレージ・デバイス内のトラックを、その要求されたトラックを記憶しているストレージ・デバイスよりも高速なアクセスの、メモリ等のストレージ・デバイスにバッファリングする。より高速なアクセスのキャッシュ・メモリ内のトラックに対する爾後の読み出し要求は、要求されたトラックをより低速のアクセスのストレージから返すよりも速い速度で返され、従って読み出し待ち時間を短縮する。キャッシュ管理システムは、ストレージ・デバイスに向けられた改変済みトラックがキャッシュ・メモリに書き込まれたとき、改変済みトラックがハード・ディスク・ドライブ等のストレージ・デバイスへ完全に書き込まれる前に、書き込み要求に対するコンプリートを返すこともできる。ストレージ・デバイスへの書き込み待ち時間は、通例、キャッシュ・メモリへの書き込みのための待ち時間より著しく長い。従って、キャッシュを使用すれば書き込み待ち時間も短縮される。
キャッシュ管理システムは、キャッシュに格納されている各トラックのために1つのエントリを有するリンク・リストを維持することができ、それは、ストレージ・デバイスへ書き込む前にキャッシュにバッファリングされた書き込みデータまたは読み出しデータを含むことができる。一般的に使用される最長時間未使用(Least Recently Used(LRU))キャッシュ手法では、キャッシュ内のトラックがアクセスされると、すなわちキャッシュ“ヒット”ならば、アクセスされるトラックのためのLRUリスト内のエントリは該リストの最短時間未使用(Most Recently Used(MRU))エンドへ移される。要求されたトラックがキャッシュ内に存在しなければ、すなわちキャッシュ・ミスならば、そのエントリが該リストのLRUエンドに存在するキャッシュ内のトラックが除去(あるいはストレージにデステージング)されることができ、ストレージからキャッシュへステージングされるトラック・データのためのエントリがLRUリストのMRUエンドに加えられる。このLRUキャッシュ手法では、より頻繁にアクセスされるトラックはキャッシュに残留しやすく、あまり頻繁にはアクセスされないデータは、新たにアクセスされるトラックのためにキャッシュ内に空間を作るために該リストのLRUエンドからより除去されやすいであろう。
LRUキャッシュ手法は、デステージング操作の数を最小にするためにすぐに再書き込みされる可能性の最も小さいトラックをデステージングするように時間的ローカリティを最適化しようとする、すなわち、デステージングされない書き込みがオーバーライトされるならば、そのオーバーライトされる書き込みのデステージングが回避され、それによりデータをキャッシュからディスクへ書き込む時間および労力を節約する。一方、空間的ローカリティを利用する仕方でデステージングを行いたいという希望もあり、そのことは、書き込まれるべき次の記憶場所に到達するためにストレージ・デバイス書き込みメカニズムおよび記憶媒体が動かされなければならない距離を最小にするために互いに最も近い記憶場所にデータが書き込まれるということを意味する。
時間的ローカリティおよび空間的ローカリティの両方を利用するための1つの手法はワイズ・オーダリング・フォー・ライツ(Wise Ordering for Writes(WOW))アルゴリズムである。WOWアルゴリズムは円形リンク・リストまたはクロックを使用し、該円形リンク・リストはキャッシュにバッファリングされている各書き込み要求について1つのエントリを有する。エントリは、該リンク・リストにおいて、空間的ローカリティの利益を利用するために関連する書き込み要求が向けられる記憶場所に応じて配列される。さらに、各エントリは、キャッシュ内の該記憶場所のための書き込みデータが最近更新されたか否かを示すビットを含む。エントリのための該ビットは、そのエントリのための書き込みデータが更新されるとセットされる。ポインタが、該円形リンク・リスト内の現在のエントリを指す。WOWアルゴリズムを使用するタスクは、ポインタによりアドレス指定されたエントリにアクセスする。キャッシュ内の該エントリのためのデータが最近更新されたことを該エントリのためのビットが示すならば、該ビットは、該書き込みデータが最近更新されていないことを示すようにセットされ、ポインタは、前に書き込まれた記憶場所の空間的近傍において次に最も近い記憶場所への書き込みデータを有するエントリが考慮されるように次のエントリを指すようにインクリメントされる。最後に書き込まれた記憶場所の空間的近傍において最も近くて、該エントリのための書き込みデータが最近更新されていないことをそのビットが示しているエントリが書き込みのために選択される。
このように、WOWアルゴリズムでは、最後にデステージングされた書き込み要求に空間的近傍において最も近い書き込まれるべき次のエントリが考慮されるべく選択されるので、空間的ローカリティが利用される。さらに、最近書き込まれたエントリは、ポインタがそのスキップされたエントリを考慮するべく回り戻ってくるまではスキップされるので、時間的ローカリティが利用される。
ディスク・ドライブは、書き込みトラックの線形位置および角度位置の両方を考慮するとともに、最小総サービス時間を決定するために現在の書き込みヘッド位置に関して両方を最適化するWOWアルゴリズムおよび他のアルゴリズムを実行することができる。このプロセスは“シークおよび回転最適化に基づくコマンド再配列(command re−ordering based on seek and rotational optimization)”と称される。ディスク・ドライブのロジック・ボードは、複数の書き込み要求を分析して、書き込まれるべきトラックの種々のシリンダおよび角度位置へシークするためにどれだけの時間がかかるか、およびヘッドの下で該データが回転するのを待つ間にどれだけの時間が経過するかの両方に基づいて、先にどれを行うかを決定する。
当該技術において、ストレージ・システムでキャッシュを使用する改善された手法に対するニーズが存在する。
ストレージのための第1キャッシュおよび第2キャッシュにおけるトラックのキャッシュ管理のためのコンピュータ・プログラム製品、システム、および方法が提供される。第1キャッシュは、入力/出力(Input/Output(I/O))要求に従う該ストレージ内の改変済みトラックおよび未改変トラックを維持する。改変済みトラックおよび未改変トラックは第1キャッシュからデモートされる。第1キャッシュからデモートされる改変済みトラックおよび未改変トラックは第2キャッシュへプロモートされる。第2キャッシュからデモートされる未改変トラックは廃棄される。ストレージ・デバイス上で近接する物理的位置に存在する第2キャッシュ内の改変済みトラック同士はグループ化され、それらのグループ化された改変済みトラックは第2キャッシュからストレージ・デバイスへデステージングされる。
コンピューティング環境の実施態様を示す。 第1キャッシュ管理情報の実施態様を示す。 第2キャッシュ管理情報の実施態様を示す。 第1キャッシュ制御ブロックの実施態様を示す。 第2キャッシュ制御ブロックの実施態様を示す。 空間的インデックス・エントリの実施態様を示す。 第1キャッシュから未改変トラックをデモートする操作の実施態様を示す。 改変済みトラックを第1キャッシュからデステージングする操作の実施態様を示す。 第1キャッシュにトラックを加える操作の実施態様を示す。 第2キャッシュへトラックをプロモートする操作の実施態様を示す。 第2キャッシュ内でスペースを解放する操作の実施態様を示す。 改変済みトラックを第2キャッシュからデステージングする操作の実施態様を示す。 読み出し要求に返すためにトラックに対する要求を処理する操作の実施態様を示す。
図1は、コンピューティング環境の実施態様を示す。複数のホスト2a、2b・・・2nは、ストレージ10内のボリューム8(例えば、ロジカル・ユニット・ナンバ、ロジカル・デバイス、ロジカル・サブシステムなど)に存するデータにアクセスするためにネットワーク6を介してストレージ・コントローラ4に入力/出力(I/O)要求を提出することができる。ストレージ・コントローラ4は、単一のもしくは複数のコアを有する1つ以上のプロセッサを含むプロセッサ・コンプレックス12と、第1キャッシュ14と、キャッシュ14内のトラックをバックアップする第1キャッシュ・バックアップ・デバイス16と、第2キャッシュ18とを含む。第1キャッシュ14および第2キャッシュ18は、ホスト2a、2b・・・2nとストレージ10との間で転送されるキャッシュ・データをキャッシュする。第1キャッシュ・バックアップ・デバイス16は、第1キャッシュ14内のトラックの不揮発性記憶を提供することができる。さらなる実施態様では、第1キャッシュ・バックアップ・デバイス16は、第1キャッシュ14のそれとは異なる電力境界上のクラスタまたはハードウェア内に置かれ得る。
ストレージ・コントローラ4は、ホスト2a、2b・・・2nとストレージ10との間で転送されるトラックの転送を管理するためのストレージ・マネージャ22と、第1キャッシュ14、第1キャッシュ・バックアップ・デバイス16および第2キャッシュ18内のホスト2a、2b・・・2nとストレージ10との間で転送されるデータを管理するキャッシュ・マネージャ24とを含むメモリ20を有する。トラックは、ボリューム、ロジカル・デバイスなどのような複数のトラックのより大きなグルーピングの一部であるトラック、ロジカル・ブロック・アドレス(Logical Block Address(LBA))などのような、ストレージ10において構成されているデータの任意の単位を含み得る。キャッシュ・マネージャ24は、第1キャッシュ14および第2キャッシュ18内の読み出し(未改変)トラックおよび書き込み(改変済み)トラックを管理するために第1キャッシュ管理情報26および第2キャッシュ管理情報28を維持する。第1キャッシュ・バックアップ・デバイス・インデックス30は、第1キャッシュ・バックアップ・デバイス16内の位置に対するトラック識別子のインデックスを提供する。
ストレージ・マネージャ22およびキャッシュ・マネージャ24は、メモリ20にロードされてプロセッサ・コンプレックス12により実行されるプログラム・コードとして図1に示されている。代わりに、該機能の幾つかまたは全部は、特定用途向け集積回路(Application Specific Integrated Circuits(ASIC))などの、ストレージ・コントローラ4内のハードウェア・デバイスで実行され得る。
第2キャッシュ18は、トラックを、トラックが受け取られた順に書き込まれるログ・ストラクチャード・アレイ(log structured array(LSA))32に格納することができ、従って第2キャッシュ18に書き込まれたトラックの時間的配列を提供する。LSAでは、該LSA内に既に存在するトラックの遅いほうのバージョンはLSA32の末尾に書き込まれる。代わりの実施態様では、第2キャッシュ18は、LSA以外のフォーマットでデータを記憶することができる。
一実施態様では、第1キャッシュ14はダイナミック・ランダム・アクセス・メモリ(Dynamic Random Access Memory(DRAM))などのランダム・アクセス・メモリ(Random Access Memory(RAM))を含むことができ、第2キャッシュ18はソリッド・ステート・デバイスなどのフラッシュ・メモリを含むことができ、ストレージ10はハード・ディスク・ドライブおよび磁気テープなどの1つ以上のシーケンシャル・アクセス・ストレージ・デバイスから構成される。ストレージ10は、単一のシーケンシャル・アクセス・ストレージ・デバイスを含むことができ、あるいは、ジャスト・ア・バンチ・オブ・ディスクス(Just a Bunch of Disks(JBOD))、ダイレクト・アクセス・ストレージ・デバイス(Direct Access Storage Device(DASD))、リダンダント・アレイ・オブ・インディペンデント・ディスクス(Redundant Array of Independent Disks(RAID))アレイ、仮想化デバイスなどの複数のストレージ・デバイスのアレイを含むことができる。一実施態様では、第1キャッシュ14は第2キャッシュ18より高速のアクセスのデバイスであり、第2キャッシュ18はストレージ10より高速のアクセスのデバイスである。さらに、第1キャッシュ14は第2キャッシュ18より大きな単位記憶当たりコスト(cost per unit of storage)を有することができ、第2キャッシュ18はストレージ10内のストレージ・デバイスより大きな単位記憶当たりコストを有することができる。
第1キャッシュ14は、メモリ20の一部であることができ、あるいはDRAMなどの別のメモリ・デバイスに実装されることができる。一実施態様では、第1キャッシュ・バックアップ・デバイス16は、たとえばバッテリー・バックアップされるランダム・アクセス・メモリ(RAM)、スタティックRAM(static RAM(SRAM))などの、不揮発性メモリのような不揮発性バックアップ・ストレージ(non−volatile backup storage(NVS))を含むことができる。
ネットワーク6は、ストレージ・エリア・ネットワーク(Storage Area Network(SAN))、ローカル・エリア・ネットワーク(Local Area Network(LAN))、ワイド・エリア・ネットワーク(Wide Area Network(WAN))、インターネット、およびイントラネットなどを含むことができる。
図2は、制御ブロック・ディレクトリ52内のブロックを制御するための第1キャッシュ14内のトラックのインデックスを提供するトラック・インデックス50と;第1キャッシュ14内の未改変シーケンシャル・トラックの時間的配列を提供する未改変シーケンシャルLRUリスト54と;第1キャッシュ14内の改変済みシーケンシャル・トラックおよび改変済みノンシーケンシャル・トラックの時間的配列を提供する改変済みLRUリスト56と;第1キャッシュ14内の未改変ノンシーケンシャル・トラックの時間的配列を提供する未改変ノンシーケンシャルLRUリスト58とを含む第1キャッシュ管理情報26の実施態様を示す。
或る実施態様では、第1キャッシュ・バックアップ・デバイス16が満杯であると判定すると、新たな改変済みトラックのために第1キャッシュ・バックアップ・デバイス16内に空間を作るために第1キャッシュ・バックアップ・デバイス16内の改変済みトラックのコピーが廃棄され得るように第1キャッシュ14から改変済みトラックをデステージングするために改変済みLRUリスト56が使用される。
図3は、制御ブロック・ディレクトリ72内のブロックを制御するための第2キャッシュ18内のトラックのインデックスを提供するトラック・インデックス70と;第2キャッシュ18内の未改変トラックの時間的配列を提供する未改変リスト74と;改変済みトラックが格納されているストレージ10内の物理的位置に基づいて第2キャッシュ18内の改変済みトラックの空間的配列を提供する空間的インデックス76とを含む第2キャッシュ管理情報28の実施態様を示す。
すべてのLRUリスト54、56、58、および74は、識別されたトラックが最後にアクセスされた時に応じて配列された第1キャッシュ14および第2キャッシュ18内のトラックのトラックIDを含むことができる。LRUリスト54、56、58、および74は、最も最近にアクセスされたトラックを示す最短時間未使用(most recently used(MRU))エンドと、最も古くに使用またはアクセスされたトラックを示すLRUエンドとを有する。キャッシュ14および18に加えられるトラックのトラックIDはLRUリストのMRUエンドに加えられ、キャッシュ14および18からデモートされるトラックはLRUエンドからアクセスされる。トラック・インデックス50および70および空間的インデックス76は、スキャッター・インデックス・テーブル(scatter index table(SIT))を含むことができる。キャッシュ14および18内のトラックの時間的配列および第2キャッシュ18内のトラックの空間的配列を提供するために代わりのタイプのデータ構造が使用され得る。
ノンシーケンシャル・トラックはオンライン・ライン・トランザクション・プロセッシング(Online Line Transaction Processing(OLTP))トラックを含むことができ、該トラックは、しばしば、完全にはランダムでなくて参照の或る程度のローカリティを有する、すなわち繰り返しアクセスされる確率を有する、小ブロック書き込みを含む。
図4は、制御ブロック・ディレクトリ52内の第1キャッシュ制御ブロック100エントリの実施態様であって、制御ブロック識別子(ID)102と、第1キャッシュ14内のトラックの物理的位置の第1キャッシュ位置104と、トラックが改変済みであるのか未改変であるのかを示す情報106と、トラックがシーケンシャル・アクセスであるのかノンシーケンシャル・アクセスであるのかを示す情報108とを含む。
図5は、第2キャッシュ制御ブロック・ディレクトリ72内の第2キャッシュ制御ブロック120エントリの実施態様であって、制御ブロック識別子(ID)122と、トラックがLSA32において位置するLSA位置124と、トラックが改変済みであるのか未改変であるのかを示す情報126とを含む。
図6は、第2キャッシュ18内のトラックのトラック識別子142と、ストレージ10においてトラックが格納されている、シリンダ、プラッタ、ブロック・アドレス、およびストレージ・デバイス識別子などの物理的位置144とを含む空間的インデックス・エントリ140を示す。
図7は、第1キャッシュ14から未改変トラックをデモートするためにキャッシュ・マネージャ24により実行される操作の実施態様を示す。デモート操作は、第1キャッシュ14内のスペースを解放すると決定したときに開始され得る。第1キャッシュ14内のスペースを解放するために第1キャッシュ14からトラックを除去するか否かを決定する操作を(ブロック200で)開始するとき、キャッシュ・マネージャ24は(ブロック202で)種々のタイプの未改変トラックに対する予想されるヒットに基づいてノンシーケンシャルな未改変トラックをデモートするか、それともシーケンシャルな未改変トラックをデモートするかを決定する。(ブロック204で)その決定が未改変シーケンシャル・トラックをデモートする決定であれば、キャッシュ・マネージャ24は(ブロック206で)、第2キャッシュ18へプロモートされない、デモートされるべき未改変シーケンシャル・トラックを未改変シーケンシャルLRUリスト54のLRUエンドから決定するために該未改変シーケンシャルLRUリスト54を使用する。(ブロック204で)未改変ノンシーケンシャル・トラックをデモートする決定が行われたならば、キャッシュ・マネージャは、デモートされるべき未改変ノンシーケンシャル・トラックを(ブロック208で)決定するために未改変ノンシーケンシャルLRUリスト58を使用する。該未改変ノンシーケンシャル・トラックは(ブロック210で)第2キャッシュ18へプロモートされる。
図8は、改変済みトラックを第1キャッシュ14からデステージングするためにキャッシュ・マネージャ24により実行される操作の実施態様を示す。キャッシュ・マネージャ24は、スケジュールされた操作の一部として定期的にトラックをデステージングすることができるとともに第1キャッシュ・バックアップ・デバイス16においてスペースが必要ならばデステージングの速度を高めることができる。改変済みトラックをデステージングする操作を(ブロック250で)開始するとき、キャッシュ・マネージャ24は、LRUリスト56のLRUエンドから、デステージングされるべき改変済みトラックを決定するために改変済みLRUリスト56を(ブロック252で)処理する。(ブロック254で)決定された改変済みトラックがシーケンシャルならば、キャッシュ・マネージャ24は、第2キャッシュ18をバイパスして、決定された改変済みシーケンシャル・トラックを(ブロック256で)ストレージ10に書き込む。(ブロック254で)改変済みトラックがノンシーケンシャルならば、キャッシュ・マネージャ24は決定された改変済みノンシーケンシャル・トラックを(ブロック258で)第2キャッシュ18へプロモートするとともに決定された改変済みトラックのコピーを(ブロック260で)第1キャッシュ・バックアップ・デバイス16から廃棄する。
図7および8の操作では、ノンシーケンシャル・トラックはデモートされるけれども第2キャッシュ18へプロモートされない。シーケンシャルな改変済み(書き込み)は、第2キャッシュをバイパスして、ストレージ10に直接書き込まれる。シーケンシャルな未改変トラック(読み出し)は廃棄されてどこへもコピーされず、第1キャッシュ14からデモートされる未改変ノンシーケンシャル・トラックは第2キャッシュ18へプロモートされる。
図9は、トラックを第1キャッシュ14に加える、すなわちプロモートするためにキャッシュ・マネージャ24により実行される操作の実施態様を示し、そのトラックは、ホスト2a、2b・・・2nからの書き込みまたは改変済みトラック、読み出し要求に従い、結果として第1キャッシュ14へ移動させられる第2キャッシュ18内のノンシーケンシャル・トラック、または、キャッシュ14内にも18内にも見出されなくてストレージ10から取り出される読み出し要求されたデータを含み得る。第1キャッシュ14に加えられるべきトラックを(ブロック300で)受け取ると、キャッシュ・マネージャ24は、第1キャッシュ14内の104位置と、該トラックが改変済み/未改変106であるかおよびシーケンシャル/ノンシーケンシャル108であるかとを示す、該加えられるべきトラックのための制御ブロック100(図4)を(ブロック301で)作成する。この制御ブロック100は、第1キャッシュ14の制御ブロック・ディレクトリ52に加えられる。キャッシュ・マネージャ24は、加えられるべきトラックのトラックIDと、制御ブロック・ディレクトリ52内の作成されたキャッシュ制御ブロック100へのインデックスとを有するエントリを第1キャッシュ・トラック・インデックス50に(ブロック302で)加える。加えられるべきトラックのトラック・タイプについてのエントリがLRUリスト54、56または58のMRUエンドに(ブロック304で)加えられる。(ブロック306で)加えられるべきトラックが改変済みノンシーケンシャル・トラックであれば、その加えられるべきトラックは(ブロック308で)第1キャッシュ・バックアップ・デバイス16にコピーもされ、その加えられたトラックのためのエントリが第1キャッシュ・バックアップ・デバイス・インデックス30に加えられる。(ブロック306で)加えられるべきトラックが未改変シーケンシャルであれば、制御は終了する。
図10は、第1キャッシュ14からデモートされるノンシーケンシャル・トラックを第2キャッシュ18へプロモートするためにキャッシュ・マネージャ24により実行される操作の実施態様を示す。(ブロック350で)トラックを第2キャッシュ18へプロモートする操作を開始するとき、キャッシュ・マネージャ24は、プロモートされるトラックを第2キャッシュ18内のLSA32に(ブロック352で)加えるとともに、LSA32内のトラック位置124と該トラックが改変済み/未改変126であるかとを示す該加えられるべきトラックのための制御ブロック120(図5)を(ブロック354で)作成する。プロモートされるトラックのトラックIDと、第2キャッシュ18のための制御ブロック・ディレクトリ72内の作成されたキャッシュ制御ブロック120へのインデックスとを有するエントリが第2キャッシュ・トラック・インデックス70に(ブロック356で)加えられる。(ブロック358の「いいえ」ブランチから)プロモートされるトラックが未改変データであれば、キャッシュ・マネージャ24は、該トラックIDをMRUエンドに加えることなどにより、プロモートされるトラックを(ブロック360で)未改変LRUリスト74のMRUエンドに示す。(ブロック358で)プロモートされるトラックが改変済みデータであるならば、キャッシュ・マネージャ24は、その改変済みのプロモートされるトラックを書き込むべきストレージ10上の物理的位置を(ブロック362で)決定するとともに、プロモートされるトラックのトラックID142と該プロモートされるトラックのストレージ10上の決定された物理的位置144とを示すエントリを空間的インデックス76に(ブロック364で)加える。
図11は、第2キャッシュ18に加えられるべき新しいトラック、すなわち第1キャッシュ14からデモートされるトラック、のために第2キャッシュ18内のスペースを解放するためにキャッシュ・マネージャ24により実行される操作の実施態様を示す。この操作を(ブロック400で)開始するとき、キャッシュ・マネージャ24は未改変LRUリスト74のLRUエンドから第2キャッシュ18内の未改変トラックを(ブロック402で)決定し、該決定された未改変トラックを(ブロック404で)無効にし、該無効にされた未改変トラックをストレージ10へデステージングすることなく、さらに該無効にされた未改変トラックを未改変LRUリスト74から除去する。
図12は、第2キャッシュ12内の改変済みトラックをストレージ10へデステージングするためにキャッシュ・マネージャ24により実行される操作の実施態様を示す。該デステージング操作を(ブロック420で)開始するとき、キャッシュ・マネージャ24は、位置配列された空間的インデックス76内の連続するエントリ140(図6)に存するトラックのグループなど、ストレージ・デバイス上で近接した物理的位置にあるグループ化されるべき第2キャッシュ18内の改変済みトラックを空間的インデックス76内でのそれらの順序に基づいて決定するために空間的インデックス76を(ブロック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キャッシュ14内に存在するか否かを判定するために第1キャッシュ・トラック・インデックス50を(ブロック454で)使用する。(ブロック454で)すべての要求されたトラックが第1キャッシュ14内に存在するわけでは無ければ、キャッシュ・マネージャ24は、要求されたトラックのうちの第1キャッシュ14内には存在しなくて第2キャッシュ18内に存在するトラックを判定するために第2キャッシュ・トラック・インデックス70を(ブロック456で)使用する。(ブロック458で)いずれかの要求されたトラックが第1キャッシュ14および第2キャッシュ18内に見出されなければ、キャッシュ・マネージャ24は、要求されたトラックのうちの第1キャッシュ14および第2キャッシュ18内に存在せずにストレージ10内に存在するトラックを第2キャッシュ・トラック・インデックス70から(ブロック460で)判定する。その後、キャッシュ・マネージャ24は、第2キャッシュ18およびストレージ10内の該判定されたトラックを第1キャッシュ14へ(ブロック462で)プロモートする。キャッシュ・マネージャ24は、読み出し要求に返すために、要求されたトラックを第1キャッシュ14から取り出すために第1キャッシュ・トラック・インデックス50を(ブロック464で)使用する。取り出されたトラックのためのエントリは、取り出されたトラックのためのエントリを含むLRUリスト54、56、58のMRUエンドへ(ブロック466で)移される。図13の操作では、キャッシュ14および18は要求されたトラックの最も最近の改変済みバージョンを有するので、キャッシュ・マネージャ24は要求されたトラックを最高レベルのキャッシュ14から取り出し、その後に、ストレージ10へ移行する前に先ず第2キャッシュ18から取り出す。その最も最近のバージョンは、先ず第1キャッシュ14内に見出され、もし第1キャッシュ14内に見出されなければ第2キャッシュ18内に見出され、その後、もしどちらのキャッシュ14、18にも見出されなければストレージ10内に見出される。
図13の操作では、キャッシュ14および18は要求されたトラックの最も最近の改変済みバージョンを有するので、キャッシュ・マネージャ24は要求されたトラックを最高レベルのキャッシュ14から取り出し、その後に、ストレージ10へ移行する前に先ず第2キャッシュ18から取り出す。その最も最近のバージョンは、先ず第1キャッシュ14内に見出され、もし第1キャッシュ14内に見出されなければ第2キャッシュ18内に見出され、その後、もしどちらのキャッシュ14、18にも見出されなければストレージ10内に見出される。
記載された実施態様は、最高速アクセスの第1キャッシュ14が最も高価なスペース、バイトあたりコスト、を有し、第1キャッシュよりは安価であるがストレージよりは高速である第2キャッシュがシステム内でキャッシュされるデータの量を増やすために使用され得るときにキャッシュ・スペースを増やすために主要なあるいは第1レベルのキャッシュとストレージとの間の第2レベルのキャッシュの使用を可能にするための技術を提供する。より高速なアクセスのキャッシュ記憶スペースを増やせば、要求されたデータがキャッシュ内にあって、より低速のアクセスのより安価なストレージから取り出す必要なくキャッシュから返され得るときに、キャッシュされたデータへのアクセスが改善される。さらに、記載された実施態様では、ストレージへのトラックの書き込みを最適化するためにデステージングされるトラックがストレージ内の近接するあるいは連続する物理的位置にトラックのグループをなして書き込まれるように、トラックは、第1キャッシュにおける時間的配列に基づいて第2キャッシュに加えられ、その後に、シーケンシャル・アクセス・ストレージにおける空間的物理的位置に基づいて第2キャッシュにおいてソートされる。
記載された操作は、ソフトウェア、ファームウェア、ハードウェア、あるいはそれらの任意の組み合わせを作るための標準的なプログラミングもしくはエンジニアリング技術またはその両方を用いて方法、装置またはコンピュータ・プログラム製品として実装され得る。従って、該実施態様の側面は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)あるいは本明細書において全く一般的に“回路”、“モジュール”もしくは“システム”と称され得るソフトウェア側面およびハードウェア側面を組み合わせた実施態様の形をとることができる。さらに、該実施態様の側面は、コンピュータ可読プログラム・コードがその上に具体化されている1つ以上のコンピュータ可読媒体において具体化されるコンピュータ・プログラム製品の形をとることができる。
1つ以上のコンピュータ可読媒体の任意の組み合わせが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、たとえば、それに限定はされないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、もしくはデバイス、または前記のものの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、次のもの:1つ以上のワイヤを有する電気的接続、ポータブルなコンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能でプログラマブルな読み出し専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、ポータブルなコンパクト・ディスク読み出し専用メモリ(compact disc read−only memory(CD−ROM))、光記憶装置、磁気記憶装置、あるいは前記のものの任意の適切な組み合わせ、を含む。この文書の文脈においては、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによりまたはこれらと関連して使用されるプログラムを包含または記憶できる任意の有形媒体であり得る。
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードがたとえばベースバンドにあるいは搬送波の一部としてその中に具体化されている伝播されるデータ信号を含み得る。そのような伝播される信号は、電磁、光、あるいはそれらの任意の適切な組み合わせを含むがこれらに限定はされない種々の形のうちのいずれをもとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなくて、命令実行システム、装置、またはデバイスによりまたはこれらと関連して用いられるプログラムを伝達、伝播、またはトランスポートすることのできる任意のコンピュータ可読媒体であり得る。
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、ワイヤライン、光ファイバ・ケーブル、RFなど、あるいは前記のものの任意の適切な組み合わせを含むがこれらに限定はされない任意の適切な媒体を用いて送信され得る。
本発明の側面のための操作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのようなオブジェクト指向プログラミング言語ならびに“C”プログラミング言語もしくは類似のプログラミング言語のような在来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書かれ得る。該プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で、実行することができる。後者のシナリオにおいては、リモート・コンピュータはローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されることができ、あるいは接続は(たとえば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータに対してなされることができる。
本発明の側面は、本発明の実施態様に従う方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方と関連して上で記述されている。該フローチャート図もしくはブロック図またはその両方の各ブロック、ならびに該フローチャート図もしくはブロック図またはその両方のブロックの組み合わせがコンピュータ・プログラム命令によって実現され得るということが理解されるであろう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、またはマシンを作るための他のプログラマブルなデータ処理装置のプロセッサに、該コンピュータもしくは他のプログラマブルなデータ処理装置の該プロセッサを介して実行する該命令が該フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて明示される機能/行為を実行するための手段を生すように、提供されることができる。
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が該フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて明示される機能/行為を実行する命令を含む製造物品を作るように特定の仕方で機能するようにコンピュータ、他のプログラマブルなデータ処理装置、または他のデバイスに命令することのできるコンピュータ可読媒体に格納されることもできる。
該コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルな装置上で実行する命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて明示される機能/行為を実行するためのプロセスを提供するようにコンピュータ実行されるプロセスを作るために一連の操作ステップを該コンピュータ、他のプログラマブルな装置または他のデバイス上で実行させるためにコンピュータ、他のプログラマブルなデータ処理装置、または他のデバイスにロードされることもできる。
“an embodiment”、“embodiment”、“embodiments”、“the embodiment”、“the embodiments”、“one or more embodiments”、“some embodiments”、および“one embodiment”という用語は、明示的に別様に特定されていなければ、“one or more (but not all) embodiments of the present invention(s)(1つまたは複数の本発明の1つ以上の(けれども全部ではない)実施態様)”を意味する。
“including”、“comprising”、“having”およびこれらのバリエーションは、明示的に別様に特定されていなければ、“including but not limited to(含むけれども限定はされない)”を意味する。
列挙されたアイテムのリスティングは、明示的に別様に特定されていなければ、該アイテムのうちのいずれかまたは全部が相互に排他的であることを意味しない。
“a”、“an”および“the”は、明示的に別様に特定されていなければ、“one or more(1つ以上)”を意味する。
互いに通信するデバイス同士は、明示的に別様に特定されていなければ、互いに連続的に通信していなくてもよい。さらに、互いに通信するデバイス同士は直接にあるいは1つ以上の媒介を通して間接的に通信することができる。
互いに通信する数個のコンポーネントを有する実施態様についての記述は、そのようなコンポーネントがすべて必要であることを意味しない。反対に、本発明の広範な可能な実施態様を示すために多様な任意選択のコンポーネントが記載されている。
さらに、プロセス・ステップ、方法ステップ、アルゴリズムなどが順次に記載されているかも知れないけれども、そのようなプロセス、方法およびアルゴリズムは代わりの順序で働くように構成されることができる。換言すれば、記載され得るステップのシーケンスまたは順序は、該ステップがその順序で実行されなければならないことを必ずしも示さない。本明細書に記載されているプロセスのステップは任意の実際的な順序で実行されることができる。さらに、幾つかのステップは同時に実行され得る。
本明細書において単一のデバイスまたは物品が記載されるとき、単一のデバイス/物品の代わりに2つ以上のデバイス/物品(それらが協働してもしなくても)が使用され得ることは明白であろう。同様に、本明細書において2つ以上のデバイスまたは物品が記載される場合(それらが協働してもしなくても)、その2つ以上のデバイスまたは物品の代わりに単一のデバイス/物品が使用され得ることあるいはその示された数のデバイスまたはプログラムの代わりに異なる数のデバイス/物品が使用され得ることは明白であろう。デバイスの機能もしくはフィーチャまたはその両方は、そのような機能/フィーチャを持っていると明示的に記載されてはいない1つ以上の他のデバイスによって代わりに具体化されることができる。従って、本発明の他の実施態様は、そのデバイス自体を含んでいなくてもよい。
図7〜図13に示されている操作は、一定の順序で起こる一定のイベントを示す。代わりの実施態様では一定の操作は異なる順序で実行され、改変されあるいは除去されることができる。さらに、ステップが上記のロジックに加えられ、なお記載された実施態様に従うことができる。さらに、本明細書に記載された操作は順次に起こることができ、あるいは一定の操作は並行して処理されることができる。さらに、操作は単一の処理装置によってまたは分散された処理装置によって行われることができる。

Claims (13)

  1. 第1キャッシュ、第2キャッシュ、およびストレージ・デバイスを含むキャッシュ・システムにおいてデータを管理するための方法であって、
    入力/出力(I/O)要求に従う前記ストレージ・デバイス内の改変済みトラックおよび未改変トラックを前記第1キャッシュにおいて維持するステップと、
    改変済みトラックおよび未改変トラックを前記第1キャッシュからデモートするステップと、
    前記第1キャッシュからデモートされた前記改変済みトラックおよび前記未改変トラックを前記第2キャッシュへプロモートするステップと、
    前記第2キャッシュからデモートされた未改変トラックを廃棄するステップと、
    前記ストレージ・デバイス上で近接する物理的位置に存在する改変済みトラックであって、前記第2キャッシュ内の当該改変済みトラックをグループ化するステップと、
    前記グループ化された改変済みトラックを前記第2キャッシュから前記ストレージ・デバイスへデステージングするステップと
    を含み、
    シーケンシャルな未改変トラックであるデモートされるべき前記未改変トラックを、前記デモートされるシーケンシャルな未改変トラックを前記第2キャッシュにも前記ストレージ・デバイスにも書き込まずに廃棄するステップをさらに含み、前記第1キャッシュからデモートされる未改変ノンシーケンシャル・トラックは前記第2キャッシュへプロモートされる、
    前記方法。
  2. 前記第1キャッシュは前記第2キャッシュより高速のアクセスのデバイスであり、
    前記第2キャッシュは前記ストレージ・デバイスより高速のアクセスのデバイスである、
    請求項1に記載の方法。
  3. 前記第1キャッシュはランダム・アクセス・メモリ(RAM)を含み、
    前記第2キャッシュはフラッシュ・デバイスを含み、及び
    前記ストレージ・デバイスはシーケンシャル書き込みデバイスを含む、
    請求項1に記載の方法。
  4. 前記第2キャッシュ内の前記改変済みトラックを前記ストレージ・デバイスにおけるそれらの物理的位置に基づく配列で示す空間的インデックスを維持するステップをさらに含み、
    前記空間的インデックスは、前記ストレージ・デバイス上で近接する物理的位置に存在するグループ化されるべき前記改変済みトラックを、前記空間的インデックスにおけるそれらの順序に基づいて決定するために使用される、
    請求項1に記載の方法。
  5. デモートされるべき前記第1キャッシュ内の改変済みトラックがシーケンシャルなトラックであるか否か判定するステップと、
    シーケンシャルであると判定されたデモートされるべき前記改変済みトラックを、前記第2キャッシュをバイパスして前記ストレージ・デバイスに書き込むステップと、
    ノンシーケンシャルであると判定されたデモートされるべき前記改変済みトラックを前記第2キャッシュへプロモートするステップと
    をさらに含む、請求項1に記載の方法。
  6. 前記第2キャッシュへプロモートされる前記第1キャッシュからデモートされる前記改変済みトラックおよび未改変トラックはオンライン・ライン・トランザクション・プロセッシング(OLTP)トラックを含む、請求項1に記載の方法。
  7. 第1キャッシュ、第2キャッシュ、およびストレージ・デバイスを含むキャッシュ・システムにおいてデータを管理するための方法であって、
    入力/出力(I/O)要求に従う前記ストレージ・デバイス内の改変済みトラックおよび未改変トラックを前記第1キャッシュにおいて維持するステップと、
    改変済みトラックおよび未改変トラックを前記第1キャッシュからデモートするステップと、
    前記第1キャッシュからデモートされた前記改変済みトラックおよび前記未改変トラックを前記第2キャッシュへプロモートするステップと、
    前記第2キャッシュからデモートされた未改変トラックを廃棄するステップと、
    前記ストレージ・デバイス上で近接する物理的位置に存在する改変済みトラックであって、前記第2キャッシュ内の当該改変済みトラックをグループ化するステップと、
    前記グループ化された改変済みトラックを前記第2キャッシュから前記ストレージ・デバイスへデステージングするステップと
    を含み、
    前記第1キャッシュ内の未改変ノンシーケンシャル・トラックを示す第1LRUリストを維持するステップと、
    前記第1キャッシュ内の未改変シーケンシャル・トラックを示す第2LRUリストを維持するステップと、
    前記第1キャッシュ内の未改変ノンシーケンシャル・トラックをデモートすることを決定するステップと、
    デモートされるべき前記未改変ノンシーケンシャル・トラックを決定するために前記第1LRUリストを使用するステップと、
    前記第1キャッシュ内の未改変シーケンシャル・トラックをデモートすることを決定するステップと、
    デモートされるべき前記未改変シーケンシャル・トラックを決定するために前記第2LRUリストを使用するステップと
    をさらに含む、前記方法。
  8. 第1キャッシュ、第2キャッシュ、およびストレージ・デバイスを含むキャッシュ・システムにおいてデータを管理するための方法であって、
    入力/出力(I/O)要求に従う前記ストレージ・デバイス内の改変済みトラックおよび未改変トラックを前記第1キャッシュにおいて維持するステップと、
    改変済みトラックおよび未改変トラックを前記第1キャッシュからデモートするステップと、
    前記第1キャッシュからデモートされた前記改変済みトラックおよび前記未改変トラックを前記第2キャッシュへプロモートするステップと、
    前記第2キャッシュからデモートされた未改変トラックを廃棄するステップと、
    前記ストレージ・デバイス上で近接する物理的位置に存在する改変済みトラックであって、前記第2キャッシュ内の当該改変済みトラックをグループ化するステップと、
    前記グループ化された改変済みトラックを前記第2キャッシュから前記ストレージ・デバイスへデステージングするステップと
    を含み、
    前記第2キャッシュ内の未改変トラックの最長時間未使用(LRU)リストを維持するステップと、
    スペースを解放するために前記第2キャッシュからトラックがデモートされる必要があると判定するステップと、
    前記第2キャッシュ内の未改変トラックの前記LRUリストから未改変トラックを決定するステップと、
    前記第2キャッシュからの前記決定された未改変トラックを無効にするステップと
    をさらに含む、前記方法。
  9. 第1キャッシュ、第2キャッシュ、およびストレージ・デバイスを含むキャッシュ・システムにおいてデータを管理するための方法であって、
    入力/出力(I/O)要求に従う前記ストレージ・デバイス内の改変済みトラックおよび未改変トラックを前記第1キャッシュにおいて維持するステップと、
    改変済みトラックおよび未改変トラックを前記第1キャッシュからデモートするステップと、
    前記第1キャッシュからデモートされた前記改変済みトラックおよび前記未改変トラックを前記第2キャッシュへプロモートするステップと、
    前記第2キャッシュからデモートされた未改変トラックを廃棄するステップと、
    前記ストレージ・デバイス上で近接する物理的位置に存在する改変済みトラックであって、前記第2キャッシュ内の当該改変済みトラックをグループ化するステップと、
    前記グループ化された改変済みトラックを前記第2キャッシュから前記ストレージ・デバイスへデステージングするステップと
    を含み、
    前記第1キャッシュからデモートされた改変済みトラックおよび未改変トラックを前記第2キャッシュにおいてログ・ストラクチャード・アレイ(LSA)に格納するステップと、
    前記第2キャッシュ内のトラックと、各トラックのために前記LSAにおける前記トラックの位置を示す前記トラックのための制御ブロックを指すポインタとを示す前記第2キャッシュのためのLSAインデックスを維持するステップと
    をさらに含む、前記方法。
  10. 前記第1キャッシュに加えられた改変済みトラックをキャッシュ・バックアップ・デバイスに書き込むステップと、
    前記第1キャッシュ内の改変済みトラックを示す第1キャッシュ改変済みLRUリストを維持するステップと、
    前記キャッシュ・バックアップ・デバイスからデータをデステージングすると決定するステップと、
    前記第1キャッシュ改変済みLRUリストが満杯であることに応答して前記第1キャッシュからデステージングされるべき改変済みトラックを決定するために前記第1キャッシュ改変済みLRUリストを使用するステップと、
    デモートされるべき前記決定された改変済みトラックのコピーであるトラックを前記キャッシュ・バックアップ・デバイスから廃棄するステップと
    をさらに含む、請求項1に記載の方法。
  11. 要求されたトラックのための読み出し要求を受け取るステップと、
    前記読み出し要求に返すために前記要求されたトラックのうちの前記第1キャッシュ内に存在するものを取り出すステップと、
    前記読み出し要求に返すために前記要求されたトラックのうちの前記第1キャッシュ内に見出されなくて前記第2キャッシュ内に存在するものを取り出すステップと、
    前記読み出し要求に返すために前記要求されたトラックのうちの前記第1キャッシュおよび第2キャッシュ内に見出されないものを前記ストレージ・デバイスから取り出すステップと、
    前記要求されたトラックのうちの前記第2キャッシュおよび前記ストレージ・デバイスから取り出されたものを前記第1キャッシュへプロモートするステップと
    をさらに含む、請求項1に記載の方法。
  12. ストレージ・デバイスと通信するシステムであって、
    第1キャッシュと、
    第2キャッシュと、
    プロセッサと、
    操作を行うために前記プロセッサによって実行されるコードを有するコンピュータ可読記憶媒体と
    を含み、
    前記操作は、請求項1〜11のいずれか一項に記載の方法の各ステップを含む、前記システム。
  13. 第1キャッシュ、第2キャッシュ、およびストレージ・デバイスを含むキャッシュ・システムにおいてデータを管理するためのコンピュータ・プログラムであって、コンピュータに請求項1〜11のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
JP2014511989A 2011-05-23 2012-05-22 ストレージのためのトラックのキャッシュ管理するプログラム、システム、および方法 Active JP6099059B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/113,974 US8793436B2 (en) 2011-05-23 2011-05-23 Cache management of tracks in a first cache and a second cache for a storage
US13/113,974 2011-05-23
PCT/IB2012/052563 WO2012160513A1 (en) 2011-05-23 2012-05-22 Cache management of tracks in a first cache and a second cache for a storage

Publications (2)

Publication Number Publication Date
JP2014519650A JP2014519650A (ja) 2014-08-14
JP6099059B2 true JP6099059B2 (ja) 2017-03-22

Family

ID=47216678

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014511989A Active JP6099059B2 (ja) 2011-05-23 2012-05-22 ストレージのためのトラックのキャッシュ管理するプログラム、システム、および方法

Country Status (6)

Country Link
US (2) US8793436B2 (ja)
JP (1) JP6099059B2 (ja)
CN (1) CN103562887B (ja)
DE (1) DE112012001808B4 (ja)
GB (1) GB2504911B (ja)
WO (1) WO2012160513A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280477B2 (en) * 2010-12-13 2016-03-08 Seagate Technology Llc Data storage management in a memory device
US9727747B1 (en) 2012-12-21 2017-08-08 Mobile Iron, Inc. Location and time based mobile app policies
JP6273678B2 (ja) * 2013-03-01 2018-02-07 日本電気株式会社 ストレージ装置
US9632945B2 (en) 2013-11-12 2017-04-25 International Business Machines Corporation Destage grouping for sequential fast write tracks
US9141486B2 (en) 2014-01-15 2015-09-22 Avago Technologies General Ip (Singapore) Pte Ltd Intelligent I/O cache rebuild in a storage controller
RU2660326C1 (ru) 2015-06-01 2018-07-05 Ниссан Мотор Ко., Лтд. Устройство управления генерированием мощности для гибридного транспортного средства
US9747041B2 (en) * 2015-12-23 2017-08-29 Intel Corporation Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device
US10417139B2 (en) * 2017-08-18 2019-09-17 International Business Machines Corporation Cache management based on types of I/O operations
US10521139B2 (en) 2017-12-14 2019-12-31 International Business Machines Corporation Copy source to target management in a data storage system
US11054994B2 (en) * 2017-12-14 2021-07-06 International Business Machines Corporation Copy source to target management in a data storage system
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
JP2020115275A (ja) * 2019-01-17 2020-07-30 富士通株式会社 情報処理装置およびプログラム

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464713A (en) 1981-08-17 1984-08-07 International Business Machines Corporation Method and apparatus for converting addresses of a backing store having addressable data storage devices for accessing a cache attached to the backing store
JPH05303528A (ja) * 1992-04-27 1993-11-16 Oki Electric Ind Co Ltd ライトバック式ディスクキャッシュ装置
US5418921A (en) * 1992-05-05 1995-05-23 International Business Machines Corporation Method and means for fast writing data to LRU cached based DASD arrays under diverse fault tolerant modes
US5991775A (en) 1992-09-23 1999-11-23 International Business Machines Corporation Method and system for dynamic cache allocation between record and track entries
US5437022A (en) * 1992-12-17 1995-07-25 International Business Machines Corporation Storage controller having additional cache memory and a means for recovering from failure and reconfiguring a control unit thereof in response thereto
US5636359A (en) 1994-06-20 1997-06-03 International Business Machines Corporation Performance enhancement system and method for a hierarchical data cache using a RAID parity scheme
JPH08115169A (ja) * 1994-10-14 1996-05-07 Hitachi Ltd ディスク制御装置
JPH08249218A (ja) * 1995-03-15 1996-09-27 Fujitsu Ltd ファイル制御装置及びデータ書き込み方法
US6108764A (en) 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6321240B1 (en) 1999-03-15 2001-11-20 Trishul M. Chilimbi Data structure partitioning with garbage collection to optimize cache utilization
US6460122B1 (en) 1999-03-31 2002-10-01 International Business Machine Corporation System, apparatus and method for multi-level cache in a multi-processor/multi-controller environment
JP2000285022A (ja) * 1999-03-31 2000-10-13 Fujitsu Ltd ディスク制御装置
US7610438B2 (en) 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7472222B2 (en) * 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory
US7885921B2 (en) 2004-11-18 2011-02-08 International Business Machines Corporation Managing atomic updates on metadata tracks in a storage system
US7698501B1 (en) 2005-04-29 2010-04-13 Netapp, Inc. System and method for utilizing sparse data containers in a striped volume set
US8504597B2 (en) 2005-09-09 2013-08-06 William M. Pitts Distributed file system consistency mechanism extension for enabling internet video broadcasting
US20070118695A1 (en) * 2005-11-18 2007-05-24 International Business Machines Corporation Decoupling storage controller cache read replacement from write retirement
US7650341B1 (en) 2005-12-23 2010-01-19 Hewlett-Packard Development Company, L.P. Data backup/recovery
US7702870B2 (en) 2006-01-19 2010-04-20 Network Appliance Inc. Method and apparatus for defragmentation and for detection of relocated blocks
US20080005520A1 (en) 2006-06-09 2008-01-03 Siegwart David K Locality with parallel hierarchical copying garbage collection
US7562203B2 (en) 2006-09-27 2009-07-14 Network Appliance, Inc. Storage defragmentation based on modified physical address and unmodified logical address
JP2008108145A (ja) 2006-10-26 2008-05-08 Hitachi Ltd 計算機システム及びこれを用いたデータの管理方法
JP5031341B2 (ja) 2006-11-30 2012-09-19 株式会社日立製作所 記憶システム及びデータ管理方法
US7721043B2 (en) 2007-01-08 2010-05-18 International Business Machines Corporation Managing write requests in cache directed to different storage groups
CN100501702C (zh) 2007-01-17 2009-06-17 晶天电子(深圳)有限公司 一种闪存卡及其缓存、恢复数据的方法
JP4900807B2 (ja) * 2007-03-06 2012-03-21 株式会社日立製作所 ストレージシステム及びデータ管理方法
US7793061B1 (en) 2007-06-29 2010-09-07 Emc Corporation Techniques for using flash-based memory as a write cache and a vault
JP2009075759A (ja) 2007-09-19 2009-04-09 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
CN101527162A (zh) 2008-03-07 2009-09-09 深圳市朗科科技股份有限公司 卡槽式闪存硬盘
US9088591B2 (en) 2008-04-28 2015-07-21 Vmware, Inc. Computer file system with path lookup tables
TWI476610B (zh) 2008-04-29 2015-03-11 Maxiscale Inc 同級間冗餘檔案伺服器系統及方法
US8255627B2 (en) 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
US8478945B2 (en) 2010-02-01 2013-07-02 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
CN101819509A (zh) 2010-04-19 2010-09-01 清华大学深圳研究生院 一种固态硬盘读写方法

Also Published As

Publication number Publication date
US8745332B2 (en) 2014-06-03
DE112012001808T5 (de) 2014-01-23
CN103562887A (zh) 2014-02-05
GB2504911B (en) 2014-06-25
US8793436B2 (en) 2014-07-29
DE112012001808B4 (de) 2018-12-13
US20120303864A1 (en) 2012-11-29
WO2012160513A1 (en) 2012-11-29
GB201321577D0 (en) 2014-01-22
CN103562887B (zh) 2016-11-09
US20120303872A1 (en) 2012-11-29
GB2504911A (en) 2014-02-12
JP2014519650A (ja) 2014-08-14

Similar Documents

Publication Publication Date Title
JP5943363B2 (ja) キャッシュを有するストレージ・システムにおけるデータのキャッシングを決定するプログラム、システム、および方法
JP6099059B2 (ja) ストレージのためのトラックのキャッシュ管理するプログラム、システム、および方法
US8677062B2 (en) Caching data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US8850106B2 (en) Populating strides of tracks to demote from a first cache to a second cache
US8650354B2 (en) Prefetching tracks using multiple caches
JP6113199B2 (ja) データを管理する方法、コンピュータ・プログラム、およびシステム
US8700854B2 (en) Managing unmodified tracks maintained in both a first cache and a second cache
US8775729B2 (en) Prefetching data tracks and parity data to use for destaging updated tracks
US8935477B2 (en) Managing caching of extents of tracks in a first cache, second cache and storage
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

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160404

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160404

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20160404

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160406

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160921

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20161101

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161101

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20161116

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

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170127

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20170127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170214

R150 Certificate of patent or registration of utility model

Ref document number: 6099059

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150