(57)【要約】【課題】コンピュータ・システムを構成するための方法を提供する。【解決手段】当該方法は、コンピュータ・システムの複数の装置に第１の複数のデフォルト・リソースを割付けることを含む。次に、コンピュータ・システムにおけるＰＣＩｅ−ＣａｒｄＢｕｓコントローラが、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに利用可能な複数の割付け可能リソースで再構成される。当該方法は、さらに、コンピュータ・システムにおける構成されない複数の装置を検出するためにコンピュータ・システムのオペレーティング・システム（ＯＳ）によってコンピュータ・システムの複数の装置を列挙することを含む。列挙に従って、ＯＳは、複数の構成されない装置に第２の複数のデフォルト・リソースを割付ける。【選択図】図２
2009070368.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システムを構成するための方法であって、
前記コンピュータ・システムの複数の装置に第１の複数のデフォルト・リソースを割付けるステップと、
前記コンピュータ・システムにおけるＰＣＩｅ−ＣａｒｄＢｕｓコントローラに利用可能な複数の割付け可能なリソースでＰＣＩｅ−ＣａｒｄＢｕｓを再構成するステップと、
前記コンピュータ・システムにおける複数の構成されない装置を検出するために前記コンピュータ・システムのオペレーティング・システム（ＯＳ）によって前記コンピュータ・システムの前記複数の装置を列挙するステップと、
前記複数の構成されない装置に前記ＯＳによって第２の複数のデフォルト・リソースを割付けるステップと、
を含む方法。
【請求項２】
前記再構成するステップは、さらに、
前記コンピュータ・システムの前記複数の装置によって占有される前記第１の複数のデフォルト・リソースを検出するステップと、
利用可能な前記複数の割付け可能なリソースを計算するステップと、
前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに前記複数の割付け可能なリソースを再割付けするステップと、
を含む請求項１に記載の方法。
【請求項３】
前記再構成するステップは、さらに、
前記コンピュータ・システムの前記複数の装置からのルート・コンプレックス及びトップ・レベル・バスを限定するための前記コンピュータ・システムのトポロジを検出するステップを備え、ここに、前記ルート・コンプレックスは、複数の仮想ＰＣＩ対ＰＣＩブリッジを含み、前記複数の仮想ＰＣＩ対ＰＣＩブリッジの１つは、前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを前記ルート・コンプレックスに結合することができる請求項２に記載の方法。
【請求項４】
前記複数の割付け可能なリソースを計算するステップは、さらに、
前記複数の割付け可能なリソースを得るために前記トップ・レベル・バスによって占有される複数の全デフォルト・リソースから前記仮想ＰＣＩ対ＰＣＩブリッジの複数のピアー装置によって占有される複数の部分的なデフォルト・リソースを減算するステップを含む請求項３に記載の方法。
【請求項５】
前記複数の割付け可能なリソースを再割付けするステップは、さらに、
前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに結合される前記複数の仮想ＰＣＩ対ＰＣＩブリッジの１つに前記複数の割付け可能なリソースからの複数の所定の親リソースを割付けるステップと、
前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに前記複数の所定の親リソースからの複数の所定の子リソースを割付けるステップと、
を含む請求項２に記載の方法。
【請求項６】
ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに複数の割付け可能なリソースを再割付けすることができるコンピュータ・システムであって、
該コンピュータ・システムの複数の装置を管理するための中央処理ユニット（ＣＰＵ）と、ここに、前記複数の装置は、前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを含み、
前記コンピュータ・システムをブート・アップしてオペレーティング・システムをロードするために、前記ＣＰＵと協働する基本入出力システム（ＢＩＯＳ）と、
前記ＣＰＵに結合され、かつ、第１の複数の仮想ＰＣＩ対ＰＣＩブリッジと関連する複数のルート・ポートを有するルート・コンプレックスであって、ここに、第１の複数の仮想ＰＣＩ対ＰＣＩブリッジの１つが、前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを前記ルート・コンプレックスに結合することができる前記ルート・コンプレックスと、
を備え、前記ＢＩＯＳは、複数のデフォルト・リソースを前記コンピュータ・システムの前記複数の装置に割付けることができ、利用可能な前記複数の割付け可能リソースを計算することができ、そして前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに前記複数の割付け可能リソースを再割付けすることができるコンピュータ・システム。
【請求項７】
前記ルート・コンプレックスに結合され、第２の複数の仮想ＰＣＩ対ＰＣＩブリッジと関連している複数の上流ポート及び下流ポートを備えたスイッチと、
前記第２の複数の仮想ＰＣＩ対ＰＣＩブリッジの１つを介して前記スイッチに結合される第２のＰＣＩｅ−ＣａｒｄＢｕｓコントローラと、
をさらに備えた請求項６に記載のコンピュータ・システム。
【請求項８】
前記複数の割付け可能リソースは、
メモリの所定のウインド・サイズ及びベース・アドレスと、
プレフェッチ可能メモリの所定のウインド・サイズ及びベース・アドレスと、
Ｉ／Ｏの所定のウインド・サイズ及びベース・アドレスと、
を含む請求項６に記載のコンピュータ・システム。
【請求項９】
ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに複数の割付け可能なリソースを再割付けすることができるコンピュータ・システムであって、
該コンピュータ・システムの複数の装置を管理するための中央処理ユニット（ＣＰＵ）と、ここに、前記複数の装置は、前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを含み、
前記コンピュータ・システムをブート・アップするために、前記ＣＰＵと協働する基本入出力システム（ＢＩＯＳ）と、
オペレーティング・システムと、
前記ＣＰＵに結合され、かつ、第１の複数の仮想ＰＣＩ対ＰＣＩブリッジと関連する複数のルート・ポートを有するルート・コンプレックスであって、ここに、第１の複数の仮想ＰＣＩ対ＰＣＩブリッジの１つが、前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを前記ルート・コンプレックスに結合することができる前記ルート・コンプレックスと、
前記コンピュータ・システムの前記複数の装置によって占有される第１の複数のデフォルト・リソースを検出することができ、利用可能な前記複数の割付け可能リソースを計算することができ、そして前記ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに前記複数の割付け可能リソースを再割付けすることができる前記オペレーティング・システムにインストールされたソフトウェア・ドライバと、
を備えたコンピュータ・システム。
【請求項１０】
コンピュータ・システムにおける複数の装置の１つを再構成するための方法であって、
前記コンピュータ・システムの前記複数の装置によって占有される複数のデフォルト・リソースを検出するステップと、
利用可能な複数の割付け可能リソースを計算するステップと、
前記コンピュータ・システムの前記装置に前記複数の割付け可能リソースを再割付けするステップと、
を含む方法。
【請求項１１】
前記コンピュータ・システムの前記複数の装置から前記装置の前記親装置の複数のピアー装置、前記装置の親装置、及びトップ・レベル・バスを限定するための前記コンピュータ・システムのトポロジを検出するステップをさらに含む請求項１０に記載の方法。
【請求項１２】
前記複数の割付け可能リソースを計算するステップは、さらに、
前記複数の割付け可能リソースを得るために前記トップ・レベル・バスによって占有される複数の全デフォルト・リソースから前記複数のピアー装置によって占有される複数の部分デフォルト・リソースを減算するステップを含む請求項１１に記載の方法。
【請求項１３】
前記複数の割付け可能リソースを再割付けするステップは、さらに、
前記装置の前記親装置に前記複数の割付け可能リソースからの複数の所定の親リソースを割付けるステップと、
前記装置に前記複数の所定の親リソースからの複数の所定の子リソースを割付けるステップと、
を含む請求項１１に記載の方法。
【請求項１４】
前記装置の前記親装置は、ルート・コンプレックスにおける仮想ＰＣＩ対ＰＣＩブリッジである請求項１１に記載の方法。
【請求項１５】
前記コンピュータ・システムは、周辺装置相互接続エクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ）産業バス規格に従う請求項１０に記載の方法。
【請求項１６】
前記複数の装置の前記１つは、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラである請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータの周辺装置を構成するための方法に関し、特に、装置を動的に再構成するための方法に関する。
【背景技術】
【０００２】
コンピュータ・システムにおいては、ホスト・プロセッサを他のモジュール及び装置と相互接続し、それらの間でデータを転送するための種々のバスがある。バスは、データが転送され得る一連の並列電気ラインを含む。現代の市場においては、コンピュータ・システムに適用される、システム・バス及びＩ／Ｏバスの２つのタイプのバスがある。Ｂａｃｋｓｉｄｅ  Ｂｕｓ（ＢＳＢ）及びＦｒｏｎｔＳｉｄｅ  Ｂｕｓ（ＦＳＢ）のようなシステム・バスは、ホスト・プロセッサをシステム内のモジュール及び装置に結合するために用いられる。Ｂａｃｋｓｉｄｅ  Ｂｕｓ（ＢＳＢ）は、ホスト・プロセッサをＬ２キャッシュに結合するために用いられる。ＦｒｏｎｔＳｉｄｅ  Ｂｕｓ（ＦＳＢ）は、ホスト・プロセッサを、ランダム・アクセス・メモリ（ＲＡＭ）によって形成される主メモリに結合するために用いられ得、メモリ・バスとも呼ばれる。加速されたグラフィックス・ポート（ＡＧＰ）、周辺装置相互接続（ＰＣＩ）、ＰＣＩ  ｅＸｔｅｎｄｅｄ（ＰＣＩ−Ｘ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、ユニバーサル・シリアル・バス（ＵＳＢ）、ＩＥＥＥ  １３９４（Ｆｉｒｅｗｉｒｅ）、ＣａｒｄＢｕｓ、ＥｘｐｒｅｓｓＣａｒｄのようなＩ／Ｏバスは、コンピュータ・システムのモジュールまたは装置間で転送されるべきデータのためのコンジットを提供することができる。
【０００３】
ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩエクスプレス）は、ＰＣＩに関する改良である、新しく開発された産業バス規格であることが、当業者に良く知られていた。ＰＣＩバス規格のように、ＰＣＩ  Ｅｘｐｒｅｓｓバス規格も、国際機構、ＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ（ＰＣＩ−ＳＩＧ）によって特定され維持されている。
【０００４】
ＣａｒｄＢｕｓは、１６ビットのパーソナル・コンピュータ・メモリ・カード国際協会（ＰＣＭＣＩＡ）規格の３２ビット・バージョンである。１６ビットＰＣＭＣＩＡ技術は、ＰＣＭＣＩＡ改訂２（Ｒ２）として知られており、３２ビットＣａｒｄＢｕｓ技術は、改訂３（Ｒ３）と呼ばれる。ＣａｒｄＢｕｓは、ＰＣＭＣＩＡ  Ｒ２と上位互換可能（ｂａｃｋｗａｒｄ  ｃｏｍｐａｔｉｂｌｅ）として設計される。ＣａｒｄＢｕｓ及びＰＣＭＣＩＡ  Ｒ２カードの双方は、単一のスロット内で用いられ得る。
【０００５】
ＰＣＩｅ−ＣａｒｄＢｕｓブリッジとも呼ばれるＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、実際、ＰＣＩ  Ｅｘｐｒｅｓｓバス及びＣａｒｄＢｕｓバスを相互接続するための相互接続装置である。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、ＰＣＩ  ＥｘｐｒｅｓｓバスをＣａｒｄＢｕｓスロットに拡張し、該ＣａｒｄＢｕｓスロットを介して、ＣａｒｄＢｕｓカードまたはＰＣＭＣＩＡ  Ｒ２カードは、ＰＣＩ  Ｅｘｐｒｅｓｓシステムにおいて動作するのを許容される。他のＰＣＩ及びＰＣＩ  Ｅｘｐｒｅｓｓ装置と同様に、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、基本入出力システム（Ｂａｓｉｓ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）（ＢＩＯＳ）、またはＷｉｎｄｏｗｓ（登録商標）  ２０００（Ｒ）、Ｗｉｎｄｏｗｓ（登録商標）  ＸＰ（Ｒ）及びＷｉｎｄｏｗｓ（登録商標）  Ｓｅｒｖｅｒ  ２００３（Ｒ）のような、オペレーティング・システム（ＯＳ）によって列挙され（ｅｎｕｍｅｒａｔｅｄ）かつ構成されるべきであり、そして効果的に動作するよう充分なリソースが提供されるべきである。
【０００６】
従来技術の図１を参照すると、従来技術におけるＢＩＯＳまたはＯＳによってコンピュータ・システムにＰＣＩｅ−ＣａｒｄＢｕｓコントローラを構成するための従来の方法１００が示されている。１０２において、コンピュータ・システムがパワーオンされた後、ＢＩＯＳは、システムのバス及び装置を走査し、親の装置から子の装置へ、一次バスから二次バスへデフォルト・リソースを割り付ける。ＢＩＯＳコードを実行することにより、コンピュータ・システムのトポロジが検出され、そしてコンピュータ・システムにおける装置及びバスが限定されて番号付けられる。コンピュータ・システムのＢＩＯＳは、対応のレジスタにバス番号、装置番号及び機能番号を書込むために装置内の構成空間にアクセスし、従って、全ＰＣＩ  Ｅｘｐｒｅｓｓトポロジにおける或る装置の或る機能の位置を決定する。検出に従って、ＢＩＯＳは、リソースを編成する（ｂｕｄｇｅｔｉｎｇ）こと及びこれらのリソースを各装置に割り付けることを含め、ハードウェアを管理するために広範囲の想定を行う。その上、メモリ、プレフェッチ可能なメモリ、及び各装置のためのＩ／Ｏに対して必要とされるウィンドウのサイズは、ＢＩＯＳによって評価される。想定及び評価は、装置の構成空間レジスタから読取られたデータに基づいている。当業者は、ＰＣＩ  Ｅｘｐｒｅｓｓ装置が、３つの独立したアドレス空間：メモリ、ＩＯ及び構成、を占有するということを理解するであろう。各装置及び各バスに物理メモリが配分されるけれども、コンピュータ・システムにおける論理メモリが、単一の隣接する部分として考慮される。従って、論理メモリは、全てのレベルの装置によって共有される。ＩＯ空間も、１つの単一の隣接部分として考慮され、装置によって共有される。しかしながら、リソースのこのような評価は、装置を効果的に働かせるためには、不正確すぎる。
【０００７】
例えば、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを含む、コンピュータ・システムにおける装置のほとんどは、ルート・コンプレックス（Ｒｏｏｔ  Ｃｏｍｐｌｅｘ）（ＲＣ）を通してホスト・プロセッサに結合されるので、ＲＣは、トップ・レベルの親の装置として最初に走査されかつ構成される。ＲＣは、多くの仮想のＰＣＩ対ＰＣＩブリッジの集合として表される。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、ＲＣの一層低いレベルの子の装置として走査されかつ構成されるであろう。ＢＩＯＳの構成コードが正しく実行されるならば、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、デフォルト・リソースを受信するであろう。エラーが生じるかまたはＰＣＩｅ−ＣａｒｄＢｕｓコントローラが検出されないならば、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、構成されない装置であり、効果的に動作するために適切なリソースを得ることができないであろう。
【０００８】
ＢＩＯＳコードが実行された後、ＯＳのＰＣＩバス・ドライバが動作し始める。１０４において、ＰＣＩバス・ドライバは、コンピュータ・システムにおける装置およびバスを列挙し、そして構成されない装置にデフォルト・リソースを割り当てる。ＰＣＩバス・ドライバの列挙ステップは、１０２におけるＢＩＯＳの検出ステップと同様である。アドバンスド・コンフィギュレーション・パワー・インターフェース（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）（ＡＣＰＩ）ドライバが任意選択的にロードされ得、そしてこのステップ１０４の前に動作するが、これは図１には示されていない。
【０００９】
装置に割付けられるリソースが不充分であるときに問題が生じ得、そしてコンピュータ・システムにおける装置が多重階層化トポロジにおける多重レベル・バスで配列されるときに問題が一層生じがちである。従来技術においては、ＢＩＯＳまたはＯＳのいずれかがすべての装置に対して固定のリソースを割り当てる。装置が動作するための充分なリソースを得なかったということをＰＣＩバス・ドライバが検出するときでさえ、ＯＳは、子の装置の要件を満足するよう親の装置に対して一層多くのリソースを動的に再割り付けすることができず、その理由は、固定のリソースが親の装置に割り当てられてしまっているからである。装置が充分なリソースを受けないとき、装置は、動作しないであろう。
【００１０】
ＯＳは、最初に、ＲＣに固定のデフォルト・リソースを割り当て、そして次ぎに、幾つかのリソースが、ＲＣの子の装置であるＰＣＩｅ−ＣａｒｄＢｕｓコントローラに通される。従って、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに通されるリソースは、制限される。ＯＳは、次に、これらのリソースが使い果たされるまで、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ・リソースからＣａｒｄＢｕｓカードにリソースを割り当てる。コンピュータ・システム内に利用可能なリソースがあったとしても、ＣａｒｄＢｕｓカードに割り当てられるリソースが不充分であり得る。例えば、Ｗｉｎｄｏｗｓ（登録商標）  ＸＰ（Ｒ）がＰＣＩ対ＰＣＩブリッジに割り当てるデフォルト・リソースは、メモリの１メガバイト（ＭＢ）、プレフェッチ可能なメモリ空間の１ＭＢ、及びＩ／Ｏ空間の４キロバイト（ＫＢ）であり；Ｗｉｎｄｏｗｓ（登録商標）  ＸＰ（Ｒ）がＲＣの仮想のＰＣ対ＰＣブリッジの子の装置であるＰＣＩｅ−ＣａｒｄＢｕｓコントローラに割り当てるデフォルト・リソースは、メモリの４ＫＢ、プレフェッチ可能なメモリの１ＭＢ、及びウインドウズの２つの２５６バイトＩ／Ｏである。ＣａｒｄＢｕｓカードがメモリの２ＭＢを必要とするとき、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに結合されたＣａｒｄＢｕｓカードは、リソースの欠乏に起因して働かないであろう。
【００１１】
本発明が主に向けられているのは、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに割り付けられたリソースの動的な再構成を可能とするシステム及び方法に対してである。
【発明の開示】
【課題を解決するための手段】
【００１２】
一実施形態においては、コンピュータ・システムを構成するための方法が提供される。該方法は、コンピュータ・システムの複数の装置に第１の複数のデフォルト・リソースを割付けることを含む。次に、コンピュータ・システムにおけるＰＣＩｅ−ＣａｒｄＢｕｓコントローラが、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに対して利用可能である複数の割付け可能なリソースでもって再構成される。該方法は、さらに、コンピュータ・システムにおける複数の構成されない装置を検出するためにコンピュータ・システムのオペレーティング・システム（ＯＳ）によってコンピュータ・システムの複数の装置を列挙することを含む。列挙に従って、ＯＳは、複数の構成されない装置に第２の複数のデフォルト・リソースを割付ける。
【００１３】
もう１つの実施形態においては、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに複数の割付け可能リソースを再割付けすることができるコンピュータ・システムが提供される。コンピュータ・システムは、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを含むコンピュータ・システムの複数の装置を管理するための中央処理ユニット（ＣＰＵ）を含む。ＣＰＵに結合されるルート・コンプレックスは、第１の複数の仮想ＰＣＩ対ＰＣＩブリッジと関連した複数のルート・ポートを含み、第１の複数の仮想ＰＣＩ対ＰＣＩブリッジの１つは、ルート・コンプレックスにＰＣＩｅ−ＣａｒｄＢｕｓコントローラを結合することができる。コンピュータ・システムは、さらに、コンピュータ・システムをブート・アップしてオペレーティング・システムをロードするためにＣＰＵと協働するための基本入出力システム（ＢＩＯＳ）を含む。ＢＩＯＳは、コンピュータ・システムの複数の装置に複数のデフォルト・リソースを割付け、利用可能な複数の割付け可能リソースを計算し、そしてＰＣＩｅ−ＣａｒｄＢｕｓコントローラに複数の利用可能リソースを再割付けする。
【００１４】
さらにもう１つの実施形態においては、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに複数の割付け可能リソースを再割付けすることもできるもう１つのコンピュータ・システムが提供される。コンピュータ・システムは、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを含むコンピュータ・システムの複数の装置を管理するための中央処理ユニット（ＣＰＵ）を含む。コンピュータ・システムは、また、コンピュータ・システムをブート・アップするためにＣＰＵと協働するための基本入出力システム（ＢＩＯＳ）及びオペレーティング・システムを含む。ルート・コンプレックスは、第１の複数の仮想ＰＣＩ対ＰＣＩブリッジと関連する複数のルート・ポートを含み、第１の複数の仮想ＰＣＩ対ＰＣＩブリッジの１つは、ルート・コンプレックスにＰＣＩｅ-ＣａｒｄＢｕｓコントローラを結合することができる。前記コンピュータ・システムの前記複数の装置によって占有される第１の複数のデフォルト・リソースを検出するために、利用可能な複数の割付け可能リソースを計算するために、そして、ＰＣＩｅ-ＣａｒｄＢｕｓコントローラに複数の割付け可能リソースを再割付けするために、ＯＳにインストールされたソフトウェア・ドライバも、コンピュータ・システムに含まれる。
【００１５】
さらにもう１つの実施形態においては、コンピュータ・システムにおける複数の装置の１つを再構成するための方法が提供される。該方法は、コンピュータ・システムの複数の装置によって占有される複数のデフォルト・リソースを検出すること、及び利用可能な複数の割付け可能リソースを計算すること、を含む。そして、複数の割付け可能リソースは、コンピュータ・システムの装置に再割付けされる。
【００１６】
本発明の他の長所及び新規な特徴は、添付図面と共に為される以下の詳細な説明から一層明瞭となるであろう。
【発明を実施するための最良の形態】
【００１７】
さて、本発明の実施形態を詳細に参照する。本発明は、実施形態と共に説明されるけれども、それらは、本発明をこれらの実施形態に制限することを意図するものではないことが理解されるであろう。反対に、本発明は、特許請求の範囲によって限定される本発明の精神及び範囲内に含まれ得る代替、変更及び等価物を包摂するよう意図されている。
【００１８】
さらに、本発明の以下の詳細な説明において、本発明の完全な理解を提供するために多くの特定の詳細が述べられる。しかしながら、本発明は、これらの特定の詳細以外でも実行され得ることは当業者に理解されるであろう。他の状況においては、良く知られた方法、手順、構成要素、及び回路は、本発明の態様を不必要に不明瞭にしないように、詳細には説明されていない。
【００１９】
図２を参照すると、本発明の一実施形態によるＰＣＩｅ−ＣａｒｄＢｕｓコントローラを構成するためのコンピュータ・システム２００が示されている。コンピュータ・システム２００は、図２に示されたように周辺装置相互接続エクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ）バスと共に構成された、デスクトップ・コンピュータ、ラップトップ・コンピュータ、デスクトップ・ワークステーションまたはサーバ・コンピュータのような、パーソナル・コンピュータ（ＰＣ）・システムであることができる。上述したように、ＰＣＩ  Ｅｘｐｒｅｓｓは、シリアルな複数のポイントツーポイント配線の個々にクロッキングされるレーンのアセンブリを有し、ＰＣＩ及びＰＣＩ  ｅＸｔｅｎｄｅｄ（ＰＣＩ−Ｘ）と同じロード／ストアＩ／Ｏアーキテクチャを使用する。ＰＣＩ  Ｅｘｐｒｅｓｓは、すべてのＰＣＩベースのソフトウェア・モデルと完全に互換可能である。ＰＣＩソフトウェア規格に従う基本入出力システム（ＢＩＯＳ）及びオペレーティング・システム（ＯＳ）は、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に従うコンピュータ・システム２００の何等の変更も無しでブートされかつ動作され得る。しかしながら、ＰＣＩ  Ｅｘｐｒｅｓｓの進歩した特徴を利用するために、ソフトウェアの変更が必要であるかもしれないということが当業者には明瞭であろう。
【００２０】
図２に戻って参照すると、コンピュータ・システム２００は、種々のモジュール及び装置を階層的トポロジにおいて互いに結合するための複数レベルのＰＣＩ  Ｅｘｐｒｅｓｓバスを備える。例えば、図２に示されるように、種々のモジュール及び装置は、中央処理ユニット（ＣＰＵ）２０２、ルート・コンプレックス（ＲＣ）２０４、グラフィックス・カード（ＧＦＸ）２０６、メモリ２０８、スイッチ２１８、ＰＣＩ  Ｅｘｐｒｅｓｓエンドポイント２２４、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０、ＣａｒｄＢｕｓエンドポイント２２２、ＰＣＩ  Ｅｘｐｒｅｓｓ対ＰＣＩ／ＰＣＩ−Ｘブリッジ（ＰＣＩｅ−ＰＣＩブリッジ）２２６及びＰＣＩエンドポイント２２８を含み得る。
【００２１】
ＣＰＵ２０２は、命令を中断してコンピュータ・プログラムに含まれるデータを処理することにより、コンピュータ・システム２００におけるこれらのモジュール及び装置を管理するよう、ＢＩＯＳ及びＯＳと共に動作する。ＢＩＯＳ及びＯＳは、構成ソフトウェアとして働き、コンピュータ・システム２００におけるモジュール及び装置を検出して構成することを担当する。コンピュータ・システム２００のような、ＰＣＩｅベースのコンピュータ・システムにおけるＲＣ２０４が取って代わって、ＰＣＩベースのコンピュータ・システムにおけるメモリ・コントローラ・ハブ（ＭＣＨ）及びＩ／Ｏコントローラ・ハブ（ＩＣＨ）チップセットとして働く。ＲＣ２０４におけるホスト・ブリッジ２３２により、ＲＣ２０４は、メモリ・マッピングされたＰＣＩ  Ｅｘｐｒｅｓｓ構成の空間アクセスをＣＰＵ２０２からＰＣＩ  Ｅｘｐｒｅｓｓ構成トランザクションに変換する。
【００２２】
ＲＣ２０４により、メモリ２０８は、“メモリ・バス”、“プロセッサ・バス”または“システム・バス”としても知られている、図示されないＦｒｏｎｔｓｉｄｅ  Ｂｕｓ（ＦＳＢ）を通してＣＰＵ２０２に結合される。メモリ２０８は、一時的に命令及びデータを格納することができ、格納された情報をＣＰＵ２０２が要求するときにＣＰＵ２０２に提供する。さらに、ＧＦＸ２０６もＲＣ２０４及びＰＣＩ  Ｅｘｐｒｅｓｓリンク２４０を介してＣＰＵ２０２に結合され、外部のディスプレイ（図示せず）上に画像を表示する。
【００２３】
スイッチ２１８は、ＰＣＩｅ−ＰＣＩブリッジ２２６及びＰＣＩ  Ｅｘｐｒｅｓｓエンドポイント２２４のような複数の装置を、ＰＣＩ  Ｅｘｐｒｅｓｓリンクを介してＲＣ２０４の１つのＰＣＩ  Ｅｘｐｒｅｓｓポートに結合するよう用いられる。
【００２４】
ＰＣＩｅ−ＰＣＩブリッジ２２６、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０、ＰＣＩ  Ｅｘｐｒｅｓｓエンドポイント２２４、ＣａｒｄＢｕｓエンドポイント２２２、及びＰＣＩエンドポイント２２８のような、コンピュータ・システム２００におけるＰＣＩ及びＰＣＩ  Ｅｘｐｒｅｓｓ装置は、それぞれそれらの構成空間を有する。コンピュータ・システム２００がパワーアップまたはブートされると、ＢＩＯＳ及びＯＳは、ＰＣＩ及びＰＣＩ  Ｅｘｐｒｅｓｓ装置の存在を識別し、そしてＰＣＩ及びＰＣＩ  Ｅｘｐｒｅｓｓ装置を構成する。コンピュータ・システム２００におけるＰＣＩ及びＰＣＩ  Ｅｘｐｒｅｓｓ装置の各々は、１つの機能を有する。実際、ＰＣＩ及びＰＣＩ  Ｅｘｐｒｅｓｓ装置における特定の機能は、その独特の構成空間を所持する。１つの実施形態においては、構成空間は、約４キロバイト（ＫＢ）の容量を有する一組のレジスタから成り、そして構成空間の構成空間ヘッダは、最初のレジスタを占有する。コンピュータ・システム２００のＰＣＩまたはＰＣＩ  Ｅｘｐｒｅｓｓ装置は、対応のヘッダ・タイプを有するそれぞれの構成空間にマッピングされる。ＰＣＩ及びＰＣＩ  Ｅｘｐｒｅｓｓ装置の構成空間ヘッダは、インテル・コーポレションから得られる、ＰＣＩ−ＳＩＧ“ＰＣＩローカル・バス仕様改訂３．０”、ＰＣＩ−ＳＩＧ“ＰＣＩ  Ｅｘｐｒｅｓｓベース仕様改訂１．１”、及び“ＰＣＩ対ＰＣＭＣＩＡ  ＣａｒｄＢｕｓブリッジ・レジスタ記述−Ｙｅｎｔａ仕様リリース２．３”の規格に従う。これらの規格において限定される構成空間ヘッダの３つのタイプがあり：エンドポイントに対するＴｙｐｅ  ０、ＰＣＩブリッジに対するＴｙｐｅ  １、及びＣａｒｄＢｕｓコントローラに対するＴｙｐｅ  ２である。構成空間ヘッダにおけるデータは、ハードウェア情報及び必要なリソース情報を含み、そしてＢＩＯＳまたはＯＳは、構成空間ヘッダにおける対応のビットを読取ることによりこれらのデータを取得することができる。
【００２５】
ＢＩＯＳまたはＯＳは、装置の対応の構成空間レジスタを書込むことにより装置を構成する。装置を構成することは、エラーの取り扱い及び割り込みの優先順位を設定することのような他の態様を包含するけれども、本発明においてここで考慮することは、システム・リソースの割当てまたは割付けだけである。装置のリソースは、I／Oの有効な範囲及び種々のメモリ・アクセスのためのアドレス（ベース・アドレス及びオフセット・アドレス）割当てである。
【００２６】
図２に戻って参照すると、スイッチ２１８に結合される、例えば、ＰＣＩｅ−ＰＣＩブリッジ２２６は、アダプタとして働き、ＰＣＩエンドポイント２２８をＰＣＩ  Ｅｘｐｒｅｓｓポート２３９（ａ）に結合し、そして構成空間ヘッダＴｙｐｅ  １として認識される。
【００２７】
ＲＣ２０４に結合されるＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０は、ＣａｒｄＢｕｓカードのようなＣａｒｄＢｕｓ装置をＰＣＩ  Ｅｘｐｒｅｓｓポート２３５（ｃ）に適合させるために用いられ、そしてＣａｒｄＢｕｓエンドポイント２２２に結合されるＣａｒｄＢｕｓ装置を支援するための機能を提供する。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０によって提供される機能は、バス・ハードウェア・プロトコル及び構成ロジックを提供すること及びＣａｒｄＢｕｓエンドポイント２２２のＣａｒｄＢｕｓソケットのパワー（ｐｏｗｅｒ）を制御することを含む。上述したように、ＣａｒｄＢｕｓコントローラは、構成空間ヘッダＴｙｐｅ  ２として定義される。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０は、構成空間ヘッダＴｙｐｅ  ２として認識され得る。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０のすべての構成空間レジスタのビットは、前述のオープン（ｏｐｅｎ）仕様において述べた定義に従う。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０に関する限り、フラットなメモリ・マッピングされたアドレス空間は、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０の構成空間レジスタをアクセスするために用いられる。メモリ・アドレス空間からＰＣＩｅ−ＣａｒｄＢｕｓコントローラの構成空間アドレスへのマッピングの詳細な定義は、前述のオープン仕様に見つけられることができる。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０のリソースの情報は、Ｔｙｐｅ  ２の構成空間レジスタに収容される。
【００２８】
ＰＣＩ  Ｅｘｐｒｅｓｓエンドポイント２２４、ＣａｒｄＢｕｓエンドポイント２２２、及びＰＣＩエンドポイント２２８は、対応のＩ／Ｏ装置と関連し得、そしてコンピュータ・システム２００のエンドポイントとして働く。すべてのエンドポイントは、前述のオープン仕様に従って、構成空間ヘッダＴｙｐｅ  ０によって表される。
【００２９】
一実施形態において、図２に示されるＰＣＩ  Ｅｘｐｒｅｓｓバス２４０、２４２、２４６、２５０、２５２、及び２５６のようなＰＣＩ  Ｅｘｐｒｅｓｓリンクは、コンピュータ・システム２００のモジュール及び装置を、仮想のＰＣＩ対ＰＣＩブリッジ（仮想のＰ２Ｐブリッジ）を通して互いに相互接続するよう用いられる。ＰＣＩ  Ｅｘｐｒｅｓｓリンクは、また、これらの仮想のＰ２Ｐブリッジの二次バスとして構成空間内にマッピングされる。例えば、ＰＣＩ  Ｅｘｐｒｅｓｓバス２４２は、ＲＣ２０４の仮想Ｐ２Ｐブリッジ２３４（ｂ）及びスイッチ２１８の仮想Ｐ２Ｐブリッジ２３６に結合されて、ＲＣ２０４をスイッチ２１８に相互接続し、そしてＲＣ２０４の仮想のＰ２Ｐブリッジ２３４（ｂ）の二次バスとして構成空間内にマッピングされる。
【００３０】
ＲＣ２０４における仮想Ｐ２Ｐブリッジ２３４（ａ）、２３４（ｂ）、２３４（ｃ）及び２３４（ｄ）は、ルート・ポート２３５（ａ）、２３５（ｂ）、２３５（ｃ）及び２３５（ｄ）と論理的に関連する。ルート・ポート２３５（ａ）、２３５（ｂ）、２３５（ｃ）及び２３５（ｄ）は、ＲＣ２０４における内部論理ＰＣＩバス２７０を介してホスト・ブリッジ２３２に結合され、また、“ピアーズ（ｐｅｅｒｓ）”または“ピアー装置（ｐｅｅｒ  ｄｅｖｉｃｅｓ）”と称され得るＰＣＩ  Ｅｘｐｒｅｓｓバス２４０、２４２、２５２及び２５６にも結合される。
【００３１】
スイッチ２１８における仮想Ｐ２Ｐブリッジ２３６、２４８（ａ）、及び２３８（ｂ）は、上流ポート２３７及びスイッチ２１８の下流ポート２３９（ａ）及び２３９（ｂ）と論理的に関連している。ＲＣ２０４は、上流ポート２３６及びＰＣＩ  Ｅｘｐｒｅｓｓリンク２４２を介してスイッチ２１８の内部論理ＰＣＩバス２４４に結合される。スイッチ２１８の下流ポート２３９（ａ）及び２３９（ｂ）は、仮想Ｐ２Ｐブリッジ２３８（ａ）及び２３８（ｂ）を介して内部バス・セグメント２４４に結合され、そして“ピアーズ（ｐｅｅｒｓ）”または“ピアー装置（ｐｅｅｒ  ｄｅｖｉｃｅｓ）”と称され得る。スイッチ２１８の下流ポート２３９（ａ）及び２３９（ｂ）は、ＰＣＩ  Ｅｘｐｒｅｓｓバス２４６及び２５０を内部論理ＰＣＩバス２４４に結合するよう用いられる。
【００３２】
構成されたとき、コンピュータ・システム２００における装置及びバスは、階層的トポロジで配列される。装置の検出及びリソースの割付けは、親装置から子装置にまたは一次バスから二次バスにあるべきである。図２を参照すると、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０に対し、ＲＣ２０４を介してＣＰＵ２０２に結合されるＰＣＩ  Ｅｘｐｒｅｓｓバス２５２は、より高レベルの一次バスであり、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０からＣａｒｄＢｕｓエンドポイント２２２へのＣａｒｄＢｕｓ２５４は、より低レベルの二次バスである。ＲＣ２０４の仮想Ｐ２Ｐブリッジ２３５（ｃ）は、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０の親装置であり、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０は、ＲＣ２０４の子装置である。本発明の一実施形態によれば、コンピュータ・システム２００における複数レベル・バスを検出するための順序付け原理（ordering principle）は、より高レベルのバスからより低レベルのバスへ、そして左から右に１つずつである。例えば、ＲＣ２０４は、遭遇されて番号付けられる最初の装置である。ＲＣ２０４において、ホスト・ブリッジ２３２は、最初に走査される。ホスト・ブリッジ２３２の後方の内部論理ＰＣＩバス２７０が構成されて、一次番号Ｂｕｓ  ０に割り当てられる。次ぎに、内部論理ＰＣＩバス２７０の後方のルート・ポート２３４（ａ）、２３４（ｂ）、２３４（ｃ）及び２３４（ｄ）は、ＰＣＩ  Ｅｘｐｒｅｓｓバス２４０、２４２、２５２、及び２５６が番号付けられるように走査される。ＧＦＸ２０６をＲＣ２０４に結合するＰＣＩ  Ｅｘｐｒｅｓｓバス２４０が構成されて、Ｂｕｓ  １に割り当てられる。ＰＣＩ  Ｅｘｐｒｅｓｓバス２４２は、Ｂｕｓ  ２として番号付けられるかまたはＢｕｓ  ２に割り当てられ、そして次に、ＰＣＩ  Ｅｘｐｒｅｓｓバス２４２の下位のバスが番号付けられる。ＰＣＩ  Ｅｘｐｒｅｓｓバス２４２の後方の内部論理ＰＣＩバス２４４は、Ｂｕｓ  ３として番号付けられる。スイッチ２１８の下流ポート２３９（ａ）に結合されるＰＣＩバス２４４の下位のバスであるＰＣＩ  Ｅｘｐｒｅｓｓバス２４６は、Ｂｕｓ  ４として番号付けられる。同様に、ＰＣＩｅ−ＰＣＩブリッジ２２６が検出され、ＰＣＩｅ−ＰＣＩブリッジ２２６の後のＰＣＩバス２４８が認識されて、Ｂｕｓ  ５として番号付けられる。ＰＣＩバス２４４の下位のバスであるＰＣＩ  Ｅｘｐｒｅｓｓバス２５０は、Ｂｕｓ  ６として番号付けられる。このような態様で、ＰＣＩ  Ｅｘｐｒｅｓｓバス２５４及び２５６は、それぞれ、Ｂｕｓ  ８及びＢｕｓ  ９で番号付けられる。具体的にいうと、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０が検出され、Ｂｕｓ  ７として番号付けられるＰＣＩ  Ｅｘｐｒｅｓｓバス２５２に対応する優先レベルに割り当てられる。
【００３３】
バスを検出するための他の順序付けアルゴリズムもまた本発明の他の実施形態に従って適用され得るということが当業者には理解されるであろう。もう１つの実施形態においては、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０は、ＲＣ２０４に結合されるようスイッチ２１８に結合され得る。
【００３４】
コンピュータ・システム２００が作動されるかまたはブートされたとき、コンピュータ・システム２００のＢＩＯＳは、コンピュータ・システム２００におけるモジュール及び装置を検出もしくは構成するであろう。明瞭にするために、ＰＣＩｅエンドポイント２２４の検出及び構成プロセスを例として取る。コンピュータ・システム２００におけるＰＣＩｅエンドポイント２２４が発見されたとき、ＰＣＩｅエンドポイント２２４は、上記した独特のバス番号、独特の装置番号及び独特の機能番号で初期設定される。Ｉ／Ｏ空間イネーブル、メモリ空間イネーブル、及びバス・マスタ・イネーブル・ビットを含む、ＰＣＩｅエンドポイント２２４の構成空間におけるコマンド・レジスタがセットされる。メモリ・ウインド、プレフェッチ可能なメモリ・ウインド及びＩ／Ｏウインドを含む、すべての必要とされるリソースがセットされる。代替的には、必要とされるリソースのセッティング・プロセスは、スキップされ得、そして次に、ＯＳが、ＰＣＩｅエンドポイント２２４のためのデフォルト・リソースをセットすることができる。次に、ＬｅｇａｃｙＢａｓｅＡｄｄｒｅｓｓが、レガシ(legacy)・モードＩ／Ｏベース・アドレスにセットされ、そして、ＲｅｇｉｓｔｅｒＢａｓｅＡｄｄｒｅｓｓ及びＩｎｔｅｒｒｕｐｔ  Ｌｉｎｅ（割込みライン）レジスタがセットされる。
【００３５】
本発明の一実施形態によるＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０の再構成プロセスを詳細に説明する。最初に、コンピュータ・システム２００のトポロジが再走査される。従って、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０の場所が確認され、そして割付けられたリソースが検出される。トップ・レベル・バス２７０（Ｂｕｓ  ０）に割付けられた全デフォルト・リソースが検出され、そしてトップ・レベル・バス２７０の割付けられたリソースの情報が、ＲＣ２０４の構成空間における対応のレジスタを読取ることにより得られる。トップ・レベル・バス２７０と同様に、ＲＣ２０４のＰＣＩ  Ｅｘｐｒｅｓｓルート・ポート２３５（ａ）、２３５（ｂ）、２３５（ｃ）及び２３５（ｄ）のような、ピアー装置にＢＩＯＳまたはＯＳによって割付けられたリソースが検出される。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０に関しては、リソースは、仮想Ｐ２Ｐブリッジ２３４（ｃ）を通してＲＣ２０４からそれに通されるべきである。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０及び仮想Ｐ２Ｐブリッジ２３４（ｃ）の双方は、リソースを消費しないということが留意されるべきである。割付けられたリソースは、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０の下位の装置であってかつリソースを実際に消費するＣａｒｄＢｕｓカードのようなＩ／Ｏ装置に結合されるＣａｒｄＢｕｓエンドポイント２２２に、仮想Ｐ２Ｐブリッジ２３４（ｃ）及びＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０を介して渡される。Ｉ／Ｏ装置と関連したＣａｒｄＢｕｓエンドポイント２２２に対する適切なリソースは、トップ・レベル・バス２７０に由来され得る。
【００３６】
ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０に対する割付け可能なリソースが計算される。上述したように、割付け可能なリソースは、メモリ、プレフェッチ可能メモリ及びＩ／Ｏのベース・アドレス及びオフセット・アドレスを含む。ベース・アドレスは、リソース占有の開始アドレスを示し、他方、オフセット・アドレスは、ウインド・サイズの限界を示す。メモリ・アドレス、プレフェッチ可能アドレス及びＩ／Ｏアドレスは、連続的に割当てられ、そして自然に整列されるということが当業者には理解されるであろう。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０に対する空いているまたは割付け可能なリソースは、トップ・レベル・バス２７０の全デフォルト・リソースから、仮想Ｐ２Ｐブリッジ２３４（ｃ）のピアー装置（仮想Ｐ２Ｐブリッジ２３４（ａ）、２３４（ｂ）及び２３４（ｄ））に割付けられる部分的デフォルト・リソースを減算することにより計算され得る。明瞭にするために、メモリ空間ウインドの割当てが例として取られる。コンピュータ・システム２００は、４ＧＢのアドレス指定能力を所持し、それにおいて、ＣＰＵ２０２がＲＣ２０４（トップ・レベル・バス２７０）のホスト・ブリッジ２３２に割当てたメモリ・ウインドの１ＧＢがある。メモリ・ウインドの１２８ＭＢは、ＧＦＸ２０６（ＰＣＩ  Ｅｘｐｒｅｓｓバス２４０）に結合される仮想Ｐ２Ｐブリッジ２３４（ａ）に通され、メモリ・ウインドの２５６ＭＢは、スイッチ２１８（ＰＣＩ  Ｅｘｐｒｅｓｓバス２４２）に結合される仮想Ｐ２Ｐブリッジ２３４（ｂ）に通され、１ＭＢは、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０（ＰＣＩ  Ｅｘｐｒｅｓｓバス２５２）に結合される仮想Ｐ２Ｐブリッジ２３４（ｃ）に通され、そして１ＭＢは、仮想Ｐ２Ｐブリッジ２３４（ｄ）（ＰＣＩ  Ｅｘｐｒｅｓｓバス２５６）を介してＲＣ２０４に結合されるＰＣＩ  Ｅｘｐｒｅｓｓエンドポイント２２４に通される。仮想Ｐ２Ｐブリッジ２３４（ｃ）に割付けられるメモリ・ウインドの１ＧＢのうちの１ＭＢだけがある。利用可能な残りのリソースは、６３８ＭＢ（１０２４−１２８−２５６−１−１＝６３８ＭＢ）である。このようなわけで、仮想Ｐ２Ｐブリッジ２３４（ｃ）に前もって割付けられるメモリの１ＭＢだけがあるけれども、今や実際には、仮想Ｐ２Ｐブリッジ２３４（ｃ）が１ＭＢよりも大きいメモリ・ウインドを必要とするとき、再割当てのために利用可能なメモリ・ウインドの６３８＋１＝６３９ＭＢがある。検出の方法もまた、プレフェッチ可能なメモリ・ウインド割当ておよびＩ／Ｏウインド割当てに適用され得る。それにもかかわらず、仮想Ｐ２ＰブリッジのためのＩ／ＯウインドがＩ／Ｏ空間における４ＫＢ境界上に整列されなければならないので、ウインドは、Ｉ／Ｏ空間において４ＫＢの倍数で仮想Ｐ２Ｐブリッジに割当てられなければならない。
【００３７】
引き続き、仮想Ｐ２Ｐブリッジ２３４（ｃ）のための、メモリ・ウインド、プレフェッチ可能なメモリ・ウインド、Ｉ／Ｏウインド及びそのベース・アドレスを含む親リソースが、要求有り次第、更新され再割り当てされる。例えば、メモリ・ウインドの２ＭＢ及びＩ／Ｏウインドの４ＫＢが、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０に結合される仮想Ｐ２Ｐブリッジ２３４（ｃ）に割付けられる。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０がメモリ・ウインド及びＩ／Ｏウインドをそれぞれ２ＭＢ及び４ＫＢ以上に必要としたとき、利用可能な残りのリソースは、再割当てされたリソースが利用可能なリソースの範囲内にある限りにおいて、仮想Ｐ２Ｐブリッジ２３４（ｃ）に再割当てされ得る。
【００３８】
最後に、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０のための子のリソースが更新されて再割付けされる。当業者は、子の装置に通される子のリソースが、親の装置の親のリソースの範囲内になければならないということを理解するであろう。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０の親の装置である仮想Ｐ２Ｐブリッジ２３４（ｃ）が、再割当てされた充分なリソースであるので、ＰＣＩ  Ｅｘｐｒｅｓｓバス２５２は、ＲＣ２０４の仮想Ｐ２Ｐブリッジ２３４（ｃ）と一緒に更新され得る。ＰＣＩ  Ｅｘｐｒｅｓｓバス２５２、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０の一次バス、は、利用可能なリソースをＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０に通す。このようなわけで、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０のためのリソースは、更新され再割付けされる。一実施形態において、ＲＣ２０４の仮想Ｐ２Ｐブリッジ２３４（ｃ）に割付けられる親リソースのすべては、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０に通され得る。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０は、動作してその子装置に通すために最大の利用可能なリソースを受信する。ＣａｒｄＢｕｓカードがＣａｒｄＢｕｓエンドポイント２２２に結合したとき、それは、起動して正しく動作するために、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０から充分な子の装置を得ることができる。再構成が完了したとき、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ２２０のコマンド・レジスタにおける、メモリ空間イネーブル（可能化）、Ｉ／Ｏ空間イネーブル（可能化）、バス・マスタ・イネーブル（可能化）・ビットがセットされる。再構成プログラムは、本発明の異なった実施形態に従って、ＢＩＯＳにおいてまたは注文製のソフトウェア・ドライバにおいて履行され得る。
【００３９】
図３を参照すると、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に従うコンピュータ・システムにおけるＰＣＩｅ−ＣａｒｄＢｕｓコントローラを動的かつ適合的に再構成するための方法３００が、本発明の一実施形態に従って示されている。当業者は、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラのような周辺装置相互接続エクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ）で構成されるコンピュータ・システムにおける装置が、該コンピュータ・システムが最初に作動されるかまたは起動されるときに、初期設定されない状態にセットされるということを理解するであろう。コンピュータ・システムのＢＩＯＳは、コンピュータ・システムをブート・アップするよう作動される。
【００４０】
図３に示されるように、３０２において、コンピュータ・システムの階層的トポロジが装置ツリーを構築するために検出される。コンピュータ・システムの装置が検出されると、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを含むすべての装置が、装置ツリーを創設するために限定されて番号付けられる。コンピュータ・システムにおけるすべてのバス及び装置の装置ツリーは、階層的トポロジ関係のソフトウェア表示である。ソフトウェアは、装置のそれぞれの構成空間ヘッダに番号を書込み、これらの番号に従って装置ツリーを創設する。書込まれた装置番号、並びにバス番号及び機能番号は、装置の対応の構成空間ヘッダにおいて読み出され得る。コンピュータ・システムのすべての装置が構成された後、デフォルト・リソースが、ソフトウェア駆動される初期設定及び構成のためにＢＩＯＳまたはＯＳによって割付けられる。コンピュータ・システムの装置のリソースは、Ｉ／Ｏ及び種々のメモリ・アクセスの有効な範囲のためのアドレス（ベース・アドレス及びオフセット・アドレス）割当てを含む。
【００４１】
３０４において、ＢＩＯＳまたはＯＳによって割付けられたデフォルト・リソースが検出される。コンピュータ・システムのルート・コンプレックス（a root complex）（ＲＣ）の構成空間におけるアドレス・レジスタを読取ることによって、トップ・レベル・バスに割付けられた全デフォルト・リソースが検出される。トップ・レベル・バスと同様に、ＲＣのＰＣＩ  Ｅｘｐｒｅｓｓルート・ポート（ｒｏｏｔ  ｐｏｒｔｓ）のようなピアー装置にＢＩＯＳまたはＯＳによって割付けられたリソースは、ルート・ポートに結合された装置の構成空間における対応のアドレス・レジスタを読取ることによって検出される。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに関しては、リソース情報は、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラのＴｙｐｅ  ２の構成空間レジスタ内に収容される。デフォルト・リソースは、ＲＣからルート・ポートの１つにおける仮想Ｐ２Ｐブリッジを介してＰＣＩｅ−ＣａｒｄＢｕｓコントローラに通される。部分的デフォルト・リソースは、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに結合されないルート・ポートの仮想Ｐ２Ｐブリッジに、全デフォルト・リソースから割付けられる。
【００４２】
３０６において、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラのための割付け可能なリソースが計算される。該リソースは、例えば、メモリ、プレフェッチ可能なメモリ及びＩ／Ｏのベース・アドレス及びオフセット・アドレスを含む。メモリ・アドレス、プレフェッチ可能メモリ・アドレス及びＩ／Ｏアドレスは、隣接して割当てられかつ自然に配列されるので、空いているまたは割付け可能なリソースは、トップ・レベル・バスの検出された全デフォルト・リソースから、ＣａｒｄＢｕｓコントローラに結合された仮想Ｐ２Ｐブリッジのピアー装置に割付けられた部分的なデフォルト・リソースを差し引くことにより計算され得る。占有されない残りのリソースは、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに対して利用可能である。
【００４３】
３０８において、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラの親装置（ＲＣにおける１つの仮想Ｐ２Ｐブリッジ）のための、メモリ・ウインド、プレフェッチ可能なメモリ・ウインド、Ｉ／Ｏウインド及びそのベース・アドレスを含む親リソースが要求有り次第更新されかつ再割当てされる。例えば、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、ＲＣのポートの１つに結合され、メモリ・ウインドの２ＭＢ及びＩ／Ｏウインドの４ＫＢは、ＲＣのルート・ポートの一方の仮想Ｐ２Ｐブリッジに割付けられる。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラが、メモリ・ウインド及びＩ／Ｏウインドをそれぞれ２ＭＢ及び４ＫＢ以上必要とするとき、利用可能な残りの親リソースは、再割当てされたリソースが３０６において計算された利用可能なリソースの範囲内にある限りにおいて、仮想Ｐ２Ｐブリッジに再割当てされることができる。
【００４４】
３１０において、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラのための子リソースが更新されて再割付けされる。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラの親装置としてのＲＣの仮想Ｐ２Ｐブリッジが３０８において充分なリソースを再割当てされるので、利用可能なリソースは、仮想Ｐ２Ｐブリッジを介してＰＣＩｅ−ＣａｒｄＢｕｓコントローラに通されることができ、そしてＰＣＩｅ−ＣａｒｄＢｕｓコントローラのためのリソースが更新されて再割付けされる。一実施形態において、仮想Ｐ２Ｐブリッジに割付けられる親リソースのすべては、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラに通されることができる。このようなわけで、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、動作してその装置に通すために最大の利用可能なリソースを受信する。ＣａｒｄＢｕｓカードがＣａｒｄＢｕｓエンドポイントに結合したとき、それは、起動して正しく動作するためにＰＣＩｅ−ＣａｒｄＢｕｓコントローラから充分なリソースを得ることができる。
【００４５】
図４を参照すると、完全なコンピュータ・システムを構成するための方法４００が、本発明の一実施形態に従って示されている。この実施形態においては、図４に示されるような方法４００は、Ｗｉｎｄｏｗｓ（登録商標）  ２０００（Ｒ）またはＷｉｎｄｏｗｓ（登録商標）  ＸＰ（Ｒ）システムのオペレーティング・システムと一緒にＰＣＩ  Ｅｘｐｒｅｓｓベースのコンピュータ・システムに適用される。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを動的に再構成するための方法３００は、ＰＣＩ  Ｅｘｐｒｅｓｓベースのコンピュータ・システムにおけるＢＩＯＳファームウェアにコード化されまたはプログラミングされる。
【００４６】
４０２において、コンピュータ・システムの装置は、ＢＩＯＳによって検出されかつ構成される。コンピュータ・システムが作動されまたはブート・アップされるとき、コンピュータ・システムにおける装置が発見されて、独特のバス番号で初期設定される。装置のいずれか１つの構成空間におけるコマンド・レジスタが、Ｉ／Ｏ空間イネーブル（可能化）、メモリ空間イネーブル（可能化）及びバス・マスタ・イネーブル（可能化）・ビットを含んでセットされる。任意選択的には、メモリ・ウインド、プレフェッチ可能なメモリ・ウインド及びＩ／Ｏウインドを含む、必要とされるリソースが、次にセットされる。ＬｅｇａｃｙＢａｓｅＡｄｄｒｅｓｓがレガシ・モードＩ／Ｏベース・アドレスにセットされ、ＲｅｇｉｓｔｅｒＢａｓｅＡｄｄｒｅｓｓがセットされ、そして割込みライン・レジスタがセットされる。次に、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを動的に再構成するための方法が、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラのＣａｒｄＢｕｓエンドポイントのＩ／Ｏ装置にリソースを割付けるために実行される。コンピュータ・システムのＢＩＯＳを実行した後、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、デフォルトによってＰＣ  Ｃａｒｄ  Ｉ／Ｏ  Ｃａｒｄ（ＰＣＩＣ）モードにセットされ、それにより、ＯＳは、ＢＩＯＳがオペレーティング・システムに制御を転送する前に、どのＩＳＡ（工業規格体系）割込みがＰＣＩｅ−ＣａｒｄＢｕｓコントローラに添付されたかを決定することができる。
【００４７】
４０４において、ＢＩＯＳはオペレーティング・システムに制御を転送する。ＮＴＤｅｔｅｃｔ．ｃｏｍのようなオペレーティング・システムにおけるコンピュータ・システムのハードウェア情報を構成するためのシステム・ファイルがロードされ、ＣａｒｄＢｕｓエンドポイントに結合されるＲ２カードを支援するためのＩＳＡ割込みを識別するために走査を実行する。システム・ファイルがＩＳＡ割込みを走査した後、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、ＰＣＩＣモードにないであろう。次に、アドバンスト・コンフィギュレーション・パワー・インターフェース（ＡＣＰＩ）が開始される。ＡＣＰＩは、ＯＳが、コンピュータ・システムにおける装置に配分される電力の量を制御するのを可能とする電力管理仕様である。オペレーティング・システムが、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラをＣａｒｄＢｕｓモードに置くために＿ＩＮＩ制御方法のようなシステム方法を要求するとき、ＡＣＰＩドライバが支援される。オペレーティング・システムは、コンピュータ・システムの装置を管理するためにＡＣＰＩドライバを使用する。
【００４８】
４０６において、オペレーティング・システムは、コンピュータ・システムにおける装置を列挙し、構成されない装置にデフォルト・リソースを割当てる。コンピュータ・システムのトポロジが走査され、そしてその中の構成されない装置が列挙において検出される。ＡＣＰＩは、オペレーティング・システムに支配を引き渡し、そしてオペレーティング・システムは、ブートアップ・プロセスを続ける。
【００４９】
図５を参照すると、コンピュータ・システムを構成するためのもう１つの方法５００が、本発明のもう１つの実施形態に従って示されている。この実施形態においては、図５に示される方法５００は、Ｗｉｎｄｏｗｓ（登録商標）  ２０００（Ｒ）またはＷｉｎｄｏｗｓ（登録商標）  ＸＰ（Ｒ）システムのオペレーティング・システムと一緒に、ＰＣＩ  Ｅｘｐｒｅｓｓベースのコンピュータ・システムに適用される。ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを動的に再構成するための方法３００が、注文製のソフトウェア・ドライバにコード化されるかまたはプログラミングされ、そして注文製のソフトウェア・ドライバは、オペレーティング・システムにインストールされる。
【００５０】
５０２において、コンピュータ・システムの装置がＢＩＯＳによって検出されて構成される。コンピュータ・システムが作動されるかまたはブート・アップされると、コンピュータ・システムにおける装置が発見されて独特の装置番号で初期設定される。装置のいずれか１つの構成空間におけるコマンド・レジスタが、Ｉ／Ｏ空間イネーブル（可能化）、メモリ空間イネーブル（可能化）、及びバス・マスタ・イネーブル（可能化）・ビットを含んで、セットされる。コンピュータ・システムのＢＩＯＳを実行した後、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラは、デフォルトによりＰＣ  Ｃａｒｄ  Ｉ／Ｏ  Ｃａｒｄ（ＰＣＩＣ）モードにセットされ、それ故、ＯＳは、ＢＩＯＳがオペレーティング・システムに制御を転送する前に、どのＩＳＡ（工業規格体系）割込みがＰＣＩｅ−ＣａｒｄＢｕｓコントローラに添付されるかを決定することができる。
【００５１】
５０４において、手順は、図４に示される４０４における手順と同様であり、ＢＩＯＳは、オペレーティング・システムに制御を転送する。オペレーティング・システムのＰＣＩドライバは、ロードされる。
【００５２】
５０６において、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを動的に再構成するための方法３００のコーディングと共に、注文製のソフトウェア・ドライバが作動されるかまたは実行される。コンピュータ・システムのＣａｒｄＢｕｓエンドポイントに結合されるＣａｒｄＢｕｓカードは、起動して正しく動作するために、ＰＣＩｅ−ＣａｒｄＢｕｓコントローラから充分なリソースを得ることができる。
【００５３】
５０８において、オペレーティング・システムは、コンピュータ・システムにおける装置を列挙し、構成されない装置にデフォルト・リソースを割当てる。コンピュータ・システムのトポロジが再走査され、そしてその中の構成されない装置が列挙の中に検出される。ＡＣＰＩは、オペレーティング・システムに支配を引き渡し、そしてオペレーティング・システムは、ブートアップ・プロセスを続ける。
【００５４】
本発明の他の実施形態によれば、正しく構成されることができない、またはＢＩＯＳ及びＯＳによって充分なデフォルトが割当てられることができない任意のタイプの装置は、図３、図４及び図５に示された方法３００、４００及び５００に従って適切なリソースが割付けられ得る。
【００５５】
前述の説明及び図面は、本発明の好適な実施形態を表すけれども、添付の特許請求の範囲に限定される本発明の原理の精神及び範囲から逸脱することなく、種々の追加、変更及び置換えが為され得るということが理解されるであろう。当業者は、本発明の原理から逸脱することなく特定の環境及び動作要件に特に適合される、本発明の実施において用いられる、形態、構造、配列、比率、材料、素子及び構成要素、その他の多くの変更と共に本発明を用いることができるということを理解するであろう。従って、ここに開示された実施形態は、すべての点において、説明のためのものであり、制限するものではないと考慮されるべきであり、本発明の範囲は特許請求の範囲及びそれらの合法的な等価物によって示されるものであり、前述の記載に制限されるべきではない。
【図面の簡単な説明】
【００５６】
【図１】ＰＣＩｅ−ＣａｒｄＢｕｓコントローラを構成するための方法を示す従来のフローチャートである。
【図２】本発明の一実施形態によるコンピュータ・システムを示す図である。
【図３】本発明の一実施形態によるＰＣＩｅ−ＣａｒｄＢｕｓコントローラを動的に再構成するための方法を示すフローチャートである。
【図４】本発明の一実施形態によるコンピュータ・システムを動的に構成するための方法を示すフローチャートである。
【図５】本発明のもう１つの実施形態によるコンピュータ・システムを動的に構成するためのもう１つの方法を示すフローチャートである。
【符号の説明】
【００５７】
２００      コンピュータ・システム
２０２      中央処理ユニット（ＣＰＵ）
２０４      ルート・コンプレックス（ＲＣ）
２０６      グラフィックス・カード（ＧＦＸ）
２０８      メモリ
２１８      スイッチ
２２０      ＰＣＩｅ−ＣａｒｄＢｕｓコントローラ
２２２      ＣａｒｄＢｕｓエンドポイント
２２４      ＰＣＩ  Ｅｘｐｒｅｓｓエンドポイント
２２６      ＰＣＩ  Ｅｘｐｒｅｓｓ対ＰＣＩ／ＰＣＩ−Ｘブリッジ
２２８      ＰＣＩエンドポイント
２３２      ホスト・ブリッジ
２３４（ａ）、（ｂ）、（ｃ）、（ｄ）      仮想Ｐ２Ｐブリッジ
２３５      ＰＣＩ  Ｅｘｐｒｅｓｓポート
２３５（ａ）、（ｂ）、（ｃ）、（ｄ）      ルート・ポート
２３６      仮想Ｐ２Ｐブリッジ
２３９      ＰＣＩ  Ｅｘｐｒｅｓｓポート
２４０、２４２、２４６、２５０、２５２、２５６      ＰＣＩ  Ｅｘｐｒｅｓｓバス
２４４      内部論理ＰＣＩバス
２４８      ＰＣＩバス
２５４      ＣａｒｄＢｕｓ
２７０      内部論理ＰＣＩバス
【図１】
2009070368.tif 000003
【図２】
2009070368.tif 000004
【図３】
2009070368.tif 000005
【図４】
2009070368.tif 000006
【図５】
2009070368.tif 000007