(57)【特許請求の範囲】
【請求項１】
データ処理装置であって、
（ａ）第１命令チェーンを有し、デバッグ・モードにおいて外部から前記第１命令チェーンを介してデバッグ・データ発生命令を与えられるコプロセッサと、
（ｂ）前記コプロセッサに接続され、第２命令チェーンを有する主プロセッサであって、前記コプロセッサが前記デバッグ・データ発生命令を与えられるのと同期して、前記デバッグ・モードにおいて外部から前記第２命令チェーンを介してデバッグ・データ捕獲命令を与えられる前記主プロセッサとを有し、
（ｃ）前記コプロセッサは、前記デバッグ・データ発生命令を実行して、所定のメモリ手段に対し、所定のデータをデバッグ・データとしてデータバスに出力するよう制御し、
（ｄ）前記主プロセッサは、前記コプロセッサが前記デバッグ・データ発生命令を実行するのと同期して、前記デバッグ・データ捕獲命令を実行し、前記コプロセッサが前記デバッグ・データを捕獲してレジスタにロードすることを特徴とするデータ処理装置。
【請求項２】
特許請求の範囲第１項記載のデータ処理装置において、前記デバッグ・モードで動作して、前記レジスタから読取っているデータを捕獲し、外部クロックと同期して前記データを前記データ処理装置から直列的にクロック出力するレジスタ・ストア走査チェーンを含むデータ処理装置。
【請求項３】
特許請求の範囲第１項記載のデータ処理装置において、複数個のコプロセッサを含み、前記複数個のコプロセッサの内の１個は前記デバッグ・モードで前記デバッグ・データ発生命令に応答するデータ処理装置。
【請求項４】
第１命令チェーンを有するコプロセッサと、前記コプロセッサに接続され、第２命令チェーンを有する主プロセッサとを有する装置のためのデータ処理方法において、前記データ処理方法は、
（ａ）デバッグ・モードにおいて外部から前記第１命令チェーンを介してデバッグ・データ発生命令を前記コプロセッサに与え、
（ｂ）前記コプロセッサが前記デバッグ・データ発生命令を与えられるのと同期して、前記デバッグ・モードにおいて外部から前記第２命令チェーンを介してデバッグ・データ捕獲命令を前記主プロセッサに与え、
（ｃ）前記コプロセッサは、前記デバッグ・データ発生命令を実行して、所定のメモリ手段に対し、所定のデータをデバッグ・データとしてデータバスに出力するよう制御し、
（ｄ）前記主プロセッサにより、前記コプロセッサが前記デバッグ・データ発生命令を実行するのと同期して、前記デバッグ・データ捕獲命令を実行し、前記コプロセッサにより出力される前記デバッグ・データを捕獲してレジスタにロードする、
データ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ処理装置の分野に関係する。特に、本発明はデバッグ・データ処理装置に関係する。
【０００２】
【従来の技術】
増大する複雑なデータ処理装置の出現と、より短期間の開発時間の必要性から、システム開発を助けるための強力なデバッグ・ツールを提供することが非常に重要になってきている。通常的にアクセス不能な状態となるシステムが多い錯綜したシステムでは、これは特にその通りである。
【０００３】
デバッグ問題に対処する一つの方法は、システムの回路の一部に直列走査チェーンを設けて、入力信号を走査し、回路に印加し、出力信号を捕獲して回路から走査出力することである。これはJTAG型式のデバッグ方式である。
【０００４】
【発明が解決しようとする課題】
デバッグに対する直列走査チェーン方式の問題は、走査チェーン・セルをシステム内のクリティカルな信号路に配置する必要があり、信号路を遅延させ、システム性能を制限する点である。本発明の目的は上記問題を解決することである。
【０００５】
【課題を解決するための手段】
ある面から見ると、本発明は、主プロセッサ命令とコプロセッサ命令を含む一連のプロセッサ命令に応答するデータ処理装置を提供し、前記データ処理装置は、
（i）前記一連のプロセッサ命令内に現れる主プロセッサ命令を実行する主プロセッサと、
（ii）前記一連のプロセッサ命令内に現れるコプロセッサ命令を実行する前記主プロセッサに結合されたコプロセッサと、
（iii）前記主プロセッサは主プロセッサ・データ捕獲命令を実行し、その間前記コプロセッサはコプロセッサ・デバッグ・データ発生命令を実行して、これによりデバッグ・データが前記コプロセッサの制御下で発生されかつ前記デバッグ・データは前記主プロセッサにより捕獲されるように、前記主プロセッサと前記コプロセッサへ異なるプロセッサ命令を与える、デバッグ・モードで動作する命令挿入機構と、
を含む。
【０００６】
コプロセッサと主プロセッサを共に含むシステムでは、これらの異なる要素はデバッグ・モードで協動して制御されて、走査チェーンの不利な広範囲の使用なしでは得ることが困難であるシステム状態情報を復元する。特に、通常同じ命令ストリームが主プロセッサとコプロセッサの両方に送られるが、本発明はデバッグ・モードでは主プロセッサとコプロセッサに異なる命令を送り、主プロセッサは同時に実行されるコプロセッサ命令（主プロセッサ命令の実行によりこのように実行するようにトリガされた）に応答してコプロセッサの制御下で発生されるデバッグ・データを捕獲する。
【０００７】
コプロセッサ命令はシステム設計者により選択された方法でデバッグ・モードでコプロセッサによりデコードされインタープリートされ、システム設計者が前もって決定し、回路が備えられているシステム状態の任意の特定の項目を復元可能である。主プロセッサによるデータの捕獲により、通常の主プロセッサ命令の制御下でシステムの通常の出力機構を介して主プロセッサからこれを以後復原可能とする。
【０００８】
望ましい実施例では、主プロセッサ・データ捕獲命令はデバッグ・データを主プロセッサ内のレジスタバンクのレジスタへ転送する。このデータ捕獲機構は迅速かつ柔軟である。
【０００９】
命令挿入機構は任意の形式を取り得る。デバッグ・モードでない時に標準の命令を主プロセッサとコプロセッサへ送る機構を使用して、このデバッグ・モード時に主プロセッサとコプロセッサの一方に命令を与え、主プロセッサとコプロセッサの他方にはデバッグ・モードでのみ動作する機構により別なソースから命令を与えることも可能である。又は、デバッグ・モード時には主プロセッサとコプロセッサの両方に命令を与える特殊目的の機構を設けてもよい。この場合、主プロセッサとコプロセッサへの命令を走査する走査チェーンが望ましい。
【００１０】
コプロセッサ・デバッグ・データ発生命令に応答して発生された状態データは、特殊目的のデータ路を介して主プロセッサに転送可能である。しかしながら、望ましい実施例では、通常動作で使用される標準データバスもこの目的のためデバッグ動作に使用してもよい。
【００１１】
デバッグ動作中に主プロセッサからの状態データを復原するため、レジスタ・ストア走査チェーンを設けて、主プロセッサのレジスタから読取っているデータを捕獲し、このデータを装置から直列的にクロック出力することも可能である。
【００１２】
上記のシステムはデータ処理装置からこうしなければアクセス不能な状態データの多くの型式を復原するために使用可能である。例えば、システム設計者がコプロセッサ・デバッグ・データ発生命令をそのようにインタープリートするよう配置した場合、この方式を使用して各種の周辺装置からのデータを復原することが可能である。しかしながら、本発明はキャッシュ・メモリとメモリ管理装置からのデータの復原に特に適している。特に、本発明はCAMのTAG内容やキャッシュメモリとMMUのRAMのデータ内容をシステムから相対的に迅速に、かつこれらの路のデータ値を捕獲するため操作チェーンを挿入することによりキャッシュ、MMU及び主プロセッサ間の通常クリティカルな信号路に影響を与えることなく読取ることを可能とする。キャッシュメモリ又はMMUの内容はシステム開発時に必要とされるデバッグ情報のしばしば重要な要素である。
【００１３】
高性能システムでは、主プロセッサは通常命令パイプラインを有する。この場合、命令挿入機構はこのパイプラインのフェッチ段に命令を挿入する走査チェーンを含むことが出来る。このような実施例では、コプロセッサは通常パイプライン・フォロワを有し、コプロセッサ命令も同様にこのコプロセッサ・パイプラインのフェッチ段に挿入可能である。
【００１４】
キャッシュメモリ又はMMUに関係して、デバッグ・データとして特定のデータ項目をいかに復原用に選択するかの問題は、キャッシュメモリ又はMMUの適当なものに新たな項目を挿入する必要がある時に標準動作でどの項目を置換えるかを制御する通常の犠牲者選択回路を使用することにより解決できる。デバッグ・モードでは、この犠牲者選択回路は前もって設定されて、デバッグ・データとして復原される特定の所要エントリを選択するよう動作する。
【００１５】
他の面から見ると、本発明は主プロセッサ命令とコプロセッサ命令を含む一連のプロセッサ命令により制御されるデータ処理方法を提供し、前記データ処理方法は、
（i）前記一連のプロセッサ命令内に現れる主プロセッサ命令を主プロセッサにより実行する段階と、
（ii）前記一連のプロセッサ命令内に現れるコプロセッサ命令をコプロセッサにより実行する段階と、
（iii）デバッグ・モードでは、前記主プロセッサは主プロセッサ・データ捕獲命令を実行し、その間前記コプロセッサはコプロセッサ・デバッグ・データ発生命令を実行し、これにより前記コプロセッサの制御下でデバッグ・データが発生され前記デバッグ・データは前記主プロセッサにより捕獲されるように、前記主プロセッサと前記コプロセッサへ異なるプロセッサ命令を与える段階と、
を含む。
【００１６】
本発明の以上の、そしてその他の目的、特徴及び利点は、添付図面と関連して読取るべきである図示実施例の以下の詳細な説明から明らかとなる。
【００１７】
【発明の実施の形態】
図１は主プロセッサ４とコプロセッサ２６を含むデータ処理システム２を図示する。命令キャッシュ８とデータキャッシュ１０が命令とデータを各々キャッシュするために設けられている。メモリ管理装置も設けられる。
【００１８】
主プロセッサは命令実行器１２とレジスタバンク１４を含む。主プロセッサ・パイプライン１６は命令バス１８から読取った主プロセッサ命令に応答して、これらを実行するため命令実行器１２に送る。主プロセッサ命令走査チェーン２０が命令路に設けられてデバッグ動作時に命令パイプライン１６に命令を挿入する。出力操作チェーン２２がデータ路に設けられてデバッグ動作時にレジスタバンク１４から読取ったデータ値をデータバス２４上で捕獲する。
【００１９】
特殊目的コプロセッサCP15と呼ぶコプロセッサ２６がデバッグ動作と共にその他のシステム・モードと制御機能を制御するために設けられる。コプロセッサ命令パイプライン２８がコプロセッサ２６内に設けられて命令バス１８に配置した命令に追随し主プロセッサ４に送られる。コプロセッサ命令パイプライン２８の実行段階で整合するコプロセッサ番号（すなわち、１５）を有するコプロセッサ命令をコプロセッサ２６が検出した時、コプロセッサ命令デコーダ３０はシステム設計者により予め定めた方法でこのコプロセッサ命令に応答する。本例では、デバッグ・モードの時、コプロセッサ２６は特別のコプロセッサ命令に応答して、データ・キャッシュ１０又は命令キャッシュ８を制御し、そのCAM部分又はそのRAM部分のどちらかの内容をデータバス２４に出力可能である。各犠牲者選択回路３２、３４は、データバス２４上に復原することが望ましい特定のキャッシュ線を予め指すように設定可能である。犠牲者選択回路のラウンドロビン動作モードでは、一連のキャッシュ線をアクセス可能である。
【００２０】
コプロセッサ２６がキャッシュ・メモリ８、１０を制御してデバッグ・データをデータバス２４に配置しているのと同時に、主プロセッサ４はそのデバッグ・データをレジスタバンク１４のレジスタに読取り可能である。レジスタバンク１４内に一旦捕獲すると、デバッグ・データは以後の処理サイクルで出力走査チェーン２にストア可能で、そこからデータ処理装置２から復原可能である。
【００２１】
主プロセッサ命令走査チェーン２０とコプロセッサ命令走査チェーン３６を使用して共に命令挿入機構を提供する。特に、適切な主プロセッサ・データ捕獲命令を主プロセッサパイプライン１６に挿入し、その間コプロセッサ・デバッグ・データ発生命令がコプロセッサ命令パイプライン２８に挿入可能である。これらの各命令がそのパイプラインの実行段に沿って進行すると、命令が実行されてその各々の役割を実施する。主プロセッサ命令の実行段への進行は、主プロセッサ命令とコプロセッサ命令が実質的に同時に実行されるようにコプロセッサ命令の同様な進行をトリガする。
【００２２】
主プロセッサ・パイプライン１６とコプロセッサ・パイプライン２８は、それらが共有する命令バス１８から読み出す時に同じ命令を通常ストアすることが認められる。本技術はこの対称性を壊し、それらが高度に柔軟な方法で互いに協力し、最初にデバッグ・データの発生とかつそのデバッグ・データの捕獲をトリガするよう、コプロセッサ２６と主プロセッサ４へ異なる命令を与える。
【００２３】
図2は時間の異なる時点で主プロセッサ・コア４とコプロセッサ２６で実行されている異なる処理動作を概略的に図示する。最初に発生する動作は、主プロセッサ・データ捕獲命令（LDR）が主プロセッサ命令走査チェーン２０に走査入力され、その間インタープリート・モード制御ビットとコプロセッサ・デバッグ・データ発生命令（MCR）がコプロセッサ命令走査チェーン３６に走査入力される。LDRとMCR命令は次いでその各々のパイプライン１６、１８を並列に進行する（主プロセッサの進行がコプロセッサの進行をトリガする）。
【００２４】
MCR及びLDR命令が実質的に同時に実行段に到達すると、MCR命令はコプロセッサ２６によりインタープリートされて適切なデバッグ・データをデータバス２４上に配置させるようトリガする。デバッグ・モードで動作していない時にはMCR命令は異なってインタープリートされる。同時に、主プロセッサ４によりLDR命令がインタープリートされてデータバス２４からこのデバッグ・データを読取りレジスタバンク１４内にこれをストアする。
【００２５】
次いで主プロセッサ１４は、デバッグ・データを含むレジスタの内容をデータバス２４上へ書出すメモリへのストア命令（STR）を実行し続け、走査出力される前に、このデータバス２４から出力走査チェーン２２に捕獲される。
【００２６】
本明細書に付けた付属書類では、デバッグ・サポートを記述する文書の抜粋が与えられている。この抜粋は本発明の１例によるインタープリート・アクセス指令を処理している。
【００２７】
本発明を使用する関係の集積回路のデバッグ動作のこれ以上の詳細は、1998年11月に出版されたARM9TDMI参照マニュアル（ARM文書DDI0145A第５章）に見出される。本発明に使用される一型式の境界走査システムのこれ以上の詳細はIEEE標準1149.1−1990標準試験アクセス・ポート及び境界走査アーキテクチャに記載されている。
【００２８】
本発明の例示実施例は添付図面を参照して本明細書に詳細に記載したが、本発明はこれらの詳細な実施例に限定されるものではなく、添付の特許請求の範囲に定義される本発明の要旨と範囲から逸脱することなく当業者により各種の変更と修正が実施可能であることを理解されたい。
【００２９】
PCLKBS  これは、UPDATE-DR状態で発生された更新クロックである。通常チェーンに走査入力される値はこの信号の立上がりエッジでセル出力に転送される。
ICAPCLKBS、ECAPCLKBS
これらはINTEST及びEXTEXTの各々の間にデータを走査セルにサンプルするために使用される捕獲クロックである。これらのクロックはCAPTURE-DR状態で発生される。
SHCLK1BS、SHCLK2BS
これらは各々走査セルのマスタ及びスレーブ素子をクロックするために使用されるSHIFT-DR状態で発生される重なり合わないクロックである。ステートマシンがSHIFT-DR状態にない時、これらのクロックは両方LOWである。
nHIGHZ
この信号は走査セルの出力を高インピーダンス状態に駆動するために使用可能である。HIGHZ命令が命令レジスタにロードされた時にこの信号はLOWに駆動され、それ以外はHIGHである。
これらの制御出力に加えて、SDINBS出力とSDOUTBS入力も与えられる。外部走査チェーンが使用中の時、SDOUTBSは直列データ出力に接続され、SDINBSは直列データ入力に接続されなければならない。
【００３０】
8.6.6  走査チェーン４及び５−ARM920Tメモリ・システム
デバッグ状態に入る時、デバッガはCP15の状態を取出し、セーブしなければならない。その時キャッシュとMMUはオフに切替え、メモリへの何らかのデバッグ・アクセスがその状態を変更することを防止することを薦める。この時点で、デバッガはメモリ・システムの状態を非侵入的に決定可能である。デバッグ状態の時、デバッガはARM920Tメモリ・システムの状態を見ることが出来る。これは、
・CP15
・キャッシュ
・MMU
・PAタグRAM
を含む。走査チェーン１５及び４はこの使用に予約される。
【００３１】
走査チェーン１５
この走査チェーンは以下の表8-7に示す40ビット長である。走査チェーン15を選択すると、TDIはビット39に接続されTDOはビット0に接続される。この走査チェーンを介したアクセスにより、CP15のレジスタの全てが読取り書込み可能となり、キャッシュCAMとRAMは読取り可能、TLB CAMとRAMも読取り可能となる。以下に概略する走査チェーン15を介した２つのアクセス機構がある。
【００３２】
物理アクセス
１．  SHIFT-DRで、表8-8に示すように、書込み用の読取り／書込みビット、レジスタアドレス及びレジスタ値をシフトする。
２．  UPDATE-DRを介して移動する。書込みでは、レジスタはここで更新される。
３．  読取では、CAPTURE-DRを介してSHIFT-DRに復帰し、レジスタ値をシフト出力する。
【００３３】
インタープリート・アクセス
１．  CP15のビット0をインタープリートに設定するため、C15（テスト状態）の読取り-変更-書込みの物理アクセスを実行しなければならない。
２．  必要なMCR/MRC命令語が走査チェーン15にシフト入力される。
３．  ARM9TDMIでシステム速度LDR（読取り）又はSTR（書込み）を実行する。
４．  CP15はその走査チェーンのコプロセッサ命令を実行することによりこのLDR/STRに応答する。
５．  LDRの場合、データはARM9TDMIに返され、STRを実行することにより走査チェーン１上で捕獲可能である。
６．  STRの場合、インタープリートされたMCRはARM9TDMIから発行されるデータにより完了する。
７．  CP15のビット0をクリアするため、C15（テスト状態）の読取り-変更-書込みの物理アクセスを実行しなければならない。
【表１】
0004564616.tif 000002
【００３４】
CP15へのデバッグ・アクセス
物理アクセス用のCP15レジスタへの６ビット・レジスタ・アドレス欄のマッピングは表8-8に図示されている。
【表２】
0004564616.tif 000003
【表３】
0004564616.tif 000004
インタープリート・アクセス用の残りのCP15レジスタへの32ビット・命令語欄のマッピングは表8-9に図示されている。ARMアセンブラからのCP15命令語の構成は2-3頁の図2-1に図示されている。
【表４】
0004564616.tif 000005
【００３５】
MMUへのデバッグ・アクセス
これはインタープリート・アクセス機構を使用して走査チェーン15により達成される。MMUデバッグ操作のサポートされるサブセットは表8-10に示されている。命令又はデータTLBを読取るためには、以下のシーケンスを取らなければならない：
１．  C1の読取り-変更-書込みでキャッシュとMMUの両方をオフにする。
２．  C15の読取り-変更-書込み。MMUをテストにCP15をインタープリートに状態セットする。
３．  インタープリートされたLDR。MRC=read  C10
４．  (3)でロードした値のSTR、走査チェーン上で捕獲し、シフト出力。
５．  インタープリートされたSTR、<address> = victim[0], base[=0], MCR = write C10。
６．  8語のLDMをインタープリート。MCR = CAM read。
７．  (6)でロードされた値の8語STM、走査チェーン１で捕獲しシフト出力。
８．  (6)と(7)x8の繰返し。
９．  インタープリートされたLDR。MCR = RAM1 read。
１０．  インタープリートされたLDR。MCR = RAM2 read。
１１．  (9)と(10)でロードされた値の2語STM、走査チェーン１で捕獲し、シフト出力。
１２．  (9)、(10)及び(11)x64の繰返し。
１３．  インタープリートされたSTR、<address> = victim and base[=(4)でセーブされた値], MCR = write C10。
１４．  C15の読取り-変更-書込み。MMUをテストにCP15をインタープリートにする状態をクリアする状態に。
１５．  (1)で読取った値をC1に書き込み。
【表５】
0004564616.tif 000006
【００３６】
キャッシュへのデバッグ・アクセス
これはインタープリート・アクセス機構を使用して走査チェーン15により達成される。キャッシュ・デバッグ操作のサポートされるサブセットは8-34頁の表8-11に示されている。命令又はデータ・キャッシュを読取るためには、以下のシーケンスを取らなければならない：
１．  C1の読取り-変更-書込みでキャッシュとMMUの両方をオフにし、ラウンドロビン・モードにセットする。
２．  C15の読取り-変更-書込み。CP15をインタープリートに状態セットする。
３．  インタープリートされたLDR、<address> = seg, MCR = CAM read。
４．  C15の読取り-変更-書込み。CP15インタープリートをクリアした状態に。
５．  C15.C.{I/D}.Ind(現在のセグメントの犠牲者)の読取り。
６．  各セグメントに(2)  →  (5)を繰返す。
７．  C15の読取り-変更-書込み。CP15をインタープリートに状態セットする。
８．  インタープリートされたSTR, <address> = index [=0], seg.  MCR = write C9 victim。
９．  インタープリートされた８語LDM, <address> = seg. MCR = CAM read。
１０．  インタープリートされたLDR, <address> = seg. MCR = CAM read。
１１．  C15の読取り-変更-書込み。CP15インタープリートをクリアした状態に。
１２．  (9)と(10)でロードされた値の9語STM、走査チェーン１で捕獲しシフト出力。
１４．  (9)  →  (13)x64を繰返す。
１５．  各セグメントに(8)  →  (14)を繰返す。
１６．  インタープリートされたSTR, <address> = index [=(5)で読取った値],
seg.  MCR = write C9 victim。
１７．  各セグメントに(16)を繰返す。
１８．  C15の読取り-変更-書込み。CP15インタープリートをクリアした状態に。
１９．  (1)で読取ったC1の値を書込む。
【表６】
0004564616.tif 000007
【図面の簡単な説明】
【図１】本発明の１例示実施例によるデータ処理装置を概略的に図示する。
【図２】デバッグ動作時の主プロセッサとコプロセッサの動作を概略的に図示する。
【符号の説明】
２  データ処理システム
４  主プロセッサ
２６  コプロセッサ
８  命令キャッシュ
１０  データ・キャッシュ
１２  命令実行器
１４  レジスタバンク
１６  主プロセッサパイプライン
１８  命令バス
２０  主プロセッサ命令走査チェーン
２２  出力走査チェーン
２４  データバス
２８  コプロセッサ命令パイプライン
３０  コプロセッサ命令デコーダ
３２、３４  犠牲者選択回路。
【図１】
0004564616.tif 000008
【図２】
0004564616.tif 000009