(57)【要約】【課題】  複数のメモリ・バッファ・サイズを均衡させるためのシステムおよび方法を提供する。【解決手段】  複数のメモリ・バッファ・サイズを均衡させるためのシステムは複数のサブグループに区分化されたメモリを含む。各サブグループは同じサイズのバッファを含む。このシステムは、更に、バッファ・スチール履歴レコードをバッファ・スチール履歴キューに記憶することおよび再アクセスすることによって、バッファ・スペースを求めるリクエストを管理するメモリ・マネージャを含む。【選択図】  図１
2005276198.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリ・バッファ・サイズにおける種々のサイズのメモリ区分化を管理するための方法であって、
受け取ったデータを記憶することを所与のサイズのメモリ・バッファに求める第１のリクエストを受けるステップと、
（ａ）前記メモリ・バッファにおけるキャッシュ・データの少なくとも一部分を二次メモリに記憶し
（ｂ）前記キャッシュ・データが事前に記憶された前記メモリ・バッファにおける位置に、前記受け取ったデータを記憶する、
ことによって前記メモリ・バッファをスチールするステップと、
バッファ・スチール履歴レコードを作成するステップと、
を含み、
前記バッファ・スチール履歴レコードは、前記キャッシュ・データの前記二次メモリにおけるロケーションを識別するための一意的識別子を含み、
前記バッファ・スチール履歴レコードは、前記メモリ・バッファをスチールすることを求めるその後のリクエストが、前記二次メモリに事前に書き込まれた前記キャッシュ・データの再アクセスであるかどうかを決定するために使用される、方法。
【請求項２】
バッファ・スチール履歴レコードを作成する前記ステップは、前記メモリ・バッファのスチール・シーケンスに関連するシーケンス番号を有するバッファ・スチール・バッファを作成するステップを含む、請求項１に記載の方法。
【請求項３】
更なる受け取ったデータを記憶することを前記メモリ・バッファに求める第２のリクエストを受けるステップと、
前記バッファ・スチール履歴レコードを使用して前記二次メモリにおけるキャッシュされた部分を再アクセスするステップと、
を更に含む、請求項１に記載の方法。
【請求項４】
グループ分けされた同じサイズのバッファを有する少なくとも１つのサブグループに前記メモリ・バッファを区分化するステップを更に含む、請求項１に記載の方法。
【請求項５】
バッファ・スチール履歴レコードを作成する前記ステップは、同じサイズのバッファを有する前記サブグループから、前記メモリ・バッファのスチール・シーケンスに関連するシーケンス番号を有するバッファ・スチール・バッファを作成するステップを含む、請求項４に記載の方法。
【請求項６】
グループ分けされた同じサイズのバッファを有する少なくとも１つのサブグループに前記メモリ・バッファを区分化する前記ステップは、前記バッファ・スチール履歴に基づいて前記メモリ・バッファを区分化する、請求項５に記載の方法。
【請求項７】
前記メモリ・バッファを区分化する前記ステップは、
（ａ）前記サブグループからスチールされそして再アクセスされたすべてのバッファに対する平均差を累算し、
（ｂ）前記サブグループにおける再アクセスの重要性を決定し、
（ｃ）各グループの優先順位を比較することによって前記メモリ・バッファを識別する、
ことによって、各サブグループに対して、当該サブグループの優先順位を計算するステップを含み、
前記メモリ・バッファは最も低い優先順位を有するサブグループ内で位置指定される、請求項６に記載の方法。
【請求項８】
前記バッファ・スチール履歴レコードをバッファ・スチール履歴キューに加えるステップを更に含み、前記バッファ・スチール履歴キューはゼロまたは１つ以上のバッファ・スチール履歴レコードを含む、請求項１に記載の方法。
【請求項９】
複数のメモリ・バッファ・サイズを均衡させるための方法であって、
１つまたは複数のバッファ・スチール履歴レコードを含むバッファ・スチール履歴キューを形成するステップにして、前記１つまたは複数のバッファ・スチール履歴レコードの各々は二次メモリのロケーションに記憶された１つまたは複数のキャッシュ・データを識別するための一意的識別子を含む、ステップと、
バッファにデータを記憶するためのリクエストを受けるステップと、
前記受けたリクエストを、前記１つまたは複数のバッファ・スチール履歴レコードの各々に関する一意的識別子の各々に比較するステップと、
前記リクエストにおけるデータがバッファ・スチール履歴レコードの一意的識別子の１つに適合するとき、前記キャッシュ・データを前記二次メモリから再アクセスするステップと、
を含む、方法。
【請求項１０】
前記バッファ・スチール履歴レコードはシーケンス番号を含み、
前記バッファ・スチール履歴レコードのシーケンス番号と、対応するバッファ・サイズ・サブグループに対する現在のシーケンス番号との間の差を計算するステップと、
前記差を前記対応するバッファ・サイズ・サブグループに比較するステップと、
前記対応するバッファ・サイズ・サブグループが少なくとも前記差に等しいとき、前記キャッシュ・データを求めて前記対応するバッファ・サイズ・サブグループを再アクセスするステップと、
を含む、請求項９に記載の方法。
【請求項１１】
前記対応するバッファ・サイズ・サブグループが前記差よりも小さいとき、前記二次メモリから前記キャッシュ・データを再読み出しするステップを更に含む、請求項１０に記載の方法。
【請求項１２】
前記差は、前のバッファ・スチールと現在のリクエストされた再アクセスとの間の前記対応するバッファ・サイズ・サブグループからスチールされたバッファの数を含む、請求項１１に記載の方法。
【請求項１３】
各々が複数の同じサイズのバッファを含む複数のサブグループの各々に対して、
（ａ）前記サブグループからスチールされそして再アクセスされたすべてのバッファに対する平均差を累算し、
（ｂ）前記サブグループにおける再アクセスの重要性を決定する
ことによって前記サブグループに対する優先順位を計算するステップと、
各サブグループの優先順位を比較することにより、バッファに対するリクエストに応答してバッファ・スチール・ターゲットを識別するステップと、
を含み、
前記バッファ・スチール・ターゲットは最も低い優先順位を有するバッファである、請求項１１に記載の方法。
【請求項１４】
複数のメモリ・バッファ・サイズを均衡させるためのシステムであって、
複数のサブグループ内に配列された複数のバッファであって、各サブグループが１つまたは複数の同じサイズのバッファを含む、バッファと、
複数のバッファ・スチール履歴レコードを含むバッファ・スチール履歴キューと、
メモリ・マネージャを含むコントローラと、
を有し、
前記メモリ・マネージャは、
（ａ）受け取ったデータをメモリに記憶することをバッファに求める第１のリクエストを受け、
（ｂ）前記複数のサブグループの１つから、キャッシュ・データを含む１つのバッファを識別し、
（ｃ）二次記憶装置におけるロケーションに前記キャッシュ・データを記憶すること、および前記受け取ったデータを前記バッファに記憶すること、によって前記バッファをスチールし、
（ｄ）バッファ・スチール履歴レコードを作成する
ように適応し、
前記バッファ・スチール履歴レコードは、前記キャッシュ・データの前記二次記憶装置におけるロケーションを識別するための一意的識別子を含み、前記バッファをスチールすることを求めるその後のリクエストが前記二次記憶装置に事前に書き込まれた前記キャッシュ・データの再アクセスであるかどうかを決定するために使用される、システム。
【請求項１５】
前記メモリは、グループ分けされた同様のサイズのバッファを有する複数のサブグループに区分され、前記バッファは前記複数のサブグループの１つにおいてグループ分けされる、請求項１４に記載のシステム。
【請求項１６】
前記メモリ・マネージャは、
（ａ）前記サブグループからスチールされそして再アクセスされたすべてのバッファに対して平均差を累算し、
（ｂ）前記サブグループにおける再アクセスの重要性を決定し、
（ｃ）各サブグループの優先順位を比較することによって前記バッファを識別する
ことによって、前記複数のサブグループの各々に対して、前記サブグループに対する優先順位を計算するように更に適応し、
前記バッファは、最も低い優先順位を有するサブグループにおいて位置指定される、請求項１４に記載のシステム。
【請求項１７】
前記バッファ・スチール履歴レコードが前記バッファ・スチール履歴キューに加えられる、請求項１４に記載のシステム。
【請求項１８】
複数のメモリ・バッファ・サイズを均衡させるためのシステムであって、
複数のサブグループ内に配列された複数のバッファにして、前記サブグループが１つまたは複数の同じサイズのバッファを含む、複数のバッファと、
１つまたは複数のバッファ・スチール履歴レコードを含むバッファ・スチール履歴キューにして、前記１つまたは複数のバッファ・スチール履歴レコードの各々が、二次メモリのロケーションに記憶された１つまたは複数のキャッシュ・データを識別するための一意的識別子を含む、バッファ・スチール履歴キューと、
メモリ・マネージャを含むコントローラと、
を含み、
前記メモリ・マネージャは、
前記１つまたは複数のバッファ・スチール履歴レコードの１つから、データをバッファに記憶するためのリクエストを受け、
前記受けたリクエストを、前記１つまたは複数のバッファ・スチール履歴レコードの各々における一意的識別子の各々に比較し、
その後のリクエストにおけるデータが前記１つまたは複数のバッファ・スチール履歴レコードの１つにおける一意的識別子に適合するとき、前記二次メモリからの前記キャッシュ・データを再アクセスする、
ように適応する、システム。
【請求項１９】
前記バッファ・スチール履歴レコードが更にシーケンス番号を含み、前記メモリ・マネージャが、更に、
前記バッファ・スチール履歴レコードのシーケンス番号と、対応するバッファ・サイズ・サブグループに対する現在のシーケンス番号との差を計算し、
前記差を前記対応するバッファ・サイズ・サブグループに比較し、
前記対応するバッファ・サイズ・サブグループが少なくとも前記差のサイズであるとき、前記対応するバッファ・サイズ・サブグループにおける前記キャッシュ・データを再アクセスする
ように適応する、請求項１８に記載のシステム。
【請求項２０】
請求項１６において定義されるように複数のメモリ・バッファ・サイズを均衡させるために、前記メモリ・マネージャは、更に、前記対応するバッファ・サイズ・サブグループが前記差のサイズよりも小さい小さいとき、前記二次メモリから前記キャッシュ・データを再読み出しするように適応する、請求項１４に記載の方法。
【請求項２１】
前記一意的識別子が前記バッファのデータのディスク・アドレスを含む、請求項１４に記載のシステム。
【請求項２２】
複数のメモリ・バッファ・サイズ全体にわたる可変サイズ・メモリ区分化を管理するためのコンピュータ・プログラムであって、
処理回路による読み出しが可能な記憶媒体にして、
受け取ったデータを記憶することを所与のサイズのメモリ・バッファに求める第１のリクエストを受けるステップと、
（ａ）前記メモリ・バッファにおけるキャッシュ・データの少なくとも一部分を二次メモリに記憶し、
（ｂ）前記キャッシュ・データが事前に記憶された前記メモリ・バッファにおける位置に前記受け取ったデータを記憶する
ことによって前記メモリ・バッファをスチールするステップと、
バッファ・スチール履歴レコードを作成するステップであって、前記バッファ・スチール履歴レコードは、前記キャッシュ・データの前記二次メモリにおけるロケーションを識別するための一意的識別子を含み、前記バッファ・スチール履歴レコードは、前記メモリ・バッファをスチールすることを求めるその後のリクエストが前記二次メモリに事前に書き込まれた前記キャッシュ・データの再アクセスであるかどうかを決定するために使用される、ステップと、
を含む方法を遂行するために前記処理回路による実行のためのコンピュータ命令を記憶する、コンピュータ・プログラム。
【請求項２３】
バッファ・スチール履歴レコードを作成する前記ステップは、前記メモリ・バッファのスチール・シーケンスに関連するシーケンス番号を有するバッファ・スチール・バッファを作成するステップを含む、請求項２２に記載のコンピュータ・プログラム。
【請求項２４】
更なる受け取ったデータを記憶することを前記メモリ・バッファに求める第２のリクエストを受けるステップと、
前記バッファ・スチール・レコードを使用して前記二次メモリにおけるキャッシュ・データの一部分を再アクセスするステップと、
を更に含む、請求項２２に記載のコンピュータ・プログラム。
【請求項２５】
グループ分けされた同じサイズのバッファを有する少なくとも１つのサブグループに前記メモリ・バッファを区分化するステップを更に含む、請求項２２に記載のコンピュータ・プログラム。
【請求項２６】
バッファ・スチール履歴レコードを作成する前記ステップは、前記メモリ・バッファのスチール・シーケンスに関連するシーケンス番号を持ったバッファ・スチール・バッファを作成するステップを含む、請求項２５に記載のコンピュータ・プログラム。
【請求項２７】
グループ分けされた同じサイズのバッファを有する少なくとも１つのサブグループに前記メモリ・バッファを区分化する前記ステップは、前記バッファ・スチール履歴に基づいて前記メモリ・バッファを区分化するステップを含む、請求項２６に記載のコンピュータ・プログラム。
【請求項２８】
前記メモリ・バッファを区分化する前記ステップは、
（ａ）前記サブグループからスチールされそして再アクセスされたすべてのバッファに対して平均差を累算し、
（ｂ）前記サブグループにおける再アクセスの重要性を決定し、
（ｃ）各サブグループの優先順位を比較することによって前記メモリ・バッファを識別する
ことによって、各サブグループに対して、前記サブグループに対する優先順位を計算するステップを含み、
前記メモリ・バッファは最も低い優先順位を有するサブグループにおいて位置指定される、請求項２７に記載のコンピュータ・プログラム。
【請求項２９】
前記バッファ・スチール履歴レコードをバッファ・スチール履歴キューに加えるステップを更に含み、前記バッファ・スチール履歴キューはゼロまたは１つ以上のバッファ・スチール履歴レコードを含む、請求項２２に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に云えば、コンピュータ・システムのメモリ管理システムの分野に関し、特に、可変サイズのメモリ区分化および割り振りに関するものである。
【背景技術】
【０００２】
過去十数年来、コンピュータの普及率および生活の主流へのコンピュータの浸透が劇的に増加した。消費者の使用が爆発的に増加するにつれて、消費者の信頼の向上が、この情報ポータルからの多様化した機能に対する益々増える要求を活気づけてきた。消費者はより速い情報アクセスを求めるので、情報に対する満足のサイクル・タイムは絶えず減少している。今では、１つの典型的な実現方法においては、メモリ管理技術に従って、情報がビットおよびバイトとして装置のメモリに記憶され、再呼び出しされる。少ない時間で情報を求める要請は拡大し続けているので、メモリ管理の必要性は重要度を増している。
【０００３】
代表的な既存のメモリ管理方式では、メモリが、バッファと呼ばれる使用のための個別の領域に区分化される。必要な情報は、ハード・ディスク、フロッピ・ディスク（商標）、テープ、およびその他の不揮発性メモリのような二次記憶装置から検索される。データが検索された後、パフォーマンス上の理由で、それは、上書きされる前に所与の期間中にメモリ・バッファ領域に記憶、即ち、「キャッシュ」される。最も多く使われるデータを常駐メモリまたはメモリ・バッファにキャッシュした状態で保つことは、要求アプリケーションによるそのデータの連続した使用を可能にする。更に、メモリ・バッファまたは常駐メモリにデータを保持することは、高価なキャッシュ・メモリまたは常駐メモリにもかかわらず、二次記憶装置入出力（Ｉ／Ｏ）オペレーションおよび二次記憶装置Ｉ／Ｏに関連した時間上の不都合を、より高速のものに比べて、少なくするか或いは排除することさえある。メモリ区分化の１つの方法は、ページと呼ばれる基本的なブロックにメモリを分割する仮想メモリ・マネージャ（ＶＭＭ）の使用によるものである。１つの典型的なＶＭＭでは、これらのページが同じサイズであり、個々のページがバッファによってキャッシュされる。静的ページ・サイズはＶＭＭによる管理を容易にするように選択されるので、ファイル・システムまたはディスク装置の要件にとって必ずしも最適なサイズが生じるとは限らない。１つの典型的なＶＭＭの実施方法では、複数のページが単一のバッファ内に記憶されることがある。検索されるデータのサイズを、１つまたは複数のＶＭＭページに均等に分割および記憶することができないときに問題が生じる。その状況は、全静的ページのメモリ割り振りを利用すると、部分的にしか満たされない半端なページを残すことがある。その半端なページが追加のバッファの使用を必要とするとき、またはページの数がバッファ・サイズを均等に分割することも記憶することもできないためにもっと効率の悪いメモリ割り振りを生じさせる場合、問題は更に悪化する。
【０００４】
バッファを種々なサイズで作り、同じサイズのバッファがグループおよびサブグループとなって配列されることにより管理することが可能となる。特定のサイズのバッファを求めるリクエストが同じサイズのバッファのグループ化によって満足されることがある。そのリクエストされたサイズを満たすバッファが存在しない場合、大きいバッファを分割するかまたは小さいバッファを結合して適正なサイズのバッファにするためには、追加のオペレーションを被らなければならない。
【０００５】
バッファを分割するかまたは結合するという追加のオーバヘッドは設計選択に関するそれ特有のセットを有する。特に、断片化およびバッファの結合および分割の断片化および不利益、並びにそれらの構成ユーザにおける影響が主な懸念事項である。これらの理由で、バッファ・リクエストと同じサイズを有するバッファのサブグループにおいて、そのリクエストをほぼ満足することができるということを、良好な設計選択によって保証しようとすべきである。
【０００６】
二次メモリからの更なるデータがリクエスティング・アプリケーションによって要求され且つすべてのバッファが使用中であるとき、クリティカルなバッファリングの判断が生じる。必要とされる新しいデータに対してどのバッファが利用されるべきか。更に一般的には、どのバッファが新たなデータでもって上書きされるべきか。主流のメモリ管理の原理はこの置換ポリシを呼び出す。キャッシュまたはメモリ・バッファに記憶されたデータを上書きするプロセスは、この分野ではバッファ・スチールとしても知られている。種々の判断アルゴリズムが存在し、使用される置換方法のタイプからこのような名前を採用している。例えば、「最近最低使用頻度（ＬＲＵ）」、「最低使用頻度（ＬＦＵ）」、および「最近最高使用頻度（ＭＲＵ）」として知られたいくつかの一般的に使用されるアルゴリズムが存在する。その名称が意味するときのＬＲＵアルゴリズムというものを更に詳しく調べると、新しいバッファが必要であるとき、置換のために選択されるバッファは、最も長い期間アクセスされてないバッファである。
【０００７】
単独または組み合わせで選ばれたＬＲＵ、ＬＦＵ、およびＭＲＵというこれらの手法は、置換されたバッファにあったデータを再読み出しする必要性が最少になるようにするにはどのバッファをスチールすべきかということを決定するためには有用であるけれども、これらの手法は欠点がないわけではない。１つの欠点は、選択基準に関係なく、バッファ・スチールの目的は、置換されたデータを再読み出しする必要性を最小にすることである。例えば、スチールされそして二次記憶装置に書き込まれるデータを有するバッファが、実際には、アプリケーションによって直ぐに再アクセスされることがあり、従って、新たなバッファ・スチールおよび前にキャッシュされていたデータに関する二次記憶装置からの再読み出しを被ることがある。従って、データを二次記憶装置からメモリ・バッファに再アクセスまたは再読み出しする数を最小にするよう所与のグループにおけるバッファおよびバッファ・サイズを最適化するためには、メモリ・バッファにどのくらい長期間あるものを廃棄してしまうかを決定する必要がある。
【０００８】
更に、単独で選ばれたＬＲＵ、ＬＦＵ、またはＭＲＵの使用は、バッファ・サイズの決定および割り振りを助けるものではない。例えば、使用される判断情報が最後のアクセスからの最大期間である場合、ＬＲＵのような非常に少ない情報に基づいて頻繁にページが脱落またはスチールされる。システムは、バッファをメモリ内で使用状態に保つことが少ないかなりの価値あるシステム資源を十分に使用せずに、ほとんどまたは全くアクセスのないバッファと稀なアクセスを持つバッファとの間を区別することができない。異なるサイズのバッファを提供し、これらの種々なサイズのバッファをサブグループに分離するメモリ管理システムは、１つのサイズのバッファに対する要求と他のサイズのバッファに対する要求とを均衡させなければならない。最適均衡アルゴリズムは、近い将来に再び使用される予定のないバッファだけをスチールするであろう。これは、適切なサイズのバッファのサブグループにおけるスチールが十分であること、或いは、大きいバッファからのスチールおよび分離、または小さいバッファからのスチールおよび合体が必要であることを意味する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従って、上記ような従来技術の欠点を克服する必要があり、スチール事象および種々のサイズのバッファ・メモリの割り振りを最適化するための方法および装置を提供する必要がある。
【課題を解決するための手段】
【００１０】
本発明によれば、スチール履歴を通して複数のメモリ・バッファ・サイズを均衡させるためのシステムおよび方法が提供される。そのシステムは、複数のサブグループに区分されたメモリを含み、各サブグループは１つまたは複数の同じサイズのバッファを含む。更に、そのシステムは、メモリ・マネージャを有するコントローラを含む。
【００１１】
メモリ・マネージャは、受け取ったデータをメモリに記憶することを求めるリクエストを受けたことに応答して１つのバッファを識別し、その識別されたバッファにおけるキャッシュ・データを二次記憶装置に記憶することによってその識別されたバッファをスチールし、バッファ・スチール履歴レコードを作成するように適応する。バッファ・スチール履歴レコードは、キャッシュ・データの二次記憶装置を識別するための一意的識別子を含み、バッファが第２の受け取ったデータを記憶することを求めるその後のリクエストを受けたことに応答して、そのキャッシュ・データに関する如何なる再アクセスも識別するためにバッファ・スチール履歴レコードを使用する。更に、第２の受け取ったデータはキャッシュ・データを含み、区分されたメモリをバッファ・サブグループ間で均衡させるためにもバッファ・スチール履歴レコードを使用する。
【発明を実施するための最良の形態】
【００１２】
必要に応じて、本発明の詳細な実施例が本明細書において開示される。しかし、開示された実施例は、種々の形で組み込み可能である本発明の単なる例示であるということを理解すべきである。従って、本願において開示される特定の構造上および機能上の詳細は限定するものとして解釈されるべきではなく、単に、「特許請求の範囲」に対する基礎として、および実質的に任意の適度に詳細な構造で本発明を種々に使用するよう当業者に教示するための代表的な基礎として、解釈されるべきである。更に、本願において使用される用語および語句は限定することを意図するものではなく、むしろ、本発明に関する理解可能な説明を提供することを意図している。
【００１３】
本願において使用されるプログラム、ソフトウェア・アプリケーション等の用語は、コンピュータ・システムにおける実行のために設計された一連の命令として定義される。プログラム、コンピュータ・プログラム、またはソフトウェア・アプリケーションは、サブルーチン、機能、手順、オブジェクト・メソッド、オブジェクト・インプリメンテーション、実行可能なアプリケーション、アプレット、サーブレット、ソース・コード、オブジェクト・コード、共用ライブラリ／動的ロード・ライブラリ、および／またはコンピュータ・システムにおける実行のために設計されたその他の命令シーケンスを含み得るものである。
【００１４】
本発明は、競合するデータ・バッファ・サイズ間でメモリ割当てを均衡させるための装置および方法を提供する。その方法は、メモリ管理判断の明確性に関して更なる深みを与えるために履歴キューを利用する。本発明が、特に、ファイル・システムに関連して可変サイズ・パーティション・ユニットの管理に適用可能であることは当業者には明らかであろう。特に、ファイル・システムは、メタデータおよびユーザ・データに対する多くの異なるサイズのメモリ・ユニットを利用することが可能であり、あるサイズの利用は、異なるサイズのユニットの数を減少させることを必要とすることがある。本発明は、主として、可変サイズのメモリ区分化に関するものであり、特に、ファイル・システム・バッファとしても知られている種々のサイズのファイル・システム・メモリ・リクエスト間でのメモリの均衡化に関するものである。
【００１５】
図１は、本発明に従って複数のメモリ・バッファ・サイズを均衡化するためのシステム１００の電子的ブロック図である。図１に示されるように、複数のメモリ・バッファ・サイズを均衡化するためのシステムは、コントローラ１０５を含むことが望ましい。コントローラ１０５は情報を受け取り、本願において開示される種々の動作コンポーネントにコマンドを送る。その例示的なシステム１００の必要な機能を遂行するために、コントローラ１０５はメモリ１１０に結合される。
【００１６】
コントローラ１０５は、メモリ１１０の種々な部分の管理を行うためのメモリ・マネージャ１１５を有する。メモリ・マネージャ１１５は、種々のプログラム・ステップを実行し、更に、メモリ１１０内に記憶されたデータを利用する。メモリ・マネージャ１１５は、製造時にコントローラ内にハードコード化されるかまたはプログラムされてもよく、或いは顧客加入時に放送を通してプログラムされることも可能であり、或いはダウンロード可能なアプリケーションであってもよい。メモリ・マネージャ１１５をプログラムするために、その他のプログラミング方法を利用することも可能であることは当業者には明らかであろう。更に、本発明によるコントローラ１０５の内部にまたはコントローラ１０５の外部にメモリ・マネージャ１１５を代替的に設けることも可能であることも当業者には明らかであろう。
【００１７】
メモリ１１０は、例えば、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）および／または電気的に消去可能なプログラマブル・リード・オンリ・メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、またはそれらの同等物から構成されたものでよい。更に、メモリ１１０は、任意の機械的、電気的、光学的、磁気的、有機的、および無機的記憶装置構造体、或いはそれらの任意の結合体から構成されたものでもよい。メモリ１１０は、種々な種類のデータを記憶するための複数のバッファ１２０を含む。複数のバッファ１２０は、使用するための個別の領域に区分化されることが望ましい。例えば、複数のバッファ１２０は、多くの仮想メモリ・マネージャによって行われているように、図示のサブグループ１２５およびサブグループ１３０のような１つまたは複数のサブグループに区分化することが可能である。各サブグループ（１２５、１３０）は、可変サイズのパーティション・ユニットを含むことが望ましい。これらの可変サイズのユニットは、メモリ・マネージャ区分化に関する基本的なアスペクトのものであってもよく、ＶＭＭページのような小さい基本的ブロックのグループから構成されたものでもよい。とにかく、可変サイズのパーティション・ユニットは、それの管理に関連する単一の構成体として及びそれが含むデータとして扱われる。各サブグループ（１２５、１３０）は１つまたは複数のバッファ(１３５、１４０)から構成されることが望ましい。例えば、サブグループ１２５におけるバッファ１３５は、すべて、同じサイズのものであり、サブグループ１３０のバッファは、すべて、第２のサイズのものである。個々のサブグループ内では同じサイズのバッファとしてグループ化することによって、特定のサイズのバッファに対する要求を、その同じサイズのバッファのグループ化により満足させることが可能である。要求されたサイズを満足するバッファが存在しない場合、大きいバッファを分割するかまたは小さいバッファを結合して適切サイズのバッファにするための更なるオペレーションを負わなければならない。
【００１８】
バッファの分割または結合に関する更なるオーバヘッドは、それ自身の設計選択のセットを持つことである。特に、バッファの結合および分割の断片化およびペナルティ、並びにそれらの構成ユーザにおける影響が主な懸念事項である。これらの理由で、バッファ・リクエストと同じサイズを有するバッファのサブグループにおいてそのリクエストをほぼ満足することができるということを、良好な設計選択によって保証しようとすべきである。
【００１９】
バッファ・スチール履歴キュー１４５がメモリ１１０内に記憶されることが望ましい。バッファ・スチール履歴キュー１４５は、複数のバッファ１２０における種々のオペレーションに関するレコードの記憶装置を提供する。例えば、バッファが置換のために選択され、スチールされるとき、バッファ・スチール履歴レコードの循環キューにレコードが挿入される。
【００２０】
図２は、本発明に従って図１の複数のバッファ・サイズを均衡させるために、システム１００において使用するためのバッファ・スチール履歴キュー１４５を示す。図示のように、各履歴レコード(２００、２０５)は、一意的識別子（２１０、２１５）、データ・サイズ（２２０、２２５）、および現在のシーケンス番号（２３０、２３５）を含む。それらは、スチールされたバッファ・サイズ・サブグループに記録されるものである。一意的識別子（２１０、２１５）は、バッファのデータが書き込まれる二次記憶装置のアドレスとして計算されることが望ましい。この二次記憶装置は、ハード・ディスク、フロッピ・ディスク（商標）、テープ、または他の不揮発性のコンピュータ可読媒体であってもよい。現在のシーケンス番号（２３０、２３５）は、そのサブグループからの各バッファ・スチール時のインクリメントしたサブグループ毎のシーケンス番号である。
【００２１】
図３は、本発明に従って図１の複数メモリ・バッファ・サイズを均衡させるためのシステムにおけるオペレーションの一実施例を示すフローチャートである。特に、図３は、バッファに対するリクエストを処理する時のメモリ・マネージャ１１５のオペレーションを示す。図３のオペレーションは、ステップ３００において、メモリ・マネージャ１１５がメモリ１１０を区分化することによって始まる。次に、ステップ３０５において、メモリ・マネージャが複数のサブグループを作成する。各サブグループは、前述したようなサブグループ（１２５、１３０）内に、グループ化された同じサイズのバッファを有する。次に、ステップ３１０において、オペレーションは、メモリ・マネージャ１１５がバッファに関するリクエストを受けたかどうか決定する。リクエストを全く受けてないとき、オペレーションはサイクル・バックし、バッファに対するそのようなリクエストに関して周期的にチェックする。別の実施例では、バッファ・リクエストが割り込み駆動される。
【００２２】
ステップ３１０において、バッファに関するリクエストを受けたとき、オペレーションはステップ３１５に継続する。ステップ３１５では、バッファに関するリクエストが、キャッシュ・データを既に持っているバッファを再使用することにより、バッファに関するリクエストが満足されるかどうかをメモリ・マネージャ１１５が決定する。換言すれば、バッファに関するリクエストを満足することは、ある他のバッファに現在存在するキャッシュ・データの置換を伴うことがある。ステップ３１５においてバッファの再使用が検出されるとき、オペレーションはステップ３２０に続く。ステップ３２０では、所望のバッファにおける現在の構成データがディスク・ドライブのような二次メモリに書き込まれる。バッファの再使用および前にキャッシュ・データのその二次メモリへの書き込みは、共に、「バッファのスチール」又は「バッファ・スチール」と呼ばれる。
【００２３】
スチールされるべきバッファを選択するための多くの方法がある。いくつかの例を挙げると、その例は、「最近最低使用頻度（ＬＲＵ）」、「最低使用頻度（ＬＦＵ）」、および「最近最高使用頻度（ＭＲＵ）」を含む。選択基準に関係なく、バッファ・スチールの目的は、置換したデータを再読み出しする必要性を最小にすることである。例えば、スチールされ、二次メモリに書き込まれるデータを有するバッファは、実際には、アプリケーションによって直ちに再アクセスされるかもしれず、従って、新たなバッファ・スチールを被り、前にキャッシュ・データを二次メモリから再読み出しするかもしれない。
【００２４】
本発明は、バッファ・リクエストを満足させるために分離および結合の数が最小になるように、および１つまたは複数のバッファのスチールが前にキャッシュ・データの再読み出しの数を最小にするように、バッファ・サイズの各サブグループにおけるバッファの最適な均衡化を提供する。
【００２５】
バッファのサイズ変更を可能にし、それらを種々のサブグループに個別化するメモリ管理方式は、同じサイズのバッファの必要性と、異なるサイズのバッファの必要性とを均衡させなければならない。最適な均衡化アルゴリズムは、近い将来に再び使用される予定のないバッファだけをスチールするであろう。それは、適切なサイズのバッファのサブグループにおけるスチールが十分であること、或いは大きなバッファからスチールすることまたは小さいバッファからスチールすることおよび合体することが必要であることを意味する。
【００２６】
次は、バッファの２つのサブグループの例である。サブグループＡは２５６キロバイト・バッファを含み、サブグループＢは５１２キロバイトを含む。サブグループＡは２０の現在のシーケンス数を有し、サブグループＢは５のシーケンス数を有する。この例では、最近最低使用頻度（ＬＲＵ）から最近最高使用頻度（ＭＲＵ）までバッファが順序付けられる。
【表１】
2005276198.tif 000003
【００２７】
２５６Ｋバッファに対する新たなリクエストがシステムに入る場合、サブグループＡにおけるバッファの１つが再使用のために選択される。この場合、このキューにおける最近最低使用頻度のバッファ、即ち、バッファ１が選択される。従って、バッファ１はサブグループＡからスチールされ、新たなバッファ・リクエストのために再使用される。
【００２８】
図３のオペレーションに戻ると、次に、ステップ３２５において、新しいバッファ・スチール履歴レコードが作成される。次に、ステップ３３０において、新たに作成されたバッファ・スチール履歴レコードがバッファ・スチール履歴キュー１４５に加えられる。次に、ステップ３３５において、スチールされたバッファが関連するサブグループに対するサブグループ毎のシーケンス番号がインクリメントされ、新たに作成されたバッファ・スチール履歴レコードに記憶される。次に、ステップ３４０において、新たなデータがそのスチールされたバッファに記憶される。そこで、オペレーションはステップ３１０にサイクル・バックし、バッファに対する新たなリクエストを待つ。このように、バッファ・スチール履歴キューが作成される。
【００２９】
図４は、本発明に従って、図１のシステム１００の更なるオペレーションを示す。オペレーションはステップ４０２において開始する。次に、ステップ４０４において、データに対するリクエストが行われる。例えば、メモリ・マネージャ１１５は、データをバッファに記憶するためのリクエストを受けることが可能である。次に、ステップ４０６において、オペレーションは、リクエストされたデータがキャッシュされているか否かを決定する。リクエストされたデータがキャッシュされている場合、ステップ４０８において、プロセスはキャッシュ・データを獲得するように継続し、そしてステップ４０４においてデータをリクエストするように継続する。
【００３０】
ステップ４０６においてそのデータがキャッシュされていないとき、オペレーションはステップ４１０に続く。ステップ４１０では、キャッシュが満杯であるか否かが決定される。ステップ４１０においてキャッシュが満杯でないとき、オペレーションはステップ４０９に続く。ステップ４０９では、そのデータがキャッシュに記憶される。例えば、オープン・バッファが使用可能であるとき、そのデータはオープン・バッファに記憶されてもよい。そこで、オペレーションはステップ４０４にサイクル・バックする。
【００３１】
ステップ４１０においてキャッシュが満杯であるとき、オペレーションはステップ４１２に続く。ステップ４１２では、バッファ・セットのターゲット番号を見ることによって、バッファ・スチールが開始される。例えば、バッファ・スチールは図３に示されたように生じ得る。その場合、ステップ４１２、４１４、４１６が図３のステップ３２０、３２５、３３０、および３３５に対応する。次に、ステップ４１４において、メモリ・マネージャ１１５はスチールされたデータに対する一意的ＩＤを計算する。次に、ステップ４１６において、メモリ・マネージャ１１５は、スチールされたバッファのスチール履歴キューに新しいレコードを追加する。次に、ステップ４１８において、メモリ・マネージャ１１５は、二次メモリまたは二次記憶装置からデータを読み出し、そのデータをキャッシュに記憶する。次に、ステップ４２０において、メモリ・マネージャは一意的ＩＤを計算する。次に、ステップ４２２において、メモリ・マネージャ１１５はその計算された一意的ＩＤに基づいてバッファ・スチール履歴レコードをルック・アップする。
【００３２】
次に、ステップ４２４において、メモリ・マネージャ１１５は、そのバッファ・スチールが再アクセスであるかどうかを決定する。バッファ・スチールが再アクセスでないとき、オペレーションはステップ４０４にサイクル・バックする。バッファ・スチールが再アクセスであるとき、オペレーションはステップ４２６に続く。ステップ４２６では、メモリ・マネージャ１１５が、バッファ・キューにおけるバッファの最適な数を決定するためにシーケンス差を計算する。次に、ステップ４２８において、閾値がすべてのバッファ・キューにわたって適合する場合、メモリ・マネージャはバッファ・キューにおけるバッファのターゲット番号を再計算する。
【００３３】
この実施例では、一意的ＩＤ１００を有するバッファ・データがアプリケーションによって再び要求され、従って、再アクセスされた場合、表２のような、２０のシーケンス番号を持った対応するスチール履歴レコードがスチール履歴キューにおいて見られるであろう。
【表２】
2005276198.tif 000004
【００３４】
この実施例では、１２３という一意的識別子を有するデータに対して、バッファ１が再使用され、サブグループＡに対するシーケンス番号が１だけ増加する。バッファ１は、そのサブグループの最高使用頻度エンドでサブグループＡに再入する。
【表３】
2005276198.tif 000005
【００３５】
この実施例を続けると、サイズ２５６キロバイトの第２の新たなバッファ・リクエストがシステムに入る場合、バッファ２が再使用のために選択され、スチールされる。バッファ２に対するスチール履歴レコードが作成される。そのレコードは、そのバッファがスチールされたときにサブグループＡに対するシーケンス番号を記録し、サブグループＡに対する現シーケンス番号が１だけ増加する。
【００３６】
バッファ２に対する新しいデータが２３４という一意的識別子を有し、再びバッファがそのサブグループの最高使用頻度エンドに入る。
【表４】
2005276198.tif 000006
【００３７】
番号２０を選び、それをサブグループＡ に対するシーケンス番号（２２）から減算すると、２の差が与えられる。サブグループＡが２つの更なるバッファを含んでいた場合、この例における２つの新たなバッファ・リクエストはサブグループＡのＬＲＵエンドからスチールすることによって満足されたであろうし、一意的ＩＤ１００を有するバッファ・データのスチールを必要としなかったであろう。従って、再アクセスされるデータはキャッシュされたままであってスチールされなかったであろうし、このデータの二次メモリからの再読み出しは必要なかったであろう。バッファがデータを要求されるとき、本発明を使用すると、それの一意的ＩＤを計算することおよびそれの発生に対するスチール履歴キューを調べることによって、これが前にキャッシュ・データの再アクセスであるかどうかを決定することが可能であることを想起してほしい。スチール履歴レコードが同じ一意的ＩＤを持つことがわかった場合、前のバッファ・スチールにより二次記憶装置に書き込まれたデータが再アクセスされるであろう。そこで、そのスチール履歴レコードにおけるシーケンス番号と、対応するバッファ・サイズ・サブグループに対する現在のシーケンス番号との間の差が計算される。この差＜Ｎ＞は、このサブグループがより大きい＜Ｎ＞バッファであった場合、再アクセスは、依然としてそのサブグループにおけるそのバッファを見つけたであろうし、再アクセスは二次記憶装置からの再読み出しを被らなかったであろう。
【００３８】
本発明のもう１つの特徴は、再アクセスされた各バッファに対する差＜Ｎ＞情報を使用することは、他のすべてのサブグループに関してそれが成長しなければならないかまたは縮小しなければならないかに関して、従って、次のバッファがどのサブグループからスチールされるであろうかということに関して、各バッファ・サイズ・サブグループに対する評価を行うことを可能にすることである。この差＜Ｎ＞情報は、スチールされたデータの再読み出しを最小にするために各サブグループが持たなければならないバッファの量を明示するためにいつでも使用することが可能である。
【００３９】
図５は、本発明に従ってシステム１００のオペレーションを示すフローチャートである。詳しく云えば、図５は、図４のステップ４２８に続いて適切な数のバッファによりサブグループの順序を決定する場合のメモリ・マネージャ１１５のオペレーションを示す。これは、差＜Ｎ＞情報を使用する実施方法の単なる一例である。各バッファ・サイズ・サブグループが成長優先順位によって順序付けられる。高い優先順位のバッファ・サイズのサブグループにおけるバッファ・サイズに関するリクエストが、低い優先順位のサブグループからのバッファのスチールおよび結合、或いは、スチールおよび分離可能にされる。
【００４０】
図５のオペレーションは、カウンタがＮ＝１にセットされるステップ５０１において開始する。次に、ステップ５０５において、メモリ・マネージャ１１５は、Ｎ番目のバッファ・サイズのサブグループからスチールされそして再アクセスされたすべてのバッファに対する＜Ｎ＿ａ＞と名づけられた平均差＜Ｎ＞を累算する。例えば、２つのバッファがサブグループＡからスチールされ、それぞれ５および１５の差＜Ｎ＞でもって再アクセスされる場合、サブグループＡに対する＜Ｎ＿ａ＞は１０となるであろう。
【００４１】
次に、ステップ５１０において、メモリ・マネージャ１１５は、他のサブグループに関するＮ番目のサブグループにおける再アクセスの重要性を決定する。例えば、小さい＜Ｎ＿ａ＞を有するスチールされたバッファに関する多くの再アクセスは、異なるバッファ・サイズのサブグループに対する同じ小さい＜Ｎ＿ａ＞によるわずかな再アクセスよりももっと重要であると考えられる。従って、メモリ・マネージャ１１５は、特定のサブグループに対するスチールされた全バッファ再アクセスとＮ番目のサブグループに対する＜Ｎ＿ａ＞との比＜Ｒ＞を生じる。
【００４２】
次に、ステップ５１５において、カウンタがＮ＝Ｎ＋１にインクリメントされる。次に、ステップ５２０において、オペレーションは、Ｎ番目のサブグループが存在するかどうかを決定する。Ｎ番目のサブグループがメモリ１１０に存在するとき、オペレーションはステップ５０５にサイクル・バックする。Ｎ番目のサブグループがメモリ１１０に存在しないとき、オペレーションはステップ５２５に続く。ステップ５２５では、すべてのサブグループが成長優先順位によって順序付けられる。例えば、サブグループＡが１０の＜Ｎ＿ａ＞による２０の再アクセスを有し、サブグループＢが８の＜Ｎ＿ａ＞による５の再アクセスを有する場合、（２０／１０）＞（５／８）のように、サブグループＡはより高い成長優先順位のものである。
【００４３】
最高の＜Ｒ＞を有するサブグループは、バッファ・スチールの最も少ないと思われるターゲットでなければならない。逆に、低い＜Ｒ＞を有するサブグループは、それらの＜Ｎ＿ａ＞に関する多くの再アクセスを予定してなく、従って、他のバッファ・サイズのサブグループを成長させようとするとき、最初からスチールされなければならない。
【００４４】
元の実施例を選び、＜Ｒ＞の容認し得るサブグループＡをサブグループＢよりも上と仮定すると、次のスチールは、サブグループＢから２つの２５６Ｋのバッファ番号４および５へのバッファ７の分離を被るであろう。
【表５】
2005276198.tif 000007
【００４５】
本発明を利用して、スチールされたバッファを再読み出しする頻度を少なくするために、およびそれらの使用の優先順位に従ってバッファの分離または結合を最適化するために、競合するバッファ・サイズの数を均衡させる。
【００４６】
次に、非限定のハードウェアおよびソフトウェア具現方法を説明する。図６は、本発明の実施例に従って、図１のバッファを使用するコンピュータ処理ノードのブロック図である。
【００４７】
本発明の実施例によって使用されるコンピュータ処理ノードであるグループ・メンバ６００を示すブロックが図６に示される。適切に構成されたいずれの処理システムも、本発明の実施例において使用することが可能である。コンピュータ・システム６００は、プロセッサ６１０を有する。プロセッサ６１０は、メイン・メモリ６２０、二次記憶装置のための大容量記憶装置インターフェース６３０、端末インターフェース６４０、およびネットワーク・インターフェース６５０に接続される。システム・バス６６０は、これらのシステム・コンポーネントを相互接続する。大容量記憶装置インターフェース６３０は、ＤＡＳＤ装置６５５のような大容量記憶装置をコンピュータ・システム６００に接続するために使用される。ＤＡＳＤ装置の１つの特定なタイプは、フロッピ・ディスク６９５にデータを記憶するために及びフロッピ・ディスク６９５からデータを読み取るために使用されるフロッピ・ディスク・ドライブである。
【００４８】
メイン・メモリ６２０は、アプリケーション・プログラム６２２、オブジェクト６２４、データ６２６、およびオペレーティング・システム・イメージ６２８を含む。アプリケーション・プログラム６２２、オブジェクト６２４、データ６２６、およびオペレーティング・システム６２８は、メイン・メモリ６２０に同時に存在するものとして示されるが、いつもまたは同時にメイン・メモリ６２０に完全に存在することを必要とするものではないことは明らかである。コンピュータ・システム６００は一般的な仮想アドレシング機構を利用して、プログラムが、メイン・メモリ６２０およびＤＡＳＤ装置６５５のような複数の小型記憶装置本体に対するアクセスの代わりに、本願ではコンピュータ・システム・メモリと呼ばれる大型の単一の記憶装置本体に対するアクセスを行うかのように振舞うことを可能にする。「コンピュータ・システム・メモリ」という用語は、本願では、コンピュータ・システム６００の仮想メモリ全体を一般的に呼ぶために使用される。
【００４９】
オペレーティング・システム６２８は、適当なマルチタスキング・オペレーティング・システムである。オペレーティング・システム６２８は、大容量記憶装置インターフェース６３０を介したアクセスを管理するために、ＤＡＳＤ管理ユーザ・インターフェース・プログラムを含む。本発明の実施例は、オペレーティング・システム６２８のコンポーネントの命令がコンピュータ・システム６００内のいずれのプロセッサにおいても実行されることを可能にするオブジェクト指向フレームワーク機構のようなアーキテクチャを利用する。
【００５０】
コンピュータ・システム６００に対して１つのＣＰＵ６１０しか示されてないが、複数のＣＰＵを有するコンピュータ・システムが等しく有効に使用可能である。本発明の実施例は、各々が複数のインターフェースを組み込んでいる。各インターフェースは、ＣＰＵ６１０から処理をオフ・ロードするために使用される個別の完全にプログラムされたマイクロプロセッサを含む。端末インターフェース６４０は、１つまたは複数の端末６６５をコンピュータ・システム６００に直接接続するために使用される。非インテリジェント・ワークステーションまたは完全にプログラマブルなワークステーションであってもよい端末６６５は、システム管理者およびユーザがコンピュータ・システム６００とコミュニケーションを行うことを可能にするために使用される。
【００５１】
ネットワーク・インターフェース６５０は、他のコンピュータ・システムまたはグループ・メンバ、例えば、ステーションＡ６７５およびステーションＢ６８５をコンピュータ・システム６００に接続するために使用される。本発明は、現在のアナログ技術および／またはディジタル技術を含む任意のデータ通信接続でもって、または将来のネットワーク機構を介して機能する。
【００５２】
本発明の実施例は十分に機能的なコンピュータ・システムに関連して説明したが、実施例がプログラム製品又はプログラムそのものとして、フロッピ・ディスク、例えば、フロッピ・ディスク６９５、ＣＤ-ＲＯＭ、または他の形式の記録可能な媒体を介して、或いは任意のタイプの電子伝送機構を介して分配可能であることは当業者には明らかであろう。
【００５３】
本発明の実施例は、リレーショナル・データベース管理システム（ＲＤＢＭＳ）６３２を含む。ＲＤＢＭＳ６３２は、構造化照会言語（ＳＱＬ）のバージョンを処理するリレーショナル・データベース・マネージャのような適切なリレーショナル・データベース・マネージャである。
【００５４】
本発明の実施例は、例えば、ディスケット６９５のようなコンピュータ・システムによる使用のためのプログラム製品又はプログラムそのものとして具現化可能である。そのプログラム製品のプログラムは、実施例の機能（本願において説明された方法を含む）を定義し、種々の信号保持媒体に含まれることが可能である。例示的な信号保持媒体は次のものを含むが、それらに限定されない。
（ｉ）非書き込み可能記憶媒体（例えば、ＣＤ-ＲＯＭドライブにより読み出し可能なＣＤ-ＲＯＭのようなコンピュータにおけるリード・オンリ・メモリ）に永続的に記憶された情報；
（ii）書き込み可能記憶媒体（例えば、ディスケット・ドライブにおけるフロッピ・ディスクまたはハードディスク・ドライブ）に記憶された変更可能な情報；
（iii）無線通信を含むコンピュータまたは電話網のような通信媒体によってコンピュータに搬送された情報。
後者の実施例は、特に、インターネットおよび他のネットワークからダウンロードされた情報を含む。そのような信号保持媒体は、本発明の機能を指示するコンピュータ可読命令をそれが保持するとき、本発明の実施例を表す。
【００５５】
一般には、本発明の実施例を具現化するために実行されるルーチンは、それがオペレーティング・システムの一部として、または特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト、または命令のシーケンスとして実施されようとも、本願では「プログラム」と呼ばれる。コンピュータ・プログラムは、一般に、ネイティブ・コンピュータによって機械可読フォーマットに、従って、実行可能な命令に変換される多数の命令から成る。更に、プログラムは、プログラムに対して局所的に存在する、またはメモリもしくは記憶装置において見られる、変数またはデータ構造から成る。更に、本願に記載された種々のプログラムは、それらを本発明の特定な実施例において具現化するアプリケーションに基づいて識別することが可能である。しかし、以下の如何なる特定のプログラム専門語も便宜的に使用されたに過ぎないことは明らかであり、従って、本発明は、そのような専門語によって識別され、および／または意味される特定のアプリケーションにおいてのみ使用するように限定されるべきではない。
【００５６】
ルーチン、プロシージャ、メソッド、モジュール、オブジェクト等にコンピュータ・プログラムを構成することが可能である一般に無数の方法、および一般のコンピュータに存在する種々のソフトウェア層（例えば、オペレーティング・システム、ライブラリ、ＡＰＩ、アプリケーション、アプレット等）の間にプログラム機能を割り振ることが可能である種々の方法が与えられることも明らかである。本発明が、本願において開示された特定の編成および割り振りまたはプログラム機能に限定されないことも明らかであろう。
【００５７】
本発明は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせとして利用されることも可能である。本発明の実施例によるシステムは、１つのコンピュータ・システムにおける集中態様で、または種々の要素がいくつもの相互接続されたコンピュータ・システムに分散された分散態様で、実現することも可能である。任意の種類のコンピュータ・システム、または本願において開示された方法を実行するように適応した他の装置が適している。ハードウェアおよびソフトウェアの代表的な組み合わせは、ロードされて実行されるとき、本願において開示された方法を実行するようにコンピュータ・システムを制御するコンピュータ・プログラムを有する汎用コンピュータ・システムであってもよい。
【００５８】
各コンピュータ・システムは、とりわけ、１つまたは複数のコンピュータおよび、少なくとも信号保持媒体を含んでもよい。なお、その信号保持媒体は、コンピュータがその信号保持媒体からデータ、命令、メッセージまたはメッセージ・パケット、および他の信号保持情報を読み取ることを可能にするものである。信号保持媒体は、ＲＯＭ、フラッシュ・メモリ、ディスク・ドライブ・メモリ、ＣＤ-ＲＯＭ、および他の永続記憶装置のような不揮発性メモリを含んでもよい。更に、コンピュータ媒体は、例えば、ＲＡＭ、バッファ、キャッシュ・メモリ、およびネットワーク回路のような揮発性記憶装置を含んでもよい。更に、信号保持媒体は、ネットワーク・リンクおよび／またはネットワーク・インターフェースのような一時的状態媒体に信号保持情報を含んでもよい。なお、その一時的状態媒体は、コンピュータがそのような信号保持情報を読み取ることを可能にする有線ネットワークまたは無線ネットワークを含む。
【００５９】
本発明の特定の実施例を開示したが、発明の真意および範囲を逸脱することなくそれらの特定の実施例に対して変更を施し得ることは当業者には明らかであろう。従って、本発明の範囲は特定の実施例に限定されるべきではなく、「特許請求の範囲」は、本発明の範囲におけるいずれのおよびすべてのそのような応用、修正、および実施例をカバーすることを意図するものである。
【図面の簡単な説明】
【００６０】
【図１】本発明に従って、複数のメモリ・バッファ・サイズを均衡させるためのシステムの電子的ブロック図である。
【図２】本発明に従って、図１の複数のメモリ・バッファ・サイズを均衡させるためのシステムにおいて使用するためのバッファ・スチール履歴キューを示す。
【図３】本発明に従って、複数のメモリ・バッファ・サイズを均衡させるためのシステムにおけるオペレーションの種々の実施例を示すフローチャートである。
【図４】本発明に従って、複数のメモリ・バッファ・サイズを均衡させるためのシステムにおけるオペレーションの種々の実施例を示すフローチャートである。
【図５】本発明に従って、複数のメモリ・バッファ・サイズを均衡させるためのシステムにおけるオペレーションの種々の実施例を示すフローチャートである。
【図６】本発明の実施例に従って、図１のバッファを使用するコンピュータ処理ノードのブロック図である。
【図１】
2005276198.tif 000008
【図２】
2005276198.tif 000009
【図３】
2005276198.tif 000010
【図４】
2005276198.tif 000011
【図５】
2005276198.tif 000012
【図６】
2005276198.tif 000013