JP4284332B2 - パフォーマンスモニタ装置、データ収集方法及びそのプログラム - Google Patents

パフォーマンスモニタ装置、データ収集方法及びそのプログラム Download PDF

Info

Publication number
JP4284332B2
JP4284332B2 JP2006117862A JP2006117862A JP4284332B2 JP 4284332 B2 JP4284332 B2 JP 4284332B2 JP 2006117862 A JP2006117862 A JP 2006117862A JP 2006117862 A JP2006117862 A JP 2006117862A JP 4284332 B2 JP4284332 B2 JP 4284332B2
Authority
JP
Japan
Prior art keywords
address
counter
input
information
area
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.)
Expired - Fee Related
Application number
JP2006117862A
Other languages
English (en)
Other versions
JP2007293424A (ja
Inventor
秀則 松崎
誠司 前田
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2006117862A priority Critical patent/JP4284332B2/ja
Priority to US11/733,379 priority patent/US7571076B2/en
Priority to EP07251553A priority patent/EP1847931A3/en
Priority to CNB200710100866XA priority patent/CN100527093C/zh
Publication of JP2007293424A publication Critical patent/JP2007293424A/ja
Application granted granted Critical
Publication of JP4284332B2 publication Critical patent/JP4284332B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • 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)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、パフォーマンスモニタ装置、データ収集方法及びそのプログラムに関し、特にプロセッサの動作状況を評価するためのデータを収集するパフォーマンスモニタ装置、データ収集方法及びそのプログラムに関する。
プロセッサで発生したイベントの発生状況に関するデータを収集するパフォーマンスモニタ装置がある。このパフォーマンスモニタ装置は、それぞれのイベント毎にカウンタを用意し、それらのイベントが発生するたびに対応するカウンタ値をインクリメントし、指定されたインターバル期間が終了した時点でこれらのカウンタ値をトレースバッファと呼ばれる内部バッファに保存するようになされている。
これによりトレースバッファには、指定された期間毎の各カウンタ値が保存されることになり、期間毎のイベントの発生状況を把握し得るようになされている。
また、プロセッサの性能低下に及ぼす影響が大きなイベントの統計データ及びその他の統計データとを別々のメモリに格納する方法も考えられている(特許文献1参照)。
特開2001−142747
ところで、従来のパフォーマンスモニタ装置においては、プロセッサにおいて発生する膨大な数のイベントの中から、予め決められた特定のイベントのみを選択してそれらの発生回数をカウントすることにより、カウンタの数を少なくしている。
すなわち、図11に示すように、従来のパフォーマンスモニタ装置においては、予め決められたイベントに対応する例えば3つのカウンタC1〜C3を用意し、このカウンタC1〜C3に対応付けられたイベントの発生回数を各々のカウンタによってカウントする。これにより、カウンタC1に対応付けられたイベントが発生すると、このカウンタC1をインクリメントし、またカウンタC2に対応付けられたイベントが発生すると、このカウンタC2をインクリメントし、またカウンタC3に対応付けられたイベントが発生すると、このカウンタC3をインクリメントする。
これらのカウント動作は、1サイクルごとに繰り返され、予め決められた期間(インターバル期間INTと呼ぶ)が経過した時点で、各カウンタのカウンタ値をトレースバッファに保存する。
すなわち図12に示すように、インターバル期間INTを7サイクルとし、第1のカウンタC1(図11)に対応したイベントを第1のイベントEVT1、第2のカウンタC2(図11)に対応したイベントを第2のイベントEVT2、第3のカウンタC3(図11)に対応したイベントを第3のイベントEVT3として、例えば、第1サイクル及び第2サイクルにおいて、第2のイベントEVT2が発生し、第3サイクルにおいて、第1のイベントEVT1及び第2のイベントEVT2が発生し、第4サイクル及び第5サイクルにおいていずれのイベントも発生せず、第6サイクル及び第7において、第3のイベントEVT3が発生した場合、図12に示したインターバル期間が経過した時点では、カウンタC1のカウンタ値は「1」、カウンタC2のカウンタ値は「3」、カウンタC3のカウンタ値は「2」となる。
これらのカウンタ値は、1インターバル期間INTが経過した時点で、トレースバッファに保存される。そして、各カウンタC1〜C3のカウンタ値がトレースバッファに保存されると、各カウンタC1〜C3のカウンタ値をリセットし、次のインターバル期間のカウント動作を開始する。
かくして、トレースバッファには、各カウンタC1〜C3の各インターバル期間におけるカウンタ値が順次保存されていく。
また、パフォーマンスモニタ装置においては、各サイクル毎にPC(プログラムカウント)値を測定するようになされており、1インターバル期間INTのいずれか1サイクル(例えば最後の1サイクル)に測定されたPC値をそのインターバル期間INTの各カウンタ値に対応付けてトレースバッファに保存する。
図12に示すように、トレースバッファに保存されるデータの例として、例えば、第1のインターバル期間INT1におけるカウンタC1〜C2の各カウンタ値CXT1(=「1」)、CXT2(=「3」)、CXT3(=「2」)と、第1のインターバル期間INT1の最後のサイクルにおけるPC値(0x87)が保存され、また、第2のインターバル期間INT2におけるカウンタC1〜C2の各カウンタ値CXT1(=「4」)、CXT2(=「6」)、CXT3(=「1」)と、第2のインターバル期間INT2の最後のサイクルにおけるPC値(0x22)が保存され、以下、連続する各インターバル期間におけるこれらのデータが順次保存される。
このように、トレースバッファには、各インターバル期間INT1、INT2、…、INTnに発生した特定のイベント毎の発生回数と、各インターバル期間INT1、INT2、…、INTnの最後に測定されたPC値とが対応付けられて時系列に保存される。このようなデータをトレースデータと呼ぶ。
このようにしてパフォーマンスモニタ装置に保存されたトレースデータを用いて、ソフトウエアのチューニングを行うようになされている。
しかしながら、かかるトレースデータにおいては、インターバル期間INTの各サイクルにおけるイベント発生回数をカウンタ値CXT1〜CXT3として保存しているのに対して、これに対応付けられたPC値として、該1インターバル期間のいずれか1サイクルにおけるPC値が保存されることにより、カウンタ値CXT1〜CXT3は、これに対応付けられたPC値で示されるプログラム領域実行時の性能特性を示していることにはならない。従って、このようなトレースデータをもとにソフトウエアのチューニングを行っても、十分な性能改善効果が得られない場合があった。
かかる課題を解決するための一つの方策として、インターバル期間INTを短くすることで個々のPC値とカウンタ値との対応の精度を上げることができると考えられる。しかしながら、インターバル期間INTを短くすると、トレースデータを保存するためのバッファ領域を大きくしなければならず、また、外部メモリにトレースデータを保存する構成においては、外部メモリ領域を圧迫すると共に外部メモリにトレースデータを書き出す頻度が上がってメモリバンド幅が圧迫される問題があった。
このような技術的課題を解決するためになされた本発明の目的は、イベントの発生回数とPC値との対応の精度を簡易な構成により向上させることができるパフォーマンスモニタ装置、データ収集方法及びそのプログラムを提供することである。
本発明の実施の形態に係る特徴は、パフォーマンスモニタ装置において、プログラムが格納されている記憶部上の実行した命令のアドレスを示すアドレス情報とプログラムを実行することにより発生するイベントの発生を示すイベント発生情報とをそれぞれプロセッサの動作サイクル毎に時系列に入力する入力手段と、入力されたアドレス情報の属するアドレス領域を決定するアドレスマスク手段と、アドレス情報及びイベント発生情報を入力する度に、入力したアドレス情報が属するアドレス領域毎の頻度カウンタを更新することにより、アドレス領域毎のプログラムの実行頻度をカウントする実行頻度カウント手段と、実行頻度のカウント結果を保持する実行頻度保持テーブルと、アドレス情報及びイベント発生情報を入力する度に、入力したアドレス情報に対応する実行頻度が上位所定順位までの場合に、入力したアドレス情報に対応するイベント発生情報をカウントするイベント発生情報カウント手段と、イベント発生情報のカウント結果を保持する保持手段と、所定の期間毎にカウントされたプログラムの実行頻度が最も高かったアドレス領域に対応する、所定の期間毎にカウントされたイベント発生情報のカウント結果を含む情報を、所定の期間毎に記憶する記憶手段とを備えることである。
また本発明の実施の形態に係る特徴は、データ収集装置において、プログラムが格納されている記憶部上の実行した命令のアドレスを示すアドレス情報とプログラムを実行することにより発生するイベントの発生を示すイベント発生情報とをそれぞれプロセッサの動作サイクル毎に時系列に入力する入力ステップと、入力されたアドレス情報の属するアドレス領域を決定するアドレス領域決定ステップと、アドレス情報及びイベント発生情報を入力する度に、入力したアドレス情報が属するアドレス領域毎の頻度カウンタを更新することにより、アドレス領域毎のプログラムの実行頻度をカウントする実行頻度カウントステップと、アドレス情報及びイベント発生情報を入力する度に、入力したアドレス情報に対応する実行頻度が上位所定順位までの場合に、入力したアドレス情報に対応するイベント発生情報をカウントするイベント発生情報カウントステップと、所定の期間毎にカウントされたプログラムの実行頻度が最も高かったアドレス領域に対応する、所定の期間毎にカウントされたイベント発生情報のカウント結果を含む情報を、所定の期間毎に記憶する記憶ステップとを備えることである。
また本発明の実施の形態に係る特徴は、コンピュータに実行させるためのプログラムにおいて、プログラムが格納されている記憶部上の実行した命令のアドレスを示すアドレス情報とプログラムを実行することにより発生するイベントの発生を示すイベント発生情報とをそれぞれプロセッサの動作サイクル毎に時系列に入力する入力ステップと、入力されたアドレス情報の属するアドレス領域を決定するアドレス領域決定ステップと、アドレス情報及びイベント発生情報を入力する度に、入力したアドレス情報が属するアドレス領域毎の頻度カウンタを更新することにより、アドレス領域毎のプログラムの実行頻度をカウントする実行頻度カウントステップと、アドレス情報及びイベント発生情報を入力する度に、入力したアドレス情報に対応する実行頻度が上位所定順位までの場合に、入力したアドレス情報に対応するイベント発生情報をカウントするイベント発生情報カウントステップと、所定の期間毎にカウントされたプログラムの実行頻度が最も高かったアドレス領域に対応する、所定の期間毎にカウントされたイベント発生情報のカウント結果を含む情報を、所定の期間毎に記憶する記憶ステップとを備えることである。
本発明によれば、イベントの発生回数とPC値との対応の精度を簡易な構成により向上させることができるパフォーマンスモニタ装置、データ収集方法及びそのプログラムを提供することができる。
以下、本発明の実施の形態について図面を参照して詳細に説明する。以下の図面の記載において、同一の部分には同一の符号を付し、重複する記載は省略する。また、図面は模式的なものであり、各部の寸法等は現実のものと異なる。
(第1の実施の形態)
図1に示すように、本発明の第1の実施の形態に係るパフォーマンスモニタ装置20を有するプロセッサ10においては、バス11、プロセッサコア12、2次キャッシュ13等において性能測定用のイベントI1〜I5等が用意されており、イベントセレクタ14によってこれらのイベントI1〜I5等の中から、予め決められたイベントを選択する。
イベントとは、例えば、分岐予測が成功したか否か、必要なデータが2次キャッシュに格納されていたか否か、メモリへのアクセス回数、命令実行数等の情報を意味する。プロセッサ10では、これらのイベントが発生する毎にそのイベントを表す情報をイベントセレクタ14に出力するようになされている。
イベントセレクタ14は、予め決められたイベント(この実施の形態の場合、イベントEVT1〜EVT3)について、それらの発生の有無を表す情報を1サイクル毎にイベントバス15を介してパフォーマンスモニタ装置20に供給する。この情報は、例えば、イベントEVT1〜EVT3に対してそれぞれ1ビットが割り当てられ、発生したイベントに対応するビット(イベントビット)が「1」であり、発生していないイベントに対するイベントビットが「0」である情報である。すなわち、各イベントEVT1〜EVT3に対して、それぞれ1ビットが割り当てられた情報である。また、イベントセレクタ14は、1サイクル毎にPC(プログラムカウンタ)値をプロセッサコア12から受け取り、これをイベントバスの一部を利用してパフォーマンスモニタ装置20に供給する。このPC値は、実行されるプログラムが格納されている主記憶装置上のアドレスを指すレジスタの値である。
図2に示すように、パフォーマンスモニタ装置20は、パフォーマンスカウンタ装置30、インターバルタイマ22、トレースバッファ40及び制御部24を備える。
パフォーマンスカウンタ装置30は、イベントバス15を介して入力されるイベントの発生の有無を表す情報及びPC値を受け取り、これらの情報に基づいて、プログラムの実行頻度が高いPC値領域に対応して入力されるイベントEVT1〜EVT3の発生回数(パフォーマンスカウンタ値)をインターバル期間毎にカウントする。
インターバルタイマ22は、予め決められたサイクル数(例えば5000サイクル)を計測し、そのサイクル数に達した場合に、その結果を制御部24に出力する。制御部24は、インターバルタイマ22が予め決められたサイクル数に達する毎に、パフォーマンスカウンタ装置30の後述する所定のパフォーマンスカウンタ値をトレースバッファ40に出力する。また、インターバルタイマ22は、予め決められたサイクル数に達すると、パフォーマンスカウンタ装置30を初期化する。
トレースバッファ40は、パフォーマンスカウンタ装置30に保持されているパフォーマンスカウンタ値(イベントEVT1〜EVT3の発生回数)を1インターバル期間が終了する毎に保存する。
図3に示すように、パフォーマンスカウンタ装置30は、アドレスマスク31と、アドレスカウンタ装置32と、パフォーマンスカウンタ値保持部34とを備える。イベントバス15を介して入力される情報のうち、各イベントEVT1〜EVT3の発生状況を表す情報は、1サイクル毎にパフォーマンスカウンタ値保持部34に入力され、また、PC値は、1サイクル毎にアドレスマスク31に入力される。
アドレスマスク31は、PC値によって表されるアドレスを、所定のアドレス領域毎(例えば128バイト毎)に分類する。すなわち、この実施の形態の場合、1つの命令は4バイトで表されていることにより、PC値は4バイト毎のデータとなる。アドレスマスク31では、入力されたPC値とマスク値「0xffffff80」とを論理積演算することにより、入力されたPC値を128バイト(32命令)ごとのアドレス領域に分類する。但し、本発明においては、128バイト毎に限られるものではない。
アドレスマスク31においてマスクされたPC値は、アドレスカウンタ装置32に供給される。アドレスカウンタ装置32は、例えば128バイト毎の所定のアドレス領域AR1、AR2、…、ARxに対応した頻度カウンタC11、C12、…、Cxを備え、アドレスマスク31から供給されるマスクされたPC値の領域(アドレスが連続した所定領域)に対応した頻度カウンタをインクリメントする。これにより、頻度カウンタのカウント値は、対応するアドレス領域のプログラムの実行頻度を表すことになる。このように、所定のアドレス領域にPC値を分類して対応する頻度カウンタを更新することにより、全アドレスに対して頻度カウンタを設ける場合に比べて、テーブルの構成が大型化することを回避することができる。
かくして、アドレスカウンタ装置32においては、各アドレス領域AR1、AR2、…、ARx毎のプログラムの実行頻度が対応する頻度カウンタC11、C12、…、Cxのカウンタ値として更新されていく。
なお、アドレスカウンタ装置32は、アドレスカウンタ管理装置33によって管理される。
一方、パフォーマンスカウンタ値保持部34は、1サイクル毎に、各イベントEVT1〜EVT3の発生の有無を表す情報をイベントバス15から入力する演算装置35と、n個のレジスタ36a〜36nからなるカウンタデータアレイ36と、1サイクル毎に入力される各イベントEVT1〜EVT3の発生の有無を表す情報を全てカウントする全領域カウンタ37と、カウンタデータアレイ36を管理するカウンタデータアレイ管理装置38とを備える。
カウンタデータアレイ36のn個のレジスタ36a〜36nは、アドレスカウンタ装置32の各アドレス領域AR1、AR2、…、ARxのうち各々に対応する頻度カウンタC11〜Cxのカウンタ値が最大のものから上位n番目のものまでのアドレス領域に対応付けられる。すなわち、アドレスカウンタ装置32のアドレス領域AR1、AR2、…、ARxごとのテーブル(ポインタフィールド)32aは、カウンタデータアレイ36の各レジスタ36a〜36nのエントリを示すポインタ値(「1」〜「n」)を保持する。アドレスカウンタ装置32は、イベントバス15から入力がある度にこのポインタ値をカウンタデータアレイ36に送信する。但し、頻度カウンタC11〜Cxのうちカウント値が最大値から上位n番目のものに対応したアドレス領域にのみポインタ値が有効とされ、それ以外のアドレス領域のポインタ値としては、該当するポインタがないことを示す予め決められた値(例えばオール「1」)等を持つようになされている。
これにより、イベントバス15から入力がある度に、アドレスマスク31によってマスクされた結果(アドレス領域AR1〜ARxのいずれか)に対応した頻度カウンタ(カウンタC11〜Cxのいずれか)がインクリメントされると共に、そのアドレス領域に対応したポインタ値がカウンタデータアレイ36に送信される。
例えば図3において、イベントバス15からの入力によりアドレス領域AR1に対応した頻度カウンタC11がインクリメントされると、このアドレス領域AR1に対応したポインタ値「0」がアドレスカウンタ管理装置33からパフォーマンスカウンタ値保持部34のカウンタデータアレイ管理装置38に送信される。
カウンタデータアレイ管理装置38では、アドレスカウンタ装置32から送信されたポインタ値に対応するカウンタデータアレイ36のエントリ(レジスタ36a〜36nのいずれか)に対して、イベントバス15の入力を用いた更新作業を演算装置35に実行させる。例えば、アドレスカウンタ装置32からポインタ値「0」が送信されると、演算装置35は、カウンタデータアレイ36の各レジスタ36a〜36nのうち、ポインタ「0」に対応した第1のレジスタ36aに保持されているカウンタ値(この実施の形態の場合、イベントEVT1〜EVT3毎のカウンタ値)を、イベントバス15の入力(各イベントEVT1〜EVT3の発生の有無を表す情報)に基づいて更新する。例えば、イベントバス15の入力として、イベントEVT1のみが発生している情報を受け取ると、演算装置35は、レジスタ36aのイベントEVT1のカウンタ値のみをインクリメントする。カウンタデータアレイ36に更新保持されたこれらのカウンタ値をパフォーマンスカウンタ値と呼ぶ。
このように、カウンタデータアレイ36では、アドレスカウンタ装置32のカウンタ値が上位n個のアドレス領域毎のイベント発生状況が保持される。因みに、アドレスカウンタ装置32の頻度カウンタ(C11〜Cxのいずれか)がインクリメントされた場合、そのアドレス領域(AR1〜ARxのいずれか)に対応するポインタ値が無効を示す値(例えばオール1)であった場合には、該当するレジスタがカウンタデータアレイ36にないことを意味しており、この無効を表すポインタを受け取った演算装置35は、カウンタデータアレイ36の更新を行わないようになされている。また、演算装置35は、イベントバス15から入力がある度に、ポインタ値とは無関係に、その入力に基づいて全領域カウンタ37を必ず更新する。これにより、全領域カウンタ37においては、イベントEVT1〜EVT3のうち、1サイクル毎に発生したイベントについて対応するカウンタ値がインクリメントされることになる。
インターバルタイマ22は、1インターバル期間の経過を計測すると、その計測結果をパフォーマンスカウンタ装置30のアドレスカウンタ管理装置33及びカウンタデータアレイ管理装置38に送信する。アドレスカウンタ管理装置33は、この計測結果を受けると、アドレスカウンタ装置32の各アドレス領域AR1〜ARxの頻度カウンタC11〜Cxのカウンタ値のうち、最も大きなカウンタ値(最も高い頻度)となっている頻度カウンタを判断し、この頻度カウンタに対応するアドレス領域(プログラムの実行頻度が最も高かったアドレス領域)に対応するポインタ値をカウンタデータアレイ管理装置38に送信する。カウンタデータアレイ管理装置38は、アドレスカウンタ管理装置33から受け取ったポインタ値に基づいて、該ポインタ値に対応するカウンタデータアレイ36のエントリ(レジスタ36a〜36nのいずれか)に更新保持されている各イベントEVT1〜EVT3の発生状況を表す情報(パフォーマンスカウンタ値)を読み出して、これに対応するアドレスカウンタ装置32のアドレス領域(AR1〜ARxのいずれか)及び対応する頻度カウンタ(C11〜Cxのいずれか)のカウンタ値(頻度情報)と共にトレースバッファ40に出力する。
トレースバッファ40は、1インターバル期間が経過する毎に、パフォーマンスカウンタ装置30から出力されるこれらの情報を格納していく。これにより、トレースバッファ40には、各インターバル期間毎のイベントの発生状況のうち、プログラムの実行頻度が高いアドレス領域を表す情報とそれに対応したイベント発生状況とが順次保存されていく。かくして、トレースバッファ40を確認することにより、実行頻度の高いプログラムのアドレス領域を特定することができると共に、プログラムの実行頻度が高いアドレス領域のパフォーマンスカウンタ値(カウンタデータアレイ36に保存されたイベント毎の発生頻度)を把握することができる。
ここで、インターバルタイマ22が1インターバル期間の経過を計測して、アドレスカウンタ管理装置33によってアドレスカウンタ装置32の各アドレス領域AR1〜ARxのうち、プログラムの実行頻度が最も高かったアドレス領域を選択してその選択されたアドレス領域に対応するポインタ値をカウンタデータアレイ管理装置38に送信する場合において、該ポインタ値が無効(例えばオール1)となっている場合、このことは、カウンタデータアレイ36に対応するレジスタが設定されていないことを意味しており、この場合、イベントバス15からの入力(各イベントEVT1〜EVT3の発生の有無を表す情報)に基づくカウンタデータアレイ36の更新は行われない。但し、ポインタ値が無効である場合においても、次の条件に合致する場合にはカウンタデータアレイ36の更新を行う。
すなわち、第1に、未使用のエントリがカウンタデータアレイ36に存在する場合、このことは、カウンタデータアレイ36のすべてのレジスタ36a〜36nが使用されてない状態であることを意味しており、カウンタデータアレイ管理装置38は、未使用のエントリがある旨をアドレスカウンタ管理装置33に通知することにより、アドレスカウンタ管理装置33において、未使用のエントリに対するポインタを無効であったポインタ値に代えて登録すると共に、対応するエントリの更新を行う。
また、第2に、アドレスカウンタ装置32においてプログラムの実行頻度(カウンタ値)が上位n番目のアドレス領域の該実行頻度よりも、入力されたアドレス領域の実行頻度が高くなった場合、このことは、それまで実行頻度(カウンタ値)がn番目であったアドレス領域は、n番目よりも順位が低くなったことを意味しており、アドレスカウンタ管理装置33は、それまでn番目であったアドレス領域に対応するポインタ値を無効とすると共に、入力されたアドレス領域に対応するポインタ値(無効を示すポインタ値)を、それまでn番目であったアドレス領域に対応するポインタ値に変更する。そして、アドレスカウンタ管理装置33は、このポインタ値をカウンタデータアレイ管理装置38に送信することにより、カウンタデータアレイ管理装置38は、このポインタ値によって指定されるカウンタデータアレイ36のエントリ(レジスタ)に初期値を設定する。この初期値としては、全領域カウンタ37のカウンタ値(各イベントEVT1〜EVT3毎のカウンタ値)に、新たにn番目となったアドレス領域の実行割合を乗じた値とする。アドレス領域の実行割合とは、新たにn番目となったアドレス領域に対応する頻度カウンタ(C11〜Cxのいずれか)のカウンタ値の、全頻度カウンタ(C11〜Cx)の合計値に対する割合である。このようなカウンタデータアレイ36の入れ替えが発生した場合、全領域カウンタ37及びアドレス領域の実行割合から得られる予測値を初期値として更新を続けることになるが、1インターバル期間が経過した後は、全ての値が初期化されるため、これによる予測値を用いることによる誤差の影響は最小限に抑えることができる。
図4は、パフォーマンスモニタ装置30における処理手順を示す。なお、イベントバス15からの入力は毎サイクル行われることにより、この処理手順は、毎サイクル開始され、パイプライン的に処理されるものである。
この処理手順において、パフォーマンスモニタ装置30は、ステップST1において、毎サイクル発生するイベントバス入力があると、ステップST2に移り、イベントバス15に含まれるPC値のアドレス領域を、アドレスマスク31を用いて決定する。
そして、パフォーマンスモニタ装置30は、ステップST3に移り、対応するアドレス領域の頻度カウンタ(C11〜Cxのいずれか)を更新する。そして、パフォーマンスモニタ装置30は、ステップST4に移って、上述のステップST3において更新した頻度カウンタのカウンタ値が、上位n番目に入っているか否かをアドレスカウンタ管理装置33によって判断する。
このステップST4において否定結果が得られると、このことは、更新した頻度カウンタのカウント値が上位n番目に入ってなく、対応するカウンタデータアレイ36のエントリが設定されていないことを意味しており、パフォーマンスモニタ装置30は、ステップST4からステップST11に移って、全領域カウンタ37を、イベントバス入力に基づいて更新する。
これに対して、ステップST4において肯定結果が得られると、このことは、更新した頻度カウンタのカウント値が上位n番目に入っており、対応するカウンタデータアレイ36のエントリが設定されていることを意味しており、パフォーマンスモニタ装置30は、ステップST4からステップST5に移って、更新した頻度カウンタに対応するアドレス領域のポインタとして無効以外の値(「1」〜「n」のいずれか)がポインタフィールド32aに設定されているか否かをアドレスカウンタ管理装置33によって判断する。
このステップST5において肯定結果が得られると、このことは、既にカウンタデータアレイ36にエントリ(レジスタ)が設定されていること(前回の更新において既に該アドレス領域は上位n番目に入っていたこと)を意味しており、パフォーマンスモニタ装置30は、ステップST5からステップST10に移って、対応するパフォーマンスカウンタ(パフォーマンスデータアレイ36のレジスタ)のパフォーマンスカウンタ値を更新する。
これに対してステップST5において否定結果が得られると、このことは、カウンタデータアレイ36にエントリが設定されていないこと(前回の更新時には上位n番目に入っていなかったこと)を意味しており、パフォーマンスモニタ装置30は、ステップST5からステップST6に移って、アドレスカウンタ装置33からカウンタデータアレイ管理装置38に対して、カウンタデータアレイ36に未割り当てのエントリ(レジスタ)が存在するか否かを問い合わせる。
このステップST6において、肯定結果が得られると、未割り当てのエントリを利用することができるので、パフォーマンスモニタ装置30は、ステップST6からステップST7に移って、カウンタデータアレイ管理装置38によってカウンタデータアレイ36の未割り当てのエントリ(レジスタ)の一つを上述のステップST2において決定されたアドレス領域に割り当て、アドレスカウンタ管理装置33に通知する。アドレスカウンタ管理装置33は、ポインタフィールド32aにこのエントリへのポインタを登録した後、ステップST10に移る。
これに対してステップST6において、否定結果が得られると、このことは、カウンタデータアレイ36に未割り当てのエントリ(レジスタ)が存在しないことを意味している。すなわち、頻度カウンタを更新したアドレス領域が前回上位n番目に入っていなかったことを意味しており、この場合、他のアドレス領域が利用していたエントリをこのアドレス領域用に再割り当てする必要があるため、パフォーマンスモニタ装置30は、ステップST6からステップST8に移って、カウンタデータアレイ管理装置38によって、対応するパフォーマンスカウンタ(カウンタデータアレイ36のレジスタ)をクリアする。すなわち、上述のステップST2において決定されたアドレス領域が頻度上位n番目になったために、カウンタデータアレイ管理装置38は、上位n+1番目に降格することとなったアドレス領域が所有していたカウンタデータアレイ36のエントリをクリアする。
そして、パフォーマンスカウンタ装置30は、ステップST9に移って、カウンタデータアレイ管理装置38によって、対応するパフォーマンスカウンタ(カウンタデータアレイ36のレジスタ)を初期化する。すなわち、カウンタデータアレイ管理装置38は、全領域カウンタ37のカウンタ値(各イベントEVT1〜EVT3毎のカウンタ値)に、新たにn番目となったアドレス領域の実行割合を乗じた値を初期値としてカウンタデータアレイ36のパフォーマンスカウンタを初期化する。
そして、パフォーマンスカウンタ装置30は、ステップST10に移って、演算装置35によって、上述のステップST2によって決定されたアドレス領域に対応するパフォーマンスカウンタ(パフォーマンスデータアレイ36のレジスタ)のパフォーマンスカウンタ値を更新する。
また、ステップST11において、パフォーマンスカウンタ装置30は、演算装置35により、全領域カウンタ37の全領域カウンタ値を、イベントバス15から入力された各イベントEVT1〜EVT3の発生状況を表す情報に基づいて更新する。
このように、パフォーマンスカウンタ装置30においては、イベントバス15によって入力された各イベントEVT1〜EVT3の発生状況を表す情報によって、アドレスカウンタ装置32のイベント発生頻度が上位n番目までのアドレス領域に対応したカウンタデータアレイ36のレジスタ(36a〜36nのいずれか)のパフォーマンスカウンタ値を更新する。
以上説明したように、本実施の形態に係るパフォーマンスカウンタ装置30においては、アドレス領域毎にカウンタデータアレイ36のエントリを設け、これらの情報をトレースバッファ40に保存するようにしたことにより、カウンタデータアレイ36のパフォーマンスカウンタ値とアドレス領域との関連性を持たせた状態でトレースバッファ40にデータを保存することができる。すなわち、ある連続したアドレスの範囲毎にカウンタデータアレイ36のエントリを設けることにより、カウンタデータアレイ36のパフォーマンスカウンタ値とアドレスとの関連性を保つことが可能となる。従って、例えば図12に示したように各イベントEVT1〜EVT3の発生回数に対してPC値がかけ離れた値となることを防止することができる。
また、入力されたPC値のアドレス領域をアドレスマスク31によって決定することにより、一定のアドレス範囲に対してカウンタデータアレイ36のエントリを設けることができ、個々のアドレス毎にエントリを設ける場合に比べて、カウンタデータアレイ36の構成が大型化することを回避することができる。
また、プログラムの実行頻度が上位n番目までのアドレス領域に対応したカウンタデータアレイ36のエントリのみを設けるようにしたことにより、1インターバル期間が経過した時点で頻度カウンタのカウンタ値が最も高くなる可能性のあるアドレス領域に対応したエントリだけを設けることでカウンタデータアレイ36の構成が大型化することを避けることができる。また、この場合、上位n番目に入っていなかったアドレス領域におけるプログラムの実行頻度が上位n番目に入った場合には、全領域カウンタ37を用いて、エントリの入れ替えを行うこともできる。
また、トレースバッファ40に記録されるデータは、1インターバル期間毎にプログラムの実行頻度が最も高かったアドレス領域に対応するパフォーマンスカウンタ値であり、従来に比べてトレースバッファ40に記録されるデータ量が増加することを回避しつつ、保存されるパフォーマンスカウンタ値とアドレス領域との対応の精度を向上させることができる。これにより、パフォーマンスカウンタ値(イベントの発生回数)とアドレス領域との対応の精度を簡易な構成により向上させることができる
(第2の実施の形態)
上述の第1の実施の形態においては、アドレスマスク31におけるアドレスマスク値を固定とする場合について述べたが、本発明はこれに限られるものではなく、動的に変化させるようにしてもよい。
すなわち、上述の第1の実施の形態と同様にして、カウンタデータアレイ36のパフォーマンスカウンタ値を更新して行き、カウンタデータアレイ36のエントリ数に不足が生じた時点で、アドレスマスク31で表される範囲を2倍(又は2^m倍)にし、それに対応するようにアドレスカウンタ装置32のアドレスカウンタテーブル(アドレス領域、頻度カウンタ、ポインタフィールド32a)とカウンタデータアレイ36の各エントリを更新する。これにより、連続したアドレス領域は、新たに一つのアドレス領域として融合され、より多くのアドレス領域に対応したパフォーマンスカウンタ値(カウンタデータアレイ36に保存される各イベントEVT1〜EVT3毎の発生回数)を保存することができる。
この手法により、狭いアドレス範囲の命令のみで実行されているようなプログラムに関しては、細かいアドレス領域毎にパフォーマンスデータ(各イベントEVT1〜EVT3毎の発生回数)をカウントし、広いアドレス範囲の命令を実行しているようなプログラムに関しては、大きなアドレス領域毎にパフォーマンスデータをカウントすることが自動的に行うことができるようになる。さらに、カウンタデータアレイ36の入れ替えによるパフォーマンスカウンタ値の損失も防ぐことができる。
図5及び図6は、本実施の形態に係るパフォーマンスカウンタ装置30の処理手順を示す。なお、図5において、図4と同一の処理ステップには同一符号を付して、重複した説明は省略する。
図5に示す処理手順では、図4に示した処理手順のステップST2及びステップST3がステップST22に置き換えられ、また、全てのアドレス領域がカウントの対象となるため、図4に示したステップST4を削除しており、また、カウンタデータアレイ36のエントリの入れ替えがなくなるため、図4に示したステップST8及びステップST9を削除している。また、図5においては、後述するステップST22において、カウンタデータアレイ36のエントリ数の不足に対応してアドレスマスク31で表される範囲を広く変更し、この変更されたマスク値に応じてアドレスカウンタ装置32のアドレスカウンタテーブル(アドレス領域、頻度カウンタ、ポインタフィールド32a)とカウンタデータアレイ36の各エントリを更新しているので、このステップST22の実行により、カウンタデータアレイ36に未割り当てカウンタが存在していることが保証されることになる。従って、本実施の形態においては、図4に示したステップST6を省略し、ステップST5において否定結果が得られた場合に、ステップST5からステップST7に移るようにしている。
図6は、図5に示すステップS22の詳細を示し、パフォーマンスカウンタ装置30は、ステップST31において、イベントバス15に含まれるPC値に対してアドレスマスク31を適用する。これにより、PC値が属するべきアドレス領域が決定される。
そしてパフォーマンスカウンタ装置30は、ステップST32に移って、カウンタデータアレイ36のエントリ数が十分であるか否かを判断する。すなわち、アドレスカウンタ管理装置33は、カウンタデータアレイ管理装置38に対して、ステップST31において決定されたアドレス領域を記録するためのエントリがカウンタデータアレイ36に存在するか否かを問い合わせる。
このステップST32において肯定結果が得られると、このことは、既にこのアドレス領域に対応するエントリが存在しているか、又は、空きエントリが存在していることを意味しており、パフォーマンスカウンタ装置30は、ステップST32からステップST35に移り、アドレスカウンタ装置32における対応するアドレス領域の頻度カウンタを更新する。
これに対してステップST32において否定結果が得られると、このことは、カウンタデータアレイ36には、このアドレス領域に対応するエントリがなく、しかも空きエントリもないことを意味しており、パフォーマンスカウンタ装置30は、ステップST32からステップST33に移って、保持していたアドレスマスク31の値を2倍に変更する。
そして、パフォーマンスカウンタ装置30は、ステップST34において、ステップST33において変更されたマスク値に応じて、アドレスカウンタ装置32のテーブル(アドレス領域、頻度カウンタ、ポインタフィールド32a)及びカウンタデータアレイ36を更新する。すなわち、アドレスカウンタ管理装置33とカウンタデータアレイ管理装置38が、新しいアドレスマスク31の値に対応するように、それぞれアドレスカウンタ装置32とカウンタデータアレイ36の内容を更新する。すなわち、アドレス領域の範囲が2倍になったことによって同じアドレス領域に属することになったアドレス領域のエントリ同士を一つにマージする。そして、入力されていたPC値に対して上述したステップST31に戻って同様の処理を繰り返す。
このように本実施の形態においては、カウンタデータアレイ36にエントリの不足が生じた場合に、アドレスマスク31で表される範囲を広げることにより、カウンタデータアレイ36を増やすことなく、全てのアドレス領域のパフォーマンスカウンタ値を保存することができる。
かくして以上の構成によれば、パフォーマンスカウンタ値とアドレス領域との対応の精度を簡易な構成により向上させることができる。
(第3の実施の形態)
上述の第1の実施の形態においては、アドレスカウンタ装置32に共通のアドレスマスク31を用いる場合について述べたが、本発明はこれに限られるものではなく、アドレスカウンタ装置32のエントリ毎にアドレスマスク31を用意するようにしてもよい。
すなわち、上述の第1の実施の形態と同様にして、カウンタデータアレイ36のパフォーマンスカウンタ値を更新して行き、カウンタデータアレイ36のエントリ数に不足が生じた時点で、カウンタデータアレイ36にエントリを持つアドレス領域のうち、隣接していて、かつ、合計実行頻度が最も小さいペアを見つける(又は予め見つけておく)。そして、これらのペアそれぞれが属するアドレス領域を一つのアドレス領域として融合することにより、カウンタデータアレイ36に空きエントリを作り、これを新しいアドレス領域のパフォーマンスデータをカウントするためのエントリとする。
これにより、カウンタデータアレイ36のエントリ数に不足が生じた場合に、比較的実行頻度が低いエントリのみを融合し、頻度の高かったエントリのパフォーマンスカウンタ値の精度を保ったままエントリ数の不足を解消することができる。
図7及び図8は、本実施の形態に係るパフォーマンスカウンタ装置30の処理手順を示す。なお、図7において、図4と同一の処理ステップには同一符号を付して、重複した説明は省略する。
図7に示す処理手順では、図4に示した処理手順のステップST2及びステップST3がステップST42に置き換えられ、また、全てのアドレス領域がカウントの対象となるため、図4に示したステップST4を削除しており、また、カウンタデータアレイ36のエントリの入れ替えがなくなるため、図4に示したステップST8及びステップST9を削除している。また、図7においては、後述するステップST42において、カウンタデータアレイ36のエントリ数の不足に対応して、比較的実行頻度が低いエントリを融合するようにしており、このステップST42の処理により、カウンタデータアレイ36に未割り当てカウンタが存在していることが保証されることになる。従って、本実施の形態においては、図4に示したステップST6を省略し、ステップST5において否定結果が得られた場合に、ステップST5からステップST7に移るようにしている。
図8は、図7に示すステップST42の詳細を示し、パフォーマンスカウンタ装置30は、ステップST51において、イベントバス15に含まれるPC値に対して対応するアドレス領域が既に登録されているか否かについて、アドレスカウンタ装置32のテーブルをサーチする。
そしてパフォーマンスカウンタ装置30は、ステップST52に移って、カウンタデータアレイ36のエントリ数が十分であるか否かを判断する。すなわち、アドレスカウンタ管理装置33は、カウンタデータアレイ管理装置38に対して、このアドレス領域を記録するためのエントリがカウンタデータアレイ36に存在するか否かを問い合わせる。
このステップST52において肯定結果が得られると、このことは、既にこのアドレス領域に対応するエントリが存在しているか、又は、空きエントリが存在していることを意味しており、パフォーマンスカウンタ装置30は、ステップST52からステップST54に移り、アドレスカウンタ装置32における対応するアドレス領域の頻度カウンタを更新する。
これに対してステップST52において否定結果が得られると、このことは、カウンタデータアレイ36には、このアドレス領域に対応するエントリがなく、しかも空きエントリもないことを意味しており、パフォーマンスカウンタ装置30は、ステップST52からステップST53に移って、アドレスカウンタ装置32のテーブル及びカウンタデータアレイ36をマージする。すなわち、アドレスカウンタ管理装置33が、隣接していて、かつ、合計実行頻度が最も小さい二つのアドレス領域を見つけ、これら二つを一つのアドレス領域としてアドレスカウンタ装置32の対応するエントリをマージする。さらに、カウンタデータアレイ管理装置38に同様の処理を行うように要求し、カウンタデータアレイ36の対応するエントリについてもマージ作業を実行する。これにより、必ず1つの空きエントリが発生するので、マージ作業終了後、上述のステップST51に戻って同様の処理を繰り返す。
このように本実施の形態においては、カウンタデータアレイ36にエントリの不足が生じた場合に、プログラムの実行頻度が比較的低いエントリのみを融合することにより、プログラムの実行頻度が高かったエントリのパフォーマンスカウンタ値の精度を保ったまま、エントリ数の不足を解消することができる。
かくして以上の構成によれば、パフォーマンスカウンタ値とアドレス領域との対応の精度を簡易な構成により向上させることができる。
(第4の実施の形態)
上述の第1の実施の形態においては、アドレスカウンタ装置32に共通のアドレスマスク31を用いる場合について述べたが、本発明はこれに限られるものではなく、アドレスカウンタ装置32のエントリ毎にアドレスマスク31を用意するようにしてもよい。
すなわち、上述の第1の実施の形態と同様にして、カウンタデータアレイ36のパフォーマンスカウンタ値を更新して行き、カウンタデータアレイ36のエントリ数に不足が生じた時点で、カウンタデータアレイ36にエントリを持つアドレス領域のうち、隣接していて、かつ、お互いの実行頻度が最も近いペアを見つける(又は予め見つけておく)。そして、これらのペアそれぞれが属するアドレス領域を一つのアドレス領域として融合することにより、カウンタデータアレイ36に空きエントリを作り、これを新しいアドレス領域のパフォーマンスデータをカウントするためのエントリとする。
これにより、カウンタデータアレイ36のエントリ数に不足が生じた場合に、連続して実行されているような比較的関連性の深いエントリのみを融合し、その他のエントリのパフォーマンスカウンタ値の精度を保ったままエントリ数の不足を解消することができる。
図9及び図10は、本実施の形態に係るパフォーマンスカウンタ装置30の処理手順を示す。なお、図9において、図4と同一の処理ステップには同一符号を付して、重複した説明は省略する。
図9に示す処理手順では、図4に示した処理手順のステップST2及びステップST3がステップST62に置き換えられ、また、全てのアドレス領域がカウントの対象となるため、図4に示したステップST4を削除しており、また、カウンタデータアレイ36のエントリの入れ替えがなくなるため、図4に示したステップST8及びステップST9を削除している。また、図9においては、後述するステップST62により、カウンタデータアレイ36のエントリ数の不足に対応して、カウンタデータアレイ36に空きエントリを作るようにしており、このステップST62の処理により、カウンタデータアレイ36に未割り当てカウンタが存在していることが保証されることになる。従って、本実施の形態においては、図4に示したステップST6を省略し、ステップST5において否定結果が得られた場合に、ステップST5からステップST7に移るようにしている。
図10は、図9に示すステップST62の詳細を示す。但し、図8と同一の処理ステップには同一符号を付して、重複した説明は省略する。
パフォーマンスカウンタ装置30は、カウンタデータアレイ36のエントリ数が十分であるか否かを判断するステップST52において否定結果が得られると、ステップST52からステップST73に移って、アドレスカウンタ装置32のテーブル及びカウンタデータアレイ36をマージする。すなわち、アドレスカウンタ管理装置33が、隣接していて、かつ、お互いの実行頻度が最も近い二つのアドレス領域を見つけ、これら二つを一つのアドレス領域としてアドレスカウンタ装置32の対応するエントリをマージする。さらに、カウンタデータアレイ管理装置38に同様の処理を行うように要求し、カウンタデータアレイ36の対応するエントリについてもマージ作業を実行する。これにより、必ず一つの空きエントリが発生するので、マージ作業終了後、上述のステップST51に戻って同様の処理を繰り返す。
このように本実施の形態においては、カウンタデータアレイ36にエントリの不足が生じた場合に、連続して実行されているような比較的関連性の深いエントリのみを融合することにより、その他のエントリのパフォーマンスカウンタ値の精度を保ったまま、エントリ数の不足を解消することができる。
かくして以上の構成によれば、パフォーマンスカウンタ値とアドレス領域との対応の精度を簡易な構成により向上させることができる。
(他の実施の形態)
上述のパフォーマンスカウンタ装置30においては、上位n番目のアドレス領域におけるプログラムの実行頻度よりも新しく入力されたアドレス領域におけるプログラムの実行頻度が大きくなった場合、n番目のアドレス領域が使用していたカウンタデータアレイ36のエントリを開放し、新たにn番目となったアドレス領域のパフォーマンスカウンタとして使用することになる。この場合のエントリ内カウンタ(レジスタ)の初期化方法として、上述の実施の形態においては、全領域カウンタ37のカウンタ値(各イベントEVT1〜EVT3毎のカウンタ値)に、新たにn番目となったアドレス領域の実行割合を乗じた値を初期値としてカウンタデータアレイ36のパフォーマンスカウンタ値を初期化する場合について述べたが、本発明はこれに限られるものではなく、全てのアドレス領域に対するパフォーマンスカウンタ値を保持しているレジスタ(全領域カウンタ37)の値から、カウンタデータアレイ36の全てのエントリのパフォーマンスカウンタ値を引いた値を初期値として、新たなにn番目となったアドレス領域の初期値としてもよく、さらには、予め決められた値(例えばオール0)を初期値としてもよい。
また、上述の実施の形態においては、インターバル期間経過毎にパフォーマンスカウンタ値をトレースバッファ40に書き込む方法として、プログラムの実行頻度が最も高かったアドレス領域のパフォーマンスカウンタ値を書き込む場合について述べたが、本発明はこれに限られるものではなく、例えば、発生頻度が上位a個(aはユーザが設定、又は予め指定されたハードウエア特有の値)のアドレス領域のパフォーマンスカウンタ値及びそれぞれの頻度情報をトレースバッファ40に書き込むようにしてもよい。このようにすれば、あるインターバル期間中に複数のアドレス領域に関するパフォーマンスカウンタ値及び頻度情報をトレースバッファ40に記録することが可能となり、一段と詳細なパフォーマンス解析を行うことができるようになる。因みに、この場合、全てのアドレス領域に関するパフォーマンスカウンタ値(全領域カウンタ37の値)を、個別のアドレス領域に関するパフォーマンスカウンタ値と共にトレースバッファ40に書き込むようにすることもできる。このようにすれば、個々のアドレス領域のパフォーマンスカウンタ値及び頻度情報に加えて、全体のパフォーマンスカウンタ値及び頻度情報をトレースバッファ40に記録することができ、一段と高度な性能解析(例えば全体の挙動と各アドレス領域固有の挙動の比較等)を行うことができるようになる。
また、トレースバッファ40に書き込む方法として、発生頻度がx(xはユーザが設定、又は予め指定されたハードウエア特有の値)以上のアドレス領域のパフォーマンスカウンタ値及びそれぞれの頻度情報を全てトレースバッファ40に書き込むようにしてもよい。このようにすれば、プログラムの実行頻度を閾値として、記録するアドレス領域を決定することにより、解析、チューニングの対象としたい高頻度のアドレス領域に関するパフォーマンスカウンタ値及び頻度情報のみをトレースバッファ40に記録できるようになる。因みに、この場合、全てのアドレス領域に関するパフォーマンスカウンタ値(全領域カウンタ37の値)を、個別のアドレス領域に関するパフォーマンスカウンタ値と共にトレースバッファ40に書き込むようにすることもできる。このようにすれば、個々のアドレス領域のパフォーマンスカウンタ値及び頻度情報に加えて、全体のパフォーマンスカウンタ値及び頻度情報をトレースバッファ40に記録することができ、一段と高度な性能解析(例えば全体の挙動と各アドレス領域固有の挙動の比較等)を行うことができるようになる。
また、トレースバッファ40に書き込む方法として、プログラムの実行頻度が最上位のアドレス領域の頻度がy(yはユーザが設定、又は予め指定されたハードウエア特有の値)未満であった場合、全てのアドレス領域に関するパフォーマンスカウンタ値をトレースバッファ40に書き込むようにしてもよい。このようにすれば、各アドレス領域が均一的に実行され、かつ、測定対象となったアドレス領域の数自体も大きかった場合、ある特定のアドレス領域に関するパフォーマンスカウンタ値よりも全アドレス領域に関するパフォーマンスカウンタ値のほうが、パフォーマンス解析をする際には有用である可能性があることに対応することが可能となる。
また、トレースバッファ40に書き込む方法として、プログラムの実行頻度が上位n個のアドレス領域の合計がz(zはユーザが設定、又は予め指定されたハードウエア特有の値)未満だった場合、全てのアドレス領域に関するパフォーマンスカウンタ値をトレースバッファ40に書き込むようにしてもよい。このようにすれば、各アドレス領域が均一的に実行され、かつ、測定対象となったアドレス領域の数自体も大きかった場合、ある特定のアドレス領域に関するパフォーマンスカウンタ値よりも全アドレス領域に関するパフォーマンスカウンタ値のほうが、パフォーマンス解析をする際には有用である可能性があることに対応することができる。因みに、この方法においては、上位n個のアドレス領域が集中的に実行された場合は、個々のアドレス領域に関するパフォーマンスカウンタ値及び頻度情報をトレースバッファ40に記録することができる。
また、上述の実施の形態の構成において、全てのアドレス領域に関するパフォーマンスカウンタ値(全領域カウンタ37の値)を、個別のアドレス領域に関するパフォーマンスカウンタ値と共にトレースバッファ40に書き込むようにすることもできる。このようにすれば、個々のアドレス領域のパフォーマンスカウンタ値及び頻度情報に加えて、全体のパフォーマンスカウンタ値及び頻度情報をトレースバッファ40に記録することができ、一段と高度な性能解析(例えば全体の挙動と各アドレス領域固有の挙動の比較等)を行うことができるようになる。
第1の実施の形態に係るパフォーマンスモニタ装置を有するプロセッサを示すブロック図である。 図1のプロセッサのパフォーマンスモニタ装置を示すブロック図である。 図2のパフォーマンスモニタ装置に含まれるパフォーマンスカウンタ装置を示すブロック図である。 図3のパフォーマンスカウンタ装置の処理手順を示すフローチャートである。 第2の実施の形態に係るパフォーマンスカウンタ装置の処理手順を示すフローチャートである。 図5のマスク処理の詳細を示すフローチャートである。 第3の実施の形態に係るパフォーマンスカウンタ装置の処理手順を示すフローチャートである。 図7のマスク処理の詳細を示すフローチャートである。 第4の実施の形態に係るパフォーマンスカウンタ装置の処理手順を示すフローチャートである。 図9のマスク処理の詳細を示すフローチャートである。 従来のカウンタの説明に供する略線図である。 従来のトレースバッファへの書き込み方法の説明に供する略線図である。
符号の説明
10 プロセッサ
11 バス
12 プロセッサコア
13 キャッシュ
14 イベントセレクタ
15 イベントバス
20 パフォーマンスモニタ装置
22 インターバルタイマ
24 制御部
30 パフォーマンスカウンタ装置
31 アドレスマスク
32 アドレスカウンタ装置
33 アドレスカウンタ管理装置
34 パフォーマンスカウンタ値保持部
35 演算装置
36 カウンタデータアレイ
37 全領域カウンタ
38 カウンタデータアレイ管理装置
40 トレースバッファ

Claims (11)

  1. プログラムが格納されている記憶部上の実行した命令のアドレスを示すアドレス情報と前記プログラムを実行することにより発生するイベントの発生を示すイベント発生情報とをそれぞれプロセッサの動作サイクル毎に時系列に入力する入力手段と、
    前記入力されたアドレス情報の属するアドレス領域を決定するアドレスマスク手段と、
    前記アドレス情報及び前記イベント発生情報を入力する度に、前記入力したアドレス情報が属する前記アドレス領域毎の頻度カウンタを更新することにより、前記アドレス領域毎の前記プログラムの実行頻度をカウントする実行頻度カウント手段と、
    前記実行頻度のカウント結果を保持する実行頻度保持テーブルと、
    前記アドレス情報及び前記イベント発生情報を入力する度に、前記入力したアドレス情報に対応する前記実行頻度が上位所定順位までの場合に、前記入力したアドレス情報に対応する前記イベント発生情報をカウントするイベント発生情報カウント手段と、
    前記イベント発生情報のカウント結果を保持する保持手段と、
    所定の期間毎にカウントされた前記プログラムの実行頻度が最も高かったアドレス領域に対応する、前記所定の期間毎にカウントされた前記イベント発生情報のカウント結果を含む情報を、前記所定の期間毎に記憶する記憶手段と
    を備えることを特徴とするパフォーマンスモニタ装置。
  2. 前記記憶手段は、
    前記所定の期間毎にカウントされた前記プログラムの実行頻度が上位所定順位までの前記アドレス領域に対応する、前記所定の期間毎にカウントされた前記イベント発生情報のカウント結果を含む前記情報前記所定の期間毎に記憶することを特徴とする請求項1に記載のパフォーマンスモニタ装置。
  3. 前記記憶手段は、
    複数の前記アドレス情報のそれぞれが属する複数の前記アドレス領域のうち、前記所定の期間毎にカウントされた前記プログラムの実行頻度が最も高かった前記アドレス領域とは異なる前記プログラムの実行頻度が所定数以上の前記アドレス領域に対応する前記イベント発生情報のカウント結果を更に前記所定の期間毎に記憶することを特徴とする請求項1に記載のパフォーマンスモニタ装置。
  4. 前記入力手段を介して入力される前記イベント発生情報を前記アドレス領域に関わらず順次カウントする全領域カウント手段を備え、
    前記記憶手段は、前記所定の時間毎に前記プログラムの実行頻度が最も高かった該実行頻度が所定の頻度未満であった場合に、前記最も実行頻度が高かったアドレス領域に対応する前記イベント発生情報のカウント結果に代えて、前記全領域カウント手段のカウント結果を記憶することを特徴とする請求項1に記載のパフォーマンスモニタ装置。
  5. 前記入力手段を介して入力される前記イベント発生情報を前記アドレス領域に関わらず順次カウントする全領域カウント手段を備え、
    前記記憶手段は、前記所定の期間毎の前記プログラムの実行頻度が上位所定順位までの前記アドレス領域に対応する前記イベント発生情報のカウント結果の合計が所定値未満であった場合に、前記プログラムの実行頻度が最も高かったアドレス領域に対応する前記イベント発生情報のカウント結果に代えて、前記全領域カウント手段のカウント結果を記憶することを特徴とする請求項1に記載のパフォーマンスモニタ装置。
  6. 前記入力手段を介して入力される前記イベント発生情報を前記アドレス領域に関わらず順次カウントする全領域カウント手段と、
    前記アドレスマスク手段によって決定されたアドレス領域に対応する前記イベント発生情報のカウント結果が前記保持手段に保持されてなく、かつ、前記アドレスマスク手段によって決定されたアドレス領域におけるプログラムの実行頻度が、前記保持手段に前記イベント発生情報のカウント結果が保持されている他のアドレス領域の各実行頻度のうち、最も小さい実行頻度よりも高くなった場合に、前記他のアドレス領域に対応する前記イベント発生情報のカウント結果を、前記全領域カウント手段のカウント結果に基づいて初期化すると共に、該カウント結果を格納した前記保持手段を前記アドレスマスク手段によって決定された前記アドレス領域に対応付ける制御手段と
    備えることを特徴とする請求項1に記載のパフォーマンスモニタ装置。
  7. 前記制御部は、
    前記全領域カウント手段のカウント結果に対して、前記アドレスマスク手段によって決定された前記アドレス領域の実行頻度の、前記保持手段に保持されている他のアドレス領域の全ての実行頻度の合計値に対する割合を乗じた値を初期値として前記初期化を行うことを特徴とする請求項6に記載のパフォーマンスモニタ装置。
  8. 前記制御部は、
    前記全領域カウント手段のカウント結果と、前記保持手段に保持されている全てのカウント結果の合計値との差分を初期値として前記初期化を行うことを特徴とする請求項6に記載のパフォーマンスモニタ装置。
  9. 前記制御部は、
    予め決められている値を初期値として前記初期化を行うことを特徴とする請求項6に記載のパフォーマンスモニタ装置。
  10. プログラムが格納されている記憶部上の実行した命令のアドレスを示すアドレス情報と前記プログラムを実行することにより発生するイベントの発生を示すイベント発生情報とをそれぞれプロセッサの動作サイクル毎に時系列に入力する入力ステップと、
    前記入力されたアドレス情報の属するアドレス領域を決定するアドレス領域決定ステップと、
    前記アドレス情報及び前記イベント発生情報を入力する度に、前記入力したアドレス情報が属する前記アドレス領域毎の頻度カウンタを更新することにより、前記アドレス領域毎の前記プログラムの実行頻度をカウントする実行頻度カウントステップと、
    前記アドレス情報及び前記イベント発生情報を入力する度に、前記入力したアドレス情報に対応する前記実行頻度が上位所定順位までの場合に、前記入力したアドレス情報に対応する前記イベント発生情報をカウントするイベント発生情報カウントステップと、
    所定の期間毎にカウントされたプログラムの実行頻度が最も高かったアドレス領域に対応する、前記所定の期間毎にカウントされた前記イベント発生情報の前記カウント結果を含む情報を、前記所定の期間毎に記憶する記憶ステップと
    を備えることを特徴とするデータ収集方法。
  11. プログラムが格納されている記憶部上の実行した命令のアドレスを示すアドレス情報と前記プログラムを実行することにより発生するイベントの発生を示すイベント発生情報とをそれぞれプロセッサの動作サイクル毎に時系列に入力する入力ステップと、
    前記入力されたアドレス情報の属するアドレス領域を決定するアドレス領域決定ステップと、
    前記アドレス情報及び前記イベント発生情報を入力する度に、前記入力したアドレス情報が属する前記アドレス領域毎の頻度カウンタを更新することにより、前記アドレス領域毎の前記プログラムの実行頻度をカウントする実行頻度カウントステップと、
    前記アドレス情報及び前記イベント発生情報を入力する度に、前記入力したアドレス情報に対応する前記実行頻度が上位所定順位までの場合に、前記入力したアドレス情報に対応する前記イベント発生情報をカウントするイベント発生情報カウントステップと、
    所定の期間毎にカウントされたプログラムの実行頻度が最も高かったアドレス領域に対応する、前記所定の期間毎にカウントされた前記イベント発生情報の前記カウント結果を含む情報を、前記所定の期間毎に記憶する記憶ステップと
    をコンピュータに実行させるためのプログラム。
JP2006117862A 2006-04-21 2006-04-21 パフォーマンスモニタ装置、データ収集方法及びそのプログラム Expired - Fee Related JP4284332B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006117862A JP4284332B2 (ja) 2006-04-21 2006-04-21 パフォーマンスモニタ装置、データ収集方法及びそのプログラム
US11/733,379 US7571076B2 (en) 2006-04-21 2007-04-10 Performance monitor device, data collecting method and program for the same
EP07251553A EP1847931A3 (en) 2006-04-21 2007-04-11 Performance monitor device, data collecting method and program for the same
CNB200710100866XA CN100527093C (zh) 2006-04-21 2007-04-20 性能监测设备和数据收集方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006117862A JP4284332B2 (ja) 2006-04-21 2006-04-21 パフォーマンスモニタ装置、データ収集方法及びそのプログラム

Publications (2)

Publication Number Publication Date
JP2007293424A JP2007293424A (ja) 2007-11-08
JP4284332B2 true JP4284332B2 (ja) 2009-06-24

Family

ID=38353116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006117862A Expired - Fee Related JP4284332B2 (ja) 2006-04-21 2006-04-21 パフォーマンスモニタ装置、データ収集方法及びそのプログラム

Country Status (4)

Country Link
US (1) US7571076B2 (ja)
EP (1) EP1847931A3 (ja)
JP (1) JP4284332B2 (ja)
CN (1) CN100527093C (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090052608A1 (en) * 2007-08-21 2009-02-26 International Business Machines Corporation Method for dynamically adjusting hardware event counting time-slice windows
US7698598B1 (en) * 2007-04-24 2010-04-13 Netapp, Inc. Automatic generation of core files and automatic generation of support information with generation of core files
US8230433B2 (en) 2007-06-26 2012-07-24 International Business Machines Corporation Shared performance monitor in a multiprocessor system
US7895421B2 (en) * 2007-07-12 2011-02-22 Globalfoundries Inc. Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement
JP2009129301A (ja) * 2007-11-27 2009-06-11 Nec Electronics Corp 自己診断回路及び自己診断方法
JP5213539B2 (ja) * 2008-06-19 2013-06-19 キヤノン株式会社 画像処理装置及び画像処理装置のメモリ管理方法
GB2461716A (en) * 2008-07-09 2010-01-13 Advanced Risc Mach Ltd Monitoring circuitry for monitoring accesses to addressable locations in data processing apparatus that occur between the start and end events.
JP5278901B2 (ja) * 2008-10-24 2013-09-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 頻繁に発生するイベントを推定する方法
US8055809B2 (en) * 2008-12-24 2011-11-08 International Business Machines Corporation System and method for distributing signal with efficiency over microprocessor
JP2010244393A (ja) * 2009-04-08 2010-10-28 Renesas Electronics Corp パフォーマンス評価装置、及びパフォーマンス評価方法
JP2011100388A (ja) * 2009-11-09 2011-05-19 Fujitsu Ltd トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法
US9129056B2 (en) * 2009-12-04 2015-09-08 Sap Se Tracing values of method parameters
US10169187B2 (en) 2010-08-18 2019-01-01 International Business Machines Corporation Processor core having a saturating event counter for making performance measurements
US8850172B2 (en) 2010-11-15 2014-09-30 Microsoft Corporation Analyzing performance of computing devices in usage scenarios
US8499197B2 (en) * 2010-11-15 2013-07-30 Microsoft Corporation Description language for identifying performance issues in event traces
US9195524B1 (en) * 2010-12-20 2015-11-24 Marvell International Ltd. Hardware support for performance analysis
JPWO2014054274A1 (ja) * 2012-10-02 2016-08-25 パナソニックIpマネジメント株式会社 監視装置及び監視方法
JP5974856B2 (ja) * 2012-11-27 2016-08-23 富士通株式会社 サンプリングプログラム、サンプリング方法及び情報処理装置
EP2811410B1 (en) * 2012-12-21 2018-05-30 Huawei Technologies Co., Ltd. Monitoring record management method and device
US20140372691A1 (en) * 2013-06-13 2014-12-18 Hewlett-Packard Development Company, L. P. Counter policy implementation
GB2541223B (en) * 2015-08-12 2021-08-11 Siemens Ind Software Inc Profiling transactions on an integrated circuit chip
JP6648546B2 (ja) * 2016-02-09 2020-02-14 富士通株式会社 情報処理装置、性能データ収集プログラムおよび性能データ収集方法
KR102440948B1 (ko) 2016-02-11 2022-09-05 삼성전자주식회사 반도체 장치 및 반도체 장치의 동작 방법
CN107328968B (zh) * 2017-06-27 2020-04-21 威胜集团有限公司 用于电能表的冻结和事件记录数据存储方法
WO2020061765A1 (zh) * 2018-09-25 2020-04-02 华为技术有限公司 一种处理器性能的监测方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026139A (en) * 1998-06-16 2000-02-15 Intel Corporation Method and apparatus for generating a frequency distribution representation using integrated counter-based instrumentation
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
US6918065B1 (en) * 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
JP2001134471A (ja) 1999-11-09 2001-05-18 Toshiba Corp デバッグ装置及びデバッグ方法
JP3292189B2 (ja) * 1999-11-17 2002-06-17 日本電気株式会社 プロセッサ性能データ収集装置及び該装置を利用した最適化方法
US7395527B2 (en) * 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses

Also Published As

Publication number Publication date
US20080040634A1 (en) 2008-02-14
JP2007293424A (ja) 2007-11-08
EP1847931A3 (en) 2009-06-10
US7571076B2 (en) 2009-08-04
CN100527093C (zh) 2009-08-12
EP1847931A2 (en) 2007-10-24
CN101059772A (zh) 2007-10-24

Similar Documents

Publication Publication Date Title
JP4284332B2 (ja) パフォーマンスモニタ装置、データ収集方法及びそのプログラム
JP4371452B2 (ja) コンピュータメモリシステムにおいて空間的及び時間的サンプリングを行う装置
US6374367B1 (en) Apparatus and method for monitoring a computer system to guide optimization
US7143396B2 (en) System and method for measuring code segment performance
US8789028B2 (en) Memory access monitoring
US7853929B2 (en) Dynamically profiling consumption of CPU time in Java methods with respect to method line numbers while executing in a Java virtual machine
JPH11353231A (ja) コンピュ―タシステムにおけるコンテクスト間のメモリシステム相互作用の特性の統計値を推定する方法
JPH11316711A (ja) メモリシステムトランザクションの特性の統計値を推定する方法
Wang et al. Featherlight reuse-distance measurement
US7096390B2 (en) Sampling mechanism including instruction filtering
Maeda et al. Fast and accurate exploration of multi-level caches using hierarchical reuse distance
Huang et al. Performance modeling for optimal data placement on GPU with heterogeneous memory systems
Chafi et al. TAPE: A transactional application profiling environment
Venkataramani et al. Deft: Design space exploration for on-the-fly detection of coherence misses
JP5521687B2 (ja) 分析装置、分析方法および分析プログラム
Venkatesh et al. Scheduling hpc workflows with intel optane persistent memory
Vijayakumar et al. Predicting jvm parameters for performance tuning using different regression algorithms
Li et al. LPW: an efficient data-aware cache replacement strategy for Apache Spark
Mannarswamy et al. Variable granularity access tracking scheme for improving the performance of software transactional memory
Krishnamurthy et al. Evaluating dusty caches on general workloads
Chen et al. Cost-driven hybrid configuration prefetching for partial reconfigurable coprocessor
John et al. Exact cache characterization by experimental parameter extraction
Ismail et al. Efficient nursery sizing for managed languages on multi-core processors with shared caches
Gould Advanced Lease Caching
Abbas et al. Approximate data dependence graph generation using adaptive sampling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080924

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090303

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090323

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees