(57)【要約】【課題】  ウォッチポイントを取り扱うためのデータ・プロセッサ・デバイスおよびその方法を提供する【解決手段】  データプロセッサのデバッグ動作モード中、データプロセッサにおいてウォッチポイント事象が発生したことが判定され、それに応答して、まだデバッガに通信されていないトレース情報を記憶するトレースＦＩＦＯの動作状態が変更される。たとえば、ＦＩＦＯフラッシュウォッチポイントが発生する結果として、トレース情報が、トレース解析器に通信されてしまう前にトレースＦＩＦＯからフラッシュされることになる。【選択図】  図１
2014049131.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
集積回路のトレース動作モードをイネーブルすることと、
前記トレース動作モードがイネーブルされるのに応答して前記集積回路のメモリにトレース情報を記憶することと、
前記トレース動作モード中に第１のタイプのウォッチポイントの発生が検出されるのに応答して、前記メモリから前記トレース情報をフラッシュすることであって、該メモリをフラッシュすることは前記トレース動作モードを変更しない、フラッシュすることとを含む、方法。
【請求項２】
前記メモリは先入れ先出しメモリである、請求項１に記載の方法。
【請求項３】
前記集積回路において、前記メモリを前記フラッシュしたことを示すトレースメッセージを生成することをさらに含み、前記トレースメッセージは前記集積回路の外部インターフェースに提供されることになる、請求項１に記載の方法。
【請求項４】
前記ウォッチポイントの前記発生を示すトレースメッセージを生成することをさらに含み、前記トレースメッセージは前記集積回路の外部インターフェースに
提供されることになる、請求項１に記載の方法。
【請求項５】
前記メモリが一杯であることに応答して、前記トレース動作モードの間、新たなトレース情報は前記メモリに記憶されない、請求項１に記載の方法。
【請求項６】
前記トレースモードをイネーブルすることは、第２のタイプのウォッチポイントの発生を検出するのに応答する、ことをさらに含む、請求項１に記載の方法。
【請求項７】
前記集積回路の外部インターフェースにおいてコマンドを受信することと、前記コマンドの実行に応答して前記トレースモードをイネーブルすることとをさらに含む、請求項１に記載の方法。
【請求項８】
前記ウォッチポイントの発生を検出するのに応答して前記メモリから前記トレース情報をフラッシュすることは、メモリフラッシュ指示子をアサートすることを含む、請求項１に記載の方法。
【請求項９】
前記ウォッチポイントの前記発生は、アクセス対象のアドレスが前記ウォッチポイントに一致するのに応答して検出される、請求項１に記載の方法。
【請求項１０】
デバイスであって、
出力を備えるトレースモジュールであって、該トレースモジュールは前記出力においてデータプロセッサのトレース情報を提供する、トレースモジュールと、
出力を備えるウォッチポイントモジュールであって、該ウォッチポイントモジュールは、ウォッチポイント事象の発生を検出するのに応答して、前記出力においてフラッシュ指示子を提供する、ウォッチポイントモジュールと、
前記トレースモジュールの前記出力および前記ウォッチポイントモジュールの前記出力に結合されるメモリモジュールであって、該メモリモジュールは、前記フラッシュ指示子に応答して前記メモリモジュールに記憶されている、バッファリングされたトレース情報をフラッシュする、メモリモジュールとを備える、デバイス。
【請求項１１】
前記メモリは先入れ先出しメモリである、請求項１０に記載のデバイス。
【請求項１２】
前記トレースモジュールは前記ウォッチポイントモジュールに結合され、前記フラッシュ指示子が提供されていることを示すトレースメッセージを生成するものである、請求項１０に記載のデバイス。
【請求項１３】
前記フラッシュ指示子が提供されていることを示す前記トレースメッセージは、前記バッファリングされたトレース情報がフラッシュされた後に前記メモリモジュールに記憶されることになる、請求項１０に記載のデバイス。
【請求項１４】
前記メモリモジュールは、前記メモリが一杯になっていることに応答して新たなトレース情報を記憶することにならない、請求項１０に記載のデバイス。
【請求項１５】
前記ウォッチポイント事象は第１のタイプの第１のウォッチポイント事象であり、前記ウォッチポイントモジュールは、第２のタイプの第２のウォッチポイント事象の発生を検出するのに応答して、前記出力においてトレースイネーブル指示子を提供し、前記トレースモジュールは、前記トレースイネーブル指示子に応答して前記トレース情報を提供するようにイネーブルされる、請求項１０に記載のデバイス。
【請求項１６】
前記ウォッチポイントモジュールに接続されるアドレスバスをさらに備え、前記ウォッチポイントモジュールは、前記ウォッチポイント事象の発生を判定するために前記アドレスバスにおける値をウォッチポイント値とマッチングする、請求項１０に記載のデバイス。
【請求項１７】
方法であって、
トレースＦＩＦＯ制御ウォッチポイント事象の検出をイネーブルすることであって、前記トレースＦＩＦＯ制御ウォッチポイントは、データプロセッサの動作のトレース情報を記憶するＦＩＦＯ（先入れ先出し）メモリの動作を変更する、イネーブルすることと、
前記トレースＦＩＦＯ制御ウォッチポイントの発生を検出するのに応答して、前記ＦＩＦＯの動作状態を、第１の動作状態から第２の動作状態へ変更することであって、前記ＦＩＦＯは前記第１の動作状態と前記第２の動作状態の両方の間にトレース情報を記憶するようにイネーブルされる、変更することとを含む、方法。
【請求項１８】
前記第２の動作状態は、前記ＦＩＦＯに記憶された前記トレース情報がフラッシュされているという点で前記第１の動作状態とは異なる、請求項１７に記載の方法。
【請求項１９】
前記ＦＩＦＯの前記動作状態の前記変更を示すトレース情報を生成することをさらに含む、請求項１７に記載の方法。
【請求項２０】
前記トレース情報は前記ＦＩＦＯに記憶される、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は電子デバイスに関し、デバッグ能力を有するより多くのデータ処理デバイス（複数の場合もあり）に関する。
【背景技術】
【０００２】
ＩＥＥＥ  ＩＳＴＯ５００１として知られるＩＥＥＥ標準規格、またはＮｅｘｕｓデバッグ標準規格のようなデバッグプロトコルは、リアルタイム・デバッグ・メッセージ生成をサポートすることができる、データ処理システムに対するリアルタイム・デバッグ・サポートを確立するのに使用される。このようなデバッギング標準規格は、データプロセッサのコードの開発に使用されるデバッギングプロセスを指定することができる。リアルタイムデバッギングに使用される１つの技法は、データ処理システムによって生成されるデバッグ情報を含むデバッグメッセージを使用することである。１つのタイプのデバッグ情報はトレース情報と称され、これは、プログラムトレース情報およびデータトレース情報を含むことができる。プログラムトレース情報は、データプロセッサのアドレス事象に関係するプログラム・トレース・メッセージを生成するプログラム・トレース・メッセージング中に生成されることができる。データトレース情報は、レジスタロケーションのようなデータプロセッサの記憶ロケーションに記憶されるデータ情報に関係するデータ・トレース・メッセージを生成するデータ・トレース・メッセージング中に生成されることができる。たとえば、プログラム・トレース・メッセージングは、デバッグ動作中にいずれのプログラムがデータプロセッサによって実行されるかを決定するのに使用されるプログラムトレース情報を記憶するのに使用されることができ、データ・トレース・メッセージングは、データプロセッサのデバッグ動作中に記憶されているデータの変更を記憶するのに使用されることができる。
【０００３】
トレース情報は、一般的にはデータ処理システムの外部にあるデバッガに転送されるまで、データ処理システムの先入れ先出し（ＦＩＦＯ）バッファに記憶されることができる。しかしながら、データプロセッサがトレース情報を生成する速度が、データプロセッサがデバッグトレース情報を外部デバッガに通信することができる速度よりも速いことに起因してＦＩＦＯが一杯になるときに、問題が発生する。このような状況では、１つまたは複数のトレードオフが発生することを避けられず、その各々がデータ処理システムのデバッグ能力に影響を与える可能性がある。たとえば、データプロセッサは、ＦＩＦＯがもはや一杯でなくなるまで失速する可能性があり、これによって、データ処理システムの瞬時性が変わってしまう可能性がある。代替的には、データ処理システムはそれ以上トレース情報を記憶することなく作動し続けることができるが、その結果として、データ処理システムがリアルタイムで動作し続けるため、デバッグ情報が失われてしまうことになる。
【図面の簡単な説明】
【０００４】
実施形態は例として示されており、添付の図面によって限定されない。
【０００５】
【図１】本開示の一実施形態によるデバッグメッセージ生成を有するデータ処理システムを示すブロック図。
【図２】本開示の一実施形態による、図１のデバッグモジュールの一部を示すブロック図。
【図３】本開示の一実施形態による、図２のデバッグモジュールの一部によって使用される記憶ロケーションを示すブロック図。
【図４】本開示の一実施形態による、図２のトレースＦＩＦＯの特定の動作方法を示す流れ図。
【図５】本開示の一実施形態による、図２のトレースＦＩＦＯの特定の動作方法を示す流れ図。
【図６】本開示の一実施形態による、様々な時点において図２のトレースＦＩＦＯに記憶されるトレース情報を示すブロック図。
【図７】本開示の一実施形態による、図１のデバッグモジュールの特定の動作方法を示す流れ図。
【図８】図１のシステムのプログラムメモリの特定の実施形態およびデバッグレジスタ状態を示す図。
【０００６】
図面内の要素は簡潔かつ明瞭にするために示されており、必ずしも原寸に比例して描かれてはいないことを当業者は諒解する。
【発明を実施するための形態】
【０００７】
データプロセッサのデバッグ動作モード中、データプロセッサにおいてウォッチポイント事象が発生したことが判定され、それに応答して、トレース情報を記憶するＦＩＦＯ（トレースＦＩＦＯ）の動作状態が変更される。たとえば、ＦＩＦＯフラッシュウォッチポイントが発生する結果として、トレース情報が、トレース解析器に通信されてしまう前にトレースＦＩＦＯからフラッシュされることになる。ＦＩＦＯをフラッシュすることによって、フラッシュされる前にＦＩＦＯに記憶されていた、まだ外部に通信されていない情報は、もはやＦＩＦＯの外部には通信され得ない。これは一般的には、まだＦＩＦＯの外部に通信されていない情報を無効化することによって達成され、情報は、ＦＩＦＯの先頭位置および最後尾位置に対応するポインタを変更すること、ＦＩＦＯに記憶されている実際のデータを変更することなどによって無効されることができる。しかしながら、ＦＩＦＯがフラッシュされる様式はＦＩＦＯの特定の実施態様に応じて変わり得ることが諒解されよう。本開示の様々な態様は、後述する図１〜図８を参照してより理解されることになろう。
【０００８】
図１には、デバッグ動作モード中にトレースメッセージングをサポートする例示的なデータ処理システム１０が示されている。データ処理システム１０内にはグローバル相互接続１２がある。１つの形態では、グローバル相互接続１２はシステムバスである。たとえば、クロスバー、二点間接続、ならびに光および無線送信技法を含む他の形態の相互接続が使用されてもよい。加えて、本明細書に記載のものと同じまたは類似の様式で使用される、相互接続１２と同じまたは異なるタイプの複数の他の相互接続があってもよい。バス・インターフェース・ユニット（ＢＩＵ）１４が、双方向性相互接続を介してグローバル相互接続１２に接続される。１つの形態では、双方向性相互接続は、双方向性マルチ導体バス（ｂｉｄｉｒｅｃｔｉｏｎａｌ  ｍｕｌｔｉｐｌｅ  ｃｏｎｄｕｃｔｏｒ  ｂｕｓ）であり、本明細書におけるマルチ導体バスは、導体にわたる斜線で表されている。ＢＩＵ１４は、メモリ管理ユニット（ＭＭＵ）１６に双方向的に接続される。ＭＭＵ１６は、双方向性マルチ導体バスを介してグローバル制御モジュール１８の第１の入出力端子に接続される。グローバル制御モジュール１８の第２の入出力端子は、双方向性マルチ導体バスを介して命令フェッチユニット２０の第１の入出力端子に接続される。命令フェッチユニット２０は、マルチ導体バスを介して命令デコーダ２２の入力に接続される出力を有する。命令デコーダ２２の出力は、実行ユニット２４の入力に接続される。１つの形態では、実行ユニット２４は、少なくとも１つの算術論理演算ユニット、少なくとも１つの浮動小数点演算ユニットおよび少なくとも１つの乗算器モジュールを含む。実行ユニット２４内にはレジスタファイル２５がある。命令デコーダ２２の入出力端子は、グローバル制御モジュール１８の第３の入出力端子に接続される。実行ユニット２４の第１の入出力端子は、グローバル制御モジュール１８の第４の入出力端子に接続される。実行ユニット２４および命令フェッチユニット２０は、ＭＭＵ１６にも双方向的に接続される。ロード／ストアユニット２８は、グローバル制御モジュール１８の第６の入出力端子に双方向的に接続される第１の入出力端子を有する。ロード／ストアユニット２８は、ＢＩＵ１４の第１の入出力端子に接続される第２の入出力端子を有する。ロード／ストアユニット２８は、実行ユニット２４の第２の入出力端子に接続される第３の入出力端子を有する。ＢＩＵ１４の第２の入出力端子は、グローバル制御モジュール１８の第７の入出力端子に接続される。ロード／ストアユニット２８の出力はデータ仮想アドレス（Ｄ＿ＶＡＤＤＲ）を提供し、ＭＭＵ１６の第１の入力およびデバッグモジュール２６の第１の入力に接続される。命令フェッチユニット２０の出力は命令仮想アドレス（Ｉ＿ＶＡＤＤＲ）を提供し、ＭＭＵ１６の第２の入力およびデバッグモジュール２６の第２の入力に接続される。ＭＭＵ１６の第１の出力はデータ物理アドレス（Ｄ＿ＰＡＤＤＲ）を提供し、ＢＩＵ１４の第１の入力およびデバッグモジュール２６の第２の入力に接続される。ＭＭＵ１６の第２の出力は命令物理アドレス（Ｉ＿ＰＡＤＤＲ）を提供し、ＢＩＵ１４の第２の入力およびデバッグモジュール２６の第３の入力に接続される。
【０００９】
メモリ３０は、双方向性相互接続を介してグローバル相互接続１２に接続される。デバッグモジュール２６は、双方向性マルチ導体を介して複数のデバッグ端子４０に接続される第２の入出力端子を有する。複数のデバッグ端子４０は、一般的にデバッガまたは外部デバッガと称される外部デバッグツールである外部開発システム３６に接続され、これは、様々なデバッグ情報およびコードメモリ内容（ｃｏｄｅ  ｍｅｍｏｒｙ  ｃｏｎｔｅｎｔｓ）のローカル画像（ｌｏｃａｌ  ｉｍａｇｅ）を使用して、システムによって実行されているプログラムフローを再構築する。示されている形態では、ＢＩＵ１４、ＭＭＵ１６、グローバル制御モジュール１８、命令フェッチユニット２０、命令デコーダ２２、レジスタファイル２５を有する実行ユニット２４、デバッグモジュール２６およびロード／ストアユニット２８は集合的に、図１において破線のグループ分けによって示されているデータプロセッサ４２を形成する。図１、および他の図面の様々なモジュールは特定の接続を有する隔離されたロケーションにおいて示されているが、このようなモジュールは、分散された様式で実装され、データ処理システム１０の様々な他のシステムブロックのいずれかの中に含まれてもよいことが理解されよう。たとえば、図２のデバッグモジュール２６の実施形態において示されている記憶ロケーション７１／７２は、レジスタファイル２５の一部、またはデータプロセッサ４２の他の部分であることができる。また、示されている実施形態では、グローバル制御１８は、現在実行されているプロセスのためのプロセス識別子（ＰＩＤ）を記憶するプロセス識別子（ＰＩＤ）レジスタ１９を含む。グローバル制御１８は、ＰＩＤをもＭＭＵ１６に提供する。
【００１０】
動作時、データプロセッサ４２はグローバル相互接続１２を介してメモリ３０および他のデバイス（図示せず）と通信することができる。メモリ３０と他のデバイスとの間で通信される情報は、ＢＩＵ１４を通じて移動する。命令フェッチユニット２０は、グローバル制御モジュール１８の制御下でＢＩＵ１４からデータプロセッサ命令（すなわち、プロセッサ命令）を取り出す。取り出された命令は、グローバル制御モジュール１８の制御下で復号するために命令デコーダ２２に順次通信される。実行ユニット２４が命令を実行して、キャッシュ（図示せず）内に記憶されるか、またはグローバル制御モジュール１８、ＢＩＵ１４およびグローバル相互接続１２を介してメモリ３０内に置かれるかのいずれかであるデータを生成する。データプロセッサ４２およびデータ処理システム１０の動作のデバッギングが、外部開発システム３６による解析のためのデバッグ情報を生成するデバッグモジュール２６を使用することによって実行される。外部開発システム３６からの起動に応答して、試験またはデバッグ動作モードに入る。
【００１１】
示されている形態では、デバッグモジュール２６は、データ仮想アドレス、データ物理アドレス、プログラム（命令）仮想アドレス、プログラム物理アドレスを含む、グローバル相互接続１２のうちの１つまたは複数およびデータプロセッサ４２の内部のロケーションからのアドレス情報を受信するように構成される。デバッグモジュール２６は、ＢＩＵ１４およびロード／ストアユニット２８からのデータ情報、およびグローバル制御１８からの情報を受信するように構成される。データアドレスはデータが存在するアドレスであり、一方でプログラムアドレスは命令が存在するアドレスである。プログラム仮想アドレスは命令フェッチユニット２０からデバッグモジュール２６およびＭＭＵ１６へ提供される。仮想アドレスは、情報が存在している物理記憶ロケーションの変換アドレスを得るために何らかのさらなる処理または変換を必要とする、変換されていないアドレスである。ＭＭＵ１６は、メモリの仮想ページのアドレスを対応する物理ページアドレスに変換することによって、命令物理アドレスをＢＩＵ１４およびデバッグモジュール２６に提供する。メモリのページはグループ化された連続するロケーションであり、一般的には、たとえば４キロバイトページ、１６キロバイトページ、６４キロバイトページなどのような、２の累乗であるサイズを有する。ロード／ストアユニット２８は、データ仮想アドレスをデバッグモジュール２６およびＭＭＵ１６に提供する。ＭＭＵ１６は、データ物理アドレスをＢＩＵ１４およびデバッグモジュール２６に提供する。デバッグモジュール２６は、下記により詳細に説明するように、受信アドレスのうちの１つまたは複数における情報に基づいて、外部開発システム３６に対するデバッグメッセージを形成する。
【００１２】
図２には、デバッグ制御モジュール６０と、トレースモジュール６２と、ウォッチポイントモジュール７０と、デバッグ入出力（Ｉ／Ｏ）モジュール６６と、トレースＦＩＦＯ７５とを含む、図１のデバッグモジュール２６の一部の例示的な実施形態が示されている。デバッグ制御モジュール６０は、デバッグモジュール２６の動作を制御するのに使用され、図２の様々なモジュールと通信することができる。トレースモジュール６２はデータプロセッサ４２の動作を監視し、ウォッチポイントモジュール７０からトレースイネーブル指示子（ＴＲＡＣＥ＿ＥＮ）を受信するのに応答して、トレース情報をキャプチャしてＦＩＦＯ７５に提供することになり、ＦＩＦＯは、トレース情報を、記憶ロケーションのアレイ（図示せず）において実装されることができる次の利用可能な記憶ロケーション内に記憶する。ウォッチポイントモジュール７０は、イネーブルされたウォッチポイント事象の発生に関してシステム１０の動作を監視し、ウォッチポイント事象が検出されるのに応答してデバッグモジュール２６の様々な部分に通知する。ウォッチポイントは、特定のアドレスがアクセスされる、特定のデータ値が記憶されるなど、およびそれらの組み合わせのような、いくつかのタイプの事象のうちのいずれか１つによってトリガされることができるが、説明を目的として、ウォッチポイントは特定のアドレスがアクセスされるのに基づくものと仮定される。たとえば、ウォッチポイントモジュール７０は、信号ＴＲＡＣＥ＿ＥＮ、すなわちトレースイネーブル指示子をアサートして、トレースモジュール６２によるトレース情報のキャプチャを促進することができる。説明を目的として、デバッグモジュール２６の部分間、およびグローバル相互接続１２との間の様々な接続は、図２において、本明細書に記載の実施形態に関するデータフローの特定の方向を示す矢印を用いて示されている。しかしながら、矢印の指示は、情報を単一方向に送信することしかできない接続を示すようには意図されていないことが諒解されよう。
【００１３】
デバッグ制御モジュール６０は、デバッグ制御モジュール２６の様々な動作状態を制御するのに使用される情報を記憶することができるレジスタ７１を含む。たとえば、レジスタ７１は、アサートされるとデバッグモジュール２６の動作をイネーブルするフィールドＤＥＢＵＧ＿ＥＮ、アサートされるとプログラム・トレース・メッセージングをイネーブルするフィールドＰＧＭ＿ＴＲＡＣＥ＿ＥＮ、アサートされるとデータ・トレース・メッセージングをイネーブルするフィールドＤＡＴＡ＿ＴＲＡＣＥ＿ＥＮなどを含むことができる。デバッグ制御モジュール６０は、デバッグＩ／Ｏ制御モジュール６６に接続される（図示せず）。動作中、デバッグ制御モジュール６０は、デバッグＩ／Ｏモジュール６６を介して、デバッグ制御モジュール６０によって実行されるコマンドを含む外部情報を受信することができる。デバッグ制御モジュール６０によって実行されることができるコマンドの一例は、たとえば、レジスタ７１への書き込みによってデバッグ動作をイネーブル／ディセーブルするコマンドを含む。
【００１４】
イネーブルされると、トレースモジュール６２は、様々なデバッグ制御情報に基づいてデータ処理システム１０の動作を監視する。図２には、具体的には、グローバル相互接続１２においてアドレスおよびデータが監視されることを可能にするグローバル相互接続１２への接続、および、プロセッサ４２内で送信される情報が監視されることができるような、データプロセッサ４２の内部の相互接続への接続が示されている。一実施形態によれば、トレースモジュール６２によるデータ・トレース・メッセージングおよびプログラム・トレース・メッセージングは、デバッグ制御モジュール６０がコマンドを実行するのに直に応答して、デバッグ制御モジュール６０によってイネーブルされることができる。別の実施形態によれば、トレースモジュール６２によるデータ・トレース・メッセージングおよびプログラム・トレース・メッセージングは、ウォッチポイント事象の発生に応答してウォッチポイントモジュール７０によってイネーブル／ディセーブルされる。たとえば、図３は、トレースメッセージングをイネーブル／ディセーブルするのに使用されることができる、ＷＰ＿ＴＲＩＧＧＥＲＳとラベリングされるレジスタ７２のセットの特定の実施形態を示す。示されているウォッチポイント・トリガ・レジスタは、ＷＰ＿Ｔ１＿ＥＮ、ＷＰ＿Ｔ２＿ＥＮ、ＷＰ＿Ｔ３＿ＥＮ、およびＷＰ＿Ｔ４＿ＥＮとラベリングされるフィールドを含む。図３のフィールドの各々はウォッチポイント・タイプ・イネーブル・フィールドと称され、種々のタイプのウォッチポイントが、種々のタイプの情報に基づいてトリガする、すなわち、デバッグモジュールに種々の動作など、およびそれらの組み合わせを実行させることができる。
【００１５】
一実施形態によれば、図３のレジスタフィールドの各々はマルチビットフィールドであることができ、図３のレジスタフィールドの可能なマルチビット値のうちの１つは、そのレジスタフィールドの対応するウォッチポイントタイプがディセーブルされることを示し、レジスタフィールドの他の可能なマルチビット値は、それぞれ、対応するウォッチポイントタイプのウォッチポイント事象の発生を判定するのに使用される値を記憶する、対応するウォッチポイントレジスタを識別する。たとえば、図３のウォッチポイント・タイプ・イネーブル・フィールドの各々は３ビットフィールドであることができる。ゼロの値（０００ｂ）を有するウォッチポイント・イネーブル・フィールドは、そのフィールドの対応するウォッチポイントタイプがディセーブルされることを示し、１の２進値（００１ｂ）は、フィールドの対応するウォッチポイントタイプがイネーブルされること、および、ウォッチポイントモジュール７０のウォッチポイントＷＰ１がウォッチポイント事象の発生を判定するのに使用されることを示し、２の２進値（０１０ｂ）は、フィールドに対応するウォッチポイントタイプがイネーブルされること、および、ウォッチポイントモジュールのウォッチポイントＷＰ２がウォッチポイント事象の発生を判定するのに使用されることを示し、他のウォッチポイントは同様に使用するために示されることができる。
【００１６】
種々のウォッチポイントタイプの例は、実行されるアドレスが示されているウォッチポイントレジスタに記憶されている値に一致することのような、そのウォッチポイント条件が満たされることに応答してトレースモジュール６２によるプログラムトレースをイネーブルするプログラム・トレース・イネーブル・ウォッチポイント、実行されるアドレスが示されているウォッチポイントレジスタに記憶されている値に一致することのような、そのウォッチポイント条件が満たされることに応答して、トレースモジュール６２によるプログラムトレースをディセーブルするプログラム・トレース・ディセーブル・ウォッチポイント、実行されるアドレスが示されているウォッチポイントレジスタに記憶されている値に一致することのような、そのウォッチポイント条件が満たされることに応答して、トレースモジュール６２によるデータ・トレース・メッセージングをイネーブルするデータ・トレース・イネーブル・ウォッチポイント、実行されるアドレスが示されているウォッチポイントレジスタに記憶されている値に一致することのような、そのウォッチポイント条件が満たされることに応答して、トレースモジュール６２によるデータトレースをディセーブルするデータ・トレース・ディセーブル・ウォッチポイント、実行されるアドレスが示されているウォッチポイントレジスタに記憶されている値に一致することのような、そのウォッチポイント条件が満たされることに応答して、結果としてＦＩＦＯ７５の動作を変更することになるＦＩＦＯ制御ウォッチポイントなどを含む。１つのタイプのＦＩＦＯ制御ウォッチポイントは、下記により詳細に説明するように、結果として、ＦＩＦＯ７５に記憶されているデータのいくつかまたはすべてが、外部開発システム３６に提供される代わりにフラッシュされるようにするＦＩＦＯフラッシュウォッチポイントである。
【００１７】
イネーブルされると、トレースモジュール６２は、プロセッサ４２内の相互接続からの情報のような、データプロセッサ４２の内部リソースからの情報、グローバル相互接続１２における情報等を含む、様々なロケーションからのトレース情報を取得することができる。それに応答して、トレースモジュール６２は、トレースメッセージ生成器６４に、トレース解析のために外部開発システム３６（図１）に提供される前にバッファリングするためにトレースＦＩＦＯ７５に提供されるトレースメッセージを生成させることになる。特に、デバッグＩ／Ｏ制御モジュール６６は、トレースメッセージのような、待ち行列に入れられているトレース情報にアクセスして、このメッセージを外部相互接続４０を介して外部開発システム３６に提供するために、トレースＦＩＦＯ７５とインターフェースすることができる。
【００１８】
図４は、ＦＩＦＯ７５の動作の特定の実施形態の方法を流れ図形式で示しており、ＦＩＦＯ７５が一杯になっているのに応答して応答して、トレースモジュール６２からの新たなトレースデータが失われている。図４の方法は、ブロック４０１において、新たなトレース情報がたとえば、トレースＦＩＦＯ７５に記憶される準備ができるまで待つ。新たなトレース情報を受信するのに応答して、フローはブロック４０２に進み、トレースＦＩＦＯ７５が一杯であるか否かが判定される。そうである場合、現在の新たなトレース情報をＦＩＦＯ７５に記憶することなく、フローはブロック４０１に戻ってさらに新たなトレース情報を待ち、そうでない場合、フローはブロック４０３に進む。ブロック４０３において、現在の新たなトレース情報がトレースＦＩＦＯ７５に記憶され、フローはブロック４０１に戻る。
【００１９】
図５の方法は、ブロック５０１において、新たなトレース情報がたとえば、トレースＦＩＦＯ７５に記憶される準備ができるまで待つ。ブロック５０２において、トレースＦＩＦＯ７５が一杯であるか否かが判定される。トレースＦＩＦＯ７５が一杯でない場合、フローはブロック５０３に進み、一切の他のすでに記憶されているトレース情報に影響を与えることなく新たなトレース情報がトレースＦＩＦＯ７５に追加され、そうでない場合、ＦＩＦＯ７５が一杯になっているのに応答して、フローはブロック５０４に進み、すでに記憶されているデバッグ情報を含む既存のＦＩＦＯエントリをフラッシュすることによって、新たなトレース情報がトレースＦＩＦＯ７５に記憶される。たとえば、最も古いデバッグ情報がフラッシュされることができる。ＦＩＦＯ７５が一杯になっていることに応答したデバッグモジュール２６の動作様式は、他の様式でも対処されることができることが諒解されよう。たとえば、データプロセッサ４２は、ＦＩＦＯ７５が一杯になっていることに応答して失速する可能性があり、したがって、ＦＩＦＯ７５においてスペースが利用可能になるまでそれ以上命令を実行することが妨げられる。
【００２０】
一実施形態では、デバッグモジュール２６は、結果としてＦＩＦＯ７５において待ち行列に入れられているトレース情報がフラッシュされるようにし、それゆえ、フラッシュされるトレース情報が外部相互接続４０を介して通信されることを妨げるＦＩＦＯフラッシュウォッチポイント（ＦＬＵＳＨ＿ＦＩＦＯ）を含む、１つまたは複数のＦＩＦＯウォッチポイントタイプをサポートする。上述のように、ＦＩＦＯフラッシュウォッチポイント事象は、ウォッチポイントレジスタＷＰ１〜ＷＰｎのうちの１つまたは複数に記憶されているウォッチポイント値がグローバル相互接続１２におけるアドレスに一致するのに応答して発生し得る。この事象が発生するのに応答して、ＦＬＵＳＨ＿ＦＩＦＯ指示子がアサートされる。説明を目的として、ＦＬＵＳＨ＿ＦＩＦＯ事象が発生するときを判定するためにグローバル相互接続１２の物理プログラムアドレスがＦＬＵＳＨ＿ＦＩＦＯウォッチポイントに比較されることが仮定されるが、他の実施形態では、アドレスは他のバスまたはアドレスタイプと関連付けられることができる。したがって、ＦＬＵＳＨ＿ＦＩＦＯ事象の発生に応答して、ウォッチポイントモジュール７０は、トレースＦＩＦＯ７５およびトレースモジュール６２にウォッチポイント事象の発生を通知する指示子を提供する。たとえば、ウォッチポイントモジュール７０は、たとえばそれぞれトレースＦＩＦＯ７５およびトレースモジュール６２に提供される、対応する導電性ノードにおける所定の信号状態を駆動することによって、信号ＦＬＵＳＨ＿ＲＥＱおよびＦＭＳＧ＿ＲＥＱをアサートすることができるが、ウォッチポイントモジュール７０と様々な他のモジュールとの間で事象の発生を通信するために他の指示子が使用されることができることが諒解されよう。
【００２１】
ＦＬＵＳＨ＿ＲＥＱ指示子がアサートされることに応答して、トレースＦＩＦＯ７５がフラッシュされることになり、ＦＭＳＧ＿ＲＥＱ指示子がアサートされることに応答して、トレースモジュール６２が、ＦＩＦＯ７５がフラッシュされ、したがって一切の既存のデータが無効化されたことを示す、フラッシュされたＦＩＦＯ内に記憶されるトレースメッセージを生成する。一実施形態によれば、図６に示すように、トレースＦＩＦＯ７５の内容全体がフラッシュされることになる。
【００２２】
図６は、様々な時点におけるＦＩＦＯ７５の内容をブロック図形式で示す。時点Ｔ０において、デバッグ情報はＦＩＦＯ７５に記憶されておらず、それゆえ、空であるとして示されており、ＦＩＦＯの先頭ポインタ（Ｈ）および最後尾ポインタ（Ｔ）は両方ともＦＩＦＯ７５の最下部のエントリを指示している。トレースメッセージングがイネーブルされた後、トレース情報Ｔ＿ＩＮＦＯ＿０〜Ｔ＿ＩＮＦＯ＿９がＦＩＦＯ７５に記憶され、この情報は、外部開発システム３６に通信するために取り出されるまでそのままである。したがって、時点Ｔ１において、トレース情報Ｔ＿ＩＮＦＯ＿０〜Ｔ＿ＩＮＦＯ＿９がＦＩＦＯ７５に記憶され、最も古いＦＩＦＯエントリを識別する先頭ポインタはＴ＿ＩＮＦＯ＿０を指示し、次のトレース情報が記憶されることになるＦＩＦＯロケーションを指示するＦＩＦＯ７５の最後尾ポインタは、Ｔ＿ＩＮＦＯ＿９が記憶されたロケーションの後ろのＦＩＦＯロケーションを指示する。
【００２３】
時点Ｔ１と時点Ｔ２の間に、トレース情報Ｔ＿ＩＮＦＯ＿０〜Ｔ＿ＩＮＦＯ＿６がＦＩＦＯ７５から取り出されて外部開発システム３６に提供され、新たなトレース情報Ｔ＿ＩＮＦＯ＿１０〜Ｔ＿ＩＮＦＯ＿６０がＦＩＦＯ７５に記憶される。この結果として、ＦＩＦＯ７５の先頭は情報Ｔ＿ＩＮＦＯ＿７を指示することになり、ＦＩＦＯ７５の最後尾は、Ｔ＿ＩＮＦＯ＿６０が記憶されたロケーションの後ろのＦＩＦＯロケーションを指示することになる。
【００２４】
時点Ｔ２の後、ＦＬＵＳＨ＿ＦＩＦＯウォッチポイント事象の発生が発生しており、この結果としてＦＩＦＯ７５の内容全体が図６の時点Ｔ３において示されるようにフラッシュされることになり、先頭ポインタおよび最後尾ポインタは両方ともＦＩＦＯ７５の同じロケーションを指示する。なお、理解の便宜のために、フラッシュされる前にＦＩＦＯ７５に記憶されていた情報が、いずれの情報がフラッシュされたかを示すために時点Ｔ３において示されている。具体的には、情報Ｔ＿ＩＮＦＯ＿７〜Ｔ＿ＩＮＦＯ＿６０がフラッシュされており、それゆえ、外部開発システム３６には送信されないことになる。
【００２５】
ＦＩＦＯフラッシュウォッチポイントの発生を示すアサートされたＦＭＳＧ＿ＲＥＱ指示子を受信するのに応答して、トレースメッセージ生成器６４は、トレースＦＩＦＯがフラッシュされた後の時点Ｔ４においてトレースＦＩＦＯ７５内に記憶される、図６においてＦＬＵＳＨ＿ＭＳＧとラベリングされるトレース情報を生成することになる。ＦＬＵＳＨ＿ＭＳＧはＦＩＦＯフラッシュウォッチポイントの発生を示し、これによって、外部開発システムツールは、ＦＬＵＳＨ＿ＭＳＧを受信すると、トレース情報が失われたと判定し、それゆえその動作を同期させることが可能になることになる。なお、ＦＩＦＯのフラッシュはトレース動作モードを変更せず、たとえば、デバッグモジュールは、ＦＩＦＯがフラッシュされた後もＦＩＦＯがフラッシュされる前と同様に、ＦＩＦＯ７５内にトレース情報を記憶し続ける。
【００２６】
上述の実施形態はトレースＦＩＦＯをフラッシュすることに関連して説明されているが、図７の流れ図に示されているように、追加のタイプのＦＩＦＯ制御ウォッチポイントが実施されることができることが諒解されよう。具体的には、ブロック７０１において、デバッグモジュール２６は、ＦＩＦＯ７５に記憶されているトレース情報を通常の様式で収集しており、一方で、ウォッチポイントモジュール７０は、ＦＩＦＯ制御ウォッチポイント、たとえば、デバッグメッセージングがイネーブルされるときにＦＩＦＯが動作する様式を制御するウォッチポイントの発生を待っている。ＦＩＦＯ制御ウォッチポイント事象の発生に応答して、フローはブロック７０２に進む。
【００２７】
ブロック７０２において、発生したＦＩＦＯ制御ウォッチポイント事象のタイプが判定され、デバッグモジュール２６内で、影響を受けることになるモジュールに通知するために適切な指示子が提供される。たとえば、デバッグモジュール４２に存在する第１のＦＩＦＯをフラッシュする、ＦＬＵＳＨ＿ＦＩＦＯ＿１と称される第１のタイプのＦＩＦＯ制御ウォッチポイント、および、外部デバッグモジュール４２に存在する第２のＦＩＦＯをフラッシュする、ＦＬＵＳＨ＿ＦＩＦＯ＿２と称される第２のタイプのＦＩＦＯ制御ウォッチポイントがあると仮定して、ブロック７０２は、ＦＬＵＳＨ＿ＦＩＦＯ＿１に対応する事象が発生するのに応答してブロック７０３に遷移し、ＦＬＵＳＨ＿ＦＩＦＯ＿２に対応する事象が発生するのに応答してブロック７０４に遷移する。図２の実施形態に関連して、ウォッチポイントモジュール７０の動作はブロック７０２に対応することができ、複数のフラッシュ要求のうちの１つおよびフラッシュメッセージ要求（図示せず）が生成されることができる。ブロック７０３において、デバッグモジュールは、ＦＬＵＳＨ＿ＦＩＦＯ＿１に対応する事象に応答して特定の動作を実施し、たとえば、第１のＦＩＦＯがフラッシュされて、プログラムフローはブロック７０１に戻る。ブロック７０４において、デバッグモジュールは、ＦＬＵＳＨ＿ＦＩＦＯ＿２に対応する事象に応答して特定の動作を実施し、たとえば、データプロセッサ４２または外部データプロセッサ４２に存在することができる第２のＦＩＦＯがフラッシュされて、プログラムフローはブロック７０１に戻る。
【００２８】
図８は、実行されているプログラムコードの特定のシーケンス８０１と、ウォッチポイント・トリガ・イネーブル・レジスタ８３１と、ウォッチポイントレジスタ８３２とを含む、システム１０の一部のブロック図を示す。プログラムコードのシーケンス８０１は、ＬＯＯＰ＿１とラベリングされるループを含むコード部８１０を含み、このループは、ループの終わりを定義する繰り返し命令に応答して次々と高速に繰り返し実行されることができる。コード部８１０に存在する、ＳＵＢ＿８１１とラベリングされるサブルーチンが、ＬＯＯＰ＿１が実行されるたびに実行される。
【００２９】
ウォッチポイント・トリガ・イネーブル・レジスタ８３１およびウォッチポイントレジスタ８３２は、ＳＵＢ＿８１１を実行するときにプログラム・トレース・メッセージングおよびデータ・トレース・メッセージングを実行するように構成されており、これはアドレスＡＤＤＲ＿３に於いて開始し、アドレスロケーションＡＤＤＲ＿４において終了する。具体的には、プログラム・トレース・イネーブル・ウォッチポイントは、レジスタ８３１のフィールドロケーションＰＧＭ＿Ｔ＿ＥＮを、ウォッチポイントレジスタ８３２のウォッチポイントＷＰ＿１に対応する値にアサートすることによってイネーブルされている。ウォッチポイントＷＰ＿１は、サブルーチンＳＵＢ＿８１１の第１の命令のロケーションである、ＡＤＤＲ＿３の値をプログラムされているため、プログラム・トレース・メッセージングは、サブルーチンＳＵＢ＿８１１の実行が開始すると開始することになる。同様に、データ・トレース・メッセージングは、レジスタ８３１のフィールドロケーションＤＡＴＡ＿Ｔ＿ＥＮが同じくウォッチポイントＷＰ＿１に対応する値にアサートされていることによって、サブルーチンＳＵＢ＿８１１の実行が開始するとイネーブルされる。プログラムおよびデータ・トレース・メッセージングは、サブルーチンＳＵＢ＿８１１の最後の命令（ＡＤＤＲ＿４）に対応するアドレス値ＡＤＤＲ＿４を記憶する、レジスタ８３１のフィールドロケーションＰＧＭ＿Ｔ＿ＥＮＢおよびＤＡＴＡ＿Ｔ＿ＥＮＢがウォッチポイントＷＰ＿２に対応する値にアサートされていることによって、サブルーチンＳＵＢ＿８１１が終了するとディセーブルされる。
【００３０】
サブルーチンＳＵＢ＿８１１を実行するときにデータおよびトレースメッセージングをイネーブルすることによって、他にウォッチポイントがイネーブルされていないと仮定すると、サブルーチンＳＵＢ＿８１１が呼び出されるたびにプログラムおよびトレース情報がデバッグモジュールのトレースＦＩＦＯに記憶されることになる。しかしながら、サブルーチンＳＵＢ＿８１１に関連付けられるコードのような、非決定論的で多くの回数実行された後に失敗するプログラムコードについて、コードが過度に多くの回数実行されることに起因して、そのような高い割合でＦＩＦＯはオーバーする可能性が非常に高いため、トレース情報が外部デバッグツールに通信できるより速くトレースＦＩＦＯに記憶され、シリコン欠陥の周囲のデータをキャプチャすることは非常に困難である。この問題に対処するためにＦＬＵＳＨ＿ＦＩＦＯウォッチポイントが使用されることができる。具体的には、図８は、レジスタ８３１のフィールドロケーションＦＬＵＳＨ＿ＦＩＦＯを、ウォッチポイントＷＰ＿０に対応する値にアサートすることによって、ＦＩＦＯフラッシュウォッチポイントがイネーブルされていることを示す。ウォッチポイントＷＰ＿０は、サブルーチンＳＵＢ＿８１１の戻りコマンドのロケーションである、ＡＤＤＲ＿４の値をプログラムされているため、トレースＦＩＦＯはサブルーチンから戻るとフラッシュされることになる。代替的には、サブルーチンＳＵＢ＿８０１を呼び出す直前のアドレスが、ＦＩＦＯをクリアするのに使用されることができる。トレースＦＩＦＯをこのようにクリアすることによって、サブルーチンＳＵＢ＿８１１が実行されるたびにトレースメッセージを記憶するのに利用可能な記憶スペースがあることが保証されることができることが諒解されよう。
【００３１】
本開示は特定の実施形態に関連して説明されてきたが、本開示を見直すことによって多くの他の実施形態が当業者には明らかであり得ることが諒解されよう。
【００３２】
第１の態様において、方法は、集積回路のトレース動作モードをイネーブルすることと、トレース動作モードがイネーブルされるのに応答して集積回路のメモリにトレース情報を記憶することと、トレース動作モード中に第１のタイプのウォッチポイントの発生が検出されるのに応答して、メモリからトレース情報をフラッシュすることであって、当該メモリをフラッシュすることはトレース動作モードを変更しない、フラッシュすることとを含むことができる。
【００３３】
第１の態様の一実施形態では、メモリは先入れ先出しメモリである。別の態様では、方法は、集積回路において、メモリをフラッシュしたことを示すトレースメッセージを生成することを含み、トレースメッセージは集積回路の外部インターフェースに提供されることになる。さらに別の態様では、方法は、ウォッチポイントの発生を示すトレースメッセージを生成することを含み、トレースメッセージは集積回路の外部インターフェースに提供されることになる。
【００３４】
第１の態様の特定の実施形態では、メモリが一杯であることに応答して、トレース動作モードの間、新たなトレース情報はメモリに記憶されない。より特定的な実施形態では、方法は、第２のタイプのウォッチポイントの発生を検出するのに応答して、トレースモードをイネーブルすることを含む。また別の特定の実施形態では、方法は、集積回路の外部インターフェースにおいてコマンドを受信することと、コマンドの実行に応答してトレースモードをイネーブルすることとを含む。さらにより特定的な実施形態では、ウォッチポイントの発生を検出するのに応答してメモリからトレース情報をフラッシュすることは、メモリフラッシュ指示子をアサートすることを含む。さらなる実施形態では、ウォッチポイントの発生は、アクセス対象のアドレスがウォッチポイントに一致するのに応答して検出される。
【００３５】
第２の態様において、デバイスは、出力を備えるトレースモジュールであって、当該トレースモジュールは出力においてデータプロセッサのトレース情報を提供する、トレースモジュールと、出力を備えるウォッチポイントモジュールであって、当該ウォッチポイントモジュールは、ウォッチポイント事象の発生を検出するのに応答して、出力においてフラッシュ指示子を提供する、ウォッチポイントモジュールと、トレースモジュールの出力およびウォッチポイントモジュールの出力に結合されるメモリモジュールであって、当該メモリモジュールは、フラッシュ指示子に応答してメモリモジュールに記憶されている、バッファリングされたトレース情報をフラッシュする、メモリモジュールとを含むことができる。
【００３６】
第１の態様の一実施形態では、メモリは先入れ先出しメモリである。別の態様では、トレースモジュールはウォッチポイントモジュールに結合され、フラッシュ指示子が提供されていることを示すトレースメッセージを生成するものである。また別の実施形態では、フラッシュ指示子が提供されていることを示すトレースメッセージは、バッファリングされたトレース情報がフラッシュされた後にメモリモジュールに記憶されることになる。さらに別の実施形態では、メモリモジュールは、メモリが一杯になっていることに応答して新たなトレース情報を記憶することにならない。
【００３７】
第２の態様のさらなる実施形態では、ウォッチポイント事象は第１のタイプの第１のウォッチポイント事象であり、ウォッチポイントモジュールは、第２のタイプの第２のウォッチポイント事象の発生を検出するのに応答して、出力においてトレースイネーブル指示子を提供し、トレースモジュールは、トレースイネーブル指示子に応答してトレース情報を提供するようにイネーブルされる。またさらなる実施形態では、デバイスは、ウォッチポイントモジュールに接続されるアドレスバスを含み、ウォッチポイントモジュールは、ウォッチポイント事象の発生を判定するためにアドレスバスにおける値をウォッチポイント値とマッチングする。
【００３８】
第３の態様において、方法は、トレースＦＩＦＯ制御ウォッチポイント事象の検出をイネーブルすることであって、トレースＦＩＦＯ制御ウォッチポイントは、データプロセッサの動作のトレース情報を記憶するＦＩＦＯ（先入れ先出し）メモリの動作を変更する、イネーブルすることと、トレースＦＩＦＯ制御ウォッチポイントの発生を検出するのに応答して、ＦＩＦＯの動作状態を、第１の動作状態から第２の動作状態へ変更することであって、ＦＩＦＯは第１の動作状態と第２の動作状態の両方の間にトレース情報を記憶するようにイネーブルされる、変更することとを含むことができる。
【００３９】
第３の態様の一実施形態では、第２の動作状態は、ＦＩＦＯに記憶されたトレース情報がフラッシュされているという点で第１の動作状態とは異なる。別の実施形態では、方法は、ＦＩＦＯの動作状態の変更を示すトレース情報を生成することを含む。また別の実施形態では、トレース情報はＦＩＦＯに記憶される。
【００４０】
加えて、他の実施形態が使用されてもよく、または本開示から導出されてもよく、それによって、本開示の範囲から逸脱することなく構造的置換、論理的置換、または別の変更が行われてもよい。本明細書において特定の実施形態が示され説明されたが、同じまたは類所の目的を達成するように設計される任意の後続の構成が示されている特定の実施形態と置き換わってもよいことを諒解されたい。本開示は、様々な実施形態のあらゆる後続の適合または変形をカバーするように意図される。上記の実施形態の組み合わせ、および本明細書に具体的に記載されていない他の実施形態が、本明細書を見直すことによって当業者には明らかになろう。特定の特徴は、明瞭にするために、別個の実施形態の文脈において説明されているが、単一の実施形態内に組み合わせて提供されてもよいことを諒解されたい。逆に、簡潔にするために、単一の実施形態の文脈において説明されている様々な特徴は、別個にまたは任意の小結合において提供されてもよい。さらに、範囲において記載されている値への言及は、その範囲内のあらゆる値を含む。
【００４１】
なお、一般的な説明または例において上述されている活動のすべてが必要であるとは限らず、特定の活動の一部は必要とされない場合があり、記載されているものに加えて、１つまたは複数のさらなる活動が実行されてもよい。またさらに、活動がリストされている順序は、必ずしもそれらが実行される順序であるとは限らない。
【００４２】
利益、他の利点、および問題に対する解決策が具体的な実施形態に関連して上記で説明された。しかしながら、利益、利点、問題に対する解決策、および、任意の利益、利点、または解決策を発生させまたはより明白にする任意の特徴（複数の場合もあり）は、特許請求項のいずれかまたはすべての決定的な、必要とされる、または必須の特徴であると解釈されるべきではない。
【００４３】
上記で開示された主題は限定ではなく例示とみなされるべきであり、添付の特許請求の範囲は、本発明の範囲内に入るあらゆるこのような変更、増強、および他の実施形態をカバーするように意図される。したがって、法によって許容される最大の範囲に対して、本発明の範囲は、添付の特許請求の範囲およびそれらの均等物の最も広い許容される解釈によって決定されるべきであり、上記の詳細な説明によって制限または限定されるべきではない。
【図１】
2014049131.tif 000003
【図２】
2014049131.tif 000004
【図３】
2014049131.tif 000005
【図４】
2014049131.tif 000006
【図５】
2014049131.tif 000007
【図６】
2014049131.tif 000008
【図７】
2014049131.tif 000009
【図８】
2014049131.tif 000010