(57)【特許請求の範囲】
【請求項１】
シングルルート対応の複数のＰＣＩエクスプレスデバイスと、
前記複数のＰＣＩエクスプレスデバイスを共有する複数のルートコンプレックスと、
前記複数のルートコンプレックスの各々に接続される複数の上流ＰＣＩエクスプレスブリッジと、
前記複数のＰＣＩエクスプレスデバイスの各々に接続される複数の下流ＰＣＩエクスプレスブリッジと、
前記複数の上流ＰＣＩエクスプレスブリッジと前記複数の下流ＰＣＩエクスプレスブリッジとの間でデータが授受されるネットワークと
を備え、
前記複数の下流ＰＣＩエクスプレスブリッジの各々は、
自身に接続されているＰＣＩエクスプレスデバイスの電源ＯＮを契機として当該ＰＣＩエクスプレスデバイスの設定を行うデバイス制御手段と、
自身に接続されている前記ＰＣＩエクスプレスデバイスとの間における物理リンクの状態を制御および監視する物理リンク制御監視手段と、
自身に接続されている前記ＰＣＩエクスプレスデバイスのエラーの監視および通知を行うエラー監視処理手段と
を備えるＩ／Ｏシステム。
【請求項２】
前記上流ＰＣＩエクスプレスブリッジが、ルートコンプレックスから受信したトランザクションレイヤパケットをネットワークを介して前記下流ＰＣＩエクスプレスブリッジへ転送し、ネットワークを介して前記下流ＰＣＩエクスプレスブリッジから転送されたトランザクションレイヤパケットをデカプセル化して前記ルートコンプレックスに転送し、
前記下流ＰＣＩエクスプレスブリッジが、デバイスから受信したトランザクションレイヤパケットをネットワークを介して前記上流ＰＣＩエクスプレスブリッジへ転送し、ネットワークを介して前記上流ＰＣＩエクスプレスブリッジから転送されたトランザクションレイヤパケットをデカプセル化して前記デバイスに転送する
請求項１に記載のＩ／Ｏシステム。
【請求項３】
ネットワークを介して自身の下流ＰＣＩエクスプレスブリッジとデータの授受を行う複数の上流ＰＣＩエクスプレスブリッジの各々に接続されたシングルルート対応の複数のＰＣＩエクスプレスデバイスのうち、自身の下流ＰＣＩエクスプレスブリッジに接続されているＰＣＩエクスプレスデバイスの電源ＯＮを契機として当該ＰＣＩエクスプレスデバイスの設定を行うデバイス制御手段と、
自身の下流ＰＣＩエクスプレスブリッジに接続されている前記ＰＣＩエクスプレスデバイスとの間における物理リンクの状態を制御および監視する物理リンク制御監視手段と、
自身の下流ＰＣＩエクスプレスブリッジに接続されている前記ＰＣＩエクスプレスデバイスのエラーの監視および通知を行うエラー監視処理手段と
を備える下流ＰＣＩエクスプレスブリッジ。
【請求項４】
前記エラー監視処理手段は、前記エラーの種別を識別し、前記エラーの影響を受けるルートコンプレックスを特定し、前記特定されたルートコンプレックスに対して、前記識別されたエラーの種別を通知する請求項３に記載の下流ＰＣＩエクスプレスブリッジ。
【請求項５】
前記デバイス制御手段は、自身の下流ＰＣＩエクスプレスブリッジに接続されているＰＣＩエクスプレスデバイスのＰＦ（Physical Function）およびＶＦ（Virtual Function
）の設定を行う請求項３から請求項４のいずれか１項に記載の下流ＰＣＩエクスプレスブリッジ。
【請求項６】
前記デバイス制御手段は、ネットワークコネクションが確立する前に、自身の下流ＰＣＩエクスプレスブリッジに接続されている前記ＰＣＩエクスプレスデバイスの設定を行う請求項３から請求項５のいずれか１項に記載の下流ＰＣＩエクスプレスブリッジ。
【請求項７】
複数のルートコンプレックス間でシングルルート対応の複数のＰＣＩエクスプレスデバイスを共有し、前記複数のルートコンプレックスの各々に接続される複数の上流ＰＣＩエクスプレスブリッジと、前記複数のＰＣＩエクスプレスデバイスの各々に接続される複数の下流ＰＣＩエクスプレスブリッジと、前記複数の上流ＰＣＩエクスプレスブリッジと前記複数の下流ＰＣＩエクスプレスブリッジとの間でデータが授受されるネットワークとで仮想マルチルートＰＣＩエクスプレススイッチを構成したＩ／Ｏシステムにおいて、前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されているＰＣＩエクスプレスデバイスの電源ＯＮを契機として当該ＰＣＩエクスプレスデバイスの設定を行い、
前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されている前記ＰＣＩエクスプレスデバイスとの間における物理リンクの状態を制御および監視し、
前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されている前記ＰＣＩエクスプレスデバイスのエラーの監視および通知を行うＩ／Ｏシステムの制御方法。
【請求項８】
複数のルートコンプレックスの各々に接続される複数の上流ＰＣＩエクスプレスブリッジと、シングルルート対応の複数のＰＣＩエクスプレスデバイスの各々に接続される複数の下流ＰＣＩエクスプレスブリッジと、前記複数の上流ＰＣＩエクスプレスブリッジと前記複数の下流ＰＣＩエクスプレスブリッジとの間でデータが授受されるネットワークとで仮想マルチルートＰＣＩエクスプレススイッチを構成し、前記複数のルートコンプレックス間で前記複数のＰＣＩエクスプレスデバイスを共有するＩ／Ｏシステムの前記下流ＰＣＩエクスプレスブリッジのコンピュータに、
自身に接続されているＰＣＩエクスプレスデバイスの電源ＯＮを契機として当該ＰＣＩエクスプレスデバイスの設定を行うデバイス制御機能と、
自身に接続されている前記ＰＣＩエクスプレスデバイスとの間における物理リンクの状態を制御および監視する物理リンク制御監視機能と、
自身に接続されている前記ＰＣＩエクスプレスデバイスのエラーの監視および通知を行うエラー監視処理機能とを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｉ／Ｏ（Input/Output）システム、下流ＰＣＩエクスプレス（Peripheral C
omponent Interconnect Express）ブリッジ、Ｉ／Ｏシステムの制御方法、およびプログ
ラムに関する。本発明は、特に、複数のＣＰＵ（Central Processing Unit）および複数
のルートコンプレックス（Root Complex；ＲＣ）間でＰＣＩエクスプレスデバイスを共有
する技術に関する。
【背景技術】
【０００２】
複数のＲＣ間でＰＣＩ  Ｅｘｐｒｅｓｓデバイスを共有する方法として、業界標準団体ＰＣＩ−ＳＩＧ（Special Interest Group）は、ＭＲ−ＩＯＶ（Multi-Root I/O Virtualization）を規格化している（例えば、非特許文献１参照）。【０００３】
図１０は、ＭＲ−ＩＯＶの基本構成を示すブロック図である。ＭＲ−ＩＯＶは、複数のＣＰＵ・ＲＣ１０−１、…、ＭＲＡ−ＳＷ（Multi-root aware PCIe (PCI Express) Switch）１０−２、複数のＭＲＡ−ＤＥＶ（Multi-root aware PCIe Device）１０−３、…、およびＭＲ−ＰＣＩＭ（MR-PCI Manager）１０−４から構成される。【０００４】
ＭＲ−ＰＣＩＭ１０−４はＣＰＵ・ＲＣ１０−１上に配置される。また、ＭＲ−ＰＣＩＭ１０−４は、ＭＲ−ＩＯＶシステム全体のトポロジーの発見、および、デバイスの発見を行い、その結果に基づき、ＭＲＡ−ＳＷ１０−２の設定を行う。さらに、ＭＲ−ＰＣＩＭ１０−４は、ＭＲＡ−ＤＥＶ１０−３の設定を行う。その結果、複数のＣＰＵ・ＲＣ１０−１、…間でＭＲＡ−ＤＥＶ１０−３を同時に共有して使用することが可能となる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Multi-Root I/O Virtualization and Sharing Specification Revision 1.0, PCI-SIG, May 12, 2008, pp. 27-28
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したＭＲ−ＩＯＶシステムでは、ＣＰＵ・ＲＣ１０−１側に搭載されたＭＲ−ＰＣＩＭ１０−４が集中的に制御を行う。このため、ＭＲ−ＰＣＩＭ１０−４へのアクセスが障害等で制限されると、システム全体が障害状態となってしまうという問題がある。【０００７】
また、ＭＲＡ−ＳＷ１０−２の設定を行わないと、ＭＲＡ−ＤＥＶ１０−３の設定が行えない。このため、グラフィックカード等のデバイスがＢＩＯＳ（Basic Input/Output System）起動時から使用できないという問題がある。【０００８】
さらに、ＭＲ−ＰＣＩＭ１０−４の設定が複雑なため、起動時間が長く、実装コストが大きいという問題がある。【０００９】
本発明は、このような事情を考慮してなされたものであり、その目的は、複数のＣＰＵ・ＲＣがＩ／Ｏデバイスを共有するＩ／Ｏシステムにおいて、耐障害性を向上させ、Ｉ／Ｏシステム起動時の機能制限の回避および起動時間の短縮化を図ることができるＩ／Ｏシステム、下流ＰＣＩエクスプレスブリッジ、Ｉ／Ｏシステムの制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上述した課題を解決するために、本発明は、シングルルート対応の複数のＰＣＩエクスプレスデバイスと、前記複数のＰＣＩエクスプレスデバイスを共有する複数のルートコンプレックスと、前記複数のルートコンプレックスの各々に接続される複数の上流ＰＣＩエクスプレスブリッジと、前記複数のＰＣＩエクスプレスデバイスの各々に接続される複数の下流ＰＣＩエクスプレスブリッジと、前記複数の上流ＰＣＩエクスプレスブリッジと前記複数の下流ＰＣＩエクスプレスブリッジとの間でデータが授受されるネットワークとを備え、前記複数の下流ＰＣＩエクスプレスブリッジの各々は、自身に接続されているＰＣＩエクスプレスデバイスの電源ＯＮを契機として当該ＰＣＩエクスプレスデバイスの設定を行うデバイス制御手段と、自身に接続されている前記ＰＣＩエクスプレスデバイスとの間における物理リンクの状態を制御および監視する物理リンク制御監視手段と、自身に接続されている前記ＰＣＩエクスプレスデバイスのエラーの監視および通知を行うエラー監視処理手段とを備えるＩ／Ｏシステムである。
【００１１】
また、本発明は、ネットワークを介して自身の下流ＰＣＩエクスプレスブリッジとデータの授受を行う複数の上流ＰＣＩエクスプレスブリッジの各々に接続された複数のルートコンプレックスが共有するシングルルート対応の複数のＰＣＩエクスプレスデバイスのうち、自身の下流ＰＣＩエクスプレスブリッジに接続されているＰＣＩエクスプレスデバイスの電源ＯＮを契機として当該ＰＣＩエクスプレスデバイスの設定を行うデバイス制御手段と、自身の下流ＰＣＩエクスプレスブリッジに接続されている前記ＰＣＩエクスプレスデバイスとの間における物理リンクの状態を制御および監視する物理リンク制御監視手段と、自身の下流ＰＣＩエクスプレスブリッジに接続されている前記ＰＣＩエクスプレスデバイスのエラーの監視および通知を行うエラー監視処理手段とを備える下流ＰＣＩエクスプレスブリッジである。
【００１２】
また、本発明は、複数のルートコンプレックス間でシングルルート対応の複数のＰＣＩエクスプレスデバイスを共有し、前記複数のルートコンプレックスの各々に接続される複数の上流ＰＣＩエクスプレスブリッジと、前記複数のＰＣＩエクスプレスデバイスの各々に接続される複数の下流ＰＣＩエクスプレスブリッジと、前記複数の上流ＰＣＩエクスプレスブリッジと前記複数の下流ＰＣＩエクスプレスブリッジとの間でデータが授受されるネットワークとで仮想マルチルートＰＣＩエクスプレススイッチを構成したＩ／Ｏシステムにおいて、前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されているＰＣＩエクスプレスデバイスの電源ＯＮを契機として当該ＰＣＩエクスプレスデバイスの設定を行い、前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されている前記ＰＣＩエクスプレスデバイスとの間における物理リンクの状態を制御および監視し、前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されている前記ＰＣＩエクスプレスデバイスのエラーの監視および通知を行うＩ／Ｏシステムの制御方法である。
【００１３】
また、本発明は、複数のルートコンプレックスの各々に接続される複数の上流ＰＣＩエクスプレスブリッジと、シングルルート対応の複数のＰＣＩエクスプレスデバイスの各々に接続される複数の下流ＰＣＩエクスプレスブリッジと、前記複数の上流ＰＣＩエクスプレスブリッジと前記複数の下流ＰＣＩエクスプレスブリッジとの間でデータが授受されるネットワークとで仮想マルチルートＰＣＩエクスプレススイッチを構成し、前記複数のルートコンプレックス間で前記複数のＰＣＩエクスプレスデバイスを共有するＩ／Ｏシステムのコンピュータに、前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されているＰＣＩエクスプレスデバイスの電源ＯＮを契機として当該ＰＣＩエクスプレスデバイスの設定を行うデバイス制御機能と、前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されている前記ＰＣＩエクスプレスデバイスとの間における物理リンクの状態を制御および監視する物理リンク制御監視機能と、前記複数の下流ＰＣＩエクスプレスブリッジの各々が、自身に接続されている前記ＰＣＩエクスプレスデバイスのエラーの監視および通知を行うエラー監視処理機能とを実行させるプログラムである。
【発明の効果】
【００１４】
本発明では、複数のＣＰＵ・ＲＣがＩ／Ｏデバイスを共有するＩ／Ｏシステムにおいて、耐障害性を向上させ、Ｉ／Ｏシステム起動時の機能制限の回避および起動時間の短縮化を図ることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態におけるＩ／Ｏシステムの全体構成を示すブロック図である。
【図２】本実施形態におけるＵ−ＰＥＢの構成を示すブロック図である。
【図３】本実施形態におけるＤ−ＰＥＢの構成を示すブロック図である。
【図４】本実施形態におけるＳＲ−ＤＥＶの構成を示すブロック図である。
【図５】本実施形態のＩ／Ｏシステムにおける初期設定動作の概要を示すフローチャートである。
【図６】本実施形態のＩ／Ｏシステムにおいて、ＲＣ側からＳＲ−ＤＥＶ側にデータを転送する動作を示すフローチャートである。
【図７】本実施形態のＩ／Ｏシステムにおいて、ＳＲ−ＤＥＶ側からＲＣ側にデータを転送する動作を示すフローチャートである。
【図８】本実施形態のＩ／Ｏシステムにおける、物理リンクの制御および監視に関する動作を示すフローチャートである。
【図９】本実施形態のＩ／Ｏシステムにおける、エラー監視処理に関する動作を示すフローチャートである。
【図１０】関連する技術に従ったＭＲ−ＩＯＶシステムの全体構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態を、図面を参照して説明する。
【００１７】
図１は、本発明の実施形態に従ったＩ／Ｏシステムの全体構成を示すブロック図である。図１において、Ｉ／Ｏシステム１は、複数のＣＰＵ１０１、…、複数のメモリ１０２、…、複数のＲＣ１０３、…、複数のＵ−ＰＥＢ（上流側ＰＣＩ−Ｅｘｐｒｅｓｓブリッジ）１０４、…、ネットワーク１０５、複数のＤ−ＰＥＢ（下流側ＰＣＩ−Ｅｘｐｒｅｓｓブリッジ）１０６、…、複数のＳＲ−ＤＥＶ（Single-Root Device）１０７、…から構成される。
【００１８】
なお、ＳＲ−ＤＥＶ１０７は、ＳＲ−ＩＯＶ（Single-Root I/O Virtualization）対応デバイスであり、詳しくは、参考文献（Single-Root I/O Virtualization and Sharing Specification Revision 1.0, PCI-SIG, September 11, 2007, pp. 11-18）を参照されたい。
【００１９】
ＲＣ１０３は、１つまたは複数のＣＰＵ１０１（図１では１台のＣＰＵ１０１）と、１つまたは複数のメモリ１０２（図１では１台のメモリ１０２）と、１つまたは複数のＵ−ＰＥＢ１０４（図１では１台のＵ−ＰＥＢ１０４）とに接続される。Ｕ−ＰＥＢ１０４は、ＲＣ１０３とネットワーク１０５とに接続される。ネットワーク１０５は、Ｕ−ＰＥＢ１０４とＤ−ＰＥＢ１０６とに接続される。Ｄ−ＰＥＢ１０６は、ネットワーク１０５とＳＲ−ＤＥＶ１０７と接続される。ネットワーク１０５の例としては、イーサネット（登録商標）、インフィニバンド、ファイバチャネルなどがある。
【００２０】
本実施形態では、上記複数のＵ−ＰＥＢ１０４と、複数のＤ−ＰＥＢ１０６と、ネットワーク１０５とが、仮想マルチルートＰＣＩ  Ｅｘｐｒｅｓｓスイッチ（仮想ＭＲ−ＳＷ）を構成する。
【００２１】
図２は、本実施形態のＵ−ＰＥＢ１０４の構成を示すブロック図である。Ｕ−ＰＥＢ１０４は、ＰＣＩｅ（PCI Express）処理部２０１と、カプセル化部２０２と、コンフィグ（configuration）レジスタ２０３と、フィルタリング部２０４と、デカプセル化部２０５と、コネクション管理部２０６とから構成される。
【００２２】
ＰＣＩｅ処理部２０１は、ＲＣ１０３とカプセル化部２０２とコンフィグレジスタ２０３とデカプセル化部２０５とコネクション管理部２０６とに接続される。カプセル化部２０２は、ネットワーク１０５とＰＣＩｅ処理部２０１とコネクション管理部２０６とに接続される。コンフィグレジスタ２０３は、ＰＣＩｅ処理部２０１とデカプセル化部２０５とに接続される。フィルタリング部２０４は、ネットワーク１０５とデカプセル化部２０５とコネクション管理部２０６とに接続される。デカプセル化部２０５は、ＰＣＩｅ処理部２０１とコンフィグレジスタ２０３とフィルタリング部２０４とコネクション管理部２０６とに接続される。コネクション管理部２０６は、変換テーブル２０７を有し、ＰＣＩｅ処理部２０１とカプセル化部２０２とフィルタリング部２０４とデカプセル化部２０５と接続される。
【００２３】
ＰＣＩｅ処理部２０１は、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｕｐｓｔｒｅａｍ側スイッチポート処理とＰＣＩｅパケットの宛先読み取りとを行う。カプセル化部２０２は、変換テーブル２０７を参照し、コネクション管理部２０６の指示でＰＣＩｅパケットをネットワーク１０５の転送フォーマットに変換する。コンフィグレジスタ２０３は、Ｕ−ＰＥＢ１０４の設定を記録する。
【００２４】
フィルタリング部２０４は、ネットワーク１０５からのカプセル化フレームの識別子を読み取り、自ノード宛以外のカプセル化フレームをフィルタリングする。デカプセル化部２０５は、カプセル化フレームの宛先を読み取って転送先を解析し、その解析結果からカプセル化フレームをデカプセル化し、ＰＣＩｅ処理部２０１、あるいは、コンフィグレジスタ２０３、あるいは、コネクション管理部２０６に対してデカプセル化されたフレームを転送する。コネクション管理部２０６は、複数のＤ−ＰＥＢ１０６、…とのコネクションを管理する。変換テーブル２０７は、ＯＳ（Operating System）が設定するＰＣＩ  Ｅｘｐｒｅｓｓ空間とネットワーク１０５上のアドレス空間との間で変換を行うためのテーブルである。
【００２５】
図３は、本実施形態のＤ−ＰＥＢ１０６の構成を示すブロック図である。Ｄ−ＰＥＢ１０６は、ＰＣＩｅ処理部３０１と、ＳＲ−ＤＥＶ制御部３０２と、コンフィグレジスタ３０３と、フィルタリング部３０４と、デカプセル化部３０５と、コネクション管理部３０６と、カプセル化部３０８と、物理リンク制御監視部３０９と、エラー監視処理部３１０とから構成される。なお、ＳＲ−ＤＥＶ制御部３０２は、一般的に、デバイス制御機能を実行するデバイス制御手段と呼ぶことができる。また、物理リンク制御監視部３０９は、一般的に、物理リンク制御監視機能を実行する物理リンク制御監視手段と呼ぶことができる。さらに、エラー監視処理部３１０は、一般的に、エラー監視処理機能を実行するエラー監視処理手段と呼ぶことができる。
【００２６】
ＰＣＩｅ処理部３０１は、ＳＲ−ＤＥＶ１０７とＳＲ−ＤＥＶ制御部３０２と物理リンク制御監視部３０９とに接続される。ＳＲ−ＤＥＶ制御部３０２は、仮想化部３０２１とアクセス変換テーブル３０２２とＳＲ−ＤＥＶ設定部３０２３とを有する。ＳＲ−ＤＥＶ制御部３０２は、ＰＣＩｅ処理部３０１とコンフィグレジスタ３０３とデカプセル化部３０５とコネクション管理部３０６と物理リンク制御監視部３０９とエラー監視処理部３１０とに接続される。コンフィグレジスタ３０３は、ＳＲ−ＤＥＶ制御部３０２とデカプセル化部３０５と物理リンク制御監視部３０９とエラー監視処理部３１０とに接続される。
【００２７】
フィルタリング部３０４は、ネットワーク１０５とデカプセル化部３０５とコネクション管理部３０６とに接続される。デカプセル化部３０５は、ＳＲ−ＤＥＶ制御部３０２とコンフィグレジスタ３０３とフィルタリング部３０４とコネクション管理部３０６とに接続される。コネクション管理部３０６は、変換テーブル３０７を有し、ＳＲ−ＤＥＶ制御部３０２とフィルタリング部３０４とデカプセル化部３０５とカプセル化部３０８とエラー監視処理部３１０とに接続される。
【００２８】
カプセル化部３０８は、ネットワーク１０５とＳＲ−ＤＥＶ制御部３０２とコネクション管理部３０６とエラー監視処理部３１０とに接続される。物理リンク制御監視部３０９は、ＰＣＩｅ処理部３０１とＳＲ−ＤＥＶ制御部３０２とコンフィグレジスタ３０３とエラー監視処理部３１０とに接続される。エラー監視処理部３１０は、ＳＲ−ＤＥＶ制御部３０２とコンフィグレジスタ３０３とコネクション管理部３０６とカプセル化部３０８と物理リンク制御監視部３０９とに接続される。
【００２９】
ＰＣＩｅ処理部３０１は、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｄｏｗｎｓｔｒｅａｍ側スイッチポート処理を行う。ＳＲ−ＤＥＶ制御部３０２はＳＲ−ＤＥＶ１０７を制御する。ＳＲ−ＤＥＶ制御部３０２において、仮想化部３０２１は、任意のＲＣ１０３に割当られたＳＲ−ＤＥＶ１０７のＶＦ（Virtual Function）４０２２（後述）を、通常のＰＣＩ  Ｅｘｐｒｅｓｓデバイスに見せる。アクセス変換テーブル３０２２は、任意のＲＣ１０３に割り当てられたＳＲ−ＤＥＶ１０７のＶＦ４０２２へのアクセス変換を行うために使用される。ＳＲ−ＤＥＶ設定部３０２３は、ＳＲ−ＤＥＶ１０７のＰＦ（Physical Function）４０２１（後述）とＶＦ４０２２とを設定する。なお、ＰＦ（Physical Function）およびＶＦ（Virtual Function）については、例えば、上記参考文献において説明されている。
【００３０】
コンフィグレジスタ３０３は、Ｄ−ＰＥＢ１０６の設定を記録する。フィルタリング部３０４は、ネットワーク１０５からのカプセル化フレームの識別子を読み取り、自ノード宛以外のカプセル化フレームをフィルタリングする。デカプセル化部３０５は、カプセル化フレームの宛先を読み取って転送先を解析し、その解析結果からカプセル化フレームをデカプセル化し、デカプセル化されたフレームをＳＲ−ＤＥＶ制御部３０２、あるいは、コンフィグレジスタ３０３、あるいは、コネクション管理部３０６に転送する。
【００３１】
コネクション管理部３０６は、複数のＵ−ＰＥＢ１０４とのコネクションを管理する。コネクション管理部３０６において、変換テーブル３０７は、ＯＳが設定するＰＣＩ  Ｅｘｐｒｅｓｓ空間とネットワーク１０５上のアドレス空間との変換を行うためのテーブルである。カプセル化部３０８は、変換テーブル３０７を参照し、コネクション管理部３０６の指示でＰＣＩｅパケットをネットワーク１０５の転送フォーマットに変換する。物理リンク制御監視部３０９は、ＳＲ−ＤＥＶ１０７との物理リンクの制御と監視を行う。エラー監視処理部３１０は、ＳＲ−ＤＥＶ１０７のエラー情報を監視し、エラー状況に応じて、Ｕ−ＰＥＢ１０４、あるいは、ＣＰＵ１０１およびＲＣ１０３にエラー情報を通知する。
【００３２】
図４は、本実施形態のＳＲ−ＤＥＶ１０７の構成を示すブロック図である。ＳＲ−ＤＥＶ１０７は、ＳＲ−ＩＯＶ対応のＰＣＩ  Ｅｘｐｒｅｓｓデバイスである。図４では、本発明を説明するために必要な機能ブロックのみを示してある。ＳＲ−ＤＥＶ１０７は、ＰＣＩｅ処理部４０１とＩＯ機能部４０２とから構成される。ＰＣＩｅ処理部４０１は、Ｄ−ＰＥＢ１０６とＩＯ機能部４０２とに接続される。ＩＯ機能部４０２は、ＰＦ４０２１とＶＦ４０２２とを有し、ＰＣＩｅ処理部４０１と接続される。
【００３３】
次に、本実施形態のＩ／Ｏシステムの動作について説明する。
図５は、本実施形態のＩ／Ｏシステムにおける初期設定動作の概要を示すフローチャートである。ＳＲ−ＤＥＶ側の電源ＯＮを契機としてＳＲ−ＤＥＶ側の初期設定動作が開始される（ステップＳ１）。すなわち、Ｄ−ＰＥＢ１０６およびＳＲ−ＤＥＶ１０７の初期化が行われ、コンフィグレジスタ３０３、および、ＰＦ４０２１、および、ＶＦ４０２２に初期値が設定される（ステップＳ２）。次に、物理リンク制御監視部３０９がＤ−ＰＥＢ１０６とＳＲ−ＤＥＶ１０７間のＰＣＩ  Ｅｘｐｒｅｓｓ物理リンクの設定および確立を行う（ステップＳ３）。
【００３４】
次に、ＳＲ−ＤＥＶ設定部３０２３は、ＳＲ−ＤＥＶ１０７のＰＦ４０２１の初期値を読込み、その値に従いＰＦ４０２１の設定を行う（ステップＳ４）。次に、ＳＲ−ＤＥＶ設定部３０２３は、ＳＲ−ＤＥＶ１０７のＶＦ４０２２の初期値を読込み、その値を仮想化部３０２１に設定する（ステップＳ５）。そして、コネクション管理部３０６は、コネクション管理用パケットの送信を行い、Ｕ−ＰＥＢ１０４からコネクション設定用パケットが到着するまで待機する（ステップＳ６）。
【００３５】
一方、ＲＣ側の電源ＯＮを契機として（ステップＳ７）、ＣＰＵ１０１、メモリ１０２、ＲＣ１０３、Ｕ−ＰＥＢ１０４の初期化が行われ、コンフィグレジスタ２０３に初期値が設定される（ステップＳ８）。次に、ＲＣ１０３とＵ−ＰＥＢ１０４との間の物理リンクが設定され確立される（ステップＳ９）。そして、ＣＰＵ１０１上でＢＩＯＳが起動される（ステップＳ１０）。ＢＩＯＳは、Ｕ−ＰＥＢ１０４の設定を行う（ステップＳ１１）。Ｕ−ＰＥＢ１０４のコネクション管理部２０６がコネクション管理用の制御パケットの送信を行い、Ｄ−ＰＥＢ１０６からコネクション設定用パケットが到着するまで待機する（ステップＳ１２）。
【００３６】
そして、コネクション設定用パケットがＤ−ＰＥＢ１０６のコネクション管理部３０６およびＵ−ＰＥＢ１０４のコネクション管理部２０６にそれぞれ到着すると（ステップＳ６のＹＥＳ、および、ステップＳ１２のＹＥＳ）、コネクション管理部２０６とコネクション管理部３０６とでコネクションの確立を行う（ステップＳ１３）。コネクションが確立されると、ＳＲ−ＤＥＶ１０７およびＤ−ＰＥＢ１０６は、そのコネクションに対し、任意のＶＦ４０２２および仮想化部３０２１を割り当てる（ステップＳ１４）。そして、Ｄ−ＰＥＢ１０６およびＳＲ−ＤＥＶ１０７は、ＢＩＯＳおよびＯＳのコンフィグレーションを行い、コンフィグレジスタ３０３と、割り当てられた仮想化部３０２１およびＶＦ４０２２と、メモリ空間と、Ｉ／Ｏ空間とを設定する（ステップＳ１５）。その結果に従って、変換テーブル２０７と変換テーブル３０７とアクセス変換テーブル３０２２とが設定され（ステップＳ１６）、初期設定動作が完了する。
【００３７】
図６および図７は、本実施形態のＩ／Ｏシステムの初期設定後のデータ転送の動作を示すフローチャートである。図６は、ＲＣ側からＳＲ−ＤＥＶ側へのデータ転送についてのフローチャートである。一方、図７は、ＳＲ−ＤＥＶ側からＲＣ側へのデータ転送についてのフローチャートである。
【００３８】
まず、ＲＣ側からＳＲ−ＤＥＶ側へデータ転送される場合について説明する。図６において、ＲＣ１０３は、メモリ１０２から読み出されたデータをＰＣＩ  Ｅｘｐｒｅｓｓトランザクションレイヤパケット（ＴＬＰ）としてＵ−ＰＥＢ１０４に転送する（ステップＳ２０）。Ｕ−ＰＥＢ１０４のＰＣＩｅ処理部２０１は、ＴＬＰの宛先を解析し、その結果をコネクション管理部２０６に通知する（ステップＳ２１）。その通知を受け取ったコネクション管理部２０６は、変換テーブル２０７を参照し、転送先Ｄ−ＰＥＢ１０６の情報をカプセル化部２０２に通知する（ステップＳ２２）。
【００３９】
そして、カプセル化部２０２は、ネットワーク１０５を介してＴＬＰが転送先Ｄ−ＰＥＢ１０６に転送されるように、ＴＬＰをカプセリングし（ステップＳ２３）、カプセル化されたＴＬＰをネットワーク１０５に送信する（ステップＳ２４）。カプセル化されたＴＬＰは、ネットワーク１０５を通過し、目的のＤ−ＰＥＢ１０６に到着する（ステップＳ２５）。
【００４０】
フィルタリング部３０４は、到着したカプセル化されたＴＬＰが自Ｄ−ＰＥＢ１０６宛かを識別する（ステップＳ２６）。フィルタリング部３０４は、カプセル化されたＴＬＰが自Ｄ−ＰＥＢ１０６宛であれば、カプセル化されたＴＬＰをデカプセル化部３０５に転送する（ステップＳ２６の自Ｄ−ＰＥＢ宛）。一方、フィルタリング部３０４は、カプセル化されたＴＬＰがコネクション管理用であれば、カプセル化されたＴＬＰをコネクション管理部３０６に転送する（ステップＳ２６のコネクション管理用）。他方、フィルタリング部３０４は、カプセル化されたＴＬＰが自Ｄ−ＰＥＢ１０６宛でもなくコネクション管理用でもなければ、カプセル化されたＴＬＰを廃棄する（ステップＳ２９）。
【００４１】
デカプセル化部３０５は、カプセル化されたＴＬＰのカプセル化をとく（ステップＳ２８）。次に、デカプセル化部３０５は、ＴＬＰの宛先がＳＲ−ＤＥＶ１０７向けか、または、Ｄ−ＰＥＢ１０６向けかを識別する（ステップＳ３０）。デカプセル化部３０５は、ＴＬＰの宛先がＤ−ＰＥＢ１０６ならば、ＴＬＰをコンフィグレジスタ３０３へ転送する（ステップＳ３０のＤ−ＰＥＢ向け）。一方、デカプセル化部３０５は、ＴＬＰの宛先がＳＲ−ＤＥＶ１０７ならば、ＲＣ１０３毎に付けられている識別子とともにＳＲ−ＤＥＶ制御部３０２にＴＬＰを転送する（ステップＳ３０のＳＲ−ＤＥＶ向け）。
【００４２】
ＴＬＰがコンフィグレジスタ３０３に転送された場合、転送されたＴＬＰは、コンフィグレジスタ３０３で処理される（ステップＳ３１）。一方、ＴＬＰがＳＲ−ＤＥＶ制御部３０２に転送された場合には、ＳＲ−ＤＥＶ制御部３０２は、アクセス変換テーブル３０２２に従って、ＲＣ１０３毎に付けられている識別子とＴＬＰの宛先から転送先を判断し（ステップＳ３２）、仮想化部３０２１、あるいは、ＳＲ−ＤＥＶ１０７のＶＦ４０２２にＴＬＰを転送する（それぞれステップＳ３２の仮想化部レンジ、または、ＶＦレンジ）。
【００４３】
転送先が仮想化部レンジに入っている場合には、ＴＬＰは仮想化部３０２１で処理される（ステップＳ３３）。一方、転送先がＶＦ４０２２レンジに入っている場合には、ＴＬＰはＰＣＩｅ処理部３０１およびＰＣＩｅ処理部４０１を経由してＶＦ４０２２で処理される（ステップＳ３４）。
【００４４】
次に、ＳＲ−ＤＥＶ側からＲＣ側へデータ転送される場合について説明する。図７において、ＰＦ４０２１およびＶＦ４０２２はＴＬＰを生成する（ステップＳ４０）。該ＴＬＰは、ＰＣＩｅ処理部４０１およびＰＣＩｅ処理部３０１を経由してＳＲ−ＤＥＶ制御部３０２に転送される。ＳＲ−ＤＥＶ制御部３０２は、到着したＴＬＰのＴＬＰ発行元を解析する（ステップＳ４１）。ＳＲ−ＤＥＶ制御部３０２は、ＰＦ４０２１からのＴＬＰであれば（ステップＳ４１のＰＦ）、その処理対象を解析する（ステップＳ４２）。ＴＬＰは、解析された内容に従って、ＳＲ−ＤＥＶ制御部３０２内のＳＲ−ＤＥＶ設定部３０２３にて処理されるか（ステップＳ４３。ステップＳ４２における「パケット」の場合）、あるいは、物理リンク制御監視部３０９にて処理されるか（ステップＳ４４。ステップＳ４２における「リンク」の場合）、あるいは、エラー監視処理部３１０にて処理される（ステップＳ４５。ステップＳ４２における「エラー」の場合）。
【００４５】
一方、ＳＲ−ＤＥＶ制御部３０２は、ＶＦ４０２２からのＴＬＰであれば（ステップＳ４１のＶＦ）、アクセス変換テーブル３０２２を参照してＴＬＰの宛先を解析し、解析された宛先に関する情報をコネクション管理部３０６へ通知する（ステップＳ４６）。コネクション管理部３０６は、その情報を基に変換テーブル３０７を参照し、カプセル化部３０８に転送先Ｕ−ＰＥＢを通知する（ステップＳ４７）。そして、カプセル化部３０８は、ＴＬＰがネットワーク１０５を介して転送先Ｕ−ＰＥＢ１０４に転送されるように、ＴＬＰをカプセリングし（ステップＳ４８）、カプセル化されたＴＬＰをネットワーク１０５に送信する（ステップＳ４９）。カプセル化されたＴＬＰは、ネットワーク１０５を通過し、目的のＵ−ＰＥＢ１０４に到着する（ステップＳ５０）。
【００４６】
フィルタリング部２０４は、到着したカプセル化されたＴＬＰが自Ｕ−ＰＥＢ１０４宛かを識別する（ステップＳ５１）。フィルタリング部２０４は、カプセル化されたＴＬＰが自Ｕ−ＰＥＢ１０４宛であれば、カプセル化されたＴＬＰをデカプセル化部２０５に転送する（ステップＳ５１の自Ｕ−ＰＥＢ宛）。一方、フィルタリング部２０４は、カプセル化されたＴＬＰがコネクション管理用であれば、カプセル化されたＴＬＰをコネクション管理部２０６に転送する（ステップＳ５１のコネクション管理用）。転送されたＴＬＰは、コネクション管理部２０６で処理される（ステップＳ５２）。他方、フィルタリング部２０４は、カプセル化されたＴＬＰが自Ｕ−ＰＥＢ１０４宛でもなくコネクション管理用でもなければ、ＴＬＰを廃棄する（ステップＳ５３）。
【００４７】
デカプセル化部２０５は、転送されたＴＬＰのカプセル化をとく（ステップＳ５４）。次に、デカプセル化部２０５は、ＴＬＰの宛先がＲＣ向けであるか、Ｕ−ＰＥＢ向けであるか識別する（ステップＳ５５）。デカプセル化部２０５は、ＴＬＰの宛先がＵ−ＰＥＢ１０４ならば、ＴＬＰをコンフィグレジスタ２０３に転送する（ステップＳ５５のＵ−ＰＥＢ向け）。転送されたＴＬＰは、コンフィグレジスタ２０３で処理される（ステップＳ５６）。一方、デカプセル化部２０５は、ＴＬＰの宛先がＲＣ１０３ならば、ＰＣＩｅ処理部２０１にＴＬＰを転送する（ステップＳ５５のＲＣ向け）。転送されたＴＬＰは、ＲＣ１０３へ転送されて処理される（ステップＳ５７）。
【００４８】
図８は、本実施形態のＩ／Ｏシステムにおいて、初期設定後における物理リンクの制御および監視に関する動作を示すフローチャートである。初期設定が完了すると、物理リンク制御監視部３０９は、ＰＣＩｅ処理部３０１とＰＣＩｅ処理部４０１との間のＰＣＩ  Ｅｘｐｒｅｓｓ物理リンク状態の変化、および、ＳＲ−ＤＥＶ１０７のＰＦ４０２１からの物理リンクに関するＴＬＰの受信を監視する（ステップＳ６０）。物理リンク状態に変化があるか、あるいは、ＰＦ４０２１からの物理リンクに関するＴＬＰを受信した場合、物理リンク制御監視部３０９が、ＰＣＩ  Ｅｘｐｒｅｓｓ物理リンク状態の変化に対応した処理を行い、あるいは、受信した物理リンクに関するＴＬＰに対応する処理を行い（ステップＳ６１）、その処理結果をコンフィグレジスタ３０３およびエラー監視処理部３１０に通知する（ステップＳ６２）。
【００４９】
図９は、本実施形態のＩ／Ｏシステムにおいて、初期設定後のエラー監視処理に関する動作を示すフローチャートである。初期設定が完了すると、エラー監視処理部３１０は、ＳＲ−ＤＥＶ１０７のＰＦ４０２１からのエラーに関するＴＬＰの受信を監視する（ステップＳ７０）。ＰＦ４０２１からのエラーに関するＴＬＰ受信があった場合、エラー監視処理部３１０は、エラー種別を識別し（ステップＳ７１）、エラーの影響を受けるＣＰＵ・ＲＣを特定し（ステップＳ７２）、エラー情報（すなわち、識別されたエラー種別）を該当するＲＣ１０３に通知する（ステップＳ７３）。そして、エラーは、各ＲＣ１０３で処理される。
【００５０】
以上のように、上述した実施形態では、複数のＲＣ１０３には、各々、複数の上流側のＵ−ＰＥＢ１０４が接続される。また、複数のＳＲ−ＤＥＶ１０７には、各々、複数の下流側のＤ−ＰＥＢ１０６が接続される。さらに、複数のＵ−ＰＥＢ１０４と、複数のＤ−ＰＥＢ１０６と、これらの間の情報の転送を行うネットワーク１０５とから仮想マルチルートＰＣＩ  Ｅｘｐｒｅｓｓスイッチ（仮想ＭＲ−ＳＷ）が構成される。そして、複数のＤ−ＰＥＢ１０６は、接続されているＳＲ−ＤＥＶ１０７の設定、物理リンクの制御および監視、ならびに、エラー監視処理を各々独立して行う。
【００５１】
そして、上述した実施形態では、各ＳＲ−ＤＥＶ１０７に接続されたＤ−ＰＥＢ１０６に搭載されるＳＲ−ＤＥＶ設定部３０２３が、接続されているＳＲ−ＤＥＶ１０７の設定のみを行う。このため、障害が発生した場合にも、該当するＤ−ＰＥＢ１０６とＳＲ−ＤＥＶ１０７のみに影響を留めることができる。ゆえに、複数のＲＣ１０３間でＳＲ−ＤＥＶ１０７を共有した場合に、ＳＲ−ＤＥＶ１０７のエラー状況を、そのＳＲ−ＤＥＶ１０７に接続されたＤ−ＰＥＢ１０６のエラー監視処理部３１０が監視できる。このため、そのＳＲ−ＤＥＶ１０７を共有している全てのＲＣ１０３にエラー状況を通知することができるようになる。したがって、各ＲＣ１０３が適切なエラー処理を行え、Ｉ／Ｏシステムの耐障害性を向上させることができる。
【００５２】
また、上述した実施形態では、各ＳＲ−ＤＥＶ１０７の設定を、そのＳＲ−ＤＥＶ１０７に接続されているＤ−ＰＥＢ１０６に搭載されているＳＲ−ＤＥＶ設定部３０２３が行う。このため、ＭＲ−ＰＣＩＭ（図１では図示を省略）が全Ｉ／Ｏデバイスを設定する時間をより短くすることができる。また、ネットワークコネクションが確立する前からＳＲ−ＤＥＶ１０７を設定することが可能であるため、Ｉ／Ｏシステムの起動時間を短縮できる。
【００５３】
さらに、上述した実施形態では、ＣＰＵ・ＲＣ上のＢＩＯＳが起動する前に、各ＳＲ−ＤＥＶ１０７に接続されているＤ−ＰＥＢ１０６に搭載されたＳＲ−ＤＥＶ設定部３０２３が各ＳＲ−ＤＥＶ１０７を設定する。このため、ＢＩＯＳ起動時からＳＲ−ＤＥＶ１０７を使用することができる。
【００５４】
以上、実施形態を参照して本発明を説明したが、本発明は上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解し得る様々な変更を加えることができる。
【００５５】
例えば、Ｉ／Ｏシステム１を構成する構成要素（例えば、Ｕ−ＰＥＢ１０４やＤ−ＰＥＢ１０６）は、その機能を実現するためのプログラムを実行するコンピュータを用いて実現してもよい。このコンピュータは、コンピュータ読み取り可能な記録媒体に記録された上記プログラムを読み込んで実行することで、上記構成要素として機能する。なお、コンピュータ読み取り可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）等の記録媒体、コンピュータシステムに内蔵されるハードディスク装置等の記憶装置を指す。
【００５６】
この出願は、２００９年７月６日に出願された日本出願特願２００９−１５９７０４号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００５７】
本発明は、例えば、複数のＣＰＵ−および複数のＲＣ間でＰＣＩエクスプレスデバイスを共有するＩ／Ｏシステムに利用できる。本発明では、耐障害性を向上させ、Ｉ／Ｏシステム起動時の機能制限を回避し、起動時間の短縮化を図ることができる。
【符号の説明】
【００５８】
１  Ｉ／Ｏシステム
１０１  ＣＰＵ
１０２  メモリ
１０３  ＲＣ
１０４  Ｕ−ＰＥＢ
１０５  ネットワーク
１０６  Ｄ−ＰＥＢ
１０７  ＳＲ−ＤＥＶ
２０１  ＰＣＩｅ処理部
２０２  カプセル化部
２０３  コンフィグレジスタ
２０４  フィルタリング部
２０５  デカプセル化部
２０６  コネクション管理部
２０７  変換テーブル
３０１  ＰＣＩｅ処理部
３０２  ＳＲ−ＤＥＶ制御部
３０２１  仮想化部
３０２２  アクセス変換テーブル
３０２３  ＳＲ−ＤＥＶ設定部
３０３  コンフィグレジスタ
３０４  フィルタリング部
３０５  デカプセル化部
３０６  コネクション管理部
３０７  変換テーブル
３０８  カプセル化部
３０９  物理リンク制御監視部
３１０  エラー監視処理部
４０１  ＰＣＩｅ処理部
４０２  Ｉ／Ｏ制御部
４０２１  ＰＦ
４０２２  ＶＦ
【図１】
0005533867.tif 000002
【図２】
0005533867.tif 000003
【図３】
0005533867.tif 000004
【図４】
0005533867.tif 000005
【図５】
0005533867.tif 000006
【図６】
0005533867.tif 000007
【図７】
0005533867.tif 000008
【図８】
0005533867.tif 000009
【図９】
0005533867.tif 000010
【図１０】
0005533867.tif 000011