JPH0830494A - システム性能をプロファイルするための割り込みベースのハードウエア・サポート - Google Patents

システム性能をプロファイルするための割り込みベースのハードウエア・サポート

Info

Publication number
JPH0830494A
JPH0830494A JP7152957A JP15295795A JPH0830494A JP H0830494 A JPH0830494 A JP H0830494A JP 7152957 A JP7152957 A JP 7152957A JP 15295795 A JP15295795 A JP 15295795A JP H0830494 A JPH0830494 A JP H0830494A
Authority
JP
Japan
Prior art keywords
counter
interrupt
profiling
signal
event detector
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.)
Withdrawn
Application number
JP7152957A
Other languages
English (en)
Inventor
Prathima Agrawal
アグラワル プラスィマ
Aaron Jay Goldberg
ジェー.ゴールドバーグ アーロン
John Andrew Trotter
アンドリュー トロッター ジョン
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.)
AT&T Corp
Original Assignee
AT&T 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 AT&T Corp filed Critical AT&T Corp
Publication of JPH0830494A publication Critical patent/JPH0830494A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 オペレーションを邪魔することなくシステム
状態をサンプリングするシステム・プロファイラを提供
する。 【構成】 カウンタが比較値と一致したときプロセッサ
が割り込まれるように、比較レジスタと割り込みライン
を有するキャッシュ・ミス・カウンタを増加することに
より、システム状態をサンプルでき、特定のプロセス、
手続、コール・スタック、アドレスまたはシステム状態
のユーザに画定される面に関連させるキャッシュ・ミス
・プロファイルを展開できる。この着想は、sun S
parc10/41上のデータ・ストール・サイクル、
第1レベルのキャッシュ・ミスおよび第2レベルのミス
をプロファイルするMprofプロトタイプで実施され
る。単純なケーススタディが、Mprofの特徴を示す
ように提供される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にコンピュータ
性能最適化に関し、特に、コンピュータ・システムの性
能プロファイリングに関する。
【0002】
【従来の技術】高いクロック周波数やスーパースカラー
技術により促進されて、プロセッサの速度は、メモリ・
システムの性能の改良よりも早い速度で成長を続けてい
る。この傾向を反映して、さまざまな技法が、このよう
な性能の遅れを補うために実施されてきた。コンピュー
タ・システムの設計技師達によって実施された技法とし
て、メモリシステム性能における遅れをカバーするた
め、さらに複雑なメモリ階層を開発したものがある。コ
ンパイラライター達により実施された別の技法として、
複雑なメモリ階層をより良く活用するために、局所強調
変換(locality-enhancing transformations)を追加し
たものがある。アプリケーションのプログラマー達によ
り実施された更に別の技法として、メモリ・システムを
活用するために、アルゴリズムを再コード化したものが
ある。
【0003】上述の技法は、すべて、特別な最適化を導
くため、メモリ・システムの挙動に関しての経験的デー
タを必要とするものである。現在、経験的データの必要
を満たすように、メモリ・システム性能をプロファイル
するためのハードウエア・サポートを提供する数多くの
マイクロプロセッサやワークステーションの販売業者が
存在する。例えば、Intel Pentiumのマイ
クロプロセッサやSun Sparc 10´やSpa
rcCenter 1000´sにおけるSun EC
ache(外部キャッシュ)の制御装置は、キャッシュ
・ミス・カウントレジスタの性能を備えている。
【0004】
【発明が解決しようとする課題】ところで、これらの単
純なカウンタは、メモリ・システム活用の理解に対する
第1のステップを提供する一方、キャッシュ・ミス・カ
ウント・レジスタの活用には多くの欠点が存在する。特
に、単純なキャッシュ・ミス・カウンタは、キャッシュ
・ミスを招くソフトウエアの特定の部分に対するキャッ
シュ作用に直接関係しない。その代わり、それらは集約
したミスの数を示すだけである。この情報は、しかしな
がら、どのプロセス、手続きまたはデータ構造がミスの
原因であるかを示さないものである。よって、システム
の性能を邪魔することなしに、キャッシュ・ミスを特定
のプロセス、手続き、手続きコールスタック、およびシ
ステム状態のユーザに規定される点に関連させるキャッ
シュ・ミス・プロファイルを展開するための、メモリ・
システムの性能データを得る手段が必要とされる。
【0005】
【課題を解決するための手段】本発明は、コンピュータ
・システムをプロファイルするためのシステムおよび方
法である。本発明は、比較レジスタおよび割り込みライ
ンで補われたキャッシュ・ミス・カウンタによって生成
された割り込みを用いてシステム状態をサンプリングす
るシステム・プロファイラのインプリメンテーションで
ある。本発明の利点のひとつは、キャッシュ・カウント
が比較レジスタに記憶された所定の値と一致する場合、
プロセッサを中断する能力を有することである。従来の
方法に対するこの改良により、本発明は、所定数のキャ
ッシュ・ミスもしくはキャッシュ・ストール・サイクル
でプロセッサの状態をサンプリングすることができる。
【0006】本発明の別の利点は、性能障害の隔離、並
びにアーキテクチャ、作動システム、コンパイラおよび
アプリケーションの最適化をガイドする際に重要な補助
を提供できることである。本発明のさらに別の利点は、
メモリ・システム性能を理解するためのハードウエアお
よびソフトウエアの従来の方法よりも、速度と精度と柔
軟性と移植性と拡張性とにおいてより良い方法を提供す
るサンプリング方法のインプリメンテーションにある。
本発明の別の特徴および利点は、本発明のさまざまな実
施例の構造および作用とともに、添付の図面を参照して
以下に詳しく述べられている。
【0007】
【実施例】以下に、本発明を添付図面を参照して説明す
る。図中、同様な参照符号は、同じもしくは機能的に同
様の要素を示す。更に、符号の最も左の数字は参照符号
が最初に現われる図面を識別するためのものである。
【0008】A.導入 本発明は、コンピュータ・システム性能をプロファイル
するためのシステムおよび方法である。本発明は、比較
レジスタおよび割り込みラインで補われたロード可能デ
クレメンター・キャッシュ・ミス・カウンタによって生
成された割り込みを用いて、システム状態をサンプリン
グする、Mprfと称される、メモリ・システム・プロ
ファイラとして実施される。最初にまず、メモリ・シス
テム・プロファイリングの使用、および、メモリ・シス
テム性能を理解するための従来の方法が不適切である理
由を述べる。次いで、好ましいハードウエアのインプリ
メンテーションおよび別の実施例と共に、メモリ・シス
テムをプロファイルする本発明のアプリケーションを説
明する。また最後に、プロファイルがどのようにSpa
rc10/41のキャッシュ階層のアプリケーションを
最適にするように用いられるかを例示するためのケース
スタディを提示する。
【0009】B.メモリ・プロファイルの使用 メモリ・システム・プロファイルは、性能障害の隔離、
および、アーキテクチャとオペレーション・システムと
コンパイラとアプリケーションとの最適化の導きにおい
て重要な助けを提供することができる。多重レベルのキ
ャッシュ階層、書き込みバッファ、命令先取り部、バン
ク・メモリおよび高性能相互接続ネットワークを有する
メモリ・システムは、当り前となってきている。キャッ
シュ可干渉性マルチプロセッサが「デスクトップ」ワー
クステーションとして市販されている一方、商品パーソ
ナル・コンピュータの特徴は、第1および第2のキャッ
シュである。これらのシステムにおける複素数メモリ階
層は、設計技師により設計される。重要なベンチマーク
・アプリケーションのメモリ参照特徴を識別し、且つ、
メモリ・システムを最適化し、それらのキープログラム
のための性能を発生する。
【0010】一度、設計技師が特定の参照パターンのた
めのメモリ階層を最適化した後は、無理にアプリケーシ
ョンをこれらのパターンへ入れるよう試みるのはソフト
ウエアの開発者次第である。コンパイラ変換が、ループ
ネストを再命令および阻止することにより、データ・キ
ャッシュ活用を増加することができ、また、必要となる
前に注意深くデータを前もって取り出すことによりメモ
リ待ち時間を隠すことでき、基本ブロックを再命令する
ことにより命令キャッシュ性能を改善できるという最近
の研究が実証された。ループネストを再命令および阻止
することによりデータ・キャッシュ活用を増加すること
ができるコンパイラ変換の説明は、プログラム言語設計
およびインプリメンテーション(Programming Language
Designand Implementation)(1991年)のAC
M’91会議、議事録内30〜44ページ、ウォルフ
(Wolf)等の「データ位置最適化アルゴリズム(A Data
Locality Optimizing Algorithm)」を参照のこと。必
要となる前に注意深くデータを前もって取り出すことに
よりメモリ待ち時間を隠すことのできるコンパイラ変換
の説明は、プログラム言語およびオペレーティング・シ
ステムのためのアーキテクチャによるサポート(Archit
ectural Support for Programming Language andOperat
ing Systems)(1992年)における第5回国際会
議、議事録内62〜73ページ、モウリイ(Mowry )等
の「前取り出しのためのコンパイラ・アルゴリズムの設
計と評価(Design and Evaluation of a Compiler Algo
rithm for Prefetching )」を参照のこと。そのすべて
は、ここに参照により組み込まれる。
【0011】基本ブロックを再命令することにより命令
キャッシュ性能を改善することができるコンパイラ変換
の説明は、第3回ASPLOS(1989年)の議事録
内183〜93ページ、マックファーリング、S(McFa
rling, S. )の「命令キャッシュのプログラム最適化
(Program Optimization for Instruction Caches
)」;プログラム言語設計およびインプリメンテーシ
ョン(Programming Language Design and Implementati
on)(1990年)のACM’90会議、議事録内16
〜27ページ、ペティス(Pettis)等の「プロファイル
案内コード位置決め(Profile Guided Code Positionin
g )」を参照のこと。そのすべては、ここに参照により
組み込まれる。
【0012】共用メモリ・マルチプロセッサ内のキャッ
シュ可干渉性トラフィックが多重可干渉性プロトコルを
支持し、且つ、コンパイラまたはオペレーティング・シ
ステムを1ページを基本に最も有効なプロトコルを選択
するようにさせることにより減少される得る別の研究が
示された。たとえば、プログラム言語およびオペレーテ
ィング・システムのためのアーキテクチャによるサポー
ト(Architectural Support for Programming Language
and Operating Systems)における第5回国際会議(1
992年)、議事録内149〜60ページ、ビーンスト
ラ(Veenstra)等の「最適ハイブリッド・キャッシュ・
プロトコルの性能評価(A PerformanceEvaluation of O
ptimal Hybrid Cache Coherency Protocols)」を参照
のこと。そのすべては、ここに参照により組み込まれ
る。さらに、メモリ・システム活用を拡大するためのソ
フトウエア技術を開発する数多くの研究者は、自動的に
変換を適用するようにコンパイラを導くためにメモリ・
オーバーヘッド・プロファイルが十分用いられることを
明確に示した。プログラム言語およびオペレーティング
・システムのためのアーキテクチャによるサポートにお
ける第5回国際会議(1992年)、議事録内62〜7
3ページ、モウリイ等の「前取り出しのためのコンパイ
ラ・アルゴリズムの設計と評価」、プログラム言語およ
びオペレーティング・システムのためのアーキテクチャ
によるサポートにおける第5回国際会議(1992
年)、議事録内149〜60ページ、ビーンストラ(Ve
enstra)等の「最適ハイブリッドキャッシュ・プロトコ
ルの性能評価」を参照のこと。そのすべては、ここに参
照により組み込まれる。
【0013】最後に、局所を強調し、メモリ・システム
性能を改善するため再書き込みアプリケーションにおい
て大きな文献が存在する。たとえば、共用メモリ・マル
チプロセッシングにおける国際シンポジウム(199
1)議事録109〜118ページ、チェリトン(Cherit
on)等の「共用メモリ・マルチプロセッサにおけるキャ
ッシュ作用を改善するための並行シミュレーションの再
構築:第1実績(Restructuring a Parallel Simulatio
n to ImproveCache Behavior in a Shared Memory Mult
iprocessor: A First Experience)」を参照。そのすべ
ては、ここに参照により組み込まれる。さらに、スーパ
ーコンピューティング’90(1990年)議事録23
2〜41ページ、ロスベルグ(Rothberg)等の「マルチ
プロセッサ・ワークステーションにおける共用マトリッ
クス因数分解の性能改善のための技術(Techniques for
Improving the Performance of Sparse Matrix Factri
zation on Multiprocessor Workstations )」を参照。
そのすべては、ここに参照により組み込まれる。局所強
調変換の存在が与えられると、プログラマーは、障害が
メモリ・システムのどこに存在するかを識別し、障害の
存在の量を計り、変換が実際にどのように性能に影響を
及ぼすかを測定するためのプロファイリング・ツールを
必要とする。
【0014】C.メモリ・プロファイリング技術 上述したメモリ・プロファイルのための広範囲にわたる
アプリケーションは、いくつかのメモリ・システム・プ
ロファイルの開発をもたらした。これらの従来のメモリ
・プロファイルは、次の3つの技法または方法に分けら
れる。(1)シミュレーション・ベース技法、(2)カ
ウンタ・ベース・システム、および(3)ソフトウエア
法である。
【0015】シミュレーション・メモリ・プロファイル
では、プログラムのメモリ参照用トレースが、ソフトウ
エアの計装、マイクロコードのモニタリング、またはハ
ードウエア参照トレーシングのいずれかにより得られ
る。ソフトウエアの計装による方法の一例は、性能計測
および明確化、シモンズ(Simmons )等、アディソンウ
エスレイ(Addison Wesley)(1990年)1〜26ペ
ージのカラハン(Callahan)等の「メモリ階層の性能の
分析および明確化(Analyzing and VisualizingPerform
ance of Memory Hierarchies )」に見られ、そのすべ
ては、ここに参照により組み込まれる。マイクロコード
のモニタリングによる方法の一例は、第13回年例コン
ピュータ構造様式における国際シンポジウム(Thirteen
th AnnualInternational Symposium on Computer Archi
tecture)(1986年)議事録119〜27ページ、
アガーウァル(Agarwal )等の「マイクロコードを用い
てアドレストレースを算出する新たな技術(New Techni
que for Capturing AddressTraces Using Microde)」
に見られ、そのすべては、ここに参照により組み込まれ
る。ハードウエア参照トレーシングによる方法の一例
は、並行かつ分散型システムにおけるIEEEトランザ
クション(IEEE Transactions on Parallel andDistrib
uted Systems )(1993年)第4版、No1、41
〜61ページ、レノスキ(Lenoski )等の「DASHプ
ロットタイプ:論理オーバーヘッドおよび性能(The DA
SH Prototype: Logic Overhead and Performance)」に
見られ、そのすべては、ここに参照により組み込まれ
る。
【0016】一度、プログラムのメモリ参照トレース
が、シミュレーション・メモリ・プロファイルに得られ
ると、トレースは、用いられたメモリ・システム・シミ
ュレータに送り込まれる。シミュレーション・メモリ・
プロファイルにともなう第1の問題は、遅く、100な
いし1000の因数により実行時間をしばしば長くする
ということである。速度の問題は、現代のメモリ・シス
テムの複雑さおよび寸法の増加により悪化する。たとえ
ば、1ないし30のプロセッサと各プロセッサごとに1
乃至16メガバイトの第2レベルのキャッシュとを有す
る一般的共用バスマルチプロセッサの性能をシミュレー
トするのに必要なメモリ参照の数は、この方法が不可能
となるほど莫大である。
【0017】シミュレーションがとても遅いので、まだ
構築されていないため測定することのできないシステム
の性能を予測することが設計技師により主として用いら
れる。さらに、シミュレーションは費用がかかるので、
シミュレートする前に、設計技師が今日のシステムの性
能を最大限理解することによりできるだけ設計スペース
を狭めることが必要とされる。上述したように、そのよ
うな理解を開発するためには、設計者は、キャッシュ・
ミス率およびバス利用状態を測定するためのハードウエ
アを持っている。このカウンティング・ハードウエアの
欠点は、なんら直接的な情報を与えず、ハードウエアと
メモリ階層との相互作用が性能を悪くしてしまう。
【0018】ハードウエア・イベント・カウンタとプロ
グラム・イベントとの相応関係を確立するためには、ソ
フトウエアの利用がカウンタへアクセスするために加え
られなければならない。たとえば、処理の入口と出口に
おいてキャッシュ・ミス・カウンタを読み取ることによ
り、且つカウンタ値における差異を記録することによ
り、処理中にまたそのために、発生するキャッシュ・ミ
スの数を測定することができる。しかしながら、このソ
フトウエア技術は、2つの重要な欠点を有する。第1
に、その利用は、測定されるシステムをかき乱してしま
う恐れがある。短い処理においては、入口および出口に
おいていくつかのハードウエア・カウンタ(読み取りミ
ス、書き込みミス、バス利用状態など)を読み取り、且
つその合計を記憶するオーバーヘッドは、実際にその処
理で終えた作業を超過してしまう恐れがある。第2に、
環境切り替えが処理の入口と出口との間に生じた場合、
カウンタの合計は、他のプロセスにより生じたミスも含
んでしまう。
【0019】モデル・ベース技法を用いて混乱を補い、
適応計測法を用いてモニタリング・オーバーヘッドを減
少し、オペレーティング・システム・サポートを用いて
仮想プロセス毎にカウンタを作り出し、これらの欠点の
いくつかの面に対し進歩がなされた。混乱を補うための
モデル・ベース技法の使用における欠点については、並
行かつ分散型システムにおけるIEEEトランザクショ
ン(1993年)第3版、No4、433〜50ペー
ジ、マロニー(Malony)等の「性能測定侵入および混乱
分析(Performance Measurement Intrusion and Pertur
bation Analysis)」を参照のこと。そのすべては、こ
こに参照により組み込まれる。モニタリング・オーバー
ヘッドを減少するための適応計測法については、イリノ
イ大学(U.of Illinois)コンピュータ科学部、リード
(Reed)等のパブロ性能分析環境の概説(An Overview
of the Pablo Performance Analysis Environment )非
出版原稿(1992年)を参照のこと。そのすべては、
ここに参照により組み込まれる。
【0020】しかしながら、ハードウエア・カウンタを
用いてきめの細かいプロファイルを収集するためソフト
ウエア計装がプログラムの頻繁にアクセスされる領域に
挿入された場合は常に、基本的な侵入問題が残る。その
ような技法の生じるオーバーヘッドの大きさを検知する
ために、SPEC整数ベンチマークを計装し、手続きの
入口と出口でカウンタにアクセスする。オーバーヘッド
は、実行時間の影響に関して測定される。実際、メモリ
・オーバーヘッド・プロファイルおよび実行時間プロフ
ァイルの両方は、プログラムの単独実行において、ゆえ
に実行時間を混乱し、プロファイル・データに直接影響
を与えてしまう。また、プログラムの実行がスレッドの
相対実行時間にかなり依存しているマルチスレッドプロ
グラムにプロファイリング技法が適用されることが予測
される。従って、モニタリング技法は、実行時間にかな
り影響を及ぼすものであると推測される。
【0021】オーバーヘッドを測定するため、整数SP
ECベンチマークが計装され、手続きコールの動的数お
よび各プログラムのユーザモード実行時間を記憶する。
これらの統計値が得られ、且つ、手続きの入口と出口に
おけるカウンタ・コードが所定時間を取って実行すると
仮定すると、カウンタ・オーバーヘッドは、次の式で推
定される。 2*(dynamic # of procedure
calls) * (time for a cou
nter execution) なお、この式は、オーバーヘッドのいくつかの潜在的原
因を無視するため、保守的である。たとえば、挿入カウ
ンタ・コードは、実行可能なサイズを拡大し、潜在的に
命令キャッシュ性能を劣化する。加えて、カウンタがコ
ンパイラにより挿入された場合、それらは、オプティマ
イザーと予測できない方法で相互作用し、レジスタ割
当、命令スケジュールおよび他の最適化に影響を及ぼ
す。これらの但し書きを条件として、上述の式は、カウ
ンタ実行時間の値が与えられたオーバーヘッドを推定す
るために用いられる。手続き入口における一般的カウン
タ更新は、疑似コードによって表わされる。 Count Array[Procedure Ind
ex]−=Read Stall Cycle Cou
nter
【0022】手続き出口コードは、引き算を足し算で置
換する以外は同様である。疑似コードを実行する時間
は、カウンタ更新ブックキーピング時間とカウンタ・ア
クセス時間とに分けられる。RISCアーキテクチャに
おいて、配列に対する更新は、少なくともロードと、加
算と、記憶とを含む。加えて、単独の再帰呼び出しにお
ける多重カウンタ更新を避けるために、更新コードは、
カウンティング・セマフォで保護されなければならな
い。我々は、カウンティング・セマフォのコストおよび
カウンタ更新コードをカウンタ・ブックキーピングと呼
ぶ。測定が行われるSparc10/41では、40M
hzまたは0.25マイクロ秒で約10サイクルでカウ
ンタ・ブックキーピングを行う。カウンタ・アクセスの
コストは、インプリメンテーション依存型である。カウ
ンタがマイクロプロセッサとチップ上で一体とされた場
合、アクセスには1サイクルのみコストがかかる。一
方、カウンタがシステム・バス(SBus)カードを用
いて外部で実行された場合、Sparc10/41上で
読み出すのに約30サイクルかかる。下の表1は、アク
セス時間についてこれらの2つの想定におけるオーバー
ヘッド結果を示す。
【表1】
【0023】表1を参照すると、単一のサイクル・カウ
ンタ・アクセスであってもいくつかのプログラムが45
%のオーバーヘッドを受け、低速のカウンタ・アクセス
でそれらの1.21から2.7タイムの計測されない速
度でプログラムが実行することがわかる。また、手続き
レベルのプロファイリングから個別の基本ブロックまた
はロード命令のよりきめの細かいフロファイリングへ移
行するとき、問題はさらに深刻となる。一般的にハード
ウエア・カウンタは、非侵入、きめの細かいプロファイ
リングをサポートするようなものではない。
【0024】メモリ・システム上のハードウエア計装を
必要とすることなくラン時間モニタリングの速度を保持
するMtoolと呼ばれる別のプロファイリングの方法
がある。Mtoolは、プログラム・セグメントの実際
の実行時間をすべてのメモリ基準がキャッシュ・ヒット
であると仮定して予測された理想実行時間と比較するこ
とによりメモリ・オーバーヘッドを切り離す。Mtoo
lのさらなる説明は、並行かつ分散型システムにおける
IEEEトランザクション(1993年)第4版、No
1、28〜40ページ、ゴールドベルグ(Goldberg)等
の「Mtool:性能訂正共用メモリ・マルチプロセッ
サ・アプリケーションのための総合システム」を参照の
こと。そのすべては、ここに参照により組み込まれる。
この方法がMtoolに毎秒ベースでメモリ・オーバー
ヘッドを定量化させるが、メモリ階層のどの面があまり
よく活用されていないかについての情報は提供しない。
たとえば、Mtoolは、最初の命令キャッシュ・ミス
によるオーバーヘッドを書き込みバッファ・ストールか
らの第2のレベルのキャッシュ・ミスによるオーバーヘ
ッドと識別しない。オプティマイザーの観点から、性能
損失の個々の原因を識別することは変換を改善するのに
適切な性能を確認するために重要である。
【0025】したがって、前述のメモリ・システム・プ
ロファイラは、シミュレーションは遅すぎたり、ハード
ウエア・カウンタは潜在的に侵入的なソフトウエア計装
を介してアクセスされなければならなかったり、Mto
olのようなソフトウエア技法はメモリ階層のどの部分
が障害かを識別しなかったりといった広範囲での使用を
妨げる重大な欠点を有する。これらの欠点は、本発明の
サンプリング・ベースのプロファイラにより解消され
た。
【0026】D.サンプリング・ベースのプロファイラ サンプリング技法は、実行時間プロファイラを構築する
ために日常的に用いられており、当業者においては周知
のものである。時間プロファイラは、クロック割り込み
を発生するため外部のタイマーに依存している。割り込
みは、システムの状態をサンプルするハンドラにより処
理され、システムが時間を費やすところの統計プロファ
イルを作り上げる。たとえば、ほどんどのUNIX計装
は、プロファイル・システム呼び出しおよびprofツ
ールを介してアクセスされるプロセスごとのプログラム
・カウンタ・サンプリング・サービスをサポートするた
めにシステム・タイマー割り込みを用いる。時間割り込
みが行われるとき、割り込まれたプロセスが(プロファ
イル・コールとともに)プロファイリングが要求される
場合、プロセスのプログラム・カウンタに関連したカウ
ンタが進められる。そして、プログラム・カウンタのカ
ウントは、手続き毎の実行時間のテーブルを生成するた
めprofにより後処理される。
【0027】サンプリングがプログラムの実行と独立し
ていると仮定すると、サンプリングされたプロファイル
は、各手続きに費やされた実際の実行時間の良質の予測
を提供する。サンプリングされたプロファイルの統計上
の重要性の詳細な説明は、ニュージャージー州エングル
ウッドクリフ(Englewood Cliffs)プレンティスホール
社(Prentice-Holl Inc.)フェラリ、D(Ferrari, D.
)コンピュータ・システム性能評価(1978年)第
2章に見られる。それらすべては、ここにおいて参照に
より組み込まれる。コード・プロファイリングの頑丈な
UNIX計装の説明は、1993年ウインターUSEN
IXの議事録(1993年)マックカーン(McCanne )
等の「CPU活用推測およびコード・プロファイリング
のためのランダム化したサンプリングクロック(A Rand
omized Sampling Clock for CPU Utilization Estimati
on and Code Profiling )」に得られる。それらすべて
は、ここにおいて参照により組み込まれる。
【0028】さらに、サンプリング率が相対的に低いの
で(実行時間プロファイラでは、通常1秒につき約60
サンプル)、サンプリングは、インラインのソフトウエ
ア計装よりも侵入的である。また最後に、サンプリング
技法は、実行時間プロファイリングに限られない。19
93夏期USENIXの議事録(1993年)ホール
(Hall)等の「UNIXにおける単調プログラム資源の
呼出経路プロファイリング(Call Path Profiling of M
onotonic Program resources in UNIX)」は、ページ障
害、浮動小数点例外、およびバイト読出し/書込みなど
の広い範囲の様々なシステム・イベントに関してプロフ
ァイルするためUNIXシステムV/プロック(proc)
インターフェイスにより供給された情報を使用するサン
プリング・ベースのプロファイラ、Cpprofを記述
している。プログラム言語およびオペレーティング・シ
ステムのためのアーキテクチャによるサポート(Archit
ectural Support for Programming Language and Opera
ting Systems)における第2回国際会議(1987
年)、議事録内82〜3ページ、カーギル(Cargill )
等の「ソフトウエア・デバッギングおよびプロファイリ
ングのための安価なハードウエア・サポート(Cheap Ha
rdware Support for Software Debugging and Profilin
g )」では、たとえば、コード・プロファイリングを駆
動するため命令フェッチをカウントするユニットにより
生成された割り込みが用いられることが提案されてい
る。
【0029】割り込みベースのプロファイリングの別の
潜在的実例は、アルファ・アーキテクチャーのDEC2
1064インプリメンテーションに見ることができる。
このマイクロプロセッサは、様々なイベント上で進める
ようにプログラムされるレジスタをカウントする2つの
柔軟な性能を含み、28、212または216のイベン
トごとに割り込みを生成する。これらのイベントは、チ
ップ上命令およびデータ・キャッシュにおけるミスを含
む。しかしながら、性能カウンタは、見かけは、イベン
ト頻度に対して、長時間にわたってイベントをカウント
する手段とされている。たとえば、デジタルエクイップ
メント社DECチップ21064−AAマイクロプロセ
ッサ予備データ・シート.メイナルド(Maynard )MA
(1992年)3.20〜3.22ページを参照のこ
と。そのすべては、ここに参照により組み込まれる。チ
ップ設計者は、単純な集合体カウントを計画してきた
が、同様の割り込みメカニズムが高性能なサンプリング
・ベースのプロファイリング環境を作り上げるために用
いられる。なお、21064メカニズムは、完全にプロ
グラム可能な比較レジスタに欠けるため理想的でない。
この制限により、サンプリング間隔が無作為化されるの
を防止し、統計的意義を確実とする。それにもかかわら
ず、DECの21064におけるプロファイリング・サ
ポートは、販売業者が生産システムにおいてサンプリン
グ・ベースのプロファイリングを実行できることの証拠
である。
【0030】以下、本発明に必要なことは、本発明の好
ましい実施例の説明において明確にされる。この実施例
は、第1の及び第2のキャッシュ・ミスおよびCPUデ
ータ・ストール・サイクルをカウントする。別の実施例
は、キャッシュ・サービス時間、TLBミスおよび書き
込みバッファ・ストールなどの他のイベントをモニター
するために容易に用いられる。
【0031】E.ハードウエア・サンプリング・インプ
リメンテーション 1.導入 多数のプロセッサを伴うようなシステムのデバッキング
および性能プロファイリング両方における基本的問題
は、そのオペレーションを邪魔することなくシステムを
モニターすることである。本発明は、プロセッサのある
オペレーションをモニターするためにハードウエアを特
殊化し、特殊化されたハードウエアが所定の状態を検出
する場合の状態を記憶するためプロセッサに割り込むこ
とによりこの問題を解決する。たとえば、ハードウエア
のタイマーは、特別なアドレスにおける待ち時間が所定
のスレッショルドを超えた場合、プロセッサに割り込
む。別の例では、多数のカウンタは、特定の時間範囲で
待ち(waits )の発生を積み重ね、カウンタのひとつが
特定値に到達した場合プロセッサに割り込む。ハードウ
エア・モニタは、メモリ・システムの挙動の多くの様相
をトラック可能である。たとえば、チップ上キャッシュ
を有するマイクロプロセッサの外部ピンをモニターする
ことにより、通常、そのキャッシュ内のミスを探知する
ことは簡単である。また、モニタがマイクロプロセッサ
(ベンティウムおよびアルファ内として)の一部として
組み込まれている場合、チップ上スプリット内のミス
は、命令またはデータ・ミスとして認識される。イベン
ト検出器のインプリメンテーションに関係なく、検出信
号は、カウントが特定値に到達した時に割り込みをトリ
ガするカウンタへ送信される。そして、割り込みハンド
ラは、作動中のシステムの状態を記録することが可能で
ある。十分なサンプルが記録された場合、この情報は、
キャッシュ・ミスを引き起こすプログラム部分を強調す
る。
【0032】図1を参照して、本発明のパフォーマンス
・モニタを説明する。本発明のパフォーマンス・モニタ
100は、3つの主要な構成要素:イベント検出モジュ
ール102、ロード可能ダウン・カウンタ104および
割り込みゼネレータ108からなる。イベント検出モジ
ュール102は、重要なイベントが起こるごとにパルス
を発生する。ダウン・カウンタ104は、イベント検出
器102により生成されたパルスをカウントし、カウン
タがゼロに到達すると割り込み回路108が割り込みを
発生させるようにする。最初のカウンタ値は、プログラ
ム可能な数のイベントの発生後に割り込みが生成される
ようにロードされ、無秩序化されたサンプリンク間隔が
用いられることを許容する。加えて、ロード可能なカウ
ンタのための適切な値を選択することにより、比較的ま
れなイベントが統計的にかなりの回数CPUに割り込
む。割り込みゼネレータ108は、CPU割り込みを発
生するために正しいインターフェースを実行し、割り込
みハンドラは、適切なシステム状態を記録することがで
きる。好ましい実施例では、パフォーマンス・モニタ1
00は、SBusカード110上のプログラム論理配列
(PALs)を用いて、イベント検出器102、ダウン
・カウンタ104および割り込みゼネレータ108を実
行する。
【0033】2.本発明のインプリメンテーション 図1を参照すると、本発明は、Sun SPARK 1
0/41ワークステーションのメモリ・システム112
の挙動をモニターするために実行される。SPARK
10/41は、キャッシュ制御装置とメモリバス(MB
us)を経由してメイン・メモリに接続される、集中し
た1MBの第2レベルのキャッシュを裏側にもつチップ
上キャッシュ(10KBのインストラクションと16K
Bのデータに分かれる)を備えている。第一のキャッシ
ュ・ミスでは、イベント検出回路102は第一のキャッ
シュ・ミスを提供する第2レベルのキャッシュのSRA
M上のいくつかのピンをモニターすることによってキャ
ッシュ・ライン・リードを検出する。これは、メモリ・
システム112によって出力されたメモリ・システム信
号114で示される。第2レベルのキャッシュ・ミスを
検出するため、イベント検出器102は、メモリバス
(MBus)をモニターし、メモリ・システム信号ライ
ン114において受信されたメイン・メモリ・リード上
に検出信号116を出力する。これらのメイン・メモリ
・リード信号を正しくモニターするために、本発明は、
MBusメモリ・アクセスがいくつかのバス・サイクル
を使用するので、状態情報を必要とする。イベント検出
器102はまた、CPUパイプラインがデータ・キャッ
シュ上でウェイティング中の時に作動するSuperS
parcマイクロプロセッサ上の外部モニタピンを利用
することによってデータ・キャッシュ・ストール時間を
検出する。これもまたメモリ・システム信号ライン11
4を介して受信される。本発明の好ましい実施例では、
イベント検出回路102はPALにおいて実行される。
しかしながら、当業者には明らかにわかる通り、検出器
102は他のタイプのハードウェア構成上でも実行する
ことができる。
【0034】ダウン・カウンタ104は、検出信号ライ
ン116を介してイベント検出器102によって発生し
た検出信号を受信する。ダウン・カウンタ104は所定
の数のイベントが発生したときに信号ライン124上の
パルスを割り込みゼネレータ108に出力する。本発明
の好ましい実施例では、ダウン・カウンタ104はふた
つのPALを用いて実行され、20ビットの深さをも
つ。これにより、パフォーマンス・モニタ100は、パ
ルスがパルス・ライン124を経由し割り込みゼネレー
タ108に送られる前に220のイベントをカウントで
きる。割り込みゼネレータ108は、SBusカード1
10上に実行され、ゼネレータがダウン・カウンタ10
4から信号ライン124を経由してきたパルスを受信し
たとき、SBus割り込みの割り込みライン130上へ
の発生する原因となる。これにより、本発明のロード可
能ダウン・カウンタ104と割り込みゼネレータ108
は、従来のシステムで用いられている単純なキャッシュ
・ミス・カウンタのかわりとなる。ダウン・カウンタ1
04は、パフォーマンス・モニタ・システム100が割
り込み130を発生したことを示すビットを含み、割り
込みを除去するためにレジスタを備える。SBusイン
ターフェイス132はまた、リセット・ライン118お
よびロード割り込み可能ライン120を介して、それぞ
れカウンタ104をリセットしたり割り込み可能にする
ために用いられる。加えて、SBusインターフェイス
は所定の値をSBUSデータ・ライン128を経由して
カウンタ104にロードするために用いられる。所定の
値はSBusボード110を通り、ロード・カウンタ・
ライン122を経由してダウン・カウンタ104に供給
される。ダウン・カウンタ104は、検出信号ライン1
16を経由して受信した検出信号の記憶された数が達し
たときにライン124上にパルスを発生させる。別の言
い方をすれば、キャッシュ・ミス・カウントがゼロに達
したとき、プロセッサは割込まれる。
【0035】図2を参照すると、もうひとつの本発明の
好ましい実施例の計算機構造のブロック図が示されてい
る。パフォーマンス・モニタ200において、図1のダ
ウン・カウンタ104は回路(サーキット)により柔軟
性をもたせるために、カウンタ204Aとロード可能比
較レジスタ205Aとに替わっている。本実施例は第1
および第2レベルのキャッシュ・ミスを同時にプロファ
イルすることをサポートする。本実施例は図1に示され
た実施例の延長である。パフォーマンス・モニタ200
の構成部品がPALsではなくフィールド・プログラム
可能ゲートアレイ(FPGA)に実行される。FPGA
を利用することにより、ソフトウェアからモニタ回路を
再構成することが可能になり、モニタを異なるイベント
または一連のイベント上でトリガーするように簡単に再
プログラムすることができるようになる。FPGAは外
部プローブを持つSBusボード210上に統合され、
これによって特定のアドレス・レンジ(例えばI/Oデ
バイス)への状態または検出アクセスなどの条件下でト
リガーすることができるような柔軟性のあるモニタリン
グ・アーキテクチャを供給する。FPGAはいくつかの
別々のカウンタ204Aと204Bを実行するので、第
1及び第2レベルのキャッシュ・ミスとデータ・キャッ
シュ・ストール時間を含むいくつかの異なるイベント・
クラスが同時にモニターできるようになる。カウンタ2
04A、204Bのどちらかが、それぞれの比較器20
5A、205Bに記憶された比較値と一致時、割り込み
が生じる。それは、割り込みがそれぞれの比較器205
A、205Bによって、それぞれの割り込みライン22
4A、225Bにおいて生成された、ということであ
る。割り込みステータスビットは、モニターされたイベ
ントのうちでどれが割り込みの原因となったかを示す。
【0036】F.システム状態の記録 本発明のパフォーマンス・モニタからSBus132ま
たは232を経由してプロファイリング割り込みを受信
すると、オペレーティング・システムおよびユーザ・ア
プリケーションは、本発明と共働して、プロファイル・
データを記憶する。理論上、本発明は十分なシステム状
態をサンプルしてすべてのメモリ・システム・ボトルネ
ックの性質を精密に確認する。実際には、サンプル・デ
ータによる精度は、ボトルネックが多数のデータを収集
したオーバーヘッドに対してバランスを保たれなければ
ならないことを示している。例えば、状態がサンプリン
グされるときの複雑なデータ構造の状態を知ることが望
ましいとされるが、汎用プロファイラがそれぞれのプロ
ファイル割り込み上にプロセス・データ・セグメントの
フルダンプをつくることは恐ろしく高価なものになる。
【0037】本発明のパフォーマンス・モニタは、柔軟
性と情報の精度とオーバーヘッドとの間の他の相対関係
(trade-off )を示す2つのデータ収集メカニズムをサ
ポートする。最も柔軟性があって最も安価なメカニズム
は、システム・ワイド・サンプリングである。システム
・ワイド・プロファイリングが割り込み可能であると
き、サンプリング割り込みが起こるときはいつも、ハン
ドラが簡単なサンプル・レコードをカーネル・プロファ
イリング・バファーに加える。レコードは典型的に次の
ような情報を含む。 (タイムスタンプ、現在のプロセスId、プロセッサ・
ステータス・ワード、現在のプログラムカウンタ値)ユ
ーザレベルのディーモン(daemon)は規則的にプロファ
イリング・バファーをユーザスペースにコピーし、その
内容をファイルにセーブする。事後分析ツールはその後
キャッシュ・ミス・プロファイルをプロセス毎に統合
し、ユーザ及びシステム・モードキャッシュ・ミス、プ
ロッティング(タイム・データを用いて)キャッシュ・
ッミス・サンプル対時間をレポートする。加えて、プロ
セスIDと交信実行可能ファイル間のマッピングが維持
されていれば、実行可能シンボル・テーブルは、実行毎
にキャッシュ・ミス数を与えるUNIX profスタ
イル・プロファイルを統合するのに用いられる。
【0038】システム・ワイド・サンプリングの欠点
は、それが単に、キャッシュ・ミスが発生している状態
についてのプロセス及び実行レベルの情報のみを供給す
るということである。ひとつの好ましいアプローチは、
ソフトウェア信号と共に実行されたより柔軟性のあるユ
ーザレベルのプロファイリングである。ユーザレベルの
プロファイリングでは、アプリケ−ションが特別なサン
プリング・デバイスを開いて、プロセッサに位置する割
り込みハンドラに、それがメモリ・システム・サンプリ
ング信号の受信を望んでいることを示す。サンプリング
割り込みが起こったとき、割り込みハンドラは現在実行
中のプロセスがサンプリング・デバイスを開いたかどう
かをチェックし、もしそうであれば、信号をプロセスに
送る。カーネル(kernel)がユーザ・プロセスを
再開(resume)するとき、カーネルは送られた信
号を検出し、信号ハンドラ内のプロセスを再スタートさ
せ、ユーザ・プロセスはサンプリング信号のために登録
される。このハンドラは、プロセス状態に関連する要素
を記録し、そしてプロセスの最初に実行していた実行ス
レッドへの戻りを制御する。この技術はシステム・ワイ
ド・サンプリングほどには非侵入的ではない。なぜな
ら、信号ハンドラを呼び出し、エキストラのオーバーヘ
ッドに関連する最初の制御スレッドを再開するからであ
る。しかしながら、サンプリング値がそれほど高くなけ
れば、エキストラのオーバーヘッドは依然無視して構わ
ない。
【0039】Mprofにおけるユーザ・サンプリング
へのデフォルト・インターフェイスは、アプリケーショ
ンの、デフォルトの開始と終了のルーチンに替わる特別
なライブラリへのリンクを必要とする。新しい開始ルー
チンはサンプリング信号ハンドラを装備し、終了ルーチ
ンがファイルにプロファイルアウトを書き込む間サンプ
リング・デバイスを開く。(本ライブラリ・インターフ
ェイスはUNIXのもとでのプロファイリングを可能に
するための−pフラッグに類似する。)Mprofサン
プリング信号ハンドラは現在のプロシージャ・コールス
トックを記録し、キャッシュ・ミスは特定の「前後関係
化された(contextualized)」プロシージャ・コール・
パスと組み合わされる。Mprofは、例えば、foo
2がメインから呼び出されたfoo1から呼び出された
ときにキャッシュ・ミスを招くことをレポートする。コ
ールパス・プロファイルはハンドラによって生み出され
たコ−ルスタックサンプルファイルをフィードすること
により、パフォーマンスクリティカルコールパスを強調
し、データを相互的に探査する設備をもつCpprof
システムのなかに統合される。Cpprofは、199
3年夏期USENIX議事録、ホール(Hall)等の
「UNIXにおけるモノトニックプログラムリソースの
コール・パス・プロファイリング」(Call Path Profil
ing of Monotonic Program resources in UNIX )のな
かで論じられ、そのすべては、ここに参照により組み込
まれる。1つの例が下記に与えられ、これはユーザレベ
ルのNprofプロファイルがCpprof環境のなか
でどのように見られるかを示している。
【0040】本発明者は、Mprofのデフォルト・コ
ールスタック・サンプリング信号ハンドラ234がメモ
リ・システムのボトルネックを適正に絶縁することを発
見した。しかしながら、より複雑なアプリケーションに
おいて、パフォーマンス・チューナーは、デフォルト・
ハンドラを、特定のプロシージャまたはあるグローバル
ステ−ト変数の状態に対する引数のような、特定の情報
をアプリケーションに記録するような特別なハンドラに
取り替えることを望むであろう。なぜならば信号ハンド
ラは、アプリケーション・プログラムの一部分であり、
関連する技術においてそれがユーザ定義済みハンドラと
取り替えられることでよく知られていると思われるから
である。下記に示すのは、Mprofのシステム・ワイ
ドとユーザレベルのサンプリングを用いてつくられたプ
ロファイルの例である。
【0041】G.ケーススタディ 下記のケーススタディはファイルメモリ・システム・パ
フォーマンスに実行された本発明のベーシック機能を表
すために示されている。Mprofの大事な機能を強調
するため、フルアプリケーション・プログラムよりはこ
れらのケーススタディを行うために定形化した合成ベン
チマークが用いられている。 1.システム・ワイド・サンプリング 本スタディは、Sparc 10/41の第2レベルの
キャッシュの効率性におけるマルチプログラミングの影
響を考察する。特に、ある特定のアプリケーションであ
り、0.9MBのデータ構造のすべての要素を繰り返し
読み取るcache_hogの特質がプロファイルされ
る。ひとつの実例であるcache_hogを生むスク
リプトは、それが終わるのを待ち、そして下記に示した
ふたつの同時に起こるプログラム呼び出しを開始する。 cache hog sleep 1 cache hog & cache hog; sleep 15 実際のデータはハードウェア・サンプリングを可能にす
ることにより収集され、割り込みハンドラにログインを
記録し、テストスクリプトをランし、そしてサンプリン
グを不能にするコマンドは次の通りである。 star profd; gen workload; stop profd. この例では、Mprofは16384リードが第2レベ
ルのキャッシュをミスした後にプロファイリング割り込
みを発生させるよう配置されている。システム・ワイド
・サンプリング・モードにおいて、ハンドラはそれぞれ
のプロファイリング割り込み上にタイム・スタンプ、プ
ロセスid(PID)、プログラム・カウンタ(PC)
を記録する。Mprofはタイム・スタンプとPIDを
キャッシュ・ミス・サンプル対それぞれのプロセスにか
かった時間にプロットするために用いる。表3は我々の
テスト作業負荷へのプロットを示す。表4は、ライン3
02がひとつのcache_hog実施によって発生し
たミスに対応し、ライン304と306はマシンを共有
する一対のhogを示す。表3より、マルチプログラム
化されたジョブのミス値は実質上単一プログラム化され
た片方のミス値を上回ることは明らかである。特に、プ
ログラムがそれだけで動いているときは10のサンプル
が得られるが、ふたつの実行がマシンを共有するときは
75+77=152のサンプルが得られる。追加のミス
はプロセスがキャッシュにおいて妨害をし、それぞれの
プロセスが他方のデータをフラッシュすることで発生す
る。
【0042】この現象は、それぞれのcache_ho
gの実行が第2レベルのキャッシュにあるラインの90
%を用いたいと望むことからみて、驚くべきことではな
い。Mprofは、しかしながら効果を視覚化し、数量
化するために役立つ。さらに、この例はいかにして、時
間をかけて、属性ミスを正しくそれらを招くプロセスに
サンプリングするかを示している。しかしながら、マル
チプログラム化されたジョブには、サンプルは4つなら
びに5つのグループにクラスタすると思われることに注
意。この密集は悪いサンプリングによる人工物である−
説明のために我々は16384ミスという決められたサ
ンプリング・インターバルを用いた。与えられた33m
s時間のなかで、あるプロセスは約8000の第2レベ
ルのキャッシュ・ミスをもたらす。このため、与えられ
た時間のなかで、我々が8000でミス・カウンタを増
し、そして前後関係が切り替わり、これらのミスが最後
には別のプロセスにチャージされることになることがし
ばしばありうる。ランダムに行われたサンプリングで
は、このようなエラーはキャンセルされがちであるが、
決められたインターバルを開けたサンプリングでは、表
3に見られる密集を生むにあたって相関関係が起こりう
る。病理学的なケースでは、サンプリング値と時間あた
りのミス数が選ばれるため、すべてのサンプルは事実上
しばしば等しくミスする2つのプロセスのうちのどちら
かをヒットすることになる。この可能性はサンプリング
をサンプル間のインターバルを違えることによってラン
ダム化することを強く主張するものである。
【0043】プロファイル結果に戻ると、サンプルに用
いられたデータはどのプロセスがキャッシュのなかでミ
スされたかのみならず、どのプログラム・カウンタがこ
れらのミスと組み合わされたかを確認するものである。
プロファイリングが動く間、規則的にプロセッサ・ステ
イタス・コマンド(ps)を実行することにより、Mp
rofはPIDsから実行可能なファイル・ネームへマ
ッピングを記録する。事後分析データ・ビューイング・
フェーズの間、ユーザが表3に与えられた概略グラフの
線のなかのひとつをクリックすると、Mprofはこの
記録を、実行可能ファイルネームのなかにPID対応の
マップを書き入れるために活用し、ファイルからシンボ
ル・テーブルを抽出し、そしてサンプルに用いられたプ
ログラム・カウンタ情報からのプロシージャ・レベルの
キャッシュ・ミス・プロファイルを統合する。
【0044】2.Cpprofにおけるユーザレベルの
サンプリング 本ケーススタディは、データ・ストール・サイクルとコ
ールパスとを関連づけ、メモリ階層の上にあまりよくマ
ップされていないプログラムの領域を確認するMpro
fの能力を示す。本ケーススタディはレコードの大きな
配列をqソート・ライブラリ・ルーチンを用いてソート
するためにいくつかのアプローチを比較する。このルー
チンは決められたサイズの、ポインタを与えられたレコ
ードの配列、レコードのサイズ、レコードの数、そして
ふたつのレコードを比較するためのファンクションをソ
ートする。平均では、qソートはNレコードをソートす
るときにNlogN比較を実行し、ふたつのレコードが
実行不可能なとき、それらは決まった場所にスワッピン
グされる。
【0045】本ケーススタディでは、本発明はそれぞれ
4バイトの整数キーをもつ200,000の32バイト
のレコードを含む6MBのデータ・セットを作動する。
基本ケースでは、qソートは32バイトのレコードの全
配列上で実施される。qソートは整数キーを比較するが
32バイトのレコードの全てをスワッピングするので、
この実行はやや非効率的である。この不必要なコピー
は、レコードそれ自体をソートするよりもレコードのポ
インタをソートすることにより防ぐことができる。ポイ
ンタ配列を初期化し、要素を比較する疑似コードは下記
に示される。 init ptr array(Record *record ptr, int cnt) { for (i=0; i<cnt: i+=1) record ptr[i] = rec + i; } compare record ptr(Record **rp1, Record **rp2) { return ( (*rp1)->key - (*rp2)->key ); }
【0046】基本ケースとレコードポインタソートの機
能はそれぞれをユーザレベルのサンプリングを経由した
実際時間とデータ・ストール時間(実際時間の信号はU
NIXセティタイマー機能を用いて発信されている)の
両方をプロファイルすることにより比較することができ
る。基本ケースのCpprofプロファイルからの引用
は下記に示される。プロファイルの各ラインは、qソー
ト・ルーチンで探したコールパスに対応する。%body%で
終わる入力は、プロシージャ・ボディ(procedure bod
y)で費やされた合計時間を示し、Data_Stallで終わる
入力はデータを待ってストールするのに費やされた時間
を示す。例えば、下記のプロファイルの最後のコールパ
スは、それがqソートにより呼び出されたcompare_reco
rds というプロシージャ中のデータを待つために、0.
62秒が費やされたことを示す。 format: Call Path [Time in Seconds] -------------------------------------- (qsort %body%) [6.86] (qsort Data stall) [1.98] (qsort compare record %body%) [1.40] (qsort compare record Data stall) [0.62]
【0047】このプロファイル内の情報を用いて、表2
の第1列が作成され、これはプロセッサが作動している
時間(CPU)、データを待ってプロセッサがストール
される時間(DS)及び合計時間を示すものである。
尚、CPUの数が合計時間よりDSを減算することによ
り派生する。時間はqソートならびに比較ルーチンの個
々それぞれ、そして qsort+compareの両方のためにレポ
ートされる。qsort+compare の欄をみると、ポインタソ
ートを用いることにより不必要なコピーを排除すること
でCPU時間の3.1秒を節約しているが、データ・ス
トール時間は変わっていない。この現象についての適当
な説明としては、実際にキャッシュ階層を通過するデー
タの量がどちらのインプリメンテーションにおいても同
じだからだといえる。ポインタを基本にしたインプリメ
ンテーションでは、比較機能はレコードのキーフィール
ドにアクセスするためのポインタを逆引用(dereferenc
es)する。しかし、第1キャッシュが32バイトライン
をもつことから、キーフィールドへの各引用(referenc
e )は、キャッシュに32バイトのレコードの全てをロ
ードさせることになる。
【0048】データ帯域幅の必要条件は、それぞれのレ
コードが全データベースのレコードへのポインタとその
レコードのキーのコピーのみを含む”little”レ
コード(LRecs)をつくることによって減らすこと
ができる。 init little record(Record *rec, LRec *lrec, int cnt) { for (i=0; i<cnt;1 i+=1) { lrec[1].key = rec[1].key; lrec[1].record ptr = rec + i; } } これらの8バイトの”little”レコードはその後
qソートを用いて直接ソートできる。この場合、qソー
トは8バイトのレコードをスワッピングして4バイトキ
ーを比較する。エキストラの4バイトのコピーは、ポイ
ンタをレコードそれ自体ではなくlittleレコード
でソートすることによって排除することができる。LR
ec及びLRecポインタ・インプリメンテーションの
決は表2の下2列に表される。qソートに費やされた時
間を考察すると、8から4バイトへのコピーを減らすこ
とにより、CPU時間をほぼ半分節約することが示され
ている。(1.2 対2.5 )しかしながら、この方式ではC
PU時間の比較において増えており、(エキストラポイ
ンタ分の違いがある)qソートと比較の両方によるデー
タ・ストール時間も増えている。データ・ストール時間
におけるこの増加は、レコードへのポインタの配列が有
効なデータ・セットのサイズをlittleレコード毎
に8バイトから12バイトに増加させるという事実によ
り説明される。最後に、littleレコードそれ自体
をソートすることは優れたアプローチであり、全レコー
ドをソートするよりも2.5秒早くランする。
【表2】
【0049】データ・ストール・サイクル時間の可用性
は、上記の最適化プロセスにより明らかに単純化され
る。特に、上にあげられたデータ・アクセス・ストール
時間情報は全レコードポインタ・インプリメンテーショ
ンというデータの動きを減らすという発明者の意図に焦
点を当てている。また、LRecおよびLRecポイン
タ・インプリメンテーションにおいて、CPU時間とデ
ータ・ストール時間との間に相対関係があり、それぞれ
の数を明示する方策は、我々がこの相対関係を理解する
ことを許容するものである。このような相対関係を、M
profが与える経験的データのようなものを持たずに
理解することは非常に難しい。また、この例はMpro
f/Cpprofの積み上げられた機能性にのみ触れて
いることに注意。全システムにおいて、ユーザは現在第
1レベルのキャッシュ・ミス情報とデータ・パイプライ
ン・ストール・サイクル、ならびにCpprofの実際
時間、ユーザ時間、ページ障害プロファイルを派生した
Mprofへのアクセスを持つ。加えて、Cpprof
は異なるタイプのプロファイル(ファンクション・ボデ
ィ、body+descendants、上方または下方コールパス)
と、プログラムのダイナミック・コールグラフにあるノ
ードのさまざまなサブセットに関連するプログラム・デ
ータを統合する対話型シェルをもたらす。要約すると、
Mprofによって生み出されたスタック・サンプル
は、発展したプロファイリング環境に自然にフィットす
る。
【0050】H.他の実施例 上記のケーススタディは、Mprofが抽出できる情報
のタイプを確認する。Mprofには性能を改善し、継
続するために実行されるいくつかの機能がある。例え
ば、現在、サンプルされたシステム状態は「コード中
心」の性質のものである。それは、システム・ワイド・
サンプリングとユーザレベルのコールパス・サンプリン
グの両方において、プログラム・カウンタまたは一連の
プログラム・カウンタが記録されているということであ
る。このデータによってコードのどの場所においてメモ
リ・システム性能が劣るかを確認することができるが、
どのデータ構造に支障があるかを直接記録するものでは
ない。また、サンプリング割り込みをトリガーするキャ
ッシュ・ミスの仮想アドレスを記録することにより、デ
ータのホット・スポットの未加工のプロファイルを手に
入れることができる。しかしながら、このデータからユ
ーザレベルのプロファイルを作り出すためには、仮想ア
ドレスがユーザレベルのデータ構造に関連していなけれ
ばならない。このようなマッピングを達成するための技
術は、1992年、ACM SIGMETRICS コ
ンピュータ・システムの方策とモデリングについての会
議議事録、マートニッシ(Martonisi )等の「MemS
py: プログラム内におけるメモリ・システム・ボト
ルネックの分析(MemSpy: Analyzing Memory System Bo
ttlenecks in Programs )」のなかで論じられ、そのす
べては、ここに参照により組み込まれる。
【0051】我々が比較的まれにサンプリングできるよ
うな長期走行プログラムではサンプリングがうまく働
き、そして尚どこの性能が劣るかを示す正確なヒストグ
ラムを作りだすために十分な数のサンプルを生み出す。
しかしながら、ある状況において、よりきめの細かい観
察が必要とされることもある。例えば、マルチスレッド
・アプリケーションの粗いサンプル・プロファイルを入
手したあと、プログラマはひとつのスレッドにおける特
定のプロシージャに集中することを望む。このようなき
めの細かいプロファイリングをよりよくサポートするた
め、我々は割り込み可能ビットをそれぞれのMprof
カウンタに加えることができ、これによってカウンタは
割り込み可能ビットがセットされたときのみ増加する。
プロシージャ、ループ、またはベーシック・ブロック内
におけるキャッシュ・ミス(またはストール検出器が実
行されているときはミス・ストール時間)の数を決定す
るためのプログラムは次のとおりである。 When program execution begins, InitialValue=read(cpimter0,enable=0. On entering the code segment, enable=1. On exiting the code segment, enable=0. On program exit, read the counter and subtract off InitialValue. カウンタのオーバーフローはカウンタが発生させるオー
バーフロー割り込みの数を記録することで取り扱われ
る。この技術には依然として、装備されたコードセグメ
ントを実行している間に前後関係切り替えが起こったと
き、その他のプロセスでのキャッシュ・ミスの原因は、
装備されたコードよるものと考えられるという問題があ
る。上に説明されたように、オペレーティング・システ
ムは、この問題を避けるために、各プロセス毎に割り込
み可能ビットの状態を維持しなければならない。
【0052】I.その他のモニタリング・アプリケーシ
ョン 本発明のパフォーマンス・モニタ100には、上記に述
べたようにいくつかの自然継続がある。大事な継続のひ
とつに、より多くのメモリ階層を装備してボトルネック
が発生する場所により良い洞察をもたらすことである。
特に、本アプローチは、変換索引緩衝機構(translatio
n look-aside buffers)、チップ上のインストラクショ
ン及びデータ・キャッシュ、書き込みバッファを含む今
日のプロセッサのメモリ・オーバーヘッドの情報源を区
別する。この情報は外部プローブから隠され、マイクロ
プロセッサのなかにあることから、このようなプロファ
イリングをするためにチップベンダー・サポートが必要
となる。本発明のサンプリング・モニタ技術は、マルチ
プロセッサ・システムにもまた適用されることが記され
なければならない。これは、たくさんの対話型スレッド
が、侵入してきた計器装備技術によって簡単に混乱させ
られることからも特に明らかである。サンプリング割り
込みが比較的まれなことから、本発明はマルチプロセッ
サ領域により適している。
【0053】1.ネットワーク・モニタリング a)導入 本発明のもうひとつのアプリケーションは、多数のプロ
セッサがコミュニケーション・ネットワークによって接
続されている分散型システムにおいて、高速ネットワー
クによって接続されたワークステーションのような問題
を解決することである。この環境におけるシステム性能
を最適化するときに考慮されるべき最も重要な機能は、
共働するプロセッサのなかでの相互作用を理解すること
である。本発明はこのプロファイリングにおける問題解
決を目的とし、安価で、不侵入的で、一般的に使用でき
る方法のネットワーク・モニタリング・システムであ
る。本アプローチによりこれまでのソフトウェア装備方
法(プログラム性能を混乱させる)や、ハードウェア・
モニタ(一般性と柔軟性に欠ける)において重要な利益
を得ることができる。ネットワーク・モニタとして使用
されたとき、ユーザは割り込みが発生する状況を特定す
る。モニタを適正にプログラムすることにより、我々
は、システムがどこで且つどのようにしてネットワーク
からのデータを待つのか、いつネットワーク利用状態が
高くなったり低くなったりするのか、そしてプログラム
はどこで重要なネットワーク・トラフィックを発生する
のか、ということを不侵入的に決定することができる。
【0054】b) 同期オーバーヘッドの検出 いかなる分散型システムにおいても、ひとつのプロセス
はもうひとつのプロセスがデータをつくりだすのを待っ
ている。待ちの効果は累積されることから、問題は特に
深刻である。プロセッサAがBからのデータを待ち、そ
のBは最終的にAをスローダウンさせるCのデータを待
つ。同期オーバーヘッドを目的とする従来のソフトウェ
ア・アプローチは、すべてのネットワークが、プログラ
ムはデータが到着するまでにどれだけの時間を待つのか
を読み出す前と後にクロックを必要とする。ネットワー
ク束がひとつのワードほどに小さいようなきめの細かい
ネットワークにおいて、これらのソフトウェア・クロッ
クのオーバーヘッド・アクセスは、システムに侵入し我
々がモニターしようというときの待ち時間を排除しなが
ら、実際のデータ読み取り時間を支配することができ
る。しばしばこの問題を無効にするために用いられる従
来のハードウェア・アプローチは、読み取り待ち時間を
発生させるネットワーク・ボード上のカウンタを維持す
るためにある。このアプローチにより我々がネットワー
ク読み取りを待つのにプログラムが費やした合計時間を
決定することができるが、プログラム実行中のいつが待
ち時間になっていたかを告げることはできないため、問
題を隔離することは難しい。
【0055】本発明のアプローチは読み取り待ち時間カ
ウンタを割り込み発生機と結合させている。最も単純な
ケースでは、ユーザは比較レジスタの値を特定すること
ができ、読み取り待ち時間カウンタが比較値に達したと
きはいつも割り込みが発生する。割り込みはその後、シ
ステム・ソフトウェアがプログラムの状態を記録するた
めに用いられる。我々はハンドラを特定の状態にあるア
プリケーションを記録するようにカスタマイズすること
ができるが、デフォルトによって割り込みハンドラは現
在実行中のコールストックを記録することができる。こ
の割り込みベース・サンプリング技術は過去にプログラ
ム状態へのCPU時間の消費に関連して用いられている
が、これはネットワーク読み取り時間またはキャッシュ
・ミス・サービス時間のような資源クラスにはそれほど
一般的に適用されていない。
【0056】c) 同期オーバーヘッドの理解 本発明はまたネットワーク上の待ち時間の配分に関する
情報を得るためにも利用される。例えば、短い待ち時間
の数に比較してどれだけ長い待ち時間があったのかを知
る上でも有用である。この機能を動かすために、表2に
示されたものと類似する構成が特定のレンジにおける個
々の待ち時間を累積するために用いられる。ユーザはレ
ンジャー・カウンタ204A、204Bのどれかひとつ
がそれぞれの比較器205A、205Bにおいて比較値
に達したときはいつでもレンジとハードウェア割り込み
をプログラムする。プログラマーはしばしば同期オーバ
ーヘッドがいくつかの長いメッセージ待ち、あるいはた
くさんの短い待ちによって派生したかどうかを区別した
いと希望するため、ある一組の延長検出器/カウンタで
さえも実質的に使用されている。
【0057】d) 資源の活用 本発明は、ネットワーク・トランザクションの数または
ネットワーク活用の数といった伝統的な方策を簡単に支
持するものである。しかし、トリガーされた割り込み能
力のため、本発明はこれらの方策と、小さなオーバーヘ
ッドをもつシステム状態とを関連づけることができる。
本発明は単純に資源のNユニットが累積されたときはい
つも割り込みを行い、プログラム状態を記録する。本発
明では、Nユニットが相関問題を防ぐことのできる方策
によりランダムなインターバルをとってサンプルするよ
うに配列されることが望ましい。すべてのネットワーク
・トランザクションのソフトウェア・カウンタを増加さ
せることによって類似したデータを入手することはシス
テムを混乱させることになりかねず、別のプロセッサ上
のイベントの関連実行時間を潜在的に変化させ、予測し
なかった方法によってトータル・システム性能に影響を
及ぼすことになる。割り込み能力を持たない伝統的なハ
ードウェア・カウンタもまた、これらが特定の資源のユ
ーザに関連する資源活用メカニズムをもたらさない、と
いう理由によりふさわしくない。
【0058】2.追加アプリケーション 最後に、モニタは、プロファイリングおよび最適化を上
回ったアプリケーションを有する。デバッグ・オペレー
ション: カウンタとデコーダー構造は、コミュニケー
ション・システムを用いるコードをデバッグするのに役
立つ。例えば、他の各プロセッサからの送受信の数はシ
ステム内で保持されることができ、これはコミュニケー
ション・システムが非同期化したとき、あるいはデッド
ロックに陥ったときそれがいつ起こったのかを検出する
のに用いられる。健全性並びにエラー・チェッキング:
モニタはエラー状況を検出するために用いられる。例
えば、もし与えられた時間内に特定のチャネルに対して
10の連続する書き込みが行われなかったことがわかれ
ば、ルールがこれまでに侵されなかったかをプロセッサ
を警戒するようにモニタをプログラムすることが可能と
なる。
【0059】3.ネットワーク・インターフェイスの例 本例では、ネットワーク・インターフェイスはワークス
テーション内にひとつのカードとして存在し、ワークス
テーションがネットワークのメッセージを用いてコミュ
ニケートすることを可能にすると考えられている。待ち
時間、メッセージの数、そしてコミュニケーションの値
は簡単にモニターされる。待ち時間はネットワークがブ
ロックされたときにおこるクロックの打刻数を数えるこ
とによりモニターされ、メッセージ値は与えられたクロ
ックの打刻時間内に交わされたメッセージの数を計るこ
とによりモニターされる。これらの方策がどのように有
用かを説明するため、プログラム例としてアナログ回路
シミュレーションが用いられる。回路シミュレーション
は、ふたつの主要フェーズと、回路(モデル評価)を示
す一連の式の構造と、それらの解決法とを有する。回路
(モデル式)の各要素を示す式は、全回路を示す式の係
数を決定するものと評価される。このような評価は個々
に実行され、それらの答えは回路式の係数を求めるため
に累積される。これらの係数はマトリックスの形式で蓄
えられる。結果となるマトリックスと変数ベクトルは回
路を示す一連の式を定義づける。これらの式はよく知ら
れるところのLUD(Lower Upper Decomposition )を
用いて解を得ることができる。LUDアルゴリズムは、
タスク・グラフにおけるタスクのようにまず列正常化、
列の更新とエレメント後退代入といったLUDオペレー
ションを示すことによって並行処理機械に装備すること
ができる。
【0060】これらのタスクはいくつかのプロセッサを
もつ機械にスケジュールすることが可能である。タスク
の結果は、その他のプロセッサのタスクにより必要とさ
れる。タスクとコミュニケーションは、タスクがプロセ
ッサのなかで実行されたとき、タスクが完了するために
必要なすべての関連情報を保証するために、タスクとコ
ミュニケーションは順々に並べられなければならない。
合計のLUD時間はネットワークにアクセスするための
待ち時間、必要とされるデータを交信するための時間、
そしてタスクの実行時間により決定される。スケジュー
ルがうまくいけば合計時間を短縮することができる。コ
ミュニケーション・ネットワークのための待ち時間はL
UDフェーズの間重要である。なぜならば合計計算時間
は、合計待ち時間をいかに短縮できるかにかかっている
からである。下手に並べられたタスクリストは、長い待
ち時間をもたらすことになろう。なぜならようやく実行
できたようなタスクは他のプロセッサがその結果を交信
してからの交信を待たねばならないからである。我々の
モニタはプログラムのオペレーションを混乱させること
なくイベントの数を数えることができることから、正確
な待ち時間の値を手に入れることができる。もし、待ち
時間が所定のスレッショルドを超えたときにモニタが割
り込みするようにセットされていれば、最も待ち時間の
原因となっているプログラムのパーツを簡単に確定する
ことができる。
【0061】もしモデル式が与えられたプロセッサの計
算負荷により力学的に分配されたとすると、コミュニケ
ーションの数はモデル評価の間重要である。もしたくさ
んのコミュニケーション・インテンシブ・モデルがひと
つのプロセッサに割り当てられたとすると、好ましくな
い状況が起こりうる。もし従来のソフトウェア・モニタ
リング技術が用いられてソフトウェアをモニターしよう
とすると、プロセッサへのモデル式の割り当ても変わ
り、そのために、発生するコミュニケーションを混乱さ
せかねない。
【0062】コミュニケーションの値もまた、モデル評
価のために重要である。マルチプロセッサ環境において
モデル式はマトリックスを保有するプロセッサの結果と
交信する必要がある。このようなコミュニケーション
は、モデル計算にインターリーブされる可能性がある。
デバイスモデル評価の間に生成されたコミュニケーショ
ンの量がネットワークのキャパシティを超える場合、プ
ロセッサはクリアするためにネットワークのウェイティ
ングをストールする。コミュニケーションの値をモニタ
ーすることにより、それらの高い値の原因となるデータ
を送っているプロセッサ並びにプログラムのパーツを確
定することが可能になる。
【0063】4.出力待ち行列の例 この例では、相互にコミュニケーションをはかるいくつ
かのワークステーションが有限待ち行列をもつネットワ
ーク・インターフェイス・カードを用いていると考え
る。待ち行列が一杯になったとき、コミュニケーション
は行われず、プロフェッサはストールする。待ち行列が
一杯になったとき、それを検出するのにモニタが用いら
れる。問題はプログラムのこのパートにおけるコミュニ
ケーションによって他のオペレーションをインターリー
ブすることにより解決することができ、そのためコミュ
ニケーションの発生はより少なくなる。
【0064】a.ネットワーク・ブロッキング検出 アプリケーションがコミュニケーション資源を用いるの
を待つためにどれほどの時間を費やしているかを知るこ
とが重要である。この状況はいくつかのプロセスのコミ
ュニケーションが互いにプロセッサ矛盾を続けていると
きに発生しうる。コミュニケーション障害は合計待ち時
間をモニターし、これをプログラムが他の負荷なしでネ
ットワークを用いて動いているときの待ち時間と比較す
ることによって検出することができる。ソフトウェア・
モニタはプロセスの実行時間を混乱させることがあり、
そのため不正確な時間を導くことになる。もしコミュニ
ケーションが頻繁かつ小さいものであるとき、その実行
時間がオリジナルプログラムの合計実行時間より大きな
フラクションとなることから、モニター用ソフトウェア
・オーバーヘッドはより大きな影響をもつことになり、
問題は悪化する。ハードウェア・モニタはこのブロッキ
ング時間を非侵入的にモニターすることができ、重要な
待ち時間が経過したときに限りプロセッサに割り込み、
ソフトウェアをモニターするのに費やされた時間の割合
を減らす。
【0065】b.プラットフォーム 我々は、コミュニケーション・ネットワークを用いてコ
ミュニケーションを行うたくさんのプロセッサのある環
境においてどのようにモニタが利用されるかということ
を説明してきた。モニタはこれ以外のたくさんのケース
でも同様に適用することができる。例えば、ディスク・
アクセスのようなシステム性能のさまざまな様相におい
て、単一プロセッサが控えめにモニターするようにも用
いることができる。また、いかなるタイプの内部接続ネ
ットワークでもマルチプロセッサ・システムに適用する
ことができる。この着想はワークステーションだけに限
るものではなく、PCやそのような本体に用いられるこ
とができる。本発明のさまざまな実施例が上記に示され
ているが、これらは一例として示され、これに限るもの
ではないことは、理解されるべきである。したがって、
本発明の範囲および意図は、上記に示した典型的実施例
のいずれかによって限られるのではなく、添付の請求の
範囲、またそれらと同等とみなされるものに従ってのみ
規定されるべきである。
【0066】
【発明の効果】本発明によれば、オペレーションを邪魔
することなくシステム状態をサンプリングするシステム
・プロファイラを提供することができる。
【図面の簡単な説明】
【図1】本発明の割り込みベースのハードウエア・サポ
ートの好ましい実施例のブロック図である。
【図2】本発明の割り込みベースのハードウエア・サポ
ートの別の実施例のブロック図である。
【図3】SUN Sparc10/41の第2レベルの
キャッシュのシステム・ワイド・サンプリングのための
プロセス毎のキャッシュ・プロファイルである。
【符号の説明】
100 パフォーマンス・モニタ 102 イベント検出モジュール 104 ダウン・カウンタ 108 割り込みゼネレータ 110 SBusカード 112 メモリ・システム 114 メモリ・システム信号 116 検出信号ライン 120 ロード割り込み可能ライン 122 ロード・カウンタ・ライン 124 信号ライン 128 SBUSデータ・ライン 130 割り込みライン 132 SBusインターフェイス
フロントページの続き (72)発明者 アーロン ジェー.ゴールドバーグ アメリカ合衆国 08540 ニュージャーシ ィ,プリンストン,サウス スタンワース ドライヴ 380 (72)発明者 ジョン アンドリュー トロッター アメリカ合衆国 07928 ニュージャーシ ィ,カザム,アパートメント エフ9,リ ヴァー ロード 420

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサ内のメモリ・システムの挙動
    をプロファイルするためのシステムであって、 所定のイベントの発生によって検出信号を生成するよう
    に構成されたイベント検出器と、 前記イベント検出器と連結しており、前記イベント検出
    器から受信した検出信号の発生を受信しカウントするよ
    うに構成され、且つ、前記検出信号の発生が所定のカウ
    ント値に達したときパルス信号を生成するように更に構
    成されたカウンタと、 前記カウンタと連結しており、前記パルス信号の受信に
    よってプロファイリング割り込み信号を生成するように
    構成された割り込みゼネレータと、 プロセッサに備えられ、前記割り込みゼネレータによっ
    て生成された前記プロファイリング割り込み信号の受信
    によりプロセッサの状態を記録するように構成された割
    り込みハンドラとを有することを特徴とするプロファイ
    ルするためのシステム。
  2. 【請求項2】 前記イベント検出器と、前記割り込みゼ
    ネレータと、前記カウンタとは、1つ以上のPALで実
    行されることを特徴とする請求項1記載のシステム。
  3. 【請求項3】 前記カウンタはダウン・カウンタであ
    り、前記ダウン・カウンタは、前記カウント値がゼロの
    ときに前記パルス信号を生成することを特徴とする請求
    項1記載のシステム。
  4. 【請求項4】 前記カウンタはロード可能なカウンタで
    あり、前記ロード可能なカウンタは前記所定のカウント
    値を受信するように構成されたことを特徴とする請求項
    1記載のシステム。
  5. 【請求項5】 メモリ・システムは、Sun SPAR
    C10/41ワークステーションに備えられていること
    を特徴とする請求項記載1のシステム。
  6. 【請求項6】 前記イベント検出器は、メモリ・バスを
    モニターし、主要メモリ・リード信号が第2レベルのキ
    ャシュ・ミスを検出するために受信された場合に前記検
    出信号を出力することを特徴とする請求項1記載のシス
    テム。
  7. 【請求項7】 前記カウンタは、外部リセット信号に前
    記ダウン・カウンタをリセットできるように構成された
    リセット入力を有することを特徴とする請求項1記載の
    システム。
  8. 【請求項8】 前記カウンタは、外部割り込み可能信号
    に前記ダウン・カウンタを割り込み可能とするように構
    成された割り込み可能入力を有することを特徴とする請
    求項1記載のシステム。
  9. 【請求項9】 前記イベント検出器はデータ・キャッシ
    ュ・ストール時間を検出し、前記カウンタは前記イベン
    ト検出器がキャッシュ・ストール信号を受信している間
    にクロック・サイクルの数をカウントすることを特徴と
    する請求項1記載のシステム。
  10. 【請求項10】 前記イベント検出器は、第1のキャッ
    シュ・ミスおよび第2レベルのキャッシュ・ミスを検出
    することを特徴とする請求項1記載のシステム。
  11. 【請求項11】 前記カウンタは割り込み可能入力を更
    に有し、前記カウンタは前記割り込み可能ビットがセッ
    トされるときに前記イベントをカウントするように構成
    されていることを特徴とする請求項記載1のシステム。
  12. 【請求項12】 プロセッサ・メモリ・システム内の多
    数の状態を同時にプロファイルするためのパフォーマン
    ス・モニタ・システムであって、 それぞれ所定の状態をモニターし、前記所定の状態の発
    生によって検出信号を生成するように構成された複数の
    状態検出器と、 それぞれ前記複数の状態検出器の対応するひとつと連結
    し、前記検出信号を受信し、受信した前記検出信号の数
    を示すカウント信号を生成するための複数のカウンタ
    と、 それぞれ前記複数のカウンタの対応するひとつと連結す
    るロード可能比較レジスタであり、前記カウント信号を
    前記対応するカウンタから受信し、前記複数の比較レジ
    スタのそれぞれにロードされた所定値と前記カウント信
    号を比較するように構成された複数のロード可能比較レ
    ジスタと、 前記複数の比較器のそれぞれと連結し、前記複数の比較
    器から受信した前記パルス信号間の所定の関係をベース
    としたプロファイリング割り込み信号を生成するように
    構成された割り込みゼネレータと、 プロセッサに備えられ、前記割り込みゼネレータにより
    生成された前記プロファイリング割り込み信号の受信に
    よってプロセッサの状態を記録するように構成された割
    り込みハンドラとを有することを特徴とするパフォーマ
    ンス・モニタ・システム。
  13. 【請求項13】 パフォーマンス・モニタは、フィール
    ド・プログラム可能ゲート・アレイで実行されることを
    特徴とする請求項12記載のシステム。
  14. 【請求項14】 前記複数のカウンタはそれぞれ、割り
    込み可能入力を有し、前記割り込み可能入力は、前記割
    り込み可能ビットがセットされるとき各前記カウンタが
    前記イベントをカウントできるようにすることを特徴と
    する請求項12記載のシステム。
  15. 【請求項15】 コミニュケーション・ネットワークに
    より連結された多数のプロセッサを有する分さん型シス
    テム内の共働プロセッサ間の相互作用をモニターするた
    めのネットワーク・モニタリング・システムであって、 所定のイベントの発生によって検出信号を生成するよう
    に構成されたイベント検出器と、 前記たイベント検出器と連結しており、前記たイベント
    検出器から受信した検出信号の発生を受信しカウントす
    るように構成され、且つ、前記検出信号発生が所定のカ
    ウント値に達したときパルス信号を生成するように更に
    構成されたカウンタと、 前記カウンタと連結しており、前記パルス信号の受信に
    よってプロファイリング割り込み信号を生成するように
    構成された割り込みゼネレータと、 プロセッサに備えられ、前記割り込みゼネレータにより
    生成された前記プロファイリング割り込み信号の受信に
    よってプロセッサの状態を記録するように構成された割
    り込みハンドラとを有することを特徴とするプロファイ
    ルするためのシステム。
  16. 【請求項16】 前記多数のプロセッサはワークステー
    ションであることを特徴とする請求項15記載のシステ
    ム。
  17. 【請求項17】 パフォーマンス・モニタは、ネットワ
    ーク上の待ち時間の分散をモニターすることを特徴とす
    る請求項15記載のシステム。
  18. 【請求項18】 前記所定値はランダムな数であり、こ
    れによりシステムはランダムな間隔でネットワークをサ
    ンプルすることを特徴とする請求項15記載のシステ
    ム。
JP7152957A 1994-06-20 1995-06-20 システム性能をプロファイルするための割り込みベースのハードウエア・サポート Withdrawn JPH0830494A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US26240494A 1994-06-20 1994-06-20
US08/262404 1994-06-20

Publications (1)

Publication Number Publication Date
JPH0830494A true JPH0830494A (ja) 1996-02-02

Family

ID=22997354

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7152957A Withdrawn JPH0830494A (ja) 1994-06-20 1995-06-20 システム性能をプロファイルするための割り込みベースのハードウエア・サポート

Country Status (4)

Country Link
US (1) US5768500A (ja)
EP (1) EP0689141A3 (ja)
JP (1) JPH0830494A (ja)
CA (1) CA2152110C (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111779B2 (en) 2004-01-30 2006-09-26 Nec Corporation System, method, and program for generating transaction profile for measuring and analyzing computer system performance
CN100345124C (zh) * 2003-09-25 2007-10-24 国际商业机器公司 利用共享专用高速缓存减少高速缓存失误率的方法和系统
EP2230602A1 (en) 2009-03-18 2010-09-22 Fujitsu Limited Processing apparatus and method for acquiring log information
KR20140066913A (ko) * 2012-11-23 2014-06-03 삼성전자주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템
US9619361B2 (en) 2013-03-18 2017-04-11 Fujitsu Limited Performance profiling apparatus and performance profiling method

Families Citing this family (207)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997030402A1 (en) * 1996-02-16 1997-08-21 Philips Electronics N.V. A platform subsystem for executing a multimedia application title and a method for storing it
JPH10124327A (ja) * 1996-10-16 1998-05-15 Nec Corp インストラクションキャッシュミス率削減方法
US6085338A (en) * 1996-12-17 2000-07-04 International Business Machines Corporation CPI infinite and finite analysis
US5960198A (en) * 1997-03-19 1999-09-28 International Business Machines Corporation Software profiler with runtime control to enable and disable instrumented executable
US5933643A (en) * 1997-04-17 1999-08-03 Hewlett Packard Company Profiler driven data prefetching optimization where code generation not performed for loops
FR2764097B1 (fr) * 1997-06-02 1999-07-02 Bull Sa Detection de points chauds dans une machine avec memoire a acces non uniforme
US6332212B1 (en) * 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US6341357B1 (en) * 1997-10-08 2002-01-22 Sun Microsystems, Inc. Apparatus and method for processor performance monitoring
US6035306A (en) * 1997-11-24 2000-03-07 Terascape Software Inc. Method for improving performance of large databases
US6374367B1 (en) * 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
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
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
US6202127B1 (en) * 1997-11-26 2001-03-13 Compaq Computer Corporation Apparatus for spatial and temporal sampling in a computer memory system
US6175814B1 (en) 1997-11-26 2001-01-16 Compaq Computer Corporation Apparatus for determining the instantaneous average number of instructions processed
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
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
US6195748B1 (en) 1997-11-26 2001-02-27 Compaq Computer Corporation Apparatus for sampling instruction execution information in a processor pipeline
US6332178B1 (en) * 1997-11-26 2001-12-18 Compaq Computer Corporation Method for estimating statistics of properties of memory system transactions
US6163840A (en) * 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6662358B1 (en) 1997-12-12 2003-12-09 International Business Machines Corporation Minimizing profiling-related perturbation using periodic contextual information
US6732357B1 (en) 1997-12-12 2004-05-04 International Business Machines Corporation Determining and compensating for temporal overhead in trace record generation and processing
US6507805B1 (en) 1997-12-12 2003-01-14 International Business Machines Corporation Method and system for compensating for instrumentation overhead in trace data by detecting minimum event times
US6651243B1 (en) 1997-12-12 2003-11-18 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees
US6055492A (en) 1997-12-12 2000-04-25 International Business Machines Corporation System and method for providing trace information data reduction
US6546548B1 (en) 1997-12-12 2003-04-08 International Business Machines Corporation Method and system for compensating for output overhead in trace data using initial calibration information
US6311325B1 (en) 1998-10-22 2001-10-30 International Business Machines Corporation Method and apparatus for profiling processes in a data processing system background of the invention
US6513155B1 (en) 1997-12-12 2003-01-28 International Business Machines Corporation Method and system for merging event-based data and sampled data into postprocessed trace output
US6560773B1 (en) 1997-12-12 2003-05-06 International Business Machines Corporation Method and system for memory leak detection in an object-oriented environment during real-time trace processing
US6539339B1 (en) 1997-12-12 2003-03-25 International Business Machines Corporation Method and system for maintaining thread-relative metrics for trace data adjusted for thread switches
US6338159B1 (en) 1997-12-12 2002-01-08 International Business Machines Corporation System and method for providing trace information
US6349406B1 (en) 1997-12-12 2002-02-19 International Business Machines Coporation Method and system for compensating for instrumentation overhead in trace data by computing average minimum event times
US6751789B1 (en) 1997-12-12 2004-06-15 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
US6275782B1 (en) * 1998-05-05 2001-08-14 Advanced Micro Devices, Inc. Non-intrusive performance monitoring
FR2778761B1 (fr) * 1998-05-12 2001-08-03 Canon Kk Dispositif et procede d'asservissement d'execution de programme d'ordinateur a des evenements internes a un processeur
US6243785B1 (en) * 1998-05-20 2001-06-05 3Com Corporation Hardware assisted polling for software drivers
US6134710A (en) * 1998-06-26 2000-10-17 International Business Machines Corp. Adaptive method and system to minimize the effect of long cache misses
US6263298B1 (en) * 1998-08-13 2001-07-17 Precise Software Solutions Ltd. Method for analyzing system performance
US6332117B1 (en) 1998-10-22 2001-12-18 International Business Machines Corporation General event stamping scheme
US6763452B1 (en) * 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6574665B1 (en) * 1999-02-26 2003-06-03 Lucent Technologies Inc. Hierarchical vector clock
US6397382B1 (en) * 1999-05-12 2002-05-28 Wind River Systems, Inc. Dynamic software code instrumentation with cache disabling feature
US6374369B1 (en) * 1999-05-21 2002-04-16 Philips Electronics North America Corporation Stochastic performance analysis method and apparatus therefor
US7055739B1 (en) * 1999-05-25 2006-06-06 Silverbrook Research Pty Ltd Identity-coded surface with reference points
US6816274B1 (en) * 1999-05-25 2004-11-09 Silverbrook Research Pty Ltd Method and system for composition and delivery of electronic mail
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6604210B1 (en) 1999-09-09 2003-08-05 International Business Machines Corporation Method and system for detecting and recovering from in trace data
US6598012B1 (en) 1999-10-07 2003-07-22 International Business Machines Corporation Method and system for compensating for output overhead in trace date using trace record information
US6421826B1 (en) * 1999-11-05 2002-07-16 Sun Microsystems, Inc. Method and apparatus for performing prefetching at the function level
US6728955B1 (en) 1999-11-05 2004-04-27 International Business Machines Corporation Processing events during profiling of an instrumented program
US7143197B1 (en) * 1999-11-08 2006-11-28 Agere Systems Inc. Method and system for monitoring a telecommunications signal transmission link
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6952798B2 (en) * 2000-03-30 2005-10-04 Barksdale Jr William W Method for determining the performance of a communications system
US6556952B1 (en) 2000-05-04 2003-04-29 Advanced Micro Devices, Inc. Performance monitoring and optimizing of controller parameters
US6658652B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6904594B1 (en) 2000-07-06 2005-06-07 International Business Machines Corporation Method and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment
US6735758B1 (en) 2000-07-06 2004-05-11 International Business Machines Corporation Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems
US7389497B1 (en) 2000-07-06 2008-06-17 International Business Machines Corporation Method and system for tracing profiling information using per thread metric variables with reused kernel threads
US6742178B1 (en) 2000-07-20 2004-05-25 International Business Machines Corporation System and method for instrumenting application class files with correlation information to the instrumentation
US6662359B1 (en) 2000-07-20 2003-12-09 International Business Machines Corporation System and method for injecting hooks into Java classes to handle exception and finalization processing
US7735072B1 (en) * 2000-08-11 2010-06-08 International Business Machines Corporation Method and apparatus for profiling computer program execution
US6748583B2 (en) * 2000-12-27 2004-06-08 International Business Machines Corporation Monitoring execution of an hierarchical visual program such as for debugging a message flow
US20020124085A1 (en) * 2000-12-28 2002-09-05 Fujitsu Limited Method of simulating operation of logical unit, and computer-readable recording medium retaining program for simulating operation of logical unit
US7093108B2 (en) 2001-02-01 2006-08-15 Arm Limited Apparatus and method for efficiently incorporating instruction set information with instruction addresses
US7093236B2 (en) * 2001-02-01 2006-08-15 Arm Limited Tracing out-of-order data
US7016972B2 (en) * 2001-04-23 2006-03-21 International Business Machines Corporation Method and system for providing and viewing performance analysis of resource groups
US7111282B2 (en) * 2001-06-12 2006-09-19 Hewlett-Packard Development Company, L.P. Instrumenting a software program and collecting data from the instrumented software program by type
US6947052B2 (en) * 2001-07-13 2005-09-20 Texas Instruments Incorporated Visual program memory hierarchy optimization
US7552261B2 (en) * 2001-10-12 2009-06-23 Mips Technologies, Inc. Configurable prioritization of core generated interrupts
US7487339B2 (en) 2001-10-12 2009-02-03 Mips Technologies, Inc. Method and apparatus for binding shadow registers to vectored interrupts
US20030083849A1 (en) * 2001-10-31 2003-05-01 Cabot Mason B. Statistical sampling process
US7360207B2 (en) * 2001-12-13 2008-04-15 Hewlett-Packard Development Company, L.P. Method and system to analyze inlined functions
US20050107997A1 (en) * 2002-03-14 2005-05-19 Julian Watts System and method for resource usage estimation
US7539608B1 (en) * 2002-05-10 2009-05-26 Oracle International Corporation Techniques for determining effects on system performance of a memory management parameter
US20040064685A1 (en) * 2002-09-27 2004-04-01 Hung Nguyen System and method for real-time tracing and profiling of a superscalar processor implementing conditional execution
US7299343B2 (en) * 2002-09-27 2007-11-20 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for cooperative execution of multiple branching instructions in a processor
US7020765B2 (en) * 2002-09-27 2006-03-28 Lsi Logic Corporation Marking queue for simultaneous execution of instructions in code block specified by conditional execution instruction
US20040064684A1 (en) * 2002-09-30 2004-04-01 Kalluri Seshagiri P. System and method for selectively updating pointers used in conditionally executed load/store with update instructions
CA2408481C (en) 2002-10-17 2009-10-06 Ibm Canada Limited-Ibm Canada Limitee Autonomic reallocation of memory among buffer pools
US7159144B2 (en) * 2003-06-20 2007-01-02 Broadcom Corporation Firmware code profiling
GB0314874D0 (en) * 2003-06-26 2003-07-30 Ibm Generating a model of software in execution
US20050010908A1 (en) * 2003-07-10 2005-01-13 International Business Machines Corporation Method, apparatus and computer program product for implementing breakpoint based performance measurement
US7496907B2 (en) * 2003-08-06 2009-02-24 International Business Machines Corporation Method and system for profile normalization in an autonomic software system
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US20050071816A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically count instruction execution for applications
US20050071821A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically select instructions for selective counting
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
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
US7395527B2 (en) * 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US20050091456A1 (en) * 2003-10-23 2005-04-28 Huck Jerome C. Determining an arrangement of data in a memory for cache efficiency
US7308683B2 (en) * 2003-10-30 2007-12-11 International Business Machines Corporation Ordering of high use program code segments using simulated annealing
US7318219B2 (en) * 2003-11-28 2008-01-08 International Business Machines Corporation System and method for performance monitoring
US20050155022A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses to identify hot spots
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7290255B2 (en) * 2004-01-14 2007-10-30 International Business Machines Corporation Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US20050155018A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
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
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
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
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
US7293164B2 (en) * 2004-01-14 2007-11-06 International Business Machines Corporation Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions
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
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
US7299319B2 (en) * 2004-03-22 2007-11-20 International Business Machines Corporation Method and apparatus for providing hardware assistance for code coverage
US7296130B2 (en) * 2004-03-22 2007-11-13 International Business Machines Corporation Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data
US8135915B2 (en) * 2004-03-22 2012-03-13 International Business Machines Corporation Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator
US20050210450A1 (en) * 2004-03-22 2005-09-22 Dimpsey Robert T Method and appartus for hardware assistance for data access coverage
US7526616B2 (en) * 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
US7480899B2 (en) * 2004-03-22 2009-01-20 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for code coverage
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
US7707554B1 (en) * 2004-04-21 2010-04-27 Oracle America, Inc. Associating data source information with runtime events
JP4599902B2 (ja) * 2004-06-18 2010-12-15 株式会社日立製作所 ハードウェアモニタを用いた性能解析方法
US8214819B2 (en) * 2004-07-09 2012-07-03 Hewlett-Packard Development Company, L.P. Determining call counts in a program
JP4262174B2 (ja) * 2004-09-09 2009-05-13 キヤノン株式会社 シミュレーション時間取得方法
US20060130001A1 (en) * 2004-11-30 2006-06-15 International Business Machines Corporation Apparatus and method for call stack profiling for a software application
US20060143384A1 (en) * 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US7788240B2 (en) 2004-12-29 2010-08-31 Sap Ag Hash mapping with secondary table having linear probing
US7752354B2 (en) * 2005-02-11 2010-07-06 International Business Machines Corporation Auxiliary mechanism to manage instruction restart and restart coming in a lookahead processor
US7657875B2 (en) * 2005-04-12 2010-02-02 International Business Machines Corporation System and method for collecting a plurality of metrics in a single profiling run of computer code
US7640539B2 (en) * 2005-04-12 2009-12-29 International Business Machines Corporation Instruction profiling using multiple metrics
US7703079B1 (en) * 2005-05-03 2010-04-20 Oracle America, Inc. System performance prediction
US7886194B2 (en) * 2005-05-16 2011-02-08 Texas Instruments Incorporated Event-generating instructions
US7373482B1 (en) * 2005-05-26 2008-05-13 Sun Microsystems, Inc. Software-based technique for improving the effectiveness of prefetching during scout mode
US20070079294A1 (en) * 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070150881A1 (en) * 2005-12-22 2007-06-28 Motorola, Inc. Method and system for run-time cache logging
WO2007076634A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Virtual event interface to support platform-wide performance optimization
US7861068B2 (en) * 2006-03-07 2010-12-28 Intel Corporation Method and apparatus for using dynamic workload characteristics to control CPU frequency and voltage scaling
US8255876B2 (en) * 2006-07-28 2012-08-28 Apple Inc. Execution difference identification tool
DE102006041444B4 (de) 2006-09-04 2014-10-30 Infineon Technologies Ag Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
US7519797B1 (en) * 2006-11-02 2009-04-14 Nividia Corporation Hierarchical multi-precision pipeline counters
US7720636B1 (en) * 2007-02-14 2010-05-18 Xilinx, Inc. Performance monitors (PMs) for measuring performance in a system and providing a record of transactions performed
US8479124B1 (en) 2007-02-14 2013-07-02 Xilinx, Inc. Graphical user interface (GUI) including input files with information that determines representation of subsequent content displayed by the GUI
US7711907B1 (en) 2007-02-14 2010-05-04 Xilinx, Inc. Self aligning state machine
US7913022B1 (en) 2007-02-14 2011-03-22 Xilinx, Inc. Port interface modules (PIMs) in a multi-port memory controller (MPMC)
US20080301717A1 (en) * 2007-05-31 2008-12-04 Microsoft Corporation Visualizing a memory footprint of an application program
US7962924B2 (en) 2007-06-07 2011-06-14 International Business Machines Corporation System and method for call stack sampling combined with node and instruction tracing
JP5029245B2 (ja) * 2007-09-20 2012-09-19 富士通セミコンダクター株式会社 プロファイリング方法及びプログラム
US9354890B1 (en) * 2007-10-23 2016-05-31 Marvell International Ltd. Call stack structure for enabling execution of code outside of a subroutine and between call stack frames
US8095775B1 (en) 2007-11-21 2012-01-10 Marvell International Ltd. Instruction pointers in very long instruction words
US9442758B1 (en) 2008-01-21 2016-09-13 Marvell International Ltd. Dynamic processor core switching
US8261245B2 (en) * 2008-01-22 2012-09-04 International Business Machines Corporation Method and system for associating profiler data with a reference clock
US20090210740A1 (en) * 2008-02-14 2009-08-20 Song Huang Off-chip access workload characterization methodology for optimizing computing efficiency
US20100017583A1 (en) * 2008-07-15 2010-01-21 International Business Machines Corporation Call Stack Sampling for a Multi-Processor System
US8286134B2 (en) * 2008-07-15 2012-10-09 International Business Machines Corporation Call stack sampling for a multi-processor system
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
US7917677B2 (en) * 2008-09-15 2011-03-29 International Business Machines Corporation Smart profiler
US8850402B2 (en) * 2009-05-22 2014-09-30 International Business Machines Corporation Determining performance of a software entity
US8161247B2 (en) * 2009-06-26 2012-04-17 Microsoft Corporation Wait loss synchronization
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8812796B2 (en) * 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US20100333071A1 (en) * 2009-06-30 2010-12-30 International Business Machines Corporation Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8533440B2 (en) * 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US8539465B2 (en) 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
CN102231130B (zh) * 2010-01-11 2015-06-17 国际商业机器公司 计算机系统性能分析方法和装置
US9582443B1 (en) 2010-02-12 2017-02-28 Marvell International Ltd. Serial control channel processor for executing time-based instructions
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US8615742B2 (en) * 2010-11-16 2013-12-24 International Business Machines Corporation Autonomic hotspot profiling using paired performance sampling
US8799904B2 (en) * 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
US8884920B1 (en) 2011-05-25 2014-11-11 Marvell International Ltd. Programmatic sensing of capacitive sensors
US9098694B1 (en) 2011-07-06 2015-08-04 Marvell International Ltd. Clone-resistant logic
US9069553B2 (en) 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
US20120095607A1 (en) * 2011-12-22 2012-04-19 Wells Ryan D Method, Apparatus, and System for Energy Efficiency and Energy Conservation Through Dynamic Management of Memory and Input/Output Subsystems
US9471315B2 (en) 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
US9430238B2 (en) 2012-03-16 2016-08-30 International Business Machines Corporation Run-time-instrumentation controls emit instruction
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9483268B2 (en) 2012-03-16 2016-11-01 International Business Machines Corporation Hardware based run-time instrumentation facility for managed run-times
US9367316B2 (en) 2012-03-16 2016-06-14 International Business Machines Corporation Run-time instrumentation indirect sampling by instruction operation code
US9465716B2 (en) 2012-03-16 2016-10-11 International Business Machines Corporation Run-time instrumentation directed sampling
US9250902B2 (en) 2012-03-16 2016-02-02 International Business Machines Corporation Determining the status of run-time-instrumentation controls
US9411591B2 (en) 2012-03-16 2016-08-09 International Business Machines Corporation Run-time instrumentation sampling in transactional-execution mode
US9158660B2 (en) * 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
US9280447B2 (en) 2012-03-16 2016-03-08 International Business Machines Corporation Modifying run-time-instrumentation controls from a lesser-privileged state
US9405541B2 (en) 2012-03-16 2016-08-02 International Business Machines Corporation Run-time instrumentation indirect sampling by address
US9454462B2 (en) 2012-03-16 2016-09-27 International Business Machines Corporation Run-time instrumentation monitoring for processor characteristic changes
US9021172B2 (en) * 2012-07-06 2015-04-28 Arm Limited Data processing apparatus and method and method for generating performance monitoring interrupt signal based on first event counter and second event counter
CN104111871B (zh) * 2013-04-16 2017-05-03 济南概伦电子科技有限公司 一种用于执行电路仿真中动态负载平衡的方法及装置
US11018988B2 (en) * 2013-08-26 2021-05-25 Vmware, Inc. Translating high level requirements policies to distributed configurations
US10346437B1 (en) * 2014-06-18 2019-07-09 EMC IP Holding Company LLC Event triggered data collection
WO2016122503A1 (en) * 2015-01-28 2016-08-04 Hewlett-Packard Development Company, L.P. Collecting hardware performance data
TWI518585B (zh) * 2015-05-18 2016-01-21 國立成功大學 具有草稿式記憶體的電子裝置與草稿式記憶體的管理方法
US11003428B2 (en) 2016-05-25 2021-05-11 Microsoft Technolgy Licensing, Llc. Sample driven profile guided optimization with precise correlation
US10705843B2 (en) * 2017-12-21 2020-07-07 International Business Machines Corporation Method and system for detection of thread stall
US10853310B2 (en) * 2019-03-05 2020-12-01 Arm Limited Call stack sampling
US11579859B2 (en) * 2020-12-29 2023-02-14 Imperva, Inc. Dynamic invocation of partner product exit routine in an active information management system
US11698797B2 (en) 2021-07-01 2023-07-11 Micro Focus Llc Application tuning based on performance characteristics
US12073121B2 (en) * 2022-10-20 2024-08-27 Micron Technology, Inc. Command timer interrupt

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3868480A (en) * 1974-01-24 1975-02-25 Telesciences Inc Event monitoring transceiver
DE3328540A1 (de) * 1983-08-06 1985-02-14 Robert Bosch Gmbh, 7000 Stuttgart Vorrichtung zur messung der zeit zwischen zwei ereignissen
US4528553A (en) * 1983-08-16 1985-07-09 Conoco Inc. Event detection apparatus
US4636967A (en) * 1983-10-24 1987-01-13 Honeywell Inc. Monitor circuit
JPS63123218A (ja) * 1986-11-12 1988-05-27 Nec Corp タイマ/カウンタ回路
JP2777496B2 (ja) * 1991-02-28 1998-07-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法
US5446876A (en) * 1994-04-15 1995-08-29 International Business Machines Corporation Hardware mechanism for instruction/data address tracing

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100345124C (zh) * 2003-09-25 2007-10-24 国际商业机器公司 利用共享专用高速缓存减少高速缓存失误率的方法和系统
US7111779B2 (en) 2004-01-30 2006-09-26 Nec Corporation System, method, and program for generating transaction profile for measuring and analyzing computer system performance
EP2230602A1 (en) 2009-03-18 2010-09-22 Fujitsu Limited Processing apparatus and method for acquiring log information
US8731688B2 (en) 2009-03-18 2014-05-20 Fujitsu Limited Processing apparatus and method for acquiring log information
KR20140066913A (ko) * 2012-11-23 2014-06-03 삼성전자주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템
US9619361B2 (en) 2013-03-18 2017-04-11 Fujitsu Limited Performance profiling apparatus and performance profiling method

Also Published As

Publication number Publication date
EP0689141A2 (en) 1995-12-27
US5768500A (en) 1998-06-16
CA2152110A1 (en) 1995-12-21
EP0689141A3 (en) 1997-10-15
CA2152110C (en) 1999-07-27

Similar Documents

Publication Publication Date Title
JPH0830494A (ja) システム性能をプロファイルするための割り込みベースのハードウエア・サポート
Anderson et al. Continuous profiling: Where have all the cycles gone?
US6374367B1 (en) Apparatus and method for monitoring a computer system to guide optimization
US6442585B1 (en) Method for scheduling contexts based on statistics of memory system interactions in a computer system
Zagha et al. Performance analysis using the MIPS R10000 performance counters
US5940618A (en) Code instrumentation system with non intrusive means and cache memory optimization for dynamic monitoring of code segments
US6202127B1 (en) Apparatus for spatial and temporal sampling in a computer memory system
US8443341B2 (en) System for and method of capturing application characteristics data from a computer system and modeling target system
US8539455B2 (en) System for and method of capturing performance characteristics data from a computer system and modeling target system performance
Berg et al. Fast data-locality profiling of native execution
EP0919920B1 (en) Method for estimating statistics of properties of memory system transactions
EP0919923A2 (en) Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US10402292B2 (en) System and method for detecting false sharing
Mancuso et al. Light-prem: Automated software refactoring for predictable execution on cots embedded systems
Chen Software methods for system address tracing
Cruz et al. Thread and Data Mapping for Multicore Systems: Improving Communication and Memory Accesses
Marathe et al. Source-code-correlated cache coherence characterization of openmp benchmarks
Moore et al. PAPI deployment, evaluation, and extensions
Schaelicke et al. Profiling I/O interrupts in modern architectures
Huber et al. WCET driven design space exploration of an object cache
Chen et al. Software methods for system address tracing: implementation and validation
von Elm et al. Performance Tools for the NEC SX-Aurora Tsubasa
Buck et al. A new hardware monitor design to measure data structure-specific cache eviction information
Chen et al. A lightweight hybrid hardware/software approach for object-relative memory profiling
WO2008058292A2 (en) System for and method of capturing application characteristics from a computer system and modeling target system

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20020903