(57)【要約】【課題】ＣＰＵの利用率に応じて命令列の最適化処理を行うことを可能にする。【解決手段】それぞれ異なる物理ＣＰＵ上で動作する複数の仮想ＣＰＵ２０１，２０２と、最適化すべき命令列を選択する命令列選択手段１０１と、仮想ＣＰＵ２０１，２０２の利用率をもとに、選択された命令列の最適化処理を行う仮想ＣＰＵ２０１，２０２を選択する仮想ＣＰＵ選択手段１０２と、選択された仮想ＣＰＵ２０１，２０２で実行する最適化処理の最適化レベルを決定し、選択された仮想ＣＰＵ２０１，２０２に対して最適化処理を指示する最適化レベル選択手段１０３とを有する。【選択図】  図１
2010108086.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ異なる物理ＣＰＵ上で動作する複数の仮想ＣＰＵと、
最適化すべき命令列を選択する命令列選択手段と、
前記仮想ＣＰＵの利用率をもとに、選択された命令列の最適化処理を行う前記仮想ＣＰＵを選択する仮想ＣＰＵ選択手段と、
選択された前記仮想ＣＰＵで実行する最適化処理の最適化レベルを決定し、選択された前記仮想ＣＰＵに対して最適化処理を指示する最適化レベル選択手段と、
を有することを特徴とするＣＰＵエミュレーションシステム。
【請求項２】
特定の時間を単位時間として格納している単位時間管理部と、
最適化レベルごとに最適化処理に掛かる時間を記憶している最適化処理時間管理部と、
前記仮想ＣＰＵ選択手段で選択された前記仮想ＣＰＵの利用率と、前記単位時間管理部に格納されている単位時間をもとに、最適化処理のために掛けられる許容時間を計算し、更に最適化処理時間管理部を参照することで、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する時間計算手段と、
を更に有することを特徴とする請求項１に記載のＣＰＵエミュレーションシステム。
【請求項３】
前記最適化処理時間管理部には、最適化レベルごとに、命令列サイズあたりの処理時間が格納されていることを特徴とする請求項２に記載のＣＰＵエミュレーションシステム。
【請求項４】
アーキテクチャ変換処理前の変換前命令列と、それを物理ＣＰＵで実行可能な形式に変換した命令列である変換済命令列と、変換済命令列に最適化処理を施された最適化済命令列との対応付けを管理する命令列対応管理部と、
それぞれ異なる物理ＣＰＵ上で動作する複数の仮想ＣＰＵと、
最適化すべき命令列を選択する命令列選択手段と、
選択された命令列の最適化処理を複数の前記仮想ＣＰＵに指示するにあたり、前記仮想ＣＰＵごとに異なる最適化レベルを指示する最適化指示手段と、
前記仮想ＣＰＵによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて前記命令列対応管理部に書き込む最適化情報書き込み手段と、
を有することを特徴とするＣＰＵエミュレーションシステム。
【請求項５】
命令列実行処理が行われる時に、前記命令列対応管理部を参照することで、最も最適化レベルが高い命令列を選択して実行することを特徴とする請求項４に記載のＣＰＵエミュレーションシステム。
【請求項６】
前記最適化情報書き込み手段が前記最適化済命令列に関する情報を書き込む時に、前記最適化済命令列に適用された最適化レベルに関する情報も書き込むことを特徴とする請求項４または５に記載のＣＰＵエミュレーションシステム。
【請求項７】
前記仮想ＣＰＵが、それぞれ異なるＣＰＵコア上で実行されることを特徴とする請求項１から６のいずれか１項に記載のＣＰＵエミュレーションシステム。
【請求項８】
最適化すべき命令列を選択する命令列を選択し、
それぞれ異なる物理ＣＰＵで動作する複数の仮想ＣＰＵの利用率をもとに、選択された命令列の最適化処理を行う前記仮想ＣＰＵを選択し、
選択された前記仮想ＣＰＵで実行する最適化処理の最適化レベルを決定し、
選択された前記仮想ＣＰＵに対して最適化処理を指示することを特徴とするＣＰＵエミュレーション方法。
【請求項９】
更に、選択された前記仮想ＣＰＵの利用率と単位時間をもとに、最適化処理のために掛けられる許容時間を計算し、
最適化レベルごとに最適化処理に掛かる時間を記憶している最適化処理時間管理部を参照することで、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出することを特徴とする請求項８に記載のＣＰＵエミュレーション方法。
【請求項１０】
前記最適化処理時間管理部に格納されている最適化レベルごとの命令列サイズあたりの処理時間をもとに、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出することを特徴とする請求項９に記載のＣＰＵエミュレーション方法。
【請求項１１】
最適化すべき命令列を選択し、
選択された命令列に関して、複数の仮想ＣＰＵに対して、それぞれ異なる最適化レベルで最適化処理をするよう指示し、
前記仮想ＣＰＵによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部に書き込むことを特徴とするＣＰＵエミュレーション方法。
【請求項１２】
更に、命令列実行処理が行われる時に、前記命令列対応管理部を参照することで、最も最適化レベルが高い命令列を選択して実行することを特徴とする請求項１１に記載のＣＰＵエミュレーション方法。
【請求項１３】
前記最適化済命令列に関する情報を書き込む時に、前記最適化済命令列に適用された最適化レベルに関する情報も書き込むことを特徴とする請求項１１または１２に記載のＣＰＵエミュレーション方法。
【請求項１４】
最適化すべき命令列を選択する命令列を選択する処理と、
それぞれ異なる物理ＣＰＵで動作する複数の仮想ＣＰＵの利用率をもとに、選択された命令列の最適化処理を行う前記仮想ＣＰＵを選択する処理と、
選択された前記仮想ＣＰＵで実行する最適化処理の最適化レベルを決定した上で選択された前記仮想ＣＰＵに対して最適化処理を指示する処理をコンピュータに実行させることを特徴とするＣＰＵエミュレーションプログラム。
【請求項１５】
更に、選択された前記仮想ＣＰＵの利用率と単位時間をもとに、最適化処理のために掛けられる許容時間を計算する処理と、
最適化レベルごとに最適化処理に掛かる時間を記憶している最適化処理時間管理部を参照することで、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する処理をコンピュータに実行させることを特徴とする請求項１４に記載のＣＰＵエミュレーションプログラム。
【請求項１６】
前記最適化処理時間管理部に格納されている最適化レベルごとの命令列サイズあたりの処理時間をもとに、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する処理をコンピュータに実行させることを特徴とする請求項１５に記載のＣＰＵエミュレーションプログラム。
【請求項１７】
最適化すべき命令列を選択する処理と、
選択された命令列に関して、複数の仮想ＣＰＵに対して、それぞれ異なる最適化レベルで最適化処理をするよう指示する処理と、
前記仮想ＣＰＵによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部に書き込む処理をコンピュータに実行させることを特徴とするＣＰＵエミュレーションプログラム。
【請求項１８】
更に、命令列実行処理が行われる時に、前記命令列対応管理部を参照することで、最も最適化レベルが高い命令列を選択して実行する処理をコンピュータに実行させることを特徴とする請求項１７に記載のＣＰＵエミュレーションプログラム。
【請求項１９】
更に、前記最適化済命令列に関する情報を書き込む時に、前記最適化済命令列に適用された最適化レベルに関する情報も書き込む処理をコンピュータに実行させることを特徴とする請求項１７または１８に記載のＣＰＵエミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵエミュレーションシステム、ＣＰＵエミュレーション方法及びＣＰＵエミュレーションプログラムに関し、特に、マルチプロセッサを用いて、命令列の実行処理を遅延させることなく命令列の最適化処理を行うことが可能なＣＰＵエミュレーションシステム、ＣＰＵエミュレーション方法及びＣＰＵエミュレーションプログラムに関する。
【背景技術】
【０００２】
ＣＰＵエミュレーションシステムとは、物理ＣＰＵと異なるＩＳＡ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を持つＣＰＵを、仮想ＣＰＵとしてソフトウェア的に実現するシステムである。仮想ＣＰＵは、仮想ＣＰＵが想定しているＩＳＡ向けの命令列を読み込み、読み込んだ命令列を物理ＣＰＵ上で実行可能な命令列に変換した上で、変換済命令列を実行する。
【０００３】
このようなＣＰＵエミュレーションシステムのうち、マルチプロセッサを利用したＣＰＵエミュレーションシステムの一例が、特許文献１に記載されている。
【０００４】
特許文献１では、複数のプロセッサから構成されるＣＰＵエミュレーションシステムにおいて、元命令をプリフェッチする処理と、元命令列の解釈実行する処理と、命令列変換および最適化処理を、それぞれ異なるＣＰＵ上で実行する。このように、命令列を実行するＣＰＵと、命令列の最適化を行うＣＰＵを分けることで、命令列の最適化処理が、命令列実行処理の処理スループットに影響しないようにしている。
【０００５】
また、マルチプロセッサを用いた命令列の最適化システムの一例が、特許文献２に記載されている。特許文献２では、１つのＣＰＵ上で実行中のプログラムに関してプロファイル情報を収集し、その情報をもとに、別のＣＰＵで実行中に命令列の最適化を行っている。このように、命令列を実行するＣＰＵと、命令列の最適化を行うＣＰＵを分けることで、命令列の最適化処理が、命令列実行処理の処理スループットに影響しないようにしている。
【０００６】
【特許文献１】特開２００２−３１２１８０号公報
【特許文献２】特開２００４−１１０８２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来の技術では、ＣＰＵの空き時間を有効利用することができなかった。その理由は、命令列の実行処理と命令列の最適化処理が互いの性能スループットに影響を与えないよう、それぞれ別のＣＰＵで実行することを想定しているからである。
【０００８】
そこで、本発明は、上記従来技術の問題点に鑑みて成されたものであり、その目的は、ＣＰＵの利用率に応じて、命令列の最適化処理を行うことを可能にすることにある。
【課題を解決するための手段】
【０００９】
本発明のＣＰＵエミュレーションシステムでは、
それぞれ異なる物理ＣＰＵ上で動作する複数の仮想ＣＰＵと、
最適化すべき命令列を選択する命令列選択手段と、
前記仮想ＣＰＵの利用率をもとに、選択された命令列の最適化処理を行う前記仮想ＣＰＵを選択する仮想ＣＰＵ選択手段と、
選択された前記仮想ＣＰＵで実行する最適化処理の最適化レベルを決定し、選択された前記仮想ＣＰＵに対して最適化処理を指示する最適化レベル選択手段と、を有することを特徴とする。
【００１０】
また、本発明の他のＣＰＵエミュレーションシステムでは、
アーキテクチャ変換処理前の変換前命令列と、それを物理ＣＰＵで実行可能な形式に変換した命令列である変換済命令列と、変換済命令列に最適化処理を施された最適化済命令列との対応付けを管理する命令列対応管理部と、
それぞれ異なる物理ＣＰＵ上で動作する複数の仮想ＣＰＵと、
最適化すべき命令列を選択する命令列選択手段と、
選択された命令列の最適化処理を複数の前記仮想ＣＰＵに指示するにあたり、前記仮想ＣＰＵごとに異なる最適化レベルを指示する最適化指示手段と、
前記仮想ＣＰＵによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて前記命令列対応管理部に書き込む最適化情報書き込み手段と、を有することを特徴とする。
【００１１】
また、本発明のＣＰＵエミュレーション方法では、
最適化すべき命令列を選択する命令列を選択し、
それぞれ異なる物理ＣＰＵで動作する複数の仮想ＣＰＵの利用率をもとに、選択された命令列の最適化処理を行う前記仮想ＣＰＵを選択し、
選択された前記仮想ＣＰＵで実行する最適化処理の最適化レベルを決定し、
選択された前記仮想ＣＰＵに対して最適化処理を指示することを特徴とする。
【００１２】
また、本発明の他のＣＰＵエミュレーション方法では、
最適化すべき命令列を選択し、
選択された命令列に関して、複数の仮想ＣＰＵに対して、それぞれ異なる最適化レベルで最適化処理をするよう指示し、
前記仮想ＣＰＵによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部に書き込むことを特徴とする。
【００１３】
また、本発明のＣＰＵエミュレーションプログラムでは、
最適化すべき命令列を選択する命令列を選択する処理と、
それぞれ異なる物理ＣＰＵで動作する複数の仮想ＣＰＵの利用率をもとに、選択された命令列の最適化処理を行う前記仮想ＣＰＵを選択する処理と、
選択された前記仮想ＣＰＵで実行する最適化処理の最適化レベルを決定した上で選択された前記仮想ＣＰＵに対して最適化処理を指示する処理をコンピュータに実行させることを特徴とする。
【００１４】
また、本発明の他のＣＰＵエミュレーションプログラムでは、
最適化すべき命令列を選択する処理と、
選択された命令列に関して、複数の仮想ＣＰＵに対して、それぞれ異なる最適化レベルで最適化処理をするよう指示する処理と、
前記仮想ＣＰＵによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部に書き込む処理をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、利用率が高い仮想ＣＰＵは、最適化処理を指示されることなく、本来の命令列の変換処理や実行処理を遅延されることなく実行できる。すなわち、エミュレーションされるプログラムの実行時間を短縮することができる。その理由は、仮想ＣＰＵ利用率にもとづいて最適化処理を行う仮想ＣＰＵを選択するよう構成されているためである。
【発明を実施するための最良の形態】
【００１６】
（第１の実施の形態）
次に、本発明の第１の実施の形態について、図面を参照して詳細に説明する。
【００１７】
なお、ＣＰＵエミュレーションシステムでは、仮想ＣＰＵで想定しているＩＳＡ向け命令列を読み込み、次に読み込んだ命令列を物理ＣＰＵ上で実行可能な命令列に変換し、変換済命令列を実行するという処理が主に行われる。本発明は、このうち変換済命令列に対する最適化処理に関するものであるため、以下の説明においても命令列の最適化処理を中心に説明する。
【００１８】
まず、図１を参照すると、本発明の第１の実施の形態は、情報処理装置１００において、命令列選択手段１０１、仮想ＣＰＵ選択手段１０２、最適化レベル選択手段１０３、第１仮想ＣＰＵ部２０１、第２仮想ＣＰＵ部２０２、変換前命令列管理部３０１、変換済命令列管理部３０２、最適化済命令列管理部３０３から構成される。
【００１９】
変換前命令列管理部３０１は、仮想ＣＰＵが想定しているＩＳＡ向けの命令列、つまりエミュレーション対象の命令列を管理しておくための記憶領域である。なお、これ以降、このエミュレーション対象の命令列のことを変換前命令列と表記する。
【００２０】
変換済命令列管理部３０２は、前述した命令列変換処理によって変換された命令列が記憶されている記憶領域である。変換済命令列管理部３０２は、更に変換済命令列ごとに、命令列変換処理において適用された最適化レベルも管理している。これは、命令列変換処理においても何かしらの最適化処理が施されていることを想定している。なおこれ以降、命令列変換処理によって変換された命令列のことを変換後命令列と表記する。
【００２１】
最適化済命令列管理部３０３は、最適化処理を施された命令列を保存しておくための記憶領域である。なおこれ以降、最適化処理を施された命令列のことを最適化済命令列と表記する。
【００２２】
命令列選択手段１０１は、ＣＰＵエミュレーションシステム上で次に最適化すべき命令列を選択するものである。仮想ＣＰＵ選択手段１０２は、利用率の低い仮想ＣＰＵを命令列の最適化処理を行う仮想ＣＰＵとして選択するものである。
【００２３】
最適化レベル選択手段１０３は、選択された仮想ＣＰＵで実行する最適化処理の最適化レベルを決定するものである。変換済命令列管理部３０２を参照することで、選択された命令列が命令列変換処理で適用された最適化レベルを取得し、取得した最適化レベルより高い最適化レベルを選択する。
【００２４】
第１仮想ＣＰＵ部２０１及び第２仮想ＣＰＵ部２０２は、ＣＰＵエミュレーションシステムの提供するＣＰＵ機能であり、物理ＣＰＵ上で実行される。第１仮想ＣＰＵ部２０１及び第２仮想ＣＰＵ部２０２は、変換前命令列管理部３０１に記憶されている変換前命令列を読み込み、物理ＣＰＵ上で実行可能な命令列に変換する。なお、変換された命令列は、変換済命令列として変換済命令列管理部３０２に保存されており、同じ命令列を再度実行する時に再利用できる。
【００２５】
また、第１仮想ＣＰＵ部２０１及び第２仮想ＣＰＵ部２０２は、変換済命令列を物理ＣＰＵ上で実行する。
【００２６】
また、第１仮想ＣＰＵ部２０１及び第２仮想ＣＰＵ部２０２は、最適化レベル選択手段１０３からの指示に従い変換済命令列の最適化処理を行う。具体的には、命令列の実行速度を高める、命令列によるメモリ使用量を抑える、キャッシュヒット率を高める、などの目的のために、指示された命令列を解析した上で命令の並び替えもしくは命令の変換が行われる。この最適化処理によって生成される命令列が、最適化済命令列である。なお、第１仮想ＣＰＵ部２０１と第２仮想ＣＰＵ部２０２は、それぞれ異なる物理ＣＰＵ上もしくはマルチコアプロセッサにおける異なるＣＰＵコア上で実行される。
【００２７】
次に、図１及び図２のフローチャートを参照して本実施の形態の全体の動作について説明する。
【００２８】
まず、命令列選択手段１０１が、変換済命令列管理部３０２に保存されている変換済命令列の中から最適化すべき命令列を選択する（図２のステップＡ１）。
【００２９】
次に、仮想ＣＰＵ選択手段１０２が、第１仮想ＣＰＵ部２０１と第２仮想ＣＰＵ部２０２をモニタリングし、利用率の低い仮想ＣＰＵを、最適化を行う仮想ＣＰＵとして選択する（ステップＡ２）。
【００３０】
次に、最適化レベル選択手段１０３が、変換済命令列管理部３０２を参照することで、選択された命令列に適用する最適化レベルを決定し、選択された仮想ＣＰＵに対して、選択された命令列と最適化レベルを指示する（ステップＡ３）。
【００３１】
ここで、もし第１仮想ＣＰＵ部２０１が選択された場合（ステップＡ４）、第１仮想ＣＰＵ部２０１が、指示に従い命令列の最適化処理を行う（ステップＡ５）。
【００３２】
もし、第２仮想ＣＰＵ部２０２が選択された場合、第２仮想ＣＰＵ部２０２が指示に従い最適化処理を行う（ステップＡ６）。
【００３３】
本発明の第１の実施の形態によれば、仮想ＣＰＵ利用率にもとづいて最適化処理を行う仮想ＣＰＵ部を選択するよう構成されているため、利用率が高い仮想ＣＰＵ部は、最適化処理を指示されることなく、本来の命令列の変換・実行処理を遅延されることなく実行できる。
【００３４】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００３５】
図３を参照すると、本実施の形態は、第１の実施の形態と比べて、単位時間管理部３０４と最適化処理時間管理部３０５、時間計算手段１０４を備える点で異なるが、それ以外の構成は第１の実施の形態と同じである。従って、ここでは構成が異なる点についてのみ説明する。
【００３６】
単位時間管理部３０４は、特定の時間が単位時間として記憶されている記憶領域である。この単位時間は、パーセンテージ表現された仮想ＣＰＵの利用率をもとに、仮想ＣＰＵのアイドル時間を計算するために利用される。例えば、単位時間が１秒で第１仮想ＣＰＵ部２０１の利用率の９０％の時、第１仮想ＣＰＵ部２０１は９００ミリ秒間利用され、１００ミリ秒間アイドル状態であると見なすことができる。
【００３７】
最適化処理時間管理部３０５には、最適化レベルごとに最適化処理に掛かる時間が記憶されている記憶領域である。例えば、最適化レベルＯ１は、命令列１００バイトごとに１０ミリ秒掛かる、最適化レベルＯ２は、命令列１００バイトごとに２０ミリ秒掛かる、などの情報が記憶されている。
【００３８】
時間計算手段１０４は、まず仮想ＣＰＵ選択手段１０２において選択された仮想ＣＰＵの利用率と単位時間管理部３０４をもとに、最適化処理のために掛けられる許容時間を計算する。例えば、単位時間が１秒で第１仮想ＣＰＵ部２０１の利用率の９０％の時、１００ミリ秒の間アイドル状態であるため、最適化処理の許容時間として１００ミリ秒を算出する。次に、最適化処理時間管理部３０５を参照することで、指定された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する。
【００３９】
次に、図３と図４のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。
【００４０】
まず、命令列選択手段１０１が、変換済命令列管理部３０２に保存されている変換済命令列の中から最適化すべき命令列を選択する（図４のステップＢ１）。
【００４１】
次に、仮想ＣＰＵ選択手段１０２が、第１仮想ＣＰＵ部２０１と第２仮想ＣＰＵ部２０２をモニタリングし、利用率の低い仮想ＣＰＵを、最適化を行う仮想ＣＰＵとして選択する（ステップＢ２）。
【００４２】
次に、時間計算手段１０４が、選択された仮想ＣＰＵの利用率と単位時間管理部３０５をもとに、最適化処理のために掛けられる許容時間を計算する（ステップＢ３）。
【００４３】
更に、時間計算手段１０４が、最適化処理時間管理部３０６を参照することで、指定された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する（ステップＢ４）。
【００４４】
次に、最適化レベル選択手段１０３が、算出した許容時間以内に処理が完了する最も高い最適化レベルを決定し、選択された仮想ＣＰＵに対して、選択された命令列と最適化レベルを指示する（ステップＢ５）。
【００４５】
ここで、もし第１仮想ＣＰＵ部２０１が選択された場合（ステップＢ６）、第１仮想ＣＰＵ部２０１が、指示に従い命令列の最適化処理を行う（ステップＢ７）。
【００４６】
もし第２仮想ＣＰＵ部２０２が選択された場合、第２仮想ＣＰＵ部２０２が指示に従い最適化処理を行う（ステップＢ８）。
【００４７】
本発明の第２の実施の形態によれば、仮想ＣＰＵの利用率のみならず、最適化処理に掛かる時間を考慮して、最適化レベルを決定するよう構成されているため、最適化処理を行うよう選択された仮想ＣＰＵにおいて、本来の命令列の変換・実行処理が遅延される可能性をより低く抑えることができる。
【００４８】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
【００４９】
図５を参照すると、本実施の形態は、第１の実施の形態と比べて、仮想ＣＰＵ選択手段１０２と最適化レベル選択手段１０３を備えず、命令列対応管理部３０６、最適化指示手段１０５、最適化情報書き込み手段１０６を備える点で異なるが、それ以外の構成は第１の実施の形態と同じである。従って、ここでは構成が異なる点についてのみ説明する。
【００５０】
命令列対応管理部３０６は、仮想ＣＰＵが想定している変換前命令列と、それを物理ＣＰＵで実行可能な形式に変換した命令列である変換済命令列と、変換済命令列に最適化処理を施して生成された最適化済命令列に関して、変換前命令列に関する識別子をもとに、その命令列に該当する変換済命令列、最適化済命令列を対応付けている記憶領域である。
【００５１】
最適化指示手段１０５は、選択された命令列の最適化処理を各仮想ＣＰＵ部に指示するが、各仮想ＣＰＵ部の利用率をもとに異なる最適化レベルを指示する。最適化レベルの指示の仕方としては、例えば利用率が高い仮想ＣＰＵ部には低い最適化レベルを指示し、利用率が低い仮想ＣＰＵ部には高い最適化レベルを指示することができる。これにより、同一の変換済命令列に関して、仮想ＣＰＵ部ごとに異なる最適化済命令列が生成されることになる。
【００５２】
最適化情報書き込み手段１０６は、仮想ＣＰＵ部による最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部３０６に書き込む。なお最適化処理で選択された最適化レベルに関する情報も同時に書き込む。
【００５３】
次に、図５と図６のフローチャートを用いて、本実施の形態の全体の動作について詳細に説明する。
【００５４】
まず、命令列選択手段１０１が、変換済命令列管理部３０２に保存されている変換済命令列の中から最適化すべき命令列を選択する（図６のステップＣ１）。
【００５５】
次に、最適化指示手段１０５が、各仮想ＣＰＵ部に対して、利用率をもとに異なる最適化レベルで選択された変換済命令列の最適化処理を指示する（ステップＣ２）。
【００５６】
これに従い、第１仮想ＣＰＵ部２０１では、指示された変換済命令列と最適化レベルに従い、最適化処理を行う（ステップＣ３−１）。
【００５７】
最適化処理が終了すると、最適化情報書き込み手段１０６が、最適化済命令列に関する情報を命令列対応管理部３０５に書き込む（ステップＣ４−１）。
【００５８】
また、第２仮想ＣＰＵ部２０２でも、指示された変換済命令列と最適化レベルに従い、最適化処理を行う（ステップＣ３−２）。
【００５９】
最適化処理が終了すると、最適化情報書き込み手段１０６が、最適化済命令列に関する情報を命令列対応管理部３０６に書き込む（ステップＣ４−２）。
【００６０】
本発明の第３の実施の形態によれば、複数の仮想ＣＰＵ部に対して異なる最適化レベルでの最適化処理を指示し、各仮想ＣＰＵ部で最適化処理が終わり次第、命令列対応管理部３０６に最適化済命令列の情報を書き込むよう構成されている。これにより、最適化処理の対象となっている命令列に関して、最適化処理を行っている最中に命令列実行処理を行う必要が生じたとしても、命令列対応管理部３０６に書き込まれている情報をもとに、その時点で最も最適化レベルが高い命令列を実行処理に用いることができる。
【００６１】
（実施例）
（第１の実施例）
次に、本発明の第１の実施例を、図７を参照して説明する。かかる実施例は、本発明の第１の実施の形態に対応するものである。
【００６２】
図７に示すように、本実施例は、ｘ８６コンピュータ７００上で動作するＡＲＭプロセッサのＣＰＵエミュレーションシステムである。本実施例において、ｘ８６コンピュータ７００と第１仮想ＡＲＭプロセッサ部７０１、第２仮想ＡＲＭプロセッサ部７０２は、それぞれ本発明の第１の実施の形態における情報処理装置１００、第１仮想ＣＰＵ部２０１、第２仮想ＣＰＵ部２０２に相当する。
【００６３】
また、命令列選択手段１０１、仮想ＣＰＵ選択手段１０２、最適化レベル選択手段１０３、第１仮想ＡＲＭプロセッサ部７０１は第１物理ＣＰＵ７１０上で実行され、第２仮想ＡＲＭプロセッサ部７０２は第２物理ＣＰＵ７２０上で実行される。また、変換済命令列管理部３０２及び最適化済命令列管理部３０３はメモリ７３０上に置かれる。また、変換前命令列管理部３０１はハードディスク７４０上に置かれる。
【００６４】
このような構成をとったＣＰＵエミュレーションシステムは、第１仮想ＡＲＭプロセッサ部７０１と第２仮想ＡＲＭプロセッサ部７０２において、変換前命令列管理部３０１に記憶されているＡＲＭ形式の命令列を読み込み、ＡＲＭ形式の命令列をｘ８６形式の命令列に変換しながら実行する。
【００６５】
また、変換された命令列は、ＣＰＵエミュレーションシステムが管理するメモリの変換済命令列管理部３０２にキャッシュされる。これはｘ８６に変換された命令列の中にはループ処理などのように何度も繰り返し実行される命令列が存在するためである。
【００６６】
このＣＰＵエミュレーションシステムにおいて、命令列選択手段１０１が最適化処理を実行するための変換済命令列を選択すると、最適化処理が行われる。例えば、第１仮想ＡＲＭプロセッサ部７０１の利用率が１０％で、第２仮想ＡＲＭプロセッサ部７０２の利用率が９０％の場合、利用率の低い第１仮想ＡＲＭプロセッサ部７０１で最適化処理を行われる。従って、利用率の高い第２仮想ＡＲＭプロセッサ７０２で最適化処理を行う時に比べて、命令列の変換処理や実行処理を遅延されることなく実行できる。
【００６７】
（第２の実施例）
次に、本発明の第２の実施例を、図８を参照して説明する。かかる実施例は、本発明の第２の実施の形態に対応するものである。
【００６８】
本実施例では、第１の実施例で示したようなＣＰＵエミュレーションシステムの内部で、最適化処理を実行する仮想ＣＰＵを選択する方法について詳しく説明する。
【００６９】
まず、図８のような状況を想定する。第１仮想ＣＰＵ部２０１の利用率が９０％であり、第２仮想ＣＰＵ部２０２の利用率が１０％であったとする。また、最適化対象の変換済命令列が５００バイトであったとする。また、単位時間管理部３０４（図３参照）に単位時間として１００ミリ秒が保存されていたとする。また、最適化処理時間管理部３０５（図３参照）には、（１）最適化レベルＯ１の最適化処理時間は、命令列１００バイトごとに１０ミリ秒掛かるという情報と、（２）最適化レベルＯ２の最適化処理時間は、命令列１００バイトごとに２０ミリ秒掛かるという情報が記憶されていたとする。
【００７０】
このような状況のもとで、仮想ＣＰＵ選択手段１０２（図３参照）は、最適化処理を実行する仮想ＣＰＵとして、利用率の低い第２仮想ＣＰＵ部２０２を選択する。
【００７１】
次に、時間計算手段１０４（図３参照）が、単位時間が１００ミリ秒であり第２仮想ＣＰＵ部２０２の利用率が１０％であるということから、最適化処理のために９０ミリ秒が許容時間であると算出する。最適化対象の変換済命令列が５００バイトであるので、最適化レベルＯ１で最適化した場合５０ミリ秒掛かり、最適化レベルＯ２で最適化した場合１００ミリ秒掛かることを計算する。
【００７２】
最適化レベル選択手段１０３は、こうした時間計算手段１０４による算出結果をもとに、第２仮想ＣＰＵ部２０２で最適化レベルＯ１の最適化処理を実行することを決定し、第２仮想ＣＰＵ部２０２に対して処理を依頼する。
【００７３】
ここで、もし最適化対象の変換後命令列が３００バイトであれば、最適化レベルＯ２であっても許容時間内に収まるため、第２仮想ＣＰＵ部２０２に対して最適化レベルＯ２の最適化処理を依頼することになる。
【００７４】
（第３の実施例）
次に、本発明の第３の実施例を、図９及び図１０を参照して説明する。かかる実施例は、本発明の第３の実施の形態に対応するものである。
【００７５】
本実施例では、第１の実施例で示したようなＣＰＵエミュレーションシステムの内部で、最適化処理の依頼する方法及び実行時における最適化済命令列を選択する方法について詳しく説明する。
【００７６】
まず、図９のような状況を想定する。第１仮想ＣＰＵ部２０１の利用率が１０％であり、第２仮想ＣＰＵ部２０２の利用率が９０％であるとする。また、最適化指示手段１０５（図５参照）は、変換前命令列αを変換した変換済命令列β（キャッシュ命令列β９０１）を最適化するにあたり、第１仮想ＣＰＵ部２０１に最適化レベルＯ１で、第２仮想ＣＰＵ部２０２に対して最適化レベルＯ２で最適化するよう指示する。その結果、それぞれの最適化処理が時間Ｔ１、Ｔ２に完了し、それぞれ最適化済命令列γ１９０２、最適化済命令列γ２９０３が生成されたとする。
【００７７】
Ｔ１−Ｔ２の間、最適化済命令列の生成はγ１のみ完了しており、命令列対応管理部３０６（図５参照）における命令列の対応付けは、図１０の（ａ）のようになっている。ここで、ＣＰＵエミュレーションシステムにおいて、命令列αに関する命令列実行処理が行われたとすると、命令列対応管理部３０６（図５参照）を参照することで、最も最適化レベルが高い最適化済命令列γ１を実行すれば良いことが分かる。
【００７８】
また、Ｔ２以降の時間では、最適化済命令列γ2の生成も完了しており、命令列対応管理部３０５における命令列の対応付けは、図１０の（ｂ）のようになっている。ここで、ＣＰＵエミュレーションシステムにおいて命令列αに関する命令列実行処理が行われたとすると、命令列対応管理部３０６（図５参照）を参照することで、最も最適化レベルが高い最適化済命令列γ2を選択すれば良いことが分かる。
【００７９】
なお、以上の実施例では、２つの物理ＣＰＵを用いたＣＰＵエミュレーションシステムを想定しているが、３つ以上の物理ＣＰＵを用いたＣＰＵエミュレーションシステムであっても良い。また１つ以上のマルチコアＣＰＵを用いたＣＰＵエミュレーションシステムであっても良い。
【００８０】
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【００８１】
本発明は、物理ＣＰＵと異なるＩＳＡを持つＣＰＵをソフトウェア的にエミュレートするＣＰＵエミュレーションシステムにおいて、仮想ＣＰＵの処理スループットを極力落とすことなく、キャッシュされている命令列の最適化処理を行うという用途に適用可能である。
【図面の簡単な説明】
【００８２】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の動作を示すフローチャートである。
【図３】本発明の第２の実施の形態の動作を示すブロック図である。
【図４】本発明の第２の実施の形態の動作を示すフローチャートである。
【図５】本発明の第３の実施の形態の動作を示すブロック図である。
【図６】本発明の第３の実施の形態の動作を示すフローチャートである。
【図７】本発明の第１の実施例を示すブロック図である。
【図８】本発明の第２の実施例における時間計算及び最適化レベル選択の様子を示す図である。
【図９】本発明の第３の実施例における最適化済命令列の選択の様子を示す図である。
【図１０】本発明の第３の実施例における命令列対応管理部を示す図である。
【符号の説明】
【００８３】
１００ 情報処理装置
１０１ 命令列選択手段
１０２ 仮想ＣＰＵ選択手段
１０３ 最適化レベル選択手段
１０４ 時間計算手段
１０５ 最適化指示手段
１０６ 最適化情報書き込み手段
２０１ 第１仮想ＣＰＵ部
２０２ 第２仮想ＣＰＵ部
３０１ 変換前命令列管理部
３０２ 変換済命令列管理部
３０３ 最適化済命令列管理部
３０４ 単位時間管理部
３０５ 最適化処理時間管理部
３０６ 命令列対応管理部
【図１】
2010108086.tif 000003
【図２】
2010108086.tif 000004
【図３】
2010108086.tif 000005
【図４】
2010108086.tif 000006
【図５】
2010108086.tif 000007
【図６】
2010108086.tif 000008
【図７】
2010108086.tif 000009
【図８】
2010108086.tif 000010
【図９】
2010108086.tif 000011
【図１０】
2010108086.tif 000012