(57)【要約】【課題】エージェントによるリソースへのアクセスを制御する。【解決手段】コンピュータシステムは、プロセッサバスに接続される多数のプロセッサ３１１〜３１４を有する。プロセッサバス３３０はプロセッサによるバスへのアクセスを制御するように構成された成形モニタ３４０を含む。成形モニタ３４０はプロセッサに割当てられた優先度に従って、ベース期間全体を通して各プロセッサからのアクセスを分散しようと試みる。成形モニタ３４０はそれらの相対的な優先度に従ってプロセッサへスロットを割当てる。優先度は最初にプロセッサの夫々の帯域幅の要求に従って割当てられるが、バスへの実際のアクセスと予測されるアクセスとの比較に基づいて変更されることができる。【選択図】図３
2005216308.tif 000002
【特許請求の範囲】
【請求項１】
複数のエージェントの夫々に対して、そのエージェントに関連する優先度を識別するステップと、
各エージェントに関連する前記優先度に従ってそのエージェントがリソースにアクセスすることを可能にするステップと、
を含む複数のエージェントによるリソースへのアクセスを制御する方法。
【請求項２】
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備し、ここで、前記エージェントの前記リソースへのアクセスを可能にするステップは、タイムスロットの組み合わせを規定し、各プロセッサに関連する前記優先度に基づいたパターンに従って前記プロセッサを前記タイムスロットに割当てるステップを含む請求項１に記載の方法。
【請求項３】
各プロセッサに対して、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するステップと、
前記実際のアクセス数が予測されるアクセス数よりも大きい場合には、前記プロセッサに関連する前記優先度を減少させ、前記実際のアクセス数が予測されるアクセス数よりも小さい場合には、前記プロセッサに関連する前記優先度を増加させるステップと、
を更に含む請求項２に記載の方法。
【請求項４】
前記プロセッサに関連する前記優先度の変化に基づいて前記パターンを変更するステップを更に含む請求項３に記載の方法。
【請求項５】
前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するステップは、
コマンドがプロセッサバスに出力される毎に、出力コマンドカウンタ値ｉをインクリメントするステップと、
コマンドが前記プロセッサから前記プロセッサバスに出力される毎に、レートカウンタ開始値ａだけ累算器の値をインクリメントするステップと、
ベースカウンタ値ｂに等しいビット数だけ前記累算器の値をシフトするステップと、
シフトされた前記累算器の値を前記出力コマンドカウンタ値から減算して、前記プロセッサによる前記バスへの前記実際のアクセス数から前記プロセッサによる前記バスへの前記予測されるアクセス数を減算した数に等しい値を発生するステップと、
を含む請求項３に記載の方法。
【請求項６】
前記リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタを維持するステップと、
各エージェントに対してそのエージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるレートカウンタを維持するステップと、
対応するレートカウンタがゼロではない場合にのみ各エージェントがリソースにアクセスすることを許容するステップと、
を更に含む請求項１に記載の方法。
【請求項７】
各エージェントに関連する前記優先度は、最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定される請求項１に記載の方法。
【請求項８】
１以上のエージェントに関連する前記優先度を変更するステップを更に含む請求項１に記載の方法。
【請求項９】
１以上のエージェントに対して、そのエージェントによる前記リソースへの実際のアクセス数がそのエージェントによる前記リソースへの予測されるアクセス数よりも大きいか小さいかを決定するステップを更に含む請求項８に記載の方法。
【請求項１０】
１以上のエージェントに関連する前記優先度を変更するステップは、１以上のエージェントの夫々に対して、前記実際のアクセス数が前記予測されるアクセス数よりも大きい場合には、そのエージェントに関連する前記優先度を減少させ、前記実際のアクセス数が前記予測されるアクセス数よりも小さい場合には、そのエージェントに関連する前記優先度を増加するステップを含む請求項９に記載の方法。
【請求項１１】
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備する請求項１に記載の方法。
【請求項１２】
前記エージェントが前記リソースにアクセスすることを可能にするステップは、タイムスロットの組み合わせを規定し、前記エージェントに関連する前記優先度に基づいたパターンに従って前記エージェントを前記タイムスロットに割当てるステップを含む請求項１に記載の方法。
【請求項１３】
リソースに結合されるように構成される論理素子を具備し、
前記論理素子は、複数のエージェントの夫々に対する優先度を識別し、各エージェントに対して、対応する優先度に従って前記リソースへのアクセスを可能にするように構成されるシステム。
【請求項１４】
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサが結合されるバスを具備し、前記論理素子は、タイムスロットの組み合わせを規定し、前記プロセッサに関連する前記優先度に基づいて反復するパターンに従って前記プロセッサを前記タイムスロットに割当てることによって前記バスへのアクセスを可能にするように構成される請求項１３に記載のシステム。
【請求項１５】
前記論理素子は、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定し、前記実際のアクセス数が前記予測されるアクセス数よりも大きい場合には、前記プロセッサに関連する前記優先度を減少させ、前記実際のアクセス数が前記予測されるアクセス数よりも小さい場合には、前記プロセッサに関連する前記優先度を増加させるように構成される請求項１４に記載のシステム。
【請求項１６】
前記論理素子は更に前記プロセッサに関連する前記優先度の変化に基づいて前記パターンを変更するように構成される請求項１５に記載のシステム。
【請求項１７】
前記論理素子は、各プロセッサに対して、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するように構成され、その決定は、
コマンドがプロセッサバスに出力される毎に、出力コマンドカウンタ値ｉをインクリメントし、
コマンドが前記プロセッサから前記プロセッサバスに出力される毎に、レートカウンタの開始値ａだけ累算器の値をインクリメントし、
ベースカウンタ値ｂに等しいビット数だけ前記累算器の値をシフトし、
シフトされた前記累算器の値を前記出力コマンドカウンタ値から減算して、前記プロセッサによる前記バスへの前記実際のアクセス数から前記プロセッサによる前記バスへの前記予測されるアクセス数を減算した数に等しい値を発生することにより行われる請求項１５に記載のシステム。
【請求項１８】
前記リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタと、エージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成される各エージェントに対するレートカウンタと、を更に具備する請求項１３に記載のシステム。
【請求項１９】
前記論理素子は、対応するレートカウンタがゼロではない場合のみ、各エージェントが前記リソースにアクセスすることを許容するように構成される請求項１８に記載のシステム。
【請求項２０】
各エージェントに関連する前記優先度は最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定される請求項１３に記載のシステム。
【請求項２１】
前記論理素子は１以上のエージェントに関連する前記優先度を変更するように構成される請求項１３に記載のシステム。
【請求項２２】
前記論理素子は、１以上のエージェントに対して、そのエージェントによる前記リソースへの実際のアクセス数がそのエージェントによる前記リソースへの予測されるアクセス数よりも大きいか小さいかを決定するように構成される請求項２１に記載のシステム。
【請求項２３】
前記論理素子は、１以上のエージェントの夫々に対して、前記実際のアクセス数が前記予測されるアクセス数よりも大きい場合には、そのエージェントに関連する前記優先度を減少させ、前記実際のアクセス数が前記予測されるアクセス数よりも小さい場合には、そのエージェントに関連する前記優先度を増加させるように構成される請求項２２に記載のシステム。
【請求項２４】
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備する請求項１３に記載のシステム。
【請求項２５】
前記論理素子はタイムスロットの組み合わせを規定し、前記エージェントに関連する前記優先度に基づいて反復するパターンに従って前記エージェントを前記タイムスロットに割当てるように構成される請求項１３に記載のシステム。
【請求項２６】
コンピュータに以下の方法を実行させるように構成された１以上の命令を含んだコンピュータで読取可能な媒体を含むソフトウェアプロダクトにおいて、前記方法は、
複数のエージェントの夫々に対して、そのエージェントに関連する優先度を識別するステップと、
そのエージェントに関連する前記優先度に従って各エージェントのリソースへのアクセスを可能にするステップと、
を含むソフトウェアプロダクト。
【請求項２７】
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備し、ここで、前記エージェントの前記リソースへのアクセスを可能にするステップは、タイムスロットの組み合わせを規定し、各プロセッサに関連する前記優先度に基づいた反復パターンに従って前記プロセッサを前記タイムスロットに割当てるステップを含む請求項２６記載のソフトウェアプロダクト。
【請求項２８】
各プロセッサに対して、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するステップと、
前記実際のアクセス数が予測されるアクセス数よりも大きい場合には、前記プロセッサに関連する前記優先度を減少させ、前記実際のアクセス数が予測されるアクセス数よりも小さい場合には、前記プロセッサに関連する前記優先度を増加させるステップと、
を更に実行させる請求項２７記載のソフトウェアプロダクト。
【請求項２９】
前記プロセッサに関連する前記優先度の変化に基づいて前記パターンを変更するステップを更に実行させる請求項２８記載のソフトウェアプロダクト。
【請求項３０】
前記ソフトウェアプロダクトは、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するように構成され、その決定は、
コマンドがプロセッサバスに出力される毎に、出力コマンドカウンタ値ｉをインクリメントするステップと、
コマンドが前記プロセッサから前記プロセッサバスに出力される毎に、レートカウンタ開始値ａだけ累算器の値をインクリメントするステップと、
ベースカウンタ値ｂに等しいビット数だけ前記累算器の値をシフトするステップと、
シフトされた前記累算器の値を前記出力コマンドカウンタ値から減算して、前記プロセッサによる前記バスへの前記実際のアクセス数から前記プロセッサによる前記バスへの前記予測されるアクセス数を減算した数に等しい値を発生するステップと、
を含む請求項２８記載のソフトウェアプロダクト。
【請求項３１】
前記リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタを維持するステップと、
各エージェントに対してそのエージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるレートカウンタを維持するステップと、
対応するレートカウンタがゼロではない場合にのみ各エージェントがリソースにアクセスすることを許容するステップと、
を更に実行させる請求項２６記載のソフトウェアプロダクト。
【請求項３２】
各エージェントに関連する前記優先度は、最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定される請求項２６記載のソフトウェアプロダクト。
【請求項３３】
１以上のエージェントに関連する前記優先度を変更するステップを更に実行させる請求項２６記載のソフトウェアプロダクト。
【請求項３４】
１以上のエージェントに対して、そのエージェントによる前記リソースへの実際のアクセス数がそのエージェントによる前記リソースへの予測されるアクセス数よりも大きいか小さいかを決定するステップを更に実行させる請求項３３記載のソフトウェアプロダクト。
【請求項３５】
１以上のエージェントに関連する前記優先度を変更するステップは、１以上のエージェントの夫々に対して、前記実際のアクセス数が前記予測されるアクセス数よりも大きい場合には、そのエージェントに関連する前記優先度を減少させ、前記実際のアクセス数が前記予測されるアクセス数よりも小さい場合には、そのエージェントに関連する前記優先度を増加するステップを含む請求項３４記載のソフトウェアプロダクト。
【請求項３６】
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備する請求項２６記載のソフトウェアプロダクト。
【請求項３７】
前記エージェントが前記リソースにアクセスすることを可能にするステップは、タイムスロットの組み合わせを規定し、前記エージェントに関連する前記優先度に基づいたパターンに従って前記エージェントを前記タイムスロットに割当てるステップを含む請求項２６記載のソフトウェアプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にデータ処理システム及び方法に関し、特に、コンピュータプロセッサのような多数のエージェントが、通信バスのようなリソースにアクセスする態様を制御するシステム及び方法に関する。このシステム及び方法により、種々のエージェントによるアクセスの分配を改良して、リソースのアクセスに関する渋滞及び遅延を減少させる。
【背景技術】
【０００２】
コンピュータシステムは益々強力となり、科学及びビジネスの目的だけでなく、娯楽の目的でも使用される。例えば、幾つかのコンピュータシステムは、音響、音楽、静止画像、ビデオ画像等の種々の形態で情報をユーザに与えるためのマルチメディア用途で使用される。幾つかのコンピュータシステムは、これらのマルチメディア用途に最適化され、実際に幾つかのコンピュータシステムは、ゲームのようなマルチメディア用途専用となるように設計される。
【０００３】
マルチメディアゲーム用途及びそれと別のマルチメディア用途を実行するように設計されるコンピュータシステムは、しばしば単一のプロセッサではなく、複数のプロセッサを使用する。これらのシステムは多数のプロセッサを有し、１以上のプロセッサが異なるタイプの機能を実行するように設定される。例えば、１つのプロセッサは数学計算または制御機能を処理し、別のプロセッサはビデオ生成を処理し、更に別のプロセッサは音響発生を処理する。各プロセッサ（またはプロセッサグループ）に割当てられる責任の分担により、プロセッサはこれらが責任を負う特別なタイプの機能に最適化されることができる。異なるプロセッサはシステムの異なる機能を調整するために通常相互接続され、対話的に動作する。
【０００４】
典型的には、マルチメディアゲームシステムで動作可能な異なったプロセッサは夫々共通のバスに接続される。このバスはプロセッサに対する共通の制御がそれらの動作を調節することを可能にし、またそれらの間でデータの交換を可能にする。更に、バスは適切な出力素子へ異なるプロセッサの出力を伝送する手段を提供する。多数の機能が多数のプロセッサにより行われなければならないので、多量の情報がこのバスにより通信される。多くのプロセッサが命令やデータをシステムの種々の他の部分へ通信するためにバスにアクセスしようとするので、バスが渋滞する潜在性がある。換言すると、プロセッサはバスの容量を超過する情報量をバスで通信しようとする可能性がある。
【０００５】
このため、バスの渋滞を阻止するための機構を構成する必要がある。通常、種々のプロセッサによるバスへのアクセスは、各プロセッサによるバスへのアクセスに厳しい制限を課すことにより制御される。例えば、バスに結合される４個のプロセッサが存在する。各プロセッサは、所定の期間においてバスへの予め定められた数のアクセス（例えば、バスに対して出力されるコマンド）を可能にされる。各プロセッサでは、アクセス数が予め定められた数に一旦到達すると、そのプロセッサはバスにアクセスすることができなくなる。
【０００６】
しかしながら、バスへのアクセスを制御するこの機構は幾つかの理由で理想的なものではない。これらの理由の１つは、異なるプロセッサによるアクセスのパターンが不規則であることである。これは、マルチメディアシステムにおいて、プロセッサが実行されるマルチメディア用途の実時間の需要を満たすことを可能にするため、アクセスを更に規則的に行う必要があるために生じる問題である。この問題について実例により説明する。
【０００７】
図１は、特定のプロセッサにより使用される帯域幅を例示するグラフを示す。この図の目的のため、４個のプロセッサが存在し、夫々その割当てられた数のアクセスに到達するまでラウンドロビン方法でバスにアクセスすることが可能にされると仮定する。更に、図１のグラフで帯域幅の使用が示されるプロセッサ（プロセッサＡ）は、バスの帯域幅の５０％を必要とすると仮定する。
【０００８】
前述したように、プロセッサＡのバスアクセスが図１に（曲線１１０として）示される。最初に（時間ｔ０とｔ１間の時間中）、予め定められた割当てに到達するプロセッサはなく、このため、全ての４個のプロセッサは交替でバスにアクセスする。その結果、プロセッサＡは２５％の帯域幅を得る。時間ｔ１で、３個のプロセッサはそれらの割当てに到達し、このため、残りの期間（即ち時間ｔ２まで）のバスのアクセスを禁止される。従って、プロセッサＡだけが時間ｔ１からｔ２の期間中にバスにアクセスすることを可能にされる。前述したように、これは問題を生じる。即ち、各プロセッサに対して実時間の要求を満たすために、プロセッサＡはｔ０からｔ１の期間中に２５％を超える帯域幅を必要とする可能性があり、他のプロセッサはｔ１からｔ２の期間中に０％を超える帯域幅を必要とする可能性がある。
【発明の開示】
【課題を解決するための手段】
【０００９】
先に概説した１以上の問題は本発明の種々の実施形態により解決されることができる。広く言えば、本発明は１組のエージェントによるリソースへのアクセスを制御するシステム及び方法を含んでおり、エージェントはそれらに関連する対応する優先度を有し、リソースに関連するモニタは優先度に基づいてエージェントによるリソースのアクセスを制御する。１実施形態では、優先度はエージェント間のアクセスの更に最適な分配を実現するためにモニタにより行われる制御に適合するように変更されることができる。
【００１０】
本発明の１実施形態は、複数のエージェントによるリソースへのアクセスを制御する方法を含んでおり、その方法は各複数のエージェントの夫々に関連する優先度を識別し、エージェントに関連する優先度に従って各エージェントがリソースにアクセスすることを可能にするステップを含む。
【００１１】
本発明の別の実施形態は、リソースに結合されるように構成された論理素子を有するシステムを具備し、この論理素子は複数のエージェントの夫々の優先度を識別し、対応する優先度に従って各エージェントのリソースへのアクセスを可能にするように構成される。
【００１２】
本発明の更に別の実施形態は、コンピュータに以下のような方法を実行させるように構成された１以上の命令を含んだコンピュータで読取可能な媒体を含むソフトウェアプロダクトであり、その方法は複数の各エージェントに関連する優先度を識別し、エージェントに関連する優先度に従って各エージェントのリソースへのアクセスを可能にするステップを含む。
【００１３】
多数の付加的な実施形態も可能である。
【００１４】
本発明の種々の実施形態は従来技術よりも優れた多くの利点を提供する。例えば、前述の実施形態に関して説明すれば、より大きな帯域幅を必要とするプロセッサは従来技術のようにベース期間の初期には比較的少量のアクセスしか有しておらず、その後のベース期間に更に大量のアクセスを有するようにされるのではなく、ベース期間全体を通してバスへより大きなアクセスが与えられる。このため、バスへのプロセッサのアクセスは更に均一に分配され、バスにおける渋滞及びバーストが少なくなる。類似の利点は他のタイプのエージェント及びリソースを含むその他の実施形態でも与えられることができる。
【発明を実施するための最良の形態】
【００１５】
本発明のその他の目的及び利点は以下の詳細な説明と、添付図面を参照することにより明白になるであろう。  
本発明は種々の変更及び別の形態が可能であるが、その特定の実施形態が図面及びそれに付随する詳細な説明により例示として示される。しかしながら図面及び詳細な説明は本発明を説明するために記載した特定の実施形態に限定することを意図するものではないことが理解されるであろう。この説明は特許請求の範囲により規定されるように本発明の技術的範囲内に入る全ての変形、等化物、置換をカバーすることを意図する。
【００１６】
本発明の１以上の実施形態を以下説明する。以下説明するこれら及び任意の他の実施形態は例示であり、本発明を限定するものではなく本発明を例示する意図で示したことに注意すべきである。
【００１７】
概略的に言えば、本発明は１組のエージェントによるリソースへのアクセスを制御するシステム及び方法を含む。エージェントはそれらに関連する対応する優先度を有し、リソースに関連するモニタは優先度に基づいてエージェントによるリソースへのアクセスを制御する。１実施形態では、優先度はエージェント間のアクセスの更に最適な分配を実現するため、モニタにより実行される制御に適合するように変更されることができる。
【００１８】
本発明は異なる種々のタイプのシステムに広く適用されることが可能であるが、この明細書の説明中に本発明の全ての可能な実施形態と状況を含むことはできない。このため、本発明の説明は、マルチプロセッサコンピュータシステムで実行される幾つかの例示的な実施形態に焦点を当てている。これらは限定的ではなく例示的であることに注意すべきである。この説明を読むとき、本発明の多数の代わりの実施形態は当業者に明白であろう。全てのこれらの別の実施形態は特許請求の範囲内に包含される。
【００１９】
本発明の１実施形態はマルチプロセッサコンピュータシステムで実行される。このシステムは、種々の異なるマルチメディアタスクを実行するように構成された１組のプロセッサを含む。各プロセッサは、プロセッサ間及びコンピュータシステムのその他の部分との間で情報を通信するために使用されるプロセッサバスに接続される。このプロセッサバスは、各プロセッサによるプロセッサバスへのアクセスを制御するように構成される成形モニタを含む。
【００２０】
この実施形態では、成形モニタはベース期間全体を通して、比較的均一に各プロセッサからのコマンドアクセスを分配することを試みるように構成される。成形モニタは夫々のプロセッサに割当てられる優先度に従ってプロセッサへタイムスロットを割当てる。プロセッサが高い優先度を有するならば、より多くのスロットがそのプロセッサに割当てられる。プロセッサが低い優先度を有するならば、より少ないスロットしかそのプロセッサに割当てられない。成形モニタは、異なるプロセッサに割当てられているスロットを規定する反復パターンを決定することができる。
【００２１】
この実施形態では、プロセッサに関連する優先度は、プロセッサの夫々の帯域幅要求またはリクエストに従って最初に割当てられる。しかしながら、異なるプロセッサに関連する優先度は変更されることができる。１実施形態では、成形モニタは各プロセッサによりバスに出力されるコマンド数を決定し、この数を予測される数と比較する。バスに出力される実際のコマンド数が予測されるよりも少ないならば、そのプロセッサに関連する優先度は増加される。バスに出力される実際のコマンド数が予測されるよりも大きいならば、そのプロセッサに関連する優先度は減少される。プロセッサの優先度に対するこれらの変更はコマンドの実際の数を予測される数へ近づける傾向がある。
【００２２】
本発明の別の実施形態は、複数のエージェントによるリソースへのアクセスを制御する方法を含む。この方法は、複数のエージェントの夫々に関連する優先度を識別し、エージェントに関連する優先度に従って、各エージェントがリソースにアクセスすることを可能にするステップを含む。１実施形態では、エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、リソースはプロセッサを相互接続するバスを備える。この実施形態では、エージェントがリソースにアクセスすることを可能にすることによってタイムスロットの組み合わせが規定され、プロセッサに関連する優先度に基づいて、反復パターンに従ってプロセッサをタイムスロットに割当てる。１実施形態では、各プロセッサにおいて、プロセッサによるバスへの実際のアクセス数がプロセッサによるバスへの予測されるアクセス数よりも大きいか小さいかを決定し、実際のアクセス数が予測されるアクセス数よりも大きいならば、プロセッサに関連する優先度を減少させ、実際のアクセス数が予測されるアクセス数よりも小さいならば、プロセッサに関連する優先度を増加するステップを含む。１実施形態では、各エージェントに関連する優先度は、最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定される。１実施形態において、その方法は更に、リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタを維持し、また、各エージェントでそのエージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるレートカウンタを維持し、そして、対応するレートカウンタがゼロではない場合にのみ各エージェントがリソースにアクセスすることを可能にするステップを含む。
【００２３】
本発明の更に別の実施形態は、リソースに結合されるように構成される論理素子を有するシステムを具備する。論理素子は、複数の各エージェントに対して優先度を識別し、各エージェントに対して、対応する優先度に従ってリソースへのアクセスを可能にするように構成される。１実施形態では、エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、リソースはプロセッサが結合されるバスを具備する。この実施形態では、論理素子は、タイムスロットの組み合わせを規定し、プロセッサに関連する優先度に基づいて反復するパターンに従って、プロセッサをタイムスロットに割当てることによりバスへのアクセスを可能にするように構成される。１実施形態では、論理素子は、プロセッサによるバスへの実際のアクセス数がプロセッサによるバスへの予測されるアクセス数よりも大きいか小さいかを決定し、実際のアクセス数が予測されるアクセス数よりも大きいならばそのプロセッサに関連する優先度を減少させ、実際のアクセス数が予測されるアクセス数よりも小さいならばそのプロセッサに関連する優先度を増加させるように構成される。１実施形態では、システムは更に、リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタと、エージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるエージェントに対するレートカウンタとを具備する。この実施形態では、論理素子は対応するレートカウンタがゼロではない場合のみ、各エージェントがリソースにアクセスすることを可能にするように構成される。
【００２４】
本発明の更に別の実施形態は、コンピュータに以下のような方法を実行させるように構成された、１以上の命令を含んだコンピュータで読取可能な媒体を含むソフトウェアプロダクトである。その方法は、複数のエージェントの夫々に関連する優先度を識別し、エージェントに関連する優先度に従って各エージェントのリソースへのアクセスを可能にするステップを含む。１実施形態では、ソフトウェアプロダクトはマルチプロセッサコンピュータシステムで実行されるように構成される。この実施形態では、エージェントはプロセッサを具備し、リソースはプロセッサを相互接続するバスを備える。この実施形態では、ソフトウェアプロダクトは、タイムスロットの組み合わせを規定し、プロセッサに関連する優先度に基づいて、反復パターンに従ってプロセッサをタイムスロットに割当てることにより、エージェントがリソースにアクセスすることができるように構成される。１実施形態では、ソフトウェアプロダクトは、各プロセッサでプロセッサによるバスへの実際のアクセス数がプロセッサによるバスへの予測されるアクセス数よりも大きいか小さいかを決定し、実際のアクセス数が予測されるアクセス数よりも大きいならば、プロセッサに関連する優先度を減少させ、実際のアクセス数が予測されるアクセス数よりも小さいならば、プロセッサに関連する優先度を増加させるステップを含むように構成される。１実施形態では、ソフトウェアプロダクトは、各エージェントに関連する優先度を最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定するように構成される。１実施形態では、ソフトウェアプロダクトはリソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタを維持し、各エージェントに対して、そのエージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるレートカウンタを維持し、対応するレートカウンタがゼロではない場合にのみ各エージェントがリソースにアクセスすることを許容するように構成される。
【００２５】
前述したように、ここに記載されたマルチプロセッサシステムは、本発明の特別な実施形態の状況を提供する。これらの実施形態は本発明を限定するものではなく例示であるから、これらの実施形態と共に使用される特別な用語は本発明を限定するものではなく例示として考えるべきである。例えば、幾つかの実施形態はバスへのプロセッサのアクセス制御を含むが、これらの用語（例えば、プロセッサ、コマンド、バス）は説明及び特許請求の範囲の他の場所で使用される更に一般的な用語（例えば、エージェント、アクセス、リソース）の例示である。
【００２６】
本発明の種々の実施形態は従来技術よりも優れた多くの利点を提供する。例えば、前述の実施形態に関して、より大きな帯域幅を要求するプロセッサは、ベース期間中の早期に比較的少量のアクセスを有すると共に、その後のベース期間に更に大量のアクセスを有するのではなく、ベース期間全体を通してバスへの大きなアクセスが与えられる。バスへのプロセッサのアクセスは、このため、更に均一に分配され、バスにおける渋滞及び満杯状況が少なくなる。類似の利点は他のタイプのエージェント及びリソースを含む別の実施形態でも与えられることができる。
【００２７】
図２は、１実施形態に係るコンピュータシステムのコンポーネントを備える機能ブロック図を示す。コンピュータシステム２１０は、処理サブシステム２２０と、メモリサブシステム２３０と、入力／出力（Ｉ／Ｏ）サブシステム２４０とを含む。ユーザ２５０はコンピュータサブシステム２１０と相互動作し、出力がＩ／Ｏサブシステム２４０を介してユーザへ与えられる。
【００２８】
図３は、１実施形態に係る処理サブシステム２２０のコンポーネントを備える機能ブロック図を示す。この実施形態では、処理サブシステム２２０は、多数の個々のプロセッサ３１１−３１４を含むマルチプロセッササブシステムである。各プロセッサ３１１−３１４はキャッシュメモリ３２１−３２４を含む。
【００２９】
図３に示されるように、キャッシュメモリ３２１−３２４は、プロセッサ３１１−３１４がプロセッサ自体に加えて他のコンポーネントを含む可能性があることを例示する。キャッシュメモリ３２１−３２４は単なる例示であり、キャッシュメモリ以外のコンポーネントも物理的なプロセッサ素子中に含まれることができる。プロセッサ３１１−３１４は図面では同一に示されるが、それらの構成や、それらが含むサブコンポーネント等は同一であってもよく、或いは異なってもよいことに注意すべきである。換言すると、プロセッサは同種でも、または異種でもよい。
【００３０】
プロセッサ３１１−３１４は、夫々処理サブシステムバス３３０に結合される。処理サブシステムバス３３０は、プロセッサ３１１−３１４が相互に、及び非キャッシュメモリ、Ｉ／Ｏコンポーネント等のようなコンピュータシステムの他のコンポーネントと通信することを可能にする。処理サブシステムバス３３０へのアクセスは、成形モニタ３４０によって制御される。
【００３１】
成形モニタ３４０は、図３の機能ブロック図では分離されたコンポーネントとして示される。成形モニタは種々の異なる方法で構成されることができることに注意すべきである。例えば、成形モニタ３４０は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組み合わせとして構成されてもよい。ハードウェアとして、成形モニタ３４０は、バス３３０に結合される別個の論理回路を具備するか、バス３３０自体に構成されることができる。成形モニタ３４０のソフトウェア構成は、特別目的のプロセッサまたはプロセッサ３１１−３１４の１つにおいて実行される。コンピュータで読取可能な媒体中に記憶され、この説明に従って動作するように構成されるソフトウェアコードは、それ自体本発明の別の実施形態であると考えられることに注意すべきである。成形モニタが分散されたサブシステムとして構成されてもよいことにも注意すべきである。例えば、１実施形態では、各プロセッサは、そのプロセッサに対して帯域幅成形機能を行う対応する成形モニタコンポーネントを有してもよい。更に他の変形も可能である。
【００３２】
本発明の当業者は、図２及び３に示される構造が単なる例示であり、他の実施形態では別の構造を使用できることを認識するであろう。例えば、プロセッサ３１１−３１４は、汎用目的のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特別目的のプロセッサ、または他のタイプのプロセッサでもよい。更にプロセッサは、前述したようにキャッシュメモリまたは他の集積コンポーネントを含んでいても含まなくてもよい。特許請求の範囲の技術的範囲はこのため、ここで説明する特定の構造に限定されない。
【００３３】
図４は、１実施形態に従って成形モニタ３４０を使用する成形機構を示す。この実施形態では、プロセッサ３１１−３１４からのコマンドは待ち行列４１１−４１４に位置される。例えば、プロセッサ３１１からのコマンドは待ち行列４１１中に位置され、プロセッサ３１２からのコマンドは待ち行列４１２に位置される。待ち行列４１１中のコマンドは“Ａ”コマンドとして図４で示され、待ち行列４１２−４１４のコマンドは“Ｂ”―“Ｄ”コマンドとして図４中に示される。この実施形態では、特定の待ち行列中のコマンドは単一のプロセッサに対応し、他の実施形態は異なることに注意すべきである。例えば、１つの別の実施形態では、各プロセッサは多数のクラスでコマンドを発生し、特定の待ち行列のコマンドは単一のクラスに対応するが、単一のプロセッサには対応しない。
【００３４】
成形モニタ制御回路４４０は、次のコマンドをバスへ与えるように選択される待ち行列４１１−４１４を決定するためにマルチプレクサ４３０を制御する。成形モニタ制御回路４４０は、それによって各プロセッサから出力されたコマンドの数を制御し、従って各プロセッサにより使用されるバスの帯域幅を制御する（それによって成形機構が構成される）。
【００３５】
１実施形態では、成形モニタ制御回路４４０は各プロセッサのためのカウンタ対を維持する。それらの一方のカウンタはレートカウンタであり、他方はベースカウンタである。各プロセッサ用のベースカウンタは時間フレームを測定し、この実施形態では各プロセッサに対しては同一である。成形モニタ制御回路４４０は、全てのプロセッサに共通の単一のベースカウンタ、または各プロセッサで別々のベースカウンタを使用することができる。ベースカウンタは、時間フレームに対応する予め定められた開始値からカウントダウンする。開始値は成形モニタ制御回路４４０により変更可能である。
【００３６】
各プロセッサに対するレートカウンタは、プロセッサによりバスに出力されるコマンド数をカウントする。各プロセッサのレートカウンタは、そのプロセッサに対して設定された値からカウントダウンする。その値は１実施形態ではプロセッサの帯域幅割当てに基づく。例えば、ベースカウンタが開始値２５５を有し、特定のプロセッサが５０％の帯域幅割当てを有するならば、レートカウンタの開始値はベースカウンタの開始値の５０％、即ち１２７である。１２７は２５５の正確に半分ではないが、カウンタは実際にそれらの夫々の開始値から１の代わりに０までカウントする。従って、開始値ｎを有するカウンタでは、実際にカウンタのｎ＋１値が存在する。このため、開始値１２７を有するカウンタは、開始値２５５を有するカウンタの値の半分の値に亘ってデクリメントする。結果的に、この開示の目的に対しては、１２７の開始値は２５５の開始値の半分と考えられる。レートカウンタがカウントダウンする開始値は、成形モニタ３４０によって変更することが可能である。
【００３７】
ベースカウンタ及びレートカウンタは、プロセッサにより出力されることのできるコマンド数を限定する。ベースカウンタは最初にその開始値をロードされる。コマンドが（任意のプロセッサから）バスへ出力されると、ベースカウンタはデクリメントされる。レートカウンタは最初にその固有の開始値をロードされる。コマンドが対応するプロセッサからバスへ出力されると、レートカウンタはデクリメントされる。レートカウンタが０に到達すると、ベースカウンタが０に到達し、ベース及びレートカウンタがその後リセットされるまで、対応するプロセッサからコマンドは発生されない。
【００３８】
１実施形態では、成形モニタ３４０はレートカウンタの開始値を帯域幅割当てにほぼ比例する値に設定するように構成される。例えば、ベースカウンタの開始値が２５５であると仮定する。プロセッサ３１１がバスの帯域幅の５０％を必要とし、プロセッサ３１２と３１３は夫々２５％を必要とし、プロセッサ３１４は０％を必要とするならば、プロセッサ３１１のレートカウンタの開始値は１２７であり、プロセッサ３１２、３１３のレートカウンタの開始値は６３であり、プロセッサ３１４のレートカウンタの開始値は０である。その後、ベースカウンタが２５５からカウントダウンすると（ベースカウンタはバスに出力される各コマンドに対して１だけデクリメントされる）、レートカウンタは夫々の開始値からカウントダウンする。各レートカウンタは、対応するプロセッサのコマンドがバスに出力されるときにのみ、デクリメントされることに注意すべきである。
【００３９】
１実施形態では、成形モニタ３４０は、夫々のプロセッサに割当てられた優先度に従ってスロットをプロセッサに割当てることにより、ベース期間（ベースカウンタがその開始値から０までデクリメントする期間）を通して各プロセッサからのコマンドのアクセスを均一に分配しようとするように構成される。１実施形態では、優先度はプロセッサの夫々の帯域幅の必要性に従って割当てられる。１つのプロセッサが別のプロセッサの２倍の帯域幅を必要とするならば、第１のプロセッサは第２のプロセッサの優先度の２倍の優先度を有する。
【００４０】
１実施形態では、各プロセッサの帯域幅の必要性は夫々のプロセッサにより行われる帯域幅リクエストに従って決定される。プロセッサの帯域幅リクエストは、例えば、バスの総帯域幅の割合に関して行われることができる（例えば、プロセッサ３１１は５０％のバス帯域幅をリクエストする）。その代わりに、リクエストは特定量の帯域幅（例えば、毎秒ｎビット）または特定のアクセス数（例えば、毎秒ｎ個のコマンド）に対するリクエストであってもよい。帯域幅のリクエストはまた、プロセッサにより処理される機能の夫々のタイプに関して提示されてもよい。この例では、成形モニタは機能のタイプに基づいて夫々のプロセッサの帯域幅の必要性を決定する。例えば、ビデオプロセッサは、ビデオの目立ったアーティファクト（人為的な誤信号）を生じる遅延を防止するために、特定の最小量の帯域幅を必要としてもよい。オーディオプロセッサはまた、オーディオアーティファクトを防止するために類似の最小量の帯域幅を必要としてもよいが、ビデオ遅延のアーティファクトはオーディオ遅延アーティファクトより望ましくないことが考えられるので、ビデオプロセッサよりも低い優先度を割当てられる。多数の他の変形も同様に可能である。
【００４１】
この実施形態の成形モニタは、異なるプロセッサの帯域幅リクエストに基づいてプロセッサの優先度を設定する。１実施形態では、優先度はリクエストされた帯域幅に比例する値に設定される。その代わりに、優先度は優先度の順序を単に示す値に設定されてもよい。更に別の実施形態では、優先度はプロセッサの異なる機能を反映するように設定されることができる。更に他の別の実施形態では、優先度は更に別の方法で実行されてもよい。
【００４２】
プロセッサに関連する優先度に基づいて、成形モニタ３４０はプロセッサのアクセスが可能にされる順序を規定するパターンを決定する（例えば、どのようにしてプロセッサのコマンドがバスに転送されるか）。プロセッサ３１１−３１４が夫々５０％、２５％、２５％、０％を必要とする前述の例に基づいて、成形モニタ３４０は次の順序、即ちＡ、Ａ、Ｂ、Ｃ、Ａ、Ａ、Ｂ、Ｃ、…でバスにアクセスすることを可能にし、ここで“Ａ”はプロセッサ３１１に対応し、“Ｂ”はプロセッサ３１２に対応し、“Ｃ”はプロセッサ３１３に対応し、“Ｄ”はプロセッサ３１４に対応する。従って、バスに出力される４つのコマンド毎に、２つのコマンドがプロセッサ３１１から発生され、夫々１つのコマンドがプロセッサ３１２と３１３から発生される。
【００４３】
この例では、異なるプロセッサに関連する優先度は便宜的に２５％の倍数であると仮定される。しかしながら優先度はこのような便利な倍数に限定されない。この場合、アクセスの適切なパターンの決定は種々の方法で処理される。例えば、１実施形態では、成形モニタ３４０は優先度に対する最小共通分母を識別し、その最小共通分母に基づいてパターンを決定するように構成されることができる。夫々優先度３３％、３３％、２２％、１１％を有する４つのプロセッサ３１１−３１４の組み合わせの例を考えると、最小共通分母は１１％である。このため、成形モニタ３４０は、プロセッサ３１１−３１４によるアクセスのパターンを９個のタイムスロットパターンＡ、Ａ、Ａ、Ｂ、Ｂ、Ｂ、Ｃ、Ｃ、Ｄに規定することができる。成形モニタ３４０はまた、パターンを通して異なるプロセッサによるアクセスを分配してもよい。このため、成形モニタ３４０は、この例ではパターンＡ、Ｂ、Ｃ、Ａ、Ｂ、Ｃ、Ａ、Ｂ、Ｄを発生できる。
【００４４】
プロセッサの相対的な優先度が相互の倍数ではないならば、またはこれらは非常に大きい倍数（例えば、数十または数百のタイムスロットを必要とする）であるならば、パターン計算の目的で、優先度を更に便利な概数にすることができる。例えば、プロセッサが５１％、２３％、２４％、２％の優先度を有するならば、概数値５０％、２５％、２５％、０％がパターンの決定に使用されることができる。この例では優先度の概数化を考慮するために、パターンに定期的な調節を行うことが望ましい。例えば、Ａ、Ａ、Ｂ、Ｃのパターンに定期的にＡ、Ｂ、Ｃ、Ｄのパターンが挿入されることができる。
【００４５】
前述のコマンドのパターンは、帯域幅が成形モニタによりプロセッサ毎をベースとして割当てられる実施形態に焦点を当てている。換言すると、特定のプロセッサからの全てのコマンドは、そのプロセッサの帯域幅割当て内で処理される。しかしながら前述したように、プロセッサは夫々異なるクラスのコマンドを出力し、従って、成形モニタは異なるクラスを示すコマンドのパターンを設定することができる。
【００４６】
例えば、１実施形態では、各プロセッサは成形モニタサブシステムの対応するコンポーネントを有してもよい。第１のプロセッサ（プロセッサ０）は、コマンドのクラスＡ０に対して１０％の帯域幅をリクエストし、クラスＢ０に対して１０％をリクエストする。対応する成形モニタコンポーネントは、このため、パターンＡ０、Ｂ０、Ｎ、Ｎ、Ｎ、Ｎ、Ｎ、Ｎ、Ｎ、Ｎ、Ｎをリクエストし、ここでＮはリクエストされていないスロットを表す。第２のプロセッサ（プロセッサ１）は、クラスＡ１に対して２０％、クラスＢ１に対しては３０％をリクエストできる。このプロセッサの成形モニタコンポーネントは、このため、パターンＡ１、Ａ１、Ｂ１、Ｂ１、Ｂ１、Ｎ、Ｎ、Ｎ、Ｎ、Ｎをリクエストする。成形モニタシステムは、優先度等に従って種々の方法でこれらを組み合わせてもよい。１実施形態では、成形モニタはＡ１、Ａ０、Ａ１、Ｂ０、Ｂ１、Ｂ１、Ｂ１、Ｎ、Ｎ、Ｎ、…のようなパターンに帰結するようにリクエストを組み合わせることができる。この例では、帯域幅の全てが割当てられていない。別の実施形態では、割当てられていないスロットは全ての帯域幅を利用するために除去されることができる。
【００４７】
アクセスパターンを決定するための前述の方法において、多数の他の変形が別の実施形態で使用されることができる。これらの変形は当業者には容易に明白であろう。
【００４８】
前述の本発明の実施形態と対照的に、通常の成形機構は一般的にバスに出力されるプロセッサコマンドを不均一に分配しない。その代わりに、コマンドは典型的にラウンドロビン方式、即ちＡ、Ｂ、Ｃ、Ｄ、…で出力される。結果として、プロセッサ３１１は最初に小さ過ぎる帯域幅を有する可能性がある（それは、プロセッサ３１２及び３１３と同一の帯域幅であろう）。プロセッサ３１２及び３１３は、その後迅速にそれらの割当てに到達し、次のベース期間まで何等、更にコマンドを発生することができない。プロセッサ３１２及び３１３がそれらの割当てに到達した後、プロセッサ３１１は多量の帯域幅を有するが、プロセッサ３１２及び３１３はそれをもたない。これは図１に示される。更にプロセッサ３１４に割当てられたスロットは使用されず、対応する帯域幅は全て無駄にされる可能性がある。
【００４９】
前述の本発明の実施形態では、成形モニタ３４０により、プロセッサのコマンドは、プロセッサに関係する優先度に基づいて規定されたアクセスパターンに従ってバスに送られることが可能である。１実施形態では、プロセッサがその指定されたタイムスロットでバスに出力されるコマンドをもたないならば、成形モニタ３４０は、利用可能なコマンドがないことを検出し、存在しないコマンドを置換するためにそのタイムスロットに別のコマンドを出力するように構成されることができる。この置換コマンドは種々の方法で選択されることができる。例えば、コマンドはその中に多数のコマンドを有する待ち行列から選択されることができる。その代わりに、コマンドは“最善努力”の帯域幅を割当てられたプロセッサに対応する待ち行列から選択されることができる。即ち、そのプロセッサは何等の帯域幅も保証されていないが、帯域幅が利用可能になるならば、このプロセッサのコマンドを出力するために使用されることができる。更に他の変更も可能である。
【００５０】
前述したように、レートカウンタの開始値の変更は可能である。１実施形態では、レートカウンタの開始値は、バスへ出力されることが予測されるコマンドの数と比較したそのバスに実際に出力されるコマンド数に基づいて調節される。この実施形態では、特定のプロセッサについてバスへ出力される実際の及び予測されるコマンド数の差が決定される。その後、実際に出力されたコマンド数が出力されることが予測される数を超えるならば、そのプロセッサに関連する優先度は減少される。他方で、実際に出力されたコマンド数が出力されることが予測される数よりも少ないならば、プロセッサに関連する優先度は増加される。
【００５１】
この異なるプロセッサの優先度の調節方法は以下のように行われることができる。ベース期間はｂであると仮定する。即ち、インターバルｂに亘って、ベースカウンタはその開始値から０までカウントダウンする。プロセッサにより出力されることが予測されるコマンドの数はａである。インターバルｅの期間中に、ｉ個のコマンドがプロセッサからバスへ出力される。その後、ｉ／ｅ（インターバルｅ当りで実際に発生されるコマンド数）をａ／ｂ（インターバルｂ当りで出力されることが予測されるコマンド数）と比較することによって、プロセッサのコマンドが予測されるレートでバスに出力されるか否かが決定されることができる。従って、ｉ／ｅ−ａ／ｂが０よりも小さいならば、プロセッサからのコマンドは予測されるよりもゆっくりとバスへ出力され、そのプロセッサに関連する優先度は増加される。ｉ／ｅ−ａ／ｂが０よりも大きいならば、プロセッサからのコマンドは予測されるよりも頻繁にバスへ出力され、プロセッサに関連する優先度は減少される。
【００５２】
ｉ／ｅとａ／ｂの比較は非常に簡単であるが、そのために必要とされるハードウェア論理素子に関しては、この比較を簡単な方法で行うための素子は非常に高価になる。この比較はしかしながら、対応するハードウェアの構造を簡単にするために変更されることができる。そのためには、第１に、比較に対応する数学式を簡単にしなければならない。
【００５３】
前述したように、式ｉ／ｅ−ａ／ｂは開始点を与える。この式の評価は、正値ならば、プロセッサの優先度を減少させ、負値ならば、プロセッサの優先度を増加させる値を提供する。
【００５４】
別の値による１つの値の割算は、比較的複雑な演算であり、それに対応して複雑な論理素子を必要とするので、式のこの部分を除去または簡単にすることが望ましい。同様に、数百万の乗算は比較的複雑であり、対応する複雑な論理素子を必要とし、それは減少または除去されるべきである。
【００５５】
最初の式がｅにより乗算される場合には、式はｉ−ａｅ／ｂになる。
【００５６】
ｂが２の倍数として選択されるならば、割算ａｅ÷ｂは単にレジスタのａｅ値をシフトすることにより実現されることができる。ｅはコマンドが出力されるインターバルを表しており、インクリメントカウンタとして構成されることができるので、積ａｅは単にｅがインクリメントされる毎にａをｅに加算することにより得られることができる。
【００５７】
その結果、簡単にされた式は図５に示されるようなハードウェアで実行されることができる。
【００５８】
図５は、１実施形態による式ｉ−ａｅ／ｂを実行するのに必要なハードウェア（またはファームウェア或いはソフトウェア）部品を示す機能ブロック図を示す。この実施形態では、図５に示されるハードウェアは単一のプロセッサに対応する。ｂとｅは時間インターバルとして前述され、対応するインターバルはバスに出力されるコマンドに関しても同様に測定されることができることが注意されるべきである。換言すると、ベース期間ｂは特別な時間インターバルとしてではなく、ベース期間中に出力されるコマンド数として測定されることができる。同様に、経過したインターバルｅはベース期間の開始から出力されたコマンドの数として測定されることができる。
【００５９】
図５に示されるように、ベースカウンタの開始値ｂはレジスタ５１０に記憶される。同様に、開始値ａはレジスタ５２０に記憶される。プロセッサからのコマンドがバスに出力される都度、カウンタ５３０はインクリメントされる。このため、カウンタ５３０中に記憶される値はｉを表し、即ち現在のインターバルでバスに出力されるコマンドの数を表する。
【００６０】
ａｅ値は加算器５４０と累算器５５０により計算される。コマンドが任意のプロセッサからバスは出力される度に、加算器５４０はレートカウンタ５２０の開始値ａを累算器５５０の現在値に加算する。ベース期間の開始時に、累算器５５０は０にリセットされ、ｅがインクリメントされる度にａだけインクリメントされるカウンタとして実効的に動作する。換言すると、リセットで、ｅは０であり、累算器５５０中の値（ａｅ）は０である。１つのコマンドがバスに出力された後、ｅは１であり、ａｅはａに等しい。ｎ個のコマンドの出力後、ｅはｎに等しく、ａｅはａｎに等しい。
【００６１】
累算器５５０の出力はシフトレジスタ５６０へ入力される。この値（ａｅ）はその後、ビット数ｍによりシフトされ、ここでｂは２のｍ乗−１に等しい。従って、ｂが２５５ならば、ｍは８である。累算器５５０からのビットシフト値ａｅ／ｂは、その後、シフトレジスタ５６０の出力で与えられる。この値は減算ブロック５７０に入力され、この減算ブロック５７０はまた、プロセッサから出力されたコマンドの現在数ｉをカウンタ５３０から受信する。減算ブロック５７０は、シフトレジスタ５６０の出力をカウンタ５３０の出力から減算し、その結果は式ｉ−ａｅ／ｂの評価値である。
【００６２】
図５で示される論理回路は、各ベース期間の開始時にリセットされることに注意すべきである。論理回路がリセットされると、カウンタ５３０と累算器５５０は０に設定される。レジスタ５１０と５２０は、リセットにより夫々ベースカウンタとレートカウンタの現在保持される開始値を維持する。レジスタ５１０と５２０に記憶される開始値は、しかしながら、前述したように時間の経過と共に変更されてもよい。好ましくは、レジスタ５１０と５２０中の開始値は論理回路がリセットすると同時に変更される。
【００６３】
本出願の説明はマルチメディアゲーム用として最適化されるコンピュータシステムの状況において本発明を説明するが、本発明はより広く用途可能であり、種々の他の状況で使用されることができることに注意すべきである。従って、ここで記載した説明は本発明をマルチメディアゲームシステムの分野に限定するものと考えるべきではない。
【００６４】
ここで使用される“コンピュータ”及び“コンピュータシステム”は、ここで説明した機能を実行することのできる任意のタイプのデータ処理システムを含むことを意図する。ここで使用される“コンピュータで読取可能な媒体”は、コンピュータにより実行されることができるプログラム命令を記憶できる任意の媒体を指しており、フロッピー（Ｒ）ディスク、ハードディスクドライブ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＲＡＭ、ＲＯＭ、ＤＡＳＤアレイ、磁気テープ、フロッピー（Ｒ）ディスケット、光記憶装置等を含む。
【００６５】
当業者は情報及び信号が任意の種々の異なる技術を使用して表されることを理解するであろう。例えば、前述の説明を通して参照されるデータ、命令、コマンド、情報、信号、ビット、シンボル、チップは、電圧、電流、電磁波、磁界または粒子、光フィールドまたは粒子、或いは任意のその組み合わせにより表されてもよい。
【００６６】
当業者は更に、ここで記載される実施形態と関連して説明した種々の例示的な論理ブロック、モジュール、回路、及びアルゴリズムステップが電子的ハードウェア、コンピュータソフトウェア、または両者の組み合わせとして構成されることができることを認識するであろう。ハードウェアとソフトウェアが交換可能であることを明らかに示すために、種々の例示的なコンポーネント、ブロック、モジュール、回路、ステップをそれらの機能に関して一般的に前述した。このような機能がハードウェアとソフトウェアのいずれとして実行されるかは特定の用途とシステム全体に課された設計の制約に従っている。当業者は夫々の特定の用途において、種々の方法で説明した機能を行うことができるが、このような構成の決定は本発明の技術的範囲から逸脱するものと解釈すべきではない。
【００６７】
ここで説明した実施形態に関連して示した種々の例示的な論理ブロック、モジュール、回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、用途特定集積回路（ＡＳＩＣ）、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ）またはその他のプログラム可能な論理素子、ディスクリートなゲートまたはトランジスタ論理素子、ディスクリートなハードウェアコンポーネント、或いはここで説明する機能を実行するように設計された任意の組み合わせで構成または実行されることができる。汎用プロセッサは任意の通常のプロセッサ、制御装置、マイクロ制御装置、状態マシン等でよい。プロセッサはまた、コンピュータ装置の組み合わせ、例えば、ＤＳＰとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアを伴った１以上のマイクロプロセッサ、或いは任意のその他のこのような構造として構成されることもできる。
【００６８】
ここで説明した実施形態に関連して記載した方法またはアルゴリズムのステップは、直接的にハードウェアで、またはプロセッサにより実行されるソフトウェアモジュールで、またはこの２つの組み合わせで実施されることができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、取外し可能なディスク、ＣＤ−ＲＯＭまたは技術で知られている任意のその他の形態の記憶媒体に存在してもよい。例示的な記憶媒体はプロセッサに結合され、このようなプロセッサは記憶媒体から情報を読取り、記憶媒体へ情報を書込むことができる。その代わりに、記憶媒体はプロセッサに一体化されてもよい。プロセッサ及び記憶媒体はＡＳＩＣ内に存在してもよい。ＡＳＩＣはユーザ端末に配置されてもよい。その代わりに、プロセッサ及び記憶媒体はユーザ端末でディスクリートなコンポーネントとして配置されてもよい。
【００６９】
開示した実施形態の前述の説明は、当業者が本発明を構成または使用することを可能にするために行われる。これらの実施形態に対する種々の変形は当業者に容易に明白であり、ここで規定される一般原理は本発明の技術的範囲を逸脱せずに他の実施形態に適用されることができる。従って、本発明はここで示される実施形態に限定されることを意図するものではなく、ここで説明した原理及び優秀な特徴と一貫する最も広い技術的範囲に従うことを意図する。
【００７０】
以上、本発明により与えられる利点及び効果は、特定の実施形態に関して説明されている。これらの利点及び効果、ならびにそれらを生成し、或いはより明白にする任意の要素または限定は、任意のまたは全ての特許請求の範囲にとって、臨界的で、必須で、または本質的である特徴として解釈されるものではない。ここで使用されるように、用語“具備する”、“具備している”またはその任意の変形はこれらの用語に付随する要素または限定を除外のないものとして含むものと解釈されることを意図する。従って、要素の組み合わせを具備するシステム、方法またはその他の実施形態はこれらの要素だけに限定されるものではなく、明白にリストされていない、または前述の実施形態に固有ではない他の要素を含むことができる。
【００７１】
本発明を特定の実施形態を参照にして説明したが、それらの実施形態は例示であり、本発明の技術的範囲はこれらの実施形態に限定されないことを理解すべきである。前述の実施形態に対する多数の変形、変更、付加、改良が可能である。これらの変形、変更、付加、改良は特許請求の範囲内に記載される本発明の技術的範囲内に入るものと考えられる。
【図面の簡単な説明】
【００７２】
【図１】典型的な従来技術に係るマルチプロセッサシステムの特定のプロセッサにより使用される帯域幅を示すグラフ。
【図２】１実施形態によるコンピュータシステムのコンポーネントを示す機能ブロック図。
【図３】１実施形態による処理サブシステムのコンポーネントを示す機能ブロック図。
【図４】１実施形態による成形機構を示す説明図。
【図５】優先度の変更をベースとする１実施形態による式を評価するために必要なハードウェアを示す機能ブロック図。
【図１】
2005216308.tif 000003
【図２】
2005216308.tif 000004
【図３】
2005216308.tif 000005
【図４】
2005216308.tif 000006
【図５】
2005216308.tif 000007
【手続補正書】
【提出日】平成17年3月24日(2005.3.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のエージェントの夫々に対して、そのエージェントに関連する優先度を識別するステップと、
各エージェントに関連する前記優先度に従ってそのエージェントがリソースにアクセスすることを可能にするステップと、
を具備する複数のエージェントによるリソースへのアクセスを制御する方法であって、
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備し、ここで、前記エージェントの前記リソースへのアクセスを可能にするステップは、タイムスロットの組み合わせを規定し、各プロセッサに関連する前記優先度に基づいたパターンに従って前記プロセッサを前記タイムスロットに割当てるステップを含み、
前記方法は、
各プロセッサに対して、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するステップと、
前記実際のアクセス数が予測されるアクセス数よりも大きい場合には、前記プロセッサに関連する前記優先度を減少させ、前記実際のアクセス数が予測されるアクセス数よりも小さい場合には、前記プロセッサに関連する前記優先度を増加させるステップと、
を更に具備する。
【請求項２】
前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するステップは、
コマンドがプロセッサバスに出力される毎に、出力コマンドカウンタ値ｉをインクリメントするステップと、
コマンドが前記プロセッサから前記プロセッサバスに出力される毎に、レートカウンタ開始値ａだけ累算器の値をインクリメントするステップと、
ベースカウンタ値ｂに等しいビット数だけ前記累算器の値をシフトするステップと、
シフトされた前記累算器の値を前記出力コマンドカウンタ値から減算して、前記プロセッサによる前記バスへの前記実際のアクセス数から前記プロセッサによる前記バスへの前記予測されるアクセス数を減算した数に等しい値を発生するステップと、
を含む請求項１に記載の方法。
【請求項３】
リソースに結合されるように構成される論理素子を具備するシステムであって、
前記論理素子は、複数のエージェントの夫々に対する優先度を識別し、各エージェントに対して、対応する優先度に従って前記リソースへのアクセスを可能にするように構成されることと、
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサが結合されるバスを具備し、前記論理素子は、タイムスロットの組み合わせを規定し、前記プロセッサに関連する前記優先度に基づいて反復するパターンに従って前記プロセッサを前記タイムスロットに割当てることによって前記バスへのアクセスを可能にするように構成され、
更に、前記論理素子は、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定し、前記実際のアクセス数が前記予測されるアクセス数よりも大きい場合には、前記プロセッサに関連する前記優先度を減少させ、前記実際のアクセス数が前記予測されるアクセス数よりも小さい場合には、前記プロセッサに関連する前記優先度を増加させるように構成されるシステム。
【請求項４】
前記論理素子は、各プロセッサに対して、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するように構成され、その決定は、
コマンドがプロセッサバスに出力される毎に、出力コマンドカウンタ値ｉをインクリメントし、
コマンドが前記プロセッサから前記プロセッサバスに出力される毎に、レートカウンタの開始値ａだけ累算器の値をインクリメントし、
ベースカウンタ値ｂに等しいビット数だけ前記累算器の値をシフトし、
シフトされた前記累算器の値を前記出力コマンドカウンタ値から減算して、前記プロセッサによる前記バスへの前記実際のアクセス数から前記プロセッサによる前記バスへの前記予測されるアクセス数を減算した数に等しい値を発生することにより行われる請求項３に記載のシステム。
【請求項５】
前記リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタと、エージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成される各エージェントに対するレートカウンタと、を更に具備し、
各エージェントに関連する前記優先度は最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定される請求項３に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にデータ処理システム及び方法に関し、特に、コンピュータプロセッサのような多数のエージェントが、通信バスのようなリソースにアクセスする態様を制御するシステム及び方法に関する。このシステム及び方法により、種々のエージェントによるアクセスの分配を改良して、リソースのアクセスに関する渋滞及び遅延を減少させる。
【背景技術】
【０００２】
コンピュータシステムは益々強力となり、科学及びビジネスの目的だけでなく、娯楽の目的でも使用される。例えば、幾つかのコンピュータシステムは、音響、音楽、静止画像、ビデオ画像等の種々の形態で情報をユーザに与えるためのマルチメディア用途で使用される。幾つかのコンピュータシステムは、これらのマルチメディア用途に最適化され、実際に幾つかのコンピュータシステムは、ゲームのようなマルチメディア用途専用となるように設計される。
【０００３】
マルチメディアゲーム用途及びそれと別のマルチメディア用途を実行するように設計されるコンピュータシステムは、しばしば単一のプロセッサではなく、複数のプロセッサを使用する。これらのシステムは多数のプロセッサを有し、１以上のプロセッサが異なるタイプの機能を実行するように設定される。例えば、１つのプロセッサは数学計算または制御機能を処理し、別のプロセッサはビデオ生成を処理し、更に別のプロセッサは音響発生を処理する。各プロセッサ（またはプロセッサグループ）に割当てられる責任の分担により、プロセッサはこれらが責任を負う特別なタイプの機能に最適化されることができる。異なるプロセッサはシステムの異なる機能を調整するために通常相互接続され、対話的に動作する。
【０００４】
典型的には、マルチメディアゲームシステムで動作可能な異なったプロセッサは夫々共通のバスに接続される。このバスはプロセッサに対する共通の制御がそれらの動作を調節することを可能にし、またそれらの間でデータの交換を可能にする。更に、バスは適切な出力素子へ異なるプロセッサの出力を伝送する手段を提供する。多数の機能が多数のプロセッサにより行われなければならないので、多量の情報がこのバスにより通信される。多くのプロセッサが命令やデータをシステムの種々の他の部分へ通信するためにバスにアクセスしようとするので、バスが渋滞する潜在性がある。換言すると、プロセッサはバスの容量を超過する情報量をバスで通信しようとする可能性がある。
【０００５】
このため、バスの渋滞を阻止するための機構を構成する必要がある。通常、種々のプロセッサによるバスへのアクセスは、各プロセッサによるバスへのアクセスに厳しい制限を課すことにより制御される。例えば、バスに結合される４個のプロセッサが存在する。各プロセッサは、所定の期間においてバスへの予め定められた数のアクセス（例えば、バスに対して出力されるコマンド）を可能にされる。各プロセッサでは、アクセス数が予め定められた数に一旦到達すると、そのプロセッサはバスにアクセスすることができなくなる。
【０００６】
しかしながら、バスへのアクセスを制御するこの機構は幾つかの理由で理想的なものではない。これらの理由の１つは、異なるプロセッサによるアクセスのパターンが不規則であることである。これは、マルチメディアシステムにおいて、プロセッサが実行されるマルチメディア用途の実時間の需要を満たすことを可能にするため、アクセスを更に規則的に行う必要があるために生じる問題である。この問題について実例により説明する。
【０００７】
図１は、特定のプロセッサにより使用される帯域幅を例示するグラフを示す。この図の目的のため、４個のプロセッサが存在し、夫々その割当てられた数のアクセスに到達するまでラウンドロビン方法でバスにアクセスすることが可能にされると仮定する。更に、図１のグラフで帯域幅の使用が示されるプロセッサ（プロセッサＡ）は、バスの帯域幅の５０％を必要とすると仮定する。
【０００８】
前述したように、プロセッサＡのバスアクセスが図１に（曲線１１０として）示される。最初に（時間ｔ０とｔ１間の時間中）、予め定められた割当てに到達するプロセッサはなく、このため、全ての４個のプロセッサは交替でバスにアクセスする。その結果、プロセッサＡは２５％の帯域幅を得る。時間ｔ１で、３個のプロセッサはそれらの割当てに到達し、このため、残りの期間（即ち時間ｔ２まで）のバスのアクセスを禁止される。従って、プロセッサＡだけが時間ｔ１からｔ２の期間中にバスにアクセスすることを可能にされる。前述したように、これは問題を生じる。即ち、各プロセッサに対して実時間の要求を満たすために、プロセッサＡはｔ０からｔ１の期間中に２５％を超える帯域幅を必要とする可能性があり、他のプロセッサはｔ１からｔ２の期間中に０％を超える帯域幅を必要とする可能性がある。
【発明の開示】
【課題を解決するための手段】
【０００９】
先に概説した１以上の問題は本発明の種々の実施形態により解決されることができる。広く言えば、本発明は１組のエージェントによるリソースへのアクセスを制御するシステム及び方法を含んでおり、エージェントはそれらに関連する対応する優先度を有し、リソースに関連するモニタは優先度に基づいてエージェントによるリソースのアクセスを制御する。１実施形態では、優先度はエージェント間のアクセスの更に最適な分配を実現するためにモニタにより行われる制御に適合するように変更されることができる。
【００１０】
本発明の１実施形態は、複数のエージェントによるリソースへのアクセスを制御する方法を含んでおり、その方法は各複数のエージェントの夫々に関連する優先度を識別し、エージェントに関連する優先度に従って各エージェントがリソースにアクセスすることを可能にするステップを含む。
【００１１】
本発明の別の実施形態は、リソースに結合されるように構成された論理素子を有するシステムを具備し、この論理素子は複数のエージェントの夫々の優先度を識別し、対応する優先度に従って各エージェントのリソースへのアクセスを可能にするように構成される。
【００１２】
本発明の更に別の実施形態は、コンピュータに以下のような方法を実行させるように構成された１以上の命令を含んだコンピュータで読取可能な媒体を含むソフトウェアプロダクトであり、その方法は複数の各エージェントに関連する優先度を識別し、エージェントに関連する優先度に従って各エージェントのリソースへのアクセスを可能にするステップを含む。
【００１３】
多数の付加的な実施形態も可能である。
【００１４】
本発明の種々の実施形態は従来技術よりも優れた多くの利点を提供する。例えば、前述の実施形態に関して説明すれば、より大きな帯域幅を必要とするプロセッサは従来技術のようにベース期間の初期には比較的少量のアクセスしか有しておらず、その後のベース期間に更に大量のアクセスを有するようにされるのではなく、ベース期間全体を通してバスへより大きなアクセスが与えられる。このため、バスへのプロセッサのアクセスは更に均一に分配され、バスにおける渋滞及びバーストが少なくなる。類似の利点は他のタイプのエージェント及びリソースを含むその他の実施形態でも与えられることができる。
【発明を実施するための最良の形態】
【００１５】
本発明のその他の目的及び利点は以下の詳細な説明と、添付図面を参照することにより明白になるであろう。  
本発明は種々の変更及び別の形態が可能であるが、その特定の実施形態が図面及びそれに付随する詳細な説明により例示として示される。しかしながら図面及び詳細な説明は本発明を説明するために記載した特定の実施形態に限定することを意図するものではないことが理解されるであろう。この説明は特許請求の範囲により規定されるように本発明の技術的範囲内に入る全ての変形、等化物、置換をカバーすることを意図する。
【００１６】
本発明の１以上の実施形態を以下説明する。以下説明するこれら及び任意の他の実施形態は例示であり、本発明を限定するものではなく本発明を例示する意図で示したことに注意すべきである。
【００１７】
概略的に言えば、本発明は１組のエージェントによるリソースへのアクセスを制御するシステム及び方法を含む。エージェントはそれらに関連する対応する優先度を有し、リソースに関連するモニタは優先度に基づいてエージェントによるリソースへのアクセスを制御する。１実施形態では、優先度はエージェント間のアクセスの更に最適な分配を実現するため、モニタにより実行される制御に適合するように変更されることができる。
【００１８】
本発明は異なる種々のタイプのシステムに広く適用されることが可能であるが、この明細書の説明中に本発明の全ての可能な実施形態と状況を含むことはできない。このため、本発明の説明は、マルチプロセッサコンピュータシステムで実行される幾つかの例示的な実施形態に焦点を当てている。これらは限定的ではなく例示的であることに注意すべきである。この説明を読むとき、本発明の多数の代わりの実施形態は当業者に明白であろう。全てのこれらの別の実施形態は特許請求の範囲内に包含される。
【００１９】
本発明の１実施形態はマルチプロセッサコンピュータシステムで実行される。このシステムは、種々の異なるマルチメディアタスクを実行するように構成された１組のプロセッサを含む。各プロセッサは、プロセッサ間及びコンピュータシステムのその他の部分との間で情報を通信するために使用されるプロセッサバスに接続される。このプロセッサバスは、各プロセッサによるプロセッサバスへのアクセスを制御するように構成される成形モニタを含む。
【００２０】
この実施形態では、成形モニタはベース期間全体を通して、比較的均一に各プロセッサからのコマンドアクセスを分配することを試みるように構成される。成形モニタは夫々のプロセッサに割当てられる優先度に従ってプロセッサへタイムスロットを割当てる。プロセッサが高い優先度を有するならば、より多くのスロットがそのプロセッサに割当てられる。プロセッサが低い優先度を有するならば、より少ないスロットしかそのプロセッサに割当てられない。成形モニタは、異なるプロセッサに割当てられているスロットを規定する反復パターンを決定することができる。
【００２１】
この実施形態では、プロセッサに関連する優先度は、プロセッサの夫々の帯域幅要求またはリクエストに従って最初に割当てられる。しかしながら、異なるプロセッサに関連する優先度は変更されることができる。１実施形態では、成形モニタは各プロセッサによりバスに出力されるコマンド数を決定し、この数を予測される数と比較する。バスに出力される実際のコマンド数が予測されるよりも少ないならば、そのプロセッサに関連する優先度は増加される。バスに出力される実際のコマンド数が予測されるよりも大きいならば、そのプロセッサに関連する優先度は減少される。プロセッサの優先度に対するこれらの変更はコマンドの実際の数を予測される数へ近づける傾向がある。
【００２２】
本発明の別の実施形態は、複数のエージェントによるリソースへのアクセスを制御する方法を含む。この方法は、複数のエージェントの夫々に関連する優先度を識別し、エージェントに関連する優先度に従って、各エージェントがリソースにアクセスすることを可能にするステップを含む。１実施形態では、エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、リソースはプロセッサを相互接続するバスを備える。この実施形態では、エージェントがリソースにアクセスすることを可能にすることによってタイムスロットの組み合わせが規定され、プロセッサに関連する優先度に基づいて、反復パターンに従ってプロセッサをタイムスロットに割当てる。１実施形態では、各プロセッサにおいて、プロセッサによるバスへの実際のアクセス数がプロセッサによるバスへの予測されるアクセス数よりも大きいか小さいかを決定し、実際のアクセス数が予測されるアクセス数よりも大きいならば、プロセッサに関連する優先度を減少させ、実際のアクセス数が予測されるアクセス数よりも小さいならば、プロセッサに関連する優先度を増加するステップを含む。１実施形態では、各エージェントに関連する優先度は、最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定される。１実施形態において、その方法は更に、リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタを維持し、また、各エージェントでそのエージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるレートカウンタを維持し、そして、対応するレートカウンタがゼロではない場合にのみ各エージェントがリソースにアクセスすることを可能にするステップを含む。
【００２３】
本発明の更に別の実施形態は、リソースに結合されるように構成される論理素子を有するシステムを具備する。論理素子は、複数の各エージェントに対して優先度を識別し、各エージェントに対して、対応する優先度に従ってリソースへのアクセスを可能にするように構成される。１実施形態では、エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、リソースはプロセッサが結合されるバスを具備する。この実施形態では、論理素子は、タイムスロットの組み合わせを規定し、プロセッサに関連する優先度に基づいて反復するパターンに従って、プロセッサをタイムスロットに割当てることによりバスへのアクセスを可能にするように構成される。１実施形態では、論理素子は、プロセッサによるバスへの実際のアクセス数がプロセッサによるバスへの予測されるアクセス数よりも大きいか小さいかを決定し、実際のアクセス数が予測されるアクセス数よりも大きいならばそのプロセッサに関連する優先度を減少させ、実際のアクセス数が予測されるアクセス数よりも小さいならばそのプロセッサに関連する優先度を増加させるように構成される。１実施形態では、システムは更に、リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタと、エージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるエージェントに対するレートカウンタとを具備する。この実施形態では、論理素子は対応するレートカウンタがゼロではない場合のみ、各エージェントがリソースにアクセスすることを可能にするように構成される。
【００２４】
本発明の更に別の実施形態は、コンピュータに以下のような方法を実行させるように構成された、１以上の命令を含んだコンピュータで読取可能な媒体を含むソフトウェアプロダクトである。その方法は、複数のエージェントの夫々に関連する優先度を識別し、エージェントに関連する優先度に従って各エージェントのリソースへのアクセスを可能にするステップを含む。１実施形態では、ソフトウェアプロダクトはマルチプロセッサコンピュータシステムで実行されるように構成される。この実施形態では、エージェントはプロセッサを具備し、リソースはプロセッサを相互接続するバスを備える。この実施形態では、ソフトウェアプロダクトは、タイムスロットの組み合わせを規定し、プロセッサに関連する優先度に基づいて、反復パターンに従ってプロセッサをタイムスロットに割当てることにより、エージェントがリソースにアクセスすることができるように構成される。１実施形態では、ソフトウェアプロダクトは、各プロセッサでプロセッサによるバスへの実際のアクセス数がプロセッサによるバスへの予測されるアクセス数よりも大きいか小さいかを決定し、実際のアクセス数が予測されるアクセス数よりも大きいならば、プロセッサに関連する優先度を減少させ、実際のアクセス数が予測されるアクセス数よりも小さいならば、プロセッサに関連する優先度を増加させるステップを含むように構成される。１実施形態では、ソフトウェアプロダクトは、各エージェントに関連する優先度を最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定するように構成される。１実施形態では、ソフトウェアプロダクトはリソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタを維持し、各エージェントに対して、そのエージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるレートカウンタを維持し、対応するレートカウンタがゼロではない場合にのみ各エージェントがリソースにアクセスすることを許容するように構成される。
【００２５】
前述したように、ここに記載されたマルチプロセッサシステムは、本発明の特別な実施形態の状況を提供する。これらの実施形態は本発明を限定するものではなく例示であるから、これらの実施形態と共に使用される特別な用語は本発明を限定するものではなく例示として考えるべきである。例えば、幾つかの実施形態はバスへのプロセッサのアクセス制御を含むが、これらの用語（例えば、プロセッサ、コマンド、バス）は説明及び特許請求の範囲の他の場所で使用される更に一般的な用語（例えば、エージェント、アクセス、リソース）の例示である。
【００２６】
本発明の種々の実施形態は従来技術よりも優れた多くの利点を提供する。例えば、前述の実施形態に関して、より大きな帯域幅を要求するプロセッサは、ベース期間中の早期に比較的少量のアクセスを有すると共に、その後のベース期間に更に大量のアクセスを有するのではなく、ベース期間全体を通してバスへの大きなアクセスが与えられる。バスへのプロセッサのアクセスは、このため、更に均一に分配され、バスにおける渋滞及び満杯状況が少なくなる。類似の利点は他のタイプのエージェント及びリソースを含む別の実施形態でも与えられることができる。
【００２７】
図２は、１実施形態に係るコンピュータシステムのコンポーネントを備える機能ブロック図を示す。コンピュータシステム２１０は、処理サブシステム２２０と、メモリサブシステム２３０と、入力／出力（Ｉ／Ｏ）サブシステム２４０とを含む。ユーザ２５０はコンピュータサブシステム２１０と相互動作し、出力がＩ／Ｏサブシステム２４０を介してユーザへ与えられる。
【００２８】
図３は、１実施形態に係る処理サブシステム２２０のコンポーネントを備える機能ブロック図を示す。この実施形態では、処理サブシステム２２０は、多数の個々のプロセッサ３１１−３１４を含むマルチプロセッササブシステムである。各プロセッサ３１１−３１４はキャッシュメモリ３２１−３２４を含む。
【００２９】
図３に示されるように、キャッシュメモリ３２１−３２４は、プロセッサ３１１−３１４がプロセッサ自体に加えて他のコンポーネントを含む可能性があることを例示する。キャッシュメモリ３２１−３２４は単なる例示であり、キャッシュメモリ以外のコンポーネントも物理的なプロセッサ素子中に含まれることができる。プロセッサ３１１−３１４は図面では同一に示されるが、それらの構成や、それらが含むサブコンポーネント等は同一であってもよく、或いは異なってもよいことに注意すべきである。換言すると、プロセッサは同種でも、または異種でもよい。
【００３０】
プロセッサ３１１−３１４は、夫々処理サブシステムバス３３０に結合される。処理サブシステムバス３３０は、プロセッサ３１１−３１４が相互に、及び非キャッシュメモリ、Ｉ／Ｏコンポーネント等のようなコンピュータシステムの他のコンポーネントと通信することを可能にする。処理サブシステムバス３３０へのアクセスは、成形モニタ３４０によって制御される。
【００３１】
成形モニタ３４０は、図３の機能ブロック図では分離されたコンポーネントとして示される。成形モニタは種々の異なる方法で構成されることができることに注意すべきである。例えば、成形モニタ３４０は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組み合わせとして構成されてもよい。ハードウェアとして、成形モニタ３４０は、バス３３０に結合される別個の論理回路を具備するか、バス３３０自体に構成されることができる。成形モニタ３４０のソフトウェア構成は、特別目的のプロセッサまたはプロセッサ３１１−３１４の１つにおいて実行される。コンピュータで読取可能な媒体中に記憶され、この説明に従って動作するように構成されるソフトウェアコードは、それ自体本発明の別の実施形態であると考えられることに注意すべきである。成形モニタが分散されたサブシステムとして構成されてもよいことにも注意すべきである。例えば、１実施形態では、各プロセッサは、そのプロセッサに対して帯域幅成形機能を行う対応する成形モニタコンポーネントを有してもよい。更に他の変形も可能である。
【００３２】
本発明の当業者は、図２及び３に示される構造が単なる例示であり、他の実施形態では別の構造を使用できることを認識するであろう。例えば、プロセッサ３１１−３１４は、汎用目的のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特別目的のプロセッサ、または他のタイプのプロセッサでもよい。更にプロセッサは、前述したようにキャッシュメモリまたは他の集積コンポーネントを含んでいても含まなくてもよい。特許請求の範囲の技術的範囲はこのため、ここで説明する特定の構造に限定されない。
【００３３】
図４は、１実施形態に従って成形モニタ３４０を使用する成形機構を示す。この実施形態では、プロセッサ３１１−３１４からのコマンドは待ち行列４１１−４１４に位置される。例えば、プロセッサ３１１からのコマンドは待ち行列４１１中に位置され、プロセッサ３１２からのコマンドは待ち行列４１２に位置される。待ち行列４１１中のコマンドは“Ａ”コマンドとして図４で示され、待ち行列４１２−４１４のコマンドは“Ｂ”―“Ｄ”コマンドとして図４中に示される。この実施形態では、特定の待ち行列中のコマンドは単一のプロセッサに対応し、他の実施形態は異なることに注意すべきである。例えば、１つの別の実施形態では、各プロセッサは多数のクラスでコマンドを発生し、特定の待ち行列のコマンドは単一のクラスに対応するが、単一のプロセッサには対応しない。
【００３４】
成形モニタ制御回路４４０は、次のコマンドをバスへ与えるように選択される待ち行列４１１−４１４を決定するためにマルチプレクサ４３０を制御する。成形モニタ制御回路４４０は、それによって各プロセッサから出力されたコマンドの数を制御し、従って各プロセッサにより使用されるバスの帯域幅を制御する（それによって成形機構が構成される）。
【００３５】
１実施形態では、成形モニタ制御回路４４０は各プロセッサのためのカウンタ対を維持する。それらの一方のカウンタはレートカウンタであり、他方はベースカウンタである。各プロセッサ用のベースカウンタは時間フレームを測定し、この実施形態では各プロセッサに対しては同一である。成形モニタ制御回路４４０は、全てのプロセッサに共通の単一のベースカウンタ、または各プロセッサで別々のベースカウンタを使用することができる。ベースカウンタは、時間フレームに対応する予め定められた開始値からカウントダウンする。開始値は成形モニタ制御回路４４０により変更可能である。
【００３６】
各プロセッサに対するレートカウンタは、プロセッサによりバスに出力されるコマンド数をカウントする。各プロセッサのレートカウンタは、そのプロセッサに対して設定された値からカウントダウンする。その値は１実施形態ではプロセッサの帯域幅割当てに基づく。例えば、ベースカウンタが開始値２５５を有し、特定のプロセッサが５０％の帯域幅割当てを有するならば、レートカウンタの開始値はベースカウンタの開始値の５０％、即ち１２７である。１２７は２５５の正確に半分ではないが、カウンタは実際にそれらの夫々の開始値から１の代わりに０までカウントする。従って、開始値ｎを有するカウンタでは、実際にカウンタのｎ＋１値が存在する。このため、開始値１２７を有するカウンタは、開始値２５５を有するカウンタの値の半分の値に亘ってデクリメントする。結果的に、この開示の目的に対しては、１２７の開始値は２５５の開始値の半分と考えられる。レートカウンタがカウントダウンする開始値は、成形モニタ３４０によって変更することが可能である。
【００３７】
ベースカウンタ及びレートカウンタは、プロセッサにより出力されることのできるコマンド数を限定する。ベースカウンタは最初にその開始値をロードされる。コマンドが（任意のプロセッサから）バスへ出力されると、ベースカウンタはデクリメントされる。レートカウンタは最初にその固有の開始値をロードされる。コマンドが対応するプロセッサからバスへ出力されると、レートカウンタはデクリメントされる。レートカウンタが０に到達すると、ベースカウンタが０に到達し、ベース及びレートカウンタがその後リセットされるまで、対応するプロセッサからコマンドは発生されない。
【００３８】
１実施形態では、成形モニタ３４０はレートカウンタの開始値を帯域幅割当てにほぼ比例する値に設定するように構成される。例えば、ベースカウンタの開始値が２５５であると仮定する。プロセッサ３１１がバスの帯域幅の５０％を必要とし、プロセッサ３１２と３１３は夫々２５％を必要とし、プロセッサ３１４は０％を必要とするならば、プロセッサ３１１のレートカウンタの開始値は１２７であり、プロセッサ３１２、３１３のレートカウンタの開始値は６３であり、プロセッサ３１４のレートカウンタの開始値は０である。その後、ベースカウンタが２５５からカウントダウンすると（ベースカウンタはバスに出力される各コマンドに対して１だけデクリメントされる）、レートカウンタは夫々の開始値からカウントダウンする。各レートカウンタは、対応するプロセッサのコマンドがバスに出力されるときにのみ、デクリメントされることに注意すべきである。
【００３９】
１実施形態では、成形モニタ３４０は、夫々のプロセッサに割当てられた優先度に従ってスロットをプロセッサに割当てることにより、ベース期間（ベースカウンタがその開始値から０までデクリメントする期間）を通して各プロセッサからのコマンドのアクセスを均一に分配しようとするように構成される。１実施形態では、優先度はプロセッサの夫々の帯域幅の必要性に従って割当てられる。１つのプロセッサが別のプロセッサの２倍の帯域幅を必要とするならば、第１のプロセッサは第２のプロセッサの優先度の２倍の優先度を有する。
【００４０】
１実施形態では、各プロセッサの帯域幅の必要性は夫々のプロセッサにより行われる帯域幅リクエストに従って決定される。プロセッサの帯域幅リクエストは、例えば、バスの総帯域幅の割合に関して行われることができる（例えば、プロセッサ３１１は５０％のバス帯域幅をリクエストする）。その代わりに、リクエストは特定量の帯域幅（例えば、毎秒ｎビット）または特定のアクセス数（例えば、毎秒ｎ個のコマンド）に対するリクエストであってもよい。帯域幅のリクエストはまた、プロセッサにより処理される機能の夫々のタイプに関して提示されてもよい。この例では、成形モニタは機能のタイプに基づいて夫々のプロセッサの帯域幅の必要性を決定する。例えば、ビデオプロセッサは、ビデオの目立ったアーティファクト（人為的な誤信号）を生じる遅延を防止するために、特定の最小量の帯域幅を必要としてもよい。オーディオプロセッサはまた、オーディオアーティファクトを防止するために類似の最小量の帯域幅を必要としてもよいが、ビデオ遅延のアーティファクトはオーディオ遅延アーティファクトより望ましくないことが考えられるので、ビデオプロセッサよりも低い優先度を割当てられる。多数の他の変形も同様に可能である。
【００４１】
この実施形態の成形モニタは、異なるプロセッサの帯域幅リクエストに基づいてプロセッサの優先度を設定する。１実施形態では、優先度はリクエストされた帯域幅に比例する値に設定される。その代わりに、優先度は優先度の順序を単に示す値に設定されてもよい。更に別の実施形態では、優先度はプロセッサの異なる機能を反映するように設定されることができる。更に他の別の実施形態では、優先度は更に別の方法で実行されてもよい。
【００４２】
プロセッサに関連する優先度に基づいて、成形モニタ３４０はプロセッサのアクセスが可能にされる順序を規定するパターンを決定する（例えば、どのようにしてプロセッサのコマンドがバスに転送されるか）。プロセッサ３１１−３１４が夫々５０％、２５％、２５％、０％を必要とする前述の例に基づいて、成形モニタ３４０は次の順序、即ちＡ、Ａ、Ｂ、Ｃ、Ａ、Ａ、Ｂ、Ｃ、…でバスにアクセスすることを可能にし、ここで“Ａ”はプロセッサ３１１に対応し、“Ｂ”はプロセッサ３１２に対応し、“Ｃ”はプロセッサ３１３に対応し、“Ｄ”はプロセッサ３１４に対応する。従って、バスに出力される４つのコマンド毎に、２つのコマンドがプロセッサ３１１から発生され、夫々１つのコマンドがプロセッサ３１２と３１３から発生される。
【００４３】
この例では、異なるプロセッサに関連する優先度は便宜的に２５％の倍数であると仮定される。しかしながら優先度はこのような便利な倍数に限定されない。この場合、アクセスの適切なパターンの決定は種々の方法で処理される。例えば、１実施形態では、成形モニタ３４０は優先度に対する最小共通分母を識別し、その最小共通分母に基づいてパターンを決定するように構成されることができる。夫々優先度３３％、３３％、２２％、１１％を有する４つのプロセッサ３１１−３１４の組み合わせの例を考えると、最小共通分母は１１％である。このため、成形モニタ３４０は、プロセッサ３１１−３１４によるアクセスのパターンを９個のタイムスロットパターンＡ、Ａ、Ａ、Ｂ、Ｂ、Ｂ、Ｃ、Ｃ、Ｄに規定することができる。成形モニタ３４０はまた、パターンを通して異なるプロセッサによるアクセスを分配してもよい。このため、成形モニタ３４０は、この例ではパターンＡ、Ｂ、Ｃ、Ａ、Ｂ、Ｃ、Ａ、Ｂ、Ｄを発生できる。
【００４４】
プロセッサの相対的な優先度が相互の倍数ではないならば、またはこれらは非常に大きい倍数（例えば、数十または数百のタイムスロットを必要とする）であるならば、パターン計算の目的で、優先度を更に便利な概数にすることができる。例えば、プロセッサが５１％、２３％、２４％、２％の優先度を有するならば、概数値５０％、２５％、２５％、０％がパターンの決定に使用されることができる。この例では優先度の概数化を考慮するために、パターンに定期的な調節を行うことが望ましい。例えば、Ａ、Ａ、Ｂ、Ｃのパターンに定期的にＡ、Ｂ、Ｃ、Ｄのパターンが挿入されることができる。
【００４５】
前述のコマンドのパターンは、帯域幅が成形モニタによりプロセッサ毎をベースとして割当てられる実施形態に焦点を当てている。換言すると、特定のプロセッサからの全てのコマンドは、そのプロセッサの帯域幅割当て内で処理される。しかしながら前述したように、プロセッサは夫々異なるクラスのコマンドを出力し、従って、成形モニタは異なるクラスを示すコマンドのパターンを設定することができる。
【００４６】
例えば、１実施形態では、各プロセッサは成形モニタサブシステムの対応するコンポーネントを有してもよい。第１のプロセッサ（プロセッサ０）は、コマンドのクラスＡ０に対して１０％の帯域幅をリクエストし、クラスＢ０に対して１０％をリクエストする。対応する成形モニタコンポーネントは、このため、パターンＡ０、Ｂ０、Ｎ、Ｎ、Ｎ、Ｎ、Ｎ、Ｎ、Ｎ、Ｎ、Ｎをリクエストし、ここでＮはリクエストされていないスロットを表す。第２のプロセッサ（プロセッサ１）は、クラスＡ１に対して２０％、クラスＢ１に対しては３０％をリクエストできる。このプロセッサの成形モニタコンポーネントは、このため、パターンＡ１、Ａ１、Ｂ１、Ｂ１、Ｂ１、Ｎ、Ｎ、Ｎ、Ｎ、Ｎをリクエストする。成形モニタシステムは、優先度等に従って種々の方法でこれらを組み合わせてもよい。１実施形態では、成形モニタはＡ１、Ａ０、Ａ１、Ｂ０、Ｂ１、Ｂ１、Ｂ１、Ｎ、Ｎ、Ｎ、…のようなパターンに帰結するようにリクエストを組み合わせることができる。この例では、帯域幅の全てが割当てられていない。別の実施形態では、割当てられていないスロットは全ての帯域幅を利用するために除去されることができる。
【００４７】
アクセスパターンを決定するための前述の方法において、多数の他の変形が別の実施形態で使用されることができる。これらの変形は当業者には容易に明白であろう。
【００４８】
前述の本発明の実施形態と対照的に、通常の成形機構は一般的にバスに出力されるプロセッサコマンドを不均一に分配しない。その代わりに、コマンドは典型的にラウンドロビン方式、即ちＡ、Ｂ、Ｃ、Ｄ、…で出力される。結果として、プロセッサ３１１は最初に小さ過ぎる帯域幅を有する可能性がある（それは、プロセッサ３１２及び３１３と同一の帯域幅であろう）。プロセッサ３１２及び３１３は、その後迅速にそれらの割当てに到達し、次のベース期間まで何等、更にコマンドを発生することができない。プロセッサ３１２及び３１３がそれらの割当てに到達した後、プロセッサ３１１は多量の帯域幅を有するが、プロセッサ３１２及び３１３はそれをもたない。これは図１に示される。更にプロセッサ３１４に割当てられたスロットは使用されず、対応する帯域幅は全て無駄にされる可能性がある。
【００４９】
前述の本発明の実施形態では、成形モニタ３４０により、プロセッサのコマンドは、プロセッサに関係する優先度に基づいて規定されたアクセスパターンに従ってバスに送られることが可能である。１実施形態では、プロセッサがその指定されたタイムスロットでバスに出力されるコマンドをもたないならば、成形モニタ３４０は、利用可能なコマンドがないことを検出し、存在しないコマンドを置換するためにそのタイムスロットに別のコマンドを出力するように構成されることができる。この置換コマンドは種々の方法で選択されることができる。例えば、コマンドはその中に多数のコマンドを有する待ち行列から選択されることができる。その代わりに、コマンドは“最善努力”の帯域幅を割当てられたプロセッサに対応する待ち行列から選択されることができる。即ち、そのプロセッサは何等の帯域幅も保証されていないが、帯域幅が利用可能になるならば、このプロセッサのコマンドを出力するために使用されることができる。更に他の変更も可能である。
【００５０】
前述したように、レートカウンタの開始値の変更は可能である。１実施形態では、レートカウンタの開始値は、バスへ出力されることが予測されるコマンドの数と比較したそのバスに実際に出力されるコマンド数に基づいて調節される。この実施形態では、特定のプロセッサについてバスへ出力される実際の及び予測されるコマンド数の差が決定される。その後、実際に出力されたコマンド数が出力されることが予測される数を超えるならば、そのプロセッサに関連する優先度は減少される。他方で、実際に出力されたコマンド数が出力されることが予測される数よりも少ないならば、プロセッサに関連する優先度は増加される。
【００５１】
この異なるプロセッサの優先度の調節方法は以下のように行われることができる。ベース期間はｂであると仮定する。即ち、インターバルｂに亘って、ベースカウンタはその開始値から０までカウントダウンする。プロセッサにより出力されることが予測されるコマンドの数はａである。インターバルｅの期間中に、ｉ個のコマンドがプロセッサからバスへ出力される。その後、ｉ／ｅ（インターバルｅ当りで実際に発生されるコマンド数）をａ／ｂ（インターバルｂ当りで出力されることが予測されるコマンド数）と比較することによって、プロセッサのコマンドが予測されるレートでバスに出力されるか否かが決定されることができる。従って、ｉ／ｅ−ａ／ｂが０よりも小さいならば、プロセッサからのコマンドは予測されるよりもゆっくりとバスへ出力され、そのプロセッサに関連する優先度は増加される。ｉ／ｅ−ａ／ｂが０よりも大きいならば、プロセッサからのコマンドは予測されるよりも頻繁にバスへ出力され、プロセッサに関連する優先度は減少される。
【００５２】
ｉ／ｅとａ／ｂの比較は非常に簡単であるが、そのために必要とされるハードウェア論理素子に関しては、この比較を簡単な方法で行うための素子は非常に高価になる。この比較はしかしながら、対応するハードウェアの構造を簡単にするために変更されることができる。そのためには、第１に、比較に対応する数学式を簡単にしなければならない。
【００５３】
前述したように、式ｉ／ｅ−ａ／ｂは開始点を与える。この式の評価は、正値ならば、プロセッサの優先度を減少させ、負値ならば、プロセッサの優先度を増加させる値を提供する。
【００５４】
別の値による１つの値の割算は、比較的複雑な演算であり、それに対応して複雑な論理素子を必要とするので、式のこの部分を除去または簡単にすることが望ましい。同様に、数百万の乗算は比較的複雑であり、対応する複雑な論理素子を必要とし、それは減少または除去されるべきである。
【００５５】
最初の式がｅにより乗算される場合には、式はｉ−ａｅ／ｂになる。
【００５６】
ｂが２の倍数として選択されるならば、割算ａｅ÷ｂは単にレジスタのａｅ値をシフトすることにより実現されることができる。ｅはコマンドが出力されるインターバルを表しており、インクリメントカウンタとして構成されることができるので、積ａｅは単にｅがインクリメントされる毎にａをｅに加算することにより得られることができる。
【００５７】
その結果、簡単にされた式は図５に示されるようなハードウェアで実行されることができる。
【００５８】
図５は、１実施形態による式ｉ−ａｅ／ｂを実行するのに必要なハードウェア（またはファームウェア或いはソフトウェア）部品を示す機能ブロック図を示す。この実施形態では、図５に示されるハードウェアは単一のプロセッサに対応する。ｂとｅは時間インターバルとして前述され、対応するインターバルはバスに出力されるコマンドに関しても同様に測定されることができることが注意されるべきである。換言すると、ベース期間ｂは特別な時間インターバルとしてではなく、ベース期間中に出力されるコマンド数として測定されることができる。同様に、経過したインターバルｅはベース期間の開始から出力されたコマンドの数として測定されることができる。
【００５９】
図５に示されるように、ベースカウンタの開始値ｂはレジスタ５１０に記憶される。同様に、開始値ａはレジスタ５２０に記憶される。プロセッサからのコマンドがバスに出力される都度、カウンタ５３０はインクリメントされる。このため、カウンタ５３０中に記憶される値はｉを表し、即ち現在のインターバルでバスに出力されるコマンドの数を表する。
【００６０】
ａｅ値は加算器５４０と累算器５５０により計算される。コマンドが任意のプロセッサからバスは出力される度に、加算器５４０はレートカウンタ５２０の開始値ａを累算器５５０の現在値に加算する。ベース期間の開始時に、累算器５５０は０にリセットされ、ｅがインクリメントされる度にａだけインクリメントされるカウンタとして実効的に動作する。換言すると、リセットで、ｅは０であり、累算器５５０中の値（ａｅ）は０である。１つのコマンドがバスに出力された後、ｅは１であり、ａｅはａに等しい。ｎ個のコマンドの出力後、ｅはｎに等しく、ａｅはａｎに等しい。
【００６１】
累算器５５０の出力はシフトレジスタ５６０へ入力される。この値（ａｅ）はその後、ビット数ｍによりシフトされ、ここでｂは２のｍ乗−１に等しい。従って、ｂが２５５ならば、ｍは８である。累算器５５０からのビットシフト値ａｅ／ｂは、その後、シフトレジスタ５６０の出力で与えられる。この値は減算ブロック５７０に入力され、この減算ブロック５７０はまた、プロセッサから出力されたコマンドの現在数ｉをカウンタ５３０から受信する。減算ブロック５７０は、シフトレジスタ５６０の出力をカウンタ５３０の出力から減算し、その結果は式ｉ−ａｅ／ｂの評価値である。
【００６２】
図５で示される論理回路は、各ベース期間の開始時にリセットされることに注意すべきである。論理回路がリセットされると、カウンタ５３０と累算器５５０は０に設定される。レジスタ５１０と５２０は、リセットにより夫々ベースカウンタとレートカウンタの現在保持される開始値を維持する。レジスタ５１０と５２０に記憶される開始値は、しかしながら、前述したように時間の経過と共に変更されてもよい。好ましくは、レジスタ５１０と５２０中の開始値は論理回路がリセットすると同時に変更される。
【００６３】
本出願の説明はマルチメディアゲーム用として最適化されるコンピュータシステムの状況において本発明を説明するが、本発明はより広く用途可能であり、種々の他の状況で使用されることができることに注意すべきである。従って、ここで記載した説明は本発明をマルチメディアゲームシステムの分野に限定するものと考えるべきではない。
【００６４】
ここで使用される“コンピュータ”及び“コンピュータシステム”は、ここで説明した機能を実行することのできる任意のタイプのデータ処理システムを含むことを意図する。ここで使用される“コンピュータで読取可能な媒体”は、コンピュータにより実行されることができるプログラム命令を記憶できる任意の媒体を指しており、フロッピー（Ｒ）ディスク、ハードディスクドライブ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＲＡＭ、ＲＯＭ、ＤＡＳＤアレイ、磁気テープ、フロッピー（Ｒ）ディスケット、光記憶装置等を含む。
【００６５】
当業者は情報及び信号が任意の種々の異なる技術を使用して表されることを理解するであろう。例えば、前述の説明を通して参照されるデータ、命令、コマンド、情報、信号、ビット、シンボル、チップは、電圧、電流、電磁波、磁界または粒子、光フィールドまたは粒子、或いは任意のその組み合わせにより表されてもよい。
【００６６】
当業者は更に、ここで記載される実施形態と関連して説明した種々の例示的な論理ブロック、モジュール、回路、及びアルゴリズムステップが電子的ハードウェア、コンピュータソフトウェア、または両者の組み合わせとして構成されることができることを認識するであろう。ハードウェアとソフトウェアが交換可能であることを明らかに示すために、種々の例示的なコンポーネント、ブロック、モジュール、回路、ステップをそれらの機能に関して一般的に前述した。このような機能がハードウェアとソフトウェアのいずれとして実行されるかは特定の用途とシステム全体に課された設計の制約に従っている。当業者は夫々の特定の用途において、種々の方法で説明した機能を行うことができるが、このような構成の決定は本発明の技術的範囲から逸脱するものと解釈すべきではない。
【００６７】
ここで説明した実施形態に関連して示した種々の例示的な論理ブロック、モジュール、回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、用途特定集積回路（ＡＳＩＣ）、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ）またはその他のプログラム可能な論理素子、ディスクリートなゲートまたはトランジスタ論理素子、ディスクリートなハードウェアコンポーネント、或いはここで説明する機能を実行するように設計された任意の組み合わせで構成または実行されることができる。汎用プロセッサは任意の通常のプロセッサ、制御装置、マイクロ制御装置、状態マシン等でよい。プロセッサはまた、コンピュータ装置の組み合わせ、例えば、ＤＳＰとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアを伴った１以上のマイクロプロセッサ、或いは任意のその他のこのような構造として構成されることもできる。
【００６８】
ここで説明した実施形態に関連して記載した方法またはアルゴリズムのステップは、直接的にハードウェアで、またはプロセッサにより実行されるソフトウェアモジュールで、またはこの２つの組み合わせで実施されることができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、取外し可能なディスク、ＣＤ−ＲＯＭまたは技術で知られている任意のその他の形態の記憶媒体に存在してもよい。例示的な記憶媒体はプロセッサに結合され、このようなプロセッサは記憶媒体から情報を読取り、記憶媒体へ情報を書込むことができる。その代わりに、記憶媒体はプロセッサに一体化されてもよい。プロセッサ及び記憶媒体はＡＳＩＣ内に存在してもよい。ＡＳＩＣはユーザ端末に配置されてもよい。その代わりに、プロセッサ及び記憶媒体はユーザ端末でディスクリートなコンポーネントとして配置されてもよい。
【００６９】
開示した実施形態の前述の説明は、当業者が本発明を構成または使用することを可能にするために行われる。これらの実施形態に対する種々の変形は当業者に容易に明白であり、ここで規定される一般原理は本発明の技術的範囲を逸脱せずに他の実施形態に適用されることができる。従って、本発明はここで示される実施形態に限定されることを意図するものではなく、ここで説明した原理及び優秀な特徴と一貫する最も広い技術的範囲に従うことを意図する。
【００７０】
以上、本発明により与えられる利点及び効果は、特定の実施形態に関して説明されている。これらの利点及び効果、ならびにそれらを生成し、或いはより明白にする任意の要素または限定は、任意のまたは全ての特許請求の範囲にとって、臨界的で、必須で、または本質的である特徴として解釈されるものではない。ここで使用されるように、用語“具備する”、“具備している”またはその任意の変形はこれらの用語に付随する要素または限定を除外のないものとして含むものと解釈されることを意図する。従って、要素の組み合わせを具備するシステム、方法またはその他の実施形態はこれらの要素だけに限定されるものではなく、明白にリストされていない、または前述の実施形態に固有ではない他の要素を含むことができる。
【００７１】
本発明を特定の実施形態を参照にして説明したが、それらの実施形態は例示であり、本発明の技術的範囲はこれらの実施形態に限定されないことを理解すべきである。前述の実施形態に対する多数の変形、変更、付加、改良が可能である。これらの変形、変更、付加、改良は特許請求の範囲内に記載される本発明の技術的範囲内に入るものと考えられる。
【００７２】
本発明によれば、例えば、以下の視点１乃至２５に記載されるような方法及びシステムが提供可能である。
【００７３】
［視点１］  
複数のエージェントの夫々に対して、そのエージェントに関連する優先度を識別するステップと、
各エージェントに関連する前記優先度に従ってそのエージェントがリソースにアクセスすることを可能にするステップと、
を含む複数のエージェントによるリソースへのアクセスを制御する方法。
【００７４】
［視点２］  
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備し、ここで、前記エージェントの前記リソースへのアクセスを可能にするステップは、タイムスロットの組み合わせを規定し、各プロセッサに関連する前記優先度に基づいたパターンに従って前記プロセッサを前記タイムスロットに割当てるステップを含む視点１に記載の方法。
【００７５】
［視点３］  
各プロセッサに対して、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するステップと、
前記実際のアクセス数が予測されるアクセス数よりも大きい場合には、前記プロセッサに関連する前記優先度を減少させ、前記実際のアクセス数が予測されるアクセス数よりも小さい場合には、前記プロセッサに関連する前記優先度を増加させるステップと、
を更に含む視点２に記載の方法。
【００７６】
［視点４］  
前記プロセッサに関連する前記優先度の変化に基づいて前記パターンを変更するステップを更に含む視点３に記載の方法。
【００７７】
［視点５］  
前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するステップは、
コマンドがプロセッサバスに出力される毎に、出力コマンドカウンタ値ｉをインクリメントするステップと、
コマンドが前記プロセッサから前記プロセッサバスに出力される毎に、レートカウンタ開始値ａだけ累算器の値をインクリメントするステップと、
ベースカウンタ値ｂに等しいビット数だけ前記累算器の値をシフトするステップと、
シフトされた前記累算器の値を前記出力コマンドカウンタ値から減算して、前記プロセッサによる前記バスへの前記実際のアクセス数から前記プロセッサによる前記バスへの前記予測されるアクセス数を減算した数に等しい値を発生するステップと、
を含む視点３に記載の方法。
【００７８】
［視点６］  
前記リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタを維持するステップと、
各エージェントに対してそのエージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成されるレートカウンタを維持するステップと、
対応するレートカウンタがゼロではない場合にのみ各エージェントがリソースにアクセスすることを許容するステップと、
を更に含む視点１に記載の方法。
【００７９】
［視点７］  
各エージェントに関連する前記優先度は、最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定される視点１に記載の方法。
【００８０】
［視点８］  
１以上のエージェントに関連する前記優先度を変更するステップを更に含む視点１に記載の方法。
【００８１】
［視点９］  
１以上のエージェントに対して、そのエージェントによる前記リソースへの実際のアクセス数がそのエージェントによる前記リソースへの予測されるアクセス数よりも大きいか小さいかを決定するステップを更に含む視点８に記載の方法。
【００８２】
［視点１０］  
１以上のエージェントに関連する前記優先度を変更するステップは、１以上のエージェントの夫々に対して、前記実際のアクセス数が前記予測されるアクセス数よりも大きい場合には、そのエージェントに関連する前記優先度を減少させ、前記実際のアクセス数が前記予測されるアクセス数よりも小さい場合には、そのエージェントに関連する前記優先度を増加するステップを含む視点９に記載の方法。
【００８３】
［視点１１］  
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備する視点１に記載の方法。
【００８４】
［視点１２］  
前記エージェントが前記リソースにアクセスすることを可能にするステップは、タイムスロットの組み合わせを規定し、前記エージェントに関連する前記優先度に基づいたパターンに従って前記エージェントを前記タイムスロットに割当てるステップを含む視点１に記載の方法。
【００８５】
［視点１３］  
リソースに結合されるように構成される論理素子を具備し、
前記論理素子は、複数のエージェントの夫々に対する優先度を識別し、各エージェントに対して、対応する優先度に従って前記リソースへのアクセスを可能にするように構成されるシステム。
【００８６】
［視点１４］  
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサが結合されるバスを具備し、前記論理素子は、タイムスロットの組み合わせを規定し、前記プロセッサに関連する前記優先度に基づいて反復するパターンに従って前記プロセッサを前記タイムスロットに割当てることによって前記バスへのアクセスを可能にするように構成される視点１３に記載のシステム。
【００８７】
［視点１５］  
前記論理素子は、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定し、前記実際のアクセス数が前記予測されるアクセス数よりも大きい場合には、前記プロセッサに関連する前記優先度を減少させ、前記実際のアクセス数が前記予測されるアクセス数よりも小さい場合には、前記プロセッサに関連する前記優先度を増加させるように構成される視点１４に記載のシステム。
【００８８】
［視点１６］  
前記論理素子は更に前記プロセッサに関連する前記優先度の変化に基づいて前記パターンを変更するように構成される視点１５に記載のシステム。
【００８９】
［視点１７］  
前記論理素子は、各プロセッサに対して、前記プロセッサによる前記バスへの実際のアクセス数が前記プロセッサによる前記バスへの予測されるアクセス数よりも大きいか小さいかを決定するように構成され、その決定は、
コマンドがプロセッサバスに出力される毎に、出力コマンドカウンタ値ｉをインクリメントし、
コマンドが前記プロセッサから前記プロセッサバスに出力される毎に、レートカウンタの開始値ａだけ累算器の値をインクリメントし、
ベースカウンタ値ｂに等しいビット数だけ前記累算器の値をシフトし、
シフトされた前記累算器の値を前記出力コマンドカウンタ値から減算して、前記プロセッサによる前記バスへの前記実際のアクセス数から前記プロセッサによる前記バスへの前記予測されるアクセス数を減算した数に等しい値を発生することにより行われる視点１５に記載のシステム。
【００９０】
［視点１８］  
前記リソースへのアクセスに基づいてベースカウンタの開始値からデクリメントするように構成される少なくとも１つのベースカウンタと、エージェントによるアクセスに基づいてレートカウンタの開始値からデクリメントするように構成される各エージェントに対するレートカウンタと、を更に具備する視点１３に記載のシステム。
【００９１】
［視点１９］  
前記論理素子は、対応するレートカウンタがゼロではない場合のみ、各エージェントが前記リソースにアクセスすることを許容するように構成される視点１８に記載のシステム。
【００９２】
［視点２０］  
各エージェントに関連する前記優先度は最初にそのエージェントに関連する帯域幅リクエストに比例する値に設定される視点１３に記載のシステム。
【００９３】
［視点２１］  
前記論理素子は１以上のエージェントに関連する前記優先度を変更するように構成される視点１３に記載のシステム。
【００９４】
［視点２２］  
前記論理素子は、１以上のエージェントに対して、そのエージェントによる前記リソースへの実際のアクセス数がそのエージェントによる前記リソースへの予測されるアクセス数よりも大きいか小さいかを決定するように構成される視点２１に記載のシステム。
【００９５】
［視点２３］  
前記論理素子は、１以上のエージェントの夫々に対して、前記実際のアクセス数が前記予測されるアクセス数よりも大きい場合には、そのエージェントに関連する前記優先度を減少させ、前記実際のアクセス数が前記予測されるアクセス数よりも小さい場合には、そのエージェントに関連する前記優先度を増加させるように構成される視点２２に記載のシステム。
【００９６】
［視点２４］  
前記エージェントはマルチプロセッサコンピュータシステム中のプロセッサを具備し、前記リソースは前記プロセッサを相互接続するバスを具備する視点１３に記載のシステム。
【００９７】
［視点２５］  
前記論理素子はタイムスロットの組み合わせを規定し、前記エージェントに関連する前記優先度に基づいて反復するパターンに従って前記エージェントを前記タイムスロットに割当てるように構成される視点１３に記載のシステム。
【図面の簡単な説明】
【００９８】
【図１】典型的な従来技術に係るマルチプロセッサシステムの特定のプロセッサにより使用される帯域幅を示すグラフ。
【図２】１実施形態によるコンピュータシステムのコンポーネントを示す機能ブロック図。
【図３】１実施形態による処理サブシステムのコンポーネントを示す機能ブロック図。
【図４】１実施形態による成形機構を示す説明図。
【図５】優先度の変更をベースとする１実施形態による式を評価するために必要なハードウェアを示す機能ブロック図。
【外国語明細書】
2005216308000001.pdf