(57)【特許請求の範囲】
【請求項１】
第１のシステムボードと第２のシステムボードとが有するハードウェアリソースを仮想化して仮想マシンを動作させる仮想制御部を有する情報処理装置において、
前記第１のシステムボードは、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用するデータであって、前記第１のシステムボードが有するハードウェアリソースに関する第１のリソース情報を記憶する第１の記憶部と、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで共有するデータであって、前記情報処理装置が有するシステムボードに関する情報を含む管理情報を記憶する管理情報記憶部と、
前記第１の記憶部に記憶された各情報を参照し、命令列を実行する第１の実行制御部と、を有し、
前記第２のシステムボードは、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用する情報であって、前記第２のシステムボードが有するハードウェアリソースに関する第２のリソース情報を記憶する第２の記憶部と、
前記第２の記憶部に記憶された各情報を参照し、命令列を実行する第２の実行制御部と、を有し、
前記仮想制御部は、前記第１のシステムボードおよび前記第２のシステムボードの初期化を実行する場合に、初期化処理を実行する命令を含む命令列を前記第１のシステムボードおよび前記第２のシステムボードにそれぞれ配置する際、前記各システムボード内で相対的な位置が同じかつ前記命令列を格納できる容量を連続して確保できる領域、または、前記各システムボードごとに前記命令列を格納できる容量を連続して確保できる領域に、前記命令列を配置し、
配置された前記命令列に基づいて、前記第１のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第１のリソース情報として前記第１の記憶部に格納する初期化処理を前記第１の実行制御部に、前記第２のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第２のリソース情報として前記第２の記憶部に格納する初期化処理を前記第２の実行制御部に、並列に実行させ、
前記第１の実行制御部に、前記第１の記憶部における前記第１のリソース情報の格納位置および前記第２の記憶部における前記第２のリソース情報の格納位置を前記管理情報記憶部に格納させることを特徴とする情報処理装置。
【請求項２】
前記仮想制御部は、第３のシステムボードが前記情報処理装置に追加された場合に、前記第３のシステムボードの第３の記憶部に格納された、初期化処理を実行する命令を含む命令列に基づいて、前記第３のシステムボードの第３の実行制御部に、前記第３のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第３のリソース情報として前記第３の記憶部に格納させる初期化処理を実行させ、
前記第１の実行制御部は、各システムボード内で相対的な位置が同じかつ前記命令列を格納できる容量を連続して確保できる領域、または、前記各システムボードごとに前記命令列を格納できる容量を連続して確保できる領域に、前記命令列を配置することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
第１のシステムボードと第２のシステムボードとが有するハードウェアリソースを仮想化して仮想マシンを動作させる仮想制御部を有する情報処理装置において、
前記第１のシステムボードは、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用するデータであって、前記第１のシステムボードが有するハードウェアリソースに関する第１のリソース情報を記憶する第１の記憶部と、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで共有するデータであって、前記情報処理装置が有するシステムボードに関する情報を含む管理情報を記憶する管理情報記憶部と、
前記第１の記憶部に記憶された各情報を参照し、命令列を実行する第１の実行制御部と、を有し、
前記第２のシステムボードは、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用する情報であって、前記第２のシステムボードが有するハードウェアリソースに関する第２のリソース情報を記憶する第２の記憶部と、
前記第２の記憶部に記憶された各情報を参照し、命令列を実行する第２の実行制御部と、を有し、
前記仮想制御部は、前記第１のシステムボードおよび前記第２のシステムボードの初期化を実行する場合に、初期化処理を実行する命令を含む命令列を前記第１のシステムボードおよび前記第２のシステムボードにそれぞれ配置し、
配置された前記命令列に基づいて、前記第１のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第１のリソース情報として前記第１の記憶部に格納する初期化処理を前記第１の実行制御部に、前記第２のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第２のリソース情報として前記第２の記憶部に格納する初期化処理を前記第２の実行制御部に、並列に実行させ、
前記第１の実行制御部に、前記第１の記憶部における前記第１のリソース情報の格納位置および前記第２の記憶部における前記第２のリソース情報の格納位置を前記管理情報記憶部に格納させ、
前記第１の実行制御部は、前記第１のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第１のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第１のリソース情報として前記第１の記憶部に格納し、
前記第２の実行制御部は、前記第２のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第２のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第２のリソース情報として前記第２の記憶部に格納することを特徴とする情報処理装置。
【請求項４】
前記仮想制御部は、第３のシステムボードが前記情報処理装置に追加された場合に、前記第３のシステムボードの第３の記憶部に格納された、初期化処理を実行する命令を含む命令列に基づいて、前記第３のシステムボードの第３の実行制御部に、前記第３のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第３のリソース情報として前記第３の記憶部に格納させる初期化処理を実行させ、
前記第３の実行制御部は、前記第３のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第３のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第３のリソース情報として前記第１の記憶部に格納し、
前記第１の実行制御部は、前記第３の記憶部における前記第３のリソース情報の格納位置を前記管理情報記憶部に格納することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第１の実行制御部は、前記第１のリソース情報の格納位置と前記第２のリソース情報の格納位置のそれぞれに、前記ポインタ情報を対応付けて前記管理情報記憶部に格納することを特徴とする請求項３に記載の情報処理装置。
【請求項６】
第１のシステムボードと第２のシステムボードとが有するハードウェアリソースを仮想化して仮想マシンを動作させる仮想制御部を有する情報処理装置において、
前記第１のシステムボードに、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用するデータであって、前記第１のシステムボードが有するハードウェアリソースに関する第１のリソース情報を第１の記憶部に記憶し、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで共有するデータであって、前記情報処理装置が有するシステムボードに関する情報を含む管理情報を管理情報記憶部に記憶し、
前記第１の記憶部に記憶された各情報を参照し、命令列を実行する処理を実行させ、
前記第２のシステムボードに、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用する情報であって、前記第２のシステムボードが有するハードウェアリソースに関するリソース情報を第２の記憶部に記憶し、
前記第２の記憶部に記憶された各情報を参照し、命令列を実行する処理を実行させ、
前記仮想制御部に、
前記第１のシステムボードおよび前記第２のシステムボードの初期化を実行する場合に、初期化処理を実行する命令を含む命令列を前記第１のシステムボードおよび前記第２のシステムボードにそれぞれ配置し、
配置された前記命令列に基づいて、前記第１のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第１のリソース情報として前記第１の記憶部に格納する初期化処理と、前記第２のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第２のリソース情報として前記第２の記憶部に格納する初期化処理とを並列に実行し、
前記第１の記憶部における前記第１のリソース情報の格納位置および前記第２の記憶部における前記第２のリソース情報の格納位置を前記管理情報記憶部に格納する処理を実行させ、
さらに、前記第１のシステムボードに、前記第１のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第１のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第１のリソース情報として前記第１の記憶部に格納する処理と、
前記第２のシステムボードに、前記第２のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第２のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第２のリソース情報として前記第２の記憶部に格納する処理を実行させることを特徴とする装置管理プログラム。
【請求項７】
前記仮想制御部に、第３のシステムボードが前記情報処理装置に追加された場合に、前記第３のシステムボードの第３の記憶部に格納された、初期化処理を実行する命令を含む命令列に基づいて、前記第３のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第３のリソース情報として前記第３の記憶部に格納する初期化処理を実行する処理と、
前記第３のシステムボードに、前記第３のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第３のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第３のリソース情報として前記第１の記憶部に格納する処理と、
前記第１のシステムボードに、前記第３の記憶部における前記第３のリソース情報の格納位置を前記管理情報記憶部に格納する処理をさらに実行させることを特徴とする請求項６に記載の装置管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、装置管理方法および装置管理プログラムに関する。
【背景技術】
【０００２】
従来、ハイパーバイザなどと呼ばれるファームウェアを動作させて、仮想ＯＳ（Operating  System）を動作させる仮想化技術が知られている。例えば、複数の物理パーティションを設けたサーバシステムにおいて、各物理パーティションでハイパーバイザを動作させ、各物理パーティションで仮想ＯＳを動作させることも行われている。
【０００３】
また、この仮想化技術は、複数のシステムボードで構成されるサーバシステムにも利用される。サーバシステム内には１つのハイパーバイザが動作しており、ハイパーバイザは、１つ以上のＯＳに仮想化機能を提供して仮想化システムを実現する。
【０００４】
図１４は、従来の仮想化システムの例を示す図である。図１４に示す仮想化システムを実行する情報処理装置であり、この情報処理装置は、３台のシステムボードが搭載可能であり、現状ではＳＢ＃０とＳＢ＃１の２台のシステムボードが搭載されている。各ＳＢは、２つのＣＰＵ（Central  Processing  Unit）と１つのメモリとを有する。そして、ＳＢ＃０のメモリは、ハイパーバイザの命令が記述されたプログラムテキストと、ハイパーバイザが使用するデータである管理データとを記憶する。また、ＳＢ＃０のメモリには、搭載可能なシステムボードの台数分の管理データが格納できる容量が確保されている。すなわち、ＳＢ＃０のメモリには、管理データとして、ＳＢ＃０、ＳＢ＃１、ＳＢ＃２各々の情報を管理できる領域が確保されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−９５６７号公報
【特許文献２】特開２００６−２４２１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、システムの起動までにかかる時間が長いという問題がある。例えば、ハイパーバイザが自分自身の動作等を制御するために使用する管理データは、サーバシステムの中で１箇所に集中的に確保されていることから、各システムボードの初期化処理等に時間がかかる。
【０００７】
図１４の場合、ＳＢ＃０がプログラムテキストと管理データとを保持しているので、ＳＢ＃０が有するいずれかのＣＰＵが、ＳＢ＃０の初期化およびＳＢ＃１の初期化を実行する。したがって、ＳＢ＃０のＣＰＵが各ＳＢの初期化処理を順番に実行し、各初期化処理の完了した後に、システムが起動する。このように、システムの起動までにかかる時間が長い。
【０００８】
１つの側面では、起動までにかかる時間を短縮することができる情報処理装置、装置管理方法および装置管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、情報処理装置は、第１のシステムボードと第２のシステムボードとが有するハードウェアリソースを仮想化して仮想マシンを動作させる仮想制御部を有する。前記第１のシステムボードは、命令列とリソース情報と管理情報とを記憶する記憶部を有する。命令列は、仮想制御部が実行する命令列である。リソース情報は、前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用するデータであって、前記第１のシステムボードが有するハードウェアリソースに関するリソース情報である。管理情報は、前記仮想制御部が動作する際に使用するデータのうち各システムボードで共有するデータであって、前記仮想マシンに関する情報と前記情報処理装置が有するシステムボードに関する情報とを含む情報である。前記第２のシステムボードは、前記命令列と、前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用する情報であって、前記第２のシステムボードが有するハードウェアリソースに関するリソース情報とを、記憶する記憶部を有する。前記第１のシステムボードおよび前記第２のシステムボードは、自ノードの記憶部に記憶された命令列を実行し、当該自ノードの記憶部に記憶された各情報を参照する実行制御部を有する。
【発明の効果】
【００１０】
起動までにかかる時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係る情報処理装置の全体構成例を示す図である。
【図２】図２は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。
【図３】図３は、ローカルデータとして格納される構造体例を説明する図である。
【図４】図４は、グローバルデータとして格納される構造体例を説明する図である。
【図５】図５は、実施例２に係る情報処理装置が実行する起動処理の流れを示すフローチャートである。
【図６】図６は、実施例２に係る情報処理装置が実行するＳＢ初期化処理の流れを示すフローチャートである。
【図７】図７は、初期化の具体例を示す図である。
【図８】図８は、従来技術の起動シーケンス図である。
【図９】図９は、実施例２の起動シーケンス図である。
【図１０】図１０は、実施例３に係る情報処理装置が実行する通常処理の流れを示すフローチャートである。
【図１１】図１１は、新たなＯＳを作動させる場合のマスターボードの処理例を説明する図である。
【図１２】図１２は、メモリ容量を削減できることを説明する図である。
【図１３】図１３は、情報処理装置のハードウェア構成例を示す図である。
【図１４】図１４は、従来の仮想化システムの例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する情報処理装置、装置管理方法および装置管理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１３】
図１は、実施例１に係る情報処理装置の全体構成例を示す図である。図１に示すように、情報処理装置１０は、複数のシステムボード（System  Board：SB）が搭載できるシステムである。図１では、情報処理装置１０上にＳＢ＃０とＳＢ＃１とＳＢ＃２の３台のＳＢが搭載されている例を示したが、これに限定されるものではなく、情報処理装置の規模や性能等に応じて、任意の数のＳＢを搭載させることができる。
【００１４】
また、各ＳＢには、少なくとも１つのＣＰＵ（Central  Processing  Unit）と、メモリとが搭載されている。具体的には、ＳＢ＃０には、ＣＰＵ１４ａとＣＰＵ１４ｂとメモリ１４ｃとが搭載されている。ＳＢ＃１には、ＣＰＵ１５ａとＣＰＵ１５ｂとメモリ１５ｃとが搭載されている。ＳＢ＃２には、ＣＰＵ１６ａとＣＰＵ１６ｂとメモリ１６ｃとが搭載されている。
【００１５】
各メモリは、プログラムやデータを記憶する記憶装置である。各ＣＰＵは、ＳＢ全体の制御を司る処理部であり、メモリ等に記憶される命令を読み出して実行する。なお、ここでは、各ＳＢ上に２台のＣＰＵと１台のメモリとを搭載する例を示したが、これに限定されるものではなく、ＳＢごとに任意の数のＣＰＵやメモリを搭載させることもでき、他のハードウェアを搭載させることもできる。
【００１６】
仮想制御部１３は、各ＳＢが有するハードウェアを仮想化して仮想ＯＳを提供する処理部である。例えば、ＳＢ＃０のＣＰＵ１４ａが、図示しないＲＯＭ（Read  Only  Memory）から読み出して実行したハイパーバイザなどが該当する。この仮想制御部１３は、ＳＢ＃０とＳＢ＃１に跨って仮想ＯＳ１１を実行し、ＳＢ＃２上で仮想ＯＳ１２を実行する。なお、仮想制御部１３は、自分自身のためにメモリの一部を用いてハードウェアを管理するデータを保持し、メモリの残りの容量は仮想ＯＳが使用する。各仮想ＯＳは、ＳＢ内のハードウェアを直接制御することができず、仮想制御部１３に処理を依頼する。
【００１７】
このような構成において、ＳＢ＃０のメモリ１４ｃは、情報処理装置１０上で動作する仮想マシンから要求された処理を実行する命令が記述された命令列１４ｄを記憶する。また、ＳＢ＃０のメモリには、ＳＢ＃０が有するハードウェアリソースに関するリソース情報１４ｆと、情報処理装置１０が有するシステムボードを管理する管理情報１４ｅとを記憶する。
【００１８】
また、ＳＢ＃１のメモリ１５ｃは、情報処理装置１０上で動作する仮想マシンから要求された処理を実行する命令が記述された命令列１５ｄと、ＳＢ＃１が有するハードウェアリソースに関するリソース情報１５ｅとを記憶する。同様に、ＳＢ＃２のメモリ１６ｃは、情報処理装置１０上で動作する仮想マシンから要求された処理を実行する命令が記述された命令列１６ｄと、ＳＢ＃２が有するハードウェアリソースに関するリソース情報１６ｅとを記憶する。
【００１９】
この管理情報１４ｅは、仮想制御部１３が動作する際に使用するデータのうち各システムボードで共有するデータである。例えば、管理情報１４ｅとしては、仮想ＯＳを管理するためのデータ、ＣＰＵ間の通信で受け渡されるデータ、各システムボードのリソース情報を管理するデータなどがある。また、リソース情報１４ｆ、リソース情報１５ｅ、リソース情報１６ｅ各々は、仮想制御部１３が動作する際に使用するデータのうち各システムボードで使用するデータである。例えば、各リソース情報としては、特定のＳＢを管理または制御する際に使用するデータがある。
【００２０】
そして、ＳＢ＃０のＣＰＵ１４ａまたはＣＰＵ１４ｂは、ＳＢ＃０のメモリ１４ｃに記憶された命令列１４ｄを実行し、ＳＢ＃０のメモリ１４ｃに記憶された管理情報１４ｅやリソース情報１４ｆを参照する。また、ＳＢ＃１のＣＰＵ１５ａまたはＣＰＵ１５ｂは、ＳＢ＃１のメモリ１５ｃに記憶された命令列１５ｄを実行し、ＳＢ＃１のメモリ１５ｃに記憶されたリソース情報１５ｅを参照する。同様に、ＳＢ＃２のＣＰＵ１６ａまたはＣＰＵ１６ｂは、ＳＢ＃２のメモリ１６ｃに記憶された命令列１６ｄを実行し、ＳＢ＃２のメモリ１６ｃに記憶されたリソース情報１６ｅを参照する。
【００２１】
このようにすることで、各ＳＢのＣＰＵは、情報処理装置１０上で動作する仮想マシンから要求された処理を実行する命令、すなわち、仮想マシンを提供する仮想制御部１３の命令を実行することができる。つまり、各ＳＢのＣＰＵは、仮想ＯＳから仮想制御部１３を介して処理が依頼された場合に、該当する命令をメモリ内の命令列から読み出して実行することができる。また、各ＳＢのＣＰＵは、ＳＢ内に閉じた処理についてはリソース情報を参照して、ＳＢ内で処理を完了させることができる。
【００２２】
このように、情報処理装置１０内では管理情報１４ｅが１つであることから、情報処理装置１０上では１つの仮想制御部１３が実行されている。その一方で、各ＳＢのＣＰＵが、仮想制御部１３として動作することができる。この結果、情報処理装置１０内では、初期化処理などを並列に実行することができ、情報処理装置の起動までにかかる時間を短縮することができる。
【実施例２】
【００２３】
次に、図２から図９を用いて、情報処理装置が起動した際に、各ＳＢを初期化する例について説明する。
【００２４】
［機能ブロック図］
図２は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。図２に示すように、情報処理装置２０は、ＳＢ＃０とＳＢ＃１とＳＢ＃２の３つのシステムボードを搭載する。なお、３つのシステムボードを搭載する例を説明したが、情報処理装置２０は、さらに複数のシステムボードを追加で搭載できるものとする。また、ここでは、ＳＢ＃０が、図示しないＲＯＭからハイパーバイザのプログラムを読み出して実行するマスターボードとする。
【００２５】
また、情報処理装置２０では、各ＳＢを跨ってハイパーバイザ２１が実行される。ハイパーバイザ２１は、情報処理装置２０が起動した場合に、マスターボードであるＳＢ＃０のＣＰＵ２４またはＣＰＵ２５によって実行される処理部である。ハイパーバイザ２１は、起動した後、自身が実行する命令列が記述されたプログラムテキストをＲＯＭから読み出してコピーを生成する。そして、情報処理装置２０では、コピーしたプログラムテキストを、ＳＢ＃０のメモリ２２とＳＢ＃１のメモリ３２とＳＢ＃２のメモリ４２の各々に格納する。
【００２６】
このハイパーバイザ２１は、各ＳＢが有するハードウェアを仮想化して仮想ＯＳを提供する。例えば、ハイパーバイザ２１は、ＳＢ＃０とＳＢ＃１に跨って仮想ＯＳ＃１を実行し、ＳＢ＃１上で仮想ＯＳ＃２を実行し、ＳＢ＃２上で仮想ＯＳ＃３を実行する。なお、仮想ＯＳの数等について任意に設定することができる。
【００２７】
（ＳＢ＃０の構成）
図２に示すように、ＳＢ＃０は、メモリ２２と入出力部２３とＣＰＵ２４とＣＰＵ２５とを有する。なお、ここで例示したＣＰＵの数等はあくまで例示であり、これに限定されるものではない。また、ここでは、ＣＰＵ２４が、ＳＢ＃０の初期化処理を実行するマスターＣＰＵである例で説明するが、いずれのＣＰＵをマスターＣＰＵとするかを任意に選択することができる。
【００２８】
メモリ２２は、ＣＰＵ２４またはＣＰＵ２５が実行するプログラム等を記憶する記憶装置であり、プログラムテキスト２２ａとローカルデータ２２ｂとグローバルデータ２２ｃとを記憶する。なお、各情報は、ＣＰＵ２４またはＣＰＵ２５等によって更新される。プログラムテキスト２２ａは、ハイパーバイザ２１の命令が記述された命令列である。
【００２９】
ローカルデータ２２ｂは、ＳＢ＃０が有するハードウェアリソースを管理する情報である。図３は、ローカルデータとして格納される構造体例を説明する図である。図３に示すように、メモリ２２は、ローカルデータ２２ｂとしてＣＰＵ構造体とＩ／Ｏ構造体とを記憶する。ＣＰＵ構造体は、仮想ＯＳを動作させているＳＢ＃０内のＣＰＵリソースを管理するデータ構造である。具体的には、メモリ２２は、ローカルデータ２２ｂとして、ＣＰＵ情報＃０〜ＣＰＵ情報＃ｎ（ｎは搭載されるＣＰＵの台数）とゲスト構造体ポインタとを記憶する。
【００３０】
ＣＰＵ情報は、ＣＰＵのリソース情報であり、例えば、ＣＰＵを特定する識別子と動作させている仮想ＯＳを識別する識別子とを対応付けて情報が該当する。ＣＰＵを特定する識別子としては、ＣＰＵの製造番号や固有の識別番号などを用いることができ、仮想ＯＳを識別する識別子としては、ゲストＯＳとして動作する仮想ＯＳに割り与えられたゲストＩＤなどを用いることができる。ゲスト構造体ポインタは、ローカルデータ２２ｂのＣＰＵ構造体と、グローバルデータ２２ｃとして記憶されるゲスト構造体とを関連付けるポインタである。なお、ローカルデータ２２ｂには、メモリの空き容量を管理するデータ構造であるｍｂｌｏｃｋ構造体も含まれる。
【００３１】
Ｉ／Ｏ構造体は、仮想ＯＳに割り当てられたＳＢ＃０内の入出力リソースを管理するデータ構造である。具体的には、メモリ２２は、ローカルデータ２２ｂとして、Ｉ／Ｏ情報＃０〜Ｉ／Ｏ情報＃ｎ（ｎは搭載されるＩ／Ｏの台数）とゲスト構造体ポインタとを記憶する。Ｉ／Ｏ情報は、入出力のリソース情報であり、例えば、入出力部を特定する識別子と、当該入出力部を使用する仮想ＯＳを識別する識別子とを対応付けて情報が該当する。入出力部を特定する識別子としては、入出力部の製造番号や固有の識別番号などを用いることができる。
【００３２】
グローバルデータ２２ｃは、情報処理装置２０が有するシステムボードを管理する管理情報、すなわち、情報処理装置２０全体を管理する情報である。図４は、グローバルデータとして格納される構造体例を説明する図である。図４に示すように、メモリ２２は、グローバルデータ２２ｃとして、ポインタ構造体とゲスト構造体とを対応付けて記憶する。ポインタ構造体は、ＣＰＵ構造体に含まれるゲスト構造体ポインタを示す情報である。ゲスト構造体は、各仮想ＯＳを管理するデータ構造であり、ポインタ構造体のゲスト構造体ポインタごとに対応付けられる。
【００３３】
ゲスト構造体は、ゲスト情報とＣＰＵ構造体ポインタとＩ／Ｏ構造体ポインタとで構成される。ゲスト情報は、仮想ＯＳを識別する識別子であり、例えば、ゲストＯＳとして動作する仮想ＯＳに割り与えられたゲストＩＤなどを用いることができる。ＣＰＵ構造体ポインタは、仮想ＯＳが使用するＣＰＵ情報を特定するポインタである。Ｉ／Ｏ構造体ポインタは、仮想ＯＳが使用するＩ／Ｏを特定するポインタである。このグローバルデータ２２ｃには、仮想ＯＳを管理するためのデータ、ＣＰＵ間の通信で受け渡される情報、ローカルデータを管理するためのデータなども含まれる。
【００３４】
さらに、グローバルデータ２２ｃには、情報処理装置２０の構成情報も含まれる。例えば、構成情報としては、搭載可能なＳＢの数、現在搭載されているＳＢの数、各ＳＢに搭載されているハードウェアの種類や数などが含まれる。構成情報は、マスターボードのマスターＣＰＵによって更新することもでき、管理者によって手動で更新されてもよい。
【００３５】
このようなグローバルデータ２２ｃは、システム全体の管理や制御に使われるデータであり、マスターボードに配置される。グローバルデータ２２ｃの容量はシステム稼動中を通して一定であり、動的な構成変更により変化しない。また、一度割り当てたグローバルデータ２２ｃは、システム稼働中を通して同じ場所にあり、移動することもない。
【００３６】
このように、ローカルデータ２２ｂのゲスト構造体ポインタを用いて、グローバルデータ２２ｃのポインタ構造体を特定することができる。また、グローバルデータ２２ｃのポインタ構造体を用いて、グローバルデータ２２ｃのゲスト構造体のゲスト情報を特定することができる。また、グローバルデータ２２ｃのゲスト構造体のゲスト情報のＣＰＵ構造体ポインタ＃０等を用いて、ローカルデータ２２ｂのＣＰＵ構造体のＣＰＵ情報＃０等を特定することができる。
【００３７】
図２に戻り、入出力部２３は、データの入出力を実行する処理部である。例えば、入出力部２３としては、ＮＩＣ（Network  Interface  Card）などの通信インタフェース、ディスクなどの入出力インタフェースなどが該当する。
【００３８】
ＣＰＵ２４は、ＳＢ＃０全体の処理を司る処理部であり、実行制御部２４ａを有し、ＳＢ＃０の初期化処理を実行するマスターＣＰＵである。実行制御部２４ａは、ＳＢ＃０の初期化を実行する処理部である。具体的には、実行制御部２４ａは、ハイパーバイザ２１によってメモリ２２にプログラムテキスト２２ａが格納された場合に、プログラムテキスト２２ａ内の初期化命令を実行し、ローカルデータ２２ｂを生成してメモリ２２に格納する。そして、実行制御部２４ａは、各ＳＢにおいてローカルデータが生成された後に、グローバルデータ２２ｃを生成してメモリ２２に格納する。
【００３９】
例を挙げると、実行制御部２４ａは、プログラムテキスト２２ａが格納されたことを検知すると、プログラムテキスト２２ａから、ローカルデータ２２ｂを生成する初期化命令を読み出して実行する。実行制御部２４ａは、初期化命令を実行することで、ＳＢ＃０が有するハードウェアの情報を収集し、ＳＢ＃０に搭載されるＣＰＵの台数や製造番号、メモリの数や製造番号を取得する。そして、実行制御部２４ａは、ＣＰＵ構造体と任意のゲスト構造体ポインタとを関連付けたローカルデータ２２ｂを生成して、メモリ２２に格納する。なお、ハードウェアの情報は、ＳＢ＃０の設定情報をスキャンしてもよく、管理者等によって指定されたものを用いることもできる。
【００４０】
その後、実行制御部２４ａは、各ＳＢでローカルデータが生成されるまで待機する。そして、実行制御部２４ａは、各ＳＢでローカルデータが生成されたことを検知すると、プログラムテキスト２２ａから、グローバルデータ２２ｃを生成する初期化命令を読み出して実行する。実行制御部２４ａは、各ローカルデータのＣＰＵ情報を収集し、各ゲストＯＳが使用するＣＰＵを特定する。つまり、実行制御部２４ａは、各ゲストＯＳと当該ゲストＯＳが使用するＣＰＵやＩ／Ｏとの対応関係、すなわちゲスト構造体を生成する。そして、実行制御部２４ａは、ローカルディスクのゲスト構造体ポインタと、ゲスト構造体のゲスト情報とを関連付けたグローバルデータ２２ｃを生成してメモリ２２に格納する。
【００４１】
ＣＰＵ２５は、ＳＢ＃０全体の処理を司る処理部であり、実行制御部２５ａを有する。このＣＰＵ２５および実行制御部２５ａ各々は、ＣＰＵ２４および実行制御部２４ａ各々と同様の処理を実行する。また、ＣＰＵ２５は、マスターＣＰＵであるＣＰＵ２４に異常が発生した場合に、マスターＣＰＵとして動作する。
【００４２】
（ＳＢ＃１とＳＢ＃２の構成）
次に、ＳＢ＃１とＳＢ＃２の構成について説明するが、ＳＢ＃１とＳＢ＃２とは同様の構成を有するので、ここでは、ＳＢ＃１を例にして説明する。図２に示すように、ＳＢ＃１は、ＳＢ＃０と同様、メモリ３２と入出力部３３とＣＰＵ３４とＣＰＵ３５とを有する。なお、ここで例示したＣＰＵの数等はあくまで例示であり、これに限定されるものではない。また、ここでは、ＣＰＵ３４が、ＳＢ＃１の初期化処理を実行するマスターＣＰＵである例で説明するが、いずれのＣＰＵをマスターＣＰＵとするかを任意に選択することができる。
【００４３】
メモリ３２は、ＣＰＵ３４またはＣＰＵ３５が実行するプログラム等を記憶する記憶装置であり、プログラムテキスト３２ａとローカルデータ３２ｂとを記憶する。なお、各情報は、ＣＰＵ３４またはＣＰＵ３５等によって更新される。プログラムテキスト３２ａは、ハイパーバイザ２１の命令が記述された命令列であり、ＳＢ＃０のメモリ２２に記憶されるプログラムテキスト２２ａと同じ内容である。
【００４４】
ローカルデータ３２ｂは、ＳＢ＃１が有するハードウェアリソースを管理する情報である。ローカルデータ３２ｂは、図３に示した情報と同様の情報を記憶する。つまり、ローカルデータ３２ｂは、仮想ＯＳを動作させているＳＢ＃１内のＣＰＵリソースやＩ／Ｏリソースを管理するデータ構造である。
【００４５】
入出力部３３は、データの入出力を実行する処理部である。例えば、入出力部３３としては、ＮＩＣなどの通信インタフェース、ディスクなどの入出力インタフェースなどが該当する。
【００４６】
ＣＰＵ３４は、ＳＢ＃１全体の処理を司る処理部であり、実行制御部３４ａを有し、ＳＢ＃１の初期化処理を実行するマスターＣＰＵである。なお、実行制御部３４ａが実行する初期化処理は、ＳＢ＃０の実行制御部２４ａが実行するローカルデータの初期化処理と同様なので、詳細な説明は省略する。
【００４７】
ＣＰＵ３５は、ＳＢ＃１全体の処理を司る処理部であり、実行制御部３５ａを有する。このＣＰＵ３５および実行制御部３５ａ各々は、ＣＰＵ３４および実行制御部３４ａ各々と同様の処理を実行する。また、ＣＰＵ３５は、マスターＣＰＵであるＣＰＵ３４に異常が発生した場合に、マスターＣＰＵとして動作する。
【００４８】
［処理の流れ］
次に、図２に示した情報処理装置２０が実行する処理の流れについて説明する。ここでは、起動処理の流れ、ＳＢ初期化処理の流れについて説明する。
【００４９】
（起動処理の流れ）
図５は、実施例２に係る情報処理装置が実行する起動処理の流れを示すフローチャートである。図５に示すように、情報処理装置２０に電源が投入されると（Ｓ１０１肯定）、情報処理装置２０が有するいずれかのＣＰＵは、ＲＯＭからハイパーバイザ２１のプログラムを読み出して実行し、ハイパーバイザ２１を起動させる（Ｓ１０２）。
【００５０】
続いて、ハイパーバイザ２１は、マスターボードを選定する（Ｓ１０３）。例えば、ハイパーバイザ２１は、予め定めた条件によって、複数のＳＢから１つのマスターボードを選定する。選定する基準としては、各ＳＢが有する識別番号のうち最小の識別番号を有するＳＢをマスターボードとして選定してもよい。また、ハイパーバイザ２１は、各ＣＰＵが有する識別番号のうち最小の識別番号を有するＣＰＵが搭載されたＳＢをマスターボードとして選定してもよい。また、メモリ領域に変数を用意しておき、その変数を最初に更新したＣＰＵが搭載されるＳＢをマスターボードとして選定することもできる。ただし、グローバルデータを配置できるメモリ容量を有するＳＢが好ましい。なお、ここでは、ＳＢ＃０がマスターボードとして選定されたものとする。
【００５１】
その後、ハイパーバイザ２１は、プログラムテキストの配置場所を決定して配置する（Ｓ１０４）。具体的には、ハイパーバイザ２１は、ＲＯＭに格納されるハイパーバイザのプログラムテキストとして各ＳＢにコピーするために、ＳＢ内のどのメモリアドレスに配置するかを決定する。例えば、ハイパーバイザ２１は、全ＳＢでＳＢ内の相対的な位置が同じで、かつ、プログラムテキストの格納に用いる容量を連続して確保できるメモリ領域を、配置場所として決定する。また、ハイパーバイザ２１は、ＳＢごとに、プログラムテキストの格納に用いる容量を連続して確保できるメモリ領域を、配置場所として決定することもできる。
【００５２】
続いて、ハイパーバイザ２１は、グローバルデータの配置場所を決定する（Ｓ１０５）。具体的には、ハイパーバイザ２１は、マスターボードのメモリ上に、グローバルデータの配置場所を決定する。例えば、ハイパーバイザ２１は、ＳＢ＃０のメモリ２２において、グローバルデータが格納できる連続した領域を、配置場所に決定する。
【００５３】
その後、各ＳＢでＳＢの初期化処理が実行された後（Ｓ１０６）、各ＳＢの初期化処理が終了すると（Ｓ１０７肯定）、マスターボードであるＳＢ＃０のＣＰＵ２４の実行制御部２４ａは、グローバルデータ２２ｃの初期化を実行する（Ｓ１０８）。
【００５４】
（ＳＢ初期化処理の流れ）
図６は、実施例２に係る情報処理装置が実行するＳＢ初期化処理の流れを示すフローチャートである。図６に示すように、各ＳＢではマスターＣＰＵが選定され（Ｓ２０１）、選定されたマスターＣＰＵの実行制御部が、ローカルデータの配置場所を決定する（Ｓ２０２）。例えば、各ＳＢでは、識別番号が最も小さいＣＰＵをマスターＣＰＵと決定する。また、各ＳＢのマスターＣＰＵは、各ＳＢのメモリ内の任意の場所をローカルデータの配置場所と決定することもでき、全ＳＢでＳＢ内の相対的な位置が同じでかつ連続して確保できる領域を配置場所と決定することもできる。
【００５５】
続いて、マスターＣＰＵは、メモリ内にＣＰＵ管理用の配列を確保する（Ｓ２０３）。具体的には、マスターＣＰＵは、図３に示したＣＰＵ構造体を格納する配列をメモリ内に確保する。
【００５６】
その後、マスターＣＰＵは、変数（ｉ）に０を代入し（Ｓ２０４）、変数（ｉ）がＳＢ内のＣＰＵ数以上か否かを判定する（Ｓ２０５）。そして、マスターＣＰＵは、変数（ｉ）がＳＢ内のＣＰＵ数未満である場合（Ｓ２０５否定）、ＣＰＵ管理用配列のｉ番目を初期化する（Ｓ２０６）。具体的には、マスターＣＰＵは、図３に示したＣＰＵ構造体のＣＰＵ情報＃ｉを生成する。そして、マスターＣＰＵは、変数（ｉ）を１増加させた後（Ｓ２０７）、Ｓ２０５に戻って以降の処理を実行する。
【００５７】
その後、マスターＣＰＵは、変数（ｉ）がＳＢ内のＣＰＵ数以上となった場合（Ｓ２０５肯定）、メモリ内にＩ／Ｏ管理用の配列を確保する（Ｓ２０８）。具体的には、マスターＣＰＵは、図３に示したＩ／Ｏ構造体を格納する配列をメモリ内に確保する。
【００５８】
続いて、マスターＣＰＵは、変数（ｊ）に０を代入し（Ｓ２０９）、変数（ｊ）がＳＢ内のＩ／Ｏ数以上か否かを判定する（Ｓ２１０）。そして、マスターＣＰＵは、変数（ｊ）がＳＢ内のＩ／Ｏ数未満である場合（Ｓ２１０否定）、Ｉ／Ｏ管理用配列のｊ番目を初期化する（Ｓ２１１）。具体的には、マスターＣＰＵは、図３に示したＩ／Ｏ構造体のＩ／Ｏ情報＃ｊを生成する。そして、マスターＣＰＵは、変数（ｊ）を１増加させた後（Ｓ２１２）、Ｓ２１０に戻って以降の処理を実行する。その後、マスターＣＰＵは、変数（ｊ）がＳＢ内のＩ／Ｏ数以上となった場合（Ｓ２１０肯定）、処理を終了する。なお、ここでは、先にＣＰＵ構造体を生成する例を説明したが、先にＩ／Ｏ構造体を生成してもよい。
【００５９】
［具体例］
次に、上述した初期化の具体例を説明する。図７は、初期化の具体例を示す図である。図７には、各ＳＢが搭載するハードウェアが仮想化されて仮想ＯＳを動作させた場合に、ローカルデータやグローバルデータが、どのような関係で各種情報を管理するかを示している。図７では、各ＳＢ＃０が２つのＣＰＵと１つのメモリとを搭載する。
【００６０】
このような状態において、まず、ハイパーバイザは、ＲＯＭ等に格納される、自身が実行する命令列が記述されたプログラムテキストのコピーを各ＳＢのメモリに格納する。また、ハイパーバイザは、ハードウェアリソースを仮想化するための構造を持ち、これらの構造はハードウェアリソースと１対１に対応づけられる。したがって、各ＳＢの実行制御部は、これらの関係性を示すＣＰＵ構造体やＩ／Ｏ構造体を生成し、各ＳＢのメモリ上でローカルデータとして保持する。
【００６１】
続いて、仮想ＯＳが実行される。ここでは、ＳＢ＃０の２つのＣＰＵと１つのメモリと、ＳＢ＃１の１つのＣＰＵとが協働して仮想ＯＳ＃０を動作さる。また、ＳＢ＃１では、１つのＣＰＵと１つのメモリとを用いて、仮想ＯＳ＃１をさらに動作させる。また、ＳＢ＃２では、２つのＣＰＵを用いて、仮想ＯＳ＃２を動作させる。
【００６２】
すると、マスターボードの実行制御部は、仮想ＯＳと仮想ＯＳが使用するハードウェアとの関係性をグローバルデータとして生成する。具体的には、マスターボードの実行制御部は、各ＳＢにローカルデータとして格納された、ＣＰＵやＩ／Ｏがどの仮想ＯＳを動作させているかを特定する情報を生成する。
【００６３】
つまり、マスターボードの実行制御部は、仮想ＯＳ＃０に割当てられた仮想ハードウェアが、ＳＢ＃０内の２つのＣＰＵとＳＢ＃１内の１つのＣＰＵとＳＢ＃０の１つのＩ／Ｏとから形成されることを示す情報を生成する。同様に、マスターボードの実行制御部は、仮想ＯＳ＃１に割当てられた仮想ハードウェアが、ＳＢ＃１内の１つのＣＰＵと１つのＩ／Ｏとから形成されることを示す情報を生成する。同様に、マスターボードの実行制御部は、仮想ＯＳ＃２に割当てられた仮想ハードウェアが、ＳＢ＃２内の２つのＣＰＵから形成されることを示す情報を生成する。
【００６４】
このように、実施例２に係る情報処理装置は、ハイパーバイザのプログラムテキストを各ＳＢに配置し、各ＳＢ内に閉じた情報であるローカルデータについては各ＳＢのメモリに格納する。また、実施例２に係る情報処理装置は、各ＳＢに跨った情報、各ＳＢを関連付ける情報、各ＳＢに共通する情報、仮想ＯＳに関する情報などであるグローバルデータについては、マスターボードのメモリに格納する。したがって、情報処理装置は、情報処理装置に現に搭載されているＳＢの数と同じ数のローカルデータと、１つのグローバルデータとを保持する。
【００６５】
［比較］
次に、上述した実施例によって情報処理装置の起動時間が短縮できることを説明する。図８は、従来技術に係る情報処理装置の起動シーケンス図である。図９は、実施例２に係る情報処理装置の起動シーケンス図である。
【００６６】
従来の情報処理装置は、図１４に示したように、ＳＢ＃０にプログラムテキストと、ローカルデータやグローバルデータとが配置される。つまり、従来の情報処理装置では、ハイパーバイザの作業域がＳＢとは無関係に配置されるので、作業域の初期化処理の１つのＣＰＵで実行される。例えば、図８に示すように、ＳＢ＃０が、ＳＢ＃０の初期化、ＳＢ＃１の初期化、ＳＢ＃２の初期化を順に実行する。
【００６７】
これに対して、各実施例に係る情報処理装置では、各ＳＢにプログラムテキストとローカルデータとが配置される。つまり、実施例２に係る情報処理装置では、ハイパーバイザの作業域の一部が各ＳＢに分散されるので、初期化処理のうち各ＳＢで並行してできる部分が発生する。例えば、図９に示すように、ＳＢ＃０とＳＢ＃１とＳＢ＃２とが、ローカルデータの初期化を並行して実行する。その後、ＳＢ＃０が、グローバルデータの初期化を実行する。
【００６８】
このように、図８と図９とを比較してもわかるように、各実施例に係る情報処理装置では、ローカルデータの初期化を並行して実行することができ、ＳＢの初期化にかかる時間を短縮することができる。
【実施例３】
【００６９】
実施例２では、各ＳＢの初期化処理について説明したが、各実施例に係る情報処理装置は初期化処理に限定されるものではない。そこで、実施例３では、初期化処理以外の通常処理の流れやＯＳの追加処理等について説明する。なお、実施例３に係る情報処理装置の機能構成は、実施例２で説明した情報処理装置２０と同様とする。
【００７０】
（通常処理の流れ）
図１０は、実施例３に係る情報処理装置が実行する通常処理の流れを示すフローチャートである。図１０に示すように、情報処理装置２０内のいずれかのＳＢで処理依頼が発生した場合に（Ｓ３０１肯定）、当該ＳＢのＣＰＵは、自ＳＢ内のプログラムテキストが読めるか否かを判定する（Ｓ３０２）。
【００７１】
続いて、当該ＳＢのＣＰＵは、自ＳＢ内のプログラムテキストが読めると判定した場合（Ｓ３０２肯定）、自ＳＢが有するメモリ内のプログラムテキストから該当する命令を読み出して実行する（Ｓ３０３）。一方、当該ＳＢのＣＰＵは、自ＳＢ内のプログラムテキストが読めないと判定した場合（Ｓ３０２否定）、他のＳＢが有するメモリ内のプログラムテキストを参照し（Ｓ３０４）、他のＳＢ内のプログラムテキストから該当する命令を読み出して実行する（Ｓ３０３）。
【００７２】
その後、命令を実行したＳＢのＣＰＵは、自ＳＢ内が有するメモリ内のローカルデータを参照し（Ｓ３０５）、ローカルデータで処理が完了できるか否かを判定する（Ｓ３０６）。
【００７３】
そして、当該ＳＢのＣＰＵは、ローカルデータで処理が完了できると判定した場合（Ｓ３０６肯定）、参照したローカルデータを使用して処理を実行する（Ｓ３０７）。一方、当該ＳＢのＣＰＵは、ローカルデータで処理が完了できないと判定した場合（Ｓ３０６否定）、マスターボードが有するメモリ内のグローバルデータを参照して処理を実行する（Ｓ３０８）。
【００７４】
一般的には、ＯＳがハイパーバイザ２１に処理を依頼する場合、ＯＳを実行中のＣＰＵの特権レベルをハイパーバイザ特権に昇格させ、ハイパーバイザ２１のプログラムテキストの命令列を実行する。この際、ＯＳを実行していたＣＰＵがそのまま使われる。図１０の場合、ＯＳからハイパーバイザ２１に処理が依頼されると、ハイパーバイザ２１は自ＳＢ内のプログラムテキストを使用し処理を開始する。ハイパーバイザ２１は、依頼された処理がローカルデータを使用して完了できる場合は、他のＳＢにはアクセスせずに処理を実行してＯＳに応答を返す。また、ハイパーバイザ２１は、依頼された処理がグローバルデータを用いる場合は、マスターボードのグローバルデータを参照または更新して処理を実行する。したがって、マスターボード以外のＣＰＵでこのような処理を行う場合は、グローバルデータを参照するために、ＳＢを越えてメモリアクセスが実行される。
【００７５】
例えば、ＳＢ＃１のＣＰＵ３４がＯＳから処理を依頼された場合、ＣＰＵ３４は、ＳＢ＃１のメモリ３２のプログラムテキスト３２ａを読み出して該当する命令を実行する。そして、ＳＢ＃１のＣＰＵ３４は、ローカルデータ３２ｂを参照して処理を実行する。このとき、ＳＢ＃１のＣＰＵ３４は、ローカルデータ３２ｂでは処理を完了できない場合には、ＳＢ＃０のグローバルデータ２２ｃを参照して処理を実行する。
【００７６】
（新たなＯＳの動作）
図１１は、新たなＯＳを動作させる場合のマスターボードの処理例を説明する図である。情報処理装置２０において新たなＯＳを起動させる場合、マスターボードのＣＰＵは、グローバルデータおよびローカルデータの空きメモリ領域から新たなＯＳを管理するためのデータ構造を切り出して初期化し、ハイパーバイザ２１が管理するデータ構造と関連付ける。
【００７７】
図１１に示すように、まず、マスターボードであるＳＢ＃０のＣＰＵ２４は、新たなＯＳを管理するためのゲスト構造体と、新たなＯＳが使うＣＰＵを管理するためのデータ構造とを割り当てる。具体的には、ＳＢ＃０のＣＰＵ２４は、グローバルデータ２２ｃの空き領域（free  mblock）を探してゲスト構造体を作成し、ローカルデータ２２ｂの空き領域（free  mblock）を探してＣＰＵ構造体を生成する。次に、ＳＢ＃０のＣＰＵ２４は、ゲスト構造体とＣＰＵ構造体をポインタでつなぎ、ゲスト構造体をハイパーバイザがサービスを提供する各ゲスト構造体と関連付ける。なお、ここではＣＰＵ構造体を例にして説明したが、ＳＢ＃０のＣＰＵ２４は、Ｉ／Ｏ構造体についても同様に実行する。
【００７８】
（ＳＢの追加と削除）
新たなＳＢを追加する場合、マスターボードであるＳＢ＃０のＣＰＵ２４は、新たなＳＢに関する管理情報をグローバルデータとして追加し、プログラムテキストを新たなＳＢのメモリに格納する。
【００７９】
例えば、ＳＢ＃０のＣＰＵ２４は、ＳＢ＃０内のプログラムテキストまたはＲＯＭから読み出したプログラムテキストのコピーを生成し、生成したプログラムテキストを新たに追加されたＳＢ＃３のメモリに格納する。続いて、ＳＢ＃０のＣＰＵ２４は、初期化命令をＳＢ＃３のＣＰＵに発行する。
【００８０】
そして、ＳＢ＃３のＣＰＵは、実施例２で説明した手法と同様、メモリに記憶されたプログラムテキストから初期化命令を実行して、ローカルデータをメモリに生成する。その後、ＳＢ＃０のＣＰＵ２４は、グローバルデータ２２ｃ内に、ＳＢ＃３のローカルデータの格納位置を示す情報等を格納する。また、ＳＢ＃０のＣＰＵ２４は、既存のＳＢ＃２が削除された場合、例えばゲスト構造体のＣＰＵ構造体ポインタやＩ／Ｏ構造体ポインタなど、グローバルデータ２２ｃ内のＳＢ＃２の情報を削除する。
【００８１】
（メモリ容量の削減例）
図１２は、メモリ容量を削減できることを説明する図である。ここでは、１６コアのＣＰＵを１つのＳＢあたり４個搭載でき、最大１６個のＳＢが搭載可能なシステムでのメモリ使用量を説明する。
【００８２】
図１２に示すように、この情報処理装置は、ＳＢの搭載数に関係なくグローバルデータの容量が一定であり、ＳＢの搭載数が増加するにつれてローカルデータの容量が増える。例を挙げると、１台のＳＢが搭載されている状況では、ローカルデータの容量が７４．２ＭＢであり、グローバルデータの容量が１１９１．５ＭＢである。したがって、合計１２６５．７ＭＢの領域がメモリに確保されていることを示す。
【００８３】
従来では、ＳＢの搭載数にかかわらず、常に２３７８．７ＭＢの領域をハイパーバイザで確保していた。つまり、従来の場合は、図１２に示した「ＳＢ搭載数が１６」に対応した「Ｔｏｔａｌ（ＭＢ）＝２３７８．７ＭＢ」をＳＢ＃０のメモリに確保していた。
【００８４】
これに対して、実施例１や実施例２で説明した手法を用いることで、図１２に示すように、１つのＳＢを搭載する状態ではハイパーバイザのメモリ使用量を１２６５．７ＭＢに抑えることができる。つまり、１つのＳＢを搭載する状態では、従来に比較して約５０％程度のメモリの使用量を削減できる。
【００８５】
上述してきたように、ハイパーバイザのプログラムテキストを各ＳＢに配置することで、システム内にプログラムテキストのコピーがＳＢ数分存在することになる。したがって、あるＣＰＵがハイパーバイザの処理を行う際は、そのＣＰＵが搭載されたＳＢにあるプログラムテキストのコピーを使うことで、プログラム列の読み込み速度が向上し処理時間が短縮する。また、ＳＢ上のプログラムテキストが壊れたとしても、他のＳＢ上のプログラムテキストを使用することで、ＳＢの故障によりシステムダウンを引き起こす可能性が低くなり、可用性や信頼性が向上する。
【００８６】
つまり、ＳＢ間でコピーされたプログラムコードは、論理的には同じものだが、物理的には違うプログラムコードなので、複数のハイパーバイザが協調して動作することで可用性や信頼性を向上させることができる。例えば、ＳＢ＃１のＣＰＵは、ＳＢ＃１のプログラムテキストが読めない状態になった場合でも、他のＳＢのプログラムテキストを読み出して実行することができる。
【００８７】
また、ローカルデータはシステム設計上の最大ＳＢ数ではなく、実際に使用しているＳＢ数に応じた量でよい。また、動的変更により追加や削除されるＳＢを管理するためのメモリリソースは、そのＳＢ上に確保すればよい。さらに、ハイパーバイザが自分自身で使用するメモリリソースをグローバルデータとローカルデータに分離させたので、両者を関係づけるための情報をグローバルデータに設ける。動的変更によりＳＢが増加することを想定すると、最大システム構成分の記録場所をあらかじめ用意しておくことになるが、各実施例に係る情報処理装置では、ローカルデータの位置を記録できる容量をグローバルデータ内に確保すればよい。これはメモリリソースと比べると無視できるほど小さい。
【００８８】
なお、グローバルデータ内に確保されたローカルデータの位置を記録するデータは、ハイパーバイザの起動時、あるいは動的変更でＳＢが追加される時点で記録される。また、動的変更でＳＢが削除される場合は、ローカルデータの位置を記録するグローバルデータ内のポインタを無効化すればよい。
【実施例４】
【００８９】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００９０】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００９１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９２】
（ハードウェア）
実施例１〜３で開示した情報処理装置のハードウェア構成例を説明する。図１３は、情報処理装置のハードウェア構成例を示す図である。図１３に示すように、情報処理装置は、バックプレーン１００に複数のクロスバスイッチとしてＸＢ１０１、ＸＢ１０２などを有し、クロスバスイッチそれぞれにシステムボードとしてＳＢ１１０〜ＳＢ１１３と入出力システムボード（ＩＯＳＢ）１５０とを有する。なお、クロスバスイッチ、システムボード、入出力システムボードの数はあくまで例示であり、これに限定されるものではない。
【００９３】
バックプレーン１００は、複数のコネクタ等を相互接続するバスを形成する回路基板である。ＸＢ１０１、ＸＢ１０２は、システムボードと入出力システムボードとの間でやり取りされるデータの経路を動的に選択するスイッチである。
【００９４】
また、ＸＢ１０１、ＸＢ１０２それぞれに接続されるＳＢ１１０、ＳＢ１１１、ＳＢ１１２、ＳＢ１１３は、電子機器を構成する電子回路基板であり同様の構成を有するので、ここではＳＢ１１０について説明する。ＳＢ１１０は、システムコントローラ（System  Controller：SC）１１０ａと、４つのＣＰＵと、２つのメモリアクセスコントローラ（Memory  Access  Controller：MAC）と、２つのＤＩＭＭ（Dual  Inline  Memory  Module）とを有する。
【００９５】
ＳＣ１１０ａは、ＳＢ１１０に搭載されるＣＰＵ１１０ｂ〜１１０ｅとＭＡＣ１１０ｆ、ＭＡＣ１１０ｇとの間におけるデータ転送などの処理を制御し、ＳＢ１００全体を制御する。ＣＰＵ１１０ｂ〜１１０ｅそれぞれは、ＳＣ１１０ａを介して他の電子機器と接続され、実施例１〜３で開示したキャッシュの制御を実現するプロセッサである。ＭＡＣ１１０ｆは、ＤＩＭＭ１１０ｈとＳＣ１１０ａとの間に接続され、ＤＩＭＭ１１０ｈへのアクセスを制御する。ＭＡＣ１１０ｇは、ＤＩＭＭ１１０ｉとＳＣ１１０ａとの間に接続され、ＤＩＭＭ１１０ｉへのアクセスを制御する。ＤＩＭＭ１１０ｈは、ＳＣ１１０ａを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。ＤＩＭＭ１１０ｉは、ＳＣ１１０ａを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。
【００９６】
ＩＯＳＢ１５０は、ＸＢ１０１を介してＳＢ１１０〜ＳＢ１１３それぞれと接続されるとともに、ＳＣＳＩ（Small  Computer  System  Interface）、ＦＣ（Fibre  Channel）、イーサネット（登録商標）などを介して入出力デバイスと接続される。ＩＯＳＢ１５０は、入出力デバイスとＸＢ１０１との間におけるデータ転送などの処理を制御する。なお、ＳＢ１１０に搭載されるＣＰＵ、ＭＡＣ、ＤＩＭＭなどの電子機器はあくまで例示であり、電子機器の種類又は電子機器の数が図示したものに限定されるものではない。
【符号の説明】
【００９７】
１０  情報処理装置
１１、１２  仮想ＯＳ
１３  仮想制御部
１４ａ、１４ｂ、１５ａ、１５ｂ、１６ａ、１６ｂ  ＣＰＵ
１４ｃ、１５ｃ、１６ｃ  メモリ
１４ｄ、１５ｄ、１６ｄ  命令列
１４ｅ  管理情報
１４ｆ、１５ｅ、１６ｅ  リソース情報
２０  情報処理装置
２１  ハイパーバイザ
２２、３２、４２  メモリ
２２ａ、３２ａ、４２ａ  プログラムテキスト
２２ｂ、３２ｂ、４２ｂ  ローカルデータ
２２ｃ  グローバルデータ
２３、３３、４３  入出力部
２４、２５、３４、３５、４４、４５  ＣＰＵ
２４ａ  ２５ａ  ３４ａ、３５ａ、４４ａ、４５ａ  実行制御部
【図１】
0006035993.tif 000002
【図２】
0006035993.tif 000003
【図３】
0006035993.tif 000004
【図４】
0006035993.tif 000005
【図５】
0006035993.tif 000006
【図６】
0006035993.tif 000007
【図７】
0006035993.tif 000008
【図８】
0006035993.tif 000009
【図９】
0006035993.tif 000010
【図１０】
0006035993.tif 000011
【図１１】
0006035993.tif 000012
【図１２】
0006035993.tif 000013
【図１３】
0006035993.tif 000014
【図１４】
0006035993.tif 000015