(57)【要約】  一般に、サービス品質（ＱｏＳ）モデルの方法と装置が開示される。開始ネットワーク・デバイスとのサービス品質（ＱｏＳ）コントラクトの条件が満たされるようにできる。要求は、到着間隔の順序数倍以下の最初の時間内に開始ネットワーク・デバイスから受信できる。順序数は、要求のグループ内のその要求の位置を表す。処理された要求は、定数項にサービス間隔の順序数倍を加えた間隔以下の第２の時間以内にイニシエータに返すことができる。
2007510229.tif 000002
【特許請求の範囲】
【請求項１】
イニシエータとのサービス品質（ＱｏＳ）コントラクトの条件を満たす方法であって、
順序数が要求のグループ内の前記要求の位置を表すとき、前記順序数を掛けた到着間隔以下の最初の時間内にイニシエータから要求を受信することと、
処理された前記要求を、定数項にサービス間隔の順序数倍を加えた間隔以下の第２の時間以内に前記イニシエータに返すこととを含む方法。
【請求項２】
さらに、
前記イニシエータとインターコネクトとの間の境界で前記第１の時間と前記第２の時間とを測定することを含む請求項１に記載の方法。
【請求項３】
さらに、
前記イニシエータ、前記ターゲット、前記インターコネクト、ＱｏＳユニットを使用して前記ＱｏＳコントラクトの条件を満たすことを含む請求項２に記載の方法。
【請求項４】
前記サービス間隔は前記到着間隔よりも大きい請求項１に記載の方法。
【請求項５】
前記サービス間隔は前記到着間隔に等しい請求項１に記載の方法。
【請求項６】
さらに、
特に要求の前記グループに対して前記定数項を決定することを含む請求項１に記載の方法。
【請求項７】
イニシエータとターゲットとの間に結合されたインターコネクトと、
前記イニシエータが到着モデルの条件を満たしている場合にサービス・モデルの条件を満たすように構成されたインターコネクトに結合されたロジックであって、前記到着モデルは、要求のグループ間の前記要求の位置を表す順序数を到着期間に掛けた期間以内の第１の時間よりも前に要求が到着した場合に前記イニシエータにより条件が満たされる、前記ロジックとを備え、
前記要求が、定数項にサービス間隔の前記順序数倍を加えた間隔以下の第２の時間よりも前に処理される場合に前記ロジックが前記サービス・モデルの条件を満たすシステム。
【請求項８】
前記サービス間隔は前記到着間隔よりも大きい請求項７に記載のシステム。
【請求項９】
前記定数項は要求の前記グループについて決定される請求項７に記載のシステム。
【請求項１０】
前記ロジックが、インターコネクトを誘導するサービス品質（ＱｏＳ）ユニットを備える請求項７に記載のシステム。
【請求項１１】
前記ＱｏＳユニットが、前記ターゲットと前記インターコネクトとの間に結合される請求項１０に記載のシステム。
【請求項１２】
前記到着モデルと前記サービス・モデルがＱｏＳコントラクトを含む請求項７に記載のシステム。
【請求項１３】
前記ＱｏＳコントラクトの条件は、前記イニシエータと前記インターコネクトとの間の境界で満たされる請求項１２に記載のシステム。
【請求項１４】
前記ＱｏＳユニットは、前記インターコネクトの一部である請求項１０に記載のシステム。
【請求項１５】
前記ＱｏＳユニットは前記ターゲットの一部である請求項１０に記載のシステム。
【請求項１６】
サービスを追跡する方法であって、
第１のスレッドに対する第１の割当てカウントを、前記第１のスレッドが処理されているかどうかを追跡するために保持することと、
前記第１の割当てカウントに対し第１の値を持つ正の限界値を設定することと、
第２の割当てカウントを持つ第２のスレッドが処理され、前記第２の割当てカウントが正である場合に、前記正の限界値を第２の値に高めることとを含む方法。
【請求項１７】
さらに、
前記第２の割当てカウントがクレジットを受け取り、また正である場合に前記正の限界値を前記第２の値から第３の値に下げることを含む請求項１６に記載の方法。
【請求項１８】
前記正の限界値は、前記第１の値よりも減らされない請求項１７に記載の方法。
【請求項１９】
さらに、
前記第１と第２の割当てカウントを規則正しい間隔で貸方に付けることと、
前記第１のスレッドが処理された場合に前記第１の割当てカウントを借方に付けることと、
前記第２のスレッドが処理された場合に前記第２の割当てカウントを借方に付けることとを含む請求項１６に記載の方法。
【請求項２０】
上げることは、前記第１のスレッドの割り当て率に比例する量だけ正の限界値を増やすことを含む請求項１６に記載の方法。
【請求項２１】
前記量は、前記第２のスレッドが処理された回数に前記第１のスレッドの前記割り当て率を掛けた値を含む請求項２０に記載の方法。
【請求項２２】
さらに、
前記第１のスレッドが前記第１の割当てカウントに従って処理されるかどうかを決定することを含む請求項１７に記載の方法。
【請求項２３】
さらに、
前記第２の割当てカウントが前記第１の割当てカウントよりも小さい場合に前記第２のスレッドの代わりに前記第１のスレッドを処理することを含む請求項２２に記載の方法。
【請求項２４】
前記第２のスレッドは高優先スレッドである請求項１６に記載の方法。
【請求項２５】
前記第１のスレッドは帯域幅割り当てスレッドである請求項２４に記載の方法。
【請求項２６】
イニシエータとターゲットに結合されたインターコネクトと、
インターコネクトに結合され、前記第１のスレッドによる帯域幅使用度を追跡するため第１のスレッドに対する第１の割当てカウントを保持するように構成された第１のロジックと、
前記第１のロジックに結合され、前記第１の割当てカウントに対し第１の値を持つ正の限界値を設定するように構成された第２のロジックと、
第２のロジックに結合され、第２の割当てカウントを持つ第２のスレッドが処理され、前記第２の割当てカウントが正である場合に、前記正の限界値を第２の値に高めるように構成された第３のロジックとを備えるシステム。
【請求項２７】
さらに、
前記第２のロジックに結合され、前記第２の割当てカウントがクレジットを受け取り、正である場合に前記上げられた正の限界値を第３の値に下げるように構成された第４のロジックを備える請求項２６に記載のシステム。
【請求項２８】
前記正の限界値は、前記第１のスレッドの割り当て率に比例する量だけ上げられる請求項２６に記載の方法。
【請求項２９】
前記第１のスレッドは帯域幅割り当てスレッドである請求項２６に記載のシステム。
【請求項３０】
前記第２のスレッドは高優先スレッドである請求項２６に記載のシステム。
【請求項３１】
さらに、
前記インターコネクトと前記第１のロジックに結合され、前記イニシエータにより前記到着モデルの条件が満たされた場合にサービス・モデルの条件を満たすように構成され、前記第１の割当てカウントを使用して前記サービス・モデルの条件を満たす第５のロジックを備える請求項２６に記載のシステム。
【請求項３２】
前記到着モデルは、順序数を到着期間に掛けた期間以内の第１の時間よりも前に要求が到着した場合に前記イニシエータにより条件が満たされ、前記順序数は、要求のグループの中の前記要求の位置を表し、
前記サービス・モデルは、前記要求が、定数項にサービス間隔の前記順序数倍を加えた間隔以下の第２の時間よりも前に処理される場合に条件が満たされる請求項３１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、統合システムに関するものであり、態様は特に統合システム内のサービスの品質を保証することに関係する。
【背景技術】
【０００２】
システム・オン・チップ（Ｓｏｃ）は、携帯電話、デジタル・カメラ、セット・トップ・ボックス（ＳＴＢ）などのシステムに必要な電子回路やパーツの大半または全部を組み込んだ集積回路（ＩＣ）である。ＳｏＣは、中央演算処理装置（ＣＰＵ）、ダイレクト・メモリ・アクセス（ＤＭＡ）ユニット、メモリ、入出力（Ｉ／Ｏ）回路、特定のアプリケーションにより必要とされる他の回路など、他の方法だと個別のチップ上に配置されるであろう複数の回路を組み込むことができる。特定のアプリケーションに必要なすべての回路を１つのＩＣに含めることにより、システムの生産コストとシステムのサイズを削減し、システムの信頼性を向上させることが可能である。
【０００３】
ＳｏＣは、複数の相互作用するエンティティを含む単一チップである。これらのエンティティは、ＳｏＣのメーカーによって生産されるのではなく、他のベンダから一般的にライセンスされるものであるため、インテレクチャル・プロパティ（ＩＰ）コアと呼ぶばれている。ＣＰＵなどのイニシエータは、メモリなどのターゲットにサービスの要求を発行する。例えば、ＣＰＵはメモリの一部にアクセスする必要がある場合がある。その場合、ＣＰＵは特定のデータに関する要求をメモリに発行する。その後、メモリでは、その要求を処理し、要求されたデータをＣＰＵに返す。イニシエータとターゲットは、インターコネクトを通じて接続されている。
【０００４】
サービス品質（ＱｏＳ）は、要求がどれだけ迅速に処理されるかに関するパフォーマンスの期待値を意味する。例えば、イニシエータは、要求を発行し、それらの要求が特定の時間内にターゲットにより達成されることを期待することができる。パフォーマンスは、複数の異なる方法で特定することができる。帯域幅パフォーマンスは、単位時間当たりに受け取る要求の数を指す。待ち時間パフォーマンスは、特定の要求が返されるまでの時間を指す。ジッタ・パフォーマンスは、要求または応答の到着から次の要求または応答の到着までの時間の変動を指す。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＱｏＳ標準は、ＳｏＣで使用されるイニシエータが通常非常に厳しいサービス要件を持つため、特に、ＳｏＣを使用する場合に重要である。例えば、いくつかのイニシエータ（ＣＰＵなど）は、厳しい待ち時間要件を有し、迅速に処理される必要がある。他のイニシエータ（通信インターフェースなど）は、帯域幅パフォーマンスやジッタ・パフォーマンスに対しさらに敏感である。いくつかのＳｏＣは、いくつかのパフォーマンス保証条件が確実にＳｏＣで満たされるようにできないＱｏＳモデルをうまく扱えない。
【課題を解決するための手段】
【０００６】
サービス品質（ＱｏＳ）モデルの方法と装置が開示される。ＱｏＳモデルによれば、要求は、順序数よりも１小さい数を掛けた到着間隔以下の最初の時間内にイニシエータから受信されるが、ここで、この順序数は、要求のグループ内のその要求の位置を表す。さらに、このモデルによれば、処理された要求は、定数項にサービス間隔の順序数倍を加えた間隔以下の第２の時間以内にイニシエータに返される。
【発明を実施するための最良の形態】
【０００７】
以下の説明では、本発明を完全に理解できるように、名前付きコンポーネント、接続、グループ内要求件数の例示など、多数の具体的詳細が述べられる。しかし、当業者にとっては、本発明は、それらの具体的詳細がなくても実施できることは明白であろう。また他の場合については、本発明を不必要にわかりにくくすることを避けるため、よく知られているコンポーネントまたは方法については、詳述しておらず、むしろブロック図としている。そのため、ここで述べている具体的詳細は、単に例示的にすぎない。特定の詳細は、本発明の精神と範囲から変わる場合があるが、それでも本発明の精神と範囲内にある。
【０００８】
全体として、サービス品質（ＱｏＳ）モデルの方法と装置が開示される。本発明の一実施形態によれば、ＱｏＳモデルは、システム・オン・チップ（ＳｏＣ）またはイニシエータとターゲットとの間のサービスを保証することが必要な他のシステムに実装することができる。イニシエータとターゲットは、インターコネクトを通じて接続される。中央演算処理装置（ＣＰＵ）などのイニシエータは、ランダム・アクセス・メモリ（ＲＡＭ）などのターゲットにサービスを要求する。スレッドは、イニシエータからターゲットへ要求を送信するためのチャネルである。ＱｏＳユニットにより案内される、インターコネクトにより、どのスレッドがターゲットにより処理されるかが決定される。ＱｏＳモデルに応じて、イニシエータとシステムのそれ以外の部分との間のコントラクトを確定することができる。このコントラクトにより、イニシエータは、特定の要求が特定のデッドラインまでに到着し、システムのそれ以外の部分は、それらの要求が他のデッドラインまでに処理されることを保証する。ＱｏＳモデルは、到着モデルとサービス・モデルを含む。到着モデルは、イニシエータから要求を受信するデッドラインを記述し、サービス・モデルは、ターゲットとインターコネクトからサービスを受信するデッドラインを記述する。到着モデルによれば、イニシエータからの要求は、ｎを最初の要求の後の要求の番号、ａを所定の到着間隔として、時間ｎ＊ａよりも前に到着しなければならない。サービス・モデルによれば、応答は、Ｋを所定の定数項とし、ｓを所定のサービス間隔として、Ｋ＋ｎ＊ｓよりも短い時間内に発行される。
【０００９】
他の実施形態によれば、割当てカウントがいくつかのスレッドのために保持される。割当てカウントは、特定のスレッドが処理されているかどうかを追跡して調べる。割当てカウントは、規則正しい間隔でインクリメントし、スレッドが処理されるとデクリメントされる。割当てカウントを使用することで、どのスレッドが処理されるかを決定できる。この決定は、割当てカウントが現在正であるかどうかに基づくことが可能である。［ＤＥＷ１］、割当てカウントは、アイドル状態のスレッドに優先度を与えすぎないようにするため正の限界値を設定できる。正の限界値は、さらに、優先度の高いクレームが処理されているため処理されない低優先度帯域幅割り当てスレッドが最終的には、その割り当てを受け取れるように、調整可能とすることもできる。
【００１０】
図１は、本発明の一実施形態による例示的なシステム・オン・チップを示している。ＳｏＣ１０は、インターコネクト１３を通じて複数のターゲット１２に結合されている複数のイニシエータ１１を含む。複数のイニシエータ１１ａ、１１ｂ、１１ｃが示されている。イニシエータ１１を単に参照している場合は、イニシエータ１１ａ〜ｃのどれもがその例において適用可能であることを示している。同じことが、ターゲット１２ａ〜ｃなどについても成立する。イニシエータ１１は、ＣＰＵ、ダイレクト・メモリ・アクセス・ユニット（ＤＭＡ）、グラフィックス・システム、オーディオ・システムなどのデバイスを含む。ターゲットは、キャッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、周辺装置、ＤＭＡユニット、レジスタ・プログラミング・インターフェースなどをはじめとするメモリなどのデバイスを含む。イニシエータ１１は、一般に、ターゲット１２によるサービスを必要とする。インターコネクト１３は、さまざまなイニシエータ１１をさまざまなターゲット１２にリンクさせる。一般に、イニシエータ１１は、ターゲット１２にサービスを要求することができる。
【００１１】
イニシエータ１１は、要求１４を発行し、インターコネクト１３との間で応答１５をやり取りすることによりターゲット１２と通信する。要求１４は、例えば、メモリ読み出し要求である。対応する応答１５は、その後、その要求を満たすデータとなる。応答を要求元イニシエータ１１に送信することにより、被要求ターゲット１２は、要求を「処理した」といわれる。ＱｏＳモデルでは、特定のイニシエータ１１とインターコネクト１３との間の境界１６において、イニシエータ１１とシステムの残り部分との間のコントラクトを記述する。ＱｏＳモデルは、イニシエータ１１から要求を受信するためのデッドライン、イニシエータ１１に応答を返すためのデッドラインを指定する。
【００１２】
図２は、本発明の一実施形態によりＱｏＳモデルを実装するシステムを示す。システム２０は、ＳｏＣまたはＱｏＳ管理を必要とする他のシステムとすることができる。複数のイニシエータ１１ａ〜ｃがターゲット１２ａと通信を行っている。ターゲット１２ａはここで指定されているが、任意のターゲット１２を使用できることは理解できるであろう。イニシエータ１１ａ〜ｃは、ターゲット１２ａにより処理される要求のグループを発行する。それぞれのイニシエータ１１ａ〜ｃは、１つまたは複数のスレッド２１ａ〜ｃ上に要求を発行する。スレッド２１は、物理チャネル２２上に確立される仮想チャネルである。ここに示されているように、それぞれのイニシエータ１１ａ〜ｃは、そのイニシエータ１１ａ〜ｃに対応するそれ専用の物理チャネル２２ａ〜ｃを備えている。複数のスレッドは同じ物理チャネル２２上に多重化できる。異なるスレッドから要求は、インターコネクト１３の内側の１つまたは複数のアービトレーション・ポイント２３で受信される。アービトレーション・ポイント２３は、ターゲット１２ａに特有のものとすることができる。他の実施形態では、アービトレーション・ポイント２３は複数の異なるターゲット１２に使用できる。アービトレーション・ポイント２３は、要求がターゲット１２ａにいつ、どのような順序で提示されるかを決定し、ターゲット１２ａは、そのサービスのタイミングを決定し、またマルチスレッドの場合には、サービス順序付けの一部を決定する。［ＤＥＷ２］、要求が処理されると、それらの要求は、リターン・チャネル２５ａ〜ｃにそって応答２４ａ〜ｃのスレッドとしてイニシエータ１１に返される。応答は、ターゲット１２ａによってすでに処理されており、分割ポイント２６により元のイニシエータ１１に送り返される。
【００１３】
複数のスレッドが物理チャネル２２、２５上に示されている。スレッド２１ａ〜ｃは、イニシエータ１１ａ〜ｃから要求を伝送する仮想チャネルであるイニシエータ１１ａ〜ｃからの要求スレッドである。物理チャネル２２の一部にしか示されていないが、スレッド２１は「仮想的に」物理チャネル２２の長さを延長する。同様に、応答スレッド２４は、物理応答チャネル２５にそった仮想チャネルである。要求チャネル２６は、インターコネクト１３からターゲット１２ａに要求を送信する。要求チャネル２６は、さらに、ＱｏＳユニット２７により観察される。ＱｏＳユニット２７は、チャネル２８ａを通じて要求チャネルに結合され、チャネル２８ｂを通じてアービトレーション・ポイント２３に結合される。応答チャネル２９は、ＱｏＳユニットからインターコネクト１３に応答を送信する。これからわかるように、スレッド２１ａ、２１ｂ、２１ｃは、要求チャネル２６上で多重化される。同様に、スレッド２４ａ、２４ｂ、２４ｃは、応答チャネル２９上で多重化される。
【００１４】
ＱｏＳユニット２７は、チャネル２８ｂを通じて命令をインターコネクト１３に発行する。ＱｏＳユニット２７は、ターゲット１２ａの内側に置くか、またはインターコネクト１３の内側に置くか、または図に示されているように、独立とすることが可能である。インターコネクト１３は、最終的に、どの要求がターゲット１２ａに発行されるかを決定するが、ＱｏＳユニット２７は、コントラクトとＱｏＳモデルに従ってインターコネクト１３を誘導する。スレッド２１毎に、ＱｏＳユニット２７は、異なるイニシエータ１１とのさまざまなコントラクトに従って、サービスに対してスレッド２１がターゲット１２ａにいつ与えられるかを決定する。ＱｏＳユニット２７、ターゲット１２ａ、インターコネクト１３は、一体となって、ＱｏＳコントラクトの要件を満たす。これらのコントラクトの詳細内容について以下で説明する。
【００１５】
図３は、本発明の一実施形態によりＱｏＳモデルを記述する流れ図である。一実施形態では、ＱｏＳユニット２７、インターコネクト１３、ターゲット１２は、プロセス３０を実装する。ブロック３１は到着モデルを記述する。ブロック３１では、要求のグループがイニシエータから受信される。ＱｏＳモデルにしたがって、それぞれの要求がｎ＊ａ以下の時間に受信される。その際、ｎは最初の要求の後の、要求の番号を記述する順序数である。例えば、ｎは第１の要求には０、第２の要求には１、などである。変数ａは、到着間隔を指し、要求到着に対するシステムの受理された間隔を指す所定の時間である。このモデルによれば、７件の要求のグループが、第１の要求が到着した後、時間６ａよりも前に到着する。グループ内のそれぞれの要求は、第１の要求の後ｎ＊ａ時に到着することができるが、要求はそれよりも前のいつでも到着することもできる。例えば、第２の要求は、第１の要求の後からａまでの任意の時間に到着し、第３の要求は、第２の要求の後から２ａまでの任意の時間に到着し、というように続く。このモデルは、それぞれの要求が到着しなければならないデッドラインを定める。到着間隔ａは、アプリケーションに応じて、システムまたは変数により固定されうる。第１のロジックは、到着モデルの条件が満たされるかどうかを決定することができることは理解できるであろうであろう。
【００１６】
ブロック３２は、サービス・モデルを記述する。ブロック３２では、応答は、Ｋ＋ｎ＊ｓ以内にイニシエータに送信される。Ｋ項は、サービスの待ち時間とジッタなどの量を対象とする定数である。Ｋ項は、それぞれのグループに加えられ、グループを処理するターゲットに対し、より高い優先度を持ちうる他のグループをスケジュールする、またはより高い総システム効率が得られる自由度を与える。ｓ変数は、ａ変数に類似のサービス間隔である。Ｋとｓ項は、特定のシステムについて固定できるか、またはイニシエータ１１、ターゲット１２などに応じて変化しうる。ターゲット１２、インターコネクト１３、ＱｏＳユニット２７を含むロジックは、到着モデルの条件が満たされたと判定された後、サービス・モデルの条件を満たすことができることは理解できるであろう。
【００１７】
ＱｏＳモデルは、到着モデルとサービス・モデルの２つのモデルを含む。図４Ａ〜Ｃは、本発明の一実施形態による到着モデルを例示する図である。図４Ａは、到着モデル４０による要求のグループを例示している。到着モデル４０は、要求４２がいつ受信されるかを示す時刻表４１を含む。要求のグループ４４は、いくつかの個別の要求４２を含む。モデル４０は、要求４２がコントラクトの条件を満たすように受信されなければならない一連のデッドラインを含む。要求間隔４３またはａは、システムの残り部分により要求が受信されなければならないデッドラインを示す。グループ内の要求毎に、要求は、式
ｎ＊ａ
により定められた時間前に到着しなければならないが、ただし、ｎは、グループ内の第１の要求後の順序通りの番号に対応する（例えば、第３の要求４２ｃはｎ＝２である）。第１の応答の到着時刻は、時刻０と定義できる。
【００１８】
要求４２ａ〜ｇを含む要求のグループ４４は、イニシエータ１１によりインターコネクト１３に送信される。イニシエータ１１は、要求のグループ４４を単一のターゲット１２に発行する。ＱｏＳコントラクトに従って、要求のグループ４４全体が、グループ内の要求件数よりも１つ少ない数に要求間隔ａ（４３）を掛けた時間内にシステムの残り部分により受信される。それぞれの個別要求は、ａに特定の要求の番号より１小さい数を掛けた時間前に受信される。例えば、第２の要求４２ｂは、時間１ａ前に受信され、第３の要求４２ｃは、時間２ａ前に受信される。これからわかるように、グループ４４内のそれぞれの個別要求は、ｎ＊ａ以下の時間内に到着し、ＱｏＳ到着モデルの条件は、要求グループ４４に関して満たされる。さらに、グループ４４内のそれぞれの個別要求は、到着デッドラインｎ＊ａの直前に到着することがわかるであろう。このような挙動は、電気通信やストリーミング・メディアなどのアプリケーションにはよくある、等時性データ生成プロセスに典型的なものである。
【００１９】
図４Ｂは、２つの要求グループを例示している。要求グループ４４が、２つの要求グループ５１、５２に分割されており、これは、要求４２ｄ〜ｄが４２ａ〜ｃとグループ化されたときに到着モデルの条件を満たさないため必要である。要求グループ５１が要求４２ａ〜ｃを含み、要求グループ５２が要求４２ｄ〜ｇを含む。到着モデルの条件を満たすためには、要求４２ｃは、要求４２ａが到着した後、２ａ前に到着しなければならない。同様に、到着モデルの条件を満たすためには、要求４２ｇは、要求４２ｄが到着した後、２ａ前に到着しなければならない。
【００２０】
図４Ｃは、受信された要求グループを例示している。要求グループ６１は、要求４２ａ〜ｇを含む。ＱｏＳモデルによれば、要求４２ｂは、時間ａよりも前に到着しなければならず、要求４２ｃは、時間２ａよりも前に到着しなければならず、というように続く。図４Ｃからわかるように、要求４２ｆは、要求４２ｆを受信するデッドラインが時間５ａであっても時間２ａよりも前に受信される。モデル６０は、イニシエータ１１が自由に要求を早めに送信できることを例示している。要求４２ｇは時間６ａよりも前に受信される。これからわかるように、第６の要求４２ｆが受信される時間と第７の要求４２ｇが受信される時間との間の大きなギャップがある。ただし、要求４２ａ〜ｇはすべて、ＱｏＳモデルに従って受信されるので、イニシエータ１１はコントラクトの条件を満たしている。
【００２１】
図５Ａ、５Ｂは、本発明の一実施形態によるサービス・モデルを例示する。図５Ａによれば、サービス・モデル７０は、要求４２ａ〜ｄを含む要求のグループ７１を含む。到着モデルによれば、グループ７１は時間３ａよりも前に受信されるであろう。時刻表７２は、特定の要求が処理される時間を示す。サービス・モデルによれば、要求のグループは、
Ｋ＋ｎ＊ｓ
に等しい時間よりも前に処理されなければならない。ここで、Ｋは定数項であり、ｓはサービス間隔である。Ｋ項は、コントラクトに含まれる項であり、要求のそれぞれのグループに適用される。Ｋ項により、ターゲット１２は、グループ７１を処理するための付加的時間を得ることができる。ターゲット１２は、要求グループ７１を処理するときにＫ項を望み通りに分割できる。Ｋ項は、初期待ち時間項とするか、あるいはＱｏＳユニット２７が望めばＱｏＳユニット２７により使用される。Ｋ項は、例えば、ターゲット１２に、他のイニシエータ１１からの要求を処理する時間を与えるためにも使用できる。一実施形態では、サービス間隔ｓは、到着間隔ａ以上の時間である。要求は、到着するまで処理できないので、サービス間隔ｓは、必ず、到着間隔ａ以上である。ａがｓよりも小さい場合、サービス・モデルは、ａがｓに等しいかのように振る舞う。一実施形態では、ａとｓを等しくすることが望ましい。サービス間隔ｓは、公称帯域幅項とみなすこともできる。その例では、簡単のため、Ｋ項はサービス間隔ｓに等しくなっている。しかし、サービス間隔ｓと無関係にどのようなＫ項を選択することも可能であることは理解できるであろうであろう。さらに、サービス項は、この例では、ｓ＝１．５ａの任意の値を与えることができる。
【００２２】
サービス・モデルによれば、４件の要求を含むグループ全体７１は、Ｋ＋ｎ＊ｓに等しい時間、つまりｓ＋３＊ｓ＝４ｓ（または６ａ）までに処理されなければならない。この例においてＫ項は値ｓを割り当てられることに注意すると、第１の要求４２ａは、ｓ＋０＊ｓ＝ｓなので時間ｓまでに処理されなければならない。同様に、第２の要求４２ｂは、ｓ＋１＊ｓ＝２ｓなので、時間２ｓまでに処理されなければならない。インターコネクト１３とターゲット１２では、ここでは、Ｋ項を使用して、第１の要求４２ａの処理を遅らせている。図５Ａからわかるように、それぞれの要求はそれぞれのデッドラインの前に処理されるので、グループ７１はこのモデルに従って処理されている。
【００２３】
図５Ｂは、グループ７１の他の処理方法を例示している。この例８０では、Ｋは値ｓを持つことに注意すると、第１と第２の要求４２ａ、４２ｂが時間ｓの前に処理される。第３の要求４２ｃは２ｓで処理され、第４の要求４２ｄは４ｓまで処理されない。第４と最後の要求は、このモデルに従って４ｓまで処理される必要はなく、ターゲット１２は第１の３件の要求４２ａ〜ｃを前に処理済みなので、ターゲット１２は、最終要求４２ｄを時間４ｓよりも前に処理できさえすれば、他の要求を自由に処理することができる。図５Ｂからわかるように、グループ７１はモデルに従って処理されている。
【００２４】
図６は、本発明の一実施形態による割当てカウントを例示する。割当てカウント９０は、スレッド毎にＱｏＳユニット２７内に保持することができる。割当てカウント９０は、特定のスレッドが処理されているかどうかを測定する。一実施形態では下記の３種類のスレッドがある。１）ターゲット１２の帯域幅の事前に割り当てられた部分内にとどまる限り、他のすべてのスレッドよりも高いサービスに対する優先度が与えられる高優先スレッド、２）ターゲット１２の帯域幅の部分を一般的に保証される帯域幅割り当てスレッド、３）ターゲット１２が処理すべき余分な帯域幅を持つ場合に処理されるベスト・エフォート・スレッド。割り当てられた帯域幅と優先スレッドは、割当てカウント９０を使用して監視される。割り当て目盛り９１は、特定のスレッドに発行されるクレジットの数を示す。割り当て目盛り９１は、正の限界値９２と負の限界値９３を持つ。これらの限界値について以下で説明する。
【００２５】
割当てカウント９０は、帯域幅割り当ての影響を受けるスレッド間の優先度を決定するために使用される（つまり、高優先スレッドと高帯域幅割り当てスレッド）。一般に、スレッドが処理していない場合、それは高優先スレッドが特定のターゲット１２のサービスを要求したからであることが多いが、割当てカウント９０が徐々に正になってゆく。逆に、スレッドが割り当てられた以上にサービスを受けている場合、その割当てカウントは負になる。負の割当てカウント９０は、そのスレッドの優先度を下げるために使用され、それにより他のスレッドがサービスを受ける機会を増やす。
【００２６】
規則正しい間隔で、割当てカウント９０がインクリメントされる。例えば、時刻０で、特定のスレッドの割当てカウント９０が０である。時刻ｔで、スレッドは１クレジットだけ発行される。したがって、スレッドがサービスを要求していなかった場合、割当てカウント９０は正になり、＋１のカウントになる。スレッドがサービスを受けると、クレジットは借方に付ける。例えば、時刻ｔに、スレッドがサービスを１回要求した場合、スレッドは時刻ｔに１クレジット受け取り（その正規のクレジット）、要求を履行させることによりそのクレジットを借方に付けさせたため、スレッドの割当てカウント９０は０になる。割当てカウントは負になる可能性がある。例えば、時刻ｔに、スレッドがすでにサービスを２回要求していて、スレッドが、単に、１つのクレジットを受け取って、借方に付けられた２クレジットを持つと、その結果割当てカウント９０は−１となる。
【００２７】
割当てカウント９０は、正の限界値９２と負の限界値９３を持つ。ここに示されているように、正の限界値９２は＋７クレジットであり、負の限界値９３は−７クレジットである。スレッドが長時間アイドル状態の場合、スレッドは余分なクレジットを蓄積する。その結果、スレッドがサービスの要求を再開しても、割当てカウント９０は、決して、０に戻ることはありえず、特定のスレッドは、常に、処理される。このような理由から、正の限界値９２が設定される。正の限界値が大きいと、他のイニシエータ１１のＱｏＳコントラクトを受け入れることが困難になるが、小さな正の限界値を使用するＱｏＳモデルは、インターコネクト１３により持ち込まれる要求到着ジッタを処理できない場合がある。さらに、ＱｏＳスキームとターゲットの挙動がサービス・ジッタを持ち込む場合、より高い正の限界値を保証できる。したがって、正の限界値の動的調整が必要である。
【００２８】
負の限界値９３も設定される。負の限界値９３は、スレッドが持つ処理される要求が多すぎないように、またスレッドが割り当てられた帯域幅を超しすぎないように保護する働きをする。これがその場合であれば、スレッドは、負の割当てカウント９０の結果として常に格下げされるため、長期間にわたってサービスを受け取らないことがある。それにより、負の限界９３は、サービス［ＤＥＷ３］ジッタを減らす。
【００２９】
図７は、割当てカウント９０を使用して特定のスレッドの優先度を設定する方法を例示する流れ図である。プロセス１００は、優先度を特定のスレッドに与えることについて説明している。この優先度は、ターゲット１２がスレッド２１をいつ処理するかを決定するために使用できる。ブロック１０１で、正の割り当てを持つスレッドからの要求があるかどうかを判定する。正の割り当ては、割当てカウント９０に関して説明されている手法を使用して決定され、累計される。正の割り当てを持つスレッドが見つかった場合、ブロック１０２で、正の割り当てを持つもののうちの最高優先度のスレッドが選択される。一実施形態によれば、最高優先度のスレッドは、高優先スレッドまたは最も正の割当てカウント９０を持つスレッドであるスレッドとすることができる。他の実施形態によれば、他の優先度システムを確立できる。
【００３０】
ブロック１０３では、正の割り当てを持つスレッドがない場合、最高優先度のスレッドが処理されるものとして選択される。上記のように、優先度は、サービスを、高優先度指定を持つスレッドに与えることを含む、異なる手法を使用して決定することができる。割り当て優先度は、ＱｏＳユニット２７に実装することができる。ＱｏＳユニット２７は、スレッドが最高優先度を持つと判定した後、そのスレッドが処理される。このプロセスは、将来のサービスのため続行する。
【００３１】
図８は、調節可能な正の限界値を使用する割当てカウントの動作を説明する流れ図である。正の限界値９２は、例えば、高優先スレッドがターゲット１２を独占している場合に調整する必要がある場合がある。ターゲット１２へアクセスする必要がある帯域幅割り当てスレッドは、高優先スレッドのため、長期間待機したままとされる場合がある。最終的に、帯域幅割り当てスレッドの割当てカウント９０は、正の限界値９２に到達する。しかし、帯域幅割り当てスレッドは、まだサービスされていない。いくつかの場合に、そのような状況において限界値９２を動的に高めることが望ましい場合があるが、それは、限界値が一定のままにされた場合、いくつかの場合に、ＱｏＳコントラクトの条件が満たされないことがあるからである。
【００３２】
プロセス１１０は、ターゲット１２により要求が処理される毎に、実行できる。ブロック１１１で、高優先スレッドからの高優先度要求は、その割り当てが正である間に、処理されたかどうかが判定される。要求が高優先スレッドから処理された場合、ブロック１１２で、すべての低優先度スレッドの正の限界値９２は、その割り当て率に比例する量だけ高められる。例えば、帯域幅割り当てスレッドが割り当て率５０％を持つ場合（つまり、スレッドは、特定のターゲット１２の帯域幅の５０％を割り当てられる）、限界値９２は、高優先スレッドにより消費されるクレジットの５０％だけ高められる。例えば、正の限界値９２は、一実施形態では、６とすることができる。高優先スレッドが２クレジット消費した場合、限界値は７に上げられるであろう。ブロック１１１に戻ると、高優先度要求が処理されなかった場合、プロセス１１０は、ブロック１１３に進む。
【００３３】
ブロック１１３では、割当てカウントが正である間、高優先度の要求がさらに割り当てを受け取ったかどうかが判定される。高優先スレッドの割当てカウントが、それが正の割当てカウントを持っている間に、増えた場合、これは、高優先スレッドがサービスを要求していないことを示す。高優先スレッドがサービスを要求していないため、低優先度スレッドがサービスを受け取ることができ、それにより、割当てカウント９０は下げられる。低優先度スレッドは処理されているか、またはサービスを要求していないかのいずれかであるが、いずれの場合も、正の限界値９２は、優先度を必要としないスレッドに優先度を与えることを避けるためにブロック１１４の通常に戻らなければならない。
【００３４】
本発明は、特定の実施形態を参照しつつ説明されている。しかし、この開示を利用する当業者にとっては、本発明の広範な精神と範囲から逸脱することなくそのようなさまざまな修正や変更をそれらの実施形態に加えられることは明白なことであろう。したがって、明細書および図面は、制限ではなく、例示することを目的としているものとみなすべきである。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施形態による例示的なシステム・オン・チップを示す図である。
【図２】本発明の一実施形態によりＱｏＳモデルを実装するシステムを示す図である。
【図３】本発明の一実施形態によりＱｏＳモデルを記述する流れ図である。
【図４】本発明の一実施形態による到着モデルを例示する図である。
【図５】本発明の一実施形態によるサービス・モデルを例示する図である。
【図６】本発明の一実施形態による割当てカウントを例示する図である。
【図７】割当てカウントを使用して特定のスレッドの優先度を設定する方法を例示する流れ図である。
【図８】調節可能な正の限界値を使用する割当てカウントの動作を説明する流れ図である。
【図１】
2007510229.tif 000003
【図２】
2007510229.tif 000004
【図３】
2007510229.tif 000005
【図４Ａ】
2007510229.tif 000006
【図４Ｂ】
2007510229.tif 000007
【図４Ｃ】
2007510229.tif 000008
【図５Ａ】
2007510229.tif 000009
【図５Ｂ】
2007510229.tif 000010
【図６】
2007510229.tif 000011
【図７】
2007510229.tif 000012
【図８】
2007510229.tif 000013
【国際調査報告】
2007510229.tif 000014
2007510229.tif 000015
2007510229.tif 000016
2007510229.tif 000017
2007510229.tif 000018