(57)【要約】【課題】プログラムのマイグレーション前後で、プログラムを効率的に実行する。【解決手段】命令セットAを実装するCPU１１Aに接続されているメモリ１２Aに存在する仮想マシン１３を、命令セットBを実装するCPU１１Bに接続されているメモリ１２Bにマイグレーションする。この場合、命令セットAと命令セットBとに共通な命令は、CPU１１Bの能力で実行される。命令セットAには存在するが、命令セットBには存在しない命令は、命令エミュレータ１５によって、エミュレーションされることにより、実行される。本発明は、例えば、複数のCPUを搭載するコンピュータに適用できる。【選択図】図１
2010272055.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令セットが実装された第１の制御手段と、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と、
前記第１の命令セットの命令のうち、前記第２の命令セットとは異なる命令をエミュレーションするエミュレーション手段と
を備え、
前記第１の制御手段は、前記第１の命令セットの命令で構成されるプログラムの実行を制御し、
前記第１の制御手段と前記第２の制御手段は、前記プログラムについての、前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、
前記第２の制御手段は、前記プログラムの実行の制御として、前記第２の命令セットの命令のうち、前記第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令については前記エミュレーション手段に担当させる制御を行う
情報処理装置。
【請求項２】
第１の命令セットが実装された第１の制御手段と、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と、
前記第１の命令セットの命令のうち、前記第２の命令セットとは異なる命令をエミュレーションするエミュレーション手段と
を備える情報処理装置のうち、
前記第１の制御手段は、前記第１の命令セットの命令で構成されるプログラムの実行を制御し、
前記第１の制御手段と前記第２の制御手段は、前記プログラムについての、前記第１の制御手段から前記第２の制御手段へのマイグレーションを実行し、
前記第２の制御手段は、前記プログラムの実行の制御として、前記第２の命令セットの命令のうち、前記第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令については前記エミュレーション手段に担当させる制御を行う
ステップを含む情報処理方法。
【請求項３】
第１の命令セットが実装された第１のコンピュータと、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２のコンピュータと
のうち少なくとも一方に実行させるプログラムとして、
前記第１の命令セットの命令のうち、前記第２の命令セットとは異なる命令をエミュレーションするエミュレーションプログラムと、
前記第１のコンピュータに、前記第１の命令セットの命令で構成されるプログラムの実行を制御させ、
前記第１のコンピュータと前記第２のコンピュータに、前記プログラムについての、前記第１のコンピュータから前記第２のコンピュータへのマイグレーションの実行を制御させ、
前記第２のコンピュータに、前記プログラムの実行の制御として、前記第２の命令セットの命令のうち、前記第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令については前記エミュレーションプログラムに担当させる制御を行わせる
ステップを含む制御プログラムと
を含むプログラム。
【請求項４】
第１の命令セットが実装された第１の制御手段と、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と、
前記第１の命令セットの命令のうち、前記第２の命令セットとは異なる命令をエミュレーションするエミュレーション手段と
を備え、
前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンを制御し、
前記第１の制御手段と前記第２の制御手段は、前記仮想マシンについての、前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、
前記第２の制御手段は、前記第２の命令セットの命令のうち、前記第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令については前記エミュレーション手段に担当させることで、前記仮想マシンによる前記１以上のプログラムの実行を制御する
情報処理装置。
【請求項５】
第１の命令セットが実装された第１の制御手段と、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と、
前記第１の命令セットの命令のうち、前記第２の命令セットとは異なる命令をエミュレーションするエミュレーション手段と
を備える情報処理装置のうち、
前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンを制御し、
前記第１の制御手段と前記第２の制御手段は、前記仮想マシンについての、前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、
前記第２の制御手段は、前記第２の命令セットの命令のうち、前記第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令については前記エミュレーション手段に担当させることで、前記仮想マシンによる前記１以上のプログラムの実行を制御する
ステップを含む情報処理方法。
【請求項６】
第１の命令セットが実装された第１のコンピュータと、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２のコンピュータと
のうち少なくとも一方に実行させるプログラムとして、
前記第１の命令セットの命令のうち、前記第２の命令セットとは異なる命令をエミュレーションするエミュレーションプログラムと、
前記第１のコンピュータに、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンを制御させ、
前記第１のコンピュータと前記第２のコンピュータ、前記仮想マシンについての、前記第１のコンピュータから前記第２のコンピュータへのマイグレーションの実行を制御し、
前記第２のコンピュータに、前記第２の命令セットの命令のうち、前記第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令については前記エミュレーションプログラムに担当させることで、前記仮想マシンによる前記１以上のプログラムの実行を制御させる
ステップを含む制御プログラムと
を含むプログラム。
【請求項７】
第１の命令セットが実装された第１の制御手段と、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と
を備え、
前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムの実行を制御し、
前記第１の制御手段と前記第２の制御手段は、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、その実行の制御を終了し、前記第２の命令セットと同一の命令のみを含むプログラムについては、前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、
前記第２の制御手段は、前記マイグレーションの実行の制御の後、実行の制御を終了させた前記プログラムについて、その実行の制御を再開させる
情報処理装置。
【請求項８】
第１の命令セットが実装された第１の制御手段と、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と
を備える情報処理装置のうち、
前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムの実行を制御し、
前記第１の制御手段と前記第２の制御手段は、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、その実行の制御を終了し、前記第２の命令セットと同一の命令のみを含むプログラムについては、前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、
前記第２の制御手段は、前記マイグレーションの実行の制御の後、実行の制御を終了させた前記プログラムについて、その実行の制御を再開させる
ステップを含む情報処理方法。
【請求項９】
第１の命令セットが実装された第１のコンピュータに、前記第１の命令セットの命令で構成される１以上のプログラムの実行を制御させ、
前記第１のコンピュータと、前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２のコンピュータに、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、その実行の制御を終了させ、前記第２の命令セットと同一の命令のみを含むプログラムについては、前記第１のコンピュータから前記第２のコンピュータへのマイグレーションの実行を制御させ、
前記第２のコンピュータに、前記マイグレーションの実行の制御の後、実行の制御を終了させた前記プログラムについて、その実行の制御を再開させる
プログラム。
【請求項１０】
第１の命令セットが実装された第１の制御手段と、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と
を備え、
前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンを制御し、
前記第１の制御手段と前記第２の制御手段は、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、前記仮想マシンによる実行の制御を終了させ、前記仮想マシンについての前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、
前記第２の制御手段は、前記マイグレーションの実行の制御の後、前記仮想マシンによる実行の制御を終了させた前記プログラムについて、その実行の制御を開始する
情報処理装置。
【請求項１１】
第１の命令セットが実装された第１の制御手段と、
前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と
を備える情報処理装置のうち、
前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンを制御し、
前記第１の制御手段と前記第２の制御手段は、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、前記仮想マシンによる実行の制御を終了させ、前記仮想マシンについての前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、
前記第２の制御手段は、前記マイグレーションの実行の制御の後、前記仮想マシンによる実行の制御を終了させた前記プログラムについて、その実行の制御を開始する
ステップを含む情報処理方法。
【請求項１２】
第１の命令セットが実装された第１のコンピュータに、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンを制御させ、
前記第１のコンピュータと、前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２のコンピュータに、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、前記仮想マシンによる実行の制御を終了させ、前記仮想マシンについての前記第１のコンピュータから前記第２のコンピュータへのマイグレーションの実行を制御させ、
前記第２のコンピュータに、前記マイグレーションの実行の制御の後、前記仮想マシンによる実行の制御を終了させた前記プログラムについて、その実行の制御を開始させる
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、プログラムのマイグレーション前後で、プログラムを効率的に実行することを可能にする情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、プログラムのマイグレーション（プログラムの移行、変換処理）が実行されるようになっている。
【０００３】
このようなマイグレーションを実行する従来の手法として、例えば、QEMU（Fabrice Bellardの登録商標）等のエミュレーション手法がある。
【０００４】
また例えば、別の従来の手法が、非特許文献１，２に開示されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ben Serebrin, “Cross-vendor migration: What do you mean my ISA isn't compatible?”, Xen Summit, February 2009
【非特許文献２】FlexMigration ［平成２１年４月２３日検索］、インターネット、＜URL:http://communities.intel.com/openport/docs/DOC-2538＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来の手法を単に適用しただけでは、次のような要望に充分に応えることができない。
【０００７】
即ち、近年、異なる性質のCPU（Central Processing Unit）間や、例えば、高性能CPUと低消費電力CPUの間で、実行中のプログラムのマイグレーション（プログラムの移行、変換処理）を実行したいという要求が高まっている。しかしながら、かかる要求に充分に応えることができない状況である。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、プログラムのマイグレーション前後で、プログラムを効率的に実行することを可能にするものである。
【課題を解決するための手段】
【０００９】
本発明の第１の側面の情報処理装置は、第１の命令セットが実装された第１の制御手段と、前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と、前記第１の命令セットの命令のうち、前記第２の命令セットとは異なる命令をエミュレーションするエミュレーション手段とを備え、前記第１の制御手段は、前記第１の命令セットの命令で構成されるプログラムの実行を制御し、前記第１の制御手段と前記第２の制御手段は、前記プログラムについての、前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、前記第２の制御手段は、前記プログラムの実行の制御として、前記第２の命令セットの命令のうち、前記第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令については前記エミュレーション手段に担当させる制御を行う。
【００１０】
本発明の第１の側面の情報処理方法とプログラムのそれぞれは、上述した本発明の第１の側面の情報処理装置に対応する情報処理方法とプログラムのそれぞれである。
【００１１】
本発明の第１の側面の情報処理装置および方法、並びにプログラムにおいては、第１の命令セットの命令で構成されるプログラムの実行が制御され、プログラムについての、マイグレーションが実行され、プログラムの実行の制御として、第２の命令セットの命令のうち、第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令についてはエミュレーションさせる制御が行われる。
【００１２】
本発明の第２の側面の情報処理装置は、第１の命令セットが実装された第１の制御手段と、前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段と、前記第１の命令セットの命令のうち、前記第２の命令セットとは異なる命令をエミュレーションするエミュレーション手段とを備え、前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンを制御し、前記第１の制御手段と前記第２の制御手段は、前記仮想マシンについての、前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、前記第２の制御手段は、前記第２の命令セットの命令のうち、前記第１の命令セットと同一の命令については自身で担当し、前記第１の命令セットとは異なる命令については前記エミュレーション手段に担当させることで、前記仮想マシンによる前記１以上のプログラムの実行を制御する。
【００１３】
本発明の第２の側面の情報処理方法とプログラムのそれぞれは、上述した本発明の第２の側面の情報処理装置に対応する情報処理方法とプログラムのそれぞれである。
【００１４】
本発明の第２の側面の情報処理装置および方法、並びにプログラムにおいては、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンが制御され、仮想マシンについての、マイグレーションの実行が制御され、第２の命令セットの命令のうち、第１の命令セットと同一の命令については自身で担当し、第１の命令セットとは異なる命令についてはエミュレーションされることで、仮想マシンによる前記１以上のプログラムの実行が制御される。
【００１５】
本発明の第３の側面の情報処理装置は、第１の命令セットが実装された第１の制御手段と、前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段とを備え、前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムの実行を制御し、前記第１の制御手段と前記第２の制御手段は、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、その実行の制御を終了し、前記第２の命令セットと同一の命令のみを含むプログラムについては、前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、前記第２の制御手段は、前記マイグレーションの実行の制御の後、実行の制御を終了させた前記プログラムについて、その実行の制御を再開させる。
【００１６】
本発明の第３の側面の情報処理方法とプログラムのそれぞれは、上述した本発明の第３の側面の情報処理装置に対応する情報処理方法とプログラムのそれぞれである。
【００１７】
本発明の第３の側面の情報処理装置および方法、並びにプログラムにおいては、前記第１の命令セットの命令で構成される１以上のプログラムの実行が制御され、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、その実行の制御が終了され、前記第２の命令セットと同一の命令のみを含むプログラムについては、マイグレーションの実行が制御され、前記マイグレーションの実行の制御の後、実行の制御が終了された前記プログラムについて、その実行の制御が再開される。
【００１８】
本発明の第４の側面の情報処理装置は、第１の命令セットが実装された第１の制御手段と、前記第１の命令セットに対して少なくとも一部の命令が異なる第２の命令セットが実装された第２の制御手段とを備え、前記第１の制御手段は、前記第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンを制御し、前記第１の制御手段と前記第２の制御手段は、前記１以上のプログラムのうち、少なくとも前記第２の命令セットとは異なる命令を含むプログラムについては、前記仮想マシンによる実行の制御を終了させ、前記仮想マシンについての前記第１の制御手段から前記第２の制御手段へのマイグレーションの実行を制御し、前記第２の制御手段は、前記マイグレーションの実行の制御の後、前記仮想マシンによる実行の制御を終了させた前記プログラムについて、その実行の制御を開始する。
【００１９】
本発明の第４の側面の情報処理方法とプログラムのそれぞれは、上述した本発明の第４の側面の情報処理装置に対応する情報処理方法とプログラムのそれぞれである。
【００２０】
本発明の第４の側面の情報処理装置および方法、並びにプログラムにおいては、第１の命令セットの命令で構成される１以上のプログラムを実行する仮想マシンが制御され、１以上のプログラムのうち、少なくとも第２の命令セットとは異なる命令を含むプログラムについては、仮想マシンによる実行の制御が終了され、仮想マシンについてのマイグレーションの実行が制御され、マイグレーションの実行の制御の後、仮想マシンによる実行の制御が了されたプログラムについて、その実行の制御が開始される。
【発明の効果】
【００２１】
本発明の一側面によれば、プログラムのマイグレーション前後で、プログラムを効率的に実行することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明が適用された情報処理装置の第１実施形態の構成例を示すブロック図である。
【図２】図１の例において仮想マシン１３のマイグレーションが実行された場合の構成例を示すブロック図である。
【図３】第１実施形態のマイグレーション処理の一例を説明するフローチャートである。
【図４】第１実施形態のマイグレーション先の命令実行処理の一例を説明するフローチャートである。
【図５】本発明が適用された情報処理装置の第２実施形態の構成例を示すブロック図である。
【図６】本発明が適用された情報処理装置の第３実施形態の構成例を示すブロック図である。
【図７】プログラムの構成の一例を示す図である。
【図８】プログラムの構成の一例であって、図７とは異なる例を示す図である。
【図９】第３実施形態の仮想マシン１３の構成例を示すブロック図である。
【図１０】第３実施形態のマイグレーションマネージャ４１とデータベース４４の構成例を示すブロック図である。
【図１１】第３実施形態のマイグレーション処理の一例を説明するフローチャートである。
【図１２】マイグレーション先のCPU情報チェック処理の一例を説明するフローチャートである。
【図１３】マイグレーションの前処理の一例を説明するフローチャートである。
【図１４】マイグレーションの実行処理の一例を説明するフローチャートである。
【図１５】発明が適用される情報処理装置に含まれるまたはその駆動を制御するコンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００２３】
初めに、本発明の理解を容易なものとすべく、従来の技術の概要について説明する。次に、図面を参照して、本発明が適用される情報処理装置の実施の形態として、３つの実施の形態（以下、それぞれ第１乃至第３実施形態と称する）について説明する。よって、説明は以下の順序で行う。
１、従来の技術
２、第１実施形態（すべてのプログラムの命令に対し、マイグレーションを実行する例）
３、第２実施形態（すべてのプログラムの命令に対し、マイグレーションを実行する例）
４、第３実施形態（マイグレーション先にない命令が存在しているプログラム以外のプログラムに対し、マイグレーションを実行する例）
＜１、従来の技術＞
【００２４】
［背景技術］の欄で上述したように、プログラムのマイグレーションを実行する従来の手法の１つとして、エミュレーション手法が存在する。
エミュレーション手法は、ある命令セットAを実装するCPU(以下、CPU-Aと称する)で実行されるプログラムを、命令セットAとは異なる命令セットBを実装するCPU(以下、CPU−Bと称する)で実行させるための手法である。具体的には、命令セットAの命令を、命令セットBの命令に変換する手法である。これにより、CPU-Bは、変換後の命令セットBの命令でプログラムを実行することが可能となる。
【００２５】
エミュレーション手法は、命令セットAの命令を、まったく異なる命令セットBを実装するCPU-Bで実行可能であるという利点を持つ。
【００２６】
しかしながら、エミュレーション手法では、命令セットAの命令を命令セットBの命令に変換するまでの処理時間が非常に長い。その処理時間は、一般的に、変換後の命令セットBの命令を実行する時間を上回るほどである。このため、エミュレーション手法を用いてマイグレーションを行う場合、CPU-Bにおけるプログラムの実行が著しく遅くなる場合がある。
【００２７】
例えば、命令セットAと、命令セットBが、主要な命令は同じで、一部の命令だけが異なる命令セットであるとする。このような場合においても、エミュレーション手法は、命令セットAのすべての命令を、命令セットBの命令に変換する。
【００２８】
このため、命令セットAの命令と、命令セットBの命令とが、主要な命令は同じで、一部の命令だけが異なる命令セットである場合にエミュレーション手法を適用することは、効率が悪い。
【００２９】
また、仮想化技術を用いて仮想マシンを実現し、仮想マシンのマイグレーションを実行したいという要望がある。
【００３０】
仮想化技術とは、ソフトウエアで仮想的なハードウエアを生成し、その仮想的なハードウエア上でアプリケーション等のソフトウエアを動作させる技術をいう。
【００３１】
また、仮想マシンとは、OS（Operating System）やアプリケーションソフトウエアを物理的なコンピュータと同じように実行可能とさせるための、ソフトウエアやデータの集合をいう。仮想マシンには、CPU、メモリ、HDD(Hard Disc Drive)やネットワークコントローラ等と等価な機能を有する各種仮想デバイス等も含まれる。
【００３２】
仮想マシンは、物理的なハードウエア上に作成され、例えばVMware（VMware,Inc.の登録商標）やXen（XenSource,Inc.の登録商標）等の仮想マシンモニタにより制御される。
【００３３】
仮想マシンのマイグレーションとは、ある仮想マシンモニタから別の仮想マシンモニタに仮想マシンを移動することをいう。
【００３４】
しかしながら、仮想マシンは、物理的なCPUと同一セットの命令セットを実装している。従って、例えば命令セットAを実装するCPU−Aにより動作されていた仮想マシンを、単純に命令セットBを実装するCPU−Bに対してマイグレーションを実行することはできない。
【００３５】
また、プログラムをマイグレーションする別の手法として、非特許文献１では、異なるベンダーで開発されたCPU間においてマイグレーションを実行する手法が開示されている。即ち、非特許文献１の手法を適用することで、主要命令セットが同じで、一部の命令が異なるCPU間において、プログラムのマイグレーションを実行すること自体は可能になる。しかしながら、非特許文献１の手法では、高性能のCPUと低性能のCPUを有するシステムを構成した場合、高性能のCPUのみにある拡張命令を使用しないため、高性能のCPUで得られるはずの本来の性能を得ることができない場合があった。
【００３６】
さらにまた、プログラムのマイグレーションを実行する別の手法として、非特許文献２には、INTEL社のFlexMigrationというハードウエアが開示されている。FlexMigrationは、新しい世代のCPUを、古い世代のCPUに見せかけることによって、異なる世代のCPU間におけるマイグレーションを実行するハードウエアである。しかしながら、FlexMigrationは、新しい世代のCPUに高性能化を実現する拡張命令が追加されていた場合でも、その拡張命令を使うことができない。その結果、新しい世代のCPUで本来得られるはずの性能を得ることができない。
【００３７】
さらにまた、プログラムをマイグレーションする別の手法として、AMD社により、AMD-V（AMD Virtualization）というハードウエアが提案されている。AMD-Vも、上述したFlexMigrationと同様に、新しい世代のCPUを古い世代のCPUに見せかけることで、異なる世代のCPU間のマイグレーションを実現するものである。
【００３８】
従って、AMD-Vも、上述したFlexMigrationと同様、新しい世代のCPUで得られるはずの本来の性能を得ることができない。
【００３９】
そこで、本発明人は、主要な命令が同じで、一部の命令のみが異なる命令セットを実装するCPU間（例えば、異なる世代、異なるベンダーのCPU間）におけるプログラムのマイグレーションを、より効率的に、より高性能を保ったまま実行する技術を発明した。以下、かかる技術が適用された情報処理装置、即ち、本発明が適用された情報処理装置として、３つの実施の形態について説明していく。
【００４０】
＜２、第１実施形態＞
[第１実施形態の情報処理装置の構成例]
図１は、本発明が適用された情報処理装置の構成例を示すブロック図である。
【００４１】
なお、本明細書において、システムとは、複数の装置や処理部により構成される装置全体を表すものである。即ち、図１の例の情報処理装置は、別々の筐体に収納された複数の装置として構成することも可能であるが、本実施の形態では、１つの筐体に収納された１台の装置として構成されているとする。
【００４２】
図１の例の情報処理装置には、CPU１１Aと、CPU１１Aに接続されたメモリ１２Aが存在する。メモリ１２Aには、さらに、仮想マシン１３、および仮想マシンモニタ１４Aが存在する。
【００４３】
また、図１の例の情報処理装置には、CPU１１Bと、CPU１１Bに接続されたメモリ１２Bが存在する。メモリ１２Bには、仮想マシンモニタ１４Bが存在する。さらに、仮想マシンモニタ１４Bには、命令エミュレータ１５が存在する。
【００４４】
CPU１１Aには、命令セットAが実装されているとする。また、CPU１１Bには、命令セットBが実装されているとする。
【００４５】
なお、命令セットAと命令セットBは、主要な命令が共通の命令セットである。以下、命令セットAと命令セットBにおいて共通な命令を、共通命令と称する。また、命令セットAの命令には、命令セットBにはない命令が含まれているとする。この命令を、以下、命令Xと称する。即ち、命令セットAの命令には、共通命令と命令Xとが含まれている。命令セットBの命令には、共通命令は含まれているが、命令Xは含まれていない。
【００４６】
仮想マシン１３は、例えば、命令セットAの命令からなるプログラムを含む。仮想マシン１３のプログラムは、仮想マシン１３が存在するメモリ１２Aに接続されているCPU１１Aの能力により、実行される。
【００４７】
仮想マシンモニタ１４A，１４Bは、例えば、ハードウエアに依存しない実行環境を仮想マシン１３に提供するためのプログラムとして構成されている。
【００４８】
命令エミュレータ１５は、命令セットAにはあって、命令セットBにはない命令Xを、命令セットBの命令に変換して実行する機能を有するプログラムである。その動作の詳細については、図２を参照して後述する。
【００４９】
図１の例においては、仮想マシン１３は、メモリ１２A上で、仮想マシンモニタ１４Aの制御により動作している。仮想マシン１３のプログラムは、命令セットAを実装するCPU１１Aの能力で実行される。
【００５０】
以上、図１を参照して第１実施形態の情報処理装置の構成例について説明した。次に、図２を参照して、仮想マシン１３のマイグレーションについて説明する。
【００５１】
図２において、メモリ１２Aからメモリ１２Bへ、仮想マシン１３のマイグレーションが実行されたとする。
【００５２】
マイグレーションにより、仮想マシン１３はメモリ１２Aからメモリ１２Bに移動するが、仮想マシン１３が実行するプログラムは、命令セットAの命令で構成されている。しかしながら、仮想マシン１３は、マイグレーションにより、命令セットBを実装するCPU１１Bに接続されたメモリ１２Bに移行されることになる。
【００５３】
即ち、仮想マシン１３のプログラムは、CPU１１Bの能力で実行されることとなる。しかしながら、上述したように、共通命令は、CPU１１Bの能力で実行することが可能であるが、共通命令以外の命令は、CPU１１Bの能力で実行することができない。
【００５４】
このため、マイグレーション後は、仮想マシン１３のプログラムは、命令に応じて、次のように実行される。
【００５５】
即ち、仮想マシン１３のプログラムの命令の主要な部分である共通命令は、CPU１１Bの能力により実行される。
【００５６】
CPU１１Bの能力で実行できない命令、即ち、共通命令以外の命令は、仮想マシン１３から、仮想マシンモニタ１４Bに移行され、仮想マシンモニタ１４Bの命令エミュレータ１５が、CPU１１Aの能力で実行した場合と等価に実行する。なお、CPU１１Bで実行できない命令としては、例えば、CPUの種類を調べるための命令（例えば、INTEL社のCPUID命令。以下、CPUID命令と称する）や、命令Xが挙げられる。
【００５７】
このような構成をもつことにより、第１実施形態の情報処理装置は、例えば以下の効果を奏することができる。
【００５８】
例えば、CPU１１Aが、高性能であるが、高消費電力のCPUで構成されたとする。また、CPU１１Bが、低性能であるが、低消費電力のCPUで構成されたとする。
【００５９】
この場合、高消費電力のCPU１１Aが接続されているメモリ１２Aから、仮想マシン１３を、プログラムの実行を停止させることなく、低消費電力のCPU１１Bが接続されているメモリ１２Bへ、マイグレーションを実行することができる。
【００６０】
従って、例えば高性能を必要とする命令はCPU１１Aの能力で実行し、高性能を必要としない命令は、CPU１１Bの能力で実行することができる。このように構成することにより、第１実施形態の情報処理装置は、高性能と、低消費電力とを両立させたシステムを実現することができる。
【００６１】
[情報処理装置の第１実施形態の処理例]
図３は、図２を参照して説明した、メモリ１２Aからメモリ１２Bへ、仮想マシン１３のマイグレーションが実行される処理（以下、マイグレーション処理と称する）のフローチャートである。
【００６２】
なお、以下、適宜、マイグレーション前に仮想マシン１３が存在したメモリ１２Aと接続されているCPU１１Aを、マイグレーション元のCPU１１Aと表現する。また、マイグレーションにより仮想マシン１３が移動した先のメモリ１２Bに接続されているCPU１１Bを、マイグレーション先のCPU１１Bと称する。
【００６３】
ステップＳ１において、仮想マシン１３が、マイグレーション元のCPU１１Aの能力で、プログラムを実行する。
【００６４】
ステップＳ２において、マイグレーション元のCPU１１Aは、マイグレーションの条件が成立したか否かを判定する。マイグレーションの条件としては、例えば、ユーザにより、マイグレーションするとの指示がなされた場合がある。また例えば、高性能のCPU１１Aが、高性能を必要とする命令を実行していて、次の命令が高性能を必要としない場合に、マイグレーションの条件が成立したと判定される。
【００６５】
マイグレーションの条件が成立しない場合、ステップＳ２においてＮＯであると判定されて、処理はステップＳ１に戻され、それ以降の処理が繰り返される。
【００６６】
即ち、マイグレーションの条件が成立するまで、ステップＳ１、Ｓ２のループ処理が繰り返されて、マイグレーション元のCPU１１Aでプログラムが実行される。
【００６７】
その後、マイグレーションの条件が成立した場合、ステップＳ２においてＹＥＳであると判定されて、処理はステップＳ３に進む。
【００６８】
ステップＳ３において、マイグレーション元のCPU１１Aは、マイグレーションを実行する。具体的には例えば、図２の例においては、メモリ１２Aからメモリ１２Bへ、仮想マシン１３のマイグレーションが実行される。
【００６９】
ステップＳ４において、仮想マシン１３が、マイグレーション先のCPU１１Bの能力で、プログラムを実行して、マイグレーション処理は終了される。なお、仮想マシン１３がマイグレーション先のCPU１１Bの能力でプログラムを実行する処理の一例については、図４を参照して後述する。
【００７０】
図４は、図３のマイグレーション処理のうち、ステップＳ４の仮想マシン１３がマイグレーション先のCPU１１Bの能力で、プログラムを実行する場合の処理の一例について説明するフローチャートである。なお、このような処理を、以下、マイグレーション先の命令実行処理と称する。
【００７１】
ステップＳ１１において、マイグレーション先のCPU１１Bは、実行する命令がCPUID命令、または命令Xであるか否かを判定する。
【００７２】
実行する命令がCPUID命令、または命令Xでない場合、即ち、共通命令である場合、ステップＳ１１においてＮＯであると判定されて、処理はステップＳ１３に進む。
【００７３】
ステップＳ１３において、仮想マシン１３が、マイグレーション先のCPU１１Bの能力で命令を実行し、処理は終了される。
【００７４】
これに対し、実行する命令がCPUID命令、または命令Xである場合、ステップＳ１１においてＹＥＳであると判定されて、処理はステップＳ１２に進む。
【００７５】
ステップＳ１２において、命令エミュレータ１５は、命令（CPUID命令、または命令X）を実行する。
【００７６】
このようにして、CPUID命令、または命令Xである場合は命令エミュレータ１５が命令を実行し、共通命令、即ち、命令の主要な部分は、仮想マシン１３がCPU１１Bの能力で命令を実行することができる。
【００７７】
これにより、第１実施形態では、命令のすべてをエミュレーションする必要はなく、マイグレーション先のCPU１１Bの能力で実行できない命令Xのみをエミュレーションする。よって、本発明が適用された情報処理装置は、エミュレーションに要する時間が短縮される。その結果、本発明が適用された情報処理装置は、仮想マシン１３のマイグレーションの前後で、効率的に仮想マシン１３を実行することが可能となる。
【００７８】
以上、図１乃至図４を参照して、本発明の第１実施形態について説明した。次に図５を参照して、本発明の第２実施形態について説明する。
【００７９】
＜３、第２実施形態＞
[第２実施形態の情報処理装置の構成例]
図５は、本発明が適用された情報処理装置の機能的構成例であって、図１の例とは異なる構成例を示している。
【００８０】
図５の例において、図１と対応する箇所には対応する符号が付してあり、それらの説明は適宜省略する。
【００８１】
なお、図５の例の情報処理装置は、別々の筐体に収納された複数の装置として構成することも可能であるが、本実施の形態では、１つの筐体に収納された１台の装置として構成されているとする。
【００８２】
図５の例の情報処理装置には、CPU１１A、CPU１１B、メモリ１２A、およびHDD１６が存在している。メモリ１２Aは、CPU１１A、およびCPU１１Bに共有されている。また、HDD１６には、命令エミュレータ１５を備えた仮想マシンモニタ１４Bが存在する。仮想マシンモニタ１４A，１４Bは、それぞれメモリ１２AとHDD１６を相互に移動可能である。
【００８３】
このような構成においては、次のような一連の処理が実行されることで、仮想マシン１３のマイグレーションが実行される。
【００８４】
仮想マシンモニタ１４Aは、メモリ１２A以外の場所、例えば、HDD１６に退避される。次に、仮想マシンモニタ１４Bは、メモリ１２Aに移動される。これにより、仮想マシン１３のマイグレーションが実現される。
【００８５】
換言すると、仮想マシンモニタ１４AがHDD１６に、仮想マシンモニタ１４Bがメモリ１２Aにそれぞれ転送されることで、仮想マシン１３は、マイグレーションされたとみなされる。これにより、マイグレーション後は、仮想マシン１３のプログラムは、CPU１１Bの能力で実行されることとなる。
【００８６】
以上、図５を参照して、本発明の第２実施形態について説明した。
【００８７】
＜４、第３実施形態＞
［第３実施形態の概要］
第１実施形態、および第２実施形態では、上述したように、マイグレーション先のCPU１１Bに存在しない命令Xのみをエミュレーションすることにより、効率的に仮想マシン１３のマイグレーションを実行した。
【００８８】
これに対して、第３実施形態では、命令Xが存在するプログラムは、マイグレーションが実行される前に終了される。これにより、第３実施形態では、共通命令のみが存在するプログラムのみ、マイグレーションが実行され、命令Xが存在するプログラムについては、マイグレーションが実行されない。命令Xが存在するプログラムは、マイグレーション後に、マイグレーション先のCPU１１Bによって再び起動される。
【００８９】
換言すると、第３実施形態では、共通命令のみが存在するプログラムのみマイグレーションが実行されて、引き続きマイグレーション先でプログラムが実行される。そして、命令Xが存在するプログラムは、マイグレーション前に一度終了され、マイグレーション後にマイグレーション先で再び実行される。
【００９０】
［第３実施形態の情報処理装置の構成例］  図６は、本発明が適用された情報処理装置の機能的構成例であって、図１の例とは異なる構成例を示している。
【００９１】
図６の例において、図１と対応する箇所には対応する符号が付してあり、それらの説明は適宜省略する。
【００９２】
なお、図６の例の情報処理装置は、別々の筐体に収納された複数の装置として構成することも可能であるが、本実施の形態では、１つの筐体に収納された１台の装置として構成されているとする。
【００９３】
図６の例の情報処理装置には、仮想マシンモニタ１４Aにコントロールパネル１７Aが、存在している。また、仮想マシンモニタ１４Bには、コントロールパネル１７Bが存在している。
【００９４】
仮想マシンモニタ１４A、１４Bは、それぞれが仮想マシン１３を制御することができる。また、仮想マシンモニタ１４A、１４Bや仮想マシン１３は、コントロールパネル１７A、コントロールパネル１７Bのインタフェースを介して、制御される。
【００９５】
また、コントロールパネル１７A、１７Bは、仮想マシンモニタ１４A、１４Bや仮想マシン１３を制御するための機能を実現できるプログラムである。コントロールパネル１７Aとコントロールパネル１７Bは、ネットワーク等を介して相互に通信することが可能である。
【００９６】
また、仮想マシン１３は、コントロールパネル１７A，１７Bと相互にアクセスすることが可能である。
【００９７】
図７、図８は、第３の実施形態の情報処理装置において実行されるプログラム２１の構成例について説明する図である。
【００９８】
図７は、第３の実施形態の情報処理装置において実行されるプログラム２１の構成例のうち、命令セットAで構成される命令列３１と、命令セットBで構成される命令列３２とが、単に羅列された構成となっている例である。図７に示されるプログラムの一例として、例えば、Power PC（IBM社の登録商標）とx86（INTEL社の登録商標）との両方で動作するユニバーサルバイナリ等が該当する。
【００９９】
図８は、第３の実施形態の情報処理装置において実行されるプログラム２２の構成例の別の一例である。図８は、主要な命令が共通で、一部の命令だけが異なる命令セットである命令セットAと命令セットBが含まれるプログラムの、典型的な例である。
【０１００】
図８の例のプログラム２２は、命令セットAと命令セットBとの共通部分の命令列３３を含んでいる。さらに、図８の例のプログラム２２は、命令セットAの拡張部分の命令列３４を含んでいる。命令セットAの拡張部分の命令列３４とは、命令セットAにあって、命令セットBにはない命令が存在する命令列である。さらにまた、図８の例のプログラム２２は、命令セットBの拡張部分の命令列３５を含んでいる。命令セットBの拡張部分の命令列３５とは、命令セットBにあって、命令セットAにはない命令が存在する命令列である。
【０１０１】
主要な命令が共通で、一部の命令が異なる命令セットを含むプログラムの構成としては、図８の例の構成のほうが、図７の例の構成より、プログラムのサイズが小さくなるという利点がある。このため、第３実施形態では、図８の構成のプログラムが採用されているとして、以下、説明する。
【０１０２】
図８の例のプログラムにおいては、x=ASM(“CPUID;”)という命令で、CPUの種類を調べることができる。そして、CPUによって異なる命令セットは、CPUID命令の結果の値によって、分岐した各命令列、例えば、命令セットAの拡張部分の命令列３４、命令セットBの拡張部分の命令列３５のそれぞれの中で実行される。
【０１０３】
即ち、if（X＝命令セットAのCPU）という命令により、CPUの種類がCPU１１Aであった場合には、命令セットAの拡張部分の命令列３４の命令が実行される。また、else if（X＝命令セットBのCPU）という命令により、CPUの種類がCPU１１Bであった場合には、命令セットBの拡張部分の命令列３５の命令が実行される。
【０１０４】
以上、図７、８を参照して第３実施形態の情報処理装置において実行されるプログラムの例について説明した。ところで、第３実施形態においては、上述したように、マイグレーション先のCPU１１Bの能力で実行できない命令を含むプログラムは、マイグレーションが実行されない。このため、仮想マシン１３のマイグレーションを実行するためには、仮想マシン１３のプログラムにマイグレーション先のCPU１１Bの能力で実行できない命令が存在するか否かを調べる必要がある。
【０１０５】
以下、マイグレーション先のCPUの能力で実行できない命令が存在しているか否かを調べる手法について説明する。
【０１０６】
マイグレーション先のCPUの能力で実行できない命令が存在しているか否かを調べるためには、静的な手法と、動的な手法との２種類がある。
【０１０７】
静的な手法とは、プログラムをリバースエンジニアリングすることにより、そのプログラムがCPUID命令や命令Xを持っているか否かを調べる手法である。
【０１０８】
これに対して、動的な手法とは、CPUID命令や命令Xが実行されたか否かを調べる手法である。
【０１０９】
プログラムがマイグレーション可能か否かの判定手法としては、静的な手法、または動的な手法のいずれかを用いる判定手法と、静的な手法および動的な手法を組み合わせて用いる判定手法とがある。
【０１１０】
なお、図８の例のプログラムにおいては、x=ASM(“CPUID;”)が実行される前であればマイグレーションが可能である。また、x=ASM(“CPUID;”)実行後、if文の実行前であれば、マイグレーション後にx=ASM(“CPUID;”)を再度実行することにより、マイグレーションが可能である。しかしながら、if文内の命令列（例えば、図８の例においては、命令セットAの拡張部分の命令列３４）を実行後は、マイグレーションが不可能となる。
【０１１１】
このため、第３実施形態では、静的な手法および動的な手法を組み合わせて用いる判定手法が採用されているとして、以下、説明する。具体的には、第３実施形態では、CPUID命令については、命令が実行されたか否かを調査し、命令Xについては、プログラムをリバースエンジニアリングするという判定手法が採用されているとする。
【０１１２】
以上、図７，８を参照して、図６の例の情報処理装置において実行されるプログラムの例について説明した。
【０１１３】
図９は、図６の仮想マシン１３の詳細な構成例を示している。
【０１１４】
仮想マシン１３には、マイグレーションマネージャ４１、オペレーティングシステム４２、アプリケーション４３−１乃至４３−ｎが存在している。
【０１１５】
マイグレーションマネージャ４１は、マイグレーション処理を制御するモジュールである。マイグレーションマネージャ４１は、常に動作している。また、マイグレーションマネージャ４１は、マイグレーションするための一連の制御を行う。なお、マイグレーションマネージャ４１の詳細な構成例については、図１０を参照して後述する。
【０１１６】
オペレーティングシステム４２は、仮想マシン１３上で動作するオペレーティングシステムである。なお、オペレーティングシステム４２は、共通命令で構成されているとする。
【０１１７】
アプリケーション４３−１乃至４３−ｎ（ｎは１以上の整数値）は、仮想マシン１３上で動作するプログラムである。なお、以下、アプリケーション４３−１乃至４３−ｎを特に区別する必要がない場合、これらをまとめてアプリケーション４３と称する。アプリケーション４３は、オペレーティングシステム４２により実行される。
【０１１８】
図１０は、マイグレーションマネージャ４１と、マイグレーションマネージャ４１と通信可能なデータベース４４の詳細な構成例を示している。
【０１１９】
マイグレーションマネージャ４１には、例えば、チェックすべきプログラムリスト５１、マイグレーション先に存在しない命令リスト５２、終了したプログラムリスト５３等のリストを含むように構成されている。これらのリストの詳細については、後述する。
【０１２０】
また、マイグレーションマネージャ４１は、仮想マシン１３に存在するすべてのプログラムに対して、プログラムにどのような命令が存在するかについて調査する。具体的には、マイグレーションマネージャ４１は、プログラム実行前に、あらかじめリバースエンジニアリング等の手法を適用して、各プログラムに存在している命令のリストを作成する。
【０１２１】
このようにして作成されたリストは、プログラムが使用する命令リスト６１−１乃至６１−ｎ（ｎは１以上の整数値）として、データベース４４に格納される。なお、データベース４４は、例えば、ファイルシステム上であっても、ネットワーク上であってもよく、マイグレーションマネージャ４１が参照可能な位置にあればよい。
【０１２２】
プログラムが使用する命令リスト６１−１乃至６１−ｎは、仮想マシン１３に存在するプログラムのそれぞれに対して作成される。即ち、プログラムが使用する命令リスト６１−１乃至６１−ｎは、仮想マシン１３に存在するプログラムの数だけ存在する。なお、以下、プログラムが使用する命令リスト６１−１乃至６１−ｎ（ｎは１以上の整数値）を特に区別する必要がない場合、これらをまとめてプログラムが使用する命令リスト６１と称する。
【０１２３】
プログラムが使用する命令リスト６１の作成タイミングは、マイグレーションの実行には依存せず、任意でよい。例えば、マイグレーションマネージャ４１は、マイグレーションの実行が指示されるよりも前の適当なタイミングで、プログラムが使用する命令リスト６１を作成することができる。また例えば、マイグレーションマネージャ４１は、マイグレーションの実行が指示された後、マイグレーションを実行する直前に作成することができる。
【０１２４】
マイグレーションマネージャ４１は、データベース４４をいつでも参照することが可能である。マイグレーションマネージャ４１は、プログラムが使用する命令リスト６１を参照することにより、実行の対象となるプログラムにどのような命令が使用されているかを迅速に知ることができる。
【０１２５】
なお、プログラムが使用する命令リスト６１は、図１０の例では、データベース４４に格納されていた。ただし、プログラムが使用する命令リスト６１の格納場所は、図１０の例に特に限定されない。例えば、プログラムのヘッダに、そのプログラムが使用する命令リスト６１をエンコードして埋め込むこともできる。
【０１２６】
次に、マイグレーションマネージャ４１に存在するチェックすべきプログラムリスト５１、マイグレーション先に存在しない命令リスト５２、および終了したプログラムリスト５３について説明する。
【０１２７】
チェックすべきプログラムリスト５１は、CPUID命令を発行したプログラムを特定する情報が羅列されて構成される。
【０１２８】
即ち、マイグレーションマネージャ４１は、仮想マシン１３に存在する全てのプログラムを監視する。具体的には、マイグレーションマネージャ４１は、全てのプログラムのそれぞれについて、CPUID命令が発行されたか否かを監視する。マイグレーションマネージャ４１は、実行中のとあるプログラムからCPUID命令が発行された場合、そのCPUID命令を捕捉して、そのプログラムを特定する情報を、チェックすべきプログラムリスト５１に追記する。このようにして、チェックすべきプログラムリスト５１の内容が更新されていく。
【０１２９】
また、マイグレーションマネージャ４１は、チェックすべきプログラムリスト５１に追記されたプログラムの実行が終了した場合には、そのプログラムをチェックすべきプログラムリスト５１から削除する。
【０１３０】
マイグレーション先に存在しない命令リスト５２には、マイグレーションマネージャ４１が、マイグレーション元のCPU１１Aには存在し、マイグレーション先のCPU１１Bに存在しないことを確認した命令が記載されている。
【０１３１】
終了したプログラムリスト５３には、マイグレーションマネージャ４１が、マイグレーション前に、あらかじめ終了させたプログラムが記載されている。あらかじめ終了させたプログラムとは、マイグレーションが実行できないプログラム、即ちマイグレーション先に存在しない命令を含むプログラムである。終了したプログラムリスト５３に記載されたプログラムは、マイグレーション終了後に、マイグレーション先のCPU１１Bの能力で再起動される。
【０１３２】
このような構成をもつことにより、第３実施形態の情報処理装置は、共通命令のみで構成されるプログラムについては、マイグレーション前後にかかわらずそのまま実行をし続け、共通命令以外の命令を含むプログラムについては、マイグレーション前に一度終了した後、マイグレーション先のCPU１１Bの能力で、共通命令のみを用いて再び実行することができる。
【０１３３】
よって、例えばCPU１１Aを高性能であるが高消費電力のCPUで構成し、CPU１１Bを低性能であるが低消費電力のCPUで構成した場合、次のような効果を奏することが可能になる。
【０１３４】
即ち、第３実施形態の情報処理装置においては、共通命令のみにより構成されるプログラムについてはマイグレーション前後にかかわらずそのまま実行し続け、共通命令以外の命令を含むプログラムについてはマイグレーション後に再起動することで、CPU１１Bで共通命令以外の命令が実行されないようにすることができる。これにより、第３実施形態の情報処理装置は、オペレーティングシステム全体が破壊されることなしに、仮想マシンを高性能、高消費電力のCPUから低性能、低消費電力のCPUに、効率的にマイグレーションすることが可能となる。
【０１３５】
[情報処理装置の第３実施形態の処理例]
図１１は、図６を参照して説明した、メモリ１２Aからメモリ１２Bへ、仮想マシン１３がマイグレーションされる処理（以下、マイグレーション処理を称する）を説明するフローチャートである。
【０１３６】
ステップＳ２１において、マイグレーションマネージャ４１は、マイグレーションする前に、マイグレーション先のCPU１１Aについて調査する。以下、このような処理をマイグレーション先のCPU情報チェック処理と称する。マイグレーション先のCPU情報チェック処理の詳細例については、図１２を参照して後述する。
【０１３７】
ステップＳ２２において、マイグレーションマネージャ４１は、マイグレーションの前処理を実行する。プログラムの前処理とは、マイグレーションマネージャ４１が、処理対象となるプログラムがマイグレーション可能なプログラムか否かを判定し、マイグレーション可能でないプログラムを終了させる指示をする処理である。マイグレーションの前処理の詳細例については、図１３を参照して後述する。
【０１３８】
ステップＳ２３において、マイグレーションマネージャ４１は、メモリ１２Aからメモリ１２Bへの仮想マシン１３のマイグレーションを実行する。以下、このような処理を、マイグレーションの実行処理と称する。マイグレーションの実行処理の詳細例については、図１４を参照して後述する。
【０１３９】
ステップＳ２４において、マイグレーションマネージャ４１は、終了したプログラムリスト５３にリストアップされているプログラムをすべて起動する。以上で、本発明における第３実施形態のマイグレーション処理が終了される。
【０１４０】
図１２は、図１１のマイグレーション処理のうちステップＳ２１のマイグレーション先のCPU情報チェック処理の詳細例を説明するフローチャートである。
【０１４１】
ステップＳ３１において、マイグレーションマネージャ４１は、コントロールパネル１７Aを介して、マイグレーション先の仮想マシンモニタ１４Bのコントロールパネル１７Bに、マイグレーション先のCPU情報を問い合わせる。CPU情報には、マイグレーション先のCPU１１Bが実装している命令の情報が含まれている。
【０１４２】
ステップＳ３２において、マイグレーションマネージャ４１は、マイグレーション元のCPU情報と、マイグレーション先のCPU情報を比較する。マイグレーション元のCPU情報と、マイグレーション先のCPU情報は、コントロールパネル１７A,１７Bを介して入手される。
【０１４３】
ステップＳ３３において、マイグレーションマネージャ４１は、マイグレーション先のCPU１１Bに存在しない命令があるか否かを判定する。
【０１４４】
マイグレーション先のCPU１１Bに存在しない命令がない場合、ステップＳ３３においてＮＯと判定されて、マイグレーション先のCPU情報チェック処理は終了される。
【０１４５】
これに対し、マイグレーション先のCPU１１Bに存在しない命令がある場合、ステップＳ３３においてＹＥＳと判定され、処理はステップＳ３４に進む。
【０１４６】
ステップＳ３４において、マイグレーションマネージャ４１は、マイグレーション先のCPU１１Bに存在しない命令を、マイグレーション先に存在しないリスト５２に追記する。
【０１４７】
これにより、マイグレーション先のCPU情報チェック処理が終了される。即ち、図１１のステップＳ２１の処理は終了し、ステップＳ２２の処理として、例えば図１３に示されるようなマイグレーションの前処理が開始する。
【０１４８】
図１３は、図１１のマイグレーション処理のうちステップＳ２２のマイグレーションの前処理の詳細例を説明するフローチャートである。
【０１４９】
ステップＳ４１において、マイグレーションマネージャ４１は、チェックすべきプログラムリスト５１に存在する各プログラムのうち所定の１つを、処理対象プログラムとして設定する。上述したように、チェックすべきプログラムリスト５１には、CPUID命令を発行したプログラムを特定する情報が羅列されて構成されている。
【０１５０】
ステップＳ４２において、マイグレーションマネージャ４１は、処理対象プログラムがマイグレーション先に存在しない命令を持っているか否かを判定する。即ち、マイグレーションマネージャ４１がマイグレーション先に存在しない命令リスト５２を参照することにより、処理対象プログラムがマイグレーション先に存在しない命令を持っているか否かを判定することが可能となる。
【０１５１】
処理対象プログラムが、マイグレーション先に存在しない命令を持っていない場合、ステップＳ４２においてＮＯであると判定されて、処理はステップＳ４５に進む。ステップＳ４５以降の処理については後述する。
【０１５２】
これに対して、処理対象プログラムが、マイグレーション先に存在しない命令を持っている場合、ステップＳ４２においてＹＥＳであると判定されて、処理はステップＳ４３に進む。
【０１５３】
ステップＳ４３において、マイグレーションマネージャ４１は、マイグレーション元のCPU１１Aに、処理対象プログラムの終了シグナルを送信する。これにより、処理対象のプログラムの実行が終了される。即ち、マイグレーション先に存在しない命令を持っている処理対象プログラムをマイグレーションさせないために、マイグレーションマネージャ４１は、マイグレーション前に処理対象プログラムを終了させる。
【０１５４】
ステップＳ４４において、マイグレーションマネージャ４１は、処理対象プログラムが停止したことを確認し、処理対象プログラムを終了したプログラムリスト５３に追記する。
【０１５５】
ステップＳ４５において、マイグレーションマネージャ４１は、チェックすべきプログラムリスト５１に存在するすべてのプログラムが処理対象プログラムに設定されたか否かを判定する。
【０１５６】
チェックすべきプログラムリスト５１に存在するすべてのプログラムが、処理対象プログラムに設定されていない場合、ステップＳ４５においてＮＯであると判定されて、処理はステップＳ４１に戻され、それ以降の処理が繰り返される。
【０１５７】
即ち、チェックすべきプログラムリスト５１に存在するすべてのプログラムが、処理対象プログラムに設定されるまで、ステップＳ４１乃至Ｓ４４の処理が繰り返される。換言すると、チェックすべきプログラムリスト５１に存在するプログラムのそれぞれについて、マイグレーション先に存在しない命令を持っているか否かが判定される。マイグレーション先に存在しない命令を持っているプログラムは、終了したプログラムリスト５３に追記される。
【０１５８】
その後、チェックすべきプログラムリスト５１に存在するすべてのプログラムが処理対象プログラムに設定された場合、ステップＳ４５においてＹＥＳであると判定されて、処理は終了される。
【０１５９】
これにより、マイグレーションの前処理が終了する。即ち、図１１のステップＳ２２の処理は終了し、ステップＳ２３の処理として、例えば図１４に示されるようなマイグレーションの実行処理が開始する。
【０１６０】
図１４は、図１１のマイグレーション処理のうち、ステップＳ２３のマイグレーションの実行処理の詳細例を説明するフローチャートである。
【０１６１】
ステップＳ５１において、マイグレーションマネージャ４１は、マイグレーション先の仮想マシンモニタ１４Bのコントロールパネル１７Bに、マイグレーションの実行を要求する。
【０１６２】
仮想マシンモニタ１４Bは、コントロールパネル１７Bにマイグレーションの実行が要求されると、メモリ１２Aからメモリ１２Bへの仮想マシン１３のマイグレーションを実行する。マイグレーションが終了すると、マイグレーションマネージャ４１に対し、マイグレーション完了通知を送信する。
【０１６３】
ステップＳ５２において、マイグレーションマネージャ４１は、マイグレーション先の仮想マシンモニタ１４Bのコントロールパネル１７Bから、マイグレーション完了通知を受信したか否かを判定する。
【０１６４】
マイグレーションマネージャ４１が、マイグレーション先の仮想マシンモニタ１４Bのコントロールパネル１７Bから、マイグレーション完了通知を受信していない場合、ステップＳ５２においてＮＯであると判定されて、処理はステップＳ５１に戻る。
【０１６５】
即ち、マイグレーションマネージャ４１が、マイグレーション先の仮想マシンモニタ１４Bのコントロールパネル１７Bから、マイグレーション完了通知を受信するまで、マイグレーションの実行処理は待機される。
【０１６６】
これに対して、マイグレーションマネージャ４１が、マイグレーション先の仮想マシンモニタ１４Bのコントロールパネル１７Bから、マイグレーション完了通知を受信した場合、ステップＳ５２においてＹＥＳであると判定されて、処理が終了する。
【０１６７】
これにより、マイグレーションの実行処理が終了する。即ち、図１１のステップＳ２３の処理は終了し、ステップＳ２４の処理に進む。
【０１６８】
以上説明した本発明が適用された情報処理装置によれば、以下の効果を奏することが可能となる。
【０１６９】
本発明が適用された情報処理装置によれば、主要な命令が同じで、一部の命令が異なる命令セットを実装するCPU１１A,１１B間において、仮想マシン１３のプログラムの実行を停止させることなくマイグレーションを実行することが可能となる。
【０１７０】
例えば、CPU１１Aが、高性能であるが、高消費電力のCPUで構成されたとする。また、CPU１１Bが、低性能であるが、低消費電力のCPUで構成されたとする。
【０１７１】
第１、第２の実施形態の情報処理装置によれば、例えば高い性能を必要とする命令プログラムはCPU１１Aの能力で実行し、高い性能を必要としない命令は、CPU１１Bの能力で実行することができる。このような構成とすることにより、本発明が適用された情報処理装置は、高い性能と、低い消費電力とを両立させたシステムを実現することができる。
また、第３の実施形態の情報処理装置によれば、例えばCPU１１Aでしか実行できない命令が存在しているプログラムはCPU１１Aの能力で実行し、共通命令のみで構成されたプログラムは、CPU１１Bでの能力で実行することができる。このような構成とすることにより、第３実施形態の情報処理装置は、高い性能と、低い消費電力とを両立させたシステムを実現することができる。
【０１７２】
また例えば、第１乃至第３の実施形態の情報処理装置によれば、既存のシステムに、廉価なハードウエアを追加し、それらのハードウエアに仮想マシン１３をマイグレーションすることが可能となる。
【０１７３】
また例えば、第１乃至第３の実施形態の情報処理装置によれば、既存のシステムに、新たに高性能なハードウエアを追加した場合に、その高性能な機能を使用しつつ、既存のハードウエアにもマイグレーションすることが可能となる。これにより、既存のシステムについても有効に活用することが可能となる。
【０１７４】
また、マイグレーションは、上述した例では一装置内で行われたが、２以上の装置間で行われてもよい。即ち、本発明は、任意の情報処理装置にも適用可能である。本明細書において、システムとは、複数の装置や処理部により構成される装置全体を表すものである。
【０１７５】
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【０１７６】
図１５は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０１７７】
コンピュータにおいて、CPU１０１，１０２，ROM（Read Only Memory）１０３，RAM（Random Access Memory）１０４は、バス１０５により相互に接続されている。
【０１７８】
バス１０５には、さらに、入出力インタフェース１０６が接続されている。入出力インタフェース１０６には、入力部１０７、出力部１０８、記憶部１０９、通信部１１０、およびドライブ１１１が接続されている。
【０１７９】
入力部１０７は、キーボード、マウス、マイクロフォンなどよりなる。出力部１０８は、ディスプレイ、スピーカなどよりなる。記憶部１０９は、ハードディスクや不揮発性のメモリなどよりなる。通信部１１０は、ネットワークインタフェースなどよりなる。ドライブ１１１は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア１１２を駆動する。
【０１８０】
以上のように構成されるコンピュータでは、CPU１０１,１０２が、例えば、記憶部１０９に記憶されているプログラムを、入出力インタフェース１０６およびバス１０５を介して、RAM１０４にロードして実行することにより、上述した一連の処理が行われる。
【０１８１】
コンピュータ（CPU１０１，１０２）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア１１２に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０１８２】
コンピュータでは、プログラムは、リムーバブルメディア１１２をドライブ１１１に装着することにより、入出力インタフェース１０６を介して、記憶部１０９にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部１１０で受信し、記憶部１０９にインストールすることができる。その他、プログラムは、ROM１０３や記憶部１０９に、あらかじめインストールしておくことができる。
【０１８３】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【符号の説明】
【０１８４】
１１A、１１B  CPU，  １２A、１２B  メモリ，  １３  仮想マシン，  １４A、１４B  仮想マシンモニタ，  １５  命令エミュレータ，  １６  HDD，  １７A、１７B  コントロールパネル，  ４１  マイグレーションマネージャ，  ４２  オペレーティングシステム，  ４３  アプリケーション，  ４４  データベース，  ５１  チェックすべきプログラムリスト，  ５２  マイグレーション先に存在しない命令リスト，  ５３  終了したプログラムリスト，  ６１  プログラムが使用する命令リスト
【図１】
2010272055.tif 000003
【図２】
2010272055.tif 000004
【図３】
2010272055.tif 000005
【図４】
2010272055.tif 000006
【図５】
2010272055.tif 000007
【図６】
2010272055.tif 000008
【図７】
2010272055.tif 000009
【図８】
2010272055.tif 000010
【図９】
2010272055.tif 000011
【図１０】
2010272055.tif 000012
【図１１】
2010272055.tif 000013
【図１２】
2010272055.tif 000014
【図１３】
2010272055.tif 000015
【図１４】
2010272055.tif 000016
【図１５】
2010272055.tif 000017