図面 (/)

技術 プログラム実行解析方法、情報処理装置及びプログラム実行解析プログラム

出願人 富士通株式会社
発明者 山本昌生
出願日 2015年2月17日 (5年0ヶ月経過) 出願番号 2015-028209
公開日 2016年8月22日 (3年6ヶ月経過) 公開番号 2016-151842
状態 特許登録済
技術分野 先行制御 デバッグ/監視
主要キーワード サンプル記憶 データ受け付け 基本ブロック毎 比率データ キャッシュミス数 サイクルカウンタ サンプリング期間中 性能モニタ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年8月22日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

演算装置における、ある命令種に属する命令の実行回数を低い負荷計測する。

解決手段

第1情報処理装置201の準備部235は、取得部231が第1情報処理装置201から取得したプログラムから区切られた複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を算出する。サンプリングドライバ215は、プログラムを実行している演算装置211から実行アドレス実行命令数とを採取する。分析部245は、受付部241が受け付けた実行アドレスと実行命令数とに基づいて、複数のブロックの各々について、当該ブロックに含まれる命令が実行された第1実行回数を算出し、当該ブロックにおける第1実行回数に、当該ブロックにおける上記比率を乗じて、上記命令種に属する命令が実行された第2実行回数を算出し、複数のブロックの各々について算出した第2実行回数の合計を算出する。

概要

背景

CPU(Central Processing Unit)が備える性能モニタリングカウンタを用いれば、性能イベント計数することができる。例えば、性能イベントとして命令の実行をカウントすれば、CPUにおいて実行された命令の総数が得られる。実行された命令の総数は、CPUの性能を示す指標として役立つ。

また、トレースシミュレーションによって、CPUの性能を実測する方法もある。しかし、これらの実測は、計測対象プログラムを動作させているCPUに更なる負荷掛ける場合がある。

概要

演算装置における、ある命令種に属する命令の実行回数を低い負荷で計測する。第1情報処理装置201の準備部235は、取得部231が第1情報処理装置201から取得したプログラムから区切られた複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を算出する。サンプリングドライバ215は、プログラムを実行している演算装置211から実行アドレス実行命令数とを採取する。分析部245は、受付部241が受け付けた実行アドレスと実行命令数とに基づいて、複数のブロックの各々について、当該ブロックに含まれる命令が実行された第1実行回数を算出し、当該ブロックにおける第1実行回数に、当該ブロックにおける上記比率を乗じて、上記命令種に属する命令が実行された第2実行回数を算出し、複数のブロックの各々について算出した第2実行回数の合計を算出する。

目的

本発明の目的は、一側面では、演算装置における、ある命令種に属する命令の実行回数を低い負荷で計測することである

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

プログラムから区切られた複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を算出し、前記プログラムを実行している演算装置から実行アドレス実行命令数とを採取し、前記実行アドレスと前記実行命令数とに基づいて、前記複数のブロックの各々について、当該ブロックに含まれる命令が実行された第1実行回数を算出し、前記複数のブロックの各々について、当該ブロックにおける前記第1実行回数に、当該ブロックにおける前記比率を乗じて、前記命令種に属する前記命令が実行された第2実行回数を算出し、前記複数のブロックの各々について算出した前記第2実行回数の合計を算出する処理を含み、コンピュータにより実行されるプログラム実行解析方法

請求項2

前記複数のブロックは、複数の基本ブロックである請求項1記載のプログラム実行解析方法。

請求項3

プログラムから区切られた複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を算出する第1算出部と、前記プログラムを実行している演算装置から実行アドレスと実行命令数とを採取する採取部と、前記実行アドレスと前記実行命令数とに基づいて、前記複数のブロックの各々について、当該ブロックに含まれる命令が実行された第1実行回数を算出する第2算出部と、前記複数のブロックの各々について、当該ブロックにおける前記第1実行回数に、当該ブロックにおける前記比率を乗じて、前記命令種に属する前記命令が実行された第2実行回数を算出する第3算出部と、前記複数のブロックの各々について算出した前記第2実行回数の合計を算出する第4算出部とを有する情報処理装置

請求項4

プログラムから区切られた複数のブロックの各々について、当該プログラムを実行している演算装置から採取した実行アドレスと実行命令数とに基づいて、当該ブロックに含まれる命令が実行された第1実行回数を算出し、前記複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を、当該ブロックにおける前記第1実行回数に乗じて、当該命令種に属する当該命令が実行された第2実行回数を算出し、前記複数のブロックの各々について算出した前記第2実行回数の合計を算出する処理を、コンピュータに実行させるためのプログラム実行解析プログラム

技術分野

0001

本発明は、演算装置の性能を計測する技術に関する。

背景技術

0002

CPU(Central Processing Unit)が備える性能モニタリングカウンタを用いれば、性能イベント計数することができる。例えば、性能イベントとして命令の実行をカウントすれば、CPUにおいて実行された命令の総数が得られる。実行された命令の総数は、CPUの性能を示す指標として役立つ。

0003

また、トレースシミュレーションによって、CPUの性能を実測する方法もある。しかし、これらの実測は、計測対象プログラムを動作させているCPUに更なる負荷掛ける場合がある。

先行技術

0004

特開平10−254739号公報
特開平07−334395号公報

発明が解決しようとする課題

0005

本発明の目的は、一側面では、演算装置における、ある命令種に属する命令の実行回数を低い負荷で計測することである。

課題を解決するための手段

0006

一態様に係るプログラム実行解析方法は、(A)プログラムから区切られた複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を算出し、(B)上記プログラムを実行している演算装置から実行アドレス実行命令数とを採取し、(C)実行アドレスと実行命令数とに基づいて、複数のブロックの各々について、当該ブロックに含まれる命令が実行された第1実行回数を算出し、(D)複数のブロックの各々について、当該ブロックにおける第1実行回数に、当該ブロックにおける上記比率を乗じて、上記命令種に属する命令が実行された第2実行回数を算出し、(E)複数のブロックの各々について算出した第2実行回数の合計を算出する処理を含む。

発明の効果

0007

一側面としては、演算装置における、ある命令種に属する命令の実行回数を低い負荷で計測することができる。

図面の簡単な説明

0008

図1は、フェーズを示す図である。
図2は、第1情報処理装置及び第2情報処理装置のモジュール構成例を示す図である。
図3は、準備部のモジュール構成例を示す図である。
図4は、逆アセンブルコードの例を示す図である。
図5は、ブロックマップの例を示す図である。
図6は、パラメータ記憶部におけるパラメータの例を示す図である。
図7は、比率データの例を示す図である。
図8は、準備フェーズ処理フローの例を示す図である。
図9は、特定処理フローの例を示す図である。
図10は、第1算出処理フローの例を示す図である。
図11は、計測フェーズの処理フローの例を示す図である。
図12は、第1情報処理装置のモジュール構成例を示す図である。
図13は、サンプルデータの例を示す図である。
図14は、サンプリング処理(A)フローを示す図である。
図15は、分析部のモジュール構成例を示す図である。
図16は、第1データの例を示す図である。
図17は、第2データの例を示す図である。
図18は、結果データの例を示す図である。
図19は、分析フェーズの処理フローの例を示す図である。
図20は、第2算出処理フローの例を示す図である。
図21は、第3算出処理フローの例を示す図である。
図22は、第4算出処理フローの例を示す図である。
図23は、実施の形態2に係る第1情報処理装置のモジュール構成例を示す図である。
図24は、実施の形態3に係る第1情報処理装置のモジュール構成例を示す図である。
図25は、サンプリング処理(B)フローを示す図である。
図26は、実施の形態4に係る比率データの例を示す図である。
図27は、実施の形態4に係る第2データの例を示す図である。
図28は、実施の形態4に係る結果データの例を示す図である。
図29は、第3情報処理装置のモジュール構成例を示す図である。
図30は、コンピュータ機能ブロック図である。

実施例

0009

[実施の形態1]
本実施の形態では、実行プログラムを実行するCPUによる命令種毎の実行回数を算出する方法について説明する。

0010

図1に、本実施の形態におけるフェーズを示す。本実施の形態における処理は、3つのフェーズに分けられる。準備フェーズ(S101)では、分析フェーズのための準備を行う。計測フェーズ(S103)では、CPUに実行プログラムを実行させてサンプリングを行う。分析フェーズ(S105)では、サンプリングによって得られたサンプルの分析を行う。各フェーズの詳細については、以下で説明する。

0011

これら3つのフェーズは、連続しなくてもよい。つまり、準備フェーズ(S101)における処理と計測フェーズ(S103)における処理は、連続的に実行されなくてもよい。また、計測フェーズ(S103)における処理と分析フェーズ(S105)における処理は、連続的に実行されなくてもよい。

0012

図1は、準備フェーズ(S101)、計測フェーズ(S103)、分析フェーズ(S105)の順に処理を実行する例を示しているが、計測フェーズ(S103)、準備フェーズ(S101)、分析フェーズ(S105)の順に処理を実行するようにしてもよい。つまり、分析フェーズ(S105)における処理を実行する前に、準備フェーズ(S101)における処理及び計測フェーズ(S103)における処理が実行されていればよい。

0013

次に、本実施の形態に係る情報処理装置のモジュール構成について説明する。図2に、第1情報処理装置201及び第2情報処理装置203のモジュール構成例を示す。図2に示した例では、2つの情報処理装置を用いる。第1情報処理装置201は、計測フェーズ(S103)における処理を実行する。第1情報処理装置201は、例えば実行プログラムの動作環境に相当する。第2情報処理装置203は、準備フェーズ(S101)における処理及び分析フェーズ(S105)における処理を実行する。第2情報処理装置203は、例えば分析装置に相当する。

0014

このように、実行プログラムの動作環境に相当する第1情報処理装置201とは別に、分析装置に相当する第2情報処理装置203を設けるようにすれば、第1情報処理装置201の処理負荷を軽減することができる。

0015

また、第2情報処理装置203は、複数の第1情報処理装置201におけるサンプルデータを一括して分析するようにしてもよい。例えば、第1情報処理装置201は、LAN(Local Area Network)に接続されたサーバ装置であってもよい。更に、第2情報処理装置203は、LANに接続された管理装置であってもよい。

0016

また、第1情報処理装置201と第2情報処理装置203とは、LAN以外のネットワーク、例えばインターネットによって接続されていてもよい。第1情報処理装置201と第2情報処理装置203とをインターネットによって接続すれば、遠隔地に設けた第2情報処理装置203によって、第1情報処理装置201における動作状況を把握することができる。

0017

また、第1情報処理装置201が、第2情報処理装置203を兼ねるようにしてもよい。つまり、1つの情報処理装置が、準備フェーズ(S101)における処理、計測フェーズ(S103)における処理及び分析フェーズ(S105)における処理を実行するようにしてもよい。1つの情報処理装置による実施例は、実施の形態5において説明する。

0018

第1情報処理装置201は、CPU211、第1プログラム記憶部213、サンプリングドライバ215、サンプル格納部217及び出力プログラム219を有している。CPU211は、性能モニタリングを行う。第1プログラム記憶部213は、分析対象となる実行プログラムを記憶している。サンプリングドライバ215は、サンプリング処理を行う。サンプル格納部217は、採取したサンプルデータを格納する。出力プログラム219は、サンプルデータを出力する。

0019

第2情報処理装置203は、取得部231、第1プログラム記憶部233、準備部235、ブロックマップ記憶部237、比率記憶部239、受付部241、サンプル記憶部243、分析部245、結果記憶部247及び出力部249を有している。取得部231は、分析対象となる実行プログラムを取得する。第1プログラム記憶部233は、分析対象となる実行プログラムを記憶する。第2情報処理装置203における第1プログラム記憶部233は、第1情報処理装置201における第1プログラム記憶部213と同等である。準備部235は、準備フェーズ(S101)における処理を行う。ブロックマップ記憶部237は、実行プログラムにおける基本ブロックの範囲が設定されたブロックマップを記憶する。比率記憶部239は、基本ブロックにおける各命令種に属する命令の比率のデータ(以下、比率データという。)を記憶する。受付部241は、サンプルデータを受け付ける。サンプル記憶部243は、サンプルデータを記憶する。分析部245は、分析フェーズ(S105)における処理を行う。結果記憶部247は、分析の結果データを記憶する。出力部249は、結果データを出力する。

0020

上述した取得部231、準備部235、受付部241、分析部245及び出力部249は、ハードウエア資源(例えば、図30)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。

0021

上述した第1プログラム記憶部213、サンプル格納部217、第1プログラム記憶部233、ブロックマップ記憶部237、比率記憶部239、サンプル記憶部243及び結果記憶部247は、ハードウエア資源(例えば、図30)を用いて実現される。

0022

続いて、準備フェーズ(S101)について詳述する。図3に、準備部235のモジュール構成例を示す。準備部235は、逆アセンブラ301、第2プログラム記憶部303、特定部305、定義記憶部307、第1算出部309及びパラメータ記憶部311を有している。逆アセンブラ301は、実行プログラム、つまり機械語によるオブジェクトコードを、アセンブリ言語によるソースコードに変換する。変換されたアセンブリ言語によるソースコードを、以下では逆アセンブルコードという。逆アセンブルコードも、プログラムの一種である。

0023

第2プログラム記憶部303は、逆アセンブルコードを記憶する。特定部305は、特定処理を実行する。特定部305は、特定処理において、逆アセンブルコードを区切って複数の基本ブロックを特定する。定義記憶部307は、命令と当該命令が属する命令種とを対応付けて記憶している。第1算出部309は、第1算出処理を実行する。第1算出部309は、第1算出処理において、基本ブロック毎に、各命令種に属する命令が占める比率を算出する。パラメータ記憶部311は、各種のパラメータを記憶する。

0024

上述した逆アセンブラ301、特定部305及び第1算出部309は、ハードウエア資源(例えば、図30)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。

0025

上述した第2プログラム記憶部303、定義記憶部307及びパラメータ記憶部311、は、ハードウエア資源(例えば、図30)を用いて実現される。

0026

ここで、逆アセンブルコードについて説明する。図4に、逆アセンブルコードの例を示す。左側の列は、命令を指すアドレスを示している。中央の列は、命令を示している。右側の列は、オペランドを示している。

0027

枠401は、最初の基本ブロックを囲っている。基本ブロックの最終行には分岐命令(この例では、「jmp」)があるが、途中の行には分岐命令がない。従って、基本ブロックに含まれる命令は逐次実行される。つまり、基本ブロックに含まれる命令個々の実行回数は、基本ブロック自体の実行回数と等しくなる。二番目以降の基本ブロックについても同様である。そして、逆アセンブルコードは、複数の基本ブロックの連なりとして捉えられる。

0028

次に、ブロックマップについて説明する。図5に、ブロックマップの例を示す。この例におけるブロックマップは、テーブル形式である。但し、ブロックマップはテーブル形式以外の形式であってもよい。

0029

この例におけるブロックマップは、基本ブロックに対応するブロックレコードを有している。ブロックマップにおけるブロックレコードは、基本ブロック番号を設定するためのフィールドと、基本ブロックの範囲を設定するためのフィールドとを有している。基本ブロック番号は、基本ブロックを識別する。この例では、先頭から順番に基本ブロックに対して番号が付与される。基本ブロックの範囲は、開始アドレス終了アドレスとによって特定される。

0030

この例における第1ブロックレコードは、最初の基本ブロックがアドレス「0x0400」からアドレス「0x041F」までの範囲を占めていることを示している。上述したように、最初の基本ブロックは、図4において枠401で囲った基本ブロックである。

0031

同様に第2ブロックレコードは、2番目の基本ブロックがアドレス「0x0420」からアドレス「0x044F」までの範囲を占めていることを示している。

0032

同様に第3ブロックレコードは、3番目の基本ブロックがアドレス「0x0450」からアドレス「0x04FF」までの範囲を占めていることを示している。

0033

同様に第4ブロックレコードは、4番目の基本ブロックがアドレス「0x0500」からアドレス「0x057F」までの範囲を占めていることを示している。

0034

尚、この例における逆アセンブルコードは、全体としてアドレス「0x0400」からアドレス「0xFFFF」までを占めている。

0035

次に、パラメータ記憶部311におけるパラメータについて説明する。図6に、パラメータ記憶部311におけるパラメータの例を示す。図6に示したパラメータは、基本ブロックに含まれる命令を命令種に分類し、命令種毎の命令数を計数するために用いられる。更に、基本ブロックに含まれる命令の総数も計数する。この例は、図4の枠401で囲った最初の基本ブロックに含まれる命令を分類した場合のパラメータの値を示している。

0036

図6に示した例は、最初の基本ブロックには、命令種「整数演算」に属する命令が2個有ることを示している。図6に示した例は、命令種「浮動小数点演算」に属する命令が無いことも示している。図6に示した例は、命令種「分岐命令」に属する命令が1個有ることも示している。図6に示した例は、命令種「ロード又はストア」に属する命令が5個有ることも示している。そして、図6に示した例は、最初の基本ブロックには、命令が全部で8個有ることも示している。

0037

次に、比率記憶部239に記憶される比率データについて説明する。図7に、比率データの例を示す。この例における比率データは、テーブル形式である。但し、比率データは、テーブル形式以外の形式であってもよい。

0038

この例における比率データは、基本ブロックに対応するブロックレコードを有している。比率データにおけるブロックレコードは、基本ブロック番号を設定するためのフィールドと、基本ブロックにおける各命令種に属する命令の比率を設定するためのフィールドとを有している。

0039

この例における第1ブロックレコードは、最初の基本ブロックにおいて命令種「整数演算」に属する命令の比率が「25.0」パーセントであることを示している。同じく第1ブロックレコードは、最初の基本ブロックにおいて命令種「浮動小数点演算」に属する命令の比率が「0.0」パーセントであることを示している。同じく第1ブロックレコードは、最初の基本ブロックにおいて命令種「分岐命令」に属する命令の比率が「12.5」パーセントであることを示している。同じく第1ブロックレコードは、最初の基本ブロックにおいて命令種「ロード又はストア」に属する命令の比率が「62.5」パーセントであることを示している。

0040

この例における第2ブロックレコードは、2番目の基本ブロックにおいて命令種「整数演算」に属する命令の比率が「25.0」パーセントであることを示している。同じく第2ブロックレコードは、2番目の基本ブロックにおいて命令種「浮動小数点演算」に属する命令の比率が「60.0」パーセントであることを示している。同じく第2ブロックレコードは、2番目の基本ブロックにおいて命令種「分岐命令」に属する命令の比率が「5.0」パーセントであることを示している。同じく第2ブロックレコードは、2番目の基本ブロックにおいて命令種「ロード又はストア」に属する命令の比率が「10.0」パーセントであることを示している。

0041

この例における第3ブロックレコードは、3番目の基本ブロックにおいて命令種「整数演算」に属する命令の比率が「3.3」パーセントであることを示している。同じく第3ブロックレコードは、3番目の基本ブロックにおいて命令種「浮動小数点演算」に属する命令の比率が「66.7」パーセントであることを示している。同じく第3ブロックレコードは、3番目の基本ブロックにおいて命令種「分岐命令」に属する命令の比率が「3.3」パーセントであることを示している。同じく第3ブロックレコードは、3番目の基本ブロックにおいて命令種「ロード又はストア」に属する命令の比率が「26.7」パーセントであることを示している。尚、この例では、小数第2位以下を省略している。

0042

この例における第4ブロックレコードは、4番目の基本ブロックにおいて命令種「整数演算」に属する命令の比率が「20.0」パーセントであることを示している。同じく第4ブロックレコードは、4番目の基本ブロックにおいて命令種「浮動小数点演算」に属する命令の比率が「0.0」パーセントであることを示している。同じく第4ブロックレコードは、4番目の基本ブロックにおいて命令種「分岐命令」に属する命令の比率が「20.0」パーセントであることを示している。同じく第4ブロックレコードは、4番目の基本ブロックにおいて命令種「ロード又はストア」に属する命令の比率が「60.0」パーセントであることを示している。

0043

続いて、準備フェーズ(S101)における処理について説明する。図8に、準備フェーズ(S101)の処理フローの例を示す。取得部231は、第1情報処理装置201の第1プログラム記憶部213から実行プログラムを取得する(S801)。そして、取得部231は、取得した実行プログラムを第1プログラム記憶部233に記憶する。実行プログラムは、機械語のプログラム、つまりオブジェクトコードである。実行プログラムは、オブジェクトプログラム、あるいはターゲットプログラムと呼ばれることもある。

0044

逆アセンブラ301は、第1プログラム記憶部233に記憶した実行プログラムに対する逆アセンブルを実行する(S803)。逆アセンブラ301は、逆アセンブルによって得られた逆アセンブルコード(例えば、図4)、つまりアセンブリ言語のソースコードを第2プログラム記憶部303に記憶する。

0045

特定部305は、特定処理を実行する(S805)。特定処理において、特定部305は、逆アセンブルコードを区切って複数の基本ブロックを特定する。具体的には、特定部305は、上述したブロックマップ(例えば、図5)を生成する。

0046

以下、特定処理について説明する。図9に、特定処理フローの例を示す。特定部305は、ブロックマップの第1ブロックレコードに、最初の基本ブロック番号(この例では、「1」)を設定する(S901)。特定部305は、最初の基本ブロックの開始アドレスを設定する(S903)。具体的には、特定部305は、第1ブロックレコードの開始アドレスに、逆アセンブルコードの先頭アドレス図4の例では、「0x0400」)を設定する。

0047

特定部305は、逆アセンブルコードにおける命令を順次特定する(S905)。特定部305は、特定された命令が分岐命令(例えば、「jmp」)に該当するか否かを判定する(S907)。特定された命令が分岐命令に該当しないと判定した場合には、基本ブロックの終わりに至っていないので、S905に示した処理に戻って、次の命令を特定する。

0048

一方、特定された命令が分岐命令に該当すると判定した場合には、基本ブロックの終わりに至ったので、特定部305は、S903において設定した開始アドレスあるいは後述するS913において設定した開始アドレスに対応する終了アドレスを設定する(S909)。終了アドレスは、例えばS905において特定した命令の次に位置する命令のアドレスから1を引くことによって求められる。図4の枠401で囲った基本ブロックの場合には、図5の第1ブロックレコードに示すように「0x041F」が終了アドレスである。

0049

特定部305は、次のブロックレコードに対する処理に移る。特定部305は、当該次のブロックレコードに次の基本ブロック番号を設定する(S911)。次の基本ブロック番号は、例えば現基本ブロック番号に1を加えることによって定められる。

0050

特定部305は、当該次のブロックレコードの開始アドレスに、S905において特定した命令の次に位置する命令のアドレスを設定する(S913)。図4の枠401で囲った基本ブロックの次に位置する基本ブロックの場合には、図5の第2ブロックレコードに示すように「0x0420」が開始アドレスである。

0051

特定部305は、未処理の命令があるか否かを判定する(S915)。未処理の命令があると判定した場合には、逆アセンブルコードの終わりに至っていないので、S905に示した処理に戻って、上述した処理を繰り返す。

0052

一方、未処理の命令がないと判定した場合には、逆アセンブルコードの終わりに至ったので、特定部305は、S913において設定した開始アドレスに対応する終了アドレスを設定する(S917)。このとき終了アドレスには、逆アセンブルコードの最終アドレスが設定される。そして、特定処理を終えると、図8に示したS807の処理に移る。

0053

図8の説明に戻る。第1算出部309は、第1算出処理を実行する(S807)。第1算出処理において、第1算出部309は、基本ブロック毎に、各命令種に属する命令が占める比率を算出する。具体的には、第1算出部309は、上述した比率データ(例えば、図7)を生成する。

0054

以下、第1算出処理について詳述する。図10に、第1算出処理フローの例を示す。第1算出部309は、基本ブロックを1つ特定する(S1001)。具体的には、第1算出部309は、ブロックマップ(例えば、図5)におけるブロックレコードを先頭から順次特定する。

0055

以下の処理では、基本ブロック内の命令をいずれかの命令種に分類する。第1算出部309は、基本ブロック内の命令を1つ特定する(S1003)。具体的には、第1算出部309は、S1001において特定したブロックレコードに設定されている開始アドレスに従って、逆アセンブルコードから順次命令を読む

0056

第1算出部309は、S1003において特定した命令が属する命令種を特定する(S1005)。この例では、第1算出部309は、定義記憶部307において当該命令に対応付けられている命令種を読む。例えば、図4の枠401で囲った基本ブロックの場合に、最初の命令「push」について命令種「ロード又はストア」が特定される。

0057

第1算出部309は、S1005において特定した命令種に属する命令の数に1を加える(S1007)。具体的には、第1算出部309は、パラメータ記憶部311に設けられている当該命令種のパラメータの値に1を加える。第1算出部309は、更に、パラメータ記憶部311に設けられている総数のパラメータの値に1を加える(S1008)。

0058

第1算出部309は、S1001において特定した基本ブロック内に未処理の命令があるか否かを判定する(S1009)。S1001において特定した基本ブロック内に未処理の命令があると判定した場合には、当該基本ブロックにおける命令の分類が終わっていないので、S1003に戻って、上述した処理を繰り返す。

0059

一方、S1001において特定した基本ブロック内に未処理の命令がないと判定した場合には、当該基本ブロックにおける命令の分類が終わったことになる。例えば、図4の枠401で囲った最初の基本ブロックにおける命令の分類が終わると、命令種のパラメータは、図6に示した状態になる。

0060

第1算出部309は、各命令種の命令数と命令の総数とに基づいて、当該命令種の比率を算出する(S1011)。具体的には、第1算出部309は、各命令種について、当該命令種の命令数(命令種のパラメータの値)を命令の総数(総数のパラメータの値)で除することによって、当該命令種の比率を求める。算出された各命令種の比率は、比率データにおけるブロックレコードに設定される。

0061

図4の枠401で囲った最初の基本ブロックの場合には、図7に示した比率データにおける第1ブロックレコードに示したように、命令種「整数演算」の比率は、2を8で除した値「25.0」(パーセント)である。同じく、命令種「浮動小数点演算」の比率は、0を8で除した値「0.0」(パーセント)である。同じく、命令種「分岐命令」の比率は、1を8で除した値「12.5」(パーセント)である。同じく、命令種「ロード又はストア」の比率は、5を8で除した値「62.5」(パーセント)である。

0062

第1算出部309は、未処理の基本ブロックがあるか否かを判定する(S1013)。未処理の基本ブロックがあると判定した場合には、S1001に示した処理に戻って、上述した処理を繰り返す。

0063

一方、未処理の基本ブロックがないと判定した場合には、残らず基本ブロックについて命令種の比率を算出したことになるので、第1算出処理を終える。第1算出処理を終えると、図8に示した準備フェーズ(S101)の処理も終える。以上で、準備フェーズ(S101)についての説明を終える。

0064

次に、計測フェーズ(S103)について説明する。以下では、制御プログラムによって自動的に処理やプログラムを起動し、その後停止する例について説明する。但し、処理やプログラムの起動及び停止をユーザが手動で指示するようにしてもよい。

0065

図11に、計測フェーズ(S103)の処理フローの例を示す。制御プログラムは、サンプリングドライバ215によるサンプリング処理を起動する(S1101)。第1情報処理装置201のブート処理において、サンプリングドライバ215によるサンプリング処理が起動される場合には、S1101の処理を省いてもよい。また、上述したように、手動によって、サンプリングドライバ215によるサンプリング処理を起動するようにしてもよい。サンプリング処理については、図14を用いて後述する。

0066

次に、制御プログラムは、第1プログラム記憶部213に格納されている実行プログラムを起動する(S1103)。メインメモリにロードされた実行プログラムが動作を開始すると、サンプリングドライバ215は、実行プログラムの動作に伴って採取したサンプルデータをサンプル格納部217に継続的に格納する。尚、実行プログラムは、プロセスとして動作する。また、実行プログラムに含まれる命令は、ブロックマップの通りに展開されているものとする。実行プログラムが既に動作している場合には、S1103の処理は省くようにしてもよい。

0067

制御プログラムは、サンプリング処理を終えるか否かを判定する(S1105)。サンプリング処理を終える条件は、任意である。例えば、実行プログラムが起動されてから所定時間が経過した時点で、サンプリング処理を終えるようにしてもよい。あるいは、実行プログラムが学術的な計算を行うプログラムであれば、所定の問題に対する計算を終えた時点で、サンプリング処理を終えるようにしてもよい。あるいは、実行プログラムが業務を支援するプログラムであれば、所定のトランザクション処理を終えた時点で、サンプリング処理を終えるようにしてもよい。

0068

サンプリング処理を終えると判定しない場合には、制御プログラムは、S1105の処理を繰り返し、そのままサンプリング処理を継続させる。

0069

一方、サンプリング処理を終えると判定した場合には、制御プログラムは、実行プログラムを停止する(S1107)。実行プログラムが自ら停止する場合には、S1107の処理は省いてもよい。また、例えば運用状態であれば、実行プログラムを停止しなくてもよい。

0070

制御プログラムは、サンプリングドライバ215によるサンプリング処理を停止する(S1109)。但し、サンプル格納部217におけるサンプルデータが破棄される恐れがなければ、サンプリング処理を停止しなくてもよい。

0071

出力プログラム219は、サンプル格納部217からサンプルデータを読み、出力する(S1111)。サンプルデータについては、図13を用いて後述する。出力プログラム219は、ネットワーク(例えば、LANあるいはインターネット)を介して第2情報処理装置203の受付部241に送信するようにしてもよい。出力プログラム219は、記録媒体にサンプルデータを書くようにしてもよい。また、出力プログラム219は、サンプル格納部217に格納されているサンプルデータを一旦退避させた後に、出力するようにしてもよい。サンプルデータは、分析フェーズ(S105)において用いられる。サンプルデータを出力すると、計測フェーズ(S103)の処理を終える。

0072

尚、後述する実施の形態のように、計測フェーズ(S103)と分析フェーズ(S105)とを同じ情報処理装置で実行する場合には、S1111は省くようにしてもよい。

0073

サンプリング処理について詳述する前に、第1情報処理装置201のモジュール構成の詳細及びサンプルデータについて説明する。図12に、第1情報処理装置201のモジュール構成例を示す。第1情報処理装置201のCPU211は、モニタ1201、プロセスIDレジスタ1207及びプログラムカウンタ1209を有している。モニタ1201は、性能モニタリングを実行する。つまり、モニタ1201は、設定された性能イベント(以下、イベントという。)を監視し、性能モニタリングカウンタを用いてイベントが発生した回数を計数する。この例では、サイクルのイベントと、実行命令のイベントとを計数する。図12におけるサイクルカウンタ1203は、サイクルのイベントを計数するための性能モニタリングカウンタを指している。図12における命令カウンタ1205は、実行命令のイベントを計数するための性能モニタリングカウンタを指している。プロセスIDレジスタ1207は、プロセスIDを記憶するためのレジスタである。プログラムカウンタ1209は、実行アドレスを記憶するためのレジスタである。尚、サイクルカウンタ1203による割り込みについては、後述する。

0074

第1情報処理装置201が有するメインメモリ1200には、サンプリングドライバ215、出力プログラム219、実行プログラム1221及び制御プログラム1223がロードされる。サンプリングドライバ215は、カーネルモード1231で動作する。出力プログラム219、実行プログラム1221及び制御プログラム1223は、ユーザモード1233で動作する。実行プログラム1221は、第1プログラム記憶部213から読み出される。制御プログラム1223は、計測フェーズ(S103)における処理を制御する。但し、計測フェーズ(S103)における処理をユーザの操作によって制御する場合には、制御プログラム1223を設けないようにしてもよい。

0075

メインメモリ1200には、更に、サンプル格納部217と退避領域1211が設けられる。退避領域1211は、実行プログラム1221の動作に関わるデータをCPU211から退避するために用いられる。第1プログラム記憶部213は、例えばハードディスクドライブを用いて実現される。

0076

続いて、サンプル格納部217に格納されるサンプルデータについて説明する。図13に、サンプルデータの例を示す。この例におけるサンプルデータは、テーブル形式である。但し、サンプルデータは、テーブル形式以外の形式であってもよい。この例におけるサンプルデータは、1回の採取に対応するサンプルレコードを有している。サンプルレコードは、CPU番号を設定するためのフィールドと、プロセスIDを設定するためのフィールドと、実行アドレスを設定するためのフィールドと、実行命令数を設定するためのフィールドとを有している。CPU番号は、モニタリングを行っているCPUを識別する。モニタリングを行うCPUが予め決まっている場合には、CPU番号は省略するようにしてもよい。プロセスIDは、サンプル採取時点において動作していたプロセスを識別する。実行アドレスは、サンプル採取時点においてCPUが実行していた命令を指している。実行命令数は、前回のサンプル採取時点から今回のサンプル採取時点までにCPUが実行していた命令の延べ数である。

0077

この例における第1サンプルレコードは、CPU番号「0」に相当するCPUにおけるモニタリングによって、最初のサンプル採取時点において、プロセスID「6612」で識別されるプロセスが動作していたことを示している。同じく、最初のサンプル採取時点において、実行アドレス「0x0405」が指す命令を実行していたことを示している。同じく、サンプリングの開始時点から最初のサンプル採取時点までに、延べ「312,007」個の命令が実行されたことを示している。

0078

この例における第2サンプルレコードは、第1サンプルレコードの場合と同様に、CPU番号「0」に相当するCPUにおけるモニタリングによって、2回目のサンプル採取時点において、プロセスID「6612」で識別されるプロセスが動作していたことを示している。同じく、2回目のサンプル採取時点において、実行アドレス「0x04C8」が指す命令を実行していたことを示している。同じく、最初のサンプル採取時点から2回目のサンプル採取時点までに、延べ「313,390」個の命令が実行されたことを示している。

0079

この例における第3サンプルレコードは、第1サンプルレコード及び第2サンプルレコードの場合と同様に、CPU番号「0」に相当するCPUにおけるモニタリングによって、3回目のサンプル採取時点において、プロセスID「6612」で識別されるプロセスが動作していたことを示している。同じく、3回目のサンプル採取時点において、実行アドレス「0x0C13」が指す命令を実行していたことを示している。同じく、2回目のサンプル採取時点から3回目のサンプル採取時点までに、延べ「307,356」個の命令が実行されたことを示している。

0080

本実施の形態では、図12に示した第1情報処理装置201のモジュール構成例を前提として、サンプリング処理(A)を実行する。図14に、サンプリング処理(A)フローを示す。サンプリングドライバ215は、モニタ1201にイベントを設定する(S1401)。この例では、サンプリングドライバ215は、サイクルのイベントと実行命令のイベントとを設定する。このように、モニタ1201における一方の性能モニタリングカウンタにおいて、サイクル数がカウントされる。図12に示したサイクルカウンタ1203は、この性能モニタリングカウンタに相当する。また、モニタ1201における他方の性能モニタリングカウンタにおいて、実行命令数がカウントされる。図12に示した命令カウンタ1205は、この性能モニタリングカウンタに相当する。

0081

本実施の形態では、サイクル数ベースのサンプリング、つまりタイムベースのサンプリングを行う。サイクル数ベースのサンプリングでは、サイクル数の増加が所定値に達した段階でサンプルが採取される。

0082

サンプリングドライバ215は、サイクルカウンタ1203と命令カウンタ1205とを初期化する(S1403)。サイクルカウンタ1203は、サンプリングドライバ215がサンプルを採取するタイミングを計るために用いられる。そのため、サイクル数を所定数だけカウントアップすると、サイクルカウンタ1203がオーバーフローするように、サイクルカウンタ1203の初期値が設定される。サイクルカウンタ1203がオーバーフローすると、サンプリングドライバ215に対して割り込みが発生する。この割り込みを契機として、サンプルが採取される。命令カウンタ1205の初期値は、0である。このように命令カウンタ1205の初期値を0にすれば、次のサンプル採取までの間に実行した命令数がサンプル格納部217に記録される。

0083

サンプリングドライバ215は、モニタ1201を起動する(S1405)。既に、モニタ1201が起動されている場合には、S1405の処理を省くようにしてもよい。

0084

サンプリングドライバ215は、サイクルカウンタ1203のオーバーフローによる割り込みの発生を待つ(S1407)。サイクルカウンタ1203のオーバーフローによる割り込みが発生すると、実行プログラム1221の動作を中断するために、CPU211は実行プログラム1221の動作に関わるデータを退避領域1211に退避する。この例では、プログラムカウンタ1209の値とプロセスIDレジスタ1207の値が、メインメモリ1200に設けられた退避領域1211に退避される。プログラムカウンタ1209の値は、割り込みが発生した時点で実行していた命令を指す実行アドレスである。プロセスIDレジスタ1207の値は、割り込みが発生した時点で実行していたプロセスのIDである。

0085

その後、サンプリングドライバ215の動作に切り替わる。サンプリングドライバ215は、命令カウンタ1205から実行命令数を取得する(S1409)。実行命令数は、前回サンプルを採取した時点から今回サンプルを採取する時点までの期間において、CPU211が実行した命令の総数である。

0086

サンプリングドライバ215は、退避領域1211からプロセスIDと実行アドレスとを取得する(S1411)。図13に示したプロセスID「6612」は、実行プログラム1221のプロセスの識別子である。

0087

サンプリングドライバ215は、プロセスIDと実行アドレスと実行命令数とを、サンプルデータの新たなサンプルレコードに格納する(S1413)。図13に示したCPU番号「0」は、CPU211を指している。

0088

サンプリングドライバ215は、S1403の場合と同様に、サイクルカウンタ1203と命令カウンタ1205とを初期化する(S1415)。この段階で、CPU211は、実行プログラム1221の動作に関わるデータを退避領域1211から復帰させ、実行プログラム1221の動作に戻る。

0089

サンプリングドライバ215は、S1407に示した処理へ戻って次の割り込みの発生を待つ。このようにして、サンプリング処理が停止するまで、S1407乃至S1415の処理が繰り返される。以上で、計測フェーズ(S103)についての説明を終える。

0090

次に、分析フェーズ(S105)について説明する。図15に、分析部245のモジュール構成例を示す。分析部245は、第2算出部1501、第1データ記憶部1503、第3算出部1505、第2データ記憶部1507及び第4算出部1509を有する。

0091

第2算出部1501は、第2算出処理を実行する。第2算出部1501は、第2算出処理において、サンプルデータとブロックマップとに基づいて、サンプリング期間各基本ブロックに含まれる命令が実行された回数(以下、第1実行回数という。)を算出する。第1データ記憶部1503は、第1実行回数のデータ(以下、第1データという。)を記憶する。第1データについては、図16を用いて後述する。

0092

第3算出部1505は、第3算出処理を実行する。第3算出部1505は、第3算出処理において、基本ブロックにおける第1実行回数に、当該基本ブロックにおいて各命令種に属する命令が占める比率を乗じて、当該基本ブロックにおいて各命令種に属する命令が実行された回数(以下、第2実行回数という。)を算出する。第2データ記憶部1507は、第2実行回数のデータ(以下、第2データという。)を記憶する。第2データについては、図17を用いて後述する。

0093

第4算出部1509は、第4算出処理を実行する。第4算出部1509は、第4算出処理において、各命令種について、各基本ブロックにおける第2実行回数の合計を算出する。算出した第2実行回数の合計は、結果データとして結果記憶部247に記憶される。結果データについては、図18を用いて後述する。

0094

上述した第2算出部1501、第3算出部1505及び第4算出部1509は、ハードウエア資源(例えば、図30)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。

0095

上述した第1データ記憶部1503及び第2データ記憶部1507は、ハードウエア資源(例えば、図30)を用いて実現される。

0096

第1データについて説明する。図16に、第1データの例を示す。この例における第1データは、テーブル形式である。但し、第1データは、テーブル形式以外の形式であってもよい。

0097

この例における第1データは、基本ブロックに対応するブロックレコードを有している。第1データにおけるブロックレコードは、基本ブロック番号を設定するためのフィールドと、第1実行回数を設定するためのフィールドとを有している。上述した通り、第1実行回数は、サンプリング期間に基本ブロックに含まれる命令が実行された延べ回数である。第1実行回数は、実測値ではなく、推定値である。但し、統計的な見地から、第1実行回数は実測値に近似するものとみなされる。尚、第1実行回数のカウント対象は、基本ブロックに含まれる不特定の命令の実行である。つまり、いずれの命令種に属する命令が実行された場合も、第1実行回数としてカウントされる。

0098

この例における第1ブロックレコードは、最初の基本ブロックに含まれる命令が、延べ「1,000,000,000」回実行されたことを示している。同じく、第2ブロックレコードは、2番目の基本ブロックに含まれる命令が、延べ「2,000,000,000」回実行されたことを示している。同じく、第3ブロックレコードは、3番目の基本ブロックに含まれる命令が、延べ「3,000,000,000」回実行されたことを示している。同じく、第4ブロックレコードは、4番目の基本ブロックに含まれる命令が、延べ「100,000,000」回実行されたことを示している。そして、各基本ブロックにおける第1実行回数の合計は、「50,000,000,000」である。つまり、実行プログラム1221の動作によってサンプリング期間にCPU211が実行した命令の総数は、「50,000,000,000」である。

0099

第2データについて説明する。図17に、第2データの例を示す。この例における第2データは、テーブル形式である。但し、第2データは、テーブル形式以外の形式であってもよい。

0100

この例における第2データは、基本ブロックに対応するブロックレコードを有している。第2データにおけるブロックレコードは、基本ブロック番号を設定するためのフィールドと、基本ブロックにおける各命令種の第2実行回数を設定するためのフィールドとを有している。上述したように、第2実行回数は、基本ブロックにおける各命令種について、当該命令種に属する命令が実行された延べ回数である。尚、第2実行回数は、各基本ブロックの第1実行回数(参照:図16)に、当該基本ブロックにおける各命令種の比率(参照:図7)を乗ずることによって求められる。第2実行回数は、第1実行回数と同様に、実測値ではなく、推定値である。但し、統計的な見地から、第2実行回数も実測値に近似するものとみなされる。

0101

この例における第1ブロックレコードは、最初の基本ブロックにおける命令種「整数演算」に属する命令が、サンプリング期間中に「250,000,000」回実行されたことを示している。同じく第1ブロックレコードは、最初の基本ブロックにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に一切実行されていないことを示している。同じく第1ブロックレコードは、最初の基本ブロックにおける命令種「分岐命令」に属する命令が、サンプリング期間中に「125,000,000」回実行されたことを示している。同じく第1ブロックレコードは、最初の基本ブロックにおける命令種「ロード又はストア」に属する命令が、サンプリング期間中に「625,000,000」回実行されたことを示している。

0102

この例における第2ブロックレコードは、2番目の基本ブロックにおける命令種「整数演算」に属する命令が、サンプリング期間中に「500,000,000」回実行されたことを示している。同じく第2ブロックレコードは、2番目の基本ブロックにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に「1,200,000,000」回実行されたことを示している。同じく第2ブロックレコードは、2番目の基本ブロックにおける命令種「分岐命令」に属する命令が、サンプリング期間中に「100,000,000」回実行されたことを示している。同じく第2ブロックレコードは、2番目の基本ブロックにおける命令種「ロード又はストア」に属する命令が、サンプリング期間中に「200,000,000」回実行されたことを示している。

0103

この例における第3ブロックレコードは、3番目の基本ブロックにおける命令種「整数演算」に属する命令が、サンプリング期間中に「100,000,000」回実行されたことを示している。同じく第3ブロックレコードは、3番目の基本ブロックにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に「2,000,000,000」回実行されたことを示している。同じく第3ブロックレコードは、3番目の基本ブロックにおける命令種「分岐命令」に属する命令が、サンプリング期間中に「100,000,000」回実行されたことを示している。同じく第3ブロックレコードは、3番目の基本ブロックにおける命令種「ロード又はストア」に属する命令が、サンプリング期間中に「800,000,000」回実行されたことを示している。

0104

この例における第4ブロックレコードは、4番目の基本ブロックにおける命令種「整数演算」に属する命令が、サンプリング期間中に「20,000,000」回実行されたことを示している。同じく第4ブロックレコードは、4番目の基本ブロックにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に一切実行されていないことを示している。同じく第4ブロックレコードは、4番目の基本ブロックにおける命令種「分岐命令」に属する命令が、サンプリング期間中に「20,000,000」回実行されたことを示している。同じく第4ブロックレコードは、4番目の基本ブロックにおける命令種「ロード又はストア」に属する命令が、サンプリング期間中に「60,000,000」回実行されたことを示している。

0105

結果データについて説明する。図18に、結果データの例を示す。この例における結果データは、各命令種の第3実行回数を設定するためのフィールドを有している。第3実行回数は、実行プログラムにおいて各命令種について当該命令種に属する命令が実行された延べ回数である。尚、第3実行回数は、命令種毎に各基本ブロックの第2実行回数(参照:図17)を合計することによって求められる。第3実行回数は、第1実行回数及び第2実行回数と同様に、実測値ではなく、推定値である。但し、統計的な見地から、第3実行回数も実測値に近似するとみなされる。

0106

この例における結果データは、実行プログラムにおける命令種「整数演算」に属する命令が、サンプリング期間中に「5,000,000,000」回実行されたことを示している。この例における結果データは、実行プログラムにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に「20,000,000,000」回実行されたことを示している。この例における結果データは、実行プログラムにおける命令種「分岐命令」に属する命令が、サンプリング期間中に「10,000,000,000」回実行されたことを示している。更に、この例における結果データは、実行プログラムにおける命令種「ロード又はストア」に属する命令が、サンプリング期間中に「15,000,000,000」回実行されたことを示している。

0107

続いて、分析フェーズ(S105)における処理について説明する。図19に、分析フェーズ(S105)の処理フローの例を示す。受付部241は、サンプルデータを受け付ける(S1901)。受付部241は、第1情報処理装置201の出力プログラム219からネットワーク(例えば、LANあるいはインターネット)を介してサンプルデータを受信するようにしてもよい。あるいは、受付部241は、記録媒体を介してサンプルデータを受け付けるようにしてもよい。受け付けたサンプルデータは、サンプル記憶部243に記憶される。この例では、図13に示したサンプルデータが、サンプル記憶部243に記憶される。

0108

第2算出部1501は、第2算出処理を実行する(S1903)。第2算出処理において、第2算出部1501は、上述したように、サンプルデータとブロックマップとに基づいて、サンプリング期間に各基本ブロックに含まれる命令が実行された回数、つまり第1実行回数を算出する。

0109

以下、第2算出処理について詳述する。図20に、第2算出処理フローの例を示す。第2算出部1501は、サンプル記憶部243に記憶されているサンプルデータに含まれるサンプルレコードを1つ特定する(S2001)。第2算出部1501は、例えば、先頭から順次サンプルレコードを特定する。

0110

第2算出部1501は、ブロックマップ記憶部237に記憶されているブロックマップに基づいて、特定したサンプルレコードに設定されているサンプルが採取されたときに実行されていた基本ブロックを特定する(S2003)。具体的には、第2算出部1501は、ブロックマップに設定されている範囲のうち、特定したサンプルレコードに設定されている実行アドレスを含む範囲を探す。実行アドレスを含む範囲が設定されているブロックレコードの基本ブロック番号によって、基本ブロックを特定する。

0111

第2算出部1501は、S2001において特定したサンプルレコードに設定されている実行命令数を、第1データのブロックレコードのうち、S2003において特定した基本ブロックに相当するブロックレコードの第1実行回数に加える(S2005)。

0112

第2算出部1501は、未処理のサンプルレコードがあるか否かを判定する(S2007)。未処理のサンプルレコードがあると判定した場合には、S2001に戻って、上述した処理を繰り返す。

0113

一方、未処理のサンプルレコードがないと判定した場合には、第2算出処理を終える。第2算出処理を終えると、図19に示したS1905の処理に移る。

0114

図19の説明に戻る。第3算出部1505は、第3算出処理を実行する(S1905)。第3算出処理において、第3算出部1505は、基本ブロックにおける第1実行回数に、当該基本ブロックにおいて各命令種に属する命令が占める比率を乗じて、当該基本ブロックにおいて各命令種に属する命令が実行された回数、つまり第2実行回数を算出する。

0115

以下、第3算出処理について詳述する。図21に、第3算出処理フローの例を示す。第3算出部1505は、基本ブロックを1つ特定する(S2101)。第3算出部1505は、例えば第1データのブロックレコードを先頭から順次特定する。第3算出部1505は、図10に示した第1算出処理のS1011において比率を算出した命令種のうち、1の命令種を特定する(S2103)。第3算出部1505は、S2101において特定した基本ブロックにおけるS2103において特定した命令種の比率を比率データから読む。

0116

そして、第3算出部1505は、S2101において特定した基本ブロックの第1実行回数に、比率データから読んだ命令種の比率を乗じて、サンプリング期間中の当該基本ブロックにおける当該命令種に属する命令の実行回数、つまり第2実行回数を求める(S2105)。算出された第2実行回数は、S2101において特定した基本ブロックのブロックレコードに含まれる当該命令種の第2実行回数のフィールドに設定される。

0117

第3算出部1505は、未処理の命令種があるか否かを判定する(S2107)。未処理の命令種があると判定した場合には、S2103に示した処理に戻って、上述した処理を繰り返す。

0118

一方、未処理の命令種がないと判定した場合には、第3算出部1505は、未処理の基本ブロックがあるか否かを判定する(S2109)。未処理の基本ブロックがあると判定した場合には、S2101に示した処理に戻って、上述した処理を繰り返す。

0119

一方、未処理の基本ブロックがないと判定した場合には、第3算出処理を終える。第3算出処理を終えると、図19に示したS1907の処理に移る。

0120

図19の説明に戻る。第4算出部1509は、第4算出処理を実行する(S1907)。第4算出処理において、第4算出部1509は、各命令種について、各基本ブロックにおける第2実行回数の合計を算出する。つまり、第4算出部1509は、各基本ブロックにおける第2実行回数を命令種毎に集計する。第4算出処理において命令種毎に合計された第3実行回数は、サンプリング期間における実行プログラムの動作によって当該命令種に属する命令が実行された回数に相当する。

0121

以下、第4算出処理について詳述する。図22に、第4算出処理フローの例を示す。第4算出部1509は、図10に示した第1算出処理のS1011において比率を算出した命令種のうち、1の命令種を特定する(S2201)。

0122

第4算出部1509は、特定した命令種の第2実行回数を、第2データにおける各ブロックレコードから集め、合計する(S2203)。算出された合計値は、結果記憶部247に記憶される結果データにおける当該命令種の第3実行回数に設定される。

0123

第4算出部1509は、未処理の命令種があるか否かを判定する(S2205)。未処理の命令種があると判定した場合には、S2201に戻って、上述した処理を繰り返す。

0124

一方、未処理の命令種がないと判定した場合には、第4算出処理を終える。第4算出処理を終えると、図19に示したS1909の処理に移る。

0125

図19の説明に戻る。出力部249は、結果記憶部247に記憶している結果データを出力する(S1909)。例えば、出力部249は、結果データを表示する。出力部249による出力形態は、表示に限らず、例えば送信や記憶媒体への書き込みなどであってもよい。また、結果データを結果記憶部247に留め、出力部249による結果データの出力を省くようにしてもよい。以上で、分析フェーズ(S105)についての説明を終える。

0126

命令種は、上述した例に限らない。命令種は、例えば積和演算であってもよい。命令種は、例えばSIMD(Single Instruction Multiple Data)演算であってもよい。また、本実施の形態及び以下で述べる実施の形態を、CPU以外の演算装置に適用するようにしてもよい。

0127

ここで、本実施の形態における第1実行回数の推定について補足する。まず、基本ブロックの大きさに着目する。大きい基本ブロックは、範囲が広いので採取時点において実行している可能性が高い。従って、大きい基本ブロックは、サンプルの実行アドレスに該当することが多く、第1実行回数が大きくなりやすい。

0128

反対に、小さい基本ブロックは、範囲が狭いので採取時点において実行している可能性が低い。従って、小さい基本ブロックは、サンプルの実行アドレスに該当することが少なく、第1実行回数が小さくなりやすい。

0129

仮に各基本ブロックにおける処理の頻度が等しければ、命令数が多い基本ブロックの第1実行回数が大きくなり、命令数が少ない基本ブロックの第1実行回数が小さくなるので、本実施の形態における第1実行回数は実測値と近似する傾向がある。

0130

一方、基本ブロックにおける処理の頻度に着目する。処理の頻度が高い基本ブロックは、サンプルの実行アドレスに該当することが多く、第1実行回数が大きくなりやすい。

0131

反対に、処理の頻度が低い基本ブロックは、サンプルの実行アドレスに該当することが少なく、第1実行回数が小さくなりやすい。

0132

仮に各基本ブロックの大きさが等しければ、頻繁に処理される基本ブロックの第1実行回数が大きくなり、稀にしか処理されない基本ブロックの第1実行回数が小さくなり、本実施の形態における第1実行回数は実測値と近似する傾向がある。

0133

本実施の形態によれば、分析フェーズ(S105)を計測フェーズ(S103)と分離するので、演算装置における命令種毎の実行回数を低い負荷で計測することができる。命令種毎の実行回数は、例えば演算装置を用いる情報処理装置の調整に役立つ。

0134

また、命令種を独自に設定できるので、性能モニタリングカウンタにおける性能イベントとして設定できない命令種の実行回数を求められるという面もある。特定の命令種の実行回数を求めれば、当該特定の命令種を多く含むプログラムの動作環境としての演算装置の性能を示す指標として役立つ。例えば、浮動小数点演算を多く含む実行プログラムの動作における浮動小数点演算の実行回数を求めれば、当該プログラムの動作環境としての演算装置の性能を知ることができる。

0135

また、基本ブロックの実行回数は、基本ブロックに含まれる各命令の実行回数と一致するので、基本ブロックを単位として命令の実行回数を命令種に按分することによって、命令種別の実行回数をより正しく求めることができる。

0136

また、サイクル数ベースのサンプリングを行うので、時間当たりの処理能力を評価することに役立つ面がある。

0137

[実施の形態2]
上述した実施の形態では、サイクル数ベースのサンプリングを行う例について説明したが、本実施の形態では、キャッシュミス数ベースのサンプリングを行う例について説明する。

0138

図23に、実施の形態2に係る第1情報処理装置201のモジュール構成例を示す。図23に示したモニタ1201は、サイクルのイベントに代えて、キャッシュミスのイベントを計数する。図23に示したキャッシュミスカウンタ2301は、キャッシュミスのイベントを計数するための性能モニタリングカウンタを指している。

0139

本実施の形態におけるサンプリング処理を、図14を用いて説明する。S1401において、サンプリングドライバ215は、モニタ1201にキャッシュミス数のイベントと実行命令数のイベントとを設定する。この例では、モニタ1201における一方の性能モニタリングカウンタにおいて、キャッシュミス数がカウントされる。図23に示したキャッシュミスカウンタ2301は、この性能モニタリングカウンタに相当する。また、実施の形態1の場合と同様に、モニタ1201における他方の性能モニタリングカウンタにおいて、実行命令数がカウントされる図23に示した命令カウンタ1205は、この性能モニタリングカウンタに相当する。

0140

S1403において、サンプリングドライバ215は、キャッシュミスカウンタ2301と命令カウンタ1205とを初期化する。キャッシュミスカウンタ2301は、サンプリングドライバ215がサンプルを採取するタイミングを計るために用いられる。そのため、キャッシュミス数を所定数だけカウントアップすると、キャッシュミスカウンタ2301がオーバーフローするように、キャッシュミスカウンタ2301の初期値が設定される。キャッシュミスカウンタ2301がオーバーフローすると、サンプリングドライバ215に対する割り込みが発生する。この割り込みを契機として、サンプルが採取される。命令カウンタ1205の初期値は、実施の形態1の場合と同様に、0である。

0141

サンプリングドライバ215は、実施の形態1の場合と同様に、モニタ1201を起動する(S1405)。

0142

サンプリングドライバ215は、キャッシュミスカウンタ2301のオーバーフローによる割り込みの発生を待つ(S1407)。キャッシュミスカウンタ2301のオーバーフローによる割り込みが発生すると、実施の形態1の場合と同様に、CPU211は実行プログラム1221の動作に関わるデータを退避領域1211に退避する。

0143

その後、サンプリングドライバ215の動作に切り替わる。サンプリングドライバ215は、実施の形態1の場合と同様に、命令カウンタ1205から実行命令数を取得する(S1409)。

0144

サンプリングドライバ215は、実施の形態1の場合と同様に、退避領域1211からプロセスIDと実行アドレスとを取得する(S1411)。

0145

サンプリングドライバ215は、実施の形態1の場合と同様に、プロセスIDと実行アドレスと実行命令数とを、サンプルデータの新たなサンプルレコードに格納する(S1413)。

0146

サンプリングドライバ215は、S1403の場合と同様に、キャッシュミスカウンタ2301と命令カウンタ1205とを初期化する(S1415)。この段階で、CPU211は、実行プログラム1221の動作に関わるデータを退避領域1211から復帰させ、実行プログラム1221の動作に戻る。

0147

サンプリングドライバ215は、S1407に示した処理へ戻って次の割り込みの発生を待つ。このようにして、サンプリング処理が停止するまで、S1407乃至S1415の処理が繰り返される。

0148

準備フェーズ(S101)及び分析フェーズ(S105)については、実施の形態1の場合と同様である。

0149

本実施の形態によれば、キャッシュミス数ベースのサンプリングを行うので、キャッシュミスが生じやすい状況における性能を評価することに役立つ面がある。

0150

[実施の形態3]
本実施の形態では、実行命令数ベースのサンプリングを行う例について説明する。

0151

図24に、実施の形態3に係る第1情報処理装置201のモジュール構成例を示す。本実施の形態では、命令カウンタ1205のオーバーフローによる割り込みを契機として、サンプルが採取される。従って、命令カウンタ1205の他に性能モニタリングカウンタを用いなくても済む。

0152

図25に、サンプリング処理(B)フローを示す。サンプリングドライバ215は、モニタ1201に実行命令数のイベントを設定する(S2501)。この例では、モニタ1201における1の性能モニタリングカウンタにおいて、実行命令数がカウントされる。図24に示した命令カウンタ1205は、この性能モニタリングカウンタに相当する。

0153

サンプリングドライバ215は、命令カウンタ1205を初期化する(S2503)。命令カウンタ1205は、サンプリングドライバ215がサンプルを採取するタイミングを計るために用いられる。そのため、実行命令数を所定数だけカウントアップすると、命令カウンタ1205がオーバーフローするように、命令カウンタ1205の初期値が設定される。命令カウンタ1205がオーバーフローすると、サンプリングドライバ215に対する割り込みが発生する。この割り込みを契機として、サンプルが採取される。サンプル採取の間隔で実行される命令数は、所定数である。

0154

サンプリングドライバ215は、実施の形態1の場合と同様に、モニタ1201を起動する(S2505)。

0155

サンプリングドライバ215は、命令カウンタ1205のオーバーフローによる割り込みの発生を待つ(S2507)。命令カウンタ1205のオーバーフローによる割り込みが発生すると、実施の形態1の場合と同様に、CPU211は実行プログラム1221の動作に関わるデータを退避領域1211に退避する。

0156

サンプリングドライバ215は、実施の形態1の場合と同様に、退避領域1211からプロセスIDと実行アドレスとを取得する(S2509)。

0157

サンプリングドライバ215は、実施の形態1の場合と同様に、プロセスIDと実行アドレスと所定の実行命令数とを、サンプルデータの新たなサンプルレコードに格納する(S2511)。尚、実行命令数は一定であるので、実行命令数を新たなサンプルレコードに格納しないようにしてもよい。

0158

サンプリングドライバ215は、S2503の場合と同様に、命令カウンタ1205を初期化する(S2513)。この段階で、CPU211は、実行プログラム1221の動作に関わるデータを退避領域1211から復帰させ、実行プログラム1221の動作に戻る。

0159

サンプリングドライバ215は、S2507に示した処理へ戻って次の割り込みの発生を待つ。このようにして、サンプリング処理が停止するまで、S2507乃至S2513の処理が繰り返される。

0160

準備フェーズ(S101)及び分析フェーズ(S105)については、実施の形態1の場合と同様である。尚、図20に示したS2005の処理で、第1実行回数に加えられる実行命令数は一定であるので、サンプルレコードから読まないようにしてもよい。

0161

本実施の形態によれば、実行命令数ベースのサンプリングを行うので、性能モニタリングカウンタの使用数が少なくて済むという面がある。

0162

[実施の形態4]
上述した実施の形態では、4つの命令種について第3実行回数を求める例を示したが、分析対象とする命令種は、4つに限らない。本実施の形態では、1つの命令種について第3実行回数を求める例を示す。

0163

第1情報処理装置201及び第2情報処理装置203のモジュール構成及び処理は、上述した実施の形態と同様である。以下では、1つの命令種を対象とした場合のデータの例を示す。

0164

図26に、実施の形態4に係る比率データの例を示す。図7の場合と同様に、この例における比率データは、テーブル形式である。また、図7の場合と同様に、この例における比率データは、基本ブロックに対応するブロックレコードを有している。比率データにおけるブロックレコードは、基本ブロック番号を設定するためのフィールドと、基本ブロックにおける命令種「浮動小数点演算」に属する命令の比率を設定するためのフィールドと、基本ブロックにおける「その他」の命令種に属する命令の比率を設定するためのフィールドとを有している。但し、「その他」の命令種に属する命令の比率を設定するためのフィールドを省略するようにしてもよい。

0165

この例における第1ブロックレコードは、最初の基本ブロックにおいて命令種「浮動小数点演算」に属する命令の比率が「0.0」パーセントであることを示している。同じく第1ブロックレコードは、最初の基本ブロックにおいて「その他」の命令種に属する命令の比率が「100.0」パーセントであることを示している。

0166

この例における第2ブロックレコードは、2番目の基本ブロックにおいて命令種「浮動小数点演算」に属する命令の比率が「60.0」パーセントであることを示している。同じく第2ブロックレコードは、2番目の基本ブロックにおいて「その他」の命令種に属する命令の比率が「40.0」パーセントであることを示している。

0167

この例における第3ブロックレコードは、3番目の基本ブロックにおいて命令種「浮動小数点演算」に属する命令の比率が「66.7」パーセントであることを示している。同じく第3ブロックレコードは、3番目の基本ブロックにおいて「その他」の命令種に属する命令の比率が「33.3」パーセントであることを示している。

0168

この例における第4ブロックレコードは、4番目の基本ブロックにおいて命令種「浮動小数点演算」に属する命令の比率が「0.0」パーセントであることを示している。同じく第4ブロックレコードは、4番目の基本ブロックにおいて「その他」の命令種に属する命令の比率が「100.0」パーセントであることを示している。

0169

図27に、実施の形態4に係る第2データの例を示す。図17の場合と同様に、この例における第2データは、テーブル形式である。また、図17の場合と同様に、この例における第2データは、基本ブロックに対応するブロックレコードを有している。この例における第2データにおけるブロックレコードは、基本ブロック番号を設定するためのフィールドと、基本ブロックにおける命令種「浮動小数点演算」の第2実行回数を設定するためのフィールドと、基本ブロックにおける「その他」の命令種の第2実行回数を設定するためのフィールドとを有している。但し、基本ブロックにおける「その他」の命令種の第2実行回数を設定するためのフィールドを省略するようにしてもよい。

0170

この例における第1ブロックレコードは、最初の基本ブロックにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に一切実行されていないことを示している。同じく第1ブロックレコードは、最初の基本ブロックにおける「その他」の命令種に属する命令が、サンプリング期間中に「1,000,000,000」回実行されたことを示している。

0171

この例における第2ブロックレコードは、2番目の基本ブロックにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に「1,200,000,000」回実行されたことを示している。同じく第2ブロックレコードは、2番目の基本ブロックにおける「その他」の命令種に属する命令が、サンプリング期間中に「800,000,000」回実行されたことを示している。

0172

この例における第3ブロックレコードは、3番目の基本ブロックにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に「2,000,000,000」回実行されたことを示している。同じく第3ブロックレコードは、3番目の基本ブロックにおける「その他」の命令種に属する命令が、サンプリング期間中に「1,000,000,000」回実行されたことを示している。

0173

この例における第4ブロックレコードは、4番目の基本ブロックにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に一切実行されていないことを示している。同じく第4ブロックレコードは、4番目の基本ブロックにおける「その他」の命令種に属する命令が、サンプリング期間中に「100,000,000」回実行されたことを示している。

0174

図28に、実施の形態4に係る結果データの例を示す。この例における結果データは、命令種「浮動小数点演算」の第3実行回数を設定するためのフィールドと、「その他」の命令種の第3実行回数を設定するためのフィールドとを有している。但し、「その他」の命令種の第3実行回数を設定するためのフィールドを省略するようにしてもよい。

0175

この例における結果データは、実行プログラムにおける命令種「浮動小数点演算」に属する命令が、サンプリング期間中に「20,000,000,000」回実行されたことを示している。更に、この例における結果データは、実行プログラムにおける「その他」の命令種に属する命令が、サンプリング期間中に「30,000,000,000」回実行されたことを示している。

0176

本実施の形態のように、分析対象の命令種の数を少なくすれば、分析フェーズ(S105)における処理が早く済む。

0177

[実施の形態5]
上述した実施の形態では、1つの情報処理装置が、準備フェーズ(S101)における処理、計測フェーズ(S103)における処理及び分析フェーズ(S105)における処理を実行する例について説明する。

0178

図29に、第3情報処理装置2901のモジュール構成例を示す。第3情報処理装置2901は、図2に示した第1情報処理装置201の場合と同様に、CPU211、第1プログラム記憶部213、サンプリングドライバ215及びサンプル格納部217を有する。

0179

第3情報処理装置2901は、図2に示した第2情報処理装置203の場合と同様に、準備部235、ブロックマップ記憶部237、比率記憶部239、分析部245、結果記憶部247及び出力部249を有する。

0180

本実施の形態では、図8に示した準備フェーズ(S101)のS801に示した実行プログラム取得の処理を省くようにしてもよい。準備フェーズ(S101)における他の処理は、上述した実施の形態の場合と同様である。

0181

本実施の形態では、図11に示した計測フェーズ(S103)のS1111に示したサンプルデータ出力の処理を省くようにしてもよい。図11に示した計測フェーズ(S103)における他の処理は、上述した実施の形態の場合と同様である。

0182

本実施の形態では、図19に示した分析フェーズ(S105)のS1901に示したサンプルデータ受け付け処理を省くようにしてもよい。そして、分析部245は、サンプル格納部217からサンプルデータを読む。但し、第3情報処理装置2901にサンプル記憶部243を設け、サンプル格納部217に格納しているサンプルデータを、サンプル記憶部243にコピーするようにしてもよい。その場合には、分析部245は、サンプル記憶部243からサンプルデータを読む。分析フェーズ(S105)における他の処理は、上述した実施の形態の場合と同様である。

0183

上述した実施の形態と同様に、これら3つのフェーズは、連続しなくてもよい。つまり、準備フェーズ(S101)における処理と計測フェーズ(S103)における処理は、連続的に実行されなくてもよい。また、計測フェーズ(S103)における処理と分析フェーズ(S105)における処理は、連続的に実行されなくてもよい。

0184

本実施の形態のように1つの情報処理装置において、準備フェーズ(S101)における処理、計測フェーズ(S103)における処理及び分析フェーズ(S105)における処理を実行する場合でも、分析フェーズ(S105)を計測フェーズ(S103)と分離するので、演算装置における命令種毎の実行回数を低い負荷で計測することができる。

0185

以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。

0186

また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。

0187

なお、上で述べた第1情報処理装置201、第2情報処理装置203及び第3情報処理装置2901は、コンピュータ装置であって、図30に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブルディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。

0188

以上述べた本発明の実施の形態をまとめると、以下のようになる。

0189

本実施の形態に係るプログラム実行解析方法は、(A)プログラムから区切られた複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を算出し、(B)上記プログラムを実行している演算装置から実行アドレスと実行命令数とを採取し、(C)実行アドレスと実行命令数とに基づいて、複数のブロックの各々について、当該ブロックに含まれる命令が実行された第1実行回数を算出し、(D)複数のブロックの各々について、当該ブロックにおける第1実行回数に、当該ブロックにおける上記比率を乗じて、上記命令種に属する命令が実行された第2実行回数を算出し、(E)複数のブロックの各々について算出した第2実行回数の合計を算出する処理を含む。

0190

このようにすれば、演算装置における、ある命令種に属する命令の実行回数を低い負荷で計測することができる。ある命令種に属する命令の実行回数は、例えば演算装置を用いる情報処理装置の調整に役立つ。

0191

更に、複数のブロックは、複数の基本ブロックであってもよい。

0192

基本ブロックの実行回数は、基本ブロックに含まれる各命令の実行回数と一致するので、基本ブロックを単位として実行回数を命令種に按分することによって、命令種別の実行回数をより正しく求めることができる。

0193

更に、サイクル数ベースのサンプリングによって、演算装置から実行アドレスと実行命令数とを採取するようにしてもよい。

0194

このようにすれば、時間当たりの処理能力を評価することに役立つ面がある。

0195

更に、キャッシュミス数ベースのサンプリングによって、演算装置から実行アドレスと実行命令数とを採取するようにしてもよい。

0196

このようにすれば、キャッシュミスが生じやすい状況における性能を評価することに役立つ面がある。

0197

更に、実行命令数ベースのサンプリングによって、演算装置から実行アドレスと実行命令数とを採取するようにしてもよい。

0198

このようにすれば、性能モニタリングカウンタの使用数が少なくて済むという面がある。

0199

なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスクCD−ROM光磁気ディスク半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。

0200

以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。

0201

(付記1)
プログラムから区切られた複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を算出し、
前記プログラムを実行している演算装置から実行アドレスと実行命令数とを採取し、
前記実行アドレスと前記実行命令数とに基づいて、前記複数のブロックの各々について、当該ブロックに含まれる命令が実行された第1実行回数を算出し、
前記複数のブロックの各々について、当該ブロックにおける前記第1実行回数に、当該ブロックにおける前記比率を乗じて、前記命令種に属する前記命令が実行された第2実行回数を算出し、
前記複数のブロックの各々について算出した前記第2実行回数の合計を算出する
処理を含み、コンピュータにより実行されるプログラム実行解析方法。

0202

(付記2)
前記複数のブロックは、複数の基本ブロックである
付記1記載のプログラム実行解析方法。

0203

(付記3)
サイクル数ベースのサンプリングによって、前記演算装置から前記実行アドレスと前記実行命令数とを採取する
付記1又は2記載のプログラム実行解析方法。

0204

(付記4)
キャッシュミス数ベースのサンプリングによって、前記演算装置から前記実行アドレスと前記実行命令数とを採取する
付記1又は2記載のプログラム実行解析方法。

0205

(付記5)
実行命令数ベースのサンプリングによって、前記演算装置から前記実行アドレスと前記実行命令数とを採取する
付記1又は2記載のプログラム実行解析方法。

0206

(付記6)
プログラムから区切られた複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を算出する第1算出部と、
前記プログラムを実行している演算装置から実行アドレスと実行命令数とを採取する採取部と、
前記実行アドレスと前記実行命令数とに基づいて、前記複数のブロックの各々について、当該ブロックに含まれる命令が実行された第1実行回数を算出する第2算出部と、
前記複数のブロックの各々について、当該ブロックにおける前記第1実行回数に、当該ブロックにおける前記比率を乗じて、前記命令種に属する前記命令が実行された第2実行回数を算出する第3算出部と、
前記複数のブロックの各々について算出した前記第2実行回数の合計を算出する第4算出部と
を有する情報処理装置。

0207

(付記7)
プログラムから区切られた複数のブロックの各々について、当該プログラムを実行している演算装置から採取した実行アドレスと実行命令数とに基づいて、当該ブロックに含まれる命令が実行された第1実行回数を算出し、
前記複数のブロックの各々について、当該ブロックに含まれる命令のうち、ある命令種に属する命令が占める比率を、当該ブロックにおける前記第1実行回数に乗じて、当該命令種に属する当該命令が実行された第2実行回数を算出し、
前記複数のブロックの各々について算出した前記第2実行回数の合計を算出する
処理を、コンピュータに実行させるためのプログラム実行解析プログラム

0208

201 第1情報処理装置203 第2情報処理装置
211 CPU 213 第1プログラム記憶部
215サンプリングドライバ217サンプル格納部
219出力プログラム231 取得部
233 第1プログラム記憶部 235 準備部
237ブロックマップ記憶部 239比率記憶部
241 受付部 243サンプル記憶部
245分析部247 結果記憶部
249 出力部 301逆アセンブラ
303 第2プログラム記憶部 305 特定部
307 定義記憶部 309 第1算出部
311パラメータ記憶部 1200メインメモリ
1201モニタ1203サイクルカウンタ
1205命令カウンタ1207 プロセスIDレジスタ
1209プログラムカウンタ1211退避領域
1221実行プログラム1223制御プログラム
1231カーネルモード1233ユーザモード
1501 第2算出部 1503 第1データ記憶部
1505 第3算出部 1507 第2データ記憶部
1509 第4算出部 2301キャッシュミスカウンタ
2901 第3情報処理装置

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ