JP2000003295A - 回路、方法及びプロセッサ - Google Patents

回路、方法及びプロセッサ

Info

Publication number
JP2000003295A
JP2000003295A JP11096431A JP9643199A JP2000003295A JP 2000003295 A JP2000003295 A JP 2000003295A JP 11096431 A JP11096431 A JP 11096431A JP 9643199 A JP9643199 A JP 9643199A JP 2000003295 A JP2000003295 A JP 2000003295A
Authority
JP
Japan
Prior art keywords
stage
instruction
reason code
result
reason
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11096431A
Other languages
English (en)
Other versions
JP3537030B2 (ja
Inventor
Elliott Levin Frank
フランク・エリオット・レヴィン
Stuart Moore Roy
ロイ・スチュアート・ムーア
Philip Ross Charles
チャールズ・フィリップ・ロス
Hugh Welbone Edward
エドワード・ヒュー・ウェルボン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2000003295A publication Critical patent/JP2000003295A/ja
Application granted granted Critical
Publication of JP3537030B2 publication Critical patent/JP3537030B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, 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/81Threshold
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 プロセッサ内での命令進行と監視するための
システム及び方法の提供。 【解決手段】 複数の内部ステージを介して命令を処理
するために動作可能なプロセッサが、各ステージで命令
の処理の結果を作るか、そのステージが命令を処理でき
なかった理由の理由コードを作る。結果または理由コー
ドは、後続のステージに渡され、後続ステージは、命令
の処理を試みる。第2ステージは、それ自体の結果を作
ることができず、遊休状態である時に、理由コードを転
送する。第2ステージは、遊休状態ではないが結果を作
ることができない時にはそれ自体の理由コードを生成
し、その理由コードを転送する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的にはデータ
処理システムに適用され、具体的には、そのようなデー
タ処理システム内のパフォーマンス・モニタリングに適
用される。
【0002】
【従来の技術】通常のコンピュータ・システムでは、ソ
フトウェア実行の最適化が、より高いシステム性能を提
供することによってより効率的なシステム設計をもたら
す。メモリ・システムの使用法は、改良のための重要な
機会を提供することができる領域である。メモリ階層ト
ラフィックの注意深い調査から、より高性能のソフトウ
ェア・アルゴリズムの開発を助けることのできる、シス
テム挙動の詳細が明らかになることがわかっている。パ
フォーマンス・モニタは、そのような調査に有用である
が、既存のパフォーマンス・モニタは、そのような目的
に関して短所を有する。
【0003】パフォーマンス・モニタとは、コンピュー
タ・システムが有用な作業を実行する速度に影響する、
選択された内部特性を監視するのに使用される、コンピ
ュータ・システムに組み込まれた機能である。正しく構
成されている時には、パフォーマンス・モニタは、特定
の時点のコンピュータ・システムの内部状態を提供す
る。この測定手段は、これによらなければ入手が困難な
洞察を提供する。
【0004】パフォーマンス・モニタは、通常は抽象的
なインターフェースによって隠蔽されているハードウェ
アの基礎的な詳細を明らかにするという点で重要であ
る。ソフトウェアの移植性を得るために努力する際に
は、抽象化されたインターフェースをソフトウェアに提
示して、ソフトウェアがシステムの詳細を扱う必要をな
くすことが望ましい。この抽象化は、移植性を高める際
には非常に価値があるが、これによって、最適性能を提
供するのに必須のシステム状態のいくつかが不明瞭にな
る。
【0005】通常、パフォーマンス・モニタは、プロセ
ッサの命令実行制御および記憶域制御に関する実装依存
の情報を作成する。パフォーマンス・モニタの機能強化
によって、コンピュータのシステム・メモリからデータ
を取り出すのに必要な時間に関するコストに関するクリ
ティカルな情報が提供される。このような情報は、所与
のシステムの性能を強化する方法や新システムの設計で
の改良点の開発に関してシステム設計者の案内役にな
る。
【0006】メモリ・システムの階層的な性質が原因
で、メモリからデータを取り出すのに必要な時間は一定
ではない。このタイミングを測定するためには、コンピ
ュータのメモリ構造の詳細の特別な考慮が必要になる。
ほとんどのソフトウェアでは、一部のデータが頻繁に使
用され、それ以外のデータはほとんど使用されない。ほ
とんどのコンピュータ・メモリ・システムは、小さいス
テージング区域を組み込むことによって、この事実を利
用している。このステージング区域には、頻繁に使用さ
れるデータが格納される。この区域は、通常は、システ
ム・メモリより小さく、より高速にアクセスできる。こ
れによって、システムは、作業をより高速に完了できる
ようになり、したがって、より高い性能を有する。同様
に、ステージング区域に保持されるいくつかの項目は、
他の項目より頻繁に使用される。これは、追加の二次ス
テージング区域の使用につながる。必要なデータが第1
ステージング区域にない場合、次に、第2ステージング
区域が検査される。項目が第2ステージング区域にない
場合、システム・メモリが検査される。必要なデータが
ステージング区域で見つかる確率が高いので、データの
取出の平均時間は、通常は、階層的に構成されたメモリ
・システムでは短い。その結果、現在のメモリ・システ
ムは、ステージング区域がアクセスの順序でより大きく
より低速になる形のステージング区域の階層として構成
される。
【0007】最も頻繁に再利用されるデータを、使用の
点に最も近いステージング区域(以下では「キャッシ
ュ」と呼称する)に保持することが、明らかに望まし
い。これが達成される度合は、データ・アクセスの平均
時間に影響するので、システム性能にとって非常に重大
である。メモリ階層のこの態様は、所与のデータがキャ
ッシュ内の特定の点で見つからない確度を検討すること
によって定量化することができる。必要なデータがキャ
ッシュに「ない」アクセスを、「キャッシュ・ミス」と
呼ぶ。キャッシュ・アクセスに対するキャッシュ・ミス
の比率を、「キャッシュ・ミス率」と呼ぶ。キャッシュ
・ミス率に付随するのが、キャッシュにないデータを取
得するのに必要な時間の量である。階層キャッシュ・レ
ベルは、順次アクセスされる。第1キャッシュは、通常
は最も高速だが容量が最も少ない。後続キャッシュのそ
れぞれは、容量が大きくなるがアクセス速度が下がる。
所与のデータへのアクセスのコストの測定を可能にする
尺度は、キャッシュがアクセスされる順序を検討するこ
とによって定義される。最初にアクセスされるキャッシ
ュは、アクセスに必要な時間が最小であるという点で、
最も近いとみなされる。その後にアクセスされるキャッ
シュは、最初にアクセスされるキャッシュよりそれ相応
に遠いとみなされる。したがって、必要なデータにアク
セスするのに必要な時間は、そのデータを得るためにア
クセスしなければならないキャッシュの数に関してその
データがどれほど遠いかに依存する。
【0008】
【発明が解決しようとする課題】階層メモリ・システム
を有するコンピュータでは、必要なデータの実際の位置
は、時間に依存し、本質的に予測不能である。その結
果、所与のデータを得るための時間が変動する。キャッ
シュ・ミスのコストを評価するのに使用される標準的な
方法では、キャッシュ・ミスの回数と、キャッシュ・ミ
スのそれぞれの総合持続時間(サイクル単位)の両方が
検討される。現在のコンピュータ・システムでは非常に
並列性の高い実行ハードウェアが使用されているので、
このアプローチは、その効果の正しい観察を提供しな
い。というのは、並列コンピュータ・システムでは、か
なりの度合のアウトオブオーダー(out-of-order)実行
が可能になっているからである。データ・アクセスに必
要な時間が、進行に対して予想されたものより小さい影
響を有することもしばしばである。これは、所与のデー
タにアクセスする間に他の有用な作業を行うことがで
き、したがって、さまざまなユニットで進行が発生する
可能性があるからである。したがって、キャッシュ・ミ
スが進行中のサイクル数を数えても、他のユニットが進
行を行っている可能性があるので、キャッシュ・ミスの
コストが正確には反映されない。したがって、イベント
を単純に数えるだけでは、計算機の状態の全体像は得ら
れない。この状況は、メモリ・データの取出に特有のも
のではなく、時間のかかる計算が進行を妨げる時に、同
様の状況が存在する。当業者に明白な上記および類似の
理由から、データ処理システム内でのイベントの発生の
原因および効果に関する追加情報を供給する、パフォー
マンス・モニタリングのための改良された方法およびシ
ステムを提供することが望ましい。
【0009】
【課題を解決するための手段】本発明は、プロセッサ内
の実行ユニットのそれぞれに、各サイクルに、作られた
ものに関する標識と共に、結果または「理由コード」と
称するもののいずれかを作る能力を与えることによっ
て、前述の必要に対処する。「理由コード」は、所与の
ステージが使用可能な作業を有しない理由を識別する、
通常の命令フローの経路に沿って転送されるメッセージ
とみなすことができる。ユニットは、命令フロー内の後
続ステージに、処理の次の相のために準備ができている
命令か、命令を転送できない「理由」のいずれかを転送
する。
【0010】これをサポートして、パフォーマンス・モ
ニタ制御レジスタは、パフォーマンス・モニタ・カウン
タが「通常選択コード」と「理由コード」のどちらを使
用してカウントしているかを示す新しいフラグを有す
る。1実施例では、モニタは、問題の「理由コード」
が、最も古い命令の完了ステージに関連する「理由コー
ド」と一致する時にカウンタを1つ増分する。
【0011】本発明のアプローチは、命令タグを介して
「理由コード」を伝播することである。このアプローチ
は、所与のユニットに実行される命令が含まれる場合だ
けでなく、ユニットが命令を有しない場合にも命令タグ
が使用されるという点が新規である。実際の命令(すな
わち作業の単位)がない場合、タグの意味は、所与のサ
イクルにパイプラインを流れる命令がない理由に関する
「理由」情報になる。パイプライン内の各命令に関連す
る「理由コード」の追加によって、任意の時点でパイプ
ライン状態を記憶する手段が提供される。具体的に言う
と、「理由コード」によって、所与のユニットの命令が
なくなった理由が識別される。「理由コード」は、所与
の条件の原因と影響への貴重な洞察を提供し、特に、停
止の原因をより正確に識別できる。たとえば、データ依
存性は、ロード・ミスによるか、多数のサイクルを必要
とする除算によって引き起こされる可能性がある。理由
コードによって、この2つの事例が区別される。完了を
ブロックするさまざまな「理由コード」をカウントする
ことによって、特定のタイプのブロックのコストを識別
するための機構が提供される。
【0012】前述の部分は、以下の本発明の詳細な説明
をよりよく理解できるようにするために、本発明の特徴
および技術的長所を大まかに示したものである。本発明
の追加の特徴および長所を、以下で説明する。以下は、
本発明の請求の対象を形成する。
【0013】
【発明の実施の形態】以下の説明では、本発明の完全な
理解を提供するために、具体的なワード長やバイト長な
どの多数の具体的な詳細を開示する。しかし、そのよう
な具体的な詳細なしで本発明を実施できることは、当業
者には明白である。それ以外の場合では、無用な詳細で
本発明を不明瞭にしないために、周知の回路はブロック
図形式で示す。ほとんどの部分で、タイミングの検討な
どに関する詳細は、本発明の完全な理解を得るために必
要でなく、関連技術における通常の技術を有するものの
技術の範囲内である限り、省略した。
【0014】これから図面を参照するが、図示の要素
は、必ずしも原寸通りではなく、同様または類似の要素
には、複数の図面を通じて同一の符号を付す。
【0015】本発明には、命令タグだけではなく、所与
のサイクルに項目が命令パイプラインを流れない理由に
関する「理由コード」情報も含まれる。パイプラインの
概念によれば、命令は、より簡単に処理できる小さい部
分に分割される。これらの部分は、概念的には、ステー
ジまたはユニットからユニットへと流れ、各ユニット
は、その命令によって実行される全体的な動作の一部を
達成する。通常、動作ユニットは、あるクラスの命令か
らの動作を、1サイクルあたり1動作ずつ完了する。パ
イプライン内の各命令に関連する理由コードを追加する
ことによって、任意の時点のパイプライン状態を追跡で
きるようになる。
【0016】ある命令の代わりに特定のサイクルに所与
の動作ユニットによって行われる動作には、3つの興味
深い結果がある。動作ユニットは、要求された動作を完
了している場合と、現在の動作を完了するのにさらに時
間を要する場合と、その動作を実行するのに必要な前提
条件資源がない場合がある。
【0017】第1の場合では、動作ユニットは、対象の
動作を完了しており、別の命令を実行することができ
る。その動作が、パイプライン・ステージの後続ステー
ジが必要投する結果を実施する場合には、問題の動作ユ
ニットは、その結果を必要とするステージにその結果を
転送する準備ができており、一般に、次の動作要素自体
が次の動作または結果を受け入れることができる場合に
は、その結果を転送する。動作ユニットが作る「結果」
は、必ずしも数学的な結果という意味でのデータ値では
ないことを理解することが重要である。「結果」は、問
題の動作の完了に過ぎない場合がある。したがって、ど
の動作も、「結果」を作るとみなすことができ、その
「結果」の後続動作ユニットへの転送を、パイプライン
の流れとみなすことができる。
【0018】第2の場合では、動作ユニットは、要求さ
れた動作を完了しておらず、要求された動作を完了する
にはさらに時間(通常は追加サイクル)が必要である。
この場合、概念上の結果の流れはブロックされる。した
がって、かなりの数の場合において、先行ユニットの
「結果」が前提条件である場合に後続ユニットにその先
行動作ユニットが「結果」を渡すことができない時に、
パイプラインの流れは、このサイクルでブロックされ
る。その1例が、メモリ階層内で必要なデータのアドレ
スを計算する責任を負う動作ユニットの場合である。一
般に、後続のメモリ・アクセス動作ユニットは、データ
にアクセスするためにそのデータのアドレスを必要と
し、したがって、この場合および他の場合に、所与の動
作ユニットのその部分での遅延が、後続ユニットを遊休
状態にさせることによって後続ユニットの進行に影響す
る。
【0019】第2の場合のこの例の重要な点は、後続動
作ユニット自体が次の動作を受け入れることができる場
合に限って、必要なデータのアドレスの計算の遅延が、
後続ユニットを遊休状態にさせることである。後続ユニ
ットが新しい動作および結果を受け入れることができな
い場合、この例の遅延は、効果的に隠蔽される。
【0020】第3の場合は、動作ユニットが、準備がで
きており、要求された動作を達成することができるが、
前提条件が欠けているので達成できない場合である。そ
の1例が、データのアドレスを得るまでメモリ・アクセ
ス・ユニットがデータを得られない時である。動作ユニ
ットは、データのアドレスなどの前提条件が欠けている
時には、後続の動作ユニットに結果を伝播することがで
きない。動作ユニットが後続動作ユニットのための結果
を作ることができず、後続ユニットが遊休状態になる場
合、遊休状態のユニットの連鎖が発生する可能性があ
る。このような遊休状態のユニットの連鎖を、パイプ内
の流体の流れの類推から、一般に「パイプライン・バブ
ル」と称する。最終ステージがバブルだけを作るサイク
ルが、遊休状態が露出されるサイクルである。本発明の
目的は、この「バブル」を意味のある形で使用すること
である。理由コードは、「パイプライン・バブル」を発
生させたユニットに、結果を作らない「理由」を作るこ
とによって「パイプライン・バブル」に「色を付ける」
ように要求することによって、「パイプライン・バブ
ル」の源と原因を把握できるようにするのに使用され
る。
【0021】「バブル」を伝播するパイプラインの類推
に従って、あるユニットが、上流ユニットが結果を作ら
ないので遊休状態になっている場合に、遊休状態のユニ
ットは、上流ユニットから転送された「色付きバブル」
を受け取り、所与のユニットの「結果」に依存する下流
の依存ユニットに「理由」を転送する。後続の要素は、
「結果」または「理由」と共に転送される、提供された
フラグによって、「結果」と「理由」を区別する。やは
り、「色付きバブル」を伝播するパイプの類推が、これ
を理解するのに役立つ。転送の効果は、流れが最終ステ
ージ(通常は「完了」ユニット)に達するまで、流れの
方向へユニットからユニットへ継続される。
【0022】「色付きバブル」の類推を使用すると、こ
の議論から、最終ユニットから発するバブルを観察する
ことによって遊休状態を把握できることが明白であり、
これによって、多数の簡単に実施されるアカウンティン
グ方式のための方法がもたらされる。1つの可能な実施
例では、カウンタのテーブルへの指標として「パイプラ
イン・バブル」を表す「理由コード」の数値を使用し、
したがって、ユニットと停止を引き起こす条件を一意に
関連付けるカウンタを1つ増分する。代替実施例では、
比較回路に結合された1つまたは複数のセレクタ・フィ
ールドが使用される。「パイプライン・バブル」に対応
する「理由コード」が、プログラム可能なセレクタの値
と一致する場合には、適当なカウンタを1つ増分する。
【0023】理由コードは、所与の状態の原因および影
響に対する貴重な洞察を提供する。たとえば、データ依
存性は、ロード・ミスまたは多数のサイクルを必要とす
る除算によって引き起こされる可能性がある。理由コー
ドによって、この2つの場合が区別される。完了を妨げ
る異なる理由コードをカウントすることによって、特定
のタイプのブロックの正確な原因を識別できる。
【0024】本発明の異なる展望を提供するために、組
立ラインのコンベヤ・ベルトとの類推を行うことができ
る。この類推では、上で述べた「パイプラインの流れ」
が、組立ラインのコンベヤ・ベルト上の製造品の流れに
類似する。この理想化された組立ラインでは、時間の1
「単位」ごとに、構成要素の追加(たとえば自動車の窓
ガラスの取付け)などの動作によって、物体が完了によ
り近い状態に移動される。そのような組立動作が完了し
た時に、物体は、コンベヤ・ベルト上で次のステーショ
ンに進む。所与のステーションが、要求された組立動作
を完了できない場合には、そのステーションは、一般
に、物体が組立の次の相に進むことを許可することがで
きない。通常は、ステーションが動作を完了しないこと
の有効な理由は、限られた数だけが存在する。組立ライ
ン出力の正味損失を引き起こす動作完了の失敗が必要な
場合、そのステーションは、コンベヤ・ベルトに沿って
メモを送り、そのステーションがその動作を完了しなか
った理由を示すことができる。そのステーションが動作
を完了できない理由が、内部的な理由であれ資源がない
からであれ、ステーションは、コンベヤ・ベルトに沿っ
て理由を転送する。
【0025】その代わりに、理由が、入ってくる作業が
ない(前のステーションが次に加工される物体を提供し
なかった)ことである場合には、ステーションは、直前
のステーションから理由を記されたメモを受け取ること
になる。このメモは、コンベヤ・ベルトを介して次のス
テーションに伝播される。内部的な理由のためにステー
ションが動作を完了できない場合と、外部的な理由(す
なわち、加工すべき物体がこない)による場合の両方を
検討することが重要である。この場合、外部的な理由
は、支配的な理由として選択されなければならない。行
うべき作業がこない場合、そうでなくても作業を行うこ
とができないという事実は無関係である。
【0026】所与の動作を完了するために複数の外部資
源が必要であり、1つまたは複数の資源が使用不能であ
る時に、重要な事例が発生する。その理由が、最も長期
にわたって欠けている資源(最初に使用不能になった資
源)である場合には、後から到着した理由は支配的でな
いので、最も以前に到着した理由を選択しなければなら
ない。したがって、新しい理由は、古い理由によって効
果的に「隠蔽」される。たとえば、バス動作を開始でき
ない時にバス動作の開始を必要とするキャッシュ・ミス
が検出された場合、正しい原因は、最も古い理由にな
る。この場合、バス動作はキャッシュ・ミスの直接の結
果であるから、キャッシュ・ミスが支配的な理由であ
る。
【0027】上で、コンベヤ・ベルトに沿ったステーシ
ョンのすべてが従う処理を大まかに説明した。明らか
に、理由または物体は、完了した物体が集められる最終
ステーションに達するまで、コンベヤ・ベルト上を伝播
する。
【0028】この最終ステーションでは、「アカウント
係」が、組立ラインの動作を監視する。「アカウント
係」は、到着した完了した物体を記録する(時間「単
位」ごとまたはタイム「スロット」ごとに1つ)だけで
はなく、完了した物体が到着しなかったタイム「スロッ
ト」も記録する。
【0029】物体が作られなかったタイム「スロット」
には、その代わりに理由が到着する。理由は、その理由
カテゴリの移動カウントに適用できる。この形で、コン
ベヤ・ベルト/組立ライン上で停止したステーションを
正確に突き止めることができる。
【0030】最終ステーションが完了するためにさまざ
まな資源が必要な時に、興味深い事例が発生する。これ
は、所与の物体が、完了のために複数のサブアセンブリ
を必要とする時に発生する可能性がある。たとえば、出
荷のためにパレットに置かれる、おそらくは完全に異な
る製品を作る複数の製造ラインの場合を検討されたい。
パレットの出荷を支配する規則が、未完了のパレットを
出荷できないというものである場合、パレットは、2つ
の理由(それぞれが異なる組立ラインから来る)で停止
する可能性がある。この場合、両方の理由をカウントす
ることが適当である。
【0031】上記の変形では、最終動作を出荷動作とみ
なすことができ、この出荷動作では、出荷用コンテナ
が、出荷される物体に関してLIFO(後入れ先出し)
順序で梱包される(たとえば、後部に扉が1つしかない
非常に長いデリバリ・バン)と想定されている。この観
点では、組立ラインからの物体を梱包できる事前に定め
られた順序が存在する出荷規則が予想される(たとえ
ば、配送経路の停止点のそれぞれで、コンテナに詰め込
まれたのと逆の順序で物体が取り出されるように、出荷
コンテナのそれぞれが、配送経路に送られる)。
【0032】順序付きの場合には、停止したコンテナを
把握するための適切な方法が、梱包される物体のシーケ
ンスから欠けている最初の物体を探すことによるもので
あることは明白である。最初の欠けている物体に関連す
る理由は、それが最も緊急に必要とされる物体であるか
ら、最も関係の深い理由である。コンテナ内の最初の欠
けている物体が、組立ラインによって供給された時に、
前に2番目に欠けている物体が(あれば)、第1の欠け
ている物体になる。したがって、アカウンティングの処
理は、すべての欠けている物体が到着するまで、「欠け
ている」物体のそれぞれについて実行される。この類推
は、命令が特定の順序(すなわちプログラム順序)で終
了または完了することを保証する完了ステージを有する
プロセッサに最もよく一致する。命令をさまざまな順序
で実行することは許容可能であるが、完了の最終処理
は、プログラム順序で完了することができる。したがっ
て、組立ラインは、プロセッサのパイプライン・ステー
ジを相互接続する論理経路に関連し、最終ステーション
は、プロセッサの完了ユニットであり、固定サイズのL
IFO出荷コンテナは、4命令を完了できるマイクロプ
ロセッサの完了ウィンドウを表す。本発明は、4命令よ
り多数または少数の命令を完了するシステムに適用可能
であることに留意されたい。
【0033】この観点では、4つの所与のウィンドウの
うちの最初の2つだけが終了した場合、プログラム順で
の第3の命令は、完了が2つの命令だけを終了したこと
の理由を提供するはずである。やはり終了していない後
の命令に関連する「理由」は、後の命令がプログラム順
で最初の命令になるまでは重要でない。たとえば、所与
の完了ウィンドウ内の最初の2つの命令の両方が終了し
たが、第3の命令(進行中の除算)と第4の命令(キャ
ッシュ・ミスを伴うロード)が完了していないと仮定す
る。
【0034】2つの命令を完了できない理由として適当
な理由は、除算の停止である。キャッシュ・ミスは、除
算の前に終了し、除算と共に完了するか、完了せず、次
の最初に停止した命令としてカウントされるかのいずれ
かになる。キャッシュ・ミスが先に終了する場合、これ
は、除算停止に隠蔽され、カウントされないはずであ
る。キャッシュ・ミスが除算の後に終了する場合、この
キャッシュ・ミスは、停止の露出された源になり、停止
の原因としてカウントされなければならない。停止サイ
クル数の最終的なカウントは、所与の動作がすべての機
会に「隠蔽」されるとは期待できないので、統計的にさ
まざまな停止の理由にまたがって分布するはずである。
【0035】もう1つの興味深い例が、分岐誤予測が原
因で完了バッファ全体がパージされる場合である。パー
ジの次のサイクルには、完了バッファに命令がなく、理
由コードは、誤って予測された分岐に起因するものにな
る。
【0036】「サンプル状態」を後処理することによっ
て、本発明は、異なるタイプのボトルネックのタイプと
頻度の詳細な判定を行うことができる。総合的なパイプ
ラインの状態は、完了時に捕捉されるので、完了を妨げ
る原因を観察することができる。パフォーマンス・モニ
タと共に実施されるSIAR(Saved Instruction Addr
ess)レジスタが、完了を妨げる命令に対応するコード
を識別するので、サンプリングの反復を介して、サンプ
リングに何度も現れる「ホット・スポット」の典型的な
停止理由コードの正確な情況を得ることができる。特定
の「ホット・スポット」についてサンプルをグループ化
することによって、計算機の状態の分析を行うことがで
きる。たとえば、ブロックが、修正またはデータを以前
に読み取らせることによって軽減できる特定のキャッシ
ュ・ミスによって引き起こされていることを判定でき
る。分析から、正しい経路の実行をブロックしている誤
った経路への投機実行があることが示される場合、その
コードを更新して、この望ましくない効果を回避するこ
とができる。
【0037】ここで図面、具体的には図1を参照する
と、請求項に示された発明によるプロセッサ10の実施
例のブロック図が示されている。図示の実施例では、プ
ロセッサ10に、単一の集積回路パイプライン式スーパ
ースカラ・マイクロプロセッサが含まれる。したがっ
て、下で述べるように、プロセッサ10には、さまざま
な実行ユニット、レジスタ、バッファ、メモリおよび他
の機能ユニットが含まれ、これらのすべてが集積回路か
ら形成される。プロセッサ10には、縮小命令セット・
コンピューティング(RISC)技法に従って動作す
る、IBM Microelectronics社から入手できるPower
PC(商標)系列のマイクロプロセッサのうちの1つ
(たとえばPowerPC(商標)604)を含めるこ
とができる。PowerPC(商標)604プロセッサ
のアーキテクチャおよび動作に関する詳細は、参照によ
って本明細書に組み込まれる「PowerPCTM 604 RISC Mic
roprocessor User's Manual」(注文番号MPR604UMU-01
としてIBM Microelectronics社から入手できる)に記載
されている。しかし、以下の説明から、本発明を他の適
当なプロセッサ内に組み込むことができることを、当業
者は諒解するはずである。
【0038】図1からわかるように、プロセッサ10
は、バス・インターフェース・ユニット(BIU)12
を介してシステム・バス11に結合される。BIU12
は、プロセッサ10と、システム・バス11に結合さ
れ、プロセッサ10およびシステム・バス11と共にデ
ータ処理システムを形成する他の装置(たとえばメモリ
39または別のプロセッサ)との間の情報の転送を制御
する。BIU12は、さらに、命令キャッシュ14およ
びデータ・キャッシュ16に接続され、命令キャッシュ
14およびデータ・キャッシュ16は、それに格納され
た局所データおよび命令の小さいセットへの比較的高速
のアクセス時間をプロセッサ10が達成できるようにす
る。
【0039】命令キャッシュ14は、シーケンサ・ユニ
ット18に接続され、シーケンサ・ユニット18には、
シーケンシャル・フェッチャ2、命令待ち行列4、ディ
スパッチ・ユニット6および完了ユニット8が含まれ
る。シーケンシャル・フェッチャ2は、命令キャッシュ
14から1サイクルあたり4つまでの命令を取り出し、
取り出した命令を、分岐処理ユニット(BPU)20お
よび命令待ち行列4の両方に送る。命令待ち行列4は、
8つまでの命令を保持する。分岐命令は、実行のために
BPU20によって保存され、命令待ち行列4から取り
消される。これに対して、順次命令は、BPU20から
取り消され、プロセッサ10内の順次命令実行回路によ
る後続実行のために命令待ち行列4内で一時的に緩衝記
憶される。ディスパッチ・ユニット6は、実行資源の使
用可能性に応じて、命令待ち行列4からプロセッサ10
の順次命令実行回路へ1サイクルあたり4つまでの命令
をディスパッチする。命令のディスパッチに必要な実行
資源の1つが、完了ユニット8内の16項目のリオーダ
・バッファ9の使用可能な項目である。下で詳細に述べ
るように、リオーダ・バッファ9は、完了ユニット8に
よって、都合によってプログラム順と異なる順序で実行
された命令を、プログラム順に従って待避させるのに使
用される。
【0040】図示の実施例では、プロセッサ10の順次
命令実行回路に、固定小数点ユニットA(FXUA)2
2、固定小数点ユニットB(FXUB)24、複合固定
小数点ユニット(CFXU)26、ロード/ストア・ユ
ニット(LSU)28および浮動小数点ユニット(FP
U)30が含まれる。これらの実行ユニットのそれぞれ
が、各サイクルに特定の命令クラスの1つまたは複数の
命令を実行する能力を有する。たとえば、FXUA22
およびFXUB24は、加算、減算、AND、OR、X
ORなどの数値演算および論理演算を実行する第1のク
ラスの固定小数点命令を実行し、CFXU26は、固定
小数点乗除算などの命令を実行する第2のクラスの固定
小数点命令を実行し、FPU30は、浮動小数点乗除算
などの命令を実行する浮動小数点命令を実行し、LSU
28は、ロード命令およびストア命令を実行し、BPU
20は、分岐命令を実行する。
【0041】プロセッサ10は、BPU20、FXUA
22、FXUB24、CFXU26、LSU28および
FPU30内の複数のパイプライン・ステージで複数の
命令を同時に処理することによって、高性能を達成す
る。このパイプライン式アーキテクチャでは、各命令が
ステージのシーケンスで処理され、各ステージでの処理
は、異なるステージの他の命令の処理と並列に実行され
る。図示の実施例では、命令は、通常は、取出、復号、
ディスパッチ、実行、完了およびライトバックの6ステ
ージで処理される。
【0042】取出ステージの間に、シーケンシャル・フ
ェッチャ2は、命令キャッシュ14内の1つまたは複数
のメモリ・アドレスから1つまたは複数の命令を選択的
に取り出す。取り出された命令のそれぞれは、シーケン
シャル・フェッチャ2によって一意の命令識別子(I
D)を関連付けられることが好ましい。
【0043】その後、復号ステージの間に、BPU20
が、順次命令と分岐命令を区別するために、シーケンシ
ャル・フェッチャ2によって転送された命令を部分的に
復号する。さらに、命令待ち行列4内の実装依存の個数
の順次命令が、ディスパッチ・ユニット6によって並列
に復号される。
【0044】ディスパッチ・ステージでは、ディスパッ
チ・ユニット6が、まずディスパッチされる命令と結果
のために固定小数点リネーム・バッファ34または浮動
小数点リネーム・バッファ38内の項目を予約し、ディ
スパッチされる命令ごとにリオーダ・バッファ9内の1
項目を予約した後に、プログラム順で4つまでの復号さ
れた命令をBPU20、FXUA22、FXUB24、
CFXU26、LSU28またはFPU30のうちの適
当な実行ユニットに選択的にディスパッチする。ディス
パッチ・ステージの間に、ディスパッチされる命令のオ
ペランドも、選択された実行ユニットに供給される。た
とえば、FPU30は、浮動小数点レジスタ(FPR)
36または浮動小数点リネーム・バッファ38から命令
オペランドを取り出すことができる。その一方で、FX
UA22、FXUB24およびCFXU26は、汎用レ
ジスタ(GPR)32、固定小数点リネーム・バッファ
34またはキャリ・ビット・レジスタ42から命令オペ
ランドを取り出すことができる。CFXU26は、MF
SPR(move from SPR)命令の受取に応答して、専用
レジスタ(SPR)40から命令オペランドを得ること
もできる。LSU28は、ディスパッチ・ユニット6か
らのSTORE命令の受取に応答して、GPR32およ
びFPR36のうちの選択された1つからデータを取り
出し、ディスパッチ・ユニット6からのLOAD命令の
受取に応答して、データ・キャッシュ16にデータ・オ
ペランドを要求する。LSU28が要求するLOADオ
ペランドがデータ・キャッシュ16内に常駐していない
場合には、要求されたデータは、BIU12およびシス
テム・バス11を介してメモリ39(または他の外部記
憶装置)から取り出される。
【0045】実行ステージでは、BPU20、FXUA
22、FXUB24、CFXU26、LSU28または
FPU30が、オペランドが使用可能になった時に、そ
れぞれにディスパッチされた命令をそれぞれの都合に合
わせて実行し、これによって、命令をプログラム順に対
してアウトオブオーダーに実行できるようになってい
る。ほとんどの命令の実行結果は、シーケンサ・ユニッ
ト18によって各命令に割り当てられた固定小数点リネ
ーム・バッファ34または浮動小数点リネーム・バッフ
ァ38内の項目に格納される。さらに、CFXU26
は、MTSPR(move to SPR)命令の実行結果を、プ
ロセッサ10内のSPR40または他のSPRに格納す
る。
【0046】完了ステージでは、命令の実行が終了し、
先行する命令が完了したか同一サイクル中に完了する時
に、完了ユニット8が、命令が完了したことを示す。そ
の後、ライトバック・ステージの間に、完了ユニット8
は、固定小数点リネーム・バッファ34からGPR32
へまたは浮動小数点リネーム・バッファ38からFPR
36へのデータのコピーを指示する。プロセッサ10
が、命令のライトバックに応答してアーキテクチャ的状
態を更新するのは、このライトバック・ステージの間で
ある。プロセッサ10は、プログラム順に従って命令の
それぞれのライトバック・ステージを処理し、有利なこ
とに、命令の完了ステージとライトバック・ステージを
指定された情況で組み合わせる。図示の実施例では、各
命令は、命令処理のステージのそれぞれの完了に1機械
サイクルを必要とする。しかし、複合固定小数点命令な
どのいくつかの命令は、複数のサイクルを必要とする可
能性がある。したがって、先行する命令の完了に必要な
時間の変動に応答して、特定の命令の実行ステージと完
了ステージの間で遅延の変動が発生する可能性がある。
【0047】さらに図1を参照すると、前に説明したプ
ロセッサ10の動作を、パフォーマンス・モニタ50を
使用して監視することができる。パフォーマンス・モニ
タ50は、図示の実施例では、命令実行資源および記憶
域制御の利用を記述した詳細情報を提供することのでき
るソフトウェア・アクセス可能な機構である。図1には
図示されていないが、パフォーマンス・モニタ50は、
プロセッサ10の動作のすべての態様の監視を可能にす
るために、プロセッサ10内の機能ユニットのそれぞれ
に結合される。このプロセッサ10の動作の態様には、
イベントの間の関係の再構築、誤ったトリガの識別、性
能ボトルネックの識別、パイプライン停止の監視、遊休
サイクルの監視、ディスパッチ効率の判定、分岐効率の
判定、位置合せされていないデータ・アクセスの性能ペ
ナルティの判定、シリアライゼーション命令の実行の頻
度の識別、禁止された割込みの識別および性能効率の判
定が含まれる。
【0048】図4および図8を参照すると、プロセッサ
10の特徴は、パフォーマンス・モニタ50である。パ
フォーマンス・モニタ50は、PowerPCの命令実
行および記憶域制御の利用に関するかなりの粒度を有す
る詳細情報を提供する目的の、ソフトウェア・アクセス
可能な機構である。一般に、パフォーマンス・モニタ5
0には、実装依存の個数(たとえば2個ないし8個)
の、プロセッサ/記憶域関連のイベントのカウントに使
用されるカウンタ51(たとえばPMC1ないしPMC
8)が含まれる。パフォーマンス・モニタ50には、さ
らに、カウンタPMCnの機能を確立するモニタ・モー
ド制御レジスタ(MMCRn)が含まれ、各MMCR
は、通常はある個数のカウンタを制御する。カウンタP
MCnおよびレジスタMMCRnは、通常は、プロセッ
サ10(たとえばPowerPC)に物理的に常駐する
専用レジスタである。これらの専用レジスタは、mfs
pr(move from special purpose register)命令およ
びmtspr(move to special purpose register)命
令を介して読書きのためにアクセスすることができ、書
込動作は、特権状態またはスーパーバイザ状態で許可さ
れ、読取は、専用レジスタの読取によってそのレジスタ
の内容が変更されないので、問題状態で許可される。異
なる実施例では、これらのレジスタは、I/O空間のア
ドレスなどの他の手段によってアクセス可能とすること
ができる。MMCRnレジスタは、イベント/信号選択
の記録/カウントを可能にするビット・フィールドに区
分される。イベントの許容可能な組み合わせの選択によ
って、複数のカウンタが同時に動作する。
【0049】MMCRnレジスタには、カウンタ・イネ
ーブル・コントロール、カウンタ・ネガティブ割込みコ
ントロール、カウンタ・イベント選択、カウンタ・フリ
ーズ・コントロールなどのコントロールが、実装依存の
個数の、カウントのために選択できるイベントと共に含
まれる。これより大きいまたは小さいカウンタおよびレ
ジスタを使用して、特定のプロセッサおよびバス・アー
キテクチャに対応することができ、その結果、異なる個
数のMMCRnおよびPMCn用の専用レジスタを、本
発明の趣旨および範囲から逸脱せずに使用することがで
きる。
【0050】パフォーマンス・モニタ50は、タイム・
ベース機構52と共に設けられ、タイム・ベース機構5
2には、計算機の状態を保管するための正確な時点を指
定するカウンタが含まれる。タイム・ベース機構52に
は、通常はシステム・バス・クロックに基づく周波数を
有し、同期化されたタイム・ベースを提供するために複
数のプロセッサ10を含むスーパースカラ・プロセッサ
・システムの必須の特徴であるクロックが含まれる。タ
イム・ベース・クロック周波数は、システム・バス・ク
ロックまたは、システム・バス・クロックのなんらかの
分数、たとえば1/4の周波数で供給される。
【0051】タイム・ベース機構52に含まれる64ビ
ット・カウンタ内の所定のビットが、監視されるビット
の反転の間の時間の増分を制御できるように、監視のた
めに選択される。タイム・ベース機構52の同期化によ
って、マルチプロセッサ・システム内の全プロセッサ
が、同期して動作を開始できるようになる。そのような
同期化を実行するための方法の例は、本発明と同一の譲
受人に譲渡され、参照によって本明細書に組み込まれる
関連米国特許出願通し番号第08/675427号明細
書に記載されている。
【0052】タイム・ベース機構52は、さらに、マル
チプロセッサ・システムの各プロセッサ上で同時に発生
するイベントを追跡する方法を提供する。タイム・ベー
ス機構52は、プロセッサ同期化のための単純な方法を
提供するので、マルチプロセッサ・システムのプロセッ
サのすべてが、選択された単一のシステム全域にわたる
イベントを同期化された形で検出し、これに反応する。
任意のビットまたはビットのグループから選択されたビ
ットの遷移が、複数のプロセッサ間の状態の同時カウン
トに使用され、ビットが反転した時またはイベントがカ
ウントされた回数だけ発生した時に割込み信号を発生す
ることができる。動作中には、所定のビットが反転した
時に、タイム・ベース機構52からパフォーマンス・モ
ニタ50に通知信号が送られる。パフォーマンス・モニ
タ50は、計算機状態値を専用レジスタに保管する。異
なるシナリオでは、パフォーマンス・モニタ50は、ネ
ガティブ・カウンタ(ビット0がオン)状態によって信
号が生成される「パフォーマンス・モニタ」割込みを使
用する。オペランドおよびアドレス・データを含む状態
情報を提示する処置は、プロセッサのうちの1つが割込
み処理を禁止されている場合には遅延することができ
る。割込みマスクに起因するデータの消失がないことを
保証するために、割込み状態を示す信号が生成される時
に、プロセッサは、実行中の「1」命令の命令およびオ
ペランド(存在する場合)の実効アドレスを捕捉し、割
込み解決論理57に割込みを提示し、割込み解決論理5
7は、さまざまな割込み処理ルーチン76、77および
79を使用する。これらのアドレスは、システム全域に
わたる信号生成の時のこの目的のために設計されたレジ
スタであるSDAR(Saved Data Address)およびSI
AR(Saved InstructionAddress)に保管される。さま
ざまな実行ユニットの状態も保管される。割込み信号が
生成された時点での、このさまざまな実行ユニットの状
態は、SSR(saved state register)で提供される。
このSSRは、割込みレジスタか、ソフトウェア的にア
クセス可能なSPRとすることができる。したがって、
割込みが実際にサービスされる時には、これらのレジス
タの内容が、信号発生の時点でプロセッサ内で現在実行
中である現行命令に関する情報を提供する。パフォーマ
ンス・モニタ50が、「サンプル・データ」を記録しな
ければならないことを示す通知をタイム・ベース機構5
2から受け取った時には、割込み信号が、BPU20に
出力される。それと同時に、サンプル・データ(計算機
状態データ)が、レジスタまたはI/O空間内のアドレ
スとして適当に提供されるSIAR、SDARおよびS
SRを含むSPR40に置かれる。フラグを使用して、
MMCRn内で定義された選択されたビット遷移に従う
割込み信号生成を示すことができる。もちろん、タイム
・ベース機構52と選択されたビットの実際の実装は、
システムおよびプロセッサの実装の関数である。図5に
示されたものなどのブロック図は、パフォーマンス・モ
ニタリングを含むスーパースカラ・プロセッサ・システ
ム動作の本発明による全体処理の流れを示すものであ
る。この処理は、ブロック61の、スーパースカラ・プ
ロセッサ・システム内の命令の処理から始まる。スーパ
ースカラ・プロセッサ・システム動作中に、パフォーマ
ンス・モニタリングは、モニタ・モード制御レジスタに
よるパフォーマンス・モニタ・カウンタの構成を介して
ブロック63を介して選択された形で実施され、パフォ
ーマンス・モニタリング・データは、ブロック65を介
して収集される。
【0053】パフォーマンス・モニタ・カウントの値を
調節することによって、すなわち、あるイベントの所定
の回数の発生によって例外の信号が生成されるようにカ
ウンタの値を十分に高く設定することによって、システ
ム性能のプロファイルを得ることができる。さらに、こ
の開示の目的のために、パフォーマンス・モニタリング
割込みを、処理のうちの選択可能な点で発生させること
ができる。下で詳細に説明するように、所定の回数のイ
ベントは、停止点を選択するために適当に使用される。
たとえば、2つの命令の完了の後にカウンタが負になる
ようにすることによって、2つの命令の後に終了するよ
うにカウントをプログラミングできる。さらに、この開
示の目的のために、モニタリングが発生する時間は、既
知である。したがって、収集されたデータは、モニタリ
ングが実行された日、時、分などの数に関するコンテキ
ストを有する。下で説明するように、選択されたパフォ
ーマンス・モニタリングには、イベントの間の関係の再
構築、誤ったトリガの識別、性能ボトルネックの識別、
停止の監視、遊休の監視、ディスパッチ・ユニットの動
作の効率の判定、分岐ユニット動作の効率の判定、位置
合せされていないデータ・アクセスの性能ペナルティの
判定、シリアライゼーション命令の実行の頻度の識別、
禁止された割込みの識別および、効率を判定するためLi
ttleの法則の適用が含まれる。
【0054】ブロック67を介して、選択されたパフォ
ーマンス・モニタリング・ルーチンが完了し、収集した
データを分析して、システム性能強化の潜在的な領域を
識別する。ヒストグラムなどのプロファイリング機構
を、収集したデータを用いて構築して、性能を改善でき
るソフトウェアまたはハードウェアの具体的な領域を識
別する。さらに、停止の数、遊休の数など、監視された
イベントのうちで時間に敏感なイベントについて、経過
サイクルの既知の数に対してカウント数データを収集し
て、そのデータが、サンプリング期間に関するコンテキ
ストを有するようにする。収集されたデータの分析は、
「aixtrace」やグラフィカル・パフォーマンス・ビジュ
アライゼーション・ツール「pv」(どちらもIBM Corpor
ation社から入手可能)などのツールを使用することに
よって容易になることを諒解されたい。図6に、PMC
カウンタ、たとえばPMC1およびPMC2などの動作
の制御に適したMMCR0の構成の1つを表す例を示
す。この例からわかるように、MMCR0は、複数のビ
ット・フィールドに区分されており、各フィールドの設
定によって、カウントするイベントの選択、パフォーマ
ンス・モニタ割込みのイネーブル、カウントをイネーブ
ルする条件の指定、閾値(X)の設定を行う。
【0055】閾値(X)は、変数であると同時にソフト
ウェア選択可能であり、その目的は、減少する閾値を超
えるアクセスのカウントを累算することによって、設計
者が衝突の明瞭な情況を得られるように、特定のデータ
の特徴を表せるようにすることである。閾値(X)を超
えたとみなされるのは、データ命令が完了する前にデク
リメンタが0に達した時である。逆に、デクリメンタが
0に達する前にデータ命令が完了した場合には、閾値を
超えたとはみなされない。もちろん、実行されるデータ
命令に応じて、「完了」の意味は異なる。たとえば、l
oad命令の場合、「完了」は、命令に関連するデータ
を受け取ったことを示し、「store」命令の場合、
「完了」は、データが成功裡に書き込まれたことを意味
する。PMC1などのユーザ読取可能なカウンタが、閾
値を超えるたびに適当にインクリメントされる。ユーザ
は、パフォーマンス・モニタ割込みの信号生成の前に閾
値を超えた回数を判定することができる。たとえば、ユ
ーザは、カウンタの初期値を設定して、指定された閾値
を超える100回目のデータ・ミスの際に割込みを引き
起こすことができる。適当な値を用いることによって、
パフォーマンス・モニタ機構は、システム性能問題の識
別での使用に簡単に適するようになる。
【0056】図6を参照すると、この例では、MMCR
0のビット0ないし4とビット18によって、カウント
がイネーブルされるシナリオが決定される。たとえば、
ビット0は、FC(freeze count、カウント禁止)ビッ
トである。ハイの論理レベル(FC=1)の時には、P
MCnカウンタの値は、ハードウェア・イベントによっ
て変更されない、すなわち、カウントが禁止される。ビ
ット0がロウの論理レベル(FC=0)の時には、PM
Cnの値が、選択されたハードウェア・イベントによっ
て変更される。ビット1ないし4は、カウントが禁止さ
れる他の具体的な条件を示す。
【0057】たとえば、ビット1は、FCS(freeze c
ounting while in a supervisor state、スーパーバイ
ザ状態中はカウントを禁止)ビットであり、ビット2
は、FCP(freeze counting while in a problem sta
te、問題状態中はカウントを禁止)ビットであり、ビッ
ト3は、FCPM1(freeze counting while PM=1、P
M=1の間はカウントを禁止)ビットであり、ビット4
は、FCPM0(freezecounting while PM=0、PM=
0の間はカウントを禁止)ビットである。PMは、計算
機状態レジスタ(MSR)(図1のSPR40)のビッ
ト29のパフォーマンス・モニタ・マークド・ビットを
表す。ビット1とビット2について、スーパーバイザ状
態または問題状態は、MSRのPR(特権)ビットの論
理レベルによって示される。これらのビットによるカウ
ント禁止のための状態は次の通りである。ビット1の場
合、FCS=1かつPR=0、ビット2の場合、FCP
=1かつPR=1、ビット3の場合、FCPM1=1か
つPM=1、ビット4の場合、FCPM0=1かつPM
=0。これらのビットによるカウント許可のための状態
は次の通りである。ビット1の場合、FCS=1かつP
R=1、ビット2の場合、FCP=1かつPR=0、ビ
ット3の場合、FCPM1=1かつPM=0、ビット4
の場合、FCPM0=1かつPM=1。ビット5、16
および17は、PMCnによってトリガされる割込み信
号の制御に使用される。ビット6ないし9は、時間また
はイベント・ベースの遷移の制御に使用される。閾値
(X)は、ビット10ないし15によって可変式に設定
される。ビット18は、ロウの時にカウントがイネーブ
ルされ、ハイの時には、PMC1のビット0がハイまた
はパフォーマンス・モニタリング例外の信号が生成され
るまでカウントがディスエーブルされる形で、PMCn
(n>1)のカウント・イネーブルを制御する。ビット
19ないし25は、PMC1のイベント選択すなわち、
カウントされる信号の選択に使用される。
【0058】図7は、本発明の実施例によるMMCR1
の構成を示す図である。ビット0ないし4は、PMC3
のイベント選択を適当に制御し、ビット5ないし9は、
PMC4のイベント選択を制御する。同様に、ビット1
0ないし14は、PMC5のイベント選択を制御し、ビ
ット15ないし19は、PMC6のイベント選択を制御
し、ビット20ないし24は、PMC7のイベント選択
を制御し、ビット25ないし28は、PMC8のイベン
ト選択を制御する。
【0059】MMCR0のビット19ないし25および
ビット26ないし31やMMCR1のビット0ないし2
8などのカウンタ選択フィールドは、具体的な実施態様
によって提供される選択可能なイベントのすべての領域
を指定するのに必要な数のビットを有することが好まし
い。
【0060】性能分析のためにデータを捕捉するために
は、少なくとも1つのカウンタが必要である。カウンタ
が多ければ、それだけ高速かつ高精度の分析がもたらさ
れる。シナリオが厳密に繰り返し可能である場合には、
異なる項目を選択した状態で同一のシナリオを実行する
ことができる。シナリオが厳密に繰り返し可能ではない
場合には、統計データを収集するために同一の項目を選
択して複数回同一のシナリオを実行することができる。
シナリオの開始からの時間は、システム・タイム・サー
ビスを介して入手可能であり、その結果、異なるサンプ
ルと異なるイベントの相関に時間間隔を使用できるよう
になると仮定する。
【0061】パフォーマンス・モニタリングの詳しい説
明については、参照によって本明細書に組み込まれる
「Performance Monitor, PowerPC 604 RISC Microproce
ssor User's Manual」IBM 1994年の第9章、第
9−1ページから9−11ページを参照されたい。この
資料には、図6および図7に示されたレジスタなど、さ
まざまなカウンタPMCnに監視するイベントとその方
法を通知するMMCRnレジスタ内の記憶域に関するコ
ード点を示す2つの表がある。次に図8を参照すると、
本発明を実施するための実施例が示されている。図8に
は、2つのMMCRnレジスタであるカウンタ51を図
示され、SIARレジスタおよびSDARレジスタであ
るSPR40、MMCRnレジスタのさまざまなビット
によって制御されるマルチプレクサ72ないし73によ
って供給される関連する加算器およびカウンタ制御論理
を有するPMC1ないしPMCn(図ではカウンタ1な
いしカウンタNと表記)を有するパフォーマンス・モニ
タ50が示されている。マルチプレクサ72ないし73
は、スレッショルダ71、タイム・ベース機構52から
イベントを受け取り、マイクロプロセッサ内のさまざま
な実行ユニットおよび他のユニットから発する信号であ
る他のイベントを受け取る。パフォーマンス・モニタ5
0のこれらのさまざまな回路要素のすべてが、本明細書
および上で示した関連特許出願書に記載されており、し
たがって、これらの要素の動作をさらに詳細に説明する
ことはしない。
【0062】本発明は、プログラムが非ベキ等演算の順
序付きリストとして指定され、したがって、フォン・ノ
イマン型プロセッサによって実行される命令ストリーム
がプログラム順で実行されるという要件を中心にすえて
いる。この制約は、おそらくはCPU内の作業が実際に
行われる形に影響しないが、命令が完了される形には実
際に影響する。
【0063】一般に、ソフトウェア・システムでは、単
位ソフトウェア動作(命令)の実行が特定の順序で実行
される。もちろん例外が存在するが、全般的に、ソフト
ウェア・システムは、順序付きソフトウェア動作のスレ
ッドとして実施される傾向を有する。一般に、これらの
動作の効果が、プログラムによって指定される順序から
外れた状態でアーキテクチャ的に可視になることは許容
されない。
【0064】たとえば、ソフトウェア・システムを介し
て項目をカウントする時には、現在のカウント値を取得
し、その値を更新し、正しい記憶位置にあるカウント値
を置換する必要がある。これらの動作をアウトオブオー
ダーで実行することは、このようなソフトウェア・シス
テムの所期の目的に役立たない。
【0065】しかし、複数の関連しないソフトウェア機
能を達成しようとする場合には、それらの機能を含む基
本的なソフトウェア動作を、機能の境界にまたがって厳
密な順序で実行する必要がない(すなわち、独立な機能
の構成要素動作の順序をリオーダリングのために修正す
ることができる)ことがしばしばである。スーパースカ
ラ・プロセッサの重要な目的および機能は、関連のない
実行の絡み合ったスレッドをハードウェアで識別するこ
とである。
【0066】一部のCPU編成は、ソフトウェア動作の
総合的な見掛けの実行順序が維持されることを保証する
ことによって、基礎ステップの実行のリオーダリングの
機会を利用できるように設計されている。そのようなC
PU編成の長所は、メモリからの値の取得に起因する遅
延がしばしば隠蔽され、したがって、CPU性能が改善
されることである。
【0067】しかし、この性能の長所が、測定における
短所を提示する。すなわち、基礎ソフトウェア動作のリ
オーダリングは、実際に必要になるより十分に前にメモ
リ値にアクセスできるようにすることによって、長いメ
モリ遅延のコストを削減する。したがって、メモリ・ア
クセスの完了に必要な時間を単純に測定するだけでは不
十分であり、これを行うとペナルティの過大評価がもた
らされる。
【0068】投機実行をサポートするほとんどのパイプ
ライン・スーパースカラ計算機は、何らかのタイプのパ
イプライン制御シーケンサ(「PCS」)を有する。命
令には、通常、PCSまたは命令ディスパッチャ構成要
素によって、何らかのタイプのタグまたは識別番号が与
えられる。命令は、パイプラインを通過する際に、この
割り当てられたタグによって参照される。これらのタグ
は、通常は短く、1時にパイプライン内に存在すること
のできる命令の最大個数を反映するのに十分なビットだ
けを有する。参照によって本明細書に組み込まれる米国
特許出願通し番号第08/888798号明細書に、ソ
フトウェア分析のためにプロセッサの状態を捕捉するた
めのパイプライン・フロー・テーブル・アプローチが開
示されている。本発明では、必要な情報の捕捉を提供す
るためのもう1つのアプローチを定義する。
【0069】次に図2を参照すると、各サイクルに、プ
ロセッサ10内の各ユニットは、結果または理由コード
のいずれか201と標識(I)202を作り、これら
は、ユニットのそれぞれに含まれるレジスタ200に格
納され、最終的に完了ユニット8内のレジスタであるリ
オーダ・バッファ9に収集される。図9を参照すると、
本発明による流れ図が示されている。ステップ801で
は、ユニットが前のユニットから命令(作業の単位)を
受け取ったかどうかを判定する。理由コードは必ず受け
取られる。作業を受け取った時には、空白コードが受け
取られる。ステップ802で、現在のユニットが、命令
に基づく作業を試みる。ステップ803で、ユニットが
結果を作ることができるかどうかを判定する。そうであ
る場合には、ステップ804でその結果を転送し、この
処理はステップ801に戻って、次のサイクルで次の作
業の単位を受け取る。ステップ803で、ユニットが結
果を作ることができない場合、この処理はステップ80
5に進んで、ユニットが遊休状態であるかどうかを判定
する。ユニットが遊休状態である場合には、この処理は
ステップ806に進んで、前のユニットから受け取った
理由コードを転送する。その後、この処理は、次のサイ
クルのためにステップ801に戻る。
【0070】ステップ805で、ユニットが遊休状態で
ない場合には、この処理はステップ807に進んで、ユ
ニットが結果を作れない理由を説明し、この説明を理由
コードとして符号化し、ステップ808で、この理由コ
ードを次のユニットに転送する。その後、この処理はス
テップ803に戻る。
【0071】ステップ801で、前のステージから作業
を受け取っていない場合、この処理はステップ802を
スキップする。
【0072】次の例で、図9に示された処理をさらに説
明する。この例では、3つのステージすなわち、命令を
ディスパッチするためのディスパッチ・ユニット、ディ
スパッチ・ユニットから並列にディスパッチされた命令
を実行するための第1および第2の実行ユニット(たと
えば固定小数点実行ユニットと浮動小数点実行ユニッ
ト)、および完了ユニットを検討する。ディスパッチ・
ユニットは、第1ステージとみなされ、第1および第2
の実行ユニットは、第2ステージにあるとみなされ、完
了ユニットは、第3ステージにあるとみなされる。図9
に示された処理を、第2ステージの第1および第2の実
行ユニットに関して説明する。ディスパッチ・ユニット
が停止し、命令をディスパッチできない場合、第1実行
ユニットは、ステップ801で作業を受け取らない。処
理はステップ803に進んで、第1実行ユニットが結果
を作ることができるか否かを判定する。この例では、第
1実行ユニットは、複数サイクルを必要とする除算演算
を実行している。この例では、ステップ803で、第1
実行ユニットが除算演算を完了しており、結果を作るこ
とができる。したがって、この第2ステージ・ユニット
は、ステップ804に進んで、除算演算の結果を完了ユ
ニットに転送する。
【0073】第2実行ユニットは、ステップ803で、
やはり複数サイクルを必要とする動作を実行している
が、まだ結果を作ることができない(ディスパッチ・ユ
ニットは停止しているので、第2実行ユニットも、それ
を示す理由コードをディスパッチ・ユニットから受け取
っていることに留意されたい)。
【0074】第2実行ユニットは、ステップ805に進
み、第2実行ユニットが遊休状態であるか否かの判定が
行われる。この場合、第2実行ユニットは、上で述べた
ように動作を実行しているので、遊休状態ではない。し
たがって、処理はステップ807に進み、第2実行ユニ
ットが結果を作ることができない理由を符号化した理由
コードが定式化される。この理由コードは、その後、ス
テップ808で完了ユニットに転送される。この処理
は、その後、次のサイクルにステップ803に戻って、
第2実行ユニットが結果を作ることができるか否かを判
定する。第2実行ユニットは、実行中の動作から結果を
作ることができるようになった後に、ステップ804で
その結果を転送する。
【0075】この例で、第2実行ユニットが、ステップ
803で動作を実行していない場合には、ステップ80
5で、第2実行ユニットが遊休状態であるかどうかが判
定され、この処理はステップ806に進んで、ディスパ
ッチ・ユニットから受け取った理由コードを転送する。
【0076】この例で、ディスパッチ・ユニットが命令
(作業)をディスパッチできる場合には、ステップ80
2で、命令を受け取った実行ユニットのすべてが、その
命令の実行を試みる。ステップ803で、実行ユニット
が結果を作ることができる場合には、この結果がステッ
プ804で転送される。実行ユニットが結果を作ること
ができない場合には、処理はステップ805に進む。実
行ユニットがまだ命令に対して動作中であり、したがっ
て遊休状態でない場合には、この処理はステップ807
に進み、実行ユニットは、そのクロック・サイクルに結
果を作ることができない理由(この例では、まだ命令に
対して動作中である)の理由コードを定式化し、ステッ
プ808でその理由コードを転送する。処理はステップ
803に戻って、実行ユニットが次のクロック・サイク
ルに結果を作ることができるか否かをもう一度判定す
る。
【0077】図3を参照すると、取出しステージ30
2、復号ステージ303、実行ステージ304および完
了ステージ305で、図2に示された結果または理由コ
ードが生成され、後続ユニットに渡される、パイプライ
ン式プロセッサを簡略化した図が示されている。理由コ
ードが生成される場合、後続ユニットは、操作すべき結
果を前のユニットから受け取らないので、結果を生成す
ることができない。これらの後続ユニットは、理由が存
在する場合でもそれ自体の理由コードを生成せず、単に
前のユニットから受け取った理由コードを後続ユニット
に渡す。完了ステージ305では、1つまたは複数のパ
フォーマンス・モニタ・カウンタ(図8参照)を実施し
て、特定の理由コードを受け取った回数を数えることが
できる。これは、完了ステージ305で観察された理由
と、レジスタに格納された所定の理由とを比較する、イ
ンデクシング可能なカウンタまたは比較器を用いて行う
ことができる。さらに、パフォーマンス・モニタのPM
I機能を使用して、ある回数だけ理由が発生した時また
は特定の理由が発生した時に割込みを生成することがで
き、これによって、SIAR80またはSDAR82に
プロセッサの状態を格納することができる。
【0078】その結果、取出しステージ302、復号ス
テージ303、実行ステージ304および完了ステージ
305のうちの2つ以上をカウントし、停止条件の処理
後の比較を行うのではなく、完了ステージ305でのカ
ウントだけを行う必要があり、これによって、取出しス
テージ302、復号ステージ303、実行ステージ30
4および完了ステージ305内で停止が発生した条件
が、パフォーマンス・モニタ出力の後処理の必要を減ら
しながら提供される。本発明とその長所を詳細に説明し
てきたが、請求項によって定義される本発明の趣旨およ
び範囲から逸脱せずに、さまざまな変更、置換および代
替を行うことができることを理解されたい。
【0079】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0080】(1)命令を処理するために動作可能な第
1および第2のシーケンシャル・ステージと、上記第1
ステージで上記命令の処理を試みるために動作可能な回
路と、上記第1ステージが上記命令を処理できない場合
に、上記第1ステージが上記命令を処理できない理由を
示す第1理由コードを上記第1ステージで生成するため
に動作可能な回路と、上記第1理由コードを上記第1ス
テージから上記第2ステージへ転送するために動作可能
な回路と、上記第2ステージの動作状態を示す第2理由
コードを上記第2ステージで作成するために動作可能な
回路と、上記第2ステージによって、上記第1理由コー
ドまたは上記第2理由コードのいずれかを第3ステージ
へ転送するために動作可能な回路とを含む回路。 (2)さらに、上記第3ステージで受け取る上記理由コ
ードの機能としてカウント機能を実行するために動作可
能なパフォーマンス・モニタ・カウンタを含む、上記
(1)に記載の回路。 (3)上記カウント機能が、上記理由コードが所定の理
由コードと一致する場合にカウンタを増分する、上記
(2)に記載の回路。 (4)上記第2ステージが結果を作ることができず、遊
休状態である時に、上記第2ステージが、上記第1理由
コードを上記第3ステージに転送する、上記(1)に記
載の回路。 (5)さらに、上記第2ステージに上記第2理由コード
を作らせる上記命令を識別するための回路を含む、上記
(1)に記載の回路。 (6)上記第2ステージで上記命令の処理を試みるため
に動作可能な回路と、上記第2ステージが結果を作るこ
とができない時に、上記第2理由コードを第3ステージ
に転送するために動作可能な回路とをさらに含む、上記
(1)に記載の回路。 (7)第1ステージで命令の処理を試みるステップと、
上記第1ステージが上記命令を処理できない場合に、上
記第1ステージが上記命令を処理できない理由を示す第
1理由コードを上記第1ステージで生成するステップ
と、上記第1ステージから第2ステージへ上記第1理由
コードを転送するステップと、上記第2ステージの後の
第2ステージへ上記第2ステージによって受け取られた
上記第1理由コードを転送するか、上記第2ステージが
結果を作ることができない理由の第2理由コードを作成
し、上記第2理由コードを上記第3ステージへ転送する
かのいずれかを行うステップとを含む方法。 (8)さらに、理由コードを引き起こした上記命令を識
別し、出力するステップを含む、上記(7)の方法。 (9)さらに、上記第3ステージで受け取られた上記理
由コードの機能としてカウント機能を実行するステップ
を含む、上記(7)に記載の方法。 (10)上記第2ステージが、遊休状態であり、結果を
作ることができない時に、上記第2ステージが、上記第
1理由コードを上記第3ステージへ転送する、上記
(7)に記載の方法。 (11)さらに、上記第2ステージが上記第1理由コー
ドを受け取った時であっても、上記第2ステージが結果
を作り、上記結果を上記第3ステージに転送するステッ
プを含む、上記(7)の方法。 (12)命令を処理するために動作可能な第1、第2お
よび第3のシーケンシャル・ステージと、上記第1ステ
ージで上記命令の処理を試みるために動作可能な回路
と、上記第1ステージで上記命令の上記処理の第1結果
を作るか、上記第1ステージが上記命令を処理すること
ができない場合に、上記第1ステージが上記命令を処理
できない理由を示す第1理由コードを上記第1ステージ
で生成するかのいずれかのために動作可能な回路と、上
記第1結果または上記第1理由コードのいずれかを上記
第1ステージから上記第2ステージへ転送するために動
作可能な回路と、上記第1結果を受け取る時に、上記第
2ステージで上記命令の処理を試みるために動作可能な
回路と、上記第2ステージで上記命令の上記処理の第2
結果を作るか、上記第2ステージが上記命令を処理でき
ない場合に、上記第2ステージが上記命令を処理できな
い理由を示す第2理由コードを上記第2ステージで生成
するかのいずれかのために動作可能な回路と、上記第2
ステージが上記第1ステージから上記第1理由コードを
受け取り、上記第2ステージが遊休状態である場合に、
上記第1ステージから受け取った上記第1理由コードを
上記第2ステージの後の第3ステージへ転送するために
動作可能な回路と、上記第2ステージが上記第1結果を
処理できない場合に、上記第2ステージの後の上記第3
ステージへ上記第2理由コードを転送するために動作可
能な回路とを含むプロセッサ。 (13)上記第3ステージが、完了ステージである、上
記(12)に記載のプロセッサ。
【図面の簡単な説明】
【図1】本発明のシステムおよび方法を有利に利用でき
るデータ処理システムを示す図である。
【図2】理由コードを実施するためのレジスタの構成を
示す図である。
【図3】本発明の実施例を実施する、簡略化されたパイ
プライン式プロセッサを示す図である。
【図4】本発明のパフォーマンス・モニタリング態様の
ブロック図である。
【図5】パフォーマンス・モニタリングを含む処理シス
テム動作の、本発明による全体処理フローのブロック図
である。
【図6】複数のカウンタを管理するのに使用される、モ
ニタ制御レジスタ(MMCR0)を示す図である。
【図7】複数のカウンタを管理するのに使用される、モ
ニタ制御レジスタ(MMCR1)を示す図である。
【図8】本発明に従って構成されたパフォーマンス・モ
ニタのブロック図である。
【図9】本発明に従う流れ図である。
【符号の説明】
2 シーケンシャル・フェッチャ 4 命令待ち行列 6 ディスパッチ・ユニット 8 完了ユニット 9 リオーダ・バッファ 10 プロセッサ 11 システム・バス 12 バス・インターフェース・ユニット(BIU) 14 命令キャッシュ 16 データ・キャッシュ 18 シーケンサ・ユニット 20 分岐処理ユニット(BPU) 22 固定小数点ユニットA(FXUA) 24 固定小数点ユニットB(FXUB) 26 複合固定小数点ユニット(CFXU) 28 ロード/ストア・ユニット(LSU) 30 浮動小数点ユニット(FPU) 50 パフォーマンス・モニタ 52 タイム・ベース機構 80 SIAR 82 SDAR
───────────────────────────────────────────────────── フロントページの続き (72)発明者 フランク・エリオット・レヴィン アメリカ合衆国78729 テキサス州オース チン チャペル・ダウン・ストリート 9406 (72)発明者 ロイ・スチュアート・ムーア アメリカ合衆国78660 テキサス州フリュ ーガーヴィル ポイント・ラン・コーブ 702 (72)発明者 チャールズ・フィリップ・ロス アメリカ合衆国78729 テキサス州オース チン ティチェスター・コート 13305 (72)発明者 エドワード・ヒュー・ウェルボン アメリカ合衆国78730 テキサス州オース チン ターキー・クリーク・ドライブ 3637

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】命令を処理するために動作可能な第1およ
    び第2のシーケンシャル・ステージと、 上記第1ステージで上記命令の処理を試みるために動作
    可能な回路と、 上記第1ステージが上記命令を処理できない場合に、上
    記第1ステージが上記命令を処理できない理由を示す第
    1理由コードを上記第1ステージで生成するために動作
    可能な回路と、 上記第1理由コードを上記第1ステージから上記第2ス
    テージへ転送するために動作可能な回路と、 上記第2ステージの動作状態を示す第2理由コードを上
    記第2ステージで作成するために動作可能な回路と、 上記第2ステージによって、上記第1理由コードまたは
    上記第2理由コードのいずれかを第3ステージへ転送す
    るために動作可能な回路とを含む回路。
  2. 【請求項2】さらに、上記第3ステージで受け取る上記
    理由コードの機能としてカウント機能を実行するために
    動作可能なパフォーマンス・モニタ・カウンタを含む、
    請求項1に記載の回路。
  3. 【請求項3】上記カウント機能が、上記理由コードが所
    定の理由コードと一致する場合にカウンタを増分する、
    請求項2に記載の回路。
  4. 【請求項4】上記第2ステージが結果を作ることができ
    ず、遊休状態である時に、上記第2ステージが、上記第
    1理由コードを上記第3ステージに転送する、請求項1
    に記載の回路。
  5. 【請求項5】さらに、上記第2ステージに上記第2理由
    コードを作らせる上記命令を識別するための回路を含
    む、請求項1に記載の回路。
  6. 【請求項6】上記第2ステージで上記命令の処理を試み
    るために動作可能な回路と、 上記第2ステージが結果を作ることができない時に、上
    記第2理由コードを第3ステージに転送するために動作
    可能な回路とをさらに含む、請求項1に記載の回路。
  7. 【請求項7】第1ステージで命令の処理を試みるステッ
    プと、 上記第1ステージが上記命令を処理できない場合に、上
    記第1ステージが上記命令を処理できない理由を示す第
    1理由コードを上記第1ステージで生成するステップ
    と、 上記第1ステージから第2ステージへ上記第1理由コー
    ドを転送するステップと、 上記第2ステージの後の第2ステージへ上記第2ステー
    ジによって受け取られた上記第1理由コードを転送する
    か、上記第2ステージが結果を作ることができない理由
    の第2理由コードを作成し、上記第2理由コードを上記
    第3ステージへ転送するかのいずれかを行うステップと
    を含む方法。
  8. 【請求項8】さらに、理由コードを引き起こした上記命
    令を識別し、出力するステップを含む、請求項7の方
    法。
  9. 【請求項9】さらに、上記第3ステージで受け取られた
    上記理由コードの機能としてカウント機能を実行するス
    テップを含む、請求項7に記載の方法。
  10. 【請求項10】上記第2ステージが、遊休状態であり、
    結果を作ることができない時に、上記第2ステージが、
    上記第1理由コードを上記第3ステージへ転送する、請
    求項7に記載の方法。
  11. 【請求項11】さらに、上記第2ステージが上記第1理
    由コードを受け取った時であっても、上記第2ステージ
    が結果を作り、上記結果を上記第3ステージに転送する
    ステップを含む、請求項7の方法。
  12. 【請求項12】命令を処理するために動作可能な第1、
    第2および第3のシーケンシャル・ステージと、 上記第1ステージで上記命令の処理を試みるために動作
    可能な回路と、 上記第1ステージで上記命令の上記処理の第1結果を作
    るか、上記第1ステージが上記命令を処理することがで
    きない場合に、上記第1ステージが上記命令を処理でき
    ない理由を示す第1理由コードを上記第1ステージで生
    成するかのいずれかのために動作可能な回路と、 上記第1結果または上記第1理由コードのいずれかを上
    記第1ステージから上記第2ステージへ転送するために
    動作可能な回路と、 上記第1結果を受け取る時に、上記第2ステージで上記
    命令の処理を試みるために動作可能な回路と、 上記第2ステージで上記命令の上記処理の第2結果を作
    るか、上記第2ステージが上記命令を処理できない場合
    に、上記第2ステージが上記命令を処理できない理由を
    示す第2理由コードを上記第2ステージで生成するかの
    いずれかのために動作可能な回路と、 上記第2ステージが上記第1ステージから上記第1理由
    コードを受け取り、上記第2ステージが遊休状態である
    場合に、上記第1ステージから受け取った上記第1理由
    コードを上記第2ステージの後の第3ステージへ転送す
    るために動作可能な回路と、 上記第2ステージが上記第1結果を処理できない場合
    に、上記第2ステージの後の上記第3ステージへ上記第
    2理由コードを転送するために動作可能な回路とを含む
    プロセッサ。
  13. 【請求項13】上記第3ステージが、完了ステージであ
    る、請求項12に記載のプロセッサ。
  14. 【請求項14】上記第3ステージが、理由コードを累算
    するための回路を含む、請求項12に記載のプロセッ
    サ。
JP09643199A 1998-04-15 1999-04-02 回路、方法及びプロセッサ Expired - Fee Related JP3537030B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/059,736 US6067644A (en) 1998-04-15 1998-04-15 System and method monitoring instruction progress within a processor
US09/059736 1998-04-15

Publications (2)

Publication Number Publication Date
JP2000003295A true JP2000003295A (ja) 2000-01-07
JP3537030B2 JP3537030B2 (ja) 2004-06-14

Family

ID=22024901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09643199A Expired - Fee Related JP3537030B2 (ja) 1998-04-15 1999-04-02 回路、方法及びプロセッサ

Country Status (3)

Country Link
US (1) US6067644A (ja)
JP (1) JP3537030B2 (ja)
KR (1) KR100309863B1 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341357B1 (en) * 1997-10-08 2002-01-22 Sun Microsystems, Inc. Apparatus and method for processor performance monitoring
US6253338B1 (en) * 1998-12-21 2001-06-26 International Business Machines Corporation System for tracing hardware counters utilizing programmed performance monitor to generate trace interrupt after each branch instruction or at the end of each code basic block
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
US6629170B1 (en) * 1999-11-08 2003-09-30 International Business Machines Corporation Method and apparatus for a byte lane selectable performance monitor bus
US6543003B1 (en) * 1999-11-08 2003-04-01 International Business Machines Corporation Method and apparatus for multi-stage hang recovery in an out-of-order microprocessor
US6775640B1 (en) * 2000-04-28 2004-08-10 Hewlett-Packard Development Company, L.P. Performance adder for tracking occurrence of events within a circuit
US7100124B2 (en) * 2000-07-03 2006-08-29 Cadence Design Systems, Inc. Interface configurable for use with target/initiator signals
US6748583B2 (en) * 2000-12-27 2004-06-08 International Business Machines Corporation Monitoring execution of an hierarchical visual program such as for debugging a message flow
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
US7010675B2 (en) 2001-07-27 2006-03-07 Stmicroelectronics, Inc. Fetch branch architecture for reducing branch penalty without branch prediction
US20030135719A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for tracing instruction disposition information
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US20050071608A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for selectively counting instructions and data accesses
US20050071821A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically select instructions for selective counting
US20050071611A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for counting data accesses and instruction executions that exceed a threshold
US7395527B2 (en) * 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US7937691B2 (en) * 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US20050071612A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations
US20050071610A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for debug support for individual instructions and memory locations
US20050071609A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically take an exception on specified instructions
US8381037B2 (en) * 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US20050086455A1 (en) * 2003-10-16 2005-04-21 International Business Machines Corporation Method and apparatus for generating interrupts for specific types of instructions
US7257657B2 (en) * 2003-11-06 2007-08-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7895382B2 (en) * 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7392370B2 (en) 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US20060184770A1 (en) * 2005-02-12 2006-08-17 International Business Machines Corporation Method of implementing precise, localized hardware-error workarounds under centralized control
US7433803B2 (en) * 2005-04-27 2008-10-07 Freescale Semiconductor, Inc. Performance monitor with precise start-stop control
US7500138B2 (en) * 2006-05-17 2009-03-03 International Business Machines Corporation Simplified event selection for a performance monitor unit
DE102008045767A1 (de) * 2008-09-04 2010-03-11 Continental Teves Ag & Co. Ohg Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung
KR101543326B1 (ko) 2009-01-05 2015-08-10 삼성전자주식회사 시스템 온 칩 및 그 구동 방법
US8943369B2 (en) * 2011-02-21 2015-01-27 Texas Instruments Incorporated Prioritizing stall/reason data into priority information stream over PC/data trace
US9536091B2 (en) 2013-06-24 2017-01-03 Fireeye, Inc. System and method for detecting time-bomb malware
US20150248295A1 (en) * 2014-03-03 2015-09-03 Qualcomm Incorporated Numerical stall analysis of cpu performance
US10223474B1 (en) 2015-09-30 2019-03-05 Riivos, Inc. Traversing a cyclic graph using a modified breadth-first search in complex modeling
US11256748B2 (en) 2018-11-30 2022-02-22 Riivos, Inc. Complex modeling computational engine optimized to reduce redundant calculations

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3544214B2 (ja) * 1992-04-29 2004-07-21 サン・マイクロシステムズ・インコーポレイテッド プロセッサの状態を監視する方法及び監視システム
US5657253A (en) * 1992-05-15 1997-08-12 Intel Corporation Apparatus for monitoring the performance of a microprocessor
US5832511A (en) * 1992-06-11 1998-11-03 Beck Systems, Inc. Workgroup network manager for controlling the operation of workstations within the computer network
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
EP0950946B1 (en) * 1993-11-05 2001-08-16 Intergraph Corporation Software scheduled superscaler computer architecture
US5590351A (en) * 1994-01-21 1996-12-31 Advanced Micro Devices, Inc. Superscalar execution unit for sequential instruction pointer updates and segment limit checks
US5404473A (en) * 1994-03-01 1995-04-04 Intel Corporation Apparatus and method for handling string operations in a pipelined processor
US5446876A (en) * 1994-04-15 1995-08-29 International Business Machines Corporation Hardware mechanism for instruction/data address tracing
US5537541A (en) * 1994-08-16 1996-07-16 Digital Equipment Corporation System independent interface for performance counters
US5513363A (en) * 1994-08-22 1996-04-30 Hewlett-Packard Company Scalable register file organization for a computer architecture having multiple functional units or a large register file
US5557548A (en) * 1994-12-09 1996-09-17 International Business Machines Corporation Method and system for performance monitoring within a data processing system
US5835702A (en) * 1996-10-21 1998-11-10 International Business Machines Corporation Performance monitor
US5987598A (en) * 1997-07-07 1999-11-16 International Business Machines Corporation Method and system for tracking instruction progress within a data processing system

Also Published As

Publication number Publication date
KR19990082730A (ko) 1999-11-25
US6067644A (en) 2000-05-23
KR100309863B1 (ko) 2001-10-29
JP3537030B2 (ja) 2004-06-14

Similar Documents

Publication Publication Date Title
JP3537030B2 (ja) 回路、方法及びプロセッサ
US5691920A (en) Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5797019A (en) Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US6189072B1 (en) Performance monitoring of cache misses and instructions completed for instruction parallelism analysis
US5752062A (en) Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5938760A (en) System and method for performance monitoring of instructions in a re-order buffer
US5751945A (en) Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US6708296B1 (en) Method and system for selecting and distinguishing an event sequence using an effective address in a processing system
US5835702A (en) Performance monitor
US5970439A (en) Performance monitoring in a data processing system
JP3531731B2 (ja) 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム
US7197586B2 (en) Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
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
US5987598A (en) Method and system for tracking instruction progress within a data processing system
US6446029B1 (en) Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
US5881306A (en) Instruction fetch bandwidth analysis
EP0864979A2 (en) Processor performance counter for sampling the execution frequency of individual instructions
US20050154811A1 (en) Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US6499116B1 (en) Performance of data stream touch events
US20040064685A1 (en) System and method for real-time tracing and profiling of a superscalar processor implementing conditional execution
US7617385B2 (en) Method and apparatus for measuring pipeline stalls in a microprocessor
US5748855A (en) Method and system for performance monitoring of misaligned memory accesses in a processing system
US5729726A (en) Method and system for performance monitoring efficiency of branch unit operation in a processing system
US7519510B2 (en) Derivative performance counter mechanism
US6530042B1 (en) Method and apparatus for monitoring the performance of internal queues in a microprocessor

Legal Events

Date Code Title Description
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: 20040302

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040302

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20040302

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040311

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: 20090326

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees