JPH10254739A - コンピュータ性能データを分析する方法 - Google Patents

コンピュータ性能データを分析する方法

Info

Publication number
JPH10254739A
JPH10254739A JP10058066A JP5806698A JPH10254739A JP H10254739 A JPH10254739 A JP H10254739A JP 10058066 A JP10058066 A JP 10058066A JP 5806698 A JP5806698 A JP 5806698A JP H10254739 A JPH10254739 A JP H10254739A
Authority
JP
Japan
Prior art keywords
instruction
instructions
frequency
program
execution
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.)
Granted
Application number
JP10058066A
Other languages
English (en)
Other versions
JP4785213B2 (ja
Inventor
Monika H Henzinger
ハー ヘンツィンガー モニカ
Richard L Sites
エル シテス リチャード
William Weihl
ウェイール ウィリアム
Shun-Tak Albert Leung
タク アルバート レウン シュン
Mark T Vandevoorde
ティー ヴァンデヴールド マーク
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment 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 Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH10254739A publication Critical patent/JPH10254739A/ja
Application granted granted Critical
Publication of JP4785213B2 publication Critical patent/JP4785213B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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
    • 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/3452Performance evaluation by statistical analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 コンピュータシステムがプログラムの命令を
実行する間に収集された性能データを分析するためのコ
ンピュータ化された方法を提供する。 【解決手段】 プログラムを実行する間に性能データが
収集される。性能データは、実行された命令のサンプル
カウントを含む。プログラムを分析し、命令のクラスが
決定される。同じ等価クラスの命令は、全て、同じ回数
だけ実行される。各等価クラスの各命令の実行頻度が推
定される。この推定された実行頻度を使用して、各等価
クラスの各命令を発生するのに必要な平均サイクル数を
得る。この平均サイクル数を最小サイクル数と比較し、
命令により被った動的なストールサイクルの数を決定す
る。更に、動的なストールサイクルの理由を推論する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、コンピュ
ータシステムに係り、より詳細には、コンピュータシス
テムの性能データの分析に係る。
【0002】
【従来の技術】動作しているコンピュータシステムの性
能の測定は、ハードウェア及びソフトウェアエンジニア
により行われる頻繁で且つ非常に重要な作業である。ハ
ードウェアエンジニアは、新しいコンピュータハードウ
ェアが既存のオペレーティングシステム及びアプリケー
ションプログラムでいかに動作するかを決定するために
性能データを必要とする。ソフトウェアエンジニアは、
オペレーティングシステム、カーナル、デバイスドライ
バ及びアプリケーションソフトウェアプログラムの危険
をはらんだ部分を識別する必要がある。
【0003】近代的な高速パイプライン型のマルチプロ
セッサシステムの性能を測定することが特に問題であ
る。パイプライン型のマルチプロセッサシステムにおい
ては、各プロセッササイクルごとに多数の命令を発生す
ることができる。プロセッササイクルは、プロセッサ動
作のための基本的なタイミング間隔である。ストールが
ない場合には、命令は、各サイクルごとにパイプライン
を経て1段階づつ進行する。従って、理想的に、システ
ムは最も効率的に動作する。これは、一度に多数の命令
を種々のパイプラインにおいて同時に実行できることを
意味する。一般的に、命令のオペレータコード及びオペ
ランドは、命令を完全に実行するためにいかに多くのプ
ロセッササイクルが必要とされるかを決定する。しかし
ながら、オペレータコードは、命令を発生するためにい
かに多くのサイクルが必要とされるかを指示せず、これ
は、命令を実行しながら動的に決定できるに過ぎない。
【0004】
【発明が解決しようとする課題】しかしながら、幾つか
の命令は、互いに干渉し合う。例えば、次のロード又は
条件分岐は、まだ不完全である命令の結果を必要とす
る。他の場合には、命令が特定のフローティングポイン
ト演算ユニットのようなプロセッサリソースを待機す
る。これらの場合には、その後の命令の実行が、他の命
令が完了するか又はリソースを使用できるようになるま
でストールされる。命令がストールされる間には、デコ
ード及び処理が保留とされ、プロセッサは、低い効率で
動作する。換言すれば、命令の実行を完了するに必要な
サイクルの数が、理想的に決定されるものよりも大きく
なる。
【0005】いかに頻繁に命令が実行されるかの性能デ
ータを収集するのにプロファイリングシステムを使用す
ることができる。ある公知のプロファイリングシステム
は、プログラムが実行されるときにデータを収集できる
命令を挿入するためにソース又はオブジェクトプログラ
ムを変更することを必要とする。プログラムを変更する
ことは、プログラムを再コンパイル及び/又は再リンク
する必要があることを意味する。
【0006】更に、公知のプロファイリングシステム
は、一般に、特定の命令の実行の頻度しか決定せず、命
令を発生するのに必要なサイクルの数を決定しない。パ
イプライン式のマルチプロセッサシステムにおいては、
種々の命令を発生するに必要なサイクルの数は、システ
ムの性能の重要な指示子である。
【0007】ある既知のシステムの更に別の制約とし
て、アプリケーションプログラムの命令に対してプロフ
ァイルを発生することしかできない。これは、アプリケ
ーションプログラムがオペレーティングシステム手順を
コールするときに、システムの手順により実行される実
際の命令に関する性能データが収集されないことを意味
する。あるプロファイリングシステムは、システムコー
ルを処理するのに必要な時間長さを測定し、そしてシス
テムコールを処理する時間を命令の「平均」実行時間で
除算することにより性能データを推定するよう試みる
が、システム手順の命令の実際の実行に関して何も具体
的なものは学習されない。
【0008】それ故、ソース又はオブジェクトコードフ
ァイルを変更する必要なくマシンで実行可能なプログラ
ムをプロファイリングし、このようにプロファイリング
されたプログラムを再コンパイル又はリンクする必要が
ないことが望まれる。更に、アプリケーション及びシス
テム(カーナル)レベルの両方のプログラムをプロファ
イリングすることが望まれる。更に、各命令が実行され
る回数をプロファイリングするだけでなく、各命令が発
生されるときに生じるストールサイクルの平均数、及び
それらのストールが生じる理由も、プロファイリングす
ることが望まれる。
【0009】
【課題を解決するための手段】本発明は、コンピュータ
システムの性能データを分析するためのコンピュータ化
された方法を提供する。実行される命令の正規化された
サンプルカウントを含む性能データがプログラム実行中
に収集される。プログラムは、命令の等価クラスを決定
するために分析される。命令の等価クラスにおいて、全
ての命令は、同じ回数で実行される。本発明は、その広
い形態において、コンピュータシステムの性能データを
分析するための請求項1に記載の方法に係る。
【0010】各等価クラスの命令に対する実行頻度が推
定される。実行頻度は、各等価クラスの各命令を発生す
るのに必要な平均サイクル数を決定するのに使用でき
る。各命令を発生するのに必要な最小サイクル数も決定
される。平均「測定」サイクル数から最小値を減算する
ことにより、各命令により被る動的なストールサイクル
の数を決定することができる。動的なストールサイクル
を経験する命令については、動的なストールサイクルの
理由を排除プロセスにより推定できる。
【0011】本発明の好ましい実施形態においては、プ
ログラムは、ノード及びアークを有する制御流れグラフ
として表される。このグラフにおいて、各ノードは、プ
ログラムの基本成分を表し、そしてノードを接続するア
ークは、基本成分間の実行流を表す。あるノードは、基
本的ブロックとして識別される。特定の基本的ブロック
の各命令は、同じ回数だけ実行され、従って、特定の基
本的ブロックの全ての命令は、命令の等価クラスを形成
する。同じ実行頻度を有する全てのノードは、同じ等価
クラスに指定することができ、等価クラスをできるだけ
大きくすることができる。
【0012】好ましくは、以下に述べるように、プログ
ラムの手順を表す制御流れグラフの関連するノード及び
アークが識別される。更に、手順の入口ノード及び出口
ノードが識別される。流れグラフは、手順の入口及び出
口ノードを互いに接続することにより拡張される。次い
で、流れグラフは、強力に接続されたサブグラフへと分
解される。特定の強力に接続されたサブグラフは、その
強力に接続されたサブグラフのいずれかのノードから手
順の他のノードへのアークがない場合には、デッドエン
ド成分として識別される。デッドエンド成分に入る全て
のアークは、その手順の出口ノードへと再指向される。
次いで、一般化された方法を使用して、上記拡張された
制御流れグラフのサイクル等価ノード及びアークを識別
し、頻度等価クラスを決定することができる。
【0013】最小サイクル数は、モデルスケジューラを
用いてプログラムの命令を理想的にスケジューリングす
ることにより決定できる。この最小数は、静的なストー
ル、即ちプログラムの実行の前に決定できるストールに
より被るサイクルを含む。次いで、各命令のサンプルカ
ウントを命令の実行頻度で除算し、各命令を発生するの
に必要な平均サイクル数を決定することができる。各命
令の平均サイクル数から最小サイクル数を減算すると、
プログラムの各命令により被る動的なストールサイクル
が生じる。
【0014】動的なストールサイクルを招く命令が識別
されると、動的なストールサイクルを招く特定の命令を
生じさせる全ての考えられる理由を排除プロセスにより
推定することができる。特定のストールに基づき、プロ
セスは、命令−キャッシュミス、データ−キャッシュミ
ス、分岐予想ミス、プロセス同期、実行ユニット競合及
び書き込みバッファオーバーフロー等の理由を排除する
ことができる。
【0015】
【発明の実施の形態】本発明は、添付図面を参照した特
定の実施形態の以下の詳細な説明より容易に理解されよ
う。システムの概要 図1に示すように、コンピュータシステム100は、バ
ス140により互いに接続された中央処理ユニット(C
PU)110、メモリサブシステム(メモリ)120、
及び入力/出力インターフェイス(I/O)130を備
えている。このシステム100は、埋め込まれたシステ
ム、PC、ワークステーション、メインフレーム、又は
ネットワークでリンクされたコンピュータシステムのク
ラスターである。
【0016】好ましい実施形態においては、CPU11
0は、高速パイプラインを使用するように設計された1
つ以上の個々のプロセッサチップ111を備えている。
パイプラインでは、各プロセッサ111は、多数の実行
ユニット113を用いて多数の命令を同時に発生しそし
てそれに基づいて動作することができる。実行ユニット
113は、整数演算、フローティングポイント演算、ロ
ード、記憶、分岐等の種々のオペレーションを実行する
ことができる。典型的に、パイプライン型プロセッサ
は、RISCアーキテクチャーを使用する。パイプライ
ン型アーキテクチャーでは、命令がメモリからフェッチ
され、発生待ち行列へとスケジューリングされ、実行さ
れ、そしてリタイアされる。
【0017】各プロセッサ111には、1組の性能カウ
ンタ112が関連される。各組のカウンタ112は、複
数のレジスタとして実施できる。これらのレジスタは、
例えば実行される命令のようなシステムの性能を表すシ
ステムの重要な事象の発生をカウントすることができ
る。これらレジスタは、増加することができ、そしてオ
ーバーフロー時に、これらレジスタに割り込んで、レジ
スタに記憶されたカウントを性能データとしてサンプリ
ングすることができる。
【0018】メモリサブシステム120は、静的、動
的、ランダム、逐次、揮発性及び永続的記憶素子、又は
その組合せを含むことができる。これらの記憶素子は、
レジスタ、キャッシュ、DRAM、ディスク、テープ等
である。キャッシュは、同じプロセッサチップ上のプロ
セッサと共に常駐する命令及びデータキャッシュ(Iキ
ャッシュ及びDキャッシュ)を含むことができる。メモ
リ120は、マシンで実行可能な命令の形態のソフトウ
ェアプログラム121と、命令によりアクセスされるデ
ータ122とを記憶する。ソフトウェアプログラム12
1は、オペレーティングシステム、デバイスドライバ及
びアプリケーションプログラムを含むと共に、以下に詳
細に述べるようにシステム100の性能データを測定し
そして分析するのに使用されるプログラムを含むことが
できる。
【0019】I/O130は、プリンタやターミナルや
キーボード等の入力/出力デバイスへのインターフェイ
スを含むことができる。又、I/O130は、ライン1
50を経て、他のコンピュータシステムにデータを通信
するネットワークに接続することもできる。バス140
は、通常、アドレス、データ、制御及びタイミング信号
を種々のシステム要素間に搬送するための複数のライン
として実施される。
【0020】一般的なオペレーション システム100のオペレーション中に、プログラム12
1の命令がプロセッサ111により実行される。各命令
は、その命令によりどんなオペレーションを実行すべき
かを知らせるオペレータコードを含む。又、命令は、オ
ペレーション中に使用すべき付加的なデータを参照する
ための1つ以上のオペランドを含むこともできる。命令
は、一般に、プログラムの実行流を制御するか、又はデ
ータをアクセス(読み取り及び書き込み)する。又、処
理速度を上げるために、プロセッサは、分岐予想ロジッ
ク(図示せず)も備えている。分岐予想ロジックは、予
想される実行順序で命令をロードするように試みる。通
常のオペレーティング環境を著しく妨げることなくシス
テム100において実行されるプログラムのプロファイ
ルを発生することが望まれる。プロファイルは、好まし
い実施形態においては、プログラム121の種々の命令
の各々により被る動的なストールサイクルの平均数の指
示を含む。1つの効果として、各命令に対する動的なス
トールサイクルの平均数を使用して、プロセッサの発生
待ち行列における命令ストールの考えられる動的な原因
を決定することができる。
【0021】プロファイリングサブシステム 図2は、本発明の好ましい実施形態によるサブシステム
200の流れ線図である。このサブシステム200は、
制御流れ分析モジュール210と、性能データ分析器3
00とを備えている。マシンで実行可能なコードの形態
のプログラム121は、制御流れ分析モジュール210
に与えられる。プログラム121は、カーナル及びアプ
リケーションプログラム、例えば、完全に実行可能な
「2進イメージ」を含むことができる。マシンコードを
分析するためのプロセスの一例が、1996年7月23
日付けのスリバスタバ氏等の「コンピュータシステム性
能を監視するシステム(System for Monitoring Compute
r System Performance) 」と題する米国特許第5,53
9,907号に開示されている。
【0022】制御流れ分析器210は、コード121を
データ構造体206に仕切る。この構造体206は、手
順201を含み、そしてこれら手順201は、基本的な
ブロック202を含むことができる。仕切られた構造体
206は、手順及び基本的なブロックを識別するための
情報を含むことができる。通常、手順は、単一の入口ポ
イントと、単一の出口ポイントとを有する。基本的なブ
ロック202は、第1命令が実行される場合に全てが実
行される命令のグループ又はセットとして定義される。
換言すれば、基本的なブロックのいずれか1つの命令の
実行頻度が既知の場合には、そのブロックの全ての命令
の実行頻度が分かる。というのは、全ての命令が同じ回
数だけ実行されるからである。それ故、このような基本
的なブロックの命令は、同じ頻度の等価クラスに属する
と言える。
【0023】稀なケースでは、基本的なブロックの種々
の命令を異なる回数で実行することができる。これは、
基本的なブロックが等価クラスを自動的に構成しないこ
とを意味する。例えば、ブロックの中間に割り込み又は
例外条件が生じるが、その割り込み又は例外からの復帰
がなされない場合には、ブロックのそれ以前の命令がそ
れ以降の命令よりも頻繁に実行されることになる。この
ような割り込み及び例外により導入される歪は、通常は
僅かであり、そして歪がコードにおける特定の命令に相
関されそして頻繁でもある非常に稀な環境を除くと無視
することができる。
【0024】手順201及び基本的なブロック202の
命令は、制御流れグラフ(CFG)203を形成するよ
うに更に分析される。例えば、分岐及びジャンプのよう
な命令を識別することにより、手順と基本的なブロック
との間の実行の流れを決定することができる。CFG2
03において、ノード204(円)は、手順又は基本的
なブロックを表し、そしてこれらノードを接続するエッ
ジ205(指向されたアーク)は、ノード間の実行の流
れを表す。制御流れグラフ203は、基本的なブロック
及びアークのための頻度等価クラスを決定するのに使用
される。基本的なブロック及びアークの両方を検討する
ことにより、頻度等価クラスをできるだけ大きくするこ
とができる。
【0025】マシンで実行できるコード121の分析に
加えて、コード121は、実行のためにシステム100
にロードされる。実行中に、図1の性能カウンタ112
をサンプリングして、サンプル209を発生することが
できる。これらサンプルは、例えば、コード121の各
命令を発生するためにプロセッササイクルの平均数を指
示することができる。発生のために実際に必要な平均サ
イクル数を、プログラムの理想的な実行中に必要なサイ
クル数と比較して、パイプラインストールの考えられる
原因を決定することができる。CFG203、構造体2
06及びサンプル209は、性能データ分析器300へ
送られる。性能データ分析器300は、例えば、各命令
ごとに性能データ340を発生し、この性能データは、
実行の頻度、命令を発生するのに必要な平均サイクル数
(cpi)、及びパイプラインストールの考えられる原
因を含むことができる。
【0026】性能データのサンプリング 図3に示すように、性能データ分析器300は、ステッ
プ310で実行されたコードの命令に対しサンプルカウ
ント209を収集する。性能データは、何らかの既知の
プロファイリングシステムにより収集することができ
る。ステップ320では、実行される命令の実行頻度が
サンプルカウントに基づいて推定される。ステップ33
0の間に、各命令に対する平均サイクル数340が決定
される。平均サイクル数は、命令がいかに良好にスケジ
ュールされたかそしてストールがいかに頻繁に生じるか
の良好な指示である。この情報を使用して、システム1
00のハードウェア及びソフトウェアの設計を改善する
と共に、動的なパイプラインストールの原因を決定する
ことができる。
【0027】導入される頻度推定値 図4は、図3のステップ320のサブステップ400を
示す。ステップ410において、制御流れグラフ203
を使用し、コード121の命令が頻度等価クラスにグル
ープ分けされる。頻度等価クラスとは、上記したよう
に、同じ実行頻度を有すると分かっている命令又はアー
クのセットであり、例えば、同じ回数だけ実行された命
令である。同じ等価クラスにおけるアークは、同じ回数
だけ横断される。例えば、基本的なブロックがいかに頻
繁に実行されるか分かっている場合には、その基本的ブ
ロックの各命令の実行頻度も分かる。
【0028】命令の各頻度等価クラスに対する実行頻度
は、ステップ420において推定され、初期頻度推定値
が決定される。これらの初期頻度推定値は、ステップ4
30において純化処理されて、最終的な頻度推定値44
0が形成される。これら推定値は、クラス間制約451
を使用して等価クラス間に推定頻度をローカルに且つグ
ローバルに伝播することにより純化処理される。クラス
間制約451は、以下に述べる設定ステップ450にお
いて制御流れグラフ203から導出される。
【0029】制御流れグラフの処理 図5及び6を使用して、図4のステップ410のサブス
テップ500を詳細に説明する。ステップ410の目的
は、制御流れグラフ203の分析に基づき命令及びアー
クを頻度等価クラスにグループ分けすることである。定
義によれば、命令は、それらがプログラムの実行におい
て同じ回数だけ実行される場合に頻度等価である。同様
に、基本的ブロック及び制御流れアークは、それらがプ
ログラムの実行において同じ回数だけ実行され又は横断
される場合に頻度等価である。同じ基本的ブロックにお
ける命令は、常に、頻度等価である。というのは、1つ
の命令が実行されるときには、定義により、他の全ての
命令も実行されるからである。異なる基本的ブロックに
おける命令は、それに対応する基本的ブロックが頻度等
価である場合には、頻度等価となる。
【0030】従って、サブステップ500は、頻度等価
の基本的ブロック及び制御流れアークを識別することを
目的とする。これは、頻度等価に密接に関連した特性で
あるサイクル等価である基本的ブロック及びアークを表
すノードを識別するために制御流れグラフ203を分析
することにより達成される。定義によれば、グラフにお
けるノード及びアークのセットは、そのグラフの各サイ
クル即ち閉じた経路がそれらを全て含むか又は全く含ま
ない場合にサイクル等価となる。サイクル等価のノード
及びアークを識別する方法は、プロシーディングズ・オ
ブ・ACM SIGPLAN ’94 コンファレンス
・オン・プログラミング・ランゲッジ・デザイン・アン
ド・インプレメンテーション、1994年の第171−
185ページに掲載されたジョンソン氏等の「プログラ
ム構造ツリー:直線的な時間での制御領域の計算(The P
rogram Structure Tree: Computing Control Regions i
n Linear Time)」に説明されている。しかしながら、グ
ラフにおけるサイクル等価は、頻度等価を意味しない。
以下の説明は、制御流れグラフを拡張しそしてグラフを
サブグラフに分割することにより頻度等価をいかに決定
するかについて述べる。次いで、各サブグラフに対する
サイクル等価を決定することができる。
【0031】入口及び出口ノード 図6に示すように、手順のための制御流れグラフ514
は、入口ノード512及び出口ノード513と称する2
つの特殊なノードを含む。これらのノードは、制御が手
順514に入りそして出るポイントを表す。公知の方法
は、入口ノードから手順の他の各ノードへの経路があり
そして他の各ノードから手順の出口ノードへの経路もあ
るような流れグラフの制御にのみ適用される。本発明
は、これら制約を必ずしももたない更に一般的な制御流
れグラフにも適用できるように方法を改善する。
【0032】拡張された流れグラフ 図5のステップ510において、制御流れグラフは、出
口ノードから入口ノードへアーク515で拡張される。
図6のステップ511は、ノード512−513及びア
ーク515のためのこの変換を示している。ステップ5
20において、拡張された制御流れグラフは、既知の方
法を使用して強く接続されたサブグラフに分解され、こ
れについては、例えば、SIAMジャーナル・オン・コ
ンピューティング、1(2):146−160、197
2年に掲載されたタージャン著の「深さ優先探索及びリ
ニアグラフアルゴリズム(Depth-first search and line
argraph algorithms)」を参照されたい。
【0033】定義によれば、グラフの強く接続された成
分は、各ノードから他の各ノードへの経路が存在する最
大サブグラフである。図6のステップ521は、この分
解を示し、破線のボックス522−524で包囲された
3つの強く接続されたサブグラフが生じる。以下の説明
の目的上、「デッドエンド」サブグラフ又は成分524
とは、そのノードからグラフの他のノードへのアークを
もたずに強く接続された成分として定義される。
【0034】ステップ530において、デッドエンドに
入る全てのアークは、出口ノードへ再指向される。これ
は、図6のステップ531によりアーク542の再指向
と共に示されている。ステップ540において、ジョン
ソン氏等により開発されたサイクル等価を計算する方法
が各デッドエンド成分524に適用される。各デッドエ
ンド成分524に対し、この方法は、デッドエンド成分
524におけるノード及びアークのサイクル等価クラス
を形成する。ステップ550において、この方法は、グ
ラフの残り部分に適用され、その残り部分に対するサイ
クル等価クラスを生じる。これら2つのステップは、図
6のステップ541に示されている。これら最後の2つ
のステップで形成されたサイクル等価クラスは、元のグ
ラフの頻度等価クラスを構成する。
【0035】頻度及び命令当たりのサイクル(cpi)
の推定 プログラムの各命令に対して実行頻度及び命令当たりの
サイクル(cpi)を推定する方法と、これらの値に基
づいてパイプラインストールの理由を推論する方法とに
ついて、以下に詳細に説明する。これらの方法(A−
D)は、次の順に説明する。 A.性能のボトルネック又は問題、即ちパイプラインス
トールを、プログラムの個々の命令のレベルで識別する
ための方法; B.プログラムの個々の命令の実行頻度を推定する方
法; C.動的なストールの考えられる原因を推論する方法;
及び D.本発明による性能カウンタを用いてプログラムの個
々の命令の実行頻度を測定する方法(及び装置)。
【0036】これらの方法では、周期的なサンプリング
に基づくサンプルカウントは、各々の命令が発生待ち行
列のヘッドにおいて費やす合計時間のみに比例すること
に注意されたい。周期的なサンプリングは、実行頻度に
関する情報を直接的に与えるものではない。実行頻度
は、方法Bについて述べるサンプルカウントから推定す
ることもできるし、又は方法Dを用いて直接測定するこ
ともできる。
【0037】性能の問題を識別する方法A 図7に示されたように、方法A(600)に必要な入力
データは、次のものを含む。 1.分析されるプログラム; 2.各命令のサンプルカウント。但し、このカウント
は、発生された命令が、応答なしにリタイアされ、即ち
応答に対する無カウント発生であって、例外条件の処理
により再発生される命令であるときに、発生待ち行列の
ヘッドにおいて費やされる時間に比例する;そして 3.分析されるシステムのためのモデル又はシュミレー
タ。
【0038】第1に、プログラム601が実行されると
きに、生のサンプルカウント603が命令に対して収集
される。図3のステップ310も参照されたい。これ
は、異なるPC値を有する命令に対しサンプルカウント
が決定されることを意味する。サンプルカウントは、順
序正しいプロセッサの発生待ち行列のヘッドにおいて命
令が費やす時間(サイクル数)に比例する。いかなる性
能カウンタサンプリング技術もここに使用できることを
理解されたい。生のサンプルの異常は、ステップ640
において除去(正規化)され、信頼性のあるサンプル6
04を発生することができる。異常は、多発生命令によ
るか、又はストールサイクルがその後発生される命令と
重畳するような遅延実行を伴う命令によるものである。
【0039】第2に、システムのモデル又はシステムシ
ュミレータ(602)を使用して、動的なストールがな
いという仮定でプログラムの命令を理想的にスケジュー
リングすることができる(610)。このステップは、
全ての静的なストール及びそれらの原因を識別する。理
想的なスケジュールから、ステップ620において、各
命令を発生するのに必要な最小の(理想的な)サイクル
数を識別することができる。
【0040】第3に、最小のサイクルカウント及び正規
化されたサンプルカウント630を使用して、各命令の
実行頻度をステップ650において推定することができ
る。実行頻度は、命令が「リタイア」された回数であ
る。リタイアされたとは、命令が実行を完了したことを
意味する。これは、少なくとも次の3つの方法で行うこ
とができる。 1)いかなるプログラムについても、これは、上記第1
ステップからのサンプルカウントのみに依存する以下の
方法Bを用いて行うことができる。 2)決定論的アプリケーションプログラムについては、
基本的ブロックの実行をカウントする従来のプロファイ
リング技術を用いて頻度を決定することもできる。この
場合、プログラムは、従来のプロファイラを用いて実行
され、実行頻度が得られる。この場合に、同等のサンプ
ルカウントを得るために同じ入力データでプログラムを
再実行しなければならない。 3)いかなるプログラムについても、これは、命令がリ
タイアされる割合をサンプリングするために改善された
ハードウェア性能カウンタに依存する方法Dを用いて行
うこともできる。
【0041】第4に、ステップ660において各命令の
命令当たりのサイクル(cpi)を決定し、即ち各命令
を発生するのに必要とされる平均サイクル数を決定す
る。この値は、所与の命令に対するサンプルカウントを
その実行頻度で除算することにより計算できる。図3の
ステップ330も参照されたい。第5に、方法Cを使用
して、各命令に対する動的なストールサイクルの数と、
各ストールに対して考えられる原因をステップ670に
おいて識別する。動的なストールサイクルの数は、cp
iから最小(理想的)サイクル数(上記方法Aの第2ス
テップ)を減算することにより決定できる。これが分か
ると、動的なストールに対して考えられる原因を求める
ことができる。
【0042】実行頻度を推定する方法B 入力及び出力データ 図8に示すように、方法B(700)に対して必要な入
力データは、次のものを含む。 1.プログラム701; 2.サンプルカウント702; 3.プログラムの制御流れグラフ(CFG)703;及
び 4.サンプルを収集する間にプログラムが実行されたプ
ロセッサに対する命令スケジューラ又はモデル704。
【0043】上記のCFGにおいて、各ノードは、基本
的なブロックを表し、そして基本的なブロックは、当然
同じ回数だけ実行される命令のシーケンスである。グラ
フにおける各アークは、1つのブロックから別のブロッ
クへの考えられる実行流を表す。この方法は、たとえC
FGがあるアークを欠落しても、CFGがおそらくアー
クを欠落しているとマークされる限り、機能する。ソー
ス、オブジェクト又は実行可能なコードからCFGを構
成する方法は、不正確であるために、アークが欠落する
ことがある。
【0044】命令スケジューラ704は、命令(INS
TRUCTION)のアレーを入力として取り上げ、そ
してそれら命令に対する理想的なスケジュール(SHE
D)を出力として返送することができる。SHEDは、
整数のアレーの形態をとることができる。このアレーに
おいて、アレーエレメントSHED(I)は、静的なス
トールのサイクル数が正確に分かり且つ動的なストール
が生じないと仮定される理想的なケースのもとで命令
(INSTRUCTION(I))を発生するに必要と
されるサイクル数である。
【0045】更に、命令スケジューラは、命令と命令と
の間の静的な依存性を識別しなければならない。INS
TRUCTION(I)は、j<Iの場合にINSTR
UCTION(j)に対して静的な依存性を有すると共
に、INSTRUCTION(I)は、INSTRUC
TION(j)により使用されるプロセッサリソース又
はその命令により計算された値を常に必要とするので、
INSTRUCTION(j)より早期にスケジュール
することができない。
【0046】静的な依存性を識別するために、命令スケ
ジューラは、アレーSHEDに加えて、アレーDEEP
も返送できる。アレーDEEPにおいては、アレーエレ
メントDEEP(I)は、INSTRUCTION
(I)がINSTRUCTION(j)に対して依存性
を有するときに値jを有するか、又はINSTRUCT
ION(I)が依存性をもたないときに値0を有するか
のいずれかである。INSTRUCTION(I)が多
数の先行する命令に対して静的な依存性を有する場合に
は、DEEP(I)は、INSTRUCTION(I)
に最も近い先行する命令を表す値にセットされねばなら
ない。
【0047】この方法は、次のような値の対を出力デー
タとして発生する。CFG703の各ブロック及びアー
クに対し、頻度推定値は、(FREQUENCY、CO
NFIDENCE)の形態であり、負の数値ではないF
REQUENCYは、頻度の推定値であり、そしてCO
NFIDENCEは、推定値FREQUENCYがいか
に正確に予想されるかを示す値である。頻度推定値は、
サンプルを得るために使用されるサンプリング周期の単
位である。例えば、サンプリング周期が65,536サ
イクル当たり1サンプルである場合には、頻度推定値1
00を有する基本的ブロックは、6,553,600の
推定回数だけ実行されている。
【0048】方法Bの概要 サンプルカウントは、CFGの部分に対する推定値を推
論するために使用される。これら推定値は、理想的な命
令スケジュールをベースとし、各々の「成功裡な実
行」、即ち命令が首尾良くリタイアされるために、発生
待ち行列のヘッドにおいて短いシーケンスの命令(しば
しば単一の命令)が費やさねばならない最小サイクル数
を識別する。第1に、おそらくは動的なストールを招か
ない短いシーケンスの命令を識別する。CFGにおける
幾つかの基本的ブロックは、このようなシーケンスをも
たないことがある。
【0049】次いで、発生待ち行列のヘッドにおいて命
令が費やす最小サイクル数(「成功裡な実行」当たり)
でサンプルカウントの和を除算したものとして、動的な
ストールを伴わない命令シーケンスの実行頻度を推定す
る。動的なストールを招くことのある幾つかのシーケン
スについては、以下に述べる別の発見を使用して、それ
らの頻度を推定する。CFGの流れ制約を使用して、直
接推定できないブロック及びアークに推定値を伝播する
ことができる。先ず、ローカル伝播及び他の自然の発見
を利用して、CFGのほとんどの残り部分に対して推定
を行うことができる。次いで、各推定値に信頼値を指定
して、推定値の精度を指示する。最後に、ガウス排除(G
aussian Elimination)及び変形グラム−シュミット方法
に基づく制約ソルバー(solver)を使用し、初期推定値に
「最も密接な」流れ制約に対する解決策を見出す。
【0050】通常は、初期推定値は、流れ制約に違反す
る。ここでは、信頼値を使用するようにグラム−シュミ
ット方法を変形し、即ち信頼性の高い推定値にあまり影
響を及ぼさない解決策は、信頼性の低い推定値に影響を
及ぼす解決策よりも「密接である」と考えられる。不当
に高い又は低い解決策の推定値、例えば、負の信頼値を
生じるような解決策の推定値は、これを修正する。
【0051】方法Bの詳細な説明 CFGの各手順に対し、次のステップを実行する。ステップ1 .頻度等価値の決定:CFG703がアーク
を欠落しない限り、頻度等価アルゴリズムを使用して、
CFGのブロック及びアークを、メンバーが同じ「実行
頻度」を有するセットに仕切る。これらのセットは、
「頻度等価クラス」(FREQ)711又は簡単に「ク
ラス」と称する。
【0052】CFG703がアークを欠落する場合に
は、各ブロック及び各アークごとに頻度等価クラスを形
成する。各ブロック又はアークは、厳密に1つの頻度等
価クラスに入ることに注意されたい。又、頻度等価クラ
スの基本的なブロックにおける各命令は、同じ回数だけ
実行されねばならないことにも注意されたい。定義によ
れば、Bが頻度等価クラスCの基本的なブロックである
場合に、ブロックBの各命令は、Cの頻度等価クラスを
有する。
【0053】ステップ2.理想的スケジュール及び値m
in head qの決定:各々の基本的なブロックご
とに、モデル命令スケジューラを使用して、ブロックに
おける命令のシーケンスに対し動的なストールを伴わな
い理想的なスケジュールであるアレーSCHED721
と、命令に対する静的な依存性情報であるアレーDEE
P722の両方を決定する。又、ブロックの各命令に対
し値「min head q」のアレーも決定する。SH
EDは、ブロックの各命令に対し、動的なストールが生
じない限り、第1の命令が直ちに発生するという仮定に
基づいて、命令を発生するに必要なサイクルの数を与え
る。DEEPは、ブロックの各命令に対し、それが依存
するところの最も密接な先行する命令の数を与える。m
in head qの値は、発生待ち行列のヘッドにお
いて命令が費やす最小(理想的)サイクル数を表す。多
数の先行項目をもつブロックについては、命令スケジュ
ーラへの入力が単にブロックにおける命令のシーケンス
となる。
【0054】ブロックBが独特の一連の先行項目ブロッ
ク、例えば、P1、P2・・・Pnを有していて、P1
がBの唯一の先行項目であり、P2がP1の唯一の先行
項目であり、・・・そしてPn−1がPnの唯一の先行
項目である場合には、命令スケジューラへの入力は、ブ
ロックの実行順序、即ちPn、Pn−1・・・P2、P
1そしてBにおけるブロックの命令の連鎖でなければな
らない。先行ブロックの命令を使用する目的は、特定の
ブロックが実行されるところのコンテクストに関するよ
り多くの情報を命令スケジューラに与えることにより命
令のより正確なスケジュールを得ることである。
【0055】ブロックP1ないしPnにおける命令の全
数をOFFSETとする。(ブロックが多数の先行項目
を有する場合には、OFFSETは0である。)次い
で、各命令Iに対し、理想的な命令スケジューリングの
もとで命令が発生待ち行列のヘッドにあると予想される
サイクル数を計算する。多数の先行項目をもつ基本的ブ
ロックにおける第1命令以外の全ての命令に対し、次の
ようにセットする。 min head q〔i〕=sched〔i+off
set〕−sched〔i+offset−1〕 多数の先行項目を有し、即ちoffset=0である基
本的ブロックの第1命令即ちI=0に対し、推定値mi
head
〔0〕=1を使用する。
【0056】多数の連続する命令が同じサイクルに発生
されるときには、第1命令のみが、min head
qアレーに非ゼロ値を有することに注意されたい。これ
は、多発生命令のグループにおいて、発生待ち行列のヘ
ッドには第1の命令しか現れないからである。この第1
命令は、「発生ポイント」と称される。性能カウンタ
は、発生ポイントである命令の性能データしか収集でき
ない。発生待ち行列において更に深部に同時に発生され
る他の命令に対する性能データは、使用できないので、
例えば、実行頻度のような性能データを以下に述べるよ
うに推論しなければならない。
【0057】ステップ3.幾つかのブロックに対する頻
度の推定:頻度を推定するための基本的な戦略は、命令
Iが動的なストールを伴わずに発生する場合に、サンプ
リングのエラー及び以下に述べる他の問題を無視する
と、その頻度が次の式で表されるという一般的な言説に
依存する。 頻度〔i〕=サンプル〔i〕/min head q〔i〕 式1 但し、サンプル〔i〕は、命令Iに対して同じカウント
である。min head q〔i〕が0である場合に
は、命令Iの頻度は、この式を用いて直接決定すること
ができない。
【0058】ある命令が動的なストールを招く場合、サ
ンプル〔i〕/min head q〔i〕の比は、頻度
より大きくなるだけである。というのは、サンプル
〔i〕は増加するが、min head q〔i〕は一
定に保たれるからである。頻度を推定するために好まし
い実施形態により使用される発見は、これら両方の言説
を利用する。特定の頻度等価クラスCに充分に多数の命
令が与えられると、幾つかの命令が動的なストールをも
たないと仮定することが妥当となる。従って、セットに
おける幾つかの最小の比{サンプル〔i〕/min
ead q〔i〕}を平均化することによりクラスCに
おける命令の実行頻度を推定することができる。ここ
で、INSTRUCTION Iは、クラスCにあり、
そしてIは、発生ポイントであり、即ちmin hea
q〔i〕>0である。
【0059】式1が導き出す頻度値が小さ過ぎる状態が
幾つかある。第1に、基本的ブロックBがCFGに多数
の先行項目を有するときには、上記ステップ2で決定さ
れたmin head qアレーは、不正確なものとな
る。例えば、制御が先行項目ブロックP1からブロック
Bに入るときは、Bの最初の命令が、P1の最後の命令
と共に二重発生されることがある。この場合に、ブロッ
クBのmin head
〔0〕は、0でなければな
らないが、ステップ2では、それが1にセットされる。
【0060】式1が導き出す頻度値が小さ過ぎる別の状
態は、命令が「長い依存性」を有するときに生じる。I
NSTRUCTION Iは、理想的なスケジュールに
基づいてINSTRUCTION Iを早期に発生でき
ない理由が、INSTRUCTION jにより使用さ
れたリソースをINSTRUCTION Iが必要とす
るためであるときに、先行するINSTRUCTION
jに対して依存性を有する。INSTRUCTION
jに対するINSTRUCTION Iの依存性は、
I>j+1の場合、即ちINSTRUCTION jと
Iとの間に付加的な命令があるときに、「長い依存性」
となる。
【0061】INSTRUCTION jとIとの間の
命令が動的なストールを招き、即ち介在する命令が発生
待ち行列のヘッドにおいて予想以上の時間を費やすとき
に、問題が生じる。その結果、INSTRUCTION
Iは、発生待ち行列のヘッドにおいて予想以下の時間
を費やすことになり、サンプル〔i〕は、予想より小さ
くなり、そして式1は、不正確な値を生じる。
【0062】この問題に対して少なくとも2つの救済策
がある。その1つは、頻度を推定するときに長い依存性
を有する命令を無視することである。別の救済策は、I
NSTRUCTION jに対して長い依存性を有する
INSTRUCTION Iに対し、サンプル〔i〕/
min head q〔i〕の比を、(サンプル〔j+
1・・・I〕の和)/(min head q〔j+1
・・・I〕の和)に置き換えることである。
【0063】推定方法の低レベルの細部の多くは、平均
化されるべき比をいかに選択するかを含む。高いレベル
においては、以下に実施される重要なポイントの幾つか
は、次のものを含む。等価クラスCが発生ポイントにお
いて命令を含み、そして以下の方法Cに使用されるがご
とき分析により決定されるように、命令が決して動的な
ストールを招いてはならない場合には、これらの発生ポ
イントに対して決定された比を使用するのが最良であ
る。以下のサブステップ3.c及び3.fを参照された
い。所与のプロセッサ構成の場合に、通常は、ストール
の時間長さに上限がある。この上限は、頻度についての
下限に換算することができる。以下のサブステップ3.
dを参照されたい。
【0064】サンプリングエラーがない場合には、スト
ールサイクルを全く生じないか又は僅かに生じるだけで
ある多数の発生ポイントが、ほぼ同じ比をもつことにな
る。サンプリングエラーは、比に若干の変化を導入する
が、最大の比は、おそらく、最小の比の1.5倍以下で
ある。以下のサブステップ3.gを参照されたい。ある
クラスが、非常に多数の発生ポイントを有する場合に
は、それらの発生ポイントのある最小の一部分が、動的
なストールを伴わずに発生しなければならない。従っ
て、ある最小数の比を平均化して、推定値を計算しなけ
ればならない。この発生ポイントを以前の発生ポイント
と共に使用して、サンプル又は分析における何らかの異
常のために不当に低いか又は高い比を破棄することがで
きる。サブステップ3.gを参照されたい。
【0065】ステップ3の詳細な説明 少なくとも1つの命令を含む各頻度等価クラスCに対
し、図10に示すように次のサブステップ3aないし3
hを実行する。 a.クラスCが少なくとも1つの発生ポイントを含み、
そして等価クラスCの全ての命令がサンプルカウント0
を有するときには、ステップ810において、Cの頻度
を0と推定する。さもなくば、サブステップ3.bに進
む。 b.クラスCの命令に対する全サンプルカウントが、例
えば、Cにおける発生ポイントの全数の4倍というスレ
ッシュホールドより小さいときには、ステップ820に
おいて、クラスCに対し推定を行わない。 c.ステップ830において、推定値の下限であるfr
eq lower boundを、クラスCにおける命
令の最大サンプルカウントをプログラムを実行した特定
のハードウェアに対して考えられる最大ストールサイク
ルで除算したものにセットする。例えば、特定のプロセ
ッサ実施形態では、ストールが256サイクルより決し
て長くならないことがある。freq lower
oundが1より小さい場合には、それを1にセットす
る。freq lower boundは、例えば、サ
ンプリングされた性能データの異常のために不当に低い
比を破棄するのに使用される。
【0066】d.命令は、例えば、方法Cの技術を使用
することにより動的なストールの全ての共通の原因を排
除できるときにはストール不能となる。ステップ840
において、アレーUnstallableRatios
(RATIOS)への次の比を計算する。即ち、DEP
(I)=0であるクラスCの各発生ポイントに対し、I
がストール不能である場合には、 サンプル〔i〕/min head q〔i〕 である。DEP(I)=0でないクラスCの各発生ポイ
ントに対し、DEP(I)+1ないしIがストール不能
である場合には、 (サンプル〔DEP(I)+1・・・I〕の和)/(m
in head q〔dep〔i〕+1・・・I〕の
和) である。アレーRATIOSが空でない場合には、クラ
スCの頻度をアレーRATIOSにおける比の平均値と
して推定する。但し、これは、平均値が少なくともfr
eq lower boundと同じ大きさの場合であ
る。さもなくば、サブステップ3.eへ進む。
【0067】e.DEP(I)=0であるクラスCのメ
ンバーの各発生ポイントに対し、 サンプル〔i〕/min head q〔i〕 である。DEP(I)=0でないクラスCの各発生ポイ
ントに対し、 (サンプル〔DEP(I)+1・・・I〕の和)/(m
in head q〔DEP〔I〕+1・・・I〕の
和) である。 f.freq lower boundより小さいRA
TIOSのエレメントは破棄する(ステップ860)。
他のエレメントがない場合には、クラスCに対する推定
は行わない。 g.freq upper boundより大きいRA
TIOSのエレメントは破棄する(ステップ870)。
好ましい実施形態においては、freq upper
boundは、次のように決定される。即ち、RATI
OSにおける最小のエレメントをxとすると、x<15
の場合には、次のようになる。 freq upper bound=MIN(20、2
*x) さもなくば、freq upper bound=1.
5*x
【0068】ここでの目的は、クラスCの発生ポイント
に対する頻度の適度に大きなサブセットを、クラスCの
実行頻度を推定するように平均化するための考えられる
候補として識別することである。アレーRATIOSの
長さが、クラスCの発生ポイントの数の1/8以下であ
る場合には、アレーRATIOSにおける頻度値は、サ
ンプリングエラー又は他の問題により異常に低くなるこ
とが考えられる。freq lower boundを
sqrt(2)*xにセットし、そしてサブステップ
3.eに戻ることにより、大きな値について検討する。
しかしながら、これが、クラスCに対してサブステップ
3.gを実行する3回目である場合には、クラスCに対
して推定は行わない。
【0069】h.ステップ880において頻度をN個の
最も小さい比の平均値として推定する。高いレベルにお
いては、解決される問題は、平均値に含むべき最も小さ
い比の数であるNを選択することである。Nを小さくす
ることと、Nを大きくすることの間にはテンションがあ
る。Nが小さい場合には、統計学的なサンプリングエラ
ー又はある異常により、低いサンプルカウントを有する
発生ポイントの比のみを平均化する機会が増加する。N
が大きい場合には、動的なストールが存在する発生ポイ
ントの比を含む機会が増加し、推定値を非常に大きなも
のにする。例えば、1つの実施形態は、Nを次のように
選択する。 N=MIN(length(RATIOS)、 MAX(3、発生ポイントの数/4、最小の比のせいぜ
い1.1倍である比の数))
【0070】ステップ4.推定値のローカル伝播の実
行:この点において、頻度等価クラスのあるものだけが
頻度推定値を有する。ローカル伝播は、「流入=流出」
制約を用いて、既存の推定値から付加的なクラスに対す
る頻度推定値を決定する(ステップ740)。制約は、
実行流が等価クラスに入る全回数が、実行流がそのクラ
スから出る全回数に等しくなければならないことを利用
する。例えば、1つの入力アークと、3つの出力アーク
をもつ基本的ブロックBを伴うCFG部分を考え、入力
アークの頻度が200で、そして3つの出力アークの頻
度が、左から右へ、未知、25及び100であると仮定
する。
【0071】制約「流入=流出」を使用して、部分Bの
頻度を200と決定することができる。次いで、最も左
の既存のアークの頻度は、75、即ち(200−(25
+100))と計算することができる。多数(N)の到
来するアークをもつブロックがあり、即ちNがゼロ0よ
り大きく、そしてN個のアークのクラス及びブロックの
クラスの1つ以外の全ての頻度に対して推定値があると
きには、単一の伝播が可能である。伝播は、次の式を解
くことにより行われる。即ち、単一の未知の頻度に対
し、 freq(class(block)) = sum[i=1,N] of freq(class(incoming arc I)) 式2 未知の頻度の解が負の場合には、その解は使用しない。
【0072】同様に、N個の出て行くアークをもつブロ
ックがあり、即ちNがゼロより大きく、そしてN個のア
ークのクラス及びブロックのクラスの1つ以外の全ての
頻度に対して推定値があるときには、単一の伝播が可能
である。伝播は、次の式を解くことにより行われる。即
ち、単一の未知の頻度に対し、 freq(class(block)) = sum[i=1,N] of freq(class(outgoing arc I)) 式3 未知の頻度の解が負の場合には、その解は使用しない。
制約N>0は、式2及び3に対しCFG703の入口及
び出口ブロックを取り扱うことに注意されたい。ローカ
ル伝播を行うために、負の頻度を導入するもの以外、単
一の伝播がそれ以上考えられなくなるまでは、単一の伝
播を単に実行する。
【0073】ステップ5.若干のサンプルをもつクラス
の推定の実行:この点において、推定値をもたないクラ
スがまだ若干存在する。というのは、それらが若干のサ
ンプル又は発生ポイントを含むからである。ステップ5
(750)は、このようなクラスに対し自然のままの推
定を行う。少なくとも1つの発生ポイントを含むが、頻
度推定値に欠けるクラスCに対して、クラスCの頻度を
推定する。クラスCにおける命令のサンプルの和を、M
AX(1、Cに対するmin head qアレーの
和)で除算する。ステップ6 .ローカル伝播の繰り返し:ステップ760
では、ローカル伝播が付加的な推定値と共に繰り返され
る。
【0074】ステップ7.残りの流れを用いた推定の実
行:この点において、幾つかのアークが、依然として、
推定値をもたないクラスにある。頻度200の1つの到
来するアークと、未知の頻度の2つの出て行くアーク
と、既知の頻度100の1つの出て行くアークとをもつ
単一の基本的ブロックBを伴うCFG部分Bについて考
える。ここでは、ローカル伝播は不可能である。という
のは、推定値をもたない2つ以上の出て行くアークがあ
るからである。出て行くアークに対する自然のままの推
定は、残りの流れ(200−100)を、推定値をもた
ない出て行くアークの数で除算することである。
【0075】ステップ770は、推定値をもたないクラ
スにおいて全てのアークを考えることによりこのような
推定を行う。各アークの両エンドポイントを検査するこ
とによりこれを行う。更に、残りの流れが負である(こ
れは、推定値が不正確であるために起こり得る)ときに
はエンドポイントを無視する。アークAがブロックBに
接続されたsibling arcs(アークA、ブロ
ックB)を、アークAが接続されたのと同じ側でブロッ
クBに接続されたアークA’(A以外)のセットして定
義する。例えば、アークAがブロックBに入る場合に
は、sibling arcs(A、B)は、ブロック
Bに入るA以外のアークのセットである。
【0076】次いで、ブロックBに接続されたアークA
に対する残りの流れは、sibling arcs
(A、B)にあって且つ頻度推定値freq(クラス
(A’))を、(頻度推定値+1をもたないsibli
ng arcs(A、B)内のアークの数)で除算した
ものを有するアークA’に対し、 freq(class(B))−sum freq(c
lass(A’)) となる。推定値をもたずそして少なくとも1つのアーク
を含まない各クラスCに対し、先ず、次の初期指定を行
う。 N:=0、及び 流れ:=0 次いで、クラスCの各アークAと、Aの各エンドポイン
トB、即ちAのソース又はターゲットブロックにおける
Bとに対し、推定値freq(クラス(b))及びre
sidual flow(b、A)≧0の場合には、 流れ:=流れ+residual flow(B、
A)、及び N:=N+1 となる。最後に、N>0の場合には、Cの頻度を(流れ
/N)と推定する。
【0077】ステップ8.推定値への信頼値の指定:推
定値の幾つかは、他のものよりも精度が高くなり勝ちで
ある。例えば、サブステップ3で形成されたほとんどの
推定値は、おそらく、エラーを蓄積することのあるロー
カル伝播により形成される推定値、又は若干のサンプル
又は若干の発生ポイントをもつブロックに対して自然の
ままの推定を行うステップ5で形成された推定値、或い
は残りの流れを用いてアークに対して自然のままの推定
を行うステップ7で形成された推定値よりも精度が高
い。更に、ステップ3で作られる推定値の場合には、精
度が次のものに相関する。 1)平均値に寄与する多数の発生ポイントを有する(サ
ブステップ3.h)。及び 2)平均値に寄与する多数の発生ポイントの比に小さな
変化しかもたない。従って、ステップ780において
「信頼値」を指定することにより推定値の精度を確立す
ることができる。好ましい実施形態は、3つの信頼値、
即ち低、中間及び高の信頼値を有する。
【0078】高信頼性の推定値は、次の通りである。 a)同じ基本的ブロックに少なくとも2つの発生ポイン
トをもつクラスに対してステップ3.aで形成された推
定値; b)ステップ3.dで形成された推定値;及び c)少なくとも3つの比(N≧3)(但し、最大の比
は、最小の比の1.2倍以上)を平均化することにより
ステップ3.hで形成された推定値≧100。 しかしながら、ステップ3.gが推定に対して2回以上
行われた場合には、推定値の信頼性が低い。
【0079】中程度の信頼性の推定値は、次の通りであ
る。 a)2つの発生ポイントをもつクラスに対してステップ
3.aで形成された推定値; b)ステップ3で形成された推定値≧100。しかしな
がら、ステップ3.gが推定に対して2回以上行われた
場合には、推定値の信頼性が低い;及び c)完全なCFS(即ちアークの欠落がない)に対して
ステップ4(ローカル伝播)で形成された推定値≧10
0。しかしながら、ステップ3.gが、「流入=流出」
方程式に使用される推定に対して2回以上行われた場合
には、推定値の信頼性が低い。 低信頼性の推定値は、残りの推定値である。
【0080】ステップ9.(グローバルな)制約ソルバ
ーの使用:この点において、頻度等価クラスのほとんど
に対し推定値及び信頼値が存在する。しかしながら、推
定値は、流れ制約に違反することがある。図8のステッ
プ790は、推定値が適度な限界を越えない限り、例え
ば、負の推定値が許されることがない限り、制約ソルバ
ーを使用して、制約を満足するように推定値を修正す
る。制約ソルバーの重要な特性は、次の通りである。 (1)ソルバーは、一次方程式の過少制約系を取り扱わ
ねばならず、これらはAx=bと表すことができる。但
し、Aは、制約のマトリクスであり、そしてx及びb
は、ベクトルである。 (2)変数の初期推定値のベクトルxと、変数の重みの
ベクトルwとが与えられると、ソルバーは、ベクトルx
−x’の重み付けされた大きさを最小にする解ベクトル
x’を見出す。重みのベクトルwに対するベクトルvの
重み付けされた大きさは、次の通りである。 sqrt(sum〔i=1、n〕(w(I)*(v
(I)2 ))
【0081】図8に示すように、ガウスの排除及びグラ
ム−シュミット正規直交化のような標準的な線型代数技
術を使用してこのようなソルバーを簡単に構成すること
ができる。 a)ステップ791において流れ制約をもつマトリクス
Aを設定する。推定値を有する各頻度等価クラスごとに
マトリクスAの1つの列を使用する。各流れ制約ごとに
1つの行を使用する。流れ制約は、ステップ4の式2及
び式3をCFGのブロックに適用することにより得られ
る。しかしながら、流れ制約は、これが推定値をもたな
い頻度等価クラスを指すときには破棄され、或いは流れ
制約は、式2又は式3の全ての変数が同じ頻度等価クラ
スにあるときには全て0の行を形成する。
【0082】流れ制約は、独特の1組の頻度値を決定す
るには不充分であるから、マトリクスAは、一次方程式
の過少制約系となる。 b)ステップ792において頻度推定値でベクトルxを
初期化する。x〔i〕は、頻度等価クラスに対する推定
値である。 c)ステップ793において頻度クラスIに対する重み
ベクトルw〔i〕を、頻度クラスIにおけるブロック及
びアークの数に推定値x〔i〕のconfidence
weightを乗算したものを、x〔i〕=0の場合
は1で除算し、さもなくば、x〔i〕で除算したものに
等しくなるように初期化する。但し、x及びwは、長さ
が等しい。
【0083】これらの重みは、流れ制約に違反する推定
値の相対的な変化を制御するために次のステップに使用
される。例えば、制約マトリクスAが、2つの推定値の
みを等しくすべきであることを示す場合には、推定値x
〔1〕が次の量だけ増加される。 (w〔1〕/(w〔1〕+w〔2〕))x(x〔2〕−
x〔1〕) 高い信頼性の推定値の重みは、低い信頼性の推定値より
も大きくなければならない。好ましい実施形態は、変数
confidence weightを次の値にセット
する。信頼性の低い推定値の場合は1;中程度の信頼性
の場合は100;そして信頼性の高い推定値の場合は1
0000。
【0084】又、推定値の重みは、それらの大きさに逆
比例しなければならない。従って、同じ信頼値をもつ競
合する推定値は、各々、同じ割合だけ調整される。例え
ば、頻度が2つの到来するアークについて10及び1で
ありそして出て行くアークについて10であって、各推
定値が同じ信頼値を有するような基本的ブロックを有す
る流れグラフについて考える。重みが全て等しい場合に
は、制約ソルバーは、各々、値9.67、0.67及び
10.34を指定する。この解決策において、右のアー
クに対する推定値が33%だけ変更される。
【0085】重みが正規化されるときには、この解決策
は、各々、9.52、0.95及び10.47を形成す
る。従って、推定値の各々は、その元の値のほぼ5%変
更される。 d)ステップ794において、制約ソルバーを使用し、
重みについて元の推定値に最も密接な解を見つける。 e)ステップ795において、下限より小さい解をその
下限にリセットする。推定値の下限は、ステップ3.g
ではfreq lower boundであり或いはス
テップ3で推定値が形成されない場合には0である。 f)ステップ796において、元の値から10%以上変
化した推定値に対する信頼値を「低い信頼性」にリセッ
トする。
【0086】方法C:ストールサイクルの説明 図11ないし14を参照して、方法Cを以下に説明す
る。全体的な解決策 各命令ごとにストールサイクルの平均数が決定される
と、次のステップは、ストールに対して考えられる説明
を推論することである。これは、システム設計者が性能
問題の原因を理解すると共に、適当な解決策を案出する
上で助けとなる。
【0087】性能カウンタは、動的なストールを生じる
ことのある事象、例えば、データキャッシュミスの発生
をサンプリングするのに使用できる。しかしながら、ほ
とんどのシステムにおいては、このような性能カウンタ
は、どの命令が所与の事象を生じさせたかを正確に識別
しない。方法Cは、方法Bで計算された実行頻度及び命
令当たりのサイクルの情報を、手順に対する制御流れグ
ラフと共に使用して、各動的なストールに対する理由を
決定する。
【0088】図11は、ストールサイクルに対する考え
られる説明を見出すための全体的な解決策を示す。ステ
ップ911において、各基本的なブロックの命令は、プ
ロセッサパイプラインの詳細なモデルを用いてスケジュ
ールされる。パイプラインのオペレーションの記録は、
各命令がストールされたサイクル数(920)、なぜ命
令がストールされたかの理由、及びもし適当であれば、
そのストールを生じさせた「カルプリット(罪人)」と
称する手前の命令(912)とを生じる。例えば、スト
ールされた命令は、カルプリット命令により計算された
結果を必要とする。
【0089】ステップ931において、既知の静的なス
トールサイクル(920)が上記のように決定された全
ストールサイクル(930)から減算されて、各命令ご
とに動的なストールサイクル(940)を形成する。動
的なストールサイクルとは、プロセッサパイプラインに
より課せられる制約では説明できないストールサイクル
である。
【0090】ステップ951において、命令シーケンス
及び個々の命令の特性、制御流れグラフ、及び上記のよ
うに得られた頻度推定値を含む(これらに限定されな
い)全ての使用可能な情報(950)を分析することに
より、動的なストールサイクルのための考えられる説明
が識別される。この分析は、動的なストールのための考
えられる理由、及びもし適当であれば、カルプリット
(全体的に952)を形成する。
【0091】特定の命令により被った動的なストールの
考えられる説明を見出すために(ステップ951)、命
令が一般にストールを生じるようにさせる全ての既知の
理由が考慮される。これら理由の幾つかは、特定の場合
には、除外(又は排除)することができる。この排除プ
ロセスを以下に詳細に説明する。以下に述べる分析技術
に加えて、種々の種類の事象をカウントするハードウェ
ア性能カウンタを用いて、動的ストールの理由を識別す
ることもできる。Iキャッシュミスのような事象に対
し、各命令ごとにこれら事象の頻度を識別するサンプル
を得ることができる。
【0092】この情報は、命令について観察された動的
なストールに対する各考えられる理由の寄与を決定する
のに使用できる。所与の事象についてのサンプルは、各
命令ごとに、その命令に対して事象が生じた回数の適当
なカウントを与えねばならない。ある種の事象について
は、これは、方法Dにおいて以下に述べる形態のハード
ウェアサポートを必要とする。
【0093】一般に、除外できない理由は、特定のスト
ールに対する考えられる説明として与えられる。排除
は、各動的なストールに対し独特の説明を常には生じな
いが、しばしばそのようにすることができる。実際に、
命令は、多数の理由で同時に又は異なる時期にストール
されることがある。たとえ独特の理由を与えることがで
きなくても、全ての考えられる理由を与えることは、ユ
ーザがその可能性を絞り込む上で助けとなろう。動的な
ストールの幾つかの共通の原因を適当な条件のもとでい
かに除外できるかについて以下に説明する。
【0094】Iキャッシュ又はITBミスの除外 動的なストールは、命令キャッシュ(Iキャッシュ)が
命令をフェッチするためにアクセスされたが、必要な命
令がIキャッシュにないときに生じる。これをIキャッ
シュミスと称する。この場合に、命令は、待ち時間の長
いメモリからフェッチしなければならない。同様に、動
的なストールは、命令変換のルックアサイドバッファ
(ITB)が命令の仮想メモリアドレスを物理的なメモ
リアドレスに変換するためにアクセスされたが、必要な
変換エントリーがITBにない(ITBミスと称する)
ときに生じる。この場合には、命令フェッチを続ける前
に必要なエントリーでITBを更新しなければならな
い。ストールされる命令の直前にフェッチされて実行さ
れる命令のアドレスによりある条件が満足される場合
に、Iキャッシュ又はITBミスを除外することができ
る。
【0095】図12は、Iキャッシュミスについて考え
るケースを示す。(ITBミスは、以下に述べる。)3
つの基本的なブロック1031、1032、1033が
図示されている。ブロック1031及び1032は、ブ
ロック1033をコールし、アーク1033−1034
は、制御流れグラフに表されたようにそれらの間に流れ
る。又、命令1011−13がブロック10のライン1
021−1024にいかにマップされ、そして基本的ブ
ロック1033の命令がメモリにいかにレイアウトされ
るかも図示されている。図12において、命令1011
−1013は、斜線で示されており、そしてこれらライ
ン間の分離は、破線で示されている。
【0096】命令1011、1012、1013により
示されたように、多数のケースについて考慮する。スト
ールされた命令が基本的ブロックの始めに存在しない場
合には、2つのサブケースがある。その命令、例えば、
1012がキャッシュラインの始めにある(換言すれ
ば、命令のアドレスがキャッシュラインサイズの整数倍
である)場合には、Iキャッシュミスを除外することが
できない。というのは、命令が別のキャッシュラインに
おいてその直前で実行されるからである。ストールされ
た命令(例えば、1013)がキャッシュラインの始め
に存在しない場合には、Iキャッシュミスを除外するこ
とができる。
【0097】最終的に、命令、例えば1011が、基本
的ブロックの始めに存在する場合には、それがキャッシ
ュラインの始めにも存在するかどうかに関わりなく、以
下先行項目ブロックと称する全ての基本的ブロック、例
えば、1031、1032の最後の命令が検査される
(先行項目ブロックから、制御は、ストールされた命令
を含む基本的ブロック、例えば、1033へ流れる)。
これらの命令が、全て、ストールされた命令、例えば1
011と同じキャッシュラインにある場合には、Iキャ
ッシュミスを除外することができる。命令は、それらの
アドレスが、キャッシュラインサイズで除算したときに
同じ商を生じる場合には、同じキャッシュラインに存在
する。この分析は、以前に得られた頻度推定値に基づ
き、ストールされた命令を含む基本的ブロックよりも相
当に低い頻度で実行される先行項目ブロックを無視す
る。
【0098】この分析が、データ及び命令の両方に対し
て単一のキャッシュしかもたないプロセッサ又はコンピ
ュータシステムに適用される場合には、1つの付加的な
チェックを行わねばならない。ストールされた命令がメ
モリをアクセスする直前にいずれか1つの命令が実行さ
れる場合には、Iキャッシュミスを除外することができ
ない。これは、メモリアクセスが、ストールされた命令
を含むキャッシュラインを変位して、アクセスされてい
るデータのための余地を作るからである。
【0099】上記分析は、命令の実行が、制御流れグラ
フにより指示される順序を常にたどることを仮定する。
割り込みは、この仮定に違反させることがある。しかし
ながら、割り込みは、あまり頻繁に生じることがなくそ
して命令ストリームにおいてランダムなポイントで生じ
るので、この仮定は、統計学的な意味では合理的に保持
される。更に、例外も、この仮定に違反する。
【0100】或いは又、Iキャッシュミスの影響は、I
キャッシュミス事象についてプログラムカウンタを統計
学的にサンプリングすることにより評価することができ
る。この方法は、時間経過に伴い、Iキャッシュミスの
ために各命令がいかに頻繁にストールされるかの正確な
推定値を形成することができる。この推定値から、Iキ
ャッシュミスに起因し得るストールサイクル(この命令
により被る)の数についての上限が計算される。より詳
細には、上限は、次のものの積である。 (a)この命令に対して観察されるIキャッシュミス事
象の数; (b)Iキャッシュミスに対するサンプリング周期(こ
の多数のIキャッシュミスのうちの各1つがサンプリン
グされる);及び (c)Iキャッシュミスの最大ペナルティ(通常は、メ
インメモリのアクセス待ち時間)。
【0101】その結果は、ストールされた命令が実行さ
れる推定回数で除算され、平均値が得られる。この平均
値が小さい(例えば、サイクルの半分未満)場合には、
Iキャッシュミスを、ストールについて考えられる説明
として除外できる。さもなくば、理由がユーザに情報と
して与えられる。ITBミスの分析も同様であるが、前
記説明の「キャッシュライン」を「仮想メモリページ」
として解釈しなければならない。
【0102】Dキャッシュ又はDTBミスの除外 又、動的なストールは、データキャッシュ(Dキャッシ
ュ)がロード命令でアクセスされるが、必要なデータが
Dキャッシュに存在しないときにも生じる。これは、D
キャッシュミスと称する。同様に、動的なストールは、
データ変換ルックアサイドバッファ(DTB)がデータ
の仮想メモリアドレスを物理的なメモリアドレスに変換
するためにアクセスされたが、必要な変換エントリーが
DTBに存在しない(DTBミスと称する)ときにも生
じる。
【0103】異なるプロセッサ実施形態は、Dキャッシ
ュミス又はDTBミスが生じたときには異なる振る舞い
をする。ある実施形態では、ロード命令自体がストール
される。この場合に、Dキャッシュミス又はDTBミス
は、ストールされた命令がロード命令でない場合に除外
することができる。他の実施形態では、ロードは遅延を
伴わずに発生されるが、ロードの結果を使用する命令
は、その結果が実際に使用できるようになるまでストー
ルされる。この場合には、命令ストリームにおいてレジ
スタが読み取られそして書き込まれる順序を分析しなけ
ればならない。
【0104】Dキャッシュミス又はDTBミスは、命令
ストリームにおいてレジスタが読み取られそして書き込
まれる順序及び仕方によってある条件が満足される場合
には除外することができる。ストールされた命令がDキ
ャッシュミス又はDTBミスによりストールされたかど
うかを決定するために、それが参照する各レジスタが考
慮される。図14は、データミスによるストール除外す
るために実行することのできる分析を示す。図14にお
いて、ブロック1201からブロック1202又はブロ
ック1203へ実行が行われ、ブロック1204は、ブ
ロック1202又は1203が実行された後に実行され
る。命令1213は、例えば、レジスタt0による参照
を分析するに必要なデータが直ちに得られないことによ
りストールされる。
【0105】レジスタt0については、ストールされた
命令1213のレジスタt0を最後に参照した命令12
11−1212が、以下に詳細に述べる仕方で識別され
る。このような命令がメモリからレジスタt0へデータ
をロードする場合には、Dキャッシュミス又はDTBミ
スがストールのための考えられる説明とみなされ、その
命令は、カルプリットとして識別される。これは、スト
ールされた命令により参照された各レジスタに適用され
る。これらレジスタのいずれもカルプリットを生じない
場合には、Dキャッシュミス又はDTBミスがストール
のための考えられる説明として除外される。図14にお
いて、例えば、Dキャッシュミス又はDTBミスは、ロ
ード命令1212で、カルプリットと考えられる。
【0106】この分析で考慮すべき全ての命令を見出す
ために、同じブロック内のストールされた命令より前の
命令が、最初に、それらのアドレスの下降順で検査され
る。それらのいずれもレジスタを参照しない場合には、
制御がそのストールされた命令へと流れるところの基本
的ブロックの命令も検査される(これも所与の基本的ブ
ロックにおける命令のアドレスの下降順に)が、そのス
トールされた命令を含むものより著しく低い頻度で実行
される基本的ブロックは、無視することができる。スト
ールされた命令の頻度推定値の小さな割合としてスレッ
シュホールドを計算することができ、そして頻度推定値
がこのスレッシュホールドより低い基本的ブロックを無
視することができる。
【0107】基本的ブロックのこの検討は、例えば、ス
トールされた命令を含む基本的ブロックから始めて逆の
制御流れグラフ(元のグラフにおける全ての制御流れア
ークの方向を逆転することによって形成された)におい
て深さ優先探索を行うことにより実行できる。これにつ
いては、ホプクロフト氏等の「グラフ操作のための効率
的なアルゴリズム(Efficient Algorithms for Graph Ma
niplation)」、コミュニケーションズ・オブ・ザ・AC
M、16(6):372−378、1973年を参照さ
れたい。この探索において、基本的なブロックに隣接す
るものは、その基本的ブロック自体が当該レジスタを参
照する命令を含む場合には、調べられる必要がない。
【0108】好ましい実施形態は、データ及び命令が個
別のキャッシュ及び個別の変換ルックアサイドバッファ
を有するコンピュータシステムを参照して説明したが、
Iキャッシュ、ITB、Dキャッシュ及びDTBミスを
除外するための方法は、データ及び命令が単一のキャッ
シュを共用するか、又はデータ及び命令が単一の変換ル
ックアサイドバッファを共用するか、或いはその両方で
あるようなプロセッサ及びコンピュータシステムにも適
用できる。
【0109】しかしながら、データ及び命令が単一のキ
ャッシュ又は変換ルックアサイドバッファを共用する場
合には、Dキャッシュ又はDTBミスに対して付加的な
理由を考慮しなければならない。例えば、メモリ位置A
に1つの命令がロードされ、同じ基本的ブロックにおけ
るその後の命令がその命令自体にキャッシュミスを招き
そしてキャッシュから位置Aのデータを変位し、次い
で、同じ基本的ブロックに依然として存在するその後の
命令がAにロードしようと試み、Aの第2のロードがキ
ャッシュにおいてミスとなると仮定する。Iキャッシュ
ミスに関する情報を用いて、このような状態を除外する
ことができる。
【0110】分岐予想ミスの除外 又、動的なストールは、分岐命令の実際のターゲットが
プロセッサの分岐予想ロジックにより予想されるターゲ
ットと相違するときにも生じる。これは、分岐予想ミス
と称する。ここでは、「分岐命令」は、プログラムの制
御流を変更し得る命令を意味し、即ちそれらは、一般に
「分岐」と称される命令を含むだけでなく、「ジャン
プ」、サブルーチンコール、及び復帰命令等も含む。
【0111】いかに多くの分岐予想ミスがストールに寄
与するかは、制御が以下に述べるようにストールされた
命令に到達するときに生じ得る分岐予想ミスの頻度につ
いての上限を計算することにより推定できる。分岐予想
ミスは、その寄与がある適当なスレッシュホールドより
低い場合にはストールのための考えられる説明として除
外することができ、或いは又、その寄与は、それがいか
に小さくてもユーザに与えることができる。基本的ブロ
ックの始めにストールされた命令をいかに取り扱うかに
ついて以下に説明する。ストールされた命令が基本的ブ
ロックの第1の命令でない場合は、分岐予想ミスをスト
ールの考えられる説明として直ちに除外することができ
る。それ以上の分析は、必要とされない。
【0112】ストールされた命令の直前の分岐予想ミス
の頻度の上限を見出すために、その命令の直前に実行さ
れる全ての基本的ブロックが、図13に示すように検討
される。この説明上、これらの基本的ブロックは、先行
項目ブロック(例えば、1101、1102、110
3、1104)と称され;これら先行項目ブロックから
ストールされた命令(subq)を含む基本的ブロック
への制御流れアークは、先行項目アーク(例えば、11
11、1112、1113、1115)と称され;そし
て先行項目ブロックの最後の命令は、先行項目命令(例
えば、addq、br、jmp及びbeq命令)と称さ
れる。例えば、全ての先行項目ブロックが未知である場
合には、基本的ブロックは、未知のコールされたサブル
ーチンからの「戻り」命令のターゲットであり、従っ
て、未知の先行項目は、悲観的に、常に予想ミスである
と仮定することができる。
【0113】ストールされた命令について計算されるべ
き限界1122は、各先行項目命令に1つづつある個々
の限界の和である。ここの限界は、ボックス1121と
して示されている。4つの形式の先行項目命令がある。
最初の4つが図13に示されている。即ち (1)基本的ブロック1101におけるaddq命令の
ような非分岐命令。個々の限界は、ゼロにセットされ、
予想を行う必要がないので分岐予想ミスは生じない。残
りのケースは、分岐命令−−実行の流れを変更し得る命
令に関する。 (2)基本的ブロック1102におけるbr命令のよう
に、ターゲットアドレスが動的なプログラムの振る舞い
に依存しない分岐命令(通常は無条件分岐)。個々の限
界は、ゼロにセットされ、ターゲットアドレスは以前の
確実性で分かるので分岐予想ミスは生じない。 (3)予想されたターゲットアドレスが実行可能にエン
コードされる(例えばマシンコードに埋め込まれたプロ
グラムカウンタオフセットとして)分岐命令。その例
は、基本的ブロック1103におけるジャンプ命令であ
る。予想されるターゲットアドレスは、実行可能性を検
査することにより(例えば、命令をデコードすることに
より)決定される。ターゲットアドレスは、ストールさ
れた命令のアドレスと比較される。
【0114】2つのアドレスが同一である場合には、個
々の限界がゼロにセットされ、即ち予想であったために
制御がストールされた命令に移行される場合には分岐予
想ミスは生じない。さもなくば、個々の限界は、それに
対応する先行項目アークのための頻度推定値にセットさ
れ、即ちストールされた命令への各制御の移行は、予想
とは異なり、ひいては、予想ミスとなる。例えば、アー
ク1113の限界は、予想された経路がアーク1113
であった場合にゼロにセットされるが、予想された経路
がアーク1114であった場合にはアーク1113の頻
度推定値にセットされる。 (4)プロセッサのランタイム状態に基づき、制御を静
的に知られたターゲットアドレスへ条件移行させる分岐
命令。その例は、基本的ブロック1104におけるbe
q命令である。この形式の命令の場合に、多くのプロセ
ッサ設計では、動的な分岐予想技術を使用して、分岐が
命令の以前の実行で行われたかどうかに基づき分岐が行
われる(即ち、制御が移行される)かどうかを予想す
る。
【0115】このような技術が、分析されているプロセ
ッサに使用される場合には、個々の限界が、先行項目ア
ークの頻度推定値か、又は図13のアーク1116のよ
うに先行項目アークから発せられる他の制御流アーク
(以下、別のアークと称する)の頻度推定値から計算さ
れた推定値かのいずれか小さい方にセットされる。この
後者の推定値は、分岐がそれ以外のものより非常に頻繁
に行われるか又はその逆である場合に、動的な分岐予想
メカニズムがおそらく命令のほとんどの実行においてそ
の結果を正しく予想するという仮定に基づいて選択され
る。
【0116】特に、推定値は、動的な分岐予想メカニズ
ムが、デジタル・イクイップメント社のアルファ211
64プロセッサに使用されるメカニズムと同様に、1つ
以上のビットをもつ経過テーブルを使用する場合には、
別のアーク1116の頻度推定値となる。これは、図1
3にアーク1115として示されたケースである。 (5)他の分岐命令(図13には示さず)。上記した以
外の他の形式の分岐命令については、上記分析を使用し
て、分岐予想ミスの頻度に関する限界を推定できるが、
他の点では、個々の限界が先行項目アークの頻度推定値
にセットされ、このアークに沿った各制御移行は、悲観
的に予想ミスであると仮定される。
【0117】次いで、分岐予想ミスの頻度についての上
限を使用して、所与の命令のストールサイクルに対する
分岐予想ミスの寄与を推定することができる。特に、こ
の寄与は、次のように計算することができる。分岐予想
ミスの頻度の上限を次のもので除算する:ストールされ
た命令を常に含む基本ブロックの頻度:ペナルティ。但
し、「ペナルティ」は、分岐予想ミスの間に被るパイプ
ラインストールサイクルの数である。この数は、特定の
プロセッサ実施形態に基づく。
【0118】同期の除外 あるプロセッサアーキテクチャーは、他のプロセッサ、
又は同じプロセッサで実行された以前の命令との同期オ
ペレーションを実行する命令を有する。これらの同期オ
ペレーションも、動的なストールを導入し得る。例え
ば、デジタル・イクイップメント社のアルファマイクロ
プロセッサアーキテクチャーは、マルチプロセッサの他
のプロセッサから見てプロセッサのメモリオペレーショ
ンを直列化するために動的なストールサイクルを導入す
る「メモリバリア」命令(mb)を有する。「トラップ
バリア」命令(trapb)は、全ての先行する命令が
トラップを招くことなく完了するよう保証されるまで動
的なストールを導入する。他のプロセッサアーキテクチ
ャーは、同様の機能のための命令を有する。同期は、ス
トールされた命令が同期を実行しない場合にストールの
考えられる説明として除外することができる。
【0119】デジタル・イクイップメント社のあるアル
ファマイクロプロセッサでは、mb命令は、その後に生
じる次のメモリアクセス命令にストールを生じさせる。
これらプロセッサでは、mb命令を介しての同期は、ス
トールされた命令がメモリアクセス命令でないか、又は
メモリアクセス命令ではあるがその直前にmb命令が生
じない場合には、ストールの考えられる説明として除外
することができる。同様に、これらプロセッサでは、t
rapb命令自体は、全ての先行する命令がトラップを
招くことなく完了するよう保証されるまでストールを生
じ、trapb命令を介しての同期は、ストールされた
命令それ自体がtrapb命令でない限り、ストールの
考えられる説明として除外することができる。
【0120】実行ユニットの競合の除外 又、動的なストールは、命令が実行準備されたときに使
用できない1つ以上のプロセッサ実行ユニットを命令が
必要とする場合にも生じる。例えば、実行ユニットは、
手前の命令を実行している間には使用できない。この種
のストールを生じる実行ユニットのセットは、プロセッ
サの実施形態に依存する。実行ユニットは、メモリアク
セスユニット、レジスタオペレーションユニット、整数
乗算及びフローティングポイント除算ユニットを含む。
このような実行ユニットの各々に対し、ストールされた
命令がその実行ユニットを必要としない場合には、競合
をストールの考えられる説明として除外することができ
る。例えば、「add」命令は、フローティングポイン
ト除算ユニットの使用と競合しないので、決してストー
ルされない。
【0121】書き込みバッファオーバーフローの除外 又、動的なストールは、記憶命令が発生準備されたが、
メモリ書き込みオペレーションを取り扱うプロセッサの
書き込みバッファが、まだ処理されている手前の書き込
み要求のためにいっぱいである場合にも生じる。これ
は、書き込みバッファオーバーフロート称される。
【0122】ストールされた命令が記憶でない場合に
は、書き込みバッファオーバーフローは、ストールの考
えられる説明として除外することができる。さもなく
ば、「最近実行された」命令がいずれも記憶でない場合
にはおそらく考慮されない。より詳細には、同じ基本的
ブロックにおけるストールされた命令の前の命令は、そ
れらのアドレスの下降順に検査される。これらの命令が
いずれも記憶でない場合には、制御がそのストールされ
た命令へと流れるところの基本的ブロックの命令も検査
されるが、そのストールされた命令を含むものより相当
に低い頻度で実行される基本的ブロックは、無視するこ
とができる。Dキャッシュ又はDTBミスの取り扱いに
ついて既に述べた探索技術をここに適用することができ
る。探索は、記憶命令又は手順のエントリーポイントに
到達したときに終了する。
【0123】ストールの他の原因の除外 上記の説明は、既存のプロセッサにおけるパイプライン
ストールのほとんどの一般的な理由を網羅する。現在又
は将来のプロセッサにおける他の理由は、所与の形式の
命令をストールさせることのある命令及びメカニズムに
より必要とされるリソースを決定し、ひいては、静的な
ストールと、動的なストールの考えられる理由とを識別
するためにプロセッサ実施形態の同様の分析により除外
することができる。動的なストールが考えられる場合に
は、所与の命令へと通じる命令を上記のように検査し、
それらのいずれかが所与の命令をストールさせるかどう
か決定することができる。
【0124】方法及び装置D:「リタイア」された命令
を正確に測定するハードウェア性能カウンタ 本発明の好ましい実施形態において、命令の実行頻度
は、「リタイア」カウンタを含む特定設計のハードウェ
アを用いて直接測定することができる。リタイアカウン
タは、プログラムの各命令がリタイアされる回数に関す
る統計学的にサンプリングされた情報を与える。
【0125】特に、図15に示すように、ハードウェア
1300は、直列接続された命令キャッシュ(Iキャッ
シュ)1310、フェッチユニット1320、発生待ち
行列1330、実行パイプライン1340、及びリタイ
アユニット1350を備えている。リタイアユニット1
350は、リタイアカウンタ1360及び内部プロセッ
サレジスタ1370に接続される。更に、ハードウェア
は、割り込みハンドラー1380及び性能データ139
0を記憶するメモリ1301である。
【0126】ハードウェアのオペレーション中に、フェ
ッチユニット1320は、Iキャッシュ1310から命
令をフェッチし、発生待ち行列1330に入れる。命令
は、発生待ち行列から実行パイプライン1340へ送ら
れる。好ましい実施形態において、単一のプロセッササ
イクル中に多数の命令を発生することができる。命令が
首尾良く完了すると、リタイアユニット1350がリタ
イアカウンタ1360を増加する。リタイアされた命令
に関連するプログラムカウンタ(pc)値がIPR13
70に記憶される。カウンタ1360は、割り込み信号
をライン1361に周期的に発生する。これに応答し
て、割り込みハンドラー1380は、カウンタ1360
及びIPR1370をサンプリングし、性能データ13
90を発生することができる。サンプリングされた性能
データは、特定のプログラムアドレス(pc値)の命令
がリタイアされる回数に実質的に比例する。
【0127】カウンタに累積される「リタイア」事象の
数は、カウンタの特定ビットのオーバーフロー時に割り
込みを発生するようにカウンタをプリセットすることに
より選択することができる。カウンタ1360は、セッ
トライン1362上の信号によりセットすることができ
る。割り込みと割り込みとの間の任意の間隔は、割り込
みハンドラーの終りのオーバーフロービット位置をセッ
トすることにより選択できる。ランダム長さの間隔を選
択することができる。或いは又、カウンタがカウントダ
ウンレジスタとして実施される場合には、割り込みと割
り込みとの間の間隔は、カウンタを選択された値にプリ
セットすることにより選択できる。ここでは、カウンタ
は、過少流即ちゼロ値の際に割り込む。
【0128】性能カウンタの公知の実施形態では、割り
込みハンドラーは、一般に、この割り込みハンドラーが
完了したときに実行されるべき次の命令のプログラムカ
ウンタ(pc)値にアクセスし、このpc値は、「例外
アドレス」又は「復帰pc」と称されることもある。し
かしながら、このpc値を単に記憶するだけでは、手前
の命令がリタイアされた回数を正確に反映しない。特
に、命令がリタイアしそして性能カウンタがオーバーフ
ローした場合には、命令が既に実行されている。この場
合は、復帰pcは、リタイアされた命令のpc値を反映
しない。
【0129】割り込み処理の細部に基づき、復帰pc
は、命令ストリームにおいてリタイアにより割り込みが
生じた命令の直後の命令であってもよいし、又はフェッ
チユニット、発生待ち行列及び実行パイプラインの種々
の段階における命令の数に動的に基づいて、その後の可
変数の命令であってもよい。それ故、割り込みハンドラ
ー1380が復帰pcを単に記録するときは、「リタイ
ア命令」カウンタを用いて各命令に対して記憶されたサ
ンプルカウントは、命令の実行頻度を正確に反映しな
い。
【0130】図16に示された例示的な制御流れグラフ
の部分1400について考える。5つの基本的ブロック
1401−1405がループに編成され、各基本的ブロ
ックは、単一の命令(1410−1450)で構成され
る。基本的ブロックの命令がリタイアするときには、
「リタイア」カウンタがオーバーフローし、そして割り
込みが発生され、割り込みハンドラーの復帰pc値が、
実行されるべき次の命令となる。
【0131】従って、命令1420のリタイアが割り込
みを発生するときには、復帰pc値が命令1440であ
り、同様に、命令1430が割り込みを発生するときに
は、復帰pc値が、命令1430における条件分岐の結
果に基づいて命令1440又は命令1450のいずれか
となる。従って、所与のpc値に対して記録された同じ
カウントが、多数の先行する命令のリタイアを反映す
る。例えば、命令1440に対して記録された同じカウ
ントは、命令1420の全てのリタイアの結果を命令1
430の幾つかのリタイアに加えたものであり、同様
に、命令1450に対して記憶されたカウントは、命令
1440の全てのリタイアの結果を命令1430の幾つ
かのリタイアに加えたものである。一般に、この形式の
サンプルデータが与えられると、各命令のリタイア事象
の数を明確に決定することは不可能である。
【0132】ここに述べるようにハードウェアを変更す
ることにより、割り込みハンドラー1380により記録
された情報が、実際にリタイアされる命令のプログラム
カウンタ値を含むように確保することができる。本質的
な考え方は、カウンタがオーバーフローしそして割り込
みを発生するときに、リタイアにより割り込みを発生し
た正にその命令のプログラムカウンタ値を記録すること
である。このプログラムカウンタ値は、図15の内部プ
ロセッサレジスタ(IPR)1370に記録することが
できる。IPRは、例えば、割り込みハンドラー138
0により実行される特権命令により読み取ることができ
る。
【0133】プログラムカウンタ値は、多数のやり方で
リタイアユニット1350に得られるようにすることが
できる。これらの値は、命令と共に全プロセッサパイプ
ラインを経て搬送することができる。より一般的には、
命令がパイプラインを進行するときの命令の識別は、比
較的小さな命令番号即ち「inum」である。inum
のサイズは、一度にパイプラインに存在することのでき
る全命令数より大きくなる必要はない。
【0134】図17に示すように、プログラムカウンタ
値1520に対して実行命令のinum識別1510を
マッピングすることは、テーブル1500を使用するこ
とにより実行できる。リタイアユニット1350は、リ
タイアを待機している命令、即ちパイプラインにある命
令のinum1352の待ち行列1351を、各命令を
いつリタイアできるかを決定するのに使用される他の依
存性情報(DEP)1353と共に維持する。判断は、
ロジック1354により行われる。命令がリタイアされ
るときは、そのinum識別1352を用いて、それに
対応するpc値1520をテーブル1500から抽出す
る。このpc値は、次いで、IPR1370に記憶する
ことができる。
【0135】リタイアカウンタ1360がオーバーフロ
ーするときにサンプルを記録するために発生される割り
込み信号1361は、直ちに発生される必要がない。と
いうのは、リタイアされる命令のpc値がIPR137
0に得られるからである。この値は、次の割り込みまで
変化しない。従って、プロセッサのパイプラインの設計
が、リタイアされた命令のpc値を得るのに数サイクル
を必要とするようなものであるときには、pc値がIP
R1370に書き込まれた後のある時間に割り込み13
61を発生することが許される。
【0136】あるプロセッサにおいて、単一のプロセッ
ササイクル中に多数の命令をリタイアすることができ
る。しかしながら、命令は、通常、「プログラム順序」
でリタイアされ、即ちそれらが一度に1つづつ実行され
る場合に実行される順序でリタイアされる。これは、通
常、命令を乱れた順序で発生できるプロセッサにおいて
も言えることである。従って、同じプロセッササイクル
中に命令のグループがリタイアされて、リタイアカウン
タをオーバーフローさせるときには、リタイアする命令
の少なくとも1つを、オーバーフローを生じさせた命令
として識別できる。例えば、リタイアカウンタは、値X
に達したときにオーバーフローにセットされ、プロセッ
サのリタイアサイクルは、値X−Nでスタートし、そし
てそのサイクル中にK個の命令がリタイアする。この場
合に、K個の命令のグループにおけるN番目の命令は、
オーバーフローを生じさせた命令であり、そのpc値
は、IPR1370に記憶されねばならない。
【0137】この技術は、他の種類の事象に対する他の
種類の性能カウンタへと拡張することができる。一般
に、いかなる事象に対しても、その事象に関連した情報
を記録することが望まれ、例えば、その事象を生じた命
令のpc値を記録することができ、又はキャッシュにお
いてミスしたメモリオペレーションによりアクセスされ
たデータの仮想アドレスを記録することができる。この
付加的なデータのためにIPR1370のセットを維持
し、そして適当な事象カウンタがオーバーフローしたと
きにIPR1370を更新することにより、各個々の命
令又はメモリ位置に対して所与の事象のレートを反映す
るサンプルデータを直接的に得ることができる。
【0138】サンプリングされた実行頻度データの質を
改善する方法 ここに述べるハードウェアにより形成されるデータは、
ノイズを含む傾向がある。又、データは、潜在的に重大
な統計学的変化も含む。これらの変化は、次のような後
処理段階において減少することができる。 1.各手順の制御流れグラフにおける基本的ブロック
を、上記のように、頻度等価クラスにグループ分けす
る。稀な環境(例えば、ある手順が別の手順をコール
し、これが第3の手順のコードへとジャンプし、第1の
手順を終了するとき、又は割り込みが生じて、その割り
込まれたコードへ決して復帰しないとき)を除いて、所
与の頻度等価クラスにおける全ての基本的ブロックは、
プログラムの各実行において同じ回数だけ実行すること
が保証され、従って、これら基本的ブロックの各々にお
ける全ての命令も同じ回数だけ実行する。 2.各々の頻度等価クラスに対し、そのクラスの各命令
ごとにサンプルカウントの平均値を得ることにより新た
な実行頻度推定値を決定する。
【0139】以上、本発明の好ましい実施形態を詳細に
説明したが、特許請求の範囲に規定した本発明の範囲か
ら逸脱せずに種々の変更がなされ得ることが当業者に容
易に明らかであろう。
【図面の簡単な説明】
【図1】本発明の好ましい実施形態によるプロファイリ
ングサブシステムにより動作をプロファイリングするこ
とのできるコンピュータシステムのブロック図である。
【図2】プロファイリングサブシステムの流れ線図であ
る。
【図3】プログラムの各命令を発生するのに必要な平均
サイクル数を決定するためのプロセスを示すブロック図
である。
【図4】実行頻度を推定するプロセスのブロック図であ
る。
【図5】命令の等価クラスを決定するプロセスのブロッ
ク図である。
【図6】拡張された制御流れグラフを示す図である。
【図7】初期頻度推定値及びストールサイクルを決定す
るプロセスを示すブロック図である。
【図8】頻度推定値をローカルに伝播するプロセスのブ
ロック図である。
【図9】制約ソルバーのブロック図である。
【図10】頻度推定値をグローバルに伝播するプロセス
のブロック図である。
【図11】動的なストールの理由を決定するための流れ
線図である。
【図12】基本的なブロックのキャッシュミスのブロッ
ク図である。
【図13】異なる形式の先行項目ブロックを示すブロッ
ク図である。
【図14】ストールされた命令により参照される手順を
示すブロック図である。
【図15】改良された性能カウンタを含むハードウェア
のブロック図である。
【図16】ループにおいて実行される基本的ブロックを
示す図である。
【図17】プログラムカウンタ値をルックアップするテ
ーブルを含む性能データ収集プロセスのデータ流れ線図
である。
【符号の説明】
100 コンピュータシステム 110 中央処理ユニット(CPU) 111 プロセッサチップ 112 カウンタ 113 実行ユニット 120 メモリサブシステム 121 ソフトウェアプログラム 122 データ 130 入力/出力インターフェイス 140 バス 200 サブシステム 201 手順 202 基本的ブロック 203 制御流れグラフ(CFG) 204 ノード 205 エッジ 206 データ構造体 209 サンプルカウンタ 210 制御流れ分析モジュール 300 性能データ分析器 340 性能データ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 リチャード エル シテス アメリカ合衆国 カリフォルニア州 94025 メンロ パーク カンポ ベーロ レーン 145 (72)発明者 ウィリアム ウェイール アメリカ合衆国 カリフォルニア州 94114 サン フランシスコ クリッパー ストリート 280 (72)発明者 シュン タク アルバート レウン アメリカ合衆国 カリフォルニア州 94043 マウンテン ヴィュー モンテシ ト アベニュー 1285−24 (72)発明者 マーク ティー ヴァンデヴールド アメリカ合衆国 カリフォルニア州 94086 サニーヴェイル コーラル アベ ニュー 1159

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 プログラムの命令を実行するコンピュー
    タシステムの性能データを分析するためのコンピュータ
    化された方法において、 プログラムを分析して、命令の等価クラスを決定し、 プログラムを実行する間に性能データを収集し、そして
    その収集された性能データ及び等価クラスを用いること
    によりプログラムの各命令ごとに実行頻度を推定する、
    という段階を備えたことを特徴とする方法。
  2. 【請求項2】 プログラムの命令の入力アレーを命令ス
    ケジューラに与えてプログラムの各命令を発生するのに
    必要な最小サイクル数を決定し、 プログラムを実行する間にプログラムの各命令を動的に
    発生するのに必要とされる平均サイクル数を決定し、更
    に、 プログラムの各命令を発生する間に被る静的なストール
    サイクルの数及び動的なストールサイクルの数を決定
    し、そしてプログラムの各命令により被る動的なストー
    ルサイクルの理由を決定することを含む請求項1に記載
    の方法。
  3. 【請求項3】 ノード及びアークを有する制御流れグラ
    フとしてプログラムの手順を表し、各ノードはプログラ
    ムの基本的ブロックを表し、そしてアークは基本的ブロ
    ックと手順との間の実行の流れを表し、特定の基本的ブ
    ロックの各命令は、その基本的ブロックの命令が命令の
    等価クラスを形成するように同じ回数だけ実行される請
    求項1に記載の方法。
  4. 【請求項4】 同じ実行頻度を有する制御流れグラフの
    全てのノード及びアークを識別し、そして同じ実行頻度
    を有する全てのノードを同じ等価クラスに指定し、更
    に、 制御流れグラフを拡張する段階を含み、この段階は、各
    手順の入口ノード及び出口ノードを識別し、手順の入口
    及び出口ノードを新たなアークにより互いに接続し、手
    順のノード及びアークを強力に接続されたサブグラフへ
    と分解し、特定の強力に接続されたサブグラフのいずれ
    かのノードから他の強力に接続されたサブグラフのいず
    れかのノードへのアークがない場合には、特定の強力に
    接続されたサブグラフをデッドエンド成分として識別
    し、いずれかのデッドエンド成分に入る全てのアークを
    手順の出口ノードへ再指向し、そして各々のデッドエン
    ド成分と、デッドエンド成分を除く拡張された制御流れ
    グラフの残りの部分とにおいてサイクル等価ノード及び
    アークを識別して、頻度等価クラスを決定することによ
    り行う請求項3に記載の方法。
  5. 【請求項5】 上記性能データは、命令のサンプルカウ
    ントを含み、そして更に、サンプルの異常を除去し、 プロセッサをモデリングする命令スケジューラを用い
    て、プログラムの命令を理想的にスケジューリングし
    て、プログラムの各命令を発生するのに必要な最小サイ
    クル数と、その発生中に各命令により被る静的なストー
    ルサイクルの数を含む最小サイクル数とを決定し、 各命令に対するサンプルカウントを、各命令を発生する
    のに必要な最小サイクル数で除算することによりサンプ
    ルカウントを正規化し、 その正規化されたサンプルカウントを用いて各等価クラ
    スごとに実行頻度を決定し、この実行頻度は、各命令が
    リタイアされた回数に比例し、 各命令のサンプルカウントを各等価クラスの実行頻度で
    除算して、各命令を発生するのに必要な平均サイクル数
    を決定し、そして各命令の平均サイクル数から最小サイ
    クル数を減算して、プログラムの各命令により被る動的
    なストールサイクルの数を決定することを含む請求項1
    に記載の方法。
  6. 【請求項6】 プログラムの命令の入力アレーを命令ス
    ケジューラに与えて命令の理想的なスケジュール及び命
    令の理想的なスケジュールの静的な依存性を形成し、 制御流れグラフの各ノード及びアークに対する実行の頻
    度と、ノード及びアークの実行頻度に対する信頼値とを
    決定し、 同じ実行頻度を有するノード及びアークを同じ等価クラ
    スにグループ分けし、そして各命令ごとに、その命令が
    発生待ち行列のヘッドに存在すると予想されるサイクル
    の数を決定することを含み、更に、 特定の頻度クラスが少なくとも1つの発生ポイントを含
    みそして全ての命令がゼロのサンプルカウントを有する
    場合に特定の等価クラスの実行頻度をゼロにセットする
    ことを含む請求項5に記載の方法。
  7. 【請求項7】 上記推定段階は、先ず、動的なストール
    サイクルを招く命令を除く特定頻度等価クラスのノード
    及びアークに対して実行頻度を推定し、そして更に、特
    定頻度等価クラスのノード及びアークの上記推定された
    頻度を、制御流れグラフの流入及び流出制約を用いて、
    上記特定頻度等価クラスのノード及びアークに直に隣接
    するノード及びアークにローカル伝播することを含む請
    求項3に記載の方法。
  8. 【請求項8】 上記推定された実行頻度を修正するため
    に上記推定された実行頻度に制約ソルバーを適用し、更
    に、 特定の命令が動的なストールサイクルを招くようにし得
    る全ての考えられる理由を識別し、 特定の命令が動的なストールサイクルを生じさせる理由
    として除外することのできる理由を排除して、特定の命
    令が動的なストールサイクルを招くようにした考えられ
    る理由を決定し、更に、 特定の命令のメモリアドレスに基づき命令−キャッシュ
    ミスを理由として排除する請求項1に記載の方法。
  9. 【請求項9】 特定の命令及び既に実行された命令によ
    りプロセッサのレジスタをいかに参照するかに基づきデ
    ータ−キャッシュミスを理由として排除し、更に、 特定の命令で開始して制御流れグラフの深さ優先探索を
    行うことにより、既に実行された命令を識別し、更に、 特定の基本的なブロック内の特定の命令の位置に基づい
    て分岐予想ミスを理由として排除する請求項8に記載の
    方法。
  10. 【請求項10】 特定の命令と、その特定の命令の直前
    に実行された命令とのオペレータコードに基づきプロセ
    ス同期を理由として排除し、更に、 特定の命令のオペレータコードに基づき実行ユニットの
    競合を理由として排除し、これは、特定の命令のオペレ
    ータコードに基づき書き込みバッファのオーバーフロー
    を理由として排除する段階を含む請求項8に記載の方
    法。
JP05806698A 1997-03-10 1998-03-10 コンピュータ性能データを分析する方法 Expired - Fee Related JP4785213B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/814190 1997-03-10
US08/814,190 US5857097A (en) 1997-03-10 1997-03-10 Method for identifying reasons for dynamic stall cycles during the execution of a program

Publications (2)

Publication Number Publication Date
JPH10254739A true JPH10254739A (ja) 1998-09-25
JP4785213B2 JP4785213B2 (ja) 2011-10-05

Family

ID=25214394

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05806698A Expired - Fee Related JP4785213B2 (ja) 1997-03-10 1998-03-10 コンピュータ性能データを分析する方法

Country Status (4)

Country Link
US (2) US5857097A (ja)
EP (1) EP0864980A3 (ja)
JP (1) JP4785213B2 (ja)
CA (1) CA2231576A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003531436A (ja) * 2000-04-11 2003-10-21 アナログ デバイセス インコーポレーテッド 非侵入式アプリケーション・コード・プロファイリングの方法および装置
JP2009505171A (ja) * 2005-06-27 2009-02-05 イコア コーポレイション ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置
JP2011519100A (ja) * 2008-04-28 2011-06-30 イマジネイション テクノロジーズ リミテッド パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム
CN104049941A (zh) * 2013-03-15 2014-09-17 英特尔公司 跟踪指令的控制流程
US8943503B2 (en) 2010-07-02 2015-01-27 Samsung Electronics Co., Ltd. Apparatus and method for thread progress tracking using deterministic progress index
US10001992B2 (en) 2015-02-17 2018-06-19 Fujitsu Limited Method, information processing apparatus, and medium

Families Citing this family (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996038733A1 (en) * 1995-06-02 1996-12-05 Pure Software, Inc. Remote monitoring of computer programs
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
EP1329816B1 (de) * 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6438734B1 (en) * 1997-10-06 2002-08-20 Agilent Technologies, Inc. Fast search method for enabling a computer to find elementary loops in a graph
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US6175814B1 (en) 1997-11-26 2001-01-16 Compaq Computer Corporation Apparatus for determining the instantaneous average number of instructions processed
US6442585B1 (en) 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
US6163840A (en) * 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6195748B1 (en) 1997-11-26 2001-02-27 Compaq Computer Corporation Apparatus for sampling instruction execution information in a processor pipeline
US6237073B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information
US6332178B1 (en) 1997-11-26 2001-12-18 Compaq Computer Corporation Method for estimating statistics of properties of memory system transactions
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
DE19861088A1 (de) * 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6321375B1 (en) * 1998-05-14 2001-11-20 International Business Machines Corporation Method and apparatus for determining most recently used method
US6079032A (en) * 1998-05-19 2000-06-20 Lucent Technologies, Inc. Performance analysis of computer systems
US6175956B1 (en) * 1998-07-15 2001-01-16 International Business Machines Corporation Method and computer program product for implementing method calls in a computer system
US6321317B1 (en) * 1998-12-16 2001-11-20 Hewlett-Packard Co Apparatus for and method of multi-dimensional constraint optimization in storage system configuration
GB2344907A (en) * 1998-12-19 2000-06-21 Int Computers Ltd Instruction translation and execution mechanism
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US6487715B1 (en) * 1999-04-16 2002-11-26 Sun Microsystems, Inc. Dynamic code motion optimization and path tracing
US7185367B2 (en) 1999-05-11 2007-02-27 Cylant, Inc. Method and system for establishing normal software system behavior and departures from normal behavior
US6681331B1 (en) * 1999-05-11 2004-01-20 Cylant, Inc. Dynamic software system intrusion detection
US7096499B2 (en) * 1999-05-11 2006-08-22 Cylant, Inc. Method and system for simplifying the structure of dynamic execution profiles
US6681220B1 (en) * 1999-05-28 2004-01-20 International Business Machines Corporation Reduction and optimization of information processing systems
AU5805300A (en) * 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
FR2795836A1 (fr) * 1999-06-30 2001-01-05 Bull Cp8 Procede pour comptabiliser le temps dans un dispositif de traitement d'information, et dispositif associe
US6961930B1 (en) 1999-09-22 2005-11-01 Hewlett-Packard Development Company, L.P. Efficient, transparent and flexible latency sampling
US7035989B1 (en) 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
US6546359B1 (en) * 2000-04-24 2003-04-08 Sun Microsystems, Inc. Method and apparatus for multiplexing hardware performance indicators
US6647546B1 (en) 2000-05-03 2003-11-11 Sun Microsystems, Inc. Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code
US6802057B1 (en) 2000-05-03 2004-10-05 Sun Microsystems, Inc. Automatic generation of fortran 90 interfaces to fortran 77 code
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US6609208B1 (en) 2000-07-07 2003-08-19 Hewlett-Packard Development Company Energy-based sampling for performance monitoring
US6986130B1 (en) 2000-07-28 2006-01-10 Sun Microsystems, Inc. Methods and apparatus for compiling computer programs using partial function inlining
US6910107B1 (en) 2000-08-23 2005-06-21 Sun Microsystems, Inc. Method and apparatus for invalidation of data in computer systems
US8058899B2 (en) * 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
AU2002220600A1 (en) * 2000-10-06 2002-04-15 Pact Informationstechnologie Gmbh Cell system with segmented intermediate cell structure
US7406681B1 (en) 2000-10-12 2008-07-29 Sun Microsystems, Inc. Automatic conversion of source code from 32-bit to 64-bit
US6957208B1 (en) 2000-10-31 2005-10-18 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for performance analysis using semantic knowledge
US6769057B2 (en) * 2001-01-22 2004-07-27 Hewlett-Packard Development Company, L.P. System and method for determining operand access to data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9037807B2 (en) * 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
WO2005045692A2 (en) * 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US20090210653A1 (en) * 2001-03-05 2009-08-20 Pact Xpp Technologies Ag Method and device for treating and processing data
US20090300262A1 (en) * 2001-03-05 2009-12-03 Martin Vorbach Methods and devices for treating and/or processing data
US7581076B2 (en) * 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
US7581103B2 (en) 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
EP1402382B1 (de) * 2001-06-20 2010-08-18 Richter, Thomas Verfahren zur bearbeitung von daten
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
US20030135848A1 (en) * 2001-12-21 2003-07-17 Hitachi, Ltd. Use of multiple procedure entry and/or exit points to improve instruction scheduling
US8281108B2 (en) * 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
US6968547B2 (en) * 2002-01-29 2005-11-22 Sun Microsystems, Inc. Dynamic trap table interposition for efficient collection of trap statistics
ATE402446T1 (de) * 2002-02-18 2008-08-15 Pact Xpp Technologies Ag Bussysteme und rekonfigurationsverfahren
US20060075211A1 (en) * 2002-03-21 2006-04-06 Martin Vorbach Method and device for data processing
US8914590B2 (en) * 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US6983455B2 (en) * 2002-04-10 2006-01-03 Sun Microsystems, Inc. Mechanism for profiling computer code
US7080358B2 (en) * 2002-04-10 2006-07-18 Sun Microsystems, Inc. Mechanism for generating an execution log and coverage data for a set of computer code
WO2004021176A2 (de) * 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US20110238948A1 (en) * 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
US7657861B2 (en) * 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003289844A1 (en) * 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US20040054515A1 (en) * 2002-09-18 2004-03-18 Todi Rajat Kumar Methods and systems for modeling the performance of a processor
US7496792B2 (en) * 2002-10-15 2009-02-24 Stmicroelectronics S.A. Repeat digital message transmission between a microprocessor monitoring circuit and an analyzing tool
US6701412B1 (en) * 2003-01-27 2004-03-02 Sun Microsystems, Inc. Method and apparatus for performing software sampling on a microprocessor cache
US7181723B2 (en) * 2003-05-27 2007-02-20 Intel Corporation Methods and apparatus for stride profiling a software application
US20050071821A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically select instructions for selective counting
US20050071610A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for debug support for individual instructions and memory locations
US7395527B2 (en) * 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US7937691B2 (en) * 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US20050071612A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations
US20050071816A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically count instruction execution for applications
US20050071609A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically take an exception on specified instructions
US7036534B2 (en) * 2003-09-30 2006-05-02 Mcclure Thomas W Marine engine corrosion prevention system
US20050071611A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for counting data accesses and instruction executions that exceed a threshold
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US8381037B2 (en) * 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7257657B2 (en) * 2003-11-06 2007-08-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US7054987B1 (en) * 2003-12-19 2006-05-30 Nvidia Corporation Apparatus, system, and method for avoiding data writes that stall transactions in a bus interface
JP2005190038A (ja) * 2003-12-25 2005-07-14 Hitachi Ltd プロセッサの診断処理方法および診断処理プログラム
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
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
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7392370B2 (en) * 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7197586B2 (en) * 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
US7895382B2 (en) * 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7526616B2 (en) * 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US7895473B2 (en) * 2004-04-29 2011-02-22 International Business Machines Corporation Method and apparatus for identifying access states for variables
US8621179B2 (en) * 2004-06-18 2013-12-31 Intel Corporation Method and system for partial evaluation of virtual address translations in a simulator
US7606998B2 (en) * 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
US20060174155A1 (en) * 2005-02-03 2006-08-03 Arm Limited System, method and computer program product for testing software
EP1849095B1 (en) * 2005-02-07 2013-01-02 Richter, Thomas Low latency massive parallel data processing device
US7900193B1 (en) * 2005-05-25 2011-03-01 Parasoft Corporation System and method for detecting defects in a computer program using data and control flow analysis
US20070130114A1 (en) * 2005-06-20 2007-06-07 Xiao-Feng Li Methods and apparatus to optimize processing throughput of data structures in programs
US20070089102A1 (en) * 2005-10-18 2007-04-19 Erb David J System and method for analyzing software performance without requiring hardware
US7917573B2 (en) * 2005-11-30 2011-03-29 International Business Machines Corporation Measuring and reporting processor capacity and processor usage in a computer system with processors of different speed and/or architecture
US20070150881A1 (en) * 2005-12-22 2007-06-28 Motorola, Inc. Method and system for run-time cache logging
JP2009524134A (ja) 2006-01-18 2009-06-25 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト ハードウェア定義方法
US7971190B2 (en) * 2006-11-30 2011-06-28 Intel Corporation Machine learning performance analysis tool
US8051411B2 (en) * 2007-08-08 2011-11-01 National Tsing Hua University Method for copy propagations for a processor with distributed register file design
US20100218171A1 (en) * 2009-02-26 2010-08-26 Computer Measurement Laboratory, Inc. Computer bus monitoring for the adaptive control of executing software processes
US8776016B2 (en) * 2009-10-29 2014-07-08 Red Hat, Inc. Integration of structured profiling data with source data in the eclipse development environment
US8798962B2 (en) 2011-03-21 2014-08-05 International Business Machines Corporation Virtualized abstraction with built-in data alignment and simultaneous event monitoring in performance counter based application characterization and tuning
US9405548B2 (en) 2011-12-07 2016-08-02 International Business Machines Corporation Prioritizing instructions based on the number of delay cycles
US9710354B2 (en) 2015-08-31 2017-07-18 International Business Machines Corporation Basic block profiling using grouping events
US9658837B1 (en) * 2015-11-06 2017-05-23 Sentry Insurance a Mutual Company Integration of independent platforms
US20170168832A1 (en) * 2015-12-11 2017-06-15 International Business Machines Corporation Instruction weighting for performance profiling in a group dispatch processor
US11210094B2 (en) * 2019-09-27 2021-12-28 Intel Corporation Method and apparatus for minimally intrusive instruction pointer-aware processing resource activity profiling

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5465258A (en) * 1989-11-13 1995-11-07 Integrity Systems, Inc. Binary image performance evaluation tool
US5459837A (en) * 1993-04-21 1995-10-17 Digital Equipment Corporation System to facilitate efficient utilization of network resources in a computer network
US5615357A (en) * 1994-12-29 1997-03-25 Sun Microsystems, Inc. System and method for verifying processor performance
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5799165A (en) * 1996-01-26 1998-08-25 Advanced Micro Devices, Inc. Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003531436A (ja) * 2000-04-11 2003-10-21 アナログ デバイセス インコーポレーテッド 非侵入式アプリケーション・コード・プロファイリングの方法および装置
JP2009505171A (ja) * 2005-06-27 2009-02-05 イコア コーポレイション ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置
JP2011519100A (ja) * 2008-04-28 2011-06-30 イマジネイション テクノロジーズ リミテッド パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム
US9720695B2 (en) 2008-04-28 2017-08-01 Imagination Technologies Limited System for providing trace data in a data processor having a pipelined architecture
US8943503B2 (en) 2010-07-02 2015-01-27 Samsung Electronics Co., Ltd. Apparatus and method for thread progress tracking using deterministic progress index
CN104049941A (zh) * 2013-03-15 2014-09-17 英特尔公司 跟踪指令的控制流程
JP2014182797A (ja) * 2013-03-15 2014-09-29 Intel Corp 命令の制御フローの追跡
US9880842B2 (en) 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
US10001992B2 (en) 2015-02-17 2018-06-19 Fujitsu Limited Method, information processing apparatus, and medium

Also Published As

Publication number Publication date
US5857097A (en) 1999-01-05
EP0864980A2 (en) 1998-09-16
JP4785213B2 (ja) 2011-10-05
EP0864980A3 (en) 2000-04-05
US6009514A (en) 1999-12-28
CA2231576A1 (en) 1998-09-10

Similar Documents

Publication Publication Date Title
JP4785213B2 (ja) コンピュータ性能データを分析する方法
JPH10254700A (ja) 個々の命令の実行頻度をサンプリングするプロセッサ性能カウンタ
US5797019A (en) Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5752062A (en) Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US6446029B1 (en) Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
US5751945A (en) Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US6708296B1 (en) Method and system for selecting and distinguishing an event sequence using an effective address in a processing system
US5691920A (en) Method and system for performance monitoring of dispatch unit efficiency in a processing system
JP3531731B2 (ja) 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム
JP4294778B2 (ja) プロセッサパイプラインにより処理される相互作用の特性の統計値を推定する方法
US7640539B2 (en) Instruction profiling using multiple metrics
JP4467094B2 (ja) プロセッサパイプラインにおいて多数の潜在的に同時の命令をサンプリングする装置
JP4467093B2 (ja) プロセッサパイプラインにおいて命令をランダムにサンプリングする装置
US7657875B2 (en) System and method for collecting a plurality of metrics in a single profiling run of computer code
US5615357A (en) System and method for verifying processor performance
KR100309863B1 (ko) 프로세서내의 명령 프로그레스를 모니터링하기 위한 시스템 및방법
US5949971A (en) Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US6539502B1 (en) Method and apparatus for identifying instructions for performance monitoring in a microprocessor
BRPI0611318A2 (pt) melhoramentos em arquitetura de monitoramento de desempenho para análise baseada em percurso crìtico
JPH11272518A (ja) プロセッサパイプラインにより処理される命令の特性の統計値を推定する方法
JPH11272514A (ja) プロセッサパイプラインにおいて命令オペランド又は結果の値をサンプリングする装置
US20070226703A1 (en) Binary code instrumentation to reduce effective memory latency
US5729726A (en) Method and system for performance monitoring efficiency of branch unit operation in a processing system
US6415378B1 (en) Method and system for tracking the progress of an instruction in an out-of-order processor
US5748855A (en) Method and system for performance monitoring of misaligned memory accesses in a processing system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070723

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071023

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20071023

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071030

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080123

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080310

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080827

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110302

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110307

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110310

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110310

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110531

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110712

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110712

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees