JP5591729B2 - トレースデータの優先度の選択 - Google Patents

トレースデータの優先度の選択 Download PDF

Info

Publication number
JP5591729B2
JP5591729B2 JP2011020604A JP2011020604A JP5591729B2 JP 5591729 B2 JP5591729 B2 JP 5591729B2 JP 2011020604 A JP2011020604 A JP 2011020604A JP 2011020604 A JP2011020604 A JP 2011020604A JP 5591729 B2 JP5591729 B2 JP 5591729B2
Authority
JP
Japan
Prior art keywords
data
output device
trace output
trace
priority level
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.)
Active
Application number
JP2011020604A
Other languages
English (en)
Other versions
JP2011170848A (ja
Inventor
ジョン・マイケル・ホーリー
マイケル・ジョン・ウィリアムス
キャサリン・エリザベス・ニーボーン
アラステア・デーヴィッド・レイド
Original Assignee
アーム・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2011170848A publication Critical patent/JP2011170848A/ja
Application granted granted Critical
Publication of JP5591729B2 publication Critical patent/JP5591729B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware

Landscapes

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

Description

本発明は、データ処理システムの分野に関する。より詳細には、本発明は、トレースデータ出力を生成するための能力を有するデータ処理システムに関する。
トレース出力データを生成するためのメカニズムを提供することが、データ処理システムの分野において公知である。このトレースデータは、ハードウェアおよび/またはソフトウェアの開発時に、診断およびデバッグの目的で使用されてもよい。
こうしたデータ処理システム内で発生する1つの問題として、トレースデータの容量が大きすぎる可能性があるために、キャプチャする際および出力前に、デバイス上のトレースデータをバッファするためのリソースが不十分である、および/または、デバイスからトレースデータを送信するための帯域幅が不十分である、ということが挙げられる。これに対処する1つの方法に、バッファまたはデバイスから伝送することが不可能なトレースデータの破棄がある。しかしながら、これには、破棄されたトレースデータ内に重大な診断情報が存在する場合があるという欠点がある。別の可能性としては、トレースデータバッファ内においてスペースが利用可能になるまで、または、デバイスのトレースデータを伝送するための容量が利用可能になるまで、デバイスをストールすることが考えられる。このアプローチの欠点は、デバイスのストール、またはそのタイミングの変更が、調査されている障害を隠してしまう、もしくは変化させる、あるいは、さらなる障害を引き起こすように、デバイスの動作に影響する可能性があるということである。
一態様から概観すると、本発明は、
データを処理するための装置であって、
データを生成するように構成されるデータソースと、
前記データソースに結合され、前記データソースから前記データを受信し、かつ、前記装置からトレースデータを出力するように構成されるトレース出力デバイスと、を備え、
前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、
前記トレース出力デバイスは、(i)前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、および(ii)前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、
前記トレース出力デバイスが前記データソースからの前記データを処理し、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答する装置を提供する。
この技術を用いて、データソースは、トレース出力デバイスに送信されるトレースデータに関連付けられる優先度レベルを選択することができ、トレース出力デバイスは、受信されたトレースデータを処理するためのトレース出力デバイスの能力を管理するために、この優先度レベルに応答できる。より具体的には、第1の優先度レベルを有するトレースデータは、トレースデータを処理する準備が完了している場合、およびトレース出力デバイスがトレースデータを処理する準備が完了しておらず、次いで、トレース出力デバイスがデータを処理する準備が完了するまで、受け入れをストールしてもよい場合に、トレース出力デバイスによって受け入れられてもよい。トレースデータの処理は、トレース出力デバイス内のトレースデータの格納のみを意味してもよい。このようにして、トレース出力デバイスがデータを処理する準備が完了するまで、トレースデータの受け入れがストールされるため、第1の優先度レベルのトレースデータは、失われない。第2の優先度レベルを有するトレース出力デバイスによって受信されたトレースデータは、データソースから受け入れられるが、トレース出力デバイスがそのトレースデータを処理できない場合には、破棄される。このようにして、さらなる処理の妨げとならないようにデータが受け入れられ、そのデータを処理することができない場合に、トレース出力デバイスによって破棄される。これらの異なる優先度レベルを使用して、重大なトレースデータを、トレース出力デバイスによって受け入れられることが実質的に保証されるように、第1の優先度レベルに関連付けることができ、一方で、より重大でないデータを、処理の妨げを作成することを回避するように、データソースから受け入れられ、トレース出力デバイスが、その時点においてそのトレースデータを処理する容量を有しない場合には、これは、さらに破棄されるように、第2の優先度レベルと関連付けることができる。
トレース出力デバイスは、装置からのトレースデータの出力以前に、トレースデータを格納するように構成されるデータバッファメモリを含んでもよい。このデータバッファメモリ内の格納スペースの可用性または非可用性を、異なる優先度レベルを有する受信されたトレースデータへ、トレース出力デバイスの応答を制御するために使用できる。第1の優先度レベルを有する受信されたトレースデータは、データバッファメモリが、そのトレースデータを格納するために十分な空き容量を有する場合に受け入れられ、データバッファメモリが、その時点でトレースデータを格納するために十分な容量を有しない場合にこのデータの受け入れのストールがトリガされる。
そのトレースデータを格納するために、データバッファメモリが十分な空き容量を有しない場合に、第2の優先度レベルを有するトレースデータに関して、トレース出力デバイスは、そのトレースデータを処理することはできず、従って、破棄される。
データを処理する能力は、さらに、データバッファ内の利用可能なスペースと、N+F(P)によって付与される値との比較を用いて判定されてもよく、この場合、Nは、バッファ内に格納されるデータのバイト単位のサイズであり、F(P)は、優先度レベルの関数である。
本技術の実施形態の1つの種類は、バスマスターであるデータソース、バススレーブであるトレース出力デバイス、およびデータソースをトレース出力デバイスに結合させるバス相互接続を使用する。この種類の配設は柔軟性があり、デザイナーが、システム内の実質的にどこにでもトレース出力デバイスを配置することを可能にし、かつ、バス相互接続を経由して接続される種々の異なるバスマスターからのそのトレース出力デバイスへのアクセスを提供する。
トレース出力デバイスとの通信は、トレース出力デバイスが、複数のメモリアドレスにマップされたメモリマップされたスレーブデバイスである場合に、簡略化してもよい。
トレース出力デバイスによって受信されたトレースデータに、異なる優先度レベルを関連付けるために、異なるメモリアドレスへの書き込みが使用されるように、複数のメモリアドレスを配設してもよい。このため、第1の優先度レベルのデータを受信するために、トレース出力デバイスにマップされる1つのメモリアドレスを使用してもよく、第2の優先度レベルのデータを受信するために、トレース出力デバイスにマップされる異なるメモリアドレスを使用してもよい。このように、データソースは、トレース出力デバイスにマップされるメモリ領域内にデータを書き込み、従って、そのデータに関連付けられる優先度レベルを動的に選択するためのメモリ位置を、(例えばソフトウェア制御によって)選択してもよい。
別のクラスの実施形態において、データソースは、メインプロセッサであってもよく、トレース出力デバイスは、そのメインプロセッサに結合されるコプロセッサであってもよい。こうした実施形態内において、メインプロセッサから、メインプロセッサの命令ストリーム内のコプロセッサ命令に応答して、トレース出力デバイスとして機能するコプロセッサへ、データを送信してもよい。コプロセッサ命令は、トレース出力デバイスとして機能するコプロセッサに伝送されているデータに関連付けられる優先度レベルを指定してもよい。
システムのユーザは、受け入れられるまで伝送をストールする、第1の優先度レベルを有するトレースデータの多すぎる書き込みがシステム内に存在するように、システムを構成してもよいことが可能である。こうした状況において、ストールの積み重なりが生じ、処理の全体的な前向きの進行が実質的に損なわれ、有用な診断またはデバッグ情報を得ることができなくなる。こうした状況に対処するためのメカニズムを提供するために、トレース出力デバイスは、トレース出力デバイスによって受信されたデータに関連付けられた優先度レベルを変更するために、オーバーライド信号に応答してもよい。オーバーライド信号は、このため、望ましくない様態でデータの処理がストールするのを回避することができるように、トレース出力デバイスによって受信されたデータに関連付けられた優先度レベルを効果的に低減するために使用されてもよい。
本発明の別の態様から概観すると、
データを処理するための装置であって、
データを生成するためのデータソース手段と、
前記データソース手段からの前記データを受信するため、および、前記装置からのトレースデータを出力するための、前記データソース手段に結合されるトレース出力手段と、を備え、
前記データソース手段は、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、
前記トレース出力手段は、(i)前記トレース出力手段が、前記データを処理する準備が完了しており、次いで、前記データソース手段から前記データを受け入れる場合、および(ii)前記トレース出力手段が、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソース手段からの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、
前記トレース出力手段が、前記データソース手段からの前記データを受け入れ、前記トレース出力デバイス手段が前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答する手段を提供する。
さらなる態様から概観し、本発明は、
データを処理するための方法であって、
データソースによって、データを生成するステップと、
前記データソースに結合されるトレース出力デバイスによって、前記データソースから前記データを受信するステップと、
前記装置からトレースデータを出力するステップと、を含み、
前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、
前記トレース出力デバイスは、(i)前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、および(ii)前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、
前記トレース出力デバイスが前記データソースから前記データを受け入れ、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答する方法を提供する。
本発明の上記および他の目的、特徴および利点は、添付の図面に関連して一読されるべき、例示的な実施形態の以下の詳細な説明から、明らかであろう。
トレース機能を有し、診断デバイスに結合されるシステム・オン・チップ集積回路を概略的に図示する図である。 トレース出力デバイスに送信されるデータに、優先度レベルを関連付けるために、データソース内で実行される処理を概略的に図示する、流れ図である。 異なる優先度レベルでデータを受信するトレース出力デバイス内で実行される処理を概略的に図示する、流れ図である。 トレース出力デバイスにマップされるメモリアドレスの異なる範囲が、異なる優先度レベルおよび異なる他の属性にどのように関連付けられるかを図示する、表である。 プロセッサが、トレース出力デバイスとして機能するコプロセッサに結合される、別の実施形態を概略的に図示する図である。
図1は、診断デバイス4にトレースデータを出力する、システム・オン・チップ集積回路2を示す。集積回路2は、プログラム命令を実行するプロセッサコア6、トレース出力デバイス8、さらなるバスマスター10、および2つのさらなるバススレーブ12、14を含む。プロセッサ6、トレース出力デバイス8、マスター10、およびスレーブ12、14は、全て、バス相互接続16を経由して接続される(これは、従来の共有バスとポイントツーポイント相互接続との間で異なっていてもよい)。プロセッサ6は、バスマスターであり、トレース出力デバイスは、バススレーブである。
トレース出力デバイス8は、システムのメモリアドレススペース内にマップされるメモリであり、トレース出力デバイス8に関連付けられたメモリアドレス範囲を有する。プロセッサ6またはバスマスター10(例えばDMAユニット)等のバスマスターは、送信先メモリアドレスへの書き込み動作を実行してもよい。その送信先メモリアドレスが、トレース出力デバイス8にマップされるメモリアドレス範囲内にある場合、その書き込みトランザクションは、トレース出力デバイス8へのバス相互接続16を通過する。バスを通る伝送を制御するために、(ARM Limitedによって設計されたAMBA相互接続と一致するプロトコル等の)バス相互接続16の伝送プロトコルが使用される。これらの伝送プロトコルは、スレーブデバイスが、そのデータを受け入れる準備が完了するまで、伝送を受け入れるために、または、データをバス上に保持する必要があるストール状況を示すために、この場合はトレース出力デバイス8である、スレーブデバイスの受信を許可する。ストールが生じる場合、バス相互接続16のいくつかまたは全てが、他のデバイスによる使用が利用不可能になることがあるため、集積回路2が処理を継続する全体的な能力が損なわれることがある。
トレース出力デバイス8は、トレース出力デバイス8書き込まれたデータが、(直接、または圧縮形態等に改変された)診断デバイス4に出力されるまで格納されてもよい、データバッファメモリ18を含む。診断デバイス4への出力のために利用可能な帯域幅は、小さくてもよく、従って、集積回路2の動作の期間を観測する場合に、大容量のデータを、データバッファメモリ18内でバッファする必要が生じることがある。
図2は、データをトレース出力デバイス8に送信するデータソース内で実施される処理を概略的に図示する、流れ図である。ステップ20において、送信されるトレースデータが存在するまで、処理は待機する。ステップ22において、トレースデータが第1の優先度レベルに関連付けられるかどうかが判定される。トレースデータが第1の優先度レベルに関連付けられる場合、処理は、トレースデータが、トレース出力デバイス8にマップされ、第1の優先度レベルに関連付けられた送信先メモリアドレスに書き込まれる、ステップ24に進む。ステップ22における判定が、トレースデータが第1の優先度レベルに関連付けられていないことである場合、処理は、ステップ26に進む。ステップ26において、トレースデータは、トレース出力デバイス8にマップされ、第2の優先度レベルに関連付けられた、送信先メモリアドレスに書き込まれる。
上記から、ソフトウェアの制御下で動作する(プロセッサ6等の)データソースが、送信されるトレースデータに関連付けられる優先度レベルを動的に選択してもよいことが理解されるであろう。これが集積回路2から診断デバイス4へ出力される可能性を高めるために、有意なトレースデータに、第1の優先度レベルを付与してもよい。より有意性が低いが、出力が可能となる場合に有用となると考えられるトレースデータを、第2の優先度レベルに関連付けてもよく、従って、そのトレースデータを処理(例えばバッファ)する能力が存在しない場合には、処理をストールせず、単に破棄するように、トレース出力デバイス8によって受け入れられる。
図3は、トレースデータを受信する際に、トレース出力デバイス8によって実行される処理を概略的に図示する、流れ図である。ステップ28において、トレース出力デバイス8は、バス相互接続16上でアサートされるデータを待機する。データがアサートされると、ステップ30は、そのデータに関連付けられた送信先メモリアドレスが、トレース出力デバイス8にマップされるかどうかを判定する。送信先メモリアドレスが、トレース出力デバイスにマップされない場合、そのデータは、スレーブデバイス12またはスレーブデバイス14等の別のスレーブデバイスへ方向付けられ、トレース出力デバイス8内の処理は、バス上のデータが無視されるステップ32に進む。
ステップ30における判定が、バス上のデータに関連付けられた送信先メモリアドレスがトレース出力デバイス8にマップされることである場合、ステップ34は、特定の送信先メモリアドレスが、第2の優先度レベルに関連付けられるかどうかを判定するように機能する。送信先メモリアドレスが、第2の優先度レベルに関連付けられる場合、処理は、ステップ36に進む。送信先メモリアドレスが、第2の優先度レベルに関連付けられていない場合、この実施形態の例では、第1の優先度レベルに関連付けられ、処理は、ステップ38に進む。
ステップ36において、トレース出力デバイスが、バスからトレースデータを受け入れ、データソースへ確認を返送する。ステップ40は、そのトレースデータを格納するために、データバッファメモリ18内に利用可能なスペースが存在するかどうかを判定する。トレースデータを格納するための利用可能なスペースが存在しない場合、ステップ42は、トレースデータを破棄し、処理が進行する。ステップ36においてバスからトレースデータを直ちに受け入れる効果とは、さらなる処理のためにバスが自由になるということである。さらに、集積回路2内の他の処理動作のタイミングは、トレース出力デバイス8が、第2の優先度レベルのトレースデータを処理するかどうかによって、影響されない。これは、障害を隠す、もしくは変化させる、あるいは、診断動作の実行を探索する際に新しい障害を生成するように、集積回路2の挙動を変化させる第2の優先度レベルのこのトレースデータに関連付けられた動作を停止するため、重要である。
ステップ40における判断が、トレースデータを格納するためにデータバッファメモリ18内でスペースが利用可能である場合、ステップ44は、装置からデータバッファメモリ18への以降の出力のために、トレースデータを格納する。
ステップ34における判断が、バス相互接続16上で受信されたデータに関連付けられた送信先メモリアドレスが、第2の優先度レベルに関連付けられないことである場合、処理は、第1の優先度レベルのトレースデータを取り扱うステップ38に進む。ステップ38は、トレースデータを格納するために、データバッファメモリ18内に利用可能なスペースが存在するかどうかを判定する。現在利用可能な領域が存在しない場合、処理は、バス相互接続16がストールされ、トレースデータは、そのトレースデータを格納するためのスペースがデータバッファメモリ18内で利用可能になる(例えばデータバッファメモリ18が、診断デバイス4に少なくとも部分的にドレインされる)まで、バス相互接続16上に保持される、ステップ46に進む。このように、重要なトレースデータを、第1の優先度レベルに関連付けることができ、また、常にデータバッファ格納18に書き込まれ、これによって、スペースがデータバッファ格納18内で一時的に利用不可能になっても、分析のためにキャプチャできることを保証してもよい。
ステップ38における判断が、バッファ領域が利用可能である場合、処理はステップ48に進み、ここで、トレースデータは、バス相互接続16から受け入れられ、確認信号が、発信元のバスマスターへ戻される。処理は、次いで、トレースデータがデータバッファメモリ18に格納される、ステップ44に進む。
バス相互接続16をストールすることにおけるステップ46のアクション、または少なくともその一部は、集積回路2の全体的な動作に侵害的であると考えられよう。過剰な数のこうしたストール動作が生じ、これらは、集積回路2の適正な動作を妨げるのに十分となり得る可能性がある。この理由のために、図1に図示されるように、オーバーライド信号がトレース出力デバイス8に送られる。アサートされた際のこのオーバーライド信号のアクションは、トレース出力デバイス8によって受信されたデータに関連付けられた優先度レベルを変化させることである。このため、このオーバーライド信号がアサートされる場合、その関連付けられた送信先メモリアドレスに関係なく、いかなるストールを生じさせることなしに受け入れられ、例えば、その時点でデータを処理する、例えば格納するのに十分な能力がない場合には、破棄されるように、トレース出力デバイス8によって受信された全てのデータを、第2の優先度レベルに関連付けることができる。
さらに、処理(例えばデータバッファ内の格納)のためにデータを受け入れるべきかどうかの判定は、データバッファの空き容量がN+F(P)以上であるかどうかを比較することで判定してもよいことも可能であり、ここで、Nは、バイト単位の、格納されるデータサイズであり、F(P)は、データの優先度レベルの単調に増加する関数である(F(P)は、Pが最も高い優先度である場合に、ゼロと等しくなってもよい)。
図4は、トレース出力デバイス8にマップされてもよいメモリアドレス範囲を図示する表である。トレース出力デバイス8は、それに関連付けられた基準アドレスを有する。図4は、そのトレース出力デバイス8に関連付けられたメモリアドレス範囲を共に定義する、その基準アドレスからのオフセットを示す。説明されるように、これらのオフセットの第1のセットは、第1の優先度レベルに関連付けられたメモリアドレスを提供する。この第1の優先度レベルは、トレース出力デバイス8から出力されるこれらのメモリアドレスに書き込まれたそのトレースデータを保証するものと考えられる、つまり、トレース出力デバイス8は、そのデータが、最終的には、トレース出力デバイスから診断デバイス4へ出力されるように、そのデータを受け入れる、またはそのデータを受け入れるまでバスをストールするということである。
第2の範囲のオフセットは、これらのメモリアドレスに書き込まれたトレースデータが、第2の優先度レベルを有するものとして考慮されるように、第2の優先度レベルを提供するトレース出力デバイス8に関連付けられたメモリアドレス範囲を定義する。この第2の優先度レベルでトレース出力デバイス8に書き込まれたトレースデータは、集積回路2の動作の全体的なタイミングを変化させないように、トレース出力デバイス8によってほぼ必ず、直ちに受け入れられるため、この第2の優先度レベルは、集積回路2の動作に対して、不変のタイミングを提供するものと考えることができる。
第1の優先度レベルおよび第2の優先度レベルに関連付けられたメモリアドレスのこれらの範囲内において、他の特性を、これらのアドレスに書き込まれたトレースデータとリンクさせるように提供されるアドレスのさらなる細分化が存在することが理解されよう。この実施形態では、トレース出力デバイス8にマップされるメモリアドレス範囲内にそのデータが書き込まれる、特定のメモリアドレスに応じて、受信されたデータを任意選択的にマークし、任意選択的にタイムスタンプしてもよい。
図5は、本技術を使用する別の実施形態を概略的に図示する図である。この実施形態において、システム・オン・チップ集積回路50は、コプロセッサ54に結合されるプロセッサ52が提供される。コプロセッサ54は、トレース出力デバイスとして機能し、データバッファメモリ56を含む。コプロセッサ54は、トレースデータを診断デバイス58に送信する。
プロセッサ52の命令ストリーム内のARM MCR命令等のコプロセッサ命令は、コプロセッサ54にトレースデータを送信するために実行される場合に機能する。このコプロセッサ命令のエンコーディングは、コプロセッサ54に伝送されたデータが、第1の優先度レベルまたは第2の優先度レベルのいずれを有するかを示す。伝送されたデータが第1の優先度レベルを有し、コプロセッサ54が、その時点において、データを受け入れることができない場合、例えばデータバッファメモリ56がいっぱいである場合、コプロセッサ54は、コプロセッサ54がそのデータを受け入れる準備が完了するまで、伝送されているデータがコプロセッサ54へのアサートを継続する必要があることを示す、プロセッサ54に、ストール信号を発行する。データが伝送されていることを示すMCR命令のエンコーディングは、そのデータを直ちに受け入れるために、および、その時点でデータバッファメモリ56内に十分な格納スペースが存在しない場合に、単にデータを破棄するために、第2の優先度レベル制御コプロセッサ54を有する。
コプロセッサ命令の命令エンコーディングは、第1の優先度レベルを示す「0」のコプロセッサ送信先レジスタ、および第2の優先度レベルを示す「1」のコプロセッサ送信先レジスタを有する、ARM MCR命令であってもよい。プロセッサ52から伝送されるトレースデータは、プロセッサ52の汎用レジスタバンク内の汎用レジスタ等の、プロセッサ52のソースレジスタ内に格納されてもよい。
上記において、第1の優先度レベルおよび第2の優先度レベルについて説明した。本技術は、2つの優先度レベルのみを有する実施形態に制限されないことが理解されよう。一実施形態として、3つの優先度レベルを提供することができる。第1の優先度レベルは、データが直ちに受け入れられる、またはトレース出力デバイスがそのデータを処理する準備が完了するまで、受け入れがストールされる、以前に記載された第1の優先度レベルと同様になる。第2の優先度レベルは、データが常に受け入れられるが、そのデータを格納するために、データバッファメモリ内に十分なスペースがない場合に破棄されるものとしてもよい。第3の優先度レベルは、データが常に受け入れられるが、空いているデータバッファメモリ内に、閾値量より大きい容量が存在しない限り、破棄されるものとなる。このため、データバッファメモリが比較的空いており、それによって、第2の優先度レベルまたは第1の優先度レベルのより高い優先度データのために、データバッファメモリ内に空きスペースを空けておく場合に、第3の優先度レベルのこのトレースデータは、データバッファメモリ内に格納されるにすぎない。
データソースがDMAエンジンである場合、トレース出力デバイスは、トレース出力デバイスに送信されているデータを抑制するために、DMAエンジンと相互作用することができる。バスをストールすることによって、DMA伝送をストールすることができるが、トレース出力デバイスがトレースバッファを送信できるよりもずっと高速に、DMAはトレース出力デバイスにデータを伝送できるため、長いDMA伝送(例えば1000バイト)によって、バスのほとんどの時間をストールさせる可能性が高い。DMAデータがいっぱいであるときに、トレース出力デバイスがDMAデータを破棄する場合、トレース出力デバイスは、DMAが送信するデータのほとんどを破棄する可能性が高い。低い優先度データを送信するために長い間、バスをストールすることによって、プログラムの挙動および/またはより高い優先度データを送信する能力に深刻な影響を与え、大量のデータの破棄は、残りのデータが役に立たないことになる可能性があるため、この効果は、DMAエンジンが大量の低い優先度データを送信するために使用されている場合には、特に望ましくない。
この問題に対処するために、データがトレース出力デバイスに送信されるレートを制限するためのメカニズムが提供される。
1)レート制限(rate−limiting)メカニズムは、DMAのデータのソースに存在してもよい。例えば、DMAが、遅い周辺機器からバッファメモリへとデータをコピーする場合、問題は生じない。
2)レート制限メカニズムを、DMAエンジンに追加することもできる。例えば、DMAエンジンは、各チャネル上の伝送の間のサイクルをカウントするカウンタを有することができ、カウンタがいくつかの閾値に達する場合にのみデータを送信する、または「水漏れ(leaky)バケツ」メカニズムを使用することができる(つまり、データが到達すると、「バケツ」すなわちバッファに格納される。「バケツ」がいっぱいの場合には、新たに到達するデータは破棄される。一定のレートで、「バケツ」からデータが取り出される。)
3)レート制限メカニズムは、上記の技術上に構築され、トレース出力デバイスからDMAへ戻るフィードバックメカニズムを有する。
公知のDMAエンジンは、周辺機器が、トランザクション(読み込みまたは書き込み)を受け入れる準備を完了しているかどうかを示すことができる、ハンドシェイクラインを提供する。トレース出力デバイスは、以下のように、DMAエンジンからより多くのデータをリクエストするために、これらのハンドシェイクラインを使用できる。
各チャネルにおいて、
Pを、チャネルの優先度とする。
Nを、トレースデータを格納するために必要なバイト数とする。
N+g(P)バイトは、トレース出力デバイスのバッファにおいて利用可能であり、そのチャネル上には未処理のリクエストは存在しない。
トレース出力デバイスは、そのチャネル上のデータをリクエストするためのハンドシェイクラインを使用する。
トレース出力デバイスは、未処理のリクエストが存在することを示す、そのチャネル上のフラグを設定する。
DMAエンジンは、そのチャネル上のデータを送信することで、応答する。
データがいくつかのチャネル上に到達すると、そのデータを受け入れるか破棄するかが判定され、そのチャネルの未処理のリクエストフラグがクリアされる。データがストールされる場合、データが最終的に受け入れられるまで、フラグはクリアされない(フラグをクリアにすることにより、トレース出力デバイスは、バッファ内に十分なスペースが存在する場合に、別のリクエストをトリガすることができる)。
レイテンシーは、トレース出力デバイスが現在のデータ用のスペースを有してもよいが、データがDMAから到達するまでに、十分な領域が存在しない場合があることを意味する。この段階において、トレース出力デバイスは、データをストールまたは破棄する。これが起こる機会を低下させるために、ハンドシェイクラインを使用してデータをリクエストするための閾値は、データを受け入れるための閾値よりも高くする必要がある。G(P)>F(P)とさせるということは、データがハンドシェイクラインを使用してリクエストされた場合に、受信された際に直ちに受け入れられる確率が高い(より高い)ことを意味する。「G(P)」と「F(P)」との間の差は、明らかに、DMAからのデータのリクエストとリクエストされたデータの到着との間のレーテンシーに依存しており、さらに、一方で他のソースから受信できるデータ量にも依存する。
待ち時間はさらに、トレース出力デバイスが、DMAエンジンへ複数のリクエストを行う可能性があることを意味する。「未処理のリクエストフラグ」は、これが起こるのを防止する。
このレイテンシーの問題に対処する別の方法は、チャネルからのデータのリクエストには、2つの副次的効果伴うということである。
1)リクエストされたデータのためにバッファ内にスペースが予約される。
2)「未処理のリクエストフラグ」が設定される場合、データは、(その領域に既に予約されたスペースがあるため)無条件に受け入れられる。これの変化形は、優先度が「未処理のリクエストフラグ」に依存する、すなわち、未処理のトランザクションがチャネルの優先度を上げると言える。
データソースからデータをリクエストするトレース出力デバイスの技術は、単独で、または、本明細書に記載の他の技術と組み合わせて使用してもよい。
本発明の例示的な実施形態について、添付の図面を参照して、本明細書中に詳細に説明したが、本発明は、これらの厳密な実施形態には制限されず、添付の特許請求の範囲に記載されているように、本発明の範囲および精神から逸脱せずに、当業者によって、本発明に種々の変更および修正を行うことができるということを理解されたい。
2 集積回路
4 診断デバイス
6 トレースデータソース
8 トレース出力デバイス
10 バスマスター
12 スレーブ
14 スレーブ
16 バス相互接続
18 データバッファメモリ

Claims (19)

  1. データを処理する装置であって、
    データを生成するように構成されるデータソースと、
    前記データソースに結合され、前記データソースから前記データを受信し、かつ、前記装置からトレースデータを出力するように構成されるトレース出力デバイスと、を備え、
    前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、
    前記トレース出力デバイスは、(i)前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、および(ii)前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、
    前記トレース出力デバイスは、前記データソースから前記データを受け入れ、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答し、
    前記トレース出力デバイスは、前記装置からの前記データの出力の前に、前記データを格納するように構成されたデータバッファメモリを備え、
    (i)前記データバッファメモリが、N+F(P)以上の空き容量を有する場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しており、前記データバッファメモリが、N+F(P)未満の空き容量を有している場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しておらず、Nは、前記データを格納するために必要なバイト数であり、F(P)は、Pの関数であり、Pは、前記データの優先度レベルである、装置。
  2. 前記データが、前記データソースから前記トレース出力デバイスに送信される際に、前記トレース出力デバイスが、前記データを処理する準備が完了しているかどうかに関わらず、前記第1の優先度レベルに関連付けられたデータは、前記装置から出力される、請求項1に記載の装置。
  3. 前記トレース出力デバイスが、前記データを処理することができるかどうかに従って、前記装置の処理動作のタイミングが変化しないように、前記トレース出力デバイスが、前記データを処理できるかどうかに関わらず、前記第2の優先度レベルに関連付けられたデータは、前記データソースから受け入れられる、請求項1に記載の装置。
  4. (i)前記データバッファメモリが、前記データを格納するために十分な空き容量を有する場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しており、(ii)前記データバッファメモリが、前記データを格納するために十分な空き容量を有していない場合に、前記トレース出力デバイスは、前記データを処理する準備が完了していない、請求項に記載の装置。
  5. F(P)は、単調に増加する関数である、請求項に記載の装置。
  6. 前記データの前記優先度レベルが最も高い優先度を有する場合に、F(P)=0である、請求項に記載の装置。
  7. 前記データバッファメモリが、前記データを格納するために十分な空き容量を有さない場合に、前記トレース出力デバイスは、前記データを処理することができない、請求項に記載の装置。
  8. 前記データソースはバスマスターであり、前記トレース出力デバイスはバススレーブであり、前記データソースおよび前記トレース出力デバイスは、バス相互接続によって結合される、請求項1に記載の装置。
  9. 前記トレース出力デバイスは、複数のメモリアドレスにマップされた、メモリマップされたスレーブデバイスである、請求項に記載の装置。
  10. 前記データソースは、異なる優先度レベルを前記データに関連付けるように、前記トレース出力デバイスにマップされる異なるメモリアドレスに、前記データを書き込む、請求項に記載の装置。
  11. 前記データソースは、メインプロセッサであり、前記トレース出力デバイスは、前記メインプロセッサに結合されるコプロセッサである、請求項1に記載の装置。
  12. 前記メインプロセッサの命令ストリーム内のコプロセッサ命令に応答して、前記データは、前記メインプロセッサから前記コプロセッサに送信される、請求項11に記載の装置。
  13. 前記コプロセッサ命令は、前記データに関連付けられる優先度レベルを指定する、請求項12に記載の装置。
  14. 前記データソースは、前記データに関連付けられた優先度レベルを制御するコンピュータプログラム命令を実行する、請求項1に記載の装置。
  15. 前記トレース出力デバイスは、前記トレース出力デバイスによって受信されたデータに関連付けられた優先度レベルを変更するために、オーバーライド信号に応答する、請求項1に記載の装置。
  16. 前記トレース出力デバイスは、前記データソースの優先度に従って、前記データソースからデータをリクエストするように構成される、請求項1に記載の装置。
  17. 前記データソースの前記優先度は、前記データの前記優先度レベルと同じである、請求項16に記載の装置。
  18. データを処理する装置であって、
    データを生成するためのデータソース手段と、
    前記データソース手段からの前記データを受信するため、および前記装置からのトレースデータを出力するための、前記データソース手段に結合されるトレース出力手段と、を備え、
    前記データソース手段は、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、
    前記トレース出力手段は、(i)前記トレース出力手段が、前記データを処理する準備が完了しており、次いで、前記データソース手段から前記データを受け入れる場合、および(ii)前記トレース出力手段が、前記データを処理する準備が完了しておらず、次いで、前記トレース出力手段が前記データを処理する準備が完了するまで、前記データソース手段からの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、
    前記トレース出力手段が、前記データソース手段から前記データを受け入れ、前記トレース出力手段が前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答し、
    前記トレース出力手段は、前記装置からの前記データの出力の前に、前記データを格納するように構成されたデータバッファリング手段を備え、
    (i)前記データバッファリング手段が、N+F(P)以上の空き容量を有する場合に、前記トレース出力手段は、前記データを処理する準備が完了しており、前記データバッファリング手段が、N+F(P)未満の空き容量を有している場合に、前記トレース出力手段は、前記データを処理する準備が完了しておらず、Nは、前記データを格納するために必要なバイト数であり、F(P)は、Pの関数であり、Pは、前記データの優先度レベルである、装置。
  19. データを処理する方法であって、
    データソースによって、データを生成するステップと、
    前記データソースに結合されるトレース出力デバイスによって、前記データソースから前記データを受信するステップと、
    トレースデータを出力するステップと、を含み、
    前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、
    前記トレース出力デバイスは、(i)前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、および(ii)前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、
    前記トレース出力デバイスは、前記データソースから前記データを受け入れ、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答するデータを処理し、
    前記トレース出力デバイスは、前記データの出力の前に、前記データを格納するように構成されたデータバッファメモリを備え、
    (i)前記データバッファメモリが、N+F(P)以上の空き容量を有する場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しており、前記データバッファメモリが、N+F(P)未満の空き容量を有している場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しておらず、Nは、前記データを格納するために必要なバイト数であり、F(P)は、Pの関数であり、Pは、前記データの優先度レベルである、方法。
JP2011020604A 2010-02-17 2011-02-02 トレースデータの優先度の選択 Active JP5591729B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1002728.2A GB2477936B (en) 2010-02-17 2010-02-17 Trace data priority selection
GB1002728.2 2010-02-17

Publications (2)

Publication Number Publication Date
JP2011170848A JP2011170848A (ja) 2011-09-01
JP5591729B2 true JP5591729B2 (ja) 2014-09-17

Family

ID=42113983

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011020604A Active JP5591729B2 (ja) 2010-02-17 2011-02-02 トレースデータの優先度の選択

Country Status (4)

Country Link
US (1) US8887001B2 (ja)
JP (1) JP5591729B2 (ja)
CN (1) CN102193856B (ja)
GB (1) GB2477936B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719641B2 (en) * 2011-08-25 2014-05-06 International Business Machines Corporation Priority buffering for trace data in trace queue
US8838861B2 (en) * 2012-05-09 2014-09-16 Qualcomm Incorporated Methods and apparatuses for trace multicast across a bus structure, and related systems
GB2501333B (en) * 2012-07-09 2014-03-05 Ultrasoc Technologies Ltd Debug architecture
US9519564B1 (en) * 2012-09-28 2016-12-13 EMC IP Holding Company LLC Trace saving intervals
US9231595B2 (en) 2013-06-12 2016-01-05 International Business Machines Corporation Filtering event log entries
US9639447B2 (en) * 2013-11-05 2017-05-02 Texas Instruments Incorporated Trace data export to remote memory using remotely generated reads
US9971716B2 (en) * 2013-12-20 2018-05-15 Telefonaktiebolaget Lm Ericsson (Publ) Method, system and architecture for bus transaction logger
EP3179371A1 (en) * 2015-12-08 2017-06-14 Gilwa GmbH embedded systems Method and device for non-intrusively collecting function trace data
US11126537B2 (en) * 2019-05-02 2021-09-21 Microsoft Technology Licensing, Llc Coprocessor-based logging for time travel debugging
US20230267084A1 (en) * 2022-02-22 2023-08-24 Texas Instruments Incorporated Tracing for High Bandwidth Masters in SoC

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02220145A (ja) * 1989-02-22 1990-09-03 Nec Corp プログラムトレース方式
JPH06139105A (ja) * 1992-10-28 1994-05-20 Fuji Xerox Co Ltd ソフトウェアのトレース装置
JPH0883200A (ja) * 1994-09-14 1996-03-26 Toshiba Corp プログラマブルコントローラ
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
GB2413667B (en) * 2002-06-07 2006-09-27 Advanced Risc Mach Ltd Generation of trace signals within a data processing apparatus
GB2389931B (en) * 2002-06-07 2005-12-14 Advanced Risc Mach Ltd Generation of trace elements within a data processing apparatus
CN100442244C (zh) * 2004-05-12 2008-12-10 Nxp股份有限公司 具有跟踪协处理器的数据处理设备、系统和方法
WO2005124556A2 (en) 2004-06-14 2005-12-29 Koninklijke Philips Electronics N.V. Interface device for debugging and/or tracing a computer system comprising one or multiple masters and one or multiple slaves working together.
JP2007141072A (ja) * 2005-11-21 2007-06-07 Sharp Corp トレース情報出力装置
EP1999588A1 (en) 2006-03-09 2008-12-10 ARM Limited An apparatus, method and computer program product for generating trace data
US7653848B2 (en) * 2006-07-14 2010-01-26 International Business Machines Corporation Selectively engaging optional data reduction mechanisms for capturing trace data
US20080016408A1 (en) * 2006-07-14 2008-01-17 Abernathy Christopher M System and Method for Streaming High Frequency Trace Data Off-Chip
US7558987B2 (en) * 2006-08-29 2009-07-07 Texas Instruments Incorporated Token-based trace system

Also Published As

Publication number Publication date
CN102193856A (zh) 2011-09-21
US8887001B2 (en) 2014-11-11
JP2011170848A (ja) 2011-09-01
CN102193856B (zh) 2016-01-13
GB201002728D0 (en) 2010-04-07
GB2477936B (en) 2016-02-10
US20110202801A1 (en) 2011-08-18
GB2477936A (en) 2011-08-24

Similar Documents

Publication Publication Date Title
JP5591729B2 (ja) トレースデータの優先度の選択
US11755203B2 (en) Multicore shared cache operation engine
JP4589384B2 (ja) 高速メモリモジュール
US11403247B2 (en) Methods and apparatus for network interface fabric send/receive operations
US9405725B2 (en) Writing message to controller memory space
JPH09506727A (ja) 大規模並列処理システムのためのメッセージ機構
JP2021530813A (ja) 専用低レイテンシリンクを使用した複数のハードウェアアクセラレータのための統合されたアドレス空間
WO2016189294A1 (en) Single-chip multi-processor communication
CN115934625B (zh) 一种用于远程直接内存访问的敲门铃方法、设备及介质
US8341360B2 (en) Method and apparatus for memory write performance optimization in architectures with out-of-order read/request-for-ownership response
US20230359396A1 (en) Systems and methods for processing commands for storage devices
JP2008097646A (ja) データ処理装置およびトレース信号発生方法
US7093037B2 (en) Generalized queue and specialized register configuration for coordinating communications between tightly coupled processors
US6988160B2 (en) Method and apparatus for efficient messaging between memories across a PCI bus
US10318424B2 (en) Information processing device
KR20050080704A (ko) 프로세서간 데이터 전송 장치 및 방법
WO2007039933A1 (ja) 演算処理装置
JP5772132B2 (ja) データ転送装置、データ転送方法および情報処理装置
US7930459B2 (en) Coherent input output device
US11960416B2 (en) Multichannel memory arbitration and interleaving scheme
JP7363344B2 (ja) メモリ制御装置、および制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140402

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140730

R150 Certificate of patent or registration of utility model

Ref document number: 5591729

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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