(57)【要約】通信（例えば、ＣＤＭＡ）システムにおける送信を処理するためであることを含む（ただし、前記処理することに限定されない）デジタル信号プロセッサの設計及び使用に関する技法。前記方法及びシステムは、ソフトウェア実行の流れに関連するリアルタイム情報をキャプチャすることによってソフトウェア命令デバッギング動作を向上させ、コアプロセッサ内においてコアプロセッサプロセスを動作させるための命令と回路とを含む。非侵入型デバッギングプロセスは、デジタル信号プロセッサのデバッギング機構内において動作する。ソフトウェア実行の予め決められた側面をリアルタイムで非侵入方式でモニタリングすることは、前記コアプロセッサプロセスとともに発生しさらに前記プロセッサにおいてリアルタイムで発生する。埋め込み型トレースマクロセルは、前記非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面を記録し、前記非侵入方式でモニタリングされたソフトウェア実行の前記選択可能な側面内おいて発生したイベントに応じて少なくとも１つのブレークポイントを生成する。本開示は、少なくとも１つのブレークポイントに応じて前記非侵入型デバッギングプロセスの側面を制御する。【選択図】図８
2010510584.tif 000002
【特許請求の範囲】
【請求項１】
デジタル信号プロセッサにおけるソフトウェア実行の流れに関連するリアルタイム情報をキャプチャすることによってソフトウェア命令デバッギング動作を向上させるための方法であって、
前記デジタル信号プロセッサのデバッギング機構内において非侵入型デバッギングプロセスを動作させることであって、前記デバッギング機構は、前記デジタル信号プロセッサのコアプロセッサと関連づけられることと、
コア処理プロセスと関連づけられたソフトウェア実行の予め決められた側面に関してソフトウェア実行をリアルタイムで非侵入方式でモニタリングすることであって、前記モニタリングすることは前記デジタル信号プロセッサにおいてリアルタイムで発生することと、
前記非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面を記録することと、
前記非侵入方式でモニタリングされたソフトウェア実行の前記選択可能な側面内において発生するイベントに応じて少なくとも１つのブレークポイントを生成することと、
前記少なくとも１つのブレークポイントに応じて前記非侵入型デバッギングプロセスの側面を制御すること、とを備える、方法。
【請求項２】
予め決められた一組のプロファイリングカウントに応じて少なくとも１つのレコードを生成することをさらに備える請求項１に記載の方法。
【請求項３】
前記デジタル信号プロセッサの選択可能な数のスレッドの前記ソフトウェア実行を非侵入方式でモニタリングすることをさらに備える請求項１に記載の方法。
【請求項４】
前記非侵入型デバッギングプロセスを開始するためのトリガをプログラムカウンタ値に応じて生成することをさらに備える請求項１に記載の方法。
【請求項５】
前記ソフトウェア実行において用いられたロード／ストアアドレスに応じて前記非侵入型デバッギングプロセスを開始するためのトリガを生成することをさらに備える請求項１に記載の方法。
【請求項６】
前記ソフトウェア実行の際に発生する一連のイベントに応じて複数のレコードを生成することをさらに備える請求項１に記載の方法。
【請求項７】
前記ソフトウェア実行に関連して発生する外部イベントに応じて少なくとも１つのレコードを生成することをさらに備える請求項１に記載の方法。
【請求項８】
ＪＴＡＧインタフェースを用いて前記非侵入型モニタリング及び前記記録の動作をプログラミングすることをさらに備える請求項１に記載の方法。
【請求項９】
記録媒体に送信するために前記記録から導き出されたレコードのパケットストリームを生成することをさらに備える請求項１に記載の方法。
【請求項１０】
埋め込み型トレースバッファ記録媒体に送信するために前記記録から導き出されたレコードのパケットストリームを生成することをさらに備える請求項１に記載の方法。
【請求項１１】
デジタル信号プロセッサと関連して動作するためのデジタル信号プロセッサデバッギングシステムであって、プロセッサにおけるソフトウェア実行の流れに関連するリアルタイム情報をキャプチャする能力を含み、
前記デジタル信号プロセッサのデバッギング機構であって、コアプロセッサと関連づけられて非侵入型デバッギングプロセスを動作させるデバッギング機構と、
前記コア処理プロセスと関連づけられたソフトウェア実行の予め決められた側面に関してソフトウェア実行をリアルタイムで非侵入方式でモニタリングするための埋め込み型トレースマクロセルと、
前記非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面を記録するための前記埋め込み型トレースマクロセルに関する記録命令及び関連づけられた回路と、
前記非侵入方式でモニタリングされたソフトウェア実行の前記選択可能な側面内において発生するイベントに応じて少なくとも１つのブレークポイントを生成するための前記デバッギング機構と前記埋め込み型トレースマクロセルとの間で関連づけられたブレークポイント生成命令と、
前記少なくとも１つのブレークポイントに応じて非侵入型デバッギングプロセスを開始するための前記デバッギング機構と関連づけられた制御命令と、を備える、デジタル信号プロセッサデバッギングシステム。
【請求項１２】
予め決められた一組のプロファイリングカウントに応じて少なくとも１つのレコードを生成することをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項１３】
前記デジタル信号プロセッサの選択可能な数のスレッドをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項１４】
前記非侵入型デバッギングプロセスを開始するためのトリガをプログラムカウンタ値に応じて生成することをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項１５】
前記ソフトウェア実行において用いられたロード／ストアアドレスに応じて前記非侵入型デバッギングプロセスを開始するためのトリガを生成することをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項１６】
前記ソフトウェア実行の際に発生する一連のイベントに応じて複数のレコードを生成することをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項１７】
前記ソフトウェア実行に関連して発生する外部イベントに応じて少なくとも１つのレコードを生成することをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項１８】
前記非侵入型モニタリング及び前記記録命令及び前記関連づけられた回路の動作をプログラミングするためのＪＴＡＧインタフェースをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項１９】
記録媒体に送信するために前記記録命令及び前記関連づけられた回路から導き出されたレコードのパケットストリームをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項２０】
前記記録命令及び前記関連づけられた回路の使用から導き出されたレコードのパケットストリームを格納するための埋め込み型トレースバッファをさらに備える請求項１１に記載のデジタル信号プロセッサデバッギングシステム。
【請求項２１】
パーソナル電子デバイスをサポートする動作に関するデジタル信号プロセッサであって、前記デジタル信号プロセッサにおけるソフトウェア実行の流れに関連するリアルタイム情報をキャプチャし、それに応じて複数の非侵入型デバッギング動作を実行するためのデバッギング手段であって、
前記デジタル信号プロセッサのデバッギング機構内において非侵入型デバッギングプロセスを動作させるための手段であって、前記デバッギング機構は、前記デジタル信号プロセッサのコアプロセッサにおいて動作するコア処理プロセスと関連づけられる手段と、
前記コア処理プロセスと関連づけられたソフトウェア実行の予め決められた側面に関してソフトウェア実行をリアルタイムで非侵入方式でモニタリングするための手段であって、前記モニタリングすることは前記コアプロセッサにおいてリアルタイムで発生する手段と、
前記非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面を記録するための手段と、
前記非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面を記録するための前記手段内において発生するイベントに応じて少なくとも１つのブレークポイントを生成するための手段と、
前記少なくとも１つのブレークポイントに応じて前記非侵入型デバッギングプロセスの側面を制御するための手段と、を備えるデバッギング手段、を備える、デジタル信号プロセッサ。
【請求項２２】
予め決められた一組のプロファイリングカウントに応じて少なくとも１つのレコードを生成するための手段をさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項２３】
前記デジタル信号プロセッサの幾つかのスレッドを選択するための手段をさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項２４】
前記非侵入型デバッギングプロセスを開始するためのトリガをプログラムカウンタ値に応じて生成するための手段をさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項２５】
前記ソフトウェア実行において用いられたロード／ストアアドレスに応じて前記非侵入型デバッギングプロセスを開始するためのトリガを生成するための手段をさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項２６】
前記ソフトウェア実行の際に発生する一連のイベントに応じて複数のレコードを生成するための手段をさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項２７】
前記ソフトウェア実行に関連して発生する外部イベントに応じて少なくとも１つのレコードを生成するための手段をさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項２８】
前記非侵入型モニタリングの動作をプログラミングするための手段とＪＴＡＧインタフェースを用いて前記記録するための手段とをさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項２９】
記録媒体に送信するために前記記録するための手段から導き出されたレコードのパケットストリームを生成するための手段をさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項３０】
埋め込み型トレースバッファ記録媒体に送信するために前記記録するための手段から導き出されたレコードのパケットストリームを生成するための手段をさらに備える請求項２１に記載のデジタル信号プロセッサ。
【請求項３１】
マルチスレッド化デジタル信号プロセッサをデバッグするために具体化されたコンピュータによって読み取り可能なプログラムコード手段を有するコンピュータによって使用可能な媒体であって、プロセッサにおけるソフトウェア実行の流れに関連するリアルタイム情報をキャプチャすることを含み、
前記デジタル信号プロセッサのデバッギング機構内において非侵入型デバッギングプロセスを動作させるためのコンピュータによって読み取り可能なプログラムコード手段であって、前記デバッギング機構はコアプロセッサと関連づけられたコンピュータによって読み取り可能なプログラムコード手段と、
コア処理プロセスと関連づけられたソフトウェア実行の予め決められた側面に関してソフトウェア実行をリアルタイムで非侵入方式でモニタリングするためのコンピュータによって読み取り可能なプログラムコード手段であって、前記モニタリングすることは前記デジタル信号プロセッサにおいてリアルタイムで発生するコンピュータによって読み取り可能なプログラムコード手段と、
前記非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面を記録するためのコンピュータによって読み取り可能なプログラムコード手段と、
前記非侵入方式でモニタリングされたソフトウェア実行の前記選択可能な側面内において発生するイベントに応じて少なくとも１つのブレークポイントを生成するためのコンピュータによって読み取り可能なプログラムコード手段と、
前記少なくとも１つのブレークポイントに応じて前記非侵入型デバッギングプロセスの側面を制御するためのコンピュータによって読み取り可能なプログラムコード手段と、を備える、コンピュータによって使用可能な媒体。
【請求項３２】
前記デジタル信号プロセッサの幾つかのスレッドを選択するためのコンピュータによって読み取り可能なプログラムコード手段をさらに備える請求項３１に記載のコンピュータによって使用可能な媒体。
【請求項３３】
埋め込み型トレースバッファ記録媒体に送信するために記録するための前記コンピュータによって読み取り可能なプログラムコード手段から導き出されたレコードのパケットストリームを生成するためのコンピュータによって読み取り可能なプログラムコード手段をさらに備える請求項３１に記載のコンピュータによって使用可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される主題は、例えばデータ通信及び同様の用途において用いることができるデータ処理システム及びプロセスに関するものである。本開示は、より具体的には、エンハンストデバッギング動作に関する埋め込み型トレースマクロセルを提供及び利用することを含むデジタル信号処理デバッギング動作に関する斬新な及び改良された方法及びシステムに関するものである。
【背景技術】
【０００２】
電気通信及びその他の種類の電子装置とそれをサポートする映像、複雑な音声、テレビ会議及びその他のリッチソフトウェアアプリケーションでは、信号処理を含むことがますます多くなっている。信号処理は、複雑であるが反復的なアルゴリズムにおいて高速な数学計算及びデータ生成を行うことが要求される。多くのアプリケーションは、リアルタイムでの演算が要求され、すなわち、信号は時間の連続関数であり、数値処理のためにサンプリングしてデジタル信号に変換しなければならない。プロセッサは、到着したサンプルに関する個別の演算を行うアルゴリズムを実行しなければならない。
【０００３】
デジタル信号プロセッサ（ＤＳＰ）のアーキテクチャは、該アルゴリズムを処理するように最適化される。優れた信号処理エンジンの特徴は、高速で柔軟な算術演算ユニットと、演算ユニットへの又は演算ユニットからの制限されないデータフローと、演算ユニット内における拡張された精密な動的範囲と、デュアルアドレス生成器と、効率的なプログラムシーケンシングと、プログラミングの容易さと、を含む。
【０００４】
ＤＳＰ技術の１つの有望な用途は、通信システム、例えば、衛星又は地上リンクを通じてのユーザー間における音声とデータの通信、テキストメッセージ送信、及びその他の用途をサポートする符号分割多元接続（ＣＤＭＡ）システム、を含む。多元接続通信システムにおけるＣＤＭＡ技術の使用は、“SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS”（衛星又は地上中継器を用いた拡散スペクトル多元接続通信システム）という題名を有する米国特許番号４，９０１，３０７及び“SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM”（ＣＤＭＡセルラーテレハンドセットシステムにおいて波形を生成するためのシステム及び方法）という題名を有する米国特許番号５，１０３，４５９において開示されており、両特許とも、請求される主題の譲受人に譲渡されている。
【０００５】
ＣＤＭＡシステムは、典型的には、１つ以上の基準に準拠するように設計される。１つの該第１世代の基準は、“二重モード広帯域拡散スペクトルセルラーシステムに関するＴＩＡ／ＥＩＡ／ＩＳ−９５端末−基地局互換性基準”であり、以下ではＩＳ−９５基準と呼ばれる。ＩＳ−９５ＣＤＭＡシステムは、音声データ及びパケットデータを送信することができる。第１世代よりも効率的にパケットデータを送信することができるより新しい世代の基準が、“第３世代パートナーシッププロジェクト”（３ＧＰＰ）と呼ばれるコンソーシアムによって提供され、一般人が簡単に入手可能である一組の文書、例えば、文書番号３Ｇ  ＴＳ  ２５．２１１、３Ｇ  ＴＳ  ２５．２１２、３Ｇ  ＴＳ  ２５．２１３、及び３Ｇ  ＴＳ  ２５．２１４、において具体化されている。３ＧＰＰ基準は、以下ではＷ−ＣＤＭＡ基準と呼ばれる。
【０００６】
例えばＷ−ＤＣＭＡ基準を採用する複雑なＤＳＰ運用ソフトウェアは、強固な開発ツールが要求される。該開発ツールは、符号の生成、インテグレーション、試験、デバッギング、及びアプリケーション性能の評価のための開発ツールを含むことができる。ソフトウェア又は複雑なＤＳＰアプリケーション、例えば高度な電気通信アプリケーション、を開発及び運用する際には、精巧であるがその一方で非侵入型のデバッギングソフトウェアが必要である。すなわち、デバッギングソフトウェアアプリケーションは、ソフトウェアの欠陥及び運用上の問題の訂正をモニタリング、試験、及びサポートする上で十分に強固でなければならないだけでなく、デバッギング動作中にコアプロセッサソフトウェアと干渉しないように動作できなければならない。さもないと、コア処理ソフトウェア内のいずれの問題も、該デバッギングソフトウェアを使用中に検出することができず又は適切に検出することができない。
【０００７】
デバッギング動作中に、関連づけられたプロセッサに関するトレーシング機能を実行する非侵入型ソフトウェアデバッギングプロセスソフトウェアを関連づける必要がある。該システムは、プロセッサの状態に関する情報を特定のイベントの前後にキャプチャするのを許可するために該情報を提供することができる。同時に、該特長は、ＤＳＰが全速で動作する間でさえもプロセッサの性能に対して有意な負担をかけることができない。該プロセスは、非侵入型デバッギング動作と組み合わせて、例えば特定の一連の条件後に、選択されたトレース情報をキャプチャするためのソフトウェアコンフィギュレーションを提供することができる。該モニタリング及び記録機構は、様々な型のコンフィギュレーション及びブレークポイントの決定と許可を可能にするためにマルチスレッド化プロセッサ内でのスレッド選択可能動作に関して非侵入型デバッギングプロセスと連係として動作することもできる。
【０００８】
ＤＳＰの実行の流れに関する詳細な情報をリアルタイムで非侵入方式でキャプチャする能力を有する侵入型デバッギングシステムがさらに必要である。
【０００９】
トレース情報の生成をＤＳＰコア内の対象となる１つ以上の領域に限定して焦点を合わせる能力をそれ自体が有する非侵入型デバッギング機構と連係して動作するためのソフトウェア実行モニタリング及び記録システムがさらに必要である。
【００１０】
ソフトウェア実行及びモニタリングプロセス及びシステムの動作に応じることができる非侵入型デバッギングシステムがさらに必要である。ソフトウェア実行モニタリング及び記録システムの動作の開始及び移行時にデバッギングシステム自体を開始させるための方法が明らかに必要である。従って、該特長は、ソフトウェア実行モニタリング及び記録システムと密接に及び動作上の相乗効果を有する形で機能するために関連づけられた非侵入型デバッギングシステムによって提供することができる。
【発明の概要】
【００１１】
マルチスレッド化デジタル信号プロセッサを含むデジタル信号プロセッサに関する非侵入型のスレッド選択式デバッギング方法及びシステムを提供するための技法が開示され、前記技法は、コアプロセッサの動作において一定のモニタリングされたイベントに応じてデバッギング動作を開始するための埋め込み型トレースマクロセルと協力する。ここにおいて開示される前記方法及びシステムは、デジタル信号プロセッサの動作と、パソコン、パーソナルデジタルアシスタント、ワイヤレスハンドセット、及び同様の電子デバイスにおいて動作するアプリケーションを含むますます強力になるソフトウェアアプリケーションに関するデジタル信号プロセッサ命令の効率的な使用と、の両方を向上させ、さらに関連するデジタルプロセッサの速度及びサービス品質を向上させる。
【００１２】
開示される主題の一側面により、プロセッサにおけるソフトウェア実行の流れに関連するリアルタイム情報をキャプチャすることによってソフトウェア命令デバッギング動作を向上させるための方法及びシステムが提供される。前記方法及びシステムは、前記デジタル信号プロセッサと関連づけられたコアプロセッサ内においてコアプロセッサプロセスを動作させるための命令と回路とを含む。前記開示される主題は、前記デジタル信号プロセッサのデバイス機構内において非侵入型デバッギングプロセスを動作させる。前記コア処理プロセスと関連づけられたソフトウェア実行の予め決められた側面を、埋め込み型トレースマクロセルを用いてリアルタイムで非侵入方式でモニタリングし、前記モニタリングすることは前記プロセッサにおいてリアルタイムで発生する。前記埋め込み型トレースマクロセルは、前記非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面を記録し、前記非侵入方式でモニタリングされたソフトウェア実行の前記選択可能な側面内において発生するイベントに応じて少なくとも１つのブレークポイントを生成する。本開示は、少なくとも１つのブレークポイントに応じて前記非侵入型デバッギングプロセスの側面を制御する。その結果、前記開示される主題は、マルチスレッド化デジタル信号プロセッサの全スレッドまでに関するマルチスレッドトレース命令シーケンシング及びタイミングに関して前記非侵入型デバッギングプロセスと協力する。
【００１３】
開示される主題のこれらの利点とその他の利点、及び追加の斬新な特長は、ここにおいて提供される説明から明確になるであろう。この発明の概要の意図は、請求される主題に関する包括的な説明を提供することではなく、主題の機能の一部について簡単に概説することである。ここにおいて提供されるその他のシステム、方法、特長及び利点は、以下の図及び発明を実施するための形態を検討し次第当業者に明確になるであろう。これらのすべての追加のシステム、方法、特長及び利点は、この説明の中に含められ、さらに添付される請求項の適用範囲内に含められることが意図される。
【図面の簡単な説明】
【００１４】
開示される主題の特長、性質、及び利点は、以下の発明を実施するための形態を図面と併読することでより明確になるであろう。なお、図面全体において同様の参照文字は同様の要素を識別する。
【図１】本実施形態を実装することができる通信システムの単純化されたブロック図である。
【図２】本実施形態の教示を実行するためのＤＳＰアーキテクチャを示す。
【図３】開示される主題の技術的利点を提供するデジタル信号プロセッサの一実施形態のアーキテクチャブロック図を提供する。
【図４】開示される主題のデバッギング機構とコアプロセッサとの間のインタフェースを示す。
【図５】デバッギング動作モードを含むデジタル信号プロセッサの動作モードに適用可能なプロセス流れ図である。
【図６】本開示の一実施形態に適用可能なブレークポイント処理方式を示した図である。
【図７】ここにおいて開示されるデバッギング手順を実行するためのＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路の側面を示した図である。
【図８】本開示の埋め込み型トレースマクロセルの全体的機能図を描いたブロック図である。
【図９】開示される埋め込み型トレースマクロセルプロセス及びシステムのトリガブロック回路を示した図である。
【図１０】開示される埋め込み型トレースマクロセルの動作において有用なスレッドマッチング回路の一実施形態を示した図である。
【図１１】様々なトレーシング及びシーケンシング機能を実行するために本開示と関連して動作可能なシーケンサ及びトリガブロック回路を示した図である。
【図１２】本開示のシーケンシング及びより複雑な動作に対して適用可能な条件及びレジスタの表を提供する図である。
【図１３】本開示のシーケンシング及びより複雑な動作に対して適用可能な条件及びレジスタの表を提供する図である。
【発明を実施するための形態】
【００１５】
マルチスレッド化デジタル信号プロセッサに関する非侵入型スレッド選択式デバッギング方法及びシステムに関する開示される主題は、ここにおいて提示される利益が有利であることができるあらゆる型のマルチスレッド化処理に関して用途を有する。１つの該用途は、電気通信において現れ、特に、１つ以上のデジタル信号処理回路を採用するワイヤレスハンドセットにおいて現れる。該ワイヤレスハンドセットをどのようにして用いることができるかについて説明するために、図１は、開示される割り込み処理方法及びシステムの提示される実施形態を実装することができる通信システム１０の単純化されたブロック図を提供する。送信機ユニット１２において、データは、データ源１４から、１つ以上のアナログ信号を生成するためにデータをフォーマット化、符号化、及び処理する送信（ＴＸ）データプロセッサ１６に、典型的にはブロックで送信される。次に、アナログ信号が、ベースバンド信号を変調、フィルタリング、増幅、及びアップコンバージョンして変調された信号を生成する送信機（ＴＭＴＲ）１８に提供される。変調された信号は、アンテナ２０を介して１つ以上の受信機ユニットに送信される。
【００１６】
受信機ユニット２２においては、送信された信号は、アンテナ２４によって受信されて受信機（ＲＣＶＲ）２６に提供される。受信機２６内において、受信された信号が増幅、フィルタリング、ダウンコンバージョン、復調、及びデジタル化されて同相の（Ｉ）及び（Ｑ）サンプルが生成される。これらのサンプルは、受信（ＲＸ）データプロセッサ２８によって復号及び処理されて送信されたデータが復元される。受信機ユニット２２における復号及び処理は、送信機ユニット１２において実行される符号化及び処理を補完する形で実行される。復元されたデータは、データシンク３０に提供される。
【００１７】
上述される信号処理は、音声、映像、パケットデータ、メッセージ送信、及びその他の種類の通信を一方向に送信することをサポートする。双方向通信システムは、2方向データ送信をサポートする。しかしながら、説明を単純化するため、図１には他方の方向に関する信号処理は示されていない。通信システム１０は、地上リンクを通じてのユーザー間における音声及びデータ通信をサポートする符号分割多元接続（ＣＤＭＡ）システム、時分割多元接続（ＴＤＭＡ）通信システム（例えば、ＧＳＭシステム）、周波数分割多元接続（ＦＤＭＡ）通信システム、又はその他の多元接続通信システムであることができる。１つの特定の実施形態においては、通信システム１０は、Ｗ−ＣＤＭＡ基準に準拠するＣＤＭＡシステムである。
【００１８】
図２は、図１の送信データプロセッサ１６及び受信データプロセッサ２８として働くことができるＤＳＰ４０アーキテクチャを示す。ＤＳＰ４０は、ここにおいて提示される教示及び概念を実効的に用いることができる非常に数多くの可能なデジタル信号プロセッサ実施形態のうちの１つの実施形態を表すにすぎないことを強調する。従って、ＤＳＰ４０においては、スレッドＴ０：Ｔ５（参照番号４２乃至５２）は、異なるスレッドからの命令の組を含む。回路５４は、命令アクセス機構を表し、スレッドＴ０：Ｔ５に関する命令をフェッチするために用いられる。回路５４に関する命令は、命令待ち行列５６内に入れられる。命令待ち行列５６内の命令は、プロセッサパイプライン６６内に発行する準備が整った状態である（下記参照）。命令待ち行列５６から、発行論理回路５８によって単一のスレッド、例えばスレッドＴ０、を選択することができる。選択されたスレッドのレジスタファイル６０が読まれ、読み取られたデータがＳＬＯＴ０：ＳＬＯＴ３に関する実行データ経路６２に送られる。ＳＬＯＴ０：ＳＬＯＴ３は、この例においては、本実施形態において採用されるパケットグループの結合に関するものである。
【００１９】
実行データ経路６２からの出力は、ＤＳＰ４０の動作からの結果を戻すために、同じく個々のスレッドＴ０：Ｔ５を受け入れるように構成されたレジスタファイル書き込み回路６４に向かう。従って、回路５４及びそれよりも前からレジスタファイル書き込み回路６４までのデータ経路は、処理パイプライン６６を形成する。本実施形態は、最大で６つのスレッドＴ０：Ｔ５を有する単一のプロセッサを用いてヘテロジニアスエレメントプロセッサ（ＨＥＰ）システムの混成を採用することができる。プロセッサパイプライン６６は、６つのステージを有し、これは、回路５４からレジスタ６０及び６４にデータ項目をフェッチするために必要な最低限のプロセッササイクル数と一致する。ＤＳＰ４０は、プロセッサパイプライン６６内の異なるスレッドＴ０：Ｔ５の命令を同時並行して実行する。すなわち、ＤＳＰ４０は、６つの独立したプログラムカウンタ、プロセッサパイプライン６６内のスレッドＴ０：Ｔ５の命令を区別するための内部タギング機構、及びスレッドスイッチをトリガする機構を提供する。スレッドスイッチオーバーヘッドは、ゼロからほんの数サイクルまで変動する。
【００２０】
従ってＤＳＰ４０は、非常に様々な信号、画像、及び映像処理用途において高性能及び低電力であるように設計された汎用デジタル信号プロセッサを提供する。図３は、開示される主題の１つの表現に関する関連づけられた命令セットアーキテクチャの幾つかの側面を含むＤＳＰ４０アーキテクチャの概要を示す。ＤＳＰ４０アーキテクチャの実装は、インターリービングされたマルチスレッド化（ＩＭＴ）をサポートする。この実行モデルにおいては、ハードウェアは、パイプライン内の異なるスレッドからの命令をインターリービングすることによって複数のハードウェアスレッドＴ０：Ｔ５の同時並行実行をサポートする。この特長は、ＤＳＰ４０がコアとメモリの高い利用を依然として維持しながら積極的なクロック周波数を含むことを許容する。ＩＭＴは、アウトオブオーダー実行、広範な転送ネットワーク、等の高コストの補償機構を必要とせずに高スループットを提供する。さらに、ＤＳＰ４０は、ＩＭＴの変形、例えば、Ｍ．アーメド、等による、“Variable Interleaved Multithreaded Processor Method and System”（可変のインターリービングされたマルチスレッド化プロセッサに関する方法及びシステム）及び“Method and System for Variable Thread Allocation and Switching in a Multithreaded Processor”（マルチスレッド化されたプロセッサにおける可変スレッド割り当て及び切り換えに関する方法及びシステム）という題名を有する共通譲渡米国特許出願において開示される変形及び斬新な手法、を含むことができる。
【００２１】
図３は、特に、開示される主題の教示を採用することができる単一のスレッドに対して適用されるＤＳＰ４０に関するコア処理アーキテクチャ７０ブロック図を提供する。ブロック図７０は、ＡＸＩバス７４からバスインタフェース（Ｉ／Ｆ）７３を介して命令を受け取る共有命令キャッシュ７２を描き、これらの命令は、混合された１６ビットと３２ビットの命令を含む。これらの命令は、スレッドＴ０：Ｔ５のシーケンサ７６、ユーザー制御レジスタ７８、及びスーパバイザ制御レジスタ８０に届く。開示される主題のコアレベルシステムアーキテクチャは、ＪＴＡＧインタフェース８４を介してコアプロセッサ７０をインタフェースするインシリコンデバッギングシステム（ＩＳＤＢ）８２も含み、以下ではこれらの両方がさらに詳細に説明される。
【００２２】
シーケンサ７６は、ハイブリッド２方向スーパースカラー命令及び４方向ＶＬＩＷ命令をＳ−パイプユニット８６、Ｍ−パイプユニット８８、ＬＤ［Ｌｏａｄ］−パイプ９０、及びＬＤ／ＳＴ［Ｓｔｏｒｅ］−パイプユニット９２に提供し、これらの全ユニットは、汎用レジスタ９４と通信する。ＡＸＩバス７４は、バスＩ／Ｆ７３を介して、スレッドＴ０：Ｔ５への共有データキャッシュ９６ＬＤ／ＳＴ命令とも通信する。オプションのＬ２キャッシュ／ＴＣＭ９８信号は、共有データＴＣＭ１００を有するＬＤ／ＳＴ命令を含み、ＬＤ／ＳＴ命令は、さらにスレッド汎用レジスタ９４に流れる。ＡＨＢ周辺バス１０２から、ＭＳＭ専用コントローラ１０４は、Ｔ０：Ｔ５と割り込みを通信し、割り込みコントローラ命令と、デバッギング命令と、タイミング命令と、を含む。グローバル制御レジスタ１０６は、スレッドＴ０：Ｔ５と制御レジスタ命令を通信する。
【００２３】
従って、ＤＳＰ４０は、６つの仮想ＤＳＰコアを含み、各仮想ＤＳＰコアは、グローバル制御レジスタ１０６と、プライベートスーパバイザ制御レジスタ８０と、を含む。グローバル制御レジスタ１０６は、全スレッド間で共有される。各スレッドは、共通データキャッシュ及び共通命令キャッシュを共有する。ロード、ストア、及びフェッチの各動作は、共通のバスインタフェースによって対処される。高性能ＡＸＩバス７４及びそれよりも低性能のＡＨＢバス１０２は、データ及び命令トラフィックをオフコアメモリ及び周辺装置に接続するために用いられる。統合されたレベル２メモリ（キャッシュ及び／又はＴＣＭ）入力９８はオプションである。周辺装置のアクセスは、メモリによってマッピングされるロード及びストアを通じて行うことができる。ＡＨＢとＡＸＩとの間における物理アドレスパーティションは、ＭＳＭレベルで構成することができる。
【００２４】
明確なことであるが、ＤＳＰ４０に関する提示されるアーキテクチャは、経時で発展及び変化することができる。例えば、ＤＳＰ４０が用いることができる命令キャッシュ数は、６から１に、又はその他のキャッシュ数に変更することができる。ＴＣＭ１００におけるスーパースカラーディスパッチＬ１データ、及びその他のアーキテクチャ上の側面は、変更することができる。しかしながら、本主題は、非常に様々なコンフィギュレーションにおいて及びＤＳＰ４０の修正の大規模な系統に関して継続的な関連性を有することができる。
【００２５】
ＩＳＤＢ８２は、ＪＴＡＧインタフェース８４を介して、ＤＳＰ４０に関するハードウェアデバッガを提供する。ＩＳＤＢ８２は、システム又はスーパバイザ専用レジスタを共有することによってＪＴＡＧインタフェース８４を通じてソフトウェアデバッグ機能を提供し、これらのレジスタは、１つのスレッドベースのスーパバイザ制御レジスタ８０、及び全スレッド間におけるグローバル制御レジスタ１０６に分割される。システム制御レジスタは、１つのスレッドごとの割り込みと例外制御及び１つのスレッドごとのメモリ管理活動に関して用いられる。グローバルレジスタは、デバッギング動作のためにＩＳＤＢ８２と対話することを許容する。
【００２６】
ＩＳＤＢ８２は、ＤＳＰ４０が動作する間にソフトウェア開発者が自己のソフトウェアをデバッグするのを可能にする。ＩＳＤＢ８２ハードウェアは、ＩＳＤＢ８２において動作中のソフトウェアデバッガプログラムと組み合わせることで、ＤＳＰ４０オペレーティングシステムソフトウェアをデバッグするために用いることができる。ＩＳＤＢ８２は、デバッギングハードウェアスレッドを個々にサポートする。ユーザーは、スレッド実行を中断すること、スレッドレジスタを閲覧及び変更すること、命令とデータメモリ、単一ステップスレッド、を閲覧及び変更すること、スレッドに命令をスタッフィングすること、及びスレッド実行を再開することができる。信頼されるユーザーは、すべてのＩＳＤＢ８２の特長にアクセス可能であり、信頼されないユーザーは、部分組の特長にアクセス可能である。
【００２７】
ＩＳＤＢ８２は、プログラムカウンタ上に常駐するＩＳＤＢ８２デバッギングソフトウェアと通信するためにデバッガインタフェースカードとインタフェースすることができ、すべてＪＴＡＧインタフェース８４を通じて行うことができる。ホストデバッガソフトウェアは、ＩＳＤＢ制御レジスタを読み取る及び書き込むことによってＩＳＤＢ８２と対話することができる。通信は、例えば、読み取り／書き込みの対象となるＩＳＤＢレジスタを識別する４０ビットパケット、及び３２ビットデータペイロードを通じて行うことができる。この動作をサポートするパケットフォーマットは、各々の幅が３２ビットであることができる最大で６４の制御レジスタであることができる。
【００２８】
ＩＳＤＢ８２は、デバッギング動作中にセキュリティを制御するための信頼されるレジスタを含む。ＩＳＤＢ８２ｔｒｕｓｔｅｄがセットされた場合は、すべてのＩＳＤＢ８２レジスタがデバッガソフトウェアにとって可視であり、すべてのＩＳＤＢコマンドを使用可能である。ＩＳＤＢ８２ｔｒｕｓｔｅｄがクリアされた場合は、ＩＳＤＢ８２は、制限された一組の動作のみを許可する。本開示のこれらの側面が以下においてより詳細に説明される。
【００２９】
一定のＩＳＤＢ８２レジスタがコアソフトウェアにとって可視であるようにすることができる。これらのレジスタは、スーパバイザ（ＳＵＰＥＲＶＩＳＯＲ）モード制御レジスタ転送命令を介してアクセス可能である。コア命令は、ブレークポイント命令を含む。ＩＳＤＢｔｒｕｓｔｅｄがセットされたときには、この命令は、実行中のスレッドにデバッギング動作モードに入らせる。この移行は、スレッド制御をＩＳＤＢ８２に移行させる。ブレークポイントを実行したスレッドに加えて、その他のスレッドは、ＩＳＤＢ８２プログラミングに従って選択的にデバッグ（ＤＥＢＵＧ）モード１５０に入ることができる。ＩＳＤＢ８２が信頼されないか又はイネーブルにされない場合は、この命令はＮＯＰとして処理される。好ましいことに、ブレークポイント命令は、パケット内における唯一の命令である。
【００３０】
図４は、開示される主題のデバッギング機構とコアプロセッサとの間におけるＩＳＤＢ／ＪＴＡＧインタフェース１１０の重要な側面を示す。ＤＳＰ４０コアアーキテクチャ７０と関連して、ＩＳＤＢ８２は、ＩＳＤＢ  ＪＴＡＧ回路１１４からの経路ＪＴＡＧインタフェース経路１１２を介してＪＴＡＧ８４と通信する。ＩＳＤＢ  ＪＴＡＧ回路１１４は、ＪＴＡＧ８４とＩＳＤＢ８２との間におけるデータフローを処理する。ＩＳＤＢ  ＪＴＡＧ回路１１４は、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１１６をさらにインタフェースする。ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１１６は、ＩＳＤＢコントローラ１１８、命令ユニット（ＩＵ）１５０及び制御ユニット（ＣＵ）１２２とさらに通信する。特に、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１１６は、ＩＵ１５０のＩＵ  ＩＳＤＢ論理回路及びＣＵ１２２のＣＵ  ＩＳＤＢコントローラ１２６をインタフェースする。ＣＵ  ＩＳＤＢコントローラ１２６は、ＣＵ  ＩＳＤＢ論理回路１２８、及びＩＳＤＢコントローラ１１８と通信する。ＩＳＤＢコントローラ１１８からの制御出力は、ＩＳＤＢデータ出力１３０と、ＩＳＤＢリセット信号１３２と、ＩＳＤＢ割り込み１３４と、を含む。ＩＳＤＢコントローラ１１８へのさらなるインタフェースは、ＭＣＤインタフェース１３６と、ＥＴＭブレークトリガー１３８と、を含む。
【００３１】
ＩＳＤＢ８２の様々な構成要素を挙げた後は、以下では、動作について簡単に説明し、さらに、ＤＳＰ４０の非侵入型の信頼される及び信頼されないデバッギング動作を実施するための制御又は論理回路の構成部分を紹介する。ＩＳＤＢコントローラ１１８は、（ａ）様々なＩＳＤＢレジスタを実装することと、（ｂ）ＭＣＤ外部ブレークレジスタと再開レジスタ及びＥＴＭブレークポイントトリガをさらなる処理のためにＣＵ１２２に転送する前にＤＳＰ４０に合わせて同期化することと、（ｃ）コアのデバッグモード状態に基づいてＭＣＤブレークポイント及び再開トリガを生成することと、（ｄ）ＤＳＰ４０サブシステムに送出される信号、例えばＩＳＤＢ割り込み、ブレークポイントイベント、等に関するパイプラインステージを追加すること、とを含む様々なタスクを処理する。
【００３２】
ＣＵ１２２は、（ａ）ブレークポイントを処理する及び各スレッドへのブレークポイントトリガを生成する、（ｂ）ミクロブレークポイントコマンド及びミクロ再開コマンドを生成する、（ｃ）ＩＳＤＢ８２状態及びメールボックスレジスタを維持する、及び（ｄ）一定のＩＳＤＢ８２レジスタを実装するというタスクを処理することができる回路及び命令を含む。ＣＵ１２２は、すべてのブレークポイントを処理し、ＣＵ  ＩＳＤＢコントローラ１２６のミクロコマンド生成器へのマクロブレークポイント要求を生成するための図６に示されるようなブレークポイント処理論理（ＢＰＬ）ブロックを含む。ミクロコマンド生成器は、マクロブレークポイント要求を命令スタッフコマンド、命令ステップ及び再開コマンドとともに処理し、ミクロブレークポイント及び再開コマンドをパイプライン制御のためにＣＵ１２２に発行する。
【００３３】
ＣＵ  ＩＳＤＢコントローラ１２８は、ブレークポイント及び戻された再開肯定応答信号に基づいてＩＳＤＢ８２の状態を維持する。ＣＵ  ＩＳＤＢコントローラ１２６のメールボックス機能は、ホストデバッグソフトウェアとＤＳＰ４０コアプロセッサとの間の通信に関して用いられるメールボックスレジスタを維持する。これらのメールボックス機能は、ＩＳＤＢ８２状態レジスタも含む。
【００３４】
図５は、ＤＳＰ４０の様々なモード制御に関する側面に関する処理モード図１４０を示し、デバッギングプロセス中におけるＩＳＤＢ８２の動作を含む。図５においては、ＤＳＰ４０は、全スレッドに対してグローバルであり個々のスレッドに対してローカルである処理モードをサポートする。各ＤＳＰ４０ハードウェアスレッドは、すべて図５において示されるように、２つの実行モード、ユーザー（ＵＳＥＲ）モード１４２とスーパバイザモード１４４、及び３つの非処理モードすなわち待機（ＷＡＩＴ）モード１４６、ＯＦＦモード１４８、及びデバッグモード１５０、を個々にサポートする。スレッドのモードは、その他のスレッドと独立しており、例えば、１つのスレッドは待機モード１４６であることができ、他のスレッドは、ユーザーモード１４２であり、以下同様である。
【００３５】
図５の１つのスレッドごとのモード状態図は、様々な命令又はイベントによってサポートされる。これらは、“例外”すなわち内部例外イベントと、“Ｉｎｔ”すなわち外部割り込みイベントと、“ＲＴＥ”すなわち例外モードからのソフトウェアリターン命令と、“ＳＳＲ”すなわちＳＳＲレジスタ命令の更新と、あらゆるモードから入力することができる“停止”すなわちソフトウェア停止命令と、同じくあらゆるモードから入力することができる“開始”すなわちソフトウェア開始命令と、“トラップ”すなわちソフトウェアトラップ命令と、“待機”すなわちソフトウェア待機命令と、“再開”すなわちソフトウェア再開命令と、“ＤＥ”すなわちデバッグイベントと、“ＤＲ”すなわちデバッグ命令と、を含む。請求される主題の異なる実装における機能は、ここにおいて提示される機能とわずかに異なることができる一方で、“開始”、“待機”、“再開”、“ＤＥ”、及び／又は“ＤＲ”の意味は、請求される主題の適用範囲と一致する最も広義の解釈を行うことができる。
【００３６】
レジスタは、ＤＳＰ４０においてユーザーモード１４２及びスーパバイザモード１４４の両方において利用可能である。ユーザーモードレジスタは、一組の汎用レジスタ及び一組の制御レジスタに分割される。汎用レジスタは、アドレス生成、スカラー及びベクトル算術を含むすべての汎用演算に関して用いられる。制御レジスタは、ハードウェアループ、プレディケート、等の特殊目的の機能をサポートする。汎用レジスタは、幅が３２ビットであり、単一レジスタとして又は２つのレジスタの整列された対としてアクセスすることができる。汎用レジスタファイルは、命令に関する全オペランドを提供し、ロード／ストアに関するアドレスと、数値命令に関するデータオペランドと、ベクトル命令に関するベクトルオペランドと、を含む。
【００３７】
デバッグモード１５０は、スレッドがＩＳＤＢ８２からのコマンドを待っている特別な状態を提供する。例えばソフトウェアブレークポイント命令の実行、ＩＳＤＢ８２からのブレークコマンド、又はハードウェアブレークポイントの発生によって、ＩＳＤＢデバッグイベントが生じるごとに、示されたスレッドは、デバッグモード１５０に入ることができる。デバッグモード１５０においては、コアは、ＪＴＡＧインタフェース８４からのコマンドを介してＩＳＤＢ８２によって制御される。ＩＳＤＢ８２が再開コマンドの実行に起因してスレッドをリリースすると、スレッドは、現在のモード設定に従って動作を再開することができる。スレッドがデバッグモード１５０にあるときには、ＩＳＤＢ８２によって制御され、その他のスレッドによって制御することはできない。デバッグモード１５０におけるスレッドをターゲットにした、実行中のスレッドからの待機命令、再開命令、開始命令、又は停止命令は、無視することができる。同様に、マスク不可割り込み（ＮＭＩ）は、デバッグモード１５０にあるスレッドは無視することができる。
【００３８】
ハードウェアリセット（ＨＡＲＤＷＡＲＥ  ＲＥＳＥＴ）モード（図５に示されていない）及びデバッグモード１５０は、全スレッドに対してグローバルである。ハードウェアリセットピンがアサートされるごとに、あらゆるスレッドがどのような処理状態であるかにかかわらず、ＤＳＰ４０は、ハードウェアリセットモードになることができる。ハードウェアリセットモードにおいては、全レジスタが各々のリセット値に設定される。どのような処理も、ハードウェアリセットピンがデアサートされるまで行うことができない。リセットピンがアサートされた時点で、プロセッサは、リセットモードに移行することができ、全レジスタをハードウェアリセットモード値にリセットすることができる。リセットピンがデアサートされた後は、スレッドＴ０にソフトリセット割り込みを与えることができる。このことは、スレッドＴ０にスーパバイザモード１４４に入らせてリセットされたベクトル位置での実行を開始させることができる。その他の全スレッドは、オフ状態であることができる。この時点においては、ソフトウェアは、各スレッドに関するモード移行を個々に自由に制御することができる。
【００３９】
図６において、ＣＵ  ＩＳＤＢコントローラ１２６のブレークポイント論理又はＢＰＬ回路１６０（図４）は、ハードウェアブレークポイント０／１（ＨＷＢＫＰＴ０  １６２及びＨＷＢＫＰＴ１  １６４）と、ソフトウェアブレークポイント（ＳＷＢＫＰＴ  １６６）と、ＪＴＡＧ８４ブレークポイント（ＪＴＡＧＢＫＰＴ  １６８）と、ＥＴＭ（埋め込み型トレースマクロ）ブレークポイント（ＥＴＭＢＫＰＴ１７０）と、外部ブレークポイント（ＥＸＴＢＫＰＴ１７２）と、を含む、６つの異なるソースからのブレークポイントトリガを含む。ブレークポイントトリガ１６２乃至１７２及びデバッグモード状態入力１７４は、エンコードブレークポイント符号器１７６に行き、ＤＳＰ４０にデバッグモード１５０において動作させる。符号器１７６からの出力は、３つのブレークポイント情報ビット１７８と、ブレークポイント有効ビット１８０と、を含む。ブレークポイント情報データ１７８は、ブレークポイント情報回路１８２に入ってブレークポイント情報ＪＴＡＧインタフェースコマンド１８４を生じさせる。ブレークポイントビット１８０は、さらに、ＯＲゲート入力１８６及びリセット回路１８８入力も生成する。リセット回路１８８は、ＵＣＧ再開スレッド番号又はリセット入力１９２のいずれかを受け取り、ＯＲゲート１９６内へのリセット制御出力１９４を生成する。有効ビット１８６又はリセット出力１９４のいずれも、ＯＲゲート１９６にＢＰＬ  １６０ブレークポイント出力１９８を生成させることができる。
【００４０】
ＢＰＬ回路１６０内のブレークポイントトリガは、対応するＴＮＵＭマスクとともに処理され、各々のスレッドに対するマクロブレークポイントトリガが生成される。対応するスレッドが再開されるまでマクロブレークポイントトリガ１９８ｂｐｌ＿ｂｒｅａｋＴｎｕｍ＿ＡＮＹ［０］が維持される。ＢＰＬ１６０において用いることができるパイプラインステージ数は、正確なブレークポイントであるハードウェアブレークポイントによってドライブされる。すなわち、ハードウェアブレークポイントマッチをトリガする命令は実行してはならない。スレッドは、その命令までプログラムを実行後にデバッグモードに切り換わる。開示される実施形態は、ブレークポイントトリガが到着してから1サイクル後にマクロブレークポイントトリガを提供する。そのため、ブレーク有効入力１７６がラッチされたバージョン入力１９２と論理的にＯＲされてｂｐｌ＿ｂｒｅａｋＴｎｕｍ＿ＡＮＹ［０］出力１９８が生成される。
【００４１】
ブレークポイントを用いることで、ＤＳＰ４０の６つのスレッドは、個々にデバッグモード１５０に入ること及びデバッグモード１５０から出ることができる。ブレークポイントトリガは、ＩＳＤＢ８２においてサポートされる５つの異なる種類のブレークポイントに対応する５つのソースから来ることができる。スレッドは、ブレークポイントをヒットした時点で、現行モード（例えば、待機／実行（ＲＵＮ））からデバッグモード１５０に移行する。デバッグモード１５０において、スレッドは、ＩＳＤＢ８２からのコマンドを待つ。ＯＦＦモード１４８にあるスレッドはパワーダウンされ、ＩＳＤＢ８２からのコマンドを受け入れることができない。デバッグモード１５０に入るレーテンシーは、実装によって定義され、例えば、本開示においては、イベント電力崩壊に関連するとして定義される。例えば、一実装は、デバッグモード１５０に入る前に、所定の動作を完了させる、例えば未解決のロード要求を終了させる、ことを選択することができる。一実施形態においては、スレッド識別子レジスタは、８ビットの読み取り／書き込みフィールドを含み、ソフトウェアスレッド識別子を保持するために用いられる。このフィールドは、ブレークポイントとマッチさせるためにハードウェアデバッガによって用いられる。
【００４２】
ブレークポイントプロセスに入る方法は、幾つかの異なる方法が存在する。例えばＨＷＢＫＰＴ１  １６２及びＨＷＢＫＰＴ２  １６４ブレークポイントに関しては、レジスタが予め決められた値と等しい場合は、プログラムカウンタ（ＰＣ）が予め決められた値にマッチするときに、プロセスがデバッグモード１５０になる。ＡＳＩＤ（アドレス空間識別子）は、プロセスにおけるプロセスＩＤ又はマルチスレッド化プロセスにおける特定のスレッドと類似のタグである。このため、物理アドレス、仮想アドレス、ＡＳＩＤ、ＰＣ、又はその他の修飾子を用いて、ブレークポイントが生じることができるポイントにおける空間内のプログラムの位置のフィックスを随意に入手することができる。ここで参照されるブレークポイントの使用は、Ｌ．コドレスキュ、等による、“NON-INTRUSIVE, THREAD-SELECTIVE, DEBUGGING METHOD AND SYSTEM FOR A MULTI-THREADED DIGITAL SIGNAL PROCESSOR”（マルチスレッド化デジタル信号プロセッサに関する非侵入型、スレッド選択式デバッギング方法及びシステム）という題名を有する、共通譲渡米国特許出願においてより具体的に開示されている。開示される主題は、図６のようなブレークポイントの場合にデバッグモード１５０内に移動するための経路を提供する。開示される主題は、ＤＳＰ４０内のいずれのスレッド又はスレッドの組がデバッグモード１５０になるかを制御する。
【００４３】
本開示に関して重要なことは、ＤＳＰ４０の埋め込み型トレースマクロセル（ＥＴＭ）ユニットであり、ソフトウェア実行の流れに関する詳細情報をリアルタイムでキャプチャすることによってユーザーによる符号デバッギングをエンハンスする。ＥＴＭは、選択されたＤＳＰ４０の実行を非侵入方式でモニタリング及び記録し、実行情報をパケットにし、ＥＴＢと呼ばれるオフチップ又はオンチップメモリにパケットストリームを送出する。ＥＴＭは、トレース情報の生成を対象領域に限定するか又は焦点を合わせる幾つかの機構も含む。パケットストリームを用いることで、実行の再構築を行うことができ、ユーザーが符号の実行時間の挙動を直接見ることを可能にする。
【００４４】
図７は、様々な埋め込み型トレースマクロセル関数と関連させてここにおいて開示される開始デバッギング手順を実行するためのＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路の一側面を示す。ここにおいて開示される信頼される及び信頼されないデバッギング動作を実行するための例示的回路を実証するために、図７は、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路２００を含む。ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路２００は、ＤＳＰ４０がＩＳＤＢ制御レジスタを読み取る及び書き込むために用いることができるＩＳＤＢ試験データレジスタ２０２を含む。ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路２００は、ＤＢ＿ｔｃｋにおいて動作するＩＳＤＢ試験データレジスタ２０２とＤＳＰ４０クロック領域において動作するＩＳＤＢ制御レジスタ２０４との間における同期化論理を提供する。ＩＳＤＢ制御レジスタを読み取る及び書き込むことによって、ＤＳＰ４０は、ＩＳＤＢ８２によってサポートされる様々なデバッグタスクを実行する。
【００４５】
図７の実装においては、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路２００は、ＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｏｕｔ信号２０８を生成するためにＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｉｎ信号２０６を受信してＩＳＤＢ試験データレジスタ２０４に入れる。ＩＳＤＢ試験データレジスタ２０２は、読み取り／書き込み（Ｒ／Ｗ）ビット２１０と、アドレスビット［６：０］２１２と、データビット［３１：０］２１４と、を含む。Ｒ／Ｗビット２１０内の値は、Ｓｙｎｃ回路２１６出力及びＣＵ＿ｔｒｕｓｔｅｄＤｅｂｕｇ入力２２０と同様に、ＡＮＤゲート２１６に行く。ＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｕｐｔａｋｅ＿ｔｋｌ信号２２２及びＩＳＤＢ＿ＣＬＫ信号２２４は、Ｓｙｎｃ回路２１８の動作を制御する。アドレスビット２１２からのアドレス情報は、アドレスデコード回路２２０によって受け取ることができ、アドレスデコード回路２２０は、ＩＤＳＢレジスタ２０４にフィード（ｆｅｅｄ）する。ＩＤＳＢレジスタ２０４は、ＡＮＤゲート２１６からの書き込みイネーブル信号２２８に応じてデータビット［３１：０］を有するデータを転送する。
【００４６】
ＥＴＭは、ＤＳＰ４０及びその他の同様のデジタル信号プロセッサに関する包括的なデバッグ及びトレース機能を提供する。ＤＳＰ４０が全速で稼働するときに、これらの機能は、プロセッサの性能にさらなる負担をかけずにプロセッサの状態に関する情報を特定のイベントの前後にキャプチャするのを可能にする。ＥＴＭは、選択されたトレース情報のみを特定の一連の条件後のみにおいてキャプチャするようにソフトウェア内において構成することができる。これで、専用の構成可能なトレースポート及びＦＩＦＯは、圧縮されたトレースデータを、プロセッサに割り込まずに、又は影響を与えずに外部トレースポート解析器によってチップから読み取るのを可能にする。
【００４７】
トレースポートは、１乃至３２ビットデータバスから構成することができ、トレースクロックは、コアクロックから独立している。例えば、ＥＴＭからのデータレートは、コアクロックの１／２であることができ、データ帯域幅を維持するためにピン数を増やすことができる。同様に、ピン数を１／２にしてデータレートを上げることができる。ＥＴＭは、開発者が複数の非同期的なコアからの同時の相互に関連したトレースを見るのを可能にするためにスタンドアロン方式で及びマルチコア環境内の両方において用いることができる。
【００４８】
図８は、ここにおいて提供される全体的なＥＴＭ２３２関数を描いたブロック図２３０である。ＤＳＰ４０コアプロセッサ７０は、ＥＴＭ２３２をインタフェースし、ＥＴＭ２３２は、トリガリング及びフィルタリング回路２３４と、圧縮及びパケット化回路２３６と、を含む。トリガリング及びフィルタリング回路２３４及び圧縮及びパケット化回路２３６による処理に引き続き、ＥＴＭ出力２３８は、トレースレポジトリ２４０に流れ、トレースレポジトリ２４０は、例えば、埋め込み型トレースバッファ（ＥＴＢ）回路又はオフチップ回路であることができる。トレースレポジトリ２４０から、ソフトウェア実行レコードが、出力レコード２４２としてデバッグホスト又はＩＳＤＢ８２に流れる。ＩＳＤＢ８２は、トレースレポジトリ出力レコード２４２を受け取って再構築された実行の流れ２４６を生成するためのデコンプレッサ構成要素２４４を含む。ＥＴＭ２３２は、入力ＪＴＡＧ８４がＩＳＤＢ８２からのデータ及び命令に応じて生成する制御入力２４８をＪＴＡＧ８４から受け取る。
【００４９】
図８において示されるように、ＥＴＭ２３２は、ＤＳＰ４０パイプラインをモニタリングする。ＥＴＭ３２は、この情報を用いて、２つの主関数、すなわち、フィルタリング／トリガリング及び圧縮／パケット化を実行する。フィルタリング及びトリガリング動作は、ＪＴＡＧインタフェース８４を通じてユーザーによってプログラミングされ、いつトレーシングをオン及びオフにすべきかを定義するために用いられる。圧縮／パケット化ユニットは、ＤＳＰ４０実行情報を受け取り、同ＤＳＰ４０実行情報を、効率的に、トレースポートを通じてＥＴＭ２３２から送出されるパケットの形にする。ＥＴＭ２３２を出るトレースストリームは、トレースレポジトリ２４０に入れられる。トレースレポジトリ２４０は、トレースレコードを記録するための大きなメモリ容量を提供し、オフチップ又はオンチップであることができる。オンチップレポジトリは、埋め込み型トレースバッファ（ＥＴＢ）と呼ばれる。デコンプレッサ構成要素２４４は、パケットストリームをトレースレポジトリ２４０から取り出すＩＳＤＢ８２において実行するソフトウェアコンポーネントであり、プログラム画像とともに、ＤＳＰ４０の実行の流れを再構築し、ユーザーがＤＳＰパイプライン６６を詳細に見ることを可能にする。ＥＴＭ２３２は、６つのすべてのスレッドに関するトレース命令シーケンシング及びタイミングを提供し、さらにプロファィリングカウント（キャッシュミス、バンク衝突、ミクロ−ｔｌｂミス）を記録及び送出する能力を提供する。ＥＴＭ２３２は、ＰＣ及びＬＤＳＴアドレスにおいて、及びＬＤＳＴデータにおいてトリガすることができる。ＥＴＭ２３２は、シリアル及び外部イベントの検出をサポートする。さらに、ＥＴＭ２３２は、ＩＳＤＢブレークポイントトリガイベント、外部トリガイベント、及びＤＳＰ４０割り込みを生成する能力を有する。ＥＴＭ２３２は、ＪＴＡＧ８４を通じてプログラミング可能であり、一実施形態においては、５１２×３２ビットの専用ＥＴＢトレースレポジト２４０をサポートすることができる。ＥＴＭ２３２は、４トリガブロック（各々が２つのアドレスと１つのデータ比較器とを有する）を含むことができ、さらに３状態シーケンサを含むことができる。ＥＴＭ２３２トレーシングは、セキュアなＤＳＰ４０イネーブルレジスタの制御下で動作することができ、さらにＤＳＰ４０電力崩壊中に動作するためにプログラミングすることができる。
【００５０】
ＥＴＭ２３２は、所定の時間枠におけるスレッドに関するプログラムカウンタの全進行の記録として命令トレースを生成する。オプションとして、プログラムカウンタ進行のタイミング（例えば、ストールサイクルの識別）も、命令トレース内に含めることができる。これらの命令トレースをいつ生成すべきかを定義するためにイベント−リソース機構が用いられる。トリガ及びフィルタリング関数は、イベント−リソースのプログラミングを通じて制御される。より詳細には、イベント−リソースは、制御フィルタリング、トリガリング、及びＩＳＤＢ８２ブレークポイント生成を制御する。フィルタリングは、命令トレースをいつイネーブル及びディスエーブルにすべきかを決定する関数を含む。トリガリングは、いつトリガマーカーをパケットストリーム内に挿入すべきかを決定することを含む。ＩＳＤＢ８２ブレークポイント決定は、ＩＳＤＢ８２がデバッギング動作に関するブレークポイントを生成して応答する条件を規定することを含む。
【００５１】
ＥＴＭ２３２は、ＤＳＰ４０内の特定の条件がいつ発生するか（例えば、一定のＰＣが実行されるかどうか、又は一定のメモリ記憶場所が読み取られるかどうか）を検出するための幾つかの主イベントリソース（例えば、アドレス及びデータ比較器）を含む。さらに、イベントのより複雑な配備の検出を可能にする二次イベントリソース（トリガブロック及びシーケンサ）が存在する。
【００５２】
ＥＴＢトレースレポジトリ２４０は、トレース情報がデバイスのピンにおいてトレースポイントを通じて直ちにエクスポートされるのではなくキャプチャ中に格納されるオンチップメモリエリアを提供する。格納された情報は、キャプチャが完了された時点で引き下げられたクロックレートでＥＴＢトレースレポジトリ２４０から読み出すことができる。このことは、ＪＴＡＧインタフェース８４を通じて行われる。この２ステッププロセスは、数多くの高速デバイスピンを用いる幅広いトレースポートの必要性をなくす。実効的に、デバイスがピンにおいてＪＴＡＧポートを既に有する場合は“ゼロピン”トレースポートが生成される。ＥＴＢトレースレポジトリ２４０は、より高い周波数で及びトレースポート帯域幅制限を超える全３２ビットデータポートを用いてデータを受け入れることができ、システムインテグレータによって供給されたＲＡＭブロックと統合することができる。
【００５３】
一実施形態においては、ＥＴＢトレースレポジトリ２４０は、５１２のエントリとして配列された２ＫＢのサイズを有し、各々のエントリの幅は３２ビットである。ＥＴＢトレースレポジトリ２４０は、一組のＪＴＡＧアクセス可能レジスタを通じてユーザーとインタフェースする。各レジスタは、ＪＴＡＧインタフェース８４を通じて読み取る又は書き込むことができる。これらのレジスタは、トレース−キャプチャセッションに関するＥＴＢトレースレポジトリ２４０をセットアップするために及びトレースキャプチャが完了した時点でＥＴＢトレースレポジトリ２４０の内容を読み出すために用いられる。ＥＴＢトレースレポジトリ２４０は、ＥＴＢトレースレポジトリ２４０メモリアレイ内へのインデックスとしての読み取りポインタを提供する。ＪＴＡＧインタフェース８４を通じてＥＴＢトレースレポジトリ２４０の内容を読み出すときに、読み取りポインタは、読み取るべき記憶場所を示す。ＥＴＢトレースレポジトリ２４０は、ＥＴＢトレースレポジトリ２４０メモリアレイ内へのインデックスとしての書き込みポインタも提供する。トレースデータがＥＴＢトレースレポジトリ２４０内に書き込まれるときには、書き込みポインタによって示されたエントリに書き込まれる。書き込み動作の各々は、書き込み発生後に書き込みポインタを次の記憶場所に自動的に増分する。ＥＴＢトレースレポジトリ２４０は、ＥＴＭトレースストリームの小さいウィンドーしかキャプチャすることができない。ＥＴＢは、いつデータをキャプチャすべきかを決定するためにＥＴＭからのトリガパケットを探し、トリガカウンタは、ＥＴＢトレースレポジトリ２４０によってキャプチャされたトリガ前データとトリガ後データの分割を指定するために用いられる。
【００５４】
図９は、ＥＴＭ２３２におけるトリガブロック回路２５０を示す。ＤＳＰ４０の開示される実施形態に関するＥＴＭ２３２は、４つのトリガブロックを含み、各々のトリガブロックは、２つの単一アドレス比較器（ＳＡＣ）回路２５２及び２５４と、１つのデータ比較器（ＤＣ）回路２５６と、１６ビットカウンタ回路２５８と、を有する。トリガブロック回路２５０は、トリガリング部分２６０及びフィルタリング部分２６２の２つの主要セクションに分割することができる。トリガリング部分２６０は、（後述される）シーケンサ内にフィードし、シーケンサが状態を変更するときを制御する。トリガリング部分２６０においては、ＳＡＣ回路２５２：２５４は、ＡＮＤ／ＯＲ回路２６４にフィードし、ＡＮＤ／ＯＲ回路２６４自体は、ＤＣ回路２５６とともにＡＮＤ回路２６６にフィードする。ＡＮＤ回路２６６からの出力は、トリガマッチ信号２６８を生成するためにカウンタ回路２５８にフィードする。フィルタリング部分２６２は、いつ命令トレーシングをイネーブル又はディスエーブルにすべきかを決定する。フィルタリング部分２６２においては、ＳＡＣ回路２５２：２５４は、ＡＮＤ回路２７０にフィードする。ＳＡＣ回路は、状態イネーブル回路２７２にもフィードし、ＳＡＣ回路は、状態イネーブル回路２７４にフィードする。さらに、ＡＮＤ回路２７０は、状態イネーブル回路２７６にフィードする。ＯＲ回路は、トレースイネーブル出力２８０を生成するために状態イネーブル回路２７２：２７６から信号を受け取る。各トリガブロック回路２５０は、スレッドマッチング回路２８２を提供し、スレッドマッチング回路２８２は、以下の図１０においてさらに詳細に説明される。
【００５５】
各トリガブロック回路２５０は、ＳＡＣ回路２５２及びＤＣ回路２５６のマッチを特定のスレッド又はスレッドグループに選択的に制限するためのＡＳＩＤ及びＴＩＤマッチレジスタを含む。さらに、各トリガブロック回路２５０は、単一のハードウェアスレッドに制限することができる。ＳＡＣ回路２５２は、メモリアクセス命令によって生成されたアドレスが予めプログラミングされた値にマッチするときを検出する。ＳＡＣ回路２５２は、３２ビットの比較をサポートする。比較のためのメモリソースは、プログラムカウンタとロード／ストアアドレスとの間においてプログラミング可能である。一実施形態に関しては、比較の種類は次の選択肢、すなわち、等号(=)、不等号（！＝）、以上（≧）、又は未満（＜）、を用いてプログラミング可能である。アクセスのタイプは、ロード又はストア、ロードのみ又はストアのみに制限することができる。該実施形態においては、ＳＡＣ回路２５２：２５４は、各メモリソースに関する仮想アドレスマッチングのみをサポートすることができる。
【００５６】
ＤＣ回路２５６は、メモリアクセスデータ値が予めプログラミングされた値にマッチするときを検出し、３２ビット比較を行うことができる。６４ビットアクセスに関しては、上位ワードと下位ワードとの間においてソースをプログラミング可能である。等号（＝）及び不等号（！＝）の比較の種類をサポートする。３２ビットマスクレジスタは、比較の一部分をフィルタリングアウトするために用いることができる。ＤＣ回路２５６は、あらゆるバイトのマッチングをサポートし、アクセスのタイプは、ロード又はストア、ロードのみ、又はストアのみとして設定することができる。さらに、ＤＣ回路２５６の出力は、選択可能な形でディスエーブルにすることができる。
【００５７】
ＳＡＣ回路２５２：２５４及びＤＣ回路２５６マッチは、いつカウンタ回路２５８が減分するかを決定する。図９に示されるように、ＳＡＣ回路２５２：２５４マッチ結果は、いっしょにＡＮＤ又はＯＲすることができる。この結果は、ＤＣ回路２５６マッチ結果と結合される。この最終的な結果が、カウンタ回路２５８をイネーブルにするために用いられる。カウンタ回路２５８は、ユーザーによって定義された値を予めローディングし、マッチが発生したときに減分することができる。トリガカウンタが０になったときに、トリガブロックは、シーケンサにマッチをシグナリングする。
【００５８】
カウンタ回路２５８は、いつカウンタがリロードされるかを制御する３ビット状態イネーブルマスクを含む。新しい状態が入力されたときに、この状態が状態イネーブルマスク内のイネーブルされた状態のうちの１つとマッチする場合は、カウンタがリロードされる。カウンタは、ゼロになるごとに自動的にリロードされる。カウンタは、カウントを１に設定することによって迂回することができる。２つのＳＡＣ回路２５２：２５４からのマッチ結果は、命令流トレーシングをイネーブル又はディスエーブルにするためにも用いられる。
【００５９】
フィルタリング部分２６２は、トリガブロック回路２５０が個々のＳＡＣ回路２５２マッチに基づいてトレースするのを可能にする。従って、各ＳＡＣ回路２５２：２５４に関して、関連づけられた状態−イネーブルマスクがマッチする場合で、ＳＡＣ回路がマッチする場合は、トレーシングがイネーブルにされる。トレースは、アドレス範囲のマッチ時にも生じることができる。トレーシングは、ＳＡＣ回路２５２：２５４マッチのＡＮＤに基づいてイネーブルにされる。次に、マッチは、状態−イネーブルマスクによってさらに修飾（ｑｕａｌｉｆｙ）される。３つのトレースソースの各々は、現在の状態によってマッチを修飾するための別個の３ビット状態イネーブルマスクを有する。上記の規則を用いることで、ユーザーは、例えば、異なるトレース領域を定義することができる。１つの領域は、プログラムカウンタ（ＰＣ）が１００よりも大きく２００よりも小さい場合で、回路が状態１にある場合のみにスレッドｉに関するトレース命令の流れを含むことができる。
【００６０】
第２の領域は、ＰＣが１００未満の場合で、状態０にある場合、又はＰＣが２００よりも大きい場合で状態２にある場合に、スレッドｊに関するトレース命令の流れに関する領域であることができる。複数のトリガ−ブロックが存在するため、最終的なトレースイネーブルは、各トリガブロックのトレースイネーブルのＯＲである。アドレス比較、状態イネーブル化、及びスレッドマッチングの結合された結果とマッチする全スレッドをトレースすることができる。複数のアクティブなスレッドがイネーブル化条件とマッチする場合は、これらのスレッドは同時並行してトレースすることができる。
【００６１】
図１０は、ＴＩＤ入力２８４、ＡＳＩＤ入力２８６、及びＴＮＵＭ入力２８８に応じたスレッドマッチング回路２８２を示す。ＴＩＤ入力２８４は、ＡＮＤ回路２９０にフィードし、ＡＮＤ回路２９０は、ＴＩＤマスク回路２９２からの逆フィードも受け取る。ＴＩＤマスク回路２９２の反転回路（ｉｎｖｅｒｓｅ）も、ＴＩＤマッチ回路２９６出力とともにＡＮＤ回路２９４にフィードする。ＡＮＤ回路２９０及び２９４は、比較器回路２９８において比較され、比較器２９８の出力は、ＯＲ回路３００にフィードする。ＯＲ回路３００は、比較器回路２９８の出力をＴＩＤマッチイネーブル回路３０２の反転回路と論理的にＯＲしてＡＮＤ回路３０４にフィードする。比較器回路３０６は、ＯＲ回路３１０へのフィードを生成するためにＡＳＩＤ入力２８６をＡＳＩＤマッチ回路３０８出力と比較する。ＯＲ回路３１０は、ＡＳＩＤマッチイネーブル回路３１４反転信号の論理的ＯＲからの出力３１２を生成する。最後に、ＴＮＵＭ入力２８８が比較器回路３１６において、ＴＮＵＭマッチ回路３１８からの出力と比較され、入力信号３２０が生成される。ＯＲ回路３２２は、入力３２０を、ＴＮＵＭマッチイネーブル回路３２４からの逆フィードと論理的にＯＲさせる。スレッドマッチ信号３２６を生成する際には、ＡＮＤ回路３０４は、ＯＲ回路３００、３１０、及び３２２からの出力を論理的にＡＮＤする。
【００６２】
各トリガブロック回路２５０、従ってスレッドマッチ回路２８２、は、トリガリング部分２６０及びフィルタリング部分２６２の両方の動作を特定のスレッド又はスレッドグループに制限するように機能する。各トリガブロックは、ＴＩＤマッチ回路２９６と、ＴＩＤマスク回路２９２と、ＡＳＩＤマッチイネーブル回路３１４と、ＴＮＵＭマッチイネーブル回路３２４と、を含む。この能力を用いるため、マッチレジスタは、現在のスレッドの識別子と照合して比較するために用いられる基準値を用いてプログラミングすることができる。ＴＩＤマッチ回路２９６に関しては、比較は、ＴＩＤマスク回路２９２を通じてＴＩＤの一定部分に対して行うことに制限することができる。このことは、１つのグループのＴＩＤをマッチングするのを可能にする。さらに、各マッチ型に関して、マッチングは、ユーザーによってプログラミング可能なイネーブルレジスタを通じてディスエーブルにすることができる。トリガブロック回路２５０は、すべての修飾条件を満たすスレッドのみに関して動作する。
【００６３】
ＥＴＭ２３２の一側面は、イベント及びより複雑なイベント検出シナリオを連鎖させるためのシーケンサプロセスを含む。シーケンサプロセス及び関連づけられたトリガブロック回路２５０の動作を説明するために、図１１は、シーケンサ流れ図３３０を示す。シーケンサプロセス３３０は、トリガブロック回路入力３３２：３３８に応じて、示される例においては３つの状態Ｓ０：Ｓ２において動作する。シーケンサプロセス３１０の動作に関して、プロセスの流れは、状態Ｓ０からＳ１又はＳ２に進むことができる。Ｓ１からは、シーケンシングは、Ｓ２に進むか又はＳ０に戻る。Ｓ２からは、シーケンシングは、Ｓ１又はＳ０に進む。
【００６４】
従って、シーケンサプロセス３３０は、３つの状態Ｓ０：Ｓ２を含み、状態間の移行は、プログラミングすることができ、トリガブロック回路３３２：３３８からのマッチに基づく。図１２の表は、各移行に関するプログラミング可能な規則を示す。シーケンサプロセス３３０は、各トリガブロック回路３３２：３３８を状態イネーブルに基づいてコンディショニングするのを可能にするためにトレースフィルタリングの際に用いられる。このことは、トレーシングを一定の状態に制限するのを可能にする。新しい状態に入った時点で、各トリガブロック回路３３２：３３８内のカウンタは、初期値にリロードすることができる。所定の状態に入った時点で、ＩＳＤＢ８２ブレークポイントをアサートすることができる。所定の状態に入った時点で、トリガマーカーをトレースストリーム内に挿入することができる。所定の状態に入った時点で、外部トリガ制御もアサートすることができる。外部トリガは、シーケンサが所定の状態にあるいずれの時点においてもアサートされた状態であることができる。所定の状態に入った時点で、ＤＳＰ４０への割り込みをアサートすることができる。リセット後は、カウンタは、状態０に初期設定される。複数の移行が同時に行われる場合は、シーケンサは現在の状態にとどまる。
【００６５】
ＥＴＭは、ＤＳＰ４０の性能に関連する様々なイベントを記録できる６つのカウンタを含む。基本動作では、各カウンタをプログラミング可能なソースとして利用する。ユーザーによってプログラミング可能な領域カウンタは、実行を、固定されたサイクル数から成るウィンドーに分割する。ウィンドー中においては、イベントはカウンタ内に累積される。ウィンドーの末端において、カウンタ値がパケットに入れられてトレースポートを通じて送出される。次に、カウンタがリセットされてプロセスが再開する。プロファイリングユニットがプログラムフロートレーシングと同時に動作されたときには、プログラムフロートレースが性能イベントに関する詳細情報によってオーバーレイされる。さらに、プロファイリングユニットは、ユニットがアクティブであるときを制限するための状態イネーブルマスクを含む。
【００６６】
領域カウンタは、実行を、固定されたサイクル数から成るウィンドーに分割するために用いられる。領域のサイズは、ユーザーによってプログラミング可能なレジスタによって決定される。領域カウンタは、ユーザーによって指定された値に初期設定され、すべてのプロファイリングイベントカウンタがリセットされる。これで、領域カウンタがカウントダウンを開始する。領域カウンタがゼロになると、各々のプロファイリングイベントカウントに関する値がトレースストリーム内に放出される。次に、プロセスが再開する。領域カウンタは、状態イネーブルがマッチするときだけカウントする。プロファイリングが非アクティブであるときには、領域カウンタは、値を維持し、イネーブルにされた状態が再入力されたときに再開する。
【００６７】
プロファイリングカウンタが情報を累積することができる対象となる異なるイベントは、（ａ）ｄキャッシュミスと、（ｂ）ｄキャッシュストールサイクルと、（ｃ）ｉキャッシュミスと、（ｄ）ｉキャッシュストールサイクルと、（ｅ）ＩＴＬＢ及びＤＴＬＢミスと、（ｆ）総ストールミスと、を含む。さらに、各プロファィリングカウンタは、一定のハードウェアスレッドにおいて発生するイベントにカウンタを制限するための６スレッドマスクを含む。
【００６８】
領域カウンタと同じように、プロファィリングカウンタは、状態イネーブルマスクが現在の状態にマッチするときのみにアクティブである。その他のいずれのときにもカウントはその値を維持し、イネーブルにされた状態が再入力されたときにカウントが再開する。
【００６９】
ＥＴＭ２３２の機能は、様々なユーザーによってプログラミング可能なレジスタを設定することによって決定される。各レジスタは、ＪＴＡＧインタフェース８４を通じてアクセスされる。図１３は、この目的のためのＥＴＭ２３２制御レジスタを記載したリストを提供する。
【００７０】
要約すると、開示される主題は、プロセッサにおけるソフトウェア実行の流れに関連するリアルタイムの情報をキャプチャすることによってソフトウェア命令デバッギング動作を向上させるための方法及びシステムを提供する。この方法及びシステムは、デジタル信号プロセッサと関連づけられたコアプロセッサ内においてコアプロセッサプロセスを動作させるための命令と回路とを含む。開示される主題は、デジタル信号プロセッサのデバッギング機構内において非侵入型デバッギングプロセスを動作させる。コア処理プロセスと関連づけられたソフトウェア実行の予め決められた側面を埋め込み型トレースマクロセルを用いてリアルタイムで非侵入方式でモニタリングし、前記モニタリングすることはプロセッサにおいてリアルタイムで発生する。埋め込み型トレースマクロセルは、非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面を記録し、非侵入方式でモニタリングされたソフトウェア実行の選択可能な側面内において発生するイベントに応じて少なくとも１つのブレークポイントを生成する。本開示は、少なくとも１つのブレークポイントに応じて非侵入型デバッギングプロセスの側面を制御する。その結果、開示される主題は、マルチスレッド化デジタル信号プロセッサの全スレッドまでに関するマルチスレッドトレース命令シーケンシング及びタイミングに関して非侵入型デバッギングプロセスと協力する。
【００７１】
マルチスレッド化デジタル信号プロセッサにおける信頼される及び信頼されない非侵入型スレッド選択式デバッギングに関してここにおいて説明される処理上の特徴及び機能は、様々な方法で実装することができる。例えば、ＤＳＰ４０は、上述される動作を実行できるだけでなく、本明細書の実施形態は、ここにおいて説明される機能を果たすように設計された特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、デジタル信号プロセッサ、又はその他の電子回路において実装することができる。さらに、ここにおいて説明されるプロセス及び特長は、該様々な信号及び命令処理システムによる読み取り及び実行のために磁気媒体、光学媒体、又はその他の記録媒体に格納することができる。従って、好まれる実施形態に関する上記の説明は、当業者が請求される主題を製造または使用するのを可能にすることを目的とするものである。これらの実施形態に対する様々な修正が当業者にとって容易に明確になるであろう。さらに、ここにおいて定義される一般原理は、革新的な能力を用いずにその他の実施形態にも適用可能である。以上のように、請求される主題は、ここにおいて示される実施形態に限定されることが意図されるものではなく、ここにおいて開示される原理及び斬新な特長に一致する限りにおいて最も広範な適用範囲が認められるべきである。
【図１】
2010510584.tif 000003
【図２】
2010510584.tif 000004
【図３】
2010510584.tif 000005
【図４】
2010510584.tif 000006
【図５】
2010510584.tif 000007
【図６】
2010510584.tif 000008
【図７】
2010510584.tif 000009
【図８】
2010510584.tif 000010
【図９】
2010510584.tif 000011
【図１０】
2010510584.tif 000012
【図１１】
2010510584.tif 000013
【図１２】
2010510584.tif 000014
【図１３】
2010510584.tif 000015
【国際調査報告】
2010510584.tif 000016
2010510584.tif 000017
2010510584.tif 000018