(57)【特許請求の範囲】
【請求項１】
複数のファンクションを備えるＩ／Ｏデバイスに接続するスイッチング装置において、
前記複数のファンクションのそれぞれに割りあてられる、パケットの宛先のバス番号を有するテーブルと、
ハイパーバイザから受信したパケットが前記Ｉ／Ｏデバイスに対してデータの読み込み又は書き込みを行うパケットである場合、複数の前記テーブルから前記パケットの宛先のバス番号を含むテーブルを選択し、選択したテーブルの番号を通知し、ファンクションの追加指示が入力されたとき、追加対象のファンクションに対応する仮想スロットの状態を有効として更新する処理部と、
前記パケットの宛先のファンクション番号を前記処理部から通知されたテーブルの番号に変更し、前記処理部で前記仮想スロットの状態が有効として更新され、ファンクションの追加が指示された前記ハイパーバイザから該Ｉ／Ｏデバイスに対するスキャン要求のパケットを受けると、前記ファンクションに対するスキャン要求のパケットのみを通し、該ファンクションからの応答を前記ハイパーバイザに送信し、該ファンクション以外のファンクションに対するスキャン要求のパケットを遮断し、エラー応答を前記ハイパーバイザに送信するフィルタと、
を備えることを特徴とするスイッチング装置。
【請求項２】
スイッチング装置と、ハイパーバイザを実行するプロセッサと、複数のファンクションを備えるＩ／Ｏデバイスと前記スイッチング装置との間に接続されるＩ／Ｏスロットとを備える情報処理装置において、
前記スイッチング装置は、
前記複数のファンクションのそれぞれに割りあてられる、パケットの宛先のバス番号を有するテーブルと、
ハイパーバイザから受信したパケットが前記Ｉ／Ｏデバイスに対してデータの読み込み又は書き込みを行うパケットである場合、複数の前記テーブルから前記パケットの宛先のバス番号を含むテーブルを選択し、選択したテーブルの番号を通知し、ファンクションの追加指示が入力されたとき、追加対象のファンクションに対応する仮想スロットの状態を有効として更新する処理部と、
前記パケットの宛先のファンクション番号を前記処理部から通知されたテーブルの番号に変更し、前記処理部で前記仮想スロットの状態が有効として更新され、ファンクションの追加が指示された前記ハイパーバイザから該Ｉ／Ｏデバイスに対するスキャン要求のパケットを受けると、前記ファンクションに対するスキャン要求のパケットのみを通し、該ファンクションからの応答を前記ハイパーバイザに送信し、該ファンクション以外のファンクションに対するスキャン要求のパケットを遮断し、エラー応答を前記ハイパーバイザに送信するフィルタと、
を備えることを特徴とする情報処理装置。
【請求項３】
複数のファンクションを備えるＩ／Ｏデバイスに接続すると共に前記複数のファンクションのそれぞれに割りあてられる、パケットの宛先のバス番号を有するテーブルを備えるスイッチング装置の制御方法において、
ハイパーバイザから受信したパケットが前記Ｉ／Ｏデバイスに対してデータの読み込み又は書き込みを行うパケットである場合、複数の前記テーブルから前記受信したパケットの宛先のバス番号を含むテーブルを選択し、
前記受信したパケットの宛先のファンクション番号を選択された前記テーブルの番号に変更し、
ファンクションの追加指示が入力されたとき、追加対象のファンクションに対応する仮想スロットの状態を有効として更新し、
前記仮想スロットの状態が有効として更新され、ファンクションの追加が指示された前記ハイパーバイザから該Ｉ／Ｏデバイスに対するスキャン要求のパケットを受けると、前記ファンクションに対するスキャン要求のパケットのみを通し、該ファンクションからの応答を前記ハイパーバイザに送信し、該ファンクション以外のファンクションに対するスキャン要求のパケットを遮断し、エラー応答を前記ハイパーバイザに送信する
ことを特徴とするスイッチング装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチング装置、情報処理装置、及びスイッチング装置の制御方法に関する。
【背景技術】
【０００２】
従来より、Ｉ／Ｏスロットを持つＰＣＩバス又はＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）などの標準Ｉ／Ｏバスに対して、Ｉ／Ｏデバイス（例えば、ネットワークインターフェイスカード（ＮＩＣ）など）の活性挿抜を可能にするホットプラグが標準化されている。従来のホットプラグは、Ｉ／Ｏスロットに対して規定されている。Ｉ／ＯデバイスがＩ／Ｏスロットに活性挿抜されると、ホットプラグコントローラがＯＳに対して割り込みを発生する。ＯＳは、ホットプラグコントローラの状態を参照し、Ｉ／ＯデバイスがＩ／Ｏスロットに挿入されたか又はＩ／Ｏスロットから抜かれたかを判断する。これによって、ＯＳは、対応するデバイスドライバの有効化又は無効化を行う。
【０００３】
図１は、サーバ及びＩ／Ｏデバイスの概略構成図である。図１において、サーバ１００は、ＣＰＵ（Central Processing Unit）１１１、メモリ１１２、ルートコンプレックス１１３、PCI Express スイッチ１１４（以下、ＰＣＩｅスイッチという）及びＩ／Ｏスロット１２０，１２１を備えている。メモリ１１２は、仮想マシンを実現するための制御プログラムとしてのハイパーバイザ１０４、及びＢＩＯＳ（Basic Input/Output System）１０６を備えている。ハイパーバイザ１０４は、１つ以上の仮想マシン（Virtual Machine、以下略してVMとも言う）を制御する。また、ハイパーバイザ１０４は、後述するファンクション１２２−０〜１２２−３，１２３−０を制御するドライバ１０５Ａ〜１０５Ｃを含む。ＣＰＵ１１１は、メモリ１１２内のハイパーバイザ１０４を実行することにより、仮想マシン（ＶＭ）１０１，１０２，１０３を実現する。また、ＣＰＵ１１１は、メモリ１１２に格納されているＢＩＯＳ１０６を読み出して実行する。ルートコンプレックス１１３は、ＰＣＩｅシステムの根幹となるデバイスであり、ホスト・ブリッジを内蔵し、ＣＰＵ１１１に接続されている。ＰＣＩｅスイッチ１１４は、Ｉ／Ｏデバイスを接続するＩ／Ｏスロットを増やすためのデバイスである。Ｉ／Ｏスロット１２０，１２１は、それぞれＩ／Ｏデバイス１２２，１２３を接続するための機構である。
【０００４】
ＰＣＩｅスイッチ１１４は、上流PCI-to-PCIブリッジ（以下Ｐ２Ｐブリッジという）１１５、及び下流Ｐ２Ｐブリッジ１１６，１１８を備えている。ここでは、ＣＰＵ１１１側を上流とし、Ｉ／Ｏデバイス１２２，１２３側を下流としている。上流Ｐ２Ｐブリッジ１１５及び下流Ｐ２Ｐブリッジ１１６，１１８は、不図示の上流側バス（即ちprimary bus）と不図示の下流側バス（即ちsecondary bus）とを接続し、２つのバスの間でパケットの転送を行う。下流Ｐ２Ｐブリッジ１１６，１１８は、ホットプラグコントローラ１１７，１１９をそれぞれ備えている。ホットプラグコントローラ１１７，１１９は、Ｉ／Ｏスロットに活性挿抜されるＩ／Ｏデバイスを検知し、ハイパーバイザ１０４にＩ／Ｏデバイスが挿抜されたことを割り込み信号を使って通知する。
【０００５】
Ｉ／Ｏデバイス１２２は、複数のファンクション１２２−０，１２２−１を備えている。Ｉ／Ｏデバイス１２３も、ファンクション１２３−０を備えている。ＰＣＩｅシステムでは、最下流に位置するＩ／Ｏデバイス１２２，１２３をエンドポイントと呼ぶこともある。ファンクション１２２−０，１２２−１の各々は、Ｉ／Ｏデバイス１２２内でまとまった機能をハイパーバイザ１０４又はＢＩＯＳ１０６に対して提供する単位である。１つのＩ／Ｏデバイス内に複数のファンクションを有することをマルチファンクションという。例えば、Ｉ／Ｏデバイス１２２が２つのポートを有するデュアルポートＮＩＣであれば、Ｉ／Ｏデバイス１２２は、２つのファンクションを有する。ハイパーバイザ１０４は、各仮想マシンに、使用するファンクションを割り当てることができる。例えば、ハイパーバイザ１０４は、仮想マシン１０１にファンクション１２２−０を割り当て、仮想マシン１０２にファンクション１２２−１を割り当てる。
【０００６】
ＢＩＯＳ１０６は、サーバ１００の起動時に、ＰＣＩｅの規格により、ルートコンプレックス１１３、上流Ｐ２Ｐブリッジ１１５、下流Ｐ２Ｐブリッジ１１６，１１８、及びＩ／Ｏデバイス１２２，１２３内の各ファンクションに、バス番号、デバイス番号及びファンクション番号のセットを割り当てる。例えば、ＢＩＯＳ１０６は、図２の論理接続状態で示すように、ルートコンプレックス１１３、上流Ｐ２Ｐブリッジ１１５、下流Ｐ２Ｐブリッジ１１６及びＩ／Ｏデバイス１２２内の各ファンクションに、バス番号、デバイス番号及びファンクション番号のセットを割り当てる。
【０００７】
図３は、ＰＣＩｅスイッチ１１４の構成を示すブロック図である。
【０００８】
ＰＣＩｅスイッチ１１４は、上流Ｐ２Ｐブリッジ１１５、下流Ｐ２Ｐブリッジ１１６，１１８、上流ポート１３０、スイッチ１３１、及び下流ポート１３２，１３３を備えている。尚、下流ポート１３２は、図１のＩ／Ｏスロット１２０に対応し、下流ポート１３３は、図１のＩ／Ｏスロット１２１に対応する。
【０００９】
上流ポート１３０は、図１のルートコンプレックス１１３と接続するための物理的なリンクを提供する。下流ポート１３２，１３３は、それぞれ図１のＩ／Ｏデバイス１２２，１２３と接続するための物理的なリンクを提供する。上流Ｐ２Ｐブリッジ１１５は、コンフィグテーブル１１５Ａを有し、コンフィグテーブル１１５Ａを使って、ハイパーバイザ１０４又はＩ／Ｏデバイス１２２，１２３から受信したパケットの転送を制御する。スイッチ１３１は、パケットの内部転送先（即ち、下流Ｐ２Ｐブリッジ１１６又は１１８）を切り替える。
【００１０】
下流Ｐ２Ｐブリッジ１１６は、ブリッジ制御部１４２、コンフィグ処理部１４３及びコンフィグテーブル１４４を備えている。ブリッジ制御部１４２は、コンフィグテーブル１４４を参照して、パケットの転送を制御する。コンフィグテーブル１４４には、ハイパーバイザ１０４又はＢＩＯＳ１０６からコンフィグレーション空間として参照又は設定される情報が記憶されている。また、コンフィグテーブル１４４には、Ｉ／Ｏデバイス１２２が接続されたか否かを示すＩ／Ｏスロット１２０の状態の情報が記憶されている。コンフィグテーブル１４４は、図１のホットプラグコントローラ１１７の機能を提供する情報を有する。コンフィグ処理部１４３は、ホットプラグコントローラ１１７の機能を有する。
【００１１】
次に、サーバ１００にＩ／Ｏデバイス１２２が接続されたときのサーバ１００の動作及びサーバ１００からＩ／Ｏデバイス１２２が取り外されたときのサーバ１００の動作を説明する。図４（Ａ）は、サーバ１００にＩ／Ｏデバイス１２２が接続されたときのサーバ１００の動作を示すフローチャートである。図４（Ｂ）は、サーバ１００からＩ／Ｏデバイス１２２が取り外されたときのサーバ１００の動作を示すフローチャートである。
【００１２】
図４（Ａ）において、Ｉ／Ｏスロット１２０上の回路（不図示）が、Ｉ／Ｏデバイス１２２の存在を検出し、Ｉ／Ｏデバイス１２２の存在をホットプラグコントローラ１１７に通知する（ステップＳ２０１）。ホットプラグコントローラ１１７は、コンフィグテーブル１４４内のＩ／Ｏスロット１２０の状態の情報をＩ／Ｏデバイス１２２が接続されたことを示す情報に更新する（ステップＳ２０２）。その後、ホットプラグコントローラ１１７は、ハイパーバイザ１０４に対し割り込み信号を発生する（ステップＳ２０３）。
【００１３】
ハイパーバイザ１０４は、コンフィグテーブル１４４内のＩ／Ｏスロット１２０の更新された状態の情報を参照し、Ｉ／Ｏデバイス１２２の存在を検出する（ステップＳ２０４）。ハイパーバイザ１０４は、ホットプラグコントローラ１１７にＩ／Ｏスロット１２０の有効（enable）を指示する（ステップＳ２０５）。具体的には、ハイパーバイザ１０４は、コンフィグテーブル１４４内の、Ｉ／Ｏスロット１２０からＩ／Ｏデバイス１２２に電力を供給するフラグを有効（enable）に書き換える。これにより、Ｉ／Ｏスロット１２０はＩ／Ｏデバイス１２２に電力を供給する。
【００１４】
次に、ハイパーバイザ１０４は、Ｉ／Ｏスロット１２０に対応するバスについてスキャンを行い、Ｉ／Ｏデバイス１２２内のファンクション１２２−０，１２２−１を検出する（ステップＳ２０６）。具体的には、ハイパーバイザ１０４は、図２の論理接続状態に示す下流Ｐ２Ｐブリッジ１１６の下流にあるＩ／Ｏスロット１２０に対応するバス番号についてスキャンを行う。下流Ｐ２Ｐブリッジ１１６の下流にあるＩ／Ｏスロット１２０に対応するバス番号は、各ファンクションに付されている「３」であるため、ハイパーバイザ１０４は、バス番号「３」についてスキャンを行う。ここで、ＰＣＩｅの規格により、デバイス番号「０〜３１」のいずれかが各デバイスに割り当てられ、さらに、ファンクション番号「０〜７」のいずれかが各デバイスに割り当てられている。従って、ハイパーバイザ１０４は、バス番号「３」について２５６回（＝３２×８）のアクセス試行を行う。図２の例では、ハイパーバイザ１０４は、ファンクション１２２−０，１２２−１（即ち、（バス番号、デバイス番号、ファンクション番号）＝（３，０，０），（３，０，１））から応答を受信し、ファンクション１２２−０，１２２−１を検出する。一方、ハイパーバイザ１０４は、これらのファクションへのアクセス以外のアクセス試行の応答として、Ｉ／Ｏデバイス１２２からエラーステータスを受信する。
【００１５】
ハイパーバイザ１０４は、ファンクション１２２−０，１２２−１にハイパーバイザ１０４のアドレス空間を割り当て、対応するドライバ１０５Ａ，１０５Ｂをメモリ１１２上に読み込む（ステップＳ２０７）。ドライバ１０５Ａ，１０５Ｂは、ファンクション１２２−０，１２２−１を初期化する（ステップＳ２０８）。サーバ１００の動作は終了する。
【００１６】
図４（Ｂ）において、Ｉ／Ｏスロット１２０上の回路（不図示）が、Ｉ／Ｏデバイス１２２の取り外しを検出し、Ｉ／Ｏデバイス１２２の取り外しをホットプラグコントローラ１１７に通知する（ステップＳ２１１）。ホットプラグコントローラ１１７は、コンフィグテーブル１４４内のＩ／Ｏスロット１２０の状態の情報をＩ／Ｏデバイス１２２が取り外されたことを示す情報に更新する（ステップＳ２１２）。その後、ホットプラグコントローラ１１７は、ハイパーバイザ１０４に対し割り込み信号を発生する（ステップＳ２１３）。
【００１７】
ハイパーバイザ１０４は、コンフィグテーブル１４４内のＩ／Ｏスロット１２０の更新された状態の情報を参照し、Ｉ／Ｏデバイス１２２の取り外しを検出する（ステップＳ２０４）。ハイパーバイザ１０４は、ホットプラグコントローラ１１７にＩ／Ｏスロット１２０の無効（disable）を指示する（ステップＳ２１５）。具体的には、ハイパーバイザ１０４は、コンフィグテーブル１４４内の、Ｉ／Ｏスロット１２０からＩ／Ｏデバイス１２２に電力を供給するフラグを無効（disable）に書き換える。これにより、Ｉ／Ｏスロット１２０はＩ／Ｏデバイス１２２に電力を供給しなくなる。その後、ハイパーバイザ１０４は、メモリ１１２上に存在する、ファンクション１２２−０，１２２−１に対応するドライバ１０５Ａ，１０５Ｂを削除する（ステップＳ２１６）。サーバ１００の動作は終了する。
【００１８】
このように、Ｉ／Ｏデバイス１２２がサーバ１００に接続されると、ハイパーバイザ１０４は、ホットプラグコントローラ１１７にＩ／Ｏスロット１２０の有効（enable）を指示し、Ｉ／Ｏデバイス１２２に電力が供給される。この結果、Ｉ／Ｏデバイス１２２内のファンクション１２２−０，１２２−１が一括で有効になっていた。Ｉ／Ｏデバイス１２２がサーバ１００から取り外される場合には、ハイパーバイザ１０４は、ホットプラグコントローラ１１７にＩ／Ｏスロット１２０の無効（disable）を指示し、Ｉ／Ｏデバイス１２２に供給される電力が遮断される。この結果、Ｉ／Ｏデバイス１２２内のファンクション１２２−０，１２２−１が一括で無効になっていた。
【００１９】
また、従来より、計算機に備えた制御プログラムによって構築され、それそれ独立のＯＳ（Operating System）が稼働する複数の仮想計算機と、単一のポートを有し、該ポートが計算機のＰＣＩ（ＰＣＩ：Peripheral Component Interconnect）バスに接続されるＩ／Ｏデバイスとを有する計算機システムが知られている。また、複数のＰＣＩエージェントの任意の組み合わせから、１つのまとまりとなるファンクションを構築して、ＢＩＯＳ（Basic Input/Output System）やドライバから１つの単位としてファンクションを制御する技術が知られている。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２００４−２５２５９１号公報
【００２１】
【特許文献２】特開平９−２３７２４６号公報
【発明の概要】
【発明が解決しようとする課題】
【００２２】
上記サーバ１００では、Ｉ／Ｏデバイス１２２内のファンクション１２２−０，１２２−１が一括で有効化又は無効化される。従って、管理者が、例えば仮想マシン１０１にファンクション１２２−０を割り当てるためにファンクション１２２−０だけを有効にしたい場合でも、ハイパーバイザ１０４は、Ｉ／Ｏデバイス１２２内の各ファンクションを個別に有効化することができなかった。
【００２３】
上記課題に鑑み、明細書に開示されたスイッチング装置、情報処理装置、及びスイッチング装置の制御方法は、Ｉ／Ｏデバイス内に含まれる各ファンクションを個別に有効化することができることを目的とする。
【課題を解決するための手段】
【００２４】
明細書に開示されたスイッチング装置は、複数のファンクションを備えるＩ／Ｏデバイスに接続するスイッチング装置において、前記複数のファンクションのそれぞれに割りあてられる、パケットの宛先のバス番号を有するテーブルと、ハイパーバイザから受信したパケットが前記Ｉ／Ｏデバイスに対してデータの読み込み又は書き込みを行うパケットである場合、複数の前記テーブルから前記パケットの宛先のバス番号を含むテーブルを選択し、選択したテーブルの番号を通知し、ファンクションの追加指示が入力されたとき、追加対象のファンクションに対応する仮想スロットの状態を有効として更新する処理部と、前記パケットの宛先のファンクション番号を前記処理部から通知されたテーブルの番号に変更し、前記処理部で前記仮想スロットの状態が有効として更新され、ファンクションの追加が指示された前記ハイパーバイザから該Ｉ／Ｏデバイスに対するスキャン要求のパケットを受けると、前記ファンクションに対するスキャン要求のパケットのみを通し、該ファンクションからの応答を前記ハイパーバイザに送信し、該ファンクション以外のファンクションに対するスキャン要求のパケットを遮断し、エラー応答を前記ハイパーバイザに送信するフィルタとを備える。
【発明の効果】
【００２５】
明細書に開示されたスイッチング装置、情報処理装置、及びスイッチング装置の制御方法は、Ｉ／Ｏデバイス内に含まれる各ファンクションを個別に有効化することができる。
【図面の簡単な説明】
【００２６】
【図１】サーバ１００及びＩ／Ｏデバイス１２２，１２３の概略構成図である。
【図２】サーバ１００及びＩ／Ｏデバイス１２２の物理接続状態及び論理接続状態の例を示す図である。
【図３】ＰＣＩｅスイッチ１１４の構成を示すブロック図である。
【図４】（Ａ）は、サーバ１００にＩ／Ｏデバイス１２２が接続されたときのサーバ１００の動作を示すフローチャートである。（Ｂ）は、サーバ１００からＩ／Ｏデバイス１２２が取り外されたときのサーバ１００の動作を示すフローチャートである。
【図５】本実施の形態に係るサーバ１及びＩ／Ｏデバイス２Ａ，２Ｂの概略構成図である。
【図６】ＰＣＩｅスイッチ１４の構成を示すブロック図である。
【図７】（Ａ）は、ハイパーバイザ４とＩ／Ｏデバイス２Ａとの間で転送されるパケットの構造を示す。（Ｂ）は、ヘッダ領域に含まれるデータの一部を示す図である。（Ｃ）は、パケットの種別とヘッダ領域の「Fmt」及び「Type」に含まれるデータとの関係を示す図である。
【図８】（Ａ）は、アドレスルーティング方式のパケットのヘッダの一例を示す図である。（Ｂ）は、ＩＤルーティング方式のパケットのヘッダの一例を示す図である。
【図９】コンフィグテーブル４４−０に含まれるコンフィグレジスタ４５−０の概略データ構造を示す図である。
【図１０】コンフィグ処理部４３で実行される処理を示すフローチャートである。
【図１１】フィルタ４１で実行される処理を示すフローチャートである。
【図１２】サーバ１及びＩ／Ｏデバイス２Ａの物理接続状態及び論理接続状態の例を示す図である。
【図１３】サーバ１に含まれるＰ２Ｐブリッジのコンフィグテーブルの一部の内容を示す図である。
【図１４】タイプ０のコンフィギュレーションリード（CfgRd0）又はコンフィギュレーションライト（CfgWr0）のパケットが発行された場合のサーバ１のパケットの転送動作を示すフローチャートである。
【図１５】タイプ１のコンフィギュレーションリード（CfgRd1）又はコンフィギュレーションライト（CfgWr1）のパケットが発行された場合のサーバ１のパケットの転送動作を示すフローチャートである。
【図１６】メモリリード（MRd）又はメモリライト（MWr）、若しくはＩＯリード（IORd）又はＩＯライト（IOWr）のパケットが発行された場合のサーバ１のパケットの転送動作を示すフローチャートである。
【図１７】ファンクションの追加又は削除の指示がある場合のシステム全体の動作を示すフローチャートである。
【図１８】図１７のステップＳ８１の詳細を示すフローチャートである。
【図１９】ハイパーバイザ４のメモリ空間と各デバイスの割り込み番号との関係を示す図である。
【図２０】図１７のステップＳ８３の詳細を示すフローチャートである。
【図２１】図１７のステップＳ８４の詳細を示すフローチャートである。
【発明を実施するための形態】
【００２７】
以下、図面を参照しながら本発明の実施の形態を説明する。図５は、サーバ及びＩ／Ｏデバイスの論理的な概略構成図である。
【００２８】
図５において、サーバ１（情報処理装置）は、ＣＰＵ（Central Processing Unit）１１、メモリ１２、ルートコンプレックス１３、PCI Express スイッチ１４（以下、ＰＣＩｅスイッチという）（スイッチング回路）を備えている。さらに、サーバ１は、管理者又はユーザが情報を後述する各下流PCI-to-PCIブリッジに入力するための入力部７を備えている。メモリ１２は、仮想マシンを実現するための制御プログラムとしてのハイパーバイザ４、後述する各ファンクションを制御するドライバ５−０〜５−Ｎ（Ｎ：自然数）、及びＢＩＯＳ（Basic Input/Output System）６を備えている。ハイパーバイザ４は、仮想マシン上でＯＳ（Operating System）を動作させる。ＣＰＵ１１は、メモリ１２上のハイパーバイザ４を実行することにより、仮想マシン（ＶＭ）３−０〜３−Ｎ（Ｎ：自然数）を実現する。ハイパーバイザ４は、各仮想マシンに、使用するファンクションを割り当てることができる。例えば、ハイパーバイザ４は、仮想マシン３−０にファンクション２４−０を割り当て、仮想マシン３−１にファンクション２４−１を割り当てることができる。また、ＣＰＵ１１は、メモリ１２に格納されているＢＩＯＳ６を読み出して実行する。ルートコンプレックス１３は、ＰＣＩｅシステムの根幹となるデバイスであり、ホスト・ブリッジを内蔵し、ＣＰＵ１１に接続されている。ＰＣＩｅスイッチ１４は、Ｉ／Ｏデバイスを接続するＩ／Ｏスロットを増やすためのデバイスである。
【００２９】
ＰＣＩｅスイッチ１４は、上流PCI-to-PCIブリッジ（以下、Ｐ２Ｐブリッジという）１５、下流Ｐ２Ｐブリッジ１６−０〜１６−３、下流Ｐ２Ｐブリッジ１９−０〜１９−Ｎ（Ｎ：１以上の自然数）及びＩ／Ｏスロット２２，２３を備えている。Ｉ／Ｏスロット２２，２３は、それぞれＩ／Ｏデバイス２Ａ，２Ｂを接続するためのデバイスである。また、本実施の形態では、ＣＰＵ１１側を上流とし、Ｉ／Ｏデバイス２Ａ，２Ｂ側を下流としている。
【００３０】
上流Ｐ２Ｐブリッジ１５、下流Ｐ２Ｐブリッジ１６−０〜１６−３及び下流Ｐ２Ｐブリッジ１９−０〜１９−Ｎは、不図示の上流側バス（即ちprimary bus）と不図示の下流側バス（即ちsecondary bus）とを接続し、２つのバスの間で転送データとしてのパケットの転送を行う。下流Ｐ２Ｐブリッジ１６−０〜１６−３は、ホットプラグコントローラ１７−０〜１７−３及び仮想スロット１８−０〜１８−３をそれぞれ備えている。同様に、下流Ｐ２Ｐブリッジ１９−０〜１９−Ｎは、ホットプラグコントローラ２０−０〜２０−Ｎ（Ｎ：１以上の自然数）及び仮想スロット２１−０〜２１−Ｎ（Ｎ：１以上の自然数）をそれぞれ備えている。各仮想スロットは、Ｉ／Ｏデバイス内のファンクションを下流Ｐ２Ｐブリッジに接続するための仮想的なスロットである。また、各ホットプラグコントローラは、仮想スロットに挿抜されるファンクションを検知し、ハイパーバイザ４にファンクションが挿抜されたことを割り込み信号を使って通知する機能を有する。
【００３１】
Ｉ／Ｏデバイス２Ａは、複数のファンクション２４−０〜２４−３を備えている。Ｉ／Ｏデバイス２Ｂも、同様に不図示の複数のファンクションを備えている。ＰＣＩｅシステムでは、最下流に位置するＩ／Ｏデバイス２Ａ，２Ｂをエンドポイントと呼ぶこともある。ファンクション２４−０〜２４−３の各々は、Ｉ／Ｏデバイス２Ａ内でまとまった機能をハイパーバイザ４（ＯＳ）又はＢＩＯＳ６に対して提供する単位である。１つのファンクションには、後述する、独立したコンフィグテーブルが割り当てられる。また、１つのＩ／Ｏデバイス内に複数のファンクションを有することをマルチファンクションという。例えば、Ｉ／Ｏデバイス２Ａが２つのポートを有するデュアルポートＮＩＣであれば、デュアルポートＮＩＣは、各ポートに対してファンクションを１つずつ持つ。
【００３２】
ＢＩＯＳ６は、サーバ１の起動時に、ＰＣＩｅの規格により、ルートコンプレックス１３、上流Ｐ２Ｐブリッジ１５、下流Ｐ２Ｐブリッジ１６−０〜１６−３，１９−０〜１９−Ｎ、及びＩ／Ｏデバイス２Ａ，２Ｂ内の各ファンクションに、バス番号、デバイス番号及びファンクション番号のセットを割り当てる。例えば、ＢＩＯＳ６は、後述する図１２の論理接続状態で示すように、ルートコンプレックス１３、上流Ｐ２Ｐブリッジ１５、下流Ｐ２Ｐブリッジ１６−０〜１６−３及びＩ／Ｏデバイス２Ａ内のファンクション２４−０〜２４−３に、バス番号、デバイス番号及びファンクション番号のセットを割り当てる。
【００３３】
本実施の形態では、図５に示すように、１つの物理スロット、つまりＩ／Ｏスロット２２に対応する下流Ｐ２Ｐブリッジ１６−０〜１６−３が、Ｉ／Ｏデバイス２Ａのファンクション数と同数のホットプラグコントローラ１７−０〜１７−３及び仮想スロット１８−０〜１８−３を有する。下流Ｐ２Ｐブリッジ１６−０〜１６−３は、仮想スロット１８−０〜１８−３をＩ／Ｏデバイス２Ａ内のファンクション２４−０〜２４−３とそれぞれ一対一接続する。ホットプラグコントローラ１７−０〜１７−３は、ハイパーバイザ４にファンクションが挿抜されたことを割り込み信号を使って通知する。
【００３４】
図６は、ＰＣＩｅスイッチ１４の構成を示すブロック図である。
【００３５】
ＰＣＩｅスイッチ１４は、上流Ｐ２Ｐブリッジ１５、下流Ｐ２Ｐブリッジ１６、下流Ｐ２Ｐブリッジ１９、上流ポート３０、スイッチ３１、及び下流ポート３２，３３を備えている。尚、下流Ｐ２Ｐブリッジ１６は、図５の下流Ｐ２Ｐブリッジ１６−０〜１６−３に対応し、下流Ｐ２Ｐブリッジ１９は、図５の下流Ｐ２Ｐブリッジ１９−０〜１９−Ｎに対応する。また、下流ポート３２は、図５のＩ／Ｏスロット２２に対応し、下流ポート３３は、図５のＩ／Ｏスロット２３に対応する。
【００３６】
上流ポート３０は、図５のルートコンプレックス１３と接続するための物理的なリンクを提供する。下流ポート３２，３３は、それぞれ図５のＩ／Ｏデバイス２Ａ，２Ｂと接続するための物理的なリンクを提供する。上流Ｐ２Ｐブリッジ１５は、コンフィグテーブル１５Ａを有し、コンフィグテーブル１５Ａを使って、ＯＳ又はＩ／Ｏデバイス２Ａ，２Ｂから受信したパケットの転送を制御する。スイッチ３１は、パケットの内部転送先（即ち、下流Ｐ２Ｐブリッジ１６又は１９）を切り替える。
【００３７】
下流Ｐ２Ｐブリッジ１６は、変更手段の一例であるフィルタ４１、制御手段の一例であるブリッジ制御部４２、選択手段の一例であるコンフィグ処理部４３、及びコンフィグテーブル４４−０〜４４−３を有する。下流Ｐ２Ｐブリッジ１６が有するコンフィグテーブルの個数は、Ｉ／Ｏデバイス２Ａに含まれるファンクションの個数と同一である。コンフィグテーブル４４−０〜４４−３は、それぞれコンフィグレジスタ４５−０〜４５−３、仮想スロットレジスタ４６−０〜４６−３、及びホットプラグコントローラレジスタ４７−０〜４７−３を備えている。仮想スロットレジスタ４６−０〜４６−３は、仮想スロットの状態を表すレジスタであり、仮想スロットの有効及び無効をそれぞれ「１」、「０」で示すレジスタを含み、図５の仮想スロット１８−０〜１８−３に対応する。また、ホットプラグコントローラレジスタ４７−０〜４７−３は、コンフィグ処理部４３に図５のホットプラグコントローラ１７−０〜１７−３の機能を提供するために使われるレジスタである。
【００３８】
フィルタ４１は、仮想スロットを矛盾なくハイパーバイザ４及びＩ／Ｏデバイス２Ａに提供するため、ハイパーバイザ４から送られてきたパケット及びＩ／Ｏデバイス２Ａから送られてきたパケットの書き換えを実行する。また、フィルタ４１は、ハイパーバイザ４から送られてきたパケットがサポート範囲外のパケットである場合に、当該パケットを"Unsupported"ステータスとしてハイパーバイザ４に返信し、ハイパーバイザ４からのＰＣＩｅアクセスを制御する。
【００３９】
ブリッジ制御部４２は、コンフィグテーブル４４−０〜４４−３を参照して、パケットの転送を制御する。尚、いずれのコンフィグテーブルを参照するかは、コンフィグ処理部４３によって決定される。
【００４０】
コンフィグ処理部４３は、パケットの宛先がＩ／Ｏデバイス２Ａ内のどのファンクションかを判断する。コンフィグ処理部４３は、判断結果に対応するコンフィグテーブルからコンフィグレジスタ４５、及び仮想スロットレジスタ４６を読み出し、ブリッジ制御部４２に転送する。これにより、ファンクションと仮想スロットとの一対一接続が確立する。
【００４１】
下流Ｐ２Ｐブリッジ１９は、基本的に下流Ｐ２Ｐブリッジ１６と同様の構成を有するので、その説明は省略する。尚、Ｉ／Ｏデバイス２Ａに含まれるファンクションの個数と同数の仮想スロットがコンフィグテーブル４４−０〜４４−３に割り当てられている。そのため、ハイパーバイザ４は、コンフィグテーブル４４−０〜４４−３の個数に相当するポートが仮想的に存在し、且つそれぞれの仮想ポートが物理的なＩ／Ｏスロットを備えているように見える。
【００４２】
次に、ハイパーバイザ４とＩ／Ｏデバイス２Ａとの間で転送されるパケットについて説明する。
【００４３】
図７（Ａ）は、ハイパーバイザ４とＩ／Ｏデバイス２Ａとの間で転送されるパケットの構造を示す。このパケットは、ＰＣＩｅ規格によると、ＴＬＰ（Transaction Layer Packet）と呼ばれ、データを送受信するために利用される。パケットは、図７（Ａ）に示すように、ヘッダ及びデータの領域で構成されている。図７（Ａ）の最上段の「＋０」〜「＋３」はバイト数を示し、「０」〜「７」はビット数を示す。
【００４４】
図７（Ｂ）は、ＰＣＩｅ規格により規定されるヘッダ領域に含まれるデータの一部を示す図である。ヘッダ領域の「Fmt」及び「Type」に含まれるデータによって、パケットの種別が指定される。パケットの種別は、メモリリード、メモリライト、ＩＯリード、ＩＯライト、コンフィギュレーションリード（タイプ０，タイプ１）、コンフィギュレーションライト（タイプ０，タイプ１）などがあり、図７（Ｃ）に示すように、ＰＣＩｅの規格により予め決められている。
【００４５】
メモリリードのパケットは、図７（Ｃ）において「MRd」と記載されており、例えば、Ｉ／Ｏデバイス２Ａに含まれるファンクションとしてのメモリからデータを読み出すときにハイパーバイザ４が出力する。メモリライトのパケットは、図７（Ｃ）において「MWr」と記載されており、例えば、Ｉ／Ｏデバイス２Ａに含まれるファンクションとしてのメモリへデータを書き込むときにハイパーバイザ４が出力する。ＩＯリードのパケットは、図７（Ｃ）において「IORd」と記載されており、例えば、Ｉ／Ｏデバイス２Ａに含まれるファンクションとしてのＩ／Ｏインターフェイス（例えば、ネットワーク用の通信ポート）からデータを読み出すときにハイパーバイザ４が出力する。ＩＯライトのパケットは、図７（Ｃ）において「IOWr」と記載されており、例えば、Ｉ／Ｏデバイス２Ａに含まれるファンクションとしてのＩ／Ｏインターフェイスへデータを書き込むときにハイパーバイザ４が出力する。
【００４６】
コンフィギュレーションリード（タイプ０）のパケットは、図７（Ｃ）において「CfgRd0」と記載されており、ハイパーバイザ４が下流Ｐ２Ｐブリッジ１６又は１９自身に含まれるコンフィグテーブルからデータを読み出すときにハイパーバイザ４が出力する。コンフィギュレーションライト（タイプ０）のパケットは、図７（Ｃ）において「CfgWr0」と記載されており、ハイパーバイザ４が下流Ｐ２Ｐブリッジ１６又は１９自身に含まれるコンフィグテーブルにデータを書き込むときにハイパーバイザ４が出力する。
【００４７】
コンフィギュレーションリード（タイプ１）のパケットは、図７（Ｃ）において「CfgRd1」と記載されており、ハイパーバイザ４が下流Ｐ２Ｐブリッジ１６又は１９の下流にあるＰＣＩバスに接続されるデバイス（ここではＩ／Ｏデバイス２Ａ、２Ｂ）のコンフィグ空間からデータを読み出すときにハイパーバイザ４が出力する。コンフィギュレーションライト（タイプ１）のパケットは、図７（Ｃ）において「CfgWr1」と記載されており、ハイパーバイザ４が下流Ｐ２Ｐブリッジ１６又は１９の下流にあるＰＣＩバスに接続されるデバイス（ここではＩ／Ｏデバイス２Ａ、２Ｂ）のコンフィグ空間にデータを書き込むときにハイパーバイザ４が出力する。
【００４８】
メモリリード、メモリライト、ＩＯリード及びＩＯライトのパケットは、アドレスルーティング方式によって転送される。アドレスルーティング方式とは、パケットの宛先をアドレスによって指定する方式である。アドレスルーティング方式では、ＰＣＩｅスイッチ１４は、宛先のアドレスに対応するＩＯデバイスを配下に有する下流Ｐ２Ｐブリッジに対して、パケットを転送する。アドレスルーティング方式のパケットのヘッダの一例を図８（Ａ）に示す。アドレスルーティング方式のパケットでは、図８（Ａ）の「Requester ID」がパケットの送信元のＩＤを指定し、図８（Ａ）の「Address」が宛先のアドレスを指定する。
【００４９】
コンフィギュレーションリード（タイプ０，タイプ１）及びコンフィギュレーションライト（タイプ０，タイプ１）のパケットは、ＩＤルーティング方式によって転送される。ＩＤルーティング方式とは、宛先をバス番号、デバイス番号及びファンクション番号のセットによって指定する方式である。ＩＤルーティング方式では、ＰＣＩｅスイッチ１４は、宛先のバス番号を配下に有する下流Ｐ２Ｐブリッジに対して、パケットを転送する。ＩＤルーティング方式のパケットのヘッダの一例を図８（Ｂ）に示す。ＩＤルーティング方式のパケットでは、図８（Ｂ）の「Requester ID」がパケットの送信元のＩＤを指定し、図８（Ｂ）の「Bus Number」、「Device Number」及び「Function Number」が宛先のＩＤを指定する。
【００５０】
図９は、コンフィグテーブル４４−０に含まれるコンフィグレジスタ４５−０の概略データ構造を示す図である。尚、コンフィグレジスタ４５−１〜４５−３のデータ構造は、コンフィグレジスタ４５−０のデータ構造と同様である。また、コンフィグレジスタ４５−０の各フィールド（「Device ID」、「Vendor ID」など ）は、ＰＣＩｅの規格により予め決められているので、その説明は省略する。
【００５１】
ブリッジ制御部４２は、コンフィグレジスタ４５−０〜４５−３のいずれかの概略データ構造を参照して、パケットの転送を制御する。いずれのコンフィグレジスタを参照するかは、コンフィグ処理部４３によって決定される。例えば、ブリッジ制御部４２は、ハイパーバイザ４からメモリリード又はメモリライトのパケットを受信した場合、当該パケットのヘッダに含まれる宛先のアドレスが、図９の「Memory Base」及び「Memory Limit」で指定されるアドレスの範囲内に存在する場合は、受信したパケットを下流のＩＯデバイス２Ａに転送する。また、ブリッジ制御部４２は、ハイパーバイザ４からＩＯリード又はＩＯライトのパケットを受信した場合、当該パケットのヘッダに含まれる宛先のアドレスが、図９の「I/O Base」及び「I/O Limit」で指定されるアドレスの範囲内に存在する場合は、受信したパケットを下流のＩＯデバイス２Ａに転送する。また、ブリッジ制御部４２は、ハイパーバイザ４からＩＤルーティング方式のパケット（即ち、コンフィギュレーションリード（タイプ０，タイプ１）又はコンフィギュレーションライト（タイプ０，タイプ１）のパケットなど）を受信した場合、当該パケットのヘッダに含まれる宛先のバス番号が、図９の「Secondary Bus Number」と「Subordinate Bus Number」で指定されるバス番号の範囲内に存在する場合は、受信したパケットを下流のＩＯデバイス２Ａに転送する。また、ブリッジ制御部４２は、下流のＩＯデバイス２Ａから受信したパケットをハイパーバイザ４に転送する。
【００５２】
図１０は、コンフィグ処理部４３で実行される処理を示すフローチャートである。ここでは、コンフィグテーブル４４−０〜４４−３に順番にインデックス番号０〜３が付されており、このインデックス番号０〜３は、ファンクション番号に一対一対応するものとする。
【００５３】
まず、コンフィグ処理部４３は、受信したパケットが上流のハイパーバイザ４からのパケットであるか否かを判別する（ステップＳ１）。受信したパケットが上流のハイパーバイザ４からのパケットである場合には（ステップＳ１でＹＥＳ）、コンフィグ処理部４３は、受信したパケットがタイプ０のコンフィギュレーションリード又はコンフィギュレーションライトのパケットであるか否かを判別する（ステップＳ２）。受信したパケットがタイプ０のコンフィギュレーションリード又はコンフィギュレーションライトのパケットである場合には（ステップＳ２でＹＥＳ）、コンフィグ処理部４３は、受信したパケットのヘッダに含まれる宛先のデバイス番号に対応するコンフィグテーブル４４を選択する（ステップＳ３）。コンフィグ処理部４３は、選択されたコンフィグテーブル４４に対してデータの読み出し又は書き込みを実行する（ステップＳ４）。その後、本処理は終了する。
【００５４】
一方、受信したパケットがタイプ０のコンフィギュレーションリード又はコンフィギュレーションライトのパケットでない場合には（ステップＳ２でＮＯ）、コンフィグ処理部４３は、受信したパケットがタイプ１のコンフィギュレーションリード又はコンフィギュレーションライトのパケットであるか否かを判別する（ステップＳ５）。受信したパケットがタイプ１のコンフィギュレーションリード又はコンフィギュレーションライトのパケットでない場合には（ステップＳ５でＮＯ）、コンフィグ処理部４３は、受信したパケットがアドレスルーティング方式のパケットであるか否かを判別する（ステップＳ６）。受信したパケットがアドレスルーティング方式のパケットである場合には（ステップＳ６でＹＥＳ）、コンフィグ処理部４３は、コンフィグテーブル４４−０〜４４−３の中から、受信したパケットの宛先のアドレスを含むコンフィグレジスタ４５を有するコンフィグテーブルを選択する（ステップＳ７）。
【００５５】
一方、受信したパケットがタイプ１のコンフィギュレーションリード又はコンフィギュレーションライトのパケットである場合（ステップＳ５でＹＥＳ）、コンフィグ処理部４３は、コンフィグテーブル４４−０〜４４−３の中から、受信したパケットの宛先のバス番号を含むコンフィグレジスタ４５を有するコンフィグテーブルを選択する（ステップＳ８）。また、受信したパケットがアドレスルーティング方式のパケットでない場合には（ステップＳ６でＮＯ）、コンフィグ処理部４３は、コンフィグテーブル４４−０〜４４−３の中から、受信したパケットの宛先のバス番号を含むコンフィグレジスタ４５を有するコンフィグテーブルを選択する（ステップＳ８）。
【００５６】
受信したパケットが上流のハイパーバイザ４からのパケットでない場合、即ち、下流のＩＯデバイス２Ａからのパケットである場合には（ステップＳ１でＮＯ）、受信したパケットのヘッダに含まれる送信元のファンクション番号に対応するコンフィグテーブルを選択する（ステップＳ９）。
【００５７】
ステップＳ７〜Ｓ９の処理後、コンフィグ処理部４３は、選択されたコンフィグテーブルの番号をフィルタ４１に通知する（ステップＳ１０）。その後、コンフィグ処理部４３は、選択されたコンフィグテーブルをブリッジのコンテキストに指定し、指定されたコンフィグテーブルの番号をブリッジ制御部４２に通知し（ステップＳ１１）、本処理を終了する。ブリッジ制御部４２は、通知された番号に対応するコンフィグテーブルに基づいて、パケットの転送を制御する。
【００５８】
図１１は、フィルタ４１で実行される処理を示すフローチャートである。ここでも、コンフィグテーブル４４−０〜４４−３に順番にインデックス番号０〜３が付されており、このインデックス番号０〜３は、ファンクション番号に一対一対応するものとする。
【００５９】
フィルタ４１は、受信したパケットが上流のハイパーバイザ４からのパケットであるか否かを判別する（ステップＳ２１）。受信したパケットが上流のハイパーバイザ４からのパケットである場合には（ステップＳ２１でＹＥＳ）、フィルタ４１は、受信したパケットがタイプ０のコンフィギュレーションリード又はコンフィギュレーションライトのパケットであるか否かを判別する（ステップＳ２２）。受信したパケットがタイプ０のコンフィギュレーションリード又はコンフィギュレーションライトのパケットである場合には（ステップＳ２２でＹＥＳ）、フィルタ４１は、受信したパケットの宛先のデバイス番号がＩ／Ｏデバイス２Ａのファンクション数を超えているか否かを判別する（ステップＳ２３）。
【００６０】
受信したパケットの宛先のデバイス番号がＩ／Ｏデバイス２Ａのファンクション数を超えている場合には（ステップＳ２３でＹＥＳ）、フィルタ４１は、受信したパケットを"Unsupported"ステータスとしてハイパーバイザ４に返信し（ステップＳ２４）、本処理を終了する。一方、受信したパケットの宛先のデバイス番号がＩ／Ｏデバイス２Ａのファンクション数を超えていない場合には（ステップＳ２３でＮＯ）、フィルタ４１は、特に何もしないで、本処理を終了する。この場合、フィルタ４１は、受信したパケットをブリッジ制御部４２に転送する。
【００６１】
受信したパケットがタイプ０のコンフィギュレーションリード又はコンフィギュレーションライトのパケットでない場合（ステップＳ２２でＮＯ）、フィルタ４１は、受信したパケットがタイプ１のコンフィギュレーションリード又はコンフィギュレーションライトのパケットであるか否かを判別する（ステップＳ２５）。
【００６２】
受信したパケットがタイプ１のコンフィギュレーションリード又はコンフィギュレーションライトのパケットである場合には（ステップＳ２５でＹＥＳ）、フィルタ４１は、受信したパケットの宛先のファンクション番号が０より大きいか否かを判別する（ステップＳ２６）。受信したパケットの宛先のファンクション番号が０より大きい場合には（ステップＳ２６でＹＥＳ）、フィルタ４１は、上記ステップＳ２４の処理を実行する。一方、受信したパケットの宛先のファンクション番号が０より大きくない場合、即ち、受信したパケットの宛先のファンクション番号が０である場合には（ステップＳ２６でＮＯ）、受信したパケットの宛先のファンクション番号をコンフィグ処理部４３から通知されたコンフィグテーブルの番号に変更し（ステップＳ２７）、本処理を終了する。ステップＳ２７により、受信したパケットが、宛先のファンクションに一対一接続する仮想ポートから当該宛先のファンクションに転送されるようにしている。
【００６３】
受信したパケットがタイプ１のコンフィギュレーションリード又はコンフィギュレーションライトのパケットでない場合には（ステップＳ２５でＮＯ）、フィルタ４１は、受信したパケットがアドレスルーティング方式のパケットであるか否かを判別する（ステップＳ２８）。受信したパケットがアドレスルーティング方式のパケットである場合には（ステップＳ２８でＹＥＳ）、フィルタ４１は、特に何もしないで、本処理を終了する。この場合、フィルタ４１は、受信したパケットをブリッジ制御部４２に転送する。一方、受信したパケットがアドレスルーティング方式のパケットでない場合には（ステップＳ２８でＮＯ）、フィルタ４１は、上記ステップＳ２７の処理を実行する。
【００６４】
受信したパケットが上流のハイパーバイザ４からのパケットでない場合、即ち、下流のＩＯデバイス２Ａからのパケットである場合には（ステップＳ２１でＮＯ）、フィルタ４１は、受信したパケットの送信元のファンクション番号を０に変更する（ステップＳ２９）。これは、ハイパーバイザ４にＩＯデバイス２Ａからの受信パケットを認識させるためである。
【００６５】
次に、具体的なパケットの転送動作を説明する。前提として、図１２に示すような、サーバ１及びＩ／Ｏデバイス２Ａの物理接続状態及び論理接続状態を想定する。また、サーバ１に含まれるＰ２Ｐブリッジのコンフィグテーブルの一部の内容を図１３に示す。
【００６６】
図１２に示すように、例えば、Ｉ／Ｏデバイス２Ａのファンクション数は４つであるとする。また、図１２の論理接続を構成する各デバイスには、バス番号、デバイス番号、及びファンクション番号のセットが割り当てられている。ルートコンプレックス１３には、バス番号０、デバイス番号０、及びファンクション番号０のセットが割り当てられており、上流Ｐ２Ｐブリッジ１５には、バス番号１、デバイス番号０、及びファンクション番号０のセットが割り当てられている。また、下流Ｐ２Ｐブリッジ１６−０には、バス番号２、デバイス番号０、及びファンクション番号０のセットが割り当てられている。下流Ｐ２Ｐブリッジ１６−１には、バス番号２、デバイス番号１、及びファンクション番号０のセットが割り当てられている。下流Ｐ２Ｐブリッジ１６−２には、バス番号２、デバイス番号２、及びファンクション番号０のセットが割り当てられている。下流Ｐ２Ｐブリッジ１６−３には、バス番号２、デバイス番号３、及びファンクション番号０のセットが割り当てられている。ファンクション２４−０には、バス番号３、デバイス番号０、及びファンクション番号０のセットが割り当てられている。ファンクション２４−１には、バス番号４、デバイス番号０、及びファンクション番号０のセットが割り当てられている。ファンクション２４−２には、バス番号５、デバイス番号０、及びファンクション番号０のセットが割り当てられている。ファンクション２４−３には、バス番号６、デバイス番号０、及びファンクション番号０のセットが割り当てられている。尚、論理接続の下流Ｐ２Ｐブリッジ１６−０〜１６−３は、物理接続の下流Ｐ２Ｐブリッジ１６に含まれるコンフィグテーブル４４−０〜４４−３に対応する。
【００６７】
また、図１３に示すように、各Ｐ２Ｐブリッジに含まれるコンフィグテーブル（具体的にはコンフィグレジスタ）は、「Primary Bus Number」として各Ｐ２Ｐブリッジ自身に割り当てられたバス番号を有し、「Secondary Bus Number」として各Ｐ２Ｐブリッジの下流のデバイスのバス番号を有する。さらに、各Ｐ２Ｐブリッジに含まれるコンフィグテーブルは、「Subordinate Bus Number」として各Ｐ２Ｐブリッジの下流のデバイスのバス番号のうち、最大のバス番号を有する。また、各Ｐ２Ｐブリッジに含まれるコンフィグテーブルは、「Memory Base」及び「Memory limit」で指定される、下流のデバイスに割り当てるメモリアドレス空間の情報を有する。
【００６８】
図１４は、図１０及び図１１のフローチャートに基づき、タイプ０のコンフィギュレーションリード（CfgRd0）又はコンフィギュレーションライト（CfgWr0）のパケットが発行された場合のサーバ１のパケットの転送動作の一例を示すフローチャートである。ここでは、ＣＰＵ１１により動作するハイパーバイザ４がタイプ０のコンフィギュレーションリード又はコンフィギュレーションライトのパケットを発行したものとする。また、パケットのヘッダの宛先を（バス番号、デバイス番号、ファンクション番号）＝（２，１，０）とし、宛先レジスタアドレスを「0x10」とする。なお、宛先レジスタアドレスは、図８（Ｂ）のパケットヘッダの「Register Number」に相当する。
【００６９】
まず、下流Ｐ２Ｐブリッジ１６は、ハイパーバイザ４から上流Ｐ２Ｐブリッジ１５を介してタイプ０のコンフィギュレーションリード又はコンフィギュレーションライトのパケットを受信する（ステップＳ５１）。フィルタ４１は、受信したパケットの宛先のデバイス番号「１」がＩ／Ｏデバイス２Ａのファンクション数「４」を超えていないので、図１１のフローチャートのステップＳ２３に従い、特に何も実行しない（ステップＳ５２）。コンフィグ処理部４３は、受信したパケットがタイプ０のコンフィギュレーションリードのパケットである場合、図１０のフローチャートのステップＳ３、Ｓ４に従い、受信したパケットのヘッダに含まれる宛先のデバイス番号「１」に対応するコンフィグテーブル４４−１にアクセスを行う。さらに、コンフィグ処理部４３は、パケットのヘッダにより指定されたレジスタアドレス「0x10」にリードアクセスを実行し、その内容を読み出す（ステップＳ５３）。ブリッジ制御部４２は、読み出されたデータをリプライパケットとしてハイパーバイザ４に返信し（ステップＳ５４）、本処理を終了する。
【００７０】
一方、受信したパケットがタイプ０のコンフィギュレーションライトのパケットである場合、コンフィグ処理部４３は、図１０のフローチャートのステップＳ３、Ｓ４に従い、受信したパケットのヘッダに含まれる宛先のデバイス番号「１」に対応するコンフィグテーブル４４−１にアクセスを行う。さらに、コンフィグ処理部４３は、パケットのヘッダにより指定されたレジスタアドレス「0x10」にライトアクセスを実行し、パケットのデータを書き込む（ステップＳ５５）。ブリッジ制御部４２は、リプライパケットを返信し（ステップＳ５６）、本処理を終了する。
【００７１】
図１５は、図１０及び図１１のフローチャートに基づき、タイプ１のコンフィギュレーションリード（CfgRd1）又はコンフィギュレーションライト（CfgWr1）のパケットが発行された場合のサーバ１のパケットの転送動作の一例を示すフローチャートである。ここでは、ＣＰＵ１１により動作するハイパーバイザ４がタイプ１のコンフィギュレーションリード又はコンフィギュレーションライトのパケットを発行したものとする。また、パケットのヘッダの宛先を（バス番号、デバイス番号、ファンクション番号）＝（５，０，０）とし、宛先レジスタアドレスを「0x10」とする。なお、宛先レジスタアドレスは、図８（Ｂ）のパケットヘッダの「Register Number」に相当する。
【００７２】
まず、下流Ｐ２Ｐブリッジ１６は、ハイパーバイザ４から上流Ｐ２Ｐブリッジ１５を介してタイプ１のコンフィギュレーションリード又はコンフィギュレーションライトのパケットを受信する（ステップＳ６１）。コンフィグ処理部４３は、図１３のコンフィグテーブルの内容から、宛先のバス番号「５」が下流Ｐ２Ｐブリッジ１６−２、即ち、コンフィグテーブル４４−２に属していることがわかる。そのため、コンフィグ処理部４３は、図１０のフローチャートのステップＳ８に従い、コンフィグテーブル４４−０〜４４−３の中から、受信したパケットの宛先のバス番号を含むコンフィグレジスタ４５−２を有するコンフィグテーブル４４−２を選択する（ステップＳ６２）。フィルタ４１は、図１１のフローチャートのステップＳ２７に従い、受信したパケットの宛先のファンクション番号を「０」から「２」に変更する（ステップＳ６３）。これにより、パケットの宛先は、ファンクション２４−２、即ち、Ｉ／Ｏデバイス２Ａのファンクション番号「２」のファンクションとなる。ブリッジ制御部４２は、受信したパケットの種別をタイプ１のコンフィギュレーションリード（CfgRd1）又はコンフィギュレーションライト（CfgWr1）からタイプ０のコンフィギュレーションリード（CfgRd0）又はコンフィギュレーションライト（CfgWr0）に書き換える。ブリッジ制御部４２は、書き換えられたタイプ０のコンフィギュレーションリード（CfgRd0）又はコンフィギュレーションライト（CfgWr0）のパケットをファンクション２４−２（即ち、Ｉ／Ｏデバイス２Ａのファンクション番号「２」のファンクション）に転送する（ステップＳ６４）。そして、本処理を終了する。
【００７３】
図１６は、図１０及び図１１のフローチャートに基づき、メモリリード（MRd）又はメモリライト（MWr）、若しくはＩＯリード（IORd）又はＩＯライト（IOWr）のパケットが発行された場合のサーバ１のパケットの転送動作の一例を示すフローチャートである。ここでは、ＣＰＵ１１により動作するハイパーバイザ４が、メモリリード（MRd）又はメモリライト（MWr）、若しくはＩＯリード（IORd）又はＩＯライト（IOWr）のパケットを発行したものとする。また、パケットのヘッダの宛先（Address）は、「0xe7081234」であるとする。
【００７４】
まず、下流Ｐ２Ｐブリッジ１６は、ハイパーバイザ４から上流Ｐ２Ｐブリッジ１５を介してメモリリード（MRd）又はメモリライト（MWr）、若しくはＩＯリード（IORd）又はＩＯライト（IOWr）のパケットを受信する（ステップＳ７１）。コンフィグ処理部４３は、図１３のコンフィグテーブルの内容から、宛先のアドレス「0xe7081234」が下流Ｐ２Ｐブリッジ１６−３、即ち、コンフィグテーブル４４−３に属していることがわかる。そのため、コンフィグ処理部４３は、図１０のフローチャートのステップＳ７に従い、コンフィグテーブル４４−０〜４４−３の中から、受信したパケットの宛先のアドレスを含むコンフィグレジスタ４５−３を有するコンフィグテーブル４４−３を選択する（ステップＳ７２）。フィルタ４１は、受信したパケットがアドレスルーティング方式のパケットであるので、図１１のフローチャートのステップＳ２８に従い、特に何も実行しない（ステップＳ７３）。ブリッジ制御部４２は、コンフィグテーブル４４−３に含まれるコンフィグレジスタ４５−３の「Bridge Control」フィールドを参照する（ステップＳ７４）。ブリッジ制御部４２は、「Bridge Control」フィールドに含まれる、Ｉ／Ｏデバイス２Ａ内のファンクションへのアクセス中継が有効であることを示すenableビットが「１」である場合には、受信したパケットをファンクション２４−３（即ち、Ｉ／Ｏデバイス２Ａのファンクション番号「３」のファンクション）に転送する（ステップＳ７５）。そして、本処理を終了する。Ｉ／Ｏデバイス２Ａ内のファンクションへのアクセス中継が無効であることを示すenableビットが「０」である場合には、ブリッジ制御部４２は、エラーステータスをハイパーバイザ４へ返信する（ステップＳ７６）。そして、本処理を終了する。
【００７５】
図１７は、ファンクションの追加又は削除の指示がある場合のシステム全体の動作を示すフローチャートである。前提として、Ｉ／Ｏデバイス２Ａがサーバ１に接続されており、電力がサーバ１からＩ／Ｏデバイス２Ａに供給されているものとする。
【００７６】
まず、下流Ｐ２Ｐブリッジ１６が、Ｉ／Ｏデバイス２Ａのファンクション２４−０〜２４−３を全て無効化し（disable）、ハイパーバイザ４に４個の下流Ｐ２Ｐブリッジ１６−０〜１６−３を認識させる（ステップＳ８１）。次に、管理者、ユーザ又はハイパーバイザ４上で動作する管理ソフトウエアが、ファンクション２４−１の追加又は削除をハイパーバイザ４に指示する（ステップＳ８２）。尚、ファンクション２４−１の追加又は削除の指示は、外部の管理ソフトウエア又は入力部７などから入力される。
【００７７】
ファンクション２４−１の追加指示の場合、ハイパーバイザ４は、ファンクション２４−１に対応するドライバ５−１をメモリ１２上に読み込み、ファンクション２４−１を有効化する（ステップＳ８３）。一方、ファンクション２４−１の削除指示の場合、ハイパーバイザ４は、ファンクション２４−１に対応するドライバ５−１をメモリ空間から削除し、ファンクション２４−１を無効化する（ステップＳ８４）。
【００７８】
図１８は、図１７のステップＳ８１の詳細を示すフローチャートである。
【００７９】
まず、ＢＩＯＳ６は、ルートコンプレックス１３のバス番号、デバイス番号及びファンクション番号のセット（０，０，０）を検出する。そして、ＢＩＯＳ６はルートコンプレックス１３の下流側のバスにバス番号１を割り当てる（ステップＳ９１）。次に、ＢＩＯＳ６は、バス番号１に対してスキャンを実行する（ステップＳ９２）。尚、バス番号Ｎ（Ｎ：自然数）に対するスキャンは、（バス番号、デバイス番号及びファンクション番号）が（Ｎ，０，０）〜（Ｎ，３１，７）であるデバイスを検索する処理である。即ち、バス番号Ｎ（Ｎ：自然数）に対するスキャンでは、ＢＩＯＳ６は、バス番号Ｎに対して２５６回（＝３２×８回）アクセス試行を実行する。ＢＩＯＳ６は、上流Ｐ２Ｐブリッジ１５のバス番号、デバイス番号及びファンクション番号のセット（１，０，０）を検出する。そして、ＢＩＯＳ６は上流Ｐ２Ｐブリッジ１５の下流側のバスにバス番号２を割り当てる（ステップＳ９３）。ＢＩＯＳ６は、バス番号２に対してスキャンを実行する（ステップＳ９４）。
【００８０】
下流Ｐ２Ｐブリッジ１６のコンフィグ処理部４３は、構成情報に従って、バス番号、デバイス番号及びファンクション番号のセットが（２，０，０）〜（２，３，０）である４個の下流Ｐ２Ｐブリッジ１６−０〜１６−３の存在をＢＩＯＳ６に対して応答する（ステップＳ９５）。尚、構成情報とは、各仮想スロットに接続するファンクションの個数を示す情報である。
【００８１】
ＢＩＯＳ６は、下流Ｐ２Ｐブリッジ１６−０〜１６−３のバス番号、デバイス番号及びファンクション番号のセット（２，０，０）〜（２，３，０）を検出し、下流Ｐ２Ｐブリッジ１６−０〜１６−３の下流側にバス番号としてそれぞれ３〜６を割り当てる（ステップＳ９６）。ＢＩＯＳ６は、バス番号３〜６に対してスキャンを実行する（ステップＳ９７）。
【００８２】
下流Ｐ２Ｐブリッジ１６のコンフィグ処理部４３は、ファンクション２４−０〜２４−３の存在を隠蔽する（ステップＳ９８）。即ち、コンフィグ処理部４３は、ファンクション２４−０〜２４−３が存在しないことを示すエラーステータスをＢＩＯＳ６に返信する。これにより、Ｉ／Ｏデバイス２Ａのファンクション２４−０〜２４−３は全てdisable状態になる。
【００８３】
その後、ハイパーバイザ４は、下流Ｐ２Ｐブリッジ１６−０〜１６−３を初期化する（ステップＳ９９）。具体的には、ハイパーバイザ４は、ホットプラグコントローラ１７−０〜１７−３を初期化する。また、ハイパーバイザ４は、図１９に示すように、各デバイスに割り込み番号を割り当て、各デバイスの割り込み番号と関連付けされた割り込みアドレスをメモリ空間に設定する。これにより、ハイパーバイザ４は、割り込み信号に含まれる割り込み番号を参照することで、割り込み信号を発生したデバイスを特定することができる。
【００８４】
図２０は、図１７のステップＳ８３の詳細を示すフローチャートである。
【００８５】
図１７のステップＳ８２でファンクション２４−１の追加が指示されると、ホットプラグコントローラとして機能するコンフィグ処理部４３は、ファンクション２４−１に対応する仮想スロットレジスタ４６−１のプレゼンス（存在）フラグに「１（有効）」を設定する。これにより、コンフィグ処理部４３は、仮想スロット１７−１の状態を更新する（ステップＳ１０１）。コンフィグ処理部４３は、ハイパーバイザ４に対し、割り込み信号を発生させる（ステップＳ１０２）。この割り込み信号は、ファンクション２４−１に対応する下流Ｐ２Ｐブリッジ１６−１（即ち、コンフィグテーブル４４−１）の割り込み番号を含む。
【００８６】
ハイパーバイザ４は、仮想スロット１７−１の状態を参照し、ファンクション２４−１の存在を検出する（ステップＳ１０３）。具体的には、ハイパーバイザ４は、バス番号、デバイス番号及びファンクション番号のセットが（２，１，０）である下流Ｐ２Ｐブリッジ１６−１に、タイプ０のコンフィギュレーションリードのパケットを送信する。コンフィグ処理部４３は、タイプ０のコンフィギュレーションリードのパケットを受信し、コンフィグテーブル４４−１内の仮想スロットレジスタ４６−１のプレゼンスフラグ設定「１（有効）」をハイパーバイザ４に返信する。これにより、ハイパーバイザ４は、仮想スロット１７−１の状態を参照することができる。
【００８７】
ハイパーバイザ４は、コンフィグ処理部４３に下流ポート３２（即ちＩ／Ｏスロット２２）の有効（enable）を指示する（ステップＳ１０４）。ここでは、ハイパーバイザ４は、コンフィグ処理部４３に、Ｉ／Ｏデバイス２Ａへの電力供給を指示している。しかしながら、既に、Ｉ／Ｏスロット２２からＩ／Ｏデバイス２Ａに電力が供給されているため、コンフィグ処理部４３は、この指示を無視する。
【００８８】
ハイパーバイザ４は、仮想スロット１７−１を含む下流Ｐ２Ｐブリッジ１６−１の下流側に割り当てられたバス番号４に対してスキャンを実行する（ステップＳ１０５）。具体的には、ハイパーバイザ４は、コンフィグテーブル４４−１内のコンフィグレジスタ４５−１に含まれる「Secondary Bus Number」を参照することで、下流Ｐ２Ｐブリッジ１６−１の下流側に割り当てられたバス番号４を特定する。ハイパーバイザ４は、下流Ｐ２Ｐブリッジ１６−１の下流側にタイプ１のコンフィギュレーションリードのパケットを送信することによって、（４，０，０）〜（４，３１，７）に対応するデバイスを検索する。
【００８９】
フィルタ４１は、（バス番号、デバイス番号、ファンクション番号）が（４，０，０）であるファンクション２４−１からの応答をハイパーバイザ４に送信する（ステップ１０６）。具体的には、図１２に示すように、Ｉ／Ｏデバイス２Ａは、（バス番号、デバイス番号、ファンクション番号）が（４，０，１）〜（４，３１，７）であるファンクションを有していない。よって、ハイパーバイザ４が、（４，０，１）〜（４，０，７）をスキャンするときには、フィルタ４１は、Ｉ／Ｏデバイス２Ａのかわりにエラーステータス“Ｕｎｓｕｐｐｏｒｔｅｄ”の応答をハイパーバイザ４に返信する。
【００９０】
ＰＣＩ  Ｅｘｐｒｅｓｓの規格として、ＰＣＩｅスイッチの下流Ｐ２Ｐは、デバイス番号１以上のアクセスを許可しないことになっている。そのため、ハイパーバイザ４が、バス番号４、デバイス番号１〜３１をスキャンするときには、ブリッジ制御部４２は、Ｉ／Ｏデバイス２Ａのかわりにエラーステータス“Ｕｎｓｕｐｐｏｒｔｅｄ”の応答をハイパーバイザ４に返信する。
【００９１】
ハイパーバイザ４は、ファンクション２４−１からの応答を受信することにより、ファンクション２４−１を検出する（ステップＳ１０７）。ハイパーバイザ４は、ファンクション２４−１にアドレス空間を割り当て、対応するドライバ５−１をメモリ１２上に読み込む（ステップＳ１０８）。ドライバ１０５−１は、ファンクション２４−１を初期化する（ステップＳ１０９）。以上の処理により、Ｉ／Ｏデバイス２Ａ内のファンクション２４−１のみが有効化される。
【００９２】
図２１は、図１７のステップＳ８４の詳細を示すフローチャートである。
【００９３】
図１７のステップＳ８２でファンクション２４−１の削除が指示されると、ホットプラグコントローラとして機能するコンフィグ処理部４３は、ファンクション２４−１に対応する仮想スロットレジスタ４６−１のプレゼンスフラグに「０（無効）」を設定する。これにより、コンフィグ処理部４３は、仮想スロット１７−１の状態を更新する（ステップＳ１１１）。コンフィグ処理部４３は、ハイパーバイザ４に対し、割り込み信号を発生する（ステップＳ１１２）。この割り込み信号は、ファンクション２４−１に対応する下流Ｐ２Ｐブリッジ１６−１（即ち、コンフィグテーブル４４−１）の割り込み番号を含む。
【００９４】
ハイパーバイザ４は、仮想スロット１７−１の状態を参照し、ファンクション２４−１の存在を検出する（ステップＳ１１３）。具体的には、ハイパーバイザ４は、バス番号、デバイス番号及びファンクション番号のセットが（２，１，０）である下流Ｐ２Ｐブリッジ１６−１に、タイプ０のコンフィギュレーションリードのパケットを送信する。コンフィグ処理部４３は、タイプ０のコンフィギュレーションリードのパケットを受信し、コンフィグテーブル４４−１内の仮想スロットレジスタ４６−１のプレゼンスフラグ設定「０（無効）」をハイパーバイザ４に返信する。これにより、ハイパーバイザ４は、仮想スロット１７−１の状態を参照することができる。
【００９５】
ハイパーバイザ４は、コンフィグ処理部４３に下流ポート３２（即ちＩ／Ｏスロット２２）の無効（disable）を指示する（ステップＳ１１４）。ここでは、ハイパーバイザ４は、コンフィグ処理部４３に、Ｉ／Ｏデバイス２Ａへの電力供給の中止を指示している。しかしながら、他のファンクションに電力を供給する場合があるため、コンフィグ処理部４３は、この指示を無視する。
【００９６】
ハイパーバイザ４は、アドレス空間に存在する、ファンクション２４−１に対応するドライバ５−１を削除する（ステップＳ１１５）。以上の処理により、Ｉ／Ｏデバイス２Ａ内のファンクション２４−１のみが無効化される。
【００９７】
例えば、ファンクション２４−１が仮想マシン３−１に割り当てられ有効化されており、且つファンクション２４−０，２４−２，２４−３が無効化されている場合に、ハイパーバイザ４は、ファンクション２４−０，２４−２，２４−３のいずれかを仮想マシン３−０に割り当てることができる。そのため、ファンクション毎に有効化又は無効化する意義がある。
【００９８】
上記実施の形態では、サーバ１は仮想ＯＳとしてハイパーバイザ４を利用したが、サーバ１は、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）のようなＯＳを利用してもよい。この場合、ハイパーバイザ４が実行する処理は、ＯＳで実行される。
【００９９】
なお、本発明は、上述した実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。
【０１００】
以上の実施の形態に関し、更に以下の付記を開示する。
【０１０１】
（付記１）複数のファンクションを備えるＩ／Ｏデバイスに接続するスイッチング回路において、パケットの宛先のバス番号を有するテーブルを、前記ファンクションの数分少なくとも備え、前記Ｉ／Ｏデバイスにファンクションの追加を指示するパケットを受信すると、複数の前記テーブルから前記パケットの宛先のバス番号を含むテーブルを選択し、選択したテーブルの番号をフィルタに通知する処理部と、前記パケットの宛先のファンクション番号を通知された前記テーブルの番号に変更する前記フィルタと、を備えることを特徴とするスイッチング回路。かかる構成によれば、Ｉ／Ｏデバイスに含まれる各ファンクションを個別に有効化することができる。
【０１０２】
（付記２）前記フィルタは、前記Ｉ／Ｏデバイスにファンクションの追加を指示されたハイパーバイザから該Ｉ／Ｏデバイスに対するスキャン要求のパケットを受けると、前記ファンクションに対するスキャン要求のパケットのみを通し、該ファンクションからの応答を前記ハイパーバイザに送信し、該ファンクション以外のファンクションに対するスキャン要求のパケットを遮断し、エラー応答を前記ハイパーバイザに送信する、ことを特徴とする付記１記載のスイッチング回路。かかる構成によれば、Ｉ／Ｏデバイスに含まれる各ファンクションを個別に有効化することができる。
【０１０３】
（付記３）前記処理部によって選択されたテーブルに従って、前記フィルタから受信したパケットの各ファンクションへの転送を制御する制御部を更に備え、前記パケットが、前記ファンクションの宛先をバス番号、デバイス番号及びファクション番号のセットで特定され、且つ前記ファンクションに転送されるデータである場合に、前記処理部は、前記パケットに含まれるバス番号を含むテーブルを選択し、前記ファクション番号に一対一対応する前記選択したテーブルの番号を前記フィルタに通知し、前記フィルタは、前記パケットに含まれるファンクション番号を前記通知されたテーブルの番号に変更し、当該ファンクション番号が変更されたパケットを前記制御部に送信することを特徴とする付記１又は２に記載のスイッチング回路。かかる構成によれば、バス番号、デバイス番号及びファクション番号のセットで宛先のファンクションが特定され且つファンクションに転送されるパケットが、宛先のファンクションに転送可能になる。
【０１０４】
（付記４）前記パケットが、当該パケットの宛先をアドレスで特定されるデータである場合に、前記処理部は、前記パケットに含まれるアドレスを含むテーブルを選択し、前記制御部は、前記処理部によって選択されたテーブルに従って、前記フィルタから受信したパケットの宛先への転送を制御する付記１乃至３のいずれかに記載のスイッチング回路。かかる構成によれば、アドレスで宛先が特定されるパケットが、当該宛先に転送可能になる。
【０１０５】
（付記５）前記パケットが、前記ファンクションの宛先をバス番号、デバイス番号及びファクション番号のセットで特定され、且つ前記複数のテーブルのいずれかを読み書きするデータである場合に、前記処理部は、前記パケットに含まれるデバイス番号を含むテーブルを選択し、当該テーブルに対して当該転送データに含まれるデータを読み書きすることを特徴とする付記１乃至４のいずれかに記載のスイッチング回路。かかる構成によれば、テーブルに対して、パケットに含まれるデータを読み書きすることができる。
【０１０６】
（付記６）前記フィルタは、前記パケットが前記各ファンションから受信された場合には、前記パケットに含まれるファンクション番号を０に変更し、前記ハイパーバイザに送信することを特徴とする請求項１乃至５のいずれかに記載のスイッチング回路。かかる構成によれば、ハイパーバイザがファンクションからのパケットの受信を認識できる。
【０１０７】
（付記７）付記１乃至６のいずれかに記載のスイッチング回路を備えることを特徴とする情報処理装置。
【０１０８】
（付記８）複数のファンクションを備えるＩ／Ｏデバイスに接続すると共に  パケットの宛先のバス番号を有するテーブルを、前記ファンクションの数分少なくとも備えるスイッチング回路の制御方法において、前記Ｉ／Ｏデバイスにファンクションの追加を指示するパケットを受信すると、複数の前記テーブルから前記受信したパケットの宛先のバス番号を含むテーブルを選択し、前記受信したパケットの宛先のファンクション番号を選択された前記テーブルの番号に変更することを特徴とするスイッチング回路の制御方法。
【符号の説明】
【０１０９】
１  サーバ
２Ａ，２Ｂ  Ｉ／Ｏデバイス
１１  ＣＰＵ
１２  メモリ
１３  ルートコンプレックス
１４  ＰＣＩｅスイッチ
１５  上流Ｐ２Ｐ（PCI-to-PCI）ブリッジ
１６−０〜１６−３  下流Ｐ２Ｐ（PCI-to-PCI）ブリッジ
４１  フィルタ
４２  ブリッジ制御部
４３  コンフィグ処理部
４４−０〜４４−３  コンフィグテーブル
４５−０〜４５−３  コンフィグレジスタ
４６−０〜４６−３  仮想スロットレジスタ
４７−０〜４７−３  ホットプラグコントローラレジスタ
【図１】
0005598148.tif 000002
【図２】
0005598148.tif 000003
【図３】
0005598148.tif 000004
【図４】
0005598148.tif 000005
【図５】
0005598148.tif 000006
【図６】
0005598148.tif 000007
【図７】
0005598148.tif 000008
【図８】
0005598148.tif 000009
【図９】
0005598148.tif 000010
【図１０】
0005598148.tif 000011
【図１１】
0005598148.tif 000012
【図１２】
0005598148.tif 000013
【図１３】
0005598148.tif 000014
【図１４】
0005598148.tif 000015
【図１５】
0005598148.tif 000016
【図１６】
0005598148.tif 000017
【図１７】
0005598148.tif 000018
【図１８】
0005598148.tif 000019
【図１９】
0005598148.tif 000020
【図２０】
0005598148.tif 000021
【図２１】
0005598148.tif 000022