(57)【要約】【課題】新機能の追加が予定されたシステムＬＳＩであっても、精度の高い評価をすることができる評価装置、システムＬＳＩ及びそのための評価プログラムを提供すること。【解決手段】評価装置は、アプリケーション２０１からハードウェアを起動する処理を検出する検出部と、ハードウェアを起動する処理を検出したときにアプリケーション２０１の実行を中断する中断部と、ハードウェアの挙動をシミュレートすることで推定されたハードウェアのメモリアクセスパターンを負荷として設定する設定部と、負荷を加えてアプリケーション２０１の実行を再開する再開部と、ハードウェアの総合的な振る舞いを収集する収集部とを備える。【選択図】図２
2020160483.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションからシステムＬＳＩのハードウェアを起動する処理を検出する検出部と、
前記ハードウェアを起動する処理を検出したときに前記アプリケーションの実行を中断する中断部と、
前記ハードウェアの挙動をシミュレートすることで推定された前記ハードウェアのメモリアクセスパターンを負荷として設定する設定部と、
前記負荷を加えて前記アプリケーションの実行を再開する再開部と、
前記アプリケーションの実行が再開されたときの前記負荷を含む、前記アプリケーションの実行中のメモリアクセスに係るプロファイルを収集する収集部と、
を具備する評価装置。
【請求項２】
前記メモリアクセスパターンは、時間軸方向に分割された複数のセグメントを有し、
複数の前記セグメントそれぞれの分割される時点は、前記ハードウェアのメモリアクセス帯域が変化する時点又は計算量とメモリアクセス量との比率が変化する時点である、請求項１に記載の評価装置。
【請求項３】
前記検出部と、前記中断部と、前記設定部と、前記再開部とは、ハイパバイザに設けられている請求項１に記載の評価装置。
【請求項４】
前記システムＬＳＩには、前記アプリケーションを実行するプロセッサを含む複数のプロセッサが設けられており、
前記ハードウェアの挙動がシミュレートされている期間中はすべての前記プロセッサが停止される請求項１に記載の評価装置。
【請求項５】
前記ハードウェアの挙動のシミュレートは、前記システムＬＳＩと通信できるように接続されたコンピュータにおいて行われる請求項１に記載の評価装置。
【請求項６】
前記ハードウェアの挙動のシミュレートは、ソフトウェア処理と前記ハードウェアの動作とを組み合わせて行われる請求項１に記載の評価装置。
【請求項７】
前記ハードウェアの挙動のシミュレートの間に動いている前記ハードウェアのバス負荷が計測され、
前記再開部は、前記負荷に前記バス負荷をさらに加えて前記アプリケーションの実行を再開する請求項１に記載の評価装置。
【請求項８】
アプリケーションからハードウェアを起動する処理を検出することと、
前記ハードウェアを起動する処理を検出したときに前記アプリケーションの実行を中断することと、
前記ハードウェアの挙動をシミュレートすることで推定された前記ハードウェアのメモリアクセスパターンを負荷として設定することと、
前記負荷を加えて前記アプリケーションの実行を再開することと、
前記アプリケーションの実行が再開されたときの前記負荷を含む、前記アプリケーションの実行中のメモリアクセスに係るプロファイルをプロファイラで収集することと、
を行うように構成されたプロセッサを具備するシステムＬＳＩ。
【請求項９】
アプリケーションからハードウェアを起動する処理を検出することと、
前記ハードウェアを起動する処理を検出したときに前記アプリケーションの実行を中断することと、
前記ハードウェアの挙動をシミュレートすることで推定された前記ハードウェアのメモリアクセスパターンを負荷として設定することと、
前記負荷を加えて前記アプリケーションの実行を再開することと、
前記アプリケーションの実行が再開されたときの前記負荷を含む、前記アプリケーションの実行中のメモリアクセスに係るプロファイルを取集することと、
をプロセッサに実行させるためのシステムＬＳＩのための評価プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、評価装置、システムＬＳＩ及びシステムＬＳＩのための評価プログラムに関する。
【背景技術】
【０００２】
複雑なシステムＬＳＩを迅速に開発するためには、システムＬＳＩのアーキテクチャ検討とアプリケーション検討とを並行して進めること、早期にソフトウェア開発に着手することが重要である。一方で、新機能の追加が予定されたシステムＬＳＩを評価するときに、その新機能に対応したハードウェアが開発されていないこともあり、精度の高い評価を行うことが困難である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−４２３２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、新機能の追加が予定されたシステムＬＳＩであっても、精度の高い評価をすることができる評価装置、システムＬＳＩ及びそのための評価プログラムを提供する。
【課題を解決するための手段】
【０００５】
実施形態の評価装置は、検出部と、中断部と、設定部と、再開部と、収集部とを有する。検出部は、アプリケーションからシステムＬＳＩのハードウェアを起動する処理を検出する。中断部は、ハードウェアを起動する処理を検出したときにアプリケーションの実行を中断する。設定部は、ハードウェアの挙動をシミュレートすることで推定されたハードウェアのメモリアクセスパターンを負荷として設定する。再開部は、負荷を加えてアプリケーションの実行を再開する。収集部は、アプリケーションの実行が再開されたときの負荷を含む、アプリケーションの実行中のメモリアクセスに係るプロファイルを収集する。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態に係るシステムＬＳＩの評価システムの構成を示すブロック図である。
【図２】図２は、評価システムの機能ブロック図である。
【図３】図３は、評価システムの処理の流れを示すフローチャートである。
【図４Ａ】図４Ａは、アプリケーションにおいて想定されているプロセッサ及びハードウェアの動作の例を示す図である。
【図４Ｂ】図４Ｂは、実施形態におけるプロセッサ及びハードウェアの動作の例を示す図である。
【図５】図５は、変形例２におけるプロセッサ及びハードウェアの動作の例を示す図である。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態を説明する。図１は、実施形態に係るシステムＬＳＩの評価システムの構成を示すブロック図である。図１に示すように、評価システム１は、システムＬＳＩ２と、コンピュータ３とを有する。システムＬＳＩ２とコンピュータ３とは、通信できるように接続されている。通信は、有線で行われてもよいし、無線で行われてもよい。また、通信の方式も、特に限定されない。
【０００８】
システムＬＳＩ２は、プロセッサ２１と、メモリ２２と、インターフェイス２３と、ハードウェア２４とを有する。プロセッサ２１と、メモリ２２と、インターフェイス２３と、ハードウェア２４とはバス２５を介して相互に通信できるように接続されている。
【０００９】
プロセッサ２１は、例えばＣＰＵ(Central Processing Unit)である。プロセッサ２１は、システムＬＳＩ２における各種の処理を制御する。プロセッサ２１は、複数のＣＰＵ等から構成されるマルチコアプロセッサであってもよい。
【００１０】
メモリ２２は、ＲＡＭ(Random Access Memory)及びＲＯＭ(Read Only Memory)を含む。ＲＡＭは、読み書き可能な半導体メモリである。ＲＡＭは、プロセッサ２１及びハードウェア２４等で使用される各種のデータを一時的に記憶する作業メモリである。ＲＯＭは、読み出し専用の半導体メモリである。ＲＯＭは、システムＬＳＩ２の動作に必要なプログラムを記憶する。このプログラムは、オペレーティングシステム（ＯＳ）、アプリケーションを含む。また、このプログラムは、ハイパバイザを含む。ハイパバイザは、ハードウェアの上で直接動作する制御プログラムである。ＯＳは、ハイパバイザ上で動作する。
【００１１】
インターフェイス２３は、システムＬＳＩ２とコンピュータ３との通信のためのシステムＬＳＩ２側のインターフェイスである。インターフェイス２３は、例えばＰＣＩである。インターフェイス２３は、特に限定されない。
【００１２】
ハードウェア２４は、システムＬＳＩ２に実装されている各種のハードウェアである。ハードウェア２４は、特に限定されない。例えばメモリ２２には、ハードウェア２４として実装されているハードウェア毎に制御レジスタ用のメモリ領域が割り当てられる。例えば、アプリケーションの実行中に特定のハードウェアに割り当てられたメモリ領域へのアクセス要求があったとき、対応するハードウェアを起動するための処理が行われる。なお、実施形態では、システムＬＳＩ２にまだ実装されていないハードウェアのためのメモリ領域も割り当てられている。
【００１３】
コンピュータ３は、例えばパーソナルコンピュータである。コンピュータ３は、プロセッサ３１と、メモリ３２と、ストレージ３３と、インターフェイス３４とを有する。プロセッサ３１と、メモリ３２と、ストレージ３３と、インターフェイス３４とはバス３５を介して相互に通信できるように接続されている。
【００１４】
プロセッサ３１は、例えばＣＰＵである。プロセッサ３１として、ＧＰＵ(Graphic Processing Unit)を用いることもできる。プロセッサ３１は、コンピュータ３における各種の処理を制御する。プロセッサ３１は、複数のＣＰＵ等から構成されていてもよい。
【００１５】
メモリ３２は、ＲＡＭを含む。ＲＡＭは、読み書き可能な半導体メモリである。ＲＡＭは、プロセッサ３１等で使用される各種のデータを一時的に記憶する作業メモリである。
【００１６】
ストレージ３３は、例えばハードディスクである。ストレージ３３は、コンピュータ３の動作に必要なプログラムを記憶する。このプログラムは、オペレーティングシステム（ＯＳ）等を含む。また、ストレージ３３は、システムＬＳＩ２のハードウェアの挙動をシミュレートするためのシミュレーションモデルを記憶している。
【００１７】
インターフェイス３４は、システムＬＳＩ２とコンピュータ３との通信のためのコンピュータ３側のインターフェイスである。インターフェイス３４は、例えばＰＣＩである。インターフェイス３４は、特に限定されない。
【００１８】
図２は、評価システム１の機能ブロック図である。ここで、図２の太線矢印は、ハードウェアに対する要求であることを示す。また、図２の細線矢印は、ソフトウェアに対する要求であることを示す。
【００１９】
実施形態において、システムＬＳＩ２のアプリケーション２０１は、ＯＳの制御下で動作する。システムＬＳＩ２のＯＳは、例えばＲＴＯＳ（Real-time OS）２０２である。また、アプリケーション２０１は、システムＬＳＩ２に既に実装されているハードウェア２４である既存ハードウェア（ＨＷ）２４ａを用いる処理（既存処理）２０１ａだけでなく、システムＬＳＩ２に仮想的に用意された、これから実装予定の新規のハードウェア２４である仮想新規ハードウェア（ＨＷ）２４ｂを用いる処理（新規処理）２０１ｂを含んでいてもよい。また、アプリケーション２０１は、システムＬＳＩの評価のためのプロファイラ２０１ｃを含む。プロファイラ２０１ｃは、ハードウェア２４として実装されているハードウェアタイマを参照しながら、アプリケーション２０１のプロファイルを収集する。このアプリケーション２０１のプロファイルは、例えばアプリケーション２０１の実行時のメモリアクセス帯域、メモリアクセス量、計算量とメモリアクセス量との比（演算強度）といったメモリアクセスに係るプロファイルを含む。プロファイラ２０１ｃの方式は、サンプリング方式、出入り口監視方式等が用いられ得る。プロファイラ２０１ｃで収集されたプロファイルは、例えばハイパバイザ２０３によって解析され得る。プロファイラ２０１ｃは、ハイパバイザ２０３にあってもよい。
【００２０】
一方で、システムＬＳＩ２の評価のためのハードウェアの仮想化は、ハイパバイザ２０３の制御下で行われる。ハイパバイザ２０３は、プロセッサ２１及びハードウェア２４を含む、システムＬＳＩ２のハードウェア上で直接動作する。ハイパバイザ２０３は、メモリアクセストラップ部２０３ａと、仮想ハードウェア制御レジスタモデル２０３ｂと、仮想タイマ制御部２０３ｃと、仮想負荷制御部２０３ｄとを有する。ハイパバイザ２０３は、必要に応じてプロセッサ２１等を利用してメモリアクセストラップ部２０３ａと、仮想ハードウェア制御レジスタモデル２０３ｂと、仮想タイマ制御部２０３ｃと、仮想負荷制御部２０３ｄとしての動作を実行する。つまり、ハイパバイザ２０３は、システムＬＳＩ２の評価装置として動作する。
【００２１】
メモリアクセストラップ部２０３ａは、プロセッサ２１のＭＭＵ（Memory Management Unit）を利用して、ＲＡＭ２２の特定のアドレスへのアクセスを検出したときに、以後の処理をハイパバイザ２０３に移す。
【００２２】
仮想ハードウェア制御レジスタモデル２０３ｂは、仮想ハードウェア毎の特有の処理を再現するように構成されたモデルである。仮想ハードウェア毎の特有の処理とは、例えばハードウェア毎の制御レジスタとしての動作、この制御レジスタにアクセスされたときのハードウェアとしての処理を含む。
【００２３】
仮想タイマ制御部２０３ｃは、アプリケーション２０１及びＲＴＯＳ２０２で見える仮想タイマを制御する。前述したように、アプリケーション２０１のプロファイラ２０１ｃは、基本的にはハードウェアタイマを参照しながらアプリケーションのプロファイルを収集する。仮想タイマ制御部２０３ｃが仮想タイマの設定をしたとき、アプリケーション２０１及びＲＴＯＳ２０２は仮想タイマを参照することになる。例えば、仮想タイマ制御部２０３ｃがハイパバイザ２０３上で行われていた処理の時間をゼロにするように仮想タイマを操作すると、ハイパバイザ２０３上で行われていた処理のプロファイルはプロファイラ２０１ｃで集計されなくなる。
【００２４】
仮想負荷制御部２０３ｄは、ハードウェアのシミュレーション結果に基づいて、一定のメモリアクセス負荷を与える。仮想負荷制御部２０３ｄは、ＤＭＡＣ（Direct Memory Access Controller）等のメモリアクセスを行うハードウェアを利用して負荷を与える。負荷を与える専用のハードウェアを利用して負荷が与えられてもよい。
【００２５】
コンピュータ３は、ハイパバイザ２０３からの要求を受けたとき、シミュレーションモデル３０１を用いてハードウェアの挙動をシミュレートする。シミュレーションモデル３０１は、ＯＳ３０２の上で動作する。シミュレーションモデル３０１は、挙動再現部３０１ａと、メモリアクセス範囲判定部３０１ｂと、メモリアクセスパターン推定部３０１ｃとを有する。シミュレーションモデル３０１は、必要に応じてプロセッサ３１等を利用して挙動再現部３０１ａと、メモリアクセス範囲判定部３０１ｂと、メモリアクセスパターン推定部３０１ｃとしての動作を実行する。
【００２６】
挙動再現部３０１ａは、システムＬＳＩ２のハードウェア２４の挙動を仮想ハードウェアによって再現する。挙動再現部３０１ａは、例えば仮想新規ハードウェア２４ｂの挙動を再現できるように構成されている。ここで、ハードウェアの挙動とは例えば、メモリから入力情報を読み出し、ハードウェア特有の計算を行い、計算結果をメモリに書き込むことである。また、挙動再現部３０１ａは、既存ハードウェア２４ａの挙動を再現できるようにも構成されていてよい。
【００２７】
メモリアクセス範囲判定部３０１ｂは、仮想制御レジスタへの設定値から、挙動を再現するハードウェアがどの範囲のアドレスを参照し、書き込み又は読み出しをするかを判定する。
【００２８】
メモリアクセスパターン推定部３０１ｃは、実際のハードウェア２４がどのようなアクセスパターンでメモリアクセスするかを推定する。メモリアクセスパターンとは、例えば、仮想ハードウェアが実際のハードウェア２４としてメモリアクセス（書き込み／読み出し）をしたと仮定したときのメモリアクセス帯域の時間変化、メモリアクセス量の時間変化、仮想ハードウェアが実際のハードウェア２４としてメモリアクセスをした時間内でのトータルのメモリアクセス量を含む。
【００２９】
以下、評価システム１の動作を詳細に説明する。図３は、評価システム１の処理の流れを示すフローチャートである。図３の処理は、システムＬＳＩ２の評価のためにユーザによってアプリケーション２０１が起動されたときに開始される。
【００３０】
アプリケーション２０１が起動されると、ステップＳ１において、アプリケーション２０１は、予めプログラムされた手順に従って処理を実行する。このとき、アプリケーション２０１のプロファイラ２０１ｃは、アプリケーション２０１の実行中のプロファイルを取得する。
【００３１】
ここで、アプリケーション２０１は、特定のハードウェアを起動する必要が生じたときに、このハードウェアに対して割り当てられている制御レジスタへのメモリアクセスを発行する。前述したように、この制御レジスタは、システムＬＳＩ２にまだ実装されていない仮想新規ハードウェア２４ｂについての制御レジスタを含む。つまり、アプリケーション２０１は、新規処理２０１ｂを実行するときに、新規ハードウェアに対して割り当てられている制御レジスタへのメモリアクセスを発行する（図２の（１））。
【００３２】
ステップＳ２において、ハイパバイザ２０３は、アプリケーション２０１から特定のハードウェアに対するメモリアクセスが発行されたか否かをメモリアクセストラップ部２０３ａによって判定する。ここでの特定のハードウェアは、例えば仮想新規ハードウェア２４ｂである。ステップＳ２において、特定のハードウェアに対するメモリアクセスが発行されていないと判定されたとき、処理はステップＳ１２に移行する。ステップＳ２において、特定のハードウェアに対するメモリアクセスが発行されていると判定されたとき、処理はステップＳ３に移行する。
【００３３】
ステップＳ３において、ハイパバイザ２０３は、メモリアクセストラップ部２０３ａでトラップしたメモリアクセスがハードウェアの起動のためのアクセスであるか否かを判定する。ハードウェアに対するメモリアクセスは、ハードウェアの設定のためのアクセスと、ハードウェアを起動するためのアクセスとを含む。ステップＳ３において、メモリアクセスがハードウェアの起動のためのアクセスでない、すなわちハードウェアの設定のためのアクセスであると判定されたときには、処理はステップＳ４に移行する。ステップＳ３において、メモリアクセスがハードウェアの起動のためのアクセスであると判定されたときには、処理はステップＳ５に移行する。
【００３４】
ステップＳ４において、ハイパバイザ２０３は、アプリケーション２０１から発行されたメモリアクセスを受け付ける。そして、ハイパバイザ２０３は、アプリケーション２０１からの要求に従って仮想ハードウェア制御レジスタモデル２０３ｂに設定されている新規ハードウェアに対応する仮想新規ハードウェア２４ｂの設定を更新する（図２の（２））。その後、処理はステップＳ１２に移行する。
【００３５】
ステップＳ３において、メモリアクセスがハードウェアの起動のためのアクセスであると判定されたときに、ステップＳ５において、ハイパバイザ２０３は、アプリケーション２０１に対して制御レジスタモデル２０３ｂに設定されている仮想新規ハードウェア２４ｂの設定を出力することで制御レジスタモデル２０３ｂを基づく応答をシミュレートする（図２の（３））。その後のステップＳ６において、ハイパバイザ２０３は、自身が用いているプロセッサ以外のプロセッサの動作を停止させる。例えば、ハイパバイザ２０３は、クロストリガを用いて他のプロセッサの動作を停止させる（図２の（４））。これにより、アプリケーション２０１は停止する。
【００３６】
ステップＳ７において、ハイパバイザ２０３は、仮想ハードウェア制御レジスタモデル２０３ｂに設定されている内容を、コンピュータ３のシミュレーションモデル３０１に送ることでシミュレーションモデル３０１に対してシミュレーションを要求する（図２の（５））。
【００３７】
ステップＳ８において、ハイパバイザ２０３は、シミュレーションモデル３０１からシミュレーション結果が送られてきたか否かを判定する。ステップＳ８において、シミュレーションモデル３０１からシミュレーション結果が送られてきたと判定されるまで、ハイパバイザ２０３は処理を待つ。ステップＳ８において、シミュレーションモデル３０１からシミュレーション結果が送られてきたとき、処理はステップＳ９に移行する。
【００３８】
ステップＳ８において、ハイパバイザ２０３が処理を待っている間、シミュレーションモデル３０１は、仮想ハードウェア制御レジスタモデル２０３ｂに設定されていた内容に基づいて、ハードウェアの挙動をシミュレートする。
【００３９】
具体的には、シミュレーションモデル３０１は、メモリアクセス範囲判定部３０１ｂにより、ハードウェアの挙動のシミュレートのために参照するメモリブロックを特定する。そして、シミュレーションモデル３０１は、特定したメモリブロックをメモリ３２のＲＡＭにコピーする。
【００４０】
その後、シミュレーションモデル３０１は、挙動再現部３０１ａにより、ハードウェアの挙動をシミュレートする。シミュレーションの結果は、メモリ３２においてコピーされたメモリブロックに書き込まれる。
【００４１】
その後、シミュレーションモデル３０１は、メモリ３２において書き換えられたメモリブロックを読み出し、メモリ２２へ書き戻す。このとき、シミュレーションモデル３０１は、メモリアクセスパターン推定部３０１ｃにより、メモリアクセスパターンを推定する。その後、シミュレーションモデル３０１は、推定されたメモリアクセスパターンをシミュレーション結果としてハイパバイザ２０３に送る。
【００４２】
ここで、図３の説明に戻る。シミュレーションモデル３０１からシミュレーション結果が送られてきた（図２の（６））後のステップＳ９において、ハイパバイザ２０３は、仮想負荷制御部２０３ｄにより、シミュレーションモデル３０１によって推定されたアクセスパターンを仮想負荷として設定する。例えば、仮想負荷の強度は、仮想ハードウェアのトータルのメモリアクセス量を、仮想ハードウェアが仮想的にメモリアクセスをした時間で割ることで得られる。
【００４３】
ステップＳ１０において、ハイパバイザ２０３は、クロストリガを解除して、他のプロセッサによる処理を再開する（図２の（７））。これにより、アプリケーション２０１は処理を再開する。同時に、ハイパバイザ２０３は、仮想負荷として設定した負荷を実際にバス２５に加える。例えば、ハイパバイザ２０３は、ＤＭＡＣを利用してダミーのメモリアクセスを発行してバス２５に負荷を与える（図２の（８））。さらに、ハイパバイザ２０３は、仮想タイマ制御部２０３ｃによって、仮想タイマをゼロに設定することで、ハードウェア２４のタイマによって計測されたシミュレーションに要した時間を無かったことにする（図２の（９））。仮想負荷を与え終わった後、ハイパバイザ２０３は、仮想新規ハードウェア２４ｂの処理が完了したことをアプリケーション２０１に通知する（図２の（１０））。その後、処理はステップＳ１１に移行する。
【００４４】
ステップＳ１１において、ハイパバイザ２０３は、仮想負荷の実行完了時の割り込みを仮想的に受ける。これにより、仮想ハードウェアからの割り込みが再現される。
【００４５】
ステップＳ１２において、アプリケーション２０１は、処理が完了したか否かを判定する。ステップＳ１２において、処理が完了していないと判定されたとき、処理はステップＳ１に戻る。ステップＳ１２において、処理が完了したと判定されたとき、図３の処理は終了する。
【００４６】
図４Ａ及び図４Ｂは、実施形態の効果を説明するための図である。図４Ａは、アプリケーション２０１において想定されているプロセッサ２１及びハードウェア２４の動作の例を示す。図４Ｂは、実施形態におけるプロセッサ２１及びハードウェア２４の動作の例を示す。図４Ａ及び図４Ｂの棒グラフは、時間経過に伴うプロセッサ２１、ハードウェア２４の動作の進みを示している。ここで、ＣＰＵ０は、ハイパバイザ２０３によって使用されるプロセッサ２１である。また、ＣＰＵ１は、すなわちアプリケーション２０１によって使用されるプロセッサである。また、ＨＷＡ、ＨＷＢ、ＨＷＣは、既存ハードウェア２４ａであり、ＨＷＸは、仮想新規ハードウェア２４ｂである。
【００４７】
アプリケーション２０１は、図４Ａに示すように、まず、ＨＷＡを起動してメモリ２２に対する処理を実行させ、ＨＷＡの起動後にＨＷＸを起動してメモリ２２に対する処理を実行させ、ＨＷＸの起動後にＨＷＢを起動してメモリ２２に対する処理を実行させ、ＨＷＢの起動後にＨＷＣを起動してメモリ２２に対する処理を実行させる。このうち、ＨＷＡとＨＷＸの処理時間帯はオーバーラップしており、ＨＷＸとＨＷＢの処理時間帯はオーバーラップしており、ＨＷＢとＨＷＣの処理時間帯はオーバーラップしている。
【００４８】
ここで、ＨＷＸは実際のハードウェアとしてはまだ実装されていないものである。したがって、ＨＷＸは実際にはメモリ２２へアクセスできない。したがって、ハイパバイザ２０３は、ＨＷＸを仮想ハードウェアとして動作させるために、図４Ｂに示すように処理を行う。
【００４９】
つまり、ハイパバイザ２０３（ＣＰＵ０）は、アプリケーション２０１からＨＷＸの起動のためのメモリアクセスがあったタイミングｔ１において、クロストリガをかけてＣＰＵ１の動作を停止させる。これにより、ハイパバイザ２０３は、アプリケーション２０１の処理を中断させる。アプリケーション２０１の処理を中断させている間に、ハイパバイザ２０３は、コンピュータ３のシミュレーションモデル３０１に対して、ＨＷＸの挙動をシミュレートさせる。コンピュータ３によるシミュレーション（図のＳｉｍ）の間、ＣＰＵ０は待機しており、ＣＰＵ１はクロストリガによって動作を停止している。
【００５０】
シミュレーション結果として得られるメモリアクセスパターンからＨＷＸの起動中に想定される負荷をバス２５に加えればＨＷＸのバス２５に与える影響をプロファイラ２０１ｃで収集することができる。ここで、シミュレーションが完了してシミュレーション結果がハイパバイザ２０３に送られたタイミングをｔ２とすると、シミュレーションには（ｔ２−ｔ１）の時間がかかっているので、ハードウェア２４のタイマを参照するプロファイラ２０１ｃは、図４Ａで示す本来のアプリケーション２０１のプロファイルとは異なるプロファイルを収集してしまう。
【００５１】
そこで、実施形態では、ハイパバイザ２０３は、仮想タイマ制御部２０３ｃによって仮想タイマを操作することにより、シミュレーションに要した時間をゼロにする。前述したように、仮想タイマが設定されると、プロファイラ２０１ｃは仮想タイマを参照するので、プロファイラ２０１ｃにとってのシミュレーションの開始から完了までの経過時間はゼロになる。このため、プロファイラ２０１ｃは、シミュレーションに要した時間中のプロファイルを収集することはない。
【００５２】
このようにして、実際のハードウェア２４としては存在していないＨＷＸの振る舞いがソフトウェア的に再現され、このようなＨＷＸと実際のハードウェア２４として存在している他のＨＷＡ、ＨＷＢ、ＨＷＣとが組み合わされた本来のアプリケーション２０１の処理における各ハードウェアの総合的な振る舞いに基づくプロファイルをプロファイラ２０１ｃにおいて収集することができる。
【００５３】
また、実施形態では、ハイパバイザ２０３によってハードウェアの仮想化の処理が行われる。これにより、アプリケーション２０１及びＲＴＯＳ２０２に変更を加えることなく、アプリケーション２０１のプロファイルの評価が行われ得る。
【００５４】
［変形例１］
以下、実施形態の変形例を説明する。前述した実施形態では、仮想負荷の強度は、仮想ハードウェアのトータルのメモリアクセス量を、仮想ハードウェアが仮想的にメモリアクセスをした時間で割った値、すなわちメモリアクセス量の平均値としている。実際には、メモリアクセス帯域及びメモリアクセス量は、時間軸方向で均一ではなく、偏りを持つ場合がある。したがって、メモリアクセスパターン推定部３０１ｃによってメモリアクセスパターンを推定するときには、時間軸方向でセグメントに分割してメモリアクセスパターンを推定することが好ましい。セグメントは、等間隔で分割されてもよいが、メモリアクセス帯域又は計算量とメモリアクセス量の比率（演算強度）が変化する時点で分割されることが望ましい。ハイパバイザ２０３の仮想負荷制御部２０３ｄは、セグメント毎に仮想負荷を設定する。これにより、より実際のアプリケーション２０１の処理に即したプロファイルをプロファイラ２０１ｃにおいて収集することができる。
【００５５】
［変形例２］
実施形態ではクロストリガによってハイパバイザ２０３によって使用されるプロセッサ以外のプロセッサの動作を停止させている。これにより、アプリケーション２０１の処理を中断させることができる。ここで、クロストリガで停止するのはプロセッサだけなのでクロストリガがかけられる前に起動していたハードウェア２４は、その処理が完了するまで動作を停止しない。例えば、図４Ｂでは、ＨＷＡはクロストリガがかけられた後も動作し続ける。この場合、クロストリガが解除された後には、ＨＷＡはメモリアクセスをしていないため、図４Ａで示す本来のアプリケーション２０１の処理とは異なる処理となってしまう。
【００５６】
ここで、ハイパバイザ２０３は、クロストリガがかけられて停止したプロセッサを使用することができる。したがって、ハイパバイザ２０３（ＣＰＵ０）は、図５に示すように、シミュレーション中に、ＨＷＡのバス負荷を測定する。バス負荷は、ハードウェア２４に設けられたパフォーマンスメータで測定され得る。そして、ハイパバイザ２０３は、クロストリガを解除したときに、パフォーマンスメータ等で実測されたＨＷＡの負荷である仮想負荷１と、シミュレーション結果に基づいて得られたＨＷＸの負荷である仮想負荷２とを仮想負荷としてバス２５に与える。これにより、より実際のアプリケーション２０１の処理に即したプロファイルをプロファイラ２０１ｃにおいて収集することができる。ＨＷＡのバス負荷の測定は、ＣＰＵ１を用いて行われてもよい。
【００５７】
［その他の変形例］
前述した実施形態では、仮想化される特定のハードウェアは、システムＬＳＩ２に実装されていない仮想新規ハードウェア２４ｂであるとしている。しかしながら、仮想化される特定のハードウェアは、システムＬＳＩ２に実装されている既存ハードウェア２４ａであってもよい。
【００５８】
また、実施形態では、仮想化のためのシミュレーションは、システムＬＳＩ２の外部のコンピュータ３であるとしている。しかしながら、仮想化のためのシミュレーションは、システムＬＳＩ２で行われてもよい。
【００５９】
また、実施形態では、ハードウェアの仮想化の処理はハイパバイザ２０３によって行われるとしている。しかしながら、ハードウェアの仮想化の処理はハイパバイザ２０３によって行われなくてもよい。例えば、ハードウェアの仮想化の処理はＲＴＯＳ２０２によって行われてもよい。
【００６０】
以上、いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６１】
１…評価システム、２…システムＬＳＩ、３…コンピュータ、２１…プロセッサ、２２…メモリ、２３…インターフェイス、２４…ハードウェア、２４ａ…既存ハードウェア、２４ｂ…仮想新規ハードウェア、２５…バス、３１…プロセッサ、３２…メモリ、３３…ストレージ、３４…インターフェイス、３５…バス、２０１…アプリケーション、２０１ａ…既存処理、２０１ｂ…新規処理、２０１ｃ…プロファイラ、２０２…ＲＴＯＳ、２０３…ハイパバイザ、２０３ａ…メモリアクセストラップ部、２０３ｂ…仮想ハードウェア制御レジスタモデル、２０３ｃ…仮想タイマ制御部、２０３ｄ…仮想負荷制御部、３０１…シミュレーションモデル、３０１ａ…挙動再現部、３０１ｃ…メモリアクセスパターン推定部。
【図１】
2020160483.tif 000003
【図２】
2020160483.tif 000004
【図３】
2020160483.tif 000005
【図４Ａ】
2020160483.tif 000006
【図４Ｂ】
2020160483.tif 000007
【図５】
2020160483.tif 000008