(57)【要約】【課題】データ処理装置のブレークポイント機構を柔軟で効率的にする構造と方法を提供する。【解決手段】ブレークポイント論理ユニットは、データ処理装置の動作特性の選択された値を表すデータを記憶する値記憶と、選択された値とデータ処理装置が生成した動作特性の値とを比較して一致を表す結果信号を生成する比較器論理と、一致制御値を記憶する制御記憶とを備える。一致制御値が第１の値を有する場合は、その値と選択された値との一致を検出したとき比較器論理は結果信号をセットし、一致制御値が第２の値を有する場合は、その値と選択された値との一致を検出しないとき比較器論理は結果信号をセットする。結果信号がセットされると、ブレークポイント生成論理は関連するブレークポイント信号を生成する。【選択図】図２
2005317023.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置のブレークポイント論理ユニットであって、
前記データ処理装置の動作特性の選択された値を表すデータを記憶する値記憶と、
前記選択された値と前記データ処理装置が生成する前記動作特性の値とを比較して、前記値と前記選択された値との一致を表す少なくとも１つの結果信号を生成する比較器論理と、
一致制御値を記憶する制御記憶であって、前記一致制御値が第１の値を有する場合は、前記値と前記選択された値との一致を検出したとき前記比較器論理は前記少なくとも１つの結果信号をセットし、他方で、前記一致制御値が第２の値を有する場合は、前記値と前記選択された値との一致を検出しないとき前記比較器論理は前記少なくとも１つの結果信号をセットする制御記憶と、
前記少なくとも１つの結果信号がセットされたとき関連する少なくとも１つのブレークポイント信号を生成するブレークポイント生成論理と、
を備えるブレークポイント論理ユニット。
【請求項２】
前記少なくとも１つの結果信号は単一の結果信号を含み、また前記結果信号がセットされたとき前記ブレークポイント生成論理は関連する単一のブレークポイント信号を生成する、請求項１記載のブレークポイント論理ユニット。
【請求項３】
前記少なくとも１つの結果信号は複数の結果信号を含み、前記結果信号毎に、前記結果信号がセットされたとき前記ブレークポイント生成論理は関連するブレークポイント信号を生成する、請求項１記載のブレークポイント論理ユニット。
【請求項４】
前記一致制御信号は不一致制御信号であって、前記不一致制御信号がセットされない場合は、前記値と前記選択された値との一致を検出したとき前記比較器論理は前記少なくとも１つの結果信号をセットし、他方で、前記不一致制御信号がセットされた場合は、前記値と前記選択された値との一致を検出しないとき前記比較器論理は前記少なくとも１つの結果信号をセットする、請求項１記載のブレークポイント論理ユニット。
【請求項５】
前記結果信号毎に、前記結果信号がセットされたとき前記ブレークポイント生成論理は前記関連するブレークポイント信号を生成する、請求項１記載のブレークポイント論理ユニット。
【請求項６】
前記制御記憶は前記少なくとも１つのブレークポイント信号を生成するために満たすべき１つ以上の必要な条件を識別する１つ以上の別の制御値を記憶し、また前記ブレークポイント論理ユニットは更に、
前記データ処理装置が生成しかつ前記動作特性の値に関連する制御信号を受けて前記１つ以上の必要な条件が満たされるかどうかを前記受けた制御信号に基づいて判定するブレークポイント調整論理と、
前記結果信号がセットされかつ前記１つ以上の必要な条件が満たされるとき前記関連するブレークポイント信号を前記結果信号毎に生成するブレークポイント生成論理と、
を含む請求項１記載のブレークポイント論理ユニット。
【請求項７】
前記１つ以上の別の制御値は、前記少なくとも１つのブレークポイント信号を生成するために前記動作特性の値を生成した元である必要な動作モードを示すモード制御値を含む、請求項６記載のブレークポイント論理ユニット。
【請求項８】
前記１つ以上の別の制御値は、前記少なくとも１つのブレークポイント信号を生成するために前記動作特性の値を生成した元である必要な領域を示す領域制御値を含む、請求項６記載のブレークポイント論理ユニット。
【請求項９】
前記動作特性は前記データ処理装置が実行した命令取出しに関連する特性である、請求項１記載のブレークポイント論理ユニット。
【請求項１０】
前記動作特性は命令取出しアドレスの指示である、請求項９記載のブレークポイント論理ユニット。
【請求項１１】
前記動作特性は命令取出しアドレスの指示であり、前記１つ以上の別の制御値は前記少なくとも１つのブレークポイント信号を生成するために前記前記動作特性の値を生成した元である１つ以上の必要なプロセスの指示を含み、前記ブレークポイント調整論理は前記動作特性の値が前記１つ以上の必要なプロセスの１つから生成されたかどうかを表す１つ以上のプロセス一致信号を１つ以上のプロセス識別子比較器から受ける、請求項６記載のブレークポイント論理ユニット。
【請求項１２】
前記動作特性は命令取出しアドレスの指示であり、また、
前記データ処理装置内で用いる命令は可変幅であり、
前記制御記憶は多数のビットを含むマスクを記憶し、
前記比較器論理は、前記マスク論理は前記命令取出しの主題である前記命令の幅を表す幅制御信号を受けて前記幅制御信号の値と前記データ処理装置が生成した前記命令取出しアドレスの所定数の最下位ビットとに従って前記マスクの１つ以上のビットを選択するマスク論理を含み、前記マスク論理は更に前記マスクの前記選択された１つ以上のビットから得られる修飾子値を生成し、
前記命令アドレスの残りのビットは前記比較器論理が前記選択された値と比較する前記動作特性の値を形成し、前記比較器論理は更に前記比較を表す中間信号を生成し、前記修飾子値を用いて中間信号を修飾するので前記修飾子値がセットされたときだけ一致が起こると考える、
請求項２記載のブレークポイント論理ユニット。
【請求項１３】
前記動作特性は命令取出しアドレスの指示であり、また、
前記データ処理装置内で用いる命令は可変の長さまたは幅であり、
前記制御記憶は多数のビットを含むマスクを記憶し、
前記比較器論理は更に前記比較を表す中間信号を生成し、
前記比較器論理は複数の出力信号を作るマスク論理を含み、各出力信号は対応する結果信号を生成するのに用いられ、各出力信号は前記マスクの関連するビットが前記中間信号を修飾することにより作られるので、前記中間信号がセットされかつ前記マスクの関連するビットがセットされた場合だけその出力信号は一致を表す、
請求項３記載のブレークポイント論理ユニット。
【請求項１４】
前記動作特性は前記命令取出しに関連するプロセスを示すプロセス識別子であり、また前記少なくとも１つの結果信号は単一の結果信号を含み、また前記結果信号がセットされたとき前記ブレークポイント生成論理は関連する単一のブレークポイント信号を生成する、請求項９記載のブレークポイント論理ユニット。
【請求項１５】
前記制御記憶は、前記動作特性が前記命令取出しのアドレスの指示か前記命令取出しに関連するプロセスを示すプロセス識別子かを識別するソース選択値を含み、前記比較器論理は前記ソース選択値に従って、前記選択された値と、前記データ処理装置が生成した前記アドレスかまたは前記データ処理装置が生成した前記プロセス識別子とを比較する、請求項９記載のブレークポイント論理ユニット。
【請求項１６】
前記値記憶は１つ以上レジスタを備える、請求項１記載のブレークポイント論理ユニット。
【請求項１７】
前記制御記憶は１つ以上レジスタを備える、請求項１記載のブレークポイント論理ユニット。
【請求項１８】
請求項１記載の複数のブレークポイント論理ユニットを備えるデータ処理装置のデバッグ論理であって、前記デバッグ論理ユニットは各ブレークポイント論理ユニットが生成するブレークポイント信号に従って少なくとも１つのブレークポイント信号を生成する組合せ論理を備える、デバッグ論理。
【請求項１９】
前記複数の中の第１のブレークポイント論理ユニットでは前記動作特性は命令取出しのアドレスの指示であり、前記複数の中の第２のブレークポイント論理ユニットでは前記動作特性は前記命令取出しに関連するプロセスを示すプロセス識別子であり、前記第２のブレークポイント論理ユニットでは前記少なくとも１つの結果信号は単一の結果信号を含み、前記第２のブレークポイント論理ユニットの制御記憶はリンク値を含み、前記リンク値がセットされたとき前記単一の結果信号に関連するブレークポイント信号は前記組合せ論理に送られるのではなく前記第１のブレークポイント論理ユニットに入力として送られる、請求項１８記載のデバッグ論理。
【請求項２０】
データ処理装置内でブレークポイント信号を生成する方法であって、
（ａ）前記データ処理装置の動作特性の選択された値を表すデータを記憶し、
（ｂ）前記選択された値と前記データ処理装置が生成した前記動作特性の値とを比較器論理内で比較して、前記値と前記選択された値との一致を表す少なくとも１つの結果信号を生成し、
（ｃ）一致制御値を記憶し、
（ｄ）前記一致制御値が第１の値を有する場合は、前記値と前記選択された値との一致を検出したとき前記少なくとも１つの結果信号をセットし、他方で、前記一致制御値が第２の値を有する場合は、前記値と前記選択された値との一致を検出しないとき前記少なくとも１つの結果信号をセットし、
（ｅ）前記少なくとも１つの結果信号がセットされたとき関連する少なくとも１つのブレークポイント信号を生成する、
ブレークポイント信号を生成する方法。
【請求項２１】
前記少なくとも１つの結果信号は単一の結果信号を含み、また前記結果信号がセットされたとき前記ステップ（ｅ）で関連する単一のブレークポイント信号を生成する、請求項２０記載のブレークポイント信号を生成する方法。
【請求項２２】
前記少なくとも１つの結果信号は複数の結果信号を含み、また前記結果信号毎に、その結果信号がセットされたとき前記ステップ（ｅ）で関連するブレークポイント信号を生成する、請求項２０記載のブレークポイント信号を生成する方法。
【請求項２３】
前記一致制御信号は不一致制御信号であり、前記不一致制御信号がセットされない場合は、前記値と前記選択された値との一致を検出したとき前記少なくとも１つの結果信号を前記ステップ（ｄ）でセットし、他方で、前記不一致制御信号がセットされた場合は、前記値と前記選択された値との一致を検出しないとき前記少なくとも１つの結果信号を前記ステップ（ｄ）でセットする、請求項２０記載のブレークポイント信号を生成する方法。
【請求項２４】
前記結果信号毎に、その結果信号がセットされたとき前記関連するブレークポイント信号を前記ステップ（ｅ）で生成する、請求項２０記載のブレークポイント信号を生成する方法。
【請求項２５】
前記少なくとも１つのブレークポイント信号を生成するために満たすべき１つ以上の必要な条件を識別する１つ以上の別の制御値を記憶し、
前記データ処理装置が生成しまた前記動作特性の値に関連する信号をブレークポイント調整論理制御で受けて、前記１つ以上の必要な条件が満たされるかどうかを前記受けた制御信号に基づいて判定し、
前記結果信号毎に、その結果信号がセットされかつ前記１つ以上の必要な条件が満たされる場合は、前記関連するブレークポイント信号を前記ステップ（ｅ）で生成する、
ステップを更に含む、請求項２０記載のブレークポイント信号を生成する方法。
【請求項２６】
前記１つ以上の別の制御値は前記少なくとも１つのブレークポイント信号を生成するために前記動作特性の値を生成した元である必要な動作モードを示すモード制御値を含む、請求項２５記載のブレークポイント信号を生成する方法。
【請求項２７】
前記１つ以上の別の制御値は前記少なくとも１つのブレークポイント信号を生成するための前記動作特性の値を生成した元である必要な領域を示す領域制御値を含む、請求項２５記載のブレークポイント信号を生成する方法。
【請求項２８】
前記動作特性は前記データ処理装置が行った命令取出しに関連する特性である、請求項２０記載のブレークポイント信号を生成する方法。
【請求項２９】
前記動作特性は命令取出しアドレスの指示である、請求項２８記載のブレークポイント信号を生成する方法。
【請求項３０】
前記動作特性は命令取出しアドレスの指示であり、また前記１つ以上の別の制御値は前記少なくとも１つのブレークポイント信号を生成するために前記動作特性の値を生成した元である１つ以上の必要なプロセスの指示を含み、前記ブレークポイント調整論理は前記１つ以上の必要なプロセスの１つから前記動作特性の値を生成したかどうかを表す１つ以上のプロセス識別子比較器から１つ以上のプロセス一致信号を受ける、請求項２５記載のブレークポイント信号を生成する方法。
【請求項３１】
前記動作特性は命令取出しアドレスの指示であり、また前記データ処理装置内で用いる命令は可変幅であり、また前記方法は更に、
多数のビットを含むマスクを記憶し、
前記比較器論理内のマスク論理を用いて前記命令取出しの主題である命令の幅を表す幅制御信号を受け、また前記幅制御信号の値と前記データ処理装置が生成した命令取出しアドレスの所定数の最下位ビットとに従って前記マスクの１つ以上のビットを選択し、前記マスク論理は前記マスクの前記選択された１つ以上のビットから得られる修飾子値を生成し、
前記ステップ（ｂ）で、前記命令アドレスの残りのビットを、前記選択された値と比較する前記動作特性の値として用い、
前記比較を示す中間信号を生成し、前記修飾子値を用いて前記中間信号を修飾するので前記修飾子値がセットされたときだけ一致が起こると考える、
ステップを含む、請求項２１記載のブレークポイント信号を生成する方法。
【請求項３２】
前記動作特性は命令取出しアドレスの指示であり、また前記データ処理装置内で用いる命令は可変の長さまたは幅であり、また前記方法は更に、
多数のビットを含むマスクを記憶し、
前記ステップ（ｂ）で前記比較を表す中間信号を生成し、
前記比較器論理内のマスク論理を用いて複数の出力信号を作り、各出力信号を用いて対応する結果信号を生成し、前記マスクの関連するビットで前記中間信号を修飾することにより各出力信号を作るので、前記中間信号がセットされかつ前記マスクの関連するビットがセットされたときだけ前記出力信号は一致を示す、
ステップを含む、請求項２２記載のブレークポイント信号を生成する方法。
【請求項３３】
前記動作特性は前記命令取出しに関連するプロセスを示すプロセス識別子であり、また前記少なくとも１つの結果信号は単一の結果信号を含み、また前記結果信号がセットされたとき前記ステップ（ｅ）で関連する単一のブレークポイント信号を生成する、請求項２８記載のブレークポイント信号を生成する方法。
【請求項３４】
前記動作特性が前記命令取出しのアドレスの指示か前記命令取出しに関連するプロセスを示すプロセス識別子かを識別するソース選択値を記憶し、前記比較器論理は前記ステップ（ｂ）で、前記選択された値と、前記データ処理装置が生成したアドレスかまたは前記データ処理装置が生成したプロセス識別子とを前記ソース選択値に従って比較するステップを更に含む、請求項２８記載のブレークポイント信号を生成する方法。
【請求項３５】
データ処理装置内でデバッグを促進する方法であって、
複数のブレークポイント論理ユニットを備え、各前記ブレークポイント論理ユニットは請求項２０記載の方法を実行し、
各組合せ論理を用いて、ブレークポイント論理ユニットが生成した前記複数のブレークポイント信号に従って少なくとも１つのブレークポイント信号を生成する、
ステップを含む、データ処理装置内でデバッグを促進する方法。
【請求項３６】
前記複数の中の第１のブレークポイント論理ユニットでは前記動作特性は命令取出しのアドレスの指示であり、また前記複数の中の第２のブレークポイント論理ユニットでは前記動作特性は前記命令取出しに関連するプロセスを示すプロセス識別子であり、前記第２のブレークポイント論理ユニットでは前記少なくとも１つの結果信号は単一の結果信号を含み、前記第２のブレークポイント論理ユニットはこれに関連するリンク値を有し、前記リンク値がセットされたとき前記単一の結果信号に関連するブレークポイント信号は前記組合せ論理に送られるのではなく、前記第１のブレークポイント論理ユニットに入力として送られる、請求項３５記載のデバッグを促進する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法に関するものである。
【背景技術】
【０００２】
デバッグ論理をデータ処理装置内に備えてデータ処理装置上で走るプログラムを外部診断システムでデバッグすることは周知である。かかるデータ処理装置の一例は図１の処理装置１０である。処理装置１０は内部に中央処理ユニット（ＣＰＵ）５０を備える。ＣＰＵ５０は１つ以上のバスを介してメモリ装置６５に結合し、１つ以上のプログラムを実行するときＣＰＵの要求に従ってＣＰＵ５０とメモリ６５との間に命令とデータを送ることができる（経路５５および６０で示すように）。
【０００３】
外部診断システム２０とインターフェースするために、処理装置１０内にデバッグ論理３５を備える。デバッグ論理３５は、診断システム２０が処理装置１０のＣＰＵ５０上で走るプログラムをデバッグするために用いるレジスタを含む。デバッグに必要な機能は次の通りである。
１．  「ブレークポイント」の設定。これは、或るアドレスの命令を実行しようとするときにプログラムの実行を停止する機能である。
２．  プログラムのシングル・ステッピング。これは、プログラムが実行すべき次の命令を実行した後、実行を停止する機能である。
３．  メモリ６５および／またはＣＰＵ５０内のレジスタに対して読取りおよび書込みを行う機能。
【０００４】
一般に、診断システム２０は制御信号を経路２５によりデバッグ論理３５に送ってブレークポイントを確立し、選択されたアドレス値をデバッグ論理の値レジスタ内に記憶する。次にＣＰＵからデバッグ論理３５に送られたデバッグ制御信号４０の指示に従って、デバッグ論理３５はこの選択されたアドレスとＣＰＵ５０が取り出した命令のアドレスとを比較する。ＣＰＵが取り出した命令とデバッグ論理の値レジスタ内に記憶されている選択されたアドレスとが一致すると判定された場合は、デバッグ論理３５は経路４５を介してＣＰＵ５０にブレークポイント信号を送って、取り出された命令にブレークポイントの印をつける。その後その命令を実行しようとしたとき、プロセッサは実行を停止してデバッグ状態に入る。診断システム２０はデバッグ論理３５を介して経路３０によりＣＰＵのレジスタおよび／またはメモリ６５からの内容を検索し、また制御情報の種々の他の内容も検索して、処理装置１０の現在の状態の分析を行うことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ブレークポイントは種々の問題を解決するのに用いられる。かかる問題の１つは診断システム２０のユーザが「ここに走る(run to here)」を指定できることである。かかる用例では、ユーザは診断システムのユーザ・インターフェースを介してプログラム内の或る点を選択して、「ここに走る」コマンドを選択する。すると診断システムは関係するアドレスをデバッグ論理の値レジスタ内に記憶することによりその点にブレークポイントを設定した後で処理装置１０を走らせる。デバッグ論理が一致を検出し、これによりブレークポイント信号が出されると、プロセッサはその命令を実行しようとしたときに実行を停止し、そして診断システムはブレークポイントを取り除く。ユーザには、指定された点にプログラムが走ったように見える。恐らくユーザは、ブレークポイントが用いられたことに気がつかない。
【０００６】
しかし、上の方法は「に走る(run to)」という１種類の問題を解決したに過ぎない。多くの他の場合にユーザが希望するのは、或る点ではなく或る状態になるまでプロセッサを走らせることであってよい。例えば、異なる優先モードまたは異なる安全な状態を持つシステムを用いるとき、プロセッサが或るモードまたは或る状態になる「まで走る(run until)」という要求があってよい。また、これらのモードおよび状態の条件を組み合わせるという要求もあってよい。上に述べたような或る複雑なブレークポイント・シナリオを支援するための特殊なデバッグ・ハードウエアを構築することは可能であるが、そのためには費用がかかりまた柔軟性に欠けることになろう。
【０００７】
前に説明したように、デバッグに必要な他の機能として、プログラムを通してシングル・ステッピングすることがある。従来、シングル・ステッピングを行う方法が２つある。第１の方法では、診断システム２０は「次の命令」を復号して、次にどの命令を実行するかを計算する。この分析の後で、診断システム２０は上に述べたブレークポイントの設定法を用いて、その計算された命令のアドレスにブレークポイントを設定する。しかしこの方法には制限がある。なぜなら、診断システム２０はプロセッサ５０が実行することができる全ての命令の全挙動を理解する必要があるからである。このため、処理装置の設計者が新しい命令を追加して命令セットを拡張しようとするときに制限される。なぜなら、診断システムはかかる新しい命令を理解しないかも知れないからである。また、命令は正しく完了する、したがって例外は発生しない、と仮定されている。
【０００８】
シングル・ステッピングの第２の方法は、「シングル・ステップ」制御ビットをデバッグ論理ハードウエア内に設けて、次の命令の実行を完了するとすぐ実行を停止するようプロセッサに命じることである。しかしこの第２の方法は、簡単なレベルのシングル・ステッピング（すなわち、すぐ次に実行する命令にシングル・ステップすること）だけが可能という制限がある。この方法はプロセッサが実行する次の命令にだけステップするので、例外的な事象が発生した場合は、プロセッサは関係する例外ハンドラの第１の命令で停止する。これは必ずしも望ましい挙動ではない。別の例として、処理装置が多重プログラムを走らせていて、外部のソースにより駆動される割込みが発生したときにそのどれかに切り替わる場合は、ユーザは単一のプログラムを簡単にデバッグすることができない。なぜなら、診断システムはタイマ装置からの割込みのためのハンドラに「進む(step into)」ので、試験中のプログラムから次の命令に進むことが非常に困難だからである。
【０００９】
上に述べた従来の方法の制限を解消することのできる改善されたブレークポイント機構を提供することが望ましい。
ＡＲＭ社が製作した「ＡＲＭ７ＴＤＭＩ」デバッグ論理は１対の監視点レジスタを備え、一方の監視点レジスタの出力をその対の他方の監視点レジスタの入力に与える。この構造により、プロセッサが取り出した命令のアドレスと選択された命令アドレスとが一致しない場合にもブレークポイント信号を出すことができる。これを行うには、取り出された命令アドレスと選択された命令アドレスとの一致を検出したときに第１の監視点レジスタは出力を生成し、この出力信号を第２の監視点レジスタの入力として用いる。第１の監視点レジスタが一致信号を出さないときは、第２の監視点レジスタは任意のアドレスで一致信号を生成してよい。第２の比較器からのこの一致信号を用いてブレークポイント信号を生成するので、取り出された命令の命令アドレスと選択された命令アドレスとが一致しないときにブレークポイント信号をセットしてよい。これはシングル・ステッピングに関する柔軟性をいくぶん改善するが、１対の相互接続された監視点レジスタを用いる必要があるので、デバッグ論理の設計がかなり複雑になる。
【００１０】
したがって、上に述べた従来の方法の制限を解消し、しかもブレークポイント論理ユニットの設計が不必要に複雑にならないようにする、ブレークポイント機構を提供することが望ましい。
【課題を解決するための手段】
【００１１】
第１の態様から見ると、本発明はデータ処理装置のブレークポイント論理ユニットを提供する。これは、データ処理装置の動作特性の選択された値を表すデータを記憶する値記憶と、前記選択された値とデータ処理装置が生成する前記動作特性の値とを比較して前記値と前記選択された値との一致を表す少なくとも１つの結果信号を生成する比較器論理と、一致制御値を記憶する制御記憶であって、一致制御値が第１の値を有する場合は、前記値と前記選択された値との一致を検出したとき比較器論理は少なくとも１つの結果信号をセットし、他方で、一致制御値が第２の値を有する場合は、前記値と前記選択された値との一致を検出しないとき比較器論理は少なくとも１つの結果信号をセットする制御記憶と、少なくとも１つの結果信号がセットされたときは関連する少なくとも１つのブレークポイント信号を生成するブレークポイント生成論理とを備える。
【００１２】
本発明では、一致制御値はブレークポイント論理ユニットの制御記憶内にあり、その値に従って、比較器論理が行った比較の結果を反転させる。詳しく述べると、比較器論理は動作特性の選択された値とデータ処理装置が生成したその動作特性の値との一致を表す少なくとも１つの結果信号を生成する。一致制御値が第１の値を有する場合は、この２つの値の一致を検出したとき比較器論理は少なくとも１つの結果信号をセットし、他方で、一致制御値が第２の値を有する場合は、この２つの値の一致を検出しないとき比較器論理は少なくとも１つの結果信号をセットする。セットされた結果信号毎に、ブレークポイント生成論理は関連するブレークポイント信号を生成する。
【００１３】
この一致制御値を用いることにより、ブレークポイント信号の生成に大きな柔軟性を与えることができる。例えば、動作特性がアドレスの場合は、この一致制御値によりシングル・ステッピングを容易に実現することができる。シングル・ステッピングを行うには、「から進む(stepped from)」命令のアドレスを選択された値として値記憶内に記憶し、一致制御値をその第２の値に設定する。そしてデータ処理装置を走らせると、プロセッサは第１の命令のアドレスを出す。この命令のアドレスは値記憶内のアドレスと一致するので結果信号はセットされず、したがってブレークポイント信号を生成することはできない。しかしプロセッサが次々に命令を取り出すと、これらの各命令のアドレスは値記憶内のアドレスと一致しないので結果信号がセットされ、したがってブレークポイント信号を生成することができる。したがって、ブレークポイント生成論理がブレークポイント信号を生成するのを妨げるような他の条件が指定されないと仮定すると、ブレークポイント信号がプロセッサに出されて、プロセッサは「から進む」命令を実行した後で実行すべき次の命令の実行を停止する。
【００１４】
本発明の方法の柔軟性の別の例として、動作特性が命令取出しに関連するプロセスを示すプロセス識別子である場合は、選択されたプロセス識別子を値記憶内に記憶し、データ処理装置が出したプロセス識別子と比較器論理により比較する。一致制御値が第１の値を有する場合は、データ処理装置が出したプロセス識別子と値記憶内に記憶されている選択されたプロセス識別子値との一致を比較器が検出したときブレークポイント生成論理はブレークポイント信号を生成する。他方で、一致制御値が第２の値を有する場合は、データ処理装置が出したプロセス識別子と値記憶内に記憶されている選択されたプロセス識別子値との一致を比較器論理が検出しないときブレークポイント生成論理はブレークポイント信号を生成する。この後者の方法では、ブレークポイント論理ユニットは値記憶内に記憶されている選択されたプロセス識別子値が示す指定されたプロセスが走らなくなるまでプロセッサを走らせる。
【００１５】
比較器論理は少なくとも１つの結果信号を生成する。１つの実施の形態では一度に１つの命令だけ取り出す。その場合、少なくとも１つの結果信号は単一の結果信号を含み、結果信号がセットされたときブレークポイント生成論理は関連する単一のブレークポイント信号を生成する。
【００１６】
命令毎に、命令の関連する最小アドレス指定可能単位（ここでは命令幅とも呼ぶ）が定義される。これは一般に或る命令セットについて固定である。１つの実施の形態では、全ての命令が同じ幅を有してよい。しかし別の実施の形態では、多重命令セットからの命令は異なる幅を有してよい。この場合、プロセッサがやはり一度に１命令を取り出す場合は、命令の幅に関する情報が比較器論理に入力されるとブレークポイント論理ユニットはやはり単一の結果信号を作ることができる。
【００１７】
別の実施の形態では、データ処理装置は、それぞれが関連する幅を有する複数の異なる命令セットを用いてよい。例えば、ＡＲＭ命令セットではこの幅は４バイトであり、Ｔｈｕｍｂ命令セットではこの幅は２バイトであり、ジャバ仮想機械命令セットではこの幅は１バイトである。任意の特定の命令セット内で、命令は最小アドレス指定可能単位の１つだけから成ってよく、または命令セットはその命令セットの１つ以上の最小アドレス指定可能単位で指定される可変長さ命令を含んでよい。プロセッサが異なる命令セットを用いてよい実施の形態では、命令取出しは或る命令アドレスから始まる所定数のバイトを取り出すことを含んでよい。これらの所定数のバイト内に含まれる命令の数は異なってよい。かかる実施の形態では、少なくとも１つの結果信号は複数の結果信号を含み、前記結果信号毎に、その結果信号がセットされるとブレークポイント生成論理は関連するブレークポイント信号を生成する。この実施の形態では、多重結果信号を用いることにより対応する多数のブレークポイント信号を生成することが可能であり、指定された命令アドレスから始まる取り出された所定数のバイトが何個の命令を表すかを理解することに基づいて、プロセッサはブレークポイント信号を分析することができる。
【００１８】
一致制御信号は種々の形をとることができる。しかし１つの実施の形態では、一致制御信号は不一致制御信号であって、不一致制御信号がセットされない場合は、前記値と前記選択された値との一致を検出したとき比較器論理は少なくとも１つの結果信号をセットし、他方で、不一致制御信号がセットされた場合は、前記値と前記選択された値との一致を検出しないとき比較器論理は少なくとも１つの結果信号をセットする。したがって、不一致制御信号をセットしたときブレークポイント論理ユニットは比較器論理が行った比較の結果を反転させる。
【００１９】
１つの実施の形態では、前記結果信号毎に、その結果信号がセットされるとブレークポイント生成論理は関連するブレークポイント信号を生成する。したがってこの実施の形態では、関連するブレークポイント信号を出すことを制御する唯一の要素は関係する結果信号をセットすることである。
【００２０】
しかし別の実施の形態では、前記制御記憶は前記少なくとも１つのブレークポイント信号を生成するために満たすべき１つ以上の必要な条件を識別する１つ以上の別の制御値を記憶する。またブレークポイント論理ユニットは、データ処理装置が生成しかつ前記動作特性の値に関連する制御信号を受けて前記１つ以上の必要な条件が満たされたかどうかを前記受けた制御信号に基づいて判定するブレークポイント調整論理と、前記結果信号がセットされかつ前記１つ以上の必要な条件が満たされるとき関連するブレークポイント信号を前記結果信号毎に生成するブレークポイント生成論理とを含む。したがってこの方法では比較の結果と他の条件とを組み合わせてブレークポイント信号の生成を制御することができるので、ブレークポイント信号を出すための事象のシーケンスの柔軟性を大きくすることができる。
【００２１】
１つの実施の形態では、前記１つ以上の別の制御値は、少なくとも１つのブレークポイント信号を生成するために前記動作特性の値を生成した元である必要な動作モードを示すモード制御値を含む。この特別の制御値を用いる一例を示すと、非優先(non-privileged)動作モードで生成された例外は一般に優先(privileged)動作モードで処理し、処理した後、例外ハンドラは非優先プログラムが走る非優先動作モードに戻る。モード制御値をセットして非優先モードを指定することにより、かつ一致制御値をその第２の値にセットすることにより、診断システムは次の非優先命令を実行するときブレークポイント論理ユニットを用いて関連するプロセッサを停止させることができる。したがって、例外を取る場合はプロセッサは優先モードに入り、ブレークポイント生成論理はブレークポイント信号を生成せずに例外ハンドラ(exception handler)を走らせる。例外ハンドラから戻るとプロセッサは非優先モードに戻るので、ブレークポイント生成論理はブレークポイント信号を生成することができる。したがってその効果はハンドラをまたぐ(step over)ことである。
【００２２】
制御記憶内に記憶することのできる別の制御値の別の例として、制御値の１つは、少なくとも１つのブレークポイント信号を生成するために前記動作特性の値を生成した元である必要な領域を示す領域制御値（安全領域制御値とも呼ぶ）を含む。例えば、プロセッサは安全な領域（ここでは安全な状態とも呼ぶ）または非安全な領域（ここでは非安全な状態とも呼ぶ）で実行することができる。領域制御値と一致制御値とを適当にセットすることにより、診断システムは次の安全な／非安全な命令を実行するときプロセッサを停止させることができる。これは例えば安全な／非安全な命令のアドレスに無関係に行うことができる。
【００２３】
認識されるように、比較器論理で比較する動作特性は種々の形をとってよい。しかし１つの実施の形態では、動作特性はデータ処理装置が行う命令取出しに関連する特性である。より具体的に述べると、１つの実施の形態では、動作特性は命令取出しアドレスの指示である。
【００２４】
かかる実施の形態では、前記１つ以上の別の制御値は少なくとも１つのブレークポイント信号を生成するために前記動作特性の値を生成した元である１つ以上の必要なプロセスの指示を含み、ブレークポイント調整論理は前記動作特性の値が前記１つ以上の必要なプロセスの１つから生成されたかどうかを表す１つ以上のプロセス一致信号を１つ以上のプロセス識別子比較器から受ける。この別の制御値を適当にセットすることにより、かつ一致制御値をその第２の値にセットすることにより、シングル・ステップ・プロセスを現在のプロセスの次の命令にだけステップさせることができる。なぜなら、プロセス識別子がこの別の制御値が示す必要なプロセスの値と一致する場合だけブレークポイント信号が出るからである。
【００２５】
動作特性が命令取出しアドレスの指示でありかつ比較器論理が単一の結果信号を生成する１つの実施の形態では、データ処理装置内で用いる命令は可変幅であり、前記制御記憶は多数のビットを含むマスクを記憶し、比較器論理は、命令取出しの主題である命令の幅を表す幅制御信号を受けてこの幅制御信号の値とデータ処理装置が生成した命令取出しアドレスの所定数の最下位ビットとに従ってマスクの１つ以上のビットを選択するマスク論理を含み、このマスク論理は更にマスクの選択された１つ以上のビットから得られた修飾子値を生成し、前記命令アドレスの残りのビットは比較器論理が前記選択された値と比較する動作特性の値を形成する。比較器論理は更に比較を表す中間信号を生成し、修飾子値を用いてこの中間信号を修飾するので修飾子値がセットされたときだけ一致が起こると考える。
【００２６】
したがってこの実施の形態では、データ処理装置内で可変幅命令を用いる場合は、比較器論理内のマスク論理を用いて、命令取出しの主題である命令の幅（その命令が属する命令セットにより定義される）の知識と、命令取出しアドレスの所定数の最下位ビットの値とに基づいて修飾子値を生成する。次にこの修飾子値を用いて中間信号を修飾するので、修飾子値がセットされたときだけ一致が起こると考える。これにより、ブレークポイント生成論理は単一のブレークポイント信号を生成するだけでよい。なぜなら比較器論理は、命令幅と、所定数の最下位ビットの値と、マスクのビット（ここではバイト・レーン・ビット(byte lane bits)とも呼ぶ）に関してブレークポイント信号を出すのが適当かどうかを判定できるだけの十分の情報を有するからである。
【００２７】
比較器論理が複数の結果信号を生成する別の実施の形態では、データ処理装置内で用いる命令は可変の長さまたは幅であり、前記制御記憶は多数のビットを含むマスクを記憶し、比較器論理は比較を表す中間信号を更に生成し、比較器論理は複数の出力信号を作るマスク論理を含み、各出力信号は対応する結果信号を生成するのに用いられ、各出力信号はマスクの関連するビットが中間信号を修飾することにより作られるので、中間信号がセットされかつマスクの関連するビットがセットされた場合だけその出力信号は一致を表す。この実施の形態では、比較器論理は取り出される命令の長さまたは幅に関する詳細は一切与えられず、代わりにマスクのビット毎に出力信号を作り、これらの種々の出力信号を用いて対応する結果信号（したがって対応するブレークポイント信号）を生成する。１つの実施の形態では、マスク内のビット数は取り出されるバイト数に対応する（全ての命令セットの最小幅は１バイトと仮定する）ので、作られたブレークポイント信号はバイト単位のブレークポイント信号であり、プロセッサは実際に取り出された命令の長さと幅とに従って判断する。より一般的な場合は、マスク内のビット数は取り出されたバイト数を全ての命令セットの最小幅で割った値に対応することが認識される。
【００２８】
１つの実施の形態では、或る命令に関連する動作特性は命令取出しに関連するプロセスを示すプロセス識別子である。前に説明したように、これにより例えばブレークポイント論理ユニットは、値記憶内に記憶されている選択されたプロセス識別子が示す指定されたプロセスが走らなくなるまでプロセッサを走らせる。
【００２９】
１つの実施の形態では、制御記憶は、動作特性が命令取出しのアドレスの指示か命令取出しに関連するプロセスを示すプロセス識別子かを識別するソース選択値を含み、比較器論理はソース選択値に従って、選択された値と、データ処理装置が生成したアドレスかまたはデータ処理装置が生成したプロセス識別子とを比較する。したがってこの実施の形態では、ブレークポイント論理ユニットはアドレス比較器かまたはプロセス識別子比較器として用いられ、ブレークポイント信号はこの比較に従って生成される。
【００３０】
認識されるように、値記憶は種々の形をとってよいが、１つの実施の形態では値記憶は１個以上のレジスタを備える。同様に、制御記憶は種々の形式をとってよいが、１つの実施の形態では制御記憶は１個以上のレジスタを備える。
【００３１】
第２の態様から見ると、本発明は本発明の第１の態様に係る複数のブレークポイント論理ユニットを備えるデータ処理装置のデバッグ論理を提供し、デバッグ論理ユニットは各ブレークポイント論理ユニットが生成するブレークポイント信号に従って少なくとも１つのブレークポイント信号を生成する組合せ論理を含む。
【００３２】
１つの実施の形態において、前記複数の中の第１のブレークポイント論理ユニットでは前記動作特性は命令取出しのアドレスの指示であり、前記複数の中の第２のブレークポイント論理ユニットでは前記動作特性は命令取出しに関連するプロセスを示すプロセス識別子であり、第２のブレークポイント論理ユニットでは少なくとも１つの結果信号は単一の結果信号を含む。前記第２のブレークポイント論理ユニットの制御記憶はリンク値を含み、リンク値がセットされたとき単一の結果信号に関連するブレークポイント信号は組合せ論理に送られるのではなく前記第１のブレークポイント論理ユニットに入力として送られる。このようにこの実施の形態では、第２のブレークポイント論理ユニットの制御記憶内の制御値はその第２のブレークポイント論理ユニットの出力を第１のブレークポイント論理ユニットにリンクするので、出力は組合せ論理に送られるのではなく第１のブレークポイント論理ユニットの入力に送られる。このように、第１のブレークポイント論理ユニットからの少なくとも１つの結果信号の設定は第２のブレークポイント論理ユニットからの出力により調整することができる。
【００３３】
第３の態様から見ると、本発明はデータ処理装置内でブレークポイント信号を生成する方法を提供し、次のステップを含む。すなわち、（ａ）データ処理装置の動作特性の選択された値を表すデータを記憶し、（ｂ）前記選択された値とデータ処理装置が生成した前記動作特性の値とを比較器論理内で比較して、前記値と前記選択された値との一致を表す少なくとも１つの結果信号を生成し、（ｃ）一致制御値を記憶し、（ｄ）一致制御値が第１の値を有する場合は、前記値と前記選択された値との一致を検出したとき少なくとも１つの結果信号をセットし、他方で、一致制御値が第２の値を有する場合は、前記値と前記選択された値との一致を検出しないとき少なくとも１つの結果信号をセットし、（ｅ）少なくとも１つの結果信号がセットされたとき関連する少なくとも１つのブレークポイント信号を生成する。
【００３４】
第４の態様から見ると、本発明はデータ処理装置内でデバッグを促進する方法を与え、次のステップを含む。すなわち、複数のブレークポイント論理ユニットを設け、各前記ブレークポイント論理ユニットは本発明の第３の態様に係る方法を実行し、各ブレークポイント論理ユニットが生成したブレークポイント信号に従って組合せ論理を用いて少なくとも１つのブレークポイント信号を生成する。
【実施例】
【００３５】
図２は、本発明の１つの実施の形態に係る、デバッグ論理３５内に設けられたブレークポイント論理ユニット１６０の構造を示す。この実施の形態では、ブレークポイント論理ユニット１６０は、ブレークポイント値レジスタ１１０内に記憶されている選択されたアドレス値とＣＰＵ５０から経路１３２を介して受けた命令取出しアドレスとを比較するための比較器論理（アドレス比較器１３０とマルチプレクサ１４５とで構成する）を含む。選択されたアドレス値は、診断システム２０の制御の下にプログラミング・インターフェース１００を介してブレークポイント値レジスタ１１０内にプログラムされる。後で詳細に説明するように、アドレス比較器１３０は、ＣＰＵ５０を組み込んだ処理装置内の命令が可変長さである場合に用いられるバイト・マスク論理１３５を組み込んでよい。アドレス比較器は、命令取出しアドレスとブレークポイント値レジスタ１１０内に記憶されているアドレスとの一致を示す出力信号を経路１３６に出し、またその出力信号の反転信号を、経路１３８を介して出力する。出力信号とその出力信号の反転信号とは、ブレークポイント制御レジスタ１２０から出力される信号により制御されるマルチプレクサ１４５に送られる。
【００３６】
ブレークポイント制御レジスタ１２０の内容については、後で図６を参照して詳細に説明する。しかしブレークポイント制御レジスタ１２０内に記憶されている制御値の１つは不一致制御値である。好ましい実施の形態では、これはマルチプレクサ１４５による選択を制御するのに用いられる１ビット値である。詳しく述べると、不一致制御値がセットされていない場合はマルチプレクサは経路１３６を介して受けた信号を結果信号として出力するが、不一致制御値がセットされている場合はマルチプレクサは経路１３８を介して受けた信号を結果信号として出力する。認識されるように、セットされた不一致信号をどの論理値で示すかは全く選択の問題である。しかし１つの実施の形態では、論理１の値は不一致信号がセットされることを示し、論理ゼロの値は不一致信号がセットされないことを示す。
【００３７】
理解されるように、上に述べたようにマルチプレクサ１４５が動作するとき、マルチプレクサは出力する結果信号を２つの状態のどちらかにセットする。第１に不一致制御値がセットされない場合は、命令取出しアドレスとブレークポイント値レジスタ１１０内のアドレスとの一致を検出したときに結果信号をセットする。逆に、不一致制御値がセットされた場合は、命令取出しアドレスとブレークポイント値レジスタ１１０内のアドレスとの一致を検出しないときに結果信号をセットする。
【００３８】
図２に示す例ではセットされた結果信号は論理１の値を有すると仮定したが、認識されるように、ブレークポイント論理ユニット１６０は結果信号がセットされたとき論理ゼロの値を有するようにすることができる。
図２の例で結果信号がセットされた場合に論理１の値であれば、結果信号がセットされかつブレークポイント調整論理１４０から論理１の値を受けた場合は、ＡＮＤゲート１５０によりブレークポイント信号が経路１５５を介してＣＰＵ５０に表明されることが分かる。
【００３９】
ブレークポイント調整論理１４０はＣＰＵ５０から経路１３４を介して命令取出し制御信号を受け、またブレークポイント制御レジスタ１２０内に記憶されている１つ以上の別の制御値を受ける。ブレークポイント調整論理１４０の動作については、後で図７を参照して説明するが、ブレークポイント信号を出すのに別の条件を満たす必要がない場合はブレークポイント調整論理は論理１の信号をＡＮＤゲート１５０に出すので、マルチプレクサ１４５からの結果信号がセットされた場合はブレークポイント信号１５５を出す。
【００４０】
図３はデバッグ論理３５の別の実施の形態を示す。この場合、ブレークポイント論理ユニット１６０は図２を参照して前に説明したものと同じ構造を有するが、デバッグ論理３５内にプロセス識別子論理も含む。詳しく述べると、診断システム２０がプログラムしたプロセス識別子値を、プログラミング・インターフェース１００を介して記憶するためのプロセス識別子値レジスタ２００を備える。この値はプロセス識別子比較器２１０に与えられる。比較器２１０はまた経路２１２を介してＣＰＵ５０が出すプロセス識別子値も受けて、命令取出しアドレスを出したプロセスを示す。プロセス識別子比較器２１０は、経路２１２を介して受けたプロセス識別子値とプロセス識別子値レジスタ２００内に記憶されているプロセス識別子値との一致を表す出力信号を生成する。この出力信号は追加の入力としてブレークポイント調整論理１４０に与えられる。後で図７を参照して説明するように、この方法により、プロセス識別子比較器２１０が検出した一致に従ってブレークポイント論理ユニット１６０からのブレークポイント信号の生成を調整することができる。
【００４１】
図４は、本発明の別の実施の形態に係るデバッグ論理３５を示す。ここで、ブレークポイント論理ユニット１６０はアドレス比較器１３０ではなくプロセス識別子比較器１７０を含む。この場合、ブレークポイント値レジスタ１１０は診断システム２０がプログラムした選択された識別子値を、プログラミング・インターフェース１００を介して記憶する。プロセス識別子比較器１７０からマルチプレクサ１４５に経路１３６と１３８とを介して送られる２つの出力信号は、経路２１２を介して受けたプロセス識別子値とレジスタ１１０内に記憶されているプロセス識別子値との一致を表す信号と、この信号の反転信号とである。図２と同様に、マルチプレクサ１４５によるこれら２つの出力信号からの結果信号の選択は、ブレークポイント制御レジスタ１２０内に記憶されている不一致制御値の値に従って制御される。これにより、プロセス識別子値が一致するときにブレークポイント信号を生成するか、または不一致制御信号がセットされている場合はプロセス識別子値が一致しないときにブレークポイント信号を生成する。図２のブレークポイント論理ユニット１６０と同様に、ブレークポイント調整論理１４０を用いて、ブレークポイント制御レジスタ１２０内の制御値が指定する他の条件に従ってブレークポイント信号１５５の生成を調整することができる。
【００４２】
図５は、ブレークポイント論理ユニット１６０がアドレス比較器１３０とプロセス識別子比較器１７０とを含むデバッグ論理３５の別の実施の形態を示す。この場合は、図２から図４の２方向マルチプレクサ１４５ではなく、４方向マルチプレクサ１８０を用いる。ブレークポイント制御レジスタ１２０内でソース選択値をセットして、ブレークポイント論理ユニット１６０が命令アドレスの比較を行うかまたはプロセス識別子値の比較を行うかを示し、ブレークポイント値レジスタ１１０内に命令アドレス値／プロセス識別子値（ソース選択値に従って判断する）を記憶する。アドレス比較器１３０とプロセス識別子比較器１７０とは、ブレークポイント値レジスタ１１０の内容と、経路１３２を介して受けた命令取出しアドレス（アドレス比較器１３０向け）または経路２１２を介して受けたプロセス識別子値（プロセス識別子比較器１７０向け）とに基づいて通常の比較プロセスを行う。前に図２と図４とを参照して説明したように、アドレス比較器１３０とプロセス識別子比較器１７０とは出力信号とその出力信号の反転信号とを作るので、マルチプレクサ１８０は４つの信号を受ける。
【００４３】
マルチプレクサ１８０が４つの入力信号のどの１つを選択するかは、ブレークポイント制御レジスタ１２０内に記憶されている不一致制御値とソース選択値との値に基づいて制御される。これについては後で図６を参照して詳細に説明する。前と同様に、マルチプレクサからの結果信号はＡＮＤゲート１５０が受ける。ＡＮＤゲート１５０はブレークポイント調整論理１４０からの信号も受ける。次に、結果信号がセットされかつブレークポイント調整論理１４０から論理１の値を受けた場合は、経路１５５を介してブレークポイント信号を出す。
【００４４】
図６はブレークポイント制御レジスタ１２０内のいくつかのフィールドを示す略図である。ブレークポイント制御レジスタ１２０はこれらの制御フィールド内に記憶されている値に従って多数の制御信号を出す。これらの値は、診断システム２０がプログラミング・インターフェース１００を用いてブレークポイント制御レジスタ１２０内にプログラムする。
【００４５】
図６から分かるように、この例示的な実施の形態では制御レジスタ１２０のビット０は不一致制御値３００を含み、ビット１はオプションでソース選択値３１０を含む。不一致制御値が論理０の値を有する場合はブレークポイント論理ユニット１６０内の比較器論理は標準の比較を行うことを示すが、不一致制御値がセットされている（この実施の形態では論理１の値に）場合は比較の結果を反転することを示す。前に説明したように、この値は図２から図４のマルチプレクサ１４５、または図５のマルチプレクサ１８０への入力信号として用いられる。図２から図４のブレークポイント論理ユニットでは、ブレークポイント制御レジスタ１２０のビット１で与えられるソース選択値は関係ない。しかし図５の例では、ビット１が含むソース選択値とビット０の不一致制御値とを共に用いて、マルチプレクサ１８０への４つの入力のどれを結果信号としてＡＮＤゲート１５０に出力するかを決定する。図６に示すように、ソース選択値が論理０の値を有する場合はブレークポイント論理ユニット１６０がアドレス比較を行うことを示すが、ソース選択値が論理１の値を有する場合はブレークポイント論理ユニット１６０がプロセス識別子比較を行うことを示す。したがって、単なる例であるが、ソース選択値が論理１の値を有しかつ不一致制御値が論理１の値を有する場合は、プロセス識別子比較器１７０からの反転出力を結果信号としてＡＮＤゲート１５０に出力すべきことをマルチプレクサ１８０に示す。
【００４６】
図６に示すように、ブレークポイント制御レジスタ１２０のビット２と３とは安全領域制御値を含む。これは、ブレークポイント信号を出力するために命令取出しアドレスまたはプロセス識別子値（行った比較に従って決まる）を生成すべき必要な安全領域を示すのに用いる。同様に、ビット４と５とはモード制御値を含み、これをセットすると、ブレークポイント信号を生成するために或る動作モードから命令取出しアドレスまたはプロセス識別子値を出す必要があることを示すことができる。
【００４７】
ブレークポイント制御レジスタ１２０のビット１０から１３はプロセス識別子選択フィールド３５０を含む。これはオプションのフィールドで、例えば図３のデバッグ論理３５内では、ブレークポイント信号の生成を調整するのに用いるべき或るプロセス識別子比較器からの出力を識別するのに用いる。フィールド３５０の大きさはＮビットだけでよい。ここで、２N−１はブレークポイント信号の生成を調整するのに利用可能なプロセス識別子比較器の数である。したがって、４ビットなら１５個までのプロセス識別子比較器が利用可能である。利用可能なプロセス識別子比較器の数がこれより少ない場合は、フィールド３５０に必要なビット数はこれより少ない。しかし実施の形態の間に互換性を与えるために、フィールド３５０のビット数は固定することが多い。フィールド３５０の使用については後で図７と図１１とを参照して詳細に説明する。
【００４８】
領域制御値（ビット２と３）と、モード制御値（ビット４と５）と、プロセス識別子選択値（ビット１０から１３）はブレークポイント制御レジスタ１２０からブレークポイント調整論理１４０に送られる。これらをブレークポイント調整論理内で処理する方法については後で図７を参照して説明する。
【００４９】
ブレークポイント制御レジスタ１２０のビット６から９はバイト・レーン・マスク値を含む。これはオプションのフィールドであって、ＣＰＵ５０内に可変長さ命令を用いる場合に用いてよい。或る実施の形態においてこれらのバイト・レーン・マスク・ビットを用いる方法については、後で図８と図１０とを参照して説明する。
認識されるように、ブレークポイント制御レジスタ１２０は図６に示すもの以外のフィールドを含んでよい。また理解されるように、ブレークポイント制御レジスタ内のこれらのフィールドの順序は全く設計で選択されるものである。
【００５０】
図７は、本発明の１つの実施の形態に係る、ブレークポイント調整論理１４０の動作を示す。図７に示すように、ブレークポイント調整論理１４０は条件一致論理４００を含む。これはブレークポイント制御レジスタ１２０から出力されたモード制御値（すなわち、図６に示す制御レジスタのビット４と５）を受け、またＣＰＵが優先動作モードで動作中かどうかを示す命令取出し制御信号の１つ（モード信号）を経路１３４を介して受ける。制御レジスタ１２０からのビット４と５とは反転してマルチプレクサ４１０に入力し、マルチプレクサ４１０からの出力は、経路１３４を介して受けたモード信号に従って駆動される。図６から分かるように、ビット４と５とが共に論理０の値の場合は、ブレークポイント信号の送出の調整を動作モードに従って行ってはならないことを示し、図７から分かるように、このためにマルチプレクサ４１０への両入力は論理１の値になる。したがって、マルチプレクサ４１０からの出力を選択するのに用いられるモード信号の値に関係なく、論理１の値がＡＮＤゲート４３０に出力される。したがって、ブレークポイント調整論理１４０内の残りの論理も論理１の値を作ると、論理１の値をブレークポイント調整論理１４０からＡＮＤゲート１５０に出力する。したがって、マルチプレクサ（図２，３，４の要素１４５、図５の要素１８０）からの結果信号がセットされたときブレークポイント信号を経路１５５により出力する。
【００５１】
図７に示す例では、ＣＰＵ５０が優先動作モードで動作している場合はモード信号を論理１の値にセットすると仮定した。このため、マルチプレクサ４１０は受けた信号を制御レジスタのビット５に基づいて出力する。図６から分かるように、ＣＰＵが優先動作モードだけで動作する必要があるときにブレークポイント信号の生成を調整したい場合は、ビット５を論理０の値にセットし、ビット４を論理１の値にセットする。マルチプレクサ４１０に入力する前にこれらの信号を反転するので、優先動作モードが実際に存在する場合はマルチプレクサは論理１の値をＡＮＤゲート４３０に出力するが、逆に非優先動作モードが存在する場合はビット４の反転値（この場合は論理０の値）を出力することが分かる。
【００５２】
同様に、モード制御値を値「１０」にセットして、ブレークポイント制御信号を出すために非優先動作モードが必要であることを示す場合は、経路１３４を介して受けるモード信号が論理０レベル（すなわち、ユーザ動作モードを示す）の場合だけ論理１の値をマルチプレクサ４１０から出力する。
【００５３】
制御レジスタ１２０からビット２と３（すなわち、安全領域制御値）を受け、またＣＰＵが経路１３４を介して出す安全領域信号（ＣＰＵが安全領域で動作している場合に論理１の値にセットされる）を受ける、同様な要素である条件一致論理４０５も備える。領域制御値の種々の値が持つ意味と、モード制御値の種々の値（図６参照）が持つ対応する意味とを比較することにより、条件一致論理４０５は条件一致論理４００について上に説明したのと同じ方法で動作することが認識されるので、これ以上説明しない。
【００５４】
ブレークポイント制御レジスタ１２０からのプロセス識別子選択フィールド３５０はマルチプレクサ４２０に入力され、マルチプレクサ４２０からの出力の選択を制御する。マルチプレクサ４２０は複数の入力を有する。１つは論理１の値に結線され、残りは１つ以上のプロセス識別子比較器からプロセス識別子一致信号を受ける。したがって、図３の例を考えると、デバッグ論理３５内に多数のプロセス識別子比較器２１０を備えてよく、その出力はブレークポイント調整論理１４０内のマルチプレクサ４２０に送られる。ブレークポイント制御レジスタ１２０内のプロセス識別子選択フィールド３５０は、ブレークポイント論理ユニット１６０がブレークポイント信号を生成するのにこれらのプロセス識別子比較器のどの出力（もしあれば）を用いて調整するかを示すようプログラムすることができる。かかる調整が必要でない場合は、プロセス識別子選択フィールドは結線された論理１の入力信号をＡＮＤゲート４３０に出力するような所定の値に設定する。そうでない場合は、或るプログラム識別子比較器出力が選択されてＡＮＤゲート４３０に送られる。この方法により、ブレークポイント論理ユニット１６０がブレークポイント信号を生成するのを、命令取出しアドレスを出した或るプロセスに従って調整することができる。
【００５５】
図８は、ＣＰＵ５０内に多重幅命令を用いる場合のアドレス比較器論理１３０の動作を示す。この例では、命令自体の幅に関係なく命令アドレスは３２ビット・アドレスであり、かつ一度に１命令を取り出すと仮定する。或る１つの例では、３２ビット・アドレスで参照される命令は３２ビットのＡＲＭ命令、１６ビットのＴｈｕｍｂ命令、または８ビットのジャバ命令でよい。認識されるように、ＡＲＭ命令をアドレスで参照する場合は最下位２ビットは共に０であり、Ｔｈｕｍｂ命令をアドレスで参照する場合は最下位ビットは０であり、ジャバ命令を命令アドレスで参照する場合は最下位２ビットは共に任意の値を有してよい。
【００５６】
命令アドレスのビット３１から２は比較器５００に送ってブレークポイント値レジスタ１１０内に記憶されているアドレスと比較し、一致を検出したかどうかを示す出力信号をＡＮＤゲート５１０に送る。詳しく述べると、一致を検出した場合は論理１の値をＡＮＤゲート５１０に送り、そうでない場合は論理０の値を出力する。上の比較に関してはビット１と０とは無視する。他方で、これらの最下位２ビットはバイト・マスク論理１３５に送る。またバイト・マスク論理１３５は３２ビットアドレスで参照する命令の最小アドレス指定可能単位を表す命令幅値も、経路１３４を介して受ける。１つの実施の形態では、命令幅値は値０，１または２を有する２ビット値でよく、それぞれ１，２または４バイトの命令の最小アドレス指定可能単位を示す。この命令幅値が０（１の幅を示す）の場合はジャバ命令（すなわち、１つ以上の８ビットから成る命令）を参照することを示し、命令幅値が１（２の幅を示す）の場合はＴｈｕｍｂ命令（すなわち、１つ以上の１６ビット値から成る命令）を参照することを示し、命令幅値が２（４の幅を示す）場合はＡＲＭ命令（すなわち、３２ビット命令）を参照することを示す。バイト・マスク論理１３５は、ブレークポイント制御レジスタ１２０内に記憶されているバイト・レーン・マスク３４０の４ビットも受ける。これらの種々の入力信号に従ってバイト・マスク論理１３５が生成する出力信号の値を下の表１に示す。
【表１】
2005317023.tif 000003
【００５７】
当業者が認識するように、上の表１に従って動作するようにバイト・マスク論理１３５を構築する方法は種々ある。
表１から認識されるように、バイト・レーン・ビットを全て１にセットした場合は、Ａｄｄｒ［１：０］および幅入力に関係なくバイト・マスク論理１３５からの出力信号は常に１である。また、全てのバイト・レーン・ビットが０の場合は、Ａｄｄｒ［１：０］および幅入力に関係なくバイト・マスク論理１３５からの出力信号は常に０である。後者の場合、これはＡＮＤゲート５１０への１つの入力が常に０であることを意味するので、比較器５００からの出力に関係なく一致信号は常に０であり不一致信号は常に１である。これの有用性については後で説明する。
【００５８】
図８を参照すると、比較器５００が一致を検出しかつバイト・マスク論理１３５が論理１の値を出力する場合は、ＡＮＤゲート５１０は論理１の値を有する一致信号を出力するが、そうでない場合はこの一致信号は論理０の値を有する。この信号を反転した信号もＡＮＤゲート５１０から出力され、不一致信号がセットされている場合はマルチプレクサ１４５，１８０はこの反転信号を選択する。
【００５９】
図９はデバッグ論理３５の別の実施の形態で、ＣＰＵ５０内で可変の長さおよび／または幅の命令を用い、各命令取出しアドレスの結果、所定数のバイトを取り出す場合を示す。ここで一例として、各命令取出しアドレスにより４バイトの命令データを取り出すと仮定する。これは１つのＡＲＭ命令、２つまでのＴｈｕｍｂ命令、または４つまでのジャバ命令を表してよい。この実施の形態では、ブレークポイント論理ユニット１６０は命令の長さまたは幅に関する何の情報も受けず、ブレークポイント論理ユニット１６０は複数のバイト単位のブレークポイント信号を生成して、経路５９０を介してＣＰＵ５０に出す。ＣＰＵ５０は命令取出しの主題である命令の長さと幅に従ってこれらのブレークポイント信号を判断する。
【００６０】
図９のブレークポイント論理ユニット１６０のアドレス比較器５５０はマルチプレクサ５６０への４つの出力信号と４つのこれらの信号の反転信号とを生成するので、マルチプレクサ５６０は８つの入力信号を受ける。アドレス比較器５５０がこれらの信号を生成する方法については後で図１０を参照して説明する。次に不一致制御信号をマルチプレクサ５６０に送って４つの信号のどのセットをマルチプレクサから出力するかを決定し、選択された４つの結果信号のセットを関連するＡＮＤゲート５６５、５７０、５７５、５８０に送る。またこれらの4個のＡＮＤゲートはそれぞれブレークポイント調整論理１４０からの出力信号も受ける。各ＡＮＤゲート５６５、５７０、５７５、５８０は、関連する受けた結果信号がセットされかつブレークポイント調整論理１４０が論理１の値を出力したとき、関連するブレークポイント信号を生成する。
【００６１】
図１０は図９のアドレス比較器５５０内で実行される処理を示す。アドレス比較器論理５５０は内部に比較器６００を備え、比較器６００は命令取出しアドレスのビット３１から２と、ブレークポイント値レジスタ１１０内に記憶されている値とを比較して、一致を表す出力値を示す。詳しく述べると、一致を検出すると論理１の値を出力するが、そうでない場合は論理０の値を出力する。ビット１と０とは無視する。比較器６００からの信号は4個のＡＮＤゲート６１０、６１５、６２０、６２５にそれぞれ送られる。これらのＡＮＤゲートはそれぞれブレークポイント制御レジスタ１２０からバイト・レーン・マスク３４０の関連するビットも受ける。比較器６００が一致を検出した場合でも、バイト・レーン・マスク３４０の関連するビットが論理１の値にセットされている場合だけ、関係するＡＮＤゲート６１０、６１５、６２０、６２５から一致信号として論理１の値を出力する。したがって、アドレス比較器論理の出力には４つ別個の一致信号と４つのこれらの信号の反転信号（図１０では不一致信号と呼ぶ）の対応するセットが生成され、これらの８つの信号がマルチプレクサ５６０に送られる。不一致制御値がセットされた場合は４つの不一致値をマルチプレクサ５６０から出力するが、そうでない場合は４つの一致値をマルチプレクサから出力する。各ＡＮＤゲート５６５、５７０、５７５、５８０はマルチプレクサ５６０の出力信号の対応する１つを受ける。
【００６２】
上に説明した実施の形態では、命令の最小アドレス指定可能単位はバイトであり、したがって作られるブレークポイント信号はバイト単位のブレークポイント信号であると仮定した。しかし命令の最小アドレス指定可能単位がバイトより大きい実施の形態では、バイト単位のブレークポイント信号は必要ない。例えば、ＣＰＵがＡＲＭおよびＴｈｕｍｂ命令セットだけを支援する場合は、必要なのは半語サイズ（すなわち、１６ビット）のブレークポイント信号だけである。かかる場合は、図１０を修正して、バイト・レーン・マスクの最初の２ビットを第１のＯＲゲートに入力し、バイト・レーン・マスクの最後の２ビットを第２のＯＲゲートに入力する。次に、図１０の４個のＡＮＤゲートではなく２個のＡＮＤゲートを用い、各ゲートは対応するＯＲゲートからの出力を受ける。この例では、互換性のためにバイト・レーンはやはりバイト・レーン・マスク内に含まれるが、別の実施の形態ではバイト・レーン・マスクの「奇数」ビットを無視して、実質的に２つの半語マスク・ビットを与える。次にこれらの２つの半語マスク・ビットを２個のＡＮＤゲートに直接入力する。上に述べた２個のＯＲゲートは必要としない。
【００６３】
図１１は、デバッグ論理３５内に複数のブレークポイント論理ユニット１６０を備える本発明の１つの実施の形態を示す。各ブレークポイント論理ユニットは前に図５を参照して説明したものと同じで、アドレス比較器またはプロセス識別子比較器として動作することができる。または、一部のブレークポイント論理ユニットは図２を参照して前に説明した形（すなわち、アドレス比較器）をとってよく、一部は図４を参照して前に説明した形（すなわち、プロセス識別子比較器）をとってよく、また一部は図５を参照して前に説明した形（すなわち、アドレス比較器かプロセス識別子比較器）をとってよい。
【００６４】
診断システム２０は、プログラミング・インターフェース１００を介して、各ブレークポイント論理ユニットのブレークポイント値レジスタ１１０とブレークポイント制御レジスタ１２０内の必要な値をセットしてよい。
各ブレークポイント論理ユニット１６０からのブレークポイント信号はブレークポイント・リンキング・マトリクス６５０に送られる。１つの実施の形態では、各ブレークポイント論理ユニット１６０の制御レジスタ１２０はイネーブル・ビットを含み、調整論理１４０が実行する動作とは関係なくイネーブル・ビットとブレークポイント信号との論理積をとる。詳しく述べると、各ブレークポイント論理ユニットのＡＮＤゲート１５０からの出力と、関連するイネーブル信号との論理積をとって信号を生成し、これをＯＲゲート６６０に送る。ＯＲゲート６６０が受けた信号に従って出力ブレークポイント信号を経路６７０上に生成する。また、各ブレークポイント論理ユニットのＡＮＤゲート１５０からの生の出力信号をマトリクス６５０に直接出力する。
【００６５】
更に、プロセス識別子比較器の出力をアドレス比較器と「リンクした」場合は、ブレークポイント・リンキング・マトリクスはそのプロセス識別子比較器からのブレークポイント信号を、識別されたアドレス比較器のブレークポイント調整論理１４０に入力として送る。この場合、プロセス識別子比較器からのブレークポイント信号はＯＲゲート６６０に送らない。
【００６６】
認識されるように、本発明の上に述べた実施の形態を用いることにより、ブレークポイント信号を出す条件の設定に関して非常に大きな柔軟性が与えられる。網羅的ではないが、かかる実施の形態を用いることのできる方法の例を次に示す。
【００６７】
（ａ）  不一致信号のシングル・ステッピングへの使用
制御レジスタ１２０に与えられた不一致制御値により、プロセッサが出した命令アドレスと値レジスタ内に記憶されている値とを比較した結果を反転することができる。この制御信号がセットされている場合は、取り出された命令のアドレスと値レジスタ１１０内に記憶された値とが一致しないときにブレークポイント信号がプロセッサに表明される。
【００６８】
したがって、この単一の不一致制御値によりシングル・ステッピングを行うことができる。シングル・ステッピングを行うには、「からステップする」命令のアドレスを値レジスタ１１０内にプログラムし、「不一致」制御ビットをセットする。次に、プロセッサは第１の命令をロードする。この命令のアドレスは値レジスタのアドレスと一致するので、ブレークポイント信号がコアに送られない。次に、プロセッサは次々に命令を取り出す。これらの命令のそれぞれのアドレスは値レジスタ内のアドレスと一致しないので、ブレークポイント信号がプロセッサに送られる。したがって、「からステップする」命令を実行した後は、プロセッサは実行すべき次の命令の実行を停止する。
【００６９】
（ｂ）  不一致信号と他の制御信号とを組み合わせて複雑なシングル・ステップ制御を生成する
この不一致制御値は、ブレークポイント信号の挙動を制御する複数の制御値の１つとして用いることができる。プロセッサがブレークポイント信号を送る前に全てのこれらの制御値が満たされなければならない。
例えば、プロセッサが優先モードで走っている場合は、第２の制御値はプロセッサがブレークポイントを送るかどうかを制御する。
【００７０】
デバッグされるコードが優先コードでない場合は非優先モードで走る。例外は常に優先モードで処理され、処理が終わると例外ハンドラは非優先プログラムに戻る。この第２の制御値を或る第１の値にセットしかつ「不一致」制御値をセットすることにより、診断システムはシングル・ステップが非優先モードの次の命令にだけステップすることを保証することができる。これにより、命令により例外が起こるかまたはその他の理由で例外が起こる場合は、例外ハンドラにシングル・ステップする（他のシングル・ステッピング方式はこのように動作する）のではなく、例外を処理するまでプロセッサは停止しない。
【００７１】
別の制御値はブレークポイントをプロセス識別子比較器に「リンクする」。プロセッサ上で走る制御ソフトウエアが制御値レジスタ内にプログラムした現在のプロセス識別子のそれとプロセス識別子比較器とが一致するとき、プロセッサはブレークポイント信号を送る。この制御値と「不一致」制御値とをセットすることにより、診断システムはシングル・ステップが現在のプロセスの次の命令にだけステップすることを保証することができる。
【００７２】
別の制御値は、プロセッサが安全な状態で走っている場合にプロセッサがブレークポイント信号を送るかどうか、またはプロセッサが非安全な状態で走っている場合にプロセッサがブレークポイント信号を送るかどうかを制御する。この制御値と「不一致」制御値とを適当にセットすることにより、診断システムはシングル・ステップが次の安全な／非安全な命令にだけステップすることを保証することができる。
【００７３】
（ｃ）  「どこでも一致しない」ブレークポイントと組み合わせて複雑な「に走る」制御のために「どこでも一致する」ブレークポイントを作る
上の（ａ）と（ｂ）とに用いてよい或る簡単なアドレス比較器は３２ビット値から成り、この３２ビットとプロセッサが出す命令の３２ビット・アドレスとを直接比較する。３２ビット値が同じ場合はブレークポイント信号が送られる。
図８と図１０とで説明した特別の種類のアドレス比較器により、単一のブレークポイントは多くの同様のアドレスで一致することができる。バイト・レーン・マスクを全て０にセットすることにより、どのアドレスもブレークポイント信号を送ることができない。次に「不一致」制御値を与えると、全てのアドレスがブレークポイントを生成する設定を生成する。したがってアドレスに関係なく、プロセッサは実行すべき全ての命令の実行を停止する。それ自体で用いるとき、これにより診断システムはプロセッサの実行を停止することができる。上に述べた他のブレークポイント制御値と共に用いるとき、これにより次のブレークポイント・シナリオを確立することができる。
・  プロセッサが優先モードに入ると停止する／プロセッサが非優先モードに入ると停止する。
・  プロセッサが或るプロセスからのコードの実行を開始すると停止する。
・  プロセッサが安全状態に入ると停止する／プロセッサが非安全状態に入ると停止する。
【００７４】
（ｄ）  不一致制御をプロセスＩＤ比較と共に用いる
上に述べたのはプロセスＩＤ比較器であった（図３，４，５，６，７の説明を参照のこと）。これは、デバッグ値レジスタ内に保持されている特有の３２ビット識別子と、プロセッサ上で走るシステム・ソフトウエアが実行中のプログラムを変えるときに制御レジスタ内にプログラムした３２ビット値とを比較して動作する。
【００７５】
プロセスＩＤ比較器は単独で動作してブレークポイント信号をコアに送ることもできるので、プロセッサが制御レジスタ内にプログラムされた一致する３２ビット識別子を有するとき、また他の制御値によりブレークポイント信号を送ることができるとき、プロセッサは実行を停止する。不一致制御値はこの比較器にも与えることができるので、次のブレークポイント・シナリオを確立することができる。
・  プロセッサが指定されたプロセスを走らなくなるまで走る。
・  プロセッサが優先モードにあって、指定されたプロセスを走らなくなるまで走る／プロセッサが非優先モードにあって、指定されたプロセスを走らなくなるまで走る。
・  プロセッサが安全状態にあって、指定されたプロセスを走らなくなるまで走る／プロセッサが非安全状態にあって、指定されたプロセスを走らなくなるまで走る。
【００７６】
認識されるように、上の（ｂ）から（ｄ）までに述べた例は網羅的なものではなく、他の組合せが考えられる。
また認識されるように、本発明の上記の実施の形態はハーバード構造（すなわち、命令メモリとデータ・メモリとが別々）またはフォン・ノイマン構造（すなわち、命令とデータとを記憶するための統一メモリ構造）を処理装置１０に用いる場合に用いてよい。フォン・ノイマン構造を用いる場合は、経路１３４を通る命令取出し制御信号は、アドレスが関係するのが命令アドレスかデータ・アドレスかを示す追加の制御信号を含む。
【００７７】
特定の実施の形態についてここに説明したが、認識されるように、本発明はこれに限定されるものではなく、本発明の範囲内で多くの変更や追加を行うことができる。例えば、本発明の範囲から逸れずに、従属クレームの特徴と独立クレームの特徴との種々の組合せを行うことができる。
【図面の簡単な説明】
【００７８】
本発明について、単なる例であるが、以下の添付の図面に示す好ましい実施の形態を参照して説明する。
【図１】本発明の好ましい実施の形態に係る１つ以上のブレークポイント論理ユニットを用いることのできる処理装置の略ブロック図である。
【図２】本発明の１つの実施の形態に係るブレークポイント論理ユニットの詳細な配置を示す略図である。
【図３】本発明の１つの実施の形態に係る図２のブレークポイント論理ユニットとプロセス識別子比較器とを組み合わせた使用を示す略ブロック図である。
【図４】本発明の別の実施の形態に係るブレークポイント論理ユニットを示す略図である。
【図５】本発明の別の実施の形態に係るブレークポイント論理ユニットを示す略ブロック図である。
【図６】本発明の１つの実施の形態に係るブレークポイント論理ユニットのブレークポイント制御レジスタの内容を示す図である。
【図７】本発明の１つの実施の形態のブレークポイント論理ユニットのブレークポイント調整論理内で行われる動作を示すブロック図である。
【図８】ＣＰＵが可変幅命令セットを用いる場合の図２，３，５のアドレス比較器の動作を示すブロック図である。
【図９】ブレークポイント論理ユニットが多重ブレークポイント信号を作る本発明の別の実施の形態に係るブレークポイント論理ユニットを示す略図である。
【図１０】図９のアドレス比較器の動作を示す略図である。
【図１１】デバッグ論理内に多重ブレークポイント論理ユニットを備える本発明の或る実施の形態の図である。
【符号の説明】
【００７９】
１１０  ブレークポイント値レジスタ
１２０  ブレークポイント制御レジスタ
１３０  アドレス比較器
１６０  ブレークポイント論理ユニット
【図１】
2005317023.tif 000004
【図２】
2005317023.tif 000005
【図３】
2005317023.tif 000006
【図４】
2005317023.tif 000007
【図５】
2005317023.tif 000008
【図６】
2005317023.tif 000009
【図７】
2005317023.tif 000010
【図８】
2005317023.tif 000011
【図９】
2005317023.tif 000012
【図１０】
2005317023.tif 000013
【図１１】
2005317023.tif 000014