JP4467093B2 - プロセッサパイプラインにおいて命令をランダムにサンプリングする装置 - Google Patents
プロセッサパイプラインにおいて命令をランダムにサンプリングする装置 Download PDFInfo
- Publication number
- JP4467093B2 JP4467093B2 JP37553698A JP37553698A JP4467093B2 JP 4467093 B2 JP4467093 B2 JP 4467093B2 JP 37553698 A JP37553698 A JP 37553698A JP 37553698 A JP37553698 A JP 37553698A JP 4467093 B2 JP4467093 B2 JP 4467093B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- pipeline
- sampling
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
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)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Image Processing (AREA)
Description
【発明の属する技術分野】
本発明は、一般に、コンピュータシステムの性能測定に係り、より詳細には、実行命令をサンプリングすることに係る。
【0002】
【従来の技術】
コンピュータプロセッサは、益々高速になっているが、ソフトウェアアプリケーションの性能は、それに歩調が合っていない。大型の商業用途の場合に、命令当たりの平均プロセッササイクル(CPI)値が2.5ないし3という大きさである。4ウェイ命令イッシュープロセッサでは、CPIが3であることは、12ごとに1つのイッシュースロットしか良好に使用されないことになる。ソフトウェアスループットがハードウェアの改良となぜ歩調が合わないかを理解することが重要である。
このような問題をメモリの待ち時間に転嫁するのが一般的であり、実際に、多くのソフトウェアアプリケーションは、データ転送が完了するのを待機して多数のサイクルを費やす。しかしながら、分岐予想ミスのような他の問題も、プロセッササイクルを浪費する。一般的な原因とは独立して、システムアーキテクチャー並びにハードウェア及びソフトウェアエンジニアは、複雑なプロセッサを組み込んだ近代的なコンピュータシステムの性能を改善するために、どの命令がストールしているかそしてなぜかを知る必要がある。
【0003】
通常、これは、システムが動作している間にその振る舞いの「プロファイル」を発生することにより行われる。プロファイルとは、性能データの記録である。しばしば、プロファイルは、性能のボトルネックを容易に識別できるようにグラフ的に発生される。
プロファイル形成は、計装及び模擬により行うことができる。計装では、プログラムの実行中に特定事象を監視するためにプログラムに付加的なコードが追加される。模擬は、実際のシステムでプログラムを実行するのではなく、人為的な環境においてプログラム全体の振る舞いをエミュレートするように試みる。
これら2つの方法は、各々、欠点を有する。計装は、追加命令及び余計なデータ参照のためにプログラム真の振る舞いを擾乱させる。模擬は、実際のシステムにおいてプログラムを実行する場合に比して実質的な性能オーバーヘッドを犠牲にして擾乱を回避する。更に、計装又は模擬では、大規模なソフトウェアシステム全体、即ちアプリケーション、オペレーティングシステム及びデバイスドライバコードをプロファイリングすることが通常困難である。
【0004】
プロセッサのプロファイル情報を与えるために、ハードウェア実施の事象サンプリングを使用することもできる。ハードウェアサンプリングは、模擬及び計装に勝る多数の効果を有し、即ち性能を測定するためにソフトウェアプログラムを変更する必要がない。サンプリングは、比較的低いオーバーヘッドで全システムに作用する。実際に、最近では、低いオーバーヘッドのサンプリングをベースとするプロファイリングを使用して、パイプラインストール及びそれらの原因に関する詳細な命令レベル情報を収集することができる。しかしながら、多くのハードウェアサンプリング技術は、特定の事象を測定するように設計されているので融通性に欠ける。
デジタル社のAlpha AXP21164、インテル社のペンティウイム・プロ及びMIPS10000は、データキャッシュ(Dキャッシュ)ミス、命令キャッシュ(Iキャッシュ)ミス及び分岐予想ミスのような種々の事象をカウントすることのできる事象カウンタを形成する。これらの事象カウンタは、カウンタがオーバーフローするときに割り込みを発生し、従って、カウンタの性能データを高レベルのソフトウェアでサンプリングすることができる。
【0005】
事象カウンタは、特定のプログラム又はその一部分を実行する間にシステムが招いた分岐予想ミスの数のような集合情報を捕獲するのに有用である。しかしながら、既知の事象カウンタは、どの分岐命令が頻繁に予想ミスを生じるかのように状態情報を個々の命令に帰属させる点で有用性が低い。これは、事象カウンタがオーバーフローしそして割り込みを生じるときには、その事象を生じた命令のプログラムカウンタ(PC)がもはや使用できないためである。
命令をアウトオブオーダー(順序ずれして)でイッシューすることのできるプロセッサの動的なオペレーションを推測することが特に問題である。実際に、アウトオブオーダープロセッサで実行されるソフトウェアプログラムの振る舞いは極めて不可解で且つ理解が困難である。その具体的な例としてアウトオブオーダーのAlpha21264プロセッサでの命令の流れについて考える。
【0006】
スーパースカラープロセッサアーキテクチャー
実行順序
アウトオブオーダープロセッサは、命令を正しい順序でフェッチしそしてリタイアするが、命令をそれらのデータ依存性に基づいて処理する。命令の処理は、レジスタのマッピング、命令の発生及び実行を含む。命令は、それがフェッチされたときから、それがリタイア又はアボートするときまで、「フライト中」であると言える。
各プロセッササイクル中に、プロセッサパイプラインの第1段は、命令キャッシュ(Iキャッシュ)から命令のセットをフェッチする。命令のセットはデコードされる。命令デコーダは、フェッチされたセットのどの命令が命令流の一部分であるかを識別する。
【0007】
フェッチすべき次の命令のPCを分析するには多数のサイクルを要するので、PCは、通常、分岐又はジャンププレディクタ(予想子)により前もって予想される。予想を誤ったときには、プロセッサは、「不良」実行経路を占有する予想ミス命令をアボート(中止)し、そして「良好」経路において命令のフェッチを再スタートする。
命令を順序ずれ状態で実行できるようにするために、命令のオペランドに指定されたレジスタは、「読み取り後の書き込み」及び「書き込み後の書き込み」競合を防止するように動的に名前を付け直される。この名前の付け直しは、アーキテクチャー即ち「仮想」レジスタを物理的レジスタへとマッピングすることにより達成される。従って、同じ仮想レジスタに書き込む2つの命令は、それらが異なる物理的レジスタに書き込みそして仮想レジスタの消費者が適切な値を得るので、順序ずれ状態で安全に実行することができる。
【0008】
レジスタマップ型命令は、そのオペランドが計算されそして適当な形式の機能的「実行」ユニットが得られるまで、イッシュー待ち行列に存在する。命令によって使用される物理的なレジスタは、命令がイッシューされるサイクルで読み取られる。命令は、それらが実行された後に、リタイアの準備ができたとマークされ、そしてプログラム順序における全ての手前のリタイア準備命令がリタイアしたときに、即ち命令が正しいプログラム順序でリタイアするときに、プロセッサによりリタイアされる。リタイアの際に、プロセッサは、命令によりなされる変更をシステムのアーキテクチャー「状態」へコミットし、そして命令により消費されたリソースを解除する。
【0009】
予想ミス
分岐が誤って予想されるようなある場合には、命令をトラップし又は破棄しなければならない。これが生じたときには、現在の推測的な構造状態が、予想ミスが生じた実行点へと戻され、正しい命令においてフェッチが続けられる。
【0010】
遅延
多数の事象が命令の実行を遅らせる。パイプラインの前方において、フェッチユニットは、Iキャッシュミスのためにストールするか、又はフェッチユニットは、予想ミスのために不良経路に沿って命令をフェッチすることがある。マップ手段は、空いた物理的レジスタが欠乏するか、又はイッシュー待ち行列に空きスロットが欠乏するためにストールすることがある。イッシュー待ち行列の命令はそれらのレジスタ依存性が満足されるか又は機能的実行ユニットが使用できるようになるのを待機する。
命令は、データキャッシュミスによりストールすることがある。命令は、それらが不良経路を下るように推測的に発生されるか、又はプロセッサが割り込みを行ったためにとラップされることがある。これら事象の多くは、例えば、コードの検査により静的に予想することが困難であり、それらは全てシステムの性能を低下させる。この形式の情報を個々の命令に帰属させるのに単純な事象カウンタでは不充分である。加えて、遅延の長さを厳密に測定して、どの遅延に特に注目すべきかを決定することは困難である。
【0011】
プログラマー又は最適化ツールが、スーパースカラー及びアウトオブオーダープロセッサ、又はこの点については任意のアーキテクチャー設計のプロセッサのような複雑なコンピュータシステムのソフトウェア及びハードウェア要素の性能を改善できるように、事象を特定の命令及びマシン状態に直接的に帰属させることが強く望まれる。
【0012】
【発明が解決しようとする課題】
公知の事象カウンタに伴う問題
既知の事象カウンタに伴う主な問題は、カウンタをオーバーフローさせた事象を生じさせた命令が、通常は、サンプリングされた例外的PCよりかなり前にフェッチされることであり、即ち、このPCは、オーバーフローを生じさせた命令のものではない。フェッチと割り込みとの間の遅延の長さは、一般に、予想できない量である。この予想できない事象分布は、事象を特定の命令に適切に帰属させることを困難にする。順序ずれ及び予測的実行は、この問題を増幅するが、これは、Alpha21164プロセッサのようなインオーダー(順序正しい)マシンにも存在する。
【0013】
例えば、Alpha21164(インオーダー)プロセッサ対ペンチウム・プロ(アウトオブオーダー)プロセッサに対してDキャッシュ基準事象カウントを監視しながら、性能カウンタ割り込みハンドラーに与えられるプログラムカウンタ値を比較する。例示的プログラムは、ランダムメモリアクセス命令、例えば、ロード命令と、それに続く、ナルオペレーション命令(nop)のハンドラーとを含むループより成る。
インオーダー型のAlphaプロセッサでは、全ての性能カウンタ事象(例えば、キャッシュミス)は、事象の6サイクル後に実行される命令に帰属され、ロードアクセス後の7番目の命令においてサンプルの大きなピークを生じる。このスキューした事象分布は、理想的なものではない。しかしながら、単一の大きなピークがあるために、静的な分析は、時々、このピークから後方に作用し、その事象を生じさせた実際の命令を識別することができるが、これは、単純なプログラムでも最良の推測以上のものは何もない。
【0014】
アウトオブオーダー型のペンティウム・プロで実行される同一のプログラムの場合に、事象サンプルは、次の25個の命令にわたって広く分布され、スキューを示すだけでなく、著しい不鮮明さも示す。サンプルの広い分布は、特定の事象を、その事象を生じた特定の命令に帰属させるのをほぼ不可能にする。他のハードウェア事象をカウントするときにも同様の振る舞いが生じる。
スキュー又は不鮮明さのある事象サンプル分布に加えて、従来の事象カウンタは、付加的な問題で悩まされている。通常、事象カウンタより多くの当該事象があり、全ての当該事象を同時に監視することは、不可能でないまでも、困難である。プロセッサの複雑さが増すと、この問題が一層悪化する。
加えて、事象カウンタは、事象が発生したという事実しか記録せず、その事象に関する付加的な状態情報を与えない。多数の種類の事象に対し、キャッシュミス事象にサービスする待ち時間のような付加的な情報が極めて有用である。
更に、公知のカウンタは、一般に、事象をコードの「ブラインドスポット」に帰属させることができない。ブラインドスポットとは、割り込み権が与えられるまで事象が確認されないために、高優先順位システムルーチン及びPALコードのような割り込み不能コードである。そのときまでに、プロセッサの状態は著しく変化し、おそらく偽の情報を与える。
【0015】
ストール対ボトルネック
パイプライン式のインオーダープロセッサにおいて、パイプライン段で1つの命令がストールすると、その後の命令がそのパイプライン段に通過することが妨げられる。それ故、インオーダープロセッサでは「ボトルネック」命令を識別することが比較的容易であり、即ちボトルネック命令は、パイプラインのどこかでストールする傾向がある。インオーダープロセッサの場合、命令が各パイプライン段を通るときにその待ち時間を測定し、そしてその測定された待ち時間を、各パイプライン段におけるその命令の理想的な待ち時間と比較することにより、ストールを識別することができる。命令は、ある段を通過する最小待ち時間より長い時間を必要とするときに、その段においてストールしたと仮定することができる。
【0016】
しかしながら、アウトオブオーダープロセッサでは、あるパイプライン段でストールした命令に対して他の命令がそのパイプライン段を通過することがある。実際に、ストールした命令の付加的な待ち時間は、他の命令の処理によって完全にマスクされ、実際に、ストールした命令は、観察されるプログラム完了を遅延しないことがある。
インオーダーシステムにおいても、あるパイプライン段のストールは、別のパイプライン段がボトルネックであるときにはプログラムの全実行時間に影響しない。例えば、メモリ集中のプログラムの実行中には、Dキャッシュミスにより遅延される実行ユニットからの「バックプレッシャー」のために、命令パイプラインのフェッチ手段及びマップ手段がしばしばストールすることがある。
【0017】
理想的には、キャッシュミスを生じるメモリオペレーションを一次ボトルネックとして分類する。フェッチ手段及びマップ手段のストールは、実際には、キャッシュミスによる遅延の非兆候状態であり、即ち二次ボトルネックである。
ストールが他の命令によりマスクされない命令を識別し、そしてそれらを真のボトルネックとして識別することが望ましい。更に、プログラムの振る舞いを改善するためには、非兆候(二次)ボトルネックよりもカジュアル(一次)のボトルネックに焦点を合わせることが必要である。このようにパイプライン段のボトルネックをカジュアル及び非兆候と分類することは、パイプラインの状態並びにフライト中命令のデータ及びリソース依存性を詳細に知ることが必要であるが、これらは、良く知られたように、単純な事象カウンタから得ることができない。
【0018】
1992年9月29日付のウェスコット氏等の「命令サンプリング手段(Instruction Sampling Instrumentation)」と題する米国特許第5,151,981号は、アウトオブオーダーの実行マシンにおいて命令ベースのサンプリングを行うハードウェアメカニズムを提案している。ウェスコット氏等の解決策には多数の欠点がある。第1に、この解決策は、ある内部命令番号が指定された命令しかサンプリングに対して選択できないので、命令サンプルの流れをバイアスし得る。
第2に、このシステムは、リタイアした命令のみをサンプリングし、フェッチした全ての命令をサンプリングするのではなく、その幾つかがアボートされる。第3に、ウェスコット氏等のメカニズムにより収集される情報は、例えば、キャッシュミスのような個々の事象属性に集中するが、命令間の関係を決定するための有用な情報を与えるものではない。
【0019】
最近、「ロード通知(informing loads) 」と称するハードウェアメカニズムが提案されている。これについては、1996年5月22日のプロシーディングズ第23アニュアルインターナショナルシンポジウム・オン・コンピュータアーキテクチャー、第260−270ページに掲載されたホロイッツ氏等の「インフォームドメモリオペレーション:近代的なプロセッサにおけるメモリ性能フィードバックの供給(Informed memory operations: Providing memory performance feedback in modern processors)」を参照されたい。この場合は、メモリオペレーションに続いて、そのメモリオペレーションがキャッシュにおいてミスした場合及びその場合にのみ条件分岐オペレーションを行うことができる。プロファイリングについては特に設計されていないが、このメカニズムは、特にDキャッシュミスの事象情報のみを収集するのに使用できる。
【0020】
キャッシュミスルックアサイド(CML)バッファと称する他の特殊なハードウェアにおいては、高いレベル2のキャッシュミスレートに悩まされる仮想メモリページが識別される。この詳細な説明については、1994年10月4日のプロシーディングズ・オブ・ザ・シックスス・インターナショナルコンファレンス・オン・アーキテクチャルサポート・フォア・プログラミングランゲッジ・アンド・オペレーティングシステム、第158−170ページに掲載されたバーシャド氏等の「大型の直接マップ式キャッシュにおける競合ミスの動的な回避(Avoiding conflict misses dynamically in large direct-mapped caches)」を参照されたい。
インテル社のペンティウムのようなプロセッサは、分岐プレディクタの分岐ターゲットバッファ(BTB)の内容をソフトウェアで読み取ることができる。ソフトウェアでBTBを周期的に読み取ることにより、コンテ氏等は、プログラムの限界実行頻度を推定するための非常にオーバーヘッドの低い技術を開発した。これについては、1994年11月30日のプロシーディングズ・オブ・第27アニュアルインターナショナルシンポジウム・オン・マイクロアーキテクチャ、第12−21ページに掲載された「プロファイル駆動の最適化をサポートするための分岐ハンドリングハードウェアの使用(Using branch handling hardware to support profile-driven optimization) 」を参照されたい。
【0021】
この解決策は、関連サンプリング情報を記憶する「プロファイル記録」に含まれた分岐方向情報を追跡することにより得られるものと同様の情報を形成する。最近、コンテ氏等は、分岐が実行される回数及び実行されない回数をカウントするプロファイルバッファと称する付加的なハードウェアの断片を提案している。これについては、1996年12月2日のプロシーディングズ・オブ・第29アニュアルインターナショナルシンポジウム・オン・マイクロアーキテクチャー、第36−45ページに掲載された「プロファイルバッファを使用する正確且つ実際的なプロファイル駆動の編集(Accurate and practical profile-driven compilation using the profile buffer)」を参照されたい。
【0022】
【課題を解決するための手段】
本発明によれば、プロセッサのオペレーションを測定するための装置及び方法であって、従来のメカニズムとは異なる装置及び方法が提供される。事象をカウントし、そして事象カウンタがオーバーフローしたときにプログラムカウンタをサンプリングするのではなく、本発明の装置及び方法は、命令をランダムに選択し、そしてその選択された命令に対して詳細な状態情報をサンプリングすることに依存する。
周期的に、プロセッサの動作中に、プロファイリングされるべき命令がランダムに選択され、そして命令の実行中に何が起きたかのプロファイル記録がプロセッサの内部プロファイルレジスタのセットに累積される。選択された命令の処理が終了し、例えば、命令がリタイアし、アボートし又はトラップした後に、割り込みが発生される。或いは又、ソフトウェアがフラグ又はレジスタをポーリングすることができる。パイプラインにおいて命令がいかに処理されたかの詳細を特徴付ける記録情報を内部プロファイルレジスタからソフトウェアによりサンプリングすることができる。
【0023】
プロファイルレジスタは、命令の実行に関する多数の有用な事実を記録することができる。性能情報は、例えば、選択された命令が実行パイプラインの各段において費やしたサイクルの数、即ち段の待ち時間、命令がIキャッシュ又はDキャッシュミスを受けたかどうか、メモリオペランドの有効アドレス又は分岐/ジャンプターゲット、そして命令がリタイア又はアボートされたかどうかを含むことができる。
順序正しく実行する(インオーダー型)プロセッサにおいては、サンプルされた命令のフェッチ−リタイア待ち時間が与えられたときに各命令に起因する全ストールサイクル数を推定することができる。
順序ずれして実行する(アウトオブオーダー型)プロセッサにおいては、ほとんどのストールがおそらくオーバーラップし、そしてそのストールした命令の周りで順序ずれして発生される他の命令によりマスクされる。これは、ストールした命令の識別を困難なものにする。更に、ボトルネックを識別するためには、各命令が実行される間に同時性の平均レベルに関する情報を収集することが必要となる。
【0024】
特殊目的のハードウェアは、プロファイリングされた命令が実行される間に発生する命令の数をカウント及び記録して、同時実行のレベルを測定することができる。しかしながら、これは、発生するがアボートされ、従って、リタイアしない命令を考慮に入れるものではない。そこで、有用な同時性の量の測定値が与えられる。有用な同時性は、並列に発生しそして所与の命令で首尾良くリタイアする命令の平均数である。発生するがその後にアボートされる命令は、有用ではない。従って、ストールが有用な同時性によりマスクされない命令をボトルネックとして分類することができる。この別の方法を説明するために、アウトオブオーダープロセッサにおいて性能ボトルネックの位置を正確に示すための重要なメトリックは、所与の命令が実行される間に費やされた発生スロットの数である。
【0025】
従って、有用な同時性を測定するために、「対ごとのサンプリング(pair-wise sampling)」と称する技術が提供される。基本的な考え方は、ネスト形態のサンプリングを実行することである。ここでは、第1のプロファイリングされた命令と同時に実行できる命令のウインドウが動的に定義される。例えば、Nが2の場合に、命令のウインドウからプロファイリングするために第2の命令がランダムに選択される。プロファイリングされた及び第2の命令は、プロファイル情報を収集できるところのサンプル対を形成する。
対ごとのサンプリングは、各命令に起因する費やされた発生スロットの数を容易に決定すると共に、ボトルネックの位置を既知の技術よりもかなり正確に指示する。一般に、対ごとのサンプリングは、非常に融通性があり、種々様々な当該同時性及び利用メトリックを決定することのできる分析の基礎を形成する。
【0026】
より詳細には、プロセッサのパイプラインにより処理される1つ以上の命令を周期的に且つランダムに選択し、そして実行パイプラインの段を経て命令が進行する間にプロファイル情報を収集するための装置及び方法が提供される。高レベルのソフトウェアは、次いで、この情報を種々の仕方で後処理することができ、例えば、同じ命令の多数の実行から情報を収集することにより後処理することができる。
捕獲することのできる情報は、例えば、命令のアドレス(プログラムカウンタ即ちPC)、命令が命令キャッシュミスを受けたかどうか、及びミスにサービスするために被る待ち時間を含む。命令がメモリオペレーションを実行する場合には、命令がデータキャッシュミスを受けたかどうか決定し、そしてメモリ要求を満足するための待ち時間を測定する。更に、命令が各パイプライン段において費やす時間の長さを測定することができる。又、プロファイル情報は、命令がリタイアしたかアボートしたかを指示すると共に、後者の場合には、どんな種類のトラップが命令の実行をアボートしたかも指示することができる。
【0027】
命令が実行パイプラインを経て進行するときにプロファイリングレジスタのセットに情報が収集される。命令の実行が終了すると、それがリタイアするか又はアボートするために、上位レベルのソフトウェアに割り込みが与えられる。次いで、ソフトウェアは、プロファイリングレジスタに存在する情報を種々の方法で処理することができる。
ここに開示する技術は、既存の性能監視ハードウェアに対する改良であり、そして命令を順序ずれして発生できる近代的なマイクロプロセッサにおいて比較的低いハードウェアコストで効率的に実施することができる。
より詳細には、システムのプロセッサパイプラインにおいて命令をサンプリングする装置が提供される。パイプラインは複数の処理段を有する。この装置は、パイプラインの第1段へ命令をフェッチするフェッチユニットを含む。あるランダムに選択された命令が識別され、そして特定の選択された命令がパイプラインのいずれかの段にある間にシステムの状態情報がサンプリングされる。特定の選択された命令がパイプラインを出るときにソフトウェアに通知がなされ、ソフトウェアがいずれかのサンプリングされた状態情報を読み取れるようにする。
【0028】
【発明の実施の形態】
システムの概要
図1は、ここに開示するサンプリング方法及び装置を使用することのできるコンピュータシステム100を示す。このシステム100は、バスライン140で接続された1つ以上のプロセッサ110、オフチップメモリ120及び入力/出力インターフェイス(I/O)130を備えている。プロセッサ110は、例えば、デジタルイクイップメント社のAlpha21264プロセッサのように、集積半導体チップにおいて、機能的実行ユニットを含む多数の実行パイプライン111、命令キャッシュ(Iキャッシュ)112及びオンチップデータキャッシュ(Dキャッシュ)113として実施することができる。又、プロセッサチップ110は、以下に詳細に述べるように、選択された命令に対してプロセッサ状態をサンプリングするためのハードウェア119も備えている。
オフチップメモリ120は、汎用キャッシュ(Bキャッシュ又はSRAM)121と、揮発性メモリ(DRAM)122と、永続的メモリ(ディスク)123とを含むハイアラーキー構成をとることができる。I/O130は、システム100に対してデータを入力及び出力するのに使用できる。
【0029】
オペレーション
システム100のオペレーション中に、ソフトウェアプログラムの命令及びデータがメモリ120に記憶される。命令及びデータは、既知のコンパイラー、リンカー及びローダー技術を使用して従来のやり方で発生される。命令及びデータは、キャッシュ112−113を経て1つのプロセッサ110の実行パイプライン111に転送される。パイプラインにおいて、命令が実行のためにデコードされる。ある命令は、データに作用する。他の命令は、プログラムの実行流を制御する。
命令を実行しながら詳細な性能データを収集することが所望される。性能データは、メモリオペレーション及び実行流に関連付けることができる。
【0030】
プロセッサパイプライン
図2aは、図1の1つのプロセッサ110の実行パイプライン200を示すもので、これは、例えば、フェッチ、マップ、イッシュー、実行及びリタイアユニット、各々、210、220、230、240及び250としてシリアルに構成された複数の段を有する。パイプライン200が情報(データ及び命令)を処理するレートは、ライン201上のシステムクロック信号、即ちいわゆるクロック「サイクル」により制御される。
各クロックサイクルは、パイプライン200の段が個々の量の処理を実行できるときの「スロット」即ち時間間隔を定義する。処理スロットは、通常、順方向命令を搬送し、そして以下に述べる実行ユニットの場合は、以下一般に「データ項目」と称するデータを搬送する。例えば、分岐予想ミス又はキャッシュミス或いはパイプラインストールのような場合には、クロックはサイクルを続けるが、有意義な命令は順方向に送られない。
【0031】
1つの効果として、本発明の装置及び方法は、「廃物(garbage) 」即ち非有効データを搬送するプロセッサスロットに関する状態情報をサンプリングすることができる。これらは、「浪費(wasted)」スロットとして知られている。浪費スロットを識別しそしてサンプリングすることは、タスクを最適化するための重要な先駆手段である。というのは、浪費スロットは、有効に機能せず、従って、システム性能を低下するからである。それ故、一般に、ここでサンプリングされるものは、公知技術のように単なる「事象」又は「命令」ではなく、プロセッサスロットが有効な命令に関連したものであるか無効の命令に関連したものであるかに関わりなくパイプライン200を経てプロセッサスロットをプッシュすることに関連した状態情報をである。
【0032】
フェッチユニット
Bキャッシュ121は、データ項目を各々Iキャッシュ112及びDキャッシュ113に転送する。フェッチユニット210は、仮想アドレスを物理的アドレスへと解析するためのある形式の変換ルックアサイドバッファ(TLB)205を使用して、実行されるべき次の命令をIキャッシュ112からフェッチする。Iキャッシュ112からフェッチされる項目は、一般的に、実行可能な命令である。しかしながら、これらは、Iキャッシュが「廃物」データ即ち非命令をミスする場合のように、無効命令でもよい。
単一のプロセッササイクル中に「命令」のセットがフェッチされるのが好ましい。このセットは、例えば、4つの命令を含むことができる。換言すれば、パイプライン200は、4スロット巾である。他の形式のプロセッサは、単一プロセッササイクル中により少数の又はより多数の命令をフェッチすることができる。一般に、これは、各サイクルがキャッシュから4つの処理スロットを満たすことを意味する。あるスロットは、Iキャッシュ112が使用可能なデータをもたないときに浪費される。全ての処理を休止、停止するのではなく、スロットはいかなる場合にも順方向に搬送されて、サンプリングの目的で使用できるようにされるが、スロットの廃物「命令」は、実行のために発生されることがない。
フェッチ中に、選択された命令は、サンプリング又はシステムプロファイリングを許すために付加的な情報で増強することができる。増強命令は、図4を参照して以下に説明する。他の実施においては、選択された命令の増強が、イッシューユニット230を含むプロセッサのいかなる段でも実行できることに注意されたい。
【0033】
マップユニット
システム100では、パイプライン200の次の段のマップユニット220を用いて命令のオペランドが物理的レジスタに動的に指定又は「マップ」される。マップユニットは、物理的レジスタをアーキテクチャー即ち「仮想」レジスタに指定する。換言すれば、仮想レジスタと物理的レジスタとの間には1対1の対応がなくてもよい。
【0034】
イッシューユニット
次の段において、フェッチされた命令は、イッシューユニット230によって順序付けされる。イッシューユニット230は、実行されるべき次の命令のための待ち行列ヘッド(a head-of-the-queue) エントリ231を有するイッシュー待ち行列を備えている。命令に必要なリソース又はデータが使用できないために、イッシューユニット230の1つ以上の命令がストールされ得ることに注意されたい。それ故、ストールされた命令の「周り」で待ち行列230から他の保留中命令が順序ずれして発生される。正しい実行順序は、以下に述べるリタイアユニット250で確認される。
【0035】
実行ユニット
命令は、機能的実行ユニット(E0・・・E3)241及びロード/記憶(ld/st)ユニット242へ発生される。実行ユニット241の各々は、特定形式のオペレータコード(opコード)、例えば、整数及び浮動小数点演算、分岐及びジャンプ命令等で命令を取り扱うように設計される。実行ユニットによって処理される間に、中間値が形成される。ld/stユニット242は、メモリアクセス命令を実行し、例えば、Dキャッシュ113に対してデータをロード及び記憶する。ld/stユニット242は、長い遅延を経験するために特別に識別される。又、長い待ち時間を伴うメモリアクセス命令は、スループットを改善するために、データがプロセッサに送り込まれるかなり前に「完了」となる。
【0036】
リタイアユニット
命令の実行の終了は、リタイアユニット250により処理される。リタイアユニット250は、処理状態をコミットする。ある命令は、アボートするか、又はとラップされることに注意されたい。例えば、実行流は、命令がフェッチされた後に変化するか、又は命令は、例外トラップを被ることがある。このような場合に、パイプラインに既にある命令及び全ての後続命令は破棄され、そして推測的処理状態がロールバックされる。ここでの1つの効果として、破棄又は「アボート」された命令も、浪費プロセッサスロットと同様にプロファイリングされる。換言すれば、終了とは、完全に実行された有効命令をリタイアし、部分的に実行された有効命令を後処理し、或いは無効命令又は浪費スロットを破棄することを意味する。
【0037】
本発明の技術の根底にある基本的な考え方は、パイプライン200の段を経て進むときに、選択された「スロット」、主として命令において「データ項目」の処理を行うものである。プロファイリングハードウェアは、詳細な状態情報を動的に収集する。状態情報は、いずれのパイプライン段からでも又はシステム100のどこからでも到来することができ、例えば、第1及び第2レベルキャッシュ又は他のサブシステムから到来することができる。状態情報は、特定事象に直接起因し得る。
ここでの設計戦略は、プロファイル記録において静的に決定することが困難な情報を収集することである。これは、プロファイル記録を性能ツールとして又はプロファイルで指令される最適化として有用なものにするか、或いはサンプリング及び分析に直接応答する動的な調整を含むオペレーティングシステム及びアプリケーションレベルソフトウェアにおけるリソース割り当てポリシー判断を行う上で有用なものにする。本発明の方法及び装置は、実際の機能的システムにおいて作用するよう設計されることを想起されたい。
【0038】
プロファイル記録の一部分としてセーブするのにどんな状態情報に関心があるかを決定するために、図2bに示すように、近代的なアウトオブオーダーマイクロプロセッサのパイプライン200の種々の段に理論的に得られる情報を検査することが有用である。
図2bに示すように、パイプラインの段は、フェッチ210、マップ220、イッシュー230、実行240及びリタイア250である。これらの段のいずれかの間に、特定の実施形態に基づき、パイプライン200で処理されるいずれかの「フライト中」命令202をライン512によりサンプリングのために選択することができる。この選択は、カウンタ510の値により制御される。カウンタの値は、ライン(init)により初期化することができる。
【0039】
命令アドレス(PC)281、分岐経過ビット(HIST)282、段の待ち時間283、分岐実行指示(T)287、データアドレス(ADDR)284、データミス(MISS)285及びリタイア状態286のような状態情報は、ライン288においてサンプリングすることができる。選択された命令の処理が終了すると、ライン289に割り込み信号を発生することができる。割り込み信号289は、ソフトウェアでライン299を経て状態情報281−286をサンプリングすることができるようにする。或いは又、ソフトウェアは、内部プロセッサレジスタ541を経てライン289をポーリングすることもできる。
【0040】
スーパースカラーのアウトオブオーダープロセッサアーキテクチャー
アウトオブオーダー実行プロセッサは、正しい順序で命令をフェッチ及びリタイアするが、それらのデータ依存性に基づいて命令を実行する。命令は、それがフェッチされたときから、それが終了するまで、例えば、リタイア又はアボートするまで、「フライト中」であると言える。命令は、マッピングの後、イッシューユニット230に入れられ、そして入力オペランドを保持するレジスタが更新されるまでそこで待機する。
各プロセッササイクルごとに、フェッチユニット210は、命令キャッシュ112から命令のセットをフェッチしてデコードする。フェッチユニット210の一部分である命令デコーダは、フェッチされたセットの中のどの命令が命令流の一部分であるかを識別する。フェッチすべき次の命令のプログラムカウンタ(PC)を分析するには多数のサイクルを必要とするので、次のPCは、フェッチユニット210の一部分である分岐又はジャンププレディクタにより予想される。予想が間違っている場合には、プロセッサは、その予想ミスした命令、即ち「不良」経路においてフェッチされた命令をアボートし、そして「良好」経路においてフェッチ命令を再スタートする。
命令を順序ずれして実行できるようにするために、レジスタはマップユニット220により動的に名前が付け直され、「読み取り後の書き込み」及び「書き込み後の書き込み」競合を防止する。同じ仮想レジスタに書き込む2つの命令は、順序ずれ状態で安全に実行することができる。というのは、それらは、異なる物理的レジスタに書き込みするのであり、そして仮想レジスタの消費者が適切な値を得るからである。命令は、正しい順序でフェッチされ、マップされそしてリタイアされるが、順序ずれ状態で実行することができる。
【0041】
レジスタマップユニット220は、フェッチされた命令のオペランドを有効な物理的レジスタに指定する。即ち、レジスタオペランドの仮想名は、プロセッサの物理的なレジスタスペースに対して名前付けし直される。次いで、命令は命令待ち行列230へ送られ、そこで、実行の前に2つの事象を待機する。第1に、それらのレジスタ依存性を分析しなければならない。第2に、命令に必要なリソース、例えば、実行ユニット、レジスタ、キャッシュポート、メモリ待ち行列等が使用できねばならない。これは、現在マップされたいかなる命令に対しても、必要なリソースを再割り当てできないことを意味する。
ある命令に対してこれら2つの条件が満たされると、命令オペランドが物理的レジスタファイルにおいて探索される。次いで、オペランドレジスタの内容及び命令に関するある情報が適当な実行ユニット240へ送られて実行される。命令が実行を終了し、そして命令がプロセッサにおいて最も古い「非リタイア」命令であるときに、命令がリタイアする。これは、命令により使用されるリソース、例えば、物理的レジスタ及びキャッシュポートを解放する。
【0042】
多数の事象が命令の実行を遅延させることがある。パイプラインの前方では、フェッチユニット210がIキャッシュ112のミスによりストールするか又はフェッチユニット210が予想ミス経路の命令をフェッチすることがある。マップユニット220は、空きの物理的レジスタの欠乏、又はイッシューユニット230における空きスロットの欠乏によりストールすることがある。
イッシューユニット230における命令は、それらのレジスタ依存性が満足されるのを待機するか、又は実行ユニット240が使用できるのを待機する。命令は、Dキャッシュにおけるミスによりストールすることがある。命令は、それらが不良経路に沿って推測的に発生されるか、又はプロセッサが不法なオペレーション又はメモリアドレスのような割り込みを行ったためにトラップされることがある。これら条件の多くは、コンパイル時に予想することが困難であり、それらは全てシステム100の性能を低下させる。これにより、ライン288に得られる情報をサンプリングすることが重要となる。
【0043】
プロファイル情報レジスタ
それ故、図3に示すように、サンプリングされる各命令ごとにプロファイル情報を記憶するためのメモリ300が設けられる。メモリ300は、レジスタファイル又はバッファの形態でよい。換言すれば、サンプリングされる選択済み命令は、レジスタファイル300で直接識別される。レジスタファイル300は、複数のレジスタを含むことができる。或いは又、ファイル300は、多数のフィールドをもつ単一のインデックス可能なレジスタとして実施することができる。
ファイル300は、図2bのライン288によりパイプライン200の要素に接続され、従って、選択された命令に関連した性能情報をパイプライン200の各段に対して捕獲することができる。プロファイルレジスタ300は、公知技術で見られる単純な「事象」カウンタ以上のものであり、ここでは、これらレジスタは、特定の既知の命令及び事象に起因する性能情報を収集することに注意されたい。
【0044】
図3において、各レジスタに対して割り当てられるビットの数は、そこに記憶される情報の形式、例えば、命令アドレス(64ビット)、サイクルカウント、即ち待ち時間(8又は10ビット)、個別事象(1ビット/事象)等々に依存している。これらの数は単なる指針に過ぎない。他の実施形態は、種々のレジスタ300に対して異なるビット数を使用することができ、これは設計上の選択肢である。
好ましい実施形態では、プロファイルPCレジスタ310は、選択された命令のPCを記憶する。以下に述べるように、プロファイリングされている命令は、アサートされた「プロファイル」ビットを有する。又、PCレジスタ310は、選択された命令のopコードを含むこともできる。更に、マルチスレッド式実行を許すプロセッサについては、レジスタ310の付加的なビットがスレッドの識別子を記憶することができる。レジスタ310の他のフィールドは、プロセス識別子、アドレススペース番号、CPU番号、及び実行されている命令の命令番号(inum)を記憶することができる。更に、多数の論理レジスタセット、即ちハードウェアコンテクスト及び同時実行スレッドを有するプロセッサでは、レジスタ310がハードウェアコンテクスト及びスレッド識別子を記憶できる。この情報を記憶することにより、プロファイル情報を特定の命令に直接起因させることができる。更に、サンプリングされた情報は、アドレスの範囲、opコード、実行スレッド、アドレススペース、等々に基づいてフィルタすることができる。
【0045】
プロファイル有効アドレスレジスタ320には、選択された命令に関連したアドレスがロードされる。命令がメモリアクセス命令である場合には、仮想メモリアドレスの変換から生じる物理的なアドレスをレジスタ320に捕獲することができる。命令がジャンプ又は分岐である場合には、仮想ターゲットPCの変換から得られる物理的アドレスをレジスタ320に捕獲することができる。
本発明のサンプリング技術の1つの効果として、サンプリングレートに関わりなく、パイプライン200によって処理される全ての「命令」に対してサンプリングを行うことができる。命令は、有効な命令、無効の命令、非割り込み命令、又は「廃物」命令である。従って、捕獲された有効アドレスは、プログラムの全体的な振る舞いを統計学的に表す。サンプリングされた命令の有効アドレスを捕獲することにより、メモリアクセス及び実行流を、実際の動的な実行に正確に関連付けることができる。
【0046】
プロファイル事象カウンタ330は、例えば、1ビットフィールドに区画化される。1ビットフィールドは、選択された命令に対する事象を記録する。命令が最初に選択されるときに、レジスタがクリアされる。事象は、キャッシュミス、分岐予想ミス、リソース競合、トラップ及び例外条件、リタイア/アボート/無効、TLBミス、実行/非実行、データ依存性ストール、リソース依存性ストール、等々を含む。この実施形態では、多数の事象を単一の命令に起因させることができる。リタイア及びアボートの両命令に対して事象情報が収集されることに注意されたい。事象レジスタ330のサイズを減少するために、あるビットフィールドを使用して、命令のopコードに基づき異なる形式の相互に排他的な事象を記録することができる。
【0047】
プロファイル経路レジスタ340は、分岐経過テーブルから最近の分岐実行/非実行情報を捕獲するのに使用される。分岐経過テーブルは、他の用途に対して良く知られている。グローバルな分岐実行経過は、選択された命令をフェッチした実行経路を指示するのに使用できる。命令は、この情報を有効なものにするために分岐命令である必要はないことに注意されたい。経路情報の使用は、以下で詳細に説明する。
待ち時間レジスタ350は、選択された命令が、例えば、パイプライン200の種々の段間をフライト中である間に、チェックポイントにおいて得られたタイミング情報を記憶する。チェックポイントは、命令がストールされて、ある事象又はリソースを待機する場所に基づいて、プロセッサごとに異なる。各待ち時間レジスタ350は、2つのチェックポイント間で命令が費やすサイクル数をカウントする。
【0048】
選択された命令がチェックポイントを通過し、即ちパイプライン200の次の段に入るときに、それに対応する待ち時間レジスタ350が最初にクリアされ、そして1サイクル当たり1回増加され、やがて、命令が次のチェックポイントを通過し、このとき、次の待ち時間レジスタが初期化されそしてカウントを開始する。待ち時間レジスタ350の数は、特定の実施形態におけるパイプライン200の段数に基づく。命令がアボート又はリタイアするときには、待ち時間レジスタ350に完全な待ち時間プロファイルが記憶される。
収集すべき潜在的に有用な待ち時間のリストは、フェッチ対マップ、マップ対データレディ、データレディ対実行、実行対リタイアレディ、リタイアレディ対リタイア遅延を含む。メモリ命令(ロード及び記憶)の場合、待ち時間は、イッシューから完了までである。この最後の待ち時間は、あるメモリオペレーションが、それが作用するデータを実際にプロセッサに送る前にリタイアし得るという点で、他の待ち時間とは異なる。これらの待ち時間は、レジスタ350で直接カウントすることもできるし、或いはレジスタが生のサイクルカウントを収集することもでき、この場合に、プロファイリングソフトウェアは、次々の段に対する生のカウント間の差を計算して実際の待ち時間を決定する。例えば、パイプライン待ち時間クロックサイクルをカウントする回路は、図6を参照して以下に詳細に説明する。
【0049】
レジスタ300における情報の更新は、遅延が受け入れられた直後に行う必要はない。必要とされるのは、選択された命令が完了した(リタイア又はアボートした)ことを知らせる割り込みを、レジスタファイル300の全ての情報が更新されるまで遅延するか、或いは割り込みハンドラーを、プロファイルファイル300が更新されるまでストールできるようにすることだけである。
プロファイルレジスタファイル300を複写できることに注意されたい。プロファイルレジスタファイルの多数のコピーがある場合には、シリアルに又は同時にプロファイリングするために多数の命令を選択することができる。この場合には、各選択された命令が、以下に述べるように、特定のレジスタファイルで明確に識別される。オーバーヘッドの量を減少するために単一の割り込み信号に応答して多数のレジスタファイルをサンプリングすることができる。
【0050】
選択された命令の識別
図4に示すように、各命令400はサンプルフィールドを含む。例えば、このサンプルフィールドは、「サンプル」ビット(S)401と称する1ビットタグである。サンプルビット401がアサートされると、サンプリングのために命令が選択される。ビット401をアサートすると、プロファイル情報を収集するサンプリングハードウェアが作動されると共に、選択された命令が完了した(リタイア又はアボートされた)ときに割り込みを生じさせる。或いは又、フェッチされた各「命令」を「inum」値で連続的に番号付けすることもできる。この場合には、特定のinum値をもつ命令を選択することができる。命令を選択するメカニズムについては、以下に述べる。
【0051】
プロファイルレジスタファイル300は、フィールドが更新されそして割り込み信号が発生されたときに読み取ることができる。割り込み信号は、特権付きのプロファイリングソフトウェア(PSW)がプロファイルレジスタ300の内容を処理できるようにする。多数のサンプルが記録される場合には、単一の割り込みで、多数の選択された命令に対して性能データをサンプリングできることに注意されたい。
実施形態に基づき、増強命令400は、次の付加的なフィールド、即ち3つまでの命令オペランド(op1、op2及びop3)411−413と、プログラムカウンタ(PC)420と、オペレータコード(opコード)430とを含むことができる。有効フィールド(V)431は、1ビットフィールドを真又は偽にセットすることにより、選択されたスロットにおける「命令」が有効であるかどうか指示することができる。フィールド440及び450は、命令に関連したIキャッシュ及びTLBミスを各々指示するために指定することができる。単一の命令が多数のオペランドを含み得るので、その命令に対して多数のミスが考えられることに注意されたい。
【0052】
プロファイルレジスタファイルID
若干複雑な設計では、多数の命令を同時にプロファイルすることができる。この実施形態では、複数のレジスタファイル300、或いはサブフィールドを伴う単一の大きなレジスタがあり、ファイル300の数は、同時にプロファイルすることのできるフライト中命令の数に対応する。このケースを取り扱うために、命令400は、サンプルレジスタファイル識別子(ID)フィールド402も含むように増強される。これは、多数のレジスタファイル300の1つにプロファイル情報を直接リンクできるようにする。上記したように、ここでは、選択された命令とプロファイルレジスタとの間に直接的な関連がある。それ故、レジスタに収集されるプロファイル情報は、特定の命令に直接起因し得る。
一度に1つのフライト中命令しかプロファイリングされないときでも、ファイル即ちレジスタ300をIDフィールド402でインデックスして、プロファイリングソフトの割り込みハンドラーのコストを多数の命令サンプルにわたり償還できるようにするのが有用である。命令セット内の命令が選択された命令であるかどうかを決定することは、「ワイヤドOR」オペレーションを用いて行うことができる。
【0053】
ランダムサンプリング
本発明のプロファイリングのオーバーヘッドは、同時にプロファイリングすることのできる命令の数を制限することにより減少され、例えば、ビット401がセットされる。プログラム又はプログラムの一部分において各命令をプロファイリングするのではなく、ここでは、プロファイリングされるべき命令が、プロセッサパイプライン200の特定の段階中に、例えば、フェッチの間に選択され、そしてその選択された命令がサンプルビット401のアサートによりタグ付けされる。サンプルビット401がアサートされた場合には、パイプライン200の要素がプロファイル情報をプロファイルレジスタファイル300へ送る。
ここに記載する命令レベルプロファイリングをサポートする詳細について以下に述べる。
【0054】
フライト中状態
第1に、プロセッサパイプライン200を通過する各デコードされた命令状態は、上記のように、付加的な情報で増強される。命令は、それがフェッチされたときから、それがリタイア又はアボートするときまで、フライト中であるとみなされる。上述したように、命令は、少なくとも1つのサンプルビット401で増強される。サンプルビット401は、各フライト中命令及びキャッシュ/メモリ要求の状態の一部分である。ビット401がアサートされると、このビットは、この命令に対してプロファイリング情報が記録されることを示し、さもなくば、記録されないことを示す。
簡単な設計においては、一度に1つのフライト中命令のみが、そのサンプルビット401をアサートすることが許される。サンプルビット401は、選択された命令に対し、その命令がリタイアするか又はアボートされるまで、アサートされたままとなる。多数のレジスタファイル300をもつ更に複雑な設計では、多数のフライト中命令を個々にプロファイリングすることができ、そして付加的なビットをアサートすることができる。
【0055】
プロファイルされた命令の選択及びサンプリング
フェッチ段の実施について図5に示したように、プロファイリングされるべき命令の選択及びプロファイル情報のサンプリングは、次のように行われる。フェッチカウンタ510は、例えば、特権付きプロファイリングソフトウェア(PSW)520によりライン511を経て初期化される。PSW520は、所定サイズを有する値の間隔からランダムに選択された値でカウンタ510を初期化することができる。従って、サンプリングされた命令は、命令の実行における特定のパターンと相関しない。間隔のサイズは、サンプリングの平均頻度を決定する。間隔のサイズは、変更し得る。カウンタ510の値を初期化するための他のランダム化技術(ハードウェアを含む)も使用できる。
【0056】
例えば、公知技術の場合のように命令が固定頻度でサンプリングされるときのように、ランダムサンプリングが行われないと、例えば、システム100の収集オペレーションのように、フェッチされた全ての命令の統計学的に正しいプロファイルを発生することができない。これは、サンプリングレートに対して比較的重要でない多数の命令を含む実行ループを有する実行スレッド、例えば、命令を有しそしてサンプリング間隔が65536個の命令であるループに対して、特に言えることである。1つの効果として、ランダムに選択された命令は、サンプリング間隔の長さとは独立した相関を発生する。
各命令400がフェッチされるたびに、カウンタ510がパイプライン200のフェッチユニット210によりその初期値から増加されるか、或いは別の実施形態では、減少される。カウンタ510が、その実施形態に基づいて、オーバーフローするか又はアンダーフローしたときに、現在フェッチされた命令がそのサンプルビット401をアサートし、そしてIDフィールド402は、多数の命令がサンプリングのために選択されたときにも初期化することができる。
【0057】
別の実施形態では、カウンタ510は、各命令がフェッチされるたびではなく各サイクルごとに増加され、例えば、カウンタ510は、フェッチの機会をカウントし、実際にフェッチされる命令をカウントするのではない。例えば、フェッチユニット210が各クロックサイクル中にIキャッシュ112から4つの項目をフェッチできる場合には、4つのフェッチ機会がある。Iキャッシュからの1つ以上のフェッチがミスとなるか又は「不良」命令をフェッチすることがある。ミスの場合には、ミスした命令に対して使用できるスロットが「廃物」を含み、命令を無効とマークすることが必要になる。不良命令は、不良の実行経路に存在するものであるか、又はさもなくば、アボートされる。
フェッチされた命令ではなくサイクルをカウントする場合には、設計を効果的に簡単化する。フェッチされた有効な命令のみをカウントする場合には、かなり複雑なものとなる。というのは、制御流が、フェッチされた命令のグループに向かって又はそこから分岐することができ、従って、全ての命令をデコードしてどれが有効であるかを決定することが必要となり、もはや、カウンタを4だけ増加するだけの簡単なことではなくなるからである。
【0058】
1つの効果として、サイクル中にIキャッシュからフェッチされた全てのもの(良好な命令、不良の命令、廃物命令)をサンプリングのために選択し、Iキャッシュ112及びパイプライン200の真の性能を決定することができる。ここでは、バイアスはなく、従って、システム性能の統計学的に正しい推定値が得られる。
【0059】
命令のフィルタ動作
サンプリングされた命令情報は、フィルタ505によりフィルタすることができる。フィルタ動作は、命令opコード、オペランド、或いは例えば、ある時間周期内で第1形式の命令の後に別の形式の命令が続くといったより複雑なフィルタ基準に基づいて行うことができる。パイプライン200への入力においてフィルタ動作を行う場合には、カウンタ510をリセットすることができる。これを行う方法は、多数ある。1つの方法では、カウンタ510の現在初期値が初期値(init)レジスタ513に記憶される。命令がフィルタされるときには、初期値レジスタ513に記憶された値がカウンタ510に再ロードされ、初期のランダム化選択が想起される。
【0060】
命令が増強された後に、パイプライン200は、図2bのプロファイル情報281−286をレジスタファイル300(1つ又は複数)に供給する。リタイアユニット250は、命令の完了又はアボートに応答して、プロファイル情報をファイリングを完了し、そしてライン540に割り込み信号を発生して、PSW520がプロファイル情報をサンプリングできるようにする。
或いは、PSW520は、内部プロセッサレジスタ又はメモリ位置(541)を経てライン540をポーリングすることもできる。本発明の技術の1つの特徴として、公知のあるプロファイリング技術とは対照的に、たとえ本発明の技術がプロセッサにわたる状態に関する正確な情報を与えるものであっても、プロセッサのサイクルタイムに何ら影響を与えない。唯一の時間制約は、プロファイルレジスタ300がサンプリングされる前に全てのプロファイル情報を記録しなければならないことである。
【0061】
待ち時間カウンタ
図6は、例示的な待ち時間、フェッチ対マップ(FM)、マップ対イッシュー(MI)、イッシュー対リタイア(IR)、フェッチ対トラップ(FT)、及びイッシュー対ldst(ILS)をカウントするための回路600を示す。この回路600は、ライン611によりラッチ620に接続されたサイクルカウンタ610を備えている。
サイクルカウンタ610及びラッチ620は、ライン601上の信号Pfetchにより初期化される。この信号は、プロファイリングされるべき命令がフェッチされるときに発生され、例えば、サンプルビット401から導出される信号である。カウンタ610は、ライン609のクロック信号により増加される。各クロック信号は、1つのプロセッササイクルに対応する。
命令400がパイプライン200の段を経て進行するときに、パイプライン200の段遷移がライン602−606の信号、各々、Pmap、Pissue、Pretire、Ptrap及びPLSdoneをトリガーする。対応するラッチ620は、図3のプロファイル待ち時間レジスタ(又はフィールド)350に記憶するためにライン612−616において読み取ることができる。
【0062】
プロファイリングアプリケーション
上記のプロファイリングハードウェアは、種々の異なる方法で使用することができる。本発明の技術は、個々の命令の実行に関する非常に詳細な情報を与えるので、1つのアプリケーションで非常に多数の命令をプロファイリングすることができる。サンプル情報はメモリバッファに記憶され、プロファイリングツールにより後で処理されて、詳細な命令レベル情報を形成することができる。
【0063】
この情報は、例えば、各ロード命令に対するロード待ち時間のヒストグラム、命令実行時間のヒストグラム、及びおそらくは各命令に対するパイプライン状態の適度に包括的な分析を発生するのに使用できる。この解決策により与えられる情報の量は、おそらく、かなり多くなるので、本発明の技術の全メモリオーバーヘッドも、相当の量のメモリトラフィックが含まれるために、かなり大きなものとなる。例えば、1秒当たり10億の命令がフェッチされ、そして各1万のフェッチされる命令ごとにサンプリングが実行される場合には、プロファイル情報のデータレートが1秒当たり約2.4MBとなる。
以下、プロファイル情報を収集することにより帯域巾を減少するためのソフトウェア実施方法について説明する。
【0064】
出力プロファイル情報をフィルタすることによるデータの減少
サンプリングされるデータの量は、プロファイル記録のあるフィールド、例えば、プロファイルレジスタ300のデータを、それらが明確に要求されるときを除いて、無視することにより、減少することができる。システム100のユーザは、異なるレベルのプロファイリングを望むことがある。最低のオーバーヘッドモードでは、プロファイリングアプリケーションソフトウェアは、PC及びリタイア−遅延フィールドのみを用いてプログラムの全部又は一部分に対してプロファイルレポートを発生することができる。実行されるべき最適化に基づき、平均化又は他の統計学的メトリック、例えば、最小、最大又は標準偏差の計算により他のPCごとの(per-PC)値を要約することができる。データを処理するための更なる時間が与えられると、プロファイリングアプリケーションは、種々の命令待ち時間のヒストグラムを形成することができる。
【0065】
有効なメモリアドレス、分岐ターゲットアドレス及び分岐経過サンプルは、おそらく、他のフィールドよりも経費のかかる処理を必要とする。これらのフィールドは、おそらく、特定の最適化タスクを実行するためにデータを収集するとき以外は無視することができる。命令と命令との間の命令間フェッチ距離がサイクルで与えられると、プロファイリングアプリケーションは、同時性のレベルに関する情報も収集することができる。
又、プロファイリング情報のフィルタ動作は、例えば、マスクレジスタ又はプログラマブルロジックのようなハードウェア手段により行うこともできる。例えば、キャッシュミスがあったとき又は命令がリタイアしたときにのみサンプルリングするか、或いはopコード、オペランド、アドレス、事象及び待ち時間の他のブール組合せのみをサンプリングする。
【0066】
ハードウェアオペレーションの決定
本発明のプロファイリング技術は、Alpha21264プロセッサのようなアウトオブオーダーイッシュープロセッサの内部動作の正確な理解を得るために使用することができる。この形式のマシン編成に関して注目すべき第1の事柄の1つは、パイプライン200において命令がストールする場所が多数ありそしてストールする理由が非常に多数あることである。
例えば、ある命令は、イッシューユニット230においてストールすることがある。というのは、そのオペランドの幾つかがデータレディでなく、選択された命令の実行に必要なリソースの幾つかが使用できず、又はその命令に先立って他の命令が実行されるべく選択されるからである。
【0067】
ある命令は、仮想−物理的レジスタマッピングを行うマップ段においてストールすることがある。というのは、マシンが物理的レジスタからのものであり、フライト中の命令が非常に多数あり、或いはイッシューユニット230がいっぱいである(実行されようとしている命令を入れる場所がないことを意味する)ためである。或いは又、ある命令は、リタイアユニットにおいてストールすることがある。というのは、プログラム順に既にイッシューされた命令がまだ完了していないからである。
命令がどこでストールされたか、なぜストールされたかそしてどれほどの時間ストールされたかを正確に決定することは、主に、その命令が実行されるときのマシンの正確な状態によって左右される。プロセッサがこのように動的であるために、ソフトウェア性能ツールでこの状態を静的に決定することは困難である。
【0068】
オペレーションの概要
図7aに示すように、プロファイリング方法700は、次のステップを含むことができる。プロファイリング状態は、ステップ710において初期化される。ここで、レジスタがクリアされ、そしてカウンタに初期値が指定される。ステップ720において、命令がフェッチされそしてカウントされる。ステップ730において、初期化以来フェッチされた命令の数が所定のランダム数に等しいときに命令が選択される。選択された命令は、その選択を指示するよう増強される。
選択された命令が実行パイプライン200を経て進むときに、ステップ740においてプロファイル情報が収集される。完了(リタイア又はアボート)時に、収集された情報がステップ740においてサンプリングされる。サンプリングされた情報は、その後の処理のためにバッファすることができる。又、特定のプロファイリング状態をサンプリングし、より詳細な情報を抽出することもできる。
【0069】
処理された命令の特性の統計値の推定
図7bに示されたように、プロセス799は、パイプライン200により処理される命令の特性の統計値を推定する。プロセス799は、次のステップを含むことができる。ステップ751は、ステップ750において上記したようにサンプリングされたプロファイル記録300を読み取る。記録は、選択された命令が完了したときに読み取られる。ステップ760において、サンプルは、システムの状態情報を考慮するファンクション755に基づいて選択又は破棄される。
例えば、ファンクション755は、選択された命令のアドレス、プロセス識別子、アドレススペース番号、ハードウェアコンテクスト識別子、又はスレッド識別子のような状態情報756を入力として得る。又、ファンクション755は、経路識別情報、opコード、オペランド、待ち時間、又は選択された命令により経験する事象のような状態情報も使用することができる。事象情報は、リタイア/アボート/無効状態、キャッシュヒット/ミス、分岐予想ミス、トラップ状態TLBヒット/ミス、及びデータリソース依存性状態、等々である。
【0070】
ステップ760は、ファンクション755に基づいてサンプルのサブセットを発生する。ステップ780において、統計値790が決定される。これら統計値は、サンプリングされた命令の特性の平均値、標準偏差、ヒストグラム(分布)及びエラー限界を含むことができる。例えば、特定の事象が発生する平均レートや、命令実行の平均待ち時間や、メモリアクセスがある。又、プロセス、スレッド又はハードウェアコンテクストの実行レートの平均値も決定できる。ヒストグラムは、命令実行、メモリアクセスレート又は待ち時間のような分布を示すことができる。
エラーの限界は、サンプリングされている特定の特性に対してサンプルの数の平方根の逆数で近似することができる。
【0071】
N個ごとのサンプリング
ここに開示するプロファイリング技術は、N個ごとの(N-wise)サンプリングを実行するのにも使用できる。ここで、多数の同時実行命令間の相互作用の動的な状態を捕獲することができる。単一のフライト中命令をプロファイリングするのではなく、2つ以上の個別の命令が同時にプロファイリングされる。選択された命令間の動的な「距離」は、フェッチされた命令の数、又はフライト中の命令を「分離」するプロセッササイクルの数として測定することができる。カウンタ510によりカウントされる事象のいずれかを用いて、選択された命令間の距離、例えば、クロックサイクル、フェッチされた命令等を測定することができる。
N個ごとのサンプリングされた命令に対するプロファイル情報は、多数の考えられる用途を有する。第1に、情報を分析して、有用な同時性レベルを測定することができる。これは、真のボトルネックを探索できるようにする。真のボトルネックは、長いストールが低い同時性で結合されることを特徴とする。又、N個ごとのサンプルは、経路のプロファイリングを容易にすると共に、経路に沿った少なくとも2つのポイントを含むように経路を制限することにより実行経路候補を明確化することができる。更に、N個ごとのサンプリングから、詳細なプロセッサパイプライン状態を統計学的に再構成することもできる。ここで、命令のグループの選択は、命令間のある類似性の尺度、例えば、最近の分岐経過、ストール、命令形式、又は他の最近の状態経過をベースとすることができる。
【0072】
有効な同時性の測定
アウトオブオーダープロセッサにおいて性能のボトルネックを正確に位置決めするには、ストール時間及び同時性レベルの両方に関する詳細な情報を必要とする。インオーダープロセッサとは対照的に、長い待ち時間の命令がストールされる間にプロセッサを効率的に利用するに充分な同時性があるときには、長い待ち時間の命令が問題とならない。
同時性情報を得るための1つの解決策は、全パイプライン状態のスナップショットを得ることである。これは、同時実行命令のセットが所与の時点でパイプラインの段のどこにあるかを直接的に露呈する。しかしながら、全パイプラインの状態をサンプリングレジスタ及びバッファに「ダンプ」することは、時間及びスペースの両面で非常に経費がかかる。更に、発生される多量のデータは、おそらく、サンプリングのコストを償還するように効率的に収集することができない。更に悪いことに、この解決策は、リタイアする命令しか「有効」としてカウントされず、そしてフェッチされた命令がアボートするところの情報がまだ分からないので、実際上不充分である。
【0073】
ネスト状の対ごとのサンプリング
N個ごとのサンプリングの1つの形式(N=2)は、単一命令プロファイリングと全パイプラインスナップショットとの間の妥協を最小にする。ここで、統計学的な対ごとの(pair-wise) サンプリングがネスト状に行われ、所与の選択された命令に対して、同時に実行し得る別の命令が直接サンプリングされる。
【0074】
ネスト状のN個ごとのサンプリングに対するハードウェアサポート
N個ごとのサンプリングは、次のハードウェア特徴を含む。第1に、ハードウェアは、少なくともN個の同時フライト中命令に対しプロファイル情報を捕獲できねばならない(N>1)。プロファイルレジスタのセットは、プロファイル記録の多数の個別のセットをサポートするために複写されねばならず、そして単一サンプルビット401は、より一般的なIDフィールド402へと増強されねばならない。第2に、ハードウェアは、サンプリングレートの変更により、選択された命令間の距離を動的に変更できねばならない。これは、ハードウェア又はソフトウェアによって行うことができる。同時サンプリング命令(N個ごと、但しN>1)のセットのサイズは、カウンタ及びレジスタの付加的な複写でより大きくすることができる。
【0075】
例えば、特権付きプロファイリングソフトウェア520は、対ごとのケースでは2つのフェッチカウンタ510の初期値がランダムに選択されるところの間隔のサイズを動的に変更することができる。これは、一対の命令に対するサンプル間フェッチ距離を同時に特定できるようにする。ハードウェアは、ソフトウェアレベルでの最大の融通性を得るために比較的大きなサンプル間フェッチ距離をサポートすることができる。
第2のフェッチカウンタがコアフェッチ命令カウンタ510と同じサイズであって、充分な距離に離れた2つの独立した命令を選択できるのが理想的である。Alpha21264プロセッサの場合には10ビットカウンタで充分である。フェッチ命令をカウントするときに同時性を測定するには、それより小さなカウンタで充分であり、サイクルがカウントされる場合には、それより大きなカウンタが必要とされる。ネスト状のN個ごとのサンプリングについては、ハードウェアは、サンプル間フェッチ・対・フェッチ待ち時間もサイクルで測定して、多数の待ち時間レジスタ350を時間的に相関させることができねばならない。又、ハードウェアは、リタイアした命令又はキャッシュミスのような他のサンプル間事象を使用して待ち時間を測定することができる。
【0076】
ネスト状のN個ごとのサンプリングアプリケーション
高レベルアプリケーションソフトウェアは、ネスト状のN個ごとのサンプリングを用いて、有効な同時性を測定することができる。ここでの重要な考え方は、潜在的に同時に実行し得る命令セットのサンプリングを許すことである。ネスト状のサンプリングは、通常のサンプリングを正当化する同じ統計学的引数に基づくもので、即ちサンプリングが繰り返し適用される。N個ごとのサンプリングは2つのサンプリングレベルを含むので、著しく実行されるコードについては最も効果的である。明らかに、これは、最も重要なところでもある。
【0077】
大小のサンプリング間隔
図8aは、Nが2に等しい特定のケースに対するネスト状のN個ごとのサンプリングを例示するもので、対ごとのサンプリングとも称する。参照番号810の矢印は、ある動的な実行中にプログラム順にフェッチされる命令のシーケンスを示す。第1のサンプリングレベルは、フェッチされた命令820の小さな黒い領域で示され、それらの間隔830は、「大きな」サンプリング間隔に対応する。
第2のサンプリングレベルは、各黒い領域の上に示された命令840の拡張ウインドウにより示される。各ウインドウ840の第1分類命令841は、第1のサンプリングレベルにより選択された命令を表す。各ウインドウ840の第2分類命令842は、「小さな」サンプリング間隔により決定される。
潜在的に同時の命令のウインドウサイズは、Wで示される。各々の対サンプル<I1、I2>ごとに、対内フェッチ距離を1とWとの間に均一に分布された擬似ランダム数にセットすることによりネスト状サンプリングが実施される。ウインドウサイズは、同時にフライト中となる命令のいかなる対も含むように慎重に選択される。一般に、Wの適当な値は、プロセッサによりサポートされるフライト中命令の最大数に依存する。デジタル社のAlpha21264のようなほとんどのプロセッサでは、これは、100未満の命令である。小さな対内サンプリング間隔は、通常、その大きさが大きな対間間隔より小さい。
【0078】
サンプル対の分析
所与のプロファイリングされた命令Iに対し、潜在的な同時命令のセットは、動的な実行中にプロセッサパイプラインにおいて命令Iと共存するものである。これは、Iがフェッチされる前の種々の実行段にある命令と、Iの後にフェッチされる命令とを含む。
図8bは、Iの周りの±Wの潜在的同時命令のウインドウ850において命令に関する情報を回復するために図8aからのサンプル対をいかに分析できるかを示している。この例では、全ての対<I1、I2>(851)が、「a」と示された命令を含むものとする。I1=aのときは、I2がaの後のウインドウにおけるランダムサンプルである。例えば、対<a、d>870は、第1サンプルa871及び第2サンプルd872より成り、この第2サンプルd872は、第1サンプルa871の後のW個の命令のウインドウにおけるランダムサンプルである。I2=aのときは、I1がaの前のウインドウにおけるランダムサンプルである。
【0079】
例えば、対<c、a>860は、第1サンプルc861及び第2サンプルa862より成り、c861は、a862の前のW個の命令のウインドウにおけるランダムサンプルである。各対を2回考慮することにより、ランダムサンプルは、全ての潜在的同時命令のセットにわたって均一に分布される。
各々の対サンプル<I1、I2>に対して記録されるプロファイリングされた状態情報は、各時点にI1及びI2がプロセッサパイプラインのどこにあるかを指示する待ち時間と、2セットの待ち時間レジスタを時間的に相関させることのできる対内フェッチ待ち時間とを含む。又、I1及びI2に対してプロファイリングされた状態記録は、命令がリタイアしたかアボートされたかも指示する。この情報は、図8cに示すように、サンプル対における2つの命令が時間的に重畳するかどうかを決定するのに使用できる。
【0080】
例えば、サンプル対<d、a>890及び<c、a>891に関連した記録されたデータは、実行重畳の変化する度合いを示し、<a、d>892については重畳していない。同様に、<a、b>880に対して記録されたデータは、a881及びb882の実行が重畳する間に、b882がその後にアボートされることを指示する。
「重畳」の定義は、同時実行の特定の観点に焦点を合わせるように変更することができる。ここでは、この定義を用いて、所与の命令がフライト中である間に浪費したイッシュースロットの数が推定される。重畳の他の有用な定義は、一方の命令がイッシューされる間に他方の命令はイッシュー待ち行列においてストールされること、一方の命令が他方の命令の固定数のサイクル内でリタイアすること、或いは両方の命令が同時に演算ユニットを使用することを含む。
【0081】
例示的な同時性メトリック:浪費イッシュースロット
ボトルネックの位置を正確に決めるためには、大きな実行カウント、長い待ち時間及び低いレベルの有効同時性をもつ命令を識別することが必要である。1つの関心のある同時性の尺度は、命令が進行中である間に「浪費」されるイッシュースロットの全数である。このメトリックを計算するために、命令Iを含むサンプル対に対して有効重畳という用語が定義される。有効重畳は、Iが進行中であり、サンプル対においてそれと対になる命令がイッシューされ、そしてその後にリタイアするときに生じる。ここで、「進行中」とは、Iがフェッチされたときと、それがリタイアする準備ができたときとの間の時間を意味し、リタイアを待機して費やされる時間は含まない。というのは、このような遅延は、単純に、その前の命令によるストールのためのものだからである。
【0082】
命令Iを固定する。Iが進行中である間に浪費されるイッシュースロットの数を推定するために、先ず、Iとの有効重畳を示す命令により使用されるイッシュースロットの数を推定する。次いで、Iの全ての実行にわたり得られるイッシュースロットの全数を推定する。これら2つの量の差が、浪費したイッシュースロットの数となる。この方法が図9に示されている。
S個のフェッチした命令ごとに1つのサンプル対という平均サンプリングレートを仮定し、1つの対における第2のサンプルが第1のサンプルの後にW個の命令のウインドウから均一に選択されるものとする。形式<I、I2>のサンプルの数をFで表し、I2がIとの有効重畳を示すようにする(ステップ910)。同様に、形式<I1、I>のサンプルの数をBで表し、I1がIとの有効重畳を示すようにする(ステップ920)。T=F+Bとする(ステップ930)。
【0083】
Iが進行中である間にイッシューされる有効命令の数UをT、W及びSの積として推定する。即ち、U=T*W*S(ステップ940)。
ここで、Iを含む全てのサンプルにわたり、フェッチからリタイア準備完了までのサンプル待ち時間(サイクルで)の和をLとする。(この和には各対に両サンプルを含ませる。)マシンのイッシュー巾、即ちサイクル当たりに使用できるイッシュースロットの数(例えば、Alpha21264に維持できるサイクル当たり4)をCとする。Iの全ての実行にわたる全待ち時間を(L*C*S)/2として統計学的に推定する(ステップ950)。最終的に、Iの全ての実行中に浪費したイッシュースロットの全数をWIS=(L*C*S/2)−(T*W*S)として推定する(ステップ960)。
【0084】
この解決策の重要な作用は、浪費したイッシュースロットのようなメトリックの要素を増分的に収集し、データ収集中にコンパクトな記憶が行えるようにすることである。又、これは、1997年3月3日に出願されたウェール氏等の「プロセッサ性能カウンタの高頻度サンプリング(High Frequency Sampling of Processor Performance Counters) 」と題する米国特許出願第08/812,899号に開示された効率的なデータ減少技術を可能にする。
【0085】
同時性メトリックに対する柔軟なサポート
Iがフライト中である間にリタイアした命令の数、又はIの周りでイッシューされる命令の数のような他の多数の同時性メトリックを同様に推定することができる。Iの隣接部における命令/サイクル(IPC)レベルは、互いの一定数のサイクル内に両命令がリタイアするところの対の数をカウントすることによって測定することができる。
又、Iが所与のパイプライン段にある間の特定の機能的ユニットの平均利用度のような詳細な情報も抽出又は収集することができる。又、命令当たりのデータを使用して、同時性情報を収集するときに関心のあるケースをクラスター化することもできる。例えば、命令Iがキャッシュにおいてヒットするときの平均同時性レベルを、Iがキャッシュミスに影響するときの同時性レベルと比較することが有用である。同時性レベルとの相関を検討するための他の関心のある特徴は、レジスタ依存性、分岐予想ミスストール、及び最近の分岐経過を含む。
一般に、対ごとのサンプリングは、W個の命令のウインドウにわたってF(I1、I2・・・IN)として表すことのできる関数の値をサンプリングすることにより種々の異なるメトリックを統計学的に計算できるようにする顕著な融通性を発揮する。一般に、N個ごとのサンプリングは、命令のいかなる特定のウインドウについてもF(I1、I2・・・IN)として表すことのできる関数の値をサンプリングすることができる。
【0086】
単一の同時性メトリックを測定するように設計されたハードウェアメカニズムとは対照的に、この融通性は、N個ごとのサンプリングを、複雑なアウトオブオーダー型プロセッサの同時性情報を捕獲するための効果的な選択肢とする。というのは、新たなメトリック及び分析技術の設計を可能にするからである。
【0087】
単一プロセッササイクル中にパイプライン段により処理される命令の
瞬時平均数の決定
又、図10に示すように、fの多路サンプリング以外の特殊なハードウェアを使用して、固定サイズのプロセッササイクル数にわたりパイプラインにより処理される命令の平均数を決定することができる。図10は、例えば、リタイアされる命令の瞬時平均数を決定するための回路を示す。プロセッササイクル中に、パイプライン220のいずれの段1001についても、同様の回路を使用して、フェッチ、マップ、イッシュー又は実行される命令の平均数を決定することができる。
【0088】
装置1000において、先入れ先出し(FIFO)待ち行列1010及びN容量の加算器1020の各々は、単一のプロセッササイクル中にパイプラインの特定の段1001により処理される命令の数(カウント1002)を受け取り、例えば、フェッチ、マップ、イッシュー又は実行される命令の数を受け取る。FIFO待ち行列1010におけるエントリの数(P)1022は、平均値が決定されるところのサイクルの数を決定する。Pは、ハードウェアで設定されてもよいし、ソフトウェアで設定されてもよい。値Pは、平均値が決定されるところのサイクルのウインドウを制御する。
加算器1010はスケール型カウントレジスタ1040に接続され、従って、このレジスタ1040は、N個のサイクル中にリタイアした命令の全数を累積することができる。FIFO待ち行列1020及びレジスタ1040は、ライン1021及び1041を経て初期化することができる。減算器1030は、それまでのN−1サイクルにリタイアした命令の数をレジスタ1040から減算し、例えば、FIFO待ち行列1010のヘッドエントリに記憶されたカウントを減算する。レジスタ1040の出力は追跡されたサイクルの数(P)で除算され(1050)、段1001で処理された実際の命令の動特性即ち瞬時平均数1060を形成する。瞬時平均値は、プロファイルレジスタ300に捕獲されるか、或いは特殊な命令で読み取り可能なプロセッサレジスタ又はソフトウェアで読み取り可能なメモリ位置に記憶される。
【0089】
サンプルされた命令がリタイアした命令であるときには、コンピュータにより行われた実際の「真」の有効作業を計算することができる。これは、相対的なプロセッサ性能を指示するためにしばしば引用される「生」の命令フェッチレートよりも良好な指示である。例えば、特定のアーキテクチャーは、大きなフェッチレートをもつことができるが、パイプラインにおけるストールが性能を低下することがある。
標準的なSPECベンチマークソフトウェアを実行するプロセッサでの実験では、統計学的に収集されたサンプルをベースとするメトリックは、低いオーバーヘッドの完全な情報で得られた値に収斂することが示されている。
【0090】
経路プロファイル
命令のクラスターをプロファイリングする付加的な効果は、経路プロファイルが得られることである。経路プロファイルは、多数のコンパイラー最適化及びトレーススケジューリングに有用である。
更に、最近の分岐実行経過と共にプログラムの実行経路に沿った多数のポイントを制限することにより、経路プロファイルが明確化される。この明確化は、N個ごとのサンプリングとで改善され、即ちNが増加するにつれて、明確化が改善される。著しく実行されるコードの場合には、同時プログラムが、全ての実行命令に対しパイプライン200の各段において命令の相対的な実行順序を示すことができる。従って、ここでは、オペレーティングシステムにおける実行パイプライン200の実際のオペレーションを統計学的に再構成することができる。
【0091】
ランダムにサンプルされるプロファイル情報の他のアプリケーション
マイクロプロセッサの最新の世代は、考えられる最高の性能を与えるためにコンピュータアーキテクチャーが許す全ての策略を利用する。これらのマイクロプロセッサは、サイクル当たり多数の命令をフェッチし、イッシューしそしてコミットする。更に、これらのプロセッサは、命令を順序ずれして実行する。それらのあるものは、メモリオペレーションも順序ずれして実行する。
不都合なことに、プロセッサにより使用される多数の発見的メカニズムが命令及びメモリオペレーションを順序ずれしてイッシューするので、性能特性がかなり変化し得る。1つの効果として、ここに述べるプロファイリング技術は、システム100の性能を自動的に改善できるように、システムがプログラムの性能を充分詳細に測定できるようにすることである。
【0092】
最適化
又、本発明のプロファイリング技術は、システム100の最適化を実行するのにも使用できる。以下の説明は、プログラマー及びコンパイラーで指令されるソフトウェアプログラムの最適化を手引きするよう意図されたものである。
【0093】
ハードウェアの最適化
アウトオブオーダーのスーパースカラーマイクロプロセッサは、データ及びリソースの利用状態に基づいて命令をスケジューリングし直すので、コンパイル−時間命令スケジューリングは、構造的に簡単なプロセッサの場合よりも重要性がかなり低い。ここでは、主なボトルネックは、命令フェッチ及びメモリオペレーションによるものである。
より詳細には、分岐又はジャンプ予想ミス、オンチップキャッシュミス、及びTLB欠陥によりプロセッサパイプライン200においてサイクルが失われる。これらは、静的に推測することが不可能でないまでも困難な状態である。又、高レベルオフチップオペレーションにおける遅延に対しても、キャッシュミス、リソーストラップ及び順序づけトラップのために、サイクルが失われる。失われたサイクルは、時間を浪費する。
従来の事象カウンタでは、これらの性能低下事象の合計数を測定することはできるが、失われたサイクルをプログラムの特定の命令に起因させることは不可能ではないまでも非常に困難である。ここに述べるプロファイリング技術は、ユーザが主な性能問題を測定して、それら問題を特定の命令に相関させることができるようにする。
【0094】
フロントエンド最適化
性能の助けとなる1つのフロントエンド最適化は、基本的ブロックにおいて命令をそして手順において基本的ブロックを順序付けし直すことである。基本的ブロックとは、1つの単位として直線的に実行されるか又は全く実行されない命令のセットとして定義される。手順とは、一般に、コール命令を経て到達する基本的ブロックの凝集セットである。手順は、多数の基本的ブロックを含むことができる。基本的ブロックにおいて命令をそして手順において基本的ブロックを順序付けし直すことは、ページ及びキャッシュの一時的な位置を最適化すると共に、分岐の数を減少するように実行流及びデータアクセスを変更できるようにする。分岐は、実行流しか再指令せずそしてデータにおいて有効に作用しないので、サイクルを浪費する。この最適化は、入力として、制御流グラフエッジ周波数を知る必要がある。
【0095】
トレースの形成
同様に、命令のスケジューリングを追跡するために、コンパイラーは、制御流グラフのエッジ又は経路周波数を必要とする。トレーススケジューラは、各基本的ブロック又はより大きな実行経路を実行するのにどれほどの時間を要するかの推定値を有するときは非常の良好なジョブを行うことができる。アルタ・ビスタサーチエンジンのような大規模な動作システムの場合には、これを従来のツールでリアルタイムに測定することが困難である。
【0096】
ホット/コールド最適化及び経路情報
トレーススケジューリング及びホット/コールド最適化のような多数のコンパイラー最適化は、プログラムによりどの実行経路が頻繁にとられるかを知ることに依存している。これらは「ホット」経路と称する。最近まで、計装又は模擬のいずれかによりプログラムをプロファイリングすることにより、頻繁に実行される経路が推測されて、基本的なブロック又はエッジカウントが収集され、そしてこれらのカウントを用いて、ホット及びコールド経路が間接的に推測される。
最近、経路情報を直接収集するための技術が使用されている。これらの技術は正確な経路情報を与えるが、非常に高いオーバーヘッドをもつ傾向があり、アクティブな大規模コンピュータシステムを測定するには不適当である。本発明のプロファイリングでは、経路情報を最小のオーバーヘッドでランダムに捕獲することができ、そして実際の実行流の統計学的に正しい概観を依然として表すことができる。
【0097】
分岐経過レジスタ
ほとんどの近代的なマイクロプロセッサは、グローバルな分岐経過レジスタにおいて最後のN個の分岐の方向を追跡する。分岐経過レジスタは、移動ウインドウとして、最近の分岐予想を観察し、そしてそれに応じて将来の命令フェッチに作用を及ぼすことができる。命令のPCがサンプリングされると共に、このレジスタの内容を命令フェッチ時間に捕獲することにより、時には、制御流グラフの静的な分析を使用して、プロセッサがとらねばならない最後のN個の分岐により厳密な経路を仮定することができる。
【0098】
しかしながら、従来の経過レジスタは、通常、分岐の方向しか含まず、実際のターゲット行先を含まないので、情報が不正確なものとなる。特に、制御流の合流は、実際にとられた経路を識別する上であいまいさを招く。
又、分岐コードの実行を生じさせる非同期事象、例えば、割り込み又はコンテクストスイッチは、分岐経過ビットを汚染することがある。しかしながら、これらの事象は、比較的稀であり、そしてオペレーティングシステムにおけるそれらの発生は、コードにわたってランダムに分布されねばならない。頻度の高い経路を識別するのが目的であるから、予想不能な非同期事象により発生される「ノイズ性」の分岐経過ビットにより生じるものを含む頻度の低い経路を無視することができる。
【0099】
図11に示す命令シーケンスについて考える。PCアドレスA−E(1101−1105)に命令がある。アドレスA及びCにおける命令1101及び1103は、分岐型の命令である。EのPCをもつ命令1105があって、グローバルな分岐経過における最後のビットが1である場合には、CDEで終わるいかなる経路も除外することができる。というのは、このような経路の最後の分岐が失敗に終わり、それ故、グローバルな分岐経過に対応しないからである。しかしながら、ポイントEにおける異なる制御経路の合体により、実行された真の経路がAE(1110)又はABCE(1111)であったときを決定することができない。
【0100】
制御流グラフの合流によるあいまいさ
図12は、サンプリングされたPC値を入力として使用して、プログラム流の静的な分析を実行することのできるプロセス1200を示す。選択された命令の経路サンプルがステップ1210において上記のように捕獲される。マシンへの影響を最小にするために、サンプリングされた命令はランダムに選択されるのが好ましい。各「経路」サンプル1220は、サンプリングされた第1命令I1のPC1と、命令I1までの最後のN個の条件付き分岐によりとられる方向(BRANCH HIST)とを含む。
任意であるが、サンプリングされた情報は、第1命令の直前に実行される第2命令(I2)のPC2で増強することもできるし、或いは最後のM個の分岐のPC値に適用されるあるファンクション、例えば、ある数の下位ビット又はハッシュ関数を用いて決定されたビットを選択するファンクションに基づいて選択された情報で増強することもできる。
ステップ1240において、経路サンプルを使用して、プログラムの制御流グラフの逆方向分析を実行する。この分析は、サンプリングされたデータに一致する実行経路を識別することができ(1250)、そしてこの情報を収集して、最適化から更に効果が得られる頻繁に実行される経路を識別することができる(1260)。
【0101】
例えば、図11を参照すれば、命令Eにおいて、1の分岐経過長さが与えられると、経過ビット「1」により、ソフトウェアツールは、経路セグメントAE1110及びABCE(1101−1105)を考えられる経路として識別することができる。分岐経過ビットの値が与えられたときに、静的な分析が、可能性として、単一経路セグメントしか識別できないときに、考えられる最良の成果が得られる。
又、プロセスの最近の実行経過に関する他の情報も、特定の命令に到達するためにとられた実行経路を識別する上で助けとなる。有効な情報の1つの断片は、最近実行された命令の第2のPC値の知識である。おそらくN個ごとのサンプリングと共に多数のPC値を使用することにより、N個ごとにサンプリングされた全てのPCSを含まない経路を除外することができる。
【0102】
所与のクラスの最後のM個の命令のサンプリング
図13に示す別の技術においては、ハードウェアは、パイプラインの任意の選択された段、例えばリタイアユニットで処理された最後のM個の命令の各々から少数のビット(B)を捕獲することができる。Bビット1303は、PCの下位のBビットでもよいし、或いはBビットは、PC1304に適用されるハードウェア実施ファンクションF1310を使用して選択することもでき、即ちB←F(PC)である。ファンクション1310がハッシュ関数である場合には、分岐アドレスの非均一な分布が回避される。
命令のクラスは、例えば、条件分岐、コール、リターン、アクセス(ロード又は記憶)命令、間接的分岐、及び間接的コール1321−1326として識別することができる。クラスは、比較器又はマルチプレクサのような選択メカニズム1320によりライン1321を経て選択することができる。又、クラスは、パイプラインの段、例えば、フェッチ、マップ又はリタイア等により識別することもできる。クラスID1319は、ソフトウェアにより制御される。
【0103】
選択されたビットは、MxBビット巾のシフトレジスタ1300に記憶することができる。このレジスタは、ソフトウェアの内部レジスタとして或いはメモリ位置として図5のPSW520へアクセスすることができる。識別されたクラスの命令1321−3124が処理されるときには、シフトレジスタ1300は、その上位のBビット1302を破棄するようにシフトされる。命令のPC1304の選択されたBビット1303は、空きビット1305へとシフトされる。従って、レジスタ1300は、これら形式の命令に対し指紋即ち「経路符号」として働く。レジスタ1300は、例えば、実行された最新のM個の分岐を制限する助けをする。というのは、現在経路符号に一致しない経路は、考慮対象から排除できるからである。分岐命令1321に対し、図2の分岐実行指示287を使用して、サンプリングをトリガーすることができる。
【0104】
経路符号により得られる精度の改善は、相当のものとなり、例えば、B=4、M=6のように、最後の6個の分岐から4つのビットを節約するだけでも、標準的なSpecInt95ベンチマークプログラムに対する実行経路を決定する精度が2倍になる。
経路符号及びグローバルな分岐経過を使用すると、トレースを次のように分析することができる。
トレースにおいて実行される各命令に対し、次のいずれかに達するまで経路セグメントを決定するように逆方向に進行する。
a)グローバルな分岐経過ビットが尽きる、又は
b)命令を含むルーチンの開始点に到達する。
制御流グラフの逆方向進行中に手順のコール命令に遭遇したときには、コールされた手順を通して逆方向に進行し、そして最終的に、そのコールされた全ルーチンを通して逆方向に作用するに充分な分岐経過があるときに、コール側手順に復帰する。従って、実行流のより正確な概観が与えられる。
【0105】
キャッシュ及びTLBヒットレートの増強
キャッシュ又は変換ルックアサイドバッファ(TLB)における高いミスレートは、システムの性能を著しく低下する。図2は、命令をフェッチするためにIキャッシュと共に動作するよう接続されたTLB220を示しているが、TLBは、命令実行中にデータをフェッチするようにDキャッシュ201と共に使用することもできる点に注意されたい。公知の解決策は、一般に、キャッシュミスアドレスを収集する特殊なハードウェア又は特殊なソフトウェア機構、例えば、TLBを周期的にフラッシュするものに依存している。観察されたミスパターンは、頻繁にアクセスされるページ即ち「ホット」ページのおおよその理解を与え、これは、仮想/物理ページマッピングポリシーに影響するように使用することができる。しかしながら、完全な分析を行うのに必要なアドレス情報は、事象が検出されるときまでに得られない。
【0106】
図14は、より正確な仮想/物理ページマッピングを実行するのに使用できるプロセス1400を示す。ステップ1410では、マッピングされるべきコードがシステムにおいて実行される。ステップ1420では、メモリをアクセスするオペレーション(ロード及び記憶)がサンプリングのために選択される。
命令が実行される間に、有効な仮想メモリアドレスが、ステップ1430において、キャッシュ及びTLBミスと共に識別され、従って、1つの効果として、事象及びアドレスを特定の命令に直接的に起因させることができる。同様に、ステップ1440において、高いアクセスレートで隣接ページを識別することができる。ステップ1450では、キャッシュ及びTLBにおけるアクセス競合を減少するために、仮想/物理ページマッピングを調整することができる。ステップ1460では、隣接ページを大きな「スーパーページ」へと合成し、ページングオーバーヘッドを減少することができる。
【0107】
キャッシュ又はTLBにおいて捕獲され損なったメモリ参照の仮想アドレスは特定の命令に直接的に起因させて、ページマッピングポリシーを誘導するに必要な情報の形式を厳密に与えることができる。アプリケーションのメモリ参照流に関する情報を使用して、オペレーティングシステムの仮想/物理マッピングポリシーを動的に制御すると、大きな直接マップ式キャッシュにおける競合ミスを首尾良く回避し、スーパーページの形成によるTLBミスレートを低減し、そしてページの複写及び移動による非均一メモリアクセス時間(NUMA)マルチプロセッサにおける遠隔メモリ参照の数を減少することができる。
【0108】
改良された命令スケジューリング
コード最適化の間に行われる1つの重要なタスクは、理想的な命令スケジューリングである。理想的な命令スケジューリングは、メモリ待ち時間による遅延を最小にするようにコードを順序付けし直す。基本的なブロックにおける隣接命令の静的な順序付けは、前世代のインオーダー型RISCプロセッサの場合よりも重要性が低いが、巨視的な命令スケジューリングは、アウトオブオーダー型プロセッサにおいて非常に重要である。
命令スケジューリングについての1つの非常に困難なものは、ロード及び記憶のスケジューリングである。これは、静的なスケジューラが、メモリアクセス命令を最適にスケジュールできるようにする厳密な依存性情報を常に有していないからである。加えて、メモリアクセス命令の待ち時間を厳密に予想することが困難である。命令スケジューラは、通常、メモリアクセスに関する正確な情報が不充分であるから、一般に、Dキャッシュヒットを仮定してロード及び記憶をスケジュールする。或いは又、バランス型スケジューリングは、ロード当たり等しい量の待ち時間を含むスケジュールを発生するよう試みる。これは、ロード/記憶オペレーションがキャッシュにおいて常にヒットすると常時仮定することに勝る改良である。
【0109】
マルチスレッド型プロセッサにおけるスレッドのスケジューリング
マルチスレッド型プロセッサにおいては、上記プロファイリング方法を用いて得たスレッドのリソース利用に関する情報を使用して、全体的なリソース利用度及びスループットを最大にするようにスレッドをスケジューリングすることができる。
2つのスレッドがリソースの相補的な使い方を有し、例えば、一方のスレッドが主として整数演算ユニットを使用するが、他方のユニットは主として浮動小数点演算ユニットを使用する場合には、2つのスレッドが異なる機能的実行ユニットを使用するので、2つのスレッドを同時に動作するようにスケジューリングすることができる。同様に、2つのスレッドが競合するリソース使用を有し、例えば、両スレッドが浮動小数点演算ユニットを頻繁に使用する場合には、それらを異なる時間に動作するようにスケジューリングすることができる。
【0110】
図14bは、プロセッサの利用度によりスレッドをスケジューリングするためのプロセスを示す。オペレーティングシステムにおいて実行されるスレッドのリソース利用度がステップ1470において測定される。ステップ1475では、リソースの利用度が収集され、そしてそのリソース利用度に基づいてスレッドがセットへと分類される。本発明のサンプリングでは、各スレッドが、プロセッサにおける各クラスのリソース、例えば、整数演算ユニット、浮動小数点演算ユニット、メモリユニット、分岐ユニット、イッシューユニット等々をいかに使用するかを決定することができる。
ステップ1480では、スレッドのリソース利用度を比較して、非競合実行スケジュールを決定する。所与のクラスのリソースに対する1組のスレッドの合成利用度により、そのクラスのリソースが完全利用状態より著しく多く利用されている場合には、その組のスレッドを一緒にスケジューリングしてはならず(ステップ1490)、逆に、合成利用度により、そのクラスのリソースが完全利用状態以下で利用されるか或いは完全利用状態より若干多めに利用される場合には、それらを一緒にスケジューリングするのが有益である(ステップ1485)。
【0111】
図15は、命令のスケジューリングを実行するのに使用できるプロセス1500を示す。マシンコード1510は、図1のシステム100で実行される。コードが実行される間に、メモリオペレーション命令の待ち時間がステップ1520において上記のように測定される。多数の命令、例えば、命令対に対する測定値をステップ1530においてサンプリングすることができる。サンプリングは、オーバーヘッドを減少するためにランダムに行うことができる。同じPCをもつ命令に対してサンプリングされたデータは、ステップ1540において収集されて、例えば、待ち時間のヒストグラム(HIST)1541が形成される。ステップ1560では、マシンコードが順序付けし直される。この再順序付けは、収集されたヒストグラム情報1541に基づく。例えば、長い待ち時間をもつメモリオペレーションは、それらに依存するオペレーションからできるだけ離れるように進められる。ステップ1560は、リスト又はトレーススケジューリングを使用できる。例えば、長い待ち時間をもつメモリオペレーションは、それらに依存するオペレーションからできるだけ離れるように進められる。ステップ1560は、リストスケジューリング又はトレーススケジューリングのようなスケジューリングアルゴリズムを使用することができる。
ランダムサンプリングによりロード及び記憶待ち時間を収集する場合には、各命令を待ち時間のヒストグラムに基づいてスケジューリングすることができる。本発明の技術は、全キャッシュシュミレーションの経費を被ることなく待ち時間情報を収集することにより最適化を導出するように使用できる。
【0112】
プリフェッチ命令の挿入
図16は、測定された待ち時間に基づいてプリフェッチ命令を挿入するためのプロセスを示す。プリフェッチ命令の挿入は、メモリから返送されるべきデータを待機することにより生じるプロセッサストールを隠す上で助けとなる技術である。データが実際に必要とされる充分前にメモリシステムに要求を発生し、そして時々はデータが必要になると決定される直前にデータを要求することにより、コンパイラー及びオプチマイザーは、メモリからデータをフェッチするための待ち時間のほとんど又は全部をしばしば隠すことができる。
【0113】
しかしながら、性能を実際に改善するためには、著しい待ち時間を実際に経験するメモリオペレーションに対してのみプリフェッチ命令を挿入することが望ましく、即ち長い待ち時間を実際に被らないメモリオペレーションにプリフェッチ命令を挿入すると、付加的なプリフェッチ命令を実行しなければならないためにプログラムが実際上低速化されてしまう。メモリオペレーション、特に、プリフェッチから利益を得るロードオペレーションを識別するために、プログラム内の種々のメモリオペレーションにより経験する平均待ち時間に関する統計学的データを収集することが所望される。
その一般的な構成が図16に示されている。ステップ1610では、プログラム内のメモリオペレーションに対するメモリオペレーション待ち時間が測定される。ステップ1620では、同じプログラムカウンタ(PC)値をもつ命令に対しサンプリングされたメモリオペレーション情報が収集される。ステップ1630では、プリフェッチを挿入すべき大きなメモリ待ち時間をもつメモリオペレーションのサブセットが識別される。
【0114】
ステップ1640では、実行頻度情報及び測定された待ち時間情報に基づき、これらのメモリオペレーションに対してプリフェッチ命令を挿入するのに有益な位置が識別される。ステップ1650では、その適当な位置にプリフェッチ命令が挿入される。
待ち時間は、上記のように測定することができる。1つの方法は、サンプリングハードウェアでメモリオペレーションの待ち時間を直接測定することである。別の方法は、ロード命令が対の第1サンプルでありそしてロードからのデータの使用が対の第2サンプルであるである場合に、対構成でサンプリングを行いそして対を探索することによるものである。2つのサンプルにおいて待ち時間情報を探し、そして特に2つのサンプルのイッシュー時間の差を探すことにより、ロードオペレーションに対するメモリシステム待ち時間を推定することができる。
【0115】
以上、特定の実施形態について詳細に説明した。当業者であれば、上記実施形態を変更しても、幾つかの又は全ての効果が達成されることが明らかであろう。それ故、本発明の精神及び範囲内に包含されるこのような修正や変更は全て請求の範囲内に含まれるものとする。
【図面の簡単な説明】
【図1】命令駆動状態サンプリングを伴うコンピュータシステムのブロック図である。
【図2a】サンプリングされた命令を処理するためのマイクロプロセッサ実行パイプラインのブロック図である。
【図2b】サンプリングすることのできる状態情報を示すパイプラインのブロック図である。
【図3】プロファイル情報を記憶するためのレジスタファイルのブロック図である。
【図4】増強された命令のブロック図である。
【図5】選択された命令をプロファイリングするための流れ線図である。
【図6】パイプライン待ち時間を測定するための回路を示す回路図である。
【図7】プロセスの流れ線図である。
【図7a】命令をサンプリングするプロセスの流れ線図である。
【図7b】プロセッサパイプラインにより処理される命令の特性の統計値を推定するためのプロセスを示す流れ線図である。
【図8a】サンプリングウインドウを伴うフェッチされた命令のシーケンスを示す。
【図8b】フェッチされた命令のフェッチ距離及び時間的な重畳を示す図である。
【図8c】フェッチされた命令のフェッチ距離及び時間的な重畳を示す図である。
【図9】費やされる発生スロットを決定するプロセスを示す流れ線図である。
【図10】プロセッササイクル中に処理される命令の平均数を決定するための装置のブロック図である。
【図11】命令シーケンスの制御の流れを示すグラフである。
【図12】制御流を識別するプロセスのデータの流れを示す図である。
【図13】分岐経過を収集する装置のブロック図である。
【図14a】ページマッピングプロセスの流れ線図である。
【図14b】スレッドスケジューリングプロセスの流れ線図である。
【図15】メモリ待ち時間の影響を受ける命令スケジューラの流れ線図である。
【図16】プリフェッチ命令を挿入するためのプロセッサの流れ線図である。
【符号の説明】
100 コンピュータシステム
110 プロセッサ
111 パイプライン
112 データキャッシュ(Dキャッシュ)
113 命令キャッシュ(Iキャッシュ)
119 プロセッサ状態をサンプリングするハードウェア
120 オフチップメモリ
121 汎用キャッシュ
122 揮発性メモリ
123 永続的メモリ
130 入力/出力インターフェイス(I/O)
140 バスライン
200 実行パイプライン
205 変換ルックアサイドバッファ(TLB)
210 フェッチユニット
220 マップユニット
230 イッシューユニット
240 実行ユニット
250 リタイアユニット
Claims (25)
- システムのプロセッサパイプライン(200)において命令をサンプリングする装置であって、
複数の処理段を有するパイプラインの第1段へ命令をフェッチする手段(210)を備え、命令は、それらがサンプリングのため選択されたことを指示している付加的なフイールドによりランダムに認識され、付加的なフイールドはパイプラインにおける命令毎にサンプルビット(401)を含んでおり;
前記のフェッチした命令のいずれか1つを選択された命令として識別する手段を備え; 特定の選択された命令がパイプラインのいずれかの段にある間に前記のシステムの状態情報をサンプリングする手段を備え;
前記状態情報を記憶する手段(300)を備え;
特定の選択された命令がパイプライン(200)を出るときにソフトウェアに通知し、ソフトウェアがいずれかの状態情報を読み取れるようにする手段を備え、前記のサンプリングする手段と前記のソフトウエアに通知する手段とは前記の選択された命令におけるサンプルビット(401)のアサートにより、使用中に起動され、
前記付加的なフイールドが命令の番号を蓄積し、そして前記装置が付加的なフイールドを蓄積する比較レジスタ(300)を更に含んでいることを特徴とする装置(100)。 - 前記の選択された命令は、パイプライン(200)により完全に処理される有効命令と、パイプラインを出る前にアボートされる有効命令と、パイプラインを出る前に部分的に処理される無効命令とを含む請求項1に記載の装置(100)。
- 前記の選択された命令は、割り込み不能な命令を含むことができる請求項1に記載の装置(100)。
- 前記の複数の段は、フェッチ(210)、マップ(220)、イッシュー(230)、実行(240)及びリタイア(250)段を含む請求項1から3のいずれか1項に記載の装置(100)。
- サンプリングコンピュータ(510)と;
このサンプリングコンピュータ(510)を特定の値に初期化する手段(520)と; 前記のサンプリングカウンタ(510)が特定の事象に応答してオーバーフローするときに前記の識別する手段をアクチベートするための手段と
を更に備えた請求項1から4のいずれか1項に記載の装置(100)。 - 特定の事象は有効なフェッチされた命令である請求項5に記載の装置(100)。
- フェッチレートはクロックにより決定され、そして前記の特定の事象は、単一の潜在的にフェッチされる命令に対応するクロックサイクルの小区分である請求項5に記載の装置。
- 前記の特定の事象はパイプライン(200)のいずれかの段への命令の導入である請求項5に記載の装置(100)。
- 前記の特定の値はサンプリングの平均頻度数を表すため間隔の数からランダムに選択される請求項5に記載の装置(100)。
- 前記の間隔の数のサイズはサンプリングの平均頻度数を動的に変えるよう変えられる請求項9に記載の装置(100)。
- 前記のランダムな数はソフトウェアで決定される請求項9に記載の装置(100)。
- 前記のランダムな数はハードウェアで発生される請求項9に記載の装置(100)。
- 前記の状態情報は選択された命令の識別情報を含む請求項1から9のいずれか1項に記載の装置(100)。
- 前記の識別情報は選択された命令のアドレスを含む請求項13に記載の装置(100)。
- 前記の識別情報は選択された情報を実行するプロセスの認識を含む請求項13に記載の装置(100)。
- 前記の識別情報はアドレススペース番号を含む請求項13に記載の装置(100)。
- 前記の識別情報はハードウェアコンテクスト識別子を含む請求項13に記載の装置(100)。
- 前記のソフトウェアに通知する手段は、特定の選択された命令がパイプラインを出るときに割り込みを発生する請求項1から17のいずれか1項に記載の装置(100)。
- 前記のソフトウエアに通知する手段はソフトウエアによりポーリングできるフラッグをセットして特定の選択された命令がパイプラインを出たことを決定する請求項1から17のいずれか1項に記載の装置(100)。
- 選択された命令のサブセットがサンプルされる請求項1から19のいずれか1項に記載の装置(100)。
- 状態情報がスレッド識別子を含む請求項1から20のいずれか1項に記載の装置(100)。
- 状態情報が選択された命令のリタイア/アボート状態を含む請求項1から19のいずれか1項に記載の装置(100)。
- 状態情報は選択された命令を処理する間に検出される事象を含む請求項1から19のいずれか1項に記載の装置(100)。
- 状態情報が選択された命令が経験する待ち時間を含む請求項1から19のいずれか1項に記載の装置(100)。
- 請求項1から24のいずれか1項に記載の装置を含むコンピュータシステム(100)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/980190 | 1997-11-26 | ||
US08/980,190 US6000044A (en) | 1997-11-26 | 1997-11-26 | Apparatus for randomly sampling instructions in a processor pipeline |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11272515A JPH11272515A (ja) | 1999-10-08 |
JP4467093B2 true JP4467093B2 (ja) | 2010-05-26 |
Family
ID=25527399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP37553698A Expired - Fee Related JP4467093B2 (ja) | 1997-11-26 | 1998-11-26 | プロセッサパイプラインにおいて命令をランダムにサンプリングする装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6000044A (ja) |
EP (1) | EP0919918B1 (ja) |
JP (1) | JP4467093B2 (ja) |
DE (1) | DE69819849T2 (ja) |
Families Citing this family (108)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352400B2 (en) | 1991-12-23 | 2013-01-08 | Hoffberg Steven M | Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore |
US5362442A (en) | 1993-07-22 | 1994-11-08 | 2920913 Canada Inc. | Method for sterilizing products with gamma radiation |
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 |
US6374367B1 (en) | 1997-11-26 | 2002-04-16 | Compaq Computer Corporation | Apparatus and method for monitoring a computer system to guide optimization |
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 |
US6549930B1 (en) | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
US6175814B1 (en) * | 1997-11-26 | 2001-01-16 | Compaq Computer Corporation | Apparatus for determining the instantaneous average number of instructions processed |
US6332178B1 (en) | 1997-11-26 | 2001-12-18 | Compaq Computer Corporation | Method for estimating statistics of properties of memory system transactions |
US6442585B1 (en) | 1997-11-26 | 2002-08-27 | Compaq Computer Corporation | Method for scheduling contexts based on statistics of memory system interactions in a computer system |
US6163840A (en) * | 1997-11-26 | 2000-12-19 | Compaq Computer Corporation | Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline |
KR19990049284A (ko) * | 1997-12-12 | 1999-07-05 | 구본준 | 데이터 프로그램 장치 |
US6233531B1 (en) * | 1997-12-19 | 2001-05-15 | Advanced Micro Devices, Inc. | Apparatus and method for monitoring the performance of a microprocessor |
US6052802A (en) * | 1997-12-31 | 2000-04-18 | Intel Corporation | Apparatus and method for cycle accounting in microprocessors |
US6353805B1 (en) | 1997-12-31 | 2002-03-05 | Intel Corporation | Apparatus and method for cycle accounting in microprocessors |
US6314493B1 (en) * | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
US6347362B1 (en) * | 1998-12-29 | 2002-02-12 | Intel Corporation | Flexible event monitoring counters in multi-node processor systems and process of operating the same |
US6360337B1 (en) | 1999-01-27 | 2002-03-19 | Sun Microsystems, Inc. | System and method to perform histogrammic counting for performance evaluation |
US7966078B2 (en) | 1999-02-01 | 2011-06-21 | Steven Hoffberg | Network media appliance system and method |
US6415378B1 (en) * | 1999-06-30 | 2002-07-02 | International Business Machines Corporation | Method and system for tracking the progress of an instruction in an out-of-order processor |
US6437783B1 (en) * | 1999-09-13 | 2002-08-20 | Intel Corporation | Method and system for simultaneously displaying the throughput on multiple busses |
US6961930B1 (en) | 1999-09-22 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Efficient, transparent and flexible latency sampling |
US6754848B1 (en) * | 1999-09-30 | 2004-06-22 | International Business Machines Corporation | Method, system and program products for operationally migrating a cluster through emulation |
US6748589B1 (en) | 1999-10-20 | 2004-06-08 | Transmeta Corporation | Method for increasing the speed of speculative execution |
US6725363B1 (en) * | 2000-07-31 | 2004-04-20 | Sun Microsystems, Inc. | Method for filtering instructions to get more precise event counts |
US6633960B1 (en) | 2000-08-31 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Scalable directory based cache coherence protocol |
US6738836B1 (en) | 2000-08-31 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Scalable efficient I/O port protocol |
US7099913B1 (en) | 2000-08-31 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Speculative directory writes in a directory based cache coherent nonuniform memory access protocol |
US6636955B1 (en) | 2000-08-31 | 2003-10-21 | Hewlett-Packard Development Company, L.P. | Mechanism for synchronizing multiple skewed source-synchronous data channels with automatic initialization feature |
US6754739B1 (en) | 2000-08-31 | 2004-06-22 | Hewlett-Packard Development Company | Computer resource management and allocation system |
US6546453B1 (en) | 2000-08-31 | 2003-04-08 | Compaq Information Technologies Group, L.P. | Proprammable DRAM address mapping mechanism |
US7213087B1 (en) | 2000-08-31 | 2007-05-01 | Hewlett-Packard Development Company, L.P. | Mechanism to control the allocation of an N-source shared buffer |
US6567900B1 (en) | 2000-08-31 | 2003-05-20 | Hewlett-Packard Development Company, L.P. | Efficient address interleaving with simultaneous multiple locality options |
US6662319B1 (en) | 2000-08-31 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Special encoding of known bad data |
US6546465B1 (en) | 2000-08-31 | 2003-04-08 | Hewlett-Packard Development Company, L.P. | Chaining directory reads and writes to reduce DRAM bandwidth in a directory based CC-NUMA protocol |
US6715057B1 (en) | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
US6704817B1 (en) * | 2000-08-31 | 2004-03-09 | Hewlett-Packard Development Company, L.P. | Computer architecture and system for efficient management of bi-directional bus |
US6751721B1 (en) | 2000-08-31 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Broadcast invalidate scheme |
US6678840B1 (en) * | 2000-08-31 | 2004-01-13 | Hewlett-Packard Development Company, Lp. | Fault containment and error recovery in a scalable multiprocessor |
US6961781B1 (en) | 2000-08-31 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Priority rules for reducing network message routing latency |
US6671822B1 (en) | 2000-08-31 | 2003-12-30 | Hewlett-Packard Development Company, L.P. | Method and system for absorbing defects in high performance microprocessor with a large n-way set associative cache |
US6681295B1 (en) | 2000-08-31 | 2004-01-20 | Hewlett-Packard Development Company, L.P. | Fast lane prefetching |
US6662265B1 (en) | 2000-08-31 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Mechanism to track all open pages in a DRAM memory system |
US6668335B1 (en) | 2000-08-31 | 2003-12-23 | Hewlett-Packard Company, L.P. | System for recovering data in a multiprocessor system comprising a conduction path for each bit between processors where the paths are grouped into separate bundles and routed along different paths |
US6779142B1 (en) | 2000-08-31 | 2004-08-17 | Hewlett-Packard Development Company, L.P. | Apparatus and method for interfacing a high speed scan-path with slow-speed test equipment |
US6622225B1 (en) | 2000-08-31 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | System for minimizing memory bank conflicts in a computer system |
US6654858B1 (en) | 2000-08-31 | 2003-11-25 | Hewlett-Packard Development Company, L.P. | Method for reducing directory writes and latency in a high performance, directory-based, coherency protocol |
US8458754B2 (en) | 2001-01-22 | 2013-06-04 | Sony Computer Entertainment Inc. | Method and system for providing instant start multimedia content |
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 |
US7320065B2 (en) | 2001-04-26 | 2008-01-15 | Eleven Engineering Incorporated | Multithread embedded processor with input/output capability |
US6696060B2 (en) | 2001-06-14 | 2004-02-24 | Clearant, Inc. | Methods for sterilizing preparations of monoclonal immunoglobulins |
US6742179B2 (en) * | 2001-07-12 | 2004-05-25 | International Business Machines Corporation | Restructuring of executable computer code and large data sets |
US6946098B2 (en) | 2001-08-10 | 2005-09-20 | Clearant, Inc. | Methods for sterilizing biological materials |
US6749851B2 (en) | 2001-08-31 | 2004-06-15 | Clearant, Inc. | Methods for sterilizing preparations of digestive enzymes |
US7252799B2 (en) | 2001-08-31 | 2007-08-07 | Clearant, Inc. | Methods for sterilizing preparations containing albumin |
US20030095890A1 (en) | 2001-09-24 | 2003-05-22 | Shirley Miekka | Methods for sterilizing biological materials containing non-aqueous solvents |
US20030101336A1 (en) * | 2001-11-28 | 2003-05-29 | Sun Microsystems, Inc. | Technique for associating instructions with execution events |
US7096390B2 (en) | 2002-04-01 | 2006-08-22 | Sun Microsystems, Inc. | Sampling mechanism including instruction filtering |
US20040003148A1 (en) * | 2002-06-28 | 2004-01-01 | Sun Microsystems, Inc., A Delaware Corporation | Buffer management for real time systems management controller |
US7210072B2 (en) * | 2002-12-17 | 2007-04-24 | Texas Instruments Incorporated | Apparatus and method for trace stream identification of a pipeline flattener primary code flush following initiation of an interrupt service routine |
DE602004010098T3 (de) | 2003-05-06 | 2014-09-04 | Apple Inc. | Verfahren zur änderung von einer nachrichtspeicherungs und weiterleitungsnetzwerkssystem und datenbenachrichtigungssystem |
US20050183065A1 (en) * | 2004-02-13 | 2005-08-18 | Wolczko Mario I. | Performance counters in a multi-threaded processor |
US8826241B2 (en) * | 2004-02-16 | 2014-09-02 | Oracle America, Inc. | Instruction sampling in a multi-threaded processor |
US20050188186A1 (en) * | 2004-02-23 | 2005-08-25 | Wolczko Mario I. | Obtaining execution path information in an instruction sampling system |
US7735073B1 (en) | 2004-02-28 | 2010-06-08 | Oracle International Corporation | Method and apparatus for data object profiling |
US8065665B1 (en) * | 2004-02-28 | 2011-11-22 | Oracle America, Inc. | Method and apparatus for correlating profile data |
US7827543B1 (en) | 2004-02-28 | 2010-11-02 | Oracle America, Inc. | Method and apparatus for profiling data addresses |
US20050198555A1 (en) * | 2004-03-03 | 2005-09-08 | Wolczko Mario I. | Incorporating instruction reissue in an instruction sampling mechanism |
US20050204346A1 (en) * | 2004-03-09 | 2005-09-15 | Intel Corporation | Using sampling data for program phase detection |
US7707554B1 (en) | 2004-04-21 | 2010-04-27 | Oracle America, Inc. | Associating data source information with runtime events |
EP1835455A1 (en) * | 2005-01-05 | 2007-09-19 | Musicstrands, S.A.U. | System and method for recommending multimedia elements |
US7693887B2 (en) * | 2005-02-01 | 2010-04-06 | Strands, Inc. | Dynamic identification of a new set of media items responsive to an input mediaset |
US7734569B2 (en) | 2005-02-03 | 2010-06-08 | Strands, Inc. | Recommender system for identifying a new set of media items responsive to an input set of media items and knowledge base metrics |
WO2006084269A2 (en) | 2005-02-04 | 2006-08-10 | Musicstrands, Inc. | System for browsing through a music catalog using correlation metrics of a knowledge base of mediasets |
WO2006114451A1 (es) * | 2005-04-22 | 2006-11-02 | Musicstrands, S.A.U. | Sistema y método para adquirir y agregar datos sobre la reproducción de elementos o ficheros multimedia |
US7774758B2 (en) * | 2005-05-16 | 2010-08-10 | Texas Instruments Incorporated | Systems and methods for secure debugging and profiling of a computer system |
US20090070267A9 (en) * | 2005-09-30 | 2009-03-12 | Musicstrands, Inc. | User programmed media delivery service |
US7877387B2 (en) * | 2005-09-30 | 2011-01-25 | Strands, Inc. | Systems and methods for promotional media item selection and promotional program unit generation |
BRPI0616928A2 (pt) * | 2005-10-04 | 2011-07-05 | Strands Inc | métodos e programa de computador para a visualização de uma biblioteca de música |
CN101506796A (zh) | 2005-12-19 | 2009-08-12 | 斯专兹有限公司 | 用户-用户推荐器 |
US20070162546A1 (en) * | 2005-12-22 | 2007-07-12 | Musicstrands, Inc. | Sharing tags among individual user media libraries |
US20070244880A1 (en) * | 2006-02-03 | 2007-10-18 | Francisco Martin | Mediaset generation system |
US7743009B2 (en) * | 2006-02-10 | 2010-06-22 | Strands, Inc. | System and methods for prioritizing mobile media player files |
JP5161794B2 (ja) * | 2006-02-10 | 2013-03-13 | アップル インコーポレイテッド | 動的インタラクティブエンターテイメントベニュー |
WO2007103923A2 (en) | 2006-03-06 | 2007-09-13 | La La Media, Inc | Article trading process |
CN101611401B (zh) * | 2006-10-20 | 2012-10-03 | 苹果公司 | 个人音乐推荐映射 |
US8671000B2 (en) | 2007-04-24 | 2014-03-11 | Apple Inc. | Method and arrangement for providing content to multimedia devices |
US9483405B2 (en) | 2007-09-20 | 2016-11-01 | Sony Interactive Entertainment Inc. | Simplified run-time program translation for emulating complex processor pipelines |
US20090276368A1 (en) * | 2008-04-28 | 2009-11-05 | Strands, Inc. | Systems and methods for providing personalized recommendations of products and services based on explicit and implicit user data and feedback |
WO2009151814A1 (en) * | 2008-04-30 | 2009-12-17 | Strands, Inc. | Scaleable system and method for distributed prediction markets |
WO2009146437A1 (en) * | 2008-05-31 | 2009-12-03 | Strands, Inc. | Adaptive recommender technology |
US20090299945A1 (en) * | 2008-06-03 | 2009-12-03 | Strands, Inc. | Profile modeling for sharing individual user preferences |
DE102008045767A1 (de) * | 2008-09-04 | 2010-03-11 | Continental Teves Ag & Co. Ohg | Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung |
US8601003B2 (en) | 2008-09-08 | 2013-12-03 | Apple Inc. | System and method for playlist generation based on similarity data |
WO2010040082A1 (en) | 2008-10-02 | 2010-04-08 | Strands, Inc. | Real-time visualization of user consumption of media items |
US20100169328A1 (en) * | 2008-12-31 | 2010-07-01 | Strands, Inc. | Systems and methods for making recommendations using model-based collaborative filtering with user communities and items collections |
US20110060738A1 (en) | 2009-09-08 | 2011-03-10 | Apple Inc. | Media item clustering based on similarity data |
US8082467B2 (en) * | 2009-12-23 | 2011-12-20 | International Business Machines Corporation | Triggering workaround capabilities based on events active in a processor pipeline |
US8433759B2 (en) | 2010-05-24 | 2013-04-30 | Sony Computer Entertainment America Llc | Direction-conscious information sharing |
US20120084537A1 (en) * | 2010-09-30 | 2012-04-05 | International Business Machines Corporation | System and method for execution based filtering of instructions of a processor to manage dynamic code optimization |
US9417855B2 (en) * | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US8983905B2 (en) | 2011-10-03 | 2015-03-17 | Apple Inc. | Merging playlists from multiple sources |
US10176013B2 (en) | 2014-03-13 | 2019-01-08 | International Business Machines Corporation | Dual/multi-mode processor pipeline sampling |
US9916161B2 (en) | 2015-06-25 | 2018-03-13 | Intel Corporation | Instruction and logic for tracking fetch performance bottlenecks |
US9830160B1 (en) * | 2016-09-22 | 2017-11-28 | International Business Machines Corporation | Lightweight profiling using branch history |
US10936653B2 (en) | 2017-06-02 | 2021-03-02 | Apple Inc. | Automatically predicting relevant contexts for media items |
US11853221B2 (en) | 2022-02-18 | 2023-12-26 | Hewlett Packard Enterprise Development Lp | Dynamic prefetching of data from storage |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4590550A (en) * | 1983-06-29 | 1986-05-20 | International Business Machines Corporation | Internally distributed monitoring system |
US4845615A (en) * | 1984-04-30 | 1989-07-04 | Hewlett-Packard Company | Software performance analyzer |
US5103394A (en) * | 1984-04-30 | 1992-04-07 | Hewlett-Packard Company | Software performance analyzer |
US4821178A (en) * | 1986-08-15 | 1989-04-11 | International Business Machines Corporation | Internal performance monitoring by event sampling |
US5151981A (en) * | 1990-07-13 | 1992-09-29 | International Business Machines Corporation | Instruction sampling instrumentation |
JPH0774984B2 (ja) * | 1991-06-10 | 1995-08-09 | インターナショナル・ビジネス・マシーンズ・コーポレイション | システム資源利用率測定方法とデータ処理システム |
US5450586A (en) * | 1991-08-14 | 1995-09-12 | Hewlett-Packard Company | System for analyzing and debugging embedded software through dynamic and interactive use of code markers |
GB2266606B (en) * | 1992-04-27 | 1996-02-14 | Intel Corp | A microprocessor with an external command mode |
JPH06290079A (ja) * | 1993-03-30 | 1994-10-18 | Hitachi Ltd | 情報処理システム |
US5485574A (en) * | 1993-11-04 | 1996-01-16 | Microsoft Corporation | Operating system based performance monitoring of programs |
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 |
US5581482A (en) * | 1994-04-26 | 1996-12-03 | Unisys Corporation | Performance monitor for digital computer system |
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 |
US5537541A (en) * | 1994-08-16 | 1996-07-16 | Digital Equipment Corporation | System independent interface for performance counters |
US5751945A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system |
US5809450A (en) * | 1997-11-26 | 1998-09-15 | Digital Equipment Corporation | Method for estimating statistics of properties of instructions processed by a processor pipeline |
-
1997
- 1997-11-26 US US08/980,190 patent/US6000044A/en not_active Expired - Fee Related
-
1998
- 1998-11-25 DE DE69819849T patent/DE69819849T2/de not_active Expired - Lifetime
- 1998-11-25 EP EP98309631A patent/EP0919918B1/en not_active Expired - Lifetime
- 1998-11-26 JP JP37553698A patent/JP4467093B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69819849D1 (de) | 2003-12-24 |
US6000044A (en) | 1999-12-07 |
EP0919918A3 (en) | 2000-02-23 |
DE69819849T2 (de) | 2004-09-02 |
EP0919918B1 (en) | 2003-11-19 |
JPH11272515A (ja) | 1999-10-08 |
EP0919918A2 (en) | 1999-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4467093B2 (ja) | プロセッサパイプラインにおいて命令をランダムにサンプリングする装置 | |
JP4467094B2 (ja) | プロセッサパイプラインにおいて多数の潜在的に同時の命令をサンプリングする装置 | |
JP4294778B2 (ja) | プロセッサパイプラインにより処理される相互作用の特性の統計値を推定する方法 | |
US5923872A (en) | Apparatus for sampling instruction operand or result values in a processor pipeline | |
US5964867A (en) | Method for inserting memory prefetch operations based on measured latencies in a program optimizer | |
US5809450A (en) | Method for estimating statistics of properties of instructions processed by a processor pipeline | |
US6092180A (en) | Method for measuring latencies by randomly selected sampling of the instructions while the instruction are executed | |
US6070009A (en) | Method for estimating execution rates of program execution paths | |
US6549930B1 (en) | Method for scheduling threads in a multithreaded processor | |
US6195748B1 (en) | Apparatus for sampling instruction execution information in a processor pipeline | |
US6237073B1 (en) | Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information | |
US5797019A (en) | Method and system for performance monitoring time lengths of disabled interrupts in a processing system | |
US6708296B1 (en) | Method and system for selecting and distinguishing an event sequence using an effective address in a processing system | |
US5691920A (en) | Method and system for performance monitoring of dispatch unit efficiency in a processing system | |
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 | |
JP5649613B2 (ja) | クリティカルパスに基づく解析のための性能モニタリングアーキテクチャ強化の方法、装置、マイクロプロセッサ、及び、システム | |
US6148396A (en) | Apparatus for sampling path history in a processor pipeline | |
US6189072B1 (en) | Performance monitoring of cache misses and instructions completed for instruction parallelism analysis | |
US6175814B1 (en) | Apparatus for determining the instantaneous average number of instructions processed | |
US5938760A (en) | System and method for performance monitoring of instructions in a re-order buffer | |
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 | |
US5881306A (en) | Instruction fetch bandwidth analysis | |
US5729726A (en) | Method and system for performance monitoring efficiency of branch unit operation in a processing system | |
US5748855A (en) | Method and system for performance monitoring of misaligned memory accesses in a processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051109 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051109 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20051109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081208 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090309 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090312 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090408 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090511 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090911 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091102 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20091109 |
|
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: 20100210 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100223 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130305 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130305 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130305 Year of fee payment: 3 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130305 Year of fee payment: 3 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130305 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140305 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |