説明

バスアクセスアービトレーションスキーム

【課題】処理システムにおけるバスアービトレーションスキーム。
【解決手段】処理システムは、バス、バスに接続された複数のプロセッサ、及びバスアービタを含む。バスアービタは、第1の層内のプロセッサの各々に対して第1の層の重みを割り当て、第2の層内のプロセッサの各々に対して第2の層の重みを割り当てる。バスアービタは、割り当てられた第2の層の重みに基づいて、バス間隔の初期部分の間、1又は複数のプロセッサへバスアクセスを連続的に許可し、第1の層の重みを有するプロセッサのうちの何れか1つからの要求に応じて、バス間隔の初期部分の間、前記プロセッサのうちの何れか1つへのバスアクセスを許可する。複数のプロセッサがバスへのアクセスを要求する場合、バスアービタは、バスアクセスを要求するプロセッサのうち、最高次の層内の最も大きな重みを有するプロセッサへのバスアクセスを許可する。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、処理システムに関し、特に、処理システムにおけるバスアクセスアービトレーションスキームに関する。
【背景技術】
【0002】
コンピュータは、精妙な処理タスクを、ほんの2〜3ストロークキーパッドを操作するだけで実行することにより、エレクトロニクス産業界に革新をもたらした。これら精巧なタスクは、バスを使用して、高速かつ効率的な手法で互いと通信する、信じられないほど多くの複雑なコンポーネントを含んでいる。バスは、コンピュータ内の、あるいはその他の計算デバイス内のコンポーネント間のチャネル又は経路である。
【0003】
多くのバスは、伝統的に、共有バスとして実施されている。共有バスは、任意数のコンポーネントが共通の経路又はチャネルによって通信する手段を提供する。近年、共有バス技術は、ポイントトゥポイント交換接続に大部分が取って代わられている。ポイントトゥポイント交換接続は、2つのコンポーネントが互いに通信している間、これら2つのコンポーネント間の直接的な接続を提供する。多数の直接リンクが、幾つかのコンポーネントが同時通信することを可能にするために使用されうる。バスアービタは、バスを介した通信を管理するために使用されうる。
【0004】
バスアーキテクチャを実施するコンピュータは、メモリのような1又は複数の共有リソースに接続された任意の数の処理コンポーネントを含みうる。1又は複数のプロセッサ(バスマスタ)は、バスアービタからアクセスを要求することにより、バストランザクションを開始しうる。バスアービタは、プロセッサが、予め定めたアルゴリズムに基づいてバスへのアクセスが許可されるシーケンスを決定する。これらのトランザクションを管理するために、過去において、様々なバスアクセスアービトレーションスキームが実施された。かなり一般的なアプローチは、ラウンドロビンアービトレーションスキームである。これは、全ての処理コンポーネントにわたって帯域幅を等しく割り当てるが、レイテンシ要件の概念がない。別の一般的なアプローチは、固定優先度アービトレーションスキームである。これは、レイテンシ要件の概念が幾つかあるが、高帯域幅を必要とする低優先度プロセッサの品質をひどく下げる。時分割多重方式が、恐らく、ラウンドロビンアービトレーションスキームや、固定優先度ベースのアービトレーションスキームよりも優れた解決策である。しかしながら、特定のプロセッサがバスへのアクセスを必要とする時を予測するのは困難である。従って、当該技術分野においては、バスに関するプロセッサに対するレイテンシ要件を保持しながら、帯域幅割当を割り当てる能力を提供するバスアクセスアービトレーションスキームに対するニーズがある。
【発明の概要】
【0005】
本発明の1つの局面では、処理システムは、バスと、前記バスに接続された複数のプロセッサと、前記プロセッサのうち1又は複数の各々に対して、第2階層重みを割り当て、前記割り当てられた第2階層重みに基づいて、バス間隔の初期部分の間、前記1又は複数のプロセッサに対するバスアクセスを連続して許可するように構成されたバスアービタとを含む。バスアービタは更に、第1階層重みを有する前記プロセッサのうちの任意の1つからの要求に応じて、前記バス間隔の初期部分の間、前記プロセッサのうちの任意の1つに対するバスアクセスを許可するように構成されている。
【0006】
本発明の別の局面では、処理システムは、バスと、前記バスに接続された複数のプロセッサと、第1階層内の前記プロセッサの各々に対して、第1階層重みを割り当て、かつ、第2階層内の前記プロセッサの各々に対して、第2階層重みを割り当てるように構成されたバスアービタとを含む。バスアービタは更に、最高階層内に最高重みを有する、要求元のプロセッサへのバスアクセスを許可することによって、バスアクセスを要求する1又は複数のプロセッサの間をアービトレートするように構成される。ここで、第1階層は、第2階層よりも高次である。
【0007】
本発明の更なる局面では、バスへのアクセスを要求する複数のプロセッサの間をアービトレートする方法は、1又は複数のプロセッサの各々に第2階層重みを割り当てることと、前記割り当てられた第2階層重みに基づいて、バス間隔の初期部分の間、前記1又は複数のプロセッサへのバスアクセスを連続的に許可することと、第1階層重みを有する前記プロセッサのうちの任意の1つからの要求に応じて、前記バス間隔の初期部分の間、前記プロセッサの任意の1つに対するバスアクセスを許可することとを含む。
【0008】
また、本発明の更なる局面では、バスへのアクセスを要求する複数のプロセッサ間をアービトレートする方法は、第1階層内の前記プロセッサの各々に対して、第1階層重みを割り当てることと、第2階層内の前記プロセッサの各々に対して、第2階層重みを割り当てることと、最高階層内に最高重みを有する、要求元のプロセッサへのバスアクセスを許可することによって、バスアクセスを要求する1又は複数のプロセッサの間をアービトレートすることとを含む。ここで、第1階層は、第2階層よりも高次である。
【0009】
本発明の他の実施形態は、本発明の様々な実施形態が示され、例示によって説明されている以下の詳細記述から、当業者に容易に明らかになるであろうことが理解される。理解されるように、本発明は、本発明の精神及び範囲から逸脱することなく、その他及び異なる実施形態も可能であり、その幾つかの詳細を、その他様々な観点において修正することも可能である。従って、図面及び詳細説明は、本質的に例示的と見なされるべきであり、限定的と見なされるべきではない。
【図面の簡単な説明】
【0010】
【図1】図1は、処理システムの例を図示する概念ブロック図である。
【図2】図2は、様々なプロセッサのための高帯域幅要求をサポートできるバスアクセスアービトレーションスキームのタイミングを図示する概念図である。
【図3】図3は、様々なプロセッサのための高帯域幅要求をサポートできるバスアクセスアービトレーションスキームの動作を図示する概念図である。
【図4】図4は、様々なプロセッサのためのレイテンシ要求及び高帯域幅要求の両方をサポートできるバスアクセスアービトレーションスキームのタイミングを図示する概念図である。
【図5】図5は、様々なプロセッサのためのレイテンシ要求及び高帯域幅要求の両方をサポートできるバスアクセスアービトレーションスキームの動作を図示する概念図である。
【発明を実施するための形態】
【0011】
添付図面に関して記述した詳細説明は、本発明の様々な実施形態の記載として意図され、本発明が実現される唯一の実施形態を表わすようには意図されていない。この詳細説明は、本発明の完全な理解を提供する目的の具体的詳細を含んでいる。しかしながら、本発明はこれら具体的詳細がなくとも実現されうることが当業者に明白になるであろう。幾つかのインスタンスでは、周知の構成及びコンポーネントが、本発明の概念を不明瞭にしないために、ブロック図形式で示される。
【0012】
図1は、処理システムの例を図示する概念ブロック図である。処理システム100は、コンピュータ、コンピュータ内の常駐部分、あるいは、情報の処理、検索、格納が可能な任意の他のシステムでありうる。この処理システム100は、スタンドアロンシステムかもしれないか、あるいは、無線電話、携帯情報端末(PDA)、パーソナルコンピュータ(PC)、ラップトップ等のようなデバイスに組み込まれうる。
【0013】
処理システム100は、バス110を介してメモリ104にアクセスする幾つかのプロセッサ102a〜102cとともに示されているが、特定のアプリケーション及び、全体的な設計制約に依存して、任意の数のプロセッサを備えて構成されうる。プロセッサはそれぞれ、例えば、マイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、ビデオグラフィックスプロセッサ、モデムプロセッサ、あるいは、その他の情報処理コンポーネントを含む任意のタイプのバスマスタコンポーネントとして実現されうる。メモリ104は、メモリコントローラ、キャッシュ、スタックメモリ、あるいは、情報を検索及び格納できるその他任意のコンポーネントでありうる。
【0014】
バスアービタ108は、プロセッサ102a〜102cへのバスアクセスを許可するために使用されうる。バス110は、バス相互接続106を介するポイントトゥポイント交換接続で実施されうる。この構成では、バスアービタ108は、プロセッサのうちの1つとメモリ104との間の直接接続を提供するようにバス相互接続106を設定する。バス相互接続106内の多数の直接リンクは、他のプロセッサが、他のバススレーブデバイスと同時に通信することを可能にするために使用されうる。あるいは、バス110は、共有バスとして、あるいはその他任意のタイプのバスとして、バスアービタ108の制御の下で実施されうる。
【0015】
バスアービタ108は、プロセッサ102a〜102cによるバス110へのアクセスを管理するために使用されうる。バスアービタ108の1つの実施形態では、処理コンポーネント102a〜102cが、コマンドを、関連するプログラム命令及び/又はデータとともにバスアービタ108へブロードキャストしうる。バスアービタ108は、コマンド及び関連するプログラム命令とデータがメモリ104に提供されるシーケンスを決定し、それに従って、バス相互接続106を動的に設定する。バスアービタ108の別の実施形態では、プロセッサ102a〜102cは、バス110へのアクセスを要求し、バスアービタ108は、バス相互接続106を動的に再設定することによって、要求が許可されるシーケンスを決定しうる。何れの場合も、バスアービタ108は、バスアクセスアービトレーションスキームに基づいて、コマンドと、関連するプログラム命令及びデータがメモリ104に提供されるシーケンスを決定する。
【0016】
バスアクセスアービトレーションスキームは、様々なプロセッサ102a〜102cの機能要求に応じるために実施されうる。一例として、プロセッサは、ビデオグラフィックスプロセッサのような高帯域幅を要求するかもしれない。別のプロセッサは、音声通信を処理するDSPのような低レイテンシ通信を要求するかもしれない。また、別のプロセッサは、中央処理装置(CPU)処理インターネット電子メールのような帯域幅要求やレイテンシ要求を持たないかもしれない。後者の通信(帯域幅要求又はレイテンシ要求のないもの)は、しばしば「ベストエフォート」通信と呼ばれる。
【0017】
バスアクセスアービトレーションスキームは、レイテンシ要求を維持しながら、様々なプロセッサに帯域幅を割り当てるために使用されうる。これは、バス110へのアクセスが決定される多数の階層を生成することにより達成されうる。一例として、第1階層は、低レイテンシ要求をスケジュールするために使用され、第2階層は、高帯域幅要求をスケジュールするために使用され、第3階層は、レイテンシと帯域幅との点から重要ではないアプリケーションに使用されうる。プログラム可能か又は調整可能な重みが、2つの第1階層内の各プロセッサに割り当てられうる。割り当てられた重みは、バス110にアクセスするために費やすことができる「トークン」の数と見なされうる。各プロセッサに割り当てられた重みは、時間期間に基づいて周期的に再設定されうる。この期間は、2つの第1階層について同じであるか、あるいは異なりうる。
【0018】
第2階層のためのバスアクセスアービトレーションスキームについて先ず説明する。第2階層は、プロセッサ102が、必要とする帯域幅を受信することを保証するために使用されうる。これは、各プロセッサ102に、その帯域幅要求と釣り合った重みを割り当てることによって達成されうる。この重みは、与えられた時間期間中、プロセッサ102が、最低数のバスアクセス許可を受け取ることを保証するために使用されうる。あるいは、この重みは、プロセッサ102にデータビート又はバイトを割り当てるために使用されてもよい。重みは、変化する帯域幅要求に応じるために、プログラム可能又は調整可能でありうる。一例として、プロセッサ102は、多かれ少なかれ帯域幅を要求する新たなアプリケーションを始めるかもしれない。バスアービタ108は、そのプロセッサ102に割り当てられた重みを変えることによって応答するかもしれない。
【0019】
この重みは、処理システム100が最初に電源を入れたときに、バスアービタ108によって様々なプロセッサ102に割り当てられうる。起動中、バス110に接続され、帯域幅要求を持つ各プロセッサ102は、その要求をバスアービタ108に通信する。これらの通信に基づいて、バスアービタ108は、帯域幅の一部を各々に割り当てる。残りの帯域幅は、ベストエフォート通信に使用されうる。動作中、プロセッサ102が新たなアプリケーションを始めるか、又は、その帯域幅要求が変化すると、新たな重みが、そのプロセッサ102とバスアービタ108との間でネゴシエートされうる。
【0020】
図2は、第2階層のプロセッサのためのバスアクセスアービトレーションスキームのタイミングを図示する概念図である。バスアービタは、様々なプロセッサの帯域幅要求と、ベストエフォート通信をサポートする必要性とに基づいて、バス間隔202を決定する。バス間隔202は、帯域幅要求を変更することをサポートするために、プログラム可能かもしれないし、又は、調整可能かもしれない。バスアービタの少なくとも1つの実施形態では、バス間隔202は、2つの期間、すなわち、重み付けられた時間期間204と、ベストエフォート時間期間206に分割されうる。重み付けられた時間期間204中、バスに対するコンテンションは、最も高い重みを持つプロセッサにバスアクセスを許可することによって解決されうる。第2階層プロセッサがアクセスを要求していない場合、第3階層プロセッサは、重み付けられた時間期間204中、バスへのアクセスが許可されうる。バスへのアクセスが許可される毎に、第2階層プロセッサの各々の重みが減らされうる。第2階層プロセッサの各々に割り当てられた重みがゼロに減るまで、重み付けられた時間期間204は継続する。ベストエフォート時間期間206が、重み付けられた期間204の後に続き、バス間隔202の終了まで継続する。ベストエフォート期間206中、バスに対するコンテンションは、ラウンドロビン方法で解決されうる。
【0021】
図3は、第2階層プロセッサのためのバスアービトレーションスキームの動作を図示する概念図である。この例では、3つの第2階層プロセッサ(P、P、及びP)と、3つの第3階層プロセッサ(P、P、及びP)がある。バスアービタによって第2階層プロセッサに割り当てられた重みは、トークンと称されよう。第1のプロセッサPは、最も多い帯域幅を必要とし、バスアービタによって4つのトークンが割り当てられる。第2のプロセッサP、及び第3のプロセッサPは、より低い帯域幅のプロセッサであり、それぞれバスアービタによって、2及び1のトークンが割り当てられる。次の例は、全てのプロセッサが、バスへのアクセスを連続的に求めていると仮定する。
【0022】
図3に示すように、バスアクセスアービトレーションスキームは、バス間隔202の初めにおいて、重み付けられた時間期間204に入る。第1のタイムスロット301中のバスに対するコンテンションは、最も多いトークンを持つプロセッサへのアクセスを許可することによって解決される。これは、この場合、4つのトークンを持つ第1のプロセッサPである。第1のプロセッサPへのバスアクセスを許可すると、バスアービタは、第1のプロセッサのトークンを1減らし、3つのトークンが残る。第1のプロセッサPの残りの3つのトークンは、第2のタイムスロット302中に、バスへのアクセスを得るために十分である。バスアービタは、バスへのアクセスを許可した後、第1のプロセッサPからもう1つのトークンを取り、2つのトークンが残る。
【0023】
第3のタイムスロット303中におけるバスに対するコンテンションもまた、最も多いトークンを有するプロセッサへのアクセスを許可することによって解決される。しかしながら、この場合、第1のプロセッサP及び第2のプロセッサPともに、他の何れのプロセッサよりも多い2つのトークンを有する。バスアービタは、ラウンドロビンアービテーションスキームを適用して、これら2つのプロセッサの間をアービトレートしうる。第1のプロセッサPは、前のタイムスロット302においてバスへのアクセスが許可されているので、バスアービタは、現在のタイムスロット303の間、第2のプロセッサPへのアクセスを許可する。第2のプロセッサPへのバスアクセスを許可すると、バスアービタは、第2のプロセッサのトークンを1減らす。これによって、それには1つのみのトークンが残る。2つのトークンが残っている第1のプロセッサPは、第4のタイムスロット304の間に、バスアービタによってバスへのアクセスが許可され、この処理において1つのトークンを消耗する。
【0024】
第5のタイムスロット305の間、第2階層プロセッサP、P、Pはそれぞれ、1つのトークンを持っている。バスアービタは、ラウンドロビンアービトレーションスキームを用いて、バスへのアクセスをアービトレートしうる。この場合、現在のバス間隔202中、第1のプロセッサP及び第2のプロセッサPともにバスへアクセスした。現在のバス間隔202においてバスへ未だにアクセスしていない第3のプロセッサPにアクセスが許可されうる。第3のプロセッサPへバスアクセスを許可すると、バスアービタは、第3のプロセッサのトークンをゼロまで減らし、もって、第6のタイムスロット306において、第1のプロセッサPと第2のプロセッサPとが最も多くのトークンを持つようになる。バスアービタは、ラウンドロビンアービトレーションスキームを使い続け、次の2つのタイムスロット306,307において、第1のプロセッサPと第2のプロセッサPに対するメモリアクセスを任意の順番で許可する。これによって、第2階層プロセッサのための全てのトークンを使い切り、バス間隔202の重み付け時間期間204を終える。
【0025】
この重み付けタイムスロット204の後に、ベストエフォートタイムスロット206が続く。ベストエフォートタイムスロット206中、バスアービタは、ラウンドロビン方法で、バスへのアクセスを許可しうる。図3に示す例において、ベストエフォートタイムスロット206内に6つのタイムスロット308〜313が存在する。また、6つのプロセッサ、すなわち、トークンが使い果たされた3つの第2階層プロセッサP,P,Pと、3つの第3階層プロセッサP,P,Pとが存在する。従って、任意のラウンドロビンアービトレーションスキームの下では、プロセッサはそれぞれ、バスへのアクセスが一度許可されるべきである。その順番は必ずしも重要ではないが、ベストエフォートタイムスロット206が比較的短いのであれば、アクセスを保証するために、3つの第3階層プロセッサP,P,Pがバスへのアクセスが最初に許可されるべきである。図示する例では、第4のプロセッサPは、第8のタイムスロット308の間、バスへのアクセスが許可され、第5のプロセッサPは、第9のタイムスロット309の間、バスへのアクセスが許可され、第6のプロセッサPは、第10のタイムスロット310の間、バスへのアクセスが許可され、第1のプロセッサPは、第11のタイムスロット311の間、バスへのアクセスが許可され、第2のプロセッサPは、第12のタイムスロット312の間、バスへのアクセスが許可され、また、第3のプロセッサPは、第13のタイムスロット313の間、バスへのアクセスが許可される。
【0026】
第1階層バスアクセスアービトレーションスキームは、低いレイテンシ要求を有するプロセッサに応じるために、第2階層バスアクセスアービトレーションスキームへのオーバレイとして実施されうる。図1に戻って示すように、メモリ104への低レイテンシアクセスを要求するプロセッサ102は、バスアービタ108によって、第1階層に割り当てられうる。同じプロセッサ102が高帯域要求を持っている場合、同様に、第2階層の割り当てをも受け取るかもしれない。第2階層のバスアクセスアービトレーションスキームに関して記述されたものと類似した方法で、プログラム可能又は調整可能な重みが、バスアービタ108によって各第1階層プロセッサ102に割り当てられうる。プロセッサに割り当てられた重みは、与えられた時間期間の間、最低数のバスアクセス許可を受けることを保証するために使用される。プロセッサ要求が第1階層要求となるメカニズム又は時間におけるポイントは、この要求が、追加信号を介したアービタへの第1階層要求であることを示すプロセッサによって、あるいは、プロセッサの要求を、第1階層要求に高めるアービタ自身によって達成されうる。例えば、アービタは、マスタ要求がペンディングになり許可されていないクロックサイクルをカウントするレイテンシタイマを持っているかもしれない。一旦レイテンシタイマが、プログラム可能な値に達したか、又はそれを超えたならば、アービタは、プロセッサの要求を、第1階層に内部的に高めることができる。あるいは、重みは、時間期間の間、データビート又はバイトをプロセッサに割り当てるために使用されうる。この時間期間は、バス間隔と同じかもしれないし、異なるかもしれない。また、重みは、変化するレイテンシ要求に応じてプログラム可能又は調整可能でありうる。
【0027】
先ず、処理システム100の電源を入れると、バス110に接続され、レイテンシ要求を有する各プロセッサ102は、自己の要求をバスアービタ108に通信する。幾つかのインスタンスでは、プロセッサ102は、レイテンシ及び帯域幅の両方の要求をバスアービタ108に通信しうる。それらの通信に応じて、バスアービタは、バス110に接続された様々なプロセッサ102へ適切な第1階層及び第2階層の割り当てを行う。バスアービタ108は、また、第1階層及び第2階層プロセッサ102の各々に重みを割り当てる。動作中、プロセッサ102が新たなアプリケーションを始めるか、あるいは、そのレイテンシ要求が変化すると、1又は複数の階層について、プロセッサ102とバスアービタ108との間で新たな重みがネゴシエートされうる。
【0028】
図4は、図2の第2階層のバスアクセスアービトレーションスキーム上にオーバレイされた第1階層のバスアクセスアービトレーションスキームのタイミングを図示する概念図である。この例では、バスアービタは、様々な第1階層プロセッサのレイテンシ要求に基づいて、サービス品質間隔402を判定する。サービス品質間隔402は、変化するレイテンシ要求をサポートするためにプログラム可能又は調整可能でありうる。サービス品質間隔402の間、バスへのアクセスを要求する第1階層プロセッサは、第2及び第3階層の要求よりも高い優先度が与えられうる。2以上の第1階層プロセッサの間のバスに対するコンテンションは、最も高い重みを持つプロセッサへのアクセスを許可することによって解決されうる。各プロセッサの重みは、バスへのアクセスが許可される毎に減らされる。第1階層プロセッサの重みが0に達する場合、現在のサービス品質間隔402である間、バスアービタによって、第1階層バスアクセス要求は、それ以上認められないだろう。第1階層プロセッサの重みは、各サービス品質間隔402の初めにおいて、バスアービタによって、そのオリジナルの割当値に再設定されるだろう。サービス品質間隔402は、バス間隔202と同じかもしれないし、あるいは異なるかもしれない。これら2つの間隔が異なる場合、バス間隔202はサービス品質間隔402より長いかもしれないか、またより短いかもしれない。また、2つの時間期間は互いの倍数かもしれないし、そうではないかもしれない。図4に示す例において、バス間隔202は、サービス品質間隔402より3倍長い。
【0029】
図5は、図3の第2のバスアクセスアービトレーションスキーム上にオーバレイされた第1階層バスアクセスアービトレーションスキームの動作を図示する概念図である。この例では、2つの第1階層プロセッサ(P,P)、3つの第2階層プロセッサ(P,P,P),及び、3つの第3階層プロセッサ(P,P,P)がある。第2のプロセッサPは、レイテンシ要求と高帯域要求との両方を有しており、従って、第1階層及び第2階層の割り当てがある。第1のプロセッサPは、第1階層の割当を有する低レイテンシプロセッサであり、第3及び第4のプロセッサ(P及びP)は、第2階層の割当を有する高帯域プロセッサである。残りのプロセッサ(P,P,及びP)は、特定のレイテンシ要求も帯域幅要求も持たないベストエフォートプロセッサである。
【0030】
バスアービタによって第1階層及び第2階層プロセッサに割り当てられた重みは、トークンと呼ばれるだろう。第1のプロセッサPは、第1階層のトークンが2つ割り当てられ、第2のプロセッサPは、第1階層のトークン1つと、第2階層のトークン2つとが割り当てられ、第3のプロセッサPは、第2階層のトークン3つが割り当てられ、第4のプロセッサPは、第2階層のトークン1つが割り当てられる。
【0031】
バスアービタは、先ず、サービス品質間隔402に、5つのタイムスロットを設定し、バス間隔202に15のタイムスロットを設定する。第1のプロセッサPは、第3,第4,第12,及び第13番目のタイムスロット503,504,512,及び513の間、バスアクセスを求める第1階層要求を行っていることが示される。第2のプロセッサPは、第3乃至第6番目のタイムスロット503〜506と、第12乃至第14番目のタイムスロット512〜514の間、バスアクセスを求める第1階層要求を行っていることが示される。図示していないが、全てのプロセッサは、バスアクセスを求める要求を連続的に行っている。
【0032】
バスアクセスアービトレーションスキームは、バス間隔202の初めにおいて、重み付け時間期間204に入る。第1のタイムスロット501中、バスに対するコンテンションは、最も多くのトークンを有する第2階層プロセッサへのアクセスを許可することによって解決される。それは、この場合、3つのトークンを有する第3のプロセッサPである。第3のプロセッサPへのバスアクセスを許可すると、バスアービタは、第3のプロセッサの第2のトークンを1減らす。これによって、第3のプロセッサには、第2階層のトークンが2つ残る。
【0033】
第2のタイムスロット502中におけるバスに対するコンテンションは、最も多いトークンを有する第2階層プロセッサへのバスアクセスを許可することにより、同様に解決されうる。しかしながら、この場合、第2のプロセッサPと第3のプロセッサPは両方とも、第2階層の他のどのプロセッサよりも多い2つのトークンを持つ。バスアービタは、ラウンドロビンアービトレーションスキームを適用して、2つのプロセッサ間のアービトレートを行う。第3のプロセッサPは、前のタイムスロット501の間にバスへのアクセスが許可されたので、バスアービタは、現在のタイムスロット502の間に、第2のプロセッサPへのバスアクセスを許可する。第2のプロセッサPへのバスアクセスを許可すると、バスアービタは、第2のプロセッサの第2階層のトークンを1減らす。これによって、第2のプロセッサには、第2階層のトークンが1つ残る。
【0034】
第3のタイムスロット503の間、第1のプロセッサPと第2のプロセッサPとの両方が、バスにアクセスするための第1階層要求を行う。第1階層要求に優先度を与えるように構成されているバスアービタは、この場合、第1のプロセッサPと第2のプロセッサPとの間をアービトレートしなければならない。第1のプロセッサPは、第2のプロセッサPよりも、第1階層のトークンを多く持つので、バスアービタは、第1のプロセッサPへバスアクセスを許可する。第1のプロセッサPへのバスアクセスを許可すると、バスアービタは、第1のプロセッサの第1階層のトークンを1減らす。これによって、第1のプロセッサには、第1階層のトークンが1つ残る。
【0035】
次のタイムスロット504の間、第1のプロセッサPと第2のプロセッサPとはともに、バスへのアクセスを求める第1階層要求を繰り返し行う。しかしながら、この時、第1のプロセッサPと第2のプロセッサPとはそれぞれ第1階層のトークンを同じだけ持つので、バスアービタは、ラウンドロビンアービトレーションスキームを用いて、2つのプロセッサ間をアービトレートする。第1のプロセッサPは、前のタイムスロット503においてバスへのアクセスが許可されたので、バスアービタは、第2のプロセッサPへのバスアクセスを許可しうる。第2のプロセッサPへのアクセスを許可すると、バスアービタは、第2のプロセッサの第1階層のトークンを1減らす。これによって、第2のプロセッサには、第1階層のトークンが0になる。
【0036】
第5のタイムスロット505中に、第2のプロセッサPによって繰り返しなされた第1階層の要求は、バスアービタによって拒否されうる。なぜなら、第2のプロセッサPは、その第1階層のトークンを全て使い果たしているからである。代わりに、バスアービタは、最も多くのトークンを有する第2階層のプロセッサへのバスアクセスを許可する。この場合、そのプロセッサは、第2階層のトークンを2つ有する第3のプロセッサPである。第3のプロセッサPへのバスアクセスを許可すると、バスアービタは、第3のプロセッサの第2階層のトークンを1減らす。これによって、第3のプロセッサには、第2階層のトークンが1つ残る。
【0037】
新たなサービス品質間隔402は、第6のタイムスロット506の初めから始まる。バスアービタは、第1階層のプロセッサのそれぞれに、適切な数のトークンを再設定する。レイテンシ要求に変化がないと仮定すると、バスアービタは、第1のプロセッサの第1階層のトークンを2に、第2のプロセッサの第1階層のトークンを1に増やす。バスアービタは、今、第6のタイムスロット503中、第1階層の要求に応じて、第2のプロセッサPへのバスアクセスを許可することができる。第2のプロセッサP2へのバスアクセスが許可されると、バスアービタは、第2のプロセッサの第1階層のトークンを1減らす。これによって、第2のプロセッサには、第1階層のトークンが0個残る。その結果、次のサービス品質間隔402まで、第2のプロセッサPは、第1階層要求に応じて、バスへのいかなる更なるアクセスも許可されないだろう。
【0038】
第7のタイムスロット507中、第2階層プロセッサP,P、及びPはそれぞれ1つのトークンを持っている。バスアービタは、ラウンドロビンスキームを用いて、3つのプロセッサ間のバスアクセスをアービトレートしうる。この場合、第2のプロセッサPと第3のプロセッサPとの両方は、現在のバス間隔202中、第2階層要求に応じて、バスにアクセスしている。現在のバス間隔202においてバスへ未だにアクセスしていない第4のプロセッサP4が、アクセス許可されうる。第4のプロセッサPへのバスアクセスを許可すると、バスアービタは、第4のプロセッサの第2階層のトークンをゼロに減らし、第2のプロセッサPと第3のプロセッサPとが、第8のタイムスロット508において、第2階層のトークンを最も多く持つようになる。バスアービタは、ラウンドロビンアービトレーションスキームを使用し続け、以下2つのタイムスロット508,509において、第2のプロセッサP及び第3のプロセッサPへのメモリアクセスを任意の順序で許可する。これによって、第2階層のプロセッサの第2階層の全てのトークンを使い果たし、バス間隔204の重み付け時間期間204を終える。
【0039】
この重み付け時間期間204の後に、ベストエフォート時間期間206が続く。ベストエフォート時間期間206の間、バスアービタは、ラウンドロビン方式でバスへのアクセスを許可しうる。図5に示す例では、第5のプロセッサP及び第6のプロセッサPは、第10のタイムストット510及び第11のタイムスロット511それぞれの間、バスアービタによってメモリへのアクセスが許可されうる。あるいは、ベストエフォート時間期間206の最初の2つのタイムスロット510,511の間、プロセッサのいかなる他の組み合わせもバスアクセスが許可されうる。
【0040】
第3のサービス品質間隔402は、第11のタイムスロット511の初めにおいて始まり、第1のプロセッサP及び第2のプロセッサPは、適切な数の第1階層のトークンに再設定される。これらプロセッサのレイテンシ要求が変化していないと再び仮定すると、第1のプロセッサの第1階層のトークンは2であり、第2のプロセッサの第1階層のトークンは1に増加されるだろう。図5に示すように、これらのプロセッサは両方とも、第12のタイムスロット512中、メモリへのアクセスを求める第1階層要求を行う。これらの要求に応じて、バスアービタは、その時間スロット512の間、第1階層のトークンを最も多く有する第1のプロセッサPへのバスアクセスを許可する。第1のプロセッサPへのバスアクセスを許可すると、バスアービタは、第1のプロセッサの第1階層のトークンを1減らす。これによって、第1のプロセッサには、第1階層のトークンが1つ残る。
【0041】
第13のタイムスロット513の間、第1のプロセッサPと第2のプロセッサPはともに、メモリへのアクセスを求める第1階層要求を繰り返し行う。しかしながら、この時、第1のプロセッサP及び第2のプロセッサPは、第1階層のトークンを同数持っている。従って、バスアービタは、ラウンドロビンアービトレーションスキームを用いて、そのタイムスロット513中に、第2のプロセッサPに対するメモリアクセスを許可しうる。第2のプロセッサPへのバスアクセスを許可すると、バスアービタは、第2のプロセッサの第1階層のトークンを1減らす。これによって、第2のプロセッサには、第1階層のトークンが0個残る。
【0042】
第14のタイムスロット514の間、第2のプロセッサPによって繰り返しなされた第1階層要求は、バスアービタによって拒否されうる。なぜなら、第2のプロセッサPは、その第1階層のトークンを全て使い果たしているからである。代わりに、バスアービタは、ラウンドロビンアービトレーションスキームを用いて、第14のタイムスロット514において第7のプロセッサPへ、第15のタイムスロット515において第1のプロセッサPへのバスアクセスを許可し、ベストエフォート通信をサポートする。これら2つのタイムスロット514,515においては、その他の組み合わせからなるバスアクセス許可も可能である。第15のタイムスロット515の終わりにおいて、新たなバス間隔、及び新たなサービス品質間隔が始まる。バスアービタは、各プロセッサについて、第1の階層のトークン及び第2階層のトークンを再設定する。そして、上述した処理が繰り返される。
【0043】
ここで開示された実施形態に関連して記述された様々の説明的論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、アプリケーションに固有の集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)あるいはその他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェア部品、又は上述された機能を実現するために設計された上記何れかの組み合わせを用いて実現又は実行されうる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、あるいは状態機器を用いることも可能である。プロセッサは、たとえばDSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアに接続された1つ以上のマイクロプロセッサ、またはこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
【0044】
ここで開示された実施形態に関連して記述された方法やアルゴリズムは、ハードウェアや、プロセッサによって実行されるソフトウェアモジュールや、これらの組み合わせによって直接的に具現化される。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、あるいは当該技術分野で知られているその他の型式の記憶媒体に収納されうる。記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに接続される。または、記憶媒体はプロセッサに統合されうる。
【0045】
開示された実施形態における上述の記載は、当該技術分野におけるいかなる人であっても、本発明の活用または利用を可能とするように提供される。これらの実施形態への様々な変形例もまた、当該技術分野における熟練者に対しては明らかであって、ここで定義された一般的な原理は、本発明の主旨または範囲を逸脱せずに他の実施形態にも適用されうる。このように、本発明は、ここで示された実施形態に制限されるものではなく、特許請求の範囲と整合のとれた全範囲に相当するものを意図しており、単数形の要素への参照は、「1又は複数」と具体的に述べられていないのであれば、「1及び1のみ」を意味するようには意図されていない。当業者に周知であるか、本開示全体を通じて記述され、後に周知になる様々な実施形態の構成要件と等価な全ての構成及び機能は、参照によって本明細書に明確に組み込まれており、特許請求の範囲に含まれていることが意図される。更に、そのような開示が特許請求の範囲に明示的に記述されているか否かに関わらず、本明細書で開示されている何れも、公衆に放棄されることを意図していない。特許請求の範囲の構成要件が、「〜する手段」(means for)という文言を用いて、また、方法発明の場合には「〜するステップ」(step for)という文言を用いて明確に記述されていなければ、何れの構成要件も、35U.S.C 112条第6パラグラフの条件の下で解釈されるものではない。

【特許請求の範囲】
【請求項1】
処理システムであって、
バスと、
前記バスに接続された複数のプロセッサと、
前記プロセッサの1又は複数の各々に第2の層の重みを割り当て、前記割り当てられた第2の層の重みに基づいて、バス間隔の初期部分の間、前記1又は複数のプロセッサに対するバスアクセスを連続的に許可するように構成されたバスアービタとを備え、
前記バスアービタは更に、第1の層の重みを有する前記プロセッサのうちの何れか1つからの要求に応じて、前記バス間隔の初期部分の間、前記プロセッサのうちの何れか1つへのバスアクセスを許可する処理システム。
【請求項2】
前記バスアービタは更に、前記バス間隔の初期部分の後である前記バス間隔の残りの部分の間、前記プロセッサのうちの何れか1つからの要求に応じて、前記プロセッサのうちの何れか1つに対するバスアクセスを許可するように構成された請求項1に記載の処理システム。
【請求項3】
前記バスアービタは更に、ラウンドロビンスキームに基づいて、前記バス間隔の残りの部分の間、前記プロセッサのうちの何れか1つへのバスアクセスを許可するように構成された請求項2に記載の処理システム。
【請求項4】
前記バスアービタは更に、前記バス間隔の持続時間を調整するように構成された請求項1に記載の処理システム。
【請求項5】
前記バスアービタは更に、前記1又は複数のプロセッサのうち、第2の層の最も大きな重みを持つプロセッサへのバスアクセスを許可し、かつ、バスアクセスが許可された後、そのプロセッサの第2の層の重みを減らすように構成された請求項1に記載の処理システム。
【請求項6】
前記1又は複数のプロセッサの各々の第2の層の重みがゼロまで減った場合、前記バス間隔の初期部分が終了する請求項5に記載の処理システム。
【請求項7】
前記バスアービタは更に、前記バス間隔の各々の開始において、前記1又は複数のプロセッサの各々について前記第2の層の重みを設定するように構成された請求項6に記載の処理システム。
【請求項8】
前記第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサによって、前記バス間隔の間に要求されたバスアクセス許可の数を含む請求項1に記載の処理システム。
【請求項9】
前記第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサによって、前記バス間隔の間に要求されたデータビートの数を含む請求項1に記載の処理システム。
【請求項10】
前記バスアービタは更に、前記プロセッサのうち、第1の層の重みを有する何れかの各々に対して、サービス間隔のクオリティの開始において、前記第1の層の重みを設定するように構成された請求項1の記載の処理システム。
【請求項11】
前記サービス間隔のクオリティの持続時間は、前記バス間隔の持続時間と同じである請求項10に記載の処理システム。
【請求項12】
前記サービス間隔のクオリティの持続時間は、前記バス間隔の持続時間とは異なる請求項10に記載の処理システム。
【請求項13】
前記バスアービタは更に、前記プロセッサのうち、前記バスへのアクセスが許可された何れか1つの第1の層の重みを減らすように構成された請求項10に記載の処理システム。
【請求項14】
前記バスアービタは更に、前記サービス間隔のクオリティの持続時間を調整するように構成された請求項10に記載の処理システム。
【請求項15】
処理システムであって、
バスと、
前記バスに接続された複数のプロセッサと、
第1の層内の前記プロセッサの各々に第1の層の重みを割り当て、かつ、第2の層内の前記プロセッサの各々に第2の層の重みを割り当てるように構成されたバスアービタとを備え、
前記第1の層は、前記第2の層よりも高次であって、前記バスアービタは更に、バスアクセスを要求するプロセッサのうち、最高次の層内で最も大きい重みを持つプロセッサへのバスアクセスを許可することによって、前記バスアクセスを要求する1又は複数のプロセッサの間をアービトレートするように構成された処理システム。
【請求項16】
前記バスアービタは更に、前記バスアクセスが許可されたプロセッサに対して、適切な層における重みを減らすように構成された請求項15に記載の処理システム。
【請求項17】
前記プロセッサは更に、サービス間隔のクオリティの開始において、前記第1の層内のプロセッサの各々に対して、前記第1の層の重みを設定し、かつ、バス間隔の開始において、前記第2の層内のプロセッサの各々に対して、前記第2の層の重みを設定するように構成された請求項16に記載の処理システム。
【請求項18】
前記サービス間隔のクオリティの持続時間は、前記バス間隔の持続時間と同じである請求項17に記載の処理システム。
【請求項19】
前記サービス間隔のクオリティの持続時間は、前記バス間隔の持続時間とは異なる請求項17に記載の処理システム。
【請求項20】
前記バスアービタは更に、前記バス間隔、及び前記サービス間隔のクオリティの持続時間を調整するように構成された請求項17に記載の処理システム。
【請求項21】
前記第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサによって、前記バス間隔の間に要求されるバスアクセス許可の数を含む請求項17に記載の処理システム。
【請求項22】
前記第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサによって、前記バス間隔の間に要求されたデータビートの数を含む請求項17に記載の処理システム。
【請求項23】
前記第2の層内のプロセッサの各々に割り当てられた第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサの帯域幅に関連する請求項15に記載の処理システム。
【請求項24】
前記バスアービタは更に、前記バスへのアクセスを要求するプロセッサの何れもが第1の層の重み又は第2の層の重みを有していないのであれば、前記要求する1又は複数のプロセッサのうちの1つへのバスアクセスをラウンドロビン方式で許可することによって、前記バスへのアクセスを要求する1又は複数のプロセッサの間をアービトレートするように構成された請求項15に記載の処理システム。
【請求項25】
前記1又は複数のプロセッサは、第1の層と第2の層との両方にある請求項15に記載の処理システム。
【請求項26】
バスへのアクセスを要求する複数のプロセッサの間をアービトレートする方法であって、
前記1又は複数のプロセッサの各々に第2の層の重みを割り当てることと、
前記割り当てられた第2の層の重みに基づいて、バス間隔の初期部分の間、前記1又は複数のプロセッサへバスアクセスを連続的に許可することと、
第1の層の重みを有する何れか1つのプロセッサからの要求に応じて、前記バス間隔の初期部分の間、前記プロセッサのうちの何れか1つにバスアクセスを許可することと
を備える方法。
【請求項27】
前記バス間隔の初期部分の後である前記バス間隔の残りの部分の間、前記プロセッサのうちの何れか1つからの要求に応じて、前記プロセッサのうちの何れか1つに対するバスアクセスを許可することを更に備える請求項26に記載の方法。
【請求項28】
前記バス間隔の残りの部分の間、前記プロセッサのうちの何れか1つへのバスアクセスを許可することは、ラウンドロビンスキームに基づく請求項27に記載の方法。
【請求項29】
前記バス間隔の持続時間を調整することを更に備える請求項26に記載の方法。
【請求項30】
前記1又は複数のプロセッサのうち、前記第2の層の最も大きい重みを持つプロセッサへバスアクセスが許可され、
前記方法は更に、バスアクセスが許可された後、そのプロセッサの第2の層の重みを減らすことを備える請求項26に記載の方法。
【請求項31】
前記1又は複数のプロセッサの各々の第2の層の重みがゼロまで減った場合、前記バス間隔の初期部分が終了する請求項30に記載の方法。
【請求項32】
前記バス間隔の各々の開始において、前記1又は複数のプロセッサの各々について前記第2の層の重みを設定することを更に備える請求項31に記載の方法。
【請求項33】
前記第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサによって、前記バス間隔の間に要求されたバスアクセス許可の数を含む請求項26に記載の方法。
【請求項34】
前記第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサによって、前記バス間隔の間に要求されたデータビートの数を含む請求項26に記載の方法。
【請求項35】
前記プロセッサのうち、第1の層の重みを有する何れかの各々に対して、サービス間隔のクオリティの開始において、前記第1の層の重みを設定することを更に備える請求項26に記載の方法。
【請求項36】
前記サービス間隔のクオリティの持続時間は、前記バス間隔の持続時間と同じである請求項35に記載の方法。
【請求項37】
前記サービス間隔のクオリティの持続時間は、前記バス間隔の持続時間とは異なる請求項35に記載の方法。
【請求項38】
前記プロセッサのうち、前記メモリへのアクセスが許可された何れか1つの第1の層の重みを減らすことを更に備える請求項35に記載の方法。
【請求項39】
前記サービス間隔のクオリティの持続時間を調整することを更に備える請求項35に記載の方法。
【請求項40】
バスへのアクセスを要求する複数のプロセッサの間をアービトレートする方法であって、
第1の層内の前記プロセッサの各々に第1の層の重みを割り当てることと、
第2の層内の前記プロセッサの各々に第2の層の重みを割り当てることと、
前記第1の層は、前記第2の層よりも高次であって、バスアクセスを要求するプロセッサのうち、最高次の層内で最も大きい重みを持つプロセッサへのバスアクセスを許可することによって、前記バスアクセスを要求する1又は複数のプロセッサの間をアービトレートすることと
を備える方法。
【請求項41】
前記バスアクセスが許可されたプロセッサに対して、適切な層における重みを減らすことを更に備える請求項40に記載の方法。
【請求項42】
サービス間隔のクオリティの開始において、前記第1の層内のプロセッサの各々に対して、前記第1の層の重みを設定することと、
バス間隔の開始において、前記第2の層内のプロセッサの各々に対して、前記第2の層の重みを設定することと
を更に備える請求項41に記載の方法。
【請求項43】
前記サービス間隔のクオリティの持続時間は、前記バス間隔の持続時間と同じである請求項42に記載の方法。
【請求項44】
前記サービス間隔のクオリティの持続時間は、前記バス間隔の持続時間とは異なる請求項42に記載の方法。
【請求項45】
前記バス間隔、及び前記サービス間隔のクオリティの持続時間を調整することを更に備える請求項42に記載の方法。
【請求項46】
前記第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサによって、前記バス間隔の間に要求されたバスアクセス許可の数を含む請求項42に記載の方法。
【請求項47】
前記第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサによって、前記バス間隔の間に要求されたデータビートの数を含む請求項42に記載の方法。
【請求項48】
前記第2の層内のプロセッサの各々に割り当てられた第2の層の重みは、前記第2の層の重みが割り当てられたプロセッサの帯域幅に関連する請求項40に記載の方法。
【請求項49】
前記バスへのアクセスを要求するプロセッサの何れもが第1の層の重み又は第2の層の重みを有していないのであれば、前記要求する1又は複数のプロセッサの間のアービトレーションが、ラウンドロビン方式で行われる請求項40に記載の方法。
【請求項50】
前記第1の層内のプロセッサの各々に第1の層の重みを割り当てることと、前記第2の層内のプロセッサの各々に第2の層の重みを割り当てることとは、前記プロセッサのうちの同じ1つに対して第1の重みと第2の重みとを割り当てることを備える請求項40に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−187069(P2011−187069A)
【公開日】平成23年9月22日(2011.9.22)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−89948(P2011−89948)
【出願日】平成23年4月14日(2011.4.14)
【分割の表示】特願2007−558230(P2007−558230)の分割
【原出願日】平成18年3月1日(2006.3.1)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】