(57)【要約】  複数のプロセッサを備え、それら複数のプロセッサを用いて複数の仮想計算機を並列に実行する仮想計算機システムにおいて、仮想計算機システムのパフォーマンスを犠牲にすることなく、消費電力を抑えたい。  仮想計算機を割り当てられていないプロセッサが複数ある場合に、仮想計算機を割り当てられていないプロセッサのうちの１つのプロセッサに電源を供給して待機状態とし、残りのプロセッサに電源を供給しない。
2012004948.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを有し、複数の仮想計算機を動作させる仮想計算機システムであって、
電力を供給されているプロセッサに仮想計算機を割り当てる割当手段と、
前記割当手段が、電力を供給されていて仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、電力を供給されていないプロセッサが複数存在するとき、電力を供給されていないプロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていないプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する電力供給手段とを備える
ことを特徴とする仮想計算機システム。
【請求項２】
プロセッサのうち、電力を供給されているプロセッサに限ってクロック信号を供給するクロック供給手段を備える
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
電力を供給されていて仮想計算機を割り当てられているプロセッサに供給するクロック信号の周波数の方が、電力を供給されていて仮想計算機を割り当てられていないプロセッサに供給するクロック信号の周波数よりも高くなるように、電力を供給されているプロセッサに供給するクロック信号を制御するクロック制御手段を備える
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
電力を供給されていて仮想計算機を割り当てられているプロセッサの電源電圧の方が、電力を供給されていて仮想計算機を割り当てられていないプロセッサの電源電圧よりも高くなるように、電力を供給されているプロセッサの電源電圧を制御する電圧制御手段を備える
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項５】
前記電力供給手段は、さらに、電力を供給されていて仮想計算機を割り当てられていたプロセッサが仮想計算機を割り当てられていない状態となった場合に、電力を供給されていて仮想計算機を割り当てられていないプロセッサのうちの、少なくとも１つのプロセッサの電力供給を停止する
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項６】
前記割当手段は、前記仮想計算機の割り当てを、第１仮想計算機を割り当てられている第１プロセッサに当該第１仮想計算機以外の仮想計算機が割り当てられている場合において当該第１仮想計算機の処理対象とする処理が所定条件を満たすようになるとき、電力を供給されていて仮想計算機を割り当てられていない第２プロセッサが存在すれば、前記仮想計算機を、前記第１プロセッサから前記第２プロセッサに変更して割り当てるように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項７】
前記割当手段は、前記仮想計算機の割り当てを、第１仮想計算機を割り当てられている第１プロセッサに当該第１仮想計算機以外の仮想計算機が割り当てられていない場合において当該第１仮想計算機の処理対象とする処理が第１の所定条件を満たすようになるとき、処理対象とする処理が第２の所定条件を満たす仮想計算機を割り当てられている第２のプロセッサが存在すれば、前記第１仮想計算機を、前記第１プロセッサから前記第２プロセッサに変更して割り当てるように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項８】
前記仮想計算機システムは、複数の第１種プロセッサと、第１種プロセッサよりも処理能力と消費電力とが低い複数の第２種プロセッサとを有し、
前記割当手段は、前記仮想計算機の割り当てを、プロセッサに割り当てられている仮想計算機のそれぞれについて、当該仮想計算機の処理対象とする処理が所定条件を満たすようになる場合に、割り当てるプロセッサのプロセッサ種を変更するように行い、
前記電力供給手段は、前記電力の供給を、前記割当手段が、電力を供給されていて仮想計算機を割り当てられていない第１種プロセッサに仮想計算機を割り当てる場合において電力を供給されていない第１種プロセッサが複数存在するとき、電力を供給されていない第１種プロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていない第１種プロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持するように行い、前記割当手段が、電力を供給されていて仮想計算機を割り当てられていない第２種プロセッサに仮想計算機を割り当てる場合において電力を供給されていない第２種プロセッサが複数存在するとき、電力を供給されていない第２種プロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていない第２種プロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持するように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項９】
前記電力供給手段は、さらに、電力を供給されていて仮想計算機を割り当てられていた第１種プロセッサが仮想計算機を割り当てられていない状態となった場合に、電力を供給されていて仮想計算機を割り当てられていない第１種プロセッサのうちの、少なくとも１つの第１種プロセッサの電力供給を停止し、電力を供給されていて仮想計算機を割り当てられていた第２種プロセッサが仮想計算機を割り当てられていない状態となった場合に、電力を供給されていて仮想計算機を割り当てられていない第２種プロセッサのうちの、少なくとも１つの第２種プロセッサの電力供給を停止する
ことを特徴とする請求項８記載の仮想計算機システム。
【請求項１０】
複数のプロセッサを有し、複数の仮想計算機を動作させる集積回路であって、
電力を供給されているプロセッサに仮想計算機を割り当てる割当手段と、
前記割当手段が、電力を供給されていて仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、電力を供給されていないプロセッサが複数存在するとき、電力を供給されていないプロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていないプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する電力供給手段とを備える
ことを特徴とする集積回路。
【請求項１１】
複数のプロセッサを有し、複数の仮想計算機を動作させる仮想計算機システムを制御する制御方法であって、
電力を供給されているプロセッサに仮想計算機を割り当てる割当ステップと、
前記割当ステップが、電力を供給されていて仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、電力を供給されていないプロセッサが複数存在するとき、電力を供給されていないプロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていないプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する電力供給ステップとを備える
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想計算機を並列に実行する仮想計算機システムに関する。
【背景技術】
【０００２】
複数のプロセッサを備え、それら複数のプロセッサを用いて複数の仮想計算機を並列に実行する仮想計算機システムが知られている（特許文献１参照）。【０００３】
この種の仮想計算機システムにおいて、各仮想計算機は、１又は複数のプロセッサに割り当てられて実行される。【０００４】
一方、プロセッサの数が仮想計算機の数よりも多いと、一部のプロセッサに仮想計算機が割り当てられないことがある。【０００５】
また、複数のプロセッサを備える仮想計算機システムにおける消費電力を削減するための技術として、例えば、特許文献２、特許文献３に記載されている技術等が知られている。【０００６】
特許文献２に記載されている技術は、仮想計算機システムにおいて、一部のプロセッサに仮想計算機が割り当てられていない場合に、そのプロセッサへの電源供給を遮断するというものであり、特許文献３に記載されている技術は、仮想計算機システムにおいて、仮想計算機が割り当てられていないプロセッサが存在する場合に、そのプロセッサをスリープ状態とするというものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１１３７６７号公報
【特許文献２】特開２００４−１９２６１２号公報
【特許文献３】特開２００９−１４０１５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、一般に、電源供給が遮断されているプロセッサを起動する場合には、そのプロセッサが安定して処理を実行できるようになるまでに、典型的には数ミリ秒〜数十ミリ秒が必要となる。【０００９】
特許文献２に開示されている技術では、仮想計算機が割り当てられていないプロセッサに新たに仮想計算機を割り当てようとする場合に、それらのプロセッサを新たに起動させる必要がある。【００１０】
従って、仮想計算機が割り当てられていないプロセッサに新たに仮想計算機を割り当てようとしても、新たに起動させたプロセッサが処理を開始するまでに、典型的には数ミリ秒〜数十ミリ秒の時間がかかってしまい、仮想計算機システムのパフォーマンスが低下してしまうという問題がある。【００１１】
特許文献３に開示されている技術では、仮想計算機が割り当てられていない全てのプロセッサは、新たに仮想計算機が割り当てられるまでスリープ状態となる。【００１２】
しかしながら、スリープ状態のプロセッサは、仮想計算機に係る処理を行うことができないにも関わらず、通常動作状態よりも消費電力は少ないものの、一定量の電力を消費する。【００１３】
従って、仮想計算機が割り当てられていないプロセッサの数が多くなると、仮想計算機に係る処理を行うことのないプロセッサによる消費電力が多くなってしまうという問題がある。【００１４】
そこで、本発明は係る問題に鑑みてなされたものであり、仮想計算機システムのパフォーマンスの低下を防止しつつ、消費電力を抑える仮想計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するために本発明に係る仮想計算機システムは、複数のプロセッサを有し、複数の仮想計算機を動作させる仮想計算機システムであって、電力を供給されているプロセッサに仮想計算機を割り当てる割当手段と、前記割当手段が、電力を供給されていて仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、電力を供給されていないプロセッサが複数存在するとき、電力を供給されていないプロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていないプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する電力供給手段とを備えることを特徴とする。
【発明の効果】
【００１６】
上述の構成を備える本発明に係る仮想計算機システムは、電力を供給されていて仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合に、次に新たなプロセッサに仮想計算機を割り当てるときに備えて、電力供給手段によって新たに電力を供給されるプロセッサを待機状態にしておくことができるようになる。【００１７】
また、仮想計算機を割り当てられていないプロセッサのうち、次に新たなプロセッサに仮想計算機を割り当てるときに備えて待機させておくプロセッサ以外のプロセッサには電力を供給されない。【００１８】
従って、仮想計算機システムのパフォーマンスの低下を防止しつつ、消費電力を抑えることができる。
【図面の簡単な説明】
【００１９】
【図１】仮想計算機システム１００の主要なハードウエア構成を示すブロック図
【図２】電源制御ブロック１１１の構成を示すブロック図
【図３】クロック制御ブロック１１２の構成を示すブロック図
【図４】仮想計算機システム１００を構成する主要な機能ブロックを示す機能構成図
【図５】仮想計算機情報のデータ構成図
【図６】プロセッサ情報のデータ構成図
【図７】システム起動処理のフローチャート
【図８】システム更新処理のフローチャート
【図９】仮想計算機割当処理のフローチャートその１
【図１０】仮想計算機割当処理のフローチャートその２
【図１１】仮想計算機割当変更処理のフローチャート
【図１２】プロセッサ更新処理のフローチャート
【図１３】仮想計算機情報のデータ構成図
【図１４】プロセッサ情報のデータ構成図
【図１５】仮想計算機システム１００を構成する主要な機能ブロックを示す機能構成図
【図１６】仮想計算機情報のデータ構成図
【図１７】プロセッサ情報のデータ構成図
【図１８】仮想計算機システム１００を構成する主要な機能ブロックを示す構成図
【図１９】変形仮想計算機システム１９００の主要なハードウエア構成を示すブロック図
【図２０】電源制御ブロック１９１１の構成を示すブロック図
【図２１】クロック制御ブロック１９１２の構成を示すブロック図
【図２２】変形仮想計算機システム１９００を構成する主要な機能ブロックを示す機能構成図
【図２３】仮想計算機情報のデータ構成図
【図２４】プロセッサ情報のデータ構成図
【図２５】変形システム起動処理のフローチャート
【図２６】変形プロセッサ更新処理のフローチャートその１
【図２７】変形プロセッサ更新処理のフローチャートその２
【図２８】変形システム更新処理のフローチャート
【図２９】変形仮想計算機割当処理のフローチャートその１
【図３０】変形仮想計算機割当処理のフローチャートその２
【図３１】変形仮想計算機割当変更処理のフローチャート
【図３２】仮想計算機情報のデータ構成図
【図３３】プロセッサ情報のデータ構成図
【図３４】変形仮想計算機システム１９００を構成する主要な機能ブロックを示す機能構成図
【図３５】変形例において、仮想計算機システム上で実現される、割当手段３５０１と電力供給手段３５０２とを示す模式図
【発明を実施するための形態】
【００２０】
＜実施の形態１＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、４つのプロセッサを備え、これらのプロセッサを用いて複数の仮想計算機を並列に実行する仮想計算機システムについて説明する。
【００２１】
この仮想計算機システムは、一部のプロセッサに仮想計算機が割り当てられていない場合に、次に新たなプロセッサに仮想計算機を割り当てる場合に備えて、仮想計算機が割り当てられていないプロセッサのうちの１つのプロセッサに電力を供給して待機状態としておき、その他の仮想計算機が割り当てられていないプロセッサに電力を供給しないという制御を行うものである。
【００２２】
以下、本実施の形態１に係る仮想計算機システムの構成について図面を参照しながら説明する。
【００２３】
図１は、仮想計算機システム１００の主要なハードウエア構成を示すブロック図である。
【００２４】
同図に示す通り、仮想計算機システム１００は、システムＬＳＩ（Large Scale Integration）１１０とハードディスク装置１３０と出力装置１３１と入力装置１３２とから構成される。
【００２５】
システムＬＳＩ１１０は、プロセッサＡ１０１とプロセッサＢ１０２とプロセッサＣ１０３とプロセッサＤ１０４と電源制御ブロック１１１とクロック制御ブロック１１２とＲＯＭ（Read Only Memory）１１３とＲＡＭ（Random Access Memory）１１４とハードディスク装置インターフェース１１５と出力装置インターフェース１１６と入力装置インターフェース１１７と内部バス１２０とを集積した集積回路であって、ハードディスク装置１３０と出力装置１３１と入力装置１３２とに接続する。
【００２６】
プロセッサＡ１０１とプロセッサＢ１０２とプロセッサＣ１０３とプロセッサＤ１０４とは、それぞれ内部バス１２０と電源制御ブロック１１１とクロック制御ブロック１１２とに接続し、それぞれＲＯＭ１１３、ＲＡＭ１１４、又はハードディスク装置１３０に記憶されているプログラムを実行することで、電源制御ブロック１１１とクロック制御ブロック１１２とＲＯＭ１１３とＲＡＭ１１４とハードディスク装置１３０と出力装置１３１と入力装置１３２とを制御して、様々な機能を実現する。
【００２７】
プロセッサＡ１０１〜プロセッサＤ１０４は、それぞれ同じ機能を有するプロセッサであって、電源電圧が１．２Ｖで動作周波数が１ＧＨｚで動作する通常動作モードと、電源電圧が１．０Ｖで動作周波数が５００ＭＨｚで動作する省電力モードとの２つのモードを有する。
【００２８】
また、プロセッサＡ１０１〜プロセッサＤ１０４は、供給される電源の電圧が０Ｖから１．０Ｖ以上に変化し、クロック信号が供給されることで起動する。
【００２９】
電源制御ブロック１１１は、内部バス１２０とプロセッサＡ１０１とプロセッサＢ１０２とプロセッサＣ１０３とプロセッサＤ１０４とに接続し、プロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４によって制御され、プロセッサＡ１０１〜プロセッサＤ１０４へ供給する電源の電圧を切り換える機能を有する。
【００３０】
図２は、電源制御ブロック１１１の主要なハードウエア構成を示すブロック図である。
【００３１】
同図に示す通り、電源制御ブロック１１１は、スイッチ設定レジスタ２１０と電源スイッチ２１１と電源スイッチ２１２と電源スイッチ２１３と電源スイッチ２１４とから構成される。
【００３２】
スイッチ設定レジスタ２１０は、内部バス１２０と電源スイッチ２１１と電源スイッチ２１２と電源スイッチ２１３と電源スイッチ２１４とに接続し、プロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４によって値を書き込まれる８ビットのレジスタである。
【００３３】
電源スイッチ２１１は、スイッチ設定レジスタ２１０と１．２Ｖの電圧を供給する１．２Ｖ電源配線２２１と１．０Ｖの電圧を供給する１．０Ｖ電源配線２２２と０Ｖの電圧を供給するグラウンド配線２２３とプロセッサＡ１０１に電圧を供給するためのプロセッサＡ電源配線２３１とに接続し、スイッチ設定レジスタ２１０の０ビット目と１ビット目とに書き込まれている値に従って、１．２Ｖ電源配線２２１と１．０Ｖ電源配線２２２とグラウンド配線２２３との３つの配線のうちの一つの配線を選択して、選択する配線とプロセッサＡ電源配線２３１とを電気的に接続するスイッチである。
【００３４】
電源スイッチ２１２〜電源スイッチ２１４は、それぞれ電源スイッチ２１１と同様のスイッチである。
【００３５】
電源スイッチ２１２は、スイッチ設定レジスタ２１０の２ビット目と３ビット目とに書き込まれている値に従って、プロセッサＢ１０２に電圧を供給するためのプロセッサＢ電源配線２３２と電気的に接続する電源配線を選択するスイッチであって、電源スイッチ２１３は、スイッチ設定レジスタ２１０の４ビット目と５ビット目とに書き込まれている値に従って、プロセッサＣ１０３に電圧を供給するためのプロセッサＣ電源配線２３３と電気的に接続する電源配線を選択するスイッチであって、電源スイッチ２１４は、スイッチ設定レジスタ２１０の６ビット目と７ビット目とに書き込まれている値に従って、プロセッサＤ１０４に電圧を供給するためのプロセッサＤ電源配線２３４と電気的に接続する電源配線を選択するスイッチである。
【００３６】
電源制御ブロック１１１は、また、仮想計算機システム１００がリセットされた場合には、スイッチ設定レジスタ２１０に初期値が代入されることで、プロセッサＡ１０１に１．２Ｖの電圧を供給し、プロセッサＢ１０２に１．０Ｖの電圧を供給し、プロセッサＣ１０３とプロセッサＤ１０４とに０Ｖの電圧を供給する機能を有する。
【００３７】
再び図１に戻って、仮想計算機システム１００の主要なハードウエア構成の説明を続ける。
【００３８】
クロック制御ブロック１１２は、内部バス１２０とプロセッサＡ１０１とプロセッサＢ１０２とプロセッサＣ１０３とプロセッサＤ１０４と接続し、プロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４によって制御され、プロセッサＡ１０１〜プロセッサＤ１０４へ供給するクロック信号の周波数を切り換える機能を有する。
【００３９】
図３は、クロック制御ブロック１１２の主要なハードウエア構成を示す構成図である。
【００４０】
同図に示す通り、クロック制御ブロック１１２は、セレクタ設定レジスタ３１０と１ＧＨｚＰＬＬ（Phase Locked Loop）３０１と１／２分周回路３０２とセレクタ３１１とセレクタ３１２とセレクタ３１３とセレクタ３１４とから構成される。
【００４１】
セレクタ設定レジスタ３１０は、内部バス１２０とセレクタ３１１とセレクタ３１２とセレクタ３１３とセレクタ３１４とに接続し、プロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４によって値を書き込まれる８ビットのレジスタである。
【００４２】
１ＧＨｚＰＬＬ３０１は、１／２分周回路３０２とセレクタ３１１とセレクタ３１２とセレクタ３１３とセレクタ３１４とに接続し、１ＧＨｚの周波数のクロック信号を生成して出力する機能を有する。
【００４３】
１／２分周回路３０２は、１ＧＨｚＰＬＬ３０１とセレクタ３１１とセレクタ３１２とセレクタ３１３とセレクタ３１４とに接続し、入力される１ＧＨｚの周波数のクロック信号を２分周し、５００ＭＨｚの周波数のクロック信号を出力する機能を有する。
【００４４】
セレクタ３１１は、セレクタ設定レジスタ３１０と１ＧＨｚＰＬＬ３０１と１／２分周回路３０２とグラウンド３０３とプロセッサＡ１０１にクロック信号を供給するためのプロセッサＡクロック配線３２１とに接続し、セレクタ設定レジスタ３１０の０ビット目と１ビット目とに書き込まれている値に従って、１ＧＨｚの周波数のクロック信号と５００ＭＨｚの周波数のクロック信号と０ＭＨｚの周波数のクロック信号とのうちの一つのクロック信号を選択して、プロセッサＡクロック配線３２１を介してプロセッサＡ１０１に出力するセレクタである。
【００４５】
セレクタ３１２〜セレクタ３１４は、それぞれセレクタ３１１と同様のセレクタである。
【００４６】
セレクタ３１２は、セレクタ設定レジスタ３１０の２ビット目と３ビット目とに書き込まれている値に従って、プロセッサＢクロック配線３２２を介してプロセッサＢ１０２に出力するクロック信号を選択して出力するセレクタであって、セレクタ３１３は、セレクタ設定レジスタ３１０の４ビット目と５ビット目とに書き込まれている値に従って、プロセッサＣクロック配線３２３を介してプロセッサＣ１０３に出力するクロック信号を選択して出力するセレクタであって、セレクタ３１４は、セレクタ設定レジスタ３１０の６ビット目と７ビット目とに書き込まれている値に従って、プロセッサＤクロック配線３２４を介してプロセッサＤ１０４に出力するクロック信号を選択して出力するセレクタである。
【００４７】
クロック制御ブロック１１２は、また、仮想計算機システム１００がリセットされた場合には、セレクタ設定レジスタ３１０に初期値が代入されることで、プロセッサＡ１０１に１ＧＨｚのクロック信号を出力し、プロセッサＢ１０２に５００ＭＨｚのクロック信号を出力し、プロセッサＣ１０３とプロセッサＤ１０４とに０Ｈｚのクロック信号を供給する機能を有する。
【００４８】
再び図１に戻って、仮想計算機システム１００の主要なハードウエア構成の説明を続ける。
【００４９】
ＲＯＭ１１３は、内部バス１２０と接続し、プロセッサＡ１０１〜プロセッサＤ１０４の動作を規定するプログラムと、プロセッサＡ１０１〜プロセッサＤ１０４が利用するデータとを記憶している。
【００５０】
ＲＡＭ１１４は、内部バス１２０と接続し、プロセッサＡ１０１〜プロセッサＤ１０４の動作を規定するプログラムと、プロセッサＡ１０１〜プロセッサＤ１０４がプログラムを実行することに伴って発生するデータとを一時的に記憶する。
【００５１】
ハードディスク装置インターフェース１１５と出力装置インターフェース１１６と入力装置インターフェース１１７とは、それぞれ内部バス１２０と接続し、それぞれ内部バス１２０とハードディスク装置１３０との間の信号のやり取りを仲介する機能、内部バス１２０と出力装置１３１との間の信号のやり取りを仲介する機能、内部バス１２０と入力装置１３２との間の信号のやり取りを仲介する機能を有する。
【００５２】
内部バス１２０は、プロセッサＡ１０１とプロセッサＢ１０２とプロセッサＣ１０３とプロセッサＤ１０４と電源制御ブロック１１１とクロック制御ブロック１１２とＲＯＭ１１３とＲＡＭ１１４とハードディスク装置インターフェース１１５と出力装置インターフェース１１６と入力装置インターフェース１１７とに接続し、接続される回路間の信号を伝達する機能を有する。
【００５３】
ハードディスク装置１３０は、ハードディスク装置インターフェース１１５と接続し、プロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４によって制御され、内蔵するハードディスクにデータを書き込む機能と、内蔵するハードディスクに書き込まれているデータを読み出す機能とを有する。
【００５４】
出力装置１３１は、出力装置インターフェース１１６と接続し、プロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４によって制御され、内蔵するディスプレイを用いて文字列等を表示する機能を有する。
【００５５】
入力装置１３２は、入力装置インターフェース１０７と接続し、プロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４によって制御され、付属するキーボード、マウスなどを通じてユーザからの操作コマンドを受け付け、受け付けた操作コマンドをプロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４に送信する機能を有する。
【００５６】
上述の仮想計算機システム１００は、プロセッサＡ１０１、プロセッサＢ１０２、プロセッサＣ１０３、又はプロセッサＤ１０４が、ＲＯＭ１１３、ＲＡＭ１１４、又はハードディスク装置１３０に記憶されているプログラムを実行することによって、様々な機能を実現する。
【００５７】
以下、上述のハードウエアによって実現される仮想計算機システム１００の機能について、図面を用いて説明する。
【００５８】
図４は、仮想計算機システム１００を構成する主要な機能ブロックを示す機能構成図に、プロセッサＡ１０１に３つの仮想計算機が割り当てられ、プロセッサＣ１０３に１つの仮想計算機が割り当てられている状態を示す模式図を加えた図である。
【００５９】
同図に示すように、仮想計算機システム１００は、ハイパーバイザ４４０と複数の仮想計算機（ここでは、仮想計算機Ａ４１１と仮想計算機Ｂ４１２と仮想計算機Ｃ４１３と仮想計算機Ｄ４１４）とから構成されている。
【００６０】
仮想計算機Ａ４１１は、仮想計算機システム１００上で実現される仮想計算機であって、第１ＯＳ（Operating System）４２１とタスクＡ４３１とタスクＢ４３２とが動作し、ここでは、プロセッサＡ１０１に割り当てられて動作している。
【００６１】
仮想計算機Ｂ４１２は、仮想計算機システム１００上で実現される仮想計算機であって、第２ＯＳ４２２とタスクＩ４３３とタスクＪ４３４とが動作し、ここではプロセッサＡ１０１に割り当てられて動作している。
【００６２】
仮想計算機Ｃ４１３は、仮想計算機システム１００上で実現される仮想計算機であって、第３ＯＳ４２３とタスクＭ４３５とタスクＮ４３６とが動作し、ここではプロセッサＡ１０１に割り当てられて動作している。
【００６３】
仮想計算機Ａ４１１と仮想計算機Ｂ４１２と仮想計算機Ｃ４１３とは、プロセッサＡ１０１が時分割方式で順番に繰り返して各仮想計算機に係る処理を行うことによって実現されている。
【００６４】
仮想計算機Ｄ４１４は、仮想計算機システム１００上で実現される仮想計算機であって、第４ＯＳ４２４とタスクＰ４３７とタスクＱ４３８とが動作し、ここではプロセッサＣ１０３に割り当てられて動作している。
【００６５】
ハイパーバイザ４４０は、負荷監視手段４４１と仮想計算機割当手段４４２と仮想計算機管理手段４４３とプロセッサ管理手段４４４と仮想計算機情報記憶手段４４５とプロセッサ情報記憶手段４４６とから構成される、ＯＳよりも特権レベルの高いソフトウエアである。
【００６６】
負荷監視手段４４１は、仮想計算機で動作しているＯＳのそれぞれと仮想計算機管理手段４４３とに接続し、時間の経過を計測するタイマ機能と、所定時間Ｔ１（例えば１００μｓ）毎に、各ＯＳからそのＯＳによって管理されるタスク待ち行列に存在するタスクの数を取得し、ＯＳから取得したタスクの数の情報と、そのＯＳが動作する仮想計算機を特定するための仮想計算機ＩＤとの組を仮想計算機管理手段４４３に出力する機能とを有する。
【００６７】
仮想計算機管理手段４４３は、負荷監視手段４４１と仮想計算機割当手段４４２と仮想計算機情報記憶手段４４５とに接続し、以下の４つの機能を有する。
【００６８】
機能１：ハイパーバイザ４４０起動時に、実行対象となる仮想計算機の全てがプロセッサＡ１０１と対応付けられるように仮想計算機情報を生成し、生成した仮想計算機情報を仮想計算機情報記憶手段４４５に記憶させる機能。
【００６９】
機能２：負荷監視手段４４１から、タスクの数の情報と仮想計算機ＩＤとの組を受け取ると、受け取ったタスクの数の情報と仮想計算機ＩＤとの組に基づいて、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報を更新する機能。
【００７０】
機能３：負荷監視手段４４１から受け取ったタスクの数の情報と仮想計算機ＩＤとの組に基づいて、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報を更新した場合において、更新前のタスクの数と更新後のタスクの数とで変化しているものがあるとき、そのタスクの数に対応する仮想計算機ＩＤを、仮想計算機割当手段４４２に出力する機能。
【００７１】
機能４：仮想計算機割当手段４４２から、仮想計算機ＩＤとプロセッサＩＤとの組を受け取ると、受け取った仮想計算機ＩＤとプロセッサＩＤとの組に基づいて、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報を更新する機能。
【００７２】
図５は、仮想計算機管理手段４４３によって生成され、仮想計算機情報記憶手段４４５によって記憶される仮想計算機情報のデータ構成図である。
【００７３】
同図に示されるように、仮想計算機情報は、仮想計算機ＩＤ５０１とタスク数５０２とプロセッサＩＤ５０３とが対応付けられたものである。
【００７４】
仮想計算機ＩＤ５０１は、仮想計算機を特定するための情報である。
【００７５】
タスク数５０２は、対応する仮想計算機ＩＤで特定される仮想計算機で動作するＯＳによって管理されるタスク待ち行列に存在するタスクの数を示す情報である。
【００７６】
プロセッサＩＤ５０３は、対応する仮想計算機ＩＤで特定される仮想計算機が動作するプロセッサを特定するための情報である。
【００７７】
再び、図４に戻って仮想計算機システム１００の機能構成の説明を続ける。
【００７８】
仮想計算機情報記憶手段４４５は、仮想計算機管理手段４４３と仮想計算機割当手段４４２とに接続し、仮想計算機情報を記憶するための記憶領域であって、ＲＡＭ１１４の一部の領域として実装されている。
【００７９】
プロセッサ管理手段４４４は、仮想計算機割当手段４４２とプロセッサ情報記憶手段４４６とに接続し、以下の３つの機能を有する。
【００８０】
機能１：ハイパーバイザ４４０起動時に、プロセッサＡ１０１の属性が”共有”（後述）となり、プロセッサＢ１０２の属性が”待機”となり、プロセッサＣ１０３とプロセッサＤ１０４との属性がそれぞれ”オフ”となり、プロセッサＡ１０１に対応付けられる仮想計算機数が実行対象となる仮想計算機の総数を示す情報となり、プロセッサＢ１０２とプロセッサＣ１０３とプロセッサＤ１０４とのそれぞれに対応付けられる仮想計算機数が、それぞれ初期値である”０”を示す情報となるようにプロセッサ情報を生成し、生成したプロセッサ情報をプロセッサ情報記憶手段４４６に記憶させる機能。
【００８１】
機能２：仮想計算機割当手段４４２から、プロセッサＩＤと属性との組を受け取ると、受け取ったプロセッサＩＤと属性との組に基づいて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する機能。
【００８２】
機能３：プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報に基づいて、各プロセッサにクロック信号と電源電圧とを供給する機能。
【００８３】
図６は、プロセッサ管理手段４４４によって生成され、プロセッサ情報記憶手段４４６に記憶されるプロセッサ情報のデータ構成図である。
【００８４】
同図に示されるように、プロセッサ情報は、プロセッサＩＤ６０１と属性６０２と仮想計算機数６０３とが対応付けられたものである。
【００８５】
プロセッサＩＤ６０１は、プロセッサを特定するための情報である。
【００８６】
属性６０２は、対応するプロセッサＩＤで特定されるプロセッサの属性を示す情報である。
【００８７】
プロセッサＡ１０１〜プロセッサＤ１０４のそれぞれは、”専有”、”共有”、”待機”、”オフ”の４つの属性のうちの１つの属性を対応付けられる。
【００８８】
”専有”属性は、プロセッサの状態が、電源電圧が１．２Ｖで動作周波数が１ＧＨｚで動作する通常動作モードで動作し、自プロセッサ上で動作する仮想計算機の数を１つに限定する状態となることを示す属性である。
【００８９】
“共有”属性は、プロセッサの状態が、電源電圧が１．２Ｖで動作周波数が１ＧＨｚで動作する通常動作モードで動作し、自プロセッサ上で動作する仮想計算機の数を１以上とする状態となることを示す属性である。
【００９０】
”共有”属性のプロセッサ上で動作する仮想計算機が複数の場合には、プロセッサは、時分割方式で仮想計算機を実行させる。
【００９１】
“待機”属性は、プロセッサの状態が、電源電圧が１．０Ｖで動作周波数が５００ＭＨｚで動作する省電力モードで動作し、自プロセッサ上で仮想計算機を動作させない状態となることを示す属性である。
【００９２】
“オフ”属性は、プロセッサの状態が動作しない状態、すなわち、０Ｖの電源電圧が供給される状態となることを示す属性である。
【００９３】
仮想計算機数６０３は、対応するプロセッサＩＤで特定されるプロセッサ上で動作する仮想計算機の数を示す情報である。
【００９４】
再び、図４に戻って仮想計算機システム１００の機能構成の説明を続ける。
【００９５】
プロセッサ情報記憶手段４４６は、プロセッサ管理手段４４４と接続し、プロセッサ情報を記憶するための記憶領域であって、ＲＡＭ１１４の一部の領域として実装される。
【００９６】
仮想計算機割当手段４４２は、仮想計算機管理手段４４３とプロセッサ管理手段４４４と仮想計算機情報記憶手段４４５とプロセッサ情報記憶手段４４６とに接続し、以下の４つの機能を有する。
【００９７】
機能１：仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報と、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報とに基づいて、プロセッサの属性を変更する機能。
【００９８】
機能２：プロセッサの属性を変更した場合に、属性を変更したプロセッサを特定するためのプロセッサＩＤと変更後の属性との組を、プロセッサ管理手段４４４に出力する機能。
【００９９】
機能３：仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報に基づいて、プロセッサ上で動作している仮想計算機を他のプロセッサに移動して、その移動先のプロセッサでその仮想計算機を動作させる機能。
【０１００】
機能４：仮想計算機を移動させた場合に、移動させた仮想計算機を特定するための仮想計算機ＩＤと、移動後のプロセッサを特定するためのプロセッサＩＤとの組を、プロセッサ管理手段４４４に出力する機能。
【０１０１】
以上のように構成される仮想計算機システム１００の行う動作について、以下、図面を参照しながら説明する。
【０１０２】
＜動作＞
ここでは、仮想計算機システム１００の行う動作のうち、特徴的な動作である、システム起動処理と、システム更新処理とについて説明する。
【０１０３】
＜システム起動処理＞
システム起動処理は、仮想計算機システム１００がリセットされた場合に、仮想計算機システム１００を起動する処理である。
【０１０４】
図７は、システム起動処理のフローチャートである。
【０１０５】
仮想計算機システム１００がリセットされると、電源制御ブロック１１１は、プロセッサＡ１０１に１．２Ｖの電源電圧を供給し、プロセッサＢ１０２に１．０Ｖの電源電圧を供給し、クロック制御ブロック１１２は、プロセッサＡ１０１に１ＧＨｚのクロック信号を供給し、プロセッサＢ１０２に５００ＭＨｚのクロック信号を供給し、プロセッサＡ１０１とプロセッサＢ１０２とが起動する（ステップＳ７００）。
【０１０６】
プロセッサＡ１０１が起動すると、プロセッサＡ１０１は、ハイパーバイザ４４０を起動する（ステップＳ７１０）。
【０１０７】
ハイパーバイザ４４０が起動すると、仮想計算機管理手段４４３は、実行対象となる仮想計算機の全てがプロセッサＡ１０１と対応付けられるように仮想計算機情報を生成し、生成した仮想計算機情報を仮想計算機情報記憶手段４４５に記憶させる（ステップＳ７２０）。
【０１０８】
このとき生成される仮想計算機情報のタスク数５０２には、それぞれ初期値である”０”を示す情報が代入される。
【０１０９】
ステップＳ７２０の処理が終了すると、プロセッサ管理手段４４４は、プロセッサＡ１０１の属性が”共有”となり、プロセッサＢ１０２の属性が”待機”となり、プロセッサＣ１０３とプロセッサＤ１０４との属性がそれぞれ”オフ”となり、プロセッサＡ１０１に対応付けられる仮想計算機数が仮想計算機の総数を示す情報となり、プロセッサＢ１０２とプロセッサＣ１０３とプロセッサＤ１０４とのそれぞれに対応付けられる仮想計算機数が、それぞれ初期値である”０”を示す情報となるようにプロセッサ情報を生成し、生成したプロセッサ情報をプロセッサ情報記憶手段４４６に記憶させる（ステップＳ７３０）。
【０１１０】
ステップＳ７３０の処理が終了すると、仮想計算機割当手段４４２は、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報に基づいて、プロセッサＡ１０１で全ての仮想計算機を動作させる（ステップＳ７４０）。
【０１１１】
ステップＳ７４０の処理が終了すると、仮想計算機システム１００は、そのシステム起動処理を終了する。
【０１１２】
＜システム更新処理＞
システム更新処理は、各仮想計算機上で動作しているＯＳが管理する待ち行列のそれぞれに存在するタスクの数の変動に応じて、各プロセッサの属性を動的に変更し、各仮想計算機のプロセッサへの割り当てを動的に変更する処理である。
【０１１３】
図８は、システム更新処理のフローチャートである。
【０１１４】
負荷監視手段４４１は、仮想計算機システム１００の稼働中に、タイマ機能を利用して所定時間Ｔ１（例えば１００μｓ）毎に、各仮想計算機のＯＳによって管理されるタスク待ち行列に存在するタスクの数を取得し（ステップＳ８００）、ＯＳから取得したタスクの数の情報と、そのＯＳが動作する仮想計算機を特定するための仮想計算機ＩＤとの組を仮想計算機管理手段４４３に出力する。
【０１１５】
ステップＳ８００の処理が終了すると、負荷監視手段４４１は、タイマを起動して、新たに所定時間Ｔ１（例えば１００μｓ）の計測を開始する（ステップＳ８１０）。
【０１１６】
ステップＳ８１０の処理が終了すると、仮想計算機管理手段４４３は、受け取ったタスクの数の情報と仮想計算機ＩＤとの組に基づいて、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報を更新する（ステップＳ８２０）。
【０１１７】
ステップＳ８２０の処理が終わると、仮想計算機管理手段４４３は、更新前のタスク数と更新後のタスク数とで変化しているものがあるか否かを調べる（ステップＳ８３０）。
【０１１８】
ステップＳ８３０の処理において、更新前のタスク数と更新後のタスク数とで変化しているものがある場合に（ステップＳ８３０：Ｙｅｓ）、仮想計算機管理手段４４３は、そのタスク数に対応する仮想計算機ＩＤを仮想計算機割当手段４４２に出力し、仮想計算機システム１００は、仮想計算機割当処理を実施する（ステップＳ８４０）。
【０１１９】
図９、図１０は、仮想計算機システム１００の行う仮想計算機割当処理のフローチャートである。
【０１２０】
仮想計算機割当手段４４２は、変化しているタスク数に対応する仮想計算機ＩＤを受け取ると、受け取った仮想計算機ＩＤの中から１つを選択する。
【０１２１】
仮想計算機割当手段４４２は、仮想計算機ＩＤを１つ選択すると、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報と、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報とを読み出して、選択している仮想計算機ＩＤによって特定される仮想計算機が動作しているプロセッサの属性が”共有”であるか否かを調べる（ステップＳ９００）。
【０１２２】
ステップＳ９００の処理において、選択している仮想計算機ＩＤによって特定される仮想計算機が動作しているプロセッサの属性が”共有”である場合に（ステップＳ９００：Ｙｅｓ）、仮想計算機割当手段４４２は、その仮想計算機に対応付けられているタスク数が第１所定量（例えば３０）以上であるか否かを調べる（ステップＳ９１０）。
【０１２３】
ステップＳ９１０の処理において、タスク数が第１所定量（例えば３０）以上の場合に（ステップＳ９１０：Ｙｅｓ）、仮想計算機割当手段４４２は、選択している仮想計算機ＩＤによって特定される仮想計算機が動作しているプロセッサに、他の仮想計算機が割り当てられて動作しているか否かを調べる（ステップＳ９２０）。
【０１２４】
ステップＳ９２０の処理において、プロセッサに他の仮想計算機が割り当てられて動作している場合に（ステップＳ９２０：Ｙｅｓ）、仮想計算機割当手段４４２は、”待機”属性のプロセッサが存在するか否かを調べる（ステップＳ９３０）。
【０１２５】
ステップＳ９３０において、”待機”属性のプロセッサが存在する場合に（ステップＳ９３０：Ｙｅｓ）、仮想計算機割当手段４４２は、その”待機”属性のプロセッサの属性が”専有”となるように、プロセッサ管理手段４４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ９４０）。
【０１２６】
ステップＳ９４０の処理が終わると、仮想計算機割当手段４４２は、選択している仮想計算機ＩＤによって特定される仮想計算機を割り当てられて実行するプロセッサを、その仮想計算機が現在割り当てられて動作しているプロセッサ（以後、移動元プロセッサと呼ぶ。）から、ステップＳ９４０の処理において属性を”待機”から”専有”に更新されたプロセッサ（以後、移動先プロセッサと呼ぶ。）へと変更する（ステップＳ９５０：仮想計算機割当変更処理）。
【０１２７】
図１１は、仮想計算機システム１００の行う仮想計算機割当変更処理のフローチャートである。
【０１２８】
仮想計算機システム１００が仮想計算機割当変更処理を開始すると、仮想計算機割当手段４４２は、移動元プロセッサで対象となる仮想計算機が処理中であるか否かを調べる（ステップＳ１１００）。
【０１２９】
ステップＳ１１００において、移動元プロセッサで対象となる仮想計算機が処理中である場合に（ステップＳ１１００：Ｙｅｓ）、その処理中の仮想計算機の状態（各種レジスタに記憶されているデータ等の、仮想計算機の処理を復旧させるために必要なデータ群）を、ＲＡＭ１１４の所定の領域に退避する（ステップＳ１１１０）。
【０１３０】
ステップＳ１１００において、移動元プロセッサで対象となる仮想計算機が処理中でない場合に（ステップＳ１１００：Ｎｏ）は、その仮想計算機は、時分割方式における退避状態となっているため、その仮想計算機の状態はＲＡＭ１１４の所定の領域に退避されている（ステップＳ１１２０）。
【０１３１】
ステップＳ１１１０の処理が終了した場合、又はステップＳ１１２０の処理が終了した場合に、仮想計算機割当手段４４２は、移動先プロセッサで仮想計算機が動作中であるか否かを調べる（ステップＳ１１３０）。
【０１３２】
ステップＳ１１３０の処理において、移動先プロセッサで仮想計算機が動作中である場合に（ステップＳ１１３０：Ｙｅｓ）、仮想計算機割当手段４４２は、移動先プロセッサの時分割処理において、対象となる仮想計算機の処理が行われる時間になると、退避されている仮想計算機の状態を利用して、移動先プロセッサで対象となる仮想計算機を復旧させて動作させる（ステップＳ１１４０）。
【０１３３】
ステップＳ１１３０の処理において、移動先プロセッサで仮想計算機が動作中でない場合に（ステップＳ１１３０：Ｎｏ）、仮想計算機割当手段４４２は、退避されている仮想計算機の状態を利用して、移動先プロセッサで対象となる仮想計算機を復旧させて動作させる（ステップＳ１１５０）。
【０１３４】
ステップＳ１１４０の処理が終了した場合、又はステップＳ１１５０の処理が終了した場合に、仮想計算機システム１００は、その仮想計算機割当変更処理を終了する。
【０１３５】
再び、図９に戻って仮想計算機割当処理の説明を続ける。
【０１３６】
ステップＳ９５０の処理が終了した場合、又はステップＳ９３０の処理において、”待機”属性のプロセッサが存在しない場合に（ステップＳ９３０：Ｎｏ）、仮想計算機割当手段４４２は、”オフ”属性のプロセッサが存在するか否かを調べる（ステップＳ９６０）。
【０１３７】
ステップＳ９６０の処理において、”オフ”属性のプロセッサが存在する場合に（ステップＳ９６０：Ｙｅｓ）、仮想計算機割当手段４４２は、その”オフ”属性のプロセッサの属性が”待機”となるように、プロセッサ管理手段４４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ９７０）。
【０１３８】
ステップＳ９２０の処理において、プロセッサに他の仮想計算機が割り当てられて動作していない場合に（ステップＳ９２０：Ｎｏ）、仮想計算機割当手段４４２は、その”共有”属性のプロセッサの属性が”専有”となるように、プロセッサ管理手段４４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ９９０）。
【０１３９】
ステップＳ９００の処理において、選択している仮想計算機ＩＤによって特定される仮想計算機が動作しているプロセッサの属性が”共有”でない場合、すなわち、属性が”専有”である場合に（ステップＳ９００：Ｎｏ）、仮想計算機割当手段４４２は、その仮想計算機に対応付けられているタスク数が第２所定量（例えば２５）以下であるか否かを調べる（図１０のステップＳ１０００）。
【０１４０】
ステップＳ１０００の処理において、タスク数が第２所定量（例えば２５）以下の場合に（ステップＳ１０００：Ｙｅｓ）、仮想計算機割当手段４４２は、”共有”属性のプロセッサが存在するか否かを調べる（ステップＳ１０１０）。
【０１４１】
ステップＳ１０１０の処理において、”共有”属性のプロセッサが存在する場合に（ステップＳ１０１０：Ｙｅｓ）、仮想計算機システム１００は、選択している仮想計算機ＩＤによって特定される仮想計算機を割り当てられて実行するプロセッサを移動元プロセッサとし、”共有”属性のプロセッサを移動先プロセッサとして、前述の仮想計算機割当処理（図１１参照）を実行する（ステップＳ１０２０）。
【０１４２】
ステップＳ１０２０の処理が終了すると、仮想計算機割当手段４４２は、移動元プロセッサの属性が”オフ”となるように、プロセッサ管理手段４４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ１０３０）。
【０１４３】
ステップＳ１０１０の処理において、”共有”属性のプロセッサが存在しない場合に（ステップＳ１０１０：Ｎｏ）、仮想計算機割当手段４４２は、選択している仮想計算機ＩＤによって特定される仮想計算機を割り当てられて実行するプロセッサの属性が”共有”となるように、プロセッサ管理手段４４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ１０４０）。
【０１４４】
ステップＳ９１０の処理においてタスク数が第１所定量（例えば３０）以上でない場合（ステップＳ９１０：Ｎｏ）、ステップＳ９９０の処理が終了した場合、ステップＳ９６０の処理において”オフ”属性のプロセッサが存在しない場合（ステップＳ９６０：Ｎｏ）、ステップＳ１０００の処理において、タスク数が第２所定量（例えば２５）以下でない場合（ステップＳ１０００：Ｎｏ）、ステップＳ１０３０の処理が終了した場合、又はステップＳ１０４０の処理が終了した場合に、仮想計算機割当手段４４２は、受け取った仮想計算機ＩＤの中に未だ選択したことのない仮想計算機ＩＤがあるか否かを調べる（図９のステップＳ９８０）。
【０１４５】
ステップＳ９８０の処理において、未だ選択したことのない仮想計算機ＩＤが存在する場合に（ステップＳ９８０：Ｙｅｓ）、仮想計算機割当手段４４２は、未だ選択したことのない仮想計算機ＩＤのうちの１つを選択し、再びステップＳ９００の処理に戻って、ステップＳ９００以降の処理を行う。
【０１４６】
ステップＳ９８０の処理において、未だ選択したことのない仮想計算機ＩＤが存在しない場合に（ステップＳ９８０：Ｎｏ）、仮想計算機システム１００は、その仮想計算機割当処理を終了する。
【０１４７】
再び図８に戻って、システム更新処理の説明を続ける。
【０１４８】
ステップＳ８４０の処理が終了すると、プロセッサ管理手段４４４は、ステップＳ８４０の仮想計算機割当処理において、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報の属性が更新されたプロセッサが存在するか否かを調べる（ステップＳ８５０）。
【０１４９】
ステップＳ８５０の処理において、プロセッサ情報の属性が更新されていた場合に（ステップＳ８５０：Ｙｅｓ）、プロセッサ管理手段４４４は、属性が更新されていたプロセッサのそれぞれに対して、プロセッサ更新処理を実施する（ステップＳ８６０）。
【０１５０】
図１２は、プロセッサ管理手段４４４の行うプロセッサ更新処理のフローチャートである。
【０１５１】
プロセッサ更新処理が開始されると、プロセッサ管理手段４４４は、対象となるプロセッサの現在の属性が”専有”又は”共有”であるか否かを調べる（ステップＳ１２００）。
【０１５２】
ステップＳ１２００の処理において、対象となるプロセッサの現在の属性が”専有”又は”共有”である場合には（ステップＳ１２００：Ｙｅｓ）、そのプロセッサに供給する電源電圧が１．２Ｖとなるように変更、又は継続し、供給するクロック信号の周波数が１ＧＨｚとなるように変更、又は継続する（ステップＳ１２１０）。
【０１５３】
ステップＳ１２００の処理において、対象となるプロセッサの現在の属性が”専有”又は”共有”でない場合には（ステップＳ１２００：Ｎｏ）、プロセッサ管理手段４４４は、対象となるプロセッサの現在の属性が”待機”であるか否かを調べる（ステップＳ１２２０）。
【０１５４】
ステップＳ１２２０の処理において、対象となるプロセッサの現在の属性が”待機”である場合には（ステップＳ１２２０：Ｙｅｓ）、プロセッサ管理手段４４４は、そのプロセッサに供給する電源電圧が１．０Ｖとなるように変更し、供給するクロック信号の周波数が５００ＭＨｚとなるように変更する（ステップＳ１２３０）。
【０１５５】
ステップＳ１２２０の処理において、対象となるプロセッサの現在の属性が”待機”でない場合には（ステップＳ１２２０：Ｎｏ）、プロセッサ管理手段４４４は、そのプロセッサに供給する電源電圧が０Ｖとなるように変更し、供給するクロック信号の周波数が０Ｈｚとなるように変更する（ステップＳ１２４０）。
【０１５６】
ステップＳ１２１０の処理が終了した場合、ステップＳ１２３０の処理が終了した場合、ステップＳ１２４０の処理が終了した場合に、プロセッサ管理手段４４４は、そのプロセッサ更新処理を終了する。
【０１５７】
再び図８に戻って、システム更新処理の説明を続ける。
【０１５８】
ステップＳ８３０の処理において更新前のタスク数と更新後のタスク数とで変化しているものがない場合（ステップＳ８３０：Ｎｏ）、ステップＳ８５０の処理においてプロセッサ情報の属性が更新されてなかった場合（ステップＳ８５０：Ｎｏ）、又はステップＳ８６０の処理が終了した場合に、負荷監視手段４４１は、起動中のタイマで計測している時間が所定時間Ｔ１（例えば１００μｓ）となるまで待機する（ステップＳ８７０）。
【０１５９】
計測している時間が所定時間Ｔ１（例えば１００μｓ）となると、負荷監視手段４４１は再びステップＳ８００の処理に戻り、ステップＳ８００以下の処理を行う。
【０１６０】
＜具体例＞
以下、上述のシステム更新処理について、具体例を用いて説明を補足する。
【０１６１】
この具体例は、時刻ｔ１に、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報が図１３に示されるものであり、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報が図１４に示されるものであって、仮想計算機Ａ４１１と仮想計算機Ｂ４１２と仮想計算機Ｃ４１３とがプロセッサＡ１０１に割り当てられて実行され、プロセッサＢ１０２が省電力モードで起動しつつ新たな仮想計算機の割り当てに備えて待機し、プロセッサＣ１０３とプロセッサＤ１０４とは電源が供給されていない状態となっている場合において（図１５参照）、時刻ｔ２に、第３ＯＳ４２３が管理するタスク待ち行列に存在するタスク数が５から４０に変化したときの例である。
【０１６２】
時刻ｔ２以降において負荷監視手段４４１が各仮想計算機のＯＳによって管理されるタスク待ち行列に存在するタスク数を取得する最初のタイミングになると、負荷監視手段４４１は、各仮想計算機のＯＳによって管理されるタスク待ち行列に存在するタスク数を取得して、タイマを起動し、仮想計算機管理手段４４３が仮想計算機情報を更新する（ステップＳ８００〜ステップＳ８２０）。
【０１６３】
更新された仮想計算機情報は、図１６に示されるものとなる。
【０１６４】
仮想計算機Ｃ４１３のタスク数が５から４０に変化しているので（ステップＳ８３０：Ｙｅｓ）、仮想計算機システム１００は、仮想計算機割当処理を実施する（ステップＳ８４０）。
【０１６５】
仮想計算機Ｃ４１３が動作するプロセッサＡ１０１の属性は”共有”で（図１４参照、ステップＳ９００：Ｙｅｓ）、タスク数が第１所定量（例えば３０）以上で（図１６参照、ステップＳ９１０：Ｙｅｓ）、プロセッサＡ１０１に他のプロセッサが割り当てられていて（ステップＳ９２０：Ｙｅｓ）、”待機”属性のプロセッサＢ１０２が存在する（図１４参照、ステップＳ９３０：Ｙｅｓ）ので、仮想計算機割当手段４４２は、プロセッサＢ１０２の属性を”専有”に変更してプロセッサ情報を更新して（ステップＳ９４０）、仮想計算機割当処理（ステップＳ９５０）を実行する。
【０１６６】
仮想計算機割当手段４４２は、仮想計算機Ｃ４１３がプロセッサＡ１０１に割り当てられて動作している状態を、仮想計算機Ｃ４１３がプロセッサＢ１０２に割り当てられて動作している状態に変更する（ステップＳ１１００〜ステップＳ１１４０）。
【０１６７】
プロセッサＣ１０３の属性は”オフ”なので（ステップＳ９６０：Ｙｅｓ）、プロセッサＣ１０３の属性を”待機”に変更してプロセッサ情報を更新する（ステップＳ９７０）。
【０１６８】
他にタスク数が変化している仮想計算機がないので（ステップＳ９８０：Ｎｏ）、仮想計算機割当手段４４２は、仮想計算機割当処理を終了し、プロセッサ管理手段４４４は、プロセッサ情報の属性が更新されたプロセッサが存在するか否かを調べる（ステップＳ８５０）。
【０１６９】
この時のプロセッサ情報記憶手段４４６に記憶されているプロセッサ情報は図１７に示されるものとなっており、プロセッサＢ１０２とプロセッサＣ１０３との属性が変更されていることがわかる（ステップＳ８５０：Ｙｅｓ）。
【０１７０】
プロセッサＢ１０２の属性は”専有”なので（ステップＳ１２００：Ｙｅｓ）、プロセッサ管理手段４４４は、プロセッサＢ１０２に供給する電源電圧を１．０Ｖから１．２Ｖに変更し、プロセッサＢ１０２に供給するクロック信号の周波数を５００ＭＨｚから１ＧＨｚに変更し（ステップＳ１２１０）、プロセッサＢ１０２を通常動作モードとする。
【０１７１】
プロセッサＣ１０３の属性は”待機”なので、（ステップＳ１２００：Ｎｏ〜ステップＳ１２２０：Ｙｅｓ）、プロセッサ管理手段４４４は、プロセッサＣ１０３に１．０Ｖの電源電圧を供給し、５００ＭＨｚのクロック信号を供給して、プロセッサＣ１０３を省電力モードで動作させる（図１８参照）。
【０１７２】
その後、負荷監視手段４４１は、起動中のタイマで計測している時間が所定時間Ｔ１（例えば１００μｓ）となるまで待機する（ステップＳ８７０）。
【０１７３】
＜まとめ＞
上述の仮想計算機システム１００によれば、仮想計算機が割り当てられていないプロセッサに新たに仮想計算機を割り当てて動作させる必要が生じる場合に、仮想計算機が割り当てられていないプロセッサのうち、”待機”属性として既に起動中のプロセッサに仮想計算機を割り当てて動作させることとなる。
【０１７４】
従って、新たに仮想計算機を割り当てられたプロセッサが処理を開始するまでに数ミリ秒もの時間を要することがない。
【０１７５】
また、上述の仮想計算機システム１００によれば、仮想計算機が割り当てられていないプロセッサが複数ある場合に、１つのプロセッサを”待機”属性として起動させ、他のプロセッサの電源をオフとすることとなる。
【０１７６】
従って、仮想計算機が割り当てられていないプロセッサの全てに電源を供給する方式の仮想計算機システムに比べて、仮想計算機が割り当てられていないプロセッサの数が多くなっても、仮想計算機に係る処理を行うことのないプロセッサによる消費電力が大きくなることがない。
【０１７７】
また、上述の仮想計算機システム１００によれば、”待機”属性として起動されているプロセッサは、通常モードよりも消費電力の少ない省電力モードで動作することとなる。
【０１７８】
従って、新たに仮想計算機を割り当てられる場合に備えて待機している起動中のプロセッサが、通常モードで動作する方式の仮想計算機システムに比べて、仮想計算機に係る処理を行うことのないプロセッサによる消費電力を低く抑えることができる。
＜実施の形態２＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１における仮想計算機システム１００の一部を変形した変形仮想計算機システムについて説明する。
【０１７９】
実施の形態１における仮想計算機システム１００は、４つのプロセッサを備えているものであったが、この変形仮想計算機は、４つのプロセッサに替えて、３つの省電力プロセッサと３つの高性能プロセッサとを備えている。
【０１８０】
ここで、省電力プロセッサと高性能プロセッサとは、同じＩＳＡ（Instruction Set Architecture）を持つプロセッサである。省電力プロセッサは、高性能プロセッサよりも消費電力は小さいが、処理能力が小さい。
【０１８１】
この変形仮想計算機システムは、複数の仮想計算機を並列に実行し、複数の省電力プロセッサに仮想計算機が割り当てられていない場合に、次に新たな省電力プロセッサに仮想計算機を割り当てる場合に備えて、仮想計算機が割り当てられていない省電力プロセッサのうちの１つのプロセッサに電力を供給して待機状態としておき、その他の仮想計算機が割り当てられていない省電力プロセッサに電力を供給しないという制御を行い、複数の高性能プロセッサに仮想計算機が割り当てられていない場合に、次に新たな高性能プロセッサに仮想計算機を割り当てる場合に備えて、仮想計算機が割り当てられていない高性能プロセッサのうちの１つのプロセッサに電力を供給して待機状態としておき、その他の仮想計算機が割り当てられていない高性能プロセッサに電力を供給しないという制御を行うというものである。
【０１８２】
以下、本実施の形態２に係る変形仮想計算機システムの構成について図面を参照しながら、実施の形態１にける仮想計算機システム１００との相違点を中心に説明する。
【０１８３】
図１９は、変形仮想計算機システム１９００の主要なハードウエア構成を示すブロック図である。
【０１８４】
同図に示すように、変形仮想計算機システム１９００は、実施の形態１における仮想計算機システム１００から、システムＬＳＩ１１０をシステムＬＳＩ１９１０に変更するように変形したものである。
【０１８５】
システムＬＳＩ１９１０は、実施の形態１におけるシステムＬＳＩ１１０から、電源制御ブロック１１１を電源制御ブロック１９１１に変形し、クロック制御ブロック１１２をクロック制御ブロック１９１２に変形し、プロセッサＡ１０１〜プロセッサＤ１０４を削除し、省電力プロセッサＡ１９０１と省電力プロセッサＢ１９０２と省電力プロセッサＣ１９０３と高性能プロセッサＡ１９０４と高性能プロセッサＢ１９０５と高性能プロセッサＣ１９０６とを追加したものである。
【０１８６】
省電力プロセッサＡ１９０１と省電力プロセッサＢ１９０２と省電力プロセッサＣ１９０３とは、それぞれ内部バス１２０と電源制御ブロック１９１１とクロック制御ブロック１９１２とに接続し、それぞれＲＯＭ１１３、ＲＡＭ１１４、又はハードディスク装置１３０に記憶されているプログラムを実行することで、電源制御ブロック１９１１とクロック制御ブロック１９１２とＲＯＭ１１３とＲＡＭ１１４とハードディスク装置１３０と出力装置１３１と入力装置１３２とを制御して、様々な機能を実現する。
【０１８７】
省電力プロセッサＡ１９０１〜省電力プロセッサＣ１９０３は、それぞれ同じ機能を有するプロセッサであって、電源電圧が１．０Ｖで動作周波数が５００ＭＨｚで動作する通常動作モードと、電源電圧が０．８Ｖで動作周波数が２５０ＭＨｚで動作する省電力モードとの２つのモードを有する。
【０１８８】
また、省電力プロセッサＡ１９０１〜省電力プロセッサＣ１９０３は、供給される電源の電圧が０Ｖから０．８Ｖ以上に変化し、クロック信号が供給されるとことで起動する。
【０１８９】
高性能プロセッサＡ１９０４と高性能プロセッサＢ１９０５と高性能プロセッサＣ１９０６とは、それぞれ内部バス１２０と電源制御ブロック１９１１とクロック制御ブロック１９１２とに接続し、それぞれＲＯＭ１１３、ＲＡＭ１１４、又はハードディスク装置１３０に記憶されているプログラムを実行することで、電源制御ブロック１９１１とクロック制御ブロック１９１２とＲＯＭ１１３とＲＡＭ１１４とハードディスク装置１３０と出力装置１３１と入力装置１３２とを制御して、様々な機能を実現する。
【０１９０】
高性能プロセッサＡ１９０４〜高性能プロセッサＣ１９０６は、省電力プロセッサＡ１９０１〜省電力プロセッサＣ１９０３と同じＩＳＡを持つプロセッサであって、それぞれ同じ機能を有し、電源電圧が１．２Ｖで動作周波数が１ＧＨｚで動作する通常動作モードと、電源電圧が１．０Ｖで動作周波数が５００ＭＨｚで動作する省電力モードとの２つのモードを有する。
【０１９１】
また、高性能プロセッサＡ１９０４〜高性能プロセッサＣ１９０６は、供給される電源の電圧が０Ｖから１．０Ｖ以上に変化し、クロック信号が供給されるとことで起動する。
【０１９２】
電源制御ブロック１９１１は、内部バス１２０と省電力プロセッサＡ１９０１と省電力プロセッサＢ１９０２と省電力プロセッサＣ１９０３と高性能プロセッサＡ１９０４と高性能プロセッサＢ１９０５と高性能プロセッサＣ１９０６とに接続し、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、又は高性能プロセッサＣ１９０６によって制御され、省電力プロセッサＡ１９０１〜省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４〜高性能プロセッサＣ１９０６へ供給する電源の電圧を切り換える機能を有する。
【０１９３】
図２０は、電源制御ブロック１９１１の主要なハードウエア構成を示す構成図である。
【０１９４】
同図に示す通り、電源制御ブロック１９１１は、スイッチ設定レジスタ２０１０と電源スイッチ２０１１と電源スイッチ２０１２と電源スイッチ２０１３と電源スイッチ２０１４と電源スイッチ２０１５と電源スイッチ２０１６とから構成される。
【０１９５】
スイッチ設定レジスタ２０１０は、内部バス１２０と電源スイッチ２０１１と電源スイッチ２０１２と電源スイッチ２０１３と電源スイッチ２０１４と電源スイッチ２０１５と電源スイッチ２０１６とに接続し、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、又は高性能プロセッサＣ１９０６によって値を書き込まれる１２ビットのレジスタである。
【０１９６】
電源スイッチ２０１１は、スイッチ設定レジスタ２０１０と１．２Ｖの電圧を供給する１．２Ｖ電源配線２２１と１．０Ｖの電圧を供給する１．０Ｖ電源配線２２２と０Ｖの電圧を供給するグラウンド配線２２３と高性能プロセッサＡ１９０４に電圧を供給するための高性能プロセッサＡ電源配線２０３１とに接続し、スイッチ設定レジスタ２０１０の０ビット目と１ビット目とに書き込まれている値に従って、１．２Ｖ電源配線２２１と１．０Ｖ電源配線２２２とグラウンド配線２２３との３つの配線のうちの一つの配線を選択して、選択する配線と高性能プロセッサＡ電源配線２０３１とを電気的に接続するスイッチである。
【０１９７】
電源スイッチ２０１２と電源スイッチ２０１３とは、それぞれ電源スイッチ２０１１と同様のスイッチである。
【０１９８】
電源スイッチ２０１２は、スイッチ設定レジスタ２０１０の２ビット目と３ビット目とに書き込まれている値に従って、高性能プロセッサＢ１９０５に電圧を供給するための高性能プロセッサＢ電源配線２０３２と電気的に接続する電源配線を選択するスイッチであって、電源スイッチ２０１３は、スイッチ設定レジスタ２０１０の４ビット目と５ビット目とに書き込まれている値に従って、高性能プロセッサＣ１９０６に電圧を供給するための高性能プロセッサＣ電源配線２０３３と電気的に接続する電源配線を選択するスイッチである。
【０１９９】
電源スイッチ２０１４は、スイッチ設定レジスタ２０１０と１．０Ｖの電圧を供給する１．０Ｖ電源配線２２２と０．８Ｖの電圧を供給する０．８Ｖ電源配線２０２４と０Ｖの電圧を供給するグラウンド配線２２３と省電力プロセッサＡ１９０１に電圧を供給するための省電力プロセッサＡ電源配線２０３４とに接続し、スイッチ設定レジスタ２０１０の６ビット目と７ビット目とに書き込まれている値に従って、１．０Ｖ電源配線２２２と０．８Ｖ電源配線２０２４とグラウンド配線２２３との３つの配線のうちの一つの配線を選択して、選択する配線と省電力プロセッサＡ電源配線２０３４とを電気的に接続するスイッチである。
【０２００】
電源スイッチ２０１５と電源スイッチ２０１６とは、それぞれ電源スイッチ２０１４と同様のスイッチである。
【０２０１】
電源スイッチ２０１５は、スイッチ設定レジスタ２０１０の８ビット目と９ビット目とに書き込まれている値に従って、省電力プロセッサＢ１９０２に電圧を供給するための省電力プロセッサＢ電源配線２０３５と電気的に接続する電源配線を選択するスイッチであって、電源スイッチ２０１６は、スイッチ設定レジスタ２０１０の１０ビット目と１１ビット目とに書き込まれている値に従って、省電力プロセッサＣ１９０３に電圧を供給するための省電力プロセッサＣ電源配線２０３６と電気的に接続する電源配線を選択するスイッチである。
【０２０２】
電源制御ブロック１９１１は、また、変形仮想計算機システム１９００がリセットされた場合には、スイッチ設定レジスタ２０１０に初期値が代入されることで、省電力プロセッサＡ１９０１に１．０Ｖの電圧を供給し、省電力プロセッサＢ１９０２と省電力プロセッサＣ１９０３と高性能プロセッサＡ１９０４と高性能プロセッサＢ１９０５と高性能プロセッサＣ１９０６とに０Ｖの電圧を供給する機能を有する。
【０２０３】
再び図１９に戻って、変形仮想計算機システム１９００の主要なハードウエア構成の説明を続ける。
【０２０４】
クロック制御ブロック１９１２は、内部バス１２０と省電力プロセッサＡ１９０１と省電力プロセッサＢ１９０２と省電力プロセッサＣ１９０３と高性能プロセッサＡ１９０４と高性能プロセッサＢ１９０５と高性能プロセッサＣ１９０６とに接続し、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、又は高性能プロセッサＣ１９０６によって制御され、省電力プロセッサＡ１９０１〜省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４〜高性能プロセッサＣ１９０６へ供給するクロック信号の周波数を切り換える機能を有する。
【０２０５】
図２１は、クロック制御ブロック１９１２の主要なハードウエア構成を示す構成図である。
【０２０６】
同図に示す通り、クロック制御ブロック１９１２は、セレクタ設定レジスタ２１１０と１ＧＨｚＰＬＬ２１０１と１／２分周回路２１０２と１／４分周回路２１０３とセレクタ２１１１とセレクタ２１１２とセレクタ２１１３とセレクタ２１１４とセレクタ２１１５とセレクタ２１１６とから構成される。
【０２０７】
セレクタ設定レジスタ２１１０は、内部バス１２０とセレクタ２１１１とセレクタ２１１２とセレクタ２１１３とセレクタ２１１４とセレクタ２１１５とセレクタ２１１６とに接続し、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、又は高性能プロセッサＣ１９０６によって値を書き込まれる１２ビットのレジスタである。
【０２０８】
１ＧＨｚＰＬＬ２１０１は、１／２分周回路２１０２と１／４分周回路２１０３とセレクタ２１１１とセレクタ２１１２とセレクタ２１１３とセレクタ２１１４とセレクタ２１１５とセレクタ２１１６とに接続し、実施の形態１における１ＧＨｚＰＬＬ３０１と同様に、１ＧＨｚの周波数のクロック信号を生成して出力する機能を有する。
【０２０９】
１／２分周回路２１０２は、１ＧＨｚＰＬＬ２１０１とセレクタ２１１１とセレクタ２１１２とセレクタ２１１３とに接続し、実施の形態１における１／２分周回路３０２と同様に、入力される１ＧＨｚの周波数のクロック信号を２分周し、５００ＭＨｚの周波数のクロック信号を出力する機能を有する。
【０２１０】
１／４分周回路２１０３は、１ＧＨｚＰＬＬ２１０１とセレクタ２１１４とセレクタ２１１５とセレクタ２１１６とに接続し、入力される１ＧＨｚの周波数のクロック信号を４分周し、２５０ＭＨｚの周波数のクロック信号を出力する機能を有する。
【０２１１】
セレクタ２１１１は、セレクタ設定レジスタ２１１０と１ＧＨｚＰＬＬ２１０１と１／２分周回路２１０２とグラウンド３０３と高性能プロセッサＡ１９０４にクロック信号を供給するための高性能プロセッサＡクロック配線２１２１とに接続し、セレクタ設定レジスタ２１１０の０ビット目と１ビット目とに書き込まれている値に従って、１ＧＨｚの周波数のクロック信号と５００ＭＨｚの周波数のクロック信号と０ＭＨｚの周波数のクロック信号とのうちの一つのクロック信号を選択して、高性能プロセッサＡクロック配線２１２１を介して高性能プロセッサＡ１９０４に出力するセレクタである。
【０２１２】
セレクタ２１１２とセレクタ２１１３とは、それぞれセレクタ２１１１と同様のセレクタである。
【０２１３】
セレクタ２１１２は、セレクタ設定レジスタ２１１０の２ビット目と３ビット目とに書き込まれている値に従って、高性能プロセッサＢクロック配線２１２２を介して高性能プロセッサＢ１９０５に出力するクロック信号を選択して出力するセレクタであって、セレクタ２１１３は、セレクタ設定レジスタ２１１０の４ビット目と５ビット目とに書き込まれている値に従って、高性能プロセッサＣクロック配線２１２３を介して高性能プロセッサＣ１９０６に出力するクロック信号を選択して出力するセレクタである。
【０２１４】
セレクタ２１１４は、セレクタ設定レジスタ２１１０と１／２分周回路２１０２と１／４分周回路２１０３とグラウンド３０３と省電力プロセッサＡ１９０１にクロック信号を供給するための省電力プロセッサＡクロック配線２１２４とに接続し、セレクタ設定レジスタ２１１０の６ビット目と７ビット目とに書き込まれている値に従って、５００ＭＨｚの周波数のクロック信号と２５０ＭＨｚの周波数のクロック信号と０ＭＨｚの周波数のクロック信号とのうちの一つのクロック信号を選択して、省電力プロセッサＡクロック配線２１２４を介して省電力プロセッサＡ１９０１に出力するセレクタである。
【０２１５】
セレクタ２１１５とセレクタ２１１６とは、それぞれセレクタ２１１４と同様のセレクタである。
【０２１６】
セレクタ２１１５は、セレクタ設定レジスタ２１１０の８ビット目と９ビット目とに書き込まれている値に従って、省電力プロセッサＢクロック配線２１２５を介して省電力プロセッサＢ１９０２に出力するクロック信号を選択して出力するセレクタであって、セレクタ２１１６は、セレクタ設定レジスタ２１１０の１０ビット目と１１ビット目とに書き込まれている値に従って、省電力プロセッサＣクロック配線２１２６を介して省電力プロセッサＣ１９０３に出力するクロック信号を選択して出力するセレクタである。
【０２１７】
クロック制御ブロック１９１２は、また、変形仮想計算機システム１９００がリセットされた場合には、セレクタ設定レジスタ２１１０に初期値が代入されることで、省電力プロセッサＡ１９０１に５００ＭＨｚのクロック信号を出力し、省電力プロセッサＢ１９０２と省電力プロセッサＣ１９０３と高性能プロセッサＡ１９０４と高性能プロセッサＢ１９０５と高性能プロセッサＣ１９０６とに０Ｈｚのクロック信号を供給する機能を有する。
【０２１８】
以下、上述のハードウエアによって実現される変形仮想計算機システム１９００の機能について、図面を用いて説明する。
【０２１９】
図２２は、変形仮想計算機システム１９００を構成する主要な機能ブロックを示す機能構成図に、省電力プロセッサＡ１９０１と省電力プロセッサＢ１９０２と省電力プロセッサＣ１９０３とにそれぞれ１つの仮想計算機が割り当てられている状態を示す模式図を加えたものである。
【０２２０】
同図に示されるように、変形仮想計算機システム１９００は、実施の形態１における仮想計算機システム１００から、ハイパーバイザ４４０がハイパーバイザ２２４０に変形されたものである。
【０２２１】
ハイパーバイザ２２４０は、実施の形態１におけるハイパーバイザ４４０から仮想計算機割当手段４４２を仮想計算機割当手段２２４２に変更し、仮想計算機管理手段４４３を仮想計算機管理手段２２４３に変更し、プロセッサ管理手段４４４をプロセッサ管理手段２２４４に変更するように変形したものである。
【０２２２】
仮想計算機管理手段２２４３は、実施の形態１における仮想計算機管理手段４４３の一部の機能を変形したものであり、負荷監視手段４４１と仮想計算機割当手段２２４２と仮想計算機情報記憶手段４４５とに接続し、仮想計算機管理手段４４３の機能２と機能３と機能４とに加え、以下の機能１ａを有する。
【０２２３】
機能１ａ：ハイパーバイザ２２４０起動時に、実行対象となる全ての仮想計算機が、それぞれ１つのプロセッサと対応付けられるように仮想計算機情報を生成し、生成した仮想計算機情報を仮想計算機情報記憶手段に記憶させる機能。
【０２２４】
ここで、実行対象となる仮想計算機を割り当てていくプロセッサの順番は、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、高性能プロセッサＣ１９０６の順になっている。
【０２２５】
図２３は、仮想計算機管理手段２２４３によって生成され、仮想計算機情報記憶手段４４５によって記憶される仮想計算機情報のデータ構成図である。
【０２２６】
同図に示されるように、仮想計算機情報は、実施の形態１における仮想計算機情報と同様に、仮想計算機ＩＤ２３０１とタスク数２３０２とプロセッサＩＤ２３０３とが対応付けられたものである。
【０２２７】
再び、図２２に戻って変形仮想計算機システム１９００の機能構成の説明を続ける。
【０２２８】
プロセッサ管理手段２２４４は、実施の形態１におけるプロセッサ管理手段４４４の一部の機能を変形したものであり、仮想計算機割当手段２２４２とプロセッサ情報記憶手段４４６とに接続し、プロセッサ管理手段４４４の機能２と機能３とに加え、以下の機能１ａと機能１ｂと機能１ｃと機能１ｄとの機能を有する。
【０２２９】
機能１ａ：ハイパーバイザ２２４０起動時に、実行対象となる仮想計算機の数のプロセッサの属性が”実行”（後述）となるようにプロセッサ情報を生成する機能。
【０２３０】
ここで、”実行”属性とするプロセッサの順番は、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、高性能プロセッサＣ１９０６の順になっている。
【０２３１】
機能１ｂ：プロセッサ情報を生成する場合において、属性が”実行”となっていない省電力プロセッサが存在するとき、属性が”実行”となっていない省電力プロセッサのうちの１つのプロセッサの属性を”待機”とし、さらに、属性が”実行”、又は”待機”となっていない省電力プロセッサが存在すれば、そのプロセッサの属性を”オフ”とするように、プロセッサ情報を生成する機能。
【０２３２】
機能１ｃ：プロセッサ情報を生成する場合において、属性が”実行”となっていない高性能プロセッサが存在するとき、属性が”実行”となっていない高性能プロセッサのうちの１つのプロセッサの属性を”待機”とし、さらに、属性が”実行”、又は”待機”となっていない高性能プロセッサが存在すれば、そのプロセッサの属性を”オフ”とするように、プロセッサ情報を生成する機能。
【０２３３】
機能１ｄ：ハイパーバイザ２２４０起動時に生成したプロセッサ情報を、プロセッサ情報記憶手段４４６に記憶させる機能。
【０２３４】
図２４は、プロセッサ管理手段２２４４によって生成され、プロセッサ情報記憶手段４４６に記憶されるプロセッサ情報のデータ構成図である。
【０２３５】
同図に示されるように、プロセッサ情報は、プロセッサＩＤ２４０１と属性２４０２とが対応付けられたものである。
【０２３６】
プロセッサＩＤ２４０１は、プロセッサを特定するための情報である。
【０２３７】
属性２４０２は、対応するプロセッサＩＤで特定されるプロセッサの属性を示す情報である。
【０２３８】
省電力プロセッサＡ１９０１〜省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４〜高性能プロセッサＣ１９０６のそれぞれは、”実行”、”待機”、”オフ”の３つの属性のうちの１つの属性を対応付けられる。
【０２３９】
“実行”属性は、自プロセッサ上で仮想計算機を動作させる状態であることを示し、省電力プロセッサであれば、電源電圧が１．０Ｖで動作周波数が５００ＭＨｚで動作する通常動作モードで動作する状態となり、高性能プロセッサであれば、電源電圧が１．２Ｖで動作周波数が１ＧＨｚで動作する通常動作モードで動作する状態となる属性である。
【０２４０】
“待機”属性は、自プロセッサ上で仮想計算機を動作させない状態であることを示し、省電力プロセッサであれば、電源電圧が０．８Ｖで動作周波数が２５０ＭＨｚで動作する省電力モードで動作する状態となり、高性能プロセッサであれば、電源電圧が１．０Ｖで動作周波数が５００ＭＨｚで動作する省電力モードで動作する状態となる属性である。
【０２４１】
“オフ”属性は、プロセッサの状態が動作しない状態、すなわち、０Ｖの電源電圧が供給される状態となることを示す属性である。
【０２４２】
再び、図２２に戻って変形仮想計算機システム１９００の機能構成の説明を続ける。
【０２４３】
仮想計算機割当手段２２４２は、実施の形態１における仮想計算機割当手段４４２の一部の機能を変形したものであり、仮想計算機管理手段２２４３とプロセッサ管理手段２２４４と仮想計算機情報記憶手段４４５とプロセッサ情報記憶手段４４６とに接続し、仮想計算機割当手段４４２と同様の機能を有する。
【０２４４】
仮想計算機割当手段２２４２は、仮想計算機割当手段４４２と同様の機能を有するが、対象とするプロセッサが、省電力プロセッサと高性能プロセッサの２種類である点、及び、プロセッサの属性が、”実行”と”待機”と”オフ”との３種類である点が、仮想計算機割当手段４４２と異なっているため、仮想計算機割当手段２２４２の行う動作の一部は、仮想計算機割当手段４４２の動作の一部と異なっている。
【０２４５】
仮想計算機割当手段２２４２の行う動作のうちの、仮想計算機割当手段４４２の行う動作との相違点については、後述する。
【０２４６】
以上のように構成される変形仮想計算機システム１９００の行う動作について、以下、図面を参照しながら説明する。
【０２４７】
＜動作＞
ここでは、変形仮想計算機システム１９００が行う動作のうち、特徴的な動作である、変形システム起動処理と、変形システム更新処理とについて説明する。
【０２４８】
＜変形システム起動処理＞
変形システム起動処理は、実施の形態１におけるシステム起動処理の一部を変形されたものであり、変形仮想計算機システム１９００がリセットされた場合に、変形仮想計算機システム１９００を起動する処理である。
【０２４９】
図２５は、変形システム起動処理のフローチャートである。
【０２５０】
変形仮想計算機システム１９００がリセットされると、電源制御ブロック１９１１は、省電力プロセッサＡ１９０１に１．０Ｖの電圧を供給し、クロック制御ブロック１９１２は、省電力プロセッサＡ１９０１に５００ＭＨｚのクロック信号を供給し、省電力プロセッサＡ１９０１が起動する（ステップＳ２５００）。
【０２５１】
省電力プロセッサＡ１９０１が起動すると、省電力プロセッサＡ１９０１は、ハイパーバイザ２２４０を起動する（ステップＳ２５１０）。
【０２５２】
ハイパーバイザ２２４０が起動すると、仮想計算機管理手段２２４３は、実行対象となる全ての仮想計算機が、それぞれ１つのプロセッサと対応付けられるように仮想計算機情報を生成し、生成した仮想計算機情報を仮想計算機情報記憶手段に記憶させる（ステップＳ２５２０）。
【０２５３】
このとき、実行対象となる仮想計算機を対応付けていくプロセッサの順番は、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、高性能プロセッサＣ１９０６の順となり、生成される仮想計算機情報のタスク数２３０２には、それぞれ初期値である”０”を示す情報が代入される。
【０２５４】
ステップＳ２５２０の処理が終了すると、プロセッサ管理手段２２４４は、実行対象となる仮想計算機を対応付けられたプロセッサのそれぞれの属性が”実行”となるように、また、属性が”実行”とならなかった省電力プロセッサが存在するとき、属性が”実行”となっていない省電力プロセッサのうちの１つのプロセッサの属性を”待機”とし、さらに、属性が”実行”、又は”待機”とならなかった省電力プロセッサが存在すれば、そのプロセッサの属性を”オフ”となるように、そして、属性が”実行”となっていない高性能プロセッサが存在するとき、属性が”実行”となっていない高性能プロセッサのうちの１つのプロセッサの属性を”待機”とし、さらに、属性が”実行”、又は”待機”となっていない高性能プロセッサが存在すれば、そのプロセッサの属性を”オフ”とするように、プロセッサ情報を生成し、生成したプロセッサ情報をプロセッサ情報記憶手段４４６に記憶させる（ステップＳ２５３０）。
【０２５５】
ステップＳ２５３０の処理が終了すると、プロセッサ管理手段２２４４は、省電力プロセッサＡ１９０１以外のプロセッサのそれぞれについて、プロセッサ情報記憶手段４４６に記憶させたプロセッサ情報に基づいて、変形プロセッサ更新処理を実施する（ステップＳ２５４０）。
【０２５６】
図２６、図２７は、プロセッサ管理手段２２４４の行う変形プロセッサ更新処理のフローチャートである。
【０２５７】
変形プロセッサ更新処理が開始されると、プロセッサ管理手段２２４４は、対象のプロセッサが省電力プロセッサか否かを調べる（ステップＳ２６００）。
【０２５８】
ステップＳ２６００の処理において、対象のプロセッサが省電力プロセッサである場合に（ステップＳ２６００：Ｙｅｓ）、プロセッサ管理手段２２４４は、対象となるプロセッサの現在の属性が”実行”であるか否かを調べる（ステップＳ２６１０）。
【０２５９】
ステップＳ２６１０の処理において、属性が”実行”である場合に（ステップＳ２６１０：Ｙｅｓ）、プロセッサ管理手段２２４４は、そのプロセッサに供給する電源電圧が１．０Ｖとなるように変更し、供給するクロック信号の周波数が５００ＭＨｚとなるように変更する（ステップＳ２６２０）。
【０２６０】
ステップＳ２６１０の処理において、対象となるプロセッサの現在の属性が”実行”でない場合には（ステップＳ２６１０：Ｎｏ）、プロセッサ管理手段２２４４は、対象となるプロセッサの現在の属性が”待機”であるか否かを調べる（ステップＳ２６３０）。
【０２６１】
ステップＳ２６３０の処理において、対象となるプロセッサの現在の属性が”待機”である場合には（ステップＳ２６３０：Ｙｅｓ）、プロセッサ管理手段２２４４は、そのプロセッサに供給する電源電圧が０．８Ｖとなるように変更し、供給するクロック信号の周波数が２５０ＭＨｚとなるように変更する（ステップＳ２６４０）。
【０２６２】
ステップＳ２６３０の処理において、対象となるプロセッサの現在の属性が”待機”でない場合には（ステップＳ２６３０：Ｎｏ）、プロセッサ管理手段２２４４は、そのプロセッサに供給する電源電圧が０Ｖとなるように変更し、供給するクロック信号の周波数が０Ｈｚとなるように変更する（ステップＳ２６５０）。
【０２６３】
ステップＳ２６００の処理において、対象のプロセッサが省電力プロセッサでない、すなわち、高性能プロセッサである場合に（ステップＳ２６００：Ｎｏ）、プロセッサ管理手段２２４４は、対象となるプロセッサの現在の属性が”実行”であるか否かを調べる（ステップＳ２７１０）。
【０２６４】
ステップＳ２７１０の処理において、属性が”実行”である場合に（ステップＳ２７１０：Ｙｅｓ）、プロセッサ管理手段２２４４は、そのプロセッサに供給する電源電圧が１．２Ｖとなるように変更し、供給するクロック信号の周波数が１ＧＨｚとなるように変更する（ステップＳ２７２０）。
【０２６５】
ステップＳ２７１０の処理において、対象となるプロセッサの現在の属性が”実行”でない場合には（ステップＳ２７１０：Ｎｏ）、プロセッサ管理手段２２４４は、対象となるプロセッサの現在の属性が”待機”であるか否かを調べる（ステップＳ２７３０）。
【０２６６】
ステップＳ２７３０の処理において、対象となるプロセッサの現在の属性が”待機”である場合には（ステップＳ２７３０：Ｙｅｓ）、プロセッサ管理手段２２４４は、そのプロセッサに供給する電源電圧が１．０Ｖとなるように変更し、供給するクロック信号の周波数が５００ＭＨｚとなるように変更する（ステップＳ２７４０）。
【０２６７】
ステップＳ２７３０の処理において、対象となるプロセッサの現在の属性が”待機”でない場合には（ステップＳ２７３０：Ｎｏ）、プロセッサ管理手段２２４４は、そのプロセッサに供給する電源電圧が０Ｖとなるように変更し、供給するクロック信号の周波数が０Ｈｚとなるように変更する（ステップＳ２７５０）。
【０２６８】
ステップＳ２６２０の処理が終了した場合、ステップＳ２６４０の処理が終了した場合、ステップＳ２６５０の処理が終了した場合、ステップＳ２７２０の処理が終了した場合、ステップＳ２７４０の処理が終了した場合、ステップＳ２７５０の処理が終了した場合に、プロセッサ管理手段２２４４は、その変形プロセッサ更新処理を終了する。
【０２６９】
ステップＳ２５４０の処理（変形プロセッサ更新処理）が終了すると、仮想計算機割当手段２２４２は、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報に基づいて、仮想計算機と対応付けられているプロセッサで仮想計算機を動作させる（ステップＳ２５５０）。
【０２７０】
ステップＳ２５５０の処理が終了すると、変形仮想計算機システム１９００は、その変形システム起動処理を終了する。
【０２７１】
＜変形システム更新処理＞
変形システム更新処理は、実施の形態１におけるシステム更新処理の一部を変形されたものであり、各仮想計算機上で動作しているＯＳが管理する待ち行列のそれぞれに存在するタスクの数の変動に応じて、各プロセッサの属性を動的に変更し、各仮想計算機のプロセッサへの割り当てを動的に変更する処理である。
【０２７２】
図２８は、変形システム更新処理のフローチャートである。
【０２７３】
変形システム更新処理のうち、ステップＳ２８００、ステップＳ２８１０、ステップＳ２８２０、ステップＳ２８３０の処理は、それぞれ、実施の形態１におけるシステム更新処理（図８参照）のステップＳ８００、ステップＳ８１０、ステップＳ８２０、ステップＳ８３０の処理と同等の処理なので、ここでは説明を省略する。
【０２７４】
ステップＳ２８３０の処理において、更新前のタスク数と更新後のタスク数とで変化しているものがある場合に（ステップＳ２８３０：Ｙｅｓ）、仮想計算機管理手段２２４３は、そのタスク数に対応する仮想計算機ＩＤを仮想計算機割当手段２２４２に出力し、変形仮想計算機システム１９００は、変形仮想計算機割当処理を実施する（ステップＳ２８４０）。
【０２７５】
図２９、図３０は、変形仮想計算機システム１９００の行う変形仮想計算機割当処理のフローチャートである。
【０２７６】
仮想計算機割当手段２２４２は、変化しているタスク数に対応する仮想計算機ＩＤを受け取ると、受け取った仮想計算機ＩＤの中から１つを選択する。
【０２７７】
仮想計算機割当手段２２４２は、仮想計算機ＩＤを１つ選択すると、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報を読み出して、選択している仮想計算機ＩＤによって特定される仮想計算機が動作しているプロセッサが省電力プロセッサであるか否かを調べる（ステップＳ２９００）。
【０２７８】
ステップＳ２９００の処理において、選択している仮想計算機ＩＤによって特定される仮想計算機が動作しているプロセッサが省電力プロセッサである場合に（ステップＳ２９００：Ｙｅｓ）、仮想計算機割当手段２２４２は、その仮想計算機に対応付けられているタスク数が第１所定量（例えば３０）以上であるか否かを調べる（ステップＳ２９１０）。
【０２７９】
ステップＳ２９１０の処理において、タスク数が第１所定量（例えば３０）以上の場合に（ステップＳ２９１０：Ｙｅｓ）、仮想計算機割当手段２２４２は、”待機”属性の高性能プロセッサが存在するか否かを調べる（ステップＳ２９２０）。
【０２８０】
ステップＳ２９２０の処理において、”待機”属性の高性能プロセッサが存在する場合に（ステップＳ２９２０：Ｙｅｓ）、仮想計算機割当手段２２４２は、その”待機”属性の高性能プロセッサの属性が”実行”となるように、プロセッサ管理手段２２４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ２９２５）。
【０２８１】
ステップＳ２９２５の処理が終わると、仮想計算機割当手段２２４２は、選択している仮想計算機ＩＤによって特定される仮想計算機を割り当てられて実行するプロセッサを、その仮想計算機が現在割り当てられて動作しているプロセッサ（以後、移動元プロセッサと呼ぶ。）から、ステップＳ２９２０の処理において存在することが判明した”待機”属性のプロセッサ（以後、移動先プロセッサと呼ぶ。）へと変更する（ステップＳ２９３０：変形仮想計算機割当変更処理）。
【０２８２】
図３１は、変形仮想計算機システム１９００の行う変形仮想計算機割当変更処理のフローチャートである。
【０２８３】
変形仮想計算機システム１９００が変形仮想計算機割当変更処理を開始すると、仮想計算機割当手段２２４２は、移動元プロセッサにおける仮想計算機の状態（各種レジスタに記憶されているデータ等の、仮想計算機の処理を復旧させるために必要なデータ群）を、ＲＡＭ１１４の所定の領域に退避させ（ステップＳ３１００）、移動先プロセッサで対象となる仮想計算機を復旧させて動作させる（ステップＳ３１１０）。
【０２８４】
ステップＳ３１１０の処理が終了すると、変形仮想計算機システム１９００は、その変形仮想計算機割当変更処理を終了する。
【０２８５】
再び、図２９に戻って変形仮想計算機割当処理の説明を続ける。
【０２８６】
ステップＳ２９３０の処理が終了した場合、又はステップＳ２９２０の処理において、”待機”属性の高性能プロセッサが存在しない場合に（ステップＳ２９２０：Ｎｏ）、仮想計算機割当手段２２４２は、”オフ”属性の高性能プロセッサが存在するか否かを調べる（ステップＳ２９４０）。
【０２８７】
ステップＳ２９４０の処理において、”オフ”属性の高性能プロセッサが存在する場合に（ステップＳ２９４０：Ｙｅｓ）、仮想計算機割当手段２２４２は、その”オフ”属性の高性能プロセッサの属性が”待機”となるように、プロセッサ管理手段２２４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ２９５０）。
【０２８８】
ステップＳ２９５０の処理が終了した場合に、仮想計算機割当手段２２４２は、”待機”属性の省電力プロセッサが存在するか否かを調べる（ステップＳ２９６０）。
【０２８９】
ステップＳ２９６０の処理において、”待機”属性の省電力プロセッサが存在する場合に（ステップＳ２９６０：Ｙｅｓ）、仮想計算機割当手段２２４２は、移動元プロセッサの属性が”オフ”となるように、プロセッサ管理手段２２４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ２９７０）。
【０２９０】
ステップＳ２９６０の処理において、”待機”属性の省電力プロセッサが存在しない場合に（ステップＳ２９６０：Ｎｏ）、仮想計算機割当手段２２４２は、移動元プロセッサの属性が”待機”となるように、プロセッサ管理手段２２４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ２９８０）。
【０２９１】
ステップＳ２９００の処理において、選択している仮想計算機ＩＤによって特定される仮想計算機が動作しているプロセッサが省電力プロセッサでない場合、すなわち、高性能プロセッサである場合に（ステップＳ２９００：Ｎｏ）、仮想計算機割当手段２２４２は、その仮想計算機に対応付けられているタスク数が第２所定量（例えば２５）以下であるか否かを調べる（ステップＳ３０００）。
【０２９２】
ステップＳ３０００の処理において、タスク数が第２所定量（例えば２５）以下の場合に（ステップＳ３０００：Ｙｅｓ）、仮想計算機割当手段２２４２は、”待機”属性の省電力プロセッサが存在するか否かを調べる（ステップＳ３０１０）。
【０２９３】
ステップＳ３０１０の処理において、”待機”属性の省電力プロセッサが存在する場合に（ステップＳ３０１０：Ｙｅｓ）、仮想計算機割当手段２２４２は、選択している仮想計算機ＩＤによって特定される仮想計算機を割り当てられて実行するプロセッサを移動元プロセッサとして、ステップＳ２９２０の処理において存在することが判明した”待機”属性のプロセッサを移動先プロセッサとして、変形仮想計算機割当変更処理を実施する（ステップＳ３０２０）。
【０２９４】
ステップＳ３０２０の処理が終了した場合、又はステップＳ３０１０の処理において、”待機”属性の省電力プロセッサが存在しない場合に（ステップＳ３０１０：Ｎｏ）、仮想計算機割当手段２２４２は、”オフ”属性の省電力プロセッサが存在するか否かを調べる（ステップＳ３０３０）。
【０２９５】
ステップＳ３０３０の処理において、”オフ”属性の省電力プロセッサが存在する場合に（ステップＳ３０３０：Ｙｅｓ）、仮想計算機割当手段２２４２は、その”オフ”属性の省電力プロセッサの属性が”待機”となるように、プロセッサ管理手段２２４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ３０４０）。
【０２９６】
ステップＳ３０４０の処理が終了した場合に、仮想計算機割当手段２２４２は、”待機”属性の高性能プロセッサが存在するか否かを調べる（ステップＳ３０５０）。
【０２９７】
ステップＳ３０５０の処理において、”待機”属性の高性能プロセッサが存在する場合に（ステップＳ３０５０：Ｙｅｓ）、仮想計算機割当手段２２４２は、移動元プロセッサの属性が”オフ”となるように、プロセッサ管理手段２２４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ３０６０）。
【０２９８】
ステップＳ３０５０の処理において、”待機”属性の省電力プロセッサが存在しない場合に（ステップＳ３０５０：Ｎｏ）、仮想計算機割当手段２２４２は、移動元プロセッサの属性が”待機”となるように、プロセッサ管理手段２２４４を用いて、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報を更新する（ステップＳ３０７０）。
【０２９９】
ステップＳ２９１０の処理において、タスク数が第１所定量（例えば３０）以上でない場合（ステップＳ２９１０：Ｎｏ）、ステップＳ２９４０の処理において、”オフ”属性の高性能プロセッサが存在しない場合（ステップＳ２９４０：Ｎｏ）、ステップＳ２９７０の処理が終了した場合、ステップＳ２９８０の処理が終了した場合、ステップＳ３０００の処理において、タスク数が第２所定量（例えば２５）以下でない場合（ステップＳ３０００：Ｎｏ）、ステップＳ３０３０の処理において、”オフ”属性の省電力プロセッサが存在しない場合（ステップＳ３０３０：Ｎｏ）ステップＳ３０６０の処理が終了した場合、ステップＳ３０７０の処理が終了した場合に、仮想計算機割当手段２２４２は、受け取った仮想計算機ＩＤの中に未だ選択したことのない仮想計算機ＩＤがあるか否かを調べる（図２９のステップＳ２９９０）。
【０３００】
ステップＳ２９９０の処理において、未だ選択したことのない仮想計算機ＩＤが存在する場合に（ステップＳ２９９０：Ｙｅｓ）、仮想計算機割当手段２２４２は、未だ選択したことのない仮想計算機ＩＤのうちの１つを選択し、再びステップＳ２９００の処理に戻って、ステップＳ２９００以降の処理を行う。
【０３０１】
ステップＳ２９９０の処理において、未だ選択したことのない仮想計算機ＩＤが存在しない場合に（ステップＳ２９９０：Ｎｏ）、変形仮想計算機システム１９００は、その仮想計算機割当処理を終了する。
【０３０２】
再び図２８に戻って、変形システム更新処理の説明を続ける。
【０３０３】
ステップＳ２８４０の処理が終了すると、プロセッサ管理手段２２４４は、ステップＳ２８４０の仮想計算機割当処理において、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報の属性が更新されたプロセッサが存在するか否かを調べる（ステップＳ２８５０）。
【０３０４】
ステップＳ２８５０の処理において、プロセッサ情報の属性が更新されていた場合に（ステップＳ２８５０：Ｙｅｓ）、プロセッサ管理手段２２４４は、属性が更新されていたプロセッサのそれぞれに対して、プロセッサ更新処理（図２６、図２７参照）を実施する（ステップＳ２８６０）。
【０３０５】
ステップＳ２８３０の処理において更新前のタスク数と更新後のタスク数とで変化しているものがない場合（ステップＳ２８３０：Ｎｏ）、ステップＳ２８５０の処理においてプロセッサ情報の属性が更新されてなかった場合（ステップＳ２８５０：Ｎｏ）、又はステップＳ２８６０の処理が終了した場合に、負荷監視手段４４１は、起動中のタイマで計測している時間が所定時間Ｔ１（例えば１００μｓ）となるまで待機する（ステップＳ２８７０）。
【０３０６】
計測している時間が所定時間Ｔ１（例えば１００μｓ）となると、負荷監視手段４４１は再びステップＳ２８００の処理に戻り、ステップＳ２８００以下の処理を行う。
【０３０７】
＜具体例＞
以下、上述の変形システム更新処理について、具体例を用いて説明を補足する。
【０３０８】
この具体例は、時刻ｔ１に、仮想計算機情報記憶手段４４５に記憶されている仮想計算機情報が図２３に示されるものであり、プロセッサ情報記憶手段４４６に記憶されているプロセッサ情報が図２４に示されるものであって、仮想計算機Ａ４１１が省電力プロセッサＡ１９０１に割り当てられて実行され、仮想計算機Ｂ４１２が省電力プロセッサＢ１９０２に割り当てられて実行され、仮想計算機Ｃ４１３が省電力プロセッサＣ１９０３に割り当てられて実行され、高性能プロセッサＡ１９０４が省電力モードで起動しつつ新たな仮想計算機の割り当てに備えて待機し、高性能プロセッサＢ１９０５と高性能プロセッサＣ１９０６とは電源が供給されていない状態となっている場合において（図２２参照）、時刻ｔ２に、第３ＯＳが管理するタスク待ち行列に存在するタスク数が５から４０に変化したときの例である。
【０３０９】
時刻ｔ２以降において負荷監視手段４４１が各仮想計算機のＯＳによって管理されるタスク待ち行列に存在するタスク数を取得する最初のタイミングになると、負荷監視手段４４１は、各仮想計算機のＯＳによって管理されるタスク待ち行列に存在するタスク数を取得して、タイマを起動し、仮想計算機管理手段２２４３が仮想計算機情報を更新する（ステップＳ２８００〜ステップＳ２８２０）。
【０３１０】
更新された仮想計算機情報は、図３２に示されるものとなる。
【０３１１】
仮想計算機Ｃ４１３のタスク数が５から４０に変化しているので（ステップＳ２８３０：Ｙｅｓ）、変形仮想計算機システム１９００は、変形仮想計算機割当処理を実施する（ステップＳ２８４０）。
【０３１２】
仮想計算機Ｃ４１３が動作するプロセッサは、省電力プロセッサで（図３２参照、ステップＳ２９００：Ｙｅｓ）、タスク数が第１所定量（例えば３０）以上で（ステップＳ２９１０：Ｙｅｓ）、”待機”属性の高性能プロセッサＡ１９０４が存在する（図２４参照、ステップＳ２９２０：Ｙｅｓ）ので、仮想計算機割当手段２２４２は、高性能プロセッサＡ１９０４の属性を”実行”に変更してプロセッサ情報を更新して（ステップＳ２９２５）、変形仮想計算機割当変更処理（ステップＳ２９４０）を実行する。
【０３１３】
仮想計算機割当手段２２４２は、仮想計算機Ｃ４１３が省電力プロセッサＣ１９０３に割り当てられて動作している状態を、仮想計算機Ｃ４１３が高性能プロセッサＡ１９０４に割り当てられて動作している状態に変更する（ステップＳ３１００〜ステップＳ３１１０）。
【０３１４】
高性能プロセッサＢ１９０５の属性は”オフ”なので（ステップＳ２９４０）、高性能プロセッサＢ１９０５の属性を”待機”に変更してプロセッサ情報を更新し（ステップＳ２９５０）、”待機”属性の省電力プロセッサがないので（ステップＳ２９６０：Ｎｏ）、省電力プロセッサＣ１９０３の属性を”待機”に変更してプロセッサ情報を更新する（ステップＳ２９８０）。
【０３１５】
他にタスク数が変化している仮想計算機がないので（ステップＳ２９９０：Ｎｏ）、仮想計算機割当手段２２４２は、変形仮想計算機割当処理を終了し、プロセッサ管理手段２２４４は、プロセッサ情報の属性が更新されたプロセッサが存在するか否かを調べる（ステップＳ２８５０）。
【０３１６】
この時のプロセッサ情報記憶手段４４６に記憶されているプロセッサ情報は図３３に記憶されているものとなっており、省電力プロセッサＣ１９０３と高性能プロセッサＡ１９０４と高性能プロセッサＢ１９０５との属性が変更されていることがわかる（ステップＳ２８６０：Ｙｅｓ）。
【０３１７】
省電力プロセッサＣ１９０３は、省電力プロセッサで（ステップＳ２６００：Ｙｅｓ）、属性が”待機”なので（ステップＳ２６１０：Ｎｏ〜ステップＳ２６３０：Ｙｅｓ）、プロセッサ管理手段２２４４は、省電力プロセッサＣ１９０３に供給する電源電圧を１．０Ｖから０．８Ｖに変更し、省電力プロセッサＣ１９０３に供給するクロック信号の周波数を５００ＭＨｚから２５０ＭＨｚに変更し（ステップＳ２６４０）、省電力プロセッサＣ１９０３を省電力モードとする。
【０３１８】
高性能プロセッサＡ１９０４は、高性能プロセッサで（ステップＳ２６００：Ｎｏ）、属性が”実行”なので（ステップＳ２７１０：Ｙｅｓ）、プロセッサ管理手段２２４４は、高性能プロセッサＡ１９０４に供給する電源電圧を１．０Ｖから１．２Ｖに変更し、高性能プロセッサＡ１９０４に供給するクロック信号の周波数を５００ＭＨｚから１ＧＨｚに変更し（ステップＳ２７２０）、高性能プロセッサＡ１９０４を通常動作モードとする。
【０３１９】
高性能プロセッサＢ１９０５は、高性能プロセッサで（ステップＳ２６００：Ｎｏ）、属性が”待機”なので（ステップＳ２７１０：Ｎｏ〜ステップＳ２７３０：Ｙｅｓ）、プロセッサ管理手段２２４は、高性能プロセッサＢ１９０５に１．０Ｖの電源電圧を供給し、５００ＭＨｚのクロック信号を供給して、高性能プロセッサＢ１９０５を省電力モードで起動させる（図３４参照）。
【０３２０】
その後、負荷監視手段４４１は、起動中のタイマで計測している時間が所定時間Ｔ１（例えば１００μｓ）となるまで待機する（ステップＳ２８７０）。
【０３２１】
＜まとめ＞
上述の変形仮想計算機システム１９００によれば、省電力プロセッサに割り当てられて動作している仮想計算機のタスク数が第１所定量以上になると、その仮想計算機を省電力プロセッサよりも処理能力の高い高性能プロセッサに割り当てて動作させることができるようになる。
【０３２２】
また、上記変形仮想計算機システム１９００によれば、高性能プロセッサに割り当てられて動作している仮想計算機のタスク数が第２所定量以下になると、その仮想計算機を高性能プロセッサよりも消費電力の少ない省電力プロセッサに割り当てて動作させることができるようになる。
＜補足＞
以上、本発明に係る仮想計算機システムの一実施形態として、実施の形態１、実施の形態２において、２つの仮想計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの仮想計算機システムに限られないことはもちろんである。
（１）実施の形態１において、仮想計算機システム１００が４つのプロセッサを備える場合の例について説明したが、複数のプロセッサを備えていれば、プロセッサの数は必ずしも４に限られることはなく、例えば、プロセッサの数が３、１０等であっても構わない。
（２）実施の形態２において、各プロセッサは、通常モード時に電源電圧が１．２Ｖで動作周波数が１ＧＨｚで動作し、省電力モード時に電源電圧が１．０Ｖで動作周波数が５００ＭＨｚで動作する場合の例について説明したが、必ずしも通常モード時に電源電圧が１．２Ｖで動作周波数が１ＧＨｚで動作し、省電力モード時に電源電圧が１．０Ｖで動作周波数が５００ＭＨｚで動作する必要はなく、通常モード時のデータ処理能力が省電力モード時のデータ処理能力以上であって、通常モード時の消費電力が省電力モード時の消費電力以上であれば、例えば、通常モード時に電源電圧が１．５Ｖで動作周波数が２００ＭＨｚで動作し、省電力モード時に電源電圧が１．２Ｖで動作周波数が１００ＭＨｚで動作するとしても構わない。
【０３２３】
さらには、通常モードと省電力モードとで、電源電圧と動作周波数とが同じ、すなわち、通常モードと省電力モードとの区別がないとしても構わない。
（３）実施の形態１において、仮想計算機システム１００は、仮想計算機で動作するＯＳによって管理されるタスク待ち行列に存在するタスクの数に基づいて、プロセッサの属性を変更する場合の例について説明したが、仮想計算機の負荷量を示す指標となり得るものに基づいて、プロセッサの属性を変更することができれば、必ずしもタスクの数に基づいて、プロセッサの属性を変更する必要はなく、例えば、タスクの種類によって重み付けされたタスクの数に基づいて、プロセッサの属性を変更するとしても構わないし、タスクの種類に基づいて、プロセッサの属性を変更するとしても構わない。
（４）実施の形態１において、各仮想計算機が１つのプロセッサに割り当てられて動作する場合の例について説明したが、仮想計算機を実現することができれば、１つの仮想計算機が割り当てられるプロセッサは必ずしも１つである必要はなく、例えば、１つの仮想計算機が２つのプロセッサに割り当てられて動作するとしても構わない。
（５）実施の形態１において、仮想計算機システム１００は、一部のプロセッサに仮想計算機が割り当てられていない場合に、次に新たなプロセッサに仮想計算機を割り当てる場合に備えて、仮想計算機が割り当てられていないプロセッサのうちの１つのプロセッサに電力を供給して待機状態としておき、その他の仮想計算機が割り当てられていないプロセッサに電力を供給しないという制御を行う例について説明したが、待機状態となるプロセッサが存在していれば、必ずしも待機状態としておくプロセッサの数は１つに限られず、例えば、待機状態となるプロセッサが２つとなるように制御しても構わないし、例えば、午前９時から午後７時までの時刻には待機状態となるプロセッサは２つで、それ以外の時刻には待機状態となるプロセッサが１つとなるように制御するというように、時刻に応じて待機状態となるプロセッサの数が変動するように制御しても構わない。
（６）実施の形態１において、仮想計算機システム１００は、”待機”属性のプロセッサが存在する場合において、仮想計算機が割り当てられていたプロセッサに仮想計算機が割り当てられなくなるとき、その新たに仮想計算機が割り当てられなくなるプロセッサを”オフ”属性にする場合の例について説明したが、待機属性のプロセッサが少なくとも１つ存在するように制御できれば、必ずしも新たに仮想計算機が割り当てられなくなるプロセッサを”オフ”属性にする必要はなく、例えば、”待機”属性のプロセッサを”オフ”属性とし、新たに仮想計算機が割り当てられなくなるプロセッサを”待機”属性とするとしても構わない。
（７）実施の形態１において、プロセッサＡ１０１とプロセッサＢ１０２とプロセッサＣ１０３とプロセッサＤ１０４と電源制御ブロック１１１とクロック制御ブロック１１２とＲＯＭ１１３とＲＡＭ１１４とハードディスク装置インターフェース１１５と出力装置インターフェース１１６と入力装置インターフェース１１７と内部バス１２０とが、１つのシステムＬＳＩ１１０に集積されている例について説明したが、これらの回路が必ずしも１つのＬＳＩに集積されている必要はなく、システムＬＳＩ１１０によって実現される機能を実現することができれば、例えば、各回路がそれぞれ互いに異なる集積回路に集積されている構成であっても構わない。
（８）実施の形態１において、第１所定量が例えば３０で、第２所定量が例えば２５である場合の例について説明したが、第１所定量が第２所定量以上であれば、第１所定量は必ずしも３０である必要はなく、第２所定量は必ずしも２５である必要はなく、例えば、第１所定量が１００で第２所定量が９０であっても構わないし、第１所定量と第２所定量とが共に４０であっても構わない。
（９）実施の形態１において、プロセッサは、複数の仮想計算機を動作させる場合に、それぞれの仮想計算機を時分割方式で順番に繰り返し動作させる例について説明したが、複数の仮想計算機を動作させることができれば、必ずしも時分割方式で順番に繰り返し動作させる必要はなく、例えば、プロセッサは、複数のスレッドを並列に動作させることができるマルチスレッド処理機能を有していて、複数の仮想計算機を、そのマルチスレッド処理機能を利用して並列に動作させるとしても構わない。
（１０）実施の形態１において、”待機”属性のプロセッサは、電源電圧が１．０Ｖで、動作周波数が５００ＭＨｚで動作する例について説明したが、”待機”属性のプロセッサは、動作に必要となる電源電圧が供給されていれば、必ずしも電源電圧が１．０Ｖである必要はなく、また、必ずしも動作周波数が５００ＭＨｚで動作している必要はない。
【０３２４】
例えば、”待機”属性のプロセッサは、電源電圧が１．２Ｖで、動作周波数が０Ｈｚ、すなわち、動作していない状態であっても構わないし、電源電圧が１．２Ｖで、動作周波数が１ＧＨｚで動作していても構わない。
（１１）実施の形態２において、省電力プロセッサの数と高性能プロセッサの数とが同じである場合の例について説明したが、省電力プロセッサの数が複数で、高性能プロセッサの数が複数であれば、必ずしも省電力プロセッサの数と高性能プロセッサの数とが同じである必要はない。
（１２）実施の形態２において、省電力プロセッサと高性能プロセッサとが同じＩＳＡである場合の例について説明したが、必ずしも同じＩＳＡである必要はない。
【０３２５】
異なるＩＳＡにおいて、実装されていない命令を実行する場合、例えば、ハイパーバイザ等によって命令のエミュレーションを行うことで代用できる。
（１３）実施の形態２において、仮想計算機管理手段２２４３は、ハイパーバイザ２２４０起動時に、実行対象となる仮想計算機を割り当てていくプロセッサの順番を、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、高性能プロセッサＣ１９０６の順とする場合の例について説明したが、順番が一意に決まっていれば、必ずしも、省電力プロセッサＡ１９０１、省電力プロセッサＢ１９０２、省電力プロセッサＣ１９０３、高性能プロセッサＡ１９０４、高性能プロセッサＢ１９０５、高性能プロセッサＣ１９０６の順である必要はない。
（１４）実施の形態１において、スイッチ設定レジスタ２１０のビット数が８ビットである場合の例について説明したが、各プロセッサに供給する電源電圧を設定することができるビット数であれば、必ずしも８ビットである必要はない。
【０３２６】
また、実施の形態１では、仮想計算機システム１００において、プロセッサの数が４であり、各プロセッサに供給する電源電圧が３種類である場合に、スイッチ設定レジスタ２１０のビット数を８ビットとする例について説明したが、仮想計算機システム１００とプロセッサの数や電源電圧の種類が互いに異なる仮想計算機システムであれば、当然、その仮想計算機システムにおけるプロセッサの数や電源電圧の種類を反映して、スイッチ設定レジスタのビット数は決定される。
【０３２７】
同様に、実施の形態２において、スイッチ設定レジスタ２０１０のビット数が１２ビットである場合の例について説明したが、各プロセッサに供給する電源電圧を設定することができるビット数であれば、必ずしも１２ビットである必要はない。
【０３２８】
また、同様に、実施の形態２では、仮想計算機システム１９００において、省電力プロセッサの数が３であり、各省電力プロセッサに供給する電源電圧が３種類であり、高性能プロセッサの数が３であり、各高性能プロセッサに供給する電源電圧が３種類である場合に、スイッチ設定レジスタ２０１０のビット数を１２ビットとする例について説明したが、仮想計算機システム１９００とプロセッサの数や電源電圧の種類が互いに異なる仮想計算機システムであれば、当然、その仮想計算機システムにおけるプロセッサの数や電源電圧の種類を反映して、スイッチ設定レジスタのビット数は決定される。
（１５）実施の形態１において、セレクタ設定レジスタ３１０のビット数が８ビットである場合の例について説明したが、各プロセッサに供給するクロック信号の周波数を設定することができるビット数であれば、必ずしも８ビットである必要はない。
【０３２９】
また、実施の形態１では、仮想計算機システム１００において、プロセッサの数が４であり、各プロセッサに供給するクロック信号が３種類である場合に、セレクタ設定レジスタ３１０のビット数を８ビットとする例について説明したが、仮想計算機システム１００とプロセッサの数やクロック信号の種類が互いに異なる仮想計算機システムであれば、当然、その仮想計算機システムにおけるプロセッサの数やクロック信号の種類を反映して、セレクタ設定レジスタのビット数が決定される。
【０３３０】
同様に、実施の形態２において、セレクタ設定レジスタ２１１０のビット数が１２ビットである場合の例について説明したが、各プロセッサに供給するクロック信号の周波数を設定することができるビット数であれば、必ずしも１２ビットである必要はない。
【０３３１】
また、同様に、実施の形態２では、仮想計算機システム１９００において、省電力プロセッサの数が３であり、各省電力プロセッサに供給するクロック信号が３種類であり、高性能プロセッサの数が３であり、各高性能プロセッサに供給するクロック信号が３種類である場合に、セレクタ設定レジスタ２１１０のビット数を１２ビットとする例について説明したが、仮想計算機システム１９００とプロセッサの数やクロック信号の種類が互いに異なる仮想計算機システムであれば、当然、その仮想計算機システムにおけるプロセッサの数やクロック信号の種類を反映して、セレクタ設定レジスタのビット数が決定される。
（１６）以下、さらに本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
【０３３２】
（ａ）本発明の一実施形態に係る仮想計算機システムは、複数のプロセッサを有し、複数の仮想計算機を動作させる仮想計算機システムであって、電力を供給されているプロセッサに仮想計算機を割り当てる割当手段と、前記割当手段が、電力を供給されていて仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、電力を供給されていないプロセッサが複数存在するとき、電力を供給されていないプロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていないプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する電力供給手段とを備えることを特徴とする。
【０３３３】
上述の構成を備える仮想計算機システムは、電力を供給されていて仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合に、次に新たなプロセッサに仮想計算機を割り当てるときに備えて、電力供給手段によって新たに電力を供給されるプロセッサを待機状態にしておくことができるようになる。
【０３３４】
また、仮想計算機を割り当てられていないプロセッサのうち、次に新たなプロセッサに仮想計算機を割り当てるときに備えて待機させておくプロセッサ以外のプロセッサには電力を供給されない。
【０３３５】
従って、仮想計算機システムのパフォーマンスの低下を防止しつつ、消費電力を抑えることができる。
【０３３６】
図３５は、上記変形例において、複数のプロセッサを有し、複数の仮想計算機を動作させる仮想計算機システム上で実現される、割当手段３５０１と電力供給手段３５０２とを模式的に示す模式図である。
【０３３７】
同図において、割当手段３５０１は、電力を供給されているプロセッサに仮想計算機を割り当てる機能を有する。この割当部３５０１は、一例として、実施の形態１（図４参照）における、ハイパーバイザ４４０の機能の一部として実現される。
【０３３８】
電力供給手段３５０２は、割当手段３５０１が、電力を供給されていて仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、電力を供給されていないプロセッサが複数存在するとき、電力を供給されていないプロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていないプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する機能を有する。この電力供給手段３５０２は、一例として、実施の形態１における、ハイパーバイザ４４０の機能の一部として実現される。
【０３３９】
（ｂ）また、前記仮想計算機システムは、プロセッサのうち、電力を供給されているプロセッサに限ってクロック信号を供給するクロック供給手段を備えるとしてもよい。
【０３４０】
このような構成にすることによって、動作しないプロセッサにクロック信号を供給しなくなるので、仮想計算機システムのパフォーマンスの低下を防止しつつ、消費電力を抑えることができるようになる。
【０３４１】
（ｃ）また、前記仮想計算機システムは、電力を供給されていて仮想計算機を割り当てられているプロセッサに供給するクロック信号の周波数の方が、電力を供給されていて仮想計算機を割り当てられていないプロセッサに供給するクロック信号の周波数よりも高くなるように、電力を供給されているプロセッサに供給するクロック信号を制御するクロック制御手段を備えるとしてもよい。
【０３４２】
このような構成にすることによって、待機中のプロセッサの消費電力の方が、仮想計算機を割り当てられているプロセッサの消費電力よりも低くすることができるため、仮想計算機システムのパフォーマンスの低下を防止しつつ、消費電力を抑えることができるようになる。
【０３４３】
（ｄ）また、前記仮想計算機システムは、電力を供給されていて仮想計算機を割り当てられているプロセッサの電源電圧の方が、電力を供給されていて仮想計算機を割り当てられていないプロセッサの電源電圧よりも高くなるように、電力を供給されているプロセッサの電源電圧を制御する電圧制御手段を備えるとしてもよい。
【０３４４】
このような構成にすることによって、待機中のプロセッサの消費電力の方が、仮想計算機を割り当てられているプロセッサの消費電力よりも低くすることができるため、仮想計算機システムのパフォーマンスの低下を防止しつつ、消費電力を抑えることができるようになる。
【０３４５】
（ｅ）また、前記仮想計算機システムは、前記電力供給手段は、さらに、電力を供給されていて仮想計算機を割り当てられていたプロセッサが仮想計算機を割り当てられていない状態となった場合に、電力を供給されていて仮想計算機を割り当てられていないプロセッサのうちの、少なくとも１つのプロセッサの電力供給を停止するとしてもよい。
【０３４６】
このような構成にすることによって、待機中のプロセッサの数を少なくすることができるため、消費電力を抑えることができるようになる。
【０３４７】
（ｆ）また、前記仮想計算機システムは、前記割当手段は、前記仮想計算機の割り当てを、第１仮想計算機を割り当てられている第１プロセッサに当該第１仮想計算機以外の仮想計算機が割り当てられている場合において当該第１仮想計算機の処理対象とする処理が所定条件を満たすようになるとき、電力を供給されていて仮想計算機を割り当てられていない第２プロセッサが存在すれば、前記仮想計算機を、前記第１プロセッサから前記第２プロセッサに変更して割り当てるように行うとしてもよい。
【０３４８】
このような構成にすることによって、複数の仮想計算機が割り当てられているプロセッサで動作している仮想計算機の中に、負荷が大きくなる仮想計算機があると、その仮想計算機を他のプロセッサに割り当てて、そのプロセッサをその仮想計算機に専有させて動作させることができるようになる。
【０３４９】
（ｇ）また、前記仮想計算機システムは、前記割当手段は、前記仮想計算機の割り当てを、第１仮想計算機を割り当てられている第１プロセッサに当該第１仮想計算機以外の仮想計算機が割り当てられていない場合において当該第１仮想計算機の処理対象とする処理が第１の所定条件を満たすようになるとき、処理対象とする処理が第２の所定条件を満たす仮想計算機を割り当てられている第２のプロセッサが存在すれば、前記第１仮想計算機を、前記第１プロセッサから前記第２プロセッサに変更して割り当てるように行うとしてもよい。
【０３５０】
このような構成にすることによって、プロセッサを専有して動作している仮想計算機の負荷が小さくなると、その仮想計算機を他の仮想計算機とプロセッサを共有して動作させることができるようになる。
【０３５１】
（ｈ）また、前記仮想計算機システムは、前記仮想計算機システムは、複数の第１種プロセッサと、第１種プロセッサよりも処理能力と消費電力とが低い複数の第２種プロセッサとを有し、前記割当手段は、前記仮想計算機の割り当てを、プロセッサに割り当てられている仮想計算機のそれぞれについて、当該仮想計算機の処理対象とする処理が所定条件を満たすようになる場合に、割り当てるプロセッサのプロセッサ種を変更するように行い、前記電力供給手段は、前記電力の供給を、前記割当手段が、電力を供給されていて仮想計算機を割り当てられていない第１種プロセッサに仮想計算機を割り当てる場合において電力を供給されていない第１種プロセッサが複数存在するとき、電力を供給されていない第１種プロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていない第１種プロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持するように行い、前記割当手段が、電力を供給されていて仮想計算機を割り当てられていない第２種プロセッサに仮想計算機を割り当てる場合において電力を供給されていない第２種プロセッサが複数存在するとき、電力を供給されていない第２種プロセッサのうちの一部のプロセッサに電力を供給し、電力を供給されていない第２種プロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持するように行うとしてもよい。
【０３５２】
このような構成にすることによって、プロセッサの種類が１つの仮想計算機システムに比べて、よりきめ細かく、仮想計算機システムのパフォーマンスと消費電力とのトレードオフの調整をすることができるようになる。
【０３５３】
（ｉ）また、前記仮想計算機システムは、前記電力供給手段は、さらに、電力を供給されていて仮想計算機を割り当てられていた第１種プロセッサが仮想計算機を割り当てられていない状態となった場合に、電力を供給されていて仮想計算機を割り当てられていない第１種プロセッサのうちの、少なくとも１つの第１種プロセッサの電力供給を停止し、電力を供給されていて仮想計算機を割り当てられていた第２種プロセッサが仮想計算機を割り当てられていない状態となった場合に、電力を供給されていて仮想計算機を割り当てられていない第２種プロセッサのうちの、少なくとも１つの第２種プロセッサの電力供給を停止するとしてもよい。
【０３５４】
このような構成にすることによって、待機中の第１種プロセッサの数と待機中の第２種プロセッサの数とを少なくすることができるため、消費電力を抑えることができるようになる。
【産業上の利用可能性】
【０３５５】
本発明は、複数のプロセッサを有し、複数の仮想計算機を動作させるシステムに広く利用することができる。
【符号の説明】
【０３５６】
１００  仮想計算機システム
１０１  プロセッサＡ
１０２  プロセッサＢ
１０３  プロセッサＣ
１０４  プロセッサＤ
１１０  システムＬＳＩ
１１１  電源制御ブロック
１１２  クロック制御ブロック
１１３  ＲＯＭ
１１４  ＲＡＭ
１１５  ハードディスク装置インターフェース
１１６  出力装置インターフェース
１１７  入力装置インターフェース
１２０  内部バス
１３０  ハードディスク装置
１３１  出力装置
１３２  入力装置
【図１】
2012004948.tif 000003
【図２】
2012004948.tif 000004
【図３】
2012004948.tif 000005
【図４】
2012004948.tif 000006
【図５】
2012004948.tif 000007
【図６】
2012004948.tif 000008
【図７】
2012004948.tif 000009
【図８】
2012004948.tif 000010
【図９】
2012004948.tif 000011
【図１０】
2012004948.tif 000012
【図１１】
2012004948.tif 000013
【図１２】
2012004948.tif 000014
【図１３】
2012004948.tif 000015
【図１４】
2012004948.tif 000016
【図１５】
2012004948.tif 000017
【図１６】
2012004948.tif 000018
【図１７】
2012004948.tif 000019
【図１８】
2012004948.tif 000020
【図１９】
2012004948.tif 000021
【図２０】
2012004948.tif 000022
【図２１】
2012004948.tif 000023
【図２２】
2012004948.tif 000024
【図２３】
2012004948.tif 000025
【図２４】
2012004948.tif 000026
【図２５】
2012004948.tif 000027
【図２６】
2012004948.tif 000028
【図２７】
2012004948.tif 000029
【図２８】
2012004948.tif 000030
【図２９】
2012004948.tif 000031
【図３０】
2012004948.tif 000032
【図３１】
2012004948.tif 000033
【図３２】
2012004948.tif 000034
【図３３】
2012004948.tif 000035
【図３４】
2012004948.tif 000036
【図３５】
2012004948.tif 000037
【手続補正書】
【提出日】平成23年12月5日(2011.12.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
電力が供給されて動作する第１の状態と、前記第１の状態より少ない電力が供給されて動作する第２の状態と、電力が供給されずに停止する第３の状態とのうちのいずれかの状態となる複数のプロセッサを有し、複数の仮想計算機を動作させる仮想計算機システムであって、
電力を供給されているプロセッサに仮想計算機を割り当てる割当手段と、
前記割当手段が、前記第２の状態にあり、かつ、仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、前記第３の状態にあるプロセッサが複数存在するとき、前記第３の状態にあるプロセッサのうちの一部のプロセッサに電力を供給して前記第２の状態とし、前記第３の状態にあるプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する電力供給手段とを備える
ことを特徴とする仮想計算機システム。
【請求項２】
プロセッサのうち、電力を供給されているプロセッサに限ってクロック信号を供給するクロック供給手段を備える
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記第１の状態にあり、かつ、仮想計算機を割り当てられているプロセッサに供給するクロック信号の周波数の方が、前記第２の状態にあり、かつ、仮想計算機を割り当てられていないプロセッサに供給するクロック信号の周波数よりも高くなるように、電力を供給されているプロセッサに供給するクロック信号を制御するクロック制御手段を備える
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
前記第１の状態にあり、かつ、仮想計算機を割り当てられているプロセッサの電源電圧の方が、前記第２の状態にあり、かつ、仮想計算機を割り当てられていないプロセッサの電源電圧よりも高くなるように、電力を供給されているプロセッサの電源電圧を制御する電圧制御手段を備える
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項５】
前記電力供給手段は、さらに、前記第１の状態にあり、かつ、仮想計算機を割り当てられていたプロセッサが仮想計算機を割り当てられていない状態となった場合に、前記第２の状態にあり、かつ、仮想計算機を割り当てられていないプロセッサのうちの、少なくとも１つのプロセッサの電力供給を停止する
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項６】
前記割当手段は、前記仮想計算機の割り当てを、第１仮想計算機を割り当てられている第１プロセッサに当該第１仮想計算機以外の仮想計算機が割り当てられている場合において当該第１仮想計算機の処理対象とする処理が所定条件を満たすようになるとき、前記第２の状態にあり、かつ、仮想計算機を割り当てられていない第２プロセッサが存在すれば、前記仮想計算機を、前記第１プロセッサから前記第２プロセッサに変更して割り当てるように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項７】
前記割当手段は、前記仮想計算機の割り当てを、第１仮想計算機を割り当てられている第１プロセッサに当該第１仮想計算機以外の仮想計算機が割り当てられていない場合において当該第１仮想計算機の処理対象とする処理が第１の所定条件を満たすようになるとき、処理対象とする処理が第２の所定条件を満たす仮想計算機を割り当てられている第２のプロセッサが存在すれば、前記第１仮想計算機を、前記第１プロセッサから前記第２プロセッサに変更して割り当てるように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項８】
前記仮想計算機システムは、複数の第１種プロセッサと、第１種プロセッサよりも処理能力と消費電力とが低い複数の第２種プロセッサとを有し、
前記割当手段は、前記仮想計算機の割り当てを、プロセッサに割り当てられている仮想計算機のそれぞれについて、当該仮想計算機の処理対象とする処理が所定条件を満たすようになる場合に、割り当てるプロセッサのプロセッサ種を変更するように行い、
前記電力供給手段は、前記電力の供給を、前記割当手段が、前記第２の状態にあり、かつ、仮想計算機を割り当てられていない第１種プロセッサに仮想計算機を割り当てる場合において前記第３の状態にある第１種プロセッサが複数存在するとき、前記第３の状態にある第１種プロセッサのうちの一部のプロセッサに電力を供給して前記第２の状態とし、前記第３の状態にある第１種プロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持するように行い、前記割当手段が、前記第２の状態にあり、かつ、仮想計算機を割り当てられていない第２種プロセッサに仮想計算機を割り当てる場合において前記第３の状態にある第２種プロセッサが複数存在するとき、前記第３の状態にある第２種プロセッサのうちの一部のプロセッサに電力を供給して前記第２の状態とし、前記第３の状態にある第２種プロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持するように行う
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項９】
前記電力供給手段は、さらに、前記第１の状態にあり、かつ、仮想計算機を割り当てられていた第１種プロセッサが仮想計算機を割り当てられていない状態となった場合に、前記第２の状態にあり、かつ、仮想計算機を割り当てられていない第１種プロセッサのうちの、少なくとも１つの第１種プロセッサの電力供給を停止し、前記第一の状態にあり、かつ、仮想計算機を割り当てられていた第２種プロセッサが仮想計算機を割り当てられていない状態となった場合に、前記第２の状態にあり、かつ、仮想計算機を割り当てられていない第２種プロセッサのうちの、少なくとも１つの第２種プロセッサの電力供給を停止する
ことを特徴とする請求項８記載の仮想計算機システム。
【請求項１０】
電力が供給されて動作する第１の状態と、前記第１の状態より少ない電力が供給されて動作する第２の状態と、電力が供給されず動作しない第３の状態とのうちのいずれかの状態となる複数のプロセッサを有し、複数の仮想計算機を動作させる集積回路であって、
電力を供給されているプロセッサに仮想計算機を割り当てる割当手段と、
前記割当手段が、前記第２の状態にあり、かつ、仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、前記第３の状態にあるプロセッサが複数存在するとき、前記第３の状態にあるプロセッサのうちの一部のプロセッサに電力を供給して前記第２の状態とし、前記第３の状態にあるプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する電力供給手段とを備える
ことを特徴とする集積回路。
【請求項１１】
電力が供給されて動作する第１の状態と、前記第１の状態より少ない電力が供給されて動作する第２の状態と、電力が供給されず動作しない第３の状態とのうちのいずれかの状態となる複数のプロセッサを有し、複数の仮想計算機を動作させる仮想計算機システムを制御する制御方法であって、
電力を供給されているプロセッサに仮想計算機を割り当てる割当ステップと、
前記割当ステップが、前記第２の状態にあり、かつ、仮想計算機を割り当てられていないプロセッサに仮想計算機を割り当てる場合において、前記第３の状態にあるプロセッサが複数存在するとき、前記第３の状態にあるプロセッサのうちの一部のプロセッサに電力を供給して前記第２の状態とし、前記第３の状態にあるプロセッサのうちの前記一部のプロセッサ以外のプロセッサに電力を供給しない状態を維持する電力供給ステップとを備える
ことを特徴とする制御方法。
【請求項１２】
前記割当手段は、前記仮想計算機が前記第２プロセッサを専有して動作させるよう割り当てる
ことを特徴とする請求項６記載の仮想計算機システム。
【国際調査報告】
2012004948.tif 000038
2012004948.tif 000039
2012004948.tif 000040
2012004948.tif 000041