(57)【要約】      （修正有）【課題】Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）上でＩＤベースのストリームを可能とする。【解決手段】装置は、シリアルポイント・ツー・ポイント接続ポートで送信されるパケットの順序を付けるメモリ順序付けロジックであって、第１パケットの後に到着した第２パケットを使用して、第２パケットが、第２パケットが順序に依存しないことを示す属性フラグ及び第１パケットに含まれるＩＤとは異なるＩＤを含む場合に、ストールした第１パケットをバイパスするメモリ順序付けロジックを備える。【選択図】図１
2014017006.tif 000002
【特許請求の範囲】
【請求項１】
シリアルポイント・ツー・ポイント接続ポートで送信されるパケットの順序を付けるメモリ順序付けロジックであって、
第１パケットの後に到着した第２パケットを使用して、前記第２パケットが、前記第２パケットが順序に依存しないことを示すべく設定される属性フラグ及び前記第１パケットに含まれるＩＤとは異なるＩＤを含む場合に、ストールした前記第１パケットをバイパスする前記メモリ順序付けロジックを備える装置。
【請求項２】
第１パケットの後に到着した第２パケットを使用して、前記第２パケットが、先に受信され送信のためにキューに入れられたパケットの各々に含まれるＩＤとは異なるＩＤを含む場合に、ストールした前記第１パケットをバイパスする前記メモリ順序付けロジックを更に備える請求項１に記載の装置。
【請求項３】
前記第２パケットは、ポストされていない要求パケットを含み、前記第２パケットのＩＤは、要求側ＩＤを含む請求項１に記載の装置。
【請求項４】
前記第２パケットは、完了パケットを含み、前記第２パケットのＩＤは、完了側ＩＤを含む請求項１に記載の装置。
【請求項５】
前記ＩＤは、前記パケットのヘッダのバイト４及び５を含む請求項１に記載の装置。
【請求項６】
前記第１パケット及び前記第２パケットの両方が、ポスト済み要求キュー内に書き込み要求を含む請求項１に記載の装置。
【請求項７】
前記シリアルポイント・ツー・ポイント接続は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩＥ）リンクであって、
前記装置は、
プロセッサと、
システムメモリと、
前記ＰＣＩＥリンクと通信可能に接続されたグラフィックアクセラレータとを更に備える請求項１に記載の装置。
【請求項８】
前記ポートは、ダウンストリームポートである請求項１に記載の装置。
【請求項９】
シリアルポイント・ツー・ポイントリンクに沿ってパケットを送信するポートと、
前記ポートを介して送信されるポスト済み要求のパケットを格納する第１キューと、
前記ポートを介して送信されるポストされていない要求のパケットを格納する第２キューと、
ストールした前記第１キューからのポスト済み要求を選択的にバイパスして、前記ストールしたポスト済み要求の後に受信された前記第２キューからのポストされていない要求を前記ポートを介して送信するロジックであって、前記ポストされていない要求のヘッダが前記要求が順序に依存しないことを示しており、且つ、前記ポストされていない要求の前記ヘッダが、前に受信された前記第１キュー内のポスト済み要求の要求側ＩＤとは異なる要求側ＩＤを含む場合に、前記第２キューからの前記ポストされていない要求を送信する前記ロジックと
を備える装置。
【請求項１０】
前記ポートを介して送信される完了のパケットを格納する第３キューを更に備え、
前記ロジックは、ストールした前記第１キューからのポスト済み要求を選択的にバイパスして、前記ストールしたポスト済み要求の後に受信された前記第３キューからの完了を前記ポートを介して送信するロジックであって、前記完了のヘッダが前記要求が順序に依存しないことを示しており、且つ、前記完了の前記ヘッダが、前に受信された前記第１キュー内のポスト済み要求の要求側ＩＤとは異なる要求側ＩＤを含む場合に、前記第３キューからの完了を送信する請求項９に記載の装置。
【請求項１１】
前記ロジックは、ストールした前記第１キューからのポスト済み要求を選択的にバイパスして、前記ストールしたポスト済み要求の後に受信された前記第１キューからのポスト済み要求を、前記ポートを介して送信するロジックであって、前記ポスト済み要求のヘッダが前記要求が順序に依存しないことを示しており、且つ、前記ポスト済み要求の前記ヘッダが、前記ストールしたポスト済み要求の要求側ＩＤからの要求側ＩＤを含む場合に、前記第１キューからのポスト済み要求を送信する請求項９に記載の装置。
【請求項１２】
前記ポートは、アップストリームポートである請求項９に記載の装置。
【請求項１３】
プロセッサと、
システムメモリと、
前記シリアルポイント・ツー・ポイントリンクと通信可能に接続されたグラフィックスアクセラレータと
を更に備える請求項９に記載の装置。
【請求項１４】
前記第１キュー内のどのポスト済み要求が、前記ポストされていない要求パケットの各々よりも前に受信されたかを示すべく、前記ポストされていない要求パケットの各々と関連付けられたポスト済み要求ポインタを格納する前記第２キューを更に備える請求項９に記載の装置。
【請求項１５】
属性フラグは、前記パケットのヘッダのバイト１のビット２を含む請求項９に記載の装置。
【請求項１６】
プロトコルスタックを含む入出力（Ｉ／Ｏ）モジュールを有するデバイスを備える装置であって、
前記プロトコルスタックは、物理層、リンク層及びトランザクション層を含み、
前記プロトコルスタックは、シリアルポイント・ツー・ポイントリンクを介してパケットを送信し、
前記パケットは、オペレーションが順序に依存しないことを示すべく設定されるフラグを含む装置。
【請求項１７】
前記オペレーションが順序に依存することを示すべく設定される前記フラグは、前記パケットのヘッダのバイト１のビット２を含む請求項１６に記載の装置。
【請求項１８】
前記オペレーションは、メモリ書き込み又はメッセージ要求、読み出し要求、入出力又は設定書き込み要求、読み出し完了、及び入出力又は設定書き込み完了からなる群から選択される請求項１６に記載の装置。
【請求項１９】
前記デバイスは、アクセラレータ、入出力デバイス、コントローラハブ、ルートコントローラ、スイッチ及びプロセッサからなる群から選択される請求項１６に記載の装置。
【請求項２０】
システムメモリと通信可能に接続された前記デバイスと、
システムを構成する更なる複数のデバイスとを更に備える請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、接続の分野に関し、特に、ＰＣＩ  Ｅｘｐｒｅｓｓ（ピーシーアイ・エクスプレス）上のＩＤベースのストリームを可能にすることに関する。
【背景技術】
【０００２】
コンピュータシステムは、数多くの部品及び要素を含む。これらの構成要素は、多くの場合、バス又は配線を介して接続される。従来は、複数の入出力（Ｉ／Ｏ）デバイスは、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）と称される周知のマルチドロップ並列バス構造を介して、共に接続されていた。最近では、シリアル物理層通信プロトコルを使用するデバイス間の高速接続を容易にするために、ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩｅ）と称される新しい世代のＩ／Ｏバスが使用されている。
【０００３】
ＰＣＩＥアーキテクチャは、デバイス間の通信のための階層プロトコルを含む。例えば、物理層、リンク層及びトランザクション層で、ＰＣＩＥプロトコルスタックが構成されている。ＰＣＩｅリンクは、レーンと称される専用一方向の組のシリアルポイント・ツー・ポイント接続の周辺に構築される。デバイス間のリンクは、１、２、１６、３２等の数のレーンを含む。現在のＰＣＩＥ規格の基本仕様２．０は、http://www.pcisigcom/specifications/pciexpress/にて参照可能である。
【０００４】
従来のＰＣＩｅにおける順序付け規則は、製造者‐消費者プログラミングモデルを可能とするべく作成されていた。このモデルでは、特定のデバイスからの読み出しは、それ以前に生成されていた書き込みを押し出す必要がある。このようなプログラミングモデルでは、メモリロケーションＸの読み出しは、常に、そのメモリ位置に書き込まれた最新のデータを取得する。
【０００５】
しかしながら、この順序付け規則によると、１の要求ストリーム（同じ要求デバイスからの同じ目的デバイスに対する読み出し又は書き込み処理のシーケンス）からの要求が、別の独立した要求ストリームと干渉を起こしてしまう。この干渉は、性能における大きなボトルネックとなっている。ポストしていない要求が、ポスト済み要求の背後でブロックされてしまうと、読み出し要求は、遅延の影響を大きく受けることから、この干渉が特に問題となる。
【０００６】
本発明が以下に例示され、本発明は添付の図面によって限定されることを意図していない。
【図面の簡単な説明】
【０００７】
【図１】コンピュータシステムにおけるＩ／Ｏデバイスを接続するシリアルポイント・ツー・ポイント接続を含むシステムの一実施形態を示した図である。
【図２】階層プロトコルスタックの一実施形態を示した図である。
【図３】メモリ順序付けロジックの一実施形態を示した図である。
【図４】ＩＤベースの順序付けフラグを含むパケットの一実施形態を示した図である。
【図５】順序付けテーブルの一実施形態を示した図である。
【図６】デバイスＩＤベースのストリームを可能とするフローチャートの一実施形態を示した図である。
【発明を実施するための形態】
【０００８】
以下、数多くの詳細事項が記載されるが、特定の接続、特定のパケット／メッセージ、パケット／メッセージ内の特定のフィールド及びロケーション、ロジック／キャッシュの特定のロケーション等は、本発明の完全な理解を提供するべく記載されているものである。当業者であれば、これらの特定の詳細事項がなくとも、本発明を実施可能であることは明らかである。また、キャッシュロジック／実装、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）メッセージプロトコル、トランザクションにおけるＰＣＩフィールド／パケット、及びその他のＰＣＩｅの基本的な実装等の周知の構成又は方法については、本発明を不必要に曖昧にしない目的から、記載していない。
【０００９】
本明細書に記載する方法及び装置は、ＰＣＩｅ上での、ＩＤベースのストリームを可能とする。特に、（クレジット又はページ失敗等のその他のイベントによって）ストールしたポスト済み要求に関して、スイッチにおける待ち要求のバイパスについて説明する。しかしながら、ＩＤベースのストリームを可能とする方法及び装置はこれに限定されず、あらゆる入出力デバイス又はその他のコンピュータ構成要素のようなＩＣデバイスと関連付けて、又はその他のシリアルポイント・ツー・ポイント接続と関連付けて、本方法及び装置を実装することができる。
【００１０】
［シリアルポイント・ツー・ポイント階層プロトコルリンク／接続］システム１００は、コントローラハブ７７５に接続されたプロセッサ１０５及びシステムメモリ１１０を含む。プロセッサ１０５は、マイクロプロセッサ、ホストプロセッサ、埋め込みプロセッサ、コプロセッサ、又はその他のプロセッサを含む。プロセッサ１０５は、フロントサイドバス（ＦＳＢ）１０６を介してコントローラハブ７７５に接続される。一実施形態において、ＦＳＢ１０６は、以下に記載するような、シリアルポイント・ツー・ポイント接続である。
【００１１】
システムメモリ１１０は、ランダムアクセスメモリ（ＲＡＭ）、不揮発性（ＮＶ）メモリ、又はシステム１００におけるデバイスがアクセス可能なその他のメモリといったあらゆるメモリを含む。システムメモリ１１０は、メモリインターフェース７７６を介してコントローラハブ７７５と接続される。メモリインターフェースの例としては、ダブルデータレート（ＤＤＲ）メモリインターフェース、デュアルチャネルＤＤＲメモリインターフェース、及びダイナミックＲＡＭ（ＤＲＡＭ）メモリインターフェースが含まれる。
【００１２】
一実施形態において、コントローラハブ７７５は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ又はＰＣＩＥ）接続階層におけるルートハブ又はルートコントローラである。コントローラハブ７７５の例には、チップセット、メモリコントローラハブ（ＭＣＨ）、ノースブリッジ、接続制御ハブ（ＩＣＨ）、サウスブリッジ、及びルートコントローラ／ハブが含まれる。チップセットという言葉は、多くの場合、物理的に別々の２つの制御ハブを指す、すなわち、接続制御ハブ（ＩＣＨ）に接続されたメモリ制御ハブ（ＭＣＨ）を指す。
【００１３】
制御ハブ７７５は、シリアルリンク７７９を介してスイッチ／ブリッジ１２０と接続されている。インターフェース／ポート７７７及び７２７とも称される入出力モジュール７７７及び７２７は、制御ハブ７７５とスイッチ１２０との間の通信を提供する階層プロトコルスタックを含む／実装する。モジュール７７７、１１８、１２１、１２２、１２４、１２６、１２９及び７３７のようなモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせに実装されてもよい。さらに、共通に変化し機能するモジュールの境界は、本実施形態では、一緒に実装され、異なる実施形態では、別々に実装される。一実施形態において、複数のデバイスは、スイッチ１２０と接続する機能を有する。
【００１４】
スイッチ１２０は、デバイス７２５及び１２８からのパケット／メッセージを、アップストリームへと送る、すなわち、階層上部のルートコントローラへと送り、また、制御ハブ７７５及びダウンストリームへと送る、すなわち、階層においてルートコントローラ、プロセッサ１０５又はシステムメモリ１１０から離れたデバイス７２５及び１２８へと送る。デバイス７２５及び１２８は、電子システムと接続されるあらゆる内部又は外部デバイス又は構成要素を含み、例えば、Ｉ／Ｏデバイス、ネットワークインターフェースコントローラ（ＮＩＣ）、拡張カード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、ＣＤ／ＤＶＤ  ＲＯＭ、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、Ｆｉｒｅｗｉｒｅデバイス、ユニバーサルシリアルバス（ＵＳＢ）デバイス、スキャナ、及びその他の入出力デバイスを含む。スイッチ１２０は、いかに詳細に説明するメモリ順序付けロジック１４０を含む、デバイスＩＤベースのストリームを可能とする。
【００１５】
グラフィックアクセラレータ１３０も、シリアルリンク７３２を介して制御ハブ７７５に接続される。一実施形態において、グラフィックアクセラレータ１３０は、ＩＣＨと接続されたＭＣＨに接続される。スイッチ１２０、並びにＩ／Ｏデバイス７２５及び１２８は、ＩＣＨに接続される。グラフィックアクセラレータ１３０と制御ハブ７７５との間の通信を行うべく階層プロトコルスタックを実装するために、Ｉ／Ｏモジュール１３１及び１１８が設けられる。
【００１６】
図２には、階層プロトコルスタックの一実施形態が示されている。階層プロトコルスタック２００は、ｑｕｉｃｋ  ｐａｔｈ  ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）スタック、ＰＣＩｅスタック、又はその他のプロトコルスタックのようなあらゆる階層通信スタックを含む。一実施形態において、プロトコルスタック２００は、トランザクション層２０５、リンク層２１０及び物理層２２０を含むＰＣＩｅプロトコルスタックである。図１におけるインターフェース７７７、１１８、１２１、１２２、１２４、１２６、１２９及び７３７のようなインターフェースは、通信プロトコルスタック２００で表されてもよい。通信プロトコルスタックとしての表現は、プロトコルスタックを実装する／含むインターフェース又はモジュールと称されてもよい。
【００１７】
［トランザクション層］
一実施形態において、トランザクション層２０５は、デバイスのプロセッシングコアとデータリンク層２１０及び物理層２２０のような接続構造との間のインターフェースを提供する。この点において、トランザクション層２０５の主な役割は、パケット（すなわち、トランザクション層パケット（ＴＬＰ））の組み立て及び分解である。ＰＣＩｅは、分割トランザクション、すなわち、要求と応答のトランザクションが時間的に分かれている構成を実装し、目的のデバイスが応答のためのデータを収集している間に、リンクがその他のトラフィックを実行できるようにしている。
【００１８】
また、ＰＣＩｅは、クレジットベースのフロー制御を利用する。この技術では、デバイスは、トランザクション層２０５の受信バッファそれぞれに対するクレジットの初期量を通知する。図１の制御ハブ７７５のようなリンクの反対端における外部デバイスは、各ＴＬＰが消費したクレジットの数を数える。トランザクションが、クレジット制限を超えない場合には、トランザクションを送信してもよい。応答を受信すると、クレジットの量が回復する。このクレジットスキームの利点は、クレジット限界に達しない限り、クレジット回復の遅延が、性能に影響を与えることがないことである。
【００１９】
一実施形態において、４つのアドレス空間は、設定アドレス空間、メモリアドレス空間、入出力アドレス空間及びメッセージアドレス空間を含む。メモリ空間トランザクションは、データを、メモリがマップされたロケーションから／へと転送するための１以上の読み出し要求及び書き込み要求を含む。一実施形態において、メモリ空間トランザクションは、例えば、３２ビットアドレスといったような短いアドレス形式、及び、６４ビットアドレスといった長いアドレス形式の２つの異なるアドレス形式を使用可能である。設定空間トランザクションは、ＰＣＩｅデバイスの設定空間にアクセスするのに使用される。設定空間に対するトランザクションは、読み出し要求及び書き込み要求を含む。メッセージ空間トランザクション（又は、単純に、メッセージ）は、ＰＣＩｅエージェント間の帯域内通信をサポートするように規定されている。
【００２０】
したがって、一実施形態において、トランザクション層２０５は、パケットヘッダ／ペイロード２０６を組み立てる。パケットヘッダ／ペイロードの形式は、リンク層において使用可能なＰＣＩｅ規格、すなわち、ＰＣＩｅ基本仕様２．０に記載されている。
【００２１】
データリンク層２１０とも称されるリンク層２１０は、トランザクション層２０５と物理層２２０との間の中間段階として作用する。一実施形態において、データリンク層２１０の役割は、２つの構成要素間でのトランザクション層パケット（ＴＬＰ）を交換する信頼性の高いメカニズムを、リンクに提供することである。データリンク層２１０の一方は、トランザクション層２０５によって組み立てられたＴＬＰを受け取り、パケットシーケンス識別子２１１、すなわち、ＩＤ番号又はパケット番号を適用し、エラー検出コード、すなわち、ＣＲＣ２１２を計算及び適用して、修正されたＴＬＰを物理層２２０に提示して、物理層から外部デバイスへの送信に使用する。
【００２２】
［物理層］
一実施形態において、物理層２２０は、外部デバイスへと物理的にパケットを送信する論理的サブブロック２２１及び電気的サブブロック２２２を含む。ここで、論理的サブブロック２２１は、物理層２２１の"デジタル的"機能の役割を担う。この点に関して、論理的サブブロックは、物理サブブロック２２２による送信のための出力を準備する送信部分と、受信された情報をリンク層２１０に渡す前に、その情報を特定及び準備する受信部分とを有する。
【００２３】
物理ブロック２２２は、送信機及び受信機を含む。送信機には、論理的サブブロック２２１によって符号が供給され、送信機は、符号をシリアル化して、外部デバイスに送信する。受信機には、外部デバイスからシリアル化された符号が供給されて、受信機は受信した信号をビットストリームへと変換する。ビットストリームのシリアル化が解除されて、論理的サブブロック２２１に供給される。一実施形態では、８ｂ／１０ｂ送信コードが採用され、１０ビット符号が、送受信される。ここでは、フレーム２２３を有するパケットをフレームするのに、特別な符号が使用される。また、一例では、受信機は、入力されるシリアルストリームから回復された符号クロックを供給する。
【００２４】
上記したように、トランザクション層２０５、リンク層２１０及び物理層２２０が、ＰＣＩｅプロトコルスタックの特定の実施形態を参照して説明されたが、階層プロトコルスタックはこれに限定されない。実際には、あらゆる階層プロトコルを含める又は実装してもよい。例えば、階層プロトコルで表されるポート／インターフェースには、（１）パケットを組み立てる第１層、すなわちトランザクション層、パケットを順番付けする第２層、すなわちリンク層、及び、パケットを送信する第３層、すなわち物理層が含まれる。
【００２５】
次に図３を参照して、メモリ順序付けロジックの一実施形態を説明する。図に示すように、インテリジェントスイッチ３００は、メモリ順序付けロジック３０５、（ポスト済み要求３１０Ａ−Ｎを含む）ポスト済み要求キュー３０８及びポインタ３２２、（ポストされていない要求３１６Ａ−Ｎを含む）ポストされていない要求キュー３１４及びポインタ３２４、（完了３２０Ａ−Ｎを含む）完了キュー３１８及びポインタ３２６、及び（アップストリーム又はダウンストリームポートである）ポート３５０を含む。
【００２６】
メモリ順序付けロジック３０５は、例えば、図６を参照して上記で説明したようなデバイスのＩＤベースのストリームを可能とする方法を実装し、ＩＤベース順序付けアクティベータ（ａｃｔｉｖａｔｏｒ）３３２、キュー選択部３３４、ポインタハンドラ３３６、要求側／完了側ＩＤ比較部３３８、及びＩＤＯフラグチェック部３４０を含んでもよい。
【００２７】
図４は、ＩＤベースの順序付けフラグを含むパケットの一実施形態が示されている。パケットとは、あらゆる要求、メッセージ、アクセス、又はバス／接続上で送信されるべき情報のグループを指す。図示した実施形態において、パケット４００は、その他の情報フィールド４０５を含む。その他の情報４０５の例としては、予備フィールド、形式フィールド、種類フィールド、属性フィールド、長さフィールド、ＰＣＩｅ規定のフィールド、及び、その他のプロトコル規定のフィールドが含まれる。また、パケット４００は、要求を行うエージェント／デバイスを指す要求側ＩＤ４１５（バイト４及び５）を含み、要求側ＩＤは、グローバルＩＤ／トランザクション記述子の一部であってもよく、又は、グローバルＩＤ／トランザクションＩＤ、及びアドレスロケーションを指すアドレスフィールド４２０を含んでもよい。
【００２８】
属性ビット４０２及び４０４は、図示するような順序モデル４５０、４５５、４６０及び４６５を可能としてもよい。現時点で確保されているバイト１の予備ビット２を使用してもよい属性ビット４０２は、要求側又は完了側によって設定され、要求又は完了が順番依存であり、ポスト済み要求をバイパスしてもよいことを示すＩＤベースの順序付けフラグを表してもよい。
【００２９】
図５には、順序付け表の一実施形態が示されている。表５００は、ＰＣＩｅ規格の表２−２４と同様なものであるが、先に待ち行列に入れられ、ストールした、ポスト済みメモリ書き込み要求又はメッセージ要求を、あるインスタンスの独立した要求ストリームへとバイパス可能なように表を修正（２列目）している。
【００３０】
セル５０５に記載するように、緩い順序付け（ｒｅｌａｘｅｄ  ｏｒｄｅｒｉｎｇ）属性ビット４０４がクリア及びＩＤ順序付けビット４０２もクリアであるメモリ書き込み又はメッセージ要求は、通させない（ａ）、緩い順序付け属性ビット４０４が設定されている及びＩＤ順序付けビット４０２がクリアであるメモリ書き込み又はメッセージ要求は、通すことを許可する（ｂ）、緩い順序付け属性ビット４０４がクリア及びＩＤ順序付けビット４０２が設定されているメモリ書き込み又はメッセージ要求は、要求側ＩＤ４１５が異なる場合には、別のメモリ書き込み又はメッセージ要求を通すのを許可する（ｃ）。
【００３１】
セル５１０に記載するように、緩い順序付け属性ビット４０４がクリア及びＩＤ順序付けビット４０２もクリアである読み出し要求は、通させない（ａ）、緩い順序付け属性ビット４０４が設定されている及びＩＤ順序付けビット４０２がクリアである読み出し要求は、通させない（ｂ）、緩い順序付け属性ビット４０４がクリア又は設定されており、及び、ＩＤ順序付けビット４０２が設定されている読み出し要求は、要求側ＩＤ４１５が異なる場合には、別のメモリ書き込み又はメッセージ要求を通すべく、通すのを許可する（ｃ）。
【００３２】
セル５１５に記載するように、入出力又は設定書き込み要求は、メモリ書き込み又はメッセージ要求を通すことができない。これにより、生産者／消費者利用モデルをサポートするのに必要な強い書き込み順序付けを維持する。
【００３３】
セル５２０に記載するように、緩い順序付け属性ビット４０４がクリア及びＩＤ順序付けビット４０２もクリアである読み出し完了は、通させない（ａ）、緩い順序付け属性ビット４０４が設定されている及びＩＤ順序付けビット４０２がクリアである読み出し完了は、通すのを許可する（ｂ）、緩い順序付け属性ビット４０４がクリア及びＩＤ順序付けビット４０２が設定されている読み出し完了は、完了側ＩＤがメモリ書き込みの要求側ＩＤ４１５と異なる場合には、別のメモリ書き込み又はメッセージ要求を通すべく、通すのを許可する（ｃ）。
【００３４】
最後に、セル５２５に記載するように、入出力又は設定書き込み完了が、メモリ書き込み及びメッセージ要求によってブロックされる又はこれら要求を通すことが許可される。このようなトランザクションは、実際に、反対の方向に動作するため、順序付けの関係が発生しない。
【００３５】
図６は、デバイスＩＤベースのストリームを可能とするフローチャートの一実施形態を示した図である。フロー６０５において、ＩＤベース順序付けアクティベータ３３２は、ポスト済み要求をバイパスする機会が存在するかを判断する。一実施形態において、ポスト済み要求がストールしていると判断された場合には、アクティベータ３３２は、フロー６１０に進む。
【００３６】
そして、キュー選択部３３４は、フロー６１０において、替わりに送信するべきパケットを探すべくキューを選択する。一実施形態において、選択部３３４は、どのキューが最も多いエントリを有しているかに基づいて、ポスト済み要求キュー３０８、ポストされていない要求キュー３１４、又は完了キュー３１８を選択する。別の実施形態では、選択部３３４は常に、替わりのパケットを探すべく、先ずポストされていない要求キュー３１４を選択する。フロー６１５において、ポインタハンドラ３３６は、例えば、一つ前の可能性のある替わりのパケットの通過が許可されなかった場合（すなわち、独立したストリームからでなかった場合、又は、ＩＤ順序付けビット４０２のセットを有していない場合）には、ポインタ３２２、３２４、３２６の１以上をインクリメントしてもよい。
【００３７】
次に、フロー６２０において、要求側／完了側ＩＤ比較部３３８は、替わりとなる候補のパケットの要求側／完了側ＩＤが、ポスト済み要求キュー３０８における先に受信されたポスト済み要求のうちの何れかと異なっているかを判断する。一実施形態において、比較部３３８は、ポストされていない要求及び完了それぞれと共に格納されたポスト済み要求ポインタを使用して、ポスト済みキュー３０８におけるポスト済み要求の何れが、替わりとなる候補のパケットの前に、受信されたかを判断する。替わりとなる候補のパケットが、先に受信されポストされている要求とは独立したストリームであると判断された場合には、フロー６２５に進む。そうでない場合には、プロセスは、フロー６０５に戻る。
【００３８】
フロー６２５において、ＩＤＯフラグチェック部３４０は、ＩＤ順序付けビット４０２が、可能性のある替わりのパケットに設定されているかを確認し、そうであった場合には、フロー６３０において、替わりのパケットがポート３５０を介して送信される。そうでなかった場合には、フロー６０５に戻る。
【００３９】
上記の方法、ソフトウェア、ファームウェア又はコードの実施形態は、処理要素によって実行される機械アクセス可能媒体又は機械可読媒体に格納された命令又はコードを使用して実装されてもよい。機械アクセス可能媒体又は機械可読媒体としては、コンピュータ又は電子システムのような機械が読み出し可能な形式の情報を提供する（例えば、格納及び／又は送信する）あらゆる機械を含む。例えば、機械アクセス可能媒体には、スタティックランダムアクセスメモリ（ＳＲＡＭ）又はダイナミックＲＡＭ（ＤＲＡＭ）のようなＲＡＭ、ＲＯＭ、磁気又は光記憶媒体、フラッシュメモリデバイス、電気、光、音又はその他の形式の伝送信号（例えば、搬送波、赤外線信号、デジタル信号）等が含まれる。
【００４０】
本明細書において、本発明の「一実施形態」又は「ある実施形態」と呼ぶものは、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている「一実施形態において」又は「ある実施形態において」という表現は、必ずしも同一の実施形態を示していない。また、特定の特徴、構造及び特性は、１以上の実施形態において好適なあらゆる態様で組み合わせられてもよい。
【００４１】
以上、特定の例示的実施形態を参照して詳細な説明が記載された。しかしながら、添付の特許請求の範囲に記載された発明の広範な範囲及び精神の範囲から逸脱することなく、例示された実施形態及び本発明の特徴の他の実施形態に対して様々な改良を加えることが可能であることは当業者にとって明らかである。したがって、明細書及び図面は、本発明を限定するのではなく、例示すると見なされるべきである。更に、上記で使用された"実施形態"及び損他の同様な文言は、必ずしも同じ実施形態及び実施例を指しているわけではなく、異なる実施形態を指している場合も、同じ実施形態を指している場合も含む。
【図１】
2014017006.tif 000003
【図２】
2014017006.tif 000004
【図３】
2014017006.tif 000005
【図４】
2014017006.tif 000006
【図５】
2014017006.tif 000007
【図６】
2014017006.tif 000008
【手続補正書】
【提出日】平成25年9月12日(2013.9.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ロジックを備える装置であって、
前記ロジックは、
ポスト済み要求を含む第１のトランザクションに後続し、ＩＤベースの順序付け属性（ＩＤＯ属性）を含む特定のトランザクションを特定し、
前記特定のトランザクションの前記ＩＤＯ属性が設定されていることを決定し、
設定されている前記ＩＤＯ属性の少なくとも一部に基づいて、前記特定のトランザクションに前記第１のトランザクションをパスすることを許可する、
装置。
【請求項２】
前記ロジックは、少なくとも一部がハードウェア回路で実装されている、請求項１に記載の装置。
【請求項３】
前記特定のトランザクションは、前記第１のトランザクションの要求側ＩＤが前記特定のトランザクションの要求側ＩＤと異なるという決定にさらに基づいて、前記第１のトランザクションをパスする、請求項１または請求項２に記載の装置。
【請求項４】
前記ロジックは、前記第１のトランザクションの前記要求側ＩＤが前記特定のトランザクションの前記要求側ＩＤと異なることをさらに決定する、請求項３に記載の装置。
【請求項５】
前記ロジックは、さらに、前記第１のトランザクションのヘッダから前記第１のトランザクションの前記要求側ＩＤを特定し、前記特定のトランザクションのヘッダから前記特定のトランザクションの前記要求側ＩＤを特定する、請求項４に記載の装置。
【請求項６】
前記ポスト済み要求は、メモリ書き込み要求を含む、請求項１から請求項５のいずれか１つに記載の装置。
【請求項７】
前記ポスト済み要求は、メッセージ要求を含む、請求項１から請求項６のいずれか１つに記載の装置。
【請求項８】
前記特定のトランザクションは、ポスト済み要求を含む、請求項１から請求項７のいずれか１つに記載の装置。
【請求項９】
前記特定のトランザクションは、ポストされていない要求を含む、請求項１から請求項８のいずれか１つに記載の装置。
【請求項１０】
前記ポストされていない要求は、読み出し要求およびデータを伴うポストされていない要求の１つを含む、請求項９に記載の装置。
【請求項１１】
前記第１のトランザクションおよび前記特定のトランザクションは、ポイント・ツー・ポイント・シリアルデータリンクを介して受信される、請求項１から請求項１０のいずれか１つに記載の装置。
【請求項１２】
前記ポイント・ツー・ポイント・シリアルデータリンクは、ＰＣＩｅコンポーネントである、請求項１１に記載の装置。
【請求項１３】
前記特定のトランザクションは、要求側ＩＤを含むヘッダ、緩い順序付け属性フィールド、およびＩＤＯ属性フィールドを含む、請求項１から請求項１２のいずれか１つに記載の装置。
【請求項１４】
前記ＩＤＯ属性フィールドは、単一ビットを含む、請求項１３に記載の装置。
【請求項１５】
前記特定のトランザクションは、緩い順序付け属性が設定されている場合に、前記第１のトランザクションをパスすることが許可される、請求項１から請求項１４のいずれか１つに記載の装置。
【請求項１６】
前記ロジックは、前記緩い順序付け属性が設定されているかどうかをさらに決定する、請求項１５に記載の装置。
【請求項１７】
トランザクション層ロジック、リンク層ロジック、及び物理層ロジックを含む階層プロトコルスタックを備え、
前記トランザクション層ロジックは、
第１の要求側ＩＤを含むヘッダデータとポストされた要求とを含み、ストールされた第１のトランザクションを特定し、
第２の要求側ＩＤを含むヘッダデータ、緩い順序付け属性フィールド、およびＩＤベースの順序属性（ＩＤＯ属性）を含み、さらに他のポスト済みの要求、ポストされていない読み出し要求、およびデータを伴うポストされていない要求を含むグループの中の１つを含み、前記第１のトランザクションに後続する第２のトランザクションを特定し、
前記第２のトランザクションの前記ＩＤＯ属性が設定されていることを決定し、
緩い順序付け属性が設定されている場合に前記第１のトランザクションをパスすることが許可され、ポスト済みの要求およびデータを伴うポストされていない要求のうちの１つである前記第２のトランザクションの緩い順序付け属性が設定されているかどうかを決定し、
前記第１の要求側ＩＤおよび前記第２の要求側のＩＤが異なることを決定し、
設定されている前記ＩＤＯ属性の少なくとも一部、および前記第１の要求側ＩＤおよび前記第２の要求側のＩＤが異なるという決定に基づいて、前記第２のトランザクションに前記第１のトランザクションをパスすることを許可する、
装置。
【請求項１８】
ポスト済み要求を含む第１のトランザクションに後続し、ＩＤベースの順序付け属性（ＩＤＯ属性）を含む第２のトランザクションを特定する段階と、
前記第２のトランザクションの前記ＩＤＯ属性が設定されていることを決定する段階と、
設定されている前記ＩＤＯ属性の少なくとも一部に基づいて、前記第２のトランザクションに前記第１のトランザクションをパスすることを許可する段階と
をコンピュータに実行させるためのプログラム。
【請求項１９】
ポスト済みの要求を含む前記第１のトランザクションに後続し、ＩＤＯ属性を含む前記第２のトランザクションを特定する段階と、
前記第２のトランザクションの前記ＩＤＯ属性が設定されていることを決定する段階と、
設定されている前記ＩＤＯ属性の少なくとも一部に基づいて、前記第２のトランザクションに前記第１のトランザクションをパスすることを許可する段階と
を前記コンピュータにさらに実行させる請求項１８に記載のプログラム。
【請求項２０】
前記第１のトランザクションの要求側ＩＤが前記第２のトランザクションの要求側ＩＤと異なることを決定する段階を前記コンピュータにさらに実行させ、
前記第２のトランザクションに前記第１のトランザクションをパスすることを許可する段階は、前記第１のトランザクションの前記要求側ＩＤが前記第２のトランザクションの前記要求側ＩＤと異なるという決定にさらに基づく、請求項１８または請求項１９に記載のプログラム。
【請求項２１】
前記第１のトランザクションの前記要求側ＩＤが前記第２のトランザクションの前記要求側ＩＤと異なるという決定は、前記第１のトランザクションのヘッダデータ内の前記第１のトランザクションの前記要求側ＩＤを特定すること、および前記第２のトランザクションのヘッダデータ内の前記第２のトランザクションの前記要求側ＩＤを特定することを含む、請求項２０に記載のプログラム。
【請求項２２】
前記第２のトランザクションは、さらに緩い順序付け属性を含み、
前記緩い順序付け属性が設定されている場合に前記第１のトランザクションをパスすることが許可される前記第２のトランザクションの前記緩い順序付け属性が設定されているかどうかを決定する段階を前記コンピュータにさらに実行させる、請求項１８から請求項２１のいずれか１つに記載のプログラム。
【請求項２３】
前記第１のトランザクションを受信する段階と、
前記第２のトランザクションを受信する段階と
を前記コンピュータにさらに実行させる、請求項１８から請求項２２のいずれか１つに記載のプログラム。
【請求項２４】
ポスト済み要求を含む第１のトランザクションに後続し、ＩＤベースの順序付け属性（ＩＤＯ属性）を含む第２のトランザクションを特定する段階と、
前記第２のトランザクションの前記ＩＤＯ属性が設定されていることを決定する段階と、
設定されている前記ＩＤＯ属性の少なくとも一部に基づいて、前記第２のトランザクションに前記第１のトランザクションをパスすることを許可する段階と
を備える方法。
【請求項２５】
第１のＩ／Ｏデバイスと、
第２のＩ／Ｏデバイスと、
前記第１のＩ／Ｏデバイスおよび前記第２のＩ／Ｏデバイスに通信可能に接続された第３のＩ／Ｏデバイスと
を備え、
前記第３のＩ／Ｏデバイスは、
前記第１のＩ／Ｏデバイスから第１のトランザクションを受信し、
前記第１のトランザクションに後続して、前記第２のＩ／Ｏデバイスから第２のトランザクションを受信し、
前記第２のトランザクションのＩＤベースの順序付け属性（ＩＤＯ属性）が設定されていることを決定し、
設定されている前記ＩＤＯ属性の少なくとも一部に基づいて前記第２のトランザクションに前記第１のトランザクションをパスすることを許可する、
システム。
【請求項２６】
前記第３のＩ／Ｏデバイスは、前記第１のトランザクションの要求側ＩＤが前記第２のトランザクションの要求側ＩＤと異なることをさらに決定し、
前記第２のトランザクションは、前記第１のトランザクションの前記要求側ＩＤが前記第２のトランザクションの前記要求側ＩＤと異なるという決定にさらに基づいて前記第１のトランザクションをパスする、請求項２５に記載のシステム。
【請求項２７】
前記第３のＩ／Ｏデバイスは、スイッチを含む、請求項２５または請求項２６に記載のシステム。
【請求項２８】
前記第１のＩ／Ｏデバイスは、マイクロプロセッサ、グラフィックアクセラレータ、およびメモリコントローラのうちの少なくとも１つを含む、請求項２７に記載のシステム。
【請求項２９】
前記第２のＩ／Ｏデバイスは、マイクロプロセッサ、グラフィックアクセラレータ、およびメモリコントローラのうちの少なくとも１つを含む、請求項２７または請求項２８に記載のシステム。
【請求項３０】
前記第３のＩ／Ｏデバイスは、ＰＣＩｅコンポーネントシリアルポイント・ツー・ポイント接続によって前記第１のＩ／Ｏデバイスおよび前記第２のＩ／Ｏデバイスに通信可能に接続される、請求項２５から請求項２９のいずれか１つに記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
［シリアルポイント・ツー・ポイント階層プロトコルリンク／接続］システム１００は、コントローラハブ１１５に接続されたプロセッサ１０５及びシステムメモリ１１０を含む。プロセッサ１０５は、マイクロプロセッサ、ホストプロセッサ、埋め込みプロセッサ、コプロセッサ、又はその他のプロセッサを含む。プロセッサ１０５は、フロントサイドバス（ＦＳＢ）１０６を介してコントローラハブ１１５に接続される。一実施形態において、ＦＳＢ１０６は、以下に記載するような、シリアルポイント・ツー・ポイント接続である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
システムメモリ１１０は、ランダムアクセスメモリ（ＲＡＭ）、不揮発性（ＮＶ）メモリ、又はシステム１００におけるデバイスがアクセス可能なその他のメモリといったあらゆるメモリを含む。システムメモリ１１０は、メモリインターフェース１１６を介してコントローラハブ１１５と接続される。メモリインターフェースの例としては、ダブルデータレート（ＤＤＲ）メモリインターフェース、デュアルチャネルＤＤＲメモリインターフェース、及びダイナミックＲＡＭ（ＤＲＡＭ）メモリインターフェースが含まれる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
一実施形態において、コントローラハブ７７５は、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ又はＰＣＩＥ）接続階層におけるルートハブ又はルートコントローラである。コントローラハブ１１５の例には、チップセット、メモリコントローラハブ（ＭＣＨ）、ノースブリッジ、接続制御ハブ（ＩＣＨ）、サウスブリッジ、及びルートコントローラ／ハブが含まれる。チップセットという言葉は、多くの場合、物理的に別々の２つの制御ハブを指す、すなわち、接続制御ハブ（ＩＣＨ）に接続されたメモリ制御ハブ（ＭＣＨ）を指す。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
制御ハブ１１５は、シリアルリンク１１９を介してスイッチ／ブリッジ１２０と接続されている。インターフェース／ポート１１７及び１２１とも称される入出力モジュール１１７及び１２１は、制御ハブ１１５とスイッチ１２０との間の通信を提供する階層プロトコルスタックを含む／実装する。モジュール１１７、１１８、１２１、１２２、１２４、１２６、１２９及び１３１のようなモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせに実装されてもよい。さらに、共通に変化し機能するモジュールの境界は、本実施形態では、一緒に実装され、異なる実施形態では、別々に実装される。一実施形態において、複数のデバイスは、スイッチ１２０と接続する機能を有する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
スイッチ１２０は、デバイス１２５及び１２８からのパケット／メッセージを、アップストリームへと送る、すなわち、階層上部のルートコントローラへと送り、また、制御ハブ１１５及びダウンストリームへと送る、すなわち、階層においてルートコントローラ、プロセッサ１０５又はシステムメモリ１１０から離れたデバイス１２５及び１２８へと送る。デバイス１２５及び１２８は、電子システムと接続されるあらゆる内部又は外部デバイス又は構成要素を含み、例えば、Ｉ／Ｏデバイス、ネットワークインターフェースコントローラ（ＮＩＣ）、拡張カード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、ＣＤ／ＤＶＤ  ＲＯＭ、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、Ｆｉｒｅｗｉｒｅデバイス、ユニバーサルシリアルバス（ＵＳＢ）デバイス、スキャナ、及びその他の入出力デバイスを含む。スイッチ１２０は、いかに詳細に説明するメモリ順序付けロジック１４０を含む、デバイスＩＤベースのストリームを可能とする。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
グラフィックアクセラレータ１３０も、シリアルリンク１３２を介して制御ハブ１１５に接続される。一実施形態において、グラフィックアクセラレータ１３０は、ＩＣＨと接続されたＭＣＨに接続される。スイッチ１２０、並びにＩ／Ｏデバイス７２５及び１２８は、ＩＣＨに接続される。グラフィックアクセラレータ１３０と制御ハブ１１５との間の通信を行うべく階層プロトコルスタックを実装するために、Ｉ／Ｏモジュール１３１及び１１８が設けられる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
図２には、階層プロトコルスタックの一実施形態が示されている。階層プロトコルスタック２００は、ｑｕｉｃｋ  ｐａｔｈ  ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）スタック、ＰＣＩｅスタック、又はその他のプロトコルスタックのようなあらゆる階層通信スタックを含む。一実施形態において、プロトコルスタック２００は、トランザクション層２０５、リンク層２１０及び物理層２２０を含むＰＣＩｅプロトコルスタックである。図１におけるインターフェース１１７、１１８、１２１、１２２、１２４、１２６、１２９及び１３１のようなインターフェースは、通信プロトコルスタック２００で表されてもよい。通信プロトコルスタックとしての表現は、プロトコルスタックを実装する／含むインターフェース又はモジュールと称されてもよい。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
また、ＰＣＩｅは、クレジットベースのフロー制御を利用する。この技術では、デバイスは、トランザクション層２０５の受信バッファそれぞれに対するクレジットの初期量を通知する。図１の制御ハブ１１５のようなリンクの反対端における外部デバイスは、各ＴＬＰが消費したクレジットの数を数える。トランザクションが、クレジット制限を超えない場合には、トランザクションを送信してもよい。応答を受信すると、クレジットの量が回復する。このクレジットスキームの利点は、クレジット限界に達しない限り、クレジット回復の遅延が、性能に影響を与えることがないことである。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
属性ビット４０２及び４０４は、図示するような順序モデル４５０、４５５、４６０及び４６５を可能としてもよい。現時点で確保されているバイト１の予備ビット２を使用してもよい属性ビット４０２は、要求又は完了が順序に依存しないことを示すべく要求側又は完了側によって設定され、ポスト済み要求をバイパスしてもよいことを示すＩＤベースの順序付けフラグを表してもよい。
【外国語明細書】
2014017006000001.pdf