特許第6035993号(P6035993)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6035993情報処理装置、装置管理方法および装置管理プログラム
<>
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000002
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000003
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000004
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000005
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000006
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000007
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000008
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000009
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000010
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000011
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000012
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000013
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000014
  • 特許6035993-情報処理装置、装置管理方法および装置管理プログラム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6035993
(24)【登録日】2016年11月11日
(45)【発行日】2016年11月30日
(54)【発明の名称】情報処理装置、装置管理方法および装置管理プログラム
(51)【国際特許分類】
   G06F 9/46 20060101AFI20161121BHJP
   G06F 9/445 20060101ALI20161121BHJP
【FI】
   G06F9/46 350
   G06F9/06 610J
【請求項の数】7
【全頁数】22
(21)【出願番号】特願2012-180670(P2012-180670)
(22)【出願日】2012年8月16日
(65)【公開番号】特開2013-206454(P2013-206454A)
(43)【公開日】2013年10月7日
【審査請求日】2015年5月12日
(31)【優先権主張番号】13/431,086
(32)【優先日】2012年3月27日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100089118
【弁理士】
【氏名又は名称】酒井 宏明
(72)【発明者】
【氏名】土手口 正裕
(72)【発明者】
【氏名】岡野 憲司
(72)【発明者】
【氏名】岡部 長博
(72)【発明者】
【氏名】ニコライ・ポリャコフ
(72)【発明者】
【氏名】渡部 礼二
(72)【発明者】
【氏名】五坪 賢次
【審査官】 原 忠
(56)【参考文献】
【文献】 特開2010−009567(JP,A)
【文献】 特開2009−181249(JP,A)
【文献】 特開2011−192194(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46
G06F 9/06
(57)【特許請求の範囲】
【請求項1】
第1のシステムボードと第2のシステムボードとが有するハードウェアリソースを仮想化して仮想マシンを動作させる仮想制御部を有する情報処理装置において、
前記第1のシステムボードは、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用するデータであって、前記第1のシステムボードが有するハードウェアリソースに関する第1のリソース情報を記憶する第1の記憶部と、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで共有するデータであって、前記情報処理装置が有するシステムボードに関する情報を含む管理情報を記憶する管理情報記憶部と、
前記第1の記憶部に記憶された各情報を参照し、命令列を実行する第1の実行制御部と、を有し、
前記第2のシステムボードは、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用する情報であって、前記第2のシステムボードが有するハードウェアリソースに関する第2のリソース情報を記憶する第2の記憶部と、
前記第2の記憶部に記憶された各情報を参照し、命令列を実行する第2の実行制御部と、を有し、
前記仮想制御部は、前記第1のシステムボードおよび前記第2のシステムボードの初期化を実行する場合に、初期化処理を実行する命令を含む命令列を前記第1のシステムボードおよび前記第2のシステムボードにそれぞれ配置する際前記各システムボード内で相対的な位置が同じかつ前記命令列を格納できる容量を連続して確保できる領域、または、前記各システムボードごとに前記命令列を格納できる容量を連続して確保できる領域に、前記命令列を配置し、
配置された前記命令列に基づいて、前記第1のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第1のリソース情報として前記第1の記憶部に格納する初期化処理を前記第1の実行制御部に、前記第2のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第2のリソース情報として前記第2の記憶部に格納する初期化処理を前記第2の実行制御部に、並列に実行させ、
前記第1の実行制御部に、前記第1の記憶部における前記第1のリソース情報の格納位置および前記第2の記憶部における前記第2のリソース情報の格納位置を前記管理情報記憶部に格納させることを特徴とする情報処理装置。
【請求項2】
前記仮想制御部は、第3のシステムボードが前記情報処理装置に追加された場合に、前記第3のシステムボードの第3の記憶部に格納された、初期化処理を実行する命令を含む命令列に基づいて、前記第3のシステムボードの第3の実行制御部に、前記第3のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第3のリソース情報として前記第3の記憶部に格納させる初期化処理を実行させ、
前記第1の実行制御部は、各システムボード内で相対的な位置が同じかつ前記命令列を格納できる容量を連続して確保できる領域、または、前記各システムボードごとに前記命令列を格納できる容量を連続して確保できる領域に、前記命令列を配置することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
第1のシステムボードと第2のシステムボードとが有するハードウェアリソースを仮想化して仮想マシンを動作させる仮想制御部を有する情報処理装置において、
前記第1のシステムボードは、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用するデータであって、前記第1のシステムボードが有するハードウェアリソースに関する第1のリソース情報を記憶する第1の記憶部と、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで共有するデータであって、前記情報処理装置が有するシステムボードに関する情報を含む管理情報を記憶する管理情報記憶部と、
前記第1の記憶部に記憶された各情報を参照し、命令列を実行する第1の実行制御部と、を有し、
前記第2のシステムボードは、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用する情報であって、前記第2のシステムボードが有するハードウェアリソースに関する第2のリソース情報を記憶する第2の記憶部と、
前記第2の記憶部に記憶された各情報を参照し、命令列を実行する第2の実行制御部と、を有し、
前記仮想制御部は、前記第1のシステムボードおよび前記第2のシステムボードの初期化を実行する場合に、初期化処理を実行する命令を含む命令列を前記第1のシステムボードおよび前記第2のシステムボードにそれぞれ配置し、
配置された前記命令列に基づいて、前記第1のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第1のリソース情報として前記第1の記憶部に格納する初期化処理を前記第1の実行制御部に、前記第2のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第2のリソース情報として前記第2の記憶部に格納する初期化処理を前記第2の実行制御部に、並列に実行させ、
前記第1の実行制御部に、前記第1の記憶部における前記第1のリソース情報の格納位置および前記第2の記憶部における前記第2のリソース情報の格納位置を前記管理情報記憶部に格納させ
前記第1の実行制御部は、前記第1のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第1のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第1のリソース情報として前記第1の記憶部に格納し、
前記第2の実行制御部は、前記第2のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第2のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第2のリソース情報として前記第2の記憶部に格納することを特徴とする情報処理装置。
【請求項4】
前記仮想制御部は、第3のシステムボードが前記情報処理装置に追加された場合に、前記第3のシステムボードの第3の記憶部に格納された、初期化処理を実行する命令を含む命令列に基づいて、前記第3のシステムボードの第3の実行制御部に、前記第3のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第3のリソース情報として前記第3の記憶部に格納させる初期化処理を実行させ、
前記第3の実行制御部は、前記第3のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第3のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第3のリソース情報として前記第1の記憶部に格納し、
前記第1の実行制御部は、前記第3の記憶部における前記第3のリソース情報の格納位置を前記管理情報記憶部に格納することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記第1の実行制御部は、前記第1のリソース情報の格納位置と前記第2のリソース情報の格納位置のそれぞれに、前記ポインタ情報を対応付けて前記管理情報記憶部に格納することを特徴とする請求項に記載の情報処理装置。
【請求項6】
第1のシステムボードと第2のシステムボードとが有するハードウェアリソースを仮想化して仮想マシンを動作させる仮想制御部を有する情報処理装置において、
前記第1のシステムボードに、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用するデータであって、前記第1のシステムボードが有するハードウェアリソースに関する第1のリソース情報を第1の記憶部に記憶し、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで共有するデータであって、前記情報処理装置が有するシステムボードに関する情報を含む管理情報を管理情報記憶部に記憶し、
前記第1の記憶部に記憶された各情報を参照し、命令列を実行する処理を実行させ、
前記第2のシステムボードに、
前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用する情報であって、前記第2のシステムボードが有するハードウェアリソースに関するリソース情報を第2の記憶部に記憶し、
前記第2の記憶部に記憶された各情報を参照し、命令列を実行する処理を実行させ、
前記仮想制御部に、
前記第1のシステムボードおよび前記第2のシステムボードの初期化を実行する場合に、初期化処理を実行する命令を含む命令列を前記第1のシステムボードおよび前記第2のシステムボードにそれぞれ配置し、
配置された前記命令列に基づいて、前記第1のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第1のリソース情報として前記第1の記憶部に格納する初期化処理と、前記第2のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第2のリソース情報として前記第2の記憶部に格納する初期化処理とを並列に実行し、
前記第1の記憶部における前記第1のリソース情報の格納位置および前記第2の記憶部における前記第2のリソース情報の格納位置を前記管理情報記憶部に格納する処理を実行させ
さらに、前記第1のシステムボードに、前記第1のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第1のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第1のリソース情報として前記第1の記憶部に格納する処理と、
前記第2のシステムボードに、前記第2のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第2のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第2のリソース情報として前記第2の記憶部に格納する処理を実行させることを特徴とする装置管理プログラム。
【請求項7】
前記仮想制御部に、第3のシステムボードが前記情報処理装置に追加された場合に、前記第3のシステムボードの第3の記憶部に格納された、初期化処理を実行する命令を含む命令列に基づいて、前記第3のシステムボードが有するハードウェアリソースと仮想化されたハードウェアリソースとの対応付けを第3のリソース情報として前記第3の記憶部に格納する初期化処理を実行する処理と、
前記第3のシステムボードに、前記第3のシステムボードが有するプロセッサのリソース情報であるプロセッサ構造体と、前記第3のシステムボードが有する入出力のリソース情報である入出力構造体と、前記プロセッサ構造体と前記入出力構造体を関連付けるポインタ情報を、前記第3のリソース情報として前記第1の記憶部に格納する処理と、
前記第1のシステムボードに、前記第3の記憶部における前記第3のリソース情報の格納位置を前記管理情報記憶部に格納する処理をさらに実行させることを特徴とする請求項6に記載の装置管理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、装置管理方法および装置管理プログラムに関する。
【背景技術】
【0002】
従来、ハイパーバイザなどと呼ばれるファームウェアを動作させて、仮想OS(Operating System)を動作させる仮想化技術が知られている。例えば、複数の物理パーティションを設けたサーバシステムにおいて、各物理パーティションでハイパーバイザを動作させ、各物理パーティションで仮想OSを動作させることも行われている。
【0003】
また、この仮想化技術は、複数のシステムボードで構成されるサーバシステムにも利用される。サーバシステム内には1つのハイパーバイザが動作しており、ハイパーバイザは、1つ以上のOSに仮想化機能を提供して仮想化システムを実現する。
【0004】
図14は、従来の仮想化システムの例を示す図である。図14に示す仮想化システムを実行する情報処理装置であり、この情報処理装置は、3台のシステムボードが搭載可能であり、現状ではSB#0とSB#1の2台のシステムボードが搭載されている。各SBは、2つのCPU(Central Processing Unit)と1つのメモリとを有する。そして、SB#0のメモリは、ハイパーバイザの命令が記述されたプログラムテキストと、ハイパーバイザが使用するデータである管理データとを記憶する。また、SB#0のメモリには、搭載可能なシステムボードの台数分の管理データが格納できる容量が確保されている。すなわち、SB#0のメモリには、管理データとして、SB#0、SB#1、SB#2各々の情報を管理できる領域が確保されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−9567号公報
【特許文献2】特開2006−24214号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の技術では、システムの起動までにかかる時間が長いという問題がある。例えば、ハイパーバイザが自分自身の動作等を制御するために使用する管理データは、サーバシステムの中で1箇所に集中的に確保されていることから、各システムボードの初期化処理等に時間がかかる。
【0007】
図14の場合、SB#0がプログラムテキストと管理データとを保持しているので、SB#0が有するいずれかのCPUが、SB#0の初期化およびSB#1の初期化を実行する。したがって、SB#0のCPUが各SBの初期化処理を順番に実行し、各初期化処理の完了した後に、システムが起動する。このように、システムの起動までにかかる時間が長い。
【0008】
1つの側面では、起動までにかかる時間を短縮することができる情報処理装置、装置管理方法および装置管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
第1の案では、情報処理装置は、第1のシステムボードと第2のシステムボードとが有するハードウェアリソースを仮想化して仮想マシンを動作させる仮想制御部を有する。前記第1のシステムボードは、命令列とリソース情報と管理情報とを記憶する記憶部を有する。命令列は、仮想制御部が実行する命令列である。リソース情報は、前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用するデータであって、前記第1のシステムボードが有するハードウェアリソースに関するリソース情報である。管理情報は、前記仮想制御部が動作する際に使用するデータのうち各システムボードで共有するデータであって、前記仮想マシンに関する情報と前記情報処理装置が有するシステムボードに関する情報とを含む情報である。前記第2のシステムボードは、前記命令列と、前記仮想制御部が動作する際に使用するデータのうち各システムボードで使用する情報であって、前記第2のシステムボードが有するハードウェアリソースに関するリソース情報とを、記憶する記憶部を有する。前記第1のシステムボードおよび前記第2のシステムボードは、自ノードの記憶部に記憶された命令列を実行し、当該自ノードの記憶部に記憶された各情報を参照する実行制御部を有する。
【発明の効果】
【0010】
起動までにかかる時間を短縮することができる。
【図面の簡単な説明】
【0011】
図1図1は、実施例1に係る情報処理装置の全体構成例を示す図である。
図2図2は、実施例2に係る情報処理装置の構成を示す機能ブロック図である。
図3図3は、ローカルデータとして格納される構造体例を説明する図である。
図4図4は、グローバルデータとして格納される構造体例を説明する図である。
図5図5は、実施例2に係る情報処理装置が実行する起動処理の流れを示すフローチャートである。
図6図6は、実施例2に係る情報処理装置が実行するSB初期化処理の流れを示すフローチャートである。
図7図7は、初期化の具体例を示す図である。
図8図8は、従来技術の起動シーケンス図である。
図9図9は、実施例2の起動シーケンス図である。
図10図10は、実施例3に係る情報処理装置が実行する通常処理の流れを示すフローチャートである。
図11図11は、新たなOSを作動させる場合のマスターボードの処理例を説明する図である。
図12図12は、メモリ容量を削減できることを説明する図である。
図13図13は、情報処理装置のハードウェア構成例を示す図である。
図14図14は、従来の仮想化システムの例を示す図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示する情報処理装置、装置管理方法および装置管理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0013】
図1は、実施例1に係る情報処理装置の全体構成例を示す図である。図1に示すように、情報処理装置10は、複数のシステムボード(System Board:SB)が搭載できるシステムである。図1では、情報処理装置10上にSB#0とSB#1とSB#2の3台のSBが搭載されている例を示したが、これに限定されるものではなく、情報処理装置の規模や性能等に応じて、任意の数のSBを搭載させることができる。
【0014】
また、各SBには、少なくとも1つのCPU(Central Processing Unit)と、メモリとが搭載されている。具体的には、SB#0には、CPU14aとCPU14bとメモリ14cとが搭載されている。SB#1には、CPU15aとCPU15bとメモリ15cとが搭載されている。SB#2には、CPU16aとCPU16bとメモリ16cとが搭載されている。
【0015】
各メモリは、プログラムやデータを記憶する記憶装置である。各CPUは、SB全体の制御を司る処理部であり、メモリ等に記憶される命令を読み出して実行する。なお、ここでは、各SB上に2台のCPUと1台のメモリとを搭載する例を示したが、これに限定されるものではなく、SBごとに任意の数のCPUやメモリを搭載させることもでき、他のハードウェアを搭載させることもできる。
【0016】
仮想制御部13は、各SBが有するハードウェアを仮想化して仮想OSを提供する処理部である。例えば、SB#0のCPU14aが、図示しないROM(Read Only Memory)から読み出して実行したハイパーバイザなどが該当する。この仮想制御部13は、SB#0とSB#1に跨って仮想OS11を実行し、SB#2上で仮想OS12を実行する。なお、仮想制御部13は、自分自身のためにメモリの一部を用いてハードウェアを管理するデータを保持し、メモリの残りの容量は仮想OSが使用する。各仮想OSは、SB内のハードウェアを直接制御することができず、仮想制御部13に処理を依頼する。
【0017】
このような構成において、SB#0のメモリ14cは、情報処理装置10上で動作する仮想マシンから要求された処理を実行する命令が記述された命令列14dを記憶する。また、SB#0のメモリには、SB#0が有するハードウェアリソースに関するリソース情報14fと、情報処理装置10が有するシステムボードを管理する管理情報14eとを記憶する。
【0018】
また、SB#1のメモリ15cは、情報処理装置10上で動作する仮想マシンから要求された処理を実行する命令が記述された命令列15dと、SB#1が有するハードウェアリソースに関するリソース情報15eとを記憶する。同様に、SB#2のメモリ16cは、情報処理装置10上で動作する仮想マシンから要求された処理を実行する命令が記述された命令列16dと、SB#2が有するハードウェアリソースに関するリソース情報16eとを記憶する。
【0019】
この管理情報14eは、仮想制御部13が動作する際に使用するデータのうち各システムボードで共有するデータである。例えば、管理情報14eとしては、仮想OSを管理するためのデータ、CPU間の通信で受け渡されるデータ、各システムボードのリソース情報を管理するデータなどがある。また、リソース情報14f、リソース情報15e、リソース情報16e各々は、仮想制御部13が動作する際に使用するデータのうち各システムボードで使用するデータである。例えば、各リソース情報としては、特定のSBを管理または制御する際に使用するデータがある。
【0020】
そして、SB#0のCPU14aまたはCPU14bは、SB#0のメモリ14cに記憶された命令列14dを実行し、SB#0のメモリ14cに記憶された管理情報14eやリソース情報14fを参照する。また、SB#1のCPU15aまたはCPU15bは、SB#1のメモリ15cに記憶された命令列15dを実行し、SB#1のメモリ15cに記憶されたリソース情報15eを参照する。同様に、SB#2のCPU16aまたはCPU16bは、SB#2のメモリ16cに記憶された命令列16dを実行し、SB#2のメモリ16cに記憶されたリソース情報16eを参照する。
【0021】
このようにすることで、各SBのCPUは、情報処理装置10上で動作する仮想マシンから要求された処理を実行する命令、すなわち、仮想マシンを提供する仮想制御部13の命令を実行することができる。つまり、各SBのCPUは、仮想OSから仮想制御部13を介して処理が依頼された場合に、該当する命令をメモリ内の命令列から読み出して実行することができる。また、各SBのCPUは、SB内に閉じた処理についてはリソース情報を参照して、SB内で処理を完了させることができる。
【0022】
このように、情報処理装置10内では管理情報14eが1つであることから、情報処理装置10上では1つの仮想制御部13が実行されている。その一方で、各SBのCPUが、仮想制御部13として動作することができる。この結果、情報処理装置10内では、初期化処理などを並列に実行することができ、情報処理装置の起動までにかかる時間を短縮することができる。
【実施例2】
【0023】
次に、図2から図9を用いて、情報処理装置が起動した際に、各SBを初期化する例について説明する。
【0024】
[機能ブロック図]
図2は、実施例2に係る情報処理装置の構成を示す機能ブロック図である。図2に示すように、情報処理装置20は、SB#0とSB#1とSB#2の3つのシステムボードを搭載する。なお、3つのシステムボードを搭載する例を説明したが、情報処理装置20は、さらに複数のシステムボードを追加で搭載できるものとする。また、ここでは、SB#0が、図示しないROMからハイパーバイザのプログラムを読み出して実行するマスターボードとする。
【0025】
また、情報処理装置20では、各SBを跨ってハイパーバイザ21が実行される。ハイパーバイザ21は、情報処理装置20が起動した場合に、マスターボードであるSB#0のCPU24またはCPU25によって実行される処理部である。ハイパーバイザ21は、起動した後、自身が実行する命令列が記述されたプログラムテキストをROMから読み出してコピーを生成する。そして、情報処理装置20では、コピーしたプログラムテキストを、SB#0のメモリ22とSB#1のメモリ32とSB#2のメモリ42の各々に格納する。
【0026】
このハイパーバイザ21は、各SBが有するハードウェアを仮想化して仮想OSを提供する。例えば、ハイパーバイザ21は、SB#0とSB#1に跨って仮想OS#1を実行し、SB#1上で仮想OS#2を実行し、SB#2上で仮想OS#3を実行する。なお、仮想OSの数等について任意に設定することができる。
【0027】
(SB#0の構成)
図2に示すように、SB#0は、メモリ22と入出力部23とCPU24とCPU25とを有する。なお、ここで例示したCPUの数等はあくまで例示であり、これに限定されるものではない。また、ここでは、CPU24が、SB#0の初期化処理を実行するマスターCPUである例で説明するが、いずれのCPUをマスターCPUとするかを任意に選択することができる。
【0028】
メモリ22は、CPU24またはCPU25が実行するプログラム等を記憶する記憶装置であり、プログラムテキスト22aとローカルデータ22bとグローバルデータ22cとを記憶する。なお、各情報は、CPU24またはCPU25等によって更新される。プログラムテキスト22aは、ハイパーバイザ21の命令が記述された命令列である。
【0029】
ローカルデータ22bは、SB#0が有するハードウェアリソースを管理する情報である。図3は、ローカルデータとして格納される構造体例を説明する図である。図3に示すように、メモリ22は、ローカルデータ22bとしてCPU構造体とI/O構造体とを記憶する。CPU構造体は、仮想OSを動作させているSB#0内のCPUリソースを管理するデータ構造である。具体的には、メモリ22は、ローカルデータ22bとして、CPU情報#0〜CPU情報#n(nは搭載されるCPUの台数)とゲスト構造体ポインタとを記憶する。
【0030】
CPU情報は、CPUのリソース情報であり、例えば、CPUを特定する識別子と動作させている仮想OSを識別する識別子とを対応付けて情報が該当する。CPUを特定する識別子としては、CPUの製造番号や固有の識別番号などを用いることができ、仮想OSを識別する識別子としては、ゲストOSとして動作する仮想OSに割り与えられたゲストIDなどを用いることができる。ゲスト構造体ポインタは、ローカルデータ22bのCPU構造体と、グローバルデータ22cとして記憶されるゲスト構造体とを関連付けるポインタである。なお、ローカルデータ22bには、メモリの空き容量を管理するデータ構造であるmblock構造体も含まれる。
【0031】
I/O構造体は、仮想OSに割り当てられたSB#0内の入出力リソースを管理するデータ構造である。具体的には、メモリ22は、ローカルデータ22bとして、I/O情報#0〜I/O情報#n(nは搭載されるI/Oの台数)とゲスト構造体ポインタとを記憶する。I/O情報は、入出力のリソース情報であり、例えば、入出力部を特定する識別子と、当該入出力部を使用する仮想OSを識別する識別子とを対応付けて情報が該当する。入出力部を特定する識別子としては、入出力部の製造番号や固有の識別番号などを用いることができる。
【0032】
グローバルデータ22cは、情報処理装置20が有するシステムボードを管理する管理情報、すなわち、情報処理装置20全体を管理する情報である。図4は、グローバルデータとして格納される構造体例を説明する図である。図4に示すように、メモリ22は、グローバルデータ22cとして、ポインタ構造体とゲスト構造体とを対応付けて記憶する。ポインタ構造体は、CPU構造体に含まれるゲスト構造体ポインタを示す情報である。ゲスト構造体は、各仮想OSを管理するデータ構造であり、ポインタ構造体のゲスト構造体ポインタごとに対応付けられる。
【0033】
ゲスト構造体は、ゲスト情報とCPU構造体ポインタとI/O構造体ポインタとで構成される。ゲスト情報は、仮想OSを識別する識別子であり、例えば、ゲストOSとして動作する仮想OSに割り与えられたゲストIDなどを用いることができる。CPU構造体ポインタは、仮想OSが使用するCPU情報を特定するポインタである。I/O構造体ポインタは、仮想OSが使用するI/Oを特定するポインタである。このグローバルデータ22cには、仮想OSを管理するためのデータ、CPU間の通信で受け渡される情報、ローカルデータを管理するためのデータなども含まれる。
【0034】
さらに、グローバルデータ22cには、情報処理装置20の構成情報も含まれる。例えば、構成情報としては、搭載可能なSBの数、現在搭載されているSBの数、各SBに搭載されているハードウェアの種類や数などが含まれる。構成情報は、マスターボードのマスターCPUによって更新することもでき、管理者によって手動で更新されてもよい。
【0035】
このようなグローバルデータ22cは、システム全体の管理や制御に使われるデータであり、マスターボードに配置される。グローバルデータ22cの容量はシステム稼動中を通して一定であり、動的な構成変更により変化しない。また、一度割り当てたグローバルデータ22cは、システム稼働中を通して同じ場所にあり、移動することもない。
【0036】
このように、ローカルデータ22bのゲスト構造体ポインタを用いて、グローバルデータ22cのポインタ構造体を特定することができる。また、グローバルデータ22cのポインタ構造体を用いて、グローバルデータ22cのゲスト構造体のゲスト情報を特定することができる。また、グローバルデータ22cのゲスト構造体のゲスト情報のCPU構造体ポインタ#0等を用いて、ローカルデータ22bのCPU構造体のCPU情報#0等を特定することができる。
【0037】
図2に戻り、入出力部23は、データの入出力を実行する処理部である。例えば、入出力部23としては、NIC(Network Interface Card)などの通信インタフェース、ディスクなどの入出力インタフェースなどが該当する。
【0038】
CPU24は、SB#0全体の処理を司る処理部であり、実行制御部24aを有し、SB#0の初期化処理を実行するマスターCPUである。実行制御部24aは、SB#0の初期化を実行する処理部である。具体的には、実行制御部24aは、ハイパーバイザ21によってメモリ22にプログラムテキスト22aが格納された場合に、プログラムテキスト22a内の初期化命令を実行し、ローカルデータ22bを生成してメモリ22に格納する。そして、実行制御部24aは、各SBにおいてローカルデータが生成された後に、グローバルデータ22cを生成してメモリ22に格納する。
【0039】
例を挙げると、実行制御部24aは、プログラムテキスト22aが格納されたことを検知すると、プログラムテキスト22aから、ローカルデータ22bを生成する初期化命令を読み出して実行する。実行制御部24aは、初期化命令を実行することで、SB#0が有するハードウェアの情報を収集し、SB#0に搭載されるCPUの台数や製造番号、メモリの数や製造番号を取得する。そして、実行制御部24aは、CPU構造体と任意のゲスト構造体ポインタとを関連付けたローカルデータ22bを生成して、メモリ22に格納する。なお、ハードウェアの情報は、SB#0の設定情報をスキャンしてもよく、管理者等によって指定されたものを用いることもできる。
【0040】
その後、実行制御部24aは、各SBでローカルデータが生成されるまで待機する。そして、実行制御部24aは、各SBでローカルデータが生成されたことを検知すると、プログラムテキスト22aから、グローバルデータ22cを生成する初期化命令を読み出して実行する。実行制御部24aは、各ローカルデータのCPU情報を収集し、各ゲストOSが使用するCPUを特定する。つまり、実行制御部24aは、各ゲストOSと当該ゲストOSが使用するCPUやI/Oとの対応関係、すなわちゲスト構造体を生成する。そして、実行制御部24aは、ローカルディスクのゲスト構造体ポインタと、ゲスト構造体のゲスト情報とを関連付けたグローバルデータ22cを生成してメモリ22に格納する。
【0041】
CPU25は、SB#0全体の処理を司る処理部であり、実行制御部25aを有する。このCPU25および実行制御部25a各々は、CPU24および実行制御部24a各々と同様の処理を実行する。また、CPU25は、マスターCPUであるCPU24に異常が発生した場合に、マスターCPUとして動作する。
【0042】
(SB#1とSB#2の構成)
次に、SB#1とSB#2の構成について説明するが、SB#1とSB#2とは同様の構成を有するので、ここでは、SB#1を例にして説明する。図2に示すように、SB#1は、SB#0と同様、メモリ32と入出力部33とCPU34とCPU35とを有する。なお、ここで例示したCPUの数等はあくまで例示であり、これに限定されるものではない。また、ここでは、CPU34が、SB#1の初期化処理を実行するマスターCPUである例で説明するが、いずれのCPUをマスターCPUとするかを任意に選択することができる。
【0043】
メモリ32は、CPU34またはCPU35が実行するプログラム等を記憶する記憶装置であり、プログラムテキスト32aとローカルデータ32bとを記憶する。なお、各情報は、CPU34またはCPU35等によって更新される。プログラムテキスト32aは、ハイパーバイザ21の命令が記述された命令列であり、SB#0のメモリ22に記憶されるプログラムテキスト22aと同じ内容である。
【0044】
ローカルデータ32bは、SB#1が有するハードウェアリソースを管理する情報である。ローカルデータ32bは、図3に示した情報と同様の情報を記憶する。つまり、ローカルデータ32bは、仮想OSを動作させているSB#1内のCPUリソースやI/Oリソースを管理するデータ構造である。
【0045】
入出力部33は、データの入出力を実行する処理部である。例えば、入出力部33としては、NICなどの通信インタフェース、ディスクなどの入出力インタフェースなどが該当する。
【0046】
CPU34は、SB#1全体の処理を司る処理部であり、実行制御部34aを有し、SB#1の初期化処理を実行するマスターCPUである。なお、実行制御部34aが実行する初期化処理は、SB#0の実行制御部24aが実行するローカルデータの初期化処理と同様なので、詳細な説明は省略する。
【0047】
CPU35は、SB#1全体の処理を司る処理部であり、実行制御部35aを有する。このCPU35および実行制御部35a各々は、CPU34および実行制御部34a各々と同様の処理を実行する。また、CPU35は、マスターCPUであるCPU34に異常が発生した場合に、マスターCPUとして動作する。
【0048】
[処理の流れ]
次に、図2に示した情報処理装置20が実行する処理の流れについて説明する。ここでは、起動処理の流れ、SB初期化処理の流れについて説明する。
【0049】
(起動処理の流れ)
図5は、実施例2に係る情報処理装置が実行する起動処理の流れを示すフローチャートである。図5に示すように、情報処理装置20に電源が投入されると(S101肯定)、情報処理装置20が有するいずれかのCPUは、ROMからハイパーバイザ21のプログラムを読み出して実行し、ハイパーバイザ21を起動させる(S102)。
【0050】
続いて、ハイパーバイザ21は、マスターボードを選定する(S103)。例えば、ハイパーバイザ21は、予め定めた条件によって、複数のSBから1つのマスターボードを選定する。選定する基準としては、各SBが有する識別番号のうち最小の識別番号を有するSBをマスターボードとして選定してもよい。また、ハイパーバイザ21は、各CPUが有する識別番号のうち最小の識別番号を有するCPUが搭載されたSBをマスターボードとして選定してもよい。また、メモリ領域に変数を用意しておき、その変数を最初に更新したCPUが搭載されるSBをマスターボードとして選定することもできる。ただし、グローバルデータを配置できるメモリ容量を有するSBが好ましい。なお、ここでは、SB#0がマスターボードとして選定されたものとする。
【0051】
その後、ハイパーバイザ21は、プログラムテキストの配置場所を決定して配置する(S104)。具体的には、ハイパーバイザ21は、ROMに格納されるハイパーバイザのプログラムテキストとして各SBにコピーするために、SB内のどのメモリアドレスに配置するかを決定する。例えば、ハイパーバイザ21は、全SBでSB内の相対的な位置が同じで、かつ、プログラムテキストの格納に用いる容量を連続して確保できるメモリ領域を、配置場所として決定する。また、ハイパーバイザ21は、SBごとに、プログラムテキストの格納に用いる容量を連続して確保できるメモリ領域を、配置場所として決定することもできる。
【0052】
続いて、ハイパーバイザ21は、グローバルデータの配置場所を決定する(S105)。具体的には、ハイパーバイザ21は、マスターボードのメモリ上に、グローバルデータの配置場所を決定する。例えば、ハイパーバイザ21は、SB#0のメモリ22において、グローバルデータが格納できる連続した領域を、配置場所に決定する。
【0053】
その後、各SBでSBの初期化処理が実行された後(S106)、各SBの初期化処理が終了すると(S107肯定)、マスターボードであるSB#0のCPU24の実行制御部24aは、グローバルデータ22cの初期化を実行する(S108)。
【0054】
(SB初期化処理の流れ)
図6は、実施例2に係る情報処理装置が実行するSB初期化処理の流れを示すフローチャートである。図6に示すように、各SBではマスターCPUが選定され(S201)、選定されたマスターCPUの実行制御部が、ローカルデータの配置場所を決定する(S202)。例えば、各SBでは、識別番号が最も小さいCPUをマスターCPUと決定する。また、各SBのマスターCPUは、各SBのメモリ内の任意の場所をローカルデータの配置場所と決定することもでき、全SBでSB内の相対的な位置が同じでかつ連続して確保できる領域を配置場所と決定することもできる。
【0055】
続いて、マスターCPUは、メモリ内にCPU管理用の配列を確保する(S203)。具体的には、マスターCPUは、図3に示したCPU構造体を格納する配列をメモリ内に確保する。
【0056】
その後、マスターCPUは、変数(i)に0を代入し(S204)、変数(i)がSB内のCPU数以上か否かを判定する(S205)。そして、マスターCPUは、変数(i)がSB内のCPU数未満である場合(S205否定)、CPU管理用配列のi番目を初期化する(S206)。具体的には、マスターCPUは、図3に示したCPU構造体のCPU情報#iを生成する。そして、マスターCPUは、変数(i)を1増加させた後(S207)、S205に戻って以降の処理を実行する。
【0057】
その後、マスターCPUは、変数(i)がSB内のCPU数以上となった場合(S205肯定)、メモリ内にI/O管理用の配列を確保する(S208)。具体的には、マスターCPUは、図3に示したI/O構造体を格納する配列をメモリ内に確保する。
【0058】
続いて、マスターCPUは、変数(j)に0を代入し(S209)、変数(j)がSB内のI/O数以上か否かを判定する(S210)。そして、マスターCPUは、変数(j)がSB内のI/O数未満である場合(S210否定)、I/O管理用配列のj番目を初期化する(S211)。具体的には、マスターCPUは、図3に示したI/O構造体のI/O情報#jを生成する。そして、マスターCPUは、変数(j)を1増加させた後(S212)、S210に戻って以降の処理を実行する。その後、マスターCPUは、変数(j)がSB内のI/O数以上となった場合(S210肯定)、処理を終了する。なお、ここでは、先にCPU構造体を生成する例を説明したが、先にI/O構造体を生成してもよい。
【0059】
[具体例]
次に、上述した初期化の具体例を説明する。図7は、初期化の具体例を示す図である。図7には、各SBが搭載するハードウェアが仮想化されて仮想OSを動作させた場合に、ローカルデータやグローバルデータが、どのような関係で各種情報を管理するかを示している。図7では、各SB#0が2つのCPUと1つのメモリとを搭載する。
【0060】
このような状態において、まず、ハイパーバイザは、ROM等に格納される、自身が実行する命令列が記述されたプログラムテキストのコピーを各SBのメモリに格納する。また、ハイパーバイザは、ハードウェアリソースを仮想化するための構造を持ち、これらの構造はハードウェアリソースと1対1に対応づけられる。したがって、各SBの実行制御部は、これらの関係性を示すCPU構造体やI/O構造体を生成し、各SBのメモリ上でローカルデータとして保持する。
【0061】
続いて、仮想OSが実行される。ここでは、SB#0の2つのCPUと1つのメモリと、SB#1の1つのCPUとが協働して仮想OS#0を動作さる。また、SB#1では、1つのCPUと1つのメモリとを用いて、仮想OS#1をさらに動作させる。また、SB#2では、2つのCPUを用いて、仮想OS#2を動作させる。
【0062】
すると、マスターボードの実行制御部は、仮想OSと仮想OSが使用するハードウェアとの関係性をグローバルデータとして生成する。具体的には、マスターボードの実行制御部は、各SBにローカルデータとして格納された、CPUやI/Oがどの仮想OSを動作させているかを特定する情報を生成する。
【0063】
つまり、マスターボードの実行制御部は、仮想OS#0に割当てられた仮想ハードウェアが、SB#0内の2つのCPUとSB#1内の1つのCPUとSB#0の1つのI/Oとから形成されることを示す情報を生成する。同様に、マスターボードの実行制御部は、仮想OS#1に割当てられた仮想ハードウェアが、SB#1内の1つのCPUと1つのI/Oとから形成されることを示す情報を生成する。同様に、マスターボードの実行制御部は、仮想OS#2に割当てられた仮想ハードウェアが、SB#2内の2つのCPUから形成されることを示す情報を生成する。
【0064】
このように、実施例2に係る情報処理装置は、ハイパーバイザのプログラムテキストを各SBに配置し、各SB内に閉じた情報であるローカルデータについては各SBのメモリに格納する。また、実施例2に係る情報処理装置は、各SBに跨った情報、各SBを関連付ける情報、各SBに共通する情報、仮想OSに関する情報などであるグローバルデータについては、マスターボードのメモリに格納する。したがって、情報処理装置は、情報処理装置に現に搭載されているSBの数と同じ数のローカルデータと、1つのグローバルデータとを保持する。
【0065】
[比較]
次に、上述した実施例によって情報処理装置の起動時間が短縮できることを説明する。図8は、従来技術に係る情報処理装置の起動シーケンス図である。図9は、実施例2に係る情報処理装置の起動シーケンス図である。
【0066】
従来の情報処理装置は、図14に示したように、SB#0にプログラムテキストと、ローカルデータやグローバルデータとが配置される。つまり、従来の情報処理装置では、ハイパーバイザの作業域がSBとは無関係に配置されるので、作業域の初期化処理の1つのCPUで実行される。例えば、図8に示すように、SB#0が、SB#0の初期化、SB#1の初期化、SB#2の初期化を順に実行する。
【0067】
これに対して、各実施例に係る情報処理装置では、各SBにプログラムテキストとローカルデータとが配置される。つまり、実施例2に係る情報処理装置では、ハイパーバイザの作業域の一部が各SBに分散されるので、初期化処理のうち各SBで並行してできる部分が発生する。例えば、図9に示すように、SB#0とSB#1とSB#2とが、ローカルデータの初期化を並行して実行する。その後、SB#0が、グローバルデータの初期化を実行する。
【0068】
このように、図8図9とを比較してもわかるように、各実施例に係る情報処理装置では、ローカルデータの初期化を並行して実行することができ、SBの初期化にかかる時間を短縮することができる。
【実施例3】
【0069】
実施例2では、各SBの初期化処理について説明したが、各実施例に係る情報処理装置は初期化処理に限定されるものではない。そこで、実施例3では、初期化処理以外の通常処理の流れやOSの追加処理等について説明する。なお、実施例3に係る情報処理装置の機能構成は、実施例2で説明した情報処理装置20と同様とする。
【0070】
(通常処理の流れ)
図10は、実施例3に係る情報処理装置が実行する通常処理の流れを示すフローチャートである。図10に示すように、情報処理装置20内のいずれかのSBで処理依頼が発生した場合に(S301肯定)、当該SBのCPUは、自SB内のプログラムテキストが読めるか否かを判定する(S302)。
【0071】
続いて、当該SBのCPUは、自SB内のプログラムテキストが読めると判定した場合(S302肯定)、自SBが有するメモリ内のプログラムテキストから該当する命令を読み出して実行する(S303)。一方、当該SBのCPUは、自SB内のプログラムテキストが読めないと判定した場合(S302否定)、他のSBが有するメモリ内のプログラムテキストを参照し(S304)、他のSB内のプログラムテキストから該当する命令を読み出して実行する(S303)。
【0072】
その後、命令を実行したSBのCPUは、自SB内が有するメモリ内のローカルデータを参照し(S305)、ローカルデータで処理が完了できるか否かを判定する(S306)。
【0073】
そして、当該SBのCPUは、ローカルデータで処理が完了できると判定した場合(S306肯定)、参照したローカルデータを使用して処理を実行する(S307)。一方、当該SBのCPUは、ローカルデータで処理が完了できないと判定した場合(S306否定)、マスターボードが有するメモリ内のグローバルデータを参照して処理を実行する(S308)。
【0074】
一般的には、OSがハイパーバイザ21に処理を依頼する場合、OSを実行中のCPUの特権レベルをハイパーバイザ特権に昇格させ、ハイパーバイザ21のプログラムテキストの命令列を実行する。この際、OSを実行していたCPUがそのまま使われる。図10の場合、OSからハイパーバイザ21に処理が依頼されると、ハイパーバイザ21は自SB内のプログラムテキストを使用し処理を開始する。ハイパーバイザ21は、依頼された処理がローカルデータを使用して完了できる場合は、他のSBにはアクセスせずに処理を実行してOSに応答を返す。また、ハイパーバイザ21は、依頼された処理がグローバルデータを用いる場合は、マスターボードのグローバルデータを参照または更新して処理を実行する。したがって、マスターボード以外のCPUでこのような処理を行う場合は、グローバルデータを参照するために、SBを越えてメモリアクセスが実行される。
【0075】
例えば、SB#1のCPU34がOSから処理を依頼された場合、CPU34は、SB#1のメモリ32のプログラムテキスト32aを読み出して該当する命令を実行する。そして、SB#1のCPU34は、ローカルデータ32bを参照して処理を実行する。このとき、SB#1のCPU34は、ローカルデータ32bでは処理を完了できない場合には、SB#0のグローバルデータ22cを参照して処理を実行する。
【0076】
(新たなOSの動作)
図11は、新たなOSを動作させる場合のマスターボードの処理例を説明する図である。情報処理装置20において新たなOSを起動させる場合、マスターボードのCPUは、グローバルデータおよびローカルデータの空きメモリ領域から新たなOSを管理するためのデータ構造を切り出して初期化し、ハイパーバイザ21が管理するデータ構造と関連付ける。
【0077】
図11に示すように、まず、マスターボードであるSB#0のCPU24は、新たなOSを管理するためのゲスト構造体と、新たなOSが使うCPUを管理するためのデータ構造とを割り当てる。具体的には、SB#0のCPU24は、グローバルデータ22cの空き領域(free mblock)を探してゲスト構造体を作成し、ローカルデータ22bの空き領域(free mblock)を探してCPU構造体を生成する。次に、SB#0のCPU24は、ゲスト構造体とCPU構造体をポインタでつなぎ、ゲスト構造体をハイパーバイザがサービスを提供する各ゲスト構造体と関連付ける。なお、ここではCPU構造体を例にして説明したが、SB#0のCPU24は、I/O構造体についても同様に実行する。
【0078】
(SBの追加と削除)
新たなSBを追加する場合、マスターボードであるSB#0のCPU24は、新たなSBに関する管理情報をグローバルデータとして追加し、プログラムテキストを新たなSBのメモリに格納する。
【0079】
例えば、SB#0のCPU24は、SB#0内のプログラムテキストまたはROMから読み出したプログラムテキストのコピーを生成し、生成したプログラムテキストを新たに追加されたSB#3のメモリに格納する。続いて、SB#0のCPU24は、初期化命令をSB#3のCPUに発行する。
【0080】
そして、SB#3のCPUは、実施例2で説明した手法と同様、メモリに記憶されたプログラムテキストから初期化命令を実行して、ローカルデータをメモリに生成する。その後、SB#0のCPU24は、グローバルデータ22c内に、SB#3のローカルデータの格納位置を示す情報等を格納する。また、SB#0のCPU24は、既存のSB#2が削除された場合、例えばゲスト構造体のCPU構造体ポインタやI/O構造体ポインタなど、グローバルデータ22c内のSB#2の情報を削除する。
【0081】
(メモリ容量の削減例)
図12は、メモリ容量を削減できることを説明する図である。ここでは、16コアのCPUを1つのSBあたり4個搭載でき、最大16個のSBが搭載可能なシステムでのメモリ使用量を説明する。
【0082】
図12に示すように、この情報処理装置は、SBの搭載数に関係なくグローバルデータの容量が一定であり、SBの搭載数が増加するにつれてローカルデータの容量が増える。例を挙げると、1台のSBが搭載されている状況では、ローカルデータの容量が74.2MBであり、グローバルデータの容量が1191.5MBである。したがって、合計1265.7MBの領域がメモリに確保されていることを示す。
【0083】
従来では、SBの搭載数にかかわらず、常に2378.7MBの領域をハイパーバイザで確保していた。つまり、従来の場合は、図12に示した「SB搭載数が16」に対応した「Total(MB)=2378.7MB」をSB#0のメモリに確保していた。
【0084】
これに対して、実施例1や実施例2で説明した手法を用いることで、図12に示すように、1つのSBを搭載する状態ではハイパーバイザのメモリ使用量を1265.7MBに抑えることができる。つまり、1つのSBを搭載する状態では、従来に比較して約50%程度のメモリの使用量を削減できる。
【0085】
上述してきたように、ハイパーバイザのプログラムテキストを各SBに配置することで、システム内にプログラムテキストのコピーがSB数分存在することになる。したがって、あるCPUがハイパーバイザの処理を行う際は、そのCPUが搭載されたSBにあるプログラムテキストのコピーを使うことで、プログラム列の読み込み速度が向上し処理時間が短縮する。また、SB上のプログラムテキストが壊れたとしても、他のSB上のプログラムテキストを使用することで、SBの故障によりシステムダウンを引き起こす可能性が低くなり、可用性や信頼性が向上する。
【0086】
つまり、SB間でコピーされたプログラムコードは、論理的には同じものだが、物理的には違うプログラムコードなので、複数のハイパーバイザが協調して動作することで可用性や信頼性を向上させることができる。例えば、SB#1のCPUは、SB#1のプログラムテキストが読めない状態になった場合でも、他のSBのプログラムテキストを読み出して実行することができる。
【0087】
また、ローカルデータはシステム設計上の最大SB数ではなく、実際に使用しているSB数に応じた量でよい。また、動的変更により追加や削除されるSBを管理するためのメモリリソースは、そのSB上に確保すればよい。さらに、ハイパーバイザが自分自身で使用するメモリリソースをグローバルデータとローカルデータに分離させたので、両者を関係づけるための情報をグローバルデータに設ける。動的変更によりSBが増加することを想定すると、最大システム構成分の記録場所をあらかじめ用意しておくことになるが、各実施例に係る情報処理装置では、ローカルデータの位置を記録できる容量をグローバルデータ内に確保すればよい。これはメモリリソースと比べると無視できるほど小さい。
【0088】
なお、グローバルデータ内に確保されたローカルデータの位置を記録するデータは、ハイパーバイザの起動時、あるいは動的変更でSBが追加される時点で記録される。また、動的変更でSBが削除される場合は、ローカルデータの位置を記録するグローバルデータ内のポインタを無効化すればよい。
【実施例4】
【0089】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【0090】
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0091】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0092】
(ハードウェア)
実施例1〜3で開示した情報処理装置のハードウェア構成例を説明する。図13は、情報処理装置のハードウェア構成例を示す図である。図13に示すように、情報処理装置は、バックプレーン100に複数のクロスバスイッチとしてXB101、XB102などを有し、クロスバスイッチそれぞれにシステムボードとしてSB110〜SB113と入出力システムボード(IOSB)150とを有する。なお、クロスバスイッチ、システムボード、入出力システムボードの数はあくまで例示であり、これに限定されるものではない。
【0093】
バックプレーン100は、複数のコネクタ等を相互接続するバスを形成する回路基板である。XB101、XB102は、システムボードと入出力システムボードとの間でやり取りされるデータの経路を動的に選択するスイッチである。
【0094】
また、XB101、XB102それぞれに接続されるSB110、SB111、SB112、SB113は、電子機器を構成する電子回路基板であり同様の構成を有するので、ここではSB110について説明する。SB110は、システムコントローラ(System Controller:SC)110aと、4つのCPUと、2つのメモリアクセスコントローラ(Memory Access Controller:MAC)と、2つのDIMM(Dual Inline Memory Module)とを有する。
【0095】
SC110aは、SB110に搭載されるCPU110b〜110eとMAC110f、MAC110gとの間におけるデータ転送などの処理を制御し、SB100全体を制御する。CPU110b〜110eそれぞれは、SC110aを介して他の電子機器と接続され、実施例1〜3で開示したキャッシュの制御を実現するプロセッサである。MAC110fは、DIMM110hとSC110aとの間に接続され、DIMM110hへのアクセスを制御する。MAC110gは、DIMM110iとSC110aとの間に接続され、DIMM110iへのアクセスを制御する。DIMM110hは、SC110aを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。DIMM110iは、SC110aを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。
【0096】
IOSB150は、XB101を介してSB110〜SB113それぞれと接続されるとともに、SCSI(Small Computer System Interface)、FC(Fibre Channel)、イーサネット(登録商標)などを介して入出力デバイスと接続される。IOSB150は、入出力デバイスとXB101との間におけるデータ転送などの処理を制御する。なお、SB110に搭載されるCPU、MAC、DIMMなどの電子機器はあくまで例示であり、電子機器の種類又は電子機器の数が図示したものに限定されるものではない。
【符号の説明】
【0097】
10 情報処理装置
11、12 仮想OS
13 仮想制御部
14a、14b、15a、15b、16a、16b CPU
14c、15c、16c メモリ
14d、15d、16d 命令列
14e 管理情報
14f、15e、16e リソース情報
20 情報処理装置
21 ハイパーバイザ
22、32、42 メモリ
22a、32a、42a プログラムテキスト
22b、32b、42b ローカルデータ
22c グローバルデータ
23、33、43 入出力部
24、25、34、35、44、45 CPU
24a 25a 34a、35a、44a、45a 実行制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14