JP2000347863A - 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム - Google Patents

投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム

Info

Publication number
JP2000347863A
JP2000347863A JP2000135279A JP2000135279A JP2000347863A JP 2000347863 A JP2000347863 A JP 2000347863A JP 2000135279 A JP2000135279 A JP 2000135279A JP 2000135279 A JP2000135279 A JP 2000135279A JP 2000347863 A JP2000347863 A JP 2000347863A
Authority
JP
Japan
Prior art keywords
event
instruction
instructions
occurrences
counter
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
JP2000135279A
Other languages
English (en)
Other versions
JP3531731B2 (ja
Inventor
Eric Merikasu Alexander
アレクサンダー・エリック・メリカス
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2000347863A publication Critical patent/JP2000347863A/ja
Application granted granted Critical
Publication of JP3531731B2 publication Critical patent/JP3531731B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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

Abstract

(57)【要約】 (修正有) 【課題】 投機的プロセッサ内で非投機的イベントをカ
ウントするための方法およびシステムを提供する。 【解決手段】 投機的プロセッサには、データ処理シス
テム内の指定されたイベントの発生をカウントするため
に、性能モニタ内に複数のカウンタが含まれる。監視す
るイベントが指定されると、そのイベントは、投機的プ
ロセッサによる命令の実行中に監視される。投機的プロ
セッサによって実行されるすべての命令に関する、指定
されたイベントの発生回数が生成され、投機的プロセッ
サによって完全に実行される命令に関する、指定された
イベントの発生回数が生成される。すべての命令に関す
る指定されたイベントの発生回数と、すべての完了した
命令に関する指定されたイベントの発生回数との間の差
を、投機的プロセッサによって投機的に実行された命令
に関する指定されたイベントの発生回数として生成す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的には改良さ
れたデータ処理システムに関し、具体的には、データ処
理システム内の性能を監視するための方法およびシステ
ムに関する。
【0002】
【従来の技術】プロセッサを使用する通常のコンピュー
タ・システムでは、システム開発者は、最も効果的なシ
ステム設計のためにソフトウェア実行の最適化を望む。
通常、プログラムの、メモリに対するアクセス・パター
ンとシステムのメモリ階層との相互作用でのシステム効
率を判定するための調査が実行される。メモリ階層の挙
動の理解は、タスクのスケジューリングまたは区分を行
うアルゴリズムの開発ならびに、システムを最適化する
ためのデータの分配および構造化に役立つ。
【0003】現況技術のプロセッサ内では、プロセッサ
が、ソフトウェアによって選択可能なイベントの発生を
カウントし、関連するデータ処理システム内でのプロセ
スの実行の時間を測定することを可能にする機構が設け
られることがしばしばである。これらの機構を、プロセ
ッサの性能モニタと称する。性能監視は、システムでの
ソフトウェアの使用を最適化するために使用されること
がしばしばである。性能モニタは、一般に、特定の時点
での計算機の状態を判定することによってシステムのデ
バッギングおよび分析を援助するために選択された特性
を監視するための、プロセッサに組み込まれた機構とみ
なされる。性能モニタは、プロセッサの命令実行および
記憶域制御の利用に関する情報を作ることがしばしばで
ある。たとえば、性能モニタを使用して、処理システム
内のイベントの間に経過した時間の長さに関する情報を
提供することができる。もう1つの例として、ソフトウ
ェア・エンジニアは、分岐命令およびメモリ・アクセス
を再配置することによってプログラムを最適化するため
に、性能モニタからのタイミング・データを使用するこ
とができる。さらに、性能モニタは、データ処理システ
ムのL1キャッシュ、L2キャッシュおよび主記憶への
アクセス時間に関するデータを収集するのに使用するこ
とができる。このデータを使用して、システム設計者
は、特定のソフトウェア環境またはハードウェア環境に
固有の性能ボトルネックを識別することができる。作ら
れる情報は、通常は、システム設計者にとって、所与の
システムの性能強化の手段または新規システムの設計で
の改良の開発の手段に向かう案内になる。
【0004】データ処理システム内のイベントは、性能
モニタ内の1つまたは複数のカウンタによってカウント
される。そのようなカウンタの動作は、複数のビット・
フィールドからなる制御レジスタによって管理される。
一般に、制御レジスタとカウンタの両方が、ソフトウェ
アによって読書可能である。したがって、制御レジスタ
に値を書き込むことによって、ユーザは、データ処理シ
ステム内の監視されるイベントを選択し、カウンタを使
用可能にする条件を指定することができる。
【0005】プロセッサの効率を評価するためには、実
行された作業の量と、命令実行のために消費された資源
の量を判定する必要がある。多くの現代のプロセッサで
は、高性能を達成するために投機的(speculative)処
理が実施されている。その結果、処理される命令の一部
は、それが投機的に実行された条件が発生しなかったの
で、完全に実行されずに取り消されるかフラッシュされ
る場合がある。他の命令と同様に、投機的命令は、プロ
セッサ内の資源を消費する。ほとんどの現代のプロセッ
サでは、資源の使用に関連する、事前に定義されたイベ
ントの発生をカウントする性能モニタ・カウンタが実施
されている。しかし、性能監視と命令の投機的実行の両
方を備えるプロセッサでは、性能モニタ・カウンタが、
非投機的命令すなわち実行を完了する命令と、投機的命
令すなわち完了しない命令の両方についてイベントをカ
ウントする。
【0006】
【発明が解決しようとする課題】したがって、命令の投
機的実行を実行するプロセッサ内で、資源の使用を正確
に監視するための方法およびシステムを有することが有
利である。完了した命令と、投機的に実行され、完了し
なかった命令との間で、プロセッサ内の資源の使用を比
較するための方法およびシステムを有することは、さら
に有利である。
【0007】
【課題を解決するための手段】本発明は、投機的プロセ
ッサで非投機的イベントをカウントするための方法およ
びシステムを提供する。投機的プロセッサには、性能モ
ニタ内に、データ処理システム内の指定されたイベント
の発生をカウントするための複数のカウンタが含まれ
る。監視されるイベントが指定される。指定されたイベ
ントは、投機的プロセッサによる命令の実行中に監視さ
れる。投機的プロセッサによって実行されるすべての命
令に関する、指定されたイベントの発生回数が生成さ
れ、投機的プロセッサによって完全に実行された命令に
関する、指定されたイベントの発生回数が生成される。
すべての命令に関する指定されたイベントの発生回数
と、すべての完了した命令に関する指定されたイベント
の回数の間の差を、投機的プロセッサによって投機的に
実行された命令に関する指定されたイベントの発生回数
として生成することができる。
【0008】
【発明の実施の形態】図1を参照すると、絵図に、本発
明の好ましい実施例による、本発明を実施することので
きるデータ処理システムが示されている。システム・ユ
ニット110と、ビデオ表示端末102と、キーボード
104と、フロッピ駆動装置および他の種類の永続的記
憶媒体および取外し可能記憶媒体を含めることのできる
記憶装置108と、マウス106とを含むパーソナル・
コンピュータ100が図示されている。追加の入力装置
を、パーソナル・コンピュータ100に含めることがで
きる。パーソナル・コンピュータ100は、適当なコン
ピュータを使用して実施することができる。図示の表現
ではパーソナル・コンピュータが示されているが、本発
明の他の実施形態は、メインフレーム、ワークステーシ
ョン、ネットワーク・コンピュータ、インターネット機
器、パームトップ・コンピュータなどの他の種類のデー
タ処理システムで実施することができる。システム・ユ
ニット110には、メモリ、中央処理装置、入出力装置
などが含まれる。しかし、本発明では、システム・ユニ
ット110に、中央処理装置またはシステム・ユニット
内に存在する複数のCPUのうちの1つのいずれかとし
て、投機的プロセッサが含まれる。
【0009】図2を参照すると、ブロック図に、本発明
の好ましい実施例による、情報を処理するためのデータ
処理システムの選択された内部機能ユニットが示されて
いる。システム200には、階層メモリ210とプロセ
ッサ250が含まれる。階層メモリ210には、レベル
2キャッシュ212、ランダム・アクセス・メモリ(R
AM)214およびディスク216が含まれる。レベル
2キャッシュ212は、当技術分野で周知の形で、RA
M214に格納できるデータおよび命令への高速アクセ
ス・キャッシュを提供する。RAM214は、不揮発性
のディスク216に格納されたデータおよび命令のキャ
ッシュを提供することもできる、データおよび命令のた
めの主記憶域を提供する。
【0010】データと命令は、階層メモリ210からプ
ロセッサ250へ、命令転送経路220およびデータ転
送経路222上で転送することができる。命令転送経路
220およびデータ転送経路222は、単一のバスまた
は別々のバスとして、プロセッサ250と階層メモリ2
10の間で実施することができる。その代わりに、単一
のバスでプロセッサ250と階層メモリ210の間でデ
ータと命令を転送し、プロセッサ250に、命令バス2
52とデータ・バス254などのプロセッサ250内の
別々の命令転送経路およびデータ転送経路を設けること
ができる。
【0011】プロセッサ250には、命令キャッシュ2
56、データ・キャッシュ258、性能モニタ260お
よび命令パイプライン280も含まれる。性能モニタ2
60には、性能モニタ・カウンタ(PMC1)262、
性能モニタ・カウンタ(PMC2)264、性能モニタ
・カウンタ(PMC3)266、性能モニタ・カウンタ
(PMC4)268およびモニタ・モード制御レジスタ
(MMCR)270が含まれる。その代わりに、プロセ
ッサ250は、図示されていない他のカウンタおよび制
御レジスタを有することができる。
【0012】プロセッサ250には、縮小命令セット・
コンピューティング(RISC)プロセッサのPowe
rPCファミリなど、単一サイクル内に複数の命令を実
行できるパイプライン式プロセッサが含まれる。システ
ム200の動作中に、命令およびデータは、階層メモリ
210に格納される。実行される命令は、命令キャッシ
ュ256を介して命令パイプライン280に転送され
る。命令キャッシュ256は、パイプライン内でステー
ジングされた命令を復号し、実行する。一部の命令は、
データ・キャッシュ258を介して階層メモリ210と
の間でデータを転送する。それ以外の命令は、メモリか
らロードされたデータを操作するか、命令の流れを制御
することができる。
【0013】性能モニタ260には、PMC1 262
ないしPMC4 268とMMCR270を含む、イベ
ント検出制御論理が含まれる。性能モニタ260は、プ
ロセッサ命令実行および記憶域制御の利用に関するかな
りの粒度を有する詳細情報を提供する目的の、ソフトウ
ェアからアクセス可能な機構である。性能モニタには、
プロセッサ/記憶域関連のイベントをカウントするのに
使用される、実施形態に依存する個数の性能モニタ・カ
ウンタ(PMC)を含めることができる。これらのカウ
ンタを、「グローバル・カウンタ」と称する場合もあ
る。MMCRは、カウンタの機能を確立し、各MMCR
は通常は、ある個数のカウンタを制御する。PMCおよ
びMMCRは、通常は、物理的にプロセッサ上に存在す
る専用レジスタである。これらのレジスタは、読取動作
または書込動作のために、その目的のための特殊命令を
介してアクセス可能である。書込動作は、特権状態また
はスーパーバイザ状態でのみ許可されることが好まし
く、読取は、専用レジスタの内容を変更しないので、問
題状態で許容されることが好ましい。異なる実施形態で
は、これらのレジスタは、入出力空間のアドレスなど、
他の手段によってアクセス可能とすることができる。好
ましい実施例では、PMC1ないしPMC4は、32ビ
ット・カウンタであり、MMCRは、32ビット・レジ
スタである。カウンタおよび制御レジスタのサイズが、
製造のコスト、プロセッサ250の所望の機能性および
プロセッサ250内で使用可能なチップ面積を含む設計
検討事項に依存することを、当業者は諒解するであろ
う。
【0014】性能モニタ260は、システム全体を監視
し、命令処理の結果として発生するイベントの回数を累
算する。本発明では、プロセッサ250は、命令がプロ
グラマによってコーディングされた順序またはコンパイ
ラによってプログラムのコンパイル中に並べられた順序
に関してアウトオブオーダーに命令を実行することがで
きる。プロセッサ250は、投機的実行も使用して、あ
る命令が依存するデータが使用可能になる前に、その命
令の条件分岐の結果を予測する。MMCRは、記録/カ
ウントするイベント/信号の選択を考慮したビット・フ
ィールドに区分される。イベントの許容可能な組合せを
選択することによって、カウンタが並列に動作するよう
になる。性能モニタが、本発明によって提供される形
で、投機的に実行される命令と共に使用される時には、
性能モニタは、完了した命令と投機的に実行されるまだ
未完了の命令の両方の実行中にプロセッサの性能を監視
するための機構として使用することができる。
【0015】図3を参照すると、2つのPMCの動作を
制御するのに適したMMCRの1つの構成の例を表す図
が示されている。この例からわかるように、MMCR
は、複数のビット・フィールドに区分され、ビット・フ
ィールドの設定によって、カウントするイベントが選択
され、性能モニタ割込みが使用可能にされ、回数を使用
可能にする条件が指定される。その代わりに、MMCR
に、この図に示されていない初期設定回数値をセットす
ることができる。
【0016】初期設定回数値は、可変かつソフトウェア
選択可能である。初期設定回数値は、命令が実行のため
に初めてスケジューリングされる時にカウンタにロード
することができる。たとえば、調査中のイベントが「レ
ジスタ・アクセス」であると仮定すると、初期設定回数
値によって、関連する命令に関するレジスタ・アクセス
の数が指示される場合に、その命令の完了によって、そ
の特定の命令に関するレジスタ・アクセスの数を、すべ
ての命令によるすべてのレジスタ・アクセスをカウント
するPMCの総イベント回数に加算することができる。
もちろん、実行されるデータ命令に応じて、「完了」が
異なる意味を有する場合がある。たとえば、「loa
d」命令の場合、「完了」は、その命令に関連するデー
タが受け取られたことを示すが、「store」命令の
場合、「完了」は、データが成功裡に書き込まれたこと
を示す。たとえばPMC1などのユーザ読取可能カウン
タが、PMC1が最初に初期設定された後のレジスタ・
アクセスの総数へのソフトウェア・アクセスを提供す
る。適当な値を用いると、性能モニタは、簡単にシステ
ム性能特性の識別に使用するのに適するようになる。
【0017】図3のMMCRのビット0ないし4および
18によって、回数が使用可能にされるシナリオが決定
される。たとえば、ビット0は、このビットがセットさ
れている時に、PMCの値がハードウェア・イベントに
よって変更されない、すなわち、回数が凍結される、フ
リーズ回数ビットとすることができる。ビット1ないし
4によって、回数が実行される他の特定の条件を示すこ
とができる。ビット5、16および17は、PMCによ
ってトリガされる割込み信号の制御に使用される。ビッ
ト6ないし9は、時間ベースまたはイベントベースの遷
移を制御するのに使用することができる。ビット19な
いし25は、PMC1のイベント選択すなわち、PMC
1に関してカウントされる信号の選択に使用することが
できる。ビットの機能と数は、特定の実施形態で必要な
イベントを選択する必要に応じて選択することができ
る。
【0018】なんらかの種類の性能分析用のデータを取
り込むためには、少なくとも1つのカウンタが必要であ
る。カウンタの数が増えれば、より高速またはより正確
な分析がもたらされる。監視されるシナリオが、厳密に
反復可能である場合には、異なる項目を選択した状態で
同一のシナリオを実行することができる。シナリオが厳
密に反復可能ではない場合には、同一の項目を選択した
状態で同一のシナリオを複数回実行して、統計データを
収集することができる。シナリオの開始からの時間は、
システム時間サービスを介して使用可能であり、その結
果、時間の間隔を使用して、異なるサンプルと異なるイ
ベントを相関させることが可能になると仮定する。
【0019】図4を参照すると、アウトオブオーダー投
機的実行プロセッサ内の命令パイプラインのステージの
詳細を示すブロック図が示されている。システム400
には、メモリ・システム402、データ・キャッシュ4
04、命令キャッシュ406および性能モニタ410が
示されており、これらは、図3に示された階層メモリ、
データ・キャッシュ、命令キャッシュおよび性能モニタ
に類似するものとすることができる。命令は、実行され
る際に、キャッシュ・アクセスなどのプロセッサ内のイ
ベントを引き起こす。性能モニタ410には、1つまた
は複数のMMCRの制御下でイベントをカウントする複
数のPMCが含まれる。これらのカウンタとMMCR
は、内部プロセッサ・レジスタであり、ソフトウェア制
御の下で読み取り、書き込むことができる。
【0020】取出ユニット420は、命令キャッシュ4
06から命令を取り出し、命令キャッシュ406は、メ
モリ・システム402から命令を取り出す。復号ユニッ
ト440は、命令を復号して、命令の種類、ソース・レ
ジスタおよびデスティネーション・レジスタなどの、命
令に関する基本情報を判定する。シーケンシング・ユニ
ット450は、復号された情報を使用して、実行のため
に命令をスケジューリングする。命令を追跡するため
に、完了テーブル460を使用して、スケジューリング
された命令に関する情報を格納し、検索する。シーケン
シング・ユニット450は、ディスパッチされた命令を
完了テーブル460内の関連項目に割り当てる際に、先
入れ先出しベースまたは回転式で、項目を実行中の命令
に割り当てるか関連付ける。命令が実行される際に、実
行中の命令に関する情報が、特定の命令に関する完了テ
ーブル460の関連項目のさまざまなフィールドおよび
サブフィールドに格納される。
【0021】実行ユニット#1 482または実行ユニ
ット#N 484などの実行ユニット1ないしNのうち
の1つを使用して実行制御ユニット480によって実行
される命令は、ロード/ストア・ユニット486を使用
して、データ・キャッシュ404を介してメモリ・シス
テム402にデータを書き込むか、メモリ・システム4
02からデータを読み取ることができる。命令が完了す
る際に、完了ユニット470が、命令の実行の結果をコ
ミットし、命令のデスティネーション・レジスタが、後
続命令による使用のために使用可能にされる。どの命令
でも、ソース・レジスタが使用可能になるや否や、適当
な実行ユニットに発行することができる。
【0022】命令は、制御(分岐)命令によって、条件
的または無条件のいずれかで命令の流れが変更されるま
で、順次取り出され、完了される。制御命令では、命令
の取出を開始する新しいデータ位置が指定される。取出
ユニット420が、条件が基づくデータがまだ使用可能
でない(たとえば、必要なデータを作る命令がまだ実行
されていない)条件分岐動作およびデータを受け取る時
に、取出ユニット420は、分岐予測制御ユニット43
0内の1つまたは複数の分岐予測機構を使用して、条件
の結果を予測することができる。その後、制御は、条件
の結果を決定できるまで、投機的に変更される。分岐が
正しく予測された場合、動作が継続する。予測が正しく
なかった場合には、投機的経路に沿った命令のすべて
が、取り消されるかフラッシュされる。
【0023】投機的命令は、分岐条件が解決されるまで
完了できないので、多数の高性能アウトオブオーダー・
プロセッサは、物理レジスタを仮想レジスタにマッピン
グする機構を備えている。実行の結果は、命令が実行を
終了した時に、仮想レジスタに書き込まれる。物理レジ
スタは、命令が実際に完了するまで更新されない。前の
命令の結果に依存する命令は、仮想レジスタが書き込ま
れるや否や、実行を開始することができる。この形で、
条件分岐の結果を判定する前に、投機的命令の長いスト
リームを実行することができる。
【0024】図5を参照すると、投機的プロセッサ内で
使用することのできる命令完了テーブルの図が示されて
いる。完了テーブル500は、環状リストとして編成さ
れ、完了テーブル500の各項目が、単一の命令を追跡
するようになっている。命令は、完了テーブル500で
のインデックス値と等しい「タグ値」を有するといわれ
る。命令に関連するタグ値は、その命令の実行によって
引き起こされるイベントの識別に使用することができ
る。割振りタグ502は、次の使用可能な項目のインデ
ックスを保持する。完了タグ504は、完了する命令の
インデックスを保持する。完了テーブルに使用可能な項
目がない場合には、項目が使用可能になるまで、プロセ
ッサのシーケンシング・ユニットがストールする。
【0025】図5には、完了タグが項目3を指し、割振
りタグが項目6を指している、完了テーブル500内の
データの例が示されている。項目3の命令が、次に完了
する。項目4および5の命令は、実行を待っているか、
現在実行中であるか、完了を待っている可能性がある。
次に復号される命令は、項目6に配置され、割振りポイ
ンタは、項目7を指すようにインクリメントされる。割
振りポインタが項目15を指している場合には、存在し
ない項目16にインクリメントするのでなく、0にラッ
プする、すなわち、ポインタは、環状の形でラップす
る。この例では、割振りポインタが項目2を指す場合
に、使用可能な項目がなくなる。
【0026】その代わりに、単一の完了テーブル項目
を、命令のグループに割り振ることができる。その場
合、グループ内のすべての命令が、単一のタグ値を用い
て追跡される。
【0027】図6を参照すると、完了した命令に関する
イベントから分離して、投機的に実行される命令に関す
るイベントをカウントするためのプロセッサの図が示さ
れている。命令の完了は、完了テーブル650を介して
追跡される。各テーブル項目は、関連するタグ値652
を有する。命令のタグ値は、テーブル内のその命令に関
する項目の位置であり、これによって、プロセッサが、
プロセッサ内の1つまたは複数のイベントを引き起こし
た命令を識別できるようになる。命令は、「システムを
介して移動する」(または実行される)際に、イベント
信号612を生成し、このイベント信号612は、特定
のイベントまたは条件が発生したことを知らせる。イベ
ント信号と共に、イベント・タグ614を使用して、ど
の命令がイベント信号に関連するイベントを引き起こし
たかを識別する。
【0028】完了テーブル650は、項目ごとに1つま
たは複数の仮カウンタ654を含むように拡張される。
仮カウンタは、絶対に完了しない可能性がある(投機的
実行)命令によって引き起こされる監視されるイベント
の発生回数を保持する。仮カウンタの監視されるイベン
トは、MMCR670のフィールド672によって制御
される。フィールド672の内容は、信号613を生成
して、イベント信号612をフィルタリングするマルチ
プレクサ610を制御するのに使用される。イベント・
タグ614は、選択されたイベント信号615を、デコ
ーダ616を介して適当な命令の仮カウンタに経路指定
するのに使用される。仮カウンタ654は、デコーダ6
16からインクリメンタ(incrementer)618に制御
信号617を送り、入力620を介して仮カウンタを読
み取り、カウンタから読み取った値をインクリメント
し、出力619を介してその値を仮カウンタに書き戻す
ことによってインクリメントされる。仮カウンタの値
は、インクリメンタ618によってインクリメントさ
れ、インクリメンタ618は、図6に示されているよう
に、特定の仮カウンタ専用とすることができる。その代
わりに、単一のインクリメンタをすべてのカウンタによ
って共用することができる。
【0029】1つまたは複数のPMCを使用して、1つ
または複数のMMCRのフィールドによる制御に従って
監視されるイベントの発生をカウントする。フィールド
674を使用して、制御信号661を生成し、その結
果、PMC1 664が、仮カウンタからの仮回数を受
け入れるようにする。仮カウンタに格納されたイベント
の仮回数は、加算器662によってPMC1 664の
元の値に加算され、その後、PMC1 664に格納さ
れる。命令が完了した時に、完了タグ632に、完了テ
ーブル650での完了する命令のインデックスが保持さ
れる。完了タグ632は、制御信号631によってマル
チプレクサ630を制御して、MMCRのフィールド6
74によって制御されるマルチプレクサ660に完了す
る命令の仮カウンタの内容を送るのに使用される。マル
チプレクサ660が、制御信号661によって適当に制
御される場合に、イベント668は、仮カウンタ値を加
算器662に送らせ、加算器662はPMCを更新す
る。
【0030】図6では、仮カウンタが、命令完了テーブ
ルの物理的拡張として図示されている。その代わりに、
仮カウンタを、完了テーブルから物理的に分離し、なお
かつイベント・タグ、割振りタグおよび完了タグによっ
てインデクシングできるようにすることができる。図6
では、仮カウンタに関連するインクリメンタも図示され
ている。その代わりに、回数値を仮カウンタに直接に書
き込むことができる。たとえば、プロセッサのロード/
ストア・ユニットが、実行中の命令によって読み書きさ
れたバイト数を書き込むことができる。単一の完了テー
ブル項目を使用して複数の命令のグループを追跡するプ
ロセッサの場合、仮カウンタに、グループ内の命令の数
をロードすることができる。この形で、完了した命令の
数をカウントすることができる。
【0031】命令が取り消される場合、完了テーブル6
50内のその項目は、再割振りされ、完了しなかった命
令のイベントの発生の関連回数は、失われる。割振りタ
グ634には、リセット信号621など、適当な仮カウ
ンタの値をゼロにする、その仮カウンタへのリセット信
号を送るためにデコーダ622を制御するのに使用され
る、完了テーブル650へのインデックスが格納され
る。
【0032】PMC1に類似の形で、フィールド676
は、制御信号681を生成し、その結果、PMC2 6
84が仮カウンタから仮回数を受け入れるようにするの
に使用される。仮カウンタに格納されたイベントの仮回
数は、加算器682によってPMC2 684の元の値
に加算され、その後、PMC2 684に格納される。
マルチプレクサ680が、制御信号681によって適当
に制御される場合、イベント688によって、適当な回
数値(図示せず)が加算器682に送られ、加算器68
2はPMCを更新する。
【0033】上で説明した例では、PMC1によって、
完了する命令に関する指定されたイベントの発生がカウ
ントされる。本発明によって提供される形で、PMC2
は、すべての命令に関するイベントをカウントすること
ができ、これには、完了する命令の実行に関するイベン
トと、投機的に実行され、完了しない命令の実行に関す
るイベントが含まれる。この形で、本発明は、実際に完
了する命令によって引き起こされるイベントだけをカウ
ントする方法を提供する。PMCによってカウントでき
るイベントに、仮カウンタならびに仮カウンタに経路指
定されるイベントが含まれる場合、一部のPMCですべ
ての命令に関する総イベント回数を累算し、他のPMC
で、完了する命令に関する非投機的イベント回数だけを
累算することができる。総回数と非投機的回数の間の差
が、取り消された投機的に実行された命令によって引き
起こされたイベント発生の数である。
【0034】図7を参照すると、流れ図に、本発明の実
施例による投機的プロセッサの性能モニタ内で、完了す
る命令によって引き起こされた指定されたイベントのイ
ベント発生回数(非投機的イベント回数)を累算するた
めの処理が示されている。この処理は、命令の取出と復
号によって開始される(ステップ702)。取り出さ
れ、復号された命令のために完了テーブルの項目を割り
振った(ステップ704)後に、完了テーブル項目に関
連する仮カウンタをリセットする(ステップ706)。
特定の命令が実行されている間に、使用可能にされたイ
ベントが発生したかどうかに関する判定を行う(ステッ
プ708)。そうである場合には、完了テーブル項目に
関連する仮カウンタをインクリメントし(ステップ71
0)、この処理は、ループ・バックしてプロセッサの実
行の監視を継続する。
【0035】使用可能にされたイベントが発生しなかっ
た場合には、命令が実行を完了したかどうかに関する判
定を行う(ステップ712)。そうである場合には、仮
カウンタを適当なPMCに加算し、この処理は、ループ
・バックして、別の命令を取り出し、復号する。命令が
完了しなかった場合には、命令が取り消されたかどうか
に関する判定を行う(ステップ716)。そうでない場
合には、この処理は、ループ・バックして、プロセッサ
の実行の監視を継続する。命令が取り消された場合に
は、プロセッサが停止したかどうかに関する判定を行う
(ステップ718)。そうでない場合には、この処理
は、ループ・バックして、別の命令を取り出し、復号す
る。プロセッサが停止している場合には、この処理は終
了する。
【0036】その代わりに、この処理は、処理中の複数
の点で取出と復号にループ・バックすることができる。
重要な点は、この流れ図に、プロセッサの性能監視機能
が使用可能にされている間に論理的に実行される、基本
的に終了しないループが示されていることである。
【0037】図8を参照すると、流れ図に、投機的プロ
セッサの性能モニタを使用して、投機的に実行された命
令によって引き起こされた指定されたイベントのイベン
ト発生回数を計算するための処理が示されている。上で
述べたように、性能モニタ内の特殊なレジスタは、プロ
セッサ内のハードウェアの性能を分析するソフトウェア
・パッケージなどのソフトウェアからアクセス可能であ
る。
【0038】この処理は、ソフトウェアが、完了した命
令に関連するイベントの回数の責任を負うPMCを読み
取る時に開始される(ステップ802)。その後、この
ソフトウェアは、すべての命令に関連するイベントの回
数の責任を負うPMCを読み取る(ステップ804)。
その後、PMCから読み取った値の間の差を計算し(ス
テップ806)、投機的に実行された命令に関するイベ
ントの回数について出力値を生成する(ステップ80
8)。
【0039】本発明がもたらす長所は、上に示した本発
明の詳細な説明に鑑みて明白である。いくつかの条件の
下では、完了はしないが部分的な実行ステージ中にやは
りプロセッサ資源を消費する命令の投機的実行によっ
て、投機的プロセッサの性能が大幅に低下する可能性が
ある。本発明は、投機的に実行される命令の性能を監視
するための方法およびシステムを提供し、その結果、シ
ステム設計者が、命令の投機的実行によってプロセッサ
の性能が大幅に低下しないようにすることができるよう
にする。
【0040】たとえば、投機的命令は、メモリ帯域幅な
どのプロセッサ内の資源を消費する。メモリ・アクセス
動作の性能は、特に第1レベル・キャッシュでミスが発
生する時に、重要な検討事項になる。というのは、コン
ピュータ・システムが、システムのコストに対する敏感
さに起因して、階層メモリ・サブシステムを使用するこ
とを強制されるからである。一般に、メモリ階層は、ア
クセスされるすべてのメモリ位置で、汎用レジスタほど
高速の理想的な性能を達成できない。階層メモリ・シス
テムの鍵となる概念は、メモリ・アクセスが、通常は第
1レベル・キャッシュ・アクセスによって即座に満足さ
れることである。予想されるとおり、頻繁ではないがコ
ストの高い第1レベル・キャッシュ・ミスが存在する。
第1レベル・キャッシュ・ミスが存在する状況でプロセ
ッサが効率的に実行できることが望ましい。したがっ
て、設計目標の1つが、できる限り効率的にメモリ階層
を利用することになる。
【0041】階層メモリ・システムを効率的に使用する
方法の1つが、アウトオブオーダー実行を実施すること
である。これによって、第1レベル・キャッシュ・ミス
をこうむる命令の付近の命令に、メモリ・アクセス命令
がこれらのミスによって遅延される期間中に実行する機
会が与えられる。完了ユニットの主な仕事の1つが、ア
ーキテクチャ的に有効な形で、アウトオブオーダー実行
される命令を並べなおす(reorder)ことである。命令
のアウトオブオーダー実行に対する主な障害の1つが、
アーキテクチャ的依存性を処理するための命令の直列化
である。スーパースカラ・プロセッサは、命令レベルの
並列性を有することができるので、単に第1レベル・キ
ャッシュ・ミスが存在することを知るだけでは不十分で
ある。というのは、第1レベル・キャッシュ・ミスが、
特に命令の完了を遅延させる時に、他の命令の完了の遅
延を引き起こさない可能性があるからである。アウトオ
ブオーダー実行のまさにこの性質が、これを確認するこ
とを困難にしている。
【0042】本発明がもたらす長所の1例として、アウ
トオブオーダー実行の完了に対する遅延の影響を、完了
する投機的に実行された命令の第1レベル・キャッシュ
・ミスに起因して失われるサイクルについて測定するこ
とができる。そのようなストールを生じる特定の問題が
識別され、その相対的な重要性が確認された後に、その
データを使用して、コンパイラの変更、ソフトウェアの
変更またはハードウェア設計の変更もしくはこれらの組
合せを行うことができる。一般に、これは、分岐ユニッ
ト動作の性能を監視する方法の1つである。分岐予測
は、分岐ユニット動作の大きな部分である。完了しない
命令による資源の使用に関するイベントの回数を追跡す
ることによって、予測論理の有効性を評価することがで
きる。
【0043】完全に機能するデータ処理システムに関連
して本発明を説明してきたが、本発明の処理を、命令の
コンピュータ可読媒体の形およびさまざまな形で配布す
ることができ、本発明が、配布の実行に実際に使用され
る信号担持媒体の具体的な種類に無関係に同等に適用さ
れることを、当業者が諒解するであろうことに留意する
ことが重要である。コンピュータ可読媒体の例には、フ
ロッピ・ディスク、ハード・ディスク装置、RAMおよ
びCD−ROMなどの記録可能型媒体と、ディジタル通
信リンクおよびアナログ通信リンクなどの伝送型媒体が
含まれる。
【0044】本発明の説明は、例示と説明の目的のため
に提示されたものであり、網羅的であることを意図した
ものではなく、開示された形態に本発明を制限すること
を意図したものでもない。多数の修正形態および変形形
態が、当業者には明白であろう。実施例は、本発明の原
理と実用的な応用例を最もよく説明し、意図された特定
の使用に適するさまざまな修正を加えたさまざまな実施
形態に関して当業者が本発明を理解するために選択さ
れ、記述されたものである。
【0045】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0046】(1)投機的プロセッサと複数のカウンタ
とを含むデータ処理システム内でイベントを監視する方
法であって、前記複数のカウンタの中の各カウンタが、
前記データ処理システム内の指定されたイベントの発生
をカウントし、監視するイベントを指定し、前記投機的
プロセッサによる命令の実行中に前記指定されたイベン
トについて監視し、前記投機的プロセッサによって実行
されるすべての命令について、前記指定されたイベント
の発生回数値を生成し、前記投機的プロセッサによって
完全に実行される命令について、前記指定されたイベン
トの発生回数を生成する方法。 (2)すべての命令に関する前記指定されたイベントの
発生の前記回数と、すべての完了した命令に関する前記
指定されたイベントの発生の前記回数との間の差を、前
記投機的プロセッサによって投機的に実行された命令の
前記指定されたイベントの発生回数として計算するステ
ップをさらに含む、上記(1)に記載の方法。 (3)前記投機的プロセッサによって実行される命令の
それぞれについて複数の指定されたイベントを監視する
ステップをさらに含む、上記(1)に記載の方法。 (4)投機的プロセッサと複数のカウンタとを含むデー
タ処理システム内でイベントを監視する方法であって、
前記複数のカウンタの中の各カウンタが、前記データ処
理システム内の指定されたイベントの発生をカウント
し、仮カウンタを特定の命令に関連付け、第1グローバ
ル・イベント・カウンタをすべての命令に関連付け、第
2グローバル・イベント・カウンタを完了した命令に関
連付け、監視するイベントを指定し、前記投機的プロセ
ッサによる命令の実行中に前記指定されたイベントにつ
いて監視し、前記特定の命令の実行中の前記イベントの
発生の検出に応答して、前記仮カウンタをインクリメン
トし、命令のいずれかの実行中の前記ベントの発生の検
出に応答して、前記第1グローバル・イベント・カウン
タをインクリメントし、前記特定の命令の完了の検出に
応答して、前記仮カウンタからのイベント回数を前記第
2グローバル・イベント・カウンタに加算する方法。 (5)前記第1グローバル・イベント・カウンタからの
イベント回数と、前記第2グローバル・イベント・カウ
ンタからのイベント回数との間の差を、前記投機的プロ
セッサによって投機的に実行された命令に関する前記指
定されたイベントの発生回数として計算するステップを
さらに含む、上記(4)に記載の方法。 (6)投機的プロセッサと複数のカウンタとを含むデー
タ処理システム内でイベントの回数を計算する方法であ
って、前記複数のカウンタの中の各カウンタが、前記デ
ータ処理システム内の指定されたイベントの発生をカウ
ントし、前記投機的プロセッサによって実行されるすべ
ての命令に関する指定されたイベントの発生回数を第1
カウンタから読み取り、前記投機的プロセッサによって
完全に実行される命令に関する指定されたイベントの発
生回数を第2カウンタから読み取り、すべての命令に関
する前記指定されたイベントの発生の前記回数と、すべ
ての完了した命令に関する前記指定されたイベントの発
生の前記回数との間の差を、前記投機的プロセッサによ
って投機的に実行された命令に関する前記指定されたイ
ベントの発生回数として計算する方法。 (7)投機的プロセッサと複数のカウンタとを含むデー
タ処理システム内でイベントを監視する方法であって、
前記複数のカウンタの中の各カウンタが、前記データ処
理システム内の指定されたイベントの発生をカウント
し、監視するイベントを指定し、前記指定されたイベン
トを監視し、特定の指定されたイベントの発生の検出に
応答して、第1カウンタおよび第2カウンタをインクリ
メントし、命令の完了の検出に応答して、前記第2カウ
ンタを第3カウンタに加算する方法。 (8)前記第1カウンタが、前記投機的プロセッサによ
って実行されるすべての命令に関する特定の指定された
イベントの発生をカウントする、上記(7)に記載の方
法。 (9)前記第2カウンタが、特定の命令に関する特定の
指定されたイベントの発生をカウントする、上記(7)
に記載の方法。 (10)前記第3カウンタが、前記投機的プロセッサに
よって完全に実行される命令に関する特定の指定された
イベントの発生をカウントする、上記(7)に記載の方
法。 (11)投機的に実行された命令に関する特定の指定さ
れたイベントの発生回数を生成するために、前記第1カ
ウンタと前記第3カウンタとの間の差を計算するステッ
プをさらに含む、上記(7)に記載の方法。 (12)投機的プロセッサと複数のカウンタとを含むデ
ータ処理システム内でイベントを監視するための装置で
あって、前記複数のカウンタの中の各カウンタが、前記
データ処理システム内の指定されたイベントの発生をカ
ウントし、監視するイベントを指定するための手段と、
前記投機的プロセッサによる命令の実行中に前記指定さ
れたイベントについて監視するための手段と、前記投機
的プロセッサによって実行されるすべての命令に関する
前記指定されたイベントの発生回数を生成するための第
1手段と、前記投機的プロセッサによって完全に実行さ
れる命令に関する前記指定されたイベントの発生回数を
生成するための第2手段とを含む装置。 (13)すべての命令に関する前記指定されたイベント
の発生の前記回数と、すべての完了した命令に関する前
記指定されたイベントの発生の前記回数との間の差を、
前記投機的プロセッサによって投機的に実行された命令
に関する前記指定されたイベントの発生回数として計算
するための手段をさらに含む、上記(12)に記載の装
置。 (14)前記投機的プロセッサによって実行される命令
のそれぞれについて複数の指定されたイベントを監視す
るための手段をさらに含む、上記(12)に記載の装
置。 (15)複数のカウンタを含む投機的プロセッサ内のイ
ベントの回数を計算するためのシステムであって、前記
複数のカウンタの中の各カウンタが、前記投機的プロセ
ッサ内の指定されたイベントの発生をカウントし、前記
投機的プロセッサによって実行されるすべての命令に関
する指定されたイベントの発生回数を第1カウンタから
読み取るための第1手段と、前記投機的プロセッサによ
って完全に実行される命令に関する前記指定されたイベ
ントの発生回数を第2カウンタから読み取るための第2
手段と、すべての命令に関する前記指定されたイベント
の発生の前記回数と、すべての完了した命令に関する前
記指定されたイベントの発生の前記回数との間の差を、
前記投機的プロセッサによって投機的に実行された命令
に関する前記指定されたイベントの発生回数として計算
するための手段とを含むシステム。 (16)投機的プロセッサと複数のカウンタとを含むデ
ータ処理システム内でイベントを監視するための、コン
ピュータ可読媒体上のコンピュータ・プログラム製品で
あって、前記複数のカウンタの中の各カウンタが、前記
データ処理システム内の指定されたイベントの発生をカ
ウントし、監視するイベントを指定するための第1命令
と、前記投機的プロセッサによる命令の実行中に前記指
定されたイベントについて監視するための第2命令と、
前記投機的プロセッサによって実行されるすべての命令
に関する前記指定されたイベントの発生回数を生成する
ための第3命令と、前記投機的プロセッサによって完全
に実行される命令に関する前記指定されたイベントの発
生回数を生成するための第4命令とを含むコンピュータ
・プログラム製品。 (17)複数のカウンタを含む投機的プロセッサ内でイ
ベントの回数を計算するための、コンピュータ可読媒体
上のコンピュータ・プログラム製品であって、前記複数
のカウンタの中の各カウンタが、前記投機的プロセッサ
内の指定されたイベントの発生をカウントし、前記投機
的プロセッサによって実行されるすべての命令に関する
指定されたイベントの発生回数を第1カウンタから読み
取るための第1命令と、前記投機的プロセッサによって
完全に実行される命令に関する前記指定されたイベント
の発生回数を第2カウンタから読み取るための第2命令
と、すべての命令に関する前記指定されたイベントの発
生の前記回数と、すべての完了した命令に関する前記指
定されたイベントの発生の前記回数との間の差を、前記
投機的プロセッサによって投機的に実行された命令に関
する前記指定されたイベントの発生回数として計算する
ための第3命令とを含むコンピュータ・プログラム製
品。
【図面の簡単な説明】
【図1】本発明の好ましい実施例による、本発明を実施
することのできるデータ処理システムを表す絵図であ
る。
【図2】本発明の好ましい実施例による、情報を処理す
るためのデータ処理システムの選択された内部機能ユニ
ットを示すブロック図である。
【図3】2つの性能モニタ・カウンタの動作を制御する
のに適したモニタ・モード制御レジスタの1つの構成の
例を表す図である。
【図4】アウトオブオーダー投機的実行プロセッサ内の
命令パイプラインのステージの詳細を示すブロック図で
ある。
【図5】投機的プロセッサ内で使用することのできる命
令完了テーブルを示す図である。
【図6】本発明の方法による、完了した命令に関するイ
ベントから分離して、投機的に実行された命令に関する
イベントをカウントするためのプロセッサを示す図であ
る。
【図7】本発明の実施例による投機的プロセッサの性能
モニタ内で、完了した命令によって引き起こされた指定
されたイベントのイベント発生回数(非投機的イベント
回数)を累算するための処理を示す流れ図である。
【図8】投機的プロセッサの性能モニタを使用して、投
機的に実行された命令によって引き起こされた指定され
たイベントのイベント発生回数を計算するための処理を
示す流れ図である。
【符号の説明】
610 マルチプレクサ 612 イベント信号 614 イベント・タグ 616 デコーダ 618 インクリメンタ 622 デコーダ 630 マルチプレクサ 632 完了タグ 634 割振りタグ 650 完了テーブル 652 タグ値 654 仮カウンタ 660 マルチプレクサ 662 加算器 664 PMC1 668 イベント 670 MMCR 680 マルチプレクサ 682 加算器 684 PMC2 688 イベント

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】投機的プロセッサと複数のカウンタとを含
    むデータ処理システム内でイベントを監視する方法であ
    って、前記複数のカウンタの中の各カウンタが、前記デ
    ータ処理システム内の指定されたイベントの発生をカウ
    ントし、 監視するイベントを指定し、 前記投機的プロセッサによる命令の実行中に前記指定さ
    れたイベントについて監視し、 前記投機的プロセッサによって実行されるすべての命令
    について、前記指定されたイベントの発生回数値を生成
    し、 前記投機的プロセッサによって完全に実行される命令に
    ついて、前記指定されたイベントの発生回数を生成する
    方法。
  2. 【請求項2】すべての命令に関する前記指定されたイベ
    ントの発生の前記回数と、すべての完了した命令に関す
    る前記指定されたイベントの発生の前記回数との間の差
    を、前記投機的プロセッサによって投機的に実行された
    命令の前記指定されたイベントの発生回数として計算す
    るステップをさらに含む、請求項1に記載の方法。
  3. 【請求項3】前記投機的プロセッサによって実行される
    命令のそれぞれについて複数の指定されたイベントを監
    視するステップをさらに含む、請求項1に記載の方法。
  4. 【請求項4】投機的プロセッサと複数のカウンタとを含
    むデータ処理システム内でイベントを監視する方法であ
    って、前記複数のカウンタの中の各カウンタが、前記デ
    ータ処理システム内の指定されたイベントの発生をカウ
    ントし、 仮カウンタを特定の命令に関連付け、 第1グローバル・イベント・カウンタをすべての命令に
    関連付け、 第2グローバル・イベント・カウンタを完了した命令に
    関連付け、 監視するイベントを指定し、 前記投機的プロセッサによる命令の実行中に前記指定さ
    れたイベントについて監視し、 前記特定の命令の実行中の前記イベントの発生の検出に
    応答して、前記仮カウンタをインクリメントし、 命令のいずれかの実行中の前記ベントの発生の検出に応
    答して、前記第1グローバル・イベント・カウンタをイ
    ンクリメントし、 前記特定の命令の完了の検出に応答して、前記仮カウン
    タからのイベント回数を前記第2グローバル・イベント
    ・カウンタに加算する方法。
  5. 【請求項5】前記第1グローバル・イベント・カウンタ
    からのイベント回数と、前記第2グローバル・イベント
    ・カウンタからのイベント回数との間の差を、前記投機
    的プロセッサによって投機的に実行された命令に関する
    前記指定されたイベントの発生回数として計算するステ
    ップをさらに含む、請求項4に記載の方法。
  6. 【請求項6】投機的プロセッサと複数のカウンタとを含
    むデータ処理システム内でイベントの回数を計算する方
    法であって、前記複数のカウンタの中の各カウンタが、
    前記データ処理システム内の指定されたイベントの発生
    をカウントし、 前記投機的プロセッサによって実行されるすべての命令
    に関する指定されたイベントの発生回数を第1カウンタ
    から読み取り、 前記投機的プロセッサによって完全に実行される命令に
    関する指定されたイベントの発生回数を第2カウンタか
    ら読み取り、 すべての命令に関する前記指定されたイベントの発生の
    前記回数と、すべての完了した命令に関する前記指定さ
    れたイベントの発生の前記回数との間の差を、前記投機
    的プロセッサによって投機的に実行された命令に関する
    前記指定されたイベントの発生回数として計算する方
    法。
  7. 【請求項7】投機的プロセッサと複数のカウンタとを含
    むデータ処理システム内でイベントを監視する方法であ
    って、前記複数のカウンタの中の各カウンタが、前記デ
    ータ処理システム内の指定されたイベントの発生をカウ
    ントし、 監視するイベントを指定し、 前記指定されたイベントを監視し、 特定の指定されたイベントの発生の検出に応答して、第
    1カウンタおよび第2カウンタをインクリメントし、 命令の完了の検出に応答して、前記第2カウンタを第3
    カウンタに加算する方法。
  8. 【請求項8】前記第1カウンタが、前記投機的プロセッ
    サによって実行されるすべての命令に関する特定の指定
    されたイベントの発生をカウントする、請求項7に記載
    の方法。
  9. 【請求項9】前記第2カウンタが、特定の命令に関する
    特定の指定されたイベントの発生をカウントする、請求
    項7に記載の方法。
  10. 【請求項10】前記第3カウンタが、前記投機的プロセ
    ッサによって完全に実行される命令に関する特定の指定
    されたイベントの発生をカウントする、請求項7に記載
    の方法。
  11. 【請求項11】投機的に実行された命令に関する特定の
    指定されたイベントの発生回数を生成するために、前記
    第1カウンタと前記第3カウンタとの間の差を計算する
    ステップをさらに含む、請求項7に記載の方法。
  12. 【請求項12】投機的プロセッサと複数のカウンタとを
    含むデータ処理システム内でイベントを監視するための
    装置であって、前記複数のカウンタの中の各カウンタ
    が、前記データ処理システム内の指定されたイベントの
    発生をカウントし、 監視するイベントを指定するための手段と、 前記投機的プロセッサによる命令の実行中に前記指定さ
    れたイベントについて監視するための手段と、 前記投機的プロセッサによって実行されるすべての命令
    に関する前記指定されたイベントの発生回数を生成する
    ための第1手段と、 前記投機的プロセッサによって完全に実行される命令に
    関する前記指定されたイベントの発生回数を生成するた
    めの第2手段とを含む装置。
  13. 【請求項13】すべての命令に関する前記指定されたイ
    ベントの発生の前記回数と、すべての完了した命令に関
    する前記指定されたイベントの発生の前記回数との間の
    差を、前記投機的プロセッサによって投機的に実行され
    た命令に関する前記指定されたイベントの発生回数とし
    て計算するための手段をさらに含む、請求項12に記載
    の装置。
  14. 【請求項14】前記投機的プロセッサによって実行され
    る命令のそれぞれについて複数の指定されたイベントを
    監視するための手段をさらに含む、請求項12に記載の
    装置。
  15. 【請求項15】複数のカウンタを含む投機的プロセッサ
    内のイベントの回数を計算するためのシステムであっ
    て、前記複数のカウンタの中の各カウンタが、前記投機
    的プロセッサ内の指定されたイベントの発生をカウント
    し、 前記投機的プロセッサによって実行されるすべての命令
    に関する指定されたイベントの発生回数を第1カウンタ
    から読み取るための第1手段と、 前記投機的プロセッサによって完全に実行される命令に
    関する前記指定されたイベントの発生回数を第2カウン
    タから読み取るための第2手段と、 すべての命令に関する前記指定されたイベントの発生の
    前記回数と、すべての完了した命令に関する前記指定さ
    れたイベントの発生の前記回数との間の差を、前記投機
    的プロセッサによって投機的に実行された命令に関する
    前記指定されたイベントの発生回数として計算するため
    の手段とを含むシステム。
  16. 【請求項16】投機的プロセッサと複数のカウンタとを
    含むデータ処理システム内でイベントを監視するため
    の、コンピュータ可読媒体上のコンピュータ・プログラ
    ム製品であって、前記複数のカウンタの中の各カウンタ
    が、前記データ処理システム内の指定されたイベントの
    発生をカウントし、 監視するイベントを指定するための第1命令と、 前記投機的プロセッサによる命令の実行中に前記指定さ
    れたイベントについて監視するための第2命令と、 前記投機的プロセッサによって実行されるすべての命令
    に関する前記指定されたイベントの発生回数を生成する
    ための第3命令と、 前記投機的プロセッサによって完全に実行される命令に
    関する前記指定されたイベントの発生回数を生成するた
    めの第4命令とを含むコンピュータ・プログラム製品。
  17. 【請求項17】複数のカウンタを含む投機的プロセッサ
    内でイベントの回数を計算するための、コンピュータ可
    読媒体上のコンピュータ・プログラム製品であって、前
    記複数のカウンタの中の各カウンタが、前記投機的プロ
    セッサ内の指定されたイベントの発生をカウントし、 前記投機的プロセッサによって実行されるすべての命令
    に関する指定されたイベントの発生回数を第1カウンタ
    から読み取るための第1命令と、 前記投機的プロセッサによって完全に実行される命令に
    関する前記指定されたイベントの発生回数を第2カウン
    タから読み取るための第2命令と、 すべての命令に関する前記指定されたイベントの発生の
    前記回数と、すべての完了した命令に関する前記指定さ
    れたイベントの発生の前記回数との間の差を、前記投機
    的プロセッサによって投機的に実行された命令に関する
    前記指定されたイベントの発生回数として計算するため
    の第3命令とを含むコンピュータ・プログラム製品。
JP2000135279A 1999-05-13 2000-05-09 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム Expired - Fee Related JP3531731B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/310,912 US7086035B1 (en) 1999-05-13 1999-05-13 Method and system for counting non-speculative events in a speculative processor
US09/310912 1999-05-13

Publications (2)

Publication Number Publication Date
JP2000347863A true JP2000347863A (ja) 2000-12-15
JP3531731B2 JP3531731B2 (ja) 2004-05-31

Family

ID=23204600

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000135279A Expired - Fee Related JP3531731B2 (ja) 1999-05-13 2000-05-09 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム

Country Status (3)

Country Link
US (1) US7086035B1 (ja)
JP (1) JP3531731B2 (ja)
KR (1) KR100390610B1 (ja)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7082486B2 (en) 2004-01-14 2006-07-25 International Business Machines Corporation Method and apparatus for counting interrupts by type
US7093081B2 (en) 2004-01-14 2006-08-15 International Business Machines Corporation Method and apparatus for identifying false cache line sharing
US7114036B2 (en) 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
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
US7225309B2 (en) 2003-10-09 2007-05-29 International Business Machines Corporation Method and system for autonomic performance improvements in an application via memory relocation
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
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
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
JP2008015720A (ja) * 2006-07-05 2008-01-24 Nec Electronics Corp プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7458078B2 (en) 2003-11-06 2008-11-25 International Business Machines Corporation Apparatus and method for autonomic hardware assisted thread stack tracking
US7721263B2 (en) * 2005-05-16 2010-05-18 Texas Instruments Incorporated Debug event instruction
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
US7926041B2 (en) 2004-03-22 2011-04-12 International Business Machines Corporation Autonomic test case feedback using hardware assistance for code coverage
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
US7987453B2 (en) 2004-03-18 2011-07-26 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
US8042102B2 (en) 2003-10-09 2011-10-18 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operations in an application
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
US8171457B2 (en) 2004-03-22 2012-05-01 International Business Machines Corporation Autonomic test case feedback using hardware assistance for data coverage
US8191049B2 (en) 2004-01-14 2012-05-29 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
CN102576327A (zh) * 2009-09-29 2012-07-11 国际商业机器公司 增强监控机构
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US8689190B2 (en) 2003-09-30 2014-04-01 International Business Machines Corporation Counting instruction execution and data accesses

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730456B2 (en) * 2004-05-19 2010-06-01 Sony Computer Entertainment Inc. Methods and apparatus for handling processing errors in a multi-processing system
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US7598953B2 (en) * 2004-11-05 2009-10-06 Microsoft Corporation Interpreter for simplified programming of graphics processor units in general purpose programming languages
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
JP4151975B2 (ja) * 2004-11-08 2008-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、プログラム、及び管理方法
US7904894B2 (en) * 2006-03-29 2011-03-08 Microsoft Corporation Automatically optimize performance of package execution
US7519797B1 (en) * 2006-11-02 2009-04-14 Nividia Corporation Hierarchical multi-precision pipeline counters
US20080222400A1 (en) * 2007-03-07 2008-09-11 International Business Machines Corporation Power Consumption of a Microprocessor Employing Speculative Performance Counting
US8832416B2 (en) * 2007-05-24 2014-09-09 International Business Machines Corporation Method and apparatus for instruction completion stall identification in an information handling system
US8234484B2 (en) * 2008-04-09 2012-07-31 International Business Machines Corporation Quantifying completion stalls using instruction sampling
US8650413B2 (en) * 2009-04-15 2014-02-11 International Business Machines Corporation On-chip power proxy based architecture
US8924692B2 (en) * 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
US8615742B2 (en) 2010-11-16 2013-12-24 International Business Machines Corporation Autonomic hotspot profiling using paired performance sampling
US8826257B2 (en) * 2012-03-30 2014-09-02 Intel Corporation Memory disambiguation hardware to support software binary translation
US10761856B2 (en) * 2018-07-19 2020-09-01 International Business Machines Corporation Instruction completion table containing entries that share instruction tags
US11520591B2 (en) * 2020-03-27 2022-12-06 International Business Machines Corporation Flushing of instructions based upon a finish ratio and/or moving a flush point in a processor
US11886883B2 (en) 2021-08-26 2024-01-30 International Business Machines Corporation Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4231106A (en) 1978-07-13 1980-10-28 Sperry Rand Corporation Performance monitor apparatus and method
JPH01230131A (ja) 1988-03-10 1989-09-13 Agency Of Ind Science & Technol 並列処理装置
US5151981A (en) 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
JPH0774984B2 (ja) 1991-06-10 1995-08-09 インターナショナル・ビジネス・マシーンズ・コーポレイション システム資源利用率測定方法とデータ処理システム
US5237684A (en) * 1991-08-12 1993-08-17 International Business Machines Corporation Customized and versatile event monitor within event management services of a computer system
US5305454A (en) * 1991-08-12 1994-04-19 International Business Machines Corporation Notification of event handlers in broadcast or propagation mode by event management services in a computer system
US5493673A (en) 1994-03-24 1996-02-20 International Business Machines Corporation Method and apparatus for dynamically sampling digital counters to improve statistical accuracy
US5446876A (en) 1994-04-15 1995-08-29 International Business Machines Corporation Hardware mechanism for instruction/data address tracing
US5528753A (en) 1994-06-30 1996-06-18 International Business Machines Corporation System and method for enabling stripped object software monitoring in a computer system
US5557548A (en) 1994-12-09 1996-09-17 International Business Machines Corporation Method and system for performance monitoring within a data processing system
WO1996025705A1 (en) 1995-02-14 1996-08-22 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
US5748855A (en) 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
IL116708A (en) * 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
EP0786883B1 (en) * 1996-01-29 2006-05-24 Agilent Technologies, Inc. (a Delaware corporation) Method and apparatus for making quality of service measurements on a connection across a network
US5790843A (en) 1996-09-19 1998-08-04 International Business Machines Corporation System for modifying microprocessor operations independently of the execution unit upon detection of preselected opcodes
US5958009A (en) * 1997-02-27 1999-09-28 Hewlett-Packard Company System and method for efficiently monitoring quality of service in a distributed processing environment
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US5809450A (en) 1997-11-26 1998-09-15 Digital Equipment Corporation Method for estimating statistics of properties of instructions processed by a processor pipeline
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6105087A (en) * 1998-06-10 2000-08-15 Hewlett-Packard Company Event recognition by a state machine whose state is dependent upon historical information
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
JP3180953B2 (ja) 1999-01-27 2001-07-03 日本電気株式会社 トレース情報採取機構

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8689190B2 (en) 2003-09-30 2014-04-01 International Business Machines Corporation 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
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US8042102B2 (en) 2003-10-09 2011-10-18 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operations in an application
US7225309B2 (en) 2003-10-09 2007-05-29 International Business Machines Corporation Method and system for autonomic performance improvements in an application via memory relocation
US7458078B2 (en) 2003-11-06 2008-11-25 International Business Machines Corporation Apparatus and method for autonomic hardware assisted thread stack tracking
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
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
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
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
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
US8782664B2 (en) 2004-01-14 2014-07-15 International Business Machines Corporation Autonomic hardware assist for patching code
US7082486B2 (en) 2004-01-14 2006-07-25 International Business Machines Corporation Method and apparatus for counting interrupts by type
US7093081B2 (en) 2004-01-14 2006-08-15 International Business Machines Corporation Method and apparatus for identifying false cache line sharing
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
US8615619B2 (en) 2004-01-14 2013-12-24 International Business Machines Corporation Qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7114036B2 (en) 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US8191049B2 (en) 2004-01-14 2012-05-29 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
US8141099B2 (en) 2004-01-14 2012-03-20 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7987453B2 (en) 2004-03-18 2011-07-26 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
US8171457B2 (en) 2004-03-22 2012-05-01 International Business Machines Corporation Autonomic test case feedback using hardware assistance for data coverage
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
US7926041B2 (en) 2004-03-22 2011-04-12 International Business Machines Corporation Autonomic test case feedback using hardware assistance for code coverage
US7721263B2 (en) * 2005-05-16 2010-05-18 Texas Instruments Incorporated Debug event instruction
JP2008015720A (ja) * 2006-07-05 2008-01-24 Nec Electronics Corp プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
CN102576327A (zh) * 2009-09-29 2012-07-11 国际商业机器公司 增强监控机构
JP2013506177A (ja) * 2009-09-29 2013-02-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 改良型モニタ機能実装

Also Published As

Publication number Publication date
KR100390610B1 (ko) 2003-07-07
KR20010014884A (ko) 2001-02-26
US7086035B1 (en) 2006-08-01
JP3531731B2 (ja) 2004-05-31

Similar Documents

Publication Publication Date Title
JP3531731B2 (ja) 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム
US6446029B1 (en) Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
US5691920A (en) Method and system for performance monitoring of dispatch unit efficiency in a processing system
US6708296B1 (en) Method and system for selecting and distinguishing an event sequence using an effective address in a processing system
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
US5751945A (en) Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US6574727B1 (en) Method and apparatus for instruction sampling for performance monitoring and debug
JP3113855B2 (ja) データ処理システムにおけるパフォーマンス監視
US5835702A (en) Performance monitor
US6189072B1 (en) Performance monitoring of cache misses and instructions completed for instruction parallelism analysis
JP3537030B2 (ja) 回路、方法及びプロセッサ
JP5649613B2 (ja) クリティカルパスに基づく解析のための性能モニタリングアーキテクチャ強化の方法、装置、マイクロプロセッサ、及び、システム
JP4785213B2 (ja) コンピュータ性能データを分析する方法
US5938760A (en) System and method for performance monitoring of instructions in a re-order buffer
US5594864A (en) Method and apparatus for unobtrusively monitoring processor states and characterizing bottlenecks in a pipelined processor executing grouped instructions
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
US20050154812A1 (en) Method and apparatus for providing pre and post handlers for recording events
JPH10254700A (ja) 個々の命令の実行頻度をサンプリングするプロセッサ性能カウンタ
US6415378B1 (en) Method and system for tracking the progress of an instruction in an out-of-order processor
US6530042B1 (en) Method and apparatus for monitoring the performance of internal queues in a microprocessor
JPH11272520A (ja) プロセッサパイプラインにおいて多数の潜在的に同時の命令をサンプリングする装置
US6499116B1 (en) Performance of data stream touch events
JPH11272514A (ja) プロセッサパイプラインにおいて命令オペランド又は結果の値をサンプリングする装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031225

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20031225

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20031225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20031225

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040220

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20040220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040225

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees