JPH11272518A - プロセッサパイプラインにより処理される命令の特性の統計値を推定する方法 - Google Patents

プロセッサパイプラインにより処理される命令の特性の統計値を推定する方法

Info

Publication number
JPH11272518A
JPH11272518A JP10375364A JP37536498A JPH11272518A JP H11272518 A JPH11272518 A JP H11272518A JP 10375364 A JP10375364 A JP 10375364A JP 37536498 A JP37536498 A JP 37536498A JP H11272518 A JPH11272518 A JP H11272518A
Authority
JP
Japan
Prior art keywords
instruction
instructions
pipeline
event
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.)
Pending
Application number
JP10375364A
Other languages
English (en)
Inventor
George Z Chrysos
ゼット クリソス ジョージ
Jeffrey A Dean
エイ ディーン ジェフリー
James E Hicks
イー ヒックス ジェームズ
Carl A Waldspurger
エイ ウォールドスパージャー カール
William E Weihl
イー ウィール ウィリアム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH11272518A publication Critical patent/JPH11272518A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/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
    • G06F11/3419Recording 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 by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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

Landscapes

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

Abstract

(57)【要約】 【課題】 プロセッサパイプラインにより処理される命
令の特性の統計値を推定する方法を提供する。 【解決手段】 複数の処理段を含むコンピュータシステ
ムのパイプラインで処理された命令の特性の統計値を推
定する方法が提供される。命令はパイプラインの第1段
へフェッチされる。フェッチされた命令のあるものがラ
ンダムに選択される。システムの状態情報がプロファイ
ル記録にサンプルとして記録される一方、選択された命
令がパイプラインで処理される。記録された状態情報が
ソフトウェアに通信される。ソフトウェアは、選択され
た命令のサブセットからの上記記録された状態情報を統
計学的に分析して、命令の統計値を推定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、コンピュ
ータシステムの性能測定に係り、より詳細には、実行命
令の特性の統計値を推定することに係る。
【0002】
【従来の技術】コンピュータプロセッサは、益々高速に
なっているが、ソフトウェアアプリケーションの性能
は、それに歩調が合っていない。大型の商業用途の場合
に、命令当たりの平均プロセッササイクル(CPI)値
が2.5ないし3という大きさである。4ウェイ命令イ
ッシュープロセッサでは、CPIが3であることは、1
2ごとに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プロセッサ
のようなインオーダー(順序正しい)マシンにも存在す
る。例えば、Alpha21164(インオーダー)プ
ロセッサ対ペンチウム・プロ(アウトオブオーダー)プ
ロセッサに対してDキャッシュ基準事象カウントを監視
しながら、性能カウンタ割り込みハンドラーに与えられ
るプログラムカウンタ値を比較する。例示的プログラム
は、ランダムメモリアクセス命令、例えば、ロード命令
と、それに続く、ナルオペレーション命令(nop)の
ハンドラーとを含むループより成る。
【0013】インオーダー型のAlphaプロセッサで
は、全ての性能カウンタ事象(例えば、キャッシュミ
ス)は、事象の6サイクル後に実行される命令に帰属さ
れ、ロードアクセス後の7番目の命令においてサンプル
の大きなピークを生じる。このスキューした事象分布
は、理想的なものではない。しかしながら、単一の大き
なピークがあるために、静的な分析は、時々、このピー
クから後方に作用し、その事象を生じさせた実際の命令
を識別することができるが、これは、非常に単純なプロ
グラムに対する最良の推測以上のものは何もない。アウ
トオブオーダー型のペンティウム・プロで実行される同
一のプログラムの場合に、事象サンプルは、次の25個
の命令にわたって広く分布され、スキューを示すだけで
なく、著しい不鮮明さも示す。サンプルの広い分布は、
特定の事象を、その事象を生じた特定の命令に帰属させ
るのをほぼ不可能にする。他のハードウェア事象をカウ
ントするときにも同様の振る舞いが生じる。
【0014】スキュー又は不鮮明さのある事象サンプル
分布に加えて、従来の事象カウンタは、付加的な問題で
悩まされている。通常、事象カウンタより多くの当該事
象があり、全ての当該事象を同時に監視することは、不
可能でないまでも、困難である。プロセッサの複雑さが
増すと、この問題が一層悪化する。加えて、事象カウン
タは、事象が発生したという事実しか記録せず、その事
象に関する付加的な状態情報を与えない。多数の種類の
事象に対し、キャッシュミス事象にサービスする待ち時
間のような付加的な情報が極めて有用である。更に、公
知のカウンタは、一般に、事象をコードの「ブラインド
スポット」に帰属させることができない。ブラインドス
ポットとは、割り込み権が与えられるまで事象が確認さ
れないために、高優先順位システムルーチン及びPAL
コードのような割り込み不能コードである。そのときま
でに、プロセッサの状態は著しく変化し、おそらく偽の
情報を与える。
【0015】ストール対ボトルネック パイプライン式のインオーダープロセッサにおいて、パ
イプライン段で1つの命令がストールすると、その後の
命令がそのパイプライン段に通過することが妨げられ
る。それ故、インオーダープロセッサでは「ボトルネッ
ク」命令を識別することが比較的容易であり、即ちボト
ルネック命令は、パイプラインのどこかでストールする
傾向がある。インオーダープロセッサの場合、命令が各
パイプライン段を通るときにその待ち時間を測定し、そ
してその測定された待ち時間を、各パイプライン段にお
けるその命令の理想的な待ち時間と比較することによ
り、ストールを識別することができる。命令は、ある段
を通過する最小待ち時間より長い時間を必要とするとき
に、その段においてストールしたと仮定することができ
る。
【0016】しかしながら、アウトオブオーダープロセ
ッサでは、あるパイプライン段でストールした命令に対
して他の命令がそのパイプライン段を通過することがあ
る。実際に、ストールした命令の付加的な待ち時間は、
他の命令の処理によって完全にマスクされ、実際に、ス
トールした命令は、観察されるプログラム完了を遅延し
ないことがある。インオーダーシステムにおいても、あ
るパイプライン段のストールは、別のパイプライン段が
ボトルネックであるときにはプログラムの全実行時間に
影響しない。例えば、メモリ集中のプログラムの実行中
には、Dキャッシュミスにより遅延される実行ユニット
からの「バックプレッシャー」のために、命令パイプラ
インのフェッチ手段及びマップ手段がしばしばストール
することがある。
【0017】理想的には、キャッシュミスを生じるメモ
リオペレーションを一次ボトルネックとして分類する。
フェッチ手段及びマップ手段のストールは、実際には、
キャッシュミスによる遅延の非兆候状態であり、即ち二
次ボトルネックである。ストールが他の命令によりマス
クされない命令を識別し、そしてそれらを真のボトルネ
ックとして識別することが望ましい。更に、プログラム
の振る舞いを改善するためには、非兆候(二次)ボトル
ネックよりもカジュアル(一次)のボトルネックに焦点
を合わせることが必要である。このようにパイプライン
段のボトルネックをカジュアル及び非兆候と分類するこ
とは、パイプラインの状態並びにフライト中命令のデー
タ及びリソース依存性を詳細に知ることが必要である
が、これらは、良く知られたように、単純な事象カウン
タから得ることができない。
【0018】1992年9月29日付のウェスコット氏
等の「命令サンプリング手段(Instruction Sampling In
strumentation)」と題する米国特許第5,151,98
1号は、アウトオブオーダーの実行マシンにおいて命令
ベースのサンプリングを行うハードウェアメカニズムを
提案している。ウェスコット氏等の解決策には多数の欠
点がある。第1に、この解決策は、サンプリングされる
コードの長さ及びサンプリングレートに基づいて命令サ
ンプルの流れをバイアスし得る。第2に、このシステム
は、リタイアした命令のみをサンプリングし、フェッチ
した全ての命令をサンプリングするのではなく、その幾
つかがアボートされる。第3に、ウェスコット氏等のメ
カニズムにより収集される情報は、例えば、キャッシュ
ミスのような個々の事象属性に集中するが、命令間の関
係を決定するための有用な情報を与えるものではない。
【0019】最近、「ロード通知(informing loads) 」
と称するハードウェアメカニズムが提案されている。こ
れについては、1996年5月22日のプロシーディン
グズ第23アニュアルインターナショナルシンポジウム
・オン・コンピュータアーキテクチャー、第260−2
70ページに掲載されたホロイッツ氏等の「インフォー
ムドメモリオペレーション:近代的なプロセッサにおけ
るメモリ性能フィードバックの供給(Informed memory o
perations: Providing memory performance feedback i
n 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 b
ranch handling hardware tosupport profile-driven o
ptimization) 」を参照されたい。
【0021】この解決策は、関連サンプリング情報を記
憶する「プロファイル記録」に含まれた分岐方向情報を
追跡することにより得られるものと同様の情報を形成す
る。最近、コンテ氏等は、分岐が実行される回数及び実
行されない回数をカウントするプロファイルバッファと
称する付加的なハードウェアの断片を提案している。こ
れについては、1996年12月2日のプロシーディン
グズ・オブ・第29アニュアルインターナショナルシン
ポジウム・オン・マイクロアーキテクチャー、第36−
45ページに掲載された「プロファイルバッファを使用
する正確且つ実際的なプロファイル駆動の編集(Accurat
e and practical profile-driven compilation using t
he profile buffer)」を参照されたい。
【0022】
【課題を解決するための手段】本発明によれば、プロセ
ッサのオペレーションを測定するための装置及び方法で
あって、従来のメカニズムとは異なる装置及び方法が提
供される。事象をカウントし、そして事象カウンタがオ
ーバーフローしたときにプログラムカウンタをサンプリ
ングするのではなく、本発明の装置及び方法は、命令を
ランダムに選択し、そしてその選択された命令に対して
詳細な状態情報をサンプリングすることに依存する。周
期的に、プロセッサの動作中に、プロファイリングされ
るべき命令がランダムに選択され、そして命令の実行中
に何が起きたかのプロファイル記録がプロセッサの内部
プロファイルレジスタのセットに累積される。選択され
た命令の処理が終了し、例えば、命令がリタイアし、ア
ボートし又はトラップした後に、割り込みが発生され
る。パイプラインにおいて命令がいかに処理されたかの
詳細を特徴付ける記録情報を内部プロファイルレジスタ
からソフトウェアによりサンプリングすることができ
る。
【0023】プロファイルレジスタは、命令の実行に関
する多数の有用な事実を記録することができる。性能情
報は、例えば、選択された命令が実行パイプラインの各
段において費やしたサイクルの数、即ち段の待ち時間、
命令がIキャッシュ又はDキャッシュミスを受けたかど
うか、メモリオペランドの有効アドレス又は分岐/ジャ
ンプターゲット、そして命令がリタイア又はアボートさ
れたかどうかを含むことができる。順序正しく実行する
(インオーダー型)プロセッサにおいては、サンプルさ
れた命令のフェッチ−リタイア待ち時間が与えられたと
きに各命令に起因する全ストールサイクル数を推定する
ことができる。これは、1つのストールした命令が別の
ストールした命令とオーバーラップすることがないの
で、ボトルネックを識別するのに充分である。
【0024】順序ずれして実行する(アウトオブオーダ
ー型)プロセッサにおいては、ほとんどのストールがお
そらくオーバーラップし、そしてそのストールした命令
の周りで順序ずれして発生される他の命令によりマスク
される。これは、ストールした命令の識別を困難なもの
にする。更に、ボトルネックを識別するためには、各命
令が実行される間に同時性の平均レベルに関する情報を
収集することが必要となる。特殊目的のハードウェア
は、プロファイリングされた命令が実行される間に発生
する命令の数をカウント及び記録して、同時実行のレベ
ルを測定することができる。しかしながら、これは、発
生するがアボートされ、従って、リタイアしない命令を
考慮に入れるものではない。そこで、有用な同時性の量
の測定値が与えられる。有用な同時性は、並列に発生し
そして所与の命令で首尾良くリタイアする命令の平均数
である。発生するがその後にアボートされる命令は、有
用ではない。従って、ストールが有用な同時性によりマ
スクされない命令をボトルネックとして分類することが
できる。この別の方法を説明するために、アウトオブオ
ーダープロセッサにおいて性能ボトルネックの位置を正
確に示すための重要なメトリックは、所与の命令が実行
される間に費やされた発生スロットの数である。
【0025】従って、有用な同時性を測定するために、
「対ごとのサンプリング(pair-wisesampling)」と称す
る技術が提供される。基本的な考え方は、ネスト形態の
サンプリングを実行することである。ここでは、第1の
プロファイリングされた命令と同時に実行できる命令の
ウインドウが動的に定義される。命令のウインドウから
プロファイリングするために第2の命令がランダムに選
択される。プロファイリングされた及び第2の命令は、
プロファイル情報を収集できるところのサンプル対を形
成する。対ごとのサンプリングは、各命令に起因する費
やされた発生スロットの数を容易に決定すると共に、ボ
トルネックの位置を既知の技術よりもかなり正確に指示
する。一般に、対ごとのサンプリングは、非常に融通性
があり、種々様々な当該同時性及び利用メトリックを決
定することのできる分析の基礎を形成する。
【0026】より詳細には、プロセッサのパイプライン
により処理される1つ以上の命令を周期的に且つランダ
ムに選択し、そして実行パイプラインの段を経て命令が
進行する間にプロファイル情報を収集するための装置及
び方法が提供される。高レベルのソフトウェアは、次い
で、この情報を種々の仕方で後処理することができ、例
えば、同じ命令の多数の実行から情報を収集することに
より後処理することができる。捕獲することのできる情
報は、例えば、命令のアドレス(プログラムカウンタ即
ちPC)、命令が命令キャッシュミスを受けたかどう
か、及びミスにサービスするために被る待ち時間を含
む。命令がメモリオペレーションを実行する場合には、
命令がデータキャッシュミスを受けたかどうか決定し、
そしてメモリ要求を満足するための待ち時間を測定す
る。更に、命令が各パイプライン段において費やす時間
の長さを測定することができる。又、プロファイル情報
は、命令がリタイアしたかアボートしたかを指示すると
共に、後者の場合には、どんな種類のトラップが命令の
実行をアボートしたかも指示することができる。
【0027】命令が実行パイプラインを経て進行すると
きにプロファイリングレジスタのセットに情報が収集さ
れる。命令の実行が終了すると、それがリタイアするか
又はアボートするために、上位レベルのソフトウェアに
割り込みが与えられる。次いで、ソフトウェアは、プロ
ファイリングレジスタに存在する情報を種々の方法で処
理することができる。サンプリングされる性能情報は、
プロファイルで指示される最適化にとって非常に有用で
あるが、事象の発生を集合的にカウントするようなハー
ドウェア事象カウンタとしても多数の使い方がある。こ
こに開示する技術は、既存の性能監視ハードウェアに対
する改良であり、そして命令を順序ずれして発生できる
近代的なマイクロプロセッサにおいて比較的低いハード
ウェアコストで効率的に実施することができる。
【0028】より詳細には、複数の処理段を有するコン
ピュータシステムのパイプラインで処理される命令の特
性の統計値を推定するための方法が提供される。パイプ
ラインの第1段へと命令がフェッチされる。フェッチさ
れた命令の幾つかがランダムに選択される。選択された
命令がパイプラインにより処理される間にシステムの状
態情報がサンプルとしてプロファイル記録に記録され
る。記録された状態情報は、ソフトウェアへ通信され
る。ソフトウェアは、選択された命令のサブセットから
記録された状態情報を統計学的に分析し、命令の統計値
を推定する。
【0029】
【発明の実施の形態】システムの概要 図1は、ここに開示するサンプリング方法及び装置を使
用することのできるコンピュータシステム100を示
す。このシステム100は、バスライン140で接続さ
れた1つ以上のプロセッサ110、オフチップメモリ1
20及び入力/出力インターフェイス(I/O)130
を備えている。プロセッサ110は、例えば、デジタル
イクイップメント社のAlpha21264プロセッサ
のように、集積半導体チップにおいて、機能的実行ユニ
ットを含む多数の実行パイプライン111、命令キャッ
シュ(Iキャッシュ)112及びオンチップデータキャ
ッシュ(Dキャッシュ)113として実施することがで
きる。又、プロセッサチップ110は、以下に詳細に述
べるように、選択された命令に対してプロセッサ状態を
サンプリングするためのハードウェア119も備えてい
る。
【0030】オフチップメモリ120は、汎用キャッシ
ュ(Bキャッシュ又はSRAM)121と、揮発性メモ
リ(DRAM)122と、永続的メモリ(ディスク)1
23とを含むハイアラーキー構成をとることができる。
I/O130は、システム100に対してデータを入力
及び出力するのに使用できる。オペレーション システム100のオペレーション中に、ソフトウェアプ
ログラムの命令及びデータがメモリ120に記憶され
る。命令及びデータは、既知のコンパイラー、リンカー
及びローダー技術を使用して従来のやり方で発生され
る。命令及びデータは、キャッシュ112−113を経
て1つのプロセッサ110の実行パイプライン111に
転送される。パイプラインにおいて、命令が実行のため
にデコードされる。ある命令は、データに作用する。他
の命令は、プログラムの実行流を制御する。命令を実行
しながら詳細な性能データを収集することが所望され
る。性能データは、メモリオペレーション及び実行流に
関連付けることができる。
【0031】プロセッサパイプライン 図2aは、図1の1つのプロセッサ110の実行パイプ
ライン200を示すもので、これは、例えば、フェッ
チ、マップ、イッシュー、実行及びリタイアユニット、
各々、210、220、230、240及び250とし
てシリアルに構成された複数の段を有する。パイプライ
ン200が情報(データ及び命令)を処理するレート
は、ライン201上のシステムクロック信号、即ちいわ
ゆるクロック「サイクル」により制御される。各クロッ
クサイクルは、パイプライン200の段が個々の量の処
理を実行できるときの「スロット」即ち時間間隔を定義
する。処理スロットは、通常、順方向命令を搬送し、そ
して以下に述べる実行ユニットの場合は、以下一般に
「データ項目」と称するデータを搬送する。例えば、分
岐予想ミス又はキャッシュミス或いはパイプラインスト
ールのような場合には、クロックはサイクルを続ける
が、有意義な命令は順方向に送られない。
【0032】1つの効果として、本発明の装置及び方法
は、「廃物(garbage) 」即ち非有効データを搬送するプ
ロセッサスロットに関する状態情報をサンプリングする
ことができる。これらは、「浪費(wasted)」スロットと
して知られている。浪費スロットを識別しそしてサンプ
リングすることは、タスクを最適化するための重要な先
駆手段である。というのは、浪費スロットは、有効に機
能せず、従って、システム性能を低下するからである。
それ故、一般に、ここでサンプリングされるものは、公
知技術のように単なる「事象」又は「命令」ではなく、
プロセッサスロットが有効な命令に関連したものである
か無効の命令に関連したものであるかに関わりなくパイ
プライン200を経てプロセッサスロットをプッシュす
ることに関連した状態情報をである。
【0033】フェッチユニット Bキャッシュ121は、データ項目を各々Iキャッシュ
112及びDキャッシュ113に転送する。フェッチユ
ニット210は、仮想アドレスを物理的アドレスへと解
析するためのある形式の変換ルックアサイドバッファ
(TLB)205を使用して、実行されるべき次の命令
をIキャッシュ112からフェッチする。Iキャッシュ
112からフェッチされる項目は、一般的に、実行可能
な命令である。しかしながら、これらは、Iキャッシュ
が「廃物」データ即ち非命令をミスする場合のように、
無効命令でもよい。単一のプロセッササイクル中に「命
令」のセットがフェッチされるのが好ましい。このセッ
トは、例えば、4つの命令を含むことができる。換言す
れば、パイプライン200は、4スロット巾である。ス
ロットの数は、使用可能な実行ユニットの数に基づく。
他の形式のプロセッサは、単一プロセッササイクル中に
より少数の又はより多数の命令をフェッチすることがで
きる。一般に、これは、各サイクルがキャッシュから4
つの処理スロットを満たすことを意味する。あるスロッ
トは、Iキャッシュ112が使用可能なデータをもたな
いときに浪費される。全ての処理を休止、停止するので
はなく、スロットはいかなる場合にも順方向に搬送され
て、サンプリングの目的で使用できるようにされるが、
スロットの廃物「命令」は、実行のために発生されるこ
とがない。フェッチ中に、選択された命令は、サンプリ
ング又はシステムプロファイリングを許すために付加的
な情報で増強することができる。増強命令は、図4を参
照して以下に説明する。他の実施においては、選択され
た命令の増強が、イッシューユニット230を含むプロ
セッサのいかなる段でも実行できることに注意された
い。
【0034】マップユニット システム100では、パイプライン200の次の段のマ
ップユニット220を用いて命令のオペランドが物理的
レジスタに動的に指定又は「マップ」される。マップユ
ニットは、物理的レジスタをアーキテクチャー即ち「仮
想」レジスタに指定する。換言すれば、仮想レジスタと
物理的レジスタとの間には1対1の対応がなくてもよ
い。
【0035】イッシューユニット 次の段において、フェッチされた命令は、イッシューユ
ニット230によって順序付けされる。イッシューユニ
ット230は、実行されるべき次の命令のための待ち行
列ヘッド(a head-of-the-queue) エントリ231を有す
るイッシュー待ち行列を備えている。命令に必要なリソ
ースが使用できないために、イッシューユニット230
の1つ以上の命令がストールされ得ることに注意された
い。それ故、ストールされた命令の「周り」で待ち行列
230から他の保留中命令が順序ずれして発生される。
正しい実行順序は、以下に述べるリタイアユニット25
0で確認される。
【0036】実行ユニット 命令は、機能的実行ユニット(E0・・・E3)241
及びld/stユニット242へ発生される。実行ユニ
ット241の各々は、特定形式のオペレータコード(o
pコード)、例えば、整数及び浮動小数点演算、分岐及
びジャンプ命令等で命令を取り扱うように設計される。
ld/stユニット242は、メモリアクセス命令を実
行し、例えば、Dキャッシュ113に対してデータをロ
ード及び記憶する。ld/stユニット242は、長い
遅延を経験するために特別に識別される。又、長い待ち
時間を伴うメモリアクセス命令は、スループットを改善
するために、データがプロセッサに送り込まれるかなり
前に「完了」となる。
【0037】リタイアユニット 命令の実行の終了は、リタイアユニット250により処
理される。リタイアユニット250は、処理状態をコミ
ットする。ある命令は、アボートするか、又はとラップ
されることに注意されたい。例えば、実行流は、命令が
フェッチされた後に変化するか、又は命令は、例外トラ
ップを被ることがある。このような場合に、パイプライ
ンに既にある命令及び全ての後続命令は破棄され、そし
て推測的処理状態がロールバックされる。ここでの1つ
の効果として、破棄又は「アボート」された命令も、浪
費プロセッサスロットと同様にプロファイリングされ
る。換言すれば、終了とは、完全に実行された有効命令
をリタイアし、部分的に実行された有効命令を後処理
し、或いは無効命令又は浪費スロットを破棄することを
意味する。
【0038】本発明の技術の根底にある基本的な考え方
は、パイプライン200の段を経て進むときに、選択さ
れた「スロット」、主として命令において「データ項
目」の処理を行うものである。プロファイリングハード
ウェアは、詳細な状態情報を動的に収集する。状態情報
は、いずれのパイプライン段からでも又はシステム10
0のどこからでも到来することができ、例えば、第1及
び第2レベルキャッシュ又は他のサブシステムから到来
することができる。状態情報は、特定事象に直接起因し
得る。ここでの設計戦略は、プロファイル記録において
静的に決定することが困難な情報を収集することであ
る。これは、プロファイル記録を性能ツールとして又は
プロファイルで指令される最適化として有用なものにす
るか、或いはサンプリング及び分析に直接応答する動的
な調整を含むオペレーティングシステム及びアプリケー
ションレベルソフトウェアにおけるリソース割り当てポ
リシー判断を行う上で有用なものにする。本発明の方法
及び装置は、実際の機能的システムにおいて作用するよ
う設計されることを想起されたい。
【0039】プロファイル記録の一部分としてセーブす
るのにどんな状態情報に関心があるかを決定するため
に、図2bに示すように、近代的なアウトオブオーダー
マイクロプロセッサのパイプライン200の種々の段に
理論的に得られる情報を検査することが有用である。図
2bに示すように、パイプラインの段は、フェッチ21
0、マップ220、イッシュー230、実行240及び
リタイア250である。これらの段のいずれかの間に、
特定の実施形態に基づき、パイプライン200で処理さ
れるいずれかの「フライト中」命令202をライン51
2によりサンプリングのために選択することができる。
この選択は、カウンタ510の値により制御される。カ
ウンタの値は、ライン(init)により初期化するこ
とができる。
【0040】命令アドレス(PC)281、分岐経過ビ
ット(HIST)282、段の待ち時間283、分岐実
行指示(T)287、データアドレス(ADDR)28
4、データミス(MISS)285及びリタイア状態2
86のような状態情報は、ライン288においてサンプ
リングすることができる。選択された命令の処理が終了
すると、ライン289に割り込み信号を発生することが
できる。割り込み信号289は、ソフトウェアでライン
299を経て状態情報281−286をサンプリングす
ることができるようにする。或いは又、ソフトウェア
は、内部プロセッサレジスタ541を経てライン289
をポーリングすることもできる。スーパースカラーのアウトオブオーダープロセッサアー
キテクチャー アウトオブオーダー実行プロセッサは、正しい順序で命
令をフェッチ及びリタイアするが、それらのデータ依存
性に基づいて命令を実行する。命令は、それがフェッチ
されたときから、それが終了するまで、例えば、リタイ
ア又はアボートするまで、「フライト中」であると言え
る。命令は、マッピングの後、イッシューユニット23
0に入れられ、そして入力オペランドを保持するレジス
タが更新されるまでそこで待機する。
【0041】各プロセッササイクルごとに、フェッチユ
ニット210は、命令キャッシュ112から命令のセッ
トをフェッチしてデコードする。フェッチユニット21
0の一部分である命令デコーダは、フェッチされたセッ
トの中のどの命令が命令流の一部分であるかを識別す
る。フェッチすべき次の命令のプログラムカウンタ(P
C)を分析するには多数のサイクルを必要とするので、
次のPCは、フェッチユニット210の一部分である分
岐又はジャンププレディクタにより予想される。予想が
間違っている場合には、プロセッサは、その予想ミスし
た命令、即ち「不良」経路においてフェッチされた命令
をアボートし、そして「良好」経路においてフェッチ命
令を再スタートする。命令を順序ずれして実行できるよ
うにするために、レジスタはマップユニット220によ
り動的に名前が付け直され、「読み取り後の書き込み」
及び「書き込み後の書き込み」競合を防止する。同じ仮
想レジスタに書き込む2つの命令は、順序ずれ状態で安
全に実行することができる。というのは、それらは、異
なる物理的レジスタに書き込みするのであり、そして仮
想レジスタの消費者が適切な値を得るからである。命令
は、正しい順序でフェッチされ、マップされそしてリタ
イアされるが、順序ずれ状態で実行することができる。
【0042】レジスタマップユニット220は、フェッ
チされた命令のオペランドを有効な物理的レジスタに指
定する。即ち、レジスタオペランドの仮想名は、プロセ
ッサの物理的なレジスタスペースに対して名前付けし直
される。次いで、命令は命令待ち行列230へ送られ、
そこで、実行の前に2つの事象を待機する。第1に、そ
れらのレジスタ依存性を分析しなければならない。第2
に、命令に必要なリソース、例えば、実行ユニット、レ
ジスタ、キャッシュポート、メモリ待ち行列等が使用で
きねばならない。これは、現在マップされたいかなる命
令に対しても、必要なリソースを再割り当てできないこ
とを意味する。ある命令に対してこれら2つの条件が満
たされると、命令オペランドが物理的レジスタファイル
において探索される。次いで、オペランドレジスタの内
容及び命令に関するある情報が適当な実行ユニット24
0へ送られて実行される。命令が実行を終了し、そして
命令がプロセッサにおいて最も古い「非リタイア」命令
であるときに、命令がリタイアする。これは、命令によ
り使用されるリソース、例えば、物理的レジスタ及びキ
ャッシュポートを解放する。
【0043】多数の事象が命令の実行を遅延させること
がある。パイプラインの前方では、フェッチユニット2
10がIキャッシュ112のミスによりストールするか
又はフェッチユニット210が予想ミス経路の命令をフ
ェッチすることがある。マップユニット220は、空き
の物理的レジスタの欠乏、又はイッシューユニット23
0における空きスロットの欠乏によりストールすること
がある。イッシューユニット230における命令は、そ
れらのレジスタ依存性が満足されるのを待機するか、又
は実行ユニット240が使用できるのを待機する。命令
は、Dキャッシュにおけるミスによりストールすること
がある。命令は、それらが不良経路に沿って推測的に発
生されるか、又はプロセッサが不法なオペレーション又
はメモリアドレスのような割り込みを行ったためにトラ
ップされることがある。これら条件の多くは、コンパイ
ル時に予想することが困難であり、それらは全てシステ
ム100の性能を低下させる。これにより、ライン28
8に得られる情報をサンプリングすることが重要とな
る。
【0044】プロファイル情報レジスタ それ故、図3に示すように、サンプリングされる各命令
ごとにプロファイル情報を記憶するためのメモリ300
が設けられる。メモリ300は、レジスタファイル又は
バッファの形態でよい。換言すれば、サンプリングされ
る選択済み命令は、レジスタファイル300で直接識別
される。レジスタファイル300は、複数のレジスタを
含むことができる。或いは又、ファイル300は、多数
のフィールドをもつ単一のインデックス可能なレジスタ
として実施することができる。ファイル300は、図2
bのライン288によりパイプライン200の要素に接
続され、従って、選択された命令に関連した性能情報を
パイプライン200の各段に対して捕獲することができ
る。プロファイルレジスタ300は、公知技術で見られ
る単純な「事象」カウンタ以上のものであり、ここで
は、これらレジスタは、特定の既知の命令及び事象に起
因する性能情報を収集することに注意されたい。
【0045】図3において、各レジスタに対して割り当
てられるビットの数は、そこに記憶される情報の形式、
例えば、命令アドレス(64ビット)、サイクルカウン
ト、即ち待ち時間(8又は10ビット)、個別事象(1
ビット/事象)等々に依存している。これらの数は単な
る指針に過ぎない。他の実施形態は、種々のレジスタ3
00に対して異なるビット数を使用することができ、こ
れは設計上の選択肢である。好ましい実施形態では、プ
ロファイルPCレジスタ310は、選択された命令のP
Cを記憶する。以下に述べるように、プロファイリング
されている命令は、アサートされた「プロファイル」ビ
ットを有する。又、PCレジスタ310は、選択された
命令のopコードを含むこともできる。更に、マルチス
レッド式実行を許すプロセッサについては、レジスタ3
10の付加的なビットがスレッドの識別子を記憶するこ
とができる。レジスタ310の他のフィールドは、プロ
セス識別子、アドレススペース番号、CPU番号、及び
実行されている命令の命令番号(inum)を記憶する
ことができる。更に、多数の論理レジスタセット、即ち
ハードウェアコンテクスト及び同時実行スレッドを有す
るプロセッサでは、レジスタ310がハードウェアコン
テクスト及びスレッド識別子である。この情報を記憶す
ることにより、プロファイル情報を特定の命令に直接起
因させることができる。更に、サンプリングされた情報
は、アドレスの範囲、opコード、実行スレッド、アド
レススペース、等々に基づいてフィルタすることができ
る。
【0046】プロファイル有効アドレスレジスタ320
には、選択された命令に関連したアドレスがロードされ
る。命令がロード又は記憶のようなメモリアクセス命令
である場合には、有効な64ビット仮想メモリアドレス
が捕獲される。命令がジャンプ又は分岐である場合に
は、ターゲットPCが記録される。本発明のサンプリン
グ技術の1つの効果として、パイプライン200によっ
て処理される全ての「命令」は、サンプリングレートに
関わりなく、サンプリングのために選択される確率が等
しい。命令は、有効な命令、無効の命令、非割り込み命
令、又は「廃物」命令である。従って、捕獲された有効
アドレスは、プログラムの全体的な振る舞いを統計学的
に表す。サンプリングされた命令の有効アドレスを捕獲
することにより、メモリアクセス及び実行流を、実際の
動的な実行に正確に関連付けることができる。
【0047】プロファイル事象カウンタ330は、例え
ば、1ビットフィールドに区画化される。1ビットフィ
ールドは、選択された命令に対する事象を記録する。命
令が最初に選択されるときに、レジスタがクリアされ
る。事象は、キャッシュミス、分岐予想ミス、リソース
競合、トラップ及び例外条件、リタイア/アボート/無
効、TLBミス、実行/非実行、データ依存性ストー
ル、リソース依存性ストール、等々を含む。この実施形
態では、多数の事象を単一の命令に起因させることがで
きる。リタイア及びアボートの両命令に対して事象情報
が収集されることに注意されたい。事象レジスタ330
のサイズを減少するために、あるビットフィールドを使
用して、命令のopコードに基づき異なる形式の相互に
排他的な事象を記録することができる。
【0048】プロファイル経路レジスタ340は、分岐
経過テーブルから最近の分岐実行/非実行情報を捕獲す
るのに使用される。分岐経過テーブルは、他の用途に対
して良く知られている。グローバルな分岐実行経過は、
選択された命令をフェッチした実行経路を指示するのに
使用できる。命令は、この情報を有効なものにするため
に分岐命令である必要はないことに注意されたい。経路
情報の使用は、以下で詳細に説明する。待ち時間レジス
タ350は、選択された命令が、例えば、パイプライン
200の種々の段間をフライト中である間に、チェック
ポイントにおいて得られたタイミング情報を記憶する。
チェックポイントは、命令がストールされて、ある事象
又はリソースを待機する場所に基づいて、プロセッサご
とに異なる。各待ち時間レジスタ350は、2つのチェ
ックポイント間で命令が費やすサイクル数をカウントす
る。
【0049】選択された命令がチェックポイントを通過
し、即ちパイプライン200の次の段に入るときに、そ
れに対応する待ち時間レジスタ350が最初にクリアさ
れ、そして1サイクル当たり1回増加され、やがて、命
令が次のチェックポイントを通過し、次の待ち時間レジ
スタが初期化されそしてカウントを開始する。待ち時間
レジスタ350の数は、特定の実施形態におけるパイプ
ライン200の段数に基づく。命令がアボート又はリタ
イアするときには、待ち時間レジスタ350に完全な待
ち時間プロファイルが記憶される。収集すべき潜在的に
有用な待ち時間のリストは、フェッチ対マップ、マップ
対データレディ、データレディ対実行、実行対リタイア
レディ、リタイアレディ対リタイア遅延を含む。メモリ
命令(ロード及び記憶)の場合、待ち時間は、イッシュ
ー対完了である。この最後の待ち時間は、あるメモリオ
ペレーションは、それらが作用するデータが実際にプロ
セッサに送られる前にリタイアの準備ができるという点
で、他の待ち時間とは異なる。これらの待ち時間は、レ
ジスタ350で直接カウントすることもできるし、或い
はレジスタが生のサイクルカウントを収集することもで
き、この場合に、プロファイリングソフトウェアは、次
々の段に対する生のカウント間の差を計算して、実際の
待ち時間を決定する。例えば、パイプライン待ち時間ク
ロックサイクルをカウントする回路は、図6を参照して
以下に詳細に説明する。
【0050】レジスタ300における情報の更新は、遅
延が受け入れられた直後に行う必要はない。必要とされ
るのは、選択された命令が完了した(リタイア又はアボ
ートした)ことを知らせる割り込みを、レジスタファイ
ル300の全ての情報が更新されるまで遅延するか、或
いは割り込みハンドラーを、プロファイルファイル30
0が更新されるまでストールできるようにすることだけ
である。プロファイルレジスタファイル300を複写で
きることに注意されたい。プロファイルレジスタファイ
ルの多数のコピーがある場合には、シリアルに又は同時
にプロファイリングするために多数の命令を選択するこ
とができる。この場合には、各選択された命令が、以下
に述べるように、特定のレジスタファイルで明確に識別
される。オーバーヘッドの量を減少するために単一の割
り込み信号に応答して多数のレジスタファイルをサンプ
リングすることができる。
【0051】増強命令 図4に示すように、各命令400はサンプルフィールド
を含む。例えば、このサンプルフィールドは、「サンプ
ル」ビット(S)401と称する1ビットタグである。
サンプルビット401がアサートされると、サンプリン
グのために命令が選択される。ビット401をアサート
すると、プロファイル情報を収集するサンプリングハー
ドウェアが作動されると共に、選択された命令が完了し
た(リタイア又はアボートされた)ときに割り込みを生
じさせる。或いは又、フェッチされた各「命令」を「i
num」値で連続的に番号付けすることもできる。この
場合には、特定のinum値をもつ命令を選択すること
ができる。命令を選択するメカニズムについては、以下
に述べる。
【0052】プロファイルレジスタファイル300は、
フィールドが更新されそして割り込み信号が発生された
ときに読み取ることができる。割り込み信号は、特権付
きのプロファイリングソフトウェア(PSW)がプロフ
ァイルレジスタ300の内容を処理できるようにする。
多数のサンプルが記録される場合には、単一の割り込み
で、多数の選択された命令に対して性能データをサンプ
リングできることに注意されたい。実施形態に基づき、
増強命令400は、次の付加的なフィールド、即ち3つ
までの命令オペランド(op1、op2及びop3)4
11−413と、プログラムカウンタ(PC)420
と、オペレータコード(opコード)430とを含むこ
とができる。有効フィールド(V)431は、1ビット
フィールドを真又は偽にセットすることにより、選択さ
れたスロットにおける「命令」が有効であるかどうか指
示することができる。フィールド440及び450は、
命令に関連したIキャッシュ及びTLBミスを各々指示
するために指定することができる。単一の命令が多数の
オペランドを含み得るので、その命令に対して多数のミ
スが考えられることに注意されたい。
【0053】プロファイルレジスタファイルID 若干複雑な設計では、多数の命令を同時にプロファイル
することができる。この実施形態では、複数のレジスタ
ファイル300、或いはサブフィールドを伴う単一の大
きなレジスタがあり、ファイル300の数は、同時にプ
ロファイルすることのできるフライト中命令の数に対応
する。このケースを取り扱うために、命令400は、サ
ンプルレジスタファイル識別子(ID)フィールド40
2も含むように増強される。これは、多数のレジスタフ
ァイル300の1つにプロファイル情報を直接リンクで
きるようにする。上記したように、ここでは、選択され
た命令とプロファイルレジスタとの間に直接的な関連が
ある。それ故、レジスタに収集されるプロファイル情報
は、特定の命令に直接起因し得る。
【0054】一度に1つのフライト中命令しかプロファ
イリングされないときでも、ファイル即ちレジスタ30
0をIDフィールド402でインデックスして、プロフ
ァイリングソフトの割り込みハンドラーのコストを多数
の命令サンプルにわたり償還できるようにするのが有用
である。命令セット内の命令が選択された命令であるか
どうかを決定することは、「ワイヤドOR」オペレーシ
ョンを用いて行うことができる。
【0055】ランダムサンプリング 本発明のプロファイリングのオーバーヘッドは、同時に
プロファイリングすることのできる命令の数を制限する
ことにより減少され、例えば、ビット401がセットさ
れる。プログラム又はプログラムの一部分において各命
令をプロファイリングするのではなく、ここでは、プロ
ファイリングされるべき命令が、プロセッサパイプライ
ン200の特定の段階中に、例えば、フェッチの間に選
択され、そしてその選択された命令がサンプルビット4
01のアサートによりタグ付けされる。サンプルビット
401がアサートされた場合には、パイプライン200
の要素がプロファイル情報をプロファイルレジスタファ
イル300へ送る。ここに記載する命令レベルプロファ
イリングをサポートする詳細について以下に述べる。フライト中状態 第1に、プロセッサパイプライン200を通過する各デ
コードされた命令状態は、上記のように、付加的な情報
で増強される。命令は、それがフェッチされたときか
ら、それがリタイア又はアボートするときまで、フライ
ト中であるとみなされる。上述したように、命令は、少
なくとも1つのサンプルビット401で増強される。サ
ンプルビット401は、各フライト中命令及びキャッシ
ュ/メモリ要求の状態の一部分である。ビット401が
アサートされると、このビットは、この命令に対してプ
ロファイリング情報が記録されることを示し、さもなく
ば、記録されないことを示す。
【0056】簡単な設計においては、一度に1つのフラ
イト中命令のみが、そのサンプルビット401をアサー
トすることが許される。サンプルビット401は、選択
された命令に対し、その命令がリタイアするか又はアボ
ートされるまで、アサートされたままとなる。多数のレ
ジスタファイル300をもつ更に複雑な設計では、多数
のフライト中命令を個々にプロファイリングすることが
でき、そして付加的なビットをアサートすることができ
る。プロファイルされた命令の選択及びサンプリング フェッチ段の実施について図5に示したように、プロフ
ァイリングされるべき命令の選択及びプロファイル情報
のサンプリングは、次のように行われる。フェッチカウ
ンタ510は、例えば、特権付きプロファイリングソフ
トウェア(PSW)520によりライン511を経て初
期化される。PSW520は、所定サイズを有する値の
間隔からランダムに選択された値でカウンタ510を初
期化することができる。従って、サンプリングされた命
令は、命令の実行における特定のパターンと相関しな
い。間隔のサイズは、サンプリングの平均頻度を決定す
る。カウンタ510の値を初期化するための他のランダ
ム化技術(ハードウェアを含む)も使用できる。
【0057】例えば、公知技術の場合のように命令が固
定頻度でサンプリングされるときのように、ランダムサ
ンプリングが行われないと、例えば、システム100の
収集オペレーションのように、フェッチされた全ての命
令の統計学的に正しいプロファイルを発生することがで
きない。これは、サンプリングレートに対して比較的重
要でない多数の命令を含む実行ループを有する実行スレ
ッド、例えば、命令を有しそしてサンプリング間隔が6
5536個の命令であるループに対して、特に言えるこ
とである。他の通常のサンプリングも同じ問題を有す
る。そこで、2つの命令の一方のみからのサンプルが常
に収集される。1つの効果として、ランダムに選択され
た命令は、サンプリング間隔の長さとは独立した相関を
発生する。各命令400がフェッチされるたびに、カウ
ンタ510がパイプライン200のフェッチユニット2
10によりその初期値から増加されるか、或いは別の実
施形態では、減少される。カウンタ510が、その実施
形態に基づいて、オーバーフローするか又はアンダーフ
ローしたときに、現在フェッチされた命令がそのサンプ
ルビット401をアサートし、そしてIDフィールド4
02は、多数の命令がサンプリングのために選択された
ときにも初期化することができる。
【0058】別の実施形態では、カウンタ510は、各
命令がフェッチされるたびではなく各サイクルごとに増
加され、例えば、カウンタ510は、フェッチの機会を
カウントし、実際にフェッチされる命令をカウントする
のではない。例えば、フェッチユニット210が各クロ
ックサイクル中にIキャッシュ112から4つの項目を
フェッチできる場合には、4つのフェッチ機会がある。
Iキャッシュからの1つ以上のフェッチがミスとなるか
又は「不良」命令をフェッチすることがある。ミスの場
合には、ミスした命令に対して使用できるスロットが
「廃物」を含み、命令を無効とマークすることが必要に
なる。不良命令は、不良の実行経路に存在するものであ
るか、又はさもなくば、アボートされる。フェッチされ
た命令ではなくサイクルをカウントする場合には、設計
を効果的に簡単化する。フェッチされた有効な命令のみ
をカウントする場合には、かなり複雑なものとなる。と
いうのは、制御流が、フェッチされた命令のグループに
向かって又はそこから分岐することができ、従って、全
ての命令をデコードしてどれが有効であるかを決定する
ことが必要となり、もはや、カウンタを4だけ増加する
だけの簡単なことではなくなるからである。
【0059】1つの効果として、サイクル中にIキャッ
シュからフェッチされた全てのもの(良好な命令、不良
の命令、廃物命令)をサンプリングのために選択し、I
キャッシュ112及びパイプライン200の真の性能を
決定することができる。ここでは、バイアスはなく、従
って、システム性能の統計学的に正しい推定値が得られ
る。これは、短い固定の時間周期中に又は離間された固
定の間隔で各有効な命令のみを選択する既知の技術とは
区別されるものである。何れの場合にも、オーバーヘッ
ドを最小にすることが戦略である。システム全体の性能
データを捕獲することのできる技術はない。
【0060】命令のフィルタ動作 選択されたものは、フィルタ505によりフィルタする
ことができる。フィルタ動作は、命令opコード、オペ
ランド、或いは例えば、ある時間周期内で第1形式の命
令の後に別の形式の命令が続くといったより複雑なフィ
ルタ基準に基づいて行うことができる。パイプライン2
00への入力においてフィルタ動作を行う場合には、カ
ウンタ510をリセットすることができる。これを行う
方法は、多数ある。1つの方法では、カウンタ510の
現在初期値が初期値(init)レジスタ513に記憶され
る。命令がフィルタされるときには、初期値レジスタ5
13に記憶された値がカウンタ510に再ロードされ、
初期のランダム化選択が想起される。命令が増強された
後に、パイプライン200は、図2bのプロファイル情
報281−286をレジスタファイル300(1つ又は
複数)に供給する。リタイアユニット250は、命令の
完了又はアボートに応答して、プロファイル情報をファ
イリングを完了し、そしてライン540に割り込み信号
を発生して、PSW520がプロファイル情報をサンプ
リングできるようにする。或いは、PSW520は、内
部プロセッサレジスタ又はメモリ位置(541)を経て
ライン540をポーリングすることもできる。本発明の
技術の1つの特徴として、公知のあるプロファイリング
技術とは対照的に、たとえ本発明の技術がプロセッサに
わたる状態に関する正確な情報を与えるものであって
も、プロセッサのサイクルタイムに何ら影響を与えな
い。唯一の時間制約は、プロファイルレジスタ300が
サンプリングされる前に全てのプロファイル情報を記録
しなければならないことである。
【0061】待ち時間カウンタ 図6は、例示的な待ち時間、フェッチ対マップ(F
M)、マップ対イッシュー(MI)、イッシュー対リタ
イア(IR)、フェッチ対トラップ(FT)、及びイッ
シュー対ldst(ILS)をカウントするための回路
600を示す。この回路600は、ライン611により
ラッチ620に接続されたサイクルカウンタ610を備
えている。サイクルカウンタ610及びラッチ620
は、ライン601上の信号Pfetchにより初期化さ
れる。この信号は、プロファイリングされるべき命令が
フェッチされるときに発生され、例えば、サンプルビッ
ト401から導出される信号である。カウンタ610
は、ライン609のクロック信号により増加される。各
クロック信号は、1つのプロセッササイクルに対応す
る。
【0062】命令400がパイプライン200の段を経
て進行するときに、パイプライン200の段遷移がライ
ン602−606の信号、各々、Pmap、Pissu
e、Pretire、Ptrap及びPLSdoneを
トリガーする。対応するラッチ620は、図3のプロフ
ァイル待ち時間レジスタ(又はフィールド)350に記
憶するためにライン612−616において読み取るこ
とができる。プロファイリングアプリケーション 上記のプロファイリングハードウェアは、種々の異なる
方法で使用することができる。本発明の技術は、個々の
命令の実行に関する非常に詳細な情報を与えるので、1
つのアプリケーションで非常に多数の命令をプロファイ
リングすることができる。サンプル情報はメモリバッフ
ァに記憶され、プロファイリングツールにより後で処理
されて、詳細な命令レベル情報を形成することができ
る。
【0063】この情報は、例えば、各ロード命令に対す
るロード待ち時間のヒストグラム、命令実行時間のヒス
トグラム、及びおそらくは各命令に対するパイプライン
状態の適度に包括的な分析を発生するのに使用できる。
この解決策により与えられる情報の量は、おそらく、か
なり多くなるので、本発明の技術の全メモリオーバーヘ
ッドも、相当の量のメモリトラフィックが含まれるため
に、かなり大きなものとなる。例えば、1秒当たり10
億の命令がフェッチされ、そして各1万のフェッチされ
る命令ごとにサンプリングが実行される場合には、プロ
ファイル情報のデータレートが1秒当たり約2.4MB
となる。以下、プロファイル情報を収集することにより
帯域巾を減少するためのソフトウェア実施方法について
説明する。
【0064】出力プロファイル情報をフィルタすること
によるデータの減少 サンプリングされるデータの量は、プロファイル記録の
あるフィールド、例えば、プロファイルレジスタ300
のデータを、それらが明確に要求されるときを除いて、
無視することにより、減少することができる。システム
100のユーザは、異なるレベルのプロファイリングを
望むことがある。最低のオーバーヘッドモードでは、プ
ロファイリングアプリケーションソフトウェアは、PC
及びリタイア−遅延フィールドのみを用いてプログラム
の全部又は一部分に対してプロファイルレポートを発生
することができる。実行されるべき最適化に基づき、平
均化又は他の統計学的メトリック、例えば、最小、最大
又は標準偏差の計算により他のPCごとの(per-PC)値を
要約することができる。データを処理するための更なる
時間が与えられると、プロファイリングアプリケーショ
ンは、種々の命令待ち時間のヒストグラムを形成するこ
とができる。
【0065】有効なメモリアドレス、分岐ターゲットア
ドレス及び分岐経過サンプルは、おそらく、他のフィー
ルドよりも経費のかかる処理を必要とする。これらのフ
ィールドは、おそらく、特定の最適化タスクを実行する
ためにデータを収集するとき以外は無視することができ
る。命令と命令との間の命令間フェッチ距離がサイクル
で与えられると、プロファイリングアプリケーション
は、同時性のレベルに関する情報も収集することができ
る。又、プロファイリング情報のフィルタ動作は、例え
ば、マスクレジスタ又はプログラマブルロジックのよう
なハードウェア手段により行うこともできる。例えば、
キャッシュミスがあったとき又は命令がリタイアしたと
きにのみサンプルリングするか、或いはopコード、オ
ペランド、アドレス、事象及び待ち時間の他のブール組
合せのみをサンプリングする。
【0066】ハードウェアオペレーションの決定 本発明のプロファイリング技術は、Alpha2126
4プロセッサのようなアウトオブオーダーイッシュープ
ロセッサの内部動作の正確な理解を得るために使用する
ことができる。この形式のマシン編成に関して注目すべ
き第1の事柄の1つは、パイプライン200において命
令がストールする場所が多数ありそしてストールする理
由が非常に多数あることである。例えば、ある命令は、
イッシューユニット230においてストールすることが
ある。というのは、そのオペランドの幾つかがデータレ
ディでなく、選択された命令の実行に必要なリソースの
幾つかが使用できず、又はその命令に先立って他の命令
が実行されるべく選択されるからである。
【0067】ある命令は、仮想−物理的レジスタマッピ
ングを行うマップ段においてストールすることがある。
というのは、マシンが物理的レジスタからのものであ
り、フライト中の命令が非常に多数あり、或いはイッシ
ューユニット230がいっぱいである(実行されようと
している命令を入れる場所がないことを意味する)ため
である。或いは又、ある命令は、リタイアユニットにお
いてストールすることがある。というのは、プログラム
順に既にイッシューされた命令がまだ完了していないか
らである。命令がどこでストールされたか、なぜストー
ルされたかそしてどれほどの時間ストールされたかを正
確に決定することは、主に、その命令が実行されるとき
のマシンの正確な状態によって左右される。プロセッサ
がこのように動的であるために、ソフトウェア性能ツー
ルでこの状態を静的に決定することは困難である。
【0068】オペレーションの概要 図7aに示すように、プロファイリング方法700は、
次のステップを含むことができる。プロファイリング状
態は、ステップ710において初期化される。ここで、
レジスタがクリアされ、そしてカウンタに初期値が指定
される。ステップ720において、命令がフェッチされ
そしてカウントされる。ステップ730において、初期
化以来フェッチされた命令の数が所定のランダム数に等
しいときに命令が選択される。選択された命令は、その
選択を指示するよう増強される。選択された命令が実行
パイプライン200を経て進むときに、ステップ740
においてプロファイル情報が収集される。完了(リタイ
ア又はアボート)時に、収集された情報がステップ74
0においてサンプリングされる。サンプリングされた情
報は、その後の処理のためにバッファすることができ
る。又、特定のプロファイリング状態をサンプリング
し、より詳細な情報を抽出することもできる。
【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つの形式は、単一命令プロファイリ
ングと全パイ プラインスナップショットとの間の妥協を最小にする。
ここで、統計学的な対ごとの(pair-wise) サンプリング
がネスト状に行われ、所与の選択された命令に対して、
同時に実行し得る別の命令が直接サンプリングされる。
【0074】ネスト状のN個ごとのサンプリングに対す
るハードウェアサポート N個ごとのサンプリングは、次のハードウェア特徴を含
む。第1に、ハードウェアは、少なくとも2つの同時フ
ライト中命令に対しプロファイル情報を捕獲できねばな
らない。プロファイルレジスタのセットは、プロファイ
ル記録の多数の個別のセットをサポートするために複写
されねばならず、そして単一サンプルビット401は、
より一般的なIDフィールド402へと増強されねばな
らない。第2に、ハードウェアは、サンプリングレート
の変更により、選択された命令間の距離を動的に変更で
きねばならない。これは、ハードウェア又はソフトウェ
アによって行うことができる。同時サンプリング命令
(N個ごと、但しN>1)のセットのサイズは、カウン
タ及びレジスタの付加的な複写でより大きくすることが
できる。例えば、特権付きプロファイリングソフトウェ
ア520は、対ごとのケースでは2つのフェッチカウン
タ510の初期値がランダムに選択されるところの間隔
のサイズを動的に変更することができる。これは、一対
の命令に対するサンプル間フェッチ距離を同時に特定で
きるようにする。ハードウェアは、ソフトウェアレベル
での最大の融通性を得るために比較的大きなサンプル間
フェッチ距離をサポートすることができる。第2のフェ
ッチカウンタがコアフェッチ命令カウンタ510と同じ
サイズであって、充分な距離に離れた2つの独立した命
令を選択できるのが理想的である。Alpha2126
4プロセッサの場合には10ビットカウンタで充分であ
る。フェッチ命令をカウントするときに同時性を測定す
るには、それより小さなカウンタで充分であり、サイク
ルがカウントされる場合には、それより大きなカウンタ
が必要とされる。ネスト状のN個ごとのサンプリングに
ついては、ハードウェアは、サンプル間フェッチ・対・
フェッチ待ち時間もサイクルで測定して、多数の待ち時
間レジスタ350を時間的に相関させることができねば
ならない。
【0075】ネスト状のN個ごとのサンプリングアプリ
ケーション 高レベルアプリケーションソフトウェアは、ネスト状の
N個ごとのサンプリングを用いて、有効な同時性を測定
することができる。ここでの重要な考え方は、潜在的に
同時に実行し得る命令セットのサンプリングを許すこと
である。ネスト状のサンプリングは、通常のサンプリン
グを正当化する同じ統計学的引数に基づくもので、即ち
サンプリングが繰り返し適用される。N個ごとのサンプ
リングは2つのサンプリングレベルを含むので、著しく
実行されるコードについては最も効果的である。明らか
に、これは、最も重要なところでもある。定義された同時性 図8に示すように、4巾のパイプラインにおける所与の
選択された命令I(810)に対し、潜在的に同時の命
令とは、ある動的な実行中に命令Iと共にプロセッサパ
イプライン200に共存する命令である。これは、命令
Iがフェッチされる前に種々の実行段に存在する命令
と、命令Iがリタイア又はアボートされる前にフェッチ
される命令とを含む。
【0076】例えば、Alpha21264プロセッサ
は、80個のフライト中命令を許すものである。しかし
ながら、実際には、同時即ちフライト中命令の実数は、
おそらく、ハードウェアでサポートされるピーク値より
相当に小さい。他方、予想ミス又は不良経路に沿った推
測的実行は、潜在的同時性のウインドウを増加すること
ができる。Alpha21264プロセッサにおいて同
時性を検討するために、命令I(810)の周りのウイ
ンドウW820の適度なサイズが約100個の命令を含
まねばならないことが提案された。他の実施形態につい
ては、ウインドウの適当なサイズを実験で決定すること
ができる。例えば、約100個の潜在的な同時命令であ
るサイズWのウインドウが与えられると、選択される命
令間のフェッチ距離をランダム化することにより非バイ
アスのサンプリングを行うことができる。例えば、対ご
との各サンプル<I1、I2>(831及び832)に
対し、サンプル間フェッチ距離は、1とWとの間に均一
に分布した擬似ランダム数にセットされる。このよう
に、第1の選択された命令I1と第2の選択された命令
I2との間でサンプル間距離をランダムに変更すると、
命令が実際に時間的に重畳するところの多量の統計学的
情報が捕獲される。
【0077】同時重畳の分析 種々のサンプル間フェッチ距離をもつ同時選択される命
令のセットに対するプロファイル情報は、有効な同時性
統計値を直接的に表す。対応するサンプル情報の各セッ
トを使用し、第1命令I1から時間的に前方にそして第
2命令I2から時間的に後方に見ることにより同時性情
報を決定することができる。各N個ごとの選択された命
令に対して記録されるプロファイル情報は、両命令<I
1、I2>が所与の時間にプロセッサパイプライン20
0に存在するようなインスタンスを正確に考慮する待ち
時間を含まねばならない。更に、待ち時間レジスタのセ
ットを相関させるためには、サンプル間フェッチ待ち行
列が記録されねばならない。又、ネスト状のプロファイ
リングは、放棄した実行経路において命令<I1、I2
>が完了したときを指示することもできる。この詳細な
情報を統計学的に収集して、有効な同時性レベルを反映
する種々のメトリックを形成することができる。
【0078】浪費イッシュースロットの測定 種々のサンプル間フェッチ距離をもつ対ごとの命令サン
プル<I1、I2>の収集は、有効な同時性統計値を直
接的に表す。対ごとの各サンプルを使用して、第1命令
から時間的に前方にそして第2命令から時間的に後方に
見ることにより同時性情報を計算する。命令Iの後にフ
ェッチされた命令に対する性能情報を測定するために、
<I、I2>の形態の対を考える。命令Iの前にフェッ
チされた命令に対する性能を測定するために、<I1、
I>の形態のサンプルされた対を考える。対ごとの各サ
ンプル<I1、I2>に対して記録されるプロファイル
データは、待ち時間レジスタ350に記憶される値であ
って、各時点にプロセッサパイプライン200のどこに
I1及びI2があるかを指示する値と、2セットの待ち
時間レジスタ350を相関させることのできるサンプル
間フェッチ待ち時間とを含む。又、プロファイル記録
は、対<I1、I2>がリタイアするかどうかも指示す
る。
【0079】この詳細な情報を統計学的に収集して、有
効な同時性レベルを反映する種々のメトリックを形成す
ることができる。例えば、命令Iに対する1つの関心の
ある同時性の尺度は、Iがフライト中である間に浪費し
たイッシュースロットの平均数である。浪費したイッシ
ュースロットの数は、図9に示すように決定できる。I
及びI2がリタイアするような形式<I、I2>のサン
プルの数をF1とし、サンプルと共に記録される待ち時
間は、I及びI2の実行が重畳することを指示する(ス
テップ910)。それ故、有効な順方向重畳を伴うサン
プル対の全数をカウントし、これはF1で表される。同
様に、ステップ920において、I及びI2の両方がリ
タイアしそしてそれらの実行が重畳するような形式<I
1、I>のサンプルの数をB1とする。即ち、第2の命
令が第1の命令に対してサンプリングされる場合には順
方向に、そして第1の命令が第2の命令に対してサンプ
リングされる場合には逆方向に、各対が2回考慮され
る。
【0080】次いで、ステップ930において、一致す
るサンプルの数F1+B1に潜在的な同時性のサンプル
ウインドウのサイズWを乗算することにより、命令Iが
フライト中である間にイッシューされる有効命令の数を
統計学的に推定し、即ち形成されるイッシュースロット
の数は、Wx(F1+B1)となる。イッシュースロッ
トで測定される命令Iの累積的待ち時間L1、例えば、
Alpha21264プロセッサで持続できる4/サイ
クルを付加的に決定することにより、ステップ940に
おいて、命令Iの実行中に浪費したイッシュースロット
(WIS)の全数を次のように要約することができる。 WIS=L1−(Wx(F1+B1)) 値WISは、命令Iの実行当たりの浪費イッシュースロ
ットの割合又は平均数を表すように容易に拡張すること
ができる。好都合にも、この平均に寄与する値を増分的
に収集し、データ収集中にコンパクトな記憶を行うこと
ができる。又、これは、1997年3月3日に出願され
たウエイル氏等の「プロセッサ性能カウンタの高頻度サ
ンプリング(High Frequency Sampling of Processor Pe
rformance Counters) 」と題する米国特許出願第08/
812,899号に開示されたような効率的なデータ減
少技術を可能にする。命令Iがフライト中である間にリ
タイアした命令の数、又は命令Iの周りでイッシューさ
れた命令の数のような他の同時性メトリックも同様に決
定することができる。最終的に、命令Iが特定のパイプ
ライン段にある間の特定の実行ユニット240の平均的
な利用のような更に詳細な情報も抽出又は収集すること
ができる。
【0081】単一プロセッササイクル中にパイプライン
段により処理される命令の瞬時平均数の決定 図10に示すように、異なる形式の多路サンプリングを
使用して、固定サイズのプロセッササイクル数にわたり
パイプラインにより処理される命令の平均数を決定する
ことができる。図10は、例えば、リタイアされる命令
の瞬時平均数を決定するための回路を示す。プロセッサ
サイクル中に、パイプライン220のいずれの段100
1についても、同様の回路を使用して、フェッチ、マッ
プ、イッシュー又は実行される命令の平均数を決定する
ことができる。
【0082】装置1000において、先入れ先出し(F
IFO)待ち行列1010及びN容量の加算器1020
の各々は、単一のプロセッササイクル中にパイプライン
の特定の段1001により処理される命令の数(カウン
ト1002)を受け取り、例えば、フェッチ、マップ、
イッシュー又は実行される命令の数を受け取る。FIF
O待ち行列1010におけるエントリの数(P)102
2は、平均値が決定されるところのサイクルの数を決定
する。Pは、ハードウェアで設定されてもよいし、ソフ
トウェアで設定されてもよい。値Pは、平均値が決定さ
れるところのサイクルのウインドウを制御する。加算器
1010はスケール型カウントレジスタ1040に接続
され、従って、このレジスタ1040は、N個のサイク
ル中にリタイアした命令の全数を累積することができ
る。FIFO待ち行列1020及びレジスタ1040
は、ライン1021及び1041を経て初期化すること
ができる。減算器1030は、それまでのN−1サイク
ルにリタイアした命令の数をレジスタ1040から減算
し、例えば、FIFO待ち行列1010のヘッドエント
リに記憶されたカウントを減算する。レジスタ1040
の出力は追跡されたサイクルの数(P)で除算され(1
050)、段1001で処理された実際の命令の動特性
即ち瞬時平均数1060を形成する。瞬時平均値は、プ
ロファイルレジスタ300に捕獲されるか、或いはソフ
トウェアで読み取り可能なプロセッサレジスタ又はメモ
リ位置に記憶される。
【0083】サンプルされた命令がリタイアした命令で
あるときには、コンピュータにより行われた実際の
「真」の有効作業を計算することができる。これは、相
対的なプロセッサ性能を指示するためにしばしば引用さ
れる「生」の命令フェッチレートよりも良好な指示であ
る。例えば、特定のアーキテクチャーは、大きなフェッ
チレートをもつことができるが、パイプラインにおける
ストールが性能を低下することがある。
【0084】命令のクラスター化 又、サンプルされた状態情報を使用し、同時性情報を収
集しながら当該ケースを識別することもできる。例え
ば、命令Iがキャッシュの1つにおいて「ヒット」する
ときに平均同時性レベルを計算し、次いで、平均同時性
レベルを、命令Iがキャッシュミスを招く場合と比較す
ることが有用である。変化する同時性レベルと相関する
ために検討すべき他の当該特徴は、レジスタ依存性スト
ール、キャッシュミスストール、分岐予想ミスストー
ル、及び最近の分岐経過を含む。一般に、N個ごとのサ
ンプリングは、W個の命令のウインドウにわたりF(I
1、I2)と表すことのできるファンクションの値をサ
ンプリングすることにより種々の異なるメトリックを統
計学的に計算できるようにする著しい融通性を与える。
対応する公知のハードウェアメカニズムとは対照的に、
ここに与えられる融通性は、N個ごとのサンプリング
を、複雑なプロセッサに関する同時性情報を捕獲するた
めの非常に優れた選択肢にする。これは、新規なメトリ
ック及び分析技術の設計を可能にするためである。標準
的なSPECベンチマークソフトウェアを実行するプロ
セッサでの実験では、統計学的に収集されたサンプルを
ベースとするメトリックは、低いオーバーヘッドの完全
な情報で得られた値に収斂することが示されている。
【0085】経路プロファイル 命令のクラスターをプロファイリングする付加的な効果
は、経路プロファイルが得られることである。経路プロ
ファイルは、多数のコンパイラー最適化及びトレースス
ケジューリングに有用である。更に、最近の分岐実行経
過と共にプログラムの実行経路に沿った多数のポイント
を制限することにより、経路プロファイルが明確化され
る。この明確化は、N個ごとのサンプリングとで改善さ
れ、即ちNが増加するにつれて、明確化が改善される。
著しく実行されるコードの場合には、同時プログラム
が、全ての実行命令に対しパイプライン200の各段に
おいて命令の相対的な実行順序を示すことができる。従
って、ここでは、オペレーティングシステムにおける実
行パイプライン200の実際のオペレーションを統計学
的に再構成することができる。
【0086】ランダムにサンプルされるプロファイル情
報の他のアプリケーション マイクロプロセッサの最新の世代は、考えられる最高の
性能を与えるためにコンピュータアーキテクチャーが許
す全ての策略を利用する。これらのマイクロプロセッサ
は、サイクル当たり多数の命令をフェッチし、イッシュ
ーしそしてコミットする。更に、これらのプロセッサ
は、命令を順序ずれして実行する。それらのあるもの
は、メモリオペレーションも順序ずれして実行する。不
都合なことに、プロセッサにより使用される多数の発見
的メカニズムが命令及びメモリオペレーションを順序ず
れしてイッシューするので、性能特性がかなり変化し得
る。1つの効果として、ここに述べるプロファイリング
技術は、システム100の性能を自動的に改善できるよ
うに、システムがプログラムの性能を充分詳細に測定で
きるようにすることである。
【0087】最適化 又、本発明のプロファイリング技術は、システム100
の最適化を実行するのにも使用できる。以下の説明は、
プログラマー及びコンパイラーで指令されるソフトウェ
アプログラムの最適化を手引きするよう意図されたもの
である。
【0088】ハードウェアの最適化 アウトオブオーダーのスーパースカラーマイクロプロセ
ッサは、データ及びリソースの利用状態に基づいて命令
をスケジューリングし直すので、コンパイル−時間命令
スケジューリングは、構造的に簡単なプロセッサの場合
よりも重要性がかなり低い。ここでは、主なボトルネッ
クは、命令フェッチ及びメモリオペレーションによるも
のである。より詳細には、分岐又はジャンプ予想ミス、
オンチップキャッシュミス、及びTLB欠陥によりプロ
セッサパイプライン200においてサイクルが失われ
る。これらは、静的に推測することが不可能でないまで
も困難な状態である。又、高レベルオフチップオペレー
ションにおける遅延に対しても、キャッシュミス、リソ
ーストラップ及び順序づけトラップのために、サイクル
が失われる。失われたサイクルは、時間を浪費する。従
来の事象カウンタでは、これらの性能低下事象の合計数
を測定することはできるが、失われたサイクルをプログ
ラムの特定の命令に起因させることは不可能ではないま
でも非常に困難である。ここに述べるプロファイリング
技術は、ユーザが主な性能問題を測定して、それら問題
を特定の命令に相関させることができるようにする。
【0089】フロントエンド最適化 性能の助けとなる1つのフロントエンド最適化は、基本
的ブロックにおいて命令をそして手順において基本的ブ
ロックを順序付けし直すことである。基本的ブロックと
は、1つの単位として直線的に実行されるか又は全く実
行されない命令のセットとして定義される。手順とは、
一般に、コール命令を経て到達する基本的ブロックの凝
集セットである。手順は、多数の基本的ブロックを含む
ことができる。基本的ブロックにおいて命令をそして手
順において基本的ブロックを順序付けし直すことは、ペ
ージ及びキャッシュの一時的な位置を最適化すると共
に、分岐の数を減少するように実行流及びデータアクセ
スを変更できるようにする。分岐は、実行流しか再指令
せずそしてデータにおいて有効に作用しないので、サイ
クルを浪費する。この最適化は、入力として、制御流グ
ラフエッジ周波数を知る必要がある。
【0090】トレースの形成 同様に、命令のスケジューリングを追跡するために、コ
ンパイラーは、制御流グラフのエッジ又は経路周波数を
必要とする。トレーススケジューラは、各基本的ブロッ
ク又はより大きな実行経路を実行するのにどれほどの時
間を要するかの推定値を有するときは非常の良好なジョ
ブを行うことができる。アルタ・ビスタサーチエンジン
のような大規模な動作システムの場合には、これを従来
のツールでリアルタイムに測定することが困難である。ホット/コールド最適化及び経路情報 トレーススケジューリング及びホット/コールド最適化
のような多数のコンパイラー最適化は、プログラムによ
りどの実行経路が頻繁にとられるかを知ることに依存し
ている。これらは「ホット」経路と称する。最近まで、
計装又は模擬のいずれかによりプログラムをプロファイ
リングすることにより、頻繁に実行される経路が推測さ
れて、基本的なブロック又はエッジカウントが収集さ
れ、そしてこれらのカウントを用いて、ホット及びコー
ルド経路が間接的に推測される。
【0091】最近、経路情報を直接収集するための技術
が使用されている。これらの技術は正確な経路情報を与
えるが、非常に高いオーバーヘッドをもつ傾向があり、
アクティブな大規模コンピュータシステムを測定するに
は不適当である。本発明のプロファイリングでは、経路
情報を最小のオーバーヘッドでランダムに捕獲すること
ができ、そして実際の実行流の統計学的に正しい概観を
依然として表すことができる。
【0092】分岐経過レジスタ ほとんどの近代的なマイクロプロセッサは、グローバル
な分岐経過レジスタにおいて最後のN個の分岐の方向を
追跡する。分岐経過レジスタは、移動ウインドウとし
て、最近の分岐予想を観察し、そしてそれに応じて将来
の命令フェッチに作用を及ぼすことができる。命令のP
Cがサンプリングされると共に、このレジスタの内容を
命令フェッチ時間に捕獲することにより、時には、制御
流グラフの静的な分析を使用して、プロセッサがとらね
ばならない最後のN個の分岐により厳密な経路を仮定す
ることができる。しかしながら、従来の経過レジスタ
は、通常、分岐の方向しか含まず、実際のターゲット行
先を含まないので、情報が不正確なものとなる。特に、
制御流の合流は、実際にとられた経路を識別する上であ
いまいさを招く。又、分岐コードの実行を生じさせる非
同期事象、例えば、割り込み又はコンテクストスイッチ
は、分岐経過ビットを汚染することがある。しかしなが
ら、これらの事象は、比較的稀であり、そしてオペレー
ティングシステムにおけるそれらの発生は、コードにわ
たってランダムに分布されねばならない。頻度の高い経
路を識別するのが目的であるから、予想不能な非同期事
象により発生される「ノイズ性」の分岐経過ビットによ
り生じるものを含む頻度の低い経路を無視することがで
きる。
【0093】図11に示す命令シーケンスについて考え
る。PCアドレスA−E(1101−1105)に命令
がある。アドレスA及びCにおける命令1101及び1
103は、分岐型の命令である。EのPCをもつ命令1
105があって、グローバルな分岐経過における最後の
ビットが1である場合には、CDEで終わるいかなる経
路も除外することができる。というのは、このような経
路の最後の分岐が失敗に終わり、それ故、グローバルな
分岐経過に対応しないからである。しかしながら、ポイ
ントEにおける異なる制御経路の合体により、実行され
た真の経路がAE(1110)又はABCE(111
1)であったときを決定することができない。
【0094】制御流グラフの合流によるあいまいさ 図12は、サンプリングされたPC値を入力として使用
して、プログラム流の静的な分析を実行することのでき
るプロセス1200を示す。選択された命令の経路サン
プルがステップ1210において上記のように捕獲され
る。マシンへの影響を最小にするために、サンプリング
された命令はランダムに選択されるのが好ましい。各
「経路」サンプル1220は、サンプリングされた第1
命令I1のPC1と、命令I1までの最後のN個の条件
付き分岐によりとられる方向(BRANCH HIS
T)とを含む。任意であるが、サンプリングされた情報
は、第1命令の直前に実行される第2命令(I2)のP
C2で増強することもできるし、或いは最後のM個の分
岐のPC値に適用されるあるファンクション、例えば、
ある数の下位ビット又はハッシュ関数を用いて決定され
たビットを選択するファンクションに基づいて選択され
た情報で増強することもできる。ステップ1240にお
いて、経路サンプルを使用して、プログラムの制御流グ
ラフの逆方向分析を実行する。この分析は、サンプリン
グされたデータに一致する実行経路を識別することがで
き(1250)、そしてこの情報を収集して、最適化か
ら更に効果が得られる頻繁に実行される経路を識別する
ことができる(1260)。
【0095】例えば、図11を参照すれば、命令Eにお
いて、1の分岐経過長さが与えられると、経過ビット
「1」により、ソフトウェアツールは、経路セグメント
AE1110及びABCE(1101−1105)を考
えられる経路として識別することができる。分岐経過ビ
ットの値が与えられたときに、静的な分析が、可能性と
して、単一経路セグメントしか識別できないときに、考
えられる最良の成果が得られる。又、プロセスの最近の
実行経過に関する他の情報も、特定の命令に到達するた
めにとられた実行経路を識別する上で助けとなる。有効
な情報の1つの断片は、最近実行された命令の第2のP
C値の知識である。おそらくN個ごとのサンプリングと
共に多数のPC値を使用することにより、1つのPCし
か含まない経路を除外することができる。
【0096】所与のクラスの最後のM個の命令のサンプ
リング 図13に示す別の技術においては、ハードウェアは、パ
イプラインの任意の選択された段、例えばリタイアユニ
ットで処理された最後のM個の命令の各々から少数のビ
ット(B)を捕獲することができる。Bビット1303
は、PCの下位のBビットでもよいし、或いはBビット
は、PC1304に適用されるハードウェア実施ファン
クションF1310を使用して選択することもでき、即
ちB←F(PC)である。ファンクション1310がハ
ッシュ関数である場合には、分岐アドレスの非均一な分
布が回避される。命令のクラスは、例えば、条件分岐、
コール、リターン、アクセス(ロード又は記憶)命令、
間接的分岐、及び間接的コール1321−1326とし
て識別することができる。クラスは、比較器又はマルチ
プレクサのような選択メカニズム1320によりライン
1321を経て選択することができる。又、クラスは、
パイプラインの段、例えば、フェッチ、マップ又はリタ
イア等により識別することもできる。クラスID131
9は、ソフトウェアにより制御される。
【0097】選択されたビットは、MxBビット巾のシ
フトレジスタ1300に記憶することができる。このレ
ジスタは、ソフトウェアの内部レジスタとして或いはメ
モリ位置として図5のPSW520へアクセスすること
ができる。識別されたクラスの命令1321−3124
が処理されるときには、シフトレジスタ1300は、そ
の上位のBビット1302を破棄するようにシフトされ
る。命令のPC1304の選択されたBビット1303
は、空きビット1305へとシフトされる。従って、レ
ジスタ1300は、これら形式の命令に対し指紋即ち
「経路符号」として働く。レジスタ1300は、例え
ば、実行された最新のM個の分岐を制限する助けをす
る。というのは、現在経路符号に一致しない経路は、考
慮対象から排除できるからである。分岐命令1321に
対し、図2の分岐実行指示287を使用して、サンプリ
ングをトリガーすることができる。
【0098】経路符号により得られる精度の改善は、相
当のものとなり、例えば、B=4、M=6のように、最
後の6個の分岐から4つのビットを節約するだけでも、
標準的なSpecInt95ベンチマークプログラムに
対する実行経路を決定する精度が2倍になる。経路符号
及びグローバルな分岐経過を使用すると、トレースを次
のように分析することができる。トレースにおいて実行
される各命令に対し、次のいずれかに達するまで経路セ
グメントを決定するように逆方向に進行する。 a)グローバルな分岐経過ビットが尽きる、又は b)命令を含むルーチンの開始点に到達する。
【0099】制御流グラフの逆方向進行中に手順のコー
ル命令に遭遇したときには、コールされた手順を通して
逆方向に進行し、そして最終的に、そのコールされた全
ルーチンを通して逆方向に作用するに充分な分岐経過が
あるときに、コール側手順に復帰する。従って、実行流
のより正確な概観が与えられる。キャッシュ及びTLBヒットレートの増強 キャッシュ又は変換ルックアサイドバッファ(TLB)
における高いミスレートは、システムの性能を著しく低
下する。公知の解決策は、一般に、キャッシュミスアド
レスを収集する特殊なハードウェア又は特殊なソフトウ
ェア機構、例えば、TLBを周期的にフラッシュするも
のに依存している。観察されたミスパターンは、頻繁に
アクセスされるページ即ち「ホット」ページのおおよそ
の理解を与え、これは、仮想/物理ページマッピングポ
リシーに影響するように使用することができる。しかし
ながら、完全な分析を行うのに必要なアドレス情報は、
事象が検出されるときまでに得られない。
【0100】図14は、より正確な仮想/物理ページマ
ッピングを実行するのに使用できるプロセス1400を
示す。ステップ1410では、マッピングされるべきコ
ードがシステムにおいて実行される。ステップ1420
では、メモリをアクセスするオペレーション(ロード及
び記憶)がサンプリングのために選択される。オーバー
ヘッドを最小にするためにサンプリングはランダムであ
るのが好ましい。命令が実行される間に、有効な仮想メ
モリアドレスが、ステップ1430において、キャッシ
ュ及びTLBミスと共に識別され、従って、1つの効果
として、事象及びアドレスを特定の命令に直接的に起因
させることができる。同様に、ステップ1440におい
て、高いアクセスレートで隣接ページを識別することが
できる。ステップ1450では、キャッシュ及びTLB
におけるアクセス競合を減少するために、仮想/物理ペ
ージマッピングを調整することができる。ステップ14
60では、隣接ページを大きな「スーパーページ」へと
合成し、ページングオーバーヘッドを減少することがで
きる。
【0101】キャッシュ又はTLBにおいて捕獲され損
なったメモリ参照の仮想アドレスは特定の命令に直接的
に起因させて、ページマッピングポリシーを誘導するに
必要な情報の形式を厳密に与えることができる。アプリ
ケーションのメモリ参照流に関する情報を使用して、オ
ペレーティングシステムの仮想/物理マッピングポリシ
ーを動的に制御すると、大きな直接マップ式キャッシュ
における競合ミスを首尾良く回避し、スーパーページの
形成によるTLBミスレートを低減し、そしてページの
複写及び移動による非均一メモリアクセス時間(NUM
A)マルチプロセッサにおける遠隔メモリ参照の数を減
少することができる。改良された命令スケジューリング コード最適化の間に行われる1つの重要なタスクは、理
想的な命令スケジューリングである。理想的な命令スケ
ジューリングは、メモリ待ち時間による遅延を最小にす
るようにコードを順序付けし直す。基本的なブロックに
おける隣接命令の静的な順序付けは、前世代のインオー
ダー型RISCプロセッサの場合よりも重要性が低い
が、巨視的な命令スケジューリングは、アウトオブオー
ダー型プロセッサにおいて非常に重要である。
【0102】命令スケジューリングについての1つの非
常に困難なものは、ロード及び記憶のスケジューリング
である。これは、静的なスケジューラが、メモリアクセ
ス命令を最適にスケジュールできるようにする厳密な依
存性情報を常に有していないからである。加えて、メモ
リアクセス命令の待ち時間を厳密に予想することが困難
である。命令スケジューラは、通常、メモリアクセスに
関する正確な情報が不充分であるから、一般に、Dキャ
ッシュヒットを仮定してロード及び記憶をスケジュール
する。或いは又、バランス型スケジューリングは、ロー
ド当たり等しい量の待ち時間を含むスケジュールを発生
するよう試みる。これは、ロード/記憶オペレーション
がキャッシュにおいて常にヒットすると常時仮定するこ
とに勝る改良である。
【0103】マルチスレッド型プロセッサにおけるスレ
ッドのスケジューリング マルチスレッド型プロセッサにおいては、上記プロファ
イリング方法を用いて得たスレッドのリソース利用に関
する情報を使用して、全体的なリソース利用度及びスル
ープットを最大にするようにスレッドをスケジューリン
グすることができる。2つのスレッドがリソースの相補
的な使い方を有し、例えば、一方のスレッドが主として
整数演算ユニットを使用するが、他方のユニットは主と
して浮動小数点演算ユニットを使用する場合には、2つ
のスレッドが異なる機能的実行ユニットを使用するの
で、2つのスレッドを同時に動作するようにスケジュー
リングすることができる。同様に、2つのスレッドが競
合するリソース使用を有し、例えば、両スレッドが浮動
小数点演算ユニットを頻繁に使用する場合には、それら
を異なる時間に動作するようにスケジューリングするこ
とができる。
【0104】図14bは、プロセッサの利用度によりス
レッドをスケジューリングするためのプロセスを示す。
オペレーティングシステムにおいて実行されるスレッド
のリソース利用度がステップ1470において測定され
る。ステップ1475では、リソースの利用度が収集さ
れ、そしてそのリソース利用度に基づいてスレッドがセ
ットへと分類される。本発明のサンプリングでは、各ス
レッドが、プロセッサにおける各クラスのリソース、例
えば、整数演算ユニット、浮動小数点演算ユニット、メ
モリユニット、分岐ユニット、イッシューユニット等々
をいかに使用するかを決定することができる。ステップ
1480では、スレッドのリソース利用度を比較して、
非競合実行スケジュールを決定する。所与のクラスのリ
ソースに対する1組のスレッドの合成利用度により、そ
のクラスのリソースが完全利用状態より著しく多く利用
されている場合には、その組のスレッドを一緒にスケジ
ューリングしてはならず(ステップ1490)、逆に、
合成利用度により、そのクラスのリソースが完全利用状
態以下で利用されるか或いは完全利用状態より若干多め
に利用される場合には、それらを一緒にスケジューリン
グするのが有益である(ステップ1485)。
【0105】図15は、命令のスケジューリングを実行
するのに使用できるプロセス1500を示す。マシンコ
ード1510は、図1のシステム100で実行される。
コードが実行される間に、メモリオペレーション命令の
待ち時間がステップ1520において上記のように測定
される。多数の命令、例えば、命令対に対する測定値を
ステップ1530においてサンプリングすることができ
る。サンプリングは、オーバーヘッドを減少するために
ランダムに行うことができる。同じPCをもつ命令に対
してサンプリングされたデータは、ステップ1540に
おいて収集されて、例えば、待ち時間のヒストグラム
(HIST)1541が形成される。ステップ1560
では、マシンコードが順序付けし直される。この再順序
付けは、収集されたヒストグラム情報1541に基づ
く。例えば、長い待ち時間をもつメモリオペレーション
は、それらに依存するオペレーションからできるだけ離
れるように進められる。ステップ1560は、リストス
ケジューリング或いはトレーススケジューリングのよう
なスケジューリングアルゴリズムを使用することができ
る。ランダムサンプリングによりロード及び記憶待ち時
間を収集する場合には、各命令を待ち時間のヒストグラ
ムに基づいてスケジューリングすることができる。本発
明の技術は、全キャッシュシュミレーションの経費を被
ることなく待ち時間情報を収集することにより最適化を
導出するように使用できる。
【0106】プリフェッチ命令の挿入 図16は、測定された待ち時間に基づいてプリフェッチ
命令を挿入するためのプロセスを示す。プリフェッチ命
令の挿入は、メモリから返送されるべきデータを待機す
ることにより生じるプロセッサストールを隠す上で助け
となる技術である。データが実際に必要とされる充分前
にメモリシステムに要求を発生し、そして時々はデータ
が必要になると決定される直前にデータを要求すること
により、コンパイラー及びオプチマイザーは、メモリか
らデータをフェッチするための待ち時間のほとんど又は
全部をしばしば隠すことができる。
【0107】しかしながら、性能を実際に改善するため
には、著しい待ち時間を実際に経験するメモリオペレー
ションに対してのみプリフェッチ命令を挿入することが
望ましく、即ち長い待ち時間を実際に被らないメモリオ
ペレーションにプリフェッチ命令を挿入すると、付加的
なプリフェッチ命令を実行しなければならないためにプ
ログラムが実際上低速化されてしまう。メモリオペレー
ション、特に、プリフェッチから利益を得るロードオペ
レーションを識別するために、プログラム内の種々のメ
モリオペレーションにより経験する平均待ち時間に関す
る統計学的データを収集することが所望される。その一
般的な構成が図16に示されている。ステップ1610
では、プログラム内のメモリオペレーションに対するメ
モリオペレーション待ち時間が測定される。ステップ1
620では、同じプログラムカウンタ(PC)値をもつ
命令に対しサンプリングされたメモリオペレーション情
報が収集される。ステップ1630では、プリフェッチ
を挿入すべき大きなメモリ待ち時間をもつメモリオペレ
ーションのサブセットが識別される。
【0108】ステップ1640では、実行頻度情報及び
測定された待ち時間情報に基づき、これらのメモリオペ
レーションに対してプリフェッチ命令を挿入するのに有
益な位置が識別される。ステップ1650では、その適
当な位置にプリフェッチ命令が挿入される。待ち時間
は、上記のように測定することができる。1つの方法
は、サンプリングハードウェアでメモリオペレーション
の待ち時間を直接測定することである。別の方法は、ロ
ード命令が対の第1サンプルでありそしてロードからの
データの使用が対の第2サンプルであるである場合に、
対構成でサンプリングを行いそして対を探索することに
よるものである。2つのサンプルにおいて待ち時間情報
を探し、そして特に2つのサンプルのイッシュー時間の
差を探すことにより、ロードオペレーションに対するメ
モリシステム待ち時間を推定することができる。
【0109】以上、特定の実施形態について詳細に説明
した。当業者であれば、上記実施形態を変更しても、幾
つかの又は全ての効果が達成されることが明らかであろ
う。それ故、本発明の精神及び範囲内に包含されるこの
ような修正や変更は全て請求の範囲内に含まれるものと
する。
【図面の簡単な説明】
【図1】命令駆動状態サンプリングを伴うコンピュータ
システムのブロック図である。
【図2a】サンプリングされた命令を処理するためのマ
イクロプロセッサ実行パイプラインのブロック図であ
る。
【図2b】サンプリングすることのできる状態情報を示
すパイプラインのブロック図である。
【図3】プロファイル情報を記憶するためのレジスタフ
ァイルのブロック図である。
【図4】増強された命令のブロック図である。
【図5】選択された命令をプロファイリングするための
流れ線図である。
【図6】パイプライン待ち時間を測定するための回路を
示す回路図である。
【図7】プロセスの流れ線図である。
【図7a】命令をサンプリングするプロセスの流れ線図
である。
【図7b】プロセッサパイプラインにより処理される命
令の特性の統計値を推定するためのプロセスを示す流れ
線図である。
【図8a】命令の同時実行を示す図である。
【図8b】命令の同時実行を示す図である。
【図8c】命令の同時実行を示す図である。
【図9】費やされる発生スロットを決定するプロセスを
示す流れ線図である。
【図10】プロセッササイクル中に処理される命令の平
均数を決定するための装置のブロック図である。
【図11】命令シーケンスの制御の流れを示すグラフで
ある。
【図12】制御流を識別するプロセスのデータの流れを
示す図である。
【図13】分岐経過を収集する装置のブロック図であ
る。
【図14a】ページマッピングプロセスの流れ線図であ
る。
【図14b】スレッドスケジューリングプロセスの流れ
線図である。
【図15】メモリ待ち時間の影響を受ける命令スケジュ
ーラの流れ線図である。
【図16】プリフェッチ命令を挿入するためのプロセッ
サ1600の流れ線図である。
【符号の説明】
100 コンピュータシステム 110 プロセッサ 111 パイプライン 112 データキャッシュ(Dキャッシュ) 113 命令キャッシュ(Iキャッシュ) 119 プロセッサ状態をサンプリングするハードウェ
ア 120 オフチップメモリ 121 汎用キャッシュ 122 揮発性メモリ 123 永続的メモリ 130 入力/出力インターフェイス(I/O) 140 バスライン 200 実行パイプライン 205 変換ルックアサイドバッファ(TLB) 210 フェッチユニット 220 マップユニット 230 イッシューユニット 240 実行ユニット 250 リタイアユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェフリー エイ ディーン アメリカ合衆国 カリフォルニア州 94025 メンロ パーク フィフティーン ス アベニュー 884 (72)発明者 ジェームズ イー ヒックス アメリカ合衆国 マサチューセッツ州 02159 ニュートン ボウ ロード 63 (72)発明者 カール エイ ウォールドスパージャー アメリカ合衆国 カリフォルニア州 94027 アサートン パーク ドライヴ 27 (72)発明者 ウィリアム イー ウィール アメリカ合衆国 カリフォルニア州 94114 サン フランシスコ クリッパー ストリート 280

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 複数の処理段を有するコンピュータシス
    テムのパイプラインで処理される命令の特性の統計値を
    推定する方法において、 パイプラインの第1段へ命令をフェッチし;命令をラン
    ダムに選択し;上記選択された命令がパイプラインによ
    り処理される間にシステムの状態情報をサンプルとして
    記録し;上記記録された状態情報をソフトウェアへ通信
    し;そして上記選択された命令のサブセットからの上記
    記録された状態情報を統計学的に分析して、命令の統計
    値を推定する;という段階を備えたことを特徴とする方
    法。
  2. 【請求項2】 上記命令のサブセットは、上記記録され
    た状態情報のファンクションとして選択される請求項1
    に記載の方法。
  3. 【請求項3】 上記ファンクションは、選択された命令
    のアドレス、選択された命令を実行するプロセスの識別
    子、選択された命令が実行されたところのアドレススペ
    ース番号、選択された命令が実行されたところのハード
    ウェアコンテクスト又はスレッド番号を含む状態情報に
    基づいて選択を行う請求項2に記載の方法。
  4. 【請求項4】 上記命令のサブセットは、選択された命
    令に関連した経路識別情報に基づいて選択される請求項
    2に記載の方法。
  5. 【請求項5】 上記ファンクションは、選択された命令
    のOPコードに基づいて選択を行う請求項2に記載の方
    法。
  6. 【請求項6】 上記ファンクションは、選択された命令
    のオペランドの値に基づいて選択を行う請求項2に記載
    の方法。
  7. 【請求項7】 上記ファンクションは、選択された命令
    に対して記録された待ち時間情報に基づいて選択を行う
    請求項2に記載の方法。
  8. 【請求項8】 上記ファンクションは、選択された命令
    に対して記録された事象情報に基づいて選択を行う請求
    項2に記載の方法。
  9. 【請求項9】 上記事象情報は、リタイア/アボート状
    態、キャッシュヒット/ミス状態、分岐実行/非実行状
    態、分岐予想ミス状態、トラップ状態、変換−ルックア
    サイドバッファヒット/ミス状態、及び使用不可リソー
    ス事象を含む請求項8に記載の方法。
  10. 【請求項10】 上記統計値は、選択された命令の特性
    の平均値を含む請求項1に記載の方法。
  11. 【請求項11】 上記統計値は、選択された命令の特性
    の標準偏差を含む請求項1に記載の方法。
  12. 【請求項12】 上記統計値は、選択された命令の特性
    の値の分布ヒストグラムを含む請求項1に記載の方法。
  13. 【請求項13】 上記平均値は、特定の事象が生じる割
    合を含む請求項10に記載の方法。
  14. 【請求項14】 上記平均値は、選択された命令の処置
    及び選択された命令により実行されるメモリアクセスに
    関連した待ち時間を含む請求項10に記載の方法。
  15. 【請求項15】 上記分布は、選択された命令の処置及
    び選択された命令によって実行されるメモリアクセスに
    関連した待ち時間を含む請求項12に記載の方法。
  16. 【請求項16】 上記平均値は、プロセス、スレッド又
    はハードウェアコンテクストの実行レートを含む請求項
    10に記載の方法。
  17. 【請求項17】 上記事象は、リタイア/アボート事
    象、キャッシュヒット/ミス事象、分岐実行/非実行事
    象、分岐予想ミス事象、トラップ事象、変換−ルックア
    サイドバッファヒット/ミス事象、及び不充分なコンピ
    ュータシステムリソース事象を含む請求項13に記載の
    方法。
  18. 【請求項18】 上記統計値は、上記特性の統計学的推
    定値のエラーに関する限界を含む請求項1に記載の方
    法。
  19. 【請求項19】 上記限界は、推定される特定の特性に
    対しサンプル数の平方根の逆数で近似される請求項18
    に記載の方法。
  20. 【請求項20】 上記統計学的推定値のエラーの限界
    は、コンパイラー及びオプチマイザーにより使用される
    請求項18に記載の方法。
  21. 【請求項21】 上記限界は、選択された命令がサンプ
    リングされる割合を動的に制御する請求項18に記載の
    方法。
  22. 【請求項22】 上記事象は、特定の選択された命令を
    パイプラインの特定のパイプライン段に入力することを
    含む請求項13に記載の方法。
  23. 【請求項23】 上記統計学的推定値のエラーの限界
    は、プログラムプロファイリングソフトウェアにより形
    成される請求項18に記載の方法。
JP10375364A 1997-11-26 1998-11-26 プロセッサパイプラインにより処理される命令の特性の統計値を推定する方法 Pending JPH11272518A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/979,899 US5809450A (en) 1997-11-26 1997-11-26 Method for estimating statistics of properties of instructions processed by a processor pipeline
US08/979899 1997-11-26

Publications (1)

Publication Number Publication Date
JPH11272518A true JPH11272518A (ja) 1999-10-08

Family

ID=25527210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10375364A Pending JPH11272518A (ja) 1997-11-26 1998-11-26 プロセッサパイプラインにより処理される命令の特性の統計値を推定する方法

Country Status (3)

Country Link
US (1) US5809450A (ja)
EP (1) EP0919921A3 (ja)
JP (1) JPH11272518A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026583A (ja) * 2008-07-15 2010-02-04 Hiroshima Ichi プロセッサ
JP2010113470A (ja) * 2008-11-05 2010-05-20 Semiconductor Technology Academic Research Center 半導体集積回路
JP2013037716A (ja) * 2012-10-03 2013-02-21 Ryota Shioya 半導体集積回路

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124327A (ja) * 1996-10-16 1998-05-15 Nec Corp インストラクションキャッシュミス率削減方法
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US6026234A (en) * 1997-03-19 2000-02-15 International Business Machines Corporation Method and apparatus for profiling indirect procedure calls in a computer program
US5933643A (en) * 1997-04-17 1999-08-03 Hewlett Packard Company Profiler driven data prefetching optimization where code generation not performed for loops
US6059835A (en) * 1997-06-13 2000-05-09 International Business Machines Corporation Performance evaluation of processor operation using trace pre-processing
US5991708A (en) * 1997-07-07 1999-11-23 International Business Machines Corporation Performance monitor and method for performance monitoring within a data processing system
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6061777A (en) * 1997-10-28 2000-05-09 International Business Machines Corporation Apparatus and method for reducing the number of rename registers required in the operation of a processor
US6070009A (en) * 1997-11-26 2000-05-30 Digital Equipment Corporation Method for estimating execution rates of program execution paths
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
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6163840A (en) * 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
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
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
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
US6195748B1 (en) 1997-11-26 2001-02-27 Compaq Computer Corporation Apparatus for sampling instruction execution information in a processor pipeline
US6000044A (en) * 1997-11-26 1999-12-07 Digital Equipment Corporation Apparatus for randomly sampling instructions in a processor pipeline
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6044447A (en) * 1998-01-30 2000-03-28 International Business Machines Corporation Method and apparatus for communicating translation command information in a multithreaded environment
US6314493B1 (en) * 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US7086035B1 (en) 1999-05-13 2006-08-01 International Business Machines Corporation Method and system for counting non-speculative events in a speculative processor
US6446029B1 (en) 1999-06-30 2002-09-03 International Business Machines Corporation Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
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
US6442679B1 (en) 1999-08-17 2002-08-27 Compaq Computer Technologies Group, L.P. Apparatus and method for guard outcome prediction
US6437783B1 (en) * 1999-09-13 2002-08-20 Intel Corporation Method and system for simultaneously displaying the throughput on multiple busses
US6460010B1 (en) * 1999-09-22 2002-10-01 Alcatel Canada Inc. Method and apparatus for statistical compilation
US6961930B1 (en) 1999-09-22 2005-11-01 Hewlett-Packard Development Company, L.P. Efficient, transparent and flexible latency sampling
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6230114B1 (en) 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
US6550002B1 (en) 1999-11-04 2003-04-15 International Business Machines Corporation Method and system for detecting a flush of an instruction without a flush indicator
US6574727B1 (en) 1999-11-04 2003-06-03 International Business Machines Corporation Method and apparatus for instruction sampling for performance monitoring and debug
US6539502B1 (en) 1999-11-08 2003-03-25 International Business Machines Corporation Method and apparatus for identifying instructions for performance monitoring in a microprocessor
US6631463B1 (en) 1999-11-08 2003-10-07 International Business Machines Corporation Method and apparatus for patching problematic instructions in a microprocessor using software interrupts
US6564297B1 (en) 2000-06-15 2003-05-13 Sun Microsystems, Inc. Compiler-based cache line optimization
SE0002440D0 (sv) * 2000-06-28 2000-06-28 Virtutech Ab Interpreter
US6609208B1 (en) 2000-07-07 2003-08-19 Hewlett-Packard Development Company Energy-based sampling for performance monitoring
US6678840B1 (en) * 2000-08-31 2004-01-13 Hewlett-Packard Development Company, Lp. Fault containment and error recovery in a scalable multiprocessor
US6546453B1 (en) 2000-08-31 2003-04-08 Compaq Information Technologies Group, L.P. Proprammable DRAM address mapping mechanism
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
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
US6662319B1 (en) 2000-08-31 2003-12-09 Hewlett-Packard Development Company, L.P. Special encoding of known bad data
US6738836B1 (en) 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US6622225B1 (en) 2000-08-31 2003-09-16 Hewlett-Packard Development Company, L.P. System for minimizing memory bank conflicts in a computer system
US6754739B1 (en) 2000-08-31 2004-06-22 Hewlett-Packard Development Company Computer resource management and allocation system
US6633960B1 (en) 2000-08-31 2003-10-14 Hewlett-Packard Development Company, L.P. Scalable directory based cache coherence protocol
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
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
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
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
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
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
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
US6751721B1 (en) * 2000-08-31 2004-06-15 Hewlett-Packard Development Company, L.P. Broadcast invalidate scheme
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
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
US6681295B1 (en) 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
US8458754B2 (en) * 2001-01-22 2013-06-04 Sony Computer Entertainment Inc. Method and system for providing instant start multimedia content
US7007270B2 (en) * 2001-03-05 2006-02-28 Cadence Design Systems, Inc. Statistically based estimate of embedded software execution time
US6965982B2 (en) 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US20030088758A1 (en) * 2001-11-08 2003-05-08 Matthew Becker Methods and systems for determining valid microprocessor instructions
US7096390B2 (en) * 2002-04-01 2006-08-22 Sun Microsystems, Inc. Sampling mechanism including instruction filtering
US7185338B2 (en) * 2002-10-15 2007-02-27 Sun Microsystems, Inc. Processor with speculative multithreading and hardware to support multithreading software
DE602004001293T2 (de) * 2003-06-26 2007-05-31 St Microelectronics S.A. Programmintegritätsprüfung mittels Statistiken
US20050091456A1 (en) * 2003-10-23 2005-04-28 Huck Jerome C. Determining an arrangement of data in a memory for cache efficiency
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
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
US20050198555A1 (en) * 2004-03-03 2005-09-08 Wolczko Mario I. Incorporating instruction reissue in an instruction sampling mechanism
US7681196B2 (en) * 2004-11-18 2010-03-16 Oracle International Corporation Providing optimal number of threads to applications performing multi-tasking using threads
US7774758B2 (en) * 2005-05-16 2010-08-10 Texas Instruments Incorporated Systems and methods for secure debugging and profiling of a computer system
US20060267820A1 (en) * 2005-05-16 2006-11-30 Swoboda Gary L Tracing sources with export routing information provided by the source
US20080098204A1 (en) * 2006-10-23 2008-04-24 Sony Computer Entertainment Inc. Method And Apparatus For Improving The Efficiency Of A Processor Instruction Pipeline
US20090019797A1 (en) * 2007-07-19 2009-01-22 Cameron Todd Gunn Simplified Protective Cover Assembly
US9483405B2 (en) 2007-09-20 2016-11-01 Sony Interactive Entertainment Inc. Simplified run-time program translation for emulating complex processor pipelines
US9449314B2 (en) * 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US7827321B2 (en) 2008-10-02 2010-11-02 International Business Machines Corporation Central processing unit measurement facility
US8433759B2 (en) 2010-05-24 2013-04-30 Sony Computer Entertainment America Llc Direction-conscious information sharing
US9081629B2 (en) * 2013-05-19 2015-07-14 Frank Eliot Levine Excluding counts on software threads in a state
US10176013B2 (en) * 2014-03-13 2019-01-08 International Business Machines Corporation Dual/multi-mode processor pipeline sampling
GB2537939B (en) * 2015-05-01 2018-05-02 Imagination Tech Ltd Control path verification of hardware design for pipelined process
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US9547484B1 (en) * 2016-01-04 2017-01-17 International Business Machines Corporation Automated compiler operation verification
US10579492B2 (en) * 2017-12-29 2020-03-03 Intel Corporation Device, system and method for identifying a source of latency in pipeline circuitry
US10824429B2 (en) 2018-09-19 2020-11-03 Microsoft Technology Licensing, Llc Commit logic and precise exceptions in explicit dataflow graph execution architectures
US11875095B2 (en) 2020-07-01 2024-01-16 International Business Machines Corporation Method for latency detection on a hardware simulation accelerator
US11144238B1 (en) * 2021-01-05 2021-10-12 Next Silicon Ltd Background processing during remote memory access
US11853221B2 (en) 2022-02-18 2023-12-26 Hewlett Packard Enterprise Development Lp Dynamic prefetching of data from storage
US11941250B2 (en) 2022-05-06 2024-03-26 Hewlett Packard Enterprise Development Lp Optimizing application execution based on memory-level parallelism (MLP)-based metrics

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4590550A (en) * 1983-06-29 1986-05-20 International Business Machines Corporation Internally distributed monitoring system
US5103394A (en) * 1984-04-30 1992-04-07 Hewlett-Packard Company Software performance analyzer
US4845615A (en) * 1984-04-30 1989-07-04 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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026583A (ja) * 2008-07-15 2010-02-04 Hiroshima Ichi プロセッサ
JP4759026B2 (ja) * 2008-07-15 2011-08-31 公立大学法人広島市立大学 プロセッサ
JP2010113470A (ja) * 2008-11-05 2010-05-20 Semiconductor Technology Academic Research Center 半導体集積回路
JP2013037716A (ja) * 2012-10-03 2013-02-21 Ryota Shioya 半導体集積回路

Also Published As

Publication number Publication date
US5809450A (en) 1998-09-15
EP0919921A3 (en) 2000-02-23
EP0919921A2 (en) 1999-06-02

Similar Documents

Publication Publication Date Title
JP4467094B2 (ja) プロセッサパイプラインにおいて多数の潜在的に同時の命令をサンプリングする装置
JP4294778B2 (ja) プロセッサパイプラインにより処理される相互作用の特性の統計値を推定する方法
JP4467093B2 (ja) プロセッサパイプラインにおいて命令をランダムにサンプリングする装置
US5923872A (en) Apparatus for sampling instruction operand or result values in a processor pipeline
US5809450A (en) Method for estimating statistics of properties of instructions processed by a processor pipeline
US5964867A (en) Method for inserting memory prefetch operations based on measured latencies in a program optimizer
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
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
US6708296B1 (en) Method and system for selecting and distinguishing an event sequence using an effective address in a processing system
US6148396A (en) Apparatus for sampling path history in a processor pipeline
US5751945A (en) Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US6175814B1 (en) Apparatus for determining the instantaneous average number of instructions processed
JP5649613B2 (ja) クリティカルパスに基づく解析のための性能モニタリングアーキテクチャ強化の方法、装置、マイクロプロセッサ、及び、システム
US6189072B1 (en) Performance monitoring of cache misses and instructions completed for instruction parallelism analysis
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
US10628160B2 (en) Selective poisoning of data during runahead
US5881306A (en) Instruction fetch bandwidth analysis
US5729726A (en) Method and system for performance monitoring efficiency of branch unit operation in a processing system