(57)【要約】【課題】ルックアップ・キャッシュにオブジェクトを維持するための方法、コンピュータ・プログラム製品、及びデータ処理システムが提供される。【解決手段】主リストには第１複数のオブジェクトが置かれる。主リストは該第１複数のオブジェクトの順不同リストである。副リストには第２複数のオブジェクトが置かれる。副リストは該第２複数のオブジェクトの順序付きリストである。定期的に、第１複数のオブジェクトのうちの少なくとも１つのオブジェクトが副リストに降格され、第２複数のオブジェクトのうちの少なくとも１つのオブジェクトが主リストに昇格される。【選択図】図９
2008502965.tif 000002
【特許請求の範囲】
【請求項１】
ルックアップ・キャッシュにオブジェクトを維持するための方法であって、
第１複数のオブジェクトの順不同リストである主リストに前記第１複数のオブジェクトを置くステップと、
第２複数のオブジェクトの順序付きリストである副リストに前記第２複数のオブジェクトを置くステップと、
定期的に前記第１複数のオブジェクトのうちの少なくとも１つのオブジェクトを前記副リストに降格させるステップと、
前記第２複数のオブジェクトのうちの少なくとも１つのオブジェクトを前記主リストに昇格させるステップと、
を含む方法。
【請求項２】
第１オブジェクトを求めるリクエストを受け取ったことに応答して、前記第１オブジェクトを目的として前記主リストを探索するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記第１オブジェクトが前記主リストに含まれていないという判断に応答して、前記第１オブジェクトを目的として前記副リストを探索するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記第１オブジェクトが前記副リストに置かれているという判断に応答して、前記第１オブジェクトが前記副リストの頭オブジェクトとして置かれるように前記副リストを変更するステップを更に含む、請求項３に記載の方法。
【請求項５】
前記第１オブジェクトが前記副リストに置かれていないという判断に応答して、前記第１オブジェクトを目的としてグローバル探索を実行するステップと、前記グローバル探索によって前記第１オブジェクトの位置を突き止めたことに応答して、前記第１オブジェクトが前記副リストの頭オブジェクトとして置かれるように前記副リストを変更するステップとを更に含む、請求項３に記載の方法。
【請求項６】
前記第２複数のオブジェクトのうちの前記少なくとも１つのオブジェクトは、前記副リストの頭オブジェクトを含む、請求項１に記載の方法。
【請求項７】
前記第１複数のオブジェクトのうちの前記少なくとも１つのオブジェクトは、前記第２複数のオブジェクトのうちの前記少なくとも１つのオブジェクトより低い頻度で使用されるものとして特定される、請求項１に記載の方法。
【請求項８】
ルックアップ・キャッシュを管理するためのコンピュータ可読媒体に存するコンピュータ・プログラム製品であって、請求項１ないし７のうちのいずれか１つの前記ステップを実行するためのプログラム・コードを含む、コンピュータ・プログラム製品。
【請求項９】
命令のセットと、第１複数の順不同オブジェクトを有する第１データ構造及び第２複数の順序付きオブジェクトを有する第２データ構造を含むルックアップ・キャッシュとを含むメモリーと、
前記命令のセットの実行に応答して、定期的に前記第１複数のオブジェクトのうちの少なくとも１つを主リストから副リストに降格させると共に前記第２複数のオブジェクトのうちの少なくとも１つのオブジェクトを前記副リストから前記主リストに昇格させる処理ユニットと、
を含むデータ処理システム。
【請求項１０】
前記第１データ構造及び前記第２データ構造は、各々、夫々のリンク・リスト・データ構造を含む、請求項９に記載のデータ処理システム。
【請求項１１】
前記処理ユニットは複数の処理ユニットのうちの１つであり、前記複数の処理ユニットの各々は前記ルックアップ・キャッシュへのアクセスを有する、請求項９に記載のデータ処理システム。
【請求項１２】
前記命令のセットは前記第２複数のオブジェクトを順序付けるためのＬＲＵアルゴリズムを含む、請求項９に記載のデータ処理システム。
【請求項１３】
前記処理ユニットは、第１オブジェクトを求めるリクエストの受け取りに応答して前記第１オブジェクトを目的として前記主リストを探索し、前記第１オブジェクトが前記主リストに置かれていないという判断に応答して前記第１オブジェクトを目的として前記副リストを探索する、請求項９に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、改良されたデータ処理システムに関し、特にルックアップ・キャッシュにオブジェクトを維持するためのシステム及び方法に関する。
【背景技術】
【０００２】
セット・アソシアティブ・キャッシュは任意のアドレスからのデータをキャッシュ記憶位置に格納することを可能にする。キャッシュ・アドレスはタグとして使われる。キャッシュにより維持されている全てのタグが、要求されたアドレスと比較されなければならない。１つのタグが、要求されたアドレスと一致したならば、その一致するタグの関連データがアクセスされる。セット・アソシアティブ・キャッシュは、連想メモリーが該タグを保持することを必要とする。セット・アソシアティブ・キャッシュは、キャッシュされるべきオブジェクトを１つのユニークな識別子に基いてセットに分け、どのオブジェクトも１つのセットだけに属する。オブジェクトがキャッシュに加えられてゆくとき、各セットは限られたサイズまで大きくなれるに過ぎない。セットがその最大サイズに達すると、１つの新しいオブジェクトが加えられる毎に１つの既存のオブジェクトを捨てなければならない。通常、その捨てられるオブジェクトは、そのセットにおいてその時点で最も長い期間にわたって使用されていない（ＬＲＵ）オブジェクトである。ネーム・ルックアップ・キャッシュは、汎用セット・アソシアティブ・キャッシュ・アーキテクチャに由来する。ネーム・ルックアップ・キャッシュは一般的に１つのシステムにおける全ての既存オブジェクトの１つのサブセットのみを含むので、オブジェクトが該キャッシュに加えられるとき、各セットは限られたサイズまで大きくなり得るに過ぎない。セットがその最大サイズに達すると、１つの新しいオブジェクトが加えられる毎に１つの既存オブジェクト（通常、その時点で最も長い期間にわたって使用されていないオブジェクト）を捨てなければならない。通常、セットは頭から線形に探索されるリンク・リストである。探索はオブジェクトが発見されたときまたは末尾のオブジェクトが探索されたときに終了する。もしオブジェクトが発見されたら、それは、ＬＲＵアルゴリズムを実行するために、リストにおける現在の位置からリストの頭に移される。途中、最も頻繁にアクセスされるオブジェクトはリストの頭の方へ移る傾向を有し、その時点で最も長い期間にわたって使用されていないオブジェクトは末尾の方へ移され、最後にリストから捨てられる。
【０００３】
上記のネーム・ルックアップ・キャッシュとＬＲＵの実装は、最新の大規模な対称マルチプロセッサ・コンピュータにおいて重大な性能問題を示す可能性を有する。特に、ＬＲＵアルゴリズムはオブジェクトをキャッシュ・リストの頭へ移動させることによって実行されるので、キャッシュ・ヒット毎にまたは新オブジェクトの挿入毎に、セットのリスト・アンカーを、新しいリスト頭オブジェクトを指すように変更しなければならない。最新のメモリー・デザインの種々の特性の故に、頻繁に変更されるグローバル・データは、ＬＲＵアルゴリズムにより組織されたネーム・ルックアップ・キャッシュにおいて重大な性能抑制を示す。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従って、既存の技術の欠点のうちの幾つかに的を絞った、ルックアップ・キャッシュにおいてオブジェクトを維持するための方法及びシステムを案出することが望ましいであろう。
【課題を解決するための手段】
【０００５】
従って、本発明は、ルックアップ・キャッシュにおいてオブジェクトを維持するための方法、コンピュータ・プログラム製品、及びデータ処理システムを提供する。主リストには第１複数のオブジェクトが置かれる。主リストは第１複数のオブジェクトの順不同リストである。副リストには第２複数のオブジェクトが置かれる。副リストは第２複数のオブジェクトの順序付きリストである。定期的に、第１複数のオブジェクトのうちの少なくとも１つのオブジェクトが副リストに降格され、第２複数のオブジェクトのうちの少なくとも１つのオブジェクトが主リストに昇格される。
【０００６】
特許請求の範囲に記載されたルックアップ・キャッシュの主リスト及び副リストへの組織化は、キャッシュに入れられたオブジェクトのリストに対する更新の頻度を在来のルックアップ・キャッシュより低下させるという結果をもたらすことができる。
【０００７】
添付図面を参照して、単に例を挙げて本発明の実施態様を説明する。
【発明を実施するための最良の形態】
【０００８】
ここで図を、特に図１を参照すると、本発明を実施することのできるデータ処理システムの絵画的表現が本発明の好ましい実施態様に従って描かれている。コンピュータ１００が描かれており、これはシステム・ユニット１０２、ビデオ・ディスプレイ端末１０４、キーボード１０６、記憶装置１０８（これはフレキシブル・ディスク・ドライブ及び他の種類の取り外し可能な永続記憶媒体を含み得る）、及びマウス１１０を含む。例えば、ジョイスティック、タッチパッド、タッチスクリーン、トラックボール、マイクロフォンなどの、付加的な入力装置がパーソナル・コンピュータ１００に含まれ得る。コンピュータ１００は、ＩＢＭ（登録商標）  ｅＳｅｒｖｅｒ（登録商標）コンピュータ又はＩｎｔｅｌｌｉＳｔａｔｉｏｎ（登録商標）コンピュータのような任意の適切なコンピュータを用いて実現され得るものであり、これらはニューヨーク州アーモンクにあるＩＢＭ社の製品である。描かれている表現はコンピュータを示しているが、本発明の他の実施態様は、ネットワーク・コンピュータなどの他の種類のデータ処理システムにおいて実現され得る。コンピュータ１００は、好ましくは、コンピュータ１００内で動作するコンピュータ可読媒体に存在するシステム・ソフトウェアによって実現され得るグラフィカル・ユーザ・インターフェース（ＧＵＩ）も含む。
【０００９】
図２を参照すると、本発明の好ましい実施態様に従う、図１のデータ処理システム１００のようなデータ処理システムのブロック図が描かれている。データ処理システム２００は、システム・バス２０６に接続された複数のプロセッサ２０２及び２０４を含む対称マルチプロセッサ（ＳＭＰ）システムであり得る。或いは、シングル・プロセッサ・システムを使用しても良い。システム・バス２０６にはメモリー・コントローラ／キャッシュ２０８も接続されており、これはローカル・メモリー２０９へのインターフェースを提供する。Ｉ／Ｏバス・ブリッジ２１０は、システム・バス２０６に接続され、Ｉ／Ｏバス２１２へのインターフェースを提供する。メモリー・コントローラ／キャッシュ２０８及びＩ／Ｏバス・ブリッジ２１０は、図示されているように統合され得る。Ｉ／Ｏバス２１２に接続された周辺コンポーネント相互接続（ＰＣＩ）バス・ブリッジ２１４は、ＰＣＩローカル・バス２１６へのインターフェースを提供する。数個のモデムをＰＣＩローカル・バス２１６に接続することができる。代表的なＰＣＩバス・インプリメンテーションは４個のＰＣＩ拡張スロット又はアド・イン・コネクタをサポートする。図１のクライアント１０８−１１２との通信リンクを、アド・イン・コネクタを通してＰＣＩローカル・バス２１６に接続されたモデム２１８及びネットワーク・アダプタ２２０を通して提供することができる。
【００１０】
付加的なＰＣＩバス・ブリッジ２２２及び２２４は、付加的なＰＣＩローカル・バス２２６及び２２８のためのインターフェースを提供し、これらから付加的なモデム又はネットワーク・アダプタをサポートすることができる。この様にして、データ処理システム２００は複数のネットワーク・コンピュータへの接続を可能にする。メモリー・マップされたグラフィック・アダプタ２３０及びハード・ディスク２３２も、図示されているように、直接に又は間接的に、Ｉ／Ｏバス２１２に接続され得る。
【００１１】
当業者は、図２に描かれているハードウェアが変化し得ることを理解するであろう。例えば、光ディスク・ドライブなどのような他の周辺装置を、描かれているハードウェアに加えて或いはその代わりとして使用することもできる。描かれている例は、本発明に関してアーキテクチャについての限定条件を示唆するように意図されているわけではない。図２に示されているデータ処理システムは、例えば、Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ（ＡＩＸ（商標））オペレーティング・システム或いはＬＩＮＵＸ（オペレーティング・システムを動作させる、ニューヨーク州アーモンクのＩＢＭ社の製品であるＩＢＭ（登録商標）  ｅＳｅｒｖｅｒ（登録商標）  ｐＳｅｒｉｅｓ（登録商標）システムであって良い。本発明は、キャッシュ・システムに対する更新の頻度を低減し得るキャッシュ・システムを提供する。本書において主リスト及び副リストと称される固定されたサイズの２つの別々のキャッシュ・リストは始めは空である。キャッシュにオブジェクトが加えられるとき、それらは副リストの頭に挿入される。予め定められた間隔で、キャッシュ・リストは、幾つかのオブジェクトを副リストから主リストへ移すことによって更新される。キャッシュ・リストのサイズは固定されているので、キャッシュ更新中に同数のオブジェクトが主リストから副リストへ移される。キャッシュ更新を除いて、主リストのアンカーは変更されず、従って主リストは順不同オブジェクトを含む。副リストは、ＬＲＵアルゴリズムによって順序付きリストとして維持される。図３は、従来どおりに構成されたリンク・リストのデータ構造を含むディレクトリ名ルックアップ・キャッシュ又はファイル・キャッシュのようなルックアップ・キャッシュの線図である。リンク・リスト３００は、ＬＲＵアルゴリズムにより組織された複数のオブジェクト３０２−３０５を含む。オブジェクト３０２−３０５は、各々、関連付けられたリンク３０６−３０９を有する。該ルックアップ・キャッシュは、リンク・リスト３００を参照するアンカー３１０或いはハンドルを含む。例えば、アンカー３１０は、リンク・リスト３００の先頭のすなわち最初のオブジェクトのアドレスを含むポインタであり得る。リンク３０６−３０８は、リンク・リスト内の次のオブジェクトのポインタ又はアドレスを含む。末尾のオブジェクト３０５はリンク・リスト３００の最後のオブジェクトを含み、関連付けられているリンク３０９は、オブジェクト３０５をリンク・リスト３００の最後のオブジェクトとして示すヌル・ポインタを含む。従って、リンク・リスト３００は、該リストの頭にオブジェクト３０２があってオブジェクト３０３−３０５がリンク・リスト３００の２番目から最後のオブジェクトまで順番に並んでいる、論理的に順序付けられたリストを含む。
【００１２】
ＬＲＵアルゴリズムは、一番最近に要求されたオブジェクトがリンク・リスト３００の頭に位置し、最も長い期間にわたって要求されていなかったオブジェクトがリンク・リスト３００の末尾に維持される組織にオブジェクト３０２−３０５を維持する。リンク・リスト３００の頭と末尾との間の中間オブジェクトは、リンク・リスト３００において、関連するオブジェクトの対応する要求順序に従ってリンク・リスト３００中に配置される。従って、図３の実例では、オブジェクト３０２は一番最近に要求されたオブジェクトであって、リンク・リスト３００の頭として置かれる。オブジェクト３０５は、その時点で最も長い期間にわたって要求されていなかったオブジェクトであって、リンク・リスト３００の末尾として置かれる。この様に、オブジェクト３０２−３０５は、一番最近に要求されたオブジェクトから一番長い間要求されていなかったオブジェクトまでリンク・リスト３００に置かれる。図４は、オブジェクト３０４に対するコール又はリクエストの後にＬＲＵアルゴリズムにより組織されたリンク・リスト３００の線図である。ＬＲＵアルゴリズムは、リンク・リストのオブジェクトが要求された順序に従ってリンク・リスト３００の組織を変更する。図示の例では、オブジェクト３０４が要求され、ＬＲＵは、オブジェクト３０４が現時点で一番最近に使用されたオブジェクトであることを適切に示すようにリンク・リストを変更する。例えば、ＬＲＵアルゴリズムは、オブジェクト３０４のアドレスをアンカー３１０に書き、従ってオブジェクト３０４が頭のオブジェクトとして置かれるようにリンク・リストを構成することによって、オブジェクト３０４を参照するようにアンカー３１０を変更することができる。更に、オブジェクト３０４に関連付けられているリンク３０８は、前の頭オブジェクトを適切に参照するように変更される。図示の例では、リンク３０８は、オブジェクト３０４を求めるリクエストの前にはリンク・リスト３００の頭として置かれていたオブジェクト３０２を指すようにＬＲＵアルゴリズムによって変更される。更に、オブジェクト３０３に関連付けられているリンク３０７は、末尾のオブジェクト３０５を指すように変更される。要求されたオブジェクトがルックアップ・キャッシュの中に置かれていなければ、例えばファイル管理システムによって、グローバル探索が実行され得る。要求されたオブジェクトがグローバルに置かれていたならば、それはリクエストを出したエンティティーに戻されてリンク・リスト３００の頭オブジェクトとして挿入される。従って、オブジェクトのための追加容量がリンク・リスト３００内に残っていなければ、末尾のオブジェクト３０５は捨てられる。図４に関して上に記載されたものと同様のリンク・リスト３００の更新が必要である。
【００１３】
本発明の１つの好ましい実施態様では、アンカーは２つのポインタを含むか、又は２つのアンカーとして実装されてもよく、これらは夫々、本書において主リスト及び副リストと称される２つの別々のキャッシュ・リストを指す。各リストは、サイズが固定されており、始めは空である。キャッシュにオブジェクトが加えられるとき、それらのオブジェクトは副リストの頭に挿入される。所定間隔を置いて、キャッシュ・リストは、幾つかのオブジェクトを副リストから主リストへ移すことによって、更新される。それらのキャッシュ・リストのサイズは固定されているので、キャッシュ更新時には、同数のオブジェクトが主リストから副リストに移される。キャッシュ更新は別として、主リストのアンカーは変更されないので、主リストは順不同オブジェクトを含む。副リストはＬＲＵアルゴリズムにより順序付きリストとして維持される。好ましくは、キャッシュ更新時に副リストから主リストに移される１つ又は複数のオブジェクトは、副リスト内でのその順序に基いて選択される。特に、副リストから主リストに昇格されるように選択される一番最近に使用されたオブジェクトのうちの１つ以上は、副リストの頭から、又は副リストの頭を含む連続したオブジェクトのセットから、選択される。キャッシュ更新時に主リストから副リストに降格されるべきオブジェクト又はオブジェクトのセットを選択するために種々のパラメータ又は決定基準のうちの任意の１つを使用することができる。例えば、主リスト及び副リストの少なくとも一方の中のオブジェクトについてのリクエスト総数を累積するためにヒット・カウンタを使用することができる。所定のキャッシュ更新間隔を置いて、副リストに降格させるために、閾値より少ないヒット総数を有する１つ以上のオブジェクトを選択することができる。
【００１４】
或いは、最小のヒット総数を有する所定数のオブジェクトを、副リストに降格させるべく選択することができる。別の実施態様では、キャッシュ・システムは、主リスト中のオブジェクトの全てのヒット総数を評価し、それらを副リスト中のオブジェクトのヒット総数と比較することができる。主リストにおいて、副リスト中の１つのオブジェクトのヒット総数より少ないヒット総数を有する任意のオブジェクトを、副リストに降格させるべく選択することができ、同時に、副リストにおいて、主リストのオブジェクトのヒット総数より大きなヒット総数を有するオブジェクトは主リストに昇格される。副リストに降格させる主リストのオブジェクトを選択するための他のインプリメンテーションを適宜代用することができる。図５は、本発明の好ましい実施態様に従って実現されたキャッシュ・システムである。該キャッシュ・システムは主リスト４００及び副リスト４１０を含む。主リスト４００は、夫々のリンク４０６−４０９を各々有する１つ以上のオブジェクト４０２−４０５を含む。アンカー４０１は主リスト４００を参照する。例えば、アンカー４０１は、オブジェクト４０２−４０５のうちの１つへのアドレスを含むポインタとして実現され得る。図示の例では、アンカー４０１はオブジェクト４０２へのポインタを含む。リンク４０６−４０８はリスト４００内の夫々のオブジェクトを参照する。オブジェクト４０５に関連するリンク４０９は、関連するオブジェクト４０５が主リスト４００の末尾オブジェクトであることを示すヌルを含む。主リスト４００のオブジェクトは、論理的順序付けで維持されるものではない。すなわち、ＬＲＵアルゴリズム又はその他の順序付けアルゴリズムは、リスト４００内のオブジェクト４０２−４０５の順序を維持しない。
【００１５】
更に、キャッシュ・システムは、オブジェクト４１２−４１５と、関連するリンク４１６−４１９とを含む副リスト４１０を含む。副リスト４１０は、頭オブジェクト４１２、末尾オブジェクト４１５、及びこれらの間に位置する中間オブジェクト４１３及び４１４を含む順序付きオブジェクト・リストである。アンカー４１１は、副リスト４１０の頭として位置するオブジェクトを指すことにより副リスト４１０を指すポインタを含む。図５の例では、副リスト４１０は、頭オブジェクトとして位置するオブジェクト４１２と末尾オブジェクトとして位置するオブジェクト４１５とを有するように構成されている。本発明の好ましい実施態様に従って、副リスト４１０の中のオブジェクト４１２−４１５の位置が、それらのオブジェクトが要求されるか、又は他の何らかの形で使用された順序に対応するように、ＬＲＵ又は他の適切なアルゴリズムがオブジェクト４１２−４１５をそれらの関連する使い方に従ってシーケンシャルに順序付ける。特に、副リスト４１０の頭オブジェクトは一番最近に使用されたオブジェクトとして維持され、残りの各オブジェクトは、それらに関連する使い方に従って降順に配置される。
【００１６】
上で述べたように、主リスト４００中のオブジェクトは、何らかの使用順序に従ってリスト４００中に維持されるのではない。例えば、オブジェクト４０３を求めるリクエストが行われると仮定しよう。本発明のキャッシュ・システムは、始めに、要求されたオブジェクトが主リスト４００で維持されているか否か判断するために主リスト４００を探索する。要求されたオブジェクトが主リスト４００に格納されていた場合には、例えばアプリケーション又はファイル・システムなどの、要求をしたエンティティーに、要求されたオブジェクトが返される。要求されたオブジェクトが主リスト４００から読み出されたことに起因する主リストの更新は行われない。
【００１７】
例を挙げる目的で、オブジェクト４１４を求めるリクエストが発せられたと仮定しよう。キャッシュ・システムは、始めに主リスト４００を探索し、要求されたオブジェクトが主リスト４００に格納されていないと判断する。キャッシュ・システムは、その後、副リスト４１０を探索し始める。図示の例では、オブジェクト４１４が、要求を発したエンティティーに返される。更に、副リストは、オブジェクトの、使用に応じた降順を適切に含むように更新される。本発明の好ましい実施態様に従って実現されるキャッシュ・システムの図６の線図に示されているように、キャッシュ・システムは、副リスト４１０の頭オブジェクトを指すアンカー４１１を、一番最近に要求されたオブジェクト４１４を指すように変更する。更に、オブジェクト４１４と関連するリンク４１８は、副リスト４１０において上から２番目のすなわち２番目に最近に使用されたオブジェクトに降格される、前の頭オブジェクト４１２を指すように変更される。同様に、リンク４１７は、末尾オブジェクト４１５を指すように変更される。副リスト４１０は、オブジェクトの使用の降順におけるオブジェクトの連続的順序付けを維持するように更新される。図６の例では、オブジェクト４１４は論理的に頭オブジェクトとして置かれて、オブジェクト４１４が副リスト４１０の中で一番最近に使用されたオブジェクトであることを示す。オブジェクト４１２，４１３、及び４１５は、これらの使用に応じて降順に構成される。
【００１８】
ここで、主リスト４００にも副リスト４１０にも置かれていないオブジェクトが要求されたと仮定しよう。キャッシュ・システムは、主リスト及び副リストを探索した後、要求されたオブジェクトのグローバル検索を試みることができる。例えば、キャッシュ・システムは、要求されたオブジェクトを検索しようと試みるファイル管理システム又は他の適切なアプリケーションとインターフェースすることができる。要求されたオブジェクトがグローバル検索で得られた場合、要求されたオブジェクトは、要求をしたエンティティーに戻される。更に、グローバルに検索されたオブジェクトを副リスト４１０に加えることによって、キャッシュ・システムは更新される。特に、グローバルに検索されたオブジェクトは副リスト４１０に頭オブジェクトとして加えられ、副リスト４１０の前の末尾オブジェクトは副リスト４１０から捨てられる。
【００１９】
図７は、本発明の好ましい実施態様に従う、要求されたオブジェクトのグローバル検索の後の、図５及び６に示されているキャッシュ・システムの線図である。図示の例において、要求されたオブジェクト（この例ではオブジェクト＿Ｘと称されている）は主リスト４００及び副リスト４１０には置かれていなくて、その後のグローバル探索の結果として要求されたオブジェクトの位置が得られたと仮定する。グローバルに探索されたオブジェクトは、要求をしたエンティティーに戻され、副リスト４１０に頭オブジェクトとして挿入される。図示の例では、オブジェクト４２１がグローバルに検索されたオブジェクトであり、副リスト４１０に挿入される。アンカー４１１は、グローバルに検索されたオブジェクト４２１を指すように変更される。更に、オブジェクト４２１に関連するリンク４２２は前の頭オブジェクト４１４を指すように構成され、リンク４１７は、関連するオブジェクト４１３が末尾オブジェクトであることを示すヌル・ポインタに変更される。前の末尾オブジェクト（図６のオブジェクト４１５）は、副リスト４１０内に新たに挿入されるオブジェクト４２１のために充分な容量を提供するように、捨てられている。
【００２０】
図８は、本発明の好ましい実施態様に従って実行される定期的キャッシュ更新後の図５−７のキャッシュ・システムの線図である。キャッシュ・システムに対する更新は、好ましくは所定間隔を置いて実行される。キャッシュ更新は、順序付き副リストと順不同主リストとの間でオブジェクトを交換するように設計される。好ましくは、副リストのオブジェクトと交換される主リストのオブジェクトは、副リストから昇格されるオブジェクトよりも使用頻度が少ない。従って、主リストと副リストとの間でオブジェクトを交換するか否か鑑定するために、主リスト及び副リストの少なくとも一方の中のオブジェクトのヒット総数、又は他の適切なメカニズムを用いることができる。図８は、オブジェクト４０３及び４０４を副リスト４１０に降格させると鑑定すると共にオブジェクト４１４及び４２１を副リスト４１０から主リスト４００に昇格させると鑑定するという結果をもたらしたキャッシュ更新鑑定を示している。この例では、主リスト４００から副リスト４１０に移されたオブジェクト４０３及び４０４は、副リスト４１０の下端に置かれている。他のインプリメンテーションは、主リスト４００から降格されたオブジェクトを副リスト４１０の上端に置くことができ、或いは、主リスト４００から降格されたオブジェクトは、副リスト４１０のオブジェクトと比較した使用パラメータ又は他のパラメータに基づいて副リスト４１０内に置かれても良い。
【００２１】
図９は、本発明の好ましい実施態様に従って実施される、要求されたオブジェクトを見つけるためにルックアップ・キャッシュにより実行される処理のフローチャートである。ルックアップ・キャッシュ処理ルーチンは、好ましくは、例えばローカル・メモリー２０９から取り出されてプロセッサ２０２又は２０４のような処理ユニットによって実行されるコンピュータ可読の命令セットとして実現される。該ルーチンは、初期化され（ステップ５０２）、オブジェクトを求めるリクエストの受け取りを待つ（ステップ５０４）。オブジェクトを求めるリクエストの受け取りに応答して、その要求されたオブジェクトを探す探索が主リストで実行される（ステップ５０６）。要求されたオブジェクトが主リストに置かれているか否かを判断する鑑定が行われる（ステップ５０８）。要求されたオブジェクトが主リスト中に置かれていた場合には、ルーチンはそのオブジェクトを要求元のエンティティーに戻し（ステップ５１０）、その後、ルーチンを続行するべきか否か判断する鑑定が行われる（ステップ５１２）。ルーチンが続行されるべきである場合には、処理はステップ５０４に戻って次のオブジェクト・リクエストの受け取りを待つ。ルーチンが終了するべきであると判断されたならば、キャッシュ・ルックアップ・ルーチンは終了する（ステップ５３０）。
【００２２】
もう一度ステップ５０８に戻って、要求されたオブジェクトが主リストの中に置かれていない場合には、ルーチンは副リストを探索し始めて、要求されたオブジェクトが副リストの中にあるか否か鑑定する（ステップ５１４）。キャッシュ・ルックアップ・ルーチンは、もし要求されたオブジェクトが副リストの中に置かれていたならば、要求されたオブジェクトを戻し（ステップ５１６）、そのオブジェクトを副リストの頭に移し（ステップ５１８）、ルーチンはステップ５１２に進んでキャッシュ・ルックアップ・ルーチンを続行するべきか否か鑑定する。
【００２３】
もしステップ５１４においてオブジェクトが副リストに置かれていないと判断されたならば、グローバル探索が実行されて、要求されたオブジェクトがグローバルに置かれているか否か判断する鑑定が行われる（ステップ５２０）。もしオブジェクトがグローバルに置かれていたならば、要求されたオブジェクトは要求元のエンティティーに戻される（ステップ５２２）。その後、副リストの末尾オブジェクトが捨てられ（ステップ５２４）、グローバルに検索されたオブジェクトが新しい頭オブジェクトとして副リストに加えられる（ステップ５２６）。キャッシュ・ルックアップ・ルーチンはその後にステップ５１２に戻って、付加的な処理を実行するべきか否か鑑定する。ステップ５２０でオブジェクトがグローバルに置かれていなかった場合には、要求元のエンティティーにエラー・メッセージを戻すことができ、ルーチンはステップ５１２に進んで付加的な処理を実行するべきか否か鑑定する。
【００２４】
この様に、キャッシュ更新の頻度を減少させる最適化されたＬＲＵ機能を有する最適化されたルックアップ・キャッシュが提供される。特に、ルックアップ・キャッシュは順不同オブジェクトの主リストと順序付きオブジェクトの副リストとを含む。オブジェクトを副リストから主リストに昇格させ、オブジェクトを主リストから副リストに降格させるために定期的更新が行われる。副リストの最も頻繁に使用されるオブジェクトを主リストに定期的に移すことによって、主リストは最も頻繁に使用されるオブジェクトを維持するようになる。主リストからのオブジェクトの読み出しは、主リストが順不同リストであるために修正又は改訂という結果をもたらさない。従って、ルックアップ・キャッシュに対して行われる更新は従来のルックアップ・キャッシュ・システムの場合より低頻度であり得る。
【００２５】
本発明は完全に機能するデータ処理システムとの関連で記載されているけれども本発明のプロセスが命令のコンピュータ可読媒体の形及びいろいろな形で配布され得るものであること並びに本発明が該配布を行うために実際に使用される信号担持媒体の具体的なタイプとは無関係に等しく適用され得るものであることを当業者が理解するであろうことに留意することは重要である。コンピュータ可読媒体の例は、フレキシブルディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭのような記録可能型の媒体、並びにディジタル及びアナログの通信リンク、例えば無線周波数伝送及び光波伝送などの伝送形を使用する有線又は無線の通信リンクのような伝送型媒体を含む。コンピュータ可読媒体は、特定のデータ処理システムで実際に使用されるために復号される符号化されたフォーマットの形をとることができる。本発明の説明は、例証及び説明を目的として呈示されており、網羅的であることや、開示された形の発明に限定されることを意図してはいない。多くの変更及び変形が当業者にとっては明らかであろう。実施態様は、本発明の原理、実際的な応用例を最善に説明し、当業者が本発明を、意図されている特定の用途に適する種々の変更を有する種々の実施態様について理解できるようにするために、選択され記載された。
【図面の簡単な説明】
【００２６】
【図１】本発明の好ましい実施態様を実施することのできるデータ処理システムの絵画的表現である。
【図２】本発明の好ましい実施態様を実施することのできるデータ処理システムのブロック図である。
【図３】従来のようにリンク・リスト・データ構造を含む、ディレクトリ名ルックアップ・キャッシュ又はファイル・キャッシュのようなキャッシュの線図である。
【図４】従来のようにオブジェクト３０４に対するコール又はリクエストの後にＬＲＵアルゴリズムにより組織されるリンク・リスト３００の線図である。
【図５】本発明の好ましい実施態様に従って実現された主リスト及び副リストを含むキャッシュ・システムである。
【図６】副リストのキャッシュ・ヒットの後のキャッシュ・システムの再組織化を示す図５のキャッシュ・システムの線図である。
【図７】要求されたオブジェクトのグローバル検索の後の図５及び６に示されているキャッシュ・システムの線図である。
【図８】本発明の好ましい実施態様に従って実行された定期的キャッシュ更新の後の図５−７のキャッシュ・システムの線図である。
【図９】本発明の好ましい実施態様に従って、要求されたオブジェクトを戻すためにキャッシュ・システムにより実行される処理のフローチャートである。
【図１】
2008502965.tif 000003
【図２】
2008502965.tif 000004
【図３】
2008502965.tif 000005
【図４】
2008502965.tif 000006
【図５】
2008502965.tif 000007
【図６】
2008502965.tif 000008
【図７】
2008502965.tif 000009
【図８】
2008502965.tif 000010
【図９】
2008502965.tif 000011
【国際調査報告】
2008502965.tif 000012
2008502965.tif 000013
2008502965.tif 000014