JP2014182478A - 性能プロファイリング装置及び性能プロファイリング方法 - Google Patents

性能プロファイリング装置及び性能プロファイリング方法 Download PDF

Info

Publication number
JP2014182478A
JP2014182478A JP2013055338A JP2013055338A JP2014182478A JP 2014182478 A JP2014182478 A JP 2014182478A JP 2013055338 A JP2013055338 A JP 2013055338A JP 2013055338 A JP2013055338 A JP 2013055338A JP 2014182478 A JP2014182478 A JP 2014182478A
Authority
JP
Japan
Prior art keywords
program
instruction
counter
identification information
performance profiling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013055338A
Other languages
English (en)
Inventor
Takatoshi Fukuda
高利 福田
修司 ▲高▼田
Shuji Takada
Kenshiro Mori
健司郎 森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013055338A priority Critical patent/JP2014182478A/ja
Priority to US14/086,611 priority patent/US9619361B2/en
Publication of JP2014182478A publication Critical patent/JP2014182478A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】本来のプログラムの動作に影響を及ぼすことなく性能プロファイリングを実施できるようにする。
【解決手段】測定対象のプログラムの命令とその命令が含まれるルーチンを示す識別情報であるプログラムIDとが組になって記憶されたメインメモリからCPUが命令を読み出して処理を実行するとともに、CPUが命令を読み出すことによりメインメモリから命令とともに出力されるプログラムIDに基づき、複数のカウンタにおいて識別情報により指定されるカウンタに対してカウント値のカウントアップを指示するようにして、CPUによる命令の処理と並行してCPUとは別の回路でプログラムの実行情報の収集を行う。
【選択図】図1

Description

本発明は、性能プロファイリング装置及び性能プロファイリング方法に関する。
プログラムの性能解析ツールとしてプロファイラがある。プロファイラは、情報処理システムでのプログラムの実行時に情報を収集する(プロファイルする)。サンプリング型のプロファイラは、オペレーティングシステムの割り込みを使って、測定対象のプログラムのプログラムカウンタを一定の間隔で調べ、その値を記録しておく。そして、プログラムの実行が終了した後に、記録した内容からプログラム全体の実行時間やプログラム内で呼び出されている各サブルーチン(関数)の実行時間を知ることで、プログラムのどの部分が処理に時間を要しているか解析できる。サンプリング型のプロファイラは、オペレーティングシステムの割り込みを使っているために、プログラムの実行情報のサンプリング間隔が大きく、一般に精度が低い。しかし、測定対象のプログラムを通常とほぼ同じ速度で実行させることができる。
プロファイルする他の手法として、例えば下記の第1の方法が知られている。第1の方法は、プログラムにおいてサブルーチン(関数)をコールする前後に性能カウンタの値を取得して記録するルーチンを埋め込み、サブルーチン(関数)の実行を開始するとき及び終了するときのカウンタ値をログとして記録する方法である。プログラムの実行が終了した後にログを解析することで、サブルーチン(関数)の実行時間や特性をつかむことが可能である。しかし、この第1の方法では、本来のプログラムのソースコードにプロファイルのためのルーチンのコードを埋め込み、再コンパイルする必要がある。また、性能カウンタの値を取得するために埋め込まれたルーチンにより、性能測定用のプログラムが、本来のプログラムとは異なった動作をするという問題があった。
また、プログラムのソースコードを変更せずにプロファイルする手法として、例えば下記の第2の方法が提案されている(例えば、特許文献1及び特許文献2参照)。第2の方法では、CPU(Central Processing Unit)内で発生するイベントをカウントし、その値が所定の値になったら割り込みを発生させ、割り込みハンドラーにより各サブルーチン(関数)において、そのイベントが発生した回数をログとして記録する。しかし、この第2の方法でも、本来のプログラムの動作に対して割り込みハンドラーによる処理ルーチンの動作が挿入されることになり、本来のプログラムとは異なった動作になってしまう。
実行クロック数をタスク毎にカウントし、タスクの切り替わるタイミングで、実行していたタスクのタスクID及び実行クロック数を取得し、タスクIDを基にタスク毎に実行クロック数を累積して保存し、プログラムの実行情報を収集する方法が提案されている(例えば、特許文献3参照)。また、プログラム・モジュール単位で実行時間及び実行回数を計測するカウンタを設け、測定対象のプログラム・モジュールの最初及び最後で、対応のカウンタに対するカウントの開始及び停止をCPUが指示することで実行時間及び実行回数を測定する方法が提案されている(例えば、特許文献4参照)。
特開平8−30494号公報 特開2005−215816号公報 特開平11−39192号公報 特開2002−244890号公報 特開2010−244552号公報
前述した第1の方法及び第2の方法は、サンプリング型のプロファイラより短いサンプリング間隔で、プログラムの実行情報を収集することが可能である。しかし、第1の方法及び第2の方法においては、本来のプログラムの動作とは異なった動作になってしまうという問題がある。
1つの側面では、本発明は、本来のプログラムの動作に影響を及ぼさずにプログラムの実行情報を収集することができる性能プロファイリング装置及び性能プロファイリング方法を提供することを目的とする。
性能プロファイリング装置の一態様は、測定対象のプログラムに含まれるルーチンに対応した複数のカウンタ部と、プログラムの命令とその命令が含まれるルーチンを示す識別情報とが記憶された記憶部から命令を読み出して処理を実行する処理部と、記憶部から命令とともに出力される識別情報を受けて、識別情報により指定されるカウンタ部に対してカウント値のカウントアップを指示するカウンタ制御部とを有する。
開示の性能プロファイリング装置は、処理部による命令の処理と並行して、カウンタ制御部及びカウンタ部によりプログラムの実行情報の収集を行うことで、本来のプログラムの動作に影響を及ぼすことなく性能プロファイリングを実施することができる。
第1の実施形態における情報処理システムの構成例を示す図である。 第1の実施形態におけるメインメモリを説明するための図である。 第1の実施形態における情報処理システムの構成例を示す図である。 第2の実施形態における演算処理装置の構成例を示す図である。 第2の実施形態における演算処理装置の他の構成例を示す図である。 第3の実施形態における情報処理システムの構成例を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
(第1の実施形態)
本発明の第1の実施形態について説明する。
図1は、第1の実施形態による性能プロファイリング装置としての情報処理システムの構成例を示す図である。図1に示す情報処理システムは、CPU(Central Processing Unit)11、メインメモリ(主記憶装置)12A、レジスタ13、デコーダー14、イベントセレクタ15、ANDゲート(論理積演算回路)16−i、及びカウンタ<i>17−iを有する。なお、iは添え字であり、i=1〜N(Nは任意の自然数)である(以下においても同様)。図1に示す情報処理システムにおいて、例えばCPU11、レジスタ13、デコーダー14、イベントセレクタ15、ANDゲート16−i、及びカウンタ<i>17−iは、演算処理装置として1つのチップ上に形成される。
CPU11は、供給されるクロックCLKを動作クロックとして動作し、メインメモリ12Aに格納されているプログラムを読み出して実行する。すなわち、CPU11は、メインメモリ12AにアドレスADを出力することにより、メインメモリ12Aから命令を読み出す(フェッチする)。続いて、CPU11は、メインメモリ12Aから読み出されてデータDTとして供給される命令をデコードし、デコード結果に応じた処理を実行する。CPU11は、命令に従って処理を実行する際、メインメモリ12Aに対してデータDTの読み出しや書き込みを必要に応じて行う。また、CPU11は、メインメモリ12Aから命令を読み出す(フェッチする)ときに信号S11をアサートする。
メインメモリ12Aには、プログラムの命令を含むデータが記憶される。また、プログラムの命令と同一のワードに、その命令がどのメインルーチンやサブルーチン(関数)のものかを示す識別情報として付加したプログラムIDが記憶される。つまり、本実施形態では、1ワード内に、命令を含むデータを記憶するデータ格納領域STAと、識別情報として付加されるプログラムIDを記憶するプログラムID格納領域STBとを含む。例えば、各ワードにおけるプログラムID格納領域STBは、複数のビットを有する。なお、プログラムID格納領域STBのビット数は、1つのプログラムで実施される可能性があるルーチン(関数)の数に応じて決定すれば良い。
識別情報として付加されるプログラムIDは、測定対象のプログラムのソースコードをオブジェクトコードに変換するコンパイル時に、プログラムに含まれるルーチン(関数)毎に付加される。そして、図2に一例を示すように、測定対象のプログラムが実行可能な形式でメインメモリ12Aに展開されるときに、プログラムの命令と付加されたプログラムIDとがメインメモリ12Aに記憶される。図2に示す例では、プログラムIDとしてプログラムのメインルーチンに“01”が割り振られ、メインルーチンから呼び出される関数Aに“02”が割り振られ、メインルーチンから呼び出される関数Bに“03”が割り振られている。
CPU11が命令を読み出す(フェッチする)とき、命令とともに同一のワードに記憶されているプログラムIDがメインメモリ12Aから出力されて、命令がCPU11に供給され、プログラムIDがレジスタ13に供給される。このとき、CPU11から出力される信号S11がアサートされ、プログラムIDがレジスタ13に保持される。このようにしてレジスタ13は、CPU11による命令フェッチ時にメインメモリ12Aから供給されるプログラムID(IDA)を取り込み、それ以外のときは保持する。したがって、CPU11がメインメモリ12Aに対して命令以外のデータを読み出すためのメモリアクセスを行っても、レジスタ13にはCPU11が実行する命令に対応したプログラムIDが保持される。また、レジスタ13は、保持しているプログラムIDを出力IDBとして出力する。
デコーダー14は、レジスタ13の出力IDB、すなわちレジスタ13に保持されているプログラムIDを受けて、それをデコードする。また、デコーダー14は、プログラムIDのデコード結果を基に、プログラムIDにより指定されるカウンタ<i>に対してカウントアップを指示するカウント信号C11−iをアサートする(出力を“1”にする)。例えば、デコーダー14は、入力されたプログラムIDが“01”であればカウント信号C11−1をアサートし、入力されたプログラムIDが“02”であればカウント信号C11−2をアサートする。
イベントセレクタ15は、情報処理システム内で各種イベントが発生したときにカウントアップするか否かを選択する。各ルーチン(関数)の実行時間(実行クロック数)を測定する場合には、イベントセレクタ15は、出力するカウントイネーブル信号CNTを常にアサートする(出力を“1”にする)。また、各ルーチン(関数)の実行中におけるイベントの発生回数を測定する場合には、イベントセレクタ15は、対象のイベントが発生したことを示すイベント検出信号EVSが入力されたときに、出力するカウントイネーブル信号CNTをアサートする。例えば、各ルーチン(関数)の実行中におけるキャッシュミスの発生回数を測定する場合には、イベント検出信号EVSによりキャッシュミスの発生が示されたときに、カウントイネーブル信号CNTをアサートする。
ANDゲート16−i及びカウンタ<i>17−iは、各プログラムIDに対応させて設ける。ANDゲート16−iは、デコーダー14から出力されるカウント信号C11−i及びイベントセレクタ15から出力されるカウントイネーブル信号CNTが入力される。カウンタ<i>17−iは、CPU11の動作クロックと同じクロックCLKで動作し、対応するANDゲート16−iの出力に応じてカウント動作を行う。カウンタ<i>17−iは、対応するANDゲート16−iの出力がアサートされている(出力が“1”である)とき、クロックCLKの1周期毎にカウント値を1ずつ増加しカウントアップする。
前述の構成により、各ルーチン(関数)の実行時間を測定する場合には、実行しているルーチン(関数)のプログラムIDに対応するANDゲート16−iの出力がアサートされ、それを受けるカウンタ<i>17−iのカウント値が、クロックCLKの1周期毎にカウントアップする。すなわち、各カウンタ<i>17−iが、対応するルーチン(関数)の実行クロック数をカウントする。これにより、測定対象のプログラムの実行が終了した後に、各カウンタ<i>17−iのカウンタ値を読み出すことで、測定対象のプログラムに含まれる各ルーチン(関数)の実行時間が得られる。
また、各ルーチン(関数)の実行中におけるイベントの発生回数を測定する場合には、対象のイベントが発生したときに、実行しているルーチン(関数)のプログラムIDに対応するANDゲート16−iの出力がアサートされ、それを受けるカウンタ<i>17−iのカウント値がカウントアップする。すなわち、各カウンタ<i>17−iが、対応するルーチン(関数)の実行時におけるイベントの発生回数をカウントする。これにより、測定対象のプログラムの実行が終了した後に、各カウンタ<i>17−iのカウンタ値を読み出すことで、測定対象のプログラムに含まれる各ルーチン(関数)でのイベントの発生回数が得られる。
次に、測定対象のプログラムが図2に示したものであって、各ルーチン(関数)の実行時間を測定する場合の動作を一例として説明する。なお、以下の説明では、カウンタ<1>17−1がプログラムID“01”に対応し、カウンタ<2>17−2がプログラムID“02”に対応し、カウンタ<3>17−3がプログラムID“03”に対応するものとする。
まず、CPU11がメインルーチンの先頭アドレスをメインメモリ12Aに出力することにより、メインメモリ12Aからメインルーチンの最初の命令が読み出され(フェッチされ)、CPU11はその命令に応じた処理を実行する。また、メインメモリ12Aからメインルーチンの最初の命令が読み出されるとき、同一のワードに記憶されているメインルーチンのプログラムIDもメインメモリ12Aから読み出されてレジスタ13に保持される。
メインルーチンのプログラムIDが“01”であるので、デコーダー14は、レジスタ13の出力をデコードすることによりカウンタ<1>17−1を選択して、カウント信号C11−1をアサートする。なお、イベントセレクタ15から出力されるカウントイネーブル信号CNTは常にアサートされている。したがって、カウンタ<1>17−1は、クロックCLKの1周期毎にカウント値を1ずつ増加させカウントアップする。メインルーチンがCPU11上で動作している時、プログラムIDは“01”が出力されるので、カウンタ<1>17−1は、クロックCLKの1周期毎にカウントアップする。
その後、メインルーチンが関数Aあるいは関数Bをコールし、関数Aあるいは関数BがCPU上で動作し始めると、メインメモリ12Aから出力されるプログラムIDが変わる。例えば、メインルーチンが関数Aを呼び出し、メインルーチンから関数Aに動作が移ると、プログラムIDは“02”が出力される。また、例えば、メインルーチンが関数Bを呼び出し、メインルーチンから関数Bに動作が移ると、プログラムIDは“03”が出力される。
命令フェッチ時に、メインメモリ12Aから出力されるプログラムIDがレジスタ13に取り込まれ、それを基にデコーダー14がプログラムIDに対応するカウンタ<i>17−iを選択する。例えば、関数AがCPU11上で動作している時にはカウンタ<2>17−2が選択され、カウンタ<2>17−2は、クロックCLKの1周期毎にカウント値を1ずつ増加させカウントアップする。また、例えば、関数BがCPU11上で動作している時にはカウンタ<3>17−3が選択され、カウンタ<3>17−3は、クロックCLKの1周期毎にカウント値を1ずつ増加させカウントアップする。
関数Aあるいは関数Bの処理が終了してメインルーチンに動作が戻ると、再びプログラムIDは“01”が出力される。したがって、カウンタ<1>17−1が選択され、カウンタ<1>17−1は、クロックCLKの1周期毎にカウントアップする。このようにして測定対象のプログラムを実行していき実行が終了した時点で、各カウンタ<i>17−iのカウンタ値を読み出せば、各ルーチン(関数)に対応するカウンタのカウンタ値が実行に要したクロック数、すなわち実行時間となる。
第1の実施形態によれば、CPU11で実行しているルーチンを示すプログラムIDをCPU11とは別の回路に供給し、CPU11での命令の処理と並行してプログラムの実行情報の収集を行うので、本来のプログラムの動作に影響を及ぼすことなく性能プロファイリングを実施することができる。また、CPU11が動作するクロックCLKの1周期毎にどのルーチン(関数)が実行されているかの情報を取得することが可能であり、短いサンプリング間隔でプログラムの実行情報を収集することができ、精度の高い性能プロファイリングが可能になる。
なお、DLL(ダイナミック・リンケージ・ライブラリ)等のプログラムの実行時にメインメモリにロードされるものについては、呼び出したルーチンと同一のプログラムIDを割り振るか、別のプログラムIDを割り振るかを選択できるようにしても良い。このようにすれば、DLL等のプログラムの実行時間を測定するか、DLL等のプログラムを呼び出したルーチン全体での実行時間を測定するかを選択することが可能になる。
また、図1に示した構成では、識別情報として付加されるプログラムIDを記憶するために専用のプログラムID格納領域STBをメインメモリ12Aに設けている。しかし、性能プロファイリングを実施するような情報処理システムにおいて、メインメモリは、通常動作でのシステムの信頼度を上げるために、一般にエラー訂正コード(ECC)の格納領域を有している。
そこで、図3に示すように、メインメモリ12Bにおいて通常動作時にはエラー訂正コードECCを記憶する領域を、性能プロファイリングを実施する場合にはプログラムIDを記憶するプログラムID格納領域STBとして利用するような構成としても良い。ここで、図3において、図1に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
図3に示すようにした場合には、通常動作を行うか、あるいは性能プロファイリングを行うかの情報処理システムの動作モードを、外部からの信号やレジスタ設定等により切り替え可能にする。そして、性能プロファイリングを実施する動作モードでは、CPU11は、エラー訂正コードECCを用いたエラー訂正を行わないようにする。このようにすることで、プログラムIDを記憶するための専用のプログラムID格納領域STBをメインメモリに設ける必要がなく、メインメモリの容量を削減しコストを低減することができる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
図4は、第2の実施形態による性能プロファイリング装置としての演算処理装置の構成例を示す図である。図4(A)に示すように本実施形態における演算処理装置は、CPU21、命令キャッシュメモリ22A、セレクタ23、24、レジスタ25、デコーダー26、イベントセレクタ27、ANDゲート28−i、及びカウンタ<i>29−iを有する。例えば、図4(A)に示す演算処理装置は、1つのチップ上に形成される。なお、図4(A)には、演算処理装置が有するキャッシュメモリのうち命令キャッシュメモリ22Aだけを図示し、データキャッシュメモリについては図示を省略している。
CPU21は、図1に示したCPU11に相当し、供給されるクロックCLKを動作クロックとして動作し、命令キャッシュメモリ22Aを介して図示しないメインメモリに格納されているプログラムを読み出して実行する。また、CPU21は、命令をフェッチするときに信号S21をアサートする。
命令キャッシュメモリ22Aは、図示しないメインメモリのデータの一部を記憶するキャッシュメモリであり、メインメモリに記憶されているプログラムの命令の一部を記憶する。図4(A)には、管理される単位(同時にアクセスされる単位)となる1キャッシュラインが4ワードである命令キャッシュメモリ22Aを例として示している。本実施形態においては、第1のワード内に、第1のデータ格納領域STA1と第1のプログラムID格納領域STB1とを含み、第2のワード内に、第2のデータ格納領域STA2と第2のプログラムID格納領域STB2とを含む。また、第3のワード内に、第3のデータ格納領域STA3と第3のプログラムID格納領域STB3とを含み、第4のワード内に、第4のデータ格納領域STA4と第4のプログラムID格納領域STB4とを含む。
図4(B)に示すように、データ格納領域STA1〜STA4の各々には、命令<DAT1>〜<DAT4>が記憶される。また、プログラムID格納領域STB1〜STB4の各々には、同一のワードに記憶された命令がどのルーチン(関数)のものかを示す識別情報としてのプログラムID<ID1>〜<ID4>が記憶される。例えば、プログラムID格納領域STB1〜STB4は、1つのプログラムで実施される可能性があるルーチン(関数)の数に応じてビット数が決められる複数のビットを有する。なお、識別情報として付加されるプログラムIDは、前述した第1の実施形態と同様のものである。
セレクタ23、24は、命令キャッシュメモリ22Aから読み出される1キャッシュライン分のデータを保持する。セレクタ23は、命令キャッシュメモリ22Aから読み出された第1〜第4のワードのデータ格納領域STA1〜STA4にそれぞれ記憶されている命令を、第1〜第4の命令保持部RA1〜RA4に保持する。同様に、セレクタ24は、命令キャッシュメモリ22Aから読み出された第1〜第4のワードのプログラムID格納領域STB1〜STB4にそれぞれ記憶されているプログラムIDを、第1〜第4のID保持部RB1〜RB4に保持する。また、セレクタ23、24は、保持したデータを、例えばアドレスADの下位部に応じてワード単位で選択して出力する。
CPU21から出力されるアドレスADが命令キャッシュメモリ22Aでヒットすると、そのアドレスに対応する1キャッシュライン分のデータが命令キャッシュメモリ22Aから読み出される。なお、命令キャッシュメモリ22AにアドレスADに対応するデータがない(キャッシュミス)場合には、図示しないメインメモリへのアクセス等が行われ、アドレスADに対応するデータが命令キャッシュメモリ22Aに記憶された後に読み出しが行われる。
命令キャッシュメモリ22Aから読み出されたデータのうち、各ワードに記憶されている命令が、セレクタ23に供給されて第1〜第4の命令保持部RA1〜RA4に保持される。また、命令キャッシュメモリ22Aから読み出されたデータのうち、各ワードに記憶されているプログラムIDが、セレクタ24に供給されて第1〜第4のプログラムID保持部RB1〜RB4に保持される。1クロックで1つの命令を実行するシングル−イシュのパイプラインをCPU21が有する場合には、セレクタ23の第1〜第4の命令保持部RA1〜RA4に保持された4つの命令は、CPU21からの命令フェッチ要求に応じて順次選択されCPU21に供給される。
また、セレクタ23からCPU21へ命令が供給されるのに合わせて、その命令に対応する、セレクタ24の第1〜第4のプログラムID保持部RB1〜RB4に保持されたプログラムIDが、セレクタ24からレジスタ25に供給される。このとき、CPU21から出力される信号S21がアサートされ、プログラムIDがレジスタ25に保持される。このようにしてレジスタ25は、CPU21による命令フェッチ時に、供給されるプログラムID(IDA)を取り込み、それ以外のときは保持する。
デコーダー26は、図1に示したデコーダー14に相当し、レジスタ25の出力IDB、すなわちレジスタ25に保持されているプログラムIDをデコードする。また、デコーダー26は、プログラムIDのデコード結果に応じて、カウンタ<i>に対してカウントアップを指示するカウント信号C21−iをアサートする(出力を“1”にする)。イベントセレクタ27は、図1に示したイベントセレクタ15に相当し、カウントイネーブル信号CNTを出力することで、システム内で各種イベントが発生したときにカウントアップするか否かを選択する。
ANDゲート28−i及びカウンタ<i>29−iは、各プログラムIDに対応させて設ける。ANDゲート28−i及びカウンタ<i>29−iは、図1に示したANDゲート16−i及びカウンタ<i>17−iに相当する。ANDゲート28−iは、デコーダー26から出力されるカウント信号C21−i及びイベントセレクタ27から出力されるカウントイネーブル信号CNTが入力される。カウンタ<i>29−iは、CPU21の動作クロックと同じクロックCLKで動作し、対応するANDゲート28−iの出力がアサートされている(出力が“1”である)とき、クロックCLKの1周期毎にカウントアップする。
前述した第1の実施形態と同様に、各ルーチン(関数)の実行時間を測定する場合には、実行しているルーチン(関数)のプログラムIDに対応するANDゲート28−iの出力がアサートされ、カウンタ<i>29−iのカウント値が、クロックCLKの1周期毎にカウントアップする。すなわち、各カウンタ<i>29−iが、対応するルーチン(関数)の実行クロック数をカウントする。これにより、測定対象のプログラムの実行が終了した後に、各カウンタ<i>29−iのカウンタ値を読み出すことで、測定対象のプログラムに含まれる各ルーチン(関数)の実行時間が得られる。
また、各ルーチン(関数)の実行中におけるイベントの発生回数を測定する場合には、対象のイベントが発生したときに、実行しているルーチン(関数)のプログラムIDに対応するANDゲート28−iの出力がアサートされ、カウンタ<i>29−iのカウント値がカウントアップする。すなわち、各カウンタ<i>29−iが、対応するルーチン(関数)の実行時におけるイベントの発生回数をカウントする。これにより、測定対象のプログラムの実行が終了した後に、各カウンタ<i>29−iのカウンタ値を読み出すことで、測定対象のプログラムに含まれる各ルーチン(関数)でのイベントの発生回数が得られる。
第2の実施形態によれば、第1の実施形態と同様にして、本来のプログラムの動作に影響を及ぼすことなく性能プロファイリングを実施することができるとともに、短いサンプリング間隔でプログラムの実行情報を収集することが可能になる。
ここで、演算処理装置外部のメインメモリに測定対象のプログラムを実行可能な形式で展開する際、メインメモリの連続する領域にプログラムの命令を記憶させるのが一般的である。そのため、メインメモリにおいて命令キャッシュメモリ22Aに読み出される1キャッシュライン単位では、異なるルーチン(関数)の命令が記憶されることはほとんどなく、通常は同じルーチン(関数)の命令が記憶されている。したがって、命令キャッシュメモリにおいて、図4に示したようにキャッシュラインの各ワード毎にプログラムIDを記憶しなくとも、図5に示すようにキャッシュライン毎にプログラムIDを記憶するようにしても良い。こうすることで、命令キャッシュメモリの容量を削減しコストの低減を図ることができるとともに、良好な精度での性能プロファイリングが可能である。
図5(A)は、第2の実施形態による性能プロファイリング装置としての演算処理装置の他の構成例を示す図である。図5(A)において、図4(A)に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。図5(A)に示す演算処理装置の命令キャッシュメモリ22Bは、メインメモリに記憶されているプログラムの命令の一部を記憶する。図5(A)においても、管理される単位となる1キャッシュラインが4ワードである命令キャッシュメモリ22Bを例として示している。
命令キャッシュメモリ22Bは、1キャッシュライン内に、第1〜第4のデータ格納領域STA1〜STA4と1つのプログラムID格納領域STBとを含む。図5(B)に示すように、データ格納領域STA1〜STA4の各々には、命令<DAT1>〜<DAT4>が記憶され、プログラムID格納領域STBには、命令<DAT1>〜<DAT4>がどのルーチン(関数)のものかを示すプログラムID<ID>が記憶される。
また、図5に示す演算処理装置では、CPU21は、アドレスADに応じたデータを命令キャッシュメモリ22Bから読み出すときに、レジスタ25に出力する信号S31をアサートする。これによりレジスタ25は、アドレスADに応じたデータが命令キャッシュメモリ22Bから読み出されるときに、命令キャッシュメモリ22Bから供給されるプログラムID(IDA)を取り込んで保持する。
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。
図6は、第3の実施形態による性能プロファイリング装置としての情報処理システムの構成例を示す図である。第3の実施形態における情報処理システムは、複数の演算処理装置を有する、いわゆるマルチCPUのシステムである。図6には、メインメモリ66が各演算処理装置に共有されたSMP(Symmetric Multiple Processor)方式の例を示している。なお、図6においては、演算処理装置の内部構成を簡略化して図示しているが、演算処理装置の各々は、例えば図4(A)又は図5(A)に示した演算処理装置である。
第1の演算処理装置は、CPU−A61A、命令キャッシュメモリA62A、レジスタA63A、デコーダーA64A、及びカウンタA<i>65A−iを含む。CPU−A61A、命令キャッシュメモリA62A、レジスタA63A、デコーダーA64A、及びカウンタA<i>65A−iは、図4(A)(又は図5(A))に示したCPU21、命令キャッシュメモリ22A(又は22B)、レジスタ25、デコーダー26、及びカウンタ<i>29−iにそれぞれ相当する。
また、第2の演算処理装置は、CPU−B61B、命令キャッシュメモリB62B、レジスタB63B、デコーダーB64B、及びカウンタB<i>65B−iを含む。CPU−B61B、命令キャッシュメモリB62B、レジスタB63B、デコーダーB64B、及びカウンタB<i>65B−iは、図4(A)(又は図5(A))に示したCPU21、命令キャッシュメモリ22A(又は22B)、レジスタ25、デコーダー26、及びカウンタ<i>29−iにそれぞれ相当する。
演算処理装置の各々は、アドレスバス及びデータバスを介して、演算処理装置外部のメインメモリ66にアクセス可能となっている。なお、図6において、ADはCPUから出力されるアドレスであり、DTはCPUとキャッシュメモリとの間で入出力されるデータである。また、IDAは命令キャッシュメモリから読み出されたプログラムIDであり、CLKはクロックである。
第1の演算処理装置のCPU−A61Aと第2の演算処理装置のCPU−B61Bとでマルチスレッドプログラムを実行する場合を例に説明する。例えば、まずCPU−A61Aが、メインメモリ66に実行可能な形式で展開されている、固有のプログラムIDを持つ測定対象のプログラムの実行を開始すると、命令キャッシュメモリA62Aにメインメモリ66からプログラムを転送して逐次実行する。このプログラムの実行途中でマルチスレッド化しているプログラムであれば、新たなプロセスあるいはスレッドが生成される。例えば、プロセスを生成する場合では、生成されたプロセスは元のプロセスのコピーとしてメモリに記憶される。このとき、元のプロセスに割り振られているプログラムIDと同一のプログラムIDを生成されたプロセスに対して割り振るようにする。
そして、それぞれの演算処理装置にてプログラム(プロセス、スレッド)を実行し、プログラムの実行情報を収集する。測定対象のプログラムの実行が終了した後、同じプログラムIDに対応するカウンタA<i>65A−i、カウンタB<i>65B−iのカウンタ値を読み出して加算する。これにより、測定対象のプログラムに含まれる各ルーチン(関数)の実行時間、又は測定対象のプログラムに含まれる各ルーチン(関数)でのイベントの発生回数を得ることができる。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
(付記1)
測定対象のプログラムに含まれるルーチンに対応して設けた複数のカウンタ部と、
前記プログラムの命令と、当該命令が含まれる前記プログラムのルーチンを示す識別情報とを組にして記憶する記憶部と、
前記記憶部から前記命令を読み出し、当該命令に応じた処理を実行する処理部と、
前記処理部が命令を読み出すことによって前記記憶部から前記命令とともに出力される当該命令の識別情報を受けて、当該識別情報により指定される前記カウンタ部に対してカウント値のカウントアップを指示するカウンタ制御部とを有することを特徴とする性能プロファイリング装置。
(付記2)
前記カウンタ制御部は、
前記記憶部から出力される前記識別情報を所定のタイミングで取り込んで保持するレジスタと、
前記レジスタに保持された前記識別情報をデコードし、デコード結果に基づいて前記カウンタ部に対するカウントアップの指示を出力する出力部とを有することを特徴とする付記1記載の性能プロファイリング装置。
(付記3)
前記カウンタ制御部は、前記識別情報により指定される前記カウンタ部に対して、クロックの1周期毎にカウントアップするよう指示することを特徴とする付記1記載の性能プロファイリング装置。
(付記4)
前記カウンタ制御部は、前記識別情報により指定される前記カウンタ部に対して、対象のイベントが発生したときにカウントアップするよう指示することを特徴とする付記1記載の性能プロファイリング装置。
(付記5)
前記記憶部は、前記複数のカウンタ部と前記処理部と前記カウンタ制御部とを含む演算処理装置外部のメモリであることを特徴とする付記1記載の性能プロファイリング装置。
(付記6)
前記プログラムの命令と同一のワードに当該命令の識別情報を記憶することを特徴とする付記5記載の性能プロファイリング装置。
(付記7)
前記記憶部は、データを記憶する第1の領域と通常動作時に前記データのエラー訂正コードが記憶される第2の領域とを有し、
前記プログラムの性能測定時には、前記第2の領域に前記命令の識別情報を記憶することを特徴とする付記5記載の性能プロファイリング装置。
(付記8)
前記記憶部は、前記複数のカウンタ部と前記処理部と前記カウンタ制御部とを含む演算処理装置外部のメモリに記憶されているデータの一部を記憶する、前記演算処理装置内部のキャッシュメモリであることを特徴とする付記1記載の性能プロファイリング装置。
(付記9)
前記キャッシュメモリにおいて、同時にアクセスされる1キャッシュラインが複数のワードを有し、
前記プログラムの命令と同一のワードに当該命令の識別情報を記憶することを特徴とする付記8記載の性能プロファイリング装置。
(付記10)
前記キャッシュメモリにおいて、同時にアクセスされる1キャッシュラインが複数のワードを有し、
前記1キャッシュライン毎に前記命令の識別情報の1つを記憶することを特徴とする付記8記載の性能プロファイリング装置。
(付記11)
測定対象のプログラムに含まれるルーチンに対応して設けた複数のカウンタ部、及び前記プログラムの命令と、当該命令が含まれる前記プログラムのルーチンを示す識別情報とを組にして記憶する記憶部とを有する性能プロファイリング装置の性能プロファイリング方法であって、
前記性能プロファイリング装置が有する処理部が、前記記憶部から前記命令を読み出し、当該命令に応じた処理を実行し、
前記性能プロファイリング装置が有するカウンタ制御部が、前記処理部が命令を読み出すことによって前記記憶部から前記命令とともに出力される当該命令の識別情報を受けて、当該識別情報により指定される前記カウンタ部に対してカウント値のカウントアップを指示することを特徴とする性能プロファイリング方法。
11、21 CPU
12A メインメモリ
13、25 レジスタ
14、26 デコーダー
15、27 イベントセレクタ
16、28 ANDゲート
17、29 カウンタ
22A、22B 命令キャッシュメモリ
23、24 セレクタ
STA データ格納領域
STB プログラムID格納領域

Claims (5)

  1. 測定対象のプログラムに含まれるルーチンに対応して設けた複数のカウンタ部と、
    前記プログラムの命令と、当該命令が含まれる前記プログラムのルーチンを示す識別情報とを組にして記憶する記憶部と、
    前記記憶部から前記命令を読み出し、当該命令に応じた処理を実行する処理部と、
    前記処理部が命令を読み出すことによって前記記憶部から前記命令とともに出力される当該命令の識別情報を受けて、当該識別情報により指定される前記カウンタ部に対してカウント値のカウントアップを指示するカウンタ制御部とを有することを特徴とする性能プロファイリング装置。
  2. 前記カウンタ制御部は、
    前記記憶部から出力される前記識別情報を所定のタイミングで取り込んで保持するレジスタと、
    前記レジスタに保持された前記識別情報をデコードし、デコード結果に基づいて前記カウンタ部に対するカウントアップの指示を出力する出力部とを有することを特徴とする請求項1記載の性能プロファイリング装置。
  3. 前記カウンタ制御部は、前記識別情報により指定される前記カウンタ部に対して、クロックの1周期毎にカウントアップするよう指示することを特徴とする請求項1又は2記載の性能プロファイリング装置。
  4. 前記カウンタ制御部は、前記識別情報により指定される前記カウンタ部に対して、対象のイベントが発生したときにカウントアップするよう指示することを特徴とする請求項1又は2記載の性能プロファイリング装置。
  5. 測定対象のプログラムに含まれるルーチンに対応して設けた複数のカウンタ部、及び前記プログラムの命令と、当該命令が含まれる前記プログラムのルーチンを示す識別情報とを組にして記憶する記憶部とを有する性能プロファイリング装置の性能プロファイリング方法であって、
    前記性能プロファイリング装置が有する処理部が、前記記憶部から前記命令を読み出し、当該命令に応じた処理を実行し、
    前記性能プロファイリング装置が有するカウンタ制御部が、前記処理部が命令を読み出すことによって前記記憶部から前記命令とともに出力される当該命令の識別情報を受けて、当該識別情報により指定される前記カウンタ部に対してカウント値のカウントアップを指示することを特徴とする性能プロファイリング方法。
JP2013055338A 2013-03-18 2013-03-18 性能プロファイリング装置及び性能プロファイリング方法 Pending JP2014182478A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013055338A JP2014182478A (ja) 2013-03-18 2013-03-18 性能プロファイリング装置及び性能プロファイリング方法
US14/086,611 US9619361B2 (en) 2013-03-18 2013-11-21 Performance profiling apparatus and performance profiling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013055338A JP2014182478A (ja) 2013-03-18 2013-03-18 性能プロファイリング装置及び性能プロファイリング方法

Publications (1)

Publication Number Publication Date
JP2014182478A true JP2014182478A (ja) 2014-09-29

Family

ID=51534672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013055338A Pending JP2014182478A (ja) 2013-03-18 2013-03-18 性能プロファイリング装置及び性能プロファイリング方法

Country Status (2)

Country Link
US (1) US9619361B2 (ja)
JP (1) JP2014182478A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11714650B2 (en) 2021-07-27 2023-08-01 Fujitsu Limited Non-transitory computer-readable medium, analysis device, and analysis method

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753731B1 (en) * 2015-01-16 2017-09-05 The Mathworks, Inc. Methods and systems for analyzing and improving performance of computer codes
FR3116335B1 (fr) * 2020-11-13 2023-05-12 St Microelectronics Alps Sas Système comprenant un module esclave et un module maître

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6337436A (ja) * 1986-08-01 1988-02-18 Matsushita Electric Ind Co Ltd プログラム開発支援装置
JPH01180647A (ja) * 1988-01-12 1989-07-18 Hitachi Ltd デバッグ装置
JP2004348635A (ja) * 2003-05-26 2004-12-09 Renesas Technology Corp プログラム開発方法
JP2008186080A (ja) * 2007-01-26 2008-08-14 Toshiba Corp パフォーマンスモニタ装置および情報処理装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0689141A3 (en) 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
JPH1139192A (ja) 1997-07-22 1999-02-12 Nec Ic Microcomput Syst Ltd 情報制御装置
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
JP2002244890A (ja) 2001-02-20 2002-08-30 Canon Inc 記録装置
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
JP2005215816A (ja) 2004-01-28 2005-08-11 Hitachi Ltd ハードウェアモニタを用いた性能プロファイリング方法
US7779238B2 (en) * 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
JP5326374B2 (ja) * 2008-06-19 2013-10-30 富士通セミコンダクター株式会社 プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法
US8346509B2 (en) 2009-04-08 2013-01-01 Intel Corporation Context switch sampling

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6337436A (ja) * 1986-08-01 1988-02-18 Matsushita Electric Ind Co Ltd プログラム開発支援装置
JPH01180647A (ja) * 1988-01-12 1989-07-18 Hitachi Ltd デバッグ装置
JP2004348635A (ja) * 2003-05-26 2004-12-09 Renesas Technology Corp プログラム開発方法
JP2008186080A (ja) * 2007-01-26 2008-08-14 Toshiba Corp パフォーマンスモニタ装置および情報処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11714650B2 (en) 2021-07-27 2023-08-01 Fujitsu Limited Non-transitory computer-readable medium, analysis device, and analysis method

Also Published As

Publication number Publication date
US20140282435A1 (en) 2014-09-18
US9619361B2 (en) 2017-04-11

Similar Documents

Publication Publication Date Title
CN109313567B (zh) 虚拟化精确的基于事件的采样的设备和方法
US8527812B2 (en) Information processing device
CN108475236B (zh) 测量地址转换延迟
US20150143343A1 (en) Trace-data processing and profiling device
US20070079294A1 (en) Profiling using a user-level control mechanism
US10067813B2 (en) Method of analyzing a fault of an electronic system
US9740541B2 (en) Information processing apparatus and method of collecting performance analysis data
JP2014106973A (ja) パフォーマンス測定ユニット
US20160378636A1 (en) Software-Initiated Trace Integrated with Hardware Trace
US20140156978A1 (en) Detecting and Filtering Biased Branches in Global Branch History
JP2014182478A (ja) 性能プロファイリング装置及び性能プロファイリング方法
US8966323B2 (en) Monitoring multiple data transfers
CN107451038B (zh) 硬件事件采集方法、处理器和计算系统
US9195524B1 (en) Hardware support for performance analysis
US10956303B2 (en) Trace data representation
CN108345534B (zh) 生成和处理跟踪流的装置和方法
JP6666216B2 (ja) 電子制御装置、解析システム
CN116302868A (zh) 使用固定计数器的高级别微体系结构事件性能监测的系统、方法和装置
JP5136553B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2009217385A (ja) プロセッサ及びマルチプロセッサ
CN103718158B (zh) 多处理器系统
JP4806577B2 (ja) トレースデータ記録装置
EP2348400A1 (en) Arithmetic processor, information processor, and pipeline control method of arithmetic processor
US11403108B2 (en) Exception handling
US8027829B2 (en) System and method for integrated circuit emulation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160802

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170207