JP3846939B2 - データプロセッサ - Google Patents
データプロセッサ Download PDFInfo
- Publication number
- JP3846939B2 JP3846939B2 JP23987896A JP23987896A JP3846939B2 JP 3846939 B2 JP3846939 B2 JP 3846939B2 JP 23987896 A JP23987896 A JP 23987896A JP 23987896 A JP23987896 A JP 23987896A JP 3846939 B2 JP3846939 B2 JP 3846939B2
- Authority
- JP
- Japan
- Prior art keywords
- signal
- breakpoint
- value
- data
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
【発明の属する技術分野】
本発明は一般的にはデータ処理システムに関し、かつより特定的にはデータ処理システムにおいてデバッグ機能を行うための方法および装置に関する。
【0002】
【従来の技術】
データ処理システムが設計されたとおり動作しない場合、障害の源を識別するために種々の分析技術を使用することができる。一般に、トレース機能(trace functions)およびブレークポイント機能(breakpoint functions)がデータ処理システム内で行われてうまく作動しない回路の分離およびうまく作動しないソフトウエアプログラムの訂正を助ける。
【0003】
これらの機能は外部ユーザがデータ処理動作の実行の中間結果を観察できるようにする。トレース機能は一般にデータ処理システムによってソフトウエアプログラムの各命令または所定のグループの命令が実行された後に該データ処理システムに含まれる選択されたレジスタおよびメモリのステータスを提供する。選択されたレジスタおよびメモリのステータスを反映させることにより、トレース機能は外部ユーザにデータプロセッサまたはデータ処理システムの内部プログラミングモデルに関する非常に詳細な情報を提供する。この情報により、多くの形式のエラーは識別できかつ実質的に訂正できる。ブレークポイント機能もまたデータ処理システムにおける誤ったソフトウエアコードまたは欠陥のある回路を識別しかつ分離するための方法を提供する。ブレークポイント機能は、要するに、予めプログラムされた事象が発生した場所においてソフトウエアプログラム中で中断を生じさせるものである。次にソフトウエアプログラムのステータスを判定するためにデータが得られる。トレース機能と同様に、ブレークポイント機能は外部ユーザがデータ処理のエラーが識別できるように選択されたレジスタおよびメモリのおのおののステータスを確かめることができるようにする。
【0004】
トレース機能およびブレークポイント機能の双方は現在入手可能なデータ処理システムにおいて集積回路化されてきており前に述べた分離および識別能力を提供する。例えば、アメリカ合衆国、カリフォルニア州、サンタ・クララのインテル・コーポレイションから入手可能な、i960Jxマイクロプロセッサはトレース事象(trace events)およびトレース障害(trace faults)を発生する内部ブレークポイントレジスタを有する集積回路マイクロプロセッサである。i960Jxマイクロプロセッサにおいては、内部ブレークポイントレジスタは命令実行アドレスに際してまたは種々のタイプのデータアクセスのアドレスに際してトラップまたは捕捉するのに専用のものである。i960Jxマイクロプロセッサのトレーシング設備を使用するためには、マイクロプロセッサを使用するソフトウエアは障害処理手順またはデバッグ用モニタプログラムとのインタフェースを提供しなければならない。種々のトレーシングモードを可能にしかつトレーシング機能を選択的にイネーブルしまたはディスエーブルするためにいくつかのレジスタおよび制御ビットを操作するためにもソフトウエアが必要とされる。
【0005】
同様に、アメリカ合衆国、カリフォルニア州、サンタ・クララのインテル・コーポレイションから入手可能な、80486マイクロプロセッサは内部ブレークポイントレジスタを備えた集積回路マイクロプロセッサでありかつトレース機能を行うことができる。80486マイクロプロセッサでは、ブレークポイント命令は内部ソフトウエアのデバッガ装置によって使用するために実施されこの場合内部ソフトウエアは単にデータ処理システムで動作するソフトウエアを参照するのみである。一般の動作の間は、ソフトウエアデバッグプログラムは実行されるソフトウエアコードの種別に依存するすべての所望のブレークポイントにおいてブレークポイント命令を実施することができる。前記80486型マイクロプロセッサはまたトラップルーチンが実行された後に割込みを実行する単一ステップのトラップ機能を実施するためのメカニズムを提供する。
【0006】
【発明が解決しようとする課題】
前記i960Jx型マイクロプロセッサおよび80486型マイクロプロセッサはブレークポイントおよびトレース機能を集積しているが、該マイクロプロセッサのデバッグ機能は該マイクロプロセッサが通常の動作を中止しかつ特別のデバッグ例外ルーチンに入ることを要求する。該デバッグ例外ルーチンの間は、マイクロプロセッサはそれらが通常の動作の間に行うように機能せずかつ、従って、回路またはソフトウエアの障害が同様に発生しないことがある。その結果、外部ユーザはリアルタイムの障害状態が実際に起こらない場合はいずれのマイクロプロセッサにおいても障害の根本原因を確認しかつ分離することができないであろう。
【0007】
さらに、前記i960Jx型マイクロプロセッサおよび前記80486型マイクロプロセッサはいずれもブレークポイントおよびトレース機能の間にプログラム制御を提供するためにマイクロプロセッサによって実行される内部ソフトウエアデバッグプログラムを必要とする。そのようなデバッグ制御を使用することは多量のオーバヘッドを必要とする非常に侵入的な(intrusive)方法のデバッグを提供する。また、デバッグ用ソフトウエアを使用することは障害のマイクロプロセッサにおける障害の回路またはシーケンスの真の反映を与えることができない。
【0008】
従って、リアルタイムのトレースおよびリアルタイムのデバッグ機能の双方を提供するデータプロセッサの必要性が存在する。もしトレースおよびデバッグ機能の双方が通常動作の間に、かつ特別のデバッグモードの動作においてではなく、データプロセッサの動作を反映する方法で実行されれば、外部ユーザはデータプロセッサの回路およびソフトウエアの障害をより正確に識別しかつ訂正できるであろう。
【0009】
【課題を解決するための手段】
本発明はブレークポイントおよびトレース機能の双方をリアルタイムでかつ特別のモードの動作を必要とすることなく提供できるデータ処理システムを提供する。さらに、ブレークポイントおよびトレース機能の双方はデータ処理システムによって、データプロセッサが外部アドレスバスまたは外部データバスを介してアドレスおよびデータ情報を提供するためにテストされることを必要とすることなく実行できる。この外部バスからの独立性は本発明がサイズ、タイプ、プロトコル、または外部バスの存在にもかかわらず種々のデータ処理システムに対し適用できる効率的なデバッグメカニズムを提供できるようにする。
【0010】
さらに、本発明はトレースおよびブレークポイント機能をリアルタイムで実施するためのアーキテクチャおよび方法を提供する。テストされているデータプロセッサは典型的にはトレースおよびブレークポイント機能が実行される前に動作を停止しまたは変更することを要求されない。従って、本発明は、データプロセッサが通常通り動作しておりかつデバッグ動作のための特別のモードにない間に外部ユーザが障害を分離できるようにする。また、本発明はリアルタイムのトレースまたはリアルタイムのデバッグ動作の実行に応じて直接外部ユーザにデータを提供する。トレース機能またはデバッグ機能を行うために外部ソフトウエアモニタプログラムまたは外部エミュレータを必要とする従来技術の装置と異なり、本発明はデータプロセッサの現在の動作を示すデータを外部ユーザに提供する。従って、本発明はデータプロセッサに大幅に侵入しまたは悪影響を与えることなくトレースおよびデバッグ機能を提供する。本発明の動作は引き続き詳細に説明する。
【0011】
【発明の実施の形態】
以下の説明では、本発明を実施するデータ処理システムの1実施形態の接続および動作につき非常に詳細に説明する。
【0012】
<本発明の接続構成>
本発明の接続構成の以下の説明では、用語「バス」は、データ、アドレス、制御またはステータスのような、1つまたはそれ以上の種々のタイプの情報を転送するために使用できる複数の信号または導体に言及するために使用される。用語「肯定する」および「否定する」は信号、ステータスビット、または同様の装置を、それぞれ、その論理的に真のまたは論理的に偽の状態にする場合に使用される。もし前記論理的に真の状態が論理レベル“1”であれば、前記論理的に偽の状態は論理レベル“0”である。また、もし前記論理的に真の状態が論理レベル“0”であれば、前記論理的に偽の状態は論理レベル“1”である。
【0013】
さらに、ある数に先行する記号“$”はその数が16進または16をベースとする形式で表されていることを示す。ある数に先行する記号“%”はその数がその2進または2をベースとした形式で表されていることを示す。
【0014】
次に図1を参照すると、図1は本発明の1実施形態に係わるデータ処理システム5を示す。データ処理システム5はデータプロセッサ3および外部開発システム(external development system)7を具備する。データプロセッサ3はシステムバスコントローラ8、コア(core)9、スレイブモジュール12、スレイブモジュール13、マスタモジュール14、およびデバッグモジュール10を含む。システムバスコントローラ8はE−バスを介して外部装置(ここでは図示されていない)に結合されている。システムバスコントローラ8はS−バスを介してスレイブモジュール12およびスレイブモジュール13に結合されている。該S−バスはスレイブモジュールバスである。システムバスコントローラ8はM−バス23を介してコア9およびマスタモジュール14に結合されている。M−バス23はマスタモジュールバスである。
【0015】
コア9は中央処理ユニット(CPU)2、メモリ管理ユニット(MMU)/コントローラ4、およびメモリ6を具備する。中央処理ユニット2、MMU/コントローラ4、メモリ6、およびデバッグモジュール10はおのおの互いにK−バス25を介して結合されている。中央処理ユニット2およびメモリ6はまた直接MMU/コントローラ4に接続されている。MMU/コントローラ4は情報をM−バス23を介してデータ処理システム5の残りの部分に提供する。中央処理ユニット2はCPST信号を提供するためにおよびストール(Stall)信号を受信するためにデバッグモジュール10に結合されている。CPU2はまた外部装置からリセット(Reset)信号を受信する。デバッグモジュール10はプロセッサステータス(PST)信号、デバッグデータ(DDATA)信号、および開発シリアルデータ出力(development serial dataout:DSDO)信号を外部ユーザに提供する。デバッグモジュール10は開発シリアルデータ入力(development serial data in:DSDI)信号、開発シリアルクロック(DSCLK)、およびブレークポイント(*BKPT)信号をデータ処理システム5の外部の装置(図示せず)から受け取る。なお、ここで記号*は信号の論理的反転を示し、いわゆるオーババー(overbar)に対応する。
【0016】
図2は、デバッグモジュール10をより詳細に示す。デバッグモジュール10は制御回路20、シリアルインタフェース30、レジスタ32、複数の制御レジスタ40、複数のハードウエアブレークポイントレジスタ50、制御回路60、FIFO70、複数のマルチプレクサ80、およびブレークポイント回路100を含む。
【0017】
前記*BKPT信号は外部集積回路ピン(図2には詳細に示されていない)を介して制御回路20に与えられる。制御回路20は複数のビットを有する「ステータス(Status)」信号を受信するために複数の制御レジスタ40に結合されている。制御回路20はブレークポイント回路100に結合されて複数のビットを有する「ブレークポイント(Breakpoint)」信号を受け取る。制御回路20は複数のビットを有する「トレース(Trace)」信号を提供するために制御回路60に結合されている。制御回路20は制御バス15を介して前記複数の制御レジスタ40、前記複数のハードウエアブレークポイントレジスタ50、およびレジスタ32に結合されている。制御回路20は複数の「ブレークポイント制御」信号および「バス要求」信号をCPU2に提供する。制御回路20はまたCPU2によって提供される「バス承認」信号を受信する。
【0018】
前記複数の制御レジスタ40はレジスタ32からマルチビットシリアル情報信号を受け取る。前記複数の制御レジスタ40は複数のビットを有する「構成(Configuration)」信号を制御回路60に提供する。ブレークポイント回路100はK−バス25からKADDR(Kアドレス)信号およびKDATA信号を受信する。前記複数のハードウエアブレークポイントレジスタ50はまた複数のビットを有する「内部データ」信号をレジスタ32に提供する。K−バス25はまた前記複数のハードウエアブレークポイントレジスタ50に提供されている。K−バス25はKADDR信号、KDATA信号、およびKCONTROL信号の集まりであることに注意を要する。これらKADDR、KDATA、およびKCONTROL信号のおのおのはブレークポイント回路100に入力される。
【0019】
シリアルインタフェース30は、それぞれ、第1および第2の集積回路ピンからDSDIおよびDSCLK信号を受信する。シリアルインタフェース30はDSDO信号を第3の集積回路ピンに提供する。シリアルインタフェース30はレジスタ32に結合されている。レジスタ32は前記複数の制御レジスタ40および前記複数のハードウエアブレークポイントレジスタ50に結合されてマルチビット(シリアル情報)信号を提供する。
【0020】
制御回路60は「ストール」信号をCPU2に提供する。制御回路60はまた「FIFO制御」信号をFIFO70にかつ「Mux制御」信号を複数のマルチプレクサに提供する。FIFO70はK−バス25に結合されて前記KADDRおよびKDATA信号を受信する。FIFO70はまたFIFO信号を提供するために前記複数のマルチプレクサ80に結合されている。FIFO70はまた「フル(Full)」信号を制御回路60に提供する。前記複数のマルチプレクサ80はCPU2からCPST信号を受信する。前記複数のマルチプレクサ80はDDATA信号およびPST信号を提供する。
【0021】
制御回路20はシリアルインタフェース30を動作させるためにおよびレジスタ32内の情報の格納を制御するために必要な信号を提供する。いったんレジスタ32にデータがロードされると、制御回路20はこのデータを制御回路40または前記複数のハードウエアブレークポイントレジスタ50の適切な宛先へと転送するよう指令する。制御回路20によって実行される制御機能は「制御」バス15によって通信される。ロード動作の実行を制御することに加えて、制御回路20は制御回路40からステータス情報を受信しかつブレークポイント回路100からブレークポイント情報を受信する。制御回路20は集合的に該ステータス情報およびブレークポイント情報を使用して前記「バス要求」信号、「ブレークポイント制御」信号、および「トレース」信号を発生する。
【0022】
図3は、ブレークポイント回路100をより詳細に示す。ブレークポイント回路100はアドレスブレークポイントハイレジスタ(ABHR)110、アドレスブレークポイントローレジスタ(ABLR)120、比較器130、比較器140、データブレークポイントマスクレジスタ(DBMR)150、データブレークポイントレジスタ(DBR)160、一時データレジスタ170、比較器180、プログラムカウンタブレークポイントマスクレジスタ(PBMR)190、プログラムカウンタブレークポイントレジスタ(PBR)115、一時プログラムカウンタ(PC)レジスタ125、および比較器135を具備する。
【0023】
制御バス15はABHR 110,ABLR 120,DBMR 150,DBR 160,PBMR 190,およびPBR 115のおのおのの入力に結合されている。前記「シリアル情報」信号はABHR 110,ABLR 120,DBMR 150,およびDBR160のおのおのの入力に結合されている。前記KCONTROL信号はPBMR 190,PBR 115,および一時PCレジスタ125のおのおのの入力に結合されている。ABHR 110の第1の出力は前記KADDR信号に結合されている。制御バス15はまた一時レジスタ170および125に結合されている。前記「シリアル情報」信号は比較器130の第1の入力に結合されている。前記KADDR信号は第2の入力を比較器130に提供する。ABLR 120は第1の入力を比較器140に提供しかつ前記KADDR信号は第2の入力を比較器140に提供する。比較器130の出力および比較器140の出力はともに前記「ブレークポイント」信号導体に結合されている。
【0024】
DBMR 150の出力は比較器180のイネーブル入力に結合されている。DBR 160の出力は比較器180の第1の入力に結合されている。前記KDATA信号は一時データレジスタ170の入力に結合されている。一時データレジスタ170の出力は比較器180の第2の入力にかつ前記「内部データ」信号に結合されている。比較器180の出力は前記「ブレークポイント」信号導体に結合されている。
【0025】
PBMR 190の出力は比較器135のイネーブル入力に結合されている。PBR 115の出力は比較器135の第1の入力に結合されている。前記KCONTROL信号は一時プログラムカウンタレジスタ125の入力に結合されている。一時PCレジスタ135の出力は比較器135の第2の入力に結合されている。比較器135の出力は前記「ブレークポイント」信号導体に結合されている。
【0026】
図12は中央処理ユニット2の一部をより詳細に示す。中央処理ユニット2の該部分は命令フェッチパイプライン(IFP)210およびオペランド実行パイプライン(OEP)220を具備する。IFP 210は命令アドレス発生回路202、命令フェッチ回路204、およびFIFO命令バッファ206を含む。OEP 220はオペランドフェッチ回路212、およびアドレス発生回路214を具備する。
【0027】
命令アドレス発生回路202の出力はバッファ208の第1の入力に結合されている。命令フェッチ回路204の出力はFIFO命令バッファ206およびオペランドフェッチ回路212の双方に結合されている。FIFO命令バッファ206の出力はオペランドフェッチ回路212に結合されている。アドレス発生回路214の第1の出力はバッファ208の第2の入力に結合されている。アドレス発生回路214の第2の出力はバッファ216に結合されている。
【0028】
バッファ216の第1の出力はオペランドフェッチ回路212におよび命令フェッチ回路204に結合されている。バッファ216の第2の出力はKDATA信号を提供する。該KDATA信号はまたバッファ216に提供される。バッファ206の出力は前記KADDR信号を提供する。
【0029】
<レジスタの説明>
図4は、複数の制御レジスタ40の一部をより詳細に示す。本発明の1つの実施形態では、前記複数の制御レジスタ40の該部分はトリガ定義レジスタ(Trigger Definition register:TDR)および構成/ステータスレジスタ(CSR)を含む。
【0030】
前記TDRはデバッグモジュール10の構成を記憶しかつパイプライン化条件の下で実行される選択された機能のための制御を提供する。本発明のこの実施形態では、トリガは1または2レベルトリガとして構成され、この場合ビット31〜16は第2のレベルのトリガを規定しかつビット15〜0は第1のレベルのトリガを規定する。該トリガが2レベルトリガとして構成される場合、該トリガは条件構成(conditional construct)と同様に機能する。例えば、もし第1の条件、またはレベル、のトリガが満たされれば、第2の条件、またはレベル、が、トリガがデータ処理システム5によって実行されるべきブレークポイント機能を可能にする前に満たされなければならない。これは以下の表のように言い換えることができる。
【0031】
【表1】
もし第1の条件が満たされ、
次に、もし第2の条件が満たされれば、
次にトリガ。
(If 1st condition is satisfied,
then if 2nd condition is satisfied
then TRIGGER.)
【0032】
前記TDRに含まれるビットのおのおのの機能につき引き続きより詳細に説明する。
【0033】
TDRが図7により詳細に示されている。該TDRのPCIビットは「プログラムカウンタブレークポイント反転(Program Counter Breakpoint Invert)」ビットである。もしPCIビットが肯定されれば、プログラムカウンタブレークポイントは前記プログラムカウンタブレークポイント(PBR)およびプログラムカウンタブレークポイントマスク(PBMR)レジスタで規定される範囲の外側で開始される。もしPCIビットが否定されれば、プログラムカウンタのブレークポイントは前記PBRおよびPBMRで規定される範囲内で規定される。
【0034】
プログラムカウンタブレークポイントイネーブル(Enable Program Counter Breakpoint:EPC)ビットは選択的に、それが肯定されたとき、プログラムカウンタブレークポイント、PBRおよびPBMR、に対するトリガの依存性をイネーブルする。前記EPCビットが否定されたとき、プログラムカウンタのブレークポイントはディスエーブルされる。
【0035】
肯定されたとき、イネーブルアドレスブレークポイントロー(Enable Address Breakpoint Low:EAL)ビットは前記複数のハードウエアブレークポイントレジスタ50の「アドレスブレークポイントレジスタ」のABLRに格納されたアドレスがブレークポイントトリガとして機能できるようにする。従って、もしEALビットが肯定されれば、前記KADDR信号を介して転送されるアドレス値が前記「アドレスブレークポイントレジスタ」のABLRに格納されたアドレス値と同じ場合にブレークポイントはトリガする。
【0036】
「イネーブルアドレスブレークポイントレンジ(Enable Address Breakpoint Range:EAR)」ビットは該ビットが肯定されたとき前記複数のハードウエアブレークポイントレジスタ50の「アドレスブレークポイントレジスタ」のABHRおよびABLRによって規定される包括的レンジ(inclusive range)に際してブレークポイントがトリガできるようにする。従って、もし前記EARビットが肯定されれば、前記KADDR信号を介して転送されるアドレス値が前記「アドレスブレークポイントレジスタ」のABLRおよびABHRに格納されたアドレス値によって規定される範囲内にある場合にブレークポイントはトリガする。
【0037】
肯定されたとき、「イネーブルアドレスブレークポイント反転(EnableAddress Breakpoint Inverted:EAI)」ビットは前記複数のハードウエアブレークポイントレジスタ50の「アドレスブレークポイントレジスタ」のABLRおよびABHRによって規定される範囲を除いた、または該範囲の外側の、アドレス範囲に際してブレークポイントがトリガできるようにする。従って、EAIビットが肯定されたとき、前記KADDR信号を介して転送されるアドレス値が前記「アドレスブレークポイントレジスタ」のABLRに格納されたアドレス値より小さいか、あるいは前記「アドレスブレークポイントレジスタ」のABHRに格納されたアドレス値より大きい場合にブレークポイントはトリガする。
【0038】
「データブレークポイント反転(Data Breakpoint Invert:DI)」ビットはそれが肯定されたとき複数のデータブレークポイント比較器の論理的センス(logical sense)を反転する。該DIビットは前記複数のハードウエアブレークポイントレジスタ50のDBR内にプログラムされたデータ値と等しくないデータ値の出現にもとづきトリガを展開するために使用できる。
【0039】
肯定されたとき、「上位上部データバイトのためのデータブレークポイントイネーブル(Enable Data Breakpoint for the Upper Upper Data Byte:EDUU)ビットは前記KDATA信号およびK−バス25を介して転送されるデータ値のビット31〜24にもとづきデータブレークポイントのトリガを可能にする。同様に、肯定されたとき、「上位中部データバイトのためのデータブレークポイントイネーブル(Enable Data Breakpoint for the Upper Middle Data Byte:EDMU)」ビットは前記KDATA信号およびK−バス25を介して転送されるデータ値のビット23〜16にもとづきデータブレークポイントのトリガを可能にする。さらに、肯定されたとき、「下位中部データバイトのためのデータブレークポイントイネーブル(Enable Data Breakpoint for the Lower MiddleData Byte:EDLM)ビットは前記KDATA信号およびK−バス25を介して転送されるデータ値のビット15〜8に基づきデータブレークポイントのトリガを可能にする。また、肯定されたとき、「下位下部データバイトのためのデータブレークポイントイネーブル(Enable Data Breakpoint for the Lower Lower Data Byte:EDLL)」ビットは前記KDATA信号およびK−バス25を介して転送されるデータ値のビット8〜0にもとづきデータブレークポイントのトリガを可能にする。
【0040】
「上位データワードのためのデータブレークポイントイネーブル(Enable Data Breakpoint for the Upper DataWord:EDWU)」ビットは肯定されたとき前記KDATA信号およびK−バス25を介して転送されるデータ値のビット31〜16にもとづきデータブレークポイントのトリガを可能にする。「下位データワードのためのデータブレークポイントイネーブル(Enable Data Breakpoint for the Lower Data Word:EDWL)」ビットは肯定されたとき前記KDATA信号およびK−バス25を介して転送されるデータ値のビット15〜0に基づきデータブレークポイントのトリガを可能にする。
【0041】
「データロングワードのためのデータブレークポイントイネーブル(Enable Data Breakpoint for the Data Longword:EDLW)」ビットは肯定されたとき前記KDATA信号およびK−バス25を介して転送されるデータ値のビット31〜0にもとづきデータブレークポイントのトリガを可能にする。前記EDUU,EDUM,EDLM,EDLL,EDWU,EDWL,およびEDLWビットの内のいずれのものの肯定もデータブレークポイントのトリガを可能にすることに注目すべきである。一般に必要とされるように、前記与えられた条件はデータブレークポイントが実際にトリガされる前に生じるべきである。もし前記EDUU,EDUM,EDLM,EDLL,EDWU,EDWL,およびEDLWビットのおのおのが否定されれば、前記データブレークポイントのトリガは本発明の1実施形態ではディスエーブルされる。
【0042】
さらに、本発明のこの実施形態においては、データブレークポイントのトリガはミスアラインの(misaligned)またはアンアラインの(unaligned)オペランド参照に応じて発生するようにすることができる。ミスアラインのまたはアンアラインのオペランド参照に応じたブレークポイントトリガのこの発生は以下の方法を使用する。バイトサイズの参照に対しては、適切な組のデータビットがオペランドアドレスの2つの下位ビットの関数としてプログラムされる。以下の例を参照されたい。
【0043】
【表2】
【0044】
ワードサイズの参照については、前記KDATA信号を介して転送されるデータ値のビット31〜16またはビット15〜0が前記KADDR信号のビット1の関数としてプログラムされることになる。もし前記KADDR信号のビット1が論理“0”の値であれば、ビット31〜16がプログラムされる。もし前記KADDR信号のビット1が論理“1”の値であれば、ビット15〜0がプログラムされる。ロングワードの参照に対しては、前記KADDR信号のビット31〜0がプログラムされる。
【0045】
「イネーブルブレークポイントレベル(Enable BreakpointLevel:EBL)」ビットは肯定されたときブレークポイントトリガのための包括的イネーブル(global enable)として作用する。もし該EBLビットか肯定されなければ、すべてのブレークポイントトリガはディスエーブルされる。
【0046】
「トリガ応答制御(Trigger Response Control:TRC)」値はデータ処理システム5が完成したトリガ条件に応答する様式を決定する。前記トリガ応答は複数の集積回路ピンによって提供される前記DDATA信号を介して外部ユーザに表示される。前記TRC値が%01の論理値を有する場合、ブレークポイント回路100によって検出されるハードウエアブレークポイント条件の発生はCPU2への前記「ブレークポイント」信号を肯定するよう制御回路20をイネーブルする。前記「ブレークポイント」信号の肯定はCPU2に対しデータ処理命令の通常の実行を割込み可能なポイントで中止させる。前記TRC値が%10の論理値を有する場合、ハードウエアブレークポイント条件の発生は制御回路20に対しCPU2へのデバッグ割込み信号を肯定するようイネーブルする。該デバッグ割込み信号が肯定されたとき、CPU2は割込み可能なポイントで通常の実行を中止しかつ予め定められた例外処理ルーチンを実行する。
【0047】
前記「構成ステータスレジスタ(CSR)」は図8により詳細に示されている。該CSRはデータ処理システム5のCPU2、MMU/コントローラ4、メモリ6、およびデバッグモジュール10の動作構成を規定する。データ処理システム5の構成を規定することに加え、CSRはブレークポイント回路100の状態を指示するステータス情報を含む。
【0048】
データ処理システムがリセットされた場合にはCSRはクリアされることに注目すべきである。さらに、CSRは、データ処理システムがバックグランドデバッグ動作モードにある場合に外部開発システム(ここでは図示されていない)によって読まれかつ書かれることができる。前記バックグランドデバッグ動作モードは後により詳細に説明する。CSRに含まれるおのおののビットの機能は後により詳細に説明する。
【0049】
図7に示されるように、CSRはデータ処理システム5におけるハードウエアのブレークポイント機能についてのリードオンリステータス情報を規定しかつ提供する。「ブレークポイントステータス」フィールドに格納された情報はブレークポイント回路100によって提供されるブレークポイントトリガ情報に応じて前記複数の制御レジスタ40によって発生される。「ステータス」フィールドに格納された情報は前記複数の制御レジスタ40におけるTDRの関数である。前記「ステータス」フィールドが$0の論理値を記憶しているとき、いずれのハードウエアブレークポイントもイネーブルされない。前記「ステータス」フィールドが$1の論理値を記憶しているとき、デバッグモジュール10はレベル1のブレークポイントがトリガされるのを待機している。前に述べたように、レベル1のブレークポイントの属性は「トリガ定義レジスタ(TDR)」のビット15〜0によって規定される。もし$2の論理値がCSRの「ステータス」フィールドに記憶されておれば、レベル1のブレークポイントがトリガされている。前記「ステータス」フィールドが$5の論理値を記憶している場合は、デバッグモジュール10はレベル2のブレークポイントがトリガされるのを待機している。前に述べたように、レベル2のブレークポイントの属性は前記「トリガ定義レジスタ(TDR)」のビット31〜16によって規定される。もし$6の論理値がCSRの「ステータス」フィールドに記憶されておれば、レベル2のブレークポイントがトリガされている。
【0050】
前記CSRの「ステータス」フィールドにおいて反映されたブレークポイントステータスは前記DDATA信号を提供する複数の外部集積回路ピンを介して外部ユーザ(図2には示されていない)に提供される。前記DDATA信号は該信号がK−バス25によって捕捉されたデータを表示していない場合に前記ブレークポイントステータスを反映する。さらに、前記CSRの内容は任意の時間にシリアルインタフェース30を使用して読めることに注意を要する。従って、前記ブレークポイントステータスは2つの手段、すなわち前記DDATA信号が捕捉されたデータを表示していない場合は前記DDATA信号、またはシリアルインタフェース30を使用した「CSR読取り(READ CSR)」コマンド、を介して得ることができる。
【0051】
前記CSRはまた4ビット値を提供し、これは外部開発システム7へのバックグランドまたは背景デバッグモードへのエントリステータスを示す。前記4ビット値の最初のビットはFOFビットである。肯定されたとき、フォールト・オン・フォールト(Fault−on−Fault:FOF)」ビットはデータ処理システム5のCPU2の破滅的な停止が生じておりかつデータ処理システム5は強制的にバックグランドのデバッグモードの動作に入れられたことを示す。該バックグランドのデバッグモードの動作は後により詳細に説明する。前記FOFビットはCSRの内容の読取りに応じてクリアされる。
【0052】
肯定されたとき、前記「ハードウエアブレークポイントトリガ(TRG)」ビットはハードウエアのブレークポイントがデータ処理システム5のCPUの動作を停止したことを示す。肯定されたとき、前記TRGビットはデータ処理システム5が強制的にバックグランドのデバッグモードの動作に入れられたことを示す。TRGビットはCSRの内容の読取りに応じてあるいはシリアルインタフェース30を介して直列的に提供される「ゴー(Go)」コマンドの受信に応じてクリアされる。
【0053】
前記「プロセッサホールト(Halt)」ビットはそれが肯定されたときCPU2が停止すべきことを指定する命令をCPU2が実行したことを示す。肯定されたとき、前記ホールトビットはデータ処理システム5がバックグランドの動作モードに入るよう強制されたことを示す。該ホールトビットはCSRの内容の読取りに応じてあるいはシリアルインタフェース30を介して直列的に提供される「ゴー」コマンドの受信に応じてクリアされる。
【0054】
前記「BKPT肯定(BKPT)」ビットは*BKPT信号が肯定されかつCPU2に提供されたことを示す。肯定されたとき、BKPTビットはデータ処理システム5がバックグランドのデバッグモードの動作に入るよう強制されたことを示す。BKPTビットはCSRの内容の読出しに応じてあるいはシリアルインタフェース30を介して直列的に提供される「ゴー」コマンドの受信に応じてクリアされる。
【0055】
肯定されたとき、「デバッグレジスタへのプロセッサ書込み禁止(Inhibit Processor Writes to Debug Registers:IPW)」ビットは前記複数のハードウエアブレークポイントレジスタ50へのおよび前記複数の制御レジスタ40への書込み動作を禁止する。IPWビットは外部開発システム7のような外部開発システムから提供されるコマンドによってのみ変更することができる。IPWビットは効果的にCPU2が外部開発システム7によって複数の制御レジスタ40および複数のブレークポイントレジスタ50に書き込まれたデバッグ情報をオーバライトすることを禁止する(locks out)。
【0056】
肯定されたとき、「エミュレータモードでのプロセッサ参照強制(ForceProcessor References in Emulator Mode:MAP)」ビットはデータ処理システムがエミュレータモードで動作しているときにすべての参照(references)を特別のアドレス空間にマッピングするよう強制する。もしMAPビットが否定されれば、すべてのエミュレータモードの参照はメモリ6のスーパバイザのテキストおよびデータ空間へとマッピングされる。
【0057】
本発明はスーパバイザ、または特権モードの論理的拡張である特別の動作モードとしてエミュレータモードを含む。この特別の動作モードは本発明のこの実施形態では3つの可能な指示子の内の1つの肯定に応じて入る。いったんエミュレータモードに入ると、すべての通常の入力/出力割込みは無視することができかつデータプロセッサ3は任意選択的にすべてのメモリ参照を「別の空間(alternate space)」へと強制することができる。前記MAPビットはデータプロセッサ3のこの動作を制御する。エミュレータモードの動作は典型的には外部開発システム7がこの別のまたは代わりの空間へのすべてのメモリ参照をインタセプトしかつある形式のデバッグ機能をサポートするのに必要な命令およびデータ値を提供できるようにするために使用される。前記別の空間の再マッピングは状態「通常の」システムメモリを変更することなく外部開発システム7がデータプロセッサ3の動作の制御を得ることができるようにするために提供される。本発明のこの実施形態では、データプロセッサ3はRTE(Returnfrom Exception:例外からの戻り)のような、特別の命令が実行されるまでエミュレータモードに留まっている。その時点で、データプロセッサ3はエミュレータモードを退出しかつCPU2は通常の動作モードに戻る。
【0058】
本実施形態では、エミュレータモードのエントリ(entry)およびエグジット(exit)はPST信号を介して外部ユーザに通知されることに注意を要する。PST信号の$Dの値はエミュレータモードへのエントリを示しかつPST信号の$7の値はエミュレータモードからのエグジットを示す。PST信号によって提供されるエミュレータモードの動作へのエントリおよび該動作からのエグジットの指示はそれが外部開発システム7に対しハードウエアブレークポイントがトリガされたことの指示を与えるため特に重要である。従って、シリアルインタフェース30を介して提供されるシリアルポートは外部メモリロケーションからデバッグ情報を取り出すために使用することができる。
【0059】
もし前記MAPビットが否定されれば、すべてのエミュレータモードのメモリ参照は通常通りスーパバイザアクセスへとマッピングされ、それによってオンチップメモリ、外部メモリ、および入力/出力装置のようなシステム資源が参照できるようになる。
【0060】
さらに、本発明のこの実施形態においては、エミュレータモードの動作に入るために3つの方法が実施されている。第1の方法では、もし「トレース例外に応じてのエミュレーションモード強制(Force Emulation Mode on Trace Exception:TRC)」ビットが肯定されれば、ソフトウエアのトレース例外の発生はデータプロセッサ3をエミュレータモードの動作に入るよう強制する。これは外部開発システム7によって制御されかつデータプロセッサ3上で動作しているソフトウエアデバッガによって制御されない単一命令のデバッガルーチンを作成するためのメカニズムである。
【0061】
第2の方法においては、もし「エミュレーションモード強制(Force Emulation Mode:EMU)」ビットが肯定されれば、データプロセッサ3はリセット例外プロセッサを開始する。前と同様に、この方法は外部開発システム7がデータ処理システム10をそれが命令の処理を開始する前に制御できるようにする。
【0062】
第3の方法はトリガされたハードウエアブレークポイントに応じてデバッグ割込みが肯定された場合にデータプロセッサ3がエミュレータモードに入ることができるようにする。前記TDRのTRCフィールドはエミュレータモードへのエントリを備えたデバッグ割込みを発生するためにハードウエアのブレークポイントトリガの使用をプログラムするために用いることができる。
【0063】
「デバッグデータ制御(Debug Data Control:DDC)」値は前記DDATA信号を介して外部開発システムに提供されるべきオペランドデータを捕捉するための構成制御情報を提供する。前記DDC値が%00である場合は、DDATA信号に対してオペランドデータは表示されない。前記DDC値が%01である場合は、M−バス23を介して通信されるすべての書込みデータは捕捉されかつDDATA信号に対して表示される。前記DDC値が%10である場合は、M−バス23を介して通信されるすべての読出しデータはDDATA信号に対して捕捉されかつ表示される。前記DDC値が%11である場合は、M−バス23を介して通信されるすべての読出しおよび書込みデータはDDATA信号に対して捕捉されかつ表示される。前記DDC値によって特定される情報の形式とは独立に、DDATA信号はオペランドのリファレンスサイズによって規定されるバイトの数を表示する。オペランドがCSRのDDCフィールドの制御の下に捕捉される場合は、DDATA信号に対して表示されるバイトの数は実行されているリファレンスのタイプによって決定される。もし前記オペランドが1バイトとして参照されれば、8ビットのデータが表示される。もし前記オペランドがワードとして参照されれば、16ビットのデータが表示される。同様に、もし前記オペランドがロングワードとして参照されれば、32ビットのデータが表示される。前記DDCはM−バス23の読出しおよび書込み動作を捕捉するための能力を提供する。しかしながら、前記オペランドのリファレンスサイズはDDATA信号に対して実際に表示されるバイトの数を決定する。
【0064】
「分岐目標バイト(Branch Target Bytes:BTB)」値はDDATA信号に対して表示されるべき分岐目標またはターゲットアドレスのバイトの数を規定する。BTB値が%00である場合は、分岐目標アドレスの何らのバイトもDDATA信号に対して表示されない。BTB値が%01である場合は、分岐目標アドレスの下位2バイトがDDATA信号に対して表示される。前記BTB値が%10である場合は、分岐目標アドレスの下位3バイトがDDATA信号に対して表示される。前記BTB値か%11である場合は、分岐目標またはターゲットアドレスの全4バイトがDDATA信号に対して表示される。DDATA信号は一般にデータを最下位から最上位の順序で出力することに注目すべきである。これは捕捉されたオペランドならびに分岐目標アドレスに対して当てはまる。さらに、動作の間に、制御回路60の制御の下に、FIFO格納バッファ70は変形(variant)アドレシングモードを使用する取られた分岐動作に関連するターゲットまたは目標アドレスのみを捕捉する。該変形アドレシングモードはアドレスがプログラムカウンタの相対、または絶対アドレスによって提供されず、何らかの他の手段によって計算されるアドレシングモードである。そのような目標アドレスは典型的には例外ベクトル、ならびに例外からの戻り(return−from−exception:RTE)、サブルーチンからの戻り(return−from−subroutine:RTS)命令およひ何らかの形式のジャンプ(JMP)およびサブルーチンへのジャンプ(jump−to−subroutine:JSR)に関連する。
【0065】
「デバッグモードイネーブル(Enable Debug Mode:END)」ビットはもし肯定されれば前記PSTおよびDDATA信号の通常の動作をディスエーブルする。さらに、このビットがイネーブルされたとき、データプロセッサ3のCPU2は内部状態情報の8ビットのベクトルを出力する。
【0066】
肯定されたとき、「非パイプライン化モード(Non−Pipelined Mode:NPL)」ビットはCPU2を非パイプライン動作モードで動作するよう強制する。非パイプライン動作モードにあるとき、データ処理システム3は2つまたはそれ以上の引き続く命令の間にオーバラップなしに一度に単一の命令を効果的に実行する。
【0067】
肯定されたとき、「係属中の割込み無視(Ignore Pending Interrupts:IPI)」ビットはデータ処理システム5が単一命令ステップ(single−instruction−step)モードで動作している場合にCPU2がいずれの係属中の割込み要求も無視するよう強制する。
【0068】
「単一ステップモード(Single−Step Mode:SSM)」ビットはそれが肯定されたときCPU2が単一命令ステップモードで動作するよう強制する。該単一命令ステップモードにある間に、CPU2は単一の命令を実行しかつ次に停止する。CPU2が停止している間に、バックグランドデバッグモードに関連するいずれかのコマンドを実行できる。「ゴー(GO)」コマンドの受信に応じて、CPU2は次の命令を実行しかつ次に再び停止する。このプロセスが単一命令ステップモードがディスエーブルされるまで継続する。
【0069】
「バッファディスエーブル記憶(Store Buffer Disable:SBD)」ビット、「K−バスRAMディスエーブル(K−Bus RAM Disable:KAD)」ビット、「K−バスROMディスエーブル(K−Bus ROM Disable:KOD)」ビット、および「K−バスキャッシュディスエーブル(K−Bus Cache Disable:KCD)」ビットは集合的に使用されて外部開発システム7がデバッグの目的でデタープロセッサ3の通常の構成をオーバライド(override)できるようにする。特に、前記SBDビットはMMU/コントローラ4内に位置する任意選択的なFIFO格納バッファの使用をディスエーブルしかつFIFO格納バッファ70と混同すべきではない。前記KADビットはメモリブロック6の使用がバイパスされかつM−バス23のアクセスを強制できるようにする。メモリブロック6はRAMモジュール、ROMモジュール、および/またはキャッシュモジュールを含むことができる。前記KAD,KOD,およびKCDビットはそれぞれこれらのモジュールのおのおのによって提供される機能をディスエーブルするために使用される。
【0070】
前記複数のハードウエアブレークポイントレジスタ50は図5により詳細に示されている。該複数のハードウエアブレークポイントレジスタ50のおのおのの機能の概略的な説明を行う。前記複数のハードウエアブレークポイントレジスタ50のおのおのの機能のより詳細な説明は後に行う。
【0071】
図5において、前記アドレスブレークポイントレジスタ(ABLRおよびABHR)はブレークポイント機能をトリガするために使用できるデータ処理システム5のオペランドの論理アドレス空間にある領域を規定する。ABLRおよびABHRのおのおのに格納されたアドレス値はK−バス25を介して転送されるアドレス値と比較される。さらに、以下の説明では、ブレークポイント機能を実行するために満たされなければならない1組の条件はトリガ(trigger)と称される。
【0072】
前記アドレス属性ブレークポイントレジスタ(AABR)は図6により詳細に示されている。アドレス属性ブレークポイントレジスタはブレークポイント機能のためのトリガにおいて整合されるべき複数のアドレス属性およびマスクを規定する。ABLRおよびABLRアドレス値のように、AABRに格納される属性値はK−バス25を介して転送されるアドレス属性信号と比較される。
【0073】
前記AABRの下位5ビット、「転送タイプ(Transfer Type:TT)」値および「転送モディファイア(Transfer Modifier:TM)」値は集合的に、データ処理システム5がバックグランドデバッグモードにある間にメモリ参照を実行する場合に使用されるアドレス空間を規定する。前記TT値は転送がスーパバイザオペランドであるか、スーパバイザ命令であるか、ユーザオペランドであるか、あるいはユーザ命令であるかを示す。
【0074】
前記複数のハードウエアブレークポイントレジスタ50のおのおのは2つの機能に使われることに注目すべきである。データプロセッサ3が背景デバッグモードの動作にあるとき、前記複数のハードウエアブレークポイントレジスタ50はメモリおよびプロセッサの参照動作の実行の間に使用される。データプロセッサ3が背景デバッグ動作モードにない場合は、前記複数のハードウエアブレークポイントレジスタ50はハードウエアブレークポイントを検出するために使用される。
【0075】
前記複数のハードウエアブレークポイントレジスタ50がハードウエアブレークポイントを検出するために使用される場合は、前記AABRレジスタは4つのフィールドと4つの同等のマスクフィールドを含む。前記TTおよびTMフィールドはアクセスされているアドレス空間を規定する。表1はこれらのフィールドのおのおのに対する符号化を示す。
【0076】
【表3】
TT TM アドレス空間
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
00 001 ユーザオペランド
00 010 ユーザ命令
00 101 スーパバイザオペランド
00 110 スーパバイザ命令
01 xxx 未使用
10 101 エミュレータモードオペランド(MAP=1であれば)
10 110 エミュレータモード命令(MAP=1であれば)
11 000 CPU空間
11 001 割込みアクノレッジ
11 01x 割込みアクノレッジ
11 1xx 割込みアクノレッジ
【0077】
「アドレス空間」はしばしば行われている特権の動作レベル(ユーザモードまたはスーパバイザモード)および参照の形式(オペランド、命令フェッチ)によって規定されることに注意を要する。また、前記TTおよびTM値はブレークポイント位置をより正確に規定するために使用される。
【0078】
前記AABRにおける次の値、「サイズ(Size:SZ)」値は、アドレス範囲に加えて、K−バス25を介して転送されるサイズ属性はAABRの前記SZビットに格納された値に対応しなければならないことを示す。同様に、「読出し/書込み(Read/Write:R)」値がAABRに格納される。前記R値は読出しまたは書込み動作にもとづくトリガ条件がアドレスにもとづく比較において適用されるべきことを示す。
【0079】
上に述べたビットは前記複数のハードウエアブレークポイントレジスタ50がブレークポイントモニタとして動作している場合に使用される。これらのビットはK−バス25属性情報と比較される。一例として、前記複数のブレークポイントレジスタ50をユーザモードの、ワードサイズのオペランド読出しのみがトリガされるようにプログラムすることができる。従って、AABRのこれらのビットはアドレスブレークポイントの規定または定義に対する付加的な限定(qualifications)を提供するために使用できる。
【0080】
さらに、AABRはそれぞれ個々のビットをブレークポイント規定からマスクアウトする能力を提供する属性マスクビットを含む。
【0081】
前記AABRの最上位ビット、「読出し/書込みマスク(RM)」ビット、は読出しまたは書込み動作にもとづくトリガ条件がアドレスにもとづく比較において無視されるべきことを示す。従って、もし該RMビットが肯定されれば、前記Rビットは比較動作の間無視される。次の1組のビット、「サイズマスク(SM)」値、はアドレスのサイズにもとづくトリガ条件がアドレスにもとづく比較において無視されるべきことを示す。例えば、もし前記SM値におけるビットが肯定されれば、前記SZ値における対応するビットはアドレス比較機能において無視される。
【0082】
「転送タイプマスク(Transfer Type Mask:TTM)」値は前記0TT値に対応する。該TTM値におけるあるビットが肯定されたとき、前記TT値の対応するビットは引き続くアドレス比較において無視される。同様に、「転送モディファイアマスク(Transfer Modifier Mask:TMM)」値は前記TM値に対応する。TMMフィールドのあるビットが肯定されたとき、TM値の対応するビットは引き続くアドレス比較において無視される。
【0083】
前記複数のハードウエアブレークポイントレジスタ50はまた複数のプログラムカウンタブレークポイントレジスタを含む。該複数のプログラムカウンタブレークポイントレジスタはブレークポイント機能をトリガするために使用できるデータ処理システム5の命令論理アドレス空間における領域を規定する。前記「プログラムカウンタブレークポイント(PBR)」値は前記「プログラムカウンタブレークポイントマスク(PBMR)」レジスタに格納された値によってマスクすることができる。本発明の1実施形態では、PBMRに記憶された対応するゼロの値を有するPBR中のビットのみがデータ処理システム5のプログラムカウンタ値との比較動作において使用される。該プログラムカウンタ値はデータ処理システム5のCPU2のプログラムカウンタレジスタ(ここでは示されていない)に格納される。
【0084】
前記プログラムカウンタブレークポイントレジスタに加えて、前記複数のハードウエアブレークポイントレジスタ50は複数の「データブレークポイントレジスタ」を含む。該複数のデータブレークポイントレジスタは「データブレークポイントレジスタ(DBR)」および「データブレークポイントマスクレジスタ(DBMR)」を含む。前記DBRはデータ処理システム5がデバッグ動作を行っている場合にトリガを形成するために使用できる特定のデータパターンを規定するデータ値を格納する。前記DBMRに格納されたデータマスク値は前記DBRに格納されたデータ値をマスクする。従って、本発明の1実施形態では、DBMRに格納された対応するゼロの値を有するDBRに格納されたビットのみがK−バス25を介して転送されるデータ信号と比較されてトリガ条件が適合しているかを判定する。
【0085】
<動作の説明>
以下の説明のために、デバッグサポートの概略的な主題は独自の要件および独自の機能を有する3つの別個の領域に区分することができる。本発明はリアルタイムのトレースのサポート、バックグランドデバッグ動作モード、およびリアルタイムのデバッグのサポートを提供する。図1のデータ処理システム5は本発明の1つの実施形態を示している。
【0086】
データ処理システム5においては、データプロセッサ3は情報を通信するために外部開発システム(external development system)7に接続されている。次に、外部開発システム7は通信された情報を使用してデータプロセッサ3における障害のある回路およびエラーのあるソフトウエアコードを識別しかつ分離するよう設計されたデバッグ動作を行う。外部開発システム7はデータプロセッサ3と前記DSDI,DSCLK,DSDO,DDATA,PSTおよび他の入力/出力信号を介して通信する。前記DSDI,DSCLKおよびDSDO信号は外部開発システム7とデータプロセッサ3との間のシリアル通信手段を提供する。前記DDATA信号はデータプロセッサ3から外部開発システム7へデバッグ情報を提供する。CSRの構成に応じて、デバッグモジュール10は前記DDATA信号の上に表示するためあるオペランドおよび分岐ターゲットアドレスを捕捉することができる。さらに、CPU2はCSRに格納された構成値にかかわりなく捕捉されかつDDATA信号上に表示された命令を実行することができる。前記PST信号は外部開発システム7へ内部プロセッサステータスを提供する。従って、プログラム動作の実行の間に、前記DDATAおよびPST信号はデータプロセッサ3によって実行される現在の動作を反映するために集合的にアクセスできる。
【0087】
動作においては、コア9はCPU2、MMU/コントローラ4、およびメモリ6を接続するためにK−バス25を使用する。本発明のこの実施形態では、K−バス25は高速の、単一サイクルのアクセスバスである。メモリ6はランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、キャッシュブロック、およびそれらの任意の組合わせを含むことができる。すべての他のシステムモジュールおよびペリフェラルはM−バス23を介してコア9に結合される。M−バス23は複数のバスマスタの内の1つによって開始されるデータ転送を行うために使用される内部マルチマスタバスである。システムバスコントローラ8は複数の機能を提供する。システムバスコントローラ8はもし外部E−バスが存在すれば、内部M−バス23と外部E−バスの間のインタフェースを提供する。さらに、システムバスコントローラ8はS−バスによるすべてのデータ転送を制御するための焦点(focal point)として作用する。前記S−バスはタイマおよびシリアル通信チャネルのような単純なスレイブ周辺モジュール(12および13)をデータ処理システム5内へ接続するために使用される。
【0088】
本発明においては、データプロセッサ3はデータ転送のためのコスト効率のよいメカニズムを提供するためにいくつかの層のバス帯域幅を有する。コア9は性能を最大にするために高速の、単一サイクルのK−バス25と相互接続される。この高速バスに直接結合されない転送については、M−バス23がコア9およびマスタモジュール14のような内部バスマスタのいずれかから帯域幅を提供する。システムバスコントローラ8は内部M−バス23および外部E−バス(もし存在すれば)の間での接続を提供し、一方またスレイブモジュール12および13のようなスレイブ周辺モジュールに対するローコストの、より低い帯域幅のS−バスによるすべてのデータ転送のための制御機能を提供する。デバッグモジュール10はすべてのプロセッサ開始(processor−initiated)メモリアクセスの非侵入的な(non−intrusive)観察を可能にするためにK−バス25に接続されている。デバッグモジュール10はまた外部開発システム7への接続を提供する。
【0089】
図1のデバッグモジュール10は3つの前に述べたデバッグ動作の内のおのおのをサポートするための論理回路を提供する。デバッグモジュール10の動作は引き続きより詳細に説明する。
【0090】
<リアルタイムトレース機能>
本発明は重要な、かつ今まで存在しなかった、リアルタイムトレース機能を提供する。該リアルタイムトレース機能は、外部開発システム7のような、外部ユーザがデータプロセッサ3の内部動作を動的に観察できるようにする。さらに、このリアルタイムトレース機能はシステムの内部動作に対するそのような観察可能性を、データ処理システム5の効率および速度に大きな影響を与えることなく提供することができる。データ処理システム5のデバッグモジュール10は前記DDATAおよびPST信号を介して外部ユーザに内部動作情報を提供するために並列出力ポートを与える。前記DDATA信号はオペランドデータを反映するデータを提供しかつPST信号はCPU2の外部ステータスを反映する符号化されたステータス情報を提供する。さらに、前記DDATA信号はまた捕捉された命令アドレスプログラムフローの変更を提供し外部開発システムが外部的に見ることができるアドレスバスまたは外部的に見ることができるデータバスを必要とすることなく正確なプログラムフローをトレースできるようにする。前記DDATA信号上に表示される情報はPST信号上におけるステータス情報と同期していることに注意を要する。従って、外部ユーザはデータプロセッサ3の動作を中止することなく、しかもこの実行経路を見ることができるようにするため特別のデバッグ動作モードを必要とすることなくプログラムの動的な実行経路を決定するために前記DDATAおよびPST信号をデコードすることができる。
【0091】
リアルタイムトレースの実行の間におけるデータ処理システム5の動作につき引き続きより詳細に説明する。説明に先立ち、PST信号の符号化(encodings)に関し簡単に説明する。PST信号の符号化を示す表が図10に与えられている。
【0092】
図10はPST信号のビット3〜0を介して与えられる値とCPU2のステータスとの間の関係を示す。PST信号が%0000の値を提供する場合、前の動作がまだ完了しておらずかつ実行は単に継続する。もし%0001の値が与えられれば、PST信号は命令の実行が開始されつつあることを示す。PST信号が%0011の値を有する場合は、データ処理システムはユーザモードの動作に入りつつある。もしPST信号によって%0100の値が提供されれば、データ処理システム5は「パルス」またはWDDAT命令の実行を開始している。該「パルス」オペコードは単にこの特別のPST符号化を発生し、一方前記WDDATAオペコードはオペランドが捕捉されかつCSRによって規定される構成にかかわりなくDDATA上に表示させる。これはメモリオペランド、例外スタックフレームまたはソフトウエアマーカを直接前記DDATA信号上に表示するための簡単なメカニズムを提供する。
【0093】
もし前記PST信号によって%0101の値が提供されれば、データ処理システム5は取られた分岐動作(taken Branch operation)の実行を開始している。もし%0111の値がPST信号によって提供されれば、データ処理システム5はRTE命令の実行を開始しつつある。PST信号が%1000の値を提供する場合、データ処理システム5はDDATA信号により1バイト転送を開始している。PST信号が%1001の値を提供する場合、データ処理システム5はDDATA信号により2バイト転送を開始している。PST信号が%1010の値を提供する場合、データ処理システム5はDDATA信号により3バイト転送を開始しつつある。PST信号が%1011の値を提供する場合、データ処理システム5はDDATA信号により第4バイトの転送を開始している。もしPST信号が%1100の論理値を有する場合、データ処理システム5のCPU2は例外処理ルーチンを実行しつつある。同様に、もしPST信号が%1101の論理値を有する場合、データ処理システム5のCPU2は例外を処理しつつある。この値は例外が検出されたときから例外処理ルーチンの第1の命令がフェッチされるまでPST信号上で肯定される。同様に、もしPST信号が%1101の論理値を有する場合、データ処理システム5のCPUは例外ルーチンを処理しておりこれはエミュレータモードの動作へのエントリを生じさせる。PST信号が%1110である場合は、データ処理システム5のCPU2は停止しかつ割込みを待機している。PST信号が%1111である場合は、データ処理システム5のCPU2は停止する(halted)。
【0094】
前に説明したように、符号化されたPSTおよびDDATA信号によって集合的に提供されるプロセッサのステータス情報はデータ処理システム5の動的な実行経路を完全に追跡するために外部プログラムモデルとともに使用することができる。
【0095】
リアルタイムのトレース機能を可能にするため、DDATA信号は分岐ターゲット命令アドレスを表示するよう構成されなければならない。典型的には、この構成はデータ処理システム5がその通常の実行を開始する前に達成される。DDATA信号を構成するため、外部開発システム7は複数の制御レジスタ40におけるCSRレジスタに値を書き込むことができる。CSRレジスタは図8に示されている。この書込み機能を達成するため、外部開発システム7は前記CSRにデータをロードするためコマンドをDSDIおよびDSCLK信号の双方を使用してシリアルインタフェース30にシフト入力する。本発明の1実施形態では、該コマンドの第1の部分はDSDI信号によって提供されかつDSCLK信号によってクロック入力される。前記コマンドの付加的な部分はその後提供される。前記コマンドのすべての部分は16ビットのパケットの情報が完成するまでレジスタ32に格納される。本発明の別の実施形態では本発明のこの実施形態で必要とされる16ビットより多くのまたは少ないビットを含めることができることに注意を要する。
【0096】
ここに説明される本発明の実施形態では、CSRに値を書き込む命令は48ビット長であり、16ビットのオペコードおよび32ビットのデータを備えている。レジスタ32は16ビット幅にすぎない。従って、最初の16ビットのパケットの情報が完成したとき、該情報は制御回路20に転送され、そこでデコードされかつ引続く動作が構築される。第2の16ビットのパケットの情報がレジスタ32にロードされたとき、該情報は前記「シリアル情報」信号を介して複数の制御レジスタ40に転送される。制御回路20から制御バス15によって提供される制御情報を使用して、前記「シリアル情報」信号の内容はディスティネーションレジスタ、前記CSR、の上位部分にロードされる。同様に、第3の16ビットのパケットの情報がレジスタ32にロードされかつ次に前記複数の制御レジスタ40に転送される。前と同様に、制御回路20によって供給される信号を使用して、前記「シリアル情報」信号の内容がCSRの下位部分にロードされる。このようにして、48ビットの命令全体が直列的にデバッグモジュール10内にシフトされ、そこでデコードされかつオペランド値がCSRにロードされる。
【0097】
その後のデータはDSDI信号を介して外部開発システム7によって直列的に提供される。前に説明したように、DSDI信号によって提供されるその後のデータはDSCLK信号を介してクロック入力される。該データビットのおのおのは16ビットのパケットの情報が完成するまでレジスタ32に格納される。第2の16ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して前記複数の制御レジスタ40に転送される。該第2の16ビットのパケットの情報はビット31〜16としてCSRに格納される。その後、付加的な情報が直列的に外部開発システム7によってDSDIおよびDSCLK信号を介してレジスタ32に提供される。第3の16ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して複数の制御レジスタ40に転送される。該第3の16ビットのパケットの情報はビット15〜0としてCSRに格納される。
【0098】
前のパラグラフにおいて、DDATA信号の構成は外部開発システム7によりCSRに書き込まれた値によって決定された。本発明の別の実施形態では、前記DDATA信号はデータプロセッサ4のCPU2によってCSRに書き込まれた値によって構成することができる。CPU2が前記値をCSRに書き込むとき、前記値は図6に示されるブレークポイント回路100の一時レジスタ170に提供される。前記値はK−バス25の前記KDATA信号を介して一時レジスタ170に提供される。一時レジスタ170から、前記値は16ビットのパケットでレジスタ32に転送されかつ格納される。CSRへのCPU書込みのために、前記KDATA信号を介して転送されるオペランド値はK−バス25を介してCPU2から制御回路20に提供される制御信号を使用して一時データレジスタ170に捕捉される。従って、前記複数の制御レジスタ40にとっては、前記値は外部開発システム7からレジスタ32に提供されるものと同じに見える。
【0099】
前記オペランドが外部開発システム7により提供されるかあるいはCPU2により提供されるかにかかわらず、オペランドおよび関連するオペランドはリアルタイムのトレース機能を達成するために前記DDATA信号を構成するためCSRに格納されなければならない。CSRにおいては、前記デバッグデータ制御(DDC)および前記分岐ターゲットバイト(BTB)値は外部開発システム7にトレース情報を提供するため正しくDDATA信号を構成するように書き込まれなければならない。前に述べたように、前記デバッグデータ制御(DDC)値はDDATA信号を介して外部開発システムに提供されるべきオペランドデータを捕捉するために構成制御情報を提供する。前記DDC値が%00である場合は、何らのオペランドデータもDDATA信号上に表示されない。前記DDC値が%01である場合は、M−バス23を介して通信されるすべての書込みデータは捕捉されかつDDATA信号上に表示される。前記DDC値が%10である場合は、M−バス23を介して通信されるすべての読出しデータは捕捉されかつDDATA信号上に表示される。前記DDC値が%10である場合は、M−バス23を介して通信されるすべての読出しおよび書込みデータは捕捉されかつDDATA信号上に表示される。DDC値によって特定される情報の形式とは独立に、前記DDATA信号はオペランド参照サイズによって規定される数のバイトを表示する。例えば、バイト表示は8ビット長であり、ワード表示は16ビット長であり、かつロング表示は32ビット長である。オペランドがCSRのDDCフィールドの制御のもとに捕捉されたとき、DDATA信号上に表示されるバイトの数は実行されている参照の形式によって決定される。もし前記オペランドがバイトとして参照されれば、8ビットのデータが表示される。もし前記オペランドがワードとして参照されれば、16ビットのデータが表示される。同様に、もし前記オペランドがロングワードとして参照されれば、32ビットのデータが表示される。DDCはM−バス23の読出しおよび書込み動作を捕捉する能力を提供する。しかしながら、前記オペランド参照サイズはDDATA信号上に実際に表示されるバイトの数を決定する。
【0100】
前記分岐ターゲットバイト(BTB)値はDDATA信号上に表示されるべき分岐ターゲットアドレスのバイトの数を規定する。BTB値が%00である場合は、分岐ターゲットアドレスの何らのバイトもDDATA信号上に表示されない。BTB値が%01である場合は、分岐ターゲットアドレスの下位2バイトがDDATA信号上に表示される。BTB値が%10である場合は、分岐ターゲットアドレスの下位3バイトがDDATA信号上に表示される。BTB値が%11である場合は、分岐ターゲットアドレスの全4バイトがDDATA信号上に表示される。DDATA信号は一般にデータを最下位から最上位への順序で出力することに注目すべきである。これは捕捉されたオペランドならびに分岐ターゲットアドレスについて当てはまる。さらに、動作の間に、FIFO格納バッファ70は、制御回路60の制御のもとに、変形アドレシングモード(variant addressing mode)を使用する取られた分岐動作に関連するターゲットアドレスのみを捕捉する。該変形アドレシングモードはアドレスがプログラムカウンタの相対、または絶対アドレスによって提供されず、何らかの他の手段によって計算されるアドレシングモードである。そのようなターゲットアドレスは典型的には例外ベクトルならびに例外からの戻り(RTE)、サブルーチンからの戻り(RTS)命令およびいくつかの形式のジャンプ(JMP)およびサブルーチンへのジャンプ(JSR)に関連している。
【0101】
前記CSRが実時間のトレース機能を達成するのに必要な情報を提供するためDDATA信号を構成するために書かれた後、CPU2はK−バス25によって通信される前記KADDR信号を介してFIFO(ファーストイン・ファーストアウト)記憶バッファ70に複数のターゲットアドレスを提供する。さらに、CPU2はK−バス25によって通信されるKDATA信号を介してFIFO記憶バッファ70に複数のオペランドデータ値を提供する。前記複数のターゲットアドレスおよび前記複数のオペランドデータ値は制御回路60によって提供されるFIFO制御信号に応じてFIFO記憶バッファ70に格納される。
【0102】
制御回路60は制御回路20によって提供される「トレース」信号および前記複数の制御レジスタ40のCSRによって提供される「構成」信号に応じて前記FIFO制御信号を出力する。FIFO記憶バッファ70はそこに記憶された前記KADDRおよびKDATA情報をファーストイン・ファーストアウト順で出力する。FIFO記憶バッファ70はアドレスおよびオペランド情報を格納するための複数のロケーションを有するから、FIFO記憶バッファ70はおのおのがデータプロセッサ3の通常の動作の間にアクセスされるオペランドおよび命令アドレスの値を反映する情報を通信する場合にKADDRおよびKDATA信号を受信することができる。言い換えれば、FIFO記憶バッファ70に提供されかつ格納されるKADDRおよびKDATA信号を介して転送される値はデータ処理システム5の現在の動作を実時間で反映する。
【0103】
FIFO記憶バッファ70は該FIFO記憶バッファ70内のすべての格納ロケーションが前記DDATA信号上に出力されなければならない有効な情報を含む場合CPU2の動作の速度に影響を与えるのみである。すべての格納ロケーションが満杯である(full)である場合、FIFO記憶バッファ70は前記「フル(Full)」信号を肯定する。前記「フル」信号が肯定されたとき、制御回路60は前記「ストール(Stall)」信号を肯定する。該「ストール」信号はCPU2に提供されてFIFO記憶バッファ70の少なくとも1つの格納ロケーションが次の値を記憶するために利用できるようになるまでコア9の動作を停止させる。すべての他の動作においては、DDATA信号上にアドレスおよびオペランド情報を提供することはデータプロセッサ3の実行速度に大幅に影響を与えることはない。
【0104】
FIFO記憶バッファ70は前記FIFO信号を介して前記複数のマルチプレクサ80にアドレスおよびオペランド情報を提供する。CPU2はまた前記「CPUプロセッサステータス(CPST)」信号を複数のマルチプレクサ80に提供する。該CPST信号はデータプロセッサ3によって現在実行されている動作の種別を指示するためにプロセッサのステータス情報を提供する。例えば、CPST信号はいつ命令の実行が始まるか、いつ命令の実行が継続すべきか、いつデータプロセッサ3が選択モードの動作に入るか、いつ予め選択された分岐命令が実行されるか、およびいつデータプロセッサ3の動作が停止(halt)されるかを指示することができる。CPST信号は任意の形式のプロセッサ動作を指示することができかつここに掲げた例に限定されないことに注意を要する。
【0105】
前記FIFOおよびCPST信号が複数のマルチプレクサ80に提供されたとき、該複数のマルチプレクサの出力は前記「Mux制御」信号によって制御される。前記「Mux制御」信号は複数のマルチプレクサ80が同期的にDDATAおよびPST信号を提供できるようにする。DDATAおよびPST信号はデータプロセッサ3のクロックの立上りエッジ(ここでは図示されていない)と同期しかつ、従って、PST信号によって提供されるステータスはいずれかの与えられたバスサイクルの処理と関連しないかもしれないことに注意を要する。
【0106】
さらに、前記「Mux制御」信号によってイネーブルされたとき、PST信号はCPU2のステータスを示すマーカを提供する。例えば、PST信号によって$C,$D,$E,または$Fのステータス値が提供されたとき、PST信号はデータプロセッサ3によってマルチサイクルモードのまたは特別の動作が実行されていることを示す。符号化されたPST信号についてのさらなる情報については図10を参照。PST信号がマルチサイクルモードの特別の動作がデータプロセッサ3によって実行されていることを反映している場合には、PST信号は前記モードを退出するまでまたは前記動作が完了するまでこれらのステータス値を維持する。
【0107】
PST信号が$0〜$7のステータス値を出力する場合は、PST信号はおのおののタイミングサイクルで更新される情報を特定する。
【0108】
PST信号が$8,$9,$A,または$Bのステータス値を提供する場合、PST信号は前記DDATA信号を介して外部的に提供される値を限定するために使用されている。この動作においては、PST信号はDDATA信号上のどの値が要求されるアドレスおよびデータ情報を提供しているかを示すための「マーカ」として使用される。PST信号は実際のデータがDDATA信号上に表示される1タイミングサイクル前にこれらのステータス値によって符号化される。従って、外部開発システムは正しくデータプロセッサ3の動作を観察することができる。
【0109】
以下の例は実時間トレース動作におけるDDATAおよびPST信号の使用につきより詳細に示すものである。この例は図11に示されている。図11は間接ジャンプ(JMP)の実行を示し、この場合ジャンプ命令のターゲットアドレスの下位16ビットはDDATA信号上に表示される。ジャンプ命令が実行されるとき、プログラムの実行は該命令のオペランドにより特定される実効アドレスで継続する。この例では、該実効アドレスの値はレジスタA0によって特定されるメモリロケーションに位置する。
【0110】
以下の例では、CSRがデータを適切なフォーマットで提供するためにDDATA信号を正しく構成するよう書き込まれたものと仮定する。図11に示される例では、JMP(A0)命令は、図11において、「ラスト(Last)」と称される、前の命令に続く。該JMP命令は間接的に前記ターゲット命令アドレスをアドレスする。例えば、CPU2に格納されたレジスタA0の内容は所望のターゲット命令アドレスを規定する。さらに、本出願には詳細に示されていないが、前記A0レジスタはCPU2内に配置できる。そのような間接アドレシングの使用は変形(variant)アドレシングと称されるが、それは前記ターゲット命令アドレスがA0レジスタの内容に依存しかつPC−レラティブ(PC−relative)でもなく絶対アドレスでもないからである。
【0111】
以下の例の実行の間に、DSOCおよびAGEXはデータプロセッサ3の内部パイプラインにおける位置を示す。用語DSOC,AGEX,IAG,およびICを説明するため、CPU2の内部構造についての簡単な説明を行う必要がある。
【0112】
データプロセッサ3のCPU2においては、2つの独立のかつ切り離されたパイプラインが実施される。第1のパイプラインは命令をプリフェッチするための命令フェッチパイプライン(IFP)(ここでは図示されていない)であり、かつ第2のパイプラインは命令の実際の実行をデコードしかつ達成するためのオペランド実行パイプライン(OEP)である。FIFO命令バッファ(ここでは図示されていない)は前記2つのパイプラインの間の切り離し(decoupling)メカニズムとして作用する。
【0113】
命令フェッチパイプラインは2つのステージを含む。第1のステージは「命令アドレス発生(Instruction Address Generation:IAG)」ステージでありそこで次のプリフェッチアドレスが計算される。第2のステージは「命令フェッチサイクル」でありここで所望の命令がメモリからフェッチされる。前記オペランド実行パイプラインはまた2つのステージを含み、各ステージは単一の命令の実行の間に2つの機能のために使用できる。第1のステージは「デコードおよび選択(Decode & Select:DS)」ステージであり「オペランドフェッチサイクル(Operand fetchCycle:OC)」を備えている。第2のステージは「アドレス発生(AG)」ステージであり「実行(EX)」ステージを備えている。
【0114】
情報が2つのレジスタの間で通信される命令については、前記2つのOEPステージはおのおの一度アクセスされる。前記レジスタオペランドはOCステージの間にアクセスされかつ次に命令実行が実際に前記EXステージにおいて行われる。従って、前記OEP動作はOCからEXへと進行する。
【0115】
情報がメモリロケーションとレジスタの間で通信される命令については、各パイプラインステージは2回アクセスされる。第1に、オペランドアドレスの構成要素がDSステージにおいて選択される。第2に、これらの構成要素のおのおのが加算されてAGステージにおけるオペランドアドレスを形成する。第3に、メモリオペランドがOCステージにおけるいずれか他のレジスタオペランドとともにアクセスされかつ第4に、実際の命令実行がEXステージにおいて行われる。この形式の命令に対しては、前記OEP動作はDSからAGへOCへEXへと続く。
【0116】
他の形式の命令に対しては、各パイプラインステージ内の双方のオペランドは同時に行われる。これらのタイプの命令に対しては、OEP動作はDS OCからAG EXへと行われる。
【0117】
この例では、レジスタA0の内容は「ターゲット」の命令アドレスを規定するものと想定される。前記JMP命令がオペランド実行パイプラインのAGEXステージを占有するから、前記命令ターゲットアドレスは「ターゲット」として計算される。この流れの変更(change−of−flow)動作は命令フェッチパイプラインにその現在の流れのプリフェッチアドレスを放棄しかつ前記アドレス「ターゲット」で始まる新しい流れを規定させる。本発明のこの実施形態では、この流れの変更JMP命令は前記2つのパイプラインを新しい命令ストリームが確立されるようにAGEXおよびIAGステージにおいて結合されるようにする。いったん前記「流れの変更」が生じると、2つのパイプラインはそれらの通常の切り離された動作モードに戻り命令フェッチパイプラインは新しいアドレスストリームにおいて順次プリフェッチをするよう継続する。従って、「ターゲット」、「ターゲット+4」および「ターゲット+8」のアドレスが引き続きフェッチされる。
【0118】
JMP命令がそのオペランド実行パイプラインステージを完了すると、CPU2は内部CPST信号上に「テイクンブランチ(taken branch)」値を通知する。従って、内部CPST信号は$5の値を有する。本発明のこの実施形態では、実際のPSTおよびDDATA信号はそれらの内部カウンタパートから1タイミングサイクルだけ遅れる。CPU2が新しいアドレスで命令をプリフェッチすると、FIFO記憶バッファ70は命令フェッチパイプラインのICサイクルの終りに前記命令アドレス「ターゲット」を捕捉する。次のタイミングサイクルに際して、複数のマルチプレクサ80は「マーカ」をPST信号に挿入し2バイトの情報がDDATA信号上に表示されるべきことを示す。従って、PST信号は$9の値を有する。前記複数のマルチプレクサ80の動作は制御回路60によって制御される。PST信号上にマーカが出現したことに続き、前記複数のマルチプレクサ80は最下位ニブルで始まる捕捉された命令アドレス「ターゲット」の下位16ビットを、ビット3〜0からビット15〜12まで、表示するよう進行する。
【0119】
内部PST値(図2のCPST信号)は第1のタイミングサイクルで$5の値を転送する。図10に示されるように、PST値が$5の値を有する場合、データプロセッサは「テイクンブランチ」命令を実行し始めている。これはプログラムフローをレジスタA0で間接的に特定されるアドレスへと転送しつつあるJMP命令に対応する。図11に示されるこの第1のタイミングサイクルの間に、内部DDATA信号(図2のFIFO信号)は$0の値を転送する。図9に示されるように、DDATA値が$0の値を格納しているとき、データプロセッサ3において何らのブレークポイントもイネーブルされない。
【0120】
第2のタイミングサイクルの間に、内部PST値は$9の値を転送してJMP命令のためのターゲットアドレスが内部DDATA値を介して提供される次の2バイトの情報で特定されることを示す。この時点で、内部DDATA信号は$0の値を転送し続ける。前に述べたように、内部PST値が$8,$9,$A,または$Bのステータス値を転送する場合、内部PST信号はDDATA信号を介して外部的に提供される値を修飾する(qualify)ために使用されている。この動作では、内部PST信号は内部DDATA信号上のどの値が必要とされるターゲットアドレス情報を提供しているかを示すために「マーカ」として使用される。内部PST信号は実際のデータが内部DDATA信号上に表示される1タイミングサイクル前にこれらのステータス値によって符号化される。
【0121】
第3のタイミングサイクルの間に、内部PST値は$0の値を転送して命令実行が継続することを指示する。さらに、第3のタイミングサイクルの間に、内部DDATA信号はターゲットアドレス値のビット3〜0を提供する。
【0122】
第4のタイミングサイクルの間に、CPST値は前記ターゲットアドレスに位置する最初の命令によって規定される値を表す。このとき、内部DDATA信号は前記ターゲットアドレス値のビット7〜4を転送する。その後、第5および第6のタイミングサイクルにおいて、内部DDATA信号はそれぞれターゲットアドレス値のビット11〜8およびビット15〜12を提供する。このようにして、外部開発システム7は変形アドレシングを有する分岐動作の現在の記録および間接的に決定されるアドレスロケーションの双方を実時間で観察することができる。
【0123】
前記複数のマルチプレクサ80は内部PSTおよび内部DDATA信号をそれぞれPSTおよびDDATA信号として外部開発システム7に提供する。該PSTおよびDDATA信号は集積回路ピン(詳細には示されていない)を介して提供される。さらに、前記集積回路ピンを介して提供される前記PSTおよびDDATA信号はそれぞれ前記情報が内部PSTおよび内部DDATA信号を介して転送されてから1タイミングサイクル後に情報を通信する。
【0124】
そのような実時間の観察を可能にすることにより、外部開発システム7は障害をより迅速かつ正確に識別しかつ分離することができる。さらに、実時間のトレース観察が外部開発システム7に与えられている間に、データプロセッサ3のCPU2は命令の実行を継続しかつDDATAおよびPST信号の提供によって通常影響されない。
【0125】
さらに、上に示した例はJMP命令を実行するためのトレース機能を使用することについて述べたが、本発明はデータプロセッサ3の動的実行経路を完全に追跡するために使用できる。JMP命令によって説明したように、動的実行経路の追跡は何らかの流れの変更動作によって複雑化する。例えば、いくつかの分岐命令は変形アドレシングを使用して実施され、ターゲット命令アドレスの計算はPC(プログラムカウンタ)レラティブまたは絶対ではなく、プログラムビジブル(program visible)レジスタの使用を含む。
【0126】
変形アドレシングを使用する命令に対しては、本発明はターゲットアドレスが正しく決定されかつ外部開発システム7に提供されるように特定のシーケンスでDDATAおよびPST信号を提供する。最初に、テイクンブランチ命令の実行は複数の集積回路ピンを介して転送されるPST信号によって識別される。図10の符号化に示されているように、PST信号はテイクンブランチ命令がPST信号が$5の値を有する場合に実行されていることを示す。次に、PST信号はターゲットアドレスがDDATA信号上に表示されるべきことを示すために使用できる。PST信号の符号化はDDATA信号を介して表示されるべき数多くのバイトを識別する。前記ターゲットアドレスは次にDDATA信号を使用して後のタイミングサイクルに任意選択的に利用できるようになる。DDATA信号上に表示されるターゲットアドレスのビットの数は外部ユーザによって制御される構成可能なパラメータである。
【0127】
本発明はダイナミックに実行されかつデータプロセッサ3のCPU2の性能に対して大きな影響を与えることなく実行される独自のトレース機能を提供する。
【0128】
本発明によって実施される実時間トレース機能においては、PST信号によって規定される実行される命令ストリームとDDATA信号によって提供される捕捉データの利用可能性との間には厳格な同期があることに注意を要する。ここで述べられる本発明の実施形態においては、DDATA信号が容易に適切な命令と関連できるように厳格な順序付け(ordering)がある。この順序付けは以下の例においてより詳細に説明する。以下の例においては次のようなコードが実行されるべきであると仮定する。
【0129】
【表4】
命令アドレス 命令
00001316 movq #1,d0
00001318 mov.l d0,(−4,a6)
0000131c pea (−68,a6)
00001320 pea (−36,a6)
00001324 bsr.w Func2
0000115c mov.l d7,−(a7)
【0130】
上の例では、もしCSRが2バイトの分岐ターゲットアドレス情報を表示するよう構成され、すべてのオペランドがM−バス23のアクセスを発生し、かつ読出しおよび書込みオペランドの双方が捕捉されれば、PST信号およびDDATA信号上の結果として得られる出力は次のようになる。
【0131】
【表5】
【0132】
上に与えられた例においては、PSTおよびDDATA信号は同期した状態に留まっておりそれによってDDATA信号上に表示されている与えられたオペランドが常に与えられた命令と関連することを保証される。説明の明瞭化のために、上の例はDDATA信号および非ゼロPST値の間でオーバラップを示していない。しかしながら、これはPSTおよびDDATA信号の間の関係が違肯していない場合を除き生じ得る。
【0133】
<実時間デバッグサポート>
実時間トレース機能に加えて、本発明はまた実時間デバッグ機能を実行するための回路及び方法を提供する。数多くのデータプロセッサにおいては、特に組み込み型(embeded)システムにおいては、データプロセッサはシステムの制約のためまたはデータプロセッサがもはや正常なモードで動作していない場合に障害の回路またはプログラムを識別することができないためデバッグ動作の間に停止することはできない。本発明はデータプロセッサの実時間動作に対し最小限の立ち入りのみでかつデータプロセッサを停止させることなくデバッグ動作を実行する。
【0134】
ブレークポイント動作は典型的にはデバッグ動作の間にプログラミング事象を識別するために使用される。該プログラミング事象に遭遇した時、ブレークポイント信号が肯定されかつデータが取り出されてソフトウェアプログラムのステータスを判定する。トレース機能と同様に、ブレークポイント動作は外部ユーザが複数の選択されたレジスタ及びメモリロケーションの各々のステータスを突き止めてデータ処理エラーが識別できるようにする。
【0135】
本発明はそのようなブレークポイント動作を行うために複数のハードウェアブレークポイントレジスタ50及びブレークポイント回路100を提供する。本発明においてはプログラムカウンタまたはプログラムカウンタマスクの値、オペランドアドレス範囲、およびデータ値またはデータマスク値に基づくブレークポイント動作が全て実施される。さらに、本発明において実施されるブレークポイント動作はまた1または2レベルトリガへと構成することができ、この場合複数の制御レジスタ40の前記「トリガ定義レジスタ(Trigger Definition Register:TDR)」を介して正確なトリガ応答がプログラム可能である。本発明を使用したブレークポイント動作の実行については後により詳細に説明する。
【0136】
複数のハードウェアブレークポイントレジスタ50の各々は外部開発システム7によってあるいはプロセッサ3のCPU2によって書くことができる。図3に示されるように、「アドレスブレークポイントレジスタ(ABLR及びABHR)」はブレークポイント機能をトリガするために使用できるデータ処理システム5のオペランド論理アドレス空間における領域を規定する。図6により詳細に示された、「アドレス属性ブレークポイントレジスタ(AABR)」はブレークポイント機能のためのトリガにおいて整合されるべき複数のアドレス属性およびマスクを規定する。ABLRおよびABLRアドレス値のように、AABRに格納された属性値はK−バス25を介して転送されるアドレス属性信号と比較される。
【0137】
前記複数のハードウェアブレークポイントレジスタ50はまた複数の「プログラムカウンタブレークポイント」レジスタを含む。該複数の「プログラムカウンタブレークポイント」レジスタはブレークポイント機能をトリガするために使用できるデータ処理システム5の命令論理アドレス空間における領域を規定する。前記「プログラムカウンタブレークポイント(PBR)」値は前記「プログラムカウンタブレークポイントマスク(PBMR)」レジスタに格納された値によってマスクすることができる。本発明の一実施形態では、PBMRに格納された対応するゼロの値を有するPBRにおけるビットのみがデータ処理システム5のプログラムカウンタ値との比較動作において使用される。プログラムカウンタ値はデータ処理システム5のCPU2のプログラムカウンタレジスタ(ここでは図示されていない)に格納される。
【0138】
前記「プログラムカウンタブレークポイント」レジスタに加えて、前記複数のハードウェアブレークポイントレジスタ50は複数の「データブレークポイントレジスタ」を含む。該複数の「データブレークポイントレジスタ」は「データブレークポイントレジスタ(DBR)」および「データブレークポイントマスクレジスタ(DBMR)」を含む。DBRはデータ処理システム5がデバッグ動作を行っている場合にトリガを形成するために使用できる特定のデータパターンを規定するデータ値を格納する。DBMRに格納されたデータマスク値はDBRに格納されたデータ値をマスクする。したがって、本発明の一実施形態では、DBMRに格納された対応するゼロの値を有するDBRに格納されたビットのみがK−バス25を介して転送されるデータ信号と比較されトリガ条件が満たされているかを判定する。
【0139】
前記複数のハードウェアブレークポイントレジスタ50の各々は前記複数の制御レジスタ40のTDRを使用したトリガに応答するため異なる構成とすることができる。TDRによって示される構成とは独立に、トリガされたブレークポイントの指示はDDATA信号が捕捉されたオペランドおよびアドレスを表示していない場合には常にDDATA信号上に提供される。DDATA信号の出力は図9に示されている。
【0140】
図9は、DDATA信号のビット3〜0を介して提供される値とブレークポイントステータスの間の関係を示す。CSRのビット31〜28はDDATA信号のビット3〜0に対応することに注意を要する。
【0141】
DDATA信号が$0の値を有する場合、何らのブレークポイントもイネーブルされない。DDATA信号が$1の論理値を提供する場合、デバッグモジュール10はレベル1のブレークポイントがトリガされるのを待機している。前に述べたように、レベル1のブレークポイントの属性は前記「トリガ定義レジスタ(TDR)」のビット15〜0によって規定される。もし$2の論理値がDDATA信号によって提供されれば、レベル1のブレークポイントがトリガされている。DDATA信号が$5の論理値を提供する場合、デバッグモジュール10はレベル2のブレークポイントがトリガされるのを待機している。前に述べたように、レベル2のブレークポイントの属性は前記「トリガ定義レジスタ(TDR)」のビット31〜16によって規定される。もし$6の論理値がDDATA信号によって提供されれば、レベル2のブレークポイントがトリガされている。
【0142】
ブレークポイント動作のステータスはまたCSRのビット31〜28に格納されることに注意を要する。
【0143】
デバッグ動作の実行の前に、ブレークポイント値が複数のハードウェアブレークポイントレジスタ50のうちの適切な一つに格納されなければならない。該ブレークポイント値は外部開発システム7によってシリアルインタフェース30を介してあるいはCPU2によってK−バス25を介して提供できる。
【0144】
外部装置からこの書き込み機能を行うためには、外部開発システム7は前記DSDIおよびDSCLK信号の双方を使用してシリアルインタフェース30へと前記複数のハードウェアブレークポイントレジスタ50の内のあらかじめ選択された1つにデータをロードするためにコマンドをシフト入力する。本発明の一実施形態では、該コマンドの第1の部分はDSDI信号によって提供されかつDSCLK信号によってブロック入力される。該コマンドの付加的な部分はその後提供される。該コマンドの全ての部分は16ビットのパケットの情報が完成するまでレジスタ32に格納される。本発明の別の実施形態では本発明のこの実施形態において必要とされる16ビットよりも多くのまたは少ないビットを含むものとすることができることに注意を要する。
【0145】
本発明の別の実施形態では、前記ブレークポイント値はデータプロセッサ3のCPU2によって複数のブレークポイントレジスタ50の内の前記あらかじめ選択された1つに書き込まれる値によって決定することができる。CPU2が該値を前記複数のブレークポイントレジスタ50のあらかじめ選択された1つに書き込む時、該値は図3に示されるブレークポイント回路100の一時レジスタ170に提供される。該値はK−バス25を介して一時レジスタ170に提供される。一時レジスタ170から、前記値は16ビットのパケットで転送されかつレジスタ32に格納される。前に述べたように、CSRへのCPU書き込みに対しては、KDATA信号を介して転送されるオペランド値は制御バス15を介して制御回路20へとCPU2によって提供される制御信号を使用して一時データレジスタ170へと捕捉される。したがって、前記複数の制御レジスタ40に対しては、前記ブレークポイント値は外部開発システム7からレジスタ32に提供されるものと同じであるように見える。
【0146】
一旦前記ブレークポイント値が前記複数のブレークポイントレジスタ50の内の前記あらかじめ選択された一つに書き込まれると、CPUには通常の動作モードでプログラミングコードを実行する。そのプログラミングコードの実行の間に、アドレス情報がK−バス25のKADDR信号を介して通信されかつデータ情報がK−バス25のKDATA信号を介して通信される。さらに、CPU2におけるプログラムカウンタ情報はプログラムカウンタのブレークポイント比較動作の目的で一時PCレジスタ125に格納された値を絶えず更新する。
【0147】
アドレス、データおよびプログラムカウンタ情報がハードウェア回路100に転送されると、比較器130,140,180および135は該情報を受信しかつデータプロセッサ3の性能に悪影響を与えることなく選択的に比較動作を行う。さらに、複数の制御値が制御バス15を介して前記複数の制御レジスタ50のTDRからハードウェア回路100へと提供される。前記複数の制御値はハードウェア回路100を使用してトリガ動作を選択的に構成する前に述べたTDRの値を含む。
【0148】
例えば、外部開発システム7が、アドレスがある範囲のアドレスに入る場合にブレークポイントが肯定されるべきことを決定した場合、外部開発システム7はシリアルインタフェース30を使用してハイアドレス値を図3のABHR110にかつローアドレス値を図3のABLR120に書き込まなければならない。しかしながら、比較器130および比較器140がK−バス25のKADDR信号によって提供されるアドレスがABLR120およびABHR110に格納されたアドレスによって規定される範囲以内にあるかを判定することができる前に、前記複数の制御レジスタ40のTDRは制御バス15を介して適切な制御を提供しなければならない。
【0149】
この例では、前記適切な制御は肯定された「イネーブルアドレス範囲(Enable Address Range:EAR)」ビットまたは肯定された「イネーブルアドレスブレークポイント反転(Enable Address Breakpoint Inverted:EAI)」ビットを含む。前に述べたように、EARビットは該ビットが肯定されたとき、ABLR120およびABHR110によって規定される包含範囲(inclusive range)に際してブレークポイントがトリガできるようにする。同様に、肯定された時、前記EAIビットはABLR120およびABHR110によって規定される範囲を除いた、または外側の、アドレス範囲に際してブレークポイントがトリガできるようにする。
【0150】
EARおよびEAIビットの論理値に応じて、比較器130および140はKADDR信号を介して転送されるアドレス値がABHR110およびABLR120における関連する値より大きいかまたは小さいかを決定することになる。もしEARビットが肯定されかつKADDR信号を介して転送されるアドレス値がABHR110およびABLR120におけるアドレス値によって規定される範囲内にあれば、比較器130および140は前記「ブレークポイント」信号を肯定してあらかじめ選択されたトリガポイントがアクセスされたことを示す。前記「ブレークポイント」信号が肯定された時、制御回路20はマルチコンダクタ(multi−konductor)「ブレークポイント制御」信号を介してコア9のCPU2に転送されたBKPT(ブレークポイント)信号、「デバッグ割り込み」信号、および「ゴー(Go)」信号の内の1つを肯定する。
【0151】
前記ブレークポイント信号が肯定されたとき、ブレークポイントトリガの発生はTDRにおいて規定された応答を発生させる。もしデータプロセッサ3が停止すれば、BKPT信号の肯定はCPU2を強制的に背景デバッグモードにおける実行を停止させることになる。背景デバッグモードは後にやや詳細に説明することに注目すべきである。背景デバッグモードに入るためには、TDRのTRCビットは%01に等しくなるべきである。TRCビットはTDRのビット31および30に対応することに注意を要する。背景デバッグモードに入りかつプログラムカウンタ値にもとづくブレークポイントが肯定されたとき、CPU2はターゲットとされる命令が実行される前にデータプロセッサ3の実行を停止する。アドレスおよびデータ成分にもとづくブレークポイントに対しては、CPU2は停止の前にいくつかの付加的な命令を実行することができる。このタイプのブレークポイント動作は非実時間デバッグ動作のためにのみ使用すべきであり、それはデータプロセッサ3は前記トリガに応じて停止するからであることに注意を要する。
【0152】
しかしながら、データプロセッサ3が停止しなければ、制御回路20は特別のデバッグ割込みがCPU2に提供されるべきことを示すために前記「デバッグ割込み」信号を肯定する。特別のデバッグ割込みがCPU2に提供されるべき場合には、TDRのTRCビットは%10の論理値にセットされる。TRCビットが%10にセットされたとき、ブレークポイントトリガは制御回路20によってCPU2への特別のデバッグ割込みへと変換される。該特別のデバッグ割込みはCPU2が割込みのためにサンプルを行うまでペンディングとされる。特別のデバッグ割込みが肯定されたとき、ターゲットとされる命令が実行される前にプログラムカウンタ値にもとづくブレークポイントが生じる。これはCPU2が割込みがペンディング中であるかを判定するためにサンプルを行うのと同時にプログラムカウンタの比較動作がイネーブルされるため可能となる。アドレスおよびデータ比較にもとづくブレークポイントに対しては、CPU2は割込み動作を実行する前にいくつかの付加的な命令を実行することができる。
【0153】
特別のデバッグ割込みがCPU2によって認識されたとき、CPU2はソフトウエアプログラムの実行を中止しかつ例外処理ルーチンを開始する。例外処理ルーチンの始めに、CPU2はエミュレータモードの動作に入る。CPU2がエミュレータモードの動作を行っている場合にはすべての割込みは無視されることに注意を要する。前記複数の制御レジスタ40のCSRにおけるMAPビットの状態に応じて、エミュレーションモードの動作はすべてのメモリアクセスを前記複数のハードウエアブレークポイントレジスタ50のAABRレジスタのTTおよびTM値により指示される特別にマッピングされたアドレス空間へと強制することができる。この例では、前記TT値は$2に等しくかつ前記TM値は$5(オペランド)または$6(命令)に等しい。
【0154】
標準的な8バイトの実行スタックが作成された後、CPU2は独自の例外ベクトルをフェッチする。CPU2は前記独自の例外ベクトルに含まれる命令アドレスにおいて実行を続ける。CPU2におけるデバッグ割込みハンドラはスーパバイザ命令セットを使用して複数の必要なセーブ動作を行うようプログラムすることができる。1例として、デバッグ割込みハンドラはすべてのプログラム可視レジスタの状態および特別のメモリロケーションを確保したメモリ空間にセーブすることができる。前記確保したメモリ空間はメモリ6内に位置してもよくあるいはそれはデータ処理システム5のいずれか他のメモリに位置してもよい。いったん要求される動作が完了すると、「例外からの戻り(Return From Exception:RTE)」命令が実行されかつCPU2はエミュレータモードの動作を退出する。CPU2がデバッグ割込み信号を受信しかつエミュレータモードの動作に入ったとき、PST信号はこの条件を通知するため$Dの値を有する。PST信号はデバッグ割込みが処理される時間からデバッグ割込み例外処理ルーチンの最初の命令がフェッチされるまでこの値を有する。さらに、PST信号はCPU2がエミュレータモードの動作から退出したことを指示するために$7の値を有する。さらに、いったん前記デバッグ割込みハンドラがそのデバッグ例外処理ルーチンの実行を完了すると、外部開発システム7は次にメモリ6における前記確保されたメモリロケーションまたは前記確保されたメモリロケーションを含むデータ処理システム5の他のメモリをアクセスすることができる。
【0155】
前記デバッグ割込みはデータプロセッサ3の通常の動作における少しの侵入が許容される場合の実時間デバッグ動作のために使用できるが、データプロセッサ3を停止させることは選択可能なものではない。データプロセッサのエミュレータモードへのエントリおよびエミュレータモードからのエグジットはPST信号上の独自の値によって通知されることに注意を要する。
【0156】
さらに、ある範囲ではなく、単一のアドレスにもとづき、あるデータ値または該データ値のマスクにもとづき、かつあるプログラムカウンタ値または該プログラムカウンタ値のマスクにもとづき、他の比較を本発明において行うことができることに注目すべきである。上の例で説明したアドレス範囲の比較については、データ値、データ値のマスク、プログラムカウンタ値、およびプログラムカウンタ値のマスクにもとづく比較はTDRが制御バス15を介して適切な制御値を提供することを必要とする。
【0157】
<マルチレベルトリガ構成>
本発明によって行われる実時間デバッグ動作は2つのレベルのトリガ値を提供するよう拡張できる。本発明のこの実施形態では、ビット31〜16は第2のレベルのトリガを規定しかつビット15〜0は第1のレベルのトリガを規定する。トリガが2レベルトリガとして構成されるとき、前記トリガは条件「もし…であれば、もし(if−then−if)」構造と同様の様式で機能する。例えば、もしトリガの第1の条件、またはレベル、が満たされれば、該トリガがデータ処理システム5によって実行されるべきブレークポイント機能をイネーブルする前に第2の条件、またはレベル、が満たされなければならない。そのような条件トリガ構造は外部開発システム7が大きな柔軟性および精度の双方を備えて機能できるようにする。本発明のこの実施形態においては、2つのレベルのみのトリガ構造が実施されていることに注意を要する。しかしながら、さらに付加的なレベルのトリガ構造も実施できる。
【0158】
2レベルトリガ動作の例として、外部開発システム7がアドレス$0000FACEへの$FEED以外のいずれかの値のユーザモードのオペランドワード書込みとしてトリガを定義することを希望し、続いてプログラムカウンタが$DEADBEEFの値に等しくなるものと仮定する。第1のレベルのトリガはアドレス$0000FACEへの$FEED以外の何らかの値のユーザモードのオペランドワード書込みであろう。第2のレベルのトリガはプログラムカウンタが$DEADBEEFの値に等しい場合に生じる。
【0159】
この動作を実行するために、外部開発システム7は値$DEADBEEFをプログラムカウンタブレークポイントレジスタ(PBR)115にかつ$000000000の値をプログラムカウンタブレークポイントマスクレジスタ(PBMR)190に書き込むことができる。PBMR190にオールゼロが書き込まれたとき、PBR115に格納されたすべてのビットは一時PCレジスタ125によって提供されるプログラムカウンタ値と比較される。前記比較動作は前記複数の制御レジスタ40のTDRに格納された値に応じて実行されることに注意を要する。
【0160】
外部開発システム7はまた$0000FACEの値をアドレスブレークポイントローレジスタ(ABLR)120にかつ$0041の値を図6のアドレス属性ブレークポイントレジスタ(AABR)に書き込まなければならない。ABLR120における$0000FACEの値は前記TDRの構成が比較が行われるのを許容すれば比較器140が前記ブレークポイント信号を肯定する値を示す。前記AABRにおける$0041の値はTM値を%001にセットし、前記TT値は%00に、前記SZ値は%10に、そしてR(読出し)ビットをゼロにセットする。前記TMおよびTT値はトリガがユーザモードのオペランドワード書込み動作となることを保証する働きをなす。
【0161】
外部開発システム7は$0000FEEDの値をブレークポイント回路100のデータブレークポイントレジスタ(DBR)160に書き込まなければならない。外部開発システムはまた$000000000の値をデータブレークポイントマスクレジスタ(DBMR)150に書き込まなければならない。オールゼロがDBMR150に書き込まれたとき、DBR160に格納されたすべてのビットは比較器180を使用してKDATA信号によって提供されるデータ値と比較される。この比較動作は前記複数の制御レジスタ40のTDRに格納された値に応じて行われることに注意を要する。
【0162】
最後に、外部開発システム7は前記複数の制御レジスタ40のTDRを$20022824の値で書き込まなければならない。TDRがこの値を有する場合、第1のレベルのトリガは以下の特性を有する。この例では、前記EBLビットが肯定され、前記EDLWビットが否定され、前記EDWLビットが肯定され、かつ前記EDWU,EDLL,EDLM,EDUM,およびEDUUビットがすべて否定される。前記DIビットは肯定され、前記AIおよびEARビットは否定され、前記EALビットは肯定され、かつ前記EPCおよびPCIビットは否定される。この構成により、TDRはDBR160に格納された値と同じに格納されていないワード長のデータ値に対し前記ブレークポイント信号を肯定するよう前記第1のレベルのトリガをイネーブルするよう構成する。さらに、前記TDRは上に述べた条件のおのおのが適合しかつABLR120に格納されたアドレス値が前記KADDR信号によって提供される値に対応する場合に第1のレベルのトリガを肯定するよう構成される。前記TDRによって決定される上に述べた条件のおのおのが満たされた場合、第1のレベルのトリガが肯定されかつ次に前記ブレークポイント信号が肯定される前に前記第2のレベルのトリガが満たされなければならない。
【0163】
さらに、前記TDRがこの値を有する場合、第2のレベルのトリガは以下の特性である。この例では、前記TRC値は%00であり、前記EBLビットは肯定され、前記EDLW,EDWL,EDWU,EDLL,EDLM,EDUMおよびEDUUビットはすべて否定される。前記DI,AI,EARおよびEALビットは否定され、前記EPCビットは肯定され、かつ前記PCIビットは否定される。この構成により、前記TDRはPBR115に格納されたものと同じであるプログラムカウンタ値に対し前記ブレークポイント信号を肯定するため第2のレベルのトリガがイネーブルされるよう構成する。TDRによって判定される上に述べた条件のおのおのが満たされた場合、第2のレベルのトリガが肯定されかつ前記ブレークポイント信号が肯定されることになる。
【0164】
前に述べたように、ブレークポイント信号はプログラム可能なトリガ応答を生じる結果となる。該トリガ応答は前記複数の制御レジスタ40のTDRのビット31および30へとプログラムされる。正しくプログラムされたとき、データプセッサ3のCPU2のトリガ応答は前記DDATA信号を介して外部開発システム7にとってトリガを見えるようにすることとなりかつ何らの内部応答も生じさせない。第2のトリガ応答はCPU2に実行を停止させかつ外部的にCPU2が中止状態にあることをPST信号を介して指示させる。第3のトリガ応答はCPU2に対しデバッグ割込みを発生する。前に述べたように、デバッグ割込みは優先度がすべての他の割込みより高くかつCPU2をエミュレータモードの動作に入らせかつ独自の例外処理ルーチンにアクセスさせる。エミュレータモードの動作へのエントリおよび該エミュレータモードの動作からのエグジットは外部的にPST出力上において見えるようにされる。
【0165】
<デバッグモジュールおよびコアの同時動作>
上に述べた実時間デバッグ機能をサポートするため、本発明はコア9およびデバッグモジュール10の同時動作をサポートしている。デバッグモジュール10のためにK−バス25上で効果的にバスサイクルをスケジューリングする調停機構は本発明では実時間デバッグ動作の効率的な実行を可能にするために実施される。該調停機構はCPU2の内部命令フェッチパイプラインを停止させること(stalling)によりデバッグモジュール10のためのバスサイクルを効率的にスケジューリングする。前記調停機構はデバッグモジュール10のK−バス25へのアクセスを許容する前にすべてのオペランド要求がCPU2によってサービスされるまで待機する。デバッグモジュール10は前記「バス承認」信号を受信しかつK−バス25をABHR110に格納された要求されるアドレスおよび図6のAABRに格納された属性によってドライブする。読出し要求に対しては、前記応答はKDATA信号に対してドライブされかつデバッグモジュール10によって一時データレジスタ170において捕捉される。書込みリファレンスに対しては、前記書込みオペランドがDBR160からKDATA信号に対してドライブされる。デバッグモジュール10はこの動作をK−バス25をCPU2に対して放棄し戻す前に1つのバス処理において行う。従って、デバッグモジュール10はCPU2の実時間動作ふるまいへのその侵入を最小にする。K−バス25に対する調停機構はCPU2に格納されたロジックによって実行される。
【0166】
CPU2およびデバッグモジュール10の同時動作を示す例において、外部開発システム7はデバッグ機能の間にメモリ読出し動作を実行しているものと仮定する。メモリ読出し命令を実行するために、外部開発システム7は前記DSDIおよびDSCLK信号の双方を使用してシリアルインタフェース30に対しメモリロケーションをアクセスするためのコマンドおよびアドレスをシフト入力する。本発明の1実施形態では、前記コマンドの第1の部分はDSDI信号によって提供されかつDSCLK信号によってクロック入力される。前記コマンドの付加的な部分はその後提供される。前記コマンドのすべての部分は16ビットのパケットの情報が完成するまでレジスタ32に格納される。本発明の別の実施形態では本発明のこの実施形態において要求される16ビットより多くのまたは少ないビットを含むことができることに注意を要する。
【0167】
ここに説明される本発明の実施形態においては、予め選択されたメモリロケーションへある値を書き込む命令は48ビット長であり、16ビットのオペコードおよび32ビットのアドレスを備えている。レジスタ32は16ビットのみの幅である。従って、第1の16ビットのパケットの情報が完成したとき、該情報は制御バス15を介して制御回路20へ転送される。制御回路20はその第1の16ビットのパケットの情報をデコードして行われるべき動作のタイプを決定する。いったん制御回路20が前記第1の16ビットのパケットのデータをデコードしかつプログラムされたメモリロケーションからの読出しアクセスが行われるべきことを決定すれば、制御回路20は制御バス15を介して制御信号を提供し引き続く32ビットのアドレス情報が前記複数のハードウエアブレークポイントレジスタ50のABHR110へとロードできるようにする。
【0168】
その後のデータはDSDI信号を介して外部開発システム7によってシリアルに提供される。前に述べたように、DSDI信号によって提供されるその後のデータはDSCLK信号を介してクロック入力される。16ビットのパケットの情報が完成するまでデータビットのおのおのはレジスタ32に格納される。第2の16ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して複数のハードウエアブレークポイントレジスタ50のABHR110へと転送される。その後、付加的な情報はDSDIおよびDSCLK信号を介して外部開発システム7によりレジスタ32へとシリアルに提供される。第3の16ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して複数のハードウエアブレークポイントレジスタ50のABHR110へと転送される。
【0169】
前記オペランドおよびアドレス情報が受信されたとき、制御回路20は前記「バス要求」信号を肯定する。該「バス要求」信号はK−バス25を介してCPU2へと転送される。前に述べたように、前記「バス要求」および前記「バス承認」信号はデバッグモジュール10およびCPU2の間の直接的な接続である。バス調停の詳細は前に説明した。
【0170】
前記「バス承認」信号が肯定されたとき、ABHR110がイネーブルされてそこに格納されたアドレス情報をKADDR信号を介してK−バス25に提供する。該アドレス情報はその中のメモリロケーションを読み出すためにメモリ6によってデコードされる。読出し動作が実行されるため、メモリ6はK−バス25のKDATA信号上のメモリロケーションに対応するオペランドを出力する。アクセスされるメモリはメモリ6に限定されないことに注意を要する。むしろ、アクセスされるメモリはメモリ6あるいはデータ処理システム5の任意の他のメモリロケーションとすることができる。KDATA信号を介して転送されるオペランドはその後ブレークポイント回路100の一時データレジスタ170において捕捉される。前記オペランドはその後「内部データ」信号を介してレジスタ32に転送される。前記オペランドは次にシリアルインタフェース30によって提供されるDSDO信号を介して32のタイミングサイクルで直列的にシフト出力される。前記DSDO信号は外部開発システム7へ提供される。
【0171】
さらに、オペランドが前記KDATA信号を介して転送された後、CPU2は処理速度への最小限の侵入とともにデータ処理命令の実行を再開する。従って、CPU2はシリアルインタフェース30が情報を出力している間にデータ処理機能を行うことができる。
【0172】
本発明はデータプロセッサ3が特別のデバッグモードで動作することを要求することなくCPU2およびデバッグモジュール10の同時動作を可能にすることに注目すべきである。コア9とデバッグモジュール10との間でデータ、アドレスおよび制御情報を通信するためにK−バス25を使用することはデバッグモジュール10がCPU2と同じメモリロケーションおよび内部レジスタにアクセスできるようにする。従って、デバッグモジュールはCPU2がアクセスできるすべてのメモリロケーションおよび内部レジスタにアクセスすることができる。CPU2およびデバッグモジュール10を同時に動作させることができる能力により外部開発システム7がプロセッサの動作に大きな影響を与えることなくデータプロセッサ3の内部レジスタおよびメモリにおける増大した可視性(visibility)を持つことができるようにする。
【0173】
さらに、デバッグモジュール10およびCPU2はともに同じ内部レジスタおよびメモリロケーションにアクセスする能力を有するが、CPU2およびコア9の残りの部分は前記複数の制御レジスタ40のCSRにおける前記「デバッグレジスタへのプロセッサ書込み禁止(Inhibit Processor Writes to Debug Registers:IPW)」ビットがセットされている場合に複数のブレークポイントレジスタ50に格納された値を変更しないことに注意を要する。CSRにおけるIPWビットがセットされている場合、CPU2によって開始されたいずれの書込み動作も禁止される。さらに、IPWビットは外部開発システム7によって提供されるコマンドによってのみ変更することができる。
【0174】
IPWビットをセットするため、外部開発システム7はDSDIおよびDSCLK信号の双方を使用してシリアルインタフェース30にデータをCSRにロードするためコマンドをシフト入力する。前に述べたように、本発明の1つの実施形態では、前記コマンドの第1の部分はDSDI信号によって提供されかつDSCLK信号によってクロック入力される。前記コマンドの付加的な部分はその後提供される。前記コマンドのすべての部分は16ビットのパケットの情報が完成するまでレジスタ32に格納される。本発明の別の実施形態では本発明のこの実施形態において必要とされる16ビットより多くのまたは少ないビットを含むことができることに注目すべきである。
【0175】
ここに説明される本発明の実施形態においては、CSRにある値を書き込む命令は48ビット長であり、16ビットのオペコードおよび32ビットのデータを備えている。レジスタ32は16ビットのみの幅を有する。この書込み命令を実行するため、外部開発システム7はDSDIおよびDSCLK信号の双方を使用してシリアルインタフェース30にデータをCSRへロードするためコマンドをシフト入力する。該コマンドの第1の部分はDSDI信号によって提供されかつDSCLK信号によってクロック入力される。前記コマンドの付加的な部分はその後提供される。前記コマンドのすべての部分は16ビットのパケットの情報が完成するまでレジスタ32に格納される。
【0176】
ここに説明される本発明の実施形態においては、CSRにある値を書き込む命令は48ビット長であり、16ビットのオペコードおよび32ビットのデータを備えている。レジスタ32は16ビットのみの幅を有する。従って、第1の16ビットのパケットの情報が完成したとき、該情報は制御回路20に転送されそこでデコードされかつその後の動作が構成される。第2の16ビットのパケットの情報がレジスタ32にロードされたとき、該情報は前記「シリアル情報」信号を介して複数の制御レジスタ40に転送される。制御回路20から制御バス15によって提供される制御情報を使用して、前記「シリアル情報」信号の内容はデスティネイションレジスタ、すなわち前記CSR、の上位部分にロードされる。同様に、第3の16ビットのパケットの情報がレジスタ32にロードされかつ次に複数の制御レジスタ40に転送される。前と同様に、制御回路20によって供給される信号を使用して、前記「シリアル情報」信号の内容はCSRの下位部分へとロードされる。このようにして、48ビットの命令全体が直列的にデバッグモジュール10にシフト入力され、そこでデコードされかつオペランド値がCSRにロードされる。
【0177】
その後のデータはDSDI信号を介して外部開発システム7によって直列的に提供される。前に述べたように、DSDI信号を介して提供されるその後のデータはDSCLK信号を介してクロック入力される。16ビットのパケットの情報が完成するまで前記データビットのおのおのはレジスタ32に格納される。第2の16ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して複数の制御レジスタ40に転送される。前記第2の16ビットのパケットの情報はCSRにビット31〜16として格納される。その後、付加的な情報が直列的に前記DSDIおよびDSCLK信号を介して外部開発システム7によってレジスタ32に提供される。第3の16ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して前記複数の制御レジスタ40に転送される。この第3の16ビットのパケットの情報はビット15〜0としてCSRに格納される。
【0178】
本発明の別の実施形態では、IPWビット以外のすべての値はデータプロセッサ4のCPU2によってCSRに書き込まれる値によって構成することができる。CPU2が該値をCSRに書き込むとき、該値は図6に示されるブレークポイント回路100の一時レジスタ170に提供される。前記値はK−バス25のKDATA信号を介して一時レジスタ170に与えられる。一時レジスタ170から、前記値はレジスタ32へ転送されかつ16ビットのパケットで該レジスタ32に格納される。従って、複数の制御レジスタ40に対しては、前記値は外部開発システム7からレジスタ32に提供されたものと同じであるように見える。
【0179】
前記IPWビットおよび前記CSRに格納された他の値は制御バス15を介してハードウエア回路100に提供される。前記IPWビットが肯定されかつCPU2がABHR110,ABLR120,DBMR150,DBR160,PBMR190およびPPR125の内の1つに格納された値を変更しようと試みる場合、前記IPWビットはコア9によって開始される書込み動作をディスエーブルするために上に述べたレジスタのおのおのに提供される。
【0180】
前記複数のハードウエアブレークポイントレジスタ50への書込み動作を効果的にディスエーブルするためにIPWビットを使用することはデータプロセッサ3における障害の回路および誤りのあるプログラムを分離しかつ識別するために外部開発システム7によってプログラムされる条件がCPU2によってオーバライトされないことを保証する。
【0181】
〈リセット例外処理の間のデバッグ動作〉
本発明は外部開発システム7がリセット動作のための例外処理ルーチンが開始される前にデータプロセッサ3においてブレークポイント動作を実行できるようにするメカニズムを提供する。「外部リセット」信号が肯定されたとき、前記複数の制御レジスタ40の各々の内容は初期化される。前記「外部リセット」信号がその後否定されたとき、データプロセッサ3が実際のリセット例外処理ルーチンを開始する前に静止している時間のウィンドウが存在する。外部開発システム7によって前記静止時間の間に外部ブレークポイント信号、*BKPT、が肯定されれば、本発明はターゲットメモリ値をデータ処理システム5にダウンロードしかつ何らかの要求されるハードウェアレジスタ構成を行なうためのメカニズムおよび方法を提供する。前記ターゲットメモリ値は単一の値でもよくあるいは複数の値でもよい。
【0182】
いったん前記ターゲットメモリ値が外部開発システム7によってダウンロードされると、前記複数の制御レジスタおよび前記複数のハードウェアブレークポイントレジスタ50の内の一方または双方が構成できる。さらに、CPU2に含まれるハードウェアレジスタ、MMU/コントローラ4、およびシステムバスコントローラ8もまたプログラムされ得る。最後に、データプロセッサ3は「ゴー(Go)」コマンドを使用してリスタートされなければならない。しかしながら、本発明においては、前記「ゴー」コマンドの受信に応じて実行される一連のハードウェア動作はCPU2がブレークポイント動作を実行している間に変更されたハードウェアレジスタの関数である。もし外部開発システム7がCPU2のプログラムカウンタレジスタを変更しなければ、前記「ゴー」コマンドはデータプロセッサ3をイネーブルして通常のリセット例外処理ルーチンを実行できるようにする。しかしながら、もし外部開発システム7がCPU2のプログラムカウンタレジスタを変更しなければ、前記「ゴー」コマンドはデータプロセッサ3をイネーブルして前記通常のリセット例外処理ルーチンをバイパスしかつプログラムカウンタレジスタにロードされたアドレスによって識別される命令の実行を開始できるようにする。
【0183】
そのようなリセットおよびブレークポイント動作の間のデータプロセッサ3の動作は後により詳細に説明する。前記「リセット」信号が肯定されかつデータプロセッサ3のCPU2に提供されたものと仮定する。該「リセット」信号が否定されたとき、外部開発システム7は前記*BKPT信号を肯定する。デバッグモジュール10の制御回路20はK−バス25を介してのCPU2への複数のブレークポイント制御信号の内の前記BKPT信号を肯定する。前と同様に、制御インタフェースはデバッグモジュール10とCPU2との間の直接的接続であることに注意を要する。
【0184】
CPU2が肯定されたBKPT信号を受信したとき、CPU2は静止時間ウィンドウを中止しかつデータプロセッサ3が停止していることを通知する。この時間の間、PST信号は$Fの論理値を有し外部開発システム7にデータプロセッサ3が動作を停止していることを示す。したがって、CPU2およびデータプロセッサ3はリセット例外処理ルーチンを開始する前に停止される。
【0185】
いったんPST信号がデータプロセッサ3が動作を停止していることを指示すると、外部開発システム7は複数のデータ、アドレスおよび制御値を前記DSDI信号および前記DSCLK信号を介してデータプロセッサ3にダウンロードする。前記複数のデータ、アドレスおよび制御値はメモリ6に格納されるべきプログラムまたはデータ値のメモリイメージとすることができる。さらに、前記複数のデータ、アドレスおよび制御値は前記複数の制御レジスタ40および前記複数のハードウェアブレークポイントレジスタ50のような複数の構成レジスタの各々のために初期化値を提供することができる。前記複数のデータ、アドレスおよび制御値がDSDI信号を介してデータプロセッサ3に提供されたとき、前記値の各ビットはシリアルインタフェース30を介してレジスタ32に提供される。レジスタ32が満杯になったとき、パケットの情報が前記「シリアル情報」信号を介して複数のハードウェアブレークポイントレジスタ50に提供する。前記複数のハードウェアブレークポイントレジスタ50においては、前記パケットの情報は一時データレジスタ170のようなレジスタに格納される。一時データレジスタ170はその後そこに格納された情報をKDATA信号を介してK−バス25に提供する。K−バス25は該情報をコア9の残りの部分に転送する。この動作は前により詳細に説明したから、内部格納手順のこれ以上の説明はここでは行なわない。
【0186】
前記複数のデータ、アドレスおよび制御値がデータプロセッサ3の適切なメモリまたはレジスタロケーションに格納された後、外部開発システム7は前記DSDIおよびDSCLK信号を介してデータプロセッサ3に「ゴー」コマンドを提供する。前記複数のデータ、アドレスおよび制御値と同様に、該「ゴー」コマンドはDSDI信号を介してデータプロセッサ3に提供される。前記「ゴー」コマンドの各々のビットはシリアルインタフェース30を介してレジスタ32に提供される。レジスタ32が満杯になったとき、パケットの情報が制御バス15を介して制御回路20に与えられる。制御回路20は前記「ゴー」コマンドをデコードしてK−バス25を介してCPU2に前記「ゴー」信号を提供する。
【0187】
CPU2が前記「ゴー」信号に応答したとき、それが実行する命令は外部開発システム7によって提供される前記複数のアドレス、データおよび制御値によって変更されたレジスタによって決定される。例えば、もしCPU2のプログラムカウンタ(図面には詳細に示されていない)が変更されれば、CPU2は該変更されたプログラムカウンタに格納された新しい命令アドレスからプロセッサの実行を開始する。しかしながら、もしCPU2のプログラムカウンタが変更されなければ、CPU2は通常のリセット例外処理ルーチンにより継続する。
【0188】
リセット例外処理ルーチンの実行の前にデータプロセッサ3のブレークポイントを行なう本発明の能力は外部開発システム7がリセット例外処理ルーチンの実行の間に前記値がオーバライトされる機会を生じることなく要求される様式でデータプロセッサ3を構成できるようにする効率的なかつ有用なメカニズムを提供する。
【0189】
リセット例外処理ルーチンが実行される前にブレークポイント動作を実行するこの能力はまた外部開発システム7が不揮発メモリ装置のプログラミングをバイパスできるようにする。新しいソフトウェアイメージを書き込み可能なメモリ装置にロードすることにより、前記不揮発メモリにプログラムされたコードは容易にバイパスできる。外部開発システム7は80ビットの命令をシフト入力することによりいずれのハードウェアレジスタをもアクセスできる。この80ビットの命令は16ビットのオペコード、CPU空間へマッピングされた32ビットのアドレス、および32ビットのオペランドデータを含む。いったん完全なコマンドが受信されると、デバッグモジュール10はメモリ参照動作と同様の様式で動作する。K−バス25が要求され、次にCPU2によって承認される。CPU空間のK−バスサイクルがデバッグモジュール10によって開始されかつ適切なハードウェアレジスタが書き込まれる。
【0190】
〈背景デバッグモード〉
データプロセッサ3が特別の背景デバッグモードで動作しているとき、CPU2は停止してデバッグモジュール10が全てのメモリおよびレジスタ値に完全にアクセスでき、それによって障害のある回路および誤りのあるプログラムを分離しかつ識別できるようにする。背景デバッグモードにあるときレジスタおよびメモリロケーションは観察できかつ選択的に変更できる。さらに、試験機能をイネーブルできる。外部開発システム7はそれが特別の背景デバッグモードで動作しているときにデバッグモジュール10を介して容易に内部情報にアクセスできるが、通常の命令実行は中止され、それはCPU2がこの動作モードにおいては停止しなければならないからである。CPU2が停止しているとき、PST信号は$Fの値を有することに注意を要する。
【0191】
前記特別の背景デバッグモードの動作は数多くの発生源によって発生できる。例えば、前記*BKPT信号を外部開発システム7によって外部的に発生してデータプロセッサ3が背景デバッグモードの動作に入るよう選択的にイネーブルすることができる。さらに、内部的に発生されたブレークポイント動作および破滅的例外条件もまたデータプロセッサ3を背景デバッグモードの動作に入るようイネーブルできる。
【0192】
いったんデータプロセッサ3が背景デバッグモードの動作に入ると、データプロセッサ3の通常の動作は停止されかつ特別の機能が外部開発システム7の制御の下にデバッグモジュール10によって行なわれる。デバッグモジュール10および外部開発システム7の間の全ての通信はシリアルインタフェース30および前記DSDI,DSDOおよびDSCLK信号の各々を介して行なわれる。
【0193】
前に述べたように、本発明のこの実施形態では、背景デバッグモードはPST信号を介して外部ユーザに通知される。PST信号上の$Fの値がプロセッサが停止しかつ背景デバッグ動作モードで動作していることを示す。背景デバッグモードへのエントリの指示は重要であり、それはこれが外部ユーザがシリアル通信チャネルを介してサポートされたデバッグコマンドを開始できるようにするための信号を提供するからである。したがって、シリアルインタフェース30を介して提供されるシリアルポートはメモリロケーションおよび内部レジスタからデバッグ情報を取り出すために使用することができる。
【0194】
もし前記MAPビットが否定されれば、全てのエミュレータモードのメモリ参照は通常のものとしてスーパバイザアクセスへとマッピングされ、したがってオンチップメモリ、外部メモリおよび入力/出力装置のようなシステム資源が参照できるようになる。
【0195】
最後に、外部開発システム7から「ゴー」コマンドが直接的にデバッグモジュール10にシフト入力された後に前記「ゴー」信号が肯定される。前記「ゴー」信号は何らかの事象がデータプロセッサ3を停止させた後にデータプロセッサ3の実行をリスタートさせ、背景デバッグモードの動作へのエントリを強制する。データプロセッサ3はもしTDRがこの形式の方向を強制するようプログラムされていれば制御回路20による前記「ブレークポイント」信号の肯定によって停止され得る。さらに、データプロセッサ3はデータプロセッサ3による「ホールト(Halt)」命令の実行によりあるいはフォールト・オン・フォールト(fault−on−fault)」条件の発生により停止され得る。
【0196】
【発明の効果】
要するに、本発明はデータプロセッサが、背景デバッグモードのような、特別の動作モードに入ることを要求することなく実時間トレースおよびデバッグ機能を実行できるようにするデータプロセッサおよび動作方法を提供する。さらに、本発明は実時間デバッグ機能の実行の間にマルチレベルのトリガの実行のための方法を提供する。これらの独自の特徴的機能の各々は外部ユーザにデータ処理システム5における障害を識別しかつ分離する上でより大きな機能性および柔軟性を提供する。
【0197】
前に述べたように、本発明は重要な、かつ今まで存在しなかった、実時間トレース機能を提供する。該実時間トレース機能は、外部開発システム7のような、外部ユーザが外部バスの形式または利用可能性を想定することなくデータプロセッサ3の内部動作をダイナミックに観察できるようにする。さらに、前記実時間トレース機能はデータ処理システム5の効率および速度に大きな影響を与えることなくそのような観察可能性をシステムの内部動作内に提供する。データ処理システム5のデバッグモジュール10は外部ユーザに対しDDATAおよびPST信号を介して内部動作情報を提供するための並列出力ポートを提供する。前記DDATA信号はオペランド値を反映するデータを提供しかつ前記PST信号はCPU2の実行ステータスを反映する符号化されたステータス情報を提供する。さらに、前記DDATA信号はまた捕捉された命令アドレスプログラムフローの変更を可能にし外部開発システムが外部的に見えるアドレスバスまたは外部的に見えるデータバスを必要とすることなく正確なプログラムフローをトレースできるようにする。DDATA信号上に表示される情報はPST信号上のステータス情報と同期していることに注意を要する。したがって、外部ユーザはデータプロセッサ3の通常動作を中止することなくデータプロセッサ3におけるキーとなる変数のステータスを決定するために前記DDATAおよびPST信号をデコードすることができる。言い換えれば、データプロセッサ3は内部情報を外部開発システムに提供するために特別のデバッグまたはエミュレータモードで動作することを要求されない。
【0198】
さらに、本発明は実時間デバッグ機能を実行するための回路および方法を提供する。多くのデータプロセッサにおいては、特に組み込み型(embedded)システムでは、データプロセッサはシステムの制約によりあるいはデータプロセッサがもはや正常なモードで動作していない場合に障害の回路またはプログラムを識別することの不能性のためデバッグ動作の間に停止できないかもしれない。本発明はデータプロセッサの実時間動作に対し最小の侵入のみによりかつデータプロセッサを停止させることなくデバッグ動作を実行する。
【0199】
ブレークポイントは動作は典型的にはプログラミング事象を識別するためにデバッグ動作の間に使用される。プログラミング事象に遭遇したとき、ブレークポイント信号が肯定されかつソフトウェアプログラムのステータスを決定するためデータが取り出される。トレース機能と同様に、ブレークポイント動作は外部ユーザが複数の選択されたレジスタおよびメモリロケーションの各々のステータスを確かめ、それによってデータ処理エラーが識別できるようにする。本発明はそのようなブレークポイント動作を行なうために複数のハードウェアブレークポイントレジスタ50およびブレークポイント回路100を提供する。本発明においては、プログラムカウンタの値またはプログラムカウンタマスク、オペランドアドレス範囲、およびデータ値またはデータマスク値に基づくブレークポイント動作は全て実施される。さらに、本発明において実施されるブレークポイント動作はまた1または2レベルトリガへと構成でき、この場合複数の制御レジスタ40の前記「トリガ定義レジスタ(TDR)」を介して正確なトリガ応答がプログラム可能である。
【0200】
また、本発明はデータプロセッサ3が特別のデバッグモードで動作することを要求することなくCPU2およびデバッグモジュール10の同時動作を可能にする。コア9とデバッグモジュール10との間でデータ、アドレス、および制御情報を通信するためにK−バス25を使用することによりデバッグモジュール10がCPU2と同じ内部レジスタおよびメモリロケーションへのアクセスを持つことができるようになる。したがって、デバッグモジュールはCPU2がアクセスできる全てのメモリロケーションおよび内部レジスタにアクセスできる。CPU2およびデバッグモジュール10を同時に動作させることができる能力は外部開発システム7がプロセッサの動作に大きな影響を与えることなくデータプロセッサ3の内部レジスタおよびメモリにおける増大した可視性を持つことができるようにする。
【0201】
さらに、デバッグモジュール10およびCPU2は双方とも同じ内部レジスタおよびメモリロケーションをアクセスする能力を有するから、CPU2およびコア9の残りの部分は前記複数の制御レジスタ40のCSRにおける「デバッグレジスタへのプロセッサ書き込み禁止(IPW)」ビットがセットされている場合に前記複数のブレークポイントレジスタ50に格納された値を変更することはできない。前記CSRにおける前記IPWビットがセットされている場合、CPU2によって開始されるいずれの書き込み動作も禁止される。さらに、IPWビットは外部開発システム7によって提供されるコマンドによってのみ変更することができる。複数のハードウェアブレークポイントレジスタ50への書き込み動作を効果的にディスエーブルするためにIPWビットを使用することは外部開発システム7によってプログラムされかつデータプロセッサ3における障害の回路および誤りのあるプログラムを分離しかつ識別するために必要な事象がCPU2によってオーバライトされないことを保証する。
【0202】
さらに、本発明は外部開発システム7がリセット動作のための例外処理ルーチンが開始される前にデータプロセッサ3においてブレークポイント動作を実行できるようにするメカニズムを提供する。前記「外部リセット」信号が肯定されたとき、複数の制御レジスタ40の各々の内容が初期化される。前記「外部リセット」信号がその後否定されたとき、データプロセッサ3が実際のリセット例外処理ルーチンを開始する前に静止している時間のウィンドウが存在する。もし外部ブレークポイント信号、*BKPT、が前記静止時間の間に外部開発システム7によって肯定されれば、本発明は何らかのハードウェアレジスタの構成を行なうことができるようにデータ処理システム5へターゲートメモリ値をダウンロードするメカニズムおよび方法を提供する。前記ターゲートメモリ値は単一の値でもよくあるいは複数の値でもよい。
【0203】
リセット例外処理ルーチンが実行される前にブレークポイント動作を実行するこの能力はまた外部開発システム7が不揮発メモリ装置をプログラミングすることをバイパスできるようにする。新しいソフトウェアイメージを書き込み可能なメモリ装置にロードすることにより、前記不揮発メモリ装置においてプログラムされたコードは容易にバイパスできる。外部開発システム7は80ビットの命令をシフト入力することによりいずれのハードウェアレジスタをもアクセスできる。この80ビットの命令は16ビットのオペコード、CPU空間へマッピングされた32ビットのアドレス、および32ビットのオペランドデータを含む。いったん完全なコマンドが受信されると、デバッグモジュール10はメモリ参照動作と同様の様式で動作する。K−バス25が要求され、かつ次にCPU2によって承認される。CPU空間K−バスサイクルはデバッグモジュール10によって開始されかつ適切なハードウェアレジスタが書き込まれる。
【0204】
リセット例外処理ルーチンの実行の前にデータプロセッサ3をブレークポイントする本発明の能力は外部開発システム7が前記値がリセット例外処理ルーチンの実行の間にオーバライトされる機会を生じることなく必要な様式でデータプロセッサ3を構成できるようにする効率的なかつ有用なメカニズムを提供する。
【0205】
ここに説明した本発明の構成は実例によってのみ与えられている。しかしながら、上に述べた機能を実行するために数多くの他の構成が存在し得る。本発明が特定の実施形態に関連して示されかつ説明されたが、当業者にはさらに他の変更および改善を成すことができるであろう。したがって、この発明は示された特定の形式に限定されるのではなくかつ添付の特許請求の範囲によってこの発明の範囲から離れることのない全ての変更をカバーすることを理解すべきである。
【図面の簡単な説明】
【図1】本発明の一実施形態に係わるデータ処理システムを示すブロック図である。
【図2】図1のデータ処理システムのデバッグモジュールの一部を示すブロック図である。
【図3】図2のデバッグモジュールのブレークポイント回路を示すブロック図である。
【図4】図2のデバッグモジュールにおける複数の制御レジスタを示すブロック図である。
【図5】図2の複数のハードウェアブレークポイントレジスタを示すブロック図である。
【図6】図5の複数のハードウェアブレークポイントレジスタの内のアドレス属性ブレークポイントレジスタを示すブロック図である。
【図7】図4の複数の制御レジスタの内のトリガ定義レジスタを示すブロック図である。
【図8】図4の複数の制御レジスタの内の構成ステータスレジスタを示すブロック図である。
【図9】図2のデバッグモジュールの複数のブレークポイント信号の出力を示す図表形式の説明図である。
【図10】図2のデバッグモジュールの複数のプロセッサステータス信号の出力を示す図表形式の説明図である。
【図11】本発明の一実施形態に係わるパイプラインタイミング例を示す図式的説明図である。
【図12】図1のデータ処理システムの中央処理ユニットの一部を示すブロック図である。
【符号の説明】
2 中央処理ユニット(CPU)
3 データプロセッサ
4 メモリ管理ユニット(MMU/コントローラ)
5 データ処理システム
6 メモリ
7 外部開発システム
8 システムバスコントローラ
9 コア
10 デバッグモジュール
12,13 スレイブモジュール
14 マスタモジュール
15 制御バス
20 制御回路
23 M−バス
25 K−バス
30 シリアルインタフェース
32 レジスタ
40 制御レジスタ
50 ハードウェアブレークポイントレジスタ
60 制御回路
70 FIFO
80 マルチプレクサ
100 ブレークポイント回路
Claims (1)
- データプロセッサ(3)を動作させる方法であって、
外部開発システム(7)からメモリ装置(6)へアクセスするためにコマンドを受信する段階、
前記外部開発システムから前記メモリ装置におけるメモリロケーションにアクセスするためにアドレスを受信する段階、
前記コマンドをデコードして前記データプロセッサのデバッグモジュールの制御回路(20)を使用して前記データプロセッサにより実行されるべき機能を決定する段階、
前記アドレスを前記デバッグモジュールの第1のアドレスレジスタに格納する段階、
第1の論理状態でバス要求信号を発生するために前記デバッグモジュールの前記制御回路を動作可能にする段階、
現在の複数のパイプライン方式の命令が実行されかつ前記バス要求信号が前記第1の論理状態にある場合に中央処理ユニット(2)の内部命令パイプライン(210)を停止させる段階、
前記中央処理ユニットの前記内部命令パイプラインが停止されたとき第2の論理状態でバス承認信号を発生するために前記中央処理ユニットを動作可能にする段階、
前記バス承認信号が前記第2の論理状態にある場合に前記デバッグモジュールにおける前記第1のアドレスレジスタのアドレスを前記メモリ装置に提供する段階、そして
前記メモリ装置の前記メモリロケーションをアクセスして前記外部開発システムによって提供されるコマンドにより特定される機能を実行する段階、
を具備することを特徴とするデータプロセッサ(3)を動作させる方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US52124995A | 1995-08-30 | 1995-08-30 | |
US08/521,249 | 1995-08-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09218802A JPH09218802A (ja) | 1997-08-19 |
JP3846939B2 true JP3846939B2 (ja) | 2006-11-15 |
Family
ID=24076003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP23987896A Expired - Fee Related JP3846939B2 (ja) | 1995-08-30 | 1996-08-22 | データプロセッサ |
Country Status (5)
Country | Link |
---|---|
US (2) | US6035422A (ja) |
EP (1) | EP0762280B1 (ja) |
JP (1) | JP3846939B2 (ja) |
KR (1) | KR100439781B1 (ja) |
DE (1) | DE69616917T2 (ja) |
Families Citing this family (137)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205560B1 (en) * | 1996-02-27 | 2001-03-20 | Via-Cyrix, Inc. | Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG |
US6192427B1 (en) * | 1997-05-02 | 2001-02-20 | Texas Instruments Incorporated | Input/output buffer managed by sorted breakpoint hardware/software |
KR100230454B1 (ko) * | 1997-05-28 | 1999-11-15 | 윤종용 | 다중처리 시스템의 캐시메모리 검사방법 |
US6175913B1 (en) * | 1997-09-12 | 2001-01-16 | Siemens Ag | Data processing unit with debug capabilities using a memory protection unit |
US6247119B1 (en) * | 1997-11-26 | 2001-06-12 | Texas Instruments Incorporated | Apparatus having a flattener for outputting aligned or unaligned information from an instruction execution pipeline |
EP0924619A3 (de) * | 1997-12-19 | 2004-01-07 | Infineon Technologies AG | Programmgesteuerte Einheit |
US6385742B1 (en) * | 1998-03-06 | 2002-05-07 | Lsi Logic Corporation | Microprocessor debugging mechanism employing scan interface |
US6513108B1 (en) | 1998-06-29 | 2003-01-28 | Cisco Technology, Inc. | Programmable processing engine for efficiently processing transient data |
US6195739B1 (en) | 1998-06-29 | 2001-02-27 | Cisco Technology, Inc. | Method and apparatus for passing data among processor complex stages of a pipelined processing engine |
US6836838B1 (en) | 1998-06-29 | 2004-12-28 | Cisco Technology, Inc. | Architecture for a processor complex of an arrayed pipelined processing engine |
US6145123A (en) * | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
JP2000099366A (ja) * | 1998-09-21 | 2000-04-07 | Fujitsu Ltd | 演算処理装置および演算処理装置のデバッグ方法 |
US6173386B1 (en) * | 1998-12-14 | 2001-01-09 | Cisco Technology, Inc. | Parallel processor with debug capability |
US6920562B1 (en) | 1998-12-18 | 2005-07-19 | Cisco Technology, Inc. | Tightly coupled software protocol decode with hardware data encryption |
US6567933B1 (en) * | 1999-02-19 | 2003-05-20 | Texas Instruments Incorporated | Emulation suspension mode with stop mode extension |
US6336191B1 (en) * | 1999-03-08 | 2002-01-01 | International Business Machines Corporation | Method and system for clock compensation in instruction level tracing in a symmetrical multi-processing system |
US6370660B1 (en) * | 1999-04-21 | 2002-04-09 | Advanced Micro Devices, Inc. | Apparatus and method for providing a wait for status change capability for a host computer system |
US6343358B1 (en) * | 1999-05-19 | 2002-01-29 | Arm Limited | Executing multiple debug instructions |
US6446221B1 (en) * | 1999-05-19 | 2002-09-03 | Arm Limited | Debug mechanism for data processing systems |
US6321329B1 (en) | 1999-05-19 | 2001-11-20 | Arm Limited | Executing debug instructions |
JP2003500740A (ja) * | 1999-05-19 | 2003-01-07 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | デバッグ回路を有するデータプロセッサ |
JP4335999B2 (ja) * | 1999-05-20 | 2009-09-30 | 株式会社ルネサステクノロジ | プロセッサ内蔵半導体集積回路装置 |
JP2001034504A (ja) * | 1999-07-19 | 2001-02-09 | Mitsubishi Electric Corp | ソースレベルデバッガ |
US6584590B1 (en) * | 1999-08-13 | 2003-06-24 | Lucent Technologies Inc. | JTAG port-sharing device |
US6732307B1 (en) * | 1999-10-01 | 2004-05-04 | Hitachi, Ltd. | Apparatus and method for storing trace information |
US6684348B1 (en) | 1999-10-01 | 2004-01-27 | Hitachi, Ltd. | Circuit for processing trace information |
US6918065B1 (en) | 1999-10-01 | 2005-07-12 | Hitachi, Ltd. | Method for compressing and decompressing trace information |
US6529983B1 (en) | 1999-11-03 | 2003-03-04 | Cisco Technology, Inc. | Group and virtual locking mechanism for inter processor synchronization |
US6615368B1 (en) * | 2000-01-04 | 2003-09-02 | National Semiconductor Corporation | System and method for debugging highly integrated data processors |
JP2001195281A (ja) * | 2000-01-07 | 2001-07-19 | Sony Corp | システム監視装置 |
US6892237B1 (en) * | 2000-03-28 | 2005-05-10 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
JP3629181B2 (ja) | 2000-03-28 | 2005-03-16 | Necマイクロシステム株式会社 | プログラム開発支援装置 |
US6505269B1 (en) | 2000-05-16 | 2003-01-07 | Cisco Technology, Inc. | Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system |
US6857092B1 (en) | 2000-08-17 | 2005-02-15 | Xilinx, Inc. | Method and apparatus to facilitate self-testing of a system on a chip |
US6724220B1 (en) | 2000-10-26 | 2004-04-20 | Cyress Semiconductor Corporation | Programmable microcontroller architecture (mixed analog/digital) |
US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US6823282B1 (en) * | 2000-10-26 | 2004-11-23 | Cypress Semiconductor Corporation | Test architecture for microcontroller providing for a serial communication interface |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US8160864B1 (en) | 2000-10-26 | 2012-04-17 | Cypress Semiconductor Corporation | In-circuit emulator and pod synchronized boot |
US6985980B1 (en) | 2000-11-03 | 2006-01-10 | Xilinx, Inc. | Diagnostic scheme for programmable logic in a system on a chip |
US6757846B1 (en) * | 2000-11-06 | 2004-06-29 | Xilinx, Inc. | Method and apparatus for multi-bus breakpoint stepping |
US6751751B1 (en) | 2000-11-06 | 2004-06-15 | Xilinx, Inc. | Universal multi-bus breakpoint unit for a configurable system-on-chip |
US6484273B1 (en) * | 2000-11-29 | 2002-11-19 | Lsi Logic Corporation | Integrated EJTAG external bus interface |
US6986026B2 (en) * | 2000-12-15 | 2006-01-10 | Intel Corporation | Single-step processing and selecting debugging modes |
US6718539B1 (en) * | 2000-12-22 | 2004-04-06 | Lsi Logic Corporation | Interrupt handling mechanism in translator from one instruction set to another |
US6915416B2 (en) * | 2000-12-28 | 2005-07-05 | Texas Instruments Incorporated | Apparatus and method for microcontroller debugging |
US7069545B2 (en) * | 2000-12-29 | 2006-06-27 | Intel Corporation | Quantization and compression for computation reuse |
US7093236B2 (en) * | 2001-02-01 | 2006-08-15 | Arm Limited | Tracing out-of-order data |
US7093108B2 (en) * | 2001-02-01 | 2006-08-15 | Arm Limited | Apparatus and method for efficiently incorporating instruction set information with instruction addresses |
US6760864B2 (en) * | 2001-02-21 | 2004-07-06 | Freescale Semiconductor, Inc. | Data processing system with on-chip FIFO for storing debug information and method therefor |
US6834364B2 (en) * | 2001-04-19 | 2004-12-21 | Agilent Technologies, Inc. | Algorithmically programmable memory tester with breakpoint trigger, error jamming and 'scope mode that memorizes target sequences |
JP2003085001A (ja) * | 2001-09-12 | 2003-03-20 | Toshiba Corp | ソース・コード・デバッガ、デバッグ方法及びデバッグプログラム |
US7406674B1 (en) | 2001-10-24 | 2008-07-29 | Cypress Semiconductor Corporation | Method and apparatus for generating microcontroller configuration information |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US8042093B1 (en) | 2001-11-15 | 2011-10-18 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
US6971004B1 (en) | 2001-11-19 | 2005-11-29 | Cypress Semiconductor Corp. | System and method of dynamically reconfiguring a programmable integrated circuit |
US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
US7844437B1 (en) | 2001-11-19 | 2010-11-30 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US7382637B1 (en) * | 2002-02-01 | 2008-06-03 | Netlogic Microsystems, Inc. | Block-writable content addressable memory device |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
US7308608B1 (en) | 2002-05-01 | 2007-12-11 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
US20040078630A1 (en) * | 2002-06-28 | 2004-04-22 | Niles Ronald Steven | System and method for protecting data |
US20040019828A1 (en) * | 2002-07-25 | 2004-01-29 | Gergen Joseph P. | Method and apparatus for debugging a data processing system |
US7107489B2 (en) * | 2002-07-25 | 2006-09-12 | Freescale Semiconductor, Inc. | Method and apparatus for debugging a data processing system |
US7761845B1 (en) | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
US6996735B2 (en) * | 2002-11-22 | 2006-02-07 | Texas Instruments Incorporated | Apparatus for alignment of data collected from multiple pipe stages with heterogeneous retention policies in an unprotected pipeline |
US20040103399A1 (en) * | 2002-11-22 | 2004-05-27 | Manisha Agarwala | Data trace compression map |
US6889311B2 (en) * | 2002-11-22 | 2005-05-03 | Texas Instruments Incorporated | Pipeline stage single cycle sliding alignment correction of memory read data with integrated data reordering for load and store instructions |
US7299386B2 (en) * | 2002-12-17 | 2007-11-20 | Texas Instruments Incorporated | Apparatus and method for detecting address characteristics for use with a trigger generation unit in a target processor |
US6798713B1 (en) * | 2003-01-31 | 2004-09-28 | Zilog, Inc. | Implementing software breakpoints |
US7574585B1 (en) | 2003-01-31 | 2009-08-11 | Zilog, Inc. | Implementing software breakpoints and debugger therefor |
US7243214B2 (en) * | 2003-04-21 | 2007-07-10 | Intel Corporation | Stall optimization for an in-order, multi-stage processor pipeline which analyzes current and next instructions to determine if a stall is necessary |
TW200511111A (en) * | 2003-07-30 | 2005-03-16 | Koninkl Philips Electronics Nv | Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set |
JP2007522554A (ja) * | 2004-02-09 | 2007-08-09 | コンティネンタル・テーベス・アクチエンゲゼルシヤフト・ウント・コンパニー・オッフェネ・ハンデルスゲゼルシヤフト | 車両内のセキュリティ上問題のあるコンピュータシステムのための埋込式システムの分析装置及び方法 |
US7313729B2 (en) * | 2004-02-20 | 2007-12-25 | Winbond Electronics Corp. | Low-cost debugging system with a ROM or RAM emulator |
US7295049B1 (en) | 2004-03-25 | 2007-11-13 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
US7734797B2 (en) | 2004-03-29 | 2010-06-08 | Marvell International Ltd. | Inter-processor communication link with manageability port |
JP4409349B2 (ja) * | 2004-04-27 | 2010-02-03 | Okiセミコンダクタ株式会社 | デバッグ回路およびデバッグ制御方法 |
US20050268195A1 (en) * | 2004-04-29 | 2005-12-01 | Lund Morten W | Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems |
US7334161B2 (en) * | 2004-04-30 | 2008-02-19 | Arm Limited | Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus |
US8069436B2 (en) | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
US8286125B2 (en) | 2004-08-13 | 2012-10-09 | Cypress Semiconductor Corporation | Model for a hardware device-independent method of defining embedded firmware for programmable systems |
US7587635B2 (en) * | 2004-10-04 | 2009-09-08 | Cisco Technology, Inc. | Method of debugging “active” unit using “non-intrusive source-level debugger” on “standby” unit of high availability system |
EP1844397A2 (en) * | 2005-01-28 | 2007-10-17 | Nxp B.V. | Means and method for debugging |
US7332976B1 (en) | 2005-02-04 | 2008-02-19 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
US7237149B2 (en) * | 2005-02-25 | 2007-06-26 | Freescale Semiconductor, Inc. | Method and apparatus for qualifying debug operation using source information |
US7400183B1 (en) | 2005-05-05 | 2008-07-15 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
US20080137670A1 (en) * | 2005-06-09 | 2008-06-12 | Whirlpool Corporation | Network System with Message Binding for Appliances |
US7921429B2 (en) * | 2005-06-09 | 2011-04-05 | Whirlpool Corporation | Data acquisition method with event notification for an appliance |
US20070162158A1 (en) * | 2005-06-09 | 2007-07-12 | Whirlpool Corporation | Software architecture system and method for operating an appliance utilizing configurable notification messages |
WO2006135726A2 (en) * | 2005-06-09 | 2006-12-21 | Whirlpool Corporation | Software architecture system and method for communication with, and management of, at least one component within a household appliance |
US7917914B2 (en) * | 2005-06-09 | 2011-03-29 | Whirlpool Corporation | Event notification system for an appliance |
US7813831B2 (en) * | 2005-06-09 | 2010-10-12 | Whirlpool Corporation | Software architecture system and method for operating an appliance in multiple operating modes |
US8089461B2 (en) | 2005-06-23 | 2012-01-03 | Cypress Semiconductor Corporation | Touch wake for electronic devices |
US20070198816A1 (en) * | 2005-11-10 | 2007-08-23 | Chuan-Po Ling | Emulation system for a single-chip multiple-microcontroller and emulation method thereof |
FR2894694A1 (fr) * | 2005-12-09 | 2007-06-15 | St Microelectronics Sa | Procede et dispositif de mise au point d'un programme execute par un processeur multitache |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
US8010774B2 (en) * | 2006-03-13 | 2011-08-30 | Arm Limited | Breakpointing on register access events or I/O port access events |
US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US7979839B2 (en) * | 2006-08-23 | 2011-07-12 | Wolf William M | Method for employing the computer in the creative act of programming |
US7610517B2 (en) * | 2006-09-14 | 2009-10-27 | Innovasic, Inc. | Microprocessor with trace functionality |
US7707459B2 (en) | 2007-03-08 | 2010-04-27 | Whirlpool Corporation | Embedded systems debugging |
US7908516B2 (en) * | 2007-03-27 | 2011-03-15 | Microchip Technology Incorporated | Low power mode fault recovery method, system and apparatus |
US8130025B2 (en) * | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US8266575B1 (en) | 2007-04-25 | 2012-09-11 | Cypress Semiconductor Corporation | Systems and methods for dynamically reconfiguring a programmable system on a chip |
US8065653B1 (en) | 2007-04-25 | 2011-11-22 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US7783865B2 (en) * | 2007-08-01 | 2010-08-24 | International Business Machines Corporation | Conditional data watchpoint management |
US8049569B1 (en) | 2007-09-05 | 2011-11-01 | Cypress Semiconductor Corporation | Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes |
US8407457B2 (en) * | 2007-09-28 | 2013-03-26 | Freescale Semiconductor, Inc. | System and method for monitoring debug events |
US8042002B2 (en) * | 2008-01-18 | 2011-10-18 | Freescale Semiconductor, Inc. | Method and apparatus for handling shared hardware and software debug resource events in a data processing system |
US7870430B2 (en) * | 2008-02-29 | 2011-01-11 | Freescale Semiconductor, Inc. | Method and apparatus for sharing debug resources |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US8661302B2 (en) * | 2010-11-17 | 2014-02-25 | Advanced Micro Devices, Inc. | Enhanced debug/test capability to a core reset process |
US9053233B2 (en) * | 2011-08-15 | 2015-06-09 | Freescale Semiconductor, Inc. | Method and device for controlling debug event resources |
GB2504772A (en) | 2012-08-10 | 2014-02-12 | Ibm | Coprocessor providing service address space for diagnostics collection |
US9830245B2 (en) | 2013-06-27 | 2017-11-28 | Atmel Corporation | Tracing events in an autonomous event system |
US9645870B2 (en) | 2013-06-27 | 2017-05-09 | Atmel Corporation | System for debugging DMA system data transfer |
US9256399B2 (en) * | 2013-06-27 | 2016-02-09 | Atmel Corporation | Breaking program execution on events |
CN107346282B (zh) * | 2016-05-04 | 2024-03-12 | 世意法(北京)半导体研发有限责任公司 | 用于微处理器的调试支持单元 |
KR20180073300A (ko) * | 2016-12-22 | 2018-07-02 | 삼성전자주식회사 | 스캔 데이터 컨트롤 장치 및 이를 갖는 전자 시스템 |
US11256605B2 (en) | 2017-10-19 | 2022-02-22 | Samsung Electronics Co., Ltd. | Nonvolatile memory device |
KR102396448B1 (ko) * | 2017-10-19 | 2022-05-11 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 동작 방법 |
US11055416B2 (en) * | 2017-10-24 | 2021-07-06 | Micro Focus Llc | Detecting vulnerabilities in applications during execution |
JP7378254B2 (ja) * | 2019-09-19 | 2023-11-13 | キヤノン株式会社 | マルチプロセッサデバイス |
CN112540888B (zh) * | 2020-12-18 | 2022-08-12 | 清华大学 | 面向大规模可重构处理单元阵列的调试方法及装置 |
CN114510432B (zh) * | 2022-04-20 | 2022-07-12 | 苏州浪潮智能科技有限公司 | 一种寄存器调试平台和调试方法 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3937938A (en) * | 1974-06-19 | 1976-02-10 | Action Communication Systems, Inc. | Method and apparatus for assisting in debugging of a digital computer program |
US4080650A (en) * | 1976-07-28 | 1978-03-21 | Bell Telephone Laboratories, Incorporated | Facilitating return from an on-line debugging program to a target program breakpoint |
US4338660A (en) * | 1979-04-13 | 1982-07-06 | Relational Memory Systems, Inc. | Relational break signal generating device |
US4675646A (en) * | 1983-09-29 | 1987-06-23 | Tandem Computers Incorporated | RAM based multiple breakpoint logic |
US4635193A (en) * | 1984-06-27 | 1987-01-06 | Motorola, Inc. | Data processor having selective breakpoint capability with minimal overhead |
US5165027A (en) * | 1986-01-24 | 1992-11-17 | Intel Corporation | Microprocessor breakpoint apparatus |
JPH06103472B2 (ja) * | 1986-10-29 | 1994-12-14 | 日本電気株式会社 | デバツグ用マイクロプロセツサ |
US5132971A (en) * | 1987-02-06 | 1992-07-21 | Anritsu Corporation | In-circuit emulator |
US5179696A (en) * | 1987-07-24 | 1993-01-12 | Nec Corporation | Generator detecting internal and external ready signals for generating a bus cycle end signal for microprocessor debugging operation |
JPS6481046A (en) * | 1987-09-22 | 1989-03-27 | Nec Corp | Microprocessor unit incorporating debugging device |
US5084814A (en) * | 1987-10-30 | 1992-01-28 | Motorola, Inc. | Data processor with development support features |
US5129078A (en) * | 1988-08-19 | 1992-07-07 | Groves Stanley E | Dedicated service processor with inter-channel communication features |
EP0368144B1 (en) * | 1988-11-10 | 1996-02-07 | Motorola, Inc. | Digital computing system with low power mode |
US5053949A (en) * | 1989-04-03 | 1991-10-01 | Motorola, Inc. | No-chip debug peripheral which uses externally provided instructions to control a core processing unit |
US5448744A (en) * | 1989-11-06 | 1995-09-05 | Motorola, Inc. | Integrated circuit microprocessor with programmable chip select logic |
JPH03248244A (ja) * | 1990-02-27 | 1991-11-06 | Toshiba Corp | キャッシュメモリを備えたプロセッサ |
JP2526690B2 (ja) * | 1990-02-27 | 1996-08-21 | 三菱電機株式会社 | プログラマブルコントロ―ラの制御方法 |
US5581695A (en) * | 1990-05-09 | 1996-12-03 | Applied Microsystems Corporation | Source-level run-time software code debugging instrument |
US5410685A (en) * | 1990-06-12 | 1995-04-25 | Regents Of The University Of Michigan | Non-intrinsive method and system for recovering the state of a computer system and non-intrusive debugging method and system utilizing same |
US5204864A (en) * | 1990-08-16 | 1993-04-20 | Westinghouse Electric Corp. | Multiprocessor bus debugger |
JP2672711B2 (ja) * | 1991-02-01 | 1997-11-05 | ディジタル イクイップメント コーポレイション | コンピュータプログラムをテストし、デバッグする方法 |
US5321828A (en) * | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
US5317711A (en) * | 1991-06-14 | 1994-05-31 | Integrated Device Technology, Inc. | Structure and method for monitoring an internal cache |
GB2266606B (en) * | 1992-04-27 | 1996-02-14 | Intel Corp | A microprocessor with an external command mode |
US5491793A (en) * | 1992-07-31 | 1996-02-13 | Fujitsu Limited | Debug support in a processor chip |
US5359608A (en) * | 1992-11-24 | 1994-10-25 | Amdahl Corporation | Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions |
DE4302902A1 (de) * | 1993-02-02 | 1994-08-04 | Frederic Dedek | Mikroprozessor mit boolscher Verknüpfungslogik |
DE69415600T2 (de) * | 1993-07-28 | 1999-07-15 | Koninkl Philips Electronics Nv | Mikrokontroller mit hardwaremässiger Fehlerbeseitigungsunterstützung nach dem Boundary-Scanverfahren |
US5640542A (en) * | 1993-10-29 | 1997-06-17 | Intel Corporation | On-chip in-circuit-emulator memory mapping and breakpoint register modules |
US5828825A (en) * | 1993-12-22 | 1998-10-27 | Intel Corporation | Method and apparatus for pseudo-direct access to embedded memories of a micro-controller integrated circuit via the IEEE test access port |
US5488688A (en) * | 1994-03-30 | 1996-01-30 | Motorola, Inc. | Data processor with real-time diagnostic capability |
US5530804A (en) * | 1994-05-16 | 1996-06-25 | Motorola, Inc. | Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes |
US5537536A (en) * | 1994-06-21 | 1996-07-16 | Intel Corporation | Apparatus and method for debugging electronic components through an in-circuit emulator |
US5694589A (en) * | 1995-06-13 | 1997-12-02 | Intel Corporation | Instruction breakpoint detection apparatus for use in an out-of-order microprocessor |
US5621886A (en) * | 1995-06-19 | 1997-04-15 | Intel Corporation | Method and apparatus for providing efficient software debugging |
US5740413A (en) * | 1995-06-19 | 1998-04-14 | Intel Corporation | Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping |
US5680620A (en) * | 1995-06-30 | 1997-10-21 | Dell Usa, L.P. | System and method for detecting access to a peripheral device using a debug register |
-
1996
- 1996-08-22 DE DE69616917T patent/DE69616917T2/de not_active Expired - Fee Related
- 1996-08-22 EP EP96113471A patent/EP0762280B1/en not_active Expired - Lifetime
- 1996-08-22 JP JP23987896A patent/JP3846939B2/ja not_active Expired - Fee Related
- 1996-08-29 KR KR1019960036223A patent/KR100439781B1/ko not_active IP Right Cessation
-
1997
- 1997-05-15 US US08/857,006 patent/US6035422A/en not_active Expired - Lifetime
- 1997-10-06 US US08/944,655 patent/US6026501A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6035422A (en) | 2000-03-07 |
US6026501A (en) | 2000-02-15 |
EP0762280B1 (en) | 2001-11-14 |
KR100439781B1 (ko) | 2004-10-06 |
JPH09218802A (ja) | 1997-08-19 |
DE69616917T2 (de) | 2002-06-06 |
EP0762280A1 (en) | 1997-03-12 |
KR970012145A (ko) | 1997-03-29 |
DE69616917D1 (de) | 2001-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3846939B2 (ja) | データプロセッサ | |
EP0762277B1 (en) | Data processor with built-in emulation circuit | |
EP0762276B1 (en) | Data processor with built-in emulation circuit | |
EP0762279B1 (en) | Data processor with built-in emulation circuit | |
US7149926B2 (en) | Configurable real-time trace port for embedded processors | |
US8185879B2 (en) | External trace synchronization via periodic sampling | |
US7412630B2 (en) | Trace control from hardware and software | |
EP0391173B1 (en) | Debug peripheral for microcomputers, microprocessors and core processor integrated circuits and system using the same | |
US6378064B1 (en) | Microcomputer | |
US20020184477A1 (en) | Apparatus and method for facilitating debugging of sequences of processing instructions | |
US7181728B1 (en) | User controlled trace records | |
US20060225050A1 (en) | Dynamic selection of a compression algorithm for trace data | |
US20030051122A1 (en) | Trace information generation apparatus for generating branch trace information omitting at least part of branch source information and branch destination information on target processing | |
JP2001147836A (ja) | マイクロコンピュータデバッグアーキテクチャ及び方法 | |
EP0762278A1 (en) | Data processor with built-in emulation circuit | |
US20020188822A1 (en) | Adapter for a microprocessor | |
EP0869434A2 (en) | Method for outputting trace information of a microprocessor | |
JP2000207247A (ja) | コンピュ―タシステムおよびこのコンピュ―タシステムを動作させる方法 | |
US7124072B1 (en) | Program counter and data tracing from a multi-issue processor | |
JP2000020488A (ja) | コンピュ―タシステムおよびこのコンピュ―タシステムを動作させる方法 | |
Hohl et al. | Debug Support on the ColdFire Architecture | |
Added | 31.2 Signal Descriptions | |
JPH0477933A (ja) | 評価用マイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20041217 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050223 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051206 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060306 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060310 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060602 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060725 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060822 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090901 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100901 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110901 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110901 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120901 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120901 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130901 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |