(57)【要約】データ処理システム（１０）及び方法は、外部デバッグツールをリアルタイムトレース機能を有するように許可することによってデバッグメッセージを生成する。データプロセッサ（２０、２２、２４）は複数のデータ命令を実行し、情報記憶のためにメモリ（３０）を使用する。デバッグ回路２６はアドレス変換トレースメッセージを含むデバッグメッセージを生成する。仮想形態及び物理形態との間にアドレスを変換するようにアドレス変換を実行するために、メモリ管理ユニット（１６）はアドレス変換論理（２０５）を有する。デバッグ回路（２６）は、１つ以上のアドレス変換マッピングは変更される時に通信を受信するためにメモリ管理ユニット（１６）に接続されるメッセージ生成回路（６４）を含む。メッセージ生成回路（６４）は、アドレスマッピングの変更を検出したことに応答してアドレス変換トレースメッセージを生成し、デバッグ回路（２６）の外部にアドレス変換トレースメッセージを与える。
2012518234.tif 000002
【特許請求の範囲】
【請求項１】
デバッグメッセージを生成するデータ処理システムにおいて、
複数のデータ処理命令を実行するためのデータプロセッサと、
データプロセッサに接続されており、情報を格納し、データプロセッサに該情報を与えるためのメモリと、
データプロセッサに接続されており、アドレス変換トレースメッセージを含むデバッグメッセージを生成するためのデバッグ回路と、
デバッグ回路及びデータプロセッサに接続されているメモリ管理ユニットであって、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのアドレス変換論理を備えるメモリ管理ユニットと、を備え、
デバッグ回路は、メモリ管理ユニットに接続されており１つ以上のアドレス変換マッピングが変更されるときに通知を受信するためのメッセージ生成回路を備え、メッセージ生成回路は、アドレス変換マッピングの変換の検出に応答してアドレス変換トレースメッセージを生成するとともに、アドレス変換トレースメッセージをデバッグ回路の外部に提供する、データ処理システム。
【請求項２】
アドレス変換マッピングが更新される毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、請求項１に記載のデータ処理システム。
【請求項３】
メッセージ生成回路は、
アドレス変換トレースメッセージの１つ以上のフィールドを選択的に除去するための圧縮論理をさらに備える、請求項２に記載のデータ処理システム。
【請求項４】
圧縮論理によって除去されるアドレス変換トレースメッセージの前記１つ以上のフィールドの各々は、そのフィールドについての所定の優勢値を含む、請求項３に記載のデータ処理システム。
【請求項５】
前記所定の優勢値はデータ処理システムのユーザによってアクセス可能な記憶域に格納されており、データ処理システムのユーザによって制御される、請求項４に記載のデータ処理システム。
【請求項６】
除去される前記１つ以上のフィールドは、アドレス変換サイズフィールドであるか、プロセス識別子およびアドレス空間の一方を識別するためのアドレス変換識別フィールドである、請求項３に記載のデータ処理システム。
【請求項７】
前記１つ以上のアドレス変換マッピングは、ＴＬＢ（トランスレーション・ルックアサイド・バッファ）に格納される、請求項１に記載のデータ処理システム。
【請求項８】
ＴＬＢがＴＬＢエントリの書込を行うかエントリを無効とする毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、請求項７に記載のデータ処理システム。
【請求項９】
デバッグ回路に接続されているデバッグ端子と、
デバッグ端子に接続されており、デバッグ回路からアドレス変換トレースメッセージを受信するためのデバッガと、をさらに備える、請求項１に記載のデータ処理システム。
【請求項１０】
デバッグメッセージを生成するための方法において、
データプロセッサを用いて複数のデータ処理命令を実行する工程と、
アドレス変換トレースメッセージを含むデバッグメッセージを生成するためのデバッグ回路をデータプロセッサに接続する工程と、
デバッグ回路及びデータプロセッサにメモリ管理ユニットを接続する工程であって、メモリ管理ユニットは、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのＴＬＢ（トランスレーション・ルックアサイド・バッファ）を備える前記工程と、
ＴＬＢエントリが変更されるときを検出する工程と、
ＴＬＢエントリの変更の検出に応答して、アドレス変換トレースメッセージを生成する工程と、
デバッグ端子にアドレス変換トレースメッセージを提供する工程と、を備える方法。
【請求項１１】
ＴＬＢがＴＬＢエントリの書込みを行うかエントリを無効とする毎に、メモリ管理ユニットからメッセージ生成回路にインジケータ信号を送信する工程をさらに備える、請求項１０に記載の方法。
【請求項１２】
アドレス変換トレースメッセージの１つ以上のフィールドを除去することによってアドレス変換トレースメッセージの長さを圧縮する工程をさらに含む、請求項１１に記載の方法。
【請求項１３】
除去される前記１つ以上のフィールドをアドレス変換サイズフィールドか、プロセス識別子またはアドレス空間を識別するためのアドレス変換識別フィールドに関連付ける工程をさらに含む、請求項１２に記載の方法。
【請求項１４】
アドレス変換トレースメッセージの前記１つ以上のフィールドの各々に所定の優勢値を関連付ける工程と、
前記１つ以上のフィールドについて所定の優勢値が存在する場合にのみ、同１つ以上のフィールドを除去する工程と、をさらに含む、請求項１２に記載の方法。
【請求項１５】
データ処理システムのユーザによって前記所定の優勢値を制御する工程と、
ユーザによるアクセスの可能な複数のレジスタのうちの１つ以上に前記所定の優勢値を格納するステップと、をさらに含む、請求項１４に記載の方法。
【請求項１６】
データ処理システムにおいて、
データ処理システムを制御するためのグローバル制御回路と、
グローバル制御回路に接続されているデータプロセッサであって、命令デコーダに接続されている命令フェッチユニットを備え、命令デコーダは１つ以上の実行ユニットに接続されており複数のデータ処理命令を実行するための命令デコーダである、データプロセッサと、
グローバル制御回路及びデータプロセッサに接続されているメモリ管理ユニットであって、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのアドレス変換論理を備えるメモリ管理ユニットと、
メモリ管理ユニットをグローバル相互接続部とのインタフェースを行うためのバスインタフェースユニットと、
グローバル相互接続部に接続されており、情報を格納し、データプロセッサとの間で情報の提供を行うためのメモリと、
グローバル制御回路及びメモリ管理ユニットに接続されているデバッグ回路であって、アドレス変換トレースメッセージを含むデバッグメッセージを生成するデバッグ回路と、を備え、
デバッグ回路は、メモリ管理ユニットに接続されており１つ以上のアドレス変換マッピングが変更されるときに通知を受信するためのメッセージ生成回路を備え、メッセージ生成回路は、アドレス変換マッピングの変換の検出に応答してアドレス変換トレースメッセージを生成するとともに、アドレス変換トレースメッセージをデバッグ回路の外部に提供する、データ処理システム。
【請求項１７】
メッセージ生成回路は、
アドレス変換トレースメッセージの１つ以上のフィールドを選択的に除去するための圧縮論理をさらに備える、請求項１６に記載のデータ処理システム。
【請求項１８】
圧縮論理によって除去されるアドレス変換トレースメッセージの前記１つ以上のフィールドの各々は、そのフィールドについての所定の優勢値を含む、請求項１７に記載のデータ処理システム。
【請求項１９】
前記所定の優勢値はデータ処理システムのユーザによってアクセス可能な記憶域に格納されており、データ処理システムのユーザによって制御される、請求項１８に記載のデータ処理システム。
【請求項２０】
１つ以上のアドレス変換マッピングはＴＬＢ（トランスレーション・ルックアサド・バッファ）に格納され、ＴＬＢがＴＬＢエントリの書込を行うかエントリを無効とする毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、請求項１６に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に半導体に関し、より詳細には、アドレス変換を実行し、アドレス変換トレースメッセージを生成するデータ処理システムに関する。
【背景技術】
【０００２】
ＩＥＥＥ  ＩＳＴＯ５００１またはＮＥＸＵＳデバッグ標準として知られるＩＥＥＥ標準は、リアルタイムデバッグメッセージ生成をサポートする確立されたリアルタイムデバッグ標準である。ＮＥＸＵＳデバッグ標準によって、外部トレース再構築ツールに対するシステム内の所定動作条件を識別するための機構が指定される。デバッグ処理は、データ処理システム用のコード開発にも用いられる。デバッグ情報を実時間で提供することは、データ処理システムの正常な動作に介入しない場合、システムの透明性の動作を維持するには非常に望ましい。
【０００３】
データ処理システムによって生成されるデバッグメッセージには、プログラムイベント（プログラムトレースメッセージ）またはデータイベント（データ読取メッセージ、データ書込メッセージ）用のアドレス情報及びデータ情報や、他のデバッグ情報が含まれる。アドレス情報には、通常、物理アドレスとして知られる物理メモリ域（ロケーション）を識別するために変換される必要があるフォーマットである、仮想アドレス情報が含まれる。実際のプログラムのフロー及びシステムデータ変数の動的な値を監視できるように、実行中のプログラムにアドレスを関連付けることは、デバッグ処理の重要部分である。仮想アドレスから物理アドレスへのマッピングまたは変換が実行される必要がある。しかしながら、外部デバッガは、通常、特に、要求ページングまたは他の再マッピング動作のためにマッピングが動的に変更される場合には、デバッグメッセージのアドレス部分を速やかに変換するために必要な仮想アドレスから物理アドレスへのマッピングの情報を有していない。仮想アドレスの使用によって、デバッグユーザが単純な方法によって、ソフトウェアアプリケーションのテキストおよびデータ部分に対して仮想アドレスを用いるコンパイル及びリンク機能によって取得されるプログラムリストを介してコンピュータプログラムをトレースすることが可能となる。ユーザは、通常、どのようにしてオペレーティングシステム（ＯＳ）によって仮想アドレスが物理アドレスに変換されるのかについての知識を有していない。従って、仮想アドレスを指示するにはトレースが必要である。残念ながら、プリコンパイルされランタイムにおいて実行されるソフトウェアモジュールのプログラムリストなど、一定のプログラムリストは利用可能でない。このようなモジュールの例はＯＳコール及びライブラリ関数である。そうした一例では、プログラムリストは利用不可能である。従って、実行プログラムのそれらの部分を適切にトレース及び解釈するのは非常に困難である。仮想アドレスから物理アドレスへの正しい変換には、プログラムカウンタがどこにあるのかを把握することと、物理メモリを調べてアドレスがどこであるのかを決定することとが必要である。複数のプログラムを実行するシステムでは、メモリマッピングが動的に変化し、メモリページ間の遷移が容易に行われる。こうした状況では、デバッグメッセージの生成及び解釈がリアルタイムで実行されることがアドレス変換によって実質的に妨げられる。
【図面の簡単な説明】
【０００４】
【図１】本発明の一実施形態によるデバッグメッセージ生成を含むデータ処理システムのブロック図。
【図２】図１のアドレス変換論理の一実施形態のブロック図。
【図３】図１のデバッグ回路の一実施形態のブロック図。
【図４】図２の例示的なＭＭＵ更新レジスタの図。
【図５】従来技術による例示的なトランスレーション・ルックアサイド・バッファ（ＴＬＢ）書込エントリ命令の図。
【図６】従来技術による例示的なＴＬＢ無効化アドレス命令の図。
【図７】従来技術による従来モードにおける例示的なプログラムトレースメッセージの図。
【図８】従来技術による履歴モードにおける例示的なプログラムトレースメッセージの図。
【図９】従来技術による例示的なデータトレースメッセージの図。
【図１０】本発明の一実施形態によるフィールド圧縮した例示的なアドレス変換トレースメッセージの図。
【図１１】本発明の一実施形態による例示的なアドレス変換トレースメッセージの図。
【図１２】従来技術によるメッセージ生成とともに使用可能なアドレス圧縮の一例を示す図。
【図１３】本発明の一実施形態による例示的なアドレス変換トレースメッセージの図。
【図１４】本発明の一実施形態による履歴区切を含む例示的なアドレス変換トレースメッセージの図。
【図１５】本発明の一実施形態による履歴区切を含む例示的なプログラム関連付けトレースメッセージの図。
【発明を実施するための形態】
【０００５】
多くのデータ処理システムでは、通常、仮想アドレスを物理アドレスにマッピングするアドレス変換論理（ＴＬＢ（トランスレーション・ルックアサイド・バッファ）など）が用いられる。アドレス変換論理内のエントリ（ＴＬＢエントリなど）は、プロセッサ命令の使用によって、またはデータ処理システム内のハードウェアによって、変更または無効化されることができる。係るハードウェアは、ハードウェアによる「テーブルウォーキング」または同様なタイプのハードウェア検索を実行することによってなど、ソフトウェアの実行に必要とされるアドレス変換テーブル検索およびＴＬＢ更新を実行することによってアドレス変換を動的に維持する。本発明の一態様では、アドレス変換トレースメッセージなどのデバッグメッセージは、アドレス変換論理内におけるエントリの変更または無効化に応答して生成される。これらのアドレス変換トレースメッセージは、次いで、デバッグ性能の向上のために、外部の開発システムに対し提供される。さらにまた、仮想アドレスのマッピングが変化する場合、分岐履歴情報及びシーケンスカウント情報に関してさらに正確な情報を提供するために、プログラム関連付けメッセージが適切なタイミングで生成されてもよい。また、本発明の別の態様では、可能なときに、デバッグメッセージの１つ以上のフィールドを圧縮することによって、デバッグメッセージをフィールド圧縮することによって、または複数のメッセージ（プログラム関連付けメッセージなど）をマージすることによって、効率がさらに向上する場合がある。
【０００６】
図１に示すのは、デバッグメッセージを生成するデータ処理システム１０である。データ処理システム１０内にはグローバル相互接続部１２が存在する。グローバル相互接続部１２の一実施形態はシステムバスである。他の形態の相互接続部も使用可能であり、例えば、クロスバー、ポイントツーポイント接続、ならびに光及び無線伝送技術が含まれる。バスインタフェースユニット（ＢＩＵ）１４は双方向カップリングを介してグローバル相互接続部１２に接続される。一実施形態において、この双方向カップリングは双方向の複数の導体バスであり、本明細書では、導体を横切るスラッシュで複数の導体バスを表す。ＢＩＵ１４は、メモリ管理ユニット（ＭＭＵ）１６に双方向接続される。ＭＭＵ１６は、双方向の複数の導体バスを介してグローバル制御回路１８の第１入力／出力端子に接続される。グローバル制御回路１８の第２入力／出力端子は、双方向の複数の導体バスを介して命令フェッチユニット２０の第１入力／出力端子に接続される。命令フェッチユニット２０は、複数の導体バスを介して命令デコーダ２２の入力に接続される出力を有する。命令デコーダ２２の出力は、実行ユニット２４の入力に接続される。一実施形態において、実行ユニット２４は、少なくとも１つの計算論理ユニット、少なくとも１つの浮動小数点ユニット、及び少なくとも１つの乗算器回路を備える。実行ユニット２４内にはレジスタファイル２５が存在する。命令デコーダ２２の入力／出力端子は、グローバル制御回路１８の第３入力／出力端子に接続される。実行ユニット２４の第１入力／出力端子は、グローバル制御回路１８の第４入力／出力端子に接続される。また、実行ユニット２４及び命令フェッチユニット２０は、ＭＭＵ１６にも双方向接続される。デバッグ回路２６は、グローバル制御回路１８の第５入力／出力端子に接続される入力／出力端子を有する。ロード／ストア・ユニット２８は、グローバル制御回路１８の第６入力／出力端子に双方向接続される第１入力／出力端子を有する。ロード／ストア・ユニット２８は、ＢＩＵ１４の第１入力／出力端子に接続される第２入力／出力端子を有する。ロード／ストア・ユニット２８は、実行ユニット２４の第２入力／出力端子に接続される第３入力／出力端子を有する。ＢＩＵ１４の第２入力／出力端子は、グローバル制御回路１８の第７入力／出力端子に接続される。ロード／ストア・ユニット２８の出力は、データの仮想アドレスを提供し、ＭＭＵ１６の第１入力及びデバッグ回路２６の第１入力に接続される。命令フェッチユニット２０の出力は、命令の仮想アドレスを提供し、ＭＭＵ１６の第２入力及びデバッグ回路２６の第２入力に接続される。ＭＭＵ１６の第１出力は、データの物理アドレスを与え、ＢＩＵ１４の第１入力及びデバッグ回路２６の第３入力に接続される。ＭＭＵ１６の第２出力は、命令の物理アドレスを与え、ＢＩＵ１４の第２入力及びデバッグ回路２６の第４入力に接続される。
【０００７】
メモリ３０は、双方向カップリングを介してグローバル相互接続部１２に接続される。デバッグ回路２６は、複数の双方向の複数の導体を介して複数のデバッグ端子４０に接続される第２入力／出力端子を有する。この複数のデバッグ端子４０は、デバッガまたは外部デバッガとして一般に参照される外部の開発システム３６に接続される。示した実施形態では、ＢＩＵ１４、ＭＭＵ１６、グローバル制御回路１８、命令フェッチユニット２０、命令デコーダ２２、レジスタファイル２５を備える実行ユニット２４、デバッグ回路２６、ならびにロード／ストア・ユニット２８は、図１の破線群によって示すように、集合的にデータプロセッサ４２を形成する。グローバル制御回路１８は図１では分離した位置に示しているが、グローバル制御回路１８の回路及び機能制御が分散して実装されてもよいこと、データ処理システム１０の様々な他のシステムブロック内に含まれてもよいことが理解される。また、示した実施形態では、グローバル制御回路１８は、現在実行中の処理についてのプロセス識別子（ＰＩＤ）を格納するプロセス識別子（ＰＩＤ）レジスタ１９を備える。また、グローバル制御１８はＭＭＵ１６にＰＩＤを提供する。
【０００８】
動作中、データ処理システム１０は、グローバル相互接続部１２を介してデバイス（図示せず）と通信する。データプロセッサ４２との間で通信される情報は、ＢＩＵ１４を介して転送される。命令フェッチユニット２０は、グローバル制御回路１８の制御の下、ＢＩＵ１４からデータプロセッサ命令（すなわち、プロセッサ命令）を読み出す。読み出された命令は、グローバル制御回路１８の制御の下でデコードを行うために、命令デコーダ２２に対し連続的に通信される。実行ユニット２４は命令を実行してデータを生成する。このデータは、キャッシュ（図示せず）に格納されるか、またはグローバル制御回路１８、ＢＩＵ１４、およびグローバル相互接続部１２を通じるカップリングを介して、メモリ３０に配置される。データプロセッサ４２及びデータ処理システム１０の動作のデバッグは、外部の開発システム３６による解析用にデバッグメッセージを生成するデバッグ回路２６を使用することによって実行される。外部の開発システム３６からなどの起動に応答して、テストまたはデバッグモードの動作に入る。示した実施形態において、デバッグ回路２６はデータアドレス及び命令アドレスを受信するように構成されており、それらのアドレスは仮想アドレスであっても物理アドレスであってもよい。データアドレスはデータが存在するアドレスであり、命令アドレスは命令が存在するアドレスである。命令仮想アドレスは、命令フェッチユニット２０からデバッグ回路２６及びＭＭＵ１６へ提供される。仮想アドレスは変換されていないアドレスであり、情報が存在する物理記憶域の変換されたアドレスを取得するために、何らかのさらなる処理または変換が必要である。この変換されたアドレスは物理アドレスと呼ばれる。ＭＭＵ１６は、ＢＩＵ１４及びデバッグ回路２６に命令物理アドレスを提供する。一実施形態では、仮想すなわち変換されていないアドレスは、論理アドレスである。別の実施形態では、変換されていないアドレスは有効アドレスである。有効アドレスは、物理アドレスへ変換される前に、まず仮想アドレスに変換される必要がある。ロード／ストア・ユニット２８は、デバッグ回路２６及びＭＭＵ１６にデータ仮想アドレスを提供する。ＭＭＵ１６は、ＢＩＵ１４及びデバッグ回路２６にデータ物理アドレスを提供する。
【０００９】
デバッグ回路２６は、以下でより詳細に説明するように、次いで、受信したアドレスのうちの１つ以上の少なくとも一部を用いて、外部の開発システム用のデバッグメッセージを形成する。デバッグメッセージのフォーマットは異なる場合があり、例について図７、８、９、１０、１１、１３、１４、および１５に関連して以下に説明する。
【００１０】
図２に示すのは、図１のＭＭＵ１６の一部の例示的な実施形態である。ＭＭＵ１６は、制御回路２０３、ＭＭＵ更新レジスタ２０４、およびアドレス変換論理２０５を備える。一実施形態において、アドレス変換論理２０５は、０〜Ｎの番号を付けられたＮ＋１個のエントリを有するトランスレーション・ルックアサイド・バッファ（ＴＬＢ）として実装され、各エントリは、仮想アドレス２０９、対応する物理アドレス２１１、対応する変換サイズ（ＴＳＩＺ）２１０、対応する変換ＩＤ（ＴＩＤ）２１２、対応する属性２１３、対応する有効（ｖａｌｉｄ）フィールド２１５を含む。代替の実施形態では、アドレス変換論理２０５は、異なるように実装されてよい。制御回路２０３はＭＭＵ更新レジスタ２０４に双方向接続され、デバッグ回路２６及びアドレス変換論理２０５へ変更インジケータ及びアドレス変換情報を提供する。また、制御回路２０３は、グローバル制御回路１８にも双方向接続されており、グローバル制御回路１８からＰＩＤを受信する。ＭＭＵ更新レジスタ２０４は１つ以上のレジスタを備えてもよく、実行ユニット２４と双方向接続される。
【００１１】
動作中、エントリ０〜Ｎは、仮想アドレスを物理アドレスに変換するために用いられるアドレスマッピング情報を格納する。例えば、命令またはデータ仮想アドレスはＭＭＵ１６に対し提供され（命令フェッチユニット２０またはロード／ストア・ユニット２８からなど）、アドレス変換論理２０５に格納されている仮想アドレス２０９と比較される。マッチするエントリ（マッチングエントリ）が見出される場合（有効フィールド２１５によって示されるように、マッチングエントリは有効エントリでもある）、対応する物理アドレス２１１はデバッグ回路２６及びＢＩＵ１４に対する命令またはデータ物理アドレスとして提供される。マッチングエントリの対応ＴＳＩＺ２１０は、変換されるアドレスに対応するページサイズを提供し、マッチングエントリの対応ＴＩＤ２１２はアドレス空間識別子を提供する。ＴＩＤフィールドがゼロのとき、マッチングエントリはグローバルであるため、全ての処理に対しそのエントリが適用される。しかしながら、ＴＩＤ２１２がゼロでない場合には、受信される仮想アドレス及び受信されるＰＩＤの両方がアドレス変換論理２０５における有効エントリの仮想アドレス２０９及びＴＩＤ２１２にそれぞれマッチするときのみ、マッチングエントリが決定される。また、ＭＭＵ更新レジスタ２０４の使用を通じて、制御回路２０３は、プロセッサ４２によって実行されるプロセッサ命令に応答して、アドレス変換論理２０５内のエントリを更新または変更することが可能である。これについて図４に関連して以下により詳細に説明する。制御２０３がアドレス変換論理２０５内のエントリを変更または更新するとき、変更インジケータがアドレス変換論理２０５やデバッグ回路２６に提供される。
【００１２】
図３に示すのは、図１のデバッグ回路２６の一部の例示的な一実施形態である。デバッグ回路２６は、デバッグ制御回路６０、メッセージ生成論理６４、および入力／出力（Ｉ／Ｏ）論理６６を備える。メッセージ生成論理６４は圧縮論理６８を備え、ＭＭＵ１６内の制御回路２０３から変更インジケータ及びアドレス変換情報を受信するように接続される。デバッグ制御回路６０は、メッセージ先入れ先出し記憶回路（ＦＩＦＯ）７０を備え、メッセージ生成論理６４及びＩ／Ｏ論理６６に双方向接続される。また、デバッグ制御回路６０はグローバル制御回路１８から情報を受信する。Ｉ／Ｏ論理６６は、デバッグ端子４０に双方向接続される。
【００１３】
動作中、メッセージ生成論理６４は、複数の所定のフォーマットのうちの選択される１つのフォーマットに準拠してデバッグメッセージを形成する機能を実装する論理回路である。メッセージ生成論理６４はデバッグメッセージを形成し、圧縮論理６８は、そのメッセージの一部または全部にメッセージ圧縮を実行することができ、それらのデバッグメッセージは、次いで、デバッグ制御回路６０に提供され、メッセージＦＩＦＯ７０に格納される。メッセージＦＩＦＯ７０から、デバッグメッセージは、Ｉ／Ｏ論理６６を介してデバッグ端子４０に導かれる。一実施形態において、アドレス変換論理２０５においてエントリが変更または更新される毎に、メッセージ生成論理６４はアドレス変換トレースメッセージを生成する。例えば、アドレス変換論理２０５におけるエントリが変更されていることをアドレス変換論理２０５及びメッセージ生成論理６４の両方に示す変更インジケータを制御回路２０３がアサートする毎に、メッセージ生成論理６４は、制御２０３から受信されるアドレス変換情報に基づいてアドレス変換トレースメッセージを生成する。なお、本明細書で使用される「エントリの変更」にはエントリの無効化も含まれる。これらのアドレス変換トレースメッセージのフォーマットについて、図１０、１１、１３、１４を参照して以下により詳しく説明する。
【００１４】
図４には、ＭＭＵ更新レジスタ２０４の一例を示す。示した実施形態において、ＭＭＵ更新レジスタ２０４は、４つのレジスタＭＡ０、ＭＡ１、ＭＡ２、ＭＡ３を備える。これらのレジスタは、アドレス変換論理２０５におけるエントリを更新するために用いられる。示した実施形態において、各レジスタは複数のフィールドを含む３２ビットレジスタである。ＭＡ１は、２ビットのＴＬＢＳＥＬフィールド及び６ビットのＥＳＥＬフィールドを含む。ＴＬＢＳＥＬフィールドは、ＴＬＢが更新されることを示す値を格納する。示した実施形態では、１つのＴＬＢ（アドレス変換論理２０５）のみを図に示しているが、ＴＬＢＳＥＬフィールドが存在しなくてもよい。しかしながら、代替の実施形態では、任意の数のＴＬＢが実装されてもよい。ＥＳＥＬフィールドは、ＴＬＢのエントリ数（例えば、アドレス変換論理２０５における０〜Ｎのエントリのうちの１つ）を示す値を格納する。ＭＡ１は、８ビットのＴＩＤフィールド及び５ビットのＴＳＩＺＥフィールドを含む。ＴＩＤフィールドは、変換識別子フィールドを示す値を格納し、ＴＳＩＺＥフィールドは、ページサイズを示す値を格納する。ＭＡ２は、仮想ページ番号を示す値を格納する２２ビットのフィールドＶＰＮフィールドを含む。また、ＭＡ２は、ＶＬＥ（ページは命令用の可変長符号化を用いる）、Ｗ（ページはライトスルー）、Ｉ（ページはキャッシュ禁止）、Ｍ（ページは「メモリの一貫性を必要とする」）、Ｇ（ページは保護されている）、Ｅ（ページはエンディアン）などの属性を格納する様々なフィールドも含む。ＭＡ３は、物理ページ数を示す値を格納するとともに複数の属性（例えば、Ｕ０−Ｕ３（ユーザ定義属性）、ＵＸ、ＳＸ、ＵＷ、ＳＷ、ＵＲ、およびＳＲ（ユーザ及びスーパバイザの、読取、書込、実行のパーミッション））を格納する２２ビットのフィールドＰＰＮフィールドを含む。なお、代替の実施形態では、ＭＭＵ更新レジスタ２０４は示したレジスタより多くのレジスタを含んでよく、それらのレジスタに格納される情報は、任意の数のレジスタを用いる様々な異なるフォーマットに編成されてよい。また、各フィールドは、必要に応じて適切な情報を格納するために、より多くのビットを有してもよく、より少ないビットを有してもよい。なお、ＴＩＤは、仮想アドレスが「ＶＰＮをＴＩＤに連結したもの」として計算されるような、仮想アドレスに対する拡張であると考えられる。従って、これらのレジスタは、プロセッサ４２による１つ以上のプロセッサ命令（専用のレジスタ命令に移動するなど）に応答して、グローバル制御回路１８によって更新されてよい。これらのレジスタに格納される情報は、次いで、プロセッサ４２によって実行されるプロセッサ命令に応答してアドレス変換論理２０５におけるエントリを更新するために用いられる。本発明の代替の実施形態では、アドレス変換論理２０５（例えば、ＴＬＢ）に対する更新は、ＴＬＢミスに応答する制御論理によって実行されてよい。この制御論理は、制御論理２０３の一部として実装されてもよく、ＭＭＵ１６内またはプロセッサ４２内のいずれかの場所に実装されてもよい。一実施形態において、ＴＬＢミスに自動的に応答するこの制御論理は、メモリ３０またはデータ処理システム１０内のいずれかの場所に格納される１つ以上の変換テーブルを検索することによってアドレス変換エントリ情報を取得し、続いてプロセッサ４２によって明示的に実行されるプロセッサ命令を使用することなく、アドレス変換テーブルから読み出される情報に基づいてアドレス変換論理２０５内でアドレス変換の変更を実行する。
【００１５】
例えば、図５には、ＴＬＢエントリ（すなわち、アドレス変換論理２０５内のエントリ）を更新するために使用できる現行のプロセッサ命令の一例である、ＴＬＢ書込エントリ（ＴＬＢＷＥ；ＴＬＢ  Ｗｒｉｔｅ  Ｅｎｔｒｙ）命令を示す。ＴＬＢＷＥ命令によって、ＭＭＵ更新レジスタ２０４内の一定のフィールドの内容が、アドレス変換論理２０５の１つのエントリに書き込まれる。この書き込まれるエントリ（ｔｌｂ＿ｅｎｔｒｙ＿ｉｄ）は、例えば、ＭＡ０のＴＬＢＳＥＬフィールド及びＥＳＥＬフィールドによって指定される。ＴＬＢＷＥ命令の実行時、この識別されるエントリは、ＭＡ１、ＭＡ２、ＭＡ３における適切な情報を用いて更新される。すなわち、ＭＡ１のＴＩＤフィールド及びＴＳＩＺＥフィールドにおける値は、アドレス変換論理２０５の識別されるエントリのＴＳＩＺＥフィールド２１０及びＴＩＤフィールド２１２に格納される。同様に、ＭＡ２におけるＶＰＮの値や、ＭＡ３のＰＰＮの値および属性は、識別されるエントリの、対応するフィールドの仮想アドレス２０９、物理アドレス２１１、および属性２１３に格納される。また、識別されるエントリの有効ビット２１５は、有効エントリを示すようにセットされる。
【００１６】
図６には、アドレス変換論理２０５のエントリを無効化するために用いられる現行のプロセッサ命令の別の例である、ＴＬＢ無効化エントリ（ＴＬＢ＿ＩＮＶ；ＴＬＢ  Ｉｎｖａｌｉｄａｔｅ  Ｅｎｔｒｙ）を示す。ＴＬＢ＿ＩＮＶ命令のフォーマットは、２つのソースレジスタＲＡ，ＲＢを指定し、これらのレジスタは、ＴＬＢ＿ＩＮＶ命令の実行時、ＲＡ＋ＲＢの有効アドレス（ＥＡ）を計算するために用いられる。すなわち、ＥＡは、ＲＡの中身とＲＢの中身との和に等しい。このＥＡアドレスは、次いで、アドレス変換論理２０５内においてマッチングエントリを見出すために用いられ、マッチングエントリが見出されると、そのマッチングエントリの有効ビット２１５が無効エントリを示すようにセットされる。ソースレジスタＲＡ，ＲＢは、２つの汎用レジスタ（例えば、プロセッサ４２のレジスタファイル２５内に配置される）であってよい。
【００１７】
本発明の一実施形態では、アドレス変換論理２０５のエントリが更新されるとき（ＴＬＢＷＥまたはＴＬＢ＿ＩＮＶ命令が実行されるときなど）、制御２０３は変更インジケータを介してデバッグ回路２６に通知を行い、これに応答して、デバッグ回路２６のメッセージ生成論理６４がアドレス変換トレースメッセージを生成する。このアドレス変換トレースメッセージは、（ＦＩＦＯ７０から、Ｉ／Ｏ論理６６を介して）デバッグ端子４０に提供され得る。このようにして、変更が発生するとアドレス変換情報が自動的に送信されるので、デバッガ２６がアドレス変換論理２０５からアドレス変換情報を明示的に要求する必要はない。ＴＬＢＷＥベースのアドレス変換トレースメッセージ及びＴＬＢ＿ＩＮＶベースのアドレス変換トレースメッセージの一例について、図１０、１１、１３を参照して記載する。また、ＴＬＢＷＥまたはＴＬＢ＿ＩＮＶ命令が実行されるとき、制御回路２０３は、上述のようにＭＭＵ更新レジスタ２０４に格納される情報を用いることによって、識別されるエントリまたはマッチングエントリを適切に更新するための適切な制御及び情報をアドレス変換論理２０５に提供する。従って、変更インジケータに加えて、制御回路２０３が変更インジケータと共に必要に応じて他の情報をアドレス変換論理２０５及びデバッグ回路２６に提供してよいことが留意される。代替の実施形態では、他の更新機構を用いてアドレス変換論理２０５内のエントリが変更されてもよく、それに応答して、制御回路２０３がデバッグ回路２６に対し、この変更や、この変更に関連してデバッグ回路２６がアドレス変換トレースメッセージを適切に生成することを可能とするために必要な情報を示すように、適切なシグナリングを行うことが可能である。
【００１８】
図７、８、９に示すのは、現行のデバッグ論理によって生成されるトレースメッセージである。図７に示すのは、従来モードにおけるプログラムトレース間接分岐メッセージ８０である。図８に示すのは、履歴モードにおけるプログラムトレース間接分岐メッセージ８１である。プログラムトレース間接分岐メッセージは、プロセッサ４２上で実行中の命令によって間接分岐が実行されるときに生成される。間接分岐は、その標的アドレスが分岐命令により直接提供されていない分岐であり、レジスタなど別のロケーションに格納されるか、そうでなければ動的に計算されるか決定される必要がある（サブルーチン呼出など）。直接分岐は、その標的アドレスが命令により直接提供されている分岐であり（特定のアドレス位置に対応するラベルによる、命令中のオフセット値によって提供されるなど）、したがって、通常、プログラム命令値の知識に基づきデバッガによって決定可能な静的な値である。図９に示すのは、データトレースメッセージ８２である。
【００１９】
図７を参照すると、トレースメッセージ８０は、４つの示したフィールドを有する。仮想アドレスフィールドは、トレースメッセージ８０の仮想アドレスを含む。シーケンスカウントフィールドは、最後のプログラムトレースメッセージ以来の実行された命令の数を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ８０に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コードフィールドは、トレースメッセージを、特定の所定のフィールドフォーマットを有するプログラムトレース間接分岐メッセージとして識別する値を含む。図７の例では、示した形態のプログラムトレースメッセージを表す値は「０００１００」であり、これは、このプログラムトレース間接分岐メッセージが従来分岐トレースモード動作を用いて生成されたことを示している。
【００２０】
図８を参照すると、トレースメッセージ８０は５つの示したフィールドを有する。仮想アドレスフィールドは、トレースメッセージ８１の仮想アドレスを含む。分岐履歴フィールドは、複数の１ビット値を含み、最後のプログラムトレースメッセージ以来の直接分岐毎に、直接分岐が行われたか否かを示すように、対応する１ビット値のセットまたはクリアが行われる。シーケンスカウントフィールドは、最後のプログラムトレースメッセージ以来の実行された命令の数を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ８０に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コードフィールドは、トレースメッセージを、特定の所定のフィールドフォーマットを有するプログラムトレース間接分岐メッセージとして識別する値を含む。図８の例では、示した形態のプログラムトレースメッセージを表す値は「０１１１００」であり、これは、このプログラムトレース間接分岐メッセージが履歴モード分岐トレース動作を用いて生成されたことを示している。
【００２１】
図９を参照すると、トレースメッセージ８２は５つの示したフィールドを有する。データ値フィールドは、トレースメッセージ８２に関連付けられている１つ以上のデータ値を含む。仮想アドレスフィールドは、トレースメッセージ８２の仮想アドレスを含む。データサイズフィールドは、１つのデータワードに含まれるデータの長さまたはビット数を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ８２に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コードフィールドは、トレースメッセージを、特定の所定のフィールドフォーマットを有するデータトレース間接分岐メッセージとして識別する値を含む。図９の例では、示した形態のデータ書込トレースメッセージを表す値は「０００１０１」である。示した形態のデータ読取トレースメッセージを表す値は「０００１１０」である。
【００２２】
図１０、１１には、本発明の実施形態によるアドレス変換トレースメッセージ８４，８６をそれぞれ示す。ＴＬＢＷＥ命令の実行に応答して、上述のように、デバッグメッセージ（アドレス変換メッセージ８４またはアドレス変換トレースメッセージ８６など）は、デバッガ２６によって生成されることができる。なお、従って、それらのアドレス変換メッセージは、ＴＬＢＷＥベースのアドレス変換トレースメッセージと呼ばれる場合がある。なお、アドレス変換トレースメッセージ８４は、ＴＬＢＷＥベースのアドレス変換トレースメッセージのフィールド圧縮されているバージョンであり、アドレス変換トレースメッセージ８６はフィールド圧縮されていないバージョンである。
【００２３】
まず図１１を参照すると、トレースメッセージ８６は８つの示したフィールドを有する。フィールドの配置は任意である。圧縮されている物理アドレスフィールドは、トレースメッセージ８６の物理アドレスを圧縮形態で含む。すなわち、このフィールドは、トレースメッセージの生成をトリガした（アドレス変換論理２０５の）ＴＬＢの変更されているエントリの物理ページ番号アドレスの圧縮バージョンを表す。圧縮されている仮想アドレスフィールドは、トレースメッセージ８６の仮想アドレスを圧縮形態で含む。すなわち、このフィールドは、変更されているエントリの仮想ページ番号アドレスの圧縮バージョンを表す。ＴＩＤフィールドは、変更されているエントリのＴＩＤ値を表す値を含む。ＴＳＩＺフィールドは、変更されているエントリのＴＳＩＺ値を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ８６に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コード（ＴＣＯＤＥ）フィールドは、トレースメッセージ８４を特定の所定のフィールドフォーマットを有するアドレス変換トレースメッセージとして識別する値を含む。図１０の例では、アドレス変換トレースメッセージを表す値は「１００００１」である。イベントコード（ＥＣＯＤＥ）フィールドは、所定のフィールドフォーマットをさらに識別する値を含む。すなわち、該フィールドは、様々なタイプのアドレス変換トレースメッセージの間でさらに識別を行うために用いられる。図１１の例では、示した形態の非フィールド圧縮ＴＬＢＷＥベースのアドレス変換トレースメッセージを表す値は、「１１０１」である。なお、図１１の例では、物理アドレスフィールド及び仮想アドレスフィールドの各々は圧縮されている値を含む。圧縮の１つの方法について、図１２を参照して以下に説明する。しかしながら、代替の実施形態では、これらのフィールドのうちの１つのみが圧縮されてもよく、これらのフィールドがいずれも圧縮されなくてもよい。また、必要に応じて、各フィールドに任意の数のビットが用いられてよく、メッセージが示したより多い情報を含んでも、少ない情報を含んでもよい。
【００２４】
戻って図１０を参照すると、図１０は、図１１のアドレス変換トレースメッセージ８６のフィールド圧縮されているバージョンである（５つの示したフィールドを有する）。すなわち、アドレス変換トレースメッセージ８４については、ＴＩＤフィールドおよびＴＳＩＺフィールドはデバッグメッセージの部分として含まれていないので、デバッグ端子４０を介して送信されない。さらにまた、図１０の例では、図１０の「１１００」の値は示した形態のフィールド圧縮ＴＬＢＷＥベースのアドレス変換トレースメッセージを表しているので、ＥＣＯＤＥフィールドの値が図１１の値とは異なる。なお、アドレス変換トレースメッセージ８４の残りのフィールドについての説明は、アドレス変換トレースメッセージ８６について上述において説明したのと同じである。したがって、フィールド圧縮モードでは、アドレス変換メッセージは、選択されるフィールドを含まないように圧縮される（一実施形態では、このフィールド圧縮は圧縮論理６８によって実行される）。
【００２５】
一実施形態では、フィールド圧縮されているアドレス変換トレースメッセージにおいて、所定の優勢（ｐｒｅｖａｌｅｎｔ）値を含むフィールドがメッセージに含まれないフィールドである。例えば、一実施形態では、ＴＩＤ及びＴＳＩＺＥフィールドの両方が優勢値を有する傾向があるので、各アドレス変換トレースメッセージにより送信される必要はない。例えば、一実施形態では、００００００００のＴＩＤ値は、１つのプロセスＩＤ（ＰＩＤ）値にマッチするように制限されるのではなく、全てのプロセスＩＤ値にアドレス変換エントリが利用可能であることを示す。この実施形態では、全てがゼロのＴＩＤ値が優勢ＴＩＤ値であると考えられる。代替の実施形態では、所定の非ゼロの優勢ＴＩＤ値を有する優勢な処理を表す様々なＴＩＤ値が、優勢値であるように規定されてよい。一実施形態では、仮想ページ及び物理ページについての特定のページサイズが優勢であってよい。例えば、多くのシステムでは、４キロバイトのページサイズが優勢なページサイズの値であり、したがって、大半のアドレス変換エントリでは、格納されるＴＬＢエントリのＴＳＩＺフィールドにエンコードされるような値を有するので、所定の優勢値として規定され得る。それらの一般的な場合では、フィールド圧縮によって、外部の開発システム３６に送信される必要がある最大のメッセージ長さの低減が可能となる。こうした低減によってデバッグメッセージの帯域幅が改良される場合があり、デバッグ制御回路６０のメッセージＦＩＦＯ７０のサイズを最適化する際の利点となり得る。一実施形態では、メッセージから除去されるまたは外部の開発システム３６に対し送信されないフィールドの所定の優勢値は、データ処理システム１０のユーザによって制御される。すなわち、この値はユーザによるプログラムの可能な記憶域、例えば、ＭＭＵ更新レジスタ２０４内などに格納可能である。
【００２６】
図１２には、メッセージの物理アドレスフィールド及び仮想アドレスフィールドなど、デバッグメッセージの特定のフィールドを圧縮して、例えば、図１０、１１の圧縮されている物理アドレス及び圧縮されている仮想アドレスを取得するための方法の一実施形態を示す（一実施形態では、この圧縮は圧縮論理６８によって実行される）。Ａ１及びＡ２のラベルで示した２つのアドレスが提供される。アドレスＡ２は、デバッグメッセージを生成する際に用いられる現在のアドレス（アドレス変換トレースメッセージに含まれる物理アドレスまたは仮想アドレスなど）である。アドレスＡ１は、先のデバッグメッセージの生成に用いられた先のアドレス（それぞれ、先のアドレス変換トレースメッセージに含まれていた先の物理アドレスまたは仮想アドレスなど）である。アドレスＡ１及びＡ２の実際の値は単なる例であり、任意のアドレス値が用いられることが理解される。変更済みのアドレスは、アドレスＡ１、Ａ２に論理演算を実行することによって生成される。この論理演算は、一実施形態では、排他的ＯＲ動作であり、対応するアドレスＡ１及びアドレスＡ２のそれぞれのビット位置に対し排他的論理和が行われる。得られる変更されたアドレスを図１２に示す。ここでは、２０個の先行するゼロが生成される。最下位のビットから最上位のバイナリ１ビットまでのアドレスの部分は、図１２に示すようにグループ化され、このグループ化によって、デバッグメッセージにおいてアドレス（例えば、圧縮されている物理アドレスまたは圧縮されている仮想アドレス）として用いられる変更されたアドレスＭ１が形成され、多くのメッセージでは平均メッセージサイズはより小さくなる。先に送信されたメッセージから再生成可能な冗長な情報は除去される。一方、アドレスＡ２は、次に示すようにデバッガによってデバッグメッセージアドレスから再生成されてもよい。先のアドレスＡ１について、アドレスメッセージＭ１との排他的論理和が行われる。アドレスＭ１は、アドレスメッセージの前に必要な先行部分のゼロを追加することによって、３２ビットのフォーマットに拡張して戻される。この排他的ＯＲ演算によってアドレスＡ２が生じる。すなわち、図１２には、アドレスからデバッグメッセージアドレスへの変換と、その反対のデバッグメッセージアドレスからアドレスへの変換との実装について示す。なお、デバッグ動作が最初に有効化されるときに第１トレースメッセージにより送信される変更済みアドレスＭ１は、先行するゼロが除去されている完全なアドレスが含まれる。デバッガは、変更されたアドレスＭ１をメッセージの完全なアドレスに拡張する際の初期アドレスとして、全てのゼロからなる先のアドレス値を仮定することが可能である。
【００２７】
図１３には、本発明の一実施形態におけるアドレス変換トレースメッセージ８８を示す。ＴＬＢ＿ＩＮＶ命令の実行に応答して、上述のように、アドレス変換トレースメッセージ８８などのデバッグメッセージがデバッガ２６によって生成される。従って、アドレス変換トレースメッセージ８８は、ＴＬＢ＿ＩＮＶベースのアドレス変換トレースメッセージとも呼ばれる。トレースメッセージ８８は４つの示したフィールドを有する。フィールドの配置は任意である。ＴＬＢ＿ＩＮＶ仮想アドレスフィールドは、トレースメッセージ８８の圧縮されていない仮想アドレスを含む。すなわち、このフィールドは有効アドレスの計算された値（ＲＡ、ＲＢの値を用いて計算される）を含み、上述の通り、この計算された値を用いて、マッチングエントリを無効化するためにアドレス変換論理２０５におけるマッチングエントリを見出した（これに代えて、ＴＬＢ＿ＩＮＶ仮想アドレスも圧縮されてよい）。ソースプロセッサフィールドは、トレースメッセージ８８に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コード（ＴＣＯＤＥ）フィールドは、トレースメッセージ８８を特定の所定のフィールドフォーマットを有するアドレストレースメッセージとして識別する値を含む。図１３の例では、アドレス変換トレースメッセージを表す値は「１００００１」である。イベント（ＥＣＯＤＥ）フィールドは、所定のフィールドフォーマットをさらに識別する値を含む。すなわち、該フィールドは、様々なタイプのアドレス変換トレースメッセージの間でさらに識別を行うために用いられる。図１３の例では、示した形態のＴＬＢ＿ＩＮＶベースのアドレス変換トレースメッセージを表す値は、「１１０１」である。なお、必要に応じて、各フィールドに任意の数のビットが用いられてよく、メッセージが示したより多い情報を含んでも、少ない情報を含んでもよい。
【００２８】
図８を参照して説明したように、分岐履歴は、プログラムトレースメッセージを生成しない特定の分岐（例えば、直接分岐）に用いられるアドレス変換のより優れたビューを提供するには有用である。しかしながら、それらのプログラムトレースメッセージを生成する実行された分岐（例えば、間接分岐）の間において仮想メモリマッピングの変化が生じるとき、分岐履歴フィールドは、そのマッピングにおける変化が発生した時点より後、正確な情報を提供しない。従って、一実施形態では、仮想アドレスマッピングに変更が生じた時点までの分岐履歴情報を含むプログラム関連付けメッセージが生成される。すなわち、プログラム関連付けメッセージは、アドレス変換論理２０５におけるエントリの変更に応答してアドレス変換トレースメッセージが生成されるときに、生成されることが可能である。例えば、プログラム関連付けメッセージは、ＴＬＢＷＥベースのアドレス変換メッセージが生成されるとき、生成されることが可能である。さらにまた、このプログラム関連付けメッセージは、分岐履歴が蓄積された時のマッピングの文脈によりデバッガ（外部の開発システム３６など）がプログラムトレースの再構築を実行することを可能とするように、ＴＬＢＷＥベースのアドレス変換メッセージに関して、このプログラム関連付けメッセージの順序を適切に決定することが可能である。このようにして、プログラム関連付けメッセージは、分岐履歴情報と、最後のプログラムトレースメッセージが生成されてからＴＬＢＷＥ命令によってアドレス変換論理２０５のエントリが変更される時点までに実行された命令の命令カウント情報とを、適切に提供することが可能である。一実施形態において、アドレス変換トレースメッセージに対応するプログラム関連付けメッセージは、アドレス変換メッセージの前に提供される。
【００２９】
図１５には、アドレス変換論理２０５のエントリの変更に応答して生成されるアドレス変換トレースメッセージに関して生成され適切に順序を決定される分岐履歴区切を有するプログラム関連付けメッセージ９２を示す。プログラム関連付けメッセージ９２は、５つの示したフィールドを有する。フィールドの配置は任意である。分岐履歴フィールドは、複数の１ビット値を含み、最後のプログラムトレースメッセージ以来の直接分岐毎に、直接分岐が行われたか否かを示すように、対応する１ビット値のセットまたはクリアが行われる。この分岐履歴フィールドは、アドレス変換論理２０５のエントリが変更され、アドレス変換トレースメッセージ（ＴＬＢＷＥベースのアドレス変換トレースメッセージ８４または８６など）が生成される時点までに行われた各直接分岐について、この情報を含む。シーケンスカウントフィールド（命令カウントフィールドも呼ばれる）は、最後のプログラムトレースメッセージから、アドレス変換論理２０５のエントリが変更される時点までに実行される命令の数を表す値を含む。ソースプロセッサフィールドは、プログラム関連付けメッセージ９２に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コードフィールドは、プログラム関連付けメッセージ９２を、所定のフィールドフォーマットの履歴区切を有するプログラム関連付けメッセージとして識別する値を含む。図１５の例では、示した形態のプログラムトレースメッセージを表す値は「１００００１」である。イベントコード（ＥＣＯＤＥ）フィールドは、プログラム関連付けメッセージ９２の所定のフィールドフォーマットをさらに識別する値を含む。すなわち、このフィールドは、様々なタイプのプログラム関連付けトレースメッセージの間でさらに識別を行うために用いられる。例えば、このフィールドは、プログラム関連付けメッセージがマージされたメッセージであるか否を表すために用いられる（マージされたメッセージについては以下により詳細に説明する）。図１５の例では、ＥＣＯＤＥフィールドの値は、プログラム関連付けメッセージがマージされていないことを表し、これは、そのプログラム関連付けメッセージが１つのトリガソース（例えば、アドレス変換論理２０５の１つのエントリの変更）のみによって生じたことを意味する。なお、必要に応じて、各フィールドに任意の数のビットが用いられてよく、メッセージが示したより多い情報を含んでも、少ない情報を含んでもよい（代替の一実施形態では、分岐履歴フィールドまたは命令カウントフィールドのうちの１つのみがプログラム関連付けメッセージに含まれてもよい）。
【００３０】
図１４には、分岐履歴を有するアドレス変換トレースメッセージ９０を示す。すなわち、図１４の例では、アドレス変換論理２０５のエントリが変更されることに応答して、アドレス変換トレースメッセージ（例えば、ＴＬＢＷＥベースのアドレス変換トレースメッセージ）及びプログラム関連付けメッセージの両方を生成するのではなく、１つのアドレス変換トレースメッセージが生成されてもよく、このメッセージが分岐履歴情報及び命令カウントをさらに含む。すなわち、ＴＬＢＷＥベースのアドレス変換トレースメッセージ（トレースメッセージ８４または８６など）の情報は、アドレス変換論理２０５のエントリの変更の時点までの、分岐履歴情報、命令カウント情報、またはその両方をさらに含んでもよい。一実施形態において、アドレス変換トレースメッセージ９０は、メッセージサイズを低減するために、変換メッセージ８４など、フィールド圧縮されたＴＬＢＷＥベースのアドレス変換トレースメッセージのフィールドを含む。例えば、サイズの低減は、例えば、生成メッセージがメッセージＦＩＦＯ７０内に適切に入るように必要とされる場合がある。すなわち、ＴＳＩＺフィールド及びＴＩＤフィールドは、このタイプの履歴区切を有するアドレス変換トレースメッセージを含まないことが可能である。
【００３１】
図１４に示した実施形態では、トレースメッセージ９０は７つの示したフィールドを有する。フィールドの配置は任意である。圧縮されている物理アドレスフィールドは、トレースメッセージ９０の物理アドレスを圧縮形態で含む。すなわち、このフィールドは、トレースメッセージの生成をトリガした（アドレス変換論理２０５の）ＴＬＢの変更されているエントリの物理アドレスの圧縮バージョンを表す。圧縮されている仮想アドレスフィールドは、トレースメッセージ９０の仮想アドレスを圧縮形態で含む。すなわち、このフィールドは、変更されているエントリの仮想アドレスの圧縮バージョンを表す。分岐履歴フィールドは複数の１ビット値を含み、最後のプログラムトレースメッセージ以来の直接分岐毎に、直接分岐が行われたか否かを示すように、対応する１ビット値のセットまたはクリアが行われる。この分岐履歴フィールドは、アドレス変換論理２０５のエントリが変更され、したがってトレースメッセージ９０の生成のトリガが行われる時点までに行われた各直接分岐について、この情報を含む。シーケンスカウントフィールドは、最後のプログラムトレースメッセージから、アドレス変換論理２０５のエントリが変更される時点までに実行される命令の数を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ９０に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コード（ＴＣＯＤＥ）フィールドは、トレースメッセージ９０を特定の所定のフィールドフォーマットを有するアドレス変換トレースメッセージとして識別する値を含む。図１４の例では、アドレス変換トレースメッセージを表す値は「１００００１」である。イベントコード（ＥＣＯＤＥ）フィールドは、所定のフィールドフォーマットをさらに識別する値を含む。すなわち、該フィールドは、様々なタイプのアドレス変換トレースメッセージの間でさらに識別を行うために用いられる。図１４の例では、ＥＣＯＤＥフィールドの値は、示した形態の履歴区切を有するアドレス変換トレースメッセージを表す。なお、必要に応じて、各フィールドに任意の数のビットが用いられてよく、メッセージが示したより多い情報を含んでも、少ない情報を含んでもよい。従って、トレースメッセージ９０など履歴区切を有するトレースメッセージの生成により、別個のプログラム関連付けメッセージ（プログラム関連付けメッセージ９２など）を生成する必要はない。
【００３２】
一実施形態では、アドレス変換論理２０５においてマッピングの変化が生じる時点において履歴区切付きのプログラム関連付けメッセージ９２とアドレス変換トレースメッセージとを提供するか否か、または履歴区切付きの１つのアドレス変換トレースメッセージ９０を提供するか否かに関する決定は、メッセージの最大サイズを限定するようにフィールド圧縮が発生可能であるか否かに基づく。優勢値がアドレス変換の変更において存在する場合、一実施形態では、履歴区切を有する１つのアドレス変換トレースメッセージ９０が生成される。優勢値が存在しない場合、ＴＳＩＺ及び／またはＴＩＤ情報を外部の開発システム３６に提供することが必要であり、この決定は、履歴区切を有するプログラム関連付けメッセージ（メッセージ９２など）及びアドレス変換トレースメッセージ（メッセージ８６など）の両方を送るように行われる。一実施形態では、フィールド圧縮されておらず履歴区切を有する１つのアドレス変換トレースメッセージはメッセージＦＩＦＯ７０のエントリのサイズを超えるので、最適ＦＩＦＯより大きなＦＩＦＯを必要とする。メッセージ圧縮が履歴区切を有する１つのアドレス変換トレースメッセージを所定のメッセージビット長さに入れるのに適切であるか否かに基づいて、履歴区切メッセージを有するプログラム関連付けメッセージ９２を選択的に生成することによって、いくつかの実施形態では、大半のメッセージはアドレス変換トレースメッセージ８６及び９０より少ないビットしか必要とせず、またＦＩＦＯの記憶容量の相当な部分は所与のエントリ内において使用されていないので、メッセージＦＩＦＯ７０におけるエントリの幅の最適化を実行することが可能である。ＦＩＦＯ７０におけるエントリの数を増加させつつ、エントリの幅を狭くする、より優れた最適化が可能である。なお、幾つかの実施形態では、所定の優勢値を含むためアドレス変換トレースメッセージから１つ以上のフィールドが除去できるか否かの判定は、１つの履歴区切付きアドレス変換トレースメッセージと、履歴区切付きプログラム関連付けメッセージおよび履歴区切なしアドレス変換トレースメッセージの両方との間で選択を行うために用いられる。他の実施形態では、追加の要因（圧縮されている仮想アドレス及び圧縮されている物理アドレスフィールドのうちの一方または両方の圧縮の程度など）が、最適なメッセージ決定戦略を判定するために用いられる。
【００３３】
一実施形態において、追加のトリガイベント（アドレス変換論理２０５のエントリの変更によって生じる仮想メモリマッピングの変化に加えて）によって、プログラム関連付けメッセージ（ＰＣＭ）の必要が生じ、このＰＣＭによってトリガイベントの時点までの分岐履歴及びシーケンスカウント（すなわち、命令カウント）が提供される。一実施形態において、プロセッサ４２は、通常の固定長の命令セット及び代替の可変長エンコード（ＶＬＥ）命令セットなど、ユニークなバイナリ符号化による複数の命令セットを透明性に実行することが可能である。一実施形態において、実行中の命令セットは、１つの命令ページ内において一定であるが、メモリの異なるページにおいて異なることが可能であり、従って、外部デバッガによる物理メモリに格納されるバイナリ値の解釈は、所与のページに存在する命令セットについての正確な知識に依存する。例えば、プロセッサ４２がページ境界を超えるとき、ＶＬＥ命令のシーケンス内外への実行モードの切替が生じ、実行命令カウントと２つのモードの動作間の履歴情報とを有効に分けるＰＣＭが生成されるので、実行モードの切替の発生時点までの分岐履歴及びシーケンスカウントを提供するためにプログラム関連付けメッセージが必要となる。また、別の例において、履歴モードのプログラムトレースを用いるとき（例えば、トレースメッセージ８１のようなトレースメッセージを生成するときなど）、直接分岐によってＶＬＥ命令の内外の実行モード切替が生じるときには、ＰＣＭも生成される。これらのＰＣＭタイプのトリガに加えて、所定の命令マスクの達成のためにプログラムトレースメッセージがマスクされるとき、または一定の所定のプロセッサ４２の例外または他のシステムイベントがデータ処理システム１０内で発生するとき、別の例が生じる。これらの場合、生じ得るそれらのイベントの各々のためにプログラム関連付けメッセージを生成する（仮想マッピングにおける変化が実行モードの切替を生じるページ境界を越えるのと同時に発生する場合など）のではなく、両方のトリガイベントを表す１つのプログラム関連付けメッセージが生成されることが可能である。この例では、図１５のプログラム関連付けメッセージ９２のフォーマットなど、マージされたメッセージ（すなわち、複数のトリガイベントによって生成されるメッセージ）を示すためにＥＣＯＤＥフィールドの値が用いられるフォーマットが生成されることが可能である。この場合、異なるＥＣＯＤＥ値は、単にプログラム関連付けメッセージがマージされたプログラム関連付けメッセージであるか否かを示すことが可能であり、マージされている場合、さらにどのタイプのトリガによってプログラム関連付けメッセージが生成したかを示すことが可能である。
【００３４】
以上、効率的かつリアルタイムでのデバッグアドレス指定を有するデータ処理システムが提供されたことが理解される。アドレス変換論理２０５内のエントリの変更または無効化に応答してアドレス変換トレースメッセージを生成することによって、デバッグ回路２６は、このタイプのアドレス変換情報を明示的に要求する必要はない。一実施形態では、アドレス変換トレースメッセージを生成させるには、エントリの１つ以上のフィールドのうちのいずれかの変更で十分である。このようにして、アドレス変換を使用するシステム（アドレスを変換するために１つ以上のＴＬＢを使用するシステムなど）において、改良されたデバッグを実行することができる。さらにまた、仮想アドレスマッピングが変化する場合、分岐履歴情報及びシーケンスカウント情報に関してより正確な情報を提供するように、適切なタイミングでプログラム関連付けメッセージが生成される。また、可能な場合、デバッグメッセージの１つ以上のフィールドを圧縮すること、デバッグメッセージをフィールド圧縮すること、または複数のメッセージ（プログラム関連付けメッセージなど）をマージすることによって、効率がさらに改良される。アドレス変換マッピングに対する変化は、ＴＬＢの中身の変更用の制御命令のプロセッサ命令実行によって生じてもよく、代替の実施形態では、ＴＬＢミスが発生するときにテーブルウォークを実行して新たな変換を取得することなどによって、変換テーブル検索を介してＴＬＢを自動的に維持するメモリ管理ユニットハードウェアによって生じてもよい。
【００３５】
以下は本発明の様々な実施形態である。
項目１は、デバッグメッセージを生成するデータ処理システムにおいて、複数のデータ処理命令を実行するためのデータプロセッサと、データプロセッサに接続されており、情報を格納し、データプロセッサに該情報を与えるためのメモリと、データプロセッサに接続されており、アドレス変換トレースメッセージを含むデバッグメッセージを生成するためのデバッグ回路と、デバッグ回路及びデータプロセッサに接続されているメモリ管理ユニットであって、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのアドレス変換を備えるメモリ管理ユニットと、を備える。デバッグ回路は、メモリ管理ユニットに接続されており１つ以上のアドレス変換マッピングが変更されるときに通知を受信するためのメッセージ生成回路を備える。メッセージ生成回路は、アドレス変換マッピングの変換の検出に応答してアドレス変換トレースメッセージを生成するとともに、アドレス変換トレースメッセージをデバッグ回路の外部に提供する。項目２は、アドレス変換マッピングが更新される毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、項目１に記載のデータ処理システムである。項目３は、メッセージ生成回路は、アドレス変換トレースメッセージの１つ以上のフィールドを選択的に除去するための圧縮論理をさらに備える、項目２に記載のデータ処理システムである。項目４は、圧縮論理によって除去されるアドレス変換トレースメッセージの前記１つ以上のフィールドの各々は、そのフィールドについての所定の優勢値を含む、項目３に記載のデータ処理システムである。項目５は、前記所定の優勢値はデータ処理システムのユーザによってアクセス可能な記憶域に格納されており、データ処理システムのユーザによって制御される、項目４記載のデータ処理システムである。項目６は、除去される前記１つ以上のフィールドは、アドレス変換サイズフィールドであるか、プロセス識別子およびアドレス空間の一方を識別するためのアドレス変換識別フィールドである、項目３に記載のデータ処理システムである。項目７は、前記１つ以上のアドレス変換マッピングは、ＴＬＢ（トランスレーション・ルックアサイド・バッファ）に格納される、項目１に記載のデータ処理システムである。項目８は、ＴＬＢがＴＬＢエントリの書込を行うかエントリを無効とする毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、項目７に記載のデータ処理システムである。項目９は、デバッグ回路に接続されているデバッグ端子と、デバッグ端子に接続されており、デバッグ回路からアドレス変換トレースメッセージを受信するためのデバッガと、をさらに備える、項目１に記載のデータ処理システムである。
【００３６】
項目１０は、デバッグメッセージを生成するための方法において、データプロセッサを用いて複数のデータ処理命令を実行する工程と、アドレス変換トレースメッセージを含むデバッグメッセージを生成するためのデバッグ回路をデータプロセッサに接続する工程と、デバッグ回路及びデータプロセッサにメモリ管理ユニットを接続する工程であって、メモリ管理ユニットは、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのＴＬＢ（トランスレーション・ルックアサイド・バッファ）を備える前記工程と、ＴＬＢエントリが変更されるときを検出する工程と、ＴＬＢエントリの変更の検出に応答して、アドレス変換トレースメッセージを生成する工程と、デバッグ端子にアドレス変換トレースメッセージを提供する工程と、を備える方法である。項目１１は、ＴＬＢがＴＬＢエントリの書込みを行うかエントリを無効とする毎に、メモリ管理ユニットからメッセージ生成回路にインジケータ信号を送信する工程をさらに備える、項目１０に記載の方法である。項目１２は、アドレス変換トレースメッセージの１つ以上のフィールドを除去することによってアドレス変換トレースメッセージの長さを圧縮する工程をさらに含む、項目１１に記載の方法である。項目１３は、除去される前記１つ以上のフィールドをアドレス変換サイズフィールドか、プロセス識別子またはアドレス空間を識別するためのアドレス変換識別フィールドに関連付ける工程をさらに含む、項目１２に記載の方法である。項目１４は、アドレス変換トレースメッセージの前記１つ以上のフィールドの各々に所定の優勢値を関連付ける工程と、前記１つ以上のフィールドについて所定の優勢値が存在する場合にのみ、同１つ以上のフィールドを除去する工程と、をさらに含む、項目１２に記載の方法である。項目１５は、データ処理システムのユーザによって前記所定の優勢値を制御する工程と、ユーザによるアクセスの可能な複数のレジスタのうちの１つ以上に前記所定の優勢値を格納するステップと、をさらに含む、項目１４に記載の方法である。
【００３７】
項目１６は、データ処理システムにおいて、データ処理システムを制御するためのグローバル制御回路と、グローバル制御回路に接続されているデータプロセッサであって、命令デコーダに接続されている命令フェッチユニットを備え、命令デコーダは１つ以上の実行ユニットに接続されており複数のデータ処理命令を実行するための命令デコーダである、データプロセッサと、グローバル制御回路及びデータプロセッサに接続されているメモリ管理ユニットであって、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのアドレス変換論理を備えるメモリ管理ユニットと、メモリ管理ユニットをグローバル相互接続部とのインタフェースを行うためのバスインタフェースユニットと、グローバル相互接続部に接続されており、情報を格納し、データプロセッサとの間で情報の提供を行うためのメモリと、グローバル制御回路及びメモリ管理ユニットに接続されているデバッグ回路であって、アドレス変換トレースメッセージを含むデバッグメッセージを生成するデバッグ回路と、を備える。デバッグ回路は、メモリ管理ユニットに接続されており１つ以上のアドレス変換マッピングが変更されるときに通知を受信するためのメッセージ生成回路を備える。メッセージ生成回路は、アドレス変換マッピングの変換の検出に応答してアドレス変換トレースメッセージを生成するとともに、アドレス変換トレースメッセージをデバッグ回路の外部に提供する。項目１７は、メッセージ生成回路は、アドレス変換トレースメッセージの１つ以上のフィールドを選択的に除去するための圧縮論理をさらに備える、項目１６に記載のデータ処理システムである。項目１８は、圧縮論理によって除去されるアドレス変換トレースメッセージの前記１つ以上のフィールドの各々は、そのフィールドについての所定の優勢値を含む、項目１７に記載のデータ処理システムである。項目１９は、前記所定の優勢値はデータ処理システムのユーザによってアクセス可能な記憶域に格納されており、データ処理システムのユーザによって制御される、項目１８に記載のデータ処理システムである。項目２０は、１つ以上のアドレス変換マッピングはＴＬＢ（トランスレーション・ルックアサド・バッファ）に格納され、ＴＬＢがＴＬＢエントリの書込を行うかエントリを無効とする毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、項目１６に記載のデータ処理システムである。
【図１】
2012518234.tif 000003
【図２】
2012518234.tif 000004
【図３】
2012518234.tif 000005
【図４】
2012518234.tif 000006
【図５】
2012518234.tif 000007
【図６】
2012518234.tif 000008
【図７】
2012518234.tif 000009
【図８】
2012518234.tif 000010
【図９】
2012518234.tif 000011
【図１０】
2012518234.tif 000012
【図１１】
2012518234.tif 000013
【図１２】
2012518234.tif 000014
【図１３】
2012518234.tif 000015
【図１４】
2012518234.tif 000016
【図１５】
2012518234.tif 000017
【国際調査報告】
2012518234.tif 000018
2012518234.tif 000019