(57)【特許請求の範囲】
【請求項１】
少なくとも２つの制御装置と、前記各制御装置にてアクセスされる各デバイスと前記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
前記２つの制御装置がそれぞれ接続された前記スイッチ装置が有する前記各ポートは、一方の前記制御装置と前記各デバイスとが属し前記一方の制御装置が管理する一方の領域と、他方の前記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
前記一方の制御装置と前記他方の制御装置とは、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、
前記一方の制御装置と前記他方の制御装置とは、相互に通信可能なよう特定の通信経路を介して接続され、
前記他方の制御装置は、前記特定の通信経路を介して前記一方の制御装置から前記メモリ空間に対する前記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と前記メモリ空間に割り当てられた前記他方の領域を制御する情報とを同期する同期手段を備えた、
マルチホストシステム。
【請求項２】
請求項１に記載のマルチホストシステムであって、
前記一方の制御装置が有する前記アドレスマッピング手段は、前記各デバイスの動作を制御するための情報である各デバイスドライバをそれぞれ前記メモリ空間に割り当て、
前記他方の制御装置が有する前記アドレスマッピング手段は、前記各デバイスの動作を制御するための情報である各デバイスドライバをまとめて１つのドライバ情報として前記メモリ空間に割り当て、
前記他方の制御装置が有する前記同期手段は、前記一方の制御装置から取得した割り当て情報に基づいて、前記メモリ空間に記憶されている前記ドライバ情報を前記各デバイスの各デバイスドライバに対応させて同期する、
マルチホストシステム。
【請求項３】
請求項２に記載のマルチホストシステムであって、
前記他方の制御装置が有する前記同期手段は、前記一方の制御装置から取得した割り当て情報に基づいて、前記メモリ空間に記憶されている前記ドライバ情報を前記各デバイスの各デバイスドライバに対応するよう分割して同期する、
マルチホストシステム。
【請求項４】
請求項３に記載のマルチホストシステムであって、
前記他方の制御装置が有する前記同期手段は、前記メモリ空間に割り当てられた前記ドライバ情報と、前記一方の制御装置から取得した前記割り当て情報に基づく前記各デバイスドライバと、を関連付けた管理情報を保持する、
マルチホストシステム。
【請求項５】
請求項１乃至４のいずれかに記載のマルチホストシステムであって、
前記他方の制御装置は、前記メモリ空間に記憶され前記同期手段にて同期された前記他方の領域を制御するための情報に基づいて、前記各デバイスにアクセスする、
マルチホストシステム。
【請求項６】
請求項１乃至５のいずれかに記載のマルチホストシステムであって、
前記他方の制御装置が接続された前記スイッチ装置が有する前記ポートは、Non-transparent Bridge Modeポートである、
マルチホストシステム。
【請求項７】
少なくとも２つの制御装置と、前記各制御装置にてアクセスされる各デバイスと前記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
前記２つの制御装置がそれぞれ接続された前記スイッチ装置が有する前記各ポートが、一方の前記制御装置と前記各デバイスとが属し前記一方の制御装置が管理する一方の領域と、他方の前記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
前記一方の制御装置と前記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、前記一方の制御装置と前記他方の制御装置とが、相互に通信可能なよう特定の通信経路を介して接続されているマルチホストシステム、を構成する前記他方の制御装置であって、
前記特定の通信経路を介して前記一方の制御装置から前記メモリ空間に対する前記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と前記メモリ空間に割り当てられた前記他方の領域を制御する情報とを同期する同期手段を備えた、
制御装置。
【請求項８】
少なくとも２つの制御装置と、前記各制御装置にてアクセスされる各デバイスと前記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
前記２つの制御装置がそれぞれ接続された前記スイッチ装置が有する前記各ポートが、一方の前記制御装置と前記各デバイスとが属し前記一方の制御装置が管理する一方の領域と、他方の前記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
前記一方の制御装置と前記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、前記一方の制御装置と前記他方の制御装置とが、相互に通信可能なよう特定の通信経路を介して接続されているマルチホストシステム、を構成する前記他方の制御装置に、
前記特定の通信経路を介して前記一方の制御装置から前記メモリ空間に対する前記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と前記メモリ空間に割り当てられた前記他方の領域を制御する情報とを同期する同期手段、
を実現させるためのプログラム。
【請求項９】
少なくとも２つの制御装置と、前記各制御装置と当該各制御装置にてアクセスされる各デバイスとにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
前記２つの制御装置がそれぞれ接続された前記スイッチ装置が有する前記各ポートが、一方の前記制御装置と前記各デバイスとが属し前記一方の制御装置が管理する一方の領域と、他方の前記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有するマルチホストシステムにて、
前記一方の制御装置と前記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング工程と、
前記他方の制御装置が、前記一方の制御装置と相互に通信可能なよう接続された特定の通信経路を介して、前記一方の制御装置から前記メモリ空間に対する前記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と前記メモリ空間に割り当てられた前記他方の領域を制御する情報とを同期する同期工程と、
を有するシステム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチホストシステムにかかり、特に、PCI Expressスイッチで用いられるNT mode（non-transparent mode）技術を導入して実現され、各ホスト装置よりEnd Pointであるデバイスに対してIOアクセス通信を可能にしたマルチホストシステムに関する。
【背景技術】
【０００２】
近年、PCI Express（以下、適宣「PCIe」と記す。）が普及し、PCIeスロットを搭載したパーソナルコンピュータも市販されている。このようなPCIeシステムの一般的な構成を図１に示す（例えば特許文献１を参照）。この図に示すように、PCIeシステムの構成要素は、ルートコンプレックス、PCIeスイッチ、PCIeブリッジ、IOデバイスであるエンドポイント（EP:End Point）などである。
【０００３】
そして、上述したPCIeシステムを複数のドメインに分割し、複数のホストCPU（ホスト装置）を内蔵するための技術として、PCIeスイッチに導入されるNon-transparent Bridge Mode技術（以下、適宣「NTmode」と記す）がある。このようなPCIeスイッチを搭載したPCIeシステムの一般的な構成を図２に示す。図２に示すシステムの構成要素は、ホストCPU（901、902）、ルートコンプレックス（903、904）、エンドポイント（905、906）、NTmode対応PCIeスイッチ（907）などである。
【０００４】
複数のホストCPUに接続される複数のルートコンプレックスは、NTmode対応PCIeスイッチ（907）にそれぞれ接続されるが、ドメインを複数に分割するために、スイッチのポート（以下、適宣「NTポート」と呼ぶ）において、NT modeとして動作するためのポートを設定する必要がある。いくつNT modeとしてポートを設定できるかは、それぞれのスイッチの特性に依存するが、本例では説明を簡単にするため一つであるとする。あるポートをNTポートとして設定し、そのポートに接続されるホストCPUをSystem Host（以下、適宣「SH」と呼ぶ）（902）と呼ぶ。反対に、NTポートではないポートに接続されるホストCPUをLocal Host（以下、適宣「LH」と呼ぶ）（901）と呼ぶ。また、LH側のドメインをDomain 0、SH側のドメインをDomain 1と呼ぶこととする。
【０００５】
NTポートは、内部、外部に対して仮想的なエンドポイントが存在するように各ホストCPUに見せることが出来る。内部側のエンドポイント（LHより認識できるEP）はVirtual Interface（後述する図４参照）と呼ばれ、外部側のエンドポイント（SHより認識できるEP）はLink Interface（後述する図４参照）と呼ばれる。
【０００６】
Virtual Interface、Link Interfaceそれぞれは、Type0コンフィグレーション空間を持っており、LH、SHはそれぞれのEPをコンフィグレーションし、自身のメモリ空間にマッピングすることが出来る。このとき、システム全体としては、本物のEPとして二つ存在しているため（905、906）、LH側ではメモリ空間上に二つのEPがマッピングされる。
【０００７】
しかし、SH側では二つの（本物の）EPを認識することが出来ず、SHは二つのEPに対してConfigurationサイクルを実行することが出来ないため、仮想的なEPであるLink Interfaceのみしかマッピングされない。そのため、SHのつながっているポートがNTポートである限り、SHが二つのEPのデバイスドライバをロードすることが出来ず、結果としてIOアクセスをすることが出来ない。そして、デバイスドライバとは、近年多数の種類が存在するハードウェアデバイスを制御するためのソフトウェアであり、デバイスドライバがないと、それぞれのハードウェアデバイス固有の制御アクセス（IOアクセス）方法などを実行することが出来ない。従って、SHは、各EPに対してIOアクセスが出来ないことにより、EPの制御をすることが不可能となってしまう。
【０００８】
そのため、NTmode対応PCIeスイッチを搭載したPCIeシステムでは、LH側が何らかの理由でダウンしてしまった場合、接続ポートがNTポートから従来のポートに戻すために、PCIeスイッチをRe-Configurationする必要がある。Re-Configurationすることによって、SHがEPを認識することができ、IOアクセスをすることも可能となる。ところが、Re-Configurationが実行されている間、システム全体としてはサービスを停止している状態となってしまう。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−９５０２５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以上のように、上述したPCIeシステムつまりPCIeスイッチを備えたマルチホストシステムでは、SHが発生させるConfigurationサイクルがNTポートを越えて本来のEPへ伝播することが無く、SHがEPを認識し、デバイスドライバをロードすることが出来ない。このため、第１の問題点として、Domain0側（Local Host側）で複数EPが存在したとしても、Domain1側（System Host側）からは一つのEP（Link Interface）としてしか認識できず、System Hostは意図したデバイスの、意図したアドレスに対するIOアクセスが困難である、という問題があった。
【００１１】
また、SHがEPに対してIOアクセスするには、PCIeシステムをRe-Configurationし、はじめにNTポートであったポートを従来のPCIeポートに遷移させることによって再度、SHがEPに対してConfigurationサイクルを発生させ、認識させる必要がある。このため、第２の問題点として、SHがEPに対してIOアクセスするには、PCIeシステムをRe-Configurationしなければならず、システムとしてのサービスが中断される、という問題があった。
【００１２】
このため、本発明の目的は、ホストCPUの冗長構成を取り、システムの信頼性を向上させつつ、ホストCPU切替時にシステムとしてのサービス動作を止めることなく、継続してサービスを提供し続けることができるシステムを提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明の一形態であるマルチホストシステムは、
少なくとも２つの制御装置と、上記各制御装置にてアクセスされる各デバイスと上記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
上記２つの制御装置がそれぞれ接続された上記スイッチ装置が有する上記各ポートは、一方の上記制御装置と上記各デバイスとが属し上記一方の制御装置が管理する一方の領域と、他方の上記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
上記一方の制御装置と上記他方の制御装置とは、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、
上記一方の制御装置と上記他方の制御装置とは、相互に通信可能なよう特定の通信経路を介して接続され、
上記他方の制御装置は、上記特定の通信経路を介して上記一方の制御装置から上記メモリ空間に対する上記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と上記メモリ空間に割り当てられた上記他方の領域を制御する情報とを同期する同期手段を備えた、
という構成を採る。
【００１４】
また、本発明の他の形態である制御装置は、
少なくとも２つの制御装置と、上記各制御装置にてアクセスされる各デバイスと上記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
上記２つの制御装置がそれぞれ接続された上記スイッチ装置が有する上記各ポートが、一方の上記制御装置と上記各デバイスとが属し上記一方の制御装置が管理する一方の領域と、他方の上記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
上記一方の制御装置と上記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、上記一方の制御装置と上記他方の制御装置とが、相互に通信可能なよう特定の通信経路を介して接続されているマルチホストシステム、を構成する上記他方の制御装置であって、
上記特定の通信経路を介して上記一方の制御装置から上記メモリ空間に対する上記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と上記メモリ空間に割り当てられた上記他方の領域を制御する情報とを同期する同期手段を備えた、
という構成を採る。
【００１５】
また、本発明の他の形態であるプログラムは、
少なくとも２つの制御装置と、上記各制御装置にてアクセスされる各デバイスと上記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
上記２つの制御装置がそれぞれ接続された上記スイッチ装置が有する上記各ポートが、一方の上記制御装置と上記各デバイスとが属し上記一方の制御装置が管理する一方の領域と、他方の上記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
上記一方の制御装置と上記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、上記一方の制御装置と上記他方の制御装置とが、相互に通信可能なよう特定の通信経路を介して接続されているマルチホストシステム、を構成する上記他方の制御装置に、
上記特定の通信経路を介して上記一方の制御装置から上記メモリ空間に対する上記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と上記メモリ空間に割り当てられた上記他方の領域を制御する情報とを同期する同期手段、
を実現させるためのプログラムである。
【００１６】
また、本発明の他の形態であるシステム制御方法は、
少なくとも２つの制御装置と、上記各制御装置と当該各制御装置にてアクセスされる各デバイスとにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
上記２つの制御装置がそれぞれ接続された上記スイッチ装置が有する上記各ポートが、一方の上記制御装置と上記各デバイスとが属し上記一方の制御装置が管理する一方の領域と、他方の上記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有するマルチホストシステムにて、
上記一方の制御装置と上記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング工程と、
上記他方の制御装置が、上記一方の制御装置と相互に通信可能なよう接続された特定の通信経路を介して、上記一方の制御装置から上記メモリ空間に対する上記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と上記メモリ空間に割り当てられた上記他方の領域を制御する情報とを同期する同期工程と、
を有する。
【発明の効果】
【００１７】
本発明は、以上のように構成されることにより、システムによるサービス停止を抑制してシステムの信頼性の向上を図ることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明に関連するPCIeシステムの構成を示す図である。
【図２】本発明に関連するNTmode対応PCIeスイッチが搭載されたPCIeシステムの構成を示す図である。
【図３】本発明におけるマルチホストシステムの構成を示す図である。
【図４】図１に開示したPCIeスイッチの構成を示す図である。
【図５】図１に開示したマルチホストシステムにおけるコンフィグレーションサイクル実施終了後のメモリマッピングの状態を示す図である。
【図６】仮想的マルチデバイスドライバの構成ドライバとの関係を示す図である。
【図７】仮想的マルチデバイスドライバシステムを利用したときのOSより認識できるドライバとEPの関係を示す図である。
【図８】図１に開示したマルチホストシステムのコンフィグレーションサイクルを示したシーケンス図である。
【図９】仮想マルチデバイスドライバシステムにおいて生成されるデバイスドライバとメモリマッピング情報との関係を示すテーブル図である。
【図１０】NTポートをまたいで別Domainへ制御IOアクセスを実施したときのデータの流れの例を示す図である。
【図１１】仮想OS技術を用いたときに構成されるマルチホストシステムの他の構成例を示す図である。
【発明を実施するための形態】
【００１９】
＜実施形態１＞
本発明の第１の実施形態を、図３乃至図１１を参照して説明する。図３乃至図４は、マルチホストシステムの構成を示す図である。図５乃至図１０は、マルチホストシステムの動作例を説明するための図である。図１１は、マルチホストシステムの他の構成を示す図である。
【００２０】
［構成］
本発明におけるマルチホストシステムは、図３に示すように、制御装置である複数のホストＣＰＵ１０１，１０２と、複数のＩＯデバイスであるエンドポイント（ＥＰ０，ＥＰ１）とが、PCIe（PCI Express）スイッチ（PCIeSW）１０５（スイッチ装置）を介して接続されたマルチホストシステムである。
【００２１】
そして、マルチホストシステムは、ホストＣＰＵとして、Local Host１０１とSystem Host１０２といった２つの制御装置（ホスト装置）を備えており、Local Host１０１とSystem Host１０２とがそれぞれ制御する領域である２つのDomainを備えている。そして、Local Host１０１が制御する一方のDomain 0は、Root Complex（ルートコンプレックス）１０３と、NT mode対応のPCIeスイッチ１０５と、を備えており、当該PCIeスイッチ１０５に接続されたＥＰ０，ＥＰ１が属している。また、System Host１０２が制御する他方のDomain 1は、ルートコンプレックス１０４を備えており、NT mode対応のPCIeスイッチ１０５とはNTポートで接続されている。
【００２２】
また、上記PCIeスイッチ１０５は、上述したLocal Host１０１，System Host１０２と、各エンドポイント１０６，１０７とがそれぞれ接続されるポートを備えている。具体的には、図４に示すように、Upstream Port１１０にLocal Host１０１が接続され、２つのDownstreamPort１１４には、それぞれ各エンドポイント１０６，１０７が接続されている。また、PCIeスイッチ１０５は、Non-transparent Bridge Mode技術（以下、適宣「NT mode」と記す）を有しており、かかるNT mode対応のNTポート（NT Port）１１１を有しており、System Host１０２が接続されている。
【００２３】
上記NTポート１１１は、内部、外部に対して仮想的なエンドポイントが存在するように各ホストCPUに見せることが出来る。内部側のエンドポイント（LHより認識できるEP）は、Virtual Interface１１２と呼ばれ、外部側のエンドポイントはLink Interface１１３と呼ばれる。そして、後述するように、Virtual Interface１１２、Link Interface１１３それぞれは、Type0コンフィグレーション空間を持っており、LH、SHはそれぞれのEPをコンフィグレーションし、自身のメモリ空間にマッピングすることが出来る。このとき、システム全体としては、本物のEPとして二つ存在しているが、SH側ではメモリ空間上に二つのEPが仮想的なEPであるLink Interface１１３のみとしてマッピングされる。
【００２４】
さらに、本発明におけるLocal Host１０１とSystem Host１０２とは、相互に通信可能なようTCP/IPネットワークなどの特定の通信経路１００を介して接続されている。
【００２５】
また、Local Host１０１とSystem Host１０２とは、アクセスする各ＩＯデバイスであるエンドポイント１０６，１０７毎に、正しいデバイスドライバを選択する機能を有するＶＭＤＤＳ（仮想マルチデバイスドライバシステム）１０８，１０９を備えており、当該ＶＭＤＤＳを用いることで、各エンドポイントに対して正しくIOアクセスを動作させることができる。
【００２６】
そして、本発明におけるLocal Host１０１とSystem Host１０２とは、電源投入時から、各DomainにおいてPCIeシステムを構築すべく、各Domainにてメモリマッピング、デバイスドライバのロードなどを実行するアドレスマッピング機能（アドレスマッピング手段）を備えている。つまり、このアドレスマッピング機能により、Local Host１０１とSystem Host１０２とは、それぞれ自身が管理するDomainを制御するための情報である各エンドポイントのデバイスドライバなどを所定のメモリ空間に割り当てる。なお、アドレスマッピングの機能の詳細については、動作説明時に説明する。
【００２７】
さらに、本発明におけるLocal Host１０１とSystem Host１０２とは、TCP/IPネットワークなどの特定の通信経路１００を経由して、それぞれのHost１０１，１０２がメモリ空間に割り当てた情報の共有作業、デバイスドライバ情報の通知作業を実施する機能（同期手段）を有する。特に、System Host１０２は、Local Host１０１からメモリ空間に割り当てられているエンドポイント１０６，１０７のデバイスドライバの割り当て状態を示す割り当て情報、つまり、Local Host１０１によるメモリマッピングの情報、必要とするデバイスドライバの種類などの割り当て情報を取得して、この割り当て情報と、System Host１０２のアドレスマッピングの情報とを同期する同期手段を有する。なお、同期動作については、動作説明時に詳述する。
【００２８】
以上の同期動作を行ってデバイスドライバの再構築を行うことにより、System Host１０２は各エンドポイント１０６，１０７に対してDomainを超えたIOアクセス通信を実現することができる。
【００２９】
なお、上記のマルチホストシステムでは、Host装置が２つ装備され、Domainが２つ形成されているが、さらに多くのHost装置が装備され、さらに多くのDomainが形成されていてもよい。
【００３０】
また、上記Local Host１０１とSystem Host１０２とが有する各機能は、所定のプログラムが各Host１０１，１０２に組み込まれることによって実現される。
【００３１】
［動作］
次に、上述したマルチホストシステムの動作を説明する。ここでは、電源投入時から、各Domainにおいて、PCIeシステムが構築されるまでのシーケンスは既存のものと同一であることを想定している。そして、動作の概略としては、まず、各Domainにてメモリマッピング、デバイスドライバのロードなどが完了したのち（アドレスマッピング工程）、各Domainのホスト間でメモリマッピングの情報、必要とするデバイスドライバの種類などを周到するように同期シーケンスが作動し、VMDDSにてデバイスドライバの再構築が実施される（同期工程）。それにより、Domainを超えたIOアクセス通信を実現する。つまり、既存のNTmode対応PCIeスイッチが存在するPCIeシステムでは、メモリアクセス、コンプリーショントランザクションのみ可能であるが、本発明のシステムでは、IOアクセスも可能となる。
【００３２】
なお、メモリアクセス、コンプリーショントランザクションを実施するには、EPに対応するデバイスドライバを利用する必要は無く、PCI-SIG策定のPCIeトランザクションパケットを生成することによりトランザクションを生成することが可能であるが、IOアクセスはEPの制御レジスタに対するRead/Writeなど、各EP固有のアクセスシーケンスやレジスタ情報に合わせた動作が必要となる。そのため、制御IOアクセスを行うにはデバイスドライバが必須である。
【００３３】
＜コンフィグレーション処理＞
まず、電源投入後のコンフィグレーション処理について、図８を参照して説明する。図８において、各HostであるCPUは、電源投入直後に、PCIeバス配下のEPを検索するバスサイクルを発生させる（実際はルートコンプレックス（RC）が発生させる）。それぞれのCPUは、NTmode対応PCIeスイッチの仮想的なEP（Virtual Interface、Link Interface）に対してもコンフィグレーションアクセスを実施し、メモリ空間上にマッピングする（ステップ501）。
【００３４】
この際、Domain0側のホスト（Local Host）が、NTmode対応PCIeスイッチのもつレジスタに対して、Domain0 側にて必要とする、EPの為に確保されるメモリ量をスクラッチパッドレジスタAに設定する（ステップ502）。
【００３５】
同時に、System Host側では、コンフィグレーションサイクルが実行されているが、NTポートの設定により、CRS（Configuration Retry Status:リトライ要求）を返答として受け取り、コンフィグレーションが出来るようになるまで、要求を継続する（ステップ503）。
【００３６】
Local Hostがさらに、スクラッチパッドレジスタBに対して、要求メモリ量をスクラッチパッドレジスタに格納完了したことを通知する内容（READY情報）をセットする（ステップ504）。
【００３７】
さらにこの後、Local Hostが、NTポートの制御レジスタに対してLink Interface Access Enableの設定をする（ステップ505）。これによって、今までリトライ要求を受け続けていたSystem HostはLink Interfaceに対してコンフィグレーションアクセスの結果を受け取る事が可能となる。
【００３８】
この際、SH側にて、EPがマッピングされるベース・アドレスを示すのに使われるBAR（Base Address Register）は0ではなく、2を利用する（NTmode技術を利用する際の仕様）。BAR0はNTmode特有の仕様であるが、NTmode対応PCIeスイッチの各ポートのコンフィグレーション空間を、メモリ空間上にマッピングする際に利用されるので、Link InterfaceへのBARとしてBAR0を利用することは出来ない（図５における203、204）。以上により、SH側にて、LH側Domain0に存在するEPが必要とするメモリ容量と同量の領域を確保することが可能となる。
【００３９】
本発明では、さらにこの後、メモリ空間の同期、デバイスドライバの同期等を行うことによって、Domain間をまたいでのIOアクセスを可能とする。
【００４０】
＜メモリ空間の同期、管理テーブル作成、デバイスドライバα再構築＞
続いて、各ホスト間において、コンフィグレーションアクセスを実施した結果生成できた、アドレスマッピング情報や利用するデバイスドライバ等の同期を行う。NTmode対応PCIeスイッチを用いたシステムでは、EPのアドレスマッピングは、隙間無く連続してマッピングが行われる（図５の符号201）。SH側では、Configurationサイクル後、LIに対応するデバイスドライバとして、デバイスドライバαをロードしている。なお、図５において、符号２０１は、EP0、EP1のメモリマッピングであり、符号２０２は、Link Interface EPとして確保されたメモリ領域である。また、符号２０３，２０４は、NTmode対応PCIeスイッチの各ポートのコンフィグレーション空間のメモリマッピングである。
【００４１】
図５を用いてメモリ空間の同期動作について説明する。各Domainのホストがマッピングしているアドレス情報は一致することはない。例えば、Domain0にてマッピングされているEP0、EP1のベース・アドレス（図５の符号201）に対して、同じ量を確保されたLink Interfaceのベース・アドレス（図５の符号202）は異なり、このベース・アドレスはそれぞれのDomainの構成により決定される。つまり、Domain0にてEP0、EP1はベース・アドレスをそれぞれ100番地、200番地、必要メモリ量をそれぞれ100として割り当てられている。一方、Domain1側にて、Link Interface EPとして割り当てられているベース・アドレスは600番地であり、必要とするメモリ量は200であり、一つのEPとして認識されている。つまり、SH側では、EP0、EP1のデバイスドライバをまとめて１つのドライバ情報としてメモリ空間に割り当てている。
【００４２】
しかし、ベース・アドレスは異なるが、各EPが割り当てられているメモリ容量は共通のものと出来るため（共に200分確保している）、VMDDSによって各EPの割り当て量、割り当て間隔などを統一する。つまり、Link Interfaceとして確保されている領域（図５の符号２０２）をEP0、EP1の各領域それぞれに分割し、LH側のメモリマッピングと状態を同期させることで、既存のNTmodeにおけるアドレストランスレーションにより、Domain間を越えてのアクセスが可能となる。換言すると、Domain1側にて、Link Interface EPとして割り当てられたメモリ量200は、EP0、EP1であることが認識できる。
【００４３】
このため、VMDDSは、TCP/IPネットワークなどを経由して、それぞれのアドレスマッピング情報共有作業、デバイスドライバ情報通知作業を実施する。つまり、Local Host１０１は、メモリ空間に割り当てたデバイスドライバ等の割り当て状態を表す割り当て情報をTCP/IPネットワーク１００を介してSystem Host１０２はこれを受信する。
【００４４】
そして、Domainの異なるホストからTCP/IPネットワークを経由してのデバイスドライバの情報通知により、通知されたデバイスドライバは、あるメモリワーク領域に保存される（保持メモリ空間）。また、System Host１０２側のVMDDSは、デバイスドライバの情報通知（割り当て情報の通知）に基づいて、図９のような、デバイスドライバα（ドライバ情報）と、各デバイスドライバの対応付けを行うテーブル（管理情報）を作成することにより、System Host側で、宛先アドレスとそのとき必要となるデバイスドライバの対応が認識できる。すると、ホストCPU（SH）は、デバイスドライバが変更になったように意識することは無く、そのままデバイスドライバαを利用し続けることが可能である。
【００４５】
このとき、LIがマッピングされているアドレス空間に対するアクセス（デバイスドライバαを利用しようとする）を、アドレスの範囲をデバイスドライバの選択トリガとして利用し、利用するデバイスドライバが保持されている領域へ作業を移すことをデバイスドライバαが実行することによって、アクセス先のデバイスドライバが選択でき、正しいデバイスへのIOアクセスが可能となる。
【００４６】
テーブルの内容として、図９に示すように、統括デバイスドライバ名とそれらを構成する実際のデバイスドライバ名、さらにそれらがマッピングされているSystem Hostが管理するEPが対応付けられている領域のベース・アドレス、リミットアドレス、保持メモリ空間アドレス、要求メモリ量などが考えられる。
【００４７】
デバイスドライバを判別するためのパラメータとして、宛先アドレスフィールドとテーブルとの照らし合わせをすることによって、NTポートにて行われるアドレストランスレーションと合わせて、Domainを超えてのIOアクセス通信を実現する。
【００４８】
＜データ転送処理＞
Domain1側ホスト（System Host）とEPとのIOアクセス通信について、図７及び図１０に示す。本システムにおいて、Domain1側ホスト（System Host）とEP0のIOアクセス通信を行うには、宛先EP0に対応するデバイスドライバ（仮にデバイスドライバAとする）を正しく選択する必要がある。SHは、IOアクセス通信をさせたい処理が要求された場合、デバイスドライバ対応テーブルより、利用するデバイスドライバAの選択、宛先アドレスなどを利用してIOリクエストトランザクションをSHは発生させる。IOリクエストが発生したと認識したルートコンプレックスはPCIeパケット形式に変換し、接続しているNTポートに対してIOアクセストランザクションパケットを送信する。IOアクセストランザクションを受け取ったNTポートでは、届いたトランザクションの宛先アドレスを、Domain0側へ転送するためのアドレスに変換するため、アドレス書き換えを行う。この方法は既存のNTmodeでの動作と同様である。以上により、SHはDomainをまたいでの制御IOアクセスをすることが可能となる。
【００４９】
以上により、本実施形態におけるマルチホストシステムでは、複数のホストがそれぞれEPに対して制御IOアクセスをすることが可能となったため、ACTとして動作していたホストが何らかの理由でダウンした際に、PCIeシステムをRe-Configurationを実施せずに制御ホストを変更することが出来るために、システムとしてのサービス動作を停止することなく、提供し続けることができる。
【００５０】
また、マルチホストシステムにおいて、NTポートを超えることが出来なかった制御IOアクセスが可能となる。
【００５１】
さらに、デバイスドライバを利用する（アドレス空間としては、一つのEPに見えているままである）ことに変更を加えることなく、複数のEPにアクセスするために、デバイスドライバを新しく用意する（ロードする）必要が無く、複数のデバイスにアクセスするのに無駄な作業が不要となる。
【００５２】
＜他の実施例＞
本発明の他の実施例として、その基本的構成は上記の通りであるが、ホストCPUで仮想OS（例えばXenなど）システムを備えており、SR-IOV対応のEPを用いた時にさらにシステムの利便性の向上が期待できる。その構成図を図１１に示す。
【００５３】
構成要素として、仮想OSシステムを備えているLH（801）、SH（802）、PCI-SIG策定のSR-IOV規格に対応しているEP（805、806）などが上述した図１のシステムと異なる点である。
【００５４】
SR-IOVシステムでは、SR-PCIMというソフトウェアがEPに対するアクセスの制御をおこなうために制御部に組み込まれているため、各仮想OSは他の仮想OSの動作を意識することなく、EPに対する制御IOアクセス動作を行うことが可能である。この動作方法は従来のVMDDSと同様である。メモリ空間情報の同期や、デバイスドライバ情報の通知を行うVMDDSは、他の仮想OSに対して特権的なドメイン0上の仮想OS上のVMDDSが代表してそれを行う。
【００５５】
従って、SR-IOVを利用することにより、仮想OS毎（VMDDS毎に）にEPを共有し、同時にIOアクセス動作をする事が可能となるため、IOアクセスをする際の仮想OS間でのアービトレーション動作の必要がなく、さらに処理性能の向上が期待できる。
【００５６】
本構成において、全てのEPがSR-IOVに対応している必要は無く、SR-IOV対応EP、未対応EPを共に一つのシステムに組み込むという構成を取ることも可能である。
【００５７】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるマルチホストシステム、制御装置、プログラム、システム制御方法の構成の概略について説明する。但し、本発明は、以下の構成に限定されない。
【００５８】
（付記１）
少なくとも２つの制御装置と、前記各制御装置にてアクセスされる各デバイスと前記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
前記２つの制御装置がそれぞれ接続された前記スイッチ装置が有する前記各ポートは、一方の前記制御装置と前記各デバイスとが属し前記一方の制御装置が管理する一方の領域と、他方の前記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
前記一方の制御装置と前記他方の制御装置とは、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、
前記一方の制御装置と前記他方の制御装置とは、相互に通信可能なよう特定の通信経路を介して接続され、
前記他方の制御装置は、前記特定の通信経路を介して前記一方の制御装置から前記メモリ空間に対する前記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と前記メモリ空間に割り当てられた前記他方の領域を制御する情報とを同期する同期手段を備えた、
マルチホストシステム。
【００５９】
（付記２）
付記１に記載のマルチホストシステムであって、
前記一方の制御装置が有する前記アドレスマッピング手段は、前記各デバイスの動作を制御するための情報である各デバイスドライバをそれぞれ前記メモリ空間に割り当て、
前記他方の制御装置が有する前記アドレスマッピング手段は、前記各デバイスの動作を制御するための情報である各デバイスドライバをまとめて１つのドライバ情報として前記メモリ空間に割り当て、
前記他方の制御装置が有する前記同期手段は、前記一方の制御装置から取得した割り当て情報に基づいて、前記メモリ空間に記憶されている前記ドライバ情報を前記各デバイスの各デバイスドライバに対応させて同期する、
マルチホストシステム。
【００６０】
（付記３）
付記２に記載のマルチホストシステムであって、
前記他方の制御装置が有する前記同期手段は、前記一方の制御装置から取得した割り当て情報に基づいて、前記メモリ空間に記憶されている前記ドライバ情報を前記各デバイスの各デバイスドライバに対応するよう分割して同期する、
マルチホストシステム。
【００６１】
（付記４）
付記３に記載のマルチホストシステムであって、
前記他方の制御装置が有する前記同期手段は、前記メモリ空間に割り当てられた前記ドライバ情報と、前記一方の制御装置から取得した前記割り当て情報に基づく前記各デバイスドライバと、を関連付けた管理情報を保持する、
マルチホストシステム。
【００６２】
（付記５）
付記１乃至４のいずれかに記載のマルチホストシステムであって、
前記他方の制御装置は、前記メモリ空間に記憶され前記同期手段にて同期された前記他方の領域を制御するための情報に基づいて、前記各デバイスにアクセスする、
マルチホストシステム。
【００６３】
（付記６）
付記１乃至５のいずれかに記載のマルチホストシステムであって、
前記他方の制御装置が接続された前記スイッチ装置が有する前記ポートは、Non-transparent Bridge Modeポートである、
マルチホストシステム。
【００６４】
（付記７）
少なくとも２つの制御装置と、前記各制御装置にてアクセスされる各デバイスと前記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
前記２つの制御装置がそれぞれ接続された前記スイッチ装置が有する前記各ポートが、一方の前記制御装置と前記各デバイスとが属し前記一方の制御装置が管理する一方の領域と、他方の前記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
前記一方の制御装置と前記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、前記一方の制御装置と前記他方の制御装置とが、相互に通信可能なよう特定の通信経路を介して接続されているマルチホストシステム、を構成する前記他方の制御装置であって、
前記特定の通信経路を介して前記一方の制御装置から前記メモリ空間に対する前記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と前記メモリ空間に割り当てられた前記他方の領域を制御する情報とを同期する同期手段を備えた、
制御装置。
【００６５】
（付記８）
付記７に記載の前記他方の制御装置であって、
前記一方の制御装置が有する前記アドレスマッピング手段が、前記各デバイスの動作を制御するための情報である各デバイスドライバをそれぞれ前記メモリ空間に割り当てる機能を有すると共に、
前記他方の制御装置が有する前記アドレスマッピング手段が、前記各デバイスの動作を制御するための情報である各デバイスドライバをまとめて１つのドライバ情報として前記メモリ空間に割り当てる機能を有する場合に、
前記同期手段は、前記一方の制御装置から取得した割り当て情報に基づいて、前記メモリ空間に記憶されている前記ドライバ情報を前記各デバイスの各デバイスドライバに対応させて同期する、
制御装置。
【００６６】
（付記９）
少なくとも２つの制御装置と、前記各制御装置にてアクセスされる各デバイスと前記各制御装置とにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
前記２つの制御装置がそれぞれ接続された前記スイッチ装置が有する前記各ポートが、一方の前記制御装置と前記各デバイスとが属し前記一方の制御装置が管理する一方の領域と、他方の前記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有し、
前記一方の制御装置と前記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング手段をそれぞれ備えると共に、前記一方の制御装置と前記他方の制御装置とが、相互に通信可能なよう特定の通信経路を介して接続されているマルチホストシステム、を構成する前記他方の制御装置に、
前記特定の通信経路を介して前記一方の制御装置から前記メモリ空間に対する前記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と前記メモリ空間に割り当てられた前記他方の領域を制御する情報とを同期する同期手段、
を実現させるためのプログラム。
【００６７】
（付記１０）
付記９に記載のプログラムであって、
前記一方の制御装置が有する前記アドレスマッピング手段が、前記各デバイスの動作を制御するための情報である各デバイスドライバをそれぞれ前記メモリ空間に割り当てる機能を有すると共に、
前記他方の制御装置が有する前記アドレスマッピング手段が、前記各デバイスの動作を制御するための情報である各デバイスドライバをまとめて１つのドライバ情報として前記メモリ空間に割り当てる機能を有する場合に、
前記同期手段は、前記一方の制御装置から取得した割り当て情報に基づいて、前記メモリ空間に記憶されている前記ドライバ情報を前記各デバイスの各デバイスドライバに対応させて同期する、
プログラム。
【００６８】
（付記１１）
少なくとも２つの制御装置と、前記各制御装置と当該各制御装置にてアクセスされる各デバイスとにそれぞれ接続された複数のポートを有するスイッチ装置と、を備え、
前記２つの制御装置がそれぞれ接続された前記スイッチ装置が有する前記各ポートが、一方の前記制御装置と前記各デバイスとが属し前記一方の制御装置が管理する一方の領域と、他方の前記制御装置が属し当該他方の制御装置が管理する他方の領域と、に分割する機能を有するマルチホストシステムにて、
前記一方の制御装置と前記他方の制御装置とが、それぞれ自身が管理する領域を制御するための情報を所定のメモリ空間に割り当てるアドレスマッピング工程と、
前記他方の制御装置が、前記一方の制御装置と相互に通信可能なよう接続された特定の通信経路を介して、前記一方の制御装置から前記メモリ空間に対する前記一方の領域を制御するための情報の割り当てを表す割り当て情報を取得して、当該取得した割り当て情報と前記メモリ空間に割り当てられた前記他方の領域を制御する情報とを同期する同期工程と、
を有するシステム制御方法。
【００６９】
（付記１２）
付記１１に記載のシステム制御方法であって、
前記アドレスマッピング工程は、前記一方の制御装置が、前記各デバイスの動作を制御するための情報である各デバイスドライバをそれぞれ前記メモリ空間に割り当て、前記他方の制御装置が、前記各デバイスの動作を制御するための情報である各デバイスドライバをまとめて１つのドライバ情報として前記メモリ空間に割り当て、
前記同期工程は、前記一方の制御装置から取得した割り当て情報に基づいて、前記メモリ空間に記憶されている前記ドライバ情報を前記各デバイスの各デバイスドライバに対応させて同期する、
システム制御方法。
【符号の説明】
【００７０】
１０１  Local Host
１０２  System Host
１０３，１０４  Root Complex
１０５  PCIeスイッチ
１０６，１０７  End Point
１０８，１０９  仮想マルチデバイスドライバシステム
１１１  NT port
１１２  Link Interface
１１３  Virtual Interface
【図１】
0005477168.tif 000002
【図２】
0005477168.tif 000003
【図３】
0005477168.tif 000004
【図４】
0005477168.tif 000005
【図５】
0005477168.tif 000006
【図６】
0005477168.tif 000007
【図７】
0005477168.tif 000008
【図８】
0005477168.tif 000009
【図９】
0005477168.tif 000010
【図１０】
0005477168.tif 000011
【図１１】
0005477168.tif 000012