(57)【特許請求の範囲】
【請求項１】
データ処理システムにおいて、該データ処理システムに接続された複数のエンドポイントにわたって該データ処理システムのフロントサイド・バスの帯域幅を動的に平衡化するための方法であって、
事前定義された期間内に生じ得るエラーの数の閾値を設定するステップと、
所与のエンドポイントが前記閾値を超えるかどうかを決定するステップと、
前記所与のエンドポイントが前記閾値を超えることに応答して、前記フロントサイド・バスがその最大データ転送速度で作動しているかどうかを決定するステップと、
前記フロントサイド・バスがその最大データ転送速度で作動していない場合、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるステップと、
を含む、方法。
【請求項２】
どのエンドポイントがアクティブであるかを決定するためにすべてのエンドポイントに照会を行うステップを更に含む、請求項１に記載の方法。
【請求項３】
少なくとも１つのエンドポイントがアクティブであることに応答して、いずれのアクティブなエンドポイントも前記所与のエンドポイントよりも低い優先順位を有するかどうかを決定するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記フロントサイド・バスがその最大データ転送速度で作動している場合、前記所与のエンドポイントよりも低い優先順位を有する少なくとも１つのアクティブなエンドポイントに対する１つまたは複数のデータ転送速度の設定値を減少させるステップを更に含む、請求項３に記載の方法。
【請求項５】
前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるステップを更に含む、請求項４に記載の方法。
【請求項６】
前記１つまたは複数のデータ転送速度の設定値が最大メモリ読取りサイズを含み、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させる前記ステップが前記最大メモリ読取りサイズのパラメータをオン・ザ・フライで増加させるステップを含む、請求項１に記載の方法。
【請求項７】
前記１つまたは複数のデータ転送速度の設定値がペイロードを含み、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を前記増加させるステップが
前記所与のエンドポイントにおけるトラフィックを一時的に停止するステップと、
前記ペイロードのパラメータを増加させるステップと、
前記所与のエンドポイントにおけるトラフィックを再開するステップと、
を含む、請求項１に記載の方法。
【請求項８】
前記１つまたは複数のデータ転送速度の設定値がレーン・サイズを含み、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させる前記ステップが、
前記所与のエンドポイントに関連したアプリケーションを一時的に停止するステップと、
前記所与のエンドポイントに対するレーンをリトレーニングするステップと、
前記所与のエンドポイントに対する装置ドライバを再初期設定するステップと、
前記アプリケーションを再開するステップと、
を含む、請求項１に記載の方法。
【請求項９】
前記フロントサイド・バスの最大データ転送速度を決定するステップを更に含む、請求項１に記載の方法。
【請求項１０】
前記フロントサイド・バスの最大データ転送速度を決定する前記ステップは、最大データ転送速度値を保存する前記データ処理システムのレジスタから前記最大データ転送速度値を検索するステップを含む、請求項９に記載の方法。
【請求項１１】
前記フロントサイド・バスの最大データ転送速度を決定する前記ステップは、前記フロントサイド・バスの最大データ転送速度に対応する値を重要プロダクト・データとして受け取るステップを含む、請求項９に記載の方法。
【請求項１２】
前記フロントサイド・バスがその最大データ転送速度で作動しているかどうかを決定する前記ステップは、前記フロントサイド・バスにおけるパフォーマンス・カウンタに照会を行うステップを含む、請求項１に記載の方法。
【請求項１３】
前記方法が前記データ処理システムのファームウェアにおいて実施される、請求項１に記載の方法。
【請求項１４】
前記所与のエンドポイントが前記閾値を超えるかどうかを決定する前記ステップは、前記所与のエンドポイントからのエラーの数が前記閾値を超えることをルート・コンプレクスにおいて検出したことに応答して、前記ルート・コンプレクスから前記データ処理システムにおける前記ファームウェアに割り込みを送るステップを含む、請求項１３に記載の方法。
【請求項１５】
前記所与のエンドポイントが前記閾値を超えるかどうかを決定するステップは、
前記所与のエンドポイントからのエラーの数が前記閾値を超えることをルート・コンプレクスにおいて検出したことに応答して、前記ルート・コンプレクスにおけるレジスタにビットを設定するステップと、
前記データ処理システムにおけるファームウェアによって前記レジスタをポーリングするステップと、
前記レジスタにおける前記ビットが設定されているかどうかを前記ファームウェアによって決定するステップと、
を含む、請求項１３に記載の方法。
【請求項１６】
データ処理システム内のファームウェアにおいて、該データ処理システムに接続された複数のエンドポイントにわたって該データ処理システムのフロントサイド・バスの帯域幅を動的に平衡化するための方法であって、
事前定義された期間内に生じ得るエラーの数の閾値を設定するステップと、
所与のエンドポイントが前記閾値を超えるかどうかを決定するステップと、
前記フロントサイド・バスにおけるパフォーマンス・カウンタに照会を行うステップと、
前記フロントサイド・バスの最大データ転送速度を決定するステップと、
前記所与のエンドポイントが前記閾値を超えることに応答して、前記フロントサイド・バスがその最大データ転送速度で作動しているかどうかを決定するステップと、
前記フロントサイド・バスがその最大データ転送速度で作動していない場合、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるステップと、
前記フロントサイド・バスがその最大データ転送速度で作動している場合、前記所与のエンドポイントよりも低い優先順位を有する少なくとも１つのアクティブなエンドポイントに対する１つまたは複数のデータ転送速度の設定値を減少させ、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるステップと、
を含む、方法。
【請求項１７】
コンピュータ装置に、
事前定義された期間内に生じ得るエラーの数の閾値を設定させるステップと、
所与のエンドポイントが前記閾値を超えるかどうかを決定させるステップと、
前記所与のエンドポイントが前記閾値を超えることに応答して、フロントサイド・バスがその最大データ転送速度で作動しているかどうかを決定させるステップと、
前記フロントサイド・バスがその最大データ転送速度で作動していない場合、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるステップと、
を実行させる、コンピュータ・プログラム。
【請求項１８】
前記フロントサイド・バスがその最大データ転送速度で作動している場合、前記所与のエンドポイントよりも低い優先順位を有する少なくとも１つのアクティブなエンドポイントに対する１つまたは複数のデータ転送速度の設定値を減少させるステップを更に含み、このステップも前記コンピュータ装置に実行させる、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記１つまたは複数のデータ転送速度の設定値は最大メモリ読取りサイズを含み、
前記所与のエンドポイントに対する前記１つまたは複数のデータ転送速度の設定値を増加させる前記ステップは、最大メモリ読取りサイズのパラメータをオン・ザ・フライで増加させるステップを更に含み、このステップも前記コンピュータ装置に実行させる、請求項１７に記載のコンピュータ・プログラム。
【請求項２０】
前記フロントサイド・バスの最大データ転送速度を決定させるステップを更に含み、このステップも前記コンピュータ装置に実行させる、請求項１７に記載のコンピュータ・プログラム。
【請求項２１】
ファームウェアと、
フロントサイド・バスと、
前記ファームウェアおよび前記フロントサイド・バスに接続された複数のエンドポイントと、
を含むデータ処理システムであって、前記ファームウェアは、
事前定義された期間内に生じ得るエラーの数の閾値を設定するステップと、
所与のエンドポイントが前記閾値を超えるかどうかを決定するステップと、
前記所与のエンドポイントが前記閾値を超えることに応答して、前記フロントサイド・バスがその最大データ転送速度で作動しているかどうかを決定するステップと、
前記フロントサイド・バスがその最大データ転送速度で作動していない場合、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるステップと、
を行うように構成される、データ処理システム。
【請求項２２】
前記ファームウェアは、前記フロントサイド・バスがその最大データ転送速度で作動している場合、前記所与のエンドポイントよりも低い優先順位を有する少なくとも１つのアクティブなエンドポイントに対する１つまたは複数のデータ転送速度の設定値を減少させるように更に構成される、請求項２１に記載のデータ処理システム。
【請求項２３】
前記１つまたは複数のデータ転送速度の設定値は最大メモリ読取りサイズを含み、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させる前記ステップは前記最大メモリ読取りサイズのパラメータを増加させるステップを含む、請求項２１に記載のデータ処理システム。
【請求項２４】
前記所与のエンドポイントからのエラーの数が前記閾値を超えることをルート・コンプレクスにおいて検出したことに応答して、前記ルート・コンプレクスは前記ルート・コンプレクスにおけるレジスタにビットを設定し、
前記所与のエンドポイントが前記閾値を超えるかどうかを決定する前記ステップは、前記レジスタをポーリングするステップと、前記レジスタにおけるビットが設定されているかどうかを決定するステップとを含む、請求項２１に記載のデータ処理システム。
【請求項２５】
ファームウェアと、
フロントサイド・バスと、
前記ファームウェアおよび前記フロントサイド・バスに接続された複数のエンドポイントと、
を含むデータ処理システムであって、前記ファームウェアは、
事前定義された期間内に生じ得るエラーの数の閾値を設定するステップと、
所与のエンドポイントが前記閾値を超えるかどうかを決定するステップと、
前記フロントサイド・バスにおけるパフォーマンス・カウンタに照会を行うステップと、
前記フロントサイド・バスの最大データ転送速度を決定するステップと、
前記所与のエンドポイントが前記閾値を超えることに応答して、前記フロントサイド・バスがその最大データ転送速度で作動しているかどうかを決定するステップと、
前記フロントサイド・バスがその最大データ転送速度で作動していない場合、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるステップと、
前記フロントサイド・バスがその最大データ転送速度で作動している場合、前記所与のエンドポイントよりも低い優先順位を有する少なくとも１つのアクティブなエンドポイントに対する１つまたは複数のデータ転送速度の設定値を減少させ、前記所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるステップと、
を行うように構成される、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、データ処理システムおよびデータ処理方法の改良に関するものである。更に詳しく云えば、本発明は、複数のＰＣＩエキスプレス・アダプタ全体にわたってＰＣＩエキスプレス帯域幅を動的に平衡化するためのシステムに関するものである。
【背景技術】
【０００２】
最新のコンピュータ装置は、１９９０年代にインテル(Intel : Intel Corporation の商標)社によって最初に作成されたペリフェラル・コンポーネント・インターコネクト（PeripheralComponent Interconnect - ＰＣＩ）標準の或るバージョンまたは実施態様を利用した入出力（Ｉ／Ｏ）アダプタおよびバスを使用する。ＰＣＩ標準は、周辺装置をコンピュータ・マザーボードに取り付けるためのコンピュータ・バスを指定する。ＰＣＩエキスプレスまたはＰＣＩｅは、既存のＰＣＩプログラミング概念を使用するが、コンピュータ・バスの基礎を、全く異なり且つ遥かに高速のシリアル物理層通信プロトコルに置いている。その物理層は、複数の装置間で共用し得る双方向性バスから成るのではなく、厳密に２つの装置に接続される単一の単方向性リンクから成る。
【０００３】
図１は、ＰＣＩエキスプレス（ＰＣＩｅ）ファブリック・トポロジをＰＣＩｅ仕様に従って示す例示的な概略図である。図１に示されるように、ＰＣＩｅファブリック・トポロジ１００は、ルート・コンプレクスまたはマルチルート・コンプレクス１３０、即ち、Ｉ／Ｏノース・ブリッジに接続されたホスト・プロセッサ（ＣＰＵ）コンプレクス１１０およびメモリ１２０を含み、ルート・コンプレクス１３０は、１つまたは複数のＰＣＩｅエンドポイント１４０（「エンドポイント」という用語はＰＣＩｅイネーブルドＩ／Ｏアダプタを参照するためにＰＣＩｅ仕様において使用される）、ＰＣＩエキスプレス・ツー・ＰＣＩブリッジ１５０、および１つまたは複数の相互接続スイッチ１６０に接続される。ルート・コンプレクス１３０は、ＣＰＵ／メモリをＩ／Ｏアダプタに接続するＩ／Ｏハイアラーキのルートを示す。ルート・コンプレクス１３０は、１つのホスト・ブリッジと、ゼロまたは１つ以上のルート・コンプレクス統合エンドポイントと、ゼロまたは１つ以上のルート・コンプレクス・イベント・コレクタと、１つまたは複数のルート・ポートとを含む。各ルート・ポートは個々のＩ／Ｏハイアラーキをサポートする。Ｉ／Ｏハイアラーキは、ルート・コンプレクス１３０と、ゼロまたは１つ以上の相互接続スイッチ１６０および／またはブリッジ１５０（スイッチまたはＰＣＩｅファブリックを含む）と、エンドポイント１７０および１８２〜１８８のような１つまたは複数のエンドポイントとを含み得る。エンドポイント１４０、１７０、および１８２〜１８８は、例えば、イーサネット（登録商標）、ＳＣＳＩ、ＳＡＳ、またはファイバ・チャネルＩ／Ｏアダプタであってもよい。ＰＣＩおよびＰＣＩｅに関する更なる情報に関しては、 におけるペリフェラル・コンポーネント・インターコネクト・スペシャル・インタレスト・グループ（ＰＣＩ−ＳｉＧ）ウェブサイトから入手可能なＰＣＩおよびＰＣＩｅ仕様を参照されたい。
【０００４】
ＣＰＵコンプレクス１１０は、１つまたは複数のプロセッサおよびメモリ（図示されていない）を含み、ルート・コンプレクス１３０の上にあるセントラル・エレクトロニクス・コンプレクス（ＣＥＣ）１９０内に存在する。ＣＥＣ１９０をルート・コンプレクス１３０に接続するために、例えば、インターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ (IBM Corporation の商標)）のエンタープライズ・サーバにおけるフォントサイド・バスとも呼ばれるバス１９２が使用される。なお、これらのバスはＧＸ＋バスとも呼ばれる。フォントサイド・バス１９２は、既知量である限定された帯域幅を有する。例えば、フォントサイド・バス１９２は、４Ｇバイト／秒の帯域幅を維持することができる。
【０００５】
現在知られている構成では、ＰＣＩレーンが最大レベルまで使用される場合にフォントサイド・バス１９２において得られる４Ｇバイト／秒の帯域幅を超え得る合計帯域幅を持ったエンドポイント１４０、１７０、および１８２〜１８８と幾つものドロワを一列に並べることが可能である。ＰＣＩ標準における「レーン」は、送信のための一対および受信のための一対から成る種々の信号対のセットである。ＰＣＩ標準における「by-N（Ｎ倍）」リンクはＮ個のレーンから成り、例えば、「x8」リンクまたはスロットは、Ｉ／Ｏアダプタからの或いはＩ／Ｏアダプタへの８個のレーンのトラフィックをサポートする。エンドポイントのＰＣＩｅレーンを介したトラフィックがフロントサイド・バス１９２の使用可能な帯域幅を超える場合、各Ｉ／Ｏアダプタに対する望ましいパフォーマンスが得られることは保証され得ず、アイソクロナス（isochronous）Ｉ／Ｏアダプタ、即ち、実時間音声および映像のような時間従属性データに関連したデータ伝送の如きデータ・パケット伝送の間に、等しい時間差で伝送されるデータ・パケットを有するデータ伝送を行うＩ／Ｏアダプタ、に関して問題が生じ得る。
【０００６】
ＰＣＩエキスプレスは、どのトラフィックが優先権を有するか、またはどのくらいのバッファ・スペースを各レーンが使用し得るかということを人が定義し得るトラフィック・クラスおよび仮想レーンを作成することによって、この問題を解決しようとした。この解決方法による問題点は、業界がこのアーキテクチャ上の特徴を利用しようとしなかったということである。業界は、ＰＣＩ−ＸからＰＣＩエキスプレスへの移行がオペレーティング・システムおよびファームウェアに関してできるだけ透明な態様で行われるべきものであったために、多くのトラフィック・クラスおよび仮想レーンを利用しようとしなかった。トラフィック・クラスおよび仮想レーンを十分に利用するためには、オペレーティング・システムおよびファームウェアがこれらの特徴に気付くべきであったろうし、新しいコードがこれらの特徴を利用するために書かれる必要があったであろう。しかし、そのような修正を行わずに、ベーシック・インテグレーテッド・オペレーティング・システム（ＢＩＯＳ）、並びに Microsoft (Microsoft Corporation の商標) Windows (MicrosoftCorporation の商標)および Linux (Linus Torvalds の商標)のような既知のオペレーティング・システムが、多数のトラフィック・クラスおよび仮想レーンをサポートするために必要な修正を行わなかった。
【０００７】
更に、ハードウェアの観点から、多くのトラフィック・クラスおよび多数の仮想レーンに対するサポートを追加することは、アービトレーションおよびフロー制御のような複雑さをチップ領域に追加することを必要とする。更に、そのようなサポートを追加することは、各仮想レーンがデータの送受信のために自身の専用の記憶装置を必要とするので、追加のチップ実領域を必要とする。その結果、ハードウェア製造業者は、多数のトラフィック・クラスおよび多数の仮想レーンに対するサポートを実施しなかった。
【０００８】
既存のＰＣＩエキスプレス・アダプタは、多くのトラフィック・クラスおよび仮想レーンを利用するのではなく、１つのトラフィック・クラスおよび１つの仮想レーンをサポートするだけである。更に、主要なオペレーティング・システム、即ち、Microsoft Windows および Linux は、１つのトラフィック・クラスおよび１つの仮想レーンを使用するだけである。その結果、現時点における既知の環境は、多くの場合、Ｉ／Ｏハブまたはスイッチを介してＣＰＵコンプレクスに接続されたＩ／ＯドロワにおけるＰＣＩエキスプレス・アダプタ・カードの設定の可能な合計帯域幅が、Ｉ／Ｏハブ、スイッチ、および／またはフロントサイド・バスの容量を遥かに超え得るという問題点に遭遇する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、複数のＰＣＩエキスプレス（ＰＣＩｅ）アダプタまたは「エンドポイント」にわたってバス帯域幅を動的に平衡化するためのシステムを提供することである。本実施例の機構は、ハードウェアまたはソフトウェア機構、およびデータ構造を含み、それらは、ＰＣＩｅアダプタ／エンドポイントのパフォーマンスが保証され得ないという公算を最小にしながら、および、アイソクロナスＰＣＩｅアダプタ／エンドポイントによる問題点を最小にしながら、フロントサイド・バスの使用可能な帯域幅の使用を最大にするように、ＰＣＩｅアダプタ／エンドポイントの操作パラメータを設定するために提携して自動的に作動する。
【課題を解決するための手段】
【００１０】
１つの実施例では、ＰＣＩｅアダプタ／エンドポイント（以下、エンドポイントという）の合計最大および／または最小データ転送速度と、フロントサイド・バスに対する最大データ転送速度、即ち、フロントサイド・バスの帯域幅と、の比較に基づいてエンドポイントの操作パラメータを調整するために、２つのテーブル・データ構造がファームウェアによって利用される。第１テーブル・データ構造は、データ処理システムの各エンドポイントの帯域幅使用を制御するための操作パラメータ設定の種々の組み合わせを含む。第２テーブル・データ構造は、データ処理システムがそれらの関連した最小データ転送速度および優先順位をサポートするエンドポイントのリストを含む。第２テーブル・データ構造は、更に、どのエンドポイントがアイソクロナス要件を有するかということを指示する。
【００１１】
操作に関しては、本実施例の機構が、所定の期間内に生じ得るエラーの閾値を設定する。エラーがその閾値を超える場合、その機構は、フロントサイド・バスがその最大データ転送速度で作動しているかどうかを決定するために、フロントサイド・バス・パフォーマンス・カウンタに照会を行う。フロントサイド・バスが最大データ転送速度で作動していない場合、その機構は、閾値を超えるエンドポイントに対するデータ転送速度の設定値を増加させる。フロントサイド・バスがそれの最大データ転送速度で作動している場合、その機構は、どのエンドポイントがアクティブであるかを決定するためにすべてのエンドポイントに照会を行う。次に、その機構は、不適切な（complaining）エンドポイントよりも低い優先順位にあるエンドポイントが存在するかどうかを決定する。そこで、その機構は、低い優先順位のエンドポイントを１ステップだけ減少させ、不適切なエンドポイントを１ステップだけ増加させる。フロントサイド・バスがそれの最大データ転送速度で作動し且つアクティブな低い優先順位のエンドポイントが存在しない場合、その機構は不適切なエンドポイントだけを切り離す。
【００１２】
１つの実施例では、コンピュータ・プログラム製品としての一例が、コンピュータ可読プログラム(コンピュータ・プログラム)を含むコンピュータ使用可能媒体になり得る。コンピュータ可読プログラムは、それがコンピュータ装置において実行されるとき、事前定義された期間内に生じ得るエラーの数の閾値をそのコンピュータ装置に設定させ、所与のエンドポイントがその閾値を超えるかどうかを決定し、所与のエンドポイントがその閾値を超えることに応答してフロントサイド・バスがそれのデータ転送速度で作動しているかどうかを決定する。コンピュータ可読プログラムは、それがコンピュータ装置において実行されるとき、フロントサイド・バスがそれの最大データ転送速度で作動していない場合に所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値をそのコンピュータ装置に更に増加させる。
【００１３】
或る実施例では、コンピュータ可読プログラムは、更に、それがコンピュータ装置において実行されるとき、フロントサイド・バスがそれの最大データ転送速度で作動している場合に所与のエンドポイントよりも低い優先順位を有する少なくとも１つのアクティブなエンドポイントに対する１つまたは複数のデータ転送速度の設定値をそのコンピュータ装置に更に減少させる。更なる実施例では、コンピュータ可読プログラムは、更に、それがコンピュータ装置において実行されるとき、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値をそのコンピュータ装置に増加させる。
【００１４】
別の実施例では、１つまたは複数のデータ転送速度の設定値が最大メモリ読取りサイズを含み、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させることが、最大メモリ読取りサイズ・パラメータをオン・ザ・フライで増加させることを含む。
【００１５】
更に別の実施例では、１つまたは複数のデータ転送速度の設定値がペイロードを含み、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させることは、所与のエンドポイントにおけるトラフィックを一時的に停止すること、ペイロード・パラメータを増加させること、および所与のエンドポイントにおけるトラフィックを再開することを含む。
【００１６】
別の実施例では、１つまたは複数のデータ転送速度の設定値がレーン・サイズを含み、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させることは、所与のエンドポイントに関連したアプリケーションを一時的に停止すること、所与のエンドポイントに対する装置ドライバを再初期設定すること、およびアプリケーションを再開することを含む。
【００１７】
或る実施例では、所与のエンドポイントが閾値を超えるかどうかを決定することは、所与のエンドポイントからのエラーの数が閾値を超えることをルート・コンプレクスにおいて検出したことに応答して、データ処理システムにおけるファームウェアに割込みを送ることを含む。
【００１８】
更なる実施例では、所与のエンドポイントからのエラーの数が閾値を超えることをルート・コンプレクスにおいて検出したことに応答して、ルート・コンプレクスはそのルート・コンプレクスにおけるレジスタにビットを設定する。所与のエンドポイントが閾値を超えるかどうかを決定することは、レジスタをポーリングすること、およびレジスタにおけるビットが設定されているかどうかを決定することを含む。
【００１９】
別の実施例では、コンピュータ可読プログラムは、それがコンピュータ装置において実行されるとき、更に、フロントサイド・バスの最大データ転送速度をコンピュータ装置に決定させる。更なる実施例では、フロントサイド・バスの最大データ転送速度を決定することは、その最大データ転送速度の値を保存しているそのデータ処理システム内のレジスタから最大データ転送速度の値を受け取ることを含む。別の実施例では、フロントサイド・バスの最大データ転送速度を決定することは、フロントサイド・バスの最大データ転送速度に対応した値を重要プロダクト・データの一部として受け取ることを含む。
【００２０】
別の実施例では、データ処理システムは、ファームウェアと、フロントサイド・バスと、そのファームウェアおよびフロントサイド・バスに接続された複数のエンドポイントとを含む。そのファームウェアは、所定の期間内に生じ得るエラーの数の閾値を設定するように、所与のエンドポイントがその閾値を超えるかどうかを決定するように、および、所与のエンドポイントがその閾値を超えることに応答して、フロントサイド・バスがそれの最大データ転送速度で作動しているかどうかを決定するように、構成される。そのファームウェアは、更に、フロントサイド・バスがそれの最大データ転送速度で作動していない場合、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるように構成される。
【００２１】
或る実施例では、ファームウェアは、更に、フロントサイド・バスがそれの最大データ転送速度で作動している場合、所与のエンドポイントよりも低い優先順位を有する少なくとも１つのアクティブなエンドポイントに対する１つまたは複数のデータ転送速度の設定値を減少させるように構成される。更なる実施例では、ファームウェアは、更に、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるように構成される。
【００２２】
別の実施例では、１つまたは複数のデータ転送速度の設定は最大のメモリ読取りサイズを含み、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させることは最大のメモリ読取りサイズ・パラメータを増加させることを含む。
【００２３】
更に別の実施例では、１つまたは複数のデータ転送速度の設定はペイロードを含み、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させることは、所与のエンドポイントにおけるトラフィックを一時的に停止し、ペイロード・パラメータを増加させ、所与のエンドポイントにおけるトラフィックを再開する。
【００２４】
更に別の実施例では、１つまたは複数のデータ転送速度の設定はレーン・サイズを含み、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させることは、所与のエンドポイントに関連したアプリケーションを一時的に停止すること、所与のエンドポイントに対するレーンをリトレーニングすること、所与のエンドポイントに対する装置ドライバを再初期設定すること、およびアプリケーションを再開することを含む。
【００２５】
或る実施例では、所与のエンドポイントが閾値を超えるかどうかを決定することは、所与のエンドポイントからのエラーの数が閾値を超えることをルート・コンプレクスにおいて検出したことに応答して、データ処理システムにおけるファームウェアに割込みを送ることを含む。
【００２６】
別の実施例では、所与のエンドポイントからのエラーの数が閾値を超えることをルート・コンプレクスにおいて検出したことに応答して、ルート・コンプレクスは、そのルート・コンプレクス内のレジスタにおいてビットを設定する。所与のエンドポイントが閾値を超えるかどうかを決定することは、そのレジスタをポーリングすることおよびそのレジスタにおけるビットが設定されているかどうかを決定することを含む。
【００２７】
更なる実施例では、データ処理システムが、ファームウェアと、フロントサイド・バスと、そのファームウェアおよびフロントサイド・バスに接続された複数のエンドポイントとを含む。ファームウェアは、事前定義された期間内に生じ得るエラーの数の閾値を設定するように、所与のエンドポイントがその閾値を超えるかどうかを決定するように、フロントサイド・バスにおけるパフォーマンス・カウンタに照会するように、フロントサイド・バスの最大データ転送速度を決定するように、および所与のエンドポイントが閾値を超えることに応答して、フロントサイド・バスがそれの最大データ転送速度で作動しているかどうかを決定するように、構成される。ファームウェアは、更に、フロントサイド・バスがそれの最大データ転送速度で作動していない場合、所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるように構成される。ファームウェアは、更に、フロントサイド・バスがそれの最大データ転送速度で作動している場合、所与のエンドポイントよりも低い優先順位を有する少なくとも１つのアクティブなエンドポイントに対する１つまたは複数のデータ転送速度の設定値を減少させるように、および所与のエンドポイントに対する１つまたは複数のデータ転送速度の設定値を増加させるように、構成される。
【００２８】
本発明のこれらのおよび他の特徴および利点が、本発明の実施例に関する以下の詳細な説明において開示され、そのような詳細な説明から見て当業者には明らかになるであろう。
【発明を実施するための最良の形態】
【００２９】
ＰＣＩエキスプレス（ＰＣＩｅ）エンドポイントが単一の仮想チャネルおよびトラフィック・クラスだけをサポートするときでも、データ処理システムの最適なパフォーマンスを得るように、複数のＰＣＩｅアダプタまたは「エンドポイント」全体にわたってフロントサイド・バスの帯域幅を平衡化するための機構を提供する。本実施例の機構は、図１のＰＣＩｅファブリック・トポロジまたは同様のＰＣＩｅファブリック・トポロジを具体化するデータ処理システムにおいて実施される。図２は、本実施例の例示的局面が具体化され得るデータ処理システムの１つの例示的ブロック図として提供される。図２は単なる例示的なものであり、本発明の諸局面または実施例を具体化し得るデータ処理環境に関するあらゆる限定を主張または暗示することを意図するものではない。本発明の主旨および範囲から逸脱することなく、図示の環境に対して多くの修正を行うことが可能である。
【００３０】
次に、図２を参照すると、本実施例の局面を具体化し得る例示的なデータ処理システムのブロック図が示される。データ処理システム２００は、本発明の実施例のためのプロセスを具現化するコンピュータ使用可能コードが設けられるコンピュータの一例である。コンピュータ使用可能コードまたは命令はファームウェアのソフトウェアとして提供される。更に、或る実施例では、その実施例の機構が図２のデータ処理システムのハードウェア素子として提供されることも可能である。
【００３１】
図示の例では、データ処理システム２００は、ノース・ブリッジ兼メモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２およびサウス・ブリッジ兼入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４を含むハブ・アーキテクチャを使用する。処理ユニット２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０がＮＢ／ＭＣＨ２０２に接続される。グラフィックス・プロセッサ２１０は、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ）を介してＮＢ／ＭＣＨ２０２に接続されることも可能である。
【００３２】
図示の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２がＳＢ／ＩＣＨ２０４に接続している。オーディオ・アダプタ２１６、キーボード及びマウス・アダプタ２２０、モデム２２２、読取り専用メモリ（ＲＯＭ）２２４、ハードディスク・ドライブ（ＨＤＤ）２２６、ＣＤ−ＲＯＭドライブ２３０、ユニバーサル・シリアル・バス（ＵＳＢ）ポート及び他の通信ポート２３２、ＰＣＩ／ＰＣＩｅ装置２３４がバス２３８および２４０を介してＳＢ／ＩＣＨ２０４に接続している。ＰＣＩ／ＰＣＩｅ装置は、例えば、イーサネット（登録商標）・アダプタ、アドイン・カード、およびノートブック・コンピュータ用ＰＣカードを含み得る。ＰＣＩはカード・バス・コントローラを使用するが、ＰＣＩｅはそれを使用しない。ＲＯＭ２２４は、例えば、フラッシュ・バイナリ入出力システム（ＢＩＯＳ）であってもよい。
【００３３】
ＨＤＤ２２６およびＣＤ−ＲＯＭ２３０はバス２４０を介してＳＢ／ＩＣＨ２０４に接続している。ＨＤＤ２２６およびＣＤ−ＲＯＭ２３０は、例えば、統合ドライブ・エレクトロニクス（ＩＤＥ）インターフェースまたはシリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）インターフェースを使用し得る。スーパＩ／Ｏ（ＳＩＯ）装置２３６がＳＢ／ＩＣＨ２０４に接続されてもよい。
【００３４】
オペレーティング・システムが処理ユニット２０６において作動する。オペレーティング・システムは、図２におけるデータ処理システム２００内の種々のコンポーネントの制御を調整および提供する。クライアントとしてのオペレーティング・システムは、Microsoft Windows XP のような市販のオペレーティング・システムであってもよい（Microsoft およびWindows は、米国のマイクロソフト社の商標である）。Java プログラミング・システムのようなオブジェクト指向プログラミング・システムが、オペレーティング・システムと関連して作動し得るし、データ処理システム２００において実行されるJava プログラムまたはアプリケーションからオペレーティング・システムへのコールを行う（Java は、米国の Sun Microsystems, Inc. の商標である）。
【００３５】
サーバとしてのデータ処理システム２００は、例えば、アドバンスト・インタラクティブ・エグゼクティブ（ＡＩＸ）オペレーティング・システムまたはＬＩＮＵＸオペレーティング・システムを作動する IBM eServer pSeries コンピュータ・システムであってもよい（IBM、eServer、pSeries、およびＡＩＸは、米国のInternational Business Machines Corporation (IBM Corporation) の商標であり、一方、ＬＩＮＵＸは、米国のLinus Torvalds の商標である）。データ処理システム２００は、処理ユニット２０６内に複数のプロセッサを含む対称マルチプロセッサ（ＳＭＰ）システムであってもよい。それとは別に、シングル・プロセッサ・システムを使用することも可能である。
【００３６】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムの命令はＨＤＤ２２６のような記憶装置に設けられ、処理ユニット２０６による実行のためにメイン・メモリ２０８にロードされ得る。本発明の実施例のプロセスは、例えば、メイン・メモリ２０８、ＲＯＭ２２４のようなメモリ、または、例えば、１つまたは複数の周辺装置２２６および２３０、に設けられるコンピュータ使用可能プログラム・コードを使って、処理ユニット２０６により遂行され得る。
【００３７】
図２に示されるようなバス２３８またはバス２４０のようなバス・システムは１つまたは複数のバスから成る。勿論、バス・システムは、ファブリックまたはアーキテクチャに接続された種々のコンポーネントまたは装置の間でデータの転送を行う任意のタイプの通信ファブリックまたはアーキテクチャを使って実現され得る。図２のモデム２２２またはネットワーク・アダプタ２１２のような通信ユニットは、データを送受信するために使用される１つまたは複数の装置を含み得る。メモリは、例えば、メイン・メモリ２０８、ＲＯＭ２２４、または、図２におけるＮＢ／ＭＣＨ２０２において見られるようなキャッシュであってもよい。
【００３８】
図２におけるハードウェアが実施態様に従って変わり得るということは当業者には明らかであろう。フラッシュ・メモリ、等価の不揮発性メモリ、または光ディスク・ドライブ等のような他の内部ハードウェアまたは周辺装置が、図２に示されたハードウェアに加えて、またはそのハードウェアに代わって使用されてもよい。更に、本実施例のプロセスは、本発明の主旨および範囲を逸脱することなく、前述のＳＭＰシステム以外のマルチプロセッサ・データ処理システムにも適用され得る。
【００３９】
更に、データ処理システム２００は、クライアント・コンピュータ装置、サーバ・コンピュータ装置、タブレット・コンピュータ、ラップトップ・コンピュータ、電話または他の通信装置、パーソナル・デジタル・アシスタント（ＰＤＡ）等を含む多くの種々のデータ処理システムの形式を取り得る。或る例では、データ処理システム２００は、例えば、オペレーティング・システム・ファイルおよび／またはユーザ生成のデータを保存するための不揮発性メモリを提供するためにフラッシュ・メモリによって構成されるポータブル・コンピュータ装置であってもよい。特に、データ処理システム２００は、アーキテクチャ上の制限のない任意の既知のまたは今後開発されるデータ処理システムであってもよい。
【００４０】
本実施例にとって特に重要な点として、図２のデータ処理システム２００は、ファームウェア２９０およびバス・アービタ２９５を含む。バス・アービタ２９５は、バス２３８へのアクセス、従って、ＰＣＩｅファブリック・トポロジのフロントサイド・バスを構成する、ＰＣＩ／ＰＣＩｅ装置２３４によるＮＢ／ＭＣＨ２０２へのアクセスを調停するために使用される。バス・アービタ２９５は、ファームウェア２９０によって行われた、種々のＰＣＩ／ＰＣＩｅ装置２３４に対する操作パラメータの設定に基づいて作動する。ファームウェア２９０は、ＰＣＩ／ＰＣＩｅ装置２３４の全体にわたってバス２３８およびＮＢ／ＭＣＨ２０２の帯域幅を平衡化するために、後述の実施例に従って操作を遂行する。ファームウェア２９０において遂行される機能に関して本実施例を説明するが、本実施例の機能がソフトウェアまたはハードウェアにおいて具体化され得ることは明らかであろう。即ち、その機能を遂行するためのソフトウェア命令は１つまたは複数のプロセッサによって提供され、実行され得る。更に、別の実施例では、この機能を回路で遂行するための１つまたは複数の集積回路が提供され得る。
【００４１】
更なる例として、本実施例の機能はファームウェア２９０の１つまたは複数の層においても提供され得る。例えば、作動中に要求を処理するシステムを起動するＢＩＯＳおよび実時間抽象層が、後述の機能および操作の種々のものまたはそれらの組み合わせを遂行するためにそれぞれ使用され得る。例えば、ＰＣＩｅスロットをパワー・オン／パワー・オフするというオペレーティング・システムによる実時間要求は、実時間抽象サービス（ＲＴＡＳ）によって遂行される機能および操作を管理および制御するハイパーバイザ・レベルのファームウェアと共にＲＴＡＳ部分のファームウェアにより処理され得る。
【００４２】
本実施例は、例えば、ＰＣＩ／ＰＣＩｅ装置２３４であってもよい複数のＰＣＩｅアダプタまたは「エンドポイント」全体にわたってバス帯域幅を平衡化するためのシステムおよび方法を提供する。本実施例の機構は、ＰＣＩｅアダプタ／エンドポイントのパフォーマンスが保証され得ない可能性を最小にし且つアイソクロナスＰＣＩｅアダプタ／エンドポイントによる問題点を最小にしながら、フロントサイド・バス、例えば、バス２３８およびＮＢ／ＭＣＨ２０２の使用可能な帯域幅の使用を最大にするように、ＰＣＩｅアダプタ／エンドポイントの操作パラメータを設定するために提携して自動的に作動するファームウェア、ハードウェアまたはソフトウェア機構およびデータ構造を含む。
【００４３】
本実施例は、ＰＣＩｅエンドポイント全体にわたって平衡化した帯域幅を提供するようにＰＣＩｅに対するデータ転送速度を調節するための３つの方法が基本的に存在するという事実を利用する。帯域幅を平衡化するための１つのオプションは、ＰＣＩｅエンドポイントのレーンの数、例えば、ｘ１、ｘ２、ｘ４、ｘ８、またはｘ１６を調節することである。これらのレーンは、より大きなサイズのパイプが、任意の所与の時間に送られ得るデータ・フローより大きなデータ・フローを提供するという、データ・パイプのようなものである。現在の技術では、ＰＣＩｅエンドポイントの各レーンが各方向に２５０Ｍバイト／秒で送ることができる。従って、ｘ８エンドポイント、即ち、８個のレーンを有するエンドポイントは、各方向に２Ｇバイト／秒で送ることができる。
【００４４】
帯域幅平衡化のために帯域幅を調節し得る第２の方法は、最大のペイロード設定値を調節することである。ＰＣＩｅは、ペイロードを搬送するデータ・パケットを介してデータを送る。これらのペイロードの最大サイズは、データがバスを通して伝送される転送速度を増加または減少するように調節され得る。例えば、ＰＣＩｅデータ・パケットに対する最大ペイロードは、所望の帯域幅使用量に従って１２８、２５６、５１２、１０２４、２０４８、または４０９６バイトに設定され得る。
【００４５】
帯域幅平衡化のために帯域幅を調節し得る第３の方法は、最大のメモリ読取りサイズ（ＭＭＲＳ）を調節することである。ＭＭＲＳは、エンドポイントが所与の時間にメイン・メモリから要求し得るデータの最大量であり、例えば、６４、１２８，２５４、５１２、１０２４，２０５６、または４０９６バイトであってもよい。ＭＭＲＳを修正することによって、ＰＣＩｅエンドポイントが所与の時間にメイン・メモリから読取られるデータの量を効果的に変更することが可能となる。これらの操作上のパラメータ、レーンの数、ペイロード・サイズ、およびＭＭＲＳは、ＰＣＩｅエンドポイントの帯域幅使用量がフロントサイド・バス２３８およびＮＢ／ＭＣＨ２０２の使用可能な帯域幅を超えるときでも、データ処理システムの最適なパフォーマンスを得るよう種々のＰＣＩｅエンドポイントの帯域幅使用量を調節するために、ユーザ選択の帯域幅平衡化レベル、エンドポイントの優先順位、エンドポイントの最小データ転送速度、およびエンドポイントのアイソクロナス要件と共に、本発明の機構によって使用される。
【００４６】
１つの実施例では、２つのテーブル・データ構造が、ファームウェア２９０に関連したメモリ（図示されていない）に設けられ、ＰＣＩｅアダプタ／エンドポイント（以後、単に「エンドポイント」と呼ぶ）の操作パラメータを、それらのエンドポイントの合計最大および／または最小データ転送速度とフロントサイド・バスに対する最大データ転送速度、例えば、フロントサイド・バス２３８およびＮＢ／ＭＣＨ２０２の帯域幅との比較に基づいて、調節するためにファームウェア２９０によって利用される。第１テーブル・データ構造は、最大メモリ読取りサイズ（ＭＭＲＳ）、ペイロード、およびレーン設定の組み合わせに対するデータ転送速度を示す三次元テーブルを含む。この第１テーブル・データ構造は、更に、後述するように、アイソクロナスＰＣＩｅエンドポイントにとって重要である、データ転送を完成するために要する時間（ナノ秒で表された時間）の長さを識別する。
【００４７】
第２テーブル・データ構造は、データ処理システムがそれらの関連の最小データ転送速度および優先順位をサポートするＰＣＩｅエンドポイント・タイプのリストを含む。第２第２テーブル・データ構造は、更に、どのＰＣＩｅエンドポイント・タイプがアイソクロナス要件、例えば、ｘの時間量ごとにストリーム・ビデオ・データへのアクセスを必要とするビデオＰＣＩｅエンドポイント・タイプ、を有するかを指摘する。これらのテーブル・データ構造はス−パ・アドミニストレータ、即ち、典型的なアドミニストレータ、例えば、ＰＣＩｅにおけるバックグラウンドを持つ技術者または研究助手を超える知識を持ったアドミニストレータ、によって提供され、修正され得る。
【００４８】
更に、特定のデータ処理システムにおいて本実施例の機構を実施する所望レベルの設定値が、操作パラメータを調節する方法を決定するために識別され、使用される。所望レベルの設定値は、例えば、ファームウェア２９０によってアクセス可能なデータ処理システムの不揮発性メモリに保存され得る。この所望レベルの設定値は、例えば、ＢＩＯＳメニュー等からオペレーティング・システムを介して設定され得る。所望レベルの設定値を保存し、それをファームウェア２９０に提供するための別の機構が、本発明の主旨および範囲から逸脱することなく使用されてもよい。
【００４９】
そのような所望レベルの例として、システム管理者は、一組の事前定義されたレベル、例えば、高（Ｈ）、中間（Ｍ）、または低（Ｌ）から使用のための特定のレベルを選択し得る。Ｈレベルの設定は、ファームウェアがすべてのエンドポイントをそれらの最大データ転送速度レベルに設定することを指定するために使用され、それによって本実施例の機構が帯域幅を平衡化することを効果的にディセーブルし得る。Ｌレベルの設定は、ファームウェアがエンドポイントのデータ転送速度レベルを、それらエンドポイントの合計データ転送速度がフロントサイド・バスの最大データ転送速度のレベルに適合するよう、調節しなければならない、ということを指定するために使用することが可能である。Ｍレベルの設定は、エンドポイントの合計データ転送速度が、フロントサイド・バスの最大データ転送速度を超えるがすべてのエンドポイントの合計最大データ転送速度よりも少ない１つの選択された値に照合するよう、ファームウェアがエンドポイントのデータ転送速度レベルを調節するべきである、ということを指定するために使用され得る。例えば、データ転送速度は、フロントサイド・バスの最大データ転送速度の２倍、フロントサイド・バスの最大データ転送速度の３倍、或いはフロントサイド・バスの最大データ転送速度の他の数倍または非整数倍に設定され得る。
【００５０】
これらのテーブル・データ構造およびユーザ選択の平衡レベル、例えば、Ｈ、Ｍ、またはＬは、ＰＣＩｅエンドポイント全体にわたってバスの帯域幅の平衡化を調節するために使用される。ファームウェアによる帯域幅の平衡化は、例えば、データ処理システムへのＰＣＩｅエンドポイントの追加に応答して、または、本実施例の帯域幅平衡化を行うためのシステム・アドミニストレータ・コマンドに応答して、または、データ処理システムの検出された状態、例えば、必要なレベルに適合しないデータ・スループットのような所望のパフォーマンス・レベルに応答して、または、特定のイベントの発生に応答して、または、帯域幅平衡化操作のスケジュール等に応答して、例えば、データ処理システムの初期設定時に遂行されてもよい。一旦、帯域幅平衡化操作が遂行されることが決定されると、本実施例の機構は、図３に関して後述されるように、ＰＣＩｅエンドポイント全体にわたってフロントサイド・バスの帯域幅を平衡化するように作動する。
【００５１】
エンドポイントは、ルート・コンプレクスと直接にコミュニケーションを行う。ルート・コンプレクスは、組込み型トレース機構およびパフォーマンス・カウンタを有する。ルート・コンプレクスは、送信および受信トラフィックのために特定のエンドポイントにより所与の時間に如何なる量のデータ転送速度が送られたかを追跡することが可能である。ルート・コンプレクスはフロー制御データのトレースも保持し得る。フロー制御は、コミュニケーションを行うためにエンドポイントおよびルート・コンプレクスによって使用される機構である。フロー制御データを使用して、エンドポイントおよびルート・コンプレクスは、それらが有する使用可能な数の制御クレジットを介して転送するためにそれらが有する使用可能なバッファ・スペースの量を相互に知らせる。
【００５２】
ルート・コンプレクスは、どのくらい頻繁にそれらがバッファ・スペースを使い尽くすか、どんな速度でフロー制御クレジットが消費されるか、どのくらい頻繁にそれらがフロー制御クレジットを使い尽くすか等を追跡するようにプログラムされ得る。特殊化されたエンドポイントを、同様の特性を用いて設計することも可能である。この場合、エンドポイントは、そのエンドポイントがそれのデータ転送速度要件に追従し得ないとき、メッセージ・コマンドを用いてルート・コンプレクスに知らせることも可能である。
【００５３】
大きな時間セグメントにわたって大きなデータ転送を持続している間、ルート・コンプレクスおよびエンドポイントが、時には、これらのバッファ状態および／またはクレジット限界の１つにヒットすることがある。これは、エラーとして報告されることもある。本実施例によれば、これらのエラーが頻繁に生じる場合、１つの機構が帯域幅を動的に平衡化することも可能である。
【００５４】
従って、本実施例によれば、アドミニストレータは、動的モードをイネーブルまたはディセーブルするためのオプションを有する。例えば、動的モードは、上述の高レベルの設定に関連してイネーブルされ得る。動的モードでは、その機構は、所定の期間内に生じ得るエラーの閾値を設定する。或るエンドポイントがその閾値を超える場合、その機構はエラーの通知を受け取る。ファームウェアは、閾値状態を処理する責任を負う。１つ実施例では、ルート・コンプレクスが、閾値が超えられたことをファームウェアに知らせるためにファームウェアに割り込みを送り得る。別の実施例では、ルート・コンプレクスが閾値状態に関するビットをレジスタに設定し得る。そこで、ファームウェアは、そのビットが設定されているかどうかを決定するために或る設定されたインターバルでこのレジスタをポーリングし得る。
【００５５】
或るエンドポイントが閾値を超える場合、その機構は、フロントサイド・バスがそれの最大データ転送速度で作動しているかどうかを決定するためにフロントサイド・バス・パフォーマンス・カウンタに照会を行う。フロントサイド・バスがそれの最大データ転送速度で作動していない場合、その機構はエンドポイントに対するデータ転送速度の設定値を１ステップだけ増加させる。その機構は、ＭＭＲＳ、ペイロード、またはレーン・サイズを使用してデータ転送速度を上げ得る。その機構がＭＭＲＳを増加させる場合、その機構はデータ転送速度の増加をオン・ザ・フライで行うことができる。その機構がペイロードを増加させる場合、その機構はエンドポイントにおけるトラフィックを一時的に停止させ、ペイロードの更新後にエンドポイントを再開させ得る。その機構がレーン・サイズを増加させる場合、その機構は、エンドポイントを停止させ、レーンをリトレーニングし、しかる後、装置ドライバを再初期設定してアプリケーションを再開させる。
【００５６】
フロントサイド・バスが最大データ転送速度で作動している場合、その機構は、どのエンドポイントがアクティブであるかを決定するためにすべてのエンドポイントに照会を行う。その機構は、いずれかのアクティブなエンドポイントが、閾値を超えるエンドポイントである不適切なエンドポイントよりも低い優先順位にあるかどうかを決定する。低い優先順位のアクティブなエンドポイントが存在する場合、その機構は、その低い優先順位のエンドポイントのデータ転送速度を１ステップ減少させ、不適切なエンドポイントのデータ転送速度を１ステップ増加させる。低い優先順位のアクティブなエンドポイントが存在しない場合、その機構は不適切なエンドポイントを放置する。これは、最終的に不適切なすべてのエンドポイントを無効にするか、すべてのエンドポイントを最終的には最大レベルにさせる。
【００５７】
低い優先順位のエンドポイントに対して、これは十分に機能する。フロントサイド・バスが最大レベルで作動しており且つエンドポイントがそれらの速度を増加させようとする場合、それらはそれを増加させることができない。しかし、フロントサイド・バスが最大レベルで作動していない場合、エンドポイントはそれらのデータ転送速度を増加させることができる。これは、その日のうちの或る時点では、或るトラフィック・タイプが他のトラフィック・タイプよりも大きい場合（イーサネット（登録商標）を介したウェブ・サーフィン対ファイバ・チャネルを介したテープ・バックアップ）を考慮している。
【００５８】
システムが、１つのトラフィック・タイプだけが作動している期間内にあるときおよびその後、すべてのトラフィックが作動している期間にシステムが移行する場合、その機構は、種々のエンドポイントによって要求された一連の調節に成功するであろうし、最終的には、より高い優先順位のエンドポイントが増加させられ、より低い優先順位のエンドポイントが減少させられることがあるということになるであろう。その後、トラフィックが全体的に低下している時間にわたって、低い優先順位のエンドポイントは、フロントサイド・バスが最大でないときにも、増加し得る。制御されたフィードバック環境が、現時点の要求に適合するようデータ・フローを連続的且つ動的に平衡化するために生じ得る。
【００５９】
図３は、本実施例の主要な操作コンポーネントの例示的なブロック図である。図３に示されるように、ファームウェア３１０は、第１テーブル・データ構造記憶装置３２０、第２テーブル・データ構造記憶装置３３０、ユーザ帯域幅平衡化レベル記憶装置３４０、およびＰＣＩｅエンドポイント３６０〜３６４のファームウェアに関連した構成データ構造記憶装置３５０〜３５４に関連して作動し、操作パラメータ、例えば、ＰＣＩｅエンドポイント３６０〜３６４のペイロード、レーン、ＭＭＲＳ、を修正してＰＣＩｅエンドポイント３６０〜３６４全体にわたりフロントサイド・バス３７０の帯域幅を平衡化させる。
【００６０】
作動時に、ファームウェア３１０は、フロントサイド・バス３７０に対する最大データ転送速度を決定する。フロントサイド・バス３７０に対する最大データ転送速度は、例えば、最大データ転送速度値を保存し且つファームウェア３１０によってアクセスし得るデータ処理システムのレジスタを読取ることによって決定することが可能である。別の実施例では、フロントサイド・バス３７０に対する最大データ転送速度が、システム重要プロダクト・データ（ＶＰＤ）を介してシステムに送り込まれることも可能である。例えば、システムＶＰＤはフロントサイド・バス３７０のバス速度を識別する。このバス速度から、ファームウェア３１０は最大データ転送速度を決定し得る。これとは別に、システムＶＰＤは最大データ転送速度そのものを識別することも可能である。本発明の主旨および範囲から逸脱することなく、フロントサイド・バス３７０に対して最大データ転送速度を提供するための別の機構が使用されてもよい。
【００６１】
フロントサイド・バス３７０の最大データ転送速度を識別すると、ファームウェア３１０は、現時点で接続されているＰＣＩｅエンドポイント３６０〜３６４のすべてに対して照会を行い、構成データ構造記憶装置３５０〜３５４からの各ＰＣＩｅエンドポイントのレーン、ＭＭＲＳ、およびペイロードの最大数がどのようなものであるかを決定する。ＰＣＩｅスロットがパワー・オンされ、バス幅がハードウェア機構を介して折衝されるとき、レーンの数またはレーン・サイズが決定され得る。ファームウェア３１０は、例えば、このシステムにおいて提供される標準ホットプラグ・コントローラ（ＳＨＰＣ）を読取ることによってレーンの数またはレーン・サイズの現在値を識別し得る。ファームウェア３１０は、ＰＣＩｅスロットを構成し得る最大のレーン・サイズを設定するようにＳＨＰＣレジスタを修正することによって、レーンの数またはレーン・サイズが修正され得るし、従って、ファームウェア３１０は、このときには、レーンの数またはレーン・サイズにおける限界に関して折衝を強いるために、ＳＨＰＣレジスタを介してスロットの再構成を強いることもある。ＭＭＲＳおよびペイロード設定は、ファームウェア３１０によって初期設定された工業標準のＰＣＩレジスタである。
【００６２】
次に、ファームウェア３１０は、各ＰＣＩｅエンドポイント３６０〜３６４に対する最大データ転送速度を決定するために、第１テーブル・データ構造記憶装置３２０に保存されたペイロード、レーンの数、およびＭＭＲＳのような操作パラメータの組み合わせにデータ転送速度をマップする第１テーブル・データ構造を使用する。ＰＣＩｅエンドポイント３６０〜３６４の各々に対する最大データ転送速度は、ＰＣＩｅエンドポイント３６０〜３６４の構成データ構造記憶装置３５０〜３５４から検索された最大レーンの値、ＭＭＲＳの値、およびペイロードの値に基づいて決定される。ＰＣＩｅエンドポイント３６０〜３６４の各々に対する最大データ転送速度は、すべてのＰＣＩｅエンドポイント３６０〜３６４に対する合計最大データ転送速度を生成するように合計または総和され得る。
【００６３】
すべてのＰＣＩｅエンドポイント３６０〜３６４に対する合計最大データ転送速度を決定してしまうと、ファームウェア３１０は、すべてのＰＣＩｅエンドポイント３６０〜３６４に対する最大データ転送速度を、ファームウェア３１０によって決定されたようなフロントサイド・バス３７０に対する最大データ転送速度に比較する。すべてのＰＣＩｅエンドポイント３６０〜３６４に対する合計最大データ転送速度がフロントサイド・バス３７０に対する最大データ転送速度よりも低いかまたはそれに等しい場合、すべてのＰＣＩｅエンドポイントの操作パラメータが、最大データ転送速度に対応するそれらの値に設定される。即ち、ＰＣＩｅエンドポイントに対する最大データ転送速度に対応したペイロード、レーンの数、およびＭＭＲＳに関する第１テーブル・データ構造における設定値が、それぞれの構成データ構造記憶装置３５０〜３５４おけるＰＣＩｅエンドポイント３６０〜３６４の操作パラメータを設定するために使用される。各ＰＣＩｅエンドポイント３６０〜３６４は、この操作を通して、それらの個々の最大データ転送速度に基づいた操作パラメータの異なる設定値を有することがある、ということに留意されたい。
【００６４】
すべてのＰＣＩｅエンドポイント３６０〜３６４に対する最大データ転送速度がフロントサイド・バスの最大データ転送速度を超える場合、ユーザによって選択されたレベル、即ち、ユーザ帯域幅平衡化レベル記憶装置３４０に保存されたユーザ選択の帯域幅平衡レベル、がＰＣＩｅエンドポイント３６０〜３６４間のフロントサイド・バス３７０の帯域幅を平衡化する方法を決定するために検索および使用される。
【００６５】
ユーザ、例えば、システム・アドミニストレータが高（Ｈ）操作レベルを選択した場合、すべてのＰＣＩｅエンドポイント３６０〜３６４がそれらの最大データ転送速度を使用するように設定される。ユーザが高（Ｈ）操作レベルを選択しなかった場合、各ＰＣＩｅエンドポイント３６０〜３６４に対する最小データ転送速度がどのようなものであるかを決定するために、第２テーブル・データ構造記憶装置３３０における第２テーブル・データ構造が調べられる。特定のＰＣＩｅエンドポイント３６０〜３６４が第２テーブル・データ構造に存在しない場合、ＰＣＩｅエンドポイント３６０〜３６４における工業標準のレジスタから検索され得るそのＰＣＩｅエンドポイント３６０〜３６４に関連したクラス・コードが、第２テーブル・データ構造において表された同様のＰＣＩｅエンドポイントとそれを突き合わせるために使用することが可能である。同様のＰＣＩｅエンドポイントがクラス・コードに基づいて見つからなかった場合、最小データ転送速度がＰＣＩｅエンドポイント３６０〜３６４に対する最大データ転送速度であると仮定し得るが、ＰＣＩｅエンドポイント３６０〜３６４の優先順位は、ＰＣＩｅエンドポイント３６０〜３６４がデータ処理システムによってサポートされない優先順位であるので、低い優先順位に減少させられる。
【００６６】
すべてのＰＣＩｅエンドポイント３６０〜３６４に対する最小データ転送速度は、総和され、フロントサイド・バス３７０の最大データ転送速度と、帯域幅平衡化機構の操作レベルのユーザ選択とに基づいて決定されるフロントサイド・バス３７０の最大データ転送速度と比較するために使用され得る。例えば、すべてのＰＣＩｅエンドポイント３６０〜３６４に対する合計最小データ転送速度がフロントサイド・バス３７０の最大データ転送速度に等しいかまたはそれよりも小さいかどうか、或いはフロントサイド・バス３７０の最大データ転送速度の２倍に等しいかまたはそれよりも小さいかどうかに関してファームウェア３１０による決定が行われ得る。すべてのＰＣＩｅエンドポイント３６０〜３６４に対する合計最小データ転送速度がフロントサイド・バス３７０のデータ転送速度の対応するレベルに等しいかまたはそれよりも小さい場合、そのデータ転送速度は受容可能であり、第１テーブル・データ構造が、その最小データ転送速度に基づいて、ＰＣＩｅエンドポイント３６０〜３６４によって使用されることになるペイロード、ＭＭＲＳ、およびレーンに対する設定値を識別するために使用される。そこでファームウェア３１０は、各ＰＣＩｅエンドポイント３６０〜３６４の構成データ構造記憶装置３５０〜３５４における構成設定を修正する方法を決定するために、これらの操作パラメータを使用し得る。ＰＣＩｅエンドポイント３６０〜３６４の構成に対する修正は、主に、レーンの変更がエンドポイントのリセットおよびリトレーニングを必要とするので、ＭＭＲＳまたはペイロード・パラメータを使って遂行される。
【００６７】
すべてのＰＣＩｅエンドポイント３６０〜３６４に対する合計最大データ転送速度がフロントサイド・バス３７０の設定されたレベルのデータ転送速度よりも低くないかまたはそれに等しい場合、ＰＣＩｅエンドポイント３６０〜３６４の受容可能なパフォーマンスを得るために使用可能な多くのオプションが存在する。第１オプションとして、すべてのＰＣＩｅエンドポイント３６０〜３６４に対する合計最小データ転送速度がフロントサイド・バス３７０の設定されたレベルのデータ転送速度よりも小さいかどうかに関係なく、ＰＣＩｅエンドポイント３６０〜３６４の最小データ転送速度に基づいて第１テーブル・データ構造から決定された操作パラメータを使って、ＰＣＩｅエンドポイント３６０〜３６４の構成がファームウェア３１０によって設定され得る。データ処理システムの所望のパフォーマンスが得られることを保証するためのステップをアドミニストレータが取り得るよう、問題点を表すエラー・メッセージがアドミニストレータに送られてもよい。
【００６８】
第２オプションとして、未知のまたは未支援のエンドポイントがそのリストにおける最低の優先順位にリストされることによって、優先順位でランク付けされた順序でＰＣＩｅエンドポイント３６０〜３６４をリストする優先順位リストが生成される。そこで、ファームウェア３１０は、各ＰＣＩｅエンドポイント３６０〜３６４に対するリソース、即ち、帯域幅を削減するように作動し得る。この場合、減少したパーセンテージは、ＰＣＩｅエンドポイント３６０〜３６４が優先順位リスト内のどこにあるかに基づいている。この削減操作は、所望の目的が達成されるまで、例えば、ＰＣＩｅエンドポイント３６０〜３６４の合計データ転送速度がフロントサイド・バス３７０の設定されたレベルのデータ転送速度に等しくなるかまたはそれよりも低くなるまで行われ得る。実施例によっては、ＰＣＩｅエンドポイントのリソースが削減され得る量は、それの最小データ転送速度に関連する特定の量、例えば、ＰＣＩｅエンドポイントの最小データ転送速度の半分、に限定されてもよい。実施例によっては、ＰＣＩｅエンドポイント３６０〜３６４のリソースは、フロントサイド・バス３７０の設定されたレベルのデータ転送速度、例えば、フロントサイド・バス３７０の設定されたレベルのデータ転送速度の２倍（Ｌの設定の場合）、またはフロントサイド・バス３７０の設定されたレベルのデータ転送速度の４倍（Ｍの設定の場合）における増加と共に、上述の方法で削減され得る。これは、最大データ転送速度よりも低く制限されているが未だＬまたはＭのフロントサイド・バス３７０の限界まで下がってはいないＰＣＩｅエンドポイント３６０〜３６４の間の妥協を可能にする。これらの実施例のいずれにおいても、データ処理システムの所望のパフォーマンスが得られることを保証するためにアドミニストレータがステップを取り得るよう、その問題点を表すエラー・メッセージがアドミニストレータに送られることが可能である。
【００６９】
アイソクロナスＰＣＩｅエンドポイント３６０〜３６４に関して、そのＰＣＩｅエンドポイント３６０〜３６４は高いデータ転送速度を望んだり或いは望まなくたりするが、いずれの場合も、或るデータ転送速度要件に適合するための予測可能な時間を望む。例えば、アイソクロナスＰＣＩｅエンドポイント３６０〜３６４は、そのＰＣＩｅエンドポイント３６０〜３６４が特定のタイム・フレーム内にダイレクト・メモリ・アクセス（ＤＭＡ）書込みまたは読取り操作を完了することを要求することがある。
【００７０】
ＰＣＩｅエンドポイント３６０〜３６４がフロントサイド・バス３７０へのアクセスを直ちに得ることを可能にする１つの方法は、ＰＣＩｅエンドポイント３６０〜３６４が他の非アイソクロナスＰＣＩｅエンドポイント３６０〜３６４を超える優先順位を持つことを可能にすることによるものである。もう１つの方法は、他の非アイソクロナスＰＣＩｅエンドポイント３６０〜３６４が長いデータ転送に対してはフロントサイド・バス３７０を使用しないようにすることである。データ転送の長さは、ペイロードのサイズに依存する。特定のペイロードを転送するための時間は予測可能な時間である。
【００７１】
従って、本実施例の機構の場合、一旦ファームウェア３１０が上記の方法でデータ転送速度を設定すると、ファームウェア３１０はアイソクロナス問題のための調節を行い得る。上記のように、第２テーブル・データ構造は、ＰＣＩｅエンドポイント・タイプが存在する場合、どのＰＣＩｅエンドポイント・タイプがアイソクロナスであるかを識別する情報を含む。本実施例のファームウェア３１０は、現在インストールされているＰＣＩｅエンドポイント３６０〜３６４のうちのどれが、例えば、ＰＣＩｅエンドポイント３６０が、アイソクロナス問題を持っているかを決定するために第２テーブル・データ構造をチェックし得る。アイソクロナス問題を有するＰＣＩｅエンドポイント３６０が見つかったと仮定すると、ファームウェア３１０は、ＰＣＩｅエンドポイント３６０に対する最小時間要件がどのようなものであるか、およびＰＣＩｅエンドポイント３６０の優先順位がどのようなものであるかを決定するために第２テーブル・データ構造をチェックする。
【００７２】
ＰＣＩｅエンドポイント３６０が現在インストールされているすべてのＰＣＩｅエンドポイント３６０〜３６４に対して最高の優先順位を有する場合、およびシステムがＰＣＩｅエンドポイント３６０〜３６４の優先順位設定値をサポートする場合、このＰＣＩｅエンドポイント３６０が常に優先権を得るようにバス・アービタ３９０が設定される。第１テーブル・データ構造における情報に基づいて、各ペイロード・サイズがフロントサイド・バス３７０全体にわたって処理されるためにはどのくらいの長さが必要であるかといことは分かっている。ペイロードを処理するための時間は、第１テーブル・データ構造から得られる値に基づいて計算することが可能である。別の方法として、ペイロードを処理するための時間は、第１テーブル・データ構造から検索された情報に基づいて、経験的に得られた処理時間値のルックアップ操作を行うことによって決定することが可能である。
【００７３】
フロントサイド・バス全体にわたって各ペイロード・サイズが処理されるために必要な時間を決定すると、このＰＣＩｅエンドポイント３６０がそれのアイソクロナス要件に適合するための時間内に他のＰＣＩｅエンドポイント３６０〜３６４が完了することを可能にするためには、理想的なペイロード・サイズはどのようなものであるかを決定することが可能である。例えば、第１ＰＣＩｅエンドポイントまたはアダプタ、即ち、アダプタＡは、ＰＣＩｅエンドポイントまたはアダプタＢ、Ｃ、およびＤがそれらのパケットを、それがフロントサイド・バス３７０をアクセスする前に、送るのを待たなければならないものと仮定する。従って、アダプタＡは、ヘッダ、ペイロード、巡回冗長検査（ＣＲＣ）値を処理するための期間、およびフロントサイド・バス３７０に対するアービトレーションを行うための期間を待たなければならない。１つの例として、ヘッダは１２〜１６バイトであり、ＣＲＣ値は４バイトであり、アービトレーションは２クロック・サイクルであってもよい。アービトレーション期間を考慮しないと、アダプタＡは、ペイロード＝４０９６と共に１２３３６バイトを送るに要する時間、またはペイロード＝１２８と共に４３２バイトを送るために要する時間、を待たなければならないであろう。この多くのペイロード・データを送るために必要な時間も、レーンの数またはレーン・サイズに依存する。従って、理想的なペイロード・サイズは決定的なものであり、計算可能なものである。アービトレーションを計算に含むことは、アイソクロナス要件が適合されるということを確実にするための設定、即ち、アダプタＡが他のアダプタより上の優先順位を得るかどうか、アービトレーションがラウンドロビンで遂行されるかどうか等、の更なる可能な組み合わせを追加する。
【００７４】
理想的なペイロード・サイズを決定すると、ファームウェア３１０は、他のＰＣＩｅエンドポイント３６０〜３６４のいずれも、それらのペイロード・サイズを理想的なペイロード・サイズよりも高い値に設定されているかどうかを決定し得る。それらがそのように設定されている場合、第１テーブル・データ構造は、それらのＰＣＩｅエンドポイント３６０〜３６４に対するレーンの数が修正され得るかどうか、ＭＭＲＳ設定値が修正され得るかどうか、および／または、ペイロード設定値が、この低いペイロードを有するＰＣＩｅエンドポイント３６０〜３６４に対する最小データ転送速度にこれまでどおり適合する値に修正され得るかどうかを知るために調べられる。これらの結果が肯定的である場合、ＰＣＩｅエンドポイント３６２〜３６４に対する設定値がそのように調節される。１つのペイロードを大量に使用し過ぎたＰＣＩｅエンドポイント３６０〜３６４が、アイソクロナス問題を有するＰＣＩｅエンドポイント３６０よりも低い優先順位のものである場合、その低い優先順位のＰＣＩｅエンドポイント３６０〜３６４のペイロード・サイズが第１インクリメント量だけ低下させられる。
【００７５】
１つのペイロードを大量に使用し過ぎたＰＣＩｅエンドポイント３６０〜３６４が、アイソクロナス問題を有するＰＣＩｅエンドポイント３６０よりも高い優先順位のＰＣＩｅエンドポイントである場合、それのペイロード設定値は、それがアイソクロナスＰＣＩｅエンドポイント３６０よりも高い優先順位を有するので、修正されない。理想的には、アイソクロナスＰＣＩｅエンドポイント３６０が非アイソクロナスＰＣＩｅエンドポイント３６０〜３６４よりも高い優先順位を有するであろうし、従って、この状況は滅多にないであろう。
【００７６】
或る実施例では、動的モードをイネーブルするために、アドミニストレータがユーザ帯域幅平衡化レベル記憶装置３４０にオプションを設定し得る。上述のように、動的モードは、例えば、高レベル設定に関連してイネーブルされ得る。更に、アドミニストレータは、エンドポイントがリトレーニングすることを許されないモードを設定し得る。この場合、ファームウェア３１０は、エンドポイントに対するペイロードおよびＭＭＲＳを調節することを許されるであろうが、レーン・サイズの変更を行わないであろう。このオプションは、アプリケーションが中断することを防ぐ。記憶装置３４０におけるデフォルト設定は、例えば、エネーブルされた動的モードおよびディセーブルされたリトレーニングを伴う高レベルへのものであってもよい。アプリケーションが停止および開始されることをアドミニストレータが気にしない場合、アドミニストレータはリトレーニングをイネーブルし得る。スーパ・アドミニストレータは、第１テーブル・データ構造記憶装置３２０、第２テーブル・データ構造記憶装置３３０、または、事前定義された期間内に許されたエラーに対する閾値を修正するためにバック・ドアも使用し得る。
【００７７】
スーパ・アドミニストレータによりアクセス可能な動的モードに関する更なるオプションは、優先順位が時刻によって設定され得るエンドポイントのリストであることもある。例えば、イーサネット（登録商標）・トラフィックが午前４:００から午前１:００まで最高の優先順位として設定され得るし、ファイバ・チャネルが午前１:００から午前４:００まで最高の優先順位として設定され得る。この特定の例は、サーバが午前１:００における開始をバックアップされる場合であろう。その場合、アドミニストレータは、できるだけ早くバックアップが完了することを望むことが可能である。別の実施例では、ファイバ・チャネル・エンドポイントが直ちに閾値レベルをトリップし、最大データ転送速度に急速にアップグレードされ得るよう、スーパ・アドミニストレータがファイバ・チャネル・エンドポイントに対する期間中閾値を低く設定することが可能である。
【００７８】
図４〜図８は、本実施例に従ってＰＣＩｅエンドポイント全体にわたって帯域幅を平衡化するための操作パラメータの可能な組み合わせを識別するための第１の三次元テーブル・データ構造の概略図である。三次元テーブル・データ構造を視覚化することは難しいので、図４〜図８は、ＰＣＩｅエンドポイントの読取り操作のための三次元テーブル・データ構造を生成するように結合され得る一連の二次元テーブルとして提供される。図４は、三次元テーブル・データ構造を生成するように図５〜図８を三次元態様で結合し得る方法を示す。図５〜図８に示された二次元テーブル・データ構造の各々は、ＰＣＩｅエンドポイント、例えば、ｘ１、ｘ２、ｘ４、またはｘ８によってサポートされる種々のレーンの数またはレーン・サイズに対するものである。
【００７９】
図９は、ＰＣＩｅエンドポイントの書込み操作のために使用し得る二次元テーブル・データ構造の一例として提供される。ＭＭＲＳは異なる書込み操作のデータ転送速度を得るために変更され得ない最大メモリ読取りサイズを参照するので、書込み操作に対しては種々のデータ転送速度を達成するために変更され得る２つのパラメータ、即ち、ペイロード・サイズおよびレーンの数、しか存在しないため、書込み操作のための単一の二次元テーブル・データ構造が示される。これらのテーブル・データ構造の設定値は、所望のデータ転送速度を達成するための種々の設定値を表す１つまたは複数の曲線の三次元プロットを提供するように結合され得る。
【００８０】
図４〜図９のテーブルは、特定のデータ転送速度の目標が、複数のオプションを使用することによって達成され得ることを示す。例えば、１７６０Ｍバイト／秒のデータ転送速度が必要とされる場合、そのデータ転送速度を得るための根拠として、設定の種々の組み合わせが使用され得る。例えば、８レーン（図８におけるｘ８）、２５６バイトのペイロード・サイズ、および４０９６バイトのＭＭＲＳを含む設定の組み合わせを利用することが可能である。同様に、８レーン、５１２バイトのペイロード・サイズ、および５１２バイトのＭＭＲＳの組み合わせを使用することが可能である。ＰＣＩｅエンドポイント全体のわたって帯域幅を広げるためには５１２バイトのＭＭＲＳおよび５１２バイトのペイロード・サイズが望ましいかもしれない。しかし、アイソクロナスの理由で、もっと小さいペイロード・サイズがよいことがあり、従って、特定の構成に対してアイソクロナス問題が存在する場合、４０９６バイトのＭＭＲＳおよび２５４バイトの更に小さいペイロード・サイズを使用することも可能である。
【００８１】
図１０は、サポートされるＰＣＩｅエンドポイントおよびそれらのＰＣＩｅエンドポイントがアイソクロナス要件を有するかどうかを識別するための第２テーブル・データ構造を表す例示的な表である。図１０が単なる例示であること、およびサポートされるＰＣＩｅエンドポイントおよびアイソクロナス要件の識別が多くの種々の方法で遂行され得ることは明らかであろう。従って、本発明の主旨および範囲から逸脱することなく、図１０に示された表に対する多くの修正を施すことも可能である。
【００８２】
図１０における第２テーブル・データ構造５００は、数ある情報の中で、ＰＣＩｅエンドポイントの優先順位レベル５１０、ＰＣＩｅエンドポイントのクラス５２０およびサブクラス５３０、ＰＣＩｅエンドポイントに対する理想的なデータ転送速度５４０、ＰＣＩｅエンドポイントに対する最小データ転送速度５５０、並びに、ＰＣＩｅエンドポイントがアイソクロナス要件を有するかどうかの情報５６０を示す。例示的な第２テーブル・データ構造５００の第２欄〜第４欄における情報は、ベンダ／装置の識別子（ＩＤ）およびサブシステムのベンダ／装置の識別子を提供するために使用される。すべてのＰＣＩｅエンドポイントが一意的なベンダ／装置の識別子を有する。或るＰＣＩｅエンドポイントはサブシステム・ベンダ／装置の識別子を有する。ファームウェアがデータ処理システムのＰＣＩｅバスを調べるとき、ファームウェアは、どのＰＣＩｅエンドポイントが見つけられたかを決定するためにこれらの識別子を読取る。
【００８３】
優先順位レベル５１０は、対応するＰＣＩｅエンドポイントの優先順位を識別する。複数のＰＣＩｅエンドポイントが同じ優先順位を有するとき、それらは優先順位欄５１０に同じ優先順位値を有する。例えば、図１０に示されるように、イーサネット（ETHERNET）・エンドポイントは同じ優先順位を有し、ＳＣＳＩおよびＩＤＥエンドポイントは同じ優先順位を有する。
【００８４】
クラス５２０およびサブクラス５３０は、ファームウェアがＰＣＩｅエンドポイントのタイプを決定することを可能にする。ファームウェアは、クラス５２０およびサブクラス５３０を使用して、第２テーブル・データ構造にないエンドポイントの優先順位およびアイソクロナス要件を決定する。例えば、ファームウェアが、テーブル・データ構造５００にないイーサネット（登録商標）・エンドポイントを（クラス・コード介して）見つけることができない場合、ファームウェアは、テーブル・データ構造５００にある他のイーサネット（登録商標）・エンドポイントに対する設定値を使用し得る。
【００８５】
更に、特定のエンドポイントがテーブル・データ構造５００において見つからないが、同じベンダからのテーブル・データ構造５００におけるエンドポイントが存在する場合、ファームウェアは、同じベンダからのエンドポイントに対して指定された設定値と同じ設定値を使用することを選択し得る。例えば、テーブル・データ構造５００がエミュレックス・ファイバ・チャネル・アダプタ・カードに対する値を含むものと仮定する。更に、異なる装置識別子を有するエミュレックスからの他のアダプタをファームウェアが見つけるものと仮定する。その異なる識別子は、例えば、他のアダプタがテーブル・データ構造５００におけるアダプタのより古いまたは新しいバージョンであるため、異なることがある。この場合、ファームウェアは、更に、エミュレックス・アダプタに対するテーブル・データ構造５００の値を使用することを選択し得る。ファームウェアは、更に、クラス５２０／サブクラス５３０が同じであるかどうかを知るために第２チェックを行い得るし、それらが同じである場合のみ、他のエミュレックス・アダプタを用いてテーブル５００における値を使用し得る。この方法では、テーブル・データ構造５００が、厳密には、遭遇したすべての新しい識別子によって更新される必要がないよう、或る程度の融通性をテーブル・データ構造５００の使用は備えている。
【００８６】
図１１〜図１４は、本実施例に従ってＰＣＩｅエンドポイント全体にわたって帯域幅を平衡化するための例示的操作を概説するフローチャートである。そのフローチャート表示の各ブロックおよびそのフローチャート表示におけるブロックの結合体がコンピュータ・プログラム命令によって具体化され得るということは明らかであろう。これらのコンピュータ・プログラム命令は、１つのマシンを形成するようにプロセッサまたは他のプログラマブル・データ処理装置に提供され得るし、従って、そのプロセッサまたは他のプログラマブル・データ処理装置において実行される命令は、フローチャートのブロックにおいて指定された機能を具体化するための手段を形成する。これらのコンピュータ・プログラム命令は、特定の態様で機能するようプロセッサまたは他のプログラマブル・データ処理装置に指示し得るコンピュータ可読メモリまたは記憶媒体に保存され得る。従って、コンピュータ可読メモリまたは記憶媒体に保存された命令は、フローチャートのブロックにおいて指定された機能を具体化する命令手段を含む製造物（例えば、プログラム製品）を形成する。
【００８７】
従って、フローチャート表示のブロックは、指定された機能を遂行するための手段の組み合わせ、指定された機能を遂行するためのステップの組み合わせ、および指定された機能を遂行するためのプログラム命令手段をサポートする。フローチャート表示の各ブロックおよびフローチャート表示におけるブロックの組み合わせが、指定された機能またはステップを遂行する特別目的のハードウェア・ベースのコンピュータ・システムによって、または特別目的のハードウェアおよびコンピュータ命令の組み合わせによって、具体化され得るということも明らかであろう。
【００８８】
更に、フローチャートは、本実施例内で遂行される操作を示すために提供される。フローチャートは、特定の操作、更に詳しく云えば、その操作の順序に関する限定事項を示すことまたは示唆することを意味するものではない。フローチャートの操作は、本発明の主旨および範囲から逸脱することなく特定の具体化方法に適するように修正されてもよい。
【００８９】
図１１および図１２は、一実施例に従って帯域幅を平衡化するためにＰＣＩｅエンドポイントに対する操作パラメータの設定値を決定するための例示的操作を概説するフローチャートである。図１１に示されるように、操作が開始すると、ファームウェアがフロントサイド・バスに対する最大データ転送速度を決定する（ブロック６１０）。ファームウェアは、現在インストールされているＰＣＩｅエンドポイントに、それらの最大レーン数、最大ＭＭＲＳ、および最大ペイロード構成パラメータに関して照会を行う（ブロック６１５）。ファームウェアは、ＰＣＩｅエンドポイントに対する最大データ転送速度を識別するために各ＰＣＩｅエンドポイントに対する最大レーン数、ＭＭＲＳ、およびペイロードに基づいて第１テーブル・データ構造においてルックアップ操作を行う（ブロック６２０）。
【００９０】
ファームウェアは、各ＰＣＩｅエンドポイントに対する最大データ転送速度を総和し（ブロック６２５）、ＰＣＩｅエンドポイントに対する合計最大データ転送速度を、フロントサイド・バスに対する最大データ転送速度と比較する（ブロック６３０）。ファームウェアは、ＰＣＩｅエンドポイントに対する合計最大データ転送速度がフロントサイド・バスに対する最大データ転送速度よりも大きいかどうかを決定する（ブロック６３５）。その結果が否定的である場合、ファームウェアは、ＰＣＩｅエンドポイントの操作パラメータをそれぞれの最大データ転送速度に対応した値に設定し（ブロック６４０）、操作が終了する。
【００９１】
ＰＣＩｅエンドポイントに対する合計最大データ転送速度がフロントサイド・バスに対する最大データ転送速度よりも大きい場合、ファームウェアは、ユーザ選択の帯域幅平衡化レベルを検索する（ブロック６４５）。ファームウェアは、ユーザ選択の帯域幅平衡化レベルが最高レベルにあるかどうかを決定する（ブロック６５０）。その結果が肯定的である場合、操作はブロック６４０に進み、ＰＣＩｅエンドポイントに対する操作パラメータがＰＣＩｅエンドポイントに対する最大データ転送速度に基づいて設定される。帯域幅平衡化レベルが最高レベルでない場合、ファームウェアは、ユーザ選択の帯域幅平衡化レベルに基づいてフロントサイド・バスに対するレベル調節された最大データ転送速度を計算し、種々のＰＣＩｅエンドポイント・タイプに対する最小データ転送速度を保存している第２データ構造、種々のＰＣＩｅエンドポイント・タイプの優先順位、およびどのＰＣＩｅエンドポイント・タイプがアイソクロナス要件を有するかに関する情報、に基づいてエンドポイントに対する最小データ転送速度を決定する（ブロック６５５）。
【００９２】
ファームウェアは、ＰＣＩｅエンドポイントに対する最小データ転送速度の合計をフロントサイド・バスのレベル調節された最大データ転送速度に比較する（ブロック６６０）。ファームウェアは、ＰＣＩｅエンドポイントに対する合計最小データ転送速度がフロントサイド・バスのレベル調節された最大データ転送速度よりも小さいかまたはそれに等しいかどうかを決定する（ブロック６６５）。その結果が肯定的である場合、ファームウェアは、操作パラメータ、例えば、ＭＭＲＳ、レーンの数、およびペイロード・サイズを特定のデータ転送速度に相関付ける第１テーブル・データ構造を使用して、ＰＣＩｅエンドポイントの操作パラメータを、それぞれの最小データ転送速度に対応した値に設定する（ブロック６７０）。そこで、操作は終了する。
【００９３】
ＰＣＩｅエンドポイントの合計最小データ転送速度がフロントサイド・バスのレベル調節された最大データ転送速度よりも小さくないかまたはそれに等しくない場合、前述のように、多数の種々の操作が行われ得る。図１１および図１２に示された例の目的では、遂行される操作は、ファームウェアが第２テーブル・データ構造における優先順位情報に基づいてＰＣＩｅエンドポイントの優先順位リストを生成することに関連する（ブロック６８０）。そこで、ファームウェアは、優先順位リストに基づいてＰＣＩｅエンドポイントにとって利用可能なフロントサイド・バスの帯域幅を削減する（ブロック６８５）。任意選択的には、フロントサイド・バスのレベル調節された最大データ転送速度は同様に増加することも可能である。この削減およびフロントサイド・バスのレベル調節された最大データ転送速度の任意選択的な増加は、所望のパフォーマンス目標が到達されるまで、例えば、ＰＣＩｅエンドポイントにとって利用可能にされた合計帯域幅がフロントサイド・バスのレベル調節された最大データ転送速度に等しいかまたはそれよりも小さくなるまで、続けられてもよい（ブロック６９０）。
【００９４】
一旦パフォーマンス目標に到達すると、ファームウェアは、ＰＣＩｅエンドポイントに対する決定されたデータ転送速度および第１テーブル・データ構造において指定された対応するパラメータ値に基づいて操作パラメータを設定する（ブロック６９５）。データ値のその特定の組み合わせは、主として、種々のオプションの最大ＭＭＲＳに基づいて選択され、その後は、レーンの数の変更がシステムのリブートを必要とするので、最大ペイロード・サイズおよび、最終的にはレーンの数に基づいて選択され得る。ＰＣＩｅエンドポイントの合計最小データ転送速度はフロントサイド・バスのレベル調節された最大データ転送速度よりも小さくないかまたはそれに等しくなかったので、ファームウェアは、エラー・メッセージをアドミニストレータ・ワークステーションに送ってＰＣＩｅエンドポイント操作パラメータの設定と共に潜在的な問題点をアドミニストレータに知らせる（ブロック６９８）。そこで、操作は終了する。
【００９５】
図１３は、本実施例に従って帯域幅を平衡化するためにアイソクロナス要件を有するＰＣＩｅエンドポイント用の操作パラメータを調節するための例示的操作を概説するフローチャートである。図１３に示されるように、操作が開始すると、データ処理システムの現在インストールされている任意のＰＣＩｅエンドポイントがアイソクロナス要件を有するかどうかを決定するために、ファームウェアは、第２テーブル・データ構造においてルックアップ操作を遂行する（ブロック７１０）。ファームウェアは、アイソクロナスＰＣＩｅエンドポイントが見つかったかどうかを決定する（ブロック７２０）。それが見つからなかった場合、操作は終了する。
【００９６】
アイソクロナスＰＣＩｅエンドポイントが見つかった場合、ファームウェアは、アイソクロナスＰＣＩｅエンドポイントの次のものを選択し（ブロック７３０）、第２テーブル・データ構造における情報に基づいてアイソクロナス・エンドポイントの最小データ転送速度および優先順位を決定する（ブロック７４０）。ファームウェアは、アイソクロナスＰＣＩｅエンドポイントの優先順位がデータ処理システムにおける他のＰＣＩｅエンドポイントの優先順位よりも高いかどうかを決定する（ブロック７５０）。それがその優先順位よりも高い場合、ファームウェアは、アイソクロナス・エンドポイントに最高の優先順位を与えるようにバス・アービタを設定する（ブロック７６０）。次に、ファームウェアは、第１テーブル・データ構造に保存された情報に基づいてアイソクロナスＰＣＩｅエンドポイントのアイソクロナス要件を得るように、他のＰＣＩｅエンドポイントの操作パラメータを修正する（ブロック７７０）。
【００９７】
しかる後、またはアイソクロナスＰＣＩｅエンドポイントの優先順位が他のＰＣＩｅエンドポイントよりも高くない場合（ブロック７５０）、ファームウェアは、これがデータ処理システムにおいて見つかった最後のアイソクロナスＰＣＩｅエンドポイントであるかどうかを決定する（ブロック７８０）。これがその最後のアイソクロナスＰＣＩｅエンドポイントではない場合、操作はブロック７３０に戻る。これがデータ処理システムにおいて見つかった最後のアイソクロナスＰＣＩｅエンドポイントである場合、操作は終了する。
【００９８】
図１４は、本実施例に従ってＰＣＩｅエンドポイントに関して帯域幅を動的に平衡化するための例示的操作を概説するフローチャートである。図１４に示されるように、操作が開始すると、ファームウェアは、事前定義された期間内に生じ得るエラーの数の閾値を設定する（ブロック８０２）。しかる後、ファームウェアは、終了条件が存在するかどうかを決定する（ブロック８０４）。終了条件は、例えば、ファームウェアが動的モードを出て、ユーザ選択のレベルに基づいて帯域幅の平衡化を開始するときに存在する。終了条件が存在する場合、操作は終了する。
【００９９】
ブロック８０４において終了条件が存在しない場合、ファームウェアは、閾値が或るエンドポイントによって超えられたかどうかを決定する（ブロック８０６）。閾値が超えられたときに割り込みがファームウェアに送られるよう、ルート・コンプレクスが設定されてもよい。代替の実施例では、ルート・コンプレクスは閾値状態のためのビットを設定してもよい。そこで、ファームウェアは、そのビットが設定されているかどうかを決定するために或る設定されたインターバルでこのレジスタをポーリングし得る。ブロック８０６において閾値が超えられなかった場合、操作はブロック８０４に戻り、終了条件が存在するかどうかを決定する。
【０１００】
ブロック８０６において、閾値が超えられた場合、ファームウェアはフロントサイド・バス・パフォーマンス・カウンタに照会を行い（ブロック８０８）、フロントサイド・バスがそれの最大データ転送速度で作動しているかどうかを決定する（ブロック８１０）。フロントサイド・バスがそれの最大データ転送速度で作動していない場合、ファームウェアは、不適切なエンドポイントに対するデータ転送速度の設定値を増加させる（ブロック８１２）。しかる後、操作はブロック８０４に戻り、終了条件が存在するかどうかを決定する。
【０１０１】
ファームウェアは、ＭＭＲＳ、ペイロード、またはレーン・サイズを使用してデータ転送速度を増加させる。ファームウェアがＭＭＲＳを増加させる場合、ファームウェアはデータ転送速度の増加をオン・ザ・フライで行うことができる。ファームウェアがペイロードを増加させる場合、ファームウェアはエンドポイントにおけるトラフィックを一時的に停止させ、ペイロードの更新後にエンドポイントを再開させる。ファームウェアがレーン・サイズを増加させる場合、ファームウェアはエンドポイントを停止させ、しかる後、装置ドライバを再初期設定し、アプリケーションを再開させる。
【０１０２】
ブロック８１０においてフロントサイド・バスがそれの最大データ転送速度で作動している場合、ファームウェアは、どのエンドポイントがアクティブであるかを決定するためにすべてのエンドポイントに照会を行う（ブロック８１４）。アクティブなエンドポイントに関して、ファームウェアは、不適切なエンドポイントよりも低い優先順位にあるエンドポイントがあるかどうかをチェックする（ブロック８１６）。しかる後、ファームウェアは、アクティブな低い優先順位のエンドポイントがあるかどうかを決定する（ブロック８１８）。不適切なエンドポイントよりも低い優先順位を有するアクティブなエンドポイントがない場合、操作はブロック８０４に戻り、終了条件が存在するかどうかを決定する。
【０１０３】
ブロック８１８において低い優先順位を有するアクティブなエンドポイントが存在する場合、ファームウェアは、低い優先順位のエンドポイントに対するデータ転送速度の設定値を減少させる（ブロック８２０）。ファームウェアは、上述のように、データ転送速度の増加と同様の方法でデータ転送速度の減少を行う。次に、ファームウェアは、不適切なエンドポイントに対するデータ転送速度の設定値を増加させる（ブロック８１２）。しかる後、操作はブロック８０４に戻り、終了条件が存在するかどうかを決定する。
【０１０４】
従って、本実施例は、ＰＣＩｅエンドポイントの操作パラメータを、それらの最大および／または最小データ転送速度並びにフロントサイド・バスの最大データ転送速度に基づいて、自動的に調節するための機構を提供する。本実施例は、フロントサイド・バスが十分に利用されることを可能にし、フロントサイド・バスの帯域幅が超えられたためにＰＣＩｅエンドポイントのパフォーマンスが保証され得ないというアイソクロナス要件の問題および状況を最小にすると同時に、データ処理システムの複数のＰＣＩｅエンドポイントにわたってそのフロントサイド／バスの平衡化された帯域幅を可能にする。
【０１０５】
上記の実施例は、ファームウェアが、本発明の機能を具体化するための主要な操作上の要素であるという見地から説明されたが、本発明はそのようなものに限定されないということを留意するべきである。むしろ、上記のように、本実施例の機構は、本発明の主旨および範囲から逸脱することなく、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせによって具体化され得る。
【０１０６】
更に、ＰＣＩｅエンドポイントの操作パラメータの特定の例、例えば、ＭＭＲＳ、レーン数、およびペイロード・サイズが本実施例の説明において使用されたが、本発明は、これらの特定の操作パラメータの使用のみに限定されない。本実施例および本発明の目的を達成するために、他の操作パラメータがテーブル・データ構造等において使用されてもよい。更に、テーブル・データ構造は、実施例によっては必要とされず、上記の説明におけるテーブル・データ構造に起因する情報は、本発明の主旨および範囲から逸脱しなければテーブル以外の種々の他の形式において提供されてもよい。
【０１０７】
更に、ＰＣＩｅエンドポイントまたはアダプタに対する特定のアプリケーションに関して本実施例を説明したが、本実施例はそのようなものに限定されない。むしろ、本実施例の機構は、エンドポイントまたはデータのソース／シンク全体にわたって任意のタイプのバスの帯域幅またはデータ・トラフィック機構を平衡化するために使用することが可能である。例えば、ＰＣＩｅ以外の他のプロトコルを利用するエンドポイントまたはアダプタが、本発明の主旨および範囲から逸脱しなければ本実施例の機構の主題であってもよい。
【０１０８】
動的モードでは、本実施例の機構は所定の期間内に生じ得るエラーの閾値を設定する。その閾値が超えられる場合、その機構は、フロントサイド・バスがそれの最大データ転送速度で作動しているかどうかを決定するためにフロントサイド・バス・パフォーマンス・カウンタに照会を行う。フロントサイド・バスがそれの最大データ転送速度で作動していない場合、その機構は、閾値を１ステップだけ超えるエンドポイントに対するデータ転送速度の設定値を増加させる。フロントサイド・バスがそれの最大データ転送速度で作動している場合、その機構は、どのエンドポイントがアクティブであるかを決定するためにすべてのエンドポイントに照会を行う。しかる後、その機構は、低い優先順位のエンドポイントを１ステップだけ減少させ、不適切なエンドポイントを１だけ増加させる。フロントサイド・バスがそれの最大データ転送速度で作動しており且つアクティブな低い優先順位のエンドポイントが存在しない場合、その機構は不適切なエンドポイントをそのままにしておく。
【０１０９】
本実施例は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例、またはハードウェアおよびソフトウェアの両方の要素を含む実施例の形を取り得る。実施例によっては、本実施例の機構が、ファームウェア、常駐ソフトウェア、マイクロコード等を含むがそれに限定されないソフトウェアにおいて具現化される。
【０１１０】
更に、本実施例は、コンピュータまたは任意の命令実行システムによってまたはそれらに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセスし得るコンピュータ・プログラムの形を取り得る。説明の便宜上、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによってまたはそれらに関連して使用するためのプログラムを含み、保存し、伝達し、伝播し、または搬送することができる任意の装置であってもよい。
【０１１１】
上記媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体システム（または装置、またはデバイス）或いは伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダムアクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、固定磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク、読取専用メモリ・コンパクト・ディスク（ＣＤ−ＲＯＭ）、読取り／書込みコンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、およびＤＶＤを含む。
【０１１２】
プログラム・コードを保存および／または実行するに適したデータ処理システムは、システム・バスを介してメモリ素子に直接的にまたは間接的に結合された少なくとも１つのプロセッサを含むであろう。メモリ素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、および、実行中にコードが大容量記憶装置から検索されなければならない回数を減らすために少なくともいくつかのプログラムの一時的記憶装置を提供するキャッシュ・メモリを含み得る。
【０１１３】
入出力（Ｉ／Ｏ）装置（キーボード、ディスプレイ、ポインティング装置等を含むがそれらに限定されない）は、直接にまたはＩ／Ｏコントローラの介在をとおしてシステムに接続され得る。ネットワーク・アダプタも、データ処理システムが私設ネットワークまたは公衆ネットワークの介在を介して他のデータ処理システムまたはリモート・プリンタもしくは記憶装置に接続されることを可能にするためにシステムに接続され得る。モデム、ケーブル・モデム、およびイーザネット（登録商標）・カードは数少ない現在利用可能なタイプのネットワーク・アダプタである。
【０１１４】
図解および説明を目的に本発明に関して記述したが、これは、網羅的であること、または開示された形態に本発明を限定することを意図するものではない。多くの修正および変更が当業者には明らかであろう。実施例は、本発明の原理、実用的な応用例を最もよく説明するために、および意図された特定の使用に適した種々の修正を伴う種々の実施例に関して、当業者が本発明を理解することを可能にするために、選ばれ且つ記述された。
【図面の簡単な説明】
【０１１５】
【図１】ＰＣＩエキスプレス（ＰＣＩｅ）仕様に従ってＰＣＩｅファブリック・トポロジを示す概略図である。
【図２】実施例の諸局面を具現化しうる例示的なデータ処理システムのブロック図である。
【図３】実施例の主要な操作コンポーネントの概略的ブロック図である。
【図４】実施例に従ってＰＣＩｅエンドポイント全体にわたって帯域幅を平衡化するための操作パラメータの可能な組み合わせを識別する第１の三次元テーブル・データ構造の概略図である。
【図５】１個のレーンの場合のペイロード・サイズおよびＭＭＲＳの組み合わせを表す二次元テーブル・データ構造を示す。
【図６】２個のレーンの場合のペイロード・サイズおよびＭＭＲＳの組み合わせを表す二次元テーブル・データ構造を示す。
【図７】４個のレーンの場合のペイロード・サイズおよびＭＭＲＳの組み合わせを表す二次元テーブル・データ構造を示す。
【図８】８個のレーンの場合のペイロード・サイズおよびＭＭＲＳの組み合わせを表す二次元テーブル・データ構造を示す。
【図９】一実施例に従ってＰＣＩｅエンドポイントの書込み操作のために使用され得る二次元テーブル・データ構造の概略図である。
【図１０】サポートされたＰＣＩｅエンドポイントおよびそのＰＣＩｅエンドポイントがアイソクロナス要件を有するかどうかを識別するための第２のテーブル・データ構造を表すテーブルである。
【図１１】実施例に従って帯域幅を平衡化するためにＰＣＩｅエンドポイントに対する操作パラメータの設定値を決定するための例示的操作を概説するフローチャートである。
【図１２】図１１に示されたフローチャートの続きを表すフローチャートである。
【図１３】一実施例に従って帯域幅を平衡化するためにアイソクロナス要件を有するＰＣＩｅエンドポイントに対する操作パラメータを調節するための例示的操作を概説するフローチャートである。
【図１４】一実施例に従ってＰＣＩｅエンドポイントに対する帯域幅を動的に平衡化するための例示的操作を概説するフローチャートである。
【図１】
0004988678.tif 000002
【図２】
0004988678.tif 000003
【図３】
0004988678.tif 000004
【図４】
0004988678.tif 000005
【図５】
0004988678.tif 000006
【図６】
0004988678.tif 000007
【図７】
0004988678.tif 000008
【図８】
0004988678.tif 000009
【図９】
0004988678.tif 000010
【図１０】
0004988678.tif 000011
【図１１】
0004988678.tif 000012
【図１２】
0004988678.tif 000013
【図１３】
0004988678.tif 000014
【図１４】
0004988678.tif 000015