(57)【特許請求の範囲】
【請求項１】
集積回路であって、
通常動作の間に動作信号およびコアプロセッサステータス出力信号を生成するコアプロセッサと、
デバッグ更新信号および前記コアプロセッサからの前記動作信号を受信し、前記デバッグ更新信号に従って前記動作信号を選択的にアサートおよびデアサートする論理回路と、
前記デバッグ更新信号を前記論理回路に供給し、前記コアプロセッサからのコアプロセッサステータス出力信号および前記論理回路からの前記動作信号を受信する、集積回路の外部にアクセス可能な実時間デバッグ回路であって、前記コアプロセッサステータス出力信号がフローの変更を示す場合に前記動作信号をアサートさせるための前記デバッグ更新信号を生成し、前記コアプロセッサステータス出力信号がフローの変更完了を示す場合に前記動作信号をデアサートさせるための前記デバッグ更新信号を生成する、前記実時間デバッグ回路とを備え、
デバッグモードを有し、前記実時間デバッグ回路は前記デバッグモードの部分集合として選択可能なモードを有する、集積回路。
【請求項２】
実時間デバッグシステムであって、
仮想アドレス信号、仮想データ信号およびコアプロセッサステータス出力信号を生成するコアプロセッサと、
更新アドレス信号および前記コアプロセッサからの前記仮想アドレス信号を受信し、前記更新アドレス信号に従って前記前記仮想アドレス信号を選択的にアサートおよびデアサートする第１の論理回路と、
更新データ信号および前記コアプロセッサからの前記仮想データ信号を受信し、前記更新データ信号に従って前記仮想データ信号を選択的にアサートおよびデアサートする第２の論理回路と、
前記更新アドレス信号を前記第１の論理回路に供給し、前記更新データ信号を前記第２の論理回路に供給し、前記コアプロセッサからのコアプロセッサステータス出力信号、前記第１の論理回路からの前記仮想アドレス信号、および前記第２の論理回路からの前記仮想データ信号を受信する、集積回路の外部にアクセス可能な実時間デバッグ回路であって、前記コアプロセッサステータス出力信号がフローの変更を示す場合に前記仮想アドレス信号をアサートさせるための前記更新アドレス信号を生成し、前記コアプロセッサステータス出力信号がデータアクセスを示す場合に前記仮想データ信号をアサートさせるための前記更新データ信号を生成し、前記コアプロセッサステータス出力信号がデータアクセス完了を示す場合に前記仮想アドレス信号および前記仮想データ信号をデアサートさせるための前記更新アドレス信号および前記更新データ信号を生成する、前記実時間デバッグ回路とを備える、実時間デバッグシステム。
【請求項３】
前記実時間デバッグ回路は、前記仮想アドレス信号が予め設定されたアドレス範囲内であるかどうかを判定し、前記仮想アドレス信号が予め設定されたアドレス範囲内であると判定された場合に前記仮想データ信号をアサートさせるための前記更新データ信号を生成する、請求項２に記載の実時間デバッグシステム。
【請求項４】
集積回路における実時間デバッグシステムであって、前記集積回路はデバッグ回路および前記集積回路の内部的な使用のための動作信号を生成するコアプロセッサを有する、前記実時間デバッグシステムにおける方法は、
前記集積回路の通常動作の間にデバッグモードに入る段階、
前記デバッグモードの部分集合である選択可能なモードに入る段階、
前記コアプロセッサによってフローの変更を示す第１のコアプロセッサステータス出力信号を生成する段階、
前記デバッグ回路によって前記第１のコアプロセッサステータス出力信号に従って前記動作信号をアサートさせるための第１のデバッグ更新信号を生成する段階、
前記コアプロセッサによって前記第１のデバッグ更新信号に従って前記動作信号をアサートする段階、
前記コアプロセッサによってフローの変更完了を示す第２のコアプロセッサステータス出力信号を生成する段階、
前記デバッグ回路によって前記第２のコアプロセッサステータス出力信号に従って前記動作信号をデアサートさせるための第２のデバッグ更新信号を生成する段階、
前記コアプロセッサによって前記第２のデバッグ更新信号に従って前記動作信号をデアサートする段階を備える、方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はリアルタイムまたは実時間プロセッサデバッグシステムに関し、かつより特定的には実時間動作の間にコアプロセッサの仮想バス（ｖｉｒｔｕａｌ  ｂｕｓ）のアドレスおよびデータ信号を選択的にサンプルしてバス負荷による電力消費を低減しかつ性能の影響を最小にするデバッグシステムに関する。
【０００２】
【従来の技術】
コアプロセッサ、オンチップ・メモリおよび外部メモリ・インタフェース・モジュールを含む組み込みシステム（エンベッデッド・システム：Ｅｍｂｅｄｄｅｄ  ｓｙｓｔｅｍｓ）はありふれたものである。現代のシステムはキャッシュメモリをも導入している。システムレベルのコード開発者は組み込みシステムのためのソフトウェアまたはアプリケーションコードを該システムにとって必要な特定の機能を達成するために書く必要がある。大部分のソフトウェアは、機能の追加または改定、望ましくない特徴または機能部分の除去、および「バグ（ｂｕｇｓ）」またはソフトウェアエラーの除去を含む、種々の理由のため開発者によって数回改定されなければならない。したがって、アプリケーションコードの開発の間に適切な動作を保証するためにソフトウェアをデバッグする必要がある。組み込みシステムのアプリケーションコードはさらに動作の間に進行する、絶えざるまたは周期的な調整を必要とするかもしれない。いくつかの構成においては、あるパラメータ、定数の特徴値（ｃｈａｒａｃｔｅｒｉｓｔｉｃ  ｖａｌｕｅｓ）またはテーブルを実時間動作の間に調整しまたは修正する必要があるかもしれない。ここで言及するデバッグ処理は動作の間の実時間キャリブレイション（較正）または調整のみならず、初期的なアプリケーションコードの開発を含む。
【０００３】
キャッシュメモリのないシステムを含む、いくつかの受けつがれたシステムはコアプロセッサのサイクルがデバッグの目的で容易に利用できるように外部的にコアプロセッサ・バスを提供している。システムレベルのデバッグはキャッシュメモリを備えた組み込みシステム環境においてはより困難になり、それはコアプロセッサのピンまたはバスの可視性（ｖｉｓｉｂｉｌｉｔｙ）がもはや得られないからである。特に、キャッシュメモリはしばしば組み込みコアプロセッサと外部の物理バスとの間に配置され、それによってコアプロセッサのバスは外部的に利用できなくなる。例えば、キャッシュメモリを持っていない従来の組み込みシステムにおいて行なわれていた「表示サイクル（ショーサイクル：ｓｈｏｗ  ｃｙｃｌｅ）」のサポートは選択肢とはならない。
【０００４】
伝統的な１つのデバッグ方法はバックグラウンド・デバッグモード（ｂａｃｋｇｒｏｕｎｄ  ｄｅｂｕｇ  ｍｏｄｅ：ＢＤＭ）と称される。ＢＤＭはコード開発者がデバッグ動作を行なうためにプロセッサが中断される静的デバッグ処理である。コード開発者は特定のポイントにおいてプロセッサを停止するためにブレークポイント（ｂｒｅａｋ  ｐｏｉｎｔｓ）を設定することができ、あるいはプロセッサの進行を監視しかつ問題およびバグを識別するために単一ステップで個々の命令を行なうことができる。ＢＤＭはいくつかの用途にとっては適切ではあるが、動的またはダイナミック調整またはキャリブレイションを含む、実時間動作にとっては十分ではない。また、あるデバッグ動作は組み込みコアプロセッサを停止することなくアプリケーションコードが試験されかつ訂正されることを要求する。例えば、自動車のエンジンを制御するための組み込みプロセッサシステムは通常エンジンが動作している間にデバッグされ、それによってコアプロセッサを中断することはそれが事実上エンジンを停止する結果となるため選択肢とならないようにされる。
【０００５】
プロセッサを中断することなくプロセッサの動作を監視するために動的デバッグ方法が開発されている。キャッシュから物理バスが外部的に利用可能である場合は、外部的にコアプロセッサ・バスを提供することも実用的または実行可能ではなく、それはそのことによって組み込みプロセッサの過大な数のピンを生じる結果となるためである。プロセッサバスを監視しかつ内部補助バス（ｉｎｔｅｒｎａｌ  ａｕｘｉｌｉａｒｙ  ｂｕｓ）またはポートを介してメッセージを提供するデバッグインタフェースを開発することが意図されている。コアプロセッサとキャッシュとの間のアドレスおよびデータバスを監視することによる動的デバッグは電力を消費しかつ処理のじゃまをするまたは介入的な処理となり得る。キャッシュとコアプロセッサとの間のバスはしばしば「仮想（バーチャル：ｖｉｒｔｕａｌ）」バスと称される。該仮想バスに結合された大きなバッファはバス負荷（ｂｕｓ  ｌｏａｄｉｎｇ）を引き起こし、これは組み込みプロセッサシステムの性能に影響を与える可能性がある。さらに、アドレスおよびデータバスの信号を監視しかつ対応するメッセージを外部の補助バスに提供する動的プロセスは価値ある電力を消費する。携帯用通信装置は典型的には手持型でありかつバッテリ動作され、かつ支配的に組み込み処理システムを使用する。そのような携帯用通信装置は、例えば、パーソナルデジタルアシスタント（ＰＤＡ）、セル電話、ページャ、全世界測位（ＧＰＳ）モジュール、その他を含む。そのような携帯用通信装置においてはバッテリ寿命を保つために電力消費を最小にすることは必須のことである。
【０００６】
【発明が解決しようとする課題】
通常のシステム動作の間に動的なキャリブレイションを行なうシステムにおいて電力消費を最小にすることは同様に重要である。自動車用の用途はこの要求の重要な例である。例えば、ある自動車用の用途においては、実時間のキャリブレイションの（絶えざる）チューニングはデバッグモジュールがプロセッサおよびアプリケーションが動作する時に機能することを要求する。組み込みシステムの電力消費を最小にすることが強く要求される。
【０００７】
組み込み処理システムに関して電力消費を最小にしかつバス負荷による性能の影響を最小にする方法で動的デバッグを行なうことが望ましい。
【０００８】
【課題を解決するための手段】
本発明の一態様によれば、コアプロセッサであって、該コアプロセッサの通常動作の間に動作信号を提供するもの、前記動作信号を受けるための入力、デバッグ更新信号を受けるための第２の入力、および出力を有する論理回路、および前記デバッグ更新信号を提供する第１の出力、前記論理回路の出力に結合された第１の入力、および集積回路の外部にアクセス可能な補助バスに結合された第２の出力を有する実時間デバッグ回路、を具備し、前記集積回路はデバッグモードを有し、前記実時間デバッグ回路は前記デバッグモードの部分集合として選択可能なモードを有することを特徴とする集積回路が提供される。
【０００９】
本発明の別の態様では、仮想アドレスバスを構成する第１の出力、およびコア処理ステータス出力信号を提供する第２の出力を有するコアプロセッサ、前記仮想アドレスバスに結合された第１の入力、デバッグアドレスバスとしての出力、および第２の入力を有する第１の論理回路、および前記コア処理ステータス出力信号がアドレスの流れの変化（ＣＯＦ）を示している場合に前記論理回路の前記第２の入力へのアドレスデバッグ信号を肯定するためのデバッグ回路、および前記仮想データバスに結合された第１の入力、デバッグデータバスとしての出力、および第２の入力を有する第２の論理回路を具備し、前記デバッグ回路は、前記プロセッサステータス出力信号がデータアクセスを示している場合に、前記第２の論理回路の前記第２の入力へのデータデバッグ信号を肯定することを特徴とする実時間デバッグシステムが提供される。
【００１０】
本発明のさらに別の態様では、集積回路における実時間デバッグシステムにおける方法が提供され、前記集積回路はデバッグ回路および前記集積回路の内部的な使用のための動作信号を発生するコアプロセッサを有し、前記方法は、前記集積回路の通常動作の間にデバッグモードに入る段階、前記デバッグモードの部分集合である選択可能なモードに入る段階、および前記選択可能なモードの間に前記デバッグ回路がデバッグ信号を肯定したことに応じて前記デバッグ回路に動作信号を結合し、かつ前記選択可能なモードの間に前記デバッグ回路が前記デバッグ信号を肯定解除したことに応じて前記デバッグ回路から前記動作信号を阻止する段階、を具備することを特徴とする。
【００１１】
本発明のさらに別の態様では、通常動作の間に集積回路の内部にのみ提供される出力を有するコアプロセッサ、および前記コアプロセッサの出力に結合された第１の入力、デバッグ出力、および前記デバッグ信号が肯定解除されたことに応じて前記論理回路が前記デバッグ出力の論理状態を切り替えることを防止するための第２の入力を有する論理回路、を具備することを特徴とする実時間デバッグシステムが提供される。
【００１２】
【発明の実施の形態】
本発明のより良い理解は添付の図面とともに好ましい実施形態に関する以下の詳細な説明を参照することによって得ることができる。
【００１３】
組み込みシステムの動的デバッグを行ないかつ実時間の、非侵入的または非介入的（ｎｏｎ−ｉｎｔｒｕｓｉｖｅ）デバッグのサポートに関連する他の問題および事項を解決するために「ネクサス標準（Ｎｅｘｕｓ  Ｓｔａｎｄａｒｄ）」またはＧＥＰＤＩＳ（包括的組み込みプロセッサ・デバッグ・インタフェース標準：Ｇｌｏｂａｌ  Ｅｍｂｅｄｄｅｄ  Ｐｒｏｃｅｓｓｏｒ  Ｄｅｂｕｇ  Ｉｎｔｅｒｆａｃｅ  Ｓｔａｎｄａｒｄ）が現在開発されてきている。ＩＥＥＥ−ＩＳＴＯフォーラム５００１（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ−Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ｏｒｇａｎｉｚａｔｉｏｎ）としても知られた、前記ＧＥＰＤＩＳは、組み込みシステムプロセッサのコアを中断することなく非侵入的なデバッグを行なうための方法論を標準化するために開発された組み込みデバッグインタフェース標準を述べている。プログラムフローおよびデータフローへの可視性を提供することによりプログラムの実行を監視するためにＧＥＰＤＩＳにおいては数多くのデバッグ能力が規定されている。この可視性は外部開発システムへと専用の多ビットまたは多ピンのシリアルインタフェースまたは補助ポートによって提供される一連の情報メッセージからなる。プログラムフロー・メッセージが次にプログラムの静的イメージと組み合わされて組み込みプロセッサの実際の命令実行シーケンスを再構成または再現する。データフロー・メッセージはあらかじめ規定されたアドレス範囲へのプロセッサの読み取りおよび書き込みを追跡する。
【００１４】
ＧＥＰＤＩＳの動的デバッグは同期メッセージング（ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｍｅｓｓａｇｉｎｇ）およびデータトレース・メッセージング（ｄａｔａ  ｔｒａｃｅ  ｍｅｓｓａｇｉｎｇ）を含むプログラムトレース・メッセージング（ｐｒｏｇｒａｍ  ｔｒａｃｅ  ｍｅｓｓａｇｉｎｇ）を使用して実施される。プログラムトレース・メッセージングの実施は、直接または間接のチェンジオブフロー事象を含め、チェンジオブフロー（流れの変化：ｃｈａｎｇｅ  ｏｆ  ｆｌｏｗ：ＣＯＦ）事象を示すステータス情報とともに、コアプロセッサによって行なわれる命令フェッチのシーケンスを監視することを要求する。直接のＣＯＦ（ｄｉｒｅｃｔ  ＣＯＦ）事象はプログラムカウンタ相対または関連分岐（ｐｒｏｇｒａｍ  ｃｏｕｎｔｅｒ  ｒｅｌａｔｉｖｅ  ｂｒａｎｃｈｅｓ）を含みかつ間接ＣＯＦ（ｉｎｄｉｒｅｃｔ  ＣＯＦ）事象はレジスタ間接分岐および例外ベクタリング（ｅｘｃｅｐｔｉｏｎ  ｖｅｃｔｏｒｉｎｇ）を含む。プログラムトレース同期メッセージの実施は現在実行している命令アドレスまたは合理的な近隣の命令アドレスが伝送されることを要求する。データトレース・メッセージングの実施はデータアクセス・アドレスの監視および条件付きで関連データを提供することを要求する。データトレース・メッセージングは１つまたはそれ以上の規定されたアドレス範囲内での読み取りメッセージングまたはデータの読み取り、および１つまたはそれ以上の規定されたアドレス範囲内の書き込みメッセージングまたはデータの書き込みを含む。
【００１５】
前記ＧＥＰＤＩＳは実時間の動的および非侵入的デバッグシステムを記述することを意図している。ＧＥＰＤＩＳは仮想バスにアクセスしかつ補助バスまたはポートを介して外部システムと通信する組み込みデバッグ・インタフェースを意図している。しかしながら、ＧＥＰＤＩＳはバス負荷および電力消費について特に取り組むものではない。仮想バス信号を直接デバッグ・インタフェースに提供することは非常に侵入的でありかつ誤った動作を引き起こす可能性がある。デバッグ・インタフェースの影響を低減するためにバッファリングが使用できるが、それでも実質的な性能に対する影響は依然として生じ得る結果となり、それは仮想バスの全ての信号遷移（ｓｉｇｎａｌ  ｔｒａｎｓｉｔｉｏｎｓ）はデバッグ信号に反映されるからである。デバッグ用バスによる電力消費はかなりのものでありかつある実施形態においては過度にさえなり得る。
【００１６】
図１は、組み込みシステム１０３の補助バス１０２に結合された外部開発システム１０１を含むデバックシステム１００の概略的なブロック図である。開発システム１０１は組み込みシステム１０３の組み込みプロセッサ１０７のプロセッサ・コア１０９によって実行されているソフトウェアの実時間デバッグ動作を行なうために使用される。しかしながら、実時間キャリブレイション・システム（図示せず）を実時間キャリブレイションを行なう目的で補助バス１０２に結合することも可能であり、その場合も本発明の原理は同じであることが理解される。
【００１７】
図示された実施形態においては、組み込みシステム１０３は集積回路（ＩＣ）またはチップ上に導入されかつ、デバッグシステム１００に関連するような、より大きなシステムの基板上の適切なソケットへと差し込まれる。組み込みシステム１０３は別個の物理バス１１５を介して組み込みプロセッサ１０７へと結合された実時間デバック・インタフェース１０５を含む。組み込みプロセッサ１０７は仮想バス１１３を介してキャッシュ／ＭＭＵ（メモリ管理ユニット：Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）１１１に結合された中央処理ユニット（ＣＰＵ）またはコア１０９を含む。仮想バス１１３はコア１０９の動作を規定する複数の動作信号を含む。前記キャッシュおよびＭＭＵは典型的には別個のシステムであるが、説明の簡略化のために組み合わされて示されている。ＭＭＵは任意選択的なものでありかつ組み込みプロセッサ１０７の特定の実施形態においては設けられないようにすることもできる。本発明は組み込みプロセッサの数多くの異なる変形および実施形態を意図しておりかつそのような変形に限定されるものではない。
【００１８】
仮想バス１１３はコア１０９によってキャッシュ／ＭＭＵ  １１１へと提供されまたは肯定される（ａｓｓｅｒｔｅｄ）アドレス信号を含む「仮想アドレス（ＶＩＲＴＵＡＬ  ＡＤＤＲ）」バス、およびコア１０９とキャッシュ／ＭＭＵ  １１１との間の双方向の「仮想データ（ＶＩＲＴＵＡＬ  ＤＡＴＡ）」バスを含む。用語「仮想（ｖｉｒｔｕａｌ）」は、仮想バス１１３は見える（ｖｉｓｉｂｌｅ）ものではなく、あるいはさもなければ組み込みプロセッサ１０７の外部に組み込みシステム１０３の他の構成要素に提供されないことを意味する。物理バス１１５は仮想バス１１３と同様のものでありかつ同様のアドレスデータおよび制御信号を含むが、２つのバスの間の動作は動作の間に変化する。キャッシュ／ＭＭＵ  １１１内のキャッシュはディスエーブルすることができその場合仮想バス１１３は物理バス１１５と同様の様式で動作する。しかしながら、もしキャッシュがイネーブルされれば、物理バス１１５は異なる様式で動作しかつコア１０９の動作の真の表現を与えないことになる。仮想バス１１３を監視してコア１０９の動作を監視しまたはコア１０９によって実行されているアプリケーション・ソフトウェアのキャリブレーション動作を行なうことが望ましい。
【００１９】
仮想バス１１３はコア１０９に結合された仮想バス・ゲーティング論理１１７に提供される。仮想バス・ゲーティング論理１１７はコア１０９内に導入することができ、あるいはコア１０９の外部に設計することができる。仮想バス・ゲーティング論理１１７は「更新データ（ＵＰＤＡＴＥ  ＤＡＴＡ）」信号、「更新アドレス（ＵＰＤＡＴＥ  ＡＤＤＲ）」信号、「デバッグデータ（ＤＥＢＵＧ  ＤＡＴＡ）」バスおよび「デバッグアドレス（ＤＥＢＵＧ  ＡＤＤＲ）」バスを介して実時間デバッグ・インタフェース１０５に結合されている。前記「デバッグアドレス」バスは後にさらに説明する属性（ａｔｔｒｉｂｕｔｅ）信号を含むことができる。前記「更新データ」信号は前記「デバッグデータ」バス上の信号を選択的に活性化しまたはさもなければイネーブルするデータデバッグ更新信号であり、そして前記「更新アドレス」信号は前記「デバッグアドレス」バスを選択的にイネーブルしまたは活性化するアドレスデバッグ更新信号である。コア１０９によって発生される「プロセッサ・ステータス（ＰＲＯＣＥＳＳＯＲ  ＳＴＡＴＵＳ）」信号は、後にさらに説明するように、コア１０９のあるステータス事象を識別するために実時間デバッグ・インタフェース１０５に提供される。該「プロセッサステータス」信号はコア１０９の処理ステータスを示す少なくとも１つのコア処理ステータス出力信号を含む。
【００２０】
前記補助バス１０２は組み込みシステム１０３の実時間デバッグ・インタフェース１０５によって制御されるスケーラブル出力デバッグポートである。一実施形態においては、補助バス１０２はＧＥＰＤＩＳによって規定されて開発システム１０１によってコア１０９の監視ができるようにする。補助バス１０２は外部ハードウェア・インタフェース１１９に提供され、該外部ハードウェア・インタフェース１１９はデバッグ信号を開発システム１０１内の開発ワークステーション１２１へと提供するためのバッファ、ファームウェア、処理部その他からなる。ワークステーション１２１は任意のファームウェア、ハードウェアまたはソフトウェアを導入し、かつパーソナルコンピュータその他として実施できデバッグ動作またはアプリケーション・ソフトウェアの開発の制御を可能にする。ワークステーション１２１におけるオペレータはデバッグ・ソフトウェアとインタフェースまたは対話してとりわけ仮想バス１１３のアドレスおよびデータ信号の監視のために実時間デバッグ・インタフェース１０５の動作を制御する。
【００２１】
組み込みシステム１０３は通常動作のための通常モードおよびデバッグモードを含むいくつかの動作モードを持つことができる。実時間デバッグ・インタフェース１０５はデバッグモードを容易に可能としかつデバッグモードのサブセットまたは部分集合としていくつかの選択可能なモードを有することができる。例えば、実時間デバッグ・インタフェースはプログラム・トレースモードおよびデータ・トレースモードを含み、この場合データ・トレースモードはさらに読み出しおよび書き込みデバッグモードを有することができる。
【００２２】
図２は、本発明の一実施形態に係わる仮想アドレスバス・ゲーティング論理２００の回路図を示す。該仮想アドレスバス・ゲーティング論理２００は前記仮想バス・ゲーティング論理１１７内に設けられて前記仮想バス１１３の「仮想アドレス」バスを前記「デバッグアドレス」バスに結合する。ここで説明される実施形態においては、「仮想アドレス」バスは仮想アドレス［３１：０］（ＶＩＲＴＵＡＬ  ＡＤＤＲ［３１：０］）と名付けられた３２の別個のアドレス信号を含む。しかしながら、本発明はいずれか特定の数のアドレス信号に限定されるものではないことが理解される。各々の「仮想アドレス」バス信号は一連のラッチ２０１の対応する入力に供給され、該ラッチはD型ラッチのような任意の適切な形式のラッチとすることができる。前記ラッチ２０１の各々のＱ出力は一連のバッファ２０３のそれぞれの入力に供給される。バッファ２０３の出力は、個々の信号デバッグアドレス［３１：０］（ＤＥＢＵＧ  ＡＤＤＲ［３１：０］）を含む、前記「デバッグアドレス」バスのそれぞれの信号を提供しまたは肯定する。組み込みプロセッサ１０７は、ＣＬＫ１と称される、内部マスタクロック信号を含み、これは２入力ＡＮＤゲート２０５の内の一方の入力に提供される。ＣＬＫ１信号は制御およびタイミングの目的でコア１０９に提供される少なくとも１つのマスタクロック信号である。ＡＮＤゲート２０５の他の入力は「更新アドレス（ＵＰＤＡＴＥ  ＡＤＤＲ）」信号を受ける。ＡＮＤゲート２０５の出力は「デバッグアドレスクロック（ＤＥＢＵＧ  ＡＤＤＲ  ＣＬＫ）」を提供しまたは肯定し、これはラッチ２０１の各々のクロック入力に与えられる。
【００２３】
動作においては、前記「更新アドレス」信号は前記「仮想アドレス」バスのそれぞれの信号をＣＬＫ１信号の提供または肯定と同期した「デバッグアドレス」バスに転送するためのイネーブル信号として作用する。このようにして、「更新アドレス」信号が提供されまたは肯定された時、ＣＬＫ１信号がラッチ２０１をクロッキングして「仮想アドレス［３１：０］」信号を「デバッグアドレス［３１：０］」信号のそれぞれの信号へとラッチするようにさせる。「更新アドレス」信号が否定されまたは論理“０”である場合は、ラッチ２０１は静止しており、それによって「デバッグアドレス［３１：０］」信号は安定状態に留まっている。「デバッグアドレス」バスを含む、組み込みプロセッサ１０７の任意のバスの遷移は実質的な量の電力を消費することに注意を要する。後に説明するように、「デバッグアドレス」バスの不必要な遷移を低減しまたは除去するために「更新アドレス」信号を使用することはかなりの電力節約を達成する。
【００２４】
図３は、本発明の一実施形態に従って構成された仮想データバス・ゲーティング論理３００の回路図である。該仮想データバス・ゲーティング論理３００はまた仮想バス１１３のそれぞれのデータ信号を選択的に前記「デバッグデータ」バスに伝達するために仮想ゲーティング論理１１７内に導入される。図示された実施形態においては、仮想バス１１３の「仮想データ」バスは３２の信号、「仮想データ［３１：０］（ＶＩＲＴＵＡＬ  ＤＡＴＡ［３１：０］）」を含む。また、「デバッグデータ」バスは３２の信号、「デバッグデータ［３１：０］（ＤＥＢＵＧ  ＤＡＴＡ［３１：０］）」を備えている。しかしながら、本発明はいずれか特定の数のデータ信号に限定されないことが理解される。前記「更新データ」信号は複数の２入力ＮＡＮＤゲート３０１の各々の一方の入力に提供される。ＮＡＮＤゲート３０１の各々の他方の入力は前記「仮想データ［３１：０］」信号のそれぞれの１つを受ける。例えば、第１のＮＡＮＤゲート３０１は「仮想データ［０］」信号を受け、第２のＮＡＮＤゲート３０１は「仮想データ［１］」信号を受けるなどである。ＮＡＮＤゲート３０１の各々の出力は複数のインバータ３０３の内のそれぞれの１つの入力に与えられる。インバータ３０３の各々はそれらのそれぞれの出力において前記「デバッグデータ［３１：０］」信号の個々の信号の内のそれぞれの１つを肯定しまたは提供する。
【００２５】
前記仮想データバス・ゲーティング論理３００の動作はＣＬＫ１信号への同期を除いて前記「仮想アドレス」バス・ゲーティング論理２００と同様である。しかしながら、仮想アドレスバス・ゲーティング論理２００は仮想データバス・ゲーティング論理３００と同様の様式で構成でき、かつ逆もまた同様であることが理解される。ここで説明される特定の実施形態では、仮想アドレスバス・ゲーティング論理２００は前記サイクルが実際に有効でありかつ適切にラッチされることを保証するために前記アドレスをいくらか遅延させる。さらなる利点は「デバッグアドレス」バスおよび信号のタイミングがあまり重大（クリティカル：ｃｒｉｔｉｃａｌ）なものではないことであり、従ってバッファ２０３はより小さなかつ電力消費の少ない装置を使用して構成できる。「更新データ」信号がローに否定された時、「デバッグデータ」バスは静止状態に留まっておりかつ不変である。「更新データ」信号がハイに肯定された時、「デバッグデータ」バスは論理ゲート３０１，３０３を通る少しの遅延の後に仮想バス１１３の「仮想データ」バスに論理的に従うことになる。特に、「更新データ」信号がハイに肯定された時、「デバッグデータ［０］」信号は仮想データ［０］信号に従い、「デバッグデータ［１］」信号は仮想データ［１］信号に従うなどとなる。
【００２６】
前記仮想アドレスバス・ゲーティング論理２００および前記仮想データバス・ゲーティング論理３００は、それぞれ、「更新アドレス」信号および「更新データ」信号を介して対応する「デバッグアドレス」バスおよび「デバッグデータ」バスの選択的な制御および活性化（ａｃｔｉｖａｔｉｏｎ）を提供する。このようにして、前記「更新アドレス」および「更新データ」信号は「デバッグアドレス」および「デバッグデータ」バスの電力消費を制御するために利用できる。これは次にデバッグ、試験またはキャリブレイション動作の間の組み込みシステム１０３の電力消費の制御を可能にする。特に、ページャ、移動電話その他のような、バッテリ動作しかつ携帯用の装置においては、前記デバッグモードは通常動作モードの間においてディスエーブルされる。前記「更新アドレス」および「更新データ」信号は強制的にローにされ「デバッグアドレス」および「デバッグデータ」バスが切り替わらないことを保証する。これは余分のデバッグモードの論理または回路が価値あるバッテリ電力を消費せずかつ従ってバッテリ寿命に影響を与えないことを保証する。
【００２７】
前記実時間デバッグ・インタフェース１０５は必要な場合に「更新データ」および「更新アドレス」信号を肯定して前記「デバッグデータ」バスおよび「デバッグアドレス」バスのデバッグ信号をサンプルする。また、種々の属性信号が、「プロセッサステータス（ＰＲＯＣＥＳＳＯＲ  ＳＴＡＴＵＳ）」信号として示されるように、コア１０９から実時間デバッグ・インタフェース１０５へと提供される。該実時間デバッグ・インタフェース１０５は、開発システム１０１の制御の下で、いつ前記「更新データ」および前記「更新アドレス」信号を肯定して実時間デバッグ・インタフェース１０５によって監視するために前記「デバッグデータ」および「デバッグアドレス」信号を活性化するかあるいはさもなければイネーブルするかを決定する。特定の実施形態では、前記実時間デバッグ・インタフェース１０５はチェンジオブフロー（ＣＯＦ）事象の間にコア１０９によって行なわれる命令フェッチのシーケンスを監視するためにプログラムトレースを活性化しまたはイネーブルする。前記「プロセッサステータス」信号は仮想バス１１３の仮想アドレスバスがＣＯＦアドレスを肯定する間にＣＯＦステータスを表示する。「プロセッサステータス」信号によって示される、ＣＯＦステータスまたは事象の間に、実時間デバッグ・インタフェース１０５は「更新アドレス」信号を肯定して「デバッグアドレス」バスを活性化しかつサンプルする。同期メッセージもまたプログラムトレース動作の一部とすることができそこでは前記実時間デバッグ・インタフェース１０５が「更新アドレス」信号を肯定する。
【００２８】
データトレース・メッセージはデータアクセス・アドレスを監視することおよび条件的に関連するデータを提供することを含む。データトレースは１つまたはそれ以上の規定されたアドレス範囲の内の任意の１つ内でのデータの読み取りまたは書き込みにとって有用である。データトレース・メッセージングがイネーブルされた時、前記実時間デバッグ・インタフェース１０５は読み出しまたは書き込みサイクルの双方に関連するデータフェッチのために「プロセッサステータス」信号を監視する。前記「プロセッサステータス」信号はまた読み出しサイクルあるいは書き込みサイクルが生じているかを指示する。読み出しまたは書き込みメッセージングに対して、実時間デバッグ・インタフェース１０５は適切なデータサイクルの間に対応するアドレスを捕捉するためにデータフェッチの間に前記「更新アドレス」を肯定する。例えば、読み出しメッセージングに対しては、前記実時間デバッグ・インタフェース１０５はもしプロセッサステータス・バスが読み出しサイクルを示していれば前記「更新アドレス」信号を肯定する。同様に、実時間デバッグインタフェース１０５はもしプロセッサステータス・バスが書き込みメッセージングに対する書き込みサイクルを示していれば前記「更新アドレス」信号を肯定する。もちろん、実時間デバッグ・インタフェース１０５はもし読み出しおよび書き込みメッセージングの双方がイネーブルされれば読み出しおよび書き込み信号の双方に対して前記「更新アドレス」信号を肯定する。また、データトレースがイネーブルされた時、実時間デバッグ・インタフェース１０５は前記「デバッグアドレス」バスからの読み出されたアドレスを読み出しまたは書き込みメッセージに対する１つまたはそれ以上の規定されたアドレス範囲のいずれかと比較する。もしある読み出しまたは書き込みサイクルに対してアドレス整合が検出されれば、実時間デバッグ・インタフェース１０５は「更新データ」信号を肯定して仮想バス・ゲーティング論理１１７が「デバッグデータ」バス上の対応するデータを肯定するようにさせる。
【００２９】
図４は、本発明の一実施形態に係わるプログラムトレース仮想アドレス・ゲーティング動作を示すタイミング図である。コア１０９のマスタクロック信号ＣＬＫ１およびＣＬＫ２が組み込みシステム１０３のためのタイミング基準として示されている。該タイミング図は仮想バス１１３の「仮想アドレス」バスを示しており、「アドレス１（ＡＤＤＲＥＳＳ１）」、「アドレス２（ＡＤＤＲＥＳＳ２）」、「ＣＯＦアドレス（ＣＯＦ  ＡＤＤＲ）」、「アドレス４（ＡＤＤＲＥＳＳ４）」、および「アドレス５（ＡＤＤＲＥＳＳ５）」と名付けられた５つのアドレスの肯定を示している。前記タイミング図はまた個々に「データ１（ＤＡＴＡ１）」、「データ２（ＤＡＴＡ２）」、「データ３（ＤＡＴＡ３）」、「データ４（ＤＡＴＡ４）」、および「データ５（ＤＡＴＡ５）」として示された５つの対応するデータ信号を示す、「仮想データ」バスをも示している。前記「処理ステータス」信号もまた示されており、命令フェッチとそれに続くＣＯＦ事象、それに続くデータフェッチ、および次に続く他の命令フェッチを示している。前記タイミング図はまた「更新アドレス（ＵＰＤＡＴＡ  ＡＤＤＲ）」信号、「デバッグアドレスクロック（ＤＥＢＵＧ  ＡＤＤＲ  ＣＬＫ）」信号、および「デバッグアドレス（ＤＥＢＵＧ  ＡＤＤＲ）」バスを示している。
【００３０】
図４の例では、プログラムトレースはデータトレースかディスエーブルされている間にイネーブルされる。データトレースがイネーブルされるから、「仮想データ」バス上のデータを監視する必要はない。したがって、実時間デバッグ・インタフェース１０５は「更新データ」信号がローに否定された状態に保ち、従って「仮想データ」バス上の活動にかかわりなく、「デバッグデータ」バスは静止したかつ不活性の状態に留まっている。これは電力が「デバッグデータ」バスをスイッチングして不必要に消費されることがないという点で電力消費を大幅に低減する直接的な利点を与える。
【００３１】
実時間デバッグ・インタフェース１０５は「仮想アドレス」バス上の全ての活動を監視する必要はない。「仮想アドレス」バス上の肯定された多くのアドレスは前に肯定されたアドレスの増分されたものまたはバージョンである。このようにして、いったん一連の引き続くアドレスが知られると、残りのアドレスが知られあるいは予測できてそれらが「デバッグアドレス」バスに転送される必要がなくなる。これは２進シーケンスが知られている限り、順次的なアドレスが必ずしも増分されない機構を含めて任意のアドレシング機構に対してあてはまる。実時間デバッグ・インタフェース１０５は、条件または無条件分岐またはループ命令に応答する場合、あるいは任意の直接または間接ＣＯＦ事象の場合のように、順次的な順序に従わないアドレスを識別しかつ読み出すのみでよい。「プロセッサステータス」信号上の肯定されたＣＯＦ命令は非順次的な（ｎｏｎ−ｓｅｑｕｅｎｔｉａｌ）アドレスを識別する。
【００３２】
図４に示されるように、「デバッグアドレス」バスは「仮想アドレス」バス上で順次的なアドレス「アドレス１」および「アドレス２」が肯定されても最後のＣＯＦアドレスとともに静止または静的状態に留まっている。特に、実時間デバッグ・インタフェース１０５が「プロセッサステータス」信号上のＣＯＦ命令を検出した場合、それは事象矢印（ｅｖｅｎｔ  ａｒｒｏｗ）４０１で示されるように「更新アドレス」信号を肯定する。「更新アドレス」信号の肯定は図２に示されるラッチ２０１をイネーブルする。「更新アドレス」信号が肯定されている間におけるＣＬＫ１信号の次の立ち上がりエッジに応じて、事象矢印４０３で示されるように、「デバッグアドレスクロック」信号が４０５で示されるように肯定される。「デバッグアドレスクロック」信号の肯定はラッチ２０１をイネーブルし、それによって事象矢印４０７で示されるように「仮想アドレス」バス信号が「デバッグアドレス」バス信号上へと駆動される。
【００３３】
このようにして、前記「デバッグアドレス」バスは実時間デバッグ・インタフェース１０５によって肯定された前記「肯定アドレス」信号に応答して前記最後のＣＯＦアドレスから新しいＣＯＦアドレスへと切り替えるのみとなる。「プロセッサステータス」信号上のＣＯＦ命令は事象矢印４０９で示されるようにＣＬＫ２信号の次の立ち上がりエッジに応じて完了する。実時間デバッグ・インタフェース１０５は事象矢印４１１で示されるようにＣＯＦ命令の完了に応じて「更新アドレス」信号を肯定解除する（ｄｅ−ａｓｓｅｒｔｓ）。これに応じて、「デバッグアドレスクロック」信号は事象矢印４１３で示されるように否定される。「デバッグアドレスクロック」信号はその後否定された状態に留まるから、「デバッグアドレス」バスは新しいＣＯＦアドレスによって不変かつ静止した状態に留まり、それによって電力を低減する。
【００３４】
図５は、本発明の一実施形態に係わるプログラムおよびデータトレース仮想アドレスおよびデータのゲーティングを示すタイミング図である。この例では、プログラムトレースおよびデータトレースの双方がイネーブルされる。プログラムトレースがイネーブルされるから、実時間デバッグ・インタフェース１０５は図４に関して前に説明したようにＣＯＦアドレスの肯定に応じて「仮想アドレス」バスを監視する。データトレースがイネーブルされるから、かつ読み出しおよび書き込みデータトレースの双方がイネーブルされるものと仮定すると、実時間デバッグ・インタフェース１０５は「仮想データ」バス上で行なわれている重要なまたは有意の（ｓｉｇｎｉｆｉｃａｎｔ）データ事象を監視する。該有意のデータ事象はワークステーション１２１によって規定されかつ監視のために実時間デバック・インタフェース１０５に伝達される。例えば、ある特定のアドレスにおいてある特定のレジスタへと書き込まれまたはある特定のレジスタから読み出される何らかのデータ、またはある特定のアドレス範囲内の複数のレジスタまたは何らかの他の形式のメモリ装置またはこれらに対し書き込まれる／読み出されるデータを識別することが望まれるかもしれない。数多くのそのようなアドレスまたはアドレス範囲を規定することができる。
【００３５】
実時間デバッグ・インタフェース１０５はデータトレースがイネーブルされている間にいずれかのまたは任意の「データフェッチ」命令に対する「プロセッサステータス」信号を監視する。「データフェッチ命令」が検出された時、実時間デバッグ・インタフェースは前記「更新アドレス」信号を肯定して「仮想アドレス」バスからの読み出しまたは書き込みアドレスを「デバッグアドレス」バス上へと捕捉する。実時間デバッグ・インタフェース１０５は次に「デバッグアドレス」バスからの読み出されたアドレスを監視されているいずれかのおよび全ての適用可能なアドレスまたはアドレス範囲と比較する。もし該アドレスが監視されるアドレスまたはアドレス範囲と等しければ、実時間デバッグ・インタフェース１０５は「更新データ」信号を肯定してもしそのデータ事象が有意のまたは重要なものである場合は「仮想データ」バス上の肯定されたデータの「デバッグデータ」バスへの転送を行なわせる。もし読み出しおよび書き込みの双方が前記特定のアドレス範囲に対して監視されていれば、そのデータ事象は有意のまたは重大なものと考えられることに注意を要する。そうでない場合は、そのデータ事象は実行されているサイクルの形式が監視されているサイクルの形式と同じである場合にのみ有意または重大なものである。
【００３６】
実時間デバッグ・インタフェース１０５はまた前記「プロセッサステータス」信号からデータサイクルが読み出しであるか書き込みであるかを決定する。もし読み出しデータトレースのみがイネーブルされかつ書き込みサイクルが検出されれば、あるいはその逆であれば、実時間デバッグ・インタフェース１０５は「更新アドレス」信号を肯定することができず、それはそのデータ事象が有意のまたは重大なものであると考えられないからである。読み出しまたは書き込みデータトレースがイネーブルされても、特定のアドレス範囲に対して読み出しサイクルと書き込みサイクルとの間を区別することが必要であるかもしれない。例えば、１つのアドレス範囲から読み出しサイクルを識別しかつ第２の異なるアドレス範囲から書き込みサイクルを識別することが望まれるかもしれない。一実施形態では、実時間デバッグ・インタフェース１０５内の比較論理が前記サイクル形式を使用して適用可能な監視されるアドレス範囲を決定する。もちろん、もし全ての規定されたアドレス範囲に対して読み出しおよび書き込みがイネーブルされれば、読み出しおよび書き込みサイクルの間を区別する必要はないであろう。
【００３７】
図５に示されるように、ＣＯＦ命令が、実時間デバッグ・インタフェース１０５によって検出される、「プロセッサステータス」信号上に現れている。実時間デバッグ・インタフェース１０５は事象矢印５０１で示されるように相応じて「更新アドレス」信号を肯定する。「更新アドレス」信号が肯定されている間に、ＣＬＫ１信号の肯定によって事象矢印５０３で示されるように「デバッグアドレスクロック」信号の付随する肯定が引き起こされる。ＣＬＫ２信号のその後の肯定によって「プロセッサステータス」信号上のＣＯＦ命令から「データフェッチ」命令への遷移が引き起こされる。「プロセッサステータス」信号上の「データフェッチ」命令は実時間デバッグ・インタフェース１０５によって検出され、これは「更新アドレス」信号を事象矢印５０７で示されるように肯定された状態に維持し、それはこの例ではデータトレースがイネーブルされているからである。「更新アドレス」信号が肯定された状態に留まっているから、「デバッグアドレスクロック」信号の第２の肯定によって「仮想アドレス」バス上に現れるデータ書き込みアドレスが、事象矢印５１１で示されるように、「デバッグアドレス」バスへとラッチされるようになる。データトレースがイネーブルされるから、「デバッグアドレス」バス上の肯定されたデータ書き込みアドレス（ＤＡＴＡ  ＷＲ  ＡＤＤＲ）は実時間デバッグ・インタフェース１０５によって読み出され、該読み出されたアドレスをその時に活性化されている読み出しまたは書き込みメッセージングに対するいずれかの特定の規定されたアドレス範囲と比較する。図５に示される例では、実時間デバッグ・インタフェース１０５は前記データ書き込みアドレスを前記アクティブなまたは活性化されたアドレス範囲と比較しかつデバッグアドレスの比較の整合を決定し、そして事象矢印５１３で示されるように相応じて「更新データ」信号を肯定する。実時間デバッグ・インタフェース１０５による「更新データ」信号の肯定は「仮想データ」バス上の信号が論理ゲート３０１，３０３を介して「デバッグデータ」バスへと転送されるようにし、結果として事象矢印５１５で示されるように「デバッグデータ」バス上で書き込みデータの肯定を引き起こすことになる。
【００３８】
前記論理ゲート２０５，３０１、ラッチ２０１およびバッファ２０３，３０３は仮想バス１１３上の低減された負荷という利点を与えるアイソレーションを提供する。「デバッグアドレス」および「デバッグデータ」バスの切り替えを低減するために「更新アドレス」および「更新データ」信号を使用することはさらに仮想バス１１３の低減された負荷の利点を提供しかつまた組み込みプロセッサ１０７かつ従って組み込みシステム１０３に対する実質的なまたはかなりの電力節約を可能にする。本発明に係わるシステムおよび方法が好ましい実施形態に関連して説明されたが、ここで説明された特定の形式に限定することを意図したものではなく、逆に添付の特許請求の範囲によって規定される本発明の精神および範囲内に合理的に含むことができるそのような置き換え、変更および等価物をカバーすることを意図している。
【図面の簡単な説明】
【図１】本発明に係わる実時間プロセッサ・デバッグシステムを説明するデバッグシステムの概略的ブロック図である。
【図２】本発明の一実施形態に従って構成された仮想アドレスバス・ゲーティング論理を示すブロック回路図である。
【図３】本発明の一実施形態に従って構成された仮想データバス・ゲーティング論理のブロック回路図である。
【図４】本発明の一実施形態に係わる実時間デバッグ・インタフェース・システムのプログラムトレース仮想アドレス・ゲーティング動作を示すタイミング図である。
【図５】本発明の一実施形態に係わる実時間デバッグ・インタフェース・システムのプログラムおよびデータトレース仮想アドレスおよびデータ・ゲーティング動作を示すタイミング図である。
【符号の説明】
１００  デバッグシステム
１０１  外部開発システム
１０２  補助バス
１０３  組み込みシステム
１０５  実時間デバッグ・インタフェース
１０７  組み込みプロセッサ
１０９  コア
１１１  キャッシュ／ＭＭＵ
１１３  仮想バス
１１５  物理バス
１１７  ゲーティング論理
【図１】
0004916617.tif 000002
【図２】
0004916617.tif 000003
【図３】
0004916617.tif 000004
【図４】
0004916617.tif 000005
【図５】
0004916617.tif 000006