JP2009514065A - 浅いエージェント毎のキューを伴うブロックしないアドレス・スイッチ - Google Patents

浅いエージェント毎のキューを伴うブロックしないアドレス・スイッチ Download PDF

Info

Publication number
JP2009514065A
JP2009514065A JP2008526262A JP2008526262A JP2009514065A JP 2009514065 A JP2009514065 A JP 2009514065A JP 2008526262 A JP2008526262 A JP 2008526262A JP 2008526262 A JP2008526262 A JP 2008526262A JP 2009514065 A JP2009514065 A JP 2009514065A
Authority
JP
Japan
Prior art keywords
request
switch
requests
interconnect
agent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008526262A
Other languages
English (en)
Other versions
JP2009514065A5 (ja
JP4851523B2 (ja
Inventor
サブラマニアン,シュリダール・ピイ
ケラー,ジェイムズ・ビイ
イウ,ジョージ・コン
ワドハワン,ルチ
グンナ,ラメシュ
Original Assignee
ピイ・エイ・セミ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ピイ・エイ・セミ・インコーポレーテッド filed Critical ピイ・エイ・セミ・インコーポレーテッド
Publication of JP2009514065A publication Critical patent/JP2009514065A/ja
Publication of JP2009514065A5 publication Critical patent/JP2009514065A5/ja
Application granted granted Critical
Publication of JP4851523B2 publication Critical patent/JP4851523B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)

Abstract

一実施形態では、スイッチは、相互接続に結合されるように構成される。スイッチは、複数の記憶域及び複数の記憶域に結合されたアービタ制御回路を備える。複数の記憶域は、複数のエージェントにより送信された複数の要求を格納するように構成される。アービタ制御回路は、複数の記憶域に格納されている複数の要求の間のアービトレーションを行うように構成される。選択された要求は、アービトレーションの勝者であり、スイッチは、選択された要求を複数の記憶域のうちの1つから相互接続上に送信するように構成される。他の実施形態では、システムは、複数のエージェント、相互接続、エージェントと相互接続とに結合されたスイッチを備える。他の実施形態では、方法が考察される。

Description

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

Claims (29)

  1. 相互接続に結合するように構成されたスイッチであって、
    複数のエージェントにより送信された複数の要求を格納するように構成される、複数の記憶域と、
    前記複数の記憶域に結合され、前記複数の記憶域に格納される前記複数の要求のアービトレーションを行うように構成されたアービタ制御回路と
    を備え、前記スイッチは、選択された要求を前記複数の記憶域のうちの1つから前記相互接続上に送信するように構成され、前記選択された要求は、前記アービトレーションの勝者であるスイッチ。
  2. 前記複数の記憶域は、複数のキューを含み、前記複数のキューはそれぞれ、前記複数のエージェントのうちのそれぞれ1つのエージェントに対応し、前記それぞれのエージェントにより送信される要求を格納するように構成され、前記複数のキューはそれぞれ、前記複数の記憶域のうちの少なくとも2つを含む請求項1に記載のスイッチ。
  3. 前記アービタ制御回路は、第2の要求を選択する前に前記複数のエージェントのうちの第1のエージェントにより送信された第1の要求を選択された要求として選択するように構成され、前記第2の要求は、前記第1の要求よりも先に前記第1のエージェントにより送信される請求項1に記載のスイッチ。
  4. それぞれの要求は、対応する優先度を有し、前記アービタ制御回路は、前記第1の要求が前記第2の要求よりも高い優先度である場合に、前記第2の要求を選択するよりも前に前記第1の要求を選択するように構成される請求項3に記載のスイッチ。
  5. 前記アービタ制御回路は、一組の順序付け規則に従って前記第1及び第2の要求が順序変更可能である場合に、前記第2の要求を選択するよりも前に前記第1の要求を選択するように構成され、前記アービタ制御回路は、前記第1の要求が前記第2の要求よりも高い優先度である場合でも前記一組の順序付け規則に従って前記第1及び第2の要求が順序変更可能でない場合に、前記第2の要求よりも前に前記第1の要求を選択しないように構成される請求項3に記載のスイッチ。
  6. 前記第1のエージェントは、前記第1の要求が前記第2の要求により順序変更可能であるかどうかを示す前記第1の要求による指示を送信するように構成され、前記アービタ制御回路は、前記第1の要求が前記第2の要求により順序変更可能であることを前記指示が示す場合に、前記第2の要求を選択するよりも前に前記第1の要求を選択するように構成される請求項5に記載のスイッチ。
  7. 前記アービトレーション制御回路は、前記複数の要求のうちのそれぞれの要求に対してターゲット・エージェントを決定するように構成され、前記複数の要求のうちの1つの要求が、前記要求の前記ターゲット・エージェントに基づいてブロックされる場合に、前記アービタ制御回路は、他のターゲット・エージェントへの他の要求を前記選択された要求として選択するように構成される請求項1に記載のスイッチ。
  8. 前記アービタ制御回路は、前記複数の要求のうちのそれぞれのアドレスの一部を復号化し、それぞれの要求に対する前記ターゲット・エージェントを決定するように構成される請求項6に記載のスイッチ。
  9. 前記相互接続は、アドレス相互接続である請求項1に記載のスイッチ。
  10. 前記相互接続は、データ相互接続である請求項1に記載のスイッチ。
  11. 複数のエージェントと、
    相互接続と、
    前記複数のエージェント及び前記相互接続に結合されたスイッチと
    を備え、前記スイッチは、複数の記憶域を備え、前記複数の記憶域は、前記スイッチに前記複数のエージェントにより送信された複数の要求を格納するように構成され、前記スイッチは、前記複数の記憶域内に格納されている前記複数の要求のアービトレーションを行うように構成され、前記スイッチは、前記相互接続上で選択された要求を送信するように構成され、前記選択された要求は、前記アービトレーションの勝者であるシステム。
  12. 前記複数の記憶域は、複数のキューを含み、前記複数のキューはそれぞれ、前記複数のエージェントのうちのそれぞれ1つのエージェントに対応し、前記それぞれのエージェントにより送信される要求を格納するように構成され、前記複数のキューはそれぞれ、前記複数の記憶域のうちの少なくとも2つを含む請求項11に記載のシステム。
  13. 前記スイッチは、第2の要求を選択する前に前記複数のエージェントのうちの第1のエージェントにより送信された第1の要求を選択された要求として選択するように構成され、前記第2の要求は、前記第1の要求よりも先に前記第1のエージェントにより送信される請求項11に記載のシステム。
  14. それぞれの要求は、対応する優先度を有し、前記スイッチは、前記第1の要求が前記第2の要求よりも高い優先度である場合に、前記第2の要求を選択するよりも前に前記第1の要求を選択するように構成される請求項13に記載のシステム。
  15. 前記スイッチは、一組の順序付け規則に従って前記第1及び第2の要求が順序変更可能である場合に、前記第2の要求を選択するよりも前に前記第1の要求を選択するように構成され、前記スイッチは、前記第1の要求が前記第2の要求よりも高い優先度である場合でも、前記一組の順序付け規則に従って前記第1及び第2の要求が順序変更可能でない場合に、前記第2の要求よりも前に前記第1の要求を選択しないように構成される請求項13に記載のシステム。
  16. 前記第1のエージェントは、前記第1の要求が前記第2の要求により順序変更可能であるかどうかを示す前記第1の要求による指示を送信するように構成され、前記スイッチは、前記第1の要求が前記第2の要求により順序変更可能であることを前記指示が示す場合に、前記第2の要求を選択するよりも前に前記第1の要求を選択するように構成される請求項15に記載のシステム。
  17. 前記スイッチは、前記複数の要求のうちのそれぞれの要求に対して前記複数のエージェントのうちの1つのターゲット・エージェントを決定するように構成され、前記複数の要求のうちの1つの要求が、前記要求の前記ターゲット・エージェントに基づいてブロックされる場合に、前記スイッチは、他のターゲット・エージェントへの他の要求を前記選択された要求として選択するように構成される請求項11に記載のシステム。
  18. 前記スイッチは、前記複数の要求のうちのそれぞれの要求のアドレスの一部を復号化し、前記要求に対する前記ターゲット・エージェントを決定するように構成される請求項17に記載のシステム。
  19. 前記相互接続は、前記スイッチと前記相互接続上で要求を受け取る前記複数のエージェントのそれぞれとの間で結合された1つ又は複数のクロック同期記憶装置を備える請求項11に記載のシステム。
  20. 前記1つ又は複数のフロップの個数は、前記スイッチから最も遠い受け取り側エージェントまでの前記要求の飛行時間に基づく請求項19に記載のシステム。
  21. 前記相互接続は、アドレス相互接続である請求項11に記載のシステム。
  22. 前記相互接続は、データ相互接続である請求項11に記載のシステム。
  23. 複数の記憶域内の複数のエージェントからの要求をキューに入れるステップと、
    前記複数の記憶域内の前記複数の要求のアービトレーションを行い、前記複数の要求のうちの選択された1つの要求を選択するステップと、
    前記選択された要求を相互接続上で送信するステップとを含む方法。
  24. 前記複数の記憶域は複数のキューを含み、前記複数のキューはそれぞれ、前記複数のエージェントのうちのそれぞれ1つのエージェントに対応し、それぞれのキューは、前記相互接続上で送信するため前記それぞれのエージェントにより生成される複数の要求を格納するように構成される請求項23に記載の方法。
  25. さらに、第1のキューから第2の要求を選択するよりも前に前記複数のキューのうちの前記第1のキューから第1の要求を選択するステップを含み、前記第2の要求は、前記第1の要求を送信するよりも前に前記第1のエージェントにより送信される請求項24に記載の方法。
  26. 前記第1の要求を前記選択するステップは、前記第1の要求が前記第2の要求よりも高い優先度であることに応答して実行される請求項25に記載の方法。
  27. 前記第1の要求を前記選択するステップは、前記第1の要求が一組の順序付け規則に従って前記第2の要求により順序変更可能であることに応答して実行される請求項25に記載の方法。
  28. 前記相互接続は、アドレス相互接続である請求項23に記載の方法。
  29. 前記相互接続は、データ相互接続である請求項23に記載の方法。
JP2008526262A 2005-08-11 2006-08-11 浅いエージェント毎のキューを伴うブロックしないアドレス・スイッチ Expired - Fee Related JP4851523B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/201,581 US7461190B2 (en) 2005-08-11 2005-08-11 Non-blocking address switch with shallow per agent queues
US11/201,581 2005-08-11
PCT/US2006/031520 WO2007022018A1 (en) 2005-08-11 2006-08-11 Non-blocking address switch with shallow per agent queues

Publications (3)

Publication Number Publication Date
JP2009514065A true JP2009514065A (ja) 2009-04-02
JP2009514065A5 JP2009514065A5 (ja) 2009-09-17
JP4851523B2 JP4851523B2 (ja) 2012-01-11

Family

ID=37440602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008526262A Expired - Fee Related JP4851523B2 (ja) 2005-08-11 2006-08-11 浅いエージェント毎のキューを伴うブロックしないアドレス・スイッチ

Country Status (9)

Country Link
US (3) US7461190B2 (ja)
EP (1) EP1922629B1 (ja)
JP (1) JP4851523B2 (ja)
CN (1) CN101305354B (ja)
AT (1) ATE489678T1 (ja)
DE (1) DE602006018483D1 (ja)
ES (1) ES2354748T3 (ja)
TW (1) TWI396091B (ja)
WO (1) WO2007022018A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014017006A (ja) * 2009-05-29 2014-01-30 Intel Corp PCIExpressでのIDベースストリームを可能にする方法及び装置
JP2018502362A (ja) * 2014-10-31 2018-01-25 日本テキサス・インスツルメンツ株式会社 ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062582B1 (en) 2003-03-14 2006-06-13 Marvell International Ltd. Method and apparatus for bus arbitration dynamic priority based on waiting period
US9087036B1 (en) 2004-08-12 2015-07-21 Sonics, Inc. Methods and apparatuses for time annotated transaction level modeling
US7620746B2 (en) * 2005-09-29 2009-11-17 Apple Inc. Functional DMA performing operation on DMA data and writing result of operation
US20070112945A1 (en) * 2005-11-12 2007-05-17 Lori Brown Supply and demand project management tool
US8868397B2 (en) * 2006-11-20 2014-10-21 Sonics, Inc. Transaction co-validation across abstraction layers
US8069279B2 (en) * 2007-03-05 2011-11-29 Apple Inc. Data flow control within and between DMA channels
US20080270658A1 (en) * 2007-04-27 2008-10-30 Matsushita Electric Industrial Co., Ltd. Processor system, bus controlling method, and semiconductor device
US9495290B2 (en) * 2007-06-25 2016-11-15 Sonics, Inc. Various methods and apparatus to support outstanding requests to multiple targets while maintaining transaction ordering
US8112450B2 (en) * 2008-01-31 2012-02-07 Microsoft Corporation Priority messaging and priority scheduling
JP5147584B2 (ja) * 2008-07-23 2013-02-20 株式会社日立製作所 ストレージサブシステム及びコントローラによるコマンド実行方法
US8121129B2 (en) * 2008-12-15 2012-02-21 International Business Machines Corporation Optimizing throughput of data in a communications network
US9514074B2 (en) 2009-02-13 2016-12-06 The Regents Of The University Of Michigan Single cycle arbitration within an interconnect
US8611335B1 (en) 2009-08-13 2013-12-17 Google, Inc. System and method for assigning paths for data flows through a wide-area network
US8351594B2 (en) 2010-02-08 2013-01-08 Genesys Telecommunications Laboratories, Inc. System for indicating priority levels for transaction and task engagement in a call center
US8379659B2 (en) * 2010-03-29 2013-02-19 Intel Corporation Performance and traffic aware heterogeneous interconnection network
US8972995B2 (en) 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US8868855B2 (en) * 2011-02-28 2014-10-21 Hewlett-Packard Development Company, L.P. Request management system and method for dynamically managing prioritized requests
CN102736997B (zh) * 2011-04-01 2017-05-03 中兴通讯股份有限公司 一种片上互联总线的仲裁方法和系统
US9021156B2 (en) 2011-08-31 2015-04-28 Prashanth Nimmala Integrating intellectual property (IP) blocks into a processor
US9176913B2 (en) 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
CN103024699B (zh) * 2011-09-22 2016-05-25 北京神州泰岳软件股份有限公司 一种短信发送方法和一种信息资源站实体
US8713234B2 (en) * 2011-09-29 2014-04-29 Intel Corporation Supporting multiple channels of a single interface
US8929373B2 (en) 2011-09-29 2015-01-06 Intel Corporation Sending packets with expanded headers
US8874976B2 (en) 2011-09-29 2014-10-28 Intel Corporation Providing error handling support to legacy devices
US8711875B2 (en) 2011-09-29 2014-04-29 Intel Corporation Aggregating completion messages in a sideband interface
US8713240B2 (en) 2011-09-29 2014-04-29 Intel Corporation Providing multiple decode options for a system-on-chip (SoC) fabric
US8805926B2 (en) 2011-09-29 2014-08-12 Intel Corporation Common idle state, active state and credit management for an interface
US8775700B2 (en) * 2011-09-29 2014-07-08 Intel Corporation Issuing requests to a fabric
US9053251B2 (en) 2011-11-29 2015-06-09 Intel Corporation Providing a sideband message interface for system on a chip (SoC)
US8856415B2 (en) * 2012-02-01 2014-10-07 National Instruments Corporation Bus arbitration for a real-time computer system
US8982695B2 (en) * 2012-09-29 2015-03-17 Intel Corporation Anti-starvation and bounce-reduction mechanism for a two-dimensional bufferless interconnect
US20150154132A1 (en) * 2013-12-02 2015-06-04 Sandisk Technologies Inc. System and method of arbitration associated with a multi-threaded system
CN103914413A (zh) * 2014-04-18 2014-07-09 东南大学 用于粗粒度可重构系统的外存访问接口及其访问方法
US9209961B1 (en) 2014-09-29 2015-12-08 Apple Inc. Method and apparatus for delay compensation in data transmission
US9684615B1 (en) * 2015-01-08 2017-06-20 Altera Corporation Apparatus and methods for multiple-channel direct memory access
KR101912135B1 (ko) 2015-07-20 2018-10-26 래티스세미컨덕터코퍼레이션 저속 버스 타임 스탬프 방법 및 회로부
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
US9934174B2 (en) * 2015-09-18 2018-04-03 Seagate Technology Llc Selectively enable data transfer based on accrued data credits
US10303631B2 (en) * 2016-03-17 2019-05-28 International Business Machines Corporation Self-moderating bus arbitration architecture
US10911261B2 (en) 2016-12-19 2021-02-02 Intel Corporation Method, apparatus and system for hierarchical network on chip routing
US10846126B2 (en) 2016-12-28 2020-11-24 Intel Corporation Method, apparatus and system for handling non-posted memory write transactions in a fabric
US10921874B2 (en) 2017-03-06 2021-02-16 Facebook Technologies, Llc Hardware-based operating point controller for circuit regions in an integrated circuit
US11231769B2 (en) 2017-03-06 2022-01-25 Facebook Technologies, Llc Sequencer-based protocol adapter
US11080188B1 (en) 2018-03-28 2021-08-03 Apple Inc. Method to ensure forward progress of a processor in the presence of persistent external cache/TLB maintenance requests
US10802974B2 (en) * 2018-10-15 2020-10-13 Texas Instruments Incorporated Virtual network pre-arbitration for deadlock avoidance and enhanced performance
US11397809B2 (en) * 2019-09-23 2022-07-26 Stmicroelectronics International N.V. Protection scheme for sensor segmentation in virtualization application
US10972408B1 (en) 2020-02-10 2021-04-06 Apple Inc. Configurable packet arbitration with minimum progress guarantees
US11422946B2 (en) 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations
US11675710B2 (en) 2020-09-09 2023-06-13 Apple Inc. Limiting translation lookaside buffer searches using active page size
US11615033B2 (en) 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4897833A (en) 1987-10-16 1990-01-30 Digital Equipment Corporation Hierarchical arbitration system
US4987833A (en) 1988-03-28 1991-01-29 Antosh Mark J Solar induction monorail apparatus and method
US5392434A (en) 1993-09-03 1995-02-21 Motorola, Inc. Arbitration protocol system granting use of a shared resource to one of a plurality of resource users
JP3525506B2 (ja) * 1994-09-02 2004-05-10 株式会社日立製作所 バスアービトレーション装置及び方法
WO1996037854A2 (en) 1995-05-26 1996-11-28 National Semiconductor Corporation Integrated circuit with multiple functions sharing multiple internal signal buses according to distributed bus access and control arbitration
EP0752666A3 (en) 1995-07-06 2004-04-28 Sun Microsystems, Inc. Method and apparatus for fast-forwarding slave requests in a packet-switched computer system
JPH1196108A (ja) * 1997-09-18 1999-04-09 Toshiba Corp 計算機システム及びバス制御装置
JPH11191076A (ja) * 1997-12-26 1999-07-13 Fujitsu Ltd 情報処理装置
JP3071752B2 (ja) * 1998-03-24 2000-07-31 三菱電機株式会社 ブリッジ方法、バスブリッジ及びマルチプロセッサシステム
US6145032A (en) * 1998-09-21 2000-11-07 International Business Machines Corporation System for recirculation of communication transactions in data processing in the event of communication stall
US6434649B1 (en) 1998-10-14 2002-08-13 Hitachi, Ltd. Data streamer
US6601151B1 (en) * 1999-02-08 2003-07-29 Sun Microsystems, Inc. Apparatus and method for handling memory access requests in a data processing system
KR100708096B1 (ko) * 2000-07-21 2007-04-16 삼성전자주식회사 버스 시스템 및 그 실행 순서 조정방법
US7028115B1 (en) 2000-10-06 2006-04-11 Broadcom Corporation Source triggered transaction blocking
US6622208B2 (en) * 2001-03-30 2003-09-16 Cirrus Logic, Inc. System and methods using a system-on-a-chip with soft cache
US6832279B1 (en) * 2001-05-17 2004-12-14 Cisco Systems, Inc. Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node
US6829665B2 (en) * 2001-09-28 2004-12-07 Hewlett-Packard Development Company, L.P. Next snoop predictor in a host controller
EP1308862B1 (en) 2001-10-29 2009-07-15 Telefonaktiebolaget LM Ericsson (publ) Optimization of the design of a synchronous digital circuit
US7539199B2 (en) * 2003-02-21 2009-05-26 Gireesh Shrimali Switch fabric scheduling with fairness and priority consideration
US7360008B2 (en) * 2004-12-30 2008-04-15 Intel Corporation Enforcing global ordering through a caching bridge in a multicore multiprocessor system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014017006A (ja) * 2009-05-29 2014-01-30 Intel Corp PCIExpressでのIDベースストリームを可能にする方法及び装置
JP2018502362A (ja) * 2014-10-31 2018-01-25 日本テキサス・インスツルメンツ株式会社 ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ
JP2020191122A (ja) * 2014-10-31 2020-11-26 日本テキサス・インスツルメンツ合同会社 ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ

Also Published As

Publication number Publication date
DE602006018483D1 (de) 2011-01-05
TW200809518A (en) 2008-02-16
TWI396091B (zh) 2013-05-11
US20070038791A1 (en) 2007-02-15
US7752366B2 (en) 2010-07-06
CN101305354A (zh) 2008-11-12
US20090055568A1 (en) 2009-02-26
US20100235675A1 (en) 2010-09-16
WO2007022018A1 (en) 2007-02-22
EP1922629B1 (en) 2010-11-24
US7970970B2 (en) 2011-06-28
ATE489678T1 (de) 2010-12-15
CN101305354B (zh) 2011-08-31
ES2354748T3 (es) 2011-03-17
EP1922629A1 (en) 2008-05-21
US7461190B2 (en) 2008-12-02
JP4851523B2 (ja) 2012-01-11

Similar Documents

Publication Publication Date Title
JP4851523B2 (ja) 浅いエージェント毎のキューを伴うブロックしないアドレス・スイッチ
US9535860B2 (en) Arbitrating memory accesses via a shared memory fabric
US9122608B2 (en) Frequency determination across an interface of a data processing system
US9372818B2 (en) Proactive quality of service in multi-matrix system bus
CN102414671A (zh) 对于不同源的分级内存仲裁技术
CN107003962B (zh) 保持计算系统中高速缓存一致性的方法、装置和计算系统
US9575921B2 (en) Command rate configuration in data processing system
JP5356024B2 (ja) 部分的にポピュレートされる階層型クロスバ
US7680971B2 (en) Method and apparatus for granting processors access to a resource
US9495314B2 (en) Determining command rate based on dropped commands
US20070156937A1 (en) Data transfer in multiprocessor system
KR100376610B1 (ko) 집적 멀티 마스터 버스 시스템에 대한 프리 중재 요청제한기
US7668996B2 (en) Method of piggybacking multiple data tenures on a single data bus grant to achieve higher bus utilization
WO2002037284A2 (en) Pipelined multi-access memory apparatus and method

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090729

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110920

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111018

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111020

R150 Certificate of patent or registration of utility model

Ref document number: 4851523

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141028

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees