(57)【要約】通信（例えば、ＣＤＭＡ）システムにおける送信を処理するためであることを含む（たただし、前記処理することに限定されない）デジタル信号プロセッサの設計及び使用に関する技法。信頼される及び信頼されないデバッギング動作制御は、前記デジタル信号プロセッサと関連づけられるコアプロセッサを動作させる際に生じる。デバッギング機構内のデバッギングプロセスは、前記コアプロセッサと関連する。前記コアプロセッサプロセスは、前記デバッギング制御元を信頼されるデバッギング制御又は信頼されないデバッギング制御であると決定する。信頼されるデバッギング制御の場合は、前記コアプロセッサプロセスは、第１の組の特長及び特権を前記信頼されるデバッギング制御に提供する。代替として、デバッギング制御が信頼されないデバッギング制御である場合は、前記コアプロセッサプロセスは、すべてが前記コアプロセッサプロセスのセキュリティ及び適切な動作を維持することを目的として、第２の制限された組の特長及び特権を前記信頼されないデバッギング制御に提供する。【選択図】図７
2010510583.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”（マルチスレッド化デジタル信号プロセッサに関する非侵入型、スレッド選択式デバッギング方法及びシステム）という題名を有する、共通譲渡米国特許出願においてより具体的に開示されている。開示される主題は、図６のようなブレークポイントの場合にデバッグモード１５０内に移動するための経路を提供する。開示される主題は、ＤＳＰ４０内のいずれのスレッド又はスレッドの組がデバッグモード１５０になるかを制御する。
【００４３】
ここにおいて開示される、信頼される及び信頼されないデバッギング動作を行うための方法及びシステムは、内部制御された及び外部制御された両方のデバッギング動作中に適用することができる様々なセキュリティレベルを提供する。デバッギング動作は、極めて重要なＤＳＰ４０ソフトウェアをデバッギング動作源にさらす可能性があるため、誰がデバッギング動作を行うことができるかを知っていて制御する必要がある。信頼されるデバッギング動作に関しては、ソフトウェアへの完璧なアクセス及びその動作が可能である。例えば完全には信頼されない第三者からの信頼されない動作であるが、必要な動作である場合は、ソフトウェア、そしておそらくメモリ及びレジスタ、への限定されたアクセスのみが可能である。
【００４４】
一般的には、ＩＳＤＢ８２ユーザーは、信頼されるユーザー及び信頼されないユーザーとして分類することができる。信頼されるユーザーは、既知のソフトウェア開発者、例えば、カーネル及びアプリケーションレベルのプログラムの創作者、を含むことができ、信頼されないユーザーは、ＯＥＭ、第三者としての開発者、エンドユーザー、等を含むことができる。ＤＳＰ４０においては、コアプロセッサ７０に関するオペレーティングシステムは、セキュリティ上の懸念事項のマネージャであり、様々なユーザーに関していずれの資源、レジスタ、メモリ記憶場所、デバイス、及びサービスが許容されるか理解している。ＤＳＰ４０オペレーティングシステムは、信頼されないユーザーが、オペレーティングシステムのみが設定できるスーパバイザ専用のコア制御（ＩＳＤＢ＿ＴＲＵＳＴＥＤ）ビットの値に従って自己のアプリケーションをデバッグするのを許容する。ＩＳＤＢの使用が信頼される場合は、すべての特徴及び特権が許容される。ＩＳＤＢは、スーパバイザモードにおいていずれの命令も実行することができる。
【００４５】
ここにおいて開示される信頼される及び信頼されないデバッギング動作を行うための例示的回路を実証するために、図７は、ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路２００を含む。ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路２００は、ＤＳＰ４０がＩＳＤＢ制御レジスタを読み取る及び書き込むために用いることができるＩＳＤＢ試験データレジスタ２０２を含む。ＩＳＤＢ  ＪＴＡＧＳｙｎｃ回路２００は、ＤＢ＿ｔｃｋにおいて動作するＩＳＤＢ試験データレジスタ２０２とＤＳＰ４０クロックドメインにおいて動作するＩＳＤＢ制御レジスタ２０４との間における同期化論理を提供する。ＩＳＤＢ制御レジスタを読み取る及び書き込むことによって、ＤＳＰ４０は、ＩＳＤＢ８２によってサポートされる様々なデバッグタスクを実行する。
【００４６】
図７の実装においては、ＩＳＤＢ ＪＴＡＧＳｙｎｃ回路２００は、ＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｉｎ信号２０６を受け取ってＩＳＤＢ試験データレジスタ２０４内に入れ、ＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｏｕｔ信号２０８を生成する。ＩＳＤＢ試験データレジスタ２０２は、読み取り／書き込み（Ｒ／Ｗ）ビット２１０と、アドレスビット［６：０］２１２と、データビット［３１：０］２１４と、を含む。Ｒ／Ｗビット２１０内の値は、同期回路２１６出力及びＣＵ＿ｔｒｕｓｔｅｄＤｅｂｕｇ入力２２０と同じように、ＡＮＤゲート２１６に行く。ＪＴＡＧ＿ｉｓｄｂ＿ｃｈａｉｎ＿ｕｐｄａｔｅ＿ｔｋｌ信号２２２及びＩＳＤＢ＿ＣＬＫ信号２２４は、同期回路２１８の動作を制御する。アドレスビット２１２からのアドレス情報は、アドレス復号回路２２０によって受け取ることができ、アドレス復号回路２２０は、ＩＳＤＢレジスタ２０４を提供する。ＩＳＤＢレジスタ２０４は、ＡＮＤゲート２１６からのｗｒｉｔｅ＿ｅｎａｂｌｅ信号２２８に応答してデータビット［３１：０］を有するデータを転送する。
【００４７】
図８は、ここにおいて説明される信頼される／信頼されないデバッギング動作を提供するためのデジタル信号プロセッサシステムコンフィギュレーションレジスタを形成する１つの方法を示す。具体的には、システムコンフィギュレーション又はＳＹＳＣＦＧレジスタ２３０は、ＩＳＤＢコアレディビット２３４、割り込みビット２３６、ＩＳＤＢｔｒｕｓｔｅｄビット２３８、Ｄｃａｃｈｅビット２４０、Ｉｃａｃｈｅビット２４２、及びＭＭＵビット２４４と関連する予約ビット２３２を含む。ＳＹＳＣＦＧレジスタ２３０は数多くの形態が存在可能であるが、本開示に関してはＩＳＤＢｔｒｕｓｔｅｄビット２３８が適する。動作上は、ＩＳＤＢ８２は、試験環境、例えば、ＪＴＡＧインタフェース８４を通じてデバッギングソフトウェアと通信中のデバッガインタフェースカード、と通信する。ホストデバッガソフトウェアは、ＩＳＤＢ制御レジスタ２３４乃至２３８を読み取る及び書き込むことによってＩＳＤＢ８２と対話する。
【００４８】
４０ビットパケットとしてのＳＹＳＣＦＧレジスタ２３０を通じての通信は、読み取る／書き込むためのＩＳＤＢレジスタ及び３２ビットデータペイロードを識別する。このパケットフォーマットは、各々の幅が３２ビットであることができる最大で６４の制御レジスタをサポートする。特定のレジスタの有効ビットは、データ部分が有効であるか有効でないかを示す。制御レジスタの読み取り又は書き込み時には、ＪＴＡＧインタフェース８４は、コアの電源がオフにされている場合、パワーアップ／ダウンプロセス中、指定されたレジスタに対して現在アクセスが許可されていない場合、又は指定されたレジスタが予約されている場合、は無効値を戻す。
【００４９】
ＳＹＳＣＦＧレジスタ２３０は、スーパバイザ専用レジスタである。ＩＳＤＢコアレディビット２３４は、ＩＳＤＢ８２と対話し、ＤＳＰ４０のコアプロセッサ７０がホストデバッガと対話する準備が整っているかどうかを示す。すべてのＪＴＡＧレジスタ読み取り及び書き込みは、ＩＳＤＢコアレディビット２３４がセットされる（すなわち、１の値を有する）まで無効値を戻すことができる。
【００５０】
ＩＳＤＢｔｒｕｓｔｅｄビット２３８は、ＩＳＤＢｔｒｕｓｔｅｄビット２３８がセットされた（すなわち、値１を有する）場合は、すべてのＩＳＤＢレジスタがデバッガソフトウェアにとって可視であり、すべてのＩＳＤＢコマンドを使用可能であるような形でセキュリティを制御する。ＩＳＤＢ＿ＴＲＵＳＴＥＤがクリアされた（すなわち、値０を有する）場合は、ＩＳＤＢは、制限された一組の動作のみを許可する。コアプロセッサ７０オペレーティングシステムのみがＩＳＤＢｔｒｕｓｔｅｄビット２３８をセットすることができる。
【００５１】
図９は、表２５０を提供し、表２５０は、本実装がＪＴＡＧインタフェース８４を介してデバッガホストソフトウェアによってアクセスすることができるＩＳＤＢ制御レジスタを記載する。ＩＳＤＢ８２は、セキュリティ上の課題について完全に理解している一方でアプリケーションをデバッグするためのデバッグコマンドがコアプロセッサ７０オペレーティングシステムととともに働くデバッグモニタープログラムに送られるような形で動作する。例えば、信頼されないモードにおいては、ＩＳＤＢ８２は、デバッガホストソフトウェアが（ａ）ＩＳＤＢＳＴ内のＩＳＤＢメールボックス状態ビットの値を読み取ること、（ｂ）メールボックス（ＩＳＤＢＭＢＸＩＮ及びＩＳＤＢＭＢＸＯＵＴ）レジスタを読み取る／書き込むこと、（ｃ）ＩＳＤＢＣＭＤコマンドレジスタ、ただし割り込みコマンドのみ、を書き込むこと、及び（ｄ）ＩＳＤＢ Ｅｎａｂｌｅ及びＩＳＤＢ  Ｖｅｒｓｉｏｎレジスタにアクセスすることを許容する。その他のすべてのＩＳＤＢ８２レジスタ、ビット、及びコマンドはアクセス不能である。
【００５２】
本実装がどのように機能できるかを示す一例として、ブレークポイントをどのようにして設定できるかについて考察する。ホストデバッガソフトウェアが、メールボックスにコマンドを入れる“ｓｅｔ  ｂｒｅａｋｐｏｉｎｔ”。次に、ホストデバッガソフトウェアは、デバッガ割り込みを呼び出す。これで、コアプロセッサ７０オペレーティングシステムがその割り込みを受け取り、コマンドを確認し、出メールボックス内に応答を入れて肯定応答する。これで、ホストデバッガソフトウェアが動作を進めてより多くの情報、例えばＰＣ、及びスレッド名、を提供することができる。これらの情報ビットは、メールボックス／割り込み機構を介して受け取られて肯定応答される。コアプロセッサ７０オペレーティングシステムは、ユーザーがこのブレークポイントを設定することが許容されていることを検証した時点で、希望されるポイントにおいてソフトウェアＴＲＡＰを設定することができる。ブレークポイントがヒットされた時点で、コアプロセッサ７０オペレーティングシステムにトラップすることができ、それにより、コアプロセッサ７０オペレーティングシステムは、ブレークポイントがヒットされたことを示すメールボックスメッセージをＩＳＤＢに送ることができる。
【００５３】
要約すると、開示される主題は、信頼されるユーザー及び信頼されないユーザーに関するデバッギング動作を制御するための方法及びシステムを提供し、コアプロセッサ７０内におけるコアプロセッサプロセス及びデジタル信号プロセッサのデバッギング機構内におけるデバッギングプロセス１５０、コアプロセッサと関連づけられたデバッギング機構を動作させるためのステップと、回路と、命令と、を含む。コアプロセッサ７０は、デバッギング制御元を、信頼されるデバッギング制御又は信頼されないデバッギング制御であると決定する。デバッギング制御が信頼されるデバッギング制御である場合は、信頼されるデバッギング制御は、第１の組の特徴及び特権が提供される。代替として、デバッギング制御が信頼されないデバッギング制御である場合は、信頼されないデバッギング制御は、第２の組の制限された組の特徴及び特権が提供される。従って、本開示は、デバッギング制御が信頼されないデバッギング制御又は信頼されないデバッギング制御であると決定することに従ってコアプロセッサプロセスの動作においてセキュリティを維持する。
【００５４】
マルチスレッド化デジタル信号プロセッサにおける信頼される及び信頼されない非侵入型スレッド選択式デバッギングに関してここにおいて説明される処理上の特徴及び機能は、様々な方法で実装することができる。例えば、ＤＳＰ４０は、上述される動作を実行できるだけでなく、ここでの実施形態は、ここにおいて説明される機能を果たすように設計された特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、デジタル信号プロセッサ、又はその他の電子回路において実装することができる。さらに、ここにおいて説明されるプロセス及び特徴は、該様々な信号及び命令処理システムによる読み取り及び実行のために磁気媒体、光学媒体、又はその他の記録媒体に格納することができる。従って、好まれる実施形態に関する上記の説明は、当業者が請求される主題を製造または使用するのを可能にすることを目的とするものである。これらの実施形態に対する様々な修正が当業者にとって容易に明確になるであろう。さらに、ここにおいて定義される一般原理は、革新的な能力を用いずにその他の実施形態にも適用可能である。以上のように、請求される主題は、ここにおいて示される実施形態に限定されることが意図されるものではなく、ここにおいて開示される原理及び斬新な特徴に一致する限りにおいて最も広範な適用範囲が認められるべきである。
【図１】
2010510583.tif 000003
【図２】
2010510583.tif 000004
【図３】
2010510583.tif 000005
【図４】
2010510583.tif 000006
【図５】
2010510583.tif 000007
【図６】
2010510583.tif 000008
【図７】
2010510583.tif 000009
【図８】
2010510583.tif 000010
【図９】
2010510583.tif 000011
【国際調査報告】
2010510583.tif 000012
2010510583.tif 000013