(57)【要約】【課題】単一のホストで管理されるＩ／Ｏデバイスに改変を加えることなく、Ｉ／Ｏデバイスが複数のホストから共有されるシステムを提供することである。【解決手段】  中継システムは、デバイスと、デバイスを設定する設定手段と、設定手段と前記デバイスとを接続する中継手段を含む。中継手段は、設定手段のデバイスに対する設定要求に含まれる設定情報を保存手段に保持し、保存手段に保持した設定情報を元にデバイスを設定する。【選択図】  図１
2011014023.tif 000002
【特許請求の範囲】
【請求項１】
デバイスと、
前記デバイスを設定する設定手段と、
前記設定手段と前記デバイスとを接続し、前記設定手段の前記デバイスに対する設定要求に含まれる設定情報を保存手段に保持し、前記保存手段に保持した前記設定情報を元に前記デバイスを設定する中継手段と
を含む、中継システム。
【請求項２】
前記中継手段は、前記デバイスを設定しないことを特徴とする請求項１に記載の中継システム。
【請求項３】
前記中継手段は、前記設定手段からの参照要求に対して、前記保存手段に保持した前記設定情報を元に、前記設定手段に応答することを特徴とする、請求項１又は２に記載の中継システム。
【請求項４】
前記中継手段は、前記保存手段に保持した前記設定情報を元に、前記デバイスの入力仕様に従ったフォーマットの設定指示を生成し、前記デバイスに対して発行することを特徴とする、請求項１に記載の中継システム。
【請求項５】
前記中継手段は、前記デバイスが発行した通知を受信して前記保存手段に保持し、
（１）前記デバイス及び前記設定手段の状態を維持する、
（２）前記通知を元に通知情報を生成し、前記設定手段に発行する、
（３）前記通知を元に前記デバイスを設定する、
の何れか１つの処理を実行することを特徴とする、請求項１乃至４の何れか１項に記載の中継システム。
【請求項６】
前記複数の設定手段が前記デバイスを共有し、
前記複数の設定手段がネットワーク接続手段を介して接続され、前記設定要求がカプセル化されたネットワークパケットを指定されたアドレスに配送するネットワーク手段と、をさらに備え、
前記中継手段は、前記デバイスを前記ネットワーク手段に接続し、前記複数の設定手段による前記デバイスに対する設定情報を仲裁することを特徴とする請求項１乃至５の何れか１項に記載の中継システム。
【請求項７】
前記中継手段は、
前記設定要求をネットワークパケットにカプセル化し、ネットワークパケットから前記設定要求をデカプセル化する手段と、
前記複数の設定手段から前記デバイスに対して発行された前記設定要求に含まれる設定情報を、前記保存手段に保持し、前記デバイスに対して前記設定情報を仲裁する手段と、
前記設定要求のアドレスと前記デバイスが発行した通知のアドレスと前記設定手段からの参照要求に対する応答のアドレスの少なくとも１つを変換する手段とを備えたことを特徴とする請求項６に記載の中継システム。
【請求項８】
前記中継手段は、前記デバイスが前記複数の設定手段に対してサービスを開始する前に、前記デバイスの識別情報を取得し、前記識別情報を前記保存手段に保持することを特徴とする、請求項６又は７に記載の中継システム。
【請求項９】
前記中継手段は、前記複数の設定手段から前記保存手段に保持した前記設定情報に含まれる制限値の範囲を元にして、前記デバイスを設定することを特徴とする、請求項６又は７に記載の中継システム。
【請求項１０】
前記中継手段は、前記複数の設定手段の電力制御の電力制限値を前記保存手段に保持し、前記設定手段からの参照要求に対して、前記デバイスが電力制御されているような返却値を前記設定手段に返すことを特徴とする、請求項６又は７に記載の中継システム。
【請求項１１】
前記中継手段は、前記設定手段が発行したデバイスのリセット要求を、前記デバイスにおいて前記設定手段が割当てられた機能に限定したリセットに変換することを特徴とする、請求項６又は７に記載の中継システム。
【請求項１２】
前記デバイスは、ＰＣＩエクスプレス（ＰＣＩｅ）が定めるシングルルート入出力仮想化及び共有化仕様（Ｓｉｎｇｌｅ−Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ：ＳＲ−ＩＯＶ）に準拠し、仮想関数（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）を単位として前記複数の設定手段のそれぞれに入出力（Ｉ／Ｏ：ｉｎｐｕｔ  ａｎｄ  ｏｕｔｐｕｔ）資源を割当てることによって、前記複数の設定手段から前記デバイスを共有することを特徴とする、請求項１乃至７の何れか１項に記載の中継システム。
【請求項１３】
デバイスと、前記デバイスを設定する設定手段とを接続する中継手段であって、
前記設定手段の前記デバイスに対する設定要求に含まれる設定情報を保持する保存手段と、
前記保存手段に保持した前記設定情報を元に前記デバイスを設定する制御手段と
を含む、中継手段。
【請求項１４】
前記制御手段は、前記デバイスを設定しないことを特徴とする請求項１３に記載の中継手段。
【請求項１５】
前記制御手段は、前記設定手段からの参照要求に対して、前記保存手段に保持した前記設定情報を元に、前記設定手段に応答することを特徴とする、請求項１３又は１４に記載の中継手段。
【請求項１６】
前記制御手段は、前記保存手段に保持した前記設定情報を元に、前記デバイスの入力仕様に従ったフォーマットの設定指示を生成し、前記デバイスに対して発行することを特徴とする、請求項１３に記載の中継手段。
【請求項１７】
前記制御手段は、前記デバイスが発行した通知を受信して前記保存手段に保持し、
（１）前記デバイス及び前記設定手段の状態を維持する、
（２）前記通知を元に通知情報を生成し、前記設定手段に発行する、
（３）前記通知を元に前記デバイスを設定する、
の何れか１つの処理を実行することを特徴とする、請求項１３乃至１６の何れか１項に記載の中継手段。
【請求項１８】
前記制御手段は、前記複数の設定手段が共有する前記デバイスを、前記複数の設定手段がネットワーク接続手段を介して接続され前記設定要求がカプセル化されたネットワークパケットを指定されたアドレスに配送するネットワーク手段に接続し、前記複数の設定手段による前記デバイスに対する設定情報を仲裁することを特徴とする請求項１３乃至１７の何れか１項に記載の中継手段。
【請求項１９】
前記設定要求をネットワークパケットにカプセル化し、ネットワークパケットから前記設定要求をデカプセル化する手段と、
前記複数の設定手段から前記デバイスに対して発行された設定要求に含まれる設定情報を前記保存手段に保持し、前記デバイスに対して前記設定情報を仲裁する手段と、
前記設定要求のアドレスと前記デバイスが発行した通知のアドレスと前記設定手段からの参照要求に対する応答のアドレスの少なくとも１つを変換する手段とをさらに備えたことを特徴とする請求項１８に記載の中継手段。
【請求項２０】
前記デバイスが前記複数の設定手段に対してサービスを開始する前に、前記デバイスの識別情報を取得し、前記識別情報を前記保存手段に保持することを特徴とする、請求項１８又は１９に記載の中継手段。
【請求項２１】
前記複数の設定手段から前記保存手段に保持した前記設定情報に含まれる制限値の範囲を元にして、前記デバイスを設定することを特徴とする、請求項１８又は１９に記載の中継手段。
【請求項２２】
前記複数の設定手段の電力制御の電力制限値を前記保存手段に保持し、前記設定手段からの参照要求に対して、前記デバイスが電力制御されているような返却値を前記設定手段に返すことを特徴とする、請求項１８又は１９に記載の中継手段。
【請求項２３】
前記設定手段が発行したデバイスのリセット要求を、前記デバイスにおいて前記設定手段が割当てられた機能に限定したリセットに変換することを特徴とする、請求項１８又は１９に記載の中継手段。
【請求項２４】
前記デバイスは、ＰＣＩエクスプレス（ＰＣＩｅ）が定めるシングルルート入出力仮想化及び共有化仕様（Ｓｉｎｇｌｅ−Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ：ＳＲ−ＩＯＶ）に準拠し、仮想関数（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）を単位として前記複数の設定手段のそれぞれに入出力（Ｉ／Ｏ：ｉｎｐｕｔ  ａｎｄ  ｏｕｔｐｕｔ）資源を割当てることによって、前記複数の設定手段から前記デバイスを共有することを特徴とする、請求項１３乃至１９の何れか１項に記載の中継手段。
【請求項２５】
デバイスと、前記デバイスを設定する設定手段とを中継する中継方法であって、
前記設定手段の前記デバイスに対する設定要求に含まれる設定情報を保持し、前記保持した前記設定情報を元に前記デバイスを設定することを特徴とする中継方法。
【請求項２６】
前記デバイスを設定しないことを特徴とする請求項２５に記載の中継方法。
【請求項２７】
前記設定手段からの参照要求に対して、前記保持した前記設定情報を元に、前記設定手段に応答することを特徴とする、請求項２５又は２６に記載の中継方法。
【請求項２８】
前記保持した前記設定情報を元に、前記デバイスの入力仕様に従ったフォーマットの設定指示を生成し、前記デバイスに対して発行することを特徴とする、請求項２５に記載の中継方法。
【請求項２９】
前記デバイスが発行した通知を受信して保持し、
（１）前記デバイス及び前記設定手段の状態を維持する
（２）前記通知を元に通知情報を生成し、前記設定手段に発行する、
（３）前記通知を元に前記デバイスを設定する、
の何れか１つの処理を実行することを特徴とする、請求項２５乃至２８の何れか１項に記載の中継方法。
【請求項３０】
前記複数の設定手段が共有する前記デバイスを、前記複数の設定手段がネットワーク接続手段を介して接続され前記設定要求がカプセル化されたネットワークパケットを指定されたアドレスに配送するネットワーク手段に接続し、前記複数の設定手段による前記デバイスに対する設定情報を仲裁することを特徴とする請求項２５乃至２９の何れか１項に記載の中継方法。
【請求項３１】
前記設定要求をネットワークパケットにカプセル化し、ネットワークパケットから前記設定要求をデカプセル化するステップと、
前記複数の設定手段から前記デバイスに対して発行された設定情報を保持し、前記デバイスに対して前記設定情報を仲裁するステップと、
前記設定要求のアドレスと前記デバイスが発行した通知のアドレスと前記設定手段からの参照要求に対する応答のアドレスの少なくとも１つを変換するステップとをさらに備えたことを特徴とする請求項３０に記載の中継方法。
【請求項３２】
前記デバイスが前記複数の設定手段に対してサービスを開始する前に、前記デバイスの識別情報を取得し、前記識別情報を保持することを特徴とする、請求項３０又は３１に記載の中継方法。
【請求項３３】
前記複数の設定手段から保持した前記設定情報に含まれる制限値の範囲を元にして、前記デバイスを設定することを特徴とする、請求項３０又は３１に記載の中継方法。
【請求項３４】
前記複数の設定手段の電力制御の電力制限値を保持し、前記設定手段からの参照要求に対して、前記デバイスが電力制御されているような返却値を前記設定手段に返すことを特徴とする、請求項３０又は３１に記載の中継方法。
【請求項３５】
前記設定手段が発行したデバイスのリセット要求を、前記デバイスにおいて前記設定手段が割当てられた機能に限定したリセットに変換することを特徴とする、請求項３０又は３１に記載の中継方法。
【請求項３６】
前記デバイスは、ＰＣＩエクスプレス（ＰＣＩｅ）が定めるシングルルート入出力仮想化及び共有化仕様（Ｓｉｎｇｌｅ−Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ：ＳＲ−ＩＯＶ）に準拠し、仮想関数（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）を単位として前記複数の設定手段のそれぞれに入出力（Ｉ／Ｏ：ｉｎｐｕｔ  ａｎｄ  ｏｕｔｐｕｔ）資源を割当てることによって、前記複数の設定手段から前記デバイスを共有することを特徴とする、請求項２５乃至３１の何れか１項に記載の中継方法。
【請求項３７】
デバイスと、前記デバイスを設定する設定手段とを中継する中継プログラムであって、
前記設定手段の前記デバイスに対する設定要求に含まれる設定情報を保持する保持処理と、
前記保持した前記設定情報を元に前記デバイスを設定するデバイス設定処理と
をコンピュータに行わせることを特徴とする中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は中継手段、中継システム、中継方法およびプログラムに関し、特に入出力（Ｉ／Ｏ）デバイスを複数のコンピュータ間で共有する入出力（Ｉ／Ｏ）システムおよび入出力（Ｉ／Ｏ）制御方法に関する。
【背景技術】
【０００２】
現在、コンピュータ内部の各パーツ間を接続する、入出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）に関する標準のバス規格として、ペリフェラル  コンポネント  インタコネクト（ＰＣＩ）が広く使用されている。
【０００３】
ハードウェア資源の効率的な利用を目的として、システムイメージ（ＳＩ）の多重化を可能にしてこのＰＣＩハードウェア資源を共有するよう拡張した次世代の規格が、シングルルート入出力仮想化及び共有化仕様（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ：ＳＲ−ＩＯＶ）により、ＰＣＩエクスプレス（ＰＣＩｅ）として規定されている。
【０００４】
ＰＣＩｅにおいては、ハードウェアとシステムイメージ（ＳＩ）との間に仮想化仲裁（Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｉｎｔｅｒｍｅｄｉａｒｙ：ＶＩ）と呼ばれるソフトウェアが仲介する。これにより、ハードウェア側からシステムイメージ（ＳＩ）が仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）とみなされる。
【０００５】
このようなシステムにおいて、プラットフォーム資源のオーバヘッドを削減するためのシステム構成が、非特許文献１に提案されている。
【０００６】
図２２は、このような入出力（Ｉ／Ｏ）システム構成の一例を示すブロック図である。
【０００７】
図２２において、非特許文献１に記載のＩ／Ｏシステム９００は、ホスト９とＩ／Ｏデバイス５からなる。Ｉ／Ｏデバイス５は、ＰＣＩｅが定めるＳＲ−ＩＯＶに対応する仕様である。ホスト９は、演算処理を行うＣＰＵ９０３と、プログラムやデータを格納するメモリ９０５と、ブリッジ９０４とを含む。ブリッジ９０４は、Ｉ／Ｏデバイス５と、メモリ９０５と、ＣＰＵ９０３を相互に接続する。ホスト９は、さらに、ＣＰＵ９０３上で動作するＮ個の仮想マシン（ＶＭ）９０２−１〜９０２−Ｎ、及び、これらのＮ個の仮想マシンを管理する、管理仮想マシン（管理ＶＭ）９０１とを含む。
【０００８】
Ｉ／Ｏデバイス５は、単一のホスト内で仮想マシン９０２−１〜９０２−ＮがＩ／Ｏデバイス５を共有する際、仮想マシン９０２−１〜９０２−Ｎが直接アクセスするインタフェース５０３を備える。直接アクセスすることにより、Ｉ／Ｏデバイス５に関するソフトウェアによる共有処理を省くことができ、共有に関するオーバヘッドが削減される。
【０００９】
Ｉ／Ｏデバイス５は、Ｉ／Ｏデバイス５の全体の設定を管理仮想マシン９０１から受け付ける物理関数（Ｐｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ：ＰＦ）５０１と、仮想マシン９０２−１〜９０２−Ｎに個別に割当てられて、仮想マシン９０２−１〜９０２−Ｎのそれぞれの設定を受け付ける仮想関数（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ：ＶＦ）５０２−１〜５０２−Ｎとからなる。ここで、仮想関数５０２−１〜５０２−Ｎは、仮想マシン９０２−１〜９０２−Ｎにそれぞれ割当てられている。物理関数５０１と仮想関数５０２−１〜５０２−Ｎのそれぞれは、ＰＣＩｅに基づいて割当てられるＩＤ番号のサブフィールドであるファンクション番号で区別される。物理関数５０１と仮想関数５０２−１〜５０２−Ｎは、それぞれ、ＰＣＩｅに準拠したコンフィグレーション（ＣＦＧ）レジスタである物理関数コンフィグレーション（ＰＦ  ＣＦＧ）レジスタ５０１１と、仮想関数コンフィグレーション（ＶＦ  ＣＦＧ）レジスタ５０２１−１〜５０２１−Ｎを備える。
【００１０】
ＰＦ  ＣＦＧレジスタ５０１１は、管理仮想マシン９０１からＩ／Ｏデバイス５に関する設定を受け付ける。また、ＶＦ  ＣＦＧレジスタ５０２１−１〜５０２１−Ｎは、それぞれ仮想マシン９０２−１〜９０２−ＮからＩ／Ｏデバイス５に関する設定を受け付ける。仮想マシン９０２−１〜９０２−Ｎは、それぞれに割当てられた仮想関数５０２−１〜５０２−Ｎにアクセスし、Ｉ／Ｏ要求を発行する。これにより、Ｉ／Ｏデバイス５の内部でＩ／Ｏ機能の使用に関する仲裁が行われる。すなわち、Ｉ／Ｏデバイス５の機能が仮想関数５０２−１〜５０２−Ｎを通して仮想マシン９０２−１〜９０２−Ｎの間で共有される。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】ＰＣＩ−ＳＩＧ，  Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｒｅｖｉｓｉｏｎ  １．０，  ２００７年９月１１日，  ｐｐ．１３−１５
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、このようなＩ／Ｏデバイスは、単一ホスト内で管理され、単一ホスト内の複数の仮想マシンの間で共有されることを想定して設計されている。このようなＩ／Ｏデバイスを複数のホストにより共有する使用形態の要請が近年増えているが、このようなシステムでは、複数のホストからの設定要求が、Ｉ／Ｏデバイスに対して発せられる。この際に、これらの設定要求が競合すると、Ｉ／Ｏデバイスの設定に障害が発生し、Ｉ／Ｏデバイスの制御ができなくなる。このため、この設定要求の競合は、このようなＩ／Ｏデバイスの複数のホストによる共有には大きな障壁となっている。
【００１３】
さらに、ホスト上で動作するソフトウェアも、複数のホストがＩ／Ｏデバイスを共有する場合には、Ｉ／Ｏデバイスの設定要求の競合などの障害には対応できず、このような使用形態の実現の障壁となっている。
【００１４】
これらの問題を解決するためには、このようなＩ／Ｏデバイスの構成と、Ｉ／Ｏデバイスを制御するホスト側のソフトウェアを、複数のホストがＩ／Ｏデバイスを共有するような変更が必要となる。しかし、このような変更作業には、Ｉ／Ｏデバイスの構成要素のそれぞれを複数のホストから共有されるように機能を変更・追加する必要があり、膨大な作業を要する。また、Ｉ／Ｏデバイスの設計時から、複数のホストから共有されるように機能を拡充しておくことは可能であるが、Ｉ／Ｏデバイスは通常、単一のホスト内で管理される使用の様態が殆どであり、複数ホストの共有の機能の使用は通常想定されない。このため、Ｉ／Ｏデバイスのコストを引き上げるという問題がある。
【００１５】
従って、通常単一のホストで管理されているＩ／Ｏデバイスを、必要に応じて複数のホストから共有されるようにするため、Ｉ／Ｏデバイスの外部で、複数のホストからＩ／Ｏデバイスへの設定要求を仲裁する処理を行うシステムを構築することが必要である。
【００１６】
本発明の目的は、単一のホストで管理されるＩ／Ｏデバイスに改変を加えることなく、Ｉ／Ｏデバイスが複数のホストから共有されるシステムを提供することである。
【課題を解決するための手段】
【００１７】
本発明の中継システムは、デバイスと、デバイスを設定する設定手段と、設定手段とデバイスとを接続する中継手段とを含む中継システムであって、中継手段は設定手段のデバイスに対する設定要求に含まれる設定情報を保存手段に保持し、保存手段に保持した設定情報を元にデバイスを設定することを特徴とする。
【００１８】
本発明の中継手段は、デバイスと、デバイスを設定する設定手段とを接続する中継手段であって、設定手段のデバイスに対する設定要求に含まれる設定情報を保持する保存手段と、保存手段に保持した設定情報を元にデバイスを設定する制御手段とを含むことを特徴とする。
【００１９】
本発明の中継方法は、デバイスと、デバイスを設定する設定手段とを中継する中継方法であって、設定手段のデバイスに対する設定要求に含まれる設定情報を保持し、保持した設定情報を元にデバイスを設定することを特徴とする。
【００２０】
本発明の中継プログラムは、デバイスと、デバイスを設定する設定手段とを中継する中継プログラムであって、設定手段のデバイスに対する設定要求に含まれる設定情報を保持する保持処理と、保持した設定情報を元にデバイスを設定するデバイス設定処理とをコンピュータに行わせることを特徴とする。
【発明の効果】
【００２１】
本発明は単一のホスト内で管理されるＩ／Ｏデバイスを複数のホストにより共有されるシステムに関する。本発明によれば、ホストに不要な処理を実行させることなく、Ｉ／Ｏデバイスの状態に応じた最適な設定が可能になる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施形態の構成を示すブロック図と流れ図である。
【図２】本発明の第１の実施形態の動作を示す流れ図である。
【図３】本発明の第１の実施形態の動作を示す流れ図である。
【図４】本発明の第２の実施形態の構成を示すブロック図である。
【図５】本発明の第２の実施形態におけるネットワーク処理部の構成を示すブロック図である。
【図６】本発明の第２の実施形態におけるＩ／Ｏパケット転送部の構成を示すブロック図である。
【図７】本発明の第２の実施形態におけるＩ／Ｏ仮想化部の構成を示すブロック図である。
【図８】本発明の第２の実施形態におけるアドレス変換部の構成を示すブロック図である。
【図９】本発明の第２の実施形態の動作を示す流れ図である。
【図１０】本発明の第２の実施形態の動作を示す流れ図である。
【図１１】本発明の第２の実施形態の動作を示す流れ図である。
【図１２】本発明の第２の実施形態の動作を示す流れ図である。
【図１３】本発明の第３の実施形態の構成を示すブロック図である。
【図１４】本発明の第３の実施形態におけるＩ／Ｏ仮想化部の構成を示すブロック図である。
【図１５】本発明の第３の実施形態の動作を示す流れ図である。
【図１６】本発明の第４の実施形態の構成を示すブロック図である。
【図１７】本発明の第４の実施形態におけるＩ／Ｏ仮想化部の構成を示すブロック図である。
【図１８】本発明の第４の実施形態の動作を示す流れ図である。
【図１９】本発明の第５の実施形態におけるＩ／Ｏ仮想化ブリッジの構成を示すブロック図である。
【図２０】本発明の第５の実施形態におけるＩ／Ｏ仮想化部の構成を示すブロック図である。
【図２１】本発明の第５の実施形態の動作を示す流れ図である。
【図２２】関連技術を説明するための図である。
【発明を実施するための形態】
【００２３】
（第１の実施形態）
次に、発明を実施するための形態について、図面を参照して、詳細に説明する。
【００２４】
本発明の第１の実施形態による中継システムについて、図面を参照して詳細に説明する。図１は本発明の実施形態による中継システムの構成を示すブロック図である。
【００２５】
図１を参照すると、本発明の第１の実施形態による中継システム１０００は、設定手段１００１と、設定手段１００１が設定しようとするデバイス１００２と、設定手段１００１とデバイス１００２を接続する中継手段１００３とを含む。
【００２６】
中継手段１００１は、制御手段１００４と、記憶手段１００５とを含む。
【００２７】
設定手段１００１は、デバイス１００２に対して設定要求を送信する。中継手段１００３は、設定手段１００１が発行した設定要求を受信し、制御手段１００４により設定要求を処理する。設定要求は設定情報を含む。ここで、設定情報は、例えば、デバイスに対して何らかの状態を設定するための情報である。
【００２８】
設定手段１００１はまた、参照要求をデバイス１００２に対して送信し、デバイス１００２は、受信した参照要求に対して応答を返す。
【００２９】
本発明の第１の実施形態による中継手段１００３は、設定手段１００１が発信した設定情報を受信し、また、設定手段１００１が発信した参照要求を受信する。さらに、中継手段１００３は、設定手段１００１に対して、デバイス１００２が設定手段１００１に返す応答と同等の応答を設定手段１００１に返す。
【００３０】
さらにまた、中継手段１００３は、デバイス１００２の設定に関する情報を用いてデバイス１００２を設定する。或は、中継手段１００３は、設定手段１００１がデバイス１００２に対して発行する設定要求と同等の設定指示を、デバイス１００２に対して発行してもよい。
【００３１】
中継手段１００３が備える制御手段１００４は、設定手段１００１が発行した設定要求を受信して、設定要求に含まれる設定情報を記憶手段１００５に保持することができる。また、記憶手段１００５に保持した設定情報を元に、デバイス１００２に設定指示を発行することができる。
【００３２】
次に、図１乃至３を参照して、本発明を実施するための第１の実施形態における中継システム１０００の動作を説明する。
【００３３】
設定手段１００１は、デバイス１００２宛に信号を発行する（図２のステップＳ１０１）。
【００３４】
設定手段１００１が発行した信号がデバイス１００２に対する設定要求であれば（ステップＳ１０２のＹＥＳ）、中継手段１００３は、設定要求を受け、制御手段１００４により設定要求に含まれる設定情報を記憶手段１００５に保持する（ステップＳ１０３）。
【００３５】
設定手段１００１が発行した信号が、デバイス１００２への参照要求であれば（ステップＳ１０２のＮＯ）、制御手段１００４は記憶手段１００５に保持した設定情報を元に、設定手段１００１に応答を返す（ステップＳ１０４）。設定手段１００１への応答は、例えば、デバイス１００２の実際の設定状態にかかわらず、デバイス１００２が設定手段１００１の発行した設定要求の通りに設定されている、という内容を含んでも良い。
【００３６】
制御手段１００４は、デバイス１００２を設定する場合（ステップＳ１０５のＹＥＳ）は、記憶手段１００５の保持した設定情報を元に設定に関する情報を生成し、この設定に関する情報に基いてデバイス１００２を設定する（ステップＳ１０６）。また、デバイス１００２の入力の仕様によっては、設定手段１００１がデバイス１００２に対して発行する設定要求と同等の設定指示を、中継手段１００３がデバイス１００２に対して発行することができる。この場合、制御手段１００４は、デバイス１００２の設定に関する情報を含む設定指示を、設定手段１００１が発行する設定要求のフォーマットに変換して、デバイス１００２に対して発行する。
【００３７】
また、上述のデバイス１００２の設定処理によりデバイス１００２に問題が生じた場合（図３のステップＳ１０７のＹＥＳ）は、デバイス１００２から設定手段１００１に宛てた通知を中継手段１００３が受信する（ステップＳ１０８）。
【００３８】
中継手段１００３の制御手段１００４は通知を受けて、この通知を制御する。すなわち、この通知を破棄して放置する（ステップＳ１１０）か、デバイスを再設定するかを判断する（ステップＳ１０９）。
【００３９】
また、制御手段１００３は、デバイス１００２を制御手段１００３により再設定する（ステップＳ１１１）か、デバイス１００２からの通知を設定手段１００１に送信してデバイス１００２の再設定を要求するか（ステップＳ１１２）を判断する（ステップＳ１１３）。なお、デバイス１００２の再設定は、問題が生じる設定要求を受信する前の状態に戻してもよい。
【００４０】
第１の実施形態において、中継手段１００３は、設定手段１００１がデバイス１００２に対して発行した設定要求を元に設定情報を記憶手段１００５に保持する。中継手段１００３は、この設定情報に基いて、デバイス１００２の設定を制御する。設定手段１００１に対しては、照会に対して、デバイス１００２が設定済みであると応答する。これにより、設定手段１００１に不要な処理を実行させることなく、デバイス１００２の状態に応じた最適な設定ができる。また、通信回線への不要な負荷を抑制することができる。
【００４１】
（第２の実施形態）
本発明の第２の実施形態による入出力（Ｉ／Ｏ）システム（中継システム）について図面を参照して詳細に説明する。図４は本発明に実施形態によるＩ／Ｏシステムの構成を示すブロック図である。
【００４２】
なお、Ｉ／Ｏデバイスの構成は、図２２と同じであるので、各部材に同じ参照番号を付して、説明を省略する。
【００４３】
第２の実施形態では、複数のホスト（設定手段）がＩ／Ｏデバイス（デバイス）を共有する。
【００４４】
図４を参照すると、本発明の第２の実施形態によるＩ／Ｏシステム１００は、ホスト１−１〜１−Ｎと、ホスト１−１〜１−Ｎによって共有されるＩ／Ｏデバイス５と、ホスト１−１〜１−ＮとＩ／Ｏデバイス５とを相互に接続するネットワーク３と、ホスト１−１〜１−ＮのＩ／Ｏデバイス５に対する設定要求を仲裁するＩ／Ｏ仮想化ブリッジ４（中継手段）とを含む。Ｉ／Ｏ仮想化ブリッジ４は、Ｉ／Ｏデバイス５をネットワーク３に接続する。このＩ／Ｏシステムは、さらに、ホスト１−１〜１−Ｎをネットワーク３に接続するホストブリッジ２−１〜２−Ｎを含む。
【００４５】
ホスト１−１〜１−Ｎは、それぞれ、演算処理を行うＣＰＵ１０１−１〜１０１−Ｎと、プログラムやデータを格納するメモリ１０３−１〜１０３−Ｎと、ブリッジ１０２−１〜１０２−Ｎとを含む。ブリッジ１０２−１〜１０２−Ｎは、ホストブリッジ２−１〜２−Ｎと、メモリ１０３−１〜１０３−Ｎと、ＣＰＵ１０１−１〜１０１−Ｎを相互に接続する。
【００４６】
ホストブリッジ２−１〜２−Ｎは、それぞれホスト１−１〜１−Ｎが発行するＩ／Ｏパケットをネットワーク３で定められたパケット（以下ネットワークパケットと称する）の仕様（フォーマット）にカプセル化し、ネットワーク３に送信する。なお、ＰＣＩｅでは特に、Ｉ／Ｏパケットをトランザクション  レイヤ  パケット（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐａｃｋｅｔ：ＴＬＰ）と呼ぶ。以下では、このようなＩ／ＯパケットをＴＬＰと呼ぶ。
【００４７】
また、ホストブリッジ２−１〜２−Ｎは、ＴＬＰがカプセル化されたネットワークパケットを受信して、ＴＬＰをデカプセル化する。このＴＬＰはＩ／Ｏデバイス５から送信され、ホストブリッジ２−１〜２−Ｎがそれぞれ接続するホスト１−１〜１−Ｎ宛である。デカプセル化されたＴＬＰは、ホスト１−１〜１−Ｎのうちの送信先として指定されたホストに送信される。
【００４８】
ネットワーク３は、ＴＬＰがカプセル化されたネットワークパケットを、宛先として指定されたホストに接続されるノードに送信する。
【００４９】
Ｉ／Ｏ仮想化ブリッジ４は、ネットワーク処理部４０１と、Ｉ／Ｏパケット転送部４０２と、Ｉ／Ｏ仮想化部４０３と、アドレス変換部４０４と、仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎとを含む。ネットワーク処理部４０１は、ＴＬＰのカプセル化およびデカプセル化処理を行う。Ｉ／Ｏパケット転送部４０２は、ＴＬＰの種類を判定し、指定された宛先にＴＬＰを転送する。Ｉ／Ｏ仮想化部４０３は、ホスト１−１〜１−ＮによるＩ／Ｏデバイス５への設定を仲裁する。アドレス変換部４０４は、ＴＬＰの宛先アドレスを変換する。仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎは、ホスト１−１〜１−Ｎに対して、Ｉ／Ｏデバイス５の仮想関数コンフィグレーション（ＶＦ  ＣＦＧ）レジスタを仮想的に提供する。
【００５０】
図５乃至８を参照して、Ｉ／Ｏ仮想化ブリッジ４を構成する各部の働きを次に説明する。
【００５１】
図５に示すネットワーク処理部４０１は、ホスト１−１〜１−Ｎから送信された設定要求を含むＴＬＰがカプセル化されたネットワークパケットを、ネットワークパケット送受信部４１３によりネットワーク３から受信する。デカプセル化部４１１は、このネットワークパケットからＴＬＰをデカプセル化し、このＴＬＰをＩ／Ｏパケット転送部４０２に転送する。また、ネットワーク処理部４０１は、Ｉ／Ｏパケット転送部４０２からホスト１−１〜１−Ｎ宛のＴＬＰを受信し、カプセル化部４１２によりＴＬＰをカプセル化する。ネットワークパケット送受信部４１３は、カプセル化したＴＬＰをネットワーク３に送信する。ネットワーク処理部４０１は、アドレス保持部４１４に保持されている、宛先ホスト１−１〜１−Ｎが接続するホストブリッジ２−１〜２−Ｎのネットワークアドレスを用いてＴＬＰのカプセル化をする。
【００５２】
図６に示すＩ／Ｏパケット転送部４０２は、ホスト１−１〜１−Ｎが発行したＴＬＰをネットワーク処理部４０１から受信し、パケット選択部４２１により、これらのＴＬＰから、Ｉ／Ｏ仮想化部４０３において仲裁されるＩ／Ｏデバイス５の設定パケットを選択する。第１転送部４２２は、選択されたＴＬＰ（以後、設定ＴＬＰと言う。）をＩ／Ｏ仮想化部４０３に転送する。また、第１転送部４２２は、ホスト１−１〜１−Ｎが発行したＴＬＰのうち、選択されなかったＴＬＰを、アドレス変換部４０４に転送する。さらに、Ｉ／Ｏパケット転送部４０２は、Ｉ／Ｏ仮想化部４０３とアドレス変換部４０４とから、ホスト１−１〜１−ＮとＩ／Ｏデバイス５のいずれかに宛てたＴＬＰを受信する。第２転送部４２３は、受信したＴＬＰを、指定された宛先へ転送する。
【００５３】
図７に示すＩ／Ｏ仮想化部４０３は、ホスト１−１〜１−ＮによるＩ／Ｏデバイス５への設定を仲裁する。すなわち、Ｉ／Ｏ仮想化部４０３は、Ｉ／Ｏデバイス５にそのまま設定されると各ホストからの設定が競合するような設定を仲裁する。Ｉ／Ｏ仮想化部４０３は、ホスト１−１〜１−Ｎが発行したＩ／Ｏデバイス５の設定ＴＬＰをＩ／Ｏパケット転送部４０２から受信する。パケット仲裁部４３１は、設定ＴＬＰを元にして得られた設定値を仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎに登録する。
【００５４】
Ｉ／Ｏ仮想化部４０３は、仮想ＣＦＧレジスタに登録された設定値を元にＩ／Ｏデバイス５への設定を仲裁する。すなわち、以下の３つの少なくともいずれか１つの処理を行う。
（１）パケット仲裁部４３１は、Ｉ／Ｏデバイス５に対しては設定処理を行わないが、ホスト１−１〜１−Ｎに対してはＩ／Ｏデバイス５が設定された状態にする。
（２）Ｉ／Ｏデバイス設定値生成・変換部４３２は、ホスト１−１〜１−Ｎから仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎに登録した設定情報に対し、これらの設定情報が要求する全ての条件を満たす設定値を求め、得られた設定値に基づいてＩ／Ｏデバイス５の物理関数コンフィグレーション（ＰＦ  ＣＦＧ）レジスタ５０１１を設定する。例えば、設定指示を生成し、Ｉ／Ｏデバイス５に対して発行する。
（３）Ｉ／Ｏデバイス５の物理関数５０１が仮想関数５０２−１〜５０２−Ｎを制御するインタフェースを実装している場合には、Ｉ／Ｏデバイス設定値生成・変換部４３２は、（２）で求めた設定値を、Ｉ／Ｏデバイス５のＰＦ  ＣＦＧレジスタ５０１１を設定する設定ＴＬＰ（設定指示）に変換し、変換した設定ＴＬＰをＩ／Ｏデバイス５に発行する。なお、この設定ＴＬＰは、ホスト１−１〜１−Ｎが発行した設定ＴＬＰ（設定要求）とは異なったものになる。
【００５５】
なお、上記（１）での、ホスト１−１〜１−Ｎに対してＩ／Ｏデバイス５が設定された状態は、ホスト１−１〜１−Ｎの少なくとも何れか１つがＩ／Ｏデバイス５にリード要求を発行したときに、仮想ＣＦＧレジスタがＩ／Ｏデバイス５の設定状態を返却値としてホストに返すことにより実現する。
【００５６】
Ｉ／Ｏデバイス５に設定をしているか否かによらず、ホスト１−１〜１−ＮはＩ／Ｏデバイス５が設定されているという返却値を受ける。
【００５７】
Ｉ／Ｏ仮想化部４０３はまた、ホスト１−１〜１−Ｎを設定する、Ｉ／Ｏデバイス５がホスト１−１〜１−Ｎへ発行した設定ＴＬＰ（通知）を仲裁する。ホスト１−１〜１−Ｎからの設定要求により、Ｉ／Ｏデバイス５でエラーなどが発生し、Ｉ／Ｏデバイス５を共有する全てのホスト１−１〜１−Ｎに影響を与えるような場合に、Ｉ／Ｏデバイス５がホスト１−１〜１−Ｎに対してこのような設定ＴＬＰを発行する。Ｉ／Ｏ仮想化部４０３は、この設定ＴＬＰを仲裁する。
【００５８】
すなわち、Ｉ／Ｏ仮想化部４０３は、以下の３つの少なくともいずれか１つの処理を行い、ホスト１−１〜１−Ｎへの設定ＴＬＰを仲裁する。
（１'）パケット仲裁部４３１は、Ｉ／Ｏデバイス５が発行した設定ＴＬＰをＩ／Ｏパケット転送部４０２から受信し、受信したＴＬＰを破棄して放置する。
（２'）ホスト通知生成部４３４は、全てのホスト１−１〜１−Ｎ宛にイベントを通知するＴＬＰを作成し、作成したＴＬＰをＩ／Ｏパケット転送部４０２を経由してホスト１−１〜１−Ｎに送信する。
（３'）Ｉ／Ｏデバイス設定値生成・変換部４３２は、問題を生じる設定の代わりに、その設定を基にしてＩ／Ｏデバイス５を制御する設定ＴＬＰを独自に作成し、作成したＴＬＰを基にＩ／Ｏデバイス５のＰＦ  ＣＦＧレジスタ５０１１を設定する。なお、この再設定は、Ｉ／Ｏデバイスの設定を、ホスト１−１〜１−Ｎが設定ＴＬＰを発行する前の状態に戻してもよい。
【００５９】
また、Ｉ／Ｏ仮想化部４０３は、デバイス情報登録部４３３により、Ｉ／Ｏデバイス５の物理関数が含むＰＦ  ＣＦＧレジスタ５０１１のみが保持しているデバイス情報を取得し、このデバイス情報を仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎに登録してもよい。これにより、ホスト１−１〜１−Ｎが仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎをリード（ＲＥＡＤ）した場合に、デバイス５のデバイス情報が取得できる。
【００６０】
仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎは、Ｉ／Ｏデバイス５の各ＶＦ  ＣＦＧレジスタを、ホスト１−１〜１−Ｎに、仮想的に提供する。すなわち、ホスト１−１〜１−Ｎからのリード要求に対して、仮想ＣＦＧレジスタがＩ／Ｏデバイス５のＶＦ  ＣＦＧレジスタの情報を返すことができる。仮想ＣＦＧレジスタ４０５−１〜４０５−ＮはＩ／Ｏデバイス５が含む仮想関数５０２−１〜５０２−Ｎにそれぞれ対応し、ホスト１−１〜１−Ｎからのアクセスをそれぞれ受け付ける。仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎは、ホスト１−１〜１−ＮがＩ／Ｏデバイス５に設定した設定情報を、例えばデバイス情報登録部４３３を経由して登録し、保持する。また、仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎは、ホスト１−１〜１−Ｎからリード要求があれば、保持されている値を返す。仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎはまた、ホスト１−１〜１−ＮがＩ／Ｏデバイス５に割当てるアドレスとメモリ領域とＩ／Ｏ領域の情報を、例えばデバイス情報登録部４３３を経由して登録し、保持する。
【００６１】
図８に示すアドレス変換部４０４は、ホスト１−１〜１−ＮがＩ／Ｏデバイス５に発行した設定要求を含むＴＬＰのうち、Ｉ／Ｏ仮想化部４０３において仲裁されるＩ／Ｏデバイス５の設定パケットとして選択されなかった設定ＴＬＰを受信する。上述のように、仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎには、ホスト１−１〜１−ＮがＩ／Ｏデバイス５に割当てたアドレスとメモリ領域とＩ／Ｏ領域の情報が登録されている。アドレス参照部４４２は、これらの登録情報を参照し、ヘッダアドレス変換部４４１により、ＴＬＰの宛先アドレスを、設定されているＩ／Ｏデバイス５のアドレスとメモリ領域とＩ／Ｏ領域を元に変換する。アドレス変換部４０４は、宛先アドレスが変換された設定ＴＬＰを、Ｉ／Ｏパケット転送部４０２を経由して、Ｉ／Ｏデバイス５に送信する。また、アドレス変換部４０４は、Ｉ／Ｏデバイス５がホスト１−１〜１−Ｎに対して発行した通知を含むＴＬＰを受信する。アドレス参照部４４２は、仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎに登録された情報を参照し、ヘッダアドレス変換部４４１は、ＴＬＰの宛先アドレスを変換する。アドレス変換部４０４は、Ｉ／Ｏパケット転送部４０２を経由して、変換したＴＬＰを、ホスト１−１〜１−Ｎのうち、ＴＬＰの宛先に指定されているホストに送信する。
【００６２】
Ｉ／Ｏデバイス５は、仮想関数５０２−１〜５０２−Ｎを、それぞれホスト１−１〜１−Ｎに割当てる。これにより、ホスト１−１〜１−Ｎは、Ｉ／Ｏデバイス５の機能を共有する。
【００６３】
次に、図４、図９及び図１０を参照して、本発明を実施するための第２の実施形態において、ホスト１−１からＩ／Ｏデバイス５へＴＬＰを発行する動作を詳細に説明する。なお、この他のホスト１−２〜１−Ｎの何れか１つからＩ／Ｏデバイス５へＴＬＰを発行する場合の動作も同様である。
【００６４】
ホスト１−１は、Ｉ／Ｏデバイス５宛のＴＬＰを発行する（図９のステップＳ２０１）。ホストブリッジ２−１は、ホスト１−１が発行したＴＬＰをＩ／Ｏ仮想化ブリッジ４のネットワークアドレスを宛先としてカプセル化し（ステップＳ２０２）、カプセル化したＴＬＰを含むネットワークパケットをネットワーク３に送信する（ステップＳ２０３）。
【００６５】
ネットワーク処理部４０１は、ＴＬＰがカプセル化されたネットワークパケットを受信し、ＴＬＰをデカプセル化し（ステップＳ２０４）、ＴＬＰをＩ／Ｏパケット転送部４０２に転送する。Ｉ／Ｏパケット転送部４０２は、ＴＬＰがＩ／Ｏ仮想化部４０３が仲裁する設定ＴＬＰかどうかを判定し（ステップＳ２０５）、そのＴＬＰがＩ／Ｏ仮想化部４０３が仲裁する設定ＴＬＰであれば、Ｉ／Ｏ仮想化部４０３へＴＬＰを転送する。Ｉ／Ｏパケット転送部４０２は、ＴＬＰがＩ／Ｏ仮想化部４０３が仲裁する設定ＴＬＰでなければ、ＴＬＰをアドレス変換部４０４に転送する。
【００６６】
仮想ＣＦＧレジスタ４０５−１には、登録されているホスト１−１がＩ／Ｏデバイス５に割当てたアドレスとメモリ領域とＩ／Ｏ領域の情報が登録されている。アドレス変換部４０４は、この仮想ＣＦＧレジスタ４０５−１に登録されている情報を参照し、ＴＬＰのヘッダのアドレスを、Ｉ／Ｏデバイス５の仮想関数５０２−１に割当てられたアドレスに変換する（ステップＳ２０５）。アドレス変換部４０４は、このＴＬＰを、Ｉ／Ｏデバイス５へ送信する（ステップＳ２０７）。
【００６７】
一方、ステップＳ２０５において、ＴＬＰがＩ／Ｏ仮想化部４０３が仲裁する設定ＴＬＰであった場合のＩ／Ｏ仮想化部４０３の処理を、図１０を参照して詳しく説明する。
【００６８】
Ｉ／Ｏ仮想化部４０３は、ホスト１−１〜１−ＮからのＴＬＰがライト（ＷＲＩＴＥ）、すなわち設定要求であれば（図１０のステップＳ２１１）、次の３つのうちの少なくとも一つの処理をする。
（１）Ｉ／Ｏデバイス５を設定するかどうか判定し（ステップＳ２１３）、設定しない場合は、仮想ＣＦＧレジスタ４０５−１に設定情報をライトし、Ｉ／Ｏデバイス５に対して設定処理を行わないが、ホスト１−１に対してＩ／Ｏデバイス５が設定された状態にする（ステップＳ２１４）。
（２）Ｉ／Ｏデバイス５を設定する場合は、ホスト１−１〜１−Ｎが仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎに登録した設定情報に対し、これらの設定情報が要求する全ての条件を満たす設定値を求める。Ｉ／Ｏデバイス５にインタフェースが実装されるかどうかを判定し（ステップＳ２１５）、インタフェースが具備されない場合は、得られた設定値に基づいてＩ／Ｏデバイス５のＰＦ  ＣＦＧレジスタ５０１１に設定指示を送り、直接設定する（ステップＳ２１６）。
（３）Ｉ／Ｏデバイス５の物理関数５０１が仮想関数５０２−１〜５０２−Ｎを制御するインタフェースを実装している場合には、（２）で求めた設定値を、ＰＦ  ＣＦＧレジスタ５０１１を設定する設定ＴＬＰに変換し、変換した設定ＴＬＰを設定指示としてＩ／Ｏデバイス５に発行する（ステップＳ２１７）。
【００６９】
一方、ホスト１−１〜１−ＮからのＴＬＰがリード（参照要求）であれば、Ｉ／Ｏ仮想化部４０３は、仮想ＣＦＧレジスタ４０５−１の所定の位置から設定情報をリードし、リードされた設定情報を元に、ホスト１−１に応答を返す（ステップＳ２１２）。
【００７０】
次に、図４、図１１及び図１２を参照して、本発明を実施するための第２の実施形態において、Ｉ／Ｏデバイス５からホスト１−１へＴＬＰを発行する動作を詳細に説明する。Ｉ／Ｏデバイス５からこの他のホスト１−２〜１−Ｎの何れか１つへＴＬＰを発行する場合の動作も同様である。
【００７１】
ホスト１−１に対する処理は、Ｉ／Ｏデバイス５では仮想関数５０２−１に割当てられている。この仮想関数５０２−１は、ホスト１−１宛のＴＬＰを発行する（図１１のステップＳ３０１）。Ｉ／Ｏ仮想化ブリッジ４のＩ／Ｏパケット転送部４０２は、このＴＬＰを受信し、このＴＬＰがＩ／Ｏ仮想化部４０３が仲裁する設定ＴＬＰかどうかを判定する（ステップＳ３０２）。このＴＬＰがＩ／Ｏ仮想化部４０３が仲裁する設定ＴＬＰであれば、Ｉ／Ｏパケット転送部４０２は、Ｉ／Ｏ仮想化部４０３へＴＬＰを転送する。このＴＬＰがＩ／Ｏ仮想化部４０３が仲裁する設定ＴＬＰでなければ、パケット転送部４０２は、アドレス変換部４０４にＴＬＰを転送する。
【００７２】
ホスト１−１がＩ／Ｏデバイス５に割当てたアドレスとメモリ領域とＩ／Ｏ領域の情報は、仮想ＣＦＧレジスタ４０５−１に登録されている。アドレス変換部４０４は、この登録された情報を参照し、転送されたＴＬＰのヘッダのアドレスを、この登録情報に基いて変換する（ステップＳ３０３）。
【００７３】
続いて、ネットワーク処理部４０１は、ホストブリッジ２−１のネットワークアドレスを宛先としてＴＬＰをカプセル化し（ステップＳ３０４）、カプセル化したＴＬＰを含むネットワークパケットをネットワーク３に送信する（ステップＳ３０５）。
【００７４】
ホストブリッジ２−１は、ＴＬＰがカプセル化されたネットワークパケットを受信し、ＴＬＰをデカプセル化する（ステップＳ３０６）。ホストブリッジ２−１はさらに、デカプセル化されたＴＬＰをホスト１−１に転送する（ステップＳ３０７）。
【００７５】
一方、ステップＳ３０２において、受信したＴＬＰが、Ｉ／Ｏ仮想化部４０３が仲裁する設定ＴＬＰであった場合のＩ／Ｏ仮想化部４０３の処理を、図１２を参照して説明する。Ｉ／Ｏ仮想化部４０３は、次の３つのうちの少なくとも一つの処理を行う。
（１'）Ｉ／Ｏデバイス５を再設定するかどうかを判定し（図１２のステップＳ３１１）、再設定しない場合は受信したＴＬＰを破棄して放置する（ステップＳ３１２）。
（２'）Ｉ／Ｏデバイス５を再設定する場合、設定処理をホスト１−１〜１−Ｎが担当するかＩ／Ｏ仮想化部４が担当するかを判断する（ステップＳ３１３）。ホストが再設定の処理を担当する場合、全てのホスト１−１〜１−Ｎ宛の通知ＴＬＰを作成し、この作成されたＴＬＰを、Ｉ／Ｏパケット転送部４０２を経由して、ホスト１−１〜１−Ｎに送信する（ステップＳ３１４）。ホスト１−１〜１−Ｎは、これらの通知ＴＬＰを受信して、Ｉ／Ｏデバイス５で発生している問題に対応して、Ｉ／Ｏデバイス５への設定を調整する。
（３'）Ｉ／Ｏデバイス５の再設定をＩ／Ｏ仮想化部が担当する場合、受信した設定ＴＬＰを元にしてＩ／Ｏデバイス５を制御する設定ＴＬＰ（設定指示）を独自に作成し、作成したＴＬＰを基に、ＰＦ  ＣＦＧレジスタ５０１１を再設定する（ステップＳ３１５）。なお、この再設定は、Ｉ／Ｏデバイス５を、ホスト１−１〜１−Ｎが設定要求を含む設定ＴＬＰを発行する前の状態に戻しても良い。
【００７６】
次に、本発明を実施するための第２の実施形態の効果を説明する。
【００７７】
第２の実施形態では、Ｉ／Ｏデバイスを共有する複数ホストからのＩ／Ｏデバイスに対する設定を、（１）Ｉ／Ｏデバイスへの設定処理を行わずに、ホストに対しては設定した状態にする、（２）全てのホストからの設定要求を満たす設定値を、実際にＩ／Ｏデバイスを設定する設定値として採用する、或は、（３）Ｉ／Ｏデバイスが実装する管理インタフェースに対する設定指示に変換する、などの処理により、複数ホストからのＩ／Ｏデバイスに対する設定の競合を仲裁する。また、Ｉ／Ｏデバイスからホストに宛てた通知に対しては、（１'）Ｉ／Ｏデバイスからホストへの通知を破棄する、（２'）通知をコピーして全てのホストに通知する、或は、（３）Ｉ／Ｏデバイスの設定を変更する、などの処理を行う。これらの処理により、Ｉ／Ｏデバイスとホストのそれぞれのソフトウェアを変更せずに、複数のホストがＩ／Ｏデバイスを共有する。
【００７８】
これにより、単一ホスト内で管理され、単一ホスト内の複数の仮想マシンの間で共有されることを想定して設計されているＩ／Ｏデバイスを、複数のホストで共有するＩ／Ｏシステムにおいて、ホスト１−１〜１−Ｎに不要な処理を実行させること無く、Ｉ／Ｏデバイスの状態に応じた最適な設定ができる。また、通信回線への不要な負荷を抑制することができ、システムの稼働率や処理効率を高く維持することができる。
（第３の実施形態）
次に、本発明を実施するための第３の実施形態について図面を参照して詳細に説明する。
【００７９】
図１３に示す本発明を実施するための第３の実施形態によるＩ／Ｏ仮想化ブリッジ６は、第２の実施形態におけるＩ／Ｏ仮想化部４０３に換えて、Ｉ／Ｏ仮想化部６０１を備える。さらに、Ｉ／Ｏ仮想化ブリッジ６は、第２の実施形態における仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎに換えて、仮想ＣＦＧレジスタ６０５−１〜６０５−Ｎを備える。このＩ／Ｏ仮想化部６０１における処理は、Ｉ／Ｏデバイス５のデバイスＩＤと制限値に関する処理の仲裁を含む。
【００８０】
仮想ＣＦＧレジスタ６０５−１〜６０５−Ｎは、デバイスＩＤ保持部６０５１−１〜６０５１−Ｎと、制限値保持部６０５２−１〜６０５２−Ｎとを含む。デバイスＩＤ保持部６０５１−１〜６０５１−Ｎは、Ｉ／Ｏデバイス５の製造者や種別を示すデバイスＩＤの値を保持する。制限値保持部６０５２−１〜６０５２−Ｎは、Ｉ／Ｏデバイス５が用いるＴＬＰのパケットサイズやタイムアウト値等の上限値や下限値に対する制限値を保持する。この制限値は、ホスト１−１〜１−Ｎが設定する。
【００８１】
図１４を参照して、Ｉ／Ｏ仮想化部６０１の各部の構成を説明する。なお、第２の実施形態における構成と同じ部分については、説明を省略する。
【００８２】
Ｉ／Ｏ仮想化部６０１は、第２の実施形態におけるデバイス情報登録部４３３に換えて、デバイス情報登録・仲裁部６３３を備える。
【００８３】
図１３乃至１５を参照して、第３の実施形態におけるＩ／Ｏ仮想化ブリッジ６の動作を説明する。なお、第２の実施形態における動作と重複する部分については、説明を省略する。
【００８４】
Ｉ／Ｏ仮想化部６０１は、Ｉ／Ｏデバイス５がホスト１−１〜１−Ｎに対するサービスを開始する前に、Ｉ／Ｏデバイス５のＰＦ  ＣＦＧレジスタ５０１１からデバイスＩＤ保持部６０５１−１〜６０５１−Ｎに表示する値を読み込み、デバイスＩＤ保持部６０５１−１〜６０５１−Ｎに反映させる（図１５のステップＳ４０１）。ホスト１−１〜１−Ｎが設定ＴＬＰを発行し、デバイスＩＤをリードする（ステップＳ４０２）場合、Ｉ／Ｏ仮想化部６０１はデバイスＩＤ保持部６０５１−１〜６０５１−Ｎに登録した値をホスト１−１〜１−Ｎに返す（ステップＳ４０３）。
【００８５】
Ｉ／Ｏ仮想化部６０１はまた、ホスト１−１〜１−ＮがＩ／Ｏデバイス５に設定するＴＬＰのパケットサイズやタイムアウト値等の上限値や下限値を、制限値保持部６０５２−１〜６０５２−Ｎに登録する（ステップＳ４０４）。ホスト１−１〜１−Ｎからのリード要求に対しては、制限値保持部６０５２−１〜６０５２−Ｎに登録された値が返される。Ｉ／Ｏ仮想化部６０１のデバイス情報登録・仲裁部６３３は、ここに登録された値の中で、全てのホストからの設定要求が満たされる値（制限値が下限値であれば全ての制限値の最大値、制限値が上限値であれば全ての制限値の最小値）を実際の設定値として、これら制限値の最大値と最小値を仮想ＣＦＧレジスタ６０５−１〜６０５−Ｎに保持する（ステップＳ４０５）。これらの設定値は、Ｉ／Ｏデバイス設定値生成・変換部４３２とＩ／Ｏパケット転送部４０２を介してＩ／Ｏデバイス５に設定される（ステップＳ４０６）。ホスト１−１〜１−ＮからのＴＬＰが仲裁を必要とする場合に、パケット仲裁部４３１は、仮想ＣＦＧレジスタ６０５−１〜６０５−Ｎからこれらの制限値を読み込んで、ＴＬＰの仲裁の制約条件とする。
【００８６】
ホスト１−１〜１−Ｎのそれぞれは、その処理能力に応じてＩ／Ｏデバイス５を設定しようとして、設定要求をＩ／Ｏ仮想化ブリッジ４に送信する。例えば、最大パケットサイズを２５６Ｂと設定するホストと、最大パケットサイズを５１２Ｂと設定するホストが、それぞれ設定要求を送信するとする。この場合、Ｉ／Ｏデバイス５には最大パケットサイズが２５６Ｂに設定される。２５６Ｂより大きな値に設定されると、最大パケットサイズを２５６Ｂと設定しようとしたホストに不具合が生じる。一方、ホストからのリード要求に対しては、設定要求により保持された値を応答として返すので、最大パケットサイズを５１２Ｂと設定したホストは、実際にＩ／Ｏから受信するパケットが２５６Ｂ以下である動作であっても、最大パケットサイズが５１２Ｂと設定されているとの応答を受ける。
【００８７】
第３の実施形態では、Ｉ／Ｏデバイスにおいてホスト１−１〜１−Ｎにそれぞれ割当てられたデバイスのデバイスＩＤをＩ／Ｏ仮想化ブリッジ６が保持しており、ホストからのリード要求に対して、デバイスＩＤを付して返却値をホストに返す。これにより、Ｉ／Ｏデバイスの個々の属性を考慮した設定処理が可能になる。また、ホスト１−１〜１−ＮがＩ／Ｏデバイス５に対して設定した制限値の要求をすべて満足するような値を、最大値と最小値として求めて、Ｉ／Ｏ仮想化ブリッジ６が保持し、Ｉ／Ｏデバイス５に設定する。この最大値と最小値を制約条件とすることにより、ＴＬＰの仲裁を高速に処理することができる。
（第４の実施形態）
次に、本発明を実施するための第４の実施形態について図面を参照して詳細に説明する。
【００８８】
図１６に示す本発明を実施するための第４の実施形態によるＩ／Ｏ仮想化ブリッジ７は、第２の実施形態におけるＩ／Ｏ仮想化部４０３に換えて、Ｉ／Ｏ仮想化部７０１を備える。さらに、Ｉ／Ｏ仮想化ブリッジ７は、第２の実施形態における仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎに換えて、仮想ＣＦＧレジスタ７０５−１〜７０５−Ｎを備える。このＩ／Ｏ仮想化部７における処理は、Ｉ／Ｏデバイス５に対する電力制御（パワーマネジメント）に関する処理の仲裁を含む。
【００８９】
仮想ＣＦＧレジスタ４０５−１〜４０５−Ｎは、ホスト１−１〜１−ＮからＩ／Ｏデバイス５に対する電力制御の要求を受け付けるとともに、Ｉ／Ｏデバイス５の電力制御の状態をホスト１−１〜１−Ｎに示す電力制御値保持部７０５３−１〜７０５３−Ｎを含む。
【００９０】
図１７を参照して、Ｉ／Ｏ仮想化部７０１の各部の構成を説明する。なお、第２の実施形態における構成と同じ部分については、説明を省略する。
【００９１】
Ｉ／Ｏ仮想化部７０１は、第２の実施形態におけるパケット仲裁部４３１に換えて、パケット仲裁・電力制御値調整部７３１を備える。
【００９２】
図１６乃至１８を参照して、第４の実施形態におけるＩ／Ｏ仮想化ブリッジ７の動作を説明する。なお、第２の実施形態における動作と重複する部分については、説明を省略する。
【００９３】
Ｉ／Ｏ仮想化部７０１のデバイス情報登録４３３は、ホスト１−１〜１−ＮがＩ／Ｏデバイス５に対して発行するＴＬＰを受け、ＴＬＰに含まれるＩ／Ｏデバイス５の電力制御に関する設定情報を電力制御値保持部７０５３−１〜７０５３−Ｎに登録する（図１８のステップＳ５０１）。
【００９４】
Ｉ／Ｏ仮想化部７０１において、パケット仲裁・電力制御値調整部７３１は、ホストから受信したＴＬＰを仲裁し、さらに、仲裁した結果を元に、仮想ＣＦＧレジスタ７０１−１〜７０１−Ｎの電力制御値保持部７０５３−１〜７０５３−Ｎに保持された電力制御値を調整する。すなわち、第２の実施例と同様にして、
（１）Ｉ／Ｏデバイス５に電力制御を設定するかどうか判定し（ステップＳ５０２）、電力制御の設定をしない場合は、仮想ＣＦＧレジスタ７０５−１に保持されている電力制御値を調整する。Ｉ／Ｏ仮想化部７０１は、Ｉ／Ｏデバイス５に対して電力制御の設定を行わないが、ホスト１−１に対してＩ／Ｏデバイス５が電力制御されている状態にする（ステップＳ５０３）。すなわち、ホスト１−１〜１−Ｎの何れかからリード要求があったときは、Ｉ／Ｏデバイスが電力制御されているような電力制御値を返却値としてホストに返す。
（２）Ｉ／Ｏデバイス５に電力制御を設定する場合は、ホスト１−１〜１−Ｎが仮想ＣＦＧレジスタ７０５−１〜７０５−Ｎに登録した設定情報とＴＬＰの仲裁の結果を元にして、ホスト１−１〜１−Ｎの要求するＩ／Ｏデバイスの動作に支障が生じないようにＩ／Ｏデバイス５の電力制御の設定を調整する。Ｉ／Ｏデバイス５にインタフェースが実装されるかどうかを判定し（ステップＳ５０４）、インタフェースが具備されない場合は、得られた電力制御値に基づいて設定指示を発行し、Ｉ／Ｏデバイス５のＰＦ  ＣＦＧレジスタ５０１１を直接設定する（ステップＳ５０５）。
（３）Ｉ／Ｏデバイス５の物理関数５０１が仮想関数５０２−１〜５０２−Ｎを制御するインタフェースを実装している場合には、（２）で求めた電力制御値を、ＰＦ  ＣＦＧレジスタ５０１１を設定する設定ＴＬＰに変換し、変換した設定ＴＬＰを設定指示として、Ｉ／Ｏデバイス５に発行する（ステップＳ５０６）。
【００９５】
第４の実施形態では、Ｉ／Ｏデバイスにおいて、ホスト１−１〜１−ＮからＩ／Ｏでデバイス５に対して発行された電力制御（パワーマネジメント）要求を受けて、Ｉ／Ｏデバイスに電力制御を設定しない、或は、ホストから要求されるＩ／Ｏデバイスの動作に支障が生じないようＩ／Ｏデバイス５に電力制御を設定する。これにより、複数のホストからの電力制御に起因した不用意な電力制御によるＩ／Ｏデバイスの動作の不具合を防止することができる。すなわち、一つのホストからの電力制御要求により、他のホストから要求された動作に支障が生じるといった不具合を回避し、要求されたＩ／Ｏデバイスの動作の稼働率を高く維持することができる。
（第５の実施形態）
次に、本発明を実施するための第５の実施形態について図面を参照して詳細に説明する。
【００９６】
図１９に示す本発明を実施するための第５の実施形態によるＩ／Ｏ仮想化ブリッジ８は、第２の実施形態において、Ｉ／Ｏ仮想化部４０３に換えてＩ／Ｏ仮想化部８０１を備える。このＩ／Ｏ仮想化ブリッジ８における処理は、Ｉ／Ｏデバイス５に対するデバイスリセット処理の仲裁を含む。
【００９７】
図２０を参照して、Ｉ／Ｏ仮想化部８０１の各部の構成を説明する。なお、第２の実施形態における構成と同じ部分については、説明を省略する。
【００９８】
Ｉ／Ｏ仮想化部８０１は、第２の実施形態におけるパケット仲裁部４３１に換えて、パケット仲裁・リセット要求検出部８３１を備える。
【００９９】
図１９乃至２１を参照して、第５の実施形態におけるＩ／Ｏ仮想化ブリッジ８の動作を説明する。なお、第２の実施形態における動作と重複する部分については、説明を省略する。
【０１００】
Ｉ／Ｏ仮想化部８０１のパケット仲裁・リセット要求検出部８３１は、ホスト１−１〜１−ＮがＩ／Ｏデバイス５に対して発行するＴＬＰを受け、ＴＬＰを仲裁するとともに、ＴＬＰに含まれるＩ／Ｏデバイス５に対するリセットを要求する信号を検出する（ステップＳ６０１）。パケット仲裁・リセット要求検出部８３１は、リセット要求を含むＴＬＰとそれ以外のＴＬＰとを仲裁し、仮想関数５０２−１〜５０２−Ｎのうち、リセットＴＬＰを発行したホストに割当てられた仮想関数をリセットしても、ホストから要求されたＩ／Ｏデバイスの処理に、強制終了を受けて障害が生じないようなリセットのタイミングを求める（ステップＳ６０２）。
【０１０１】
パケット仲裁・リセット要求検出部８３１は、求めたリセットのタイミングを元に、リセットＴＬＰをＩ／Ｏデバイス設定値生成・変換部４３２に転送する。Ｉ／Ｏデバイス設定値生成・変換部４３２は、Ｉ／Ｏデバイス５をリセットする要求を含むリセットＴＬＰを、Ｉ／Ｏデバイス５のうちでＴＬＰを発行したホストに割当てられた仮想関数のみをリセットするファンクションレベルリセットに変換する。Ｉ／Ｏ仮想化ブリッジ８は、変換されたファンクションレベルリセットをＩ／Ｏデバイス５に送信する（ステップＳ６０３）。ファンクションレベルリセットを受けた仮想関数はリセットする（ステップＳ６０４）。
【０１０２】
第５の実施形態では、Ｉ／Ｏデバイスへのリセット要求を含むＴＬＰについて、リセット要求をＩ／Ｏデバイスの仮想関数のリセットに部分的に限定する。そしてこのリセット要求を含むＴＬＰを、その他のＴＬＰと仲裁することによって、Ｉ／Ｏデバイスの仮想関数のリセットが他の仮想関数での動作に影響しないようにする。これにより、複数のホストからのＩ／Ｏデバイスに対する制御は、リセット要求を含むことができ、リセットによるシステムへの負担を抑制した、自由度の高いＩ／Ｏデバイス制御が可能になる。
【産業上の利用可能性】
【０１０３】
本発明によれば、コンピュータ装置やネットワーク装置、産業用機器やコンシューマ機器において、Ｉ／Ｏを複数のホスト、あるいはＣＰＵやＣＰＵに類する演算装置を含む情報処理装置の間で共有するといった用途に適用できる。
【符号の説明】
【０１０４】
１−１〜１−Ｎ  ホスト
２−１〜２−Ｎ  ホストブリッジ
３  ネットワーク
４  Ｉ／Ｏ仮想化ブリッジ
５  Ｉ／Ｏデバイス
６  Ｉ／Ｏ仮想化ブリッジ
７  Ｉ／Ｏ仮想化ブリッジ
８  Ｉ／Ｏ仮想化ブリッジ
９  ホスト
１００  Ｉ／Ｏシステム
１０１−１〜１０１−Ｎ  ＣＰＵ
１０２−１〜１０２−Ｎ  ブリッジ
１０３−１〜１０３−Ｎ  メモリ
４０１  ネットワーク処理部
４０２  Ｉ／Ｏパケット転送部
４０３  Ｉ／Ｏ仮想化部
４０４  アドレス変換部
４０５−１〜４０５−Ｎ  仮想ＣＦＧレジスタ
４１１  デカプセル化部
４１２  カプセル化部
４１３  ネットワークパケット送受信部
４１４  アドレス保持部
４２１  パケット選択部
４２２  第１転送部
４２３  第２転送部
４３１  パケット仲裁部
４３２  Ｉ／Ｏデバイス設定値生成・変換部
４３３  デバイス情報登録部
４３４  ホスト通知生成部
４４１  ヘッダアドレス変換部
４４２  アドレス参照部
５０１  物理関数（ＰＦ）
５０２−１〜５０２−Ｎ  仮想関数（ＶＦ）
５０３  インタフェース
６０１  Ｉ／Ｏ仮想化部
６０５−１〜６０５−Ｎ  仮想ＣＦＧレジスタ
６３３  デバイス情報登録・仲裁部
７０１  Ｉ／Ｏ仮想化部
７０５−１〜７０５−Ｎ  仮想ＣＦＧレジスタ
７３１  パケット仲裁・電力制御値調整部
８０１  Ｉ／Ｏ仮想化部
８３１  パケット仲裁・リセット要求検出部
９００  Ｉ／Ｏシステム
９０１  管理仮想マシン（管理ＶＭ）
９０２−１〜９０２−Ｎ  仮想マシン（ＶＭ）
９０３  ＣＰＵ
９０４  ブリッジ
９０５  メモリ
５０１１  ＰＦ  ＣＦＧレジスタ
５０２１−１〜５０２１−Ｎ  ＶＦ  ＣＦＧレジスタ
６０５１−１〜６０５１−Ｎ  デバイスＩＤ保持部
６０５２−１〜６０５２−Ｎ  制限値保持部
７０５３−１〜７０５３−Ｎ  電力制御値保持部
１００１  設定手段
１００２  デバイス
１００３  中継手段
１００４  制御手段
１００５  記憶手段
【図１】
2011014023.tif 000003
【図２】
2011014023.tif 000004
【図３】
2011014023.tif 000005
【図４】
2011014023.tif 000006
【図５】
2011014023.tif 000007
【図６】
2011014023.tif 000008
【図７】
2011014023.tif 000009
【図８】
2011014023.tif 000010
【図９】
2011014023.tif 000011
【図１０】
2011014023.tif 000012
【図１１】
2011014023.tif 000013
【図１２】
2011014023.tif 000014
【図１３】
2011014023.tif 000015
【図１４】
2011014023.tif 000016
【図１５】
2011014023.tif 000017
【図１６】
2011014023.tif 000018
【図１７】
2011014023.tif 000019
【図１８】
2011014023.tif 000020
【図１９】
2011014023.tif 000021
【図２０】
2011014023.tif 000022
【図２１】
2011014023.tif 000023
【図２２】
2011014023.tif 000024