(57)【要約】【課題】情報処理装置に設定された各仮想マシンへのエンドデバイスの割り当てをより簡易化することを可能とする。【解決手段】情報処理装置１００は、ＰＣＩバス配下のエンドデバイス又はブリッジ毎に物理アドレス及び仮想マシンが対応付けられた第１テーブルと、エンドデバイス又はブリッジ毎に仮想アドレスが対応付けられた第２テーブルとを予め記憶する記憶部１２０と、情報処理装置の起動時に、エンドデバイス又はブリッジ配下のエンドデバイスを検出するエンドデバイス検出部１３２と、検出されたエンドデバイスに仮想アドレスを割り当て、そのエンドデバイスの物理アドレスとそのエンドデバイスに割り当てた仮想アドレスとを対応付けた第３テーブルを生成する仮想アドレス割り当て部１３３と、第３テーブルをハイパーバイザに提供する提供部１３４とを有する。【選択図】図１
2019139417.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンが設定される情報処理装置であって、
前記情報処理装置に設けられたＰＣＩバス配下のエンドデバイス又はブリッジ毎に物理アドレス及び仮想マシンが対応付けられた第１テーブルと、前記エンドデバイス又はブリッジ毎に仮想アドレスが対応付けられた第２テーブルとを予め記憶する記憶部と、
前記情報処理装置の起動時に、前記第１テーブルに記憶された各物理アドレスにアクセスして、各物理アドレスに対応付けられたエンドデバイス又はブリッジ配下のエンドデバイスを検出するエンドデバイス検出部と、
前記複数の仮想マシン毎に、前記第１テーブルにおいて当該仮想マシンに対応付けられ且つ前記エンドデバイス検出部により検出されたエンドデバイスに、前記第２テーブルにおいて当該エンドデバイスに対応付けられた仮想アドレスを割り当て、当該エンドデバイスの物理アドレスと当該エンドデバイスに割り当てた仮想アドレスとを対応付けた第３テーブルを生成する仮想アドレス割り当て部と、
前記第３テーブルをハイパーバイザに提供する提供部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記仮想アドレス割り当て部は、前記エンドデバイス検出部により、前記第１テーブルに記憶された各物理アドレスに対応付けられたブリッジ配下に複数のエンドデバイスが検出された場合、前記第２テーブルにおいて当該ブリッジに対応付けられた仮想アドレスを仮想ブリッジに割り当てて、当該仮想ブリッジ配下の仮想アドレスを前記検出された複数のエンドデバイスに割り当てる、請求項１に記載の情報処理装置。
【請求項３】
前記仮想アドレス割り当て部は、前記検出された複数のエンドデバイスに、過去に前記第３テーブルにおいて対応付けていない仮想アドレスを前記仮想ブリッジ配下の仮想アドレスとして割り当てる、請求項２に記載の情報処理装置。
【請求項４】
記憶部を有し、複数の仮想マシンが設定される情報処理装置の制御方法であって、
前記情報処理装置に設けられたＰＣＩバス配下のエンドデバイス又はブリッジ毎に物理アドレス及び仮想マシンが対応付けられた第１テーブルと、前記エンドデバイス又はブリッジ毎に仮想アドレスが対応付けられた第２テーブルとを予め前記記憶部に記憶し、
前記情報処理装置の起動時に、前記第１テーブルに記憶された各物理アドレスにアクセスして、各物理アドレスに対応付けられたエンドデバイス又はブリッジ配下のエンドデバイスを検出し、
前記複数の仮想マシン毎に、前記第１テーブルにおいて当該仮想マシンに対応付けられ且つ前記検出されたエンドデバイスに、前記第２テーブルにおいて当該エンドデバイスに対応付けられた仮想アドレスを割り当て、当該エンドデバイスの物理アドレスと当該エンドデバイスに割り当てた仮想アドレスとを対応付けた第３テーブルを生成し、
前記第３テーブルをハイパーバイザに提供する、
ことを含むことを特徴とする制御方法。
【請求項５】
記憶部を有し、複数の仮想マシンが設定される情報処理装置の制御プログラムであって、
前記情報処理装置に設けられたＰＣＩバス配下のエンドデバイス又はブリッジ毎に物理アドレス及び仮想マシンが対応付けられた第１テーブルと、前記エンドデバイス又はブリッジ毎に仮想アドレスが対応付けられた第２テーブルとを予め前記記憶部に記憶し、
前記情報処理装置の起動時に、前記第１テーブルに記憶された各物理アドレスにアクセスして、各物理アドレスに対応付けられたエンドデバイス又はブリッジ配下のエンドデバイスを検出し、
前記複数の仮想マシン毎に、前記第１テーブルにおいて当該仮想マシンに対応付けられ且つ前記検出されたエンドデバイスに、前記第２テーブルにおいて当該エンドデバイスに対応付けられた仮想アドレスを割り当て、当該エンドデバイスの物理アドレスと当該エンドデバイスに割り当てた仮想アドレスとを対応付けた第３テーブルを生成し、
前記第３テーブルをハイパーバイザに提供する、
ことを前記情報処理装置に実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、制御方法及び制御プログラムに関し、特に、複数の仮想マシンが設定される情報処理装置、制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
従来、一台の情報処理装置に、複数の仮想マシンを設定し、各仮想マシンにより情報処理装置の動作をエミュレートする技術が利用されている。仮想マシンが設定された仮想化環境では、情報処理装置に搭載されたＰＣＩ（Peripheral Component Interconnect）又はＰＣＩ  Ｅｘｐｒｅｓｓデバイスを各仮想マシンに１対１に割り当てるパススルー機能が利用されている。この機能により、各デバイスが仮想化されていなくても、各仮想マシンは、デバイスを直接制御することが可能となる。
【０００３】
複数の物理ＰＣＩスロット等の物理資源を有し、物理資源を分割して複数の仮想計算機に割り当てる計算機が開示されている。この計算機は、物理ＩＯインタフェースが交換された場合、交換前後の物理ＩＯインタフェースの種類が同じであれば、各仮想計算機への物理ＩＯインタフェースの割り当てを引き継がせる（特許文献１を参照）。
【０００４】
複数の論理区画（ＬＰＡＲ）が設定され、各論理区画にサーバの資源（ＣＰＵ・メモリ・ＩＯ）の一部または全部が割り付けられる情報処理装置が開示されている。この情報処理装置は、ＩＯバスからのアクセス対象が、そのアクセスが発生したデバイスが属する論理区画に割り付けられた資源以外の場合には、エラーとして報告すると共に、そのアクセスに関してＩＯバス上で完了させる（特許文献２を参照）。
【０００５】
複数の物理サーバと複数のＩＯデバイスとが、第一のＩＯブリッジ及び第二のＩＯブリッジを有する複数のスイッチに接続される計算機システムが開示されている。この計算機システムは、複数の第二のＩＯブリッジに互いに異なるＰＣＩバス番号を固定的に割り当てる（特許文献３を参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１０７３１号公報
【特許文献２】特開２００４−２２０２１８号公報
【特許文献３】特開２０１０−３９７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一般に、パススルー機能は、対応するエンドデバイスが情報処理装置に搭載された状態で、各仮想マシンに、搭載されたエンドデバイスを割り当てることにより設定される。一方、管理者が情報処理装置に仮想マシンを設定してから情報処理装置をユーザに提供し、ユーザが情報処理装置に拡張カードを搭載するような場合、管理者が情報処理装置に仮想マシンを設定するときには情報処理装置に拡張カードは搭載されていない。そのため、管理者は拡張カード内のエンドデバイスを各仮想マシンに割り当てておくことができず、十分な知識を有していないユーザが拡張カード内のエンドデバイスを各仮想マシンに割り当てなければならなくなる。複数の仮想マシンが設定される情報処理装置では、各仮想マシンへのエンドデバイスの割り当てをより簡易化できることが望まれている。
【課題を解決するための手段】
【０００８】
情報処理装置、制御方法及び制御プログラムの目的は、情報処理装置に設定された各仮想マシンへのエンドデバイスの割り当てをより簡易化することを可能とすることにある。
【０００９】
本発明の一側面に係る情報処理装置は、複数の仮想マシンが設定される情報処理装置であって、情報処理装置に設けられたＰＣＩバス配下のエンドデバイス又はブリッジ毎に物理アドレス及び仮想マシンが対応付けられた第１テーブルと、エンドデバイス又はブリッジ毎に仮想アドレスが対応付けられた第２テーブルとを予め記憶する記憶部と、情報処理装置の起動時に、第１テーブルに記憶された各物理アドレスにアクセスして、各物理アドレスに対応付けられたエンドデバイス又はブリッジ配下のエンドデバイスを検出するエンドデバイス検出部と、複数の仮想マシン毎に、第１テーブルにおいてその仮想マシンに対応付けられ且つエンドデバイス検出部により検出されたエンドデバイスに、第２テーブルにおいてそのエンドデバイスに対応付けられた仮想アドレスを割り当て、そのエンドデバイスの物理アドレスとそのエンドデバイスに割り当てた仮想アドレスとを対応付けた第３テーブルを生成する仮想アドレス割り当て部と、第３テーブルをハイパーバイザに提供する提供部と、を有する。
【００１０】
また、本発明の一側面に係る制御方法は、記憶部を有し、複数の仮想マシンが設定される情報処理装置の制御方法であって、情報処理装置に設けられたＰＣＩバス配下のエンドデバイス又はブリッジ毎に物理アドレス及び仮想マシンが対応付けられた第１テーブルと、エンドデバイス又はブリッジ毎に仮想アドレスが対応付けられた第２テーブルとを予め記憶部に記憶し、情報処理装置の起動時に、第１テーブルに記憶された各物理アドレスにアクセスして、各物理アドレスに対応付けられたエンドデバイス又はブリッジ配下のエンドデバイスを検出し、複数の仮想マシン毎に、第１テーブルにおいてその仮想マシンに対応付けられ且つ検出されたエンドデバイスに、第２テーブルにおいてそのエンドデバイスに対応付けられた仮想アドレスを割り当て、そのエンドデバイスの物理アドレスとそのエンドデバイスに割り当てた仮想アドレスとを対応付けた第３テーブルを生成し、第３テーブルをハイパーバイザに提供することを含む。
【００１１】
また、本発明の一側面に係る制御プログラムは、記憶部を有し、複数の仮想マシンが設定される情報処理装置の制御プログラムであって、情報処理装置に設けられたＰＣＩバス配下のエンドデバイス又はブリッジ毎に物理アドレス及び仮想マシンが対応付けられた第１テーブルと、エンドデバイス又はブリッジ毎に仮想アドレスが対応付けられた第２テーブルとを予め記憶部に記憶し、情報処理装置の起動時に、第１テーブルに記憶された各物理アドレスにアクセスして、各物理アドレスに対応付けられたエンドデバイス又はブリッジ配下のエンドデバイスを検出し、複数の仮想マシン毎に、第１テーブルにおいてその仮想マシンに対応付けられ且つ検出されたエンドデバイスに、第２テーブルにおいてそのエンドデバイスに対応付けられた仮想アドレスを割り当て、そのエンドデバイスの物理アドレスとそのエンドデバイスに割り当てた仮想アドレスとを対応付けた第３テーブルを生成し、第３テーブルをハイパーバイザに提供する、ことを情報処理装置に実行させる。
【発明の効果】
【００１２】
本実施形態によれば、情報処理装置、制御方法及び制御プログラムは、情報処理装置に設定された各仮想マシンへのエンドデバイスの割り当てをより簡易化することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に従った情報処理装置１００の概略構成の一例を示す図である。
【図２Ａ】デバイステーブルのデータ構造の一例を示す。
【図２Ｂ】確保仮想アドレステーブルのデータ構造の一例を示す。
【図２Ｃ】割り当て仮想アドレステーブルのデータ構造の一例を示す。
【図２Ｄ】割り当て仮想アドレステーブルのデータ構造の一例を示す。
【図３】記憶装置１２０及びＣＰＵ１３０の概略構成を示す図である。
【図４】検出処理の動作の例を示すフローチャートである。
【図５】割り当て処理の動作の例を示すフローチャートである。
【図６】仮想アドレスの割り当ての例について説明するための模式図である。
【図７】仮想アドレスの割り当ての例について説明するための模式図である。
【図８】仮想アドレスの割り当ての例について説明するための模式図である。
【図９】他の処理回路２４０の概略構成を示す図である。
【発明を実施するための形態】
【００１４】
以下、本開示の一側面に係る情報処理装置について図を参照しつつ説明する。但し、本開示の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【００１５】
図１は、実施形態に従った情報処理装置１００の概略構成の一例を示す図である。
【００１６】
情報処理装置１００は、パーソナルコンピュータ、サーバ等のコンピュータである。情報処理装置１００には、管理者により複数の仮想マシンが設定され、仮想マシンが設定された情報処理装置１００は、ユーザにより使用される。情報処理装置１００は、通信装置１０１と、入力装置１０２と、表示装置１０３と、ＰＣＩバスコントローラ１１０と、記憶装置１２０と、ＣＰＵ（Central Processing Unit）１３０と、処理回路１４０とを有する。さらに、情報処理装置１００は、複数のエンドデバイス１１、１２、１６と、複数のブリッジ１３〜１５と、複数の拡張スロット１７、１８と、拡張カード２０とを有する。通信装置１０１、入力装置１０２、表示装置１０３、ＰＣＩバスコントローラ１１０、記憶装置１２０、ＣＰＵ１３０及び処理回路１４０は、ＣＰＵバス１を介して相互に接続される。一方、各エンドデバイス１１、１２及び各ブリッジ１３〜１５は、ＰＣＩバス２を介してＰＣＩバスコントローラ１１０に接続される。
【００１７】
図１に示す例では、ブリッジ１３にはエンドデバイス１６が接続され、ブリッジ１４、１５にはそれぞれ拡張スロット１７、１８が接続され、拡張スロット１７には拡張カード２０が接続されている。拡張カード２０は、拡張スロット１７に接続されるブリッジ２１と、ブリッジ２１に接続されるエンドデバイス２２、２３とを有している。情報処理装置１００の構成は、上記の構成に限定されず、例えばエンドデバイス又はブリッジの数は、一つでもよいし、二つ以上の任意の数でもよい。以下、情報処理装置１００の各部について詳細に説明する。
【００１８】
通信装置１０１は、例えばＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）等に準拠した通信インタフェース回路を有し、インターネット等のネットワークに接続する。または、通信装置１０１は、例えばＩＥＥＥ（The Institute of Electrical and Electronics Engineers, Inc.）８０２．１１等に準拠した無線通信インタフェース回路を有する。その場合、通信装置１０１は、無線ＬＡＮ（Local Area Network）等のネットワークに接続する。通信装置１０１は、接続するネットワークを介して他装置（不図示）とデータの送受信を行う。通信装置１０１は、他装置から受信したデータをＣＰＵ１３０に供給し、ＣＰＵ１３０から供給されたデータを他装置に送信する。なお、通信装置１０１は、外部の装置と通信できるものであればどのようなものであってもよい。
【００１９】
入力装置１０２は、タッチパネル式の入力装置、キーボード、マウス等の入力デバイス及び入力デバイスから信号を取得するインタフェース回路を有する。入力装置１０２は、ユーザの入力を受け付け、ユーザの入力に応じた信号をＣＰＵ１３０に対して出力する。
【００２０】
表示装置１０３は、液晶、有機ＥＬ（Electro-Luminescence）等から構成されるディスプレイ及びディスプレイに画像データ又は各種の情報を出力するインタフェース回路を有する。表示装置１０３は、ＣＰＵ１３０と接続されて、ＣＰＵ１３０から出力された画像データをディスプレイに表示する。なお、タッチパネルディスプレイを用いて、入力装置１０２と表示装置１０３を一体に構成してもよい。
【００２１】
ＰＣＩバスコントローラ１１０は、ＰＣＩ又はＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠して、ＰＣＩバス２を介した通信を制御し、ＣＰＵ１３０とＰＣＩバス２配下の各エンドデバイス又は各ブリッジとの間のデータの送受信を制御する。
【００２２】
各エンドデバイス１１、１２、１６、２２、２３は、通信デバイス、表示デバイス又は制御デバイス等の任意のデバイスである。図１に示す例では、エンドデバイス１１、１２、１６は、マザーボードに設けられたオンボードデバイスであり、エンドデバイス２２、２３は、拡張カード２０に設けられたデバイスである。
【００２３】
各ブリッジ１３〜１５、２１は、ＰＣＩバスコントローラ１１０又は上位のブリッジと下位のブリッジ又はエンドデバイスとの間のデータの送受信を制御する。各ブリッジには、各ブリッジ配下のアドレスが設定されており、ＣＰＵ１３０は、各ブリッジを介して各ブリッジ配下のエンドデバイスにアクセスすることができる。以下では、エンドデバイス及びブリッジを総じてデバイスと称する場合がある。
【００２４】
各拡張スロット１７、１８は、拡張カードを情報処理装置１００に搭載するためのインタフェースである。各拡張スロット１７、１８はブリッジ１４、１５に接続されている。
【００２５】
拡張カード２０は、通信カード、表示カード又は制御カード等の、拡張スロット１７、１８に挿抜可能な任意のカードである。
【００２６】
記憶装置１２０は、記憶部の一例である。記憶装置１２０は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、記憶装置１２０には、情報処理装置１００の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、例えばＣＤ−ＲＯＭ（compact disk read only memory）、ＤＶＤ−ＲＯＭ（digital versatile disk read only memory）等のコンピュータ読み取り可能な可搬型記録媒体からインストールされてもよい。コンピュータプログラムは、公知のセットアッププログラム等を用いて記憶装置１２０にインストールされる。また、記憶装置１２０には、デバイステーブル、確保仮想アドレステーブル及び割り当て仮想アドレステーブル等が格納される。各テーブルの詳細については後述する。
【００２７】
ＣＰＵ１３０は、予め記憶装置１２０に記憶されているプログラムに基づいて動作する。ＣＰＵ１３０は、汎用プロセッサであってもよい。なお、ＣＰＵ１３０に代えて、ＤＳＰ（digital signal processor）、ＬＳＩ（large scale integration）等が用いられてよい。また、ＣＰＵ１３０に代えて、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）等が用いられてもよい。
【００２８】
ＣＰＵ１３０は、通信装置１０１、入力装置１０２、表示装置１０３、ＰＣＩバスコントローラ１１０、記憶装置１２０及び処理回路１４０と接続され、これらの各部を制御する。ＣＰＵ１３０は、通信装置１０１を介した通信制御、入力装置１０２の入力制御、表示装置１０３の表示制御、ＰＣＩバスコントローラ１１０を介したデータ送受信制御、記憶装置１２０の制御等を行う。
【００２９】
処理回路１４０は、所定の処理を実行する回路である。なお、処理回路１４０として、ＬＳＩ、ＤＳＰ、ＡＳＩＣ又はＦＰＧＡ等が用いられてもよい。
【００３０】
図２Ａは、デバイステーブルのデータ構造の一例を示す。
【００３１】
デバイステーブルは、第１テーブルの一例であり、ＰＣＩバス２配下の各デバイスを管理するテーブルであり、情報処理装置１００がユーザに提供される前に管理者により事前に設定される。デバイステーブルには、情報処理装置１００に設けられたＰＣＩバス２配下のデバイス毎に、各デバイスの識別番号（デバイスＩＤ）、物理アドレス及び割り当て仮想マシン情報等の情報が対応付けられて記憶される。デバイステーブルにおいて、ＰＣＩバス２配下のブリッジの内、拡張スロットに接続されているブリッジ１４、１５は管理されるが、エンドデバイスに直接接続されているブリッジ１３は管理されなくてもよい。
【００３２】
物理アドレスは、情報処理装置１００において各デバイスに割り当てられたＰＣＩ空間上の物理的な（実際の）アドレス（ＰＣＩアドレス）である。デバイスがエンドデバイスである場合、物理アドレスとしてエンドデバイス自体のＰＣＩアドレスが記憶され、デバイスがブリッジである場合、物理アドレスとしてブリッジのＰＣＩアドレスが記憶される。割り当て仮想マシン情報は、各デバイスが割り当てられる仮想マシンを示す。なお、デバイステーブルには、デバイス毎に、各デバイスがエンドデバイスであるかブリッジであるかを示すデバイス種別がさらに関連付けて記憶されてもよい。
【００３３】
図２Ｂは、確保仮想アドレステーブルのデータ構造の一例を示す。
【００３４】
確保仮想アドレステーブルは、第２テーブルの一例であり、情報処理装置１００において事前に確保されたＰＣＩ空間上の仮想アドレスを管理するテーブルであり、情報処理装置１００がユーザに提供される前に管理者により事前に設定される。確保仮想アドレステーブルには、情報処理装置１００に設けられたＰＣＩバス２配下のデバイス毎に、各デバイスのデバイスＩＤ及び確保仮想アドレス等の情報が対応付けられて記憶される。
【００３５】
確保仮想アドレスは、情報処理装置１００において各デバイスのために事前に確保されたＰＣＩ空間上の仮想アドレスである。仮想アドレスは、情報処理装置１００に設定された各仮想マシンがＰＣＩバス２配下のデバイスにアクセスする際に使用する仮想的なアドレスである。なお、仮想アドレスの上位二桁は、ＰＣＩバス番号を示している。確保仮想アドレスは、情報処理装置１００内で重複しないように一意に設定される。また、確保仮想アドレスは、各デバイスがエンドデバイスであるかブリッジであるかに関わらず、設定される。即ち、確保仮想アドレスは、各デバイスがブリッジであり、ブリッジ配下の拡張スロットに拡張カードが搭載されておらず、ブリッジにどのようなエンドデバイスが接続されるかが不明な状態であっても設定される。
【００３６】
図２Ｃ及び図２Ｄは、割り当て仮想アドレステーブルのデータ構造の一例を示す。
【００３７】
割り当て仮想アドレステーブルは、第３テーブルの一例であり、情報処理装置１００に設けられたＰＣＩバス２配下の各デバイスに割り当てたＰＣＩ空間上の仮想アドレスを管理するテーブルであり、情報処理装置１００の起動時に生成される。割り当て仮想アドレステーブルには、情報処理装置１００に設けられたＰＣＩバス２配下のデバイス毎に、各デバイスのデバイスＩＤ、割り当て種別、物理アドレス、割り当て仮想マシン情報、割り当て仮想アドレス及び仮想アドレス空間情報等の情報が対応付けられて記憶される。割り当て仮想アドレステーブルには、ＰＣＩバス２配下のデバイスの内、エンドデバイス又はＰＣＩ空間において割り当てられた仮想ブリッジについての各情報が記憶される。
【００３８】
割り当て種別は、各デバイスがエンドデバイス（物理デバイス）であるか仮想ブリッジ（仮想デバイス）であるかを示す。物理アドレスには、各デバイスがエンドデバイスである場合、そのエンドデバイスの物理アドレスが設定され、各デバイスが仮想ブリッジである場合、ブランクが設定される。割り当て仮想マシン情報は、各デバイスが割り当てられる仮想マシンを示す。割り当て仮想アドレスは、各デバイス（エンドデバイス及び仮想ブリッジ）に割り当てたＰＣＩ空間上の仮想アドレスである。仮想アドレス空間情報には、各デバイスがエンドデバイスである場合、ブランクが設定され、各デバイスが仮想ブリッジである場合、各仮想ブリッジ配下の仮想アドレス空間として設定されたアドレスの範囲が設定される。
【００３９】
図３は、記憶装置１２０及びＣＰＵ１３０の概略構成を示す図である。
【００４０】
図３に示すように、記憶装置１２０には、設定プログラム１２１、エンドデバイス検出プログラム１２２、仮想アドレス割り当てプログラム１２３、提供プログラム１２４、ハイパーバイザプログラム１２５及び複数の仮想マシンプログラム１２６等の各プログラムが記憶される。これらの各プログラムは、プロセッサ上で動作するソフトウェアにより実装される機能モジュールである。ＣＰＵ１３０は、記憶装置１２０に記憶された各プログラムを読み取り、読み取った各プログラムに従って動作する。これにより、ＣＰＵ１３０は、設定部１３１、エンドデバイス検出部１３２、仮想アドレス割り当て部１３３、提供部１３４、ハイパーバイザ部１３５及び複数の仮想マシン部１３６として機能する。
【００４１】
図４は、情報処理装置１００による検出処理の動作の例を示すフローチャートである。
【００４２】
以下、図４に示したフローチャートを参照しつつ、情報処理装置１００による検出処理の動作の例を説明する。なお、以下に説明する動作のフローは、予め記憶装置１２０に記憶されているプログラムに基づき主にＣＰＵ１３０により情報処理装置１００の各要素と協働して実行される。検出処理は、情報処理装置１００の起動時に実行される。
【００４３】
なお、検出処理が実行される前に（情報処理装置１００の直前の電源断より前に）、設定部１３１により、デバイステーブル及び確保仮想アドレステーブルが事前に生成されている。まず、設定部１３１は、管理者による入力装置１０２を用いた指示に従って、情報処理装置１００に複数の仮想マシンを設定する。また、設定部１３１は、各仮想マシンに対して、各仮想マシンが各デバイスにアクセスするために用いられる一又は複数の仮想デバイスを設定する。
【００４４】
次に、設定部１３１は、管理者により、入力装置１０２を用いて、ＰＣＩバス２配下のデバイスの物理アドレスと、そのデバイスを割り当てる仮想マシンを示す仮想マシン情報とが入力されると、入力された各情報を受け付ける。設定部１３１は、デバイスＩＤを新たに生成し、受け付けた物理アドレス及び仮想マシン情報を、生成したデバイスＩＤと関連付けてデバイステーブルに記憶する。なお、設定部１３１は、管理者により、入力装置１０２を用いて、デバイス種別が入力された場合、入力されたデバイス種別も、生成したデバイスＩＤと関連付けてデバイステーブルに記憶する。
【００４５】
また、設定部１３１は、管理者により、入力装置１０２を用いて、ＰＣＩバス２配下のデバイスの物理アドレスと、そのデバイスのために確保するＰＣＩ空間上の仮想アドレスとが入力されると、入力された各情報を受け付ける。設定部１３１は、デバイステーブルから、受け付けた物理アドレスに対応するデバイスＩＤを抽出し、受け付けた仮想アドレスを確保仮想アドレスとして、抽出したデバイスＩＤと関連付けて確保仮想アドレステーブルに記憶する。
【００４６】
ステップＳ１０１〜Ｓ１０６の処理は、デバイステーブルに記憶されたデバイス毎に実行される。最初に、エンドデバイス検出部１３２は、デバイステーブルを読み出し、デバイステーブルに記憶されたデバイスの中から特定のデバイスを抽出する（ステップＳ１０１）。
【００４７】
次に、エンドデバイス検出部１３２は、抽出したデバイスがエンドデバイスであるかブリッジであるかを判定する（ステップＳ１０２）。エンドデバイス検出部１３２は、デバイステーブルにおいてそのデバイスに対応付けられた物理アドレスにアクセスして、そのデバイスがエンドデバイスであるかブリッジであるかを示す情報を取得する。なお、デバイステーブルにデバイス種別が記憶されている場合、エンドデバイス検出部１３２は、デバイス種別から、抽出したデバイスがエンドデバイスであるかブリッジであるかを判定してもよい。
【００４８】
デバイスがエンドデバイスであった場合、エンドデバイス検出部１３２は、エンドデバイスの検出処理を実行する（ステップＳ１０３）。エンドデバイス検出部１３２は、そのデバイスに対応付けられた物理アドレスにアクセスして、そのデバイスに所定の要求信号を送信し、そのデバイスから所定の応答信号を受信した場合に、そのデバイスをエンドデバイスとして検出する。エンドデバイスが検出された場合、エンドデバイス検出部１３２は、そのエンドデバイスを、デバイステーブルにおいてそのエンドデバイスの物理アドレスに対応付けられた仮想マシンに割り当てる。
【００４９】
一方、デバイスがブリッジであった場合、エンドデバイス検出部１３２は、ブリッジ配下のエンドデバイスの検出処理を実行する（ステップＳ１０４）。エンドデバイス検出部１３２は、そのデバイスに対応付けられた物理アドレスにアクセスして、ブリッジの配下に割り当てられたアドレス空間を示す情報を読み出す。エンドデバイス検出部１３２は、読み出した情報に示されるアドレス空間内の各アドレスにアクセスして、各アドレスに割り当てられたデバイスがエンドデバイスであるかブリッジであるかを示す情報を取得する。デバイスがエンドデバイスであった場合、エンドデバイス検出部１３２は、そのデバイスに所定の要求信号を送信し、所定の応答信号を受信した場合に、そのデバイスをエンドデバイスとして検出する。一方、デバイスがブリッジであった場合、エンドデバイス検出部１３２は、さらに、そのブリッジ配下のエンドデバイスの検出処理を実行する。エンドデバイスが検出された場合、エンドデバイス検出部１３２は、そのエンドデバイスを、デバイステーブルにおいてそのエンドデバイスに対応するブリッジに対応付けられた仮想マシンに割り当てる。
【００５０】
次に、エンドデバイス検出部１３２は、デバイステーブルに記憶された全てのデバイスについて処理が完了したか否かを判定する（ステップＳ１０５）。まだ処理していないデバイスが存在する場合、エンドデバイス検出部１３２は、処理をステップＳ１０１へ戻し、まだデバイステーブルから抽出していないデバイスについて、ステップＳ１０１〜Ｓ１０４の処理を実行する。一方、全てのデバイスについて処理が完了した場合、エンドデバイス検出部１３２は、一連のステップを終了する。
【００５１】
このように、エンドデバイス検出部１３２は、デバイステーブルに記憶された各物理アドレスにアクセスして、各物理アドレスに対応付けられたエンドデバイス又はブリッジ配下のエンドデバイスを検出する。
【００５２】
図５は、情報処理装置１００による割り当て処理の動作の例を示すフローチャートである。
【００５３】
以下、図５に示したフローチャートを参照しつつ、情報処理装置１００による割り当て処理の動作の例を説明する。なお、以下に説明する動作のフローは、予め記憶装置１２０に記憶されているプログラムに基づき主にＣＰＵ１３０により情報処理装置１００の各要素と協働して実行される。割り当て処理は、検出処理が実行された後に実行される。
【００５４】
ステップＳ２０１〜Ｓ２１２の処理は、情報処理装置１００に設定された複数の仮想マシン毎に実行される。最初に、仮想アドレス割り当て部１３３は、検出処理においてエンドデバイスが割り当てられた仮想マシンの中から特定の仮想マシンを抽出する（ステップＳ２０１）。
【００５５】
ステップＳ２０２〜Ｓ２１１の処理は、抽出した仮想マシンに割り当てられたデバイス毎に実行される。まず、仮想アドレス割り当て部１３３は、デバイステーブルを読み出し、デバイステーブルにおいて抽出した仮想マシンに対応付けられたデバイスの中から特定のデバイスを抽出する（ステップＳ２０２）。
【００５６】
次に、仮想アドレス割り当て部１３３は、検出処理において、エンドデバイス検出部１３２により、抽出したデバイスに対応して検出されたエンドデバイスを特定する（ステップＳ２０３）。仮想アドレス割り当て部１３３は、抽出したデバイスがエンドデバイスである場合は、検出処理においてそのエンドデバイスが検出されていた場合に限り、そのエンドデバイスを、抽出したデバイスに対応して検出されたエンドデバイスとして特定する。一方、仮想アドレス割り当て部１３３は、抽出したデバイスがブリッジである場合は、検出処理においてそのブリッジ配下に検出されたエンドデバイスを、抽出したデバイスに対応して検出されたエンドデバイスとして特定する。
【００５７】
次に、仮想アドレス割り当て部１３３は、抽出したデバイスに対応して検出されたエンドデバイスが複数であるか否かを判定する（ステップＳ２０４）。
【００５８】
検出されたエンドデバイスが一つであった場合、仮想アドレス割り当て部１３３は、そのエンドデバイスに、確保仮想アドレステーブルにおいてそのデバイスのデバイスＩＤに対応付けられた確保仮想アドレスを割り当てる（ステップＳ２０５）。即ち、この確保仮想アドレスは、確保仮想アドレステーブルにおいてそのエンドデバイスに対応付けられていた仮想アドレスである。なお、仮想アドレス割り当て部１３３は、各エンドデバイスを、各エンドデバイスが割り当てられた仮想マシンに対して設定された仮想デバイスの内の特定の仮想デバイスの配下に設定する。
【００５９】
次に、仮想アドレス割り当て部１３３は、割り当て仮想アドレステーブルを生成又は更新する（ステップＳ２０６）。仮想アドレス割り当て部１３３は、デバイステーブルにおいてそのエンドデバイスに対応付けられたデバイスＩＤと、物理デバイスであることを示す割り当て種別と、そのエンドデバイスの物理アドレス及び割り当て仮想マシン情報とを対応付けて割り当て仮想アドレステーブルに記憶する。さらに、仮想アドレス割り当て部１３３は、エンドデバイスに割り当てた仮想アドレスをそのデバイスＩＤに対応付けて割り当て仮想アドレステーブルに記憶する。なお、仮想アドレス割り当て部１３３は、割り当て仮想アドレステーブルにおいて、そのデバイスＩＤに対応する仮想アドレス空間情報にはブランクを設定する。
【００６０】
一方、検出されたエンドデバイスが複数であった場合、即ち抽出されたデバイスがブリッジであり且つそのブリッジ配下に複数のエンドデバイスが検出された場合、仮想アドレス割り当て部１３３は、仮想ブリッジを新たに設定する。その場合、仮想アドレス割り当て部１３３は、確保仮想アドレステーブルにおいてそのデバイスのデバイスＩＤに対応付けられた確保仮想アドレスを、設定した仮想ブリッジに割り当てる（ステップＳ２０７）。なお、仮想アドレス割り当て部１３３は、仮想ブリッジを、対応するブリッジが割り当てられた仮想マシンに対して設定された仮想デバイスの内の特定の仮想デバイスの配下に設定する。
【００６１】
次に、仮想アドレス割り当て部１３３は、割り当て仮想アドレステーブルにおいて使用されていない仮想アドレス、即ち過去に割り当て仮想アドレステーブルにおいて対応付けていない仮想アドレスを抽出する（ステップＳ２０８）。仮想アドレス割り当て部１３３は、割り当て仮想アドレステーブルにおいて使用されておらず且つ検出されたエンドデバイスの数だけ仮想アドレスを設定可能な仮想アドレス空間を、仮想ブリッジ配下の仮想アドレス空間として設定する。仮想アドレス割り当て部１３３は、設定した仮想アドレス空間内のアドレスから、検出されたエンドデバイスの数の仮想アドレスを抽出する。
【００６２】
次に、仮想アドレス割り当て部１３３は、抽出した各仮想アドレスを、仮想ブリッジ配下の仮想アドレスとして、検出された複数のエンドデバイスにそれぞれ割り当てる（ステップＳ２０９）。
【００６３】
次に、仮想アドレス割り当て部１３３は、割り当て仮想アドレステーブルを生成又は更新する（ステップＳ２１０）。仮想アドレス割り当て部１３３は、新たに設定した仮想ブリッジのデバイスＩＤを新たに生成する。仮想アドレス割り当て部１３３は、生成したデバイスＩＤと、仮想デバイス（仮想ブリッジ）であることを示す割り当て種別とを対応付けて割り当て仮想アドレステーブルに記憶する。また、仮想アドレス割り当て部１３３は、ステップＳ２０２において抽出したデバイスにデバイステーブルで対応付けられた割り当て仮想マシン情報を、生成したデバイスＩＤと対応付けて割り当て仮想アドレステーブルに記憶する。また、仮想アドレス割り当て部１３３は、ステップＳ２０７において仮想ブリッジに割り当てた確保仮想アドレスを割り当て仮想アドレスとして、生成したデバイスＩＤと対応付けて割り当て仮想アドレステーブルに記憶する。さらに、仮想アドレス割り当て部１３３は、ステップＳ２０８において設定した仮想ブリッジ配下の仮想アドレス空間の範囲を仮想アドレス空間情報として、生成したデバイスＩＤと対応付けて割り当て仮想アドレステーブルに記憶する。なお、仮想アドレス割り当て部１３３は、割り当て仮想アドレステーブルにおいて、生成したデバイスＩＤに対応する物理アドレスにはブランクを設定する。
【００６４】
また、仮想アドレス割り当て部１３３は、検出された複数のエンドデバイスのデバイスＩＤを新たに生成する。仮想アドレス割り当て部１３３は、生成したデバイスＩＤと、物理デバイスであることを示す割り当て種別とを対応付けて割り当て仮想アドレステーブルに記憶する。また、仮想アドレス割り当て部１３３は、検出処理（ステップＳ１０４）において各エンドデバイスが検出されたアドレスを各エンドデバイスの物理アドレスとして、生成したデバイスＩＤと対応付けて割り当て仮想アドレステーブルに記憶する。また、仮想アドレス割り当て部１３３は、ステップＳ２０２において抽出したデバイスにデバイステーブルで対応付けられた割り当て仮想マシン情報を、生成したデバイスＩＤと対応付けて割り当て仮想アドレステーブルに記憶する。また、仮想アドレス割り当て部１３３は、ステップＳ２０９において各エンドデバイスに割り当てた仮想アドレスを割り当て仮想アドレスとして、生成したデバイスＩＤと対応付けて割り当て仮想アドレステーブルに記憶する。なお、仮想アドレス割り当て部１３３は、割り当て仮想アドレステーブルにおいて、生成したデバイスＩＤに対応する仮想アドレス空間情報にはブランクを設定する。
【００６５】
次に、仮想アドレス割り当て部１３３は、デバイステーブルにおいて、ステップＳ２０１で抽出した仮想マシンに対応付けられた全てのデバイスについて処理が完了したか否かを判定する（ステップＳ２１１）。まだ処理していないデバイスが存在する場合、エンドデバイス検出部１３２は、処理をステップＳ２０２へ戻し、まだデバイステーブルから抽出していないデバイスについて、ステップＳ２０２〜Ｓ２１０の処理を実行する。
【００６６】
一方、全てのデバイスについて処理が完了した場合、仮想アドレス割り当て部１３３は、検出処理においてエンドデバイスが割り当てられた全ての仮想マシンについて処理が完了したか否かを判定する（ステップＳ２１２）。まだ処理していない仮想マシンが存在する場合、仮想アドレス割り当て部１３３は、処理をステップＳ２０１へ戻し、まだ抽出していない仮想マシンについて、ステップＳ２０１〜Ｓ２１１の処理を実行する。このように、仮想アドレス割り当て部１３３は、複数の仮想マシン毎に、検出処理において検出された各エンドデバイスに仮想アドレスを割り当てて、割り当て仮想アドレステーブルを生成する。
【００６７】
一方、全ての仮想マシンについて処理が完了した場合、提供部１３４は、生成された割り当て仮想アドレステーブルをハイパーバイザ部１３５に提供し（ステップＳ２１３）、一連のステップを終了する。提供部１３４は、割り当て仮想アドレステーブルをデバイステーブルとともに、記憶装置１２０においてハイパーバイザ部１３５が読み取り可能な所定の記憶領域に書き込むことにより、ハイパーバイザ部１３５に提供する。なお、提供部１３４は、各テーブルをハイパーバイザ部１３５に送信することにより提供してもよい。
【００６８】
ハイパーバイザ部１３５は、提供部１３４により提供された各テーブルを使用して各仮想マシン部１３６の仮想ＰＣＩアドレス空間をエミュレートする。各仮想マシン部１３６は、各仮想マシン部１３６に割り当てられた仮想ＰＣＩアドレス空間に対してコンフィグレーションアクセスを実行し、仮想ＰＣＩアドレス空間を探索して、仮想ＰＣＩアドレス空間に割り当てられたデバイスを認識する。
【００６９】
各仮想マシン部１３６は、ＰＣＩバス２配下の各エンドデバイスにアクセスする際、仮想デバイスの配下に設定された各エンドデバイスに割り当てられた仮想アドレスを指定して、ハイパーバイザ部１３５に各エンドデバイスへのアクセスを要求する。ハイパーバイザ部１３５は、各仮想マシン部１３６からアクセスが要求されると、提供部１３４により提供された割り当て仮想アドレステーブルから、指定された仮想アドレスに対応する物理アドレスを特定し、特定した物理アドレスに対してアクセスする。ハイパーバイザ部１３５は、アクセス結果を各仮想マシン部１３６に送る。
【００７０】
図６〜図８は、情報処理装置１００のＰＣＩバス２配下の各デバイスへの仮想アドレスの割り当ての例について説明するための模式図である。
【００７１】
図６の構成６０１は、情報処理装置１００のＰＣＩバス２配下の物理的な構成を示している。構成６０１において、かっこ内の数字は各デバイスの物理アドレスを示している。図６は、情報処理装置１００がユーザに提供される前の状態を示しており、情報処理装置１００の拡張スロット１７、１８には、拡張カードがまだ挿入されていない。この情報処理装置１００に対して、管理者によりＰＣＩバス２配下のデバイスの物理アドレスと、そのデバイスを割り当てる仮想マシンの仮想マシン情報とが入力されると、設定部１３１は、入力された情報に基づいて図２Ａに示したデバイステーブルを設定する。
【００７２】
図２Ａでは、デバイスＩＤ＝０１としてエンドデバイス１２（物理アドレス＝００：０１．０）が設定されて仮想マシンＡに割り当てられ、デバイスＩＤ＝０２としてブリッジ１４（物理アドレス＝００：０３．０）が設定されて仮想マシンＢに割り当てられている。また、デバイスＩＤ＝０３としてブリッジ１５（物理アドレス＝００：０４．０）が設定されて仮想マシンＡに割り当てられ、デバイスＩＤ＝０４としてエンドデバイス１６（物理アドレス＝０１：００．０）が設定されて仮想マシンＢに割り当てられている。
【００７３】
さらに、管理者により、ＰＣＩバス２配下のデバイスの物理アドレスと、そのデバイスのための仮想アドレスとが入力されると、設定部１３１は、入力された情報に基づいて図２Ｂに示した確保仮想アドレステーブルを設定する。
【００７４】
図２Ｂでは、デバイスＩＤ＝０１のエンドデバイス１２に確保仮想アドレス＝０１：００．００が設定され、デバイスＩＤ＝０２のブリッジ１４に確保仮想アドレス＝０１：０１．００が設定されている。また、デバイスＩＤ＝０３のブリッジ１５に確保仮想アドレス＝０１：０２．００が設定され、デバイスＩＤ＝０４のエンドデバイス１６に確保仮想アドレス＝０１：０３．００が設定されている。
【００７５】
図７の構成７０１は、情報処理装置１００のＰＣＩバス２配下の物理的な構成を示し、構成７０２及び構成７０３は、情報処理装置１００のＰＣＩバス２配下の仮想的な構成を示している。なお、構成７０２及び構成７０３は、それぞれ仮想マシンＡ及び仮想マシンＢに属する構成である。構成７０１において、かっこ内の数字は各デバイスの物理アドレスを示し、構成７０２及び構成７０３において、かっこ内の数字は各デバイスの仮想アドレスを示している。図７は、情報処理装置１００がユーザに提供された後の状態を示しており、情報処理装置１００の拡張スロット１７には、一つのエンドデバイス２２を有する拡張カード２０が挿入されている。この例では、情報処理装置１００は、起動時に、検出処理及び割り当て処理を実行し、図２Ｃに示した割り当て仮想アドレステーブルを設定する。
【００７６】
この場合、検出処理のステップＳ１０３では、仮想マシンＡに割り当てられるデバイスＩＤ＝０１のエンドデバイス１２と、仮想マシンＢに割り当てられるデバイスＩＤ＝０４のエンドデバイス１６とが検出される。また、ステップＳ１０４では、仮想マシンＢに割り当てられるデバイスＩＤ＝０２のブリッジ１４配下のエンドデバイスとしてエンドデバイス２２が検出される。
【００７７】
一方、割り当て処理のステップＳ２０５では、仮想マシンＡに対して設定された仮想デバイス３１〜３３の内の仮想デバイス３３の配下に、仮想マシンＡに割り当てられるデバイスＩＤ＝０１のエンドデバイス１２が設定される。デバイスＩＤ＝０１のエンドデバイス１２には、確保仮想アドレステーブルで予め割り当てられていた仮想アドレス（０１：００．０）が割り当てられる。
【００７８】
また、仮想マシンＢに対して設定された仮想デバイス４１〜４３の内の仮想デバイス４３の配下に、仮想マシンＢに割り当てられるデバイスＩＤ＝０４のエンドデバイス１６と、デバイスＩＤ＝０２のブリッジ１４配下のエンドデバイス２２とが設定される。デバイスＩＤ＝０４のエンドデバイス１６には、確保仮想アドレステーブルで予め割り当てられていた仮想アドレス（０１：０３．０）が割り当てられる。さらに、仮想マシンＢに割り当てられるデバイスＩＤ＝０２のブリッジ１４配下のエンドデバイス２２には、確保仮想アドレステーブルでデバイスＩＤ＝０２のブリッジ１４に予め割り当てられていた仮想アドレス（０１：０１．０）が割り当てられる。
【００７９】
なお、各ブリッジ１３、１４及び１５には、仮想アドレスは割り当てられない。また、ブリッジ１５に接続される拡張スロット１８には拡張カードが挿入されていないため、デバイスＩＤ＝０３のブリッジ１５に対応付けられていた確保仮想アドレス（０１：０２．０）は、何れのデバイスにも割り当てられない。
【００８０】
このように、情報処理装置１００は、ＰＣＩバス２配下のエンドデバイスだけでなく、ブリッジにも仮想アドレスを予め割り当てておく。これにより、情報処理装置１００は、拡張カードが後から挿入された場合でも、拡張カード内のエンドデバイスに対して、ブリッジに割り当てておいた仮想アドレスを割り当てることが可能となり、各仮想マシンへのエンドデバイスの割り当てをより簡易化できる。
【００８１】
図８の構成８０１は、情報処理装置１００のＰＣＩバス２配下の物理的な構成を示し、構成８０２及び構成８０３は、情報処理装置１００のＰＣＩバス２配下の仮想的な構成を示している。なお、構成８０２及び構成８０３は、それぞれ仮想マシンＡ及び仮想マシンＢに属する構成である。構成８０１において、かっこ内の数字は各デバイスの物理アドレスを示し、構成８０２及び構成８０３において、かっこ内の数字は各デバイスの仮想アドレスを示している。図８は、情報処理装置１００がユーザに提供された後の状態を示しており、情報処理装置１００の拡張スロット１７には、ブリッジ２１と、ブリッジ２１配下に設けられた二つのエンドデバイス２２とを有する拡張カード２０が挿入されている。この例では、情報処理装置１００は、起動時に、検出処理及び割り当て処理を実行し、図２Ｄに示した割り当て仮想アドレステーブルを設定する。
【００８２】
この場合、図７の例と同様に、検出処理のステップＳ１０３では、仮想マシンＡに割り当てられるデバイスＩＤ＝０１のエンドデバイス１２と、仮想マシンＢに割り当てられるデバイスＩＤ＝０４のエンドデバイス１６とが検出される。また、ステップＳ１０４では、仮想マシンＢに割り当てられるデバイスＩＤ＝０２のブリッジ１４配下のエンドデバイスとしてエンドデバイス２２及びエンドデバイス２３が検出される。
【００８３】
一方、図７の例と同様に、割り当て処理のステップＳ２０５では、仮想マシンＡに対して設定された仮想デバイス３３の配下に、仮想マシンＡに割り当てられるデバイスＩＤ＝０１のエンドデバイス１２が設定される。デバイスＩＤ＝０１のエンドデバイス１２には、確保仮想アドレステーブルで予め割り当てられていた仮想アドレス（０１：００．０）が割り当てられる。
【００８４】
また、仮想マシンＢに対して設定された仮想デバイス４３の配下に、仮想マシンＢに割り当てられるデバイスＩＤ＝０４のエンドデバイス１６が設定される。デバイスＩＤ＝０４のエンドデバイス１６には、確保仮想アドレステーブルで予め割り当てられていた仮想アドレス（０１：０３．０）が割り当てられる。さらに、ステップＳ２０７では、仮想デバイス４３の配下に仮想ブリッジ４４が新たに設定され、確保仮想アドレステーブルでデバイスＩＤ＝０２のブリッジ１４に予め割り当てられていた仮想アドレス（０１：０１．０）が割り当てられる。なお、図２Ｄでは、仮想ブリッジ４４に新たなデバイスＩＤ＝１０が割り当てられている。また、ステップＳ２０８では、割り当て仮想アドレステーブルにおいて使用されていない仮想アドレス（０２：００．０、０２：０１．０）が抽出され、それぞれエンドデバイス２２及び２３に割り当てられる。なお、図２Ｄでは、エンドデバイス２２及び２３にそれぞれ新たなデバイスＩＤ＝１１及び１２が割り当てられている。
【００８５】
このように、情報処理装置１００は、ブリッジ配下に複数のエンドデバイスが検出された場合、仮想ブリッジを設定し、ブリッジに割り当てておいた仮想アドレスを仮想ブリッジに割り当て、仮想ブリッジ配下の仮想アドレスを複数のエンドデバイスに割り当てる。これにより、情報処理装置１００は、複数のエンドデバイスを有する拡張カードが後から挿入された場合でも、各エンドデバイスに対して仮想アドレスを適切に割り当てることが可能となり、各仮想マシンへのエンドデバイスの割り当てをより簡易化できる。
【００８６】
また、確保仮想アドレステーブルにおいて、確保仮想アドレスは重複しないように一意に設定され、ブリッジ配下に複数のエンドデバイスが検出された場合、各エンドデバイスには、まだ使用されていない仮想アドレスが設定される。これにより、情報処理装置１００内で、各デバイスに割り当てられる仮想アドレスは重複しないように設定されるため、各デバイスにアクセスする際に、仮想アドレスが重複することによる誤動作が発生することが防止される。
【００８７】
以上詳述したように、情報処理装置１００は、ＰＣＩバス２配下のエンドデバイスだけでなく、ブリッジにも仮想アドレスを予め割り当てておくことにより、各仮想マシンへのエンドデバイスの割り当てをより簡易化することが可能となった。
【００８８】
特に、情報処理装置１００では、管理者が情報処理装置１００に仮想マシンを設定してから情報処理装置１００をユーザに提供し、ユーザが情報処理装置１００に拡張カードを搭載するような場合でも、管理者が事前に各デバイスに仮想アドレスを割り当てておく。これにより、十分な知識を有していないユーザが仮想アドレスの割り当てを行う必要がなくなり、ユーザの利便性を向上させることが可能となった。
【００８９】
また、情報処理装置１００では、ＰＣＩバス２配下のエンドデバイスに仮想アドレスが予め割り当てられている。そのため、情報処理装置１００に挿入されていた拡張カード２０が抜かれた場合も、オンボードデバイス等のエンドデバイスに割り当てられていた仮想アドレスは変化しない。したがって、情報処理装置１００では、ＯＳ（Operating System）等によりオンボードデバイスが、過去に認識されたデバイスとは異なるデバイスであると誤って認識され、誤動作が発生することが抑制される。
【００９０】
一方、情報処理装置１００において、複数のエンドデバイスを有する拡張カードが挿抜された場合、そのエンドデバイスに割り当てられていた仮想アドレスは変化する可能性がある。しかしながら、一般に、情報処理装置１００のＯＳは、拡張カードが有するエンドデバイスのアドレスの変化には対応するように設計されているため、拡張カードが有するエンドデバイスのアドレスの変化による誤動作は発生しない。
【００９１】
以上、本発明の好適な実施形態について説明してきたが、本発明はこれらの実施形態に限定されるものではない。例えば、設定部１３１、エンドデバイス検出部１３２、仮想アドレス割り当て部１３３及び提供部１３４により実行される各処理は、ハイパーバイザ部１３５又は特定の仮想マシン部１３６により実行されてもよい。
【００９２】
図９は、他の実施形態に係る情報処理装置における処理回路２４０の概略構成を示すブロック図である。
【００９３】
処理回路２４０は、情報処理装置１００の処理回路１４０の代わりに用いられ、ＣＰＵ１３０の代わりに、検出処理及び割り当て処理を実行する。処理回路２４０は、設定回路２４１、エンドデバイス検出回路２４２、仮想アドレス割り当て回路２４３及び提供回路２４４等を有する。
【００９４】
設定回路２４１は、設定部の一例であり、設定部１３１と同様の機能を有する。設定回路２４１は、入力装置１０２から管理者により入力された各情報を受信し、受信した各情報に基づいてデバイステーブル及び確保仮想アドレステーブルを生成し、記憶装置１２０に記憶する。
【００９５】
エンドデバイス検出回路２４２は、エンドデバイス検出部の一例であり、エンドデバイス検出部１３２と同様の機能を有する。エンドデバイス検出回路２４２は、記憶装置１２０からデバイステーブルを読み出し、デバイステーブルに記憶された各デバイスに対応するエンドデバイスを検出し、検出結果を仮想アドレス割り当て回路２４３に出力する。
【００９６】
仮想アドレス割り当て回路２４３は、仮想アドレス割り当て部の一例であり、仮想アドレス割り当て部１３３と同様の機能を有する。仮想アドレス割り当て回路２４３は、エンドデバイス検出回路２４２から検出結果を受信するとともに、記憶装置１２０からデバイステーブル及び確保仮想アドレステーブルを読み出す。仮想アドレス割り当て回路２４３は、エンドデバイス検出回路２４２により検出された各エンドデバイスに仮想アドレスを割り当てて、割り当て仮想アドレステーブルを生成し、提供回路２４４に出力する。
【００９７】
提供回路２４４は、提供部の一例であり、提供部１３４と同様の機能を有する。提供回路２４４は、仮想アドレス割り当て回路２４３から割り当て仮想アドレステーブルを受信し、ＣＰＵ１３０（ハイパーバイザ部１３５）に出力する。
【００９８】
以上詳述したように、情報処理装置１００は、処理回路２４０を用いる場合においても、各仮想マシンへのエンドデバイスの割り当てをより簡易化することが可能となった。
【符号の説明】
【００９９】
１００    情報処理装置
１２０    記憶装置
１３２    エンドデバイス検出部
１３３    仮想アドレス割り当て部
１３４    提供部
【図１】
2019139417.tif 000003
【図２Ａ】
2019139417.tif 000004
【図２Ｂ】
2019139417.tif 000005
【図２Ｃ】
2019139417.tif 000006
【図２Ｄ】
2019139417.tif 000007
【図３】
2019139417.tif 000008
【図４】
2019139417.tif 000009
【図５】
2019139417.tif 000010
【図６】
2019139417.tif 000011
【図７】
2019139417.tif 000012
【図８】
2019139417.tif 000013
【図９】
2019139417.tif 000014