Warning: copy(.htaccess): failed to open stream: Permission denied in /home/jp321/public_html/header.php on line 8
情報処理装置を評価するためのテストプログラムを作成する方法、装置、およびそのための処理を記述したプログラム - 富士通株式会社
米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 富士通株式会社

発明の名称 情報処理装置を評価するためのテストプログラムを作成する方法、装置、およびそのための処理を記述したプログラム
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−15914(P2003−15914A)
公開日 平成15年1月17日(2003.1.17)
出願番号 特願2001−202323(P2001−202323)
出願日 平成13年7月3日(2001.7.3)
代理人 【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之 (外1名)
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042 GA03 HH17 HH20 HH30 HH38 MA08 MA14 MC02 MC03 MC05 
発明者 坂本 真理子
要約 課題
情報処理装置が完成する前にその性能を正確に評価する方法を提供する。

解決手段
オリジナルプログラム実行マシン1は、OSがインストールされたコンピュータであり、与えられたアプリケーションプログラムを実行する。実行履歴情報2は、オリジナルプログラム実行マシン1における命令の実行およびメモリアクセスを時系列に表す。解析ツール3は、実行履歴情報2を解析することにより、オリジナルプログラム実行マシン1の動作を再現するロードモジュール形式の基本データ4を作成する。オリジナルプログラム実行マシン1により実行された処理のうちシミュレータ8が実行できない処理については、補正データ5が作成される。基本データ4および補正データ5からベンチマークプログラム7が作成される。
特許請求の範囲
【請求項1】 情報処理装置を評価するためのテストプログラムを作成する方法であって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行される命令および上記メモリへのアクセス内容を検出し、検出された情報を実行履歴情報として時系列に格納し、上記実行履歴情報に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成することを特徴とするテストプログラム作成方法。
【請求項2】 情報処理装置を評価するためのテストプログラムを作成する方法であって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出し、検出された情報を実行履歴情報として時系列に格納し、上記実行履歴情報を時系列に解析し、予め用意されているメモリスペースに、上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成することを特徴とするテストプログラム作成方法。
【請求項3】 請求項2に記載のテストプログラム作成方法であって、当該テストプログラムが与えられる装置が実行できない命令である第1の命令が上記コンピュータにより実行された場合は、上記第1の命令に起因する上記コンピュータの動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、上記第1の命令の代わりに上記処理ルーチンプログラムを呼び出す命令を上記メモリスペースに書き込む。
【請求項4】 請求項2に記載のテストプログラム作成方法であって、上記コンピュータにより実行されたときと当該テストプログラムが与えられる装置により実行されたときとで異なる動作を引き起こす可能性のある命令である第2の命令が上記コンピュータにより実行された場合に、上記コンピュータにおいて上記第2の命令が実行されたときに上記プロセッサが参照した条件を上記メモリスペースに書き込み、上記第2の命令の代わりに上記条件を呼び出す命令を上記メモリスペースに書き込む。
【請求項5】 請求項2に記載のテストプログラム作成方法であって、当該テストプログラムが与えられる装置が実施できない動作である第1の動作が上記コンピュータにより実施された場合に、上記コンピュータにおいて上記第1の動作が実施されたタイミングの近傍で実行された命令である第3の命令を命令シーケンスを切り替える命令に置き換えて上記メモリスペースに書き込み、上記第1の動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、上記命令シーケンスを切り替える命令と上記処理ルーチンプログラムとをリンクする。
【請求項6】 情報処理装置を評価するためのテストプログラムを作成するシステムであって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行される命令および上記メモリへのアクセス内容を検出する検出手段と、検出された情報を実行履歴情報として時系列に格納する格納手段と、上記実行履歴情報に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段とを有することを特徴とするテストプログラム作成システム。
【請求項7】 情報処理装置を評価するためのテストプログラムを作成するシステムであって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出する検出手段と、検出された情報を実行履歴情報として時系列に格納する格納手段と、上記実行履歴情報を時系列に解析し、予め用意されているメモリスペースに、上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段とを有することを特徴とするテストプログラム作成システム。
【請求項8】 情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、プロセッサおよびメモリを備える他のコンピュータを用いてオリジナルプログラムが実行されているときに検出された上記プロセッサにより実行される命令および上記メモリへのアクセス内容に基づいて、上記他のコンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段、として機能させるためのテストプログラム作成プログラム。
【請求項9】 情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、当該コンピュータを用いてオリジナルプログラムが実行されているときに、当該コンピュータのプロセッサにより実行される命令および当該コンピュータのメモリへのアクセス内容を検出する検出手段と、上記検出手段により検出された情報に基づいて当該コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段、として機能させるためのテストプログラム作成プログラム。
【請求項10】 情報処理装置を評価するためのテストプログラムであって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに検出された上記プロセッサにより実行される命令および上記メモリへのアクセス内容に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のテストプログラム。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は、情報処理装置を評価するためのテストプログラムを作成する方法および装置に係わり、特に、ベンチマークプログラムを作成する方法および装置に係わる。
【0002】
【従来の技術】各種情報処理装置(主に、コンピュータ)は、通常、その出荷前に様々な性能評価が行われる。例えば、ハードウェア開発時には、ロジックシミュレータ等を用いて、情報処理装置に搭載すべきCPUの論理が検証される。また、装置が完成した段階では、その装置に標準的なプログラムを実行させたときの処理時間を計測することにより、装置全体の性能の評価が行われる。なお、後者の評価は、しばしば「ベンチマークテスト」と呼ばれており、ベンチマークテストにおいて使用されるプログラムは「ベンチマークプログラム」を呼ばれている。
【0003】
【発明が解決しようとする課題】しかし、ロジックシミュレータは、論理の検証を主目的としているので、情報処理装置の性能を評価するための機能が十分でない。例えば、ロジックシミュレータには、通常、OS(Operating System)をインストール出来ないので、OS上でアプリケーションを実行した場合の動作をロジックシミュレータを用いて評価することがではない。また、ロジックシミュレータは、通常、外部メモリ等の外部デバイスを接続できないので、I/O命令を含む動作の評価を行うことができない。
【0004】一方、ベンチマークテストでは、完成した情報処理装置を利用して所定のプログラム(ベンチマークプログラム)が実行されるので、実行速度等を測定することは可能である。しかし、既存のベンチマークテストで実行される処理は、一般に、比較的単純なものであり、実際に使用すべきアプリケーションプログラムを実行した場合の性能を評価することは困難であった。従って、もし、実際に使用すべきアプリケーションプログラムを実行した場合の性能を正確に評価するのであれば、実際にそのアプリケーションプログラムを実行してみる必要がある。しかし、この場合は、通常、評価対象の情報処理装置に外部デバイスを接続した状態でテストを行う必要がある。例えば、データベース系のアプリケーションプログラムを実行した場合の動作を評価する場合には、情報処理装置に外部記憶装置が接続された状態でテストを行う必要がある。このため、上記テストを行うためには、かなりの時間と費用を要することになる。
【0005】また、ベンチマークテストは、評価対象の情報処理装置が完成した後に行われるので、もしその時点で一定の性能が得られないことが判明すると、設計変更等に要する手間が非常に多くなってしまう。すなわち、製品の開発時間が長くなってしまう。
【0006】このように、従来は、情報処理装置の完成前にその性能を正確に評価することはできなかった。本発明の課題は、情報処理装置が完成する前にその性能を正確に評価できるようにすることである。
【0007】
【課題を解決するための手段】本発明の方法は、情報処理装置を評価するためのテストプログラムを作成する方法であって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに上記プロセッサにより実行される命令および上記メモリへのアクセス内容を検出し、検出された情報を実行履歴情報として時系列に格納し、実行履歴情報に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する。
【0008】上記ロードモジュール形式のプログラムには、オリジナルプログラムが実行されたときの命令だけでなく、メモリのアクセス内容も含んでいる。よって、評価対象の情報処理装置にこのロードモジュールが与えられると、その装置は、上記コンピュータの動作を忠実に再現できる。また、上記コンピュータにOSがインストールされているものとすると、上記ロードモジュールは、そのOSの命令も含むことになる。したがって、評価対象の情報処理装置にOSがインストールされていなくても、上記コンピュータの動作を再現できる。
【0009】本発明の他の形態のテストプログラム作成方法は、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出し、検出された情報を実行履歴情報として時系列に格納し、上記実行履歴情報を時系列に解析して予め用意されているメモリスペースに上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことによりロードモジュール形式のプログラムを作成する。
【0010】この方法においても、基本的に上述の方法と同様に、評価対象の情報処理装置において上記コンピュータの動作が忠実に再現される。なお、上記方法において、当該テストプログラムが与えられる装置が実行できない命令である第1の命令が上記コンピュータにより実行された場合は、上記第1の命令に起因する上記コンピュータの動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、上記第1の命令の代わりに上記処理ルーチンプログラムを呼び出す命令を上記メモリスペースに書き込むようにしてもよい。この場合、評価対象の情報処理装置が実行できない命令は、評価対象の情報処理装置が実行できる処理ルーチンプログラムに置き換えられるので、評価対象の情報処理装置において上記コンピュータの動作が忠実に再現される。
【0011】また、上記方法において、上記コンピュータにより実行されたときと当該テストプログラムが与えられる装置により実行されたときとで異なる動作を引き起こす可能性のある命令である第2の命令が上記コンピュータにより実行された場合に、上記コンピュータにおいて上記第2の命令が実行されたときに上記プロセッサが参照した条件を上記メモリスペースに書き込み、上記第2の命令の代わりに上記条件を呼び出す命令を上記メモリスペースに書き込むようにしてもよい。この場合、上記コンピュータおよび評価対象の情報処理装置の実行速度または動作環境が互いに異なっていても、それらの間で整合性がとられるので、評価対象の情報処理装置において上記コンピュータの動作が忠実に再現される。
【0012】更に、上記方法において、当該テストプログラムが与えられる装置が実施できない動作である第1の動作が上記コンピュータにより実施された場合に、上記コンピュータにおいて上記第1の動作が実施されたタイミングの近傍で実行された命令である第3の命令を命令シーケンスを切り替える命令に置き換えて上記メモリスペースに書き込み、上記第1の動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、上記命令シーケンスを切り替える命令と上記処理ルーチンプログラムとをリンクするようにしてもよい。この場合、評価対象の情報処理装置が実行できない動作は、その情報処理装置が実行できる処理ルーチンプログラムに置き換えられるので、評価対象の情報処理装置において上記コンピュータの動作が忠実に再現される。
【0013】
【発明の実施の形態】以下、本発明の実施形態について図面を参照しながら説明する。図1は、本実施形態のプログラム作成方法の概観を説明する図である。なお、本実施形態では、情報処理装置を評価するためのテストプログラムを作成する。具体的には、コンピュータ(主に、コンピュータのハードウェア)の性能を評価するためのテストプログラムを作成する。以下では、このプログラムのことを、「ベンチマークプログラム」と呼ぶ。
【0014】オリジナルプログラム実行マシン1は、所定のオペレーティングシステム(OS:Operating System)がインストールされたコンピュータにより実現され、与えられたアプリケーションプログラムを実行する。そして、各命令が実行されるごと、或いはメモリがアクセスされるごとに、その動作を表す情報を時系列に蓄積してゆくことにより、実行履歴情報2を作成する。なお、オリジナルプログラム実行マシン1により実行されるプログラム(OSを含む)のことを、「オリジナルプログラム」と呼ぶことがある。
【0015】解析ツール3は、実行履歴情報2を解析し、基本データ4および補正データ5を生成する。ここで、基本データ4は、オリジナルプログラム実行マシン1により実行された命令実行シーケンスを再現するデータである。また、補正データ5は、基本データ4を補正するためのデータである。なお、補正データ5は、補正ツール6により適切な状態に加工される。
【0016】ベンチマークプログラム7は、基本データ4および補正ツール6により加工された補正データ5から構成される。なお、ベンチマークプログラム7は、オリジナルプログラム実行マシン1における動作を表すロードモジュールである。
【0017】シミュレータ8は、評価対象の情報処理装置の代替装置であり、ベンチマークプログラム7が与えられ、それに従って動作する。なお、シミュレータ8は、完成前の情報処理装置、またはロジックシミュレータ等であってもよい。また、シミュレータ8には、必ずしもOSがインストールされてなくてもよい。さらに、シミュレータ8には、外部デバイスが接続されてないものとする。
【0018】ベンチマークプログラム7は、ロードモジュールであり、シミュレータ8に与えられる。ここで、このロードモジュールは、オリジナルプログラム実行マシン1により実行されたアプリケーションプログラムの命令シーケンスだけでなく、オリジナルプログラム実行マシン1にインストールされているOSの命令シーケンスも含んでいる。したがって、シミュレータ8にOSがインストールされていない場合であっても、ベンチマークプログラム7が与えられると、シミュレータ8において、オリジナルプログラム実行マシン1により実行された命令シーケンスが再現される。また、オリジナルプログラム実行マシン1において外部デバイスに係わる動作が発生した場合は、その動作は、補正データ5を用いてシミュレータ8が処理できる形式で表される。したがって、外部デバイスが接続されていないシミュレータ8を用いて、外部デバイスに係わる動作の評価を行うことができる。
【0019】図2は、オリジナルプログラム実行マシン1の構成図である。オリジナルプログラム実行マシン1は、少なくとも、CPU(Central Processing Unit )11およびメモリ12を備える。
【0020】CPU11は、メモリ12に格納されているプログラムを実行することによって、データを受け取り、そのデータを使って演算を行い、その演算結果を出力するまでの一連の動作を提供する。なお、CPU11は、複数のレジスタを備えている。
【0021】メモリ12は、CPU11によりアクセスされる記憶領域であり、OSプログラム13、アプリケーションプログラム14、および各種データを格納する。ここで、OSプログラム13は、特に限定されるものではないが、評価対象の情報処理装置にインストールすべきOSと同じもの、或いはそれと互換性があるものが使用される。また、アプリケーションプログラム14は、評価対象の情報処理装置において実行されるものであることが好適である。
【0022】トレーサ15は、CPU11の動作およびメモリ12へのアクセスを検出し、時系列にその検出結果を出力する。なお、トレーサ15は、図2に示す例では、メモリ12に格納されているが、他の記憶領域に設けられてもよい。
【0023】外部デバイス21は、オリジナルプログラム実行マシン1に接続されるデバイスであり、例えば、外部記憶装置、キーボード等の入力装置である。図3は、トレーサ15の動作を示すフローチャートである。この処理は、例えば、CPU11により何らかの処理が実行されるごと、或いはメモり12に何らかのアクセスが発生するごとに起動される。
【0024】ステップS1では、CPU11により命令が実行されたか否かを調べる。ここで、「命令」は、アプリケーションプログラム14の命令だけでなく、OS処理に伴う命令も含む。そして、CPU11により命令が実行された場合は、ステップS2において対応する命令レコードを作成する。ここで、命令レコードは、例えば、下記の情報から構成される。
・命令コード・命令格納アドレス(実アドレス、論理アドレス)
・書込み先レジスタ情報・書込み先アドレス(実アドレス、論理アドレス)
・書込みデータ長・参照レジスタ情報・参照アドレス(実アドレス、論理アドレス)
・参照データ長「命令コード」は、CPU11に与えられる命令そのものであり、機械語で表現されている。なお、この命令コードは、たとえば、CPU11が備える命令レジスタに書き込まれたデータ列を抽出することにより得られる。「命令格納アドレス」は、当該命令が格納されているアドレスである。「書込先レジスタ情報」は、当該命令によりデータを書き込むべきレジスタを識別する。「書込み先アドレス」および「書込みデータ長」は、それぞれ、当該命令によりデータがメモリ12に書き込まれるときの、そのデータが書き込まれるアドレスおよびそのデータのデータ長である。「参照レジスタ情報」は、当該命令によりデータを参照すべきレジスタを識別する。「参照アドレス」および「参照データ長」は、それぞれ、当該命令によりメモリ12内のデータが参照されるときの、そのデータが格納されているアドレスおよびそのデータのデータ長である。なお、「命令格納アドレス」〜「参照データ長」を検出する方法は、既存の技術により実現可能である。
【0025】ステップS3では、CPU11が備えるレジスタが更新されたか否か調べる。そして、1または複数のレジスタが更新された場合は、ステップS4において対応するレジスタレコードを作成する。ここで、レジスタレコードは、例えば、更新されたレジスタを識別する情報、およびそのレジスタに新たに書き込まれたデータ(レジスタ値)を含む。
【0026】ステップS5では、CPU11に対する割込が発生したか否かを調べる。そして、CPU11に対する割込が発生した場合は、ステップS6において対応する割込みレコードを作成する。ここで、割込は、この実施例では、I/O割込、プログラム割込、外部割込、特権(SVC)割込等を想定する。下記に、各割込に対応する割込みレコードの例を示す。
I/O割込・割込み発生前のPSW値・割込みコードプログラム割込・割込み発生前のPSW値・命令長・割込みコード・例外種別を判定するコード・現象識別コード外部割込・割込み発生前のPSW値・命令長・現象識別コード特権(SVC)割込・割込み発生前のPSW値・割込み発生後のPSW値・命令長・現象識別コードステップS7では、メモリ12がアクセスされたか否かを調べる。ここで、アクセスは、メモリ12にデータを書き込む動作、およびメモリ12に格納されているデータを参照する動作を含む。そして、メモリ12がアクセスされた場合には、ステップS8において対応するメモリデータレコードを作成する。ここで、メモリデータレコードは、例えば、下記の情報から構成される。
・実アドレス・メモリデータ・データ長・アクセス種別「実アドレス」は、アクセスされた実アドレスを表す。「メモリデータ」は、メモリ12に書き込まれるデータまたはメモリ12から読み出されるデータである。「データ長」は、メモリ12に書き込まれるデータまたはメモリ12から読み出されるデータのデータ長を表示する。「アクセス種別」は、書込または参照を識別する。
【0027】ステップS9では、OSが管理している各種テーブルを更新するための命令が実効されたか否かを調べる。ここでは、アドレス変換テーブルを更新する命令が実効されたか否かが調べられるものとする。なお、アドレス変換テーブルには、CPU11が認識する論理アドレスをメモリ12上の実アドレスに変換するための情報が登録されている。そして、アドレス変換テーブルを更新する命令が実効された場合は、ステップS10において対応するテーブル参照レコードを作成する。ここで、テーブル参照レコードは、例えば、下記の情報から構成される。
・対応動作・変換アドレス・テーブルアドレス・データ長「対応動作」は、アドレス変換を要求した動作を表し、命令フェッチ、データ参照、データ書込みを識別する。「変換アドレス」は、変換処理に係わる1組の論理アドレスと実アドレスである。「テーブルアドレス」は、参照されたアドレス変換テーブルが格納されているアドレスである。「データ長」は、参照されたアドレス変換テーブルにより変換されたデータのデータ長である。
【0028】ステップS11では、キー情報が設定されたか否かを調べる。なお、キー情報は、記憶領域を構成する各ページを管理するための情報であり、OSにより使用される。そして、キー情報が設定された場合は、ステップS12において対応するキー情報レコードを作成する。ここで、キー情報レコードは、例えば、下記の情報から構成される。なお、キー情報は、メモリレコード、命令レコード、レジスタ値から導き出すようにしてもよい。
・アクセス側キー情報・命令コード・アクセス種別(命令フェッチ、オペランド読出し、オペランド書込み、オペランド番号)
・メモリアクセス論理アドレス・メモリアクセス実アドレス・セグメントテーブル先頭アドレス・セグメントテーブルエントリ番号
・データ長このように、トレーサ15は、CPU11によりオリジナルプログラムが実行されると、命令、メモリデータ、関連情報などを検出し、対応するレコードを作成していく。そして、トレーサ15により次々と作成されるレコードは、実行履歴情報2として時系列に格納される。
【0029】なお、トレーサ15は、CPU11により命令が実行されると、それに対応する命令レコードを作成するが、例えばその命令に起因してメモリアクセスが発生した場合には、そのメモリアクセスに対応するメモリデータレコードも同時に作成する。すなわち、トレーサ15は、CPU11により1つの命令が実行されると、その命令に対応する1または複数のレコードを作成する。
【0030】また、上述の例では、メモリ12がアクセスされたときに対応するメモリデータレコードが作成されるが、メモリ12に格納されているあるデータが参照(読出)された場合には、解析ツール3は、そのデータが最初に参照されたときにのみメモリデータレコードを作成するようにしてもよい。
【0031】さらに、ある命令に従ってメモり12が更新されるとき、その更新内容が容易に推測できる場合には、解析ツール3は、メモリデータレコードの代わりに他のレコードを作成するようにしてもよい。例えば、メモリ12に格納されているメモリデータをレジスタにロードするだけの単純なロード命令であれば、メモリデータレコードを作成する代わりに、レジスタレコードのみを作成するようにしてもよい。この場合、このレジスタレコードには、ロード命令のオペランドアドレス(メモリ12の参照アドレス)が登録される。このとき、ロード命令実行後にロード先のレジスタに格納されている値は、レジスタレコードに登録されることになるが、この値は、ロード命令のオペランドアドレスに格納されているメモリデータと一致する。なお、命令レコードから更新内容を導く出すようにしてもよい。
【0032】図4は、実行履歴情報2の実施例である。実行履歴情報2は、ファイル等に格納される際に、レコード番号を用いて管理される。すなわち、トレーサ15により作成された各レコードは、それぞれその作成順にレコード番号が付与されて蓄積される。また、各レコードには、それぞれレコードタイプが付与される。この実施例では、「命令レコード」「レジスタレコード」「メモリデータレコード」に対してそれぞれ「01」「02」「03」が割り当てられている。そして、トレーサ15により検出された情報は、それぞれそのまま実行情報として格納される。この実施例では、例えば、「レコード番号=453」により識別されるレコードに命令レコードが格納されている。具体的には、このレコードのレコードタイプには「01」が設定されており、さらに、実行情報としてトレーサ15により検出された命令コード、各種アドレス、データ長などが格納されている。
【0033】なお、上述の実施例では、実機上でトレーサ15を動かすことにより実行履歴情報2を作成するために必要な情報を採取しているが、他の方法で採取するようにしてもよい。例えば、アーキテクチャシミュレータを用いて必要な情報を採取してもよい。また、実行履歴情報2を作成するために必要な情報は、評価対象の装置により異なる。すなわち、採取すべき情報は、評価対象の装置にインストールされるOS、評価対象の装置に実装されるCPUの命令アーキテクチャ、評価対象の装置のシステム構成などに依存して決定される。
【0034】上述のようにして作成された実行履歴情報2は、解析ツール3により解析される。以下、解析ツール3の動作について説明する。解析ツール3は、実行履歴情報2の各レコードを1つずつ順番に解析し、その結果を図5に示す初期メモリスペース30を書き込んでいく。初期メモリスペース30は、基本メモリスペース31および補正用メモリスペース32から構成されている。ここで、基本メモリスペース31は、オリジナルプログラム実行マシン1が備えるメモリ12の実空間と同じサイズの記憶領域である。なお、図1に示した基本データ4および補正データ5は、それぞれ基本メモリスペース31および補正用メモリスペース32に書き込まれる。
【0035】また、解析ツール3は、レジスタレコードに登録されている情報を反映させるためのレジスタ群33を備える。レジスタ群33は、オリジナルプログラム実行マシン1のCPU11と同じ数のレジスタから構成され、初期メモリスペース30にデータを書き込む際に利用される。
【0036】解析ツール3は、実行履歴情報2の各レコードを解析することにより得られた結果を、順次、基本メモリスペース31に書き込んでいく。例えば、解析ツール3は、命令レコードを抽出したときは、そのレコードに登録されている「命令コード」を、そのレコードに登録されている「命令格納アドレス(実アドレス)」をキーとして、基本メモリスペース31内の対応する領域に書き込む。この時、「命令コード」に付随するデータがあれば、その情報を「命令コード」に続く領域に書き込む。これにより、オリジナルプログラム実行マシン1により実行された命令の命令コードが、基本メモリスペース31に書き込まれることになる。このとき、この命令コードは、メモリ12および基本メモリスペース31において互いに同一のアドレスに存在する。
【0037】例えば、図6に示す例では、オリジナルプログラム実行マシン1が備えるメモリ12の"aaaa"番地に格納されているstore 命令が実行され、それに対応する命令レコードが作成されている。そして、この命令レコードが解析され、それに伴って基本メモリスペース31の"aaaa"番地にstore命令が書き込まれている。
【0038】なお、上述のようにして命令コードを基本メモリスペース31に書き込む際、対応する領域に何らかのデータが既に格納されていた場合は、解析ツール3は、その書込み処理を実行しない。ここで、上書きを禁止する機能は、例えば、基本メモリスペース31をバイト単位で管理するテーブルを設け、そのテーブルを用いて各領域にデータが格納されているか否かを管理することにより実現可能である。
【0039】同様に、解析ツール3は、実行履歴情報2からメモリデータレコードを抽出したときは、そのレコードに登録されている「メモリデータ」を、そのレコードに登録されている「実アドレス」をキーとして基本メモリスペース31内の対応する領域に書き込む。これにより、オリジナルプログラム実行マシン1のメモリ12および基本メモリスペース31の同じアドレスに同じメモリデータが存在することになる。
【0040】なお、他の種類のレコードについては、後に示すフローチャートを参照しながら後述する。このように、解析ツール3は、実行履歴情報2を解析することにより、オリジナルプログラム実行マシン1のメモリ12の内容を初期メモリスペース30の基本メモリスペース31に反映させる。この場合、任意時刻においてメモリ12の内容を基本メモリスペース31にコピーすることによっても、同様の結果を得ることができる。
【0041】ところで、本実施形態のベンチマークテストは、評価対象の情報処理装置が完成する前にその装置の性能を調べることを想定している。したがって、評価対象の装置をテストする際には、その装置と同等の仕様を備えるシミュレータ(図1に示すシミュレータ8)を用意し、本実施形態のベンチマークプログラムをそのシミュレータ8に実行させることにより評価対象の装置の性能が推定される。ここで、このシミュレータ8には、評価対象の情報処理装置が備えるCPU又はそれと同等のプロセッサが実装されているが、OSがインストールされていないことも想定される。また、シミュレータ8には、外部デバイスが接続されていない場合も想定される。このため、シミュレータ8は、オリジナルプログラム実行マシン1により実行される命令または処理の一部を実行できない。
【0042】本実施形態のプログラム作成方法では、オリジナルプログラム実行マシン1により実行される命令/処理のうち、シミュレータ8が実行できない命令/処理をシミュレータ8が実行できる命令/処理に置き換えることにより、上記問題の解決を図る。以下では、この置換え処理のことを、「補正」と呼ぶことがある。また、図1に示した補正データ5は、この補正処理のために使用される。
【0043】以下の実施例では、補正の必要な命令または処理として、非同期割込み(I/O割込みを含む)、I/O命令、動的情報を参照する命令を採り上げる。
非同期割込み(その1)ここでは、オリジナルプログラム実行マシン1において、外部デバイス21からのI/O割込により、メモリ12が更新される場合(メモリ12に新たなデータが書き込まれる場合)を想定する。
【0044】非同期割込みは、OSの命令またはアプリケーションプログラムの命令の実行と無関係に発生する。すなわち、I/O割込みによるメモリ12の更新は、ジョブが実行されている最中に行われる。このとき、このメモリ更新は、実行中のジョブから見ると、I/O割込の発生により認識される。
【0045】ところで、I/O割込みによりメモリ12が更新されると、トレーサ15は、対応する割込みレコードおよびメモリデータレコードを作成する。このため、解析ツール3は、基本的には、これらのレコードに従って初期メモリスペース30を更新する処理を実行すべきである。しかし、実際には、上記メモリデータレコードの内容が初期メモリスペース30に反映されれば、オリジナルプログラム実行マシン1において実行されたメモリ更新と同じ結果が得られるはずである。
【0046】図7は、I/O割込によるメモリ更新が発生したときの解析ツール3の処理を説明する図である。この実施例では、オリジナルプログラム実行マシン1において、外部デバイス21からI/O割込みによりメモリ12の"bbbb"番地にデータAが書き込まれ、それに対応する割込みレコードおよびメモリデータレコードが作成されている。この場合、メモリデータレコードの内容に従って、基本メモリスペース31の"bbbb"番地にデータAが書き込まれる。
【0047】このように、オリジナルプログラム実行マシン1においては、外部デバイス21からの割込によりメモリ12の"bbbb"番地にデータAが書き込まれる。これに対して、基本メモリスペース31の"bbbb"番地には、予めデータAが書き込まれる。
【0048】ここで、初期メモリスペース30に格納されているデータは、最終的には、ベンチマークプログラムとして使用される。具体的には、基本メモリスペース31に格納されている命令がシミュレータにより順番に実行されていく。このとき、図7に示すようにして初期メモリスペース30が作成されたものとすると、ベンチマークテストの開始時に、基本メモリスペース31の"bbbb"番地には既にデータAが格納されていることになる。そして、この状態は、基本メモリスペース31に格納されている命令とは無関係にデータAが"bbbb"番地に書き込まれたことと等価である。すなわち、この状態は、外部デバイス21からのI/O割込みにより"bbbb"番地にデータAが書き込まれたのと実質的に等価である。従って、I/O割込みによるメモリ更新は、メモリデータレコードの内容を初期メモリスペース30に反映させることで実現される。すなわち、シミュレータ8に外部デバイス21を接続できない状況であっても、ベンチマークテストにおいてその外部デバイス21が接続されているときと同じ結果が得られる。なお、"bbbb"番地にデータAと異なるデータA1が存在し、後でI/O割込みによりそのデータA1をデータAに変更するケースもある得る。この場合、メモリ31上では、上記I/O命令の発生時点で上記更新が反映される。
I/O命令ここでは、オリジナルプログラム実行マシン1において、I/O命令が実行され、それに伴ってメモリ12が更新されたものとする。このI/O命令は、例えば、外部デバイス21からデータを読み出してそれをメモリ12に書き込む命令である。
【0049】オリジナルプログラム実行マシン1においてI/O命令が実行されると、トレーサ15は、そのI/O命令に対応する命令レコードを作成する。また、この命令に伴ってメモり12が更新されると、更新されたメモリデータを含むメモリデータレコードが作成される。さらに、上記I/O命令を実行することにより更新された情報(例えば、レジスタ値、コンディションコード等)が対応するレコードに登録される。
【0050】解析ツール3は、上記各レコードに基づいて、初期メモリスペース30に必要な情報を書き込む。具体的には、上記I/O命令により更新されたメモリデータおよび各種情報を、補正データとして補正用メモリスペース32に書き込む。また、解析ツール3は、上記I/O命令の代わりに割込属性命令を生成し、それを基本メモリスペース31内の対応するアドレスに書き込む。ここで、この割込属性命令は、先に補正用メモリスペース32に格納してある補正データを処理するための命令である。
【0051】図8は、I/O命令によるメモリ更新が発生したときの解析ツール3の処理を説明する図である。この例では、オリジナルプログラム実行マシン1において、メモリ12の"cccc"番地に格納されているI/O命令が実行されることにより、"dddd"番地にデータBが書き込まれている。このとき、トレーサ15は、対応するレコードを作成する。そして、解析ツール3は、まず、メモリデータレコードを利用して、データBを補正用メモリスペース32内の所定の領域に書き込む。なお、図8では、データBのみが補正用メモリスペース32に書き込まれているが、実際には、他の関連情報も一緒に格納される。続いて、解析ツール3は、上記I/O命令に対応する処理ルーチンプログラム(sub-p)を作成し、それを補正用メモリスペース32内の所定の領域に書き込む。この処理ルーチンプログラムには、以下の処理が記述されている。
・補正用メモリスペース32に格納されているデータBを、基本メモリ領域31の"dddd"番地に書き込む処理・補正用メモリスペース32に格納されている他の関連情報に従って、レジスタ等を更新する処理さらに、解析ツール3は、基本メモリスペース31の"cccc"番地に割込属性命令を書き込む。すなわち、I/O命令に代わりに割込属性命令が書き込まれることになる。ここで、この割込属性命令は、割込を発生する属性を持った命令であり、補正用メモリスペース32に格納されている処理ルーチンプログラムを呼び出すことができる。
【0052】上述のようにして作成されたベンチマークプログラムをシミュレータ8に与えると、以下の動作が実現される。すなわち、シミュレータ8は、基本メモリスペース31に格納されている命令を順番に実行していく。そして、図8において設定された割込属性命令が実行されると、補正用メモリスペース32に格納されている処理ルーチンプログラムが起動される。そして、この処理ルーチンプログラムにより、補正用メモリスペース32に格納されているデータBが基本メモリ領域31の"dddd"番地に書き込まれると共に、レジスタ等が更新される。その後、上記割込属性命令の次の命令に処理が戻る。
【0053】このように、シミュレータ8に上記ベンチマークプログラムを与えると、オリジナルプログラム実行マシン1において上記I/O命令に起因して生じた動作と同じ動作が実現されることになる。ここで、上記ベンチマークプログラムにおいては、I/O命令が割込属性命令に置き換えられている。したがって、シミュレータ8がI/O命令を実行できない場合であっても、そのシミュレータ8を用いてI/O命令に対応する動作が実現される。
動的情報を参照する命令ここでは、オリジナルプログラム実行マシン1において、動的情報を参照する命令が実行されるものとする。なお、「動的情報」とは、たとえば、命令が実行される時刻、あるいは所定の処理を実行するために要した時間に関する情報である。また、「動的情報を参照する命令」とは、上記動的情報に依存して異なる動作を導き出す命令である。例えば、「プログラム起動時から10秒以内に実行される場合はXX番地にジャンプし、それ以降に実行される場合にはYY番地にジャンプする」が定義された分岐命令である。
【0054】上述のような動的情報を参照する命令(以下、動的情報参照命令)は、基本的に、シミュレータ8でも実行することができる。しかし、シミュレータ8の実行速度は、必ずしもオリジナルプログラム実行マシン1のそれと同じではない。このため、オリジナルプログラム実行マシン1およびシミュレータ8に同じプログラムが与えられたとき、動的情報参照命令による処理結果が同じになるとは限らない。
【0055】本実施形態のプログラム作成方法では、この問題を解決するために、オリジナルプログラム実行マシン1により動的情報参照命令が実行された場合は、その命令を他の命令(例えば、ロード命令)に置き換えると共に、シミュレータ8において同等の動作が実現されるように補正処理が行われる。
【0056】図9は、動的情報参照命令が実行されたときの解析ツール3の処理を説明する図である。なお、図9では、動的情報参照命令のことを「D命令」と記載してある。
【0057】オリジナルプログラム実行マシン1において、メモリ12の"eeee"番地に格納されている動的情報参照命令を実行することにより、"ffff"番地に格納されている動的情報が参照され、その動的情報の値に従って以降の処理が決定されたものとする。ここで、メモリ12の"ffff"番地は、例えば、プログラムの起動時からの経過時間を書き込むための領域として使用されている。そして、この経過時間が動的情報として使用される。また、この動的情報参照命令は、例えば、メモリ12の"ffff"番地に格納されている動的情報を所定のレジスタにロードして、それを予め決められているしきい値と比較することにより以降の処理を決定する命令である。
【0058】この場合、トレーサ15は、対応する命令レコードおよびレジスタレコードを作成する。このとき、この命令レコードには、少なくとも、動的情報参照命令を識別する命令コード、動的情報参照命令の格納アドレス、動的情報の格納アドレスが登録される。また、レジスタレコードには、少なくとも、レジスタ値が登録される。ここで、このレジスタ値は、メモリ12の"ffff"番地から読み出した動的情報と上記しきい値との比較結果である。
【0059】解析ツール3は、作成されたレコードを解析することにより、以下の処理を行う。すなわち、解析ツール3は、まず、命令レコードに基づいて、基本メモリスペース31の"eeee"番地にロード命令を書き込む。このロード命令は、"ffff"番地に格納されているデータを所定のレジスタにロードする命令である。また、解析ツール3は、上記レジスタレコードに登録されているレジスタ値を基本メモリスペース31の"ffff"番地に書き込む。
【0060】上述のようにして作成されたベンチマークプログラムをシミュレータ8に与えると、以下の動作が実現される。すなわち、シミュレータ8において、上記ロード命令が実行されると、基本メモリスペース31の"ffff"番地に格納されているデータが所定のレジスタにロードされる。ここで、"ffff"番地には、オリジナルプログラム実行マシン1において上記動的情報と上記しきい値とが比較されたときの比較結果が格納されている。したがって、シミュレータ8において、このロード命令が実行されると、オリジナルプログラム実行マシン1において動的情報参照命令が実行されたときと同等の動作が実現される。
【0061】このように、シミュレータ8に上記ベンチマークプログラムを与えると、動的情報を参照することなく、オリジナルプログラム実行マシン1において動的情報参照命令が実行されたときと同等の動作が実現される。すなわち、オリジナルプログラム実行マシン1およびシミュレータ8の実行速度または動作環境が互いに異なっていても、オリジナルプログラム実行マシン1の動作がシミュレータ8上で再現される。
【0062】なお、図9に示す例では、動的情報参照命令をロード命令に置き換えることにより、オリジナルプログラム実行マシン1およびシミュレータ8において同じ動作が実現されるようにしているが、これに限定されるものではない。すなわち、例えば、動的情報参照命令による処理が複雑な場合や、命令が複数回実行されてその実行の都度レジスタ値が異なる場合等には、上述したI/O命令についての処理と同様に、割込属性命令を利用してもよい。すなわち、動的情報参照命令を割込属性命令に置き換えると共に、その割込属性命令による割込が発生したときに呼び出される処理ルーチンプログラムを補正メモリスペース32に格納する。この場合、この処理ルーチンプログラムには、動的情報参照命令に対応する処理が記述される。
非同期割込み(その2)ここでは、オリジナルプログラム実行マシン1において、外部デバイス21からのI/O割込が発生し、その割込に対応する処理が実行されたものとする。
【0063】図10(a) は、オリジナルプログラム実行マシン1において上記割込みが発生した場合の命令シーケンスを示す図である。ここでは、命令A〜F...が順番に実行されるシーケンスにおいて、命令Cが実行された直後に割込が発生したものとする。そして、その割込により命令a〜dを含む処理ルーチン41が実行され、その後に命令Dに処理が戻っている。
【0064】本実施形態のベンチマークプログラムを作成する際には、上記非同期割込に起因する動作をシミュレータ8において再現するために、その非同期割込の直前の命令が処理ルーチン41を呼び出すための命令に置き換えられる。上述の例の場合は、図10(b) に示すように、命令Cが、処理ルーチン42を呼び出すための割込属性命令に置き換えられる。ここで、処理ルーチン42は、処理ルーチン41を構成する命令a〜dに加え、命令Cに起因する動作をエミュレートしたデータ(エミュレーションデータ)を含んでいる。また、命令Cのエミュレーションデータは、例えば、命令Cが実行されたときの演算結果や、レジスタ更新に係わる情報などを含む。
【0065】なお、上述の例では、非同期割込の直前の命令が割込属性命令に置き換えられているが、必ずしも直前の命令が置き換えられる必要はなく、非同期割込が発生したタイミングの近傍の他の命令が割込属性命令に置き換えられてもよい。この場合、エミュレーションが容易な命令(例えば、ADD命令など)が割込属性命令に置き換えられることが望ましい。
【0066】図11は、非同期割込が発生したときの解析ツール3の処理を説明する図である。なお、図11では、図10に示した例に対応する実施例を示す。オリジナルプログラム実行マシン1において、メモリ12の"gggg"番地に格納されている命令Cが実行された直後に非同期割込が発生し、この割込により処理ルーチン41が呼び出されたものとする。この場合、トレーサ15は、命令Cに対応する命令レコード、命令Cに起因して更新された情報に対応するレコード、非同期割込に対応する割込みレコード、処理ルーチン41に含まれている命令に対応するレコードなどを作成する。
【0067】解析ツール3は、作成されたレコードに基づいて、以下の処理を行う。すなわち、解析ツール3は、まず、レジスタレコード等を参照して命令Cのエミュレーションデータを作成し、そのエミュレーションデータを含み且つ命令aに処理を渡す命令が最後に実行される処理ルーチン42を作成する。そして、その処理ルーチン42を補正用メモリスペース32の所定領域に書き込む。また、解析ツール3は、基本メモリスペース31の"gggg"番地に割込属性命令を書き込む。この割込属性命令は、処理ルーチン42を呼び出す命令である。
【0068】上述のようにして作成されたベンチマークプログラムをシミュレータ8に与えると、以下の動作が実現される。すなわち、シミュレータ8において、上記割込属性命令が実行されると、処理ルーチン42が呼び出される。これにより、命令Cに対応する動作が実現される。続いて、処理ルーチン41に制御が渡る。処理ルーチン41が実行された後、処理は、命令Cの次の命令に戻る。
【0069】このように、シミュレータ8に上記ベンチマークプログラムを与えると、非同期割込を発生させることなく、オリジナルプログラム実行マシン1において非同期割込に起因して生じた動作と同等の動作が再現される。すなわち、シミュレータ8が非同期割込を受け付ける機能を備えていなくても、オリジナルプログラム実行マシン1において非同期割込が発生したときと同等の動作がシミュレータ8上で再現される。
【0070】なお、上記実施例では割込命令が使用されているが、この割込命令は、命令シーケンスを切り替える命令の一例である。即ち、図11において、命令Cは、命令シーケンスを切り替える命令に置き換えられればよい。この場合、この命令シーケンスを切り替える命令と、処理ルーチン42がリンクされる。
【0071】図12は、解析ツール3の動作を説明するフローチャートである。解析ツール3は、上述したように、実行履歴情報2の各レコードを順番に解析することにより、ベンチマークプログラム7の元となる基本データ4および補正データ5を作成する。なお、基本データ4および補正データ5は、初期メモリスペース30に書き込まれる。
【0072】ステップS21は、実行履歴情報2の各レコードを先頭から1つずつ抽出する処理である。ステップS22〜S27では、抽出されたレコードの属性が調べられる。ここで、レコードの属性は、図4に示したレコードタイプにより識別される。
【0073】実行履歴情報2から抽出したレコードが命令レコードであった場合は、ステップS31へ進む。ステップS31では、当該レコードに割込命令が登録されているか否かが調べられる。そして、割込命令が登録されていた場合は、ステップS32において、その割込命令に関連する情報を管理リストに登録する。管理リストは、図13(a) に示すように、各割込命令に係わる情報をその登場順に登録する。なお、新たな割込命令がこの管理リストに登録される際、その割込命令に対してシリアル番号が付与される。また、このとき、その割込命令に対応するアドレス情報が図13(b)に示す割込管理テーブルに追加される。割込管理テーブルは、各割込命令に付与されているシリアル番号と、割込命令に起因して実行される処理を記述した処理ルーチンプログラムを格納するアドレスとの対応関係を管理している。
【0074】抽出されたレコードに割込命令が登録されていなかった場合は、ステップS33へ進む。ステップS33では、抽出されたレコードに「他の命令に置き換え可能な命令(割込を発生させるポイントの候補)」が登録されているか否かが調べられる。「他の命令に置き換え可能な命令」は、先の実施例では、例えば、図9に示した動的情報参照命令に相当する。そして、当該レコードにそのような命令が登録されていた場合には、ステップS34において、置換え前の命令と置換え後の命令との対応関係を登録する。具体的には、置換え候補を記録するための変数に対応する命令IDを登録する。
【0075】抽出されたレコードに「他の命令に置き換え可能な命令」が登録されていなかった場合は、ステップS35へ進む。ステップS35では、抽出されたレコードに実行不可能命令が登録されているか否かが調べられる。実行不可能命令とは、シミュレータ8が実行できない命令であって、先の実施例では、例えば、図8に示したI/O命令に相当する。そして、当該レコードに実行不可能命令が登録されていた場合は、ステップS36において、エミュレート処理(エミュレート処理のための処理ルーチンプログラム)を作成する。
【0076】なお、図8に示したように、実行不可能命令が割込命令に置き換えられる場合には、その割込命令も図13(a) に示した管理リストに登録される。そして、その割込命令のシリアル番号と、その割込命令に起因して実行される処理を記述した処理ルーチンプログラムを格納するアドレスとの対応関係が図13(b)に示す割込管理テーブルに設定される。
【0077】抽出されたレコードに一般的な命令が格納されていた場合(ステップS31、33、35において「No」と判断された場合)は、ステップS37において、初期メモリスペース30を更新する。この処理は、例えば、図6に示した手順に相当する。また、ステップS36においてエミュレート処理が作成された場合もステップS37が実行される。この処理は、例えば、図8において、割込属性命令およびデータBを初期メモリスペース30に書き込む手順に相当する。
【0078】実行履歴情報2から抽出したレコードがレジスタレコードであった場合は、ステップS41へ進む。ステップS41では、抽出されたレジスタレコードの内容に従ってレジスタ(図5に示したレジスタ群33)を更新する。
【0079】実行履歴情報2から抽出したレコードが割込レコードであった場合は、ステップS42へ進む。ステップS42では、必要に応じて割込命令を生成し、それを図13(a) に示す管理リストに登録する。例えば、図10〜図11に示した例では、命令Cが割込属性命令に置き換えられているので、その割込属性命令が管理リストに登録される。この場合、対応する情報が図13(b)に示す割込管理テーブルに設定される。
【0080】実行履歴情報2から抽出したレコードがメモリデータレコードであった場合には、ステップS37において、対応するデータを初期メモリスペース30に書き込む。
【0081】実行履歴情報2から抽出したレコードがテーブル参照レコードであった場合には、ステップS37において、更新後のテーブルの内容をメモリスペース30に書き込む。なお、ここでは、論理アドレスを実アドレスに変換するアドレス変換テーブルを想定する。また、アドレス変換テーブルについては、後で別途説明をする。
【0082】実行履歴情報2から抽出したレコードがキー情報レコードであった場合は、ステップS43において、対応するキー情報を登録する。なお、キー情報は、補正用メモリスペース32に書き込まれる。
【0083】実行履歴情報2を構成する全てのレコードについて上記ステップS21〜S43の処理が実行されると、ステップS51において、各割込命令から対応する処理ルーチンを呼び出すために必要は情報が設定される。このとき、図13(b) に示した割込管理テーブルが参照され、置換え処理により生成された割込命令については、補正用メモリスペース32から対応する処理ルーチンを呼び出すための情報(命令を含む)が設定される。
【0084】このように、本実施形態のベンチマークプログラムは、基本メモリスペース31および補正用メモリスペース32から構成される初期メモリスペース30に格納されている。そして、オリジナルプログラム実行マシン1により実行された命令は、基本メモリスペース31に書き込まれる。このとき、各命令は、オリジナルプログラム実行マシン1のメモリ12に格納されていたときと同じアドレスに書き込まれる。また、オリジナルプログラム実行マシン1においてメモリ更新またはメモリ参照が発生した場合は、対応するメモリデータが基本メモリスペース31に書き込まれる。このとき、メモリデータは、オリジナルプログラム実行マシン1のメモリ12に格納されていたときと同じアドレスに書き込まれる。
【0085】シミュレータ8において実施できない動作については、補正用メモリスペース32を利用して同等の動作が提供される。例えば、オリジナルプログラム実行マシン1においてI/O命令が実行された場合は、そのI/O命令の代わりに割込命令が基本メモリスペース31に書き込まれると共に、上記I/O命令に起因する動作を実現するための情報(補正データ)が補正用メモリスペース32に書き込まれる。そして、上記割込命令から補正用メモリスペース32に格納された補正データが呼び出されるように必要な情報が設定される。また、オリジナルプログラム実行マシン1において非同期割込が発生した場合は、その割込が発生したタイミングの近傍で実行されるべき所定の命令が割込命令に置き換えられる。そして、同様の方法で補正用メモリスペース32に格納された補正データが呼び出されるように必要な情報が設定される。
【0086】したがって、シミュレータ8に上記ベンチマークプログラムが与えられると、オリジナルプログラム実行マシン1においてアプリケーションプログラムが実行されたときと同じ命令シーケンスが実行されてゆく。このとき、オリジナルプログラム実行マシン1において実行された処理のうち、シミュレータ8が実行できない処理については、そのシミュレータ8が実行できる形式に書き換えられている。したがって、シミュレータ8は、オリジナルプログラム実行マシン1と同等に機能を備えていなくても、オリジナルプログラム実行マシン1において実現された動作を忠実に再現できる。この結果、シミュレータ8を用いて信頼性の高い評価を行うことができる。
【0087】次に、アドレス変換テーブルについて説明する。アドレス変換テーブルは、CPUが認識している論理アドレスを実アドレスに変換する際に参照されるテーブルであり、オリジナルプログラム実行マシン1においてはメモリ12内の所定の領域に格納されている。ただし、論理アドレスと実アドレスとの対応関係は、通常、命令シーケンスが実行されていく際に、時々刻々と変化していく。したがって、ベンチマークプログラムにおいても、論理アドレスと実アドレスとの対応関係の変化が記述されている必要がある。
【0088】このため、オリジナルプログラム実行マシン1においてアプリケーションプログラムが実行されている期間、トレーサ15は、アドレス変換テーブルが参照されるごとに1セットの変換前アドレスおよび変換後アドレスを含むテーブル参照レコードを順次作成していく。そして、解析ツール3は、作成されたテーブル参照レコードに基づいて、オリジナルプログラム実行マシン1において実際に参照されたアドレス変換テーブルを初期メモリスペース30上に生成する。ここで、オリジナルプログラム実行マシン1に設けられているアドレス変換テーブルにおいて、命令の実行に際して実際に参照されるのは、その一部のみである。すなわち、初期メモリスペース30に再現されるアドレス変換テーブルは、その一部のみに有効な情報が格納されることになる。したがって、初期メモリスペース30に再現されるアドレス変換テーブルは、圧縮することができる。以下、図14を参照しながらアドレス変換テーブルの圧縮について説明する。
【0089】ここでは、図14(a) および図14(b) に示すように、テーブルAが論理アドレス空間の所定の領域を実アドレス空間の1000〜2000番地に変換し、テーブルBが論理アドレス空間の他の所定の領域を実アドレス空間の3000〜4000番地に変換するものとする。また、テーブルAおよびテーブルBは、図14(b)に示すように、それぞれ斜線で示すエリアのみがオリジナルプログラム実行マシン1において実際に参照されたものとする。この場合、テーブルAおよびテーブルBが初期メモリスペース30に再現されたとき、斜線で示すエリアのみに有効な変換情報が格納されることになる。さらに、図14(b)に示すように、テーブルAおよびテーブルBが管理する実アドレス空間が同一であったと仮定したときに、それら2つのテーブルにおいて有効な変換情報が格納されている実アドレスが重複していないものとする。
【0090】この場合、図14(b) に示すように、初期メモリスペース30において、テーブルAおよびテーブルBを互いにマージ(統合)することができる。そして、この結果、上記2つのテーブルにより管理されていた実アドレス空間も互いにマージすることができる。例えば、テーブルAおよびテーブルBがマージされる前に1000〜2000番地および3000〜4000番地に格納されていたデータは、図15(c)に示すように、1000〜2000番地のみに格納される。これにより、初期メモリスペース30を小さくできる。
【0091】図15は、ベンチマークプログラム7を作成および検証するシステムの構成図である。ここで、オリジナルプログラム実行マシン1、実行履歴情報2、解析ツール3、基本データ4、補正データ5、ベンチマークプログラム7は、それぞれ図1おいて同一の符号が付されているユニットに相当する。
【0092】図15において、モニタソース51には、補正データ5を加工するためのプログラム等が格納されている。これらのプログラムは、例えば、高水準言語で記述されている。モニタソース51の中に格納されているプログラムの1つを図16に示す。
【0093】図16は、シミュレータ8においてベンチマークプログラムが実行されるときに、各割込命令に対応する処理を決定する手順を示すフローチャートである。ステップS61では、まず、割込み前処理が実行される。この処理では、例えば、レジスタのバックアップ等が行われる。続いて、ステップS62では、発生した割込みについて補正が必要か否かを調べる。そして、補正が必要であれば、ステップS63において、制御変数を検索キーとして図13(b) に示す割込管理テーブルをサーチする。そして、その制御変数と一致するシリアル番号を持ったエントリから対応するアドレスを抽出し、そのアドレスに格納されている処理ルーチンプログラムを実行する。ステップS64では、制御変数に「1」が加えられる。ステップS65では、割込み後処理が実行される。これにより、処理が、割込み元あるいは制御を渡す命令に戻る。
【0094】オブジェクト生成部52は、補正データ5およびモニタソース51をコンパイルするコンパイラ、およびリンカから構成される。なお、オブジェクト生成部52の出力は、初期メモリスペース30の補正用メモリスペース32に格納すべきデータ列である。アドレス解決部53は、基本メモリスペース31に格納されているデータと、補正用メモリスペース32に格納すべきデータとの連続性が確保されるようにアドレスを解決する。そして、解析ツール3により生成された基本データ4およびアドレス解決部53によりアドレス解決されたデータとを統合することにより、ベンチマークプログラム7が得られる。
【0095】なお、モニタソース51、オブジェクト生成部52、およびアドレス解決部53は、図1に示した補正ツール6に対応する。作成されたベンチマークプログラム7は、アーキテクチャシミュレータ61により検証される。このとき、動的解析ツール62は、実行履歴情報2およびアーキテクチャシミュレータ61によるシミュレーション結果に基づいて、トレーサ15または解析ツール3の不具合等をチェックする。そして、そのチェック結果は、必要に応じてトレーサ15および解析ツール3にフィードバックされる。
【0096】ところで、上述の実施例は、実行履歴情報2が、オリジナルプログラム実行マシン1の動作に係わるすべての情報を含んでいることを前提としている。すなわち、上述の実施例では、トレーサ15が、アプリケーションプログラムの実行と並列に且つ継続的に動作している。
【0097】しかし、アプリケーションによってはトレーサ15の負荷が重くなることがある。この場合、トレーサ15を継続的に動作させると、アプリケーションプログラムの実行に悪影響を及ぼすおそれがある。このため、オリジナルプログラム実行マシン1は、トレーサ15を断続的に動作させることができる。
【0098】図17は、トレーサ15を断続的に動作させた場合の処理を説明するための図である。ここでは、トレーサ15が動作している期間と停止している期間とから構成されるサイクルが繰り返されるものとする。
【0099】トレーサ15は、動作期間中は実行履歴情報を出力するが、停止時にはそれを出力しない。このため、オリジナルプログラム実行マシン1の動作を忠実に再現するためのベンチマークプログラムを作成するためには、解析ツール3は、トレーサ15が停止している期間のオリジナルプログラム実行マシン1の動作を推定する必要がある。例えば、図17のサイクルnにおいては、時刻Ta 〜Tb の実行履歴情報は出力されるが、時刻Tb 〜Tc の実行履歴情報は出力されない。この場合、解析ツール3は、時刻Tb 〜Tc におけるオリジナルプログラム実行マシン1の実行履歴を推定する必要がある。
【0100】解析ツール3は、以下のようにして、時刻Tb 〜Tc におけるオリジナルプログラム実行マシン1の動作を推定する。ただし、オリジナルプログラム実行マシン1の動作を完全に求めることは困難なので、ここでは、時刻Tb〜Tc におけるメモリ12の更新内容を推定するものとする。時刻Tb 〜Tc におけるメモリ12の更新内容は、時刻Tb における動的メモリスペースの内容と、時刻Tc以降の実行履歴情報に基づいて作成されたメモリスペースの内容との差分により表される。なお、動的メモリスペースは、メモリデータレコードの内容を出願順にすべて反映させたメモリ空間であり、基本的に、初期メモリスペース30と異なる空間に作成される。また、時刻Tc以降の実行履歴情報に基づいて作成されるメモリスペースも、基本的に、初期メモリスペース30と異なる空間に作成される。
【0101】解析ツール3は、時刻Ta 〜Tb の実行履歴情報に基づいて初期メモリスペース30に対応するデータを書き込んだ後、時刻Tb〜Tc におけるメモリ12の更新内容を初期メモリスペース30に書き込む。以降、解析ツール3は、後続のサイクルについても同様の処理を繰り返す。これにより、トレーサ15が断続的に動作する場合であっても、オリジナルプログラム実行マシン1の動作を忠実に再現するためのベンチマークプログラムが作成される。
【0102】このように、本実施形態のベンチマークプログラム7は、オリジナルプログラム実行マシン1においてオリジナルプログラムが実行されたときの命令シーケンスを再現するロードモジュールである。このとき、このベンチマークプログラム7は、上記オリジナルプログラムの一部のみが実行されたときの命令シーケンスを表すロードモジュールであってもよい。
【0103】なお、ベンチマークプログラム(ロードモジュール)7を作成する機能は、コンピュータを用いて上述のシーケンスを記述したプログラムを実行することにより実現される。そのプログラムを実行するコンピュータ100の構成を図18に示す。
【0104】CPU101は、上述のシーケンスに示した処理を記述したプログラムを記憶装置102からメモリ103にロードして実行する。記憶装置102は、大容量記憶デバイスであり、上記プログラムを格納する。一方、メモリ103は、例えば半導体メモリであり、CPU101の作業領域として使用される。なお、初期メモリスペース30は、メモリ103を利用して実現することができる。
【0105】記録媒体ドライバ104は、CPU101の指示に従って可搬性記録媒体105にアクセスする。可搬性記録媒体105は、例えば、半導体デバイス(PCカード等)、磁気的作用により情報が入出力される媒体(フロッピー(登録商標)ディスク、磁気テープなど)、光学的作用により情報が入出力される媒体(光ディスクなど)を含む。通信制御装置106は、CPU101の指示に従って網との間でデータを送受信する。
【0106】ここで、ベンチマークプログラム7は、オリジナルプログラム実行マシン1から実行履歴情報2を抽出するトレーサ15、および実行履歴情報2を解析する解析ツール3(ここでは、補正ツール6と含むものとする)により作成される。そして、トレーサ15は、オリジナルプログラム実行マシン1において図3のフローチャートを実行することにより実現される。一方、解析ツール3は、図18に示すコンピュータ100において図12のフローチャート(図6〜図11に示したシーケンスを含む)を実行することにより実現される。ただし、解析ツール3は、必ずしもオリジナルプログラム実行マシン1と異なるコンピュータにより実現される必要はなく、オリジナルプログラム実行マシン1により実現されてもよい。
【0107】図19は、ベンチマークプログラムを作成するためのプログラムの提供方法を説明する図である。ベンチマークプログラムを作成するためのプログラムは、例えば、以下の3つの方法の中の任意の方法により提供される。
【0108】(a) コンピュータにインストールされて提供される。この場合、プログラム等は、例えば、出荷前にプレインストールされる。
(b) 可搬性記録媒体に格納されて提供される。この場合、可搬性記録媒体105に格納されているプログラム等は、基本的に、記録媒体ドライバ104を介して記憶装置102にインストールされる。
【0109】(c) 網上のサーバから提供される。この場合、基本的には、コンピュータ100がサーバに格納されているプログラム等をダウンロードすることによってそのプログラム等を取得する。
【0110】なお、作成されたベンチマークプログラムは、CD−ROM等の可搬性記録媒体に格納してユーザに提供してもよいし、ネットワークを介してユーザ端末へ送るようにしてもよい。
【0111】(付記1)情報処理装置を評価するためのテストプログラムを作成する方法であって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行される命令および上記メモリへのアクセス内容を検出し、検出された情報を実行履歴情報として時系列に格納し、上記実行履歴情報に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成することを特徴とするテストプログラム作成方法。
【0112】(付記2)情報処理装置を評価するためのテストプログラムを作成する方法であって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出し、検出された情報を実行履歴情報として時系列に格納し、上記実行履歴情報を時系列に解析し、予め用意されているメモリスペースに、上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成することを特徴とするテストプログラム作成方法。
【0113】(付記3)付記2に記載のテストプログラム作成方法であって、上記メモリスペースは、上記コンピュータが備えるメモリと実質的に同じアドレス空間を有する。
【0114】(付記4)付記2に記載のテストプログラム作成方法であって、当該テストプログラムが与えられる装置が実行できない命令である第1の命令が上記コンピュータにより実行された場合は、上記第1の命令に起因する上記コンピュータの動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、上記第1の命令の代わりに上記処理ルーチンプログラムを呼び出す命令を上記メモリスペースに書き込む。
【0115】(付記5)付記4に記載のテストプログラム作成方法であって、上記第1の命令は、I/O命令である。
(付記6)付記2に記載のテストプログラム作成方法であって、上記コンピュータにより実行されたときと当該テストプログラムが与えられる装置により実行されたときとで異なる動作を引き起こす可能性のある命令である第2の命令が上記コンピュータにより実行された場合に、上記コンピュータにおいて上記第2の命令が実行されたときに上記プロセッサが参照した条件を上記メモリスペースに書き込み、上記第2の命令の代わりに上記条件を呼び出す命令を上記メモリスペースに書き込む。
【0116】(付記7)付記2に記載のテストプログラム作成方法であって、当該テストプログラムが与えられる装置が実施できない動作である第1の動作が上記コンピュータにより実施された場合に、上記コンピュータにおいて上記第1の動作が実施されたタイミングの近傍で実行された命令である第3の命令を命令シーケンスを切り替える命令に置き換えて上記メモリスペースに書き込み、上記第1の動作を代替する処理ルーチンプログラムを作成して上記メモリスペースに書き込み、上記命令シーケンスを置き換える命令と上記処理ルーチンプログラムとをリンクする。
【0117】(付記8)付記7に記載のテストプログラム作成方法であって、上記第1の動作は、非同期割込である。
(付記9)付記7に記載のテストプログラム作成方法であって、上記処理ルーチンプログラムは、上記第3の命令のエミュレーションを含む。
【0118】(付記10)付記2に記載のテストプログラム作成方法であって、上記コンピュータにおいて複数のアドレス変換テーブルを用いて論理アドレスが実アドレスに変換されている場合に、上記複数のアドレス変換テーブルが参照されたときにその参照内容を表す参照情報を時系列に格納し、格納された参照情報に基づいて、上記複数のアドレス変換テーブルに対応する複数のテーブルを作成し、それらのテーブルをマージした結果を上記メモリスペースに書き込む。
【0119】(付記11)付記2に記載のプログラム作成方法であって、上記命令コード、命令情報、バイナリデータ、アクセス情報が検出されない期間における上記メモリの更新内容を推定し、推定された更新内容を上記メモリスペースに書き込む。
【0120】(付記12)情報処理装置を評価するためのテストプログラムを作成するシステムであって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行される命令および上記メモリへのアクセス内容を検出する検出手段と、検出された情報を実行履歴情報として時系列に格納する格納手段と、上記実行履歴情報に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段とを有することを特徴とするテストプログラム作成システム。
【0121】(付記13)情報処理装置を評価するためのテストプログラムを作成するシステムであって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出する検出手段と、検出された情報を実行履歴情報として時系列に格納する格納手段と、上記実行履歴情報を時系列に解析し、予め用意されているメモリスペースに、上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段とを有することを特徴とするテストプログラム作成システム。
【0122】(付記14)情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、プロセッサおよびメモリを備える他のコンピュータを用いてオリジナルプログラムが実行されているときに検出された上記プロセッサにより実行される命令および上記メモリへのアクセス内容に基づいて、上記他のコンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段、として機能させるためのテストプログラム作成プログラム。
【0123】(付記15)情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに検出された上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を解析する解析手段と、上記解析手段による解析結果に基づいて、予め用意されているメモリスペースに上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段、として機能させるためのテストプログラム作成プログラム。
【0124】(付記16)情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、当該コンピュータを用いてオリジナルプログラムが実行されているときに、当該コンピュータのプロセッサにより実行される命令および当該コンピュータのメモリへのアクセス内容を検出する検出手段と、上記検出手段により検出された情報に基づいて当該コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段、として機能させるためのテストプログラム作成プログラム。
【0125】(付記17)情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、当該コンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出する検出手段と、上記検出手段により検出された情報を時系列に基づいて、予め用意されているメモリスペースに上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段、として機能させるためのテストプログラム作成プログラム。
【0126】(付記18)情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、当該コンピュータを用いてオリジナルプログラムが実行されているときに、当該コンピュータのプロセッサにより実行される命令および当該コンピュータのメモリへのアクセス内容を検出する検出手段と、上記検出手段により検出された情報に基づいて当該コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のプログラムを作成する作成手段、として機能させるためのテストプログラム作成プログラムを記録したコンピュータ読取り可能な記録媒体。
【0127】(付記19)情報処理装置を評価するためのテストプログラムを作成するために、コンピュータを、当該コンピュータを用いてオリジナルプログラムが実行されているときに、上記プロセッサにより実行された命令に対応する命令コード、その命令に係わる命令情報、上記メモリに書き込まれる又はそのメモリから読み出されるバイナリデータ、および上記メモリへのアクセス内容を表すアクセス情報を検出する検出手段と、上記検出手段により検出された情報を時系列に基づいて、予め用意されているメモリスペースに上記命令情報に基づいて上記命令コードを書き込むと共に上記アクセス情報に基づいて上記バイナリデータを書き込むことにより、ロードモジュール形式のプログラムを作成する作成手段、として機能させるためのテストプログラム作成プログラムを記録したコンピュータ読取り可能な記録媒体。
【0128】(付記20)情報処理装置を評価するためのテストプログラムであって、プロセッサおよびメモリを備えるコンピュータを用いてオリジナルプログラムが実行されているときに検出された上記プロセッサにより実行される命令および上記メモリへのアクセス内容に基づいて上記コンピュータにより実行された命令実行シーケンスを再現するロードモジュール形式のテストプログラム。
【0129】
【発明の効果】本発明によれば、情報処理装置が完成する前にその性能を正確に評価できる。このため、情報処理装置の開発期間を短縮できる。また、目標特性に近づけるためのデザインの変更を効率的に行うことができる。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013