(57)【要約】通信（例えば、ＣＤＭＡ）システムにおける送信を処理するためであることを含む（ただし、前記処理することに限定されない）デジタル信号プロセッサの設計及び使用に関する技法。マルチスレッド化デジタル信号プロセッサの処理パイプラインにおいて命令をスタッフィングすることは、デバッギング機構内においてコアプロセッサプロセス及びデバッギングプロセスを動作させることを提供する。スタッフ命令をデバッギングプロセスレジストリ内に書き込み、スタッフコマンドをデバッギングプロセスコマンドレジスタ内に書き込むことは、前記スタッフ命令を実行すべき前記マルチスレッド化デジタル信号プロセッサの予め決められたスレッドを識別することを提供する。前記命令スタッフィングプロセスは、前記予め決められたスレッド上における予め決められた実行ステージ中にデバッギングプロセス制御再開コマンドを発行し、前記デバッギングプロセス中に前記スタッフ命令を実行するように前記コアプロセッサに指示する。これで、前記コアプロセッサは、前記スタッフィングされた命令を前記コアプロセッサプロセス及び前記デバッギングプロセスと関連して実行することができる。【選択図】図９
2010510585.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”（マルチスレッド化されたプロセッサにおける可変スレッド割り当て及び切り換えに関する方法及びシステム）という題名を有する共通譲渡米国特許出願において開示される変形及び斬新な手法、を含むことができる。
【００２５】
図３は、特に、開示される主題の教示を採用することができる単一のスレッドに対して適用されるＤＳＰ４０に関するコア処理アーキテクチャ７０ブロック図を提供する。ブロック図７０は、ＡＸＩバス７４からバスインタフェース（Ｉ／Ｆ）７３を介して命令を受け取る共有命令キャッシュ７２を描き、これらの命令は、混合された１６ビットと３２ビットの命令を含む。これらの命令は、スレッドＴ０：Ｔ５のシーケンサ７６、ユーザー制御レジスタ７８、及びスーパバイザ制御レジスタ８０に届く。開示される主題のコアレベルシステムアーキテクチャは、ＪＴＡＧインタフェース８４を介してコアプロセッサ７０をインタフェースするインシリコンデバッギングシステム（ＩＳＤＢ）８２も含み、以下ではこれらの両方がさらに詳細に説明される。
【００２６】
シーケンサ７６は、ハイブリッド２方向スーパースカラー命令及び４方向ＶＬＩＷ命令をＳ−パイプユニット８６、Ｍ−パイプユニット８８、ＬＤ［Ｌｏａｄ］−パイプ９０、及びＬＤ／ＳＴ［Ｓｔｏｒｅ］−パイプユニット９２に提供し、これらの全ユニットは、汎用レジスタ９４と通信する。ＡＸＩバス７４は、バスＩ／Ｆ７３を介して、スレッドＴ０：Ｔ５への共有データキャッシュ９６ＬＤ／ＳＴ命令とも通信する。オプションのＬ２キャッシュ／ＴＣＭ９８信号は、共有データＴＣＭ１００を有するＬＤ／ＳＴ命令を含み、ＬＤ／ＳＴ命令は、さらにスレッド汎用レジスタ９４に流れる。ＡＨＢ周辺バス１０２から、ＭＳＭ専用コントローラ１０４は、Ｔ０：Ｔ５と割り込みを通信し、割り込みコントローラ命令と、デバッギング命令と、タイミング命令と、を含む。グローバル制御レジスタ１０６は、スレッドＴ０：Ｔ５と制御レジスタ命令を通信する。
【００２７】
従って、ＤＳＰ４０は、６つの仮想ＤＳＰコアを含み、各仮想ＤＳＰコアは、グローバル制御レジスタ１０６と、プライベートスーパバイザ制御レジスタ８０と、を含む。グローバル制御レジスタ１０６は、全スレッド間で共有される。各スレッドは、共通データキャッシュ及び共通命令キャッシュを共有する。ロード、ストア、及びフェッチの各動作は、共通のバスインタフェースによって対処される。高性能ＡＸＩバス７４及びそれよりも低性能のＡＨＢバス１０２は、データ及び命令トラフィックをオフコアメモリ及び周辺装置に接続するために用いられる。統合されたレベル２メモリ（キャッシュ及び／又はＴＣＭ）入力９８はオプションである。周辺装置のアクセスは、メモリによってマッピングされるロード及びストアを通じて行うことができる。ＡＨＢとＡＸＩとの間における物理アドレスパーティションは、ＭＳＭレベルで構成することができる。
【００２８】
明確なことであるが、ＤＳＰ４０に関する提示されるアーキテクチャは、経時で発展及び変化することができる。例えば、ＤＳＰ４０が用いることができる命令キャッシュ数は、６から１に、又はその他のキャッシュ数に変更することができる。ＴＣＭ１００におけるスーパースカラーディスパッチＬ１データ、及びその他のアーキテクチャ上の側面は、変更することができる。しかしながら、本主題は、非常に様々なコンフィギュレーションにおいて及びＤＳＰ４０の修正の大規模な系統に関して継続的な関連性を有することができる。
【００２９】
ＩＳＤＢ８２は、ＪＴＡＧインタフェース８４を介して、ＤＳＰ４０に関するハードウェアデバッギングプロセスを提供する。ＩＳＤＢ８２は、システム又はスーパバイザ専用レジスタを共有することによってＪＴＡＧインタフェース８４を通じてソフトウェアデバッグ機能を提供し、これらのレジスタは、１つのスレッドベースのスーパバイザ制御レジスタ８０、及び全スレッド間におけるグローバル制御レジスタ１０６に分割される。システム制御レジスタは、１つのスレッドごとの割り込みと例外制御及び１つのスレッドごとのメモリ管理活動に関して用いられる。グローバルレジスタは、デバッギング動作のためにＩＳＤＢ８２と対話することを許容する。
【００３０】
ＩＳＤＢ８２は、ＤＳＰ４０が動作する間にソフトウェア開発者が自己のソフトウェアをデバッグするのを可能にする。ＩＳＤＢ８２ハードウェアは、ＩＳＤＢ８２において動作中のソフトウェアデバッギングプロセスプログラムと組み合わせることで、ＤＳＰ４０オペレーティングシステムソフトウェアをデバッグするために用いることができる。ＩＳＤＢ８２は、デバッギングハードウェアスレッドを個々にサポートする。ユーザーは、スレッド実行を中断すること、スレッドレジスタを閲覧及び変更すること、命令とデータメモリ、単一ステップスレッド、を閲覧及び変更すること、スレッドに命令をスタッフィングすること、及びスレッド実行を再開することができる。
【００３１】
ＩＳＤＢ８２は、プログラムカウンタ上に常駐するＩＳＤＢ８２デバッギングソフトウェアと通信するためにデバッギングプロセスインタフェースカードとインタフェースすることができ、すべてＪＴＡＧインタフェース８４を通じて行うことができる。ホストデバッギングプロセスソフトウェアは、ＩＳＤＢ制御レジスタを読み取る及び書き込むことによってＩＳＤＢ８２と対話することができる。通信は、例えば、読み取り／書き込みの対象となるＩＳＤＢレジスタを識別する４０ビットパケット、及び３２ビットデータペイロードを通じて行うことができる。この動作をサポートするパケットフォーマットは、各々の幅が３２ビットであることができる最大で６４の制御レジスタであることができる。
【００３２】
図４は、プロセッサパイプライン４６に関する制御機能のうちの多くの制御機能を実行する制御ユニット（ＣＵ）１１２を含むＤＳＰ４０に関するミクロアーキテクチャ１１０の概略図である。ＣＵ１１２は、命令をスケジューリングし、３つの実行ユニットであるシフト型ユニット（ＳＵ）１１６、乗算型ユニット（ＭＵ）１１８、及びロード／ストアユニット（ＤＵ）１２０に命令を発行する。ＣＵ１１２は、スーパースカラー従属性検査も行う。バスインタフェースユニット（ＢＩＵ１１４）１２２は、ＩＵ１１４及びＤＵ１２０をシステムバス（示されていない）にインタフェースする。ＳＬＯＴ０及びＳＬＯＴ１パイプラインは、ＤＵ１２０内にあり、ＳＬＯＴ２は、ＭＵ１１８内にあり、ＳＬＯＴ３はＳＵ１１６内にある。ＣＵ１１２は、ソースオペランド及び制御バスをパイプラインＳＬＯＴ０：ＳＬＯＴ３に提供し、ＧＲＦ及びＣＲＦファイルアップデートを処理する。ＣＵ１１２は、割り込み及びリセット等の外部入力を受け入れ、ＩＳＤＢ／ＥＴＭ１２２をサポートする。ＣＵ１１２は、アドレス翻訳中に発生した保護違反に起因する例外も処理する。
【００３３】
ＩＳＤＢ８２は、３つのドメイン、すなわち、ＪＴＡＧ８４を通じてのホストデバッギングソフトウェア、ＩＵ１１４及びＣＵ１１２を通じてのＤＳＰ４０コア、及びマルチコアデバッグ（ＭＣＤ）信号インタフェースを通じてのシステム内に存在するその他のコアとインタフェースする。ホストデバッギングソフトウェアとＤＳＰ４０コアとの間の主インタフェースは、ＩＳＤＢ８２レジスタと呼ばれる一組のＪＴＡＧアクセス可能レジスタである。ホストデバッギングソフトウェアは、一連のＩＳＤＢ８２レジスタ読み取り及び書き込みを実行することによって様々なデバッギングプロセスタスクを実行する。
【００３４】
ＩＳＤＢ８２は、ＪＴＡＧインタフェース８４を通じて試験環境（この場合は、ＰＣ上に常駐するデバッギングプロセスソフトウェアと通信するＰＯＤ又はデバッギングプロセスインタフェースカード）と通信する。ホストデバッギングプロセスソフトウェアは、ＩＳＤＢ制御レジスタを読み取る及び書き込むことによってＩＳＤＢと対話する。通信は読み取る及び／又は書き込むべきＩＳＤＢレジスタ及びこの命令スタッフィングプロセスを含む様々なＩＳＤＢコマンドに関する３２ビットデータペイロードを識別する４０ビットパケットを通じて発生する。
【００３５】
図５は、開示される主題のデバッギング機構とコアプロセッサとの間におけるＩＳＤＢ／ＪＴＡＧインタフェース１１０の重要な側面を示す。ＤＳＰ４０コアアーキテクチャ７０と関連して、ＩＳＤＢ８２は、ＩＳＤＢ  ＪＴＡＧ回路１１４からの、経路ＪＴＡＧインタフェース経路１１２を介してＪＴＡＧ８４と通信する。ＩＳＤＢ  ＪＴＡＧ回路１１４は、ＪＴＡＧ８４とＩＳＤＢ８２との間におけるデータの流れを処理する。ＩＳＤＢ  ＪＴＡＧ回路１１４は、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１１６をさらにインタフェースする。ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１１６は、さらにＩＳＤＢコントローラ１１８、ＩＵ１１４及びＣＵ１１２と通信する。特に、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１３６は、ＣＵ１１２のＩＵ１１４、ＩＳＤＢ論理回路１４４、及びＣＵ  ＩＳＤＢコントローラ１４６をインタフェースする。ＣＵ ＩＳＤＢコントローラ１４６は、ＣＵ  ＩＳＤＢ論理回路１４８、及びＩＳＤＢコントローラ１３８と通信する。ＩＳＤＢコントローラ１３８からの制御出力は、ＩＳＤＢデータ出力１５４と、ＩＳＤＢリセット信号１５０と、ＩＳＤＢ割り込み１５２と、を含む。ＩＳＤＢコントローラ１３８へのさらなるインタフェースは、ＭＣＤインタフェース１５６と、ＥＴＭブレークトリガ１５８と、を含む。
【００３６】
ＩＳＤＢ８２は、ＭＣＤインタフェース１５６を通じてＭＳＭレベルでマルチコアデバッグに関するフックアップを提供する。ＭＣＤインタフェース１５６は、コアプロセッサ７０のブレーク又は再開をトリガする一対の入力信号及びコアプロセッサ７０がデバッギングプロセス又は再開プログラムの実行に入ることを示す一対の出力信号から成る。ＭＣＤブレークトリガは、エッジに基づくプロトコルに従うことができ、従って、外部ブレークポイントトリガにおいて立ち上がりエッジが検出されたときには、外部ブレークポイントスレッド番号マスクにおいて示されたスレッドが実行を中断してデバッグモードに入る。同様に、ＭＣＤ外部再開トリガにおいて立ち上がりエッジが検出されたときには、外部再開スレッド番号マスクにおいて示されたスレッドが、デバッグモードにある場合に、通常のプログラムの実行を再開する。
【００３７】
ＩＳＤＢ８２制御論理は、２つのブロック、すなわち、ＩＳＤＢ８２のＩＳＤＢコントローラ１３８及びＣＵ１１２のＣＵ  ＩＳＤＢコントローラ１４６にわたって拡散される。ＩＳＤＢコントローラ１３８は、ＩＳＤＢイネーブル、ＩＳＤＢバージョン、及びＩＳＤＢ汎用レジスタレジスタを実装するタスクを処理する。ＭＣＤ外部ブレーク及び再開トリガ１５６及びＥＴＭブレークトリガ１５８は、さらなる処理のためにＣＵ  １１２に転送される前にコアプロセッサ７０クロックと同期化される。ＩＳＤＢコントローラ１３８は、コアプロセッサ７０のデバッグモード状態に基づいてＭＣＤブレークトリガ及びＭＣＤ再開トリガも生成する。ＩＳＤＢコントローラ１３８は、ＤＳＰ４０に送出された信号、例えば、ＩＳＤＢ割り込み信号、ブレークイベント信号、及びその他の信号、に関するパイプラインステージを追加する。制御論理のうちでブレークポイント処理、ミクロコマンド生成器、メールボックス及び状態論理を含む残りの部分は、ＣＵ  ＩＳＤＢコントローラ１４６によって処理される。
【００３８】
ＣＵ１１２は、（ａ）ブレークポイントを処理する及び各スレッドへのブレークトリガを生成する、（ｂ）ミクロブレークコマンド及びミクロ再開コマンドを生成する、（ｃ）ＩＳＤＢ８２状態及びメールボックスレジスタを維持する、及び（ｄ）一定のＩＳＤＢ８２レジスタを実装するというタスクを処理することができる回路及び命令を含む。ＣＵ１１２は、すべてのブレークポイントを処理してＣＵ  ＩＳＤＢコントローラ１２６のミクロコマンド生成器へのマクロブレーク要求を生成するための図８に示されるようなブレークポイント処理論理（ＢＰＬ）ブロックを含む。ミクロコマンド生成器は、マクロブレーク要求を命令スタッフコマンド、命令ステップ及び再開コマンドとともに処理し、ミクロブレーク及び再開コマンドをパイプライン制御のためにＣＵ１１２に発行する。
【００３９】
ＣＵ  ＩＳＤＢコントローラ１２８は、ブレーク信号及び戻された再開肯定応答信号に基づいてＩＳＤＢ８２の状態を維持する。ＣＵ  ＩＳＤＢコントローラ１４６のメールボックス機能は、ホストデバッグソフトウェアとＤＳＰ４０コアプロセッサとの間の通信に関して用いられるメールボックスレジスタを維持する。これらのメールボックス機能は、ＩＳＤＢ８２状態レジスタも含む。
【００４０】
ここにおいて開示される命令スタッフィング動作を非侵入型デバッギング動作と関連して実行するための例示的回路を実証するために、図６は、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１６０を含む。ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１６０は、ＤＳＰ４０がＩＳＤＢ制御レジスタを読み取る及び書き込むために用いることができるＩＳＤＢ試験データレジスタ１６２を含む。ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１６０は、ＤＢ＿ｔｃｋにおいて動作するＩＳＤＢ試験データレジスタ１６２とＤＳＰ４０クロック領域において動作するＩＳＤＢ制御レジスタ１６４との間における同期化論理を提供する。ＩＳＤＢ制御レジスタを読み取る及び書き込むことによって、ＤＳＰ４０は、ここにおいて開示される命令スタッフィング動作を含む、ＩＳＤＢ８２によってサポートできるような様々なデバッギングプロセスタスクを実行する。
【００４１】
図６の実装においては、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１６０は、ＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｏｕｔ信号１６６を生成するためにＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｉｎ信号１６４を受信してＩＳＤＢ試験データレジスタ２０４に入れる。ＩＳＤＢ試験データレジスタ１６２は、読み取り／書き込み（Ｒ／Ｗ）ビット１６７と、アドレスビット［６：０］１６８と、データビット［３１：０］１７０と、を含む。Ｒ／Ｗビット１６７内の値は、Ｓｙｎｃ回路出力１７４及びＣＵ１１２＿ｔｒｕｓｔｅｄＤｅｂｕｇ入力１７６と同様に、ＡＮＤゲート１７２に行く。ＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｕｐｔａｋｅ＿ｔｋｌ信号１７８及びＩＳＤＢ＿ＣＬＫ信号１８０は、Ｓｙｎｃ回路１７４の動作を制御する。アドレスビット１６８からのアドレス情報は、アドレスデコード回路１７６によって受け取ることができ、アドレスデコード回路１７６は、ＩＳＤＢレジスタ１８４をフィード（ｆｅｅｄ）する。ＩＤＳＢレジスタ１８４は、ＡＮＤゲート１７２からの書き込みイネーブル信号１８６に応じてデータビット［３１：０］を有するデータを転送する。
【００４２】
ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路１３０は、ＤＢ＿ＪＴＡＧブロックのＪＴＡＧ  ＴＣＫにおいて実行中のＴＡＰコントローラとＩＳＤＢコントローラ１３８、ＣＵ１１２＿ＩＳＤＢＣｔｒｌ１４６及びＩＵ１１４において分散されたＤＳＰ４０コアクロックにおいて実行中のＩＳＤＢレジスタ１８４との間における同期化ブリッジとして働く。ＩＳＤＢコントローラ１３８及びＣＵ  ＩＳＤＢコントローラ１４６は、ミクロコマンド生成器、ブレークポイント処理論理及び様々なＩＳＤＢレジスタ１８４（構成、メールボックス、コマンド、等）から成るＩＳＤＢ８２の制御論理を含む。これらのブロックは、ＤＳＰ４０コアにおいてホストデバッギングソフトウェアによって開始される異なるデバッギングデバッギングプロセスタスクを実行する。ＩＳＤＢ割り込み信号は、ＤＳＰ
サブシステムに送出され、ＤＳＰサブシステムにおいてその他の割り込みソースと結合されてＤＳＰコア７０に戻される。同様に、ＩＳＤＢ８２リセットが、その他のリセットソース（電源オンリセット、ソフトウェアリセット、等）と結合されてコアへのリセットがトリガされる。ＩＳＤＢ８２は、ＭＣＤ信号インタフェースを通じて外部システム（例えば、ＤＳＰ４０の外部のＭＳＭシステム）とインタフェースする。ＤＳＰ４０及び外部システム内のその他のコアの同時デバッギングをサポートするために２対のブレーク及び再開トリガが提供される。
【００４３】
図７は、ＤＳＰ４０の様々なモード制御に関する側面に関する処理モード図１９０を示し、デバッギングプロセス中におけるＩＳＤＢ８２の動作を含む。図７においては、ＤＳＰ４０は、全スレッドに対してグローバルであり個々のスレッドに対してローカルである処理モードをサポートする。各ＤＳＰ４０ハードウェアスレッドは、すべて図７において示されるように、２つの実行モード、ユーザー（ＵＳＥＲ）モード１９２とスーパバイザモード１９４、及び３つの非処理モードすなわち待機（ＷＡＩＴ）モード１９６、ＯＦＦモード１９８、及びデバッグモード２００、を個々にサポートする。スレッドのモードは、その他のスレッドと独立しており、例えば、１つのスレッドは待機モード１９６であることができ、他のスレッドは、ユーザーモード１９２であり、以下同様である。
【００４４】
図７の１つのスレッドごとのモード状態図は、様々な命令又はイベントによってサポートされる。これらは、“例外”すなわち内部例外イベントと、“Ｉｎｔ”すなわち外部割り込みイベントと、“ＲＴＥ”すなわち例外モードからのソフトウェアリターン命令と、“ＳＳＲ”すなわちＳＳＲレジスタ命令の更新と、あらゆるモードから入力することができる“停止”すなわちソフトウェア停止命令と、同じくあらゆるモードから入力することができる“開始”すなわちソフトウェア開始命令と、“トラップ”すなわちソフトウェアトラップ命令と、“待機”すなわちソフトウェア待機命令と、“再開”すなわちソフトウェア再開命令と、“ＤＥ”すなわちデバッグイベントと、“ＤＲ”すなわちデバッグ命令と、を含む。請求される主題の異なる実装における機能は、ここにおいて提示される機能とわずかに異なることができる一方で、“開始”、“待機”、“再開”、“ＤＥ”、及び／又は“ＤＲ”の意味は、請求される主題の適用範囲と一致する最も広義の解釈を行うことができる。
【００４５】
レジスタは、ＤＳＰ４０においてユーザーモード１９２及びスーパバイザモード１９４の両方において利用可能である。ユーザーモードレジスタは、一組の汎用レジスタ及び一組の制御レジスタに分割される。汎用レジスタは、アドレス生成、スカラー及びベクトル算術を含むすべての汎用演算に関して用いられる。制御レジスタは、ハードウェアループ、プレディケート、等の特殊目的の機能をサポートする。汎用レジスタは、幅が３２ビットであり、単一レジスタとして又は２つのレジスタの整列された対としてアクセスすることができる。汎用レジスタファイルは、命令に関する全オペランドを提供し、ロード／ストアに関するアドレスと、数値命令に関するデータオペランドと、ベクトル命令に関するベクトルオペランドと、を含む。
【００４６】
デバッグモード２００は、スレッドがＩＳＤＢ８２からのコマンドを待っている特別な状態を提供する。例えばソフトウェアブレークポイント命令の実行、ＩＳＤＢ８２からのブレークコマンド、又はハードウェアブレークポイントの発生によって、ＩＳＤＢデバッグイベントが生じるごとに、示されたスレッドは、デバッグモード２００に入ることができる。デバッグモード２００においては、コアは、ＪＴＡＧインタフェース８４からのコマンドを介してＩＳＤＢ８２によって制御される。ＩＳＤＢ８２が再開コマンドの実行に起因してスレッドをリリースすると、スレッドは、現在のモード設定に従って動作を再開することができる。スレッドがデバッグモード２００にあるときには、ＩＳＤＢ８２によって制御され、その他のスレッドによって制御することはできない。該制御は、ここにおいて開示される命令スタッフィング動作を通じて提供することができる様々な命令の実行を含むことができる。デバッグモード２００におけるスレッドをターゲットにした、実行中のスレッドからの待機命令、再開命令、開始命令、又は停止命令は、無視することができる。同様に、マスク不可割り込み（ＮＭＩ）は、デバッグモード２００にあるスレッドは無視することができる。
【００４７】
ハードウェアリセット（ＨＡＲＤＷＡＲＥ  ＲＥＳＥＴ）モード（図７に示されていない）及びデバッグモード２００は、全スレッドに対してグローバルである。ハードウェアリセットピンがアサートされるごとに、あらゆるスレッドがどのような処理状態であるかにかかわらず、ＤＳＰ４０は、ハードウェアリセットモードになることができる。ハードウェアリセットモードにおいては、全レジスタが各々のリセット値に設定される。どのような処理も、ハードウェアリセットピンがデアサートされるまで行うことができない。リセットピンがアサートされた時点で、プロセッサは、リセットモードに移行することができ、全レジスタをハードウェアリセット値にリセットすることができる。リセットピンがデアサートされた後は、スレッドＴ０にソフトリセット割り込みを与えることができる。このことは、スレッドＴ０にスーパバイザモード１９４に入らせてリセットされたベクトル位置での実行を開始させることができる。その他の全スレッドは、オフ状態であることができる。この時点においては、ソフトウェアは、各スレッドに関するモード移行を個々に自由に制御することができる。
【００４８】
図８において、ＣＵ  ＩＳＤＢコントローラ１４６のＢＰＬ回路２１０は、ハードウェアブレークポイント０／１（ＨＷＢＫＰＴ０  ２１２及びＨＷＢＫＰＴ１  ２１４）と、ソフトウェアブレークポイント（ＳＷＢＫＰＴ  ２１６）と、ＪＴＡＧインタフェース８４ブレークポイント（ＪＴＡＧＢＫＰＴ  ２１８）と、ＥＴＭ（埋め込み型トレースマクロ）ブレークポイント（ＥＴＭＢＫＰＴ２２０）と、外部ブレークポイント（ＥＸＴＢＫＰＴ２２２）と、を含む６つの異なるソースからのブレークトリガを含む。ブレークトリガ２１２乃至２２２及びデバッグモード状態入力２１４は、エンコードブレーク符号器２１６に行き、ＤＳＰ４０にデバッグモード２００において動作させる。符号器２２６からの出力は、３つのブレークポイント情報ビット２２８と、ブレークポイント有効ビット２３０と、を含む。ブレークポイント情報データ２２８は、ブレークポイント情報回路２３２に入ってブレークポイント情報ＪＴＡＧインタフェースコマンド２３４を生じさせる。ブレークポイントビット２３０は、さらに、ＯＲゲート入力２３６及びリセット回路２３８入力も生成する。リセット回路２３８は、ＵＣＧ再開スレッド番号又はリセット入力２４２のいずれかを受け取り、ＯＲゲート２４６内へのリセット制御出力２４４を生成する。有効ビット２３６又はリセット出力２４４のいずれも、ＯＲゲート２４６にＢＰＬブレークポイント出力２４８を生成させることができる。
【００４９】
ＢＰＬ回路２１０内のブレークトリガは、対応するスレッド番号マスクとともに処理され、各々のスレッドに対するマクロブレークトリガが生成される。対応するスレッドが再開されるまでマクロブレークトリガ２４８ｂｐｌ＿ｂｒｅａｋＴｎｕｍ＿ＡＮＹ［０］が維持される。ＢＰＬ回路２１０において用いることができるパイプラインステージ数は、正確なブレークポイントであるハードウェアブレークポイントによってドライブされる。すなわち、ハードウェアブレークポイントマッチをトリガする命令は実行してはならない。スレッドは、その命令までプログラムを実行後にデバッグモードに切り換わる。開示される実施形態は、ブレークトリガが到着してから１サイクル後にマクロブレークトリガを提供する。そのため、ブレーク有効入力２２６がラッチされたバージョン入力２４２と論理的にＯＲされてｂｐｌ＿ｂｒｅａｋＴｎｕｍ＿ＡＮＹ［０］出力２４８が生成される。
【００５０】
ブレークポイントを用いることで、ＤＳＰ４０の６つのスレッドは、個々にデバッグモード２００に入ること及びデバッグモード２００から出ることができる。ブレークポイントトリガは、ＩＳＤＢ８２においてサポートされる５つの異なる種類のブレークポイントに対応する５つのソースから来ることができる。スレッドは、ブレークポイントをヒットした時点で、現行モード（例えば、待機／実行（ＲＵＮ））からデバッグモード２００に移行する。デバッグモード２００において、スレッドは、ＩＳＤＢ８２からのコマンドを待つ。ＯＦＦモード１９８にあるスレッドはパワーダウンされ、ＩＳＤＢ８２からのコマンドを受け入れることができない。デバッグモード２００に入るレーテンシーは、実装によって定義され、例えば、本開示においては、イベント電力崩壊に関連するとして定義される。例えば、一実装は、デバッグモード２００に入る前に、所定の動作を完了させる、例えば未解決のロード要求を終了させる、ことを選択することができる。一実施形態においては、スレッド識別子レジスタは、８ビットの読み取り／書き込みフィールドを含み、ソフトウェアスレッド識別子を保持するために用いられる。このフィールドは、ブレークポイントとマッチさせるためにハードウェアデバッギングプロセスによって用いられる。
【００５１】
従って、ＩＳＤＢ８２は、４つの動作、すなわち、ブレーク、再開、スタッフ命令、単一ステップ、を有する。ミクロアーキテクチャの観点からは、２つの基本動作、ブレーク及び再開、が存在する。ミクロブレークコマンド及びミクロ再開コマンドは、ブレーク、スタッフ命令及び単一ステップの動作を指す。例えば、スタッフ命令動作は、スタッフ命令動作後にミクロ再開コマンドによって後続されるミクロブレークコマンドであるとみることができる。ブレークポイント動作は、ここにおいて説明されるように、５つのソースからトリガすることができる。各ブレークソースは、対応するトレッド番号マスク値において指定される複数のスレッドをブレークすることができる。
【００５２】
図９は、開示される主題の一実施形態に関するＩＳＤＢレジスタの内容を示す。これらのＩＳＤＢ制御レジスタは、異なるデバッギングプロセスタスクを実行するように及びプロセッサと通信するようにＩＳＤＢ８２を構成するためにホストシステムによって用いることができる。これらのレジスタは、ＪＴＡＧインタフェースを通じてアクセス可能である。ＩＳＤＢ状態レジスタ（ＩＳＤＢＳＴ）は、ＩＳＤＢの現在の状態を示し、“０”値はスタッフ命令が成功であることを示し、“１” 値はスタッフ命令が例外を発生させたことを示すスタッフコマンド状態ビットを含む。ホストシステムは、ＩＳＤＢ８２の様々な特長をイネーブル又はディスエーブルにするためにＩＳＤＢ構成レジスタ０及び１（ＩＳＤＢＣＦＧ０、ＩＳＤＢＣＦＧ１）を用いることができる。ブレークポイント情報レジスタ（ＢＲＫＰＴＩＮＦＯ）は、デバッグモードにあるスレッドに関して、いずれのトリガがブレークポイントを発生させたかを示す。ブレークポイントＰＣレジスタ０及び１（ＢＲＫＰＴＰＣ０、ＢＲＫＰＴＰＤＣ１）は、ＢＲＫＰＴＰＣ０、制御ハードウェアブレークポイント０及び１とそれぞれ同一である。ブレークポイント構成レジスタ（ＢＲＫＰＴＣＦＧ０及びＢＲＫＰＴＣＦＧ１）は、ブレークポイント０及び１を構成するためにそれぞれ用いられる。スタッフ命令レジスタ（ＳＴＦＩＮＳＴ）は、３２ビットスタッフ命令を考慮する。ＩＳＤＢメールボックスレジスタ（ＩＳＤＢＭＢＸＩＮ及びＩＳＤＢＭＢＸＯＵＴ）を用いてＩＳＤＢとコアプロセッサ７０との間でデータを交換する。ＩＳＤＢコマンドレジスタ（ＩＳＤＢＣＭＤ）は、様々なコマンドをＩＳＤＢ８２に発行するためにＤＳＰ４０によって用いられる。このＩＳＤＢイネーブルレジスタ（ＩＳＤＢＥＮ）は、ＩＳＤＢの動作をイネーブルにし、“セキュリティ”ＩＳＤＢイネーブルビット及びＩＳＤＢクロックの状態を検査することを可能にする。ＩＳＤＢバージョンレジスタ（ＩＳＤＢＶＥＲ）は、チップ内に存在するＩＳＤＢ設計 のバージョンを読み取る。ＩＳＤＢ汎用レジスタ（ＩＳＤＢＧＰＲ）は、ＩＳＤＢ８２と関連づけられた一般的機能に関する記憶領域を提供する。
【００５３】
ＩＳＤＢコマンドレジスタは、開示される実施形態においては、ＤＳＰ４０内に値が出力される３２ビットレジスタを提供する。ＩＳＤＢコマンドレジスタは、外部ハードウェアを制御するために、及びＭＳＭ特有の方法で用いることができる。ＩＳＤＢ制御レジスタは、ＪＴＡＧインタフェース８４を通じてデバッギングプロセスホストソフトウェアによってアクセスされ、３つのユニット、ＩＳＤＢ８２、ＩＵ  １１４及びＣＵ  １１２全体に分散される。すべてのレジスタをＩＳＤＢ８２内に入れる代わりに、これらのレジスタは、レジスタ値が主に用いられるユニット内にローカルで配置される。
【００５４】
図９のＩＳＤＢレジスタは、ＩＳＤＢ８２、ＩＵ  １１４及びＣＵ  １１２の間で次の形で分散される。すなわち、ＩＳＤＢ８２は、ＩＳＤＢイネーブルレジスタと、ＩＳＤＢバージョンレジスタと、ＩＳＤＢ汎用レジスタと、を含む。ＣＵ１１２は、ＩＳＤＢ制御メールボックス、ブレークポイント論理、及びミクロコマンド生成器ブロックが存在し、ＩＳＤＢ構成レジスタ（ＩＳＤＢＣＦＧ０及びＩＳＤＢＣＦＧ１）と、コマンドレジスタ（ＩＳＤＢＣＭＤ）と、ブレークポイント構成レジスタ（ＢＲＫＰＴＣＦＧ０及びＢＲＫＰＴＣＦＧ１）と、ブレークポイント情報レジスタ（ＢＲＫＰＴＩＮＦＯ）と、ブレークポイント状態レジスタ（ＩＳＤＢＳＴ）と、ブレークポイントメールボックスｉｎレジスタ（ＩＳＤＢＭＢＸＩＮ、ＩＳＤＢＭＢＸＯＵＴ）と、を含む。ＩＵ１１４  １１２レジスタブロックは、ブレークポイントコマンドレジスタ（ＢＲＫＰＴＰＣ０、ＢＲＫＰＴＰＣ１）と、ブレークポイント構成レジスタ（ＢＲＫＰＴＣＦＧ０、ＢＲＫＰＴＣＦＧ１）と、本開示に該当するスタッフ命令レジスタ（ＳＴＦＩＮＳＴ）と、を含む。
【００５５】
ここにおいて開示される命令スタッフィングは、ＩＳＤＢ８２がコアにおいて命令を実行するための方法及びシステムを提供する。命令は、様々な理由でスタッフィングされる。これらの理由は、コアレジスタ及びメモリを読み取る及び／又は書き込むことと、ユーザーのために要約が作成された（ａｂｓｔｒａｃｔｅｄ）プロセス動作及びユーザーによって入力された命令をデバッギングすること、とを含むことができる。命令をスタッフィングするために、ユーザーは、最初に、ＩＳＤＢコマンドレジスタのＳＴＦＩＮＳＴレジスタを実行すべき３２ビット命令によってプログラミングする。次に、ＩＳＤＢコマンドレジスタが書き込まれ、最初にコマンドフィールドがＳＴＵＦＦコードに設定される。次に、プロセスは、命令を受け取るためにスレッド番号フィールドをスレッドに設定する。好ましいことに、スレッド番号フィールド内の１つのビットを設定することができる。命令をスタッフィングできるためにはその前に、選択されたスレッドがデバッグモード２００になければならない。スレッド番号内の２つ以上のビットが設定される場合又は選択されたスレッドがデバッグモードにない場合は、結果は未定義である。次に、命令スタッフィングプロセスは、（ユーザーモード１９２又はスーパバイザモード１９４において用いるために）スタッフィングされた命令の特権レベルを設定することを含む。ＳＴＵＦＦコマンドを発行後は、選択された特権レベルを有する選択されたスレッドにおいて命令を実行することができる。命令スタッフィング中には、プログラムカウンタ（ＰＣ）は進まない。ＰＣを分岐のために用いるスタッフィングされた命令、又は例外が生じさせる命令は、スタッフィングされた命令が実行するスレッドに関して現在のＰＣ値を用いることができる。
【００５６】
スタッフィングされた命令が例外を生じさせる場合は、ＩＳＤＢ状態レジスタ、ＩＳＤＢＳＴ、は、例外が発生したことを示すことができる。スレッドは、デバッグモードにとどまることができる。特定のことに関してアーキテクチャ化されたレジスタは、例外状態を反映させることができる。例えば、ＴＬＢミス例外を発生させるＬＯＡＤ命令がスタッフィングされる場合は、例外レジスタ（ＥＬＲ）を現在のＰＣに設定することができ、ＰＣを例外ベクトルに変更することができ、状態レジスタ（ＳＳＲ）は正確な原因符号及び状態情報を保持することができる。デバッギングプロセスソフトウェアは、例外が発生したかどうかを確認するために例外を発生させた命令をスタッフィング後にＩＳＤＢＳＴに問い合わせることができる。例外が発生した場合は、制御レジスタ転送命令をスタッフィングすることを介してＳＳＲレジスタを読み取って例外原因を決定することができる。
【００５７】
例外が認識された時点で、デバッギングプロセスは、状況の処理の仕方に関して幾つかの選択肢を有する。例えば、デバッギングプロセスは、例外リターンポイントにおいてソフトウェア又はハードウェアブレークポイントをプログラミングし、ハンドラを実行するためにスレッドを再開させるのを選択することができる。さらに、デバッギングプロセスは、オペレーティングシステム“ヘルパー関数”にスレッドをリダイレクションすること、及び単一ステップ関数を用いてハンドラ内を進むことが可能である。さらに、デバッギングプロセスは、手作業で問題を解決することができる（例えば、ＴＬＢをリロードする）。正確な戦略は、オペレーティングシステム及び／又はデバッギングプロセスの実装に委ねられる。
【００５８】
レジスタ、キャッシュ、及びメモリは、該当する命令シーケンスをスタッフィングすることによってアクセスすることができる。デバッギングプロセスソフトウェアは、該当する制御レジスタ転送命令をスタッフィングしてコアレジスタとＩＳＤＢメールボックスとの間でデータを移動させることによってスレッドレジスタを読み取る／書き込むことができる。この命令は、実行が行われないようにスーパバイザ特権レベルを用いることによってスタッフィングすることができる。キャッシュ内容（データ及びキャッシュタグ値）は、該当するキャッシュ維持及びロード命令をスタッフィングすることによって読み取る及び／又は書き込むことができる。
【００５９】
メモリは、該当するＬＯＡＤ／ＳＴＯＲＥ命令をスタッフィングすることによって読み取る／書き込むことができる。ＭＭＵがイネーブルにされたときには、ロード及びストアは、常に仮想アドレスを用いて実行する。ＭＭＵは、キャッシュメモリ内に格納できる情報、例えばキャッシャ可能、キャッシュ不能、等のシグナリング、を提供する。例えばキャッシュされないメモリ内のデバイスから読み取るために特定のソースからメモリにアクセスするのが希望される場合は、デバッギングプロセスソフトウェアは、ＭＭＵがこのアクセスに関して適切に構成されることを確認する。一定のデバッグシナリオに関して、デバッギングプロセスソフトウェアは、オペレーティングシステムの助けを借りて特定のシナリオを構成することができる。
【００６０】
キャッシュ内容は、あたかもスタッフィングされた命令が通常のプログラムの流れから来たものであるかのように影響を受ける。例えば、データキャッシュ内においてミス（ｍｉｓｓ）するキャッシュ可能ロードは、ラインの交換を生じさせることがある。１つのスレッドがデバッグモードにあり、その他のスレッドが実行中である場合は、キャッシュ内容は適宜変わることができる。キャッシュ又はキャッシュされないロードにおいてミスするロードの場合は、スタッフコマンドは、ロードデータが戻って動作が正常に完了するまではＩＳＤＢ状態レジスタ内において完了したと報告することができない。
【００６１】
命令メモリを読むためには、データメモリを読むのと同様の手順に従うことができる。命令メモリを書き込む、例えばソフトウェアブレークポイントを設定するためには、デバッギングプロセスソフトウェアは、最初に、命令メモリを書き込むためにＳＴＯＲＥメモリをスタッフィングすることができる。プロセスは、データを強制的に外部メモリ内に入れるためのデータキャッシュクリーンアドレス命令をスタッフィングすることと、変更が外部メモリ内において観察できるようにするためのバリヤ命令をスタッフィングすることと、命令キャッシュから旧エントリを取り除くための命令キャッシュ無効化アドレス命令と、を含む。
【００６２】
ここにおいて開示される命令スタッフィングは、ＤＳＰ４０をリセットすることと関連して用いることもできる。ＩＳＤＢ  ＲＥＳＥＴコマンドは、ハードウェアリセットを強制し、ＤＳＰ４０全体、すなわち全スレッド、をリセットさせることに注目すること。このことは、全レジスタを初期値に設定し、スレッドＴ０：Ｔ５の電源をオフにし、リセット割り込みをスレッドＴ０に送ることができる。他方、一定のスレッドをリセットするのが希望される場合は、命令スタッフィングを用いて行うことができる。ステップは、該当するマスク設定を用いて“ＳＴＡＲＴ”命令をスタッフィングすることを含む。このことは、リセット割り込みを示されたスレッドに対して保留状態にすることができる。シーケンスは、希望されるスレッドに関してＩＳＤＢ  ＲＥＳＵＭＥ命令を実行することを含む。従って、該シーケンスを実行することは、ＤＳＰ４０全体をリセットせずに、スレッド選択式リセットという有利なプロセスを可能にする。
【００６３】
図１０は、開示される非侵入型デバッギングプロセスにおける開示される命令スタッフィングプロセスを描くための処理タイミングサイクル図である。図１０において描かれるように、特定のスレッドにおけるスタッフ動作中の信号挙動は、ＤＳＰ４０の単一スレッドにおけるイベントのシーケンスを示す。対応するパイプラインステージにおいても各スレッドによって同様の挙動を観察することができる。スタッフィングされた命令は、ＩＳＤＢコマンドレジスタのＳＴＦＩＮＳＴレジスタに書き込むことによって提供される。スタッフィングされた命令を実行するために、デバッグソフトウェアは、スタッフコマンドを用いてＩＳＤＢコマンドレジスタに書き込む。このコマンドは、スタッフィングされた命令が実行するための特定のスレッドも提供する。ＩＳＤＢ制御レジスタ１３８は、スタッフ命令が実行されるスレッドに関するスレッドパイプライン処理のＥＸ３ステージにおいてミクロ再開コマンドを発行する。この時点において、ＣＵ  ＩＳＤＢミクロ再開型ＥＸ３レジスタは、“０ｘ２”に設定される。このことは、発行されたミクロ再開コマンドがスタッフ動作を実行すべきであることを示す。ＣＵ１１２は、後続サイクルのＷＢステージにおいてＣＵデバッギング例外命令をアサートする。ＣＵデバッギング例外命令を受け取った時点で、ＩＵ１１４は、旧命令バッファ状態をクリアし、正規の例外に類似する新しい記憶場所からフェッチする準備をする。
【００６４】
ＣＵ１１２は、後続するＲＦステージにおいてスタッフ命令要求をＩＵ１１４に発行し、ＷＢステージにおいてＣＵ次発行ポインタ命令をアサートする。ＣＵ次発行ポインタ命令を受け取った時点で、ＩＵ１１４は、ＵＣ命令と同様の形でスタッフィングされた命令をＣＵ１１２に提供する。スタッフィングされた命令は、１つのスレッドごとに多重化する代わりに、ＩＵ１１４内部におけるＢＵリターンデータと多重化することができる。この特長は、多重化コストを節約し、命令キャッシュにおける経路混雑を緩和する。ミクロ再開コマンドは、スタッフィングされた命令の特権レベルを示すために側波帯信号と関連づけられる。このことは、ユーザーモード１９２又はスーパバイザモード１９４のいずれかにおける実行を可能にする。
【００６５】
スタッフィングされた命令が実行中に、ＣＵ１１２は、正規のプログラム命令を用いて命令バッファをリストアするために他の命令要求をＩＵ１１４に送る。スタッフィングされた命令がコミットされたときには、ＣＵ１１２は、再開状態が成功であるかどうかにかかわらず、ＷＢ処理ステージにあるミクロ再開状態を肯定応答とともに戻す必要がある。ＩＳＤＢコントローラ１３８は、ＣＵ１１２が次の命令を実行するのを防止するために次のＲＦステージにおいてミクロブレークコマンドを発行する。再開状態が成功でない場合は、ＣＵ１１２は、例外を通常の方法で処理するようにＩＵ１１４に命令することができる。しかしながら、唯一の理由は、スタッフィングされた命令が例外を発生させることである点に注目すること。現在のプログラムカウンタは、ＥＬＲにして例外ハンドラエントリポイントに合わせて更新することができる。スレッドは、ミクロブレークコマンドに起因して停止させることができる。ミクロブレークコマンド肯定応答を受け取り後は、スタッフ命令を完了させることができる。従って、ミクロブレークコマンド状態は、この場合においては常に成功であることができる。
【００６６】
要約すると、開示される主題は、向上されたソフトウェア命令デバッギング動作に関してマルチスレッド化デジタル信号プロセッサの処理パイプライン内に命令をスタッフィングするための方法及びシステムを提供する。この方法及びシステムは、デバッギングプロセスレジスリ内にスタッフ命令を書き込むことを提供する。本開示は、スタッフィングされた命令を実行するためにデバッギングプロセスコマンドレジスタにスタッフコマンドを書き込むことを含む。スタッフ命令の実行が実行されるべきマルチスレッド化デジタル信号プロセッサの予め決められたスレッドがスタッフ命令によって識別される。プロセス及びシステムは、マルチスレッド化デジタル信号プロセッサ上においてスレッドを実行する予め決められたステージ、すなわちＥＸ３ステージ、中にＣＵ１１２デバッギングプロセス制御再開コマンドを発行し、発行された再開コマンドがスタッフ動作を実行すべきであることを示すためにＣＵ１１２デバッギングプロセス再開型を予め決められたスレッド実行ステージに設定する。本開示は、後続するサイクルのＷＢステージにおいてＣＵ１１２例外コマンドもアサートし、ＣＵ１１２例外コマンドのアサート時に旧命令バッファ状態をクリアする。次に、この方法及びシステムは、デバッギングプロセス例外にもかかわらずＥＬＲを維持しながら正規の例外と類似する新たな記憶場所からフェッチする準備をする。
【００６７】
さらに、本実施形態は、引き続く処理ステージにおいてＣＵ１１２からＩＵ１１４にスタッフ要求を送り、次のサイクルにおいてＣＵ１１２次発行ポインタをアサートする。スタッフィングされた命令は、ＣＵ１１２次発行ポインタを受け取り時点でＣＵ１１２に提供され、ＩＵ１１４は、ＵＣ命令と同様の形でＣＵ１１２にスタッフィングされた命令を提供する。スタッフィングされた命令は、１つのスレッドごとではなく、ＩＵ１１４内部のＢＵリターンデータと１回だけ多重化される。ミクロ再開コマンドは、スタッフィングされた命令（ユーザー／スーパバイザモードにおいて実行）の特権レベルを示すために側波帯信号と関連づけられる。スタッフィングされた命令が実行中である間に、ＣＵ１１２は、正規のプログラム命令を用いて命令バッファをリストアするために他の命令要求をＩＵ１１４に送る。次に、スタッフィングされた命令がコミットされたときには、ＣＵ１１２は、再開状態が成功であるかどうかにかかわらず、ＷＢにおけるミクロ再開状態を肯定応答とともに戻す必要がある。ＣＵ  ＩＳＤＢコントローラは、ＣＵ１１２が次の命令を実行するのを防止するために次のＲＦステージにおいてミクロブレークコマンドを発行する。再開状態が成功でない場合（すなわち、スタッフィングされた命令が例外を発生させるとき）は、ＣＵ１１２は、例外を通常の方法で処理するようにＩＵ１１４を制御することができる。次に、現在のＰＣは、ＤＳＰ４０のＥＬＲレジスタ内に格納することができ、ＰＣは、例外ハンドラエントリポイントに合わせて更新することができる。スレッドは、ミクロブレークコマンドに起因して停止させることができる。ミクロブレークコマンド肯定応答を受け取り後は、スタッフ命令が完了である。
【００６８】
マルチスレッド化デジタル信号プロセッサにおいて非侵入型スレッド選択式デバッギングと関連して命令スタッフィング動作に関してここにおいて説明される処理上の特長及び機能は、様々な方法で実装することができる。例えば、ＤＳＰ４０が上述される動作を実行できるだけでなく、本明細書の実施形態は、ここにおいて説明される機能を果たすように設計された特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、デジタル信号プロセッサ、又はその他の電子回路において実装することができる。さらに、ここにおいて説明されるプロセス及び特長は、該様々な信号及び命令処理システムによる読み取り及び実行のために磁気媒体、光学媒体、又はその他の記録媒体に格納することができる。従って、好まれる実施形態に関する上記の説明は、当業者が請求される主題を製造または使用するのを可能にすることを目的とするものである。これらの実施形態に対する様々な修正が当業者にとって容易に明確になるであろう。さらに、ここにおいて定義される一般原理は、革新的な能力を用いずにその他の実施形態にも適用可能である。以上のように、請求される主題は、ここにおいて示される実施形態に限定されることが意図されるものではなく、ここにおいて開示される原理及び斬新な特長に一致する限りにおいて最も広範な適用範囲が認められるべきである。
【図１】
2010510585.tif 000003
【図２】
2010510585.tif 000004
【図３】
2010510585.tif 000005
【図４】
2010510585.tif 000006
【図５】
2010510585.tif 000007
【図６】
2010510585.tif 000008
【図７】
2010510585.tif 000009
【図８】
2010510585.tif 000010
【図９】
2010510585.tif 000011
【図１０】
2010510585.tif 000012
【国際調査報告】
2010510585.tif 000013
2010510585.tif 000014
2010510585.tif 000015