(57)【要約】【課題】リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行うキャッシュ管理システムを提供する。【解決手段】キャッシュ管理システムは、リモートサーバのデータロケーションに格納されたデータアイテムにアクセスするように構成される少なくとも１つのクライアントからリクエストを受け取り、データロケーションが少なくとも１つのクライアントによってアクセスされる頻度に基づき、データアイテムのポピュラリティを決定する。次に、キャッシュ管理システムは、頻度に基づきデータアイテムのリース期間を決定し、リース期間をデータロケーションに割り当てる。【選択図】図３
2017076390.tif 000002
【特許請求の範囲】
【請求項１】
リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行うように構成されるキャッシュ管理システムであって、
方法を実行するように構成されるプロセッサを含み、
前記方法は、
リモートサーバのデータロケーションに格納されたデータアイテムにアクセスするように構成される少なくとも１つのクライアントから要求を受け取るステップと、
前記データロケーションが前記少なくとも１つのクライアントによってアクセスされる頻度に基づき、前記データアイテムのポピュラリティを決定するステップであって、前記データアイテムのポピュラリティは、アトミック・フェッチ／アッド操作が実行されることで決定され、前記アトミック・フェッチ／アッド操作は前記リモートサーバに格納された頻度データロケーションを前記頻度を示すアクセス頻度データを用いて更新する、前記決定するステップと、
前記頻度に基づき前記データアイテムのリース期間を計算し、前記リース期間を前記データロケーションに割り当てるステップと、を含む、キャッシュ管理システム。
【請求項２】
前記アトミック・フェッチ／アッド操作を実行するために、前記少なくとも１つのクライアントは、ＲＤＭＡリモートポインタを使って前記リモートサーバの前記データロケーションにアクセスする、
請求項１に記載のキャッシュ管理システム。
【請求項３】
前記データアイテムは、前記少なくとも１つのクライアント上で実行されるアプリケーションに必要なデータ値であり、
前記リモートサーバのキャッシュメモリは、前記データロケーションと、当該データロケーションに対応付けられた前記頻度データロケーションと、を含む、
請求項１に記載のキャッシュ管理システム。
【請求項４】
前記少なくとも１つのクライアントは、前記アトミック・フェッチ／アッド操作により、前記頻度データロケーションの前記アクセス頻度データの更新に加えて、前記データロケーションの前記データアイテムの読取を行う、
請求項１に記載のキャッシュ管理システム。
【請求項５】
前記頻度は、第１の期間中の第１の頻度と、当該第１の期間に続く第２の期間中の第２の頻度との間の頻度差に基づく、請求項１に記載のキャッシュ管理システム。
【請求項６】
前記方法は、前記頻度差の変化に基づき、前記リース期間を動的に調整するステップをさらに含む、請求項５に記載のキャッシュ管理システム。
【請求項７】
前記頻度差の変化を示すアクセス頻度率が増加している場合前記データアイテムのリース期間が長く割り当てられ、前記アクセス頻度率が減少している場合前記データアイテムのリース期間が短く割り当てられる、請求項６に記載のキャッシュ管理システム。
【請求項８】
前記方法は、前記キャッシュ管理システムをリセットするために、エラーイベントに応じて前記頻度データロケーションから前記頻度を示すアクセス頻度データを削除するステップをさらに含む、請求項１に記載のキャッシュ管理システム。
【請求項９】
前記方法は、前記リモートサーバが前記データロケーションを再利用するように、前記リース期間の終了に応じて前記データアイテムを削除するステップをさらに含む、請求項１に記載のキャッシュ管理システム。
【請求項１０】
リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行う方法であって、
リモートサーバのデータロケーションに格納されたデータアイテムにアクセスするように構成される少なくとも１つのクライアントから要求を受け取るステップと、
前記データロケーションが前記少なくとも１つのクライアントによってアクセスされる頻度に基づき、前記データアイテムのポピュラリティを決定するステップと、
前記頻度に基づき前記データアイテムのリース期間を計算し、前記リース期間を前記データロケーションに割り当てるステップとを含む、方法。
【請求項１１】
請求項１乃至９の何れか一項に記載のキャッシュ管理システムのプロセッサにより実行される各ステップを含む方法。
【請求項１２】
リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行うためのコンピュータ・プログラムであって、
プロセッサに、
データロケーションに格納されたデータアイテムにアクセスするように構成される少なくとも１つのクライアントから要求を受け取るステップ、
前記データロケーションが前記少なくとも１つのクライアントによってアクセスされる頻度に基づき、前記データアイテムのポピュラリティを決定するステップであって、前記データアイテムのポピュラリティは、アトミック・フェッチ／アッド操作が実行されることで決定され、前記アトミック・フェッチ／アッド操作は前記リモートサーバに格納された頻度データロケーションを前記頻度を示すアクセス頻度データを用いて更新する、前記決定するステップ、
前記頻度に基づき前記データアイテムのリース期間を計算し、前記リース期間を前記データロケーションに割り当てるステップ、
を実行させるためのコンピュータ・プログラム。
【請求項１３】
請求項１乃至９の何れか一項に記載のキャッシュ管理システムのプロセッサにより実行される各ステップを、当該プロセッサに実行させるためのコンピュータ・プログラム。
【請求項１４】
リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行うように構成されるキャッシュ管理システムであって、
データアイテムを格納するように構成される少なくとも１つのデータロケーションを含むサーバと、
前記サーバからリモートに位置する少なくとも１つのクライアントであって、ＲＤＭＡリモートポインタを使用して、前記少なくとも１つのデータロケーションにアクセスするように構成される、前記少なくとも１つのクライアントとを含み、
前記サーバは、前記少なくとも１つのデータロケーションが前記少なくとも１つのクライアントによってアクセスされる頻度に基づき、前記データアイテムのポピュラリティを決定し、前記頻度に基づき前記データアイテムのリース期間を計算し、前記リース期間を前記少なくとも１つのデータロケーションに割り当てる、キャッシュ管理システム。
【請求項１５】
前記サーバは、頻度データロケーションをさらに含み、
前記少なくとも１つのクライアントは、前記頻度データロケーションを、アトミック・フェッチ／アッド操作により前記頻度を示すアクセス頻度データを用いて更新する、請求項１４に記載のキャッシュ管理システム。
【請求項１６】
前記頻度は、第１の期間中の第１の頻度と、当該第１の期間に続く第２の期間中の第２の頻度との間の頻度差に基づくものであり、
前記クライアントは、前記頻度差をしきい値と比較し、前記頻度差が前記しきい値を超えるのに応じて、前記頻度データロケーションに格納された現在のアクセス頻度データを、前記頻度差を用いてインクリメントまたはデクリメントする、請求項１５に記載のキャッシュ管理システム。
【請求項１７】
前記サーバは、前記キャッシュ管理システムのエラーイベントを決定し、前記エラーイベントに応じて、少なくとも１つのリカバリ操作を実行し、
前記リカバリ操作は、
前記少なくとも１つのクライアントに前記頻度データロケーションの更新を中止するように求める第１の信号を出力することと、
前記頻度データロケーションから前記アクセス頻度データを削除することと、
前記頻度データロケーションを更新するように前記少なくとも１つのクライアントを元に戻す第２の信号を出力することとを含む、請求項１５に記載のキャッシュ管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にキャッシュ管理に関し、より詳細にはリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ：Remote Direct Memory Access）データ・ストアに関する。
【背景技術】
【０００２】
ＲＤＭＡは、データ計算技法であり、それによってホスト・コンピュータのプロセッサが読み取り要求を処理する必要がなく、データがホスト・コンピュータのメモリから直接フェッチされて、クライアントのメモリ中に直接入れられる。このように、ＲＤＭＡは、ホスト・コンピュータのオペレーティング・システムを迂回することを可能にし、ホスト・コンピュータのメモリ中への中間データのコピーを回避する。その結果、ＲＤＭＡは、ホスト・コンピュータのプロセッサに対する大容量のデータ転送のための負荷を著しく減少させ、少ない待ち時間で高スループットをもたらす。
【０００３】
キャッシュのリソース再利用（resource reclamation）は、通常、もう関係がなくなったキー／値アイテムを追い出す（evicting）またはパージすることによって達成される。キャッシュに格納されたキー／値アイテムの関連性は、特定のキー／値アイテムがアクセスされる頻度率に基づき、決定することができる。しかし、キャッシュ・データ記憶に関するＲＤＭＡから生じる１つの結果は、ホスト・コンピュータがクライアントによって行われたアクセスに気付かないようにされることである。それゆえ、ホスト・コンピュータが、キャッシュに格納されたデータアイテムのそれぞれがどれぐらいの頻度でアクセスされるのかを追跡することができない。この情報を欠いていることは、従来のキャッシュ管理アルゴリズム、たとえばＬＲＵ、ＣＬＯＣＫが使用された場合、ホスト・コンピュータがキャッシュからデータアイテムを不要に追い出すことに繋がる恐れがある。すなわち、ホスト・コンピュータは、１つまたは複数のクライアントがキャッシュ中の１つまたは複数の特定のキー／値アイテムをフェッチするように求める要求を受け取る頻度率に気付かない恐れがある。したがって、ホスト・コンピュータは、キャッシュに格納されたキー／値アイテムに対する適切なリース期間を適切に決定することができない恐れがある。その結果、リース期間は、不適切に決定される恐れ、すなわち短すぎる、または長すぎる恐れがある。この情報の欠落を補償するために、いくつかの解決策は、コンピュータにすべてのキャッシュ・データ・アクセスをホスト・コンピュータに通知するように命令する。しかし、このアプローチは、ホスト・コンピュータが処理する必要がある大量のメッセージを発生させて、ＲＤＭＡのパフォーマンス利点を著しく低下させる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の課題は、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行うキャッシュ管理システム、方法、およびコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【０００５】
非限定の実施形態によれば、キャッシュ管理システムは、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行う。キャッシュ管理システムは、リモートサーバのデータロケーションに格納されたデータアイテムにアクセスするように構成される少なくとも１つのクライアントから要求を受け取り、データロケーションが少なくとも１つのクライアントによってアクセスされる頻度に基づき、データアイテムのポピュラリティを決定する。システムは、頻度に基づきデータアイテムのリース期間を決定し、リース期間をデータロケーションに割り当てるようにさらに構成される。
【０００６】
別の非限定の実施形態によれば、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行う方法は、リモートサーバのデータロケーションに格納されたデータアイテムにアクセスするように構成される少なくとも１つのクライアントから要求を受け取るステップと、データロケーションが少なくとも１つのクライアントによってアクセスされる頻度に基づき、データアイテムのポピュラリティを決定するステップとを含む。方法は、頻度に基づきデータアイテムのリース期間を計算し、リース期間をデータロケーションに割り当てるステップをさらに含む。
【０００７】
また別の非限定の実施形態によれば、コンピュータ・プログラム製品は、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行う。コンピュータ・プログラム製品は、プロセッサに、データロケーションに格納されたデータアイテムにアクセスするように構成される少なくとも１つのクライアントから要求を受け取るステップ、データロケーションが少なくとも１つのクライアントによってアクセスされる頻度に基づき、データアイテムのポピュラリティを決定するステップ、頻度に基づきデータアイテムのリース期間を計算し、リース期間をデータロケーションに割り当てるステップを含む。
【０００８】
また別の非限定の実施形態によれば、キャッシュ管理システムは、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）においてキャッシュ管理を行うように構成される。キャッシュ管理システムは、データアイテムを格納するように構成される少なくとも１つのデータロケーションを含むサーバと、サーバからリモートに位置する少なくとも１つのクライアントとを含む。少なくとも１つのクライアントは、ＲＤＭＡリモートポインタを使用して、データロケーションにアクセスするように構成される。サーバは、データロケーションが少なくとも１つのクライアントによってアクセスされる頻度に基づき、データアイテムのポピュラリティを決定し、頻度に基づきデータアイテムのリース期間を計算し、リース期間をデータロケーションに割り当てる。
【０００９】
追加の特徴は、様々な非限定の実施形態の技法を通じて実現される。他の実施形態を本明細書に詳細に述べ、それは、特許請求する発明の一部と見なされる。特徴を備える本発明をより良く理解してもらうために、本明細書および図面を参照されたい。
【図面の簡単な説明】
【００１０】
【図１】非限定の実施形態による、ＲＤＭＡキー／値データ・ストアのキャッシュ管理を行うように構成されるキャッシュ管理システムを例示するブロック図である。
【図２】非限定の実施形態による、ＲＤＭＡキー／値データ・ストアのキャッシュ管理を行うように構成されるキャッシュ管理システムを実現する計算システムを例示するブロック図である。
【図３】非限定の実施形態により例示される、ＲＤＭＡリモートポインタを使用してＲＤＭＡキー／値データ・ストアのキャッシュ管理を行う、キャッシュ管理システムを例示するブロック図である。
【図４】非限定の実施形態による、サーバに格納されたデータロケーションに対応するアクセス頻度率を更新するためにアトミック・フェッチ／アッド操作を実行するクライアントを例示するブロック図である。
【図５】非限定の実施形態による、ＲＤＭＡキー／値データ・ストアのキャッシュ管理を行うように構成されるキャッシュ管理システム中に含まれるクライアントを動作させる方法を例示するフロー図である。
【図６】非限定の実施形態による、ＲＤＭＡキー／値データ・ストアのキャッシュ管理を行うように構成されるキャッシュ管理システム中に含まれるサーバを動作させる方法を例示するフロー図である。
【発明を実施するための形態】
【００１１】
本明細書に述べる様々な実施形態は、アトミック操作に基づくリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）のキー／値（key/value）データ・ストアのためにキャッシュ管理を行うシステムを提供する。非限定の実施形態によれば、キャッシュ管理システムは、クライアントが１つまたは複数のサーバに必要なアクセス頻度率を定期的に伝えることができるように、サーバとクライアントの共同設計の利点を利用する。アクセス頻度率は、様々なアトミック操作によってサーバ中のレジスタ、すなわちデータロケーションにアッドされ、アトミック操作は、同時に、または順々に行うことができるが、特定のタスクが適切に達成される障害にならない。たとえば、キャッシュ・システムによって実行されるアトミック操作は、特定のキー／値アイテムのアクセス頻度率を格納することを目的とするサーバに格納されたデータロケーション中に値をアッドして取り替えるように、各それぞれのクライアントによって実行されるフェッチ／アッド操作を利用することができる。このように、サーバは、動的に変化するアクセス頻度率を含むデータロケーションをモニタし、キャッシュされたデータの大域的なアクセス・パターンを維持することができる。
【００１２】
さらに、非限定の実施形態によるキャッシュ管理システムは、データアイテムを管理するリース期間を決定し、また様々なアイテムについてのリース期間を、それらのアクセスのレイトおよび操作タイプに従って決定する。リース期間は、クライアントがＲＤＭＡ読み取りを使用することによってデータを効率よく取得することができるようにデータの可用性を保証するサーバとクライアントの間の約束として存在し、同時にまたキャッシュに格納されたキー／値アイテムの時期尚早の追い出し（eviction）および再利用（reclamation）を防止する。このように、様々な実施形態によるキャッシュ管理システムは、キャッシュされたデータのアクセス頻度の追跡を特に維持することが可能であり、それによってオーバーヘッドをほとんど被らず、同時にまたキャッシュ中のキー／値アイテムの有効性が保持される。
【００１３】
ここで図１を参照すると、非限定の実施形態による、アトミック操作に基づくリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）のキー／値データ・ストアのためにキャッシュ管理を行うように構成されるキャッシュ管理システム１００が例示されている。キャッシュ管理システム１００は、１つまたは複数のリモート・コンピュータ、すなわちホスト・コンピュータ１１０と信号で通信状態にあるクライアント１０２を含む。クライアント１０２は、様々なアトミック操作を実行することによって、ホスト・コンピュータ１１０上に格納されたキャッシュ１１２にアクセスするように構成される。アトミック操作は、同時に、または順々に行うことができるが、特定のタスクが適切に達成される障害にならない操作の群を含むことができる。たとえば、アトミック操作は、オペレーティング・システムの内部のスピンロック（spin-lock）、またはシーケンス番号を単調にインクリメントすること、あるいはその両方で実行することができる。アトミック操作は、データの検査、データの条件付き、または無条件の修正、またはたとえばアトミック・フェッチおよびアッド（すなわちフェッチ／アッド）操作を使用するキャッシュ１１２中のデータロケーション中への新しい値またはアイテムの配置、あるいはそれらの組合せを含むことができる。また、アトミック操作は、操作の結果に対する応答を、データの前の、またはその後の値などを用いて返すことを含むことができる。非限定の実施形態では、ホスト・コンピュータ１１０は、クライアント１０２のそれぞれが、ホスト・コンピュータ１１０のＣＰＵ１１４に読み取り要求を処理するように求めることなく、キャッシュ１１２に格納されたデータにアクセスするのを可能にするために、ＲＤＭＡキャッシュ管理操作を利用する。
【００１４】
非限定の実施形態では、クライアント１０２が初めてホスト・コンピュータ１１０のキャッシュ１１２からのデータアイテムへのアクセスを要求した時、ホスト・コンピュータ１１０は、クライアントのキャッシュ中のデータアイテムにリモートポインタを返す。リモートポインタは、キャッシュ１１２の内部のデータアイテムのロケーションを示す。一度クライアント１０２がリモートポインタを得ると、ＲＤＭＡ読み取りは、ホスト・コンピュータ１１０のＣＰＵ１１４による動作を何ら求めることなく、データアイテムを取得するために使用することができる。
【００１５】
非限定の実施形態では、クライアント１０２からのアクセス要求の受け取りに応答して、ホスト・コンピュータ１１０のコンピュータは、要求されたデータアイテムに関してクライアント１０２とのリース関係に入る。このリースは、クライアント１０２にＲＤＭＡ読み取りを実行するという特権を与え、有効期限までデータアイテムの可用性を保証する、ホスト・コンピュータ１１０とクライアント１０２の間の合意である。非限定の実施形態では、ホスト・コンピュータは、キャッシュに格納されたデータアイテムのすべてのアイテムにリースを割り当てることによって、キャッシュに格納されたデータアイテムのアクセス・パターンの大域的な視野を維持する。非限定の実施形態では、リースがその所有者にＲＤＭＡ読み取りを実行するという特権を与えるが、リースは、所有者にデータアイテムを更新するという特権を与えることができない。
【００１６】
非限定の実施形態では、リースの期間または長さは、データアイテムのアクセス履歴によって決定することができる。一般に、データアイテムのすべてについて１個の一定のリース期間を使用すると効率が悪い。これは、長いリース期間は、ポピュラーでないアイテムがキャッシュに蓄積することになり得、短いリース期間は、リモートポインタの無効化を頻繁に引き起こし得、それゆえＲＤＭＡの利用が低下するからである。非限定の実施形態では、頻繁な読み取りを示すデータアイテムにより長い期間のリースを割り当てることは、読み取りがより少ないアイテムに関してより長い期間のリースを割り当てるより有益である。非限定の実施形態では、各アイテムに関するリース期間は、いくつかのファクタを考慮することによって決定するものとし、このファクタは、これらに限定されないが、データアイテムを求める操作イベントおよびデータアイテムのアクセス頻度を含む。
【００１７】
非限定の実施形態では、データアイテムにアクセスすること（たとえば読み取り、書き込みまたは更新）など、ホスト・コンピュータが気付く操作毎に、リースは、所定の期間だけ延長することができる。一実施形態では、リース延長は、多数のクライアントがデータに同時にアクセスした時、リースが制限なく延長されないようにするために、リース＝現在＋所定の期間によって計算することができる。ホスト・コンピュータは、データをフェッチするためにＲＤＭＡ読み取りを適用することができる有効な時間範囲をクライアントに通知するために、延長されたリース期間を返す値を埋め込むことができる。
【００１８】
図２は、本明細書の教示によって使用する非限定のコンピュータ・システム２００のブロック図を例示する。本明細書に述べる方法は、ハードウェア・ソフトウェア（たとえばファームウェア）で、またはその組合せで実行することができる。非限定の実施形態では、本明細書に述べる方法は、ハードウェアで実行され、それは、専用または汎用のデジタル・コンピュータ、たとえばパーソナル・コンピュータ、ワークステーション、ミニコンピュータ、メインフレーム・コンピュータまたはコンピュータ・サーバ・システムのマイクロプロセッサの一部である。したがって、システム２００は、汎用コンピュータ２０１を含む。
【００１９】
非限定の実施形態では、ハードウェア・アーキテクチャに関し、図２に示すように、コンピュータ２０１は、プロセッサ２０５、メモリ・コントローラ２１５を介して結合されるメモリ２１０、記憶デバイス２２０およびローカル入出力コントローラ２３５を介して通信可能に結合される１つまたは複数の入力または出力あるいはその両方（Ｉ／Ｏ）のデバイス２４０、２４５（またはペリフェラル）を含む。非限定の実施形態によれば、コンピュータ２０１は、非限定の実施形態によるＲＤＭＡキー／値データ・ストアのためにキャッシュ管理を行うように、１つまたは複数のリモート・コンピュータ、すなわちクライアント１０２とともに動作することが可能なホスト・サーバとして構成される。
【００２０】
入出力コントローラ２３５は、たとえば、ただしこれらに限定されないが、本技術で知られているように、１つまたは複数のバス、または他の有線または無線の接続とすることができる。入出力コントローラ２３５は、通信を有効にするために、コントローラ、バッファ（キャッシュ）、ドライバ、リピータおよびレシーバなど、追加の要素を有することができ、それは、簡単にするために省略する。さらに、ローカル・インターフェースは、前述の構成要素の間で適切な通信を有効にするために、アドレス、制御またはデータ接続あるいはそれらの組合せを含むことができる。記憶デバイス２２０は、１つまたは複数のハード・ディスク（ＨＤＤ）、半導体ドライブ（ＳＳＤ）または記憶デバイスの他のいずれか適切な形態を含むことができる。
【００２１】
プロセッサ２０５は、ハードウェア命令またはソフトウェア、特にメモリ２１０に格納されたソフトウェアを実行するためのコンピューティング・デバイスである。プロセッサ２０５は、いずれかの特注の、または市販のプロセッサ、中央処理装置（ＣＰＵ：central processing unit）、コンピュータ２０１と関連するいくつかのプロセッサの間の補助プロセッサ、半導体ベースのマイクロプロセッサ（マイクロチップまたはチップ・セットの形態で）、マイクロプロセッサ、または一般に命令を実行するためのいずれかのデバイスとすることができる。プロセッサ２０５は、キャッシュ２７０を含むことができ、それは、より多くのキャッシュ・レベル（Ｌ１、Ｌ２など）の階層として構造化することができる。１つまたは複数のリモート・コンピュータ、すなわちクライアント１０２は、ネットワーク２６５を介してコンピュータ２０１と信号で通信状態にある。このように、クライアント１０２は、ホスト・コンピュータ２０１のプロセッサに読み取り要求を処理するように求めることなく、ホスト・コンピュータ２０１の１つまたは複数のデータロケーションから／それへデータまたはアイテムを直接フェッチ／アッドするように、ＲＤＭＡを実行することができる。
【００２２】
メモリ２１０は、揮発性メモリ素子（たとえば、ランダム・アクセス・メモリ（ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなど、ＲＡＭ））および不揮発性メモリ素子（たとえば、ＲＯＭ，消去可能なプログラム可能読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能なプログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、プログラム可能読み取り専用メモリ（ＰＲＯＭ）、テープ、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、ディスク、ディスケット、カートリッジ、カセットなど）のいずれか１つ、またはその組合せを含むことができる。さらに、メモリ２１０は、電子、磁気、光のタイプまたは他のタイプ、あるいはそれらの組合せのタイプの記憶媒体を組み込むことができる。メモリ２１０は、分散型アーキテクチャを有することができ、様々な構成要素が互いからリモートに位置しているが、プロセッサ２０５によってアクセスすることができる。
【００２３】
メモリ２１０中の命令は、１つまたは複数の別々のプログラムを含むことができ、そのそれぞれが、論理的機能を果たすために、実行可能な命令の順序付きのリスティングを含む。図２の例では、メモリ２１０中の命令は、適切なオペレーティング・システム（ＯＳ：operating system）２１１を含む。オペレーティング・システム２１１は、基本的に、他のコンピュータ・プログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータ管理、メモリ管理、通信制御および関連するサービスを提供する。
【００２４】
非限定の実施形態では、従来のキーボード２５０およびマウス２５５を入出力コントローラ２３５に結合することができる。Ｉ／Ｏデバイス２４０、２４５など、他の出力デバイスは、入力デバイス、たとえば、ただしこれらに限定されないがプリンタ、スキャナ、マイクロフォンなどを含むことができる。最後に、Ｉ／Ｏデバイス２４０、２４５は、入力と出力の両方の通信をするデバイス、たとえば、ただしこれらに限定されないが、ネットワーク・インターフェース・カード（ＮＩＣ）またはモジュレータ／デモジュレータ（他のファイル、デバイス、システム、またはネットワークにアクセスするために）、無線周波数（ＲＦ）または他のトランシーバ、電話インターフェース、ブリッジ、ルータなどをさらに含むことができる。システム２００は、ディスプレイ２３０に結合されるディスプレイ・コントローラ２２５をさらに含むことができる。非限定の実施形態では、システム２００は、ネットワーク１６５に結合するために、ネットワーク・インターフェース２６０をさらに含むことができる。
【００２５】
ネットワーク２６５は、コンピュータ２０１といずれかの外部サーバ、クライアントなどの間のブロードバンド接続を介する通信のためのＩＰベースのネットワークとすることができる。ネットワーク２６５は、コンピュータ２０１と外部システムの間でデータを送信し受信する。非限定の実施形態では、ネットワーク２６５は、サービス・プロバイダによって運営されている、管理されたＩＰネットワークとすることができる。ネットワーク２６５は、たとえばＷｉ−Ｆｉ、ＷｉＭａｘなどの無線のプロトコルおよび技術を使用する無線式で実現することができる。また、ネットワーク２６５は、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット・ネットワーク、または他の同様のタイプのネットワーク環境など、パケット交換方式のネットワークとすることができる。ネットワーク２６５は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク（ＬＡＮ）、無線ワイド・エリア・ネットワーク（ＷＡＮ）、パーソナル・エリア・ネットワーク（ＰＡＮ）、仮想プライベート・ネットワーク（ＶＰＮ）、イントラネットまたは他の適切なネットワークシステムとすることができ、信号を受信し送信するための機器を含む。
【００２６】
コンピュータ２０１が、ＰＣ、ワークステーション、インテリジェント・デバイスなどの場合、メモリ２１０中の命令は、基本入出力システム（ＢＩＯＳ：basic input output system）をさらに含むことができる（簡単化のために省略する）。ＢＩＯＳは、立ち上げ時にハードウェアを初期化してテストし、ＯＳ２１１を起動し、記憶デバイスの間でデータの転送をサポートする基本ルーチンのセットである。ＢＩＯＳは、コンピュータ２０１が起動された時、ＢＩＯＳを実行することができるようにＲＯＭに格納される。コンピュータ２０１が動作中の時、プロセッサ２０５は、メモリ２１０内に格納された命令を実行し、メモリ２１０とデータをやり取りし、命令に従ってコンピュータ２０１の動作を一般に制御するように構成される。
【００２７】
ここで図３を見ると、非限定の実施形態による、ＲＤＭＡキー／値データ・ストアのためにキャッシュ管理を行うように構成されるキャッシュ管理システム３００が例示されている。非限定の実施形態によれば、キャッシュ管理システム３００は、ＲＤＭＡキー／値データ・ストア操作を容易にするように、不均等なメモリ・アクセス（ＮＵＭＡ：non-uniform memory access）アーキテクチャに従って設計される。また、キャッシュ管理システム３００は、汎用メモリ中キー−値ミドルウェアまたはヒドラ・データベース（ＨｙｄｒａＤＢ：hydra database）の形で実現することができる。ＨｙｄｒａＤＢは、クラスタ計算用途のために信頼できる方法で高スループット、低待ち時間アクセス・サービスを実現するために、ただしこれらに限定されないが、連続的なフォールト・タレランス、リモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）およびマルチコア・システムに対する意識を含む、最先端技法の集合体を総合的に扱う。
【００２８】
キャッシュ管理システム３００は、１つまたは複数のリモート・クライアント・ノード３０４ａ〜３０４ｂと信号で通信状態にあるサーバ３０２を含む。サーバ３０２は、１つまたは複数のデータロケーション３０６ａ〜３０６ｂ、およびデータロケーション３０６ａ〜３０６ｂにアクセスするように構成される電子コンピュータ・プロセッサ３０８を含む。コンピュータ・プロセッサ３０８は、データロケーション３０６ａ〜３０６ｂにアクセスする時、そこからデータを読み取る、またはそこに書き込む、あるいはその両方をすることができる。非限定の実施形態によれば、コンピュータ・プロセッサ３０８は、様々なデータロケーションにアクセスして処理する、かつサーバ３０２を管理することが可能な電子ノード管理者エージェント３０８として構成される。
【００２９】
クライアント３０４ａ〜３０４ｂは、サーバ３０２のリモート・ノード上に位置するデータロケーション３０６ａ〜３０６ｂに直接アクセスするために、リモートポインタ３１０ａ〜３１０ｂを利用する。非限定の実施形態によれば、サーバ３０２は、リモートポインタ３１０ａをクライアント３０２ａにエクスポートし、そのリモートポインタは、サーバ３０２のメモリに格納された、ピン留めされ記録されたデータロケーション３０６ａ中のデータ値またはアイテムを指示する。サーバ３０２のデータロケーション３０６ａに格納されたデータ値またはアイテムは、キャッシュをもたらす。それゆえ、ＲＤＭＡ操作によって、クライアント３０４ａ〜３０４ｂが、オーバーヘッドおよび待ち時間を減少させるためにそれぞれのリモートポインタ４０８ａ〜４０８ｂを使用して、サーバ３０２の対応するデータロケーションに格納された値またはアイテムに直接アクセスすることが可能になる。
【００３０】
非限定の実施形態によれば、クライアント３０４ａ〜３０４ｂは、サーバ３０２のＲＤＭＡをリモートで制御する。たとえば、リモートポインタ３１０ａは、クライアント３０４ａ〜３０４ｂのメモリから取得される。次いで、特定のクライアント３０４ａ〜３０４ｂは、それぞれのリモートポインタ３１０ａ〜３１０ｂをサーバ３０２に送信する。リモート・ポイントは、クライアントによって要求された値を格納する特定のデータロケーション３０６に対応するキーおよび値＜ｋｅｙ，ｖａｌｕｅ＞を指定するハッシュを含む。リモートポインタ３１０ａ〜３１０ｂによって指定された＜ｋｅｙ，ｖａｌｕｅ＞が有効であり存在する場合、クライアント３１０ａ〜３１０ｂは、サーバ３０２のメモリ中に、かつそこからデータ値を転送するために、ＤＭＡ（direct memory access）操作を実行する。
【００３１】
これらのＲＤＭＡ操作は、サーバ３０２または３０４ａ〜３０４ｂ中のいずれのソフトウェアの実行も必要としない。それゆえ、ＲＤＭＡ操作を実行するために、サーバ・コンピュータまたはノード管理者エージェント３０８からの関与がなく、かつサーバ３０２またはクライアント３０４ａ〜３０４ｂが中央処理装置（ＣＰＵ）を利用しない。したがって、ＲＤＭＡ操作は、クライアント３０４ａ〜３０４ｂによるサーバ３０２のメモリへの極めて速い、ほぼワイヤ・スピードのリモート・アクセスをもたらすことになる（同様に、クライアント３０４ａ〜３０４ｂのメモリへの、またはそこからのサーバ３０２によるリモート・アクセス）。たとえば、クライアント３０４ａ〜３０４ｂによって実行される、サーバ３０２のメモリに格納されたデータ値のアッド／フェッチ操作は、たとえば１桁のマイクロ秒内で行うことができる。
【００３２】
非限定の実施形態によれば、ハッシュ・マップがＲＤＭＡ操作に関して使用される。サーバ３０２は、リモートポインタ３１０ａ〜３１０ｂを格納するためにハッシュ・マップを生成し、ハッシュ・マップをクライアント３０４ａ〜３０４ｂに発行する、またはエクスポートする。ハッシュ・マップ中の各エントリまたはスロットは、レコードのためのキーと関連付けられ、対応するデータロケーション３０６ａ〜３０６ｂに格納されたデータ値に対応するオブジェクト値を格納する。サーバ３０２は、たとえばクライアント立ち上げ時、サーバ立ち上げ時、ハッシュ・マップが変化した時、要求時、ある間隔で変化した時など、ある指定時間に、ハッシュ・マップを１つまたは複数のクライアント３０４ａ〜３０４ｂに発行する（矢印１によって示す）。クライアント３０４ａ〜３０４ｂは、リモートポインタを受け取り、ハッシュ＜ｋｅｙ，ｖａｌｕｅ＞をクライアント・メモリに格納する。
【００３３】
また、サーバ３０４ａ〜３０４ｂは、サーバ３０２と通信するために（すなわちデータを送り受け取る）、ＲＤＭＡ操作によってサポートされるメッセージ・ベースのインターフェースを利用することができる。メッセージ・ベースのインターフェースは、ただしこれらに限定されないが伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）を含む、様々なプロトコルを使用して確立することができる。たとえば、サーバ３０４ａ〜３０４ｂは、サーバ３０２にリモートポインタ３１０ａ〜３１０ｂを求める通知要求（矢印２によって示す）を送る。通知要求は、サーバのシャード（shard）によって中継され、サーバ３０２のデータロケーション３０６ａ〜３０６ｂに格納されたデータ値に基づくＲＤＭＡを使用して、ＣＲＵＤ（生成（Create）、読み取り（Read）、更新（Update）、削除（Delete））操作を実行するために、ハッシュ・マップのクライアントのコピーが、キーに基づきリモートポインタ３１０ａ〜３１０ｂをローカルに探索するように処理される。それに応じて、サーバ３０２は、クライアント３０４ａ〜３０４ｂによって要求された現在のハッシュ＜ｋｅｙ，ｖａｌｕｅ＞を含むハッシュ・マップを送ることによって、クライアント通知に応答する（矢印４によって示す）。さらに、サーバ３０２は、指定時に、たとえばハッシュ・マップが生成および削除の操作によって変化した時、ハッシュ・マップの完全な、またはインクリメントされた更新をクライアント３０４ａ〜３０４ｂにマルチキャストすることができる。
【００３４】
図３にさらに例示するように、たとえば、ハードウェア・コンピュータ・プロセッサとして構築された１つまたは複数のノード管理者エージェント３０８は、データロケーション３０６ａ〜３０６ｂにアクセスするように構成される。ノード管理者エージェント３０８は、アクセス制御メカニズムとして管理キーを使用する。ノード管理者エージェント３０８がデータロケーション３０６ａ〜３０６ｂを制御する時、ノード管理者エージェント３０８は、その管理キーをリース期間とともに各それぞれのデータロケーション３０６ａ〜３０６ｂに割り当てる。リース期間は、リモート・クライアント３０４ａ〜３０４ｂが、リース期間が経過するまで、対象とするアイテムまたは値を格納する、対応するデータロケーション３０６ａ〜３０６ｂに対してＲＤＭＡアクセスを実行するのを可能にする合意として働く。それに基づき、ノード管理者エージェント３０８は、管理キーを使用して、それがリース期間内に受け取るすべての将来のパケットを有効にする。サブネット管理パケット中の管理キー・フィールドが対応するデータロケーション３０６ａ〜３０６ｂの管理キー値に一致する場合、パケットは、受け入れられる。そうでなければ、パケットは、捨てられる。
【００３５】
ＲＤＭＡアーキテクチャは、多重のノード管理者エージェント３０８の考えをサポートし、多重のノード管理者エージェント３０８がどのように特定のデータロケーション３０６ａ〜３０６ｂのマスタ・ノード管理者エージェント３０８になるために交渉するのかを規定する。一度あるノード管理者エージェント３０８がデータロケーション３０６ａ〜３０６ｂの制御権を得ると、それは、それがデータロケーション３０６ａ〜３０６ｂのその管理キーを失わない限り、制御権を保持することができる。管理キーを失うのは、いくつかの状況下で起こり得る。この失うことは、管理キーを含む構成要素のパワー・サイクルを通じて起こり得、構成要素は、構成要素に対するパワーが戻った時、デフォールト管理キーを用意することになる。また、この失うことは、管理キーのリース期間が経過した時、起こり得、対応するデータロケーション３０６ａ〜３０６ｂは、サーバ３０２が再利用（reclaim）することができる。したがって、少なくとも１つの実施形態は、時期尚早のデータロケーションの再利用を防止し、キャッシュ利用と性能要求の間のかね合いを保つように、リース期間を動的に調整するという特徴をもたらす。
【００３６】
非限定の実施形態によれば、キャッシュ管理システム３００は、データロケーション３０６ａ〜３０６ｂのポピュラリティを決定して、リース期間を動的に計算する。特定のデータロケーション３０６ａ〜３０６ｂのポピュラリティは、特定のデータロケーション３０６ａ〜３０６ｂが１つまたは複数のクライアント３０４ａ〜３０４ｂによってアクセスされる頻度に基づく。この頻度は、アクセス頻度率ということにする。特定のデータロケーション３０６ａ〜３０６ｂにアクセスする可能性があるクライアント３０６ａ〜３０６ｂの数の多さを考慮した正確な頻度率をもたらすために、「フェッチ／アッド」操作といわれるＲＤＭＡアトミック操作が実行される。アトミック・フェッチ／アッド操作は、同時に、または順々に行うことができるが、特定のタスクが適切に達成される障害にならない。
【００３７】
たとえば、アトミック操作は、オペレーティング・システムの内部のスピンロック操作で、またはシーケンス番号を単調にインクリメントすることで、あるいはその両方で実行することができる。いずれかの例では、フェッチ／アッド操作は、データロケーション中の値を同時に更新するように同時に実行することができ、同時にデータロケーション中のデータに不注意に上書きせずに論理的に正しい判断をもたらす。つまり、たとえば、ＴＣＰ／ＩＰプロトコルに従って実行される非アトミックな読み取り／書き込み操作と違い、キャッシュ管理システム３００によって実行されるアトミック・フェッチ／アッド操作は、中間の障害なしに操作が同時に行われるのを可能にする。したがって、サーバ３０２は、別々の頻度データロケーション（図３に図示せず）を含むことができ、それは、アトミック・フェッチ／アッド操作を使用して、アクセス頻度率データを用いて動的に更新される。このように、サーバ３０２は、特定のデータロケーションのポピュラリティを絶え間なく意識して、対応するリース期間を動的に調整することができる。すなわち、データロケーションのアクセス頻度率が増加するにつれて（たとえばアクセス頻度率が増加する）、サーバ３０２は、リース期間を延長する。データロケーションのポピュラリティが減少するにつれて（たとえばアクセス頻度率が減少する）、サーバ３０２は、対応するリース期間を短縮する。
【００３８】
図４を見ると、ブロック図が、非限定の実施形態によるサーバ３０２に格納されたデータロケーションに対応するアクセス頻度率を更新するために、アトミック・フェッチ／アッド操作を実行するクライアント３０４を例示する。サーバ３０２およびクライアント３０４は、フェッチ／アッド操作を容易にするために、追加の構成要素を含む。サーバ３０２は、頻度データロケーション４００を含み、それは、１つまたは複数のクライアント３０４によってアクセスされる特定のデータロケーション３１０に対応するアクセス頻度データを示すリモート・アクセス値（Ｒｅｍ＿Ａｃｃｅｓｓ＿ｖａｌ）を格納するように構成される。クライアント３０４は、インクリメント・モジュール４０２およびローカル・データロケーション４０４を含む。
【００３９】
クライアント３０４が、リモートポインタ＜ｋｅｙ，ｖａｌｕｅ＞によって定められたデータロケーション３１０にアクセスする必要があるイベントでは、クライアント３０４は、上記に述べたような現在のＲｅｍ＿Ａｃｃｅｓｓ＿ｖａｌ（すなわち現在のアクセス頻度データ）に適用される調節（すなわちインクリメントまたはデクリメント）を決定する。次いで、フェッチ／アッド操作は、アトミック的に決定された調節を適用し、特定のクライアント３０４がその時ロケーションにアクセスする唯一のクライアント（複数のクライアントの間の）であった場合、前の値を返す。ロケーションが多重の同時アクセスを被った場合、クライアント３０４は、論理的中間値の１つを返す。それゆえ、更新されたＲｅｍ＿Ａｃｃｅｓｓ＿ｖａｌは、頻度データロケーション４００およびローカル・データロケーション４０４に同時にアッドすることができる。このように、クライアント３０４は、ローカルにアクセス頻度率を動的に追跡することができ、一方、ノード管理者エージェント３０８は、サーバ３０２に格納された頻度データロケーション４００を絶えずモニタすることができ、それによって対応するデータロケーション３１０のアクセス頻度率を決定する。したがって、ノード管理者エージェント３０８は、データロケーション３１０のポピュラリティをモニタすることができ、それに応じてデータロケーション３１０に割り当てられたリース期間を動的に調整する。単独のクライアント３０４の操作が図４に例示されているが、キャッシュ管理システム３００は、サーバ３０２の頻度データロケーション４００にそのローカルの寄与分を連続的にアッドするのと同様のアトミック・フェッチ／アッド操作を実行する多数のクライアント３０４を含むことができる。さらに、サーバ３０２は、頻度データ４００にその寄与分をアッドすることができる。したがって、頻度データロケーション４００に格納されたアクセス頻度率データは、キャッシュ管理システム３００中のサーバ３０２および各クライアント３０４がアクセス可能な大域的な情報と見なすことができる。
【００４０】
非限定の実施形態によれば、頻度データロケーション４００に格納されたＲｅｍ＿Ａｃｃｅｓｓ＿ｖａｌは、アクセス頻度率差（Δｆ）に基づく。より具体的には、第１の期間（Ｔ１）中の第１のアクセス頻度率（ｆ１）がクライアント３０４によって決定される。つまり、クライアントは、クライアントがＴ１の間にデータロケーション３１０にアクセスするように要求された回数に基づき、ｆ１を決定することができる。期間は、特定のデータロケーション３１０に対応するアクセス頻度率の傾向を決定するのを可能にする、いずれかの期間（たとえば１ミリ秒、１秒、１分など）とすることができる。たとえば、立ち上げ時、キャッシュ管理システム３００中に含まれる各クライアント３０４は、最初のアクセス頻度基準値を生成するために、差の計算をせずに最初のｆ１をアッドすることができる。
【００４１】
Ｔ１が経過した後、クライアント３０４は、次の期間（Ｔ２）中の第２のアクセス頻度率（ｆ２）を決定する。次いで、クライアント３０４は、ｆ２とｆ１の間の差分に基づきΔｆを計算する。Δｆが正の場合、クライアント３０４は、Ｒｅｍ＿Ａｃｃｅｓｓ＿ｖａｌを現在のΔｆ値を用いてインクリメントする。しかし、Δｆが負の場合、クライアント３０４は、Ｒｅｍ＿Ａｃｃｅｓｓ＿ｖａｌを現在のΔｆ値だけデクリメントする。少なくとも１つの実施形態では、クライアント３０４は、Δｆがゼロであると決定された時、頻度データロケーション４００を更新しないと判定する。したがって、サーバ３０２は、キャッシュ管理システム３００中に含まれるすべてのクライアント３０４が寄与するアクセス頻度率の合計を維持することができる。このように、サーバ３０２は、いずれかの時点における頻度データロケーション４００に格納されたアクセス頻度率の合計に基づき、データロケーション３１０に対応するリース期間を動的に調整することができる。
【００４２】
非限定の実施形態によれば、各クライアント３０４は、しきい値（ｆＴＨ）に基づき、現在のΔｆを頻度データロケーション４００にアッドするのかどうかを最終的に決定することができる。つまり、各クライアント３０４は、現在のΔｆをｆＴＨと比較する。ΔｆがｆＴＨを超えた時、クライアント３０４は、頻度データロケーション４００を更新する、すなわちＲｅｍ＿Ａｃｃｅｓｓ＿ｖａｌを現在のΔｆを用いてインクリメントまたはデクリメントする。非限定の実施形態によれば、ｆＴＨは、アクセス頻度率が増加または減少するにつれて、動的に調節することができる。たとえば、Ｒｅｍ＿Ａｃｃｅｓｓ＿ｖａｌが高い、それゆえデータロケーション３１０が現在ポピュラーであることを示す時、ｆＴＨは、第１の値に設定することができる。Ｒｅｍ＿Ａｃｃｅｓｓ＿ｖａｌが減少するにつれて、ｆＴＨは、異なる値に調節することができ、その逆も同様である。
【００４３】
非限定の実施形態によれば、キャッシュ管理システム３００は、システム３００がエラーイベントに出会った場合、１つまたは複数のリカバリ動作を実行するように構成される。たとえば、１つまたは複数のクライアント３０４が機能しない、またはクラッシュしたイベントでは、サーバは、リセット動作を開始する。リセット動作は、キャッシュ管理システム３００がリセットされることをすべてのクライアント３０４に示すリセット・ビット（たとえば１ビット）を、サーバ３０２が出力することから開始される。リセット・ビットの受け取りに応じて、クライアント３０４は、頻度データロケーション４００を更新することをやめる。リセット・ビットは、１回だけ出力することができる、または各クライアント３０４がリセット・ビットを受け取ったことを確信することができるように、連続的に出力することができる。
【００４４】
サーバ３０２がアクセス頻度の更新を使えるようにする準備ができた時、サーバ３０２は、リセット・ビットを１から０に遷移させることになる。ビット遷移に応じて、サーバ３０４は、リセットに続く第１の期間（Ｔ１）に最初の寄与分ｆ１（Δｆとは対照的に）を頻度データロケーション４００に再びアッドすることになり、その後、上記で述べたように、次の期間中にΔｆを用いて頻度データロケーション４００を更新することになる。少なくとも別の実施形態では、クライアント３０４は、リセット・ビット（たとえば０または１）の受け取りに応じて、予め決定された期間だけ待ち、その後頻度データロケーション４００を更新する。リセット・ビットは、別々の個々の信号を使用して配信することができる、または、たとえばリモートポインタなど、別のデータ信号中に埋め込まれた上位ビットとすることができる、あるいはその両方を行うことができる。
【００４５】
図５〜６を参照すると、フロー図が、非限定の実施形態によるキャッシュ管理システム中に含まれるクライアントとサーバの操作をそれぞれ例示している。クライアントとサーバのそれぞれが、操作の間にデュアル・スレッド（dual thread）方法を実行する。図５に例示したクライアント操作をまず見ると、第１のスレッド（Ｔｈｒｅａｄ  Ａ）が操作５００Ａから開始され、操作５０２Ａで、クライアントが、サーバ中にリモートに格納されたデータロケーション中に位置するアイテムを求める要求を受け取る。要求は、たとえばクライアントによるアプリケーション操作によって開始することができる。操作５０４Ａで、クライアントは、サーバ中にリモートに格納されたデータロケーションからデータ値またはデータアイテムをフェッチする。アイテムは、ＲＤＭＡの下でアトミック・フェッチ／アッド操作によるリモートポインタを使用して、または、たとえばＴＣＰ／ＩＰを含むメッセージ・ベースのプロトコルを使用して、あるいはその両方でフェッチすることができる。リモートポインタは、アプリケーションによって要求されたアイテムを格納するデータロケーションに対応するハッシュ＜ｋｅｙ，ａｌｕｅ＞を利用する。操作５０６Ａで、フェッチされたアイテムは、クライアントからアプリケーションに中継される。操作５０８Ａで、クライアントは、要求されたアイテムのリモートポインタに対応するデータロケーションの有効期限（すなわち現在のリース期間）をローカルに更新する。操作５１０Ａで、クライアントは、要求されたアイテムのリモートポインタに対応するデータロケーションのアクセス頻度率をローカルに更新し、この方法は、操作５１２Ａで終了する。
【００４６】
図５をまだ参照すると、クライアントは、第２のスレッド（Ｔｈｒｅａｄ  Ｂ）に従って同時に動作することができる。スレッドＢは、操作５００Ｂから開始され、操作５０２Ｂで、クライアントは、１つまたは複数のアプリケーションによって要求されたすべてのアイテムまたはデータ値を通ってループする。操作５０４Ｂで、クライアントは、アクセス頻度率の変化を計算する。非限定の実施形態によれば、クライアントは、第１の期間（Ｔ１）および次の第２の期間（Ｔ２）に基づき、アクセス頻度率差（Δｆ）を決定する。操作５０６Ｂで、クライアントは、Δｆが頻度しきい値（ｆＴＨ）より大きいと決定する。操作５０８Ｂで、クライアントは、アトミックアッド／フェッチ操作によって、サーバ上の頻度データロケーションを更新し、この方法は、操作５１０Ｂで終了する。
【００４７】
ここで図６を見ると、フロー図が、サーバの操作を例示している。第１のサーバ・スレッド（Ｔｈｒｅａｄ  Ａ）は、操作６００Ａから開始され、操作６０２Ａで、サーバは、１つまたは複数のクライアントからメッセージおよび操作を受け取る。非限定の実施形態によれば、サーバは、有効なリモートポインタ＜ｋｅｙ，ｖａｌｕｅ＞を求める要求を受け取る。操作６０４Ａで、サーバは、有効なリモートポインタ＜ｋｅｙ，ｖａｌｕｅ＞およびリモートポインタに対応するアイテムをクライアントに返す。操作６０６Ａで、サーバは、対応するデータロケーションへのアクセスに応じて、頻度データロケーションを更新し、この方法は、操作６０８Ａで終了する。
【００４８】
まだ図６を参照すると、サーバは、第２のスレッド（Ｔｈｒｅａｄ  Ｂ）に従って同時に動作することができる。スレッドＢは、操作６００Ｂから開始され、操作６０２Ｂで、サーバは、データロケーションのアクセス頻度率に基づき、対応するデータロケーションに格納されたアイテムに関するリース期間を動的に調整する。操作６０４Ｂで、サーバは、調整されたリース期間を対応するデータロケーションに割り当てる。操作６０６Ｂで、サーバは、リース期間が経過した時、データロケーションを再利用し、この方法は、操作６０８Ｂで終了する。
【００４９】
上記に述べた様々な実施形態によれば、アトミック操作に基づくリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）のキー／値データ・ストアのためにキャッシュ管理を行うように構成されるキャッシュ管理システムが、もたらされる。少なくとも１つの非限定の実施形態では、１つまたは複数のサーバは、データロケーションのポピュラリティに基づき、リース期間を動的に計算するように構成される。少なくとも１つの実施形態では、サーバは、データロケーションのアクセス頻度率に基づき、データロケーションのポピュラリティを決定する。アクセス頻度率は、キャッシュ管理システム中に含まれるクライアントによって実行されるアトミック・フェッチ／アッド操作に従って絶えず更新される。サーバは、アクセス頻度率に基づき、データロケーションのリース期間を動的に調整する。リース期間は、クライアントがＲＤＭＡ読み取りを使用することによってデータを効率よく取得することができるようにデータの可用性を保証するサーバとクライアントの間の約束として存在し、同時にまた、キャッシュに格納されたキー／値アイテムの時期尚早の追い出しおよび再利用を防止する。このように、様々な実施形態によるキャッシュ管理システムは、キャッシュしたデータのアクセス頻度の追跡を特に維持し、それによってほとんどオーバーヘッドを被ることがなく、同時にまたキャッシュ中のキー／値アイテムの有効性を保持することが可能である。
【００５０】
当業者に正しく認識されるように、本発明の１つまたは複数の態様は、システム、方法またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の１つまたは複数の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはすべてが一般に本明細書では「回路」、「モジュール」または「システム」ということができる、ソフトウェアとハードウェアの態様を兼ね備える実施形態の形態を取ることができる。用語「モジュール」は、本明細書で使用する際、特定用途向け集積回路（ＡＳＩＣ）、電子回路、電子コンピュータ・プロセッサ（共用、専用またはグループ）、マイクロコントローラ、および１つまたは複数のソフトウェアまたはファームウェアのプログラムを実行するメモリ、組み合わせた論理回路、または述べた機能性を果たす他の適切な構成要素、あるいはそれらの組合せを指すことができる。ソフトウェアで実現された時、モジュールは、処理回路によって読み取り可能であり、方法を実行するための処理回路による実行のための命令を格納する非一時的なマシン読み取り可能記憶媒体として、メモリ中で具現化することができる。さらにまた、本発明の１つまたは複数の態様は、コンピュータ読み取り可能プログラム・コードが具現化された１つまたは複数のコンピュータ読み取り可能媒体中に具現化されたコンピュータ・プログラム製品の形態を取ることができる。
【００５１】
１つまたは複数のコンピュータ読み取り可能媒体のいずれかの組合せを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば、ただしこれらに限定されないが、電子、磁気、光、電磁気、赤外線または半導体のシステム、装置またはデバイス、または前述事項のいずれかの適切な組合せとすることができる。コンピュータ読み取り可能記憶媒体のより具体的な例（包括的でないリスト）は、以下を含む。すなわち、１つまたは複数のワイヤを有する電気接続、携帯コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、または前述事項のいずれかの適切な組合せを含む。
【００５２】
本文書の文脈では、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置またはデバイスによって使用するための、またはそれと関連するプログラムを収容もしくは格納することができるいずれかの有形の媒体とすることができる。コンピュータ読み取り可能記憶媒体は、本明細書で使用する際、電波または他の自由に伝搬する電磁波、導波管または他の伝送媒体を通じて伝播する電磁波（たとえば光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通じて送信される電気信号など、本質的に一時的な信号であると解釈すべきでない。
【００５３】
プログラム・コードは、生成され、有形の媒体（ただしこれらに限定されないが電子メモリ・モジュール、ランダム・アクセス・メモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、非バッテリ・バックアップＲＡＭ、不揮発性ＲＡＭ（ＮＶＲＡＭ）、ＲＯＭ（ＰＲＯＭ、ＥＥＰＲＯＭなどを含む）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含む）上に格納された時、「コンピュータ・プログラム製品」としばしばいわれる。コンピュータ・プログラム製品媒体は、通常、処理回路によって実行するために、好ましくはコンピュータ・システム中の処理回路によって読み取り可能である。たとえば、そのようなプログラム・コードは、実行される時、本発明の態様を実行する命令をアセンブルするために、コンパイラまたはアセンブラを使用して生成することができる。
【００５４】
本明細書で使用する用語は、具体的な実施形態を述べる目的のためだけのものであり、実施形態を限定する意図はない。単数形「a」、「an」および「the」は、本明細書で使用する際、文脈ではっきりと別段の指示がない限り、複数形も同様に含むことが意図されている。用語「含む（comprise）」または「含む（comprising）」あるいはその両方は、本明細書で使用する時、述べた特徴、整数、ステップ、操作、要素または構成要素あるいはそれらの組合せの存在を規定するが、１つまたは複数の他の特徴、整数、ステップ、操作、要素、構成要素またはそのグループあるいはそれらの組合せの存在または追加を除外しないことがさらに理解されるはずである。
【００５５】
対応する構造、材料、動作、および以下の請求項中のすべてのミーンズまたはステップ・プラス・ファンクション要素の均等物は、具体的に請求する際、他の請求する要素と組み合わせて機能を果たすためのいずれかの構造、材料または動作を含むことが意図される。実施形態の記載は、例示し述べる目的で提示されており、包括的である、または開示した形態の実施形態に限定する意図はない。多くの変更および変形が、実施形態の範囲および趣旨から逸脱せずに、当業者に明らかになるであろう。実施形態は、原理および実際の応用を最善に説明するように、かつ他の当業者が実施形態を理解して、予期した具体的な使用に適切なように様々な変更を加えることができるように選択され記載された。
【００５６】
実施形態の態様に関する操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向のプログラミング言語、および「Ｃ」プログラミング言語、アセンブリ言語、マシン言語（マイクロコードおよび埋め込み実装形態で使用される言語を含む）などの従来の手続き型プログラミング言語または他の同様のプログラミング言語を含む、１つまたは複数のプログラミング言語のいずれかの組合せで書くことができる。プログラム・コードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、独立型のソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的に、クライアント上で部分的に、またはクライアントまたはサーバ上で全体的に実行させることができる。後者のシナリオでは、クライアントは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、いずれかのタイプのネットワークを通じてユーザのコンピュータに接続することができ、または接続は、外部コンピュータに対して行うことができる（たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて）。
【００５７】
実施形態の態様は、実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャートの例示図または概略図あるいはその両方を参照して上記に述べた。フローチャートの例示図またはブロック図あるいはその両方の各ブロック、およびフローチャートの例示図またはブロック図あるいはその両方中のブロックの組合せは、コンピュータ・プログラム命令によって実行することができることを理解されたい。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに規定された機能／動作を実行するための手段を生成するように、汎用コンピュータ、専用コンピュータまたは他のプログラマブル・データ処理装置に提供されて、マシンを作り出すものであってよい。
【００５８】
また、これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能媒体に格納された命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定された機能／動作を実行する命令を含む製品を作り出すように、コンピュータ読み取り可能媒体に格納され、コンピュータ、他のプログラマブル・データ処理装置または他のデバイスに特定の方法で機能するように指示することができるものであってもよい。
【００５９】
また、コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定された機能／動作を実行するためのプロセスをもたらすように、コンピュータに実装されるプロセスを生成するべく、コンピュータ、他のプログラマブル・データ処理装置または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置または他のデバイス上で一連の操作ステップを実行させるものであってもよい。
【００６０】
図中のフローチャートおよびブロック図は、様々な実施形態によるアーキテクチャ、機能性、およびシステム、方法およびコンピュータ・プログラム製品の可能な実装形態の操作を例示する。この点について、フローチャートまたはブロック図中の各ブロックは、モジュール、セグメントまたはコードの部分を表すことができ、それは、１つまたは複数の規定された論理的機能を果たすために、１つまたは複数の実行可能な命令を含む。また、いくつかの代替実装形態では、ブロック中で言及された機能は、図中に書かれた順序と違うように行うことができることに留意すべきである。たとえば、連続して示された２つのブロックは、実際、実質的に同時に実行することができ、またはブロックは、関与する機能性に依存して、時には逆順で実行することができる。また、ブロック図またはフローチャートの例示図あるいはその両方の各ブロック、およびブロック図またはフローチャートの例示図あるいはその両方中のブロックの組合せは、規定された機能または動作を実行する専用ハードウェア・ベースのシステム、または専用ハードウェアとコンピュータ命令の組合せによって実現することができることに留意されたい。
【符号の説明】
【００６１】
１００  キャッシュ管理システム
１０２  リモート・クライアント
１１０  ホスト・コンピュータ
１１２  キャッシュ
１１４  ＣＰＵ
２００  コンピュータ・システム
２０１  汎用コンピュータ
２０５  プロセッサ
２１０  メモリ
２１１  オペレーティング・システム
２１５  メモリ・コントローラ
２２０  記憶デバイス
２２５  ディスプレイ・コントローラ
２３０  ディスプレイ
２３５  入出力コントローラ
２４０  入力または出力あるいはその両方（Ｉ／Ｏ）のデバイス
２４５  入力または出力あるいはその両方（Ｉ／Ｏ）のデバイス
２５０  キーボード
２５５  マウス
２６０  ネットワーク・インターフェース
２６５  ネットワーク
２７０  キャッシュ
３００  キャッシュ管理システム
３０２  サーバ
３０４ａ  リモート・クライアント・ノード
３０４ｂ  リモート・クライアント・ノード
３０４  クライアント
３０６ａ  データロケーション
３０６ｂ  データロケーション
３０８  電子ノード管理者エージェント、電子コンピュータ・プロセッサ
３１０ａ  リモートポインタ
３１０ｂ  リモートポインタ
３１０  データロケーション
４００  頻度データロケーション
４０２  インクリメント・モジュール
４０４  ローカル・データロケーション
【図１】
2017076390.tif 000003
【図２】
2017076390.tif 000004
【図３】
2017076390.tif 000005
【図４】
2017076390.tif 000006
【図５】
2017076390.tif 000007
【図６】
2017076390.tif 000008