(57)【特許請求の範囲】
【請求項１】
Ｉ／Ｏ装置が接続された第１の情報処理装置上でオリジナルプログラムを実行した、少なくとも、命令コード、書き込み先アドレス、参照先アドレスを格納する履歴を利用して、Ｉ／Ｏ装置が接続されていない第２の情報処理装置を評価するためのテストプログラムを作成する作成プログラムであって、
コンピュータに、
前記オリジナルプログラムによって実行された命令コードと該命令コードの格納アドレスとの組を複数含む前記履歴を、第１記憶部から読み出す手順と、
読み出された前記命令コードがＩ／Ｏ命令でない場合、第２記憶部に書き出すアドレスが該命令コードの格納アドレスであるアドレスに、該命令コードを書き出し、
前記命令コードがＩ／Ｏ命令である場合、該第２記憶部に書き出すアドレスが該命令コードの格納アドレスであるアドレスに、Ｉ／Ｏ装置へのＩ／Ｏアクセスをエミュレートするロードモジュールへ分岐する分岐コードを書き出し、該第２記憶部の該分岐コード先のアドレスに、該ロードモジュールを書き出して、テストプログラムのロードモジュールを作成する手順と、
を実行させるための作成プログラム。
【請求項２】
前記読み出された前記命令コードが割り込み命令であるときは、該割り込み命令の割り込み先アドレスに対応する前記第２記憶部のアドレスに、該第１記憶部の割り込み先アドレスのデータを書き込むことを特徴とする請求項１に記載の作成プログラム。
【請求項３】
前記読み出された前記命令コードが動的情報参照命令であるときは、前記第１記憶部内の動的情報参照命令のアドレスに対応する前記第２記憶部のアドレスに、参照先のデータのロード命令を書き込み、あるいは、前記第２の情報処理装置が該第１の情報処理装置と同等の動作を行なうように、割込属性命令に置き換えると共に、該割込属性命令による割り込みが発生したときに呼び出される、該動的情報参照命令に対応する処理を行なう処理ルーチンプログラムを格納することを特徴とする請求項１または２に記載の作成プログラム。
【請求項４】
前記読み出された前記命令コードの実行後に非同期割り込みを発生し、処理ルーチンが呼び出されたときは、前記第１記憶部内の該命令コードに対応する前記第２記憶部のアドレスの命令コードを処理ルーチンを呼び出すための命令に置き換え、該処理ルーチンの先頭には、置き換え命令のエミュレーションデータを付加することを特徴とする請求項１〜３のいずれか１つに記載の作成プログラム。
【請求項５】
前記コンピュータは、前記第１の情報処理装置である、請求項１〜４のいずれか１つに記載の作成プログラム。
【請求項６】
Ｉ／Ｏ装置が接続された第１の情報処理装置上でオリジナルプログラムを実行した、少なくとも、命令コード、書き込み先アドレス、参照先アドレスを格納する履歴を利用して、Ｉ／Ｏ装置が接続されていない第２の情報処理装置を評価するためのテストプログラムを作成する作成装置であって、
前記オリジナルプログラムによって実行された命令コードと該命令コードの格納アドレスとの組を複数含む前記履歴を、第１記憶部から読み出す手段と、
読み出された前記命令コードがＩ／Ｏ命令でない場合、第２記憶部に書き出すアドレスが該命令コードの格納アドレスであるアドレスに、該命令コードを書き出し、前記命令コードがＩ／Ｏ命令である場合、該第２記憶部に書き出すアドレスが該命令コードの格納アドレスであるアドレスに、Ｉ／Ｏ装置へのＩ／Ｏアクセスをエミュレートするロードモジュールへ分岐する分岐コードを書き出し、該第２記憶部の該分岐コード先のアドレスに、該ロードモジュールを書き出して、テストプログラムのロードモジュールを作成する手段と、
を備える作成装置。
【請求項７】
Ｉ／Ｏ装置が接続された第１の情報処理装置上でオリジナルプログラムを実行した、少なくとも、命令コード、書き込み先アドレス、参照先アドレスを格納する履歴を利用して、Ｉ／Ｏ装置が接続されていない第２の情報処理装置を評価するためのテストプログラムを作成する作成方法であって、
コンピュータに、
前記オリジナルプログラムによって実行された命令コードと該命令コードの格納アドレスとの組を複数含む前記履歴を、第１記憶部から読み出すステップと、
読み出された前記命令コードがＩ／Ｏ命令でない場合、第２記憶部に書き出すアドレスが該命令コードの格納アドレスであるアドレスに、該命令コードを書き出し、前記命令コードがＩ／Ｏ命令である場合、該第２記憶部に書き出すアドレスが該命令コードの格納アドレスであるアドレスに、Ｉ／Ｏ装置へのＩ／Ｏアクセスをエミュレートするロードモジュールへ分岐する分岐コードを書き出し、該第２記憶部の該分岐コード先のアドレスに、該ロードモジュールを書き出して、テストプログラムのロードモジュールを作成するステップと、
を実行させる作成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置を評価するためのテストプログラムを作成する方法および装置に係わり、特に、ベンチマークプログラムを作成する方法および装置に係わる。
【０００２】
【従来の技術】
各種情報処理装置（主に、コンピュータ）は、通常、その出荷前に様々な性能評価が行われる。例えば、ハードウェア開発時には、ロジックシミュレータ等を用いて、情報処理装置に搭載すべきＣＰＵの論理が検証される。また、装置が完成した段階では、その装置に標準的なプログラムを実行させたときの処理時間を計測することにより、装置全体の性能の評価が行われる。なお、後者の評価は、しばしば「ベンチマークテスト」と呼ばれており、ベンチマークテストにおいて使用されるプログラムは「ベンチマークプログラム」を呼ばれている。
【０００３】
【発明が解決しようとする課題】
しかし、ロジックシミュレータは、論理の検証を主目的としているので、情報処理装置の性能を評価するための機能が十分でない。例えば、ロジックシミュレータには、通常、ＯＳ（Operating System）をインストール出来ないので、ＯＳ上でアプリケーションを実行した場合の動作をロジックシミュレータを用いて評価することがではない。また、ロジックシミュレータは、通常、外部メモリ等の外部デバイスを接続できないので、Ｉ／Ｏ命令を含む動作の評価を行うことができない。
【０００４】
一方、ベンチマークテストでは、完成した情報処理装置を利用して所定のプログラム（ベンチマークプログラム）が実行されるので、実行速度等を測定することは可能である。しかし、既存のベンチマークテストで実行される処理は、一般に、比較的単純なものであり、実際に使用すべきアプリケーションプログラムを実行した場合の性能を評価することは困難であった。従って、もし、実際に使用すべきアプリケーションプログラムを実行した場合の性能を正確に評価するのであれば、実際にそのアプリケーションプログラムを実行してみる必要がある。しかし、この場合は、通常、評価対象の情報処理装置に外部デバイスを接続した状態でテストを行う必要がある。例えば、データベース系のアプリケーションプログラムを実行した場合の動作を評価する場合には、情報処理装置に外部記憶装置が接続された状態でテストを行う必要がある。このため、上記テストを行うためには、かなりの時間と費用を要することになる。
【０００５】
また、ベンチマークテストは、評価対象の情報処理装置が完成した後に行われるので、もしその時点で一定の性能が得られないことが判明すると、設計変更等に要する手間が非常に多くなってしまう。すなわち、製品の開発時間が長くなってしまう。
【０００６】
このように、従来は、情報処理装置の完成前にその性能を正確に評価することはできなかった。
本発明の課題は、情報処理装置が完成する前にその性能を正確に評価できるようにすることである。
【０００７】
【課題を解決するための手段】
本発明の方法は、情報処理装置を評価するためのテストプログラムを作成する方法であって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに上記プロセッサにより実行される命令および上記メモリへのアクセス内容を検出し、検出された情報を実行履歴情報として時系列に格納し、実行履歴情報に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する。
【０００８】
上記ロードモジュール形式のプログラムには、オリジナルプログラムが実行されたときの命令だけでなく、メモリのアクセス内容も含んでいる。よって、評価対象の情報処理装置にこのロードモジュールが与えられると、その装置は、上記コンピュータの動作を忠実に再現できる。また、上記コンピュータにＯＳがインストールされているものとすると、上記ロードモジュールは、そのＯＳの命令も含むことになる。したがって、評価対象の情報処理装置にＯＳがインストールされていなくても、上記コンピュータの動作を再現できる。
【０００９】
本発明の他の形態のテストプログラム作成方法は、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出し、検出された情報を実行履歴情報として時系列に格納し、上記実行履歴情報を時系列に解析して予め用意されているメモリスペースに上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことによりロードモジュール形式のプログラムを作成する。
【００１０】
この方法においても、基本的に上述の方法と同様に、評価対象の情報処理装置において上記コンピュータの動作が忠実に再現される。
なお、上記方法において、当該テストプログラムが与えられる装置が実行できない命令である第１の命令が上記コンピュータにより実行された場合は、上記第１の命令に起因する上記コンピュータの動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、上記第１の命令の代わりに上記処理ルーチンプログラムを呼び出す命令を上記メモリスペースに書き込むようにしてもよい。この場合、評価対象の情報処理装置が実行できない命令は、評価対象の情報処理装置が実行できる処理ルーチンプログラムに置き換えられるので、評価対象の情報処理装置において上記コンピュータの動作が忠実に再現される。
【００１１】
また、上記方法において、上記コンピュータにより実行されたときと当該テストプログラムが与えられる装置により実行されたときとで異なる動作を引き起こす可能性のある命令である第２の命令が上記コンピュータにより実行された場合に、上記コンピュータにおいて上記第２の命令が実行されたときに上記プロセッサが参照した条件を上記メモリスペースに書き込み、上記第２の命令の代わりに上記条件を呼び出す命令を上記メモリスペースに書き込むようにしてもよい。この場合、上記コンピュータおよび評価対象の情報処理装置の実行速度または動作環境が互いに異なっていても、それらの間で整合性がとられるので、評価対象の情報処理装置において上記コンピュータの動作が忠実に再現される。
【００１２】
更に、上記方法において、当該テストプログラムが与えられる装置が実施できない動作である第１の動作が上記コンピュータにより実施された場合に、上記コンピュータにおいて上記第１の動作が実施されたタイミングの近傍で実行された命令である第３の命令を命令シーケンスを切り替える命令に置き換えて上記メモリスペースに書き込み、上記第１の動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、上記命令シーケンスを切り替える命令と上記処理ルーチンプログラムとをリンクするようにしてもよい。この場合、評価対象の情報処理装置が実行できない動作は、その情報処理装置が実行できる処理ルーチンプログラムに置き換えられるので、評価対象の情報処理装置において上記コンピュータの動作が忠実に再現される。
【００１３】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照しながら説明する。
図１は、本実施形態のプログラム作成方法の概観を説明する図である。なお、本実施形態では、情報処理装置を評価するためのテストプログラムを作成する。具体的には、コンピュータ（主に、コンピュータのハードウェア）の性能を評価するためのテストプログラムを作成する。以下では、このプログラムのことを、「ベンチマークプログラム」と呼ぶ。
【００１４】
オリジナルプログラム実行マシン１は、所定のオペレーティングシステム（ＯＳ：Operating System）がインストールされたコンピュータにより実現され、与えられたアプリケーションプログラムを実行する。そして、各命令が実行されるごと、或いはメモリがアクセスされるごとに、その動作を表す情報を時系列に蓄積してゆくことにより、実行履歴情報２を作成する。なお、オリジナルプログラム実行マシン１により実行されるプログラム（ＯＳを含む）のことを、「オリジナルプログラム」と呼ぶことがある。
【００１５】
解析ツール３は、実行履歴情報２を解析し、基本データ４および補正データ５を生成する。ここで、基本データ４は、オリジナルプログラム実行マシン１により実行された命令実行シーケンスを再現するデータである。また、補正データ５は、基本データ４を補正するためのデータである。なお、補正データ５は、補正ツール６により適切な状態に加工される。
【００１６】
ベンチマークプログラム７は、基本データ４および補正ツール６により加工された補正データ５から構成される。なお、ベンチマークプログラム７は、オリジナルプログラム実行マシン１における動作を表すロードモジュールである。
【００１７】
シミュレータ８は、評価対象の情報処理装置の代替装置であり、ベンチマークプログラム７が与えられ、それに従って動作する。なお、シミュレータ８は、完成前の情報処理装置、またはロジックシミュレータ等であってもよい。また、シミュレータ８には、必ずしもＯＳがインストールされてなくてもよい。さらに、シミュレータ８には、外部デバイスが接続されてないものとする。
【００１８】
ベンチマークプログラム７は、ロードモジュールであり、シミュレータ８に与えられる。ここで、このロードモジュールは、オリジナルプログラム実行マシン１により実行されたアプリケーションプログラムの命令シーケンスだけでなく、オリジナルプログラム実行マシン１にインストールされているＯＳの命令シーケンスも含んでいる。したがって、シミュレータ８にＯＳがインストールされていない場合であっても、ベンチマークプログラム７が与えられると、シミュレータ８において、オリジナルプログラム実行マシン１により実行された命令シーケンスが再現される。また、オリジナルプログラム実行マシン１において外部デバイスに係わる動作が発生した場合は、その動作は、補正データ５を用いてシミュレータ８が処理できる形式で表される。したがって、外部デバイスが接続されていないシミュレータ８を用いて、外部デバイスに係わる動作の評価を行うことができる。
【００１９】
図２は、オリジナルプログラム実行マシン１の構成図である。オリジナルプログラム実行マシン１は、少なくとも、ＣＰＵ（Central Processing Unit ）１１およびメモリ１２を備える。
【００２０】
ＣＰＵ１１は、メモリ１２に格納されているプログラムを実行することによって、データを受け取り、そのデータを使って演算を行い、その演算結果を出力するまでの一連の動作を提供する。なお、ＣＰＵ１１は、複数のレジスタを備えている。
【００２１】
メモリ１２は、ＣＰＵ１１によりアクセスされる記憶領域であり、ＯＳプログラム１３、アプリケーションプログラム１４、および各種データを格納する。ここで、ＯＳプログラム１３は、特に限定されるものではないが、評価対象の情報処理装置にインストールすべきＯＳと同じもの、或いはそれと互換性があるものが使用される。また、アプリケーションプログラム１４は、評価対象の情報処理装置において実行されるものであることが好適である。
【００２２】
トレーサ１５は、ＣＰＵ１１の動作およびメモリ１２へのアクセスを検出し、時系列にその検出結果を出力する。なお、トレーサ１５は、図２に示す例では、メモリ１２に格納されているが、他の記憶領域に設けられてもよい。
【００２３】
外部デバイス２１は、オリジナルプログラム実行マシン１に接続されるデバイスであり、例えば、外部記憶装置、キーボード等の入力装置である。
図３は、トレーサ１５の動作を示すフローチャートである。この処理は、例えば、ＣＰＵ１１により何らかの処理が実行されるごと、或いはメモり１２に何らかのアクセスが発生するごとに起動される。
【００２４】
ステップＳ１では、ＣＰＵ１１により命令が実行されたか否かを調べる。ここで、「命令」は、アプリケーションプログラム１４の命令だけでなく、ＯＳ処理に伴う命令も含む。そして、ＣＰＵ１１により命令が実行された場合は、ステップＳ２において対応する命令レコードを作成する。ここで、命令レコードは、例えば、下記の情報から構成される。
・命令コード
・命令格納アドレス（実アドレス、論理アドレス）
・書込み先レジスタ情報
・書込み先アドレス（実アドレス、論理アドレス）
・書込みデータ長
・参照レジスタ情報
・参照アドレス（実アドレス、論理アドレス）
・参照データ長
「命令コード」は、ＣＰＵ１１に与えられる命令そのものであり、機械語で表現されている。なお、この命令コードは、たとえば、ＣＰＵ１１が備える命令レジスタに書き込まれたデータ列を抽出することにより得られる。「命令格納アドレス」は、当該命令が格納されているアドレスである。「書込先レジスタ情報」は、当該命令によりデータを書き込むべきレジスタを識別する。「書込み先アドレス」および「書込みデータ長」は、それぞれ、当該命令によりデータがメモリ１２に書き込まれるときの、そのデータが書き込まれるアドレスおよびそのデータのデータ長である。「参照レジスタ情報」は、当該命令によりデータを参照すべきレジスタを識別する。「参照アドレス」および「参照データ長」は、それぞれ、当該命令によりメモリ１２内のデータが参照されるときの、そのデータが格納されているアドレスおよびそのデータのデータ長である。なお、「命令格納アドレス」〜「参照データ長」を検出する方法は、既存の技術により実現可能である。
【００２５】
ステップＳ３では、ＣＰＵ１１が備えるレジスタが更新されたか否か調べる。そして、１または複数のレジスタが更新された場合は、ステップＳ４において対応するレジスタレコードを作成する。ここで、レジスタレコードは、例えば、更新されたレジスタを識別する情報、およびそのレジスタに新たに書き込まれたデータ（レジスタ値）を含む。
【００２６】
ステップＳ５では、ＣＰＵ１１に対する割込が発生したか否かを調べる。そして、ＣＰＵ１１に対する割込が発生した場合は、ステップＳ６において対応する割込みレコードを作成する。ここで、割込は、この実施例では、Ｉ／Ｏ割込、プログラム割込、外部割込、特権（ＳＶＣ）割込等を想定する。下記に、各割込に対応する割込みレコードの例を示す。
Ｉ／Ｏ割込
・割込み発生前のＰＳＷ値
・割込みコード
プログラム割込
・割込み発生前のＰＳＷ値
・命令長
・割込みコード
・例外種別を判定するコード
・現象識別コード
外部割込
・割込み発生前のＰＳＷ値
・命令長
・現象識別コード
特権（ＳＶＣ）割込
・割込み発生前のＰＳＷ値
・割込み発生後のＰＳＷ値
・命令長
・現象識別コード
ステップＳ７では、メモリ１２がアクセスされたか否かを調べる。ここで、アクセスは、メモリ１２にデータを書き込む動作、およびメモリ１２に格納されているデータを参照する動作を含む。そして、メモリ１２がアクセスされた場合には、ステップＳ８において対応するメモリデータレコードを作成する。ここで、メモリデータレコードは、例えば、下記の情報から構成される。
・実アドレス
・メモリデータ
・データ長
・アクセス種別
「実アドレス」は、アクセスされた実アドレスを表す。「メモリデータ」は、メモリ１２に書き込まれるデータまたはメモリ１２から読み出されるデータである。「データ長」は、メモリ１２に書き込まれるデータまたはメモリ１２から読み出されるデータのデータ長を表示する。「アクセス種別」は、書込または参照を識別する。
【００２７】
ステップＳ９では、ＯＳが管理している各種テーブルを更新するための命令が実効されたか否かを調べる。ここでは、アドレス変換テーブルを更新する命令が実効されたか否かが調べられるものとする。なお、アドレス変換テーブルには、ＣＰＵ１１が認識する論理アドレスをメモリ１２上の実アドレスに変換するための情報が登録されている。そして、アドレス変換テーブルを更新する命令が実効された場合は、ステップＳ１０において対応するテーブル参照レコードを作成する。ここで、テーブル参照レコードは、例えば、下記の情報から構成される。
・対応動作
・変換アドレス
・テーブルアドレス
・データ長
「対応動作」は、アドレス変換を要求した動作を表し、命令フェッチ、データ参照、データ書込みを識別する。「変換アドレス」は、変換処理に係わる１組の論理アドレスと実アドレスである。「テーブルアドレス」は、参照されたアドレス変換テーブルが格納されているアドレスである。「データ長」は、参照されたアドレス変換テーブルにより変換されたデータのデータ長である。
【００２８】
ステップＳ１１では、キー情報が設定されたか否かを調べる。なお、キー情報は、記憶領域を構成する各ページを管理するための情報であり、ＯＳにより使用される。そして、キー情報が設定された場合は、ステップＳ１２において対応するキー情報レコードを作成する。ここで、キー情報レコードは、例えば、下記の情報から構成される。なお、キー情報は、メモリレコード、命令レコード、レジスタ値から導き出すようにしてもよい。
・アクセス側キー情報
・命令コード
・アクセス種別（命令フェッチ、オペランド読出し、オペランド書込み、オペランド番号）
・メモリアクセス論理アドレス
・メモリアクセス実アドレス
・セグメントテーブル先頭アドレス
・セグメントテーブルエントリ番号
・データ長
このように、トレーサ１５は、ＣＰＵ１１によりオリジナルプログラムが実行されると、命令、メモリデータ、関連情報などを検出し、対応するレコードを作成していく。そして、トレーサ１５により次々と作成されるレコードは、実行履歴情報２として時系列に格納される。
【００２９】
なお、トレーサ１５は、ＣＰＵ１１により命令が実行されると、それに対応する命令レコードを作成するが、例えばその命令に起因してメモリアクセスが発生した場合には、そのメモリアクセスに対応するメモリデータレコードも同時に作成する。すなわち、トレーサ１５は、ＣＰＵ１１により１つの命令が実行されると、その命令に対応する１または複数のレコードを作成する。
【００３０】
また、上述の例では、メモリ１２がアクセスされたときに対応するメモリデータレコードが作成されるが、メモリ１２に格納されているあるデータが参照（読出）された場合には、解析ツール３は、そのデータが最初に参照されたときにのみメモリデータレコードを作成するようにしてもよい。
【００３１】
さらに、ある命令に従ってメモり１２が更新されるとき、その更新内容が容易に推測できる場合には、解析ツール３は、メモリデータレコードの代わりに他のレコードを作成するようにしてもよい。例えば、メモリ１２に格納されているメモリデータをレジスタにロードするだけの単純なロード命令であれば、メモリデータレコードを作成する代わりに、レジスタレコードのみを作成するようにしてもよい。この場合、このレジスタレコードには、ロード命令のオペランドアドレス（メモリ１２の参照アドレス）が登録される。このとき、ロード命令実行後にロード先のレジスタに格納されている値は、レジスタレコードに登録されることになるが、この値は、ロード命令のオペランドアドレスに格納されているメモリデータと一致する。なお、命令レコードから更新内容を導く出すようにしてもよい。
【００３２】
図４は、実行履歴情報２の実施例である。実行履歴情報２は、ファイル等に格納される際に、レコード番号を用いて管理される。すなわち、トレーサ１５により作成された各レコードは、それぞれその作成順にレコード番号が付与されて蓄積される。また、各レコードには、それぞれレコードタイプが付与される。この実施例では、「命令レコード」「レジスタレコード」「メモリデータレコード」に対してそれぞれ「０１」「０２」「０３」が割り当てられている。そして、トレーサ１５により検出された情報は、それぞれそのまま実行情報として格納される。この実施例では、例えば、「レコード番号＝４５３」により識別されるレコードに命令レコードが格納されている。具体的には、このレコードのレコードタイプには「０１」が設定されており、さらに、実行情報としてトレーサ１５により検出された命令コード、各種アドレス、データ長などが格納されている。
【００３３】
なお、上述の実施例では、実機上でトレーサ１５を動かすことにより実行履歴情報２を作成するために必要な情報を採取しているが、他の方法で採取するようにしてもよい。例えば、アーキテクチャシミュレータを用いて必要な情報を採取してもよい。また、実行履歴情報２を作成するために必要な情報は、評価対象の装置により異なる。すなわち、採取すべき情報は、評価対象の装置にインストールされるＯＳ、評価対象の装置に実装されるＣＰＵの命令アーキテクチャ、評価対象の装置のシステム構成などに依存して決定される。
【００３４】
上述のようにして作成された実行履歴情報２は、解析ツール３により解析される。以下、解析ツール３の動作について説明する。
解析ツール３は、実行履歴情報２の各レコードを１つずつ順番に解析し、その結果を図５に示す初期メモリスペース３０を書き込んでいく。初期メモリスペース３０は、基本メモリスペース３１および補正用メモリスペース３２から構成されている。ここで、基本メモリスペース３１は、オリジナルプログラム実行マシン１が備えるメモリ１２の実空間と同じサイズの記憶領域である。なお、図１に示した基本データ４および補正データ５は、それぞれ基本メモリスペース３１および補正用メモリスペース３２に書き込まれる。
【００３５】
また、解析ツール３は、レジスタレコードに登録されている情報を反映させるためのレジスタ群３３を備える。レジスタ群３３は、オリジナルプログラム実行マシン１のＣＰＵ１１と同じ数のレジスタから構成され、初期メモリスペース３０にデータを書き込む際に利用される。
【００３６】
解析ツール３は、実行履歴情報２の各レコードを解析することにより得られた結果を、順次、基本メモリスペース３１に書き込んでいく。例えば、解析ツール３は、命令レコードを抽出したときは、そのレコードに登録されている「命令コード」を、そのレコードに登録されている「命令格納アドレス（実アドレス）」をキーとして、基本メモリスペース３１内の対応する領域に書き込む。この時、「命令コード」に付随するデータがあれば、その情報を「命令コード」に続く領域に書き込む。これにより、オリジナルプログラム実行マシン１により実行された命令の命令コードが、基本メモリスペース３１に書き込まれることになる。このとき、この命令コードは、メモリ１２および基本メモリスペース３１において互いに同一のアドレスに存在する。
【００３７】
例えば、図６に示す例では、オリジナルプログラム実行マシン１が備えるメモリ１２の"aaaa"番地に格納されているstore 命令が実行され、それに対応する命令レコードが作成されている。そして、この命令レコードが解析され、それに伴って基本メモリスペース３１の"aaaa"番地にstore命令が書き込まれている。
【００３８】
なお、上述のようにして命令コードを基本メモリスペース３１に書き込む際、対応する領域に何らかのデータが既に格納されていた場合は、解析ツール３は、その書込み処理を実行しない。ここで、上書きを禁止する機能は、例えば、基本メモリスペース３１をバイト単位で管理するテーブルを設け、そのテーブルを用いて各領域にデータが格納されているか否かを管理することにより実現可能である。
【００３９】
同様に、解析ツール３は、実行履歴情報２からメモリデータレコードを抽出したときは、そのレコードに登録されている「メモリデータ」を、そのレコードに登録されている「実アドレス」をキーとして基本メモリスペース３１内の対応する領域に書き込む。これにより、オリジナルプログラム実行マシン１のメモリ１２および基本メモリスペース３１の同じアドレスに同じメモリデータが存在することになる。
【００４０】
なお、他の種類のレコードについては、後に示すフローチャートを参照しながら後述する。
このように、解析ツール３は、実行履歴情報２を解析することにより、オリジナルプログラム実行マシン１のメモリ１２の内容を初期メモリスペース３０の基本メモリスペース３１に反映させる。この場合、任意時刻においてメモリ１２の内容を基本メモリスペース３１にコピーすることによっても、同様の結果を得ることができる。
【００４１】
ところで、本実施形態のベンチマークテストは、評価対象の情報処理装置が完成する前にその装置の性能を調べることを想定している。したがって、評価対象の装置をテストする際には、その装置と同等の仕様を備えるシミュレータ（図１に示すシミュレータ８）を用意し、本実施形態のベンチマークプログラムをそのシミュレータ８に実行させることにより評価対象の装置の性能が推定される。ここで、このシミュレータ８には、評価対象の情報処理装置が備えるＣＰＵ又はそれと同等のプロセッサが実装されているが、ＯＳがインストールされていないことも想定される。また、シミュレータ８には、外部デバイスが接続されていない場合も想定される。このため、シミュレータ８は、オリジナルプログラム実行マシン１により実行される命令または処理の一部を実行できない。
【００４２】
本実施形態のプログラム作成方法では、オリジナルプログラム実行マシン１により実行される命令／処理のうち、シミュレータ８が実行できない命令／処理をシミュレータ８が実行できる命令／処理に置き換えることにより、上記問題の解決を図る。以下では、この置換え処理のことを、「補正」と呼ぶことがある。また、図１に示した補正データ５は、この補正処理のために使用される。
【００４３】
以下の実施例では、補正の必要な命令または処理として、非同期割込み（Ｉ／Ｏ割込みを含む）、Ｉ／Ｏ命令、動的情報を参照する命令を採り上げる。
非同期割込み（その１）
ここでは、オリジナルプログラム実行マシン１において、外部デバイス２１からのＩ／Ｏ割込により、メモリ１２が更新される場合（メモリ１２に新たなデータが書き込まれる場合）を想定する。
【００４４】
非同期割込みは、ＯＳの命令またはアプリケーションプログラムの命令の実行と無関係に発生する。すなわち、Ｉ／Ｏ割込みによるメモリ１２の更新は、ジョブが実行されている最中に行われる。このとき、このメモリ更新は、実行中のジョブから見ると、Ｉ／Ｏ割込の発生により認識される。
【００４５】
ところで、Ｉ／Ｏ割込みによりメモリ１２が更新されると、トレーサ１５は、対応する割込みレコードおよびメモリデータレコードを作成する。このため、解析ツール３は、基本的には、これらのレコードに従って初期メモリスペース３０を更新する処理を実行すべきである。しかし、実際には、上記メモリデータレコードの内容が初期メモリスペース３０に反映されれば、オリジナルプログラム実行マシン１において実行されたメモリ更新と同じ結果が得られるはずである。
【００４６】
図７は、Ｉ／Ｏ割込によるメモリ更新が発生したときの解析ツール３の処理を説明する図である。この実施例では、オリジナルプログラム実行マシン１において、外部デバイス２１からＩ／Ｏ割込みによりメモリ１２の"bbbb"番地にデータＡが書き込まれ、それに対応する割込みレコードおよびメモリデータレコードが作成されている。この場合、メモリデータレコードの内容に従って、基本メモリスペース３１の"bbbb"番地にデータＡが書き込まれる。
【００４７】
このように、オリジナルプログラム実行マシン１においては、外部デバイス２１からの割込によりメモリ１２の"bbbb"番地にデータＡが書き込まれる。これに対して、基本メモリスペース３１の"bbbb"番地には、予めデータＡが書き込まれる。
【００４８】
ここで、初期メモリスペース３０に格納されているデータは、最終的には、ベンチマークプログラムとして使用される。具体的には、基本メモリスペース３１に格納されている命令がシミュレータにより順番に実行されていく。このとき、図７に示すようにして初期メモリスペース３０が作成されたものとすると、ベンチマークテストの開始時に、基本メモリスペース３１の"bbbb"番地には既にデータＡが格納されていることになる。そして、この状態は、基本メモリスペース３１に格納されている命令とは無関係にデータＡが"bbbb"番地に書き込まれたことと等価である。すなわち、この状態は、外部デバイス２１からのＩ／Ｏ割込みにより"bbbb"番地にデータＡが書き込まれたのと実質的に等価である。従って、Ｉ／Ｏ割込みによるメモリ更新は、メモリデータレコードの内容を初期メモリスペース３０に反映させることで実現される。すなわち、シミュレータ８に外部デバイス２１を接続できない状況であっても、ベンチマークテストにおいてその外部デバイス２１が接続されているときと同じ結果が得られる。なお、"bbbb"番地にデータＡと異なるデータＡ１が存在し、後でＩ／Ｏ割込みによりそのデータＡ１をデータＡに変更するケースもある得る。この場合、メモリ３１上では、上記Ｉ／Ｏ命令の発生時点で上記更新が反映される。
Ｉ／Ｏ命令
ここでは、オリジナルプログラム実行マシン１において、Ｉ／Ｏ命令が実行され、それに伴ってメモリ１２が更新されたものとする。このＩ／Ｏ命令は、例えば、外部デバイス２１からデータを読み出してそれをメモリ１２に書き込む命令である。
【００４９】
オリジナルプログラム実行マシン１においてＩ／Ｏ命令が実行されると、トレーサ１５は、そのＩ／Ｏ命令に対応する命令レコードを作成する。また、この命令に伴ってメモり１２が更新されると、更新されたメモリデータを含むメモリデータレコードが作成される。さらに、上記Ｉ／Ｏ命令を実行することにより更新された情報（例えば、レジスタ値、コンディションコード等）が対応するレコードに登録される。
【００５０】
解析ツール３は、上記各レコードに基づいて、初期メモリスペース３０に必要な情報を書き込む。具体的には、上記Ｉ／Ｏ命令により更新されたメモリデータおよび各種情報を、補正データとして補正用メモリスペース３２に書き込む。また、解析ツール３は、上記Ｉ／Ｏ命令の代わりに割込属性命令を生成し、それを基本メモリスペース３１内の対応するアドレスに書き込む。ここで、この割込属性命令は、先に補正用メモリスペース３２に格納してある補正データを処理するための命令である。
【００５１】
図８は、Ｉ／Ｏ命令によるメモリ更新が発生したときの解析ツール３の処理を説明する図である。この例では、オリジナルプログラム実行マシン１において、メモリ１２の"cccc"番地に格納されているＩ／Ｏ命令が実行されることにより、"dddd"番地にデータＢが書き込まれている。このとき、トレーサ１５は、対応するレコードを作成する。そして、解析ツール３は、まず、メモリデータレコードを利用して、データＢを補正用メモリスペース３２内の所定の領域に書き込む。なお、図８では、データＢのみが補正用メモリスペース３２に書き込まれているが、実際には、他の関連情報も一緒に格納される。続いて、解析ツール３は、上記Ｉ／Ｏ命令に対応する処理ルーチンプログラム（sub-p）を作成し、それを補正用メモリスペース３２内の所定の領域に書き込む。この処理ルーチンプログラムには、以下の処理が記述されている。
・補正用メモリスペース３２に格納されているデータＢを、基本メモリ領域３１の"dddd"番地に書き込む処理
・補正用メモリスペース３２に格納されている他の関連情報に従って、レジスタ等を更新する処理
さらに、解析ツール３は、基本メモリスペース３１の"cccc"番地に割込属性命令を書き込む。すなわち、Ｉ／Ｏ命令に代わりに割込属性命令が書き込まれることになる。ここで、この割込属性命令は、割込を発生する属性を持った命令であり、補正用メモリスペース３２に格納されている処理ルーチンプログラムを呼び出すことができる。
【００５２】
上述のようにして作成されたベンチマークプログラムをシミュレータ８に与えると、以下の動作が実現される。すなわち、シミュレータ８は、基本メモリスペース３１に格納されている命令を順番に実行していく。そして、図８において設定された割込属性命令が実行されると、補正用メモリスペース３２に格納されている処理ルーチンプログラムが起動される。そして、この処理ルーチンプログラムにより、補正用メモリスペース３２に格納されているデータＢが基本メモリ領域３１の"dddd"番地に書き込まれると共に、レジスタ等が更新される。その後、上記割込属性命令の次の命令に処理が戻る。
【００５３】
このように、シミュレータ８に上記ベンチマークプログラムを与えると、オリジナルプログラム実行マシン１において上記Ｉ／Ｏ命令に起因して生じた動作と同じ動作が実現されることになる。ここで、上記ベンチマークプログラムにおいては、Ｉ／Ｏ命令が割込属性命令に置き換えられている。したがって、シミュレータ８がＩ／Ｏ命令を実行できない場合であっても、そのシミュレータ８を用いてＩ／Ｏ命令に対応する動作が実現される。
動的情報を参照する命令
ここでは、オリジナルプログラム実行マシン１において、動的情報を参照する命令が実行されるものとする。なお、「動的情報」とは、たとえば、命令が実行される時刻、あるいは所定の処理を実行するために要した時間に関する情報である。また、「動的情報を参照する命令」とは、上記動的情報に依存して異なる動作を導き出す命令である。例えば、「プログラム起動時から１０秒以内に実行される場合はＸＸ番地にジャンプし、それ以降に実行される場合にはＹＹ番地にジャンプする」が定義された分岐命令である。
【００５４】
上述のような動的情報を参照する命令（以下、動的情報参照命令）は、基本的に、シミュレータ８でも実行することができる。しかし、シミュレータ８の実行速度は、必ずしもオリジナルプログラム実行マシン１のそれと同じではない。このため、オリジナルプログラム実行マシン１およびシミュレータ８に同じプログラムが与えられたとき、動的情報参照命令による処理結果が同じになるとは限らない。
【００５５】
本実施形態のプログラム作成方法では、この問題を解決するために、オリジナルプログラム実行マシン１により動的情報参照命令が実行された場合は、その命令を他の命令（例えば、ロード命令）に置き換えると共に、シミュレータ８において同等の動作が実現されるように補正処理が行われる。
【００５６】
図９は、動的情報参照命令が実行されたときの解析ツール３の処理を説明する図である。なお、図９では、動的情報参照命令のことを「Ｄ命令」と記載してある。
【００５７】
オリジナルプログラム実行マシン１において、メモリ１２の"eeee"番地に格納されている動的情報参照命令を実行することにより、"ffff"番地に格納されている動的情報が参照され、その動的情報の値に従って以降の処理が決定されたものとする。ここで、メモリ１２の"ffff"番地は、例えば、プログラムの起動時からの経過時間を書き込むための領域として使用されている。そして、この経過時間が動的情報として使用される。また、この動的情報参照命令は、例えば、メモリ１２の"ffff"番地に格納されている動的情報を所定のレジスタにロードして、それを予め決められているしきい値と比較することにより以降の処理を決定する命令である。
【００５８】
この場合、トレーサ１５は、対応する命令レコードおよびレジスタレコードを作成する。このとき、この命令レコードには、少なくとも、動的情報参照命令を識別する命令コード、動的情報参照命令の格納アドレス、動的情報の格納アドレスが登録される。また、レジスタレコードには、少なくとも、レジスタ値が登録される。ここで、このレジスタ値は、メモリ１２の"ffff"番地から読み出した動的情報と上記しきい値との比較結果である。
【００５９】
解析ツール３は、作成されたレコードを解析することにより、以下の処理を行う。すなわち、解析ツール３は、まず、命令レコードに基づいて、基本メモリスペース３１の"eeee"番地にロード命令を書き込む。このロード命令は、"ffff"番地に格納されているデータを所定のレジスタにロードする命令である。また、解析ツール３は、上記レジスタレコードに登録されているレジスタ値を基本メモリスペース３１の"ffff"番地に書き込む。
【００６０】
上述のようにして作成されたベンチマークプログラムをシミュレータ８に与えると、以下の動作が実現される。すなわち、シミュレータ８において、上記ロード命令が実行されると、基本メモリスペース３１の"ffff"番地に格納されているデータが所定のレジスタにロードされる。ここで、"ffff"番地には、オリジナルプログラム実行マシン１において上記動的情報と上記しきい値とが比較されたときの比較結果が格納されている。したがって、シミュレータ８において、このロード命令が実行されると、オリジナルプログラム実行マシン１において動的情報参照命令が実行されたときと同等の動作が実現される。
【００６１】
このように、シミュレータ８に上記ベンチマークプログラムを与えると、動的情報を参照することなく、オリジナルプログラム実行マシン１において動的情報参照命令が実行されたときと同等の動作が実現される。すなわち、オリジナルプログラム実行マシン１およびシミュレータ８の実行速度または動作環境が互いに異なっていても、オリジナルプログラム実行マシン１の動作がシミュレータ８上で再現される。
【００６２】
なお、図９に示す例では、動的情報参照命令をロード命令に置き換えることにより、オリジナルプログラム実行マシン１およびシミュレータ８において同じ動作が実現されるようにしているが、これに限定されるものではない。すなわち、例えば、動的情報参照命令による処理が複雑な場合や、命令が複数回実行されてその実行の都度レジスタ値が異なる場合等には、上述したＩ／Ｏ命令についての処理と同様に、割込属性命令を利用してもよい。すなわち、動的情報参照命令を割込属性命令に置き換えると共に、その割込属性命令による割込が発生したときに呼び出される処理ルーチンプログラムを補正メモリスペース３２に格納する。この場合、この処理ルーチンプログラムには、動的情報参照命令に対応する処理が記述される。
非同期割込み（その２）
ここでは、オリジナルプログラム実行マシン１において、外部デバイス２１からのＩ／Ｏ割込が発生し、その割込に対応する処理が実行されたものとする。
【００６３】
図１０(a) は、オリジナルプログラム実行マシン１において上記割込みが発生した場合の命令シーケンスを示す図である。ここでは、命令Ａ〜Ｆ．．．が順番に実行されるシーケンスにおいて、命令Ｃが実行された直後に割込が発生したものとする。そして、その割込により命令ａ〜ｄを含む処理ルーチン４１が実行され、その後に命令Ｄに処理が戻っている。
【００６４】
本実施形態のベンチマークプログラムを作成する際には、上記非同期割込に起因する動作をシミュレータ８において再現するために、その非同期割込の直前の命令が処理ルーチン４１を呼び出すための命令に置き換えられる。上述の例の場合は、図１０(b) に示すように、命令Ｃが、処理ルーチン４２を呼び出すための割込属性命令に置き換えられる。ここで、処理ルーチン４２は、処理ルーチン４１を構成する命令ａ〜ｄに加え、命令Ｃに起因する動作をエミュレートしたデータ（エミュレーションデータ）を含んでいる。また、命令Ｃのエミュレーションデータは、例えば、命令Ｃが実行されたときの演算結果や、レジスタ更新に係わる情報などを含む。
【００６５】
なお、上述の例では、非同期割込の直前の命令が割込属性命令に置き換えられているが、必ずしも直前の命令が置き換えられる必要はなく、非同期割込が発生したタイミングの近傍の他の命令が割込属性命令に置き換えられてもよい。この場合、エミュレーションが容易な命令（例えば、ＡＤＤ命令など）が割込属性命令に置き換えられることが望ましい。
【００６６】
図１１は、非同期割込が発生したときの解析ツール３の処理を説明する図である。なお、図１１では、図１０に示した例に対応する実施例を示す。
オリジナルプログラム実行マシン１において、メモリ１２の"gggg"番地に格納されている命令Ｃが実行された直後に非同期割込が発生し、この割込により処理ルーチン４１が呼び出されたものとする。この場合、トレーサ１５は、命令Ｃに対応する命令レコード、命令Ｃに起因して更新された情報に対応するレコード、非同期割込に対応する割込みレコード、処理ルーチン４１に含まれている命令に対応するレコードなどを作成する。
【００６７】
解析ツール３は、作成されたレコードに基づいて、以下の処理を行う。すなわち、解析ツール３は、まず、レジスタレコード等を参照して命令Ｃのエミュレーションデータを作成し、そのエミュレーションデータを含み且つ命令ａに処理を渡す命令が最後に実行される処理ルーチン４２を作成する。そして、その処理ルーチン４２を補正用メモリスペース３２の所定領域に書き込む。また、解析ツール３は、基本メモリスペース３１の"gggg"番地に割込属性命令を書き込む。この割込属性命令は、処理ルーチン４２を呼び出す命令である。
【００６８】
上述のようにして作成されたベンチマークプログラムをシミュレータ８に与えると、以下の動作が実現される。すなわち、シミュレータ８において、上記割込属性命令が実行されると、処理ルーチン４２が呼び出される。これにより、命令Ｃに対応する動作が実現される。続いて、処理ルーチン４１に制御が渡る。処理ルーチン４１が実行された後、処理は、命令Ｃの次の命令に戻る。
【００６９】
このように、シミュレータ８に上記ベンチマークプログラムを与えると、非同期割込を発生させることなく、オリジナルプログラム実行マシン１において非同期割込に起因して生じた動作と同等の動作が再現される。すなわち、シミュレータ８が非同期割込を受け付ける機能を備えていなくても、オリジナルプログラム実行マシン１において非同期割込が発生したときと同等の動作がシミュレータ８上で再現される。
【００７０】
なお、上記実施例では割込命令が使用されているが、この割込命令は、命令シーケンスを切り替える命令の一例である。即ち、図１１において、命令Ｃは、命令シーケンスを切り替える命令に置き換えられればよい。この場合、この命令シーケンスを切り替える命令と、処理ルーチン４２がリンクされる。
【００７１】
図１２は、解析ツール３の動作を説明するフローチャートである。解析ツール３は、上述したように、実行履歴情報２の各レコードを順番に解析することにより、ベンチマークプログラム７の元となる基本データ４および補正データ５を作成する。なお、基本データ４および補正データ５は、初期メモリスペース３０に書き込まれる。
【００７２】
ステップＳ２１は、実行履歴情報２の各レコードを先頭から１つずつ抽出する処理である。ステップＳ２２〜Ｓ２７では、抽出されたレコードの属性が調べられる。ここで、レコードの属性は、図４に示したレコードタイプにより識別される。
【００７３】
実行履歴情報２から抽出したレコードが命令レコードであった場合は、ステップＳ３１へ進む。ステップＳ３１では、当該レコードに割込命令が登録されているか否かが調べられる。そして、割込命令が登録されていた場合は、ステップＳ３２において、その割込命令に関連する情報を管理リストに登録する。管理リストは、図１３(a) に示すように、各割込命令に係わる情報をその登場順に登録する。なお、新たな割込命令がこの管理リストに登録される際、その割込命令に対してシリアル番号が付与される。また、このとき、その割込命令に対応するアドレス情報が図１３(b)に示す割込管理テーブルに追加される。割込管理テーブルは、各割込命令に付与されているシリアル番号と、割込命令に起因して実行される処理を記述した処理ルーチンプログラムを格納するアドレスとの対応関係を管理している。
【００７４】
抽出されたレコードに割込命令が登録されていなかった場合は、ステップＳ３３へ進む。ステップＳ３３では、抽出されたレコードに「他の命令に置き換え可能な命令（割込を発生させるポイントの候補）」が登録されているか否かが調べられる。「他の命令に置き換え可能な命令」は、先の実施例では、例えば、図９に示した動的情報参照命令に相当する。そして、当該レコードにそのような命令が登録されていた場合には、ステップＳ３４において、置換え前の命令と置換え後の命令との対応関係を登録する。具体的には、置換え候補を記録するための変数に対応する命令ＩＤを登録する。
【００７５】
抽出されたレコードに「他の命令に置き換え可能な命令」が登録されていなかった場合は、ステップＳ３５へ進む。ステップＳ３５では、抽出されたレコードに実行不可能命令が登録されているか否かが調べられる。実行不可能命令とは、シミュレータ８が実行できない命令であって、先の実施例では、例えば、図８に示したＩ／Ｏ命令に相当する。そして、当該レコードに実行不可能命令が登録されていた場合は、ステップＳ３６において、エミュレート処理（エミュレート処理のための処理ルーチンプログラム）を作成する。
【００７６】
なお、図８に示したように、実行不可能命令が割込命令に置き換えられる場合には、その割込命令も図１３(a) に示した管理リストに登録される。そして、その割込命令のシリアル番号と、その割込命令に起因して実行される処理を記述した処理ルーチンプログラムを格納するアドレスとの対応関係が図１３(b)に示す割込管理テーブルに設定される。
【００７７】
抽出されたレコードに一般的な命令が格納されていた場合（ステップＳ３１、３３、３５において「Ｎｏ」と判断された場合）は、ステップＳ３７において、初期メモリスペース３０を更新する。この処理は、例えば、図６に示した手順に相当する。また、ステップＳ３６においてエミュレート処理が作成された場合もステップＳ３７が実行される。この処理は、例えば、図８において、割込属性命令およびデータＢを初期メモリスペース３０に書き込む手順に相当する。
【００７８】
実行履歴情報２から抽出したレコードがレジスタレコードであった場合は、ステップＳ４１へ進む。ステップＳ４１では、抽出されたレジスタレコードの内容に従ってレジスタ（図５に示したレジスタ群３３）を更新する。
【００７９】
実行履歴情報２から抽出したレコードが割込レコードであった場合は、ステップＳ４２へ進む。ステップＳ４２では、必要に応じて割込命令を生成し、それを図１３(a) に示す管理リストに登録する。例えば、図１０〜図１１に示した例では、命令Ｃが割込属性命令に置き換えられているので、その割込属性命令が管理リストに登録される。この場合、対応する情報が図１３(b)に示す割込管理テーブルに設定される。
【００８０】
実行履歴情報２から抽出したレコードがメモリデータレコードであった場合には、ステップＳ３７において、対応するデータを初期メモリスペース３０に書き込む。
【００８１】
実行履歴情報２から抽出したレコードがテーブル参照レコードであった場合には、ステップＳ３７において、更新後のテーブルの内容をメモリスペース３０に書き込む。なお、ここでは、論理アドレスを実アドレスに変換するアドレス変換テーブルを想定する。また、アドレス変換テーブルについては、後で別途説明をする。
【００８２】
実行履歴情報２から抽出したレコードがキー情報レコードであった場合は、ステップＳ４３において、対応するキー情報を登録する。なお、キー情報は、補正用メモリスペース３２に書き込まれる。
【００８３】
実行履歴情報２を構成する全てのレコードについて上記ステップＳ２１〜Ｓ４３の処理が実行されると、ステップＳ５１において、各割込命令から対応する処理ルーチンを呼び出すために必要は情報が設定される。このとき、図１３(b) に示した割込管理テーブルが参照され、置換え処理により生成された割込命令については、補正用メモリスペース３２から対応する処理ルーチンを呼び出すための情報（命令を含む）が設定される。
【００８４】
このように、本実施形態のベンチマークプログラムは、基本メモリスペース３１および補正用メモリスペース３２から構成される初期メモリスペース３０に格納されている。そして、オリジナルプログラム実行マシン１により実行された命令は、基本メモリスペース３１に書き込まれる。このとき、各命令は、オリジナルプログラム実行マシン１のメモリ１２に格納されていたときと同じアドレスに書き込まれる。また、オリジナルプログラム実行マシン１においてメモリ更新またはメモリ参照が発生した場合は、対応するメモリデータが基本メモリスペース３１に書き込まれる。このとき、メモリデータは、オリジナルプログラム実行マシン１のメモリ１２に格納されていたときと同じアドレスに書き込まれる。
【００８５】
シミュレータ８において実施できない動作については、補正用メモリスペース３２を利用して同等の動作が提供される。例えば、オリジナルプログラム実行マシン１においてＩ／Ｏ命令が実行された場合は、そのＩ／Ｏ命令の代わりに割込命令が基本メモリスペース３１に書き込まれると共に、上記Ｉ／Ｏ命令に起因する動作を実現するための情報（補正データ）が補正用メモリスペース３２に書き込まれる。そして、上記割込命令から補正用メモリスペース３２に格納された補正データが呼び出されるように必要な情報が設定される。また、オリジナルプログラム実行マシン１において非同期割込が発生した場合は、その割込が発生したタイミングの近傍で実行されるべき所定の命令が割込命令に置き換えられる。そして、同様の方法で補正用メモリスペース３２に格納された補正データが呼び出されるように必要な情報が設定される。
【００８６】
したがって、シミュレータ８に上記ベンチマークプログラムが与えられると、オリジナルプログラム実行マシン１においてアプリケーションプログラムが実行されたときと同じ命令シーケンスが実行されてゆく。このとき、オリジナルプログラム実行マシン１において実行された処理のうち、シミュレータ８が実行できない処理については、そのシミュレータ８が実行できる形式に書き換えられている。したがって、シミュレータ８は、オリジナルプログラム実行マシン１と同等に機能を備えていなくても、オリジナルプログラム実行マシン１において実現された動作を忠実に再現できる。この結果、シミュレータ８を用いて信頼性の高い評価を行うことができる。
【００８７】
次に、アドレス変換テーブルについて説明する。アドレス変換テーブルは、ＣＰＵが認識している論理アドレスを実アドレスに変換する際に参照されるテーブルであり、オリジナルプログラム実行マシン１においてはメモリ１２内の所定の領域に格納されている。ただし、論理アドレスと実アドレスとの対応関係は、通常、命令シーケンスが実行されていく際に、時々刻々と変化していく。したがって、ベンチマークプログラムにおいても、論理アドレスと実アドレスとの対応関係の変化が記述されている必要がある。
【００８８】
このため、オリジナルプログラム実行マシン１においてアプリケーションプログラムが実行されている期間、トレーサ１５は、アドレス変換テーブルが参照されるごとに１セットの変換前アドレスおよび変換後アドレスを含むテーブル参照レコードを順次作成していく。そして、解析ツール３は、作成されたテーブル参照レコードに基づいて、オリジナルプログラム実行マシン１において実際に参照されたアドレス変換テーブルを初期メモリスペース３０上に生成する。ここで、オリジナルプログラム実行マシン１に設けられているアドレス変換テーブルにおいて、命令の実行に際して実際に参照されるのは、その一部のみである。すなわち、初期メモリスペース３０に再現されるアドレス変換テーブルは、その一部のみに有効な情報が格納されることになる。したがって、初期メモリスペース３０に再現されるアドレス変換テーブルは、圧縮することができる。以下、図１４を参照しながらアドレス変換テーブルの圧縮について説明する。
【００８９】
ここでは、図１４(a) および図１４(b) に示すように、テーブルＡが論理アドレス空間の所定の領域を実アドレス空間の１０００〜２０００番地に変換し、テーブルＢが論理アドレス空間の他の所定の領域を実アドレス空間の３０００〜４０００番地に変換するものとする。また、テーブルＡおよびテーブルＢは、図１４(b)に示すように、それぞれ斜線で示すエリアのみがオリジナルプログラム実行マシン１において実際に参照されたものとする。この場合、テーブルＡおよびテーブルＢが初期メモリスペース３０に再現されたとき、斜線で示すエリアのみに有効な変換情報が格納されることになる。さらに、図１４(b)に示すように、テーブルＡおよびテーブルＢが管理する実アドレス空間が同一であったと仮定したときに、それら２つのテーブルにおいて有効な変換情報が格納されている実アドレスが重複していないものとする。
【００９０】
この場合、図１４(b) に示すように、初期メモリスペース３０において、テーブルＡおよびテーブルＢを互いにマージ（統合）することができる。そして、この結果、上記２つのテーブルにより管理されていた実アドレス空間も互いにマージすることができる。例えば、テーブルＡおよびテーブルＢがマージされる前に１０００〜２０００番地および３０００〜４０００番地に格納されていたデータは、図１５(c)に示すように、１０００〜２０００番地のみに格納される。これにより、初期メモリスペース３０を小さくできる。
【００９１】
図１５は、ベンチマークプログラム７を作成および検証するシステムの構成図である。ここで、オリジナルプログラム実行マシン１、実行履歴情報２、解析ツール３、基本データ４、補正データ５、ベンチマークプログラム７は、それぞれ図１おいて同一の符号が付されているユニットに相当する。
【００９２】
図１５において、モニタソース５１には、補正データ５を加工するためのプログラム等が格納されている。これらのプログラムは、例えば、高水準言語で記述されている。モニタソース５１の中に格納されているプログラムの１つを図１６に示す。
【００９３】
図１６は、シミュレータ８においてベンチマークプログラムが実行されるときに、各割込命令に対応する処理を決定する手順を示すフローチャートである。
ステップＳ６１では、まず、割込み前処理が実行される。この処理では、例えば、レジスタのバックアップ等が行われる。続いて、ステップＳ６２では、発生した割込みについて補正が必要か否かを調べる。そして、補正が必要であれば、ステップＳ６３において、制御変数を検索キーとして図１３(b) に示す割込管理テーブルをサーチする。そして、その制御変数と一致するシリアル番号を持ったエントリから対応するアドレスを抽出し、そのアドレスに格納されている処理ルーチンプログラムを実行する。ステップＳ６４では、制御変数に「１」が加えられる。ステップＳ６５では、割込み後処理が実行される。これにより、処理が、割込み元あるいは制御を渡す命令に戻る。
【００９４】
オブジェクト生成部５２は、補正データ５およびモニタソース５１をコンパイルするコンパイラ、およびリンカから構成される。なお、オブジェクト生成部５２の出力は、初期メモリスペース３０の補正用メモリスペース３２に格納すべきデータ列である。アドレス解決部５３は、基本メモリスペース３１に格納されているデータと、補正用メモリスペース３２に格納すべきデータとの連続性が確保されるようにアドレスを解決する。そして、解析ツール３により生成された基本データ４およびアドレス解決部５３によりアドレス解決されたデータとを統合することにより、ベンチマークプログラム７が得られる。
【００９５】
なお、モニタソース５１、オブジェクト生成部５２、およびアドレス解決部５３は、図１に示した補正ツール６に対応する。
作成されたベンチマークプログラム７は、アーキテクチャシミュレータ６１により検証される。このとき、動的解析ツール６２は、実行履歴情報２およびアーキテクチャシミュレータ６１によるシミュレーション結果に基づいて、トレーサ１５または解析ツール３の不具合等をチェックする。そして、そのチェック結果は、必要に応じてトレーサ１５および解析ツール３にフィードバックされる。
【００９６】
ところで、上述の実施例は、実行履歴情報２が、オリジナルプログラム実行マシン１の動作に係わるすべての情報を含んでいることを前提としている。すなわち、上述の実施例では、トレーサ１５が、アプリケーションプログラムの実行と並列に且つ継続的に動作している。
【００９７】
しかし、アプリケーションによってはトレーサ１５の負荷が重くなることがある。この場合、トレーサ１５を継続的に動作させると、アプリケーションプログラムの実行に悪影響を及ぼすおそれがある。このため、オリジナルプログラム実行マシン１は、トレーサ１５を断続的に動作させることができる。
【００９８】
図１７は、トレーサ１５を断続的に動作させた場合の処理を説明するための図である。ここでは、トレーサ１５が動作している期間と停止している期間とから構成されるサイクルが繰り返されるものとする。
【００９９】
トレーサ１５は、動作期間中は実行履歴情報を出力するが、停止時にはそれを出力しない。このため、オリジナルプログラム実行マシン１の動作を忠実に再現するためのベンチマークプログラムを作成するためには、解析ツール３は、トレーサ１５が停止している期間のオリジナルプログラム実行マシン１の動作を推定する必要がある。例えば、図１７のサイクルｎにおいては、時刻Ｔa 〜Ｔb の実行履歴情報は出力されるが、時刻Ｔb 〜Ｔc の実行履歴情報は出力されない。この場合、解析ツール３は、時刻Ｔb 〜Ｔc におけるオリジナルプログラム実行マシン１の実行履歴を推定する必要がある。
【０１００】
解析ツール３は、以下のようにして、時刻Ｔb 〜Ｔc におけるオリジナルプログラム実行マシン１の動作を推定する。ただし、オリジナルプログラム実行マシン１の動作を完全に求めることは困難なので、ここでは、時刻Ｔb〜Ｔc におけるメモリ１２の更新内容を推定するものとする。時刻Ｔb 〜Ｔc におけるメモリ１２の更新内容は、時刻Ｔb における動的メモリスペースの内容と、時刻Ｔc以降の実行履歴情報に基づいて作成されたメモリスペースの内容との差分により表される。なお、動的メモリスペースは、メモリデータレコードの内容を出願順にすべて反映させたメモリ空間であり、基本的に、初期メモリスペース３０と異なる空間に作成される。また、時刻Ｔc以降の実行履歴情報に基づいて作成されるメモリスペースも、基本的に、初期メモリスペース３０と異なる空間に作成される。
【０１０１】
解析ツール３は、時刻Ｔa 〜Ｔb の実行履歴情報に基づいて初期メモリスペース３０に対応するデータを書き込んだ後、時刻Ｔb〜Ｔc におけるメモリ１２の更新内容を初期メモリスペース３０に書き込む。以降、解析ツール３は、後続のサイクルについても同様の処理を繰り返す。これにより、トレーサ１５が断続的に動作する場合であっても、オリジナルプログラム実行マシン１の動作を忠実に再現するためのベンチマークプログラムが作成される。
【０１０２】
このように、本実施形態のベンチマークプログラム７は、オリジナルプログラム実行マシン１においてオリジナルプログラムが実行されたときの命令シーケンスを再現するロードモジュールである。このとき、このベンチマークプログラム７は、上記オリジナルプログラムの一部のみが実行されたときの命令シーケンスを表すロードモジュールであってもよい。
【０１０３】
なお、ベンチマークプログラム（ロードモジュール）７を作成する機能は、コンピュータを用いて上述のシーケンスを記述したプログラムを実行することにより実現される。そのプログラムを実行するコンピュータ１００の構成を図１８に示す。
【０１０４】
ＣＰＵ１０１は、上述のシーケンスに示した処理を記述したプログラムを記憶装置１０２からメモリ１０３にロードして実行する。記憶装置１０２は、大容量記憶デバイスであり、上記プログラムを格納する。一方、メモリ１０３は、例えば半導体メモリであり、ＣＰＵ１０１の作業領域として使用される。なお、初期メモリスペース３０は、メモリ１０３を利用して実現することができる。
【０１０５】
記録媒体ドライバ１０４は、ＣＰＵ１０１の指示に従って可搬性記録媒体１０５にアクセスする。可搬性記録媒体１０５は、例えば、半導体デバイス（ＰＣカード等）、磁気的作用により情報が入出力される媒体（フロッピーディスク、磁気テープなど）、光学的作用により情報が入出力される媒体（光ディスクなど）を含む。通信制御装置１０６は、ＣＰＵ１０１の指示に従って網との間でデータを送受信する。
【０１０６】
ここで、ベンチマークプログラム７は、オリジナルプログラム実行マシン１から実行履歴情報２を抽出するトレーサ１５、および実行履歴情報２を解析する解析ツール３（ここでは、補正ツール６と含むものとする）により作成される。そして、トレーサ１５は、オリジナルプログラム実行マシン１において図３のフローチャートを実行することにより実現される。一方、解析ツール３は、図１８に示すコンピュータ１００において図１２のフローチャート（図６〜図１１に示したシーケンスを含む）を実行することにより実現される。ただし、解析ツール３は、必ずしもオリジナルプログラム実行マシン１と異なるコンピュータにより実現される必要はなく、オリジナルプログラム実行マシン１により実現されてもよい。
【０１０７】
図１９は、ベンチマークプログラムを作成するためのプログラムの提供方法を説明する図である。ベンチマークプログラムを作成するためのプログラムは、例えば、以下の３つの方法の中の任意の方法により提供される。
【０１０８】
(a) コンピュータにインストールされて提供される。この場合、プログラム等は、例えば、出荷前にプレインストールされる。
(b) 可搬性記録媒体に格納されて提供される。この場合、可搬性記録媒体１０５に格納されているプログラム等は、基本的に、記録媒体ドライバ１０４を介して記憶装置１０２にインストールされる。
【０１０９】
(c) 網上のサーバから提供される。この場合、基本的には、コンピュータ１００がサーバに格納されているプログラム等をダウンロードすることによってそのプログラム等を取得する。
【０１１０】
なお、作成されたベンチマークプログラムは、ＣＤ−ＲＯＭ等の可搬性記録媒体に格納してユーザに提供してもよいし、ネットワークを介してユーザ端末へ送るようにしてもよい。
【０１１１】
（付記１）情報処理装置を評価するためのテストプログラムを作成する方法であって、
プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行される命令および上記メモリへのアクセス内容を検出し、
検出された情報を実行履歴情報として時系列に格納し、
上記実行履歴情報に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成することを特徴とするテストプログラム作成方法。
【０１１２】
（付記２）情報処理装置を評価するためのテストプログラムを作成する方法であって、
プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出し、
検出された情報を実行履歴情報として時系列に格納し、
上記実行履歴情報を時系列に解析し、予め用意されているメモリスペースに、上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成することを特徴とするテストプログラム作成方法。
【０１１３】
（付記３）付記２に記載のテストプログラム作成方法であって、
上記メモリスペースは、上記コンピュータが備えるメモリと実質的に同じアドレス空間を有する。
【０１１４】
（付記４）付記２に記載のテストプログラム作成方法であって、
当該テストプログラムが与えられる装置が実行できない命令である第１の命令が上記コンピュータにより実行された場合は、
上記第１の命令に起因する上記コンピュータの動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、
上記第１の命令の代わりに上記処理ルーチンプログラムを呼び出す命令を上記メモリスペースに書き込む。
【０１１５】
（付記５）付記４に記載のテストプログラム作成方法であって、
上記第１の命令は、Ｉ／Ｏ命令である。
（付記６）付記２に記載のテストプログラム作成方法であって、
上記コンピュータにより実行されたときと当該テストプログラムが与えられる装置により実行されたときとで異なる動作を引き起こす可能性のある命令である第２の命令が上記コンピュータにより実行された場合に、
上記コンピュータにおいて上記第２の命令が実行されたときに上記プロセッサが参照した条件を上記メモリスペースに書き込み、
上記第２の命令の代わりに上記条件を呼び出す命令を上記メモリスペースに書き込む。
【０１１６】
（付記７）付記２に記載のテストプログラム作成方法であって、
当該テストプログラムが与えられる装置が実施できない動作である第１の動作が上記コンピュータにより実施された場合に、
上記コンピュータにおいて上記第１の動作が実施されたタイミングの近傍で実行された命令である第３の命令を命令シーケンスを切り替える命令に置き換えて上記メモリスペースに書き込み、
上記第１の動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、
上記命令シーケンスを置き換える命令と上記処理ルーチンプログラムとをリンクする。
【０１１７】
（付記８）付記７に記載のテストプログラム作成方法であって、
上記第１の動作は、非同期割込である。
（付記９）付記７に記載のテストプログラム作成方法であって、
上記処理ルーチンプログラムは、上記第３の命令のエミュレーションを含む。
【０１１８】
（付記１０）付記２に記載のテストプログラム作成方法であって、
上記コンピュータにおいて複数のアドレス変換テーブルを用いて論理アドレスが実アドレスに変換されている場合に、
上記複数のアドレス変換テーブルが参照されたときにその参照内容を表す参照情報を時系列に格納し、
格納された参照情報に基づいて、上記複数のアドレス変換テーブルに対応する複数のテーブルを作成し、それらのテーブルをマージした結果を上記メモリスペースに書き込む。
【０１１９】
（付記１１）付記２に記載のプログラム作成方法であって、
上記命令コード、命令情報、バイナリデータ、アクセス情報が検出されない期間における上記メモリの更新内容を推定し、
推定された更新内容を上記メモリスペースに書き込む。
【０１２０】
（付記１２）情報処理装置を評価するためのテストプログラムを作成するシステムであって、
プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行される命令および上記メモリへのアクセス内容を検出する検出手段と、
検出された情報を実行履歴情報として時系列に格納する格納手段と、
上記実行履歴情報に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段と
を有することを特徴とするテストプログラム作成システム。
【０１２１】
（付記１３）情報処理装置を評価するためのテストプログラムを作成するシステムであって、
プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出する検出手段と、
検出された情報を実行履歴情報として時系列に格納する格納手段と、
上記実行履歴情報を時系列に解析し、予め用意されているメモリスペースに、上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段と
を有することを特徴とするテストプログラム作成システム。
【０１２２】
（付記１４）情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、
プロセッサおよびメモリを備える他のコンピュータを用いてオリジナルプログラムが実行されているときに検出された上記プロセッサにより実行される命令および上記メモリへのアクセス内容に基づいて、上記他のコンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段、
として機能させるためのテストプログラム作成プログラム。
【０１２３】
（付記１５）情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、
プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに検出された上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を解析する解析手段と、
上記解析手段による解析結果に基づいて、予め用意されているメモリスペースに上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段、
として機能させるためのテストプログラム作成プログラム。
【０１２４】
（付記１６）情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、
当該コンピュータを用いてオリジナルプログラムが実行されているときに、当該コンピュータのプロセッサにより実行される命令および当該コンピュータのメモリへのアクセス内容を検出する検出手段と、
上記検出手段により検出された情報に基づいて当該コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段、
として機能させるためのテストプログラム作成プログラム。
【０１２５】
（付記１７）情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、
当該コンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出する検出手段と、
上記検出手段により検出された情報を時系列に基づいて、予め用意されているメモリスペースに上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段、
として機能させるためのテストプログラム作成プログラム。
【０１２６】
（付記１８）情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、
当該コンピュータを用いてオリジナルプログラムが実行されているときに、当該コンピュータのプロセッサにより実行される命令および当該コンピュータのメモリへのアクセス内容を検出する検出手段と、
上記検出手段により検出された情報に基づいて当該コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段、
として機能させるためのテストプログラム作成プログラムを記録したコンピュータ読取り可能な記録媒体。
【０１２７】
（付記１９）情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、
当該コンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出する検出手段と、
上記検出手段により検出された情報を時系列に基づいて、予め用意されているメモリスペースに上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段、
として機能させるためのテストプログラム作成プログラムを記録したコンピュータ読取り可能な記録媒体。
【０１２８】
（付記２０）情報処理装置を評価するためのテストプログラムであって、
プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに検出された上記プロセッサにより実行される命令および上記メモリへのアクセス内容に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のテストプログラム。
【０１２９】
【発明の効果】
本発明によれば、情報処理装置が完成する前にその性能を正確に評価できる。このため、情報処理装置の開発期間を短縮できる。また、目標特性に近づけるためのデザインの変更を効率的に行うことができる。
【図面の簡単な説明】
【図１】本実施形態のプログラム作成方法の概観を説明する図である。
【図２】オリジナルプログラム実行マシンの構成図である。
【図３】トレーサの動作を示すフローチャートである。
【図４】実行履歴情報の実施例である。
【図５】初期メモリスペースの構成図である。
【図６】命令コードを初期メモリスペースに書き込む処理の実施例である。
【図７】Ｉ／Ｏ割込によるメモリ更新が発生したときの解析ツールの処理を説明する図である。
【図８】Ｉ／Ｏ命令によるメモリ更新が発生したときの解析ツールの処理を説明する図である。
【図９】動的情報参照命令が実行されたときの解析ツールの処理を説明する図である。
【図１０】  (a) は、オリジナルプログラム実行マシンにおいて非同期割込みが発生した場合の命令シーケンスを示す図であり、(b)は、(a) に示すシーケンスを実現するための方法を説明する図である。
【図１１】非同期割込が発生したときの解析ツールの処理を説明する図である。
【図１２】解析ツールの動作を説明するフローチャートである。
【図１３】  (a) は、割込命令を管理するリストの例、(b) は、割込命令を識別する方法の一例を示す図である。
【図１４】アドレス変換テーブルの圧縮について説明する図である。
【図１５】ベンチマークプログラムを作成および検証するシステムの構成図である。
【図１６】ベンチマークプログラムが実行される際に各割込命令に対応する処理を決定する手順を示すフローチャートである。
【図１７】トレーサを断続的に動作させた場合の処理を説明するための図である。
【図１８】本発明の機能を記述したプログラムを実行するコンピュータのブロック図である。
【図１９】本発明に係わるソフトウェアプログラムなどの提供方法を説明する図である。
【符号の説明】
１    オリジナルプログラム実行マシン
２    実行履歴情報
３    解析ツール
４    基本データ
５    補正データ
６    補正ツール
７    ベンチマークプログラム
１１  ＣＰＵ
１２  メモリ
１３  ＯＳ
１４  アプリケーションプログラム
１５  トレーサ
２１  外部デバイス
３０  初期メモリスペース
３１  基本メモリスペース
３２  補正用メモリスペース
【図１】
0004503203.tif 000002
【図２】
0004503203.tif 000003
【図３】
0004503203.tif 000004
【図４】
0004503203.tif 000005
【図５】
0004503203.tif 000006
【図６】
0004503203.tif 000007
【図７】
0004503203.tif 000008
【図８】
0004503203.tif 000009
【図９】
0004503203.tif 000010
【図１０】
0004503203.tif 000011
【図１１】
0004503203.tif 000012
【図１２】
0004503203.tif 000013
【図１３】
0004503203.tif 000014
【図１４】
0004503203.tif 000015
【図１５】
0004503203.tif 000016
【図１６】
0004503203.tif 000017
【図１７】
0004503203.tif 000018
【図１８】
0004503203.tif 000019
【図１９】
0004503203.tif 000020