(57)【要約】  使用環境が変化してもエミュレータの処理性能を確実に改善すること。この課題を解決するために、実行処理記録部（１０２）は、エミュレータ実行部（１０１）において実行された処理と実行された時刻とを記録する。集計部（１０４）は、ポリシー記憶部（１０３）からポリシーを読み出し、ポリシーごとに実行処理の回数を集計する。ソース合成部（１０６）は、集計部（１０４）の集計結果に応じて、ポリシーごとに最適な順序でソース部品が並べられたソースを合成する。コンパイラ部（１０７）は、ポリシーごとのソース一式をコンパイルし、ポリシーごとのエミュレータを生成する。エミュレータ選択部（１０９）は、現在時刻がポリシー記憶部（１０３）に定義されたどのポリシーに含まれるか判断し、該当するポリシーに対応するエミュレータをエミュレータ記憶部（１０８）から読み出してエミュレータ実行部（１０１）に実行させる。
2008117473.tif 000002
【特許請求の範囲】
【請求項１】
個々の処理が記述されたソース部品を組み合わせてエミュレータを生成するエミュレーション装置であって、
エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得する取得手段と、
前記取得手段によって取得された集計結果に応じて複数のソース部品を並べ替えて合成する合成手段と、
前記合成手段によって複数のソース部品が合成されて得られたソースをコンパイルするコンパイル手段と
を有することを特徴とするエミュレーション装置。
【請求項２】
前記取得手段は、
エミュレータを実行する実行手段と、
前記実行手段によってエミュレータが実行される際にソース部品に対応する処理の実行時刻を記録する記録手段と、
前記記録手段によって記録された実行時刻をあらかじめ規定された時間帯ごとに集計する集計手段と
を含むことを特徴とする請求項１記載のエミュレーション装置。
【請求項３】
前記合成手段は、
それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えることを特徴とする請求項１記載のエミュレーション装置。
【請求項４】
前記合成手段は、
複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を保持し、並べ替え可能なソース部品のみを前記取得手段によって取得された集計結果に応じて並べ替えることを特徴とする請求項１記載のエミュレーション装置。
【請求項５】
複数のエミュレータのうち少なくともいずれか１つのエミュレータを実行するエミュレーション装置であって、
エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータを記憶する記憶手段と、
所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて前記記憶手段に記憶された複数のエミュレータから１つのエミュレータを選択する選択手段と、
前記選択手段によって選択されたエミュレータをエミュレータ実行時刻に実行する実行手段と
を有することを特徴とするエミュレーション装置。
【請求項６】
前記選択手段は、
所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択することを特徴とする請求項５記載のエミュレーション装置。
【請求項７】
前記選択手段は、
複数のエミュレータが最適化された時間帯のうち現在時刻以降であって現在時刻に最も近い時間帯の開始時刻を、実行するエミュレータを切り替える切替時刻に設定することを特徴とする請求項５記載のエミュレーション装置。
【請求項８】
個々の処理が記述されたソース部品を組み合わせてエミュレータを生成するエミュレータ生成方法であって、
エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得する取得工程と、
前記取得工程にて取得された集計結果に応じて複数のソース部品を並べ替えて合成する合成工程と、
前記合成工程にて複数のソース部品が合成されて得られたソースをコンパイルするコンパイル工程と
を有することを特徴とするエミュレータ生成方法。
【請求項９】
前記取得工程は、
エミュレータを実行する実行工程と、
前記実行工程にてエミュレータが実行される際にソース部品に対応する処理の実行時刻を記録する記録工程と、
前記記録工程にて記録された実行時刻をあらかじめ規定された時間帯ごとに集計する集計工程と
を含むことを特徴とする請求項８記載のエミュレータ生成方法。
【請求項１０】
前記合成工程は、
それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えることを特徴とする請求項８記載のエミュレータ生成方法。
【請求項１１】
前記合成工程は、
複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を参照し、並べ替え可能なソース部品のみを前記取得工程にて取得された集計結果に応じて並べ替えることを特徴とする請求項８記載のエミュレータ生成方法。
【請求項１２】
複数のエミュレータのうち少なくともいずれか１つのエミュレータを実行するエミュレータ実行方法であって、
エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータから、所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて１つのエミュレータを選択する選択工程と、
前記選択工程にて選択されたエミュレータをエミュレータ実行時刻に実行する実行工程と
を有することを特徴とするエミュレータ実行方法。
【請求項１３】
前記選択工程は、
所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択することを特徴とする請求項１２記載のエミュレータ実行方法。
【請求項１４】
前記選択工程は、
複数のエミュレータが最適化された時間帯のうち現在時刻以降であって現在時刻に最も近い時間帯の開始時刻を、実行するエミュレータを切り替える切替時刻に設定することを特徴とする請求項１２記載のエミュレータ実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレーション装置、エミュレータ生成方法、およびエミュレータ実行方法に関し、特に、使用環境が変化してもエミュレータの処理性能を確実に改善することができるエミュレーション装置、エミュレータ生成方法、およびエミュレータ実行方法に関する。
【背景技術】
【０００２】
従来、例えばＣＰＵ（Central  Processing  Unit）などのハードウェアと同様の処理を実行するソフトウェアとしてエミュレータがある。エミュレータは、ハードウェアの処理が記述されたプログラムであり、ハードウェアが実行する膨大な処理を再現する。このため、エミュレータには、処理速度の向上などが強く求められており、性能改善のための多くの検討がなされている。【０００３】
例えば特許文献１においては、エミュレータにおける命令使用頻度を測定し、命令使用頻度を用いてエミュレータの調整を行うことが記載されている。一般に、エミュレータでは、エミュレートする命令がどのような命令であるか判定する処理（「命令フェッチ」と呼ばれる）が多く繰り返される。このため、特許文献１に記載されたように命令使用頻度を測定することにより、使用頻度が高い命令から順に命令フェッチが行われるようにして、エミュレータの性能改善を図ることができる。【０００４】
すなわち、例えば命令Ａの頻度が全体の１０％、命令Ｂの頻度が全体の５０％、および命令Ｃの頻度が全体の２０％であるエミュレータの場合、最初に命令Ｂに対する命令フェッチを実行すれば、全体の５０％に関して判定が完了する。続いて、命令Ｃに対する命令フェッチを実行すれば、全体の７０（＝５０＋２０）％に関して判定が完了する。【０００５】
このように、命令使用頻度が高い順に命令フェッチを実行することにより、エミュレータにおける判定の回数が減少し、処理速度が向上すると考えられる。したがって、例えばシミュレーションにより命令使用頻度をあらかじめ測定しておき、統計的に使用頻度が高い命令から順に命令フェッチをするようにエミュレータを調整することにより、エミュレータの処理性能が改善される。【０００６】
【特許文献１】特開平２−２５０１２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のようにシミュレーションにより命令使用頻度を測定する場合には、エミュレータの処理性能改善に一定の限界があるという問題がある。すなわち、エミュレータは、例えばＣＰＵなどのハードウェアの処理を実行するため、使用される環境によって命令使用頻度はまったく異なる。つまり、シミュレーションによってエミュレータを調整しても、このエミュレータが実際に使用される環境では、エミュレータの調整が最適ではないことがある。【０００８】
また、エミュレータが使用される環境は、常に一定であるわけではなく、例えば時間帯や曜日などによって大きく変化することが考えられる。したがって、シミュレーションによりエミュレータを調整してしまうと、使用環境の時間的な変化に対して追従することがなく、時間帯によっては処理速度の低下などの性能劣化が発生することがある。【０００９】
本発明はかかる点に鑑みてなされたものであり、使用環境が変化してもエミュレータの処理性能を確実に改善することができるエミュレーション装置、エミュレータ生成方法、およびエミュレータ実行方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明は、個々の処理が記述されたソース部品を組み合わせてエミュレータを生成するエミュレーション装置であって、エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得する取得手段と、前記取得手段によって取得された集計結果に応じて複数のソース部品を並べ替えて合成する合成手段と、前記合成手段によって複数のソース部品が合成されて得られたソースをコンパイルするコンパイル手段とを有することを特徴とする。【００１１】
また、本発明は、上記発明において、前記取得手段は、エミュレータを実行する実行手段と、前記実行手段によってエミュレータが実行される際にソース部品に対応する処理の実行時刻を記録する記録手段と、前記記録手段によって記録された実行時刻をあらかじめ規定された時間帯ごとに集計する集計手段とを含むことを特徴とする。【００１２】
また、本発明は、上記発明において、前記合成手段は、それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えることを特徴とする。【００１３】
また、本発明は、上記発明において、前記合成手段は、複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を保持し、並べ替え可能なソース部品のみを前記取得手段によって取得された集計結果に応じて並べ替えることを特徴とする。【００１４】
また、本発明は、複数のエミュレータのうち少なくともいずれか１つのエミュレータを実行するエミュレーション装置であって、エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータを記憶する記憶手段と、所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて前記記憶手段に記憶された複数のエミュレータから１つのエミュレータを選択する選択手段と、前記選択手段によって選択されたエミュレータをエミュレータ実行時刻に実行する実行手段とを有することを特徴とする。【００１５】
また、本発明は、上記発明において、前記選択手段は、所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択することを特徴とする。【００１６】
また、本発明は、上記発明において、前記選択手段は、複数のエミュレータが最適化された時間帯のうち現在時刻以降であって現在時刻に最も近い時間帯の開始時刻を、実行するエミュレータを切り替える切替時刻に設定することを特徴とする。【００１７】
また、本発明は、個々の処理が記述されたソース部品を組み合わせてエミュレータを生成するエミュレータ生成方法であって、エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得する取得工程と、前記取得工程にて取得された集計結果に応じて複数のソース部品を並べ替えて合成する合成工程と、前記合成工程にて複数のソース部品が合成されて得られたソースをコンパイルするコンパイル工程とを有することを特徴とする。【００１８】
また、本発明は、上記発明において、前記取得工程は、エミュレータを実行する実行工程と、前記実行工程にてエミュレータが実行される際にソース部品に対応する処理の実行時刻を記録する記録工程と、前記記録工程にて記録された実行時刻をあらかじめ規定された時間帯ごとに集計する集計工程とを含むことを特徴とする。【００１９】
また、本発明は、上記発明において、前記合成工程は、それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えることを特徴とする。【００２０】
また、本発明は、上記発明において、前記合成工程は、複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を参照し、並べ替え可能なソース部品のみを前記取得工程にて取得された集計結果に応じて並べ替えることを特徴とする。【００２１】
また、本発明は、複数のエミュレータのうち少なくともいずれか１つのエミュレータを実行するエミュレータ実行方法であって、エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータから、所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて１つのエミュレータを選択する選択工程と、前記選択工程にて選択されたエミュレータをエミュレータ実行時刻に実行する実行工程とを有することを特徴とする。【００２２】
また、本発明は、上記発明において、前記選択工程は、所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択することを特徴とする。【００２３】
また、本発明は、上記発明において、前記選択工程は、複数のエミュレータが最適化された時間帯のうち現在時刻以降であって現在時刻に最も近い時間帯の開始時刻を、実行するエミュレータを切り替える切替時刻に設定することを特徴とする。
【発明の効果】
【００２４】
本発明によれば、エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得し、取得された集計結果に応じて複数のソース部品を並べ替えて合成し、複数のソース部品が合成されて得られたソースをコンパイルする。このため、時間帯ごとに最適な順序で処理を実行する複数のエミュレータが生成され、時間帯によってエミュレータを使い分けることで処理速度の向上を図ることができ、使用環境が変化してもエミュレータの処理性能を確実に改善することができる。【００２５】
また、本発明によれば、エミュレータを実行し、エミュレータが実行される際にソース部品に対応する処理の実行時刻を記録し、記録された実行時刻をあらかじめ規定された時間帯ごとに集計する。このため、実際にエミュレータが使用される際の処理の頻度に即した最適なエミュレータを生成することができる。【００２６】
また、本発明によれば、それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えるため、例えば命令フェッチなどの処理が早急に完了し、確実にエミュレータの処理速度を向上することができる。【００２７】
また、本発明によれば、複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を保持し、並べ替え可能なソース部品のみを集計結果に応じて並べ替える。このため、ソース部品に対応する処理内容によって並べ替えの有無を規定しておくことができ、順序を固定する処理と順序を並べ替える処理とが混在したソースを合成することができる。【００２８】
また、本発明によれば、エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータを記憶し、所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて複数のエミュレータから１つのエミュレータを選択し、選択されたエミュレータをエミュレータ実行時刻に実行する。このため、実行時刻に応じたエミュレータを選択して実行することができ、使用環境が変化してもエミュレータの処理性能を確実に改善することができる。【００２９】
また、本発明によれば、所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択するため、実行時刻に応じた最適なエミュレータを確実に選択することができる。【００３０】
また、本発明によれば、複数のエミュレータが最適化された時間帯のうち現在時刻以降であって現在時刻に最も近い時間帯の開始時刻を、実行するエミュレータを切り替える切替時刻に設定する。このため、最適なエミュレータが異なる時間帯になると実行されるエミュレータが切り替えられ、常に最適なエミュレータを選択することができる。
【図面の簡単な説明】
【００３１】
【図１】図１は、本発明の一実施の形態に係るエミュレーション装置の要部構成を示すブロック図である。
【図２】図２は、一実施の形態に係るポリシーの例を示す図である。
【図３】図３は、一実施の形態に係るソース部品の例を示す図である。
【図４】図４は、一実施の形態に係る合成ルールの例を示す図である。
【図５】図５は、一実施の形態に係るエミュレーション装置の動作概要を示すフロー図である。
【図６】図６は、一実施の形態に係る実行処理記録の動作を示すフロー図である。
【図７】図７は、一実施の形態に係る処理データの例を示す図である。
【図８】図８は、一実施の形態に係る集計データ作成の動作を示すフロー図である。
【図９】図９は、一実施の形態に係る集計データの例を示す図である。
【図１０】図１０は、一実施の形態に係るソース合成の動作を示すフロー図である。
【図１１】図１１は、一実施の形態に係るコンパイルの動作を示すフロー図である。
【図１２】図１２は、一実施の形態に係るエミュレータ実行の動作を示すフロー図である。
【図１３】図１３は、本発明の他の実施の形態に係るシステム構成を示すブロック図である。
【符号の説明】
【００３２】
１００  エミュレーション装置
１０１  エミュレータ実行部
１０２  実行処理記録部
１０３  ポリシー記憶部
１０４  集計部
１０５  ソース部品記憶部
１０６  ソース合成部
１０７  コンパイラ部
１０８  エミュレータ記憶部
１０９  エミュレータ選択部
２００  実行装置
３００  生成装置
【発明を実施するための最良の形態】
【００３３】
本発明の骨子は、エミュレータが実行される使用環境のポリシーごとに命令の実行処理回数を記録しておき、記録された実行処理回数に最適なソース部品の組み換えをしてポリシーごとのエミュレータを生成し、ポリシーに応じてエミュレータを使い分けることである。以下、本発明の一実施の形態について、図面を参照して詳細に説明する。【００３４】
図１は、本発明の一実施の形態に係るエミュレーション装置１００の要部構成を示すブロック図である。同図に示すエミュレーション装置１００は、エミュレータ実行部１０１、実行処理記録部１０２、ポリシー記憶部１０３、集計部１０４、ソース部品記憶部１０５、ソース合成部１０６、コンパイラ部１０７、エミュレータ記憶部１０８、およびエミュレータ選択部１０９を有している。【００３５】
エミュレータ実行部１０１は、エミュレータ選択部１０９によってポリシーに応じて選択されたエミュレータを実行する。具体的には、エミュレータ実行部１０１は、エミュレータに記述された命令を順に実行し、エミュレータがエミュレートするＣＰＵなどと同様の処理を行う。【００３６】
実行処理記録部１０２は、エミュレータ実行部１０１において実行された処理と実行された時刻とを記録する。具体的には、実行処理記録部１０２は、エミュレータを構成する１つ１つの処理であるソース部品ごとの実行時に、実行されたソース部品と実行された時刻とを記録する。【００３７】
ポリシー記憶部１０３は、エミュレータが実行される複数の使用環境のポリシーを記憶する。すなわち、ポリシー記憶部１０３は、エミュレータが実行される環境が異なる時間帯をそれぞれ記憶する。具体的には、ポリシー記憶部１０３は、例えば図２に示すように、エミュレータの使用環境が変化する時間帯を優先順に定義している。図２においては、ポリシー１は、毎月２６日を定義しており、ポリシー２は、土曜日と日曜日を定義している。また、ポリシー３は、毎日９時から１７時３０分を定義しており、ポリシー４は、毎日１７時３０分から翌９時を定義している。これらのポリシーは優先順であるため、例えばある月の２６日が土曜日である場合は、この日はポリシー１に該当することになる。また、ポリシー２がポリシー３、４より優先されるため、ポリシー３、４は、それぞれ平日の時間帯を定義していることになる。【００３８】
集計部１０４は、ポリシー記憶部１０３からポリシーを読み出し、ポリシーごとに実行処理の回数を集計する。すなわち、集計部１０４は、実行処理記録部１０２において記録されたソース部品ごとの実行時刻から、それぞれのポリシーの時間帯に含まれるソース部品の種別を集計する。【００３９】
ソース部品記憶部１０５は、エミュレータを構成する１つ１つの処理であるソース部品を記憶する。ソース部品記憶部１０５が記憶するソース部品の中には、エミュレートする命令がどのような命令であるか判定する処理（命令フェッチ）も含まれている。すなわち、ソース部品記憶部１０５が記憶するソース部品は、例えば図３に示すように、プログラムを分割可能な位置で分割して得られるものである。【００４０】
ソース合成部１０６は、エミュレータのひとまとまりの処理であるソースの合成ルールを記憶しており、合成ルールに従って複数のソース部品を合成し、エミュレータのソースを得る。具体的には、ソース合成部１０６は、例えば図４に示すような合成ルールを記憶しており、例えばソース１を合成するには、ソース部品１〜７を用いる。【００４１】
そして、ソース合成部１０６は、部品種別が「固定」であるソース部品については、あらかじめ定められた位置に配置し、部品種別が「組み換え」であるソース部品については、集計部１０４における集計結果に基づいてポリシーごとに組み替える。すなわち、ソース合成部１０６は、部品種別が「組み換え」であるソース部品を、それぞれのポリシーにおいて処理回数が多い順に並べて配置する。また、ソース合成部１０６は、各ソース部品の間に、挿入ソース部品を挿入する。【００４２】
このようにして、ソース合成部１０６は、それぞれのポリシーにおいて最適な順序でソース部品が並べられたソースを合成し、ポリシーごとのエミュレータに必要なソース一式を得る。【００４３】
コンパイラ部１０７は、ソース合成部１０６によって得られたポリシーごとのソース一式をコンパイルし、ポリシーごとのエミュレータを生成する。すなわち、コンパイラ部１０７は、ポリシー記憶部１０３において定義されたポリシーの数を参照し、それぞれのポリシーに対応するソース一式をコンパイルして、ポリシーごとのエミュレータを生成する。【００４４】
エミュレータ記憶部１０８は、コンパイラ部１０７によって生成されたポリシーごとのエミュレータを記憶する。【００４５】
エミュレータ選択部１０９は、エミュレータの開始指示があった場合に、現在時刻がポリシー記憶部１０３に定義されたどのポリシーに含まれるか判断し、該当するポリシーに対応するエミュレータをエミュレータ記憶部１０８から読み出してエミュレータ実行部１０１に実行させる。また、エミュレータ選択部１０９は、現在時刻以降の最も近いポリシーの開始日時を参照し、この時刻にエミュレータを切り替えるように設定しておく。【００４６】
次いで、上記のように構成されたエミュレーション装置１００の動作について、具体的に例を挙げながら説明する。【００４７】
図５は、本実施の形態に係るエミュレーション装置１００の動作の概要を示すフロー図である。同図に示すように、まず、エミュレータ実行部１０１によってエミュレータが実行されると、実行処理記録部１０２によって、個々のソース部品に対応する処理ごとに実行された時刻が記録される（ステップＳ１０１）。こうして記録された時刻は、集計部１０４によって、ポリシーごとに集計される（ステップＳ１０２）。【００４８】
そして、ソース合成部１０６によって、合成ルールに従ったソースの合成が行われる（ステップＳ１０３）。このとき、順序を組み替え可能なソース部品については、集計部１０４における集計結果に基づいて、ポリシーごとに頻度が高い順でソース部品が並べられてソース合成が行われる。ソース合成部１０６によってポリシーごとのソース一式が得られると、コンパイラ部１０７によってポリシーごとのソース一式がコンパイルされる（ステップＳ１０４）。これにより、ポリシーごとのエミュレータが生成され、エミュレータ記憶部１０８に記憶される。【００４９】
エミュレータの実行時には、エミュレータ選択部１０９によって、現在時刻がどのポリシーに該当するか判断され、ポリシーに対応するエミュレータがエミュレータ記憶部１０８から選択される。そして、選択されたエミュレータがエミュレータ実行部１０１によって実行される（ステップＳ１０５）。【００５０】
図６は、ステップＳ１０１の実行処理記録の動作を具体的に示すフロー図である。このフローは、主に実行処理記録部１０２によって処理される。【００５１】
すなわち、実行処理記録部１０２によって、エミュレータ実行部１０１においてエミュレータの命令が実行されているか否かが監視され（ステップＳ２０１）、命令が実行されると（ステップＳ２０１Ｙｅｓ）、実行された命令に相当するソース部品と実行された時刻とが記録される（ステップＳ２０２）。この結果、エミュレータ実行部１０１においてエミュレータが実行されると、例えば図７に示すように、各ソース部品の処理がいつ実行されたかがすべて記録される。図７における個々の処理データは、命令が実行された時刻と命令の内容に対応するソース部品とから構成されている。【００５２】
図８は、ステップＳ１０２の集計データ作成の動作を具体的に示すフロー図である。このフローは、主に集計部１０４によって処理される。【００５３】
すなわち、まず、集計部１０４によって、ポリシー記憶部１０３に定義されたポリシーが１つ読み出され（ステップＳ３０１）、実行処理記録部１０２に記録された処理データが１つ読み出される（ステップＳ３０２）。そして、集計部１０４によって、処理データの時刻がポリシーとして定義された時間帯に含まれるか否かが判定され（ステップＳ３０３）、含まれる場合には（ステップＳ３０３Ｙｅｓ）、この処理データのソース部品に対応するカウンタがカウントアップされる（ステップＳ３０４）。【００５４】
また、処理データの時刻がポリシーに含まれない場合や（ステップＳ３０３Ｎｏ）、カウントアップが行われた後は、集計部１０４によって、実行処理記録部１０２に記録されたすべての処理データに対して上記の判定が完了したか否かが判断される（ステップＳ３０５）。この判断の結果、実行処理記録部１０２に処理データが残っている場合は（ステップＳ３０５Ｎｏ）、再び処理データが読み出され、上記の判定が行われる。【００５５】
一方、実行処理記録部１０２の処理データすべてに対する判定が完了すると（ステップＳ３０５Ｙｅｓ）、現在ポリシー記憶部１０３から読み出されているポリシーに対応する集計データが集計部１０４に登録される（ステップＳ３０６）。すなわち、ポリシーに定義された時間帯にエミュレータが実行された場合の、ソース部品ごとの処理の頻度が集計部１０４に記憶される。そして、集計部１０４によって、ポリシー記憶部１０３に記憶されたすべてのポリシーに対する集計が完了したか否かが判断される（ステップＳ３０７）。この判断の結果、未集計のポリシーが残っている場合は（ステップＳ３０７Ｎｏ）、再びポリシーが読み出され、上記の処理が行われる。【００５６】
また、すべてのポリシーに対する処理が完了すると（ステップＳ３０７Ｙｅｓ）、ポリシーごとにソース部品に相当する処理が実行された回数の集計結果が得られたことになる。この集計結果は、例えば図９に示すようなものとなる。図９において、例えばポリシー１の時間帯には、ソース部品１に相当する処理が１００回実行され、ソース部品２に相当する処理が２０回実行され、ソース部品４に相当する処理が５回実行されたことがわかる。ポリシーは、あらかじめエミュレータの使用環境の変化に応じて定義されているため、それぞれのポリシーにおける処理の頻度の特徴は異なっていることになる。【００５７】
図１０は、ステップＳ１０３のソース合成の動作を具体的に示すフロー図である。このフローは、主にソース合成部１０６によって処理される。【００５８】
すなわち、まず、ソース合成部１０６によって、ソース一式を生成する対象のポリシーがポリシー記憶部１０３に定義された複数のポリシーから選択される（ステップＳ４０１）。そして、ソース合成部１０６によって、合成ルールの１つが読み出され（ステップＳ４０２）、この合成ルールによって合成方法が規定されるソース部品がソース部品記憶部１０５から取得される。１つの合成ルールでは、１つまたは複数のソース部品の合成方法が規定されている。また、合成ルールが参照され、ソース部品記憶部１０５から取得されたソース部品の部品種別が順序の並べ替え可能な「組み換え」であるか否かが判断される（ステップＳ４０３）。【００５９】
この判断の結果、ソース部品の順序の並べ替えが可能であれば、ソース合成部１０６によって、集計部１０４における集計結果が参照され、現在対象となっているポリシーにおいて処理が実行された頻度が高い順にソース部品が並べ替えられる（ステップＳ４０４）。具体的には、例えば図９に示す集計結果が得られているときに、ポリシー１をソース合成の対象とし、ソース部品２〜４の部品種別が「組み換え」であるとすれば、ソース部品２〜４は、ソース合成部１０６によって、ソース部品２、ソース部品４、ソース部品３の順に並べ替えられる。同様に、ポリシー２をソース合成の対象とした場合は、ソース合成部１０６によって、ソース部品４、ソース部品３、ソース部品２の順に並べ替えられる。【００６０】
このように、ソース合成時に並べ替え可能なソース部品の順序を、実際のポリシーごとの処理実行時における頻度に応じて決定するため、ポリシーで定義された時間帯ごとに最適な順序で処理を実行するソースが合成され、エミュレータの処理速度の向上を図ることができる。【００６１】
こうして１つの合成ルールによって合成方法が規定されたソース部品の取得・並べ替えが完了すると、このソース断片が既に取得・並べ替えが完了している既存のソース断片と結合される（ステップＳ４０５）。既存のソース断片は、既に読み出された他の合成ルールに従ってソース部品が取得・並べ替えされたものである。そして、ソース断片は、合成ルールにおいて、同一のソースを構成するように規定されているもの同士が結合される。すなわち、例えば図４に示した合成ルールにおいては、ソース１に対応する３つのソース断片が互いに結合される。これらのソース断片は、それぞれソース部品１、ソース部品２〜５、およびソース部品６、７から構成されている。【００６２】
ソース断片同士の結合後、ソース合成部１０６によって、すべての合成ルールに関する処理が完了したか否かが判断される（ステップＳ４０６）。この判断の結果、ソース部品の取得や並べ替えが行われていない合成ルールが残っている場合は（ステップＳ４０６Ｎｏ）、再び合成ルールが読み出され、上記の処理が行われる。【００６３】
一方、すべての合成ルールに関する処理が完了すると（ステップＳ４０６Ｙｅｓ）、現在対象となっているポリシーに対応するソース一式がソース合成部１０６に登録される（ステップＳ４０７）。すなわち、ポリシーごとにソース部品を最適な順序で結合して得られたソース一式がポリシーに対応付けられてソース合成部１０６に記憶される。そして、ソース合成部１０６によって、ポリシー記憶部１０３に記憶されたすべてのポリシーに対応するソース一式が得られたか否かが判断される（ステップＳ４０８）。この判断の結果、ソース一式が未登録のポリシーが残っている場合は（ステップＳ４０８Ｎｏ）、再び対象ポリシーが選択され、上記の処理が行われる。【００６４】
また、すべてのポリシーに対応するソース一式が得られると（ステップＳ４０８Ｙｅｓ）、ポリシーごとのエミュレータに対応するソース一式が得られたことになる。このソース一式においては、ポリシーごとにソース部品の順序が最適化され、各ポリシーにおいて実際に実行頻度が高い順にソース部品が並べられている。【００６５】
図１１は、ステップＳ１０４のコンパイルの動作を具体的に示すフロー図である。このフローは、主にコンパイラ部１０７によって処理される。【００６６】
すなわち、まず、コンパイラ部１０７によって、コンパイルしてエミュレータを生成する対象のポリシーがポリシー記憶部１０３に定義された複数のポリシーから選択される（ステップＳ５０１）。そして、コンパイラ部１０７によって、選択されたポリシーに対応するソース一式がソース合成部１０６から取得され、コンパイルされる（ステップＳ５０２）。【００６７】
コンパイラ部１０７によってソース一式がコンパイルされることにより、対象となっているポリシーに対応するエミュレータが生成され、このエミュレータがエミュレータ記憶部１０８にポリシーに対応付けて記憶される（ステップＳ５０３）。そして、コンパイラ部１０７によって、ポリシー記憶部１０３に記憶されたすべてのポリシーに対応するエミュレータが生成されたか否かが判断される（ステップＳ５０４）。この判断の結果、エミュレータが未生成のポリシーが残っている場合は（ステップＳ５０４Ｎｏ）、再び対象ポリシーが選択され、上記の処理が行われる。【００６８】
また、すべてのポリシーに対応するエミュレータが生成された場合は（ステップＳ５０４Ｙｅｓ）、ポリシーごとに最適化されたエミュレータがすべてエミュレータ記憶部１０８に記憶されたことになる。【００６９】
図１２は、ステップＳ１０５のエミュレータ実行の動作を具体的に示すフロー図である。このフローは、主にエミュレータ選択部１０９およびエミュレータ実行部１０１によって処理される。【００７０】
すなわち、まず、エミュレータ選択部１０９によって、外部からエミュレータの実行を開始する指示が待機される（ステップＳ６０１）。エミュレータ開始指示があると（ステップＳ６０１Ｙｅｓ）、エミュレータ選択部１０９によって、ポリシー記憶部１０３に定義されたポリシーが優先順位が高い順に１つ読み出され（ステップＳ６０２）、現在時刻が読み出されたポリシーに定義された時間帯に該当するか否かが判定される（ステップＳ６０３）。【００７１】
現在時刻がポリシーに含まれる場合（ステップＳ６０３Ｙｅｓ）、エミュレータ選択部１０９によってポリシーに対応するエミュレータがエミュレータ記憶部１０８から選択され（ステップＳ６０４）、選択されたエミュレータがエミュレータ実行部１０１によって実行される。また、現在時刻がポリシーに含まれない場合（ステップＳ６０３Ｎｏ）、エミュレータ選択部１０９によって、ポリシー記憶部１０３に記憶されたすべてのポリシーについて現在時刻との比較が行われたか否かが判断される（ステップＳ６０５）。この判断の結果、現在時刻と未比較のポリシーが残っている場合は（ステップＳ６０５Ｎｏ）、再びポリシーが読み出され、上記と同様に現在時刻との比較が行われる。【００７２】
また、すべてのポリシーと現在時刻との比較が完了した場合や（ステップＳ６０５Ｙｅｓ）、ポリシーに対応するエミュレータが選択されて実行された場合には、以後のエミュレータの切り替えに関する設定が行われる。すなわち、エミュレータ選択部１０９によって、ポリシーに定義された時間帯が現在時刻以降であって、現在時刻に最も近いポリシーが選択される（ステップＳ６０６）。ここで選択されるポリシーは、エミュレータの実行を継続する際、実行するエミュレータを切り替えるべき時間を示している。換言すれば、ポリシーによって定義された時間帯の開始時刻になると、エミュレータ実行部１０１において実行されるエミュレータをポリシーに対応するものに切り替える必要がある。【００７３】
そこで、エミュレータ選択部１０９によって、選択されたポリシーの開始時刻がエミュレータ切替時間として設定される（ステップＳ６０７）。これにより、設定されたエミュレータ切替時間となると、エミュレータ選択部１０９によって、ポリシーに対応するエミュレータがエミュレータ記憶部１０８から選択され、エミュレータ実行部１０１によって実行されるエミュレータが切り替わる。【００７４】
このように、本実施の形態においては、ポリシーによって定義された時間帯ごとに実行するエミュレータを切り替え、使用環境に応じて生成された複数のエミュレータのうち現在時刻に最も適したエミュレータが実行されるようにする。このため、使用環境が変化してもエミュレータの処理性能を確実に改善することができる。【００７５】
以上のように、本実施の形態によれば、使用環境が異なるポリシーごとにエミュレータの個々の処理の頻度を集計し、集計結果に応じて各処理に対応するソース部品を並べ替え、ポリシーごとのソースをコンパイルしてポリシーごとのエミュレータを生成する。そして、エミュレータ実行の際には、生成された複数のエミュレータのうち現在時刻を含むポリシーに対応するエミュレータを選択して実行する。このため、実際の使用環境における処理の頻度の違いに即した最適なエミュレータを生成することができるとともに、実行時刻に応じたエミュレータを選択して実行することができ、使用環境が変化してもエミュレータの処理性能を確実に改善することができる。【００７６】
なお、上記一実施の形態においては、エミュレータの生成および実行が１つのエミュレーション装置１００において行われるものとしたが、エミュレータの生成および実行を別の装置において行うことも可能である。すなわち、図１３に示すように、実行装置２００および生成装置３００を分離し、実行装置２００におけるエミュレータの実行時にソース部品ごとの処理頻度を集計し、集計結果や定義されたポリシーを用いて、生成装置３００においてポリシーごとのエミュレータを生成する。なお、図１３において、各処理ブロックは図１に示す処理ブロックと同様であり、その説明を省略する。【００７７】
図１３に示すように実行装置２００と生成装置３００を分離することで、エミュレータを実行する客先には実行装置２００を設置し、エミュレータを開発する開発元には生成装置３００を設置することが可能となる。したがって、エミュレータの開発元は、ソース部品などを他者に公開することなく、必要な情報を客先から取得してポリシーごとのエミュレータを生成することができる。
【産業上の利用可能性】
【００７８】
本発明は、使用環境が変化してもエミュレータの処理性能を確実に改善する場合に適用することができる。
【図１】
2008117473.tif 000003
【図２】
2008117473.tif 000004
【図３】
2008117473.tif 000005
【図４】
2008117473.tif 000006
【図５】
2008117473.tif 000007
【図６】
2008117473.tif 000008
【図７】
2008117473.tif 000009
【図８】
2008117473.tif 000010
【図９】
2008117473.tif 000011
【図１０】
2008117473.tif 000012
【図１１】
2008117473.tif 000013
【図１２】
2008117473.tif 000014
【図１３】
2008117473.tif 000015
【手続補正書】
【提出日】平成21年5月15日(2009.5.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
個々の処理が記述されたソース部品を組み合わせてエミュレータを生成するエミュレーション装置であって、
エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得する取得手段と、
前記取得手段によって取得された集計結果に応じて複数のソース部品を並べ替えて合成する合成手段と、
前記合成手段によって複数のソース部品が合成されて得られたソースをコンパイルするコンパイル手段と
を有することを特徴とするエミュレーション装置。
【請求項２】
複数のエミュレータのうち少なくともいずれか１つのエミュレータを実行するエミュレーション装置であって、
エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータを記憶する記憶手段と、
所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて前記記憶手段に記憶された複数のエミュレータから１つのエミュレータを選択する選択手段と、
前記選択手段によって選択されたエミュレータをエミュレータ実行時刻に実行する実行手段と
を有することを特徴とするエミュレーション装置。
【請求項３】
個々の処理が記述されたソース部品を組み合わせてエミュレータを生成するエミュレータ生成方法であって、
エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得する取得工程と、
前記取得工程にて取得された集計結果に応じて複数のソース部品を並べ替えて合成する合成工程と、
前記合成工程にて複数のソース部品が合成されて得られたソースをコンパイルするコンパイル工程と
を有することを特徴とするエミュレータ生成方法。
【請求項４】
前記取得工程は、
エミュレータを実行する実行工程と、
前記実行工程にてエミュレータが実行される際にソース部品に対応する処理の実行時刻を記録する記録工程と、
前記記録工程にて記録された実行時刻をあらかじめ規定された時間帯ごとに集計する集計工程と
を含むことを特徴とする請求項３記載のエミュレータ生成方法。
【請求項５】
前記合成工程は、
それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えることを特徴とする請求項３記載のエミュレータ生成方法。
【請求項６】
前記合成工程は、
複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を参照し、並べ替え可能なソース部品のみを前記取得工程にて取得された集計結果に応じて並べ替えることを特徴とする請求項３記載のエミュレータ生成方法。
【請求項７】
複数のエミュレータのうち少なくともいずれか１つのエミュレータを実行するエミュレータ実行方法であって、
エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータから、所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて１つのエミュレータを選択する選択工程と、
前記選択工程にて選択されたエミュレータをエミュレータ実行時刻に実行する実行工程と
を有することを特徴とするエミュレータ実行方法。
【請求項８】
前記選択工程は、
所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択することを特徴とする請求項７記載のエミュレータ実行方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレーション装置、エミュレータ生成方法、およびエミュレータ実行方法に関し、特に、使用環境が変化してもエミュレータの処理性能を確実に改善することができるエミュレーション装置、エミュレータ生成方法、およびエミュレータ実行方法に関する。
【背景技術】
【０００２】
従来、例えばＣＰＵ（Central  Processing  Unit）などのハードウェアと同様の処理を実行するソフトウェアとしてエミュレータがある。エミュレータは、ハードウェアの処理が記述されたプログラムであり、ハードウェアが実行する膨大な処理を再現する。このため、エミュレータには、処理速度の向上などが強く求められており、性能改善のための多くの検討がなされている。
【０００３】
例えば特許文献１においては、エミュレータにおける命令使用頻度を測定し、命令使用頻度を用いてエミュレータの調整を行うことが記載されている。一般に、エミュレータでは、エミュレートする命令がどのような命令であるか判定する処理（「命令フェッチ」と呼ばれる）が多く繰り返される。このため、特許文献１に記載されたように命令使用頻度を測定することにより、使用頻度が高い命令から順に命令フェッチが行われるようにして、エミュレータの性能改善を図ることができる。
【０００４】
すなわち、例えば命令Ａの頻度が全体の１０％、命令Ｂの頻度が全体の５０％、および命令Ｃの頻度が全体の２０％であるエミュレータの場合、最初に命令Ｂに対する命令フェッチを実行すれば、全体の５０％に関して判定が完了する。続いて、命令Ｃに対する命令フェッチを実行すれば、全体の７０（＝５０＋２０）％に関して判定が完了する。
【０００５】
このように、命令使用頻度が高い順に命令フェッチを実行することにより、エミュレータにおける判定の回数が減少し、処理速度が向上すると考えられる。したがって、例えばシミュレーションにより命令使用頻度をあらかじめ測定しておき、統計的に使用頻度が高い命令から順に命令フェッチをするようにエミュレータを調整することにより、エミュレータの処理性能が改善される。
【０００６】
【特許文献１】特開平２−２５０１２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のようにシミュレーションにより命令使用頻度を測定する場合には、エミュレータの処理性能改善に一定の限界があるという問題がある。すなわち、エミュレータは、例えばＣＰＵなどのハードウェアの処理を実行するため、使用される環境によって命令使用頻度はまったく異なる。つまり、シミュレーションによってエミュレータを調整しても、このエミュレータが実際に使用される環境では、エミュレータの調整が最適ではないことがある。
【０００８】
また、エミュレータが使用される環境は、常に一定であるわけではなく、例えば時間帯や曜日などによって大きく変化することが考えられる。したがって、シミュレーションによりエミュレータを調整してしまうと、使用環境の時間的な変化に対して追従することがなく、時間帯によっては処理速度の低下などの性能劣化が発生することがある。
【０００９】
本発明はかかる点に鑑みてなされたものであり、使用環境が変化してもエミュレータの処理性能を確実に改善することができるエミュレーション装置、エミュレータ生成方法、およびエミュレータ実行方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明は、個々の処理が記述されたソース部品を組み合わせてエミュレータを生成するエミュレーション装置であって、エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得する取得手段と、前記取得手段によって取得された集計結果に応じて複数のソース部品を並べ替えて合成する合成手段と、前記合成手段によって複数のソース部品が合成されて得られたソースをコンパイルするコンパイル手段とを有することを特徴とする。
【００１１】
また、本発明は、上記発明において、前記取得手段は、エミュレータを実行する実行手段と、前記実行手段によってエミュレータが実行される際にソース部品に対応する処理の実行時刻を記録する記録手段と、前記記録手段によって記録された実行時刻をあらかじめ規定された時間帯ごとに集計する集計手段とを含むことを特徴とする。
【００１２】
また、本発明は、上記発明において、前記合成手段は、それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えることを特徴とする。
【００１３】
また、本発明は、上記発明において、前記合成手段は、複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を保持し、並べ替え可能なソース部品のみを前記取得手段によって取得された集計結果に応じて並べ替えることを特徴とする。
【００１４】
また、本発明は、複数のエミュレータのうち少なくともいずれか１つのエミュレータを実行するエミュレーション装置であって、エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータを記憶する記憶手段と、所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて前記記憶手段に記憶された複数のエミュレータから１つのエミュレータを選択する選択手段と、前記選択手段によって選択されたエミュレータをエミュレータ実行時刻に実行する実行手段とを有することを特徴とする。
【００１５】
また、本発明は、上記発明において、前記選択手段は、所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択することを特徴とする。
【００１６】
また、本発明は、上記発明において、前記選択手段は、複数のエミュレータが最適化された時間帯のうち現在時刻以降であって現在時刻に最も近い時間帯の開始時刻を、実行するエミュレータを切り替える切替時刻に設定することを特徴とする。
【００１７】
また、本発明は、個々の処理が記述されたソース部品を組み合わせてエミュレータを生成するエミュレータ生成方法であって、エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得する取得工程と、前記取得工程にて取得された集計結果に応じて複数のソース部品を並べ替えて合成する合成工程と、前記合成工程にて複数のソース部品が合成されて得られたソースをコンパイルするコンパイル工程とを有することを特徴とする。
【００１８】
また、本発明は、上記発明において、前記取得工程は、エミュレータを実行する実行工程と、前記実行工程にてエミュレータが実行される際にソース部品に対応する処理の実行時刻を記録する記録工程と、前記記録工程にて記録された実行時刻をあらかじめ規定された時間帯ごとに集計する集計工程とを含むことを特徴とする。
【００１９】
また、本発明は、上記発明において、前記合成工程は、それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えることを特徴とする。
【００２０】
また、本発明は、上記発明において、前記合成工程は、複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を参照し、並べ替え可能なソース部品のみを前記取得工程にて取得された集計結果に応じて並べ替えることを特徴とする。
【００２１】
また、本発明は、複数のエミュレータのうち少なくともいずれか１つのエミュレータを実行するエミュレータ実行方法であって、エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータから、所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて１つのエミュレータを選択する選択工程と、前記選択工程にて選択されたエミュレータをエミュレータ実行時刻に実行する実行工程とを有することを特徴とする。
【００２２】
また、本発明は、上記発明において、前記選択工程は、所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択することを特徴とする。
【００２３】
また、本発明は、上記発明において、前記選択工程は、複数のエミュレータが最適化された時間帯のうち現在時刻以降であって現在時刻に最も近い時間帯の開始時刻を、実行するエミュレータを切り替える切替時刻に設定することを特徴とする。
【発明の効果】
【００２４】
本発明によれば、エミュレータの使用環境が異なる時間帯ごとにエミュレータによって実行される処理の頻度の集計結果を取得し、取得された集計結果に応じて複数のソース部品を並べ替えて合成し、複数のソース部品が合成されて得られたソースをコンパイルする。このため、時間帯ごとに最適な順序で処理を実行する複数のエミュレータが生成され、時間帯によってエミュレータを使い分けることで処理速度の向上を図ることができ、使用環境が変化してもエミュレータの処理性能を確実に改善することができる。
【００２５】
また、本発明によれば、エミュレータを実行し、エミュレータが実行される際にソース部品に対応する処理の実行時刻を記録し、記録された実行時刻をあらかじめ規定された時間帯ごとに集計する。このため、実際にエミュレータが使用される際の処理の頻度に即した最適なエミュレータを生成することができる。
【００２６】
また、本発明によれば、それぞれの時間帯において頻度が高い順序で処理に対応するソース部品を並べ替えるため、例えば命令フェッチなどの処理が早急に完了し、確実にエミュレータの処理速度を向上することができる。
【００２７】
また、本発明によれば、複数のソース部品それぞれについて順序の並べ替え可能なソース部品であるか否かの部品種別を保持し、並べ替え可能なソース部品のみを集計結果に応じて並べ替える。このため、ソース部品に対応する処理内容によって並べ替えの有無を規定しておくことができ、順序を固定する処理と順序を並べ替える処理とが混在したソースを合成することができる。
【００２８】
また、本発明によれば、エミュレータの使用環境が異なる時間帯ごとに最適化されて生成された複数のエミュレータを記憶し、所望のエミュレータ実行時刻とエミュレータが最適化された時間帯とに基づいて複数のエミュレータから１つのエミュレータを選択し、選択されたエミュレータをエミュレータ実行時刻に実行する。このため、実行時刻に応じたエミュレータを選択して実行することができ、使用環境が変化してもエミュレータの処理性能を確実に改善することができる。
【００２９】
また、本発明によれば、所望のエミュレータ実行時刻をエミュレータが最適化された時間帯に含むエミュレータを選択するため、実行時刻に応じた最適なエミュレータを確実に選択することができる。
【００３０】
また、本発明によれば、複数のエミュレータが最適化された時間帯のうち現在時刻以降であって現在時刻に最も近い時間帯の開始時刻を、実行するエミュレータを切り替える切替時刻に設定する。このため、最適なエミュレータが異なる時間帯になると実行されるエミュレータが切り替えられ、常に最適なエミュレータを選択することができる。
【発明を実施するための最良の形態】
【００３１】
本発明の骨子は、エミュレータが実行される使用環境のポリシーごとに命令の実行処理回数を記録しておき、記録された実行処理回数に最適なソース部品の組み換えをしてポリシーごとのエミュレータを生成し、ポリシーに応じてエミュレータを使い分けることである。以下、本発明の一実施の形態について、図面を参照して詳細に説明する。
【００３２】
図１は、本発明の一実施の形態に係るエミュレーション装置１００の要部構成を示すブロック図である。同図に示すエミュレーション装置１００は、エミュレータ実行部１０１、実行処理記録部１０２、ポリシー記憶部１０３、集計部１０４、ソース部品記憶部１０５、ソース合成部１０６、コンパイラ部１０７、エミュレータ記憶部１０８、およびエミュレータ選択部１０９を有している。
【００３３】
エミュレータ実行部１０１は、エミュレータ選択部１０９によってポリシーに応じて選択されたエミュレータを実行する。具体的には、エミュレータ実行部１０１は、エミュレータに記述された命令を順に実行し、エミュレータがエミュレートするＣＰＵなどと同様の処理を行う。
【００３４】
実行処理記録部１０２は、エミュレータ実行部１０１において実行された処理と実行された時刻とを記録する。具体的には、実行処理記録部１０２は、エミュレータを構成する１つ１つの処理であるソース部品ごとの実行時に、実行されたソース部品と実行された時刻とを記録する。
【００３５】
ポリシー記憶部１０３は、エミュレータが実行される複数の使用環境のポリシーを記憶する。すなわち、ポリシー記憶部１０３は、エミュレータが実行される環境が異なる時間帯をそれぞれ記憶する。具体的には、ポリシー記憶部１０３は、例えば図２に示すように、エミュレータの使用環境が変化する時間帯を優先順に定義している。図２においては、ポリシー１は、毎月２６日を定義しており、ポリシー２は、土曜日と日曜日を定義している。また、ポリシー３は、毎日９時から１７時３０分を定義しており、ポリシー４は、毎日１７時３０分から翌９時を定義している。これらのポリシーは優先順であるため、例えばある月の２６日が土曜日である場合は、この日はポリシー１に該当することになる。また、ポリシー２がポリシー３、４より優先されるため、ポリシー３、４は、それぞれ平日の時間帯を定義していることになる。
【００３６】
集計部１０４は、ポリシー記憶部１０３からポリシーを読み出し、ポリシーごとに実行処理の回数を集計する。すなわち、集計部１０４は、実行処理記録部１０２において記録されたソース部品ごとの実行時刻から、それぞれのポリシーの時間帯に含まれるソース部品の種別を集計する。
【００３７】
ソース部品記憶部１０５は、エミュレータを構成する１つ１つの処理であるソース部品を記憶する。ソース部品記憶部１０５が記憶するソース部品の中には、エミュレートする命令がどのような命令であるか判定する処理（命令フェッチ）も含まれている。すなわち、ソース部品記憶部１０５が記憶するソース部品は、例えば図３に示すように、プログラムを分割可能な位置で分割して得られるものである。
【００３８】
ソース合成部１０６は、エミュレータのひとまとまりの処理であるソースの合成ルールを記憶しており、合成ルールに従って複数のソース部品を合成し、エミュレータのソースを得る。具体的には、ソース合成部１０６は、例えば図４に示すような合成ルールを記憶しており、例えばソース１を合成するには、ソース部品１〜７を用いる。
【００３９】
そして、ソース合成部１０６は、部品種別が「固定」であるソース部品については、あらかじめ定められた位置に配置し、部品種別が「組み換え」であるソース部品については、集計部１０４における集計結果に基づいてポリシーごとに組み替える。すなわち、ソース合成部１０６は、部品種別が「組み換え」であるソース部品を、それぞれのポリシーにおいて処理回数が多い順に並べて配置する。また、ソース合成部１０６は、各ソース部品の間に、挿入ソース部品を挿入する。
【００４０】
このようにして、ソース合成部１０６は、それぞれのポリシーにおいて最適な順序でソース部品が並べられたソースを合成し、ポリシーごとのエミュレータに必要なソース一式を得る。
【００４１】
コンパイラ部１０７は、ソース合成部１０６によって得られたポリシーごとのソース一式をコンパイルし、ポリシーごとのエミュレータを生成する。すなわち、コンパイラ部１０７は、ポリシー記憶部１０３において定義されたポリシーの数を参照し、それぞれのポリシーに対応するソース一式をコンパイルして、ポリシーごとのエミュレータを生成する。
【００４２】
エミュレータ記憶部１０８は、コンパイラ部１０７によって生成されたポリシーごとのエミュレータを記憶する。
【００４３】
エミュレータ選択部１０９は、エミュレータの開始指示があった場合に、現在時刻がポリシー記憶部１０３に定義されたどのポリシーに含まれるか判断し、該当するポリシーに対応するエミュレータをエミュレータ記憶部１０８から読み出してエミュレータ実行部１０１に実行させる。また、エミュレータ選択部１０９は、現在時刻以降の最も近いポリシーの開始日時を参照し、この時刻にエミュレータを切り替えるように設定しておく。
【００４４】
次いで、上記のように構成されたエミュレーション装置１００の動作について、具体的に例を挙げながら説明する。
【００４５】
図５は、本実施の形態に係るエミュレーション装置１００の動作の概要を示すフロー図である。同図に示すように、まず、エミュレータ実行部１０１によってエミュレータが実行されると、実行処理記録部１０２によって、個々のソース部品に対応する処理ごとに実行された時刻が記録される（ステップＳ１０１）。こうして記録された時刻は、集計部１０４によって、ポリシーごとに集計される（ステップＳ１０２）。
【００４６】
そして、ソース合成部１０６によって、合成ルールに従ったソースの合成が行われる（ステップＳ１０３）。このとき、順序を組み替え可能なソース部品については、集計部１０４における集計結果に基づいて、ポリシーごとに頻度が高い順でソース部品が並べられてソース合成が行われる。ソース合成部１０６によってポリシーごとのソース一式が得られると、コンパイラ部１０７によってポリシーごとのソース一式がコンパイルされる（ステップＳ１０４）。これにより、ポリシーごとのエミュレータが生成され、エミュレータ記憶部１０８に記憶される。
【００４７】
エミュレータの実行時には、エミュレータ選択部１０９によって、現在時刻がどのポリシーに該当するか判断され、ポリシーに対応するエミュレータがエミュレータ記憶部１０８から選択される。そして、選択されたエミュレータがエミュレータ実行部１０１によって実行される（ステップＳ１０５）。
【００４８】
図６は、ステップＳ１０１の実行処理記録の動作を具体的に示すフロー図である。このフローは、主に実行処理記録部１０２によって処理される。
【００４９】
すなわち、実行処理記録部１０２によって、エミュレータ実行部１０１においてエミュレータの命令が実行されているか否かが監視され（ステップＳ２０１）、命令が実行されると（ステップＳ２０１Ｙｅｓ）、実行された命令に相当するソース部品と実行された時刻とが記録される（ステップＳ２０２）。この結果、エミュレータ実行部１０１においてエミュレータが実行されると、例えば図７に示すように、各ソース部品の処理がいつ実行されたかがすべて記録される。図７における個々の処理データは、命令が実行された時刻と命令の内容に対応するソース部品とから構成されている。
【００５０】
図８は、ステップＳ１０２の集計データ作成の動作を具体的に示すフロー図である。このフローは、主に集計部１０４によって処理される。
【００５１】
すなわち、まず、集計部１０４によって、ポリシー記憶部１０３に定義されたポリシーが１つ読み出され（ステップＳ３０１）、実行処理記録部１０２に記録された処理データが１つ読み出される（ステップＳ３０２）。そして、集計部１０４によって、処理データの時刻がポリシーとして定義された時間帯に含まれるか否かが判定され（ステップＳ３０３）、含まれる場合には（ステップＳ３０３Ｙｅｓ）、この処理データのソース部品に対応するカウンタがカウントアップされる（ステップＳ３０４）。
【００５２】
また、処理データの時刻がポリシーに含まれない場合や（ステップＳ３０３Ｎｏ）、カウントアップが行われた後は、集計部１０４によって、実行処理記録部１０２に記録されたすべての処理データに対して上記の判定が完了したか否かが判断される（ステップＳ３０５）。この判断の結果、実行処理記録部１０２に処理データが残っている場合は（ステップＳ３０５Ｎｏ）、再び処理データが読み出され、上記の判定が行われる。
【００５３】
一方、実行処理記録部１０２の処理データすべてに対する判定が完了すると（ステップＳ３０５Ｙｅｓ）、現在ポリシー記憶部１０３から読み出されているポリシーに対応する集計データが集計部１０４に登録される（ステップＳ３０６）。すなわち、ポリシーに定義された時間帯にエミュレータが実行された場合の、ソース部品ごとの処理の頻度が集計部１０４に記憶される。そして、集計部１０４によって、ポリシー記憶部１０３に記憶されたすべてのポリシーに対する集計が完了したか否かが判断される（ステップＳ３０７）。この判断の結果、未集計のポリシーが残っている場合は（ステップＳ３０７Ｎｏ）、再びポリシーが読み出され、上記の処理が行われる。
【００５４】
また、すべてのポリシーに対する処理が完了すると（ステップＳ３０７Ｙｅｓ）、ポリシーごとにソース部品に相当する処理が実行された回数の集計結果が得られたことになる。この集計結果は、例えば図９に示すようなものとなる。図９において、例えばポリシー１の時間帯には、ソース部品１に相当する処理が１００回実行され、ソース部品２に相当する処理が２０回実行され、ソース部品４に相当する処理が５回実行されたことがわかる。ポリシーは、あらかじめエミュレータの使用環境の変化に応じて定義されているため、それぞれのポリシーにおける処理の頻度の特徴は異なっていることになる。
【００５５】
図１０は、ステップＳ１０３のソース合成の動作を具体的に示すフロー図である。このフローは、主にソース合成部１０６によって処理される。
【００５６】
すなわち、まず、ソース合成部１０６によって、ソース一式を生成する対象のポリシーがポリシー記憶部１０３に定義された複数のポリシーから選択される（ステップＳ４０１）。そして、ソース合成部１０６によって、合成ルールの１つが読み出され（ステップＳ４０２）、この合成ルールによって合成方法が規定されるソース部品がソース部品記憶部１０５から取得される。１つの合成ルールでは、１つまたは複数のソース部品の合成方法が規定されている。また、合成ルールが参照され、ソース部品記憶部１０５から取得されたソース部品の部品種別が順序の並べ替え可能な「組み換え」であるか否かが判断される（ステップＳ４０３）。
【００５７】
この判断の結果、ソース部品の順序の並べ替えが可能であれば、ソース合成部１０６によって、集計部１０４における集計結果が参照され、現在対象となっているポリシーにおいて処理が実行された頻度が高い順にソース部品が並べ替えられる（ステップＳ４０４）。具体的には、例えば図９に示す集計結果が得られているときに、ポリシー１をソース合成の対象とし、ソース部品２〜４の部品種別が「組み換え」であるとすれば、ソース部品２〜４は、ソース合成部１０６によって、ソース部品２、ソース部品４、ソース部品３の順に並べ替えられる。同様に、ポリシー２をソース合成の対象とした場合は、ソース合成部１０６によって、ソース部品４、ソース部品３、ソース部品２の順に並べ替えられる。
【００５８】
このように、ソース合成時に並べ替え可能なソース部品の順序を、実際のポリシーごとの処理実行時における頻度に応じて決定するため、ポリシーで定義された時間帯ごとに最適な順序で処理を実行するソースが合成され、エミュレータの処理速度の向上を図ることができる。
【００５９】
こうして１つの合成ルールによって合成方法が規定されたソース部品の取得・並べ替えが完了すると、このソース断片が既に取得・並べ替えが完了している既存のソース断片と結合される（ステップＳ４０５）。既存のソース断片は、既に読み出された他の合成ルールに従ってソース部品が取得・並べ替えされたものである。そして、ソース断片は、合成ルールにおいて、同一のソースを構成するように規定されているもの同士が結合される。すなわち、例えば図４に示した合成ルールにおいては、ソース１に対応する３つのソース断片が互いに結合される。これらのソース断片は、それぞれソース部品１、ソース部品２〜５、およびソース部品６、７から構成されている。
【００６０】
ソース断片同士の結合後、ソース合成部１０６によって、すべての合成ルールに関する処理が完了したか否かが判断される（ステップＳ４０６）。この判断の結果、ソース部品の取得や並べ替えが行われていない合成ルールが残っている場合は（ステップＳ４０６Ｎｏ）、再び合成ルールが読み出され、上記の処理が行われる。
【００６１】
一方、すべての合成ルールに関する処理が完了すると（ステップＳ４０６Ｙｅｓ）、現在対象となっているポリシーに対応するソース一式がソース合成部１０６に登録される（ステップＳ４０７）。すなわち、ポリシーごとにソース部品を最適な順序で結合して得られたソース一式がポリシーに対応付けられてソース合成部１０６に記憶される。そして、ソース合成部１０６によって、ポリシー記憶部１０３に記憶されたすべてのポリシーに対応するソース一式が得られたか否かが判断される（ステップＳ４０８）。この判断の結果、ソース一式が未登録のポリシーが残っている場合は（ステップＳ４０８Ｎｏ）、再び対象ポリシーが選択され、上記の処理が行われる。
【００６２】
また、すべてのポリシーに対応するソース一式が得られると（ステップＳ４０８Ｙｅｓ）、ポリシーごとのエミュレータに対応するソース一式が得られたことになる。このソース一式においては、ポリシーごとにソース部品の順序が最適化され、各ポリシーにおいて実際に実行頻度が高い順にソース部品が並べられている。
【００６３】
図１１は、ステップＳ１０４のコンパイルの動作を具体的に示すフロー図である。このフローは、主にコンパイラ部１０７によって処理される。
【００６４】
すなわち、まず、コンパイラ部１０７によって、コンパイルしてエミュレータを生成する対象のポリシーがポリシー記憶部１０３に定義された複数のポリシーから選択される（ステップＳ５０１）。そして、コンパイラ部１０７によって、選択されたポリシーに対応するソース一式がソース合成部１０６から取得され、コンパイルされる（ステップＳ５０２）。
【００６５】
コンパイラ部１０７によってソース一式がコンパイルされることにより、対象となっているポリシーに対応するエミュレータが生成され、このエミュレータがエミュレータ記憶部１０８にポリシーに対応付けて記憶される（ステップＳ５０３）。そして、コンパイラ部１０７によって、ポリシー記憶部１０３に記憶されたすべてのポリシーに対応するエミュレータが生成されたか否かが判断される（ステップＳ５０４）。この判断の結果、エミュレータが未生成のポリシーが残っている場合は（ステップＳ５０４Ｎｏ）、再び対象ポリシーが選択され、上記の処理が行われる。
【００６６】
また、すべてのポリシーに対応するエミュレータが生成された場合は（ステップＳ５０４Ｙｅｓ）、ポリシーごとに最適化されたエミュレータがすべてエミュレータ記憶部１０８に記憶されたことになる。
【００６７】
図１２は、ステップＳ１０５のエミュレータ実行の動作を具体的に示すフロー図である。このフローは、主にエミュレータ選択部１０９およびエミュレータ実行部１０１によって処理される。
【００６８】
すなわち、まず、エミュレータ選択部１０９によって、外部からエミュレータの実行を開始する指示が待機される（ステップＳ６０１）。エミュレータ開始指示があると（ステップＳ６０１Ｙｅｓ）、エミュレータ選択部１０９によって、ポリシー記憶部１０３に定義されたポリシーが優先順位が高い順に１つ読み出され（ステップＳ６０２）、現在時刻が読み出されたポリシーに定義された時間帯に該当するか否かが判定される（ステップＳ６０３）。
【００６９】
現在時刻がポリシーに含まれる場合（ステップＳ６０３Ｙｅｓ）、エミュレータ選択部１０９によってポリシーに対応するエミュレータがエミュレータ記憶部１０８から選択され（ステップＳ６０４）、選択されたエミュレータがエミュレータ実行部１０１によって実行される。また、現在時刻がポリシーに含まれない場合（ステップＳ６０３Ｎｏ）、エミュレータ選択部１０９によって、ポリシー記憶部１０３に記憶されたすべてのポリシーについて現在時刻との比較が行われたか否かが判断される（ステップＳ６０５）。この判断の結果、現在時刻と未比較のポリシーが残っている場合は（ステップＳ６０５Ｎｏ）、再びポリシーが読み出され、上記と同様に現在時刻との比較が行われる。
【００７０】
また、すべてのポリシーと現在時刻との比較が完了した場合や（ステップＳ６０５Ｙｅｓ）、ポリシーに対応するエミュレータが選択されて実行された場合には、以後のエミュレータの切り替えに関する設定が行われる。すなわち、エミュレータ選択部１０９によって、ポリシーに定義された時間帯が現在時刻以降であって、現在時刻に最も近いポリシーが選択される（ステップＳ６０６）。ここで選択されるポリシーは、エミュレータの実行を継続する際、実行するエミュレータを切り替えるべき時間を示している。換言すれば、ポリシーによって定義された時間帯の開始時刻になると、エミュレータ実行部１０１において実行されるエミュレータをポリシーに対応するものに切り替える必要がある。
【００７１】
そこで、エミュレータ選択部１０９によって、選択されたポリシーの開始時刻がエミュレータ切替時間として設定される（ステップＳ６０７）。これにより、設定されたエミュレータ切替時間となると、エミュレータ選択部１０９によって、ポリシーに対応するエミュレータがエミュレータ記憶部１０８から選択され、エミュレータ実行部１０１によって実行されるエミュレータが切り替わる。
【００７２】
このように、本実施の形態においては、ポリシーによって定義された時間帯ごとに実行するエミュレータを切り替え、使用環境に応じて生成された複数のエミュレータのうち現在時刻に最も適したエミュレータが実行されるようにする。このため、使用環境が変化してもエミュレータの処理性能を確実に改善することができる。
【００７３】
以上のように、本実施の形態によれば、使用環境が異なるポリシーごとにエミュレータの個々の処理の頻度を集計し、集計結果に応じて各処理に対応するソース部品を並べ替え、ポリシーごとのソースをコンパイルしてポリシーごとのエミュレータを生成する。そして、エミュレータ実行の際には、生成された複数のエミュレータのうち現在時刻を含むポリシーに対応するエミュレータを選択して実行する。このため、実際の使用環境における処理の頻度の違いに即した最適なエミュレータを生成することができるとともに、実行時刻に応じたエミュレータを選択して実行することができ、使用環境が変化してもエミュレータの処理性能を確実に改善することができる。
【００７４】
なお、上記一実施の形態においては、エミュレータの生成および実行が１つのエミュレーション装置１００において行われるものとしたが、エミュレータの生成および実行を別の装置において行うことも可能である。すなわち、図１３に示すように、実行装置２００および生成装置３００を分離し、実行装置２００におけるエミュレータの実行時にソース部品ごとの処理頻度を集計し、集計結果や定義されたポリシーを用いて、生成装置３００においてポリシーごとのエミュレータを生成する。なお、図１３において、各処理ブロックは図１に示す処理ブロックと同様であり、その説明を省略する。
【００７５】
図１３に示すように実行装置２００と生成装置３００を分離することで、エミュレータを実行する客先には実行装置２００を設置し、エミュレータを開発する開発元には生成装置３００を設置することが可能となる。したがって、エミュレータの開発元は、ソース部品などを他者に公開することなく、必要な情報を客先から取得してポリシーごとのエミュレータを生成することができる。
【産業上の利用可能性】
【００７６】
本発明は、使用環境が変化してもエミュレータの処理性能を確実に改善する場合に適用することができる。
【図面の簡単な説明】
【００７７】
【図１】図１は、本発明の一実施の形態に係るエミュレーション装置の要部構成を示すブロック図である。
【図２】図２は、一実施の形態に係るポリシーの例を示す図である。
【図３】図３は、一実施の形態に係るソース部品の例を示す図である。
【図４】図４は、一実施の形態に係る合成ルールの例を示す図である。
【図５】図５は、一実施の形態に係るエミュレーション装置の動作概要を示すフロー図である。
【図６】図６は、一実施の形態に係る実行処理記録の動作を示すフロー図である。
【図７】図７は、一実施の形態に係る処理データの例を示す図である。
【図８】図８は、一実施の形態に係る集計データ作成の動作を示すフロー図である。
【図９】図９は、一実施の形態に係る集計データの例を示す図である。
【図１０】図１０は、一実施の形態に係るソース合成の動作を示すフロー図である。
【図１１】図１１は、一実施の形態に係るコンパイルの動作を示すフロー図である。
【図１２】図１２は、一実施の形態に係るエミュレータ実行の動作を示すフロー図である。
【図１３】図１３は、本発明の他の実施の形態に係るシステム構成を示すブロック図である。
【符号の説明】
【００７８】
１００  エミュレーション装置
１０１  エミュレータ実行部
１０２  実行処理記録部
１０３  ポリシー記憶部
１０４  集計部
１０５  ソース部品記憶部
１０６  ソース合成部
１０７  コンパイラ部
１０８  エミュレータ記憶部
１０９  エミュレータ選択部
２００  実行装置
３００  生成装置
【国際調査報告】
2008117473.tif 000016
2008117473.tif 000017
2008117473.tif 000018
2008117473.tif 000019