(57)【要約】  一実施形態では、スイッチは、相互接続に結合されるように構成される。スイッチは、複数の記憶域及び複数の記憶域に結合されたアービタ制御回路を備える。複数の記憶域は、複数のエージェントにより送信された複数の要求を格納するように構成される。アービタ制御回路は、複数の記憶域に格納されている複数の要求の間のアービトレーションを行うように構成される。選択された要求は、アービトレーションの勝者であり、スイッチは、選択された要求を複数の記憶域のうちの１つから相互接続上に送信するように構成される。他の実施形態では、システムは、複数のエージェント、相互接続、エージェントと相互接続とに結合されたスイッチを備える。他の実施形態では、方法が考察される。
2009514065.tif 000002
【特許請求の範囲】
【請求項１】
相互接続に結合するように構成されたスイッチであって、
複数のエージェントにより送信された複数の要求を格納するように構成される、複数の記憶域と、
前記複数の記憶域に結合され、前記複数の記憶域に格納される前記複数の要求のアービトレーションを行うように構成されたアービタ制御回路と
を備え、前記スイッチは、選択された要求を前記複数の記憶域のうちの１つから前記相互接続上に送信するように構成され、前記選択された要求は、前記アービトレーションの勝者であるスイッチ。
【請求項２】
前記複数の記憶域は、複数のキューを含み、前記複数のキューはそれぞれ、前記複数のエージェントのうちのそれぞれ１つのエージェントに対応し、前記それぞれのエージェントにより送信される要求を格納するように構成され、前記複数のキューはそれぞれ、前記複数の記憶域のうちの少なくとも２つを含む請求項１に記載のスイッチ。
【請求項３】
前記アービタ制御回路は、第２の要求を選択する前に前記複数のエージェントのうちの第１のエージェントにより送信された第１の要求を選択された要求として選択するように構成され、前記第２の要求は、前記第１の要求よりも先に前記第１のエージェントにより送信される請求項１に記載のスイッチ。
【請求項４】
それぞれの要求は、対応する優先度を有し、前記アービタ制御回路は、前記第１の要求が前記第２の要求よりも高い優先度である場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成される請求項３に記載のスイッチ。
【請求項５】
前記アービタ制御回路は、一組の順序付け規則に従って前記第１及び第２の要求が順序変更可能である場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成され、前記アービタ制御回路は、前記第１の要求が前記第２の要求よりも高い優先度である場合でも前記一組の順序付け規則に従って前記第１及び第２の要求が順序変更可能でない場合に、前記第２の要求よりも前に前記第１の要求を選択しないように構成される請求項３に記載のスイッチ。
【請求項６】
前記第１のエージェントは、前記第１の要求が前記第２の要求により順序変更可能であるかどうかを示す前記第１の要求による指示を送信するように構成され、前記アービタ制御回路は、前記第１の要求が前記第２の要求により順序変更可能であることを前記指示が示す場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成される請求項５に記載のスイッチ。
【請求項７】
前記アービトレーション制御回路は、前記複数の要求のうちのそれぞれの要求に対してターゲット・エージェントを決定するように構成され、前記複数の要求のうちの１つの要求が、前記要求の前記ターゲット・エージェントに基づいてブロックされる場合に、前記アービタ制御回路は、他のターゲット・エージェントへの他の要求を前記選択された要求として選択するように構成される請求項１に記載のスイッチ。
【請求項８】
前記アービタ制御回路は、前記複数の要求のうちのそれぞれのアドレスの一部を復号化し、それぞれの要求に対する前記ターゲット・エージェントを決定するように構成される請求項６に記載のスイッチ。
【請求項９】
前記相互接続は、アドレス相互接続である請求項１に記載のスイッチ。
【請求項１０】
前記相互接続は、データ相互接続である請求項１に記載のスイッチ。
【請求項１１】
複数のエージェントと、
相互接続と、
前記複数のエージェント及び前記相互接続に結合されたスイッチと
を備え、前記スイッチは、複数の記憶域を備え、前記複数の記憶域は、前記スイッチに前記複数のエージェントにより送信された複数の要求を格納するように構成され、前記スイッチは、前記複数の記憶域内に格納されている前記複数の要求のアービトレーションを行うように構成され、前記スイッチは、前記相互接続上で選択された要求を送信するように構成され、前記選択された要求は、前記アービトレーションの勝者であるシステム。
【請求項１２】
前記複数の記憶域は、複数のキューを含み、前記複数のキューはそれぞれ、前記複数のエージェントのうちのそれぞれ１つのエージェントに対応し、前記それぞれのエージェントにより送信される要求を格納するように構成され、前記複数のキューはそれぞれ、前記複数の記憶域のうちの少なくとも２つを含む請求項１１に記載のシステム。
【請求項１３】
前記スイッチは、第２の要求を選択する前に前記複数のエージェントのうちの第１のエージェントにより送信された第１の要求を選択された要求として選択するように構成され、前記第２の要求は、前記第１の要求よりも先に前記第１のエージェントにより送信される請求項１１に記載のシステム。
【請求項１４】
それぞれの要求は、対応する優先度を有し、前記スイッチは、前記第１の要求が前記第２の要求よりも高い優先度である場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成される請求項１３に記載のシステム。
【請求項１５】
前記スイッチは、一組の順序付け規則に従って前記第１及び第２の要求が順序変更可能である場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成され、前記スイッチは、前記第１の要求が前記第２の要求よりも高い優先度である場合でも、前記一組の順序付け規則に従って前記第１及び第２の要求が順序変更可能でない場合に、前記第２の要求よりも前に前記第１の要求を選択しないように構成される請求項１３に記載のシステム。
【請求項１６】
前記第１のエージェントは、前記第１の要求が前記第２の要求により順序変更可能であるかどうかを示す前記第１の要求による指示を送信するように構成され、前記スイッチは、前記第１の要求が前記第２の要求により順序変更可能であることを前記指示が示す場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成される請求項１５に記載のシステム。
【請求項１７】
前記スイッチは、前記複数の要求のうちのそれぞれの要求に対して前記複数のエージェントのうちの１つのターゲット・エージェントを決定するように構成され、前記複数の要求のうちの１つの要求が、前記要求の前記ターゲット・エージェントに基づいてブロックされる場合に、前記スイッチは、他のターゲット・エージェントへの他の要求を前記選択された要求として選択するように構成される請求項１１に記載のシステム。
【請求項１８】
前記スイッチは、前記複数の要求のうちのそれぞれの要求のアドレスの一部を復号化し、前記要求に対する前記ターゲット・エージェントを決定するように構成される請求項１７に記載のシステム。
【請求項１９】
前記相互接続は、前記スイッチと前記相互接続上で要求を受け取る前記複数のエージェントのそれぞれとの間で結合された１つ又は複数のクロック同期記憶装置を備える請求項１１に記載のシステム。
【請求項２０】
前記１つ又は複数のフロップの個数は、前記スイッチから最も遠い受け取り側エージェントまでの前記要求の飛行時間に基づく請求項１９に記載のシステム。
【請求項２１】
前記相互接続は、アドレス相互接続である請求項１１に記載のシステム。
【請求項２２】
前記相互接続は、データ相互接続である請求項１１に記載のシステム。
【請求項２３】
複数の記憶域内の複数のエージェントからの要求をキューに入れるステップと、
前記複数の記憶域内の前記複数の要求のアービトレーションを行い、前記複数の要求のうちの選択された１つの要求を選択するステップと、
前記選択された要求を相互接続上で送信するステップとを含む方法。
【請求項２４】
前記複数の記憶域は複数のキューを含み、前記複数のキューはそれぞれ、前記複数のエージェントのうちのそれぞれ１つのエージェントに対応し、それぞれのキューは、前記相互接続上で送信するため前記それぞれのエージェントにより生成される複数の要求を格納するように構成される請求項２３に記載の方法。
【請求項２５】
さらに、第１のキューから第２の要求を選択するよりも前に前記複数のキューのうちの前記第１のキューから第１の要求を選択するステップを含み、前記第２の要求は、前記第１の要求を送信するよりも前に前記第１のエージェントにより送信される請求項２４に記載の方法。
【請求項２６】
前記第１の要求を前記選択するステップは、前記第１の要求が前記第２の要求よりも高い優先度であることに応答して実行される請求項２５に記載の方法。
【請求項２７】
前記第１の要求を前記選択するステップは、前記第１の要求が一組の順序付け規則に従って前記第２の要求により順序変更可能であることに応答して実行される請求項２５に記載の方法。
【請求項２８】
前記相互接続は、アドレス相互接続である請求項２３に記載の方法。
【請求項２９】
前記相互接続は、データ相互接続である請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の分野に関するものであり、より具体的には、集積回路内及び／又は集積回路間の相互接続のためのアービトレーション・メカニズムに関するものである。
【背景技術】
【０００２】
システム内の集積回路、又は集積回路内のさまざまな回路は、典型的には、互いに通信し合う必要がある。多くの場合、システム／集積回路内のコミュニケータは、メモリ・マップ内のさまざまなアドレスを通じて通信することができる。つまり、さまざまなコミュニケータは、メモリ・マップ内にアドレスを割り当てられ、それらのアドレスへのリード／ライト操作が通信のために使用される。典型的には、そのようなコミュニケータは、コミュニケータ間の相互接続を介して送信されるリード／ライト・トランザクションを使用する。例えば、トランザクションを開始するためアドレス、コマンド、その他のトランザクション情報を送信するアドレス・バスを備えるのが普通である。さらに、データ・バスが、もしあればトランザクションに対応するデータを送信するために使用される。それらのトランザクションに対してキャッシュ・コヒーレンシが実行される場合、コミュニケータに実装されたコヒーレンシ・スキームに従ってコヒーレンシ状態を維持するために、応答インターフェイスが備えられる。
【０００３】
相互接続、又はその一部がコミュニケータ間で共有される限りにおいて、相互接続を使用するためにコミュニケータのアービトレーションを行う何らかのメカニズムが必要である。以前には、集中型アービトレーション・メカニズムと分散型アービトレーション・メカニズムが使用されていた。集中型アービトレーション・メカニズムでは、すべてのコミュニケータは、要求信号を中央アービタに送信し、そこで、どのコミュニケータに相互接続の使用を許可するかを決定する（「アービトレーション勝者」）。中央アービタは、許可されたコミュニケータに許可信号を返し、許可されたコミュニケータは、相互接続上でそのトランザクションを送る。分散型アービトレーション・スキームでは、それぞれのコミュニケータは、ローカル・アービタを実装する（又はローカル・アービタが近くに含まれる）。それぞれのコミュニケータは、その要求信号をすべてのローカル・アービタにアサートする。ローカル・アービタは、同じアービトレーション勝者を独立して決定するように設計されている。許可されたコミュニケータのローカル・アービタは許可されたコミュニケータに通知し、コミュニケータはそのトランザクションを相互接続へ送る。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
集中型アービトレーション・メカニズムは、典型的には、分散型アービトレーション・メカニズムに比べて実装が単純である。しかし、集中型アービトレーション・メカニズムは、典型的には待ち時間の長いメカニズムでもある。集中型アービトレーション・メカニズムは、要求信号の潜在的に長い距離の伝送と、その後に続く、許可信号の同じ長い距離の伝送と、さらにその後に続く、許可されたコミュニケータによるトランザクションの伝送を含む。その一方で、さらに複雑な分散型アービトレーション・スキームは、（ローカル・アービタのそれぞれへの要求信号の）１つの長距離伝送のみを伴う。分散型アービトレーション・メカニズムの複雑さに関わるものとして、典型的には、特定のコミュニケータ上の許可のより複雑な「パーキング」、コミュニケータを制御するフローの複雑さ、ソース−コミュニケータの関係に基づくターゲットとなるコミュニケータ内のバッファの割り当てがある。
【課題を解決するための手段】
【０００５】
一実施態様では、スイッチは、相互接続に結合されるように構成される。スイッチは、複数の記憶域と複数の記憶域に結合されたアービタ制御回路を備える。複数の記憶域は、複数のエージェントにより送信された複数の要求を格納するように構成される。アービタ制御回路は、複数の記憶域に格納されている複数の要求の間のアービトレーションを行うように構成される。選択された要求は、アービトレーションの勝者であり、スイッチは、選択された要求を複数の記憶域のうちの１つから相互接続上に送信するように構成される。他の実施形態では、システムは、複数のエージェントと、相互接続と、複数のエージェントと相互接続に結合されたスイッチとを備える。
【０００６】
さらに他の実施態様では、方法は、複数の記憶域内の複数のエージェントからの要求をキューに入れることと、複数の記憶域内の複数の要求のアービトレーションを行い、複数の要求のうちの１つの要求を選択することと、選択された要求を相互接続上で送信することとを含む。
【発明を実施するための最良の形態】
【０００７】
以下の詳細な説明では、付属の図面を参照し、図面について簡単に説明する。
【０００８】
本発明は、さまざまな修正及び代替え形態により異なるが、特定の実施形態は、図面の例で示され、ここで詳細に説明される。しかし、図面やその詳細説明は、本発明を開示されている特定の形態に限定することを意図しておらず、本発明は、付属の請求項により定められているような本発明の精神と範囲から逸脱しないすべての修正形態、等価形態、代替形態を対象とする。
【０００９】
次に図１を参照すると、システム１０の一実施形態のブロック図が示されている。例示されている実施形態では、システム１０は、エージェント１２Ａ〜１２Ｄなどの複数のエージェントを備える。システムは、さらに、アドレス・スイッチ１４、アドレス相互接続１６、応答／データ相互接続１８を備える。エージェント１２Ａと１２Ｂは、アドレス・スイッチ１４に結合される（エージェント１２Ｂは、例示されている実施形態ではフロップ２０Ａを通して結合される）。アドレス・スイッチ１４は、さらに、アドレス相互接続１６に結合され、これは、エージェント１２Ａ〜１２Ｄに（例示されている実施形態ではフロップ２０Ｂ〜２０Ｉを通して）結合される。別の見方をすると、フロップ２０Ｂ〜２０Ｉは、アドレス相互接続１６の一部としてよい。エージェント１２Ａ〜１２Ｄは、さらに、応答／データ相互接続１８に結合される。一実施形態では、システム１０は、単一の集積回路チップ上に集積化される。他の実施形態では、システム１０のさまざまなコンポーネントを別の集積回路上に実装することができる。さまざまな実施形態においてどのようなレベルの集積化も利用することができる。
【００１０】
エージェント１２Ａ、１２Ｂは、アドレス相互接続１６で、アドレス・スイッチ１４に送信すべき要求を送信するように構成される。それぞれの要求は、トランザクションのアドレスとコマンド（実行すべきトランザクションを識別する）を含む。コヒーレント・リード及びライト・コマンド、非コヒーレント・リード及びライト・コマンド、コヒーレント所有権コマンド、プローブ・コマンド、同期コマンド、キャッシュ管理コマンドなどのさまざまなコマンドをサポートできる。要求は、さらに、さまざまな実施形態において他の情報を含むことができる。例えば、以下で詳述される一実施形態では、要求は、（アービトレーションの）要求の優先度レベル、及びこの要求に対するデータがレベル２キャッシュにもコピーされるべきかどうかの指示を含むことができる。
【００１１】
エージェント１２Ａ、１２Ｂは、アドレス相互接続１６に対する要求を送信することによりシステム１０内のトランザクションを開始することができるため、ソース・エージェントと呼ばれる。例示的なソース・エージェントとしては、プロセッサ、外部ライト・バック・キャッシュ（修正された犠牲キャッシュ・ブロックをメモリに書き込むライト・トランザクションのソースとなる）、入出力（Ｉ／Ｏ）ブリッジ（結合されている周辺機器デバイスに代わってトランザクションのソースとなる）がある。図１において省略記号により示されているように、さまざまな実施形態は、２つよりも多いソース・エージェント（又は後述のソース／ターゲット・エージェント）を含むことができる。他のエージェントは、トランザクションのソースとはなりえないが、トランザクションのターゲットとはなりえる（つまり、トランザクションを受け取り、トランザクションのデータに関与するエージェント）。このようなエージェントは、ターゲット・エージェントと呼ばれる。リード・トランザクションでは、ターゲット・エージェントは、他のエージェントがデータの最近の（修正された）キャッシュコピーを持たない場合にデータを供給する。ライト・トランザクションでは、ターゲット・エージェントは、ソース・エージェントにより供給されるライト・データを吸い込む。ターゲット・エージェントは、例えば、メモリ・コントローラやＩ／Ｏブリッジを備えることができる。いくつかのエージェントは、あるトランザクションについてはソース・エージェントでもあり、他のトランザクションについてはターゲット・エージェントでもある。例示的なソース／ターゲット・エージェントは、上述のＩ／Ｏブリッジ又は外部キャッシュを備えることができる。一般に、エージェントは、アドレス相互接続１６及び応答／データ相互接続１８上でトランザクションを介して通信するように構成された回路を備えることができる。
【００１２】
それぞれのソース・エージェント１２Ａ、１２Ｂ（又はソース／ターゲット・エージェント、ただしソース・エージェントはこの説明では略して使用される）は、ソース・エージェント１２Ａ、１２Ｂが要求を送信していることを示す要求信号を使用することができる。アドレス・スイッチ１４は、さらに、与えられたソース・エージェント１２Ａ、１２Ｂへの許可信号をアサートし、そのソース・エージェント１２Ａ、１２Ｂにより送信される要求を、アドレス相互接続１６上に送ることが許されたことを示すこともできる。
【００１３】
アドレス・スイッチ１４は、ソース・エージェントにより送信された要求を、それらの要求がアドレス相互接続１６上に送ることが許されるまで格納しておくように構成された複数の記憶域を備えることができる。一実施形態では、これらの記憶域は、複数のキューを備えることができる。それぞれのキューは、特定のソース・エージェントに対応し、そのソース・エージェントにより送信された要求を格納することのみに使用される。つまり、キューとソース・エージェントとの間に一対一対応関係がありうる。与えられたソース・エージェントに対するキューは、与えられたソース・エージェントによりアドレス・スイッチ１４に送信された複数の要求を格納することができる。それぞれのソース・エージェントは、そのソース・エージェントに対応するキュー内のキュー・エントリの個数を認識することができ、キュー・エントリの個数を超える要求を送信することはできない。
【００１４】
アドレス・スイッチ１４は、さらに、キュー内の要求のアービトレーションを行い、アドレス相互接続１６上へ送信の要求を選択するようにも構成される。アービトレーション・スキームは、どのようなものでも使用できる。例えば、いくつかの実施形態では、それぞれの要求に対し、優先度レベルを割り当てることができる。アービトレーション・スキームは、優先度の低い要求を飢餓状態にするのを回避するための飢餓予防メカニズムを備える厳密な優先度スキーム（最高優先度の要求を選択する）とすることができる。アドレス・スイッチ１４は、アドレス相互接続１６上に選択された要求を送ることができる。
【００１５】
そのため、アドレス・スイッチ１４は、アドレス相互接続１６に対し集中型アービトレーションを使用することができる。しかし、それらの要求は、アドレス・スイッチ１４へ送信され、アドレス・スイッチ１４によりアドレス相互接続１６上に送られるので、アービトレーションを獲得するように選択されたソース・エージェント（及びその許可に対する応答としてアドレス相互接続１６を駆動するソース・エージェント）に許可を返すことに関連する待ち時間は、いくつかの実施形態では、軽減される。アドレス・スイッチ１４は、選択された要求をアドレス相互接続１６上に送るのと並行して、許可をソース・エージェントに返すことができる。さらに、いくつかの実施形態では、要求それ自体はアドレス・スイッチ１４のキュー内に格納されているため、アドレス・スイッチ１４内のアービトレーション回路は、それらの要求に関するさらに多くの情報を持つことができる（例えば、従来の集中型アービタ内に典型的には実装される要求／許可構造と比較して）。
【００１６】
ソース・エージェントが、アドレス・スイッチ１４から許可を受け取ると、ソース・エージェントは、キュー・エントリが他の要求を格納するのに利用できるという知らせを受け取る。一実施形態では、所定のソース・エージェントからの要求は、送信される順序で許可される。したがって、許可を受け取るソース・エージェントは、許可を対応する要求に関連付ける。他の実施形態では、アドレス・スイッチ１４は、場合によっては、要求の順序を変更するように構成されてもよい（同じソース・エージェントからの以前に受け取った要求より先に、又はその前にソース・エージェントから後で受け取った要求を送信する）。このような実施形態では、ソース・エージェントは、アドレス相互接続１６に結合され、かつどの要求が許可されたかを判定するために、送信された要求を受け取る。例えば、いくつかの実施形態において、ソース・エージェントはそれぞれの要求にソース・タグを付け、ソース・エージェントは、どの要求が許可されたかを判定するため、アドレス相互接続１６からソース・タグを受け取る。
【００１７】
アドレス相互接続１６は、さまざまな実施形態において、通信媒体を含む。例えば、アドレス相互接続１６は、パケット・インターフェイスを備えることができ、要求は、アドレス相互接続１６上で１つ又は複数のクロック・サイクルにわたって１パケットとして送信される。特に、一実施形態では、アドレス・パケットは、アドレス相互接続１６上で１クロック・サイクル以内に送信することができる。そのような実施形態では、アドレス・スイッチ１４を、いくぶん、トランザクションのアドレス・フェーズのプロトコルから絶縁することができる。他の実施形態は、アドレス相互接続１６をバスとして実装することができ、アドレスは、アドレス・フェーズにおいて転送されるコマンドや他の制御情報を示すさまざまな制御信号とともに送信される。
【００１８】
要求は、アドレス相互接続１６上でエージェント１２Ａ〜１２Ｄにブロードキャストされる。いくつかの実施形態では、アドレス相互接続１６上で最も遠いエージェント１２Ａ〜１２Ｄまでの飛行時間（物理的距離に関して）は、アドレス相互接続１６に関連するクロックの１クロック・サイクルを超えることがある。フロップ２０Ｂ〜２０Ｉは、要求を取り込み、エージェント１２Ａ〜１２Ｄへの伝播を続けるために使用される。したがって、アドレス・スイッチ１４と与えられたエージェント１２Ａ、１２Ｂとの間に備えられるフロップ２０Ｂ〜２０Ｉの個数は、最も遠いエージェントまでの飛行時間に基づく（アドレス相互接続１６に使用されるクロック信号のクロック・サイクル数で）。例示されている実施形態では、飛行時間は、２クロック・サイクルを超え、したがって２つのフロップが使用される。他の実施形態は、０個のフロップ（飛行時間が１クロック・サイクルよりも小さい場合）、１個のフロップ（飛行時間が、１クロック・サイクルを超え、２クロック・サイクル未満である場合）、又は２個よりも多いフロップ（飛行時間に依存する）を含むことができる。与えられた要求が、必ず、同じクロック・サイクルでそれぞれのエージェント１２Ａ〜１２Ｄにより論理的に受信されるようにするために、いくつかのエージェントが、アドレス・スイッチ１４に物理的に近く、要求が短い飛行時間内に近いエージェントに物理的に到達できるとしても、等しい数のフロップ２０Ｂ〜２０Ｉをアドレス・スイッチ１４とそれぞれのエージェント１２Ａ〜１２Ｄとの間に備えることができる。遠いエージェントまでのフロップ２０Ｂ〜２０Ｉは、アドレス・スイッチ１４と遠いエージェントとの間の距離にそって物理的に分配される。図１は、図面において簡単のため、フロップ２０Ｂ〜２０Ｉの物理的分配を示そうとするものではない。
【００１９】
それぞれのエージェント１２Ａ〜１２Ｄは、同じクロック・サイクルでアドレス相互接続１６上で送信された要求を論理的に受信するので、アドレス相互接続１６は、いくつかの実施形態において、コヒーレント・トランザクションに対する空間内のコヒーレンシ点とすることができる。つまり、アドレス相互接続１６上で正常に送信された要求の順序が、コヒーレンシを目的とするトランザクションの順序を定めることができる。
【００２０】
同様に、いくつかの実施形態において、ソース・エージェント１２Ａ、１２Ｂからアドレス・スイッチ１４までの要求の飛行時間は、１クロック・サイクルを超える可能性がある。いくつかの実施形態では、アドレス・スイッチ１４を、要求の最高の帯域幅を持つと予想されるソース・エージェントに最も近いところに物理的に配置することができる（例えば、プロセッサ・エージェントは、典型的には、キャッシュ・エージェントがＩ／Ｏエージェントである場合よりも高い要求帯域幅を持つことができる）。図１の実施形態では、ソース・エージェント１２Ｂからの要求の飛行時間は、１クロック・サイクルを超える場合があり、したがって、フロップ２０Ａは、要求を取り込み、アドレス・スイッチ１４への伝播を続けるために使用することができる。同様に、アドレス・スイッチ１４により返された許可信号は、フロップ２０Ａにより取り込まれ、続くクロック・サイクルで伝播させられる。
【００２１】
本発明では、アドレス相互接続１６は、コヒーレント・トランザクションに対するコヒーレンシ点であるため（また全体として要求の順序を決めることもできる）、異なるエージェントからアドレス・スイッチ１４に送信された複数の要求の間には順序付けはない。したがって、フロップ２０Ａなどのフロップが、１つのソース・エージェントからの飛行時間に使用される場合、要求に対する飛行時間が１クロック・サイクル未満である他のエージェントについて、フロップが挿入される必要はない。
【００２２】
上述のように、ソース・エージェントは、与えられたエージェントからのアドレス・スイッチ１４において未解決の複数の要求のうちのどの要求が実際にアドレス相互接続１６上に許可されて送られたかを判定するために、いくつかの実施形態では、アドレス相互接続１６上で要求を受け取る。さらに、いくつかの実施形態では、データをキャッシュすることもできる（したがって、コヒーレント・トランザクションに参加することができる）ソース・エージェントは、さらに、コヒーレンシを目的としてアドレス相互接続１６上で他のソース・エージェントの要求をスヌープすることもできる。エージェント１２Ｃ〜１２Ｄなどのターゲット・エージェントは、アドレス相互接続１６に結合され、これにより、それらがターゲットである要求を受信する。
【００２３】
一実施形態では、アドレス・スイッチ１４は、さらに、さまざまなターゲット・エージェント１２Ｃ〜１２Ｄへのフロー制御を管理するように構成することもできる。例えば、アドレス・スイッチ１４を、どのターゲット・エージェントがそれぞれの要求によりアドレスされるかを判定するように構成することができる（例えば、要求アドレスの粗粒度復号化や復号化に基づくターゲット・エージェントへのアドレスのマッピングを介して）。アドレス・スイッチ１４は、ターゲット・エージェントのキューに置くことができる要求の個数を認識することができ（アドレス相互接続１６から要求を受け取った後）、ターゲット・エージェントの入力キューが要求でオーバーフローしないことを保証する。与えられた要求が、入力キューが満杯である与えられたターゲット・エージェントをターゲットとする場合、アドレス・スイッチ１４は、入力キュー・エントリが与えられたターゲット・エージェントにおいて利用可能になるまで、与えられた要求がアービトレーションの勝者として選択されないようにする。アドレス・スイッチ１４は、このような状況において他の要求をブロックしない。つまり、アドレス・スイッチ１４は、ターゲット・エージェントが要求を受け取ることができないため以前の要求又は優先度の高い要求がアービトレーションを獲得するのに適しない場合に、他のターゲット・エージェントをターゲットとする他の要求をそのまま選択する。いくつかの実施形態では、アドレス・スイッチ１４は、さらに、ソース・エージェント間に公正さをもたらすか、又はターゲット・エージェントへのアクセスの最適化することを試みることもできる。
【００２４】
エージェント１２Ａ〜１２Ｄは、さらに、アドレス相互接続１６上で要求を介して開始されたトランザクションの応答フェーズとデータ・フェーズを伝達するために応答／データ相互接続１８に結合される。いくつかのトランザクションは、さまざまな実施形態において、データ・フェーズを含まない場合がある。応答フェーズは、例えば、コヒーレント・トランザクションについてキャッシング・エージェントからの応答を含むことがある。応答は、トランザクションに対応するデータの受け取り側においてどのコヒーレンシ状態が確立されなければならないかを示す情報を与える。トランザクションのデータ・フェーズは、ソース・エージェント（リードの場合）又はターゲット・エージェント（ライトの場合）へのデータの転送を伴う。応答／データ相互接続１８は、さまざまな実施形態において、通信媒体を含む。
【００２５】
アドレス・スイッチ１４内の記憶域は、上記のいくつかの実施形態ではエージェント毎のキューとして説明されているが、他の実施形態では、記憶域を他の様式で実現することができる。例えば、これらの記憶域は、ソース・エージェントが要求を格納する単一のキューとすることができる。キュー・エントリは、アドレス・スイッチ１４によりソース・エージェントに柔軟に割り当てられ、またそれぞれのソース・エージェントから利用可能なキュー・エントリの個数を示す追加のシグナリングがあり（例えば、キュー・エントリの個数、又は少なくとも１つの追加のキュー・エントリがエージェントに利用可能であることなどを示す、アドレス・スイッチ１４からそれぞれのエージェントへのシグナリング）。エージェントは、グループ化され、またキューを共有することができるか、又はキューをそれぞれの要求のターゲットに基づいて割り当てることができる。
【００２６】
フロップ２０Ａ〜２０Ｉが図１の実施形態において例示されているが、一般的には、どのようなクロック同期記憶装置でもデバイス２０Ａ〜２０Ｉとして使用することができることに留意されたい。例えば、レジスタ、ラッチなどを使用できる。クロック同期記憶装置は、クロック信号に応答する記憶装置に対する値を取り込むように構成された任意の記憶装置を含むことができる。本発明の実施形態では、フロップ２０Ａ〜２０Ｉに対するクロック信号入力は、アドレス相互接続１６に使用されるクロックである。いくつかのエージェントは、内部においてそのクロックの倍数で動作できる。本明細書で説明されている他のフロップも、任意のクロック同期記憶装置により実現できる。一般的に、それぞれのフロップ２０Ａ〜２０Ｉは、その入力の幅に等しいビット幅を持つ。例えば、フロップ２０Ａは、アドレス・スイッチ１４への要求／許可インターフェイスの幅であり、またフロップ２０Ｂ〜２０Ｉの幅は、アドレス相互接続１６の幅でもよい。
【００２７】
厳密な優先度アービトレーション・スキームは、上記の一例として使用されるが、他の実施形態は、他のアービトレーション・スキームを実装することができる。例えば、他のアービトレーション・スキームは、ラウンドロビン、優先度重み付けラウンドロビン、ラウンドロビンと優先度スキームとの組み合わせなどを含むことができる。
【００２８】
上記の説明では、アドレス相互接続１６に対する要求を受け取り、要求間のアービトレーションを行ってアドレス相互接続１６上で送信されるべきアービトレーション勝者を決定するアドレス・スイッチを参照しているが、他の実施形態では、データ相互接続に対し類似のスイッチを実装する。データ・スイッチへの要求は、データ・ソースから受け取ることができる。これらの要求は、データが対応するアドレス要求を識別するタグとともに、トランザクションに対するデータを含む。要求は、さまざまな実施形態において、アドレス要求と同じ優先度である優先度、又は異なる優先度を含むことができる。データ・スイッチは、キューに入れられたデータ要求間のアービトレーションを行い、データ相互接続上で推進すべきアービトレーション勝者を選択する。
【００２９】
次に図２を参照すると、アドレス・スイッチ１４の一実施形態のブロック図が示されている。例示されている実施形態では、アドレス・スイッチ１４は、それぞれエージェント１２Ａ、１２Ｂに対応するキュー３０Ａ、３０Ｂなどのキューを含む。アドレス・スイッチ１４は、さらに、マルチプレクサ（ｍｕｘ）３２、出力フロップ３４、アービタ制御回路３６を備える。キュー３０Ａ、３０Ｂは、それぞれのエージェント１２Ａ、１２Ｂから要求を受け取るように結合される。さらに、アービタ制御回路３６とｍｕｘ  ３２は、例示されている実施形態では、要求を受け取るように結合される。キュー３０Ａ、３０Ｂは、さらに、アービタ制御回路３６とｍｕｘ  ３２に結合される。追加のソース・エージェントを含む実施形態では、ｍｕｘ  ３２とアービタ制御回路３６は、さらに、要求を受取り、かつアドレス・スイッチ１４内の対応するキューの出力を受け取るように結合されている。アービタ制御回路３６は、エージェント１２Ａ、１２Ｂから要求信号を受け取り、許可信号をエージェント１２Ａ、１２Ｂに供給するように結合される。アービタ制御回路３６は、さらに、ｍｕｘ  ３２に選択制御権を渡すように結合されている。ｍｕｘ  ３２の出力は、出力フロップ３４に結合され、これは、さらに、アドレス相互接続１６に結合される。アービタ制御回路３６は、さらに、エージェント１２Ｃ〜１２Ｄ（及びいくつかの実施形態では、他のターゲット・エージェント又はソース／ターゲット・エージェント）からクレジット指示を受け取るように結合される。
【００３０】
例示されている実施形態では、それぞれの要求は、アドレス（Ａｄｄｒ）、コマンド（Ｃｍｄ）、優先度（Ｐｒ）、トランザクションＩＤ（ＴＩｄ）、ＲｅｏｒｄｅｒＯＫビット（ＲＯＫ）を含むことができる。キュー３０Ａ、３０Ｂは、要求を格納するように構成される。つまり、それぞれのキュー・エントリは、要求を格納するのに十分な記憶域を含むことができる。例示されている実施形態では、それぞれのキュー３０Ａ、３０Ｂは、２つのエントリを含む。他の実施形態では、それぞれのキュー３０Ａ、３０Ｂに、さらに多くのキューを含めることができる。アドレスは、要求の影響を受けるメモリ・マップ内のアドレスであり、ターゲット・エージェントを識別する。コマンドは、開始されるトランザクションを識別する。優先度は、要求の優先度レベルを示す。一実施形態では、３つの優先度レベルが使用される。最高優先度レベルは、要求の待ち時間がクリティカルである場合に使用できる。例えば、一実施形態では、イーサネット（登録商標）・インターフェイスなどのパケット・インターフェイスに結合されるいくつかのＩ／Ｏブリッジでは、パケット・インターフェイスを駆動するブリッジ又は回路内のバッファの空き容量が少なくなりつつあるときに、最高優先度レベルを使用してディスクリプタ又はパケット・データを読み込むことができる。中間優先度レベルは、Ｉ／Ｏブリッジによるプロセッサ・リードとダイレクト・メモリ・アクセス（ＤＭＡ）ディスクリプタ・リードに使用することができる。中間優先度は、さらに、ソース・エージェントのライト・バッファが満杯に近づきつつある場合に書き込みに使用できる。低優先度レベルは、他のすべての要求に使用できる（例えば、プロセッサ・ライト、ＤＭＡリード及びライトなどの高帯域リード及びライトなど）。他の実施形態では、使用する優先度レベルを加減することができる。ｒｅｏｒｄｅｒＯＫビットは、前の要求がまだエージェントのキュー３０Ａ、３０Ｂ内にある場合に、同じエージェントからの前の要求よりも先に来るように要求の順序が変更されうるかどうかを示すために使用できる（つまり、前の要求が、アドレス相互接続１６上にまだ許可されて送られていない）。ソース・エージェントは、エージェントにより実行される一組の順序付け規則に従ってｒｅｏｒｄｅｒＯＫビットを生成することができる。一例が、図４に示されており、以下でさらに詳しく説明される。
【００３１】
エージェント１２Ａ、１２Ｂは、アドレス・スイッチ１４に要求を送信するときに対応する要求信号をアサートする。つまり、アサートされた要求信号は、その要求、エージェント１２Ａ、１２Ｂに対応するキュー３０Ａ、３０Ｂの書き込み、アービタ制御回路３６への要求の指示に対する有効なビットとして役立つ。アービタ制御回路３６は、さらに、許可信号を発生することもできる（ソース・エージェント１２Ａ、１２Ｂ毎に１つ）。アービタ制御回路３６は、許可信号を与えられたソース・エージェント１２Ａ、１２Ｂにアサートし、ソース・エージェント１２Ａ、１２Ｂからの要求がすでに許可されており、アドレス相互接続１６上に送り出されることをも示す。アサートされた許可信号は、他の要求を受け入れられるようにエージェントのキュー３０Ａ、３０Ｂ内のキュー・エントリが解放されていることを、エージェント１２Ａ、１２Ｂに示す。
【００３２】
それぞれのエージェント１２Ａ、１２Ｂは、要求を、最大でもキュー３０Ａ、３０Ｂの中のキュー・エントリの個数（例示されている実施形態では２つ）に等しい数まで送信するように構成されている。一実施形態では、それぞれのエージェント１２Ａ、１２Ｂは、キュー３０Ａ、３０Ｂ内の未解決の要求の個数をエントリの個数に制限する。つまり、エージェントは、２つの要求を送信し、次いで、キュー・エントリが解放されることをアサートされた許可信号が示すまでさらに要求を送信することを抑制する。他の実施形態では、それぞれのエージェント１２Ａ、１２Ｂは、そのキュー３０Ａ、３０Ｂに書き込み、もう１つ要求を送信し、エージェント１２Ａ、１２Ｂは、前の要求が許可され、それによりアサートされた要求がキュー・エントリに書き込まれるまで送信を続ける。
【００３３】
アービタ制御回路３６は、キュー３０Ａ、３０Ｂ内の要求のアービトレーションを行い、アドレス相互接続１６上で送信すべき要求を選択する。アービタ制御回路３６は、ｍｕｘ  ３２に対する選択制御を行い、要求を選択し、選択された要求を出力フロップ３４に供給する。出力フロップ３４は、要求をアドレス相互接続１６上に送る。出力フロップ３４は、クロック・サイクルの始めに要求がアドレス相互接続１６上に必ず送り出されるように設けられる。他の実施形態では、出力フロップ３４を取り除き、ｍｕｘ  ３２を通じて選択後に要求を送り出す。選択された要求は、さらに、キュー３０Ａ、３０Ｂから削除され、アービタ制御回路３６は、対応するソース・エージェント１２Ａ、１２Ｂに対する許可信号をアサートする。
【００３４】
アービタ制御回路３６は、複数の要求のうちから選択するために、アービトレーション・スキームを実装する。例えば、上述のように、アービタ制御回路３６は、飢餓予防がなされる厳密な優先度選択を実装する。このようなスキームでは、最高優先度要求は、通常、アービトレーションの勝者として選択される。しかし、多数の高い優先度の要求が長期間にわたってキュー３０Ａ、３０Ｂ内に低い優先度の要求が留まる原因となる場合（つまり、低い優先度の要求は、「飢餓」状態になる）、低い優先度の要求を選択する。飢餓予防メカニズムは、さまざまな方法で実現きる。例えば、それぞれの要求には、タイマーが関連付けられるか、又は要求がキュー３０Ａ、３０Ｂ内にどれだけの期間留まっていたかを示すタイムスタンプが関連付けられる。要求がキュー３０Ａ、３０Ｂに留まっている期間が閾値期間よりも長い場合（固定されるか、又はプログラム可能なものとすることができる）、要求を選択する。実際、要求の優先度は、キュー３０Ａ、３０Ｂ内のその要求の経過時間により上げることができる。他の例では、高い優先度の要求の決められた数が連続して選択されると（この数は、固定であるか、又はプログラム可能な数とすることができる）、低い優先度の要求が自動的に選択される。与えられたアービトレーションに対し、複数の要求がキュー３０Ａ、３０Ｂ内で最高優先度である場合、要求を選択するためのどのようなメカニズムでも使用できる（例えば、ソース・エージェント間の固定された優先度、ソース・エージェント間のラウンドロビン、最も古い要求を選択できる、など）。他の実施形態では、他のアービトレーション・スキームを実装することができる（例えば、優先度のないラウンドロビン、優先度に基づく重み付けラウンドロビンなど）。
【００３５】
高優先度要求が、キュー３０Ａ、３０Ｂ内の他の要求の「背後」にある場合、その高優先度要求に対するＲｅｏｒｄｅｒＯＫビットが、前の要求に先立つ要求の順序変更が許容されることを示すように設定されていないと、その高優先度要求は、アービトレーションに不適であると考えられる。つまり、アービタ制御回路３６は、順序変更が許容されることをＲｅｏｒｄｅｒＯＫビットが示していない場合、同じキュー内の前の低い優先度の要求よりも先に高優先度要求を選択することはできない。ＲｅｏｒｄｅｒＯＫビットにより示されるように、前の要求よりも先に順序変更が許容される場合、高優先度要求は、高い優先度の要求がキュー内の低い優先度の要求の背後にある場合に選択することができる。つまり、低い優先度の要求は、エージェントにより、高優先度要求を送信する前に、アドレス・スイッチに送信されている。
【００３６】
いくつかの実施形態では、アービタ制御回路３６は、さらに、それぞれのターゲット・エージェント（例えば、図１の実施形態におけるエージェント１２Ｃ〜１２Ｄ）へのフロー制御を実行する。アービタ制御回路３６は、それぞれの要求に対するターゲット・エージェントを決定する（例えば、本発明の実施形態におけるアドレスを使用する）。アービタ制御回路３６は、ターゲット・エージェントへのアドレスのマッピングによりプログラム可能である。例えば、１つ又は複数のレジスタ３８は、アドレス空間をターゲット・エージェントにマッピングするようにプログラムすることができる。このアドレス・マッピングに基づき、アドレス制御回路３６は、いくつかの最上位アドレス・ビットの粗粒度復号化を実行し、ターゲット・エージェントを決定する。本発明の実施形態において復号化が粗粒度であるのは、比較的大きな連続するアドレス範囲が同じターゲット・エージェントにプログラムされると予想されるからである。他の実施形態では、細かい粒度の復号化を使用することができる。さらに、この実施形態では、復号化は、プログラム可能であるが、他の実施形態では、固定されたアドレス・マップを備え、アービタ制御回路３６は、その固定されたアドレス・マップに従ってアドレスを復号化する。
【００３７】
それぞれのターゲット・エージェントは、特定の数までのトランザクションを受け入れる能力を持つ（例えば、ターゲット・エージェント内に実装されたバッファの個数に応じて）。いくつかの実施形態では、トランザクションは、トランザクション・タイプ別にグループ化することができ、またトランザクションのそれぞれのグループの個数は、ターゲット・エージェント毎に指定することができる。例えば、一実施形態では、トランザクションは、コヒーレント・リード、コヒーレント・ライト、非ポスト非コヒーレント・コマンド、ポスト非コヒーレント・コマンドとしてグループ化することができる。それぞれのターゲット・エージェントは、トランザクションの上記のグループのそれぞれについて特定の数のバッファを実装する。
【００３８】
アービタ制御回路３６は、ターゲット・エージェントへのフロー制御を実行するように構成され、それによりターゲット・エージェントのバッファがオーバーフローしないようする。例えば、それぞれのバッファが対応するトランザクション・タイプに対するクレジットにより表されるクレジットベースのシステムを使用することができる。アービタ制御回路３６は、利用可能なクレジットを追跡する（例えば、図２の１つ又は複数のレジスタ４０を使用して）。アービタ制御回路３６が、与えられたタイプの、また与えられたターゲット・エージェントをターゲットとする要求を選択した場合、アービタ制御回路３６は、対応するクレジット・カウントを１だけ減らすことができる。ターゲット・エージェントは、さらに、バッファが空いたときにクレジットの返却を伝達することもできる（図２においてクレジットとして示されている）。そのため、与えられた時点に、アービタ制御回路３６は、それぞれのトランザクション・タイプに対するそれぞれのターゲット・エージェントにおいてバッファが利用可能であることを認識することができる。アービタ制御回路３６は、その要求により消費されるクレジットが利用可能でない場合、要求が選択されるのを妨げることができる。他の要求（さらに低い優先度の要求も）は、その他の要求の対応するクレジットが利用できる場合に代わりに選択することができる。
【００３９】
いくつかの実施形態では、アービタ制御回路３６は、さらに、ソース・エージェントによる与えられたターゲット・エージェントへのアクセスの公平性を確実なものとすることを試みる。アービタ制御回路３６は、それぞれのターゲット・エージェント対するさまざまなタイプのクレジットの全体的な使用とともにそれぞれのソース・エージェントによるクレジットの使用を追跡する。ターゲット・エージェントに対するクレジットの全体的使用度が高く（ターゲット・エージェントがトランザクションに関して「ビジー」状態であることを示す）、特定のソース・エージェントがそのターゲット・エージェントと高速通信している場合（そのターゲット・エージェントに対するクレジットの使用により示される）、アービタ制御回路３６は、そのソース・エージェント／ターゲット・エージェントの対によるクレジットの使用を制限し、他のソース・エージェントによるターゲット・エージェントへのアクセスを改善する。
【００４０】
図２の実施形態に例示されているように、ｍｕｘ  ３２とアービタ制御回路３６は、エージェント１２Ａ、１２Ｂによりアドレス・スイッチ１４に現在送信されている要求を受け取るように結合される。アービタ制御回路３６は、与えられた要求に対するキュー３０Ａ、３０Ｂをバイパスし、要求が送信された（またターゲット・エージェントの対応するクレジットが消費に使用可能である）ときにキュー３０Ａ、３０Ｂが空である場合にｍｕｘ  ３２を通じて要求を選択するように構成される。キューを通る待ち時間は、このような場合に回避できる。他の実施形態では、バイパスを１つのソース・エージェント、又はソース・エージェントの部分集合に対してのみ用意することができる（例えば、プロセッサは、バイパスを持つことができるが、他のエージェントは持つことができない）。さらに他の実施形態では、バイパスを実装せず、ｍｕｘ  ３２とアービタ制御回路３６への受信要求の接続をなくすことができる。
【００４１】
本発明の実施形態ではＲｅｏｒｄｅｒＯＫビットを使用して、与えられた要求が同じエージェントからのすでに送信されている要求よりも前に順序変更できるかどうかを示すが、他の実施形態では他の指示を使用することがあることに留意されたい。例えば、２つよりも多いキュー・エントリがキュー３０Ａ、３０Ｂ内に実装される場合、キュー内のそれぞれのエントリに対応するＲｅｏｒｄｅｒＯＫビットがある。それぞれのＲｅｏｒｄｅｒＯＫビットは、要求が対応するキュー・エントリ内の要求に関して順序変更可能であるかどうかを示すことができる。それとは別に、アービタ制御回路３６は、与えられた要求がすでに送信されている要求の前に来るように順序変更できるかどうかを判定する場合に、エージェントに適用される一組の順序付け規則を実装する。
【００４２】
図３は、アービトレーション制御回路３６の一実施形態のオペレーションを例示する流れ図である。これらのブロックは、理解しやすいように特定の順序で示されているが、どのような順序でも使用できる。さらに、アービトレーション制御回路３６内の組み合わせ論理回路により、さまざまなブロックを並列実行することができる。他のブロック、ブロックの組み合わせ、又は流れ図は、全体として、望み通り、複数のクロック・サイクルにわたってパイプライン化することができる。
【００４３】
アービトレーション制御回路３６は、飢餓制御が現在のアービトレーション・サイクルに対しアクティブ化されている場合に「通常」（例えば、優先度ベース）のアービトレーションをオーバーライドする（決定ブロック５０）。上述のように、飢餓制御は、与えられた低い優先度の要求が長時間キュー内に留まっている場合にアクティブ化される。それとは別に、飢餓制御は、高優先度要求が多数の連続するアービトレーションにまたがって選択される場合にアクティブ化される。飢餓制御がアクティブ化された場合（決定ブロック５０、「はい」の選択肢）、アービトレーション制御回路３６は、時間の経った要求（又は低い優先度の要求）をアービトレーション勝者として選択する（ブロック５２）。
【００４４】
飢餓制御がアクティブ化されていない場合（決定ブロック５０、「いいえ」の選択肢）、アービトレーション制御回路３６は、さまざまな要求にアービトレーションに不適であるとしてマスクし、マスクされていない要求のアービトレーションを行う。例えば、キュー内の要求が、順序変更を許可しないことを示すＲｅｏｒｄｅｒＯＫビットを有し、同じキュー内に前の要求がある場合、要求をマスクし、その要求が前の要求よりも先に選択されることを防ぐ（例えば、その要求が、前の要求よりも高い優先度を持つ場合）（ブロック５４）。さらに、要求が、その要求に対する適切なタイプの利用可能なクレジットがないターゲット・エージェントをターゲットとする場合、その要求をマスクする（ブロック５６）。アービトレーション制御回路３６が、要求に対応するソース・エージェントにより消費されるクレジットを制限しており、その制限に達した場合に、消費に使用できるクレジットがある場合でも、その要求をマスクすることもできる（ブロック５６）。アービトレーション制御回路３６は、最高優先度の非マスク要求（ブロック５８）をアービトレーション勝者として選択する。
【００４５】
アービトレーション制御回路３６は、アドレス相互接続１６上でｍｕｘ  ３２を通してアービトレーション勝者を選択する。さらに、アービトレーション制御回路３６は、選択された要求のソースとなったソース・エージェントへの許可信号をアサートし、キュー３０Ａ、３０Ｂから選択された要求を削除する。
【００４６】
図４は、さまざまな実施形態において、ソース・エージェント、又はアービトレーション制御回路３６、又はその両方により実行することができる一組の順序付け規則の一実施形態のブロック図である。トランザクション・タイプは、表の最上行左から右へと表の左側の上から下に向かって示されている。行と列との交差点のところに、その行のタイプのトランザクションがその列のタイプの前のトランザクションよりも前に順序変更することが許されるかどうかに関する規則がある。
【００４７】
したがって、コヒーレント・リード及びライト要求は、アドレスの一致がない限り、自由に順序変更できる。この文脈では、アドレス一致は、コヒーレンシが維持される粒度に関して検出される（例えば、キャッシュ・ブロック）。コヒーレント・リード要求は、非コヒーレント・ポスト要求及び非コヒーレント完了よりも先になるように順序変更できるが、非コヒーレント非ポスト要求よりも先になるように順序変更できない（コヒーレント・リード行及び非コヒーレント・ポスト、非コヒーレント非ポスト、及び非コヒーレント完了の列）。場合によっては、要求の順序が変更可能かどうかは、要求の特定のインスタンスに依存する（ａ）とｂ）の答えを含む交差点）。ａ）及びｂ）に対する要求のタイプは、図５の表の下のところで定義されている。Ｙ／Ｎは、順序変更が許容されるが、許可する必要はないことを意味する。そのため、要求は、図４が「はい」又は「Ｙ／Ｎ」を示す場合に順序変更可能である。
【００４８】
次に図５を参照すると、アドレス相互接続上で要求を伝達する方法の高水準の流れ図が示されている。ソース・エージェントからの要求は、アドレス・スイッチのキューに入れられる（ブロック７０）。アドレス・スイッチは、要求を選択するためにキューに入っている要求のアービトレーションを行う（ブロック７２）。選択された要求は、アドレス相互接続上で送信される（ブロック７４）。
【００４９】
上記開示が完全に理解されれば、当業者には、多くの変更形態及び修正形態が明白なものとなるであろう。付属の請求項は、このようなすべての変更形態及び修正形態を包含するものと解釈することが意図されている。
【図面の簡単な説明】
【００５０】
【図１】集積回路の一実施形態のブロック図である。
【図２】図１に示されているアービタ／アドレス・スイッチの一実施形態のブロック図である。
【図３】要求のアービトレーションを行うための図２に示されているアービタ制御ユニットの一実施形態のオペレーションを例示する流れ図である。
【図４】一実施形態の順序付け規則を例示する表である。
【図５】アドレス相互接続上で要求を伝達する方法の高水準の流れ図である。
【図１】
2009514065.tif 000003
【図２】
2009514065.tif 000004
【図３】
2009514065.tif 000005
【図４】
2009514065.tif 000006
【図５】
2009514065.tif 000007
【手続補正書】
【提出日】平成20年4月14日(2008.4.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のエージェントと、
相互接続と、
前記複数のエージェント及び前記相互接続に結合されたスイッチと
を備え、前記スイッチは、複数の記憶域を備え、前記複数の記憶域は、前記スイッチに前記複数のエージェントにより送信された複数の要求を格納するように構成され、前記スイッチは、前記複数の記憶域内に格納されている前記複数の要求のアービトレーションを行うように構成され、前記スイッチは、前記相互接続上で選択された要求を送信するように構成され、前記選択された要求は、前記アービトレーションの勝者であり、
前記相互接続は、前記スイッチと前記相互接続上で要求を受け取る前記複数のエージェントのそれぞれとの間で結合された１つ又は複数のクロック同期記憶装置を備えるシステム。
【請求項２】
前記複数の記憶域は、複数のキューを含み、前記複数のキューはそれぞれ、前記複数のエージェントのうちのそれぞれ１つのエージェントに対応し、前記それぞれのエージェントにより送信される要求を格納するように構成され、前記複数のキューはそれぞれ、前記複数の記憶域のうちの少なくとも２つを含む請求項１に記載のシステム。
【請求項３】
前記スイッチは、第２の要求を選択する前に前記複数のエージェントのうちの第１のエージェントにより送信された第１の要求を選択された要求として選択するように構成され、前記第２の要求は、前記第１の要求よりも先に前記第１のエージェントにより送信される請求項１に記載のシステム。
【請求項４】
それぞれの要求は、対応する優先度を有し、前記スイッチは、前記第１の要求が前記第２の要求よりも高い優先度である場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成される請求項３に記載のシステム。
【請求項５】
前記スイッチは、一組の順序付け規則に従って前記第１及び第２の要求が順序変更可能である場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成され、前記スイッチは、前記第１の要求が前記第２の要求よりも高い優先度である場合でも、前記一組の順序付け規則に従って前記第１及び第２の要求が順序変更可能でない場合に、前記第２の要求よりも前に前記第１の要求を選択しないように構成される請求項３に記載のシステム。
【請求項６】
前記第１のエージェントは、前記第１の要求が前記第２の要求により順序変更可能であるかどうかを示す前記第１の要求による指示を送信するように構成され、前記スイッチは、前記第１の要求が前記第２の要求により順序変更可能であることを前記指示が示す場合に、前記第２の要求を選択するよりも前に前記第１の要求を選択するように構成される請求項５に記載のシステム。
【請求項７】
前記スイッチは、前記複数の要求のうちのそれぞれの要求に対して前記複数のエージェントのうちの１つのターゲット・エージェントを決定するように構成され、前記複数の要求のうちの１つの要求が、前記要求の前記ターゲット・エージェントに基づいてブロックされる場合に、前記スイッチは、他のターゲット・エージェントへの他の要求を前記選択された要求として選択するように構成される請求項１に記載のシステム。
【請求項８】
前記スイッチは、前記複数の要求のうちのそれぞれの要求のアドレスの一部を復号化し、前記要求に対する前記ターゲット・エージェントを決定するように構成される請求項７に記載のシステム。
【請求項９】
前記１つ又は複数のクロック同期記憶装置の個数は、前記スイッチから最も遠い受け取り側エージェントまでの前記要求の飛行時間に基づく請求項１に記載のシステム。
【請求項１０】
複数の記憶域の複数のエージェントから要求をキューするステップと、
複数の要求の選択された要求を選択するために前記複数の記憶域において要求のアービトレーションを行うステップと、
相互接続上で選択された要求を送信するステップであって、前記相互接続は前記スイッチと前記相互接続上で要求を受け取る前記複数のエージェントのそれぞれとの間で結合された１つ又は複数のクロック同期記憶装置を備える、前記ステップと
を有する方法。
【国際調査報告】
2009514065.tif 000008
2009514065.tif 000009
2009514065.tif 000010