JP3916746B2 - データ処理システムのデバッグ中にプロセッサパイプラインおよびサブシステムパイプライン間の同期を維持すする方法と装置 - Google Patents
データ処理システムのデバッグ中にプロセッサパイプラインおよびサブシステムパイプライン間の同期を維持すする方法と装置 Download PDFInfo
- Publication number
- JP3916746B2 JP3916746B2 JP37053297A JP37053297A JP3916746B2 JP 3916746 B2 JP3916746 B2 JP 3916746B2 JP 37053297 A JP37053297 A JP 37053297A JP 37053297 A JP37053297 A JP 37053297A JP 3916746 B2 JP3916746 B2 JP 3916746B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- data
- code
- state
- instruction
- 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 - Lifetime
Links
Images
Classifications
-
- 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/3632—Software debugging of specific synchronisation aspects
-
- 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
Description
【発明の属する技術分野】
本発明は、マイクロプロセッサに関し、詳しくは、VLIW(超長命令語)プロセッサのアーキテクチャに関するものである。
【0002】
【従来の技術および発明が解決しようとする課題】
集積回路の製造技術が進歩するにつれ、単一の集積回路装置内に、ますます多くの論理機能が収容されるようになっている。現代の集積回路(IC)装置には、一つの半導体チップ上に多数のゲートが配置され、このようなゲートを相互接続することによって、例えば、汎用マイクロプロセッサにあるような多種多様で複雑な機能を実現できるようになっている。そうした超LSI(VLSI)を組み込んでいるこのような回路の製造には、回路の組立てにミスがないことが要求される。というのも、製造に何かしら欠陥があれば、そのことによって、設計の目的である機能がすべて実行できなくなる可能性も出てくるからである。このようなことから、上に述べた回路の設計に関する検査を行い、かつ製造後に電気的な各種テストを行う必要性が生じている。
【0003】
しかしながら、回路がより複雑になるにつれて、回路内の各装置の検証や電気的テストにかかるコストならびに困難さも増している。電気的テストの観点から言えば、VLSI回路の各ゲートが正しく機能していることを全体的に検証するためには、原則的に、(デジタル的に、各ゲートがスタックオープンにもスタッククローズにもなっていないと判断し、)ゲートの各々を個別的に実行できるだけでなく、回路内の他のゲートと関連性を保ちながら、想定可能なあらゆる演算の組み合わせによって実行できなければならない。このようなことは、通常、テストベクトルを用いて所望のテストを実行する自動検査装置(ATE)によって行われる。テストベクトルは、一定時間中のすべてのパッケージピンに対する所望のテスト入力(または信号)、関連する1クロックパルス(または複数パルス)、予想されるテスト出力(または信号)のことを言い、また、ある特定のゲート(またはマクロ)の[テスト]を試みる場合に用いられることも多い。複雑な回路では、膨大なテストベクトルを有することになり、したがって、テスト時間が長くなる。また、この文章中において、マクロとセルは、同じものを意味しており、相互に交換可能なものとして使用できる。
【0004】
回路設計者は、これまで、VLSI回路のテスト効率の向上化を図るうえで、縮退故障モデリング技法を用いてきた。縮退故障モデリングは、個々のゲートに生じるスタックオープンまたはスタッククローズ故障に対して行われるのではなく、論理回路のスタックハイおよびスタックローノードを引き起こすそのような不良ゲート(および不良相互接続)が及ぼす影響に対して行われる。したがって、論理回路のエクササイズを行うために、テストベクトルの最小パターンが導き出されたのである。欠陥がある場合に、このようなテストベクトルを回路に当てはめることによって、スタックハイおよびスタックローノードを検出する。このような技法は、これまでに各世代のVLSI回路のテスト効率の改善に役立ってきた。
【0005】
さらに、VLSI回路の特定な回路構成には、特殊な信号の組み合わせ以外はすべてアクセス不可能なゲートがいくつか存在し、したがって、非常に特殊なパターンを持つ信号がない限り、故障が隠れた状態になる。しかしながら、各ゲートに対して想定可能な各組み合わせを施すのに長時間を要することと、各回路の実行に必要な検査装置の高いコストがかかることを考え合わせると、製造された回路を100%テストするコストは莫大なものとなる。このようなことから、過去に、集積回路の製造業者は、チップ内の能動素子の全部に満たないテストの実行を余儀なくされたことにより、これに付随する製品の質的水準が、最適レベルを下回るようになったことがある。したがって、集積回路設計の最大の問題の一つとして言えるのは、最終的なIC設計を適切にテストする能力であり、この問題は、集積回路がより複雑になるにつれ、ますます重大なものとなっている。
【0006】
この問題への1対処法として、テスト容易化設計(DFT)がある。DFTの重要なコンセプトは、制御可能性と観察可能性である。制御可能性とは、回路内に配置されたどのノードの状態も設定ならびにリセットできる能力のことを言い、観察可能性とは、回路内の任意のノードの状態を直接もしくは間接に観察できる能力のことを言う。DFTの目的は、外部入力/出力から内部および外部ノードを制御ならびに観察する能力を高めることにある。すなわち、DFT技術は、論理の検証やDCパラメトリックのテストに使用してもよい。
【0007】
テスト性を回路内に設計すると、回路への影響をある程度与えることになり、さらに論理を加えることになろう。このような論理の追加によって、設計の実現に必要なシリコンの量が増大する。テスト性の強化によって節約される分は、大抵、回路の開発時間やテストにかかるコスト、さらにそのエンドシステムが分析されるまで現われてこない。
【0008】
縮退故障モデリングおよび関連するテスト生成と組み合わせて、テスト性の改善のため特に設計されたVLSI回路に他の回路を組み込むことも可能である。テスト回路の一種として、論理回路内のスキャンパスがある。スキャンパスは、一連の同期クロック式マスタ/スレーブラッチ(またはレジスタ)によって構成されており、各ラッチは、論理回路の特定ノードにそれぞれ接続されている。このようなラッチは、論理回路ノードを既定の状態に予め設定し、直列データストリーム(スキャンイン)によってロードすることができる。したがって、通常の方法で、論理回路のエクササイズを行うことができるうえ、(スキャンラッチを備えた各ノードの)演算結果は、各ラッチに記憶される。ラッチの内容を直列にアンロード(スキャンアウト)することによって、関連ノードの特定のテスト演算結果を読み出して、誤ったノード演算の分析を行うことができる。多くの多様なデータパターンを用いてこの演算を繰り返すことにより、論理回路に必要な組み合わせをすべて効果的にテストできるが、各能動部品またはセルならびに想定可能なあらゆる相互作用を個別にテストする場合に比べて、テスト時間が短くなるうえにコストも低下する。また、スキャンパスは、ラッチ(またはレジスタ)に直接書き込むことによって、また、ラッチ(またはレジスタ)の内容を直接観察することによって、回路の初期化が行える。スキャンパスの使用は、従来の[機能モード]法に比べて、テストベクトル量を減少させるうえで有効である。このようなデータのスキャン技法については、[A Survey of Design for Testability Scan Techniques](VLSI Design: 第5巻、No.12、1984年12月発行。P.38〜61)の中で、E.J.McCluskeyによって述べられている。
【0009】
さらに、VLSI技法の向上に伴って、集積回路の利用者は、利用者の用途に合わせてカストマイズされた機能を実行する目的から、特別に設計され組み立てられた集積回路を必要とするようになってきている。このような集積回路は、エーシック(ASIC: 特定用途向け集積回路)と呼ばれている。プログラマブルファームウェアに実装されている特殊な機能を備えた汎用マイクロコンピュータとコスト面で競合し、さらに、小規模集積回路により形成されたボード設計とコスト面で競合するASIC装置の場合、ASIC回路の設計時間を短縮しなければならず、ASIC回路は、低コストで製造可能かつテスト可能でなくてはならない。したがって、このような回路が設計上モジュール化されて各モジュールが一定の機能を実行する方法が有効となり、これにより、予め設計された回路のモジュールを組み合わせて新たなASIC回路を形成することが可能になる。このような方法は、非ASICマイクロコンピュータおよびマイクロプロセッサにも利用できる。最終生成品の如何を問わず、モジュール化の方法を用いることによって、設計者は、予め検証され製造可能性が立証された論理を採用することができる。しかしながら、現在のスキャンパスを収容している論理モジュールが新たな回路に利用される場合に、通常、新規装置に新規テストパターンが必要になることから、設計/製造サイクルタイムが長くなる。
【0010】
これまで、スキャンパスや他のテスト性回路を利用するモジュール化方式によって、予想可能なあらゆる欠陥が完全にカバーされてきた。しかし、この方式は、システムバスを用いてスキャンテストのセットアップと操作を行うことから、各モジュールが他とは無関係にテストされたとしても、一定のモジュールに対して設計されたテストパターンは、バス制御とモジュール選択のために、論理回路内の他のモジュールの演算に依存することになる。その結果、特定のモジュールに関するテスト性は、他のモジュールの障害のない演算に左右されることになる。さらに、一定のモジュールのテスト条件を設定する自動テストパターン生成(ATPG)プログラムは、他のモジュールに対する該当モジュールの位置と、このような他のモジュールの動作特性に依存している。したがって、テスト時間とコストの削減は、このようなモジュール化によって実現可能ではあるものの、個々のモジュールのスキャンパスのロード/アンロードにシステムバスを利用することによって、特定モジュールの演算に影響するだけでなく、一定のモジュールに対してテストプログラムをある論理回路から別の論理回路へ[ポートする]ことができなくなる可能性も出てくる。
【0011】
近年、ASICの設計に、メガモジュールが使用されている(メガモジュールは、テキサスインスツルメンツ社の商標である)。メガモジュールには、SRAM、FIFO、レジスタファイル、RAM、ROM、UART(ユアート: 汎用非同期式レシーバトランスミッタ)、プログラマブルロジックアレイ等の論理回路の各タイプがある。メガモジュールは、通常、複雑性において少なくとも500ゲートから成りかつ複雑なASICマクロ機能を有する集積回路モジュールとして定義されている。このようなメガモジュールは、予め設計し、かつASIC設計ライブラリに保存しておくことができる。したがって、設計者がメガモジュールを選択し、設計されたICチップの一定領域内に配置することができる。このため、ASIC設計者は、メガモジュールを、単純マクロと同じくらい容易に各自の論理に組み入れることができるようになる。
【0012】
ASICのこのようなテスト上の問題を解決するもう一つの方法は、いわゆるパラレルモジュールテスト(PMT)の使用であり、[直接接続(directconnect)]スキームと呼ばれることも多い(パラレルモジュールテストは、テキサスインスツルメンツ社の商標である)。PMTは、直接接続スキームであるが、これは、外部ピンをメガモジュールに接続し、それ以外の論理回路やバッファ等をすべてバイパスするからである。このPMTは、主に論理検証テスト性スキームとして作製されたものであり、最近では、限定的なVIH/VILおよびICCQテスト性スキーム向けに強化されている。しかしながら、このPMTにも問題が発生する可能性はある。つまり、テスト選択中および割込み許可中に、ASIC回路の論理状態が、テストプロセスの一部として混乱する可能性が生じるからである。
【0013】
もう一つの解決法として、IEEE1149.1標準のいわゆるJTAGテストポートによって定義されたテストアクセスポートおよび境界スキャンアーキテクチャが挙げられる。IEEE1149.1は、主に、システムテスト法に対して提供されており、IEEE1149.1標準では、テスト機能専用に使用される最小限の4本の実装ピンを備えていればよい。しかし、IEEE1149.1標準では、各I/Oバッファ用に境界スキャンセルを備える必要があり、これによって、シリコンオーバヘッドだけでなく、すべての正常な演算機能ピンに対してさらにデータの遅延を引き起こすことになる。また、IEEE1149.1標準は、内部テスト性スキームの一部を制御する[フック]を有しているが、チップレベルのテストに最適化されていない。つまり、IEEE1149.1は、内部DCパラメトリックのテストを明示的にはサポートしていない。
さらに、ソフトウェアブレークポイント(SWBP)によって、マイクロプロセッサコードのデバッグとシステム性能評価が行える別の構造が考えられる。SWBPは、プログラムが、停止ポイントの演算コードがメモリ内でソフトウェアブレークポイントの演算コードと交換できる書込み可能記憶装置モジュールにあれば、通常、演算コードの置換によって得られる。大抵のマシンでは、SWBP演算コードが命令実行パイプラインの最初の実行段階に達すると、パイプラインに進行を停止させるか、あるいは、割込みサービスルーチンへトラップさせて、パイプラインが停止もしくはトラップしたことを示すデバッグ状態ビットを設定する。保護パイプラインとして分類されているプロセッサでは、SWBPの後にそのパイプラインにフェッチされた命令は実行されない。一方、すでにそのパイプラインにある命令は、完了させることができる。実行をリスタートするときは、パイプラインをクリアして、演算コードがメモリ内で最初の演算コードに置き換えられた後にSWBPメモリアドレスの演算コードを先取りするだけで、リスタートできる。
【0014】
マイクロプロセッサ設計者の間では、並列法の利用によってシステムの性能向上を試みる傾向が高まっている。現代のマイクロプロセッサの一部に応用されている1並列アーキテクチャに、VLIW(超長命令語)アーキテクチャがある。VLIWアーキテクチャマイクロプロセッサは、VLIW形式の命令を扱うことから、このように呼ばれている。
VLIW形式命令とは、多重並行演算を符号化する長い固定長命令のことである。VLIWシステムでは、複数の独立した機能単位を使用しており、このような機能単位に複数の独立した命令を発行する代わりに、複数の演算を1つの超長命令語に組み入れている。したがって、VLIWシステムでは、複数の整数演算用のコンピュータ命令、浮動小数点演算、メモリ参照等を、単一の長いVLIW命令内で組み合わせることができる。
【0015】
このような複雑なパイプラインのテストやデバッグは、前記パラグラフで述べてきた各技法を用いても、困難である。しかしながら、従来技術に関するこのような不利益や他の不利益は、本発明によって解消され、システムレベルのデバッグにとどまらず、チップレベルのテストを行う改良方法ならびに装置が提供されている。
【0016】
【課題を解決するための手段】
本発明によれば、マイクロプロセッサからの単一または複数の「レディ」出力信号により停止間近の状態であることを警告し、単一または複数の第2の「レディ」出力信号によりマイクロプロセッサが停止したことを示すことによって、マイクロプロセッサ内部の非保護命令実行パイプラインとマイクロプロセッサ外部のメモリサブシステムデータパイプラインの間の同期を維持できるという利点がある。非保護パイプラインでは、演算を開始したロードまたはストア命令とは無関係に、ロードおよびストア演算が完了する。この開始を行うロードまたはストア命令の次の命令は、そのロードまたはストア演算が完了する前に、メモリアクセスの待ち時間を利用して、開始を行ったロードまたはストア命令の目的とする位置からデータを検索することができる。
デバッグ中にデータ処理システムにおいてプロセッサ命令実行パイプラインおよびサブシステムデータパイプライン間の同期を維持する方法は、
通常の演算方法で前記プロセッサ命令実行パイプラインにあるシステムコードを実行し、前記命令実行パイプラインと前記データパイプラインにおいて複数の演算を開始する段階と、
前記プロセッサから前記サブシステムへ第1の信号を送信し、停止間近であることを示す、段階と、
前記第1の信号の受信に応えて、前記サブシステムを停止に備えて調節する段階と、
前記複数の演算のうちの少なくとも一つが依然停止間近の状態となるように、前記プロセッサパイプラインの前記通常の演算を停止する段階と、
前記サブシステムに第2の信号を送信することにより、前記プロセッサパイプラインが停止したことを示す段階と、
前記命令実行パイプラインにおいて前記依然停止間近の状態にある前記複数の演算のうちの少なくとも一つに対応する前記サブシステムパイプラインの前記演算のうちの任意の演算が維持されるように、前記第2信号の受信に応えて前記サブシステムを停止する段階と、
前記データ処理システム内で無関係な演算が一切発生しないような方法で前記プロセッサ命令実行パイプラインにある前記システムコードの実行を継続する段階と、から成っている。
【0017】
【発明の実施の形態】
図1は、本発明の1実施例を有するマイクロプロセッサ1のブロック図であり、マイクロプロセッサ1は、VLIWデジタル信号プロセッサ(DSP)である。説明の明瞭化を図るため、図1では、本発明の1実施例を理解するうえで問題となるマイクロプロセッサ1の該当部分のみを示している。DSPの一般的な構造の詳細は周知であり、他において容易に見ることが可能である。例えば、Frederick Boutaud他の米国特許第5,072,418号では、DSPについて詳細な説明がなされており、この文章中に引用されている。また、Gary Swoboda他の米国特許第5,329,471号では、DSPのテスト方法およびエミュレート方法について詳細に説明されており、この文章中に引用されている。本発明の1実施例に関するマイクロプロセッサ1の各部分についての詳細は、以下に充分詳しく説明されており、これによって、マイクロプロセッサ技術の通常の技術を有する者が、本発明を作製し使用することが可能である。
【0018】
マイクロプロセッサ1では、中央処理装置(CPU)10、データメモリ22、プログラムメモリ23、周辺装置60、直接メモリアクセス(DMA)61を備えた外部メモリインタフェース(EMIF)が示されている。CPU10は、さらに、命令フェッチ/デコードユニット10a〜cを有する他に、算術演算およびロード/記憶装置D1、乗算器M1、ALU/シフタユニットS1、算術論理演算装置(ALU)L1、およびデータの読取り/書込みを行う共用マルチポートレジスタファイル20aなどの複数の実行ユニットを備えている。復号化された命令は、不図示の各組の制御ラインを通じて、命令フェッチ/デコードユニット10a〜10cから機能装置D1、M1、S1、およびL1に提供される。データは、第1組のバス32aを通じてレジスタファイル20aからロード/記憶装置D1へ、第2組のバス34aを通じて乗算器M1へ、第3組のバス36aを通じてALU/シフタユニットS1へ、さらに、第4組のバス38aを通じてALU L1へ提供され、それぞれ逆方向への提供も行われる。また、データは、第5組のバス40aを通じてメモリ22およびロード/記憶装置D1間を送受信される。ここで、前記データパス全体が、レジスタファイル20bおよび実行ユニットD2、M2、S2、L2と全く同一である点に注意されたい。命令は、1組のバス41を通じて命令記憶装置23からフェッチユニット10aによってフェッチされる。エミュレーション回路50は、外部テスト/開発システム(XDS)51によって制御可能な集積回路1の内部動作へのアクセスを行えるようにする。
【0019】
外部テストシステム51は、集積回路のデバッグおよびエミュレーションを行うための周知の各種テストシステムの典型としてあげられている。このようなシステムの1つが、米国特許第5,535,331号に説明されており、ここでも引用されている。テスト回路52には、制御レジスタと、集積回路1をテストするための並列シグネチャ解析回路が含まれている。
メモリ22とメモリ23は、マイクロプロセッサ1の集積回路の一部として図1に示されており、その範囲がボックス42によって示されている。メモリ22〜23は、マイクロプロセッサ1の集積回路42の外部に配置されてもよく、または、その一部が集積回路42上に、別の一部が集積回路42の外部に配置されてもよい。このような配置は、設計上の選択に関する問題である。実行ユニットの特定の選択や数もまた、設計上の選択の問題であり、本発明にとって重要な問題ではない。
【0020】
マイクロプロセッサ1がデータ処理システムに組み込まれている場合、図1に示すように、追加記憶装置または周辺装置をマイクロプロセッサ1に接続してもよい。例えば、図示するように、ランダムアクセスメモリ(RAM)70、読出し専用メモリ(ROM)71、およびディスク72を外部バス73により接続する。バス73は、マイクロプロセッサ42内の機能ブロック61の一部である外部メモリインタフェース(EMIF)に接続されている。さらに、直接メモリアクセス(DMA)コントローラも、ブロック61内に配置されている。DMAコントローラは、通常、マイクロプロセッサ1内のメモリと周辺装置の間、およびマイクロプロセッサ1の外部のメモリと周辺装置の間でデータをやり取りするのに用いられる。
【0021】
図2は、図1のマイクロプロセッサの実行ユニットとレジスタファイルに関するブロック図であり、各種機能ブロックを接続しているバスのより詳細な図が示されている。この図では、特に注意されない限り、どのデータバスも、32ビットの広さを有している。バス40aは、mux200aによって駆動されるアドレスバスDA1を備えている。これにより、ロード/記憶装置D1またはD2のいずれかによって生成されたアドレスを、レジスタファイル20a用のロードまたは記憶用アドレスとして提供することが可能になる。また、データバスLD1は、アドレスバスDA1によって指定されたメモリ22内のアドレスからロードユニットD1内のレジスタに、データをロードする。装置D1は、レジスタファイル20aに保存する前に、提供されたデータを処理してもよい。同様に、データバスST1は、レジスタファイル20aからメモリ22にデータを保存する。ロード/記憶装置D1は、32ビット加算、減算、リニアアドレスおよび循環アドレス計算等の演算を行う。ロード/記憶装置D2は、アドレスを選択するうえでmux200bのサポートにより、装置D1と同様の演算を行う。
【0022】
ALU装置L1では、32/40ビット算術および比較演算と、32ビット用最左端の1および0ビットのカウント、32および40ビット用の正規化カウント、および論理演算等の演算を行う。ALU装置L1は、32ビットソースオペランド用の入力src1と、第2の32ビットソースオペランド用の入力src2を有している。入力msb_srcは、40ビットソースオペランドの形成に用いられる8ビットの値である。また、ALU装置L1は、32ビット宛先オペランド用の出力dstを有している。出力msb_dstは、40ビット宛先オペランドの形成に用いられる8ビットの値である。レジスタファイル20a内の2つの32ビットレジスタは、連結されて40ビットオペランドを保有する。mux211は、入力src1への接続によって、32ビットオペランドを、バス38aを介してレジスタファイル20aから、または、バス210を介してレジスタファイル20bから取得できるようにする。また、mux212は、入力Src2に接続されることによって、32ビットオペランドを、バス38aを介してレジスタファイル20aから、または、バス210を介してレジスタファイル20bから取得できるようにする。ALU装置L2は、装置L1と同様の演算を行う。
【0023】
ALU/シフタユニットS1は、32ビット算術演算、32/40ビットのシフトおよび32ビットのビットフィールド演算、32ビット論理演算、分岐、および定数生成等の演算を行う。ALU装置S1は、32ビットソースオペランド用の入力src1と、第2の32ビットソースオペランド用の入力src2を有している。入力msb_srcは、40ビットソースオペランドの形成に用いられる8ビットの値である。また、ALU装置S1は、32ビット宛先オペランド用の出力dstを有している。出力msb_dstは、40ビット宛先オペランドの形成に用いられる8ビットの値である。mux213は、入力src2に接続されることによって、32ビットオペランドを、バス36aを介してレジスタファイル20aから、または、バス210を介してレジスタファイル20bから取得できるようにする。ALU装置S2は、装置S1と同様の演算を行うが、さらに、制御レジスタファイル102とのレジスタトランスファーも行うことができる。
【0024】
乗算器M1は、16x16の乗算を行う。この乗算器M1は、32ビットソースオペランド用の入力src1と、32ビットソースオペランド用の入力src2を有している。ALU装置S1は、32ビット宛先オペランド用の出力dstを有している。mux214は、入力src2に接続されることによって、32ビットオペランドを、バス34aを介してレジスタファイル20aから、または、バス210を介してレジスタファイル20bから取得できるようにする。乗算器M2は、乗算器M1と同様の演算を行う。
図2に示すように、バス220および221を用いて、制御レジスタファイル102から1台の装置(.S2)の読取りおよび書込みを行うことができる。表2は、この制御レジスタファイルに含まれている制御レジスタの一覧であり、各項目ごとに簡単な説明を付けている。また、各制御レジスタについては、後でより詳しく説明している。各制御レジスタは、MVC命令によってアクセスされる(後述するMVC命令の説明を参照)。
【0025】
【0026】
図3は、アドレス指定モードレジスタ(AMR)を示している。8つのレジスタ(A4〜A7、B4〜B7)で、循環アドレス指定を行うことができる。各レジスタに対し、AMRはアドレス指定モードを指定する。各レジスタのA2ビットフィールドを用いて、リニア(デフォルト)モードまたは循環モードのアドレス修飾モードを選択する。循環アドレス指定により、このフィールドでは、循環バッファに用いるBK(ブロックサイズ)フィールドを指定する。さらに、該バッファは、ブロックサイズと同等のバイト境界に位置合せをする必要がある。このモード選択フィールドの符号化について表3に示されている。
【0027】
【0028】
ブロックサイズフィールドBK0およびBK1では、循環アドレス指定のためのブロックサイズを指定する。BK0およびBK1内の5ビットでは、その幅を指定する。このブロックサイズの幅を計算する公式は、
ブロックサイズ(バイト単位)=2(1+1)
である。ただし、Nは、BK1またはBK0内の値とする。
表4に、全部で32の想定可能なケースを対象にしたブロックサイズの計算をあげている。
【0029】
【0030】
制御状態レジスタ(CSR)には、図4に示すように、制御ビットと状態ビットが含まれている。CSR内のビットフィールドに関する機能を、表5に示している。
【0031】
【0032】
図5に示される汎用入力レジスタ(IN)は、32の汎用入力信号をサポートし、図6に示される汎用出力レジスタ(OUT)は、32の汎用出力信号をサポートする。このような信号の機能については、後で説明する。
次の表6では、ここで用いられる各種記号について説明している。
【0033】
【0034】
表7および表8では、命令と機能単位との対応関係を定義している。
【0035】
【0036】
【0037】
汎用レジスタファイルは、32および40ビットデータをサポートする。この32ビットデータは各単一レジスタに収容されている。また、40ビットデータは、2つのレジスタにわたって収容されており、このデータのうち32個のLSB(最下位ビット)は、偶数レジスタに保存され、8個のMSB(最上位ビット)は、次のレジスタ(常に奇数レジスタ)の8個のLSBに保存される。表9に示すように40ビットデータに対して16の有効レジスタ対がある。アセンブリ言語構文では、各レジスタ名の間にコロンを入れることによって、このレジスタ対を表している。最初に奇数レジスタが指定される。
【0038】
【0039】
図7に、40ビットデータを対象にしたレジスタ記憶域構成を示している。長い入力データを必要とする演算では、奇数レジスタの24個のMSBが無視される。また、長い結果が出る演算では、奇数レジスタの24個のMSBにゼロ充てんを施す。一方、偶数レジスタのデータは、演算コードに符号化される。
DSPの演算コードマップが、図8A〜図8Jに示されている。表6と、フィールドシンタクスおよび値の解説のため後に記述する命令の説明を参照されたい。
命令は、すべて条件付きにしてもよい。条件は、テスト対象となるレジスタを指定する3ビット(creg)フィールドと、ゼロか否かを判定するためのテストを指定する1ビットフィールド(z)によって制御される。どの演算コードも、4MSB(最上位ビット)が、cregおよびzである。このレジスタは、すべての命令に対するE1パイプライン段階の開始時にテストされる。このパイプラインについては、後に説明する。z=1の場合、このテストは、ゼロに等しいことを確認するために行われる。z=0の場合、テストは、ゼロでないことを確認するために行われる。条件レジスタフィールド(creg)=0およびz=0の場合は、常に真として扱われ、命令を無条件に実行することができる。cregレジスタフィールドは、表10に示すように符号化が行われる。
【0040】
【0041】
条件付き命令は、条件レジスタを角括弧で括って表記されている。また、後続の実行パケットには、2つのADD命令が並列に配置されており、第1のADD命令は、B0に関して非ゼロの条件付きであり、第2のADD命令は、B0に関してゼロであることを条件としている。また、感嘆符(!)は、条件の[否定]を表している。
【0042】
上記の命令は、相互に排他的であり、つまり、片方のみが実行されることを意味している。
両方の命令が並列にスケジュールされている場合、相互排他的な命令は、さらに後述するあらゆる資源の制約に従わなければならない。
相互排他的命令が後述するような任意の資源を共用している場合、片方の命令だけが実行を終了する場合でも、両方の命令を並列にスケジュール(同一の実行パケットに配置)することはできない。
命令の実行は、遅延スロットにより定義することができる。表11は、命令のタイプと、各タイプの命令が有している遅延スロットの数、およびその命令が用いる実行段階を示している。遅延スロットは、ソースオペランドが読み取られてから、結果が取得され読み取られる前にかかる余分なサイクル数に相当する。(ADDのような)単一サイクル型の命令の場合、ソースオペランドがサイクルiで読み取られると、その結果は、サイクルi+1で読み取ることができる。乗算命令(MPY)の場合、ソースオペランドがサイクルiで読み取られると、その結果は、サイクルI+2で読み取ることができる。
【0043】
【0044】
命令は、常に8個一度に取り出され、フェッチパケットを構成する。フェッチパケットの基本形式は、図9に示す通りである。また、フェッチパケットの実行グループは、各命令のpビット、すなわちビット0により指定され、フェッチパケットは、8ワードで位置合せされている。
pビットは、命令の並列的な実行を制御し、左から右(低位アドレスから高位アドレス)の方向にスキャンされる。命令iのpビットが1の場合、命令i+1は、(同一サイクルの)命令iと並列に実行される。また、命令iのpビットが0の場合、命令i+1は、命令iの後のサイクルで実行される。さらに、並列実行が行われるすべての命令によって実行パケットが構成される。実行パケットには、命令を8個まで配列することができる。また、実行パケット内の命令は、すべて固有の機能単位を使用しなければならない。
実行パケットは、8ワード境界にまたがることはできない。したがって、フェッチパケットの最後のpビットは常に0に設定され、フェッチパケットは、それぞれ新規実行パケットを開始する。以下の例では、pビットシーケンスを命令のサイクル毎の実行ストリームに変換する様子を示している。フェッチパケットには、3種類のpビットパターンがあり、この3つのpビットパターンは、8個の命令に対して、全直列、全並列、または一部直列の実行シーケンスとなる。この3つの実行シーケンスについて、以下に詳しく説明する。
図10Aに示す全直列pビットパターンは、次のような実行シーケンスとなる。
【0045】
この8個の命令は、順次実行される。
図10Bに示す全並列pビットパターンは、次のような実行シーケンスとなる。
【0046】
この場合、8個の命令は、並列に実行される。
図10Cに示す一部直列pビットパターンは、次のような実行シーケンスとなる。
【0047】
この8個の命令は、順次実行される。
図10Bに示す全並列pビットパターンは、次のような実行シーケンスとなる。
【0048】
この場合、8個の命令は、並列に実行される。
図10Cに示す一部直列pビットパターンは、次のような実行シーケンスとなる。
【0049】
ここで、命令C、D、Eは、同じ機能単位、クロスパス、その他のデータパス等の資源を使用しておらず、同じことが、命令F、G、Hについても言うことができる。
||は、命令が直前の命令と並列に実行されることを示すものである。上記の一部直列の例では、コードが次のように表記される。
【0050】
実行パケットの途中で分岐が発生した場合、低位アドレスの命令は、すべて無視される。一部直列の例では、命令Dのあるアドレスに分岐が発生すると、DとEだけが実行される。命令Cが同じ実行パケットにある場合でも、命令Cは無視される。命令Aおよび命令Bも、分岐前の実行パケットにあることから、やはり無視される。
同じ実行パケット内の2つの命令は、同じ資源を利用できない。さらに、同一サイクルにおいて、同一のレジスタに2つの命令が書込みを行うことはできない。次に、命令が使用可能な資源についてそれぞれ説明する。
同一の機能単位を使用する2つの命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
【0051】
クロスパス(1Xおよび2X): 1データパス、1実行パケットにつき1機能単位(.S、.L、または.M)の場合、クロスパス(1Xおよび2X)を介して対向するレジスタファイルからソースオペランドを読み取ることができる。例えば、.S1は、Aレジスタファイルから両方のオペランドを、または、1Xクロスパスを用いてBレジスタファイルから片方のオペランドを読み取ることができる。このことは、装置名の後にXを入れることによって表記される。
AからBとBからAの片方のパスしかないことから、両レジスタファイル間の同じXクロスパスを使用する2つの命令を、同一実行パケットに発行できない。
次のような実行パケットは無効である。
【0052】
(演算コードマップに示すように)命令フィールドにxビットが設定されている場合、オペランドは、宛先に対向するレジスタファイルから送信される。
ロードおよびストア命令は、片方のレジスタファイルからのロードまたは記憶処理を行いながら、もう一方のレジスタファイルからのアドレスポインタを使用することができる。同一レジスタファイルからのアドレスポインタを使用する2つのロードおよび/またはストア命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
【0053】
同じレジスタファイルへのロードおよび/またはそのファイルからの記憶処理を行う2つのロードおよび/またはストア命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
【0054】
レジスタファイルの各サイドのサイクルごとに、長い演算結果を1つだけ書き込んでもよい。.Sおよび.L装置が長ソースオペランド用読取りレジスタポートと長演算結果用書込みレジスタポートを共用していることから、実行パケットの各サイドにつき1つだけ発行してもよい。
次のような実行パケットは無効である。
【0055】
.Lおよび.S装置が、記憶ポートと長読取りポートを共用していることから、長い値を読み取る演算は、ストア命令として、.Lおよび/または.S装置において同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
【0056】
同一レジスタの5つ以上の読取り命令が、同じサイクルにあってはならない。ただし、条件レジスタは、その限りではない。
次のコードシーケンスは無効である。
【0057】
同じレジスタへの書込みを行う待ち時間が異なる命令が別々のサイクルで発行された場合、同一サイクルにおける同一レジスタへの複数の書込みが発生することがある。例えば、サイクルi+1上のADDが後ろに付くサイクルiで発行されたMPYは、どちらの命令も結果をサイクルi+1に書き込むことになることから、同一レジスタへの書き込みはできなくなる。したがって、次のコードシーケンスは無効である。
【0058】
MPY .M1 A0,A1,A2
ADD .L1 A4,A5,A2
表12に、異なる複数の書込みによる矛盾(コンフリクト)を示している。例えば、実行パケットL1のADDとSUBが同じレジスタに書き込まれる場合、矛盾は容易に検出できる。
パケットL2のMPYとパケットL3のADDは、両方とも同時にB2に書き込まれるが、分岐命令により、L2の後の実行パケットがL3以外のパケットになる。これは矛盾ではないであろう。したがって、アセンブラによってL2とL3に矛盾が検出されることはない。L4内の命令は、互いに排他的であることから、書込みの矛盾を引き起こすことはない。逆に、L5の各命令は、互いに排他的であることが明らかでないために、アセンブラは矛盾があるかどうか判断できない。パイプラインがコマンドを受信して同一のレジスタに複数の書込みを行う場合、結果は未定義となる。
【0059】
アドレスモードは、BK0を用いた場合、リニア、循環モード、BK1を用いた場合、循環モードがある。このモードは、アドレスモードレジスタ(AMR)によって指定される。
【0060】
8個のレジスタは、循環アドレス指定を行うことができ、A4〜A7は、.D1装置によって、B4〜B7は、.D2装置によって用いられる。他の装置は、循環アドレスモードを使用できない。上記レジスタの各々は、AMRによってアドレスモードを指定する。
命令LD(B)(H)(W)、ST(B)(H)(W)、ADDA(B)(H)(W)、およびSUBA(B)(H)(W)は、いずれもAMRを用いて上記レジスタにどのタイプのアドレス計算をすればよいか判断する。また、いずれのレジスタも、リニアモードアドレス指定を行うことができる。
リニアモードアドレス指定は、LD/ST命令によって次のように行われる。リニアモードにより、offsetR/cstオペランドを、それぞれ2、1、または0だけ左にシフトして、ワードアクセス、ハーフワードアクセス、またはバイトアクセスを行ってから、baseRに対する加算または減算(指定された演算によって異なる)を実行する。
リニアモードアドレス指定は、ADDA/SUBA命令によって次のように行われる。リニアモードにより、src1/cstオペランドを、それぞれ2、1、または0だけ左にシフトして、ワードアクセス、ハーフワードアクセス、またはバイトアクセスを行ってから、加算または減算(指定された演算によって異なる)を実行する。
【0061】
循環モードアドレス指定では、AMRのBK0およびBK1フィールドを使用して循環アドレス指定のブロックサイズを指定する。循環モードアドレス指定は、LD/ST命令によって次のように行われる。offsetR/cstオペランドを、それぞれ2、1、または0だけ左にシフトしてから、NとN+1の間に禁止されているキャリー/ボローによって加算または減算を行う。baseRのビットN+1〜ビット31は、そのまま変化せず、他のキャリー/ボローは、すべて通常通り処理される。したがって、offsetR/cstオペランドが循環バッファサイズ2(N+1)よりも大きく、なおかつ指定された場合、アドレスは、循環バッファの外部となる。AMRの循環バッファサイズは、比率によるサイズではなく、例えば、4のサイズは4バイトであり、(タイプ)のサイズに4倍するわけではない。したがって、8ワードの配列による循環アドレス指定を行うためには、32のサイズを指定しなければならない。すなわち、N=4である。表12では、BK0=4として、循環モードでレジスタA4により実行されるLDWが示されており、したがって、バッファサイズが32バイト、16ハーフワード、または8ワードとなる。この例でAMRに入る値は、0004 0001hとなる。
【0062】
【0063】
循環モードアドレス指定は、ADDA/SUBA命令により、次のように行われる。src1/cstオペランドを、それぞれ2、1、または0だけ左にシフトして、ADDAW、ADDAH、ADDABを実行してから、NとN+1の間に禁止されているキャリー/ボローによって加算または減算を行う。src2の包含的なビットN+1〜ビット31は変わらない。他のキャリー/ボローはすべて通常通り処理される。したがって、src1が循環バッファサイズ2(N+1)よりも大きく、なおかつ指定された場合、アドレスは、循環バッファの外部となる。AMRの循環バッファサイズは、比率によるサイズではなく、例えば、4のサイズは4バイトであり、(タイプ)のサイズに4倍するわけではない。したがって、8ワードの配列による循環アドレス指定を行うためには、32のサイズを指定しなければならない。すなわち、N=4である。表14では、BK0=4として、循環モードでレジスタA4により実行されるADDAHが示されており、したがって、バッファサイズが32バイト、16ハーフワード、または8ワードとなる。この例でAMRに入る値は、0004 0001hとなる。
【0064】
各命令は、命令構文により表記される。演算コードマップでは、各命令を構成している各種ビットフィールドに分けられている。表8に示すように、1を上回る機能単位上で実行可能な一定の命令がある。この構文により、命令が使用する機能単位と各種資源を次ように指定する。
EXAMPLE(.unit)src,dst
この構文は、ADD命令に対して次のような見え方をする。
ADD(.unit)src1,src2,dst
OR
ADDU(.unit)src1,src2,dst
OR
ADD(.unit)src2, src1,dst
unit=.L1,.L2,.S2,.D1,.D2
srcとdstは、それぞれソースと宛先を示している。(.unit)は、命令が(.L1,.L2,.S1,.S2,.M1,.M2,.D1,.D2)にマッピングする機能単位を示している。また、この命令は、3つの演算コードマップフィールド、src1、src2、およびdstを有している。
パイプライン動作
【0065】
DSPパイプラインは、パフォーマンスの向上、コストの低減、およびプログラミングの簡素化に役立つ重要な特徴をいくつか備えている。具体的には、パイプライン方式を増やすことにより、プログラムの取出し、データアクセス、および乗算などに生じていた従来のアーキテクチャ上のボトルネックが削減され、パイプラインインタロックの除去により、パイプライン制御が簡素化され、また、パイプラインにより、サイクルごとに8つの並列な命令をディスパッチすることができる。さらに、並列な命令が、複数の同じパイプライン段階を同時に進行し、直列な命令が、相対的なパイプライン段階の同じ差を保ちながら進行し、なおかつ、ロードおよびストアアドレスが、同一のパイプライン段階中にCPU境界上に出現することにより、リードアフタライトメモリの矛盾が削減される。
データアクセスとプログラム取出しのいずれにも、複数段階から成るメモリパイプラインが存在する。これにより、オンチップとオフチップのどちらでも高速の同期メモリを使用することができるうえ、他の命令と並列な分岐によって無限にネスト可能なオーバヘッドゼロのループが可能になる。
パイプラインの実行サイクルでは内部インタロックが全く生じないことから、新規実行パケットは、CPUサイクルごとに実行段階に入る。したがって、特定の入力データを備えた特定のアルゴリズムのCPUサイクル数は、一定である。プログラム実行中にメモリ機能停止が一切起こらなければ、CPUサイクル数は、実行するプログラムのクロックサイクル数に等しくなる。
パフォーマンスは、メモリサブシステムからの機能停止または割込みによってのみ、抑止することができる。メモリ機能停止の理由は、メモリアーキテクチャによって定められる。プログラムを速度に対してどのように最適化すればよいか充分に理解するためには、プログラム取出し、データ記憶、そのプログラムが作製するデータロード要求の並びと、各々がCPUの機能をどのように停止させるのかを理解する必要がある。
【0066】
機能的観点から、パイプライン動作は、CPUサイクルをベースにしている。CPUサイクルとは、ある特定の実行パケットが特定のパイプライン段階に存在する期間のことである。CPUサイクル境界は、常にクロックサイクル境界上に生じるが、メモリ機能停止によって、CPUサイクルが複数のクロックサイクルの長さを超えることが起こり得る。CPUサイクル境界におけるマシン状態を理解するためには、パイプラインの実行段階(E1〜E5)のみを問題にしなければならない。パイプラインの段階については、図11に示しており、さらに、表15で説明されている。
【0067】
命令のパイプライン動作は、表16に示すような7種類に分類できる。また、各命令タイプに対する遅延スロットの一覧が、第2列に示されている。
【0068】
命令の実行は、遅延スロット(表16)により定義することができる。遅延スロットとは、命令の結果が得られない命令の第1実行段階(E1)の後に発生するCPUサイクルのことである。例えば、乗算命令は1遅延スロットを有しているが、このことは、別の命令が乗算命令の結果を使用できるまでに1CPUサイクルあることを意味している。
単一サイクル命令は、パイプラインのE1段階中に実行する。オペランドが読み取られた後、演算が行われ、その結果がレジスタに書き込まれるが、これはすべてE1の間に行われる。この命令には遅延スロットが全くない。
【0069】
乗算命令は、パイプラインのE2段階中に演算を完了する。E1段階では、オペランドが読み取られ、乗算が開始する。E2段階では、乗算を終了し、その結果が宛先(dst)レジスタに書き込まれる。乗算命令には、1遅延スロットがある。
ロード命令の場合、2つの結果、すなわち、メモリからロードされたデータとアドレスポインタ修飾が得られる。
データロードでは、パイプラインのE5段階中に演算を完了させる。E1段階では、データのアドレスが計算さ、E2段階では、データアドレスがデータメモリに送信される。E3段階では、メモリへの読込みが行われ、E4段階では、CPUコア境界でデータが受信される。最後に、E5段階では、レジスタにデータがロードされる。E5までにレジスタにデータが書き込まれないことから、これらの命令は、4遅延スロットを有している。E1でポインタ結果がレジスタに書き込まれることから、アドレス修飾に関する遅延スロットはない。
パイプラインのE3段階中に、ストア命令は演算を完了する。E1段階では、データのアドレスが計算され、E2段階では、データアドレスがデータメモリに送信される。また、E3段階では、メモリへの書込みが行われる。さらに、パイプラインのE1段階では、アドレス修飾が行われる。パイプラインのE3段階においてストア命令はその実行を終了するが、遅延スロットはなく、次の規則(i=サイクル)に従う。
1)ストア命令の前にロード命令が実行されると、旧値がロードされ、新規値が記憶される。
i LDW
i+1 STW
2)ロード命令の前にストア命令が実行されると、新規値がストアされ、新規値がロードされる。
i STW
i+1 LDW
3)各命令が並列である場合、旧値はロードされ、新規値はストアされる。
i STW
i+1 || LDW
【0070】
分岐命令は、パイプラインの最初のE1段階に入ると、そのE1段階中に、5遅延スロット/CPUサイクルを実行する。図12に、この分岐命令の各段階を示している。図13は、クロックサイクルとフェッチパケットに基づくパイプラインの演算である。図13では、分岐命令がフェッチパケットnにある場合、その分岐命令のE1段階は、n+6のPG段階となる。サイクル7では、nはE1段階にあり、n+6はPG段階にある。分岐先がサイクル7のPG段階にあることから、サイクル13になるまで、n+6がE1になることはない。このため、分岐命令が実行に6サイクルかかったり、あるいは5遅延スロットあるように見えるのである。
図14では、3つの実行パケットが含まれているフェッチパケットnと、その後に続く6つのフェッチパケット(n+1〜n+6)が示されており、それぞれ1実行パケット(8個の並列命令を含む)を有している。第1のフェッチパケット(n)は、サイクル1〜4の間にプログラムフェッチ段階を通過する。このサイクル中に、後続のフェッチパケットの各々に対してプログラムフェッチ段階が開始される。
サイクル5、すなわちプログラムディスパッチ(DP)段階では、CPUは、pビットをスキャンして、フェッチパケットnに3つの実行パケット(k〜k+2)あることを検出する。これにより、パイプラインは強制的に機能停止され、サイクル6および7において、DP段階での実行パケットk+1およびk+2が開始できるようになる。実行パケットk+2が、DC段階(サイクル8)に移る準備ができたら、パイプラインの機能停止は解除される。
フェッチパケットn+1〜n+4はすべて停止されているので、CPUには、フェッチパケットnにおいて、3つの実行パケット(k〜k+2)の各々に対してDP段階を実行する時間が生じる。フェッチパケットn+5も、サイクル6とサイクル7で停止されており、サイクル8でパイプライン機能停止が解除されるまでは、PG段階に入ることができない。このパイプライン処理は、フェッチパケットn+5とn+6に示すように、複数の実行パケットを備えた別のフェッチパケットがDP段階に入るまで、あるいは割込みが生じるまで、継続する。
【0071】
パイプラインの切断は、メモリの機能停止、多重サイクルNOP、STP命令によって発生する。メモリの停止中は、CPUサイクル(通常、1クロックサイクル中に発生する)が、2以上のサイクルで発生する。このような余分なクロックサイクル中は、全パイプライン段階が停止する。プログラムの実行結果は、このような機能停止があってもなくても変わらない。メモリ停止によって、実行が終了するまでにかかるクロックサイクル数は増加する。
NOPカウント命令は、NOPのカウントサイクルを提供する働きをする。カウントが2以上であれば、NOPは、多重サイクルNOPである。例えば、NOP2は、含まれている実行パケット中の命令と、前出するすべての実行命令の余分な遅延スロットに充てんされる。このため、NOP2がMPY命令と並列であれば、次の実行パケット中の命令が、MPYの結果を使用を目的に取得することができる。多重サイクルNOPがまだNOPをパイプラインにディスパッチしている間に分岐の遅延スロットが完了すれば、その分岐は、多重サイクルNOPをオーバライドして、5遅延スロット後に、分岐先が実行を開始する。
STPは、1)強制的にプログラムフェッチを行うような並列分岐命令を含んでいる可能性が全くない、2)第2遅延スロットに多重サイクルNOPがあるか、または、第3および第4遅延スロットの実行パケットが同じフェッチパケットにあるために、プログラムフェッチが一切起きていない、という両方の条件を満たしている場合に限り、用いることができる高度な命令である。
メモリシステム
DSPプログラムメモリシステム23は、64Kバイトのメモリとメモリ/キャッシュコントローラを具備している。プログラムメモリは、64Kバイト内部プログラムメモリとして、あるいは、直接マッププログラムキャッシュとして、動作することが可能である。プログラムメモリシステムが動作する4つのモード、プログラムメモリモード、キャッシュイネーブルモード、キャッシュフリーズモード、キャッシュバイパスモードがある。プログラムメモリが動作するモードは、CSR(図4)のプログラムキャッシュコントロール(PCC)フィールド(ビット5〜7)によって決まる。表17は、プログラムメモリシステム23を構成する各種PCC値の一覧である。
【0072】
CSRのPCCフィールドに値000bがある場合、プログラムメモリは、有効なプログラムメモリ空間としてマップされる。このプログラムメモリマップを形成するアドレスは、装置上のMAP_BOOTピンの値によって異なる。
エミュレーション機能
本発明の1態様として、ソフトウェアプログラムの開発、または正確な演算を目的としたDSP1テストを行うために、DSP1の演算をエミュレーションする新規改良技術があげられる。エミュレーションに関係するDSP1の各部分について、以下に詳しく説明している。
【0073】
再び図1について説明すると、CPU10は、エミュレーション回路50と割込み回路90を備えており、テストポートによる実行およびスキャン制御、分析サポート、およびリアルタイムエミュレーションサポートなどのエミュレーション機能をサポートする。各機能については、後で詳しく説明する。
テストポートによる実行およびスキャン制御には、CPU10の停止も含まれている。CPU停止サポートは、ソフトウェアブレークポイント(SWBP)または分析イベントに基づくRDYベースのCPU停止により行われる。
分析サポートには、単一の正確な一致が得られるハードウェアプログラムアドレスブレークポイント(PABP)、メガモジュールテストアクセスポート(MTAP)からのEMU0INまたはEMU1IN入力か、または、プログラムアドレスブレークポイントによってトリガ可能な分析イベント、および分析イベントをトリガできる特殊エミュレーションイベント入力(SEE)などがある。
リアルタイムエミュレーションサポートには、メッセージ伝達に加え、ソフトウェア割込み、分析イベント、または次のサイクル境界に基づくCPU分析割込み(AINT)などがある。
次に、図15を参照すると、エミュレーション回路50が、さらに詳細に示されている。メガモジュールテストアクセスポート(MTAP)305は、CPUテストポート(CPUTP)310、分析テストポート(ATP)320、およびメガモジュールテストポート(ATP)330に接続されている。また、3つの領域、CPU領域10、分析領域321、およびメガモジュール領域331が、各テストポートにより相互接続されている。MTAP305は、メガモジュール内で、各種領域に対してスキャン制御および実行制御を行う。また、各テストポートは、MTAPに対して各領域のインタフェースとして機能する。また、テストポートは、メガモジュールの機能的およびスキャンクロックのクロック切換機能を生成し、分散し、かつ実行する。MTAP305は、XDS51とCPU実時間解析およびメッセージ伝達機構との間のインタフェースとしての役割を果たしている。本発明の1態様によれば、MTAP305は、メモリのダウンロード/アップロードを迅速化するために、データのストリーム化を行う。また、MTAP305は、イベントカウンタにより性能分析をサポートし、エミュレーションとテストの両方に対する実行およびクロッキングのテストポート制御をサポートする。次に、MTAP305、テストポート310、320、330を収容しているエミュレーション回路50の動作と設計について詳しく説明する。
【0074】
特殊エミュレーション(SE)装置は、MTAP305と、全体としてのメガモジュール300にインタフェースしており、デバッグ、トレース、およびブレークポイントの能力を向上させる働きをする。特殊エミュレーション装置(SE)は、SE分析(SEA)領域回路のための第4領域を有しており、この領域は、メガモジュールの外部にある。さらに、MTAPを介したメガモジュールへのSEA領域のインタフェースについても、以下に詳しく説明している。SEA領域には、データおよびアドレス上のハードウェアデータブレークポイント、実行を目的にディスパッチされた実行パケットのアドレス上のハードウェアプログラムブレークポイント、実行されるプログラムアドレス、プログラム、およびデータメモリアクセスのトレース、採用された割込み、機能単位使用、および分岐、イベントカウンタならびにシーケンサがある。
図16は、メガモジュールリセット動作と関連する信号を示すタイムチャートである。この工程を通じて、イナクティブRDYが、依然としてCPUを停止できる、すなわち、CPUサイクルが複数のクロックサイクルにわたることが可能な点に注意されたい。発生するイベントの並びは、次の通りである。
【0075】
1. クロックn+2: NRESETがローになってから最初のクロックサイクルである。CPUテストポートがFUNC状態であれば、次の動作が発生する。
A) すべての内部トライステートバスは、トライステート方式である。各バスは、サイクル6になるまで、トライステート状態のままである。
B) LOGXOFFDが表明され、すべての非プログラムメモリシステム装置が、メガモジュールストローブ(DBS、PWRDN、JACK)を無視することを示す。
C) LOGXOFFPが表明され、プログラムメモリが、プログラムメモリストローブ(PAS、PDS、PWS)を無視することを示す。
2. サイクルn+2: CPUテストポートがFUNC状態であれば、DPおよびE1パイプライン段階のすべての命令が無効になる。
3. サイクル1: 不定数のクロックサイクル後、NRESETの立上りとともに、リセット割込み処理が発生する。
4. サイクル6: JACKがアクティブになると、PWS、PAS、PDSを除き、すべてのレジスタと境界信号がリセット値に設定される。LOGXOFFDは、非表明である。
5. サイクル7: 第1PASがアクティブなので、LOGXOFFPは、非表明である。
割込み動作
CPUは、通常のデジタルシグナルプロセッサ(DSP)の動作として14の割込みを行う。これらの割込みは、リセット(RESET)、マスク不可能割込み(NMI)及び割込み4〜15である。これらの割込みは、CPU境界上のリセット信号、NMI信号及びINT4〜INT15信号に対応する。これらの信号を、ある実施形態では、装置のピンに直接供給し、チップ上の周辺装置に供給し、又は、チップが応答動作をしないように供給して不許可動作に設定することが出来る。一般的にリセット及びマスク不可能割込みを、装置上のピンを通じて行う。
これら割込みのプライオリティを表18に示す。割込みピン上のロー−ハイのレベル遷移によって、割込標識レジスタ(IFR)内で割込みを待機状態に設定する。割込みが適切にイネーブルされると、CPUは、割込み処理及び割込みサービスルーチンに対するプログラムフローの再処理を開始する。
【0076】
CPUはリセット処理を中止することが出来ない。リセットがロー−ハイの遷移を行った場合に、そのリセット処理を開始する。他の割込みと異なり、リセット信号にアクティブローのラベルを付与する。リセットのローレベルは、全てのCPU処理を停止すると共に、全てのレジスタを、それらのリセットレベルに戻す効果を有する。
マスク不可能割込み(NMI)は、2番目に高いプライオリティの割込みとなる。二つの状態、いわゆる、分岐が取り出されているか否かにかかわらずCPUが分岐の遅延スロットにある状態及び割込みの許可レジスタ(IER)のNMI−許可ビット(NMIE)が0である状態では、NMIが割込みの開始を中止する。NMIEは、プロセッサ初期化の割込みを中止するリセット及び他のNMIによってNMIの再割込みを中止するNMI処理に応答してクリアされる。NMIは、NMIEをセットすることにより、又は、B NRP命令の実行を終了することによって再びイネーブルに設定される。
NMIEが0の場合、INT4〜INT15が不許可に設定される。NMI処理中、以前のプログラムを実行し続けるリターンポインタは、NMIリターンポインタレジスタ(NRP)に記憶される。したがって、B NRP命令は、NMIを供給した後に以前のプログラムにリターンする。表19は、NMIからのリターン方法を示している。
【0077】
以下の状態によって、INT4〜INT15が割込みを開始するのを中止することが出来る。CPUは分岐の遅延スロットにある処理コードにあり、これは誤り状態が原因で実行を終了しない状態分岐を含む状態;割込みイネーブルレジスタ(IER)のNMIEビットが0である状態;IERの対応する割込みイネーブル(IE)ビットが0である状態;制御状態レジスタ(CSR)の全割込みイネーブルビット(GIE)が零である状態である。
割込み処理中では、以前のプログラムを実行し続けるリターンポインタを、割込みリターンポインタレジスタ(IRP)に記憶する。したがって、B IRP割込みは、割込みを行った後にプログラムフローにリターンする。表20は、マスク可能割込みからのリターン方法を示している。
IACK信号及びINUM信号は、割込みが発生すると、装置11の外部のハードウェアに警報を送出する。IACK信号は、CPUが割込み処理を開始したことを示す。INUMx信号(INUM0〜INUM3)は、処理を開始する割込み数(IFRのビット位置)を示す。
表21は、装置の7個の割込み制御レジスタをリストとして示している。
【0078】
IFR及びISRはレジスタアドレスを共有する。IFRを読み出すと共にISRを書き込むことが出来る。他のレジスタは独自のアドレスを有する。
割込みイネーブルレジスタ(IER)の対応するビットがセットされた際の割込みは、この割込み処理をトリガすることが出来る。リセットに対するビット0は書き込み不可能であり、常に1として読み出される。リセット割込みは常にイネーブルとなる。なお、リセットをディスエーブルにすることは出来ない。ビットIE4〜IE15を、対応する割込みをイネーブルにし、又は、ディスエーブルにする1又は0として、それぞれ書き込むことが出来る。IERを図17Bに示す。
【0079】
NMIEは、クリアの場合、全ての非リセット割込みをディスエーブルにして、NMIの割込みを中止する。NMIイネーブル(NMIE)は、0の書込みによって影響する処理が実行されず、1の書込みによってセットされる。NMIEは、イネーブルとなるまでプロセッサの任意の割込みを中止するリセットに応答して0に初期化される。リセット後、NMIEをセットしてNMIをイネーブルにすると共に、INT15〜INT4をGIE及び適切なIEビットによってイネーブルにすることが出来る。NMIEを手動でクリアすることは出来ない。NMIEは、NMIの発生によってクリアされる。このクリアが行われると、NMIEは、B NRP命令を終了し、又は、NMIEに1を書き込むことによってのみセットされる。
割込み標識レジスタ(IFR)(図17A参照)は、INT4〜INT15及びNMIの状態を有する。表22は、割込み標識及びそれらの割込み標識に対応する割込みをリストとして作成する。割込み状態をチェックしたい場合、MVC命令を用いてIFRを読み出す。
【0080】
表22.割込み標識ビット
割込み 説明
NMIF NMIによるセット
IF15〜IF4 各割込み(INT15〜INT4)によるセット
割込みセットレジスタ(ISR)及び割込みクリアレジスタ(ICR)(図17C及び図17D参照)によって、割込みをIFRにおいて手動でセットし又はクリアすることが出来る。ISRのIS4〜IS15に1を書き込むことによって、対応する割込み標識がセットされる。同様に、ICRのビットに1を書き込むことによって、対応する割込み標識をクリアする。ISR又はICRの任意のビットへの0の書込みには何ら影響を及ぼさない。割込み入力は、プライオリティを有し、ICRへの任意の書込みを無視する。リセット又はNMIをセットし又はクリアすることが出来ない。(MVC命令による)ISR又はICRへの任意の書込みは、実質的には1遅延スロットを有する。この理由は、結果をISR又はICRへの書込み後2サイクルまでIFRで(MVC命令によって)読み出すことが出来ないためである。
これらがCPU制御レジスタを形成しなくても、割込み待機ビットは、全てのCPU割込みの待機状態を保持する。RSTP,NMIP,AIP,MSGIP及びIP4〜IP15は、リセット,NMI,AINT,MSGINT及びINT4〜INT15にそれぞれ対応する。IPビットは、割込みを認識した際にセットされる。ユーザに対して直接明らかでない、これらのビットは、メガモジュール領域331に存在し、クロックごとに更新される(すなわち、イナクティブRDYによってストールされない)。ユーザは、サイクルごとにIPの値を更新するIFRによって、IPビットの状態を観察することが出来る。ユーザは、割込みセットレジスタ(ISR)及び割込みクリアレジスタ(ICR)の書込みによってIPビットの状態に悪影響を及ぼすおそれがある。これらの変化は、IFRに対するIPビットの次の更新で生じる。IPビットは、リセットで全てクリアされる。このセクションで説明したCPUレジスタは全て、CPU領域に存在し、サイクルごとに更新される(すなわち、イナクティブRDYによってストールされない)。
以下のビットは、CPU10の通常の動作中のソフトウェアプログラムによってユーザが、これらビットを利用できないという意味で「保持される」が、これらビットは、エミュレーション及びテスト中に利用することが出来る。
IRFR:IFRのビット2及び3は、分析割込み(AINT)及びメッセージ割込み(MSGINT)に対してそれぞれ保持される。
IER:IERのビット2及び3は、分析割込みイネーブル(AIE)及びメッセージ割込みイネーブル(MSGIE)に対してそれぞれ保持される。
ISR:ISRのビット2及び3は、分析割り込みセット(AIS)及びメッセージ割込みセット(MSGIS)に対してそれぞれ保持される。これらビットは、EMU_MVCENが走査によってセットされる場合、関連のIPビットをセットするためにのみ用いることが出来る。
ICR:ICRのビット2及び3は、分析割込みクリア(AIC)及びメッセージ割込みクリア(MSGIC)に対してそれぞれ保持される。これらビットは、EMU_MVCENが走査によってセットされる場合、関連のIPビットをセットするためにのみ用いることが出来る。
【0081】
分析割込みを、所定のタイプのイベントによってトリガすることが出来る。所定のイベントは停止に対するトリガを行う。発生の停止に対して、CPUテストポートをCNTL状態にする必要がある。例外は、CPUテストポートからの外部停止要求が実行状態に関係なく生じることである。
以下のような所定のイベントは、停止又は分析割込みに対するトリガを行うことが出来る。
1)アクティブ状態の特殊エミュレーションイベント(SEE)入力。
2)オンチップアドレスブレークポイント(PABP)。
3)イナクティブ状態からアクティブ状態に遷移するEMU0IN及びEMU1IN入力。
4)浮動小数点リソース衝突(FPXイベント)。
以下のような他の所定のイベントは、分析割込みのみに対するトリガを行うことが出来る。
5)ソフトウェア割込みSWI命令。
6)次のサイクル境界(CYCイベント)。
7)MTAPからのXAINT信号。
以下のような他の所定のイベントは、停止のみに対するトリガを行うことが出来る。
8)SWBPデコード。これは、実行パケットの第1命令のクレッグフィールドがSWBPコード(0001)を含むことを表す。
9)CPUテストポートからの外部停止要求。
イベントは、イネーブルされた場合に、プロセッサの停止された状態に関係なく認識されるだけ十分長くアクティブである必要がある。しかしながら、これらイベントは、複数のイベントを発生させるだけ十分長くアクティブになることが出来ない。エッジ検知回路を、イベント長の時間制限をエミュレートするために用いる。
【0082】
既に説明したイベントの多数は、分析イベントとして分類され、CPU内のSUSPEND信号(表29)がアクティブである場合には無視される。しかしながら、以下のイベントは、分析イベントとして分類されず、SUSPEND:SWBP,SWI及びテストポートから要求された外部停止によって悪影響を及ぼされない。
SUSPEND信号は、4タームのORによって駆動される。
1.CPU_DONEアクティブ
2.ECTLビットアクティブ(表28)
3.PAUS,SDAT又はSCTL状態であるCPUテストポート(表33)。
4.分析制御レジスタのAINTSUSP信号(表34)。
図18を参照する。これは分析割込みの検出を表すタイミング図を示している。分析割込み(AINT)を7ソース中の一つによって発生させることが出来る。
1.CPU信号に対するEMU0IN MTAP。
2.CPU信号に対するEMU1IN MTAP。
3.MTAPからのXAINT信号。割込みを、CPUテストポートがCTRLにあるときのみ発生させる。
4.特殊エミュレーションイベント(SEE)メガモジュール入力。
5.オンメガモジュールプログラムアドレスブレークポイント(PABP)。
6.ソフトウェア割込み命令(SWI)。SWBP,SWIと異なり、CNTL状態であるべきCPUテストポートを要求しない。STP命令は、SWIをセットするためのプログラムメモリへの書込みに利用できる。
7.実行中の次のサイクル境界への交差(CYC)。B ARPのターゲット実行パケットの後のイネーブルでの第1サイクル境界が終了すると、E1は、CYCイベントをトリガし、AIPをセットする。これは、モニタによる割込みに基づく単一ステッピングに対して用いられる。
【0083】
これらイベント中の一つ以上は、分析制御レジスタ(図31A)によるイネーブルを要求する。AIP(したがって、IFR(図17A)のIFRのAIFビット)は、割込み処理によって、すなわち、ICR(図17D)のビット2への1の書込みによってのみクリアされる。これら割込みは、他の全ての割込みと同様に、分岐の遅延スロットにある間に発生することが出来ない。認識は、分岐処理が終了するまで延期され、図18は、これらイベントの検出を示す。AIPは、表示された割込みがAIE及びPRI(及びGIE,IE,NMIE)によって必要に応じてイネーブルされる場合のみセットされる。
分析制御レジスタ(図31A)のビットは、割込みのマスク可能性及びプライオリティを変化させることが出来る。PRI,AINTをセットすることによって、最高プライオリティの第2のマスク不可能割込み(PRI=1)又は2番目に低いプライオリティのマスク可能な割込み(PRI=0)を処理することが出来る。あるシステムにおいて、分析は出来るだけ迅速にイベントに応答する必要がある。これらにおいて、マスク不可能モードを用いる必要がある。他のシステムにおいて、プログラムフローが出来るだけ混乱しないようにする。この場合、マスク可能な、ロープライオリティモードを用いる必要がある。
PRI=1の場合、AIEは全ての非リセット割込みをディスエーブルにする。また、AINTは、GIE又はNMIEによって影響を及ぼされない。NMIEは、全ての非リセット/非AINT割込みをディスエーブルして、リセット又はAINTによる場合を除くNMIの割込みを中止する。HPIENTで反映すべき割込みに対して、(それがAINTでない場合)PRI=1のときにAIEによってイネーブルにする必要がない。
PRI=1のときに、処理を必要とする割込みの検出の際の以下の相違する制限が課される。
1.GIE及びNMIEを、行うべきAINTに対してセットする必要がない。
2.リセットを除く全ての割込みに対して、AIEをセットする必要がある(AIE=1)。
PRI=1の場合に、以下の相違する動作が割込み処理中に発生する。
1.AINT中、PGIEはGIEにセットされず、GIEはクリアされない。
2.AIEはクリアされる。
【0084】
PRIの値に関係なく、AINTに対するリターンアドレスは、常に、図32Aに示すように、分析割込みリターンポインタレジスタ(ARP)にセーブされる。NRP及びIRP(表20参照)からの個別のARPは、ACRでPRI=1のように、その必要性がある。AINTは、NMIを割り込み又は他の割込みを行い、IRPの値を上書きすることが出来る。
図19A及び19Bは、割込みSWI及びBARPにそれぞれ関連する二つの分析割込みを示す。表23及び24は、これら二つの命令を示す。表25は、AINTコードシーケンスからのリターンを示す。
2.リセットを除く全ての割込みに対して、AIEをセットする必要がある(AIE=1)。
PRI=1の場合に、以下の相違する動作が割込み処理中に発生する。
1.AINT中、PGIEはGIEにセットされず、GIEはクリアされない。
2.AIEはクリアされる。
PRIの値に関係なく、AINTに対するリターンアドレスは、常に、図32Aに示すように、分析割込みリターンポインタレジスタ(ARP)にセーブされる。NRP及びIRP(表20参照)からの個別のARPは、ACRでPRI=1のように、その必要性がある。AINTは、NMIを割り込み又は他の割込みを行い、IRPの値を上書きすることが出来る。
図19A及び19Bは、割込みSWI及びBARPにそれぞれ関連する二つの分析割込みを示す。表23及び24は、これら二つの命令を示す。表25は、AINTコードシーケンスからのリターンを示す。
【0085】
分析割込みが処理を開始すると、ACR信号のAINTSUSPビットをセットして、任意の将来の分析事象割込み又は停止の認識をディスエーブルする(すなわち、AIPはセットされない)。AINTSUSPは、ユーザ書込みによってのみクリアされる。
再び図18を参照して、他の割込みが存在する際の分析割込みの動作を説明する。以前の実行パケットが、そのDPフェーズで発生する(全ての必要な方法でイネーブルされた)割込みを有する場合、この割込みは延期され、AINTが行われる。したがって、n+4及びn+5が取り消される。n+5へのリターンに応じて、AIPに基づくプログラムアドレスを発生させた任意の状態が再度発生する。
【0086】
次の実行パケットn+6が、そのDPフェーズで発生する(全ての必要な方法でイネーブルされた)割込みを有する場合、AINTが優先して行われる。その理由は、それが次の割込みの前に発生するからである。したがって、分析割込みSWI,PABP,SEE及びAINTに基づくCYCに基づいたプログラムアドレスに対して何ら特別の処理を必要としない。
テストポート
再び図15を参照すると、各領域10,321及び331はそれぞれ、ポート310,320及び330を通じてMTAP305にインタフェースする。MTAPは、各領域に対して一つずつ四つのテストポートをサポートアップする。しかしながら、SEA領域に対するテストポートは、メガモジュールに含まれない。テストポートを、領域クロック発生及び実行並びに走査制御を行う一般的なテスト/エミュレーションインタフェースとする。実行制御によって、領域のエミュレーション又はテストソフトウェア直接クロック間制御を行うことが出来る。テストポートインタフェースに対するMTAPを、表26及び表27に更に詳細に示す。SEA領域とMTAPとの間のインタフェースは、同様であり、これを、図34及び図43を参照して詳細に説明する。
【0087】
4 この場合、信号に幾分冗長がある。例えば、SCTL(又はSDAT)経路のSHIFT_DRを、主張した(又は主張しない)C0ビットによって又はSCTL_SEL(若しくはSDAT_SEL)信号によって決定することが出来る。しかしながら、PAUSで生じるSCTLUPDATE_DR又はCAPTURE_DRに対して、SCTL_SELを、制限するものとして用いる必要がある。この理由は、UPDATE_DR信号及びCAPTURE_DR信号は、関連の動作がない場合でもテストポートがPAUSにある間SDATから主張されているからである。また、C0は、SDAT SHIFT_DR動作のSDAT SELに比べて制限するものとして実行することが出来る。したがって、SDAT_SELは、これらの信号を主張する際の制限のためには必要とされない。
【0088】
【0089】
表28,29,30,31及び32並びに図20及び21は、後に詳細に説明するメガモジュール300のエミュレーション及びテストに関連する種々の信号及び制御ビットを説明し、かつ、規定する。表28は、エミュレーション制御に対して用いられると共に走査チェーン301a〜dを用いて転送される状態情報を提供するために用いられるCPU領域ビットを規定する。表29は、メガモジュール境界301の両端間で送信される信号を規定する。図20は、MTAP305とCPU領域10との間の相互接続を説明する。表30は、メガモジュール境界301も駆動する図20に図示した信号を規定する。表31は、図20に示した残りの信号を規定する。図21は、MTAP305とメガモジュール領域331との間の相互接続を示す。表32は、図21に図示した信号を規定する。
表28〜32で用いられる種々の用語を以下のように規定する。
ANNUL:実行パケットが特定の経路(パイプライン)段中に取り消される場合、それは、任意のメガモジュール境界ストローブ又は状態をアクティブにセットせずに、ユーザビジブル又はエミュレーションビジブル状態に対して任意の値を書き込む。アドレス及びデータは、ストローブによって制限される必要がある状態信号のようにストローブによって制限されると、状態を変化させることが出来る。非制限状態をイナクティブにセットする必要がある。取消によって、命令が将来の経路段で取り消される。
分析制御レジスタ(ACR):図31Aに示す。
分析データレジスタ(ADR):図31Bに示す。
ACRのPRI割込みプライオリティ制御ビット:表34をもって説明する。
【0090】
【0091】
【0092】
【0093】
【0094】
図22は、テストポートが存在することが出来る種々の状態の状態図である。MTAP信号C0,C1,及びCe並びにLOCK信号(表26)のセットは、表33で説明すると共に図22に図示したようにテストポートの状態を決定する。各テストポート310,320及び330は、MTAP(図15)からの互いに依存しないロック信号を有する。アクティブロック信号によって、現在の状態を、ロック信号がイナクティブになるまでテストポート内にラッチする。テストポートがロックされない場合に、テストポートバスがテストポートの状態を決定する。テストポートがロックされた際に、信号がテストポートバス上で変化し、クロック切換えが無視される。領域がロックされる場合、その走査モジュールは、チェーンに加えられれず、テストポートの共有シフトレジスタ(SSR)ビットを通じてバイパスされる。LOCK信号は、装置の現在のクロック発生モードをロックする。
【0095】
XDS51上のソウトウェア動作は、ロックインさせるコードとは相違するテストポートに供給されるMTAPコードにテストポートがロックされない場合にテストポートが適切に遷移することを保証する。FUNC,CNTL又はHALTから走査状態(SCLT又はSDAT)に切り換えられると、PAUSは、図22にに示すように遷移される。MTAPによって、PAUS状態を、以降で説明するようにクロック切換えが終了するまで喚起させることが出来ないようにする。
テストポートがPAUSでロックされない場合、エミュレーションソフトウェアは、PAUSでテストポートをロックしないようにする必要がある。それが他の任意の状態でロックされていない場合、結果的に得られるクロック切換えに対して突然の障害を生じる。
再び図15を参照すると、各テストポートは、領域バスイネーブル(DBENB)信号を、その領域走査経路に供給する。イナクティブの場合、DBENBは、全ての領域境界信号がイナクティブになるようにし、全ての領域3状態をHI−Z状態にする。エミュレーションモードにおいて、テストポートがFUNC,CNTL又はHALTにある場合、DBENBをアクティブにする。テストモード(ATPG_DEBM=1)において、テストポートの最初のSSRビットは、DBENBとして作用する。このビットは、データ走査(SDAT)動作の一部として走査される。全てのモードにおいて、DBENB信号は、テストポートがSCTL,SDAT又はPAUSの際にイナクティブとなる。PAUSからFUNC又はCNTLに切り換わる場合に、MTAPは、DBENBが実行を再開する前にアクティブになると仮定するために、テストポートが少なくとも1クロックに対してHALTに入るようにする。
【0096】
【表1】
ここで、クロック切換えの動作を説明するタイミング図である図23A,23B及び23Cを参照する。PAUS状態を、UCLK_SEL,TCLK_SEL,MTAPコード,LOCK及びSHIFT_DRによって制御されるようなクロック切換えに対して用いられる。LMは、テストポートがPAUS,SDAT又はSCTLにあるときにターンオフされる。ATPG_DEVM=1の場合、LMも、HALTにあるときにシャットオフされる。3タイプのクロック切換えが可能である。
1.装置のエミュレーション制御に対する(TCLKの)走査(図23A)のためのUCLK上での機能実行からの切換え。
2.テストに対する(TCLKの)走査(図23B)のためのTCLK上での機能実行からの切換え。TCLK上での実行はテスト中に用いられる。その理由は、TCLKを、装置ピンから直接来るように保証することができ、それに対して、UCLKをcDSP設計論理によって制御することが出来るためである。
3.UCLK上の機能実行から既に説明した場合と同一の理由のテストに対するTCLK(図23C)上の機能実行への切換え。
テストポートへの入力に示した変化のシーケンスは、MTAP出力の遷移に一致する。一つの例外は、SHIFT_DRが SDAT状態又はSCTL状態の中及びSDAT状態又はSCTL状態からの遷移を同時に行うことが出来ることである。
【0097】
以下のルールに従う。
1.クロック変化は、テストポート内のラッチされたコードに基づく。
2.クロック及びテストポート状態は、LOCKビットがアクティブである場合には変化しない。
3.LSは、常にフェーズが180゜であり、これまで駆動されたクロック(SCLK又はLM)にオーバラップしない。
4.(T/U)CLKは、(T/U)CLK_SELがイネーブルされると共にテストポートがATPG_DEVM=0である場合のHALT、FUNC又はCNTLである場合にのみLM/LSを駆動する。
5.TCKLは、TCLK_SEL,SHIFT_DR及びSDAT_SELがイネーブルされると共に、LOCKがディスエーブルされる場合のみSCLK/LSを駆動する。SCTL_SELはSCLKをイネーブルしない。その理由は、SSR SRL(すなわち非領域SRL)のみが走査されるからである。
6.最後に、装置がATPGモード(ATPG_DEVM=1)にある場合、TCLKは、テストポートがFUNC又はCNTLにある際に、常時LM/LSを駆動する。これは、UCLKがローに駆動されると仮定する。
走査動作を、テストポートの内部共有シフトレジスタ(SSR)経路によって行う。この経路は、この領域内の個別の走査チェーンに対して一つのSRLから成る。SSRビットは、走査制御(SCTL)経路を更新するために、又は、領域データ(SDAT)走査経路に対するバイパスビットとして用いられる。SSR経路は、走査クロックを用いてクロックされる。その理由は、領域が機能クロックで走査する間でさえもテストポートは走査可能のままのためである。領域内のクロックは、機能クロックからSDAT及びSCTL用の走査クロック(図22)に切り換える必要がある。走査経路の詳細を、図35に対して詳細に説明する。
【0098】
制御走査動作(SCTL)は、SSR走査経路を経てモジュール走査イネーブル(MSENB)をアクセスする。MSENBは、図24に図示したように、データ走査(SDAT)経路を形成するようにイネーブルされる領域走査経路を選択する。各テストポートは、少なくとも一つのMSENBビットを含む。MSENBビットは、領域内の各走査経路に対して必要とされる。メガモジュールを有する全てのテストポートは単一スライスである。これらは、単一スライス経路及び単一MSENBビットを有する。他の単一スライスの例は、簡単のために、SCTL走査及びMSENBビットを、LOCK信号又はその等価物に置換することが出来る。MTAPがアクティブSCTL_SEL信号によって制限されたSHIFT_DRを主張する間に、MSENBデータをSSR経路で走査する。MTAPが、アクティブSCTL_SEL信号によって制限されたUPDATE_DRを主張する際に、SSRがMSENBにロードされる。MTAPが、アクティブSCTL_SEL信号によって制限されたCAPTURE_DRを主張する際に、MSENBはSSRにロードされる。機能実行中のバイパス制御走査を、テストポートをFUNC又はCNTLでロックした後に走査を実行することによって行うことが出来る。この場合、SSRビットは、走査チェーンに追加さる唯一のものである。また、テストポートは、UPDATE_DR信号及びCAPTURE_DR信号に応答しない。
データ走査動作(SDAT)は、SSR走査経路を通じた領域走査経路に対するアクセスを提供する。データ走査中、領域データは、SSR経路を通じて走査される。SSRビットは、MSENBビットとして制御されるようなバイパスである領域走査経路に対するバイパスビットとして作用する。SSR経路はSDAT状態によって選択される。データは、MTAPがSHIFT_DRを主張すると共に、テストポートがSDAT状態にある間にSSR経路で走査される。SSRに関連するMSENBがイネーブルされると、データは、領域走査経路を通じてSSRビットから走査される。MSENBビットがディスエーブルされる場合、データは、次のSSRビットに対して走査される。各領域は少なくとも一つのSDAT経路を有する。SDAT経路は、テスト及びエミュレーションに対して要求されるSRLに対するアクセスを提供する。UPDATE_DR信号及びCAPTURE_DR信号は、走査データ動作には用いられない。
【0099】
パワーダウン
パワーダウンの三つの方法は、以下のようにして集積回路1で利用される。
1.IDLE命令。IDLEは、割込みによって取り消されるまで継続的にNOPを経路に伝搬させる。クロック及びRDY動作は通常のように継続する。したがって、CPUはテストポート停止に応答したままである。
2.分析及びCPU領域のLM/LSをターンオフするPDREQ/PDACKハンドシェークの終了。マイクロプロセッサ1の設計は、変化した割込み状態に基づくメガモジュールから再度イネーブルクロックへのEIP_SET信号及びIP_SET信号を用いることが出来る。
3.CPUに対するUCLKの修正又は遮断。しかしながら、UCLKを遮断した場合、XDSは、TCLK上でメガモジュールを実行することによって制限される処理を提供する。
図15及び表34は、テストポート、パワーダウン論理及びメガモジュール境界間のパワーダウンインタフェースを詳細に示す。テストポートがイナクティブFCLK_REQ及びアクティブクロックオフ要求(OFFREQ)を受信する場合、テストポートは、クロック(LMロー及びLSハイ)を遮断すると共に、OFFACKを主張することによって、その要求を行う。OFFREQが不作動状態、又は、FLCK_REQが作動状態である場合、クロックが再度イネーブルされ、OFFACKが主張されない。パワーダウン論理は、マイクロプロセッサ1に、分析及びCPU領域を遮断する機能を付与する。第2のケースでは、EiP_SET又はIP_SET入力を、マイクロプロセッサ1が再主張クロックを使用したい信号割込み状態に対して用いることが出来る。マイクロプロセッサ1の設計は、CPUがパワーダウンする間に必要に応じて他の全ての素子を停止させるようにする。
【0100】
【0101】
メガモジュールの全てのSRLは、走査可能であり、三つのテストポート領域中の一つ又はMTAPに属する。第4のオフメガモジュール領域、SE分析領域は、MTAPによってサポートされるが、メガモジュールの一部として含まれない。各領域は、それに関連するテストポートを有する。テストポートは、特定の領域のクロックを切り換える必要がある状態で用いられる。第4領域は次の通りである。
分析領域:分析データレジスタ(ADR)
メガモジュール領域:この領域は、
1.IFR及び関連の検出ラッチを供給するIPビット
2.境界でRDYをラッチするとともに停止を制御するSRL
3.テスト用の並列シグネチャ解析(PSA)
4.MTAPからのEMU(0/1)IN信号を検出する回路
5.パワーダウン制御ビットに対するラッチ
6.消耗したCPUを発生させる回路
7.1クロックMSGSWパルスを発生させる
を有する信号走査経路を有する。
CPU領域:CPU領域は、RDYによって停止された全てのCPU SRLを有する単一走査経路からなる。
SE分析(SEA)領域:特殊エミュレーション装置(SE)は、SE論理に対する第4の領域を有し、これは、メガモジュールの外側にある。
CPUテストポート停止制御
このセクションでは、エミュレーションに対するCPU領域停止について説明する。エミュレーションモード(EMU_DEVM=1)において、CPUは、サイクル境界での実行を停止する。テストモード(ATPG_DEVM=1)において、CPUはクロック境界での実行を停止する。このセクションの図は、図示するために2サイクルのオフメガモジュールRDYに基づく停止を示す。表35は、CPU領域と停止をサポートするCPUテストポートとの間の信号を規定する。
【0102】
図25は、既に説明したようなエミュレーションに対する停止の相違するケースを説明するタイミング図である。この説明はテストポートが停止状態になることを示すが、他の実施の形態に対して、テストポートをPAUS状態の代わりにする場合、その結果は同一である。PAUSは、HALと同様にERDY_DC,ERDY_E1及びCPU_DONE信号に影響を及ぼす。エミュレーション停止は、以下のケースに応じて発生する。
ケース1.EMU(0/1)入力のアクティブ遷移。EMU(0/1)信号は1クロック長パルスを発生させる。したがって、これら信号は、(多分サイクルの中間の)メガモジュール領域で検出され、その幅は図示したようにサイクルの終了まで伸長される。したがって、それがイナクティブRDY中に応答する必要があるため、メガモジュール領域の論理はこれを達成する。
ケース2.DPフェーズ中に検出されるプログラムアドレスブレークポイント。
ケース3.DPフェーズ中にデコードされたSWBP。一度、経路は、命令のE1フェーズ中に停止される。経路は、SWBP_DEC領域が走査によってクリアされるまで進行しない。
ケース4.外部でのPCDPのプログラムアドレスブレークポイント整合に基づく特殊エミュレーションイベント(SEE)。これは、DPフェーズ中に内部で見られる。他の状態が発生することができ、特殊エミュレーション論理に依存する停止に基づくSEEが実現される。しかしながら、プログラムアドレスブレークポイントが示される。その理由は、最も厳密なタイミング要求を有するからである。
ケース5.浮動小数点リソース衝突。
ケース6.DPフェーズ中のCNTLからHALTまでのテストポート遷移。
EMU(0/1)INイベントのように、これは、DPサイクルの中間でも生じるおそれがある。これらイベント中の一つに基づいて、図25に示すように、以下の動作が発生する。
【0103】
ERDY_DC信号は、全DCフェーズ中外部でローにセットされる。
ERDY_E1信号は、E1フェーズの最初で開始するように外部でローにセットされる。
EMURDYは、関連のE1の最初でセットされる。このセットではCPUを停止させるCPU_RDY信号を供給する。
一度、全てのRDY(RDY1〜RDY4入力)が内部でアクティブになると、CPU_DONEを主張する。
CPU_DONEを識別した後、MTAPがCPUテストポートをCNTLからHALTに移動させる。
XDSは、MTAPを通じて、全ての必要な走査を実行する。
MTAPは、テストポートをCNTLまで戻して、CPUが経路フェーズを終了できるようにする。CPU_DONE及びERDY_E1はイナクティブになる。
EMURDYはイナクティブになる。
MTAPが1クロックのみに対してCNTLを発生する場合、メガモジュールを単一経路フェーズにステップさせることが出来る。
図26は、外部メモリ準備信号ERDYを形成する回路を示す図である。外部メモリシステムは、互いの停止を認識するように相互のRDYを追跡する必要がある。同様に、ERDY_DC信号及びERDY_E1信号を、エミュレーション停止に認識すべき外部メモリシステムによって用いることが出来る。CPUは、エミュレーション停止前に(少なくとも2クロックで)中止を警告する内部の二つのサイクルを有する。これによってERDY_DC信号及びERDY_E1信号を発生することが出来る。
【0104】
図27は、停止、割込み及びリセットの相互作用を説明するためのタイミング図である。図27において、実行パケットn+5がDC段でイネーブルになった際に中止の割込みが発生したと仮定する。n+5がDPで検出した停止の場合に、その停止はプライオリティであり、割込みを発生しない。このようにして、停止は(リセットを含む)割込みを遮断することが出来る。しかしながら、割込み標識はセットし続ける。割込み及びリセットも走査中延期される。その理由は、EMURDYは、経路を停止することによって割込み応答を延期するためである。
停止の副次的な影響は、経路を通じた関連の実行パケットの進行に依存する。したがって、複数サイクルNOR又はIDLEに続く実行パケットに出会うと、そのDP,ERDY_DC及びEMURDYは、実行パケットがDCに入るまで応答しない。同様に、ERDY_E1及びCPU_DONEは、実行パケットがE1入るまで応答しない。
CPUのテストポートが、割込み処理中にCPUテストポート要求されたエミュレーション停止に応答してCNTLからHALTに遷移する場合、CPU_DONEは、割込みサービスフェッチパケット(ISFP)がE1に到達する(図27)までアクティブに設定されない。
図28は、テストポートによって要求されるテスト停止を示すタイミング図である。テストモード(ATPG_DEVM=1)の際に、CPUはCPUポートに要求されたテスト停止に応答するCNTLからHALTに遷移するテストポートに対応して直ちに停止する。これは、割込み処理の存在に関係なく同様に動作する。
エミュレーション経路制御
再び種々のエミュレーション制御及び状態ビットを要約する表28を参照して、ここで以下のエミュレーションビット:EPDN,EPUP,ECTL及びEUPLについて詳細に説明する。エミュレーションパイプダウン(EPDN)ビットは、以下のような結果となるエミュレーション停止を中止する。
ディスエーブルされた別のフェッチ:PASはディスエーブルになる。したがって、これ以後におけるプログラムフェッチは開始されない。しかしながら、以前に要求されたフェッチは、終了を許容すると共に、プログラムフェッチ回路10aに配置されたプログラムデータ入力バッファPDATA_Iにロードするように許容される
【0105】
まだE1で中止されない実行パケット:実行パケットがE1に入る前に中止される。その後E2に入る任意の実行パケットを、XDSによってサイクル的に終了させることが出来る。ANNULビット及びANNUL_ASUビットの両方を、動作を停止させるために0に走査する必要がある。
ディスエーブルされた割込み:リセットを含む全ての割込みの実行はディスエーブルされる。ペンディングビットをセットし続ける。
エミュレーションパイプアップ(EPUP)ビットは、エミュレーション再開の中止を実行する。割込みはディスエーブルされて、リセットを含む全ての割込みの実行がディスエーブルになるが、ペンディング割込みビットはセットし続けることになる。
エミュレーション制御(ECTL)ビットによって、以下のステップを実行することによってCPUのエミュレータ制御を許容する。
1)保留分析イベント:ECTLは、分析イベントの任意の将来の認識を保留する。
2)ディスエーブルされた割込み:ECTLは、リセットを含む全ての割込みをディスエーブルする。IPビットはセットのままであるが、割込みは行われない。分析イベントの保留のために、AIPをSWIによってのみセットすることが出来る。
3)ディスエーブルフェッチ:(EPDNのような)ECTLも、PRSをイナクティブに強いることによってプログラムフェッチをディスエーブルする。したがって、CPUが停止中であるとき、XDSは命令をPDATA_Iに対して走査することが出来る。PDATA_Iが複数の実行パケット(部分的に順次フェッチパケット)を有する場合、CPUは、これらを通常のように処理すると共に、終了時に最初の実行パケットに重なる必要がある。しかしながら、実行パケットは、フェッチパケット境界に交差し、かつ、重なることが出来ない。XDSは、8命令中の一つとしてSWBPを置換することによって他のエミュレーションイベントをトリガすることが出来る。
エミュレーションプログラムアップロードサポート(EUPL)ビットは、プログラムアップロードにサポートする。EUPLは、プログラムフェッチを再イネーブルし、次のフェッチパケット(すなわち、分岐がない、PFC+=8)を増分するようにPFCをセットする。しかしながら、全ての段DPはその後中断する。フェッチは、ECTLがセットされた際にも再度イネーブルにする。しかしながら、ECTLがセットされると、割込みは行われず、分析イベントは保留となる。これはプログラムアップロードに用いられる。サイクルごとに、PDATA_Iを走査して、フェッチパケット成分を取り出すことが出来る。ANNULビット及びANNUL_ASUビットの両方を0に走査して動作を中止する。
【0106】
図28は、「パイプダウン」手順と称する、パイプラインを停止すると共に、経路内の種々のレジスタ成分を状態としてセーブする手順の停止のシーケンスを説明するためのタイミング図である。終了したE1(a〜d)を有する実行パケットの命令は、終了に進行することが許容される。以下、経路停止を制御する際の動作XDS51におけるシーケンスの実行について説明する。このセーブ状態の方法において、終了したロードのデータソースの任意のユーザの変形は、再開に対して反映されない。停止を開始した後、図25を参照して説明するように、以下のステップが実行される。
1.時間350のサイクル2:走査が終了し、かつ、全てのCPU領域をセーブする状態。EPDN=1,EPUP=0,ECTL=0,EUPL=0,ANNUL=0及びANNUL_ASU=0での走査。これは、新たなフェッチを停止して割込みをディスエーブルにし、E1を終了しない実行パケット送出を中止する。
2.1クロックサイクルに対してCNTL351を適用。
3.時間352でのサイクル3。走査の終了及びDDATA_Iのセーブ。任意変形のない状態での走査。
4.1クロックサイクルに対してCNTL353を適用。
5.時間354でのサイクル4。走査の終了及びDDATA_Iのセーブ。任意変形のない状態での走査。
6.1クロックサイクルに対してCNTL355を適用。
7.時間356でのサイクル5。走査の終了及びDDATA_Iのセーブ。DPフェーズにNOPを充てんする状態で、EPDN=1,EPUP=0,ECTL=1,EUPL=0,ANNUL=0及びANNUL_ASU=0での走査。設定するECTLをSUSPENDにセットして、オンチップ及びオフチップ分析をディスエーブルにする。
8.1クロックサイクルに対してCNTL357を適用。
9.時間358でのサイクル6。走査なし。NOPが伝送路を搬送することが出来る。
10.1クロックサイクルに対してCNTL359を適用。
11.時間360でのサイクル7。セーブすべき状態のない走査の終了。EPDN=0,EPUP=0,ECTL=1,EUPL=0,ANNUL=1及びANNUL_ASU=1での走査。EPDNをクリアすることによって、DPフェーズ(IR)の成分を、伝送路の残りに供給することが出来る。フェッチ及び割込みはECTLによってディスエーブルされたままである。
【0107】
図30は、既に説明したパイプダウン手順中セーブされた種々の状態の各々を回復することによって全伝送路状態を「パイプアップ」手順で回復する方法を示すタイミング図である。この図は、制御の際にXDSによって挿入された全ての実行パケットが伝送路に流れると仮定し、伝送路の全てのフェーズにNOPを含む。この状態は、命令レジスタにNOPを充てんすると共に、伝送路の他の命令が終了を繰り返すことを許容することによって手動で達成される。再走査後、中止されたフェーズは、セーブされた状態から終了することを許容される。他の全ての状態は、以前のサイクルから継続する。サイクル2において、データメモリストローブがディスエーブルされるため、データメモリ動作は好適には再実行されない。E5の始端(E4の終端)でラッチされた入力ロードデータを、XDSによって走査する必要がある。したがって、好適にはパイプダウンの全シーケンス、エミュレーション及びパイプアップが、図1のデータ処理システムに余分なメモリ、すなわち、I/Oサイクルを必要としない。以下、伝送路再開の制御の際にXDSが実行する動作のシーケンスについて説明する。
【0108】
1.時間370のサイクル0:フェッチパケットhに対してフェッチしたフェッチパケットのアドレスに戻った走査。この情報は、エミュレーション停止中サイクル2の走査中に利用できる。EPDN=0,EPUP=0,ECTL=0,EUPL=1,ANNUL=1及びANNUL_ASU=1にセットする。これは、ディスエーブル割込みの間フェッチを再イネーブルにする。
2.1クロックサイクルに対するCNTL371の適用。
3.時間372のサイクル1:フェッチパケットiに対してフェッチしたフェッチパケットのアドレスに戻った走査。この情報は、エミュレーション停止中サイクル2の走査中に利用できる。
4.1クロックサイクルに対するCNTL373の適用。
5.時間374のサイクル2:ディスエーブルされた(0にセットされた)DBSを有するサイクルからの全CPU領域状態の回復。EPDN=0,EPUP=1,ECTL=0,EUPL=1,ANNUL=1及びANNUL_ASU=1にセットする。これは、ディスエーブル割込みの間フェッチを再イネーブルにする。
6.1クロックサイクルに対するCNTL375の適用。
7.時間376のサイクル3:走査終了及び伝送路停止のサイクル3からのDDATA_Iに戻る走査。
8.1クロックサイクルに対するCNTL377の適用。
9.時間387のサイクル4:走査終了及び伝送路停止のサイクル4からのDDATA_Iに戻る走査。
10.1クロックサイクルに対するCNTL398の適用。
11.時間380のサイクル5:走査終了及び伝送路停止のサイクル5からのDDATA_Iに戻る走査。EPDN:0,EPUP=0,ECTL=0,EUPL=0,ANNUL=1及びANNUL_ASU=1にセットする。これは、割込み、分析及びフェッチを再度イネーブルにする。
ソフトウェアブレークポイント(SWBP)は、表10に示したようにSWBPを表す“0001”のコードを有するターゲット命令のクレッグ/z領域を置換し、かつ、セーブすることによってセットされる。この領域は、伝送路のDCフェーズ中にデコードされる。“0001”にデコードすると、ブレークポイント動作をトリガし、XDS 51を求めて、既に説明したパイプダウン及びパイプアップ手順を実行することによってデバック又はエミュレーション機能を実行する。デバック又はエミュレーション動作を終了すると、XDSは、領域の関連のクレッグ領域(フィールド)を、その元の値にリターンすることによって、E1中パイプラインのSWBP命令を置換する。これに加えて、SWBP_DECSRLが、デコードされたSWBPによってセットされる。XDSは状態としてSWBP_DEC(図20)を使用する。伝送路のSWBPを適切なクレッグ領域に置換すると、XDSはSWBP_DEC SRLをクリアして、他のSWBPをデコードすることが出来る。本発明の他の態様によれば、デバッグ機能を、ソフトウェアブレークポイント命令に応答して実行し、通常の伝送路の動作を、SWBPに変換される命令を再フェッチすることなく再開する。好適には、追加の記憶サイクルは、図1のデータ処理システムで実行されない。
【0109】
再度、図30を参照する。CPUがエミュレーション停止シーケンスによって中止されると共に、XDSがデバッカによって表示すべき全ての必要な状態を取り出したと仮定する。XDSは再開シーケンスの最初の6ステップを実行した後エミュレーション停止シーケンスを再度行うことによってステップマイクロプロセッサ1を単一にすることが出来る。分析テストポートを発生させる分析イベントに対する単一ステッピングがCNTL又はFUNCでロックする必要がある。同様に、検出すべき割込みに対して、メガモジュールテストポートは、CNTL又はFUNCでロックされる必要がある。検出すべき割込みに対し、換言すれば、メガモジュールの一部は実行し続ける必要がある。また、CPUは割込みサービスフェッチパケットへのステップを単一にしない。CPUを、割込みが行われる前に最小サイクル数で実行するように許容される必要がある。
イベントを、種々のテストポート310,320及び330の状態に応答して種々の理由に対して保留することが出来る。これら状態は、停止中分析イベントを保留する。
1.停止中、CPUテストポートのPAUS/SDAT/SCTL状態は、SUSPEND信号をアクティブにし、将来の分析イベントをディスエーブルする。CPUテストポートがCNTL又はFUNCにリターンすると、SUSPEND信号がイナクティブ状態に戻る。
2.これに加えて、分析イベントは、CPUテストポートがFUNC状態にある際に停止になるのが防止される。
3.XDSは、走査を通じてECTLビットをセットして、エミュレーション制御中に分析イベントをディスエーブルにすることが出来る。
停止は、伝送路のIDLE又は多サイクルNOP命令によって悪影響を及ぼさない。伝送路の再開に応答して、伝送路のIDLE又は多サイクルNOPの以前の状態が回復される。
通常のデバック及びエミュレーション動作において、分析領域及びメガモジュール領域が停止されない。したがって、(CPU_DONEのような)ハンドシェーク信号を、テストポート320又は330を停止させるためにMTAPに対して設けない。MTAPは、単にクロック切換えを実行するだけであり、適切なクロック境界上の状態を通じて移動する。ある理由に対してこれら領域を停止させる必要がある場合、これら領域を、CPU領域が停止された後にのみ停止する必要がある。
【0110】
図31A,31B,32A及び32Bは、既に説明したようにエミュレーション及びデバッグを通じて用いる種々のレジスタを図示する。これらは分析制御レジスタ(ACR)390、分析データレジスタ(ADR)391、分析割込みリターンポインタ(APR)392及びデータストリームレジスタ(STREAM)393とを有する。これら種々のレジスタを以前のセクションで説明し、ここで更に詳細に説明する。図において、用語「MVC読出し可能」及び「MVC書込み可能」は、CPU制御レジスタの特別のビットをMVC命令によって読出し可能であるか又は書込み可能であるかについて言及するものである。全ての保持された、すなわち、書込み専用ビットは“0”として読み出される。
図31Aは、エミュレーション及び分析用の制御及び状態ビットを有するACR390を説明する。状態ビットは、停止又は分析割込みを発生させず、単に、イベントが保留されない間に発生したイベントを反映するのみである。これらが発生すると(イネーブルされた場合)、実際のイベントそれ自体は、停止をトリガし、又はAIPをセットする中止割込みを示す。また、リセットは、CPUテストポートがFUNC状態にある場合にACRを、そのリセット値に設定するのみである。例外は、常にCPUテストポート状態に関係なくリセットされるRSTOCCである。表36は、各ACRビット領域(フィールド)の機能を説明する。
【0111】
16STRP_DEVM(=0)を、エミュレーションの存在を表すためにEMU_DEVM(=1)の代わりに使用し、その結果、このビットを、ユーザ及びこれらの間の任意のテストモードによって通常の動作で評価することが出来る。
【0112】
図31Bは、分析テータレジスタ(ADR)391を説明する。ADRの最初から30ビットを、伝送路フェーズ(パイプライン段)DCのプログラムアドレスとの比較に用いて、プログラムアドレスブレークポイントを発生させる。このレジスタは、分析領域にあり、メッセージ通過に用いる。分析走査中のこのレジスタの読出しは、Oをリターンし、ACRのMSGERRビットをセットする。分析走査中の書込みに影響を及ぼさず、MSGERRビットをセットする。他の任意の読出し又は書込みはMSGERRビットをクリアする。
【0113】
図32Aは、分析割込みリターンポインタ(ARP)392を説明し、これを、以前に分析割込みを参照して詳細に説明した。
メモリアクセスサポート
マイクロプロセッサ1のアーキテクチャは、全てのメモリロケーションがいずれかのプログラムメモリ内にあるか、又は、データメモリが(RAM又はFLASHを用いる場合)書込み可能であると仮定する。マイクロプロセッサ1の設計は、この便宜にしたがって、XDSに基づくデータ及びプログラムアップロード及びダウンロード並びにSWIのモニタ置換を許容する。これに加えて、個別のプログラムメモリ及びデータメモリは、同一アドレススペースを占有しない。キャッシュは、SWI及びSWBP置換に対して書込み可能である。
データダウンロード及びアップロード並びにプログラムダウンロードに対して、XDSは、エミュレーション停止シーケンスの後に次のようになる。
1.ECTLセット。フェッチパケットをPDATA_I 10aに走査する(図1)。データアクセスに対して、これらは7シリアルロード又はストアからなる。プログラムダウンロードに対して、これらは、SWBPに続く3MVC/STP対からなる。適切なデータ及びアドレスを、レジスタファイルに走査する。
2.CPUの実行をフリーにする。最終的には、SWBPは停止をトリガし、その後再走査する。
このようにして、XDSはデータの224ビット/走査(7x32ビット記憶)のダウンロード/アップロードし、又は、プログラムの96ビット/走査(3x32ビット記憶)のダウンロードを行うことが出来る。本発明の態様によれば、デバックコード命令のこれらのシーケンスを、マルチワード命令レジスタにロードすると共に、プロセッサ1のデバック動作を行うために実行する。好適には、追加のメモリ動作が図1のデータ処理システムと共には生じない。
プログラムアップロードに対して、エミュレータは、以下のエミュレーション伝送路(パイプライン)停止シーケンスを実行する。
1.ECTL及びEUPLのセット。PFC及びPADDRの値を走査。
2.HALT/CNTLを3回適用して、PS,PW及びPRフェーズを通じて移動させる。
3.アップロードされたプログラムに対してPDATA_Iを走査する。
4.その後、XDSは単一CNTL/HALTをサイクルごとに適用することが出来る。
したがって、エミュレータは256ビット/走査を実行することが出来る。
以前の手順が、データ処理システム環境を妨害することなく小データ量をアップロード又はダウンロードするのに有効である間に、要求される走査量が原因の顕著なオーバヘッド時間がある。「データストリーム」と称される手順は、全走査速度での以下のデータ転送を提供する。(XDSからの)プログラムメモリダウンロード、(XDSからの)データメモリダウンロード及び(XDSへの)データメモリアップロード。
【0114】
図32Bは、データストリームをサポートするのに用いられるデータストリームレジスタ393を図示する。このCPU制御レジスタは、CPUレジスタファイルをMTAP(STRM_I/O)からデータストリームバスに接続する。このレジスタを、書き込まれたものを読み返すような記憶に用いることが出来ない。データストリームプロセスを、表38〜42を参照して詳細に説明する。
フェッチを防止するために、XDSはECTLビットをセットしてフェッチをディスエーブルにする。XDSは、適切なフェッチパケットをPDATA_Iにロードする。このフェッチパケットは、STREAM CPU制御レジスタを通じてアクセスされるようにデータストリームバス間(STRM_STとSTRM_LDとの間)の必要なデータ移動を実行する。(32番目のビットごとの)新たなデータワードの走査に応答して、CPUを1サイクルステップさせる。CPU_DONEがサイクルのつぎのステップの前で受信されない場合、MTAPはこのエラー状態をラッチする。この場合、XDSは、ストリームプロセスの終了に応答して発生したストリームエラーを検出することが出来る。MTAP内のデータ移動及びエラー検出の管理の詳細を後に説明する。好適には、命令フェッチが禁止されているため、同一フェッチパケットをストリームプロセスの持続時間中に実行する。
表38及び表39は、データポート2及び1上のデータストリームデータダウンロードを制御するフェッチパケットをそれぞれ示す。両データポートに対する例を示す。その理由は、マイクロプロセッサ10は物理的に切り離されたメモリスペースに対する二つのポート書込みを行うことが出来るためである。両ケースにおいて、オペランドとしてのSTREAMレジスタを有するMVC命令を、ストリームデータのB及びAレジスタファイルへの移動に用いる。データポート2に対して、XDSは、第1STWに対する初期データ値を(B1の)レジスタファイルに走査する必要がある。データポート1ダウンロードに対して、STREAMを最初にBレジスタに移動し、その後Aレジスタに移動させる必要がある。その理由は、MVCはAレジスタを直接ロードすることが出来ないためである。この場合、XDSは、最初の二つの値(A1及びB1)でレジスタファイルを走査する必要がある。好適には、マイクロプロセッサ10は、表38及び表39のMVC及びSWTのような種々の命令の組合せを並列処理で実行して、オーバヘッド時間を最小にすることが出来る。
【0115】
【0116】
表40及び表41は、データポート2及び1上のデータストリームアップロードを制御するフェッチパケットをそれぞれ示す。両データポートに対する例を図示する。その理由は、マイクロプロセッサ1は、物理的に切り離したメモリスペースに対する二つのポート書込みを行うことが出来る。両ケースにおいて、オペランドとしてSTREAMレジスタを有するMVC命令を、ストリームデータのB及びAレジスタファイルへの移動に用いる。また、XDSはPDATA_IをNOPに充てんした後に終了するために最終ロードを手動によるクロックすることを許容した後、(B1からの)レジスタファイルから最終LDWからの最終データ値を走査する必要がある。
【0117】
表42は、データストリームプログラムダウンロードを制御するフェッチパケットを示す。データダウンロードのように、XDSは、記憶すべの最初の値を(B0の)レジスタファイルにロードする必要がある。しかしながら、プログラムアクセスに対するデータストリームと相違し、プログラムフェッチ回路10aに配置されたプログラム−データ出力レジスタ(PDATA_O)である記憶すべきレジスタに、STREAMを直接移動させる命令を利用できない。したがって、STRM_SEL信号を、サイクルごとに(STRM I/Oバスを通じて)PDATA_OをSTREAMの値に更新するために用いる必要がある。
【0118】
キャッシュサポート
以下のことを許容する制御状態レジスタ(CSR)のデータキャッシュ及びプログラムキャッシュに対する相互に独立した制御がある。
1.キャッシュフリーズ:キャッシュ値を読み出す。読出しはキャッシュを更新しない。
2.キャッシュフラッシュ:全てのキャッシュデータは無効にされる。更新は発生しない。
3.キャッシュバイパス:値がメモリから読み出される。読出しはキャッシュを更新しない。
以下のルールを、キャッシュに対するメモリアクセスのXDS制御に適用する。
1.データ又はプログラムCOFFダウンロード上で、キャッシュを、フラッシュし、以前の制御状態を回復する。
2.データ又はプログラムCOFFアップロードに対して、キャッシュをフリーズし、かつ、以前の制御状態に戻す。
3.CPUメモリの観点からのデータ又はプログラムメモリ読出しに対して、キャッシュをフリーズし、かつ、以前の制御状態に戻す。
4.物理的なメモリの観点からのデータ又はプログラムメモリ読出しに対して、キャッシュをバイパスし、かつ、以前の制御状態に戻す。
5.データ書込みに対して、キャッシュ制御ビットを変化させない。
6.プログラム書込みに対して、キャッシュをフラッシュし、その後以前の制御状態に戻す。
発展ツールノート
XDS及びシミュレータにおいて、デバッグに対するプログラマのモデルは次の通りである。
1.全ての情報を、(クロック間に基づくのとは逆に)サイクル間に基づいて表示する。したがって、メモリ停止はユーザで可視できない。
2.デバッガは、ディスアッセンブリで実行すべき次の実行パケットを強調する。
3.最後のサイクルの終了によって書き込まれた全てのレジスタの結果を表示する。
A)以前のサイクルにおけるE1(単一サイクル整数命令、アドレス変更)の実行パケットの結果。
B)同様な、2サイクル前からのE2(整数の倍数)の命令の結果。
C)4サイクル前のE4(浮動小数点命令)の命令の結果。
D)5サイクル前からのE5(ロード)の命令の結果。
モニタに基づくデバッガにおいて、プログラマは単一割当てを用いる必要がある。また、全ての命令を順に実行するために明らかにする必要がある。
【0119】
例えば、図33において、実行パケット(f)を強調する場合、2重線400上又はその前に書き込まれた全てのCPU状態が表示される。したがって、例えば、実行パケット(e)が乗算を実行すると、その結果が表示されないことになる。むしろ、乗算の宛先レジスタは、サイクル11からの以前の内容を有する。
CPU状態と異なり、記憶状態は、記憶の終了を向上させることを許容する。図33において、実行パケットc−eの記憶が終了する。したがって、(全ての走査が終了した後に更新される)記憶表示は、CPUの前の3サイクルとなる。これが4遅延スロットを有するロードに一致しないような場合にも、プログラマは、ロード値がロード命令を通じてステップする直前の表示に表れた値であると認識する必要がある。全てのアクセスがCPU境界に順に表れるので、記憶表示は自己矛盾しない。
リアルタイムデバッグ:モニタモード:リアルタイムデバッグは、マイクロプロセッサ1がユーザコードを実行する間ユーザに対して可視できるようにする。変数を表示すると共に、アッセンブリ及びハイレベル言語(HLL)の観点から両者を変更することが出来る。このリアルタイムデバッグそれ自体は、エミュレーション論理に依存しない。通常、デバックモニタは、バックグランドタスク又は、より高いプライオリティの割込みによって駆動されるリアルタイムタスクの存在で実行する非常に低いレベルの割込みサービスルーチンである。モニタは、デバッガが存在するホストと通信する。最低レベルのデバッガはメモリを要求することができ、レジスタは読出し及び修正動作を行う。通信は、シリアルポートのような周辺装置、共有メモリ、又は(ADRのような)専用のメッセージ通過ハードウェアを通じて発生することが出来る。モニタコードの発展を考察すると、
コードサイズ:モニタコードサイズを最小にする必要がある。
パフォーマンス:モニタコードは、十分なユーザアクセス可能性を提供するように十分高速に実行する必要がある。
単一ステッピング:デバッガでは2タイプのステッピングを実行する。
1.ハイレベル言語のステッピングステートメント。
2.サイクル間に基づくステッピング実行パケット。
伝送路の可視性がCPUのプログラミングに重要であるので、デバッガは命令ステッピング(命令のE1からE5までの全ての方法の命令のステッピング)をサポートする必要がない。代わりに、ステップ機構によって、全ての状態が単一伝送路フェーズを継続できるのみである。
エミュレーション停止の後、実行パケットステッピングは、一部再開(図30)に続く停止伝送路走査シーケンス(図28)によって実行される。特に、再開は、1サイクルを継続するように許容される。その後、エミュレーション停止シーケンスはそのまま全部が再度発生する。
【0120】
一般的に、実行パケット又は実行パケットのグループは、ハイレベル言語(HLL)ステートメントでは1対1に基づいて一致しない。以下のアプローチが、HLLステートメント間で可視性を提供するために利用できる。
1)HLLコンパイラは、順番に終了する意外な結果(side−effects)を発生させるコードを発生させることが出来る。しかしながら、これは、高性能コードを達成することを思い切って禁止する。また、この制限は、順番通りでない実行が許容されるときにのみ発生する問題がある。
2)XDSは、複数の停止を実行することが出来ると共に、特別なHLLステートメントの結果を隔離することが出来るように走査する。オブジェクトのデバッグ情報を嵌め込む新たな方法を発展させて、この方法を容易にする必要がある。それに加えて、(アッセンブリ及びHLLの両方の)混合モードディスプレイにおいて、どのアッセンブリ命令がディスプレイに見えるような伝送路のどのフェーズを終了するかを示す方法を発展させる必要がある。この方法の不都合は、ユーザが新たな記憶位置又は表示用の記号値を要求することが出来ないおそれである。このような情報は既に消失している。その理由は、その値が有効であるときを超えて一部の処理を実行した場合があるためである。両解決は、この章の現在のエミュレーションの記載を用いると実現可能である。
プログラムメモリのSWI命令の適切な命令へのソフトウェア置換を、ユーザのモニタプログラムによって行う。割込みがイネーブルされると共に、SWIが、割込みを中止する最高のプライオリティである場合、これはSWIがDCにあるときに行われる。より高いプライオリティの割込みがある場合、SWIは、割込みからのリターンに応答して再度フェッチされる。したがって、再度出会うことになる。SWI−認識は、この認識が取り出された分岐の遅延スロットに存在することによって、すなわち、AINTがイネーブルされない場合に延期される。
メガモジュールテストアクセスポート(MTAP)
【0121】
ここでMTPAが詳細に説明される。本発明の態様は、ここに引用されるIEEE1149.1−1990標準テストアクセスポートおよび境界スキャンのアーキテクチャの改善に関する。ここで使用されるIEEE1149.1に関する用語と概念はこのIEEE規格に充分に説明されている。同様に、本発明の態様は、米国特許第4,860,290号で開示され、ここに引用されるTexasInstrumentsのモジュラーポートスキャンデザイン(MPSD)の構造の改善に関する。詳細には、すべての「重要な」レジスタへのアクセスを提供する各モジュールに対応するシリアルスキャンパス上のビーズの列のようにマイクロプロセッサ1を通じて分配されるシフトレジスタラッチ(SRL)の動作が引用される関連米国特許第4,860,290号で説明されている。
再び図15を参照すると、メガモジュールテストアクセスポート(MTAP)305がIEEE1149.1規格テストアクセスポートの機能の部分集合をサポートする。メガモジュール300のMTAPはマイクロプロセッサ1のピンを直接ドライブしないので、境界スキャンをサポートする必要はない。MTAP305は1149.1対応JTAG状態マシンと、遠隔ホスト51のスキャン制御装置とメガモジュール領域テストポート(DTP)310、320および330との間の通信を提供する。JTAGインターフェースに加えて、MTAP305は、前節で論じたように、テストサポート、DTPの自動実行制御、性能上の大きな利点を提供するデータ・ストリーム制御機構、マイクロプロセッサエミュレーションのサポートおよび性能の解析を提供する。MTAP305のテスト機能セットはプロダクション自動テストパターン発生(ATPG)パターンの適用をサポートする。機能テストパターンはエミュレーション能力を使用してロード、実行およびデバッグできる。
【0122】
図34はメガモジュール300からマイクロプロセッサ1のピン410〜416への接続を示す構成図である。また図15を参照すると、前に論じられここで要約されたように、メガモジュール300のアーキテクチャはMTAP305とCPUコア10、CPU解析領域321、メガモジュール331(CPUコア以外のすべてのメガモジュール機能(特徴)を含む)および特殊エミュレーション(SE)400という4つの領域との間で分割されている。SEモジュール400はメガモジュール300の外部にある。各領域は領域テストポート(DTP)を通じて実行制御とドメインスキャンパスへのアクセスとを提供する。CPUのDTP310はプログラムの実行(開始、停止、ソフトウェアのブレークポイント)とプログラマモデル(レジスタおよびメモリ)への可視性を制御する停止モードと実時間エミュレーション機能とを提供する。CPU解析領域321は、マイクロプロセッサ1の場合ハードウェアのブレークポイントと実時間エミュレーションスキャン通信サポートとを含むコア解析機能を提供する。SE解析領域400は高度エミュレーション解析機能を提供する。この機能にはハードウェアブレークポイント用マグニチュードコンパレータ、プログラムバスアドレスブレークポイント、データバスアドレスとデータのブレークポイント、イベントカウンタ、プログラムの不連続性のトレースおよび解析状態シーケンサか含まれる。メガモジュール領域331は、テスト回路52のテストPSAレジスタのような、CPUの外部にあるメガモジュール内の機能の実行制御とスキャンアクセスのみを提供する。
実時間エミュレーションサポートは、プロセッサが割込みおよび多重タスクを引き続きサービスしている間プログラマモデルの実行制御と可視性を提供する。実時間サポートはまたアプリケーションによるデバッガを通じてもアクセス可能であり、遠隔テスト/エミュレーション制御装置に接続しない組込型解析機能の使用を含む。
【0123】
さらに図34を参照すると、メガモジュールテストアクセスポート(MTAP)305は、標準JTAGインターフェースおよびJTAG状態マシン機能セットをサポートするという点でIEEE1149.1対応である。MTAP305は、境界スキャンまたはBYPASS以外の公衆STAGコマンドをサポートしないという点で1149.1対応でない。マイクロプロセッサ1に対するJTAGによるエミュレーションとテストの要求は、アプリケーション特定JTAGコマンドおよびデータパス拡張を考慮するIEEE1149.1中の規定を利用することによって提供される。必要なJTAG機能を「公衆機能」と呼び、拡張を「専用機能」と呼ぶ。
メガモジュール(MTAP)300のエミュレーションおよびテスト機能のサポートには、2つの追加双方向エミュレーション割込みピン(EMU1 415、EMU0 416)によって補足されるマイクロプロセッサ1の標準JTAG5ピンインターフェース(TMS410、TRST411、TDI412、TDO413、TCLK414)への接続が必要である。次の節で論じられる多重JTAG/MTAPコンフィギュレーションが存在する。EMU0およびEMU1ピンはマルチプロセッサ停止イベントおよび性能解析機能を容易にするよう構成される。
EMU0/1ピンは機能ピンであり、すべてのメガモジュール境界セル規則に準拠する。
以下の構成体が、装置のJTAGピン、MTAP305および多重領域テストポートの間の通信と制御をサポートするためにJTAGフレームワーク内に追加されている。
データパス拡張−拡張専用JTAG IRコマンドで、領域状態、EMU1およびEMU0コンフィギュレーション、エミュレーション制御、領域スキャンパス選択および領域ロック情報のMTAPデータスキャン選択を提供する。
コマンド発生−拡張専用JTAG IRコマンドでJTAG IDLE状態を通じて起動されるテストおよびエミュレーションコマンドを提供する。
命令レジスタキャプチャ−雑エミュレーション状態、領域状態およびテスト情報のJTAG命令レジスタキャプチャで、エミュレーションソフトウェアの動作とMTAPのテスト容易性を促進するために追加された。
MTAP305のJTAG信号は以下である。
TMS:テストモード選択。この信号はJTAG状態ダイアグラムの変化を制御する。トラバースされるさまざまな状態によって命令およびデータパスがスキャンされ、JTAG命令が実行される。
TCK:テストクロック。この信号はJTAG論理および状態マシンにクロックを提供する。JTAGインターフェースはメガモジュール外部で供給される周波数でクロックされ、メガモジュールを異なったクロック速度用に設計された他のJTAG装置、制御装置およびテスト機器と互換性のあるものにする。本明細書ではこのクロック入力をTCLKと呼ぶ。正規システムクロック入力をUCLK(機能クロック)と呼ぶ。
TDI:テストデータ入力。この信号はメガモジュールのすべてのJTAG命令とデータスキャンに関する入力データを提供する。
TDO:テストデータ出力。この信号はメガモジュールのすべてのJTAG命令とデータスキャンに関する出力データを提供する。
TRST:テストリセット。これはJTAGモジュールをリセットする信号で、電源投入時のテストアクセスポート(TAP)の急速な初期化を保証するために提供される。
【0124】
これらの信号間の関係は、ここに引用されたIEEE1149.1仕様書で定義されている。
MTAP305のEMU信号は以下である。
EMUI[1:0]:EMU入力。解析領域によってEMUInの論理ゼロの検出がイベントとして使用できるようになる。EMUIは非同期で任意のパルス幅であるので、単一クロック同期イベントがイベント処理のためにCPU領域(EMUI信号)に確実に送信されるようにするために、EMUIはパルスキャッチャおよび同期装置に提示されなければならない。パルスキャッチャは同期イベントパルスによって自己クリーニングされる。
EMUO[1:0]:EMU出力。この信号は、(エミュレーションおよびテストモードでは)ECRのEMUCビットを通じて、また(ストラップモードでは)ACRのCPU_EMUCビットを通じて選択されたイベントを出力するために利用される。MTAP305からのEMUO[1:0]信号は少なくとも5N秒間アクティブでなければならない(テストバス制御装置の要求)。
EMUOEN[1:0]:EMU出力イネーブル。この信号はEMUピンパッドをドライブするために使用されるEMUO信号の外部トライステートバッファをイネーブルにする。共用または専用のこの信号の動作モードは(エミュレーションおよびテストモードでは)ECRのEMUCビットを通じて、また(ストラップモードでは)ACRのCPU_EMUCビットを通じて選択される。共用モードではこの信号はイベントがアクティブのときだけイネーブルになり、イベントがイネーブルでないとき出力バッファはトライステートモードのままである。共用モードで無効のときEMUピンパッドの状態は外部イベントからEMUIドライバにドライブされる。専用モードでは、この信号は常にアクティブなので、EMUピンパッドをEMUO信号レベルにする。メガモジュールの外部でこの信号を使用する例が後で論じられる。
JTAG演算コードユーティライゼーション:JTAG演算コード空間0x00−0x1FがJTAG特定の使用のために予約される。これらの演算コードに関連するスキャンパスおよびコマンドはIEEE1149.1仕様書に定義されている。この演算コード空間は現時点では部分的にのみ定義され、このグループの定義されない演算コードはすべて将来の使用のために予約される。ここでこのグループの任意の演算コードを公衆演算コードと呼ぶ。
【0125】
本発明の一態様によれば、0x20−0x2Fからの定義されないJTAG演算コード空間の一部がエミュレーション特定使用のために予約される。これらの演算コードは公衆演算コードと呼ばれる。このグループの中の定義されない演算コードはすべて将来のエミュレーション使用のために予約される。
0x20−0x2Fの中の演算コードはデータスキャンパスを選択するためにエミュレーションおよびテストコマンドとして定義される。JTAG状態マシンがJTAG SHIFT_DR状態(選択されたデータレジスタをシフト)にあるとき、演算コードはデータスキャンパス選択として利用される。JTAG状態マシンがJTAG IDLE状態にあるときは同じ演算コードがコマンドとして利用される。JTAG状態をDTP制御状態にマップするテストモードでは、JTAG演算コードはまた制御コードをDTPに直接適用するためにも利用される。演算コードのこうした3つの使用法の各々は互いに分断されている。この文書はそれらを独立して論じる。
【0126】
図35はMTAPスキャンパス編成の構成図である。エミュレーション/テストスキャンパスがJTAG仕様によって要求されるIRおよびバイパスパスに加えて提供される。MTAP305は(MTAP305をJTAG非対応にする)境界スキャンパスをサポートしないことに注意されたい。スキャンパスを選択するSHIFT−IRスキャンに続いて、エミュレーション/テストパスはJTAG状態マシンをSHIFT−DA状態にトラバースすることによってスキャンされる。1つより多い演算コードが同じ公衆または専用スキャンパスをアドレスできる。
公衆または専用スキャンパスが表43で簡単に説明される。
【0127】
JTAGデータパス制御
さらに図35を参照すると、スキャンデータはJTAG SHIFT_DR状態の間選択されたデータシフトレジスタを通じてシフトされる。データシフトレジスタはMSBをLSBにシフトし、シフトレジスタのLSBは第1SHIFT_DR状態の間TDOに出力される。TDIからシフトレジスタにシフトされたデータは、転送されたデータビットの静的数値が必要な場合シフトシーケンスの終了時に並列保持レジスタに転送される。並列保持レジスタは影レジスタまたはその保持レジスタ長の影ビットと呼ばれる。MTAP305を実現するにはプロセッサエミュレーション機能とのインターフェースを有する影ビットとシフトレジスタビットのミックスを使用する。シフトレジスタビットが直接使用されるとき、データシフトレジスタのシフトはビットの最終使用に関係なくなされる。
JTAG状態のデータレジスタグループは、SELECT_DR状態がCAPTURE_DR状態に移行するとき入力され、UPDATE_DR状態の実行が完了するとき終了する。この状態のグループは、スキャンデータレジスタ状態グループがトラバースされる間、JTAG命令レジスタ中に保持される演算コードによって選択される特定データパスに割り当てられる。この状態グループにはパス特有の重要性を有する3つの状態が含まれる。CAPTURE_DR、SHIFT_DRおよびUPDATE_DRというこれらの状態はJTAG命令レジスタに含まれる演算コードと結合されてスキャンデータを管理するパス特定ディレクティブを与える。
CAPTURE_DR状態は、シフトシーケンスの開始時に情報をデータシフトレジスタに選択的にロードする。この情報は、パス特定データシフトレジスタがSHIFT_DR状態によって進められる際チップのTDOピンで見える。UPDATE_DR状態は、データシフトレジスタにシフトされたデータをJTAG IR演算コードによって示された適当な並列データレジスタに転送する。
大部分のMTAP専用データパスはすべてのデータパスビット位置についてCAPTURE_DR機能の実現を必要としない。データパス全体がCAPTURE_DR機能の実現を必要としない場合もある。DTPデータスキャンパスの場合特にそうである。専用データパスにはデータシフトレジスタを共有するものもある。この実現の帰結はデータが修飾されたUPDATE_DR信号によって異なった影レジスタまたはビットに選択的に転送される単一のデータシフトレジスタである。このアプローチはDTP内でDTP_SCTLおよびDTP_SDATスキャンパスの両方をサポートする単一の物理シフトレジスタを利用するために利用される。この共有アプローチによって、パスのCAPTURE_DR状態機能のマージも可能になる。上記で論じた物理実現オプションはすべて、パスを制御するソフトウェアから見たときデータパスの設定または動作を変更するものではない。
JTAG TAPがSELECT_DR状態を通じて遷移するとき選択されたデータスキャンパスとキャプチャおよびアップデートされたレジスタはJTAGIR中のコマンドに依存する。データをDTPに向けるDTPデータスキャンコマンド以外のIRコマンドは、アップデートと、場合によってはキャプチャ信号を必要とする(JTAG TAP CAPTURE_DRおよびUPDATE_DR状態に基づく)。DTP_SDATおよびDTP SCTLスキャンパスはDTPを通じて共通データシフトレジスタを共有する。DTP SCTLパスの場合CAPTURE_DR状態と結合したパス選択信号によって共通シフトレジスタがMSENB影ビットからロードされる。スキャンの完了後(SHIFT−DR)、UPDATE_DR状態によって共通シフトレジスタ中の新しい値が固有のMSENB影レジスタに転送される。DTP_SDATパスの場合、DTPの共通シフトレジスタがバイパスビットとして利用される。他のすべてのスキャンパスは直接スキャンされる(DTPを通じてスキャンされない)。表44は各スキャンパスへの要求の詳細を示す。
【0128】
選択信号SCTL_SEL、SECR_SEL、SCTR_SELおよびSTRM_SELは相互に排他的で、UPDATE_IR TAP状態によってイナクティブ状態にドライブされる。
さらに図35を参照すると、MTAP305のJTAG命令レジスタ(IR)450は長さ8ビットですべてのビットが命令デコードで使用される。デコードされた命令はスキャンパスを選択またはコマンドを実行するために利用される。IRへのアクセスはJTAG状態のグループによって提供される。SELECT_IR状態がCAPTURE_IRに遷移するときこれらの状態に入り、UPDATE_IR状態を出るときこれらの状態から出る。JTAG TAP状態マシンがSELECT_IR状態を通じて遷移するとき、IRレジスタはJTAGデータスキャンパスに接続される。CAPTURE_IR状態はシフト・シーケンスの開始時に情報を命令シフトレジスタにロードする。キャプチャされたデータはエミュレーション制御レジスタ(ECR)中の状態選択(STSL)ビットに依存する(図38参照)。この情報は、命令シフトレジスタがSHIFT_IR状態を通じて進む際チップのTDOピンで見れる。SHIFT_IR状態に入ると、DPC(データパス制御装置)はスキャンパスがすべてのTCLKにシフトすることを可能にする。命令シフトレジスタはMSBからLSBにシフトされ、LSBキャプチャ情報レジスタは第1SHIFT_IR状態でTDOに出力される。この機構はエミュレーションおよびテストステータスをロードおよびエクスポートするために使用される。UPDATE_IR状態はチップにシフトされたデータ(命令シフトレジスタのコンテント)をIRの影ビットに転送するために使用される。
【0129】
図36Aはストラップステータスが選択されたJTAG IRを示す。ストラップステータスは、TRST−またはTLR JTAG状態によって選択されるデフォールトステータス状態である。2つのLSBにはIEEE1149.1仕様の6.1.1節による固定パターン(0、1)がロードされる。この固定パターンはストラップモード中に正しいパターンにされるMTAP状態フラグから得られる。
図36Bは停止ステータスが選択されたJTAG IRを示す。ここで示されるステータスビットは一般に停止モードエミュレーションの間利用される。ABP_DETおよびSWBP_DEC(CPU領域)以外のすべてのステータスビットはMTAPにソースを有する。MTAP305ステータスビットは表45で定義される。停止モードエミュレーションステータスビットは表68で定義される。
図36Cは実時間ステータスが選択されたJTAG IRを示す。ここで示されるステータスビットは一般に実時間モードエミュレーションの間利用される。MSGFLGおよびMSGSW(CPU領域)以外のすべてのステータスビットはMTAP305にソースを有する。MTAP305ステータスビットは表44で定義される。実時間モードCPU領域エミュレーションステータスビットは表69で定義される。
図36Dはエミュレーションエラーステータスが選択されたJTAG IRを示す。ここで示されるステータスビットは一般に停止および実時間両方のモードに関してエミュレーションエラー処理の間利用される。MINT_ENおよびAINT_EN(CPU領域)以外のすべてのステータスビットはMTAP305にソースを有する。MTAP305ステータスビットが表44に定義される。MINT_ENおよびAINT_ENCPU領域エミュレーションエラーステータスビットは表69に定義される。
表45はMTAP305モジュール内で発生するステータスビットを定義する。MTAP305以外にソースを有するステータスビットの定義については表68〜71を参照されたい。
【0130】
【0131】
表45はMTAP305によってサポートされるJTAG命令の組み合わせを定義する。MTAP305内のJTAG命令は、IEEE1149.1仕様によって要求される標準JTAG命令(公衆命令)とエミュレーションおよびテストのために追加された専用命令とに分けられる。専用JTAG演算コードは次の3つの基本的機能を有する。
1)CAPTURE_DRおよびUPDATE_DR JTAG状態と組み合わせて使用されるSHIFT_DR JTAG状態と制御論理のためのスキャンパスの選択。
2)専用演算コードがJTAG IRにあり、JTAG状態マシンがJTAGIDLE状態に遷移するとき発生する専用コマンドの処置の決定。
3)装置モードがテストのときJTAG状態をMPSDコードに直接マップすることによる演算コードによるATPGテストのサポート。
専用コマンドはJTAG環境でUPDATE_IRまたはUPDATE_DRからJTAG IDLE状態に入ることによって開始される動作である。コマンドの開始は機能クロック(UCLK)に同期し、MTAP305およびDTPの機能論理への1機能クロック幅コマンドに帰結する。専用コマンドが開始されるとコマンドが発行されるまでJTAG IRの次のアップデートは禁止される。専用コマンドの完了はJTAG CAPTURE_IR状態のIRBUSY(命令レジスタ使用中フラグ)をキャプチャすることによって決定される。
表46で説明されるJTAG命令はMTAP305によってサポートされる。それらは公衆および専用グループに分けられる。必要な演算コード(公衆)は議論の中で注記される。必要なものとして示されない演算コードはすべて専用演算コードである。専用グループの説明には、この演算コードで開始されるコマンドのみ次回説明に加えて演算コードによって選択されるデータレジスタが含まれる。演算コードのテストモード使用は、詳細には表63および表65に関して後で論じられる。
【0132】
【0133】
再び図35を参照すると、バイパスパス451は、JTAG命令レジスタを通じて他のデータパスが特に選択されないとき選択される1ビットデータパスである。バイパスビットはCAPTURE_DR状態で常に論理1をキャプチャする。
JTAGのMPSD DTPに対するMTAPサポート
図37は、JTAGのMPSDへのインターフェースを有するMTAP305の構成図である。MTAP305は、領域テストポート(DTP)への外部アクセスとその制御を提供する。MTAP305はJTAGとMPSDスキャンテクノロジとの間のインターフェースとして利用される。MTAPは境界スキャン制御での使用に加えて通信媒体としてJTAGプロトコルを使用する。MTAP305によってテストおよびエミュレーションシステム資源へのアクセスが可能になる。MTAP305ブロックは、テストのサポート、スキャンのサポートおよび実行サポートといった機能を行う。
テストのサポートによって、JTAG TAP状態からDTP MPSDコードへの直接変換とTCLKのUCLKによる置換を通じてATPGテストパターンのオンボードアプリケーションが可能になる。直接MPSDモードを通じたATPGテストパターンのチップテスターアプリケーションもサポートされる。スキャンサポートには、テストクロックがスキャンモードで供給されることを保証する各領域にソースを有するクロックの切換とアプリケーションの管理およびJTAGシフトデータ状態(SHIFT_DR)からのDTP MPSDスキャンコードの発生およびJTAG命令レジスタでのパス選択が含まれる。実行サポートには、機能クロックが実行モードで供給されることを保証する各領域にソースを有するクロックの切換およびアプリケーションの管理およびDTPを通じて領域の実行モードを制御するMPSDコードシーケンスの発生が含まれる。
JTAG状態ダイアグラム遷移と結合するスキャンされた情報のシーケンスはMTAP305によって提供される機能を管理する。コード状態マシン(CSM)と呼ばれるMTAPの下位システムは、個々の領域を制御するために使用されるMPSD実行コードシーケンスを作成する。JTAG論理はテストクロック(TCLK)によってドライブされ、機能論理は汎用クロック(UCLK)によってドライブされるので、MTAP305は各領域のクロックを制御するよう設計されている。
【0134】
さらに図37を参照すると、メガモジュールテストアクセスポート(MTAP)305は、JTAG TAP500(1149.1JTAG仕様に指定されている)、JTAGデータパス制御論理510、エミュレーション制御レジスタ(ECR)520、コード状態マシン(CSM)530、開始制御装置540、コマンドデコード550、コマンド制御560およびMPSDコード発生器570からなる。
さらに図37を参照すると、MTAP305はJTAGおよびDTP制御ブロックの間で分割できる。JTAGブロックにはJTAG TAP500、JTAG IR580およびデータパス制御510が含まれる。このブロックは装置ピンでJTAGアクティビティをデコードし、命令を受信し、それらをスキャンパス制御修飾子として処置するかまたはそれらをコマンド修飾子としてDTPブロックに提供する。コマンドはJTAGブロックからDTPブロックへのパスを要求するが、DTPブロックでそれらは適当な機能論理ブロックに配置される。DTP制御ブロックには開始制御540、コマンド制御560、エミュレーション制御レジスタ520、MPSDコード状態マシン530およびMPSDコード発生器セクション570が含まれる。
JTAG TAP500はTCLK、TRST−およびTMSピンによって管理されるJTAG状態アクティビティをトラックする状態マシンを含む。この状態マシンは、命令レジスタとデータレジスタスキャンパスの両方をキャプチャ、シフトおよびアップデートするために使用されるすべての制御信号を発生する。データパス制御510はその後TAPと命令レジスタ580の情報を使用してJTAGスキャンパスに関するスキャン制御を発生する。
【0135】
さらに図37を参照すると、MPSDコード状態マシン(CSM)530とエミュレーション制御レジスタ(ECR)520が共に使用され、MPSDコード発生器570と制御DTPクロックからMPSD実行コードシーケンスを発生する。コマンド制御ブロック560からのコマンドはCSM530の動作を開始する。CSM530は、コマンドによって管理されるときECR520から2つのプログラム可能なC0およびCeの1つを選択し適用する。2つのプレロードされたコード値の適用シーケンスはまたECR520のビットによって指定される。この適用シーケンスはプログラム可能でプロセッサの動作に従ってなされる。CSM530の動作は以下の節でより詳細に扱われる。ECR520はまた、装置モードの選択と次の節で扱われる雑テスト機能もサポートする。
コード発生器570はECRモードビット、TAP状態、DTP JTAG IR制御演算コードのデコードおよびMPSDコード状態マシンから入力を得て、DTPに供給されるMPSDコードを作成する。
図38はMTAPエミュレーション制御レジスタ520を示す。エミュレーション制御レジスタ(ECR)520はMTAP305内の専用スキャンパス452(図35)である。これはJTAG命令レジスタに配置されたSECR演算コードによって指定される。ECRはシフトレジスタおよび影レジスタとして実現されるが、すべてのビットが影付きではない。エミュレーション制御レジスタのフィールドが表47で説明される。
【0136】
【0137】
表49はMCSビットと装置モードフィールドビットに基づいてクロック選択テーブルを定義する。
【0138】
【0139】
【0140】
【0141】
【0142】
表54を参照すると、EMUCコードがEMUOE信号の一方または両方についてHI−Z状態を選択する場合、適当なEMUOE信号が永久にローにドライブされEMUOドライバをHI−Z状態に保持する。コードが1つまたは両方のピンについてオープンコレクタ状態を選択する場合、EMUOをドライブするよう選択された信号はEMUOEの状態をも制御する。EMUOについて誤った条件が生じた場合、EMUOEはローに切換えられ、EMUO出力ドライバをHI−Z状態にする。EMUOに正しい条件が生じた場合、EMUOEはハイに切換えられ、EMUのピンドライバをHI−Z出力からドライブ状態に切換える。IF_CLROまたはIF CLR1 JTAGコマンドを実行すると信号がイナクティブ状態に戻るまでEMUO0およびEMUO1をドライブする信号は禁止される。TRST−はEMUCビットに0をロードする。
EMUC設定コードビットはECRの影ビットとして設定される。設定ビットは、JTAG TAPがIDLE状態を通じて遷移するときアップデートされる。これによって新しいイベントの選択はUCLKに同期し、EMUO信号がグリッチする可能性が排除される。
装置モードビットがSTRAPに設定される場合、前の節で定義されたように、EMU設定コートはACRのCPU_EMUCビットによって選択される。EMUCフィールドは、TRST−およびTLR JTAG状態によって0000に初期化される。
装置モードフィールドおよびMCSビットはUPDATE−DR JTAG状態の間ロードされる影ビットによって実現されるが、一方MPSDコードおよび遠隔イベントフィールドは影付きでなく物理的にエミュレーション制御シフトレジスタビットの中にある。ECRとは他の論理に機能情報を供給する影付きまたは影なしのビットである。
装置モードまたはMCSビットが切換えられるときには同期がないので、グリッチによる無効状態を避けるために、ソフトウェアは、モードまたはMCSビットが切換えられるときにはすべてのテストポートがロックされておらず、PAUSが適用されるか、または現在選択されたクロックが不能(電源オフ)になっていることを保証しなければならない。
【0143】
ECR520で影付きおよび影なしのビットが混じっているのは、機能クロック(UCLK)上で動作する論理を有するMPSDコードと遠隔イベントフィールドの使用に起因する。これらのフィールドはUCLKによって評価される論理またはレジスタに直接適用される。テストクロック(TCLK)に関してアップデートされたシフトレジスタビットはUCLKに対して非同期に変化し、UCLKによって制御された論理に誤った結果を生じる。同期の問題は、ECRシフトレジスタがスキャンされる間UCLKによって制御される論理によるECRデータの使用を禁止することによって解決される。この禁止は影なしシフトレジスタビットを使用する機能論理の状態をフリーズまたはロックする効果を有し、機能コマンドの使用を通じてエミュレーションソフトウェアによって発生する。この禁止プロセスは同期シャドーイングの代替形態で、テストクロック(TCLK)によってスキャンされた情報を使用する機能論理が常に静的な外観を与えることを保証する。ロックプロセスはMPSDコード状態マシンの一部であり、MTAPコード状態マシンを説明する後の節で論じられる。
ECR520は、たとえホストソフトウェアがECR状態をチェックするのであっても、ソフトウェアがまずCSMをロックしなければスキャンできない。
【0144】
MTAP状態制御およびコマンド制御
再び図37を参照すると、MTAP開始制御論理540はMTAP305のJTAGセクションからコマンドディレクティブを受け入れ、ディレクティブと同期し、その後MTAPコマンド制御560の助けによってコマンドをMPSDコード状態マシン530とMTAP305外部の論理ブロックに配置する。領域コマンドは、JTAG IR580が0x20〜0x2Fの範囲の演算コードを含み、TAPがUPDATE_IRまたはUPDATE_DRのどちらかからIDLE状態に移動するときのみJTAGセクションで開始される。
領域コマンド要求はMTAP開始制御論理540に転送されるが、そこでは状態マシンがTCLKと同期したIRBUSY信号を発生しさらにJTAG命令レジスタのアップデートを禁止する。表55は発生するコマンドに関する開始パルスの発生を促進するイベントのシーケンスである。START_REQTおよびIRBUSYはTAPテスト論理リセット(TLR)状態によってリセットされるが、一方START_REQ1およびSTART_REQ2はIRBUSYローによってリセットされる。
さらに図38を参照すると、信号SWINPROGは、JTAG演算コードが0x20〜0x23、0x30、0x32または0x24(領域スキャンパスまたはECRの選択の際目標となるすべてのコマンド)の場合、STARTの発生を禁止する。
START発生状態マシンの真理値表が表56によって示される。
【0145】
【0146】
コマンド発生プロセスは、エミュレーションソフトウェアが第1のコマンドが完了するまで第2のコマンドを出さないことに責任を負うことを要求する。JTAG IRキャプチャ情報を通じて管理されるIRBUSY SRLによって、使用中インジケータは、次のコマンドをロードする同じ命令レジスタスキャンのエミュレーションソフトウェアによって検討されるようになる。キャプチャ状態はアップデート状態の前に発生するので、コマンドロード上のIRBUSYフラグの論理0キャプチャはエミュレーションソフトウェアに、命令レジスタのアップデートがポジティブに生じることを保証する。命令レジスタの中でスキャンされるコマンドはPAUSE_IR状態で終了し、JTAG IDLE状態への進行が保証されているかどうかをエミュレーションソフトウェアが判断できるようにする。開始パルスの発生に起因するあるイベントは割込みの際エミュレーションピンで管理されるようにプログラムされる。こうした割込みは、ある場合命令レジスタのポーリングの代わりにエミュレーションソフトウェアによって使用される。割込み適用性の判断はプログラマの裁量に任される。
JTAG状態マシンがIDLE状態にドライブされ、SGABORTコマンドがJTAG IR520にロードされるか、またはJTAG状態マシンがTEST−LOGIC_RESET状態にドライブされる場合、開始発生器は消去状態になる。SGABORTコマンドはIRBUSYを無効にし、コマンドがJTAG IRにロードされるようにする。
さらに図37を参照すると、コマンド制御装置560はCSM530および領域についてすべてのコマンドストローブを発生する。ロックビットの状態はどの領域がSDAT_HALTといったコマンドを受信するかに影響する。STARTは、コマンドがJTAGインターフェースから開始されるときJTAG START制御論理によって発生する1クロック幅パルスである。STARTはコマンド制御に送信され、その目的地に経路指定される。コマンド制御論理はSTARTパルスをJTAG IRの値と結合して特定のコマンドを形成する。こうした特定のコマンドはMTAP305内のMPSDコード状態マシン530またはMTAP305外の領域に送信される。コマンドのリストを表57に示す。
【0147】
【0148】
MTAPコード状態マシン
さらに図37を参照すると、MPSDコード状態マシン(CSM)530は、ECR520のEXEおよびTERMレジスタフィールドからMPSDコード発生器570(MPSDバスをドライブする)へのMPSDコードの適用を制御する。また、エミュレーションモードの間スキャン(TCLK)および実行(UCLK)のために必要なクロックの切換を管理する。
CSM530はATPGモード以外のすべてのモードで動作する。CSMはエミュレーションモードで使用されプログラム可能なMPSD実行コードシーケンスをMPSDコード発生器に向けて発生する。実行コードシーケンスはFUNC、CNTL、HALTおよびPAUSとして定義される。エミュレーションソフトウェアは、CSMを管理して、DIPデータまたは制御パスのスキャンを試みる前にPAUSコードをコード発生器に適用する。CSMは実行コードを使用して領域クロックの選択を決定する。FUNC、CNTLまたはHALTコードを適用するには領域がUCLKを選択していることが必要であるが、PAUSコードはUCLKまたはTCLKのどちらにも適用できる。FUNC、CNTLまたはHALTコードからPAUSに移動するとクロックはUCLKからTCLKに切換えられるが、PAUSからFUNC、CNTLまたはHALTに移動する要求によってクロックはTCLKからUCLKに切換えられる。すべてのクロック切換は、PAUSコードがロックされない領域に適用されている間に発生する。
【0149】
図39はCSM530の構成図である。コード状態マシンはMPSDコード制御装置600、コードレジスタ610およびクロック切換器620のセクションに分けられる。コードレジスタセクションは2ビットコードレジスタ、クロック選択ビットおよびコードマルチプレクサを含む。クロック切換器は、クロック切換器が進行中の切換標識と同期する前のブレークを含む。コード制御装置は2つの状態マシンSRLとECRで指定されたMTAPコマンドおよびREVTモードに対応するすべての組み合わせ論理を含む。状態マシンはまた、EXE611およびTERM612コードをコードレジスタに選択し、クロック選択ビット(TCLKON613)をロードするマルチプレクサ制御を発生する。
コードレジスタ610のコードソースはコード制御装置600によって決定される。コードレジスタは普通、別のディレクティブがない場合それ自体をフィードバックする。これによってコード制御装置は1クロックの間ECRからEXEまたはTERMコードフィールドを選択できるようになる。1クロック幅の選択ウインドウによって新しいコードがコードレジスタに入力され、その後コードは再循環する。このスキームによってコード制御装置はコマンドをMTAPコマンド制御560からコードレジスタブロック内のマルチプレクサ制御に直接伝えることができる。CSEL(3:0)614信号はコードレジスタの多重化を制御する。
CSMによってコード発生器に適用される次のコードがランコード(CNTLまたはFUNC)の場合、現在のコードはPAUSであり、CSMはランコードが適用される前の1クロックサイクルをHALTコードにする。その理由は、領域のバスがHALTコードに対してイネーブル(DBENB)になる1クロック前にバスをイネーブルにするためである。
コード制御装置600はすべての要求の優先順位を解決した後マルチプレクサの選択を得る。優先順位は、クロック切換が1、MTAPコマンドが2、遠隔イベント要求が3である。クロック切換の要求は、クロックの切換が進行中(SWINPROGが真)でCSMコマンドがJTAG IRで指定されている間MTAP START制御を禁止することによってMTAPコマンドに対する優先権を得る。MTAPコマンドが遠隔イベントコマンドと同時に発生する場合イベントコマンドは無視される。任意のMTAPコマンドまたは遠隔イベントはどちらの方向にもクロックの切換を要求することができる。必要なクロックの極性はMPSDコードに埋め込まれており、PAUSはすべてのロックされていない領域へのTCLKの適用を要求するが、HALT、CNTLおよびFUNCはUCLKの適用を要求する。
コードのロードの要求が検出されると、コード制御装置は3つの種類のうちどのロードが発生するかを判断する。3つとはクロック切換を伴わないコードのロード、UCLKからTCLKへの切換を伴うものまたはTCLKからUCLKへの切換を伴うものである。コード制御装置はこれらの場合を各々別様に処理する。次のいずれかの場合には切換は検出されない。
1)現在のコードがPAUSでロードされるコードがPAUSである。または、
2)現在のコードがPAUSでなく、要求されるコードがPAUSでない。
UCLKからTCLKへの切換は、現在のコードがHALT、CNTLまたはFUNCで、要求されるコードがPAUSのとき検出される。TCLKからUCLKへのクロック切換は現在のコードがPAUSで要求されるコードがHALT、CNTLまたはFUNCのとき検出される。各種類を別様に処理することによって、すべてのクロック切換が、MPSD PAUSコードが領域に適用されている間に発生することが保証される。
クロック切換が必要ないとき、コード制御装置600はECRフィールドのロードを選択し、次のCSM状態を決定する。コードレジスタ610はクロック選択ビットおよびCSM状態と共に次のクロックでロードされる。
【0150】
現在の値がHALT、CNTLまたはFUNCの間PAUSのコードのコードレジスタへのロードが要求されるとき、コード制御装置はロードされるべきECRフィールドを選択し、次のCSM状態を決定する。コードレジスタはPAUSに次の状態をロードし、TCLKONビットが1にロードされる。クロック切換器はTCLKONをTCLK_SEL(テストクロック選択)と比較して、クロック切換が必要だと判断し、SWINPROG(進行中の切換)をアクティブにする。クロック切換の完了後、SWINPROGはイナクティブに戻り、コード制御装置およびMTAP START制御は先に進む。
TCLKからUCLKへの切換を要求する要求は、クロックが切換えられる間現在のPAUSコードを保持しなければならないため、コード制御装置600によって特別に処理され、切換を発生させたコードをインストールする。この場合コード制御装置は要求されたクロック状態をTCLKONにロードし、CSM状態をアップデートし、かつコードレジスタ610のロードを禁止する。
TCLKON613は、クロック切換器620にファンクショナルへのクロック切換を発生するよう要求する。アップデートされたCSM530状態は、クロック切換が完了したときロードしなければならないコードを指定する。TCLKONはPAUSコードを表すので、クロックの選択とコードの値が一致しているかどうかを見るためにコードレジスタ610のコンテントと比較できる。TCLKONが0でコードレジスタがPAUSを含むとき、遅延されたコードレジスタのロードは保留される。TCLKON613は常にクロック切換器620に直接送信されるが、そこでは必要な場合クロック切換シーケンスが開始される。これによってPAUSコードが領域に適用されている間にクロックが切換えられることが保証される。TCLKONがクロック切換器の出力またはPAUS_NOW615、コードレジスタの休止コードのデコードに一致しない場合進行中の切換(SWINPROG)621がクロック切換器によって発生する。TCLKからUCLKへのクロック切換が完了すると、切換器はLD_CODE信号をコード制御装置に対して発生する。コード制御装置はLD_CODE信号と現行CSM状態を結合し、EXEまたはTERMコードフィールドのコードレジスタへのロードを要求する。SWINPROGは、JTAG IRが0x20〜0x23、0x30、0x32または0x24を含むとき、MTAP305のSTART制御中のSTARTの発生を禁止する。
【0151】
図40は回路を切換える前のブレークであるMTAP CSMクロック切換回路620の概略図である。HALTからPAUSへの真理値表が表58に示され、PAUSからHALTへの真理値表が表59に示される。
【0152】
ECRスキャンを伴う特別なCSMの考察がここで注記される。CSM530はECR520のフィールドを静的入力として使用するので、ECRはCSMがLOCKED状態にあるときスキャンのみが可能である。コード制御装置600は、それぞれ信号601、602および603によって示されるEXECUTE、TERMINATEおよびLOCKEDの3つのコード管理状態を2状態レジスタヒットに符号化する。EXECUTEおよびTERMINATE状態はコードレジスタの現行コードのソースを反映する。これらの2つの状態はMTAPコマンドを通じていつでも管理できる。遠隔イベントフィールドは、CSM状態がLOCKED状態にないときこれらの2つの状態をどちらも管理できる。LOCKED状態はMTAPコマンドによって管理され、ECRの遠隔イベントフィールドでは管理できない。コマンド情報については表57を参照されたい。状態の符号化が表60に示される。
【0153】
注:上記でCSM_LOCKとCSM_EXEの組み合わせによって示された状態は決して存在しないが、それが存在する場合はCSM_LOCKがCSM_EXEをオーバーライドすることに注意すべきである。ECRのスキャンを試みる前にロックされた状態に入らなければならない。SECR命令に関するる表46を参照されたい。
MTAP MPSDコード発生器
再び図37を参照すると、領域に供給されるMPSDコードはMPSDコード発生器570の中で作成される。コード発生器570はMPSDバスをDTPデータおよび制御スキャン状態からドライブし、MPSDコード状態マシン(CSM)はJTAG TAP制御装置状態を直接MPSDコードにマップするか、またはMPSDストラップ状態(正常動作モード)をバスに向けることによって出力する。
コード発生器570によるコードの発生は装置がJTAGテスト論理リセット状態(TLR)で機能することを保証する階層を有する。この階層はまた、すべての領域が機能クロック選択と共にMPSD機能ランコード(FUNC)を受信している間エミュレーションソフトウェアによって初期化できるようにする。MPSDコード発生器によるコード値は、多数のソースからの入力の論理ORである。望ましいコード出力を達成する互換コードソースを適用することはエミュレーションソフトウェアの責任となる。
MPSDコード発生器570は、コード状態マシン530、ストラップモード、スキャンDTPデータ、スキャンDTP制御およびATPGモードからのコード入力の論理ORを行う。ECR520の両方の装置モードビットが設定されているとき、STRAPはアクティブである。STRAPはC1、C0およびCeについて0Redであり、それらを論理1状態にしてFUNCのMPSDコードを発生する。これによって他のコードソースが、ソフトウェアによるSTRAP信号のリセットの前にエミュレーションソフトウェアによって初期化されるようになる。STRAPはコード発生論理への他のすべての入力をマスクする。装置モードビットは、TRST−の論理0、すなわちJTAG TAPのテスト論理リセット(TLR)状態への遷移によってか、またはECRスキャンによるECRモードビットのプログラムによって論理1に設定される。
DTPパススキャン、MPSDコード状態マシンおよびATPGモードマッピングコード発生ソースは、エミュレーションソフトウェアおよびMPSDコード発生ハードウェアによって互いに排他的になっている。FUNC、CNTLおよびHALTのMPSD実行コードはMPSDコード状態マシンまたはJTAG TAP状態をMPSDコードに直接変換するATPGモードマッピング論理によってのみ発生できる。実行コードの1つのソースのみが一時にアクティブであり、イナクティブのソースはMPSDコード発生器570のコード作成機能に論理0を供給する。
【0154】
両方のMPSD実行コードソースは、DTPデータ制御スキャンが試みられる前に、イナクティブ状態(論理0をMPSDコード発生器に供給する)に配置される。ATPGモードのための状態マッピングはこの規則に適合するように選択される。エミュレーションソフトウェアは、MPSDコード状態マシンの出力をMPSDスキャンを試みる前にイナクティブ状態(PAUS、CSM_C0およびCSM_Ce論理0)に配置する責任を負う。すべての非スキャンMPSDコード(FUNC、CNTL、HALTおよびPAUS)は論理1のC1を有するので、C1はNOT SHEFT_DR OR NOT JTAG演算コード(Ox20〜Ox23、Ox30およびOx32)として発生し、C0はSHIFT_DR AND JTAG演算コード(Ox22〜Ox23およびOx32)として発生する。これによって実際にMPSDデータまたはMPSD制御パスをスキャンし、両方の実行コード発生器を発生するC1から解放するときのみC1に0を生じる。
コード発生器570はECRモードビット、TAP状態、MPSDデータおよびMPSD制御演算コードのデコードおよびMPSDコード状態マシンから入力を得て、領域に供給されるMPSDコードを形成する。STRAPでないとき、C1は、Ox20〜Ox23およびOx30およびOx32(MPSDデータまたはMPSD制御パスをスキャンする)のJTAG演算コードと共にSHIFT_DR状態ANDedに割り当てられる。このためSDATおよびSCTLのMPSDスキャンコードは、正しいスキャンパスが選択されデータレジスタスキャン状態が発生しない場合発生できない。MPSD制御パスが選択される場合(Ox22〜Ox23、Ox30およびOx32のJTAG演算コード)、C0はJTAG SHIFT_DR状態で1に設定される。
DTPデータパスのスキャンに追加制約が配置される。CAPTURE_DR状態はTCLK_SELをサンプリングし、それが誤りの場合、MPSD PAUSコードがSHIFT_DR状態の間DTPに適用される。さらにDTPデータスキャンパスの出力は0にされる。TCLK_SELが誤りのときTCLK SELのキャプチャされた値がDTPデータスキャンパスの第1ビット上の出力となる。スキャンコードはエミュレーションソフトウェアがCSMのCSM_C0およびCSM_Ce出力が論理0であることを保証するときのみ発生できる。
【0155】
表61、表62および表63はさまざまなコード発生器ソースの役割を示す。表61はSTRAPコードの真理値表を示し、表62はエミュレーションモードの真理値表を示し、表63はATPGモードの真理値表を示す。
【0156】
【0157】
【0158】
エミュレーションモードでは、MPSDコード発生器(MCG)570がMPSDテストポートバス306に適用されるMPSDコードのC1ビットを制御する(図15)。MCGは、JTAG MPSDデータスキャンが進行しているとき(C1=0)以外はC1をハイにする。CSMがMPSD PAUS状態を出力するとき、MCGはJTAG TAP状態をMPSDスキャンコートにマップする。JTAGデータスキャンパスはMPSDバスデータスキャンパスに直接接続される。すべてのロックされないMPSDテストポートは、JTAG TAP状態がSHIFT_DR状態に遷移するときTCLK上でデータと共にスキャンされる。NPSDデータまたは制御パスはJTAG IRパス選択を通じて選択される。JTAG SHIFT DR状態サイクルを通じて、C1はSDAT_HALT、SDAT_CNTL、SCTL_HALTまたはSCTL_CNTL演算コードのいずれかが存在する場合(Ox20〜Ox23、Ox30およびOx32)ローにドライブされる。COは、SCTL_HALTまたはSCTL_CNTL(Ox22〜Ox23およびOx32)パスが選択される場合1にドライブされ、SDAT_HALTまたはSDAT_CNTL(Ox20〜Ox21およびOx30)パスが選択される場合0である。
【0159】
ATPGモードでは、すべてのDTP MPSDコードは、ラン−テスト/アイドル状態以外直接JTAG TAP状態制御装置からマップされる。ラン−テスト/アイドルではCSMがMPSD実行コード状態(CNTLまたはHALT)をドライブするために利用される。CSMはアンロックされ、EXEまたはTRM状態(JTAG IRコマンドによって選択される)がMPSDバスをドライブする。ラン−テスト/アイドルでは、JTAG−IRがOx20またはOx21以外のコードを含む場合、前にマップされた状態(HALTまたはPAUS)が引き続きMPSDバスに適用される。CSMがロックされている場合(またはアンロックされているが、新しいMPSDコードがMPSDバスに適用されていない場合)前にマップされた状態が引き続き適用される。ラン−テスト/アイドル状態が終了すると、MPSDコード発生器はJTAG状態マッピングを利用してMPSDバスをドライブする。エミュレーションモードでのように、DTPスキャンパスはIRにロードされたDTPスキャン演算コードを通じて選択される。ATPGモードでは、スキャン状態のデータスキャンレジスタグループのマッピングによって、正常なJTAGからMPSDへのシフトコード変換が発生するSHIFT_DR状態以外、MAP_COおよびMAP_Ceは0になる。エミュレーションモードが切換えられて(ECRスキャンから)ATPGモードを形成する場合、CSMは、CSMがアンロックされるまでPAUS(SHIFT_DRがマップされた状態)をドライブし続ける。
表65はエミュレーションおよびATPGモード両方の状態デコードを示す。
【0160】
STRAPモードではすべてのECRロックビットはイナクティブにドライブされ、領域が現在のMPSDコードを使用するようにする。MPSDストラップモードはまたMPSD FUNCをMPSDバス306に向ける。
MTAP領域クロック管理
領域クロック管理は装置モードによって制御される。UCLK_SELおよびTCLK_SEL信号はモードビットによってMCG570にゲートインする。MPSDストラッブモートては、MCGはUCLK_SELを発生するクロック切換器をオーバーライドする。ATPGモードはTCLKを選択するクロック切換器をオーバーライドする。エミュレーションモードではUCLK_SELおよびTCLK_SELはクロック切換器620の出力にソースを有する。
UCLK_SELおよびTCLK_SELは、イナクティブのとき、DTPから領域へソースされる機能およびスキャンクロックをゲートオフする。CSMのクロック切換器620が領域のクロックをUCLKからTCLKに切換えるために必要な条件を検出すると、UCLK_SELは、スレーブ段階がハイでマスタ段階がローの間イナクティブにドライブされ、マスタクロックをオフにする。DTPクロックの多重化によって、両方のクロックが選択解除されている間スレーブ段階がクロック多重化出力でハイにあることが保証される。TCLK_SELは、UCLK_SELがイナクティブでTCLK(スレーブがハイでマスタがローの間)をテストポートにイネーブルにする同期遅延の後アクティブにドライブされる。この機構は機能クロックの切換を行う前のブレークを行う。TCLKからUCLKに復帰する切換も同様に行われる。CSMはクロック切換が完了するまでMPSDバスにPAUSを適用する。また、ロックされていないテストポートのみはクロックが切換えられる。
領域がアンロックの過程にあるとき、クロック切換信号の状態は、アンロックされた領域のクロックの状態に一致するものでなければならない。状態が一致しない場合同期なしのクロックの切換が発生する。この状況はソフトウェアによって避けられる。
【0161】
図41はMTAPイベント発生回路(EVTA)590の概略図である。EVTAはアンロックされた領域によってイネーブルにされるイベントである。2種類のイベントがEVTAを発生することができるが、それらはMSGSWとCPU_DONEである。
図41から、CPULOCKの状態によって、MSGSWまたはCPU_DONEのどちらかがEVTAを発生できることがわかる。すなわち、CPUがロックされていない場合、EVTAを発生できる唯一のイベントはDONEである。DONEはまたANYSTOPによって識別されるので、DONEがANYSTOPによって発生した場合EVTAは発生しない。すなわち、MPSDによって発生したDONEだけがEVTAを発生できる。この理由はANYSTOPがアクティブな場合EVTAを発生しCSMによって出力される状態とひいてはMPSDバスの状態を変更する理由がないからである。
MTAPパワーダウンサポート
エミュレーションモードでは、MTAPコマンドおよびスキャンクロックの切換は、アクティブ機能クロックに依存する。パワーダウンモードでは、これは真でないことがある。従って、機能クロックのイネーブルを要求する機能クロック要求(FCLK_REQ)信号がMTAP305からメガモジュールに向けて発生する。FCLK_REQは表66に定義するように発生する。
【0162】
メガモジュールがパワーダウン状態にある場合、CSMがCNTLまたはFUNCを適用するときCPU_DONEをイナクティブにドライブしなければならないことにも注意されたい。CSMがHALTを適用するときCPU DONEはアクティブにドライブしなければならない。
【0163】
図42は、CSM530に位置するMTAPカウンタ回路630を示す。カウンタ631はさまざまな機能(性能解析、実行制御またはデータストリーミング)のために設定可能な10ビットダウンカウンタである。カウンタ631とその制御ビットはスキャンに関して影付きである。カウンタはUCLKをランオフするが、影ビットはTCLKをランオフする。カウンタのスキャンパスが選択されると(LEVT_CNTRコマンド)、CAPTURE_DR JTAG状態(データストリーミングモードでなく)の間影ビットはカウンタの値がロードされ、JTAG IDLE状態の間カウンタはシフトビットからロードされる。カウンタのロードを行うためにIDLE状態を使用することによって同期ロードが行われる。MTAP_BORROWおよびXFER_DATA信号は1クロックサイクル幅である。
AUXビットはカウンタのシフトパス中の唯一のビットで、SMM_IDスキャンの間IDバスのための16番目のビットとして利用される。SMM_IDスキャン動作の間、カウンタのシフトレジスタの16ビットにはCAPTURE DR状態によって16ビットIDバスの値がロードされる。
カウンタモードフィールドは選択された機能のためのカウンタ631の設定に利用される。表67はカウンタ630のCMビットフィールドを定義し、表68はCESビットフィールドを定義する。
【0164】
【0165】
特殊エミュレーション(SE)装置サポート
再び図15を参照すると、メガモジュール境界301は特殊エミュレーション装置をサポートする信号を含む。SE装置にはメガモジュール300と第4SE解析(SEA)領域の追加制御レジスタが含まれる。SE装置用の制御レジスタはメモリマップされる。
図11に戻ってこれを参照すると、DP段階の実行パケットのプログラムカウンタの値はPCDPと呼ばれるレジスタでラッチされる。PCDPは、正確な一致、範囲の比較またはビットフィールドマスキングの比較のためにエミュレーション論理に保持された値と比較できる。PCDPがハードウェアプログラムのブレークポイントについて特定のアドレス集合と一致する場合、SEエミュレーション論理はそのサイクルの間SEEを設定する。
DADDR、DDATA_I、DDATA_O、DRNWおよびDBSがデータアクセス上のブレークポイントを検出するためにCPU境界で利用できる。(適当なストローブによって修飾された)アドレスとデータの両方はブレークポイント値の正確な一致、範囲またはマスクの比較のために使用できる。データブレークポイントは、データアドレスがE2段階の間CPU境界に存在する点でプログラムブレークポイントと異なっている。実行パケットは実行に入る前にブレークポイントが中止できないようにする。しかし、エミュレーション論理はPCDPストリームからブレークポイントを発生した命令を復元できる。PCDPのバッファにはこの機能のために必要なものがある。
トレースと性能解析
メモリ制御と割込み応答信号はトレース用バスで利用可能である。信号BRTKはPCDPによって示されるアドレスが分岐先だったことを示す。8つの信号(FU_L1、FU_M1、FU_D1、FU_S1、FU_L2、FU_M2、FU_D2、FU_S2)が、E2(前のサイクルではE1) の実行パケットが、それぞれA−またはB−側のL−、M−、D−またはSユニットの命令を実行したかを示す。ユニットの割り当てはデコードのために用いられるデコードブロックを参照する。これは並行処理と特定の命令に関する条件が真と評価されるかを評価するために使用できる。最後に、3ビットEPSIZE出力はDC中の実行パケットの大きさ(語)を示す。これはIDLEおよび複数サイクルNOPによって導入される割込み処理とすべての臨時サイクルでは0であるべきである。
【0166】
図43は、メガモジュール300のMTAP305と領域とDTPとの間の相互接続をより詳細に示す相互接続図である。図35に示すように、SE解析は独立したスキャンパス457および458を利用するが、それはMTAP MPSD制御バス(C0、C1、Ce)をメガモジュールDTPと共有する。表69で説明される信号はMTAP305からSE解析モジュールへのインターフェースとなる。
【0167】
SEはメカモシュールDTPと同一のDTPを利用する。SE解析C0、C1およびCeビットは、メガモジュールDTPのC0、C1およびCeビットと並列にSEのDTPに提示されるようにタイミングを取られる。
さらに図43を参照すると、MTAP305モジュールはJTAG環境と各DTPとの間のインターフェースファンアウトを提供する。各DTPへのファンアウトは、MPSDコード(C0、C1、Ce)バス、TCLKとUCLKの間の領域クロック切換を制御する信号、テストポートの制御SRLのロードを制御するアップデート信号、エミュレーションステータスおよびMPSD BUSで同報されないMTAPコマンドからなる。
さらに図43を参照すると、データストリームスキャンパス回路700にはストリームデータをストリームレジスタ393に転送する回路が含まれる(図31D)。STRM_I/Oバス701はストリームデータをCPU領域10に転送する。この回路は図44に関して詳細に説明される。
【0168】
図44はデータスキャンパス回路700の詳細を示す図である。スキャンレジスタ710はDATA_STRMスキャンパス456の一部を形成する(図35)。STRM_I/Oバス701はストリームデータをCPU領域10にある(前に図31Dに関して説明された)データストリーミングレジスタSTREAM393に転送する。ストリームデータは、前に表37〜表41に関して説明されたように、CPU領域10のさまざまな保存位置との間で転送される。5ビットカウンタ632は図42に関して説明されたカウンタ631の一部である。コンパレータ635はJTAG IR580を監視して、SDAT_STRM JTAG命令がJTAG IR580に存在する時を判断する。ゲート636は、信号637によって示される各JTAGシフト状態に反応してカウンタ632を減らす。コンパレータ712はカウンタ632が00に達する時を判断して信号XFER_DATA702を表明する。
表64に関して説明されるように、ストリームデータは、ロード命令がCPU10の命令レジスタにあるときスキャンレジスタ710から転送される。この場合、STREAMレジスタ393が信号702に反応してロードされる。保存命令がCPU10の命令レジスタにあるとき、データはSTREAMレジスタ393からスキャンレジスタ710に転送される。この場合、書き込みイネーブル信号が保存命令に反応して表明され、ゲート713が、XFER_DATA信号702に反応して信号717を表明してロードスキャンレジスタ710をロードする。
さらに図44を参照すると、表44に関して説明されたように、ステータス回路730は、XFER_DATA信号702に反応してMTAPステータスビットSTRY_TGLEおよびSTSW_TGLEを作成する。ハンドシェーク信号731にはECT520からのCPU_DONEおよびTERM(0、1)が含まれる。
図45はEMUピンの接続を示す概略図である。EMU[1:0]はEMU入力/出力ピンである。これらのピンはマルチプロセッササポートのためのエミュレーションイベント入力と外部イベント検出のための出力とを提供する。すべてのJTAGおよびエミュレーションピンはエンドシステムでは接続されずに放置される。これを容易にするために、TMS、TCLK、TDI、EMU1およびEMU0ピンは、プルアップ900として示すように、小さなプルアップ抵抗を有している。TRST−は小さな内部プルダウン抵抗を有し、JTAG TAPおよび境界論理が接続がない場合リセット状態に維持されることを保証する。
【0169】
図46は本発明の態様を使用する装置1000の代替実施例の構成図である。MTAP305のJTAGインターフェースによってサポートされる複数の設定が存在する。図46はメガモジュール1010およびカスタム論理モジュール1020を有する一例である。JTAGモジュールTDO/TDI信号はすべてシリアルに接続され、TMSおよびTRST信号はすべてパラレルに接続されていることに注意することが重要である。モジュールの順序は重要ではない。モジュールの順序は目標システムのJTAG装置設定ファイルに対応しなければならない。このファイルはエミュレーションソフトウェアによって利用され同じスキャンチェーンのJTAG装置およびJTAGモジュールを管理する。
EMUステータス
再び図43を参照すると、マイクロプロセッサ1のCPUまたはオンチップメモリシステムの中でさまざまなエミュレーションステータスビットが発生する。これらの信号はMTAP305にレベルとしてもたらされる。それらはCAPTURE−IR状態の間JTAG IR580のシフトレジスタにラッチされる。表70は停止モードエミュレーションステータス信号を説明する。表71は実時間モードエミュレーションステータス信号を説明する。表72はCPUエミュレーションステータス信号を説明する。表73はCPUエミュレーションイベント信号を説明する。
【0170】
【0171】
ここで使用される「適用される」「接続される」および「接続」という用語は電気的に接続されることを意味し、電気的接続パスに追加素子がある場合を含む。
本発明は例示としての実施例に関して説明されたが、この説明は限定する意味で構成されることを意図したものではない。この説明に関して本発明のさまざまな他の実施例が当業技術分野に熟練した者には明らかであろう。添付の請求項が本発明の真の範囲と精神の範囲内にある実施例のこれらの修正を包含することが考慮される。
【0172】
以上の説明に関してさらに以下の項を開示する。
(1)デバッグ中にデータ処理システムにおいてプロセッサ命令実行パイプラインおよびサブシステムデータパイプライン間の同期を維持する方法において、
通常の演算方法で前記プロセッサ命令実行パイプラインにあるシステムコードを実行し、前記命令実行パイプラインと前記データパイプラインにおいて複数の演算を開始する段階と、
前記プロセッサから前記サブシステムへ第1の信号を送信し、停止間近であることを示す段階と、
前記第1の信号の受信に応えて、前記サブシステムを停止に備えて調節する段階と、
前記複数の演算のうちの少なくとも一つが依然停止間近の状態となるように、前記プロセッサパイプラインの前記通常の演算を停止する段階と、
前記サブシステムに第2の信号を送信することにより、前記プロセッサパイプラインが停止したことを示す段階と、
前記命令実行パイプラインにおいて前記依然停止間近の状態にある前記複数の演算のうちの少なくとも一つに対応する前記サブシステムパイプラインにおける前記演算のうちの任意の演算が維持されるように、前記第2の信号の受信に応えて前記サブシステムを停止する段階と、
前記データ処理システム内で無関係な演算が一切発生しないような方法で前記プロセッサ命令実行パイプラインにある前記システムコードの実行を継続する段階と、を含む方法。
(2)命令実行パイプラインを有するマイクロプロセッサと、
データパイプラインを有する前記マイクロプロセッサに接続されたサブシステムと、
通常の演算方法で前記プロセッサ命令実行パイプラインにあるシステムコードを実行し、前記命令実行パイプラインと前記データパイプラインにおいて複数の演算を開始する回路と、
前記プロセッサから前記サブシステムへ第1の信号を送信し、停止間近であることを示す回路と、
前記第1の信号の受信に応えて、前記サブシステムを停止に備えて調節する回路と、
前記複数の演算のうちの少なくとも一つが依然停止間近の状態となるように、前記プロセッサパイプラインの前記通常の演算を停止する回路と、
前記サブシステムに第2の信号を送信することにより、前記プロセッサパイプラインが停止したことを示す回路と、
前記命令実行パイプラインにおいて前記依然停止間近の状態にある前記複数の演算のうちの少なくとも一つに対応する前記サブシステムパイプラインにおける前記演算のうちの任意の演算が維持されるように、前記第2の信号の受信に応えて前記サブシステムを停止する回路と、
前記データ処理システム内で無関係な演算が一切発生しないような方法で前記プロセッサ命令実行パイプラインにある前記システムコードの実行を再開するする回路と、を含むデータ処理システム。
(3)前記マイクロプロセッサに接続されたプログラム命令を保持するメモリと、前記マイクロプロセッサに接続されたディスクドライブとをさらに具備する第2項記載のデータ処理システム。
(4)外部テストシステム51への接続時に集積回路42のデバッグとエミュレーションが行えるエミュレーションユニット50と共に、マイクロプロセッサ1および周辺装置60〜61を備えた集積回路42上のデータ処理システムが提供されている。マイクロプロセッサ1は、フェッチ/デコードユニット10a〜cと機能実行単位12、14、16、18に関連のある複数の実行段階を備えた命令実行パイプラインを有している。マイクロプロセッサ1のパイプラインが非保護であることから、命令記憶装置23に記憶されたシステムプログラムコードによって、データメモリ22およびレジスタファイル20へのメモリアクセスの待ち時間が利用できる。また、エミュレーションユニット50によって、マイクロプロセッサ1の非保護パイプラインをエミュレートする手段と、メモリ22〜23を迅速にアップロードおよびダウンロードする手段が得られる。エミュレーションユニット50は、無関係な演算の発生等、エミュレーション中にメモリ22〜23や周辺装置60〜61に影響を及ぼす事態を回避するような方法で演算を行う。
【関連出願についての表示】
本願は、以下の出願に関連し、
S.N. ,(TI−22105);S.N. ,(TI−22106);
S.N. ,(TI−22108);S.N. ,(TI−22109);
S.N. ,(TI−23604);S.N. ,(TI−24333);
S.N. ,(TI−24334);S.N. ,(TI−24335);
S.N. ,(TI−24942);S.N. ,(TI−24946);
S.N. ,(TI−24947);S.N. ,(TI−24948);
S.N. ,(TI−24956);S.N. ,(TI−25049);
S.N. ,(TI−25112);S.N. ,(TI−25113);
S.N. ,(TI−25248);S.N. ,(TI−25309);
S.N. ,(TI−25310);S.N. ,(TI−25311);
S.N. ,(TI−25311AA)
上記出願は、いずれも本願と同時期に出願され、この文章中に引用されている。
【図面の簡単な説明】
【図1】本発明の一実施例に関わる構成部品を示す、デジタル信号プロセッサ(DSP)のブロック図である。
【図2】図1に示す機能単位、データパス、およびレジスタファイルのブロック図である。
【図3】図1に示すDSPのアドレス指定モードレジスタ(AMR)を示す図である。
【図4】図1に示すDSPの制御ビットならびに状態ビットを有する制御状態レジスタ(CSR)を示す図である。
【図5】図1に示すDSPの32の汎用入力信号をサポートする汎用入力レジスタ(IN)を示す図である。
【図6】図1に示すDSPの32の汎用出力信号をサポートする汎用出力レジスタ(OUT)を示す図である。
【図7】図1に示すDSPの40ビットデータ用レジスタ記憶域構成を示す図である。
【図8】図1に示すDSPの演算コードマップを示す図である。
【図9】図1に示すDSPのフェッチパケットの基本形式を示す図である。
【図10】Aは完全に直列なpビットによる図9のフェッチパケットを示す図、Bは完全に並列なpビットによる図9のフェッチパケットを示す図、Cは一部直列なpビットによる図9のフェッチパケットを示す図である。
【図11】図1に示すDSPのパイプラインの各段階を示す図である。
【図12】分岐命令の各段階を示す図である。
【図13】クロックサイクルとフェッチパケットに基づく図1のDSPのパイプラインの演算を示す図である。
【図14】3つの実行パケットを有するフェッチパケットnと、それぞれ1実行パケットを有する後続の6つのフェッチパケット(n+1〜n+6)(8並列命令を有する)を示す図である。
【図15】図1に示すプロセッサ用MTAP−テストポートインタフェースのブロック図である。
【図16】図1に示すプロセッサ用メガモジュールリセットシーケンスのタイムチャートである。
【図17】AはINT4〜INT15およびNMIの状態を保持する割込み標識レジスタ(IFR)を示す図、Bは図1のDSPの割込み許可レジスタ(IER)を示す図、CはIFRに手動で割込みの設定または解除が行える割込み設定レジスタ(ISR)を示す図、DはIFRに手動で割込みの設定または解除が行える割込みクリアレジスタ(ICR)を示す図である。
【図18】図1のプロセッサの分析割込みの検出に関するタイムチャートである。
【図19】2つの分析割込み関連命令SWIおよびB ARPを示す図である。
【図20】図15のMTAPのMTAP−CPUインタフェース信号を示すブロック図である。
【図21】図1のプロセッサのMTAP−メガモジュール領域インタフェースを示すブロック図である。
【図22】図1のプロセッサのテストポート状態を示す状態図である。
【図23】Aは図1のプロセッサのUCLKに関するFunctional RunからScanまでのクロック切換えに関するタイムチャートBは図1のプロセッサのTCLKに関するFunctional Runからのクロック切換えに関するタイムチャート、Cは図1のプロセッサのUCLKに関するFunctional RunからTCLKに関するFunctional Runまでのクロック切換えに関するタイムチャートである。
【図24】図1のプロセッサのMSENDビットに基づくData Scanのスキャンチェーンに関する表である。
【図25】図1のプロセッサの停止に関する様々なケースを示すタイムチャートである。
【図26】信号ERDYを形成する回路の回路図である。
【図27】図1のプロセッサの割込み処理中にCPUテストポートにより要求された停止に関するタイムチャートである。
【図28】テストポートからの要求によるテストの停止(Test Port Requested Test Halt)を示すタイムチャートである。
【図29】図1のプロセッサのエミュレーションを行うためのパイプライン管理プロセスを示しているパイプライン停止に関するタイムチャートである。
【図30】図1のプロセッサのエミュレーション後のパイプライン復旧プロセスを示しているタイムチャートである。
【図31】Aは図1のプロセッサの分析制御レジスタを示す図、Bは図1のプロセッサの分析データレジスタを示す図である。
【図32】Aは図1のプロセッサの分析データ割込みリターンポインタを示す図、Bは図1のプロセッサのデータストリームレジスタを示す図である。
【図33】図1のプロセッサの命令実行パイプラインに関するタイムチャートであり、多様なパイプライン段階を示している。
【図34】図1のプロセッサにおけるメガモジュールへのピンの接続を示すブロック図である。
【図35】図1のプロセッサのJTAG命令とデータレジスタパスを示すブロック図である。
【図36】Aはストラップ状態が図35のレジスタで選択された場合のJTAG命令レジスタの内容を示す図、Bはストップエミュレーション状態が図35のレジスタで選択された場合のJTAG命令レジスタの内容を示す図、Cはリアルタイムエミュレーション状態が図35のレジスタで選択された場合のJTAG命令レジスタの内容を示す図、Dはエミュレーションエラー状態が図35のレジスタで選択された場合のJTAG命令レジスタの内容を示す図である。
【図37】図1のプロセッサのJTAG−MPSDインタフェースのブロック図である。
【図38】図35のエミュレーション制御レジスタを示す図である。
【図39】図1のプロセッサのMTAPのコード状態マシン(CSM)のブロック図である。
【図40】図39のCSMのクロックソーススイッチの略図である。
【図41】図1のプロセッサのEVTA割込みを生成する回路の略図である。
【図42】図35のカウンタレジスタを示す図である。
【図43】図1のプロセッサの領域間の相互接続を示すブロック図である。
【図44】図43のMTAP内のストリームスキャンレジスタを示すブロック図である。
【図45】図1のプロセッサのEMUピン接続を示す略図である。
【図46】図1のプロセッサのJTAG TAPの構成を示すブロック図である。
【符号の説明】
1 マイクロプロセッサ
10a〜10c フェッチ/デコードユニット
20 レジスタファイル
22,23 メモリ
50 エミュレーションユニット
60,61 周辺装置
Claims (2)
- デバッグ中にデータ処理システムにおいてプロセッサ命令実行パイプラインおよびサブシステムデータパイプライン間の同期を維持する方法において、
通常の演算方法で前記プロセッサ命令実行パイプラインにあるシステムコードを実行し、前記命令実行パイプラインと前記データパイプラインにおいて複数の演算を開始する段階と、
前記プロセッサから前記サブシステムへ第1の信号を送信し、停止間近であることを示す段階と、
前記第1の信号の受信に応えて、前記サブシステムを第2の信号に応答して停止する状態にする段階と、
前記複数の演算のうちの少なくとも一つが依然停止間近の状態となるように、前記プロセッサ命令実行パイプラインの前記通常の演算を停止する段階と、
前記サブシステムに前記第2の信号を送信することにより、前記プロセッサ命令実行パイプラインが停止したことを示す段階と、
前記命令実行パイプラインにおいて前記依然停止間近の状態にある前記複数の演算のうちの少なくとも一つに対応する前記サブシステムデータパイプラインにおける前記演算のうちの任意の演算が維持されるように、前記第2の信号の受信に応えて前記サブシステムを停止する段階と、
前記データ処理システム内で無関係な演算が一切発生しないように前記プロセッサ命令実行パイプラインにある前記システムコードの実行を継続する段階と、を含む方法。 - 命令実行パイプラインを有するマイクロプロセッサと、
データパイプラインを有する前記マイクロプロセッサに接続されたサブシステムと、
通常の演算方法で前記プロセッサ命令実行パイプラインにあるシステムコードを実行し、前記命令実行パイプラインと前記データパイプラインにおいて複数の演算を開始する回路と、
前記プロセッサから前記サブシステムへ第1の信号を送信し、停止間近であることを示す回路と、
前記第1の信号の受信に応えて、前記サブシステムを第2の信号に応答して停止する状態にする回路と、
前記複数の演算のうちの少なくとも一つが依然停止間近の状態となるように、前記プロセッサ命令実行パイプラインの前記通常の演算を停止する回路と、
前記サブシステムに前記第2の信号を送信することにより、前記プロセッサ命令実行パイプラインが停止したことを示す回路と、
前記命令実行パイプラインにおいて前記依然停止間近の状態にある前記複数の演算のうちの少なくとも一つに対応する前記サブシステムのデータパイプラインにおける前記演算のうちの任意の演算が維持されるように、前記第2の信号の受信に応えて前記サブシステムを停止する回路と、
データ処理システム内で無関係な演算が一切発生しないように前記プロセッサ命令実行パイプラインにある前記システムコードの実行を再開する回路と、を含むデータ処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3356896P | 1996-12-20 | 1996-12-20 | |
US033568 | 1996-12-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10187447A JPH10187447A (ja) | 1998-07-21 |
JP3916746B2 true JP3916746B2 (ja) | 2007-05-23 |
Family
ID=21871169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP37053297A Expired - Lifetime JP3916746B2 (ja) | 1996-12-20 | 1997-12-22 | データ処理システムのデバッグ中にプロセッサパイプラインおよびサブシステムパイプライン間の同期を維持すする方法と装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0864974B1 (ja) |
JP (1) | JP3916746B2 (ja) |
DE (1) | DE69728251T2 (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5564028A (en) * | 1994-01-11 | 1996-10-08 | Texas Instruments Incorporated | Pipelined data processing including instruction trace |
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 |
US5574937A (en) * | 1995-01-30 | 1996-11-12 | Intel Corporation | Method and apparatus for improving instruction tracing operations in a computer system |
-
1997
- 1997-12-22 EP EP19970310449 patent/EP0864974B1/en not_active Expired - Lifetime
- 1997-12-22 JP JP37053297A patent/JP3916746B2/ja not_active Expired - Lifetime
- 1997-12-22 DE DE1997628251 patent/DE69728251T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69728251D1 (de) | 2004-04-29 |
EP0864974B1 (en) | 2004-03-24 |
EP0864974A2 (en) | 1998-09-16 |
DE69728251T2 (de) | 2005-01-13 |
JPH10187447A (ja) | 1998-07-21 |
EP0864974A3 (en) | 2000-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3820311B2 (ja) | データ処理システムのデバッグ中に命令実行パイプラインを管理する方法 | |
JP3916745B2 (ja) | データ処理システムのデバッグ中の単一ステッププロセッサパイプラインおよび下位システムパイプライン | |
EP0849671B1 (en) | A method for utilizing a multi-word instruction register during debugging of a data processing system | |
US6016555A (en) | Non-intrusive software breakpoints in a processor instruction execution pipeline | |
US6055649A (en) | Processor test port with scan chains and data streaming | |
US5970241A (en) | Maintaining synchronism between a processor pipeline and subsystem pipelines during debugging of a data processing system | |
US6553513B1 (en) | Emulation suspend mode with differing response to differing classes of interrupts | |
US6567933B1 (en) | Emulation suspension mode with stop mode extension | |
US6564339B1 (en) | Emulation suspension mode handling multiple stops and starts | |
TWI432756B (zh) | 用於虛擬內電路仿真之方法及設備 | |
US5805792A (en) | Emulation devices, systems, and methods | |
US5841670A (en) | Emulation devices, systems and methods with distributed control of clock domains | |
US6643803B1 (en) | Emulation suspend mode with instruction jamming | |
US5621651A (en) | Emulation devices, systems and methods with distributed control of test interfaces in clock domains | |
KR101545109B1 (ko) | Jtag 시스템들에 대한 연기 스케줄링을 위한 방법 및 장치 | |
US6557116B1 (en) | Emulation suspension mode with frame controlled resource access | |
Chen et al. | Software-based self-testing with multiple-level abstractions for soft processor cores | |
JP3746367B2 (ja) | プロセッサ命令実行パイプラインにおける非侵入ソフトウェアブレークポイント | |
JP4386974B2 (ja) | スキャンチェーンおよびデータストリーム機能を備えたプロセッサテストポート | |
EP0685793A2 (en) | Emulation device, system and method with distributed control of test interfaces in clock domains | |
JP3916746B2 (ja) | データ処理システムのデバッグ中にプロセッサパイプラインおよびサブシステムパイプライン間の同期を維持すする方法と装置 | |
Rath | Open on-chip debugger | |
Park et al. | Design methodology for on-chip-based processor debugger | |
JPH1011290A (ja) | マイクロプロセッサ | |
Melear | Emulation techniques for microcontrollers with internal caches and multiple execution units |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051115 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060215 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060220 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060512 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060609 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060911 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060920 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061211 |
|
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: 20070112 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070207 |
|
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: 20100216 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110216 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110216 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140216 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |