JP4175927B2 - Data processing apparatus, trace signal generation method, and trace signal generation program - Google Patents
Data processing apparatus, trace signal generation method, and trace signal generation program Download PDFInfo
- Publication number
- JP4175927B2 JP4175927B2 JP2003076703A JP2003076703A JP4175927B2 JP 4175927 B2 JP4175927 B2 JP 4175927B2 JP 2003076703 A JP2003076703 A JP 2003076703A JP 2003076703 A JP2003076703 A JP 2003076703A JP 4175927 B2 JP4175927 B2 JP 4175927B2
- Authority
- JP
- Japan
- Prior art keywords
- trace
- signal
- data processing
- output
- processing apparatus
- 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 - Lifetime
Links
Images
Classifications
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2268—Logging of test results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Description
【0001】
【発明の属する技術分野】
(発明の背景)
本発明は、その挙動を追跡する1つあるいはそれ以上の数の構成要素を有するデータ処理装置内でのトレース信号の生成に関するものである。
【0002】
【従来の技術】
データ処理システムの動きを追跡し、それにより、システム中で段階ごとに進む動きを表すデータを含むトレースストリームを生成することは、システムを開発する上で、極めて有用なツールとなる。しかし、処理命令は、プロセッサコアに複雑に組み込まれる傾向にあるため、外部からアクセス可能な端子を介して、プロセッサコアの状態を追跡することは極めて困難となっている。従って、トレースデータを収集し解析するためのチップ外のトレース機構だけでなく、より多くのトレース機構がチップ内に設けられるようになっている。このようなチップ内のトレース機構の例としては、英国・ケンブリッジのARM社が提供する、様々なARMプロセッサに対応した、組み込みトレース・マクロセル(ETM)がある。
【0003】
このようなトレース機構は、データ処理装置でその動きをトレースしようとするものを表すデータのトレースストリームをリアルタイムで生成する。その後、このトレースストリームは、データ処理装置によって実行される処理命令の列のデバッグを可能にするために用いられる。
【0004】
特定のレジスタ、アドレスあるいはデータ値に対してアクセスがなされたことに起因してトレースを開始したり停止したりする、トレース操作の制御に供されるトリガポイントを組み込んだトレース機構が提供されていることは、よく知られるところである。このような機構は、システムの特定の部分や、ある種類の動きを診断する際に、非常に役立つものとなる。
【0005】
【発明が解決しようとする課題】
しかし、データ処理システムは、その複雑度を増す一方であるため、トレースされるべき極めて大量な情報が潜在的に存在することは明白である。ETMによって生成されるトレースデータのストリームは、通常、後の処理のための出力に先立って一時的に格納されるが、そのため、トレースデータによってそのバッファにオーバフローを引き起こす可能性があり、結果的にトレースデータが欠損する恐れがある。例えば、典型的な実装例では、ETMで生成された全てのトレースデータは、内部の先入れ先出し(FIFO)バッファに直ちに書き込まれ、その後、比較的狭い帯域幅のトレースポートを介してトレースバッファに転送される。データ処理装置の広範囲にわたる動きをトレースしている際には、トレースデータが爆発的に発生することによってFIFOがオーバフローし、トレースデータの欠損につながる可能性がある。
【0006】
この問題を解決しようとする既知の方法の1つとして、FIFOの占有状態が所定のレベルに達した時に、動作が追跡される構成要素への信号を出力するよう、ETMを構成するというものがあり、オーバフローが起きる前に、FIFOの内容を排除できるようにするために、この信号によって当該構成要素を停止させる。しかし、FIFOのオーバフローを回避するためには、外部から(すなわち、追跡しようとする構成要素によって)ETMに対して探索動作を起こす必要があるため、実際にこの信号を用いることを実装することは困難であることが分かる。このような信号を生成するETMと、例えばプロセッサコアのようなトレースする対象となる構成要素によって生成される当該信号との間には、固有な遅れ時間があるため、この遅れ時間の間に、当該構成要素の他の動作を継続して追跡しようとすれば、いずれにせよFIFOにオーバフローを引き起こしてしまうということが分かる。
【0007】
以上より、トレースデータの損失の可能性を減らすため、より改良された方法を提供することが望まれている。
【0008】
【発明を解決するための手段】
(発明の概要)
第1の観点から言えば、本発明は、動作が追跡される構成要素と、その動作を示す要素からの入力信号を受け取り、前記入力信号から高優先度トレース信号および低優先度トレース信号を生成しトレース受信装置に出力するためのトレース生成ユニットと、トレース受信装置からの抑制信号の発行(アサート「assert」)に応じて動作し、低優先度トレース信号の生成を抑制するトレース生成ユニットとを含むデータ処理装置を提供するものである。
【0009】
本発明によれば、トレース生成ユニットにより発生するトレース信号は、高優先度トレース信号あるいは低優先度トレース信号のいずれかになるものとして分類される。トレース生成ユニットにより発生するトレース信号は、トレース受信装置への出力となり、トレース生成ユニットは、トレース受信装置からの抑制信号を受けて、低優先度トレース信号の発生を抑制する。本発明は、他の信号よりも重要となるある種のトレース信号が通常存在するという認識に基づいてなされたものである。例えば、命令トレースを維持するために出力する必要のある、例えば、分岐アドレスに関するトレース信号のようなある種のトレース信号が存在するが、その一方で、データトレース信号のように、同期を失って損失してもよいような他のトレース信号も存在する。また、本発明の発明者たちは、多くの場合、後者の種類のトレース信号に比べて、前者の種類のトレース信号は、より狭い帯域幅を持っていることに着目した。
【0010】
以上のことを念頭におき、本発明のデータ処理装置は、トレース受信装置が必要と判断した場合に、低優先度トレース信号の抑制を起こすように構成されており、これによって、トレース受信装置がオーバフローして、トレースデータの任意の量が損失するといった従来技術の上記問題を解決するものとなる。これに対し、本発明によれば、トレース受信装置が適切と判断した場合には、トレース生成ユニットに対して抑制信号を送り、高優先度トレース信号のみが出力されることを保証し、以って、トレース受信装置がオーバフローを起こす可能性を極力抑えるものとなる。
【0011】
この抑制は、トレース生成ユニットとトレース受信装置との間で直接起きるため、動作が追跡される構成要素に信号を返送する際の待ち時間から生じる従来技術での上記問題が良好に解決され、これにより、本発明は、トレース受信装置のオーバフローを防ぐためのより信頼性の高い方法を提供するものとなり、同時に、トレース信号が損失するのは、低優先度トレース信号に対してのみであると考慮すればよいことになる。
【0012】
トレース受信装置は、トレース生成ユニットの場所あるいは、トレース生成ユニットから離して設置することができる。一実施例では、データ処理装置の内部にトレース受信装置を設け、好ましくは、トレース生成ユニットと同一チップ上に実装することにより、トレース受信装置からトレース生成ユニットへの抑制信号の伝播を高速化するものとなり、以って、低優先度トレース信号を抑制する必要が生じた場合には、トレース生成ユニットが高速で応答できるようになっている。このため、抑制信号の発行(発生「 issuance 」)によって、トレース受信装置のオーバフローを防ぐために、低優先度トレース信号を即座に抑制することができ、信頼性をさらに向上するものとなる。
【0013】
トレース受信装置は、様々な形態をとることができる。しかし、本実施例では、トレース受信装置は、あらかじめ定められた容量のバッファ(例えば、FIFOバッファ)である。
【0014】
好適な実施例では、バッファに格納されたトレース信号の量が、あらかじめ定められた抑制レベルに達した時に、抑制信号を発行するように、バッファが構成されている。従って、これらの実施例では、バッファの所定の割合にまでトレース信号が達した場合に、抑制信号が発行されるものとなる。
【0015】
データ処理装置により生成されるトレース信号を読み出し解析する装置は、トレース受信装置に直接接続されるものであってよい。しかし、実施例では、トレース受信装置は、第1の帯域幅を有する第1のバスを介してトレース生成ユニットに接続された入力ポートと、トレース信号がトレースバッファに出力されるようにした第2の帯域幅を有する第2のバスに接続された出力ポートとをもつ中間バッファであり、第1の帯域幅は、第2の帯域幅よりも広いものとなっている。これらの実施例では、データ処理装置により生成されるトレース信号を読み出し解析する装置は、通常、トレースバッファからトレース信号を読み出すように構成されている。
【0016】
これらの実施例から分かるように、中間バッファの出力帯域幅はその入力帯域幅よりも狭いため、中間バッファが溢れてしまう恐れがある。しかし、本発明の抑制信号を用いることにより、低優先度トレース信号が余計に生成されないようにトレース生成ユニットが抑制信号に対して俊敏に応答できるため、このような事態が発生する可能性を抑えることができる。
【0017】
上述したように、本発明では、トレース信号を高優先度トレース信号あるいは低優先度トレース信号のいずれかに分類(クラス別「 classification 」)することが必要となる。好適な実施例では、この分類は、トレース信号が高優先度トレース信号あるいは低優先度トレース信号のいずれであるかを特定するトレース生成ユニットの内部で保持されるものである。例えば、命令トレースに関するトレース信号は高優先度であり、一方、データトレースに関するトレース信号は低優先度であることを示すように、この分類はあらかじめ定義しておけるものであることは、当該技術分野に精通した者にとって認識されうるものである。さらに、この分類はプログラム可能である。
【0018】
好適な実施例では、抑制信号が発行されている際には、抑制が行われていることを示すために、抑制された低優先度トレース信号のための位置情報(プレースホルダー「 placeholder 」)をトレース受信装置に出力するように、トレース生成ユニットは構成されている。これにより、後で用いられるツールによって、トレースデータを解析可能とし、低優先度トレース信号の抑制がいつ行われているかを決定することができる。
【0019】
これらの位置情報は、トレースデータの各アイテムが抑制されるごとに発行されるが、好適な実施例では、最初に抑制された低優先度トレース信号に対する位置情報のみを出力するように、トレース生成ユニットが構成されている。従って、この位置情報は、抑制が最初に発生したことを示すものとなり、トレース解析ツールがデータの抑制が起きたことを決定するには十分なものであり、位置情報の発行自身がトレース受信装置のオーバフローを引き起こすという可能性は回避される。
【0020】
好適な実施例では、トレース受信装置は、バッファ内に貯えられたトレース信号の量が、あらかじめ定められた再起動レベルまで下がったときに、抑制信号の発行を解除するように構成されている。あらかじめ定められた再起動レベルは、あらかじめ定められた抑制レベルと同じになるように決定してもよいが、このようにあらかじめ定められた再起動レベルを決定すると、ある状況では、抑制された状態と抑制されない状態との間である量の振動を引き起こす傾向がある。従って、好適な実施例では、あらかじめ定められた抑制レベルは、あらかじめ定められた再起動レベルよりも高く設定し、全トレースを再起動した際に、抑制信号を再発行する必要がないようにトレース受信装置の中に貯えられたトレース信号の量を増やせる容量を確保できるようにしている。
【0021】
好適な実施例では、抑制信号の発行解除につながる最初の低優先度トレース信号については、その最初の低優先度トレース信号を後で解析できるように、任意の必要な同期データとともにその最初の低優先度トレース信号を出力するように、トレース生成ユニットが構成されている。これにより、抑制しようとするトレースストリームのある部分に対応して欠落する任意の同期情報をトレース信号のストリームの中に取り込むことになる。
【0022】
データ処理システムは、例えば、組み込み型システムでの集積レベルが上がるなどの理由により、複雑さを増しているため、より多くの機能性が各々のデータ処理装置(例えば、チップ)に含まれるようになり、したがって、より多くのトレースブロックやモジュールをデータ処理装置の中に設ける必要が生じている。このような将来のシステムでは、その動作を追跡すべき複数の構成要素が含まれるため、このような単一のトレース生成ユニットを含む単一のトレースモジュールでは、もはや充分ではない状況にある。例えば、データ処理装置が複数のプロセッサコアを含んでいて、各々をトレースする必要があり、さらに、データ処理装置の中の様々なバスについてもトレースする必要が生じる。しかし、各トレースモジュールに対して、外部ピンやトレースバッファを設けるためのコストは極めて高くつくものとなることがわかる。しかし、データ処理装置の異なる部分の間で信号や情報の交換があり、これらをデバッグするためには、これらの部分の関係についても同時にトレースする必要があるため、複数のトレースモジュールの間で、ピンやトレースバッファを単純に共有するだけでは適切とは言えない。従って、解決すべき他の問題としては、データ処理装置の複数のトレースモジュールからの信号を効果的にトレースできるようにすることが課題となる。
【0023】
従って、本発明の実施例では、データ処理装置は、さらに、トレースすべき1つあるいはそれ以上の数の構成要素から入力信号を受け取るための複数のトレースモジュールを含み、ここで、各トレースモジュールは、その入力信号からトレース信号を生成して対応するトレースバス上に出力し、少なくとも1つの前記トレースモジュールは、前記トレース生成ユニットとそれに対応したトレース受信装置を含み、対応するトレースバスは、トレース受信装置の出力に接続されていることを特徴とし、該データ処理装置は、さらにトレースモジュールのトレースバスに接続され、各トレースバスに出力されたトレース信号を入力トレース信号として受信し、入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理を含み、ここで、出力ポートは、ファンネル論理に接続されたトレースバスの集約(全体の「 collective 」)最大帯域幅より狭い最大の帯域幅を有し、ファンネル論理は、出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するように、トレースモジュールによるトレース信号の発行を制御するように構成されていることを特徴としている。
【0024】
従って、これらの実施例では、様々なトレースモジュールのトレースバスに接続され、様々な入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理が設けられており、このトレースストリームは、例えば、信号をチップに送ることができるピンに送られたり、トレースバッファに送られるようになっている。また、ファンネル論理は、出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するように、様々なトレースモジュールによるトレース信号の発行を制御するように構成されている。従って、これらの実施例のファンネル論理は、効果的に、複数のトレース源を入力として、単一のトレースストリームを出力として生成することができ、ここでは、出力ストリームは、想定される入力ストリームの総数を越えないようになっている。
【0025】
本発明の第1の特徴によれば、このファンネル論理は、任意のトレースモジュールが低優先度トレース信号の生成を抑えることができるかどうかによらず、データ処理装置の内部に設けられている。したがって、本発明の第2の特徴によれば、本発明は、トレースすべき1つあるいはそれ以上の数の構成要素から入力信号を受け取るための複数のトレースモジュールを含み、ここで、各トレースモジュールは、その入力信号からトレース信号を生成して対応するトレースバス上に出力することを特徴とし、また、各トレースバスに出力されたトレース信号を入力トレース信号として受信するようにトレースモジュールのトレースバスに接続され、入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理を含み、ここで、出力ポートは、ファンネル論理に接続されたトレースバスの集約最大帯域幅より狭い最大の帯域幅を有し、ファンネル論理は、出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するように、トレースモジュールによるトレース信号の発行を制御するように構成されていることを特徴とした、データ処理装置を提供するものである。
【0026】
好適な実施例では、どの時点でも、どのトレースモジュールがトレース信号をファンネル論理に送るべきかをトレースモジュールに示すように構成され、どの時点においても、1つのトレースモジュールからのトレース信号のみをトレースストリームが含むようになっている。
【0027】
どの時点においても、どのトレースモジュールがファンネル論理にトレース信号を送るべきかを決定する動作は、様々な方法で実装することができる。しかし、好適な実施例では、ファンネル論理は、対応するトレースバス上にトレース信号を出力しようとしている各トレースモジュールからリクエスト信号を受信し、あらかじめ定められた基準を適用して受信されたリクエスト信号にもとづきどのトレースモジュールがトレース信号をファンネル論理に出力すべきかを決定するためのリクエストハンドラを含んでいる。従って、これらの実施例では、各トレースモジュールは、トレースモジュールがいつトレース信号を対応するトレースバスに出力しようとしているのかをファンネル論理に示すように構成されており、これによりファンネル論理は、受信された様々なリクエストの間を仲介することになる。
【0028】
ここで、リクエストハンドラは、あらかじめ定められた基準の適用時に、トレース信号をファンネル論理に送ることになるトレースモジュールに対して、許可信号を送るように構成されることが好ましい。従って、これらの実施例では、トレースモジュールは、そのトレース信号をファンネル論理に送ることができることを示す許可信号を受信するまで、そのリクエスト信号を発行し続けるものとなる。
【0029】
どのトレースモジュールが任意の時点でトレース信号をファンネル論理に発行するかを決定するために、ファンネル論理のリクエストハンドラによって適用されるあらかじめ定められた基準は、様々な形態をとることが可能である。しかし、好適な実施例では、あらかじめ定められた基準は、様々なトレースモジュールの優先順序を定義するものとする。
【0030】
あらかじめ定められた基準は、あらかじめ定められたもの、あるいはプログラム可能なもののいずれかとすることができる。例えば、あらかじめ定められた基準は、例えば、その動作をトレースするようにそれに含まれるモジュールが構成された構成要素によって、様々なトレースモジュールに割り当てられた相対的な優先度を特定するために、特定の実装に対してプログラム可能なものとしてもよい。例えば、出力すべき最も重要なトレース信号が、メモリバスの動作に関するものであると判定された場合には、最高の優先度がこのメモリバスの動作を追跡するように構成されたトレースモジュールに割り当てられる。
【0031】
好適な実施例では、ファンネル論理は、さらに、その出力が前記トレースバスの各々に接続されたマルチプレクサを含み、リクエストハンドラは、あらかじめ定められた基準の適用時に、制御信号をマルチプレクサに発行し、トレースストリームをファンネル論理の出力ポートに転送するためのマルチプレクサから出力するトレースストリームとして、マルチプレクサのどの入力を出力するべきかを制御するように構成されている。
【0032】
ファンネル論理から出力されるトレースストリームを効果的に解析するためには、トレースストリームの特定の部分が、どの構成要素に対応しているのかを知るために、ツールを用いて解析することが必要となる。好適な実施例では、ファンネル論理は、このような識別子がトレースストリームに付加されることができるために必要となる論理を含んでいる。特に、好適な実施例では、ファンネル論理は、さらに、トレースストリームの特定の部分がどの構成要素に対応しているかを示す識別子をトレースストリームに導入するためのラッピング論理を含んでいる。この識別子は、様々な方法で実装することができる。しかし、ある実施例としては、マルチプレクサに発行される制御信号を受け取るようにラッピング論理を構成するものがあり、この識別子は、制御信号から得るものとしている。他の実施例としては、ラッピング論理に識別子を発行するように、各トレースモジュールを構成するものがある。
【0033】
構成要素を対応するトレースモジュールに割り当てる方法には、様々なものがあることが分かる。例えば、ある実装形態では、1つ以上の構成要素をトレースするように、単一のトレースモジュールを実際に構成することが可能である。しかし、好適な実施例では、トレースすべき各構成要素に対して、1つのトレースモジュールを設けることがある。
【0034】
ある実施例では、リクエスト信号をファンネル論理に発行するように各トレースモジュールを構成し、これにより、各々の状況において、ファンネル論理は、各トレースモジュールによるトレース信号の発行を制御できるようになる。
【0035】
しかし、他の実施例では、例えば、トレースモジュールが過去のトレースモジュールの設計に依るものであり、そのトレースモジュールが適切と判定した時にそのトレースストリームを単に出力するように構成されている場合もあるため、このようなリクエスト信号を発行させたり、許可信号に応答するようには、1つあるいはそれ以上の数のトレースモジュールを構成しないというものもある。このような状況では、トレースモジュールの中の少なくとも1つによってトレース信号が発行されることは、ファンネル論理によって制御することができず、データ処理装置は、さらに、そのようなトレースモジュールとファンネル論理との間に接続され、そのトレースモジュールから出力されるトレース信号を一時的に格納するための、トレースモジュールの各々に対するストーリング・バッファを含むものとなる。
【0036】
このような実施例では、ストーリング・バッファは、対応するトレースモジュールのためにリクエスト信号を発行し、リクエストハンドラにより発行される任意の許可信号に対して応答するように構成して、一時的に格納されたトレース信号がファンネル論理に出力されるようにすることが好ましい。従って、実際には、ストーリング・バッファは、このような過去の設計による各モジュールに対する“フロントエンド”となり、ファンネル論理と適切な方法でトレースモジュールを接続することができる。
【0037】
好適な実施例では、ストーリング・バッファに格納されたトレース信号の量が、あらかじめ定められたレベルに到達した時に、リクエスト信号を発行するように、ストーリング・バッファが構成されている。ファンネル論理によって適用されるあらかじめ定められた基準を適切に選択することにより、特定の時点で、どのトレースモジュールがトレース信号をファンネル論理に提供するかを決定し、ファンネル論理と接続する構成要素の数と帯域幅を制限することにより、対応するトレースモジュールから出力されたトレースデータによってストーリング・バッファがオーバフローする前に、ストーリング・バッファが許可信号を受け取ることを保証することができる。
【0038】
上述したように、ファンネル論理の出力ポートは、データ処理装置のトレースバッファに接続したものであってよい。それに代わり、出力ポートは、トレースストリームが、データ処理装置から外部に出力されるようにした複数のピンを含むものであってもよい。
【0039】
本発明の第3の観点から言えば、本発明は、その動作をトレースする構成要素を有するデータ処理装置の中でトレース信号を発生する方法を提供するものであり、該方法は、(i)動作を示す構成要素からの入力信号を受信するステップと、(ii)トレース受信装置に出力するための高優先度および低優先度のトレース信号を前記入力信号から生成するステップと、(iii)前記ステップ(ii)の間に、低優先度のトレース信号を抑制するために、トレース受信装置からの抑制信号の発行に応答するステップとを含むステップをトレース生成ユニットを用いて実行することを特徴としている。
【0040】
本発明の第4の観点から言えば、本発明は、その動作をトレースする1つあるいはそれ以上の数の構成要素からの入力信号を受信するための複数のトレースモジュールを有するデータ処理装置の中でトレース信号を発生する方法を提供するものであり、各トレースモジュールは、対応するトレースバスを介して出力されるトレース信号をそのトレースモジュールの各入力信号から生成するように構成され、該方法は、(a)ファンネル論理において、各トレースバスへ出力されるトレース信号を入力トレース信号として受信するステップと、(b)ファンネル論理の出力ポートに、入力トレース信号から得られたトレースストリームを生成するステップであって、該出力ポートは、ファンネル論理に接続されたトレースバスの集約された最大帯域幅より狭い最大帯域幅を有することを特徴とするステップと、(c)出力ポートの最大帯域幅を超えないように、入力トレース信号が出力ポートから出力されることを保証するために、トレースモジュールからのトレース信号の発行を制御するステップとを含むことを特徴としている。
【0041】
本発明の第5の観点から言えば、本発明は、本発明の第3あるいは第4の観点の方法にもとづき装置を制御するためのコンピュータプログラムを実行するコンピュータプログラムプロダクトを提供するものである。
【0042】
【発明の実施の形態】
(好適な実施例の詳細な説明)
添付の図面に示されたような好適な実施例を参照しながら単なる例として、本発明を説明する。
【0043】
図1は、オンチップのトレース機構を提供するデータ処理システム2の概略を示す図である。集積回路4は、マイクロプロセッサコア6、キャッシュメモリ8、オンチップトレースモジュール10およびオンチップトレースバッファ12を含んでいる。集積回路4は、キャッシュメモリ8でキャッシュミスが発生した時にアクセスされる外部メモリ14に接続されている。汎用コンピュータ16は、オンチップトレースモジュール10とオンチップトレースバッファ12に接続され、汎用コンピュータ16で実行されるソフトを用いて、これらの構成要素からのトレースデータのストリームを取り出して解析する。
【0044】
動作中は、プロセッサコア6は、外部メモリ14のための実際のメモリ空間よりも多いデータ処理命令とデータにアクセスする必要がある場合が多い。例えば、外部メモリ14は、1MBの容量であるのに対し、プロセッサコア16は、通常、32ビットアドレスを指定することが可能となっており、これにより、4GBの命令とデータを指定することができる。従って、プロセッサコア6によって要求される全ての命令とデータは、例えば、ハードディスクなどの外部記憶装置18に格納され、プロセッサコア6が、特定の動作状態で動こうとする場合には、この動作の状態に対して適切な命令とデータが外部メモリ14にロードされる。
【0045】
図2は、図1のオンチップトレースモジュールの内部に設けられた構成要素をより詳細に示すブロック図である。オンチップトレースモジュール10は、プロセッサコア6で実行される処理を表すデータを、経路105で受信するように構成されている。図1によれば、このデータ(例えば、コア6に与えられた命令および、あるいはデータ、およびコアによって生成されたデータ)は、バス20を介してコア6から直接受信されるほかの制御型データ(例えば、インデックス化された命令アドレスを示すデータ、なんらかの理由である命令がその条件コードを実行失敗したことを示すデータなど)とともに、キャッシュ8およびオンチップトレースモジュール10に接続したバス20から受信する。ある実施例では、両方の種類のデータが、(2つのバス20および22を用いるのではなく)トレースモジュール10とコア6間の単一のバスを介して、トレードモジュール10に送られることは、当該技術分野に精通した者にとって認識されうるものである。
【0046】
同期論理100は、入力信号を、オンチップトレースモジュール内で用いるためにより適した、信号の内部モードに変換するように構成されている。これらの内部モードは、トリガ110とトレース生成ブロック120に送られるが、トリガ110とトレース生成ブロック120は、必ずしも同一の信号を受信するために必要となるものではないことが分かる。基本的には、トリガ110は、例えば、アドレス、データ値、レジスタアクセスなどのトリガ可能なイベントに関連したデータを受信するために必要なものである。トリガ生成ブロック120は、トリガ110によって発行されたイネーブル信号に応じてトレースされる必要のある任意のデータを受信するために必要なものである。オンチップトレースモジュール10には、さらに、汎用コンピュータ16から経路125を介して構成情報を受信するように構成されたレジスタバンク180が組み込まれており、その構成情報の内容は、必要に応じて、オンチップトレースモジュール10の構成要素によって読み取られるようになっている。
【0047】
トリガ110が、トレースストリームの生成を引き起こすイベントを検出する時はいつも、トリガは、経路135を介して、イネーブル信号をトレース生成論理120に送り、トレースをオン、オフする。これにより、トレース生成論理は、経路145および155を介して必要なトレースデータをFIFO130に出力することにより応答する。様々なイネーブル信号が経路135を介して送られ、例えば、命令だけのトレース、命令とデータのトレースなど、トレースすべき信号の種類を特定する。
【0048】
本発明の好適実施例によれば、トレース生成ユニットにより生成されるトレース信号は、高優先度トレース信号あるいは低優先度トレース信号のいずれかであるとして分類される。この分類は、トレース生成ブロック120の中に保持されることが好ましく、あらかじめ定義されたものであるか、ユーザによってプログラム可能となるものであってよい。図2に示した実施例では、高優先度トレース信号は、例えば、分岐アドレスに関するトレース信号などの命令トレースに関する信号を示すものであり、一方、低優先度トレース信号は、データトレースに関する信号を示すものであり、この低優先度トレース信号は、同期を失うことなく損失されうるものである。トレース生成論理120によってFIFO130から受信される任意の信号がない場合には、経路135を介してトリガ110から受信したイネーブル信号に応じてFIFO130に適切なトレースデータを出力するように、トレース生成論理が構成されている。この構成により、例えば、経路145を介して発行される命令トレース信号と、経路155を介して発行されるデータトレース信号の両方が発行されることになる。図2には2つの独立した経路が示されているが、命令トレース信号とデータトレース信号の両者は、通常、トレース生成論理120とFIFO130の間の接続を共有するものであることは、当該技術分野に精通した者にとって認識されうるものである。
【0049】
命令をトレースすることに加え、データをトレースする際には、経路155を介したデータトレース信号は、トレース生成信号120からFIFO130へのトレースポートの帯域幅のほとんどを占有することが分かる。さらに、トレース信号は、狭帯域の出力トレースポートを介して、FIFO130からトレースバッファ12へ経路150を通して排出される。通常、経路150を介してトレースバッファに発行される任意のトレース信号は、経路140上で出力トレースが有効であるか否かを示すトレース有効信号を伴うものである。トレース有効信号は、通常、対応するトレースモジュールがそのクロックサイクルの間に発行すべきトレースデータを持たない場合に無効と設定されるものである。
【0050】
FIFO130からの出力帯域幅は、通常、その入力帯域幅よりも狭いため、例えば、トレース生成ブロック120によってトレースデータが突発的に発行されることが持続すると、FIFO130はオーバフローする可能性がある。例えば、入力トレースポートは、トレースバッファへの出力トレースポートよりも4倍から5倍の帯域幅となっている。
【0051】
本発明に先立ち、この問題を解決する方法としては、FIFOが満杯になったことを示す信号をオンチップトレースモジュール10からコア6に送り、コア6を一時的に停止させ、FIFO内のデータの量を削減できるようにするものがあった。しかし、固有の遅れ時間や他の問題のために、FIFOが満杯になったことを示す信号の発生時刻とプロセッサコアの停止時刻の間に、コア6が停止する前にそれが動作中であることを示すトレース信号が発行されてしまい、いずれにせよFIFO130がオーバフローを引き起こしやすくなるため、この方法は信頼性に欠けるものであることが判明している。
【0052】
本発明の一実施例によれば、FIFO130により発行され経路160を介して直接トレース生成ブロック120に送られる抑制信号(以下、DSup信号と称す)を設けることにより、この問題が解決できる。本実施例では、FIFOの内容が、あらかじめ定められた抑制レベルに達すると、FIFO130からトレース生成ブロック120に向けてDSup信号を発行するように、FIFO130が構成されており、これにより、トレース生成ブロックは、DSup信号が発行されている間は、経路155を介した任意のデータトレース信号の発行は停止されることになる。これは、データトレース信号が失われることを意味しているが、これらの信号は低優先度トレース信号であると考えられ、同期情報を失うことなく損失してもよいものである。さらに、データトレースは、通常、高優先度の命令トレースに比べより広い帯域幅を用いるものであるため、データトレースを抑制することは、FIFO130が満杯にあることを防ぐ上で十分であることが分かっている。
【0053】
FIFO130内のデータトレースの量が、あらかじめ定められた再起動レベルに実質的に落ち着くと、FIFO130は、DSup信号の発行を止めるように構成されており、これによりトレース生成ブロック120は、経路155上にデータトレース信号を再び発行する。
【0054】
あらかじめ定められた抑制レベルとあらかじめ定められた再起動レベルは、実装状態に従って選択される。しかし、例えば、60バイトのFIFOでは、あらかじめ定められた抑制レベルは、45バイト(すなわち、FIFOの全容量の75%を占有する状態)となるように設定されるのに対し、あらかじめ定められた再起動レベルは、通常、45バイトを僅かに下回る値に設定され、抑制信号の発行が止められた後は、直後に抑制信号の再発行を必要とせずに、FIFO内に格納されたトレース信号の量を増加することができるような余裕をもたせることを保証する。
【0055】
DSup信号の発行によってデータトレース信号を単純に破棄する動作だけでは、全ての状況において、FIFO130のオーバフローを防ぐことはできないため、FIFO130は、それが満杯になった際には、経路170上にオーバフロー信号を発行できるようになっており、これにより、オーバフロー信号の発生が止むまでに、トレース生成ブロック120によって任意のトレース信号の発行を停止することができるようになっている。このような手順によって、高優先度トレース信号と低優先度トレース信号の両方が失われることになるが、DSup信号を発生するためのあらかじめ定められた抑制レベルを適切に選ぶことにより、オーバフロー信号を発行する必要のある場面というのは極めて稀なことになる。
【0056】
他の実施例では、DSup信号をトレース生成ブロック120に発行することに加え、FIFO130が、DSup信号が発行された後に、命令トレース信号のみを格納する内部ステップをとるものがある(これにより、DSup信号の発行と、トレース生成ブロックによる当該DSup信号への応答との間の遅れ時間を除去することができる)。
【0057】
図3は、本実施例のトレース生成ブロック120によって実行される、経路145および155を経由してFIFO130に出力されるトレース信号を決定するための処理ステップを示すフロー図である。ステップ300では、生成すべきなんらかのトレースデータがあるかどうかを判定する。生成すべき新しいトレースデータがあると判定された場合には、ステップ310に進み、そこで、このトレースデータは、命令トレースデータであるか否かを判定する。もしそうならば、ステップ380に進み、そこで、データ同期情報を含まないトレースデータを経路145上に発行する。しかし、時として、命令トレースに関して、他の命令同期情報が必要になる場合もあることは、当該技術分野に精通した者にとって認識されうるものである。
【0058】
ステップ310において、生成すべきトレースデータが命令データでないと判定された場合には、トレースデータはデータトレースとなり、処理ステップ320に進み、そこでDSup信号が発行されたかどうかを判定する。もしDSup信号が発行されたならば、ステップ330に進み、そこで、生成すべきデータトレースの項目が、DSup信号の発行に続く第1の(最初の)項目であるかどうかを判定する。もしそうでなければ、ステップ340に進み、データトレースの項目は出力されない。しかし、もしデータトレースの項目が、DSup信号の発行に続く第1の(最初の)項目である場合には、ステップ350に進み、全データトレース信号の代わりに、位置情報信号を経路155を介してFIFOに出力する。この位置情報信号は、一意の信号であり(例えば、データ抑制の開始位置を特定する1バイト信号)、後にトレースデータを解析する任意のツールによって識別可能なものであり、そのツールに対し、データ抑制が行われたことを示すために用いられる。位置情報は、抑制されたデータトレースの各項目について発行されるものであるが、本実施例では、抑制しようとするデータトレースの第1項目に関してのみ位置情報を発行し、位置情報の発行によってFIFOにオーバフローを引き起こす危険性を防ぐようにしている。さらに、通常、トレース解析ツールにとってより重要なことは、どれだけの数のデータトレース項目が抑制されたかを知ることよりも、抑制が起こったこと自体を知ることである。
【0059】
ステップ320で、DSup信号が発行されなかったと判定された場合には、次に、ステップ360に進み、DSup信号の発行が停止されていることから、トレースしようとするデータトレース項目が第1の(最初の)データトレース項目であるか否かを判定する。もしそうならば、ステップ370に進み、データトレース信号を後で解析できるようにするのに必要となる任意のデータ同期情報とともに、データトレース信号を発行する。例えば、出力データトレース中のアドレスの圧縮が行われた場合には、データ同期情報には、圧縮されなかったアドレスの出力が含むものとなる。
【0060】
しかし、ステップ360で、DSup信号の発行が停止されていることから、発行するべきデータトレース項目が第1データトレース項目でないと判定されたと仮定すると、次にステップ380に進み、そこで、対応するデータ同期情報を伴わずに、そのデータトレース項目が出力される。
【0061】
従って、本発明の位置実施例によれば、ここで用いられる方法によって、コア36を停止させることなくFIFOのオーバフローを動的に回避することができる。したがって、ユーザが、このようなオーバフローを回避するためにトレースデータを絞り込もうとする時間をかける代わりに、本方法は、FIFOがオーバフローしそうになるレベルに達した時に、低優先度のトレースデータだけが失われるようにして、できるだけ多くのトレースデータをトレースすることを保証するものである。
【0062】
図4は、複数のオンチップトレースモジュール400、405および410を設けたデータ処理システムのブロック図である。本例では、集積回路4は、2つのプロセッサコア402および407を有し、これらは、対応するキャッシュ404および409に接続されている。キャッシュ404および409は、両者とも、メモリバス420を介して、外部メモリ14に接続されている。図4には明記されてはいないが、外部メモリ14は、図1に示した外部記憶装置に接続されている。本例のシステムでは、プロセッサコア402および407とメモリバス420の両者の動作をトレースできるようにすることが望ましいと考えられる。従って、集積回路4のこれらの異なる構成要素をトレースするために、独立したオンチップトレースモジュール400、405および410が各々設けられている。
【0063】
しかし、各トレースモジュールに対応して外部ピンあるいは独立したトレースバッファを設けるコストは、通常、極めて高いものになる。従って、図4に示した例では、複数のトレースモジュール400、405および410が出力するトレース信号を格納するために、単一のトレースバッファ12を設ける。さらに、複数のオンチップトレースモジュールの間を仲介し、これらの複数のオンチップトレースモジュールからのトレース信号を単一のトレースストリームに変換し、経路470を介してトレースバッファ12に出力するために、ファンネル論理460を設ける。このような仲介が必要になるのは、入力トレースの経路440、442および444上の帯域幅の総量は、通常、トレースバッファ12への経路470上の帯域幅よりも広くなるからである。
【0064】
本実施例では、オンチップモジュール400、405および410の各々は、オンチップトレースモジュールが出力トレースデータを必要とした時に、経路430、432および434を介してファンネル論理に対してリクエスト信号を発行するように構成されている。実際には、このリクエスト信号は、図2に示したトレース有効信号によって与えられる。あらかじめ定められた基準に基づき、さらに、ファンネル論理460は、複数のリクエスト信号の間を仲介し、トレースバッファ12への出力として、どのトレースモジュールがファンネル論理に対してトレースデータを発行するべきかを決定し、それに応じて、ファンネル論理は、許可信号452、454および450を発行する。任意の好適な仲介手順を使うことができるが、例えば、通常は、メモリバスで複数のプロセッサコアにより要求されるアクセス間を仲介するために用いられるのと同様の仲介手順を用いることが可能であることを理解されるであろう。特定のトレースモジュールが、発行された許可信号を受信した時に、トレースモジュールとファンネル論理460との間の各々のトレース経路440、442および444を介して、そのトレースデータを出力する。ファンネル論理460の動作の詳細については、後に図5を引用して詳細に説明する。
【0065】
リクエストハンドラ500は、経路430、432および434を介して、複数のリクエスト信号を受信するために、ファンネル論理460の内部に設けられる。さらに、リクエストハンドラ500は、あらかじめ定められた優先度情報を格納した基準格納装置510に構成され、1つ以上のリクエスト信号が特定の時点で発行された際に、どのトレースモジュールに許可信号を発行すべきかを決定する。メモリ510内に格納された優先度情報は、あらかじめ定めておいたものでもよいし、ユーザによりプログラム可能なものであってもよい。図4に示した例では、メモリバス420の動作が、トレースすべき最も重要なものであり、その次にはコア1の動作、さらに次にはコア2の動作が重要であると想定している。従って、メモリバストレースモジュール410が、経路434の上にリクエストを発行した場合には、経路430および432上にリクエスト信号が存在することに関わりなく、許可信号が経路450上に発行される。同様に、オンチップトレースモジュール400および405から、経路430および432上に同時にリクエスト信号を受信した場合には、トレースモジュール405に優先して、経路452上にトレースモジュール400への許可信号が発行される。
【0066】
マルチプレクサ520は、3つのトレースモジュールから経路440、442および444の上で受信される複数のトレース信号を受信するため、ファンネル論理460の内部に設けられる。リクエストハンドラ550が許可信号を発行すると、それは、同時に、識別信号を経路525上に発行しマルチプレクサ520に送り、マルチプレクサ520に対して、許可信号を与えられたトレースモジュールによって発行されるトレース信号を経路535上に発行させる。従って、一例として、もしメモリバストレースモジュール410に許可信号が発行された場合には、マルチプレクサ520は、入力経路444を介して受信される信号を経路535上に発行するように構成される。
【0067】
さらに、単一のトレースストリームが、経路470を介してトレースバッファ12に対して出力されるため、どのトレースモジュールがトレースストリームの特定の部分を生成するのに対応しているかの識別がトレースストリーム内に含まれていることが、コンピュータ16(図1参照)で動作するトレースツールによって後で解析する際に用いる上で重要となる。従って、本実施例では、マルチプレクサ520から出力されるトレース信号を受信し、どの構成要素(あるいはトレースモジュール)にトレースストリームの特定の部分が対応しているのかを表すトレース識別子の中に挿入するために、ラッピングプロトコル論理530が設けられる。本実施例では、この識別子は、ラッピングプロトコル論理530によって、経路525を介して発行された識別信号から求められる。このようにして得られたトレースストリームが、経路470を介してトレースバッファ12に出力される。
【0068】
図5はファンネル論理460の動作の概要を示したものであり、ある実際の実装では、制御経路の中に多くのレジスタが必要となり、このような場合には、マルチプレクサ520に対して、なんらかの入力バッファを設けることが必要となることは、当該技術分野に精通した者にとって認識されうるものである。
【0069】
図7は、適切な許可信号と識別子信号を発行するために、リクエストハンドラ500の内部に設けられる論理を概略的に示した図である。上述したように、本実施例では、メモリバスの動作は、トレースすべき最も重要なものであると考えられるため、メモリバストレースモジュール410から経路434上に送られた設定リクエスト信号(すなわち、論理値1レベルである信号)を、経路450上の許可信号として出力する。このような状況では、ANDゲート700および710は、経路430および432を介して受信されるリクエスト信号に関わりなく、他の2つの許可信号452および454は論理値0レベルであることを保証するものである。さらに、ID信号は“00”であることから、対応するトレース信号の発生元がメモリバストレースモジュール410であると特定される。
【0070】
もし経路434上のリクエスト信号が、設定されていない(すなわち、論理値0レベルである)場合には、ANDゲート700および710は、オンチップトレースモジュール1 400からの設定リクエスト信号は、オンチップトレースモジュール2 405からの設定リクエスト信号よりも優先度が高いことを保証する。さらに、図7からは、もし許可信号が経路452上に発行された場合には、ID信号は“01”となることから、対応するトレース信号の発生元はオンチップトレースモジュール1 400であると特定される。同様に、許可信号が経路454上に発行された場合には、ID信号は“10”となることから、対応するトレース信号の発生元はオンチップトレースモジュール2 405であると特定される。
【0071】
一実施例によれば、各トレースモジュールは、リクエスト信号を発行するように構成され、対応する許可信号を受信した時にのみ、トレース信号をファンネル論理460に出力できる。しかし、本実施例では、各トレースモジュールは、リクエスト信号を発行し、もし許可信号の発行が止まった場合にはトレース信号の出力を中止するように構成されている。図4に示すような集積回路では、許可信号に応答するようには設計されていない、1つあるいはそれ以上の数の過去のトレースモジュールの設計が存在する場合もありうる。このような過去の設計に基づくトレースモジュールは、以下では、停止不能型装置と称する。
【0072】
図6には、1つの停止可能型装置600および2つの停止不能型装置610および620が、ファンネル論理460に接続されているものとして、その概略が示されている。各停止不能型装置とファンネル論理460の間には、対応するバッファ630および640が置かれており、以下では、停止可能バッファと称する。
【0073】
図5を引用して先に述べたように、停止可能型装置がトレースデータを発行しようとする場合には、その装置は、最初に、経路604上にリクエスト信号を発行し、対応する許可信号が経路604上にファンネル論理460から受信された時には、さらに、その装置は、トレースデータを経路602上に発行する。本例では、トレースデータは32ビットの帯域幅を有するものと仮定している。
【0074】
しかし、これとは対照的に、各々の停止不能型装置610および620が、生成された時にデータトレース項目を発行し、これは、経路612および622を介して、対応する停止可能バッファ630および640に送られる。同時に、トレース有効信号が経路614および624上に発行され、これらは要求信号と同様に見なされうるものとなる。図示の都合上、図6では、停止不能型装置610は、帯域幅8ビットのトレースデータを発行し、一方、停止不能型装置620は、帯域幅16ビットのトレースデータを発行するものとなっている。
【0075】
停止可能バッファ630および640の各々は、発行すべき32ビットのトレースデータを有するまで待機するように構成され、さらに、各々、経路634および644を介して、ファンネル論理460に対してリクエスト信号を発行するように構成されている。各バッファが許可信号を受信すると、各々、経路632および643を介して、対応するトレースデータを出力する。
【0076】
停止可能バッファ630および640は、理想的には、比較的小さい容量であるため、バッファ630および640が許可信号を受信する前に長時間の待ちを必要としないように、停止不能型装置610および620には、ファンネル論理460のメモリ510中に格納された優先度情報の中から比較的高い優先度を割り当てることが好ましい。図6に示した例では、停止不能型装置には、停止可能装置600よりも高い優先度を割り当てるものと仮定すれば、オーバフローしないことを保証するためには、各バッファ630および640は、64ビットの容量とする必要があるだけである。
【0077】
単一のサイクル時間内では、単一の装置だけが出力トレースを必要とするため、停止不能型装置の全帯域幅は、ファンネル論理からの出力ストリームの帯域幅を上回らないことが好ましい。図6に示した例では、停止不能型装置の全帯域幅は24ビットであり、これに対し出力の帯域幅は、32ビットである。
【0078】
図5を引用して先に述べたように、ファンネル論理460によって適切な許可信号を発行することにより、トレースデータの単一のストリームが出力され、本例では、32ビットの帯域幅をもつトレースストリームが出力されることが保証される。前記のように、このトレースストリームは、ラッピング論理530を経由し、そこで装置識別子が付加され、その後、修正されたトレースストリームは、トレースバッファ12に出力される。図6に示した例では、3つの異なる装置があるため、情報の2ビットは、装置IDの中で一意に装置を識別するために必要なものとなる。従って、32ビットのトレースストリームは、ラッピング論理530によって装置IDが付加されると、修正されて34ビット幅のトレースストリームを生成するものとなる。
【0079】
図6では、ラッピング論理530は、装置IDを組み込んだ結果、トレースストリームの帯域幅がどの程度変わるかを明確に示すために、ファンネル論理460の外部にあるものとしてその概略が示されている。ラッピング論理は、希望に依って、ファンネル論理の外部に設けてもよいし、ファンネル論理の内部に設けてもよく、この結果は処理操作には影響を及ぼさないことが、当該技術分野に精通した者にとって認識されうるものである。
【0080】
本発明の実施例について上述したように、データ処理装置の内部でトレース信号を発生させるための改良された方法について説明した。特に、オンチップのトレースモジュールの内部で抑制信号を用いることにより、抑制信号が発行された際には、低優先度トレースデータが抑制されてFIFOに入るトレースデータの量を減らすことができるため、抑制信号オンチップのトレースモジュールのFIFOがオーバフローしないことをより確実に保証することができる。さらに、複数のオンチップトレースモジュールを設けた際には、上述したファンネル論理によって、これらのトレースモジュールによって発行された複数のトレース信号が、単一のトレースストリームに集約され、トレースバッファに出力されるため、対応するピンあるいはトレースバッファを設けるコストに不必要な増加を招くことなく、複数のトレースモジュールを用いることが可能となる。
【0081】
以上では、本発明の特定の実施例について説明してきたが、本発明はそれに限定されるものではなく、本発明の範囲内で多くの修正と追加が可能となることは明白である。例えば、本発明の範囲を逸脱することなく、独立クレームの特徴とあわせて、従属クレームの特徴の組み合わせを得ることが可能となる。
【図面の簡単な説明】
【図1】オンチップのトレース機構を設けたデータ処理システムの概略を示す図である。
【図2】本発明の一実施例において、図1のオンチップのトレースモジュールをより詳細に示すブロック図である。
【図3】本発明の一実施例において、図2のトレース生成ブロックが、どのトレース信号を発行するかを決定する方法を示すフロー図である。
【図4】本発明の一実施例において、データ処理装置の概略を示し、複数のオンチップのトレースモジュールが設けられている構成を示す図である。
【図5】本発明の一実施例において、図4のファンネル論理内に設けられた構成要素をより詳細に示すブロック図である。
【図6】本発明の一実施例において、安定した装置および不安定な装置の両者に接続するように、実施例のファンネル論理がどのように構成されているかを示す図である。
【図7】本発明の一実施例において、受信されたリクエスト信号から許可信号と識別子信号を生成するために、実施例のファンネル論理の内部で用いられる論理を示す図である。
【符号の説明】
2 データ処理システム
4 集積回路
6 マイクロプロセッサコア
8 キャッシュメモリ
10 オンチップトレースモジュール
12 オンチップトレースバッファ
14 外部メモリ
16 汎用コンピュータ
20、22 バス[0001]
BACKGROUND OF THE INVENTION
(Background of the Invention)
The present invention relates to the generation of trace signals in a data processing apparatus having one or more components that track its behavior.
[0002]
[Prior art]
Tracking the movement of a data processing system and thereby generating a trace stream containing data representing the movement in the system step by step is a very useful tool in developing the system. However, since processing instructions tend to be embedded in the processor core in a complicated manner, it is extremely difficult to track the state of the processor core via a terminal accessible from the outside. Accordingly, not only the off-chip trace mechanism for collecting and analyzing the trace data but also more trace mechanisms are provided in the chip. An example of such an on-chip trace mechanism is the Embedded Trace Macrocell (ETM) provided by ARM, Cambridge, UK, for various ARM processors.
[0003]
Such a trace mechanism generates in real time a trace stream of data representing what the data processor is attempting to trace its movement. This trace stream is then used to enable debugging of the sequence of processing instructions executed by the data processing device.
[0004]
A trace mechanism is provided that incorporates a trigger point that is used to control trace operations that start and stop tracing due to access to a specific register, address, or data value. That is well known. Such a mechanism can be very useful in diagnosing certain parts of the system and certain types of movement.
[0005]
[Problems to be solved by the invention]
However, as data processing systems continue to increase in complexity, it is clear that there is potentially a very large amount of information to be traced. The stream of trace data generated by the ETM is usually stored temporarily prior to output for later processing, but this may cause the buffer to overflow with trace data, resulting in Trace data may be lost. For example, in a typical implementation, all ETM generated trace data is immediately written to an internal first-in first-out (FIFO) buffer and then transferred to the trace buffer via a relatively narrow bandwidth trace port. The When tracing a wide range of movement of the data processing apparatus, the FIFO overflows due to explosive generation of trace data, which may lead to loss of trace data.
[0006]
One known way to solve this problem is to configure the ETM to output a signal to the component whose operation is tracked when the FIFO occupancy reaches a predetermined level. Yes, this signal stops the component so that the contents of the FIFO can be eliminated before an overflow occurs. However, in order to avoid FIFO overflow, it is necessary to perform a search operation on the ETM from the outside (that is, depending on the component to be tracked). It turns out to be difficult. Since there is an inherent delay time between the ETM that generates such a signal and the signal generated by the component to be traced, such as a processor core, during this delay time, It can be seen that continuing to track other operations of the component will cause the FIFO to overflow anyway.
[0007]
In view of the foregoing, it would be desirable to provide a more improved method to reduce the possibility of trace data loss.
[0008]
[Means for Solving the Invention]
(Summary of Invention)
In a first aspect, the present invention receives a component whose operation is tracked and an input signal from the element indicating the operation, and receives a high priority from the input signal.Trace signalAnd generates a low-priority trace signal by generating a low-priority trace signal and outputting it to the trace receiver, and issuing a suppression signal from the trace receiver (assert "assert") The present invention provides a data processing apparatus including a trace generation unit that suppresses noise.
[0009]
According to the present invention, the trace signal generated by the trace generation unit is classified as being either a high priority trace signal or a low priority trace signal. The trace signal generated by the trace generation unit becomes an output to the trace reception device, and the trace generation unit receives the suppression signal from the trace reception device and suppresses the generation of the low priority trace signal. The present invention has been made based on the recognition that there are usually certain types of trace signals that are more important than other signals. For example, there are certain types of trace signals that need to be output to maintain instruction traces, such as trace signals for branch addresses, while losing synchronization, such as data trace signals. There are other trace signals that may be lost. The inventors of the present invention have also noted that the former type of trace signal often has a narrower bandwidth than the latter type of trace signal.
[0010]
With the above in mind, the data processing apparatus of the present invention is configured to suppress the low-priority trace signal when it is determined that the trace receiving apparatus is necessary. This solves the above-mentioned problem of the prior art that an arbitrary amount of trace data is lost due to overflow. On the other hand, according to the present invention, when the trace receiving apparatus determines that it is appropriate, it sends a suppression signal to the trace generation unit to ensure that only the high priority trace signal is output. Thus, the possibility that the trace receiving apparatus will overflow is suppressed as much as possible.
[0011]
Since this suppression occurs directly between the trace generation unit and the trace receiver, the above-mentioned problems in the prior art resulting from latency in returning signals to the component whose operation is being tracked are well solved, Thus, the present invention provides a more reliable method for preventing trace receiver overflow, and at the same time considers that the trace signal is lost only to the low priority trace signal. You can do it.
[0012]
The trace receiving device can be installed at the location of the trace generation unit or away from the trace generation unit. In one embodiment, data processingapparatusA trace receiving device is provided inside, and preferably mounted on the same chip as the trace generating unit, so that the propagation of the suppression signal from the trace receiving device to the trace generating unit can be accelerated. When it becomes necessary to suppress the priority trace signal, the trace generation unit can respond at high speed. For this reason, issuing suppression signals(Occurrence " issuance ")Thus, in order to prevent the trace receiving apparatus from overflowing, the low-priority trace signal can be immediately suppressed, and the reliability is further improved.
[0013]
The trace receiving device can take various forms. However, in this embodiment, the trace receiving apparatus is a buffer having a predetermined capacity (for example, a FIFO buffer).
[0014]
In the preferred embodiment, the buffer is configured to issue a suppression signal when the amount of trace signal stored in the buffer reaches a predetermined suppression level. Accordingly, in these embodiments, a suppression signal is issued when the trace signal reaches a predetermined percentage of the buffer.
[0015]
The device that reads and analyzes the trace signal generated by the data processing device may be directly connected to the trace receiving device. However, in the embodiment, the trace receiving device includes an input port connected to the trace generation unit via the first bus having the first bandwidth, and a second configuration in which the trace signal is output to the trace buffer. An intermediate buffer having an output port connected to a second bus having a first bandwidth, the first bandwidth being wider than the second bandwidth. In these embodiments, the device for reading and analyzing the trace signal generated by the data processing device is typically configured to read the trace signal from the trace buffer.
[0016]
As can be seen from these embodiments, since the output bandwidth of the intermediate buffer is narrower than its input bandwidth, the intermediate buffer may overflow. However, by using the suppression signal of the present invention, the trace generation unit can respond quickly to the suppression signal so that the low priority trace signal is not generated excessively, thus reducing the possibility of such a situation. be able to.
[0017]
As described above, the present invention classifies trace signals as either high priority trace signals or low priority trace signals.(By class " classification ")It is necessary to do. In the preferred embodiment, this classification is maintained within a trace generation unit that identifies whether the trace signal is a high priority trace signal or a low priority trace signal. For example, it is understood in the art that this classification can be predefined to indicate that the trace signal for instruction trace is high priority while the trace signal for data trace is low priority. It can be recognized by those who are familiar with. In addition, this classification is programmable.
[0018]
In the preferred embodiment, when a suppression signal is issued, a suppressed low priority trace signal is used to indicate that suppression is occurring.forlocation information(Placeholder " placeholder ")The trace generation unit is configured to output to the trace receiver. Thereby, trace data can be analyzed by a tool used later, and it is possible to determine when the low-priority trace signal is suppressed.
[0019]
These location information is issued as each item of trace data is suppressed, but in the preferred embodiment the trace is generated so that only the location information for the initially suppressed low priority trace signal is output. Unit is configured. Therefore, this position information indicates that suppression has occurred first, and is sufficient for the trace analysis tool to determine that data suppression has occurred. The possibility of causing an overflow of is avoided.
[0020]
In a preferred embodiment, the trace receiver is configured to release the suppression signal when the amount of trace signal stored in the buffer has dropped to a predetermined restart level. The predetermined restart level may be determined to be the same as the predetermined suppression level, but if the predetermined restart level is determined in this way, in some situations, the And tend to cause a certain amount of vibration between the unsuppressed state. Therefore, in the preferred embodiment, the predetermined suppression level is set higher than the predetermined restart level so that when all traces are restarted, there is no need to reissue the suppression signal. A capacity capable of increasing the amount of the trace signal stored in the receiving apparatus can be secured.
[0021]
In the preferred embodiment, for the first low priority trace signal that leads to the de-issue of the suppression signal, the initial low priority trace signal, along with any necessary synchronization data, can be analyzed later. The trace generation unit is configured to output a priority trace signal. As a result, any synchronization information that is missing corresponding to a certain part of the trace stream to be suppressed is taken into the stream of the trace signal.
[0022]
Data processing systems are becoming more complex, for example due to increased integration levels in embedded systems, so that more functionality is included in each data processing device (eg, chip). Therefore, it is necessary to provide more trace blocks and modules in the data processing apparatus. In such future systems, a single trace module that includes such a single trace generation unit is no longer sufficient, as it includes multiple components whose operation is to be tracked. For example, a data processing device includes a plurality of processor cores, each of which needs to be traced, and further, various buses in the data processing device need to be traced. However, it can be seen that the cost of providing external pins and trace buffers for each trace module is very high. However, there are exchanges of signals and information between different parts of the data processing device, and in order to debug these, it is necessary to trace the relationship between these parts at the same time, so between the multiple trace modules, Simply sharing pins and trace buffers is not appropriate. Therefore, as another problem to be solved, it becomes a problem to be able to effectively trace signals from a plurality of trace modules of the data processing device.
[0023]
Thus, in an embodiment of the present invention, the data processing apparatus further includes a plurality of trace modules for receiving input signals from one or more components to be traced, wherein each trace module is Generating a trace signal from the input signal and outputting the trace signal on a corresponding trace bus, wherein at least one of the trace modules includes the trace generation unit and a corresponding trace receiving device, and the corresponding trace bus receives the trace reception The data processing apparatus is further connected to the trace bus of the trace module, receives the trace signal output to each trace bus as an input trace signal, and receives the trace signal from the input trace signal. Configure to generate the resulting trace stream to the output port Comprises a funnel logic, wherein the output port, aggregation trace bus connected to the funnel logic(overall" collective ")The trace signal by the trace module has a maximum bandwidth that is narrower than the maximum bandwidth and the funnel logic ensures that the input trace signal is output from the output port so that the maximum bandwidth of the output port is not exceeded. It is characterized by being configured to control the issuance of.
[0024]
Accordingly, in these embodiments, funnel logic is provided that is connected to the trace bus of various trace modules and is configured to generate a trace stream derived from various input trace signals at the output port. The trace stream is sent, for example, to a pin that can send a signal to the chip or to a trace buffer. The funnel logic is also configured to control the issuance of trace signals by the various trace modules to ensure that the input trace signal is output from the output port so that the maximum bandwidth of the output port is not exceeded. ing. Thus, the funnel logic of these embodiments can effectively generate multiple trace sources as input and a single trace stream as output, where the output stream is that of the expected input stream. The total number is not exceeded.
[0025]
According to the first aspect of the present invention, this funnel logic is provided inside the data processing device regardless of whether any trace module can suppress the generation of low priority trace signals. Thus, according to a second aspect of the invention, the invention comprises a plurality of trace modules for receiving input signals from one or more components to be traced, wherein each trace module Is characterized by generating a trace signal from the input signal and outputting it on a corresponding trace bus, and receiving the trace signal output to each trace bus as an input trace signal. And a funnel logic configured to generate a trace stream derived from an input trace signal to an output port, wherein the output port is greater than an aggregate maximum bandwidth of the trace bus connected to the funnel logic. Has a narrow maximum bandwidth so that the funnel logic does not exceed the maximum bandwidth of the output port To ensure that the input trace signal is output from the output port, and characterized in that it is configured to control the issuance of the trace signal by trace module, there is provided a data processing apparatus.
[0026]
In a preferred embodiment, the trace module is configured to indicate to the trace module which trace module should send the trace signal to the funnel logic at any point in time, and only the trace signal from one trace module can be trace streamed at any point in time. Has come to include.
[0027]
The act of determining which trace module should send a trace signal to the funnel logic at any point in time can be implemented in various ways. However, in the preferred embodiment, the funnel logic receives a request signal from each trace module that is attempting to output a trace signal on the corresponding trace bus and applies the predetermined criteria to the received request signal. A request handler is included to determine which trace module is to output the trace signal to the funnel logic. Thus, in these embodiments, each trace module is configured to indicate to the funnel logic when the trace module is about to output a trace signal to the corresponding trace bus so that the funnel logic is received. Mediate between various requests.
[0028]
Here, the request handler is preferably configured to send a permission signal to a trace module that will send a trace signal to the funnel logic upon application of a predetermined criterion. Thus, in these embodiments, the trace module will continue to issue its request signal until it receives an enable signal indicating that the trace signal can be sent to the funnel logic.
[0029]
The predetermined criteria applied by the funnel logic request handler to determine which trace module issues a trace signal to the funnel logic at any given time can take a variety of forms. However, in the preferred embodiment, the predetermined criteria shall define the priority order of the various trace modules.
[0030]
The predetermined criteria can be either predetermined or programmable. For example, the predetermined criteria may be specified, for example, to identify the relative priority assigned to the various trace modules, by the component that the module contained in it is configured to trace its operation. It may be programmable for the implementation of. For example, if it is determined that the most important trace signal to be output relates to the operation of the memory bus, the highest priority is assigned to the trace module configured to track this memory bus operation. It is done.
[0031]
In a preferred embodiment, the funnel logic further includes a multiplexer whose output is connected to each of the trace buses, and the request handler issues a control signal to the multiplexer upon application of the predetermined criteria, It is configured to control which input of the multiplexer is to be output as a trace stream output from the multiplexer for transferring the stream to an output port of the funnel logic.
[0032]
In order to effectively analyze the trace stream output from the funnel logic, it is necessary to analyze using a tool in order to know which component corresponds to a specific part of the trace stream. Become. In the preferred embodiment, the funnel logic includes the logic required for such an identifier to be added to the trace stream. In particular, in the preferred embodiment, the funnel logic further includes wrapping logic for introducing an identifier into the trace stream that indicates which component a particular portion of the trace stream corresponds to. This identifier can be implemented in various ways. However, in some embodiments, the wrapping logic is configured to receive a control signal issued to the multiplexer, and this identifier is derived from the control signal. Another example is to configure each trace module to issue an identifier to the wrapping logic.
[0033]
It can be seen that there are various ways of assigning components to corresponding trace modules. For example, in one implementation, a single trace module can actually be configured to trace one or more components. However, in the preferred embodiment, one trace module may be provided for each component to be traced.
[0034]
In one embodiment, each trace module is configured to issue a request signal to the funnel logic, thereby allowing the funnel logic to control the issuance of trace signals by each trace module in each situation.
[0035]
However, in other embodiments, for example, the trace module may depend on the design of the past trace module, and may be configured to simply output the trace stream when the trace module determines that it is appropriate. Therefore, there is a case where one or more trace modules are not configured to issue such a request signal or respond to the permission signal. In such a situation, the issue of the trace signal by at least one of the trace modules cannot be controlled by funnel logic, and the data processing device further includes such trace modules and funnel logic. And includes a buffering buffer for each of the trace modules for temporarily storing trace signals output from the trace module.
[0036]
In such an embodiment, the stalling buffer is configured to issue a request signal for the corresponding trace module and respond to any grant signal issued by the request handler, temporarily Preferably, the stored trace signal is output to funnel logic. Thus, in practice, the stalling buffer is the “front end” for each module according to such a past design, and the trace module can be connected in an appropriate manner with funnel logic.
[0037]
In the preferred embodiment, the stalling buffer is configured to issue a request signal when the amount of trace signal stored in the stalling buffer reaches a predetermined level. The number of components connected to the funnel logic that determine which trace module provides the trace signal to the funnel logic at a particular time by appropriately selecting the predetermined criteria applied by the funnel logic By limiting the bandwidth, it is possible to ensure that the stalling buffer receives the grant signal before the stalling buffer overflows with the trace data output from the corresponding trace module.
[0038]
As described above, the funnel logic output port may be connected to the trace buffer of the data processing apparatus. Alternatively, the output port may include a plurality of pins that allow the trace stream to be output to the outside from the data processing device.
[0039]
According to a third aspect of the present invention, the present invention provides a method for generating a trace signal in a data processing apparatus having components for tracing its operation, the method comprising: (i) Receiving an input signal from an operational component; (ii) generating a high priority and low priority trace signal from the input signal for output to a trace receiver; (iii) During step (ii), in order to suppress the low-priority trace signal, a step including responding to issuance of the suppression signal from the trace receiving device is performed using the trace generation unit. Yes.
[0040]
In a fourth aspect of the present invention, the present invention provides a data processing apparatus having a plurality of trace modules for receiving input signals from one or more components that trace its operation. Each trace module is configured to generate a trace signal output via a corresponding trace bus from each input signal of the trace module, the method comprising: (A) receiving a trace signal output to each trace bus in the funnel logic as an input trace signal; and (b) generating a trace stream obtained from the input trace signal at an output port of the funnel logic. The output port is an aggregated maximum of trace buses connected to the funnel logic A step characterized by having a maximum bandwidth narrower than the bandwidth; and (c) a trace to ensure that the input trace signal is output from the output port so as not to exceed the maximum bandwidth of the output port. Controlling the issuance of trace signals from the module.
[0041]
Speaking from the fifth aspect of the present invention, the present invention provides a computer program product for executing a computer program for controlling an apparatus based on the method of the third or fourth aspect of the present invention.
[0042]
DETAILED DESCRIPTION OF THE INVENTION
Detailed Description of the Preferred Embodiment
The present invention will now be described, by way of example only, with reference to a preferred embodiment as illustrated in the accompanying drawings.
[0043]
FIG. 1 schematically illustrates a data processing system 2 that provides an on-chip trace mechanism. The
[0044]
During operation, the
[0045]
FIG. 2 is a block diagram showing in more detail the components provided in the on-chip trace module of FIG. The on-
[0046]
The
[0047]
Whenever
[0048]
According to a preferred embodiment of the present invention, the trace signal generated by the trace generation unit is classified as being either a high priority trace signal or a low priority trace signal. This classification is preferably maintained in the
[0049]
In addition to tracing instructions, it can be seen that when tracing data, the data trace signal via path 155 occupies most of the bandwidth of the trace port from
[0050]
Since the output bandwidth from the
[0051]
Prior to the present invention, as a method of solving this problem, a signal indicating that the FIFO is full is sent from the on-
[0052]
According to an embodiment of the present invention, this problem can be solved by providing a suppression signal (hereinafter referred to as a DSup signal) issued by the
[0053]
When the amount of data trace in the
[0054]
The predetermined suppression level and the predetermined restart level are selected according to the mounting state. However, for example, in a 60-byte FIFO, a predetermined suppression level is set to be 45 bytes (that is, a state that occupies 75% of the total capacity of the FIFO), whereas a predetermined suppression level is predetermined. The restart level is normally set to a value slightly less than 45 bytes, and after the suppression signal issuance is stopped, the trace signal stored in the FIFO is not required immediately after the suppression signal is issued again. To ensure that there is room to increase the amount of
[0055]
Since the operation of simply discarding the data trace signal by issuing the DSup signal cannot prevent the
[0056]
In other embodiments, in addition to issuing the DSup signal to the
[0057]
FIG. 3 is a flow diagram illustrating processing steps for determining a trace signal output to the
[0058]
If it is determined in
[0059]
If it is determined in
[0060]
However, assuming that it is determined in
[0061]
Thus, according to the position embodiment of the present invention, the method used here can dynamically avoid FIFO overflow without stopping the core 36. Thus, instead of taking time for the user to narrow down the trace data in order to avoid such overflow, the method can provide low priority trace data when it reaches a level where the FIFO is likely to overflow. It ensures that only as much trace data as possible is traced in such a way that only is lost.
[0062]
FIG. 4 is a block diagram of a data processing system provided with a plurality of on-
[0063]
However, the cost of providing external pins or independent trace buffers corresponding to each trace module is usually very high. Therefore, in the example shown in FIG. 4, a
[0064]
In this embodiment, each of the on-
[0065]
[0066]
[0067]
In addition, since a single trace stream is output to trace
[0068]
FIG. 5 shows an overview of the operation of
[0069]
FIG. 7 is a diagram schematically showing logic provided in the
[0070]
If the request signal on
[0071]
According to one embodiment, each trace module is configured to issue a request signal and can output the trace signal to funnel
[0072]
In FIG. 6, one stoppable device 600 and two
[0073]
As previously described with reference to FIG. 5, when a stoppable device attempts to issue trace data, it first issues a request signal on
[0074]
However, in contrast, each
[0075]
Each of the
[0076]
Stoppable buffers 630 and 640 are ideally relatively small in capacity, so that
[0077]
Within a single cycle time, since only a single device needs an output trace, the total bandwidth of the unstoppable device preferably does not exceed the bandwidth of the output stream from the funnel logic. In the example shown in FIG. 6, the total bandwidth of the non-stoppable device is 24 bits, whereas the output bandwidth is 32 bits.
[0078]
As described above with reference to FIG. 5, by issuing an appropriate grant signal by
[0079]
In FIG. 6, the wrapping
[0080]
As described above for the embodiments of the present invention, an improved method for generating trace signals within a data processing apparatus has been described. In particular, by using a suppression signal inside the on-chip trace module, when a suppression signal is issued, low priority trace data can be suppressed and the amount of trace data entering the FIFO can be reduced. It is possible to more reliably guarantee that the FIFO of the suppression signal on-chip trace module does not overflow. Further, when a plurality of on-chip trace modules are provided, a plurality of trace signals issued by these trace modules are aggregated into a single trace stream and output to the trace buffer by the funnel logic described above. Therefore, a plurality of trace modules can be used without causing an unnecessary increase in the cost of providing the corresponding pins or trace buffers.
[0081]
While specific embodiments of the invention have been described above, it will be appreciated that the invention is not so limited and that many modifications and additions are possible within the scope of the invention. For example, it is possible to obtain a combination of the features of the dependent claims together with the features of the independent claims without departing from the scope of the present invention.
[Brief description of the drawings]
FIG. 1 is a diagram showing an outline of a data processing system provided with an on-chip trace mechanism.
FIG. 2 is a block diagram illustrating in more detail the on-chip trace module of FIG. 1 in one embodiment of the present invention.
FIG. 3 is a flow diagram illustrating a method for determining which trace signal the trace generation block of FIG. 2 issues in one embodiment of the present invention.
FIG. 4 is a diagram showing an outline of a data processing apparatus according to an embodiment of the present invention and showing a configuration in which a plurality of on-chip trace modules are provided.
5 is a block diagram illustrating in more detail components provided within the funnel logic of FIG. 4 in one embodiment of the present invention.
FIG. 6 illustrates how the funnel logic of an embodiment is configured to connect to both stable and unstable devices in one embodiment of the present invention.
FIG. 7 is a diagram illustrating logic used within the funnel logic of an embodiment to generate a grant signal and an identifier signal from a received request signal in an embodiment of the present invention.
[Explanation of symbols]
2 Data processing system
4 Integrated circuits
6 Microprocessor core
8 Cache memory
10 On-chip trace module
12 On-chip trace buffer
14 External memory
16 General-purpose computer
20, 22 bus
Claims (57)
動作を示す構成要素から入力信号を受け取り、トレース受信装置に出力するための高優先度トレース信号および低優先度トレース信号を前記入力信号から生成するトレース生成ユニットと
を含むデータ処理装置であって、
トレース生成ユニットは、トレース受信装置からアサート(「assertion」)される抑制信号に応答して低優先度トレース信号の生成を抑制し、
トレース受信装置は、トレース生成ユニットにより出力されたトレース信号を格納するための、あらかじめ定められた大きさのバッファであり、
バッファ内に格納されているトレース信号の量が、あらかじめ定められた抑制レベルに達した時に、抑制信号をアサート(「assert」)するようにバッファが構成されていることを特徴とするデータ処理装置。Components whose behavior is traced;
A data generation device comprising: a high-priority trace signal for receiving an input signal from a component that indicates operation; and a trace generation unit for generating a low-priority trace signal from the input signal for output to the trace reception device,
The trace generation unit suppresses the generation of the low priority trace signal in response to the suppression signal asserted (“assertion”) from the trace receiver,
The trace receiving device is a buffer of a predetermined size for storing the trace signal output by the trace generation unit,
A data processing device characterized in that the buffer is configured to assert ("assert") the suppression signal when the amount of the trace signal stored in the buffer reaches a predetermined suppression level .
さらに、各トレースバス上に出力されたトレース信号を入力トレース信号として受信するように、トレースモジュールのトレースバスに接続され、入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理を含み、出力ポートはファンネル論理に接続されたトレースバス全体の最大帯域幅より狭い最大帯域幅を有し、
出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するために複数トレースモジュールによるトレース信号の発生を制御するようにファンネル論理が構成されていることを特徴とするデータ処理装置。The data processing apparatus of claim 1, further comprising a plurality of trace modules that receive input signals from one or more components that trace their operation, each trace module including a corresponding trace. A trace signal to be output via a bus is generated from each input signal, and at least one of the trace modules includes the trace generation unit according to claim 1 and a trace receiving device corresponding thereto. And the trace signal output from the trace receiving device is output to the corresponding trace bus ,
Furthermore, it is connected to the trace bus of the trace module so as to receive the trace signal output on each trace bus as an input trace signal, and is configured to generate a trace stream obtained from the input trace signal at the output port. The output port has a maximum bandwidth that is narrower than the maximum bandwidth of the entire trace bus connected to the funnel logic;
The funnel logic is configured to control the generation of trace signals by multiple trace modules to ensure that the input trace signal is output from the output port so that the maximum bandwidth of the output port is not exceeded A data processing device.
(i)動作を示す構成要素からの入力信号を受信するステップと、
(ii)トレース受信装置に出力するための高優先度トレース信号および低優先度トレース信号を前記入力信号から生成するステップと、
(iii)前記ステップ(ii)の間に、トレース受信装置からの抑制信号のアサートに応答して、低優先度トレース信号を抑制するステップと
を含むステップをトレース生成ユニットが実行し、
トレース受信装置は、前記ステップ(ii)で生成されたトレース信号を格納するための、あらかじめ定められた大きさのバッファであり、
さらに、バッファ内に格納されているトレース信号の量が、あらかじめ定められた抑制レベルに達した時に、バッファに対して抑制信号をアサートさせるステップを含むことを特徴とする方法。A method for generating a trace signal in a data processing apparatus having components for tracing its operation, comprising:
(I) receiving an input signal from a component indicating operation;
(Ii) generating a high priority trace signal and a low priority trace signal for output to the trace receiver from the input signal;
(Iii) during the step (ii), the trace generation unit performs a step comprising: suppressing a low priority trace signal in response to assertion of the suppression signal from the trace receiving device;
The trace receiving device is a buffer having a predetermined size for storing the trace signal generated in the step (ii),
The method further includes the step of causing the buffer to assert a suppression signal when the amount of trace signal stored in the buffer reaches a predetermined suppression level.
該方法は、
(a)ファンネル論理において、各トレースバスへ出力されるトレース信号を入力トレース信号として受信するステップと、
(b)ファンネル論理の出力ポートに、入力トレース信号から得られたトレースストリームを生成するステップであって、該出力ポートは、ファンネル論理に接続されたトレースバス全体の最大帯域幅より狭い最大帯域幅を有することを特徴とするステップと、
(c)トレースモジュールからのトレース信号の発生を制御して、出力ポートの最大帯域幅を超えないように、入力トレース信号が出力ポートから出力されることを保証するステップと、
を含むことを特徴とする方法。30. The method of claim 29, wherein the data processing apparatus further includes a plurality of trace modules for receiving input signals from one or more components that trace its operation, each trace module comprising: 30. The trace generation unit according to claim 29 and the trace reception unit corresponding thereto, wherein the trace generation unit is configured to generate a trace signal output via a corresponding trace bus from a respective input signal. A trace signal output from the trace receiving device is output to the corresponding trace bus,
The method
(A) In funnel logic, receiving a trace signal output to each trace bus as an input trace signal;
(B) generating a trace stream obtained from an input trace signal at an output port of the funnel logic, the output port being a maximum bandwidth narrower than a maximum bandwidth of the entire trace bus connected to the funnel logic; Comprising the steps of:
(C) controlling the generation of the trace signal from the trace module to ensure that the input trace signal is output from the output port so as not to exceed the maximum bandwidth of the output port;
A method comprising the steps of:
対応したトレースバス上に出力トレース信号を出力しようとする各トレースモジュールから、リクエスト信号を受信するステップと、
受信されたリクエスト信号からどのトレースモジュールがファンネル論理に対してトレース信号を送るべきかを決定するステップと
を含むことを特徴とする方法。42. The method of claim 41, wherein step (c) comprises:
Receiving a request signal from each trace module attempting to output an output trace signal on a corresponding trace bus;
Determining from the received request signal which trace module should send the trace signal to the funnel logic.
(i)動作を示す構成要素からの入力信号を受信するステップと、
(ii)トレース受信装置に出力するための高優先度トレース信号および低優先度トレース信号を前記入力信号から生成するステップと、該トレース受信装置は、トレース生成ユニットにより出力されたトレース信号を格納するための、あらかじめ定められた大きさのバッファであり、
(iii)前記ステップ(ii)の間に、該トレース受信装置からの抑制信号のアサートに応答して、低優先度トレース信号を抑制するステップと、該バッファ内に格納されているトレース信号の量が、あらかじめ定められた抑制レベルに達した時に、該抑制信号をアサートするように該バッファが構成されている、
を含むステップを該トレース生成ユニットに実行させることを特徴とするコンピュータプログラム。A computer program for generating a trace signal in a data processing apparatus having components for tracing its operation,
(I) receiving an input signal from a component indicating operation;
(Ii) generating a high-priority trace signal and a low-priority trace signal to be output to the trace reception device from the input signal, and the trace reception device stores the trace signal output by the trace generation unit. A buffer of a predetermined size for
(Iii) suppressing the low-priority trace signal in response to assertion of the suppression signal from the trace receiver during the step (ii), and the amount of the trace signal stored in the buffer Is configured to assert the suppression signal when a predetermined suppression level is reached,
A computer program for causing to perform the steps in the trace generation unit including.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0213149A GB2389432B (en) | 2002-06-07 | 2002-06-07 | Instruction tracing in data processing systems |
US10/206,829 US7003699B2 (en) | 2002-06-07 | 2002-07-29 | Generation of trace signals within a data processing apparatus |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007329546A Division JP2008097646A (en) | 2002-06-07 | 2007-12-21 | Data processor and trace signal generation method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004013897A JP2004013897A (en) | 2004-01-15 |
JP4175927B2 true JP4175927B2 (en) | 2008-11-05 |
Family
ID=30117084
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003076703A Expired - Lifetime JP4175927B2 (en) | 2002-06-07 | 2003-03-20 | Data processing apparatus, trace signal generation method, and trace signal generation program |
JP2007329546A Pending JP2008097646A (en) | 2002-06-07 | 2007-12-21 | Data processor and trace signal generation method |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007329546A Pending JP2008097646A (en) | 2002-06-07 | 2007-12-21 | Data processor and trace signal generation method |
Country Status (2)
Country | Link |
---|---|
JP (2) | JP4175927B2 (en) |
GB (2) | GB2389931B (en) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7702964B2 (en) * | 2004-05-11 | 2010-04-20 | Qualcomm Incorporated | Compression of data traces for an integrated circuit with multiple memories |
EP2187311A1 (en) * | 2007-09-03 | 2010-05-19 | Panasonic Corporation | Semiconductor device, and development supporting device |
US8799753B2 (en) | 2008-02-04 | 2014-08-05 | Nec Corporation | Trace/failure observation system, trace/failure observation method, and trace/failure observation program |
JP2010123050A (en) * | 2008-11-21 | 2010-06-03 | Renesas Technology Corp | Semiconductor device |
JP2011013867A (en) * | 2009-06-30 | 2011-01-20 | Panasonic Corp | Data processor and performance evaluation analysis system |
GB2477936B (en) * | 2010-02-17 | 2016-02-10 | Advanced Risc Mach Ltd | Trace data priority selection |
GB2487355B (en) | 2011-01-13 | 2020-03-25 | Advanced Risc Mach Ltd | Processing apparatus, trace unit and diagnostic apparatus |
US9069896B2 (en) * | 2012-08-29 | 2015-06-30 | Freescale Semiconductor, Inc. | Data processor device for handling a watchpoint and method thereof |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0390955A (en) * | 1989-08-31 | 1991-04-16 | Nippondenso Co Ltd | Development support device for computer corresponding to plural cpus |
US5678028A (en) * | 1994-10-25 | 1997-10-14 | Mitsubishi Electric Information Technology Center America, Inc. | Hardware-software debugger using simulation speed enhancing techniques including skipping unnecessary bus cycles, avoiding instruction fetch simulation, eliminating the need for explicit clock pulse generation and caching results of instruction decoding |
US5764885A (en) * | 1994-12-19 | 1998-06-09 | Digital Equipment Corporation | Apparatus and method for tracing data flows in high-speed computer systems |
US5802272A (en) * | 1994-12-19 | 1998-09-01 | Digital Equipment Corporation | Method and apparatus for tracing unpredictable execution flows in a trace buffer of a high-speed computer system |
JPH08314764A (en) * | 1995-05-17 | 1996-11-29 | Fujitsu Ltd | Bus tracer |
US5544311A (en) * | 1995-09-11 | 1996-08-06 | Rockwell International Corporation | On-chip debug port |
US5724505A (en) * | 1996-05-15 | 1998-03-03 | Lucent Technologies Inc. | Apparatus and method for real-time program monitoring via a serial interface |
GB9626367D0 (en) * | 1996-12-19 | 1997-02-05 | Sgs Thomson Microelectronics | Providing an instruction trace |
EP1184790B1 (en) * | 1997-04-08 | 2009-11-25 | Advanced Micro Devices, Inc. | Trace cache for a microprocessor-based device |
US6148381A (en) * | 1997-04-08 | 2000-11-14 | Advanced Micro Devices, Inc. | Single-port trace buffer architecture with overflow reduction |
US6167536A (en) * | 1997-04-08 | 2000-12-26 | Advanced Micro Devices, Inc. | Trace cache for a microprocessor-based device |
JPH11306040A (en) * | 1998-04-21 | 1999-11-05 | Toshiba Corp | Emulator tracing device |
JP3147862B2 (en) * | 1998-07-08 | 2001-03-19 | 日本電気株式会社 | Trace collection method for multiple online control programs |
US6918065B1 (en) * | 1999-10-01 | 2005-07-12 | Hitachi, Ltd. | Method for compressing and decompressing trace information |
US6615370B1 (en) * | 1999-10-01 | 2003-09-02 | Hitachi, Ltd. | Circuit for storing trace information |
US7100152B1 (en) * | 2000-01-31 | 2006-08-29 | Freescale Semiconductor, Inc. | Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof |
US7448025B2 (en) * | 2000-12-29 | 2008-11-04 | Intel Corporation | Qualification of event detection by thread ID and thread privilege level |
US6802031B2 (en) * | 2001-05-24 | 2004-10-05 | International Business Machines Corporation | Method and apparatus for increasing the effectiveness of system debug and analysis |
-
2002
- 2002-12-12 GB GB0229009A patent/GB2389931B/en not_active Expired - Lifetime
-
2003
- 2003-01-14 GB GB0300799A patent/GB2391351B/en not_active Expired - Lifetime
- 2003-03-20 JP JP2003076703A patent/JP4175927B2/en not_active Expired - Lifetime
-
2007
- 2007-12-21 JP JP2007329546A patent/JP2008097646A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2008097646A (en) | 2008-04-24 |
GB2389931B (en) | 2005-12-14 |
GB2389931A (en) | 2003-12-24 |
GB0229009D0 (en) | 2003-01-15 |
GB2391351B (en) | 2005-10-05 |
JP2004013897A (en) | 2004-01-15 |
GB0300799D0 (en) | 2003-02-12 |
GB2391351A (en) | 2004-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7003699B2 (en) | Generation of trace signals within a data processing apparatus | |
JP2008097646A (en) | Data processor and trace signal generation method | |
US20120072673A1 (en) | Speculation-aware memory controller arbiter | |
US20030033559A1 (en) | System and method for exposing hidden events on system buses | |
US8041856B2 (en) | Skip based control logic for first in first out buffer | |
GB2383437A (en) | Integrated hardware treace unit | |
US5862148A (en) | Microcontroller with improved debug capability for internal memory | |
US9645937B2 (en) | Expedited servicing of store operations in a data processing system | |
US8880847B2 (en) | Multistream prefetch buffer | |
GB2503882A (en) | Preserving configuration of debug units in a power domain | |
JPWO2011065354A1 (en) | Bus monitor circuit and bus monitor method | |
US9372773B2 (en) | User-level hardware branch records | |
US9824014B2 (en) | Expedited servicing of store operations in a data processing system | |
JP2006507586A (en) | Apparatus and method for analyzing embedded system | |
US7685351B2 (en) | External device access apparatus | |
US8464005B2 (en) | Accessing common registers in a multi-core processor | |
US9632943B2 (en) | Expedited servicing of store operations in a data processing system | |
US6298394B1 (en) | System and method for capturing information on an interconnect in an integrated circuit | |
US10691605B2 (en) | Expedited servicing of store operations in a data processing system | |
EP1894106A2 (en) | Memory controller and method for coupling a network and a memory | |
US7260745B1 (en) | Detection of information on an interconnect | |
US6349371B1 (en) | Circuit for storing information | |
US8019952B2 (en) | Storage device for storing data while compressing same value input data | |
US20040095948A1 (en) | Data return arbitration | |
CN118069570B (en) | Doorbell type chip access system, device and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050518 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061003 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20061228 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070403 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070828 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071126 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071221 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080404 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080704 |
|
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: 20080729 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080819 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4175927 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120829 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130829 Year of fee payment: 5 |
|
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 |
|
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 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |