(57)【要約】コンピュータシステムのＩ／Ｏノード用の周辺インターフェイス回路（３５０）である。コンピュータシステムの入出力ノード用の周辺インターフェイス回路は、第１バッファ回路（３９０）、第２バッファ回路（５３００）およびバスインターフェイス回路（４９０）を含む。第１バッファ回路はパケットコマンドを受信し、第１の複数のバッファを含む。第１の複数のバッファのそれぞれは、複数の仮想チャネルの各仮想チャネルに対応する。第２のバッファ回路は、バスインターフェイス回路からパケットコマンドを受信するように結合され、第２の複数のバッファを含む。第２の複数のバッファのそれぞれは、複数の仮想チャネルの各仮想チャネルに対応する。バスインターフェイス回路は前記第１バッファ回路に記憶された選択されたパケットコマンドを周辺バス（５６０）上での伝送に適したコマンドに変換するように構成される。
2005505856.tif 000002
【特許請求の範囲】
【請求項１】
発信元からのパケットコマンドを受信するように結合された第１バッファ回路であって、第１の複数のバッファを含み、前記第１の複数のバッファのそれぞれは、選択されたパケットコマンドを記憶する複数の仮想チャネルのうちの各仮想チャネルに対応し、前記選択されたパケットコマンドは前記各仮想チャネルに属する、第１バッファ回路（３９０）と、
前記第１バッファ回路に結合されるバスインターフェイス回路であって、前記第１バッファ回路に記憶された前記選択されたパケットコマンドを周辺バス（５６０）上での転送に適したコマンドに変換し、周辺バス上での転送に適した前記コマンドをパケットコマンドに変換するように構成されたバスインターフェイス回路（４９０）と、
前記バスインターフェイス回路からの前記パケットコマンドを受信するように結合された第２バッファ回路であって、第２の複数のバッファを含み、前記第２の複数のバッファのそれぞれは、選択されたパケットコマンドを記憶する前記複数の仮想チャネルのうちの各仮想チャネルに対応し、前記選択されたパケットコマンドは前記各仮想チャネルに属する、第２バッファ回路（５３０）とを備える、コンピュータシステムの入出力ノードのための周辺インターフェイス回路。
【請求項２】
前記第１バッファ回路および前記第２バッファ回路に結合され、前記バスインターフェイス回路への、および前記バスインターフェイス回路からの前記パケットコマンドの伝送を制御するように構成された制御ロジックユニット（４６０）をさらに備える、請求項１記載の周辺インターフェイス回路。
【請求項３】
前記第１バッファ回路に結合され、前記パケットコマンドを受信して、前記パケットコマンドのそれぞれに対してタグ値を生成するように構成されるタグロジックユニット（４９０）をさらに備え、前記タグ値は他のパケットコマンドに対する前記パケットコマンドのそれぞれの相対的な受信の順番に対応する、請求項２記載の周辺インターフェイス回路。
【請求項４】
前記タグロジックユニットはさらに、前記第１バッファ回路に前記パケットコマンドのそれぞれを記憶する前に、前記タグ値を前記パケットコマンドのそれぞれに付加するように構成されている、請求項３記載の周辺インターフェイス回路。
【請求項５】
前記第１バッファ回路に結合され、前記制御コマンドのそれぞれに対する前記タグ値に応じて、前記複数の第１バッファに記憶された前記パケットコマンド間の調停を行うように構成されているアービトレーションロジックユニット（４１０）をさらに備える、請求項４記載の周辺インターフェイス回路。
【請求項６】
前記第１発信元からのパケットデータを受信するように結合された第１データバッファ回路（４００）をさらに備え、前記第１データバッファ回路は前記入出力ノードのクロック速度でデータを受信するように構成され、データは前記第１データバッファ回路から前記周辺バスのクロック速度で読み出される、請求項５記載の周辺インターフェイス回路。
【請求項７】
前記バスインターフェイス回路からのパケットデータを受信するように結合された第２データバッファ回路（５５０）をさらに備え、前記第２データバッファ回路は前記周辺バスのクロック速度でデータを受信するように構成され、データは前記第２データバッファ回路から前記入出力ノードのクロック速度で読み出される、請求項６記載の周辺インターフェイス回路。
【請求項８】
前記第２バッファ回路に結合され、前記バスインターフェイス回路から受信された前記パケットコマンドのそれぞれに対する制御コマンドを生成するように構成された制御コマンドジェネレータユニット（５２０）をさらに備え、前記制御コマンドのそれぞれは対応するパケットコマンドのそれぞれの一部を含む、請求項７記載の周辺インターフェイス回路。
【請求項９】
第１通信路で第１パケットコマンドを受信するように構成された第１トランシーバ回路（１１０）と、
第２通信路で第２パケットコマンドを受信するように構成された第２トランシーバ回路（１２０）と、
請求項１ないし８のいずれか１項記載の１以上の周辺インターフェイス回路（１５０，３５０）とを備える、コンピュータシステムの入出力ノード。
【請求項１０】
１以上のプロセッサ（１０Ａ−Ｄ）と、
相互に接続されるとともに、前記１以上のプロセッサにポイントトゥーポイント・パケットバス（５０Ａ−Ｃ）を介して接続されている請求項９記載の１以上の入出力ノード（２０，３０，４０）とを備える、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムの入出力に関し、さらに詳細には入出力ノード内の周辺トランザクション処理に関する。
【背景技術】
【０００２】
一般的なコンピュータシステムでは、一以上のプロセッサが一以上のバスを介して入出力（Ｉ／Ｏ）デバイスと通信することができる。Ｉ／Ｏデバイスは、Ｉ／Ｏデバイスに接続された周辺バスとプロセッサに接続された共有バス（shared bus）との間の情報転送を管理するＩ／Ｏブリッジを通じて、プロセッサに結合することが可能である。さらに、Ｉ／Ｏブリッジは、システムメモリとＩ／Ｏデバイスとの間、またはシステムメモリとプロセッサとの間の情報転送も管理することができる。
【０００３】
残念なことに、多くのバスシステムは、いくつかの欠点をかかえている。例えば、複数のデバイスをバスに接続すると、バス上で信号を駆動するデバイスに対して、比較的大きな電気的キャパシタンスを発生させる。さらに、共有バス上の複数の取り付けポイントが高い信号周波数において信号の反射を生じさせ、信号の完全性を減少させる。結果として、信号の完全性を容認可能なレベルに保持するために、バス上の信号周波数は、一般的に比較的低く抑えられる。この比較的低い信号周波数は信号のバンド幅を減少させ、バスに取り付けられたデバイスの性能を制限する。
【０００４】
共有バスシステムの他の不利な点は、デバイスの数を大きく拡張することができないことである。共有バスの利用可能なバンド幅は実質的に固定されている（そして、新しくデバイスを追加するとバス上の信号周波数を減少させることになるのであれば、バンド幅は減少することもある）。バスに取り付けられるデバイスが必要とするバンド幅が、バスの利用可能なバンド幅を（直接的に、または間接的に）ひとたび超えると、バスにアクセスしようとするたびにデバイスはしばしば動作停止（ストール、stall）し、共有バスを含むコンピュータシステムの全体的な性能が落ちることは確実である。Ｉ／Ｏデバイスによって使用される共有バスの例は、ＰＣＩ（peripheral component interconnect）バス、または拡張ＰＣＩ（ＰＣＩ−Ｘ）バスである。
【０００５】
Ｉ／Ｏブリッジデバイスの多くは、ＰＣＩバスから最終的な目的のバスへの、継続中の多くのトランザクションをバッファリングするためにバッファ機構を用いる。しかしながら、バッファリングはＰＣＩバス上での動作停止を引き起こす可能性がある。動作停止は、一連のトランザクションがキュー（待ち行列）にバッファリングされ、目的のバスへ送信されるのを待っているときに、目的のバス上で転送の進行を停止させる動作停止が発生したときに、起こりうる。次に、これらの待ちトランザクションを完了させることを許可するためのトランザクションがキューに到着し、他のトランザクションの後に記憶される。動作停止を解除するためには、キュー中のトランザクションを何らかのかたちで並び替えて、貯まっているトランザクションより前に新しく到着したトランザクションの転送を許可するようにしなければならない。従って、このようなシナリオを避けるために、PCIバスの仕様は、PCIバス・トランザクションの順序付けおよび取り扱いを支配する１組の並べ替え（再組立て、リオーダリング（reordering））規則を規定している。
【０００６】
共有バスの欠点のいくつかを克服するため、あるコンピュータシステムでは、デバイス間またはノード間のパケットベース通信を使用している。そのようなシステムでは、複数のノードはお互いに情報のパケットを交換することによって通信することができる。一般的に、「ノード」とは、相互接続におけるトランザクションに参加することができる装置である。例えば、相互接続はパケットベースとすることができ、ノードはパケットを受信および送信するように構成することができる。一般的に言って、「パケット」は２つのノード間の通信であり、発信元または「ソース」ノードがパケットを送信し、目的または「ターゲット」ノードがパケットを受信する。パケットが目的のノードに到達すると、目的のノードはパケットによって運ばれてきた情報を受け入れ、内部で情報を処理する。ソースと目的のノードとの間の通信路に配置されているノードは、ソースノードから目的のノードへパケットを中継または転送する。
【０００７】
さらに、システムのなかには、パケットベースの通信と、バスベースの通信とを組み合わせて用いるものがある。例えば、あるシステムは、PCIバスとグラフィックスバス、例えばAGPバスを接続する。PCIバスは、PCIバスのトランザクションをパケットバス上に送信するためにパケットトランザクションに変換することが可能なパケットバスインタフェースに接続することができる。同様に、グラフィックスバスも、AGPバスのトランザクションをパケットトランザクションに変換することが可能なAGPインタフェースに接続することができる。各インタフェースは、プロセッサの一つに関連するホストブリッジと、また場合によっては他の周辺装置と通信することができる。
【０００８】
PCIバスがトランザクションを発生させると、パケットベースのトランザクションもPCIローカルバス仕様書に記述されているのと同じ順序づけ規則によって制約を受ける。ＰＣＩバス行きのパケットトランザクションにも同じことが当てはまる。これらの順序づけ規則は、パケットベースのトランザクションにおいても見ることができる。なぜなら、パケットバスインタフェースで起こりうるトランザクションの動作停止（ストール）は、パケットバスインタフェースでのデッドロックを引き起こす可能性があるからである。このデッドロックは、パケットバス組織においても、さらなる動作停止を引き起こす可能性がある。さらに、ＡＧＰトランザクションは、データの適切な転送を確実にするために、トランザクションの順序づけ規則セットに従ってもよい。
【０００９】
Ｉ／Ｏノードの仕様に応じて、トランザクションは、あるノードを介して他のノードへ、ホストブリッジへ向かう方向またはホストブリッジから離れる方向のいずれの方向へも、転送することができる。または、トランザクションはある特定のノードにおいて、そのノードに局所的に接続が可能な周辺バスによって、パケットトラフィックに注入することができる。いずれのシナリオにおいても、トランザクションが通信路に注入される場合にも、通信路から受け入れられる場合にも、周辺トランザクションをバッファリングし、制御することができる周辺インタフェース回路が望ましい。
【発明の開示】
【発明の概要】
【００１０】
コンピュータシステムのＩ／Ｏノードのための周辺インタフェース回路の様々な実施形態を開示する。一実施形態においては、コンピュータシステムの入出力ノードのための周辺インタフェース回路は、第１バッファ回路、第２バッファ回路、およびバスインタフェース回路を含む。第１バッファ回路は、ソース、例えば受信機（レシーバ）からのパケットコマンドを受信するように結合されている。第１バッファ回路は、複数の第１バッファを含むことができ、第１バッファのそれぞれは複数の仮想チャネルの各仮想チャネルに対応する。第２バッファ回路は、バスインタフェース回路からパケットコマンドを受信するように結合され、それぞれが複数の仮想チャネルの各仮想チャネルに対応する複数の第２バッファを含むことができる。複数の第１および第２バッファのそれぞれは、各仮想チャネルに属する、選択されたパケットコマンドを記憶する。複数のバッファのそれぞれの具体例は、例えばＦＩＦＯバッファである。バスインタフェース回路は、第１バッファ回路に結合され、第１バッファ回路に記憶された選択されたパケットコマンドを、周辺バス上での送信に適したコマンドに変換するように構成することができる。このバスインタフェース回路はさらに、周辺バス上での送信に適したコマンドを、パケットコマンドに変換するように構成することができる。
【００１１】
特定の実施態様において、周辺インタフェース回路は、第１バッファ回路および第２バッファ回路に結合した制御ロジックユニットを含むことができる。制御ロジックユニットは、バスインタフェース回路に対する、またはそれからのパケットコマンドの伝達を制御するように構成される。さらに、周辺インタフェース回路は、第１バッファ回路にも結合されるタグロジックユニットを含んでもよい。タグロジックユニットは受信した、各パケットコマンドに対してタグ値を生成するように構成できる。このタグ値は、各パケットコマンドの他のパケットコマンドに対する受信の順序に対応する。この周辺インタフェース回路はさらにアービトレーション（調停）ロジックユニットを含むことができる。このアービトレーション・ロジックユニットは、第１バッファ回路にも結合され、各制御コマンドのタグ値に応じて、複数の第１バッファに記憶されたパケットコマンド間の調停を行うように構成されている。
【００１２】
他の実施形態においては、コンピュータシステムは一以上のプロセッサ、例えばｘ８６タイプのプロセッサを含み、このプロセッサはポイントトゥーポイント（point-to-point）のパケットバスを介して一以上の入出力ノードに結合される。このパケットバスは、例えばHyperTransport（商標）バスであってもよい。コンピュータシステムは、さらに一以上の周辺バスを含み、この周辺バスは、一以上の入出力ノードおよび一以上の周辺デバイスのそれぞれの間で、アドレス、データおよび制御信号を伝達するように結合される。この周辺バスは、例えばＰＣＩまたはＰＣＩ−Ｘバスとすることができる。入出力ノードのそれぞれは、第１通信路において第１パケットコマンドを受信するように構成された第１トランシーバ回路と、第２通信路において第２パケットコマンドを受信するように構成された第２トランシーバ回路とを含む。さらに、Ｉ／Ｏノードは、上記実施形態において説明したような、一以上の周辺インタフェース回路を含む。
【００１３】
本発明は、様々な変更および代替形態をとる可能性があるが、添付の図面において、その特定の実施形態を一例として示し、以下で詳細に説明する。しかしながら、添付の図面および詳細な説明は、開示された特定の形態に本発明を限定することを意図したものではなく、反対に本発明は添付の特許請求の範囲によって規定されている、本発明の精神および範囲の範疇に入るすべての変形物、均等物および代替物に及ぶものである、ことを理解してもらいたい。
【発明を実施するための最良の形態】
【００１４】
図１に、コンピュータシステムの一実施形態のブロック図を示す。コンピュータシステムは、互いにコヒーレントパケットバス１５によって相互接続された複数のプロセッサ１０Ａから１０Ｄを含んでいる。コヒーレントパケットバス１５の各セクションは、プロセッサ１０Ａから１０Ｄの間のポイント間リンク（point-to-point link）を形成することができる。ポイント間リンクを用いる４つのプロセッサが示されているが、異なった数のプロセッサを用いてもよいし、他のタイプのバスでそれらを相互接続してもよい。コンピュータシステムはさらに３つのＩ／Ｏノード２０，３０，４０を含み、それぞれＩ／Ｏパケットバス５０Ｂ，５０Ｃで互いにチェーン（鎖の輪状に）接続される。ホストノード／プロセッサ１０ＡとＩ／Ｏノード２０との間をＩ／Ｏパケットバス５０Ａが結合する。プロセッサ１０Ａは、Ｉ／Ｏパケットバス５０Ａと通信するホストブリッジを含むことが可能なホストノードとして示されている。プロセッサ１０Ｂ−Ｄも、他のＩ／Ｏパケットバス（図示せず）と通信するホストブリッジを含んでもよい。Ｉ／Ｏパケットバス５０Ａ−Ｃによって形成される通信リンクもまたポイント間リンクと呼ばれる。Ｉ／Ｏノード２０は周辺バス２５Ａ−Ｂのペアに結合されている。Ｉ／Ｏノード３０はグラフィクスバス３５に結合され、Ｉ／Ｏノード４０は追加の周辺バス４５に接続される。
【００１５】
プロセッサ１０Ａ−Ｄのそれぞれの具体例としては、例えば、Athlon（商標）マイクロプロセッサのようなｘ８６マイクロプロセッサがあげられる。さらに、Ｉ／Ｏパケットバス５０Ａ−５０Ｃのようなパケットバスの一例としては、非コヒーレントなHyperTransport（商標）があげられる。周辺バス２５Ａ−Ｂおよび周辺バス４５の実例としては、例えばＰＣＩ（peripheral component interconnect）バスまたは拡張ＰＣＩ（PCI-X）バスのような一般的な周辺バスがあげられる。グラフィクスバス３５の実例としては、例えばＡＧＰ（accelerated graphics port）があげられる。しかしながら、その他のタイプのマイクロプロセッサや、その他のタイプの周辺バスを使用してもよいことが理解できるであろう。
【００１６】
本実施形態では、ホストプロセッサ１０Ａには３つのＩ／Ｏノードが接続されているが、他の実施形態においては異なった数のノードを持ってもよく、それらのノードを他のトポロジーによって結合してもよいことを理解していただきたい。図１に示したチェーン型のトポロジーは理解を容易にするために示したものである。
図示した実施形態においては、プロセッサ１０Ａのホストブリッジは、Ｉ／Ｏノード２０，３０，４０のようなダウンストリームのノードからアップストリームのパケットトランザクションを受信することが可能である。あるいは、プロセッサ１０Ａのホストブリッジは、例えば周辺バス２５Ａに接続される周辺装置（図示せず）のような装置に対して、パケットを下流（ダウンストリーム）に送信することができる。
【００１７】
動作中、Ｉ／Ｏノード２０および４０は、ＰＣＩバストランザクションをＩ／Ｏストリームを流れるアップストリーム・パケットトランザクションに変換することができ、さらにダウンストリーム・パケットトランザクションをＰＣＩバストランザクションに変換することができる。プロセッサ１０Ａのホストブリッジ以外のノードを発信元とするすべてのパケットは、他のノードに転送される前に、プロセッサ１０Ａのホストブリッジへとアップストリームに流れる。プロセッサ１０Ａのホストブリッジを発生源とするすべてのパケットは、Ｉ／Ｏノード２０，３０，４０のような他のノードへダウンストリームに流れる。ここで、「アップストリーム」はプロセッサ１０Ａのホストブリッジへ向かうパケットトラフィックの流れを意味し、「ダウンストリーム」はプロセッサ１０Ａのホストブリッジから離れる方向のパケットトラフィックの流れを意味する。各Ｉ／Ｏストリームは、ユニットＩＤと呼ばれる識別子によって特定可能である。ユニットＩＤはパケットヘッダの一部であってもよく、１パケットまたは複数のパケット中のまた別の指定された数のビットであってもよい。ここで、「Ｉ／Ｏストリーム」は、同じユニットＩＤを含むすべてのパケットトランザクションを意味し、従って同じノードを発信源とする。
【００１８】
例えば、周辺バス４５上の周辺装置は、周辺バス２５上の周辺装置に向けられたトランザクションを発信する。このトランザクションは最初に固有のユニットＩＤを持つ一以上のパケットに変換され、アップストリームに送信される。各パケットはそのパケットを特定する特定の情報によって符号化されうることを理解してもらいたい。例えば、ユニットＩＤはパケットヘッダ内に符号化することができる。さらに、トランザクションのタイプもパケットヘッダ内に符号化することができる。各パケットには、その発信元ノードを特定するユニットＩＤを割り当てることが可能である。Ｉ／Ｏノード２０はダウンストリームからのパケットを周辺バス２５上の周辺装置に転送することができないので、このパケットはプロセッサ１０Ａのホストブリッジにアップストリームに送信される。プロセッサ１０Ａのホストブリッジは、次に、Ｉ／Ｏノード２０がそのパケットを認識し、周辺バス２５上の周辺装置に対してそのパケットを要求するまで、プロセッサ１０ＡのホストブリッジのユニットＩＤとともにそのパケットをダウンストリームに送信し戻すことができる。Ｉ／Ｏノード２０は、次に、そのパケットを周辺バスのトランザクションに変換し、そのトランザクションを周辺バス２５上の周辺装置に送信することができる。
【００１９】
パケットトランザクションがアップストリームまたはダウンストリームに伝送される際には、パケットは１以上のＩ／Ｏノードを通過（pass through）する。この通過のことを、トンネル（tunnel）と呼ぶことがあり、そのＩ／Ｏノードのことをトンネル装置（tunnel device）と呼ぶことがある。アップストリームからダウンストリームへ、またはダウンストリームからアップストリームへ送信されるパケットは、「転送される」トラフィックと呼ばれる。さらに、特定のＩ／Ｏノードを発信元とし、アップストリームのトラフィックに挿入されるパケットトラフィックは、「注入された（injected）」トラフィックと呼ばれる。
【００２０】
以下でさらに詳細に説明するが、Ｉ／Ｏノードに接続される可能性のある様々なバスの順序づけ規則を順守するためには、Ｉ／Ｏノードはパケットのバッファリングとともに、トランザクションの並び替え（リオーダリング）機能も提供しなければならない。Ｉ／Ｏノードは、周辺装置からトンネルへ、およびトンネルから周辺装置へのパケットの流れを制御する制御ロジックを含んでいてもよい。
【００２１】
図２は、入出力ノードの一実施形態のブロック図である。入出力ノード１００は、トランシーバ回路１１０およびトランシーバ回路１２０を有する。トランシーバ回路１１０と１２０とは、Ｉ／Ｏトンネル１４０を介して互いに結合されている。トランシーバ回路１１０と１２０は、それぞれ送信機および受信機を有している（図示せず）。これらの送信機および受信機は、トランシーバ１１０の受信機がトランシーバ１２０の送信機に結合され、トランシーバ１２０の受信機がトランシーバ１１０の送信機に結合されるように、Ｉ／Ｏトンネル１４０を介して結合される。Ｉ／Ｏトンネル１４０は、Ｉ／Ｏノード１００を通じてパケットトラフィックを転送するのに用いられるコマンドおよびデータバスを含む。さらに、Ｉ／Ｏノード１００は、周辺インターフェイス回路１５０を含む。周辺インターフェイス回路１５０も、Ｉ／Ｏトンネル１４０を介してトランシーバ１１０および１２０に結合される。しかしながらすでに説明したように、周辺インターフェイス回路１５０で発信され、それからＩ／Ｏトンネル１４０に入ったトランザクションは、注入されたトランザクションと呼ばれる。Ｉ／Ｏノード１００はトンネル制御ユニット１３０をさらに含む。トンネル制御ユニット１３０は、トランシーバ１１０、１２０および周辺インターフェイス１５０の間のトランザクションを制御するために結合されている。Ｉ／Ｏノード１００はさらに、周辺インターフェイス回路１５０を介して、周辺バス２２０に結合されている。
【００２２】
図示されている実施形態では、トランシーバ１１０および１２０は、Ｉ／Ｏトンネル１４０を介した２つの単方向通信路の一部である。各通信路が単方向であるので、どちらの通信路をアップストリーム通信路またはダウンストリーム通信路として結合してもよい。従って、周辺インターフェイス１５０から注入されたトラフィックは、トランシーバ１１０または１２０のどちらかに供給される。トランシーバ１１０および１２０は、それぞれ受信バッファ（図示せず）においてパケットトランザクションを受信する。各トランザクションが受信される毎に、受信されたコマンドに含まれている情報の一部を含む制御コマンドが生成される。制御コマンドは、例えば、発信元ノードのユニットＩＤ、宛先情報、データ数、トランザクションタイプを含む。制御コマンドはその他の情報を含んでいてもよいし、ここで列挙した情報のどれかを含まなくてもよい、ことを理解してほしい。制御コマンドはトランシーバ１１０および１２０からトンネル制御ユニット１３０に送られる。トンネル制御ユニット１３０は、さらに受信されたトランザクションのうちのどちらが、どのトランシーバから送信されたのかを決定して、そのトランシーバに対してそのトランザクションをその宛先に送るように指示する。
【００２３】
図示された実施形態では、周辺インターフェイス回路１５０は、ダウンストリーム部分と、アップストリーム部分とを持つことができると考えられる。ダウンストリーム部分は、周辺バス２２０に接続された装置を宛先とするダウンストリームのトランザクションを処理することができる。アップストリーム部分は、周辺バス２２０に接続された装置を発信元とするトランザクションを処理することができる。したがって、周辺インターフェイス回路１５０は、ダウンストリーム・コマンドバッファ１６０およびダウンストリーム・データバッファ１７０を含み、それぞれはトンネル・インターフェイス・ロジック１５５を介してＩ／Ｏトンネル１４０に結合されている。ダウンストリーム・コマンドバッファ１６０およびダウンストリーム・データバッファ１７０は、それぞれバスインターフェイス回路２１０を介して周辺バス２２０に結合される。周辺インターフェイス回路１５０はさらにアップストリーム・コマンドバッファ１８０およびアップストリーム・データバッファ１９０を含み、それぞれはトンネル・インターフェイス・ロジック１５５を介してＩ／Ｏトンネル１４０に結合されている。アップストリーム・コマンドバッファ１８０およびアップストリーム・データバッファ１９０もまた、それぞれバスインターフェイス回路２１０を介して周辺バス２２０に結合される。周辺インターフェイス回路１５０はさらに、アップストリーム・コマンドバッファ１８０およびダウンストリーム・コマンドバッファ１６０の両方に結合された制御ロジックユニット２００を含む。
【００２４】
図示した実施形態において、周辺バス２２０は、例えばＰＣＩバス、ＰＣＩ−ＸバスおよびＡＧＰバスなどの様々な一般的周辺バスを例示したものであることを注意してほしい。さらに、バスインターフェイス回路２１０は、そのようなバスからの周辺バスコマンドを変換する回路を含むことができる。さらに、ある特定の実施形態として、バスインターフェイス回路２１０は、ＰＣＩ−Ｘのためのコンパック（商標）Rapid Enabler（ＣＲＥＷ）インターフェイスのようなバスインターフェイスであってもよい。最後に、ある実施形態においては、Ｉ／Ｏノード１００は２以上の周辺インターフェイス回路（図示せず）を含んでいてもよく、そのＩ／Ｏノードは周辺インターフェイス回路のそれぞれから送られてくるコマンド間の調停を実行することができるアービトレーションロジック（図示せず）を有することができる、と考えられる。
【００２５】
トランザクションは、どちらのトランシーバがダウンストリーム受信機として接続されているかに応じて、トランシーバ１１０または１２０から送られる。トランザクションのコマンド部分はダウンストリーム・コマンドバッファ１６０に記憶され、トランザクションのデータ部分はダウンストリーム・データバッファ１７０に記憶される。同様に、トランザクションがバスインターフェイス回路２１０から送られる場合には、トランザクションのコマンド部分はアップストリーム・コマンドバッファ１８０に記憶され、トランザクションのデータ部分はアップストリーム・データバッファ１９０に記憶される。制御ロジックユニット２００は、バスインターフェイス回路２１０およびＩ／Ｏトンネル１４０への、およびそれらからのトランザクションの伝達を制御するように構成されている。
【００２６】
以下でさらに詳細に説明するように、周辺インターフェイス回路１５０が周辺バス２２０からアップストリームトランザクションを受信するのに応答して、制御ロジックユニット２００が、トランシーバ１１０および１２０が生成する制御コマンドに類似した、制御コマンドを生成する。制御ロジックユニット２００はさらにこの制御コマンドをトンネル制御ユニット１３０に送ることができ、アップストリームコマンドをＩ／Ｏトンネル１４０のスケジュールに入れることを可能にする。さらに、制御ロジックユニット２００は、アップストリームコマンドに対応した信号をダウンストリーム回路に供給することができる。このアップストリームコマンドは、このダウンストリーム回路がダウンストリームの応答トランザクションの相対的順序を維持できるようにする。
【００２７】
図３は、周辺インターフェイス回路の一実施形態のブロック図である。周辺インターフェイス回路３５０は、ダウンストリーム部３６０およびアップストリーム部４５０を含む。周辺インターフェイス回路３５０はさらに、図２のＩ／Ｏトンネル１４０のようなＩ／Ｏトンネルに接続されうるトンネル・インターフェイス・ロジックユニット３５５を含む。図３のダウンストリーム部３６０では、トンネル・インターフェイス・ロジック３５５はさらにコマンドバッファ３７０に結合される。コマンドバッファ３７０はタグ付けロジックユニット３８０に結合される。タグ付けロジックユニット３８０は仮想チャネルコマンドバッファ３９０に結合される。仮想チャネルコマンドバッファ３９０はアービトレーションロジックユニット４１０に結合される。アービトレーションロジックユニット４１０はバスインターフェイス回路４７０に結合されている。仮想チャネルコマンドバッファ３９０はさらに非ポスト（non-posted, ＮＰ）リトライキュー４２０および分割応答（split response）キュー４３０に結合されている。トンネル・インターフェイス・ロジック３５５はさらにデータバッファ４００に結合され、データバッファ４００は次にバスインターフェイス回路４７０に結合されている。バスインターフェイス回路４７０は周辺バス５６０に結合され、周辺バス５６０は周辺装置５６５に結合されている。
【００２８】
アップストリーム部４５０では、バスインターフェイス回路４７０が、ＮＰコマンドバッファ４８０、解析ロジックユニット５００および遅延トランザクションロジック回路５１０に結合される。さらに、バスインターフェイス回路４７０がデータバッファ５５０に結合される。ＮＰコマンドバッファ４８０は、制御コマンドジェネレータ５２０およびＮＰソースタグ付けロジックユニット４９０に結合される。制御コマンドジェネレータ５２０は、仮想チャネルコマンドバッファ５３０およびトンネル・インターフェイス・ロジック３５５に結合されている。仮想チャネルコマンドバッファ５３０はトンネル・インターフェイス・ロジック３５５に結合されている。周辺インターフェイス回路３５０はさらに制御ロジックおよび記憶ユニット４６０を含み、制御ロジックおよび記憶ユニット４６０はダウンストリーム部３６０の分割応答キュー４３０およびデータバッファ４００に結合されている。制御ロジックおよび記憶ユニット４６０はさらにアップストリーム部４５０のＮＰソースタグ付けロジックユニット４９０およびＮＰコマンドバッファ４８０に結合されている。さらに、周辺インターフェイス回路３５０は繰り返しロジック５７０を含み、これらは周辺バス５８０などの周辺バスに関して上述したように動作することが理解できるであろう。
【００２９】
一般的に、「仮想チャネル」は様々な処理ノードの間でパケットを運ぶための通信路である。各仮想チャネルは他の仮想チャネルのリソースからは独立している（つまり、一つの仮想チャネルを流れるパケットは一般的に、物理的伝送の観点から、他の仮想チャネルにおけるパケットの存在の有無による影響を受けない。パケットは、パケットのタイプに基づいて仮想チャネルの割り当てを受ける。同じ仮想チャネルのパケットは、その他の送信と物理的に衝突する（同じ仮想チャネル内のパケットはリソースの衝突を生じさせる）が、異なった仮想チャネル内のパケット送信とは物理的に衝突しない。
【００３０】
あるパケットは他のパケットと論理的に衝突する（つまり、プロトコルの理由、コヒーレンシーの理由、またはその他の似たような理由から、一のパケットが他のパケットと論理的に衝突しうる）。もし第１のパケットが論理的／プロトコルの理由からその宛先のノードに、第２のパケットがその宛先のノードに到達する前に、到達していなければならないとすると、もし第２のパケットが物理的に第１のパケットの伝送をブロックしていると（競合するリソースを占有することによって）コンピュータシステムはデッドロックになりうる。第１および第２のパケットを分離した仮想チャネルに割り当て、パケットのようなコンピュータシステム内の伝送媒体をお互いの伝送をブロックできない分離した仮想チャネルに割り当てることによって、デッドロックなしの動作が達成できる。異なった仮想チャネルからのパケットは同じ物理リンク上を伝送されることに注意してもらいたい。しかしながら、伝送の前に受信バッファを利用することが可能なので、この共有リソースを使用していても、仮想チャネルは互いをブロックしない。
【００３１】
一つの観点からは、異なったそれぞれのパケットタイプ（例えば、異なったコマンド符号化方式のそれぞれ）にそれ自身の仮想チャネルを割り当てることができ、それによって本実施形態では、分離したバッファが各仮想チャネルに割り当てられる。各仮想チャネルに対して分離したバッファを使用することができるので、ある仮想チャネルからのパケットは他の仮想チャネルからのパケットとは物理的に衝突しない（そのようなパケットは他のバッファに格納される）。
【００３２】
従って、図示した実施形態では、仮想チャネルコマンドバッファ３９０および仮想チャネルコマンドバッファ５３０はそれぞれ３つの分離したＦＩＦＯ部を有し、それらは３つのタイプのトランザクション、ポスト（posted）、非ポスト（non-posted）および応答（response）に対応する。コマンドは、それらが受信された順番に、各ＦＩＦＯに格納される。しかしながら、元のコマンドを生成した装置のタイプまたはバスに関する順序づけ規則を保持するために、異なったタイプのトランザクションの間で順番に関係なくトランザクションを処理しなければならない。
【００３３】
ある実施形態では、コマンドバッファ３７０は深さ２（2-deep）のＦＩＦＯであって、図２のＩ／Ｏトンネル１４０から図３の仮想チャネルコマンドバッファ３９０に送られたコマンドのバッファリング機構として機能する。トランザクションが周辺インターフェイス回路３５０に対してダウンストリームに送られるとき、トランザクションのデータ部分はデータバッファ４００に記憶され、トランザクションのコマンド部分は仮想チャネルコマンドバッファ３９０に記憶される。しかしながら、まずタグ付けロジック３８０がコマンドに対してタグ値を生成し、それを付加するように構成されている。タグ値は、あるコマンドの、他の受信したコマンドに対する相対的な受信の順番に対応し、後続の調停サイクルで使用される。データおよびコマンドは、パケットに含まれるヘッダ情報によって同じパケットに属するものとして特定可能である。また、ある種の周辺バスはＩ／Ｏノードの内部クロック速度よりも遅いクロック速度で動作するので、データはＩ／Ｏノードのクロック速度を用いてデータバッファ４００にロードされ、異なったクロック速度、好適にはバスインターフェイス回路４７０に接続された周辺バスのクロック速度でアンロードされる。さらに、データバッファ４００および仮想チャネルコマンドバッファ３９０は、スペースが利用できないときには、そのことを任意のアップストリームロジックに通知するように構成できる。
【００３４】
コマンドのタイプ（つまり、ポスト、非ポストまたは応答）に応じて、コマンドは、仮想チャネルコマンドバッファ３９０の各仮想チャネルＦＩＦＯに記憶される。アービトレーションロジック４１０は、仮想チャネルコマンドバッファ３９０内のトランザクションの間で、第１に処理するトランザクション、第２に処理するトランザクション（以下同様）を調停するように構成されている。仮想チャネルコマンドバッファ３９０およびアービトレーションロジック４１０は、それらが共同してコマンドが処理される順番を決定し記憶するので、コマンドスケジューラーと考えられる。例えば、非ポストコマンドの前に仮想チャネルコマンドバッファ３９０に到着したポストコマンドは、アービトレーションロジック４１０によって確立された順序づけ規則に従って、非ポストコマンドの後に処理しなければならない可能性がある。アービトレーションロジック４１０はさらに、アービトレーションサイクルの間、タグ付けロジックユニット３８０によって割り当てられたタグ値を使用することができる。
【００３５】
さらに、複数の応答パケットが同じデータストリームまたはシーケンスに属することがある。これは、データストリームに対する要求のような共通の要求トランザクションからそれらが由来している場合である。周辺バスによっては、ダウンストリームロジックで順番がバラバラにパケットが受信されたときであっても、データストリーム内では正しい順番で応答パケットを届ける必要がある。さらに、データストリームの要求に応答して、周辺バス上で部分的な転送を実行しなければならない。データバッファ４００は、要求されたデータストリームの一部を形成するデータを含んでいてもよい。この一部を形成するデータセグメントが正しい順番であるかぎり、それらを周辺バスに転送することができる。
【００３６】
制御ロジックおよび記憶ユニット４６０は、レジスタやランダムアクセスメモリなどの記憶ユニットと、データを供給するのに用いられるロジックとを含み、図７の説明と併せて、以下で詳しく説明する。
【００３７】
図８および図９に関係して、以下で詳細に説明するように、調停の間、もし勝ったトランザクションが応答コマンドであった場合、この応答コマンドに関係するデータがデータバッファ４００にあるかどうかを判定する。もしデータがあるならば、周辺バス５６０上でバスサイクルを起動する。これは、コマンドおよびデータパケットを受信したバスインターフェイス回路４７０が、それらを周辺バス５６０上での伝送に適したアドレス、データおよび制御信号に変換することによって実行される。
【００３８】
もし勝利を獲得したコマンドがリードまたはライトのような非ポストコマンドであるならば、バスインターフェイス回路４７０に接続された周辺バスのタイプに応じて、周辺装置５６５は、例えば次のうちの一つを実行する：コマンドの受け入れおよび処理およびすべての要求されたデータとともにターゲット完了（done）サイクルまたは応答サイクルを送信する、リトライ指示をアサートする、コマンドの受け入れおよび分離応答指示をアサートする。図４の説明に関係して以下で詳細に説明するように、もしリトライ指示が周辺装置５６５によってアサートされると、非ポストコマンドを仮想チャネルコマンドバッファ３９０から回収して、ＮＰリトライキュー４２０に記憶することができる。図５の説明に関係して以下で詳細に説明するように、もし周辺バス５６０がＰＣＩ−Ｘバスであり、分離応答が受信されると、非ポストコマンドを仮想チャネルコマンドバッファ３９０またはＮＰリトライキュー４２０から回収して、分割応答キュー４３０に記憶することができる。
【００３９】
アップストリーム部４５０では、周辺装置５６５が周辺バス５６０上でバスサイクルを起動するとき、バスインターフェイス回路４７０はそのサイクルを、上述したようにコマンドおよびデータパケットを含むパケットトランザクションに変換することができる。データパケットはデータバッファ５５０に記憶することができ、コマンドは仮想チャネルコマンドバッファ５３０の各仮想チャネルに記憶することができる。仮想チャネルコマンドバッファ５３０への記憶の前に、コマンドのタイプに応じて、解析ロジック５００がコマンドをいくつかのより小さなコマンドに分解する。例えば、もし周辺装置５６５が、システムメモリに対する大きなデータブロックの非ポスト・ライトを要求したとすると、解析ロジック５００は、メモリの同じブロックについての、より小さなブロック単位のいくつかの非ポスト・ライトコマンドを生成する。一実施形態としては、このブロックをキャッシュラインの境界に沿って生成できることが考えられる。続いて、非ポスト・コマンドのそれぞれを仮想チャネルコマンドバッファ５３０に記憶することができる。非ポスト・リードコマンドも、要求の境界およびトランザクションがＰＣＩであるか、またはＰＣＩ−Ｘであるかに応じて、分解することができる。一実施形態では、ＮＰソースタグ付けロジック４９０は、ダウンストリームロジックが特定の応答コマンドが関係するデータストリームを決定するのに用いることができる、タグ値を生成することができる。さらに、図６から図９に関係して以下で詳細に説明するように、元々の非ポスト・コマンド（例えば、分解される前）をＮＰコマンドバッファ４８０に保持してダウンストリーム部３６０内のロジックに情報を供給することができる。ＮＰソースタグ付けロジック４９０は、アップストリームの非ポスト・コマンドに関するタグ値を生成することができる。一実施形態では、０から２９までのタグ値が生成される。しかしながら、他の実施形態では、他の適切な数のタグ値を生成することが可能であると考えられる。
【００４０】
アップストリームコマンドが仮想チャネルコマンドバッファ５３０内に記憶されると、制御コマンドジェネレータ５２０が、図２のトランシーバ１１０および１２０によって生成される制御コマンドに類似した制御コマンドを生成する。図３で、制御コマンドジェネレータ５２０はさらに、これらの制御コマンドを、トンネル・インターフェイス・ロジック３５５を通じて図２のトンネル制御ユニット１３０に送ることができ、それによってアップストリームコマンドをＩ／Ｏトンネル１４０のスケジュールに入れることができる。図３のトンネル・インターフェイス・ロジック３５５は、Ｉ／Ｏトンネル１４０と周辺インターフェイス回路３５０内のロジックとの間のインターフェイスを提供するのに必要な汎用のバッファ回路を含んでいてもよい。
【００４１】
遅延トランザクションロジック５１０は、バスインターフェイス回路４７０、ダウンストリーム部３６０内のロジックおよび図２のＩ／Ｏトンネルロジックとの組み合わせで動作する回路を含み、要求をただちに処理することができない周辺装置５６５に対してリトライ指示を送る。例えば、周辺装置５６５が非ポスト・リード要求をアップストリームに送り、そして非ポストチャネルはブロックされているか、またはデータの準備ができていないとする。遅延トランザクションロジック５１０は周辺装置５６５に対して、その要求を現在処理することができないこと、および後でその要求をリトライすべきことを指示することができる。
【００４２】
図４は、非ポスト・リトライバッファ回路の一実施形態のブロック図である。非ポスト（ＮＰ）リトライバッファ回路６５０は、非ポストコマンドアップデート回路６７０に結合された非ポストリトライＦＩＦＯ６６０を含む。
図示された実施形態では、非ポストリトライＦＩＦＯ６６０は、図３の仮想チャネルコマンドバッファ回路３９０の非ポストコマンドＦＩＦＯのような、非ポストコマンドバッファから受信した非ポストコマンドを記憶することができる。図３の説明に関係して上述したように、周辺装置５６５によってアサートされたリトライ指示に応答して、非ポストコマンドを仮想チャネルコマンドバッファ３９０から回収して、図４の非ポストリトライＦＩＦＯ６６０に記憶することができる。
【００４３】
非ポストリトライＦＩＦＯ６６０は、利用可能な記憶位置がない場合には、ＦＩＦＯフル（full）信号をアサートする。このフル信号は、図３のアービトレーションロジック回路４１０のようなアービトレーションロジックに対して指示を与える。フル信号がアサートされている間は、仮想チャネルコマンドバッファ回路３９０の非ポストコマンドＦＩＦＯは調停サイクルに参加することはできず、それによって追加のリトライ指示が発生した際の非ポストリトライＦＩＦＯ６６０のオーバーフローを防止する。
【００４４】
ひとたび非ポストコマンドが非ポストリトライＦＩＦＯ６６０に記憶されると、非ポストリトライＦＩＦＯ６６０の先頭のコマンドが、図３の仮想チャネルコマンドバッファ回路３９０のどれかの仮想に記憶された任意のコマンドとともに、調停サイクルに参加することができる。もし、図４の非ポストリトライＦＩＦＯ６６０の先頭に記憶された非ポストコマンドが調停サイクル中に選択されてバスサイクルを起動させるとき、そしてリトライ信号が図３の周辺バス５６０再度アサートされるとき、図４の非ポストコマンドアップデート回路６７０が選択された非ポストコマンドを非ポストリトライＦＩＦＯ６６０の先頭から取り除いて、その末尾に記憶し、それが再度当該ＦＩＦＯの先頭に到達する別の調停サイクルまで待機する。言い換えれば、この選択された非ポストコマンドはＦＩＦＯに書き戻される。このことが、非ポストコマンドアップデート回路６７０内の点線矢印で表されている。このサイクルの再試行（リトライ）は何回でも発生し、毎回コマンドが非ポストリトライＦＩＦＯ６６０の末尾に書き戻される。
【００４５】
図３の周辺インターフェイス回路３５０がＰＣＩモードで動作しているとき、図３の周辺バス５６０が、非ポストサイクルが部分的に完了したことを示すことがある。例えば、非ポスト・リードコマンドが１０個のデータセグメントを要求したとする。周辺装置５６５はリトライ指示をアサートするが、１０個のデータセグメントのうち５個で応答し、それによって応答の部分的な完了を示すことができる。部分的完了の表示を受信すると、図４の非ポスト・コマンドアップデート回路６７０は非ポストコマンドを修正して、残りのデータセグメントに対応した新しいデータ数およびアドレスが保存されるようにする。同様に、非ポスト・ライトコマンドも部分的に完了することがある。次に、非ポストコマンドアップデート回路６７０は修正された非ポストコマンドを非ポストリトライＦＩＦＯ６６０の末尾に記憶させ、その非ポストコマンドはそれが再度当該ＦＩＦＯの先頭に到達する別の調停サイクルまで待機する。ここでの用法として、例示の目的において、ＦＩＦＯの先頭とはコマンドがアンロードされる、つまり読み出されるＦＩＦＯ内の位置を意味し、ＦＩＦＯの末尾とはコマンドがストアされ、つまり書き込まれる位置を意味する。さらに、非ポストリトライＦＩＦＯ６６０からコマンドがアンロードされるにつれ、非ポストリトライＦＩＦＯ６６０内に記憶されたすべてのコマンドはそれが将来アンロードされる順番に持ち上がることが理解できる。別の実施形態としては、コマンドをＦＩＦＯの先頭に書き込み、ＦＩＦＯの末尾から読み出すことが考えられる。この場合、非ポスト・コマンドアップデート回路６７０はＦＩＦＯの先頭にコマンドを書き込む。
【００４６】
図５に、周辺インターフェイス回路の一実施形態におけるスリット応答指示（slit response indication）の取り扱いを示す流れ図を示す。図３および図５をまとめて参照して、処理は図５のステップ４３１から始まり、ステップ４３２に進む。ステップ４３２では、非ポストコマンドが図３のダウンストリーム部４５０で受信され、仮想チャネルコマンドバッファ３９０の非ポストＦＩＦＯに記憶される。図５のステップ４３３に進んで、調停サイクルが実行され、もし非ポストコマンドが勝った場合には処理はステップ４３４へと進み、そうでない場合には非ポストコマンドが勝つまで調停サイクルが継続する。従って、ステップ４３４へと進み、非ポストコマンドが選択され、例えば図３のバスインターフェイス回路４７０に含まれる変換ロジックに送られる。この非ポストコマンドは対応するバスサイクルにおいて周辺バス５６０上での伝送に適するように変形される。図５のステップ４３５に進んで、次に図３のバスインターフェイス回路４７０によってバスサイクルが開始される。これらの変換およびバスサイクルの開始プロセスは、図２の説明に関して上述したＣＲＥＸインターフェイス（図示せず）などの周辺バスに対する一以上のインターフェイスによって実行される一以上の中間のステップを含んでいてもよいことを理解してもらいたい。次に処理は図５のステップ４３６へ進む。ステップ４３５では、図３のアップストリーム部４５０およびバスインターフェイス回路４７０が、周辺バス５６０上の周辺装置５６５などの目的装置からの完了表示を待つ。もし非ポストコマンドがリード要求であったときは、完了表示は、すべての要求されたデータが存在していることを示す、「サイクル完了」信号のような制御信号を含む、要求されたすべてのデータである。もし非ポストコマンドがライト要求であったときは、完了表示は、データを伴わない完了のメッセージである。完了表示を受信すると、処理は図５のステップ４３７へと進む。ステップ４３７では、非ポストコマンドがライトコマンドであったときは、図３のアップストリーム部４５０が「目標完了」応答などの応答コマンドを、要求しているノードに対して送る。もし、非ポストコマンドがリードコマンドであったときは、アップストリーム部４５０は要求しているノードに、要求されたすべてのデータを含む応答コマンドを転送する。処理説明は図５のステップ４３８で終了する。
【００４７】
ステップ４３６に戻って、図３の周辺バス５６０から受信した応答が完了メッセージでない場合、それは図４との関係で詳細に説明したリトライ表示である可能性がある。応答は分割応答表示であってもよく、図５のステップ４３９で分割応答表示が受信される。ステップ４４０に進んで、分割応答表示に応答して、非ポストコマンドが図３の分割応答キュー４３０に記憶される。非ポストコマンドは、バス番号、デバイス番号、関数番号、カウントおよびＩＤ番号などのバスサイクル情報を含みうる。この情報は、目的の装置（デバイス）から受信した任意の応答サイクルを獲得するのに用いることができる。図５のステップ４４１に進んで、もし非ポストコマンドがリードコマンドであったときは、受信された分割応答はリードされたデータを伴う。この場合、応答コマンドは任意の利用可能なデータとともに要求しているノードに送られる。ステップ４４２に進んで、もし分割完了が受信されると、それは非ポスト・ライトコマンドに応答する分割完了メッセージであるか、要求されたすべてのデータを含む分割完了である。ステップ４４３に進んで、分割完了サイクル情報が図３の分割応答キュー４３０内に記憶された任意の非ポストコマンドと比較される。対応する非ポストコマンドが決定されると、処理は図５のステップ４４４へと進む。ステップ４４４では、もし分割完了が分割完了メッセージであるときは、「目標完了」応答などの応答コマンドが要求しているノードに送られる。もし非ポストコマンドがリードコマンドであるならば、図３のアップストリーム部４５０は要求されたすべてのデータを含む応答コマンドを要求しているノードに送信することができる。図５のステップ４４５に進んで、すべてのデータまたは分割完了メッセージが受信されると、対応する非ポストコマンドが図３の分割応答キュー４３０から回収される。
【００４８】
ステップ４４２に戻って、分割完了が受信されないときは、処理はステップ４４６に進み、分割応答が受信される。次に処理はステップ４４７に進み、分割応答サイクル情報が、図３の分割応答キュー４３０内に記憶されたすべての非ポストコマンドと比較される。対応する非ポストコマンドが決定されると、処理は図５のステップ４４８へ進む。ステップ４４８では、図３のアップストリーム部４５０が、利用可能なデータと非ポストコマンドからの情報を含む応答コマンドを要求しているノードに送信する。処理はステップ４４２へと戻り、他の応答を待つ。ステップ４４６へと戻って、分割応答が受信されないときは、処理はステップ４４２へと戻り、他の応答を待つ。
【００４９】
図６は、バッファ利用可能性ＦＩＦＯ構造を含むバッファ回路の一実施形態のブロック図である。バッファ回路６８０は、非ポスト・コマンドバッファ６９０に結合されたバッファ利用可能性ＦＩＦＯ６８５を有する。バッファ利用可能性ＦＩＦＯ６８５はさらにライトロジック６８６およびリタイアロジック６８７に結合されている。
【００５０】
非ポストコマンドバッファ６９０は、図３の周辺バス５６０のような周辺バスから受信したコマンドに対応する非ポストコマンドを記憶する。図３の説明に関連して上述したように、アップストリームの非ポストコマンドは、そのアップストリームの非ポストコマンドに含まれている情報を必要とするダウンストリームの回路がそれを使用するために保持される。非ポスト・コマンドバッファ６９０にコマンドを記憶するのを促進するために、バッファ利用可能性ＦＩＦＯは、非ポスト・コマンドバッファ６９０内の次の利用可能な位置を示すことができる。
【００５１】
非ポスト・コマンドバッファ６９０が空であるときは、非ポスト・コマンドバッファ６９０がいっぱいになるまで、コマンドをシーケンシャルに記憶することができる。非ポストコマンドに関係する応答の受信の順番に応じて、非ポストコマンドは除去され、または順番に関係なく回収される。これによって、調停パターンに「穴」または空き位置を残す。従って、非ポスト・コマンドバッファ６９０に任意の新しいコマンドを記憶するために、バッファ利用可能性ＦＩＦＯ６８５を用いて、利用可能な位置を追跡記録することができる。
【００５２】
図示された実施形態では、非ポスト・コマンドバッファ６９０は８つの位置を含んでいる。バッファ利用可能性ＦＩＦＯ６８５も８つの位置を含み、バッファ利用可能性ＦＩＦＯ６８５内の８つの位置のそれぞれは３ビットの値を記憶することができる。バッファ利用可能性ＦＩＦＯ６８５に記憶された値は、非ポスト・コマンドバッファ６９０内の位置のアドレスに対応する。従って、３ビットの値のそれぞれは非ポストコマンドバッファ６９０に対するインデックスとして用いることができる。他の実施形態では、他の適切な位置の数および異なったビット数を採用することができる、ことが考えられる。バッファ利用可能性ＦＩＦＯ６８５はＦＩＦＯ構造なので、値はそれらが書き込まれた順番で読み出される。従って、本実施形態では、値は、バッファ利用可能性ＦＩＦＯ６８５のボトム（末尾）に書き込まれ、そのトップ（先頭）から読み出されるといえる。しかしながら、他の実施形態においては、トップおよびボトムという用語は相互に使用可能であると考えられる。さらに、他の実施形態においては、バッファ利用可能性ＦＩＦＯ６８５内の各位置を示すのにリードおよびライトポインタを使用可能であることが考えられる。
【００５３】
初期化時には、非ポストコマンドバッファ６９０は空であり、従ってすべての位置が利用可能である。バッファ利用可能性ＦＩＦＯ６８５は、バッファ利用可能性ＦＩＦＯ６８５のトップが非ポストコマンドバッファ６９０の位置０のアドレスに対応するインデックス値を含むように、初期化することができる。バッファ利用可能性ＦＩＦＯ６８５の次の位置は位置１、その他のアドレスに対応するインデックス値を含む。従って、非ポストコマンドが到着したとき、ライトロジック６８６はバッファ利用可能性ＦＩＦＯ６８５のトップに含まれているインデックス値を読み込み、その後、位置０のアドレスにコマンドを書き込む。コマンドが記憶されると、バッファ利用可能性ＦＩＦＯ６８５に記憶されていたすべてのインデックス値が位置ひとつ分だけ上方にシフト（シフトアップ）し、それによって位置１のアドレスはバッファ利用可能性ＦＩＦＯ６８５のトップ位置となる。
【００５４】
特定のダウンストリームコマンドが完了して、非ポストコマンドバッファ６９０に記憶された対応する非ポストコマンドがこれ以上必要なくなったとき、それは非ポストコマンドバッファ６９０から回収されうる。従って、非ポスト・コマンドバッファ６９０は、非ポストコマンドが記憶されていた位置を利用可能にし、リタイアロジック６８７に対応する表示を供給する。リタイアロジック６８７は、その位置が利用可能になったときを決定でき、それに応答して、バッファ利用可能性ＦＩＦＯ６８５に対する利用可能な位置のアドレスに対応するインデックス値を、バッファ利用可能性ＦＩＦＯ６８５のボトムに書き込む。従って、バッファ利用可能性ＦＩＦＯ６８５のトップ位置は、利用可能な位置が存在するときに、利用可能な位置のアドレスに対応するインデックス値を含む。非ポスト・コマンドバッファ６９０に利用可能な位置がない場合には、ライトロジック６８６は非ポストコマンドバッファ６９０にどんなコマンドも記憶することを禁止される。
【００５５】
図７に、図３の制御ロジックおよび記憶ユニットの一実施形態の典型的なダイアグラムを示す。制御ロジックおよび記憶ユニット４６０は、バッファ利用可能性レジスタ６００、先頭レジスタ６１０、次ポインタレジスタ６２０、末尾レジスタ６３０および分割応答ポインタレジスタ６４０を含む。
【００５６】
図示された実施形態においては、先頭レジスタ６１０は２９ビットを有し、それは図３のＮＰソース・タグ付けロジックユニット４９０によって生成された２９の可能性のあるタグ値に対応する。先頭レジスタ６１０は、どのコマンドパケットが各データストリームの第１コマンドパケットであるのかを示すのに使用される。例えば、ビット０および３が、タグ値０と３を有するコマンドパケットが先頭パケットであることを示すためにセットされる。ここで、データストリームとは、データ要求に関連した一以上のパケットシーケンス中の任意の数のパケットを指す。例えば、非ポスト・リード要求コマンドは、同じデータストリームに属するいくつかのリードコマンドに分解することができる。２パケット以上を含むデータストリームについては、次ポインタ６２０および末尾レジスタ６３０を用いて、データストリーム中の残りのパケットの順番を追跡記録することができる。
【００５７】
次ポインタ６２０も２９の位置を含む。それぞれの位置は、少なくとも２９個のタグ値を表すために５ビットを記録することができる。従って、各位置は２９個のタグ値の一つを表すことができる。従って、次ポインタ６２０の各位置に記憶された値は、次ポインタ６２０内の次の位置を示すために使用できる。さらに、各位置に記憶された値は、特定のデータストリーム内の次のパケットのタグ値をも表す。従って、次ポインタ６２０内に記憶された値のシーケンスは、送られた順番に受信されていない可能性のあるデータストリーム中の多くのパケットの順番を再構成または検証するために使用することができる。
【００５８】
末尾レジスタ６３０もまた２９ビットを含み、それぞれが２９個のタグ値に対応する。末尾レジスタ６３０は、特定のデータストリーム中の最終パケットに対応するタグ値を表すのに使用することができる。図示された実施形態においては、ビット２および５がセットされて、タグ値０および３を有するコマンドパケットが末尾パケットであることを示す。
【００５９】
上述の実施形態においては末尾レジスタを特定のデータストリーム中の最終パケットを識別するために用いているが、別の実施形態では、特別な値を次ポインタ６２０の位置に記憶することができると考えられる。この特別の値は、それが記憶されている位置に対応するタグ値が特定のデータストリーム中の最終パケットに対応することを示すことができる。
【００６０】
図示された実施形態においては、バッファ利用可能性レジスタ６００もまた２９ビットを含み、それぞれが２９個のタグ値に対応する。バッファ利用可能性レジスタ６００は、特定のデータストリームに関連した応答のうちどれが受信されたかを示すのに使用できる。例えば、タグ値３および４を含むデータパケットが受信され、図３のデータバッファ４００のようなデータバッファに記憶される。従って、図７のバッファ利用可能性レジスタ６００のビット番号３および４を設定することで、データが利用可能であることを示す。
【００６１】
分割応答ポインタ６４０もまた２９個の位置を含み、それぞれが図３のＮＰコマンドバッファ４８０のようなバッファ中の最大８つの位置を表す３ビットを記憶することができる。３ビットの値のそれぞれは、図３のＮＰコマンドバッファ４８０中の位置のアドレスに対応するインデックス値として使用できる。従って、分割応答ポインタ６４０は、どの応答コマンドが図３のＮＰコマンドバッファ４８０中に記憶された元の非ポストコマンドに関連しているかを示すために使用可能である。従って、分割応答ポインタ６４０は、周辺バスへのデータの部分的な転送が必要であるときに、使用される。
【００６２】
これまで２９個のタグ値があるものとして説明したが、他の実施形態では、より少ない個数またはより多い個数のタグ値の使用が考えられる、ことを理解してもらいたい。従って、先頭レジスタ６１０、次ポインタ６２０、末尾レジスタ６３０、バッファ利用可能性レジスタ６００および分割応答ポインタ６４０はそれぞれ、より多いビット数またはより少ないビット数を含むものであってもよいと考えられる。さらに、これらのレジスタに関連するロジックは反転していてもよいと考えられる。つまり、対応するタグ値を表すためには、ビットをセットするのではなく、それをクリアするのである。
【００６３】
図３の説明に関連してすでに説明したように、バスインターフェイス回路４７０によってバスサイクルが非ポスト・パケットコマンドに変換されるとき、その非ポスト・パケットコマンドに関連するいくつかの応答パケットが存在しうる。さらに、応答パケットはダウンストリーム部３６０によって順序がバラバラに受信される可能性があること、そしてデータストリーム中のパケットの順序付けは周辺バスのタイプに応じて維持されうることに言及した。図８および図９の説明に関連して、以下でさらに詳しく説明するように、非ポストコマンドはアップストリーム部４５０で受信され、それら非ポストコマンドに対するソースタグ値はソースタグ付けロジックユニット４９０によって生成される。続いて、制御ロジックおよび記憶ユニット４６０内の先頭レジスタ６１０、次ポインタ６２０、末尾レジスタ６３０、バッファ利用可能性レジスタ６００および分割応答ポインタ６４０は、非ポストソースタグ値を用いて、一以上のデータストリーム中の応答の正しい順番を維持するために用いることができる。さらに、応答が受信されたとき、制御ロジックおよび記憶ユニット４６０は、データストリームの一部を形成するデータシーケンスを転送するときに使用可能である。
【００６４】
図示された実施形態では、記憶装置（storage）としてレジスタを使用しているが、他の実施形態では、例えばランダム・アクセス・メモリまたは任意のタイプの消去可能プログラム可能なリードオンリーメモリなどの、他の適切なタイプの記憶装置を使用できると考えられることに注意してもらいたい。
【００６５】
図８は、図３の周辺インターフェイス回路３５０の一実施形態であるトランザクション並び替え（リオーダリング）処理を説明する流れ図である。図３、図７および図８をまとめて参照して、処理は図８のステップ８００で始まり、ステップ８１０に進む。ステップ８１０では、非ポストコマンドが図３のアップストリーム部４５０によって受信される。図８のステップ８２０に進んで、図３の解析ロジック５００が、アップストリームＩ／Ｏトンネル要求を満たすために、非ポストコマンドを複数の非ポストコマンドに分解するかどうかを決定する。もし、トランザクションがＰＣＩトランザクションまたはＰＣＩ−Ｘトランザクションであって、非ポストコマンドを分解する必要がないときは、処理は図８のステップ８３０に進んで、非ポストコマンドが図３のＮＰコマンドバッファ４８０に記憶される。一般的に、ＰＣＩトランザクションは分解されない。例えば、図３の周辺インターフェイス回路３５０による非ポスト・リード要求は最大でキャッシュラインの境界までのものである。しかしながら、ＰＣＩトランザクションは、決してある特定の場合に分解されることから除外されるものではない。
【００６６】
図８のステップ８４０に処理を進めて、非ポスト・ソースタグ値が生成され、その非ポストコマンドに付加される。処理はステップ８４２に進んで、非ポストコマンドのためにちょうど生成されたソースタグ値に対応するビットをセットすることによって、図７の先頭レジスタ６１０がアップデート（更新）される。処理は図８のステップ８５０に進んで、図３の制御コマンドジェネレータ５２０によって非ポストコマンドのために制御コマンドが生成され、調停のためにＩ／Ｏトンネル制御ロジックに送られる。図８のステップ８６０へ進んで、非ポストコマンドがさらに図３の仮想チャネルコマンドバッファ５３０内に記憶されて送信を待つ。図８のステップ８７０で、もし対応する制御コマンドがＩ／Ｏトンネル制御ロジック内のアービトレーション回路によって選択されたならば、非ポストコマンドが送信される。
【００６７】
図８のステップ８２０に戻って、もし非ポストコマンドの分析が必要ならば、処理はステップ８２５へと進んで、非ポストコマンドは、同じシーケンスまたはデータストリームに属する複数の非ポストコマンドに分解される。ステップ８３５に進んで、元々の非ポストコマンドが、図３のＮＰコマンドバッファ４８０に記憶される。図８のステップ８４５において、元々の非ポストコマンドから作成されたばかりの複数の非ポストコマンドそれぞれに対して、ＮＰソースタグが生成される。処理はステップ８４２へと進んで、図７の先頭レジスタ６１０、次ポインタ６２０、末尾レジスタ６３０および分割応答ポインタ６４０がアップデートされる。先頭レジスタ６１０は、シーケンス内の第１非ポストコマンドについて生成されたばかりのタグ値に対応するビットをセットすることでアップデートされる。末尾レジスタ６３０は、データストリーム内の最終非ポストコマンドについて生成されたばかりのタグ値に対応するビットをセットすることでアップデートされる。
【００６８】
次ポインタ６２０は、シーケンス内の残りの非ポストコマンドのタグ値をロードすることでアップデートされる。このタグ値は、シーケンス内の各パケットをそのシーケンス内の次のパケットにリンクするようにロードされる。例えば、与えられたデータストリームが３つのパケットから構成されているとする。このパケットは０、１、２として配置され、従って０、１、２とタグ付けされる。従って、先頭レジスタ６１０のビット０がセットされ、ビット１および２はクリアされる。その理由は、１つのパケットのみが先頭になれるからである。このデータストリーム中の次のパケットを追跡するために、次ポインタ６２０の位置０および１が、次の２つのパケットのタグ値、それぞれ１および２とともにロードされる。先頭レジスタ６１０のビット０がセットされているので、次ポインタ６２０の位置０がタグ値「１」とともにロードされ、タグ値１を持つパケットがデータストリーム中の「次の」パケットであることを示す。さらに、次ポインタ６２０の位置１がタグ値「２」とともにロードされ、タグ値２を持つパケットがデータストリーム中の「次の」パケットであることを示す。パケット２はデータストリーム中の最終のパケットであるので、それは末尾であると指定される。したがって、末尾レジスタ６３０のビット２がセットされる。上述の実施形態では、タグ値には数字のシーケンス（例えば、０，１，２）が割り当てられているものの、他の実施形態においてはタグ値に任意の順序を割り当てることができ、そして現在どのタグ値が利用可能であるのかに従ってタグ値を割り当てることが考えられる、ことを理解してもらいたい。さらに、他の実施形態では、データストリーム中により多くのまたはより少ない数のパケットを含むことができ、それによってより多くのまたはより少ないタグ値が用いられる。
【００６９】
データストリームを構成する複数の非ポストコマンドがダウンストリームロジックによって順序がバラバラに受信され、それらを要求している装置に送るのに遅延が生じる可能性がある。この遅延は図３の周辺インターフェイス回路３５０にＰＣＩ−Ｘトランザクションに対する分割応答を指示させる。このような場合、ダウンストリームロジックは多くの分割応答サイクルおよび分割完了サイクルの発信元となり、そして複数の非ポストコマンドに対応する元々の非ポストコマンドに含まれている情報が分割応答および完了バスサイクルを開始するために必要である。図９に関連して以下でさらに詳細に説明するように、図７の分割応答ポインタレジスタ６４０は、特定のデータストリームの複数の応答それぞれを、図３のＮＰコマンドバッファ４８０に記憶されている元々の非ポストコマンドにリンクするために用いることができる。従って、図７の分割応答ポインタレジスタ６４０の各位置は、対応する応答コマンドのＮＰソースタグ値を表す。各位置は、その応答に対する元々の非ポストコマンドが記憶されている、図３のＮＰコマンドバッファ４８０内の位置のアドレスに対応するインデックス値とともにロードされる。上の例では、図７の分割応答ポインタレジスタ６４０中の位置０、１および２は、元々の非ポストコマンドが記憶されている、図３のＮＰコマンドバッファ４８０内の位置のアドレスに対応するインデックス値とともにロードされる。
【００７０】
処理は次に図８のステップ８５０に進み、複数の非ポストコマンドのそれぞれに対する制御コマンドが生成され、Ｉ／Ｏトンネル制御ロジックに送られる。さらに、ステップ８６０において、複数の非ポストコマンドのそれぞれが図３の仮想チャネルコマンドバッファ５３０内に記憶され、送信を待つ。図８のステップ８７０へと進み、Ｉ／Ｏトンネル制御ロジック内で調停回路によって、対応する各制御コマンドが選択されるとき、複数の非ポストコマンドのそれぞれが送信される。処理の説明は、ステップ８８０で終了する。
【００７１】
図９は、図３の周辺インターフェイス回路３５０の分割応答処理を説明する流れ図である。図３、図７および図９をまとめて参照して、処理は図９のステップ９００で始まり、ステップ９０５に進んで、アップストリームの非ポストコマンドに対応する応答コマンドが図３のダウンストリーム部３６０で受信される。ステップ９１０に進んで、その応答コマンドに関連するデータセグメントが図３のデータバッファ４００に記憶される。データセグメントの受信に応答して、図７のバッファ利用可能性レジスタ６００が、応答コマンドとともに受信したＮＰソースタグ値に対応するビットをセットすることによって、アップデートされる。処理は図９のステップ９１５へと進み、応答コマンドのタグ値に対応する、図７の先頭レジスタ６１０中のあるビットの状態をチェックして、それがデータストリームの先頭パケットであるかどうかを確認する。もし、受信した応答コマンドが先頭パケットでないときは、処理は図９のステップ９２０へと進む。ステップ９２０では、コマンドが廃棄され、処理はステップ９０５へ戻って、他の応答コマンドを待つ。もしコマンド部分が先頭でないときは、それは廃棄される。その理由は、このデータストリームに関連する先頭パケットがこれからやってくると推測されるからであり、データセグメントだけが保存される。ステップ９１５に戻って、もし応答コマンドが先頭パケットであるならば、処理はステップ９２５へと進んで、応答コマンドは図３のタグ付けロジック３８０によって調停タグ値を割り当てられ、仮想チャネルコマンドバッファ３９０の応答チャネル内に記憶される。
【００７２】
図９のステップ９３０へ進んで、図３のアービトレーションロジック４１０が、仮想チャネルコマンドバッファ３９０からの勝利を得たコマンドの調停を行う。もし応答コマンドが勝利したコマンドでないときは、処理はステップ９３０にとどまり、調停を継続する。他方で、もし応答コマンドが勝利コマンドであるときは、処理はステップ９３５へ進む。ステップ９３５では、もしトランザクションがＰＣＩトランザクションで、すべてのデータパケットが利用可能であると考えられるときには、処理はステップ９４０へと進んで、図７の先頭レジスタ６１０、次ポインタ６２０、末尾レジスタ６３０およびバッファ利用可能性レジスタ６００がアップデートされて、Ｉ／Ｏストリームに関連するタグ値が図３のＮＰソースタグ付けロジック４９０によって再利用可能になる。さらに、元々の非ポストコマンドが図３のＮＰコマンドバッファ４３０から回収される。図９のステップ９４５に進んで、要求されたすべてのデータを含む完了バスサイクルが、図３の周辺バス５６０上で開始される。
【００７３】
ステップ９３５に戻って、もしトランザクションがＰＣＩ−Ｘトランザクションならば、処理はステップ９６０へ進んで、このデータストリームに関連するどのデータパケットが利用可能であるのかを決定する必要がある。これは、図７の次ポインタ６２０、末尾レジスタ６３０およびバッファ利用可能性レジスタ６００の組み合わせをチェックすることによって達成できる。もし、すべてのデータパケットが到着していれば、処理は図９のステップ９６５へ進む。ステップ９６５において、図７の先頭レジスタ６１０、次ポインタ６２０、末尾レジスタ６３０、バッファ利用可能性レジスタ６００および分割応答ポインタ６４０がアップデートされ、このデータストリームに関連するタグ値が図３のＮＰソースタグ付けロジック４９０によって再利用可能になる。図９のステップ９７０に進んで、完了サイクルが開始され、すべての応答データが要求している装置へ送られていることを示す。完了サイクルを開始するために、図３の周辺インターフェイス回路３５０がソースデバイスとなって、分割完了サイクルを開始することができる。分割完了サイクルを開始するために、図３のＮＰコマンドバッファ４８０内に記憶された現在の応答パケットに対応する元々の非ポストサイクルに含まれる情報が必要である。従って、分割応答のソースタグ値に対応する位置が図７の分割応答ポインタレジスタ６４０から読み出される。元々の非ポストサイクルに含まれる情報が読み出され、分割完了サイクルが開始される。さらに、元々の非ポストコマンドが図３のＮＰコマンドバッファ４３０から回収される。
【００７４】
ステップ９６０に戻って、データストリームに関連するデータパケットのいくつかのみが到着していて、そして利用可能なデータパケットが特定されているときは、処理はステップ９７５へと進み、図７の先頭レジスタ６１０、次ポインタ６２０、バッファ利用可能性レジスタ６００および分割応答ポインタ６４０がアップデートされる。しかしながら、データパケットのいくつかのみが利用可能であるので、分割応答サイクルが生成される。分割応答トランザクションは、コマンドパケットおよびデータストリームの一部を形成するデータシーケンスをまとまって構成する、図７のデータバッファ４００内に記憶された任意のデータセグメントを含む。従って、図９の先頭レジスタ６１０および次ポインタ６２０は、データストリームの新しい先頭および次パケットを反映するためにアップデートされる。ステップ９８５に進んで、図３の周辺バス５６０上で分割応答バスサイクルが開始される。上のケースと同様に、図３のＮＰコマンドバッファ４８０内に記憶された現在の応答パケットに対応する元々の非ポストサイクルに含まれる情報が、分割応答サイクルを開始するために必要である。従って、分割応答のソースタグ値に対応する位置が図７の分割応答ポインタレジスタ６４０から読み出される。元々の非ポストサイクルに含まれている情報が読み出され、分割応答サイクルが開始される。しかしながら、上のケースとは対照的に、分割応答バスサイクルを正しく開始するために、図３のバスインターフェイス回路４７０は、パケットのデータ数フィールド中の対応するカウントを含めることによって、分割応答コマンド内で送られるデータ量を通知される。このカウントは送信されるデータブロックの数を反映する。図９のステップ９６０に戻って、残りのデータパケットを含む後続の応答コマンドが受信される。データストリームの残り部分を形成する残りのデータパケットが、追加の分割応答サイクルを用いて要求しているデバイスに送られる。残りのデータが送られたとき、分割完了サイクルが開始され、元々の非ポストコマンドが図３のＮＰコマンドバッファ４３０から回収される。処理の説明は図９のステップ９５０で終了する。
【００７５】
図１０は、グラフィクスバスに接続される周辺インターフェイス回路の一実施形態のブロック図である。周辺インターフェイス回路１０００は、ダウンストリーム部１０１０と、アップストリーム部１０２０とを含む。さらに、周辺インターフェイス回路１０００は、図２のＩ／Ｏトンネル１４０のようなＩ／Ｏトンネルに結合されるトンネルインターフェイス１０３０を含む。図１０のダウンストリーム部１０１０では、トンネルインターフェイス１０３０はさらにコマンドバッファ１０４０に結合されている。コマンドバッファ１０４０は、タグ付けロジックユニット１０５０に結合される。タグ付けロジックユニット１０５０は仮想チャネルコマンドバッファ１０６０に結合される。仮想チャネルコマンドバッファ１０６０はアービトレーションロジックユニット１０７０に結合される。アービトレーションロジックユニット１０７０はバスインターフェイス回路１０８０に結合される。トンネルインターフェイス１０３０はさらにデータバッファ１１００に結合され、データバッファ１１００は次にバスインターフェイス回路１０８０に結合される。バスインターフェイス回路１０８０はグラフィクスバス１０９０に結合され、グラフィクスバス１０９０はグラフィクスアダプタ１０９５に結合される。好適な実施形態では、グラフィクスバス１０８０はＡＧＰ（Accelerated Graphics Port）バスである。もっとも、他の実施形態では、他のタイプのグラフィクスバスを利用可能であると考えられる。
【００７６】
アップストリーム部１０２０では、バスインターフェイス回路１０８０がＮＰコマンドバッファ１１１０および解析ロジック１１７０に結合されている。さらに、バスインターフェイス回路１０８０はデータバッファ１１５０に結合されている。ＮＰコマンドバッファ１１１０は制御コマンドジェネレータ１１４０およびＮＰソースタグ付けロジックユニット１１２０に結合される。制御コマンドジェネレータ１１４０は仮想チャネルコマンドバッファ１１６０およびトンネルインターフェイス１０３０に結合される。仮想チャネルコマンドバッファ１１６０もトンネルインターフェイス１０３０に結合される。周辺インターフェイス回路１０００はさらに制御ロジックおよび記憶ユニット１１３０を含み、制御ロジックおよび記憶ユニット１１３０はダウンストリーム部１０１０のデータバッファ１１００に結合されている。制御ロジックおよび記憶ユニット１１３０はさらにＮＰソースタグ付けロジックユニット１１２０およびアップストリーム部１０２０のＮＰコマンドバッファ１１１０に結合されている。
【００７７】
図示した実施形態では、仮想チャネルコマンドバッファ１０６０および仮想チャネルコマンドバッファ１１６０はそれぞれ３つの分離したＦＩＦＯ部を有し、それらは３つのタイプのトランザクション、ポスト（posted）、非ポスト（non-posted）および応答（response）に対応する。コマンドは、それらが受信された順番に、各ＦＩＦＯに格納される。しかしながら、元のコマンドを生成した装置のタイプまたはバスに関する順序づけ規則を保持するために、異なったタイプのトランザクションの間で順番に関係なくトランザクションを処理しなければならない。これは、仮想チャネルコマンドバッファ１０６０およびアービトレーションロジック１０７０の組み合わせを含む、コマンドスケジューラによって実行される。
【００７８】
ある実施形態では、コマンドバッファ１０４０は深さ２（2-deep）のＦＩＦＯであって、図２のＩ／Ｏトンネル１４０から図１０の仮想チャネルコマンドバッファ１０９０に送られたコマンドのバッファリング機構として機能する。トランザクションが周辺インターフェイス回路１０００に対してダウンストリームに送られるとき、トランザクションのデータ部分はデータバッファ１１００に記憶され、トランザクションのコマンド部分は仮想チャネルコマンドバッファ１０６０に記憶される。しかしながら、まずタグ付けロジック１０５０がコマンドに対してタグ値を生成し、それを付加するように構成されている。タグ値は、あるコマンドの、他の受信したコマンドに対する相対的な受信の順番に対応し、後続の調停サイクルで使用される。データおよびコマンドは、パケットに含まれるヘッダ情報によって同じパケットに属するものとして特定可能である。さらに、グラフィクスバスはＩ／Ｏノードの内部クロック速度よりも遅いクロック速度で動作しているので、データはＩ／Ｏノードのクロック速度を用いてデータバッファ１１００にロードされ、異なったクロック速度、好適にはバスインターフェイス回路１０８０に接続されたグラフィクスバスのクロック速度でアンロードされる。さらに、データバッファ１１００および仮想チャネルコマンドバッファ１０６０は、どちらのバッファ内のスペースも利用可能でないときには、そのことを任意のアップストリームロジックに通知するように構成できる。
【００７９】
いくつかのグラフィクスアダプタは元々ＰＣＩバスを用いてシステムメモリと通信するように実現されているので、グラフィクスアダプタ１０９５のようなグラフィクスアダプタはグラフィクスバス１０９０上にＰＣＩバストランザクションを起動することが可能なＰＣＩロジックを未だ含んでいる。さらに、システムプロセッサなどの他の装置から起動されるコンフィギュレーションコマンドが、グラフィクスバス１０９０を介してＰＣＩコマンドを用いてグラフィクスアダプタ１０９５に送信される。従って、ＡＧＰバスサイクルをパケットコマンドに、パケットコマンドをＡＧＰバスサイクルに変換するのに加えて、バスインターフェイス回路１０８０はさらにパケットコマンドをグラフィクスバス１０９０上で伝送するのに適したＰＣＩバスサイクルに変換する。
【００８０】
コマンドのタイプ（つまり、ポスト、非ポストまたは応答）に応じて、コマンドは、仮想チャネルコマンドバッファ１０６０の各仮想チャネルＦＩＦＯに記憶される。これは、図３のダウンストリーム部３６０の処理と同様である。図１０において、アービトレーションロジック１０７０は、仮想チャネルコマンドバッファ１０６０内のトランザクションの間で、第１に処理するトランザクション、第２に処理するトランザクション等々を調停するように構成されている。アービトレーションロジック１０７０はさらに、アービトレーションサイクルの間、タグ付けロジックユニット１０５０によって割り当てられたタグ値を使用することができる。さらに、ＰＣＩ応答について、複数の応答パケットが同じデータストリームまたはシーケンスに属することがある。これは、共通の要求トランザクションからそれらが由来している場合である。ダウンストリームロジックで順番がバラバラにパケットが受信されたときであっても、与えられたデータストリームに属する応答パケットを正しい順番で届ける必要がある。この処理は、ＰＣＩ応答について、図９に関連して行った説明と類似している。
【００８１】
図１１の説明に関連して、以下に詳細に説明するように、ダウンストリーム部１０１０で受信されたＡＧＰ応答は、仮想チャネルコマンドバッファ１０６０には記憶されず、調停サイクルにも関与しない。その代わりにＡＧＰ応答は仮想チャネルコマンドバッファ１０６０のバッファをすり抜けて（バイパスし）、応答コマンドに関連したデータがバスインターフェイス１０８０に送られる。しかしながら、ＡＧＰ応答もまた順序づけ規則の制約を受けるので、制御ロジックおよび記憶ユニット１１３０は、パケットを正しい順番で届けるために使用される、レジスタのようなロジックおよび記憶ユニットを含む。これについては、図１２の説明に関連して、以下でさらに詳細に説明する。
【００８２】
グラフィクスアダプタ１０９５がグラフィクスバス１０９０上でＡＧＰトランザクションを開始するとき、バスインターフェイス回路１０８０はそのトランザクションを、上述したようにコマンドおよびデータパケットを含むパケットトランザクションに変換する。データパケットはデータバッファ１１５０に記憶され、コマンドは仮想チャネルコマンドバッファ１１６０の各仮想チャネルに記憶される。仮想チャネルコマンドバッファ１１６０に記憶する前に、コマンドのタイプに応じて、解析ロジック１１７０がコマンドをいくつかのより小さなコマンドに分解する。例えば、もしグラフィクスアダプタ１０９５が、システムメモリから大きなデータブロックの読み出し（リード）を要求したとすると、解析ロジック１１７０は、メモリの同じブロックについての、より小さなブロック単位のいくつかの非ポスト・リードコマンドを生成する。一実施形態としては、これらのブロックはキャッシュラインの境界に沿って生成できると考えられる。続いて、新しく生成された非ポスト・コマンドのそれぞれを仮想チャネルコマンドバッファ１１６０に記憶することができ、元々の非ポストコマンドはＮＰコマンドバッファ１１１０に記憶できる。
【００８３】
一実施形態では、ＮＰソースタグ付けロジック１１２０は、ダウンストリームロジックが特定の応答コマンドが関係するデータストリームを決定するのに用いることができる、タグ値を生成することができる。ＮＰソースタグ付けロジック４９０は、アップストリームの非ポスト・コマンドに関するタグ値を生成することができる。一実施形態では、０から２９までのタグ値が生成される。しかしながら、他の実施形態では、他の適切な数のタグ値を生成することが可能であると考えられる。
【００８４】
アップストリームコマンドが仮想チャネルコマンドバッファ１１６０内に記憶されると、制御コマンドジェネレータ１１４０が、図２のトランシーバ１１０および１２０によって生成される制御コマンドに類似した制御コマンドを生成する。図１０で、制御コマンドジェネレータ１１４０はさらに、これらの制御コマンドをトンネル・インターフェイス１０３０を通じて、例えば図２のトンネル制御ユニット１３０などの制御ユニットに送ることができ、それによってアップストリームコマンドをＩ／Ｏトンネル１４０のスケジュールに入れることができる。図１０のトンネルインターフェイス１０３０は、Ｉ／Ｏトンネル１４０と周辺インターフェイス回路１０００内のロジックとの間のインターフェイスを提供するのに必要な汎用のバッファ回路を含んでいてもよい。
【００８５】
図１１は、グラフィクス応答を処理する周辺インターフェイス回路の一実施形態の図である。簡略化と明確化のために、図１０の回路要素に対応する回路要素には同じ参照符号を付ける。この周辺インターフェイス回路は、バイパス機構１２００を含む。バイパス機構１２００は、バスインターフェイス回路１０８０に結合されたデータバッファ１１００を含む。バスインターフェイス回路１０８０はＦＩＦＯバッファ１１０５を含み、ＦＩＦＯバッファ１１０５はターゲットバス１１８５およびソースバス１１８２に結合される。ソースバス１１８２およびターゲットバス１１８５はグラフィクスバス１０９０に結合される。バイパス機構１２００はさらに仮想チャネルコマンドバッファ回路１０６０を含み、仮想チャネルコマンドバッファ回路１０６０はアービトレーションロジック１０７０に結合されている。アービトレーションロジック１０７０はさらにバスインターフェイス回路１０８０に結合されている。さらに、バイパス回路１２００はＡＧＰバイパス接続を有し、ＡＧＰバイパス接続は仮想チャネルコマンドバッファ回路１０６０の応答チャネルをバスインターフェイス回路１０８０に結合する。
【００８６】
図１０に関連して上述したように、ダウンストリームの応答およびコマンドが受信されると、それらは仮想チャネルコマンドバッファ回路１０６０の各仮想チャネルＦＩＦＯに記憶される。図１１で、調停サイクルが勝利を獲得したコマンドを決定すると、勝利を獲得したコマンドに関連したデータがＦＩＦＯバッファ１１０５に転送される。データがＦＩＦＯ１１０５に存在する限り、バスインターフェイス１０８０はグラフィクスバス１０９０上での伝送に適したバスサイクルを起動する。バスサイクルが完了し、勝利を獲得したコマンドのそれぞれが仮想チャネルコマンドバッファ回路１０６０から回収されると、与えられた仮想チャネルＦＩＦＯ内に残ったコマンドはＦＩＦＯの先頭方向に移動する。やがて、各コマンドは読み出され、コマンドがＡＧＰ応答コマンドでない限り、調停サイクルに関与する。
【００８７】
図示された実施形態では、バスインターフェイス回路１０８０は二つの分離したバス、ソースバス１１８２とターゲットバス１１８５とを有する。ソースバス１１８２およびターゲットバス１１８５は、グラフィクスバス１０９０とアップストリームノードとの間でパケットトランザクションを伝達するために、バスインターフェイス１０８０によって使用される。ソースバス１１８２は、グラフィクスバス１０９０に接続されたグラフィクスデバイスによって起動されたコマンドを伝達するのに使用される。ターゲットバス１１８５は、例えばシステムプロセッサなどの、グラフィクスバス１０９０上にはない他のデバイスによって起動されたコマンドを伝達するのに使用される。図１１では、ソースバス１１８２およびターゲットバス１１８５はそれぞれコマンドチャネルおよび応答チャネル（図示せず）を有する。ソースバスのコマンドチャネルは、前記グラフィクスバス上のデバイスによって起動されたポストおよび非ポストコマンドなどのコマンドを伝達するのに使用される。ソースバスの応答チャネルは、グラフィクスバス上にはないデバイスによって生成された応答コマンドであるが、グラフィクスバス上のデバイスによって起動されたポストおよび非ポストコマンドに対応するものを伝達するのに用いられる。さらに、ターゲットバスのコマンドチャネルは、前記グラフィクスバス上にないデバイスによって起動されたポストおよび非ポストコマンドなどのコマンドを伝達するのに使用される。ターゲットバスの応答チャネルは、グラフィクスバス上のデバイスによって生成された応答コマンドであるが、グラフィクスバス上にないデバイスによって起動されたポストおよび非ポストコマンドに対応するものを伝達するのに用いられる。
【００８８】
トランザクションを伝達するのに二つの分離したバスが用いられるので、ダウンストリームのＡＧＰおよびＰＣＩ応答コマンドはソースバス１１８２の応答チャネル上で伝達され、すべてのダウンストリームのポストまたは非ポストコマンドはターゲットバス１１８５上で伝達される。例えば、例として、非ポスト・リードコマンドのようなＡＧＰトランザクションは、グラフィクスバス１０９０に接続されたグラフィクスデバイスによって起動されるとする。このトランザクションはバスインターフェイス回路１０８０によってパケットに変換され、ソースバス１１８２のコマンドチャネル上を図１０のアップストリーム部１０２０へ伝送される。コマンドは、図１０のアップストリーム部１０２０からホストノード（図示せず）へ処理のために送られる。その後、以前のＡＧＰコマンドに対応するＡＧＰ応答が仮想チャネルコマンドバッファ回路１０６０において受信される。ソースバス１１８２の応答チャネルおよびターゲットバス１１８７の分離したコマンドチャネルの利用可能性に起因して、ＡＧＰ応答は仮想チャネルコマンドバッファ回路１０６０の応答チャネルには記憶されず、それによってどの調停サイクルにも関与しない。ＡＧＰ応答は仮想チャネルコマンドバッファ１０６０の応答チャネルバッファをバイパスすることが許されているので、バスインターフェイス回路１０９０に伝送される。仮想チャネルコマンドバッファ回路１０６０内に記憶された他のすべてのタイプのコマンドは調停サイクルに関与する。これは、グラフィクスバス１０９０に接続されたグラフィクスデバイスによって起動された非ポスト・リードコマンドのようなＰＣＩトランザクションとは対照的である。後から到着したダウンストリームのＰＣＩ応答は、仮想チャネルコマンドバッファ回路１０６０の応答チャネルバッファ内に記憶され、どの調停サイクルにも関与する。ＰＣＩの順序付け規則がデータストリーム間のトランザクション並び替えを許可し、ＡＧＰ順序付け規則がそれを許可しないので、ＰＣＩ応答をスケジュールに入れることが必要である。
【００８９】
図１２に、グラフィクス応答の並び替えを行う装置の一実施形態を示す。簡略化と明確化のために、図１０および図１１に示した回路要素に対応する回路要素には同じ参照符号を付ける。このトランザクション並び替え装置はデータバッファ１１００を含み、データバッファ１１００はポインタ１１０１と、制御ロジックおよび記憶ユニット１１３０とを有する。データバッファ１１００は、制御ロジックおよび記憶ユニット１１３０と、バスインターフェイス回路１０８０とに結合される。制御ロジックおよび記憶ユニット１１３０はデータ利用可能性記憶ユニット１１３５を含む。図示された実施形態においては、データ利用可能性記憶ユニット１１３５はレジスタである。しかしながら、他の実施形態では、例えばランダム・アクセス・メモリなどの任意の適切な記憶装置を使用可能であることが考えられる。
【００９０】
上述したように、ＡＧＰ応答などのグラフィクス応答は、ＰＣＩおよびＰＣＩ−Ｘ応答とは異なり、それらがどのデータストリームに属するかには関係なく、それらが要求された順番で発信元の装置にのみ送り戻される。従って、ダウンストリームのＡＧＰ応答は、それらがデータバッファ１１００で受信された順番とは異なる順番で発信元のデバイスに送られる。例えば、第１要求がアップストリームに送られ、それが第１データストリームに関連づけられるとする。第２データストリームに関連づけられる第２要求が後に続く。しばらくして、第１データストリームに対応する応答データパケットの一部分のみが受信され、データバッファ１１００に記憶される。しかし、第２データストリームのすべての応答データパケットが受信され、データバッファ１１００に記憶される。第２データストリームからのデータパケットは、第１データストリームからの残りのデータパケットが受信されるまでは送信されず、続いてバスサイクルに変換するためにバスインターフェイス１０８０に転送される。
【００９１】
上述の実施形態では、データバッファ１１００はランダム・アクセス・メモリユニットであって、少なくとも２９の記憶位置を含む。２９の記憶位置のそれぞれは、図１０のＮＰタグ付けロジック１１２０によってコマンドに割り当てられる２９個のタグ値に対応する。各データパケットが到着すると、受信されたデータパケットのタグ値に対応する位置に記憶される。図１２において、ポインタ１１０１は、バスインターフェイス１０８０に送られるべき次の順序のＡＧＰデータセグメントのデータを含んでいると予想される位置を指す。さらに、データ利用可能性レジスタ１１３５は、図１０のＮＰタグ付けロジック１１２０によってコマンドに割り当てられる２９個のタグ値にそれぞれ対応する少なくとも２９ビットを含む。図１２のデータ利用可能性レジスタ１１３５は、どのデータパケットが受信されたかを示すために用いられ、ポインタ１１０１はデータバッファ１１００内の次のＡＧＰ応答位置を指す。例えば、タグ値０，１，２７を持つデータパケットが受信されたとする。このデータパケットは、データバッファ１１００内の位置番号０，１および２７にそれぞれ記憶される。従って、データ利用可能性レジスタ１１３５のビット番号０，１および２７がセットされ、どのデータが利用可能かを表示する。一方、ポインタ１１０１は、次の送信対象のＡＧＰデータ、タグ値０に対応する位置を指す。他の実施形態では、データ利用可能性レジスタ１１３５はデータが利用可能であることを（ビットを）クリアすることで表示することもできることが考えられる。従って、ダウンストリームのＡＧＰ応答が受信されるごとに、対応するデータがデータバッファ１１００に記憶され、データ利用可能性レジスタ１１３５は、どのデータパケットがデータバッファ１１００に記憶されているのかを反映させるためにアップデートされる。図１２の機構の動作については、図１３と関連して、以下でさらに詳細に説明する。
【００９２】
図１３は、グラフィクス応答のためのトランザクション並び替え機構の一実施形態の動作を示す流れ図である。図１０、図１２および図１３をまとめて参照して、処理は図１３のステップ１３００から始まる。ステップ１３００において、システムの初期化に伴い、図１２のポインタ１１０１が、所定の値、例えば０などに初期化される。ポインタ１１０１の初期化に関連して、図１０のＮＰタグ付けロジック１１２０も同じ所定値に初期化され、それによってタグ付けロジックとポインタとを同期させる。これによって、図１２のポインタ１１０１は、データバッファ１１００内のデータが読み出される次の位置を指している。従って、初期化後は、バスインターフェイス回路１０８０に送られる最初のＡＧＰ応答は０のタグ値を持つ。本実施形態では初期値として０を用いたが、他の実施形態では、その他の適切な初期値を用いることができると考えられる、ことに注意してもらいたい。
【００９３】
図１３のステップ１３１０に進んで、ＡＧＰ応答コマンドが図１０のダウンストリーム部１０１０から受信され、その応答に関連したコマンドヘッダ中の一以上の特定ビットによって、ＡＧＰ応答であると特定される。図１３のステップ１３２０へ進んで、その応答のデータ部分が、図１２のデータバッファ１１００のその応答のタグ値が対応する位置に記憶される。さらに、データ利用可能性レジスタ１１３５の対応するビットがセットされて、データバッファ１１００内のその位置にデータが存在していることを示す。他の実施形態では、データの存在を示すために、データ利用可能性レジスタ１１３５の対応するビットをクリアすることも考えられる。図１３のステップ１３３０に進んで、図１２のポインタ１１０１がデータバッファ１１００内の次のＡＧＰ応答データが読み出される位置を指しているので、新しく受信したデータセグメントのタグ値の表示がポインタ１１０１によって提供され、そのタグ値を持つデータが利用可能であるかについてのデータ利用可能性レジスタ１１３５からの表示と比較される。もし合致しなければ、その応答のコマンド部分は廃棄され、処理は図１３のステップ１３１０へ戻る。ステップ１３３０へ戻って、もし合致すれば、処理はステップ１３４０へ進んで、図１２のポインタ１１０１によって指された位置に記憶されているデータがデータバッファ１１００から読み出され、ポインタ１１０１が増分（インクリメント）される。図１３のステップ１３５０へ進んで、図１２のバスインターフェイス回路１０８０によってバスサイクルが起動され、これによって要求しているデバイスに応答データを送る。
【００９４】
図１３のステップ１３６０に進んで、図１２のポインタ１１０１が増分され、データバッファ１１００内の次のＡＧＰ応答データが読み出される位置を指しているので、対応するタグ値の表示が提供され、そのタグ値を持つデータが利用可能であるかについてのデータ利用可能性レジスタ１１３５からの表示と比較される。もし合致すれば、処理は図１３のステップ１３４０へ戻って、図１２のデータバッファ１１００からデータが読み出され、ポインタ１１０１が増分される。再び図１３のステップ１３５０で、図１２のバスインターフェイス回路１０８０によってバスサイクルが起動され、要求しているデバイスに次の応答データを送る。図１３のステップ１３６０に戻って、もし合致せず、次のデータが利用可能でないことを示しているときは、処理はステップ１３１０へ戻って、次のＡＧＰ応答を待つ。
【００９５】
このプロセスは、受信したＡＧＰ応答のそれぞれについて続けられる。従って、ＡＧＰ応答が受信されたとき、もしＡＧＰ応答がそれらが元々要求されたのとは異なった順番で受信されると、順番がバラバラになっている応答コマンドのそれぞれは無視され、データは記憶されて、正しい順番のＡＧＰ応答を待つ。
【００９６】
上記開示を完全に理解した当業者には、様々な変形物、修正物が明白となる。添付の特許請求の範囲は、そのようなすべての変形物および修正物を包含するように解釈されることを意図したものである。
【産業上の利用可能性】
【００９７】
本発明は、一般にコンピュータシステムの入出力に利用可能である。
【図面の簡単な説明】
【００９８】
【図１】コンピュータシステムの一実施形態のブロック図。
【図２】入出力ノードの一実施形態のブロック図。
【図３】周辺インターフェイス回路の一実施形態のブロック図。
【図４】非ポスト・リトライバッファ回路の一実施形態のブロック図。
【図５】周辺インターフェイス回路の一実施形態のスリット応答表示の処理を説明する流れ図。
【図６】バッファ利用可能性ＦＩＦＯ構造を持つバッファ回路の一実施形態のブロック図。
【図７】制御ロジックおよび記憶ユニットの一実施形態の典型図。
【図８】周辺インターフェイス回路の一実施形態のダウンストリーム応答トランザクション並び替え処理を説明する流れ図。
【図９】周辺インターフェイス回路の一実施形態の分割応答処理を説明する流れ図。
【図１０】グラフィクスバスに接続される周辺インターフェイス回路の一実施形態のブロック図。
【図１１】グラフィクス応答を処理するための周辺インターフェイス回路の一実施形態を示す図。
【図１２】グラフィクス応答を並び替えるための装置の一実施形態を示す図。
【図１３】グラフィクス応答のためのトランザクション並び替え装置の一実施形態の動作を説明する流れ図。
【図１】
2005505856.tif 000003
【図２】
2005505856.tif 000004
【図３】
2005505856.tif 000005
【図４】
2005505856.tif 000006
【図５】
2005505856.tif 000007
【図６】
2005505856.tif 000008
【図７】
2005505856.tif 000009
【図８】
2005505856.tif 000010
【図９】
2005505856.tif 000011
【図１０】
2005505856.tif 000012
【図１１】
2005505856.tif 000013
【図１２】
2005505856.tif 000014
【図１３】
2005505856.tif 000015
【国際公開パンフレット】
2005505856.tif 000016
2005505856.tif 000017
2005505856.tif 000018
2005505856.tif 000019
2005505856.tif 000020
2005505856.tif 000021
2005505856.tif 000022
2005505856.tif 000023
2005505856.tif 000024
2005505856.tif 000025
2005505856.tif 000026
2005505856.tif 000027
2005505856.tif 000028
2005505856.tif 000029
2005505856.tif 000030
2005505856.tif 000031
2005505856.tif 000032
2005505856.tif 000033
2005505856.tif 000034
2005505856.tif 000035
2005505856.tif 000036
2005505856.tif 000037
2005505856.tif 000038
2005505856.tif 000039
2005505856.tif 000040
2005505856.tif 000041
2005505856.tif 000042
2005505856.tif 000043
2005505856.tif 000044
2005505856.tif 000045
2005505856.tif 000046
2005505856.tif 000047
2005505856.tif 000048
2005505856.tif 000049
2005505856.tif 000050
2005505856.tif 000051
2005505856.tif 000052
2005505856.tif 000053
【手続補正書】
【提出日】平成15年11月13日(2003.11.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
発信元からのパケットコマンドを受信するように結合された第１バッファ回路であって、前記パケットコマンドのそれぞれは前記発信元で受信された各トランザクションの中に含まれる情報の一部を含み、前記第１バッファ回路は第１の複数のバッファを含み、前記第１の複数のバッファのそれぞれは、選択されたパケットコマンドを記憶する複数の仮想チャネルのうちの各仮想チャネルに対応し、前記選択されたパケットコマンドは前記各仮想チャネルに属し、前記複数の仮想チャネルのそれぞれは各トランザクションタイプに対応する、第１バッファ回路（３９０）と、
前記第１バッファ回路に結合されるバスインターフェイス回路であって、前記第１バッファ回路に記憶された前記選択されたパケットコマンドを周辺バス（５６０）上での転送に適したコマンドに変換し、周辺バス上での転送に適した前記コマンドをパケットコマンドに変換するように構成されたバスインターフェイス回路（４９０）と、
前記バスインターフェイス回路からの前記パケットコマンドを受信するように結合された第２バッファ回路であって、第２の複数のバッファを含み、前記第２の複数のバッファのそれぞれは、選択されたパケットコマンドを記憶する前記複数の仮想チャネルのうちの各仮想チャネルに対応し、前記選択されたパケットコマンドは前記各仮想チャネルに属する、第２バッファ回路（５３０）とを備える、コンピュータシステムの入出力ノードのための周辺インターフェイス回路。
【請求項２】
前記第１バッファ回路および前記第２バッファ回路に結合され、前記バスインターフェイス回路への、および前記バスインターフェイス回路からの前記パケットコマンドの伝送を制御するように構成された制御ロジックユニット（４６０）をさらに備える、請求項１記載の周辺インターフェイス回路。
【請求項３】
前記第１バッファ回路に結合され、前記パケットコマンドを受信して、前記パケットコマンドのそれぞれに対してタグ値を生成するように構成されるタグロジックユニット（４９０）をさらに備え、前記タグ値は他のパケットコマンドに対する前記パケットコマンドのそれぞれの相対的な受信の順番に対応する、請求項２記載の周辺インターフェイス回路。
【請求項４】
前記タグロジックユニットはさらに、前記第１バッファ回路に前記パケットコマンドのそれぞれを記憶する前に、前記タグ値を前記パケットコマンドのそれぞれに付加するように構成されている、請求項３記載の周辺インターフェイス回路。
【請求項５】
前記第１バッファ回路に結合され、前記制御コマンドのそれぞれに対する前記タグ値に応じて、前記複数の第１バッファに記憶された前記パケットコマンド間の調停を行うように構成されているアービトレーションロジックユニット（４１０）をさらに備える、請求項４記載の周辺インターフェイス回路。
【請求項６】
前記第１発信元からのパケットデータを受信するように結合された第１データバッファ回路（４００）をさらに備え、前記第１データバッファ回路は前記入出力ノードのクロック速度でデータを受信するように構成され、データは前記第１データバッファ回路から前記周辺バスのクロック速度で読み出される、請求項５記載の周辺インターフェイス回路。
【請求項７】
前記バスインターフェイス回路からのパケットデータを受信するように結合された第２データバッファ回路（５５０）をさらに備え、前記第２データバッファ回路は前記周辺バスのクロック速度でデータを受信するように構成され、データは前記第２データバッファ回路から前記入出力ノードのクロック速度で読み出される、請求項６記載の周辺インターフェイス回路。
【請求項８】
前記第２バッファ回路に結合され、前記バスインターフェイス回路から受信された前記パケットコマンドのそれぞれに対する制御コマンドを生成するように構成された制御コマンドジェネレータユニット（５２０）をさらに備え、前記制御コマンドのそれぞれは対応するパケットコマンドのそれぞれの一部を含む、請求項７記載の周辺インターフェイス回路。
【請求項９】
第１通信路で第１パケットコマンドを受信するように構成された第１トランシーバ回路（１１０）と、
第２通信路で第２パケットコマンドを受信するように構成された第２トランシーバ回路（１２０）と、
請求項１ないし８のいずれか１項記載の１以上の周辺インターフェイス回路（１５０，３５０）とを備える、コンピュータシステムの入出力ノード。
【請求項１０】
１以上のプロセッサ（１０Ａ−Ｄ）と、
相互に接続されるとともに、前記１以上のプロセッサにポイントトゥーポイント・パケットバス（５０Ａ−Ｃ）を介して接続されている請求項９記載の１以上の入出力ノード（２０，３０，４０）とを備える、コンピュータシステム。
【国際調査報告】
2005505856.tif 000054
2005505856.tif 000055