(57)【要約】  共有システムリソースの３以上の要求者のうちの特定の要求者は、非アクティブであると決定される。３以上の要求者の各々は、それぞれシステムリソースの利用可能な帯域幅の対応するシェアを表す個々のサービスレートを割り当てられ、特定の要求者の個々のサービスレートは、帯域幅の第１のシェアを表す第１のサービスレートである。帯域幅の第１のシェアの部分は、３以上の要求者の中のアクティブ要求者の各々に再割り当てされ、特定の要求者が非アクティブである間に、アクティブ要求者の相対サービスレートに従って帯域幅の第１の部分を分配する。
2016521936.tif 000002
【特許請求の範囲】
【請求項１】
共有システムリソースの３以上の要求者のうちの特定の要求者が非アクティブであると決定するサービスロジックであって、前記３以上の要求者の各々は、前記システムリソースの利用可能な帯域幅の対応するシェアを表す個々のサービスレートを表し、割り当てられるべき前記特定の要求者の前記個々のサービスレートは、前記帯域幅の第１のシェアを表す第１のサービスレートを有する、サービスロジックと、
前記帯域幅の前記第１のシェアを、前記３以上の要求者の中のアクティブ要求者の各々に再割り当てして、前記アクティブ要求者の相対サービスレートに従って前記帯域幅の前記第１の部分を分配する割り当てロジックであって、前記特定の要求者が非アクティブのままである間に前記帯域幅の前記第１のシェアは再割り当てされる、割り当てロジックと、
を有する装置。
【請求項２】
前記他の要求者の前記サービスレートの各々は、前記再割り当てに従って増大され、その間に前記特定の要求者は非アクティブのままである、請求項１に記載の装置。
【請求項３】
前記ロジックは、さらに、
前記帯域幅の前記第１のシェアの再割り当てに続く前記特定の要求者による要求を識別し、
前記要求に基づき、前記帯域幅の前記第１のシェアを前記特定の要求者に戻す、
請求項１に記載の装置。
【請求項４】
前記ロジックは、さらに、前記特定の要求者は所定の非アクティブ閾を満たすという決定に基づき、前記特定の要求者が非アクティブであると決定する、請求項１に記載の装置。
【請求項５】
前記ロジックは、さらに、前記共有システムリソースに対する前記３以上の要求者による要求のクレジットに基づく調停を実行する、請求項４に記載の装置。
【請求項６】
前記非アクティブ閾は、前記クレジットに基づく調停に従って前記特定の要求者に割り当てられる未使用クレジットの閾数を有する、請求項５に記載の装置。
【請求項７】
前記非アクティブ閾は、未使用クレジットの前記閾数における又はそれより上の時間量に基づく時間に基づく閾を有する、請求項６に記載の装置。
【請求項８】
前記非アクティブ閾は、時間に基づく閾を有する、請求項４に記載の装置。
【請求項９】
前記非アクティブ閾は、要求者固有閾を有し、前記３以上の要求者のうちの少なくとも２つは、異なる非アクティブ閾を有する、請求項４に記載の装置。
【請求項１０】
前記他の要求者は、前記決定された非アクティブの前に、前記特定の要求者に割り当てられた未使用帯域幅を消費し、前記決定されたアクティブの前の前記未使用帯域幅の前記消費は、前記他の要求者の前記相対サービスレートと不均衡である、請求項１に記載の装置。
【請求項１１】
前記共有システムリソースへのアクセスは、前記３以上の要求者の中の前記他の要求者に対する要求者の相対優先度に少なくとも部分的に基づく、請求項１に記載の装置。
【請求項１２】
前記３以上の要求者のうちの個々の１つに割り当てられる帯域幅の各々のシェアは、共通の分母に対する個々の分子として表され、非アクティブ要求者の帯域幅のシェアは、次式に従って残りのアクティブ要求者に再分配され、
ServiceRate=Num_i/(Denom-SUM(Num_inactive))
ここで、ServiceRateは前記再分配の後の残りのアクティブ要求者のサービスレートであり、Num_iは、前記アクティブ要求者の帯域幅の対応するシェアの前記分子であり、Denomは分母であり、SUM(Num_inactive)は前記３以上の要求者の中の前記非アクティブ要求者の個々の分子の和である、
請求項１に記載の装置。
【請求項１３】
前記３以上の要求者は、少なくとも４の要求者を有し、及び少なくとも１つの他の要求者は、前記特定の要求者が非アクティブであると決定し及び前記帯域幅の前記第１のシェアを前記アクティブ要求者に再割り当てするとき、非アクティブである、請求項１に記載の装置。
【請求項１４】
前記３以上の要求者による前記共有システムリソースへのアクセスを調停する調停ロジック、を更に有する請求項１に記載の装置。
【請求項１５】
調停は、前記３以上の要求者の各々について前記割り当てられたサービスレートを保証する、請求項１４に記載の装置。
【請求項１６】
前記調停は、前記３以上の要求者に割り当てられた前記個々のサービスレートに少なくとも部分的に基づき、さらに、前記共有システムリソースに対する前記３以上の要求者の各々の相対優先度に少なくとも部分的に基づく、請求項１４に記載の装置。
【請求項１７】
前記３以上の要求者のうちの少なくとも１つの前記サービスレートは、前記要求者による前記共有システムリソースへのアクセスに関連して、前記要求者により実行される特定のアクティビティに少なくとも部分的に基づく、請求項１に記載の装置。
【請求項１８】
前記調停ロジックは、さらに、前記３以上の要求者に前記帯域幅の前記個々のシェアを割り当てる、請求項１に記載の装置。
【請求項１９】
３以上の要求者による特定の共有システムリソースへのアクセスを調停するステップであって、前記３以上の要求者の各々は、前記システムリソースの利用可能な帯域幅の対応するシェアを表す個々のサービスレートを割り当てられる、ステップと、
前記システムリソースの要求を行うとき、共有システムリソースの前記要求者のうちの特定の１つが非アクティブであると決定するステップと、
前記特定の要求者に割り当てられた前記個々のサービスレートに対応する前記利用可能な帯域幅の前記シェアを、前記アクティブな要求者の相対サービスレートに従って、前記３以上の要求者の中の前記アクティブな要求者に再割り当てするステップと、
を有する方法。
【請求項２０】
前記３以上の要求者の前記帯域幅の各シェアは、共通の分母に対する個々の分子として表され、前記利用可能な帯域幅の前記シェアを再割り当てするステップは、前記アクティブな要求者の各々について、
前記アクティブな要求者の前記帯域幅の前記シェアの前記分子を識別し、
前記３以上の要求者の中の非アクティブな要求者の前記個々の分子を加算するステップと、
次式に従って前記帯域幅の割り当てられるシェアを決定するステップであって、
ServiceRate=Num_i/(Denom-SUM(Num_inactive))
Num_iは前記アクティブな要求者の前記個々の分子であり、Denomは前記分母であり、SUM(Num_inactive)は前記３以上の要求者の中の前記非アクティブな要求者の前記個々の分子の和である、ステップと、
を有する請求項１９に記載の方法。
【請求項２１】
前記３以上の要求者の各々に前記個々のサービスレートを割り当てるステップであって、前記特定の共有リソースへのアクセスは、前記３以上の要求者の前記個々のサービスレートを保証するために調停される、ステップ、を更に有する請求項１９に記載の方法。
【請求項２２】
前記特定の要求者の非アクティブ化を識別するステップと、
前記非アクティブ化の識別に基づき、始めに割り当てられた前記再割り当てされた帯域幅を前記特定の要求者に戻すステップと、
を更に有する請求項１９に記載の方法。
【請求項２３】
共有システムリソースと、
第１の装置と、
アービトレータと、
を有し、前記アービトレータは、
前記共有システムリソースの３以上の要求者のうちの特定の要求者が非アクティブであると決定し、前記３以上の要求者の各々は、前記システムリソースの利用可能な帯域幅の対応するシェアを表す個々のサービスレートを割り当てられ、前記特定の要求者の前記割り当てられたサービスレートは、前記帯域幅の第１のシェアを表す第１のサービスレートを表し、前記３以上の要求者のうちの少なくとも１つは前記第１の装置に対応し、
前記帯域幅の前記第１のシェアを、前記３以上の要求者の中のアクティブ要求者の各々に再割り当てして、前記アクティブ要求者の相対サービスレートに従って前記帯域幅の前記第１の部分を分配し、前記特定の要求者が非アクティブのままである間に前記帯域幅の前記第１のシェアは再割り当てされる、
システム。
【請求項２４】
前記共有システムリソースは、前記システムの相互接続の少なくとも一部を有する、請求項２３に記載のシステム。
【請求項２５】
前記共有システムリソースは、共有メモリリソースを有する、請求項２３に記載のシステム。
【請求項２６】
複数のコンポーネントを有する集積回路と、
優先度クレジットアルゴリズムに基づき、前記複数のコンポーネントのうちの特定のコンポーネントに特定のサービスレートを割り当てる割り当てロジックと、
前記特定のコンポーネントがサービスの要求を継続しないことに応答して、前記１又は複数のコンポーネントの相対サービスレートに基づき、前記特定のコンポーネント以外の前記複数のコンポーネントのうちの１又は複数に前記特定のサービスレートを再割り当てする再割り当てロジックと、
を有する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピューティングシステムに関し、より詳細には（排他的ではなく）コンピューティングシステムにおけるクレジットに基づく調停に関する。
【背景技術】
【０００２】
コンピューティングシステムは、複数の異なるコンポーネント、チャネル及びプロセスによりアクセスされる可能性のある共有システムリソースを提供できる。このような共有リソースは、バス、メモリ、キャッシュ、及び他のリソースを含み得る。幾つかの例では、複数の「要求者」によるアクセスは、相互作用する要求者の予め設定された又は決定された動作に基づき予測できる。他の例では、複数の要求者は、共有リソースを争い、共有リソースのアクセスの試み（又は要求）は、予測できず、集中的であり、及び過度に断定的である。これらの競合コンポーネントの時には「欲張りな（greedy）」動作を管理するための解決策が開発されてきた。例えば、ＰＣＩｅ（Peripheral  Component  Interconnect  Express）アーキテクチャの仕様で定められるクレジットに基づく方式のようなクレジットに基づくフロー制御方式が開発されてきた。これは、リンク毎に又は仮想チャネル（ＶＣ）毎に輻輳及び競合する要求を制御しようと試みる。幾つかの解決策は、他の例の中でも特に、共有リソース調停を有するシステムで展開されるフロー制御メカニズムと連携してＣＣＳＰ（Credit  Controlled  Static  Priority）アルゴリズムを更に利用する。
【図面の簡単な説明】
【０００３】
【図１】マルチコアプロセッサを含むコンピューティングシステムのブロック図の一実施形態を示す。
【図２】階層スタックを含む相互接続アーキテクチャの一実施形態を示す。
【図３】例示的なアービトレータの簡略ブロック図を示す。
【図４】共有リソースへのアクセスの例示的な調停を表す簡略図を示す。
【図５】共有リソースへのアクセスのクレジットに基づく調停を表すグラフを示す。
【図６】特定の一実施形態に従う、非アクティブ要求者の帯域幅の共有のアクティブ要求者への例示的な再割り当てを表すグラフを示す。
【図７】共有システムリソースの非アクティブ要求者に応答したサービスの再割り当てに関連する例示的な技術の簡略フローチャートである。
【図８】マルチコアプロセッサを含むコンピューティングシステムのブロックの一実施形態を示す。
【図９】コンピューティングシステムのブロック図の別の実施形態を示す。  種々の図面を通じて同様の参照符号及び記号は同様の要素を示す。
【発明を実施するための形態】
【０００４】
以下の説明では、本発明の完全な理解を提供するために、特定種類のプロセッサ及びシステム構成、特定のハードウェア構造、特定のアーキテクチャ及びマイクロアーキテクチャの詳細、特定のレジスタ構成、特定の命令型、特定のシステムコンポーネント、特定の寸法／高さ、特定のプロセッサパイプラインステージ及び動作などのような多数の特定の詳細事項が説明される。しかしながら、当業者には、これらの特定の詳細事項が本発明を実施するために用いられる必要がないことが明らかである。他の例では、特定の及び代替のプロセッサア―キテクチャ、記載のアルゴリズムのための特定の論理回路／コード、特定のファームウェアコード、特定の相互接続動作、特定の論理構成、特定の製造技術及び材料、特定のコンパイラ実装、コードの中でのアルゴリズムの特定の表現、特定の電源断及び制御技術／ロジック及びコンピュータシステムの運用上の他の特定の詳細事項のような良く知られたコンポーネント又は方法は、本発明を不必要に不明瞭にすることを回避するために詳細に記載されない。
【０００５】
以下の実施形態は、コンピューティングプラットフォーム又はマイクロプロセッサにおけるような特定の集積回路におけるエネルギ管理及びエネルギ効率を参照して記載され得るが、他の実施形態は他の種類の集積回路及び論理素子に適用可能である。本願明細書に記載の実施形態と同様の技術及びその教示は、より良好なエネルギ効率及びエネルギ管理から利益を享受し得る他の種類の回路又は半導体装置に適用されても良い。例えば、記載の実施形態は、デスクトップコンピュータシステム又はUltrabooks（登録商標）に限定されない。また、ハンドヘルド装置、タブレット、他の薄型ノードブック、ＳＯＣ（systems  on  a  chip）装置、及び内蔵アプリケーションのような他の装置でも使用され得る。ハンドヘルド装置の幾つかの例は、携帯電話機、インターネットプロトコルデバイス、デジタルカメラ、ＰＤＡ（personal  digital  assistant）、及びハンドヘルドＰＣを含む。内蔵アプリケーションは、標準的に、マイクロコントローラ、ＤＳＰ（digital  signal  processor）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ＷＡＮ（wide  area  network）スイッチ、又は以下に教示される機能及び動作を実行できる任意の他のシステムを含む。さらに、本願明細書に記載の装置、方法、及びシステムは、物理的コンピューティング装置に限定されず、エネルギ管理及び効率のためのソフトウェア最適化にも関連し得る。以下の説明において直ちに明らかになるように、本願明細書に記載の方法、装置、及びシステムの実施形態は（ハードウェア、ファームウェア、ソフトウェア、又はそれらの組合せを参照するかに係わらず）、性能考察と均衡のとれた「環境保全技術」の将来にとって不可欠である。
【０００６】
コンピューティングシステムが進歩するにつれ、その中のコンポーネントはより複雑になっている。その結果、コンポーネント間の結合し通信するための相互接続アーキテクチャも、帯域幅要件が最適なコンポーネント動作に適合することを保証するために、益々複雑さを増している。さらに、異なる市場区分が、市場の必要性に適合するために相互接続アーキテクチャの異なる態様を要求する。例えば、サーバはより高い性能を要求し、一方で、モバイルエコシステムは、電力節約のために全体的性能を犠牲にできる場合が多い。さらに、大部分の組織の単一の目的は、最大電力節約で、可能な限り高い性能を提供することである。以下で、多数の相互接続が議論される。これらは、本願明細書に記載の本発明の態様から利益を得る可能性がある。
【０００７】
図１は、マルチコアプロセッサを含むコンピューティングシステムのブロック図の一実施形態を示す。プロセッサ１００は、コードを実行するために、マイクロプロセッサ、内蔵プロセッサ、ＤＳＰ（digital  signal  processor）、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、ＳＯＣ（system  on  a  chip）、又は他の装置のようなプロセッサ又は処理装置を有する。プロセッサ１００は、一実施形態では、非対称コア又は対称コア（図示の実施形態）を含み得る少なくとも２個のコア、つまりコア１０１及び１０２を有する。しかしながら、プロセッサ１００は、対称又は非対称であっても良い任意の数の処理要素を有しても良い。
【０００８】
一実施形態では、処理要素は、ソフトウェアスレッドをサポートするためのハードウェア又はロジックを表す。ハードウェア処理要素の例は、実行状態又はアーキテクチャ状態のようなプロセッサの状態を保持できる、スレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び／又は任意の他の要素を有する。言い換えると、処理要素は、一実施形態では、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は他のコードのようなコードと独立に関連付け可能な任意のハードウェアを表す。物理プロセッサ（又はプロセッサソケット）は、通常、集積回路を表し、コア又はハードウェアスレッドのような任意の数の他の処理要素を含む場合がある。
【０００９】
コアは、独立したアーキテクチャ状態を維持できる集積回路に配置されるロジックを表す場合が多い。ここで、それぞれ独立に維持されるアーキテクチャ状態は、少なくとも幾つかの専用実行リソースに関連付けられる。コアと対照的に、ハードウェアスレッドは、標準的に、独立したアーキテクチャ状態を維持できる集積回路に配置された任意のロジックを表す。ここで、独立に維持されるアーキテクチャ状態は、実行リソースへのアクセスを共有する。分かるように、特定のリソースが共有され、他のリソースがアーキテクチャ状態のために専用であるとき、用語ハードウェアスレッドとコアとの間の線は重なり合う。さらに、オペレーティングシステムが各論理プロセッサでの動作を個々にスケジューリングできるとき、コア及びハードウェアスレッドは、オペレーティングシステムにより個々の論理プロセッサとして見られる。
【００１０】
物理プロセッサ１００は、図１に示すように、２つのコア、つまりコア１０１及び１０２を有する。ここで、コア１０１及び１０２は、対称コア、つまり同じ構成、機能ユニット及び／又はロジックを有するコアであると考えられる。別の実施形態では、コア１０１はアウトオブオーダプロセッサコアを有し、一方で、コア１０２はインオーダコアを有する。しかしながら、コア１０１及び１０２は、ネイティブコア、ソフトウェア管理コア、ネイティブＩＳＡ（Instruction  Set  Architecture）を実行するよう適応されたコア、変換済みＩＳＡを実行するよう適応されたコア、共同設計コア、又は他の知られているコアのような任意の種類のコアから個々に選択されても良い。異種コア環境（つまり非対称コア）では、バイナリ変換のような特定形式の変換が、一方又は両方のコアでコードをスケジューリングする又は実行するために用いられても良い。更に議論されるが、コア１０１の中に示す機能ユニットは、以下に更に詳細に記載される。コア１０２の中のユニットは図示の実施形態と同様の方法で動作する。
【００１１】
図示のように、コア１０１は、ハードウェアスロット１０１ａ及び１０１ｂとしても参照される２つのハードウェアスレッド１０１ａ及び１０１ｂを有する。したがって、オペレーティングシステムのようなソフトウェアエンティティは、一実施形態では、プロセッサ１００を、４個の別個のプロセッサ、つまり４個のソフトウェアスレッドを同時に実行できる４個の論理プロセッサ又は処理要素として見る可能性がある。先に示唆したように、第１のスレッドはアーキテクチャ状態レジスタ１０１ａに関連付けられ、第２のスレッドはアーキテクチャ状態レジスタ１０１ｂに関連付けられ、第３のスレッドはアーキテクチャ状態レジスタ１０２ａに関連付けられ、第４のスレッドはアーキテクチャ状態レジスタ１０２ｂに関連付けられても良い。ここで、アーキテクチャ状態レジスタ（１０１ａ、１０１ｂ、１０２ａ、１０２ｂ）の各々は、上述のように処理要素、スレッドスロット、又はスレッドユニットとして参照されても良い。先に示唆したように、アーキテクチャ状態レジスタ１０１ａは、アーキテクチャ状態レジスタ１０１ｂにおいて複製される。したがって、個々のアーキテクチャ状態／コンテキストは、論理プロセッサ１０１ａ及び論理プロセッサ１０１ｂについて格納できる。コア１０１で、命令ポインタ及びアロケータ及びリネーマブロック１３０の中のリネームロジックのような他の小さなリソースは、スレッド１０１ａ及び１０１ｂのために複製されても良い。順序付け／退役ユニット１３５の中の順序付けバッファ、ＩＬＴＢ１２０、ロード／ストアバッファ、及びキューのような幾つかのリソースは、パーティショニングを通じて共有されても良い。汎用目的内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータＴＬＢ１１５、実行ユニット１４０、及びアウトオブオーダユニット１３５の部分のような他のリソースは、完全に共有される可能性がある。
【００１２】
プロセッサ１００は、完全に共有される、パーティショニングを通じて共有される、又は処理要素による専用の／それに専用の他のリソースを有する場合がある。図１に、プロセッサの説明のための論理ユニット／リソースと共に純粋に例示的なプロセッサの一実施形態が示される。留意すべきことに、プロセッサは、これらの機能ユニットのうちの任意のものを有し、又は省略しても良く、同様に、図示しない任意の他の知られている機能ユニット、ロジック、又はファームウェアを有しても良い。図示のように、コア１０１は、簡略代表的アウトオブオーダ（out-of-order：ＯＯＯ）プロセッサコアを有する。しかし、インオーダプロセッサが異なる実施形態で用いられても良い。ＯＯＯコアは、実行され／取られるべきブランチを予測するためにブランチ目標バッファ１２０を、及び命令のアドレス変換エントリを格納するために命令変換バッファ（Ｉ−ＴＬＢ）１２０を有する。
【００１３】
コア１０１は、フェッチ済み要素をデコードするためにフェッチユニット１２０に結合されたデコードモジュール１２５を更に有する。フェッチロジックは、一実施形態では、それぞれスレッドスロット１０１ａ、１０１ｂに関連付けられた個々のシーケンスを有する。通常、コア１０１は、プロセッサ１００で実行可能な命令を定め／指定する第１のＩＳＡに関連付けられる。多くの場合、第１のＩＳＡの部分である機械コード命令は、実行されるべき命令又は動作を参照し／指定する命令（オペコードとも称される）の部分を有する。デコードロジック１２５は、それらのオペコードからこれらの命令を認識し及び第１のＩＳＡにより定められる処理のパイプラインの中でデコードされた命令を渡す回路を有する。例えば、以下に詳述するように、デコーダ１２５は、一実施形態では、トランザクション命令のような特定の命令を認識するよう設計され又は適応されたロジックを有する。デコーダ１２５による認識の結果、アーキテクチャ又はコア１０１は、適切な命令と関連付けられたタスクを実行するために、特定の所定の動作を行う。留意すべき重要なことに、本願明細書に記載のタスク、ブロック、動作及び方法のうちの任意のものは、一部が新しい又は古い命令であっても良い単一又は複数の命令に応答して実行されても良い。留意すべきことに、デコーダ１２６は、一実施形態では、同じＩＳＡ（又はそのサブセット）を認識する。代替で、異種コア環境では、デコーダ１２６は、第２のＩＳＡ（第１のＩＳＡのサブセット又は別個のＩＳＡ）を認識する。
【００１４】
一例では、アロケータ及びリネーマブロック１３０は、命令処理結果を格納するためにレジスタファイルのようなリソースを予約するアロケータを有する。しかしながら、スレッド１０１ａ及び１０１ｂは、アウトオブオーダ実行が可能である可能性がある。ここで、アロケータ及びリネーマブロック１３０は、命令結果を追跡するために順序付けバッファのような他のリソースも予約する。ユニット１３０は、プログラムをリネームするためのレジスタリネーマ／プロセッサ１００の内部の他のレジスタへの命令参照レジスタレジスタも有しても良い。順序付け／退役ユニット１３５は、アウトオブオーダ実行及びアウトオブオーダで実行された命令の後にインオーダ退役をサポートするために、上述の順序付けバッファ、ロードバッファ、及びストアバッファのようなコンポーネントを有する。
【００１５】
スケジューラ及び実行ユニットブロック１４０は、一実施形態では、実行ユニットでの命令／動作をスケジューリングするためにスケジューラユニットを有する。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを有する実行ユニットの一部にスケジューリングされる。実行ユニットに関連付けられたレジスタファイルも、情報命令処理結果を格納するために含まれる。例示的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、及び他の知られている実行ユニットを有する。
【００１６】
低レベルのデータキャッシュ及びデータ変換バッファ（Ｄ−ＴＬＢ）１５０は、実行ユニット１４０に結合される。データキャッシュは、メモリコヒーレント状態に保持される可能性のあるデータオペランドのような最近使用した／動作した要素を格納するためのものである。Ｄ−ＴＬＢは、最近の仮想／線形−物理アドレス変換を格納するためのものである。特定の例として、プロセッサは、物理メモリを複数の仮想ページに分けるためにページテーブル構造を有しても良い。
【００１７】
ここで、コア１０１及び１０２は、オンチップインタフェース１１０と関連付けられた第２レベルキャッシュのようなより高いレベル又は更に外側のキャッシュへのアクセスを共有する。留意すべきことに、より高いレベル又は更に外側は、実行ユニットから更に距離の遠くなる又は更に離れたキャッシュレベルを表す。一実施形態では、より高いレベルのキャッシュは、第２又は第３レベルデータキャッシュのような最終レベルデータキャッシュ、つまりプロセッサ１００にあるメモリ階層の中の最後のキャッシュ、である。しかしながら、より高いレベルのキャッシュは限定的ではなく、命令キャッシュと関連付けられ又はそれを有しても良い。代わりに、トレースキャッシュ、つまり一種の命令キャッシュは、最近デコードされたトレースを格納するためにデコーダ１２５の後に結合されても良い。ここで、命令は、多数のマイクロ命令（マイクロ動作）にデコードされ得るマクロ命令（つまり、デコーダにより認識される汎用命令）を表す可能性がある。
【００１８】
図示の構成では、プロセッサ１００は、オンチップインタフェース１１０も有する。歴史的に、以下に詳述するメモリコントローラは、プロセッサ１００の外部にあるコンピューティングシステムに含まれている。このシナリオでは、オンチップインタフェース１１０は、システムメモリ１７５、チップセット（メモリ１７５に接続するためのメモリコントローラハブ及び周辺装置を接続するためのＩ／Ｏコントローラハブを含む場合が多い）、メモリコントローラハブ、ノースブリッジ、又は他の集積回路のようなプロセッサ１００の外部にある装置と通信する。そして、このシナリオでは、バス１０５は、マルチドロップバス、ポイントツーポイント相互接続、シリアル相互接続、パラレルバス、コヒーレント（例えばキャッシュコヒーレント）バス、階層プロトコルアーキテクチャ、差動バス、及びＧＴＬバスのような任意の知られている相互接続を有しても良い。
【００１９】
メモリ１７５は、プロセッサ１００に専用であるか又はシステムの中の他の装置と共有されても良い。メモリ１７５の種類の共通の例は、ＤＲＡＭ、ＳＲＡＭ、不揮発性メモリ（ＮＶメモリ）、及び他の知られている記憶装置を含む。留意すべきことに、装置１８０は、メモリコントローラハブに結合されたグラフィックアクセラレータ、プロセッサ又はカード、Ｉ／Ｏコントローラハブに結合されたデータ記憶装置、無線通信機、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、又は他の知られている装置を有しても良い。
【００２０】
しかしながら、最近、ＳＯＣのように、より多くのロジック及び装置が単一のダイに統合されるにつれ、これらの装置の各々は、プロセッサ１００に組み込まれ得る。例えば、一実施形態では、メモリコントローラハブは、プロセッサ１００と同じパッケージ及び／又はダイにある。ここで、コアの一部（オンコア部分）１１０は、メモリ１７５又はグラフィックデバイス１８０のような他の装置とインタフェースする１又は複数のコントローラを有する。このような装置とインタフェースする相互接続及びコントローラを有する構成は、オンコア（又はアンコア構成）と呼ばれる場合が多い。一例として、オンチップインタフェース１１０は、オンチップ通信のためのリング相互接続、及びオフチップ通信のための高速シリアルポイントツーポイントリンク１０５を有する。さらに、ＳＯＣの環境では、高機能及び低電力消費で小さいフォームファクタを提供するために、ネットワークインタフェース、コプロセッサ、メモリ１７５、グラフィックプロセッサ１８０、及び任意の他の知られているコンピュータ装置／インタフェースのような更に多くの装置でも、単一のダイ又は集積回路に統合されても良い。
【００２１】
一実施形態では、プロセッサ１００は、アプリケーションコード１７６をコンパイル、変換、及び／又は最適化して本願明細書に記載の装置及び方法をサポートし又はそれらとインタフェースするために、コンパイラ、最適化、及び／又はトランスレータコード１７７を実行できる。コンパイラは、ソーステキスト／コードを目標テキスト／コードに変換するためにプログラム又はプログラムセットを有する場合が多い。通常、プログラム／アプリケーションコードのコンパイラによるコンパイルは、高レベルプログラミング言語コードを低レベル機械又はアセンブリ言語コードに変換するために、複数のフェーズ及びパスで行われる。さらに、単一パスコンパイラは、単純なコンパイルのために依然として用いられ得る。コンパイラは、任意の知られているコンパイル技術を用い、字句解析、前処理、パース、意味論的解析、コード生成、コード変換、及びコード最適化のような任意の知られているコンパイラ動作を実行しても良い。
【００２２】
大規模コンパイラは、複数のフェーズを有する場合が多いが、これらのフェーズは次の２つの大まかなフェーズに含まれる。（１）フロントエンド、つまり、ここでは通常、構文処理、意味処理、及び何らかの変換／最適化が行われ得る。（２）バックエンド、つまり、ここでは通常、解析、変換、最適化、及びコード生成が行われる。幾つかのコンパイラは、コンパイラのフロントエンドとバックエンドとの間の描写の曖昧さを示す中間を参照する。結果として、挿入、関連付け、生成、又はコンパイラの他の動作への言及は、前述のフェーズ又はパスのうちの任意のものの中で、及びコンパイラの他の知られているフェーズ又はパスの中で行われても良い。説明のための例として、コンパイラは、呼び出し／動作のコンパイルのフロントエンドフェーズへの挿入、及び次に変換フェーズの間の呼び出し／動作の低レベルコードへの変換のように、動作、呼び出し、関数、などをコンパイルの１又は複数のフェーズに挿入する可能性がある。留意すべきことに、動的コンパイルの間、コンパイラコード又は動的最適化コードは、このような動作／呼び出しを挿入し、ランタイム中の実行のためにコードを最適化しても良い。特定の説明のための例として、バイナリコード（既にコンパイル済みのコード）は、ランタイム中に動的に最適化されても良い。ここで、プログラムコードは、動的最適化コード、バイナリコード、又はそれらの組合せを有しても良い。
【００２３】
コンパイラと同様に、バイナリトランスレータのようなトランスレータは、コードを最適化及び／又は変換するために、コードを静的又は動的に変換する。したがって、コード、アプリケーションコード、プログラムコード又は他のソフトウェア環境の実行への言及は、次のことを表し得る。（１）静的又は動的にプログラムコードをコンパイルするため、ソフトウェア構造を維持するため、他の動作を実行するため、コードを最適化するため、又はコードを変換するための、コンパイラプログラム、最適化コード最適化器、又はトランスレータの実行、（２）最適化／コンパイルされたアプリケーションコードのような、動作／呼び出しを含むメインプログラムコードの実行、（３）ソフトウェア構造を維持するため、他のソフトウェア関連動作を実行するため、又はコードを最適化するための、ライブラリのような、メインプログラムコードと関連付けられた他のプログラムコードの実行、（４）これらの組合せ。
【００２４】
例示的な相互接続構成及びプロトコルは、特にＰＣＩｅ（Peripheral  Component  Interconnect  Express）アーキテクチャ、ＱＰＩ（Intel  QuickPath  Interconnect）アーキテクチャ、ＭＩＰＩ（Mobile  Industry  Processor  Interface）のような例を含み得る。サポートされるプロセッサの範囲は、ノードコントローラ間の複数のドメイン又は他の相互接続の使用を通じて達成され得る。相互接続構成アーキテクチャは、階層プロトコルアーキテクチャの定義を含み得る。一実施形態では、プロトコル階層（コヒーレント、非コヒーレント、及び任意で他のメモリに基づくプロトコル）、ルーティングレイヤ、リンクレイヤ、及び物理レイヤを設けることができる。さらに、相互接続は、電力管理、ＤＦＴ（test  and  debug）のための設計、故障処理、レジスタ、セキュリティなどに関連する拡張を含み得る。例えば、図２に示した一実装では、階層プロトコルスタック２００は、例えば、トランザクションレイヤ２０５、リンクレイヤ２１０、及び物理レイヤ２２０を含み図示される。コンピューティング装置のインタフェースは、通信プロトコルスタック２００として表される。通信プロトコルスタックとしての表現は、プロトコルスタックを実装する／含むモジュール又はインタフェースとしても言及され得る。
【００２５】
データは、ｐｈｉｔ、ｆｌｉｔ、パケット等として編成され、コンポーネント間で情報を通信するために用いることができる。パケットは、例えば、送信側コンポーネントから受信側コンポーネントへ情報を伝達するために、トランザクションレイヤ２０５及びデータリンクレイヤ２１０で形成され得る。送信されたパケットが他のレイヤを通るに従って、それらは、該レイヤでパケットを処理するために必要な追加情報により拡張され得る。受信側で、逆の処理が生じ、パケットはそれらの物理レイヤ２２０表現からデータリンクレイヤ２１０表現に変換され、最終的に（トランザクションレイヤパケットについては）受信側装置のトランザクションレイヤ２０５により処理できる形式に変換される。
【００２６】
一実施形態では、プロトコル又はトランザクションレイヤ２０５は、データリンクレイヤ２１０及び物理レイヤ２２０のような、装置の処理コアと相互接続アーキテクチャとの間のインタフェースを提供するために用いることができる。これに関し、トランザクションレイヤ２０５の主な責任は、パケット（つまり、トランザクションレイヤパケット又はＴＬＰ）の組立及び解体を含み得る。幾つかの実装では、トランザクションレイヤ２０５（又は別のレイヤ）は、ＴＬＰのためのフロー制御又は他のデータ単位のような、システム内のクレジットに基づくフロー制御を管理できる。幾つかの実装では、クレジットに基づくフロー制御方式を用いることができる。クレジットに基づくフロー制御では、装置は、トランザクションレイヤ２０５の中の受信バッファの各々について、初期クレジット量を公表できる。パケット又はｆｌｉｔが受信側へ送信されるときはいつでも、送信側は、自身のクレジットカウンタを１クレジットだけ減じる。１クレジットは、１つのパケット、ｆｌｉｔ、メッセージ、等を表す。コントローラのような、リンクの反対の端にある外部装置は、各ＴＬＰ、メッセージ、要求、トランザクション、等により消費されるクレジットの数を計数できる。トランザクションがクレジット限度を超えない場合、トランザクションは送信され得る。特に、先のメッセージ又は要求に対する応答を受信することに応答して、優先度又は調停ポリシに従って、追加クレジットが発行され、装置に利用可能なクレジットを回復し得る。クレジット方式の１つの例示的な利点は、例えばクレジット限度に遭遇しないならば、クレジット返却の待ち時間が性能に影響しないことである。
【００２７】
一実施形態では、４個のトランザクションアドレス空間は、構成アドレス空間、メモリアドレス空間、入力／出力アドレス空間、及びメッセージアドレス空間を有する。メモリ空間トランザクションは、データをメモリマップ位置へ／から転送するために、１又は複数のリード要求及びライト要求を有する。一実施形態では、メモリ空間トランザクションは、２つの異なるアドレスフォーマット、例えば３２ビットアドレスのような短アドレスフォーマット又は６４ビットアドレスのような長アドレスフォーマット、を使用できる。構成空間トランザクションは、互換性のある装置の構成空間にアクセスするために用いられる。構成空間へのトランザクションは、リード要求及びライト要求を有し得る。メッセージ空間トランザクション（又は単にメッセージ）は、相互接続構成におけるエージェント間の帯域内通信をサポートするために定められる。さらに、メモリ空間へのアクセスは、例えば、特にメモリ帯域幅への保証サービスレートを通じて割り当てることができる。
【００２８】
したがって、一実施形態では、トランザクションレイヤ２０５は、パケットヘッダ／ペイロード２０６を組み立てる。リンクレイヤ２１０は、データリンクレイヤ２１０とも呼ばれ、トランザクションレイヤ２０５と物理レイヤ２２０との間の中間ステージとして動作できる。一実施形態では、データリンクレイヤ２１０の責任は、２つのコンポーネントリンクの間でトランザクションレイヤパケット（Transaction  Layer  Packet：ＴＬＰ）を交換する信頼できるメカニズムを提供することである。データリンクレイヤ２１０の片側は、トランザクションレイヤ２０５により組み立てられたＴＬＰを受付、パケットシーケンス識別子２１１、つまり識別番号又はパケット番号、を適用し、誤り検出コード、つまりＣＲＣ２１２、を計算して適用し、物理から外部装置のような別の装置へ渡る通信のために、変更したＴＬＰを物理レイヤ２２０に提出する。
【００２９】
一実施形態では、物理レイヤ２２０は、外部装置へパケットを物理的に送信するために、論理サブブロック２２１と、電気サブブロック２２２と、を有する。ここで、論理サブブロック２２１は、物理レイヤ２２１の「デジタル」機能に責任を持つ。これに関し、論理サブブロックは、物理サブブロック２２２による送信のために送出情報を準備するために送信セクションを、及びリンクレイヤ２１０に渡す前に受信した情報を識別し準備するために受信セクションを、有する。
【００３０】
物理ブロック２２２は、送信機及び受信機を有する。送信機は、論理サブブロック２２１によりシンボルを供給される。送信機は、シンボルをシリアル化し外部装置へ送信する。受信機は、シリアル化されたシンボルを外部装置から供給され、受信した信号をビットストリームに変換する。ビットストリームは、逆シリアル化され、論理サブブロック２２１に供給される。幾つかの実施形態では、定義済み８ｂ／１０ｂ送信コードが用いられるような、１０ビットシンボルが送信され／受信される送信コードを用いることができる。このような例では、パケットをフレーム２２３でフレーム化するために、特定のシンボルを用いることができる。さらに、一例では、受信機は、入力シリアルストリームから回復されたシンボルクロックも供給する。
【００３１】
上述のように、トランザクションレイヤ２０５、リンクレイヤ２１０、物理レイヤ２２０は図２の例を参照して議論されたが、階層プロトコルスタックはこれに限定されない。実際に、階層プロトコルが含まれ／実装されても良い。一例では、階層プロトコルとして表現されるポート／インタフェースは、次のものを含む。（１）パケットを組み立てる第１のレイヤ、つまりトランザクションレイヤ、（２）パケットをシーケンス化する第２のレイヤ、つまりリンクレイヤ、（３）パケットを送信する第３のレイヤ、つまり物理レイヤ。特定の例として、ＣＳＩ（common  standard  interface）階層プロトコルが用いられる。別の実施形態では、階層プロトコルは、プロトコル階層（コヒーレント、非コヒーレント、及び任意で他のメモリに基づくプロトコル）、ルーティングレイヤ、リンクレイヤ、及び物理レイヤを含むことができる。
【００３２】
物理レイヤ２２０は、一実施形態では、物理媒体（電気的又は光学的、等）での情報の高速転送に責任を持つ。物理リンクは、２つのリンクレイヤエンティティの間のポイントツーポイントである。リンクレイヤ２１０は、上位層から物理レイヤ２２０を取り除くことができ、データ（及び要求）を直ちに転送する能力を提供し、２つの直接接続されたエンティティの間のフロー制御を管理する。また、リンクレイヤ２１０は、物理チャネルを複数の仮想チャネル及びメッセージクラスに仮想化することに責任を持つ。トランザクションレイヤ２０５（又は幾つかの実施形態ではプロトコルレイヤ）は、物理リンクを介した転送のためにプロトコルメッセージを物理レイヤ２２０に渡す前にプロトコルメッセージを適切なメッセージクラス及び仮想チャネルにマッピングするために、リンクレイヤ２１０に依存できる。リンクレイヤ２１０は、要求、スヌープ、応答、ライトバック、非コヒーレントデータ、等のような複数のメッセージをサポートしても良い。
【００３３】
一実施形態では、複数のエージェントは、例えばホームエージェント（メモリへのオーダ要求）、キャッシング（コヒーレントメモリに対する要求及びスヌープに対する応答を発行する）、構成（構成トランザクションを扱う）、非コヒーレント（非コヒーレントトランザクションを扱う）、等を含む相互接続アーキテクチャに接続されても良い。
【００３４】
現代のＳｏＣ（system-on-chip）は、マルチプロセッサを含む、複数タスクを実行するために使用可能な膨大な数のコンポーネント及び素子を有し得る。メモリ要素及び相互接続構成は、システムのコンポーネントにより共有できる。しかしながら、このような共有は、これらの乏しいシステムリソースのためにコンポーネント間での競合を生じ得る。幾つかの使用例では、ソフトウェアビデオデコーディング、アプリケーションのリアルタイム要件のような厳しいリアルタイムリソースアクセスは、他のコンフリクトの中でも満たすことが困難である。システムリソースに対する要求は、ＣＰＵの環境ではプロセスを含む「要求者」、又はメモリ若しくは相互接続の例では通信チャネルにより生成され得る。このような要求者（及びそれらの要求）は、アプリケーション又はタスクを代表して生成され得る。システムでアクティブな及びそのリソースを競合するタスク及びアプリケーションの組合せは、常に変化し得る。さらに、要求者のリソースに対する要求は変動し、コンポーネント及び種々のアプリケーションについての待ち時間要件も変化し得る。
【００３５】
リソースアクセスは、アービトレータロジック及び付随するハードウェアにより管理できる。メモリリソースの共有アクセスのようなリソースアクセスは、アクセスを精細なレベルの粒度でスケジューリングすることを可能にし、待ち時間及びバッファを減し、高速性能を要求する。幾つかの解決策では、保証最小サービスレート及び限界最大待ち時間は、設計時に分析的に検証され、アービトレータを用いて施行するよう試みられる。アービトレータは、リソースへのアクセスのレベルを要求者（例えば、所与のプロセス又はチャネル）に保証するために、リソースへのアクセスを調整できる。アービトレータは、さらに、互いに要求を分離するよう試み、幾つかの要求者が共有リソースを過度に使用して、他の要求者のそれらに割り当てられた利用可能リソース（又は「帯域幅」）の部分へのアクセス可能性を脅かすのを防ぐことができる。
【００３６】
クレジットに基づく調停アルゴリズムは、メモリ又は相互接続帯域幅のような共有リソースの複数の要求者（又は「ユーザ」）にサービスレートを正確且つ公平に保証するために、デジタル回路又はソフトウェアシステムで用いることができる。１つのこのようなアルゴリズムは、ＣＣＳＰ（Credit  Controlled  Static  Priority）である。ＳｏＣ相互接続構成に適用されるとき、ＣＣＳＰは、例えば、単一の共有メモリを用いて（オンチップ及び外部コンポーネントのような）複数のコンポーネント及び装置にサービスレートを正確に保証できる。ＣＣＳＰのようなソリューションは、保証サービスレートを要求する全てのエージェントがアクティブに参加する明確な使用例を有するシステムに、又は使用例が変化する場合に（例えば、（オーディオプロセッサのような）所与のコンポーネントがオフに切り替えられて、もはやサービスを要求しないとき）ＣＣＳＰサービスレートが再設定できるシステムにおいて、適する。
【００３７】
パーソナルコンピュータ、モバイルコンピュータ、及びサーバに基づくプラットフォームでは、システムにより実行される機能の多様性のためにシステム負荷が絶えず変化するので、再設定サービスレートは現実的ではない場合が多い。さらに、多くのコンポーネントは、一貫して（又は常に）、それらが割り当てられたよりも多くの、共有リソースの部分にアクセスしようとし得、リソースを過度に取ってしまう。結果として、幾つかの例では、ハードディスクトラフィックが要求されないので、ＳＡＴＡ（Serial  ATA）ポートのような、ＳｏＣ又は別のチップ若しくはシステムの中のコンポーネントが、サービス又は帯域幅の使用を停止する場合、該コンポーネントは、帯域幅を使用し得る他のよりアクティブなコンポーネント及び要求者の間で公平に再分配され得る過剰帯域幅を残し得る。既存の調停アルゴリズムは、例えば、アルゴリズムが提供されるサービスに基づき適格を決定するので、間欠的な過剰帯域幅の再分配の処理が粗末である。したがって、システムの中の全てのコンポーネント又は要求者が、それらが元々割り当てられたより多くのリソースを求める場合、全ての対応するエージェントは、最終的にはそれらの設定されたサービスレートを超えて動作するだろう。これは、他の問題の中でも特に、過剰帯域幅の不公平な分配を生じ得る。
【００３８】
非アクティブになりサービスを求めるのを止める１又は複数の要求者のために割り当てられた又は帯域幅（又はサービスレート）の部分を再分配できる改良した調停方式が提供される。要求者のサービスレートは、連続的に変化する使用例に対して動的に調整できる。このようなサービスレートの再分配により、過剰サービスは、アクティブな要求者の各々について設定された相対サービスレートに従って分配でき、結果として、動的に変化する超過システムにおいてサービスの連続的な公平な分配を生じる。このような調停方式は、例えば、本願明細書に記載の例示的なシステム、アルゴリズム、ロジック、技術及びフローの原理に従って及びそれらを用いて提供され得る。
【００３９】
図３の例を参照すると、ＳｏＣのようなコンピューティングシステムに含まれる例示的なアービトレータの簡略ブロック図３００が示される。種々のコンポーネントは、アービトレータの機能を実現するために含まれ得る。例えば、図３の特定の例では、（第１のコンポーネントのポスト済みフローのための）チャネルＣｈ［０］．Ｐ、（第１のコンポーネントの別の非ポスト済みフローのための）Ｃｈ［０］．ＮＰ、（第２のコンポーネントのポスト済みフローのための）Ｃｈ［１］．Ｐ、（第２のコンポーネントの別の非ポスト済みフローのための）Ｃｈ［１］．ＮＰ、のような４つの要求者が提供され得る。要求（例えば、パケットとして実現される）は、キュー３０５で受信される。トラフィックシェーパ３１０は、キュー３０５で受信したバーストトラフィックをシェーピングして、単一の要求のみが所与のサイクルの中で認められるようにする。トラフィックシェーパ３１０は、各要求者に割り当てられた個々のサービスレート（又は利用可能なメモリ帯域幅の部分）に従ってトラフィックをシェーピングできる。クレジットに基づく調停が用いられ、各要求者のクレジットカウンタ３１５は、（例えば、各要求者の利用可能クレジットを通じて）各ポートに提供される実際の累積サービスを追跡でき、サイクル中のクレジットの使用及び新しいクレジットの割り当てに対応するために、各サイクルで各要求者のクレジットカウントを更新できる。要求者が要求を入力する番であるとき（例えば、トラフィックシェーパ３１０により決定されたとき）、資格付与ロジック３２０は、リソースが該要求者のために利用可能か否かを評価できる。これは、リソースにアクセスするためのバスの利用可能の如何を決定するステップと、利用可能な記憶空間がトランザクション要求の目標において利用可能か否かを決定するステップと、を有し得る。静的優先度キュー（static  priority  queue：ＳＰＱ）３２５は、要求者の個々のサービス割り当てに係わらず、各要求者又はポートの固定最大遅延を保証するのを支援するために、（例えば、トラフィックシェーパ３１０と一緒に）更に機能できる。ＳＰＱ３２５は、渇望している低優先度の要求者（無限の遅延を生じる可能性がある）を高優先度の要求者から守ることができる。図３の例は例示的なアービトレータの特定のコンポーネントを示したが、本願明細書に記載の特徴を可能にする他の実装が実現可能であることが理解されるべきである。さらに、図３の例と関連して記載したコンポーネントのうちの幾つかの機能は、結合され、又は他のコンポーネント、構成及びシステムに更に分割され得る。
【００４０】
図４は、複数の要求者（例えば、「０ｐ」、「０ｎｐ」、「１ｐ」、「１ｎｐ」）による要求４０５の例示的なフロー、クレジット４１０の要求者への割り当て、及び（リソースのアクセス及びトランザクションが分配できる頻度又は粒度について定められるような）２４サイクルのシリーズに渡り（要求した共有リソースへの要求者のアクセスを許可する）要求の許可４１２を示すブロック図である。図４の特定の説明のための例では、４個のチャネル０ｐ、０ｎｐ、１ｐ、１ｎｐ（例えば、図３の例のチャネル）は、共有リソースのサービスのための（又は共有リソースの利用可能帯域幅の一部の）サービスレートを割り当てられ得る。例えば、コンポーネント「０」のポスト済みチャネルは、利用可能な帯域幅の２／２４を割り当てられ得る。したがって、チャネルは、２４サイクル毎に２回の要求を保証され得る。同様に、他のチャネルは、それら自身の個々の保証サービスレートを割り当てられ、チャネル「０ｎｐ」はリソースへの最も沢山のアクセスを得られる。
【００４１】
種々の方式及びポリシが、帯域幅又はサービスレートの初期割り当てを決定するために適用できる。サービスレートは、例えば、どんな種類のコンポーネントが要求に関与するか、個々の要求者のバッファのサイズ（例えば、小さなバッファサイズは、バッファの安全な最大待ち時間を保証するサービスレートを促す）、要求者と関連して実行されているアプリケーション又はタスクの種類（例えば、ハード対ソフトリアルタイムアクティビティ、アクティビティのリソース集中度、等）、及び特定の要求者に対応した優先度、により影響を受け得る。要求者に割り当てられたサービスレートは、使用例、競合する要求者の数及び種類、並びに他の要因に依存して変化し得る。さらに、使用例が変化する、異なる使用例がサポートされる、新しいコンポーネントが有効にされる又は追加される、等のとき、サービスレートは、同じ要求者が同じリソースについて競合しているときでも変化し得る。幾つかの例では、使用例は、例えば、特定の現在のサービスレートが決定され割り当てられる使用例における変化について、コンポーネントの使用例を監視することにより、動的に調整できる。説明のための例として、ビデオ処理コンポーネントは、第１のインスタンスで、ＨＤ（high  definition）ビデオを処理していて、第１のインスタンスにおいて帯域幅の第１の部分を割り当てられている。ユーザがＳＤ（standard  definition）設定に切り替える場合、同じビデオ処理コンポーネントは、後のインスタンスで、ＳＤビデオを処理し始めることができる。この特定のコンポーネント（例えばビデオ処理コンポーネント）のアクティビティ及び使用例における遷移は、使用例における変化を考慮するよう動的に調整されるように、特定のコンポーネントのサービスレートをトリガし得る。さらに、（例えば使用例が変化した）特定のコンポーネントとリソースの帯域幅を共有する他のコンポーネントのサービスレートは、特に特定のコンポーネントのサービスレートの動的調整に基づき（例えば比例して）調整されるそれら個々のサービスレートを有し得る。
【００４２】
図４の例では、チャネル０ｐ、０ｎｐ、１ｐ、１ｎｐの少なくとも幾つかで、（４０５で）バーストトラフィックが見られる。さらに、本例では、競合する要求が、実質的に同時に到着し、競合するトラフィックをシェーピングし及び要求者の集合に渡って待ち時間を最小化することに最も困難をもたらす可能性がある。例えば、チャネル０ｐは、要求「ａ」を試み、その直後に要求「ｅ」が続き、チャネル０ｎｐは１０個の要求（「ｂ」、「ｆ」、「ｉ」、「ｌ」、「ｏ」、「ｑ」、「ｓ」、「ｕ」、「ｗ」、「ｘ」）を連続して試みる（該チャネルに割り当てられた帯域幅の全部を使用しようとする）、などである。（４１０で）クレジットは、競合する要求（例えば、要求「ａ」〜「ｘ」）のうちのどれが、共有リソースへのアクセスを連続して許可されるかを調停するのに使用される。（４１０で示すように）クレジットは、要求者（チャネル）に対する保証サービスレートに従って許可され得る。例えば、チャネル０ｎｐは、それ自身の２４／１０の帯域幅サービスレートに相応の、２４サイクル毎に１０個のクレジットを保証され得る。クレジットは、２４サイクル期間に渡り（例えば、サイクル０、３、４、６、８、１２、１６、１８、２１、２３で）分配され得る。クレジットの分配は、複数の競合する要求者の各々に帯域幅の十分なシェア（share）を割り当てようとするために、種々の追加ポリシに基づき、種々のアルゴリズムを用いて決定され得る。
【００４３】
４１５に示すように、１つの要求のみを、任意の１サイクルにおいて許可できる。資格付与ロジック、静的優先度キュー、及びコンポーネント及びロジックは、このような要求がどのように及びどんな順序で許可されるかを導出できる。図４の例では、各チャネルは、リソースへのアクセスを許可されるために（つまり、該チャネル自身の要求を許可させる）、（例えば、全部で又は閾を超えて）少なくとも１つの利用可能なクレジットを有する。例えば、本例で示すように、サイクル０で、チャネル０ｐ、０ｎｐ、１ｐ、１ｎｐの各々は、少なくとも１つのクレジットを許可され、したがって、（例えば、４１５で）サイクル０及びそれ以降で要求の許可の前に利用可能なクレジットを有する。アービトレータで施行される優先度ポリシは、この例では競合する要求者のうちのどれが優先度を有するかを決定するために更に用いることができる。優先度は、固定又は動的であり、特に例えば個々の要求者に基づく特定の使用例又は動作に基づき、要求者の数、過剰帯域幅の利用可能性に基づき、変化し得る。この特定の図では、チャネル０ｐは、他の３つのチャネルに優る優先度を有し、サイクル０で最初に共有リソースへのアクセスを許可され、次にサイクル１で要求者チャネル０ｎｐ、及びサイクル２でチャネル１ｐが続く。優先度ルールは、他の要求者が任意のサービスを受ける前に、優先度を有する他のチャネルに、（個々のクレジットの利用可能性に従って）リソースに複数回アクセスさせ得る。例えば、図４の例では、チャネル１ｐは、該チャネルの要求のための十分なクレジットを有しているにもかかわらず（サイクル８により２つの未使用クレジットを提供されている（例えば４１０でサイクル０及びサイクル６を参照））、該チャネル自身の第１の要求が許可される前にサイクル８まで待つ。幾つかの実装では、待ち時間最大値は、特に、幾つかの低優先度要求者の待ち時間が保証された最大値を超えない限り、それらがキューに入れられないことを保証するよう実施できる。図４の例に示すように、クレジットが利用可能なとき、及び優先度ポリシ、最大待ち時間保護、超過利用保護、及び不十分利用保護が実施されるとき、（４０５で）キューに入れられた要求は、保証サービスレートが実現されるように、（４１５に示すように）サイクルの期間に渡り少しずつ分散できる。
【００４４】
幾つかの時間サンプルにおいて、図４の例では、所与の要求者は、彼らの割り当てられた帯域幅部分を超過して又は不十分に利用していても良い。例えば、サイクル１乃至６の間で、チャネル０ｎｐは、利用可能なサービスの４／６ＢＷを享受し、該チャネルに対して保証された１０／２４ＢＷを遙かに超過している。しかしながら、サイクル７乃至１２の間で、同じチャネルは１／６ＢＷしか保証されない。同様に、他のチャネルは、より多くの、より少ない、又は正にそれらに割り当てられた帯域幅部分を消費し得る。サービスレートを保証することは、サイクル数のような特定の期間に渡りサービスレートが実質的に承諾されることを保証できる。しかしながら、特に、要求者が非アクティブであり保証されたサービスの少なくとも一部の使用の権利を失っているという点で、要求者に対して保証されたサービスは、必ずしも要求者により使用される必要はない。
【００４５】
図５は、複数の要求者の間の帯域幅共有の別の説明を示す。図５の例では、合計メモリ帯域幅５０５が利用可能であり、２つのチャネル間に割り振られる。グラフ５００ａで、曲線５１０は第１のチャネルの試みられた要求を表し、曲線５１５は第２のチャネルの競合する試みられた要求を表す。しかしながら、共有リソースの試みられた利用５１０、５１５の両者が、合計で、要求者に利用可能な合計帯域幅５０５を超過するので、２つの個々のチャネルに割り当てられるべき保証サービスレートに従って、共有リソースへのアクセスを調整するために、クレジットに基づく調停方式が用いられる。本例では、第１のチャネルは第１のサービスレート５２０を割り当てられ、第２のチャネルは第２の、より低いサービスレート５２５を割り当てられる。例えば、図５の例におけるように、第１のチャネルは２／３ＢＷを割り当てられ、一方で第２のチャネルは１／３ＢＷだけを割り当てられる。
【００４６】
２つの要求者の調停に適用される優先度ポリシに従って、曲線５３０により表すように、第１のチャネルは、時間ｔ０まで利用可能な帯域幅５０５の全部を消費することから始める。この期間中、グラフ５００ｂに示すように、第１のチャネルは、自身に割り当てられたクレジットを順調に消費し（曲線５４０により示す）、第１のチャネルのクレジットは、（例えば５４５で）閾クレジット損失に当たるまで、又は（曲線５５０の点５５５により示すように）第２のチャネルの閾クレジット潜在能力に当たるまで、限度５４２の下側を降下する。図５に示すように、第１のチャネルが、自身の有するクレジットの全部を利用し、第２のチャネルが、ある期間の間にサービスを有しないままにされるとき、（第１のチャネルの保証サービスレートに従って）使用できた可能性のあるクレジットは、貯蔵され、結果としてクレジット潜在能力を生じる。同様に、第２のチャネルが（例えばｔ０で）サービスを保証されるとき、第１のチャネルにより享受されるサービスの量は、減らされ又は完全に静められ、結果として、（例えば、第１のチャネルによるリソース消費がｔ０からｔ２まで停止されるとき、限度５４２を超えて潜在能力５６５まで）第１のチャネルのクレジットが補充されるにつれ、第２のチャネルの超過クレジットの（例えば５６０までの）降下を生じる。実際に、ｔ１からｔ３まで、第２のチャネルは保証レート５２５を超過してサービスを許可され消費し、一方で、他の時間には（例えば、ｔ１まで）少ないサービスを享受している。しかしながら、第１及び第２のチャネルの各々は、特定の期間の後（例えば、ｔ４）、両方とも、それら個々のサービスレートに従って必要サービス両を消費しても良い。
【００４７】
上述のように、サービスレートは、特定のサービス量を保証するために各要求者に割り当てることができる。サービスレートは、分母（Ｄｅｎｏｍ）及び分子（Ｎｕｍ）により指定でき、個々の要求者に割り当てられた全体の利用可能な帯域幅の比を表すことができる。
【数１】
2016521936.tif 000003
【００４８】
したがって、保証サービス（ＧＳ）は、次式のように簡単に表すことができる。
【数２】
2016521936.tif 000004
【００４９】
各要求者について、クレジットカウント、又は「サービス潜在能力」が維持され、次式に従って計算できる。
【数３】
2016521936.tif 000005
ここで次式の通りである。
【数４】
2016521936.tif 000006
【００５０】
要求者がサービスを許可されると、クレジット（潜在能力）は減少する。別の要求者が許可される（及び第１の要求者へのサービスが一時的に停止される）場合、潜在能力は増大する。しかしながら、いかなるサービスも提供されない場合、潜在能力は一定のままである。潜在能力は、コマンド及びデータフェーズの両方で、サービスの各サイクルで連続的に更新され得る。さらに、要求者は、次式の場合にサービスを受ける資格があると決定できる。
【数５】
2016521936.tif 000007
【００５１】
アービトレータは共有リソースに対して競合する要求を解決するロジックを含むことができるが、要求者のうちの１つが一時的に非アクティブになり該要求者に割り当てられた帯域幅の部分を利用しない場合を解決するために、追加ロジックを設けることもできる。幾つかの実装では、要求者の非アクティブ期間の間に未使用の帯域幅の部分は、アクティブな要求者のサービスレートを一時的に増大し共有リソースの利用可能な帯域幅をより効率的に使用するために、一時的にアクティブな要求者に分配できる。いかなるサービスレート再設定も与えられない場合、要求者が非アクティブになると、最高優先度の要求者エージェントは、非アクティブな要求者により残された超過サービスの全体を請求しても良い。このような場合には、「富める者はさらに富み」、低優先度のアクティブな要求者のサービスレートは同じままである。これらの要求者は、超過サービスの利益を享受しない。幾つかの方式では、超過帯域幅が要求者のうちの１又は複数の非アクティブと関連して識別されるとき、超過帯域幅は、残りのアクティブな要求者に均等に提供され得る。例えば、優先度は、各々のアクティブな要求者に非アクティブな要求者のサービスの等しい部分を受けさせるために、１又は複数の要求者による非アクティブの期間中に、調整することができる。しかしながら、このような方式は、相対的に低いサービスレートを有する要求者が、より高いサービスレートを割り当てられた要求者と、再分配帯域幅において同じ量的増加を与えられるので、彼らを裕福にさせる。
【００５２】
上記の説明のための例を提供することを目的として、単一の４ＭＢ／ｓリソースに対して競合し最初に以下のサービスレートを割り当てられる６個のＳＡＴＡチャネル及び３個のＰＣＩチャネルのような、９個の要求者（及び付随するコンポーネント及びエージェント）が設けられる。
ＳＴＡ［０］．Ｐ．ＤＭＩ＝０．５／１１ＢＷ＝０.１８ＭＢ／ｓ
ＳＴＡ［１］．Ｐ．ＤＭＩ＝０．５／１１ＢＷ＝０.１８ＭＢ／ｓ
ＳＴＡ［２］．Ｐ．ＤＭＩ＝０．５／１１ＢＷ＝０.１８ＭＢ／ｓ
ＳＴＡ［３］．Ｐ．ＤＭＩ＝０．５／１１ＢＷ＝０.１８ＭＢ／ｓ
ＳＴＡ［４］．Ｐ．ＤＭＩ＝０．５／１１ＢＷ＝０.１８ＭＢ／ｓ
ＳＴＡ［５］．Ｐ．ＤＭＩ＝０．５／１１ＢＷ＝０.１８ＭＢ／ｓ
ＰＣＩｅ１．Ｐ．ＤＭＩ＝４／１１ＢＷ＝１．４５ＭＢ／ｓ
ＰＣＩｅ２ａ．Ｐ．ＤＭＩ＝２／１１ＢＷ＝０．７２ＭＢ／ｓ
ＰＣＩｅ２ｂ．Ｐ．ＤＭＩ＝２／１１ＢＷ＝０．７２ＭＢ／ｓ
１つの仮説では、ＳＡＴＡ要求者の全部が脱落して、超過サービスの３／１１ＢＷ（又は１．０８ＭＢ／ｓ）が残される。超過サービスを吸収するためにより高い又は最高優先度サービスを許容するシステムでは、（ＳＡＴＡ要求者が非アクティブの間の）結果として生じる再分配は、次のように実現され得る。
ＰＣＩｅ１．Ｐ．ＤＭＩ＝７／１１ＢＷ＝２．５５ＭＢ／ｓ
ＰＣＩｅ２ａ．Ｐ．ＤＭＩ＝２／１１ＢＷ＝０．７２ＭＢ／ｓ
ＰＣＩｅ２ｂ．Ｐ．ＤＭＩ＝２／１１ＢＷ＝０．７２ＭＢ／ｓ
ＳＡＴＡ要求者が非アクティブであることから生じる超過サービスが３個の残りのＰＣＩｅ要求者に均等な量（例えば１／１１ＢＷ）で分配される例では、結果として生じる再分配は次のように実現され得る。
ＰＣＩｅ１．Ｐ．ＤＭＩ＝５／１１ＢＷ＝１．８２ＭＢ／ｓ（元のレートより２５．４％増加）
ＰＣＩｅ２a．Ｐ．ＤＭＩ＝３／１１ＢＷ＝１．０９ＭＢ／ｓ（５１．５％増加）
ＰＣＩｅ２b．Ｐ．ＤＭＩ＝３／１１ＢＷ＝１．０９ＭＢ／ｓ（５１．５％増加）
非アクティブが超過帯域幅を作り出す前に要求者の個々のサービスレートに基づき及びそれに比例して超過帯域幅を再割り当てする向上したサービス再設定及び再分配アルゴリズムが提供され得る。例えば、前述の例における要求者の個々のサービスレートに基づき及びそれに比例して超過帯域幅を再割り当てすることは、以下のサービスレートを生じ得る。
ＰＣＩｅ１．Ｐ．ＤＭＩ＝５．５／１１ＢＷ＝２．０ＭＢ／ｓ（３８％増加）
ＰＣＩｅ２ａ．Ｐ．ＤＭＩ＝２．７５／１１ＢＷ＝１．０ＭＢ／ｓ（３８％増加）
ＰＣＩｅ２ｂ．Ｐ．ＤＭＩ＝２．７５／１１ＢＷ＝１．０ＭＢ／ｓ（３８％増加）
一例では、相対的なサービスレートを要求側コンポーネントに割り当てられたときのように保持するサービスレート再分配は、上述の例におけるように、次式に従って全ての非アクティブ要求者の分子を（元のサービス割り当ての）共通の分母に再分配して１又は複数の何もしていない要求者の超過帯域幅を再分配することにより、得られる。
【数６】
2016521936.tif 000008
【００５３】
先の例に戻り、９個の競合するチャネルの間で共有される１１の共通サービスレート分母により、６個のチャネルへの割り当てに対応する分子（６＊．０５＝３）が分母から減算されるとき（１１−３＝８）、結果として生じるサービスレートは以下のように計算できる。
ＰＣＩｅ１．Ｐ．ＤＭＩ＝４／８ＢＷ＝５．５／１１ＢＷ＝２．０ＭＢ／ｓ（３８％増加）
ＰＣＩｅ２ａ．Ｐ．ＤＭＩ＝２／８ＢＷ＝２．７５／１１ＢＷ＝１．０ＭＢ／ｓ（３８％増加）
ＰＣＩｅ２ｂ．Ｐ．ＤＭＩ＝２／８ＢＷ＝２．７５／１１ＢＷ＝１．０ＭＢ／ｓ（３８％増加）
ここで、結果として生じるサービスレート分配は、残りのアクティブな要求者の間のサービス比に正確に関連する。
【００５４】
別の要求者の帯域幅の再分配は、要求者が非アクティブであると決定されると、トリガされ得る。非アクティブは、種々の技術に従って決定できる。一例では、要求者の潜在能力又はクレジットカウントの閾量が設定され（又は要求者の「可能な飽和」）、要求者の非アクティブは、要求者のクレジットカウントが閾に当たることに基づき識別できる。幾つかの例では、個の閾は、天井として動作し、追加で、要求者への追加クレジットの割り当てを停止させる。幾つかの例では、閾時間期間は、要求者の非アクティブを識別するために設定できる。例えば、一例では、非アクティブ及び対応する要求者のクレジットの再分配は、クレジットカウントが潜在能力飽和に当たり、特定の所定の時間期間の間、このレベルに（又は幾つかの例ではこれより上に）維持されたとき、トリガされ得る。要求者の帯域幅の再分配をトリガすべきときを決定するために、他の因子も利用できる。さらに、潜在能力飽和レベル、タイムアウト値、及び他の閾は、個々の要求者に特化して定めることができ、基本コンポーネントの特性（例えば、バッファサイズ、性能特性又は履歴、等）に合わせられるだけでなく、特定の使用例に基づくこともできる。例えば、コンポーネントは、幾つかのアプリケーションの間に要求の間欠的な遅延を、しかし他のタスクの間には一貫した要求を有することが期待され得る。したがって、特定のコンポーネント、エージェント、又はより一般的には要求者について定められた閾は、種々の因子に基づくことができ、例えば、変化する使用例の場合には競合する要求者の数、より高い又はより低い優先度の要求者の存在、等のよな因子が変化するに従い動的に調整できる。
【００５５】
図６の例を参照すると、グラフ６００は、３つの競合する要求者、つまりチャネル「Ｃ０」、「Ｃ１」、「Ｃ２」を示す。説明を容易にするために、図６の例は、簡略な例であり、チャネルの各々は同じ初期サービスレートを割り当てられている。現実の実装では、任意の種々の異なるサービスレートは、特定の時間に要求者に割り当てられるよう設定され得る。現実の例では、実際に、競合する要求者のより複雑な多数の組合せが、種々の異なるサービスレートと共に期待され得る。図６の例に戻ると、ｔ０で、チャネル「Ｃ０」、「Ｃ１」、「Ｃ２」は、それぞれ曲線６０５、６１０、６１５により表すように、サービスの消費と、再びサービスを再開するためのクレジットの待機と、を交互に生じ得る。３個の要求者が時間ｔ０からｔ１までにそれらに割り振られた帯域幅の全部を効率的に消費するとき、時間ｔ０からｔ１に示すように、各チャネルは、同じ量のサービスを共有できる。しかしながら、時間ｔ１で、チャネルＣ２は、減速し又は要求の送信を停止し始める。したがって、チャネルＣ２の要求は認められず、クレジットは使用されない。しかしながら、（例えば６２０で）チャネルに割り当てられたサービスレートを保証するのを支援するために、クレジットは継続してチャネルに割り当てられる。結果として、図６に示すように、（６２５で）チャネルＣ２のクレジットはｔ１からｔ２まで上昇する。それらは、一例では、潜在能力（又はクレジット）飽和レベル６３０に達するまで、上昇できる。さらに、アービトレータは、（例えば、チャネルＣ２による）未使用帯域幅又はサービスが浪費されないことを保証するためのロジックを含むことができる。このロジックは、優先度に基づき超過帯域幅の全部又は大部分を（例えば、最高優先度を有する残りのアクティブなチャネルに）利用可能にさせるよう指示し又はそうさせる。図６の例では、チャネルＣ０は、最高優先度チャネルであり、チャネルＣ２により残された空所を効率的に満たし、図６に示すように６２５の間にチャネルＣ２により一時的に失われた超過帯域幅の大部分を消費する。
【００５６】
上述のように、潜在能力飽和又は要求者の非アクティブの他の指標は、非アクティブな要求者の帯域幅の動的な再割り当て又は分配をトリガできる。例えば、時間ｔ２で、チャネルＣ２のクレジットレベルが飽和レベル６３０に当たるので、チャネルＣ２は、少なくとも一時的に非アクティブであると決定され、チャネルＣ２に割り当てられた全体の帯域幅の一部は、残りのアクティブなチャネルＣ０及びＣ１に分配され、一方でチャネルＣ２は非アクティブのままである。この特定の例では、チャネルＣ２の帯域幅は、次式に従って再割り当てされる。
【数７】
2016521936.tif 000009
したがって、２つのアクティブな要求者のサービスレートを表す比の分母は、１（つまり、チャネルＣ２のサービスレートの分子）だけ減少され、６３５に示すように、チャネルＣ０及びＣ１の個々のサービスレートを１／２ＢＷに調整し、非アクティブなチャネルＣ２の割り当てられたサービスレートを０まで一時的に降下させる。チャネルＣ０及びＣ１の間の再割り当てされたサービスレートにより、（例えば、Ｃ０に対して過度に獲得する）いかなる超過帯域幅も残らない。代わりに、ｔ２乃至ｔ４の間で、チャネルＣ０及びＣ１は、メモリ帯域幅のバランスのとれた消費を享受する。注目すべきことに、再割り当てにより、Ｃ０及びＣ１の両者は、限度６４０より下のクレジットバランスを有することを許され、Ｃ２の非アクティブにより効果的に限度を再調整する。
【００５７】
本例を続けると、要求者Ｃ２は再びアクティブになり、再び覚醒し、又は共有リソースの要求を再開しても良い。追加トリガは、要求者が再開したこと、及び帯域幅の元の割り当てが再開されるべきであること、を決定するために定めることができる。幾つかの例では、共有サービスの要求の送信は、再割り当てされたサービスレート状態（例えば、６３５）の終了、及びチャネルＣ２の非アクティブの前にサービスレートをそれらの状態（例えば６２０）に戻すこと、をトリガできる。時間ｔ３乃至ｔ４で（６４５）、チャネルＣ２の再アクティブ化及びチャネルの大きな（例えば飽和）クレジットカウントを識別することにより、チャネルＣ２は、（例えば、アービトレータを用いて）共有リソースへの単独アクセスを許可され、チャネルＣ２が他のチャネルＣ０及びＣ１に効果的に「追い付く」ことを可能にする。この期間中、チャネルＣ０及びＣ１による要求は、チャネルが平衡に達するまで、バッファリングされ得る。したがって、Ｃ０及びＣ１の潜在能力は、再び正になり（例えばｔ４）、始めに（例えば、６２０）割り当てられたリソースの共有を再開できる。したがって、チャネルＣ０、Ｃ１、Ｃ２は、それぞれ、アクティブなチャネルの数の変化、チャネルの使用例、又は他の事象が検出されるまで、１／３ＢＷのサービスレートに戻され（例えば、６５０）、共有リソースの帯域幅の再設定又は一時的再割り当てを促す。
【００５８】
図７の簡略フローチャートを参照すると、共有システムリソースの非アクティブ要求者に応答したサービスの再割り当てに関連する例示的な技術が示される。一例では、サービスレートは、共有システムリソースへのアクセスを獲得しようとするオンチップのエージェント又は他のシステムコンポーネントのような複数の要求者の各々に割り当てられる（７０５）。サービスレートは、システムリソースの帯域幅全体の比として表される。比は、分子及び分母により構成され得る。システムリソースにアクセスしようとする競合する試みは、例えばシステムのアービトレータコンポーネントを用いて調停され得る（７１０）。調停は、割り当てられたサービスレートを保証し、各要求者の相対的優先度を共有リソースに対して実施するために、クレジットに基づく方式に従って行われ得る。さらに、ある時間期間の間、要求者のうちの１又は複数が非アクティブになることに応答して、サービスレートを再設定する機能が提供され得る。一例では、非アクティブ要求者は、例えば非アクティブ閾に基づき識別できる（７１５）。非アクティブ閾は、特に、要求者が非アクティブだった時間期間に、要求者に割り当てられたクレジットの潜在能力飽和に対応し得る。非アクティブを識別するステップ（７１５）は、非アクティブ要求者に割り当てられた帯域幅の部分の再割り当てをトリガできる（７２０）。再割り当て帯域幅は、依然としてアクティブな要求者に再分配できる。したがって、帯域幅は、アクティブ要求者の相対的なサービスレートに比例して再割り当てされる。帯域幅は、非アクティブ要求者のうちの１又は複数が再びアクティブになるまで、再割り当てされたままである。前の非アクティブ要求者の再アクティブ化が識別され（７２５）、非アクティブ化した要求者に始めに割り当てられた再割り当て帯域幅の部分は、再アクティブ化要求者に戻され（７３０）、要求者の再アクティブ化に適合するために、アクティブ要求者の各々のサービスレートを再び再調整させる。要求者の任意の組合せは、非アクティブになる可能性があり、要求者の分配された帯域幅の、残りのアクティブ要求者への再割り当てをトリガする（例えば７２０）。したがって、相対サービスレートは、始めに要求者に割り当てられたまま保持される。したがって、各々のアクティブ要求者のサービスレートは、他の要求者がアクティブと非アクティブとの間で行ったり来たりすると変動し、各々のアクティブ要求者の要求は、現在それらに割り当てられているサービスレートに従って共有リソースへのアクセスを許可される。
【００５９】
留意すべきことに、上述の装置、方法、及びシステムは、前述のような任意の電子装置又はシステムに実装されても良い。特に図のように、以下の例は、本願明細書に記載の本発明を用いる例示的なシステムを提供する。
【００６０】
以下のシステムはより詳細に記載されるので、上述の議論と異なる多数の相互接続が開示され、記載され、再び取り上げられる。また、直ちに明らかなように、上述の利点は、これらの相互接続、構成、又はアーキテクチャに適用されても良い。
【００６１】
図８を参照すると、本発明の一実施形態に従う第２のシステム８００のブロック図が示される。図８に示すように、マルチプロセッサシステム８００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続８５０を介して結合される第１のプロセッサ８７０及び第２のプロセッサ８８０を有する。プロセッサ８７０及び８８０の各々は、プロセッサの何らかのバージョンであっても良い。一実施形態では、８５２及び８５４は、ＩｎｔｅｌのＱＰＩ（Quick  Path  Interconnect）アーキテクチャのようなシリアルのポイントツーポイントコヒーレント相互接続構成の一部である。結果として、本発明は、ＱＰＩアーキテクチャの中で実装されても良い。
【００６２】
２個のプロセッサ８７０、８８０だけを有して示されるが、本発明の範囲はこれに限定されないことが理解される。他の実施形態では１又は複数の追加プロセッサが、所与のプロセッサの中に存在しても良い。
【００６３】
プロセッサ８７０及び８８０は、それぞれ内蔵メモリコントローラユニット８７２及び８８２を有して示される。プロセッサ８７０は、そのバスコントローラユニットの部分として、ポイントツーポイント（Ｐ−Ｐ）インタフェース８７６及び８７８も有する。同様に、第２のプロセッサ８８０は、Ｐ−Ｐインタフェース８８６及び８８８を有する。プロセッサ８７０、８８０は、ポイントツーポイント（Ｐ−Ｐ）インタフェース回路８７８、８８８を用いて、Ｐ−Ｐインタフェース８５０を介して情報を交換できる。図８に示すように、ＩＭＣ８７２及び８８２は、個々のプロセッサにローカルに取り付けられたメインメモリの部分であっても良い個々のメモリ、つまりメモリ８３２及びメモリ８３４にプロセッサを結合する。
【００６４】
プロセッサ８７０、８８０は、それぞれ、ポイントツーポイントインタフェース回路８７６、８９４、８８６、８９８を用いて個々のＰ−Ｐインタフェース８５２、８５４を介して、チップセット８９０と情報を交換する。チップセット８９０も、高性能グラフィック相互接続８３９と平行して、インタフェース回路８９２を介して高性能グラフィック回路８３８と情報を交換する。
【００６５】
共有キャッシュ（図示しない）は、プロセッサの中に含まれ又は両プロセッサの外部にあり、更にＰ−Ｐ相互接続を介してプロセッサと接続されても良い。したがって、両プロセッサのローカルキャッシュ情報は、プロセッサが低電力モードに置かれる場合、共有キャッシュに格納されても良い。
【００６６】
チップセット８９０は、インタフェース８９６を介して第１のバス８１６に結合されても良い。一実施形態では、第１のバス８１６は、ＰＣＩ（Peripheral  Component  Interconnect）バス、又はＰＣＩ  Ｅｘｐｒｅｓｓバス若しくは別の第三世代Ｉ／Ｏ相互接続バスのようなバスであっても良いが、本発明の範囲はこれに限定されない。
【００６７】
図８に示すように、種々のＩ／Ｏ装置８１４は、第１のバス８１６を第２のバス８２０に結合するバスブリッジ８１８と一緒に、第１のバス８１６に結合される。一実施形態では、第２のバス８２０は、ＬＰＣ（low  pin  count）バスを有する。一実施形態では、種々の装置は、例えばキーボード及び／又はマウス８２２、通信装置８２７、及び命令／コード及びデータ８３０を含む場合が多いディスクドライブ若しくは他の大容量記憶装置のような記憶ユニット８２８を含み、第２のバス８２０に結合される。さらに、オーディオＩ／Ｏ８２４は、第２のバス８２０に結合されると示される。留意すべきことに、含まれるコンポーネント及び相互接続アーキテクチャが変化する他のアーキテクチャが可能である。例えば、図８のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実装しても良い。
【００６８】
図９を参照すると、本発明に従うＳＯＣ（system  on-chip）設計の一実施形態が示される。特定の説明のための例として、ＳＯＣ９００はユーザ機器（ＵＥ）に含まれる。一実施形態では、ＵＥは、ハンドヘルドフォン、スマートフォン、タブレット、超薄型ノードブック、広帯域アダプタを備えるノードブック、又は任意の他の同様の通信装置のような、通信するためにエンドユーザにより使用される任意の装置を表す。ＵＥは、基地局又はノードに接続する場合が多く、場合によっては事実上ＧＳＭ（登録商標）ネットワークの中の移動局（ＭＳ）に対応する。
【００６９】
ここで、ＳＯＣ９００は２個のコア、つまり９０６及び９０７を有する。上述の議論と同様に、コア９０６及び９０７は、Intel（登録商標）Architecture  Core（商標）に基づくプロセッサ、ＡＭＤ（Advanced  Micro  Devices,  Inc.）プロセッサ、ＭＩＰＳに基づくプロセッサ、ＡＲＭに基づくプロセッサ設計、又はそれらのカスタマ、及びそれらのライセンシー若しくは採用者のような、命令セットアーキテクチャに従っても良い。コア９０６及び９０７は、システム９００の他の部分と通信するために、バスインタフェースユニット９０９と関連するキャッシュコントロール９０８及びＬ２キャッシュ９１１に結合される。相互接続９１０は、ＩＯＳＦ、ＡＭＢＡ又は上述の他の相互接続のような、場合によっては記載の本発明の１又は複数の態様を実施するオンチップ相互接続を有する。
【００７０】
インタフェース９１０は、ＳＩＭ（Subscriber  Identity  Module）カードとインタフェースするＳＩＭ９３０、ＳＯＣ９００を初期化及びブートするためにコア９０６及び９０７による実行のためのブートコードを保持するブートＲＯＭ９３５、外部メモリ（例えばＤＲＡＭ９６０）とインタフェースするＳＤＲＡＭコントローラ９４０、不揮発性メモリ（例えばフラッシュ９６５）とインタフェースするフラッシュコントローラ９４５、周辺機器とインタフェースする周辺機器コントローラ９５０（例えばシリアル周辺機器インタフェース）、入力（例えば、タッチ入力）を表示し受信するビデオコーデック９２０及びビデオインタフェース９２５、グラフィック関連計算を実行するＧＰＵ９１５、等のような他のコンポーネントに通信チャネルを提供する。これらのインタフェースのうちの任意のものは、本願明細書に記載の本発明の態様を組み込んでも良い。
【００７１】
さらに、システムは、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール９７０、３Ｇモデム９７５、ＧＰＳ９８５、及びＷｉＦｉ９８５のような通信のための周辺機器を示す。上述のように、ＵＥは通信のために無線機を有する。その結果、これらの周辺通信モジュールは全て必要ではない。しかしながら、ＵＥの特定の形式では、外部通信のための無線機が含まれるべきである。
【００７２】
本発明は限られた数の実施形態に関して記載されたが、当業者は、それらから多数の変更及び変形を理解する。添付の請求の範囲は、このような変更及び変形が本発明の真の精神及び範囲に包含することが意図される。
【００７３】
設計は、作成から製造のためのシミュレーションまで、種々の段階を通り得る。設計を表すデータは、多くの方法で設計を表現し得る。先ず、シミュレーションで有用なので、ハードウェアは、ハードウェア記述言語又は別の機能記述言語を用いて表現されても良い。さらに、ロジック及び／又はトランジスタゲートを有する回路レベルのモデルは、設計プロセスの幾つかの段階で生成されても良い。さらに、多くの設計は、特定の段階で、ハードウェアモデルの中の種々の素子の物理的配置を表すデータのレベルに達する。従来の半導体製造技術が用いられる場合、ハードウェアモデルを表すデータは、集積回路を製造するために用いられるマスクの異なるマスクレイヤにおける種々の特徴の存在又は不在を指定するデータであっても良い。設計の任意の表現で、データは、任意の形式の機械可読媒体に格納されても良い。メモリ、又はディスクのような磁気若しくは光記憶装置は、このような情報を送信するために変調された又は生成された光若しくは電波を介して送信される情報を格納するための機械可読媒体であっても良い。コード又は設計を示す又は伝達する電気搬送波が、電気信号のコピー、バッファリング、又は再送信が実行される程度に、送信されると、新しいコピーが生成される。したがって、通信プロバイダ又はネットワークプロバイダは、本発明の実施形態の技術を具現化する、搬送波に符号化された情報のようなものを、有形機械可読媒体に少なくとも一時的に格納しても良い。
【００７４】
ここで用いられるモジュールは、ハードウェア、ソフトウェア、及び／又はファームウェアの任意の組合せを表す。一例として、モジュールは、マイクロコントローラにより実行されるために適応されるコードを格納するために非一時的媒体に関連付けられるマイクロコントローラのようなハードウェアを有する。したがって、モジュールへの言及は、一実施形態では、非一時的媒体に保持されるコードを認識し及び／又は実行するよう特に構成されるハードウェアを表す。さらに、別の実施形態では、モジュールの使用は、所定の動作を実行するためにマイクロコントローラにより実行されるよう特に適応されるコードを含む非一時的媒体を表す。推測できるように、更に別の実施形態では、（本例では）用語モジュールは、マイクロコントローラ及び非一時的媒体の組合せを表し得る。多くの場合、別個に図示されたモジュール境界は、一般的に変化し、場合によっては重なり合う。例えば、第１及び第２のモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せを共有しても良く、一方で、場合によっては、幾つかの独立したハードウェア、ソフトウェア、又はファームウェアが残されても良い。一実施形態では、用語ロジックの使用は、トランジスタ、レジスタ、又はプログラマブル論理素子のような他のハードウェアのようなハードウェアを含む。
【００７５】
語「するために（to）」又は「するよう構成される（configured  to）」の使用は、一実施形態では、指定された又は決定されたタスクを実行するために、装置、ハードウェア、ロジック、又は要素を配置する、一緒に置く、製造する、販売を提供する、インポートする、及び／又は設計することを表す。本例では、動作していない装置又はその要素は、指定されたタスクを実行するために指定され、結合され、及び／又は相互接続される場合、該指定されたタスクを実行する「よう構成される」。純粋に説明のための例として、ロジックゲートは、動作中０又は１を供給しても良い。しかし、クロックにイネーブル信号を供給する「よう構成される」ロジックゲートは、１又は０を供給し得るあらゆる可能なロジックゲートを有しない。代わりに、ロジックゲートは、動作中に１又は０出力がクロックをイネーブルにする何らかの方法で結合されるものである。ここでも、留意すべきことに、用語「よう構成される」の使用は、動作を必要としないが、代わりに、装置、ハードウェア、及び／又は要素が動作しているときに、潜在状態で該装置、ハードウェア、及び／又は要素が特定のタスクを実行するよう指定される該装置、ハードウェア、及び／又は要素の潜在状態に焦点を当てる。
【００７６】
さらに、表現「できる（capable  of/to）」及び又は「動作する（operable  to）」の使用は、一実施形態では、装置、ロジック、ハードウェア、及び／又は要素の使用を特定の方法で可能にするように設計される特定の装置、ロジック、ハードウェア、及び／又は要素を表す。留意すべきことに、上述のように、「できる（capable  to）」又は「動作する（operable  to）」の使用は、一実施形態では、装置、ロジック、ハードウェア、及び／又は要素は動作していないが、装置の使用を特定の方法で可能にするように設計される、特定の装置、ロジック、ハードウェア、及び／又は要素の潜在状態を表す。
【００７７】
本願明細書で使用されるように、値は、数、状態、論理状態、又は２進論理状態の任意の知られている表現を含む。多くの場合、論理レベル、論理値、又は論理値の使用は、単に２進論理状態を表す１及び０としても表される。
【００７８】
例えば、１はハイ（high）論理レベルを表し、０はロー（low）論理レベルを表す。一実施形態では、トランジスタ又はフラッシュセルのような記憶セルは、単一の論理値又は複数の論理値を保持することができる。しかしながら、コンピュータシステムにおける値の他の表現が用いられている。例えば、１０進数の１０は、２進数で１０１０として、及び１６進数の文字Ａとしても表すことができる。したがって、値は、コンピュータシステムにおいて保持できる情報の任意の表現を有する。
【００７９】
さらに、状態は、値又は値の部分により表すことができる。一例として、論理１のような第１の値は、デフォルト又は初期状態を表しても良い。一方で、論理０のような第２の値は、非デフォルト状態を表しても良い。さらに、用語リセット及びセットは、一実施形態では、それぞれデフォルト及び更新された値又は状態を表す。例えば、デフォルト値は、潜在的にハイ論理値、つまりリセットを有し、一方で、更新された値は、潜在的にロー論理値、つまりセットを有する。留意すべきことに、値の任意の組合せは、任意の数の状態を表すために用いられても良い。
【００８０】
上述の方法、ハードウェア、ソフトウェア、ファームウェア、又はコードセットの実施形態は、処理要素により実行可能な機械アクセス可能な、機械可読、コンピュータアクセス可能な、又はコンピュータ可読媒体に格納された命令又はコードにより実装されても良い。非一時的機械アクセス可能な／読み取り可能な媒体は、コンピュータ又は電子システムのような機械により読み取り可能な形式で情報を提供する（つまり、格納する及び／又は送信する）任意のメカニズムを有する。例えば、非一時的機械アクセス可能な媒体は、ＳＲＡＭ（static  RAM）又はＤＲＡＭ（dynamic  RAM）のようなＲＡＭ（random-access  memory）、ＲＯＭ、磁気又は光記憶媒体、フラッシュメモリ装置、電子記憶装置、光記憶装置、音響記憶装置、一時的（伝搬）信号（例えば、搬送波、赤外線信号、デジタル信号）から受信された情報を保持する他の形式の記憶装置、等を含む。これらは、非一時的媒体であって、該非一時的媒体から情報を受信し得る非一時的媒体と区別される。
【００８１】
本発明の実施形態を実行するロジックをプログラミングするために用いられる命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、又は他の記憶装置のような、システムの中にあるメモリに格納されても良い。さらに、命令は、ネットワークを経由して、又は他のコンピュータ可読媒体を用いて、配信できる。したがって、機械可読媒体は、機械（例えばコンピュータ）により読み取り可能な形式で情報を格納する又は送信する任意のメカニズムを有しても良いが、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク、ＣＤ−ＲＯＭ（Read-Only  Memory）、及び光磁気ディスク、ＲＯＭ（Read-Only  Memory）、ＲＡＭ（Random  Access  Memory）、ＥＰＲＯＭ（Erasable  Programmable  Read-Only  Memory）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read-Only  Memory）、磁気又は光カード、フラッシュメモリ、又は電気、光、音響若しくは他の形式の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号、等）を介してインターネットを介した情報送信で用いられる有形機械可読記憶装置に限定されない。したがって、コンピュータ可読媒体は、機械（例えば、コンピュータ）により読み取り可能な形式で電子命令又は情報を格納又は送信するために適する任意の種類の有形機械可読媒体を有する。
【００８２】
以下の例は、本願明細書に従う実施形態に関連する。１又は複数の実施形態は、共有システムリソースの３以上の要求者のうちの特定の要求者が非アクティブであると決定し、前記３以上の要求者の各々は、前記システムリソースの利用可能な帯域幅の対応するシェアを表す個々のサービスレートを表し、割り当てられるべき前記特定の要求者の前記個々のサービスレートは、前記帯域幅の第１のシェアを表す第１のサービスレートを有し、前記帯域幅の前記第１のシェアを、前記３以上の要求者の中のアクティブ要求者の各々に再割り当てして、前記アクティブ要求者の相対サービスレートに従って前記帯域幅の前記第１の部分を分配し、前記特定の要求者が非アクティブのままである間に前記帯域幅の前記第１のシェアは再割り当てされる、装置、システム、機械可読記憶装置、機械可読媒体、及び方法を提供し得る。
【００８３】
少なくとも一例では、前記他の要求者の前記サービスレートの各々は、前記再割り当てに従って増大され、その間に前記特定の要求者は非アクティブのままである。
【００８４】
少なくとも一例では、前記帯域幅の前記第１のシェアの再割り当てに続く前記特定の要求者による要求は識別され、前記要求に基づき、前記帯域幅の前記第１のシェアは前記特定の要求者に戻される。
【００８５】
少なくとも一例では、前記特定の要求者は非アクティブであると決定する。前記の決定は、前記特定の要求者が所定の非アクティブ閾を満たすという決定に基づき得る。前記非アクティブ閾は、前記クレジットに基づく調停に従って前記特定の要求者に割り当てられる未使用クレジットの閾数を有し得る。非アクティブ閾は、未使用クレジットの閾数における又はそれを上回る時間量に基づく閾のような、時間に基づく閾を有し得る。前記非アクティブ閾は、要求者固有閾を有し、前記３以上の要求者のうちの少なくとも２つは、異なる非アクティブ閾を有する。
【００８６】
少なくとも一例では、クレジットに基づく要求の調停は、前記３以上の要求者により前記共有システムリソースに対して実行される。
【００８７】
少なくとも一例では、前記他の要求者は、前記決定された非アクティブの前に、前記特定の要求者に割り当てられた未使用帯域幅を消費し、前記決定されたアクティブの前の前記未使用帯域幅の前記消費は、前記他の要求者の前記相対サービスレートと不均衡である。
【００８８】
少なくとも一例では、前記共有システムリソースへのアクセスは、前記３以上の要求者の中の前記他の要求者に対する要求者の相対優先度に少なくとも部分的に基づく。
【００８９】
少なくとも一例では、前記３以上の要求者のうちの個々の１つに割り当てられる帯域幅の各々のシェアは、共通の分母に対する個々の分子として表され、非アクティブ要求者の帯域幅のシェアは、次式に従って残りのアクティブ要求者に再分配され、
ServiceRate=Num_i/(Denom-SUM(Num_inactive))、
ここで、ServiceRateは前記再分配の後の残りのアクティブ要求者のサービスレートであり、Num_iは、前記アクティブ要求者の帯域幅の対応するシェアの前記分子であり、Denomは分母であり、SUM(Num_inactive)は前記３以上の要求者の中の前記非アクティブ要求者の個々の分子の和である。
【００９０】
少なくとも一例では、前記３以上の要求者は、少なくとも４の要求者を有し、及び少なくとも１つの他の要求者は、前記特定の要求者が非アクティブであると決定し及び前記帯域幅の前記第１のシェアを前記アクティブ要求者に再割り当てするとき、非アクティブである。
【００９１】
少なくとも一例では、前記３以上の要求者による前記共有システムリソースへのアクセスは調停される。
【００９２】
少なくとも一例では、調停は、前記３以上の要求者の各々について前記割り当てられたサービスレートを保証する。
【００９３】
少なくとも一例では、前記調停は、前記３以上の要求者に割り当てられた前記個々のサービスレートに少なくとも部分的に基づき、さらに、前記共有システムリソースに対する前記３以上の要求者の各々の相対優先度に少なくとも部分的に基づく。
【００９４】
少なくとも一例では、前記３以上の要求者のうちの少なくとも１つの前記サービスレートは、前記要求者による前記共有システムリソースへのアクセスに関連して、前記要求者により実行される特定のアクティビティに少なくとも部分的に基づく。
【００９５】
少なくとも一例では、前記調停ロジックは、さらに、前記３以上の要求者に前記帯域幅の前記個々のシェアを割り当てる。
【００９６】
１又は複数の実施形態は、共有システムリソース、第１の装置、及びアービトレータを有するシステムを提供し得る。アービトレータは、共有システムリソースの３以上の要求者のうちの特定の１つが非アクティブであると決定できる。３以上の要求者の各々は、それぞれシステムリソースの利用可能な帯域幅の対応するシェアを表す個々のサービスレートを割り当てられ、特定の要求者の割り当てられたサービスレートは、帯域幅の第１のシェアを表す第１のサービスレートを含み、３以上の要求者のうちの少なくとも１つは第１の装置に対応し得る。アービトレータは、帯域幅の第１のシェアを、３以上の要求者の中のアクティブ要求者の各々に再割り当てでき、特定の要求者が非アクティブである間に、アクティブ要求者の相対サービスレートに従って帯域幅の第１の部分を分配する。
【００９７】
少なくとも一例では、共有システムリソースは、システムの相互接続の少なくとも一部を有する。
【００９８】
少なくとも一例では、共有システムリソースは、共有メモリリソースを有する。
【００９９】
少なくとも一例では、複数のコンポーネントを有する集積回路と、優先度クレジットアルゴリズムに基づき、前記複数のコンポーネントのうちの特定のコンポーネントに特定のサービスレートを割り当てる割り当てロジックと、前記特定のコンポーネントがサービスの要求を継続しないことに応答して、前記１又は複数のコンポーネントの相対サービスレートに基づき、前記特定のコンポーネント以外の前記複数のコンポーネントのうちの１又は複数に前記特定のサービスレートを再割り当てする再割り当てロジックと、を有する装置が提供される。
【０１００】
本願明細書を通じて「一実施形態」又は「ある実施形態」等のような表現は、本発明の実施形態と関連して記載された特定の特徴、構造、機能又は特性が実装の少なくとも１つの実施形態に含まれることを意味する。したがって、本願明細書を通じて種々の場所に現れる「一実施形態では」又は「ある」実施形態ではという表現は、必ずしも全て同じ実施形態を参照していない。さらに、特定の特徴、構造又は特性は、１又は複数の実施形態において、任意の適切な方法で結合されても良い。
【０１０１】
上記において、詳細な説明は、特定の例示的な実施形態への参照と共に与えられる。しかしながら、添付の請求の範囲に記載された本発明の広範な精神及び範囲から逸脱することなく種々の変更を行うことができることが明らかである。したがって本明細書と添付図面は限定的ではなく例示的であると解釈すべきである。さらに、実施形態及び他の例となる言葉の前述の使用は、必ずしも、同じ実施形態又は同じ例を参照するのではなく、異なる及び別個の実施形態を参照し、場合によっては同じ実施形態を参照しても良い。
【図１】
2016521936.tif 000010
【図２】
2016521936.tif 000011
【図３】
2016521936.tif 000012
【図４】
2016521936.tif 000013
【図５】
2016521936.tif 000014
【図６】
2016521936.tif 000015
【図７】
2016521936.tif 000016
【図８】
2016521936.tif 000017
【図９】
2016521936.tif 000018
【国際調査報告】
2016521936.tif 000019
2016521936.tif 000020