(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-18
(45)【発行日】2024-07-26
(54)【発明の名称】異種メモリ・タイプを使用したキャッシュの複製コピー
(51)【国際特許分類】
G06F 12/123 20160101AFI20240719BHJP
G06F 12/0893 20160101ALI20240719BHJP
G06F 12/122 20160101ALI20240719BHJP
【FI】
G06F12/123
G06F12/0893 107
G06F12/122
(21)【出願番号】P 2022527044
(86)(22)【出願日】2020-11-03
(86)【国際出願番号】 IB2020060304
(87)【国際公開番号】W WO2021094871
(87)【国際公開日】2021-05-20
【審査請求日】2023-04-24
(32)【優先日】2019-11-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】グプタ、ローケーシュ、モハン
(72)【発明者】
【氏名】ボーリック、マシュー
(72)【発明者】
【氏名】アンダーソン、カイラー
(72)【発明者】
【氏名】アシュ、ケヴィン
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2011-204060(JP,A)
【文献】米国特許出願公開第2017/0270045(US,A1)
【文献】特開2018-036711(JP,A)
【文献】特開2019-057343(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/08-12/128
(57)【特許請求の範囲】
【請求項1】
異種メモリ・タイプを含むキャッシュからデータをデモートするための方法であって、
プロセッサにより、データ要素について、データ要素がキャッシュ内で更新されるたびにインクリメントされる書込みアクセス回数を維持することであって、前記キャッシュが、高性能部および低性能部を含む、前記書込みアクセス回数を維持することと、
プロセッサにより、キャッシュ・デモーション・アルゴリズムに従って、前記高性能部から前記データ要素を削除することと、
プロセッサにより、前記データ要素が前記低性能部にも存在し、前記書込みアクセス回数が第1の閾値未満であるかどうかを判定し、そうである場合、前記データ要素を前記低性能部に残すことと、
プロセッサにより、前記データ要素が前記低性能部にも存在し、前記書込みアクセス回数が前記第1の閾値以上であるかどうかを判定し、そうである場合、前記低性能部から前記データ要素を削除することと
を含む、方法。
【請求項2】
プロセッサにより、前記データ要素を前記高性能部から削除する際に、前記データ要素が前記低性能部にも存在せず、前記データ要素に関連する書込みアクセス回数が前記第1の閾値未満であり、前記データ要素に関連する読出しアクセス回数が第2の閾値を超える場合、前記低性能部に前記データ要素を配置することをさらに含む、請求項1に記載の方法。
【請求項3】
前記データ要素が順次データ要素でない場合、前記データ要素を前記低性能部にのみ配置することをさらに含む、請求項2に記載の方法。
【請求項4】
前記データ要素がトラックである、請求項1に記載の方法。
【請求項5】
前記高性能部から前記データ要素を削除することが、前記高性能部が満杯であるときに前記高性能部から前記データ要素を削除することを含む、請求項1に記載の方法。
【請求項6】
前記高性能部が、ダイナミック・ランダム・アクセス・メモリ(DRAM)で構成され、前記低性能部が、ストレージ・クラス・メモリ(SCM)で構成される、請求項1に記載の方法。
【請求項7】
前記低性能部が、前記高性能部よりも大きい記憶容量を有する、請求項1に記載の方法。
【請求項8】
異種メモリ・タイプを含むキャッシュからデータをデモートするため
の、コンピュータ使用可能プログラム・コードが具現化された非一過性のコンピュータ可読記憶媒体
であって、前記コンピュータ使用可能プログラム・コードが、少なくとも1つのプロセッサによって実行されると、
データ要素について、データ要素がキャッシュ内で更新されるたびにインクリメントされる書込みアクセス回数を維持することであって、前記キャッシュが、高性能部および低性能部を含む、前記書込みアクセス回数を維持することと、
キャッシュ・デモーション・アルゴリズムに従って、前記高性能部から前記データ要素を削除することと、
前記データ要素が前記低性能部にも存在し、前記書込みアクセス回数が第1の閾値未満であるかどうかを判定し、そうである場合、前記データ要素を前記低性能部に残すことと、
前記データ要素が前記低性能部にも存在し、前記書込みアクセス回数が前記第1の閾値以上であるかどうかを判定し、そうである場合、前記低性能部から前記データ要素を削除することと
を実行するように構成される、コンピュータ
可読記憶媒体。
【請求項9】
前記コンピュータ使用可能プログラム・コードが、前記データ要素を前記高性能部から削除する際に、前記データ要素が前記低性能部にも存在せず、前記データ要素に関連する書込みアクセス回数が前記第1の閾値未満であり、前記データ要素に関連する読出しアクセス回数が第2の閾値を超える場合、前記低性能部に前記データ要素を配置するようにさらに構成される、請求項8に記載のコンピュータ
可読記憶媒体。
【請求項10】
前記コンピュータ使用可能プログラム・コードが、前記データ要素が順次データ要素でない場合、前記データ要素を前記低性能部にのみ配置するようにさらに構成される、請求項9に記載のコンピュータ
可読記憶媒体。
【請求項11】
前記データ要素がトラックである、請求項8に記載のコンピュータ
可読記憶媒体。
【請求項12】
前記高性能部から前記データ要素を削除することが、前記高性能部が満杯であるときに前記高性能部から前記データ要素を削除することを含む、請求項8に記載のコンピュータ
可読記憶媒体。
【請求項13】
前記高性能部が、ダイナミック・ランダム・アクセス・メモリ(DRAM)で構成され、前記低性能部が、ストレージ・クラス・メモリ(SCM)で構成される、請求項8に記載のコンピュータ
可読記憶媒体。
【請求項14】
前記低性能部が、前記高性能部よりも大きい記憶容量を有する、請求項8に記載のコンピュータ
可読記憶媒体。
【請求項15】
異種メモリ・タイプを含むキャッシュからデータをデモートするためのシステムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに動作可能に結合され、前記少なくとも1つのプロセッサ上で実行するための命令を記憶する少なくとも1つのメモリ・デバイスと
を含み、前記命令が、前記少なくとも1つのプロセッサに、
データ要素について、データ要素がキャッシュ内で更新されるたびにインクリメントされる書込みアクセス回数を維持することであって、前記キャッシュが、高性能部および低性能部を含む、前記書込みアクセス回数を維持することと、
キャッシュ・デモーション・アルゴリズムに従って、前記高性能部から前記データ要素を削除することと、
前記データ要素が前記低性能部にも存在し、前記書込みアクセス回数が第1の閾値未満であるかどうかを判定し、そうである場合、前記データ要素を前記低性能部に残すことと、
前記データ要素が前記低性能部にも存在し、前記書込みアクセス回数が前記第1の閾値以上であるかどうかを判定し、そうである場合、前記低性能部から前記データ要素を削除することと
を行わせる、システム。
【請求項16】
前記命令が、前記少なくとも1つのプロセッサに、前記データ要素を前記高性能部から削除する際に、前記データ要素が前記低性能部にも存在せず、前記データ要素に関連する書込みアクセス回数が前記第1の閾値未満であり、前記データ要素に関連する読出しアクセス回数が第2の閾値を超える場合、前記低性能部に前記データ要素を配置することをさらに行わせる、請求項15に記載のシステム。
【請求項17】
前記命令が、前記少なくとも1つのプロセッサに、前記データ要素が順次データ要素でない場合、前記データ要素を前記低性能部にのみ配置することをさらに行わせる、請求項16に記載のシステム。
【請求項18】
前記高性能部から前記データ要素を削除することが、前記高性能部が満杯であるときに前記高性能部から前記データ要素を削除することを含む、請求項15に記載のシステム。
【請求項19】
前記高性能部が、ダイナミック・ランダム・アクセス・メモリ(DRAM)で構成され、前記低性能部が、ストレージ・クラス・メモリ(SCM)で構成される、請求項15に記載のシステム。
【請求項20】
前記低性能部が、前記高性能部よりも大きい記憶容量を有する、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、異種メモリ・タイプで構成されたキャッシュを実装するためのシステムおよび方法に関する。
【背景技術】
【0002】
コンピューティングの分野において、「キャッシュ」とは、通常、最近アクセスされた、頻繁にアクセスされる、もしくは将来アクセスされる可能性が高いデータもしくは命令を記憶するために使用される小型の高速メモリまたはストレージ・デバイスを指す。キャッシュからの読出しまたはキャッシュへの書込みは、通常、他のメモリまたはストレージ・デバイスにアクセスするよりも(アクセス時間またはリソース使用率あるいはその両方の点で)安価である。データがキャッシュに記憶されると、データを再フェッチすることまたは再計算することあるいはその両方の代わりに、キャッシュにアクセスすることができ、時間とリソースの両方が節約される。
【0003】
キャッシュは、多くの場合、マルチ・レベル・キャッシュとして提供される。たとえば、キャッシング・システムは、「プライマリ」キャッシュと「セカンダリ」キャッシュの両方を含み得る。データを読み出す場合、コンピューティング・システムまたはデバイスは、最初にプライマリ・キャッシュにおいてデータを検索し、データがない場合はセカンダリ・キャッシュにおいてデータを検索する。データがどちらのキャッシュにもない場合、コンピューティング・システムまたはデバイスは、キャッシュの背後にあるディスク・ドライブまたはその他のバックエンド・ストレージ・デバイスからデータを取得し得る。データを書き込む場合、コンピューティング・システムまたはデバイスは、プライマリ・キャッシュにデータを書き込み得る。プライマリ・キャッシュにスペースを確保するために、このデータは、最終的にセカンダリ・キャッシュまたはストレージ・デバイスへデステージされ得る。
【0004】
フラッシュ・メモリおよび他のソリッド・ステート・メモリ・デバイスは、ダイナミック・ランダム・アクセス・メモリ(DRAM)キャッシュなどのより高価なメモリを使用したものよりもはるかに大きなストレージ容量を有するキャッシュを作成できる可能性がある。たとえば、不揮発性NANDフラッシュ・メモリの一種であるストレージ・クラス・メモリ(SCM)は、ソリッド・ステート・ドライブ(SSD)よりもはるかに高速なアクセス速度を提供する。SCMは、DRAMよりもはるかに安価であるが、DRAMよりもレイテンシが長くなる(ナノ秒と比較してマイクロ秒)。SCMはフラッシュ・メモリを使用してデータを記憶するので、SCMには、書込みサイクル制限およびデータ断片化の問題など、フラッシュ・メモリと同じ制限および欠陥がいくつかある。
【発明の概要】
【0005】
本発明は、現在の先端技術に対応して、具体的には、現在利用可能なシステムおよび方法によってまだ完全に解決されていない当技術分野の問題およびニーズに対応して開発された。したがって、異種メモリ・タイプを使用してキャッシュを実装するためのシステムおよび方法が開発された。本発明の特徴および利点は、以下の説明および添付の特許請求の範囲からより完全に明らかになるか、または以下に記載されるように本発明の実施によって理解され得る。
【0006】
上記に沿うような形で、異種メモリ・タイプを含むキャッシュからデータをデモートするための方法を開示する。方法は、キャッシュ内のデータ要素について、データ要素がキャッシュ内で更新されるたびにインクリメントされる書込みアクセス回数を維持する。キャッシュは、高性能部および低性能部を含む。方法は、キャッシュ・デモーション・アルゴリズムに従って、高性能部からデータ要素を削除する。データ要素が低性能部にも存在し、書込みアクセス回数が第1の閾値未満である場合、方法は、データ要素を低性能部に残す。データ要素が低性能部にも存在し、書込みアクセス回数が第1の閾値以上である場合、方法は、低性能部からデータ要素を削除する。
【0007】
本明細書では、対応するシステムおよびコンピュータ・プログラム製品も開示および特許請求されている。
【0008】
本発明の利点を容易に理解するために、上記で簡単に説明した本発明について、添付の図面に示す特定の実施形態を参照することによってより具体的に説明する。これらの図面が本発明の典型的な実施形態のみを描写しており、したがって本発明の範囲を限定すると見なされるべきではないとの理解の下に、添付の図面を使用することによって、本発明の実施形態についてさらなる特異性および詳細とともに説明および解説する。
【図面の簡単な説明】
【0009】
【
図1】本発明によるシステムおよび方法が実装され得るネットワーク環境の一例を示す高レベル・ブロック図である。
【
図2】
図1のネットワーク環境において使用するためのストレージ・システムの一例を示す高レベル・ブロック図である。
【
図3】高性能部(たとえば、DRAMキャッシュ)および低性能部(たとえば、SCMキャッシュ)を含むキャッシュを示す高レベル・ブロック図である。
【
図4】本発明によるキャッシュ管理モジュールを示す高レベル・ブロック図である。
【
図5】高性能部での読出しヒットに応答して実行され得る方法の一実施形態を示す流れ図である。
【
図6】低性能部での読出しヒットに応答して実行され得る方法の一実施形態を示す流れ図である。
【
図7】低性能部での読出しヒットに応答して実行され得る方法の代替の実施形態を示す流れ図である。
【
図8】読出しミスに応答して実行され得る方法の一実施形態を示す流れ図である。
【
図9】書込みに応答して実行され得る方法の一実施形態を示す流れ図である。
【
図10】データ要素が高性能部からデモートされるときに実行され得る方法の一実施形態を示す流れ図である。
【
図11】データ要素が低性能部からデモートされるときに実行され得る方法の一実施形態を示す流れ図である。
【
図12】低性能部での読出しヒットに応答して実行され得る方法の代替の実施形態を示す流れ図である。
【
図13】データ要素が高性能部からデモートされるときに実行され得る方法の代替の実施形態を示す流れ図である。
【発明を実施するための形態】
【0010】
本明細書の図に一般的に記載および図示されている本発明の構成要素は、多種多様な異なる構成で配置および設計され得ることが容易に理解されよう。したがって、図に示す本発明の実施形態の以下のより詳細な説明は、特許請求される本発明の範囲を限定することを意図するものではなく、本発明による現在企図される実施形態の特定の例を代表するものにすぎない。本実施形態は、図面を参照することによって最もよく理解され、全体を通して同様の部分は同様の数字で示されている。
【0011】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せとして具現化され得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0012】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造体などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(たとえば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの、一過性の信号自体であると解釈されるべきではない。
【0013】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体での記憶のために転送する。
【0014】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであり得る。
【0015】
コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータ上もしくはサーバ上で実行され得る。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るか、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して接続され得る。いくつかの実施形態では、本発明の態様を実行するために、たとえば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行し得る。
【0016】
本明細書において、本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
【0017】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであり得る。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用の態様を実施する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであり得る。
【0018】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであり得る。
【0019】
図1を参照すると、ネットワーク環境100の一例が示されている。ネットワーク環境100は、本発明によるシステムおよび方法が実装され得る環境の一例を示すために提示されている。ネットワーク環境100は、限定ではなく例として提示されている。実際、本明細書に開示するシステムおよび方法は、図示されているネットワーク環境100に加えて、多種多様な異なるネットワーク環境に適用可能であり得る。
【0020】
図示のように、ネットワーク環境100は、ネットワーク104によって相互接続された1つまたは複数のコンピュータ102、106を含む。ネットワーク104には、たとえば、ローカル・エリア・ネットワーク(LAN)104、ワイド・エリア・ネットワーク(WAN)104、インターネット104、イントラネット104などが含まれ得る。特定の実施形態において、コンピュータ102、106は、クライアント・コンピュータ102とサーバ・コンピュータ106(本明細書では「ホスト・システム」106とも呼ぶ)の両方を含み得る。一般に、クライアント・コンピュータ102は通信セッションを開始し、サーバ・コンピュータ106はクライアント・コンピュータ102からの要求を待つ。特定の実施形態において、コンピュータ102またはサーバ106あるいはその両方は、1つまたは複数の内部または外部のダイレクト・アタッチト・ストレージ・システム110a(たとえば、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、テープ・ドライブなどのアレイ)に接続し得る。これらのコンピュータ102、106、およびダイレクト・アタッチト・ストレージ・システム110aは、ATA、SATA、SCSI、SAS、ファイバ・チャネルなどのプロトコルを使用して通信し得る。
【0021】
ネットワーク環境100は、特定の実施形態において、ストレージ・エリア・ネットワーク(SAN)108またはLAN108(たとえば、ネットワーク・アタッチト・ストレージを使用する場合)などの、サーバ106の背後にあるストレージ・ネットワーク108を含み得る。このネットワーク108は、ハード・ディスク・ドライブまたはソリッド・ステート・ドライブのアレイ110b、テープ・ライブラリ110c、個々のハード・ディスク・ドライブ110dまたはソリッド・ステート・ドライブ110d、テープ・ドライブ110e、CD-ROMライブラリなどの1つまたは複数のストレージ・システムに、サーバ106を接続し得る。ストレージ・システム110にアクセスするために、ホスト・システム106は、ホスト・システム106上の1つまたは複数のポートからストレージ・システム110上の1つまたは複数のポートへの物理的接続を介して通信し得る。接続は、スイッチ、ファブリック、直接接続などを介した接続であり得る。特定の実施形態において、サーバ106およびストレージ・システム110は、ファイバ・チャネル(FC)などのネットワーキング標準を使用して通信し得る。
【0022】
図2を参照すると、ハード・ディスク・ドライブ204またはソリッド・ステート・ドライブ204あるいはその両方のアレイを含むストレージ・システム110の一実施形態が示されている。図示のように、ストレージ・システム110は、ストレージ・コントローラ200と、1つまたは複数のスイッチ202と、ハード・ディスク・ドライブ204またはソリッド・ステート・ドライブ204(フラッシュ・メモリベースのドライブ204など)などの1つまたは複数のストレージ・ドライブ204とを含む。ストレージ・コントローラ200は、1つまたは複数のホスト・システム106(たとえば、z/OS、zVMなどのオペレーティング・システムを実行するオープン・システムまたはメイン・フレーム・サーバあるいはその両方106)が1つまたは複数のストレージ・ドライブ204内のデータにアクセスすることを可能にし得る。
【0023】
選択された実施形態において、ストレージ・コントローラ200は、1つまたは複数のサーバ206を含む。ストレージ・コントローラ200は、ストレージ・コントローラ200をホスト・システム106およびストレージ・ドライブ204にそれぞれ接続するためのホスト・アダプタ208およびデバイス・アダプタ210も含み得る。複数のサーバ206a、206bは、接続されたホスト・システム106にとってデータが常に利用可能であることを保証するために冗長性を提供し得る。したがって、一方のサーバ206aに障害が発生した場合、他方のサーバ206bは、障害が発生したサーバ206aのI/O負荷を引き受けて、I/Oがホスト・システム106とストレージ・ドライブ204との間で継続できることを保証し得る。このプロセスは、「フェイルオーバ」と呼ばれることがある。
【0024】
選択された実施形態において、各サーバ206は、1つまたは複数のプロセッサ212およびメモリ214を含み得る。メモリ214は、揮発性メモリ(たとえば、RAM)および不揮発性メモリ(たとえば、ROM、EPROM、EEPROM、ハード・ディスク、フラッシュ・メモリなど)を含み得る。揮発性メモリおよび不揮発性メモリは、特定の実施形態において、プロセッサ212上で実行されてストレージ・ドライブ204内のデータにアクセスするために使用されるソフトウェア・モジュールを記憶し得る。これらのソフトウェア・モジュールは、ストレージ・ドライブ204内の論理ボリュームへのすべての読出し要求および書込み要求を管理し得る。
【0025】
選択された実施形態において、メモリ214は、DRAMキャッシュ218などのキャッシュ218を含む。ホスト・システム106(たとえば、オープン・システムまたはメイン・フレーム・サーバ106)が読出し動作を実行するときは常に、読出しを実行するサーバ206が、ストレージ・ドライブ204からデータをフェッチし、データが再び必要になった場合に備えてデータをそのキャッシュ218に保存し得る。ホスト・システム106によって再びデータが要求される場合、サーバ206は、ストレージ・ドライブ204からデータをフェッチする代わりに、キャッシュ218からデータをフェッチすることができ、時間とリソースの両方が節約される。同様に、ホスト・システム106が書込みを実行するとき、書込み要求を受信するサーバ106は、書込みをそのキャッシュ218に記憶し、後でストレージ・ドライブ204への書込みをデステージし得る。第1のサーバ206に障害が発生した場合に他方のサーバ206によって書込みが回復され得るように、書込みがキャッシュ218に記憶されるときに、書込みは、他方のサーバ206の不揮発性ストレージ(NVS)220にも記憶され得る。特定の実施形態において、NVS220は、他方のサーバ206内のバッテリ・バックアップ式メモリとして実装される。
【0026】
図2に示すものと同様のアーキテクチャを有するストレージ・システム110の一例は、IBM DS8000(TM)エンタープライズ・ストレージ・システムである。DS8000(TM)は、連続動作をサポートするように設計されたディスク・ストレージを提供する高性能、大容量のストレージ・コントローラである。それでもなお、本明細書に開示するシステムおよび方法は、IBM DS8000(TM)エンタープライズ・ストレージ・システム110による動作に限定されず、システム110に関連する製造業者、製品名、またはコンポーネントもしくはコンポーネント名に関係なく、任意の同等または類似のストレージ・システム110で動作し得る。さらに、本発明の1つまたは複数の実施形態から利益を得ることができるいかなるストレージ・システムも、本発明の範囲内にあると見なされる。したがって、IBM DS8000(TM)は例として提示されており、限定することを意図したものではない。
【0027】
図3を参照すると、前述のように、フラッシュ・メモリおよび他のソリッド・ステート・メモリ・デバイスは、DRAMキャッシュなどのより高価なメモリを使用するデバイスよりもはるかに大きなストレージ容量を有するキャッシュを作成できる可能性がある。たとえば、不揮発性NANDフラッシュ・メモリの一種であるストレージ・クラス・メモリ(SCM)は、ソリッド・ステート・ドライブ(SSD)よりもはるかに高速なアクセス速度を提供する。SCMは、DRAMよりもはるかに安価であるが、DRAMよりもレイテンシが長くなる(ナノ秒と比較してマイクロ秒)。SCMはフラッシュ・メモリを使用してデータを記憶し得るので、SCMには、書込みサイクル制限およびデータ断片化の問題など、フラッシュ・メモリと同じ制限および欠陥がいくつかある場合がある。はるかに大きなストレージ容量のキャッシュを作成できる可能性があるため、SCMなどのフラッシュ・メモリをキャッシュに効果的に組み込むためのシステムおよび方法が必要である。理想的には、そのようなシステムおよび方法は、書込みサイクル制限およびデータ断片化の問題など、フラッシュ・メモリの制限および欠陥を考慮に入れることになる。
【0028】
図3は、高性能部218aおよび低性能部218bを含む異種キャッシュ218(すなわち、異種メモリ・タイプで構成されたキャッシュ218)を示す高レベルのブロック図である。特定の実施形態において、高性能部218aは、DRAMメモリで構成され、低性能部218bはSCMメモリで構成されているが、どちらも、これらのタイプのメモリに限定されない。高性能部218aおよび低性能部218bを共に使用して、IBM DS8000(TM)エンタープライズ・ストレージ・システムなどのストレージ・システム110内にキャッシュ218を提供してもよい。低性能部218bを構成するメモリは、高性能部218aを構成するメモリよりも安価である可能性が高いので、低性能部218bは、高性能部218aよりも大きく、おそらくはるかに大きくてもよい。
【0029】
図示のように、高性能部218aは、キャッシュ・ディレクトリ300a、LRU(最近最も使用されていないもの)リスト302a、および統計304aに関連付けられ得る。キャッシュ・ディレクトリ300aは、どのデータ要素が高性能部218aに記憶されているか、それらがどこに記憶されているかを記録し得る。LRUリスト302aは、高性能部218a内のどのデータ要素が最近最も使用されていないかを決定するために使用され得る。統計304aは、高性能部218aに存在する各データ要素(たとえば、トラック)についての読出しアクセス回数306aおよび書込みアクセス回数308aを含み得る。読出しアクセス回数306aは、高性能部218a内でデータ要素が読み出されるたびにインクリメントされ得る。書込みアクセス回数308aは、高性能部218a内でデータ要素が修正されるたびにインクリメントされ得る。
【0030】
同様に、低性能部218bもまた、キャッシュ・ディレクトリ300b、LRUリスト302b、および統計304bを含み得る。キャッシュ・ディレクトリ300bは、どのデータ要素が低性能部218bに記憶されているか、それらがどこに記憶されているか記録し得る。LRUリスト302bは、低性能部218b内のどのデータ要素が最近最も使用されていないかを決定するために使用され得る。統計304bは、低性能部218b内の各データ要素(たとえば、トラック)についての読出しアクセス回数306bおよび書込みアクセス回数308bを含み得る。読出しアクセス回数306bは、低性能部218b内で対応するデータ要素が読み出されるたびにインクリメントされ得る。書込みアクセス回数308bは、低性能部218b内で対応するデータ要素が修正されるたびにインクリメントされ得る。
【0031】
図4を参照すると、特定の実施形態において、キャッシュ管理モジュール400は、
図3に示したものなどの異種キャッシュ218を管理するために使用され得る。このようなキャッシュ管理モジュール400は、ストレージ・コントローラ200内でホストされ得る。キャッシュ管理モジュール400は、様々な特徴および機能を提供するための様々なサブモジュールを含み得る。これらのモジュールは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装され得る。キャッシュ管理モジュール400および関連するサブモジュールは、限定ではなく例として提示されている。異なる実施形態では、より多いサブモジュールまたはより少ないサブモジュールが提供され得る。たとえば、一部のサブモジュールの機能を単一もしくは少数のサブモジュールに組み合わせてもよく、または単一のサブモジュールの機能をいくつかのサブモジュールにわたって分散させてもよい。
【0032】
図示のように、キャッシュ管理モジュール400は、統計更新モジュール402、読出しヒット・モジュール404、読出しミス・モジュール406、書込みモジュール408、およびデモーション・モジュール410のうちの1つまたは複数を含む。統計更新モジュール402は、異種キャッシュ218に関連する統計304を維持する。たとえば、異種キャッシュ218内でデータ要素が読み出されるたびに、統計更新モジュール402は、関連する読出しアクセス回数306を更新する。同様に、異種キャッシュ218内でデータ要素が更新されるたびに、統計更新モジュール402は、関連する書込みアクセス回数308を更新する。
【0033】
読出しヒット・モジュール404は、異種キャッシュ218内で読出しヒットが発生したときに様々なアクションを実行する。これは、高性能部218a内での読出しヒットまたは低性能部218b内での読出しヒットのいずれかを含み得る。読出しヒット・モジュール404によって実行され得るいくつかの方法500、600、700については、
図5から
図7に関連して説明する。対照的に、読出しミス・モジュール406は、異種キャッシュ218内で読出しミスが発生したときに様々なアクションを実行し得る。読出しミス・モジュール406によって実行され得る方法800の一実施形態については、
図8に関連して説明する。
【0034】
書込みモジュール408は、異種キャッシュ218内でデータ要素が更新されるときに様々なアクションを実行し得る。書込みモジュール408によって実行され得る方法900の一実施形態については、
図9に関連して説明する。対照的に、デモーション・モジュール410は、異種キャッシュ218内の記憶空間を空けるために、異種キャッシュ218からデータ要素をデモートすることに関連するアクションを実行し得る。デモーション・モジュール410によって実行され得る様々な方法1000、1100については、
図10および
図11に関連して説明する。
【0035】
図5を参照すると、異種キャッシュ218の高性能部218aにおける読出しヒットに応答して実行され得る方法500の一実施形態が示されている。図示のように、方法500は、高性能部218a内で読出しヒットが発生したかどうかを判定する(502)。すなわち、方法500は、読出しI/O要求に応答して、読出しI/O要求に関連するデータ要素が高性能部218a内で見つかったかどうかを判定する(502)。見つかった場合、方法500は、高性能部218aからデータ要素を取得し(504)、そのデータ要素を読出し要求の発信元に返す(504)。方法500は、読出しヒットに応答して、データ要素に関連する読出しアクセス回数306aをインクリメントする(506)。
【0036】
図6を参照すると、低性能部218bにおける読出しヒットに応答して実行され得る方法600の一実施形態が示されている。図示のように、方法600は、異種キャッシュ218の低性能部218b内で読出しヒットが発生したかどうかを判定する(602)。発生した場合、方法600は、読出し要求に関連するデータ要素を低性能部218bから取得し(604)、そのデータ要素を読出し要求の発信元に返す(604)。次いで、方法600は、データ要素に関連する読出しアクセス回数306bをインクリメントする(606)。
【0037】
方法600はまた、読出しヒットに応答して、データ要素を収容するのに十分であるスペースを高性能部218aに割り当てる(608)。特定の実施形態において、これは、高性能部218aから最近最も使用されていないデータ要素をデモートすることによって、高性能部218a内にスペースを空けることを含み得る。次いで、方法600は、読出し要求に関連するデータ要素を、低性能部218bから高性能部218aにコピーする(610)。次いで、低性能部218bからデータ要素が削除され得る(612)。これにより、高性能部218aにデータ要素の単一のコピーを残すことができる。
【0038】
図7を参照すると、低性能部218bにおける読出しヒットに応答して実行され得る方法700の代替の実施形態が示されている。この方法700は、
図6の方法600の代わりに実行され得る。ステップ702、704、706、708、710はそれぞれ、最後のステップ712を除いて、
図6に開示されたものと類似または同一である。ステップ712において、代替方法700は、データ要素に関連する読出しアクセス回数306bが、選択された閾値未満である場合にのみ、低性能部218bからデータ要素を削除する(712)。このステップ712は、データ要素が頻繁に読み出される場合、低性能部218bにデータ要素の第2のコピーを保存する。将来のある時点でデータ要素が高性能部218aからデモートされた場合でも、データ要素のコピーは依然として低性能部218bに存在することになる。これは、データ要素がデモートされるときに、データ要素を高性能部218aから低性能部218bにコピーする必要性を排除または低減し、これにより、プロセッサの使用率が低下する。
【0039】
図8を参照すると、読出しミスに応答して実行され得る方法800の一実施形態が示されている。読出しミスは、要求されたデータ要素が異種キャッシュ218の高性能部218aまたは低性能部218bのいずれかで見つからない場合に発生し得る。図示のように、ステップ802で読出しミスが発生した場合、方法800は、データ要素をバックエンド・ストレージ・ドライブ204から異種キャッシュ218の高性能部218aに持ち込む(804)。方法800は、この時点で、低性能部218bにデータ要素を配置しない(806)。
【0040】
図9を参照すると、異種キャッシュ218内のデータ要素を更新することに応答して実行され得る方法900の一実施形態が示されている。図示のように、方法900は、データ要素への書込みが要求されるかどうかを判定する(902)。要求される場合、方法900は、データ要素を異種キャッシュ218の高性能部218aに書き込む(904)。方法900はまた、前述のように冗長性の目的で、データ要素をNVS220に書き込む(906)。
【0041】
この時点で、方法900は、データ要素(またはデータ要素の前のバージョン)が低性能部218bに含まれているかどうかを判定する(908)。データ要素が低性能部218bに記憶されている場合、方法900は、データ要素に関連する統計304b(すなわち、読出しアクセス回数306bおよび書込みアクセス回数308b)を低性能部218bから高性能部218aにコピーする(910)。次いで、方法900は、低性能部218bからデータ要素を削除する(910)。
【0042】
図10を参照すると、データ要素が高性能部218aからデモートされる(すなわち、追い出される)ときに実行され得る方法1000の一実施形態が示されている。このようなデモーションは、高性能部218aに、追加のデータ要素を収容するためのスペースが必要な場合に発生し得る。図示のように、方法1000は、最初に、高性能部218aからデータをデモートする必要があるかどうかを判定する(1002)。必要である場合、方法1000は、高性能部218aに関連するLRUリスト302aを分析して、高性能部218aからの削除対象となる最近最も使用されていないデータ要素を決定する(1004)。次いで、方法1000は、高性能部218aからこのデータ要素を削除する(1004)。
【0043】
この時点で、方法1000は、高性能部218aから削除されたデータ要素が順次データであるかどうかを判定する(1006)。順次データである場合、順次データを低性能部218bに追加することは不利であるため、それ以上何も実行されない。データ要素が順次でない場合、方法1000は、データ要素に関連する読出しアクセス回数306aが指定された閾値よりも大きいかどうかを判定し(1008)、データ要素に関連する書込みアクセス回数308aが指定された閾値よりも小さいかどうかを判定する(1010)。これらの条件の両方が真である場合、方法1000は、高性能部218aからデモートされたデータ要素を低性能部218bに配置する(1012)。本質的に、データ要素への過度の書込みは低性能部218bに過度の摩耗をもたらす可能性があるので、方法1000は、データ要素が頻繁に読み出される(それにより、データ要素の将来の読出し性能が向上する)が、書き込まれる頻度が低い場合、データ要素を低性能部218bに配置する(1012)。
【0044】
図11を参照すると、データ要素が低性能部218bからデモートされる(すなわち、追い出される)ときに実行され得る方法1100の一実施形態が示されている。このようなデモーションは、低性能部218bにスペースが必要な場合に発生し得る。図示のように、方法1100は、最初に、低性能部218bからデータをデモートする必要があるかどうかを判定する(1102)。必要である場合、方法1100は、低性能部218bに関連するLRUリスト302bを分析して、低性能部218bからどのデータ要素が削除対象となるかを決定する(1103)。
【0045】
この時点で、方法1100は、(データ要素が頻繁に読み出されているかどうかを判定するために、)削除対象となるデータ要素の読出しアクセス回数306bが閾値よりも大きいかどうかを判定する(1104)。読出しアクセス回数306bが閾値を超える場合、方法1100は、データ要素を低性能部218bに残し(1106)、データ要素への参照をLRUリスト302bのMRU(最近最も使用されたもの)の端に移動する。言い換えれば、データ要素が、頻繁に読み出されると判定されており、低性能部218bに保持されることによって利益を得ることになるので、方法1100は、低性能部218bからデータ要素を削除しない。方法1100はまた、データ要素に関連する読出しアクセス回数306bをリセットする(たとえば、ゼロに設定する)(1108)。次いで、方法1100は、先頭(すなわち、ステップ1102)に戻り、低性能部218bからの削除対象となる次のデータ要素を分析し得る。
【0046】
それに対して、ステップ1104において、データ要素に関連する読出しアクセス回数306bが閾値を超えていない場合、方法1100は、低性能部218bからデータ要素を削除する(1110)。
【0047】
一般に
図12および
図13を参照すると、前述のように、
図5から
図11に示した方法は、一般に、異種キャッシュ218内のデータ要素の単一のコピーを維持するように構成される。すなわち、データ要素が高性能部218aに存在する場合、データ要素は一般に、低性能部218bに存在せず(または、そこから削除され)、逆も同様である。これにより、高性能部218aからデータ要素をデモートするときにデータ要素を高性能部218aから低性能部218bにコピーしなければならず、そのためプロセッサ使用率が上がる可能性はあるが、全体として最高のキャッシュ容量が提供される。したがって、キャッシュ容量とプロセッサ使用率との間のトレードオフが存在する。
【0048】
特定の実施形態において、
図5から
図11に示す方法は、高性能部218aと低性能部218bの両方においてデータ要素のコピーを大部分について維持するように修正され得る。これにより、全体的なキャッシュ・ストレージ容量が減少する可能性があるが、高性能部218aと低性能部218bとの間でデータ要素をコピーする必要性を低減することによって、プロセッサの使用率を有利に下げることができる。
【0049】
図12は、低性能部218bにおける読出しヒットに応答して実行され得る代替の方法1200を示す流れ図である。この方法1200は、データ要素の複製コピーが高性能部218aおよび低性能部218bで維持される環境において実行され得る。この方法1200は、単一のコピーのみが維持される環境で使用できる
図6で説明した方法600の代わりに使用されてもよい。
【0050】
図示のように、方法1200は、低性能部218b内で読出しヒットが発生したかどうかを判定する(1202)。発生した場合、方法1200は、読出し要求に関連するデータ要素を低性能部218bから取得し(1204)、そのデータ要素を読出し要求の発信元に返す(1204)。方法1200は、データ要素に関連する読出しアクセス回数306bをインクリメントする(1206)。
【0051】
方法1200は、読出しヒットに応答して、データ要素を収容するのに十分であるスペースを高性能部218aに割り当てる(1208)。次いで、方法1200は、読出し要求に関連するデータ要素を、低性能部218bから高性能部218aにコピーする(1210)。データ要素は、低性能部218bに残され得る(1212)。これにより、高性能部218aおよび低性能部218bにデータ要素の複製コピーが提供され得る。
【0052】
図13は、データ要素が高性能部218aからデモートされるときに実行され得る代替の方法1300を示す流れ図である。この方法1300はまた、データ要素の複製コピーが高性能部218aおよび低性能部218bにおいて維持される環境において実行され得る。この方法1300は、単一のコピーのみが維持される環境で使用できる
図10で説明した方法1000の代わりに使用されてもよい。
【0053】
図示のように、方法1300は、最初に、高性能部218aからデータをデモートする必要があるかどうかを判定する(1302)。必要である場合、方法1300は、高性能部218aに関連するLRUリスト302aを分析して、高性能部218aからどのデータ要素が削除対象となるかを決定する(1304)。次いで、方法1300は、高性能部218aからこのデータ要素を削除する(1304)。
【0054】
次いで、方法1300は、高性能部218aから削除されたデータ要素が低性能部218bにも存在するかどうかを判定する(1306)。存在する場合、方法1300は、データ要素に関連する書込みアクセス回数308bが閾値未満であるかどうかを判定する(1308)。本質的に、このステップ1308は、データ要素が頻繁に更新されているかどうかを判定する。データ要素が頻繁に更新されていない場合(すなわち、データ要素の書込みアクセス回数308bが閾値未満である場合)、データ要素は低性能部218bに過度の摩耗を与えないので、データ要素は低性能部218bに残される(1310)。それに対して、データ要素が頻繁に更新されている場合(すなわち、データ要素の書込みアクセス回数308bが閾値を超える場合)、方法1300は、低性能部218bからデータ要素を削除する(1312)。
【0055】
ステップ1306において、低性能部218bにデータ要素がない場合、方法1300は、高性能部218aから削除されたデータ要素が順次データであるかどうかを判定する(1314)。順次データである場合、データ要素を低性能部218bに追加することは有利ではないので、何も変更されない。データ要素が順次でない場合、方法1300は、データ要素に関連する読出しアクセス回数306bが指定された閾値よりも大きいかどうかを判定し(1316)、データ要素に関連する書込みアクセス回数308bが指定された閾値よりも小さいかどうかを判定する(1318)。閾値よりも小さい場合、方法1300は、高性能部218aからデモートされたデータ要素を低性能部218bに配置する(1320)。本質的に、書込みサイクル制限を有するメモリ・タイプ(たとえば、SCMなど)に低性能部218bが実装されている場合、過度の書込みが低性能部218bに過度の摩耗をもたらす可能性があるので、方法1300は、データ要素が頻繁に読み出される(それにより、データ要素の将来の読出し性能が向上する)が、頻繁には更新されない場合、デモートされたデータ要素を低性能部218bに配置する(1320)。
【0056】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、またはコードの一部を表すことがある。いくつかの代替の実装形態では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われ得ることにも留意すべきである。たとえば、連続して示されている2つのブロックは、実際には、関与する機能に応じて、実質的に同時に実行されてもよく、またはそれらのブロックは、場合によっては逆の順序で実行されてもよい。他の実装形態は、所望の機能を達成するために、開示するステップのすべてが必要というわけではない場合がある。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは作用を実行する専用ハードウェア・ベースのシステム、または専用ハードウェアとコンピュータ命令との組合せによって実装され得ることにも留意されたい。