(57)【特許請求の範囲】
【請求項１】
データ処理システム内のプロセッサをデバッグする方法において、前記プロセッサがプロセッサ命令実行パイプラインを有し、
前記プロセッサ命令実行パイプライン中の複数の重複する演算を開始するために通常の演算方法で前記プロセッサ命令実行パイプライン中のシステムコードを実行する段階と、
少なくとも１つの重複する演算が不完全となるように前記プロセッサの前記通常の演算を停止して前記プロセッサ命令実行パイプラインを表す第１状態をセーブする段階と、
前記プロセッサ命令実行パイプラインを１段階進め、前記プロセッサ命令実行パイプラインを表す第２状態をセーブする段階と、を含む方法。
【請求項２】
プロセッサ命令実行パイプラインを有するマイクロプロセッサにおいて、
前記プロセッサ命令実行パイプライン中の複数の重複する演算を開始するために通常の演算方法で前記プロセッサ命令実行パイプライン中のシステムコードを実行する回路と、
少なくとも１つの前記重複する演算が不完全となるように前記プロセッサの前記通常の演算を停止する回路と、
前記プロセッサ命令実行パイプラインを表す第１状態をセーブする回路と、
前記プロセッサ命令実行パイプラインを１段階進め、前記プロセッサ命令実行パイプラインを表す第２状態をセーブする回路と、を含むマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサに関し、詳しくは、ＶＬＩＷ（超長命令語）プロセッサのアーキテクチャに関するものである。
【０００２】
【従来の技術および発明が解決しようとする課題】
集積回路の製造技術が進歩するにつれ、単一の集積回路装置内に、ますます多くの論理機能が収容されるようになっている。現代の集積回路（ＩＣ）装置には、一つの半導体チップ上に多数のゲートが配置され、このようなゲートを相互接続することによって、例えば、汎用マイクロプロセッサにあるような多種多様で複雑な機能を実現できるようになっている。そうした超ＬＳＩ（ＶＬＳＩ）を組み込んでいるこのような回路の製造には、回路の組立てにミスがないことが要求される。というのも、製造に何かしら欠陥があれば、そのことによって、設計の目的である機能がすべて実行できなくなる可能性も出てくるからである。このようなことから、上に述べた回路の設計に関する検査を行い、かつ製造後に電気的な各種テストを行う必要性が生じている。
【０００３】
しかしながら、回路がより複雑になるにつれて、回路内の各装置の検証や電気的テストにかかるコストならびに困難さも増している。電気的テストの観点から言えば、ＶＬＳＩ回路の各ゲートが正しく機能していることを全体的に検証するためには、原則的に、（デジタル的に、各ゲートがスタックオープンにもスタッククローズにもなっていないと判断し、）ゲートの各々を個別的に実行できるだけでなく、回路内の他のゲートと関連性を保ちながら、想定可能なあらゆる演算の組み合わせによって実行できなければならない。このようなことは、通常、テストベクトルを用いて所望のテストを実行する自動検査装置（ＡＴＥ）によって行われる。テストベクトルは、一定時間中のすべてのパッケージピンに対する所望のテスト入力（または信号）、関連する１クロックパルス（または複数パルス）、予想されるテスト出力（または信号）のことを言い、また、ある特定のゲート（またはマクロ）の［テスト］を試みる場合に用いられることも多い。複雑な回路では、膨大なテストベクトルを有することになり、したがって、テスト時間が長くなる。また、この文章中において、マクロとセルは、同じものを意味しており、相互に交換可能なものとして使用できる。
【０００４】
回路設計者は、これまで、ＶＬＳＩ回路のテスト効率の向上化を図るうえで、縮退故障モデリング技法を用いてきた。縮退故障モデリングは、個々のゲートに生じるスタックオープンまたはスタッククローズ故障に対して行われるのではなく、論理回路のスタックハイおよびスタックローノードを引き起こすそのような不良ゲート（および不良相互接続）が及ぼす影響に対して行われる。したがって、論理回路のエクササイズを行うために、テストベクトルの最小パターンが導き出されたのである。欠陥がある場合に、このようなテストベクトルを回路に当てはめることによって、スタックハイおよびスタックローノードを検出する。このような技法は、これまでに各世代のＶＬＳＩ回路のテスト効率の改善に役立ってきた。
【０００５】
さらに、ＶＬＳＩ回路の特定な回路構成には、特殊な信号の組み合わせ以外はすべてアクセス不可能なゲートがいくつか存在し、したがって、非常に特殊なパターンを持つ信号がない限り、故障が隠れた状態になる。しかしながら、各ゲートに対して想定可能な各組み合わせを施すのに長時間を要することと、各回路の実行に必要な検査装置の高いコストがかかることを考え合わせると、製造された回路を１００％テストするコストは莫大なものとなる。このようなことから、過去に、集積回路の製造業者は、チップ内の能動素子の全部に満たないテストの実行を余儀なくされたことにより、これに付随する製品の質的水準が、最適レベルを下回るようになったことがある。したがって、集積回路設計の最大の問題の一つとして言えるのは、最終的なＩＣ設計を適切にテストする能力であり、この問題は、集積回路がより複雑になるにつれ、ますます重大なものとなっている。
【０００６】
この問題への１対処法として、テスト容易化設計（ＤＦＴ）がある。ＤＦＴの重要なコンセプトは、制御可能性と観察可能性である。制御可能性とは、回路内に配置されたどのノードの状態も設定ならびにリセットできる能力のことを言い、観察可能性とは、回路内の任意のノードの状態を直接もしくは間接に観察できる能力のことを言う。ＤＦＴの目的は、外部入力／出力から内部および外部ノードを制御ならびに観察する能力を高めることにある。すなわち、ＤＦＴ技術は、論理の検証やＤＣパラメトリックのテストに使用してもよい。
【０００７】
テスト性を回路内に設計すると、回路への影響をある程度与えることになり、さらに論理を加えることになろう。このような論理の追加によって、設計の実現に必要なシリコンの量が増大する。テスト性の強化によって節約される分は、大抵、回路の開発時間やテストにかかるコスト、さらにそのエンドシステムが分析されるまで現われてこない。
【０００８】
縮退故障モデリングおよび関連するテスト生成と組み合わせて、テスト性の改善のため特に設計されたＶＬＳＩ回路に他の回路を組み込むことも可能である。テスト回路の一種として、論理回路内のスキャンパスがある。スキャンパスは、一連の同期クロック式マスタ／スレーブラッチ（またはレジスタ）によって構成されており、各ラッチは、論理回路の特定ノードにそれぞれ接続されている。このようなラッチは、論理回路ノードを既定の状態に予め設定し、直列データストリーム（スキャンイン）によってロードすることができる。したがって、通常の方法で、論理回路のエクササイズを行うことができるうえ、（スキャンラッチを備えた各ノードの）演算結果は、各ラッチに記憶される。ラッチの内容を直列にアンロード（スキャンアウト）することによって、関連ノードの特定のテスト演算結果を読み出して、誤ったノード演算の分析を行うことができる。多くの多様なデータパターンを用いてこの演算を繰り返すことにより、論理回路に必要な組み合わせをすべて効果的にテストできるが、各能動部品またはセルならびに想定可能なあらゆる相互作用を個別にテストする場合に比べて、テスト時間が短くなるうえにコストも低下する。また、スキャンパスは、ラッチ（またはレジスタ）に直接書き込むことによって、また、ラッチ（またはレジスタ）の内容を直接観察することによって、回路の初期化が行える。スキャンパスの使用は、従来の［機能モード］法に比べて、テストベクトル量を減少させるうえで有効である。このようなデータのスキャン技法については、［Ａ  Ｓｕｒｖｅｙ  ｏｆ  Ｄｅｓｉｇｎ  ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ  Ｓｃａｎ  Ｔｅｃｈｎｉｑｕｅｓ］（ＶＬＳＩ  Ｄｅｓｉｇｎ：  第５巻、Ｎｏ．１２、１９８４年１２月発行。Ｐ．３８〜６１）の中で、Ｅ．Ｊ．ＭｃＣｌｕｓｋｅｙによって述べられている。
【０００９】
さらに、ＶＬＳＩ技法の向上に伴って、集積回路の利用者は、利用者の用途に合わせてカストマイズされた機能を実行する目的から、特別に設計され組み立てられた集積回路を必要とするようになってきている。このような集積回路は、エーシック（ＡＳＩＣ：  特定用途向け集積回路）と呼ばれている。プログラマブルファームウェアに実装されている特殊な機能を備えた汎用マイクロコンピュータとコスト面で競合し、さらに、小規模集積回路により形成されたボード設計とコスト面で競合するＡＳＩＣ装置の場合、ＡＳＩＣ回路の設計時間を短縮しなければならず、ＡＳＩＣ回路は、低コストで製造可能かつテスト可能でなくてはならない。したがって、このような回路が設計上モジュール化されて各モジュールが一定の機能を実行する方法が有効となり、これにより、予め設計された回路のモジュールを組み合わせて新たなＡＳＩＣ回路を形成することが可能になる。このような方法は、非ＡＳＩＣマイクロコンピュータおよびマイクロプロセッサにも利用できる。最終生成品の如何を問わず、モジュール化の方法を用いることによって、設計者は、予め検証され製造可能性が立証された論理を採用することができる。しかしながら、現在のスキャンパスを収容している論理モジュールが新たな回路に利用される場合に、通常、新規装置に新規テストパターンが必要になることから、設計／製造サイクルタイムが長くなる。
【００１０】
これまで、スキャンパスや他のテスト性回路を利用するモジュール化方式によって、予想可能なあらゆる欠陥が完全にカバーされてきた。しかし、この方式は、システムバスを用いてスキャンテストのセットアップと操作を行うことから、各モジュールが他とは無関係にテストされたとしても、一定のモジュールに対して設計されたテストパターンは、バス制御とモジュール選択のために、論理回路内の他のモジュールの演算に依存することになる。その結果、特定のモジュールに関するテスト性は、他のモジュールの障害のない演算に左右されることになる。さらに、一定のモジュールのテスト条件を設定する自動テストパターン生成（ＡＴＰＧ）プログラムは、他のモジュールに対する該当モジュールの位置と、このような他のモジュールの動作特性に依存している。したがって、テスト時間とコストの削減は、このようなモジュール化によって実現可能ではあるものの、個々のモジュールのスキャンパスのロード／アンロードにシステムバスを利用することによって、特定モジュールの演算に影響するだけでなく、一定のモジュールに対してテストプログラムをある論理回路から別の論理回路へ［ポートする］ことができくなる可能性も出てくる。
【００１１】
近年、ＡＳＩＣの設計に、メガモジュールが使用されている（メガモジュールは、テキサスインスツルメンツ社の商標である）。メガモジュールには、ＳＲＡＭ、ＦＩＦＯ、レジスタファイル、ＲＡＭ、ＲＯＭ、ＵＡＲＴ（ユアート：  汎用非同期式レシーバトランスミッタ）、プログラマブルロジックアレイ等の論理回路の各タイプがある。メガモジュールは、通常、複雑性において少なくとも５００ゲートから成りかつ複雑なＡＳＩＣマクロ機能を有する集積回路モジュールとして定義されている。このようなメガモジュールは、予め設計し、かつＡＳＩＣ設計ライブラリに保存しておくことができる。したがって、設計者がメガモジュールを選択し、設計されたＩＣチップの一定領域内に配置することができる。このため、ＡＳＩＣ設計者は、メガモジュールを、単純マクロと同じくらい容易に各自の論理に組み入れることができるようになる。
【００１２】
ＡＳＩＣのこのようなテスト上の問題を解決するもう一つの方法は、いわゆるパラレルモジュールテスト（ＰＭＴ）の使用であり、［直接接続（ｄｉｒｅｃｔｃｏｎｎｅｃｔ）］スキームと呼ばれることも多い（パラレルモジュールテストは、テキサスインスツルメンツ社の商標である）。ＰＭＴは、直接接続スキームであるが、これは、外部ピンをメガモジュールに接続し、それ以外の論理回路やバッファ等をすべてバイパスするからである。このＰＭＴは、主に論理検証テスト性スキームとして作製されたものであり、最近では、限定的なＶＩＨ／ＶＩＬおよびＩＣＣＱテスト性スキーム向けに強化されている。しかしながら、このＰＭＴにも問題が発生する可能性はある。つまり、テスト選択中および割込み許可中に、ＡＳＩＣ回路の論理状態が、テストプロセスの一部として混乱する可能性が生じるからである。
【００１３】
もう一つの解決法として、ＩＥＥＥ１１４９．１標準のいわゆるＪＴＡＧテストポートによって定義されたテストアクセスポートおよび境界スキャンアーキテクチャが挙げられる。ＩＥＥＥ１１４９．１は、主に、システムテスト法に対して提供されており、ＩＥＥＥ１１４９．１標準では、テスト機能専用に使用される最小限の４本の実装ピンを備えていればよい。しかし、ＩＥＥＥ１１４９．１標準では、各Ｉ／Ｏバッファ用に境界スキャンセルを備える必要があり、これによって、シリコンオーバヘッドだけでなく、すべての正常な演算機能ピンに対してさらにデータの遅延を引き起こすことになる。また、ＩＥＥＥ１１４９．１標準は、内部テスト性スキームの一部を制御する［フック］を有しているが、チップレベルのテストに最適化されていない。つまり、ＩＥＥＥ１１４９．１は、内部ＤＣパラメトリックのテストを明示的にはサポートしていない。
さらに、ソフトウェアブレークポイント（ＳＷＢＰ）によって、マイクロプロセッサコードのデバッグとシステム性能評価が行える別の構造が考えられる。ＳＷＢＰは、プログラムが、停止ポイントの演算コードがメモリ内でソフトウェアブレークポイントの演算コードと交換できる書込み可能記憶装置モジュールにあれば、通常、演算コードの置換によって得られる。大抵のマシンでは、ＳＷＢＰ演算コードが命令実行パイプラインの最初の実行段階に達すると、パイプラインに進行を停止させるか、あるいは、割込みサービスルーチンへトラップさせて、パイプラインが停止もしくはトラップしたことを示すデバッグ状態ビットを設定する。保護パイプラインとして分類されているプロセッサでは、ＳＷＢＰの後にそのパイプラインにフェッチされた命令は実行されない。一方、すでにそのパイプラインにある命令は、完了させることができる。実行をリスタートするときは、パイプラインをクリアして、演算コードがメモリ内で最初の演算コードに置き換えられた後にＳＷＢＰメモリアドレスの演算コードを先取りするだけで、リスタートできる。
【００１４】
マイクロプロセッサ設計者の間では、並列法の利用によってシステムの性能向上を試みる傾向が高まっている。現代のマイクロプロセッサの一部に応用されている１並列アーキテクチャに、ＶＬＩＷ（超長命令語）アーキテクチャがある。ＶＬＩＷアーキテクチャマイクロプロセッサは、ＶＬＩＷ形式の命令を扱うことから、このように呼ばれている。
ＶＬＩＷ形式命令とは、多重並行演算を符号化する長い固定長命令のことである。ＶＬＩＷシステムでは、複数の独立した機能単位を使用しており、このような機能単位に複数の独立した命令を発行する代わりに、複数の演算を１つの超長命令語に組み入れている。したがって、ＶＬＩＷシステムでは、複数の整数演算用のコンピュータ命令、浮動小数点演算、メモリ参照等を、単一の長いＶＬＩＷ命令内で組み合わせることができる。
【００１５】
このような複雑なパイプラインのテストやデバッグは、前記パラグラフで述べてきた各技法を用いても、困難である。しかしながら、従来技術に関するこのような不利益や他の不利益は、本発明によって解消され、システムレベルのデバッグにとどまらず、チップレベルのテストを行う改良方法ならびに装置が提供されている。
【００１６】
【課題を解決するための手段】
非保護命令実行パイプラインを有するマイクロプロセッサにおいて、命令（単一または並列）は互いに完全に独立して実行できる。こうしたマイクロプロセッサを含むデータ処理システムにおいて、メモリ制御装置またはメモリマップ周辺制御装置はプロセッサによって提示される順序でメモリアクセスを実行する。命令は、互いの関係において実行待ち時間（１〜Ｎ段階）によって分類できる。本発明によれば、異なった待ち時間を伴う命令は互いに独立して実行されるので、非保護パイプラインと共に使用されるデバッグシステムは単一パイプライン段階ベースでマイクロプロセッサの状態に可視性を提供することができるので有利である。デバッグシステムがマイクロプロセッサをある段階に導くとき、命令パイプラインはパイプラインサイクルを１つ進める。すべてのパイプライン段階の境界でデバッグシステムは次のパイプライン実行段階によって利用されるプロセッサレジスタと、それまでのすべての記憶の結果を示すメモリ状態への可視性を有する。
こうしたプロセッサにおけるデータ処理システムのデバッグのための方法には、
命令パイプライン中の複数の重複する演算を開始するために正常な演算方法でプロセッサ命令実行パイプライン中のシステムコードを実行する段階と、
少なくとも１つの重複する演算が不完全で、命令実行パイプラインを表す第１状態をセーブするような方法でプロセッサの正常な動作を停止する段階と、
命令実行パイプラインを１段階進め、命令パイプラインを表す第２状態をセーブする段階と、が含まれる。
【００１７】
【発明の実施の形態】
図１は、本発明の１実施例を有するマイクロプロセッサ１のブロック図であり、マイクロプロセッサ１は、ＶＬＩＷデジタル信号プロセッサ（ＤＳＰ）である。説明の明瞭化を図るため、図１では、本発明の１実施例を理解するうえで問題となるマイクロプロセッサ１の該当部分のみを示している。ＤＳＰの一般的な構造の詳細は周知であり、他において容易に見ることが可能である。例えば、Ｆｒｅｄｅｒｉｃｋ  Ｂｏｕｔａｕｄ他の米国特許第５，０７２，４１８号では、ＤＳＰについて詳細な説明がなされており、この文章中に引用されている。また、Ｇａｒｙ  Ｓｗｏｂｏｄａ他の米国特許第５，３２９，４７１号では、ＤＳＰのテスト方法およびエミュレート方法について詳細に説明されており、この文章中に引用されている。本発明の１実施例に関するマイクロプロセッサ１の各部分についての詳細は、以下に充分詳しく説明されており、これによって、マイクロプロセッサ技術の通常の技術を有する者が、本発明を作製し使用することが可能である。
【００１８】
マイクロプロセッサ１では、中央処理装置（ＣＰＵ）１０、データメモリ２２、プログラムメモリ２３、周辺装置６０、直接メモリアクセス（ＤＭＡ）６１を備えた外部メモリインタフェース（ＥＭＩＦ）が示されている。ＣＰＵ１０は、さらに、命令フェッチ／デコードユニット１０ａ〜ｃを有する他に、算術演算およびロード／記憶装置Ｄ１、乗算器Ｍ１、ＡＬＵ／シフタユニットＳ１、算術論理演算装置（ＡＬＵ）Ｌ１、およびデータの読取り／書込みを行う共用マルチポートレジスタファイル２０ａなどの複数の実行ユニットを備えている。復号化された命令は、不図示の各組の制御ラインを通じて、命令フェッチ／デコードユニット１０ａ〜１０ｃから機能装置Ｄ１、Ｍ１、Ｓ１、およびＬ１に提供される。データは、第１組のバス３２ａを通じてレジスタファイル２０ａからロード／記憶装置Ｄ１へ、第２組のバス３４ａを通じて乗算器Ｍ１へ、第３組のバス３６ａを通じてＡＬＵ／シフタユニットＳ１へ、さらに、第４組のバス３８ａを通じてＡＬＵ  Ｌ１へ提供され、それぞれ逆方向への提供も行われる。また、データは、第５組のバス４０ａを通じてメモリ２２およびロード／記憶装置Ｄ１間を送受信される。ここで、前記データパス全体が、レジスタファイル２０ｂおよび実行ユニットＤ２、Ｍ２、Ｓ２、Ｌ２と全く同一である点に注意されたい。命令は、１組のバス４１を通じて命令記憶装置２３からフェッチユニット１０ａによってフェッチされる。エミュレーション回路５０は、外部テスト／開発システム（ＸＤＳ）５１によって制御可能な集積回路１の内部動作へのアクセスを行えるようにする。
【００１９】
外部テストシステム５１は、集積回路のデバッグおよびエミュレーションを行うための周知の各種テストシステムの典型としてあげられている。このようなシステムの１つが、米国特許第５，５３５，３３１号に説明されており、ここでも引用されている。テスト回路５２には、制御レジスタと、集積回路１をテストするための並列シグネチャ解析回路が含まれている。
メモリ２２とメモリ２３は、マイクロプロセッサ１の集積回路の一部として図１に示されており、その範囲がボックス４２によって示されている。メモリ２２〜２３は、マイクロプロセッサ１の集積回路４２の外部に配置されてもよく、または、その一部が集積回路４２上に、別の一部が集積回路４２の外部に配置されてもよい。このような配置は、設計上の選択に関する問題である。実行ユニットの特定の選択や数もまた、設計上の選択の問題であり、本発明にとって重要な問題ではない。
【００２０】
マイクロプロセッサ１がデータ処理システムに組み込まれている場合、図１に示すように、追加記憶装置または周辺装置をマイクロプロセッサ１に接続してもよい。例えば、図示するように、ランダムアクセスメモリ（ＲＡＭ）７０、読出し専用メモリ（ＲＯＭ）７１、およびディスク７２を外部バス７３により接続する。バス７３は、マイクロプロセッサ４２内の機能ブロック６１の一部である外部メモリインタフェース（ＥＭＩＦ）に接続されている。さらに、直接メモリアクセス（ＤＭＡ）コントローラも、ブロック６１内に配置されている。ＤＭＡコントローラは、通常、マイクロプロセッサ１内のメモリと周辺装置の間、およびマイクロプロセッサ１の外部のメモリと周辺装置の間でデータをやり取りするのに用いられる。
【００２１】
図２は、図１のマイクロプロセッサの実行ユニットとレジスタファイルに関するブロック図であり、各種機能ブロックを接続しているバスのより詳細な図が示されている。この図では、特に注意されない限り、どのデータバスも、３２ビットの広さを有している。バス４０ａは、ｍｕｘ２００ａによって駆動されるアドレスバスＤＡ１を備えている。これにより、ロード／記憶装置Ｄ１またはＤ２のいずれかによって生成されたアドレスを、レジスタファイル２０ａ用のロードまたは記憶用アドレスとして提供することが可能になる。また、データバスＬＤ１は、アドレスバスＤＡ１によって指定されたメモリ２２内のアドレスからロードユニットＤ１内のレジスタに、データをロードする。装置Ｄ１は、レジスタファイル２０ａに保存する前に、提供されたデータを処理してもよい。同様に、データバスＳＴ１は、レジスタファイル２０ａからメモリ２２にデータを保存する。ロード／記憶装置Ｄ１は、３２ビット加算、減算、リニアアドレスおよび循環アドレス計算等の演算を行う。ロード／記憶装置Ｄ２は、アドレスを選択するうえでｍｕｘ２００ｂのサポートにより、装置Ｄ１と同様の演算を行う。
【００２２】
ＡＬＵ装置Ｌ１では、３２／４０ビット算術および比較演算と、３２ビット用最左端の１および０ビットのカウント  ３２および４０ビット用の正規化カウント、および論理演算等の演算を行う。ＡＬＵ装置Ｌ１は、３２ビットソースオペランド用の入力ｓｒｃ１と、第２の３２ビットソースオペランド用の入力ｓｒｃ２を有している。入力ｍｓｂ＿ｓｒｃは、４０ビットソースオペランドの形成に用いられる８ビットの値である。また、ＡＬＵ装置Ｌ１は、３２ビット宛先オペランド用の出力ｄｓｔを有している。出力ｍｓｂ＿ｄｓｔは、４０ビット宛先オペランドの形成に用いられる８ビットの値である。レジスタファイル２０ａ内の２つの３２ビットレジスタは、連結されて４０ビットオペランドを保有する。ｍｕｘ２１１は、入力ｓｒｃ１への接続によって、３２ビットオペランドを、バス３８ａを介してレジスタファイル２０ａから、または、バス２１０を介してレジスタファイル２０ｂから取得できるようにする。また、ｍｕｘ２１２は、入力ｓｒｃ２に接続されることによって、３２ビットオペランドを、バス３８ａを介してレジスタファイル２０ａから、または、バス２１０を介してレジスタファイル２０ｂから取得できるようにする。ＡＬＵ装置Ｌ２は、装置Ｌ１と同様の演算を行う。
【００２３】
ＡＬＵ／シフタユニットＳ１は、３２ビット算術演算、３２／４０ビットのシフトおよび３２ビットのビットフィールド演算、３２ビット論理演算、分岐、および定数生成等の演算を行う。ＡＬＵ装置Ｓ１は、３２ビットソースオペランド用の入力ｓｒｃ１と、第２の３２ビットソースオペランド用の入力ｓｒｃ２を有している。入力ｍｓｂ＿ｓｒｃは、４０ビットソースオペランドの形成に用いられる８ビットの値である。また、ＡＬＵ装置Ｓ１は、３２ビット宛先オペランド用の出力ｄｓｔを有している。出力ｍｓｂ＿ｄｓｔは、４０ビット宛先オペランドの形成に用いられる８ビットの値である。ｍｕｘ２１３は、入力ｓｒｃ２に接続されることによって、３２ビットオペランドを、バス３６ａを介してレジスタファイル２０ａから、または、バス２１０を介してレジスタファイル２０ｂから取得できるようにする。ＡＬＵ装置Ｓ２は、装置Ｓ１と同様の演算を行うが、さらに、制御レジスタファイル１０２とのレジスタトランスファーも行うことができる。
【００２４】
乗算器Ｍ１は、１６ｘ１６の乗算を行う。この乗算器Ｍ１は、３２ビットソースオペランド用の入力ｓｒｃ１と、３２ビットソースオペランド用の入力ｓｒｃ２を有している。ＡＬＵ装置Ｓ１は、３２ビット宛先オペランド用の出力ｄｓｔを有している。ｍｕｘ２１４は、入力ｓｒｃ２に接続されることによって、３２ビットオペランドを、バス３４ａを介してレジスタファイル２０ａから、または、バス２１０を介してレジスタファイル２０ｂから取得できるようにする。乗算器Ｍ２は、乗算器Ｍ１と同様の演算を行う。
図２に示すように、バス２２０および２２１を用いて、制御レジスタファイル１０２から１台の装置（．Ｓ２）の読取りおよび書込みを行うことができる。表２は、この制御レジスタファイルに含まれている制御レジスタの一覧であり、各項目ごとに簡単な説明を付けている。また、各制御レジスタについては、後でより詳しく説明している。各制御レジスタは、ＭＶＣ命令によってアクセスされる（後述するＭＶＣ命令の説明を参照）。
【００２５】
0003916745.tif 000002
0003916745.tif 000003
【００２６】
図３は、アドレス指定モードレジスタ（ＡＭＲ）を示している。８つのレジスタ（Ａ４〜Ａ７、Ｂ４〜Ｂ７）で、循環アドレス指定を行うことができる。各レジスタに対し、ＡＭＲはアドレス指定モードを指定する。各レジスタのＡ２ビットフィールドを用いて、リニア（デフォルト）モードまたは循環モードのアドレス修飾モードを選択する。循環アドレス指定により、このフィールドでは、循環バッファに用いるＢＫ（ブロックサイズ）フィールドを指定する。さらに、該バッファは、ブロックサイズと同等のバイト境界に位置合せをする必要がある。このモード選択フィールドの符号化について表３に示されている。
【００２７】
0003916745.tif 000004
【００２８】
ブロックサイズフィールドＢＫ０およびＢＫ１では、循環アドレス指定のためのブロックサイズを指定する。ＢＫ０およびＢＫ１内の５ビットでは、その幅を指定する。このブロックサイズの幅を計算する公式は、
ブロックサイズ（バイト単位）＝２（１＋１）
である。ただし、Ｎは、ＢＫ１またはＢＫ０内の値とする。
表４に、全部で３２の想定可能なケースを対象にしたブロックサイズの計算をあげている。
【００２９】
0003916745.tif 000005
0003916745.tif 000006
【００３０】
制御状態レジスタ（ＣＳＲ）には、図４に示すように、制御ビットと状態ビットが含まれている。ＣＳＲ内のビットフィールドに関する機能を、表５に示している。
【００３１】
0003916745.tif 000007
0003916745.tif 000008
【００３２】
図５に示される汎用入力レジスタ（ＩＮ）は、３２の汎用入力信号をサポートし、図６に示される汎用出力レジスタ（ＯＵＴ）は、３２の汎用出力信号をサポートする。このような信号の機能については、後で説明する。
次の表６では、ここで用いられる各種記号について説明している。
【００３３】
0003916745.tif 000009
0003916745.tif 000010
0003916745.tif 000011
0003916745.tif 000012
【００３４】
表７および表８では、命令と機能単位との対応関係を定義している。
【００３５】
0003916745.tif 000013
0003916745.tif 000014
【００３６】
0003916745.tif 000015
0003916745.tif 000016
【００３７】
汎用レジスタファイルは、３２および４０ビットデータをサポートする。この３２ビットデータは各単一レジスタに収容されている。また、４０ビットデータは、２つのレジスタにわたって収容されており、このデータのうち３２個のＬＳＢ（最下位ビット）は、偶数レジスタに保存され、８個のＭＳＢ（最上位ビット）は、次のレジスタ（常に奇数レジスタ）の８個のＬＳＢに保存される。表９に示すように４０ビットデータに対して１６の有効レジスタ対がある。アセンブリ言語構文では、各レジスタ名の間にコロンを入れることによって、このレジスタ対を表している。最初に奇数レジスタが指定される。
【００３８】
0003916745.tif 000017
【００３９】
図７に、４０ビットデータを対象にしたレジスタ記憶域構成を示している。長い入力データを必要とする演算では、奇数レジスタの２４個のＭＳＢが無視される。また、長い結果が出る演算では、奇数レジスタの２４個のＭＳＢにゼロ充てんを施す。一方、偶数レジスタのデータは、演算コードに符号化される。
ＤＳＰの演算コードマップが、図８Ａ〜図８Ｊに示されている。表６と、フィールドシンタクスおよび値の解説のため後に記述する命令の説明を参照されたい。
命令は、すべて条件付きにしてもよい。条件は、テスト対象となるレジスタを指定する３ビット（ｃｒｅｇ）フィールドと、ゼロか否かを判定するためのテストを指定する１ビットフィールド（ｚ）によって制御される。どの演算コードも、４ＭＳＢ（最上位ビット）が、ｃｒｅｇおよびｚである。このレジスタは、すべての命令に対するＥ１パイプライン段階の開始時にテストされる。このパイプラインについては、後に説明する。ｚ＝１の場合、このテストは、ゼロに等しいことを確認するために行われる。ｚ＝０の場合、テストは、ゼロでないことを確認するために行われる。条件レジスタフィールド（ｃｒｅｇ）＝０およびｚ＝０の場合は、常に真として扱われ、命令を無条件に実行することができる。ｃｒｅｇレジスタフィールドは、表１０に示すように符号化が行われる。
【００４０】
0003916745.tif 000018
【００４１】
条件付き命令は、条件レジスタを角括弧で括って表記されている。また、後続の実行パケットには、２つのＡＤＤ命令が並列に配置されており、第１のＡＤＤ命令は、Ｂ０に関して非ゼロの条件付きであり、第２のＡＤＤ命令は、Ｂ０に関してゼロであることを条件としている。また、感嘆符（！）は、条件の［否定］を表している。
0003916745.tif 000019
【００４２】
上記の命令は、相互に排他的であり、つまり、片方のみが実行されることを意味している。
両方の命令が並列にスケジュールされている場合、相互排他的な命令は、さらに後述するあらゆる資源の制約に従わなければならない。
相互排他的命令が後述するような任意の資源を共用している場合、片方の命令だけが実行を終了する場合でも、両方の命令を並列にスケジュール（同一の実行パケットに配置）することはできない。
命令の実行は、遅延スロットにより定義することができる。表１１は、命令のタイプと、各タイプの命令が有している遅延スロットの数、およびその命令が用いる実行段階を示している。遅延スロットは、ソースオペランドが読み取られてから、結果が取得され読み取られる前にかかる余分なサイクル数に相当する。（ＡＤＤのような）単一サイクル型の命令の場合、ソースオペランドがサイクルｉで読み取られると、その結果は、サイクルｉ＋１で読み取ることができる。乗算命令（ＭＰＹ）の場合、ソースオペランドがサイクルｉで読み取られると、その結果は、サイクルＩ＋２で読み取ることができる。
【００４３】
0003916745.tif 000020
【００４４】
命令は、常に８個一度に取り出され、フェッチパケットを構成する。フェッチパケットの基本形式は、図９に示す通りである。また、フェッチパケットの実行グループは、各命令のｐビット、すなわちビット０により指定され、フェッチパケットは、８ワードで位置合せされている。
ｐビットは、命令の並列的な実行を制御し、左から右（低位アドレスから高位アドレス）の方向にスキャンされる。命令ｉのｐビットが１の場合、命令ｉ＋１は、（同一サイクルの）命令ｉと並列に実行される。また、命令ｉのｐビットが０の場合、命令ｉ＋１は、命令ｉの後のサイクルで実行される。さらに、並列実行が行われるすべての命令によって実行パケットが構成される。実行パケットには、命令を８個まで配列することができる。また、実行パケット内の命令は、すべて固有の機能単位を使用しなければならない。
実行パケットは、８ワード境界にまたがることはできない。したがって、フェッチパケットの最後のｐビットは常に０に設定され、フェッチパケットは、それぞれ新規実行パケットを開始する。以下の例では、ｐビットシーケンスを命令のサイクル毎の実行ストリームに変換する様子を示している。フェッチパケットには、３種類のｐビットパターンがあり、この３つのｐビットパターンは、８個の命令に対して、全直列、全並列、または一部直列の実行シーケンスとなる。この３つの実行シーケンスについて、以下に詳しく説明する。
図１０Ａに示す全直列ｐビットパターンは、次のような実行シーケンスとなる。
【００４５】
0003916745.tif 000021
この８個の命令は、順次実行される。
図１０Ｂに示す全並列ｐビットパターンは、次のような実行シーケンスとなる。
【００４６】
0003916745.tif 000022
この場合、８個の命令は、並列に実行される。
図１０Ｃに示す一部直列ｐビットパターンは、次のような実行シーケンスとなる。
【００４７】
0003916745.tif 000023
この８個の命令は、順次実行される。
図１０Ｂに示す全並列ｐビットパターンは、次のような実行シーケンスとなる。
【００４８】
0003916745.tif 000024
この場合、８個の命令は、並列に実行される。
図１０Ｃに示す一部直列ｐビットパターンは、次のような実行シーケンスとなる。
【００４９】
0003916745.tif 000025
ここで、命令Ｃ、Ｄ、Ｅは、同じ機能単位、クロスパス、その他のデータパス等の資源を使用しておらず、同じことが、命令Ｆ、Ｇ、Ｈについても言うことができる。
｜｜は、命令が直前の命令と並列に実行されることを示すものである。上記の一部直列の例では、コードが次のように表記される。
【００５０】
0003916745.tif 000026
実行パケットの途中で分岐が発生した場合、低位アドレスの命令は、すべて無視される。一部直列の例では、命令Ｄのあるアドレスに分岐が発生すると、ＤとＥだけが実行される。命令Ｃが同じ実行パケットにある場合でも、命令Ｃは無視される。命令Ａおよび命令Ｂも、分岐前の実行パケットにあることから、やはり無視される。
同じ実行パケット内の２つの命令は、同じ資源を利用できない。さらに、同一サイクルにおいて、同一のレジスタに２つの命令が書込みを行うことはできない。次に、命令が使用可能な資源についてそれぞれ説明する。
同一の機能単位を使用する２つの命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
【００５１】
0003916745.tif 000027
クロスパス（１Ｘおよび２Ｘ）：  １データパス、１実行パケットにつき１機能単位（．Ｓ、．Ｌ、または．Ｍ）の場合、クロスパス（１Ｘおよび２Ｘ）を介して対向するレジスタファイルからソースオペランドを読み取ることができる。例えば、．Ｓ１は、Ａレジスタファイルから両方のオペランドを、または、１Ｘクロスパスを用いてＢレジスタファイルから片方のオペランドを読み取ることができる。このことは、装置名の後にＸを入れることによって表記される。
ＡからＢとＢからＡの片方のパスしかないことから、両レジスタファイル間の同じＸクロスパスを使用する２つの命令を、同一実行パケットに発行できない。次のような実行パケットは無効である。
【００５２】
0003916745.tif 000028
0003916745.tif 000029
（演算コードマップに示すように）命令フィールドにｘビットが設定されている場合、オペランドは、宛先に対向するレジスタファイルから送信される。
ロードおよびストア命令は、片方のレジスタファイルからのロードまたは記憶処理を行いながら、もう一方のレジスタファイルからのアドレスポインタを使用することができる。同一レジスタファイルからのアドレスポインタを使用する２つのロードおよび／またはストア命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
【００５３】
0003916745.tif 000030
同じレジスタファイルへのロードおよび／またはそのファイルからの記憶処理を行う２つのロードおよび／またはストア命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
【００５４】
0003916745.tif 000031
レジスタファイルの各サイドのサイクルごとに、長い演算結果を１つだけ書き込んでもよい。．Ｓおよび．Ｌ装置が長ソースオペランド用読取りレジスタポートと長演算結果用書込みレジスタポートを共用していることから、実行パケットの各サイドにつき１つだけ発行してもよい。
次のような実行パケットは無効である。
【００５５】
0003916745.tif 000032
．Ｌおよび．Ｓ装置が、記憶ポートと長読取りポートを共用していることから、長い値を読み取る演算は、ストア命令として、．Ｌおよび／または．Ｓ装置において同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
【００５６】
0003916745.tif 000033
同一レジスタの５つ以上の読取り命令が、同じサイクルにあってはならない。ただし、条件レジスタは、その限りではない。
次のコードシーケンスは無効である。
【００５７】
0003916745.tif 000034
同じレジスタへの書込みを行う待ち時間が異なる命令が別々のサイクルで発行された場合、同一サイクルにおける同一レジスタへの複数の書込みが発生することがある。例えば、サイクルｉ＋１上のＡＤＤが後ろに付くサイクルｉで発行されたＭＰＹは、どちらの命令も結果をサイクルｉ＋１に書き込むことになることから、同一レジスタへの書き込みはできなくなる。したがって、次のコードシーケンスは無効である。
【００５８】
ＭＰＹ  ．Ｍ１  Ａ０，Ａ１，Ａ２
ＡＤＤ  ．Ｌ１  Ａ４，Ａ５，Ａ２
表１２に、異なる複数の書込みによる矛盾（コンフリクト）を示している。例えば、実行パケットＬ１のＡＤＤとＳＵＢが同じレジスタに書き込まれる場合、矛盾は容易に検出できる。
パケットＬ２のＭＰＹとパケットＬ３のＡＤＤは、両方とも同時にＢ２に書き込まれるが、分岐命令により、Ｌ２の後の実行パケットがＬ３以外のパケットになる。これは矛盾ではないであろう。したがって、アセンブラによってＬ２とＬ３に矛盾が検出されることはない。Ｌ４内の命令は、互いに排他的であることから、書込みの矛盾を引き起こすことはない。逆に、Ｌ５の各命令は、互いに排他的であることが明らかでないために、アセンブラは矛盾があるかどうか判断できない。パイプラインがコマンドを受信して同一のレジスタに複数の書込みを行う場合、結果は未定義となる。
【００５９】
0003916745.tif 000035
アドレスモードは、ＢＫ０を用いた場合、リニア、循環モード、ＢＫ１を用いた場合、循環モードがある。このモードは、アドレスモードレジスタ（ＡＭＲ）によって指定される。
【００６０】
８個のレジスタは、循環アドレス指定を行うことができ、Ａ４〜Ａ７は、．Ｄ１装置によって、Ｂ４〜Ｂ７は、．Ｄ２装置によって用いられる。他の装置は、循環アドレスモードを使用できない。上記レジスタの各々は、ＡＭＲによってアドレスモードを指定する。
命令ＬＤ（Ｂ）（Ｈ）（Ｗ）、ＳＴ（Ｂ）（Ｈ）（Ｗ）、ＡＤＤＡ（Ｂ）（Ｈ）（Ｗ）、およびＳＵＢＡ（Ｂ）（Ｈ）（Ｗ）は、いずれもＡＭＲを用いて上記レジスタにどのタイプのアドレス計算をすればよいか判断する。また、いずれのレジスタも、リニアモードアドレス指定を行うことができる。
リニアモードアドレス指定は、ＬＤ／ＳＴ命令によって次のように行われる。リニアモードにより、ｏｆｆｓｅｔＲ／ｃｓｔオペランドを、それぞれ２、１、または０だけ左にシフトして、ワードアクセス、ハーフワードアクセス、またはバイトアクセスを行ってから、ｂａｓｅＲに対する加算または減算（指定された演算によって異なる）を実行する。
リニアモードアドレス指定は、ＡＤＤＡ／ＳＵＢＡ命令によって次のように行われる。リニアモードにより、ｓｒｃ１／ｃｓｔオペランドを、それぞれ２、１、または０だけ左にシフトして、ワードアクセス、ハーフワードアクセス、またはバイトアクセスを行ってから、加算または減算（指定された演算によって異なる）を実行する。
【００６１】
循環モードアドレス指定では、ＡＭＲのＢＫ０およびＢＫ１フィールドを使用して循環アドレス指定のブロックサイズを指定する。循環モードアドレス指定は、ＬＤ／ＳＴ命令によって次のように行われる。ｏｆｆｓｅｔＲ／ｃｓｔオペランドを、それぞれ２、１、または０だけ左にシフトしてから、ＮとＮ＋１の間に禁止されているキャリー／ボローによって加算または減算を行う。ｂａｓｅＲのビットＮ＋１〜ビット３１は、そのまま変化せず、他のキャリー／ボローは、すべて通常通り処理される。したがって、ｏｆｆｓｅｔＲ／ｃｓｔオペランドが循環バッファサイズ２（Ｎ＋１）よりも大きく、なおかつ指定された場合、アドレスは、循環バッファの外部となる。ＡＭＲの循環バッファサイズは、比率によるサイズではなく、例えば、４のサイズは４バイトであり、（タイプ）のサイズに４倍するわけではない。したがって、８ワードの配列による循環アドレス指定を行うためには、３２のサイズを指定しなければならない。すなわち、Ｎ＝４である。表１２では、ＢＫ０＝４として、循環モードでレジスタＡ４により実行されるＬＤＷが示されており、したがって、バッファサイズが３２バイト、１６ハーフワード、または８ワードとなる。この例でＡＭＲに入る値は、０００４  ０００１ｈとなる。
【００６２】
0003916745.tif 000036
0003916745.tif 000037
【００６３】
循環モードアドレス指定は、ＡＤＤＡ／ＳＵＢＡ命令により、次のように行われる。ｓｒｃ１／ｃｓｔオペランドを、それぞれ２、１、または０だけ左にシフトして、ＡＤＤＡＷ、ＡＤＤＡＨ、ＡＤＤＡＢを実行してから、ＮとＮ＋１の間に禁止されているキャリー／ボローによって加算または減算を行う。ｓｒｃ２の包含的なビットＮ＋１〜ビット３１は変わらない。他のキャリー／ボローはすべて通常通り処理される。したがって、ｓｒｃ１が循環バッファサイズ２（Ｎ＋１）よりも大きく、なおかつ指定された場合、アドレスは、循環バッファの外部となる。ＡＭＲの循環バッファサイズは、比率によるサイズではなく、例えば、４のサイズは４バイトであり、（タイプ）のサイズに４倍するわけではない。したがって、８ワードの配列による循環アドレス指定を行うためには、３２のサイズを指定しなければならない。すなわち、Ｎ＝４である。表１４では、ＢＫ０＝４として、循環モードでレジスタＡ４により実行されるＡＤＤＡＨが示されており、したがって、バッファサイズが３２バイト、１６ハーフワード、または８ワードとなる。この例でＡＭＲに入る値は、０００４  ０００１ｈとなる。
【００６４】
0003916745.tif 000038
各命令は、命令構文により表記される。演算コードマップでは、各命令を構成している各種ビットフィールドに分けられている。表８に示すように、１を上回る機能単位上で実行可能な一定の命令がある。この構文により、命令が使用する機能単位と各種資源を次ように指定する。
ＥＸＡＭＰＬＥ（．ｕｎｉｔ）ｓｒｃ，ｄｓｔ
この構文は、ＡＤＤ命令に対して次のような見え方をする。
ＡＤＤ（．ｕｎｉｔ）ｓｒｃ１，ｓｒｃ２，ｄｓｔ
ＯＲ
ＡＤＤＵ（．ｕｎｉｔ）ｓｒｃ１，ｓｒｃ２，ｄｓｔ
ＯＲ
ＡＤＤ（．ｕｎｉｔ）ｓｒｃ２，ｓｒｃ１，ｄｓｔ
ｕｎｉｔ＝．Ｌ１，．Ｌ２，．Ｓ２，．Ｄ１，．Ｄ２
ｓｒｃとｄｓｔは、それぞれソースと宛先を示している。（．ｕｎｉｔ）は、命令が（．Ｌ１，．Ｌ２，．Ｓ１，．Ｓ２，．Ｍ１，．Ｍ２，．Ｄ１，．Ｄ２）にマッピングする機能単位を示している。また、この命令は、３つの演算コードマップフィールド、ｓｒｃ１、ｓｒｃ２、およびｄｓｔを有している。
パイプライン動作
【００６５】
ＤＳＰパイプラインは、パフォーマンスの向上、コストの低減、およびプログラミングの簡素化に役立つ重要な特徴をいくつか備えている。具体的には、パイプライン方式を増やすことにより、プログラムの取出し、データアクセス、および乗算などに生じていた従来のアーキテクチャ上のボトルネックが削減され、パイプラインインタロックの除去により、パイプライン制御が簡素化され、また、パイプラインにより、サイクルごとに８つの並列な命令をディスパッチすることができる。さらに、並列な命令が、複数の同じパイプライン段階を同時に進行し、直列な命令が、相対的なパイプライン段階の同じ差を保ちながら進行し、なおかつ、ロードおよびストアアドレスが、同一のパイプライン段階中にＣＰＵ境界上に出現することにより、リードアフタライトメモリの矛盾が削減される。
データアクセスとプログラム取出しのいずれにも、複数段階から成るメモリパイプラインが存在する。これにより、オンチップとオフチップのどちらでも高速の同期メモリを使用することができるうえ、他の命令と並列な分岐によって無限にネスト可能なオーバヘッドゼロのループが可能になる。
パイプラインの実行サイクルでは内部インタロックが全く生じないことから、新規実行パケットは、ＣＰＵサイクルごとに実行段階に入る。したがって、特定の入力データを備えた特定のアルゴリズムのＣＰＵサイクル数は、一定である。プログラム実行中にメモリ機能停止が一切起こらなければ、ＣＰＵサイクル数は、実行するプログラムのクロックサイクル数に等しくなる。
パフォーマンスは、メモリサブシステムからの機能停止または割込みによってのみ、抑止することができる。メモリ機能停止の理由は、メモリアーキテクチャによって定められる。プログラムを速度に対してどのように最適化すればよいか充分に理解するためには、プログラム取出し、データ記憶、そのプログラムが作製するデータロード要求の並びと、各々がＣＰＵの機能をどのように停止させるのかを理解する必要がある。
【００６６】
機能的観点から、パイプライン動作は、ＣＰＵサイクルをベースにしている。ＣＰＵサイクルとは、ある特定の実行パケットが特定のパイプライン段階に存在する期間のことである。ＣＰＵサイクル境界は、常にクロックサイクル境界上に生じるが、メモリ機能停止によって、ＣＰＵサイクルが複数のクロックサイクルの長さを超えることが起こり得る。ＣＰＵサイクル境界におけるマシン状態を理解するためには、パイプラインの実行段階（Ｅ１〜Ｅ５）のみを問題にしなければならない。パイプラインの段階については、図１１に示しており、さらに、表１５で説明されている。
【００６７】
0003916745.tif 000039
0003916745.tif 000040
0003916745.tif 000041
†：命令の条件が真であると評価されたものとする。これらの条件が偽として評価された場合、Ｅ１の後、命令によって結果が書き込まれてパイプライン動作が行われることはない。
命令のパイプライン動作は、表１６に示すような７種類に分類できる。また、各命令タイプに対する遅延スロットの一覧が、第２列に示されている。
【００６８】
0003916745.tif 000042
命令の実行は、遅延スロット（表１６）により定義することができる。遅延スロットとは、命令の結果が得られない命令の第１実行段階（Ｅ１）の後に発生するＣＰＵサイクルのことである。例えば、乗算命令は１遅延スロットを有しているが、このことは、別の命令が乗算命令の結果を使用できるまでに１ＣＰＵサイクルあることを意味している。
単一サイクル命令は、パイプラインのＥ１段階中に実行する。オペランドが読み取られた後、演算が行われ、その結果がレジスタに書き込まれるが、これはすべてＥ１の間に行われる。この命令には遅延スロットが全くない。
【００６９】
乗算命令は、パイプラインのＥ２段階中に演算を完了する。Ｅ１段階では、オペランドが読み取られ、乗算が開始する。Ｅ２段階では、乗算を終了し、その結果が宛先（ｄｓｔ）レジスタに書き込まれる。乗算命令には、１遅延スロットがある。
ロード命令の場合、２つの結果、すなわち、メモリからロードされたデータとアドレスポインタ修飾が得られる。
データロードでは、パイプラインのＥ５段階中に演算を完了させる。Ｅ１段階では、データのアドレスが計算さ、Ｅ２段階では、データアドレスがデータメモリに送信される。Ｅ３段階では、メモリへの読込みが行われ、Ｅ４段階では、ＣＰＵコア境界でデータが受信される。最後に、Ｅ５段階では、レジスタにデータがロードされる。Ｅ５までにレジスタにデータが書き込まれないことから、これらの命令は、４遅延スロットを有している。Ｅ１でポインタ結果がレジスタに書き込まれることから、アドレス修飾に関する遅延スロットはない。
パイプラインのＥ３段階中に、ストア命令は演算を完了する。Ｅ１段階では、データのアドレスが計算され、Ｅ２段階では、データアドレスがデータメモリに送信される。また、Ｅ３段階では、メモリへの書込みが行われる。さらに、パイプラインのＥ１段階では、アドレス修飾が行われる。パイプラインのＥ３段階においてストア命令はその実行を終了するが、遅延スロットはなく、次の規則（ｉ＝サイクル）に従う。
１）ストア命令の前にロード命令が実行されると、旧値がロードされ、新規値が記憶される。
ｉ  ＬＤＷ
ｉ＋１  ＳＴＷ
２）ロード命令の前にストア命令が実行されると、新規値がストアされ、新規値がロードされる。
ｉ  ＳＴＷ
ｉ＋１  ＬＤＷ
３）各命令が並列である場合、旧値はロードされ、新規値はストアされる。
ｉ  ＳＴＷ
ｉ＋１  ｜｜  ＬＤＷ
【００７０】
分岐命令は、パイプラインの最初のＥ１段階に入ると、そのＥ１段階中に、５遅延スロット／ＣＰＵサイクルを実行する。図１２に、この分岐命令の各段階を示している。図１３は、クロックサイクルとフェッチパケットに基づくパイプラインの演算である。図１３では、分岐命令がフェッチパケットｎにある場合、その分岐命令のＥ１段階は、ｎ＋６のＰＧ段階となる。サイクル７では、ｎはＥ１段階にあり、ｎ＋６はＰＧ段階にある。分岐先がサイクル７のＰＧ段階にあることから、サイクル１３になるまで、ｎ＋６がＥ１になることはない。このため、分岐命令が実行に６サイクルかかったり、あるいは５遅延スロットあるように見えるのである。
図１４では、３つの実行パケットが含まれているフェッチパケットｎと、その後に続く６つのフェッチパケット（ｎ＋１〜ｎ＋６）が示されており、それぞれ１実行パケット（８個の並列命令を含む）を有している。第１のフェッチパケット（ｎ）は、サイクル１〜４の間にプログラムフェッチ段階を通過する。このサイクル中に、後続のフェッチパケットの各々に対してプログラムフェッチ段階が開始される。
サイクル５、すなわちプログラムディスパッチ（ＤＰ）段階では、ＣＰＵは、ｐビットをスキャンして、フェッチパケットｎに３つの実行パケット（ｋ〜ｋ＋２）あることを検出する。これにより、パイプラインは強制的に機能停止され、サイクル６および７において、ＤＰ段階での実行パケットｋ＋１およびｋ＋２が開始できるようになる。実行パケットｋ＋２が、ＤＣ段階（サイクル８）に移る準備ができたら、パイプラインの機能停止は解除される。
フェッチパケットｎ＋１〜ｎ＋４はすべて停止されているので、ＣＰＵには、フエッチパケットｎにおいて、３つの実行パケット（ｋ〜ｋ＋２）の各々に対してＤＰ段階を実行する時間が生じる。フェッチパケットｎ＋５も、サイクル６とサイクル７で停止されており、サイクル８でパイプライン機能停止が解除されるまでは、ＰＧ段階に入ることができない。このパイプライン処理は、フェッチパケットｎ＋５とｎ＋６に示すように、複数の実行パケットを備えた別のフエッチパケットがＤＰ段階に入るまで、あるいは割込みが生じるまで、継続する。
【００７１】
パイプラインの切断は、メモリの機能停止、多重サイクルＮＯＰ、ＳＴＰ命令によって発生する。メモリの停止中は、ＣＰＵサイクル（通常、１クロックサイクル中に発生する）が、２以上のサイクルで発生する。このような余分なクロックサイクル中は、全パイプライン段階が停止する。プログラムの実行結果は、このような機能停止があってもなくても変わらない。メモリ停止によって、実行が終了するまでにかかるクロックサイクル数は増加する。
ＮＯＰカウント命令は、ＮＯＰのカウントサイクルを提供する働きをする。カウントが２以上であれば、ＮＯＰは、多重サイクルＮＯＰである。例えば、ＮＯＰ２は、含まれている実行パケット中の命令と、前出するすべての実行命令の余分な遅延スロットに充てんされる。このため、ＮＯＰ２がＭＰＹ命令と並列であれば、次の実行パケット中の命令が、ＭＰＹの結果を使用を目的に取得することができる。多重サイクルＮＯＰがまだＮＯＰをパイプラインにディスパッチしている間に分岐の遅延スロットが完了すれば、その分岐は、多重サイクルＮＯＰをオーバライドして、５遅延スロット後に、分岐先が実行を開始する。
ＳＴＰは、１）強制的にプログラムフェッチを行うような並列分岐命令を含んでいる可能性が全くない、２）第２遅延スロットに多重サイクルＮＯＰがあるか、または、第３および第４遅延スロットの実行パケットが同じフェッチパケットにあるために、プログラムフェッチが一切起きていない、という両方の条件を満たしている場合に限り、用いることができる高度な命令である。
メモリシステム
ＤＳＰプログラムメモリシステム２３は、６４Ｋバイトのメモリとメモリ／キャッシュコントローラを具備している。プログラムメモリは、６４Ｋバイト内部プログラムメモリとして、あるいは、直接マッププログラムキャッシュとして、動作することが可能である。プログラムメモリシステムが動作する４つのモード、プログラムメモリモード、キャッシュイネーブルモード、キャッシュフリーズモード、キャッシュバイパスモードがある。プログラムメモリが動作するモードは、ＣＳＲ（図４）のプログラムキャッシュコントロール（ＰＣＣ）フィールド（ビット５〜７）によって決まる。表１７は、プログラムメモリシステム２３を構成する各種ＰＣＣ値の一覧である。
【００７２】
0003916745.tif 000043
0003916745.tif 000044
ＣＳＲのＰＣＣフィールドに値０００ｂがある場合、プログラムメモリは、有効なプログラムメモリ空間としてマップされる。このプログラムメモリマップを形成するアドレスは、装置上のＭＡＰ＿ＢＯＯＴピンの値によって異なる。
エミュレーション機能
本発明の１態様として、ソフトウェアプログラムの開発、または正確な演算を目的としたＤＳＰ１テストを行うために、ＤＳＰ１の演算をエミュレーションする新規改良技術があげられる。エミュレーションに関係するＤＳＰ１の各部分について、以下に詳しく説明している。
【００７３】
再び図１について説明すると、ＣＰＵ１０は、エミュレーション回路５０と割込み回路９０を備えており、テストポートによる実行およびスキャン制御、分析サポート、およびリアルタイムエミュレーションサポートなどのエミュレーション機能をサポートする。各機能については、後で詳しく説明する。
テストポートによる実行およびスキャン制御には、ＣＰＵ１０の停止も含まれている。ＣＰＵ停止サポートは、ソフトウェアブレークポイント（ＳＷＢＰ）または分析イベントに基づくＲＤＹベースのＣＰＵ停止により行われる。
分析サポートには、単一の正確な一致が得られるハードウェアプログラムアドレスブレークポイント（ＰＡＢＰ）、メガモジュールテストアクセスポート（ＭＴＡＰ）からのＥＭＵ０ＩＮまたはＥＭＵ１ＩＮ入力か、または、プログラムアドレスブレークポイントによってトリガ可能な分析イベント、および分析イベントをトリガできる特殊エミュレーションイベント入力（ＳＥＥ）などがある。
リアルタイムエミュレーションサポートには、メッセージ伝達に加え、ソフトウェア割込み、分析イベント、または次のサイクル境界に基づくＣＰＵ分析割込み（ＡＩＮＴ）などがある。
次に、図１５を参照すると、エミュレーション回路５０が、さらに詳細に示されている。メガモジュールテストアクセスポート（ＭＴＡＰ）３０５は、ＣＰＵテストポート（ＣＰＵＴＰ）３１０、分析テストポート（ＡＴＰ）３２０、およびメガモジュールテストポート（ＡＴＰ）３３０に接続されている。また、３つの領域、ＣＰＵ領域１０、分析領域３２１、およびメガモジュール領域３３１が、各テストポートにより相互接続されている。ＭＴＡＰ３０５は、メガモジュール内で、各種領域に対してスキャン制御および実行制御を行う。また、各テストポートは、ＭＴＡＰに対して各領域のインタフェースとして機能する。また、テストポートは、メガモジュールの機能的およびスキャンクロックのクロック切換機能を生成し、分散し、かつ実行する。ＭＴＡＰ３０５は、ＸＤＳ５１とＣＰＵ実時間解析およびメッセージ伝達機構との間のインタフェースとしての役割を果たしている。本発明の１態様によれば、ＭＴＡＰ３０５は、メモリのダウンロード／アップロードを迅速化するために、データのストリーム化を行う。また、ＭＴＡＰ３０５は、イベントカウンタにより性能分析をサポートし、エミュレーションとテストの両方に対する実行およびクロッキングのテストポート制御をサポートする。次に、ＭＴＡＰ３０５、テストポート３１０、３２０、３３０を収容しているエミュレーション回路５０の動作と設計について詳しく説明する。
【００７４】
特殊エミュレーション（ＳＥ）装置は、ＭＴＡＰ３０５と、全体としてのメガモジュール３００にインタフェースしており、デバッグ、トレース、およびブレークポイントの能力を向上させる働きをする。特殊エミュレーション装置（ＳＥ）は、ＳＥ分析（ＳＥＡ）領域回路のための第４領域を有しており、この領域は、メガモジュールの外部にある。さらに、ＭＴＡＰを介したメガモジュールへのＳＥＡ領域のインタフェースについても、以下に詳しく説明している。ＳＥＡ領域には、データおよびアドレス上のハードウェアデータブレークポイント、実行を目的にディスパッチされた実行パケットのアドレス上のハードウェアプログラムブレークポイント、実行されるプログラムアドレス、プログラム、およびデータメモリアクセスのトレース、採用された割込み、機能単位使用、および分岐、イベントカウンタならびにシーケンサがある。
図１６は、メガモジュールリセット動作と関連する信号を示すタイムチャートである。この工程を通じて、イナクティブＲＤＹが、依然としてＣＰＵを停止できる、すなわち、ＣＰＵサイクルが複数のクロックサイクルにわたることが可能な点に注意されたい。発生するイベントの並びは、次の通りである。
【００７５】
１．  クロックｎ＋２：  ＮＲＥＳＥＴがローになってから最初のクロックサイクルである。ＣＰＵテストポートがＦＵＮＣ状態であれば、次の動作が発生する。
Ａ）  すべての内部トライステートバスは、トライステート方式である。各バスは、サイクル６になるまで、トライステート状態のままである。
Ｂ）  ＬＯＧＸＯＦＦＤが表明され、すべての非プログラムメモリシステム装置が、メガモジュールストローブ（ＤＢＳ、ＰＷＲＤＮ、ＪＡＣＫ）を無視することを示す。
Ｃ）  ＬＯＧＸＯＦＦＰが表明され、プログラムメモリが、プログラムメモリストローブ（ＰＡＳ、ＰＤＳ、ＰＷＳ）を無視することを示す。
２．  サイクルｎ＋２：  ＣＰＵテストポートがＦＵＮＣ状態であれば、ＤＰおよびＥ１パイプライン段階のすべての命令が無効になる。
３．  サイクル１：  不定数のクロックサイクル後、ＮＲＥＳＥＴの立上りとともに、リセット割込み処理が発生する。
４．  サイクル６：  ＪＡＣＫがアクティブになると、ＰＷＳ、ＰＡＳ、ＰＤＳを除き、すべてのレジスタと境界信号がリセット値に設定される。ＬＯＧＸＯＦＦＤは、非表明である。
５．  サイクル７：  第１ＰＡＳがアクティブなので、ＬＯＧＸＯＦＦＰは、非表明である。
割込み動作
ＣＰＵは、通常のデジタルシグナルプロセッサ（ＤＳＰ）の動作として１４の割込みを行う。これらの割込みは、リセット（ＲＥＳＥＴ）、マスク不可能割込み（ＮＭＩ）及び割込み４〜１５である。これらの割込みは、ＣＰＵ境界上のリセット信号、ＮＭＩ信号及びＩＮＴ４〜ＩＮＴ１５信号に対応する。これらの信号を、ある実施形態では、装置のピンに直接供給し、チップ上の周辺装置に供給し、又は、チップが応答動作をしないように供給して不許可動作に設定することが出来る。一般的にリセット及びマスク不可能割込みを、装置上のピンを通じて行う。
これら割込みのプライオリティを表１８に示す。割込みピン上のロー−ハイのレベル遷移によって、割込標識レジスタ（ＩＦＲ）内で割込みを待機状態に設定する。割込みが適切にイネーブルされると、ＣＰＵは、割込み処理及び割込みサービスルーチンに対するプログラムフローの再処理を開始する。
【００７６】
0003916745.tif 000045
ＣＰＵはリセット処理を中止することが出来ない。リセットがロー−ハイの遷移を行った場合に、そのリセット処理を開始する。他の割込みと異なり、リセット信号にアクティブローのラベルを付与する。リセットのローレベルは、全てのＣＰＵ処理を停止すると共に、全てのレジスタを、それらのリセットレベルに戻す効果を有する。
マスク不可能割込み（ＮＭＩ）は、２番目に高いプライオリティの割込みとなる。二つの状態、いわゆる、分岐が取り出されているか否かにかかわらずＣＰＵが分岐の遅延スロットにある状態及び割込みの許可レジスタ（ＩＥＲ）のＮＭＩ−許可ビット（ＮＭＩＥ）が０である状態では、ＮＭＩが割込みの開始を中止する。ＮＭＩＥは、プロセッサ初期化の割込みを中止するリセット及び他のＮＭＩによってＮＭＩの再割込みを中止するＮＭＩ処理に応答してクリアされる。ＮＭＩは、ＮＭＩＥをセットすることにより、又は、Ｂ  ＮＲＰ命令の実行を終了することによって再びイネーブルに設定される。
ＮＭＩＥが０の場合、ＩＮＴ４〜ＩＮＴ１５が不許可に設定される。ＮＭＩ処理中、以前のプログラムを実行し続けるリターンポインタは、ＮＭＩリターンポインタレジスタ（ＮＲＰ）に記憶される。したがって、Ｂ  ＮＲＰ命令は、ＮＭＩを供給した後に以前のプログラムにリターンする。表１９は、ＮＭＩからのリターン方法を示している。
【００７７】
0003916745.tif 000046
以下の状態によって、ＩＮＴ４〜ＩＮＴ１５が割込みを開始するのを中止することが出来る。ＣＰＵは分岐の遅延スロットにある処理コードにあり、これは誤り状態が原因で実行を終了しない状態分岐を含む状態；割込みイネーブルレジスタ（ＩＥＲ）のＮＭＩＥビットが０である状態；ＩＥＲの対応する割込みイネーブル（ＩＥ）ビットが０である状態；制御状態レジスタ（ＣＳＲ）の全割込みイネーブルビット（ＧＩＥ）が零である状態である。
割込み処理中では、以前のプログラムを実行し続けるリターンポインタを、割込みリターンポインタレジスタ（ＩＲＰ）に記憶する。したがって、Ｂ  ＩＲＰ割込みは、割込みを行った後にプログラムフローにリターンする。表２０は、マスク可能割込みからのリターン方法を示している。
0003916745.tif 000047
ＩＡＣＫ信号及びＩＮＵＭ信号は、割込みが発生すると、装置１１の外部のハードウェアに警報を送出する。ＩＡＣＫ信号は、ＣＰＵが割込み処理を開始したことを示す。ＩＮＵＭｘ信号（ＩＮＵＭ０〜ＩＮＵＭ３）は、処理を開始する割込み数（ＩＦＲのビット位置）を示す。
表２１は、装置の７個の割込み制御レジスタをリストとして示している。
【００７８】
0003916745.tif 000048
ＩＦＲ及びＩＳＲはレジスタアドレスを共有する。ＩＦＲを読み出すと共にＩＳＲを書き込むことが出来る。他のレジスタは独自のアドレスを有する。
割込みイネーブルレジスタ（ＩＥＲ）の対応するビットがセットされた際の割込みは、この割込み処理をトリガすることが出来る。リセットに対するビット０は書き込み不可能であり、常に１として読み出される。リセット割込みは常にイネーブルとなる。なお、リセットをディスエーブルにすることは出来ない。ビットＩＥ４〜ＩＥ１５を、対応する割込みをイネーブルにし、又は、ディスエーブルにする１又は０として、それぞれ書き込むことが出来る。ＩＥＲを図１７Ｂに示す。
【００７９】
ＮＭＩＥは、クリアの場合、全ての非リセット割込みをディスエーブルにして、ＮＭＩの割込みを中止する。ＮＭＩイネーブル（ＮＭＩＥ）は、０の書込みによって影響する処理が実行されず、１の書込みによってセットされる。ＮＭＩＥは、イネーブルとなるまでプロセッサの任意の割込みを中止するリセットに応答して０に初期化される。リセット後、ＮＭＩＥをセットしてＮＭＩをイネーブルにすると共に、ＩＮＴ１５〜ＩＮＴ４をＧＩＥ及び適切なＩＥビットによってイネーブルにすることが出来る。ＮＭＩＥを手動でクリアすることは出来ない。ＮＭＩＥは、ＮＭＩの発生によってクリアされる。このクリアが行われると、ＮＭＩＥは、Ｂ  ＮＲＰ命令を終了し、又は、ＮＭＩＥに１を書き込むことによってのみセットされる。
割込み標識レジスタ（ＩＦＲ）（図１７Ａ参照）は、ＩＮＴ４〜ＩＮＴ１５及びＮＭＩの状態を有する。表２２は、割込み標識及びそれらの割込み標識に対応する割込みをリストとして作成する。割込み状態をチェックしたい場合、ＭＶＣ命令を用いてＩＦＲを読み出す。
【００８０】
0003916745.tif 000049
割込みセットレジスタ（ＩＳＲ）及び割込みクリアレジスタ（ＩＣＲ）（図１７Ｃ及び図１７Ｄ参照）によって、割込みをＩＦＲにおいて手動でセットし又はクリアすることが出来る。ＩＳＲのＩＳ４〜ＩＳ１５に１を書き込むことによって、対応する割込み標識がセットされる。同様に、ＩＣＲのビットに１を書き込むことによって、対応する割込み標識をクリアする。ＩＳＲ又はＩＣＲの任意のビットへの０の書込みには何ら影響を及ぼさない。割込み入力は、プライオリティを有し、ＩＣＲへの任意の書込みを無視する。リセット又はＮＭＩをセットし又はクリアすることが出来ない。（ＭＶＣ命令による）ＩＳＲ又はＩＣＲへの任意の書込みは、実質的には１遅延スロットを有する。この理由は、結果をＩＳＲ又はＩＣＲへの書込み後２サイクルまでＩＦＲで（ＭＶＣ命令によって）読み出すことが出来ないためである。
これらがＣＰＵ制御レジスタを形成しなくても、割込み待機ビットは、全てのＣＰＵ割込みの待機状態を保持する。ＲＳＴＰ，ＮＭＩＰ，ＡＩＰ，ＭＳＧＩＰ及びＩＰ４〜ＩＰ１５は、リセット，ＮＭＩ，ＡＩＮＴ，ＭＳＧＩＮＴ及びＩＮＴ４〜ＩＮＴ１５にそれぞれ対応する。ＩＰビットは、割込みを認識した際にセットされる。ユーザに対して直接明らかでない、これらのビットは、メガモジュール領域３３１に存在し、クロックごとに更新される（すなわち、イナクティブＲＤＹによってストールされない）。ユーザは、サイクルごとにＩＰの値を更新するＩＦＲによって、ＩＰビットの状態を観察することが出来る。ユーザは、割込みセットレジスタ（ＩＳＲ）及び割込みクリアレジスタ（ＩＣＲ）の書込みによってＩＰビットの状態に悪影響を及ぼすおそれがある。これらの変化は、ＩＦＲに対するＩＰビットの次の更新で生じる。ＩＰビットは、リセットで全てクリアされる。このセクションで説明したＣＰＵレジスタは全て、ＣＰＵ領域に存在し、サイクルごとに更新される（すなわち、イナクティブＲＤＹによってストールされない）。
以下のビットは、ＣＰＵ１０の通常の動作中のソフトウェアプログラムによってユーザが、これらビットを利用できないという意味で「保持される」が、これらビットは、エミュレーション及びテスト中に利用することが出来る。
ＩＲＦＲ：ＩＦＲのビット２及び３は、分析割込み（ＡＩＮＴ）及びメッセージ割込み（ＭＳＧＩＮＴ）に対してそれぞれ保持される。
ＩＥＲ：ＩＥＲのビット２及び３は、分析割込みイネーブル（ＡＩＥ）及びメッセージ割込みイネーブル（ＭＳＧＩＥ）に対してそれぞれ保持される。
ＩＳＲ：ＩＳＲのビット２及び３は、分析割り込みセット（ＡＩＳ）及びメッセージ割込みセット（ＭＳＧＩＳ）に対してそれぞれ保持される。これらビットは、ＥＭＵ＿ＭＶＣＥＮが走査によってセットされる場合、関連のＩＰビットをセットするためにのみ用いることが出来る。
ＩＣＲ：ＩＣＲのビット２及び３は、分析割込みクリア（ＡＩＣ）及びメッセージ割込みクリア（ＭＳＧＩＣ）に対してそれぞれ保持される。これらビットは、ＥＭＵ＿ＭＶＣＥＮが走査によってセットされる場合、関連のＩＰビットをセットするためにのみ用いることが出来る。
【００８１】
分析割込みを、所定のタイプのイベントによってトリガすることが出来る。所定のイベントは停止に対するトリガを行う。発生の停止に対して、ＣＰＵテストポートをＣＮＴＬ状態にする必要がある。例外は、ＣＰＵテストポートからの外部停止要求が実行状態に関係なく生じることである。
以下のような所定のイベントは、停止又は分析割込みに対するトリガを行うことが出来る。
１）アクティブ状態の特殊エミュレーションイベント（ＳＥＥ）入力。
２）オンチップアドレスブレークポイント（ＰＡＢＰ）。
３）イナクティブ状態からアクティブ状態に遷移するＥＭＵ０ＩＮ及びＥＭＵ１ＩＮ入力。
４）浮動小数点リソース衝突（ＦＰＸイベント）。
以下のような他の所定のイベントは、分析割込みのみに対するトリガを行うことが出来る。
５）ソフトウェア割込みＳＷＩ命令。
６）次のサイクル境界（ＣＹＣイベント）。
７）ＭＴＡＰからのＸＡＩＮＴ信号。
以下のような他の所定のイベントは、停止のみに対するトリガを行うことが出来る。
８）ＳＷＢＰデコード。これは、実行パケットの第１命令のクレッグフィールドがＳＷＢＰコード（０００１）を含むことを表す。
９）ＣＰＵテストポートからの外部停止要求。
イベントは、イネーブルされた場合に、プロセッサの停止された状態に関係なく認識されるだけ十分長くアクティブである必要がある。しかしながら、これらイベントは、複数のイベントを発生させるだけ十分長くアクティブになることが出来ない。エッジ検知回路を、イベント長の時間制限をエミュレートするために用いる。
【００８２】
既に説明したイベントの多数は、分析イベントとして分類され、ＣＰＵ内のＳＵＳＰＥＮＤ信号（表２９）がアクティブである場合には無視される。しかしながら、以下のイベントは、分析イベントとして分類されず、ＳＵＳＰＥＮＤ：ＳＷＢＰ，ＳＷＩ及びテストポートから要求された外部停止によって悪影響を及ぼされない。
ＳＵＳＰＥＮＤ信号は、４タームのＯＲによって駆動される。
１．ＣＰＵ＿ＤＯＮＥアクティブ
２．ＥＣＴＬビットアクティブ（表２８）
３．ＰＡＵＳ，ＳＤＡＴ又はＳＣＴＬ状態であるＣＰＵテストポート（表３３）。
４．分析制御レジスタのＡＩＮＴＳＵＳＰ信号（表３４）。
図１８を参照する。これは分析割込みの検出を表すタイミング図を示している。分析割込み（ＡＩＮＴ）を７ソース中の一つによって発生させることが出来る。
１．ＣＰＵ信号に対するＥＭＵ０ＩＮ  ＭＴＡＰ。
２．ＣＰＵ信号に対するＥＭＵ１ＩＮ  ＭＴＡＰ。
３．ＭＴＡＰからのＸＡＩＮＴ信号。割込みを、ＣＰＵテストポートがＣＴＲＬにあるときのみ発生させる。
４．特殊エミュレーションイベント（ＳＥＥ）メガモジュール入力。
５．オンメガモジュールプログラムアドレスブレークポイント（ＰＡＢＰ）。
６．ソフトウェア割込み命令（ＳＷＩ）。ＳＷＢＰ，ＳＷＩと異なり、ＣＮＴＬ状態であるべきＣＰＵテストポートを要求しない。ＳＴＰ命令は、ＳＷＩをセットするためのプログラムメモリへの書込みに利用できる。
７．実行中の次のサイクル境界への交差（ＣＹＣ）。Ｂ  ＡＲＰのターゲット実行パケットの後のイネーブルでの第１サイクル境界が終了すると、Ｅ１は、ＣＹＣイベントをトリガし、ＡＩＰをセットする。これは、モニタによる割込みに基づく単一ステッピングに対して用いられる。
【００８３】
これらイベント中の一つ以上は、分析制御レジスタ（図３１Ａ）によるイネーブルを要求する。ＡＩＰ（したがって、ＩＦＲ（図１７Ａ）のＩＦＲのＡＩＦビット）は、割込み処理によって、すなわち、ＩＣＲ（図１７Ｄ）のビット２への１の書込みによってのみクリアされる。これら割込みは、他の全ての割込みと同様に、分岐の遅延スロットにある間に発生することが出来ない。認識は、分岐処理が終了するまで延期され、図１８は、これらイベントの検出を示す。ＡＩＰは、表示された割込みがＡＩＥ及びＰＲＩ（及びＧＩＥ，ＩＥ，ＮＭＩＥ）によって必要に応じてイネーブルされる場合のみセットされる。
分析制御レジスタ（図３１Ａ）のビットは、割込みのマスク可能性及びプライオリティを変化させることが出来る。ＰＲＩ，ＡＩＮＴをセットすることによって、最高プライオリティの第２のマスク不可能割込み（ＰＲＩ＝１）又は２番目に低いプライオリティのマスク可能な割込み（ＰＲＩ＝０）を処理することが出来る。あるシステムにおいて、分析は出来るだけ迅速にイベントに応答する必要がある。これらにおいて、マスク不可能モードを用いる必要がある。他のシステムにおいて、プログラムフローが出来るだけ混乱しないようにする。この場合、マスク可能な、ロープライオリティモードを用いる必要がある。
ＰＲＩ＝１の場合、ＡＩＥは全ての非リセット割込みをディスエーブルにする。また、ＡＩＮＴは、ＧＩＥ又はＮＭＩＥによって影響を及ぼされない。ＮＭＩＥは、全ての非リセット／非ＡＩＮＴ割込みをディスエーブルして、リセット又はＡＩＮＴによる場合を除くＮＭＩの割込みを中止する。ＨＰＩＥＮＴで反映すべき割込みに対して、（それがＡＩＮＴでない場合）ＰＲＩ＝１のときにＡＩＥによってイネーブルにする必要がない。
ＰＲＩ＝１のときに、処理を必要とする割込みの検出の際の以下の相違する制限が課される。
１．ＧＩＥ及びＮＭＩＥを、行うべきＡＩＮＴに対してセットする必要がない。
２．リセットを除く全ての割込みに対して、ＡＩＥをセットする必要がある（ＡＩＥ＝１）。
ＰＲＩ＝１の場合に、以下の相違する動作が割込み処理中に発生する。
１．ＡＩＮＴ中、ＰＧＩＥはＧＩＥにセットされず、ＧＩＥはクリアされない。
２．ＡＩＥはクリアされる。
【００８４】
ＰＲＩの値に関係なく、ＡＩＮＴに対するリターンアドレスは、常に、図３２Ａに示すように、分析割込みリターンポインタレジスタ（ＡＲＰ）にセーブされる。ＮＲＰ及びＩＲＰ（表２０参照）からの個別のＡＲＰは、ＡＣＲでＰＲＩ＝１のように、その必要性がある。ＡＩＮＴは、ＮＭＩを割り込み又は他の割込みを行い、ＩＲＰの値を上書きすることが出来る。
図１９Ａ及び１９Ｂは、割込みＳＷＩ及びＢＡＲＰにそれぞれ関連する二つの分析割込みを示す。表２３及び２４は、これら二つの命令を示す。表２５は、ＡＩＮＴコードシーケンスからのリターンを示す。
２．リセットを除く全ての割込みに対して、ＡＩＥをセットする必要がある（ＡＩＥ＝１）。
ＰＲＩ＝１の場合に、以下の相違する動作が割込み処理中に発生する。
１．ＡＩＮＴ中、ＰＧＩＥはＧＩＥにセットされず、ＧＩＥはクリアされない。
２．ＡＩＥはクリアされる。
ＰＲＩの値に関係なく、ＡＩＮＴに対するリターンアドレスは、常に、図３２Ａに示すように、分析割込みリターンポインタレジスタ（ＡＲＰ）にセーブされる。ＮＲＰ及びＩＲＰ（表２０参照）からの個別のＡＲＰは、ＡＣＲでＰＲＩ＝１のように、その必要性がある。ＡＩＮＴは、ＮＭＩを割り込み又は他の割込みを行い、ＩＲＰの値を上書きすることが出来る。
図１９Ａ及び１９Ｂは、割込みＳＷＩ及びＢＡＲＰにそれぞれ関連する二つの分析割込みを示す。表２３及び２４は、これら二つの命令を示す。表２５は、ＡＩＮＴコードシーケンスからのリターンを示す。
【００８５】
0003916745.tif 000050
分析割込みが処理を開始すると、ＡＣＲ信号のＡＩＮＴＳＵＳＰビットをセットして、任意の将来の分析事象割込み又は停止の認識をディスエーブルする（すなわち、ＡＩＰはセットされない）。ＡＩＮＴＳＵＳＰは、ユーザ書込みによってのみクリアされる。
再び図１８を参照して、他の割込みが存在する際の分析割込みの動作を説明する。以前の実行パケットが、そのＤＰフェーズで発生する（全ての必要な方法でイネーブルされた）割込みを有する場合、この割込みは延期され、ＡＩＮＴが行われる。したがって、ｎ＋４及びｎ＋５が取り消される。ｎ＋５へのリターンに応じて、ＡＩＰに基づくプログラムアドレスを発生させた任意の状態が再度発生する。
【００８６】
次の実行パケットｎ＋６が、そのＤＰフェーズで発生する（全ての必要な方法でイネーブルされた）割込みを有する場合、ＡＩＮＴが優先して行われる。その理由は、それが次の割込みの前に発生するからである。したがって、分析割込みＳＷＩ，ＰＡＢＰ，ＳＥＥ及びＡＩＮＴに基づくＣＹＣに基づいたプログラムアドレスに対して何ら特別の処理を必要としない。
テストポート
再び図１５を参照すると、各領域１０，３２１及び３３１はそれぞれ、ポート３１０，３２０及び３３０を通じてＭＴＡＰ３０５にインタフェースする。ＭＴＡＰは、各領域に対して一つずつ四つのテストポートをサポートアップする。しかしながら、ＳＥＡ領域に対するテストポートは、メガモジュールに含まれない。テストポートを、領域クロック発生及び実行並びに走査制御を行う一般的なテスト／エミュレーションインタフェースとする。実行制御によって、領域のエミュレーション又はテストソフトウェア直接クロック間制御を行うことが出来る。テストポートインタフェースに対するＭＴＡＰを、表２６及び表２７に更に詳細に示す。ＳＥＡ領域とＭＴＡＰとの間のインタフェースは、同様であり、これを、図３４及び図４３を参照して詳細に説明する。
【００８７】
0003916745.tif 000051
４  この場合、信号に幾分冗長がある。例えば、ＳＣＴＬ（又はＳＤＡＴ）経路のＳＨＩＦＴ＿ＤＲを、主張した（又は主張しない）Ｃ０ビットによって又はＳＣＴＬ＿ＳＥＬ（若しくはＳＤＡＴ＿ＳＥＬ）信号によって決定することが出来る。しかしながら、ＰＡＵＳで生じるＳＣＴＬＵＰＤＡＴＥ＿ＤＲ又はＣＡＰＴＵＲＥ＿ＤＲに対して、ＳＣＴＬ＿ＳＥＬを、制限するものとして用いる必要がある。この理由は、ＵＰＤＡＴＥ＿ＤＲ信号及びＣＡＰＴＵＲＥ＿ＤＲ信号は、関連の動作がない場合でもテストポートがＰＡＵＳにある間ＳＤＡＴから主張されているからである。また、Ｃ０は、ＳＤＡＴ  ＳＨＩＦＴ＿ＤＲ動作のＳＤＡＴ＿ＳＥＬに比べて制限するものとして実行することが出来る。したがって、ＳＤＡＴ＿ＳＥＬは、これらの信号を主張する際の制限のためには必要とされない。
【００８８】
0003916745.tif 000052
0003916745.tif 000053
【００８９】
表２８，２９，３０，３１及び３２並びに図２０及び２１は、後に詳細に説明するメガモジュール３００のエミュレーション及びテストに関連する種々の信号及び制御ビットを説明し、かつ、規定する。表２８は、エミュレーション制御に対して用いられると共に走査チェーン３０１ａ〜ｄを用いて転送される状態情報を提供するために用いられるＣＰＵ領域ビットを規定する。表２９は、メガモジュール境界３０１の両端間で送信される信号を規定する。図２０は、ＭＴＡＰ３０５とＣＰＵ領域１０との間の相互接続を説明する。表３０は、メガモジュール境界３０１も駆動する図２０に図示した信号を規定する。表３１は、図２０に示した残りの信号を規定する。図２１は、ＭＴＡＰ３０５とメガモジュール領域３３１との間の相互接続を示す。表３２は、図２１に図示した信号を規定する。
表２８〜３２で用いられる種々の用語を以下のように規定する。
ＡＮＮＵＬ：実行パケットが特定の経路（パイプライン）段中に取り消される場合、それは、任意のメガモジュール境界ストローブ又は状態をアクティブにセットせずに、ユーザビジブル又はエミュレーションビジブル状態に対して任意の値を書き込む。アドレス及びデータは、ストローブによって制限される必要がある状態信号のようにストローブによって制限されると、状態を変化させることが出来る。非制限状態をイナクティブにセットする必要がある。取消によって、命令が将来の経路段で取り消される。
分析制御レジスタ（ＡＣＲ）：図３１Ａに示す。
分析データレジスタ（ＡＤＲ）：図３１Ｂに示す。
ＡＣＲのＰＲＩ割込みプライオリティ制御ビット：表３４をもって説明する。
【００９０】
0003916745.tif 000054
0003916745.tif 000055
0003916745.tif 000056
【００９１】
0003916745.tif 000057
0003916745.tif 000058
【００９２】
0003916745.tif 000059
【００９３】
0003916745.tif 000060
0003916745.tif 000061
【００９４】
0003916745.tif 000062
図２２は、テストポートが存在することが出来る種々の状態の状態図である。ＭＴＡＰ信号Ｃ０，Ｃ１，及びＣｅ並びにＬＯＣＫ信号（表２６）のセットは、表３３で説明すると共に図２２に図示したようにテストポートの状態を決定する。各テストポート３１０，３２０及び３３０は、ＭＴＡＰ（図１５）からの互いに依存しないロック信号を有する。アクティブロック信号によって、現在の状態を、ロック信号がイナクティブになるまでテストポート内にラッチする。テストポートがロックされない場合に、テストポートバスがテストポートの状態を決定する。テストポートがロックされた際に、信号がテストポートバス上で変化し、クロック切換えが無視される。領域がロックされる場合、その走査モジュールは、チェーンに加えられれず、テストポートの共有シフトレジスタ（ＳＳＲ）ビットを通じてバイパスされる。ＬＯＣＫ信号は、装置の現在のクロック発生モードをロックする。
【００９５】
ＸＤＳ５１上のソウトウェア動作は、ロックインさせるコードとは相違するテストポートに供給されるＭＴＡＰコードにテストポートがロックされない場合にテストポートが適切に遷移することを保証する。ＦＵＮＣ，ＣＮＴＬ又はＨＡＬＴから走査状態（ＳＣＬＴ又はＳＤＡＴ）に切り換えられると、ＰＡＵＳは、図２２にに示すように遷移される。ＭＴＡＰによって、ＰＡＵＳ状態を、以降で説明するようにクロック切換えが終了するまで喚起させることが出来ないようにする。
テストポートがＰＡＵＳでロックされない場合、エミュレーションソフトウェアは、ＰＡＵＳでテストポートをロックしないようにする必要がある。それが他の任意の状態でロックされていない場合、結果的に得られるクロック切換えに対して突然の障害を生じる。
再び図１５を参照すると、各テストポートは、領域バスイネーブル（ＤＢＥＮＢ）信号を、その領域走査経路に供給する。イナクティブの場合、ＤＢＥＮＢは、全ての領域境界信号がイナクティブになるようにし、全ての領域３状態をＨＩ−Ｚ状態にする。エミュレーションモードにおいて、テストポートがＦＵＮＣ，ＣＮＴＬ又はＨＡＬＴにある場合、ＤＢＥＮＢをアクティブにする。テストモード（ＡＴＰＧ＿ＤＥＢＭ＝１）において、テストポートの最初のＳＳＲビットは、ＤＢＥＮＢとして作用する。このビットは、データ走査（ＳＤＡＴ）動作の一部として走査される。全てのモードにおいて、ＤＢＥＮＢ信号は、テストポートがＳＣＴＬ，ＳＤＡＴ又はＰＡＵＳの際にイナクティブとなる。ＰＡＵＳからＦＵＮＣ又はＣＮＴＬに切り換わる場合に、ＭＴＡＰは、ＤＢＥＮＢが実行を再開する前にアクティブになると仮定するために、テストポートが少なくとも１クロックに対してＨＡＬＴに入るようにする。
【００９６】
【表１】
0003916745.tif 000063
ここで、クロック切換えの動作を説明するタイミング図である図２３Ａ，２３Ｂ及び２３Ｃを参照する。ＰＡＵＳ状態を、ＵＣＬＫ＿ＳＥＬ，ＴＣＬＫ＿ＳＥＬ，ＭＴＡＰコード，ＬＯＣＫ及びＳＨＩＦＴ＿ＤＲによって制御されるようなクロック切換えに対して用いられる。ＬＭは、テストポートがＰＡＵＳ，ＳＤＡＴ又はＳＣＴＬにあるときにターンオフされる。ＡＴＰＧ＿ＤＥＶＭ＝１の場合、ＬＭも、ＨＡＬＴにあるときにシャットオフされる。３タイプのクロック切換えが可能である。
１．装置のエミュレーション制御に対する（ＴＣＬＫの）走査（図２３Ａ）のためのＵＣＬＫ上での機能実行からの切換え。
２．テストに対する（ＴＣＬＫの）走査（図２３Ｂ）のためのＴＣＬＫ上での機能実行からの切換え。ＴＣＬＫ上での実行はテスト中に用いられる。その理由は、ＴＣＬＫを、装置ピンから直接来るように保証することができ、それに対して、ＵＣＬＫをｃＤＳＰ設計論理によって制御することが出来るためである。
３．ＵＣＬＫ上の機能実行から既に説明した場合と同一の理由のテストに対するＴＣＬＫ（図２３Ｃ）上の機能実行への切換え。
テストポートへの入力に示した変化のシーケンスは、ＭＴＡＰ出力の遷移に一致する。一つの例外は、ＳＨＩＦＴ＿ＤＲが  ＳＤＡＴ状態又はＳＣＴＬ状態の中及びＳＤＡＴ状態又はＳＣＴＬ状態からの遷移を同時に行うことが出来ることである。
【００９７】
以下のルールに従う。
１．クロック変化は、テストポート内のラッチされたコードに基づく。
２．クロック及びテストポート状態は、ＬＯＣＫビットがアクティブである場合には変化しない。
３．ＬＳは、常にフェーズが１８０゜であり、これまで駆動されたクロック（ＳＣＬＫ又はＬＭ）にオーバラップしない。
４．（Ｔ／Ｕ）ＣＬＫは、（Ｔ／Ｕ）ＣＬＫ＿ＳＥＬがイネーブルされると共にテストポートがＡＴＰＧ＿ＤＥＶＭ＝０である場合のＨＡＬＴ、ＦＵＮＣ又はＣＮＴＬである場合にのみＬＭ／ＬＳを駆動する。
５．ＴＣＫＬは、ＴＣＬＫ＿ＳＥＬ，ＳＨＩＦＴ＿ＤＲ及びＳＤＡＴ＿ＳＥＬがイネーブルされると共に、ＬＯＣＫがディスエーブルされる場合のみＳＣＬＫ／ＬＳを駆動する。ＳＣＴＬ＿ＳＥＬはＳＣＬＫをイネーブルしない。その理由は、ＳＳＲ  ＳＲＬ（すなわち非領域ＳＲＬ）のみが走査されるからである。
６．最後に、装置がＡＴＰＧモード（ＡＴＰＧ＿ＤＥＶＭ＝１）にある場合、ＴＣＬＫは、テストポートがＦＵＮＣ又はＣＮＴＬにある際に、常時ＬＭ／ＬＳを駆動する。これは、ＵＣＬＫがローに駆動されると仮定する。
走査動作を、テストポートの内部共有シフトレジスタ（ＳＳＲ）経路によって行う。この経路は、この領域内の個別の走査チェーンに対して一つのＳＲＬから成る。ＳＳＲビットは、走査制御（ＳＣＴＬ）経路を更新するために、又は、領域データ（ＳＤＡＴ）走査経路に対するバイパスビットとして用いられる。ＳＳＲ経路は、走査クロックを用いてクロックされる。その理由は、領域が機能クロックで走査する間でさえもテストポートは走査可能のままのためである。領域内のクロックは、機能クロックからＳＤＡＴ及びＳＣＴＬ用の走査クロック（図２２）に切り換える必要がある。走査経路の詳細を、図３５に対して詳細に説明する。
【００９８】
制御走査動作（ＳＣＴＬ）は、ＳＳＲ走査経路を経てモジュール走査イネーブル（ＭＳＥＮＢ）をアクセスする。ＭＳＥＮＢは、図２４に図示したように、データ走査（ＳＤＡＴ）経路を形成するようにイネーブルされる領域走査経路を選択する。各テストポートは、少なくとも一つのＭＳＥＮＢビットを含む。ＭＳＥＮＢビットは、領域内の各走査経路に対して必要とされる。メガモジュールを有する全てのテストポートは単一スライスである。これらは、単一スライス経路及び単一ＭＳＥＮＢビットを有する。他の単一スライスの例は、簡単のために、ＳＣＴＬ走査及びＭＳＥＮＢビットを、ＬＯＣＫ信号又はその等価物に置換することが出来る。ＭＴＡＰがアクティブＳＣＴＬ＿ＳＥＬ信号によって制限されたＳＨＩＦＴ＿ＤＲを主張する間に、ＭＳＥＮＢデータをＳＳＲ経路で走査する。ＭＴＡＰが、アクティブＳＣＴＬ＿ＳＥＬ信号によって制限されたＵＰＤＡＴＥ＿ＤＲを主張する際に、ＳＳＲがＭＳＥＮＢにロードされる。ＭＴＡＰが、アクティブＳＣＴＬ＿ＳＥＬ信号によって制限されたＣＡＰＴＵＲＥ＿ＤＲを主張する際に、ＭＳＥＮＢはＳＳＲにロードされる。機能実行中のバイパス制御走査を、テストポートをＦＵＮＣ又はＣＮＴＬでロックした後に走査を実行することによって行うことが出来る。この場合、ＳＳＲビットは、走査チェーンに追加さる唯一のものである。また、テストポートは、ＵＰＤＡＴＥ＿ＤＲ信号及びＣＡＰＴＵＲＥ＿ＤＲ信号に応答しない。
データ走査動作（ＳＤＡＴ）は、ＳＳＲ走査経路を通じた領域走査経路に対するアクセスを提供する。データ走査中、領域データは、ＳＳＲ経路を通じて走査される。ＳＳＲビットは、ＭＳＥＮＢビットとして制御されるようなバイパスである領域走査経路に対するバイパスビットとして作用する。ＳＳＲ経路はＳＤＡＴ状態によって選択される。データは、ＭＴＡＰがＳＨＩＦＴ＿ＤＲを主張すると共に、テストポートがＳＤＡＴ状態にある間にＳＳＲ経路で走査される。ＳＳＲに関連するＭＳＥＮＢがイネーブルされると、データは、領域走査経路を通じてＳＳＲビットから走査される。ＭＳＥＮＢビットがディスエーブルされる場合、データは、次のＳＳＲビットに対して走査される。各領域は少なくとも一つのＳＤＡＴ経路を有する。ＳＤＡＴ経路は、テスト及びエミュレーションに対して要求されるＳＲＬに対するアクセスを提供する。ＵＰＤＡＴＥ＿ＤＲ信号及びＣＡＰＴＵＲＥ＿ＤＲ信号は、走査データ動作には用いられない。
【００９９】
パワーダウン
パワーダウンの三つの方法は、以下のようにして集積回路１で利用される。
１．ＩＤＬＥ命令。ＩＤＬＥは、割込みによって取り消されるまで継続的にＮＯＰを経路に伝搬させる。クロック及びＲＤＹ動作は通常のように継続する。したがって、ＣＰＵはテストポート停止に応答したままである。
２．分析及びＣＰＵ領域のＬＭ／ＬＳをターンオフするＰＤＲＥＱ／ＰＤＡＣＫハンドシェークの終了。マイクロプロセッサ１の設計は、変化した割込み状態に基づくメガモジュールから再度イネーブルクロックへのＥＩＰ＿ＳＥＴ信号及びＩＰ＿ＳＥＴ信号を用いることが出来る。
３．ＣＰＵに対するＵＣＬＫの修正又は遮断。しかしながら、ＵＣＬＫを遮断した場合、ＸＤＳは、ＴＣＬＫ上でメガモジュールを実行することによって制限される処理を提供する。
図１５及び表３４は、テストポート、パワーダウン論理及びメガモジュール境界間のパワーダウンインタフェースを詳細に示す。テストポートがイナクティブＦＣＬＫ＿ＲＥＱ及びアクティブクロックオフ要求（ＯＦＦＲＥＱ）を受信する場合、テストポートは、クロック（ＬＭロー及びＬＳハイ）を遮断すると共に、ＯＦＦＡＣＫを主張することによって、その要求を行う。ＯＦＦＲＥＱが不作動状態、又は、ＦＬＣＫ＿ＲＥＱが作動状態である場合、クロックが再度イネーブルされ、ＯＦＦＡＣＫが主張されない。パワーダウン論理は、マイクロプロセッサ１に、分析及びＣＰＵ領域を遮断する機能を付与する。第２のケースでは、ＥｉＰ＿ＳＥＴ又はＩＰ＿ＳＥＴ入力を、マイクロプロセッサ１が再主張クロックを使用したい信号割込み状態に対して用いることが出来る。マイクロプロセッサ１の設計は、ＣＰＵがパワーダウンする間に必要に応じて他の全ての素子を停止させるようにする。
【０１００】
0003916745.tif 000064
【０１０１】
メガモジュールの全てのＳＲＬは、走査可能であり、三つのテストポート領域中の一つ又はＭＴＡＰに属する。第４のオフメガモジュール領域、ＳＥ分析領域は、ＭＴＡＰによってサポートされるが、メガモジュールの一部として含まれない。各領域は、それに関連するテストポートを有する。テストポートは、特定の領域のクロックを切り換える必要がある状態で用いられる。第４領域は次の通りである。
分析領域：分析データレジスタ（ＡＤＲ）
メガモジュール領域：この領域は、
１．ＩＦＲ及び関連の検出ラッチを供給するＩＰビット
２．境界でＲＤＹをラッチするとともに停止を制御するＳＲＬ
３．テスト用の並列シグネチャ解析（ＰＳＡ）
４．ＭＴＡＰからのＥＭＵ（０／１）ＩＮ信号を検出する回路
５．パワーダウン制御ビットに対するラッチ
６．消耗したＣＰＵを発生させる回路
７．１クロックＭＳＧＳＷパルスを発生させる
を有する信号走査経路を有する。
ＣＰＵ領域：ＣＰＵ領域は、ＲＤＹによって停止された全てのＣＰＵ  ＳＲＬを有する単一走査経路からなる。
ＳＥ分析（ＳＥＡ）領域：特殊エミュレーション装置（ＳＥ）は、ＳＥ論理に対する第４の領域を有し、これは、メガモジュールの外側にある。
ＣＰＵテストポート停止制御
このセクションでは、エミュレーションに対するＣＰＵ領域停止について説明する。エミュレーションモード（ＥＭＵ＿ＤＥＶＭ＝１）において、ＣＰＵは、サイクル境界での実行を停止する。テストモード（ＡＴＰＧ＿ＤＥＶＭ＝１）において、ＣＰＵはクロック境界での実行を停止する。このセクションの図は、図示するために２サイクルのオフメガモジュールＲＤＹに基づく停止を示す。表３５は、ＣＰＵ領域と停止をサポートするＣＰＵテストポートとの間の信号を規定する。
【０１０２】
0003916745.tif 000065
図２５は、既に説明したようなエミュレーションに対する停止の相違するケースを説明するタイミング図である。この説明はテストポートが停止状態になることを示すが、他の実施の形態に対して、テストポートをＰＡＵＳ状態の代わりにする場合、その結果は同一である。ＰＡＵＳは、ＨＡＬと同様にＥＲＤＹ＿ＤＣ，ＥＲＤＹ＿Ｅ１及びＣＰＵ＿ＤＯＮＥ信号に影響を及ぼす。エミュレーション停止は、以下のケースに応じて発生する。
ケース１．ＥＭＵ（０／１）入力のアクティブ遷移。ＥＭＵ（０／１）信号は１クロック長パルスを発生させる。したがって、これら信号は、（多分サイクルの中間の）メガモジュール領域で検出され、その幅は図示したようにサイクルの終了まで伸長される。したがって、それがイナクティブＲＤＹ中に応答する必要があるため、メガモジュール領域の論理はこれを達成する。
ケース２．ＤＰフェーズ中に検出されるプログラムアドレスブレークポイント。
ケース３．ＤＰフェーズ中にデコードされたＳＷＢＰ。一度、経路は、命令のＥ１フェーズ中に停止される。経路は、ＳＷＢＰ＿ＤＥＣ領域が走査によってクリアされるまで進行しない。
ケース４．外部でのＰＣＤＰのプログラムアドレスブレークポイント整合に基づく特殊エミュレーションイベント（ＳＥＥ）。これは、ＤＰフェーズ中に内部で見られる。他の状態が発生することができ、特殊エミュレーション論理に依存する停止に基づくＳＥＥが実現される。しかしながら、プログラムアドレスブレークポイントが示される。その理由は、最も厳密なタイミング要求を有するからである。
ケース５．浮動小数点リソース衝突。
ケース６．ＤＰフェーズ中のＣＮＴＬからＨＡＬＴまでのテストポート遷移。
ＥＭＵ（０／１）ＩＮイベントのように、これは、ＤＰサイクルの中間でも生じるおそれがある。これらイベント中の一つに基づいて、図２５に示すように、以下の動作が発生する。
【０１０３】
ＥＲＤＹ＿ＤＣ信号は、全ＤＣフェーズ中外部でローにセットされる。
ＥＲＤＹ＿Ｅ１信号は、Ｅ１フェーズの最初で開始するように外部でローにセットされる。
ＥＭＵＲＤＹは、関連のＥ１の最初でセットされる。このセットではＣＰＵを停止させるＣＰＵ＿ＲＤＹ信号を供給する。
一度、全てのＲＤＹ（ＲＤＹ１〜ＲＤＹ４入力）が内部でアクティブになると、ＣＰＵ＿ＤＯＮＥを主張する。
ＣＰＵ＿ＤＯＮＥを識別した後、ＭＴＡＰがＣＰＵテストポートをＣＮＴＬからＨＡＬＴに移動させる。
ＸＤＳは、ＭＴＡＰを通じて、全ての必要な走査を実行する。
ＭＴＡＰは、テストポートをＣＮＴＬまで戻して、ＣＰＵが経路フェーズを終了できるようにする。ＣＰＵ＿ＤＯＮＥ及びＥＲＤＹ＿Ｅ１はイナクティブになる。
ＥＭＵＲＤＹはイナクティブになる。
ＭＴＡＰが１クロックのみに対してＣＮＴＬを発生する場合、メガモジュールを単一経路フェーズにステップさせることが出来る。
図２６は、外部メモリ準備信号ＥＲＤＹを形成する回路を示す図である。外部メモリシステムは、互いの停止を認識するように相互のＲＤＹを追跡する必要がある。同様に、ＥＲＤＹ＿ＤＣ信号及びＥＲＤＹ＿Ｅ１信号を、エミュレーション停止に認識すべき外部メモリシステムによって用いることが出来る。ＣＰＵは、エミュレーション停止前に（少なくとも２クロックで）中止を警告する内部の二つのサイクルを有する。これによってＥＲＤＹ＿ＤＣ信号及びＥＲＤＹ＿Ｅ１信号を発生することが出来る。
【０１０４】
図２７は、停止、割込み及びリセットの相互作用を説明するためのタイミング図である。図２７において、実行パケットｎ＋５がＤＣ段でイネーブルになった際に中止の割込みが発生したと仮定する。ｎ＋５がＤＰで検出した停止の場合に、その停止はプライオリティであり、割込みを発生しない。このようにして、停止は（リセットを含む）割込みを遮断することが出来る。しかしながら、割込み標識はセットし続ける。割込み及びリセットも走査中延期される。その理由は、ＥＭＵＲＤＹは、経路を停止することによって割込み応答を延期するためである。
停止の副次的な影響は、経路を通じた関連の実行パケットの進行に依存する。したがって、複数サイクルＮＯＲ又はＩＤＬＥに続く実行パケットに出会うと、そのＤＰ，ＥＲＤＹ＿ＤＣ及びＥＭＵＲＤＹは、実行パケットがＤＣに入るまで応答しない。同様に、ＥＲＤＹ＿Ｅ１及びＣＰＵ＿ＤＯＮＥは、実行パケットがＥ１に入るまで応答しない。
ＣＰＵのテストポートが、割込み処理中にＣＰＵテストポート要求されたエミュレーション停止に応答してＣＮＴＬからＨＡＬＴに遷移する場合、ＣＰＵ＿ＤＯＮＥは、割込みサービスフェッチパケット（ＩＳＦＰ）がＥ１に到達する（図２７）までアクティブに設定されない。
図２８は、テストポートによって要求されるテスト停止を示すタイミング図である。テストモード（ＡＴＰＧ＿ＤＥＶＭ＝１）の際に、ＣＰＵはＣＰＵポートに要求されたテスト停止に応答するＣＮＴＬからＨＡＬＴに遷移するテストポートに対応して直ちに停止する。これは、割込み処理の存在に関係なく同様に動作する。
エミュレーション経路制御
再び種々のエミュレーション制御及び状態ビットを要約する表２８を参照して、ここで以下のエミュレーションビット：ＥＰＤＮ，ＥＰＵＰ，ＥＣＴＬ及びＥＵＰＬについて詳細に説明する。エミュレーションパイプダウン（ＥＰＤＮ）ビットは、以下のような結果となるエミュレーション停止を中止する。
ディスエーブルされた別のフェッチ：ＰＡＳはディスエーブルになる。したがって、これ以後におけるプログラムフェッチは開始されない。しかしながら、以前に要求されたフェッチは、終了を許容すると共に、プログラムフェッチ回路１０ａに配置されたプログラムデータ入力バッファＰＤＡＴＡ＿Ｉにロードするように許容される。
【０１０５】
まだＥ１で中止されない実行パケット：実行パケットがＥ１に入る前に中止される。その後Ｅ２に入る任意の実行パケットを、ＸＤＳによってサイクル的に終了させることが出来る。ＡＮＮＵＬビット及びＡＮＮＵＬ＿ＡＳＵビットの両方を、動作を停止させるために０に走査する必要がある。
ディスエーブルされた割込み：リセットを含む全ての割込みの実行はディスエーブルされる。ペンディングビットをセットし続ける。
エミュレーションパイプアップ（ＥＰＵＰ）ビットは、エミュレーション再開の中止を実行する。割込みはディスエーブルされて、リセットを含む全ての割込みの実行がディスエーブルになるが、ペンディング割込みビットはセットし続けることになる。
エミュレーション制御（ＥＣＴＬ）ビットによって、以下のステップを実行することによってＣＰＵのエミュレータ制御を許容する。
１）保留分析イベント：ＥＣＴＬは、分析イベントの任意の将来の認識を保留する。
２）ディスエーブルされた割込み：ＥＣＴＬは、リセットを含む全ての割込みをディスエーブルする。ＩＰビットはセットのままであるが、割込みは行われない。分析イベントの保留のために、ＡＩＰをＳＷＩによってのみセットすることが出来る。
３）ディスエーブルフェッチ：（ＥＰＤＮのような）ＥＣＴＬも、ＰＲＳをイナクティブに強いることによってプログラムフェッチをディスエーブルする。したがって、ＣＰＵが停止中であるとき、ＸＤＳは命令をＰＤＡＴＡ＿Ｉに対して走査することが出来る。ＰＤＡＴＡ＿Ｉが複数の実行パケット（部分的に順次フェッチパケット）を有する場合、ＣＰＵは、これらを通常のように処理すると共に、終了時に最初の実行パケットに重なる必要がある。しかしながら、実行パケットは、フェッチパケット境界に交差し、かつ、重なることが出来ない。ＸＤＳは、８命令中の一つとしてＳＷＢＰを置換することによって他のエミュレーションイベントをトリガすることが出来る。
エミュレーションプログラムアップロードサポート（ＥＵＰＬ）ビットは、プログラムアップロードにサポートする。ＥＵＰＬは、プログラムフェッチを再イネーブルし、次のフェッチパケット（すなわち、分岐がない、ＰＦＣ＋＝８）を増分するようにＰＦＣをセットする。しかしながら、全ての段ＤＰはその後中断する。フェッチは、ＥＣＴＬがセットされた際にも再度イネーブルにする。しかしながら、ＥＣＴＬがセットされると、割込みは行われず、分析イベントは保留となる。これはプログラムアップロードに用いられる。サイクルごとに、ＰＤＡＴＡ＿Ｉを走査して、フェッチパケット成分を取り出すことが出来る。ＡＮＮＵＬビット及びＡＮＮＵＬ＿ＡＳＵビットの両方を０に走査して動作を中止する。
【０１０６】
図２８は、「パイプダウン」手順と称する、パイプラインを停止すると共に、経路内の種々のレジスタ成分を状態としてセーブする手順の停止のシーケンスを説明するためのタイミング図である。終了したＥ１（ａ〜ｄ）を有する実行パケットの命令は、終了に進行することが許容される。以下、経路停止を制御する際の動作ＸＤＳ５１におけるシーケンスの実行について説明する。このセーブ状態の方法において、終了したロードのデータソースの任意のユーザの変形は、再開に対して反映されない。停止を開始した後、図２５を参照して説明するように、以下のステップが実行される。
１．時間３５０のサイクル２：走査が終了し、かつ、全てのＣＰＵ領域をセーブする状態。ＥＰＤＮ＝１，ＥＰＵＰ＝０，ＥＣＴＬ＝０，ＥＵＰＬ＝０，ＡＮＮＵＬ＝０及びＡＮＮＵＬ＿ＡＳＵ＝０での走査。これは、新たなフェッチを停止して割込みをディスエーブルにし、Ｅ１を終了しない実行パケット送出を中止する。
２．１クロックサイクルに対してＣＮＴＬ３５１を適用。
３．時間３５２でのサイクル３。走査の終了及びＤＤＡＴＡ＿Ｉのセーブ。任意変形のない状態での走査。
４．１クロックサイクルに対してＣＮＴＬ３５３を適用。
５．時間３５４でのサイクル４。走査の終了及びＤＤＡＴＡ＿Ｉのセーブ。任意変形のない状態での走査。
６．１クロックサイクルに対してＣＮＴＬ３５５を適用。
７．時間３５６でのサイクル５。走査の終了及びＤＤＡＴＡ＿Ｉのセーブ。ＤＰフェーズにＮＯＰを充てんする状態で、ＥＰＤＮ＝１，ＥＰＵＰ＝０，ＥＣＴＬ＝１，ＥＵＰＬ＝０，ＡＮＮＵＬ＝０及びＡＮＮＵＬ＿ＡＳＵ＝０での走査。設定するＥＣＴＬをＳＵＳＰＥＮＤにセットして、オンチップ及びオフチップ分析をディスエーブルにする。
８．１クロックサイクルに対してＣＮＴＬ３５７を適用。
９．時間３５８でのサイクル６。走査なし。ＮＯＰが伝送路を搬送することが出来る。
１０．１クロックサイクルに対してＣＮＴＬ３５９を適用。
１１．時間３６０でのサイクル７。セーブすべき状態のない走査の終了。ＥＰＤＮ＝０，ＥＰＵＰ＝０，ＥＣＴＬ＝１，ＥＵＰＬ＝０，ＡＮＮＵＬ＝１及びＡＮＮＵＬ＿ＡＳＵ＝１での走査。ＥＰＤＮをクリアすることによって、ＤＰフェーズ（ＩＲ）の成分を、伝送路の残りに供給することが出来る。フェッチ及び割込みはＥＣＴＬによってディスエーブルされたままである。
【０１０７】
図３０は、既に説明したパイプダウン手順中セーブされた種々の状態の各々を回復することによって全伝送路状態を「パイプアップ」手順で回復する方法を示すタイミング図である。この図は、制御の際にＸＤＳによって挿入された全ての実行パケットが伝送路に流れると仮定し、伝送路の全てのフェーズにＮＯＰを含む。この状態は、命令レジスタにＮＯＰを充てんすると共に、伝送路の他の命令が終了を繰り返すことを許容することによって手動で達成される。再走査後、中止されたフェーズは、セーブされた状態から終了することを許容される。他の全ての状態は、以前のサイクルから継続する。サイクル２において、データメモリストローブがディスエーブルされるため、データメモリ動作は好適には再実行されない。Ｅ５の始端（Ｅ４の終端）でラッチされた入力ロードデータを、ＸＤＳによって走査する必要がある。したがって、好適にはパイプダウンの全シーケンス、エミュレーション及びパイプアップが、図１のデータ処理システムに余分なメモリ、すなわち、Ｉ／Ｏサイクルを必要としない。以下、伝送路再開の制御の際にＸＤＳが実行する動作のシーケンスについて説明する。
【０１０８】
１．時間３７０のサイクル０：フェッチパケットｈに対してフェッチしたフェッチパケットのアドレスに戻った走査。この情報は、エミュレーション停止中サイクル２の走査中に利用できる。ＥＰＤＮ＝０，ＥＰＵＰ＝０，ＥＣＴＬ＝０，ＥＵＰＬ＝１，ＡＮＮＵＬ＝１及びＡＮＮＵＬ＿ＡＳＵ＝１にセットする。これは、ディスエーブル割込みの間フェッチを再イネーブルにする。
２．１クロックサイクルに対するＣＮＴＬ３７１の適用。
３．時間３７２のサイクル１：フェッチパケットｉに対してフェッチしたフェッチパケットのアドレスに戻った走査。この情報は、エミュレーション停止中サイクル２の走査中に利用できる。
４．１クロックサイクルに対するＣＮＴＬ３７３の適用。
５．時間３７４のサイクル２：ディスエーブルされた（０にセットされた）ＤＢＳを有するサイクルからの全ＣＰＵ領域状態の回復。ＥＰＤＮ＝０，ＥＰＵＰ＝１，ＥＣＴＬ＝０，ＥＵＰＬ＝１，ＡＮＮＵＬ＝１及びＡＮＮＵＬ＿ＡＳＵ＝１にセットする。これは、ディスエーブル割込みの間フェッチを再イネーブルにする。
６．１クロックサイクルに対するＣＮＴＬ３７５の適用。
７．時間３７６のサイクル３：走査終了及び伝送路停止のサイクル３からのＤＤＡＴＡ＿Ｉに戻る走査。
８．１クロックサイクルに対するＣＮＴＬ３７７の適用。
９．時間３８７のサイクル４：走査終了及び伝送路停止のサイクル４からのＤＤＡＴＡ＿Ｉに戻る走査。
１０．１クロックサイクルに対するＣＮＴＬ３９８の適用。
１１．時間３８０のサイクル５：走査終了及び伝送路停止のサイクル５からのＤＤＡＴＡ＿Ｉに戻る走査。ＥＰＤＮ＝０，ＥＰＵＰ＝０，ＥＣＴＬ＝０，ＥＵＰＬ＝０，ＡＮＮＵＬ＝１及びＡＮＮＵＬ＿ＡＳＵ＝１にセットする。これは、割込み、分析及びフェッチを再度イネーブルにする。
ソフトウェアブレークポイント（ＳＷＢＰ）は、表１０に示したようにＳＷＢＰを表す“０００１”のコードを有するターゲット命令のクレッグ／ｚ領域を置換し、かつ、セーブすることによってセットされる。この領域は、伝送路のＤＣフェーズ中にデコードされる。“０００１”にデコードすると、ブレークポイント動作をトリガし、ＸＤＳ  ５１を求めて、既に説明したパイプダウン及びパイプアップ手順を実行することによってデバック又はエミュレーション機能を実行する。デバック又はエミュレーション動作を終了すると、ＸＤＳは、領域の関連のクレッグ領域（フィールド）を、その元の値にリターンすることによって、Ｅ１中パイプラインのＳＷＢＰ命令を置換する。これに加えて、ＳＷＢＰ＿ＤＥＣＳＲＬが、デコードされたＳＷＢＰによってセットされる。ＸＤＳは状態としてＳＷＢＰ＿ＤＥＣ（図２０）を使用する。伝送路のＳＷＢＰを適切なクレッグ領域に置換すると、ＸＤＳはＳＷＢＰ＿ＤＥＣ  ＳＲＬをクリアして、他のＳＷＢＰをデコードすることが出来る。本発明の他の態様によれば、デバッグ機能を、ソフトウェアブレークポイント命令に応答して実行し、通常の伝送路の動作を、ＳＷＢＰに変換される命令を再フェッチすることなく再開する。好適には、追加の記憶サイクルは、図１のデータ処理システムで実行されない。
【０１０９】
再度、図３０を参照する。ＣＰＵがエミュレーション停止シーケンスによって中止されると共に、ＸＤＳがデバッカによって表示すべき全ての必要な状態を取り出したと仮定する。ＸＤＳは再開シーケンスの最初の６ステップを実行した後エミュレーション停止シーケンスを再度行うことによってステップマイクロプロセッサ１を単一にすることが出来る。分析テストポートを発生させる分析イベントに対する単一ステッピングがＣＮＴＬ又はＦＵＮＣでロックする必要がある。同様に、検出すべき割込みに対して、メガモジュールテストポートは、ＣＮＴＬ又はＦＵＮＣでロックされる必要がある。検出すべき割込みに対し、換言すれば、メガモジュールの一部は実行し続ける必要がある。また、ＣＰＵは割込みサービスフェッチパケットへのステップを単一にしない。ＣＰＵを、割込みが行われる前に最小サイクル数で実行するように許容される必要がある。
イベントを、種々のテストポート３１０，３２０及び３３０の状態に応答して種々の理由に対して保留することが出来る。これら状態は、停止中分析イベントを保留する。
１．停止中、ＣＰＵテストポートのＰＡＵＳ／ＳＤＡＴ／ＳＣＴＬ状態は、ＳＵＳＰＥＮＤ信号をアクティブにし、将来の分析イベントをディスエーブルする。ＣＰＵテストポートがＣＮＴＬ又はＦＵＮＣにリターンすると、ＳＵＳＰＥＮＤ信号がイナクティブ状態に戻る。
２．これに加えて、分析イベントは、ＣＰＵテストポートがＦＵＮＣ状態にある際に停止になるのが防止される。
３．ＸＤＳは、走査を通じてＥＣＴＬビットをセットして、エミュレーション制御中に分析イベントをディスエーブルにすることが出来る。
停止は、伝送路のＩＤＬＥ又は多サイクルＮＯＰ命令によって悪影響を及ぼさない。伝送路の再開に応答して、伝送路のＩＤＬＥ又は多サイクルＮＯＰの以前の状態が回復される。
通常のデバック及びエミュレーション動作において、分析領域及びメガモジュール領域が停止されない。したがって、（ＣＰＵ＿ＤＯＮＥのような）ハンドシェーク信号を、テストポート３２０又は３３０を停止させるためにＭＴＡＰに対して設けない。ＭＴＡＰは、単にクロック切換えを実行するだけであり、適切なクロック境界上の状態を通じて移動する。ある理由に対してこれら領域を停止させる必要がある場合、これら領域を、ＣＰＵ領域が停止された後にのみ停止する必要がある。
【０１１０】
図３１Ａ，３１Ｂ，３２Ａ及び３２Ｂは、既に説明したようにエミュレーション及びデバッグを通じて用いる種々のレジスタを図示する。これらは分析制御レジスタ（ＡＣＲ）３９０、分析データレジスタ（ＡＤＲ）３９１、分析割込みリターンポインタ（ＡＰＲ）３９２及びデータストリームレジスタ（ＳＴＲＥＡＭ）３９３とを有する。これら種々のレジスタを以前のセクションで説明し、ここで更に詳細に説明する。図において、用語「ＭＶＣ読出し可能」及び「ＭＶＣ書込み可能」は、ＣＰＵ制御レジスタの特別のビットをＭＶＣ命令によって読出し可能であるか又は書込み可能であるかについて言及するものである。全ての保持された、すなわち、書込み専用ビットは“０”として読み出される。
図３１Ａは、エミュレーション及び分析用の制御及び状態ビットを有するＡＣＲ３９０を説明する。状態ビットは、停止又は分析割込みを発生させず、単に、イベントが保留されない間に発生したイベントを反映するのみである。これらが発生すると（イネーブルされた場合）、実際のイベントそれ自体は、停止をトリガし、又はＡＩＰをセットする中止割込みを示す。また、リセットは、ＣＰＵテストポートがＦＵＮＣ状態にある場合にＡＣＲを、そのリセット値に設定するのみである。例外は、常にＣＰＵテストポート状態に関係なくリセットされるＲＳＴＯＣＣである。表３６は、各ＡＣＲビット領域（フィールド）の機能を説明する。
【０１１１】
0003916745.tif 000066
0003916745.tif 000067
0003916745.tif 000068
0003916745.tif 000069
１６ＳＴＲＰ＿ＤＥＶＭ（＝０）を、エミュレーションの存在を表すためにＥＭＵ＿ＤＥＶＭ（＝１）の代わりに使用し、その結果、このビットを、ユーザ及びこれらの間の任意のテストモードによって通常の動作で評価することが出来る。
【０１１２】
0003916745.tif 000070
図３１Ｂは、分析データレジスタ（ＡＤＲ）３９１を説明する。ＡＤＲの最初から３０ビットを、伝送路フェーズ（パイプライン段）ＤＣのプログラムアドレスとの比較に用いて、プログラムアドレスブレークポイントを発生させる。このレジスタは、分析領域にあり、メッセージ通過に用いる。分析走査中のこのレジスタの読出しは、Ｏをリターンし、ＡＣＲのＭＳＧＥＲＲビットをセットする。分析走査中の書込みに影響を及ぼさず、ＭＳＧＥＲＲビットをセットする。他の任意の読出し又は書込みはＭＳＧＥＲＲビットをクリアする。
【０１１３】
図３２Ａは、分析割込みリターンポインタ（ＡＲＰ）３９２を説明し、これを、以前に分析割込みを参照して詳細に説明した。
メモリアクセスサポート
マイクロプロセッサ１のアーキテクチャは、全てのメモリロケーションがいずれかのプログラムメモリ内にあるか、又は、データメモリが（ＲＡＭ又はＦＬＡＳＨを用いる場合）書込み可能であると仮定する。マイクロプロセッサ１の設計は、この便宜にしたがって、ＸＤＳに基づくデータ及びプログラムアップロード及びダウンロード並びにＳＷＩのモニタ置換を許容する。これに加えて、個別のプログラムメモリ及びデータメモリは、同一アドレススペースを占有しない。キャッシュは、ＳＷＩ及びＳＷＢＰ置換に対して書込み可能である。
データダウンロード及びアップロード並びにプログラムダウンロードに対して、ＸＤＳは、エミュレーション停止シーケンスの後に次のようになる。
１．ＥＣＴＬセット。フェッチパケットをＰＤＡＴＡ＿Ｉ  １０ａに走査する（図１）。データアクセスに対して、これらは７シリアルロード又はストアからなる。プログラムダウンロードに対して、これらは、ＳＷＢＰに続く３ＭＶＣ／ＳＴＰ対からなる。適切なデータ及びアドレスを、レジスタファイルに走査する。
２．ＣＰＵの実行をフリーにする。最終的には、ＳＷＢＰは停止をトリガし、その後再走査する。
このようにして、ＸＤＳはデータの２２４ビット／走査（７ｘ３２ビット記憶）のダウンロード／アップロードし、又は、プログラムの９６ビット／走査（３ｘ３２ビット記憶）のダウンロードを行うことが出来る。本発明の態様によれば、デバックコード命令のこれらのシーケンスを、マルチワード命令レジスタにロードすると共に、プロセッサ１のデバック動作を行うために実行する。好適には、追加のメモリ動作が図１のデータ処理システムと共には生じない。
プログラムアップロードに対して、エミュレータは、以下のエミュレーション伝送路（パイプライン）停止シーケンスを実行する。
１．ＥＣＴＬ及びＥＵＰＬのセット。ＰＦＣ及びＰＡＤＤＲの値を走査。
２．ＨＡＬＴ／ＣＮＴＬを３回適用して、ＰＳ，ＰＷ及びＰＲフェーズを通じて移動させる。
３．アップロードされたプログラムに対してＰＤＡＴＡ＿Ｉを走査する。
４．その後、ＸＤＳは単一ＣＮＴＬ／ＨＡＬＴをサイクルごとに適用することが出来る。
したがって、エミュレータは２５６ビット／走査を実行することが出来る。
以前の手順が、データ処理システム環境を妨害することなく小データ量をアップロード又はダウンロードするのに有効である間に、要求される走査量が原因の顕著なオーバヘッド時間がある。「データストリーム」と称される手順は、全走査速度での以下のデータ転送を提供する。（ＸＤＳからの）プログラムメモリダウンロード、（ＸＤＳからの）データメモリダウンロード及び（ＸＤＳへの）データメモリアップロード。
【０１１４】
図３２Ｂは、データストリームをサポートするのに用いられるデータストリームレジスタ３９３を図示する。このＣＰＵ制御レジスタは、ＣＰＵレジスタファイルをＭＴＡＰ（ＳＴＲＭ＿Ｉ／Ｏ）からデータストリームバスに接続する。このレジスタを、書き込まれたものを読み返すような記憶に用いることが出来ない。データストリームプロセスを、表３８〜４２を参照して詳細に説明する。
フェッチを防止するために、ＸＤＳはＥＣＴＬビットをセットしてフェッチをディスエーブルにする。ＸＤＳは、適切なフェッチパケットをＰＤＡＴＡ＿Ｉにロードする。このフェッチパケットは、ＳＴＲＥＡＭ  ＣＰＵ制御レジスタを通じてアクセスされるようにデータストリームバス間（ＳＴＲＭ＿ＳＴとＳＴＲＭ＿ＬＤとの間）の必要なデータ移動を実行する。（３２番目のビットごとの）新たなデータワードの走査に応答して、ＣＰＵを１サイクルステップさせる。ＣＰＵ＿ＤＯＮＥがサイクルのつぎのステップの前で受信されない場合、ＭＴＡＰはこのエラー状態をラッチする。この場合、ＸＤＳは、ストリームプロセスの終了に応答して発生したストリームエラーを検出することが出来る。ＭＴＡＰ内のデータ移動及びエラー検出の管理の詳細を後に説明する。好適には、命令フェッチが禁止されているため、同一フェッチパケットをストリームプロセスの持続時間中に実行する。
表３８及び表３９は、データポート２及び１上のデータストリームデータダウンロードを制御するフェッチパケットをそれぞれ示す。両データポートに対する例を示す。その理由は、マイクロプロセッサ１０は物理的に切り離されたメモリスペースに対する二つのポート書込みを行うことが出来るためである。両ケースにおいて、オペランドとしてのＳＴＲＥＡＭレジスタを有するＭＶＣ命令を、ストリームデータのＢ及びＡレジスタファイルへの移動に用いる。データポート２に対して、ＸＤＳは、第１ＳＴＷに対する初期データ値を（Ｂ１の）レジスタファィルに走査する必要がある。データポート１ダウンロードに対して、ＳＴＲＥＡＭを最初にＢレジスタに移動し、その後Ａレジスタに移動させる必要がある。その理由は、ＭＶＣはＡレジスタを直接ロードすることが出来ないためである。この場合、ＸＤＳは、最初の二つの値（Ａ１及びＢ１）でレジスタファイルを走査する必要がある。好適には、マイクロプロセッサ１０は、表３８及び表３９のＭＶＣ及びＳＷＴのような種々の命令の組合せを並列処理で実行して、オーバヘッド時間を最小にすることが出来る。
【０１１５】
0003916745.tif 000071
【０１１６】
表４０及び表４１は、データポート２及び１上のデータストリームアップロードを制御するフェッチパケットをそれぞれ示す。両データポートに対する例を図示する。その理由は、マイクロプロセッサ１は、物理的に切り離したメモリスペースに対する二つのポート書込みを行うことが出来る。両ケースにおいて、オペランドとしてＳＴＲＥＡＭレジスタを有するＭＶＣ命令を、ストリームデータのＢ及びＡレジスタファイルへの移動に用いる。また、ＸＤＳはＰＤＡＴＡ＿ＩをＮＯＰに充てんした後に終了するために最終ロードを手動によるクロックすることを許容した後、（Ｂ１からの）レジスタファイルから最終ＬＤＷからの最終データ値を走査する必要がある。
0003916745.tif 000072
【０１１７】
表４２は、データストリームプログラムダウンロードを制御するフェッチパケットを示す。データダウンロードのように、ＸＤＳは、記憶すべの最初の値を（Ｂ０の）レジスタファイルにロードする必要がある。しかしながら、プログラムアクセスに対するデータストリームと相違し、プログラムフェッチ回路１０ａに配置されたプログラム−データ出力レジスタ（ＰＤＡＴＡ＿Ｏ）である記憶すべきレジスタに、ＳＴＲＥＡＭを直接移動させる命令を利用できない。したがって、ＳＴＲＭ＿ＳＥＬ信号を、サイクルごとに（ＳＴＲＭ  Ｉ／Ｏバスを通じて）ＰＤＡＴＡ＿ＯをＳＴＲＥＡＭの値に更新するために用いる必要がある。
0003916745.tif 000073
【０１１８】
キャッシュサポート
以下のことを許容する制御状態レジスタ（ＣＳＲ）のデータキャッシュ及びプログラムキャッシュに対する相互に独立した制御がある。
１．キャッシュフリーズ：キャッシュ値を読み出す。読出しはキャッシュを更新しない。
２．キャッシュフラッシュ：全てのキャッシュデータは無効にされる。更新は発生しない。
３．キャッシュバイパス：値がメモリから読み出される。読出しはキャッシュを更新しない。
以下のルールを、キャッシュに対するメモリアクセスのＸＤＳ制御に適用する。
１．データ又はプログラムＣＯＦＦダウンロード上で、キャッシュを、フラッシュし、以前の制御状態を回復する。
２．データ又はプログラムＣＯＦＦアップロードに対して、キャッシュをフリーズし、かつ、以前の制御状態に戻す。
３．ＣＰＵメモリの観点からのデータ又はプログラムメモリ読出しに対して、キャッシュをフリーズし、かつ、以前の制御状態に戻す。
４．物理的なメモリの観点からのデータ又はプログラムメモリ読出しに対して、キャッシュをバイパスし、かつ、以前の制御状態に戻す。
５．データ書込みに対して、キャッシュ制御ビットを変化させない。
６．プログラム書込みに対して、キャッシュをフラッシュし、その後以前の制御状態に戻す。
発展ツールノート
ＸＤＳ及びシミュレータにおいて、デバッグに対するプログラマのモデルは次の通りである。
１．全ての情報を、（クロック間に基づくのとは逆に）サイクル間に基づいて表示する。したがって、メモリ停止はユーザで可視できない。
２．デバッガは、ディスアッセンブリで実行すべき次の実行パケットを強調する。
３．最後のサイクルの終了によって書き込まれた全てのレジスタの結果を表示する。
Ａ）以前のサイクルにおけるＥ１（単一サイクル整数命令、アドレス変更）の実行パケットの結果。
Ｂ）同様な、２サイクル前からのＥ２（整数の倍数）の命令の結果。
Ｃ）４サイクル前のＥ４（浮動小数点命令）の命令の結果。
Ｄ）５サイクル前からのＥ５（ロード）の命令の結果。
モニタに基づくデバッガにおいて、プログラマは単一割当てを用いる必要がある。また、全ての命令を順に実行するために明らかにする必要がある。
【０１１９】
例えば、図３３において、実行パケット（ｆ）を強調する場合、２重線４００上又はその前に書き込まれた全てのＣＰＵ状態が表示される。したがって、例えば、実行パケット（ｅ）が乗算を実行すると、その結果が表示されないことになる。むしろ、乗算の宛先レジスタは、サイクル１１からの以前の内容を有する。
ＣＰＵ状態と異なり、記憶状態は、記憶の終了を向上させることを許容する。図３３において、実行パケットｃ−ｅの記憶が終了する。したがって、（全ての走査が終了した後に更新される）記憶表示は、ＣＰＵの前の３サイクルとなる。これが４遅延スロットを有するロードに一致しないような場合にも、プログラマは、ロード値がロード命令を通じてステップする直前の表示に表れた値であると認識する必要がある。全てのアクセスがＣＰＵ境界に順に表れるので、記憶表示は自己矛盾しない。
リアルタイムデバッグ：モニタモード：リアルタイムデバッグは、マイクロプロセッサ１がユーザコードを実行する間ユーザに対して可視できるようにする。変数を表示すると共に、アッセンブリ及びハイレベル言語（ＨＬＬ）の観点から両者を変更することが出来る。このリアルタイムデバッグそれ自体は、エミュレーション論理に依存しない。通常、デバックモニタは、バックグランドタスク又は、より高いプライオリティの割込みによって駆動されるリアルタイムタスクの存在で実行する非常に低いレベルの割込みサービスルーチンである。モニタは、デバッガが存在するホストと通信する。最低レベルのデバッガはメモリを要求することができ、レジスタは読出し及び修正動作を行う。通信は、シリアルポートのような周辺装置、共有メモリ、又は（ＡＤＲのような）専用のメッセージ通過ハードウェアを通じて発生することが出来る。モニタコードの発展を考察すると、
コードサイズ：モニタコードサイズを最小にする必要がある。
パフォーマンス：モニタコードは、十分なユーザアクセス可能性を提供するように十分高速に実行する必要がある。
単一ステッピング：デバッガでは２タイプのステッピングを実行する。
１．ハイレベル言語のステッピングステートメント。
２．サイクル間に基づくステッピング実行パケット。
伝送路の可視性がＣＰＵのプログラミングに重要であるので、デバッガは命令ステッピング（命令のＥ１からＥ５までの全ての方法の命令のステッピング）をサポートする必要がない。代わりに、ステップ機構によって、全ての状態が単一伝送路フェーズを継続できるのみである。
エミュレーション停止の後、実行パケットステッピングは、一部再開（図３０）に続く停止伝送路走査シーケンス（図２８）によって実行される。特に、再開は、１サイクルを継続するように許容される。その後、エミュレーション停止シーケンスはそのまま全部が再度発生する。
【０１２０】
一般的に、実行パケット又は実行パケットのグループは、ハイレベル言語（ＨＬＬ）ステートメントでは１対１に基づいて一致しない。以下のアプローチが、ＨＬＬステートメント間で可視性を提供するために利用できる。
１）ＨＬＬコンパイラは、順番に終了する意外な結果（ｓｉｄｅ−ｅｆｆｅｃｔｓ）を発生させるコードを発生させることが出来る。しかしながら、これは、高性能コードを達成することを思い切って禁止する。また、この制限は、順番通りでない実行が許容されるときにのみ発生する問題がある。
２）ＸＤＳは、複数の停止を実行することが出来ると共に、特別なＨＬＬステートメントの結果を隔離することが出来るように走査する。オブジェクトのデバッグ情報を嵌め込む新たな方法を発展させて、この方法を容易にする必要がある。それに加えて、（アッセンブリ及びＨＬＬの両方の）混合モードディスプレイにおいて、どのアッセンブリ命令がディスプレイに見えるような伝送路のどのフェーズを終了するかを示す方法を発展させる必要がある。この方法の不都合は、ユーザが新たな記憶位置又は表示用の記号値を要求することが出来ないおそれである。このような情報は既に消失している。その理由は、その値が有効であるときを超えて一部の処理を実行した場合があるためである。両解決は、この章の現在のエミュレーションの記載を用いると実現可能である。
プログラムメモリのＳＷＩ命令の適切な命令へのソフトウェア置換を、ユーザのモニタプログラムによって行う。割込みがイネーブルされると共に、ＳＷＩが、割込みを中止する最高のプライオリティである場合、これはＳＷＩがＤＣにあるときに行われる。より高いプライオリティの割込みがある場合、ＳＷＩは、割込みからのリターンに応答して再度フェッチされる。したがって、再度出会うことになる。ＳＷＩ−認識は、この認識が取り出された分岐の遅延スロットに存在することによって、すなわち、ＡＩＮＴがイネーブルされない場合に延期される。
メガモジュールテストアクセスポート（ＭＴＡＰ）
【０１２１】
ここでＭＴＰＡが詳細に説明される。本発明の態様は、ここに引用されるＩＥＥＥ１１４９．１−１９９０標準テストアクセスポートおよび境界スキャンのアーキテクチャの改善に関する。ここで使用されるＩＥＥＥ１１４９．１に関する用語と概念はこのＩＥＥＥ規格に充分に説明されている。同様に、本発明の態様は、米国特許第４，８６０，２９０号で開示され、ここに引用されるＴｅｘａｓＩｎｓｔｒｕｍｅｎｔｓのモジュラーポートスキャンデザイン（ＭＰＳＤ）の構造の改善に関する。詳細には、すべての「重要な」レジスタへのアクセスを提供する各モジュールに対応するシリアルスキャンパス上のビーズの列のようにマイクロプロセッサ１を通じて分配されるシフトレジスタラッチ（ＳＲＬ）の動作が引用される関連米国特許第４，８６０，２９０号で説明されている。
再び図１５を参照すると、メガモジュールテストアクセスポート（ＭＴＡＰ）３０５がＩＥＥＥ１１４９．１規格テストアクセスポートの機能の部分集合をサポートする。メガモジュール３００のＭＴＡＰはマイクロプロセッサ１のピンを直接ドライブしないので、境界スキャンをサポートする必要はない。ＭＴＡＰ３０５は１１４９．１対応ＪＴＡＧ状態マシンと、遠隔ホスト５１のスキャン制御装置とメガモジュール領域テストポート（ＤＴＰ）３１０、３２０および３３０との間の通信を提供する。ＪＴＡＧインターフェースに加えて、ＭＴＡＰ３０５は、前節で論じたように、テストサポート、ＤＴＰの自動実行制御、性能上の大きな利点を提供するデータ・ストリーム制御機構、マイクロプロセッサエミュレーションのサポートおよび性能の解析を提供する。ＭＴＡＰ３０５のテスト機能セットはプロダクション自動テストパターン発生（ＡＴＰＧ）パターンの適用をサポートする。機能テストパターンはエミュレーション能力を使用してロード、実行およびデバッグできる。
【０１２２】
図３４はメガモジュール３００からマイクロプロセッサ１のピン４１０〜４１６への接続を示す構成図である。また図１５を参照すると、前に論じられここで要約されたように、メガモジュール３００のアーキテクチャはＭＴＡＰ３０５とＣＰＵコア１０、ＣＰＵ解析領域３２１、メガモジュール３３１（ＣＰＵコア以外のすべてのメガモジュール機能（特徴）を含む）および特殊エミュレーション（ＳＥ）４００という４つの領域との間で分割されている。ＳＥモジュール４００はメガモジュール３００の外部にある。各領域は領域テストポート（ＤＴＰ）を通じて実行制御とドメインスキャンパスへのアクセスとを提供する。ＣＰＵのＤＴＰ３１０はプログラムの実行（開始、停止、ソフトウェアのブレークポイント）とプログラマモデル（レジスタおよびメモリ）への可視性を制御する停止モードと実時間エミュレーション機能とを提供する。ＣＰＵ解析領域３２１は、マイクロプロセッサ１の場合ハードウェアのブレークポイントと実時間エミュレーションスキャン通信サポートとを含むコア解析機能を提供する。ＳＥ解析領域４００は高度エミュレーション解析機能を提供する。この機能にはハードウェアブレークポイント用マグニチュードコンパレータ、プログラムバスアドレスブレークポイント、データバスアドレスとデータのブレークポイント、イベントカウンタ、プログラムの不連続性のトレースおよび解析状態シーケンサが含まれる。メガモジュール領域３３１は、テスト回路５２のテストＰＳＡレジスタのような、ＣＰＵの外部にあるメガモジュール内の機能の実行制御とスキャンアクセスのみを提供する。
実時間エミュレーションサポートは、プロセッサが割込みおよび多重タスクを引き続きサービスしている間プログラマモデルの実行制御と可視性を提供する。実時間サポートはまたアプリケーションによるデバッガを通じてもアクセス可能であり、遠隔テスト／エミュレーション制御装置に接続しない組込型解析機能の使用を含む。
【０１２３】
さらに図３４を参照すると、メガモジュールテストアクセスポート（ＭＴＡＰ）３０５は、標準ＪＴＡＧインターフェースおよびＪＴＡＧ状態マシン機能セットをサポートするという点でＩＥＥＥ１１４９．１対応である。ＭＴＡＰ３０５は、境界スキャンまたはＢＹＰＡＳＳ以外の公衆ＳＴＡＧコマンドをサポートしないという点で１１４９．１対応でない。マイクロプロセッサ１に対するＪＴＡＧによるエミュレーションとテストの要求は、アプリケーション特定ＪＴＡＧコマンドおよびデータパス拡張を考慮するＩＥＥＥ１１４９．１中の規定を利用することによって提供される。必要なＪＴＡＧ機能を「公衆機能」と呼び、拡張を「専用機能」と呼ぶ。
メガモジュール（ＭＴＡＰ）３００のエミュレーションおよびテスト機能のサポートには、２つの追加双方向エミュレーション割込みピン（ＥＭＵ１  ４１５、ＥＭＵ０  ４１６）によって補足されるマイクロプロセッサ１の標準ＪＴＡＧ５ピンインターフェース（ＴＭＳ４１０、ＴＲＳＴ４１１、ＴＤＩ４１２、ＴＤＯ４１３、ＴＣＬＫ４１４）への接続が必要である。次の節で論じられる多重ＪＴＡＧ／ＭＴＡＰコンフィギュレーションが存在する。ＥＭＵ０およびＥＭＵ１ピンはマルチプロセッサ停止イベントおよび性能解析機能を容易にするよう構成される。
ＥＭＵ０／１ピンは機能ピンであり、すべてのメガモジュール境界セル規則に準拠する。
以下の構成体が、装置のＪＴＡＧピン、ＭＴＡＰ３０５および多重領域テストポートの間の通信と制御をサポートするためにＪＴＡＧフレームワーク内に追加されている。
データパス拡張−拡張専用ＪＴＡＧ  ＩＲコマンドで、領域状態、ＥＭＵ１およびＥＭＵ０コンフィギュレーション、エミュレーション制御、領域スキャンパス選択および領域ロック情報のＭＴＡＰデータスキャン選択を提供する。
コマンド発生−拡張専用ＪＴＡＧ  ＩＲコマンドでＪＴＡＧ  ＩＤＬＥ状態を通じて起動されるテストおよびエミュレーションコマンドを提供する。
命令レジスタキャプチャ−雑エミュレーション状態、領域状態およびテスト情報のＪＴＡＧ命令レジスタキャプチャで、エミュレーションソフトウェアの動作とＭＴＡＰのテスト容易性を促進するために追加された。
ＭＴＡＰ３０５のＪＴＡＧ信号は以下である。
ＴＭＳ：テストモード選択。この信号はＪＴＡＧ状態ダイアグラムの変化を制御する。トラバースされるさまざまな状態によって命令およびデータパスがスキャンされ、ＪＴＡＧ命令が実行される。
ＴＣＫ：テストクロック。この信号はＪＴＡＧ論理および状態マシンにクロックを提供する。ＪＴＡＧインターフェースはメガモジュール外部で供給される周波数でクロックされ、メガモジュールを異なったクロック速度用に設計された他のＪＴＡＧ装置、制御装置およびテスト機器と互換性のあるものにする。本明細書ではこのクロック入力をＴＣＬＫと呼ぶ。正規システムクロック入力をＵＣＬＫ（機能クロック）と呼ぶ。
ＴＤＩ：テストデータ入力。この信号はメガモジュールのすべてのＪＴＡＧ命令とデータスキャンに関する入力データを提供する。
ＴＤＯ：テストデータ出力。この信号はメガモジュールのすべてのＪＴＡＧ命令とデータスキャンに関する出力データを提供する。
ＴＲＳＴ：テストリセット。これはＪＴＡＧモジュールをリセットする信号で、電源投入時のテストアクセスポート（ＴＡＰ）の急速な初期化を保証するために提供される。
【０１２４】
これらの信号間の関係は、ここに引用されたＩＥＥＥ１１４９．１仕様書で定義されている。
ＭＴＡＰ３０５のＥＭＵ信号は以下である。
ＥＭＵＩ［１：０］：ＥＭＵ入力。解析領域によってＥＭＵＩｎの論理ゼロの検出がイベントとして使用できるようになる。ＥＭＵＩは非同期で任意のパルス幅であるので、単一クロック同期イベントがイベント処理のためにＣＰＵ領域（ＥＭＵＩ信号）に確実に送信されるようにするために、ＥＭＵＩはパルスキャッチャおよび同期装置に提示されなければならない。パルスキャッチャは同期イベントパルスによって自己クリーニングされる。
ＥＭＵＯ［１：０］：ＥＭＵ出力。この信号は、（エミュレーションおよびテストモードでは）ＥＣＲのＥＭＵＣビットを通じて、また（ストラップモードでは）ＡＣＲのＣＰＵ＿ＥＭＵＣビットを通じて選択されたイベントを出力するために利用される。ＭＴＡＰ３０５からのＥＭＵＯ［１：０］信号は少なくとも５Ｎ秒間アクティブでなければならない（テストバス制御装置の要求）。
ＥＭＵＯＥＮ［１：０］：ＥＭＵ出力イネーブル。この信号はＥＭＵピンパッドをドライブするために使用されるＥＭＵＯ信号の外部トライステートバッファをイネーブルにする。共用または専用のこの信号の動作モードは（エミュレーションおよびテストモードでは）ＥＣＲのＥＭＵＣビットを通じて、また（ストラップモードでは）ＡＣＲのＣＰＵ＿ＥＭＵＣビットを通じて選択される。共用モードではこの信号はイベントがアクティブのときだけイネーブルになり、イベントがイネーブルでないとき出力バッファはトライステートモードのままである。共用モードで無効のときＥＭＵピンパッドの状態は外部イベントからＥＭＵＩドライバにドライブされる。専用モードでは、この信号は常にアクティブなので、ＥＭＵピンパッドをＥＭＵＯ信号レベルにする。メガモジュールの外部でこの信号を使用する例が後で論じられる。
ＪＴＡＧ演算コードユーティライゼーション：ＪＴＡＧ演算コード空間０ｘ００−０ｘ１ＦがＪＴＡＧ特定の使用のために予約される。これらの演算コードに関連するスキャンパスおよびコマンドはＩＥＥＥ１１４９．１仕様書に定義されている。この演算コード空間は現時点では部分的にのみ定義され、このグループの定義されない演算コードはすべて将来の使用のために予約される。ここでこのグループの任意の演算コードを公衆演算コードと呼ぶ。
【０１２５】
本発明の一態様によれば、０ｘ２０−０ｘ２Ｆからの定義されないＪＴＡＧ演算コード空間の一部がエミュレーション特定使用のために予約される。これらの演算コードは公衆演算コードと呼ばれる。このグループの中の定義されない演算コードはすべて将来のエミュレーション使用のために予約される。
０ｘ２０−０ｘ２Ｆの中の演算コードはデータスキャンパスを選択するためにエミュレーションおよびテストコマンドとして定義される。ＪＴＡＧ状態マシンがＪＴＡＧ  ＳＨＩＦＴ＿ＤＲ状態（選択されたデータレジスタをシフト）にあるとき、演算コードはデータスキャンパス選択として利用される。ＪＴＡＧ状態マシンがＪＴＡＧ  ＩＤＬＥ状態にあるときは同じ演算コードがコマンドとして利用される。ＪＴＡＧ状態をＤＴＰ制御状態にマップするテストモードでは、ＪＴＡＧ演算コードはまた制御コードをＤＴＰに直接適用するためにも利用される。演算コードのこうした３つの使用法の各々は互いに分断されている。この文書はそれらを独立して論じる。
【０１２６】
図３５はＭＴＡＰスキャンパス編成の構成図である。エミュレーション／テストスキャンパスがＪＴＡＧ仕様によって要求されるＩＲおよびバイパスパスに加えて提供される。ＭＴＡＰ３０５は（ＭＴＡＰ３０５をＪＴＡＧ非対応にする）境界スキャンパスをサポートしないことに注意されたい。スキャンパスを選択するＳＨＩＦＴ−ＩＲスキャンに続いて、エミュレーション／テストパスはＪＴＡＧ状態マシンをＳＨＩＦＴ−ＤＡ状態にトラバースすることによってスキャンされる。１つより多い演算コードが同じ公衆または専用スキャンパスをアドレスできる。
公衆または専用スキャンパスが表４３で簡単に説明される。
0003916745.tif 000074
0003916745.tif 000075
【０１２７】
ＪＴＡＧデータパス制御
さらに図３５を参照すると、スキャンデータはＪＴＡＧ  ＳＨＩＦＴ＿ＤＲ状態の間選択されたデータシフトレジスタを通じてシフトされる。データシフトレジスタはＭＳＢをＬＳＢにシフトし、シフトレジスタのＬＳＢは第１ＳＨＩＦＴ＿ＤＲ状態の間ＴＤＯに出力される。ＴＤＩからシフトレジスタにシフトされたデータは、転送されたデータビットの静的数値が必要な場合シフトシーケンスの終了時に並列保持レジスタに転送される。並列保持レジスタは影レジスタまたはその保持レジスタ長の影ビットと呼ばれる。ＭＴＡＰ３０５を実現するにはプロセッサエミュレーション機能とのインターフェースを有する影ビットとシフトレジスタビットのミックスを使用する。シフトレジスタビットが直接使用されるとき、データシフトレジスタのシフトはビットの最終使用に関係なくなされる。
ＪＴＡＧ状態のデータレジスタグループは、ＳＥＬＥＣＴ＿ＤＲ状態がＣＡＰＴＵＲＥ＿ＤＲ状態に移行するとき入力され、ＵＰＤＡＴＥ＿ＤＲ状態の実行が完了するとき終了する。この状態のグループは、スキャンデータレジスタ状態グループがトラバースされる間、ＪＴＡＧ命令レジスタ中に保持される演算コードによって選択される特定データパスに割り当てられる。この状態グループにはパス特有の重要性を有する３つの状態が含まれる。ＣＡＰＴＵＲＥ＿ＤＲ、ＳＨＩＦＴ＿ＤＲおよびＵＰＤＡＴＥ＿ＤＲというこれらの状態はＪＴＡＧ命令レジスタに含まれる演算コードと結合されてスキャンデータを管理するパス特定ディレクティブを与える。
ＣＡＰＴＵＲＥ＿ＤＲ状態は、シフトシーケンスの開始時に情報をデータシフトレジスタに選択的にロードする。この情報は、パス特定データシフトレジスタがＳＨＩＦＴ＿ＤＲ状態によって進められる際チップのＴＤＯピンで見える。ＵＰＤＡＴＥ＿ＤＲ状態は、データシフトレジスタにシフトされたデータをＪＴＡＧ  ＩＲ演算コードによって示された適当な並列データレジスタに転送する。
大部分のＭＴＡＰ専用データパスはすべてのデータパスビット位置についてＣＡＰＴＵＲＥ＿ＤＲ機能の実現を必要としない。データパス全体がＣＡＰＴＵＲＥ＿ＤＲ機能の実現を必要としない場合もある。ＤＴＰデータスキャンパスの場合特にそうである。専用データパスにはデータシフトレジスタを共有するものもある。この実現の帰結はデータが修飾されたＵＰＤＡＴＥ＿ＤＲ信号によって異なった影レジスタまたはビットに選択的に転送される単一のデータシフトレジスタである。このアプローチはＤＴＰ内でＤＴＰ＿ＳＣＴＬおよびＤＴＰ＿ＳＤＡＴスキャンパスの両方をサポートする単一の物理シフトレジスタを利用するために利用される。この共有アプローチによって、パスのＣＡＰＴＵＲＥ＿ＤＲ状態機能のマージも可能になる。上記で論じた物理実現オプションはすべて、パスを制御するソフトウェアから見たときデータパスの設定または動作を変更するものではない。
ＪＴＡＧ  ＴＡＰがＳＥＬＥＣＴ＿ＤＲ状態を通じて遷移するとき選択されたデータスキャンパスとキャプチャおよびアップデートされたレジスタはＪＴＡＧＩＲ中のコマンドに依存する。データをＤＴＰに向けるＤＴＰデータスキャンコマンド以外のＩＲコマンドは、アップデートと、場合によってはキャプチャ信号を必要とする（ＪＴＡＧ  ＴＡＰ  ＣＡＰＴＵＲＥ＿ＤＲおよびＵＰＤＡＴＥ＿ＤＲ状態に基づく）。ＤＴＰ＿ＳＤＡＴおよびＤＴＰ  ＳＣＴＬスキャンパスはＤＴＰを通じて共通データシフトレジスタを共有する。ＤＴＰ  ＳＣＴＬパスの場合ＣＡＰＴＵＲＥ＿ＤＲ状態と結合したパス選択信号によって共通シフトレジスタがＭＳＥＮＢ影ビットからロードされる。スキャンの完了後（ＳＨＩＦＴ−ＤＲ）、ＵＰＤＡＴＥ＿ＤＲ状態によって共通シフトレジスタ中の新しい値が固有のＭＳＥＮＢ影レジスタに転送される。ＤＴＰ＿ＳＤＡＴパスの場合、ＤＴＰの共通シフトレジスタがバイパスビットとして利用される。他のすべてのスキャンパスは直接スキャンされる（ＤＴＰを通じてスキャンされない）。表４４は各スキャンパスへの要求の詳細を示す。
【０１２８】
0003916745.tif 000076
選択信号ＳＣＴＬ＿ＳＥＬ、ＳＥＣＲ＿ＳＥＬ、ＳＣＴＲ＿ＳＥＬおよびＳＴＲＭ＿ＳＥＬは相互に排他的で、ＵＰＤＡＴＥ＿ＩＲ  ＴＡＰ状態によってイナクティブ状態にドライブされる。
さらに図３５を参照すると、ＭＴＡＰ３０５のＪＴＡＧ命令レジスタ（ＩＲ）４５０は長さ８ビットですべてのビットが命令デコードで使用される。デコードされた命令はスキャンパスを選択またはコマンドを実行するために利用される。ＩＲへのアクセスはＪＴＡＧ状態のグループによって提供される。ＳＥＬＥＣＴ＿ＩＲ状態がＣＡＰＴＵＲＥ＿ＩＲに遷移するときこれらの状態に入り、ＵＰＤＡＴＥ＿ＩＲ状態を出るときこれらの状態から出る。ＪＴＡＧ  ＴＡＰ状態マシンがＳＥＬＥＣＴ＿ＩＲ状態を通じて遷移するとき、ＩＲレジスタはＪＴＡＧデータスキャンパスに接続される。ＣＡＰＴＵＲＥ＿ＩＲ状態はシフト・シーケンスの開始時に情報を命令シフトレジスタにロードする。キャプチャされたデータはエミュレーション制御レジスタ（ＥＣＲ）中の状態選択（ＳＴＳＬ）ビットに依存する（図３８参照）。この情報は、命令シフトレジスタがＳＨＩＦＴ＿ＩＲ状態を通じて進む際チップのＴＤＯピンで見れる。ＳＨＩＦＴ＿ＩＲ状態に入ると、ＤＰＣ（データパス制御装置）はスキャンパスがすべてのＴＣＬＫにシフトすることを可能にする。命令シフトレジスタはＭＳＢからＬＳＢにシフトされ、ＬＳＢキャプチャ情報レジスタは第１ＳＨＩＦＴ＿ＩＲ状態でＴＤＯに出力される。この機構はエミュレーションおよびテストステータスをロードおよびエクスポートするために使用される。ＵＰＤＡＴＥ＿ＩＲ状態はチップにシフトされたデータ（命令シフトレジスタのコンテント）をＩＲの影ビットに転送するために使用される。
【０１２９】
図３６Ａはストラップステータスが選択されたＪＴＡＧ  ＩＲを示す。ストラップステータスは、ＴＲＳＴ−またはＴＬＲ  ＪＴＡＧ状態によって選択されるデフォールトステータス状態である。２つのＬＳＢにはＩＥＥＥ１１４９．１仕様の６．１．１節による固定パターン（０、１）がロードされる。この固定パターンはストラップモード中に正しいパターンにされるＭＴＡＰ状態フラグから得られる。
図３６Ｂは停止ステータスが選択されたＪＴＡＧ  ＩＲを示す。ここで示されるステータスビットは一般に停止モードエミュレーションの間利用される。ＡＢＰ＿ＤＥＴおよびＳＷＢＰ＿ＤＥＣ（ＣＰＵ領域）以外のすべてのステータスビットはＭＴＡＰにソースを有する。ＭＴＡＰ３０５ステータスビットは表４５で定義される。停止モードエミュレーションステータスビットは表６８で定義される。
図３６Ｃは実時間ステータスが選択されたＪＴＡＧ  ＩＲを示す。ここで示されるステータスビットは一般に実時間モードエミュレーションの間利用される。ＭＳＧＦＬＧおよびＭＳＧＳＷ（ＣＰＵ領域）以外のすべてのステータスビットはＭＴＡＰ３０５にソースを有する。ＭＴＡＰ３０５ステータスビットは表４４で定義される。実時間モードＣＰＵ領域エミュレーションステータスビットは表６９で定義される。
図３６Ｄはエミュレーションエラーステータスが選択されたＪＴＡＧ  ＩＲを示す。ここで示されるステータスビットは一般に停止および実時間両方のモードに関してエミュレーションエラー処理の間利用される。ＭＩＮＴ＿ＥＮおよびＡＩＮＴ＿ＥＮ（ＣＰＵ領域）以外のすべてのステータスビットはＭＴＡＰ３０５にソースを有する。ＭＴＡＰ３０５ステータスビットが表４４に定義される。ＭＩＮＴ＿ＥＮおよびＡＩＮＴ＿ＥＮＣＰＵ領域エミュレーションエラーステータスビットは表６９に定義される。
表４５はＭＴＡＰ３０５モジュール内で発生するステータスビットを定義する。ＭＴＡＰ３０５以外にソースを有するステータスビットの定義については表６８〜７１を参照されたい。
【０１３０】
0003916745.tif 000077
0003916745.tif 000078
0003916745.tif 000079
0003916745.tif 000080
【０１３１】
表４５はＭＴＡＰ３０５によってサポートされるＪＴＡＧ命令の組み合わせを定義する。ＭＴＡＰ３０５内のＪＴＡＧ命令は、ＩＥＥＥ１１４９．１仕様によって要求される標準ＪＴＡＧ命令（公衆命令）とエミュレーションおよびテストのために追加された専用命令とに分けられる。専用ＪＴＡＧ演算コードは次の３つの基本的機能を有する。
１）ＣＡＰＴＵＲＥ＿ＤＲおよびＵＰＤＡＴＥ＿ＤＲ  ＪＴＡＧ状態と組み合わせて使用されるＳＨＩＦＴ＿ＤＲ  ＪＴＡＧ状態と制御論理のためのスキャンパスの選択。
２）専用演算コードがＪＴＡＧ  ＩＲにあり、ＪＴＡＧ状態マシンがＪＴＡＧＩＤＬＥ状態に遷移するとき発生する専用コマンドの処置の決定。
３）装置モードがテストのときＪＴＡＧ状態をＭＰＳＤコードに直接マップすることによる演算コードによるＡＴＰＧテストのサポート。
専用コマンドはＪＴＡＧ環境でＵＰＤＡＴＥ＿ＩＲまたはＵＰＤＡＴＥ＿ＤＲからＪＴＡＧ  ＩＤＬＥ状態に入ることによって開始される動作である。コマンドの開始は機能クロック（ＵＣＬＫ）に同期し、ＭＴＡＰ３０５およびＤＴＰの機能論理への１機能クロック幅コマンドに帰結する。専用コマンドが開始されるとコマンドが発行されるまでＪＴＡＧ  ＩＲの次のアップデートは禁止される。専用コマンドの完了はＪＴＡＧ  ＣＡＰＴＵＲＥ＿ＩＲ状態のＩＲＢＵＳＹ（命令レジスタ使用中フラグ）をキャプチャすることによって決定される。
表４６で説明されるＪＴＡＧ命令はＭＴＡＰ３０５によってサポートされる。それらは公衆および専用グループに分けられる。必要な演算コード（公衆）は議論の中で注記される。必要なものとして示されない演算コードはすべて専用演算コードである。専用グループの説明には、この演算コードで開始されるコマンドのみ次回説明に加えて演算コードによって選択されるデータレジスタが含まれる。演算コードのテストモード使用は、詳細には表６３および表６５に関して後で論じられる。
【０１３２】
0003916745.tif 000081
0003916745.tif 000082
0003916745.tif 000083
【０１３３】
再び図３５を参照すると、バイパスパス４５１は、ＪＴＡＧ命令レジスタを通じて他のデータパスが特に選択されないとき選択される１ビットデータパスである。バイパスビットはＣＡＰＴＵＲＥ＿ＤＲ状態で常に論理１をキャプチャする。
ＪＴＡＧのＭＰＳＤ  ＤＴＰに対するＭＴＡＰサポート
図３７は、ＪＴＡＧのＭＰＳＤへのインターフェースを有するＭＴＡＰ３０５の構成図である。ＭＴＡＰ３０５は、領域テストポート（ＤＴＰ）への外部アクセスとその制御を提供する。ＭＴＡＰ３０５はＪＴＡＧとＭＰＳＤスキャンテクノロジとの間のインターフェースとして利用される。ＭＴＡＰは境界スキャン制御での使用に加えて通信媒体としてＪＴＡＧプロトコルを使用する。ＭＴＡＰ３０５によってテストおよびエミュレーションシステム資源へのアクセスが可能になる。ＭＴＡＰ３０５ブロックは、テストのサポート、スキャンのサポートおよび実行サポートといった機能を行う。
テストのサポートによって、ＪＴＡＧ  ＴＡＰ状態からＤＴＰ  ＭＰＳＤコードへの直接変換とＴＣＬＫのＵＣＬＫによる置換を通じてＡＴＰＧテストパターンのオンボードアプリケーションが可能になる。直接ＭＰＳＤモードを通じたＡＴＰＧテストパターンのチップテスターアプリケーションもサポートされる。スキャンサポートには、テストクロックがスキャンモードで供給されることを保証する各領域にソースを有するクロックの切換とアプリケーションの管理およびＪＴＡＧシフトデータ状態（ＳＨＩＦＴ＿ＤＲ）からのＤＴＰ  ＭＰＳＤスキャンコードの発生およびＪＴＡＧ命令レジスタでのパス選択が含まれる。実行サポートには、機能クロックが実行モードで供給されることを保証する各領域にソースを有するクロックの切換およびアプリケーションの管理およびＤＴＰを通じて領域の実行モードを制御するＭＰＳＤコードシーケンスの発生が含まれる。
ＪＴＡＧ状態ダイアグラム遷移と結合するスキャンされた情報のシーケンスはＭＴＡＰ３０５によって提供される機能を管理する。コード状態マシン（ＣＳＭ）と呼ばれるＭＴＡＰの下位システムは、個々の領域を制御するために使用されるＭＰＳＤ実行コードシーケンスを作成する。ＪＴＡＧ論理はテストクロック（ＴＣＬＫ）によってドライブされ、機能論理は汎用クロック（ＵＣＬＫ）によってドライブされるので、ＭＴＡＰ３０５は各領域のクロックを制御するよう設計されている。
【０１３４】
さらに図３７を参照すると、メガモジュールテストアクセスポート（ＭＴＡＰ）３０５は、ＪＴＡＧ  ＴＡＰ５００（１１４９．１ＪＴＡＧ仕様に指定されている）、ＪＴＡＧデータパス制御論理５１０、エミュレーション制御レジスタ（ＥＣＲ）５２０、コード状態マシン（ＣＳＭ）５３０、開始制御装置５４０、コマンドデコード５５０、コマンド制御５６０およびＭＰＳＤコード発生器５７０からなる。
さらに図３７を参照すると、ＭＴＡＰ３０５はＪＴＡＧおよびＤＴＰ制御ブロックの間で分割できる。ＪＴＡＧブロックにはＪＴＡＧ  ＴＡＰ５００、ＪＴＡＧ  ＩＲ５８０およびデータパス制御５１０が含まれる。このブロックは装置ピンでＪＴＡＧアクティビティをデコードし、命令を受信し、それらをスキャンパス制御修飾子として処置するかまたはそれらをコマンド修飾子としてＤＴＰブロックに提供する。コマンドはＪＴＡＧブロックからＤＴＰブロックへのパスを要求するが、ＤＴＰブロックでそれらは適当な機能論理ブロックに配置される。ＤＴＰ制御ブロックには開始制御５４０、コマンド制御５６０、エミュレーション制御レジスタ５２０、ＭＰＳＤコード状態マシン５３０およびＭＰＳＤコード発生器セクション５７０が含まれる。
ＪＴＡＧ  ＴＡＰ５００はＴＣＬＫ、ＴＲＳＴ−およびＴＭＳピンによって管理されるＪＴＡＧ状態アクティビティをトラックする状態マシンを含む。この状態マシンは、命令レジスタとデータレジスタスキャンパスの両方をキャプチャ、シフトおよびアップデートするために使用されるすべての制御信号を発生する。データパス制御５１０はその後ＴＡＰと命令レジスタ５８０の情報を使用してＪＴＡＧスキャンパスに関するスキャン制御を発生する。
【０１３５】
さらに図３７を参照すると、ＭＰＳＤコード状態マシン（ＣＳＭ）５３０とエミュレーション制御レジスタ（ＥＣＲ）５２０が共に使用され、ＭＰＳＤコード発生器５７０と制御ＤＴＰクロックからＭＰＳＤ実行コードシーケンスを発生する。コマンド制御ブロック５６０からのコマンドはＣＳＭ５３０の動作を開始する。ＣＳＭ５３０は、コマンドによって管理されるときＥＣＲ５２０から２つのプログラム可能なＣ０およびＣｅの１つを選択し適用する。２つのプレロードされたコード値の適用シーケンスはまたＥＣＲ５２０のビットによって指定される。この適用シーケンスはプログラム可能でプロセッサの動作に従ってなされる。ＣＳＭ５３０の動作は以下の節でより詳細に扱われる。ＥＣＲ５２０はまた、装置モードの選択と次の節で扱われる雑テスト機能もサポートする。
コード発生器５７０はＥＣＲモードビット、ＴＡＰ状態、ＤＴＰ  ＪＴＡＧ  ＩＲ制御演算コードのデコードおよびＭＰＳＤコード状態マシンから入力を得て、ＤＴＰに供給されるＭＰＳＤコードを作成する。
図３８はＭＴＡＰエミュレーション制御レジスタ５２０を示す。エミュレーション制御レジスタ（ＥＣＲ）５２０はＭＴＡＰ３０５内の専用スキャンパス４５２（図３５）である。これはＪＴＡＧ命令レジスタに配置されたＳＥＣＲ演算コードによって指定される。ＥＣＲはシフトレジスタおよび影レジスタとして実現されるが、すべてのビットが影付きではない。エミュレーション制御レジスタのフィールドが表４７で説明される。
【０１３６】
0003916745.tif 000084
0003916745.tif 000085
0003916745.tif 000086
【０１３７】
0003916745.tif 000087
0003916745.tif 000088
表４９はＭＣＳビットと装置モードフィールドビットに基づいてクロック選択テーブルを定義する。
【０１３８】
0003916745.tif 000089
【０１３９】
0003916745.tif 000090
【０１４０】
0003916745.tif 000091
【０１４１】
0003916745.tif 000092
0003916745.tif 000093
【０１４２】
表５４を参照すると、ＥＭＵＣコードがＥＭＵＯＥ信号の一方または両方についてＨＩ−Ｚ状態を選択する場合、適当なＥＭＵＯＥ信号が永久にローにドライブされＥＭＵＯドライバをＨＩ−Ｚ状態に保持する。コードが１つまたは両方のピンについてオープンコレクタ状態を選択する場合、ＥＭＵＯをドライブするよう選択された信号はＥＭＵＯＥの状態をも制御する。ＥＭＵＯについて誤った条件が生じた場合、ＥＭＵＯＥはローに切換えられ、ＥＭＵＯ出力ドライバをＨＩ−Ｚ状態にする。ＥＭＵＯに正しい条件が生じた場合、ＥＭＵＯＥはハイに切換えられ、ＥＭＵのピンドライバをＨＩ−Ｚ出力からドライブ状態に切換える。ＩＦ＿ＣＬＲＯまたはＩＦ  ＣＬＲ１  ＪＴＡＧコマンドを実行すると信号がイナクティブ状態に戻るまでＥＭＵＯ０およびＥＭＵＯ１をドライブする信号は禁止される。ＴＲＳＴ−はＥＭＵＣビットに０をロードする。
ＥＭＵＣ設定コードビットはＥＣＲの影ビットとして設定される。設定ビットは、ＪＴＡＧ  ＴＡＰがＩＤＬＥ状態を通して遷移するときアップデートされる。これによって新しいイベントの選択はＵＣＬＫに同期し、ＥＭＵＯ信号がグリッチする可能性が排除される。
装置モードビットがＳＴＲＡＰに設定される場合、前の節で定義されたように、ＥＭＵ設定コードはＡＣＲのＣＰＵ＿ＥＭＵＣビットによって選択される。ＥＭＵＣフィールドは、ＴＲＳＴ−およびＴＬＲ  ＪＴＡＧ状態によって００００に初期化される。
装置モードフィールドおよびＭＣＳビットはＵＰＤＡＴＥ−ＤＲ  ＪＴＡＧ状態の間ロードされる影ビットによって実現されるが、一方ＭＰＳＤコードおよび遠隔イベントフィールドは影付きでなく物理的にエミュレーション制御シフトレジスタビットの中にある。ＥＣＲとは他の論理に機能情報を供給する影付きまたは影なしのビットである。
装置モードまたはＭＣＳビットが切換えられるときには同期がないので、グリッチによる無効状態を避けるために、ソフトウェアは、モードまたはＭＣＳビットが切換えられるときにはすべてのテストポートがロックされておらず、ＰＡＵＳが適用されるか、または現在選択されたクロックが不能（電源オフ）になっていることを保証しなければならない。
【０１４３】
ＥＣＲ５２０で影付きおよび影なしのビットが混じっているのは、機能クロック（ＵＣＬＫ）上で動作する論理を有するＭＰＳＤコードと遠隔イベントフィールドの使用に起因する。これらのフィールドはＵＣＬＫによって評価される論理またはレジスタに直接適用される。テストクロック（ＴＣＬＫ）に関してアップデートされたシフトレジスタビットはＵＣＬＫに対して非同期に変化し、ＵＣＬＫによって制御された論理に誤った結果を生じる。同期の問題は、ＥＣＲシフトレジスタがスキャンされる間ＵＣＬＫによって制御される論理によるＥＣＲデータの使用を禁止することによって解決される。この禁止は影なしシフトレジスタビットを使用する機能論理の状態をフリーズまたはロックする効果を有し、機能コマンドの使用を通じてエミュレーションソフトウェアによって発生する。この禁止プロセスは同期シャドーイングの代替形態で、テストクロック（ＴＣＬＫ）によってスキャンされた情報を使用する機能論理が常に静的な外観を与えることを保証する。ロックプロセスはＭＰＳＤコード状態マシンの一部であり、ＭＴＡＰコード状態マシンを説明する後の節で論じられる。
ＥＣＲ５２０は、たとえホストソフトウェアがＥＣＲ状態をチェックするのであっても、ソフトウェアがまずＣＳＭをロックしなければスキャンできない。
【０１４４】
ＭＴＡＰ状態制御およびコマンド制御
再び図３７を参照すると、ＭＴＡＰ開始制御論理５４０はＭＴＡＰ３０５のＪＴＡＧセクションからコマンドディレクティブを受け入れ、ディレクティブと同期し、その後ＭＴＡＰコマンド制御５６０の助けによってコマンドをＭＰＳＤコード状態マシン５３０とＭＴＡＰ３０５外部の論理ブロックに配置する。領域コマンドは、ＪＴＡＧ  ＩＲ５８０が０ｘ２０〜０ｘ２Ｆの範囲の演算コードを含み、ＴＡＰがＵＰＤＡＴＥ＿ＩＲまたはＵＰＤＡＴＥ＿ＤＲのどちらかからＩＤＬＥ状態に移動するときのみＪＴＡＧセクションで開始される。
領域コマンド要求はＭＴＡＰ開始制御論理５４０に転送されるが、そこでは状態マシンがＴＣＬＫと同期したＩＲＢＵＳＹ信号を発生しさらにＪＴＡＧ命令レジスタのアップデートを禁止する。表５５は発生するコマンドに関する開始パルスの発生を促進するイベントのシーケンスである。ＳＴＡＲＴ＿ＲＥＱＴおよびＩＲＢＵＳＹはＴＡＰテスト論理リセット（ＴＬＲ）状態によってリセットされるが、一方ＳＴＡＲＴ＿ＲＥＱ１およびＳＴＡＲＴ＿ＲＥＱ２はＩＲＢＵＳＹローによってリセットされる。
0003916745.tif 000094
さらに図３８を参照すると、信号ＳＷＩＮＰＲＯＧは、ＪＴＡＧ演算コードが０ｘ２０〜０ｘ２３、０ｘ３０、０ｘ３２または０ｘ２４（領域スキャンパスまたはＥＣＲの選択の際目標となるすべてのコマンド）の場合、ＳＴＡＲＴの発生を禁止する。
ＳＴＡＲＴ発生状態マシンの真理値表が表５６によって示される。
【０１４５】
0003916745.tif 000095
0003916745.tif 000096
【０１４６】
コマンド発生プロセスは、エミュレーションソフトウェアが第１のコマンドが完了するまで第２のコマンドを出さないことに責任を負うことを要求する。ＪＴＡＧ  ＩＲキャプチャ情報を通じて管理されるＩＲＢＵＳＹ  ＳＲＬによって、使用中インジケータは、次のコマンドをロードする同じ命令レジスタスキャンのエミュレーションソフトウェアによって検討されるようになる。キャプチャ状態はアップデート状態の前に発生するので、コマンドロード上のＩＲＢＵＳＹフラグの論理０キャプチャはエミュレーションソフトウェアに、命令レジスタのアップデートがポジティブに生じることを保証する。命令レジスタの中でスキャンされるコマンドはＰＡＵＳＥ＿ＩＲ状態で終了し、ＪＴＡＧ  ＩＤＬＥ状態への進行が保証されているかどうかをエミュレーションソフトウェアが判断できるようにする。開始パルスの発生に起因するあるイベントは割込みの際エミュレーションピンで管理されるようにプログラムされる。こうした割込みは、ある場合命令レジスタのポーリングの代わりにエミュレーションソフトウェアによって使用される。割込み適用性の判断はプログラマの裁量に任される。
ＪＴＡＧ状態マシンがＩＤＬＥ状態にドライブされ、ＳＧＡＢＯＲＴコマンドがＪＴＡＧ  ＩＲ５２０にロードされるか、またはＪＴＡＧ状態マシンがＴＥＳＴ−ＬＯＧＩＣ＿ＲＥＳＥＴ状態にドライブされる場合、開始発生器は消去状態になる。ＳＧＡＢＯＲＴコマンドはＩＲＢＵＳＹを無効にし、コマンドがＪＴＡＧ  ＩＲにロードされるようにする。
さらに図３７を参照すると、コマンド制御装置５６０はＣＳＭ５３０および領域についてすべてのコマンドストローブを発生する。ロックビットの状態はどの頭域がＳＤＡＴ＿ＨＡＬＴといったコマンドを受信するかに影響する。ＳＴＡＲＴは、コマンドがＪＴＡＧインターフェースから開始されるときＪＴＡＧ  ＳＴＡＲＴ制御論理によって発生する１クロック幅パルスである。ＳＴＡＲＴはコマンド制御に送信され、その目的地に経路指定される。コマンド制御論理はＳＴＡＲＴパルスをＪＴＡＧ  ＩＲの値と結合して特定のコマンドを形成する。こうした特定のコマンドはＭＴＡＰ３０５内のＭＰＳＤコード状態マシン５３０またはＭＴＡＰ３０５外の領域に送信される。コマンドのリストを表５７に示す。
【０１４７】
0003916745.tif 000097
0003916745.tif 000098
【０１４８】
ＭＴＡＰコード状態マシン
さらに図３７を参照すると、ＭＰＳＤコード状態マシン（ＣＳＭ）５３０は、ＥＣＲ５２０のＥＸＥおよびＴＥＲＭレジスタフィールドからＭＰＳＤコード発生器５７０（ＭＰＳＤバスをドライブする）へのＭＰＳＤコードの適用を制御する。また、エミュレーションモードの間スキャン（ＴＣＬＫ）および実行（ＵＣＬＫ）のために必要なクロックの切換を管理する。
ＣＳＭ５３０はＡＴＰＧモード以外のすべてのモードで動作する。ＣＳＭはエミュレーションモードで使用されプログラム可能なＭＰＳＤ実行コードシーケンスをＭＰＳＤコード発生器に向けて発生する。実行コードシーケンスはＦＵＮＣ、ＣＮＴＬ、ＨＡＬＴおよびＰＡＵＳとして定義される。エミュレーションソフトウェアは、ＣＳＭを管理して、ＤＩＰデータまたは制御パスのスキャンを試みる前にＰＡＵＳコードをコード発生器に適用する。ＣＳＭは実行コードを使用して領域クロックの選択を決定する。ＦＵＮＣ、ＣＮＴＬまたはＨＡＬＴコードを適用するには領域がＵＣＬＫを選択していることが必要であるが、ＰＡＵＳコードはＵＣＬＫまたはＴＣＬＫのどちらにも適用できる。ＦＵＮＣ、ＣＮＴＬまたはＨＡＬＴコードからＰＡＵＳに移動するとクロックはＵＣＬＫからＴＣＬＫに切換えられるが、ＰＡＵＳからＦＵＮＣ、ＣＮＴＬまたはＨＡＬＴに移動する要求によってクロックはＴＣＬＫからＵＣＬＫに切換えられる。すべてのクロック切換は、ＰＡＵＳコードがロックされない領域に適用されている間に発生する。
【０１４９】
図３９はＣＳＭ５３０の構成図である。コード状態マシンはＭＰＳＤコード制御装置６００、コードレジスタ６１０およびクロック切換器６２０のセクションに分けられる。コードレジスタセクションは２ビットコードレジスタ、クロック選択ビットおよびコードマルチプレクサを含む。クロック切換器は、クロック切換器が進行中の切換標識と同期する前のブレークを含む。コード制御装置は２つの状態マシンＳＲＬとＥＣＲで指定されたＭＴＡＰコマンドおよびＲＥＶＴモードに対応するすべての組み合わせ論理を含む。状態マシンはまた、ＥＸＥ６１１およびＴＥＲＭ６１２コードをコードレジスタに選択し、クロック選択ビット（ＴＣＬＫＯＮ６１３）をロードするマルチプレクサ制御を発生する。
コードレジスタ６１０のコードソースはコード制御装置６００によって決定される。コードレジスタは普通、別のディレクティブがない場合それ自体をフィードバックする。これによってコード制御装置は１クロックの間ＥＣＲからＥＸＥまたはＴＥＲＭコードフィールドを選択できるようになる。１クロック幅の選択ウインドウによって新しいコードがコードレジスタに入力され、その後コードは再循環する。このスキームによってコード制御装置はコマンドをＭＴＡＰコマンド制御５６０からコードレジスタブロック内のマルチプレクサ制御に直接伝えることができる。ＣＳＥＬ（３：０）６１４信号はコードレジスタの多重化を制御する。
ＣＳＭによってコード発生器に適用される次のコードがランコード（ＣＮＴＬまたはＦＵＮＣ）の場合、現在のコードはＰＡＵＳであり、ＣＳＭはランコードが適用される前の１クロックサイクルをＨＡＬＴコードにする。その理由は、領域のバスがＨＡＬＴコードに対してイネーブル（ＤＢＥＮＢ）になる１クロック前にバスをイネーブルにするためである。
コード制御装置６００はすべての要求の優先順位を解決した後マルチプレクサの選択を得る。優先順位は、クロック切換が１、ＭＴＡＰコマンドが２、遠隔イベント要求が３である。クロック切換の要求は、クロックの切換が進行中（ＳＷＩＮＰＲＯＧが真）でＣＳＭコマンドがＪＴＡＧ  ＩＲで指定されている間ＭＴＡＰ  ＳＴＡＲＴ制御を禁止することによってＭＴＡＰコマンドに対する優先権を得る。ＭＴＡＰコマンドが遠隔イベントコマンドと同時に発生する場合イベントコマンドは無視される。任意のＭＴＡＰコマンドまたは遠隔イベントはどちらの方向にもクロックの切換を要求することができる。必要なクロックの極性はＭＰＳＤコードに埋め込まれており、ＰＡＵＳはすべてのロックされていない領域へのＴＣＬＫの適用を要求するが、ＨＡＬＴ、ＣＮＴＬおよびＦＵＮＣはＵＣＬＫの適用を要求する。
コードのロードの要求が検出されると、コード制御装置は３つの種類のうちどのロードが発生するかを判断する。３つとはクロック切換を伴わないコードのロード、ＵＣＬＫからＴＣＬＫへの切換を伴うものまたはＴＣＬＫからＵＣＬＫへの切換を伴うものである。コード制御装置はこれらの場合を各々別様に処理する。次のいずれかの場合には切換は検出されない。
１）現在のコードがＰＡＵＳでロードされるコードがＰＡＵＳである。または、
２）現在のコードがＰＡＵＳでなく、要求されるコードがＰＡＵＳでない。
ＵＣＬＫからＴＣＬＫへの切換は、現在のコードがＨＡＬＴ、ＣＮＴＬまたはＦＵＮＣで、要求されるコードがＰＡＵＳのとき検出される。ＴＣＬＫからＵＣＬＫへのクロック切換は現在のコードがＰＡＵＳで要求されるコードがＨＡＬＴ、ＣＮＴＬまたはＦＵＮＣのとき検出される。各種類を別様に処理することによって、すべてのクロック切換が、ＭＰＳＤ  ＰＡＵＳコードが領域に適用されている間に発生することが保証される。
クロック切換が必要ないとき、コード制御装置６００はＥＣＲフィールドのロードを選択し、次のＣＳＭ状態を決定する。コードレジスタ６１０はクロック選択ビットおよびＣＳＭ状態と共に次のクロックでロードされる。
【０１５０】
現在の値がＨＡＬＴ、ＣＮＴＬまたはＦＵＮＣの間ＰＡＵＳのコードのコードレジスタへのロードが要求されるとき、コード制御装置はロードされるべきＥＣＲフィールドを選択し、次のＣＳＭ状態を決定する。コードレジスタはＰＡＵＳに次の状態をロードし、ＴＣＬＫＯＮビットが１にロードされる。クロック切換器はＴＣＬＫＯＮをＴＣＬＫ＿ＳＥＬ（テストクロック選択）と比較して、クロック切換が必要だと判断し、ＳＷＩＮＰＲＯＧ（進行中の切換）をアクティブにする。クロック切換の完了後、ＳＷＩＮＰＲＯＧはイナクティブに戻り、コード制御装置およびＭＴＡＰ  ＳＴＡＲＴ制御は先に進む。
ＴＣＬＫからＵＣＬＫへの切換を要求する要求は、クロックが切換えられる間現在のＰＡＵＳコードを保持しなければならないため、コード制御装置６００によって特別に処理され、切換を発生させたコードをインストールする。この場合コード制御装置は要求されたクロック状態をＴＣＬＫＯＮにロードし、ＣＳＭ状態をアップデートし、かつコードレジスタ６１０のロードを禁止する。
ＴＣＬＫＯＮ６１３は、クロック切換器６２０にファンクショナルへのクロック切換を発生するよう要求する。アップデートされたＣＳＭ５３０状態は、クロック切換が完了したときロードしなければならないコードを指定する。ＴＣＬＫＯＮはＰＡＵＳコードを表すので、クロックの選択とコードの値が一致しているかどうかを見るためにコードレジスタ６１０のコンテントと比較できる。ＴＣＬＫＯＮが０でコードレジスタがＰＡＵＳを含むとき、遅延されたコードレジスタのロードは保留される。ＴＣＬＫＯＮ６１３は常にクロック切換器６２０に直接送信されるが、そこでは必要な場合クロック切換シーケンスが開始される。これによってＰＡＵＳコードが領域に適用されている間にクロックが切換えられることが保証される。ＴＣＬＫＯＮがクロック切換器の出力またはＰＡＵＳ＿ＮＯＷ６１５、コードレジスタの休止コードのデコードに一致しない場合進行中の切換（ＳＷＩＮＰＲＯＧ）６２１がクロック切換器によって発生する。ＴＣＬＫからＵＣＬＫへのクロック切換が完了すると、切換器はＬＤ＿ＣＯＤＥ信号をコード制御装置に対して発生する。コード制御装置はＬＤ＿ＣＯＤＥ信号と現行ＣＳＭ状態を結合し、ＥＸＥまたはＴＥＲＭコードフィールドのコードレジスタへのロードを要求する。ＳＷＩＮＰＲＯＧは、ＪＴＡＧ  ＩＲが０ｘ２０〜０ｘ２３、０ｘ３０、０ｘ３２または０ｘ２４を含むとき、ＭＴＡＰ３０５のＳＴＡＲＴ制御中のＳＴＡＲＴの発生を禁止する。
【０１５１】
図４０は回路を切換える前のブレークであるＭＴＡＰ  ＣＳＭクロック切換回路６２０の概略図である。ＨＡＬＴからＰＡＵＳへの真理値表が表５８に示され、ＰＡＵＳからＨＡＬＴへの真理値表が表５９に示される。
0003916745.tif 000099
【０１５２】
0003916745.tif 000100
ＥＣＲスキャンを伴う特別なＣＳＭの考察がここで注記される。ＣＳＭ５３０はＥＣＲ５２０のフィールドを静的入力として使用するので、ＥＣＲはＣＳＭがＬＯＣＫＥＤ状態にあるときスキャンのみが可能である。コード制御装置６００は、それぞれ信号６０１、６０２および６０３によって示されるＥＸＥＣＵＴＥ、ＴＥＲＭＩＮＡＴＥおよびＬＯＣＫＥＤの３つのコード管理状態を２状態レジスタビットに符号化する。ＥＸＥＣＵＴＥおよびＴＥＲＭＩＮＡＴＥ状態はコードレジスタの現行コードのソースを反映する。これらの２つの状態はＭＴＡＰコマンドを通じていつでも管理できる。遠隔イベントフィールドは、ＣＳＭ状態がＬＯＣＫＥＤ状態にないときこれらの２つの状態をどちらも管理できる。ＬＯＣＫＥＤ状態はＭＴＡＰコマンドによって管理され、ＥＣＲの遠隔イベントフィールドでは管理できない。コマンド情報については表５７を参照されたい。状態の符号化が表６０に示される。
【０１５３】
0003916745.tif 000101
ＭＴＡＰ  ＭＰＳＤコード発生器
再び図３７を参照すると、領域に供給されるＭＰＳＤコードはＭＰＳＤコード発生器５７０の中で作成される。コード発生器５７０はＭＰＳＤバスをＤＴＰデータおよび制御スキャン状態からドライブし、ＭＰＳＤコード状態マシン（ＣＳＭ）はＪＴＡＧ  ＴＡＰ制御装置状態を直接ＭＰＳＤコードにマップするか、またはＭＰＳＤストラップ状態（正常動作モード）をバスに向けることによって出力する。
コード発生器５７０によるコードの発生は装置がＪＴＡＧテスト論理リセット状態（ＴＬＲ）で機能することを保証する階層を有する。この階層はまた、すべての領域が機能クロック選択と共にＭＰＳＤ機能ランコード（ＦＵＮＣ）を受信している間エミュレーションソフトウェアによって初期化できるようにする。ＭＰＳＤコード発生器によるコード値は、多数のソースからの入力の論理ＯＲである。望ましいコード出力を達成する互換コードソースを適用することはエミュレーションソフトウェアの責任となる。
ＭＰＳＤコード発生器５７０は、コード状態マシン５３０、ストラップモード、スキャンＤＴＰデータ、スキャンＤＴＰ制御およびＡＴＰＧモードからのコード入力の論理ＯＲを行う。ＥＣＲ５２０の両方の装置モードビットが設定されているとき、ＳＴＲＡＰはアクティブである。ＳＴＲＡＰはＣ１、Ｃ０およびＣｅについて０Ｒｅｄであり、それらを論理１状態にしてＦＵＮＣのＭＰＳＤコードを発生する。これによって他のコードソースが、ソフトウェアによるＳＴＲＡＰ信号のリセットの前にエミュレーションソフトウェアによって初期化されるようになる。ＳＴＲＡＰはコード発生論理への他のすべての入力をマスクする。装置モードビットは、ＴＲＳＴ−の論理０、すなわちＪＴＡＧ  ＴＡＰのテスト論理リセット（ＴＬＲ）状態への遷移によってか、またはＥＣＲスキャンによるＥＣＲモードビットのプログラムによって論理１に設定される。
ＤＴＰパススキャン、ＭＰＳＤコード状態マシンおよびＡＴＰＧモードマッピングコード発生ソースは、エミュレーションソフトウェアおよびＭＰＳＤコード発生ハードウェアによって互いに排他的になっている。ＦＵＮＣ、ＣＮＴＬおよびＨＡＬＴのＭＰＳＤ実行コードはＭＰＳＤコード状態マシンまたはＪＴＡＧ  ＴＡＰ状態をＭＰＳＤコードに直接変換するＡＴＰＧモードマッピング論理によってのみ発生できる。実行コードの１つのソースのみが一時にアクティブであり、イナクティブのソースはＭＰＳＤコード発生器５７０のコード作成機能に論理０を供給する。
【０１５４】
両方のＭＰＳＤ実行コードソースは、ＤＴＰデータ制御スキャンが試みられる前に、イナクティブ状態（論理０をＭＰＳＤコード発生器に供給する）に配置される。ＡＴＰＧモードのための状態マッピングはこの規則に適合するように選択される。エミュレーションソフトウェアは、ＭＰＳＤコード状態マシンの出力をＭＰＳＤスキャンを試みる前にイナクティブ状態（ＰＡＵＳ、ＣＳＭ＿Ｃ０およびＣＳＭ＿Ｃｅ論理０）に配置する責任を負う。すべての非スキャンＭＰＳＤコード（ＦＵＮＣ、ＣＮＴＬ、ＨＡＬＴおよびＰＡＵＳ）は論理１のＣ１を有するので、Ｃ１はＮＯＴ  ＳＨＥＦＴ＿ＤＲ  ＯＲ  ＮＯＴ  ＪＴＡＧ演算コード（Ｏｘ２０〜Ｏｘ２３、Ｏｘ３０およびＯｘ３２）として発生し、Ｃ０はＳＨＩＦＴ＿ＤＲ  ＡＮＤ  ＪＴＡＧ演算コード（Ｏｘ２２〜Ｏｘ２３およびＯｘ３２）として発生する。これによって実際にＭＰＳＤデータまたはＭＰＳＤ制御パスをスキャンし、両方の実行コード発生器を発生するＣ１から解放するときのみＣ１に０を生じる。
コード発生器５７０はＥＣＲモードビット、ＴＡＰ状態、ＭＰＳＤデータおよびＭＰＳＤ制御演算コードのデコードおよびＭＰＳＤコード状態マシンから入力を得て、領域に供給されるＭＰＳＤコードを形成する。ＳＴＲＡＰでないとき、Ｃ１は、Ｏｘ２０〜Ｏｘ２３およびＯｘ３０およびＯｘ３２（ＭＰＳＤデータまたはＭＰＳＤ制御パスをスキャンする）のＪＴＡＧ演算コードと共にＳＨＩＦＴ＿ＤＲ状態ＡＮＤｅｄに割り当てられる。このためＳＤＡＴおよびＳＣＴＬのＭＰＳＤスキャンコードは、正しいスキャンパスが選択されデータレジスタスキャン状態が発生しない場合発生できない。ＭＰＳＤ制御パスが選択される場合（Ｏｘ２２〜Ｏｘ２３、Ｏｘ３０およびＯｘ３２のＪＴＡＧ演算コード）、Ｃ０はＪＴＡＧ  ＳＨＩＦＴ＿ＤＲ状態で１に設定される。
ＤＴＰデータパスのスキャンに追加制約が配置される。ＣＡＰＴＵＲＥ＿ＤＲ状態はＴＣＬＫ＿ＳＥＬをサンプリングし、それが誤りの場合、ＭＰＳＤ  ＰＡＵＳコードがＳＨＩＦＴ＿ＤＲ状態の間ＤＴＰに適用される。さらにＤＴＰデータスキャンパスの出力は０にされる。ＴＣＬＫ＿ＳＥＬが誤りのときＴＣＬＫ  ＳＥＬのキャプチャされた値がＤＴＰデータスキャンパスの第１ビット上の出力となる。スキャンコードはエミュレーションソフトウェアがＣＳＭのＣＳＭ＿Ｃ０およびＣＳＭ＿Ｃｅ出力が論理０であることを保証するときのみ発生できる。
【０１５５】
表６１、表６２および表６３はさまざまなコード発生器ソースの役割を示す。表６１はＳＴＲＡＰコードの真理値表を示し、表６２はエミュレーションモードの真理値表を示し、表６３はＡＴＰＧモードの真理値表を示す。
0003916745.tif 000102
【０１５６】
0003916745.tif 000103
0003916745.tif 000104
0003916745.tif 000105
【０１５７】
0003916745.tif 000106
【０１５８】
エミュレーションモードでは、ＭＰＳＤコード発生器（ＭＣＧ）５７０がＭＰＳＤテストポートバス３０６に適用されるＭＰＳＤコードのＣ１ビットを制御する（図１５）。ＭＣＧは、ＪＴＡＧ  ＭＰＳＤデータスキャンが進行しているとき（Ｃ１＝０）以外はＣ１をハイにする。ＣＳＭがＭＰＳＤ  ＰＡＵＳ状態を出力するとき、ＭＣＧはＪＴＡＧ  ＴＡＰ状態をＭＰＳＤスキャンコードにマップする。ＪＴＡＧデータスキャンパスはＭＰＳＤバスデータスキャンパスに直接接続される。すべてのロックされないＭＰＳＤテストポートは、ＪＴＡＧ  ＴＡＰ状態がＳＨＩＦＴ＿ＤＲ状態に遷移するときＴＣＬＫ上でデータと共にスキャンされる。ＭＰＳＤデータまたは制御パスはＪＴＡＧ  ＩＲパス選択を通じて選択される。ＪＴＡＧ  ＳＨＩＦＴ  ＤＲ状態サイクルを通じて、Ｃ１はＳＤＡＴ＿ＨＡＬＴ、ＳＤＡＴ＿ＣＮＴＬ、ＳＣＴＬ＿ＨＡＬＴまたはＳＣＴＬ＿ＣＮＴＬ演算コードのいずれかが存在する場合（Ｏｘ２０〜Ｏｘ２３、Ｏｘ３０およびＯｘ３２）ローにドライブされる。ＣＯは、ＳＣＴＬ＿ＨＡＬＴまたはＳＣＴＬ＿ＣＮＴＬ（Ｏｘ２２〜Ｏｘ２３およびＯｘ３２）パスが選択される場合１にドライブされ、ＳＤＡＴ＿ＨＡＬＴまたはＳＤＡＴ＿ＣＮＴＬ（Ｏｘ２０〜Ｏｘ２１およびＯｘ３０）パスが選択される場合０である。
【０１５９】
ＡＴＰＧモードでは、すべてのＤＴＰ  ＭＰＳＤコードは、ラン−テスト／アイドル状態以外直接ＪＴＡＧ  ＴＡＰ状態制御装置からマップされる。ラン−テスト／アイドルではＣＳＭがＭＰＳＤ実行コード状態（ＣＮＴＬまたはＨＡＬＴ）をドライブするために利用される。ＣＳＭはアンロックされ、ＥＸＥまたはＴＲＭ状態（ＪＴＡＧ  ＩＲコマンドによって選択される）がＭＰＳＤバスをドライブする。ラン−テスト／アイドルでは、ＪＴＡＧ−ＩＲがＯｘ２０またはＯｘ２１以外のコードを含む場合、前にマップされた状態（ＨＡＬＴまたはＰＡＵＳ）が引き続きＭＰＳＤバスに適用される。ＣＳＭがロックされている場合（またはアンロックされているが、新しいＭＰＳＤコードがＭＰＳＤバスに適用されていない場合）前にマップされた状態が引き続き適用される。ラン−テスト／アイドル状態が終了すると、ＭＰＳＤコード発生器はＪＴＡＧ状態マッピングを利用してＭＰＳＤバスをドライブする。エミュレーションモードでのように、ＤＴＰスキャンパスはＩＲにロードされたＤＴＰスキャン演算コードを通じて選択される。ＡＴＰＧモードでは、スキャン状態のデータスキャンレジスタグループのマッピングによって、正常なＪＴＡＧからＭＰＳＤへのシフトコード変換が発生するＳＨＩＦＴ＿ＤＲ状態以外、ＭＡＰ＿ＣＯおよびＭＡＰ＿Ｃｅは０になる。エミュレーションモードが切換えられて（ＥＣＲスキャンから）ＡＴＰＧモードを形成する場合、ＣＳＭは、ＣＳＭがアンロックされるまでＰＡＵＳ（ＳＨＩＦＴ＿ＤＲがマップされた状態）をドライブし続ける。
表６５はエミュレーションおよびＡＴＰＧモード両方の状態デコードを示す。
【０１６０】
0003916745.tif 000107
ＳＴＲＡＰモードではすべてのＥＣＲロックビットはイナクティブにドライブされ、領域が現在のＭＰＳＤコードを使用するようにする。ＭＰＳＤストラップモードはまたＭＰＳＤ  ＦＵＮＣをＭＰＳＤバス３０６に向ける。
ＭＴＡＰ領域クロック管理
領域クロック管理は装置モードによって制御される。ＵＣＬＫ＿ＳＥＬおよびＴＣＬＫ＿ＳＥＬ信号はモードビットによってＭＣＧ５７０にゲートインする。ＭＰＳＤストラップモードでは、ＭＣＧはＵＣＬＫ＿ＳＥＬを発生するクロック切換器をオーバーライドする。ＡＴＰＧモードはＴＣＬＫを選択するクロック切換器をオーバーライドする。エミュレーションモードではＵＣＬＫ＿ＳＥＬおよびＴＣＬＫ＿ＳＥＬはクロック切換器６２０の出力にソースを有する。
ＵＣＬＫ＿ＳＥＬおよびＴＣＬＫ＿ＳＥＬは、イナクティブのとき、ＤＴＰから領域へソースされる機能およびスキャンクロックをゲートオフする。ＣＳＭのクロック切換器６２０が領域のクロックをＵＣＬＫからＴＣＬＫに切換えるために必要な条件を検出すると、ＵＣＬＫ＿ＳＥＬは、スレーブ段階がハイでマスタ段階がローの間イナクティブにドライブされ、マスタクロックをオフにする。ＤＴＰクロックの多重化によって、両方のクロックが選択解除されている間スレーブ段階がクロック多重化出力でハイにあることが保証される。ＴＣＬＫ＿ＳＥＬは、ＵＣＬＫ＿ＳＥＬがイナクティブでＴＣＬＫ（スレーブがハイでマスタがローの間）をテストポートにイネーブルにする同期遅延の後アクティブにドライブされる。この機構は機能クロックの切換を行う前のブレークを行う。ＴＣＬＫからＵＣＬＫに復帰する切換も同様に行われる。ＣＳＭはクロック切換が完了するまでＭＰＳＤバスにＰＡＵＳを適用する。また、ロックされていないテストポートのみはクロックが切換えられる。
領域がアンロックの過程にあるとき、クロック切換信号の状態は、アンロックされた領域のクロックの状態に一致するものでなければならない。状態が一致しない場合同期なしのクロックの切換が発生する。この状況はソフトウェアによって避けられる。
【０１６１】
図４１はＭＴＡＰイベント発生回路（ＥＶＴＡ）５９０の概略図である。ＥＶＴＡはアンロックされた領域によってイネーブルにされるイベントである。２種類のイベントがＥＶＴＡを発生することができるが、それらはＭＳＧＳＷとＣＰＵ＿ＤＯＮＥである。
図４１から、ＣＰＵＬＯＣＫの状態によって、ＭＳＧＳＷまたはＣＰＵ＿ＤＯＮＥのどちらかがＥＶＴＡを発生できることがわかる。すなわち、ＣＰＵがロックされていない場合、ＥＶＴＡを発生できる唯一のイベントはＤＯＮＥである。ＤＯＮＥはまたＡＮＹＳＴＯＰによって識別されるので、ＤＯＮＥがＡＮＹＳＴＯＰによって発生した場合ＥＶＴＡは発生しない。すなわち、ＭＰＳＤによって発生したＤＯＮＥだけがＥＶＴＡを発生できる。この理由はＡＮＹＳＴＯＰがアクティブな場合ＥＶＴＡを発生しＣＳＭによって出力される状態とひいてはＭＰＳＤバスの状態を変更する理由がないからである。
ＭＴＡＰパワーダウンサポート
エミュレーションモードでは、ＭＴＡＰコマンドおよびスキャンクロックの切換は、アクティブ機能クロックに依存する。パワーダウンモードでは、これは真でないことがある。従って、機能クロックのイネーブルを要求する機能クロック要求（ＦＣＬＫ＿ＲＥＱ）信号がＭＴＡＰ３０５からメガモジュールに向けて発生する。ＦＣＬＫ＿ＲＥＱは表６６に定義するように発生する。
【０１６２】
0003916745.tif 000108
メガモジュールがパワーダウン状態にある場合、ＣＳＭがＣＮＴＬまたはＦＵＮＣを適用するときＣＰＵ＿ＤＯＮＥをイナクティブにドライブしなければならないことにも注意されたい。ＣＳＭがＨＡＬＴを適用するときＣＰＵ  ＤＯＮＥはアクティブにドライブしなければならない。
【０１６３】
図４２は、ＣＳＭ５３０に位置するＭＴＡＰカウンタ回路６３０を示す。カウンタ６３１はさまざまな機能（性能解析、実行制御またはデータストリーミング）のために設定可能な１０ビットダウンカウンタである。カウンタ６３１とその制御ビットはスキャンに関して影付きである。カウンタはＵＣＬＫをランオフするが、影ビットはＴＣＬＫをランオフする。カウンタのスキャンパスが選択されると（ＬＥＶＴ＿ＣＮＴＲコマンド）、ＣＡＰＴＵＲＥ＿ＤＲ  ＪＴＡＧ状態（データストリーミングモードでなく）の間影ビットはカウンタの値がロードされ、ＪＴＡＧ  ＩＤＬＥ状態の間カウンタはシフトビットからロードされる。カウンタのロードを行うためにＩＤＬＥ状態を使用することによって同期ロードが行われる。ＭＴＡＰ＿ＢＯＲＲＯＷおよびＸＦＥＲ＿ＤＡＴＡ信号は１クロックサイクル幅である。
ＡＵＸビットはカウンタのシフトパス中の唯一のビットで、ＳＭＭ＿ＩＤスキャンの間ＩＤバスのための１６番目のビットとして利用される。ＳＭＭ＿ＩＤスキャン動作の間、カウンタのシフトレジスタの１６ビットにはＣＡＰＴＵＲＥ  ＤＲ状態によって１６ビットＩＤバスの値がロードされる。
カウンタモードフィールドは選択された機能のためのカウンタ６３１の設定に利用される。表６７はカウンタ６３０のＣＭビットフィールドを定義し、表６８はＣＥＳビットフィールドを定義する。
【０１６４】
0003916745.tif 000109
0003916745.tif 000110
【０１６５】
0003916745.tif 000111
特殊エミュレーション（ＳＥ）装置サポート
再び図１５を参照すると、メガモジュール境界３０１は特殊エミュレーション装置をサポートする信号を含む。ＳＥ装置にはメガモジュール３００と第４ＳＥ解析（ＳＥＡ）領域の追加制御レジスタが含まれる。ＳＥ装置用の制御レジスタはメモリマップされる。
図１１に戻ってこれを参照すると、ＤＰ段階の実行パケットのプログラムカウンタの値はＰＣＤＰと呼ばれるレジスタでラッチされる。ＰＣＤＰは、正確な一致、範囲の比較またはビットフィールドマスキングの比較のためにエミュレーション論理に保持された値と比較できる。ＰＣＤＰがハードウェアプログラムのブレークポイントについて特定のアドレス集合と一致する場合、ＳＥエミュレーション論理はそのサイクルの間ＳＥＥを設定する。
ＤＡＤＤＲ、ＤＤＡＴＡ＿Ｉ、ＤＤＡＴＡ＿Ｏ、ＤＲＮＷおよびＤＢＳがデータアクセス上のブレークポイントを検出するためにＣＰＵ境界で利用できる。（適当なストローブによって修飾された）アドレスとデータの両方はブレークポイント値の正確な一致、範囲またはマスクの比較のために使用できる。データブレークポイントは、データアドレスがＥ２段階の間ＣＰＵ境界に存在する点でプログラムブレークポイントと異なっている。実行パケットは実行に入る前にブレークポイントが中止できないようにする。しかし、エミュレーション論理はＰＣＤＰストリームからブレークポイントを発生した命令を復元できる。ＰＣＤＰのバッファにはこの機能のために必要なものがある。
トレースと性能解析
メモリ制御と割込み応答信号はトレース用バスで利用可能である。信号ＢＲＴＫはＰＣＤＰによって示されるアドレスが分岐先だったことを示す。８つの信号（ＦＵ＿Ｌ１、ＦＵ＿Ｍ１、ＦＵ＿Ｄ１、ＦＵ＿Ｓ１、ＦＵ＿Ｌ２、ＦＵ＿Ｍ２、ＦＵ＿Ｄ２、ＦＵ＿Ｓ２）が、Ｅ２（前のサイクルではＥ１）  の実行パケットが、それぞれＡ−またはＢ−側のＬ−、Ｍ−、Ｄ−またはＳユニットの命令を実行したかを示す。ユニットの割り当てはデコードのために用いられるデコードブロックを参照する。これは並行処理と特定の命令に関する条件が真と評価されるかを評価するために使用できる。最後に、３ビットＥＰＳＩＺＥ出力はＤＣ中の実行パケットの大きさ（語）を示す。これはＩＤＬＥおよび複数サイクルＮＯＰによって導入される割込み処理とすべての臨時サイクルでは０であるべきである。
【０１６６】
図４３は、メガモジュール３００のＭＴＡＰ３０５と領域とＤＴＰとの間の相互接続をより詳細に示す相互接続図である。図３５に示すように、ＳＥ解析は独立したスキャンパス４５７および４５８を利用するが、それはＭＴＡＰ  ＭＰＳＤ制御バス（Ｃ０、Ｃ１、Ｃｅ）をメガモジュールＤＴＰと共有する。表６９で説明される信号はＭＴＡＰ３０５からＳＥ解析モジュールへのインターフェースとなる。
【０１６７】
0003916745.tif 000112
ＳＥはメガモジュールＤＴＰと同一のＤＴＰを利用する。ＳＥ解析Ｃ０、Ｃ１およびＣｅビットは、メガモジュールＤＴＰのＣ０、Ｃ１およびＣｅビットと並列にＳＥのＤＴＰに提示されるようにタイミングを取られる。
さらに図４３を参照すると、ＭＴＡＰ３０５モジュールはＪＴＡＧ環境と各ＤＴＰとの間のインターフェースファンアウトを提供する。各ＤＴＰへのファンアウトは、ＭＰＳＤコード（Ｃ０、Ｃ１、Ｃｅ）バス、ＴＣＬＫとＵＣＬＫの間の領域クロック切換を制御する信号、テストポートの制御ＳＲＬのロードを制御するアップデート信号、エミュレーションステータスおよびＭＰＳＤ  ＢＵＳで同報されないＭＴＡＰコマンドからなる。
さらに図４３を参照すると、データストリームスキャンパス回路７００にはストリームデータをストリームレジスタ３９３に転送する回路が含まれる（図３１Ｄ）。ＳＴＲＭ＿Ｉ／Ｏバス７０１はストリームデータをＣＰＵ領域１０に転送する。この回路は図４４に関して詳細に説明される。
【０１６８】
図４４はデータスキャンパス回路７００の詳細を示す図である。スキャンレジスタ７１０はＤＡＴＡ＿ＳＴＲＭスキャンパス４５６の一部を形成する（図３５）。ＳＴＲＭ＿Ｉ／Ｏバス７０１はストリームデータをＣＰＵ領域１０にある（前に図３１Ｄに関して説明された）データストリーミングレジスタＳＴＲＥＡＭ３９３に転送する。ストリームデータは、前に表３７〜表４１に関して説明されたように、ＣＰＵ領域１０のさまざまな保存位置との間で転送される。５ビットカウンタ６３２は図４２に関して説明されたカウンタ６３１の一部である。コンパレータ６３５はＪＴＡＧ  ＩＲ５８０を監視して、ＳＤＡＴ＿ＳＴＲＭ  ＪＴＡＧ命令がＪＴＡＧ  ＩＲ５８０に存在する時を判断する。ゲート６３６は、信号６３７によって示される各ＪＴＡＧシフト状態に反応してカウンタ６３２を減らす。コンパレータ７１２はカウンタ６３２が００に達する時を判断して信号ＸＦＥＲ＿ＤＡＴＡ７０２を表明する。
表６４に関して説明されるように、ストリームデータは、ロード命令がＣＰＵ１０の命令レジスタにあるときスキャンレジスタ７１０から転送される。この場合、ＳＴＲＥＡＭレジスタ３９３が信号７０２に反応してロードされる。保存命令がＣＰＵ１０の命令レジスタにあるとき、データはＳＴＲＥＡＭレジスタ３９３からスキャンレジスタ７１０に転送される。この場合、書き込みイネーブル信号が保存命令に反応して表明され、ゲート７１３が、ＸＦＥＲ＿ＤＡＴＡ信号７０２に反応して信号７１７を表明してロードスキャンレジスタ７１０をロードする。
さらに図４４を参照すると、表４４に関して説明されたように、ステータス回路７３０は、ＸＦＥＲ＿ＤＡＴＡ信号７０２に反応してＭＴＡＰステータスビットＳＴＲＹ＿ＴＧＬＥおよびＳＴＳＷ＿ＴＧＬＥを作成する。ハンドシェーク信号７３１にはＥＣＴ５２０からのＣＰＵ＿ＤＯＮＥおよびＴＥＲＭ（０、１）が含まれる。
図４５はＥＭＵピンの接続を示す概略図である。ＥＭＵ［１：０］はＥＭＵ入力／出力ピンである。これらのピンはマルチプロセッササポートのためのエミュレーションイベント入力と外部イベント検出のための出力とを提供する。すべてのＪＴＡＧおよびエミュレーションピンはエンドシステムでは接続されずに放置される。これを容易にするために、ＴＭＳ、ＴＣＬＫ、ＴＤＩ、ＥＭＵ１およびＥＭＵ０ピンは、プルアップ９００として示すように、小さなプルアップ抵抗を有している。ＴＲＳＴ−は小さな内部プルダウン抵抗を有し、ＪＴＡＧ  ＴＡＰおよび境界論理が接続がない場合リセット状態に維持されることを保証する。
【０１６９】
図４６は本発明の態様を使用する装置１０００の代替実施例の構成図である。ＭＴＡＰ３０５のＪＴＡＧインターフェースによってサポートされる複数の設定が存在する。図４６はメガモジュール１０１０およびカスタム論理モジュール１０２０を有する一例である。ＪＴＡＧモジュールＴＤＯ／ＴＤＩ信号はすべてシリアルに接続され、ＴＭＳおよびＴＲＳＴ信号はすべてパラレルに接続されていることに注意することが重要である。モジュールの順序は重要ではない。モジュールの順序は目標システムのＪＴＡＧ装置設定ファイルに対応しなければならない。このファイルはエミュレーションソフトウェアによって利用され同じスキャンチェーンのＪＴＡＧ装置およびＪＴＡＧモジュールを管理する。
ＥＭＵステータス
再び図４３を参照すると、マイクロプロセッサ１のＣＰＵまたはオンチップメモリシステムの中でさまざまなエミュレーションステータスビットが発生する。これらの信号はＭＴＡＰ３０５にレベルとしてもたらされる。それらはＣＡＰＴＵＲＥ−ＩＲ状態の間ＪＴＡＧ  ＩＲ５８０のシフトレジスタにラッチされる。表７０は停止モードエミュレーションステータス信号を説明する。表７１は実時間モードエミュレーションステータス信号を説明する。表７２はＣＰＵエミュレーションステータス信号を説明する。表７３はＣＰＵエミュレーションイベント信号を説明する。
【０１７０】
0003916745.tif 000113
0003916745.tif 000114
【０１７１】
0003916745.tif 000115
ここで使用される「適用される」「接続される」および「接続」という用語は電気的に接続されることを意味し、電気的接続パスに追加素子がある場合を含む。
本発明は例示としての実施例に関して説明されたが、この説明は限定する意味で構成されることを意図したものではない。この説明に関して本発明のさまざまな他の実施例が当業技術分野に熟練した者には明らかであろう。添付の請求項が本発明の真の範囲と精神の範囲内にある実施例のこれらの修正を包含することが考慮される。
【０１７２】
以上の説明に関してさらに以下の項を開示する。
（１）データ処理システム内のプロセッサをデバッグする方法において、前記プロセッサが命令実行パイプラインを有し、
前記命令パイプライン中の複数の重複する演算を開始するために正常な演算方法で前記プロセッサ命令実行パイプライン中のシステムコードを実行する段階と、
少なくとも１つの重複する演算が不完全で、前記命令実行パイプラインを表す第１状態をセーブするような方法で前記プロセッサの前記正常な動作を停止する段階と、
前記命令実行パイプラインを１段階進め、前記命令パイプラインを表す第２状態をセーブする段階と、を含む方法。
（２）１段階進める前記段階が、メモリアクセスが完了する間の非特定量の時間を待機する段階をさらに含む第１項記載の方法。
（３）１段階進める前記段階が、複数のメモリアクセスが完了する間の非特定量の時間を待機する段階をさらに含む第２項記載の方法。
（４）命令実行パイプラインを有するマイクロプロセッサにおいて、
前記命令パイプライン中の複数の重複する演算を開始するために正常な演算方法で前記プロセッサ命令実行パイプライン中のシステムコードを実行する回路と、
少なくとも１つの前記重複する演算が不完全であるような方法で前記プロセッサの前記正常な動作を停止する回路と、
前記命令実行パイプラインを表す第１状態をセーブする回路と、
前記命令実行パイプラインを１段階進め、前記命令パイプラインを表す第２状態をセーブする回路と、を含むマイクロプロセッサ。
【０１７３】
（５）データ処理システムにおいて、
命令実行パイプラインを有するマイクロプロセッサと、
前記マイクロプロセッサに接続されたプログラム命令を保持するメモリと、
前記マイクロプロセッサに接続されたディスク駆動装置とを備え、
前記マイクロプロセッサが、
前記命令パイプライン中の複数の重複する演算を開始するために正常な演算方法で前記プロセッサ命令実行パイプライン中のシステムコードを実行する回路と、
少なくとも１つの前記重複する演算が不完全であるような方法で前記プロセッサの前記正常な動作を停止する回路と、
前記命令実行パイプラインを表す第１状態をセーブする回路と、
前記命令実行パイプラインを１段階進め、前記命令パイプラインを表す第２状態をセーブする回路と、をさらに含むシステム。
（６）外部テストシステム５１への接続時に集積回路４２のデバッグとエミュレーションが行えるエミュレーションユニット５０と共に、マイクロプロセッサ１および周辺装置６０〜６１を備えた集積回路４２上のデータ処理システムが提供されている。マイクロプロセッサ１は、フェッチ／デコードユニット１０ａ〜ｃと機能実行単位１２、１４、１６、１８に関連のある複数の実行段階を備えた命令実行パイプラインを有している。マイクロプロセッサ１のパイプラインが非保護であることから、命令記憶装置２３に記憶されたシステムプログラムコードによって、データメモリ２２およびレジスタファイル２０へのメモリアクセスの待ち時間が利用できる。また、エミュレーションユニット５０によって、マイクロプロセッサ１の非保護パイプラインをエミュレートする手段と、メモリ２２〜２３を迅速にアップロードおよびダウンロードする手段が得られる。エミュレーションユニット５０は、無関係な演算の発生等、エミュレーション中にメモリ２２〜２３や周辺装置６０〜６１に影響を及ぼす事態を回避するような方法で演算を行う。
【０１７４】
【関連出願についての表示】
本願は、以下の出願に関連し、
Ｓ．Ｎ．    ，（ＴＩ−２２１０５）；Ｓ．Ｎ．    ，（ＴＩ−２２１０６）；
Ｓ．Ｎ．    ，（ＴＩ−２２１０８）；Ｓ．Ｎ．    ，（ＴＩ−２２１０９）；
Ｓ．Ｎ．    ，（ＴＩ−２３６０４）；Ｓ．Ｎ．    ，（ＴＩ−２４３３３）；
Ｓ．Ｎ．    ，（ＴＩ−２４３３４）；Ｓ．Ｎ．    ，（ＴＩ−２４３３５）；
Ｓ．Ｎ．    ，（ＴＩ−２４９４２）；Ｓ．Ｎ．    ，（ＴＩ−２４９４６）；
Ｓ．Ｎ．    ，（ＴＩ−２４９４７）；Ｓ．Ｎ．    ，（ＴＩ−２４９４８）；
Ｓ．Ｎ．    ，（ＴＩ−２４９５６）；Ｓ．Ｎ．    ，（ＴＩ−２５０４９）；
Ｓ．Ｎ．    ，（ＴＩ−２５１１２）；Ｓ．Ｎ．    ，（ＴＩ−２５１１３）；
Ｓ．Ｎ．    ，（ＴＩ−２５２４８）；Ｓ．Ｎ．    ，（ＴＩ−２５３０９）；
Ｓ．Ｎ．    ，（ＴＩ−２５３１０）；Ｓ．Ｎ．    ，（ＴＩ−２５３１１）；
Ｓ．Ｎ．    ，（ＴＩ−２５３１１ＸＸ）
上記出願は、いずれも本願と同時期に出願され、この文章中に引用されている。
【図面の簡単な説明】
【図１】本発明の一実施例に関わる構成部品を示す、デジタル信号プロセッサ（ＤＳＰ）のブロック図である。
【図２】図１に示す機能単位、データパス、およびレジスタファイルのブロック図である。
【図３】図１に示すＤＳＰのアドレス指定モードレジスタ（ＡＭＲ）を示す図である。
【図４】図１に示すＤＳＰの制御ビットならびに状態ビットを有する制御状態レジスタ（ＣＳＲ）を示す図である。
【図５】図１に示すＤＳＰの３２の汎用入力信号をサポートする汎用入力レジスタ（ＩＮ）を示す図である。
【図６】図１に示すＤＳＰの３２の汎用出力信号をサポートする汎用出力レジスタ（ＯＵＴ）を示す図である。
【図７】図１に示すＤＳＰの４０ビットデータ用レジスタ記憶域構成を示す図である。
【図８】図１に示すＤＳＰの演算コードマップを示す図である。
【図９】図１に示すＤＳＰのフェッチパケットの基本形式を示す図である。
【図１０】Ａは完全に直列なｐビットによる図９のフェッチパケットを示す図、Ｂは完全に並列なｐビットによる図９のフェッチパケットを示す図、Ｃは一部直列なｐビットによる図９のフェッチパケットを示す図である。
【図１１】図１に示すＤＳＰのパイプラインの各段階を示す図である。
【図１２】分岐命令の各段階を示す図である。
【図１３】クロックサイクルとフェッチパケットに基づく図１のＤＳＰのパイプラインの演算を示す図である。
【図１４】３つの実行パケットを有するフェッチパケットｎと、それぞれ１実行パケットを有する後続の６つのフェッチパケット（ｎ＋１〜ｎ＋６）（８並列命令を有する）を示す図である。
【図１５】図１に示すプロセッサ用ＭＴＡＰ−テストポートインタフェースのブロック図である。
【図１６】図１に示すプロセッサ用メガモジュールリセットシーケンスのタィムチャートである。
【図１７】ＡはＩＮＴ４〜ＩＮＴ１５およびＮＭＩの状態を保持する割込み標識レジスタ（ＩＦＲ）を示す図、Ｂは図１のＤＳＰの割込み許可レジスタ（ＩＥＲ）を示す図、ＣはＩＦＲに手動で割込みの設定または解除が行える割込み設定レジスタ（ＩＳＲ）を示す図、ＤはＩＦＲに手動で割込みの設定または解除が行える割込みクリアレジスタ（ＩＣＲ）を示す図である。
【図１８】図１のプロセッサの分析割込みの検出に関するタイムチャートである。
【図１９】２つの分析割込み関連命令ＳＷＩおよびＢ  ＡＲＰを示す図である。
【図２０】図１５のＭＴＡＰのＭＴＡＰ−ＣＰＵインタフェース信号を示すブロック図である。
【図２１】図１のプロセッサのＭＴＡＰ−メガモジュール領域インタフェースを示すブロック図である。
【図２２】図１のプロセッサのテストポート状態を示す状態図である。
【図２３】Ａは図１のプロセッサのＵＣＬＫに関するＦｕｎｃｔｉｏｎａｌ  ＲｕｎからＳｃａｎまでのクロック切換えに関するタイムチャート、Ｂは図１のプロセッサのＴＣＬＫに関するＦｕｎｃｔｉｏｎａｌ  Ｒｕｎからのクロック切換えに関するタイムチャート、Ｃは図１のプロセッサのＵＣＬＫに関するＦｕｎｃｔｉｏｎａｌ  ＲｕｎからＴＣＬＫに関するＦｕｎｃｔｉｏｎａｌ  Ｒｕｎまでのクロック切換えに関するタイムチャートである。
【図２４】図１のプロセッサのＭＳＥＮＤビットに基づくＤａｔａ  Ｓｃａｎのスキャンチェーンに関する表である。
【図２５】図１のプロセッサの停止に関する様々なケースを示すタイムチャートである。
【図２６】信号ＥＲＤＹを形成する回路の回路図である。
【図２７】図１のプロセッサの割込み処理中にＣＰＵテストポートにより要求された停止に関するタイムチャートである。
【図２８】テストポートからの要求によるテストの停止（Ｔｅｓｔ  Ｐｏｒｔ  Ｒｅｑｕｅｓｔｅｄ  Ｔｅｓｔ  Ｈａｌｔ）を示すタイムチャートである。
【図２９】図１のプロセッサのエミュレーションを行うためのパイプライン管理プロセスを示しているパイプライン停止に関するタイムチャートである。
【図３０】図１のプロセッサのエミュレーション後のパイプライン復旧プロセスを示しているタイムチャートである。
【図３１】Ａは図１のプロセッサの分析制御レジスタを示す図、Ｂは図１のプロセッサの分析データレジスタを示す図である。
【図３２】Ａは図１のプロセッサの分析データ割込みリターンポインタを示す図、Ｂは図１のプロセッサのデータストリームレジスタを示す図である。
【図３３】図１のプロセッサの命令実行パイプラインに関するタイムチャートであり、多様なパイプライン段階を示している。
【図３４】図１のプロセッサにおけるメガモジュールへのピンの接続を示すブロック図である。
【図３５】図１のプロセッサのＪＴＡＧ命令とデータレジスタパスを示すブロック図である。
【図３６】Ａはストラップ状態が図３５のレジスタで選択された場合のＪＴＡＧ命令レジスタの内容を示す図、Ｂはストップエミュレーション状態が図３５のレジスタで選択された場合のＪＴＡＧ命令レジスタの内容を示す図、Ｃはリアルタイムエミュレーション状態が図３５のレジスタで選択された場合のＪＴＡＧ命令レジスタの内容を示す図、Ｄはエミュレーションエラー状態が図３５のレジスタで選択された場合のＪＴＡＧ命令レジスタの内容を示す図である。
【図３７】図１のプロセッサのＪＴＡＧ−ＭＰＳＤインタフェースのブロック図である。
【図３８】図３５のエミュレーション制御レジスタを示す図である。
【図３９】図１のプロセッサのＭＴＡＰのコード状態マシン（ＣＳＭ）のブロック図である。
【図４０】図３９のＣＳＭのクロックソーススイッチの略図である。
【図４１】図１のプロセッサのＥＶＴＡ割込みを生成する回路の略図である。
【図４２】図３５のカウンタレジスタを示す図である。
【図４３】図１のプロセッサの領域間の相互接続を示すブロック図である。
【図４４】図４３のＭＴＡＰ内のストリームスキャンレジスタを示すブロック図である。
【図４５】図１のプロセッサのＥＭＵピン接続を示す略図である。
【図４６】図１のプロセッサのＪＴＡＧ  ＴＡＰの構成を示すブロック図である。
【符号の説明】
１  マイクロプロセッサ
１０ａ〜１０ｃ  フェッチ／デコードユニット
２０  レジスタファイル
２２，２３  メモリ
５０  エミュレーションユニット
６０，６１  周辺装置
【図１】
0003916745.tif 000116
【図２】
0003916745.tif 000117
【図３】
0003916745.tif 000118
【図４】
0003916745.tif 000119
【図５】
0003916745.tif 000120
【図６】
0003916745.tif 000121
【図７】
0003916745.tif 000122
【図８】
0003916745.tif 000123
【図９】
0003916745.tif 000124
【図１０】
0003916745.tif 000125
【図１１】
0003916745.tif 000126
【図１２】
0003916745.tif 000127
【図１３】
0003916745.tif 000128
【図１４】
0003916745.tif 000129
【図１５】
0003916745.tif 000130
【図１６】
0003916745.tif 000131
【図１７】
0003916745.tif 000132
【図１８】
0003916745.tif 000133
【図１９】
0003916745.tif 000134
【図２０】
0003916745.tif 000135
【図２１】
0003916745.tif 000136
【図２２】
0003916745.tif 000137
【図２３】
0003916745.tif 000138
【図２４】
0003916745.tif 000139
【図２５】
0003916745.tif 000140
【図２６】
0003916745.tif 000141
【図２７】
0003916745.tif 000142
【図２８】
0003916745.tif 000143
【図２９】
0003916745.tif 000144
【図３０】
0003916745.tif 000145
【図３１】
0003916745.tif 000146
【図３２】
0003916745.tif 000147
【図３３】
0003916745.tif 000148
【図３４】
0003916745.tif 000149
【図３５】
0003916745.tif 000150
【図３６】
0003916745.tif 000151
【図３７】
0003916745.tif 000152
【図３８】
0003916745.tif 000153
【図３９】
0003916745.tif 000154
【図４０】
0003916745.tif 000155
【図４１】
0003916745.tif 000156
【図４２】
0003916745.tif 000157
【図４３】
0003916745.tif 000158
【図４４】
0003916745.tif 000159
【図４５】
0003916745.tif 000160
【図４６】
0003916745.tif 000161