JP5485982B2 - パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム - Google Patents

パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム Download PDF

Info

Publication number
JP5485982B2
JP5485982B2 JP2011506767A JP2011506767A JP5485982B2 JP 5485982 B2 JP5485982 B2 JP 5485982B2 JP 2011506767 A JP2011506767 A JP 2011506767A JP 2011506767 A JP2011506767 A JP 2011506767A JP 5485982 B2 JP5485982 B2 JP 5485982B2
Authority
JP
Japan
Prior art keywords
trace
data
instruction
scheduler
pipeline
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011506767A
Other languages
English (en)
Other versions
JP2011519100A (ja
Inventor
ロバート グレイアム イシャーウッド
イアン オリバー
アンドリュー ウェバー
Original Assignee
イマジネイション テクノロジーズ リミテッド
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 イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2011519100A publication Critical patent/JP2011519100A/ja
Application granted granted Critical
Publication of JP5485982B2 publication Critical patent/JP5485982B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • 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
    • 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/3476Data logging
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3842Speculative instruction execution
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、パイプライン型アーキテクチャを有するデータプロセッサ、及び、そのようなデータプロセッサ内のトレースデータを与える方法及びシステムに関する。
初期のマイクロプロセッサは、一度に1つの命令のみで動作したため、命令はメモリからフェッチされ、デコードされ、論理演算装置により実行され、その結果は、次いで別の命令のためにプロセス全体が繰り返される前に、レジスタ又はメモリに戻って格納される。
プロセッサのクロック速度の増加を可能にするために、現代のマイクロプロセッサは、パイプラインと呼ばれる特徴的構造を用い、フェッチ、デコード、実行、書き込みの種々のステージを通して同時に進行する多数の命令を有する。これは、各ステージがより単純な(したがって、より高速の)論理を含むことを可能にし、より長い動作を含む幾つかのステージに対しては、複数の組の論理を含んで、このステージに複数の命令を同時に存在させることを可能にする。現代のプロセッサが、10又はそれ以上の深いステージのパイプラインを有することは珍しくない。
現代のマイクロプロセッサの別の特徴的構造は、トレースユニットである。トレースユニットは、命令のストリームを通してのマイクロプロセッサの進行を報告し、データをメモリに書き込む、及び/又は、これをプロセッサ上の適切な周辺インターフェースを介して外部装置にエクスポートする。幾つかの場合においては、トレースユニットにより報告される情報は、すぐにエクスポートされ、幾つかの場合においては、マイクロプロセッサ内の内部バッファリングによる遅延又はマイクロプロセッサの外部メモリにおける遅延を伴ってエクスポートされる。
深いマルチステージのパインプラインは、次々に命令のストリームがあり、プログラムの論理内に分岐又はループがない場合、動作上の利点をもたらす。しかしながら、分岐がある場合には、確実にパイプラインが有用に占有されたままにすることは非常に困難になり、パイプライン内の進行中の大量の作業を廃棄しなければならない場合がある。
この問題に対して、複雑な分岐予測論理、分岐後の両方ともに可能なパスに沿った命令ストリームの推論的処理、及び、多数の他のものを含む多数の解決法が過去に適用されており、多くの場合、複数の手法が同じマイクロプロセッサ内で用いられている。
例えば、命令の短いストリング(1つの命令のみの場合を含む)が、マイクロプロセッサ内の何らかの予め存在する状態に応じて実行又はスキップされる場合に対する1つの簡単な解決法は、条件付き命令の使用である。これらの命令は、それらが実行されるべき条件又は実行されるべきではない条件を示す付加的なフィールドを有する。しかしながら、この条件又は複数の条件は、命令がマイクロプロセッサのパイプラインに入る時点では、最終の条件試験結果に設定されていないことがある。したがって、、条件付き命令は、通常のように、実行ステージを含むパイプラインを下降して進むことが可能であるが、命令の結果(あらゆる新規の内部マイクロプロセッサ状態を含む)が格納される直前に、命令が実行されるべき条件又は複数の条件に対するチェックが行われ、これらの条件が満たされた場合にのみ、結果が最終宛先に書き込まれる。この結果の最終的な格納は、多くの場合「完了」と呼ばれ、このステージを通って進行した命令は、「完了した」又は「完了された」と言われる。完了しない命令のストリングがパイプラインの深さより短い場合には、プロセッサの処理量全体が増加することになる。
条件付き命令が、深いパイプライン及びトレースユニットと同時に用いられるときは、命令を報告する2つの標準的な代替的手法があるが、いずれも完全に満足のいくものではない。条件付き命令は常に報告され得るため、データの精度を低下させ、潜在的にユーザを混乱させる。代替的に、命令が完了しない場合には、命令の報告は全く行われないことがある。どちらの手法が用いられるかは、多くの場合、トレースユニットがパイプライン内のどこに接続されているかによって決まる。パイプライン内の初めに接続されている場合には、命令が完了したか又は完了していないかに関わらず、全ての命令が報告される。最後の完了ステージに接続されている場合には、完了した命令のみを報告することは容易であるが、命令に関する多くの情報は、このステージでは廃棄されている場合もあり、このことは、トレースユニットにより報告される情報の有用性を低くする。
英国特許第2,311,882号
同様に、プログラムが中断されたとき、又は、分岐命令が推論的にフェッチされたが実行されなかったときに、トレースデータを分析するのに困難が生じる。したがって、分析するのが簡単であり、状況における要求に応じて、トレースデータの部分を含めるか又は廃棄する融通性を有するトレースデータを提供できるようにする必要性がある。
本発明はその種々の態様において、ここで参照すべき独立請求項において定義される。有利な特徴は、従属請求項において説明される。
第1の態様において、本発明は、条件付き命令を含むプログラム命令をフェッチするための命令フェッチユニットと、複数の実行ステージを有する実行パイプラインと、命令フェッチユニットと実行パイプラインとの間に接続され、命令を実行パイプラインに渡すスケジューリングを行うための命令スケジューラと、実行パイプラインと並列にスケジューラに接続され、複数のステージを有し、実行パイプライン内の命令に対応するトレースデータを伝えるトレースパイプラインと、トレースパイプラインの出力に結合されたトレース出力と、実行パイプライン内の条件付き命令が完了されるべきかどうか判断し、判断結果をトレースパイプライン内の対応するトレースデータに加えるための手段と、を備えるデータプロセッサを提供する。
第2の態様において、本発明は、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、実行パイプラインと並列にスケジューラに接続され、複数のステージを有するトレースパイプラインと、該トレースパイプラインの出力に結合されたトレース出力と、を備えたパイプライン型データプロセッサからのトレースデータを与える方法を提供し、本方法は、条件付き命令を含む命令をスケジューラから実行パイプラインに渡し、命令に対応するトレースデータをトレースパイプラインに渡し、条件付き命令が実行パイプライン内で完了されるべきかどうか判断し、判断結果をトレースパイプライン内の対応するトレースデータに加えるステップを含む。
本発明の第1及び第2の態様によると、データプロセッサにより処理される全ての条件付き命令に対応するトレースデータは、完了してもしなくても、トレースユニットにより報告される可能がある。命令が完了したかどうかを示す付加的な情報もまた、トレース出力に含めることができる。この手法は、正確にどの命令が完了しなかったかをユーザに明らかにすることを確実にし、必要に応じて、外部装置により、ユーザに表示される情報からこれらの命令に対する参照を除去することも可能である。付加的な利点は、ユーザが直接又はコンピュータを使用してデータを分析し、条件付き命令のストリングが、期待される動作上の利点を示したかどうかを調べることができることである。
第3の態様によると、本発明は、実行される命令をスケジューリングするスケジューラと、スケジューラに接続された、複数の実行ステージを有する実行パイプラインと、実行パイプラインと並列にスケジューラに接続された、複数のステージを有するトレースパイプラインと、トレースパイプラインの最終ステージに接続されたトレース出力と、実行パイプラインの最終ステージに接続された入力及びトレース出力に接続された出力を有する、トレースパイプラインからのデータにデータを加えるための手段とを備えるデータプロセッサであって、使用中、データを加えるための手段は、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力される対応するデータと同期して、トレース出力に選択的に出力する、データプロセッサを提供する。
第4の態様によると、本発明は、複数のステージを有する実行パイプラインと、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、複数のステージを有し、実行パイプラインと並列にスケジューラに接続されたトレースパイプラインと、該トレースパイプラインの出力に接続されたトレース出力と、を備えたパイプライン型データプロセッサからのトレースデータを供給する方法を提供し、本方法は、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力された対応するデータに加えるステップを含む。
第5の態様によると、本発明は、データプロセッサ内でのプログラムの実行に関する動作情報を報告する方法を提供し、本方法は、プログラム内で一次タスクを実行する既存の命令を、同じ一次タスクを実行するが、プログラムの実行に関する動作情報をトレース出力に報告する付加的な作用を有する代わりの命令と置き換えるステップを含む。
プログラム命令を置き換えるステップは、コンパイラにより自動的に実行されることが好ましい。代わりの命令は、さらに、命令により作動する、データをトレース出力に報告する作用を有することが好ましい。
第6の態様によれば、本発明は、プログラム命令を処理するための複数の機能ユニットと、プログラム命令をメモリからフェッチする命令フェッチユニットと、命令フェッチユニットと複数の機能ユニットとに接続され、フェッチされた命令がいつ機能ユニットに発行されるか判断する命令スケジューラと、該スケジューラに接続され、プロセッサの動作に関するトレースデータを出力するトレースデータ出力とを備えるデータプロセッサであって、命令フェッチユニットは、分岐命令のフェッチ後に、どの命令がメモリからフェッチされるか判断するのに用いられる分岐予測論理を含み、該命令フェッチユニットは、フェッチされた命令に関連する分岐予測情報をスケジューラに出力し、プロセッサは、分岐命令に関連する条件(又は複数の条件)が満たされたかどうかチェックすることにより、分岐予測情報が正しいかどうか判断し、判断結果をトレースデータに加える、データプロセッサを提供する。
第7の態様によると、本発明は、プロセッサにより実行される命令をメモリからフェッチし、フェッチされた分岐命令に続いて、次にどの命令をメモリからフェッチするか予測し、プロセッサ内で、分岐命令に関連する条件(又は複数の条件)が満たされたかどうかチェックすることにより、予測が正しいかどうか判断し、判断するステップの結果をトレースデータに加える、ステップを含む、プロセッサのトレースデータ内の分岐予測情報を与える方法を提供する。
第8の態様によると、本発明は、プログラム命令をフェッチするための命令フェッチユニットと、複数の機能ユニットを備えた実行パイプラインと、命令フェッチユニットと実行パイプラインとの間に接続され、命令を実行パイプラインに渡すスケジューリングを行うための命令スケジューラと、スケジューラに結合され、該スケジューラがスケジュールされた命令に関するトレースデータを渡すトレース出力と、プロセッサに関連する割り込み又は例外ステータス情報をスケジューラに渡すための手段とを備え、該スケジューラは、トレースデータ内の割り込み又は例外ステータス情報の表示を含む、データプロセッサを提供する。
第9の態様によると、本発明は、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、該スケジューラに接続されたトレース出力と、を含むパイプライン型データプロセッサからのトレースデータを与える方法を提供し、本方法は、プロセッサの割り込み又は例外データをスケジューラに入力し、プロセッサの割り込み又は例外データを、スケジュールされた命令に関する関連のトレースデータと共にトレース出力に渡す、ステップを含む。
第10の態様によると、本発明は、データプロセッサにより実行される命令をスケジューリングする命令スケジューラと、該スケジューラに接続されてスケジュールされた命令に関するトレースデータを受け取るトレースユニットとを備えるデータプロセッサであって、該トレースユニットは、外部装置と接続するためのトレース出力と、該トレース出力に接続され、該トレース出力に渡す前にトレースデータを格納するためのトレース出力バッファと、トレース出力バッファ及びスケジューラに接続されたトレースインパクトカウンタとを有するデータプロセッサであって、使用中、トレース出力バッファは、バッファ占有率データをスケジューラに送信し、該スケジューラは、該バッファ占有率データに基づいて、命令のスケジューリングを修正し、スケジューリングが修正されたことの表示をトレースインパクトカウンタに送信し、該トレースインパクトカウンタは、スケジューリングが修正されたことの表示を、トレース出力バッファに送信されるトレースデータに加える、データプロセッサを提供する。
第11の態様によると、本発明は、データプロセッサにより実行される命令をスケジューリングするスケジューラと、トレースデータを外部装置に出力する前に該トレースデータを格納するためのトレース出力バッファを含むトレースユニットと、を備えるデータプロセッサからのトレースデータを与える方法を提供し、本方法は、トレース出力バッファ内の使用可能な空間の表示をスケジューラに送信し、使用可能な空間の表示に基づいて、命令のスケジューリングを修正し、スケジューラの修正の表示をトレースデータに含める、ステップを含む。
本発明の態様の各々は、データ処理装置において、単独で、又は、本発明の他の態様の1つ又はそれ以上と組み合わせて提供することができる。
これから添付の図面を参照して、本発明の種々の態様を具体化する例を詳細に説明する。
本発明によるトレース機構を含む例示的なプロセッサのアーキテクチャを示す。 図1のトレースパイプライン及び実行パイプラインに接続された条件パイプラインを示す。 分岐予測情報をトレースデータに含めるための機構を示す。 図1のトレース出力におけるトレースデータの例を示す。
図1は、本発明の一実施例によるデータプロセッサの機構の概略図である。図1は、1つのスレッドに対する処理装置のみを示す。しかしながら、同じ機能性アーキテクチャをマルチスレッドプロセッサに適用することができる。
ここで図1に示すユニットの各々を説明する。
キャッシュ又はメモリ1は、プロセッサにより実行される命令のソースである。命令は、内部又は外部のアドレス指定可能メモリ内に、又は、命令キャッシュ内に保持されるこのメモリのコピー内に保持することができる。
命令フェッチユニット2は、キャッシュ1に接続される。このユニットは、キャッシュ又はメモリから命令をプリフェッチする。このプロセスの一部として、ユニットは条件付き分岐が利用されるかどうか予測することを試みて正しい命令をプリフェッチしようとし、これを確実にする。このことは、図3を参照してより詳細に説明する。
フェッチユニット2は、プリフェッチされた命令、及び、分岐が利用されるかどうか予測されたことを含む、命令フェッチユニットの状態及び動作に関する側波帯データの両方を出力する。これら両方の出力は、先入れ先出しバッファ(FIFO)を有し、データを後のステージに送る前にバッファする。これらのFIFOは同じ長さであり、データはこれらから同時に引き出され、命令及び関連する側波帯情報が同期して確実に側波帯レジスタ及び命令レジスタに送られるようにする。
プリデコードユニット3は、実行される命令を命令フェッチユニット2から取り出し、それらから命令が実行されるときに必要になるリソースを指定する付加的なデータを生成する。このデータは、どの機能ユニットが必要であり、どのソース及び/又は宛先レジスタが用いられ、どんなメモリI/Oが必要になるか等を含む。
側波帯レジスタ4は、命令フェッチユニットからの側波帯データを格納する。このレジスタ内のデータは、発行されるのを待っている命令に関連する。
命令レジスタ5は、プリデコードユニット3からの命令データを格納する。このレジスタ内のデータは、発行されるのを待っている命令に関連する。
ポストデコードユニット6は、命令レジスタ5及び側波帯レジスタ4からデータを取り出し、命令の実行を可能にする付加的なデコードを行う。スケジューラ7に送信される主出力は、命令実行の後のステージ全体を制御するのに用いられる制御信号の複合セットである。さらに、やはりスケジューラ7に送信される別の出力があり、これは、命令フェッチからの側波帯データと、プロセッサの割り込み処理状態に関する付加的な情報とで構成される。
ほとんどのプロセッサは、代わりの命令ストリームが実行される間、主プログラム内の命令実行の通常のフローを短時間停止させる、割り込み及び例外と呼ばれる機構を含む。これは、特に、割り込み又は例外が入れ子にされ、主プログラムにおいて実行が再開される前に、別の代わりの命令ストリームが実行し始める場合には、トレースデータを分析してプログラムの実行パス及びタイミングを理解することを困難にし、潜在的に間違えを起こし易くする。
割り込みステータス情報は、割り込み信号又は例外イベントについて、プロセッサの入力ポート及び内部状態を監視するトリガユニットから受信することができる。トリガユニットは、この情報を、側波帯データを含むポストデコードユニット6に供給する。代替的に、割り込みステータス情報は、スケジューラにより生成することができ、又は、内部及び外部両方の多数のソースから受信することができる。上述のように、割り込み信号の生成は、データプロセッサにおいて周知のことである。
トレースデータに加えられた割り込み/例外データは、割り込み又は例外の結果として、プロセッサがいつ代わりの命令ストリームを処理し始めるか、及び、この代わりのストリームの実行がいつ終わるかを示す。トレースデータは、割り込みステータスに基づいて、必要であればトレースイベントフィルタ内でフィルタ処理することができる。例えば、代わりの命令ストリームが実行される間、通常のトレースデータの幾つか又は全てを抑制することができる。代替的に、割り込み処理が始まり又は終わり、これらのイベントを検出することが可能になるとき、付加的なトレースデータをトレースデータに含めることができる。割り込み/例外データは、所与の命令に関するトレースデータに対して、該命令が発行された時点で加えられ、その後、トレースパイプラインに渡される。これにより、関連する割り込み/例外データが、トレース出力において、確実にトレースデータに結合される。
命令スケジューラ7は、命令レジスタから命令ストリームを取り出し、その他のプロセッサの現在の活動に関する情報、並びに、ポストデコードユニット6からの情報を用いて、いつ命令を機能ユニット8、9、10に発行するかを審査する。命令が機能ユニットに発行されると、対応するトレースデータ及びプログラムカウンタデータが、トレースパイプライン11に送信される。
機能ユニット8、9、10は、実行パイプラインを形成する。このパイプラインは、命令スケジューラから命令を受信し、多数のステージでこれらを実行する。本実施例において、ステージは、ソースからのオペランドフェッチ、論理演算装置による処理、次いで、宛先への結果の条件付き書き込みである。このライトバックは「完了」と呼ばれ、この条件付きプロセスを受けた命令は「完了した」命令と呼ばれる。
実行パイプラインと並列して、トレースパイプライン11がある。このユニットは、機能ユニットに供給されるのと同じデータの多く、さらにトレースタグデータ及びプログラムカウンタデータを受信する。トレースタグデータは、側波帯データ及び割り込みステータスデータを含む。このデータは、実行パイプラインと同じ数のステージを有するパイプラインを通して供給されるため、データは遅延し、機能ユニットが条件付きで対応する命令を完了させるのと同時に、トレースパイプラインの終端に達する。
本実施例において、条件パイプライン23は、いずれかの条件付き命令が完了されるべきかどうか判断する。命令が実行パイプラインに渡される前にこの判断をすることはできない。したがって、条件パイプラインは、後のサイクルの間に判断(本明細書においては条件試験と呼ぶ)を行い、この条件試験の結果を実行パイプライン内の適切な機能ユニット及びトレースパイプラインの両方に提示する。図示した実施例においては、条件試験結果は、命令発行後3サイクルまで機能ユニット及びトレースパイプラインに渡されないため、データは、実際には、実行パイプライン8及びトレースパイプライン11の最終ステージに供給される。このことは、図2を参照して、より詳細に説明する。
図2は、トレースパイプライン11及び実行パイプラインと並列に動作する条件パイプライン23を示す。明確にするために、1つの実行パイプライン22だけを示す。命令が発行されると、スケジューラ7は、関連する実行パイプラインに命令して関連するデータをフェッチさせ、その機能を実行させる。同時に、命令に関するトレースデータがトレースパイプライン11に渡され、命令が完了されるべき条件に関する条件データが条件パイプライン23に送られる。完了直前のステージ(又は、条件が満たされなければならない、いずれかのステージの前)において、条件パイプラインが条件試験(又は、複数の条件試験)を行い、命令の完了に対する条件が満たされたかどうかをチェックする。条件パイプラインは、プログラム内の特定の条件に関する条件フラグを、制御レジスタからフェッチし、条件試験を行う。次に、試験結果が完了フラグの形態で実行パイプラインに送られ、トレースパイプライン内のデータに加えられる。実行パイプライン内の論理24は、完了フラグを受信し、これを用いて、命令を次のステージに渡すかどうか、すなわち、完了するどうかを判断する。
したがって、このシステムにおいては、条件付き命令に関するトレースデータは、命令が完了してもしてなくても、トレースパイプラインを通して供給される。完了状態の表示は、トレースパイプラインの最終ステージにおいて、トレースデータに加えられる。トレースデータは、完了状態に基づいてフィルタ処理できるため、完了した命令に関するトレースデータのみが、トレース出力データに含められる。
完了フラグは、実行パイプラインを介して又はスケジューラを介して、トレースパイプラインに渡されることが可能である。また、スケジューラが、専用の条件パイプラインの代わりに、条件試験を実行することも可能である。
再び図1を参照すると、全ての機能ユニットは、その計算結果を、それ自体のレジスタファイル又はいずれかの他の機能ユニットのレジスタファイルに随意的に書き込むことができる。幾つかのこうした書き込みは、同時に起こり得る。このことは、全ての機能ユニットの出力をレジスタファイルの複数の書き込み入力の1つと相互接続するライトバックバス12を介して行われる。さらに、全ての機能ユニットの出力は、書き込みセレクタに接続される。
レジスタファイル13、14、15は、全てのプロセッサレジスタを保持し、各機能ユニットに対して、このようなレジスタの1つのバンクが存在する。レジスタファイルは、複数の書き込みポートを有し、したがって、1サイクル当たり複数の書き込みを受け入れることができる。
機能ユニットからの計算結果をもトレース機構を介して与えることができるように、書き込みセレクタ16は、ライトバックバス12に接続され、関連する機能ユニットからのデータを取り出し、このデータをトレースパイプラインから来るデータと組み合わせる。
書き込みセレクタ16は、トレースパイプライン11からの制御信号に基づいて、トレースパイプラインからのトレースデータにデータを加える。制御信号は、トレースイベントの種類、並びに、データのソースユニット及びソースレジスタを示す。この情報は、スケジューラ7からのトレースデータの一部であり、図1においては、トレースパイプラインの最終ステージから書き込みセレクタに渡されるように示される。この制御情報から、書き込みセレクタは、データが加えられる必要があるかどうか判断することができ、そうである場合には、ライトバックバスのどのアームからデータを取り出すべきか判断することができる。このことは、図4を参照してさらに説明する。書き込みセレクタ16がデータを加える条件は、ユーザが望む通りに選択することができる。
特別に適合されたプログラムコードを用いることにより、トレース出力に含まれるさらに別の動作データを得ることも可能である。付加的な動作データを生成する方法は多数あり、1つの一般的な方法は、コンパイラ及び/又はライブラリ関数内において、手動で又は自動的に、「計測」コードをプログラム内に配置することである。この計測コードは、プログラムの動作を分析するのに有用な情報を報告する付加的なコードである。報告された動作情報は、マイクロプロセッサシステム内に格納されるか、又は、このシステムの外に移され、両方の場合において、即時に又は後で、照合して分析することができる。しかしながら、計測コードは、プログラムのサイズ及びその実行のタイミングの両方を変更し、このことが動作情報の精度、したがって、その有用性を制限する。
本発明の態様によると、実行されるプログラム内の既存の命令は手動で又は自動的にトレース副次的作用命令で置き換えられ、これは同じ一次タスクを実行するが、従来の計測コードにより生成されるものと概ね同様の動作情報を生成する付加的な作用又は副次的作用を有する。これらのトレース副次的作用命令の使用は、プログラムのサイズ、一次的機能、又は実行のタイミングに影響しないことになるので、動作情報をはるかに正確で有用なものにする。
これらのトレース副次的作用命令は、プログラム内のどこに配置してもよいが、プログラム内の機能及び副機能のプリアンブル及びポストアンブル内で用いられることが好ましい。プリアンブル及びポストアンブルは、コンパイラにより生成される機能コードの一部であり、重要なレジスタを保存/復元し、スタックフレームを生成して、機能に渡されるパラメータが正しい場所、及び、重要であるがプログラムの作成者の直接の制御の外にある多数の他のタスクに配置されることを保証する。好ましい実施例においては、置き換えられた命令は、機能のフレームポインタを構築及び破壊するために用いられる。プログラムのソースコードを機械実行可能形態に変換するコンパイラは、プリアンブル及びポストアンブルにおける幾つかの命令が自動的にトレース副次的作用形態で置き換えられ、これによって動作情報を報告することを可能にするモードを有することができる。
命令の位置、命令の一次機能により操作されるデータ値、プロセッサシステム内からのタイミング情報、プロセッサシステム内のイベントカウンタ値、及びプロセッサシステムの内部状態及び状態を含むがこれらに限定されない多数の種類の情報をトレース副次的作用命令により報告することができる。
トレース副次的作用命令の1つの実施はまた、命令の命令コード部分、及び/又は、命令の一次タスクにより操作されるデータ値、及び/又は、命令により報告される他の動作データのいずれかを検査し、これを用いて、動作データを完全に又は部分的に報告するべきか、又は全く報告しなくてよいかを判断するためのシステムを提供する。
トレース副次的作用命令機構の別の実施は、トレース副次的作用命令のメモリ内の位置に基づいて、動作データを完全に又は部分的に報告するべきか、又は全く報告しなくてよいかについての制御を可能にする。
トレース副次的作用命令の例を以下に与える。トレース副次的作用命令は、通常のMOV命令を、正確に同じことを行うが、さらにトレースデータを生成する変形体で置き換える。この命令は、TTMOVと呼ばれる。
ユニット間のTTMOV伝送命令の1つの一般的な使用は、例えば、コールエントリ及びエグジットポイントを識別してコールグラフ関連のトレースデータの収集を可能にする。コンパイラのフラグは、以下に示す2つの特定の場所においては、MOVよりむしろTTMOVを用いるようコンパイラに伝える。
ARoutine: TTMOV D0FrT,A0FrP; Trace push of frame pointer
ADD A0FrP,A0Stp,#9
SETL [A0StP++],D0FrT,D1RtP
…Body of routine
GETL D0FrT,D1RtP,[--A0StP]
TTMOV A0FrP,D0FrT; Trace pop of frame pointer
MOV PC, D1RtP
トレース作用は、ユニット間移動命令の副次的作用であるため、命令は、通常、トレース記録が実行時に無効になったとき、プログラムのエントリ及びエグジットシーケンスの一部として機能する。
再び図1を参照すると、トレースパイプライン11及び書き込みセレクタ16からのデータは、フィルタ処理することができる。カウンタイベントフィルタ17は、完了する命令の種類、並びに、ソースユニット及びソースレジスタに関する情報を用いて動作カウンタ19に対して、それらのデータをトレース出力バッファ21に出力するように命令するかどうか判断する。データをトレース出力バッファ21へ出力する命令は、カウンタダンプ信号である。このトレースイベントフィルタは、どのレジスタからのどのトレースイベントが、カウンタダンプ信号を生成するか/しないかに関連して構成することが可能なレジスタを有する。
トレースイベントフィルタ18は、どのトレースイベントがトレース出力バッファに渡されるか/渡されないかに関連して構成することが可能なレジスタを有する。さらに、トレース出力バッファに渡される情報の種類/量に対する制御があり、イベントの種類、対応するプログラムカウンタ、ソースレジスタ/ユニット、及び機能ユニットからの計算結果だけをオプションとして含む。このことは、幾つかの例示的なトレースデータの構造を示す図4を参照して説明する。
動作カウンタユニット19は、種々のイベントがプロセッサ内で生じたときに増分する多数のカウンタを含む。カウンタダンプ信号を受信すると、これらのカウンタに蓄積されたカウンタデータは、トレース出力バッファ21に書き込まれ、全てのカウンタはゼロにリセットされる。
トレース出力バッファ21は、トレースイベントデータ及びカウンタデータの両方を取り出し、バッファに格納し、次いでこのデータをトレース出力に供給するマルチステージバッファである。
プロセッサの命令実行速度は、通常、トレースデータのエクスポートに用いられるインターフェースの速度を超え、外部バスの幅は内部バスと同じではない可能性があるので、幾つかのトレースデータを省かなければならないか、又は、プロセッサを短時間停止させて、トレースデータのエクスポートが追いつくようにしなければならない状況になることが多い。プロセッサを一時停止させることを選択した場合には、プログラムの実行のタイミングは、トレースデータがエクスポートされなかった場合に生じる実行のタイミングとは異なるものとなる。
トレース出力バッファ21は、データ転送速度における短時間のピークに対処することが要求される。本発明の態様によると、これらのピークが、最も単純な実施形態において、トレース出力バッファが一杯である場合には、トレース出力バッファは、バッファフル・フラグをアサートする。このフラグは、命令スケジューラ7に、命令を機能ユニットに送信することを中止させ、データソースが一時停止している間に、データをトレース出力に送信し続けることにより、トレース出力バッファ21が付加的なデータのための場所を空けることができるようにする。
トレースインパクトカウンタ20は、動作カウンタユニット19内のカウンタの1つである。これはスケジューラに接続され、トレース出力バッファが、バッファフル・フラグをアサートするか又は容量が一杯に近いことを示すことによって、スケジューラが命令を発行しない間のサイクルを計数する。トレースインパクトカウンタのデータは、動作カウンタユニットがそのコンテンツをトレース出力に送るとき、トレースデータに含められる。トレースインパクトカウンタは、スケジューラ7から信号を受信する代わりに、トレース出力バッファ21から直接バッファフル・フラグを受信することが可能である。
トレース出力バッファ21がバッファフル・フラグをアサート停止するのをスケジューラが待っている状態における全てのサイクルで、トレースインパクトカウンタ20が増分される。代替的なスキームは、命令スケジューラ7が、トレースデータを生成しない命令を発行し続けることであるが、これは、これらがトレース出力バッファ内の場所を必要としないためである。
別の可能性のある実施形態は、バッファフル・グラグを、バッファ21内の使用可能な場所を示す信号で置き換え、命令スケジューラ7が、使用可能なトレース出力バッファ容量に基づいて、どの命令を発行できるか/できないかに関する複雑な決定をするものである。
図3は、図1に示すトレースデータ内に分岐予測情報を含める機構をより詳細に示す。命令フェッチユニット2は、メモリ1から命令をフェッチし、プログラム命令内の特定の分岐が分岐命令に従って選ばれるかどうかを予測する。これは良く理解されているプロセスであり、多数の使用可能なプロセッサは、ある種の分岐予測論理を含む。典型的かつ単純な予測システムは、プログラム内の全ての逆方向分岐(すなわち、ループ)を取り入れ、プログラム内の全ての前方向分岐(すなわち、ジャンプ)は取り入れないものであるが、予測アルゴリズムは、これよりかなり複雑なものにすることができる。フェッチされた命令は、命令レジスタ5に送信される。分岐予測情報は、側波帯レジスタ4に送信される。命令は、分岐命令に関連する発行条件が、スケジューラ7によりチェックされ、満たされるまで、発行及びスケジュールされない。条件が満たされず、予測が不適切であることがわかった場合には、スケジューラは、フェッチユニットに対して、正しい命令をフェッチするよう命令する。このことは、図3において、矢印31により示される。条件が満たされると、命令が発行される。通常、分岐予測システムは、単に、予測情報により作動し、その後これを廃棄する。しかしながら、本発明の態様においては、図1及び図3に示すように、予測情報は、プロセッサ(この例においては、トレースパイプライン11)を通してトレース出力に渡される。予測情報を用いて、分岐予測ハードウェアを評価及び改善することができ、及び/又は、コンパイラコードをどのように書いて、予測精度を向上させることができるかについての情報をもたらすことができる。予測情報は、対応する命令が発行されたときにトレースデータに加えられ、その命令に関するトレースデータの残りの部分と同期して維持されるため、出力トレースデータの分析は容易になる。
トレースパイプラインを実行パイプラインと並列にすることは、多数の利点を有することがわかる。これは、命令の処理の異なるステージに関するトレースデータが、トレースデータ内で一緒に維持されることを可能にする。全て同じ命令に関連する、分岐予測に関する側波帯データ、並びに、条件付き命令の割り込みステータス及び完了ステータス、完了した命令の結果からのトレースデータ、及びスケジューリングデータは、1つのトレースデータユニットとして、トレース出力に渡される。本発明のシステム及び方法は、所望により、複数の異なる基準に基づいてユニットを選択的にフィルタ処理することを可能にする。
図4は、トレース出力に送信される2つの異なるイベント、TTMOV及びMOV TTMARKに対するトレースデータの例を示す。トレースイベントは、イベントを識別するのに用いられる16ビットのフィールドと、随意的な後続データの4つの32ビットのフィールド、a、b、c、dとで構成される。
図4を参照すると、イベントの種類は、ビット15:12内の4ビットコードにより特定される。イベントの種類はまた、後続データの量を示し、後続データの解釈を導く。ビット11:4は、イベントが「TTMOV」である場合、ソースユニット(Us)及びソースレジスタ(Sreg)を示す。ビット11:4は、イベントが「MOV TTMARK」である場合には、即値データを示す。ビット3:2は、マルチスレッドアーキテクチャにおいて、イベントがどのスレッドに関連するかを示す。ビット1(P)は、プログラムカウンタ(PC)データが後続のデータ内にあることを示すフラグである。ビット0(T)は、タグデータが後続のデータ内にあることを示すフラグである。
トレースイベントフィルタ18及びカウンタイベントフィルタ17は、16ビットのフィールドを検査し、イベントを通すかどうか、及び(トレースイベントフィルタの場合)無関係のデータを除去するかどうかを決定する。例えば、トレースイベントフィルタ18は、選択されたイベントコードを有するトレースデータはトレース出力に渡すが、後続のトレース副次的作用データの幾つかを取り除くように構成することができる。
後続のデータは、4つの32ビットのブロック、a、b、c及びdに分けられる。aは、プログラムカウンタ(PC)データを保持する随意的な後続データである。bは、タグデータを保持する随意的な後続データである。ブロックb内のタブデータは、分岐予測情報、割り込みステータス情報、及び完了フラグ情報を含む。cは、トレース副次的作用命令及び幾つかの他のトレース命令により出力されたデータの下位の32ビットを保持する随意的な後続データである。dは、トレース副次的作用命令及び幾つかの他のトレース命令により出力されたデータの上位の32ビットを保持する随意的な後続データである。
書き込みセレクタ16の動作は、このトレースデータを参照することによって、よりよく理解することができる。書き込みセレクタ16は、トレースイベント、ソースユニット及びソースレジスタのフィールドに対応するトレースパイプライン11から制御情報を受信する。この制御情報に基づいて、書き込みセレクタは、付加的なデータをトレースイベントに加えるかどうか、及び、どの実行パイプライン8から(したがって、ライトバックバス12のどのアームから)来るべきかを判断する。書き込みセレクタ16は、次に、トレース副次的作用命令からの付加的なデータ、及び/又は、完了した命令に関する他のデータをブロックc及びdにおいてトレースデータに加える。
本明細書における図及び説明は、単一スレッドプロセッサに対して実施される本発明を説明するが、本発明は、マルチスレッドプロセッサにも等しく適用することができる。マルチスレッドプロセッサにおいては、プロセッサの各々の実行スレッドは、別個の条件パイプラインを必要とし、機能ユニットは、それらがどのスレッドのレジスタに対して動作しているかについて通知される必要があり、対応するレジスタファイルは、1スレッド当たり1バンクで、複数のレジスタのバンクを含む必要がある。このことは次に、機能ユニットが、それらが命令を実行しているスレッドのレジスタを読み出し及び書き込むことを可能にし、さらに、機能ユニットが、命令を完了するかどうかを知るために、どの条件パイプラインを調べるかを判断することを可能にする。マルチスレッドプロセッサは、特許文献1において、より完全に説明されている。
本発明の好ましい態様
本発明の1つの態様において、条件付き命令を含むプログラム命令をフェッチするための命令フェッチユニットと、複数の実行ステージを有する実行パイプラインと、命令フェッチユニットと実行パイプラインとの間に接続され、命令を実行パイプラインに渡すスケジューリングをする命令スケジューラと、実行パイプラインと並列にスケジューラに接続され、複数のステージを有し、実行パイプライン内の命令に対応するトレースデータを伝えるトレースパイプラインと、トレースパイプラインの出力に結合されたトレース出力と、実行パイプライン内の条件付き命令が完了されるべきかどうか判断し、判断結果を、トレースパイプライン内の対応するトレースデータに加えるための手段と、を備えるデータプロセッサが提供される。
判断を行うための手段は、トレースパイプライン及び実行パイプラインと並列にスケジューラに接続された入力と、実行パイプライン及びトレースパイプラインに接続された出力とを有する条件パイプラインであることが好ましい。
条件パイプラインの出力は、トレースパイプラインの最終ステージに接続されることが好ましい。
審査結果は、実行パイプラインを介してトレースデータに渡されることが好ましい。
トレースパイプラインは、実行パイプラインと同じ数のステージを有することが好ましい。
データプロセッサは、トレースパイプラインの出力とトレース出力との間に接続され、選択されたトレースデータのみをトレース出力に渡すトレースデータフィルタをさらに備えることが好ましい。
データプロセッサは、データをトレースデータに加えるための、実行パイプラインの最終ステージに接続された入力及びトレース出力に接続された出力を有する付加手段であって、使用中、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力される対応するデータと同期して、トレースデータに選択的に加える付加手段をさらに備えることが好ましい。
付加手段は、命令の動作に関する情報及び/又は命令の結果に関する情報を出力することが好ましい。
データプロセッサは、複数の実行パイプラインの出力を付加手段に接続するライトバックバスをさらに含むことが好ましい。
付加手段は、トレースデータが関連する命令の種類に基づいて、データをトレースデータに加えるように構成されることが好ましい。
付加手段は、トレースデータが関連する命令の種類を示す制御信号を、トレースパイプラインから受信することが好ましい。
命令フェッチユニットは、分岐命令のフェッチに続いて、どのプログラム命令をフェッチするべきかを予測するための分岐予測論理を含み、該命令フェッチユニットは、フェッチした命令に関連する分岐予測情報をスケジューラに渡し、該スケジューラは、分岐命令に関連する条件が満たされたかどうかをチェックすることにより、分岐予測情報が正しいかどうか判断し、判断結果をトレースデータに加えることが好ましい。
分岐予測情報は、命令フェッチユニットから、対応するフェッチされた命令と並列に、且つ同期して、スケジューラに送信されることが好ましい。
スケジューラは、プロセッサが異なる動作モードに入ることを示す割り込み又は例外ステータス情報を受信又は判断し、該スケジューラは、割り込み又は例外ステータス情報の表示をトレースデータに含めることが好ましい。
データプロセッサは、トレースパイプラインの出力とトレース出力との間に接続されてトレースデータをトレース出力に渡す前にトレースデータを格納するためのトレース出力バッファと、トレース出力バッファとスケジューラとに接続されたトレースインパクトカウンタと、をさらに備え、使用中、トレース出力バッファは、バッファ占有率データをスケジューラに送信し、スケジューラは、バッファ占有率データに基づいて命令のスケジューリングを修正してスケジューリングの修正の表示をトレースインパクトカウンタに送信し、該トレースインパクトカウンタは、スケジューリングの修正の表示を、トレース出力バッファに送信されるトレースデータに加えることが好ましい。
スケジューラは、トレース出力バッファ占有率データに基づいて、命令のスケジューリングを一時停止することが好ましい。
バッファ占有率データは、トレース出力バッファが一杯であることの表示であることが好ましい。
本発明の別の態様において、複数のステージを有する実行パイプラインと、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、実行パイプラインと並列に命令スケジューラに接続され、複数のステージを有するトレースパイプラインと、該トレースパイプラインの出力に接続されたトレース出力と、を備えるパイプライン型データプロセッサからのトレースデータを与える方法が提供され、本方法は、条件付き命令を含む命令をスケジューラから実行パイプラインに渡し、命令に対応するトレースデータをトレースパイプラインに渡し、条件付き命令が実行パイプラインにより完了するべきかどうかの判断を行い、判断結果をトレースパイプライン内の対応するトレースデータに加える、ステップを含む。
本方法は、トレースパイプラインの出力からのトレースデータをフィルタ処理するステップをさらに含むことが好ましい。
条件試験の結果を対応するトレースデータに加えるステップは、条件試験の結果をトレースパイプラインの最終ステージにおけるトレースデータに加えることを含むことが好ましい。
データプロセッサは、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力される対応するデータと同期して、トレースデータに加えるステップをさらに含むことが好ましい。
完了した命令に関する情報は、命令の動作に関する情報及び/又は命令の結果に関する情報であることが好ましい。
データプロセッサは、プロセッサにより実行されるプログラム内の一次タスクを実行する既存の命令を、同じ一次タスクを実行するが、命令の実行に関する動作情報及び/又は命令の結果に関する情報をトレース出力に報告する副次的作用を有する代わりの命令で置き換えることをさらに含むことが好ましい。
データプロセッサは、実行中のプログラム内のどの命令のセットが、分岐命令のフェッチに続いてメモリからフェッチされるかを予測し、フェッチされた命令に関連する分岐予測情報をスケジューラに渡し、分岐命令に関連する条件が満たされたかどうかチェックすることにより、分岐予測情報が正しいかどうか判断し、判断の結果をトレースデータに加える、ステップをさらに含むことが好ましい。
データプロセッサは、プロセッサの割り込み又は例外データをスケジューラに与え、プロセッサの割り込み又は例外データを対応するトレースデータに加える、ステップをさらに含むことが好ましい。
プロセッサは、トレースデータを外部装置又はメモリに出力する前にトレースデータを格納するためのトレース出力バッファをさらに備え、トレース出力バッファ内の使用可能な空間の表示をスケジューラに送信し、使用可能な空間の表示に基づいて命令のスケジューリングを修正し、スケジューリングの修正の表示をトレースデータに含める、ステップをさらに含むことが好ましい。
命令のスケジューリングを修正するステップは、命令のスケジューリングを一時停止することであることが好ましい。
トレース出力バッファ内の使用可能な空間の表示は、トレース出力バッファが一杯であることの表示であることが好ましい。
本発明のさらに別の態様において、処理される命令をスケジューリングするスケジューラと、該スケジューラに接続され、複数の実行ステージを有する実行パイプラインと、複数のステージを有し、実行パイプラインと並列にスケジューラに接続され、実行パイプライン内の命令に対応するトレースデータを伝えるトレースパイプラインと、該トレースパイプラインの最終ステージに接続されたトレース出力と、実行パイプラインの最終ステージに接続された入力及びトレース出力に接続された出力を有し、トレースデータにデータを加えるための付加手段と、を備えるデータプロセッサであって、使用中、付加手段は、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力される対応するデータと同期して、トレースデータに選択的に加える、データプロセッサが提供される。
トレースパイプラインは、実行パイプラインと同じ数のステージを有することが好ましい。
データプロセッサは、トレースパイプラインの出力とトレース出力との間に接続され、選択されたトレースデータのみをトレース出力に渡すトレースデータフィルタをさらに備えることが好ましい。
付加手段は、命令の動作に関する情報及び/又は命令の結果に関する情報を出力することが好ましい。
データプロセッサは、複数の実行パイプラインの出力を付加手段に接続するライトバックバスをさらに備えることが好ましい。
付加手段は、トレースデータが関連する命令の種類に基づいて、データをトレースデータに加えるように構成されることが好ましい。
付加手段は、トレースデータが関連する命令の種類を示す制御信号を、トレースパイプラインから受信することが好ましい。
データプロセッサは、プログラム命令をフェッチするための命令フェッチユニットをさらに備え、該命令フェッチユニットは、分岐命令のフェッチに続いて、どのプログラム命令がフェッチされるべきかを予測するための分岐予測論理を含み、命令フェッチユニットは、フェッチされた命令に関連する分岐予測情報をスケジューラに渡し、該スケジューラは、分岐命令に関連する条件が満たされたかどうかチェックすることにより、分岐予測情報が正しいかどうかを判断し、判断の結果をトレースデータに加えることが好ましい。
分岐予測情報は、命令フェッチユニットから、対応するフェッチされた命令と並列に且つ同期して、スケジューラに送信されることが好ましい。
スケジューラは、プロセッサが異なる動作モードに入ることを示す割り込み又は例外ステータス情報を受信又は判断し、該スケジューラは、割り込み又は例外ステータス情報の表示をトレースデータに含めることが好ましい。
データプロセッサは、トレースパイプラインの出力とトレース出力との間に接続されてトレースデータをトレース出力に渡す前に格納するためのトレース出力バッファと、トレース出力バッファ及びスケジューラに接続されたトレースインパクトカウンタとをさらに備え、使用中、トレース出力バッファは、バッファ占有率データをスケジューラに送信し、該スケジューラはバッファ占有率データに基づいて命令のスケジューリングを修正し、スケジューリングの修正の表示をトレースインパクトカウンタに送信し、該トレースインパクトカウンタは、スケジューリングの修正の表示を、トレース出力バッファに送信されるトレースデータに加えることが好ましい。
スケジューラは、バッファ占有率データに基づいて、命令のスケジューリングを一時停止することが好ましい。
バッファ占有率データは、トレース出力バッファが一杯であることの表示であることが好ましい。
本発明のさらに別の態様において、複数のステージを有する実行パイプラインと、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、実行パイプラインと並列にスケジューラに接続され、複数のステージを有するトレースパイプラインと、トレースパイプラインの出力に接続されたトレース出力とを備えるパイプライン型データプロセッサからのトレースデータを与える方法が提供され、本方法は、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力された対応するデータに加えるステップを含む。
完了した命令に関する情報は、命令の動作に関する情報及び/又は命令の結果に関する情報であることが好ましい。
1:キャッシュ又はメモリ
2:命令フェッチユニット
3:プリデコードユニット
4:側波帯レジスタ
5:命令レジスタ
6:ポストデコードユニット
7:命令スケジューラ
8、9、10:機能ユニット
11:トレースパイプライン
12:ライトバックバス
13、14、15:レジスタファイル
16:書き込みセレクタ
17:カウンタイベントフィルタ
18:トレースイベントフィルタ
19:動作カウンタユニット
20:トレースインパクトカウンタ
21:トレース出力バッファ
22:実行パイプライン
23:条件パイプライン
24:論理
31:矢印

Claims (4)

  1. データプロセッサにより実行される命令をスケジューリングするための命令スケジューラ(7)と、
    前記命令スケジューラに結合され、スケジュールされた命令に関するトレースデータを受信するトレースユニットと、
    を備え、
    前記トレースユニットは、外部装置と接続するためのトレース出力と、該トレース出力に接続され、前記トレース出力に渡す前にトレースデータを格納するためのトレース出力バッファ(21)とを有し、前記トレース出力バッファ(21)及び前記スケジューラ(7)にトレースインパクトカウンタ(20)が接続されており、
    使用中、前記トレース出力バッファ(21)は、バッファ占有率データを前記スケジューラ(7)に送信し、該スケジューラは、前記バッファ占有率データに基づいて命令のスケジューリングを一時停止し、前記スケジューリングの一時停止の表示を前記トレースインパクトカウンタ(20)に送信し、該トレースインパクトカウンタ(20)は、前記命令のスケジューリングが一時停止されたサイクル数を、前記トレース出力バッファ(21)に送信されるトレースデータに加える、
    ことを特徴とするデータプロセッサ。
  2. 前記バッファ占有率データは、前記トレース出力バッファが一杯であることの表示であることを特徴とする請求項1に記載のデータプロセッサ。
  3. データプロセッサからのトレースデータを与える方法であって、
    前記データプロセッサは、
    該データプロセッサにより実行される命令をスケジューリングするためのスケジューラと、
    前記トレースデータを外部装置に出力する前に該トレースデータを格納するためのトレース出力バッファを含むトレースユニットと、
    前記トレース出力バッファと前記スケジューラに接続され、前記命令のスケジューリングが一時停止されたサイクル数を計数するトレースインパクトカウンタを含み、
    前記方法は、
    前記トレース出力バッファ内の使用可能な空間の表示を前記スケジューラに送信するステップと、
    前記スケジューラが、前記使用可能な空間の表示に基づいて、前記命令のスケジューリングを一時停止し、前記スケジューリングの一時停止の表示を前記トレースインパクトカウンタに送信するステップと、
    前記トレースインパクトカウンタが、前記命令のスケジューリングが一時停止されたサイクル数を、前記トレース出力バッファに送信されるトレースデータに加えるステップを含む、
    ことを特徴とする方法。
  4. 前記トレース出力バッファ内の使用可能な空間の表示は、該トレース出力バッファが一杯であることの表示であることを特徴とする請求項3に記載の方法
JP2011506767A 2008-04-28 2009-04-28 パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム Expired - Fee Related JP5485982B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0807701.8 2008-04-28
GB0807701A GB2459652B (en) 2008-04-28 2008-04-28 Controlling instruction scheduling based on the space in a trace buffer
PCT/GB2009/001070 WO2009133354A2 (en) 2008-04-28 2009-04-28 System for providing trace data in a data processor having a pipelined architecture

Publications (2)

Publication Number Publication Date
JP2011519100A JP2011519100A (ja) 2011-06-30
JP5485982B2 true JP5485982B2 (ja) 2014-05-07

Family

ID=39522679

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011506767A Expired - Fee Related JP5485982B2 (ja) 2008-04-28 2009-04-28 パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム

Country Status (5)

Country Link
US (2) US8775875B2 (ja)
EP (1) EP2283419A2 (ja)
JP (1) JP5485982B2 (ja)
GB (1) GB2459652B (ja)
WO (1) WO2009133354A2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011243110A (ja) * 2010-05-20 2011-12-01 Renesas Electronics Corp 情報処理装置
GB2481385B (en) * 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
GB2487355B (en) * 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US9158696B2 (en) * 2011-12-29 2015-10-13 Intel Corporation Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
KR101254911B1 (ko) 2012-01-31 2013-04-18 서울대학교산학협력단 다중 경로를 통해 데이터 입출력을 수행하기 위한 방법, 시스템 및 컴퓨터 판독 가능 기록 매체
US9495169B2 (en) 2012-04-18 2016-11-15 Freescale Semiconductor, Inc. Predicate trace compression
US9336003B2 (en) * 2013-01-25 2016-05-10 Apple Inc. Multi-level dispatch for a superscalar processor
CN103207776B (zh) * 2013-03-11 2015-07-15 浙江大学 一种gene乱序发射处理器内核
US9934035B2 (en) 2013-03-21 2018-04-03 Nxp Usa, Inc. Device and method for tracing updated predicate values
US9361202B2 (en) * 2013-07-18 2016-06-07 International Business Machines Corporation Filtering system noises in parallel computer systems during thread synchronization
GB2541400B (en) * 2015-08-17 2017-11-15 Advanced Risc Mach Ltd Tracing of exception handling events
US10698692B2 (en) 2016-07-21 2020-06-30 Advanced Micro Devices, Inc. Controlling the operating speed of stages of an asynchronous pipeline
US10481998B2 (en) 2018-03-15 2019-11-19 Microsoft Technology Licensing, Llc Protecting sensitive information in time travel trace debugging
ES2802723B2 (es) * 2019-07-12 2021-07-27 Univ Alcala Henares Un metodo para el trazado selectivo de la ejecucion de instrucciones, dispositivo de procesamiento relacionado y procesador
GB2594977B (en) 2020-05-14 2022-10-05 Advanced Risc Mach Ltd Technique for collecting state information of an apparatus

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58181154A (ja) * 1982-04-16 1983-10-22 Nec Corp マイクロプログラムトレ−ス装置
US4574351A (en) * 1983-03-03 1986-03-04 International Business Machines Corporation Apparatus for compressing and buffering data
US4575351A (en) * 1984-01-26 1986-03-11 Gonzalez Cindy L Training doll
DE3740762A1 (de) * 1987-01-22 1988-08-04 Nat Semiconductor Corp Datenverarbeitungssystem mit einer externen schnittstelle
JPS6454547A (en) * 1987-08-25 1989-03-02 Nec Corp Information processor with program trace function
US4862352A (en) * 1987-09-16 1989-08-29 Motorola, Inc. Data processor having pulse width encoded status output signal
JPH04243436A (ja) * 1991-01-18 1992-08-31 Nec Corp 実行履歴記憶装置
US5473754A (en) * 1993-11-23 1995-12-05 Rockwell International Corporation Branch decision encoding scheme
US6263488B1 (en) * 1993-12-03 2001-07-17 International Business Machines Corporation System and method for enabling software monitoring in a computer system
US5564028A (en) * 1994-01-11 1996-10-08 Texas Instruments Incorporated Pipelined data processing including instruction trace
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5642478A (en) * 1994-12-29 1997-06-24 International Business Machines Corporation Distributed trace data acquisition system
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
US5724505A (en) * 1996-05-15 1998-03-03 Lucent Technologies Inc. Apparatus and method for real-time program monitoring via a serial interface
US5864697A (en) * 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US6112317A (en) * 1997-03-10 2000-08-29 Digital Equipment Corporation Processor performance counter for sampling the execution frequency of individual instructions
US5857097A (en) * 1997-03-10 1999-01-05 Digital Equipment Corporation Method for identifying reasons for dynamic stall cycles during the execution of a program
JPH1124959A (ja) * 1997-07-02 1999-01-29 Hewlett Packard Japan Ltd マイクロプロセッサのトレース情報出力方法
JPH10275092A (ja) * 1997-03-31 1998-10-13 Hewlett Packard Japan Ltd マイクロプロセッサのトレース情報出力方法
EP0869434A3 (en) * 1997-03-31 1999-09-15 Hewlett-Packard Company Method for outputting trace information of a microprocessor
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
JP3542463B2 (ja) * 1997-07-29 2004-07-14 Necエレクトロニクス株式会社 集積回路装置、その動作制御方法
US6023759A (en) * 1997-09-30 2000-02-08 Intel Corporation System for observing internal processor events utilizing a pipeline data path to pipeline internally generated signals representative of the event
US6321331B1 (en) * 1998-04-22 2001-11-20 Transwitch Corporation Real time debugger interface for embedded systems
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
US6615370B1 (en) * 1999-10-01 2003-09-02 Hitachi, Ltd. Circuit for storing trace information
US7124072B1 (en) * 2001-04-30 2006-10-17 Mips Technologies, Inc. Program counter and data tracing from a multi-issue processor
US20030135719A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for tracing instruction disposition information
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US7099817B2 (en) * 2002-11-22 2006-08-29 Texas Instruments Incorporated Stalling CPU pipeline to prevent corruption in trace while maintaining coherency with asynchronous events
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
US20060259750A1 (en) * 2005-05-16 2006-11-16 Texas Instruments Incorporated Selectively embedding event-generating instructions
US20070011492A1 (en) * 2005-07-05 2007-01-11 Arm Limited Generation of trace data
US20070022276A1 (en) * 2005-07-25 2007-01-25 Rolf Fritz Method and System for Processing a Work Item in a Pipelined Sequence
US7496899B2 (en) * 2005-08-17 2009-02-24 Arm Limited Preventing loss of traced information in a data processing apparatus
JP4836811B2 (ja) * 2007-01-26 2011-12-14 株式会社東芝 パフォーマンスモニタ装置および情報処理装置
US20090037887A1 (en) * 2007-07-30 2009-02-05 Chavan Shasank K Compiler-inserted predicated tracing
US8312253B2 (en) * 2008-02-22 2012-11-13 Freescale Semiconductor, Inc. Data processor device having trace capabilities and method

Also Published As

Publication number Publication date
WO2009133354A2 (en) 2009-11-05
US9720695B2 (en) 2017-08-01
US20150012728A1 (en) 2015-01-08
GB0807701D0 (en) 2008-06-04
GB2459652A (en) 2009-11-04
EP2283419A2 (en) 2011-02-16
GB2459652B (en) 2010-09-22
WO2009133354A3 (en) 2009-12-23
US8775875B2 (en) 2014-07-08
JP2011519100A (ja) 2011-06-30
US20090287907A1 (en) 2009-11-19

Similar Documents

Publication Publication Date Title
JP5485982B2 (ja) パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム
KR101994636B1 (ko) 데이터 처리장치의 추적
US10296346B2 (en) Parallelized execution of instruction sequences based on pre-monitoring
US6574727B1 (en) Method and apparatus for instruction sampling for performance monitoring and debug
US7086035B1 (en) Method and system for counting non-speculative events in a speculative processor
TWI423123B (zh) 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體
US6539502B1 (en) Method and apparatus for identifying instructions for performance monitoring in a microprocessor
JP2014220003A (ja) 命令の追跡中に作られるデータ・ストリームの大きさの削減
US10628160B2 (en) Selective poisoning of data during runahead
TW201312460A (zh) 用於多股亂序處理器中之指令排程的方法及裝置
US9658853B2 (en) Techniques for increasing instruction issue rate and reducing latency in an out-of order processor
US6530042B1 (en) Method and apparatus for monitoring the performance of internal queues in a microprocessor
JP5403973B2 (ja) アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
US6622240B1 (en) Method and apparatus for pre-branch instruction
US6550002B1 (en) Method and system for detecting a flush of an instruction without a flush indicator
KR20070108936A (ko) 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법
JP5155655B2 (ja) マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御
CN108345534B (zh) 生成和处理跟踪流的装置和方法
US6668306B2 (en) Non-vital loads
US10296350B2 (en) Parallelized execution of instruction sequences
US20100088491A1 (en) Processing unit
JP2005122329A (ja) ソフトウェアのリアルタイム解析方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140220

R150 Certificate of patent or registration of utility model

Ref document number: 5485982

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees