(57)【要約】【課題】コンピュータが備えるPCIエクスプレスシステムのコンフィグレーションソフトの改造無しに、空きスロットに対する任意のI/Oデバイスのホットプラグを実現する。【解決手段】仮想PCIエクスプレスデバイス1600はPCIエクスプレス初期コンフィグレーションサイクルにおいて擬似的なI/Oデバイスの存在を示すことで、将来増設が見込まれるデバイスのためのリソース空間を確保する。空きスロット1605にI/Oデバイス1400が挿入されると、仮想PCIエクスプレスデバイス制御ロジック1602は下流PCI-PCIブリッジ1504にホットプラグ制御線1601を用いて通知する。下流PCI-PCIブリッジ1504はPCI-SIGの標準で定義されたホットプラグの手順に従ってCPU1100にI/Oデバイス1400の挿入を通知する割り込みを上げ、呼ばれたコンフィグレーションソフト1000が挿入されたI/Oデバイス1400のコンフィグレーションを行う。【選択図】図1
2008046722.tif 000002
【特許請求の範囲】
【請求項１】
バスに接続されるデバイス装置であって、スロットと、擬似デバイスと、前記スロットにデバイスが接続されていない場合には前記バスと前記擬似デバイスとの間の通信を中継し、前記スロットにデバイスが接続されている場合には前記バスと前記スロットとの間の通信を中継する通信中継手段とを備えることを特徴とするデバイス装置。
【請求項２】
前記擬似デバイスは、1以上のコンフィグレーションレジスタと、該コンフィグレーションレジスタに対し書き込み及び読み込み動作を行う制御部とを備えることを特徴とする請求項１記載のデバイス装置。
【請求項３】
前記擬似デバイスは、自擬似デバイスのトポロジ情報を保持し、前記制御部は前記トポロジ情報に基づいて前記コンフィグレーションレジスタに対し書き込み及び読み込み動作を行うことを特徴とする請求項２記載のデバイス装置。
【請求項４】
前記制御部は、前記スロットにデバイスが挿入されたときにCPUに割り込みを上げることを特徴とする請求項２記載のデバイス装置。
【請求項５】
前記制御部は、前記擬似デバイスに対して割り当てられたリソース空間の情報を用いて、前記スロットに挿入されたデバイスの一部または全てのコンフィグレーションを行うことを特徴とする請求項２記載のデバイス装置。
【請求項６】
前記制御部は、前記コンフィグレーションの完了後にCPUに割り込みを上げることを特徴とする請求項５記載のデバイス装置。
【請求項７】
前記割り込みを上げる前に前記制御部が行うコンフィグレーションは、前記CPUへの割り込みにより開始されるコンフィグレーションソフトによるデバイスのコンフィグレーションでサポートされないデバイスを対象とすることを特徴とする請求項６記載のデバイス装置。
【請求項８】
前記割り込みがPCI-SIGの標準で定義されたホットプラグの手順に従うことを特徴とする請求項４または６記載のデバイス装置。
【請求項９】
前記バスの規格がPCIであることを特徴とする請求項１記載のデバイス装置。
【請求項１０】
前記バスの規格がPCI-Xであることを特徴とする請求項１記載のデバイス装置。
【請求項１１】
前記バスの規格がPCIエクスプレスであることを特徴とする請求項１記載のデバイス装置。
【請求項１２】
PCIエクスプレススイッチを構成するデバイスに接続されるか或いは該デバイスに組み込まれていることを特徴とする請求項１１記載のデバイス装置。
【請求項１３】
前記スロットに接続されるデバイスがI/Oデバイス、PCIエクスプレススイッチ、下流PCI-PCIブリッジの何れかであることを特徴とする請求項１２記載のデバイス装置。
【請求項１４】
ルートコンプレックスを構成するデバイスに接続されるか或いは該デバイスに組み込まれていることを特徴とする請求項１１記載のデバイス装置。
【請求項１５】
前記スロットに接続されるデバイスがI/Oデバイス、PCIエクスプレススイッチの何れかであることを特徴とする請求項１４記載のデバイス装置。
【請求項１６】
バスに接続されるデバイス装置であって、スロットと、擬似デバイスと、前記スロットにデバイスが接続されていない場合には前記バスと前記擬似デバイスとの間の通信を中継し、前記スロットにデバイスが接続されている場合には前記バスと前記スロットとの間の通信を中継する通信中継手段とを備えたデバイス装置をシステムに組み入れた状態で、システムのCPUにより実行されるコンフィグレーションソフトにより初期コンフィグレーションを行う第1のステップと、
前記スロットにデバイスが挿入されたときに、該挿入されたデバイスに対してコンフィグレーションを行う第2のステップとを含むことを特徴とするシステム構成変更方法。
【請求項１７】
前記擬似デバイスは、1以上のコンフィグレーションレジスタと、該コンフィグレーションレジスタに対し書き込み及び読み込み動作を行う制御部とを備え、前記初期コンフィグレーションにおいては、前記コンフィグレーションソフトが、前記制御部を通じて前記コンフィグレーションレジスタの書き込み及び読み込みを行うことにより、前記擬似デバイスのコンフィグレーションを行うことを特徴とする請求項１６記載のシステム構成変更方法。
【請求項１８】
前記擬似デバイスは、自擬似デバイスのトポロジ情報を保持し、前記制御部は前記トポロジ情報に基づいて前記コンフィグレーションレジスタに対し書き込み及び読み込み動作を行うことを特徴とする請求項１７記載のシステム構成変更方法。
【請求項１９】
前記制御部は、前記スロットにデバイスが挿入されたときに前記CPUに割り込みを上げることを特徴とする請求項１７記載のシステム構成変更方法。
【請求項２０】
前記第2のステップにおいて、前記制御部は、前記擬似デバイスに対して前記初期コンフィグレーションにより割り当てられたリソース空間の情報を用いて、前記スロットに挿入されたデバイスの一部または全てのコンフィグレーションを行うことを特徴とする請求項１７記載のシステム構成変更方法。
【請求項２１】
前記制御部は、前記コンフィグレーションの完了後に前記CPUに割り込みを上げることを特徴とする請求項２０記載のシステム構成変更方法。
【請求項２２】
前記割り込みを上げる前に前記制御部が行うコンフィグレーションは、前記CPUへの割り込みにより開始されるコンフィグレーションソフトによるデバイスのコンフィグレーションでサポートされないデバイスを対象とすることを特徴とする請求項２１記載のシステム構成変更方法。
【請求項２３】
前記割り込みがPCI-SIGの標準で定義されたホットプラグの手順に従うことを特徴とする請求項１９または２１記載のシステム構成変更方法。
【請求項２４】
前記割り込みにより開始される前記コンフィグレーションソフトによるコンフィグレーションが、PCI-SIGの標準で定義されたホットプラグの手順に従うことを特徴とする請求項２３記載のシステム構成変更方法。
【請求項２５】
前記バスの規格がPCIであることを特徴とする請求項１６記載のシステム構成変更方法。
【請求項２６】
前記バスの規格がPCI-Xであることを特徴とする請求項１６記載のシステム構成変更方法。
【請求項２７】
前記バスの規格がPCIエクスプレスであることを特徴とする請求項１６記載のシステム構成変更方法。
【請求項２８】
前記デバイス装置が、PCIエクスプレススイッチを構成するデバイスに接続されるか或いは該デバイスに組み込まれており、前記スロットに接続されるデバイスがI/Oデバイス、PCIエクスプレススイッチ、下流PCI-PCIブリッジの何れかであることを特徴とする請求項２７記載のシステム構成変更方法。
【請求項２９】
前記デバイス装置が、ルートコンプレックスを構成するデバイスに接続されるか或いは該デバイスに組み込まれており、前記スロットに接続されるデバイスがI/Oデバイス、PCIエクスプレススイッチの何れかであることを特徴とする請求項２７記載のシステム構成変更方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデバイス装置及びシステム構成変更方法に関し、特にPCIエクスプレスシステムにおけるデバイスのホットプラグに好適なデバイス装置およびシステム構成変更方法に関する。
【背景技術】
【０００２】
コンピュータの内部でCPUとI/Oデバイスを接続するバスの規格として、Peripheral Component Interconnect Special Interest Group(PCI-SIG)が標準化を行ったPCIと呼ぶパラレスバス規格が一般的に用いられている。また今日ではPCIの発展規格である、伝送速度を高速化したPCI-Xと、パラレルバスをシリアル化し、接続するデバイス間をパケットを用いて通信するPCIエクスプレスとが標準化されている。
【０００３】
以下では、PCIエクスプレスにおいて、相互に接続されたデバイスで構成されるシステムをPCIエクスプレスシステム、接続される種々のデバイスをPCIエクスプレスデバイス、デバイスを接続するバスをPCIエクスプレスバス、通信に用いられるパケットをPCIエクスプレスパケットと呼ぶ。従来のPCIエクスプレスシステムの一例が、非特許文献１に記載されている。
【０００４】
図16を参照すると、この従来のPCIエクスプレスシステムは、ホストバスによりCPU1100と接続すると共にメモリバスによりメモリ1200と接続し、PCIエクスプレスのツリートポロジーのルート(根)となる機能を果たすルートコンプレックス1300と、PCIエクスプレスバスに対しファンアウト機能を提供するPCIエクスプレススイッチ5100と、PCIバスにより接続されるI/Oデバイス1400とから構成される。一般にPCIエクスプレスのツリートポロジーのルートコンプレックス1300側を上流、I/Oデバイス1400側を下流と呼ぶ。図16では、PCIエクスプレススイッチ5100に3つのI/Oデバイスが接続されているが、接続されるI/Oデバイス1400の数は3つに限定されるものではない。また、1000はコンピュータが備えるPCIエクスプレスシステムのコンフィグレーションソフトである。ここではBIOSとOSが保持するPCIデバイスのコンフィグレーションを行うソフトウェアを総称してコンフィグレーションソフトと呼んでいる。
【０００５】
図17を参照するとPCIエクスプレススイッチ5100は、上流PCI-PCIブリッジ1501と、内部PCIバス1503と、下流PCI-PCIブリッジ1505とを含む。さらに上流PCI-PCIブリッジ1501と下流PCI-PCIブリッジ1505は、自ブリッジより下流に接続するPCIエクスプレスリソース空間の情報を保持するコンフィグレーションレジスタ1502を備える。PCIエクスプレスリソース空間とは、PCIエクスプレスシステムで用いる種々のアドレスにおいて占められる空間である。またアテンションボタン17001は、利用者がホットプラグ操作を開始する際に使用するボタンである。
【０００６】
図18はコンフィグレーションレジスタの内部構成を示すブロック図である。コンフィグレーションレジスタには、タイプ1とタイプ0の2種類があり、PCI-PCIブリッジにはタイプ1のコンフィグレーションレジスタが使用され、I/Oデバイスにはタイプ0のコンフィグレーションレジスタが使用される。
【０００７】
タイプ1とタイプ0は共通して、デバイスID18011、ベンダID18012、クラスコード18013を保持する。デバイスIDはベンダ固有のデバイス番号、ベンダIDは製造者番号、クラスコードはデバイスの属性を示す。コンフィグレーションソフト1000は、これら3つのレジスタを参照することにより、そのデバイスがどのようなデバイスかを判別することができる。
【０００８】
タイプ1のコンフィグレーションレジスタは、他に、下流バスへのパケットルーティングに必要なバス番号の下限値18001と上限値18002、32ビットI/O空間の下限値18003と上限値18004、32ビットメモリ空間の下限値18005と上限値18006、さらに場合によっては64ビットメモリ空間の下限値18007と上限値18008を有する。これらは、PCIエクスプレスの初期コンフィグレーション時に、コンフィグレーションソフト1000によって書き込みが行われる。また、タイプ1のコンフィグレーションレジスタには、ホットプラグレジスタ18014が標準として備わる。
【０００９】
他方、タイプ0のコンフィグレーションレジスタは、I/Oレジスタが要求するメモリ空間とI/O空間の２つのアドレス空間を示す1以上のベースアドレスレジスタ18021を保持する。ベースアドレスレジスタ18021はまた、コンフィグレーションソフト1000がI/Oデバイスへアドレス空間を割り当てる際にベースアドレスを書き込むために用いられる。
【００１０】
このような構成を有する従来のPCIエクスプレスシステムは次のように動作する。
【００１１】
PCIエクスプレス初期コンフィグレーションサイクルが開始されると、コンフィグレーションソフト1000によりPCIエクスプレスシステムに存在するPCIエクスプレスデバイスが全て探し出される。具体的には、システム上の全てのPCIバスがスキャンされ、各PCIバスの各スロットがどのような属性のPCIエクスプレスデバイスで占有されているかが調べられる。そして、発見された各PCIエクスプレスデバイスが要求するPCIエクスプレスリソース空間を連続的に割り当てることでコンフィグレーションが行われる。たとえば、図16のPCIエクスプレスシステムの場合、PCIエクスプレススイッチ5100の下流に接続する各I/Oデバイス1400に対して要求するリソース空間が割り当てられ、その割り当て量に応じてPCIエクスプレススイッチ5100の下流PCI-PCIブリッジ1505、さらには上流PCI-PCIブリッジ1501におけるコンフィグレーションレジスタ1502のバス番号の下限値18001と上限値18002、32ビットI/O空間の下限値18003と上限値18004、32ビットメモリ空間の下限値18005と上限値18006等が設定される。
【００１２】
CPU1100からI/Oデバイス1400への通信等は、上述のように設定されたコンフィグレーションレジスタ1502に従って、以下のように実行される。すなわち、CPU1100からPCIエクスプレススイッチ5100に接続されたI/Oデバイス1400への通信は、CPU1100の命令によりルートコンプレックス1300でPCIエクスプレスパケットが生成され、PCIエクスプレススイッチ5100内の上流PCI-PCIブリッジ1501に送信される。上流PCI-PCIブリッジ1501は、コンフィグレーションレジスタ1502を参照し、PCIエクスプレスパケットのあて先が自ブリッジより下流のPCIエクスプレスバスに接続しているか否かを判定する。あて先が自ブリッジより下流のPCIエクスプレスバスに接続している場合、PCIエクスプレスパケットを全ての下流PCI-PCIブリッジ1505にブロードキャストする。下流PCI-PCIブリッジ1505は、前記上流PCI-PCIブリッジ1501と同じ機能により、あて先が自ブリッジより下流のPCIエクスプレスバスに接続しているか判定し、あて先のI/Oデバイス1400が接続しているPCIエクスプレスバスへPCIエクスプレスパケットを転送する。
【００１３】
一方、PCIエクスプレススイッチ5100に接続されているI/Oデバイス1400からCPU1100へ通信を行う場合、上述したCPU1100からI/Oデバイス1400へのPCIエクスプレスパケット転送手順と逆の順序をたどる。このとき、上流PCI-PCIブリッジ1501と下流PCI-PCIブリッジ1505は、PCIエクスプレスパケットのあて先が、コンフィグレーションレジスタ1502で示された自ブリッジより下流のPCIエクスプレスリソース空間に該当しない場合にブリッジの上流に転送する。また、下流PCI-PCIブリッジ1505から上流PCI-PCIブリッジ1501にPCIエクスプレスパケットを転送する場合、ブロードキャストではなくユニキャストを用いる。
【００１４】
また、PCIエクスプレスは、空きスロットにI/Oデバイスの活栓挿抜を行うホットプラグ機能を提供している(たとえば非特許文献1参照)。この従来のPCIエクスプレスのホットプラグは次のように動作する。すなわち、下流PCI-PCIブリッジ1505の下流スロットにI/Oデバイス1400が挿入されると、当該下流PCI-PCIブリッジ1505とI/Oデバイス1400の間のリンクが確立され、電気信号の同期やクレジット情報の交換が自動的に行われる。続いて、利用者によりアテンションボタン17001が押されると、下流PCI-PCIブリッジ1505はホットプラグレジスタ18014をオンにすると同時に、CPU1100に割り込みを上げる。この割り込みを契機として、コンフィグレーションソフト1000が呼び出され、挿入されたI/Oデバイス1400のコンフィグレーションを行うと共にホットプラグレジスタ18014をクリアする。本コンフィグレーションの終了後、挿入されたI/Oデバイス1400が使用可能となる。
【００１５】
他方、PCIエクスプレスおよびホットプラグに関する技術ではないが、コンピュータシステムの構成を動的に変更する技術として、特許文献1に記載される技術がある。この従来技術は、コンピュータシステムに接続されるI/O装置と将来増設が見込まれるI/O装置をそれぞれ実装置および予約装置として予めI/Oテーブルに一緒に組み込むと共に、I/Oテーブル上に各I/O装置が実装置状態にあるか予約装置状態にあるかを識別するためのフラグを設け、システムの運用中にフラグをセット、リセットすることで、各I/O装置を実装置から予約装置にあるいはその逆へと変換できるようにしている。ここで、I/Oテーブルは、システムジェネレーション処理の実行により、外部記憶装置にオブジェクトとして登録されるI/Oテーブルを主記憶装置に展開したものであり、I/O装置を制御する際にOSにより参照されるテーブルである。
【００１６】
【非特許文献１】「PCI Express Base Specification Revision 1.1」PCI-SIG、2005年3月28日、pp30,319−330,349−361
【特許文献１】特開昭64-76252号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
ホットプラグは、システムの他のデバイスを稼動させたままI/Oデバイス等を物理的に取り付けたり取り外したりできる技術である。従来のPCIエクスプレスシステムにおいては、たとえば図16のPCIエクスプレススイッチ5100に初期コンフィグレーションサイクル時点で既に取り付けられていたI/Oデバイス1400を、それが故障したために同種のI/Oデバイス1400に交換する等の場合にはホットプラグ本来の機能を発揮することができた。しかし、初期コンフィグレーションサイクル時点で空きスロットの状態であったスロットに新たなI/Oデバイスをホットプラグすることは実質的に不可能であった。
【００１８】
その理由は、従来のコンピュータが備えるPCIエクスプレスシステムのコンフィグレーションソフト1000による初期コンフィグレーションサイクル(以下ではPCIエクスプレス初期コンフィグレーションサイクルと呼ぶ)では、PCIエクスプレスバスにバス番号を、PCIエクスプレススイッチとI/Oデバイスとにデバイス番号、ファンクション番号、32ビットI/O空間、32ビットメモリ空間および必要に応じて64ビットメモリ空間をそれぞれ連続的に割り当てるが、空きスロットには割り当てない。このため、PCIエクスプレススイッチの空きスロットにI/Oデバイスを挿入した場合、PCIエクスプレスシステムのコンフィグレーションソフト1000がPCI-SIGの標準で定義されたI/Oデバイスのホットプラグに対応している場合でも、挿入したI/Oデバイスに割り当てるPCIエクスプレスリソース空間が、既に該リソース空間を使用している他のデバイスと干渉する。よって、空きスロットへのI/Oデバイスの組み込みには、PCIエクスプレススイッチ内の上流PCI-PCIブリッジと下流PCI-PCIブリッジとが保持するコンフィグレーションレジスタと、各I/Oデバイスが保持する割り当てられたPCIエクスプレスリソース空間の情報を示すベースアドレスレジスタとを含む、PCIエクスプレスシステム全体の再コンフィグレーションが必要となり、他のI/Oデバイスが提供するサービスを継続した状態で所望のI/Oデバイスのホットプラグができない。
【００１９】
上述と同様の理由により、従来のPCIエクスプレスシステムにおいては、ルートコンプレックスに対するI/Oデバイスのホットプラグ、PCIエクスプレススイッチに対するPCIエクスプレススイッチのホットプラグ、ルートコンプレックスに対するPCIエクスプレススイッチのホットプラグ、PCIエクスプレススイッチの上流PCI-PCIブリッジに対する下流PCI-PCIブリッジのホットプラグが困難であった。
【００２０】
また、I/Oデバイスのホットプラグ以外のホットプラグ、すなわち、PCIエクスプレススイッチおよびルートコンプレックスに対するPCIエクスプレススイッチのホットプラグ、PCIエクスプレススイッチの上流PCI-PCIブリッジに対する下流PCI-PCIブリッジのホットプラグの場合、PCI-SIGの標準で定義されたホットプラグの中でI/Oデバイスのホットプラグのみをサポートするコンフィグレーションソフト1000では、ホットプラグされたPCIエクスプレススイッチおよび下流PCI-PCIブリッジのコンフィグレーションが行えないことも、その種のホットプラグを困難にしている理由の一つであった。
【００２１】
他方、将来増設が予想されるI/Oデバイス等については、OSが参照するI/Oテーブルに予め予約装置として設定しておくアイデアが特許文献1に記載されている。そこで、このアイデアをPCIエクスプレスシステムに適用することを考える。特許文献1のI/Oテーブルは、I/Oデバイスを制御するためにOSが参照するデータ群であるため、PCIエクスプレスシステムで言えば、PCIシステム上のPCIトポロジを表現するPCIデータ構造体に相当する。従って、特許文献1のアイデアをPCIエクスプレスシステムに適用する場合、このPCIデータ構造体中に各デバイスが実装置か予約装置かを区別するフラグを付加し、システムの運用中にフラグをセット、リセットすることで、各デバイスを実装置から予約装置にあるいはその逆へと変換することになる。しかしながら、この方法では挿入するデバイスを予め特定しなければならないという課題があると同時に、PCIデータ構造体は、コンフィグレーションソフト1000により初期コンフィグレーション時に作成され、その後の制御で参照されるものであるため、各I/Oデバイスが実装置か予約装置かを区別するフラグを扱えるようにするためには、既存のコンフィグレーションソフト1000の改造、すなわちOS自体の改造が必要になるという課題がある。
【００２２】
本発明はこのような事情に鑑みて提案されたものであり、その目的は、既存のコンフィグレーションソフトを用いてPCIエクスプレススイッチ等に対するI/Oデバイス等のホットプラグを可能にする新規な技術を提供することにある。
【００２３】
本発明の別の目的は、デバイスの増設が見込まれる空きスロットに接続して使用するデバイス装置であって、将来増設されるデバイスのためにリソース空間を予約し、デバイスの増設時点では増設デバイスと論理的に置き換わるデバイス装置を提供することにある。
【００２４】
本発明の他の目的は、I/Oデバイスのホットプラグのみをサポートするコンフィグレーションソフトを用いて、PCIエクスプレススイッチに対するPCIエクスプレススイッチのホットプラグ、ルートコンプレックスに対するPCIエクスプレススイッチのホットプラグ、上流PCI-PCIブリッジに対する下流PCI-PCIブリッジのホットプラグができるようにすることにある。
【課題を解決するための手段】
【００２５】
本発明の第1のデバイス装置は、バスに接続されるデバイス装置であって、スロットと、擬似デバイスと、前記スロットにデバイスが接続されていない場合には前記バスと前記擬似デバイスとの間の通信を中継し、前記スロットにデバイスが接続されている場合には前記バスと前記スロットとの間の通信を中継する通信中継手段とを備えることを特徴とする。
【００２６】
本発明の第2のデバイス装置は、第1のデバイス装置において、前記擬似デバイスは、1以上のコンフィグレーションレジスタと、該コンフィグレーションレジスタに対し書き込み及び読み込み動作を行う制御部とを備えることを特徴とする。
【００２７】
本発明の第3のデバイス装置は、第2のデバイス装置において、前記擬似デバイスは、自擬似デバイスのトポロジ情報を保持し、前記制御部は前記トポロジ情報に基づいて前記コンフィグレーションレジスタに対し書き込み及び読み込み動作を行うことを特徴とする。
【００２８】
本発明の第4のデバイス装置は、第2のデバイス装置において、前記制御部は、前記スロットにデバイスが挿入されたときにCPUに割り込みを上げることを特徴とする。
【００２９】
本発明の第5のデバイス装置は、第2のデバイス装置において、前記制御部は、前記擬似デバイスに対して割り当てられたリソース空間の情報を用いて、前記スロットに挿入されたデバイスの一部または全てのコンフィグレーションを行うことを特徴とする。
【００３０】
本発明の第6のデバイス装置は、第5のデバイス装置において、前記制御部は、前記コンフィグレーションの完了後にCPUに割り込みを上げることを特徴とする。
【００３１】
本発明の第7のデバイス装置は、第6のデバイス装置において、前記割り込みを上げる前に前記制御部が行うコンフィグレーションは、前記CPUへの割り込みにより開始されるコンフィグレーションソフトによるデバイスのコンフィグレーションでサポートされないデバイスを対象とすることを特徴とする。
【００３２】
本発明の第8のデバイス装置は、第4または第6のデバイス装置において、前記割り込みがPCI-SIGの標準で定義されたホットプラグの手順に従うことを特徴とする。
【００３３】
本発明の第9のデバイス装置は、第1のデバイス装置において、前記バスの規格がPCIであることを特徴とする。
【００３４】
本発明の第10のデバイス装置は、第1のデバイス装置において、前記バスの規格がPCI-Xであることを特徴とする。
【００３５】
本発明の第11のデバイス装置は、第1のデバイス装置において、前記バスの規格がPCIエクスプレスであることを特徴とする。
【００３６】
本発明の第12のデバイス装置は、第11のデバイス装置において、PCIエクスプレススイッチを構成するデバイスに接続されるか或いは該デバイスに組み込まれていることを特徴とする。
【００３７】
本発明の第13のデバイス装置は、第12のデバイス装置において、前記スロットに接続されるデバイスがI/Oデバイス、PCIエクスプレススイッチ、下流PCI-PCIブリッジの何れかであることを特徴とする。
【００３８】
本発明の第14のデバイス装置は、第11のデバイス装置において、ルートコンプレックスを構成するデバイスに接続されるか或いは該デバイスに組み込まれていることを特徴とする。
【００３９】
本発明の第15のデバイス装置は、第14のデバイス装置において、前記スロットに接続されるデバイスがI/Oデバイス、PCIエクスプレススイッチの何れかであることを特徴とする。
【００４０】
本発明の第1のシステム構成変更方法は、バスに接続されるデバイス装置であって、スロットと、擬似デバイスと、前記スロットにデバイスが接続されていない場合には前記バスと前記擬似デバイスとの間の通信を中継し、前記スロットにデバイスが接続されている場合には前記バスと前記スロットとの間の通信を中継する通信中継手段とを備えたデバイス装置をシステムに組み入れた状態で、システムのCPUにより実行されるコンフィグレーションソフトにより初期コンフィグレーションを行う第1のステップと、前記スロットにデバイスが挿入されたときに、該挿入されたデバイスに対してコンフィグレーションを行う第2のステップとを含むことを特徴とする。
【００４１】
本発明の第2のシステム構成変更方法は、第1のシステム構成変更方法において、前記擬似デバイスは、1以上のコンフィグレーションレジスタと、該コンフィグレーションレジスタに対し書き込み及び読み込み動作を行う制御部とを備え、前記初期コンフィグレーションにおいては、前記コンフィグレーションソフトが、前記制御部を通じて前記コンフィグレーションレジスタの読み出し及び書き込みを行うことにより、前記擬似デバイスのコンフィグレーションを行うことを特徴とする。
【００４２】
本発明の第3のシステム構成変更方法は、第2のシステム構成変更方法において、前記擬似デバイスは、自擬似デバイスのトポロジ情報を保持し、前記制御部は前記トポロジ情報に基づいて前記コンフィグレーションレジスタに対し書き込み及び読み込み動作を行うことを特徴とする。
【００４３】
本発明の第4のシステム構成変更方法は、第2のシステム構成変更方法において、前記制御部は、前記スロットにデバイスが挿入されたときに前記CPUに割り込みを上げることを特徴とする。
【００４４】
本発明の第5のシステム構成変更方法は、第2のシステム構成変更方法において、前記第2のステップにおいて、前記制御部は、前記擬似デバイスに対して前記初期コンフィグレーションにより割り当てられたリソース空間の情報を用いて、前記スロットに挿入されたデバイスの一部または全てのコンフィグレーションを行うことを特徴とする。
【００４５】
本発明の第6のシステム構成変更方法は、第5のシステム構成変更方法において、前記制御部は、前記コンフィグレーションの完了後に前記CPUに割り込みを上げることを特徴とする。
【００４６】
本発明の第7のシステム構成変更方法は、第6のシステム構成変更方法において、前記割り込みを上げる前に前記制御部が行うコンフィグレーションは、前記CPUへの割り込みにより開始されるコンフィグレーションソフトによるデバイスのコンフィグレーションでサポートされないデバイスを対象とすることを特徴とする。
【００４７】
本発明の第8のシステム構成変更方法は、第4または第6のシステム構成変更方法において、前記割り込みがPCI-SIGの標準で定義されたホットプラグの手順に従うことを特徴とする。
【００４８】
本発明の第9のシステム構成変更方法は、第8のシステム構成変更方法において、前記割り込みにより開始される前記コンフィグレーションソフトによるコンフィグレーションが、PCI-SIGの標準で定義されたホットプラグの手順に従うことを特徴とする。
【００４９】
本発明の第10のシステム構成変更方法は、第1のシステム構成変更方法において、前記バスの規格がPCIであることを特徴とする。
【００５０】
本発明の第11のシステム構成変更方法は、第1のシステム構成変更方法において、前記バスの規格がPCI-Xであることを特徴とする。
【００５１】
本発明の第12のシステム構成変更方法は、第1のシステム構成変更方法において、前記バスの規格がPCIエクスプレスであることを特徴とする。
【００５２】
本発明の第13のシステム構成変更方法は、第12のシステム構成変更方法において、前記デバイス装置が、PCIエクスプレススイッチを構成するデバイスに接続されるか或いは該デバイスに組み込まれており、前記スロットに接続されるデバイスがI/Oデバイス、PCIエクスプレススイッチ、下流PCI-PCIブリッジの何れかであることを特徴とする。
【００５３】
本発明の第14のシステム構成変更方法は、第12のシステム構成変更方法において、前記デバイス装置が、ルートコンプレックスを構成するデバイスに接続されるか或いは該デバイスに組み込まれており、前記スロットに接続されるデバイスがI/Oデバイス、PCIエクスプレススイッチの何れかであることを特徴とする。
【００５４】
『作用』
本発明にかかるデバイス装置を、そのスロットにデバイスを接続しない状態でシステムに組み入れ、コンフィグレーションソフトによる初期コンフィグレーションを開始すると、デバイス装置内部の通信中継手段によって擬似デバイスとコンフィグレーションソフトとの間の通信が中継されるため、擬似デバイスに対するコンフィグレーションが行われる。このとき擬似デバイスには、通常のデバイスと同様にコンフィグレーションレジスタが設けられているため、コンフィグレーションソフトは通常のデバイスと同様の動作で擬似デバイスに対してリソースの割り当てを伴うコンフィグレーションを実施することができる。
【００５５】
その後、システムの運用が開始され、本発明のデバイス装置のスロットにデバイスが接続されると、CPUに割り込みが上げられると同時に、デバイス装置内部の通信中継手段によってスロットに挿入されたデバイスとコンフィグレーションソフトとの間の通信が中継されるため、スロットに挿入されたデバイスに対するコンフィグレーションが行われる。このときコンフィグレーションソフトは、初期コンフィグレーションにより認識した擬似デバイスに代わってデバイスがホットプラグされたように見える。従って、将来増設が見込まれるデバイスに必要なリソース空間以上のリソース空間を擬似デバイスが要求するようにコンフィグレーションレジスタを設定しておけば、スロットに挿入されたデバイスに対するコンフィグレーションは、擬似デバイスに割り当てられていたリソース空間に収まる範囲内で行われる。
【００５６】
コンフィグレーションソフトがI/Oデバイスのホットプラグのみをサポートする場合、本発明にかかるデバイス装置のスロットに挿入したデバイスがPCIエクスプレススイッチや下流PCI-PCIブリッジであれば、それらのコンフィグレーションをコンフィグレーションソフトで行えない。その場合には、本発明にかかるデバイス装置内の制御部がそれらのコンフィグレーションを実施した後、CPUに割り込みを上げ、コンフィグレーションソフトに、スロットに挿入されたPCIエクスプレススイッチや下流PCI-PCIブリッジに接続されたI/Oデバイスに対するコンフィグレーションを実施させる。
【発明の効果】
【００５７】
本発明によれば、既存のコンフィグレーションソフトを用いてPCIエクスプレススイッチ等に対するI/Oデバイス等のホットプラグが行えることである。その理由は、本発明にかかるデバイス装置を使用すれば、将来増設が見込まれるデバイスのためにリソース空間を確保でき、この確保したリソース空間に対してデバイスのホットプラグが行えるためである。
【００５８】
また本発明によれば、I/Oデバイスのホットプラグのみをサポートするコンフィグレーションソフトを用いて、PCIエクスプレススイッチに対するPCIエクスプレススイッチのホットプラグ、ルートコンプレックスに対するPCIエクスプレススイッチのホットプラグ、上流PCI-PCIブリッジに対する下流PCI-PCIブリッジのホットプラグが行える。その理由は、デバイス装置内の制御部がPCIエクスプレススイッチや下流PCI-PCIブリッジに対するコンフィグレーションを実施した後、CPUに割り込みを上げて、挿入されたPCIエクスプレススイッチや下流PCI-PCIブリッジに接続する個々のI/Oデバイスに対するコンフィグレーションを行わせるためである。
【発明を実施するための最良の形態】
【００５９】
『第1の実施の形態』
図1を参照すると、本発明の第1の実施の形態は、図16に示した従来のPCIエクスプレスシステムと比較して、仮想PCIエクスプレスデバイス1600を含む点と、PCIエクスプレススイッチ1500の1つの下流PCI-PCIブリッジ1505が下流PCI-PCIブリッジ1504に置き換えられている点で異なる。また、CPU1100で実行されるPCIエクスプレスシステムのコンフィグレーションソフト1000は、コンピュータ起動時のPCIエクスプレス初期コンフィグレーションサイクルと、PCIエクスプレススイッチ1500やI/Oデバイス1400などのPCIエクスプレスデバイスのホットプラグ時とにおいて、PCIエクスプレスシステムのコンフィグレーションを行う。
【００６０】
仮想PCIエクスプレスデバイス1600は、ホットプラグ制御線1601と、PCIエクスプレスパケットの転送を行うパケット転送ロジック1604と、自デバイス1600の動作を制御する仮想PCIエクスプレスデバイス制御ロジック1602と、PCIエクスプレス初期コンフィグレーションサイクルに対し、仮想的なデバイスが存在することを示す仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603と、I/Oデバイス1400をホットプラグするための空きスロット1605とを含む。
【００６１】
パケット転送ロジック1604は、PCIエクスプレス初期コンフィグレーションサイクルから、新たにI/Oデバイス1400が空きスロット1605にホットプラグされるまでの間、下流PCI-PCIブリッジ1504から受信したPCIエクスプレスパケットを仮想PCIエクスプレスデバイス制御ロジック1602に転送する。I/Oデバイス1400が空きスロット1605にホットプラグされた後、パケット転送ロジック1604は、下流PCI-PCIブリッジ1504から受信したPCIエクスプレスパケットをホットプラグされたI/Oデバイス1400に転送する。
【００６２】
仮想PCIエクスプレスデバイス制御ロジック1602は、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603と共に擬似的なデバイスを実現する。仮想PCIエクスプレスデバイス制御ロジック1602は、パケット転送ロジック1604から受信したPCIエクスプレスパケットがコンフィグレーションアクセスであった場合、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603に対し、必要な書き込み及び読み込み動作を行う。また、その他のPCIエクスプレスパケットに応答し、自デバイス1600の制御やPCIエクスプレスパケットの返信を行う。一方、I/Oデバイス1400が空きスロット1605に挿入された場合、その旨をホットプラグ制御線1601を用いて下流PCI-PCIブリッジ1504に通知する。
【００６３】
仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、PCIエクスプレス初期コンフィグレーションサイクルにおいて、コンフィグレーションアクセスのためのPCIエクスプレスパケットによって書き込み及び読み込みが行われ、仮想的なPCIエクスプレスデバイス1600の存在を通知し、PCIエクスプレスリソース空間の割り当てを要求することで所望のPCIエクスプレスリソース空間を予約する。このとき仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、仮想PCIエクスプレスデバイス1600がPCI-SIGの標準で定義されているPCI-PCIブリッジや、何らかのI/Oデバイス1400、あるいはそれらの複数からなる組み合わせが存在することを示す情報を含む。
【００６４】
図2(a)及び(b)は、コンフィグレーションソフト1000に対し、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603が仮想的に存在を示すPCIエクスプレスデバイスの構成の具体例である。以下では本具体例を仮想デバイス構成と呼ぶ。
【００６５】
図2(a)を参照すると、仮想デバイス構成2000は何らかのI/Oデバイス1400の存在を示す仮想I/Oデバイス2001を含む。この場合、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、図18に示すタイプ0のコンフィグレーションレジスタを1つ保持し、デバイスID、ベンダIDおよびクラスコードの設定値により仮想I/Oデバイス2001を示し、ベースアドレスの設定値により仮想I/Oデバイス2001のリソース空間を要求する。
【００６６】
また、図2(b)が示す別の例では、仮想デバイス構成2100は、PCI-SIGの標準で定義されているPCI-PCIブリッジの存在を示す仮想PCI-PCIブリッジ2101と、それに接続された仮想I/Oデバイス2001とを含む。この場合、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、図18に示すタイプ1のコンフィグレーションレジスタと、タイプ0のコンフィグレーションレジスタとを1つずつ保持する。タイプ1のコンフィグレーションレジスタのデバイスID、ベンダIDおよびクラスコードの設定値により仮想PCI-PCIブリッジ2101を示す。また、タイプ0のコンフィグレーションレジスタのデバイスID、ベンダIDおよびクラスコードの設定値により仮想I/Oデバイス2001を示し、そのベースアドレスの設定値により仮想I/Oデバイス2001が要求するリソース空間を示す。また、図2(b)の例のように複数の仮想デバイスの存在を示す場合、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603には、仮想デバイスの接続関係を示す情報(トポロジ情報)が付加される。仮想PCIエクスプレスデバイス制御ロジック1602は、コンフィグレーションソフト1000が、複数のコンフィグレーションレジスタをトポロジ情報が示す順序で読み込むように、PCIエクスプレスパケットをルーティングする。すなわち、コンフィグレーションソフト1000は先に読み込んだ方が上流にあると解釈するため、より上流側に接続される仮想デバイスのコンフィグレーションレジスタが先に読み込まれるようにする。
【００６７】
図2(b)では仮想PCI-PCIブリッジ2101が1段の場合を示したが、仮想PCI-PCIブリッジ2101が多段の構成や、仮想I/Oデバイス2001を含まず、仮想PCI-PCIブリッジ2101だけで構成される場合も可能である。また、PCI-PCIブリッジやI/Oデバイスに加え、PCIエクスプレススイッチや、その他のPCIエクスプレスデバイスの存在を示す仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603が本用途に使用可能であることは、当事者であれば容易に理解される。いずれにせよ、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、仮想デバイス構成により所望のPCIエクスプレスリソース空間を予約する。
【００６８】
ここで、仮想I/Oデバイス2001の役割は、上流に接続する下流PCI-PCIブリッジ1504が有するタイプ1のコンフィグレーションレジスタ1502が示すPCIアドレス空間を、空きスロット1605に将来挿入されるI/Oデバイス1400のために事前に確保することである。確保するPCIアドレス空間は、将来挿入されるI/Oデバイス1400に必要なアドレス空間と完全に一致する必要はなく、そのアドレス空間以上のアドレス空間であれば良い。また、仮想I/Oデバイス2001のタイプ0のコンフィグレーションレジスタのクラスコードも、将来挿入されるI/Oデバイス1400のタイプと一致している必要はない。その理由は、若し異なっている場合は、コンフィグレーションソフト1000によるホットプラグ時のコンフィグレーションでその違いが吸収されるためである。
【００６９】
再び図1を参照すると、下流PCI-PCIブリッジ1504は、空きスロット1605に新たにI/Oデバイス1400が挿入されたというホットプラグ制御線1601からの通知を契機として、CPU1100へ自ブリッジに接続する下流PCIエクスプレスバスにおいてI/Oデバイス1400の挿入が発生したことを通知する割り込みを上げる。
【００７０】
次に、図1及び図3のフローチャートを参照して本実施の形態のPCIエクスプレス初期コンフィグレーションサイクルにおける動作について詳細に説明する。
【００７１】
PCIエクスプレス初期コンフィグレーションサイクルが開始されると、PCIエクスプレスシステムが備えるPCIエクスプレススイッチ1500とI/Oデバイス1400とが順に調べられ、各デバイスが要求するPCIエクスプレスリソース空間を順に割り当てることでコンフィグレーションが行われる。一般にこのコンフィグレーションによって、PCIシステム上のPCIトポロジを表現するPCIデータ構造体などと呼ばれるデータが生成される。
【００７２】
仮想PCIエクスプレスデバイス1600がPCIエクスプレスコンフィグレーションサイクルの対象となったとき、コンフィグレーションソフト1000は、仮想PCIエクスプレスデバイスの構成を調べるコンフィグレーションリードリクエストであるPCIエクスプレスパケットを送信する(ステップ3000)。パケット転送ロジック1604は、このPCIエクスプレスパケットを下流PCI-PCIブリッジ1504を経由して受信し、仮想PCIエクスプレスデバイス制御ロジック1602に転送する(ステップ3001)。仮想PCIエクスプレスデバイス制御ロジック1602は、コンフィグレーションリードリクエストが要求する情報を仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603から読み取り、PCIエクスプレスパケットを作成して返信する(ステップ3002)。返信する情報は、仮想PCIエクスプレスデバイス1600が示す仮想デバイス構成に関する情報を含み、コンフィグレーションソフト1000は仮想PCIエクスプレスデバイス1600の仮想デバイス構成が要求するPCIエクスプレスリソース空間を認識する(ステップ3003)。
【００７３】
続いてコンフィグレーションソフト1000は、要求されたPCIエクスプレスリソース空間を割り当てるコンフィグレーションライトリクエストであるPCIエクスプレスパケットを送信する(ステップ3004)。パケット転送ロジック1604は、前記コンフィグレーションリードリクエストの場合と同様に、このPCIエクスプレスパケットを下流PCI-PCIブリッジ1504を経由して受信し、仮想PCIエクスプレスデバイス制御ロジック1602に転送する(ステップ3005)。仮想PCIエクスプレスデバイス制御ロジック1602は、受信したPCIエクスプレスパケットの内容に従って仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603に書き込みを行うことにより(ステップ3006)、仮想PCIエクスプレスデバイス1600のコンフィグレーションが完了する(ステップ3007)。
【００７４】
ステップ3000〜ステップ3006は、仮想PCIエクスプレスデバイスが示す仮想的なPCIエクスプレスデバイスの構成が複数のデバイスを含む場合、必要に応じて繰り返される。具体的には、ステップ3000〜3003を複数のデバイスの個々に対して繰り返した後(複数のデバイスを全て認識した後)、ステップ3004〜3006を繰り返し、個々のデバイスのコンフィグレーションを行う。このようにして仮想PCIエクスプレスデバイス1600は、後に空きスロット1605に挿入するI/Oデバイス1400が使用するPCIエクスプレスリソース空間を予約する。
【００７５】
次に、図1及び図4のフローチャートを参照して本実施の形態の空きスロット1605にI/Oデバイス1400をホットプラグする場合の動作について詳細に説明する。
【００７６】
空きスロット1605にI/Oデバイス1400を挿入すると(ステップ4000)、仮想PCIエクスプレスデバイス制御ロジック1602は、以降下流PCI-PCIブリッジ1504から受信する全てのPCIエクスプレスパケットを、挿入されたI/Oデバイス1400に転送するようにパケット転送ロジック1604を設定する(ステップ4001)。続いて仮想PCIエクスプレスデバイス制御ロジック1602は、空きスロット1605にI/Oデバイス1400が挿入されたことをホットプラグ制御線1601により下流PCI-PCIブリッジ1504に通知する(ステップ4002)。
【００７７】
I/Oデバイス1400の通知を受信した下流PCI-PCIブリッジ1504は、CPU1100にI/Oデバイス1400が挿入されたことを通知する割り込みを上げる(ステップ4003)。割り込みを受けたCPU1100では、コンフィグレーションソフト1000が呼び出され、空きスロット1605に挿入したI/Oデバイス1400のコンフィグレーションを行う(ステップ4004)。ステップ4003とステップ4004は、PCI-SIGの標準で定義されたホットプラグの手順に従って行われる。
【００７８】
以上のステップにより、空きスロット1605に挿入されたI/Oデバイス1400のホットプラグが完了し、I/Oデバイス1400が使用可能となる。このとき、I/Oデバイス1400は、先に仮想PCIエクスプレスデバイス1600によって予約されたPCIエクスプレスリソース空間を使用し、また、PCIエクスプレスシステム上では、仮想PCIエクスプレスデバイス1600とホットプラグされたI/Oデバイス1400とが論理的に入れ替わる。
【００７９】
以上の手順により、従来のコンピュータが備えるPCI-SIGの標準で定義されたホットプラグをサポートするPCIエクスプレスシステムのコンフィグレーションソフト1000を用いて、PCIエクスプレススイッチ1500に対するI/Oデバイス1400のホットプラグが実現される。
【００８０】
また、本実施の形態ではPCIエクスプレススイッチ1500と仮想PCIエクスプレスデバイス1600が別デバイスである形態を示したが、PCIエクスプレススイッチ1500が仮想PCIエクスプレスデバイス1600を含む形態も可能である。
【００８１】
さらにまた、本実施の形態ではホットプラグを通知するホットプラグ制御線1601を設定したが、PCIエクスプレスパケットを用いてPCIエクスプレスバスにより通知することも可能である。
【００８２】
また、本実施の形態では、PCIエクスプレススイッチ1500の1つの下流PCI-PCIブリッジ1505をホットプラグの制御信号に対応する下流PCI-PCIブリッジ1504に置き換え、PCIエクスプレススイッチ1500に1つの仮想PCIエクスプレスデバイス1600を接続したが、複数の下流PCI-PCIブリッジ1505を下流PCI-PCIブリッジ1504に置き換え、複数の仮想PCIエクスプレスデバイス1600を接続ないし含む形態も可能である。
【００８３】
『第2の実施の形態』
図5を参照すると、本発明の第2の実施の形態は、図1に示した第1の実施の形態と比較して、ルートコンプレックス1300およびPCIエクスプレススイッチ1500の代わりにルートコンプレックス5000およびPCI-SIGの標準で定義されたPCIエクスプレススイッチ5100を備え、仮想PCIエクスプレスデバイス1600がPCIエクスプレススイッチ1300でなくルートコンプレックス5000に接続している点で相違する。
【００８４】
ルートコンプレックス5000は、仮想PCIエクスプレスデバイス制御ロジック1602からホットプラグ制御線1601により空きスロット1605にI/Oデバイス1400が挿入されたことを知らせる通知を受信すると、CPU1100に、I/Oデバイス1400の挿入を通知する割り込みを上げる。
【００８５】
その他のブロックの機能は第1の実施の形態と同じであり説明を省略する。
【００８６】
次に本実施の形態の動作を説明する。
【００８７】
PCIエクスプレス初期コンフィグレーションサイクルにおける動作は第1の実施の形態と同じであり説明を省略する。
【００８８】
一方、空きスロット1605にI/Oデバイス1400をホットプラグする場合の動作は、図4に示す第1の実施の形態の動作におけるステップ4002とステップ4003に関して、PCIエクスプレススイッチ1500が備える下流PCI-PCIブリッジ1504に代わりルートコンプレックス5000が同じ動作を行う。その他のステップにおける動作は第1の実施の形態と同じであり説明を省略する。
【００８９】
以上の手順により、従来のコンピュータが備えるPCI-SIGの標準で定義されたホットプラグをサポートするPCIエクスプレスシステムのコンフィグレーションソフト1000を用いて、ルートコンプレックス5000に対するI/Oデバイス1400のホットプラグが実現される。
【００９０】
また、本実施の形態ではルートコンプレックス5000と仮想PCIエクスプレスデバイス1600が別デバイスである形態を示したが、ルートコンプレックス5000が仮想PCIエクスプレスデバイス1600を含む形態も可能である。
【００９１】
さらにまた、本実施の形態ではホットプラグを通知するホットプラグ制御線1601を設定したが、PCIエクスプレスパケットを用いてPCIエクスプレスバスにより通知することも可能である。
【００９２】
『第3の実施の形態』
図6を参照すると、本発明の第3の実施の形態は、図1に示した第1の実施の形態と比較して、仮想PCIエクスプレスデバイス6000が仮想PCIエクスプレスデバイス制御ロジック1602に代えて仮想PCIエクスプレスデバイス制御ロジック6001を含む点と、空きスロット1605に挿入するデバイスがI/Oデバイス1400に代えてPCIエクスプレススイッチ5100である点で異なる。
【００９３】
仮想PCIエクスプレスデバイス制御ロジック6001は、コンフィグレーションソフト1000がPCIエクスプレススイッチ5100のホットプラグに対応する場合、PCIエクスプレススイッチ5100が空きスロット1605に挿入されたとき、図1に示す第1の実施の形態における仮想PCIエクスプレスデバイス制御ロジック1602と同様に、ホットプラグ制御線1601によりPCIエクスプレススイッチ1500が備える下流PCI-PCIブリッジ1504にPCIエクスプレススイッチ5100の挿入を通知する。
【００９４】
一方コンフィグレーションソフト1000がPCIエクスプレススイッチ5100のホットプラグに対応せず、I/Oデバイス1400のホットプラグのみをサポートする場合、仮想PCIエクスプレスデバイス制御ロジック6001は、PCIエクスプレススイッチ5100が空きスロット1605に挿入されたとき、自ロジック6001でPCIエクスプレススイッチ5100のコンフィグレーションを行う。具体的には、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603に記載された、あらかじめ予約されたPCIエクスプレスリソース空間を用いて、挿入されたPCIエクスプレススイッチ5100の上流PCI-PCIブリッジ1501と下流PCI-PCIブリッジ1505とが備えるコンフィグレーションレジスタ1502にPCIエクスプレスパケットを用いて書き込みを行うことで、PCIエクスプレススイッチ5100のコンフィグレーションを行う。PCIエクスプレススイッチ5100のコンフィグレーションが完了すると、続いて仮想PCIエクスプレスデバイス制御ロジック6001は、挿入されたPCIエクスプレススイッチ5100が備えるI/Oデバイス1400と接続した下流PCI-PCIブリッジ1505について、この下流PCI-PCIブリッジ1505を疑似してCPU1100に割り込みを上げ、I/Oデバイス1400の挿入を通知する。I/Oデバイス1400が接続した下流PCI-PCIブリッジ1505が複数存在する場合、割り込みにより開始されるI/Oデバイス1400のコンフィグレーションの終了を待って、個々の下流PCI-PCIブリッジ1505毎に同じ操作を繰り返す。
【００９５】
ここで、コンフィグレーションソフト1000がPCIエクスプレススイッチ5100のホットプラグに対応しているか否かを仮想PCIエクスプレスデバイス制御ロジック6001で認識する方法としては、たとえば以下のような方法がある。
1)仮想PCIエクスプレスデバイス制御ロジック6001が有する制御レジスタに、コンフィグレーションソフト1000がPCIエクスプレススイッチのホットプラグに対応しているか否かを、コンフィグレーションソフト1000自身あるいはロジック6001に別ケーブルで接続される別のコンピュータから設定する。
2)仮想PCIエクスプレスデバイス制御ロジック6001が有する物理スイッチの状態を、コンフィグレーションソフト1000がPCIエクスプレススイッチのホットプラグに対応しているか否かに応じて切り替える。
【００９６】
仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、PCIエクスプレス初期コンフィグレーションサイクルにおいて、PCIエクスプレススイッチ5100と、このPCIエクスプレススイッチ5100に接続する複数のI/Oデバイス1400のホットプラグに十分なPCIエクスプレスリソース空間の予約を行う。
【００９７】
次に本実施の形態の動作について図面を用いて詳細に説明する。
【００９８】
PCIエクスプレス初期コンフィグレーションサイクルにおける動作は図3に示す第1の実施の形態と同じであるため説明を省略する。
【００９９】
一方、空きスロット1605にPCIエクスプレススイッチ5100をホットプラグする場合の動作は、コンフィグレーションソフト1000がPCIエクスプレススイッチ5100のホットプラグに対応する場合、図4に示す第1の実施の形態のステップ4004において、コンフィグレーションソフト1000がI/Oデバイス1400に代えて空きスロット1605に挿入されたPCIエクスプレススイッチ5100と全てのI/Oデバイス1400とに対してコンフィグレーションを行う点で異なる。それ以外の各ステップにおける動作は同じであるため説明を省略する。
【０１００】
次に、図6と図7のフローチャートを用いてコンフィグレーションソフト1000がPCIエクスプレススイッチ5100のホットプラグに対応せず、I/Oデバイス1400のホットプラグのみをサポートする場合の動作を説明する。
【０１０１】
図7を参照すると、本実施の形態における動作は図4に示す第1の実施の形態に比べ、ステップ4002(下流PCI-PCIブリッジ1504にI/Oデバイス1400の挿入通知)に代えてステップ7000(PCIエクスプレススイッチ5100のコンフィグレーション)を含む点と、ステップ4003(CPUにホットプラグの割り込み)に代えてステップ7001(CPUにホットプラグの割り込み)を含む点で異なる。
【０１０２】
ステップ4000とステップ4001とは図4に示す第1の実施の形態と同じであるため説明を省略する。仮想PCIエクスプレスデバイス制御ロジック6001は、PCIエクスプレススイッチ5100が空きスロット1605に挿入された場合、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603に記載された、あらかじめ予約されたPCIエクスプレスリソース空間を用いて、挿入されたPCIエクスプレススイッチ5100の、上流PCI-PCIブリッジ1501と下流PCI-PCIブリッジ1505とが備えるコンフィグレーションレジスタ1502にPCIエクスプレスパケットを用いて書き込みを行い、PCIエクスプレススイッチ5100のコンフィグレーションを行う(ステップ7000)。
【０１０３】
続いて、仮想PCIエクスプレスデバイス制御ロジック6001は、挿入されたPCIエクスプレススイッチ5100が備えるI/Oデバイス1400と接続した下流PCI-PCIブリッジ1505について、この下流PCI-PCIブリッジ1505を疑似してCPU1100に割り込みを上げ、I/Oデバイス1400の挿入を通知する(ステップ7001)。この割り込みを契機として、コンフィグレーションソフト1000は、下流PCI-PCIブリッジ1505に接続するI/Oデバイス1400のコンフィグレーションを行う(ステップ4004)。I/Oデバイス1400が接続した下流PCI-PCIブリッジ1505が複数存在する場合、割り込みにより開始されるI/Oデバイス1400のコンフィグレーションの終了を待って、個々の下流PCI-PCIブリッジ1505毎に同じ操作を繰り返し、PCIエクスプレススイッチ5100に接続する全てのI/Oデバイス1400に対してコンフィグレーションを行う。このときステップ7001とステップ4004はPCI-SIGの標準で定義されたホットプラグの手順に従って行われる。
【０１０４】
以上の手順により、従来のコンピュータが備えるPCI-SIGの標準で定義されたホットプラグをサポートするPCIエクスプレスシステムのコンフィグレーションソフト1000を用いてPCIエクスプレススイッチ1500に対するPCIエクスプレススイッチ5100のホットプラグが実現され、さらにまた、コンフィグレーションソフト1000がPCI-SIGの標準で定義されたホットプラグの中で、I/Oデバイス1400のホットプラグのみをサポートする場合でも、PCIエクスプレススイッチ1500に対するPCIエクスプレススイッチ5100のホットプラグが実現される。
【０１０５】
また、本実施の形態ではPCIエクスプレススイッチ1500と仮想PCIエクスプレスデバイス6000が別デバイスである形態を示したが、PCIエクスプレススイッチ1500が仮想PCIエクスプレスデバイス6000を含む形態も可能である。
【０１０６】
さらにまた、本実施の形態ではホットプラグを通知するホットプラグ制御線1601を設定したが、PCIエクスプレスパケットを用いてPCIエクスプレスバスにより通知することも可能である。
【０１０７】
さらにまた、本実施の形態では、空きスロット1605に挿入するPCIエクスプレススイッチ5100が1段の場合を示したが、多段の構成で最上流のPCIエクスプレススイッチ5100を空きスロット1605にホットプラグする構成も可能である。本構成では、コンフィグレーションソフト1000がPCI-SIGの標準で定義されたホットプラグをサポートする場合の動作は、前記1つのPCIエクスプレススイッチ5100を空きスロット1605に挿入した場合と同じである。一方、コンフィグレーションソフト1000がPCI-SIGの標準で定義されたホットプラグの中でI/Oデバイス1400のホットプラグのみをサポートする場合、図7に示すステップ7000により、挿入した全てのPCIエクスプレススイッチ5100に対してコンフィグレーションを行い、各PCIエクスプレススイッチ5100に接続する全てのI/Oデバイス1400に対し、各I/Oデバイス毎に、CPUへの割り込み(ステップ7001)とコンフィグレーションソフト1000によるコンフィグレーション(ステップ4004)との動作を行う。
【０１０８】
『第4の実施の形態』
図8を参照すると、本発明の第4の実施の形態は、図5に示した第2の実施の形態と比較して、仮想PCIエクスプレスデバイス1600に代えて仮想PCIエクスプレスデバイス6000を含む点と、空きスロット1605にホットプラグするPCIエクスプレスデバイスがI/Oデバイス1400に代えてPCIエクスプレススイッチ5100である点で異なる。また、仮想PCIエクスプレスデバイス6000は、仮想PCIエクスプレスデバイス1600と比較して、仮想PCIエクスプレスデバイス制御ロジック1602に代えて、第3の実施の形態におけるものと同様の仮想PCIエクスプレスデバイス制御ロジック6001を含む点で相違する。
【０１０９】
次に本実施の形態の動作を説明する。
【０１１０】
PCIエクスプレス初期コンフィグレーションサイクルにおける動作は図3に示す第1の実施の形態と同じであるため説明を省略する。
【０１１１】
一方、空きスロット1605にPCIエクスプレススイッチ5100をホットプラグする場合の動作は、コンフィグレーションソフト1000がPCIエクスプレススイッチ5100のホットプラグに対応する場合、図4に示す第1の実施の形態におけるステップ4004において、I/Oデバイス1400に代えて挿入されたPCIエクスプレススイッチ5100と全てのI/Oデバイス1400とに対してコンフィグレーションを行う点で異なる。その他の各ステップにおける動作は同じであるため説明を省略する。
【０１１２】
また、コンフィグレーションソフト1000がPCIエクスプレススイッチ5100のホットプラグに対応せず、I/Oデバイス1400のホットプラグのみをサポートする場合の動作は、図7に示す第3の実施の形態における動作と同じであるため説明を省略する。
【０１１３】
以上の手順により、従来のコンピュータが備えるPCI-SIGの標準で定義されたホットプラグをサポートするPCIエクスプレスシステムのコンフィグレーションソフト1000を用いて、ルートコンプレックス5000に対するPCIエクスプレススイッチ5100のホットプラグが実現され、さらにまた、コンフィグレーションソフト1000がPCI-SIGの標準で定義されたホットプラグの中で、I/Oデバイス1400のホットプラグのみをサポートする場合でも、ルートコンプレックス5000に対するPCIエクスプレススイッチ5100のホットプラグが実現される。
【０１１４】
本実施の形態ではルートコンプレックス5000と仮想PCIエクスプレスデバイス6000が別デバイスである形態を示したが、ルートコンプレックス5000が仮想PCIエクスプレスデバイス6000を含む形態も可能である。
【０１１５】
また、本実施の形態ではホットプラグを通知するホットプラグ制御線1601を設定したが、PCIエクスプレスパケットを用いてPCIエクスプレスバスにより通知することも可能である。
【０１１６】
さらにまた、本実施の形態では、空きスロット1605に挿入するPCIエクスプレススイッチ5100が1段の場合を示したが、第3の実施の形態と同じ動作により、多段のPCIエクスプレススイッチ5100の最上流PCIエクスプレススイッチ5100を空きスロット1605にホットプラグすることも可能である。
【０１１７】
『第5の実施の形態』
図9を参照すると、本発明の第5の実施の形態は、図1に示す第1の実施の形態と比較して、PCIエクスプレススイッチ1500に代えてPCIエクスプレススイッチ9000を含む点と、仮想PCIエクスプレスデバイス1600に代えて仮想PCIエクスプレスデバイス9100を含む点とで相違し、また空きスロット1605に挿入するデバイスがI/Oデバイス1400に代えて下流PCI-PCIブリッジ1505である点で相違する。また、PCIエクスプレススイッチ9000はPCIエクスプレススイッチ1500と比較して、上流PCI-PCIデバイス1501に代えてホットプラグ制御線1601と接続する上流PCI-PCIデバイス9001を含む点で相違する。
【０１１８】
上流PCI-PCIブリッジ9001は、ホットプラグ制御線1601から受信する空きスロット1605への下流PCI-PCIブリッジ1505挿入の通知により、CPU1100に下流PCI-PCIブリッジ1505の挿入を通知する割り込みを上げる。
【０１１９】
仮想PCIエクスプレスデバイス制御ロジック9101は、コンフィグレーションソフト1000が下流PCI-PCIブリッジ1505のホットプラグに対応する場合、下流PCI-PCIブリッジ1505が空きスロット1605に挿入されたとき、ホットプラグ制御線1601によりPCIエクスプレススイッチ9000が備える上流PCI-PCIブリッジ9001に、空きスロット1605に下流PCI-PCIブリッジ1505が挿入されたことを通知する。一方、コンフィグレーションソフト1000が下流PCI-PCIブリッジ1505のホットプラグに対応せず、I/Oデバイス1400のホットプラグのみをサポートする場合、仮想PCIエクスプレスデバイス制御ロジック9101は、下流PCI-PCIブリッジ1505が空きスロット1605に挿入されたとき、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603に記載された、あらかじめ予約されたPCIエクスプレスリソース空間を用いて、挿入された下流PCI-PCIブリッジ1505が備えるコンフィグレーションレジスタ1502にPCIエクスプレスパケットを用いて書き込みを行い、下流PCI-PCIブリッジ1505のコンフィグレーションを行う。続いて、挿入された下流PCI-PCIブリッジ1505がI/Oデバイス1400と接続している場合、この下流PCI-PCIブリッジ1505を疑似し、CPU1100にI/Oデバイス1400の挿入を通知する割り込みを上げる。
【０１２０】
仮想PCIエクスプレスコンフィグレーションレジスタ1603は、PCIエクスプレス初期コンフィグレーションサイクルにおいて、下流PCI-PCIブリッジ1505と、下流PCI-PCIブリッジ1505に接続するI/Oデバイス1400のホットプラグに十分なPCIエクスプレスリソース空間の予約を行う。
【０１２１】
次に本実施の形態の動作について図面を用いて詳細に説明する。
【０１２２】
PCIエクスプレス初期コンフィグレーションサイクルにおける動作は図3に示した第1の実施の形態と同じであるため説明を省略する。
【０１２３】
一方、空きスロット1605に下流PCI-PCIブリッジ1505をホットプラグする場合の動作は、コンフィグレーションソフト1000が下流PCI-PCIブリッジ1505のホットプラグに対応する場合、図4に示す第1の実施の形態の動作におけるステップ4004において、I/Oデバイス1400に代えて挿入された下流PCI-PCIブリッジ1505とI/Oデバイス1400とに対してコンフィグレーションソフト1000がコンフィグレーションを行う点で異なる。その他の各ステップにおける動作は同じであるため説明を省略する。
【０１２４】
次に、コンフィグレーションソフト1000が下流PCI-PCIブリッジ1505のホットプラグに対応せず、I/Oデバイス1400のホットプラグのみをサポートする場合の動作を図9と図10のフローチャートを用いて説明する。
【０１２５】
図10を参照すると、コンフィグレーションソフト1000が下流PCI-PCIブリッジ1505のホットプラグに対応せず、I/Oデバイス1400のホットプラグのみに対応する場合の動作は、図7に示す第3の実施の形態の動作に比べ、ステップ7000(PCIエクスプレススイッチ5100のコンフィグレーション)に代えてステップ10000(下流PCI-PCIブリッジ1505のコンフィグレーション)を含む点で異なる。
【０１２６】
ステップ4000とステップ4001は図4に示す第1の実施の形態と同じであるため説明を省略する。仮想PCIエクスプレスデバイス制御ロジック9101は、下流PCI-PCIブリッジ1505が空きスロット1605に挿入された場合、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603に記載された、あらかじめ予約されたPCIエクスプレスリソース空間を用いて、挿入された下流PCI-PCIブリッジ1505が備えるコンフィグレーションレジスタ1502にPCIエクスプレスパケットを用いて書き込みを行うことにより、下流PCI-PCIブリッジ1505のコンフィグレーションを行う(ステップ10000)。続いて、挿入された下流PCI-PCIブリッジ1505がI/Oデバイス1400と接続している場合、この下流PCI-PCIブリッジ1505を疑似し、CPU1100にI/Oデバイス1400の挿入を通知する割り込みを上げる(ステップ7001)。この割り込みを契機として、コンフィグレーションソフト1000は挿入した下流PCI-PCIブリッジ1505に接続するI/Oデバイス1400のコンフィグレーションを行う(ステップ4004)。
【０１２７】
以上の手順により、従来のコンピュータが備えるPCI-SIGの標準で定義されたホットプラグをサポートするPCIエクスプレスシステムのコンフィグレーションソフト1000を用いて上流PCI-PCIブリッジ9001に対する下流PCI-PCIブリッジ1505のホットプラグが実現され、さらにまた、コンフィグレーションソフト1000がPCI-SIGの標準で定義されたホットプラグの中で、I/Oデバイス1400のホットプラグのみをサポートする場合でも、上流PCI-PCIブリッジ9001に対する下流PCI-PCIブリッジ1505のホットプラグが実現される。
【０１２８】
また、本実施の形態ではPCIエクスプレススイッチ9000と仮想PCIエクスプレスデバイス9100が別デバイスである形態を示したが、PCIエクスプレススイッチ9000が仮想PCIエクスプレスデバイス9100を含む形態も可能である。
【０１２９】
さらにまた、本実施の形態ではホットプラグを通知するホットプラグ制御線1601を設定したが、PCIエクスプレスパケットを用いてPCIエクスプレスバスにより通知することも可能である。
【０１３０】
さらにまた、本実施の形態では、空きスロット1605に挿入する下流PCI-PCIブリッジ1505が1つのI/Oデバイス1400と接続する場合を示したが、間に1段以上のPCIエクスプレススイッチ5100を含む構成も可能である。本構成では、コンフィグレーションソフト1000がPCI-SIGの標準で定義されたホットプラグをサポートする場合の動作は、前記コンフィグレーションソフト1000が下流PCI-PCIブリッジ1505のホットプラグに対応する場合の動作において、CPU1100への割り込みを契機として、コンフィグレーションソフト1000が挿入した全てのデバイスに対し、コンフィグレーションを行う。一方、コンフィグレーションソフト1000がPCI-SIGの標準で定義されたホットプラグの中でI/Oデバイス1400のホットプラグのみをサポートする場合、図10に示すコンフィグレーションソフト1000が下流PCI-PCIブリッジ1505のホットプラグをサポートしない場合の動作において、ステップ10000により、仮想PCIエクスプレスデバイス制御ロジック9101は、挿入された下流PCI-PCIブリッジ1505に加え、下流PCI-PCIブリッジ1505の下流に接続する全てのPCIエクスプレススイッチ5100に対してコンフィグレーションを行い、各PCIエクスプレススイッチ5100に接続する全てのI/Oデバイス1400に対し、CPUへの割り込み(ステップ7001)とPCIエクスプレススイッチ5100に接続するI/Oデバイス1400のコンフィグレーション(ステップ4004)との動作を個別のI/Oデバイス1400について行う。
【０１３１】
前記第1〜第5の実施の形態はPCIエクスプレスシステムを対象に説明したが、同様の方法でリソース空間を予約し、予約したリソース空間に対しデバイスのホットプラグを行う手法は、PCIエクスプレスより以前に定義されたPCIとPCI-Xと、さらにまた、これから定義されるであろうPCIエクスプレスの次期標準規格と、さらにまた、他のバス規格に適用可能であることは、当事者であれば容易に理解される。
【実施例１】
【０１３２】
次に本発明の第1の実施例を、図11を参照して説明する。かかる実施例は本発明の第1の実施の形態に対応するものである。
【０１３３】
図11を参照すると本実施例は、ホットプラグするI/Oデバイス1400としてネットワークインタフェースカード(NIC)を用いる。本NICは、使用する32ビットI/O空間として256、32ビットメモリ空間として16Kを要求する。
【０１３４】
仮想PCIエクスプレスデバイス1600は、PCIエクスプレス初期コンフィグレーションサイクルに対し、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603を用いて仮想的なI/Oデバイス1400の存在を示し、また、I/O空間を4K、メモリ空間を1M予約する。具体的には、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、タイプ0のコンフィグレーションレジスタを1つ保持し、そのデバイスID、ベンダIDおよびクラスコードを用いてI/Oデバイス1400の存在を示し、そのベースアドレスレジスタを用いて4KのI/O空間と1Mのメモリ空間を要求する。ここで、NICが要求するのは32ビットI/O空間で256、32ビットメモリ空間で16Kであるのにかかわらず、I/O空間を4K、メモリ空間を1M予約する理由は、現在使用されている一般的なコンフィグレーションソフト1000は下流PCI-PCIブリッジに何らかのI/Oデバイスが接続されている場合、I/O空間を4K、メモリ空間を1M確保するようにデフォルトで設定されているためである。
【０１３５】
仮想PCIエクスプレスデバイス1600が上記のようにI/O空間を4K、メモリ空間を1M予約するため、仮想PCIエクスプレスデバイス1600が接続する下流PCI-PCIブリッジ1504が備えるコンフィグレーションレジスタ1502には、PCIエクスプレス初期コンフィグレーションサイクルにおいて、自ブリッジ1504の下流にI/O空間00001000〜00001fffと、メモリ空間00100000〜001fffffとが接続しているように設定され、またバス番号として4が設定される。
【０１３６】
PCIエクスプレススイッチ1500に含まれる残りの2つの下流PCI-PCIブリッジ1505の一方には、I/Oデバイス1400が接続されており、このI/Oデバイス1400はバス番号5と、I/O空間00002000〜00002fffと、メモリ空間00200000〜002fffffとを使用している。残りの1つの下流PCI-PCIブリッジ1505にはデバイスは接続されていない。
【０１３７】
上流PCI-PCIブリッジ1501が備えるコンフィグレーションレジスタ1502は、上流PCI-PCIブリッジ1501より下流に接続するPCIエクスプレスリソース空間の情報を保持する。従って、今の例では、上流PCI-PCIブリッジ1501の下流にバス番号3〜6と、32ビットI/O空間00001000〜00002fffと、32ビットメモリ空間00100000〜002fffffとが接続されているように設定される。
【０１３８】
NICをホットプラグするとき、仮想PCIエクスプレスデバイス1600がホットプラグ制御線1601を用いて下流PCI-PCIブリッジ1504に通知し、下流PCI-PCIブリッジ1504がCPU1100に割り込みを上げることで、コンフィグレーションソフト1000が呼ばれ、NICのコンフィグレーションが行われる。このコンフィグレーションは全て、PCI-SIGの標準で定義されたホットプラグの手順に従って行われる。このとき、NICが要求する256の32ビットI/O空間と、16Kの32ビットメモリ空間は、仮想PCIエクスプレスデバイス1600が予め予約したPCIエクスプレスリソース空間に収容される。よって、上流PCI-PCIブリッジ1501と、下流PCI-PCIブリッジ1504および下流PCI-PCIブリッジ1505とが保持するコンフィグレーションレジスタ1502の値は保持され、NICに対してのみコンフィグレーションが行われるため、他のI/Oデバイス1400が提供するサービスは維持される。
【実施例２】
【０１３９】
次に本発明の第2の実施例を、図12を参照して説明する。かかる実施例は本発明の第2の実施の形態に対応するものである。
【０１４０】
図12を参照すると本実施例は、第1の実施例と比較して、NICをルートコンプレックス5000にホットプラグする点で異なる。
【０１４１】
仮想PCIエクスプレスデバイス1600は、PCIエクスプレス初期コンフィグレーションサイクルに対し、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603が備えるデバイスID、ベンダIDおよびクラスコードを用いて仮想的にI/Oデバイスの存在を示し、またベースアドレスレジスタを用いて32ビットI/O空間を4K、32ビットメモリ空間を1M、それぞれルートコンプレックス5000の下流に予約する。
【０１４２】
NICをホットプラグするとき、仮想PCIエクスプレスデバイス1600がホットプラグ制御線1601を用いてルートコンプレックス5000に通知し、ルートコンプレックス5000がCPU1100に割り込みを上げることで、コンフィグレーションソフト1000が呼ばれNICのコンフィグレーションが行われる。このコンフィグレーションは全て、PCI-SIGの標準で定義されたホットプラグの手順に従って行われる。このとき、NICに対してのみコンフィグレーションが行われ、他のI/Oデバイス1400が提供するサービスが維持される点は第1の実施の形態と同じである。
【実施例３】
【０１４３】
次に本発明の第3の実施例を、図13を参照して説明する。かかる実施例は本発明の第3の実施の形態に対応するものである。
【０１４４】
図13を参照すると本実施例は、PCIエクスプレススイッチ1500にPCIエクスプレススイッチ5100のホットプラグを行う点で第1の実施例と異なる。本実施例では、ホットプラグするPCIエクスプレススイッチ5100にはNICが2つ接続されるものとする。
【０１４５】
仮想PCIエクスプレスデバイス6000は、PCIエクスプレス初期コンフィグレーションサイクルに対し、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603を用いて、仮想的な1つのPCIエクスプレススイッチ5100と2つのI/Oデバイス1400との存在を示し、バス番号4つと、I/O空間を8Kと、メモリ空間2Mとを予約する。具体的には、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、1つの上流PCI-PCIブリッジと2つの下流PCI-PCIブリッジを備えた1つのPCIエクスプレススイッチを擬似するために3つのタイプ1のコンフィグレーションレジスタを保持し、PCIエクスプレススイッチに接続される2つのI/Oデバイスを擬似するために2つのタイプ0のコンフィグレーションレジスタを保持し、またPCIエクスプレススイッチに2つのI/Oデバイスが接続された形態を示すトポロジ情報を保持する。仮想PCIエクスプレスデバイス制御ロジック1602は、このトポロジ情報に基づき、コンフィグレーションソフト1000から受信するコンフィグレーションアクセスにかかるパケットの内容に従って各レジスタに対し書き込み及び読み込み動作を行うことにより、仮想デバイス構成のトポロジをコンフィグレーションソフト1000に認識させる。
【０１４６】
下流PCI-PCIブリッジ1504が備えるコンフィグレーションレジスタ1502は、仮想PCIエクスプレスデバイス6000が上記のPCIエクスプレスリソース空間を予約するため、下流PCI-PCIブリッジ1504の下流にバス番号4〜7と、I/O空間00001000〜00002fffと、メモリ空間00100000〜002fffffとが接続していることを示す。
【０１４７】
本実施例では、コンフィグレーションソフト1000がPCIエクスプレススイッチ5100のホットプラグに対応していないとする。
【０１４８】
PCIエクスプレススイッチ5100を空きスロット1605にホットプラグするとき、仮想PCIエクスプレスデバイス制御ロジック1602は、ホットプラグするPCIエクスプレススイッチ5100の上流PCI-PCIブリッジ1501と下流PCI-PCIブリッジ1505とが備えるコンフィグレーションレジスタ1502に仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603の値をコピーすることにより、挿入するPCIエクスプレススイッチ5100のコンフィグレーションを行う。仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、PCIエクスプレススイッチ5100に該当するレジスタを保持するため、当該箇所を直接コピーすれば良い。具体的には、上流PCI-PCIブリッジ1501のコンフィグレーションレジスタ1502に対して仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603の保持する、上流PCI-PCIブリッジを擬似するタイプ1のコンフィグレーションレジスタの内容をコピーし、2つの下流PCI-PCIブリッジ1505のコンフィグレーションレジスタ1502に対して仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603の保持する、下流PCI-PCIブリッジを擬似するタイプ1のコンフィグレーションレジスタの内容をコピーする。
【０１４９】
続いて仮想PCIエクスプレスデバイス制御ロジック1602は、挿入したPCIエクスプレススイッチ5100に含まれる下流PCI-PCIブリッジ1505を疑似して、CPU1100にNICの挿入を通知する割り込みを上げる。本割り込みによりコンフィグレーションソフト1000が呼ばれ、割り込んだ下流PCI-PCIブリッジ1505と接続するNICのコンフィグレーションが行われる。このNICのコンフィグレーションは全て、PCI-SIGの標準で定義されたホットプラグの手順に従って行われる。本構成では、挿入したPCIエクスプレススイッチ5100が2つのNICと接続しているため、前記PCI-SIGの標準で定義されたI/Oデバイス1400のホットプラグに従った動作が2つのNICについて繰り返し行われる。以上のコンフィグレーションは全て、挿入したPCIエクスプレススイッチ5100とNICに対してのみ行われ、他のI/Oデバイス1400が提供するサービスが維持される点は第1の実施の形態と同じである。
【実施例４】
【０１５０】
次に本発明の第4の実施例を、図14を参照して説明する。かかる実施例は本発明の第4の実施の形態に対応するものである。
【０１５１】
図14を参照すると本実施例は、ルートコンプレックス5000にPCIエクスプレススイッチ5100のホットプラグを行うという点で第2の実施例と異なる。本実施例では第3の実施例と同じく、ホットプラグするPCIエクスプレススイッチ5100には2つのNICが接続されるものとする。
【０１５２】
仮想PCIエクスプレスデバイス6000は、PCIエクスプレス初期コンフィグレーションサイクルに対し、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603により仮想的な1つのPCIエクスプレススイッチ5100と2つのI/Oデバイス1400との存在を示し、バス番号4つと、I/O空間を8Kと、メモリ空間2Mとをルートコンプレックス5000の下流に予約する。
【０１５３】
PCIエクスプレススイッチ5100をホットプラグするときの動作は、第3の実施例における動作と同じであるため説明を省略する。
【実施例５】
【０１５４】
次に本発明の第5の実施例を、図15を参照して説明する。かかる実施例は本発明の第5の実施の形態に対応するものである。
【０１５５】
図15を参照すると、本実施例は、上流PCI-PCIブリッジ9001に対し下流PCI-PCIブリッジ1505のホットプラグを行う点で第1の実施例と異なる。本実施例ではホットプラグする下流PCI-PCIブリッジ1505には、1つのNICが接続されるものとする。
【０１５６】
仮想PCIエクスプレスデバイス9100は、PCIエクスプレス初期コンフィグレーションサイクルに対し、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603により仮想的に1つの下流PCI-PCIブリッジと1つのI/Oデバイス1400の存在を示し、バス番号2つと、I/O空間4Kと、メモリ空間1Mとを予約する。具体的には、仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、1つのPCI-PCIブリッジと1つのI/Oデバイスを擬似するために1つのタイプ1のコンフィグレーションレジスタと1つのタイプ0のコンフィグレーションレジスタを保持し、またPCI-PCIブリッジに1つのI/Oデバイスが接続された形態を示すトポロジ情報を保持する。仮想PCIエクスプレスデバイス制御ロジック9101は、このトポロジ情報に基づき、コンフィグレーションソフト1000から受信するコンフィグレーションアクセスにかかるパケットの内容に従って各レジスタに対し書き込み及び読み込み動作を行うことにより、仮想デバイス構成のトポロジをコンフィグレーションソフト1000に認識させる。
【０１５７】
上流PCI-PCIブリッジ9001が備えるコンフィグレーションレジスタ1502は、仮想PCIエクスプレスデバイス9100が上記のPCIエクスプレスリソース空間を予約するため、2つある下流PCI-PCIブリッジ1505の一方に接続するI/Oデバイス1400が使用するPCIエクスプレスリソース空間を含め、自ブリッジ9001の下流にバス番号3〜6と、I/O空間00001000〜00002fffと、メモリ空間00100000〜002fffffとが接続していることを示す。
【０１５８】
本実施例では、コンフィグレーションソフト1000が下流PCI-PCIブリッジ1505のホットプラグに対応していないとする。
【０１５９】
下流PCI-PCIブリッジ1505を空きスロット1605に挿入するとき、仮想PCIエクスプレスデバイス制御ロジック9101は、挿入した下流PCI-PCIブリッジ1505が備えるコンフィグレーションレジスタ1502に仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603の値をコピーすることにより、下流PCI-PCIブリッジ1505のコンフィグレーションを行う。仮想PCIエクスプレスデバイスコンフィグレーションレジスタ1603は、下流PCI-PCIブリッジ1505に該当するタイプ1のコンフィグレーションレジスタを1つ保持するため、このレジスタの内容を直接コピーすれば良い。続いて仮想PCIエクスプレスデバイス制御ロジック9101は、挿入した下流PCI-PCIブリッジ1505を疑似してCPU1100にNICの挿入を通知する割り込みを上げる。本割り込みを契機として、コンフィグレーションソフト1000はNICのコンフィグレーションを行う。このコンフィグレーションは全て、PCI-SIGのホットプラグで定義され手順に従って行われる。以上のコンフィグレーションは挿入した下流PCI-PCIブリッジ1505とNICに対してのみ行われ、他のI/Oデバイス1400が提供するサービスが維持される点は第1の実施の形態と同じである。
【産業上の利用可能性】
【０１６０】
本発明は、コンピュータ装置、ストレージ装置、ネットワーク装置などの装置におけるハードウェアデバイスのホットプラグといった用途に適用できる。また、ブレードシステムをはじめとした、モジュール化したハードウェア資源を自由に再構成し、所望の機能を得る情報装置におけるハードウェアデバイスのホットプラグといった用途に使用できる。また、パーソナルコンピュータや持ち運び可能な情報端末におけるハードウェアデバイスのホットプラグといった用途に適用できる。
【図面の簡単な説明】
【０１６１】
【図１】本発明の第1の実施の形態の構成を示すブロック図である。
【図２】本発明にかかるデバイス装置がコンフィグレーションソフトに対して存在を示す仮想デバイス構成の説明図である。
【図３】本発明の第1の実施の形態における初期コンフィグレーションサイクルの動作を示す流れ図である。
【図４】本発明の第1の実施の形態におけるホットプラグ時の動作を示す流れ図である。
【図５】本発明の第2の実施の形態の構成を示すブロック図である。
【図６】本発明の第3の実施の形態の構成を示すブロック図である。
【図７】本発明の第3の実施の形態におけるホットプラグ時の動作を示す流れ図である。
【図８】本発明の第4の実施の形態の構成を示すブロック図である。
【図９】本発明の第5の実施の形態の構成を示すブロック図である。
【図１０】本発明の第5の実施の形態におけるホットプラグ時の動作を示す流れ図である。
【図１１】本発明の第1の実施例のブロック図である。
【図１２】本発明の第2の実施例のブロック図である。
【図１３】本発明の第3の実施例のブロック図である。
【図１４】本発明の第4の実施例のブロック図である。
【図１５】本発明の第5の実施例のブロック図である。
【図１６】従来のPCIエクスプレスシステムのブロック図である。
【図１７】従来のPCIエクスプレススイッチのブロック図である。
【図１８】コンフィグレーションレジスタの説明図である。
【符号の説明】
【０１６２】
1000…コンフィグレーションソフト
1100…CPU
1200…メモリ
1300…ルートコンプレックス
1400…I/Oデバイス
1500…PCIエクスプレススイッチ
1501…上流PCI-PCIブリッジ
1504…下流PCI-PCIブリッジ
1505…下流PCI-PCIブリッジ
1600…仮想PCIエクスプレスデバイス
1602…仮想PCIエクスプレスデバイス制御ロジック
1603…仮想PCIエクスプレスデバイスコンフィグレーションレジスタ
1604…パケット転送ロジック
2000…仮想デバイス構成
2100…仮想デバイス構成
5000…ルートコンプレックス
5100…PCIエクスプレススイッチ
6000…仮想PCIエクスプレスデバイス
6001…仮想PCIエクスプレスデバイス制御ロジック
9000…PCIエクスプレススイッチ
9001…上流PCI-PCIブリッジ
9100…仮想PCIエクスプレスデバイス
9101…仮想PCIエクスプレスデバイス制御ロジック
【図１】
2008046722.tif 000003
【図２】
2008046722.tif 000004
【図３】
2008046722.tif 000005
【図４】
2008046722.tif 000006
【図５】
2008046722.tif 000007
【図６】
2008046722.tif 000008
【図７】
2008046722.tif 000009
【図８】
2008046722.tif 000010
【図９】
2008046722.tif 000011
【図１０】
2008046722.tif 000012
【図１１】
2008046722.tif 000013
【図１２】
2008046722.tif 000014
【図１３】
2008046722.tif 000015
【図１４】
2008046722.tif 000016
【図１５】
2008046722.tif 000017
【図１６】
2008046722.tif 000018
【図１７】
2008046722.tif 000019
【図１８】
2008046722.tif 000020