データを処理する装置であって、データを生成するように構成されるデータソースと、前記データソースに結合され、前記データソースから前記データを受信し、かつ、前記装置からトレースデータを出力するように構成されるトレース出力デバイスと、を備え、前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、前記トレース出力デバイスは、i前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、およびii前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、前記トレース出力デバイスは、前記データソースから前記データを受け入れ、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答する装置。前記データが、前記データソースから前記トレース出力デバイスに送信される際に、前記トレース出力デバイスが、前記データを処理する準備が完了しているかどうかに関わらず、前記第1の優先度レベルに関連付けられたデータは、前記装置から出力される、請求項1に記載の装置。前記トレース出力デバイスが、前記データを処理することができるかどうかに従って、前記装置の処理動作のタイミングが変化しないように、前記トレース出力デバイスが、前記データを処理できるかどうかに関わらず、前記第2の優先度レベルに関連付けられたデータは、前記データソースから受け入れられる、請求項1に記載の装置。前記トレース出力デバイスは、前記装置からの前記データの出力の前に、前記データを格納するように構成されたデータバッファメモリを備える、請求項1に記載の装置。i前記データバッファメモリが、前記データを格納するために十分な空き容量を有する場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しており、ii前記データバッファメモリが、前記データを格納するために十分な空き容量を有していない場合に、前記トレース出力デバイスは、前記データを処理する準備が完了していない、請求項4に記載の装置。i前記データバッファメモリが、NFP以上の空き容量を有する場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しており、前記データバッファメモリが、NFP未満の空き容量を有している場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しておらず、Nは、前記データを格納するために必要なバイト数であり、FPは、Pの関数であり、Pは、前記データの優先度レベルである、請求項4に記載の装置。FPは、単調に増加する関数である、請求項6に記載の装置。前記データの前記優先度レベルが最も高い優先度を有する場合に、FP=0である、請求項6に記載の装置。前記データバッファメモリが、前記データを格納するために十分な空き容量を有さない場合に、前記トレース出力デバイスは、前記データを処理することができない、請求項4に記載の装置。前記データソースはバスマスターであり、前記トレース出力デバイスはバススレーブであり、前記データソースおよび前記トレース出力デバイスは、バス相互接続によって結合される、請求項1に記載の装置。前記トレース出力デバイスは、複数のメモリアドレスにマップされた、メモリマップされたスレーブデバイスである、請求項10に記載の装置。前記データソースは、異なる優先度レベルを前記データに関連付けるように、前記トレース出力デバイスにマップされる異なるメモリアドレスに、前記データを書き込む、請求項11に記載の装置。前記データソースは、メインプロセッサであり、前記トレース出力デバイスは、前記メインプロセッサに結合されるコプロセッサである、請求項1に記載の装置。前記メインプロセッサの命令ストリーム内のコプロセッサ命令に応答して、前記データは、前記メインプロセッサから前記コプロセッサに送信される、請求項13に記載の装置。前記コプロセッサ命令は、前記データに関連付けられる優先度レベルを指定する、請求項14に記載の装置。前記データソースは、前記データに関連付けられた優先度レベルを制御するコンピュータプログラム命令を実行する、請求項1に記載の装置。前記トレース出力デバイスは、前記トレース出力デバイスによって受信されたデータに関連付けられた優先度レベルを変更するために、オーバーライド信号に応答する、請求項1に記載の装置。前記トレース出力デバイスは、前記データソースの優先度に従って、前記データソースからデータをリクエストするように構成される、請求項1に記載の装置。前記データソースの前記優先度は、前記データの前記優先度レベルと同じである、請求項18に記載の装置。データを処理する装置であって、データを生成するためのデータソース手段と、前記データソース手段からの前記データを受信するため、および前記装置からのトレースデータを出力するための、前記データソース手段に結合されるトレース出力手段と、を備え、前記データソース手段は、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、前記トレース出力手段は、i前記トレース出力手段が、前記データを処理する準備が完了しており、次いで、前記データソース手段から前記データを受け入れる場合、およびii前記トレース出力手段が、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソース手段からの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、前記トレース出力手段が、前記データソース手段から前記データを受け入れ、前記トレース出力手段が前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答する装置。データを処理する方法であって、データソースによって、データを生成するステップと、前記データソースに結合されるトレース出力デバイスによって、前記データソースから前記データを受信するステップと、前記装置からトレースデータを出力するステップと、を含み、前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、前記トレース出力デバイスは、i前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、およびii前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、前記トレース出力デバイスは、前記データソースから前記データを受け入れ、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答するデータを処理するための方法。こうしたデータ処理システム内で発生する1つの問題として、トレースデータの容量が大きすぎる可能性があるために、キャプチャする際および出力前に、デバイス上のトレースデータをバッファするためのリソースが不十分である、および/または、デバイスからトレースデータを送信するための帯域幅が不十分である、ということが挙げられる。これに対処する1つの方法に、バッファまたはデバイスから伝送することが不可能なトレースデータの破棄がある。しかしながら、これには、破棄されたトレースデータ内に重大な診断情報が存在する場合があるという欠点がある。別の可能性としては、トレースデータバッファ内においてスペースが利用可能になるまで、または、デバイスのトレースデータを伝送するための容量が利用可能になるまで、デバイスをストールすることが考えられる。このアプローチの欠点は、デバイスのストール、またはそのタイミングの変更が、調査されている障害を隠してしまう、もしくは変化させる、あるいは、さらなる障害を引き起こすように、デバイスの動作に影響する可能性があるということである。一態様から概観すると、本発明は、データを処理するための装置であって、データを生成するように構成されるデータソースと、前記データソースに結合され、前記データソースから前記データを受信し、かつ、前記装置からトレースデータを出力するように構成されるトレース出力デバイスと、を備え、前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの1つを動的に選択し、前記トレース出力デバイスは、i前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、およびii前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの1つに対する第1の優先度レベルを有する、受信されたデータに応答し、前記トレース出力デバイスが前記データソースからの前記データを処理し、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第2の優先度レベルを有する受信されたデータに応答する装置を提供する。この技術を用いて、データソースは、トレース出力デバイスに送信されるトレースデータに関連付けられる優先度レベルを選択することができ、トレース出力デバイスは、受信されたトレースデータを処理するためのトレース出力デバイスの能力を管理するために、この優先度レベルに応答できる。より具体的には、第1の優先度レベルを有するトレースデータは、トレースデータを処理する準備が完了している場合、およびトレース出力デバイスがトレースデータを処理する準備が完了しておらず、次いで、トレース出力デバイスがデータを処理する準備が完了するまで、受け入れをストールしてもよい場合に、トレース出力デバイスによって受け入れられてもよい。トレースデータの処理は、トレース出力デバイス内のトレースデータの格納のみを意味してもよい。このようにして、トレース出力デバイスがデータを処理する準備が完了するまで、トレースデータの受け入れがストールされるため、第1の優先度レベルのトレースデータは、失われない。第2の優先度レベルを有するトレース出力デバイスによって受信されたトレースデータは、データソースから受け入れられるが、トレース出力デバイスがそのトレースデータを処理できない場合には、破棄される。このようにして、さらなる処理の妨げとならないようにデータが受け入れられ、そのデータを処理することができない場合に、トレース出力デバイスによって破棄される。これらの異なる優先度レベルを使用して、重大なトレースデータを、トレース出力デバイスによって受け入れられることが実質的に保証されるように、第1の優先度レベルに関連付けることができ、一方で、より重大でないデータを、処理の妨げを作成することを回避するように、データソースから受け入れられ、トレース出力デバイスが、その時点においてそのトレースデータを処理する容量を有しない場合には、これは、さらに破棄されるように、第2の優先度レベルと関連付けることができる。トレース出力デバイスは、装置からのトレースデータの出力以前に、トレースデータを格納するように構成されるデータバッファメモリを含んでもよい。このデータバッファメモリ内の格納スペースの可用性または非可用性を、異なる優先度レベルを有する受信されたトレースデータへ、トレース出力デバイスの応答を制御するために使用できる。第1の優先度レベルを有する受信されたトレースデータは、データバッファメモリが、そのトレースデータを格納するために十分な空き容量を有する場合に受け入れられ、データバッファメモリが、その時点でトレースデータを格納するために十分な容量を有しない場合にこのデータの受け入れのストールがトリガされる。そのトレースデータを格納するために、データバッファメモリが十分な空き容量を有しない場合に、第2の優先度レベルを有するトレースデータに関して、トレース出力デバイスは、そのトレースデータを処理することはできず、従って、破棄される。データを処理する能力は、さらに、データバッファ内の利用可能なスペースと、NFPによって付与される値との比較を用いて判定されてもよく、この場合、Nは、バッファ内に格納されるデータのバイト単位のサイズであり、FPは、優先度レベルの関数である。本技術の実施形態の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を通過する。バスを通る伝送を制御するために、ARMLimitedによって設計された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の優先度レベルに関連付けることができる。さらに、処理例えばデータバッファ内の格納のためにデータを受け入れるべきかどうかの判定は、データバッファの空き容量がNFP以上であるかどうかを比較することで判定してもよいことも可能であり、ここで、Nは、バイト単位の、格納されるデータサイズであり、FPは、データの優先度レベルの単調に増加する関数であるFPは、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の命令ストリーム内のARMMCR命令等のコプロセッサ命令は、コプロセッサ54にトレースデータを送信するために実行される場合に機能する。このコプロセッサ命令のエンコーディングは、コプロセッサ54に伝送されたデータが、第1の優先度レベルまたは第2の優先度レベルのいずれを有するかを示す。伝送されたデータが第1の優先度レベルを有し、コプロセッサ54が、その時点において、データを受け入れることができない場合、例えばデータバッファメモリ56がいっぱいである場合、コプロセッサ54は、コプロセッサ54がそのデータを受け入れる準備が完了するまで、伝送されているデータがコプロセッサ54へのアサートを継続する必要があることを示す、プロセッサ54に、ストール信号を発行する。データが伝送されていることを示すMCR命令のエンコーディングは、そのデータを直ちに受け入れるために、および、その時点でデータバッファメモリ56内に十分な格納スペースが存在しない場合に、単にデータを破棄するために、第2の優先度レベル制御コプロセッサ54を有する。コプロセッサ命令の命令エンコーディングは、第1の優先度レベルを示す0のコプロセッサ送信先レジスタ、および第2の優先度レベルを示す1のコプロセッサ送信先レジスタを有する、ARMMCR命令であってもよい。プロセッサ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を、トレースデータを格納するために必要なバイト数とする。NgPバイトは、トレース出力デバイスのバッファにおいて利用可能であり、そのチャネル上には未処理のリクエストは存在しない。トレース出力デバイスは、そのチャネル上のデータをリクエストするためのハンドシェイクラインを使用する。トレース出力デバイスは、未処理のリクエストが存在することを示す、そのチャネル上のフラグを設定する。DMAエンジンは、そのチャネル上のデータを送信することで、応答する。データがいくつかのチャネル上に到達すると、そのデータを受け入れるか破棄するかが判定され、そのチャネルの未処理のリクエストフラグがクリアされる。データがストールされる場合、データが最終的に受け入れられるまで、フラグはクリアされないフラグをクリアにすることにより、トレース出力デバイスは、バッファ内に十分なスペースが存在する場合に、別のリクエストをトリガすることができる。レイテンシーは、トレース出力デバイスが現在のデータ用のスペースを有してもよいが、データがDMAから到達するまでに、十分な領域が存在しない場合があることを意味する。この段階において、トレース出力デバイスは、データをストールまたは破棄する。これが起こる機会を低下させるために、ハンドシェイクラインを使用してデータをリクエストするための閾値は、データを受け入れるための閾値よりも高くする必要がある。GP>FPとさせるということは、データがハンドシェイクラインを使用してリクエストされた場合に、受信された際に直ちに受け入れられる確率が高いより高いことを意味する。GPとFPとの間の差は、明らかに、DMAからのデータのリクエストとリクエストされたデータの到着との間のレーテンシーに依存しており、さらに、一方で他のソースから受信できるデータ量にも依存する。待ち時間はさらに、トレース出力デバイスが、DMAエンジンへ複数のリクエストを行う可能性があることを意味する。未処理のリクエストフラグは、これが起こるのを防止する。このレイテンシーの問題に対処する別の方法は、チャネルからのデータのリクエストには、2つの副次的効果伴うということである。1リクエストされたデータのためにバッファ内にスペースが予約される。2未処理のリクエストフラグが設定される場合、データは、その領域に既に予約されたスペースがあるため無条件に受け入れられる。これの変化形は、優先度が未処理のリクエストフラグに依存する、すなわち、未処理のトランザクションがチャネルの優先度を上げると言える。データソースからデータをリクエストするトレース出力デバイスの技術は、単独で、または、本明細書に記載の他の技術と組み合わせて使用してもよい。本発明の例示的な実施形態について、添付の図面を参照して、本明細書中に詳細に説明したが、本発明は、これらの厳密な実施形態には制限されず、添付の特許請求の範囲に記載されているように、本発明の範囲および精神から逸脱せずに、当業者によって、本発明に種々の変更および修正を行うことができるということを理解されたい。