(57)【特許請求の範囲】
【請求項１】
ＰＣＩｅマルチプル・ルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ）環境において使用する優先順位付けのための装置であって、
対応するポステッド・トランザクション待ち行列中のポステッド・トランザクションに関連付けられた順位付け情報を格納するよう機能するポステッド情報アレイと、
ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを判定するために、前記ポステッド情報アレイにクエリするよう機能する優先順位付けチェック回路と、
を含む装置。
【請求項２】
前記順位付け情報が、前記ポステッド・トランザクション待ち行列中のポステッド・トランザクションのＶＨタグを含む、請求項１に記載の装置。
【請求項３】
前記順位付け情報が、前記ポステッド・トランザクション待ち行列中のポステッド・トランザクションの先行順序インジケータを含む、請求項１または２に記載の装置。
【請求項４】
前記ポステッド情報アレイが、各エントリに関連付けられＶＨタグおよび先行順序インジケータ情報が有効かどうかを示すバリッド・ビットを含む、請求項１、２、または３に記載の装置。
【請求項５】
前記優先順位付けチェック回路が、ノンポステッド／コンプリーション・トランザクションのＶＨタグおよび先行順序インジケータ情報と、前記ポステッド情報アレイ中の個々のＶＨタグおよび先行順序インジケータ情報との比較を実行するよう機能するロジックを含む、請求項１〜４のいずれかに記載の装置。
【請求項６】
ポステッド・エントリの先行順序インジケータが、前記現在のノンポステッド／コンプリーション・トランザクションに対する所定条件を満たし、前記ポステッド・エントリのＶＨタグが、前記現在のノンポステッド／コンプリーション・トランザクションのものと等しい場合、前記優先順位付けチェック回路は、前記ポステッド情報アレイの内容に従って、前記ポステッド待ち行列中に、前記現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを示すよう機能する、請求項１〜５のいずれかに記載の装置。
【請求項７】
前記優先順位付けチェック回路がＰＣＩｅ  ＭＲ−ＩＯＶ  ＶＨ順序付けルールへの適合を示す場合に、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションを送信するための手段をさらに含む、請求項１〜６のいずれかに記載の装置。
【請求項８】
前記ポステッド情報アレイが、ポステッド・トランザクションに関連付けられた順位付け情報を、前記対応するポステッド・トランザクション待ち行列中への前記ポステッド・トランザクションの入力と同時にシステム・バスから受信するよう機能する、請求項１〜６のいずれかに記載の装置。
【請求項９】
前記装置は、ポステッド、ノンポステッド、またはコンプリーション・トランザクションを送信するかどうかを、どの時点においても判定するよう機能するセレクタを含み、前記セレクタは前記優先順位付けチェック回路を含む、請求項１〜６または請求項８のいずれかに記載の装置。
【請求項１０】
前記優先順位付けチェック回路は、ポステッド・エントリのバリッド・ビットが、前記エントリが有効であることを加えて示している場合に、前記ポステッド待ち行列中に、前記現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあることを示すよう機能する、請求項９に記載の装置。
【請求項１１】
前記優先順位付けチェック回路がＰＣＩｅ  ＭＲ−ＩＯＶ  ＶＨの順序付けルールへの適合を示している場合に、前記現在のノンポステッド／コンプリーション・トランザクションを先行させるための手段をさらに含む、請求項９または１０に記載の装置。
【請求項１２】
ＰＣＩｅマルチプル・ルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ）環境において使用する優先順位付けルール適合の方法であって、前記方法は、
関係するポステッド・トランザクション待ち行列中のポステッド・トランザクションに関連付けられた順位付け情報を格納するよう機能する、ポステッド情報アレイを設けるステップと、
ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを判定するために、それぞれのノンポステッド／コンプリーション・トランザクション待ち行列の先頭の各ノンポステッド／コンプリーション・トランザクションに関し、前記ポステッド情報アレイにクエリするステップと、
を含む方法。
【請求項１３】
前記順位付け情報が、前記ポステッド・トランザクション待ち行列中のポステッド・トランザクションのＶＨタグを含む、請求項１２に記載の方法。
【請求項１４】
前記順位付け情報が、前記ポステッド・トランザクション待ち行列中のポステッド・トランザクションの先行順序インジケータを含む、請求項１２または１３に記載の方法。
【請求項１５】
前記ポステッド情報アレイが、各エントリに関連付けられＶＨタグおよび先行順序インジケータ情報が有効かどうかを示すバリッド・ビットを含む、請求項１２、１３、または１４に記載の方法。
【請求項１６】
前記クエリするステップが、ノンポステッド／コンプリーション・トランザクションのＶＨタグおよび先行順序インジケータ情報と、前記ポステッド情報アレイ中の個々のＶＨタグおよび先行順序インジケータ情報との比較を実行するステップを含む、請求項１２〜１５のいずれかに記載の方法。
【請求項１７】
前記クエリするステップは、ポステッド・エントリのバリッド・ビットが、前記エントリが有効であることを示し、前記ポステッド・エントリの先行順序インジケータが、前記現在のノンポステッド／コンプリーション・トランザクションに対する所定の条件を満たし、且つ前記ポステッド・エントリのＶＨタグが、前記現在のノンポステッド／コンプリーション・トランザクションのものと等しい場合に、前記ポステッド待ち行列中に、前記現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあることを示すステップを含む、請求項１２〜１６のいずれかに記載の方法。
【請求項１８】
前記優先順序付けチェック回路が、ＰＣＩｅ  ＭＲ−ＩＯＶ  ＶＨ順序付けルールへの適合を示す場合に、前記現在のノンポステッド／コンプリーション・トランザクションを送信するステップをさらに含む、請求項１２〜１７のいずれかに記載の方法。
【請求項１９】
前記ポステッド情報アレイが、ポステッド・トランザクションに関連付けられた順位付け情報を、前記対応するポステッド・トランザクション待ち行列中への前記ポステッド・トランザクションの入力と同時にシステム・バスから受信するよう機能する、請求項１２〜１８のいずれかに記載の方法。
【請求項２０】
コンピュータ・プログラムがコンピュータ上で実行されたとき、請求項１２〜１９のいずれかに記載の前記方法を実行するようになされたプログラム・コード手段を含む、前記コンピュータ・プログラム。
【請求項２１】
ＰＣＩｅマルチプル・ルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ）環境において使用する優先順位付けのための装置であって、前記装置は、
関係するポステッド・トランザクション待ち行列中のポステッド・トランザクションに関連付けられた順序付け情報を格納するよう機能するポステッド情報アレイと、
ポステッド、ノンポステッド、またはコンプリーション・トランザクションを送信するかどうかを、どの時点においても判定するよう機能するセレクタと、
を含み、
前記セレクタは、ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを判定するために、前記ポステッド情報アレイにクエリするよう機能する、優先順位付けチェック回路を含む、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信の分野に関し、さらに具体的には、ＰＣＩエクスプレス（ＰＣＩｅ：ＰＣＩ  Ｅｘｐｒｅｓｓ）マルチプル・ルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ：ｍｕｌｔｉｐｌｅ  ｒｏｏｔ  Ｉ／Ｏ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）環境における低待ち時間の優先順位付けの装置および方法に関する。
【背景技術】
【０００２】
近年、ＰＣＩｅベースの仕様に対するあるアドオンが公表された。これはＭＲ−ＩＯＶとして知られている。ＭＲ−ＩＯＶは、ＰＣＩ−ＳＩＧの「Ｍｕｌｔｉ−Ｒｏｏｔ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」（ｈｔｔｐ：／／ｗｗｗ．ｐｃｉｓｉｇ．ｃｏｍ／ｓｐｅｃｉｆｉｃａｔｉｏｎ／ｉｏｖ／ｍｕｌｔｉ−ｒｏｏｔ／）にさらなる詳細が開示されている。
【０００３】
このアドオンをサポートするため必要な変更の一つには、トランザクションの種類の順位付けを行う方法を変更して、仮想階層（ＶＨ：ｖｉｒｔｕａｌ  ｈｉｅｒａｒｃｈｙ）内での順位付けを特異的にサポートすることが含まれる。この要求事項に対し、単純な対処法では重大なパフォーマンス劣化が生じ、通常、高価なハードウェア変更が必要となる。
【０００４】
ＭＲ−ＩＯＶによれば、トランザクションは、システム・バスによって、各トランザクションの特定のＶＨとの関連付けを示すＶＨタグが付されて発行される。順位付けは、同じＶＨのトランザクションの間だけで（セレクタによって）行われる。他のＶＨからのトランザクションはこの順位付けに何の影響も及ぼさない。
【０００５】
現行のＰＣＩｅアーキテクチャは、セレクタが一度に一つだけの待ち行列エレメントにアクセスすることができるようになっている。適正な順位付けをするには、複数の待ち行列エレメントへのアクセスが必要となる。このことは待ち時間およびロジックの複雑さに大きく影響する。結果としてバスのスループットが大幅に低下する。待ち時間は、メモリ・アレイ・ラインにアクセスするために使われる、追加のロジック（これは、タイミング制約を維持するためにラッチングを必要とする可能性がある）およびサイクルに起因して生じる。セレクタは全ポステッド・アレイからのデータを収集し、その一部を保持し、それを次に送信予定のノンポステッド／コンプリーション・トランザクションと比較する必要がある。
【０００６】
これらの必要性を基本アーキテクチャ・システム内で処理するためには、複雑なロジックが必要となる。
【０００７】
現在の対処法では、ＶＨ別レベルでの順位付けはできず、しかしてＭＲ−ＩＯＶ仕様を満たさない。
【０００８】
特許文献１は、ハイパーバイザおよびブレード・サーバと併せ用いるためのハードウェア・スイッチを開示している。このハードウェア・スイッチは、同一サーバ内で実行される相異なるゲストＯＳの間で、またはマルチルートＩＯＶシステム内の相異なるサーバの間で、またはシングルルートＩＯＶシステム中の同一サーバ内で実行される相異なるゲストＯＳの間で切り替えを行うことを可能にする。
【０００９】
特許文献２は、ＭＲ−ＩＯＶがストレージ・コントローラの内部ネットワークに適用されるストレージ・デバイスを開示している。このストレージ・デバイスにおいては、データ・パス・フェイルオーバを実行することが可能である。ストレージ・コントローラの内部ネットワークは、ルート・ポートＲＰ０から、各エンドポイントデバイス（ＥＤ０〜ＥＤ２）の仮想機能（ＶＦ：ｖｉｒｔｕａｌ  ｆｕｎｃｔｉｏｎ）“ＶＦ０：０，１”へのアクセスができるように構成される。同様に、各エンドポイント・デバイスの“ＶＦ１：０，１”にはルート・ポートＲＰ１からアクセスすることができる。標準状態におけるＲＰ０からＥＤ０への第一データ・パスにおいて、“ＶＦ０：０，１”と“ＭＶＦ０，０”とはＶＦマッピングによって接続される。第一データ・パス上に障害が発生した場合、ＭＲ−ＰＣＩＭはＶＦ移行を実行し、これにより、ＲＰ１からＥＤ０への第二データ・パスにおいて、“ＶＦ１：０，１”と“ＭＶＦ０，０”とがＶＦマッピングによって接続される。この結果、第二データ・パスへのフェイルオーバが実現される。
【００１０】
特許文献３は、高速の周辺機器相互接続入力／出力仮想化構成のための、コンピュータ実装の方法を開示しており、該構成は、仮想機能経路認可テーブルのセットを生成し、要求元から仮想機能を含む要求を受信して要求されたデータを提供し、ソース・システム中のソースのアドレスと、システム群のターゲット・セットの各ターゲット・システム中のターゲット・アドレスとを識別する。ソースおよびターゲット・アドレスを包含する、ソース・システムに対する仮想機能作業待ち行列へのエントリが生成され、仮想機能が認可されたとの判定に応じて、要求されたデータが、ソース・システムのソース・アドレスから、中間デバイスのファイヤウォールを介して各ターゲット・システムのターゲット・アドレスの中に書き込まれ、この中間デバイスは、マルチルート周辺機器相互接続デバイスおよびシングルルート周辺機器相互接続デバイスのうちの一つであって、要求元にコンプリーションの通知を発行する。
【００１１】
特許文献４は、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ（周辺機器相互接続））エクスプレス・デバイスのリンク・レイヤが、トランザクション・レイヤ・パケット（ＴＬＰ：ｔｒａｎｓａｃｔｉｏｎ  ｌａｙｅｒ  ｐａｃｋｅｔ）に関連付けられた仮想階層（ＶＨ）専用の専用リトライ・バッファ中のトランザクション・レイヤから送信されたＴＬＰを格納することについて開示している。同様に、マルチルート・デバイスのリンク・レイヤは、ＶＨについての、ＴＬＰに関連する情報、およびシーケンス・バッファ中の専用リトライ・バッファ内に格納されたＴＬＰのアドレスを格納する。このリンク・レイヤは、ＶＨに対するリセット要求を受信したとき、ＶＨに関連付けられた専用リトライ・バッファをパージすることができる。パージの後、マルチルート・デバイスは、ＶＨが成功裏にリセットされたことを示すＡＣＫ（ａｃｋｎｏｗｌｅｄｇｅ  ｃｏｄｅ（肯定応答コード））ＤＬＬＰ（ｄａｔａ  ｌｉｎｋ  ｌａｙｅｒ  ｐａｃｋｅｔ（データ・リンク・レイヤ・パケット））を送信することができる。ＶＨリセットに対するＡＣＫ  ＤＬＬＰ応答は、リトライ・バッファのポインタが初期値にリセットされ次第、複数のリトライ・バッファを用いて可及的速やかに送信される。
【００１２】
特許文献５は、マルチルートＰＣＩエクスプレス環境において、ホスト・システム・ブレードごとにトラフィックの型を区別するためのメカニズムを開示している。このメカニズムは、マルチルート・データ処理システム中の各シングルルート仮想階層に対し、複数のトラフィック・クラスを複数の優先グループに関連付け、複数のトラフィック・クラス中の各トラフィック・クラスを、複数の仮想チャネル中の対応する仮想チャネルにマップする、第一マッピング・データ構造を生成する。さらに、複数の仮想チャネル中の各仮想チャネルを、マルチルート・データ処理システムの複数の仮想リンク中の、対応するホスト・システム・ブレードごとの仮想リンクにマップする、第二マッピング・データ構造が生成される。特定の優先グループのトラフィックは、第一マッピング・データ構造および第二マッピング・データ構造に基づいて、シングルルート仮想階層から複数の仮想リンク中の特定の仮想リンクに送られる。
【００１３】
特許文献６は、冗長システム構成を生成するための、コンピュータ実装の方法を開示している。該コンピュータ実装の方法は、仮想機能経路認可テーブルのセットを生成し、要求元から、仮想機能から要求データを提供する要求を受信するもので、この仮想機能は、シングルルートまたはマルチルートの周辺機器相互接続デバイスによって遂行される。さらに、アドレス範囲のセット中の選択されたアドレス範囲中に受信バッファが生成され、同様に、該選択されたアドレス範囲中の受信バッファのアドレスを包含する、仮想機能に対する仮想機能作業待ち行列エントリが生成される。仮想機能が認可されたとの判定に応じて、一つ以上のシステム中の選択されたアドレス範囲の受信バッファの中に、要求されたデータが書き込まれ、要求されたデータの書き込みに応じて、要求元にコンプリーション通知が発行される。
【００１４】
特許文献７は、マルチルートＩ／Ｏ仮想化管理パーティション（ＭＲ−ＩＭＰ：ｍｕｌｔｉ−ｒｏｏｔ  Ｉ／Ｏ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｍａｎａｇｅｍｅｎｔ  ｐａｒｔｉｔｉｏｎ）中にマルチルートＰＣＩマネージャ（ＭＲ−ＰＣＩＭ：ｍｕｌｔｉ−ｒｏｏｔ  ＰＣＩ  ｍａｎａｇｅｒ）を実装し、マルチルートＩ／Ｏ仮想化（ＩＯＶ）対応のスイッチ・ファブリックおよびマルチルートＩＯＶ対応のＩ／Ｏアダプタ（ＩＯＡ：Ｉ／Ｏ  ａｄａｐｔｅｒ）の共用機能を、これらスイッチおよびＩＯＡの基本機能（ＢＦ：ｂａｓｅ  ｆｕｎｃｔｉｏｎ）を介して制御するためのメカニズムを開示している。ハイパーバイザは、Ｉ／Ｏ仮想化管理パーティション（ＩＭＰ：Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ  Ｐａｒｔｉｔｉｏｎ）、マルチルート（ＭＲ）−ＩＭＰ、およびクライアント・パーティション中で実行されるコードに対し、デバイス非依存のファシリティを提供する。ＭＲ−ＩＭＰには、ハイパーバイザが、コードのサイズ、ロバスト性、およびアップグレード可能性を犠牲にする必要なく、デバイス固有のコードを含めることができる。ハイパーバイザは、スイッチおよびＩＯＡの制御機能の共用と制御とのための仮想媒介機能を提供する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】米国特許出願公開第２０１０／００１４５２６号
【特許文献２】米国特許出願公開第２０１０／０１１５３２９号
【特許文献３】米国特許出願公開第２０１０／０１４６０８９号
【特許文献４】米国特許第７７０７３４６号
【特許文献５】米国特許出願公開第２０１０／０１６５８７４号
【特許文献６】米国特許出願公開第２０１０／０１５３５９２号
【特許文献７】米国特許出願公開第２００９／０２７６７７３号
【発明の概要】
【発明が解決しようとする課題】
【００１６】
現行のＰＣＩｅアーキテクチャは、セレクタが一度に一つだけの待ち行列エレメントにアクセスすることができるようになっている。適正な順位付けをするには、複数の待ち行列エレメントへのアクセスが必要となる。このことは待ち時間およびロジックの複雑さに大きく影響する。結果としてバスのスループットが大幅に低下する。待ち時間は、メモリ・アレイ・ラインにアクセスするために使われる、追加のロジック（これは、タイミング制約を維持するためにラッチングを必要とする可能性がある）およびサイクルに起因して生じる。セレクタは全ポステッド・アレイからのデータを収集し、その一部を保持し、それを次に送信予定のノンポステッド／コンプリーション・トランザクションと比較する必要がある。
【００１７】
これらの必要性を基本アーキテクチャ・システム内で処理するためには、複雑なロジックが必要となる。
【００１８】
現在の対処法では、ＶＨ別レベルでの順位付けはできず、しかしてＭＲ−ＩＯＶ仕様を満たさない。
【課題を解決するための手段】
【００１９】
第一態様によって、ＰＣＩｅマルチプル・ルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ）環境において用いる優先順位付けのための装置が提供され、前記装置は、対応するポステッド・トランザクション待ち行列中のポステッド・トランザクションに関連付けられた順位付け情報を格納するよう機能するポステッド情報アレイと、ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを判定するために、前記ポステッド情報アレイにクエリするよう機能する優先順位付けチェック回路と、を含む。
【００２０】
一つの実施形態において、前記順位付け情報は、前記ポステッド・トランザクション待ち行列中のポステッド・トランザクションのＶＨタグを含む。
【００２１】
一つの実施形態において、前記順位付け情報は、前記ポステッド・トランザクション待ち行列中のポステッド・トランザクションの先行順序インジケータを含む。
【００２２】
一つの実施形態において、前記ポステッド情報アレイは、各エントリに関連付けられＶＨタグおよび先行順序インジケータ情報が有効かどうかを示すバリッド・ビットを含む。
【００２３】
一つの実施形態において、前記優先順位付けチェック回路は、ノンポステッド／コンプリーション・トランザクションのＶＨタグおよび先行順序インジケータ情報と、前記ポステッド情報アレイ中の個々のＶＨタグおよび先行順序インジケータ情報との比較を実行するよう機能するロジックを含む。
【００２４】
一つの実施形態において、ポステッド・エントリの先行順序インジケータが、前記現在のノンポステッド／コンプリーション・トランザクションに対する所定条件を満たし、前記ポステッド・エントリのＶＨタグが、前記現在のノンポステッド／コンプリーション・トランザクションのものと等しい場合、前記優先順位付けチェック回路は、前記ポステッド情報アレイの内容に従って、ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを示すよう機能する。
【００２５】
一つの実施形態において、本装置は、前記優先順位付けチェック回路がＰＣＩｅ  ＭＲ−ＩＯＶ  ＶＨ順位付けルールへの適合を示す場合に、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションを送信するための手段をさらに含む。
【００２６】
一つの実施形態において、前記ポステッド情報アレイは、ポステッド・トランザクションに関連付けられた順位付け情報を、前記対応するポステッド・トランザクション待ち行列中への前記ポステッド・トランザクションの入力と同時にシステム・バスから受信するよう機能する。
【００２７】
一つの実施形態において、本装置は、ポステッド、ノンポステッド、またはコンプリーション・トランザクションを送信するかどうかを、どの時点においても判定するよう機能するセレクタを含み、このセレクタは優先順位付けチェック回路を含む。
【００２８】
一つの実施形態において、前記優先順位付けチェック回路は、ポステッド・エントリのバリッド・ビットが、前記エントリが有効であることを加えて示している場合に、ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあることを示すよう機能する。
【００２９】
一つの実施形態において、本装置は、前記優先順位付けチェック回路がＰＣＩｅ  ＭＲ−ＩＯＶ  ＶＨ順位付けルールへの適合を示している場合に、前記現在のノンポステッド／コンプリーション・トランザクションを先行させるための手段をさらに含む。
【００３０】
第二態様によって、ＰＣＩｅマルチプル・ルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ）環境において使用する優先順位付けルール適合の方法が提供され、前記方法は、関係するポステッド・トランザクション待ち行列中のポステッド・トランザクションに関連付けられた順位付け情報を格納するよう機能する、ポステッド情報アレイを設けるステップと、ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを判定するために、それぞれのノンポステッド／コンプリーション・トランザクション待ち行列の先頭の各ノンポステッド／コンプリーション・トランザクションに関し、前記ポステッド情報アレイにクエリするステップと、を含む。
【００３１】
一つの実施形態において、前記順位付け情報は、前記ポステッド・トランザクション待ち行列中のポステッド・トランザクションのＶＨタグを含む。
【００３２】
一つの実施形態において、前記順位付け情報は、前記ポステッド・トランザクション待ち行列中のポステッド・トランザクションの先行順序インジケータを含む。
【００３３】
一つの実施形態において、前記ポステッド情報アレイは、各エントリに関連付けられＶＨタグおよび先行順序インジケータ情報が有効かどうかを示すバリッド・ビットを含む。
【００３４】
一つの実施形態において、前記クエリするステップは、ノンポステッド／コンプリーション・トランザクションのＶＨタグおよび先行順序インジケータ情報と、前記ポステッド情報アレイ中の個々のＶＨタグおよび先行順序インジケータ情報との比較を実行するステップを含む。
【００３５】
一つの実施形態において、前記クエリするステップは、ポステッド・エントリのバリッド・ビットが、前記エントリが有効であることを示し、前記ポステッド・エントリの先行順序インジケータが、前記現在のノンポステッド／コンプリーション・トランザクションに対する所定の条件を満たし、且つ前記ポステッド・エントリのＶＨタグが、前記現在のノンポステッド／コンプリーション・トランザクションのものと等しい場合に、ポステッド待ち行列中に、前記現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあることを示すステップを含む。
【００３６】
一つの実施形態において、本方法は、前記優先順序付けチェック回路が、ＰＣＩｅ  ＭＲ−ＩＯＶ  ＶＨ順位付けルールへの適合を示す場合に、前記現在のノンポステッド／コンプリーション・トランザクションを送信するステップをさらに含む。
【００３７】
一つの実施形態において、前記ポステッド情報アレイは、ポステッド・トランザクションに関連付けられた順位付け情報を、前記対応するポステッド・トランザクション待ち行列中への前記ポステッド・トランザクションの入力と同時にシステム・バスから受信するよう機能する。
【００３８】
本方法は、コンピュータ・ソフトウェア中に実装することが可能である。
【００３９】
第三の態様によって、本発明はＰＣＩｅマルチプル・ルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ）環境において使用する優先順位付けのための装置を提供し、本装置は、関係するポステッド・トランザクション待ち行列中のポステッド・トランザクションに関連付けられた順位付け情報を格納するよう機能するポステッド情報アレイと、ポステッド、ノンポステッド、またはコンプリーション・トランザクションを送信するかどうかを、どの時点においても判定するよう機能するセレクタと、を含み、前記セレクタは、ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを判定するために、前記ポステッド情報アレイにクエリするよう機能する、優先順位付けチェック回路を含む。
【００４０】
一つの実施形態によって、ＰＣＩｅマルチプル・ルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ）環境において用いる優先順位付けのための装置が提供され、前記装置は、対応するポステッド・トランザクション待ち行列中のポステッド・トランザクションに関連付けられた順位付け情報を格納するよう機能するポステッド情報アレイと、前記ポステッド情報アレイの内容に従って、ポステッド待ち行列中に、現在のノンポステッド／コンプリーション・トランザクションより優先される同じＶＨからのトランザクションがあるかどうかを判定することによって、ＰＣＩｅ  ＭＲ−ＩＯＶ仮想階層順位付けルールを実施するよう機能する優先順に付けチェック回路と、を含む。
【００４１】
単なる例示として、本発明の一つ以上の実施形態を添付の図面を参照しながら以下に説明する。
【図面の簡単な説明】
【００４２】
【図１】本発明の一つの実施形態の優先順位付けチェック・メカニズムを組み込んだ、例示的なＭＲ−ＩＯＶ  ＰＣＩｅネットワークを示すブロック図である。
【図２】本発明の一つの実施形態の優先順位付けチェック・メカニズムを組み込んだＭＲ−ＩＯＶ仮想階層における、例示的なポステッド、ノンポステッド、およびコンプリーション待ち行列並びにセレクタを示すブロック図である。
【図３】例示的なポステッド情報アレイの構造を示すブロック図である。
【図４】本発明の一つの実施形態の優先順位付けチェック方法を示すフロー図である。
【図５】本発明の一つの実施形態の第一例の優先順位付けチェック・ロジック回路を示すブロック図である。
【図６】本発明の一つの実施形態の第二例の優先順位付けチェック・ロジック回路を示すブロック図である。
【発明を実施するための形態】
【００４３】
全体を通して使われる表記
以下の表記は本文書全体を通して用いられる。
【００４４】
【表１】
0005490336.tif 000002
【００４５】
ＰＣＩエクスプレスは、当初、デスクトップのルート・コンプレックス（メモリを備えたホストＣＰＵ）をダウンストリームのＩＯデバイスに接続するために設計されたが、その後、サーバ、ストレージ・デバイス、および他の通信システムへのアプリケーションが開発された。シングルルート・コンプレックスの基本ＰＣＩｅスイッチング構造は、３つのトポロジを有し、バス番号付けスキームを介しＰＣＩｅのエンドポイントをアドレス指定する。
【００４６】
仮想マシン（ＶＭ）技術が出現し、単一の物理サーバ上で、その物理サーバの物理ＣＰＵおよびメモリ・リソースを共用しながら、複数の仮想サーバを実行する能力が提供されるようになった。仮想マシンは、実際のマシンのようにプログラムを実行するマシン（すなわち、コンピュータ）のソフトウェア実装として定義される。仮想化は、コンピュータ・リソースの抽象化をいい、コンピューティング・リソースの物理的特性を隠し、複数のクライアントがシームレスに物理リソースを共用できるようにする技術である。通常、システムのイメージは、シャットダウンした後、前に休止したときとまさしく同じ状態で再開できる、仮想マシン上で実行されるソフトウエア・コンポーネントである。一つの例において、システム・イメージは、特定の仮想マシンに割り当てられる。
【００４７】
ＰＣＩ−ＳＩＧは、複数のオペレーティング・システムが一つの所与のマシン上でＰＣＩｅデバイスを自然に共用することを可能にする、仮想ＩＯ規格を開発した。複数の仮想マシンを、インフィニバンド（Ｒ），ファイバ・チャネルまたは１０  ＧｂＥ（１０ギガビット・イーサネット（Ｒ））の高速ＩＯを有する一つの多機能デバイスに割り当てることができる。なお、このデバイスは多機能である必要はなく、さらに、高速ＩＯも必要条件ではない。例えば、メモリ・アレイであるエンドポイントは、ＩＯでなくメモリに接続される。というのは、ＰＣＩｅがスタンド・アロン・プロトコルであり、ギガビット・イーサネット（ＧｂＥ：Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ）（Ｒ）などのプロトコル上では実行されないからである。
【００４８】
ＩＯ仮想化（ＩＯＶ）を介する物理ＩＯリソースの共用は、サーバにおけるマルチコア・プロセッサ使用の増加への適応の助力となる。ＩＯ仮想化は、仮想マシンが、１０Ｇｂイーサネット（Ｒ）または８Ｇｂファイバ・チャネルなどの高価な高バンド幅のＩＯを共用することを可能にし、これによりこれらＩＯの展開を妥当にする。
【００４９】
ＩＯ仮想化機能がＰＣＩエクスプレスに追加されてきている。上記仕様は２つのレベルのＩＯ仮想化：シングルルートＩＯ仮想化（ＳＲ−ＩＯＶ：ｓｉｎｇｌｅ−ｒｏｏｔ  ＩＯ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）およびマルチルートＩＯ仮想化（ＭＲ−ＩＯＶ：ｍｕｌｔｉ−ｒｏｏｔ  ＩＯ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）を定義している。ＳＲ−ＩＯＶは、エンドポイント・デバイスに対し、同一のハードウェア・プラットフォーム（一つのホストＣＰＵ）上で実行されている複数の仮想マシンの間で同時共用ができるというそれらデバイスの能力を広告するための標準的メカニズムを提供する。ＭＲ−ＩＯＶは、複数のハードウェア・プラットフォーム（複数のホストＣＰＵ）上の複数のオペレーション・システムの間での一つのＩＯリソースの共用を可能にする。
【００５０】
現在、仮想化技術は、ハイエンド・サーバなど多岐にわたるコンピューティング・システムで使用されている。しかしながら、仮想化のソフトウェア・オーバーヘッド部分、特に入力／出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）デバイスに対するもの、を削減するという大きな課題がある。仮想化は、単一の物理Ｉ／Ｏデバイスが、一つずつが各々の仮想マシンに対応し、相互に完全に独立した複数の仮想Ｉ／Ｏデバイスにマスカレードすることを可能にする。Ｉ／Ｏ仮想化は、主にソフトウェア実装を備えることから、次世代企業コンピューティング・システムのハードウェア中に、さらに多くの仮想化機能を組み込むことへと移行しつつある。ハードウェア中にさらに多くの仮想化機能を組み込むことによって、全体的なシステム・パフォーマンスは向上するが、これは、Ｉ／Ｏ仮想化をサポートするために、ＰＣＩエクスプレス（ＰＣＩｅ）インターフェースに対する多くの変更を必要とする。
【００５１】
仮想化システムにおいて、物理構成機器は、明確に定義されたインターフェースおよび機能を有し独立的に動作する物理リソースのセットに分けられる。ＰＣＩエクスプレスは、多くの現今のコンピューティングおよび遠隔通信プラットフォームに対する、主要なパフォーマンス指向のインターフェース・プロトコルであって、仮想化を組み入れるように拡張されてきた。ＰＣＩエクスプレス・デバイスは、従来のソフトウェア指向の仮想化アプローチのパフォーマンスの限界を解決するためにこれらのデバイスがなすべきことを正確に定義した仕様の集成に基づいて、Ｉ／Ｏ仮想化に対するサポートを提供する。その中心にＰＣＩエクスプレス仕様があり、現在は２．１バージョンである。次の主要改訂であるＰＣＩエクスプレス３．０では、リンク速度を５．０ＧＴ／秒から８．０ＧＴ／秒に増大することになろう。Ｉ／Ｏ仮想化を組み入れるために、代替経路指定−ＩＤ解釈（ＡＲＩ：Ａｌｔｅｒｎａｔｉｖｅ  Ｒｏｕｔｉｎｇ−ＩＤ  Ｉｎｔｅｒｐｒｅｔａｔｉｏｎ）、機能別リセット（ＦＬＲ：Ｆｕｎｃｔｉｏｎ  Ｌｅｖｅｌ  Ｒｅｓｅｔ）およびアドレス変換サービス（ＡＴＳ：Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  Ｓｅｒｖｉｃｅｓ）などのオプション機能が基本仕様に追加される。
【００５２】
ＰＣＩエクスプレスの仕様に関連して、マルチルートおよびシングルルートの２つの型のＩ／Ｏ仮想化が定義されている。マルチルートＩ／Ｏ仮想化（ＭＲ−ＩＯＶ）仕様は、複数のホストが共通のリソースのプールを共用することを望むプラットフォームに対し概念を拡張した機能を定義する。シングルルートＩ／Ｏ仮想化（ＳＲ−ＩＯＶ）仕様は、単一のＰＣＩｅルート・コンプレックスを有するシステム中でＩ／Ｏ仮想化を可能にする機能を定義している。
【００５３】
本発明の一つの実施形態の優先順位付けチェック・メカニズムを組み込んだ例示的なＭＲ−ＩＯＶ  ＰＣＩｅネットワークを表すブロック図が、図１に示されている。全体が参照符号１０として示されているこの例示的なネットワークは、それぞれＰＣＩｅリンク１１および１３を介してマルチプル・ルート・アウェア（ＭＲＡ：ｍｕｌｔｉｐｌｅ  ｒｏｏｔ  ａｗａｒｅ）スイッチ２０に接続された、複数のルート・コンプレックス１２および複数のＭＲＡ  ＰＣＩｅデバイス２６を含む。ルート・コンプレックス１２は、ＴＸ１６およびＲＸ１８回路を有するルート・ポート１４を含む。ＭＲＡスイッチ２０は、各々がＴＸ２２およびＲＸ２４回路を有する複数のポート２１を含む。ＭＲＡＰＣＩｅデバイス２６の各々は、ＴＸ２８およびＲＸ２９回路を有するポート２５を含む。
【００５４】
マルチルート・トポロジをサポートするために、ＰＣＩｅスイッチおよびＩＯＶデバイスは、ＭＲアウェアである（すなわち、これらはマルチルート・システム対応可能である）必要がある。ＭＲアウェアＩＯアダプタおよびＰＣＩｅスイッチは、さまざまなルート・コンプレックスの経路設定をサポートするための追加のレジスタ・セットを備える必要があり、ＭＲアウェアＰＣＩｅスイッチは、２つ以上のアップストリーム・ポートを包含している必要がある。ＰＣＩエクスプレス基本仕様中に規定されたデータ・リンクまたはトランザクション・レイヤを変更しないＳＲ−ＩＯＶ仕様と対照的に、ＭＲ−ＩＯＶ仕様は、データ・リンク・レイヤにおける変更を必要とする。また、スイッチ・ファブリックおよびＭＲアウェア・エンドポイントを設定するため、設定ソフトウェアも変更される。ルート・コンプレックスの上位、またはＭＲアウェア・スイッチの外のサイドバンドに、ＭＲ−ＰＣＩマネージャを実装することができる。ＭＲアウェアＰＣＩｅスイッチは、スター、ツリー、およびメッシュなどさまざまなトポロジで相互接続することが可能である。
【００５５】
なお、各ルート・ポートの下におけるＰＣＩコンポーネントは仮想化され、ＭＲＡスイッチおよびデバイスに論理的にオーバーレイされる。仮想化ＰＣＩコンポーネントは、仮想階層（ＶＨ）といわれる。各ＶＨは、少なくとも一つのＰＣＩｅスイッチを含み、該スイッチは、ＭＲＡスイッチ内の仮想スイッチを用いて実装された仮想化コンポーネントである。各ＶＨは、例えば、ＭＲＡスイッチ群、ＳＲ−ＩＯＶデバイス群、非ＩＯＶデバイス群およびブリッジ群の混成を包含し得る。ＭＲＡデバイスは、ＭＲ−ＩＯＶ機能をサポートし、ＭＲ−ＩＯＶリソースのセットアップ如何によって、複数のＶＨから同時に可視のデバイスである。ＭＲ−ＩＯＶは、基本的には、共用のＭＲＡおよび非ＭＲＡコンポーネントの物理セット上への複数のＶＨのオーバーラッピングである。なお、ＭＲＡルート・ポートは、それがルート（根）でない場合、ＶＨに対するＴＬＰを転送しない。ただし、ＭＲＡルート・ポートは、他のデバイスに対しては、なおルート・ポートと見なされながら、特定のＶＨに対してはエンドポイントとして機能できることに留意する。
【００５６】
ＭＲ−ＩＯＶをサポートするために、各トランザクションに対し、ＰＣＩｅデバイス間の仮想データ・フローを定義する仮想階層タグ（ＶＨタグ）が付加される。なお、ＰＣＩｅは、３つのトランザクションの型：ポステッド（応答不要）、ノンポステッド（応答要）およびコンプリーション（応答）トランザクションを含む。各トランザクションは、１２８／９６ビットのヘッダと、オプションの３２ビットのエンド・ツー・エンドＣＲＣ（ＥＣＲＣ：ｅｎｄ  ｔｏ  ｅｎｄ  ＣＲＣ）保護を有するデータ（含まれている場合）と、（基本仕様のアドオンをサポートするための）接頭部とを含む。なお、ＭＲ−ＩＯＶに対しては、とりわけそれがＶＨタグを包含しているので、この接頭部が必要となる。
【００５７】
ＰＣＩｅ仕様は、順位付けルールを定義しており、これによりトランザクションの間には特定の順位付け関係が維持されなければならない。例えば、ノンポステッド・トランザクションは、ポステッド・トランザクション要求の前に送信されてはならない。順位付けルールには、仕様改訂による多くのアドオン（例えば、ＩＤ順位付け、マルチプル・ルートなど）およびトランザクション・ヘッダ内の緩和的順位付けインジケーションを含めることができる。
【００５８】
一つの実施形態において、後記でさらに詳しく説明する本発明の優先順位付けチェック・メカニズムが、ＭＲＡルート・コンプレックス、ＭＲＡスイッチ、およびＭＲＡ  ＰＣＩｅデバイスなどのＭＲＡデバイス中のＰＣＩｅポートのＴＸ部分中に実装される。
【００５９】
本発明の一つの実施形態の優先順位付けチェック・メカニズムを組み込んだＭＲ−ＩＯＶ仮想階層中の、例示的なポステッド、ノンポステッド、およびコンプリーション待ち行列並びにセレクタを表すブロック図が、図２に示されている。全体が参照符号３０として示されているこの回路は、システム・バス３２と、ポステッド待ち行列インターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）３４および関連するポステッド・トランザクション待ち行列４０と、ノンポステッド待ち行列Ｉ／Ｆ３６および関連するノンポステッド・トランザクション待ち行列４２と、コンプリーション待ち行列Ｉ／Ｆ３８および関連するコンプリーション・トランザクション待ち行列４４と、本発明の一つの実施形態の優先順位付けチェック・ユニット４８を組み込んだセレクタ４６と、ＰＣＩｅバス５０と、を含む。
【００６０】
作動において、システム・バスは、ポステッド、ノンポステッド、およびコンプリーションの３つの型のトランザクション（すなわち、ＴＬＰ）を発行する。これら３つのトランザクションの型は、ＰＣＩｅ仕様に定義された順位付けルールを順守する必要がある。トランザクションのヘッダ（各々最高１２８ビットまで）および他の関連するトランザクション・メタデータは、アクセス性を制限されて、メモリ・アレイに格納された待ち行列に挿入される。ある例示的な実施形態で、この待ち行列の深さは１６エントリの深さであるが、特定の実装に応じてこれより多くすることも小さくすることも可能である。
【００６１】
セレクタは、ポステッド、ノンポステッド、およびコンプリーション待ち行列、４０、４２、４４の先頭にあるトランザクションの間から、ＰＣＩｅバスに送信されるトランザクションを選択するよう機能する。この選択は、ＰＣＩｅ順位付けルール、ＰＣＩｅ利用可能性、および公平性スキームに従って行われなければならない。なお、ＰＣＩｅ利用可能性は、それぞれのトランザクション型に割り当てられた実施枠に基づく。ＰＣＩｅ仕様によれば、実施枠は、ＶＨ固有のタグ付けを使っても、または使わずにも割り当てることができる。
【００６２】
ＰＣＩｅ  ＭＲ−ＩＯＶ仕様によれば、トランザクションは、各トランザクションの特定のＶＨとの関連性を示すＶＨタグとともに、システム・バスによって発行される。トランザクションの送信の優先順位付けは、セレクタによって、同じＶＨのトランザクションの間でだけ行われ、他のＶＨに属するトランザクションがその順位付けに影響してはならない。しかして、一つのＶＨのポステッド・トランザクションが別のＶＨのノンポステッド・トランザクションを阻むことはできない。
【００６３】
適正な順位付けを行うために、セレクタは、複数の待ち行列エレメントに同時にアクセスすることが必要である。このことは、潜在的に、待ち時間およびロジックの複雑性に影響してバスのスループットの低下をもたらし得る。この待ち時間は、メモリ・アレイ・ラインへのアクセスに使われる追加的なロジックおよびサイクルに起因する。さらに、セレクタは、次に送信予定のノンポステッド／コンプリーション・トランザクションと比較するために、ポステッド待ち行列の内容からデータを収集する必要がある。しかして、順位付けを持続するため、セレクタは、ポステッド待ち行列メモリ・セルの内容にアクセスして、網羅的なスキャンを行う必要がある。
【００６４】
本発明の一つの例示的な実施形態において、ポステッド情報アレイ（ＰＩＡ：Ｐｏｓｔｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ａｒｒａｙ）と称される低コスト、低容量のメモリ・アレイおよび関連する優先順位付けチェック・ロジック回路が、セレクタに加えられる。これにより、ポステッド・トランザクション待ち行列のメモリ・アレイ内容への高コストなアクセス、および関連するデータ処理コストを回避する。
【００６５】
ポステッド情報アレイは、順位付けに関する不可欠なデータだけを格納する。この不可欠な順位付けのデータは、ポステッド・トランザクション・データから抽出され、ＰＩＡ中に格納される。順位付けには、ポステッド・トランザクションに関連する特定の情報が必要である。一つの実施形態において、この必要な情報は、システム・バス側からセレクタ内部のＰＩＡに転送され、そこに格納される。ポステッド情報アレイ中の情報は、優先順位付け処理を必要とするポステッド・トランザクション待ち行列の内容のエンティティを反映し、通常、これはデータの小さな部分である。
【００６６】
セレクタは、単一回のアクセス・サイクルを介し、比較的低コストのロジック回路を用いて、ポステッド情報アレイにクエリして、待ち行列から読み取られた只今のノンポステッド／コンプリーション・トランザクションが、ＰＣＩｅ  ＭＲ−ＩＯＶ順位付けルールに適合しているかどうかを、しかしてＰＣＩｅバスに送信可能かどうかをチェックする。これは、ポステッド待ち行列のメモリ・アレイに（多くのサイクルを介して）何回ものアクセスを行わなければならないセレクタとは対照的である。なお、セレクタは、定期的ベースで、あるいは、例えば、サイクルごと、数サイクルごと、または利用可能なトークンの数など何か別の条件付けなど、他のベースでポステッド情報アレイにクエリすることが可能である。
【００６７】
例示的なポステッド情報アレイの構造を表すブロック図が、図３に示されている。全体が参照符号６０として示されているこのポステッド情報アレイは、複数のエントリ６２を含む。各エントリは、ＶＨタグ６４（例えば８ビット）、先行順序インジケータ６６（例えば８ビット）、およびバリッド・ビット６８を含め、少なくとも３つのフィールドを組み入れた、ラッチ、レジスタ、または他の適切なメモリ構造体を含む。ＰＩＡを構成するレジスタは、シフト・レジスタ方式に（すなわち、待ち行列として）配置され、ポステッド待ち行列へのポステッド・トランザクション入力からのＶＨタグおよび先行順序インジケータ情報７０は、ＰＩＡのトップにある第一エントリ中に書き込まれる。先行のエントリの出力は、ダウンストリーム・エントリの入力端に供給される。着信ポステッド・トランザクション・クロック７２のサイクルごとに、ＰＩＡ中の各エントリの内容は次のエントリにクロック送りされる。どの時点においても、ＰＩＡの全内容が優先順位付けチェック・ロジック６９に入力され、該ロジックは、ポステッド待ち行列のどこかに、現在のノンポステッド／コンプリーション・トランザクションより優先される、同じＶＨからのトランザクションがあるかどうかを判定するよう機能する。次いで、セレクタが、そのノンポステッド／コンプリーション・トランザクションを送信するかどうかを決定する。
【００６８】
ＰＩＡ中に新規のポステッド・トランザクションのインジケーションが受信されたとき、アレイのセルは、シフト・ダウンされる（すなわち、エントリ０番がエントリ１番になるなど）。セル０番は、最上部のセルである。ポステッド・トランザクションがＰＣＩｅバスに送信されるかまたは廃棄されたとき、そのトランザクション・エントリに対応するＰＩＡ中の有効インジケーション・ビットはクリアされる。ＰＩＡ中の最後のエントリは保存されず、しかして、シフト・イベントの過程で、その上のエントリが最後のエントリに上書きされ、該エントリのデータ内容は失われる。
【００６９】
なお、先行順序インジケータには、トランザクションの待ち行列への到着の時間順序を表す任意のエンティティを含めることが可能である。一例として、トランザクションには、タイムスタンプ、連続番号などを含めることができる。さらに、一つの実施形態において、先行順序インジケータには、例えばカウンタから生成できる連続番号を含めることも可能である。
【００７０】
本発明の一つの実施形態の優先順位付けチェック方法を表すフロー図が、図４に示されている。以下の方法は、ソフトウェア、ハードウェア、またはソフトウェアおよびハードウェア両方の組み合わせに実装することが可能である。本方法は、ＰＣＩｅポートのＴＸ部分中のセレクタ機能に実装するよう意図されている。ポステッド待ち行列中の各エントリに対し、対応するエントリがポステッド情報アレイ中に格納される（ステップ８０）。エントリがポステッド待ち行列に格納されるにつれ、それらのＶＨタグと先行順序インジケータ（およびバリッド・ビット）とがポステッド情報アレイに格納される。ポステッド待ち行列およびポステッド情報アレイ両方の深さは、望ましくは同じである。本明細書で提示する例では、この深さは１６エントリである。なお、本発明はこの例に限定されるものでなく、任意の所望の深さの実装が可能である。
【００７１】
次いで、エントリに対してバリッド・ビットがセットされているかどうかがチェックされ（ステップ８２）、セットされていれば、次いで、ＰＩＡ中のポステッド・エントリの先行順序インジケータが、待ち行列の出力端にあるノンポステッド／コンプリーション・トランザクションの先行順序インジケータに対する所定の条件を満たしているかどうかがチェックされる（ステップ８４）。当然のことながら、所定の条件には、例えば、所定値より大きい、小さい、それに等しい、その特定の倍数など、任意の適切な条件を含めることが可能である。条件が満たされた場合、次に、ポステッド・エントリのＶＨタグが待ち行列の出力端にあるノンポステッド／コンプリーション・トランザクション・エントリのＶＨタグと等しいかどうかがチェックされる（ステップ８６）。等しい場合、同じＶＨタグを有するポステッド待ち行列中に、条件を満たす（例えば、より早期の先行順序インジケータを有する）ポステッド・トランザクションがあるとのインジケーションがセレクタ回路に出力される（ステップ８８）。ステップ８２、８４、８６での判定のいずれかの結果が「いいえ」である場合、これは、同じＶＨタグを有するポステッド待ち行列の中に、所定の条件（例えば、より早期の先行順序インジケータ）を満たすポステッド・トランザクションがないことを示しており、それに応じたインジケーションがセレクタに送信され、セレクタはそれに続く処置（あれば）を取る（ステップ９０）。なお、ＶＨタグの値を比較する際に、カウンタのサイズが限られているので、一周して元に戻る可能性も考慮に入れるようにする。この一周戻りに効果的に対応するための、当技術分野で周知の数多くの技法がある。
【００７２】
本発明の一つの実施形態の第一例の優先順位付けチェック・ロジック回路を表すブロック図が、図５に示されている。全体が参照符号１００として示されている優先順位付けチェック・ロジック回路は、コンパレータ１１０、１１４と、論理積回路１１２、１１６と、論理和回路１１８とを含む。動作において、ポステッド情報アレイ１０２中の（この例では）全１６エントリの内容が、優先順位付けチェック回路に入力される。１６個の８ビット先行順序インジケータ１０６が、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションの先行順序インジケータ１２０と（より小さいかどうか）比較１１４される。ＰＩＡポステッド・エントリのいずれかが、待ち行列の出力端のトランザクションよりも早く着信していたかどうかの判定をすることが望ましい。１６個の８ビットＶＨタグ（ＰＩＡ中の各エントリに対し一つずつ）が待ち行列の先頭のノンポステッド／コンプリーション・トランザクションのＶＨタグ１２２と比較１１０される。１６個の等値比較１１０の１ビット結果と、１６個の１ビット・バリッド・ビット１０８との論理積１１２がとられる。引き続き、この１６個の１ビット結果と、比較１１４の１６個の１ビット結果との論理積１１６がとられる。この論理積演算の１６個の１ビット結果の論理和１１８がとられて、１個の１ビット優先順位付けインジケーション１２６が得られ、これはセレクタに送られる。セレクタに送られた情報は、ポステッド待ち行列のどこかに、現在のノンポステッド／コンプリーション・トランザクションより優先される、同じＶＨからのトランザクションがあるかどうかを示す。次いで、セレクタが該ノンポステッド／コンプリーション・トランザクションを送信するかどうかを決定する。通常、セレクタは、ノンポステッド／コンプリーション・トランザクションを送信しないことになろうが、セレクタが当該情報を無視し、特定のノンポステッド／コンプリーション・トランザクションの送信を決定する状況もあり得る。
【００７３】
ＰＩＡ中のエントリ中のＶＨタグのいずれかが、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションのタグと等しく、且つＰＩＡ中のエントリの先行順序インジケータのいずれかが、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションに対する一つ以上の所定条件を満たし、且つ適切なバリッド・ビットがセットされている場合、このとき、優先順位付けインジケーションは、ポステッド待ち行列のどこかに、現在のノンポステッド／コンプリーション・トランザクションより優先される、同じＶＨからのトランザクションがあるかどうかを示すようにセットされる。
【００７４】
条件の評価（例えば、どちらが小さいかの比較）１１４の結果は、条件が満たされれば高い（すなわち、ノンポステッド／コンプリーション先行順序インジケータが、ポステッド先行順序インジケータより大きく、ポステッド・トランザクションが時間的に先に到着したことを示している）。前述したように、通常、セレクタは、ノンポステッド／コンプリーション・トランザクションを先行させないように決定し、ポステッド・トランザクションが送信されるまで待つ必要があるが、ただし場合によってはその限りではない。
【００７５】
本発明の第二例の優先順位付けチェック・ロジック回路を表すブロック図が、図６に示されている。この例の実施形態において、所定の条件は、ポステッド・トランザクションとノンポステッド／コンプリーション・トランザクションとの間での「より小さいかどうか」の比較を含む。当然のことながら、本発明はこの特定の条件に限定されるものでなく、本発明は他の条件も同様に予期している。一つの実施形態において、全体が参照符号１３０として示されている優先順位付けチェック・ロジック回路は、ポステッド情報アレイ中の各エントリに対する回路「スライス」または「プレーン」１３１を含む（この例では１６の「プレーン」）。各プレーンは、ＶＨタグ１３４、先行順序インジケータ１３６およびバリッド・ビット１３８を含むポステッド・トランザクション順位付けデータ１３２と、コンパレータ１４０、１４２と、論理積ロジック１４４とを含む。
【００７６】
各プレーン（またはスライス）において、８ビット先行順序インジケータ１３６は、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションの先行順序インジケータ１４８と（例えば、それより小さいか）比較１４２される。ＰＩＡポステッド・エントリのいずれかが、待ち行列の出力端のトランザクションよりも早く着信していたかどうかの判定をすることが望ましい。８ビットのＶＨタグが、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションのＶＨタグ１５０と比較１４０され、これらが等しいかどうかが調べられる。この等価比較１４０の１ビットの結果と、１ビットのバリッド・ビット１３８および比較１４２の１ビット結果との論理積１４４がとられる。各エントリ・プレーンからの論理積演算の１ビット結果の間の倫理和１４６がとられ、一つの１ビット優先順位付けインジケーション１５２が得られる。
【００７７】
ＰＩＡ中のエントリ中のＶＨタグのいずれかが、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションのタグと等しく、且つＰＩＡ中のエントリの先行順序インジケータのいずれかが、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションのものよりも小さく、且つ適切なバリッド・ビットがセットされている場合、このとき、ポステッド待ち行列のどこかに、現在のノンポステッド／コンプリーション・トランザクションより優先される、同じＶＨからのトランザクションがあるかどうかを示す優先順位付けインジケーションがセレクタに送られる。
【００７８】
図５の回路と同様に、どちらが小さいかの比較１４２の結果は、ノンポステッド／コンプリーション先行順序インジケータが、ポステッド先行順序インジケータより大きければ高く、ポステッド・トランザクションが先に到着したことを示している。
【００７９】
本優先順位付けチェック・メカニズムは、ＰＣＩ−ＳＩＧによって標準化されているＰＣＩエクスプレスの物理フォーマットに従った複数のレーンを含むＰＣＩｅリンクに連結する機能を有する、ＡＳＩＣ、ＦＰＧＡ、およびカスタム・プロセッサとして実装することができる。
【００８０】
別の第一実施形態において、ノンポステッド・トランザクション（ノンポステッド情報アレイ）およびコンプリーション・トランザクション（コンプリーション情報アレイ）に関する情報を含む追加の情報アレイを用いることが可能である。この場合選択の過程で３つの情報アレイがあることを除き、これは上記で説明した諸実施形態と類似である。この実施形態の利点は、セレクタが、これら情報アレイ中の多数のエントリをチェックする能力を有することである。ただし、不利点は、ハードウェア必要性の増大である。
【００８１】
別の第二実施形態において、トランザクション・メモリアレイ待ち行列の数は、サポートされるＶＨの最大数（例えば２５６）で乗じられ、合計２５６×３のメモリ・アレイ待ち行列となる。この実施形態では、セレクタは、各待ち行列からの出力エントリを読み取り、その内部ロジック（総当たり法など）に従って、次に送信されるトランザクションを決定する。このスキームの不利点は、セレクタ・ロジックの複雑性が増大し、必要なリソースの増加を伴い、また、余分なクロック・サイクルを処理することが必要となり得ることである。
【００８２】
別の第三実施形態では、システム側で複数のカウンタが使われる。各ＶＨに対し一つのカウンタが設けられる（例えば、最大２５６のＶＨをサポートしているシステムでは２５６個のカウンタ）。各ＶＨに対し別々のカウンタを設けることに加えて、特定のＶＨに対する最新のポステッド先行順序インジケータを格納するために、合計２５６までのレジスタが設けられる。ＶＨｘの最新のポステッド・トランザクションに対し、各カウンタは、セレクタ側から送信された、各ポステッドＶＨの最新のトランザクションの経過を追うよう機能する。
【００８３】
別の第四実施形態において、別の第三実施形態中で前述したのと同様な優先順位付けチェック・ロジック回路が使われ、それとの違いは、ポステッド、ノンポステッド、およびコンプリーション・トランザクションに対し（または、ＶＨの最大数までのそれぞれに対し）、２５６のメモリ・アレイ（すなわち待ち行列）を使用することである。
【００８４】
別の第五実施形態において、ハードウェア、ソフトウェア、もしくはそれらの組み合わせを使って、待ち行列内容の論理な探索が行われ、これにより、特定のＶＨに対し、待ち行列の先頭のノンポステッド／コンプリーション・トランザクションよりも高い先行順序インジケータの探索のためポステッド待ち行列の内容がサンプルされる。
【００８５】
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある（“ａ”、“ａｎ”）」、および「該（“ｔｈｅ”）」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む（“ｃｏｍｐｒｉｓｅ”）」もしくは「含んでいる（“ｃｏｍｐｒｉｓｉｎｇ”）」またはその両方は、述べられた機能、整数、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の機能、整数、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を排除するものではない。
【００８６】
添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を遂行するための、一切の構造、材料または動作を包含することが意図されている。本発明の記述は、例示および説明の目的で提示されたもので、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者なら数多くの修改および変更を容易に思い付くように、本発明は、本明細書に記載された限られた数の実施形態に限定されないものと意図されている。従って、当然のことながら、全ての相応するバリエーション、修改、および同等物は、本発明の趣旨および範囲に含まれるものとして取り扱われることがある。これらの実施形態は、本発明の原理および実際上の応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を使ったさまざまな実施形態のために、本発明が理解できるように選択され記述されたものである。
【図１】
0005490336.tif 000003
【図２】
0005490336.tif 000004
【図３】
0005490336.tif 000005
【図４】
0005490336.tif 000006
【図５】
0005490336.tif 000007
【図６】
0005490336.tif 000008