JP2014220003A - 命令の追跡中に作られるデータ・ストリームの大きさの削減 - Google Patents
命令の追跡中に作られるデータ・ストリームの大きさの削減 Download PDFInfo
- Publication number
- JP2014220003A JP2014220003A JP2014148052A JP2014148052A JP2014220003A JP 2014220003 A JP2014220003 A JP 2014220003A JP 2014148052 A JP2014148052 A JP 2014148052A JP 2014148052 A JP2014148052 A JP 2014148052A JP 2014220003 A JP2014220003 A JP 2014220003A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- marker
- data
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000003550 marker Substances 0.000 claims abstract description 110
- 238000012545 processing Methods 0.000 claims abstract description 53
- 230000006835 compression Effects 0.000 claims abstract description 42
- 238000007906 compression Methods 0.000 claims abstract description 42
- 238000012544 monitoring process Methods 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 abstract description 43
- 230000006399 behavior Effects 0.000 description 51
- 238000012546 transfer Methods 0.000 description 22
- 230000006837 decompression Effects 0.000 description 19
- 125000004433 nitrogen atom Chemical group N* 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 238000013500 data storage Methods 0.000 description 12
- 125000004429 atom Chemical group 0.000 description 11
- 230000004044 response Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 210000003813 thumb Anatomy 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Microcomputers (AREA)
Abstract
【課題】データ処理装置が高速になるに従って命令の実行の追跡が複雑になることに対処して、追跡中に作られるデータ・ストリームの大きさを削減する方法を開示する。
【解決手段】追跡論理(40)は命令ストリーム内の命令の処理を検出する監視論理(42)を含み、命令ストリーム内の命令のどれが条件付き直接分岐命令か、条件付き間接分岐命令か、無条件間接分岐命令かを検出する。追跡論理(40)は更に圧縮論理(50)を含み、前記条件付き直接分岐命令、条件付き間接分岐命令、または間接分岐命令をマーカ命令に指定し、マーカ命令毎に、マーカ命令を実行したことを示す実行標識またはマーカ命令を実行しなかったことを示す不実行標識は出力し、処理したがマーカ命令でない命令に関するデータは出力しない。
【選択図】図2
【解決手段】追跡論理(40)は命令ストリーム内の命令の処理を検出する監視論理(42)を含み、命令ストリーム内の命令のどれが条件付き直接分岐命令か、条件付き間接分岐命令か、無条件間接分岐命令かを検出する。追跡論理(40)は更に圧縮論理(50)を含み、前記条件付き直接分岐命令、条件付き間接分岐命令、または間接分岐命令をマーカ命令に指定し、マーカ命令毎に、マーカ命令を実行したことを示す実行標識またはマーカ命令を実行しなかったことを示す不実行標識は出力し、処理したがマーカ命令でない命令に関するデータは出力しない。
【選択図】図2
Description
本発明の分野はデータ処理に関するもので、特にデータ処理動作を監視するための診断機構に関するものである。
処理回路が実行中の処理を追跡したいことが多いが、その場合に、命令を処理している順序を確認しまた任意の時点でどの命令を処理中であるか判断できることが望ましい。かかる情報は、例えばデータ処理装置の開発中に有用であって、処理回路の動作を追跡したい場合が多い。かかるプロセスを援助するのに用いられるツールの例として追跡ツールがある。
データ処理装置の動作を追跡して、装置内のステップ・バイ・ステップの動作を表すデータを含む追跡ストリームを作ることは、装置開発のツールとして非常に有用である。かかる追跡ツールはプログラム・フローを追跡するために種々の手段を用いる。一例として、処理を監視する対象のチップ上に設ける埋込み追跡マクロセル(ETM)がある。これはケンブリッジのARM社の商標である。
多くのプロセッサ命令セット・アーキテクチャは、分岐を処理する箇所でのデータ処理装置の状態を条件とする分岐命令を含む。すなわち、或る条件が真の場合はその命令を実行してその行先に分岐し、条件が偽の場合はその命令を実行せずに次に続く命令に進む(すなわちノーオペ命令として処理する)。また多くの命令セット・アーキテクチャは間接分岐命令を含む。これは分岐を処理する箇所でのデータ処理装置の現在の状態から分岐の行先を計算するものである。2001年のARM構造参照マニュアル、ISBN 0−201−73719−1に記載されているARM(R)命令セット・アーキテクチャは分岐命令でない条件付き命令も含む。これは、命令を処理する箇所でのプロセッサの現在の状態に従って実行するかまたは実行しない命令である。しばしばプレディケイテッド(predicated)と呼ばれる条件付き命令を含む命令セット・アーキテクチャもある。条件付きでない命令(必ず実行する命令)は無条件命令と呼ぶ。
既存のARM(R)(ケンブリッジのARM社の登録商標)プロセッサ・コアのサイクル不正確追跡(non−cycle−accurate trace)用として埋込み追跡マクロセルで用いられている現在のプロトコルは、サイクル正確追跡用として用いられたものから発展したものである。したがって、ストリーム内の命令毎に、ETMはCPUからの情報をEアトム(命令を実行したとき)またはNアトム(命令を実行しなかったとき)として符号化する。次に、ETMは生成されたEアトムおよびNアトムのシーケンスを含むデータ・ストリームを出力する。データ・ストリームは一般に、ランレングス符号化などの符号化方式を用いた圧縮形で出力する。
これは2002年12月のARM埋込み追跡マクロセル・アーキテクチャ仕様書、ARM IHI 0014Iに記述されている。
これは2002年12月のARM埋込み追跡マクロセル・アーキテクチャ仕様書、ARM IHI 0014Iに記述されている。
このデータ・ストリームは、チップ上またはチップ外に記憶した後に、ETMデコンプレッサと呼ばれるデバッグ・エージェント・プログラムに送ってよい。このデコンプレッサは追跡中のプログラムのコピーを有するので、Eアトムや、Nアトムや、データ・ストリーム内の他の情報(間接分岐などの、データに依存するプログラム・フローの変更を符号化する)を復号することにより、埋込みCPU内でプログラム・フローを再構築することができる。
データ・プロセッサ・コアの動作周波数が高くなりまた複数のコアを有するプロセッサが普及するに従って、データ処理装置の開発中に用いられるデバッグおよび追跡のツールおよび機構を改善する必要が生じる。コア周波数が高くなると追跡に特殊な問題が生じる。例えば、既存のARMプロセッサ・コアおよびETMプロトコルでは、命令だけを追跡するときのビット率は命令当たり約1.2から1.6ビットである。したがって、サイクル毎に1命令を処理する1GHzプロセッサは毎秒1.2から1.6ギガビットの追跡データを生成し、このデータをチップ外に取り出してバッファ内に記憶する必要がある。更に、多プロセッサ・システムではこのデータ率は整数倍になる。
個々の命令を追跡するのに用いられる平均ビット数を減らすには圧縮が用いられる。しかし、絶えず高速化するコアを追跡する必要があるので、このデータ率を更に減らすことが望ましい。
データ処理装置のデータ動作を追跡する別の周知の方法にはXScale(R)と呼ばれる、データ処理装置内に埋め込まれるIntel(R)の製品がある。これはIntel(R)XScale(R)coreというタイトルの、2004年1月発行のインテル開発マニュアル内に記述されている。
データ処理装置のデータ動作を追跡する別の周知の方法にはXScale(R)と呼ばれる、データ処理装置内に埋め込まれるIntel(R)の製品がある。これはIntel(R)XScale(R)coreというタイトルの、2004年1月発行のインテル開発マニュアル内に記述されている。
このXScale(R)という追跡機構では、実行した命令または実行しなかった命令の全ての詳細を出力するのではなく、実行した分岐命令に到るまでに処理した命令をカウントする。すなわち、処理した命令の数と、プログラムの分岐先についての情報とを出力する。したがって、実行せずに条件付き分岐命令を通った場合はこの命令についての情報は出力しない。なぜなら、上に述べた他の従来の追跡機構とは異なり、この追跡機構は不実行標識を出力しないからである。XScale(R)の1つの欠点は、実行しなかった条件付き分岐命令に関する情報を出力しないので、実行した条件付き分岐命令の標識は、命令ストリーム内の可能な分岐命令のどれを実行したかをデコンプレッサが判断できるだけの十分な情報を含まなければならないことである。これはカウンタの形をとり、多数のビットを符号化する必要がある。更にこのカウンタは、処理したが実行しなかった分岐命令を全て数えるのでオーバーフローする可能性がある。したがって、追跡ストリームはオーバーフロー・マーカも符号化しなければならない。もう1つの欠点は、これは分岐命令に関する情報だけを出力し、他の条件付き命令に関する情報は出力しないことである。したがって追跡は不完全であり、有用な場合が限られる。
本発明の第1の態様は、データ・プロセッサが処理中のプログラムからの処理命令のストリームを監視するための追跡論理を提供する。前記追跡論理は、監視論理であって、前記命令ストリーム内の前記命令の処理を検出し、前記命令ストリーム内の前記命令のどれが条件付き直接分岐か、前記命令ストリーム内の前記命令のどれが条件付き間接分岐か、および前記命令ストリーム内の前記命令のどれが無条件間接分岐命令かを検出する監視論理を含み、また前記追跡論理は更に、圧縮論理であって、前記条件付き直接分岐命令、前記条件付き間接分岐命令、および前記無条件間接分岐命令をマーカ命令に指定し、マーカ命令毎に、前記マーカ命令を処理したときの前記データ・プロセッサの挙動を示す標識は出力し、処理したがマーカ命令でない命令に関するデータは出力しない、圧縮論理を含む。
プロセッサの速度が絶えず大きくなりまた場合によってはマルチプロセッサが同時に動作する環境ではプロセッサ・プログラム・フローの追跡中に得られるデータの量は絶えず増える。この問題に対処するため、本発明では、一般に追跡を形成する情報の一部は推測することができるので出力する必要がなく、したがって出力する情報の量を減らすことができると考える。この点で本発明は、条件付き直接分岐命令、条件付き間接分岐命令、および無条件間接分岐命令を(すなわち、静的にその挙動を決定することができない命令の少なくとも一部を)マーカ命令に指定する。これらの命令が重要である理由は、これらの命令を処理する箇所のプログラム挙動が、動的に(すなわちプログラムの実行中に)決定されるいくつかの要素に依存するからである。したがって、命令ストリームを追跡するときは、これらの条件付き直接分岐命令、条件付き間接分岐命令(まとめて条件付き分岐命令と呼ぶ)、または無条件間接分岐命令を処理するときのプロセッサの挙動が分かることが重要である。すなわち、条件付き分岐命令の条件が満たされているか、間接分岐命令の分岐先はどこか、である。マーカ命令に指定されない他の命令の挙動は一般に分かるので、この情報を出力する必要はないことが認識された。したがって、マーカ命令の挙動に関する情報およびプログラム自身の知識だけからプログラム・ストリームを追跡することができる。これにより、命令ストリームを追跡するために出力する必要のあるデータの量を大幅に減らすことができる。
認識されるように、命令の追跡を簡単にするために間接分岐命令と条件付き分岐命令だけでマーカ命令を構成するが、他の形の追跡では他のクラスの命令もマーカ命令に指定する必要があろう。
或る実施の形態では、前記監視論理は更に前記命令ストリームのどれが条件付き命令かを検出し、前記圧縮論理は更に前記条件付き命令をマーカ命令に指定する。
或る実施の形態では、前記監視論理は更に前記命令ストリームのどれが条件付き命令かを検出し、前記圧縮論理は更に前記条件付き命令をマーカ命令に指定する。
条件付き分岐命令および無条件間接分岐命令に加えて条件付き命令をマーカ命令に更に指定することにより、追跡論理は、挙動を静的に決定することができない全ての命令の挙動を示す標識を出力する。データ・プロセッサが処理する命令ストリームを完全に決定するのにこれらの命令の挙動を追跡する必要はないが、プログラムをデバッグするときには、これらの命令の挙動を追跡するとプログラムの完全な挙動を決定できることが多い。したがって、プログラム・ストリームを追跡するとき、条件付き命令の条件が満たされているかどうかが分かることは重要である。
或る実施の形態では、前記監視論理は更に前記命令ストリームのどれがデータ・メモリ転送命令かを検出し、前記圧縮論理は更に前記データ・メモリ転送命令をマーカ命令に指定する。
命令の追跡を拡張して、データ処理装置上で実行したデータ・メモリ転送命令が生成したデータ・メモリ転送の追跡も含めることが多い。しかし、一般にデータ・メモリ・アドレスおよび1つ以上のデータ・メモリ値から成るデータ・メモリ転送を全て追跡すると、大量の追跡データが生成されることが観測されている。したがって追跡論理の既存の実施の形態は、通常は転送のアドレス部に基づいて、データ・メモリ転送を濾波する手段を含む。かかる装置では、どのデータ・メモリ転送命令も追跡を生成することは可能であるが、実際に生成するのはその一部だけである。追跡したデータ・メモリ転送を生成したのはどのデータ・メモリ転送命令かを決定できるようにしたい。全てのデータ・メモリ転送動作をマーカ命令と見なすことにより、追跡ストリームは、追跡したデータ・メモリ転送とデータ・メモリ転送命令とを比較的低コストで関連付けるのに十分な情報を含む。なぜなら、追跡したデータ・メモリ転送を生成しなかったデータ・メモリ転送命令の挙動についての標識はデータ・メモリ転送命令を処理したことを示すだけでよいからである。
或る実施の形態では、前記圧縮論理は前記間接分岐命令を処理したことの検出に応じて前記命令の分岐先の表示を前記標識として出力する。
この標識は、プロセッサの挙動に関して何かを示すものでさえあれば、多くの形をとってよい。間接分岐命令の場合は、命令の分岐先に関する情報を標識として出力するのがよいことが分かっている。この情報を受けると、間接分岐命令を検出したこととプログラムの分岐先とが分かる。したがって、これは実行の表示と追跡に必要な更なる情報とを出力する効率的な方法である。
この標識は、プロセッサの挙動に関して何かを示すものでさえあれば、多くの形をとってよい。間接分岐命令の場合は、命令の分岐先に関する情報を標識として出力するのがよいことが分かっている。この情報を受けると、間接分岐命令を検出したこととプログラムの分岐先とが分かる。したがって、これは実行の表示と追跡に必要な更なる情報とを出力する効率的な方法である。
或る実施の形態では、前記監視論理は更にカウンタを含み、各マーカ命令に続いて処理した非マーカ命令の数を前記カウンタでカウントしまた例外事象を検出し、前記圧縮論理は前記例外事象の検出に応じて前記例外を検出したことを示す例外標識を前記カウンタ値と共に出力する。
プログラムの実行中に例外事象が起こった場合は、プログラムを追跡中にどの箇所でこの例外事象が起こったかを知ることが重要である。一般にマーカ命令に指定されていない命令はその処理の出力に関する情報を有する必要はないが、例外が起こった場合は外事象が起こった場所をつきとめるのに必要なので、この情報は重要である。マーカ命令の間に命令をいくつ処理したかを数えるにはカウンタを用いる。次のマーカ命令に来るとこの情報は一般に捨ててよいので、カウンタを初期値にリセットしてよい。しかし、例外事象がこれより前に起こった場合は、この情報を、例外事象が起こったことを示す標識と共に出力する。この情報を出力した後は、カウンタはリセットしてもよいし、カウントを続けてもよい。カウント値を出力したので、カウントを続けていれば、次に例外が起こった場所は出力値とその箇所でのカウンタの値から得ることができる。
或る実施の形態では、前記カウンタ値が或る予め決められた値を超えたことに応じて、前記非マーカ命令の性質に関わらず、前記圧縮論理は前記カウンタ値が或る予め決められた値を超える点に達した前記非マーカ命令をマーカ命令に指定した後、前記カウンタをリセットする。
マーカ命令の間に起こる命令の数は変化するし、場合によっては大きいことがある。したがって、これらの命令をカウントする場合は全ての事態に対処するために大きなカウンタを設ける必要がある。大きな数をカウントすることができるカウンタを必要としないようにするためには、或る予め決められた値(一般にカウンタの最大値であるが、カウント・ダウンするカウンタの場合は最小値でよい)をカウント値が超えるとカウンタをリセットして、次の命令をマーカ命令に指定しまたは昇格させるのがよいことが分かった。これは、カウンタを不当に大きくせずに、しかもプログラム・ストリーム内のどこで例外事象が起こったかを知るのに効率的な方法である。代替策として、予め決められた値をカウンタのカウント値が超えると「カウンタ・リセット」標識を出力してリセットすることであろう。この方法の欠点は、これが追加の情報であって、これを認識するためのフォーマットを必要とすることである。対照的に、マーカ命令はすでに用いられている。当業者に明らかなように、カウンタは多くの方法で実現することができるが、ゼロから最大数までカウント・アップしたり、最初の最大値からゼロまでカウント・ダウンしたりするなどを含めて、全ては機能的に同じものである。
或る実施の形態では、前記監視論理は更に前記命令ストリームのどれが無条件直接分岐命令かを検出し、前記圧縮論理は更に前記無条件直接分岐命令をマーカ命令に指定する。
全ての分岐命令(直接または間接、条件付きまたは無条件の)をマーカ命令に指定することにより、追跡ストリームはプログラム・フローの中の不連続が存在する箇所についての情報だけを含む。無条件直接分岐は通常は追跡する必要はない。なぜなら、追跡ストリームを参照しなくてもその挙動を静的に決定することができるから、すなわち、命令の分岐先を必ず決定することができるし(分岐が直接なので)また必ず分岐する(無条件なので)からである。しかし、これらの命令を追跡すると、追跡したマーカ命令の間のプログラム挙動はプログラム内の順次の場所の命令だけから成る。これは或る形の処理では利点である。
全ての分岐命令(直接または間接、条件付きまたは無条件の)をマーカ命令に指定することにより、追跡ストリームはプログラム・フローの中の不連続が存在する箇所についての情報だけを含む。無条件直接分岐は通常は追跡する必要はない。なぜなら、追跡ストリームを参照しなくてもその挙動を静的に決定することができるから、すなわち、命令の分岐先を必ず決定することができるし(分岐が直接なので)また必ず分岐する(無条件なので)からである。しかし、これらの命令を追跡すると、追跡したマーカ命令の間のプログラム挙動はプログラム内の順次の場所の命令だけから成る。これは或る形の処理では利点である。
或る実施の形態では、前記監視論理は更に例外事象を検出し、前記圧縮論理は前記例外事象の検出に応じて、前記例外を検出したことを示す例外標識を、前記例外が起こった前記プログラム内の場所を示す値と共に出力する。
プログラムの実行中に例外事象が起こった場合は、命令ストリームの追跡中にどの箇所でこの例外事象が起こったかを知ることが重要である。一般に、プログラム内の場所が分かれば十分である。なぜなら、ほとんどのコード・シーケンスで、任意の所定の場所の命令は2つのマーカ命令の間で一度だけ処理するからである。ただし、無条件直接分岐のために1つの場所を繰り返し実行するコード・シーケンスもある。したがって、命令ストリーム内の例外の場所は一般にプログラム内の例外の場所を示す値を出力して示すとよい。
プログラムの実行中に例外事象が起こった場合は、命令ストリームの追跡中にどの箇所でこの例外事象が起こったかを知ることが重要である。一般に、プログラム内の場所が分かれば十分である。なぜなら、ほとんどのコード・シーケンスで、任意の所定の場所の命令は2つのマーカ命令の間で一度だけ処理するからである。ただし、無条件直接分岐のために1つの場所を繰り返し実行するコード・シーケンスもある。したがって、命令ストリーム内の例外の場所は一般にプログラム内の例外の場所を示す値を出力して示すとよい。
或る実施の形態では、前記圧縮論理は前記諸標識を出力する前に標識データのストリームを圧縮し、この圧縮されたデータを出力する。
標識に関するデータを圧縮し、この圧縮されたデータを出力することによりデータ出力を更に減らすのは利点である。命令の集合と条件付き命令または間接分岐命令の挙動とを分析することにより頻繁に起こる標識のパターンを見つけることができるので、これらのパターンを少数のビットに符号化してデータ出力を圧縮してよい。
標識に関するデータを圧縮し、この圧縮されたデータを出力することによりデータ出力を更に減らすのは利点である。命令の集合と条件付き命令または間接分岐命令の挙動とを分析することにより頻繁に起こる標識のパターンを見つけることができるので、これらのパターンを少数のビットに符号化してデータ出力を圧縮してよい。
或る実施の形態では、前記追跡論理は更に前記マーカ命令の少なくとも1つの挙動を前のマーカ命令の挙動から決定できるかどうか判断し、前記追跡論理は前記少なくとも1つのマーカ命令をマーカ命令でない命令に降格させる。
静的に決定することができない命令の挙動でも、前に処理した命令の挙動が、特定の間接分岐命令または条件付き命令をどのように処理するかを決定できるだけの十分な情報を追跡ストリーム内で与える場合は、動的に決定できることがある。この場合は、その挙動の知識は追跡ストリーム内に別個の標識を必要とせずに得ることができる。したがって、かかる命令をマーカ命令に指定せず、したがってその挙動の指標を出力しなければ、データ・ストリームを更に減らすことができる。
静的に決定することができない命令の挙動でも、前に処理した命令の挙動が、特定の間接分岐命令または条件付き命令をどのように処理するかを決定できるだけの十分な情報を追跡ストリーム内で与える場合は、動的に決定できることがある。この場合は、その挙動の知識は追跡ストリーム内に別個の標識を必要とせずに得ることができる。したがって、かかる命令をマーカ命令に指定せず、したがってその挙動の指標を出力しなければ、データ・ストリームを更に減らすことができる。
本発明の第2の態様は、本発明の第1の態様に係るプログラム命令の前記ストリームおよび追跡論理を処理するためのデータ・プロセッサを含むデータ処理装置を含む。
或る実施の形態では、前記データ処理装置は更に、前記マーカ命令の少なくとも1つの処理挙動の少なくとも1つの予測を与える予測論理を含み、前記監視論理は、前記少なくとも1つの予測が正しいかどうかを前記監視した挙動から判断し、前記少なくとも1つのマーカ命令について前記少なくとも1つの予測が正しいかどうかについての表示を前記標識として出力する。
或る実施の形態では、前記データ処理装置は更に、前記マーカ命令の少なくとも1つの処理挙動の少なくとも1つの予測を与える予測論理を含み、前記監視論理は、前記少なくとも1つの予測が正しいかどうかを前記監視した挙動から判断し、前記少なくとも1つのマーカ命令について前記少なくとも1つの予測が正しいかどうかについての表示を前記標識として出力する。
予測論理を用いて少なくとも1つのマーカ命令の挙動を予測することにより、追跡データ・ストリーム内のデータの量を減らすことができる。その理由は2つある。第1に、「正しい予測の表示」を送るシンボルは、単なるブール演算か、または多くの予測の場合に単なる列挙でよい。これに必要なデータの数は、起こったことを正確に追跡するために出力すべきデータの数より少ない。第2に、その予測方式から一般に正しい予測が得られる場合は、予測結果のシーケンスは簡単な圧縮技術を用いて元のデータより更に圧縮することができる。したがって、追跡データ出力の量を減らすことができる。
或る実施の形態では、前記予測論理は少なくとも1つの条件付き命令について予測を与える。前記予測論理は前記条件付き命令の条件が真か偽かを予測し、前記少なくとも1つの条件付き命令の前記標識は、前記予測が正しい場合は予測正確表示を、前記予測が不正確な場合は予測不正確表示を含む。
条件付き命令の予測は、その条件付き命令に関する条件が真か偽かを予測することでよい。監視論理は監視した挙動から予測が正しくて適切な標識出力かどうかを判断してよい。
条件付き命令の予測は、その条件付き命令に関する条件が真か偽かを予測することでよい。監視論理は監視した挙動から予測が正しくて適切な標識出力かどうかを判断してよい。
或る実施の形態では、前記予測論理は前記データ処理装置の前記部分の前記挙動の対応する複数のステップに関する複数の予測を与える。前記追跡論理は前記複数の予測の少なくとも一部が正しいかどうか判断して前記複数の予測標識の対応する少なくとも一部を作り、前記圧縮論理は前記複数の予測標識の前記少なくとも一部を圧縮して圧縮されたデータを作り、前記追跡論理は前記圧縮されたデータを出力する。
一般に予測論理は、監視中のデータ処理装置のその部分の挙動の複数のステップに対応する複数の予測を与える。追跡論理はそれらが正しいかどうか判断し、圧縮論理を用いてこの情報を圧縮する。大部分の予測が正しいと期待することができる予測方式の場合は、これは利点である。値の可能な集合の間にデータ値が不均等に分散されているデータの方が、値の可能な集合の間にデータ値が均等に分散されているデータより容易に圧縮できることが分かった。
非マーカ命令の実行に関する情報を出力しないように追跡論理が構築されているとき、得られる出力は、第1に間接分岐命令の標識と、第2に条件付き命令の実行または不実行に関する標識とから成る。ただし、出力のこの第2の部分内の「実行」標識と「不実行」標識の分布は一般に均等である。或る予測アルゴリズムを用いる場合は、これらの「実行」標識と「不実行」標識を、「予測正確」標識と「予測不正確」標識で置き換えてよい。予測が一般に正しい場合は、これらの標識が均一に分布されることは非常に少ないので、一層よく圧縮することができる。
或る実施の形態では、前記追跡論理は埋込み追跡マクロセルを含む。
或る実施の形態では、前記データ処理装置は更にデータ記憶装置を含み、前記圧縮論理はデータを前記データ記憶装置に出力する。
或る実施の形態では圧縮論理はデータを外部装置に出力するが、別の実施の形態では単にデータ処理装置自身内のデータ記憶装置に出力する。
或る実施の形態では、前記データ処理装置は更にデータ記憶装置を含み、前記圧縮論理はデータを前記データ記憶装置に出力する。
或る実施の形態では圧縮論理はデータを外部装置に出力するが、別の実施の形態では単にデータ処理装置自身内のデータ記憶装置に出力する。
或る実施の形態では、前記データ処理装置は更に前記プログラムおよび圧縮解除論理を記憶するためのプログラム・データ記憶装置を含み、前記圧縮解除論理は前記圧縮論理が出力したデータを受けて、前記マーカ命令の前記実行標識および不実行標識と前記記憶されたプログラムからプログラム・フローを決定する。
圧縮解除論理およびプログラム・データ記憶装置は別個の診断装置内に設けてよいが、或る実施の形態では命令を処理する同じデータ処理装置上にこれを設けてよい。したがって、1台のデータ処理装置でプログラム・フローの処理とその追跡を共に行ってよい。
圧縮解除論理およびプログラム・データ記憶装置は別個の診断装置内に設けてよいが、或る実施の形態では命令を処理する同じデータ処理装置上にこれを設けてよい。したがって、1台のデータ処理装置でプログラム・フローの処理とその追跡を共に行ってよい。
本発明の第3の態様は、データ・プロセッサを監視する追跡論理から出力されるデータ・ストリームを受ける診断装置を含む。前記データ・ストリームは、マーカ命令を処理したときの前記データ・プロセッサの挙動を示す標識は含み、処理したがマーカ命令でない命令に関するデータは含まず、前記マーカ命令は条件付き直接分岐命令、条件付き間接分岐命令、および無条件間接分岐命令を含み、前記診断装置は圧縮解除論理およびデータ記憶装置を含み、前記データ記憶装置は前記データ・プロセッサが処理した前記プログラムの前記命令を記憶し、前記圧縮解除論理は前記データ・ストリームを受けて、前記マーカ命令の前記標識と前記記憶されたプログラムからプログラム・フローを決定する。
本発明の第1の態様の追跡論理が出力した情報は本発明の第3の態様に係る診断装置が受けて分析してよい。圧縮解除論理はマーカ命令の実行標識および不実行標識と分析対象のデータ・プロセッサが処理中のプログラムの知識だけからプログラム・フローを決定することができる。
或る実施の形態では、前記診断装置は更に、前記圧縮解除論理に送る前に前記データ・ストリームを受けて記憶するためのバッファを含む。
バッファは追跡論理と診断装置との間に置くのがよく、したがって一般に設けられる。
或る実施の形態では、前記診断装置は更に、前記圧縮解除論理に送る前に前記データ・ストリームを受けて記憶するためのバッファを含む。
バッファは追跡論理と診断装置との間に置くのがよく、したがって一般に設けられる。
本発明の第4の態様は、データ・プロセッサが処理中のプログラムからの処理命令のストリームを監視する方法を提供する。前記方法は、前記命令ストリーム内の前記命令の処理を検出するステップと、前記命令ストリーム内の前記命令のどれが条件付き命令か、および前記命令ストリーム内の前記命令のどれが条件付き間接分岐命令または無条件間接分岐命令かを検出するステップと、前記条件付き直接分岐命令、前記条件付き間接分岐命令、および前記無条件間接分岐命令をマーカ命令に指定するステップと、マーカ命令毎に、前記マーカ命令を実行したことを示す実行標識または前記マーカ命令を実行しなかったことを示す不実行指標は出力し、前に処理したがマーカ命令でない命令に関するデータは出力しないステップと、を含む。
本発明の第5の態様は、データ・プロセッサが処理中のプログラムを診断する方法を提供する。すなわち、本発明の第4の態様に係る方法を実行することにより出力されるデータを受け、前記データ・プロセッサが処理中の前記プログラムの前記命令をデータ記憶装置内に記憶し、前記マーカ命令の前記実行標識および非実行標識と前記記憶されたプログラムから処理中の前記プログラムのプログラム・フローを決定することを含む。
本発明の第6の態様は、データ・プロセッサ上で実行すると、データ・プロセッサを制御して本発明の第5の態様に係る方法の各ステップを実行するコンピュータ・プログラム製品を提供する。
本発明の上記の目的、機能および利点は、添付の図面を参照して以下の例示的な実施の形態の詳細な説明を読めば明らかになる。
本発明の第6の態様は、データ・プロセッサ上で実行すると、データ・プロセッサを制御して本発明の第5の態様に係る方法の各ステップを実行するコンピュータ・プログラム製品を提供する。
本発明の上記の目的、機能および利点は、添付の図面を参照して以下の例示的な実施の形態の詳細な説明を読めば明らかになる。
図1は処理中の命令10のストリームを簡単な形で示す。命令ストリームは条件付き分岐命令10a1および10a2と例外事象10bとを含む。
本発明のこの実施の形態において、図に示す命令では、マーカ命令だけが命令に関する情報出力を有する。したがってこの事例では、命令10a1の不実行のときはNアトムを出力し、命令10a2の実行のときはEアトムを出力する。例例外事象10bに応じて、例外表示と、前のマーカ命令10a2に続いて実行した命令の数を示すカウント値とを出力する。
本発明のこの実施の形態において、図に示す命令では、マーカ命令だけが命令に関する情報出力を有する。したがってこの事例では、命令10a1の不実行のときはNアトムを出力し、命令10a2の実行のときはEアトムを出力する。例例外事象10bに応じて、例外表示と、前のマーカ命令10a2に続いて実行した命令の数を示すカウント値とを出力する。
図2はCPU30を含むデータ処理装置20を示す。CPU30は命令メモリ22から送られる命令ストリームを含むプログラムを処理する。CPU30は、命令取出しユニット32、パイプライン34、および追跡インターフェース36を含む。またデータ処理装置20は、追跡インターフェース36を介してプログラムの処理を追跡する埋込み追跡マクロセル(ETM)40を含む。ETM40は、カウンタ45を有する監視論理42と圧縮論理50とを含む。監視論理42はCPU30内の命令の処理を監視し、処理したがマーカ命令に指定しなかった命令毎にカウンタ45を増分する。また条件付き分岐命令または間接分岐命令(すなわち、その挙動を静的に決定できない少なくとも一部の命令)をマーカ命令に指定する。或る命令をマーカ命令に指定すると、カウンタをリセットし、前に記憶した情報を捨てる。
追跡は一般に循環バッファ(すなわち、新しい項目が最も古い項目を上書きするバッファ)内に記憶するので、追跡ストリームは一般に、ETMから定期的に出力される同期データも含む。この同期データは圧縮解除論理がその同期点から追跡の圧縮解除を開始するための十分な情報を含む。したがって、同期点でのカウンタ値を知らなければならない。このための1つの方法は同期データ内にカウンタ値を含めることである。ただし、好ましい方法は同期点で単にカウンタをリセットすることであることが分かった。
例外事象が起こると、監視論理42はこれも検出して、この情報をこの時点のカウンタ値(すぐ前のマーカ命令以後に実行した非マーカ命令の数を表す)と共に圧縮論理50に送り、その後でカウンタをリセットする。
したがって圧縮論理50は、マーカ命令を処理したときのプロセッサの挙動と、カウンタ値と、例外事象が起こったことの表示とを示すデータ・ストリームを受ける。圧縮論理50は一般にこの情報を圧縮し、出力ポート60を介して出力する。この場合は、出力ポート60はデータ処理装置20の出力ポート65に接続する。したがって、実行標識と不実行標識と例外事象標識のデータ・ストリームをカウンタ値と共に出力する。これらの標識は種々の形をとってよい。例えば、プログラムの分岐先のアドレスを含んでよい。同様に例外事象標識は、例外の性質やプログラムの分岐先などの種々の形をとってよい。
データ処理装置20から出力する情報は一般に圧縮論理50で圧縮する。これについては後で説明する。情報は追跡ポート・アダプタ70を介して診断装置80に送られる。追跡ポート・アダプタ70は診断装置80が要求するまで情報を緩衝してもよいし、情報を直接に診断装置80に送ってもよい。診断装置80は種々の形をとってよく、この実施の形態ではデバッグ・プログラム110を実行するホスト・コンピュータを含む。診断装置80は更に、CPU30上で実行中のプログラムのイメージを含むデータ記憶装置90を含む。これにより圧縮解除論理100は、処理中のプログラムに関するデータ記憶装置90内の情報とマーカ命令の挙動および全ての例外事象に関する情報とを用いて、処理中のプログラムのプログラム・フローを再構築することができる。この追跡情報はホスト・コンピュータ上のデバッグ・プログラム110に送って、表示および/または分析する。圧縮解除論理は多くの異なる形をとってよいが、多くの実施の形態ではソフトウエア・プログラムとして実現される。
図3は本発明の別の実施の形態に係る装置を示す。装置24はETM40を含み、ETM40はオンチップ・データ記憶装置120にデータを出力する出力ポート60を備える。このデータは圧縮解除プログラム31で分析する。圧縮解除プログラム31はプログラム・データ記憶装置130からの処理中のプログラムに関するデータを用いる。CPU30もプログラム・データ記憶装置130からのプログラムを用いる。圧縮解除プログラム31はCPU30上で、または別のプロセッサ上で実行してよいことに注意していただきたい。したがってこの実施の形態では、データ処理装置はプログラムの実行とデバッグとを共に行うことができる。図3の装置では装置全体を単一のチップ上に形成するが、例えば図2に示すように、別個のチップ上に形成してよいことは明らかである。
図4Aは本発明の或る実施の形態に係る、プログラム・フローを追跡する方法を図示する流れ図を示す。この方法は例外の事象または条件を監視し、例外が見つからない場合は命令ストリーム内の次の命令を調べ、それが条件付き命令かまたは間接分岐命令かを確認する。どちらかであることを確認した場合はこの命令をマーカ命令に指定し、その挙動を示す標識を出力し、カウンタをゼロにリセットした後、流れ図の始めに戻る。標識は多くの形をとってよい。例えば条件付き命令の場合は1ビットを用いて、条件が真であって命令を実行した場合は1の値をとり、条件が偽であって命令を実行しなかった場合は0の値をとるようにしてよい。例えば間接分岐命令の場合は、標識はプログラム・フローの分岐先に関する情報を含んでよい。「次」の命令が条件付き命令でも間接分岐命令でもない場合は、カウンタを1だけ増分する。認識されるように、カウンタは固定サイズなので、最大値のときにカウンタを増分するとオーバーフローする。カウンタがオーバーフローすると、この命令をマーカ命令に指定する。言い換えると、普通の命令をマーカ命令に昇格し、「マーカ」命令の挙動を示す情報を出力し、カウンタをゼロにリセットする。カウンタがオーバーフローしない場合は流れ図の始めに戻って、例外事象が起こったかどうか検出する。したがって、カウンタはマーカ命令の間に処理された非マーカ命令の数を記録する。
最初のステップで例外を検出した場合は、カウンタの値を、例外のタイプに関する情報および/または例外の分岐先と共に出力する。次にカウンタをゼロにリセットし、更に進んで次の命令を検出する(その前に別の例外を検出しない限り)。この場合は、これは例外に応じたプログラムの分岐先の命令(例えば、割込みサービス・ルーチン内の最初の命令)でよい。
図4Bは図4Aと同様の流れ図であるが、追加のステップを含む。この実施の形態は、データ・メモリ転送動作もマーカ命令と見なす場合を含む。したがって、或る命令が条件付き命令か間接分岐命令かを判断した後に、或る命令がデータ・メモリ転送命令かどうか判断してこれをマーカに指定するという追加のステップを実行する。認識されるように、命令をマーカに指定した後で、追跡論理は命令の挙動の標識を出力する。標識を出力するとき、追跡論理はこの標識の性質に関する更なる決定を行ってよい。例えば、データ・メモリ転送を追跡すると決定した場合は、標識は転送アドレスおよび/または値の表示を含んでよい。しかし転送を追跡しない場合は、標識はデータ・メモリ転送命令を処理したことを示す単一ビットを含んでよい。
図4Cは図4Aと同様の流れ図であるが、本発明の別の実施の形態に関するものを示す。この方法は例外事象または条件を監視することを含む。例外を検出しなかった場合は、命令ストリーム内の次の命令を調べて、それが分岐命令かどうか確認する。分岐命令と確認した場合はこの命令をマーカ命令に指定して、その挙動を示す標識を出力した後、流れ図の始めに戻る。標識は種々の形をとってよい。例えば、無条件分岐命令の場合は1ビットを用いて、これが1の値のときは分岐を処理したことを示してよい。例えば、条件付き分岐命令の場合は1ビットを用いて、条件が真であって分岐命令を実行した場合は1の値をとり、条件が偽であって分岐命令を実行しなかった場合は0の値をとるようにしてよい。例えば間接分岐命令の場合は、標識はプログラム・フローの分岐先に関する情報を含んでよい。「次」の命令が分岐命令でない場合は、流れ図の始めに戻って、例外事象が起こったかどうか検出する。
最初のステップで例外を検出した場合は、プログラム内の位置を、例外のタイプに関する情報および/または例外の分岐先と共に出力する。認識されるように、位置標識は多くの形をとってよく、また圧縮した形で出力してよい。例えば、例外が起こる前に処理した最後の命令のアドレスの形をとってよい。別の例外を検出しない場合は、更に進んで次の命令を検出する。この場合は、これは例外に応じたプログラムの分岐先の命令(例えば、割込みサービス・ルーチン内の最初の命令)でよい。
図5は図4Aと同様の流れ図であるが、追加のステップを含む。この実施の形態は、動的に決定できる命令および静的に決定できる命令(すなわち、処理する箇所でのその挙動を追跡ストリーム内の前に処理した命令の挙動に関する情報から決定することができる命令)に関する標識を出力しない可能性を含む。したがって、命令を条件付き命令または間接分岐命令と判断した後で追加のステップを実行し、その命令の挙動を前のプログラム挙動から決定できるかどうか判断する。決定できない場合はこの命令をマーカ命令に指定して、この方法は図4Aに進む。しかし決定できる場合はこの命令をすぐにはマーカ命令に指定せず、この方法はカウンタ値を増分するステップに戻る。しかし、カウンタがオーバーフローした場合はこの命令をマーカ命令に指定してよい。
図6は、図4Aに示す方法で作られた追跡データの分析中に実行するステップの概要を示す略図である。図2の出力ポート65から出力されたデータ・ストリームは追跡ポート・アダプタ70を介して圧縮解除論理100(これは診断装置上で走るプログラムでよい)に入る。診断装置は、分析中のプログラムの少なくとも一部を記憶するデータ記憶装置90も含む。圧縮解除論理は追跡データ・ストリームおよび記憶されたプログラムからプログラム・データ・フローを得ることができる。詳しく述べると、圧縮解除論理は両者を一緒に分析して、条件付き命令または間接分岐命令であることをプログラムが示す場合は追跡データ・ストリームを調べて、どのように処理したかを確認する。データ・ストリーム内に例外事象の表示がない限り、他の命令は実行したと見なす。例外事象の表示がある場合はデータ・ストリームを調べて、この例外事象の前の最も近い条件付き命令または間接分岐命令に続いて処理した命令の数を確認する。次に例外事象に関する情報をとり、この情報を、処理した命令の数に関する情報と共に出力する。したがって診断装置は、記憶されたプログラム情報と、間接分岐命令および条件付き命令や例外事象の発生および位置に関する情報を与えるデータ・ストリームとを用いて、プログラムを処理する処理装置の挙動のステップ・バイ・ステップ分析を行うことができる。
静的に決定できる命令に関する情報を出力しないことにより追跡データ・ストリームが有するデータの量を減らすことに加えて、圧縮技術を用いることによりデータを更に減らすことができる。適切な圧縮領域を見つけるには、圧縮論理が出力する実行、不実行、および例外事象に関するデータの一般的なパターンを分析し、最も共通のパターンに特定の符号化を与える。これを用いれば、このデータを出力するのに必要なビット数を減らすことができる。
図7Aは、本発明の或る実施の形態に係る、処理中の命令のストリーム(第3列)と得られる追跡出力の一例を示す。マーカ命令に指定された命令を、カウント値および最終の圧縮された出力と共に示す。命令はARM(R)命令セット・アーキテクチャからのものである。条件付き命令は命令に条件コード接尾辞を付けた命令アセンブリ言語で示す。接尾辞は例えば、EQ(等しい;すなわち、ゼロ[Z]フラグが1)、NE(等しくない;Z=0)、CS(キャリー・セット;C=1)、HI(無符号で高い;C=1かつZ=0)などである。
第1列は命令を処理する順序を示すステップ・シーケンス番号である。第2列は命令のプログラム・カウンタ値を示す。第4列は処理した各命令を実行したか実行しなかったかを示す。
追跡論理の機能は、診断装置が動作のシーケンスを再構築できるだけの十分な情報を含む追跡ストリームをこの動作のシーケンスから作ることである。
図7Aの出力(第8列)を理解するには、用いた圧縮技術を理解することが重要である。本発明の或る実施の形態における追跡データを圧縮するための可能な圧縮方式の概要を、従来の追跡データのための圧縮技術と比較して以下に示す。
追跡論理の機能は、診断装置が動作のシーケンスを再構築できるだけの十分な情報を含む追跡ストリームをこの動作のシーケンスから作ることである。
図7Aの出力(第8列)を理解するには、用いた圧縮技術を理解することが重要である。本発明の或る実施の形態における追跡データを圧縮するための可能な圧縮方式の概要を、従来の追跡データのための圧縮技術と比較して以下に示す。
既存のフォーマット(従来の技術)
追跡ストリームは以下の符号化を用いた一連のバイトから成る。
追跡ストリームは以下の符号化を用いた一連のバイトから成る。
既存のフォーマット(従来の技術):PNおよびP2
処理した命令のシーケンスを示すために追跡論理はPNバイトまたはP2バイトを出力する。
PNバイトは処理した最大16命令を示し、実行した0から15の命令と、その後に続く実行しなかった最大1命令とを含む。ビット7、1、0はPNバイトを識別するのに用いる。実行した命令の数はフィールドE[3..0]内に符号化し、実行しなかった命令の数はフィールドN内に符号化する。
処理した命令のシーケンスを示すために追跡論理はPNバイトまたはP2バイトを出力する。
PNバイトは処理した最大16命令を示し、実行した0から15の命令と、その後に続く実行しなかった最大1命令とを含む。ビット7、1、0はPNバイトを識別するのに用いる。実行した命令の数はフィールドE[3..0]内に符号化し、実行しなかった命令の数はフィールドN内に符号化する。
P2バイトは2命令を処理したことを示し、実行および不実行の任意の混合から成る。
ビット7から4と1と0とはP2バイトを識別するのに用いる。
ビット7から4と1と0とはP2バイトを識別するのに用いる。
追跡論理は処理中の命令を追跡するが、処理した更に別の命令を現在のバイト内で符号化できないとき、または実行中の間接分岐命令に出会ったとき、または例外が起こったときは、P2バイトまたはPNバイトだけを出力する。
例えば、5命令のシーケンスを処理して全てを実行した場合は、出力する現在のバイトはPNバイトであって、E[3..0]=0101かつN=0である。次の命令を処理して実行した場合は、追跡論理はこのバイトは出力せず、代わりにPNバイトの符号化をE[3..0]=0110かつN=0にする。しかし次の命令を処理したが実行しなかった場合は、追跡論理はE[3..0]=0110かつN=1(実行した6命令とその後に続く実行しなかった1命令から成るシーケンスを示す)というPNバイトを出力する。なぜなら、そのPNバイト内で更に命令を符号化することはできないからである。すなわち、バイト8’b11011000を出力する。
本発明の或る実施の形態に係る、追跡データを圧縮するのに適した可能な圧縮フォーマット: PN,P2,P3,P4
従来の符号化方法は、実行した命令のランが長く、実行しなかった命令が少ない場合に優れている。本発明の特定の実施の形態では、実行した条件付き命令と実行しなかった命令(これは定義により条件付きである)だけをPNおよびP2フォーマットで符号化し、PNバイト内のE[3..0]は処理して実行した条件付きのマーカ命令の数を符号化する。Nビットの符号化そのままで変わらない。
従来の符号化方法は、実行した命令のランが長く、実行しなかった命令が少ない場合に優れている。本発明の特定の実施の形態では、実行した条件付き命令と実行しなかった命令(これは定義により条件付きである)だけをPNおよびP2フォーマットで符号化し、PNバイト内のE[3..0]は処理して実行した条件付きのマーカ命令の数を符号化する。Nビットの符号化そのままで変わらない。
同様に、P2バイトの定義を次のように変更する。
実行した条件付き命令のランは実行した(条件付きまたは無条件)命令のランほど一般的でないので、処理した3および4マーカ命令を示す新しいフォーマットを導入した。これは実行した条件付きマーカ命令および実行しなかった(条件付き)マーカ命令の全ての組合せから成る。
F1およびF2ビットの符号化はP2フォーマット・バイトの場合と同様である。F3ビットと、P4バイトの場合のF4ビットの符号化は次の通りである。
既存のフォーマット: Bパケット
或る実行した間接分岐命令に出会うと、追跡論理はまずその前の命令およびその間接分岐を追跡したことを確認し(それらを符号化したPNまたはP2バイトを出力することにより)、次にBパケットを出力する。Bパケットは、B1バイトと、その後にオプションで続くB2バイトと、その後にオプションで続くB3バイトなど、から成る。各Bバイト内の「C」ビットは更にバイトが1つ続くことを示す。すなわち、C=0はこれが最終バイトであることを示し、C=1は次のバイトが続くことを示す。
或る実行した間接分岐命令に出会うと、追跡論理はまずその前の命令およびその間接分岐を追跡したことを確認し(それらを符号化したPNまたはP2バイトを出力することにより)、次にBパケットを出力する。Bパケットは、B1バイトと、その後にオプションで続くB2バイトと、その後にオプションで続くB3バイトなど、から成る。各Bバイト内の「C」ビットは更にバイトが1つ続くことを示す。すなわち、C=0はこれが最終バイトであることを示し、C=1は次のバイトが続くことを示す。
BパケットのA[ ]ビットは分岐したときのプログラム・カウンタ(PC)の変化したビットを符号化する。例えば、アドレス0x8013(16’b1000000000010011)での間接分岐がアドレス0x801F(16’b1000000000011111)に分岐する場合は、PCの最後の4ビットだけが変化するので、Bパケットは新しい値を含む単一のB1バイトとして符号化される。このバイトは必然的にPCの変化しないビット5および4も含む。すなわち、単一のバイト8’b00111110を出力する。
ARM(R)プロセッサは2つ以上の命令セットを実現する。或る実施の形態は、ARM命令セット、Thumb命令セット、Thumb−2EE命令セット、Java(登録商標)命令セットと呼ばれる4つの可能な命令セットを実現する。
ARM(R)プロセッサは2つ以上の命令セットを実現する。或る実施の形態は、ARM命令セット、Thumb命令セット、Thumb−2EE命令セット、Java(登録商標)命令セットと呼ばれる4つの可能な命令セットを実現する。
ARM命令セット(ARM状態で処理された)内の全ての命令は32ビットであり、4の倍数のアドレスで揃っているので、全てのPCアドレスのビット1および0は0にセットされる。したがって、分岐パケットを計算する前に、発信元および宛先のアドレスを2進で右に2位置シフトする。すなわち、B1ビットA[0]はPCビット2に対応し、ビットA[1]はPCのビット3に対応する、などである。
同様に、Thumb命令セット(Thumb状態で処理された)およびThumb2−EE命令セット(ThumbEE状態で処理された)の命令は16ビットで、2の倍数で揃っているので、アドレスを2進で1位置右にシフトする。すなわち、B1ビットA[0]はPCビット1に対応し、ビットA[1]はPCビット2に対応する、などである。
同様に、Thumb命令セット(Thumb状態で処理された)およびThumb2−EE命令セット(ThumbEE状態で処理された)の命令は16ビットで、2の倍数で揃っているので、アドレスを2進で1位置右にシフトする。すなわち、B1ビットA[0]はPCビット1に対応し、ビットA[1]はPCビット2に対応する、などである。
Java(登録商標)命令セット(Jazelle(登録商標)状態で処理される)では、命令は8ビットであってどのアドレスにあってもよいので、アドレスのシフトは起こらない。すなわち、B1ビットA[0]はPCビット0に対応し、ビットA[1]はPCビット1に対応する、などである。
したがって32ビットのアドレス空間では、必要なのは、ARMアドレスは最大でも30ビット、ThumbまたはThumb−2EEアドレスは最大でも31ビット、Java(登録商標)アドレスは32ビットである。全部で5バイトのBパケットを用いる場合は、第5バイトは3つのフォーマットB5A,B5T,B5Jのどれかである。これは、ターゲット・アドレスが、ARM命令アドレス、ThumbまたはThumb−2EE命令アドレス、またはJava(登録商標)命令アドレスの1つであることを示す。
したがって32ビットのアドレス空間では、必要なのは、ARMアドレスは最大でも30ビット、ThumbまたはThumb−2EEアドレスは最大でも31ビット、Java(登録商標)アドレスは32ビットである。全部で5バイトのBパケットを用いる場合は、第5バイトは3つのフォーマットB5A,B5T,B5Jのどれかである。これは、ターゲット・アドレスが、ARM命令アドレス、ThumbまたはThumb−2EE命令アドレス、またはJava(登録商標)命令アドレスの1つであることを示す。
命令セットを変更するときは、ターゲット命令セットを示すために、必ず全部で5バイトのパケットを生成する。第5バイト内のCビットは、間接分岐のときは通常はセットされない。これは例外か、またはThumbEE状態への分岐またはThumbEE状態からの分岐であることを示すのに用いる。
例外の場合は、常に5バイトを含むBパケットを生成する。しかし第5バイト内で継続ビット(C)はセットされ、フォーマットB6の第6バイトがあることを示す。B6は例外のタイプ(例外が最も近い命令を取り消したかどうか、確かな例外として命令を処理したかどうか)を符号化する。
例外の場合は、常に5バイトを含むBパケットを生成する。しかし第5バイト内で継続ビット(C)はセットされ、フォーマットB6の第6バイトがあることを示す。B6は例外のタイプ(例外が最も近い命令を取り消したかどうか、確かな例外として命令を処理したかどうか)を符号化する。
ThumbEE状態への分岐またはThumbEE状態からの間接分岐の場合は、B5Tバイトに続いて第6バイトも生成する。これも符号化し、例外タイプ・フィールドは例外がないことを示す。
したがって間接分岐の場合は、生成されるバイトのシーケンスは必ず次のどれかである。
(PNまたはP2バイトは分岐前および分岐を含む命令を符号化することに注意していただきたい。)
(PNまたはP2バイトは分岐前および分岐を含む命令を符号化することに注意していただきたい。)
例外の場合は、次のバイトのシーケンスが生成される。
バイト5のタイプとバイト6内のTEEビットは例外を処理した状態を示す。
バイト5のタイプとバイト6内のTEEビットは例外を処理した状態を示す。
本発明の或る実施の形態に係る新しいフォーマット: B7バイト
プロトコルを拡張して、最後のマーカ命令の後に処理した非マーカ命令のカウントを符号化するため、B6バイトに続いてB7バイトと呼ばれる別のバイトを出力する。このバイトが存在することを示すには、継続ビットをB6バイトに追加する。
本発明の1つの実施の形態では、このB7バイトはカウンタ値を含む。
プロトコルを拡張して、最後のマーカ命令の後に処理した非マーカ命令のカウントを符号化するため、B6バイトに続いてB7バイトと呼ばれる別のバイトを出力する。このバイトが存在することを示すには、継続ビットをB6バイトに追加する。
本発明の1つの実施の形態では、このB7バイトはカウンタ値を含む。
ビットI[4..0]は5ビット・カウンタを符号化する。用いるにはこれが妥当な長さであることが実験から分かった。したがって、例外が起こると追跡論理は次を出力する。
本発明の或る実施の形態に係る新しいフォーマット: B7からB11バイト
本発明の別の実施の形態では、例外を検出すると、プログラム内の例外が起こった場所を示す値を出力する。好ましい実施の形態では、Bバイトに続いて、例外が起こった命令のアドレスを符号化する一連のバイトとしてこれを出力する。これを圧縮するには、各バイト内の継続ビットを用いて、分岐バイトB1からB4と同様にして、最後のマーカ命令のアドレス(デコンプレッサはこれを知っている)と例外箇所での命令のアドレスとのビット毎の差の値を符号化する。必要であれば、最終バイトB11はアドレスの32番目のビットまで含んでよい。ただし認識されるように、例外がARM、Thumb、またはThumb−2EEの命令セット内で起こった場合は、これらのビットの全てが必要ではないので、余分のビットはゼロである。
本発明の別の実施の形態では、例外を検出すると、プログラム内の例外が起こった場所を示す値を出力する。好ましい実施の形態では、Bバイトに続いて、例外が起こった命令のアドレスを符号化する一連のバイトとしてこれを出力する。これを圧縮するには、各バイト内の継続ビットを用いて、分岐バイトB1からB4と同様にして、最後のマーカ命令のアドレス(デコンプレッサはこれを知っている)と例外箇所での命令のアドレスとのビット毎の差の値を符号化する。必要であれば、最終バイトB11はアドレスの32番目のビットまで含んでよい。ただし認識されるように、例外がARM、Thumb、またはThumb−2EEの命令セット内で起こった場合は、これらのビットの全てが必要ではないので、余分のビットはゼロである。
したがって、例外が起こったとき、例えばこの命令アドレスを示すのに3ビットしか必要としない場合は、追跡論理は次を出力する。
しかしこの実施の形態は図5に示したものではない。
しかしこの実施の形態は図5に示したものではない。
新しいフォーマットでは、任意のBパケット・シーケンス(例外であってもなくてもよい)の前のPN/P2またはP4バイトは分岐命令自身は符号化しない。なぜなら、これはBパケットの存在により暗に含まれているからである。
図7Aの第5列は、各命令が間接分岐命令または条件付き命令(すなわち、この実施の形態ではマーカ命令)であることを示す。命令がマーカ命令の場合はその理由を示している。すなわち、「(cc)」は、この命令が条件付き命令なのでマーカ命令に指定したことを示し、「(ib)」は、この命令が間接分岐命令なのでマーカ命令に指定したことを示す。また、例外を処理するのに用いるカウンタがオーバーフローすると、命令をマーカ命令に昇格させる。しかし、この例ではかかるオーバーフローは起こっていない。
図7Aの第5列は、各命令が間接分岐命令または条件付き命令(すなわち、この実施の形態ではマーカ命令)であることを示す。命令がマーカ命令の場合はその理由を示している。すなわち、「(cc)」は、この命令が条件付き命令なのでマーカ命令に指定したことを示し、「(ib)」は、この命令が間接分岐命令なのでマーカ命令に指定したことを示す。また、例外を処理するのに用いるカウンタがオーバーフローすると、命令をマーカ命令に昇格させる。しかし、この例ではかかるオーバーフローは起こっていない。
第6列はマーカ命令のときに作られたアトムを示す。
第7列は、本発明のこの実施の形態で例外を処理するのに用いるカウンタの値を示す。このカウンタは非マーカ命令を処理する度に増分する。
第8列は、本発明のこの実施の形態の出力を示す。作られたバイトのタイプと、そのアトムの種々のフィールド内の値とを示す。
第7列は、本発明のこの実施の形態で例外を処理するのに用いるカウンタの値を示す。このカウンタは非マーカ命令を処理する度に増分する。
第8列は、本発明のこの実施の形態の出力を示す。作られたバイトのタイプと、そのアトムの種々のフィールド内の値とを示す。
図7に示す例における命令処理はステップ1のSUB命令の処理で開始する。この命令は条件付きでないので実行し、また間接分岐命令でないので、ETMは第5列に示すように非マーカ命令として扱う。したがって、第7列に示すようにカウンタを1に増分する。
ステップ2の命令は同様にマーカ命令でないのでカウンタを2に増分する。
ステップ3の命令はBEQである。これは条件付き分岐命令なので、ETMはマーカ命令として扱う。この命令は実行しなかったのでETMはNアトムを生成し、カウンタを0にリセットする。ETMはアトムのストリームを更に圧縮するので、このアトムをこのステップで出力しない。
ステップ2の命令は同様にマーカ命令でないのでカウンタを2に増分する。
ステップ3の命令はBEQである。これは条件付き分岐命令なので、ETMはマーカ命令として扱う。この命令は実行しなかったのでETMはNアトムを生成し、カウンタを0にリセットする。ETMはアトムのストリームを更に圧縮するので、このアトムをこのステップで出力しない。
このようにして引き続きステップ10まで処理する。更に2つのマーカ命令に出会い、それぞれはNアトムを生成し、各ステップでカウンタをリセットする。ステップ10で第4のマーカ命令を処理する。これもNアトムを生成する。このステップで、ETMはアトム・ストリームを更に圧縮することができないので、4つのNアトムを符号化するP4バイトを出力しなければならない。
処理がステップ17まで進むと、条件付き分岐命令BHIを実行するので、プログラム・カウンタは0x8050の命令に戻る。次に処理はステップ18に進む。ステップ18までは、生成されたアトムのシーケンスは全てEアトムであるが、ステップ19の命令は実行しないので、ETMはここで4つのEアトムと1つのNアトムのランを符号化するPNバイトを出力しなければならない。
処理がステップ17まで進むと、条件付き分岐命令BHIを実行するので、プログラム・カウンタは0x8050の命令に戻る。次に処理はステップ18に進む。ステップ18までは、生成されたアトムのシーケンスは全てEアトムであるが、ステップ19の命令は実行しないので、ETMはここで4つのEアトムと1つのNアトムのランを符号化するPNバイトを出力しなければならない。
処理は更に続き、ステップ26でプロセッサは割込み例外(ARM(R)アーキテクチャではIRQと呼ばれる)を受ける。このステップまでにETMは3つのNアトムを記録した(最も近くはステップ24で)。そのステップの後、非マーカ命令を1つ処理したので、カウンタは1である。したがって、ETMはまず一連の3つのNアトムを符号化するP3バイトを出力し、その後に続いて7バイトの分岐パケット(0x18でのIRQ例外ハンドラの分岐、IRQ例外の発生、およびカウンタの現在の値(1)を符号化する)を出力する。このステップでカウンタをリセットする。
IRQ例外ハンドラの命令はステップ27で処理する。この命令(LDR pc,[pc、#20])は間接分岐命令の一例なのでマーカ命令である。このマーカ命令に応じて、ETMはこの間接分岐の行先(この場合はアドレス0x1000)を符号化する別の分岐パケットを生成する。0x1000の命令はステップ28で処理する。
一例として、図7Bは図7Aに示したのと同じ命令セットに応じて従来のETMおよびXScaleが生成する追跡出力を示す。この図から分かるように、本発明の実施の形態では従来のETMに比べて追跡データ出力が少ない。XScaleの追跡はロールオーバー、直接分岐、例外、および間接分岐のバイトを含むが、XScale自身が作る出力データは本発明のこの実施の形態より少ない。しかし分岐命令でない条件付き命令に関する情報を出力しないので、XScaleはプロセッサのステップを正確に追跡できるだけの十分なデータを出力しないことに注意していただきたい。またXScaleは例外のときの分岐先のアドレスに関する情報を出力しない。なぜなら、XScaleプロセッサでは例外タイプの分岐先アドレスは固定だからである。更に、この例の命令のシーケンスは比較的短いので、作られた追跡の量は長い命令ストリームの場合を表していない。
図7Bから分かるように、従来のETM法はNアトム(実行しなかった命令を示す)よりはるかに多いEアトム(実行した命令を示す)を有する追跡を作る。かかるデータ・パターンは、上に述べたPN符号化で用いられるランレングス符号化方式などの周知の圧縮技術を用いて比較的容易に圧縮することができる。しかし本発明の実施の形態はほぼ等しい数のEアトムおよびNアトムを有するデータ・パターンを形成する傾向があるので、圧縮するのは一層困難である。
ほぼ等しい数の2つの出力を有するデータを効果的に処理することができる圧縮技術を見つける1つの方法は、ほとんど全てが1つの値になるように情報出力を調整する何らかの方法を見つけることであろう。これは、命令によりプロセッサがどのように行動するかを予測する予測技術を用いることにより可能になる。予測技術がかかる予測を行うのに優れている場合は、追跡出力はほとんどが「予測正確」標識から成り、「予測不正確」標識はごく少数であろう。診断装置が同じ予測を行うことができる場合は、かかる追跡データ・ストリームを用いてプロセッサの挙動を追跡することができよう。
上に示した実施の形態では、マーカ命令に指定されるのは条件付き命令と無条件間接分岐命令だけであるが、本発明の実施の形態はこれに限定されないことに注意していただきたい。
上に示した実施の形態では、マーカ命令に指定されるのは条件付き命令と無条件間接分岐命令だけであるが、本発明の実施の形態はこれに限定されないことに注意していただきたい。
或る場合には、条件付き命令および無条件間接分岐命令に加えて他のクラスの処理した命令に関するデータを出力することが重要なことがある。したがって或る実施の形態では、監視論理は別の指定されたクラスの命令を検出してよく、圧縮論理はこの別の指定されたクラスの命令をマーカ命令に指定してよい。また他の実施の形態では、条件付き直接命令、条件付き間接分岐命令、および無条件間接分岐命令だけをマーカ命令に指定してよい。
例えば、ロード命令と格納命令で開始した或るデータ・アクセスのメモリ・アドレスおよびデータ値も追跡しているときは、これらのロード命令と格納命令をいつ処理したかを知ることが重要である。なぜなら、かかるメモリ・アドレスおよびデータ値は必ずしも全てを追跡しないからである。ロード命令と格納命令をマーカ命令に指定することにより、追跡ストリームはこれらの命令の挙動に関する最小限の情報(すなわち、実行したか実行しなかったか)を必ず含むので、追跡した情報は後で正しく識別することができる。
かかる場合は、追跡論理は命令ストリーム内の指定されたクラスの命令を検出するので、それらをマーカ命令に指定してその挙動を示す標識を出力することができる。任意の追加のクラスの命令をマーカ命令に指定するのは一般にETM自身であることに注意していただきたい。何を追跡することを求められたかに従って、ETMはこれを行う。
図8は図2に対応するデータ処理装置を示すが更に、プロセッサ30の挙動を予測するための予測論理72を含む。予測論理72が行った予測と監視論理45が監視したCPU30の実際の挙動とを比較して、予測が正しい場合は「予測正確」標識を圧縮論理50に出力し、予測が正しくない場合は「予測不正確」標識を圧縮論理50に出力する。処理装置の実際の挙動の追加の表示も、適当であればこの段階で出力する。予測システムが一般に正しい場合は大部分は「予測正確」標識を出力するので、圧縮するとデータは元の追跡ストリームより少なくなる。
例えば、予測論理72が行う予測は条件付き命令の条件が真か偽かに関することでよい。条件の値と予測論理72が行った予測とが一致する場合は1(「予測正確」標識)を圧縮論理50に出力し、条件の値と予測論理72が行った予測とが一致しない場合は0(「予測不正確」標識)を圧縮論理50に出力する。この場合は実際の挙動の追加の標識は必要ない。なぜなら可能な挙動は2つだけだからである。
予測方式の一例を以下に示す。
1. 条件付き命令が無条件命令に続くときは実行したと予測する。
2. 第2の条件付き命令が第1の条件付き命令に続くときは、
a. 第2の命令の条件が第1の命令の条件と同じ場合は、第2の命令の実行状態は第1の命令の実際の実行状態と同じであると予測し、
b. 第2の命令の条件が第1の命令の条件と異なる場合は、第2の命令の実行状態は第1の命令の実際の実行状態の逆であると予測する。
1. 条件付き命令が無条件命令に続くときは実行したと予測する。
2. 第2の条件付き命令が第1の条件付き命令に続くときは、
a. 第2の命令の条件が第1の命令の条件と同じ場合は、第2の命令の実行状態は第1の命令の実際の実行状態と同じであると予測し、
b. 第2の命令の条件が第1の命令の条件と異なる場合は、第2の命令の実行状態は第1の命令の実際の実行状態の逆であると予測する。
診断装置80は更に、プロセッサの挙動について同じ予測を行うようにした予測論理92を含む。予測論理92が同じ予測を行うことができる理由は、CPUが処理した命令のシーケンスに圧縮解除論理100からアクセスできるからである。圧縮解除論理100は予測論理92から予測を受け、また追跡ポート・アダプタ70から受けた追跡ストリーム内の標識を用いて、実際のCPU挙動を再構築する。
図9は上に設定した予測規則に従う予測方式を示す流れ図を示す。この予測方式では、或る命令を調べて、これが無条件の場合は規則1に従って「実行した」と予測する。これが無条件でない場合は、その前の命令を調べて無条件だったかどうか確認し、無条件であれば「実行した」と予測する(規則2)。無条件でなかった場合は、現在の命令条件を調べてその前の命令条件と一致するかどうか確認し、一致する場合は、規則3aに従って、その前の命令を実行した場合は「実行した」と予測し、実行しなかった場合は「実行しなかった」と予測する。命令条件がその前の命令条件と一致しない場合は、その前の命令を実行した場合は「実行しなかた」と予測し、前の命令を実行しなかった場合は「実行した」と予測する(規則3b)。
本発明の例示の実施の形態について添付の図面を参照して詳細に説明したが、本発明はこれらの正確な実施の形態に限定されないことと、特許請求の範囲に規定されている本発明の範囲と精神から逸れずに当業者は種々の変更および修正を行ってよいことを理解すべきである。
40 追跡論理
42 監視論理
50 圧縮論理
42 監視論理
50 圧縮論理
Claims (1)
- データ・プロセッサが処理中のプログラムからの処理命令のストリームを監視するための追跡論理回路であって、前記追跡論理回路は、監視論理であって、
前記命令ストリーム内の前記命令の処理を検出し、
前記命令ストリーム内の前記命令のどれが条件付き直接分岐命令か、前記命令ストリーム内の前記命令のどれが条件付き間接分岐命令か、および前記命令ストリーム内の前記命令のどれが無条件間接分岐命令かを検出する、
監視論理を含み、
前記追跡論理回路は更に、圧縮論理であって、
前記条件付き直接分岐命令、前記条件付き間接分岐命令、および前記無条件間接分岐命令をマーカ命令に指定し、
マーカ命令毎に、前記マーカ命令を処理したときの前記データ・プロセッサの挙動を示す標識は出力し、処理したがマーカ命令でない命令に関するデータは出力しない、
圧縮論理を含む、
追跡論理回路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/442,593 | 2006-05-30 | ||
US11/442,593 US7707394B2 (en) | 2006-05-30 | 2006-05-30 | Reducing the size of a data stream produced during instruction tracing |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012093035A Division JP2012160200A (ja) | 2006-05-30 | 2012-04-16 | 命令の追跡中に作られるデータ・ストリームの大きさの削減 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014220003A true JP2014220003A (ja) | 2014-11-20 |
JP2014220003A5 JP2014220003A5 (ja) | 2015-11-12 |
Family
ID=38050711
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007126789A Pending JP2007323636A (ja) | 2006-05-30 | 2007-05-11 | 命令の追跡中に作られるデータ・ストリームの大きさの削減 |
JP2012093035A Pending JP2012160200A (ja) | 2006-05-30 | 2012-04-16 | 命令の追跡中に作られるデータ・ストリームの大きさの削減 |
JP2014148052A Pending JP2014220003A (ja) | 2006-05-30 | 2014-07-18 | 命令の追跡中に作られるデータ・ストリームの大きさの削減 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007126789A Pending JP2007323636A (ja) | 2006-05-30 | 2007-05-11 | 命令の追跡中に作られるデータ・ストリームの大きさの削減 |
JP2012093035A Pending JP2012160200A (ja) | 2006-05-30 | 2012-04-16 | 命令の追跡中に作られるデータ・ストリームの大きさの削減 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7707394B2 (ja) |
JP (3) | JP2007323636A (ja) |
CN (1) | CN101082875B (ja) |
GB (1) | GB2438699B (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677104B2 (en) * | 2006-05-30 | 2014-03-18 | Arm Limited | System for efficiently tracing data in a data processing system |
US7752425B2 (en) * | 2006-05-30 | 2010-07-06 | Arm Limited | Data processing apparatus having trace and prediction logic |
US8086904B2 (en) * | 2006-07-28 | 2011-12-27 | Apple Inc. | Event-based setting of process tracing scope |
US8116179B2 (en) * | 2006-07-28 | 2012-02-14 | Apple Inc. | Simultaneous viewing of multiple tool execution results |
US20090249046A1 (en) * | 2008-03-31 | 2009-10-01 | Mips Technologies, Inc. | Apparatus and method for low overhead correlation of multi-processor trace information |
US8230202B2 (en) * | 2008-03-31 | 2012-07-24 | Mips Technologies, Inc. | Apparatus and method for condensing trace information in a multi-processor system |
US7996686B2 (en) * | 2008-07-07 | 2011-08-09 | International Business Machines Corporation | Branch trace methodology |
EP2284708B1 (en) * | 2009-08-03 | 2016-01-06 | C.R.F. Società Consortile per Azioni | Microprogammable device code tracing |
CN101989888B (zh) * | 2009-08-05 | 2014-03-12 | 中兴通讯股份有限公司 | 一种开启/关闭前向纠错编码功能的指示方法及系统 |
US8850410B2 (en) * | 2010-01-29 | 2014-09-30 | International Business Machines Corporation | System using a unique marker with each software code-block |
GB2481385B (en) * | 2010-06-21 | 2018-08-15 | Advanced Risc Mach Ltd | Tracing speculatively executed instructions |
GB2481384B (en) | 2010-06-21 | 2018-10-10 | Advanced Risc Mach Ltd | Key allocation when tracing data processing systems |
US8489866B2 (en) * | 2010-06-30 | 2013-07-16 | International Business Machines Corporation | Branch trace history compression |
US20120005462A1 (en) * | 2010-07-01 | 2012-01-05 | International Business Machines Corporation | Hardware Assist for Optimizing Code During Processing |
US8561033B2 (en) * | 2010-07-30 | 2013-10-15 | International Business Machines Corporation | Selective branch-triggered trace generation apparatus and method |
GB2487355B (en) * | 2011-01-13 | 2020-03-25 | Advanced Risc Mach Ltd | Processing apparatus, trace unit and diagnostic apparatus |
US9342432B2 (en) | 2011-04-04 | 2016-05-17 | International Business Machines Corporation | Hardware performance-monitoring facility usage after context swaps |
US8868886B2 (en) | 2011-04-04 | 2014-10-21 | International Business Machines Corporation | Task switch immunized performance monitoring |
US20130055033A1 (en) | 2011-08-22 | 2013-02-28 | International Business Machines Corporation | Hardware-assisted program trace collection with selectable call-signature capture |
KR20130066402A (ko) * | 2011-12-12 | 2013-06-20 | 삼성전자주식회사 | 트레이스 데이터 저장 장치 및 방법 |
US9032191B2 (en) * | 2012-01-23 | 2015-05-12 | International Business Machines Corporation | Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels |
US8612650B1 (en) | 2012-03-13 | 2013-12-17 | Western Digital Technologies, Inc. | Virtual extension of buffer to reduce buffer overflow during tracing |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US8966324B2 (en) * | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9326236B2 (en) | 2013-05-24 | 2016-04-26 | International Business Machines Corporation | Method, apparatus and computer program product providing performance and energy optimization for mobile computing |
US9703669B2 (en) * | 2014-11-14 | 2017-07-11 | Cavium, Inc. | Apparatus and method for distributed instruction trace in a processor system |
GB2551574B (en) * | 2016-06-24 | 2019-11-27 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry |
GB2553582B (en) * | 2016-09-13 | 2020-07-08 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry |
GB2558955B (en) * | 2017-01-24 | 2020-12-23 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions |
EP3607526A4 (en) * | 2017-04-01 | 2020-11-04 | INTEL Corporation | HYBRID TECHNOLOGY SHARED BY EXECUTION UNITS FOR ACCELERATED COMPUTING ON GRAPHIC PROCESSORS |
GB2571947B (en) * | 2018-03-13 | 2020-09-16 | Advanced Risc Mach Ltd | Tracing branch instructions |
CN116502576B (zh) * | 2023-06-26 | 2023-10-20 | 北京象帝先计算技术有限公司 | 指令流跟踪验证方法及调试系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09237201A (ja) * | 1996-03-01 | 1997-09-09 | Yokogawa Digital Computer Kk | マイクロコンピュータアナライザ |
WO2000068796A1 (en) * | 1999-05-10 | 2000-11-16 | Koninklijke Philips Electronics N.V. | Cache-design selection for a computer system using a model with a seed cache to generate a trace |
JP2002149442A (ja) * | 2000-11-10 | 2002-05-24 | Hitachi Ltd | データプロセッサ |
JP2002175198A (ja) * | 2000-12-07 | 2002-06-21 | Sony Corp | 演算処理装置および演算処理装置のデバッグ方法とそのシステム |
JP2003085000A (ja) * | 2001-09-10 | 2003-03-20 | Mitsubishi Electric Corp | トレース情報生成装置およびその方法 |
JP2004038981A (ja) * | 2002-06-07 | 2004-02-05 | Arm Ltd | データ処理装置用トレース要素生成システム |
JP2005070951A (ja) * | 2003-08-21 | 2005-03-17 | Sanyo Electric Co Ltd | プログラム処理装置 |
JP2005196437A (ja) * | 2004-01-07 | 2005-07-21 | Matsushita Electric Ind Co Ltd | プロセッサおよび開発支援装置 |
JP2006120071A (ja) * | 2004-10-25 | 2006-05-11 | Matsushita Electric Ind Co Ltd | プロセッサおよび開発支援装置 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US23959A (en) * | 1859-05-10 | Improvement in raking attachments for harvesting-machines | ||
US194464A (en) * | 1877-08-21 | Improvement in machines for making horseshoe-nails | ||
US32309A (en) * | 1861-05-14 | Thbeshing-machine | ||
US65912A (en) * | 1867-06-18 | Island | ||
US215720A (en) * | 1879-05-27 | Improvement in machines for pulling hop-poles | ||
US162895A (en) * | 1875-05-04 | Improvement | ||
JPH02271435A (ja) * | 1989-04-13 | 1990-11-06 | Mitsubishi Electric Corp | タスクトレース装置 |
US5333283A (en) * | 1991-10-29 | 1994-07-26 | International Business Machines Corporation | Case block table for predicting the outcome of blocks of conditional branches having a common operand |
US5758143A (en) * | 1996-10-07 | 1998-05-26 | International Business Machines Corporation | Method for updating a branch history table in a processor which resolves multiple branches in a single cycle |
EP0869434A3 (en) * | 1997-03-31 | 1999-09-15 | Hewlett-Packard Company | Method for outputting trace information of a microprocessor |
US6314530B1 (en) * | 1997-04-08 | 2001-11-06 | Advanced Micro Devices, Inc. | Processor having a trace access instruction to access on-chip trace memory |
US5933626A (en) * | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for tracing microprocessor instructions |
US6014742A (en) * | 1997-12-31 | 2000-01-11 | Intel Corporation | Trace branch prediction unit |
JPH11345150A (ja) * | 1998-06-02 | 1999-12-14 | Nec Robotics Eng Ltd | トレース方式 |
US6173395B1 (en) * | 1998-08-17 | 2001-01-09 | Advanced Micro Devices, Inc. | Mechanism to determine actual code execution flow in a computer |
US6247146B1 (en) * | 1998-08-17 | 2001-06-12 | Advanced Micro Devices, Inc. | Method for verifying branch trace history buffer information |
US6115810A (en) * | 1998-09-16 | 2000-09-05 | Sun Microsystems, Inc. | Bi-level branch target prediction scheme with mux select prediction |
US6351844B1 (en) | 1998-11-05 | 2002-02-26 | Hewlett-Packard Company | Method for selecting active code traces for translation in a caching dynamic translator |
US6233678B1 (en) * | 1998-11-05 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data |
US6418530B2 (en) * | 1999-02-18 | 2002-07-09 | Hewlett-Packard Company | Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions |
US6499101B1 (en) | 1999-03-18 | 2002-12-24 | I.P. First L.L.C. | Static branch prediction mechanism for conditional branch instructions |
US6513134B1 (en) * | 1999-09-15 | 2003-01-28 | International Business Machines Corporation | System and method for tracing program execution within a superscalar processor |
US6658557B1 (en) * | 2000-05-25 | 2003-12-02 | Advanced Micro Devices, Inc. | Synthesizing the instruction stream executed by a microprocessor from its branch trace data |
US20030023959A1 (en) | 2001-02-07 | 2003-01-30 | Park Joseph C.H. | General and efficient method for transforming predicated execution to static speculation |
US7165169B2 (en) | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
JP2003050716A (ja) * | 2001-08-06 | 2003-02-21 | Matsushita Electric Ind Co Ltd | ソフトウエアデバッガとソフトウエア開発支援システム |
US7203825B2 (en) | 2001-10-03 | 2007-04-10 | Intel Corporation | Sharing information to reduce redundancy in hybrid branch prediction |
US7197671B2 (en) * | 2002-06-07 | 2007-03-27 | Arm Limited | Generation of trace elements within a data processing apparatus |
US20040064685A1 (en) * | 2002-09-27 | 2004-04-01 | Hung Nguyen | System and method for real-time tracing and profiling of a superscalar processor implementing conditional execution |
US7120784B2 (en) | 2003-04-28 | 2006-10-10 | International Business Machines Corporation | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
US7197586B2 (en) * | 2004-01-14 | 2007-03-27 | International Business Machines Corporation | Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler |
US20070162895A1 (en) | 2006-01-10 | 2007-07-12 | International Business Machines Corporation | Mechanism and method for two level adaptive trace prediction |
-
2006
- 2006-05-30 US US11/442,593 patent/US7707394B2/en active Active
-
2007
- 2007-04-02 GB GB0706426A patent/GB2438699B/en active Active
- 2007-05-11 JP JP2007126789A patent/JP2007323636A/ja active Pending
- 2007-05-30 CN CN200710109820.4A patent/CN101082875B/zh active Active
-
2012
- 2012-04-16 JP JP2012093035A patent/JP2012160200A/ja active Pending
-
2014
- 2014-07-18 JP JP2014148052A patent/JP2014220003A/ja active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09237201A (ja) * | 1996-03-01 | 1997-09-09 | Yokogawa Digital Computer Kk | マイクロコンピュータアナライザ |
WO2000068796A1 (en) * | 1999-05-10 | 2000-11-16 | Koninklijke Philips Electronics N.V. | Cache-design selection for a computer system using a model with a seed cache to generate a trace |
JP2002149442A (ja) * | 2000-11-10 | 2002-05-24 | Hitachi Ltd | データプロセッサ |
JP2002175198A (ja) * | 2000-12-07 | 2002-06-21 | Sony Corp | 演算処理装置および演算処理装置のデバッグ方法とそのシステム |
JP2003085000A (ja) * | 2001-09-10 | 2003-03-20 | Mitsubishi Electric Corp | トレース情報生成装置およびその方法 |
JP2004038981A (ja) * | 2002-06-07 | 2004-02-05 | Arm Ltd | データ処理装置用トレース要素生成システム |
JP2005070951A (ja) * | 2003-08-21 | 2005-03-17 | Sanyo Electric Co Ltd | プログラム処理装置 |
JP2005196437A (ja) * | 2004-01-07 | 2005-07-21 | Matsushita Electric Ind Co Ltd | プロセッサおよび開発支援装置 |
JP2006120071A (ja) * | 2004-10-25 | 2006-05-11 | Matsushita Electric Ind Co Ltd | プロセッサおよび開発支援装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2007323636A (ja) | 2007-12-13 |
JP2012160200A (ja) | 2012-08-23 |
GB2438699B (en) | 2011-06-08 |
US7707394B2 (en) | 2010-04-27 |
GB2438699A8 (en) | 2010-11-03 |
GB2438699A (en) | 2007-12-05 |
CN101082875B (zh) | 2014-01-22 |
GB0706426D0 (en) | 2007-05-09 |
US20070294592A1 (en) | 2007-12-20 |
CN101082875A (zh) | 2007-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2014220003A (ja) | 命令の追跡中に作られるデータ・ストリームの大きさの削減 | |
EP2643751B1 (en) | Processing apparatus, trace unit and diagnostic apparatus | |
US5764885A (en) | Apparatus and method for tracing data flows in high-speed computer systems | |
EP2825965B1 (en) | Transformation of a program-event-recording event into a run-time instrumentation event | |
US5802272A (en) | Method and apparatus for tracing unpredictable execution flows in a trace buffer of a high-speed computer system | |
JP5485982B2 (ja) | パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム | |
JP6153533B2 (ja) | ランタイム・インストルメンテーション指向サンプリング | |
US7620802B2 (en) | Instruction execution device, debugging method, debugging device, and debugging program | |
JP6195571B2 (ja) | 低特権状態からのランタイム・インストルメンテーション制御の変更 | |
US6539502B1 (en) | Method and apparatus for identifying instructions for performance monitoring in a microprocessor | |
JP2004013896A (ja) | データ処理システムにおける命令のトレーシング | |
JP2005202964A (ja) | 割り込みをタイプ別に計数する方法、システムおよびプログラム | |
JP2004199685A (ja) | 繰返し命令の追跡許可 | |
EP2810170B1 (en) | Run-time instrumentation indirect sampling by address | |
US8489867B2 (en) | Monitoring events and incrementing counters associated therewith absent taking an interrupt | |
US9600284B2 (en) | Computer program instruction analysis | |
CN115328690B (zh) | 异常处理方法、计算机可读介质及电子设备 | |
JP2010218030A (ja) | プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140815 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150929 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20151119 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20160506 |