説明

デバッグ用のアドレス変換トレースメッセージ生成

データ処理システム(10)及び方法は、外部デバッグツールをリアルタイムトレース機能を有するように許可することによってデバッグメッセージを生成する。データプロセッサ(20、22、24)は複数のデータ命令を実行し、情報記憶のためにメモリ(30)を使用する。デバッグ回路26はアドレス変換トレースメッセージを含むデバッグメッセージを生成する。仮想形態及び物理形態との間にアドレスを変換するようにアドレス変換を実行するために、メモリ管理ユニット(16)はアドレス変換論理(205)を有する。デバッグ回路(26)は、1つ以上のアドレス変換マッピングは変更される時に通信を受信するためにメモリ管理ユニット(16)に接続されるメッセージ生成回路(64)を含む。メッセージ生成回路(64)は、アドレスマッピングの変更を検出したことに応答してアドレス変換トレースメッセージを生成し、デバッグ回路(26)の外部にアドレス変換トレースメッセージを与える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に半導体に関し、より詳細には、アドレス変換を実行し、アドレス変換トレースメッセージを生成するデータ処理システムに関する。
【背景技術】
【0002】
IEEE ISTO5001またはNEXUSデバッグ標準として知られるIEEE標準は、リアルタイムデバッグメッセージ生成をサポートする確立されたリアルタイムデバッグ標準である。NEXUSデバッグ標準によって、外部トレース再構築ツールに対するシステム内の所定動作条件を識別するための機構が指定される。デバッグ処理は、データ処理システム用のコード開発にも用いられる。デバッグ情報を実時間で提供することは、データ処理システムの正常な動作に介入しない場合、システムの透明性の動作を維持するには非常に望ましい。
【0003】
データ処理システムによって生成されるデバッグメッセージには、プログラムイベント(プログラムトレースメッセージ)またはデータイベント(データ読取メッセージ、データ書込メッセージ)用のアドレス情報及びデータ情報や、他のデバッグ情報が含まれる。アドレス情報には、通常、物理アドレスとして知られる物理メモリ域(ロケーション)を識別するために変換される必要があるフォーマットである、仮想アドレス情報が含まれる。実際のプログラムのフロー及びシステムデータ変数の動的な値を監視できるように、実行中のプログラムにアドレスを関連付けることは、デバッグ処理の重要部分である。仮想アドレスから物理アドレスへのマッピングまたは変換が実行される必要がある。しかしながら、外部デバッガは、通常、特に、要求ページングまたは他の再マッピング動作のためにマッピングが動的に変更される場合には、デバッグメッセージのアドレス部分を速やかに変換するために必要な仮想アドレスから物理アドレスへのマッピングの情報を有していない。仮想アドレスの使用によって、デバッグユーザが単純な方法によって、ソフトウェアアプリケーションのテキストおよびデータ部分に対して仮想アドレスを用いるコンパイル及びリンク機能によって取得されるプログラムリストを介してコンピュータプログラムをトレースすることが可能となる。ユーザは、通常、どのようにしてオペレーティングシステム(OS)によって仮想アドレスが物理アドレスに変換されるのかについての知識を有していない。従って、仮想アドレスを指示するにはトレースが必要である。残念ながら、プリコンパイルされランタイムにおいて実行されるソフトウェアモジュールのプログラムリストなど、一定のプログラムリストは利用可能でない。このようなモジュールの例はOSコール及びライブラリ関数である。そうした一例では、プログラムリストは利用不可能である。従って、実行プログラムのそれらの部分を適切にトレース及び解釈するのは非常に困難である。仮想アドレスから物理アドレスへの正しい変換には、プログラムカウンタがどこにあるのかを把握することと、物理メモリを調べてアドレスがどこであるのかを決定することとが必要である。複数のプログラムを実行するシステムでは、メモリマッピングが動的に変化し、メモリページ間の遷移が容易に行われる。こうした状況では、デバッグメッセージの生成及び解釈がリアルタイムで実行されることがアドレス変換によって実質的に妨げられる。
【図面の簡単な説明】
【0004】
【図1】本発明の一実施形態によるデバッグメッセージ生成を含むデータ処理システムのブロック図。
【図2】図1のアドレス変換論理の一実施形態のブロック図。
【図3】図1のデバッグ回路の一実施形態のブロック図。
【図4】図2の例示的なMMU更新レジスタの図。
【図5】従来技術による例示的なトランスレーション・ルックアサイド・バッファ(TLB)書込エントリ命令の図。
【図6】従来技術による例示的なTLB無効化アドレス命令の図。
【図7】従来技術による従来モードにおける例示的なプログラムトレースメッセージの図。
【図8】従来技術による履歴モードにおける例示的なプログラムトレースメッセージの図。
【図9】従来技術による例示的なデータトレースメッセージの図。
【図10】本発明の一実施形態によるフィールド圧縮した例示的なアドレス変換トレースメッセージの図。
【図11】本発明の一実施形態による例示的なアドレス変換トレースメッセージの図。
【図12】従来技術によるメッセージ生成とともに使用可能なアドレス圧縮の一例を示す図。
【図13】本発明の一実施形態による例示的なアドレス変換トレースメッセージの図。
【図14】本発明の一実施形態による履歴区切を含む例示的なアドレス変換トレースメッセージの図。
【図15】本発明の一実施形態による履歴区切を含む例示的なプログラム関連付けトレースメッセージの図。
【発明を実施するための形態】
【0005】
多くのデータ処理システムでは、通常、仮想アドレスを物理アドレスにマッピングするアドレス変換論理(TLB(トランスレーション・ルックアサイド・バッファ)など)が用いられる。アドレス変換論理内のエントリ(TLBエントリなど)は、プロセッサ命令の使用によって、またはデータ処理システム内のハードウェアによって、変更または無効化されることができる。係るハードウェアは、ハードウェアによる「テーブルウォーキング」または同様なタイプのハードウェア検索を実行することによってなど、ソフトウェアの実行に必要とされるアドレス変換テーブル検索およびTLB更新を実行することによってアドレス変換を動的に維持する。本発明の一態様では、アドレス変換トレースメッセージなどのデバッグメッセージは、アドレス変換論理内におけるエントリの変更または無効化に応答して生成される。これらのアドレス変換トレースメッセージは、次いで、デバッグ性能の向上のために、外部の開発システムに対し提供される。さらにまた、仮想アドレスのマッピングが変化する場合、分岐履歴情報及びシーケンスカウント情報に関してさらに正確な情報を提供するために、プログラム関連付けメッセージが適切なタイミングで生成されてもよい。また、本発明の別の態様では、可能なときに、デバッグメッセージの1つ以上のフィールドを圧縮することによって、デバッグメッセージをフィールド圧縮することによって、または複数のメッセージ(プログラム関連付けメッセージなど)をマージすることによって、効率がさらに向上する場合がある。
【0006】
図1に示すのは、デバッグメッセージを生成するデータ処理システム10である。データ処理システム10内にはグローバル相互接続部12が存在する。グローバル相互接続部12の一実施形態はシステムバスである。他の形態の相互接続部も使用可能であり、例えば、クロスバー、ポイントツーポイント接続、ならびに光及び無線伝送技術が含まれる。バスインタフェースユニット(BIU)14は双方向カップリングを介してグローバル相互接続部12に接続される。一実施形態において、この双方向カップリングは双方向の複数の導体バスであり、本明細書では、導体を横切るスラッシュで複数の導体バスを表す。BIU14は、メモリ管理ユニット(MMU)16に双方向接続される。MMU16は、双方向の複数の導体バスを介してグローバル制御回路18の第1入力/出力端子に接続される。グローバル制御回路18の第2入力/出力端子は、双方向の複数の導体バスを介して命令フェッチユニット20の第1入力/出力端子に接続される。命令フェッチユニット20は、複数の導体バスを介して命令デコーダ22の入力に接続される出力を有する。命令デコーダ22の出力は、実行ユニット24の入力に接続される。一実施形態において、実行ユニット24は、少なくとも1つの計算論理ユニット、少なくとも1つの浮動小数点ユニット、及び少なくとも1つの乗算器回路を備える。実行ユニット24内にはレジスタファイル25が存在する。命令デコーダ22の入力/出力端子は、グローバル制御回路18の第3入力/出力端子に接続される。実行ユニット24の第1入力/出力端子は、グローバル制御回路18の第4入力/出力端子に接続される。また、実行ユニット24及び命令フェッチユニット20は、MMU16にも双方向接続される。デバッグ回路26は、グローバル制御回路18の第5入力/出力端子に接続される入力/出力端子を有する。ロード/ストア・ユニット28は、グローバル制御回路18の第6入力/出力端子に双方向接続される第1入力/出力端子を有する。ロード/ストア・ユニット28は、BIU14の第1入力/出力端子に接続される第2入力/出力端子を有する。ロード/ストア・ユニット28は、実行ユニット24の第2入力/出力端子に接続される第3入力/出力端子を有する。BIU14の第2入力/出力端子は、グローバル制御回路18の第7入力/出力端子に接続される。ロード/ストア・ユニット28の出力は、データの仮想アドレスを提供し、MMU16の第1入力及びデバッグ回路26の第1入力に接続される。命令フェッチユニット20の出力は、命令の仮想アドレスを提供し、MMU16の第2入力及びデバッグ回路26の第2入力に接続される。MMU16の第1出力は、データの物理アドレスを与え、BIU14の第1入力及びデバッグ回路26の第3入力に接続される。MMU16の第2出力は、命令の物理アドレスを与え、BIU14の第2入力及びデバッグ回路26の第4入力に接続される。
【0007】
メモリ30は、双方向カップリングを介してグローバル相互接続部12に接続される。デバッグ回路26は、複数の双方向の複数の導体を介して複数のデバッグ端子40に接続される第2入力/出力端子を有する。この複数のデバッグ端子40は、デバッガまたは外部デバッガとして一般に参照される外部の開発システム36に接続される。示した実施形態では、BIU14、MMU16、グローバル制御回路18、命令フェッチユニット20、命令デコーダ22、レジスタファイル25を備える実行ユニット24、デバッグ回路26、ならびにロード/ストア・ユニット28は、図1の破線群によって示すように、集合的にデータプロセッサ42を形成する。グローバル制御回路18は図1では分離した位置に示しているが、グローバル制御回路18の回路及び機能制御が分散して実装されてもよいこと、データ処理システム10の様々な他のシステムブロック内に含まれてもよいことが理解される。また、示した実施形態では、グローバル制御回路18は、現在実行中の処理についてのプロセス識別子(PID)を格納するプロセス識別子(PID)レジスタ19を備える。また、グローバル制御18はMMU16にPIDを提供する。
【0008】
動作中、データ処理システム10は、グローバル相互接続部12を介してデバイス(図示せず)と通信する。データプロセッサ42との間で通信される情報は、BIU14を介して転送される。命令フェッチユニット20は、グローバル制御回路18の制御の下、BIU14からデータプロセッサ命令(すなわち、プロセッサ命令)を読み出す。読み出された命令は、グローバル制御回路18の制御の下でデコードを行うために、命令デコーダ22に対し連続的に通信される。実行ユニット24は命令を実行してデータを生成する。このデータは、キャッシュ(図示せず)に格納されるか、またはグローバル制御回路18、BIU14、およびグローバル相互接続部12を通じるカップリングを介して、メモリ30に配置される。データプロセッサ42及びデータ処理システム10の動作のデバッグは、外部の開発システム36による解析用にデバッグメッセージを生成するデバッグ回路26を使用することによって実行される。外部の開発システム36からなどの起動に応答して、テストまたはデバッグモードの動作に入る。示した実施形態において、デバッグ回路26はデータアドレス及び命令アドレスを受信するように構成されており、それらのアドレスは仮想アドレスであっても物理アドレスであってもよい。データアドレスはデータが存在するアドレスであり、命令アドレスは命令が存在するアドレスである。命令仮想アドレスは、命令フェッチユニット20からデバッグ回路26及びMMU16へ提供される。仮想アドレスは変換されていないアドレスであり、情報が存在する物理記憶域の変換されたアドレスを取得するために、何らかのさらなる処理または変換が必要である。この変換されたアドレスは物理アドレスと呼ばれる。MMU16は、BIU14及びデバッグ回路26に命令物理アドレスを提供する。一実施形態では、仮想すなわち変換されていないアドレスは、論理アドレスである。別の実施形態では、変換されていないアドレスは有効アドレスである。有効アドレスは、物理アドレスへ変換される前に、まず仮想アドレスに変換される必要がある。ロード/ストア・ユニット28は、デバッグ回路26及びMMU16にデータ仮想アドレスを提供する。MMU16は、BIU14及びデバッグ回路26にデータ物理アドレスを提供する。
【0009】
デバッグ回路26は、以下でより詳細に説明するように、次いで、受信したアドレスのうちの1つ以上の少なくとも一部を用いて、外部の開発システム用のデバッグメッセージを形成する。デバッグメッセージのフォーマットは異なる場合があり、例について図7、8、9、10、11、13、14、および15に関連して以下に説明する。
【0010】
図2に示すのは、図1のMMU16の一部の例示的な実施形態である。MMU16は、制御回路203、MMU更新レジスタ204、およびアドレス変換論理205を備える。一実施形態において、アドレス変換論理205は、0〜Nの番号を付けられたN+1個のエントリを有するトランスレーション・ルックアサイド・バッファ(TLB)として実装され、各エントリは、仮想アドレス209、対応する物理アドレス211、対応する変換サイズ(TSIZ)210、対応する変換ID(TID)212、対応する属性213、対応する有効(valid)フィールド215を含む。代替の実施形態では、アドレス変換論理205は、異なるように実装されてよい。制御回路203はMMU更新レジスタ204に双方向接続され、デバッグ回路26及びアドレス変換論理205へ変更インジケータ及びアドレス変換情報を提供する。また、制御回路203は、グローバル制御回路18にも双方向接続されており、グローバル制御回路18からPIDを受信する。MMU更新レジスタ204は1つ以上のレジスタを備えてもよく、実行ユニット24と双方向接続される。
【0011】
動作中、エントリ0〜Nは、仮想アドレスを物理アドレスに変換するために用いられるアドレスマッピング情報を格納する。例えば、命令またはデータ仮想アドレスはMMU16に対し提供され(命令フェッチユニット20またはロード/ストア・ユニット28からなど)、アドレス変換論理205に格納されている仮想アドレス209と比較される。マッチするエントリ(マッチングエントリ)が見出される場合(有効フィールド215によって示されるように、マッチングエントリは有効エントリでもある)、対応する物理アドレス211はデバッグ回路26及びBIU14に対する命令またはデータ物理アドレスとして提供される。マッチングエントリの対応TSIZ210は、変換されるアドレスに対応するページサイズを提供し、マッチングエントリの対応TID212はアドレス空間識別子を提供する。TIDフィールドがゼロのとき、マッチングエントリはグローバルであるため、全ての処理に対しそのエントリが適用される。しかしながら、TID212がゼロでない場合には、受信される仮想アドレス及び受信されるPIDの両方がアドレス変換論理205における有効エントリの仮想アドレス209及びTID212にそれぞれマッチするときのみ、マッチングエントリが決定される。また、MMU更新レジスタ204の使用を通じて、制御回路203は、プロセッサ42によって実行されるプロセッサ命令に応答して、アドレス変換論理205内のエントリを更新または変更することが可能である。これについて図4に関連して以下により詳細に説明する。制御203がアドレス変換論理205内のエントリを変更または更新するとき、変更インジケータがアドレス変換論理205やデバッグ回路26に提供される。
【0012】
図3に示すのは、図1のデバッグ回路26の一部の例示的な一実施形態である。デバッグ回路26は、デバッグ制御回路60、メッセージ生成論理64、および入力/出力(I/O)論理66を備える。メッセージ生成論理64は圧縮論理68を備え、MMU16内の制御回路203から変更インジケータ及びアドレス変換情報を受信するように接続される。デバッグ制御回路60は、メッセージ先入れ先出し記憶回路(FIFO)70を備え、メッセージ生成論理64及びI/O論理66に双方向接続される。また、デバッグ制御回路60はグローバル制御回路18から情報を受信する。I/O論理66は、デバッグ端子40に双方向接続される。
【0013】
動作中、メッセージ生成論理64は、複数の所定のフォーマットのうちの選択される1つのフォーマットに準拠してデバッグメッセージを形成する機能を実装する論理回路である。メッセージ生成論理64はデバッグメッセージを形成し、圧縮論理68は、そのメッセージの一部または全部にメッセージ圧縮を実行することができ、それらのデバッグメッセージは、次いで、デバッグ制御回路60に提供され、メッセージFIFO70に格納される。メッセージFIFO70から、デバッグメッセージは、I/O論理66を介してデバッグ端子40に導かれる。一実施形態において、アドレス変換論理205においてエントリが変更または更新される毎に、メッセージ生成論理64はアドレス変換トレースメッセージを生成する。例えば、アドレス変換論理205におけるエントリが変更されていることをアドレス変換論理205及びメッセージ生成論理64の両方に示す変更インジケータを制御回路203がアサートする毎に、メッセージ生成論理64は、制御203から受信されるアドレス変換情報に基づいてアドレス変換トレースメッセージを生成する。なお、本明細書で使用される「エントリの変更」にはエントリの無効化も含まれる。これらのアドレス変換トレースメッセージのフォーマットについて、図10、11、13、14を参照して以下により詳しく説明する。
【0014】
図4には、MMU更新レジスタ204の一例を示す。示した実施形態において、MMU更新レジスタ204は、4つのレジスタMA0、MA1、MA2、MA3を備える。これらのレジスタは、アドレス変換論理205におけるエントリを更新するために用いられる。示した実施形態において、各レジスタは複数のフィールドを含む32ビットレジスタである。MA1は、2ビットのTLBSELフィールド及び6ビットのESELフィールドを含む。TLBSELフィールドは、TLBが更新されることを示す値を格納する。示した実施形態では、1つのTLB(アドレス変換論理205)のみを図に示しているが、TLBSELフィールドが存在しなくてもよい。しかしながら、代替の実施形態では、任意の数のTLBが実装されてもよい。ESELフィールドは、TLBのエントリ数(例えば、アドレス変換論理205における0〜Nのエントリのうちの1つ)を示す値を格納する。MA1は、8ビットのTIDフィールド及び5ビットのTSIZEフィールドを含む。TIDフィールドは、変換識別子フィールドを示す値を格納し、TSIZEフィールドは、ページサイズを示す値を格納する。MA2は、仮想ページ番号を示す値を格納する22ビットのフィールドVPNフィールドを含む。また、MA2は、VLE(ページは命令用の可変長符号化を用いる)、W(ページはライトスルー)、I(ページはキャッシュ禁止)、M(ページは「メモリの一貫性を必要とする」)、G(ページは保護されている)、E(ページはエンディアン)などの属性を格納する様々なフィールドも含む。MA3は、物理ページ数を示す値を格納するとともに複数の属性(例えば、U0−U3(ユーザ定義属性)、UX、SX、UW、SW、UR、およびSR(ユーザ及びスーパバイザの、読取、書込、実行のパーミッション))を格納する22ビットのフィールドPPNフィールドを含む。なお、代替の実施形態では、MMU更新レジスタ204は示したレジスタより多くのレジスタを含んでよく、それらのレジスタに格納される情報は、任意の数のレジスタを用いる様々な異なるフォーマットに編成されてよい。また、各フィールドは、必要に応じて適切な情報を格納するために、より多くのビットを有してもよく、より少ないビットを有してもよい。なお、TIDは、仮想アドレスが「VPNをTIDに連結したもの」として計算されるような、仮想アドレスに対する拡張であると考えられる。従って、これらのレジスタは、プロセッサ42による1つ以上のプロセッサ命令(専用のレジスタ命令に移動するなど)に応答して、グローバル制御回路18によって更新されてよい。これらのレジスタに格納される情報は、次いで、プロセッサ42によって実行されるプロセッサ命令に応答してアドレス変換論理205におけるエントリを更新するために用いられる。本発明の代替の実施形態では、アドレス変換論理205(例えば、TLB)に対する更新は、TLBミスに応答する制御論理によって実行されてよい。この制御論理は、制御論理203の一部として実装されてもよく、MMU16内またはプロセッサ42内のいずれかの場所に実装されてもよい。一実施形態において、TLBミスに自動的に応答するこの制御論理は、メモリ30またはデータ処理システム10内のいずれかの場所に格納される1つ以上の変換テーブルを検索することによってアドレス変換エントリ情報を取得し、続いてプロセッサ42によって明示的に実行されるプロセッサ命令を使用することなく、アドレス変換テーブルから読み出される情報に基づいてアドレス変換論理205内でアドレス変換の変更を実行する。
【0015】
例えば、図5には、TLBエントリ(すなわち、アドレス変換論理205内のエントリ)を更新するために使用できる現行のプロセッサ命令の一例である、TLB書込エントリ(TLBWE;TLB Write Entry)命令を示す。TLBWE命令によって、MMU更新レジスタ204内の一定のフィールドの内容が、アドレス変換論理205の1つのエントリに書き込まれる。この書き込まれるエントリ(tlb_entry_id)は、例えば、MA0のTLBSELフィールド及びESELフィールドによって指定される。TLBWE命令の実行時、この識別されるエントリは、MA1、MA2、MA3における適切な情報を用いて更新される。すなわち、MA1のTIDフィールド及びTSIZEフィールドにおける値は、アドレス変換論理205の識別されるエントリのTSIZEフィールド210及びTIDフィールド212に格納される。同様に、MA2におけるVPNの値や、MA3のPPNの値および属性は、識別されるエントリの、対応するフィールドの仮想アドレス209、物理アドレス211、および属性213に格納される。また、識別されるエントリの有効ビット215は、有効エントリを示すようにセットされる。
【0016】
図6には、アドレス変換論理205のエントリを無効化するために用いられる現行のプロセッサ命令の別の例である、TLB無効化エントリ(TLB_INV;TLB Invalidate Entry)を示す。TLB_INV命令のフォーマットは、2つのソースレジスタRA,RBを指定し、これらのレジスタは、TLB_INV命令の実行時、RA+RBの有効アドレス(EA)を計算するために用いられる。すなわち、EAは、RAの中身とRBの中身との和に等しい。このEAアドレスは、次いで、アドレス変換論理205内においてマッチングエントリを見出すために用いられ、マッチングエントリが見出されると、そのマッチングエントリの有効ビット215が無効エントリを示すようにセットされる。ソースレジスタRA,RBは、2つの汎用レジスタ(例えば、プロセッサ42のレジスタファイル25内に配置される)であってよい。
【0017】
本発明の一実施形態では、アドレス変換論理205のエントリが更新されるとき(TLBWEまたはTLB_INV命令が実行されるときなど)、制御203は変更インジケータを介してデバッグ回路26に通知を行い、これに応答して、デバッグ回路26のメッセージ生成論理64がアドレス変換トレースメッセージを生成する。このアドレス変換トレースメッセージは、(FIFO70から、I/O論理66を介して)デバッグ端子40に提供され得る。このようにして、変更が発生するとアドレス変換情報が自動的に送信されるので、デバッガ26がアドレス変換論理205からアドレス変換情報を明示的に要求する必要はない。TLBWEベースのアドレス変換トレースメッセージ及びTLB_INVベースのアドレス変換トレースメッセージの一例について、図10、11、13を参照して記載する。また、TLBWEまたはTLB_INV命令が実行されるとき、制御回路203は、上述のようにMMU更新レジスタ204に格納される情報を用いることによって、識別されるエントリまたはマッチングエントリを適切に更新するための適切な制御及び情報をアドレス変換論理205に提供する。従って、変更インジケータに加えて、制御回路203が変更インジケータと共に必要に応じて他の情報をアドレス変換論理205及びデバッグ回路26に提供してよいことが留意される。代替の実施形態では、他の更新機構を用いてアドレス変換論理205内のエントリが変更されてもよく、それに応答して、制御回路203がデバッグ回路26に対し、この変更や、この変更に関連してデバッグ回路26がアドレス変換トレースメッセージを適切に生成することを可能とするために必要な情報を示すように、適切なシグナリングを行うことが可能である。
【0018】
図7、8、9に示すのは、現行のデバッグ論理によって生成されるトレースメッセージである。図7に示すのは、従来モードにおけるプログラムトレース間接分岐メッセージ80である。図8に示すのは、履歴モードにおけるプログラムトレース間接分岐メッセージ81である。プログラムトレース間接分岐メッセージは、プロセッサ42上で実行中の命令によって間接分岐が実行されるときに生成される。間接分岐は、その標的アドレスが分岐命令により直接提供されていない分岐であり、レジスタなど別のロケーションに格納されるか、そうでなければ動的に計算されるか決定される必要がある(サブルーチン呼出など)。直接分岐は、その標的アドレスが命令により直接提供されている分岐であり(特定のアドレス位置に対応するラベルによる、命令中のオフセット値によって提供されるなど)、したがって、通常、プログラム命令値の知識に基づきデバッガによって決定可能な静的な値である。図9に示すのは、データトレースメッセージ82である。
【0019】
図7を参照すると、トレースメッセージ80は、4つの示したフィールドを有する。仮想アドレスフィールドは、トレースメッセージ80の仮想アドレスを含む。シーケンスカウントフィールドは、最後のプログラムトレースメッセージ以来の実行された命令の数を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ80に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コードフィールドは、トレースメッセージを、特定の所定のフィールドフォーマットを有するプログラムトレース間接分岐メッセージとして識別する値を含む。図7の例では、示した形態のプログラムトレースメッセージを表す値は「000100」であり、これは、このプログラムトレース間接分岐メッセージが従来分岐トレースモード動作を用いて生成されたことを示している。
【0020】
図8を参照すると、トレースメッセージ80は5つの示したフィールドを有する。仮想アドレスフィールドは、トレースメッセージ81の仮想アドレスを含む。分岐履歴フィールドは、複数の1ビット値を含み、最後のプログラムトレースメッセージ以来の直接分岐毎に、直接分岐が行われたか否かを示すように、対応する1ビット値のセットまたはクリアが行われる。シーケンスカウントフィールドは、最後のプログラムトレースメッセージ以来の実行された命令の数を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ80に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コードフィールドは、トレースメッセージを、特定の所定のフィールドフォーマットを有するプログラムトレース間接分岐メッセージとして識別する値を含む。図8の例では、示した形態のプログラムトレースメッセージを表す値は「011100」であり、これは、このプログラムトレース間接分岐メッセージが履歴モード分岐トレース動作を用いて生成されたことを示している。
【0021】
図9を参照すると、トレースメッセージ82は5つの示したフィールドを有する。データ値フィールドは、トレースメッセージ82に関連付けられている1つ以上のデータ値を含む。仮想アドレスフィールドは、トレースメッセージ82の仮想アドレスを含む。データサイズフィールドは、1つのデータワードに含まれるデータの長さまたはビット数を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ82に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コードフィールドは、トレースメッセージを、特定の所定のフィールドフォーマットを有するデータトレース間接分岐メッセージとして識別する値を含む。図9の例では、示した形態のデータ書込トレースメッセージを表す値は「000101」である。示した形態のデータ読取トレースメッセージを表す値は「000110」である。
【0022】
図10、11には、本発明の実施形態によるアドレス変換トレースメッセージ84,86をそれぞれ示す。TLBWE命令の実行に応答して、上述のように、デバッグメッセージ(アドレス変換メッセージ84またはアドレス変換トレースメッセージ86など)は、デバッガ26によって生成されることができる。なお、従って、それらのアドレス変換メッセージは、TLBWEベースのアドレス変換トレースメッセージと呼ばれる場合がある。なお、アドレス変換トレースメッセージ84は、TLBWEベースのアドレス変換トレースメッセージのフィールド圧縮されているバージョンであり、アドレス変換トレースメッセージ86はフィールド圧縮されていないバージョンである。
【0023】
まず図11を参照すると、トレースメッセージ86は8つの示したフィールドを有する。フィールドの配置は任意である。圧縮されている物理アドレスフィールドは、トレースメッセージ86の物理アドレスを圧縮形態で含む。すなわち、このフィールドは、トレースメッセージの生成をトリガした(アドレス変換論理205の)TLBの変更されているエントリの物理ページ番号アドレスの圧縮バージョンを表す。圧縮されている仮想アドレスフィールドは、トレースメッセージ86の仮想アドレスを圧縮形態で含む。すなわち、このフィールドは、変更されているエントリの仮想ページ番号アドレスの圧縮バージョンを表す。TIDフィールドは、変更されているエントリのTID値を表す値を含む。TSIZフィールドは、変更されているエントリのTSIZ値を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ86に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コード(TCODE)フィールドは、トレースメッセージ84を特定の所定のフィールドフォーマットを有するアドレス変換トレースメッセージとして識別する値を含む。図10の例では、アドレス変換トレースメッセージを表す値は「100001」である。イベントコード(ECODE)フィールドは、所定のフィールドフォーマットをさらに識別する値を含む。すなわち、該フィールドは、様々なタイプのアドレス変換トレースメッセージの間でさらに識別を行うために用いられる。図11の例では、示した形態の非フィールド圧縮TLBWEベースのアドレス変換トレースメッセージを表す値は、「1101」である。なお、図11の例では、物理アドレスフィールド及び仮想アドレスフィールドの各々は圧縮されている値を含む。圧縮の1つの方法について、図12を参照して以下に説明する。しかしながら、代替の実施形態では、これらのフィールドのうちの1つのみが圧縮されてもよく、これらのフィールドがいずれも圧縮されなくてもよい。また、必要に応じて、各フィールドに任意の数のビットが用いられてよく、メッセージが示したより多い情報を含んでも、少ない情報を含んでもよい。
【0024】
戻って図10を参照すると、図10は、図11のアドレス変換トレースメッセージ86のフィールド圧縮されているバージョンである(5つの示したフィールドを有する)。すなわち、アドレス変換トレースメッセージ84については、TIDフィールドおよびTSIZフィールドはデバッグメッセージの部分として含まれていないので、デバッグ端子40を介して送信されない。さらにまた、図10の例では、図10の「1100」の値は示した形態のフィールド圧縮TLBWEベースのアドレス変換トレースメッセージを表しているので、ECODEフィールドの値が図11の値とは異なる。なお、アドレス変換トレースメッセージ84の残りのフィールドについての説明は、アドレス変換トレースメッセージ86について上述において説明したのと同じである。したがって、フィールド圧縮モードでは、アドレス変換メッセージは、選択されるフィールドを含まないように圧縮される(一実施形態では、このフィールド圧縮は圧縮論理68によって実行される)。
【0025】
一実施形態では、フィールド圧縮されているアドレス変換トレースメッセージにおいて、所定の優勢(prevalent)値を含むフィールドがメッセージに含まれないフィールドである。例えば、一実施形態では、TID及びTSIZEフィールドの両方が優勢値を有する傾向があるので、各アドレス変換トレースメッセージにより送信される必要はない。例えば、一実施形態では、00000000のTID値は、1つのプロセスID(PID)値にマッチするように制限されるのではなく、全てのプロセスID値にアドレス変換エントリが利用可能であることを示す。この実施形態では、全てがゼロのTID値が優勢TID値であると考えられる。代替の実施形態では、所定の非ゼロの優勢TID値を有する優勢な処理を表す様々なTID値が、優勢値であるように規定されてよい。一実施形態では、仮想ページ及び物理ページについての特定のページサイズが優勢であってよい。例えば、多くのシステムでは、4キロバイトのページサイズが優勢なページサイズの値であり、したがって、大半のアドレス変換エントリでは、格納されるTLBエントリのTSIZフィールドにエンコードされるような値を有するので、所定の優勢値として規定され得る。それらの一般的な場合では、フィールド圧縮によって、外部の開発システム36に送信される必要がある最大のメッセージ長さの低減が可能となる。こうした低減によってデバッグメッセージの帯域幅が改良される場合があり、デバッグ制御回路60のメッセージFIFO70のサイズを最適化する際の利点となり得る。一実施形態では、メッセージから除去されるまたは外部の開発システム36に対し送信されないフィールドの所定の優勢値は、データ処理システム10のユーザによって制御される。すなわち、この値はユーザによるプログラムの可能な記憶域、例えば、MMU更新レジスタ204内などに格納可能である。
【0026】
図12には、メッセージの物理アドレスフィールド及び仮想アドレスフィールドなど、デバッグメッセージの特定のフィールドを圧縮して、例えば、図10、11の圧縮されている物理アドレス及び圧縮されている仮想アドレスを取得するための方法の一実施形態を示す(一実施形態では、この圧縮は圧縮論理68によって実行される)。A1及びA2のラベルで示した2つのアドレスが提供される。アドレスA2は、デバッグメッセージを生成する際に用いられる現在のアドレス(アドレス変換トレースメッセージに含まれる物理アドレスまたは仮想アドレスなど)である。アドレスA1は、先のデバッグメッセージの生成に用いられた先のアドレス(それぞれ、先のアドレス変換トレースメッセージに含まれていた先の物理アドレスまたは仮想アドレスなど)である。アドレスA1及びA2の実際の値は単なる例であり、任意のアドレス値が用いられることが理解される。変更済みのアドレスは、アドレスA1、A2に論理演算を実行することによって生成される。この論理演算は、一実施形態では、排他的OR動作であり、対応するアドレスA1及びアドレスA2のそれぞれのビット位置に対し排他的論理和が行われる。得られる変更されたアドレスを図12に示す。ここでは、20個の先行するゼロが生成される。最下位のビットから最上位のバイナリ1ビットまでのアドレスの部分は、図12に示すようにグループ化され、このグループ化によって、デバッグメッセージにおいてアドレス(例えば、圧縮されている物理アドレスまたは圧縮されている仮想アドレス)として用いられる変更されたアドレスM1が形成され、多くのメッセージでは平均メッセージサイズはより小さくなる。先に送信されたメッセージから再生成可能な冗長な情報は除去される。一方、アドレスA2は、次に示すようにデバッガによってデバッグメッセージアドレスから再生成されてもよい。先のアドレスA1について、アドレスメッセージM1との排他的論理和が行われる。アドレスM1は、アドレスメッセージの前に必要な先行部分のゼロを追加することによって、32ビットのフォーマットに拡張して戻される。この排他的OR演算によってアドレスA2が生じる。すなわち、図12には、アドレスからデバッグメッセージアドレスへの変換と、その反対のデバッグメッセージアドレスからアドレスへの変換との実装について示す。なお、デバッグ動作が最初に有効化されるときに第1トレースメッセージにより送信される変更済みアドレスM1は、先行するゼロが除去されている完全なアドレスが含まれる。デバッガは、変更されたアドレスM1をメッセージの完全なアドレスに拡張する際の初期アドレスとして、全てのゼロからなる先のアドレス値を仮定することが可能である。
【0027】
図13には、本発明の一実施形態におけるアドレス変換トレースメッセージ88を示す。TLB_INV命令の実行に応答して、上述のように、アドレス変換トレースメッセージ88などのデバッグメッセージがデバッガ26によって生成される。従って、アドレス変換トレースメッセージ88は、TLB_INVベースのアドレス変換トレースメッセージとも呼ばれる。トレースメッセージ88は4つの示したフィールドを有する。フィールドの配置は任意である。TLB_INV仮想アドレスフィールドは、トレースメッセージ88の圧縮されていない仮想アドレスを含む。すなわち、このフィールドは有効アドレスの計算された値(RA、RBの値を用いて計算される)を含み、上述の通り、この計算された値を用いて、マッチングエントリを無効化するためにアドレス変換論理205におけるマッチングエントリを見出した(これに代えて、TLB_INV仮想アドレスも圧縮されてよい)。ソースプロセッサフィールドは、トレースメッセージ88に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コード(TCODE)フィールドは、トレースメッセージ88を特定の所定のフィールドフォーマットを有するアドレストレースメッセージとして識別する値を含む。図13の例では、アドレス変換トレースメッセージを表す値は「100001」である。イベント(ECODE)フィールドは、所定のフィールドフォーマットをさらに識別する値を含む。すなわち、該フィールドは、様々なタイプのアドレス変換トレースメッセージの間でさらに識別を行うために用いられる。図13の例では、示した形態のTLB_INVベースのアドレス変換トレースメッセージを表す値は、「1101」である。なお、必要に応じて、各フィールドに任意の数のビットが用いられてよく、メッセージが示したより多い情報を含んでも、少ない情報を含んでもよい。
【0028】
図8を参照して説明したように、分岐履歴は、プログラムトレースメッセージを生成しない特定の分岐(例えば、直接分岐)に用いられるアドレス変換のより優れたビューを提供するには有用である。しかしながら、それらのプログラムトレースメッセージを生成する実行された分岐(例えば、間接分岐)の間において仮想メモリマッピングの変化が生じるとき、分岐履歴フィールドは、そのマッピングにおける変化が発生した時点より後、正確な情報を提供しない。従って、一実施形態では、仮想アドレスマッピングに変更が生じた時点までの分岐履歴情報を含むプログラム関連付けメッセージが生成される。すなわち、プログラム関連付けメッセージは、アドレス変換論理205におけるエントリの変更に応答してアドレス変換トレースメッセージが生成されるときに、生成されることが可能である。例えば、プログラム関連付けメッセージは、TLBWEベースのアドレス変換メッセージが生成されるとき、生成されることが可能である。さらにまた、このプログラム関連付けメッセージは、分岐履歴が蓄積された時のマッピングの文脈によりデバッガ(外部の開発システム36など)がプログラムトレースの再構築を実行することを可能とするように、TLBWEベースのアドレス変換メッセージに関して、このプログラム関連付けメッセージの順序を適切に決定することが可能である。このようにして、プログラム関連付けメッセージは、分岐履歴情報と、最後のプログラムトレースメッセージが生成されてからTLBWE命令によってアドレス変換論理205のエントリが変更される時点までに実行された命令の命令カウント情報とを、適切に提供することが可能である。一実施形態において、アドレス変換トレースメッセージに対応するプログラム関連付けメッセージは、アドレス変換メッセージの前に提供される。
【0029】
図15には、アドレス変換論理205のエントリの変更に応答して生成されるアドレス変換トレースメッセージに関して生成され適切に順序を決定される分岐履歴区切を有するプログラム関連付けメッセージ92を示す。プログラム関連付けメッセージ92は、5つの示したフィールドを有する。フィールドの配置は任意である。分岐履歴フィールドは、複数の1ビット値を含み、最後のプログラムトレースメッセージ以来の直接分岐毎に、直接分岐が行われたか否かを示すように、対応する1ビット値のセットまたはクリアが行われる。この分岐履歴フィールドは、アドレス変換論理205のエントリが変更され、アドレス変換トレースメッセージ(TLBWEベースのアドレス変換トレースメッセージ84または86など)が生成される時点までに行われた各直接分岐について、この情報を含む。シーケンスカウントフィールド(命令カウントフィールドも呼ばれる)は、最後のプログラムトレースメッセージから、アドレス変換論理205のエントリが変更される時点までに実行される命令の数を表す値を含む。ソースプロセッサフィールドは、プログラム関連付けメッセージ92に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コードフィールドは、プログラム関連付けメッセージ92を、所定のフィールドフォーマットの履歴区切を有するプログラム関連付けメッセージとして識別する値を含む。図15の例では、示した形態のプログラムトレースメッセージを表す値は「100001」である。イベントコード(ECODE)フィールドは、プログラム関連付けメッセージ92の所定のフィールドフォーマットをさらに識別する値を含む。すなわち、このフィールドは、様々なタイプのプログラム関連付けトレースメッセージの間でさらに識別を行うために用いられる。例えば、このフィールドは、プログラム関連付けメッセージがマージされたメッセージであるか否を表すために用いられる(マージされたメッセージについては以下により詳細に説明する)。図15の例では、ECODEフィールドの値は、プログラム関連付けメッセージがマージされていないことを表し、これは、そのプログラム関連付けメッセージが1つのトリガソース(例えば、アドレス変換論理205の1つのエントリの変更)のみによって生じたことを意味する。なお、必要に応じて、各フィールドに任意の数のビットが用いられてよく、メッセージが示したより多い情報を含んでも、少ない情報を含んでもよい(代替の一実施形態では、分岐履歴フィールドまたは命令カウントフィールドのうちの1つのみがプログラム関連付けメッセージに含まれてもよい)。
【0030】
図14には、分岐履歴を有するアドレス変換トレースメッセージ90を示す。すなわち、図14の例では、アドレス変換論理205のエントリが変更されることに応答して、アドレス変換トレースメッセージ(例えば、TLBWEベースのアドレス変換トレースメッセージ)及びプログラム関連付けメッセージの両方を生成するのではなく、1つのアドレス変換トレースメッセージが生成されてもよく、このメッセージが分岐履歴情報及び命令カウントをさらに含む。すなわち、TLBWEベースのアドレス変換トレースメッセージ(トレースメッセージ84または86など)の情報は、アドレス変換論理205のエントリの変更の時点までの、分岐履歴情報、命令カウント情報、またはその両方をさらに含んでもよい。一実施形態において、アドレス変換トレースメッセージ90は、メッセージサイズを低減するために、変換メッセージ84など、フィールド圧縮されたTLBWEベースのアドレス変換トレースメッセージのフィールドを含む。例えば、サイズの低減は、例えば、生成メッセージがメッセージFIFO70内に適切に入るように必要とされる場合がある。すなわち、TSIZフィールド及びTIDフィールドは、このタイプの履歴区切を有するアドレス変換トレースメッセージを含まないことが可能である。
【0031】
図14に示した実施形態では、トレースメッセージ90は7つの示したフィールドを有する。フィールドの配置は任意である。圧縮されている物理アドレスフィールドは、トレースメッセージ90の物理アドレスを圧縮形態で含む。すなわち、このフィールドは、トレースメッセージの生成をトリガした(アドレス変換論理205の)TLBの変更されているエントリの物理アドレスの圧縮バージョンを表す。圧縮されている仮想アドレスフィールドは、トレースメッセージ90の仮想アドレスを圧縮形態で含む。すなわち、このフィールドは、変更されているエントリの仮想アドレスの圧縮バージョンを表す。分岐履歴フィールドは複数の1ビット値を含み、最後のプログラムトレースメッセージ以来の直接分岐毎に、直接分岐が行われたか否かを示すように、対応する1ビット値のセットまたはクリアが行われる。この分岐履歴フィールドは、アドレス変換論理205のエントリが変更され、したがってトレースメッセージ90の生成のトリガが行われる時点までに行われた各直接分岐について、この情報を含む。シーケンスカウントフィールドは、最後のプログラムトレースメッセージから、アドレス変換論理205のエントリが変更される時点までに実行される命令の数を表す値を含む。ソースプロセッサフィールドは、トレースメッセージ90に関連付けられているプロセッサを識別する値を含む。このフィールド情報は、マルチプロセッサシステムにおいて有用である。転送コード(TCODE)フィールドは、トレースメッセージ90を特定の所定のフィールドフォーマットを有するアドレス変換トレースメッセージとして識別する値を含む。図14の例では、アドレス変換トレースメッセージを表す値は「100001」である。イベントコード(ECODE)フィールドは、所定のフィールドフォーマットをさらに識別する値を含む。すなわち、該フィールドは、様々なタイプのアドレス変換トレースメッセージの間でさらに識別を行うために用いられる。図14の例では、ECODEフィールドの値は、示した形態の履歴区切を有するアドレス変換トレースメッセージを表す。なお、必要に応じて、各フィールドに任意の数のビットが用いられてよく、メッセージが示したより多い情報を含んでも、少ない情報を含んでもよい。従って、トレースメッセージ90など履歴区切を有するトレースメッセージの生成により、別個のプログラム関連付けメッセージ(プログラム関連付けメッセージ92など)を生成する必要はない。
【0032】
一実施形態では、アドレス変換論理205においてマッピングの変化が生じる時点において履歴区切付きのプログラム関連付けメッセージ92とアドレス変換トレースメッセージとを提供するか否か、または履歴区切付きの1つのアドレス変換トレースメッセージ90を提供するか否かに関する決定は、メッセージの最大サイズを限定するようにフィールド圧縮が発生可能であるか否かに基づく。優勢値がアドレス変換の変更において存在する場合、一実施形態では、履歴区切を有する1つのアドレス変換トレースメッセージ90が生成される。優勢値が存在しない場合、TSIZ及び/またはTID情報を外部の開発システム36に提供することが必要であり、この決定は、履歴区切を有するプログラム関連付けメッセージ(メッセージ92など)及びアドレス変換トレースメッセージ(メッセージ86など)の両方を送るように行われる。一実施形態では、フィールド圧縮されておらず履歴区切を有する1つのアドレス変換トレースメッセージはメッセージFIFO70のエントリのサイズを超えるので、最適FIFOより大きなFIFOを必要とする。メッセージ圧縮が履歴区切を有する1つのアドレス変換トレースメッセージを所定のメッセージビット長さに入れるのに適切であるか否かに基づいて、履歴区切メッセージを有するプログラム関連付けメッセージ92を選択的に生成することによって、いくつかの実施形態では、大半のメッセージはアドレス変換トレースメッセージ86及び90より少ないビットしか必要とせず、またFIFOの記憶容量の相当な部分は所与のエントリ内において使用されていないので、メッセージFIFO70におけるエントリの幅の最適化を実行することが可能である。FIFO70におけるエントリの数を増加させつつ、エントリの幅を狭くする、より優れた最適化が可能である。なお、幾つかの実施形態では、所定の優勢値を含むためアドレス変換トレースメッセージから1つ以上のフィールドが除去できるか否かの判定は、1つの履歴区切付きアドレス変換トレースメッセージと、履歴区切付きプログラム関連付けメッセージおよび履歴区切なしアドレス変換トレースメッセージの両方との間で選択を行うために用いられる。他の実施形態では、追加の要因(圧縮されている仮想アドレス及び圧縮されている物理アドレスフィールドのうちの一方または両方の圧縮の程度など)が、最適なメッセージ決定戦略を判定するために用いられる。
【0033】
一実施形態において、追加のトリガイベント(アドレス変換論理205のエントリの変更によって生じる仮想メモリマッピングの変化に加えて)によって、プログラム関連付けメッセージ(PCM)の必要が生じ、このPCMによってトリガイベントの時点までの分岐履歴及びシーケンスカウント(すなわち、命令カウント)が提供される。一実施形態において、プロセッサ42は、通常の固定長の命令セット及び代替の可変長エンコード(VLE)命令セットなど、ユニークなバイナリ符号化による複数の命令セットを透明性に実行することが可能である。一実施形態において、実行中の命令セットは、1つの命令ページ内において一定であるが、メモリの異なるページにおいて異なることが可能であり、従って、外部デバッガによる物理メモリに格納されるバイナリ値の解釈は、所与のページに存在する命令セットについての正確な知識に依存する。例えば、プロセッサ42がページ境界を超えるとき、VLE命令のシーケンス内外への実行モードの切替が生じ、実行命令カウントと2つのモードの動作間の履歴情報とを有効に分けるPCMが生成されるので、実行モードの切替の発生時点までの分岐履歴及びシーケンスカウントを提供するためにプログラム関連付けメッセージが必要となる。また、別の例において、履歴モードのプログラムトレースを用いるとき(例えば、トレースメッセージ81のようなトレースメッセージを生成するときなど)、直接分岐によってVLE命令の内外の実行モード切替が生じるときには、PCMも生成される。これらのPCMタイプのトリガに加えて、所定の命令マスクの達成のためにプログラムトレースメッセージがマスクされるとき、または一定の所定のプロセッサ42の例外または他のシステムイベントがデータ処理システム10内で発生するとき、別の例が生じる。これらの場合、生じ得るそれらのイベントの各々のためにプログラム関連付けメッセージを生成する(仮想マッピングにおける変化が実行モードの切替を生じるページ境界を越えるのと同時に発生する場合など)のではなく、両方のトリガイベントを表す1つのプログラム関連付けメッセージが生成されることが可能である。この例では、図15のプログラム関連付けメッセージ92のフォーマットなど、マージされたメッセージ(すなわち、複数のトリガイベントによって生成されるメッセージ)を示すためにECODEフィールドの値が用いられるフォーマットが生成されることが可能である。この場合、異なるECODE値は、単にプログラム関連付けメッセージがマージされたプログラム関連付けメッセージであるか否かを示すことが可能であり、マージされている場合、さらにどのタイプのトリガによってプログラム関連付けメッセージが生成したかを示すことが可能である。
【0034】
以上、効率的かつリアルタイムでのデバッグアドレス指定を有するデータ処理システムが提供されたことが理解される。アドレス変換論理205内のエントリの変更または無効化に応答してアドレス変換トレースメッセージを生成することによって、デバッグ回路26は、このタイプのアドレス変換情報を明示的に要求する必要はない。一実施形態では、アドレス変換トレースメッセージを生成させるには、エントリの1つ以上のフィールドのうちのいずれかの変更で十分である。このようにして、アドレス変換を使用するシステム(アドレスを変換するために1つ以上のTLBを使用するシステムなど)において、改良されたデバッグを実行することができる。さらにまた、仮想アドレスマッピングが変化する場合、分岐履歴情報及びシーケンスカウント情報に関してより正確な情報を提供するように、適切なタイミングでプログラム関連付けメッセージが生成される。また、可能な場合、デバッグメッセージの1つ以上のフィールドを圧縮すること、デバッグメッセージをフィールド圧縮すること、または複数のメッセージ(プログラム関連付けメッセージなど)をマージすることによって、効率がさらに改良される。アドレス変換マッピングに対する変化は、TLBの中身の変更用の制御命令のプロセッサ命令実行によって生じてもよく、代替の実施形態では、TLBミスが発生するときにテーブルウォークを実行して新たな変換を取得することなどによって、変換テーブル検索を介してTLBを自動的に維持するメモリ管理ユニットハードウェアによって生じてもよい。
【0035】
以下は本発明の様々な実施形態である。
項目1は、デバッグメッセージを生成するデータ処理システムにおいて、複数のデータ処理命令を実行するためのデータプロセッサと、データプロセッサに接続されており、情報を格納し、データプロセッサに該情報を与えるためのメモリと、データプロセッサに接続されており、アドレス変換トレースメッセージを含むデバッグメッセージを生成するためのデバッグ回路と、デバッグ回路及びデータプロセッサに接続されているメモリ管理ユニットであって、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのアドレス変換を備えるメモリ管理ユニットと、を備える。デバッグ回路は、メモリ管理ユニットに接続されており1つ以上のアドレス変換マッピングが変更されるときに通知を受信するためのメッセージ生成回路を備える。メッセージ生成回路は、アドレス変換マッピングの変換の検出に応答してアドレス変換トレースメッセージを生成するとともに、アドレス変換トレースメッセージをデバッグ回路の外部に提供する。項目2は、アドレス変換マッピングが更新される毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、項目1に記載のデータ処理システムである。項目3は、メッセージ生成回路は、アドレス変換トレースメッセージの1つ以上のフィールドを選択的に除去するための圧縮論理をさらに備える、項目2に記載のデータ処理システムである。項目4は、圧縮論理によって除去されるアドレス変換トレースメッセージの前記1つ以上のフィールドの各々は、そのフィールドについての所定の優勢値を含む、項目3に記載のデータ処理システムである。項目5は、前記所定の優勢値はデータ処理システムのユーザによってアクセス可能な記憶域に格納されており、データ処理システムのユーザによって制御される、項目4記載のデータ処理システムである。項目6は、除去される前記1つ以上のフィールドは、アドレス変換サイズフィールドであるか、プロセス識別子およびアドレス空間の一方を識別するためのアドレス変換識別フィールドである、項目3に記載のデータ処理システムである。項目7は、前記1つ以上のアドレス変換マッピングは、TLB(トランスレーション・ルックアサイド・バッファ)に格納される、項目1に記載のデータ処理システムである。項目8は、TLBがTLBエントリの書込を行うかエントリを無効とする毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、項目7に記載のデータ処理システムである。項目9は、デバッグ回路に接続されているデバッグ端子と、デバッグ端子に接続されており、デバッグ回路からアドレス変換トレースメッセージを受信するためのデバッガと、をさらに備える、項目1に記載のデータ処理システムである。
【0036】
項目10は、デバッグメッセージを生成するための方法において、データプロセッサを用いて複数のデータ処理命令を実行する工程と、アドレス変換トレースメッセージを含むデバッグメッセージを生成するためのデバッグ回路をデータプロセッサに接続する工程と、デバッグ回路及びデータプロセッサにメモリ管理ユニットを接続する工程であって、メモリ管理ユニットは、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのTLB(トランスレーション・ルックアサイド・バッファ)を備える前記工程と、TLBエントリが変更されるときを検出する工程と、TLBエントリの変更の検出に応答して、アドレス変換トレースメッセージを生成する工程と、デバッグ端子にアドレス変換トレースメッセージを提供する工程と、を備える方法である。項目11は、TLBがTLBエントリの書込みを行うかエントリを無効とする毎に、メモリ管理ユニットからメッセージ生成回路にインジケータ信号を送信する工程をさらに備える、項目10に記載の方法である。項目12は、アドレス変換トレースメッセージの1つ以上のフィールドを除去することによってアドレス変換トレースメッセージの長さを圧縮する工程をさらに含む、項目11に記載の方法である。項目13は、除去される前記1つ以上のフィールドをアドレス変換サイズフィールドか、プロセス識別子またはアドレス空間を識別するためのアドレス変換識別フィールドに関連付ける工程をさらに含む、項目12に記載の方法である。項目14は、アドレス変換トレースメッセージの前記1つ以上のフィールドの各々に所定の優勢値を関連付ける工程と、前記1つ以上のフィールドについて所定の優勢値が存在する場合にのみ、同1つ以上のフィールドを除去する工程と、をさらに含む、項目12に記載の方法である。項目15は、データ処理システムのユーザによって前記所定の優勢値を制御する工程と、ユーザによるアクセスの可能な複数のレジスタのうちの1つ以上に前記所定の優勢値を格納するステップと、をさらに含む、項目14に記載の方法である。
【0037】
項目16は、データ処理システムにおいて、データ処理システムを制御するためのグローバル制御回路と、グローバル制御回路に接続されているデータプロセッサであって、命令デコーダに接続されている命令フェッチユニットを備え、命令デコーダは1つ以上の実行ユニットに接続されており複数のデータ処理命令を実行するための命令デコーダである、データプロセッサと、グローバル制御回路及びデータプロセッサに接続されているメモリ管理ユニットであって、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのアドレス変換論理を備えるメモリ管理ユニットと、メモリ管理ユニットをグローバル相互接続部とのインタフェースを行うためのバスインタフェースユニットと、グローバル相互接続部に接続されており、情報を格納し、データプロセッサとの間で情報の提供を行うためのメモリと、グローバル制御回路及びメモリ管理ユニットに接続されているデバッグ回路であって、アドレス変換トレースメッセージを含むデバッグメッセージを生成するデバッグ回路と、を備える。デバッグ回路は、メモリ管理ユニットに接続されており1つ以上のアドレス変換マッピングが変更されるときに通知を受信するためのメッセージ生成回路を備える。メッセージ生成回路は、アドレス変換マッピングの変換の検出に応答してアドレス変換トレースメッセージを生成するとともに、アドレス変換トレースメッセージをデバッグ回路の外部に提供する。項目17は、メッセージ生成回路は、アドレス変換トレースメッセージの1つ以上のフィールドを選択的に除去するための圧縮論理をさらに備える、項目16に記載のデータ処理システムである。項目18は、圧縮論理によって除去されるアドレス変換トレースメッセージの前記1つ以上のフィールドの各々は、そのフィールドについての所定の優勢値を含む、項目17に記載のデータ処理システムである。項目19は、前記所定の優勢値はデータ処理システムのユーザによってアクセス可能な記憶域に格納されており、データ処理システムのユーザによって制御される、項目18に記載のデータ処理システムである。項目20は、1つ以上のアドレス変換マッピングはTLB(トランスレーション・ルックアサド・バッファ)に格納され、TLBがTLBエントリの書込を行うかエントリを無効とする毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、項目16に記載のデータ処理システムである。

【特許請求の範囲】
【請求項1】
デバッグメッセージを生成するデータ処理システムにおいて、
複数のデータ処理命令を実行するためのデータプロセッサと、
データプロセッサに接続されており、情報を格納し、データプロセッサに該情報を与えるためのメモリと、
データプロセッサに接続されており、アドレス変換トレースメッセージを含むデバッグメッセージを生成するためのデバッグ回路と、
デバッグ回路及びデータプロセッサに接続されているメモリ管理ユニットであって、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのアドレス変換論理を備えるメモリ管理ユニットと、を備え、
デバッグ回路は、メモリ管理ユニットに接続されており1つ以上のアドレス変換マッピングが変更されるときに通知を受信するためのメッセージ生成回路を備え、メッセージ生成回路は、アドレス変換マッピングの変換の検出に応答してアドレス変換トレースメッセージを生成するとともに、アドレス変換トレースメッセージをデバッグ回路の外部に提供する、データ処理システム。
【請求項2】
アドレス変換マッピングが更新される毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、請求項1に記載のデータ処理システム。
【請求項3】
メッセージ生成回路は、
アドレス変換トレースメッセージの1つ以上のフィールドを選択的に除去するための圧縮論理をさらに備える、請求項2に記載のデータ処理システム。
【請求項4】
圧縮論理によって除去されるアドレス変換トレースメッセージの前記1つ以上のフィールドの各々は、そのフィールドについての所定の優勢値を含む、請求項3に記載のデータ処理システム。
【請求項5】
前記所定の優勢値はデータ処理システムのユーザによってアクセス可能な記憶域に格納されており、データ処理システムのユーザによって制御される、請求項4に記載のデータ処理システム。
【請求項6】
除去される前記1つ以上のフィールドは、アドレス変換サイズフィールドであるか、プロセス識別子およびアドレス空間の一方を識別するためのアドレス変換識別フィールドである、請求項3に記載のデータ処理システム。
【請求項7】
前記1つ以上のアドレス変換マッピングは、TLB(トランスレーション・ルックアサイド・バッファ)に格納される、請求項1に記載のデータ処理システム。
【請求項8】
TLBがTLBエントリの書込を行うかエントリを無効とする毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、請求項7に記載のデータ処理システム。
【請求項9】
デバッグ回路に接続されているデバッグ端子と、
デバッグ端子に接続されており、デバッグ回路からアドレス変換トレースメッセージを受信するためのデバッガと、をさらに備える、請求項1に記載のデータ処理システム。
【請求項10】
デバッグメッセージを生成するための方法において、
データプロセッサを用いて複数のデータ処理命令を実行する工程と、
アドレス変換トレースメッセージを含むデバッグメッセージを生成するためのデバッグ回路をデータプロセッサに接続する工程と、
デバッグ回路及びデータプロセッサにメモリ管理ユニットを接続する工程であって、メモリ管理ユニットは、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのTLB(トランスレーション・ルックアサイド・バッファ)を備える前記工程と、
TLBエントリが変更されるときを検出する工程と、
TLBエントリの変更の検出に応答して、アドレス変換トレースメッセージを生成する工程と、
デバッグ端子にアドレス変換トレースメッセージを提供する工程と、を備える方法。
【請求項11】
TLBがTLBエントリの書込みを行うかエントリを無効とする毎に、メモリ管理ユニットからメッセージ生成回路にインジケータ信号を送信する工程をさらに備える、請求項10に記載の方法。
【請求項12】
アドレス変換トレースメッセージの1つ以上のフィールドを除去することによってアドレス変換トレースメッセージの長さを圧縮する工程をさらに含む、請求項11に記載の方法。
【請求項13】
除去される前記1つ以上のフィールドをアドレス変換サイズフィールドか、プロセス識別子またはアドレス空間を識別するためのアドレス変換識別フィールドに関連付ける工程をさらに含む、請求項12に記載の方法。
【請求項14】
アドレス変換トレースメッセージの前記1つ以上のフィールドの各々に所定の優勢値を関連付ける工程と、
前記1つ以上のフィールドについて所定の優勢値が存在する場合にのみ、同1つ以上のフィールドを除去する工程と、をさらに含む、請求項12に記載の方法。
【請求項15】
データ処理システムのユーザによって前記所定の優勢値を制御する工程と、
ユーザによるアクセスの可能な複数のレジスタのうちの1つ以上に前記所定の優勢値を格納するステップと、をさらに含む、請求項14に記載の方法。
【請求項16】
データ処理システムにおいて、
データ処理システムを制御するためのグローバル制御回路と、
グローバル制御回路に接続されているデータプロセッサであって、命令デコーダに接続されている命令フェッチユニットを備え、命令デコーダは1つ以上の実行ユニットに接続されており複数のデータ処理命令を実行するための命令デコーダである、データプロセッサと、
グローバル制御回路及びデータプロセッサに接続されているメモリ管理ユニットであって、アドレス変換を実行して仮想形態と物理形態との間でアドレスを変換するためのアドレス変換論理を備えるメモリ管理ユニットと、
メモリ管理ユニットをグローバル相互接続部とのインタフェースを行うためのバスインタフェースユニットと、
グローバル相互接続部に接続されており、情報を格納し、データプロセッサとの間で情報の提供を行うためのメモリと、
グローバル制御回路及びメモリ管理ユニットに接続されているデバッグ回路であって、アドレス変換トレースメッセージを含むデバッグメッセージを生成するデバッグ回路と、を備え、
デバッグ回路は、メモリ管理ユニットに接続されており1つ以上のアドレス変換マッピングが変更されるときに通知を受信するためのメッセージ生成回路を備え、メッセージ生成回路は、アドレス変換マッピングの変換の検出に応答してアドレス変換トレースメッセージを生成するとともに、アドレス変換トレースメッセージをデバッグ回路の外部に提供する、データ処理システム。
【請求項17】
メッセージ生成回路は、
アドレス変換トレースメッセージの1つ以上のフィールドを選択的に除去するための圧縮論理をさらに備える、請求項16に記載のデータ処理システム。
【請求項18】
圧縮論理によって除去されるアドレス変換トレースメッセージの前記1つ以上のフィールドの各々は、そのフィールドについての所定の優勢値を含む、請求項17に記載のデータ処理システム。
【請求項19】
前記所定の優勢値はデータ処理システムのユーザによってアクセス可能な記憶域に格納されており、データ処理システムのユーザによって制御される、請求項18に記載のデータ処理システム。
【請求項20】
1つ以上のアドレス変換マッピングはTLB(トランスレーション・ルックアサド・バッファ)に格納され、TLBがTLBエントリの書込を行うかエントリを無効とする毎に、メモリ管理ユニットはメッセージ生成回路にインジケータ信号を送信する、請求項16に記載のデータ処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公表番号】特表2012−518234(P2012−518234A)
【公表日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−551086(P2011−551086)
【出願日】平成22年1月22日(2010.1.22)
【国際出願番号】PCT/US2010/021780
【国際公開番号】WO2010/096233
【国際公開日】平成22年8月26日(2010.8.26)
【出願人】(504199127)フリースケール セミコンダクター インコーポレイテッド (806)
【Fターム(参考)】