(57)【要約】【課題】ハードウェア環境の開発を待たずに対象とするシステムやアプリケーションの性能評価を可能にすること。【解決手段】情報処理装置１００は、まず、他のハードウェアやＯＳの挙動が含まれた生トレース１０１から検証対象となるＣＰＵの挙動に対応した着目トレース１１１を抽出するとともに検証対象となるハードマクロの状態遷移に対応した着目トレース１１１を抽出する。そして、抽出した着目トレース１１１同士の関連付け情報の作成し、抽出したトレースを用いたトレースシミュレーションを行う。このシミュレーション結果１３１を参照することによって、着目した動作についての検証が可能になる。【選択図】図１
2010211316.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
任意のシステムにおいて任意のアプリケーションを実行させた場合の各処理の実行時刻および実行内容の形跡を表すトレース群と、前記任意のアプリケーションを実行させた場合の前記任意のシステムのプロセッサの挙動を表す挙動情報および前記プロセッサ以外の任意のハードウェアの状態遷移を表す状態情報とを取得する取得手順、
前記挙動情報によって表された挙動の中から任意の挙動が指定されると、当該任意の挙動の実行時刻に基づいて、前記取得手順によって取得されたトレース群の中から前記指定された挙動に対応するトレースを検索する挙動トレース検索手順、
前記状態情報によって表された状態遷移の中から任意の状態遷移が指定されると、当該任意の状態遷移の実行時刻に基づいて、前記取得手順によって取得されたトレース群の中から前記任意の状態遷移に対応するトレースを検索する状態トレース検索手順、
前記任意の挙動と前記任意の状態遷移とをそれぞれ実行させた場合の動作の関連性についての指示を受け付けると、当該指示に応じて前記挙動トレース検索手順によって検索されたトレースと前記状態トレース検索手順によって検索されたトレースとを関連付ける関連付け手順、
前記関連付け手順によって関連付けられたトレース群を前記挙動のシミュレーション用のトレースとして出力する出力手順、
として機能させることを特徴とする検証支援プログラム。
【請求項２】
前記コンピュータを、さらに、
前記挙動トレース検索手順によって検索された各トレースと、当該各トレースにおいて読み出された関数情報を対応させたコールグラフを生成するコールグラフ生成手順、として機能させ、
前記出力手順は、前記コールグラフ生成手順によって生成されたコールグラフを出力することを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記コンピュータを、さらに、
前記状態トレース検索手順によって検索された各トレースと、当該各トレースにおいて遷移された状態情報とを対応させたステートグラフを生成するステートグラフ生成手順、として機能させ、
前記出力手順は、前記ステートグラフ生成手順によって生成されたステートグラフを出力することを特徴とする請求項１または２に記載の検証支援プログラム。
【請求項４】
前記コンピュータを、さらに、
前記出力手順によって出力されたシミュレーション用のトレースを用いて前記任意の挙動についてシミュレーションを実行する実行手順、
として機能させることを特徴とする請求項１〜３のいずれか一つに記載の検証支援プログラム。
【請求項５】
任意のシステムにおいて任意のアプリケーションを実行させた場合の各処理の実行時刻および実行内容の形跡を表すトレース群と、前記任意のアプリケーションを実行させた場合の前記任意のシステムのプロセッサの挙動を表す挙動情報および前記プロセッサ以外の任意のハードウェアの状態遷移を表す状態情報とを取得する取得手段と、
前記挙動情報によって表された挙動の中から任意の挙動が指定されると、当該任意の挙動の実行時刻に基づいて、前記取得手段によって取得されたトレース群の中から前記指定された挙動に対応するトレースを検索する挙動トレース検索手段と、
前記状態情報によって表された状態遷移の中から任意の状態遷移が指定されると、当該任意の状態遷移の実行時刻に基づいて、前記取得手段によって取得されたトレース群の中から前記任意の状態遷移に対応するトレースを検索する状態トレース検索手段と、
前記任意の挙動と前記任意の状態遷移とをそれぞれ実行させた場合の動作の関連性についての指示を受け付けると、当該指示に応じて前記挙動トレース検索手段によって検索されたトレースと前記状態トレース検索手段によって検索されたトレースとを関連付ける関連付け手段と、
前記関連付け手段によって関連付けられたトレース群を前記挙動のシミュレーション用のトレースとして出力する出力手段と、
を備えることを特徴とする情報処理装置。
【請求項６】
コンピュータが、
任意のシステムにおいて任意のアプリケーションを実行させた場合の各処理の実行時刻および実行内容の形跡を表すトレース群と、前記任意のアプリケーションを実行させた場合の前記任意のシステムのプロセッサの挙動を表す挙動情報および前記プロセッサ以外の任意のハードウェアの状態遷移を表す状態情報とを取得する取得工程と、
前記挙動情報によって表された挙動の中から任意の挙動が指定されると、当該任意の挙動の実行時刻に基づいて、前記取得工程によって取得されたトレース群の中から前記指定された挙動に対応するトレースを検索する挙動トレース検索工程と、
前記状態情報によって表された状態遷移の中から任意の状態遷移が指定されると、当該任意の状態遷移の実行時刻に基づいて、前記取得工程によって取得されたトレース群の中から前記任意の状態遷移に対応するトレースを検索する状態トレース検索工程と、
前記任意の挙動と前記任意の状態遷移とをそれぞれ実行させた場合の動作の関連性についての指示を受け付けると、当該指示に応じて前記挙動トレース検索工程によって検索されたトレースと前記状態トレース検索工程によって検索されたトレースとを関連付ける関連付け工程と、
前記関連付け工程によって関連付けられたトレース群を前記挙動のシミュレーション用のトレースとして出力する出力工程と、
を実行することを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、任意のシステムにおける動作検証を支援するための検証支援プログラム、情報処理装置および検証支援方法に関する。
【背景技術】
【０００２】
従来より、新たなシステムを開発し、さらにこのシステム上で動作させるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によって動作させるようなアプリケーションを開発する際には、システム自体やアプリケーションについての性能評価が必要となる。アプリケーションの性能評価を行うにはアプリケーションを動作させるシステムのハードウェア環境を考慮しなければならない。したがって、想定するシステムの開発完了後にこのシステム上でアプリケーションを動作させることによってはじめて正確な性能評価が可能となる。
【０００３】
そこで、近年では想定するシステムの開発完了を待たずに、想定するシステムのハードウェア環境をソフトウェアによって実現する仮想マシンを用意し、この仮想マシン上でアプリケーションを動作させることによって性能評価を行う手法も提供されている。図１７は、従来の仮想マシンの構成を示す説明図である。図１７のように、情報処理装置１０によって所定のソフトウェアを実行させることによって仮想マシン２０を実現する。
【０００４】
仮想マシン２０には、想定するシステムと同様のハードウェアをソフトウェアによって実現したハードウェアモデル２１と、ハードウェアモデル２１によって実現された各ハードウェア（図１７の例ではＣＰＵ、ハードマクロ、メモリ）の動作を制御する仮想マシンモニタ２２とが用意されている。そして、この仮想マシン２０上でＯＳ１３ならびに仮想マシン２０によって実現されたハードウェア環境に対応したドライバー１２を起動させることによってアプリケーション１１の動作を検証することができる。
【０００５】
図１８は、従来の仮想マシンにおける基本的なオペレーションを示す説明図である。図１８では、仮想マシン２０を用いてアプリケーション１１を検証する際の基本的なオペレーションの手順を示している。仮想マシン２０では、アプリケーション１１が読み込まれると、アプリケーション１１の記述に応じて、ハードウェアモデル２１内のＣＰＵ、ハードマクロそれぞれによって所定のオペレーションが実行される。また、ハードウェアモデル２１内のメモリは、ＣＰＵ、ハードマクロのオペレーションに応じて適宜アクセスされデータの書き込みならびに読み出しが行われる。
【０００６】
具体的に説明すると、ＣＰＵの場合、まず、アプリケーション１１から命令フェッチを行い（ステップＳ１１）、フェッチした命令を実行する（ステップＳ１２）。そして、命令の実行に応じてレジスタ／メモリを更新し（ステップＳ１４）、この更新処理に応じてバスアクセスが行われる（ステップＳ１３）。更新が終了すると、実機にて同一の命令を実行した場合の時間と消費電力が加算され（ステップＳ１５，１６）、ステップＳ１１に戻り、つぎの命令フェッチを行う。このステップＳ１５，Ｓ１６によって加算される時間ならびに消費電力は、あらかじめ実機の性能に応じた予測値や実測値が用意されており、これらの値が加算される。
【０００７】
同様に、ハードマクロの場合は、まず、アプリケーション１１の記述に応じたアルゴリズムを実行し（ステップＳ２１）、実行したアルゴリズムに応じてレジスタ／メモリを更新すると（ステップＳ２２）、この更新処理に応じてバスアクセスが行われる（ステップＳ２３）。更新が終了すると、ここでも、実機にて同一のアルゴリズムを実行した場合の時間と消費電力が加算され（ステップＳ２４，２５）、ステップＳ２１に戻り、つぎのアルゴリズムを実行する。ここでも、ステップＳ２４，２５によって加算される時間ならびに消費電力は、あらかじめ実機の性能に応じた予測値や実測値が用意され、これらの値が加算される。
【０００８】
なお、上述したＣＰＵならびにハードマクロそれぞれのオペレーションは、仮想マシンモニタ２２によって同期制御が行われる。したがって、仮想マシン２０によるオペレーション実行結果を取得することによって、実機と同様にアプリケーション１１をハードウェアモデル２１によって動作させた場合と同様にＣＰＵならびにハードマクロが協働したシミュレーション結果を得て動作を検証することができる。
【０００９】
また、図１９は、従来の仮想マシンを用いたアプリケーションの検証支援処理を示す説明図である。上述したように、仮想マシン２０を用いてアプリケーション１１の検証支援のために想定されるシステムを実現するためには、まず、Ｃモデル作成部３０によって、ハードマクロ仕様書３１を参照してハードマクロのシミュレーションモデルであるＣモデル３２を作成しなければならない。
【００１０】
そして、仮想マシン２０によって動作させるアプリケーション１１についても、実際にはそのまま利用できないため、コンパイラ・アセンブラ部４０によってアプリケーションバイナリ４２へ変換するとともに、アプリケーションバイナリ４２に付随した関数マップ情報４３を生成する必要がある。これらの準備が整うことによってはじめて仮想マシン２０によってアプリケーション１１のシミュレーションを実行することができる。
【００１１】
なお、Ｃモデル３２の作成に利用されたハードマクロ仕様書３１は、実チップ６０を製造する場合にも利用される。この場合、まず、ＲＴＬ作成部５０によってハードマクロ仕様書３１からＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述を作成する。そして、作成されたＲＴＬ記述／ネットリスト（ＲＴＬ記述から生成）５１を用いて実チップ６０が製造される。また、製造された実チップ６０によってアプリケーション１１を実行させた場合の性能・電力は、仮想マシン２０によるシミュレーション結果によって得られた性能・電力予測と比較することによって、シミュレーションの精度を確認することもできる。
【００１２】
しかしながら、実際に開発中のシステムの場合には、ハードウェア環境の仕様変更やハードマクロの追加などが頻繁に発生する可能性があり、正しいハードマクロ仕様書３１を用意することが困難な場合が多い。また、ハードマクロ仕様書３１が用意できた場合であってもＣモデル３２を作成するには、多大な時間や開発コストがかかってしまう。そして、実際に作成されたＣモデル３２を利用するには、実チップ６０の設計と同等の検証作業が必要となり、結果として検証者の負担が大きく、現実的な手法として採用できないという問題があった。
【００１３】
また、アプリケーション１１に関しても、実際に動作させるシステムのハードウェア環境が確定していないため、アプリケーションバイナリ４２がそのままでは、仮想マシン２０上で正常に動作しない事も多い。したがって、アプリケーションバイナリ４２に対して仮想マシン２０のハードウェア環境に対応させるための修正を施さなければならず、高精度な検証が必要とされる複雑なシステムほど、修正処理や、実際の検証に多大な時間を費やさなければならないという問題があった。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平８−２４１３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
この発明は、上述した従来技術による問題点を解消するため、ハードウェア環境の開発を待たずに対象とするシステムやアプリケーションの性能評価を可能にする検証支援プログラム、情報処理装置および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するため、開示する技術は、コンピュータを、任意のシステムにおいて任意のアプリケーションを実行させた場合の各処理の実行時刻および実行内容の形跡を表すトレース群と、前記任意のアプリケーションを実行させた場合の前記任意のシステムのプロセッサの挙動を表す挙動情報および前記プロセッサ以外の任意のハードウェアの状態遷移を表す状態情報とを取得する処理と、前記挙動情報によって表された挙動の中から任意の挙動が指定されると、当該任意の挙動の実行時刻に基づいて、前記取得されたトレース群の中から前記指定された挙動に対応するトレースを検索する処理と、前記状態情報によって表された状態遷移の中から任意の状態遷移が指定されると、当該任意の状態遷移の実行時刻に基づいて、前記取得されたトレース群の中から前記任意の状態遷移に対応するトレースを検索する処理と、前記任意の挙動と前記任意の状態遷移とをそれぞれ実行させた場合の動作の関連性についての指示を受け付けると、当該指示に応じて前記検索されたトレース群それぞれを関連付ける処理と、前記関連付けられたトレース群を前記挙動のシミュレーション用のトレースとして出力する処理と、を含むことを要件とする。
【発明の効果】
【００１７】
開示する技術によれば、ハードウェア環境の開発を待たずに、対象とするシステムやアプリケーションの性能評価を可能にするという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態にかかる検証支援処理の概要を示す説明図である。
【図２】本実施の形態にかかる情報処理装置によって実現される仮想マシンの構成を示す説明図である。
【図３】情報処理装置のハードウェア構成を示すブロック図である。
【図４】情報処理装置の機能的構成を示すブロック図である。
【図５】着目トレースの抽出処理を示す説明図である。
【図６】生トレース、ＣＰＵ挙動情報ならびにステート情報の構成を示す説明図である。
【図７】トレース抽出例（ＣＰＵ）を示す説明図である。
【図８】トレース抽出例（ハードマクロ）を示す説明図である。
【図９】トレースの関連付け処理を示す説明図である。
【図１０】トレースの関連付けの設定例を示す説明図である。
【図１１】トレースシミュレーションの実行処理を示す説明図である。
【図１２】関連付けＤＢからの関連付け情報の入力例を示す説明図である。
【図１３】トレースシミュレーションの実行例を示す説明図である。
【図１４】トレースシミュレーションにおける入出力例を示す説明図である。
【図１５】仮想マシンにおける基本的なオペレーションを示す説明図である。
【図１６】複数のアプリケーションを実行するシステムにおける検証支援処理の適用手順を示す説明図である。
【図１７】従来の仮想マシンの構成を示す説明図である。
【図１８】従来の仮想マシンにおける基本的なオペレーションを示す説明図である。
【図１９】従来の仮想マシンを用いたアプリケーションの検証支援処理を示す説明図である。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して、開示する技術の好適な実施の形態を詳細に説明する。まず、検証対象となるアプリケーションを任意のハードウェアによって動作させた際の実行形跡であるトレースを用意する。そして、このトレースの中から、所望のシステムにおいて、アプリケーションが指定された処理を実行した場合の実行形跡となるトレースのみを抽出する。ここで抽出されたトレースを用いて、アプリケーションのシミュレーションを行う。このシミュレーション結果を参照することによって、検証対象となるシステムにおいてアプリケーションが検証対象となる処理をおこなった場合の動作を検証可能にする。すなわち、システムのハードウェア環境の開発が完了していない設計段階から、このシステムにおいてアプリケーションを実行させた場合の高性能な性能評価を行うことができる。以下、このような動作を実現するための具体的な構成について説明する。
【００２０】
（検証支援処理の概要）
まず、本実施の形態にかかる検証支援処理の概要について説明する。図１は、本実施の形態にかかる検証支援処理の概要を示す説明図である。本実施の形態では、検証対象となるシステムを忠実に再現した仮想マシンを用意する必要はなく、任意のシステムにおいて検証対象となるアプリケーションを実行させた際の実行形跡を表すトレース群（後述する「生トレース」）を取得する。なお、上述したトレースを採取するための任意のシステムは、検証対象となるＣＰＵや動作に関連するハードマクロを備えた構成がそれぞれあればよい。
【００２１】
また、検証対象となるシステムによってアプリケーションを実行させた場合と異なって、任意のシステムによってアプリケーションを実行させた場合に得られるトレース群には、検証したい動作以外の処理や任意のシステム内の他のハードウェアの挙動についての実行形跡が含まれている。さらに、採取したトレース群の中には任意のシステムに搭載されているＯＳの挙動についての実行形跡なども含まれている。これらの情報は、検証対象となるシステムにおけるアプリケーションの動作を検証する場合には、不必要な雑情報となる。
【００２２】
したがって、本実施の形態では、情報処理装置を用いて、これらのトレース群の中から検証したい動作に関するトレースのみを適切に抽出する。そして、抽出したトレースを動作させた場合の読み出しや戻り値などの関連付けを行い、抽出したトレースのみで、検証対象となる動作についてのシミュレーションを実行させる。そして、検証者が、このシミュレーション結果を検証することによって（検証ツールなどを利用してもよい）、検証対象となるシステム（ターゲットシステム）において、任意のアプリケーションを実行させた場合の性能評価を行うことができる。
【００２３】
上述のような検証支援処理を実現するため、本実施の形態では、Ａ，Ｂ，Ｃ，Ｄの４つの処理を行う。
【００２４】
Ａ：検証対象となるＣＰＵの挙動に対応したトレースの抽出
Ｂ：検証対象となるハードマクロの状態遷移に対応したトレースの抽出
Ｃ：抽出したトレース同士の関連付け情報の作成
Ｄ：抽出したトレースを用いたトレースシミュレーション
【００２５】
また、Ａ，Ｂの処理を開始するための前処理として、検証支援装処理をおこなう情報処理装置は、任意のシステムによってアプリケーションを実行させて採取したトレース群を生トレース１０１として取得するとともに、上述のアプリケーションを実行させた際の関連情報（ＯＳ挙動情報、ステート情報）１０２を取得しておく（ステップＳ１００）。関連情報１０２とは、ＣＰＵやハードマクロなど、システム内のハードウェアの動作状態を表す情報である。この関連情報１０２は、生トレース１０１と同様に、任意のアプリケーションを実行した任意のシステムから採取することができる。なお、生トレース１０１ならびに関連情報１０２を採取する任意のシステムは、実機環境でもよいし、仮想マシンなどによるソフトウェア環境でもよい。
【００２６】
そして、情報処理装置は、Ａの処理としてステップＳ１００によって取得された関連情報１０２の中のＯＳ挙動情報に基づいて生トレース１０１の中から検証者が着目した挙動に対応する着目トレース１１１を抽出する（ステップＳ１１０）。検証者が着目した挙動とは、検証したい動作に関する挙動である。
【００２７】
同じく、情報処理装置は、Ｂの処理としてステップＳ１００によって取得された関連情報１０２の中のステート情報に基づいて生トレース１０１の中から検証者が着目した状態遷移に対応する着目トレース１１１を抽出する（ステップＳ１１０）。
【００２８】
つぎに、Ｃの処理として、情報処理装置は、抽出された着目トレース１１１を構成するトレース間の関連付け情報を作成する（ステップＳ１２０）。処理Ａ，Ｂにて説明したように、着目トレースには、ＣＰＵの挙動を表すトレースとハードマクロの状態遷移を表すトレースとが存在する。したがって、トレース間の関連付け情報とは、ＣＰＵのどの挙動に応答してハードマクロの状態遷移が変化したかといった対応付けを表す情報である。着目トレース１１１自体は、任意のシステムによってアプリケーションが実行された実行形跡であるため、検証したい動作以外の処理が含まれていたり、他のハードウェアの呼び出し処理が含まれていることがあるため、ＣＰＵとハードマクロとが直接対応付けられているとは限らない。
【００２９】
したがって、Ｃの処理において、情報処理装置は、外部からトレース間の関連付け指示を受け付けることによって、抽出した着目トレース１１１がシームレスに動作するように関連付け情報を作成する。なお、ステップＳ１２０によって作成された関連付け情報は関連付けＤＢ１２１に格納される。
【００３０】
最後に、Ｄの処理として情報処理装置は、Ａ，Ｂによって抽出された着目トレース１１１と、Ｃの処理によって作成された関連付け情報が格納された関連付けＤＢ１２１とを利用して検証者が検証したい動作についてトレースシミュレーションを行う（ステップＳ１３０）。上述したように、着目トレース１１１同士ではＣＰＵとハードマクロとの対応関係が正しく設定されていない場合があるため、情報処理装置は、関連付けＤＢ１２１に格納された関連付け情報を参照して着目トレース１１１のトレースシミュレーションを行う。
【００３１】
このように、本実施の形態にかかる検証支援処理を用いることによって、検証対象となるシステムのハードウェア環境が開発途中であったり、設計段階で実機の仕様が確定していないような早期の段階からシステムの性能評価が可能となる。以下に、本実施の形態にかかる検証支援処理を実現するための具体的な構成ならびに動作について順次説明する。
【００３２】
（仮想マシンの構成）
つぎに、本実施の形態にかかる情報処理装置１００によって構成される仮想マシンの構成について説明する。図２は、本実施の形態にかかる情報処理装置によって実現される仮想マシンの構成を示す説明図である。本実施の形態の場合、仮想マシンによって検証対象となるシステムのハードウェア環境を忠実に再現する必要はなく、類似するハードウェア環境によって任意のアプリケーションを実行させた場合のトレースを採取すればよい。その後、採取したトレースを加工（トレースの抽出・関連付け）することによって、あたかも検証対象となるシステム上で実行させたかのようなシミュレーション結果を得ることができる。
【００３３】
したがって、本実施の形態にかかる情報処理装置１００によって実現する仮想マシン２１０は、検証したい動作によってＣＰＵから呼び出されるハードマクロを備えた構成であればよい。したがって、ここでは、図２のように、ＣＰＵ２１１、ハードマクロ２１２およびメモリ２１３を備えたハードウェアモデル２１０ａと、仮想マシンモニタ２１０ｂによって構成されている。しかしながら、仮想マシン２１０は、トレースを加工するための情報として、着目トレース（ＣＰＵトレース１１１ａ、ハードマクロトレース１１１ｂ）の格納部と、関連付けＤＢ１２１とが用意されている。
【００３４】
なお、仮想マシン２１０上で動作させるアプリケーション２０１は、検証対象となるシステムによって動作させたい（検証したい）アプリケーションを用意するが、ドライバ２０２、ＯＳ２０３は、仮想マシン２１０のハードウェアモデル２１０ａに対応していればよい。
【００３５】
（情報処理装置のハードウェア構成）
まず、本実施の形態にかかる情報処理装置のハードウェア構成について説明する。図３は、情報処理装置１００のハードウェア構成を示すブロック図である。図３において、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０６と、入力デバイス３０７と、出力デバイス３０８と、を備えている。また、各構成部はバス３１０によってそれぞれ接続されている。
【００３６】
ここで、ＣＰＵ３０１は、情報処理装置１００の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムや、本実施の形態にかかる検証支援処理を実現するための検証支援プログラムなどの各種プログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがって磁気ディスク３０５に対するデータの更新／参照を制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。なお、図４のハードウェア構成では、記録媒体として、磁気ディスク３０５を用いているが、光ディスクや、フラッシュメモリなど他の記録媒体を利用してもよい。
【００３７】
通信Ｉ／Ｆ３０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク（ＮＥＴ）３０９に接続され、このネットワーク３０９を介して他の情報処理装置１００やその他の外部装置に接続される。そして、通信Ｉ／Ｆ３０６は、ネットワーク３０９と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信Ｉ／Ｆ３０６の構成例としては、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３８】
入力デバイス３０７は、情報処理装置１００に対しての外部からの入力を受け付ける。入力デバイス３０７としては、具体的には、キーボード、マウスなどが挙げられる。なお、図２に示したような情報処理装置１００によって、シミュレーションを行うアプリケーション２０１は、ＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域にあらかじめ格納されていてもよいが、入力デバイス３０７から入力されて、上述の記憶領域に格納されてもよい。
【００３９】
キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４０】
出力デバイス３０８は、情報処理装置１００に配置されたデータや、シミュレーションの実行結果などを出力する。出力デバイス３０８としては、具体的には、ディスプレイ、プリンタなどが挙げられる。
【００４１】
ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
【００４２】
（情報処理装置の機能的構成）
つぎに、情報処理装置１００の機能的構成について説明する。図４は、情報処理装置の機能的構成を示すブロック図である。図４のように、情報処理装置１００は、取得部４０１と、挙動トレース検索部４０２と、状態トレース検索部４０３と、関連付け部４０４と、出力部４０５と、実行部４０６と、生成部４０７と、表示部４０８と、を含む構成である。この制御部となる機能（取得部４０１〜表示部４０８）は、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶された検証支援プログラムをＣＰＵ３０１に実行させることにより、または、通信Ｉ／Ｆ３０６により、その機能を実現する。
【００４３】
取得部４０１は、生トレース１０１とＯＳ挙動情報ならびにステート情報１０２とを取得する機能を有する。生トレース１０１とは、上述したように、任意のシステムにおいて任意のアプリケーションを実行させた場合のＣＰＵ２１１もしくはＣＰＵ２１１以外のハードマクロの各処理の実行時刻および実行内容の形跡を表すトレース群である。ここでＣＰＵ２１１以外のハードマクロに対する生トレースの場合は、当該ハードマクロ内の各動作ブロックが同時刻に行った実行内容の形跡が全て含まれる。また、ＯＳ挙動情報１０２ａとは、上述した任意のアプリケーションを実行させた場合のシステム内のＣＰＵ２１１の挙動を表す情報である。そして、ステート情報１０２ｂとは、同じく上述した任意のアプリケーションを実行した場合のシステム内のＣＰＵ以外のハードウェア、すなわち、任意のアプリケーションの実行によってＣＰＵ２１１から呼び出されるハードマクロ内の各動作ブロックの状態遷移を表す。
【００４４】
なお、取得された生トレース１０１とＯＳ挙動情報ならびにステート情報１０２は、一旦、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶される。また、これら取得部４０１によって取得される情報は、検証対象として想定されるシステムに近いハードウェア環境をもつ実機によって任意のアプリケーションを実行した場合の実行結果を取得してもよい。また、他の仮想マシンによって任意のアプリケーションを実行させた場合の実行結果を取得してもよい。
【００４５】
挙動トレース検索部４０２は、ＯＳ挙動情報によって表された挙動の中から任意の挙動が指定されると、この任意の挙動の実行時刻に基づいて、生トレース１０１として取得されたトレース群の中から上述の任意の挙動に対応するトレースを検索する機能を有する。
【００４６】
状態トレース検索部４０３は、ステート情報によって表された状態遷移の中から任意の状態遷移が指定されると、この任意の状態遷移の実行時刻に基づいて、生トレース１０１として取得されたトレース群の中から上述の任意の状態遷移に対応するトレースを検索する。
【００４７】
なお、挙動トレース検索部４０２および状態トレース検索部４０３によって検索されたトレースは、一旦、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶され、着目トレース１１１として抽出された状態で保存される。
【００４８】
また、上述した挙動トレース検索部４０２ならびに状態トレース検索部４０３では、着目するべき挙動ならびに状態遷移についての指示をそれぞれ独立して受付けていたが、特定の挙動が指定されると、自動的に挙動に対応する状態遷移を指定するような構成にしてもよい。このような構成にする場合には、挙動トレース検索部４０２によって任意の挙動が指定されると、この任意の挙動に応じたハードウェアの状態遷移を特定する特定部（不図示）を用意する。そして、状態トレース検索部４０３は、この特定部によって特定された状態遷移の実行時刻に基づいて、生トレース１０１の中から抽出して特定された状態遷移に対応するトレースを検索する。
【００４９】
関連付け部４０４は、上述の任意の挙動と任意の状態遷移とをそれぞれ実行させた場合の各動作の関連性についての指示を受け付けると、この指示に応じて挙動トレース検索部４０２によって検索されたトレースと状態トレース検索部４０３によって検索されたトレースとを関連付ける機能を有する。関連付け部４０４によって関連付けされた各トレースの対応情報は、関連付け情報としてＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶される。
【００５０】
出力部４０５は、関連付け部４０４によって関連付けられたトレース群を挙動についてのシミュレーションを行うための専用のトレース（着目トレース１１１）として出力する機能を有する。出力トレースは、一旦、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶される。
【００５１】
実行部４０６は、出力部４０５によって出力されたシミュレーション用のトレースを用いて任意の挙動についてシミュレーションを実行する機能を有する。なお、図４にて説明した情報処理装置１００の場合、実行部４０６を備え、情報処理装置１００内で所望する動作についてのシミュレーションを実行することができるが、実行部４０６の機能を外部の機器によって実現させてもよい。実行部４０６の機能を外部に用意した場合、情報処理装置１００は、シミュレーション用のトレース群を作成する装置として提供してもよい。このように、機能ごとに装置を分けることによって装置に求められる処理性能を低く設定することができる。また、既存の装置を利用してシミュレーションを実行させてもよい。
【００５２】
また、情報処理装置１００は、検証者からのＣＰＵの挙動に対応したトレースとハードマクロの状態遷移に対応したトレースとの関連付け指示１０３を受け付けているが、このとき、検証者による関連付け指示１０３の入力を補助する機能を備えていてもよい。図４の場合、生成部４０７によって、各トレースの状態を表すグラフ（後述のコールグラフ、ステートグラフ）を生成する機能が用意されている。
【００５３】
生成部４０７は、挙動トレース検索部４０２によって検索された各トレースと、当該各トレースにおいて読み出された関数情報とを対応させたコールグラフを生成する機能を有している。更に、生成部４０７は、状態トレース検索部４０３によって検索された各トレースと、当該各トレースにおいて遷移された状態情報とを対応させたステートグラフを生成する機能も有している。生成されたコールグラフ、ステートグラフは、一旦、ＲＡＭ３０３、磁気ディスク３０５などの記憶領域に記憶された後、出力部４０５に出力させて検証者に提供してもよい。
【００５４】
抽出したトレースからグラフを生成することによって、検証者が各トレースの対応関係を容易に把握できるような情報を提供することができる。結果として、検証者の関連付け指示の入力操作を支援するため、検証者の負担を軽減させることができる。
【００５５】
表示部４０８は、出力部４０５によって出力された情報を情報処理装置１００に接続可能な表示機器によって表示させる。なお、情報処理装置１００の出力デバイス３０８としてディスプレイが用意されている場合には、このディスプレイを表示機器として表示させてもよい。表示部４０８によって表示される情報としては、挙動トレース検索部４０２、状態トレース検索部４０３によって検索されたトレース群（着目トレース１１１）や、上述した生成部４０７によって生成されたコールグラフ、ステートグラフ、また、実行部４０６によって実行されたシミュレーション結果１２１を表示させてもよい。
【００５６】
以上説明したように、情報処理装置１００では、仮想マシン２１０を実現する機能部に加えて、トレースを加工して検証対象となる動作に着目したシミュレーションを実行するための機能部（取得部４０１〜表示部４０８）が用意されている。
【００５７】
つぎに、情報処理装置１００によって図１にて説明したＡ〜Ｄの処理を行う際の具体的な動作について説明する。
【００５８】
（Ａ，Ｂ：着目トレースの抽出）
まず、図１に示した処理Ａ，Ｂについて説明する。これらの処理は、生トレース１０１の中から、検証対象となる処理に関するトレースを着目トレース１１１として抽出する処理である。そして、図５は、着目トレースの抽出処理を示す説明図である。図５のように、まず着目トレース１１１の抽出処理の前処理（ステップＳ１００）として、情報処理装置１００は、トレース生成が可能な実機環境もしくはトレース生成が可能なＥＳＬ（Ｅｌｅｃｔｒｏｎｉｃ  Ｓｙｓｔｅｍ  Ｌｅｖｅｌ）環境を実現する（ステップＳ５０１，Ｓ５０２）。そして、これらの環境におけるアプリケーションの実行結果から、生トレース１０１、ＯＳ挙動情報１０２ａ、ステート情報１０２ｂを採取する。ＥＳＬ環境とは、ＥＳＬ設計によって作成されたソフトウェアモデルによって実現された動作環境である。ＥＳＬ設計の場合、たとえば、Ｃ＋＋などのような高級言語を使ってシステムの動作を表現し、さらにシステムをモデル化し、ソフトウェア/ハードウェアの構成要素を規定することができる。
【００５９】
つぎに、情報処理装置１００は、着目トレース１１１の抽出のため、トレースの解析をおこなう（ステップＳ５０３）。トレースの解析とは、取得した生トレース１０１、ＯＳ挙動情報１０２ａ、ステート情報１０２ｂのデータを読み出し、検証対象として指定された動作に対応するトレースを、ＯＳ挙動情報１０２ａ、ステート情報１０２ｂを参照して検索する処理が含まれる。
【００６０】
ここで、図６は、生トレース、ＣＰＵ挙動情報ならびにステート情報の構成を示す説明図である。ステップＳ１００によって取得された生トレース１０１は、データ列６００のような構成のデータ群である。また、同じくステップＳ１００によって取得されたＯＳ挙動情報１０２ａ、ステート情報１０２ｂは、それぞれデータ列６１０，６２０のような構成のデータ群である。
【００６１】
そして、ＣＰＵの挙動に対応するトレースを検索する場合には、ステップＳ５０３において、たとえば、着目するスレッド／プロセスの指定を受け付ける（一例であり、他にタスクを受け付けてもよい）。また、同じくハードマクロの状態遷移に対応するトレースを検索する場合には、ステップＳ５０３において、着目するステートの指定を受け付ける。
【００６２】
ステップＳ５０３によって、着目するスレッド／プロセスならびにステートが指定されると、取得したＯＳ挙動情報１０２ａ、ステート情報１０２ｂ内のスレッド／プロセスコード、ステートコードと一致するか否かを判断する（ステップＳ５０４）。一致しなければ（ステップＳ５０４：Ｎｏ）、ステップＳ５０３に戻り、つぎのトレースを解析する。そして、一致するＯＳ挙動情報１０２ａ、ステート情報１０２ｂ内のスレッド／プロセスコード、ステートコードと一致すると判断された場合（ステップＳ５０４：Ｙｅｓ）、生トレース１０１中から一致したＯＳ挙動情報１０２ａ、ステート情報１０２ｂのタイムスタンプと対応するトレースを検索して、着目トレース１１１として抽出する。以下に、ＯＳ挙動情報１０２ａを用いたトレース抽出と、ステート情報１０２ｂを用いたトレース抽出の具体例を挙げる。
【００６３】
＜トレース抽出例（ＣＰＵ）＞
図７は、トレース抽出例（ＣＰＵ）を示す説明図である。たとえば、仮想マシン２１０によって再現したハードウェアモデル２１０ａから生トレース１０１とＯＳ挙動情報１０２ａが採取される。図７のように、ｐｉｄ（プロセスＩＤ）＝５２０が着目されると、タイムスタンプ３９２０３９２を参照する。そして生トレース１０１からタイムスタンプ３９２０３９２〜４５３８２９３（つぎのプロセスのタイムスタンプ）の間のトレースをプロセス／タスク単位で抽出する。
【００６４】
その後、ＯＳ挙動情報に記述されている各アドレスに対応する関数名の設定が格納された関数マップ情報７０１を用いてコールグラフを作成した後、着目トレース１１１として提供される。このとき抽出した着目トレース１１１は、図７のように時間軸に沿って、あるまとまりの単位（図７の例では、関数単位）で視覚化して提供されてもよい。
【００６５】
＜トレース抽出例（ハードマクロ）＞
図８は、トレース抽出例（ハードマクロ）を示す説明図である。たとえば、仮想マシン２１０によって再現したハードウェアモデル２１０ａから生トレース１０１とステート情報１０２ｂが採取される。図８のように、内部動作ブロックＡとそれに対応するＳｔａｔｅＡ＝３（Ｒｕｎ）が着目されると、タイムスタンプ３３９１３２３を参照する。そして生トレース１０１からタイムスタンプ３３９１３２３〜３５０８７２３（つぎステート変化時のタイムスタンプ）の間のトレースを着目する動作ブロックＡに関して抽出する。
【００６６】
その後、ステート情報に記述されている各ステートコードに対応するステート名の設定が格納されたステートマップ情報８０１を用いてステートグラフを作成した後、着目トレース１１１として提供される。このとき抽出した着目トレース１１１は、図８のように、時間軸に沿って、あるまとまりの単位で階層化、視覚化してもよい。
【００６７】
（Ｃ：トレースの関連付け処理）
つぎに、図１にて説明したＣのトレースの関連付け処理について説明する。図９は、トレースの関連付け処理を示す説明図である。図９に示した左半分の処理ステップＳ９１１〜Ｓ９１３は、図７にて説明した着目トレース１１１をコールグラフとして提供する処理を表している。同様に、右半分の処理ステップＳ９２１〜Ｓ９２３は、図８にて説明した着目トレース１１１をステートグラフとして提供する処理を表している。検証者は、作成されたコールグラフとステートグラフを比較して、各トレースの関連付け指示１０３を入力する。
【００６８】
図１０は、トレースの関連付けの設定例を示す説明図である。情報処理装置１００では、図１０のように、タイムスタンプの時刻を基準にコールグラフおよびステートグラフによって表された動作を視覚的に提供することができる。したがって、検証者は、ＣＰＵの挙動とハードマクロのステートを比較して、各動作の関連箇所を設定する。たとえば、図１０の例では、ＣＰＵのＳ１の挙動［Ｋｉｃｋ］の処理対象としてハードマクロのＨ１のステート変化［ｓｅｔｕｐ／ｓｔａｒｔ］に関連付けＲ１が指示されている。同様に、図１０の例では、検証者によってＲ２，Ｒ３の関連付け指示が行われている。
【００６９】
図９の説明に戻り、関連付け指示１０３が入力されると、入力された指示に応じて関数もしくはステート情報とを相互に関連付けし（ステップＳ９１４）、この関連付け結果を関連付けＤＢ１２１に格納する。
【００７０】
（Ｄ：トレースシミュレーション）
最後に、図１にて説明したＤのトレースシミュレーションについて説明する。図１１は、トレースシミュレーションの実行処理を示す説明図である。図１１のように、情報処理装置１００は、抽出トレース１１１と関連付けＤＢ１２１を参照して、初期トレースの読み込みを行う（ステップＳ１１０１）。
【００７１】
つぎに、情報処理装置１００は、関連付けＤＢ１２１を参照して［現在のトレースポインタ］に処理すべき項目があるか否かを判断する（ステップＳ１１０２）。図１２は、関連付けＤＢからの関連付け情報の入力例を示す説明図である。関連付けＤＢ１２１から読込んだ関連付け情報はデータ列１２００のようなデータによって構成されている。したがって、ステップＳ１１０２において、処理すべき項目があると判断された場合（ステップＳ１１０２：Ｙｅｓ）、つぎに、情報処理装置１００は、対応するトレースポインタからのトレース実行を追加する（ステップＳ１１０３）。
【００７２】
そして、情報処理装置１００は、トレース内容にしたがって内部情報とバスアクセスを実行する（ステップＳ１１０４）。なお、ステップＳ１１０２において、処理すべき項目がないと判断された場合（ステップＳ１１０２：Ｎｏ）にも、このステップＳ１１０４の処理に移行する。
【００７３】
ステップＳ１１０４の処理が終了すると、情報処理装置１００は、着目トレース１１１の中に実行するトレースが残っているか否かを判断する（ステップＳ１１０５）。このステップＳ１１０５において、実行するトレースが残っていると判断された場合（ステップＳ１１０５：Ｙｅｓ）、ステップＳ１１０２の処理に戻り、情報処理装置１００は、残りのトレース内容を実行する。そして、ステップＳ１１０５において、実行するトレースが残っていない（ステップＳ１１０５：Ｎｏ）と判断されると、着目トレース１１１を利用したトレースシミュレーションが完了したと判断され、情報処理装置１００は、シミュレーション結果１３１を出力する。
【００７４】
ここで、図１３は、トレースシミュレーションの実行例を示す説明図である。あるシステム上で任意のアプリケーションを実行する場合、図１２によって説明したＣＰＵとハードマクロに関する動作にも様々な要因が影響することがある。したがって、実際にトレースシミュレーションを実行する場合には、検証対象となるシステムに応じて想定される外乱（検証対象となるハードマクロ以外のハードウェアによって生じるノイズなど）に関するトレースを用意してシミュレーションを行うことによって、より精度の高い性能評価が可能になる。なお、外乱に関するトレースも実機環境から採取してもよいし、ソフトウェア環境から採取してもよい。
【００７５】
そして、図１４は、トレースシミュレーションにおける入出力例を示す説明図である。入力情報として外乱を加えることによって、ＣＰＵならびにハードマクロに関しても図１１〜１３にて説明したトレースシミュレーションを実行することによって、外乱を含んだシミュレーション結果を得ることができる。
【００７６】
（仮想マシンにおける基本的なオペレーション）
つぎに、本実施の形態にかかる情報処理装置１００によって実現された仮想マシン２１０によって検証対象となる動作を検証する場合の基本的なオペレーションについて説明する。図１５は、仮想マシンにおける基本的なオペレーションを示す説明図である。図１８では、従来の仮想マシン２０の基本的なオペレーションについて説明したが、図１５では、トレースを読み込んだシミュレーションがオペレーションの主たる処理となる。
【００７７】
具体的に説明すると、ＣＰＵの場合、まず、情報処理装置１００は、ＣＰＵトレース（ＣＰＵの挙動に関する着目トレース）を読込み（ステップＳ１５１１）、関連付けＤＢ１２１を参照する（ステップＳ１５１２）。その後、情報処理装置１００は、内部状態を更新し（ステップＳ１５１３）、更新処理に応じてバスアクセスが行われる（ステップＳ１５１４）。更新が終了すると、実機にて同一の命令を実行した場合の時間と消費電力が加算され（ステップＳ１５１５，Ｓ１５１６）、ステップＳ１５１１に戻り、つぎのＣＰＵトレースの読込みに移行する。このステップＳ１５１５，Ｓ１５１６によって加算される時間ならびに消費電力は、あらかじめ実機の性能に応じた予測値や実測値が用意されており、これらの値が加算される。
【００７８】
同様に、ハードマクロの場合、情報処理装置１００は、ハードトレース（ハードマクロの挙動に関する着目トレース）を読込み（ステップＳ１５２１）、関連付けＤＢ１２１を参照する（ステップＳ１５２２）。その後、内部状態を更新し（ステップＳ１５２３）、更新処理に応じてバスアクセスが行われる（ステップＳ１５２４）。更新が終了すると、実機にて同一の処理を実行した場合の時間と消費電力が加算され（ステップＳ１５２５，Ｓ１５２６）、ステップＳ１５２１に戻り、つぎのＣＰＵトレースの読込みに移行する。ここでも、ステップＳ１５２４，Ｓ１５２５によって加算される時間ならびに消費電力は、あらかじめ実機の性能に応じた予測値や実測値が用意され、これらの値が加算される。
【００７９】
なお、上述したＣＰＵならびにハードマクロそれぞれのオペレーションは、仮想マシンモニタ２２によって同期制御が行われる。したがって、仮想マシン２１よるオペレーション実行結果を取得することによって、実機と同様にアプリケーション１１をハードウェアモデル２１によって動作させた場合と同様にＣＰＵならびにハードマクロが協働したシミュレーション結果を得て動作を検証することができる。
【００８０】
（複数のアプリケーションの検証）
上述した検証支援処理の場合、検証対象システムにおいてある特定のアプリケーションを実行する場合の動作について着目して性能評価を行ったが、実際には検証対象システムでは、用途の異なる複数のアプリケーションが実行されるような場合が大半を占める。そして、検証者からも、これら複数のアプリケーションの検証が可能になるような技術が求められている。したがって、以下に、検証対象システムによって実行される複数のアプリケーションについてそれぞれトレースシミュレーションを実行する場合の検証支援処理の適用手順について説明する。
【００８１】
図１６は、複数のアプリケーションを実行するシステムにおける検証支援処理の適用手順を示す説明図である。図１６のように、同一の検証対象システムにおいて動作する複数のアプリケーションの動作についての検証を行う場合には、Ｓｔｅｐ１〜Ｓｔｅｐ３に大別された３つの処理が必要となる。
【００８２】
・Ｓｔｅｐ１：検証対象システムをＳＷ（アプリ）、ＨＷ（マクロ）など検証対象として必要な構成に分割する。図１６の例では、画面制御、動画、音声の３つの検証対象の構成ごとに分割されている。
【００８３】
・Ｓｅｔｐ２：任意のシステムから選択した検証対象の構成の動作に最も類似するシステムを選択し、生トレース１０１ならびに関連情報１０２を採取する。このとき、検証対象システムの構成により近づけるため、必要により任意のシステムに部品追加してから生トレース１０１を採取してもよい。
【００８４】
・Ｓｔｅｐ３：最後に、各構成について本実施の形態にかかる検証支援処理（Ａ〜Ｃの処理）を実行し、着目トレース１１１を抽出する。抽出した構成ごとの着目トレース１１１は、検証対象システムの構成情報や同期情報などに基づいて再構築される。そして、再構築したトレース群を用いて検証対象となるシステムのトレースシミュレーションが実行される。
【００８５】
このように、実際には、複数のハードウェアからなるシステムを証対象システム内で複数のアプリケーションを動作させた場合の性能評価が求められており、上述した３つのステップによって柔軟に対応することができる。また、図１６のように画面制御、動画、音声の構成ごとに抽出されたトレースＡ，Ｂ，Ｃは、同様の構成を用いる他の検証対象システムについての性能評価の際に再利用することができる。
【００８６】
たとえば、あるシステムＡにおいて、Ｓｔｅｐ１の処理によって分割した検証対象として図１５の画像制御に相当する構成含まれていれば、トレースＡをそのまま利用して、Ｓｔｅｐ３の処理の際にシステムＡの構成に応じて着目トレースを再構築すればよい。
【００８７】
このように、本実施の形態では、ハードウェア環境やＯＳにかかわらず、トレースを基準にシミュレーションを実行する手法をとることにより、従来困難であった、システムの開発段階、さらには、システム自体がまだ存在しないような初期段階であっても、検証対象となるシステムの性能評価を可能にすることができる。また、ハードウェア環境の開発と並行してアプリケーションを検証できるため、検証結果をハードウェア環境の開発にフィードバックするためより高精度な検証を早期に実現することができる。
【００８８】
また、一旦採取したトレースは、他のシステムを検証する際に再利用することができる。したがって、本実施の形態にかかる検証支援処理を利用するほど、システムの検証に要する時間やコストの削減が見込まれる。
【００８９】
また、本実施の形態にかかる検証支援処理は、上述した情報処理装置１００としての実現にとどまらず、たとえば、特定アプリケーション向けハードウェアや、マルチコアシステムの性能・電力見積りを行う低電力化ツールにも応用が可能である。
【００９０】
なお、本実施の形態で説明した検証支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布してもよい。
【００９１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００９２】
（付記１）コンピュータを、
任意のシステムにおいて任意のアプリケーションを実行させた場合の各処理の実行時刻および実行内容の形跡を表すトレース群と、前記任意のアプリケーションを実行させた場合の前記任意のシステムのプロセッサの挙動を表す挙動情報および前記プロセッサ以外の任意のハードウェアの状態遷移を表す状態情報とを取得する取得手順、
前記挙動情報によって表された挙動の中から任意の挙動が指定されると、当該任意の挙動の実行時刻に基づいて、前記取得手順によって取得されたトレース群の中から前記指定された挙動に対応するトレースを検索する挙動トレース検索手順、
前記状態情報によって表された状態遷移の中から任意の状態遷移が指定されると、当該任意の状態遷移の実行時刻に基づいて、前記取得手順によって取得されたトレース群の中から前記任意の状態遷移に対応するトレースを検索する状態トレース検索手順、
前記任意の挙動と前記任意の状態遷移とをそれぞれ実行させた場合の動作の関連性についての指示を受け付けると、当該指示に応じて前記挙動トレース検索手順によって検索されたトレースと前記状態トレース検索手順によって検索されたトレースとを関連付ける関連付け手順、
前記関連付け手順によって関連付けられたトレース群を前記挙動のシミュレーション用のトレースとして出力する出力手順、
として機能させることを特徴とする検証支援プログラム。
【００９３】
（付記２）前記コンピュータを、さらに、
前記挙動トレース検索手順において、前記任意の挙動が指定されると、当該任意の挙動に応じた前記任意のハードウェアの状態遷移を特定する特定手順として機能させ、
前記状態トレース検索手順は、前記特定手順によって特定された状態遷移の実行時刻に基づいて、前記取得手順によって取得されたトレース群の中から前記状態遷移に対応するトレースを検索することを特徴とする付記１に記載の検証支援プログラム。
【００９４】
（付記３）前記コンピュータを、さらに、
前記挙動トレース検索手順によって検索された各トレースと、当該各トレースにおいて読み出された関数情報を対応させたコールグラフを生成するコールグラフ生成手順、として機能させ、
前記出力手順は、前記コールグラフ生成手順によって生成されたコールグラフを出力することを特徴とする付記１または２に記載の検証支援プログラム。
【００９５】
（付記４）前記コンピュータを、さらに、
前記状態トレース検索手順によって検索された各トレースと、当該各トレースにおいて遷移された状態情報とを対応させたステートグラフを生成するステートグラフ生成手順、として機能させ、
前記出力手順は、前記ステートグラフ生成手順によって生成されたステートグラフを出力することを特徴とする付記１〜３のいずれか一つに記載の検証支援プログラム。
【００９６】
（付記５）前記コンピュータを、さらに、
前記出力手順によって出力された情報を前記コンピュータに接続可能な表示機器によって表示させる表示手順、として機能させることを特徴とする付記１〜４のいずれか一つに記載の検証支援プログラム。
【００９７】
（付記６）前記コンピュータを、さらに、
前記出力手順によって出力されたシミュレーション用のトレースを用いて前記任意の挙動についてシミュレーションを実行する実行手順、
として機能させることを特徴とする付記１〜５のいずれか一つに記載の検証支援プログラム。
【００９８】
（付記７）任意のシステムにおいて任意のアプリケーションを実行させた場合の各処理の実行時刻および実行内容の形跡を表すトレース群と、前記任意のアプリケーションを実行させた場合の前記任意のシステムのプロセッサの挙動を表す挙動情報および前記プロセッサ以外の任意のハードウェアの状態遷移を表す状態情報とを取得する取得手段と、
前記挙動情報によって表された挙動の中から任意の挙動が指定されると、当該任意の挙動の実行時刻に基づいて、前記取得手段によって取得されたトレース群の中から前記指定された挙動に対応するトレースを検索する挙動トレース検索手段と、
前記状態情報によって表された状態遷移の中から任意の状態遷移が指定されると、当該任意の状態遷移の実行時刻に基づいて、前記取得手段によって取得されたトレース群の中から前記任意の状態遷移に対応するトレースを検索する状態トレース検索手段と、
前記任意の挙動と前記任意の状態遷移とをそれぞれ実行させた場合の動作の関連性についての指示を受け付けると、当該指示に応じて前記挙動トレース検索手段によって検索されたトレースと前記状態トレース検索手段によって検索されたトレースとを関連付ける関連付け手段と、
前記関連付け手段によって関連付けられたトレース群を前記挙動のシミュレーション用のトレースとして出力する出力手段と、
を備えることを特徴とする情報処理装置。
【００９９】
（付記８）コンピュータが、
任意のシステムにおいて任意のアプリケーションを実行させた場合の各処理の実行時刻および実行内容の形跡を表すトレース群と、前記任意のアプリケーションを実行させた場合の前記任意のシステムのプロセッサの挙動を表す挙動情報および前記プロセッサ以外の任意のハードウェアの状態遷移を表す状態情報とを取得する取得工程と、
前記挙動情報によって表された挙動の中から任意の挙動が指定されると、当該任意の挙動の実行時刻に基づいて、前記取得工程によって取得されたトレース群の中から前記指定された挙動に対応するトレースを検索する挙動トレース検索工程と、
前記状態情報によって表された状態遷移の中から任意の状態遷移が指定されると、当該任意の状態遷移の実行時刻に基づいて、前記取得工程によって取得されたトレース群の中から前記任意の状態遷移に対応するトレースを検索する状態トレース検索工程と、
前記任意の挙動と前記任意の状態遷移とをそれぞれ実行させた場合の動作の関連性についての指示を受け付けると、当該指示に応じて前記挙動トレース検索工程によって検索されたトレースと前記状態トレース検索工程によって検索されたトレースとを関連付ける関連付け工程と、
前記関連付け工程によって関連付けられたトレース群を前記挙動のシミュレーション用のトレースとして出力する出力工程と、
を実行することを特徴とする検証支援方法。
【符号の説明】
【０１００】
１００  情報処理装置
１０１  生トレース
１０２  関連情報（ＯＳ挙動情報、ステート情報）
１２１  関連付けＤＢ
２０１  アプリケーション
２０２  ドライバ
２０３  ＯＳ
２１０ａ  ハードウェアモデル
２１０ｂ  仮想マシンモニタ
３０１  ＣＰＵ
３０２  ＲＯＭ
３０３  ＲＡＭ
３０４  磁気ディスクドライブ
３０５  磁気ディスク
３０６  通信Ｉ／Ｆ
３０７  入力デバイス
３０８  出力デバイス
３１０  バス
４０１  取得部
４０２  挙動トレース検索部
４０３  状態トレース検索部
４０４  関連付け部
４０５  出力部
４０６  実行部
４０７  生成部
４０８  表示部
【図１】
2010211316.tif 000003
【図２】
2010211316.tif 000004
【図３】
2010211316.tif 000005
【図４】
2010211316.tif 000006
【図５】
2010211316.tif 000007
【図６】
2010211316.tif 000008
【図７】
2010211316.tif 000009
【図８】
2010211316.tif 000010
【図９】
2010211316.tif 000011
【図１０】
2010211316.tif 000012
【図１１】
2010211316.tif 000013
【図１２】
2010211316.tif 000014
【図１３】
2010211316.tif 000015
【図１４】
2010211316.tif 000016
【図１５】
2010211316.tif 000017
【図１６】
2010211316.tif 000018
【図１７】
2010211316.tif 000019
【図１８】
2010211316.tif 000020
【図１９】
2010211316.tif 000021