(57)【要約】  Ｉ／Ｏデバイス共有システムは、複数のホスト２０−１〜２０−Ｎによって共有されるＩ／Ｏデバイス５０と、Ｉ／Ｏデバイス５０を設定するシステムマネージャ１０と、Ｉ／Ｏデバイス５０を仮想化する仮想化ブリッジ４０と、Ｉ／Ｏデバイス５０と、システムマネージャ１０と、複数のホスト２０−１〜２０−Ｎと、仮想化ブリッジ４０とを接続するネットワーク３とを含み、仮想化ブリッジ４０が、システムマネージャ１０によって設定された、Ｉ／Ｏデバイス５０が備える複数の仮想ファンクションのアドレス設定と有効化を検出して、各ホスト２０−１〜２０−Ｎによる各仮想ファンクションへのアクセスを許可する接続仮想化部４１を備える。
2013150792.tif 000002
【特許請求の範囲】
【請求項１】
複数のホストによって共有されるＩ／Ｏデバイスと、
前記Ｉ／Ｏデバイスを設定するシステムマネージャと、
前記Ｉ／Ｏデバイスを仮想化する仮想化ブリッジと、
前記Ｉ／Ｏデバイスと、前記システムマネージャと、前記複数のホストと、前記仮想化ブリッジとを接続するネットワークとを含み、
前記仮想化ブリッジは、前記システムマネージャによって設定された前記Ｉ／Ｏデバイスが備える複数の仮想ファンクションのアドレス設定もしくは仮想ファンクションの有効化、または前記アドレス設定と前記有効化とを検出して、前記各ホストによる前記各仮想ファンクションへのアクセスを許可する接続仮想化部を備える
ことを特徴とするＩ／Ｏデバイス共有システム。
【請求項２】
前記仮想化ブリッジは、前記各ホストと前記各仮想ファンクションとの間で送受信されるＩ／Ｏバスのパケットに記載されたアドレスに関して、前記各ホストが前記各仮想ファンクションに設定したアドレスと前記各仮想ファンクションに実際に設定されたアドレスとを参照してアドレス変換を行うアドレス変換部をさらに備える
請求項１に記載のＩ／Ｏデバイス共有システム。
【請求項３】
前記接続仮想化部は、前記仮想ファンクションのアドレスの設定と、前記Ｉ／Ｏデバイスが備える前記仮想ファンクションを制御するための制御ファンクションのアドレスの設定とを行い、
前記仮想化ブリッジは、前記接続仮想化部が設定した前記仮想ファンクションおよび前記制御ファンクションに設定したアドレスと、前記システムマネージャが前記制御ファンクションに設定したアドレスと、前記各ホストが前記各仮想ファンクションに設定したアドレスとを記憶するブリッジメモリを有し、
前記アドレス変換部は、前記システムマネージャと前記制御ファンクションとの間で送受信されるＩ／Ｏバスのパケットに記載されたアドレスに関して、前記システムマネージャが前記制御ファンクションに設定したアドレスと前記接続仮想化部が前記制御ファンクションに設定したアドレスとを参照してアドレス変換を行う
請求項２に記載のＩ／Ｏデバイス共有システム。
【請求項４】
前記接続仮想化部は、前記システムマネージャと前記仮想化ブリッジのコネクションの切断を検出すると、前記複数のホストと前記仮想化ブリッジとの接続を遮断することで前記複数のホストによる前記複数の仮想ファンクションの使用を停止するとともに、前記Ｉ／Ｏデバイスをリセットする
請求項１から請求項３のうちのいずれか１項に記載のＩ／Ｏデバイス共有システム。
【請求項５】
前記Ｉ／Ｏデバイスは、PCI Express Single-Root I/O Virtualizationの規格に準拠する請求項１から請求項４のうちのいずれか１項に記載のＩ／Ｏデバイス共有システム。
【請求項６】
Ｉ／Ｏデバイスを仮想化する仮想化ブリッジを介してＩ／Ｏデバイスをネットワークに接続し、
前記ネットワークにＩ／Ｏデバイスを設定するシステムマネージャとＩ／Ｏデバイスを共有する複数のホストとを接続し、
前記システムマネージャによって設定された前記Ｉ／Ｏデバイスが保持する複数の仮想ファンクションのアドレス設定もしくは仮想ファンクションの有効化、または前記アドレス設定と前記有効化とを検出して、前記各ホストによる前記各仮想ファンクションへのアクセスを許可する
ことを特徴とするＩ／Ｏデバイス共有方法。
【請求項７】
前記各ホストと前記各仮想ファンクションとの間で送受信されるＩ／Ｏバスのパケットに記載されたアドレスに関して、前記各ホストが前記各仮想ファンクションに設定したアドレスと前記各仮想ファンクションに実際に設定されたアドレスとを参照してアドレス変換を行う
請求項６に記載のＩ／Ｏデバイス共有方法。
【請求項８】
前記仮想化ブリッジが、前記仮想ファンクションのアドレスの設定と、前記Ｉ／Ｏデバイスが備える前記仮想ファンクションを制御するための制御ファンクションのアドレスの設定とを行い、
前記仮想化ブリッジが、前記仮想ファンクションおよび前記制御ファンクションに設定したアドレスと、前記システムマネージャが前記制御ファンクションに設定したアドレスと、前記各ホストが前記各仮想ファンクションに設定したアドレスとを、ブリッジメモリに保持し、
前記システムマネージャと前記制御ファンクションとの間で送受信されるＩ／Ｏバスのパケットに記載されたアドレスに関して、前記システムマネージャが前記制御ファンクションに設定したアドレスと前記仮想化ブリッジが前記制御ファンクションに設定したアドレスとを参照してアドレス変換を行う
請求項７に記載のＩ／Ｏデバイス共有方法。
【請求項９】
前記仮想化ブリッジが、前記システムマネージャと前記仮想化ブリッジのコネクションの切断を検出すると、前記複数のホストと前記仮想化ブリッジとの接続を遮断することで前記複数のホストによる前記複数の仮想ファンクションの使用を停止するとともに、前記Ｉ／Ｏデバイスをリセットする
請求項６から請求項８のうちのいずれか１項に記載のＩ／Ｏデバイス共有方法。
【請求項１０】
前記Ｉ／Ｏデバイスは、PCI Express Single−Root I/O Virtualizationの規格に準拠する請求項６から請求項９のうちのいずれか１項に記載のＩ／Ｏデバイス共有方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｉ／Ｏデバイス共有システムおよびＩ／Ｏデバイス共有方法に関し、特に、Ｉ／Ｏデバイスの管理を単純化できるＩ／Ｏデバイス共有システムおよびＩ／Ｏデバイス共有方法に関する。
【背景技術】
【０００２】
Ｉ／Ｏデバイス共有システムの一例が特許文献１に記載されている。図７に示すように、特許文献１に記載されたＩ／Ｏデバイス共有システムは、複数のホスト（以下、それぞれをホスト２−１（ホスト１）、ホスト２−２（ホスト２）、・・・、ホスト２−Ｎ（ホストＮ）と記述する。）と、ホスト２−１〜ホスト２−Ｎが共有するSR-IOV規格（Single-Root I/O Virtualization）に準拠するSR-IOV対応Ｉ／Ｏデバイス５と、SR-IOV対応Ｉ／Ｏデバイス５を仮想化するＩ／Ｏ仮想化ブリッジ６と、ホスト２−１〜ホスト２−ＮとＩ／Ｏ仮想化ブリッジ６とを接続するネットワーク３とを含む。【０００３】
ホスト２−１は、プログラムに従って動作するＣＰＵ２０１−１と、プログラムやデータを記憶するメモリ２０３−１と、ホスト２−１のＩ／ＯバスであるPCI Express （PCIe）バスをネットワーク３に接続するホストPCIeブリッジ２０４−１と、ＣＰＵ２０１−１とメモリ２０３−１とホストPCIeブリッジ２０４−１とを接続するルートコンプレックス２０２−１とを含む。ホストPCIeブリッジ２０４−１は、PCIeパケットのネットワークパケットへのカプセル化と、ネットワークパケットにカプセル化されたPCIeパケットのデカプセル化を行う。ホスト２−２〜ホスト２−Ｎの構成は、ホスト２−１の構成と同じである。【０００４】
SR-IOV対応Ｉ／Ｏデバイス５は、デバイスを制御するインタフェースであるPhysical Function （ＰＦ）５０１と、Ｉ／Ｏデバイスの機能を提供するインタフェースである複数のVirtual Function（ＶＦ）を保持する。以下、複数のＶＦをＶＦ５０２−１（ＶＦ１）〜ＶＦ５０２−Ｎ（ＶＦＮ）と記述する。ＰＦ５０１は、ＰＦ５０１を設定するためのＰＦコンフィグレーションレジスタ（PF CFG REG）５０１１を保持する。ＶＦ５０２−１は、ホスト２−１によって使用される。同様に、ＶＦ５０２−２〜ＶＦ５０２−Ｎは、それぞれ、ホスト２−２〜ホスト２−Ｎによって使用される。従って、SR-IOV対応Ｉ／Ｏデバイス５は、ホスト２−１〜ホスト２−Ｎに共有される。【０００５】
Ｉ／Ｏ仮想化ブリッジ６は、PCIeパケットのネットワーク３への送受信を行うネットワーク接続部６０１と、PCIeパケットを転送するパケット転送部６０２と、PCIeパケットの宛先アドレスを変換するアドレス変換部６０３と、SR-IOV対応Ｉ／Ｏデバイス５の設定を行う接続仮想化部６０４とを含む。【０００６】
ネットワーク接続部６０１は、ネットワーク３のパケットにカプセル化されたPCIeパケットのデカプセル化を行う。また、PCIeパケットをネットワーク３のパケットにカプセル化しネットワーク３に送信する。【０００７】
接続仮想化部６０４は、SR-IOV対応Ｉ／Ｏデバイス５がホスト２−１〜ホスト２−Ｎから使用される前にPF CFG REG ５０１１にアクセスし、SR-IOV対応Ｉ／Ｏデバイス５の設定を行う。このとき、SR-IOV対応Ｉ／Ｏデバイス５のアドレス設定を行う。【０００８】
アドレス変換部６０３は、ホスト２−１〜ホスト２−ＮからSR-IOV対応Ｉ／Ｏデバイス５に対するアクセスのPCIeパケットのアドレスを変換する。具体的には、ホスト２−１〜ホスト２−Ｎがそれぞれ設定したＶＦ５０２−１〜ＶＦ５０２−Ｎのアドレスと、接続仮想化部６０４がＶＦ５０２−１〜ＶＦ５０２−Ｎに設定したアドレスの変換を行う。【０００９】
このように構成されるＩ／Ｏデバイス共有システムは、以下のように動作する。【００１０】
ここでは、ホスト２−１がＶＦ５０２−１にアクセスする場合を例にする。ホスト２−２〜ホスト２−ＮがそれぞれＶＦ５０２−２〜ＶＦ５０２−Ｎにアクセスする場合も、以下の例と同様に説明される。ホスト１におけるソフトウェアに従って動作するＣＰＵ２０１−１がＶＦ５０２−１にアクセスする命令を発行すると、ルートコンプレックス２０２−１は、ＶＦ５０２−１がマッピングされるメモリアドレス宛てのPCIeパケットを作成して送信する。ホストPCIeブリッジ２０４−１は、PCIeパケットをネットワークパケットにカプセル化してネットワーク３に送信する。ネットワーク接続部６０１は、ネットワークパケットを受信し、PCIeパケットをデカプセル化し、パケット転送部６０２に転送する。【００１１】
パケット転送部６０２は、受信したPCIeパケットをアドレス変換部６０３に転送する。アドレス変換部６０３は、宛先アドレスを、ホスト２−１が指定したアドレスから、接続仮想化部６０４がＰＦ５０１に設定したＶＦ５０２−１のアドレスに変換した後、PCIeパケットをＶＦ５０２−１に送信する。その結果、ＶＦ５０２−１は、ホスト２−１が発行したPCIeパケットを受信する。なお、ＶＦ５０２−１が送信したPCIeパケットをホスト２−１が受信する場合には、上記の処理の逆の処理が実行される。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】国際公開第２００９／０２５３８１号
【発明の概要】
【発明が解決しようとする課題】
【００１３】
Ｉ／Ｏ仮想化ブリッジによるＩ／Ｏデバイスの管理が複雑であるという課題がある。その理由は、Ｉ／Ｏデバイスにはそれぞれに固有の設定処理があるが、様々なＩ／Ｏデバイスに対応するために、それぞれに固有の設定処理をＩ／Ｏ仮想化ブリッジで実現することが求められるためである。【００１４】
本発明は、Ｉ／Ｏ仮想化ブリッジによるＩ／Ｏデバイスの管理を単純化できるＩ／Ｏデバイス共有システムおよびＩ／Ｏデバイス共有方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明によるＩ／Ｏデバイス共有システムは、複数のホストによって共有されるＩ／Ｏデバイスと、Ｉ／Ｏデバイスを設定するシステムマネージャと、Ｉ／Ｏデバイスを仮想化する仮想化ブリッジと、Ｉ／Ｏデバイスと、システムマネージャと、複数のホストと、仮想化ブリッジとを接続するネットワークとを含み、仮想化ブリッジが、システムマネージャによって設定されたＩ／Ｏデバイスが備える複数の仮想ファンクションのアドレス設定もしくは仮想ファンクションの有効化、またはアドレス設定と有効化とを検出して、各ホストによる各仮想ファンクションへのアクセスを許可する接続仮想化部を備えることを特徴とする。【００１６】
本発明によるＩ／Ｏデバイス共有方法は、Ｉ／Ｏデバイスを仮想化する仮想化ブリッジを介してＩ／Ｏデバイスをネットワークに接続し、ネットワークにＩ／Ｏデバイスを設定するシステムマネージャとＩ／Ｏデバイスを共有する複数のホストとを接続し、システムマネージャによって設定されたＩ／Ｏデバイスが保持する複数の仮想ファンクションのアドレス設定もしくは仮想ファンクションの有効化、またはアドレス設定と有効化とを検出して、各ホストによる各仮想ファンクションへのアクセスを許可することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、Ｉ／Ｏ仮想化ブリッジによるＩ／Ｏデバイスの管理を単純化できる効果がある。その理由は、Ｉ／Ｏデバイスに共通する管理だけをＩ／Ｏ仮想化ブリッジで行い、個別のＩ／Ｏデバイスに依存する処理は、Ｉ／Ｏデバイスの製造者から提供されるソフトウェアを用いてネットワークで接続したシステムマネージャから行うためである。
【図面の簡単な説明】
【００１８】
【図１】本発明によるＩ／Ｏデバイス共有システムの一実施形態の構成を示すブロック図である。
【図２】接続仮想化部の状態遷移を示すステートマシン図である。
【図３】接続仮想化部が行うアドレス設定を示す説明図である。
【図４】システムマネージャがＰＦにコンフィグレーションアクセスを発行する場合の動作を示す流れ図である。
【図５】システムマネージャがＰＦがメモリマッピングされた領域に対してメモリアクセスを行う場合の動作を示す流れ図である。
【図６】本発明によるＩ／Ｏデバイス共有システムの主要部を示すブロック図である。
【図７】特許文献１に記載されたＩ／Ｏデバイス共有システムの構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態を図面を参照して詳細に説明する。
【００２０】
図１は、本発明によるＩ／Ｏデバイス共有システムの一実施形態の構成を示すブロック図である。図１に示すＩ／Ｏデバイス共有システムは、SR-IOV対応Ｉ／Ｏデバイス５を制御するシステムマネージャ１０と、SR-IOV対応Ｉ／Ｏデバイス５を共有するホスト２−１〜ホスト２−Ｎと、SR-IOV対応Ｉ／Ｏデバイス５と、SR-IOV対応Ｉ／Ｏデバイスをネットワーク３に接続するＩ／Ｏ仮想化ブリッジ４と、システムマネージャ１０とホスト２−１〜ホスト２−ＮとＩ／Ｏ仮想化ブリッジ４とを接続するネットワーク３とを含む。
【００２１】
システムマネージャ１０は、ソフトウェアに従って動作するＣＰＵ１０１と、プログラムやデータを記憶するメモリ１０３と、PCIeバスとネットワーク３を接続するホストPCIeブリッジ１０４と、ＣＰＵ１０１とメモリ１０３とホストPCIeブリッジ１０４とを接続するルートコンプレックス１０２と、SR-IOV対応Ｉ／Ｏデバイス５のＰＦ５０１を制御するＰＦ設定ソフトウェア１０５とを含む。
【００２２】
なお、ＰＦ５０１は、仮想ファンクションを制御するための制御ファンクションの一例に相当する。
【００２３】
ＰＦ設定ソフトウェア１０５は、カーネル空間で動作するデバイスドライバと、ＯＳと、ユーザ空間で動作するＰＦ設定ユーザソフトウェアとを含む。ＰＦ設定ユーザソフトウェアは、一般に、SR-IOV対応Ｉ／Ｏデバイス５を提供する製造者によって、デバイスを制御する一連のソフトウェアとして、デバイスと合わせて提供される。また、システムマネージャ１０において動作するオペレーティングシステムが提供する場合もある。
【００２４】
SR-IOV対応Ｉ／Ｏデバイス５は、デバイスを制御するインタフェースであるＰＦ５０１と、Ｉ／Ｏデバイスの機能を提供するインタフェースであるＶＦ５０２−１〜ＶＦ５０２−Ｎとを保持する。ＰＦ５０１は、ＰＦ５０１を設定するためのPF CFG REG ５０１１を保持する。また、ＶＦ５０２−１は、ＶＦ５０２−１を設定するためのＶＦコンフィグレーションレジスタ（VF CFG REG）５０２１−１（VF1 CFG REG ）を保持する。他のＶＦ５０２−２〜ＶＦ５０２−Ｎの構成は、ＶＦ５０２−１の構成と同じである。ＶＦ５０２−１は、ホスト２−１によって使用される。同様に、ＶＦ５０２−２〜ＶＦ５０２−Ｎは、それぞれ、ホスト２−２〜ホスト２−Ｎによって使用される。従って、SR-IOV対応Ｉ／Ｏデバイス５は、ホスト２−１〜ホスト２−Ｎに共有される。
【００２５】
Ｉ／Ｏ仮想化ブリッジ４は、PCIeパケットのネットワーク３への送受信を行うネットワーク接続部４０１と、PCIeパケットを転送するパケット転送部４０２と、PCIeパケットの宛先アドレスを変換するアドレス変換部４０３と、SR-IOV対応Ｉ／Ｏデバイス５の設定を行う接続仮想化部４０４と、SR-IOV対応Ｉ／Ｏデバイス５の設定を記憶するブリッジメモリ４０５とを含む。
【００２６】
ネットワーク接続部４０１は、ネットワーク３のパケットにカプセル化されたPCIeパケットのデカプセル化を行う。また、ネットワーク接続部４０１は、PCIeパケットをネットワーク３のパケットにカプセル化してネットワーク３に送信する。
【００２７】
ブリッジメモリ４０５は、PF CFG REG５０１１を模擬する仮想PF CFG REG４０５１と、VF1 CFG REG ５０２１−１〜VFN CFG REG ５０２１−Ｎをそれぞれ模擬する仮想VF1 CFG REG ４０５２−１〜仮想VFN CFG REG ４０５２−Ｎと、接続仮想化部４０４によるSR-IOV対応Ｉ／Ｏデバイス５の設定を記憶するＩ／Ｏ設定記憶部４０５３とを含む。
【００２８】
接続仮想化部４０４は、図２に示すステートマシンに従って動作する。
【００２９】
起動初期状態ステートＳ１は、Ｉ／Ｏ仮想化ブリッジ４が起動されたときの最初のステートである。このとき、Ｉ／Ｏ仮想化ブリッジ４は、接続仮想化部４０４の動作を規定するパラメータを設定記憶媒体からリードする。そして、Ｉ／Ｏ仮想化ブリッジ４は、Ｉ／Ｏデバイス設定ステートＳ２に遷移する。
【００３０】
Ｉ／Ｏデバイス設定ステートＳ２では、接続仮想化部４０４は、システムマネージャ１０によって設定されたSR-IOV対応Ｉ／Ｏデバイス５のPF CFG REG５０１１にアクセスし、ＰＦ５０１とＶＦ５０２−１〜ＶＦ５０２−Ｎのアドレスの設定と、ＶＦ５０２−１〜ＶＦ５０２−Ｎの有効化を行う。
【００３１】
接続仮想化部４０４が行うアドレス設定を図３を参照して説明する。接続仮想化部４０４は、Ｉ／Ｏデバイスメモリ空間Ｍ１を作成する。接続仮想化部４０４は、空間Ｍ１において、ＰＦ５０１をＰＦマップ領域Ｍ１０１にマッピングする。また、接続仮想化部４０４は、ＶＦ５０２−１〜ＶＦ５０２−ＮをそれぞれＶＦ１マップ領域Ｍ１０２−１〜ＶＦＮマップ領域Ｍ１０２−Ｎにマッピングする。すなわち、接続仮想化部４０４は、仮想ファンクションおよび制御ファンクションにアドレスを設定する。このマップを設定するためのレジスタは、PF CFG REG５０１１に保持されている。接続仮想化部４０４は、ＰＦ５０１の設定値をＩ／Ｏ設定記憶部４０５３に記憶する。そして、接続仮想化部４０４は、システムマネージャ接続ステートＳ３に遷移する。
【００３２】
システムマネージャ接続ステートＳ３では、システムマネージャ１０によるＰＦ５０１へのアクセスを許可する。具体的には、接続仮想化部４０４は、ネットワーク接続部４０１に、ホストPCIeブリッジ１０４とネットワーク接続部４０１との間のコネクションを確立させ、システムマネージャ１０がＰＦ５０１にアクセスできるようにする。
【００３３】
システムマネージャ１０とSR-IOV対応Ｉ／Ｏデバイス５のコネクションが確立されると、システムマネージャ１０で動作するソフトウェアがSR-IOV対応Ｉ／Ｏデバイス５に対するコンフィグレーションアクセスを発行し、コンフィグレーションを行う。コンフィグレーションアクセスは、コンフィグレーションライトおよびコンフィグレーションリードのPCIeパケットによるアクセスである。システムマネージャ１０のコンフィグレーションアクセスは、パケット転送部４０２によって接続仮想化部４０４に転送される。
【００３４】
次に、接続仮想化部４０４は、仮想PF CFG REG４０５１に対してシステムマネージャ１０の設定をライトする。このアクセスによって、システムマネージャ１０は、ＰＦ５０１をシステムマネージャ物理メモリ空間Ｍ２のＰＦ仮想マップ領域Ｍ２０１にマッピングする。すなわち、仮想ファンクションを制御するための制御ファンクションのアドレスの設定を行う。また、接続仮想化部４０４は、システムマネージャ１０による仮想PF CFG REG４０５１に対するコンフィグレーションアクセスにおいて、ＶＦ５０２−１〜ＶＦ５０２−Ｎが有効化されていることを検出したら、ホスト接続可能ステートＳ４に遷移する。接続仮想化部４０４は、ＶＦ５０２−１〜ＶＦ５０２−Ｎのアドレス設定、またはアドレス設定と有効化との双方を検出すると、ホスト接続可能ステートＳ４に遷移してもよい。
【００３５】
ホスト接続可能ステートＳ４は、ホスト２−１〜ホスト２−ＮがそれぞれＶＦ５０２−１〜ＶＦ５０２−Ｎを使用可能になる状態である。以下、接続仮想化部４０４のホスト２−１に関する機能について説明するが、ホスト２−２〜ホスト２−Ｎの機能も同様に説明される。
【００３６】
接続仮想化部４０４は、ネットワーク接続部４０１とホストPCIeブリッジ２０４−１とのコネクションを確立し、ホスト２−１がＶＦ５０２−１と通信できるように、ネットワーク接続部４０１を制御する。コネクションが確立された後、ホスト２−１は、まず、VF1 CFG REG ５０２１−１に対するコンフィグレーションアクセスを発行し、ＶＦ５０２−１（ＶＦ１）のコンフィグレーションを行う。ホスト２−１によるコンフィグレーションアクセスは、パケット転送部４０２によって接続仮想化部４０４に転送される。接続仮想化部４０４は、仮想VF1 CFG REG ４０５２−１に対してホスト２−１の設定をライトする。この設定によって、図３に示すように、ホスト２−１は、ＶＦ５０２−１をホスト１物理メモリ空間Ｍ３−１のＶＦ１仮想マップ領域Ｍ３０１−１にマッピングする。すなわち、ホスト２−１は、仮想ファンクションに対してアドレスを設定する。その結果、ホスト２−１は、ＶＦ５０２−１に対するメモリアクセスが可能になる。また、ホスト２−１は、ＶＦ５０２−１を使用できるようになる。
【００３７】
ホスト接続可能ステートＳ４は、SR-IOV対応Ｉ／Ｏデバイス５をホスト２−１〜ホスト２−Ｎで共有するサービスを提供するための定常状態である。システムエラーやホストPCIeブリッジ１０４とネットワーク接続部４０１とのコネクション解除などのイベントが発生しない限り、接続仮想化部４０４は、このステートを維持する。接続仮想化部４０４は、ホストPCIeブリッジ１０４とネットワーク接続部４０１とのコネクションが解除されると、Ｉ／ＯデバイスリセットステートＳ５に遷移する。
【００３８】
Ｉ／ＯデバイスリセットステートＳ５では、接続仮想化部４０４は、ネットワーク接続部４０１とホスト２−１〜ホスト２−Ｎとの接続を解除する（接続を遮断する）ように、ネットワーク接続部４０１を制御する。また、接続仮想化部４０４は、SR-IOV対応Ｉ／Ｏデバイス５をリセットする。その後、接続仮想化部４０４は、Ｉ／Ｏデバイス設定ステータスＳ２に遷移し、再びSR-IOV対応Ｉ／Ｏデバイス５の設定から処理をやり直す。
【００３９】
アドレス変換部４０３は、システムマネージャ１０とＰＦ５０１との間で送受信されるPCIeパケットのヘッダに記載されたアドレスの変換を行う。また、アドレス変換部４０３は、ホスト２−１〜ホスト２−Ｎとそれぞれが使用するＶＦ５０２−１〜ＶＦ５０２−Ｎとの間で送受信されるPCIeパケットのヘッダに記載されたアドレスの変換を行う。例えば、図３に示すように、ＰＦ５０１はＩ／Ｏデバイスメモリ空間Ｍ１ではＰＦマップ領域Ｍ１０１にマッピングされ、また、システムマネージャ物理メモリ空間Ｍ２ではＰＦ仮想マップ領域Ｍ２０１にマッピングされている。その場合には、それらの２つのアドレス空間のマップ値の差分に対応するアドレス変換を行う。同様に、ＶＦ５０２−１はＩ／Ｏデバイスメモリ空間Ｍ１ではＶＦ１マップ領域Ｍ１０２−１にマッピングされ、また、ホスト１物理メモリ空間Ｍ３−１ではＶＦ１仮想マップ領域Ｍ３０１−１にマッピングされている。その場合には、それらの２つのアドレス空間のアドレス変換を行う。アドレス変換部４０３は、ＶＦ５０２−２〜ＶＦ５０２−Ｎについても同様にアドレス変換を行う。
【００４０】
アドレス変換部４０３は、通過するPCIeパケットのアドレス変換を行うときに、ブリッジメモリ４０５に記憶されている、Ｉ／Ｏデバイスメモリ空間Ｍ１とシステムマネージャ物理メモリ空間Ｍ２とホスト１物理メモリ空間Ｍ３−１〜ホストＮ物理メモリ空間Ｍ３−Ｎとの情報を参照する。それらの情報は、仮想PF CFG REG４０５１と、仮想VF1 CFG REG ４０５２−１〜仮想VFN CFG REG ４０５２−Ｎと、Ｉ／Ｏ設定記憶部４０５３とに記憶された情報から導かれる。
【００４１】
上記の構成にもとづいて、本実施形態のＩ／Ｏデバイス共有システムは、以下のように動作する。
【００４２】
まず、図１と図４とを参照して、システムマネージャ１０がＰＦ５０１にコンフィグレーションアクセスを発行する場合の動作を説明する。
【００４３】
コンフィグレーションアクセスは、コンフィグレーションライトリクエスト、またはコンフィグレーションリードリクエストである。システムマネージャ１０で動作するＰＦ設定ソフトウェア１０５がＰＦ５０１に対しコンフィグレーションアクセスを発行すると（ステップＡ１）、ルートコンプレックス１０２でPCIeパケットが作成される。PCIeパケットは、ホストPCIeブリッジ１０４に送信される。
【００４４】
ホストPCIeブリッジ１０４は、PCIeパケットをネットワーク３のパケットにカプセル化して、ネットワーク３に送信する（ステップＡ２）。ネットワーク接続部４０１は、PCIeパケットがカプセル化されたパケットを受信する。ネットワーク接続部４０１は、ネットワークパケットをデカプセル化して、パケット転送部４０２に送信する（ステップＡ３）。パケット転送部４０２は、PCIeパケットがシステムマネージャ１０によるコンフィグレーションアクセスであることを確認し、接続仮想化部４０４に転送する（ステップＡ４）。接続仮想化部４０４は、受信したコンフィグレーションアクセスに従って、リクエストがライトである場合は仮想PF CFG REG４０５１に設定値をライトする。接続仮想化部４０４は、リクエストがリードである場合は仮想PF CFG REG４０５１から指定された設定値をリードしてシステムマネージャ１０に返信する（ステップＡ５）。
【００４５】
次に、図１と図５とを参照してシステムマネージャ１０がＰＦ５０１がメモリマッピングされた領域に対してメモリアクセスを行う場合の動作を説明する。
【００４６】
メモリアクセスは、メモリライトリクエスト、またはメモリリードリクエストである。システムマネージャ１０で動作するＰＦ設定ソフトウェア１０５がＰＦ５０１に対しメモリアクセスを発行すると（ステップＢ１）、ルートコンプレックス１０２でＰＦ仮想マップ領域Ｍ２０１宛てのPCIeパケットが作成される。PCIeパケットは、ホストPCIeブリッジ１０４に送信される。ホストPCIeブリッジ１０４は、PCIeパケットをネットワーク３のパケットにカプセル化し、ネットワーク３に送信する（ステップＢ２）。ネットワーク接続部４０１は、PCIeパケットをカプセル化したネットワークパケットを受信し、PCIeパケットをデカプセル化して、パケット転送部４０２に送信する（ステップＢ３）。
【００４７】
パケット転送部４０２は、PCIeパケットがシステムマネージャ１０によるメモリアクセスであることを確認し、PCIeパケットをアドレス変換部４０３に転送する（ステップＢ４）。
【００４８】
アドレス変換部４０３は、ブリッジメモリ４０５において、ＰＦ仮想マップ領域Ｍ２０１の設定値を保持する仮想PF CFG REG４０５１に記憶された値と、ＰＦマップ領域Ｍ１０１の設定値を保持するＩ／Ｏ設定記憶部４０５３に記憶された値とを用いることによって、PCIeパケットの宛先アドレスをＰＦ仮想マップ領域Ｍ２０１からＰＦマップ領域Ｍ１０１に変換する。そして、アドレス変換部４０３は、PCIeパケットをSR-IOV対応Ｉ／Ｏデバイス５に送信する（ステップＢ５）。この結果、ＰＦ５０１は、システムマネージャ１０が発行したメモリアクセスを受信する。ＰＦ５０１は、メモリアクセスがメモリライトリクエストであれば指定されたデータをライトし、メモリリードリクエストであれば、指定されたデータをリードしシステムマネージャ１０に返信する（ステップＢ６）。
【００４９】
図６は、本発明によるＩ／Ｏデバイス共有システムの主要部を示すブロック図である。図６に示すように、Ｉ／Ｏデバイス共有システムは、複数のホスト２０−１〜２０−Ｎ（例えば、図１に示すホスト２−１〜２−Ｎ）によって共有されるＩ／Ｏデバイス５０（例えば、図１に示すSR-IOV対応Ｉ／Ｏデバイス５）と、Ｉ／Ｏデバイス５０を設定するシステムマネージャ１００（例えば、図１に示すシステムマネージャ１０）と、Ｉ／Ｏデバイス５０を仮想化する仮想化ブリッジ４０（例えば、図１に示すＩ／Ｏ仮想化ブリッジ４）と、Ｉ／Ｏデバイス５０と、システムマネージャ１００と、複数のホスト２０−１〜２０−Ｎと、仮想化ブリッジ４０とを接続するネットワーク３とを含み、仮想化ブリッジ４０が、システムマネージャ１００によって設定されたＩ／Ｏデバイス５０が備える複数の仮想ファンクションのアドレス設定もしくは仮想ファンクションの有効化、またはアドレス設定と有効化とを検出して、各ホスト２０−１〜２０−Ｎによる各仮想ファンクションへのアクセスを許可する接続仮想化部４４（例えば、図１に示す接続仮想化部４０４）を備える。
【００５０】
また、仮想化ブリッジ４０は、各ホスト２０−１〜２０−Ｎと各仮想ファンクションとの間で送受信されるＩ／Ｏバスのパケットに記載されたアドレスに関して、各ホスト２０−１〜２０−Ｎが各仮想ファンクションに設定したアドレスと各仮想ファンクションに実際に設定されたアドレスとを参照してアドレス変換を行うアドレス変換部４３をさらに備える。
【００５１】
以上に説明したように、本実施形態では、Ｉ／Ｏデバイスに共通するPF CFG REGの制御をＩ／Ｏ仮想化ブリッジが行い、個別のＩ／Ｏデバイスに依存するＰＦのメモリマップ領域の制御を、ネットワークでＩ／Ｏデバイスに接続されるシステムマネージャが、Ｉ／Ｏデバイスの製造者が提供するＰＦ設定ソフトウェアを用いて行うように構成されている。よって、Ｉ／Ｏ仮想化ブリッジによるＩ／Ｏデバイスの管理を単純化できる。また、Ｉ／Ｏ仮想化ブリッジのＩ／Ｏデバイスの管理に係わる部分の構成を単純化できる。
【００５２】
なお、本実施形態では、Ｉ／Ｏバスとして、PCIeに準拠するバスの規格にもとづくバスが用いられたが、今後PCIeを拡張して策定される新たなＩ／Ｏバス規格や、類似の動作を行う他のＩ／Ｏバス規格にもとづくバスに対しても本発明を適用できる。
【００５３】
また、本実施の形態では、ホスト２−１〜ホスト２−ＮとSR-IOV対応Ｉ／Ｏデバイス５のＶＦ５０２−１〜ＶＦ５０２−Ｎの数が同じ場合が示されたが、それらは必ずしも同じでなくてもよい。例えばＶＦの数の方が多く、各ホストはそれらのＶＦのいずれか１つを使用する形態であってもよい。
【００５４】
また、本実施形態におけるSR-IOV対応Ｉ／Ｏデバイス５は、ネットワークインタフェースカード、ストレージデバイス、ストレージネットワークカード、ＵＳＢコントローラ、組み込み装置用Ｉ／Ｏデバイスに代表される、PCIe SR-IOV規格に対応する全てのデバイスである。
【００５５】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００５６】
この出願は、２０１２年４月６日に出願された日本特許出願２０１２−０８７８８８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００５７】
本発明を、コンピュータシステムにおいて単一のＩ／Ｏデバイスを複数のコンピュータから共有するといった用途に適用できる。また、組み込みシステムにおいて単一のＩ／Ｏデバイスを複数の装置から共有するといった用途に適用できる。
【符号の説明】
【００５８】
２−１〜２−Ｎ    ホスト
３        ネットワーク
４        Ｉ／Ｏ仮想化ブリッジ
５        SR-IOV対応Ｉ／Ｏデバイス
１０      システムマネージャ
２０−１〜２０−Ｎ    ホスト
４０      仮想化ブリッジ
４３      アドレス変換部
４４      接続仮想化部
５０      Ｉ／Ｏデバイス
１００    システムマネージャ
１０１    ＣＰＵ
１０２    ルートコンプレックス
１０３    メモリ
１０４    ホストPCIeブリッジ
１０５    ＰＦ設定ソフトウェア
２０１−１〜２０１−Ｎ    ＣＰＵ
２０２−１〜２０１−Ｎ    ルートコンプレックス
２０３−１〜２０３−Ｎ    メモリ
２０４−１〜２０４−Ｎ    ホストPCIeブリッジ
４０１        ネットワーク接続部
４０２        パケット転送部
４０３        アドレス変換部
４０４        接続仮想化部
４０５        ブリッジメモリ
５０１        ＰＦ
５０２−１〜５０１−Ｎ    ＶＦ
６０１        ネットワーク接続部
６０２        パケット転送部
６０３        アドレス変換部
６０４         接続仮想化部
【図１】
2013150792.tif 000003
【図２】
2013150792.tif 000004
【図３】
2013150792.tif 000005
【図４】
2013150792.tif 000006
【図５】
2013150792.tif 000007
【図６】
2013150792.tif 000008
【図７】
2013150792.tif 000009
【国際調査報告】
2013150792.tif 000010
2013150792.tif 000011
2013150792.tif 000012
2013150792.tif 000013