(57)【要約】      （修正有）【課題】付加に関して共用リソース（たとえば、キャッシュ・ラインまたはバッファ）の割振りのバランスを取るための方法および構造であって、その参照履歴および需要に基づいて、要求側プロセスまたは「エージェント」に対して前記リソースが割り振られる／割振り解除される方法および構造を提供すること。【解決手段】共用リソース「プール」は、ｍ個の区画に論理的に分割される。各区画ごとに小さい「区画参照」カウンタを使用して、その使用状況履歴を記録する。グローバル「持続性参照」カウンタは、プログラム可能なレートで「セット参照」カウンタ履歴を消去する働きをする。低い「区画参照」カウンタ値は低い使用状況を暗示し、必要なときに区画リソースが高使用状況区画（複数も可）にとって使用可能になるようにする。プログラム可能なしきい値により、システム最適化の基準の「重み付け」が可能になる。【選択図】図３
2004164607.tif 000002
【特許請求の範囲】
【請求項１】
エージェントと共用リソースに接続されたシステムであって、前記システムが、
前記共用リソースに関連する第１の制御部と、
前記エージェントに関連するディレクトリと、
前記ディレクトリに関連するリソース管理制御部であって、前記リソース管理制御部が前記共用リソースの分配を区画内に割り振るように適合され、前記区画のそれぞれが前記エージェントの少なくとも１つに関連付けられているリソース管理制御部とを具備し、
前記リソース管理制御部が、
前記第１の制御部に関連する置換制御部と、
前記置換制御部に関連し、前記区画のそれぞれに関する使用状況履歴を記録するように適合されたカウンタであって、前記置換制御部が前記使用状況履歴に応じて前記区画のそれぞれ内で前記共用リソースの前記分配を再割振りするように適合されたカウンタと、
しきい値を記憶するための前記区画のそれぞれ用のしきい値レジスタであって、前記しきい値を上回る使用状況履歴を有する前記区画のそれぞれで前記共用リソースの所定の最小割振りが維持されるしきい値レジスタとを含む、システム。
【請求項２】
前記カウンタが、前記区画内の共用リソースがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するように適合されている、請求項１に記載のシステム。
【請求項３】
前記置換制御部が、前記共用リソースの前記分配を連続的に再割振りするようにさらに適合されている、請求項１に記載のシステム。
【請求項４】
前記置換制御部が、使用レベルが高い区画に共用リソースを追加し、使用レベルが低い区画から共用リソースを除去することにより、前記共用リソースの前記分配を再割振りするように適合されている、請求項３に記載のシステム。
【請求項５】
前記置換制御部に関連する状態レジスタをさらに具備し、前記状態レジスタが、各共用リソースが位置する区画を識別するように適合されている、請求項１に記載のシステム。
【請求項６】
前記状態レジスタが、前記共用リソースのそれぞれごとに個別の状態レジスタを具備する、請求項１に記載のシステム。
【請求項７】
前記状態レジスタのそれぞれが、各共用リソースが位置する区画を識別する識別子タグを含む、請求項６に記載のシステム。
【請求項８】
プロセッサと、バッファを有するメモリに接続された処理システムであって、前記処理システムが、
前記メモリに動作可能に接続されたメモリ制御部と、
前記プロセッサに動作可能に接続されたディレクトリと、
前記ディレクトリに動作可能に接続されたバッファ管理制御部であって、前記バッファ管理制御部が前記バッファの分配を区画内に割り振るように適合され、前記区画のそれぞれが前記プロセッサの少なくとも１つに関連付けられているバッファ管理制御部とを具備し、
前記バッファ管理制御部が、
前記メモリ制御部に動作可能に接続された置換制御部と、
前記置換制御部に動作可能に接続され、前記区画のそれぞれに関する使用状況履歴を記録するように適合されたカウンタであって、前記置換制御部が前記使用状況履歴に応じて前記区画のそれぞれ内で前記バッファの前記分配を再割振りするように適合されたカウンタと、
しきい値を記憶するための前記区画のそれぞれ用のしきい値レジスタであって、前記しきい値を上回る使用状況履歴を有する前記区画のそれぞれで前記バッファの所定の最小割振りが維持されるしきい値レジスタとを含む、システム。
【請求項９】
前記カウンタが、前記区画内のバッファがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するように適合されている、請求項８に記載のシステム。
【請求項１０】
前記置換制御部が、前記バッファの前記分配を連続的に再割振りするようにさらに適合されている、請求項８に記載のシステム。
【請求項１１】
前記置換制御部が、使用レベルが高い区画にバッファを追加し、使用レベルが低い区画からバッファを除去することにより、前記バッファの前記分配を再割振りするように適合されている、請求項１０に記載のシステム。
【請求項１２】
前記置換制御部に動作可能に接続された状態レジスタをさらに具備し、前記状態レジスタが、各バッファが位置する区画を識別するように適合されている、請求項８に記載のシステム。
【請求項１３】
前記状態レジスタが、前記バッファのそれぞれごとに個別の状態レジスタを具備する、請求項８に記載のシステム。
【請求項１４】
前記状態レジスタのそれぞれが、各バッファが位置する区画を識別する識別子タグを含む、請求項１３に記載のシステム。
【請求項１５】
複数のエージェント間で共用リソースを割り振るための方法であって、前記方法が、
複数の区画内に前記リソースの分配を割り振るステップであって、前記区画のそれぞれが前記エージェントの少なくとも１つに関連付けられているステップと、
前記区画のそれぞれに関する使用状況履歴を記録するステップと、
前記使用状況履歴に応じて前記区画のそれぞれ内の前記リソースの前記分配を再割振りするステップと、
所定のしきい値を上回る使用状況履歴を有する前記区画のそれぞれに対し前記共用リソースの所定の最小割振りを維持するステップとを具備する方法。
【請求項１６】
前記記録ステップと再割振りステップを繰り返すステップをさらに具備する、請求項１５に記載の方法。
【請求項１７】
前記再割振りステップが、使用レベルが高い区画にリソースを追加するステップと、使用レベルが低い区画からリソースを除去するステップとを具備する、請求項１５に記載の方法。
【請求項１８】
前記使用状況履歴の前記記録ステップが、前記区画内のリソースがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するステップを具備する、請求項１５に記載の方法。
【請求項１９】
前記リソースが、前記カウントが所定の値を超えたときにのみ前記区画間で再割振りすることができる、請求項１８に記載の方法。
【請求項２０】
前記割振りステップが、前記リソースに識別子タグを付加するステップを具備し、前記識別子タグが各リソースが位置する区画を識別する、請求項１５に記載の方法。
【請求項２１】
複数のプロセッサ間でバッファを割り振るための方法であって、前記方法が、
複数の区画内に前記バッファの分配を割り振るステップであって、前記区画のそれぞれが前記プロセッサの少なくとも１つに関連付けられているステップと、
前記区画のそれぞれに関する使用状況履歴を記録するステップと、
前記使用状況履歴に応じて前記区画のそれぞれ内の前記バッファの前記分配を再割振りするステップと、
所定のしきい値を上回る使用状況履歴を有する前記区画のそれぞれに対し前記バッファの所定の最小割振りを維持するステップとを具備する方法。
【請求項２２】
前記記録ステップと再割振りステップを繰り返すステップをさらに具備する、請求項２１に記載の方法。
【請求項２３】
前記再割振りステップが、使用レベルが高い区画にバッファを追加するステップと、使用レベルが低い区画からバッファを除去するステップとを具備する、請求項２１に記載の方法。
【請求項２４】
前記使用状況履歴の前記記録ステップが、前記区画内のバッファがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するステップを具備する、請求項２１に記載の方法。
【請求項２５】
前記バッファが、前記カウントが所定の値を超えたときにのみ前記区画間で再割振りすることができる、請求項２４に記載の方法。
【請求項２６】
前記割振りステップが、前記バッファに識別子タグを付加するステップを具備し、前記識別子タグが各バッファが位置する区画を識別する、請求項２１に記載の方法。
【請求項２７】
複数のエージェント間で共用リソースを割り振るための方法を実行するためにマシンによって実行可能な複数命令からなるプログラムを具体的に実施するマシンによって読取り可能なプログラム記憶装置であって、前記方法が、
複数の区画内に前記リソースの分配を割り振るステップであって、前記区画のそれぞれが前記エージェントの少なくとも１つに関連付けられているステップと、
前記区画のそれぞれに関する使用状況履歴を記録するステップと、
前記使用状況履歴に応じて前記区画のそれぞれ内の前記リソースの前記分配を再割振りするステップと、
所定のしきい値を上回る使用状況履歴を有する前記区画のそれぞれに対し前記共用リソースの所定の最小割振りを維持するステップとを具備するプログラム記憶装置。
【請求項２８】
前記方法が、前記記録ステップと再割振りステップを繰り返すステップをさらに具備する、請求項２７に記載のプログラム記憶装置。
【請求項２９】
前記再割振りステップが、使用レベルが高い区画にリソースを追加するステップと、使用レベルが低い区画からリソースを除去するステップとを具備する、請求項２７に記載のプログラム記憶装置。
【請求項３０】
前記使用状況履歴の前記記録ステップが、前記区画内のリソースがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するステップを具備する、請求項２７に記載のプログラム記憶装置。
【請求項３１】
前記リソースが、前記カウントが所定の値を超えたときにのみ前記区画間で再割振りすることができる、請求項３０に記載のプログラム記憶装置。
【請求項３２】
前記割振りステップが、前記リソースに識別子タグを付加するステップを具備し、前記識別子タグが各リソースが位置する区画を識別する、請求項３１に記載のプログラム記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムにおけるメモリ・リソース管理の分野に関し、より具体的には、共用記憶リソース（たとえば、キャッシュ・ラインおよびバッファ）の割振りおよび置換のための改良された方法および装置に関する。
【背景技術】
【０００２】
従来のシステムは、コンピュータおよび「ハードウェア」で実現されたその他のデータ処理システムを使用し、その内容に対するプロセスまたは「エージェント」によるその内容へのローカル高速アクセスのために記憶バッファおよびレジスタのアレイを使用する場合が多い。このようなリソースはサイズおよび量が限られているので、競合エージェントの需要の変化に応じるために、そのリソースを絶えず再割振りするための方法が使用されている。このようなリソースは、新たな需要に対処するためにリソースを再割振りする前に、短時間の間、所与のエージェントのために情報を保持する場合が最も多い。
【０００３】
共用ハードウェア・リソース管理技法およびアルゴリズムは、使用可能なリソースをできるだけ効率よく使用する働きをしながら、速度と、コストおよび複雑さとの兼ね合いに対処するものである。最低使用頻度（ＬＲＵ）アルゴリズムは一般に、１つの区画内の１組の限られた共用リソース・セットを管理するために使用される。このアルゴリズムは、現行または保留中の需要に対する最低使用頻度リソースの再割振りを示唆するものである。しかし、複数のエージェントが同じリソース区画内のリソースを競り合っている場合、１つまたは複数のエージェントがリソース・セットを独占する可能性があり、それにより、複数の競合エージェントが１つのリソースを十分使用する前に互いのリソースを繰返し再割振りすることになる。これに比例してエージェントは１つのリソースを待って相当な時間を浪費するので、この「スラッシング」はシステム・パフォーマンスを大幅に低下させる可能性がある。この状況は「仮想チャネル」ＳＤＲＡＭ内の完全共用「オープン・ページ」を管理するときに特に明白であり、その場合、アドレス範囲または「ページ」は高速参照のためにＳＤＲＡＭデバイス内のバッファに保持される。１つのリソースを複数の区画に分割すると、複数の潜在的独占エージェントを互いに分離することができる。しかし、この方式では、あるエージェントがその区画内のすべてのリソースを使用／要求し損なったときにリソースを浪費する可能性がある。したがって、利用不足の区画から高度利用の区画にリソースを動的に再割振りする必要性が存在する。
【非特許文献１】１９９９年、ＮＥＣエレクトロニクス社の「Virtual Channel Performance Analysis」
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の一態様により、１組の限られたリソース・セットを競り合っている複数のエージェントに動的に適合するように、１つの記憶リソースの複数の可変サイズ論理区画に対する複数の記憶リソースの分配を管理するために参照頻度対ミス・レートを使用することによりバッファ・リソースを再割振りするためのシステムおよび方法が提供される。本発明では、エージェントがバッファ・リソースを独占するのを妨げることを所望する。その上、本発明では、要求を再試行したり定期的な再割振りを待たずに、必要なときにバッファ再割振りを提供することを所望する。
【０００５】
本発明の目的は、１つのデータ処理システム内の複数のプロセスまたは「エージェント」に共用ハードウェア・リソースを割り振るための動的に適合可能な負荷依存型手段を提供することにある。最小使用基準を満たし損なったエージェントは、高需要のエージェントに論理的に割り振られたリソースを放棄せざるを得ない。そうではない場合、エージェントは、リソースに関するクロスエージェント・スラッシングなしに、他の高需要のエージェントの存在下でそのリソースの制御を維持する。
【０００６】
本発明の他の目的は、ｍ個の区画に論理的に分割された共用リソース「プール」の使用状況を記録し、前記使用状況記録のプログラム可能な持続性を提供し、プログラム可能なしきい値と需要要件に対するこのような記録の関係に基づいてリソースを割り振るための方法および装置を提供することにある。
【課題を解決するための手段】
【０００７】
共用リソース「プール」は、公称リソース・セット・サイズがｎであるｍ個の区画に論理的に分割される。各区画ごとに小さい「区画参照」カウンタを使用して、その使用状況履歴を記録する。グローバル「持続性参照」カウンタは、プログラム可能なレートで「セット参照」カウンタ履歴を消去する働きをする。低い「区画参照」カウンタ値は低い使用状況を暗示し、必要なときにセット・リソースが高使用状況セット（複数も可）にとって使用可能になるようにする。プログラム可能なしきい値により、システム最適化の基準の「重み付け」が可能になる。
【０００８】
本発明の処理システムは、エージェントと、リソースを有するメモリとに接続する。本発明は、メモリに動作可能に接続されたメモリ制御部と、エージェントに動作可能に接続されたディレクトリと、ディレクトリに動作可能に接続されたリソース管理制御部とを有する。このリソース管理制御部は、複数の区画内にリソースの分配を割り振るように適合されている。それぞれの区画は少なくとも１つのエージェントに関連付けられている。リソース管理制御部は、メモリ制御部に動作可能に接続された置換制御部と、それぞれの区画に関する使用状況履歴を記録するように適合され、置換制御部に動作可能に接続されたカウンタとを含む。置換制御部は、使用状況履歴に応じてそれぞれの区画内のリソースの分配を再割振りするように適合されている。それに加えて、本発明は、しきい値を記憶するためにそれぞれの区画用のしきい値レジスタを含み、しきい値を超える使用状況履歴を有するそれぞれの区画において共用リソースの所定の最低割振りが維持される。
【０００９】
このカウンタは、その区画内のリソースがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するように適合されている。置換制御部は、リソースの分配を連続的に再割振りし、使用レベルが高い区画にリソースを追加し、使用レベルが低い区画からリソースを除去することにより、リソースの分配を再割振りするようにさらに適合されている。また、本発明は、置換制御部に動作可能に接続された状態レジスタも含む。状態レジスタは、各リソースが位置する区画を識別するように適合されている。この状態レジスタは、それぞれのリソースごとに個別の状態レジスタを有する。状態レジスタは、各リソースが位置する区画を識別する識別子タグを含む。
【００１０】
本発明は、複数のエージェント間で共用リソースを割り振るための方法も開示する。本発明は、それぞれの区画が少なくとも１つのエージェントに関連付けられるように複数の区画内にリソースの分配を割り振る。本発明は、それぞれの区画に関する使用状況履歴を記録し、使用状況履歴に応じてそれぞれの区画内のリソースの分配を再割振りする。本発明は、記録プロセスと再割振りプロセスを繰り返す。再割振りプロセスでは、使用レベルが高い区画にリソースを追加し、使用レベルが低い区画からリソースを除去する。使用状況履歴の記録では、その区画内のリソースがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持する。
【００１１】
リソースは、そのカウントが所定の値を超えたときにのみ区画間で再割振りすることができる。割振りプロセスではリソースに識別子タグを付加し、識別子タグは各リソースが位置する区画を識別する。
【００１２】
上記ならびにその他の目的、態様、および利点は、添付図面に関連して、以下に示す本発明の好ましい実施形態（複数も可）に関する詳細な説明からより十分に理解されるだろう。
【発明を実施するための最良の形態】
【００１３】
次に添付図面、より具体的には図１を参照すると、本発明による方法および構造の好ましい実施形態が示されている。ＤＲＡＭ技術に関連する本質的に高いアクセス待ち時間は、ＳＤＲＡＭデバイスがサポートする「ページ・モード」規格によって軽減される。この特徴は、関連の内部ビット・アレイまたは「バンク」からの１ページ全体または１行全体のデータ・ビットを収容するのに十分な幅の内部低待ち時間データ・レジスタを含む。デバイス・インタフェース・プロトコルは、システム・アプリケーション・メモリ制御部が行を「オープン」する（レジスタをロードする）か、行を「クローズ」する（レジスタの内容をバンクに書き戻す）か、またはそれが「オープン」している間に低待ち時間で行レジスタにアクセスするための手段を提供する。システム・アプリケーション・メモリ制御部は、メモリ・アレイへの最低平均アクセス待ち時間を達成するためにシステム内に存在するのと同じ数の「オープン」行を維持する働きをする。しかし、大きい記憶ブロックには１つの行レジスタしか関連付けられていないので、所与のバンクについて複数の独立行を必要とする複数のプロセスが独立記憶域へのアクセスを要求するときに重大なスラッシングが発生する。この挙動はオープン行を維持することの利点を完全に否定する可能性があり、場合によっては、いかなるオープン行も維持しない（ＳＤＲＡＭオートプレチャージ・モード）場合よりパフォーマンスが悪化する。
【００１４】
図１を参照すると、標準の４つの直接マッピング行レジスタに対して、１６個の完全共用行セグメント・レジスタ１０１を取り入れ、参照により本明細書に組み込まれる「仮想チャネル・メモリ（ＶＣＭ）」（１９９９年、ＮＥＣエレクトロニクス社の「Virtual Channel Performance Analysis」）として知られる拡張アーキテクチャを取り入れたＳＤＲＡＭデバイスのブロック図１００が示されている。この技術により、高レベルの精巧さをシステム・アプリケーションＳＤＲＡＭ制御部内で使用して、ＳＤＲＡＭ行セグメント・レジスタを効率よく管理し、最低平均ＳＤＲＡＭ読取り待ち時間を達成することができ、その結果、最高のシステム・パフォーマンスが得られる。
【００１５】
本発明の目的は、１つのデータ処理システム内の複数のプロセスまたは「エージェント」に共用ハードウェア・リソースを割り振るための動的に適合可能な参照負荷依存型手段を提供することにある。一実施形態は、特定のプロセッサ用に予約された区画内にバッファを割り当てることにより、ＶＣＭデバイス内の共用行セグメント・レジスタ（バッファ）を効率よく使用するためのハードウェア装置および方法を含み、メモリ制御部ハードウェアは、マルチプロセッサ・システム内のそれぞれの区画によるメモリへのプロセッサ・アクセスを規制する。しかし、当業者であれば、本発明が１つのデータ処理システム内の他の共用リソースの効率のよい動的管理に容易に適用可能であることが分かるだろう。
【００１６】
図２を参照すると、メモリ制御部デバイス２０２により、ＶＣＭ２０３からなるメイン・メモリに接続された１つまたは複数のプロセッサ２０１を有する処理システム２００が示されている。すべてのメモリ活動は、従来のＶＣＭメモリ制御部２１１によりアドレス／制御信号２０９上で印加される状態（通常はＳＤＲＡＭ  ＲＡＳ、ＣＡＳ、アドレス、ＷＥ、ＣＫＥ）によって制御される。ＶＣＭデバイスは、ｊ個のデバイスのグループが一斉に操作され、サイズがｊｋの所与のバッファ・グループによりアクセス可能なメモリの集合ブロックが得られるようにメイン・メモリ２０３内で相互接続することができ、その場合、ｋは１つのデバイス・バッファによりアクセス可能なメモリの量である。バッファは、単独で使用されるかまたはユニット化したグループとして使用されるかにかかわらず、ユニットとして管理され、各ユニットはバッファ番号（Ｂ＃）によって独立して識別することができる。完全共用バッファは制御チップ２０２の外にあってＶＣＭ２０３デバイス内に存在するので、リモート・バッファの使用状況を追跡するために制御チップ内に完全共用ディレクトリ２１２が必要である。ｎ個の共用バッファのそれぞれについて１つのディレクトリ項目２１３が維持され、各項目はレジスタ２１４と比較器２１５からなる。このレジスタは少なくともブロック・タグ・アドレス・フィールドと有効ビットとを含み、ブロック・タグ・アドレスは、可能なメモリ・ブロックのうちのどれが共用バッファによってアクセス可能であるかを示し、有効ビットは、そのバッファが有効であるかどうかを示す。
【００１７】
メモリ要求ブロック・アドレス・タグがディレクトリ項目のブロック・タグ・アドレスのものと等しいときに比較器２１３はメモリ制御部に「ヒット」の信号を送出し、関連の有効ビットがアサートされる。メモリ要求があるＳＤＲＡＭ行に関連するディレクトリ項目を「ヒット」すると、メモリ制御部２１１はメモリ・アレイ２０３に対して読取り要求または書込み要求を提示する。メモリ要求がディレクトリ項目をヒットしない場合、メモリ制御部は、「活動化」コマンドを提示して、メモリ・アレイ２０３内のその行をオープンしなければならない。しかし、ディレクトリ項目置換が必要な場合、メモリ制御部２１１はまず「プレチャージ」コマンドを出して、新しい行をオープンする前に置換した項目のディレクトリ項目タグ・アドレス用の行をクローズしなければならない。
【００１８】
図３を参照すると、バッファ管理制御論理回路３２０とそれに関連するサポート・ハードウェアとを有し、バッファの使用状況を管理し、メモリ制御部３１１からどのタイプのメモリ活動が要求されるかをメモリ制御部３２０に示す、処理システム３００が示されている。また、ｎ個の共用バッファのそれぞれについて１つの状態レジスタ（ＳＲ）３２２が使用され、各レジスタは区画ＩＤ（ＰＩＤ）フィールド３２３とバッファ番号（Ｂ＃）フィールド３２４からなる。各レジスタはｍ個の区画の１つに所与のバッファを相関させる。このレジスタ・セットは、最新使用バッファがスタックの一番上に位置し、ＬＲＵバッファがスタックの一番下に位置するように、最低使用頻度（ＬＲＵ）スタックとして配置され管理される。メモリ参照が有効なバッファをヒットするたびに、それぞれのＳＲ（または関連ポインタ）はそのスタック内の現行位置からスタックの一番上に移動する。メモリ参照がバッファをミスした場合、バッファ置換制御部３２１は、割振り用のバッファの選択と、無効なバッファが使用不能であるときにスタックの一番下からのＬＲＵバッファの置換を担当する。あるエージェントからのメモリ・アクセスであって、ある区画をターゲットとしておらず、ある区画内でヒットするものは、そのアクセスがその区画に属するものとして扱われる。これにより、区画間のバッファ・アドレスの複製または移動が防止され、すべてのアドレスがすべての区画間で固有のものであることが保証される。
【００１９】
ｎ以上の大きさまでカウント可能な持続性カウンタ３２５は、それぞれの区画に対する参照レートを正規化するための参照レート量を確立するための手段を提供する。このカウンタはすべての有効なメモリ要求ごとに減分される。プログラム可能カウンタのしきい値レジスタ３２６は参照レート量のサイズを確立するための手段を提供し、これはパフォーマンスの最適化またはより大きい区画からなるより小さいセットとしての区画の集合に対応するために変更することができる。持続性カウンタ３２５は、アンダフローしたときに（すなわち、減分されて０になったときに）そのカウンタにしきい値レジスタ３２６の値がロードされる。区画参照カウンタ３２７は、所与の区画使用状況を評価可能なしきい値を確立するための関連区画使用状況しきい値３２８とともに、ｍ個の区画のそれぞれについて維持される。
【００２０】
この実施形態では、最大４プロセッサのシステム内のプロセッサ当たり１つの区画に対応して、４つの固定等サイズ区画を使用するが、代替実施形態では、プログラム可能な区画サイズと数量を使用することができる。その上、代替実施形態では、複合体内の他の区画に対するハンディキャップまたは利点を確立するための手段を備えるために、各区画ごとにプログラム可能ハンディキャップ・レジスタを使用することもできるだろう。この利点は、より高い区画カウント開始点として、またはアクセス当たり１を上回るレートでカウントを進めるための重み付けとして提供することができる。
【００２１】
図４〜６を参照すると、使用状況に応答してバッファを管理するための持続性カウンタ、区画カウンタ、割振り制御部に関する並列動作状態図が示されている。ハードウェアがリセットされるか、またはステップ４０１でカウンタ３２５が０になり、有効メモリ・アクセスが行われると、持続性カウンタのアイドル状態４００からのハードウェア・リセットまたはいずれかの有効メモリ・アクセス条件の結果として、ステップ４０２で持続性カウンタ３２５が最大値３２６で初期設定される。ステップ４０１からそうならない場合、カウンタが１だけ減分される。この挙動と平行して、ｍ個の区画のそれぞれがそれぞれのバッファ・セットによりメモリ・アクセスのカウントを維持するように、各区画カウンタも互いに独立して動作する。区画カウンタの状態マシンがアイドル状態４１０になっている間にハードウェア・リセット条件に応答して、区画カウンタ３２７はステップ４１６で最大区画カウントに初期設定される。リセット条件がなく、いずれかの区画がアクセスされたときに、ステップ４１１で持続性カウンタが０であるかまたはそのアクセスが区画（ｉ）に対するものではなく、しかも区画カウンタ（ｉ）が０であるかまたはそのアクセスが区画（ｉ）に対するものであるか区画（ｉ）をヒットした場合、ステップ４１４から制御がアイドル状態に戻る。ステップ４１４からそうならない場合、区画カウンタ（ｉ）が減分され、０まで非活動の程度を登録する。ステップ４１１からそうならない場合、区画カウント（ｉ）がステップ４１２で最大区画カウント未満になり、制御がアイドル状態に戻る。というのは、区画カウントが最大になっているからである。ステップ４１２からそうならない場合、区画カウンタ（ｉ）が増分され、制御がアイドル状態に戻る前に、活動の程度が増加したことを示す。
【００２２】
割振り制御部はすべての区画でのバッファ・ミスに応答し、新たな要求に使用すべきバッファを割り振るよう機能するが、有効なバッファを変位させることが最も多い。ステップ４２０でのこのような条件の後、ステップ４２１に進み、いずれかの無効なディレクトリ項目が使用可能である場合、ステップ４２２でその要求に関連する区画に関連バッファが割り振られる。どの置換にも該当することであるが、ディレクトリ項目はメモリ・アドレス・ブロック・タグで更新され、有効ビットが設定される。対応する状態レジスタ（ＳＲ）には区画ＩＤとバッファ番号がロードされ、そのレジスタはＬＲＵスタック内の最新使用位置に移動する。ステップ４２１からそうならない場合、すべてのディレクトリ項目が有効であり、次にステップ４２３に進み、いずれかの区画カウンタが不十分な活動を示す（区画カウント（ｉ）が０である）場合、ステップ４２４で区画カウントが０に等しい最低使用頻度区画内の最低使用頻度バッファが置換のために選択される。ステップ４２３からそうならない場合、ステップ４２５に進み、どの区画も利用不足ではなく、現行区画が割振り不足である（すなわち、基本割振りよりバッファ数が少ない）場合、ステップ４２６でバッファの過剰割振りが行われている最低使用頻度区画内の最低使用頻度バッファが置換のために選択される。ステップ４２５からそうならない場合、現行区画内の最低使用頻度バッファが置換のために選択される。
【００２３】
したがって、上記で示すように、本発明は、様々なバッファを色々な区画に割り振り、上記で示すテーブル３２２を使用して、このような割振りを追跡する。あるリソース（バッファ）が１つの区画に割り振られると、そのリソースは、その区画を所有または制御するエージェント（複数も可）のみに使用可能になる（厳密に専用になる）。本発明は、各エージェントまたは区画のバッファ活動レベルに基づいて、このような割振りを行う。換言すれば、一部のエージェントはより多数のバッファを必要とし、他のエージェントは少数のバッファを必要とし、これは経時的に変化することになる。本発明では、より多くのバッファを必要とするエージェントに対し、より多くのバッファを備えた区画を割り振ることができる。それと反対に、所与のエージェントがより少ないバッファを必要とする場合、その関連区画はより少数のバッファを維持することになる。
【００２４】
本発明は初めに、色々なエージェント間に均等にすべてのバッファを割り振る。この初期割振りは基本割振りという。基本割振りでは、全区画間に均等にすべてのバッファを分割する場合もあれば、または各区画に最小数のバッファを提供し、いくつかのバッファを未使用かつ使用可能なものとして残しておく場合もある。その場合、より多くのバッファが必要になると、様々な区画がまず未使用かつ未区分のバッファを使用する。その後、区画は、使用状況履歴に応じて、色々なバッファ間で連続的に再割振りされる。
【００２５】
バッファが使用されると、本発明は、各区画内のバッファ使用を追跡し、その区画が割振り不足のバッファであるかまたは過剰割振りのバッファであるかを判定する。より具体的には、本発明は、どの区画がそのバッファを定期的に使用し、どの区画がそのバッファを定期的に使用しないかという履歴を提供する区画カウンタ（ｐａｒ＿ｃｏｕｎｔ）を維持することにより、バッファ使用を追跡する。本発明は初めに、４１６でその区画カウンタを指定の値に設定する。本発明の一形式では、各メモリ・アクセスごとに、その区画内のバッファに対してメモリ・アクセスが行われると、所与の区画の区画カウンタが増分され（４１３）、残りの非アクセス区画の区画カウンタが減分される（４１５）。このようにして、そのバッファをあまり頻繁に使用しない区画の区画カウンタは低い値を有することになり、そのバッファをより定期的に使用する区画はより高い区画カウントを有することになる。次に、ある区画が追加バッファを必要とし、どの未使用バッファも使用不能である場合、他の区画の区画カウンタがチェックされ、しきい値未満の区画カウントを備えた区画がバッファを必要とする区画にバッファを明け渡すことになる。
【００２６】
より精巧な実施形態では、本発明は持続性カウンタ３２５を使用して、区画カウンタが減分される回数を制限する。より具体的には、図４および図５に示す処理により、非アクセス区画に関連する区画カウンタは、持続性カウンタが０に到達したときに減分することができ（４１４、４１５）、その時点で、持続性カウンタは項目４０１、４０２に示すように最大持続性カウンタ３２６に直ちにプリセットされる。したがって、本発明は、持続性カウンタ３２５の使用により区画カウンタが減分されるレートを減速する。前述の通り、このレートの減速は、最大持続性カウンタ３２６を変更することによって調整することができる。
【００２７】
エージェント間でリソースを再割振りする場合、本発明はいくつかの色々な制約を使用して、どの区画がバッファを失うか、どのバッファが除去されるか、どの区画がバッファを獲得できるかを判定する。たとえば、本発明では、区画カウントが指定の数未満になった（または０に達した）場合のみ、ある区画がバッファを失うことができる。同様に、その区画カウンタが指定の数を上回った（または最大値になった）場合のみ、ある区画がバッファを獲得することができる。したがって、非常に単純化した例では、ある区画は、その区画カウンタが０になったときのみ過剰割振りの区画であると分類することができる。同様に、この単純化した例では、ある区画は、その区画カウンタが最大区画カウンタになったときのみ割振り不足の区画であると分類することができる。
【００２８】
さらに、ある区画からバッファを取る場合、色々な方法を使用することができる。一例では、最低使用頻度方法を使用して、過剰割振りの区画からバッファを取る。また、本発明は、各区画が常に少なくとも最小数のバッファを維持するように最小値を設定することもできる。別法として、本発明では、区画がバッファを一切持たないようにすることもできる。同様に、本発明は、各区画によって維持可能な最大数のバッファを設定することができる。このような変数は、特定のシステムのパフォーマンスを最大にするように設計者が変更することができる。
【００２９】
したがって、本発明は、色々な区画間にバッファを動的に割り振って、それぞれの区画に関連する各種エージェントに適当な数量のバッファを提供する。さらに、本発明は、使用状況に応じて、各区画内のバッファの数を絶えず調整する。色々なエージェントにとって使用可能なバッファの数を動的に制御することにより、本発明は、システムをより効率のよいものにし、エージェントの要求および使用状況履歴に応じて使用可能にできるのと同数のバッファに対し、すべてのエージェントが均等にアクセスできるようにする。
【００３０】
好ましい実施形態に関して本発明を説明してきたが、当業者であれば、特許請求の範囲の精神および範囲内の変更を行って本発明を実施できることが分かるだろう。
【００３１】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３２】
（１）エージェントと共用リソースに接続されたシステムであって、前記システムが、
前記共用リソースに関連する第１の制御部と、
前記エージェントに関連するディレクトリと、
前記ディレクトリに関連するリソース管理制御部であって、前記リソース管理制御部が前記共用リソースの分配を区画内に割り振るように適合され、前記区画のそれぞれが前記エージェントの少なくとも１つに関連付けられているリソース管理制御部とを具備し、
前記リソース管理制御部が、
前記第１の制御部に関連する置換制御部と、
前記置換制御部に関連し、前記区画のそれぞれに関する使用状況履歴を記録するように適合されたカウンタであって、前記置換制御部が前記使用状況履歴に応じて前記区画のそれぞれ内で前記共用リソースの前記分配を再割振りするように適合されたカウンタと、
しきい値を記憶するための前記区画のそれぞれ用のしきい値レジスタであって、前記しきい値を上回る使用状況履歴を有する前記区画のそれぞれで前記共用リソースの所定の最小割振りが維持されるしきい値レジスタとを含む、システム。
（２）前記カウンタが、前記区画内の共用リソースがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するように適合されている、上記（１）に記載のシステム。
（３）前記置換制御部が、前記共用リソースの前記分配を連続的に再割振りするようにさらに適合されている、上記（１）に記載のシステム。
（４）前記置換制御部が、使用レベルが高い区画に共用リソースを追加し、使用レベルが低い区画から共用リソースを除去することにより、前記共用リソースの前記分配を再割振りするように適合されている、上記（３）に記載のシステム。
（５）前記置換制御部に関連する状態レジスタをさらに具備し、前記状態レジスタが、各共用リソースが位置する区画を識別するように適合されている、上記（１）に記載のシステム。
（６）前記状態レジスタが、前記共用リソースのそれぞれごとに個別の状態レジスタを具備する、上記（１）に記載のシステム。
（７）前記状態レジスタのそれぞれが、各共用リソースが位置する区画を識別する識別子タグを含む、上記（６）に記載のシステム。
（８）プロセッサと、バッファを有するメモリに接続された処理システムであって、前記処理システムが、
前記メモリに動作可能に接続されたメモリ制御部と、
前記プロセッサに動作可能に接続されたディレクトリと、
前記ディレクトリに動作可能に接続されたバッファ管理制御部であって、前記バッファ管理制御部が前記バッファの分配を区画内に割り振るように適合され、前記区画のそれぞれが前記プロセッサの少なくとも１つに関連付けられているバッファ管理制御部とを具備し、
前記バッファ管理制御部が、
前記メモリ制御部に動作可能に接続された置換制御部と、
前記置換制御部に動作可能に接続され、前記区画のそれぞれに関する使用状況履歴を記録するように適合されたカウンタであって、前記置換制御部が前記使用状況履歴に応じて前記区画のそれぞれ内で前記バッファの前記分配を再割振りするように適合されたカウンタと、
しきい値を記憶するための前記区画のそれぞれ用のしきい値レジスタであって、前記しきい値を上回る使用状況履歴を有する前記区画のそれぞれで前記バッファの所定の最小割振りが維持されるしきい値レジスタとを含む、システム。
（９）前記カウンタが、前記区画内のバッファがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するように適合されている、上記（８）に記載のシステム。
（１０）前記置換制御部が、前記バッファの前記分配を連続的に再割振りするようにさらに適合されている、上記（８）に記載のシステム。
（１１）前記置換制御部が、使用レベルが高い区画にバッファを追加し、使用レベルが低い区画からバッファを除去することにより、前記バッファの前記分配を再割振りするように適合されている、上記（１０）に記載のシステム。
（１２）前記置換制御部に動作可能に接続された状態レジスタをさらに具備し、前記状態レジスタが、各バッファが位置する区画を識別するように適合されている、上記（８）に記載のシステム。
（１３)前記状態レジスタが、前記バッファのそれぞれごとに個別の状態レジスタを具備する、上記（８）に記載のシステム。
（１４）前記状態レジスタのそれぞれが、各バッファが位置する区画を識別する識別子タグを含む、上記（１３）に記載のシステム。
（１５）複数のエージェント間で共用リソースを割り振るための方法であって、前記方法が、
複数の区画内に前記リソースの分配を割り振るステップであって、前記区画のそれぞれが前記エージェントの少なくとも１つに関連付けられているステップと、
前記区画のそれぞれに関する使用状況履歴を記録するステップと、
前記使用状況履歴に応じて前記区画のそれぞれ内の前記リソースの前記分配を再割振りするステップと、
所定のしきい値を上回る使用状況履歴を有する前記区画のそれぞれに対し前記共用リソースの所定の最小割振りを維持するステップとを具備する方法。
（１６）前記記録ステップと再割振りステップを繰り返すステップをさらに具備する、上記（１５）に記載の方法。
（１７）前記再割振りステップが、使用レベルが高い区画にリソースを追加するステップと、使用レベルが低い区画からリソースを除去するステップとを具備する、上記（１５）に記載の方法。
（１８）前記使用状況履歴の前記記録ステップが、前記区画内のリソースがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するステップを具備する、上記（１５）に記載の方法。
（１９）前記リソースが、前記カウントが所定の値を超えたときにのみ前記区画間で再割振りすることができる、上記（１８）に記載の方法。
（２０）前記割振りステップが、前記リソースに識別子タグを付加するステップを具備し、前記識別子タグが各リソースが位置する区画を識別する、上記（１５）に記載の方法。
（２１）複数のプロセッサ間でバッファを割り振るための方法であって、前記方法が、
複数の区画内に前記バッファの分配を割り振るステップであって、前記区画のそれぞれが前記プロセッサの少なくとも１つに関連付けられているステップと、
前記区画のそれぞれに関する使用状況履歴を記録するステップと、
前記使用状況履歴に応じて前記区画のそれぞれ内の前記バッファの前記分配を再割振りするステップと、
所定のしきい値を上回る使用状況履歴を有する前記区画のそれぞれに対し前記バッファの所定の最小割振りを維持するステップとを具備する方法。
（２２）前記記録ステップと再割振りステップを繰り返すステップをさらに具備する、上記（２１）に記載の方法。
（２３）前記再割振りステップが、使用レベルが高い区画にバッファを追加するステップと、使用レベルが低い区画からバッファを除去するステップとを具備する、上記（２１）に記載の方法。
（２４）前記使用状況履歴の前記記録ステップが、前記区画内のバッファがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するステップを具備する、上記（２１）に記載の方法。
（２５）前記バッファが、前記カウントが所定の値を超えたときにのみ前記区画間で再割振りすることができる、上記（２４）に記載の方法。
（２６）前記割振りステップが、前記バッファに識別子タグを付加するステップを具備し、前記識別子タグが各バッファが位置する区画を識別する、上記（２１）に記載の方法。
（２７）複数のエージェント間で共用リソースを割り振るための方法を実行するためにマシンによって実行可能な複数命令からなるプログラムを具体的に実施するマシンによって読取り可能なプログラム記憶装置であって、前記方法が、
複数の区画内に前記リソースの分配を割り振るステップであって、前記区画のそれぞれが前記エージェントの少なくとも１つに関連付けられているステップと、
前記区画のそれぞれに関する使用状況履歴を記録するステップと、
前記使用状況履歴に応じて前記区画のそれぞれ内の前記リソースの前記分配を再割振りするステップと、
所定のしきい値を上回る使用状況履歴を有する前記区画のそれぞれに対し前記共用リソースの所定の最小割振りを維持するステップとを具備するプログラム記憶装置。
（２８）前記方法が、前記記録ステップと再割振りステップを繰り返すステップをさらに具備する、上記（２７）に記載のプログラム記憶装置。
（２９）前記再割振りステップが、使用レベルが高い区画にリソースを追加するステップと、使用レベルが低い区画からリソースを除去するステップとを具備する、上記（２７）に記載のプログラム記憶装置。
（３０）前記使用状況履歴の前記記録ステップが、前記区画内のリソースがどのくらいの頻度でアクセスされるかというカウントを各区画ごとに維持するステップを具備する、上記（２７）に記載のプログラム記憶装置。
（３１）前記リソースが、前記カウントが所定の値を超えたときにのみ前記区画間で再割振りすることができる、上記（３０）に記載のプログラム記憶装置。
（３２）前記割振りステップが、前記リソースに識別子タグを付加するステップを具備し、前記識別子タグが各リソースが位置する区画を識別する、上記（３１）に記載のプログラム記憶装置。
【図面の簡単な説明】
【００３３】
【図１】仮想チャネル・メモリ・デバイスのアーキテクチャ・ブロック図である。
【図２】仮想チャネル・メモリ・アレイを管理するための共用ディレクトリを有する処理システムを示す図である。
【図３】仮想チャネル・メモリ・アレイを管理する装置を有する処理システムを示す図である。
【図４】本発明に関連する方法の状態図である。
【図５】本発明に関連する方法の状態図である。
【図６】本発明に関連する方法の状態図である。
【符号の説明】
【００３４】
３０１  プロセッサ
３０３  仮想チャネルＳＤＲＡＭメイン・メモリ
３０７  アドレス／制御バス
３０８  データ・バス
３０９  アドレス／制御
３１０  データ
３１１  メモリ制御部
３１２  ディレクトリ
３１３  項目０
３１３  項目ｎ
３１４  タグ
３１５  比較
３２１  置換制御部
３２３  区画ＩＤ
３２７  状態０
【図１】
2004164607.tif 000003
【図２】
2004164607.tif 000004
【図３】
2004164607.tif 000005
【図４】
2004164607.tif 000006
【図５】
2004164607.tif 000007
【図６】
2004164607.tif 000008