(57)【特許請求の範囲】
【請求項１】
データを処理する装置であって、
データを生成するように構成されるデータソースと、
前記データソースに結合され、前記データソースから前記データを受信し、かつ、前記装置からトレースデータを出力するように構成されるトレース出力デバイスと、を備え、
前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの１つを動的に選択し、
前記トレース出力デバイスは、（ｉ）前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、および（ｉｉ）前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの１つに対する第１の優先度レベルを有する、受信されたデータに応答し、
前記トレース出力デバイスは、前記データソースから前記データを受け入れ、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第２の優先度レベルを有する受信されたデータに応答し、
前記トレース出力デバイスは、前記装置からの前記データの出力の前に、前記データを格納するように構成されたデータバッファメモリを備え、
（ｉ）前記データバッファメモリが、Ｎ＋Ｆ（Ｐ）以上の空き容量を有する場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しており、前記データバッファメモリが、Ｎ＋Ｆ（Ｐ）未満の空き容量を有している場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しておらず、Ｎは、前記データを格納するために必要なバイト数であり、Ｆ（Ｐ）は、Ｐの関数であり、Ｐは、前記データの優先度レベルである、装置。
【請求項２】
前記データが、前記データソースから前記トレース出力デバイスに送信される際に、前記トレース出力デバイスが、前記データを処理する準備が完了しているかどうかに関わらず、前記第１の優先度レベルに関連付けられたデータは、前記装置から出力される、請求項１に記載の装置。
【請求項３】
前記トレース出力デバイスが、前記データを処理することができるかどうかに従って、前記装置の処理動作のタイミングが変化しないように、前記トレース出力デバイスが、前記データを処理できるかどうかに関わらず、前記第２の優先度レベルに関連付けられたデータは、前記データソースから受け入れられる、請求項１に記載の装置。
【請求項４】
（ｉ）前記データバッファメモリが、前記データを格納するために十分な空き容量を有する場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しており、（ｉｉ）前記データバッファメモリが、前記データを格納するために十分な空き容量を有していない場合に、前記トレース出力デバイスは、前記データを処理する準備が完了していない、請求項１に記載の装置。
【請求項５】
Ｆ（Ｐ）は、単調に増加する関数である、請求項１に記載の装置。
【請求項６】
前記データの前記優先度レベルが最も高い優先度を有する場合に、Ｆ（Ｐ）＝０である、請求項１に記載の装置。
【請求項７】
前記データバッファメモリが、前記データを格納するために十分な空き容量を有さない場合に、前記トレース出力デバイスは、前記データを処理することができない、請求項１に記載の装置。
【請求項８】
前記データソースはバスマスターであり、前記トレース出力デバイスはバススレーブであり、前記データソースおよび前記トレース出力デバイスは、バス相互接続によって結合される、請求項１に記載の装置。
【請求項９】
前記トレース出力デバイスは、複数のメモリアドレスにマップされた、メモリマップされたスレーブデバイスである、請求項８に記載の装置。
【請求項１０】
前記データソースは、異なる優先度レベルを前記データに関連付けるように、前記トレース出力デバイスにマップされる異なるメモリアドレスに、前記データを書き込む、請求項９に記載の装置。
【請求項１１】
前記データソースは、メインプロセッサであり、前記トレース出力デバイスは、前記メインプロセッサに結合されるコプロセッサである、請求項１に記載の装置。
【請求項１２】
前記メインプロセッサの命令ストリーム内のコプロセッサ命令に応答して、前記データは、前記メインプロセッサから前記コプロセッサに送信される、請求項１１に記載の装置。
【請求項１３】
前記コプロセッサ命令は、前記データに関連付けられる優先度レベルを指定する、請求項１２に記載の装置。
【請求項１４】
前記データソースは、前記データに関連付けられた優先度レベルを制御するコンピュータプログラム命令を実行する、請求項１に記載の装置。
【請求項１５】
前記トレース出力デバイスは、前記トレース出力デバイスによって受信されたデータに関連付けられた優先度レベルを変更するために、オーバーライド信号に応答する、請求項１に記載の装置。
【請求項１６】
前記トレース出力デバイスは、前記データソースの優先度に従って、前記データソースからデータをリクエストするように構成される、請求項１に記載の装置。
【請求項１７】
前記データソースの前記優先度は、前記データの前記優先度レベルと同じである、請求項１６に記載の装置。
【請求項１８】
データを処理する装置であって、
データを生成するためのデータソース手段と、
前記データソース手段からの前記データを受信するため、および前記装置からのトレースデータを出力するための、前記データソース手段に結合されるトレース出力手段と、を備え、
前記データソース手段は、前記データに関連付けられる複数の優先度レベルのうちの１つを動的に選択し、
前記トレース出力手段は、（ｉ）前記トレース出力手段が、前記データを処理する準備が完了しており、次いで、前記データソース手段から前記データを受け入れる場合、および（ｉｉ）前記トレース出力手段が、前記データを処理する準備が完了しておらず、次いで、前記トレース出力手段が前記データを処理する準備が完了するまで、前記データソース手段からの前記データの受け入れをストールする場合、のうちの１つに対する第１の優先度レベルを有する、受信されたデータに応答し、
前記トレース出力手段が、前記データソース手段から前記データを受け入れ、前記トレース出力手段が前記データを処理することができない場合には、前記データを破棄するために第２の優先度レベルを有する受信されたデータに応答し、
前記トレース出力手段は、前記装置からの前記データの出力の前に、前記データを格納するように構成されたデータバッファリング手段を備え、
（ｉ）前記データバッファリング手段が、Ｎ＋Ｆ（Ｐ）以上の空き容量を有する場合に、前記トレース出力手段は、前記データを処理する準備が完了しており、前記データバッファリング手段が、Ｎ＋Ｆ（Ｐ）未満の空き容量を有している場合に、前記トレース出力手段は、前記データを処理する準備が完了しておらず、Ｎは、前記データを格納するために必要なバイト数であり、Ｆ（Ｐ）は、Ｐの関数であり、Ｐは、前記データの優先度レベルである、装置。
【請求項１９】
データを処理する方法であって、
データソースによって、データを生成するステップと、
前記データソースに結合されるトレース出力デバイスによって、前記データソースから前記データを受信するステップと、
トレースデータを出力するステップと、を含み、
前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの１つを動的に選択し、
前記トレース出力デバイスは、（ｉ）前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、および（ｉｉ）前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの１つに対する第１の優先度レベルを有する、受信されたデータに応答し、
前記トレース出力デバイスは、前記データソースから前記データを受け入れ、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第２の優先度レベルを有する受信されたデータに応答するデータを処理し、
前記トレース出力デバイスは、前記データの出力の前に、前記データを格納するように構成されたデータバッファメモリを備え、
（ｉ）前記データバッファメモリが、Ｎ＋Ｆ（Ｐ）以上の空き容量を有する場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しており、前記データバッファメモリが、Ｎ＋Ｆ（Ｐ）未満の空き容量を有している場合に、前記トレース出力デバイスは、前記データを処理する準備が完了しておらず、Ｎは、前記データを格納するために必要なバイト数であり、Ｆ（Ｐ）は、Ｐの関数であり、Ｐは、前記データの優先度レベルである、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、トレースデータ出力を生成するための能力を有するデータ処理システムに関する。
【背景技術】
【０００２】
トレース出力データを生成するためのメカニズムを提供することが、データ処理システムの分野において公知である。このトレースデータは、ハードウェアおよび／またはソフトウェアの開発時に、診断およびデバッグの目的で使用されてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
こうしたデータ処理システム内で発生する１つの問題として、トレースデータの容量が大きすぎる可能性があるために、キャプチャする際および出力前に、デバイス上のトレースデータをバッファするためのリソースが不十分である、および／または、デバイスからトレースデータを送信するための帯域幅が不十分である、ということが挙げられる。これに対処する１つの方法に、バッファまたはデバイスから伝送することが不可能なトレースデータの破棄がある。しかしながら、これには、破棄されたトレースデータ内に重大な診断情報が存在する場合があるという欠点がある。別の可能性としては、トレースデータバッファ内においてスペースが利用可能になるまで、または、デバイスのトレースデータを伝送するための容量が利用可能になるまで、デバイスをストールすることが考えられる。このアプローチの欠点は、デバイスのストール、またはそのタイミングの変更が、調査されている障害を隠してしまう、もしくは変化させる、あるいは、さらなる障害を引き起こすように、デバイスの動作に影響する可能性があるということである。
【課題を解決するための手段】
【０００４】
一態様から概観すると、本発明は、
データを処理するための装置であって、
データを生成するように構成されるデータソースと、
前記データソースに結合され、前記データソースから前記データを受信し、かつ、前記装置からトレースデータを出力するように構成されるトレース出力デバイスと、を備え、
前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの１つを動的に選択し、
【０００５】
前記トレース出力デバイスは、（ｉ）前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、および（ｉｉ）前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの１つに対する第１の優先度レベルを有する、受信されたデータに応答し、
【０００６】
前記トレース出力デバイスが前記データソースからの前記データを処理し、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第２の優先度レベルを有する受信されたデータに応答する装置を提供する。
【０００７】
この技術を用いて、データソースは、トレース出力デバイスに送信されるトレースデータに関連付けられる優先度レベルを選択することができ、トレース出力デバイスは、受信されたトレースデータを処理するためのトレース出力デバイスの能力を管理するために、この優先度レベルに応答できる。より具体的には、第１の優先度レベルを有するトレースデータは、トレースデータを処理する準備が完了している場合、およびトレース出力デバイスがトレースデータを処理する準備が完了しておらず、次いで、トレース出力デバイスがデータを処理する準備が完了するまで、受け入れをストールしてもよい場合に、トレース出力デバイスによって受け入れられてもよい。トレースデータの処理は、トレース出力デバイス内のトレースデータの格納のみを意味してもよい。このようにして、トレース出力デバイスがデータを処理する準備が完了するまで、トレースデータの受け入れがストールされるため、第１の優先度レベルのトレースデータは、失われない。第２の優先度レベルを有するトレース出力デバイスによって受信されたトレースデータは、データソースから受け入れられるが、トレース出力デバイスがそのトレースデータを処理できない場合には、破棄される。このようにして、さらなる処理の妨げとならないようにデータが受け入れられ、そのデータを処理することができない場合に、トレース出力デバイスによって破棄される。これらの異なる優先度レベルを使用して、重大なトレースデータを、トレース出力デバイスによって受け入れられることが実質的に保証されるように、第１の優先度レベルに関連付けることができ、一方で、より重大でないデータを、処理の妨げを作成することを回避するように、データソースから受け入れられ、トレース出力デバイスが、その時点においてそのトレースデータを処理する容量を有しない場合には、これは、さらに破棄されるように、第２の優先度レベルと関連付けることができる。
【０００８】
トレース出力デバイスは、装置からのトレースデータの出力以前に、トレースデータを格納するように構成されるデータバッファメモリを含んでもよい。このデータバッファメモリ内の格納スペースの可用性または非可用性を、異なる優先度レベルを有する受信されたトレースデータへ、トレース出力デバイスの応答を制御するために使用できる。第１の優先度レベルを有する受信されたトレースデータは、データバッファメモリが、そのトレースデータを格納するために十分な空き容量を有する場合に受け入れられ、データバッファメモリが、その時点でトレースデータを格納するために十分な容量を有しない場合にこのデータの受け入れのストールがトリガされる。
【０００９】
そのトレースデータを格納するために、データバッファメモリが十分な空き容量を有しない場合に、第２の優先度レベルを有するトレースデータに関して、トレース出力デバイスは、そのトレースデータを処理することはできず、従って、破棄される。
【００１０】
データを処理する能力は、さらに、データバッファ内の利用可能なスペースと、Ｎ＋Ｆ（Ｐ）によって付与される値との比較を用いて判定されてもよく、この場合、Ｎは、バッファ内に格納されるデータのバイト単位のサイズであり、Ｆ（Ｐ）は、優先度レベルの関数である。
【００１１】
本技術の実施形態の１つの種類は、バスマスターであるデータソース、バススレーブであるトレース出力デバイス、およびデータソースをトレース出力デバイスに結合させるバス相互接続を使用する。この種類の配設は柔軟性があり、デザイナーが、システム内の実質的にどこにでもトレース出力デバイスを配置することを可能にし、かつ、バス相互接続を経由して接続される種々の異なるバスマスターからのそのトレース出力デバイスへのアクセスを提供する。
【００１２】
トレース出力デバイスとの通信は、トレース出力デバイスが、複数のメモリアドレスにマップされたメモリマップされたスレーブデバイスである場合に、簡略化してもよい。
【００１３】
トレース出力デバイスによって受信されたトレースデータに、異なる優先度レベルを関連付けるために、異なるメモリアドレスへの書き込みが使用されるように、複数のメモリアドレスを配設してもよい。このため、第１の優先度レベルのデータを受信するために、トレース出力デバイスにマップされる１つのメモリアドレスを使用してもよく、第２の優先度レベルのデータを受信するために、トレース出力デバイスにマップされる異なるメモリアドレスを使用してもよい。このように、データソースは、トレース出力デバイスにマップされるメモリ領域内にデータを書き込み、従って、そのデータに関連付けられる優先度レベルを動的に選択するためのメモリ位置を、（例えばソフトウェア制御によって）選択してもよい。
【００１４】
別のクラスの実施形態において、データソースは、メインプロセッサであってもよく、トレース出力デバイスは、そのメインプロセッサに結合されるコプロセッサであってもよい。こうした実施形態内において、メインプロセッサから、メインプロセッサの命令ストリーム内のコプロセッサ命令に応答して、トレース出力デバイスとして機能するコプロセッサへ、データを送信してもよい。コプロセッサ命令は、トレース出力デバイスとして機能するコプロセッサに伝送されているデータに関連付けられる優先度レベルを指定してもよい。
【００１５】
システムのユーザは、受け入れられるまで伝送をストールする、第１の優先度レベルを有するトレースデータの多すぎる書き込みがシステム内に存在するように、システムを構成してもよいことが可能である。こうした状況において、ストールの積み重なりが生じ、処理の全体的な前向きの進行が実質的に損なわれ、有用な診断またはデバッグ情報を得ることができなくなる。こうした状況に対処するためのメカニズムを提供するために、トレース出力デバイスは、トレース出力デバイスによって受信されたデータに関連付けられた優先度レベルを変更するために、オーバーライド信号に応答してもよい。オーバーライド信号は、このため、望ましくない様態でデータの処理がストールするのを回避することができるように、トレース出力デバイスによって受信されたデータに関連付けられた優先度レベルを効果的に低減するために使用されてもよい。
【００１６】
本発明の別の態様から概観すると、
データを処理するための装置であって、
データを生成するためのデータソース手段と、
前記データソース手段からの前記データを受信するため、および、前記装置からのトレースデータを出力するための、前記データソース手段に結合されるトレース出力手段と、を備え、
前記データソース手段は、前記データに関連付けられる複数の優先度レベルのうちの１つを動的に選択し、
【００１７】
前記トレース出力手段は、（ｉ）前記トレース出力手段が、前記データを処理する準備が完了しており、次いで、前記データソース手段から前記データを受け入れる場合、および（ｉｉ）前記トレース出力手段が、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソース手段からの前記データの受け入れをストールする場合、のうちの１つに対する第１の優先度レベルを有する、受信されたデータに応答し、
【００１８】
前記トレース出力手段が、前記データソース手段からの前記データを受け入れ、前記トレース出力デバイス手段が前記データを処理することができない場合には、前記データを破棄するために第２の優先度レベルを有する受信されたデータに応答する手段を提供する。
【００１９】
さらなる態様から概観し、本発明は、
データを処理するための方法であって、
データソースによって、データを生成するステップと、
前記データソースに結合されるトレース出力デバイスによって、前記データソースから前記データを受信するステップと、
前記装置からトレースデータを出力するステップと、を含み、
前記データソースは、前記データに関連付けられる複数の優先度レベルのうちの１つを動的に選択し、
【００２０】
前記トレース出力デバイスは、（ｉ）前記トレース出力デバイスが、前記データを処理する準備が完了しており、次いで、前記データソースから前記データを受け入れる場合、および（ｉｉ）前記トレース出力デバイスが、前記データを処理する準備が完了しておらず、次いで、前記トレース出力デバイスが前記データを処理する準備が完了するまで、前記データソースからの前記データの受け入れをストールする場合、のうちの１つに対する第１の優先度レベルを有する、受信されたデータに応答し、
【００２１】
前記トレース出力デバイスが前記データソースから前記データを受け入れ、前記トレース出力デバイスが前記データを処理することができない場合には、前記データを破棄するために第２の優先度レベルを有する受信されたデータに応答する方法を提供する。
【００２２】
本発明の上記および他の目的、特徴および利点は、添付の図面に関連して一読されるべき、例示的な実施形態の以下の詳細な説明から、明らかであろう。
【図面の簡単な説明】
【００２３】
【図１】トレース機能を有し、診断デバイスに結合されるシステム・オン・チップ集積回路を概略的に図示する図である。
【図２】トレース出力デバイスに送信されるデータに、優先度レベルを関連付けるために、データソース内で実行される処理を概略的に図示する、流れ図である。
【図３】異なる優先度レベルでデータを受信するトレース出力デバイス内で実行される処理を概略的に図示する、流れ図である。
【図４】トレース出力デバイスにマップされるメモリアドレスの異なる範囲が、異なる優先度レベルおよび異なる他の属性にどのように関連付けられるかを図示する、表である。
【図５】プロセッサが、トレース出力デバイスとして機能するコプロセッサに結合される、別の実施形態を概略的に図示する図である。
【発明を実施するための形態】
【００２４】
図１は、診断デバイス４にトレースデータを出力する、システム・オン・チップ集積回路２を示す。集積回路２は、プログラム命令を実行するプロセッサコア６、トレース出力デバイス８、さらなるバスマスター１０、および２つのさらなるバススレーブ１２、１４を含む。プロセッサ６、トレース出力デバイス８、マスター１０、およびスレーブ１２、１４は、全て、バス相互接続１６を経由して接続される（これは、従来の共有バスとポイントツーポイント相互接続との間で異なっていてもよい）。プロセッサ６は、バスマスターであり、トレース出力デバイスは、バススレーブである。
【００２５】
トレース出力デバイス８は、システムのメモリアドレススペース内にマップされるメモリであり、トレース出力デバイス８に関連付けられたメモリアドレス範囲を有する。プロセッサ６またはバスマスター１０（例えばＤＭＡユニット）等のバスマスターは、送信先メモリアドレスへの書き込み動作を実行してもよい。その送信先メモリアドレスが、トレース出力デバイス８にマップされるメモリアドレス範囲内にある場合、その書き込みトランザクションは、トレース出力デバイス８へのバス相互接続１６を通過する。バスを通る伝送を制御するために、（ＡＲＭ  Ｌｉｍｉｔｅｄによって設計されたＡＭＢＡ相互接続と一致するプロトコル等の）バス相互接続１６の伝送プロトコルが使用される。これらの伝送プロトコルは、スレーブデバイスが、そのデータを受け入れる準備が完了するまで、伝送を受け入れるために、または、データをバス上に保持する必要があるストール状況を示すために、この場合はトレース出力デバイス８である、スレーブデバイスの受信を許可する。ストールが生じる場合、バス相互接続１６のいくつかまたは全てが、他のデバイスによる使用が利用不可能になることがあるため、集積回路２が処理を継続する全体的な能力が損なわれることがある。
【００２６】
トレース出力デバイス８は、トレース出力デバイス８書き込まれたデータが、（直接、または圧縮形態等に改変された）診断デバイス４に出力されるまで格納されてもよい、データバッファメモリ１８を含む。診断デバイス４への出力のために利用可能な帯域幅は、小さくてもよく、従って、集積回路２の動作の期間を観測する場合に、大容量のデータを、データバッファメモリ１８内でバッファする必要が生じることがある。
【００２７】
図２は、データをトレース出力デバイス８に送信するデータソース内で実施される処理を概略的に図示する、流れ図である。ステップ２０において、送信されるトレースデータが存在するまで、処理は待機する。ステップ２２において、トレースデータが第１の優先度レベルに関連付けられるかどうかが判定される。トレースデータが第１の優先度レベルに関連付けられる場合、処理は、トレースデータが、トレース出力デバイス８にマップされ、第１の優先度レベルに関連付けられた送信先メモリアドレスに書き込まれる、ステップ２４に進む。ステップ２２における判定が、トレースデータが第１の優先度レベルに関連付けられていないことである場合、処理は、ステップ２６に進む。ステップ２６において、トレースデータは、トレース出力デバイス８にマップされ、第２の優先度レベルに関連付けられた、送信先メモリアドレスに書き込まれる。
【００２８】
上記から、ソフトウェアの制御下で動作する（プロセッサ６等の）データソースが、送信されるトレースデータに関連付けられる優先度レベルを動的に選択してもよいことが理解されるであろう。これが集積回路２から診断デバイス４へ出力される可能性を高めるために、有意なトレースデータに、第１の優先度レベルを付与してもよい。より有意性が低いが、出力が可能となる場合に有用となると考えられるトレースデータを、第２の優先度レベルに関連付けてもよく、従って、そのトレースデータを処理（例えばバッファ）する能力が存在しない場合には、処理をストールせず、単に破棄するように、トレース出力デバイス８によって受け入れられる。
【００２９】
図３は、トレースデータを受信する際に、トレース出力デバイス８によって実行される処理を概略的に図示する、流れ図である。ステップ２８において、トレース出力デバイス８は、バス相互接続１６上でアサートされるデータを待機する。データがアサートされると、ステップ３０は、そのデータに関連付けられた送信先メモリアドレスが、トレース出力デバイス８にマップされるかどうかを判定する。送信先メモリアドレスが、トレース出力デバイスにマップされない場合、そのデータは、スレーブデバイス１２またはスレーブデバイス１４等の別のスレーブデバイスへ方向付けられ、トレース出力デバイス８内の処理は、バス上のデータが無視されるステップ３２に進む。
【００３０】
ステップ３０における判定が、バス上のデータに関連付けられた送信先メモリアドレスがトレース出力デバイス８にマップされることである場合、ステップ３４は、特定の送信先メモリアドレスが、第２の優先度レベルに関連付けられるかどうかを判定するように機能する。送信先メモリアドレスが、第２の優先度レベルに関連付けられる場合、処理は、ステップ３６に進む。送信先メモリアドレスが、第２の優先度レベルに関連付けられていない場合、この実施形態の例では、第１の優先度レベルに関連付けられ、処理は、ステップ３８に進む。
【００３１】
ステップ３６において、トレース出力デバイスが、バスからトレースデータを受け入れ、データソースへ確認を返送する。ステップ４０は、そのトレースデータを格納するために、データバッファメモリ１８内に利用可能なスペースが存在するかどうかを判定する。トレースデータを格納するための利用可能なスペースが存在しない場合、ステップ４２は、トレースデータを破棄し、処理が進行する。ステップ３６においてバスからトレースデータを直ちに受け入れる効果とは、さらなる処理のためにバスが自由になるということである。さらに、集積回路２内の他の処理動作のタイミングは、トレース出力デバイス８が、第２の優先度レベルのトレースデータを処理するかどうかによって、影響されない。これは、障害を隠す、もしくは変化させる、あるいは、診断動作の実行を探索する際に新しい障害を生成するように、集積回路２の挙動を変化させる第２の優先度レベルのこのトレースデータに関連付けられた動作を停止するため、重要である。
【００３２】
ステップ４０における判断が、トレースデータを格納するためにデータバッファメモリ１８内でスペースが利用可能である場合、ステップ４４は、装置からデータバッファメモリ１８への以降の出力のために、トレースデータを格納する。
【００３３】
ステップ３４における判断が、バス相互接続１６上で受信されたデータに関連付けられた送信先メモリアドレスが、第２の優先度レベルに関連付けられないことである場合、処理は、第１の優先度レベルのトレースデータを取り扱うステップ３８に進む。ステップ３８は、トレースデータを格納するために、データバッファメモリ１８内に利用可能なスペースが存在するかどうかを判定する。現在利用可能な領域が存在しない場合、処理は、バス相互接続１６がストールされ、トレースデータは、そのトレースデータを格納するためのスペースがデータバッファメモリ１８内で利用可能になる（例えばデータバッファメモリ１８が、診断デバイス４に少なくとも部分的にドレインされる）まで、バス相互接続１６上に保持される、ステップ４６に進む。このように、重要なトレースデータを、第１の優先度レベルに関連付けることができ、また、常にデータバッファ格納１８に書き込まれ、これによって、スペースがデータバッファ格納１８内で一時的に利用不可能になっても、分析のためにキャプチャできることを保証してもよい。
【００３４】
ステップ３８における判断が、バッファ領域が利用可能である場合、処理はステップ４８に進み、ここで、トレースデータは、バス相互接続１６から受け入れられ、確認信号が、発信元のバスマスターへ戻される。処理は、次いで、トレースデータがデータバッファメモリ１８に格納される、ステップ４４に進む。
【００３５】
バス相互接続１６をストールすることにおけるステップ４６のアクション、または少なくともその一部は、集積回路２の全体的な動作に侵害的であると考えられよう。過剰な数のこうしたストール動作が生じ、これらは、集積回路２の適正な動作を妨げるのに十分となり得る可能性がある。この理由のために、図１に図示されるように、オーバーライド信号がトレース出力デバイス８に送られる。アサートされた際のこのオーバーライド信号のアクションは、トレース出力デバイス８によって受信されたデータに関連付けられた優先度レベルを変化させることである。このため、このオーバーライド信号がアサートされる場合、その関連付けられた送信先メモリアドレスに関係なく、いかなるストールを生じさせることなしに受け入れられ、例えば、その時点でデータを処理する、例えば格納するのに十分な能力がない場合には、破棄されるように、トレース出力デバイス８によって受信された全てのデータを、第２の優先度レベルに関連付けることができる。
【００３６】
さらに、処理（例えばデータバッファ内の格納）のためにデータを受け入れるべきかどうかの判定は、データバッファの空き容量がＮ＋Ｆ（Ｐ）以上であるかどうかを比較することで判定してもよいことも可能であり、ここで、Ｎは、バイト単位の、格納されるデータサイズであり、Ｆ（Ｐ）は、データの優先度レベルの単調に増加する関数である（Ｆ（Ｐ）は、Ｐが最も高い優先度である場合に、ゼロと等しくなってもよい）。
【００３７】
図４は、トレース出力デバイス８にマップされてもよいメモリアドレス範囲を図示する表である。トレース出力デバイス８は、それに関連付けられた基準アドレスを有する。図４は、そのトレース出力デバイス８に関連付けられたメモリアドレス範囲を共に定義する、その基準アドレスからのオフセットを示す。説明されるように、これらのオフセットの第１のセットは、第１の優先度レベルに関連付けられたメモリアドレスを提供する。この第１の優先度レベルは、トレース出力デバイス８から出力されるこれらのメモリアドレスに書き込まれたそのトレースデータを保証するものと考えられる、つまり、トレース出力デバイス８は、そのデータが、最終的には、トレース出力デバイスから診断デバイス４へ出力されるように、そのデータを受け入れる、またはそのデータを受け入れるまでバスをストールするということである。
【００３８】
第２の範囲のオフセットは、これらのメモリアドレスに書き込まれたトレースデータが、第２の優先度レベルを有するものとして考慮されるように、第２の優先度レベルを提供するトレース出力デバイス８に関連付けられたメモリアドレス範囲を定義する。この第２の優先度レベルでトレース出力デバイス８に書き込まれたトレースデータは、集積回路２の動作の全体的なタイミングを変化させないように、トレース出力デバイス８によってほぼ必ず、直ちに受け入れられるため、この第２の優先度レベルは、集積回路２の動作に対して、不変のタイミングを提供するものと考えることができる。
【００３９】
第１の優先度レベルおよび第２の優先度レベルに関連付けられたメモリアドレスのこれらの範囲内において、他の特性を、これらのアドレスに書き込まれたトレースデータとリンクさせるように提供されるアドレスのさらなる細分化が存在することが理解されよう。この実施形態では、トレース出力デバイス８にマップされるメモリアドレス範囲内にそのデータが書き込まれる、特定のメモリアドレスに応じて、受信されたデータを任意選択的にマークし、任意選択的にタイムスタンプしてもよい。
【００４０】
図５は、本技術を使用する別の実施形態を概略的に図示する図である。この実施形態において、システム・オン・チップ集積回路５０は、コプロセッサ５４に結合されるプロセッサ５２が提供される。コプロセッサ５４は、トレース出力デバイスとして機能し、データバッファメモリ５６を含む。コプロセッサ５４は、トレースデータを診断デバイス５８に送信する。
【００４１】
プロセッサ５２の命令ストリーム内のＡＲＭ  ＭＣＲ命令等のコプロセッサ命令は、コプロセッサ５４にトレースデータを送信するために実行される場合に機能する。このコプロセッサ命令のエンコーディングは、コプロセッサ５４に伝送されたデータが、第１の優先度レベルまたは第２の優先度レベルのいずれを有するかを示す。伝送されたデータが第１の優先度レベルを有し、コプロセッサ５４が、その時点において、データを受け入れることができない場合、例えばデータバッファメモリ５６がいっぱいである場合、コプロセッサ５４は、コプロセッサ５４がそのデータを受け入れる準備が完了するまで、伝送されているデータがコプロセッサ５４へのアサートを継続する必要があることを示す、プロセッサ５４に、ストール信号を発行する。データが伝送されていることを示すＭＣＲ命令のエンコーディングは、そのデータを直ちに受け入れるために、および、その時点でデータバッファメモリ５６内に十分な格納スペースが存在しない場合に、単にデータを破棄するために、第２の優先度レベル制御コプロセッサ５４を有する。
【００４２】
コプロセッサ命令の命令エンコーディングは、第１の優先度レベルを示す「０」のコプロセッサ送信先レジスタ、および第２の優先度レベルを示す「１」のコプロセッサ送信先レジスタを有する、ＡＲＭ  ＭＣＲ命令であってもよい。プロセッサ５２から伝送されるトレースデータは、プロセッサ５２の汎用レジスタバンク内の汎用レジスタ等の、プロセッサ５２のソースレジスタ内に格納されてもよい。
【００４３】
上記において、第１の優先度レベルおよび第２の優先度レベルについて説明した。本技術は、２つの優先度レベルのみを有する実施形態に制限されないことが理解されよう。一実施形態として、３つの優先度レベルを提供することができる。第１の優先度レベルは、データが直ちに受け入れられる、またはトレース出力デバイスがそのデータを処理する準備が完了するまで、受け入れがストールされる、以前に記載された第１の優先度レベルと同様になる。第２の優先度レベルは、データが常に受け入れられるが、そのデータを格納するために、データバッファメモリ内に十分なスペースがない場合に破棄されるものとしてもよい。第３の優先度レベルは、データが常に受け入れられるが、空いているデータバッファメモリ内に、閾値量より大きい容量が存在しない限り、破棄されるものとなる。このため、データバッファメモリが比較的空いており、それによって、第２の優先度レベルまたは第１の優先度レベルのより高い優先度データのために、データバッファメモリ内に空きスペースを空けておく場合に、第３の優先度レベルのこのトレースデータは、データバッファメモリ内に格納されるにすぎない。
【００４４】
データソースがＤＭＡエンジンである場合、トレース出力デバイスは、トレース出力デバイスに送信されているデータを抑制するために、ＤＭＡエンジンと相互作用することができる。バスをストールすることによって、ＤＭＡ伝送をストールすることができるが、トレース出力デバイスがトレースバッファを送信できるよりもずっと高速に、ＤＭＡはトレース出力デバイスにデータを伝送できるため、長いＤＭＡ伝送（例えば１０００バイト）によって、バスのほとんどの時間をストールさせる可能性が高い。ＤＭＡデータがいっぱいであるときに、トレース出力デバイスがＤＭＡデータを破棄する場合、トレース出力デバイスは、ＤＭＡが送信するデータのほとんどを破棄する可能性が高い。低い優先度データを送信するために長い間、バスをストールすることによって、プログラムの挙動および／またはより高い優先度データを送信する能力に深刻な影響を与え、大量のデータの破棄は、残りのデータが役に立たないことになる可能性があるため、この効果は、ＤＭＡエンジンが大量の低い優先度データを送信するために使用されている場合には、特に望ましくない。
【００４５】
この問題に対処するために、データがトレース出力デバイスに送信されるレートを制限するためのメカニズムが提供される。
【００４６】
１）レート制限（ｒａｔｅ−ｌｉｍｉｔｉｎｇ）メカニズムは、ＤＭＡのデータのソースに存在してもよい。例えば、ＤＭＡが、遅い周辺機器からバッファメモリへとデータをコピーする場合、問題は生じない。
【００４７】
２）レート制限メカニズムを、ＤＭＡエンジンに追加することもできる。例えば、ＤＭＡエンジンは、各チャネル上の伝送の間のサイクルをカウントするカウンタを有することができ、カウンタがいくつかの閾値に達する場合にのみデータを送信する、または「水漏れ（ｌｅａｋｙ）バケツ」メカニズムを使用することができる（つまり、データが到達すると、「バケツ」すなわちバッファに格納される。「バケツ」がいっぱいの場合には、新たに到達するデータは破棄される。一定のレートで、「バケツ」からデータが取り出される。）
【００４８】
３）レート制限メカニズムは、上記の技術上に構築され、トレース出力デバイスからＤＭＡへ戻るフィードバックメカニズムを有する。
【００４９】
公知のＤＭＡエンジンは、周辺機器が、トランザクション（読み込みまたは書き込み）を受け入れる準備を完了しているかどうかを示すことができる、ハンドシェイクラインを提供する。トレース出力デバイスは、以下のように、ＤＭＡエンジンからより多くのデータをリクエストするために、これらのハンドシェイクラインを使用できる。
【００５０】
各チャネルにおいて、
Ｐを、チャネルの優先度とする。
Ｎを、トレースデータを格納するために必要なバイト数とする。
Ｎ＋ｇ（Ｐ）バイトは、トレース出力デバイスのバッファにおいて利用可能であり、そのチャネル上には未処理のリクエストは存在しない。
【００５１】
トレース出力デバイスは、そのチャネル上のデータをリクエストするためのハンドシェイクラインを使用する。
トレース出力デバイスは、未処理のリクエストが存在することを示す、そのチャネル上のフラグを設定する。
【００５２】
ＤＭＡエンジンは、そのチャネル上のデータを送信することで、応答する。
データがいくつかのチャネル上に到達すると、そのデータを受け入れるか破棄するかが判定され、そのチャネルの未処理のリクエストフラグがクリアされる。データがストールされる場合、データが最終的に受け入れられるまで、フラグはクリアされない（フラグをクリアにすることにより、トレース出力デバイスは、バッファ内に十分なスペースが存在する場合に、別のリクエストをトリガすることができる）。
【００５３】
レイテンシーは、トレース出力デバイスが現在のデータ用のスペースを有してもよいが、データがＤＭＡから到達するまでに、十分な領域が存在しない場合があることを意味する。この段階において、トレース出力デバイスは、データをストールまたは破棄する。これが起こる機会を低下させるために、ハンドシェイクラインを使用してデータをリクエストするための閾値は、データを受け入れるための閾値よりも高くする必要がある。Ｇ（Ｐ）＞Ｆ（Ｐ）とさせるということは、データがハンドシェイクラインを使用してリクエストされた場合に、受信された際に直ちに受け入れられる確率が高い（より高い）ことを意味する。「Ｇ（Ｐ）」と「Ｆ（Ｐ）」との間の差は、明らかに、ＤＭＡからのデータのリクエストとリクエストされたデータの到着との間のレーテンシーに依存しており、さらに、一方で他のソースから受信できるデータ量にも依存する。
【００５４】
待ち時間はさらに、トレース出力デバイスが、ＤＭＡエンジンへ複数のリクエストを行う可能性があることを意味する。「未処理のリクエストフラグ」は、これが起こるのを防止する。
【００５５】
このレイテンシーの問題に対処する別の方法は、チャネルからのデータのリクエストには、２つの副次的効果伴うということである。
１）リクエストされたデータのためにバッファ内にスペースが予約される。
２）「未処理のリクエストフラグ」が設定される場合、データは、（その領域に既に予約されたスペースがあるため）無条件に受け入れられる。これの変化形は、優先度が「未処理のリクエストフラグ」に依存する、すなわち、未処理のトランザクションがチャネルの優先度を上げると言える。
【００５６】
データソースからデータをリクエストするトレース出力デバイスの技術は、単独で、または、本明細書に記載の他の技術と組み合わせて使用してもよい。
【００５７】
本発明の例示的な実施形態について、添付の図面を参照して、本明細書中に詳細に説明したが、本発明は、これらの厳密な実施形態には制限されず、添付の特許請求の範囲に記載されているように、本発明の範囲および精神から逸脱せずに、当業者によって、本発明に種々の変更および修正を行うことができるということを理解されたい。
【符号の説明】
【００５８】
２  集積回路
４  診断デバイス
６  トレースデータソース
８  トレース出力デバイス
１０  バスマスター
１２  スレーブ
１４  スレーブ
１６  バス相互接続
１８  データバッファメモリ
【図１】
0005591729.tif 000002
【図２】
0005591729.tif 000003
【図３】
0005591729.tif 000004
【図４】
0005591729.tif 000005
【図５】
0005591729.tif 000006