(57)【要約】  メモリリードおよびライト要求が受信される。リードは、メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを有する通信プロトコルに従って受信される。メモリリードおよびライト要求は、メモリリードがメモリライトを追い越しうるトランザクションオーダリングルールを有する他の通信プロトコルに従って、第１のデバイスに転送される。転送されたメモリリード要求は、受信されたリード要求内の緩和されたオーダリングフラグがアサートされている場合は常に、転送されたメモリライト要求を追い越すことを許可される。また、他の実施例が説明され、特許請求される。
2008503808.tif 000002
【特許請求の範囲】
【請求項１】
メモリリードおよびライトトランザクションを処理する方法であって、
メモリライト要求を受信することと、
次に、メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを有する第１の通信プロトコルに従ってメモリリード要求を受信することと、
メモリリードがメモリライトを追い越しうるトランザクションオーダリングルールを有する第２の通信プロトコルに従って前記メモリリードおよびライト要求を転送することと
を備え、
前記転送されたメモリリード要求は、前記受信されたメモリリード要求内の緩和されたオーダリングフラグがアサートされた場合は常に、前記転送されたメモリライト要求を追い越すことを許可される
ことを特徴とする方法。
【請求項２】
前記受信されたメモリライトおよびリード要求がメインメモリをターゲットとすることを特徴とする請求項１に記載の方法。
【請求項３】
前記転送されたメモリリード要求と前記転送されたメモリライト要求の間にアドレスコンフリクトが無い場合にのみ、前記転送されたメモリリード要求は、前記転送されたメモリライト要求を追い越すことを、許可されることを特徴とする請求項２に記載の方法。
【請求項４】
前記受信されたメモリリードおよびライト要求は、同一のエンドポイントから送信されたことを特徴とする請求項２に記載の方法。
【請求項５】
第２のプロトコルは、システムチップセットと複数のプロセッサ間における通信のための、キャッシュコヒーレント・ポイント・トゥ・ポイントプロトコルであることを特徴とする請求項２に記載の方法。
【請求項６】
前記第１のプロトコルは、強いトランザクションオーダリングを有するポイント・トゥ・ポイントプロトコルであることを特徴とする請求項５に記載の方法。
【請求項７】
前記第１のプロトコルは、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルであることを特徴とする請求項５に記載の方法。
【請求項８】
プロセッサと、Ｉ／Ｏデバイスを含むＩ／Ｏファブリックとを接続し、前記プロセッサに代わってトランザクション要求を送信し、前記Ｉ／Ｏデバイスに代わってメモリ要求を送信するルートデバイスであって、前記プロセッサに接続され、送信される前記メモリ要求が通り、メモリリードがメモリライトを追い越しうるトランザクションオーダリングルールを含むコヒーレント・ポイント・トゥ・ポイント通信プロトコルに従って設計された第１のポートと、前記Ｉ／Ｏファブリックに接続され、前記トランザクション要求が通り、メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを含むポイント・トゥ・ポイント通信プロトコルに従って設計された第２のポートとを有し、前記Ｉ／Ｏファブリックからのメモリリードおよびメモリライト要求を格納する入力キューと、前記プロセッサに送信されるメモリリードおよびメモリライト要求を格納する出力キューとを有する前記ルートデバイスと、
前記Ｉ／Ｏデバイスから受信されたメモリリード要求内の緩和されたオーダリングフラグを検出し、それに応じて前記受信されたメモリリード要求が前記入力および出力キューのいずれかに格納されたメモリライト要求を追い越すことを許可するするロジックと
を備えることを特徴とする装置。
【請求項９】
前記ポイント・トゥ・ポイント通信プロトコルは、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルであることを特徴とする請求項８に記載の装置。
【請求項１０】
前記ポイント・トゥ・ポイント通信プロトコルは、複数の双方向シリアル経路を有する全二重経路を定義することを特徴とする請求項８に記載の装置。
【請求項１１】
メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを含むポイント・トゥ・ポイント通信プロトコルに従って設計されたアップストリームデバイスへの第１のポートと、アップストリーム方向のトランザクション要求を格納する出力キューとを有し、前記アップストリームデバイスとダウンストリームデバイスとをブリッジするスイッチデバイスと、
前記プロトコルに従って設計された前記ダウンストリームデバイスへの第２のポートと、アップストリーム方向のトランザクション要求を格納する入力キューと、
受信されたアップストリーム方向のメモリリード要求内の緩和されたオーダリングフラグを検出し、それに応じて前記受信されたメモリリード要求が前記入力および出力キューのいずれかに存在するメモリライト要求を追い越すことを許可するロジックと
を備えることを特徴とする装置。
【請求項１２】
前記ポイント・トゥ・ポイント通信プロトコルは、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルであることを特徴とする請求項１１に記載の装置。
【請求項１３】
前記ポイント・トゥ・ポイント通信プロトコルは、複数の双方向シリアル経路を有する全二重経路を定義することを特徴とする請求項１１に記載の装置。
【請求項１４】
プロセッサと、
前記プロセッサによってアクセスされるメインメモリと、
Ｉ／Ｏデバイスをブリッジするスイッチデバイスと、
前記メインメモリをターゲットとして前記Ｉ／Ｏデバイスに代わって送信されるメモリ要求が通過し、メモリリードがメモリライトを追い越しうるトランザクションオーダリングルールを含むコヒーレント・ポイント・トゥ・ポイント通信プロトコルに従って設計された第１のポートと、前記プロセッサに代わって送信されるトランザクション要求が通過し、メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを含むポイント・トゥ・ポイント通信プロトコルに従って設計された、前記スイッチデバイスへの第２のポートと、前記スイッチデバイスから受信されたメモリリードおよびメモリライト要求を格納する入力キューと、前記メインメモリに送信されるメモリリードおよびメモリライト要求を格納する出力キューとを有し、前記プロセッサと前記スイッチデバイスとを接続するルートデバイスと、
前記Ｉ／Ｏデバイスからのメモリリード要求内の緩和されたオーダリングフラグを検出し、それに応じて前記メモリリード要求が前記入力および出力キューのいずれかに格納されたメモリライト要求を追い越すことを許可するロジックと
を備えることを特徴とするシステム。
【請求項１５】
前記スイッチデバイスは、
前記ポイント・トゥ・ポイント通信プロトコルに従って設計された、前記ルートデバイスへの第１のポートと、アップストリーム方向のメモリリードおよびライト要求を格納する出力キューと、
前記ポイント・トゥ・ポイント通信プロトコルに従って設計された、前記Ｉ／Ｏデバイスへの第２のポートと、前記Ｉ／Ｏデバイスからのメモリリードおよびライト要求を格納する入力キューと、
前記メモリリード要求内の前記緩和されたオーダリングフラグを検出し、それに応じて前記メモリリード要求が、前記スイッチデバイスの前記入力および出力キューのいずれかにあるメモリライト要求を追い越すことを許可するロジックと
を備えることを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記ポイント・トゥ・ポイント通信プロトコルは、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルであることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記コヒーレント・ポイント・トゥ・ポイント通信プロトコルに従って前記ルートデバイスと前記メインメモリとを接続するメモリコントローラノードを更に備えることを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記緩和されたオーダリングフラグを含む前記メモリリード要求が送信されるネットワークアダプタカードである、Ｉ／Ｏデバイスと併用されることを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記スイッチの前記第２のポートと、ＰＣＩレガシーデバイスである前記ネットワークアダプタカードとを接続する、ブリッジを更に備えることを特徴とする請求項１８に記載のシステム。
【請求項２０】
リードおよびライトトランザクションを処理する方法であって、
メモリライト要求を受信することと、
次に、メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを有する第１の通信プロトコルに従ってメモリリード要求を受信することと、
次に、メモリリードがメモリライトを追い越しうるトランザクションオーダリングルールを有する第２の通信プロトコルに従って前記メモリリードおよびライト要求を転送し、アドレスコンフリクトが無い場合に、前記転送されたメモリリード要求が前記転送されたメモリライト要求を追い越すことを許可することと、
次に、前記第２のプロトコルに従って前記リード要求の完了を受信することと、
次に、前記メモリライトがグローバルに認識可能となった場合にのみ前記第１のプロトコルに従って前記完了を前記リクエスタに送信することと
を備えることを特徴とする方法。
【請求項２１】
前記メモリライトおよびリード要求は、メインメモリをターゲットとすることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記メモリリードおよびライト要求は、同一のエンドポイントから送信されることを特徴とする請求項２１に記載の方法。
【請求項２３】
前記第２のプロトコルは、システムチップセットと複数のプロセッサの間における通信のための、キャッシュコヒーレント・ポイント・トゥ・ポイントプロトコルであることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記第１のプロトコルは、強いトランザクションオーダリングを有するポイント・トゥ・ポイントプロトコルであることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記第１のプロトコルは、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルであることを特徴とする請求項２３に記載の方法。
【請求項２６】
プロセッサと、Ｉ／Ｏデバイスを含むＩ／Ｏファブリックとを接続し、前記プロセッサに代わってトランザクション要求を送信し、前記Ｉ／Ｏデバイスに代わってメモリ要求を送信するルートデバイスであって、メモリリードがメモリライトを追い越しうるトランザクションオーダリングルールを含むコヒーレント・ポイント・トゥ・ポイント通信プロトコルに従って設計され、送信される前記メモリ要求が通過する前記プロセッサへの第１のポートと、メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを含むポイント・トゥ・ポイント通信プロトコルに従って設計された、送信される前記トランザクション要求が通過する、前記Ｉ／Ｏファブリックへの第２のポートとを有し、前記Ｉ／Ｏファブリックからのメモリリードおよびメモリライト要求を格納する入力キューと、前記プロセッサに送信されるメモリリードおよびメモリライト要求を格納する出力キューとを有するルートデバイスと、
アドレスコンフリクトが無い場合に、受信されたメモリリード要求が、前記入力および出力キューのいずれかに格納されたメモリライト要求を追い越すことを許可し、前記メモリライトがグローバルに認識可能となった場合にのみ、前記ポイント・トゥ・ポイントプロトコルに従って、前記メモリリード要求の完了をそのリクエスタに送信するロジックと
を備えることを特徴とする装置。
【請求項２７】
前記ポイント・トゥ・ポイント通信プロトコルは、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルであることを特徴とする請求項２６に記載の装置。
【請求項２８】
前記ポイント・トゥ・ポイント通信プロトコルは、双方向において複数のシリアル経路を有する全二重経路を定義することを特徴とする請求項２６に記載の装置。
【請求項２９】
プロセッサと、
前記プロセッサによってアクセスされるメインメモリと、
Ｉ／Ｏデバイスをブリッジするスイッチデバイスと、
前記メインメモリをターゲットとして前記Ｉ／Ｏデバイスに代わって送信されるメモリ要求が通過し、メモリリードがメモリライトを追い越しうるトランザクションオーダリングルールを含むコヒーレント・ポイント・トゥ・ポイント通信プロトコルに従って設計された第１のポートと、前記プロセッサに代わって送信されるトランザクション要求が通過し、メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを含むポイント・トゥ・ポイント通信プロトコルに従って設計された、前記スイッチデバイスへの第２のポートと、前記スイッチデバイスから受信されたメモリリードおよびメモリライト要求を格納する入力キューと、前記メインメモリに送信されるメモリリードおよびメモリライト要求を格納する出力キューとを有し、前記プロセッサと前記スイッチデバイスとを接続するルートデバイスと、
アドレスコンフリクトが無い場合に、受信されたメモリリード要求が前記入力および出力キューのいずれかに格納されたメモリライト要求を追い越すことを許可し、前記メモリライトがグローバルに認識可能となった場合にのみ、前記ポイント・トゥ・ポイントプロトコルに従って、前記メモリリード要求の完了をそのリクエスタに送信するロジックと
を備えることを特徴とするシステム。
【請求項３０】
前記ポイント・トゥ・ポイント通信プロトコルは、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルであることを特徴とする請求項２９に記載のシステム。
【請求項３１】
前記コヒーレント・ポイント・トゥ・ポイントプロトコルに従って前記ルートデバイスと前記メインメモリとを接続するメモリコントローラノードを更に備えることを特徴とする請求項２９に記載のシステム。
【請求項３２】
前記スイッチデバイスは、メモリリード要求が同一方向のメモリライト要求を追い越すことができないトランザクションオーダリングルールを含む強いトランザクションオーダリングを実装することを特徴とする請求項２９に記載のシステム。
【請求項３３】
前記受信されたメモリリード要求が送信されるネットワークアダプタカードである、Ｉ／Ｏデバイスと併用されることを特徴とする請求項２９に記載のシステム。
【請求項３４】
前記スイッチデバイスと、前記プロセッサをインタラプトするサイドバンドピンを有するレガシーデバイスである前記ネットワークアダプタカードとを接続するブリッジを更に備えることを特徴とする請求項３３に記載のシステム。
【請求項３５】
メモリリードが同一方向のメモリライトを追い越すことができないトランザクションオーダリングルールを含むポイント・トゥ・ポイント通信プロトコルに従って設計されたリンクインタフェースを有する集積回路デバイスを備え、
前記デバイスは、
デバイスドライバによってアサートされた場合に、前記デバイスに前記リンクインタフェースを介して送信するメモリリード要求パケットのフィールド内の緩和されたオーダリングヒントをアサートすることを許可するフィールドを含む、前記デバイスドライバにアクセスできる設定レジスタを有する
ことを特徴とする装置。
【請求項３６】
前記集積回路デバイスは、ネットワークインタフェースコントローラであることを特徴とする請求項３５に記載の装置。
【請求項３７】
前記集積回路デバイスは、グラフィックディスプレイコントローラであることを特徴とする請求項３５に記載の装置。
【請求項３８】
前記リンクインタフェースは、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルに従って設計されることを特徴とする請求項３５に記載の装置。
【請求項３９】
実行された場合に、マシンに、ポイント・トゥ・ポイント通信プロトコルに従って設計されたリンクインタフェースを含むＩ／Ｏデバイスの設定レジスタのフィールドをアサートさせる命令群を有するマシンアクセス可能な媒体
を備え、
前記プロトコルは、メモリリードが同一方向のメモリライトを追い越すことができないトランザクションオーダリングルールを有し、
前記フィールドは、アサートされた場合、前記Ｉ／Ｏデバイスが前記リンクインタフェースを介して送信するメモリリード要求のフィールド内の緩和されたオーダリングヒントをアサートすることを許可する
ことを特徴とする製品。
【請求項４０】
前記命令群は、ネットワークインタフェースコントローラに対するデバイスドライバの一部であることを特徴とする請求項３９に記載の製品。
【請求項４１】
前記命令群は、グラフィックディスプレイコントローラに対するデバイスドライバの一部であることを特徴とする請求項３９に記載の製品。
【請求項４２】
メモリリードおよびライト要求を処理する方法であって、
メモリリードが同一方向のメモリライトを追い越さないトランザクションオーダリングルールを有するＩ／Ｏリンクを介して、リクエスタから、メモリリード要求が後続する複数のメモリライト要求を受信することと、
メモリリードが同一方向のメモリライトを追い越しうるキャッシュコヒーレント・リンクを介して、前記要求をメインメモリに転送することと、
前記Ｉ／Ｏリンクを介して、前記リード要求に対応する完了パケットを前記リクエスタに転送することと
を備え、
前記完了パケットは、前記複数のライト要求のうちの最後の１つが前記メインメモリに到達する前に前記Ｉ／Ｏリンクに出現する
ことを特徴とする方法。
【請求項４３】
前記Ｉ／Ｏリンクは、ＰＣＩ  Ｅｘｐｒｅｓｓリンクであることを特徴とする請求項４２に記載の方法。
【請求項４４】
前記リクエスタは、プロセッサをインタラプトするサイドバンドピンを有するＩ／Ｏデバイスであることを特徴とする請求項４２に記載の方法。
【請求項４５】
メモリリードおよびライト要求を処理する方法であって、
メモリリードが同一方向のメモリライトを追い越すことができないトランザクションオーダリングルールを有するＩ／Ｏリンクを介して、メモリリード要求が後続するメモリライト要求を受信することと、
メモリリードが同一方向のメモリライトを追い越しうるトランザクションオーダリングルーツを有するキャッシュコヒーレント・リンクを介して、前記要求をメインメモリに転送することと、
前記キャッシュコヒーレント・リンクを介して、前記メモリライト要求に応じて送信されたアクナリッジパケットを受信することと、
前記キャッシュコヒーレント・リンクを介して、前記メモリリード要求に応じて送信された完了パケットを受信することと、
前記Ｉ／Ｏリンクを介して、前記完了パケットを転送することと
を備え、
前記完了パケットは、前記アクナリッジパケットが前記キャッシュコヒーレント・リンクに出現する前に前記Ｉ／Ｏリンクに出現する
ことを特徴とする方法。
【請求項４６】
前記メモリライトおよびリード要求は、同一のリクエスタから受信されることを特徴とする請求項４５に記載の方法。
【請求項４７】
前記リクエスタは、Ｉ／Ｏデバイスであることを特徴とする請求項４５に記載の方法。
【請求項４８】
前記Ｉ／Ｏリンクは、ＰＣＩ  Ｅｘｐｒｅｓｓリンクであることを特徴とする請求項４７に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
発明の実施例は、強いトランザクションオーダリングおよび緩和されたトランザクションオーダリングの両方を有するコンピュータシステムにおけるメモリリードおよびメモリライト要求の処理に関する。また、他の実施例が説明される。
【０００２】
コンピュータシステムは、トランザクションを用いて互いに通信するいくつかのデバイスのファブリックを有する。例えば、プロセッサ（マルチプロセッサシステムの一部であってもよい）は、メインメモリにアクセスすること、および、（グラフィックディスプレイアダプタ、ネットワークインタフェースコントローラなどの）Ｉ／Ｏデバイスにアクセスするために、トランザクション要求を発行する。Ｉ／Ｏデバイスは、また、メモリアドレスマップ内の場所にアクセスするために、トランザクション要求を発行することができる（メモリリードおよびメモリライト要求）。また、異なるプロトコルを介して通信するデバイス間におけるブリッジとして動作する中間デバイスが存在する。ファブリックは、また、要求が伝播または転送される前にリソースが解放されるまで、要求を一時的に格納するために、様々な場所にキューを有する。
【０００３】
トランザクションがソフトウェアの製作者によって意図された順序で完了することを保証するために、同時にファブリックを移動するトランザクションに対して強いオーダリングルールが課されてもよい。しかしながら、この安全な方法は、概して、複雑なファブリックの性能に悪影響を及ぼす。例えば、トランザクションの長いシーケンスの後に無関係のトランザクションが続くシナリオを考える。シーケンスの進行が遅い場合、無関係のトランザクションの完了を待つデバイスの性能は、著しく悪化する。この理由から、いくつかのシステムは、一定のトランザクションが以前のトランザクションを追い越すことを許可される、緩和されたオーダリングを実装する。
【０００４】
しかしながら、ここで、ファブリックがオレゴン州ポートランドのＰＣＩ−ＳＩＧ  Ａｄｍｉｎｉｓｔｒａｔｉｏｎから入手可能であるＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ仕様１．０に説明されるようなＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）Ｅｘｐｒｅｓｓ通信プロトコルを使用するシステムを考える。ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルは、メモリリード要求がメモリライトを追い越すことを許可されないポイント・トゥ・ポイントプロトコルの例である。換言すると、ＰＣＩ  Ｅｘｐｒｅｓｓファブリックでは、メモリリードは、（メモリリードとキューのようなハードウェアリソースを共有する）以前のメモリライトがグローバルに認識可能になるまで、実行を進めることが許可されない。グローバルに認識可能とは、全ての他のデバイスまたはエージェントが書き込まれたデータにアクセスできることを意味する。
【０００５】
本発明の実施形態は、参照数字が同様の要素を指す添付図面を本発明の実施例として使用することにより説明され、添付図面は本発明を限定するものではない。本開示における参照される発明の「ある」実施例は、必ずしも同一の実施例ではなく、少なくとも１つの実施例であることを示す。
【図面の簡単な説明】
【０００６】
【図１】ファブリックがＰＣＩ  Ｅｘｐｒｅｓｓのようなポイント・トゥ・ポイントプロトコルおよび緩和されたオーダリングのキャッシュコヒーレント・プロトコルに基づく、コンピュータシステムのブロック図を示す。
【０００７】
【図２】緩和されたオーダリングフラグを用いてメモリリードおよびライトトランザクションを処理するための、より一般化された方法を示すフロー図である。
【０００８】
【図３】本発明の他の実施例を示すブロック図である。
【０００９】
【図４】緩和されたオーダリングフラグに依存することなくリードおよびライトトランザクションを処理する方法のフロー図を示す。
【発明を実施するための最良の形態】
【００１０】
図１を参照すると、ファブリックが部分的にＰＣＩ  Ｅｘｐｒｅｓｓプロトコルのようなポイント・トゥ・ポイントプロトコルに基づく例示のコンピュータシステムのブロック図が示される。システムは、（本実施例では大部分がダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスからなる）メインメモリ部１０６に接続されたプロセッサ１０４を有する。プロセッサ１０４は、マルチプロセッサシステムの一部であってもよく、本実施例では、独立した（大部分がＤＲＡＭデバイスからなる）メインメモリ部１１０に接続された第２のプロセッサ１０８を有する。ＤＲＡＭ以外のメモリデバイスが代わりに用いられてもよい。システムは、また、プロセッサ１０４とスイッチデバイス１１８とを接続するルートデバイス１１４を有する。ルートデバイスは、プロセッサ１０４に代わって、ルートデバイス１１４から離れるダウンストリーム方向にトランザクション要求を送信する。ルートデバイス１１４は、また、エンドポイント１２２に代わってメモリ要求を送信する。エンドポイント１２２は、ネットワークインタフェースコントローラ又はディスクコントローラのような、Ｉ／Ｏデバイスであってもよい。ルートデバイス１１４は、送信されるメモリ要求が通過する、プロセッサ１０４へのポート１２４を有する。当該ポート１２４は、メモリリードがメモリライトを追い越しうるやや緩和されたトランザクションオーダリングルールを有する、キャッシュコヒーレント・ポイント・トゥ・ポイント通信プロトコルに従って設計される。従って、ポート１２４は、ルートデバイス１１４とプロセッサ１０４または１０８とを接続するコヒーレント・ポイント・トゥ・ポイントリンクの一部であると考えられる。
【００１１】
ルートデバイス１１４は、また、送受信されるトランザクション要求が通過する、スイッチデバイス１１８への第２のポート１２８を有する。第２のポート１２８は、メモリリードがメモリライトを追い越すことができない比較的強いトランザクションオーダリングルールを有するポイント・トゥ・ピント通信プロトコルに従って設計される。そのようなプロトコルの例は、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルである。同様のトランザクションオーダリングルールを有する他の通信プロトコルが代わりに用いられてもよい。ルートデバイスは、また、本実施例ではスイッチデバイス１１９から送信される、受信されたアップストリーム方向のメモリリードおよびメモリライト要求を格納するために、入力キュー（図示されない）を有する。出力キュー（図示されない）は、プロセッサ１０４に送信されるメモリリードおよびメモリライト要求を格納するために提供される。
【００１２】
処理において、エンドポイント１２２は、ルートデバイス１１４に伝播するまたはスイッチデバイス１１８によって転送されるメモリリード要求を開始する。そして、ルートデバイス１１４は、要求を、例えばプロセッサ１０４に、順に転送する。本発明のある実施例によると、メモリリード要求パケットは、（リード要求緩和されたオーダリングヒント、ＲＲＲＯとしても称される）緩和されたオーダリングフラグと共に提供される。エンドポイント１２２は、システム内で実行される（プロセッサ１０４によって実行されている）デバイスドライバにアクセス可能な設定レジスタ（図示されない）を有してもよい。レジスタは、デバイスドライバによってアサートされたとき、メモリリードのアウトオブオーダー処理が許容可能であることが予期される場合、リード要求パケットの送信前にエンドポイント１２２がパケット内のＲＲＲＯヒントまたはフラグをセットすることを許可するフィールドを有する。ロジック（図示されない）は、メモリリード要求内の緩和されたオーダリングフラグを検出すること、および、それに応じてメモリリード要求が以前に入力または出力キューのいずれかにエンキューされた１つ以上のメモリライト要求を追い越すことを許可するために、ルートデバイス１１４において提供されてもよい。この並べ替えは、ロジックがメモリリードと追い越されるメモリライトの間においてアドレスコンフリクトが無いと判定した場合にのみ、許可されるべきである。アドレスコンフリクトが存在する場合、リードが以前に書き込まれた全てのデータを取得できることを保証するために、リードおよびライト要求は、ソースに基づく順序に保たれる。並べ替えることによって、スイッチデバイス１１８またはルートデバイス１１４は、トランザクションをアップストリーム方向の以前にエンキューされたメモリライト要求の前に移す。
【００１３】
メモリリードおよびライト要求は、メインメモリ部１０６または１１０をターゲットにしてもよい。本実施例では、そのような要求は、プロセッサ１０４または１０８内のロジックによって処理される。これは、例えば、メインメモリ部１０６および１１０におけるＤＲＡＭデバイスに実際にアクセスするために使用される、オンチップメモリコントローラ（図示されない）を含んでもよい。上記に説明された本発明の実施例は、Ｉ／Ｏデバイスからのメモリリード要求に対する緩和されたオーダリング要件により、（本実施例のようにメモリがプロセッサに「組み込まれている」場合に特に大きくなる）リード要求の遅延を削減することを支援しうる。これは、強いオーダリングを有するＰＣＩ  Ｅｘｐｒｅｓｓプロトコルに従う全二重ポイント・トゥ・ポイントシステムインタフェースと、緩和されたオーダリングを有し、プロセッサ１０４および１０８と通信するために使用されるコヒーレント・ポイント・トゥ・ポイントリンクとを有するシステムにおいて特に有用である。これは、メモリリード要求に対する強いトランザクションオーダリングが、例えば、アウトバウンドまたはダウンストリーム方向（すなわち、メインメモリ１０６および１１０からリクエスタに対するリードの完了によって用いられる方向）のコヒーレント・リンクの比較的低い使用率を引き起こしうるためである。従って、スイッチデバイス１１８は、強いトランザクションオーダリングルールを有するポイント・トゥ・ポイントリンクへのインタフェースを有するが、少なくともメモリリード要求がメモリライトを追い越すことを許可されない点に関して、スイッチデバイス１１８およびルートデバイス１１４は、アサートされた緩和されたオーダリングフラグまたはヒントを有するメモリリードに関して、本願明細書において説明されるような緩和されたオーダリングを実際に実装する本発明の実施例に従って変更されうる。
【００１４】
図２を参照すると、緩和されたオーダリングフラグを用いてメモリリードおよびライトトランザクションを処理する、より一般化された方法のフロー図が示される。処理は、例えばルートデバイス１１４によって実行される処理であってもよい。処理は、第１のデバイスをターゲットする１つより多いメモリライト要求を受信することから開始する（ブロック２０４）。これらのライト要求は、例えば、コンプリータからリクエスタに完了パケットが返信されず、リクエスタからコンプリータへの単方向に送信された要求パケットだけからなる、ポストされたトランザクションの一部であってもよい。ターゲットされた第１のデバイスは、メインメモリ部１０６または１１０であってもよい（図１を参照）。これに続いて、同様に第１のデバイスをターゲットするメモリリード要求が受信される（２０８）。例えば、リード要求は、リクエスタがコンプリータに要求パケットを送信し、コンプリータがリクエスタに（要求されたデータと共に）完了パケットを返信する、分割トランザクションモデルを実装したポストされないトランザクションの一部であってもよい。特に、リード要求は、メモリリードがメモリライトを追い越すことができない比較的強いトランザクションオーダリングルールを有する通信プロトコルに従って受信される。そのようなプロトコルの例は、ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルである。
【００１５】
メモリリードおよびメモリライト要求は、メモリリードがメモリライトを追い越しうる比較的緩和されたトランザクションオーダリングルールを有する異なる通信プロトコルに従って、第１のデバイスに転送される（２１２）。この方法では、受信されたメモリリード要求内の緩和されたオーダリングフラグがアサートされている場合は常に、転送されたメモリリード要求は、転送されたメモリライト要求を追い越すことを許可される。これは、追い越す側のメモリリードと追い越される側のメモリライトの間にアドレスコンフリクトが無い場合にのみ許可されるべきである。アドレスコンフリクトは、２つのトランザクションが同時に同一アドレスにアクセスした場合に生じる。
【００１６】
図３を参照すると、本発明の他の実施例のブロック図が示される。この場合、スイッチデバイス１１８は、リード要求をメモリライトと厳格にオーダリングし、受信されるリード要求パケット内にヒントまたはＲＲＲＯフラグはセットされない。ルートデバイス１１４は、ロジック（図示されない）によりエンハンスされる。このロジックは、アドレスコンフリクトが無い場合に、受信されたメモリリード要求が、自身の入力キューおよび出力キューのいずれかにエンキューされているメモリライト要求を実際に追い越すことを許可する。従って、ルートデバイス１１４は、実際にはプロセッサ１０４および１０８と接続するコヒーレント・リンクにおいて、リード要求と以前にエンキューされたライトとを並べ替えることについて、全面的な許可を有する。しかしながら、本実施例では、リード要求により意図されうる、いわゆるレガシー・フラッシュ・セマンティックに対応する必要がありうる。例えば、リード要求は、レガシーマルチドロップバス３１８上に存在するネットワークインタフェースコントローラ（ＮＩＣ３２０）のような、レガシーＩ／Ｏデバイスから送信される可能性がある。ブリッジ３１４は、ポイント・トゥ・ポイントリンクを介してリード要求をスイッチデバイス１１８に伝播し、更に、プロセッサ１０４または１０８に伝播される前にルートデバイス１１４に伝播する。その場合、レガシー・フラッシュ・セマンティックは、メモリリードが同一方向のメモリライトを追い越さない保証を必要としてもよい。これは、（以前のライトが内容を更新する前にメモリ内の場所がアクセスされることにより）不正なデータを読み込む危険性が無いことを保証するために設計される。
【００１７】
本発明の他の実施例によると、ＮＩＣ３２０を使用するソフトウェアの観点からフラッシュ・セマンティックを保護するために、ルートデバイス１１４は、（リード要求と、入力または出力キューのような一定のハードウェアリソースを共有する）全ての以前のメモリライトがグローバルに認識可能となった場合にのみ、スイッチデバイス１１８へのポイント・トゥ・ポイントリンクを介してメモリリード要求の完了パケットをそのリクエスタ（ここではＮＩＣ３２０）に対して送信するように設計される。この場合、コヒーレント・リンクを介してプロセッサに送信されたメモリライトは、ルートデバイス１１４が、メモリライトが適用されたことに応じてアクセスされたメインメモリ部１０６または１１０からアクナリッジメント（ａｃｋ）パケットを受信した場合に、グローバルに認識可能となる。当該ａｃｋパケットは、グローバルな認識状況を示すために使用されうる、コヒーレント・リンクの機能である。従って、ルートデバイス１１４は、（リード要求とリソースを共有する）全ての以前の待機中のライトがグローバルに認識可能となるまで、メインメモリから受信されるリード完了を保持または遅延させる。
【００１８】
レガシー・フラッシュ・セマンティックを実装するために、（ＮＩＣ３２０のような）リクエスタは、メモリライト要求のシーケンスに続いて、リードを送信してもよい。これは、レガシーバス３１８またはポイント・トゥ・ポイントリンク（例：ＰＣＩ  Ｅｘｐｒｅｓｓインタフェース）上におけるメモリライトトランザクションが、リクエスタに対して完了パケットが返信されることを求めないためである。そのようなリクエスタ、が以前のライト要求が実際にメインメモリに到達したかどうかを判定できる唯一の方法は、これらに続いて（ライトと同一のアドレスまたは異なるアドレスに向けられうる）リードを行うことである。ライトとは対照的に、リードは、リード要求がターゲットデバイスにおいて適用されると完了パケット（データを含むかどうかに関らない）がリクエスタに返信される、ポストされないトランザクションである。定義により、レガシーおよびポイント・トゥ・ポイントリンクインタフェースではリードは以前のライトを追い越すべきではないので、そのような機構を用いて、リクエスタは、ライトのシーケンスが実際に完了したことを自身のソフトウェアに確認することができる。これは、リード完了が受信された場合、ソフトウェアは、全ての以前のライトがそのターゲットデバイスに到達したと仮定することを意味する。
【００１９】
リクエスタへのリード完了の転送を遅延させる上記に説明された技術の有利点は、以下の実施例によって理解されるであろう。本実施例ではＮＩＣ３２０であるエンドポイントが、ネットワーク（例：インターネット）からデータを取得してそのデータをメインメモリに書き込む、レガシーネットワークアダプタカードであると仮定する。従って、ブリッジとスイッチデバイスの間およびスイッチデバイスとルートデバイスの間においてポイント・トゥ・ポイントリンクを介して転送されるライトの長いシーケンスは、ＮＩＣ３２０によって生成される。その場合、これらのライトは、リクエスタに対して完了パケットが返信されないという点で、ポストされる。レガシー・フラッシュ・セマンティックを維持するために、ＮＩＣ３２０は、最後のライト要求に続いてメモリリード要求を行う。次に、ＮＩＣ３２０は、それに応じて直ちにサイドバンド経路またはピン（図示されない）上のプロセッサをインタラプトする、リード完了パケットを待つ。当該インタラプトは、ネットワークから取得されたデータがメモリに存在することをプロセッサに通知するように設計され、例えば、ＮＩＣ３２０に対応するデバイスドライバルーチン内のインタラプトサービスルーチンに従って処理されるべきである。当該デバイスドライバルーチンは、以前のライトによる全てのデータが既にメインメモリに書き込まれたと仮定して、そのデータのリードを試みる。サイドバンドピンが使用可能であるため、インタラプトは、比較的高速である。このため、ＮＩＣ３２０における完了パケットの受信と、デバイスドライバのメインメモリからのデータ読み取り開始との間における遅延は、比較的短い。それに応じて、そのような状況では、ＮＩＣ３２０によるリード完了パケットの受信が早すぎた場合、すなわち全てのライトデータがメインメモリに書き込まれる前は、ライトトランザクションが完了していないので、不正なデータが読み込まれうる。従って、ルートデバイスが、メインメモリから最後のメモリライトに対するａｃｋパケットを受信するまで、（スイッチデバイス１１８へのポイント・トゥ・ポイントリンクを介した）リード完了パケットの転送を遅延させた場合、ＮＩＣ３２０のデバイスドライバソフトウェアは、実際に、インタラプトに応じて正しく更新されたデータを読み込むことを保証されることが理解されるであろう。
【００２０】
図４を参照すると、緩和されたオーダリングヒントに依存することなくリードおよびライトトランザクションを処理するより一般化された方法が示される。処理は、メモリライト要求の受信から開始し（ブロック４０４）、次に、同一方向のメモリリード要求を受信する（ブロック４０８）。これらの要求は、同一のリクエスタからのものであってもよい。リード要求は、メモリリードがメモリライトを追い越すことができないトランザクションオーダリングルールを有するポイント・トゥ・ポイント通信プロトコルに従って受信される。そして、処理は、第２の通信プロトコルに従ってメモリリードおよびライト要求を転送する。このとき、メモリライト要求は、メモリリードがメモリライトを追い越しうるトランザクションオーダリングルールを有する（ブロック４１２）。当該転送されたメモリリード要求は、アドレスコンフリクトが無い場合、転送されたメモリライト要求を追い越すことを許可される（ブロック４１６）。そして、第２のプロトコルに従って、リード要求の完了が受信される（ブロック４２０）。最後に、メモリライトがグローバルに認識可能となった場合にのみ、第１のプロトコルに従って、完了がリクエスタに送信される（ブロック４２４）。一例として、（コヒーレント・リンクを介したポストされないライトトランザクションの一部として）ルートデバイス１１４（図３を参照）がメインメモリ部１０６からａｃｋパケットを受信した場合、メモリライトは、グローバルに認識可能とされてもよい。リードと同一方向の以前の全てのメモリライトがグローバルに認識可能となるまで、この方法で完了の返信を遅延させることによって、リクエスタにおいて必要とされうるレガシー・フラッシュ・セマンティックは、満たされる。
【００２１】
上記の例は、論理回路に関連して本発明の実施例を説明しうるが、本発明の他の実施例は、ソフトウェアによって実施されることができる。例えば、いくつかの実施例では、本発明は、コンピュータが本発明の実施例に従った処理を実行するようにプログラムするために使用されうる命令群（例：デバイスドライバ）を格納したマシンまたはコンピュータ読み取り可能な媒体を含みうる、コンピュータプログラム製品またはソフトウェアとして提供されてもよい。他の実施例では、処理は、マイクロコード、ハードウェアロジック、またはプログラムされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントの組合せを含む、特定のハードウェアコンポーネントによって実行されてもよい。
【００２２】
マシン読み取り可能な媒体は、マシン（例：コンピュータ）によって読み取り可能な形態で情報を格納または送信するすべての媒体を含んでもよく、フロッピーディスク、光ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、および、磁気光ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、インターネットを介した送信、電気、光、音響または他の形態の伝播信号（例：搬送波、赤外線信号、デジタル信号など）などに限定されない。
【００２３】
更に、設計は、創作、シミュレーションから製造に至るまで、様々な段階を経てもよい。設計を示すデータは、多くの方法によって設計を示してもよい。まず、シミュレーションにおいて便利であるように、ハードウェアは、ハードウェア記述言語または他の機能説明言語を用いて表現されてもよい。更に、ロジックおよび／またはトランジスタゲートを有する回路レベルモデルが、デザインプロセスのいくつかの段階において作成されてもよい。更に、多くの設計は、いくつかの段階において、ハードウェアモデルにおける様々なデバイスの物理的配置を示すデータのレベルに達する。従来の半導体製造技術が使用される場合、ハードウェアモデルを示すデータは、集積回路を製造するために使用されるマスクの、異なるマスクレイヤにおける様々な要素の存在または不在を指定するデータであってもよい。設計の表現において、データは、いかなる形態のマシン読み取り可能な媒体に格納されてもよい。そのような情報を送信するために変調または生成された光波または電波、メモリ、またはディスクのような磁気または光ストレージは、マシン読み取り可能な媒体であってもよい。これらの媒体は全て、設計またはソフトウェア情報を「搬送」または「示す」ことができてもよい。コードまたは設計を示すまたは搬送する電気搬送波が伝送された場合、電気信号のコピー、バッファリング、または再送信の範囲において、新規のコピーが作成される。従って、通信プロバイダまたはネットワークプロバイダは、本発明の技術を実装する対象物（搬送波）の複製を生成してもよい。
【００２４】
本発明は、上記に説明された特定の実施例によって限定されない。例えば、ルートデバイスとプロセッサの間における接続は、いくつかの実施例では、コヒーレント・ポイント・トゥ・ポイントリンクと称されるが、キャッシュコヒーレント・スイッチのような中間デバイスは、プロセッサとルートデバイスの間に含まれてもよい。更に、図１では、プロセッサ１０４は、メインメモリ部１０６をターゲットする要求がプロセッサではなくメモリコントローラによって処理されるようなメモリコントローラノードによって置き換えられてもよい。それに応じて、他の実施例は、請求項の範囲内に含まれる。
【図１】
2008503808.tif 000003
【図２】
2008503808.tif 000004
【図３】
2008503808.tif 000005
【図４】
2008503808.tif 000006
【国際調査報告】
2008503808.tif 000007
2008503808.tif 000008