JP2005518578A - コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム - Google Patents

コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム Download PDF

Info

Publication number
JP2005518578A
JP2005518578A JP2003536909A JP2003536909A JP2005518578A JP 2005518578 A JP2005518578 A JP 2005518578A JP 2003536909 A JP2003536909 A JP 2003536909A JP 2003536909 A JP2003536909 A JP 2003536909A JP 2005518578 A JP2005518578 A JP 2005518578A
Authority
JP
Japan
Prior art keywords
channel
tag
control commands
control command
transaction
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
JP2003536909A
Other languages
English (en)
Other versions
JP2005518578A5 (ja
JP4255833B2 (ja
Inventor
シー. エニス スティーブン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2005518578A publication Critical patent/JP2005518578A/ja
Publication of JP2005518578A5 publication Critical patent/JP2005518578A5/ja
Application granted granted Critical
Publication of JP4255833B2 publication Critical patent/JP4255833B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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

Abstract

コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム。コンピュータ・システムの入出力ノードにおいてコマンドにタグ付けするためのメカニズムは、複数の制御コマンドを受け取るように構成されたタグ回路(510)を有する。タグ回路は、この制御コマンドの各々に対してタグ値を生成するようにも構成され得る。タグ付けメカニズムは、タグ回路に結合されたバッファ回路(505)も有していてもよい。バッファ回路は、複数の仮想チャネルのそれぞれの仮想チャネルに各々対応する複数のバッファであって、前記それぞれの仮想チャネルに属する選択された制御コマンドを記憶する複数のバッファを有していてもよい。タグ付けメカニズムは、バッファ回路に結合され、制御コマンドの各々に対するタグ値に従って複数のバッファ間を調停するように構成された調停回路(520)をさらに有していてもよい。

Description

本発明は、コンピュータ・システムの入出力(I/O)に関し、より詳細には、I/Oノードにおけるトランザクション処理に関する。
典型的なコンピュータ・システムでは、1個以上のプロセッサが、1つ以上のバスを介して入出力(I/O)デバイスと通信し得る。I/Oデバイスは、そのI/Oデバイスに接続された周辺バスと、プロセッサに接続された共有バスとの間の情報の転送を管理するI/Oブリッジを介してプロセッサに結合されてもよい。さらに、I/Oブリッジは、システム・メモリとI/Oデバイスとの間、あるいはシステム・メモリとプロセッサとの間の情報の転送を管理することもある。
しかし、バス・システムの多くは幾つもの難点を抱えている。例えば、バスに複数のデバイスを接続すると、バスに信号を送るデバイスの静電容量が比較的増大することがある。さらに、共有バスに複数の接続ポイントが存在すると、高い信号周波数において信号の反射が発生し、信号の整合性が失われる。このため、通常はバスの信号周波数を比較的低く保ち、信号の整合性を許容可能なレベルに維持している。信号周波数を比較的低くすると、信号帯域幅が減少し、バスに接続されたデバイスの性能が低下する。
共有バス・システムの別の欠点として、多数のデバイスを接続できず拡張性に欠けることがある。共有バスの利用可能な帯域幅はほぼ固定されている(また、デバイスをさらに接続すると、バスの信号周波数の低下を招く場合は、利用可能な帯域幅が減少することがある)。バスに(直接的もしくは間接的に)接続されているデバイスが要求する帯域幅が、バスの利用可能な帯域幅を超えると、デバイスがバスにアクセスしようとしたときに、デバイスのストールが頻繁に発生し、その共有バスを含むコンピュータ・システムの全体的な性能が大幅に低下する可能性がある。I/Oデバイスによって使用される共有バスの例に、周辺機器インタフェース(peripheral component interconnect:PCI)バスがある。
I/Oブリッジング・デバイスの多くが、何らかのバッファリング・メカニズムを使用して、PCIバスから最終転送先バスへの転送を待っているトランザクションをバッファしている。しかし、バッファリングが、PCIバス上でストールを発生させることもある。ストールは、一連のトランザクションがキューにバッファされて、転送先バスへの転送を待っているときに転送先バスでストールが発生してトランザクションが転送できなくなるという場合に発生する。この場合、これらの転送待ちのトランザクションを完了させるトランザクションがキューに到着し、このトランザクションは他のトランザクションの後に格納される。このストールを解消するには、何らかの方法によってキュー内のトランザクションを並び替えて(リオーダー)、新しく到着したトランザクションが、転送を待っているトランザクションよりも先に転送されるようにする必要がある。このように、上記のような状況を回避するためには、PCIバスの仕様に、PCIバス・トランザクションの処理およびリオーダーについて定めた一連のリオーダー・ルールが規定されている必要がある。
一部のコンピュータ・システムでは、共有バスの難点の一部を解消するため、デバイス間すなわちノード間でパケット・ベースの通信を行っている。この種のシステムでは、ノードは、情報のパケットを交換することによって、相互に通信することができる。一般に、「ノード」とは、相互接続においてトランザクションに参加することが可能なデバイスを指す。例えば、この相互接続はパケット・ベースであってもよく、ノードはパケットを送受信するように構成されてもよい。一般に、「パケット」とは、パケットを送信する発信元すなわち「ソース」ノードと、このパケットを受信する宛先すなわち「ターゲット」ノードとの2つのノード間で行われる通信のことである。パケットがターゲット・ノードに到着すると、ターゲット・ノードは、パケットが伝達する情報を受け取って、その情報を内部的に処理する。ソース・ノードとターゲット・ノードとの間の通信経路に存在するノードが、ソース・ノードからターゲット・ノードにパケットを中継すなわち転送することもある。
さらに、パケット・ベースの通信とバス・ベースの通信とを併用しているシステムもある。例えば、あるシステムが、PCIバスとAGPなどのグラフィック・バスとを接続してもよい。PCIバスはパケット・バス・インタフェースに接続されており、パケット・バス・インタフェースは、PCIバス・トランザクションをパケット・トランザクションに変換して、パケット・バスで伝送されるようにする。同様に、グラフィックス・バスが、AGPトランザクションをパケット・トランザクションに変換するAGPインタフェースに接続されていてもよい。各インタフェースは、プロセッサのうちの1つに、または場合によっては別の周辺機器に接続しているホスト・ブリッジと通信し得る。
PCIデバイスがトランザクションを開始すると、パケット・ベースのトランザクションは、PCIローカル・バス仕様に規定されているものと同じ順序付けルールによって制約され得る。これは、PCIバス宛のパケット・トランザクションにも当てはまることがある。パケット・バス・インタフェースで発生し得るトランザクションのストールによって、パケット・バス・インタフェースでデッドロックが発生する可能性があるため、このような順序付けルールがパケット・ベースのトランザクションにも適用されている。このデッドロックが、逆にパケット・バスの側に、更なるストールを発生させる可能性がある。さらに、AGPトランザクションが、データが正しく配達されるように、トランザクションの順序付けに関する一連のルールに従うこともある。
I/Oノードの構成によっては、あるノードから別のノードへ、トランザクションが、ホスト・ブリッジに向かう方向かホスト・ブリッジから出る方向に転送され得る。あるいは、特定のノードにおいてトランザクションがパケット・トラフィックに注入され得る。いずれの場合でも、トランザクションが通信経路を送信される際に、トランザクションを制御することができるI/Oノードのアークテクチャが望ましい。
コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズムの種々の実施形態が開示される。一実施形態においては、コンピュータ・システムの入出力ノードにおいてコマンドにタグ付けするためのメカニズムは、複数の制御コマンドを受け取るように構成されたタグ回路を有する。このタグ回路は、この制御コマンドの各々に対してタグ値を生成するようにも構成され得る。タグ付けメカニズムは、タグ回路に結合されたバッファ回路も有していてもよい。バッファ回路は、複数の仮想チャネルのそれぞれの仮想チャネルに各々対応する複数のバッファであって、それぞれの仮想チャネルに属する選択された制御コマンドを記憶する複数のバッファを有していてもよい。さらに、このタグ付けメカニズムは、バッファ回路に結合され、制御コマンドの各々に対するタグ値に従って、複数のバッファ間を調停するように構成された調停回路を有していてもよい。
ある形態においては、制御コマンドの各々に対するタグ値は、制御コマンドの各々がタグ回路によって受信された順序を、他の制御コマンドと比較して示す値である。複数の仮想チャネルは、ポスト済みチャネル、未ポスト・チャネル、および応答チャネルを有する。タグ回路は、応答チャネルに関連付けられたカウンタの現在の値と未ポストチャネルに関連付けられたカウンタの現在の値とを使用して制御コマンドの各々に対してタグ値を生成するように構成され得る。
他の形態においては、タグ回路は、応答チャネルに関連付けられた制御コマンドの各々に、応答チャネルに関連付けられたカウンタの現在の値に対応するタグ値を割り当てるように構成され得る。タグ回路は、未ポスト・チャネルに関連付けられた制御コマンドの各々に、未ポスト・チャネルに関連付けられたカウンタの現在の値に対応するタグ値を割り当てるようにも構成され得る。タグ回路は、ポスト済みチャネルに関連付けられた制御コマンドの各々に、応答チャネルに関連付けられたカウンタの現在の値に対応するタグ値と、未ポスト・チャネルに関連付けられたカウンタの現在の値に対応するタグ値とを割り当てるようにも構成され得る。タグ回路は、タグ回路は、タグ回路が、未ポスト・コマンドに関連付けられた制御コマンドよりも先にポスト済みチャネルに関連付けられた制御コマンドを受け取ると、未ポスト・チャネルに関連付けられたカウンタをインクリメントし、タグ回路が、応答コマンドに関連付けられた制御コマンドよりも先にポスト済みチャネルに関連付けられた制御コマンドを受け取ると、応答チャネルに関連付けられたカウンタをインクリメントするようにさらに構成され得る。
他の形態においては、調停回路は、ポスト済みチャネルに対応するバッファに記憶されている制御コマンドに割り当てられたタグ値と、未ポスト・チャネルに対応するバッファに記憶されている制御コマンドに割り当てられたタグ値とを比較し、2つのタグ値が等しいかどうかを判定するように構成され得る。調停回路は、2つのタグ値が等しければ、ポスト済みチャネルに対応するバッファに記憶されている制御コマンドを処理し、2つのタグ値が等しくなければ、未ポスト・チャネルに対応するバッファに記憶されている制御コマンドを処理するようにも構成され得る。
さらに他の形態においては、調停回路は、ポスト済みチャネルに対応するバッファに記憶されている制御コマンドに割り当てられたタグ値と、応答チャネルに対応するバッファに記憶されている制御コマンドに割り当てられたタグ値とを比較し、2つのタグ値が等しいかどうかを判定するように構成され得る。調停回路は、2つのタグ値が等しければ、ポスト済みチャネルに対応するバッファに記憶されている制御コマンドを処理し、2つのタグ値が等しくなければ、応答チャネルに対応するバッファに記憶されている制御コマンドを処理するようにも構成され得る。
本発明は、様々に変形されたり他の形態とすることができるが、そのうちの特定の形態を、例として図中に図示され、かつ本明細書に詳細に記載する。しかし、図面および詳細な説明は、開示の実施形態に本発明を限定することを意図するものではなく、本発明が添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことが意図にあることが理解されるべきである。
図1を参照すると、コンピュータ・システムの一実施形態のブロック図が示される。このコンピュータ・システムは、各々がコヒーレント・パケット・バス15に相互接続されたプロセッサ10A〜10Dを備える。コヒーレント・パケット・バス15の各々の部分は、各プロセッサ10A〜Dとの間でポイント・ツー・ポイント・リンクを形成し得る。4個のプロセッサがポイント・ツー・ポイント・リンクを使用しているように図示されているが、プロセッサは4個でなくてもよいほか、他のタイプのバスをプロセッサ間の相互接続に使用してもよいという点が留意される。また、このコンピュータ・システムは、符号20,30,40によって示される3つのI/Oノードも備え、3つのI/Oノードは各々I/Oパケット・バス50B,50Cによってチェーン方式に接続されている。I/Oパケット・バス50Aは、ホスト・ノード/プロセッサ10AとI/Oノード20との間に結合されている。プロセッサ10Aは、I/Oパケット・バス50Aと通信を行うためのホスト・ブリッジを有することができるホスト・ノードとして示されている。プロセッサ10B〜Dが、他のI/Oパケット・バス(図示なし)と通信を行うホスト・ブリッジを備えていてもよい。I/Oパケット・バス50A〜Cによって形成される通信リンクは、ポイント・ツー・ポイント・リンクと呼ばれることもある。I/Oノード20は、一対の周辺バス25A,25Bと接続されている。I/Oノード30はグラフィック・バス35と接続されており、I/Oノード40は別の周辺バス45と接続されている。
プロセッサ10A〜10Dの各々の例に、Athlon(登録商標)マイクロプロセッサなどのx86マイクロプロセッサがある。さらに、I/Oパケット・バス50A〜50Cなどのパケット・バスの一例として、非コヒーレントなHyperTransport(登録商標)がある。周辺バス25A,25Bおよび周辺バス45の例として、周辺機器相互接続(PCI)バスなどの一般的な周辺バスがある。グラフィックス・バス35の例に、例えばアクセラレイティッド・グラフィックス・ポート(AGP)がある。しかし、上記以外のマイクロプロセッサおよび周辺バスを使用してもよいということが理解される。
3つのI/Oノードがホスト・プロセッサ10Aに接続されているが、ノードの数は3でなくてもよいほか、別のトポロジによってノード同士が接続されていてもよいという点が留意される。図1には、理解しやすいようにチェーン方式のトポロジが示されている。
図中の実施形態においては、プロセッサ10Aのホスト・ブリッジが、I/Oノード20,30または40などの下りノードから、上りパケット・トランザクションを受信し得る。あるいは、プロセッサ10Aのホスト・ブリッジが、例えば周辺バス25Aに接続され得る周辺機器(図示なし)などのデバイスに向けて、下り方向にパケットを送信することもある。
動作時に、I/Oノード20,40は、PCIバス・トランザクションを、I/Oストリーム内を伝わる上りパケット・トランザクションに変換し得るほか、下りパケット・トランザクションをPCIバス・トランザクションに変換し得る。プロセッサ10Aのホスト・ブリッジ以外のノードから送信されるパケットは、全てプロセッサ10Aのホスト・ブリッジに向かって上り方向に向かった後に、他のノードに転送され得る。プロセッサ10Aのホスト・ブリッジから送信されるパケットは、全てI/Oノード20,30または40などの他のノードに下り方向に流れる。本明細書中において、「上り」とは、プロセッサ10Aのホスト・ブリッジに向かうパケット・トラフィックの流れを指し、「下り」とは、プロセッサ10Aのホスト・ブリッジから離れる方向に向かうパケット・トラフィックの流れを指す。各I/Oストリームは、ユニットIDという識別子によって識別され得る。ユニットIDはパケット・ヘッダに含まれることもあれば、1つ以上のパケットに含まれる所定数のビットのこともあるということが考察される。本明細書中において、「I/Oストリーム」とは、同じユニットIDを有し、このため同じノードから送信された全てのパケット・トランザクションを指す。
説明のため、周辺バス45にある周辺機器が、周辺バス25の周辺機器宛のトランザクションを開始したとする。トランザクションはまず、一意的なユニットIDを有する1つ以上のパケットに変換されて、次に上り方向に送られ得る。ここで、パケットの各々には、そのパケットを識別する固有の情報が符号化されている。例えば、ユニットIDが、パケット・ヘッダ内に符号化されていてもよい。さらに、トランザクションの種類も、パケット・ヘッダ内に符号化されていてもよい。各パケットは、発信元のノードを識別するユニットIDを割り当てられ得る。I/Oノード20が、周辺バス25にある周辺機器に下りからパケットを転送しない可能性があるため、パケットが、プロセッサ10Aのホスト・ブリッジに向けて上り方向に送信され得る。プロセッサ10Aのホスト・ブリッジは、プロセッサ10Aのホスト・ブリッジのユニットIDを付けてこのパケットを下り方向に送信し、I/Oノード20は、このパケットを認識して、周辺バス25にある周辺機器のためにこれを要求する。次に、I/Oノード20は、パケットを周辺バス・トランザクションに変換して、このトランザクションを周辺バス25にある周辺機器に送信し得る。
パケット・トランザクションが上り方向または下り方向に伝わる際に、パケットは、1つ以上のI/Oノードを通過し得る。時として、このような通過点はトンネルと呼ばれることがあり、通過するI/Oノードはトンネル・デバイスと呼ばれることがある。上り方向から下り方向に、あるいは下り方向から上り方向に送信されるパケットは「転送(forwarded)」トラフィックと呼ばれることがある。さらに、特定のI/Oノードから発せられ、上りトラフィックに挿入されるパケット・トラフィックは、「注入(injected)」トラフィックと呼ばれることがある。
下記に詳述するように、I/Oノードは、I/Oノードに接続され得る種々のバスの順序付けルールを守るために、パケットのバッファリングのほかにトランザクションのリオーダーを行ってもよい。I/Oノードは、転送トラフィックと注入トラフィックとの両方による、トンネルに入るパケットおよびトンネルから出るパケットの流れを制御する制御ロジックも備え得る。
図2を参照すると、I/Oノードの一実施形態のブロック図が示される。このI/Oノードは、図1のI/Oノード20,30または40の代表例であり、以下、説明を簡単にするためにI/Oノード20と呼ぶ。図2のI/Oノード20は、コマンド・バス111を介して送信装置140に結合され、コマンド・バス112を介して周辺インタフェース150に結合されたトランザクション受信装置110を備え得る。また、I/Oノード20は、コマンド・バス121を介して送信装置130に結合され、コマンド・バス122を介して周辺インタフェース150に結合されたトランザクション受信装置120も備え得る。周辺インタフェース150は、コマンド・バス151を介して送信装置130,140に結合されているほか、周辺バス152にも結合されている。さらに、I/Oノード20は、制御コマンド・バス101を介して各受信装置および各送信装置に結合されているほか、周辺インタフェースに結合されたトランザクション制御ユニット100も備える。本明細書中において、コマンド・バスには、コマンド、制御およびデータ用の信号が含まれる。このため、それぞれのコマンド・バスを介してトランザクションまたはコマンドが送信されると言った場合、コマンド・ビットおよびデータ・ビットが含まれるということを指す。
図中の実施形態においては、受信装置110と送信装置140とは、I/Oトンネルの一通信経路を形成しており、受信装置120と送信装置130とは、I/Oトンネルの別の通信経路を形成している。この通信経路はそれぞれ一方向的であるため、いずれかの経路が上り経路か下り経路となる。このように、周辺インタフェース150からの注入トラフィックが、送信装置130,140のいずれかに提供される。
受信装置110,120の各々は、パケット・トランザクションを受け取って、受信バッファに入れる(図示なし)。各トランザクションが受信されると、受信したコマンドに含まれる情報の一部を含む制御コマンドが生成される。制御コマンドには、例えば、発信元ノードのユニットID、宛先の情報、データ・カウントおよびトランザクションの種類が含まれ得る。なお、制御コマンドは、他の情報を含んでいることもあれば、ここに挙げた情報の幾つかを含まないこともある。制御コマンドはトランザクション制御ユニット100に送信される。
周辺インタフェース150が周辺バス152からトランザクションを受信すると、周辺インタフェース150も、上記した制御コマンドと類似した情報を含む制御コマンドを生成し得る。また、周辺インタフェース150は、1つ以上のバッファ内にトランザクションを記憶して、トランザクション制御ユニット100に制御コマンドを送信し得る。
トランザクション制御ユニット100は、受け取った各制御コマンドを、受信順に1つ以上のバッファ構造に記憶し得る。トランザクション制御ユニット100は、トランザクション制御ユニット100が自身のバッファに記憶している制御コマンドに基づいて、ソース・バッファ(すなわち受信装置および周辺インタフェースの少なくともいずれか)内で待機中の、対応するコマンドを送信する順序を決定し得る。図3〜図6に関して下記に詳述するように、トランザクション制御ユニット100は、トランザクションの種類、送信装置および宛先のバッファの空きの有無、トランザクションが転送トラフィックか注入トラフィックかであるかなどに基づいて、自身のバッファにあるトランザクション間を調停し得る。このように、トランザクション制御ユニット100は、I/Oノードのトンネルを通過するトランザクション全体の流れを調整する機能を果たすこともできる。
トランザクション制御ユニット100が処理すべきトランザクション間を調停したら、トランザクション制御ユニット100は、各々のソース・デバイスに対して、転送を待っているトランザクションを宛先デバイスに送信するよう指示する。例えば、トランザクション制御ユニット100は、自身のバッファから、受信装置110から送信装置140に転送しようとしているトランザクションを表す制御コマンドを選択する。トランザクション制御ユニット100は、コマンド・バス111を介して送信装置140にトランザクションを送信するように、受信装置110に対して通知する。次に、送信装置140は、トランザクションをチェーンの次のノードに送信する。次のノードは、上りまたは下りにある別のI/Oノードであることもあれば、図1のホスト・プロセッサ10Aなどのホスト・ノードのこともある。さらに、トランザクション制御ユニット100と送信装置140とは、受信バッファに空きが存在するかどうかをもう1つのノードに知らせるロジック(図示なし)を備え得る。
図3を参照すると、トランザクション制御ユニットの一実施形態のブロック図が示される。簡潔を期すと共に説明を簡単にするために、図2と対応する回路部品には同じ符号が付されている。トランザクション制御ユニット100は、各々160,170,180の符号が付された3つのスケジューラを有する。スケジューラ160,170,180の各々は、一対の仮想チャネル・コマンド・バッファと調停およびバッファ管理ユニットとを有する。スケジューラ160の仮想チャネル・コマンド・バッファは、V.C.FIFO166,167と示されており、調停およびバッファ管理ユニットは符号168によって示される。同様に、スケジューラ170の仮想チャネル・コマンド・バッファは、V.C.FIFO176,177と示されており、調停およびバッファ管理ユニットは符号178によって示され、スケジューラ180の仮想チャネル・コマンド・バッファはV.C.FIFO186,187として示されており、調停およびバッファ管理ユニットは符号188によって示される。
一般に、「仮想チャネル」とは、様々な処理ノード間でパケットを伝達する通信経路のことである。各仮想チャネルは、他の仮想チャネルの資源に依存しない(すなわち、ある仮想チャネル内で流れるパケットは、通常は物理的な伝送の点で、別の仮想チャネルの有無による影響を受けない)。パケットは、パケット・タイプに応じて仮想チャネルに割り当てられる。同じ仮想チャネル内のパケットは、相互の伝送が物理的に競合することがある(すなわち、同じ仮想チャネル内のパケット間での資源の競合が発生することがある)が、基本的には、別の仮想チャネルのパケットとの伝送は物理的に競合しない。
パケットによっては、他のパケットと論理的に競合する場合もある(すなわち、プロトコル、一貫性などの理由により、あるパケットが別のパケットと論理的に競合することがある)。論理的な理由やプロトコル上の理由により、1番目のパケットが、2番目のパケットよりも先に宛先ノードに到着しなければならない場合に、2番目のパケットが1番目のパケットの伝送を(競合する資源を占有することによって)物理的にブロックしてしまうと、コンピュータ・システムがデッドロックに陥る可能性がある。1番目のパケットと2番目のパケットとに別の仮想チャネルを割り当てると共に、異なる仮想チャネル内のパケットが相互の伝送をブロックできないような伝送媒体をコンピュータ・システムに実装することによって、デッドロックの発生しない運用を実現することができる。特に、異なる仮想チャネルのパケットが同じ物理リンクを介して伝送されるという点に留意されたい。しかし、伝送前に受信バッファを利用することが可能であるため、仮想チャネル同士がこの共有資源を使用している場合であっても、仮想チャネルが相互にブロックし合うことはない。
一観点から見ると、種々のパケット・タイプの各々(例えば、種々のコマンド符号化の各々)が独自の仮想チャネルを割り当てられてもよく、このため、一実施形態においては、各仮想チャネルに別個のバッファが割り当てられる。仮想チャネル毎に別のバッファが使用され得るため、ある仮想チャネルからのパケットが、別の仮想チャネルからのパケットと物理的に競合し得ない(これは、この種のパケットが、他のバッファに入れられるためである)。
各スケジューラは、特定の宛先と2つのソースとに対応している。図中の実施形態においては、スケジューラ160は、図2の送信装置130を宛先に、受信装置120および周辺インタフェース/ブリッジ150をソースに有するトランザクションを制御する。同様に、図3のスケジューラ170は、図2の送信装置140が宛先であり、受信装置110およびブリッジ150が送信元であるトランザクションを制御する。最後に、図3のスケジューラ180は、図2のブリッジ150が宛先であり、受信装置110および受信装置120が送信元であるトランザクションを制御する。図3において、各仮想チャネル・コマンド・バッファは、それぞれの受信装置またはブリッジから、その受信装置またはブリッジが受け取ったトランザクションに対応する制御コマンドを受け取る。制御コマンドには、どのスケジューラに制御コマンドを送信するかを指定する宛先ビットが含まれていてもよい。通常、制御コマンドには、宛先ビットが1つだけ設定されている。しかし、トランザクションがブロードキャスト・メッセージの場合には、複数のスケジューラが制御コマンドを受け取ることができるように、複数の宛先ビットが設定されていてもよい。
議論を簡略化するために、スケジューラ160についてのみ詳述する。制御コマンドが受信されてV.C.FIFO166または167に格納されると、トランザクションの種類に応じてそれぞれのFIFO部に格納される。V.C.FIFO166と167とは同一であるため、V.C.FIFO166のみについて詳述する。V.C.FIFO166は、ポスト済み、未ポストおよび応答の3種類のトランザクションに対応する3つのFIFO部を有する。制御コマンドは、受信順にそれぞれのFIFOに格納される。しかし、トランザクションの種類によっては、元のコマンドを生成した種々のバスまたはデバイスのタイプに関連する順序付けルールを保持するために、トランザクションが受信順に処理されないこともある。
図4〜図6に関して下記に詳述するように、調停およびバッファ管理ロジック168は、1番目、2番目、それ以降に処理されるトランザクションを、V.C.FIFO166またはV.C.FIFO167のトランザクション間で調停するように構成され得る。例えば、応答コマンドより前にV.C.FIFO166に到着したポスト済み命令は、順序付けルールにより、この応答コマンドより後に処理する必要がある。さらに、調停およびバッファ管理ロジック168は、公平ルールの組と次のI/Oノードまたはホスト・ブリッジの受信バッファの空きの有無とに基づいて、どのV.C.FIFOのトランザクションを処理すべきか調停し得る。宛先が図2のブリッジ150である場合、その調停ルールは、上記の調停ルールとは異なっていてもよい。
図4を参照すると、スケジューラの一実施形態のブロック図が示される。簡潔を期すと共に説明を簡単にするために、図3の回路部品と対応するものには同一の符号を付している。トランザクション・スケジューラ400は、調停および公平ロジック450に結合された仮想チャネルFIFOバッファ410を備える。トランザクション・スケジューラ400は、これも調停および公平ロジック450に結合された仮想チャネルFIFOバッファ420も備える。調停および公平ロジック450はFIFOバッファ460に接続されており、FIFOバッファ460はバッファ管理ロジック470に接続されている。バッファ管理ロジックの出力は、出力レジスタ480によってラッチされる。
図3に関して上記したように、仮想チャネルFIFOバッファ410,420の各々は、例えば、図2の受信装置110またはブリッジ150などのそれぞれの送信元から制御コマンドを受信し得る。制御コマンドは、その制御コマンドが表すトランザクションの種類によって、仮想チャネルFIFOバッファ410,420に格納され得る。具体的にいえば、制御コマンドは、ポスト済みコマンド、未ポスト・コマンド、応答コマンドのいずれかを表し得、このためポスト済み、未ポストまたは応答の各キューを表し得る。
図中の実施形態においては、調停および公平ロジック450は、調停ユニット430,440および公平ユニット445を備える。調停ユニット430は、仮想チャネルFIFOバッファ410に記憶されている制御コマンドを1つ選択するように構成され得る。下記に詳述するように、この選択処理には、所定の調停アルゴリズムによって1つを「ウィナー(勝者)」として選択することが含まれ得る。同様に、調停ユニット440は、調停ユニット430と同様のアルゴリズムを使用して、仮想チャネルFIFOバッファ420に記憶されている制御コマンドを1つ選択するように構成され得る。次に、公平ユニット445は、調停ユニット430,440によってウィナーとして選択されたトランザクションのうちの1つを選択し得る。公平ユニット445は、トランザクションが転送トランザクションか、注入トランザクションかに基づいて、公平アルゴリズムを使用し得る。また、調停ユニット430,440は、スケジューラの出力先に応じて、次のI/Oノードあるいは図1に示したプロセッサ10Aのホスト・ブリッジの受信バッファなど、対応するトランザクションの宛先のバッファにあるバッファ空間を監視するロジック(図示なし)を有していてもよい。
図中の実施形態においては、制御コマンドがスケジューラ400内を伝わるのに3クロック・サイクルの遅延が生じ得る。仮想チャネルFIFOバッファ410および420をそれぞれ迂回するためのバイパス415およびバイパス425が図示されている。スケジューラ400がソースから制御コマンドを受け取り、ある仮想チャネルFIFOバッファの各キューが空である場合、仮想チャネルFIFOバッファをバイパスすることによって、1クロック・サイクル節約することが可能となる。例えば、未ポスト制御コマンドが、現在空である仮想チャネルFIFOバッファ410に格納される場合を考える。トランザクションの宛先のバッファに使用可能なバッファ空間が存在することが調停ユニット430によって示される場合、調停ユニット430にあるロジックによって、未ポスト制御コマンドが仮想チャネルFIFOバッファ410を迂回して、直接FIFOバッファ460に格納され得る。さらに、上記したように、公平ユニット445は、公平アルゴリズムに応じてバイパスを許可し得る。このように、上記の例においては、1クロック・サイクル分だけ遅延を短縮することができる。本実施形態においては3クロック・サイクルの遅延が発生していたが、遅延が3クロック・サイクルよりも短い実施形態や長い実施形態も可能であるということが考察される。さらに、バイパス415,425によって達成される実際の遅延の短縮が、本例よりも大きい場合もあれば小さい場合もある。
図4のFIFOバッファ460は、ウィナーの制御コマンドを受信し得る。図中の実施形態においては、FIFOバッファ460は2階層のバッファであるが、他の実施形態においては、FIFOバッファ460の階層数が多い場合もあれば少ない場合もあるということが考察される。
バッファ管理ロジック470は、図2の送信装置130または140、あるいはブリッジ150にあるバッファ空間を監視するように構成される。FIFOバッファ460にトランザクションが記憶されると、バッファ管理ロジック470は、次のバッファの空きの有無を確認して、バッファ空間に空きが生じるまで制御コマンドを保持するか、あるいは出力レジスタ480に出力する。制御コマンドが出力レジスタ480によってラッチされると、それぞれのトランザクションの送信元は、図2の送信装置130または140、あるいはブリッジ150に制御コマンドに対応するトランザクションを送信可能であることを通知される。
図5を参照すると、タグ付けロジックを備えたスケジューラの一実施形態のブロック図が示される。スケジューラ500は、仮想チャネルFIFOバッファ505に結合されたタグ付けロジック510を備える。仮想チャネルFIFOバッファ505は、ポスト済み、未ポストおよび応答の3種類のトランザクションに対応する3つのキューを有する。タグ比較/調停ロジック・ユニット520は、仮想チャネルFIFOバッファ505に結合されている。このほか、仮想チャネルFIFOバッファ505の分解図も示されている。この分解図には、未ポスト・キューと応答キューの各々は、対応するタグを1つ有することが示される。しかし、ポスト済みキューは、未ポストキューと応答キューとに対応する2つのタグを有する。
タグ付けロジック510は、各制御コマンドが仮想チャネルFIFOバッファ505に記憶される前に、その制御コマンドにタグを割り当て得る。制御コマンドには、図2の受信装置110またはブリッジ150などのソース・ユニットから制御コマンドを受信した順に、タグが割り当てられてもよい。タグは、制御コマンドの最後に追加されてもよい。
制御コマンドが仮想チャネルFIFOバッファ505の一番上の場所に達すると、タグ比較/調停ロジック・ユニット520は、3つの仮想チャネル間を調停して、ウィナーの制御コマンドを選択するように構成され得る。ウィナーは、順序付けルールのセットに基づいたアルゴリズムを使用して選択され、この順序付けルールのセットは、I/Oノードに接続されている周辺バスが従っている順序付けルールに対応したものであってもよい。一実施形態においては、この順序付けルールは、PCIの順序付けルールに対応したものであってもよい。別の実施形態においては、この順序付けルールは、AGPの順序付けルールに対応したものであってもよい。
図中の実施形態においては、仮想チャネルFIFOバッファ505には最大で16の場所を含むことができるため、タグは4ビットであり得る。しかし、他の実施形態においては、仮想チャネルFIFOバッファ505に含まれる場所の数が16以外であってもよく、このためタグのビット数が適宜変わってもよいという点が留意される。タグ付けロジック510は、仮想チャネルFIFOバッファ505に格納されている未ポスト制御コマンドおよび応答制御コマンドについて、現在のタグを監視するカウンタ・ロジック(図示なし)を備え得る。このタグは、ポスト済み制御コマンドを受信したとき、現在のポスト済み制御コマンドより先で、かつ以前のポスト済み制御コマンドより後に、ブロック可能な未ポストの制御コマンドまたは応答制御コマンドを少なくとも1つ受信している場合に、未ポスト・カウンタまたは応答カウンタをそれぞれインクリメントするアルゴリズムに従って割り当てられ得る。本明細書中において、未ポスト制御コマンドまたは応答制御コマンドがブロック可能であるとは、仮想チャネルFIFOバッファ505内で、未ポスト制御コマンドまたは応答制御コマンドが、ポスト済み制御コマンドを追い越すことができることを示す特別なビットが、各制御コマンド内でセットされている場合を指す。一実施形態においては、この特別なビットをPassPWビットと呼ぶ。
タグ付け・アルゴリズムの使用を示すために、表1に、制御コマンドを受信する順序と、ポスト済み、未ポストおよび応答の3つのキューに入るタグを示す。1番目の列は、9個の制御コマンドを受信する順序を示す。2番目の列は、受信コマンドの種類を示す。3番目の列は、未ポスト・コマンドおよび応答コマンドに割り当てられたタグを、4番目および5番目の列は、ポスト済み制御コマンドによってインクリメントされ得る後の未ポスト・コマンドおよび応答コマンドのカウンタ値を示す。ポスト済み制御コマンドには2つのタグが割り当てられるため、未ポスト・カウンタおよび応答カウンタの各々の現在のカウンタ値に示される両方のタグが割り当てられる。仮想チャネルFIFOバッファ505の分解図は、表1のコマンドが格納される様子を示す。
Figure 2005518578
表2に、PassPWビットにより、表1に示した受信制御コマンドのタグがどのように変わるかを示す。未ポスト制御コマンドまたは応答制御コマンドにPassPWビットがセットされている場合、次のポスト済み制御コマンドが到着しても、それぞれのカウンタがインクリメントされない。例えば、表2において、応答1にPassPWビットがセットされているため、ポスト済み2の制御コマンドが受信されたときに、応答カウンタがインクリメントされない。しかし、未ポスト2の制御コマンドにPassPWビットがセットされており、ポスト済み3の制御コマンドによって、未ポスト・カウンタと応答カウンタとがインクリメントされる。これは、最後のポスト済み制御コマンドより後で、かつ現在のポスト済み制御コマンドより前に、PassPWビットがクリアされた状態で未ポスト1制御コマンドが受信され、このためカウンタをインクリメントするタグ付けルールを満たしているためである。PassPWビットがセットされると、未ポスト制御コマンドまたは応答制御コマンドがポスト済み制御コマンドを追い越し可能であることを示すと記載したが、このロジックが逆転している実施形態も可能であるということが考察される。
Figure 2005518578
図5に戻ると、タグ比較および調停ロジック・ユニット520は、調停中に、各制御コマンドの後に追加されたタグを比較することによって、仮想チャネルFIFOバッファ505からウィナーの制御コマンドを選択するように構成される。さらに、タグ比較および調停ロジック・ユニット520は、タグを比較する前に、各仮想チャネルについて、次のI/Oノードのバッファ空間に空きがあるかどうかを判定してもよい。ブロックされている仮想チャネルがあれば、そのチャネルは、このサイクルの調停の対象とならない。3つのチャネル全てが調停の対象となる場合は、未ポスト・チャネルと応答チャネルとの間でラウンド・ロビン方式で調停が行われ、ポスト済みチャネルと未ポスト・チャネルとの間の比較、およびポスト済みチャネルと応答チャネルとの間の比較が個別に行われる。最後に、タグ比較および調停ロジック・ユニット520は、公平アルゴリズムを使用してウィナーを決定し得る。この公平アルゴリズムについては、図6を参照して下記に詳述する。
次に図6を参照すると、欠乏回避ロジックを備えたトランザクション・スケジューラの一実施形態のブロック図が示される。トランザクション・スケジューラ600は、調停回路650に結合された仮想チャネルFIFOバッファ610を備える。トランザクション・スケジューラ600は、これも調停回路650に結合された仮想チャネルFIFOバッファ620も備える。調停回路650はFIFOバッファ670に接続されており、FIFOバッファ670はバッファ管理ロジック680に接続されている。バッファ管理ロジックの出力は、出力レジスタ690によってラッチされる。
上記の図3,図4と同様に、仮想チャネルFIFOバッファ610,620の各々は、例えば、図2の受信装置110またはブリッジ150などの入力元から制御コマンドをそれぞれ受信し得る。制御コマンドは、その制御コマンドが表すトランザクションの種類に従って、仮想チャネルFIFOバッファ610,620に格納され得る。例えば、制御コマンドは、ポスト済みコマンド、未ポスト・コマンド、応答コマンドのいずれかを表し得、このためポスト済み、未ポストまたは応答の各キューを表し得る。
図中の実施形態においては、調停回路650は、調停ユニット630,640および公平回路645を備える。調停ユニット630,640は、調停サイクルの間に、仮想チャネルFIFOバッファ610,620のそれぞれに記憶されている制御コマンドを選択するように構成され得る。さらに、公平回路645は、調停ユニット630か640かのいずれが、ウィナーのトランザクションを選択するかを決定し得る選択条件を提供してもよい。図7に関して下記に詳述するように、公平回路645は公平アルゴリズムを使用して、帯域幅を振り分ける調停の優先順位を確立し得る。公平アルゴリズムは、所定数の調停サイクルの間、あるトランザクションがブロックされていることを判定する欠乏回避ロジックを使用してもよい。
図7を参照すると、図6に示した公平回路の一実施形態のブロック図が示される。公平回路645は、32個の3ビット・カウンタ0〜31を備えた公平ユニット700を有し、3ビット・カウンタ0〜31は8ビット・カウンタ705に結合されている。ラッチ710がカウンタ705に結合されている。挿入レート・ロジック715がラッチ710に結合されている。また、公平回路645は、3つの仮想チャネル・カウンタ755〜757を備えた欠乏ユニット750も有し、仮想チャネル・カウンタ755〜757は、欠乏閾値レジスタ760およびトランザクション選択ユニット775に結合されており、トランザクション選択ユニット775は公平ユニット700および欠乏ユニット750に結合されている。
一実施形態においては、トランザクションがトンネルを通って転送される度に、そのトランザクションを送信したI/Oノードに対応する3ビット・カウンタ0〜31がインクリメントされ得る。また、3ビット・カウンタ0〜31のいずれかがインクリメントされる度に、カウンタ705もインクリメントされ得る。3ビット・カウンタ0〜31のいずれか1つがオーバーフローすると、カウンタ705の値がラッチ710によって取得される。取得した値は、ある時点での下りノードのトランザクション要求の発生レート(rate)を表し得る。挿入レート・ロジック715は、取得した値を使用して、そのノードの許容可能な挿入レートを計算することができる。
トランザクション選択ユニット775によって、図6の調停ユニット630または640のポインタが、調停サイクル中に考慮されている仮想チャネル・バッファをポイントするようになる。転送用の仮想チャネル・バッファの仮想チャネルにも、挿入用のバッファの同じ仮想チャネルにもトランザクションが存在する場合があり得る。図7において、トランザクション選択ユニット775は、公平ユニット700によって確立された優先順位に従って、この2つの仮想チャネル・バッファを交互に選択し得る。しかし、トランザクションの宛先のバッファに空きが存在しないなどの要因によって、ある仮想チャネルがブロックされている場合には、調停を続行している間、調停ロジックは、ブロックされているチャネルを避け、次の仮想チャネルを選択し得る。ブロックされているチャネルが利用可能になったときに、転送用のチャネルのみに空きが存在し、公平アルゴリズムによって転送用のチャネルは挿入用のチャネルよりも優先されるため、転送用のチャネルからのトランザクションが送信され得る。以前はブロックされていたチャネルが次に利用可能になると、現在の調停サイクルにおいて優先されないため、このチャネルは再度スキップされ得る。この状態はしばらく続き、このために挿入用の仮想チャネルが「欠乏」し得る。別の実施形態においては、ノードの構成によっては、同じような状況下で、注入チャネルのために転送チャネルが欠乏し得るということが考察される。
特定のチャネルが欠乏しないように、欠乏ユニット750は、トランザクションがブロックされた回数を監視し得る。トランザクション選択ユニット775が、調停の対象となっているがブロックされているトランザクションがどれであるかを判定する度に、トランザクション選択ユニット775は、対応する仮想チャネル・カウンタ755〜757をインクリメントする。欠乏閾値レジスタ760は、調停中のチャネルのスキップ回数の最大数に対応する値を保持している。欠乏閾値レジスタ760に記憶される値は、特定の時点における計算によって求めた要求の発生レートによって動的に変更され得る。仮想チャネル・カウンタ755〜757の値のいずれかが、欠乏閾値レジスタに記憶されている値に達すると、次の調停サイクルで、ブロックされているトランザクションがトランザクション選択ユニット775によって選択されるように、対応する仮想チャネルの優先順位が変更され得る。このように、優先順位を動的に変更することによって、特定のチャネルの欠乏を回避することができる。上記のロジック構成は実装の一例に過ぎないという点が留意される。別法による実施形態においては、カウンタの数が異なるか、カウンタのビット数が異なるロジック構成を使用して、上記した機能を実現してもよいということが考察される。
また、上記の実施形態は、スケジューラの一実装であることも留意される。別法による実施形態においては、別の機能および異なる機能の少なくともいずれかを実行する別の実装を有していてもよいということが考察される。
上記の開示が完全に理解されれば、数多くの変形例および変更例が当業者にとって自明となるであろう。添付の特許請求の範囲はこのような変更例および変更例を全て包含するものと解釈されることが意図される。
本発明は、一般にコンピュータ・システムの入出力(I/O)に適用可能であり、より詳細には、I/Oノードにおけるトランザクション処理に適用可能である。
コンピュータ・システムの一実施形態を示すブロック図である。 I/Oノードの一実施形態の一実施形態を示すブロック図である。 トランザクション制御ユニットの一実施形態を示すブロック図である。 スケジューラの一実施形態を示すブロック図である。 タグ付けロジックを備えたスケジューラの一実施形態を示すブロック図である。 欠乏回避ロジックを備えたトランザクション・スケジューラの一実施形態を示すブロック図である。 公平回路の一実施形態を示すブロック図である。

Claims (10)

  1. コンピュータ・システムの入出力ノードにおいてコマンドにタグ付けするためのメカニズムであって、
    複数の制御コマンドを受け取って、前記制御コマンドの各々に対してタグ値を生成するように構成されたタグ回路(510)を有し、
    前記タグ回路に結合されたバッファ回路(505)を有し、前記バッファ回路(505)は、複数の仮想チャネルのそれぞれの仮想チャネルに各々対応するとともに前記それぞれの仮想チャネルに属する選択された制御コマンドを記憶する複数のバッファを備え、
    前記バッファ回路に結合され、前記制御コマンドの各々に対する前記タグ値に従って、前記複数のバッファ間を調停するように構成された調停回路(520)を有する、メカニズム。
  2. 前記制御コマンドの各々に対する前記タグ値は、前記制御コマンドの各々が前記タグ回路によって受信された順序を、他の制御コマンドと比較して示す値である請求項1に記載のメカニズム。
  3. 前記複数の仮想チャネルは、ポスト済みチャネル、未ポスト・チャネルおよび応答チャネルを有する請求項2に記載のメカニズム。
  4. 前記タグ回路は、前記応答チャネルに関連付けられたカウンタの現在の値と前記未ポスト・チャネルに関連付けられたカウンタの現在の値とを使用して前記制御コマンドの各々に対して前記タグ値を生成するようにさらに構成されている請求項3に記載のメカニズム。
  5. 前記タグ回路は、前記応答チャネルに関連付けられた前記制御コマンドの各々に、前記応答チャネルに関連付けられた前記カウンタの前記現在の値に対応する前記タグ値を割り当てるようにさらに構成されている請求項4に記載のメカニズム。
  6. 前記タグ回路は、前記未ポスト・チャネルに関連付けられた前記制御コマンドの各々に、前記未ポスト・チャネルに関連付けられた前記カウンタの前記現在の値に対応する前記タグ値を割り当てるようにさらに構成されている請求項5に記載のメカニズム。
  7. 前記タグ回路は、前記ポスト済みチャネルに関連付けられた前記制御コマンドの各々に、前記応答チャネルに関連付けられた前記カウンタの前記現在の値に対応する前記タグ値と、前記未ポスト・チャネルに関連付けられた前記カウンタの前記現在の値に対応する前記タグ値とを割り当てるようにさらに構成されている請求項6に記載のメカニズム。
  8. 前記タグ回路は、前記タグ回路が、前記未ポスト・コマンドに関連付けられた制御コマンドよりも先に前記ポスト済みチャネルに関連付けられた制御コマンドを受け取ると、前記未ポスト・チャネルに関連付けられた前記カウンタをインクリメントし、前記タグ回路が、前記応答コマンドに関連付けられた制御コマンドよりも先に前記ポスト済みチャネルに関連付けられた制御コマンドを受け取ると、前記応答チャネルに関連付けられた前記カウンタをインクリメントするようにさらに構成されている請求項7に記載のメカニズム。
  9. コンピュータ・システムの入出力ノードにおいてコマンドにタグ付けする方法であって、
    複数の制御コマンドを受け取るステップと、
    前記制御コマンドの各々に対してタグ値を生成するステップと、
    複数の仮想チャネルのそれぞれの仮想チャネルに各々対応する複数のバッファに、前記複数の制御コマンドを記憶するステップと、
    前記制御コマンドに関連付けられた前記タグ値を使用して前記複数のバッファ間を調停するステップと、とを有する方法。
  10. 前記制御コマンドの各々に対する前記タグ値は、前記制御コマンドの各々が前記タグ回路によって受信された順序を、他の制御コマンドと比較して示す値である請求項9に記載の方法。
JP2003536909A 2001-10-15 2002-08-09 コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム Expired - Fee Related JP4255833B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/978,351 US6728790B2 (en) 2001-10-15 2001-10-15 Tagging and arbitration mechanism in an input/output node of a computer system
PCT/US2002/025403 WO2003034249A1 (en) 2001-10-15 2002-08-09 Tagging and arbitration mechanism in an input/output node of a computer system

Publications (3)

Publication Number Publication Date
JP2005518578A true JP2005518578A (ja) 2005-06-23
JP2005518578A5 JP2005518578A5 (ja) 2006-01-05
JP4255833B2 JP4255833B2 (ja) 2009-04-15

Family

ID=25526009

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003536909A Expired - Fee Related JP4255833B2 (ja) 2001-10-15 2002-08-09 コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム

Country Status (8)

Country Link
US (1) US6728790B2 (ja)
EP (1) EP1442376B1 (ja)
JP (1) JP4255833B2 (ja)
KR (1) KR100905802B1 (ja)
CN (1) CN1311374C (ja)
DE (1) DE60204794T2 (ja)
TW (1) TW591490B (ja)
WO (1) WO2003034249A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011111210A1 (ja) * 2010-03-11 2011-09-15 富士通株式会社 データブロック読出制御装置
JP2014017006A (ja) * 2009-05-29 2014-01-30 Intel Corp PCIExpressでのIDベースストリームを可能にする方法及び装置
JP2014509427A (ja) * 2011-02-25 2014-04-17 インターナショナル・ビジネス・マシーンズ・コーポレーション Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721816B1 (en) * 2002-02-27 2004-04-13 Advanced Micro Devices, Inc. Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels
US20040059879A1 (en) * 2002-09-23 2004-03-25 Rogers Paul L. Access priority protocol for computer system
US7454551B2 (en) * 2004-05-26 2008-11-18 Synopsys, Inc. Reconstructing transaction order using clump tags
US20060215567A1 (en) * 2005-03-25 2006-09-28 Arun Raghunath Method and apparatus for monitoring path statistics
US7373444B2 (en) * 2005-04-15 2008-05-13 Kabushiki Kaisha Toshiba Systems and methods for manipulating entries in a command buffer using tag information
TWI335517B (en) * 2006-08-25 2011-01-01 Via Tech Inc Method of requests access and scheduling and related apparatus thereof
TWI385981B (zh) * 2009-05-14 2013-02-11 Ic Plus Corp 網路封包的傳遞裝置及其排程方法
CN103532875B (zh) * 2013-10-12 2017-11-03 丁贤根 一种用于pcie应用层接口的重排序方法
CN103746843A (zh) * 2013-12-31 2014-04-23 百度在线网络技术(北京)有限公司 一种用于处理rpc命令的方法与设备
US9824058B2 (en) * 2014-11-14 2017-11-21 Cavium, Inc. Bypass FIFO for multiple virtual channels
US9842074B2 (en) * 2015-01-30 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Tag allocation for non-posted commands in a PCIe application layer
US10545875B2 (en) 2017-12-27 2020-01-28 Advanced Micro Devices, Inc. Tag accelerator for low latency DRAM cache
US20230065395A1 (en) * 2021-08-30 2023-03-02 Micron Technology, Inc. Command retrieval and issuance policy

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0447228A3 (en) * 1990-03-16 1993-01-07 Hewlett-Packard Company Data stream concentrator providing attribute data storage and graphics pipeline access
JP3365705B2 (ja) * 1995-05-24 2003-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散型データ処理システム
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5809328A (en) 1995-12-21 1998-09-15 Unisys Corp. Apparatus for fibre channel transmission having interface logic, buffer memory, multiplexor/control device, fibre channel controller, gigabit link module, microprocessor, and bus control device
US6148395A (en) * 1996-05-17 2000-11-14 Texas Instruments Incorporated Shared floating-point unit in a single chip multiprocessor
US6278532B1 (en) 1996-12-20 2001-08-21 Link2It Apparatus and method for reception and transmission of information using different protocols
JP2970596B2 (ja) 1997-06-10 1999-11-02 日本電気株式会社 Atm通信装置
JPH1185345A (ja) 1997-09-02 1999-03-30 Toshiba Corp 入出力インターフェース回路及び半導体システム
US6016526A (en) 1997-09-19 2000-01-18 International Business Machines Corporation Method and apparatus for transferring data between buses having differing ordering policies via the use of autonomous units
US6076130A (en) 1998-03-19 2000-06-13 Hewlett-Packard Company System and method for efficient communication between buses
US6212621B1 (en) * 1998-06-24 2001-04-03 Advanced Micro Devices Inc Method and system using tagged instructions to allow out-of-program-order instruction decoding
US6173378B1 (en) * 1998-09-11 2001-01-09 Advanced Micro Devices, Inc. Method for ordering a request for access to a system memory using a reordering buffer or FIFO
US6289442B1 (en) * 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
JP2000134218A (ja) * 1998-10-28 2000-05-12 Fujitsu Ltd パケット多重処理方式
JP3446700B2 (ja) * 1999-12-20 2003-09-16 日本電気株式会社 複数ラインバッファ型メモリlsi
JP2001188638A (ja) * 2000-01-05 2001-07-10 Mitsubishi Electric Corp 双方向バス回路

Cited By (5)

* 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ベースストリームを可能にする方法及び装置
WO2011111210A1 (ja) * 2010-03-11 2011-09-15 富士通株式会社 データブロック読出制御装置
JP5316696B2 (ja) * 2010-03-11 2013-10-16 富士通株式会社 データブロック読出制御装置
US8898406B2 (en) 2010-03-11 2014-11-25 Fujitsu Limited Data block read-out control apparatus
JP2014509427A (ja) * 2011-02-25 2014-04-17 インターナショナル・ビジネス・マシーンズ・コーポレーション Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け

Also Published As

Publication number Publication date
DE60204794T2 (de) 2006-05-18
EP1442376B1 (en) 2005-06-22
KR100905802B1 (ko) 2009-07-02
DE60204794D1 (de) 2005-07-28
JP4255833B2 (ja) 2009-04-15
KR20040054721A (ko) 2004-06-25
WO2003034249A1 (en) 2003-04-24
US20030097500A1 (en) 2003-05-22
CN1568464A (zh) 2005-01-19
US6728790B2 (en) 2004-04-27
TW591490B (en) 2004-06-11
EP1442376A1 (en) 2004-08-04
CN1311374C (zh) 2007-04-18

Similar Documents

Publication Publication Date Title
US10838891B2 (en) Arbitrating portions of transactions over virtual channels associated with an interconnect
US7643477B2 (en) Buffering data packets according to multiple flow control schemes
JP4255833B2 (ja) コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム
US8085801B2 (en) Resource arbitration
US7924708B2 (en) Method and apparatus for flow control initialization
US6834314B1 (en) Method and apparatus for reordering packet transactions within a peripheral interface circuit
US20080107105A1 (en) System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel
US7773618B2 (en) System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels
JP3492852B2 (ja) ネットワークメッセージルート指定装置のための待ち時間短縮及びルート裁定方法
JP4391819B2 (ja) コンピュータ・システムの入出力ノード
US6681274B2 (en) Virtual channel buffer bypass for an I/O node of a computer system
US6721816B1 (en) Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels
JP2004242334A (ja) 高速交換環境でマルチキャストするシステム、方法及び論理
US20020009098A1 (en) Communication control method and device
US6820151B2 (en) Starvation avoidance mechanism for an I/O node of a computer system
US6839784B1 (en) Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel
US7773617B2 (en) System and method for arbitration for virtual channels to prevent livelock in a richly-connected multi-processor computer system
JP2004242336A (ja) 高速交換環境でマルチキャスティングするシステム、方法及び論理
WO2008057821A2 (en) System and method for preventing deadlock in richly-connected multi-processor computer system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050809

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080916

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: 20090120

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: 20090128

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

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees