(57)【特許請求の範囲】
【請求項１】
処理動作を実行し、メモリにアクセスするように構成された処理回路であって、前記処理回路は、仮想マシン識別子によってそれぞれ識別された複数の仮想マシンのうちの１つとして機能するようにプログラム可能であり、各前記仮想マシンは、コンテキスト識別子によってそれぞれ識別された複数のコンテキストのうちの１つにおいて機能し、各前記コンテキストは、一連のプログラム命令を実行し、各前記プログラム命令は、１つ以上の関連するメモリアドレスを有する前記処理回路と、
診断動作をその上で実行するように前記処理回路に連結された診断回路と、
前記処理回路および前記診断回路に連結され、前記仮想マシン識別子、前記コンテキスト識別子、および前記１つ以上の関連するメモリアドレスのうちの少なくとも１つの現在値に応答して、前記診断回路をトリガして前記診断動作を実行する診断制御回路と、
を備え、
前記診断制御回路は、前記仮想マシン識別子、前記コンテキスト識別子、及び前記１つ以上の関連するメモリアドレスのうちの少なくとも１つ、の選択可能な組み合わせに応じて前記診断回路をトリガし、前記診断動作を実行させるように設定され、
前記診断制御回路は、状態認識ブレークポイントを具備し、該状態認識ブレークポイントは、
前記コンテキスト識別子の現在値と所定のコンテキスト値を比較するコンテキスト比較を実施するように構成されたコンテキスト比較器と、
前記仮想マシン識別子の現在値と所定の仮想マシン値を比較する仮想マシン比較を実施するように構成された仮想マシン比較器と、
ブレークポイント制御値を格納するように構成されているブレークポイント制御レジスタと、
前記診断動作を実施するために前記診断回路をトリガするための結果信号を出力するように構成されているタイプロジックと、
を具備し、
前記ブレークポイント制御値の第１の値に応答して、前記タイプロジックは、前記コンテキスト比較に依存している前記結果信号を決定するように構成され、
前記ブレークポイント制御値の第２の値に応答して、前記タイプロジックは、前記仮想マシン比較に依存している前記結果信号を決定するように構成され、
前記ブレークポイント制御値の第３の値に応答して、前記タイプロジックは、前記コンテキスト比較と前記仮想マシン比較の双方に依存する前記結果信号を決定するように構成されていることを特徴とするデータを処理するための装置。
【請求項２】
前記診断回路は、
デバッグモードに入るように前記処理回路をトリガするステップ、
トレースモジュールのオン／オフを行うステップ、
トレースデータを内部トレースデバイスに出力するステップ、
トレースデータを外部トレースデバイスに出力するステップ、および
ソフトウェア例外をトリガするステップ、のうちの１つ以上を含む診断動作を実行することを特徴とする請求項１に記載の装置。
【請求項３】
前記１つ以上の関連するメモリアドレスのうちの少なくとも１つは、前記プログラム命令が格納されたメモリ内の位置を示すアドレスであることを特徴とする請求項１に記載の装置。
【請求項４】
前記１つ以上の関連するメモリアドレスのうちの少なくとも１つは、前記プログラム命令によってアクセスされたメモリ内の位置を示すアドレスであることを特徴とする請求項１に記載の装置。
【請求項５】
前記診断制御回路は、トリガポイント定義値を格納する複数のプログラム可能なレジスタを有し、前記診断制御回路は、前記複数のトリガポイント定義値と、前記仮想マシン識別子、前記コンテキスト識別子、および前記１つ以上の関連するメモリアドレスのうちの前記少なくとも１つの現在値との比較に応答して、前記診断動作を実行するように、前記診断回路をトリガすることを特徴とする請求項１に記載の装置。
【請求項６】
処理動作を行うための、およびメモリにアクセスするための処理手段であって、前記処理手段は、仮想マシン識別子によってそれぞれ識別された複数の仮想マシンのうちの１つとして機能するようにプログラム可能であり、各前記仮想マシンは、コンテキスト識別子によってそれぞれ識別された複数のコンテキストのうちの１つにおいて機能し、各前記コンテキストは、一連のプログラム命令を実行し、各前記プログラム命令は、１つ以上の関連するメモリアドレスを有する処理手段と、
診断動作をその上で実行するように前記処理手段に連結された診断手段と、
前記処理手段および前記診断手段に連結され、前記仮想マシン識別子の現在値に対応する診断制御手段であって、前記コンテキスト識別子および前記１つ以上の関連するメモリアドレスのうちの少なくとも１つは、前記診断手段をトリガして前記診断動作を実行するためのものである、診断制御手段と、
を備え、
前記診断制御手段は、前記仮想マシン識別子、前記コンテキスト識別子、及び前記１つ以上の関連するメモリアドレスのうちの少なくとも１つ、の選択可能な組み合わせに応じて前記診断手段をトリガし、前記診断動作を実行させるように構成され、
前記診断制御手段は、状態認識ブレークポイントを具備し、該状態認識ブレークポイントは、
前記コンテキスト識別子の現在値と所定のコンテキスト値を比較するコンテキスト比較を実施するように構成されたコンテキスト比較手段と、
前記仮想マシン識別子の現在値と所定の仮想マシン値を比較する仮想マシン比較を実施するように構成された仮想マシン比較手段と、
ブレークポイント制御値を格納するように構成されているブレークポイント制御レジスタ手段と、
前記診断動作を実施するために前記診断回路をトリガするための結果信号を出力するように構成されているタイプロジック手段と、
を具備し、
前記ブレークポイント制御値の第１の値に応答して、前記タイプロジック手段は、前記コンテキスト比較に依存している前記結果信号を決定するように構成され、
前記ブレークポイント制御値の第２の値に応答して、前記タイプロジック手段は、前記仮想マシン比較に依存している前記結果信号を決定するように構成され、
前記ブレークポイント制御値の第３の値に応答して、前記タイプロジック手段は、前記コンテキスト比較と前記仮想マシン比較の双方に依存する前記結果信号を決定するように構成されていることを特徴とするデータを処理するための装置。
【請求項７】
仮想マシン識別子によってそれぞれ識別された複数の仮想マシンのうちの１つとして機能するようにプログラム可能な処理回路を使用して、処理動作およびメモリへのアクセスを実行するステップであって、各前記仮想マシンは、コンテキスト識別子によってそれぞれ識別された複数のコンテキストのうちの１つにおいて機能し、各前記コンテキストは、一連のプログラム命令を実行し、各前記プログラム命令は、１つ以上の関連するメモリアドレスを有するステップと、
前記処理回路に連結された診断回路を使用して診断動作を実行するステップと、
診断制御回路が、前記仮想マシン識別子の現在値、前記コンテキスト識別子、および前記１つ以上の関連するメモリアドレスのうちの少なくとも１つの現在値に応答して、前記診断動作を実行するように、前記診断回路をトリガするステップと、
を含み、
前記診断回路は、前記診断動作を実行するために、前記仮想マシン識別子、前記コンテキスト識別子、及び前記１つ以上の関連するメモリアドレスのうちの少なくとも１つ、の選択可能な組み合わせに応じてトリガされ、
前記診断制御回路は、状態認識ブレークポイントを具備し、該状態認識ブレークポイントは、
前記コンテキスト識別子の現在値と所定のコンテキスト値を比較するコンテキスト比較を実施するように構成されたコンテキスト比較器と、
前記仮想マシン識別子の現在値と所定の仮想マシン値を比較する仮想マシン比較を実施するように構成された仮想マシン比較器と、
ブレークポイント制御値を格納するように構成されているブレークポイント制御レジスタと、
前記診断動作を実施するために前記診断回路をトリガするための結果信号を出力するように構成されているタイプロジックと、
を具備し、
前記ブレークポイント制御値の第１の値に応答して、前記タイプロジックは、前記コンテキスト比較に依存している前記結果信号を決定するように構成され、
前記ブレークポイント制御値の第２の値に応答して、前記タイプロジックは、前記仮想マシン比較に依存している前記結果信号を決定するように構成され、
前記ブレークポイント制御値の第３の値に応答して、前記タイプロジックは、前記コンテキスト比較と前記仮想マシン比較の双方に依存する前記結果信号を決定するように構成されていることを特徴とするデータを処理するための方法。
【請求項８】
前記診断動作は、
デバッグモードに入るように前記処理回路をトリガするステップ、
トレースモジュールのオン／オフを行うステップ、
トレースデータを内部トレースデバイスに出力するステップ、
トレースデータを外部デバイスに出力するステップ、および
ソフトウェア例外をトリガするステップ、のうちの１つ以上を含むことを特徴とする請求項７に記載のデータを処理するための方法。
【請求項９】
前記１つ以上の関連するメモリアドレスのうちの１つは、前記プログラム命令が格納されたメモリ内の位置を示すアドレスであることを特徴とする請求項７に記載のデータを処理するための方法。
【請求項１０】
前記１つ以上の関連するメモリアドレスのうちの１つは、前記プログラム命令によってアクセスされたメモリ内の位置を示すアドレスであることを特徴とする請求項７に記載のデータを処理するための方法。
【請求項１１】
前記トリガするステップは、複数のトリガポイント定義値と、前記仮想マシン識別子、前記コンテキスト識別子、および前記１つ以上の関連するメモリアドレスのうちの前記少なくとも１つの現在値との比較に応答して、前記診断動作を実行するように、前記診断回路をトリガすることを特徴とする請求項７に記載のデータを処理するための方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、一連のプログラム命令の実行の分析を容易にするための診断機構を提供する、データ処理システムに関する。
【背景技術】
【０００２】
データ処理装置では、例えばデータ処理システムの開発中に使用することができる、診断動作を行うための機構を提供することが有用である。提供できる１つの機構は、所定のイベントが検出されたときに、診断動作を実行させるトリガポイントを構成するものである。例えば、メモリ内の所定のアドレスからプログラム命令が取り込まれたときに、診断動作がトリガされるように、ブレークポイントを設定することができる。別様には、または加えて、プログラム命令がメモリ内の所定のアドレスにアクセスしたときに、診断動作をトリガするように、ウォッチポイントを設定することができる。
【０００３】
データ処理装置では、プロセッサによって実行される一連のプログラム命令は、一般的にメモリ内に格納される。一部のシステムでは、プロセッサは、コンテキストとして知られる複数の状態で動作することができ、各コンテキストは、順々に実行される一連のプログラム命令で構成される。このようなシステムの一例は、ＡＲＭ  Ｌｉｍｉｔｅｄ  ｏｆ  Ｃａｍｂｒｉｄｇｅによって作成されたプロセッサであり、コンテキストは、コンテキスト識別子によって識別され、そのうちの８ビットを、アプリケーション空間識別子（ａｐｐｌｉｃａｔｉｏｎ  ｓｐａｃｅ  ｉｄｅｎｔｉｆｉｅｒ：ＡＳＩＤ）タグとして使用して、最高２５６の処理のうちの１つを識別する。仮想アドレス指定を使用したシステムでは、異なるコンテキストは、仮想アドレス空間を共有し、ＡＳＩＤは、異なるコンテキスト内の同じ仮想アドレスにおいてデータ同士を差別化する方法を提供する。
【０００４】
コンテキスト認識のトリガポイントを提供することが知られており、プロセッサの現在のコンテキストのコンテキスト識別子に応答する様式で、診断動作の実行をトリガする。これらのコンテキスト認識のトリガポイントは、上述したアドレス認識のトリガポイントにリンクさせることができるので、診断動作は、所定のアドレスがアクセスされて、所定のコンテキストがシステムの現在の状態に一致したときにだけトリガされる。
【０００５】
プロセッサは、それ自体の、または別のマシンの特徴を模写するように、仮想マシンとして機能するようにプログラムすることができる。
【発明の概要】
【課題を解決するための手段】
【０００６】
一実施形態によれば、本発明は、データを処理するための装置であって、処理動作を実行し、メモリにアクセスするように構成された処理回路であって、該処理回路は、仮想マシン識別子によってそれぞれ識別された複数の仮想マシンのうちの１つとして機能するようにプログラム可能であり、各仮想マシンは、コンテキスト識別子によってそれぞれ識別された複数のコンテキストのうちの１つにおいて機能し、各コンテキストは、一連のプログラム命令を実行し、各プログラム命令は、１つ以上の関連するメモリアドレスを有する処理回路と、
診断動作をその上で実行するように該処理回路に連結された診断回路と、
該処理回路および該診断回路に連結され、該仮想マシン識別子、該コンテキスト識別子、および該１つ以上の関連するメモリアドレスのうちの少なくとも１つの現在値に応答して、該診断回路をトリガして該診断動作を実行する診断制御回路とを備える、装置を提供する。
【０００７】
仮想マシン機能を備えたデータ処理装置では、各仮想マシンは、複数のコンテキストにおいて機能することができ、該コンテキストのそれぞれは、１つ以上のメモリアドレスに関連付けられた一連のプログラムを実行することができる。本発明では、１つの仮想マシンのコンテキスト識別子およびプログラム命令のアドレスが、別の仮想マシンのそれらと不適切に重複する場合があり、したがって、仮想マシン認識デバッグ機構が必要であることを認識している。仮想マシン識別子、コンテキスト識別子、およびメモリアドレスのうちの少なくとも１つの現在値に応答して診断回路をトリガすることによって、例えば、現在のプログラム命令に関連付けられたメモリアドレスおよびコンテキスト識別子が、トリガポイントが設定された別の仮想マシンによって使用されたメモリアドレスおよびコンテキスト識別子と同じであった場合に、診断動作が誤ってトリガされないようにする。これにより、仮想マシン内でのより効率的なプロセスの分析が可能となる。
【０００８】
診断回路は、多数の異なる種類の診断動作を実行することができるものと理解されよう。なお、特に有用な動作には、デバッグモードに入るように処理回路をトリガするステップ、トレースモジュールのオン／オフを行うステップ、トレースデータを内部または外部トレースデバイスに出力するステップ、およびソフトウェア例外をトリガするステップが挙げられる。これらの動作は、データ処理装置によって実行される一連のプログラム命令の分析を補助する。
【０００９】
１つ以上の関連するメモリアドレスのうちの少なくとも１つは、プログラム命令が格納されたメモリ内の位置のアドレスとすることができる。このように、所定のアドレスからプログラム命令が実行されたときに、診断回路をトリガして診断動作を実行することができる。
【００１０】
さらに、１つ以上の関連するメモリアドレスのうちの少なくとも１つは、プログラム命令によってアクセスされたメモリ内の位置のアドレスとすることができる。このように、例えば、所定のメモリアドレスに対する読み込みが生じたとき、および／または所定のメモリアドレスに対する書き込みが生じたときに、診断回路をトリガして診断動作を実行することができる。
【００１１】
当業者は、１つ以上の関連するメモリアドレスは、物理または仮想アドレスとすることができるものと理解されよう。
【００１２】
また、診断制御回路は、トリガポイント定義値を格納する複数のプログラム可能なレジスタを有することもでき、該診断制御回路は、該複数のトリガポイント定義値と、該仮想マシン識別子、該コンテキスト識別子、および該１つ以上の関連するメモリアドレスのうちの該少なくとも１つの現在値との比較に応答して該診断動作を実行するように、該診断回路をトリガする。
【００１３】
トリガポイント定義値は、それぞれブレークポイントまたはウォッチポイントを表し、これらはシステムのユーザによってプログラムされ、診断動作の実行をトリガする所定のイベントを定義することができる。これは、より柔軟かつ効率的な診断機構を提供する。仮想マシン識別子、コンテキスト識別子、およびメモリアドレスの値を、トリガポイント定義値と比較することによって、診断動作がトリガされたかどうか、処理回路の現在の状態を判断する。
【００１４】
別の実施形態によれは、本発明は、データを処理するための装置であって、
処理動作を行うための、およびメモリにアクセスするための処理手段であって、該処理手段は、仮想マシン識別子によってそれぞれ識別された複数の仮想マシンのうちの１つとして機能するようにプログラム可能であり、各仮想マシンは、コンテキスト識別子によってそれぞれ識別された複数のコンテキストのうちの１つにおいて機能し、各コンテキストは、一連のプログラム命令を実行し、各プログラム命令は、１つ以上の関連するメモリアドレスを有する処理手段と、
診断動作をその上で実行するように該処理手段に連結された診断手段と、
該処理手段および該診断手段に連結され、該仮想マシン識別子の現在値に対応する診断制御手段であって、該コンテキスト識別子および該１つ以上の関連するメモリアドレスのうちの少なくとも１つは、該診断手段をトリガして該診断動作を実行するためのものである、診断制御手段とを備える、装置を提供する。
【００１５】
更なる実施形態によれば、本発明は、データを処理するための方法であって、
仮想マシン識別子によってそれぞれ識別された複数の仮想マシンのうちの１つとして機能するようにプログラム可能な処理回路を使用して、処理動作およびメモリへのアクセスを実行するステップであって、各仮想マシンは、コンテキスト識別子によってそれぞれ識別された複数のコンテキストのうちの１つにおいて機能し、各コンテキストは、一連のプログラム命令を実行し、各プログラム命令は、１つ以上の関連するメモリアドレスを有するステップと、
該処理回路に連結された診断回路を使用して診断動作を実行するステップと、
該仮想マシン識別子の現在値、該コンテキスト識別子、および該１つ以上の関連するメモリアドレスのうちの少なくとも１つの現在値に応答して、該診断動作を実行するように、該診断回路をトリガするステップとを含む、データを処理するための方法を提供する。
【００１６】
本発明の別の実施形態によれば、データを処理するための装置であって、
処理動作を実行し、メモリにアクセスするように構成された処理回路であって、該処理回路は、複数の状態識別子のうちの少なくとも１つによってそれぞれ識別された複数の状態のうちの１つにおいて動作する処理回路と、
診断動作をその上で実行するように該処理回路に連結された診断回路と、
該処理回路および該診断回路に連結され、それぞれがトリガポイント定義値を格納する複数のプログラム可能なレジスタを有する診断制御回路であって、該診断制御回路は、該診断回路をトリガして該診断動作を実行するように、該複数のトリガポイント定義値の第１のサブグループのそれぞれと、該複数の状態識別子のうちの少なくとも１つの少なくとも一部で形成された、状態特徴値の現在値との比較に応答する診断制御回路と、
プログラム可能な比較選択値に応答して、該複数の状態識別子の一部が該状態特徴値を形成する、該トリガポイント定義値の第１のサブグループの全てを選択する、全体的な比較選択回路とを備える、装置が提供される。
【００１７】
データ処理装置は、複数の状態において動作することができ、各状態は、複数の識別子によって識別される。状態特徴値によって特徴付けられたシステムの現在の状態と比較されるトリガポイント定義値を格納する、複数のプログラム可能なレジスタを提供することによって、処理回路の状態に基づいて、診断回路をトリガして診断動作を実行することが可能である。状態特徴値は、複数の状態識別子のうちの少なくとも１つの少なくとも一部から形成される。全体的な比較選択回路を使用することで、ユーザは、状態識別子のどの部分が状態特徴値を形成するのかを設定することができる。これによって、トリガポイントに対するトリガ条件の設定における高い柔軟度を可能にする。また、本発明は、同じ組み合わせの識別子を、各トリガポイント定義値との比較にしばしば使用すること、および比較選択回路を各トリガポイント定義値に提供しなくてもよいことを実現する。したがって、状態識別子の組み合わせを使用して状態特徴値を形成するトリガポイント定義値の第１のサブグループの全てを選択する、全体的な比較選択を使用することによって、回路のオーバーヘッドの低減が達成される。
【００１８】
診断回路は、多数の異なる種類の診断動作を実行することができるものと理解されよう。なお、特に有用な動作には、デバッグモードに入るように処理回路をトリガするステップ、トレースモジュールのオン／オフを行うステップ、トレースデータを内部または外部トレースデバイスに出力するステップ、およびソフトウェア例外をトリガするステップが挙げられる。これらの動作は、データ処理装置によって実行される一連のプログラム命令の分析を補助する。
【００１９】
さらに、該処理回路は、仮想マシン識別子によってそれぞれ定義された複数の仮想マシンのうちの１つとして機能するようにプログラム可能であり、各仮想マシンは、少なくとも１つのコンテキスト識別子によってそれぞれ識別された、複数のコンテキストのうちの１つにおいて機能する。
【００２０】
仮想マシンによって、プロセッサは、それ自体または別のデータ処理装置の特徴を模写することができる。例えば、これによって、プロセッサは、複数の均質なマシンのイリュージョン（ｉｌｌｕｓｉｏｎ）を提供するか、または異なるプロセッサタイプをエミュレートすることができる。各仮想マシンは、複数のコンテキストのうちの１つにおいて機能することができ、各コンテキストによって、異なる組の機能を実行することができる。各仮想マシンおよびコンテキストは、それらのそれぞれの識別子によって識別することができる。
【００２１】
複数の状態識別子は、処理装置の状態を記述するあらゆる値を含むことができるものと理解されよう。なお、特に有用な状態識別子には、該仮想マシン識別子および該少なくとも１つのコンテキスト識別子が挙げられ、各状態は、該仮想マシン識別子および該少なくとも１つのコンテキスト識別子の組み合わせによって識別される。
【００２２】
仮想マシン識別子と少なくとも１つのコンテキスト識別子との組み合わせを使用して処理回路の状態を記述することによって、診断動作をトリガするための条件が処理回路の現在の状態に依存するように、トリガポイント定義値と、仮想マシン識別子のうちの少なくとも１つのうちの少なくとも一部とを比較するように、トリガポイントを構成することができる。
【００２３】
いくつかの実施形態では、該複数のコンテキストのそれぞれは、第１のコンテキスト識別子および第２のコンテキスト識別子のうちの少なくとも１つによって識別される。第２のコンテキスト識別子は、各コンテキストに固有である。既知のプロセッサでは、コンテキストは、単一タイプのコンテキスト識別子によって識別することができ、その一部は、アプリケーション空間識別子（ＡＳＩＤ）としても機能する。なお、ＡＳＩＤは、変換索引バッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ：ＴＬＢ）のフラッシングを回避するために使用され、これは、ＡＳＩＤのサイズを、プロセスごとに固有の値を収容する可能性のあるサイズよりも小さく制限することができる。その結果、いくつかのオペレーティングシステムは、ＡＳＩＤを再利用するので、各プロセスは、プロセスの期間全体を通じて固有のコンテキスト識別子を有する必要がなくなり、さらには、ハードウェアが応答するコンテキスト識別子の少なくとも一部は、各プロセスに対して固有のものとする必要がなくなる。各コンテキストに固有の第２のコンテキスト識別子を提供することによって、コンテキストを、正確に識別することができる。トリガポイント定義値と、第１のコンテキスト識別子との比較を停止させることも可能である。なお、第１および第２のコンテキスト識別子の両方によってコンテキストを識別できるようにすることによって、第１のコンテキスト識別子だけを使用するこれまでのプロセッサに対して書かれたレガシーコードを実行することができるように、処理装置を下位互換性のあるものとすることができる。
【００２４】
診断制御回路は、それぞれのトリガポイント制御値を格納する複数のプログラム可能な制御レジスタも有し、各トリガポイント制御値は、該トリガポイント定義値のうちの１つに関連付けられる。各トリガポイント制御値に、関連するプログラム可能な制御レジスタを提供することによって、後述するように、ユーザは、トリガポイント制御値が使用される方法を定義することができる。
【００２５】
第１の実施形態では、全体的な比較選択回路は、
該第１のコンテキスト識別子の現在値の全体、または
該第２のコンテキスト識別子の現在値の全体のうちの１つから形成されるべき、該状態特徴値を選択する。
【００２６】
本発明では、ユーザが、第１のコンテキスト識別子と比較すべきトリガポイント定義値のうちの一部、および第２のコンテキスト識別子と比較すべき他の定義値を必要とする可能性は低いものと認識する。しばしば、ユーザは、第１のコンテキスト識別子、または、例えば古いプロセッサに対して書かれたレガシーコードを処理する場合に、第２のコンテキスト識別子のいずれかの使用を望む。したがって、どのコンテキスト識別子を各トリガポイントに対して使用すべきかを、全体的に設定できるようにすることが好都合である。これは、プログラム可能な比較選択値の値を設定することによって行われる。
【００２７】
さらに、診断制御回路は、それぞれの仮想マシンのトリガポイント定義値を格納する第２の複数のプログラム可能な制御レジスタも有し、各仮想マシンのトリガポイント定義値は、該トリガポイント定義値の第１のサブグループおよび該トリガポイント制御値のうちのそれぞれ１つに関連付けられる。
【００２８】
トリガポイント定義値の第１のサブグループのうちの１つにそれぞれ関連付けられた、プログラム可能なレジスタの第２のグループを提供することによって、各トリガポイントは、コンテキスト認識およびマシン認識の両方とすることができる。仮想マシンのトリガポイント定義値は、トリガポイント定義値を格納するレジスタから別個のレジスタ内に提供されるので、仮想マシン識別子の全体、またはコンテキスト識別子のうちの１つの全体に応答して、診断動作の実行をトリガすることが可能である。
【００２９】
各仮想マシンのトリガポイント定義値に対して、該診断制御回路は、該診断回路をトリガして該診断動作を実行するように、該仮想マシンのトリガポイント定義値と、該仮想マシン識別子との比較に選択的に応答する。
【００３０】
このように、トリガポイント定義値と、状態特徴値（第１または第２のコンテキスト識別子のいずれかから選択される）との比較、および、選択された場合は、関連する仮想マシンのトリガポイント定義値と、仮想マシン識別子の現在値との比較の両方に応答して、診断動作をトリガすることができる。
【００３１】
各仮想マシンのトリガポイント定義値に対して、該診断制御回路が、該仮想マシンのトリガポイント定義値と、該仮想マシン識別子の該現在値との該比較に応答するかどうかを選択するように、該診断制御回路は、該仮想マシンのトリガポイント定義値に関連付けられた該トリガポイント制御値に応答する。したがって、ユーザは、トリガポイント制御値をプログラムして、仮想マシンのトリガポイント定義値と、仮想マシン識別子の現在値との比較が必要であるかどうかを選択することができる。
【００３２】
第２の実施形態では、該全体的な比較選択回路は、該第１のコンテキスト識別子の現在値、該第２のコンテキスト識別子の現在値、該仮想マシン識別子の現在値、およびマスキング値のうちの少なくとも１つの一部から形成されるべき、該状態特徴値を選択する。
【００３３】
仮想マシン識別子が比較に選択されたかどうかも全体的に設定されるので、これによって、回路のオーバーヘッドを低減することができる。仮想マシンのトリガポイント定義値を格納するための、いかなるレジスタも不要である。また、状態特徴値のうちの一部のビットがマスクされるように、マスク値が、状態特徴値の一部を形成できるようにすることによって、１つ以上の識別子の全長が、状態特徴値およびトリガポイント定義値の長さよりも短い場合であっても、１つ以上の識別子からの状態特徴値の形成を可能にする。
【００３４】
また、該プログラム可能な比較選択値は、複数のフィールドを有し、各フィールドは、該第１のコンテキスト識別子の該現在値、該第２のコンテキスト識別子の該現在値、該仮想マシン識別子の該現在値、および該マスキング値のうちのどれから、該状態特徴値の対応部分が選択されたのかを示す。
【００３５】
ユーザは、状態特徴値のうちの各部分が、状態識別子またはマスク値のうちの１つの一部から構成されるように、プログラム可能な比較選択値のフィールドをプログラムすることができる。これにより、高い柔軟度が可能となり、ユーザは、実行すべき診断動作をトリガするために、トリガポイント定義値との比較のための識別子の異なる組み合わせを設定することが可能となる。
【００３６】
本発明のいくつかの実施形態では、各コンテキストは、一連のプログラム命令を実行し、各プログラム命令が１つ以上の関連するメモリアドレスを有する。したがって、各コンテキストは、そのコンテキストに関連付けられた一連のプログラム命令を実行することによって、コンテキストが実行する関連する機能を有することができる。
【００３７】
さらに、該診断制御回路は、該診断回路をトリガして該診断動作を実行するように、該複数のトリガポイント定義値の第２のサブグループのそれぞれと、該１つ以上の関連するメモリアドレスとの比較に応答する。
【００３８】
トリガポイント定義値の第１のサブグループは、処理回路の現在の状態を特徴付ける状態特徴値と比較されるが、トリガポイント値の第２のサブグループは、１つ以上の関連するメモリアドレスのうちの１つと比較される。したがって、所定のメモリアドレスがアクセスされたときに、診断回路をトリガして診断動作を実行することができる。
【００３９】
１つ以上の関連するメモリアドレスのうちの１つは、プログラム命令が格納されたメモリ内の位置を示すアドレスとすることができる。このように、所定のメモリアドレスからプログラム命令が実行されたときに、診断回路をトリガして診断動作を実行することができる。
【００４０】
さらに、１つ以上の関連するメモリアドレスのうちの１つは、プログラム命令によってアクセスされたメモリ内の位置を示すアドレスとすることができる。このように、例えば、特定のメモリアドレスに対する読み込みが生じたとき、および／または所定のメモリアドレスに対する書き込みが生じたときに、診断回路をトリガして診断動作を実行することができる。
【００４１】
トリガポイント定義値の該第２のサブグループのうちの少なくとも１つは、メモリアドレスの所定の範囲を定義することができ、該診断制御回路は、該診断回路をトリガして該診断動作を実行するように、該１つ以上の関連するメモリアドレスのうちの該１つが、該メモリアドレスの所定の範囲内にあるかどうかに応答する。
【００４２】
トリガポイント定義値の該第２のサブグループのうちの少なくとも１つは、該所定のアドレス範囲の上限および下限を示す、一対のアドレス値を含むことができる。
【００４３】
別様には、トリガポイント定義値の該第２のサブグループのうちの少なくとも１つは、アドレス値とマスクとを含むことができ、該診断制御回路は、該アドレス値と、該マスクを使用して該１つ以上の関連するメモリアドレスのうちの該１つに、ビットごとのマスク動作を実行することによって得られたマスクされたアドレス値との比較に応答する。
【００４４】
該診断回路をトリガして該診断動作を実行するように、該診断制御回路が、該第１のトリガポイント定義値と、該状態特徴値との該比較、および該第２のトリガポイント定義値と、該１つ以上の関連するメモリアドレスのうちの該１つとの該比較の両方に応答するように、トリガポイント定義値の該第２のサブグループのそれぞれは、トリガポイント定義値の該第１のサブグループのうちの１つに選択的にリンクさせることができる。
【００４５】
このように、所定のアドレスが、トリガポイント定義値の第２のサブグループのうちの１つと一致し、状態特徴値が、第２のサブグループのトリガポイント定義値にリンクされたトリガポイント定義値の第１のサブグループのうちの１つに一致するように、メモリ内の所定のアドレスがアクセスされたときに、診断動作をトリガすることができる。したがって、関連するアドレス、コンテキスト識別子、および仮想マシン識別子のあらゆる組み合わせを使用して、診断回路をトリガして診断動作を実行することができる。
【００４６】
本発明の別の特徴では、トリガポイント定義値の該第２のサブグループのうちの２つ以上を、トリガポイント定義値の該第１のサブグループのうちの１つにリンクさせることができる。
【００４７】
その結果、第１のサブグループのコンテキスト／仮想マシン認識のトリガ値は、第２のサブグループの値を定義するアドレス認識のトリガ値ごとに定義する必要がなくなる。したがって、装置は、回路のオーバーヘッドの低減が可能である。
【００４８】
さらに、診断制御回路は、該トリガポイント制御値のそれぞれに応答して、該トリガポイント制御値に関連付けられた該トリガポイント定義値が、トリガポイント定義値の該第１のサブグループのメンバなのか、トリガポイント定義値の該第２のサブグループのメンバなのかを選択する。
【００４９】
これによって、ユーザは、どのトリガポイント定義値が第１のサブグループのメンバなのか、およびどのトリガポイント定義値が第２のサブグループのメンバなのかを選択することができる。これは、より大きな柔軟度をユーザに提供する。各コンテキスト／仮想マシン認識のトリガポイントは、それにリンクされた複数のアドレス認識のトリガポイントを有することができるので、概して、第２のサブグループ内のトリガポイント定義値は、第１のサブグループ内のものよりも大きいが、これは必ずしも生じるとは限らない。したがって、回路の複雑さを減じるには、プログラム可能なレジスタのうちのいくつかを、そのサブグループにそれぞれのトリガポイント定義値が属するように制限することができる。
【００５０】
更なる特徴では、診断制御回路は、該トリガポイント制御値のそれぞれに応答して、該トリガポイント制御値に関連付けられた該トリガポイント定義値が、該トリガポイント定義値の別の値にリンクされているかどうかを選択する。
【００５１】
このように、ユーザは、１つのトリガポイント定義値が別のトリガポイント定義値にリンクするように選択することができる。別様には、例えば、処理回路の現在の状態がどのようなものであるのかに関わらず、所定のアドレスがアクセスされたときに、診断動作がトリガされるように、トリガポイント定義値の第２のサブグループのうちの１つを設定できるように、トリガポイント定義値が、他のトリガポイント定義値にリンクされないように設定することができる。
【００５２】
別の特徴では、トリガポイント定義値の該第２のサブグループの各トリガポイント定義値に対して、該診断制御回路は、該第２のサブグループの該トリガポイント定義値に関連付けられた、該トリガポイント制御値に応答して、該トリガポイント定義値の第１のサブグループのうちのどれが、該第２のサブグループの該トリガポイント定義値にリンクされているのかを選択する。このように、ユーザは、各サブグループのトリガポイント定義値がリンクされる方法をプログラムすることができる。
【００５３】
また、診断制御回路は、該トリガポイント制御値にそれぞれ応答して、該診断回路をトリガして該診断動作を、
比較の結果が一致したときに実行するのか、または
比較の結果が一致しなかったときに実行するのかを選択する。
【００５４】
ほとんどの場合、ユーザは、例えば、システムまたは関連するアドレスのうちの１つの現在の状態が、トリガポイント定義値と一致したときには、トリガポイントが、診断動作をトリガすることを望むものと予想される。なお、コンテキスト識別値、または関連するアドレスのうちの１つがトリガポイント定義値と一致しなかったときに、実行すべき診断動作をトリガするトリガポイントを、ユーザが設定できるようにすることも可能である。例えば、これは、ユーザが、システムに、１つのアドレスを除く所定のコンテキスト内の全てのアドレスに対する診断動作をトリガすることを望んだ場合に、特に有用となる。比較の結果が不一致であったときに、診断動作をトリガすることをユーザが選択できなかった場合、本実施例では、ユーザは、診断動作が望まれないもの以外のアドレスのそれぞれに対して、トリガポイント定義値を設定しなければならない。これには、より大きな回路リソースが必要である。比較の結果が不一致であったときに、診断動作がトリガされるようにすることで、この問題に対処する。
【００５５】
また、該比較の結果は、仮想マシン識別子における不一致とすることができる。
【００５６】
更なる実施形態によれば、本発明は、データを処理するための装置であって、
処理動作を行うための、およびメモリにアクセスするための処理手段であって、該処理手段は、複数の状態識別子のうちの少なくとも１つによってそれぞれ識別された複数の状態のうちの１つにおいて動作する処理手段と、
診断動作をその上で実行するように該処理手段に連結された診断手段と、
該処理手段および該診断手段に連結され、それぞれのトリガポイント定義値を格納する複数のプログラム可能なレジスタを有する診断制御手段であって、該診断制御手段は、該診断手段をトリガして該診断動作を実行するように、該複数のトリガポイント定義値の第１のサブグループのそれぞれと、該複数の状態識別子のうちの少なくとも１つの少なくとも一部を形成する、状態特徴値の現在値とを比較する診断制御手段と、
プログラム可能な比較選択値に応答して、該複数の状態識別子の一部が該状態特徴値を形成する、トリガポイント定義値の該第１のサブグループの全てを選択する、全体的な比較選択手段とを備える、装置を提供する。
【００５７】
別の実施形態によれば、本発明は、データを処理するための方法であって、
複数の状態識別子のうちの少なくとも１つによってそれぞれ定義された複数の状態のうちの１つにおいて動作する処理回路使用して、処理動作およびメモリへのアクセスを実行するステップと、
該処理回路に連結された診断回路を使用して、該処理回路上で診断動作を実行するステップと、
複数のトリガポイント定義値の第１のサブグループのそれぞれと、該複数の状態識別子のうちの少なくとも１つの少なくとも一部で形成された状態特徴値の現在値との比較に応答して、該診断動作を実行するように該診断回路をトリガするステップと、
プログラム可能な比較選択値に応答して、該複数の状態識別子の一部が該状態特徴値を形成する、トリガポイント定義値の該第１のサブグループの全てを選択するステップとを含む、方法を提供する。
【００５８】
本発明の上述の、および他の目的、特徴、および利点は、添付図面とともに読み取られる例示的実施形態の以下の詳細な説明から明らかとなろう。
【図面の簡単な説明】
【００５９】
【図１】診断回路と診断制御回路とを含むデータ処理システムを示す概略図である。
【図２】診断回路をトリガして診断動作を行うための診断制御回路を示す概略図である。
【図３】ブレークポイント制御レジスタのタイプフィールドの可能な意味を示す図である。
【図４】全体的な比較選択回路の第１の例示的な一実施形態を示す概略図である。
【図５】第１の例示的な一実施形態のブレークポイント制御レジスタのタイプフィールドの可能な意味を示す図である。
【図６】全体的な比較選択回路の第２の例示的な一実施形態を示す概略図である。
【図７】比較選択値ＣＳＶ２がどのように第２の例示的な一実施形態内に使用されるかを示す図である。
【図８】組み合わせて、第２の例示的な一実施形態の状態特徴値を形成することができる、識別子の組み合わせのいくつかの例を示す図である。
【発明を実施するための形態】
【００６０】
図１は、プロセッサコア２とキャッシュメモリ４とを含むデータ処理システム１を概略的に示す図である。データ処理システム１は、メインメモリ６に連結される。データ処理システム１は、プロセッサコア２上で診断動作を実行するための診断回路８も含む。データ処理システム１内には、診断回路を制御するための、診断回路８に連結された診断制御回路１０も含まれる。診断制御回路１０は、プログラム可能な一連のレジスタ１２を有する。本技術分野の当業者は、実際には、データ処理システム１は、一般的に、異なる機能を実行する多数の更なる回路要素を含むが、簡潔にするために、図１にはこれらが示されていないものと理解されよう。
【００６１】
プロセッサコア２は、それ自体の機能を、または他のマシンの機能を複製するように、仮想マシンとして機能するようにプログラムしてもよい。各仮想マシンは、８ビット仮想マシン識別子（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｉｄｅｎｔｉｆｉｅｒ：ＶＭＩＤ）によって識別される。プロセッサコア２が現在エミュレートしている仮想マシンのＶＭＩＤは、データ処理システム１内の８ビットレジスタ（ＶＭＩＤＲ）内に格納することができる。
【００６２】
仮想マシンごとに、プロセッサコア２は、コンテキストとして知られている複数の状態で動作することができる。各コンテキストは、順々に実行される一連のプログラム命令に関連付けられ、また、３２ビットコンテキスト識別子（ＣＯＮＴＥＸＴＩＤ）によって識別される。プロセッサコア２が現在機能しているコンテキストのコンテキストＩＤは、３２ビットレジスタ（ＣＯＮＴＥＸＴＩＤＲ）内に格納される。仮想アドレス指定を使用したシステムでは、異なるコンテキストが、仮想アドレス空間を共有する。コンテキストＩＤの最下位８ビットは、アプリケーション空間識別子（ＡＳＩＤ）タグとしてプロセッサによって使用される。ＡＳＩＤは、例えば、変換索引バッファのエントリのために使用してもよい。
【００６３】
いくつかのオペレーティングシステムでは、ＡＳＩＤ値は再利用され、したがって、コンテキストの存続期間中には、複数の異なるＡＳＩＤ値を有することができ、各ＡＳＩＤ値は、単一のコンテキストに固有とはなり得ない。この理由から、各コンテキストに固有であるデバッグ固有の識別子（ＤＢＧＵＩＤ）が提供される。これは、いかなる多重定義手段も無い３２ビット値である。プロセッサコア２が現在機能しているコンテキストのＤＢＧＵＩＤは、３２ビットレジスタ（ＤＢＧＵＩＤＲ）内に格納される。オペレーティングシステムおよび診断制御回路１０は、このレジスタのあらゆる好適な値への設定において協働してもよい。
【００６４】
複数の状態識別子（ＶＭＩＤ、ＣＯＮＴＥＸＴＩＤ／ＡＳＩＤおよびＤＢＧＵＩＤ）を各仮想マシンおよび各コンテキストに提供することによって、プロセッサコア２の異なる状態を識別することができる。したがって、プロセッサコア２は、異なる仮想マシンおよび／またはコンテキスト内の同じ仮想アドレスで、データ同士を区別することができる。この１つの用途は、仮想的にアドレス指定を行った変換索引バッファが、コンテキストスイッチまたは仮想マシンスイッチがあるたびにフラッシュされないようにすることである。当業者は、他の識別子を使用して、システムの状態（例、スレッドＩＤ）を記述することもできると理解されよう。
【００６５】
診断回路８は、種々の診断動作を実行して、プロセッサコア２による一連のプログラム命令の実行を分析できるようにすることができる。これらの動作には、例えば、デバッグモードに入るためのプロセッサコア２のトリガ、トレースモジュール１１のオン／オフ、トレースデータの内部または外部トレースデバイスへの出力、またはソフトウェア例外のトリガが挙げられる。しかし、他の診断動作も可能であると理解されよう。
【００６６】
所定のイベントが生じたときに、診断制御回路１０を使用して、診断回路８をトリガして診断動作を実行する。診断制御回路１０のプログラム可能なレジスタ１２は、ユーザによってプログラムして、診断動作をトリガする所定のイベントを定義してもよい。
【００６７】
図２は、診断制御回路１０をさらに詳細に概略的に示す図である。診断制御回路１０のプログラム可能なレジスタ１２は、対で理論的に構成され、各対は、ブレークポイントまたはウォッチポイントを表す。簡潔にするため、以降、レジスタの各対をブレークポイントと称する。しかし、当業者は、各対は、ウォッチポイントも表し得るものと理解されよう。各対内の１つのレジスタＢＶＲ０、ＢＶＲ１、ＢＶＲ５は、ブレークポイント値レジスタと呼ばれ、所定のブレークポイント値を格納する。各対内の他のレジスタは、ブレークポイント制御レジスタＢＣＲ０、ＢＣＲ１、ＢＣＲ５と呼ばれ、各ブレークポイントの特性の定義に使用される。
【００６８】
ブレークポイントは、異なるタイプのものとしてもよい。ブレークポイントの第１のサブグループの場合、ブレークポイント値レジスタＢＶＲ５は、システムの所定のコンテキスト状態を定義するデバッグコンテキスト値を含む。これらのブレークポイントは、状態認識ブレークポイントである。ブレークポイント値レジスタ内に格納された値は、比較器２０−５を使用して状態特徴値ＳＣＶと比較される。状態特徴値ＳＣＶは、システムの状態を表す値である。比較器２０−５は、ブレークポイント値レジスタ内に格納されたデータが、状態特徴値と一致したかどうかに対応する結果を出力する。
【００６９】
ブレークポイントの第２のサブグループの場合、ブレークポイント値レジスタＢＶＲ０、ＢＶＲ１は、メモリ内の所定の位置のアドレスＡｄｄｒｅｓｓ０、Ａｄｄｒｅｓｓ１を含む。これらのブレークポイントは、アドレス認識ブレークポイントである。ブレークポイント値レジスタ内に格納された値は、比較器２０−０、２０−１を使用して、現在のプログラム命令アドレスＩＡＤＤＲと比較される。比較器２０−０、２０−１は、ブレークポイント値レジスタ内に格納されたデータが、プログラム命令アドレスと一致したかどうかに対応する結果を出力する。ウォッチポイントの場合、ブレークポイント値レジスタ内に格納された値は、現在のプログラム命令によってアクセスされたメモリ内の位置を示すアドレスと比較してもよい。
【００７０】
いくつかの実施形態では、アドレス認識ブレークポイントのブレークポイント値レジスタが、メモリアドレスの所定の範囲を定義することが可能である。したがって、診断動作は、所定の範囲内のアドレスにアクセスされたときにトリガすることができる。この範囲を定義する複数の方法が存在する。ブレークポイント値レジスタは、それぞれアドレス範囲の上限および下限を示す一対のアドレス値を含むことが可能である。別様には、ブレークポイント値レジスタは、アドレス値およびマスクを含むことが可能である。次いで、ブレークポイントは、比較器が、アクセスされたメモリアドレスをアドレス値と比較する前に、該メモリアドレス上でビットごとのマスク動作を実行するように構成される。当業者は、マスクは、各ビットがアクセスされたアドレス内のビットに対応するビットごとのマスクとして、またはマスク値の最上位ビットインデックスを符号化する適正フィールドとして定義することが可能であると理解されよう。
【００７１】
簡潔にするため、以降の説明では、アドレス認識ブレークポイントは、ブレークポイント値レジスタが単一のアドレス値を含むタイプのものとなる。しかし、それらは、上述のように、メモリアドレスの範囲も同様に定義することが可能であると理解されよう。
【００７２】
各ブレークポイントは、関連する比較器２０−０、２０−１、２０−５の出力に応答し、また関連するブレークポイント制御レジスタＢＣＲ０、ＢＣＲ１、ＢＣＲ５に応答する、タイプロジック２２−０、２２−１、２２−５に関連付けられる。タイプロジック２２−０、２２−１、２２−５は、ブレークポイント制御レジスタによって定義されたときのブレークポイントの特性に基づき、比較器２０−０、２０−１、２０−５から出力された結果が一致に対応するのか不一致に対応するのかに対応する結果を出力する。タイプロジック２２−０、２２−１、２２−５によって出力された結果は、診断制御回路１０によって使用され、診断回路８をトリガして診断動作を実行するかどうかを選択する。
【００７３】
アドレス認識ブレークポイントは、状態認識ブレークポイントにリンクしてもよい。図２では、例えば、１つのアドレス認識ブレークポイントＢＶＲ０、ＢＣＲ０は、状態認識ブレークポイントＢＶＲ５、ＢＣＲ５にリンクされる。なお、２つ以上のアドレス認識ブレークポイントを、同じ状態認識ブレークポイントにリンクすることが可能である。
【００７４】
本実施例では、状態認識ブレークポイントＢＶＲ５、ＢＣＲ５が、そこにリンクされた１つ以上のアドレス認識ブレークポイント（すなわち、アドレス認識ブレークポイントＢＶＲ０、ＢＣＲ０）を有するので、状態認識ブレークポイントに関連付けられたタイプロジック２２−５は、診断回路８をトリガするように結果を出力しない。代わりに、タイプロジック２２−５の出力は、状態認識ブレークポイントにリンクされた１つ以上のアドレス認識ブレークポイントのそれぞれに関連付けられた、タイプロジック２２−０にルーティングされる。タイプロジック２２−０は、次いで、比較器２０−０の結果、およびタイプロジック２２−５からルーティングされた結果に基づいて結果を出力する。このように、現在のプログラム命令に関連付けられたアドレスが、所定のアドレスと一致するかどうか、およびシステムの現在の状態が所定のデバッグコンテキスト値と一致するかどうかに基づいて、診断回路８をトリガして診断動作を実行してもよい。例えば、ブレークポイントは、所定のコンテキスト内の所定のアドレスで命令が実行されたときに、診断回路８をトリガするように構成することができる。
【００７５】
各ブレークポイント制御レジスタＢＣＲ０、ＢＣＲ１、ＢＣＲ５は、関連するタイプロジック２２−０、２２−１、２２−５が、比較器２０−０、２０−１、２０−５の結果をどのように使用するかを制御する。ブレークポイント制御レジスタの３つのビット（例、ビット２２乃至２０）は、タイプフィールドとして使用される。ブレークポイント制御レジスタの４つのビット（例、ビット１９乃至１６）は、リンクされたブレークポイント番号フィールドとして使用される。タイプフィールドの値、およびリンクされたブレークポイント番号フィールドは、タイプロジック２２−０、２２−１、２２−５に渡され、タイプロジックの動作の制御に使用される。
【００７６】
ブレークポイント制御レジスタＢＣＲ０、ＢＣＲ１、ＢＣＲ５のビット２２を使用して、比較の結果が一致であっとき、または比較の結果が不一致であったときに、診断動作をトリガするかどうかを選択する。このビットは、不一致が生じたときに診断動作をトリガする場合は１に設定され、一致が生じたときに診断動作をトリガする場合は０に設定される。いくつかの実施形態では、不一致機能は、アドレス認識ブレークポイントに対してのみサポートされる。この場合、状態認識ブレークポイントに対しては、ビット２２を１に設定してはならない、そしてウォッチポイントに対しては、ビット２２は０に固定される。必要に応じて、状態認識ブレークポイントおよびウォッチポイントの両方に対して不一致機能をサポートすることが可能であると理解されよう。
【００７７】
ブレークポイント制御レジスタＢＣＲ０、ＢＣＲ１、ＢＣＲ５のビット２１を使用して、ブレークポイントが、アドレス認識ブレークポイントなのか、状態認識ブレークポイントなのかを選択する。このビットは、ブレークポイント値レジスタが、状態特徴値と比較される所定のデバッグコンテキスト値を格納するように、状態認識ブレークポイントに対して１に設定される。このビットは、ブレークポイント値レジスタが、（ブレークポイントに対して）現在のプログラム命令のアドレスのいずれかと比較される所定のアドレス値を格納するように、アドレス認識ブレークポイントに対して０に設定される。個々のブレークポイントが、状態認識ブレークポイントとして選択されることをサポートしない場合は、このビットは０に固定される。ウォッチポイントに対しては、すなわち、ウォッチポイント値レジスタが、現在のプログラム命令によってアクセスされたアドレスを含む場合は、このビットは０に固定される。
【００７８】
ブレークポイント制御レジスタＢＣＲ０、ＢＣＲ１、ＢＣＲ５のビット２０を使用して、ブレークポイントがリンクされたかどうかを設定する。すなわち、アドレス認識ブレークポイントまたはウォッチポイントに対しては、第２の状態認識ブレークポイントにブレークポイントがリンクされたのか、ウォッチポイントがリンクされたのかを設定し、状態認識ブレークポイントに対しては、１つ以上のアドレス認識ブレークポイントまたはウォッチポイントによって、ブレークポイントがリンクされたかどうかを設定する。このように、ブレークポイントは、アドレスの比較およびデバッグコンテキスト比較の両方を必要とするように設定することができる。ブレークポイントがリンクされている場合、このビットは１に設定される。ブレークポイントがリンクされていない場合、このビットは０に設定される。
【００７９】
図３は、ブレークポイント制御レジスタのタイプフィールドの可能な意味を示す図である。以下の項では、ｘはあらゆるアドレス認識ブレークポイントのブレークポイント番号を表し、ｙはあらゆる状態認識ブレークポイントのブレークポイント番号を表す。タイプフィールドの可能な値は、以下の通りである。
【００８０】
●０ｂ０００−リンクを外された命令の仮想アドレスの一致
この場合、このアドレス認識ブレークポイントのタイプロジック２２−ｘは、ブレークポイント値レジスタ内に格納された値と、現在のプログラム命令アドレスとの、比較器２０−ｘによって実行された比較が一致であった場合に、診断動作をトリガする結果を出力する。
【００８１】
●０ｂ００１−リンクされた命令の仮想アドレスの一致
この場合、このアドレス認識ブレークポイントのタイプロジック２２−ｘは、アドレス認識ブレークポイントにリンクされた状態認識ブレークポイントのタイプロジック２２−ｙから結果を受信する。アドレス認識ブレークポイントのタイプロジック２２−ｘは、比較器２０−ｘによって実行されたアドレスの比較が一致であり、リンクされた状態認識ブレークポイントによって実行された比較の結果が一致であった場合に、診断動作をトリガする結果を出力する。
【００８２】
●０ｂ０１０−リンクを外されたデバッグコンテキストの一致
この場合、この状態認識ブレークポイントのタイプロジック２２−ｙは、ブレークポイント値レジスタ内に格納された値と、状態特徴値との、比較器２０−ｙによって実行された比較が一致であった場合に、診断動作をトリガさせる結果を出力する。
【００８３】
●０ｂ０１１−リンクされたデバッグコンテキストの一致
この場合、この状態認識ブレークポイントのタイプロジック２２−ｙは、ブレークポイント値レジスタ内に格納された値と、状態特徴値との、比較器２２−ｙによって実行された比較の結果を、状態認識ブレークポイントにリンクされたアドレス認識ブレークポイントのタイプロジック２２−ｘにルーティングする。
【００８４】
●０ｂ１００−リンクを外された命令の仮想アドレスの不一致
この場合、このアドレス認識ブレークポイントのタイプロジック２２−ｘは、ブレークポイント値レジスタ内に格納された値と、現在のプログラムアドレス命令との、比較器２０−ｘによって実行された比較が不一致であった場合に、診断動作をトリガさせる結果を出力する。
【００８５】
●０ｂ１０１−リンクされた命令の仮想アドレスの不一致
この場合、このアドレス認識ブレークポイントのタイプロジック２２−ｘは、アドレス認識ブレークポイントにリンクされた状態認識ブレークポイントの、タイプロジック２２−ｙから結果を受信する。アドレス認識ブレークポイントのタイプロジック２２−ｘは、比較器２０−ｘによって実行されたアドレスの比較が不一致であり、リンクされた状態認識ブレークポイントによって実行された比較の結果が一致であった場合に、診断動作をトリガする結果を出力する。
【００８６】
●０ｂ１１０−リンクを外されたデバッグコンテキストの不一致−予約済
●０ｂ１１１−リンクされたデバッグコンテキストの不一致−予約済
これらの最後の２つの場合は、いくつかの実施形態ではサポートされない。しかし、これらは必要に応じてサポートすることができるものと理解されよう。
【００８７】
リンクされたブレークポイント番号フィールドを使用して、どの状態認識ブレークポイントがアドレス認識ブレークポイントにリンクされたのかを示す。状態認識ブレークポイントに対して、リンクされたブレークポイント番号フィールドは、常に０ｂ００００に設定される。状態認識ブレークポイントにリンクされていないアドレス認識ブレークポイントに対して、リンクされたブレークポイント番号フィールドは、０ｂ００００に設定される。状態認識ブレークポイントにリンクされたアドレス認識ブレークポイントに対して、リンクされたブレークポイント番号フィールドは、アドレス認識ブレークポイントにリンクされた状態認識ブレークポイント番号を示す値を含む。例えば、図２において、ブレークポイントＢＶＲ０、ＢＣＲ０は、ブレークポイントＢＶＲ５、ＢＣＲ５にリンクされ、そのようにリンクされたＢＣＲ０のブレークポイント番号フィールドは０ｂ０１０１に設定される。
【００８８】
このように、ブレークポイント制御レジスタの設定ビットによって、ユーザは、異なるタイプのブレークポイントを設定することができる。
【００８９】
状態認識ブレークポイントに対して、ブレークポイント値レジスタＢＶＲ５内に格納されたデバッグコンテキスト値は、状態特徴値ＳＣＶと比較される（図２を参照のこと）。状態特徴値は、全体的な比較選択回路２６によって、全ての状態認識ブレークポイントに設定される。これによって、ユーザは、どの状態識別子を使用して状態特徴値を形成するのかを設定することができる。どの状態識別子を使用するのかを全体的に選択することによって、比較選択回路がブレークポイントごとに提供された場合よりも、この手段は、必要となる回路リソースが少ない。
【００９０】
全体的な比較選択回路２６の例示的な一実施形態を、図４を参照して記述する。図２に示された特徴と同じ図４の特徴は、同じ参照番号で識別される。
【００９１】
本実施形態では、全体的な比較選択回路２６は、比較選択レジスタＣＳＥＬＲ内に格納された、プログラム可能な比較選択値ＣＳＶの値に応答する、セレクタ４０を有する。比較選択値の値が１である場合は、セレクタ４０は、ＤＢＧＵＩＤＲ内に格納されたＤＢＧＵＩＤの値を出力する。比較選択値の値が０である場合は、セレクタ４０は、ＣＯＮＴＥＸＴＩＤＲ内に格納されたＣＯＮＴＥＸＴＩＤの値を出力する。セレクタ４０によって出力された値は、状態認識ブレークポイントのブレークポイント値レジスタＢＶＲ５内に格納されたデバッグコンテキスト値と比較するための、状態特徴値として使用される。このように、ユーザは、ＣＯＮＴＥＸＴＩＤおよびＤＢＧＵＩＤのどちらを使用してコンテキストを識別すべきかを、全体的に選択してもよい。
【００９２】
状態認識ブレークポイントが、仮想マシン認識およびコンテキスト認識となるために、追加的なブレークポイント値レジスタＢＸＶＲ５および追加的な比較器４４−５が、各状態認識ブレークポイントに提供される。追加的なブレークポイント値レジスタＢＸＶＲ５は、診断動作がそれに対してトリガされるＶＭＩＤを表す、所定の値を格納する。比較器４４−５は、追加的なブレークポイント値レジスタと、現在のＶＭＩＤを表すＶＭＩＤＲ（プロセッサがそのように機能するように現在プログラムされている仮想マシンのＶＭＩＤ）内に格納された値とを比較する。比較器４４−５は、追加的なブレークポイント値レジスタＢＸＶＲ５内に格納された値が現在のＶＭＩＤと一致したか、または一致しなかったかを示す結果を出力する。タイプロジックは、比較器４４−５の出力に選択的に応答する。追加的なブレークポイント値レジスタおよび比較器を提供することによって、本手法は、ＶＭＩＤの全ての値およびコンテキスト識別子のうちの１つと、所定の値との比較に応答して、診断動作をトリガするブレークポイントを設定できるようにする。
【００９３】
ブレークポイント制御レジスタでは、追加的なビット（例、ビット２３）を使用して、関連するタイプロジックが、ＶＭＩＤの比較の結果に応答するかどうかを設定する。このビットが１に設定されたときには、タイプロジックは、比較器４４−５の出力に応答する。このビットが０に設定されたときには、タイプロジックは、比較器４４−５の出力に応答しない。
【００９４】
図５は、本発明の本実施形態における、ブレークポイント制御レジスタのタイプフィールドの可能な意味を示す図である。値０ｂ００００乃至０ｂ０１１１は、図３を参照して説明した値０ｂ０００乃至０ｂ１１１と同じ意味である。タイプ０ｂ０１００乃至０ｂ０１０１の場合、ＢＸＶＲ５内の値および現在のＶＭＩＤは無視される。
【００９５】
●０ｂ１０００−リンクを外されたＶＭＩＤの一致
この場合、この状態認識ブレークポイントのタイプロジック２２−ｙは、追加的なブレークポイント値レジスタＢＸＶＲｙ内に格納された値と、現在のＶＭＩＤとの、比較器４４−ｙによって実行された比較が一致であった場合に、診断動作をトリガする結果を出力する。ブレークポイント値レジスタＢＶＲ５内に格納されたデバッグコンテキスト値は無視される。
【００９６】
●０ｂ１００１−リンクされたＶＭＩＤの一致
この場合、この状態認識ブレークポイントのタイプロジック２２−ｙは、追加的なブレークポイント値レジスタ内に格納された値と、現在のＶＭＩＤとの、比較器４４−ｙによって実行された比較の結果を、状態認識ブレークポイントにリンクされたアドレス認識ブレークポイントのタイプロジック２２−ｘにルーティングする。
【００９７】
●０ｂ１０１０−リンクを外されたデバッグコンテキストおよびＶＭＩＤの一致
この場合、この状態認識ブレークポイントのタイプロジック２２−ｙは、ブレークポイント値レジスタＢＶＲｙ内に格納されたデバッグコンテキスト値と、状態特徴値ＳＣＶとの、比較器２０−ｙによって実行された比較が一致であり、追加的なブレークポイント値レジスタＢＸＶＲｙと、現在のＶＭＩＤとの、比較器４４−ｙによって実行された比較が一致であった場合に、診断動作をトリガする結果を出力する。
【００９８】
●０ｂ１０１１−リンクされたデバッグコンテキストおよびＶＭＩＤの一致
この場合、この状態認識ブレークポイントのタイプロジック２２−ｙは、比較器２０−ｙおよび４４−ｙによって実行された比較の結果を、状態認識ブレークポイントにリンクされたアドレス認識ブレークポイントのタイプロジック２２−ｘにルーティングする。
【００９９】
●０ｂ１１００−リンクを外されたＶＭＩＤの不一致−予約済
●０ｂ１１０１−リンクされたＶＭＩＤの不一致−予約済
●０ｂ１１１０−リンクを外されたデバッグコンテキストおよびＶＭＩＤの不一致−予約済
●０ｂ１１１１−リンクされたデバッグコンテキストおよびＶＭＩＤの不一致−予約済
最後の４つの場合は、いくつかの実施形態ではサポートされない。しかし、必要に応じてこれらの場合をサポートすることが可能である。
【０１００】
したがって、適切な方法で、ブレークポイント制御レジスタのタイプフィールドのビットを設定することによって、命令アドレス、ＶＭＩＤ、およびＣＯＮＴＥＸＴＩＤ／ＤＢＧＵＩＤのあらゆる組み合わせに基づいて実行すべき診断動作をトリガできるように、ブレークポイントを設定することができる。ＶＭＩＤおよびＣＯＮＴＥＸＴＩＤ／ＤＢＧＵＩＤの全ての値は、ブレークポイント値レジスタ内に格納された値と比較してもよい。
【０１０１】
別の実施形態では、全体的な比較選択回路２６は、図６に概略的に示されるように構成される。図２に示された特徴と同じ図６の特徴は、同じ参照番号で識別される。上述の実施形態とは異なり、いかなる追加的なブレークポイント値レジスタも存在しない。図２のように、タイプフィールドは、３つのビットだけで構成される。タイプフィールドの可能な値の意味は、図３と同様である。
【０１０２】
本実施形態では、全体的な比較選択回路２６は、比較選択レジスタＣＳＥＬＲ２内に格納された、プログラム可能な比較選択値ＣＳＶ２の値に応答する、セレクタ６０を有する。状態特徴値ＳＣＶの各部に対して、セレクタ６０は、ＣＯＮＴＥＸＴＩＤＲ（すなわち、現在のＣＯＮＴＥＸＴＩＤ）内に格納された値、ＤＢＧＵＩＤＲ（現在のＤＢＧＵＩＤ）内に格納された値、ＶＭＩＤＲ（現在のＶＭＩＤ）内に格納された値、またはマスク値０ｘ００００００００のうちの１つからビットを選択する。この実施形態の比較選択値ＣＳＶ２は、複数のフィールド６４から構成される。各フィールド６４を使用して、どのレジスタから状態特徴値ＳＣＶの対応する部分を取り込むのか、またはマスク値から対応する部分を取り込むべきかどうかを選択する。
【０１０３】
図７は、比較選択値ＣＳＶ２がどのように使用されるのかを示す表である。比較選択値ＣＳＶ２のビット［３１：１６］は、予約済である。セレクタ６０は、これらのビットに応答しない。比較選択値ＣＳＶ２のビット［１５：１２］は、どのレジスタから状態特徴値ＳＣＶのビット［３１：２４］が取り込まれたのかを示す。比較選択値ＣＳＶ２のビット［１１：４］は、どのレジスタから状態特徴値ＳＣＶのビット［２３：８］が取り込まれたのかを示す。比較選択値ＣＳＶ２のビット［３：０］は、どのレジスタから状態特徴値ＳＣＶのビット［７：０］が取り込まれたのかを示す。
【０１０４】
このように、識別子の異なる組み合わせの一部を組み合わせて、状態特徴値を形成することができる。図８は、いくつかの例示的組み合わせを要約した図である。比較選択値ＣＳＶ２が０ｘ００００に設定された場合、ブレークポイント値レジスタＢＶＲ５内に格納されたデバッグコンテキスト値は、ＣＯＮＴＥＸＴＩＤのみと比較される。比較選択値ＣＳＶ２が０ｘ２２２２に設定された場合、ＤＢＧＵＩＤＲのみとの比較が実行される。比較選択値ＣＳＶ２が０ｘ１ＦＦＦに設定された場合、ＶＭＩＤのみとの比較が実行される。比較選択値ＣＳＶ２が０ｘ１２２０に設定された場合、ＶＭＩＤ、ＤＢＧＵＩＤ、およびＡＳＩＤ（ＡＳＩＤは、ＣＯＮＴＥＸＴＩＤの最下位８ビットで形成される）の一部との比較が実行される。比較選択値ＣＳＶ２が０ｘＦＦＦ０に設定された場合、ＡＳＩＤのみとの比較が実行される。マスク値を使用することにより、ＶＭＩＤのみ、またはＡＳＩＤのみとの比較が可能である。
【０１０５】
本実施形態を使用することで、ユーザは、比較選択値ＣＳＶ２をプログラムして、識別子の組み合わせを使用して診断動作をトリガする全てのブレークポイントに対して全体的に選択することができる。これは、データ処理システムには回路リソースがあまり必要ではないことを意味する。
【０１０６】
本発明の例示的実施形態を図面で参照しながら本願明細書に詳述したが、本発明は、それらの厳密な実施形態に限定されるものではなく、また、種々の変更および修正は、添付の特許請求の範囲に記載の本発明の範囲および趣旨から逸脱することなく、当業者によって行うことができるものと理解されたい。
【図１】
0005430153.tif 000002
【図２】
0005430153.tif 000003
【図３】
0005430153.tif 000004
【図４】
0005430153.tif 000005
【図５】
0005430153.tif 000006
【図６】
0005430153.tif 000007
【図７】
0005430153.tif 000008
【図８】
0005430153.tif 000009