JP2007004832A - データ処理システムのデバッグ中にマルチワード命令レジスタを利用する方法 - Google Patents
データ処理システムのデバッグ中にマルチワード命令レジスタを利用する方法 Download PDFInfo
- Publication number
- JP2007004832A JP2007004832A JP2006276539A JP2006276539A JP2007004832A JP 2007004832 A JP2007004832 A JP 2007004832A JP 2006276539 A JP2006276539 A JP 2006276539A JP 2006276539 A JP2006276539 A JP 2006276539A JP 2007004832 A JP2007004832 A JP 2007004832A
- Authority
- JP
- Japan
- Prior art keywords
- register
- instruction
- code
- state
- bit
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000012545 processing Methods 0.000 title claims abstract description 44
- 238000012360 testing method Methods 0.000 claims abstract description 292
- 238000012546 transfer Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 abstract description 109
- 230000006870 function Effects 0.000 abstract description 78
- 238000004364 calculation method Methods 0.000 abstract description 15
- 230000002093 peripheral effect Effects 0.000 abstract description 11
- 238000004458 analytical method Methods 0.000 description 122
- 238000010586 diagram Methods 0.000 description 54
- 230000007704 transition Effects 0.000 description 37
- 208000036864 Attention deficit/hyperactivity disease Diseases 0.000 description 32
- 230000008569 process Effects 0.000 description 26
- 230000005540 biological transmission Effects 0.000 description 24
- 238000013461 design Methods 0.000 description 23
- 230000004044 response Effects 0.000 description 23
- 238000003860 storage Methods 0.000 description 23
- 239000000872 buffer Substances 0.000 description 17
- 230000008859 change Effects 0.000 description 13
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 11
- 230000000694 effects Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 10
- 240000007320 Pinus strobus Species 0.000 description 9
- 238000001514 detection method Methods 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 9
- 101710092887 Integrator complex subunit 4 Proteins 0.000 description 8
- 102100037075 Proto-oncogene Wnt-3 Human genes 0.000 description 8
- 101100385237 Mus musculus Creg1 gene Proteins 0.000 description 7
- TXFOLHZMICYNRM-UHFFFAOYSA-N dichlorophosphoryloxybenzene Chemical compound ClP(Cl)(=O)OC1=CC=CC=C1 TXFOLHZMICYNRM-UHFFFAOYSA-N 0.000 description 7
- 238000007667 floating Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 241000775881 Haematopota pluvialis Species 0.000 description 6
- 206010000210 abortion Diseases 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- HJVCHYDYCYBBQX-HLTLHRPFSA-N (2s,3s,4e,6e,8s,9s)-3-amino-9-methoxy-2,6,8-trimethyl-10-phenyldeca-4,6-dienoic acid Chemical compound OC(=O)[C@@H](C)[C@@H](N)/C=C/C(/C)=C/[C@H](C)[C@@H](OC)CC1=CC=CC=C1 HJVCHYDYCYBBQX-HLTLHRPFSA-N 0.000 description 5
- 238000013459 approach Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- PBLZLIFKVPJDCO-UHFFFAOYSA-N omega-Aminododecanoic acid Natural products NCCCCCCCCCCCC(O)=O PBLZLIFKVPJDCO-UHFFFAOYSA-N 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 230000000630 rising effect Effects 0.000 description 5
- 102100032066 EMI domain-containing protein 1 Human genes 0.000 description 4
- 101710133019 EMI domain-containing protein 1 Proteins 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 101000766194 Haliangium ochraceum (strain DSM 14365 / JCM 11303 / SMP-2) Bacterial actin-related protein Proteins 0.000 description 3
- 101000761536 Homo sapiens Voltage-dependent calcium channel beta subunit-associated regulatory protein Proteins 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 102100024891 Voltage-dependent calcium channel beta subunit-associated regulatory protein Human genes 0.000 description 3
- 230000002411 adverse Effects 0.000 description 3
- 210000004027 cell Anatomy 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 239000003607 modifier Substances 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 102100024348 Beta-adducin Human genes 0.000 description 2
- 101150115013 DSP1 gene Proteins 0.000 description 2
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 2
- 101000841267 Homo sapiens Long chain 3-hydroxyacyl-CoA dehydrogenase Proteins 0.000 description 2
- 101000973947 Homo sapiens Probable 28S rRNA (cytosine(4447)-C(5))-methyltransferase Proteins 0.000 description 2
- 102100029107 Long chain 3-hydroxyacyl-CoA dehydrogenase Human genes 0.000 description 2
- 102100021833 Mesencephalic astrocyte-derived neurotrophic factor Human genes 0.000 description 2
- 102100022389 Nucleosome assembly protein 1-like 1 Human genes 0.000 description 2
- 101150107050 PSA2 gene Proteins 0.000 description 2
- 101150045091 PSA3 gene Proteins 0.000 description 2
- 102100022407 Probable 28S rRNA (cytosine(4447)-C(5))-methyltransferase Human genes 0.000 description 2
- 102100022805 Protein Wnt-2 Human genes 0.000 description 2
- 229910004438 SUB2 Inorganic materials 0.000 description 2
- 101100290389 Schizosaccharomyces pombe (strain 972 / ATCC 24843) ceg1 gene Proteins 0.000 description 2
- 101100311330 Schizosaccharomyces pombe (strain 972 / ATCC 24843) uap56 gene Proteins 0.000 description 2
- 101100137869 Trypanosoma brucei brucei PSA4 gene Proteins 0.000 description 2
- 238000004002 angle-resolved photoelectron spectroscopy Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- JJYKJUXBWFATTE-UHFFFAOYSA-N mosher's acid Chemical compound COC(C(O)=O)(C(F)(F)F)C1=CC=CC=C1 JJYKJUXBWFATTE-UHFFFAOYSA-N 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 101150018444 sub2 gene Proteins 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- GHOKWGTUZJEAQD-ZETCQYMHSA-N (D)-(+)-Pantothenic acid Chemical compound OCC(C)(C)[C@@H](O)C(=O)NCCC(O)=O GHOKWGTUZJEAQD-ZETCQYMHSA-N 0.000 description 1
- 208000006096 Attention Deficit Disorder with Hyperactivity Diseases 0.000 description 1
- 241000283690 Bos taurus Species 0.000 description 1
- 101100372898 Caenorhabditis elegans vha-5 gene Proteins 0.000 description 1
- 108010089790 Eukaryotic Initiation Factor-3 Proteins 0.000 description 1
- 102100033132 Eukaryotic translation initiation factor 3 subunit E Human genes 0.000 description 1
- 102100024383 Integrator complex subunit 10 Human genes 0.000 description 1
- 101710149805 Integrator complex subunit 10 Proteins 0.000 description 1
- 102100024370 Integrator complex subunit 11 Human genes 0.000 description 1
- 101710149806 Integrator complex subunit 11 Proteins 0.000 description 1
- 102100037944 Integrator complex subunit 12 Human genes 0.000 description 1
- 101710149803 Integrator complex subunit 12 Proteins 0.000 description 1
- 102100039131 Integrator complex subunit 5 Human genes 0.000 description 1
- 101710092888 Integrator complex subunit 5 Proteins 0.000 description 1
- 102100030147 Integrator complex subunit 7 Human genes 0.000 description 1
- 101710092890 Integrator complex subunit 7 Proteins 0.000 description 1
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 102100030206 Integrator complex subunit 9 Human genes 0.000 description 1
- 101710092893 Integrator complex subunit 9 Proteins 0.000 description 1
- 241000761456 Nops Species 0.000 description 1
- 101100328360 Schizosaccharomyces pombe (strain 972 / ATCC 24843) clr1 gene Proteins 0.000 description 1
- 102100035701 Serine/arginine-rich splicing factor 10 Human genes 0.000 description 1
- 101710117510 Serine/arginine-rich splicing factor 10 Proteins 0.000 description 1
- 101000888552 Xenopus laevis CLIP-associating protein 1-B Proteins 0.000 description 1
- 239000011324 bead Substances 0.000 description 1
- 210000003888 boundary cell Anatomy 0.000 description 1
- 244000309464 bull Species 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 210000001072 colon Anatomy 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 238000012812 general test Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 108010020615 nociceptin receptor Proteins 0.000 description 1
- 101150083561 nop-1 gene Proteins 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 230000000384 rearing effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 235000002020 sage Nutrition 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/31705—Debugging aspects, e.g. using test circuits for debugging, using dedicated debugging test circuits
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318566—Comparators; Diagnosing the device under test
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
【解決手段】マイクロプロセッサ1は、フェッチ/デコードユニット10a〜cと機能実行単位12、14、16、18に関連のある複数の実行段階を備えた命令実行パイプラインを有している。マイクロプロセッサ1のパイプラインが非保護であることから、命令記憶装置23に記憶されたシステムプログラムコードによって、データメモリ22およびレジスタファイル20へのメモリアクセスの待ち時間が利用できる。エミュレーションユニット50は、無関係な演算の発生等、エミュレーション中にメモリ22〜23や周辺装置60〜61に影響を及ぼすような事態を回避するような方法で演算を行う。
【選択図】図1
Description
さらに、ソフトウェアブレークポイント(SWBP)によって、マイクロプロセッサコードのデバッグとシステム性能評価が行える別の構造が考えられる。SWBPは、プログラムが、停止ポイントの演算コードがメモリ内でソフトウェアブレークポイントの演算コードと交換できる書込み可能記憶装置モジュールにあれば、通常、演算コードの置換によって得られる。大抵のマシンでは、SWBP演算コードが命令実行パイプラインの最初の実行段階に達すると、パイプラインに進行を停止させるか、あるいは、割込みサービスルーチンへトラップさせて、パイプラインが停止もしくはトラップしたことを示すデバッグ状態ビットを設定する。保護パイプラインとして分類されているプロセッサでは、SWBPの後にそのパイプラインにフェッチされた命令は実行されない。一方、すでにそのパイプラインにある命令は、完了させることができる。実行をリスタートするときは、パイプラインをクリアして、演算コードがメモリ内で最初の演算コードに置き換えられた後にSWBPメモリアドレスの演算コードを先取りするだけで、リスタートできる。
VLIW形式命令とは、多重並行演算を符号化する長い固定長命令のことである。VLIWシステムでは、複数の独立した機能単位を使用しており、このような機能単位に複数の独立した命令を発行する代わりに、複数の演算を1つの超長命令語に組み入れている。したがって、VLIWシステムでは、複数の整数演算用のコンピュータ命令、浮動小数点演算、メモリ参照等を、単一の長いVLIW命令内で組み合わせることができる。
通常の演算方法により、プロセッサ命令実行パイプラインのシステムコードを実行する段階と、
プロセッサの通常の演算を停止する段階と、
プロセッサマルチワード命令レジスタ内の一連のデバッグコード命令を実行し、該プロセッサ上でデバッグ動作を行う段階と、
データ処理システム内で無関係な演算が発生しないような方法でプロセッサマルチワード命令レジスタ内のシステムコードの実行を継続する段階と、から成るデータ処理システムをデバッグする方法。
メモリ22とメモリ23は、マイクロプロセッサ1の集積回路の一部として図1に示されており、その範囲がボックス42によって示されている。メモリ22〜23は、マイクロプロセッサ1の集積回路42の外部に配置されてもよく、または、その一部が集積回路42上に、別の一部が集積回路42の外部に配置されてもよい。このような配置は、設計上の選択に関する問題である。実行ユニットの特定の選択や数もまた、設計上の選択の問題であり、本発明にとって重要な問題ではない。
図2に示すように、バス220および221を用いて、制御レジスタファイル102から1台の装置(.S2)の読取りおよび書込みを行うことができる。表2は、この制御レジスタファイルに含まれている制御レジスタの一覧であり、各項目ごとに簡単な説明を付けている。また、各制御レジスタについては、後でより詳しく説明している。各制御レジスタは、MVC命令によってアクセスされる(後述するMVC命令の説明を参照)。
略語 名称 説明
AMR アドレス指定モード 8レジスタのうちの1レジスタ
レジスタ に対して、リニアアドレス指定
と循環アドレス指定のうちのい
ずれを採用するか指定する。ま
た、循環アドレス指定用のサイ
ズを含む。
CSR 制御状態レジスタ 大域割込み許可ビット、キャッ
シュ制御ビット、その他の雑多
な制御ビットおよび状態ビット
を収容している。
IFR 割込み標識レジスタ 割込みの状態を表示する。
ISR 割込み設定レジスタ ユーザがペンディング割込みを
手操作により設定できるように
する。
ICR 割込みクリアレジスタ ユーザがペンディング割込みを
手操作によりクリアできるよう
にする。
IER 割込み許可レジスタ 個々の割込みの許可/禁止を行
えるようにする。
ISTP 割込みサービステーブル 割込みサービステーブルの開始
ポインタ 位置を示す。
IRP 割込みリターンポインタ マスク可能割込みからの復帰に
用いるアドレスを収容する。
NRP マスク不可能割込み マスク不可能割込みからの復帰
リターンポインタ に用いるアドレスを収容する。
IN 汎用入力レジスタ 32入力信号を収容する。
OUT 汎用出力レジスタ 32出力信号を収容する。
PCE1 プログラムカウンタ E1パイプライン段階の実行パ
ケットを含んでいるフェッチパ
ケットのアドレスを収容する。
PDATA 0 プログラムデータアウト 32出力信号を収容し、プログ
ラム空間への書込みを行う際に
STP命令によって用いられる
。
モード 説明
00 リニア修飾(リセット時デフォルト)
01 BK0フィールドを用いた循環アドレス指定
10 BK1フィールドを用いた循環アドレス指定
11 予約済み
ブロックサイズ(バイト単位)=2(1+1)
である。ただし、Nは、BK1またはBK0内の値とする。
表4に、全部で32の想定可能なケースを対象にしたブロックサイズの計算をあげている。
N ブロックサイズ N ブロックサイズ
00000 2 10000 131,072
00001 4 10001 262,144
00010 8 10010 524,288
00011 16 10011 1,048,576
00100 32 10100 2,097,152
00101 64 10101 4,194,304
00110 128 10110 8,388,608
00111 256 10111 16,777,216
01000 512 11000 33,554,432
01001 1?024 11001 67,108,864
01010 2?048 11010 134,217,728
01011 4?096 11011 268,435,456
01100 8?192 11100 536,870,912
01101 16?384 11101 1,073,741,824
01110 32?768 11110 2,147,483,648
01111 65?536 11111 4,294,967,296
および機能)
ビット位置 幅 ビットフィールド名 機能
31〜24 8 CPU ID CPU ID。どのCPUか定
義する。
23〜16 8 Rev ID 修正ID。CPUのシリコン修
正を定義する。
15〜10 6 PWRD 制御パワーダウンモード。値は
常にゼロとして読み取られる。
9 1 SAT この飽和ビットは、任意の装置
が飽和を行うときに設定され、
MVC命令によってのみクリア
することができ、機能単位によ
ってのみ設定することができる
。この設定とクリアが同一のサ
イクルで生じた場合、機能単位
による設定は、(MVC命令に
よる)クリアに優先する。飽和
ビットは、飽和が生じた後の1
全サイクル(1遅延スロット)
に設定される。
8 1 EN エンディアンビット(1=後退
法(リトルエンディアン)、0
=前進法(ビッグエンディアン
))
7〜5 3 PCC プログラムキャッシュ制御モー
ド
4〜2 3 DCC データキャッシュ制御モード
1 1 PGIE 直前のGIE(大域割込みイネ
ーブル)。割込みが取られた場
合GIEをセーブする。
0 1 GIE 大域割込みイネーブル。リセッ
ト割込みとNMI(マスク不可
能割込み)を除くすべての割込
みを許可(1) あるいは禁止(0
)する。
次の表6では、ここで用いられる各種記号について説明している。
記号 意味
int 32ビットレジスタ値
long 40ビットレジスタ値
creg 条件レジスタを指定する3ビットフィールド
cstn nビット定数
LSBn n個の最下位ビット
MSBn n個の最上位ビット
+ 加算
− 減算
x 乗算
+a AMRによって定義されたアドレス指定モードによ
り、2の補数の加算を行う。
−a AMRによって定義されたアドレス指定モードによ
り、2の補数の減算を行う。
and ビット関連論理積
or ビット関連論理和
xor ビット関連排他的論理和
not ビット関連論理補数
by..z ビット列bのビットy〜ビットzの選択
<< 左シフト
>>s 符号拡張による右シフト
>>z ゼロ充てんによる右シフト
x clear b,e b(開始ビット)およびe(終了ビット)により指
定されたx内のフィールドをクリアする。
x exts l,r 1(左シフト値)とr(右シフト値)によって指定
されたx内のフィールドを抜き出して符号拡張を行
う。
x extu l,r 1(左シフト値)とr(右シフト値)によって指定
されたx内の符号なしフィールドを抽出する。
+s オーバーフローまたはアンダーフローが生じた場合
、2の補数の加算を実行し、その結果を結果サイズ
に達するまで飽和状態にする。
−s オーバーフローまたはアンダーフローが生じた場合
、2の補数の減算を実行し、その結果を結果サイズ
に達するまで飽和状態にする。
x set b,e b(開始ビット)およびe(終了ビット)により指
定されたすべての1に対し、x内のフィールドを設
定する。
abs(x) xの絶対値
lmb0(x) xの最左端の0ビット探索
lmb1(x) xの最左端の1ビット探索
norm(x) xの最左端の非冗長符号ビット探索
R 任意の汎用レジスタ
cond cregがゼロに等しいか否かをチェックする。
nop 演算なし。
.L装置 .M装置 .S装置 .D装置
ABS MPY ADD ADD
ADD SMPY ADDK ADDA
AND ADD2 LD mem
CMPEQ AND LD mem
(15ビットオフセット)
(D2のみ)
CMPGT B disp MV
CMPGTU B IRP NEG
CMPLT B NRP ST mem
CMPLTU B reg ST mem
(15ビットオフセット)
(D2のみ)
LMBD CLR SUB
MV EXT SUBA
NEG EXTU ZERO
NORM MVC
NOT MV
OR MVK
SADD MVKH
SAT NEG
SSUB NOT
SUB OR
SUBC SET
XOR SHL
ZERO SHR
SHRU
SSHL
STP(S2のみ)
SUB
SUB2
XOR
ZERO
機能単位
命令 .L装置 .M装置 .S装置 .D装置
ABS n
ADD n n n
ADDA n
ADDK n
ADD2 n
AND n n
B n
B IRP n(S2のみ)
B NRP n(S2のみ)
B reg n(S2のみ)
CLR n
CMPEQ n
CMPGTU n
CMPLT n
CMPLTU n
EXT n
EXTU n
IDLE
LD mem n
LD mem
(15ビット n
オフセット) (D2のみ)
LMBD n
MPY n
MVC n
MV n n n
MVK n
MVKH n
NEG n n n
NOP
NORM n
NOT n n
OR n n
SADD n
SAT n
SET n
SHL n
SHR n
SHRU n
SMPY n
SSHL n
SSUB n
ST mem n
ST mem
(15ビット n
オフセット) (D2のみ)
STP n
SUB n n n
SUBA n
SUBC n
SUB2 n
SW1
XOR n n
ZERO n n n
レジスタファイル
A B
A1:A0 B1:B0
A3:A2 B3:B2
A5:A4 B5:B4
A7:A6 B7:B6
A9:A8 B9:B8
A11:A10 B11:B10
A13:A12 B13:B12
A15:A14 B15:B14
DSPの演算コードマップが、図8A〜図8Jに示されている。表6と、フィールドシンタクスおよび値の解説のため後に記述する命令の説明を参照されたい。
命令は、すべて条件付きにしてもよい。条件は、テスト対象となるレジスタを指定する3ビット(creg)フィールドと、ゼロか否かを判定するためのテストを指定する1ビットフィールド(z)によって制御される。どの演算コードも、4MSB(最上位ビット)が、cregおよびzである。このレジスタは、すべての命令に対するE1パイプライン段階の開始時にテストされる。このパイプラインについては、後に説明する。z=1の場合、このテストは、ゼロに等しいことを確認するために行われる。z=0の場合、テストは、ゼロでないことを確認するために行われる。条件レジスタフィールド(creg)=0およびz=0の場合は、常に真として扱われ、命令を無条件に実行することができる。cregレジスタフィールドは、表10に示すように符号化が行われる。
creg z テスト対象レジスタ
31 30 29 28
0 0 0 0 条件なし
0 0 0 1 予約済み。選択された場合、SWBP命令を
示す。
0 0 1 z B0
0 1 0 z B1
0 1 1 z B2
1 0 0 z A1
1 0 1 z A2
1 1 x x 予約済み
注意: 予約済みの場合、xは、該当項目とは無関係であることを示す。
[B0] ADD .L1 A1,A2,A3
|| [!B0] ADD .L2 B1,B2,B3
両方の命令が並列にスケジュールされている場合、相互排他的な命令は、さらに後述するあらゆる資源の制約に従わなければならない。
相互排他的命令が後述するような任意の資源を共用している場合、片方の命令だけが実行を終了する場合でも、両方の命令を並列にスケジュール(同一の実行パケットに配置)することはできない。
命令の実行は、遅延スロットにより定義することができる。表11は、命令のタイプと、各タイプの命令が有している遅延スロットの数、およびその命令が用いる実行段階を示している。遅延スロットは、ソースオペランドが読み取られてから、結果が取得され読み取られる前にかかる余分なサイクル数に相当する。(ADDのような)単一サイクル型の命令の場合、ソースオペランドがサイクルiで読み取られると、その結果は、サイクルi+1で読み取ることができる。乗算命令(MPY)の場合、ソースオペランドがサイクルiで読み取られると、その結果は、サイクルI+2で読み取ることができる。
命令のタイプ 遅延スロット 使用される実行段階
分岐(分岐先がE1に入った時点 5 E1(分岐先E1)
のサイクル)
E1(分岐先E1)
ロード(LD)(入力データ) 4 E1〜E5
ロード(LD)(アドレス修飾) 0 E1
乗算 1 E1〜E2
単一サイクル 0 E1
記憶(ST)(アドレス修飾) 0 E1
NOP(実行パイプライン無演算) − −
STP(CPU内部結果書込みなし) − −
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ビットパターンは、次のような実行シーケンスとなる。
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
この8個の命令は、順次実行される。
図10Bに示す全並列pビットパターンは、次のような実行シーケンスとなる。
1 A B C D E F G H
この場合、8個の命令は、並列に実行される。
図10Cに示す一部直列pビットパターンは、次のような実行シーケンスとなる。
1 A
2 B
3 C D E
4 F G H
この8個の命令は、順次実行される。
図10Bに示す全並列pビットパターンは、次のような実行シーケンスとなる。
1 A B C D E F G H
この場合、8個の命令は、並列に実行される。
図10Cに示す一部直列pビットパターンは、次のような実行シーケンスとなる。
1 A
2 B
3 C D E
4 F G H
ここで、命令C、D、Eは、同じ機能単位、クロスパス、その他のデータパス等の資源を使用しておらず、同じことが、命令F、G、Hについても言うことができる。
||は、命令が直前の命令と並列に実行されることを示すものである。上記の一部直列の例では、コードが次のように表記される。
命令 B
命令 C
|| 命令 D
|| 命令 E
命令 F
|| 命令 G
|| 命令 H
実行パケットの途中で分岐が発生した場合、低位アドレスの命令は、すべて無視される。一部直列の例では、命令Dのあるアドレスに分岐が発生すると、DとEだけが実行される。命令Cが同じ実行パケットにある場合でも、命令Cは無視される。命令Aおよび命令Bも、分岐前の実行パケットにあることから、やはり無視される。
同じ実行パケット内の2つの命令は、同じ資源を利用できない。さらに、同一サイクルにおいて、同一のレジスタに2つの命令が書込みを行うことはできない。次に、命令が使用可能な資源についてそれぞれ説明する。
同一の機能単位を使用する2つの命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
れている。
|| SHR .S1 A3,A15,A4;/
これに対し、次のような実行パケットは有効である。
ADD .L1 A0,A1,A2;\ 2つの異なる機能単位が使用
されている。
|| SHR .S1 A3,A15,A4;/
クロスパス(1Xおよび2X): 1データパス、1実行パケットにつき1機能単位(.S、.L、または.M)の場合、クロスパス(1Xおよび2X)を介して対向するレジスタファイルからソースオペランドを読み取ることができる。例えば、.S1は、Aレジスタファイルから両方のオペランドを、または、1Xクロスパスを用いてBレジスタファイルから片方のオペランドを読み取ることができる。このことは、装置名の後にXを入れることによって表記される。
AからBとBからAの片方のパスしかないことから、両レジスタファイル間の同じXクロスパスを使用する2つの命令を、同一実行パケットに発行できない。
次のような実行パケットは無効である。
令に対して使用されている
。
|| MPY .M1X A4,B4,A5;/
これに対し、次のような実行パケットは有効である。
ADD .L1X A0,B1,A1;\ 命令が使用するのは、1X
および2Xのクロスパスで
ある。
|| MPY .M2X A4,B4,B2;/
(演算コードマップに示すように)命令フィールドにxビットが設定されている場合、オペランドは、宛先に対向するレジスタファイルから送信される。
ロードおよびストア命令は、片方のレジスタファイルからのロードまたは記憶処理を行いながら、もう一方のレジスタファイルからのアドレスポインタを使用することができる。同一レジスタファイルからのアドレスポインタを使用する2つのロードおよび/またはストア命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
ドレスレジスタ。
|| LDW .D1 *A2,B2 ;/
次のような実行パケットは有効である。
LDW .D1 *A0,A1 ;\ 異なるレジスタファイルからの
アドレスレジスタ。
|| LDW .D2 *B0,B2 ;/
同じレジスタファイルへのロードおよび/またはそのファイルからの記憶処理を行う2つのロードおよび/またはストア命令は、同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
ドおよびそのファイルからの記
憶。
|| STW .D2 A6,*B4 ;/
次のような実行パケットは有効である。
LDW .D1 *A4,B5 ;\ 異なるレジスタファイルヘのロ
ードおよびそのファイルからの
記憶。
|| STW .D2 A6,*B4 ;/
レジスタファイルの各サイドのサイクルごとに、長い演算結果を1つだけ書き込んでもよい。.Sおよび.L装置が長ソースオペランド用読取りレジスタポートと長演算結果用書込みレジスタポートを共用していることから、実行パケットの各サイドにつき1つだけ発行してもよい。
次のような実行パケットは無効である。
ァイルに2つ
の長書込み命
令。
|| SHL .S1 A8,A9,A7:A6 ;/
これに対し、次のような実行パケットは有効である。
ADD .L1 A5:A4,A1,A3:A2 ;\ 各レジスタフ
ァイルに1つ
の長書込み命
令。
|| SHL .S2 B8,B9,B7:B6 ;/
.Lおよび.S装置が、記憶ポートと長読取りポートを共用していることから、長い値を読み取る演算は、ストア命令として、.Lおよび/または.S装置において同じ実行パケットで発行することはできない。
したがって、次のような実行パケットは無効である。
とストア命令
。
|| STW .D1 A8,*A9 ;/
これに対し、次のような実行パケットは有効である。
ADD .L1 A4,A1,A3:A2 ;\ ストア命令に長読取
り演算がない。
|| STW .D1 A8,*A9 ;/
同一レジスタの5つ以上の読取り命令が、同じサイクルにあってはならない。ただし、条件レジスタは、その限りではない。
次のコードシーケンスは無効である。
読取り命令がある。
|| ADD .L1 A1,A1,A5
|| SUB .D1 A1,A2,A3
ただし、次のコードシーケンスは有効である。
MPY .M1 A1,A1,A4 ; A1の4つの読取り命
令にとどまっている。
||[A1] ADD .L1 A0,A1,A5
||SUB .D1 A1,A2,A3
同じレジスタへの書込みを行う待ち時間が異なる命令が別々のサイクルで発行された場合、同一サイクルにおける同一レジスタへの複数の書込みが発生することがある。例えば、サイクルi+1上のADDが後ろに付くサイクルiで発行されたMPYは、どちらの命令も結果をサイクルi+1に書き込むことになることから、同一レジスタへの書き込みはできなくなる。したがって、次のコードシーケンスは無効である。
ADD .L1 A4,A5,A2
表12に、異なる複数の書込みによる矛盾(コンフリクト)を示している。例えば、実行パケットL1のADDとSUBが同じレジスタに書き込まれる場合、矛盾は容易に検出できる。
パケットL2のMPYとパケットL3のADDは、両方とも同時にB2に書き込まれるが、分岐命令により、L2の後の実行パケットがL3以外のパケットになる。これは矛盾ではないであろう。したがって、アセンブラによってL2とL3に矛盾が検出されることはない。L4内の命令は、互いに排他的であることから、書込みの矛盾を引き起こすことはない。逆に、L5の各命令は、互いに排他的であることが明らかでないために、アセンブラは矛盾があるかどうか判断できない。パイプラインがコマンドを受信して同一のレジスタに複数の書込みを行う場合、結果は未定義となる。
L1: ADD .L2 B5, B6, B7 ;検出可能、矛盾有り
|| SUB .S2 B8, B9, B7
L2: MPY .M2 B0, B1, B2 ;\検出性無し
L3: ADD .L2 B3, B4, B2 ;/
L4: [!B0] ADD .L2 B5, B6, B7 ;検出可能、矛盾無し
|| [B0] SUB .S2 B8, B9, B7
L5: [!B1] ADD .L2 B5, B6, B7 ;\検出性無し
|| [B0] SUB .S2 B8, B9, B7 ;/
アドレスモードは、BK0を用いた場合、リニア、循環モード、BK1を用いた場合、循環モードがある。このモードは、アドレスモードレジスタ(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だけ左にシフトして、ワードアクセス、ハーフワードアクセス、またはバイトアクセスを行ってから、加算または減算(指定された演算によって異なる)を実行する。
各命令は、命令構文により表記される。演算コードマップでは、各命令を構成している各種ビットフィールドに分けられている。表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を有している。
パイプライン動作
データアクセスとプログラム取出しのいずれにも、複数段階から成るメモリパイプラインが存在する。これにより、オンチップとオフチップのどちらでも高速の同期メモリを使用することができるうえ、他の命令と並列な分岐によって無限にネスト可能なオーバヘッドゼロのループが可能になる。
パイプラインの実行サイクルでは内部インタロックが全く生じないことから、新規実行パケットは、CPUサイクルごとに実行段階に入る。したがって、特定の入力データを備えた特定のアルゴリズムのCPUサイクル数は、一定である。プログラム実行中にメモリ機能停止が一切起こらなければ、CPUサイクル数は、実行するプログラムのクロックサイクル数に等しくなる。
パフォーマンスは、メモリサブシステムからの機能停止または割込みによってのみ、抑止することができる。メモリ機能停止の理由は、メモリアーキテクチャによって定められる。プログラムを速度に対してどのように最適化すればよいか充分に理解するためには、プログラム取出し、データ記憶、そのプログラムが作製するデータロード要求の並びと、各々がCPUの機能をどのように停止させるのかを理解する必要がある。
パイプライン パイプライン 記号 各段階中の説明 完了した命令
段階 のタイプ
プログラム プログラムア PG フェッチパケット
取出し ドレス生成 のアドレスが決め
られる。
プログラム PS フェッチパケット
アドレス送信 のアドレスがメモ
リに送信される。
プログラムウ PW プログラムメモリ
ェイト アクセスが実効さ
れる。
プログラムデ PR フェッチパケット
ータ受信 がCPU境界にお
いて実行される。
プログラムデ ディスパッチ DP フェッチパケット
コード 内の次の実行パケ
ットが決定された
後、デコードされ
る適切な機能単位
に送信される。
デコード DC 命令が、機能単位
においてデコード
される。
実行 実行1 E1 命令がどのタイプ 単一サイクル
であっても、命令
の条件が評価され
、オペランドが読
み取られる。
ロードおよびスト
ア命令: アドレ
ス生成が計算され
、アドレス修飾が
レジスタファイル
に書き込まれる。
†
分岐命令: PG
段階の分岐フェッ
チパケットに作用
する。
単一サイクル命令
: 結果がレジス
タファイルに書き
込まれる。†
実行2 E2 ロード命令: ア ストア
ドレスがメモリに STP
送信される。†
ストア命令とST
P: アドレスと
データがメモリに
送信される。†
飽和が生じた場合 乗算
、結果を飽和状態
にする単一サイク
ル命令によって、
制御状態レジスタ
(CSR)にSA
Tビットが設定さ
れる。†
乗算命令: 結果
がレジスタファイ
ルに書き込まれる
。†
実行3 E3 データメモリアク
セスが行われる。
飽和が生じた場合
、結果を飽和状態
にする任意の乗算
命令によって、制
御状態レジスタ(
CSR)にSAT
ビットが設定され
る。†
実行4 E4 ロード命令: デ
ータをCPU境界
まで移動させる。
†
実行5 E5 ロード命令: デ ロード
ータをレジスタに
ロードする。*
†:命令の条件が真であると評価されたものとする。これらの条件が偽として評価された場合、E1の後、命令によって結果が書き込まれてパイプライン動作が行われることはない。
命令のパイプライン動作は、表16に示すような7種類に分類できる。また、各命令タイプに対する遅延スロットの一覧が、第2列に示されている。
命令タイプ 遅延スロット 採用される実行段階
分岐(分岐先がE1に入った時点 5 E1(分岐先E1)
のサイクル)
ロード(LD)(入力データ) 4 E1〜E5
ロード(LD)(アドレス修飾) 0 E1
乗算 1 E1〜E2
単一サイクル 0 E1
ストア 0 E1
NOP(実行パイプライン無演算) − −
STP(CPU内部結果書込みな − −
し)
命令の実行は、遅延スロット(表16)により定義することができる。遅延スロットとは、命令の結果が得られない命令の第1実行段階(E1)の後に発生するCPUサイクルのことである。例えば、乗算命令は1遅延スロットを有しているが、このことは、別の命令が乗算命令の結果を使用できるまでに1CPUサイクルあることを意味している。
単一サイクル命令は、パイプラインのE1段階中に実行する。オペランドが読み取られた後、演算が行われ、その結果がレジスタに書き込まれるが、これはすべてE1の間に行われる。この命令には遅延スロットが全くない。
ロード命令の場合、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
図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段階に入るまで、あるいは割込みが生じるまで、継続する。
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値の一覧である。
ビットフィ プログラム データキャ モード名 内容
ールドカウ キャッシュ ッシュコン
ンタ (PCC) トロール
(DCC)
000 PCM DCM キャッシ キャッシュがメモリ
ュマップ へマップされる。た
だし、キャッシュは
、更新されず、(メ
モリへマップされる
場合を除いて)アク
セスされない。タグ
は、自動的に無効に
なるか、あるいは前
後いずれかのフラッ
シュによって無効化
できる(キャッシュ
実装による)。
001 PCFL DCFL キャッシ キャッシュ全体が無
ュフラッ 効化される。キャッ
シュ シュは、アクセスの
ため、バイパスされ
る。キャッシュは更
新もアクセスもされ
ない。
010 PCE DCE キャッシ キャッシュがアクセ
ュイネー スされる。また、キ
ブル ャッシュは、更新さ
れる。
011 PCFR DCFR キャッシ キャッシュは読取り
ュフリー 命令の発行時にアク
ズ セスされる。ただし
、キャッシュは、読
取り命令の発行時に
更新されない。書込
み命令の発行時にキ
ャッシュが更新され
るか無効化されるか
は、特定装置によっ
て異なる。
100 PCB DCB キャッシ キャッシュは、アク
ュバイパ セスされず、また、
ス 読取り命令の発行時
に更新されない。書
込み動作は、キャッ
シュフリーズモード
の場合と同様である
。
101 予約済み 予約済み
110 予約済み 予約済み
111 予約済み 予約済み
CSRのPCCフィールドに値000bがある場合、プログラムメモリは、有効なプログラムメモリ空間としてマップされる。このプログラムメモリマップを形成するアドレスは、装置上のMAP BOOTピンの値によって異なる。
エミュレーション機能
本発明の1態様として、ソフトウェアプログラムの開発、または正確な演算を目的としたDSP1テストを行うために、DSP1の演算をエミュレーションする新規改良技術があげられる。エミュレーションに関係するDSP1の各部分について、以下に詳しく説明している。
テストポートによる実行およびスキャン制御には、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の動作と設計について詳しく説明する。
図16は、メガモジュールリセット動作と関連する信号を示すタイムチャートである。この工程を通じて、イナクティブRDYが、依然としてCPUを停止できる、すなわち、CPUサイクルが複数のクロックサイクルにわたることが可能な点に注意されたい。発生するイベントの並びは、次の通りである。
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は、割込み処理及び割込みサービスルーチンに対するプログラムフローの再処理を開始する。
最高プライオリティ 割込み名
リセット
NMI
INT4
INT5
INT6
INT7
INT8
INT9
INT10
INT11
INT12
INT13
INT14
最低プライオリティ INT15
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からのリターン方法を示している。
B (.S2) NRP ;return,sets NMIE
NOP 5 ;delay slots
以下の状態によって、INT4〜INT15が割込みを開始するのを中止することが出来る。CPUは分岐の遅延スロットにある処理コードにあり、これは誤り状態が原因で実行を終了しない状態分岐を含む状態;割込みイネーブルレジスタ(IER)のNMIEビットが0である状態;IERの対応する割込みイネーブル(IE)ビットが0である状態;制御状態レジスタ(CSR)の全割込みイネーブルビット(GIE)が零である状態である。
割込み処理中では、以前のプログラムを実行し続けるリターンポインタを、割込みリターンポインタレジスタ(IRP)に記憶する。したがって、B IRP割込みは、割込みを行った後にプログラムフローにリターンする。表20は、マスク可能割込みからのリターン方法を示している。
表20.マスク可能割り込みからのリターン方法
B (.S2)IRP ; return,moves PGIE
to GIE
NOP 5; delay slots
IACK信号及びINUM信号は、割込みが発生すると、装置11の外部のハードウェアに警報を送出する。IACK信号は、CPUが割込み処理を開始したことを示す。INUMx信号(INUM0〜INUM3)は、処理を開始する割込み数(IFRのビット位置)を示す。
表21は、装置の7個の割込み制御レジスタをリストとして示している。
略字 名称 説明 レジスタ
アドレス
IFR 割込み標識レジス 割込み状態 00010
タ
ISR 割込みセットレジ IFRの標識を手動でセット 00010
スタ することが出来る。
ICR 割込みクリアレジ IFRの標識を手動でクリア 00011
スタ することが出来る。
IER 割込みイネーブル 割込みをイネーブルすること 00100
レジスタ が出来る。
ISTP 割込みサービス 割込みサービステーブルの開 00101
テーブルポインタ 始に対するポインタ
IRP 割込みリターン マスク可能割込みからのリタ 00110
ポインタ ーンで用いられるリターンア
ドレスを有する。このリター
ンは、B IRP命令によっ
て実行される。
NRP マスク不可能 マスク不可能割込みからのリ 00111
リターンポインタ ターンで用いられるリターン
アドレスを有する。このリタ
ーンは、B NRP命令によ
って実行される。
IFR及びISRはレジスタアドレスを共有する。IFRを読み出すと共にISRを書き込むことが出来る。他のレジスタは独自のアドレスを有する。
割込みイネーブルレジスタ(IER)の対応するビットがセットされた際の割込みは、この割込み処理をトリガすることが出来る。リセットに対するビット0は書き込み不可能であり、常に1として読み出される。リセット割込みは常にイネーブルとなる。なお、リセットをディスエーブルにすることは出来ない。ビットIE4〜IE15を、対応する割込みをイネーブルにし、又は、ディスエーブルにする1又は0として、それぞれ書き込むことが出来る。IERを図17Bに示す。
割込み標識レジスタ(IFR)(図17A参照)は、INT4〜INT15及びNMIの状態を有する。表22は、割込み標識及びそれらの割込み標識に対応する割込みをリストとして作成する。割込み状態をチェックしたい場合、MVC命令を用いてIFRを読み出す。
割込み 説明
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ビットをセットするためにのみ用いることが出来る。
以下のような所定のイベントは、停止又は分析割込みに対するトリガを行うことが出来る。
1)アクティブ状態の特殊エミュレーションイベント(SEE)入力。
2)オンチップアドレスブレークポイント(PABP)。
3)イナクティブ状態からアクティブ状態に遷移するEMU0IN及びEMU1IN入力。
4)浮動小数点リソース衝突(FPXイベント)。
以下のような他の所定のイベントは、分析割込みのみに対するトリガを行うことが出来る。
5)ソフトウェア割込みSWI命令。
6)次のサイクル境界(CYCイベント)。
7)MTAPからのXAINT信号。
以下のような他の所定のイベントは、停止のみに対するトリガを行うことが出来る。
8)SWBPデコード。これは、実行パケットの第1命令のクレッグフィールドがSWBPコード(0001)を含むことを表す。
9)CPUテストポートからの外部停止要求。
イベントは、イネーブルされた場合に、プロセッサの停止された状態に関係なく認識されるだけ十分長くアクティブである必要がある。しかしながら、これらイベントは、複数のイベントを発生させるだけ十分長くアクティブになることが出来ない。エッジ検知回路を、イベント長の時間制限をエミュレートするために用いる。
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をセットする。これは、モニタによる割込みに基づく単一ステッピングに対して用いられる。
分析制御レジスタ(図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はクリアされる。
図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コードシーケンスからのリターンを示す。
表記 SWI
オペランド 演算コードマップ領域 なし
ユニット なし
オペランド なし
説明 この命令は、分析割込み(AINT)に対する割込み待機ビット
(AIP)をセットする。クレッグ及びzフィールドによって、
ソウトウェアブレークポイントをセットするだけであり、状態動
作を行うことが出来ない。
表24.分析リターンポインタに対する分岐
表記 B ARP
オペランド 演算コードマップフィールド なし
ユニット なし
オペランド なし
説明 この命令は、分析割込みリターンポインタ(ARP)の値に対し
て分岐する。
実行 if(cond) ARP>PFC
else NOP
表25.AINTからのリターンに対するコードシーケンス
B .S2 ARP ;return,set AIE
NOP 5 ;delay slots
分析割込みが処理を開始すると、ACR信号のAINTSUSPビットをセットして、任意の将来の分析事象割込み又は停止の認識をディスエーブルする(すなわち、AIPはセットされない)。AINTSUSPは、ユーザ書込みによってのみクリアされる。
再び図18を参照して、他の割込みが存在する際の分析割込みの動作を説明する。以前の実行パケットが、そのDPフェーズで発生する(全ての必要な方法でイネーブルされた)割込みを有する場合、この割込みは延期され、AINTが行われる。したがって、n+4及びn+5が取り消される。n+5へのリターンに応じて、AIPに基づくプログラムアドレスを発生させた任意の状態が再度発生する。
テストポート
再び図15を参照すると、各領域10,321及び331はそれぞれ、ポート310,320及び330を通じてMTAP305にインタフェースする。MTAPは、各領域に対して一つずつ四つのテストポートをサポートアップする。しかしながら、SEA領域に対するテストポートは、メガモジュールに含まれない。テストポートを、領域クロック発生及び実行並びに走査制御を行う一般的なテスト/エミュレーションインタフェースとする。実行制御によって、領域のエミュレーション又はテストソフトウェア直接クロック間制御を行うことが出来る。テストポートインタフェースに対するMTAPを、表26及び表27に更に詳細に示す。SEA領域とMTAPとの間のインタフェースは、同様であり、これを、図34及び図43を参照して詳細に説明する。
信号 説明
SIN テストポート走査データ入力
SOUT テストポート走査データ出力
CPULOCK テストポート同期制御信号
ANALOCK
MMLOCK
LM 機能マスタクロック
LS スレーブクロック
SCLK 走査クロック
DBENB 領域バスイネーブル
テストポートバス 図9〜14参照
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は、これらの信号を主張する際の制限のためには必要とされない。
信号 説明
ATPG_DEVM 表示MTAPはATPGモードにある。
C0/C1 テストポート制御入力0及び1
Ce テストポート拡張制御入力
SHIFT_DR MTAP SHIFT_DR状態。走査チェーンのビッ
トのシフトのイネーブル
UPDATE_DR MTAP UPDATE_DR状態。実際に制御信号を
駆動する任意のシャドーレジスタに対する走査ビットの
書込みのイネーブル。SCTL走査に対するPAUS状
態で用いられるときにテストポートによって使用される
。SDAT走査に対して使用されない。
CAPTURE_DR MTAP CAPTURE_DR状態。走査ビットに対
する任意のシャドーレジスタからの走査ビットの読取り
をイネーブルする。この信号は、機能動作に対するテス
トポートに対して必要でない。しかしながら、これは、
UPDATE_DR機能の動作(の結果を読返し)をテ
ストする必要がない。SCTL走査に対するPAUS状
態で用いられるときにテストポートによって使用される
。SDAT走査に対して使用されない。
SCTL_SEL 制御走査の選択表示
SDAT_SEL データ走査の選択表示。任意のテストポート論理では最
も用いられない。
FCLK_REQ 機能クロック要求。領域に対する任意のOFFREQパ
ワーダウン信号を中止し、かつ、無効にする。
TCLK_SEL TCLKがテストポートの非重畳クロック発生器を駆動
すべきであることの表示。TCLKは、テストポート状
態及びSHIFT_DRに依存してLM又はSCLKを
駆動する。
UCLK_SEL UCLKがテストポートの非重畳クロック発生器を駆動
すべきであることの表示。UCLKは、LMのみを駆動
する。
表28〜32で用いられる種々の用語を以下のように規定する。
ANNUL:実行パケットが特定の経路(パイプライン)段中に取り消される場合、それは、任意のメガモジュール境界ストローブ又は状態をアクティブにセットせずに、ユーザビジブル又はエミュレーションビジブル状態に対して任意の値を書き込む。アドレス及びデータは、ストローブによって制限される必要がある状態信号のようにストローブによって制限されると、状態を変化させることが出来る。非制限状態をイナクティブにセットする必要がある。取消によって、命令が将来の経路段で取り消される。
分析制御レジスタ(ACR):図31Aに示す。
分析データレジスタ(ADR):図31Bに示す。
ACRのPRI割込みプライオリティ制御ビット:表34をもって説明する。
ット
名称 ビット 説明
EPDN 1 XDSによって行われたエミュレー
ション経路停止の取消の実行。CP
UテストポートがFUNCにあると
きにクリアされる。FUNCの外へ
の遷移後、走査によるセットまでク
リアのままにする。
EPUP 1 XDSによって行われたエミュレー
ション経路再開の取消の実行。リセ
ットを含む全ての割込みの実行のデ
ィスエーブル。CPUテストポート
がFUNCにあるときクリアされる
。FUNCの外への遷移後、走査に
よるセットまでクリアのままにする
。
ECTL 1 プログラムフェッチのディスエーブ
ル。RESETを含む割込みの実行
のディスエーブル。信号をディスエ
ーブルするSUSPEND分析イベ
ントの駆動。CPUのXDS制御に
使用される。CPUテストポートが
FUNCにある際にクリアされる。
FUNCの外への遷移後、走査によ
るセットまでクリアのままにする。
EUPL サイクルごとの次のフェッチパケッ
トへのフェッチのみに対するフェッ
チ機構の同期。RESETを含む全
ての割込みの実行のディスエーブル
。走査によってアップロードされた
プログラムに対して使用される。C
PUテストポートがFUNCにある
ときクリアされる。FUNCの外へ
の遷移後、走査によるセットまでク
リアのままにする。
EMU_MVCEN 1 セットの場合、ISR及びICRに
対するMVC命令がAIP及びMS
GIPビットに影響を及ぼす。CP
UテストポートがFUNCにあると
きクリアされる。
ANNUL 1 EPDN及びEPULを取消E1に
セットするとき零を走査する必要が
ある。EPDN及びEPULをクリ
アするときに1を走査する必要があ
る。
ANNUL_ASU 1 EPDN及びEPULを取消E1に
セットするときに零を走査する必要
がある。EPDN及びEPULをク
リアするときに1を走査する必要が
ある。
PDATA_I 256 フェッチパケットを保持するCPU
境界の命令レジスタ。
DATA_I1 2x3 データ入力ポートセーブされたデー
タを、エミュレーション経路再開に
DATA_I2 2 対して走査して、フェッチのセーブ
された実行をデュープリケトする。
CREG_E1_L1 8x4 (DCの終了の際の)E1経路段中
CREG_E1_M1 で保持さCれるようなクレッグ領域
CREG_E1_S1 。SWBP置換に対Cして用いられ
CREG_E1_D1 る。
CREG_E1_L2
CREG_E1_M2
CREG_E1_S2
CREG_E1_D2
CREG_E1_LDST1
CREG_E1_LDST2
PCE1 30 これは、E1の現在の実行パケット
のPCである。PCE1 CPU制
御レジスタと異なる。これは実行パ
ケットである(フェッチパケットア
ドレスでない)
ABP_DET 1 取消が発生する分析イベントが生じ
たことを表す。他のビットと異なり
、このビットは、制御用ではなく、
エミュレータに対する状態用である
。CPUテストポートがFUNCで
あるときクリアされる。これは、M
TAP信号に対するCPU領域でも
ある。
SWBP_DEC 1 SWBPのデコードを表す。他のビ
ットと異なり、このビットは制御用
ではなくエミュレータに対する状態
用である。CPUテストポートがF
UNCであるときクリアされる。こ
れも、MTAP信号に対するCPU
領域である。
名称 I/O ビット 説明
UCLK I 1 クロックを設けたcDSPデザイン。ピ
ン、オンチップ(オフメガモジュール)
PLL、クロック分割論理又はパワーダ
ウン論理から供給することが出来る。
TCLK I 1 クロックを設けたテスト/エミュレーシ
ョン。チップ境界に出力される。
SEE I 1 特殊エミュレーションイベント。ラッチ
されない。テストに対して境界SRLを
必要とする。
EPSIZE 0 3 パケットサイズの実行。DCの実行パケ
ットのサイズ。
FU_L1 0 8x1 機能ユニット使用信号。機能ユニット使
FU_M1 用を表す。
FU_S1
FU_D1
FU_L2
FU_M2
FU_S2
FU_D2
PCDP 0 30 プログラムカウンタディパッチフェーズ
。DPの実行パケットの第1命令のアド
レス。
LOGXOFFD 0 1 チップがDBS,PWRDN及びIAC
Kのようなストローブに関連する全ての
非プログラムメモリを無視する必要があ
ることを表す。この信号は、CPUテス
トポートがHALT,PAUS,SCT
L,SDATにあり、機能的、すなわち
、ATPGテスト中及びリセット中にア
クティブとなる。
LOGCOOFP 0 1 チップがPAS,PDS及びPWSのよ
うなストローブに関連する全てのプログ
ラムメモリを無視する必要があることを
表す。この信号は、CPUテストポート
がHALT,PAUS,SCTL,SD
ATにあり、ATPGテスト中及びリセ
ット中である際にアクティブとなる。
ERDY_DC 0 2x1 取消に対する内部RDYの追跡と共に用
いられる。
SUSPEND 0 1 出力SUSPEND信号
信号 メガモジュール MTAPパルス幅 説明
境界パルス幅
STALL 1クロック 取り消されたCPU。
イナクティブ/ STALL信号によっ
アクティブ て供給される。
IACK 1サイクル 1クロック 割込み肯定。
ICNTX 複数サイクル 割込み処理が原因で割
込みがE1にないこと
を表す。
NOP 1クロック 命令が現在実行されて
アクティブ/ いないことを表す(E
サイクル 1にはNOPが充てん
されている)。これは
、基本的には、1クロ
ック/サイクルのみに
対してアクティブとな
る表29で説明したF
U_**のNORであ
る。
BRTK 1クロック 取り出された分岐。E
アクティブ/ 1のパケットは、取り
サイクル 出された分岐の結果で
ある。
信号 ビット 説明
STRP_DEVM 1 MTAPがSTRAPモード(エミュレーション
又はATPGでない)にあることを表す。
STRM_LD 32 データストリームロードの日付(アップロード機
能)。
STRM_ST 32 データストリーム記憶の日付( ダウンロード機能
)。データストリームモードにない際に、16M
SBは、制御状態レジスタ(CSR)のCPUI
D/修正ID領域を決定する。MTAPは、これ
ら領域の値を決定する個別の16ビット入力を有
する。
STRM_SEL 1 ロード及び記憶経路をデータストリームの必要に
応じて調整する必要があることを表す。
ABP_DET 1 取消を発生させる分析イベントが生じたことを表
す。
SWBP_DEC 1 SWBPのデコードを表す。CPUテストポート
がFUNCにあるときにクリアされる。これも、
MTAP信号に対するCPU領域である。
MSGFLG 1 ACRのMSGFLGの状態。
AINT_TKN 1 AINTが行われたことを表す。IACKと同時
に発生する。
MINT_TKN 1 MSGINTが行われたことを表す。IACKと
同時に発生する。
RST_TKN 1 リセットが行われたことを表す。IACKと同時
に発生する。
AINT_EN 1 受信の際にAINTを行うことが出来ることを表
す。PRI=0のとき、NMIE,GIE及びA
IEを全て1にする必要がある。PRI=1のと
きにAIEを1にする必要がある。
MINT_EN 1 受信の際にMSGINTを行うことが出来ること
を表す。GIE及びMSGIEを1にする必要が
ある。
CPU_EMUC 1 EMU(O/I)境界ピンのユーザ形態に対する
ACRからの4ビット信号
信号 説明
EMU_DEVM MTAPがエミュレーションモードであることを表す
。CPU_DONEの発生時に用いられる。
CPU_DONE CPUが取り消されることを表す。この信号は、テス
トポートがFUNC状態であるときにイナクティブと
なる。取消の後のみアクティブとなる。この信号を、
メガモジュール領域で発生させる。その理由は、それ
がRDYで変化するように応答する必要があるからで
ある。
EMU(0/1)IN 取消又は分析割込みをトリガする1クロックパルスを
発生させることが出来る。MTAPは、EMU(0/
1)メガモジュール入力に基づいてこの信号を発生さ
せることが出来る。
MSGSW ACRのMSGSWビットによって指導される際に1
クロックパルスを搬送することが出来る。これは1ク
ロックである(1サイクルでない)ため、この信号を
メガモジュール領域で発生させる。
XAINT 分析割込み(AINT)のトリガを行う。
MSGINT メッセージ割込み(MSGINT)のトリガを行う。
図22は、テストポートが存在することが出来る種々の状態の状態図である。MTAP信号C0,C1,及びCe並びにLOCK信号(表26)のセットは、表33で説明すると共に図22に図示したようにテストポートの状態を決定する。各テストポート310,320及び330は、MTAP(図15)からの互いに依存しないロック信号を有する。アクティブロック信号によって、現在の状態を、ロック信号がイナクティブになるまでテストポート内にラッチする。テストポートがロックされない場合に、テストポートバスがテストポートの状態を決定する。テストポートがロックされた際に、信号がテストポートバス上で変化し、クロック切換えが無視される。領域がロックされる場合、その走査モジュールは、チェーンに加えられれず、テストポートの共有シフトレジスタ(SSR)ビットを通じてバイパスされる。LOCK信号は、装置の現在のクロック発生モードをロックする。
テストポートが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に入るようにする。
ここで、クロック切換えの動作を説明するタイミング図である図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状態からの遷移を同時に行うことが出来ることである。
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に対して詳細に説明する。
データ走査動作(SDAT)は、SSR走査経路を通じた領域走査経路に対するアクセスを提供する。データ走査中、領域データは、SSR経路を通じて走査される。SSRビットは、MSENBビットとして制御されるようなバイパスである領域走査経路に対するバイパスビットとして作用する。SSR経路はSDAT状態によって選択される。データは、MTAPがSHIFT_DRを主張すると共に、テストポートがSDAT状態にある間にSSR経路で走査される。SSRに関連するMSENBがイネーブルされると、データは、領域走査経路を通じてSSRビットから走査される。MSENBビットがディスエーブルされる場合、データは、次のSSRビットに対して走査される。各領域は少なくとも一つのSDAT経路を有する。SDAT経路は、テスト及びエミュレーションに対して要求されるSRLに対するアクセスを提供する。UPDATE_DR信号及びCAPTURE_DR信号は、走査データ動作には用いられない。
パワーダウンの三つの方法は、以下のようにして集積回路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がパワーダウンする間に必要に応じて他の全ての素子を停止させるようにする。
信号 I/O 説明
PDREQ メガモジュール入力 CPU及び分析テストポートに対
するOFFREQの駆動
PDACK メガモジュール出力 CPU及び分析テストポートに対
するOFFACKのAND
OFFREQ テストポート入力 テストポートがイナクティブFC
LK_REQを受信すると、領域
に対する全てのクロックを遮断す
ると共に、OFFACKがアクテ
ィブであることを主張する。
OFFACK テストポート出力 テストポートがOFFREQに対
するLM遮断キューを有すること
を表す。
EIP_SET メガモジュール出力 (全ての必要なIE,GIE,N
MIE,PRI及びAIE状態に
よって)イネーブルされた割込み
を表す。
IP_SET メガモジュール出力 IPビットがセットされたことを
表す。
分析領域:分析データレジスタ(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テストポートとの間の信号を規定する。
名称 説明
EMURDY エミュレーション論理及びテストポート制御からの内部
RDY成分
CPU_RDY (メガモジュール入力からの)内部RDYへのEMUR
DYの追加を表す。CPU_RDYによって、全てのC
PU領域のSRLが次のクロック中に状態を維持するよ
うにする必要がある。
CPU_STATE CPUテストポート状態。
図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に示すように、以下の動作が発生する。
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信号を発生することが出来る。
停止の副次的な影響は、経路を通じた関連の実行パケットの進行に依存する。したがって、複数サイクル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にロードするように許容される。
ディスエーブルされた割込み:リセットを含む全ての割込みの実行はディスエーブルされる。ペンディングビットをセットし続ける。
エミュレーションパイプアップ(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に走査して動作を中止する。
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によってディスエーブルされたままである。
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_DEC SRLが、デコードされたSWBPによってセットされる。XDSは状態としてSWBP_DEC(図20)を使用する。伝送路のSWBPを適切なクレッグ領域に置換すると、XDSはSWBP_DEC SRLをクリアして、他のSWBPをデコードすることが出来る。本発明の他の態様によれば、デバッグ機能を、ソフトウェアブレークポイント命令に応答して実行し、通常の伝送路の動作を、SWBPに変換される命令を再フェッチすることなく再開する。好適には、追加の記憶サイクルは、図1のデータ処理システムで実行されない。
イベントを、種々のテストポート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領域が停止された後にのみ停止する必要がある。
図31Aは、エミュレーション及び分析用の制御及び状態ビットを有するACR390を説明する。状態ビットは、停止又は分析割込みを発生させず、単に、イベントが保留されない間に発生したイベントを反映するのみである。これらが発生すると(イネーブルされた場合)、実際のイベントそれ自体は、停止をトリガし、又はAIPをセットする中止割込みを示す。また、リセットは、CPUテストポートがFUNC状態にある場合にACRを、そのリセット値に設定するのみである。例外は、常にCPUテストポート状態に関係なくリセットされるRSTOCCである。表36は、各ACRビット領域(フィールド)の機能を説明する。
名称 機能
STRAP STRAP=0は、モニタプログラムに対するXDS
の存在を表す。これは、MTAP16からSTRP_
DEVMによって供給される。記憶は要求されない。
A
FUNC 分析テストポートがFUNC状態にあるときに1であ
る。これ以外では0である。記憶は要求されない。
PRI PRI=1の場合、AINTは、最高プライオリティ
(非リセット)割込みであり、GIE又はNMIEを
通じてマスク不可能である。AIEは全ての非リセッ
ト割込みをディスエーブルする。
PRI=0の場合、AINTは最低プライオリティ割
込みであり、GIE又はNMIEを通じてマスク可能
である。AIEはAINTのみディスエーブルする。
AINTSUSP ORターム中の一つをSUSPENDにする。分析割
込みによるAINTSUSPの自動的な書込みは、ユ
ーザ書込みを越えるプライオリティを有する。
RSTOCC− 発生したリセット。リセット割込みを行うことによっ
て0にセットする。1のユーザ書込みによってセット
することが出来る。0の書込みは影響を及ぼさない。
ACRWE ACR書込みイネーブル。ACRの他の全ての他のビ
ットは、ACRWE=1の場合、MVC書込みによっ
てのみ影響が及ぼされる。AINT又はMSGINT
を行うことによって自動的に1にセットする。また、
ユーザによって0又は1として書き込むことが出来る
。
MSGSW 1の書込みは、1クロックパルスをCPU境界のMS
GSW出力に送信する。このビットは、記憶を行わな
いで0として読み出される。パルスを、(1サイクル
でない)1クロックとしてメガモジュール領域に発生
させる。
MSGFLG MSGFLG信号の状態をMTAPにセットする。
MSGERR 1は、分析走査が進行する間(MVCを通じて)発生
したADRの最後のCPU読出し又は書込みを示す。
連続的な読出し又は書込みによって0にセットする。
それ以外では0。
CPU_EMUC MTAPを送信して、メガモジュール境界のEMUO
/Iピンの機能を構成する。
EVENT この領域は、どのイベントを分析イベント(EMU0
IN,EMU1IN,SEE,PABP,CYC,X
AINT及びFPX)によって発生させるかを支配す
る。それに加えて、イベント領域を、認識すべきSW
Iに対して10にセットする必要がある。
00−ディスエーブルにトリガする分析イベント。
01−ディスエーブルにトリガする分析イベント。ユ
ーザは、ディスエーブルされたACRを書き込む。
10−AINTをトリガするためにイネーブルされた
分析イベント。
11−停止をトリガするためにイネーブルされた分析
イベント。この場合は停止及び割込みをトリガしない
XAINT及びCYCを除く。XDSが存在する(S
TRAP=0)の場合、停止はイネーブルされるだけ
である。これも、ACRに対するユーザ書込みをディ
スエーブルする。
SWI_EVT 1の値は、AIPがSWIによってセットされたこと
を表す。0の書込みによってクリアされる。1の書込
みによって影響が及ぼされない。イベントが再び発生
するまで再度セットされない。自動的な書込みは、ユ
ーザ書込みより上のプライオリティを有する。このビ
ットは、AINTが行われるまでセットされない。
XAINT_EVT 1に対する値は、AIPがXAINTによってセット
されたことを示す。0の書込みによってクリアされる
。1の書込みによって影響を及ぼさない。再びイベン
トが発生するまでセットされない。自動的な書込みは
ユーザ書込みより上のプライオリティを有する。EE
S領域(表37参照)。
EMUOIN EES EMU0INイベントイネーブル及び状態。イベント
は、イナクティブによってEMU0IN入力のアクテ
ィブ遷移にセットする。
EMU1IN EMU1INイベントイネーブル及び状態。イベント
は、ESSイナクティブによってEMU1IN入力の
アクティブ遷移にセットする。
SE EES SEイベントイネーブル及び状態。イベントは、イナ
クティブによってSEE入力のアクティブ遷移にセッ
トする。
CYC EES サイクルイベントイネーブル及び状態。イネーブルさ
れた場合、イベントは、B ARPのターゲットがE
1を終了した後次のサイクル境界上でセットする。
PABP EES プログラムアドレスブレークポイントイベントイネー
ブル及び状態。イベントは、プログラムアドレスブレ
ークポイント整合によってセットする。
FPX EES 浮動小数点衝突イベントイネーブル及び状態。イベン
トは、5章で説明した浮動小数点リソース衝突中の任
意のものによってセットする。メガモジュールがこれ
ら衝突に出会うことになる(すなわち、2重精度の浮
動少数点をサポートする)場合のみ実行される。それ
以外の場合では保留されると共に、0として読み出さ
れる。
reserved 0として読み出される。
16STRP_DEVM(=0)を、エミュレーションの存在を表すためにEMU_DEVM(=1)の代わりに使用し、その結果、このビットを、ユーザ及びこれらの間の任意のテストモードによって通常の動作で評価することが出来る。
ビット領域 ビット領域 読出し値
0 イネーブル 1にセットする場合、分析イベントをイネーブル
にする。
1 状態 イベントが発生した場合には1。MVCがこのビ
ットに0を書き込むとイベントをクリアする。M
VCの1の書込みは影響を及ぼさない。自動的な
書込みはプライオリティを有する。
図31Bは、分析データレジスタ(ADR)391を説明する。ADRの最初から30ビットを、伝送路フェーズ(パイプライン段)DCのプログラムアドレスとの比較に用いて、プログラムアドレスブレークポイントを発生させる。このレジスタは、分析領域にあり、メッセージ通過に用いる。分析走査中のこのレジスタの読出しは、Oをリターンし、ACRのMSGERRビットをセットする。分析走査中の書込みに影響を及ぼさず、MSGERRビットをセットする。他の任意の読出し又は書込みはMSGERRビットをクリアする。
メモリアクセスサポート
マイクロプロセッサ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への)データメモリアップロード。
フェッチを防止するために、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のような種々の命令の組合せを並列処理で実行して、オーバヘッド時間を最小にすることが出来る。
MVC S2 STREAM B1
‖ STW .D2 B1, *B0++
MVC .S2 STREAM, B1
‖ STW .D2 B1, *B0++
MVC .S2 STREAM, B1
‖ STW .D2 B1, *B0++
MVC .S2 STREAM, B1
‖ STW .D2 B1, *B0++
表39.データストリームデータダウンロード(データポート1)に対するフェ ッチパケット
MVC .S2 STREAM B1
‖ MVC .L1X B1, A1
‖ STW .D1 A1, *A0++
‖ NOP
MVC .S2 STREAM, B1
‖ MVC .L1X B1, A1
‖ STW .D1 A1, *A0++
‖ NOP
表40.データストリームデータアップロード(データポート2)に対するフェ ッチパケット
MVC .S2 B1, STREAM
‖ LDW .D2 *B0++, B1
MVC .S2 B1, STREAM
‖ LDW .D2 *B0++, B1
MVC .S2 B1, STREAM
‖ LDW .D2 *B0++ B1
MVC .S2 B1, STREAM
‖ LDW .D2 *B0++ B1
表41.データストリームデータアップロード(データポート1)に対するフェ ッチパケット
MVC .S2X A1, STREAM
‖ LDW .D1 *A0++ A1
MVC .S2X A1, STREAM
‖ LDW .D1 *A0++ A1
MVC .S2X A1, STREAM
‖ LDW .D1 *A0++ A1
MVC .S2X A1, STREAM
‖ LDW .D1 *A0++ A1
表42.データストリームプログラムダウンロードに対するフェッチパケット
ADDAW .D2 B0 1, B0
‖ STP .S2 *B0
ADDAW .D2 B0 1, B0
‖ STP .S2 *B0
ADDAW .D2 B0 1, B0
‖ STP .S2 *B0
ADDAW .D2 B0 1, B0
‖ STP .S2 *B0
以下のことを許容する制御状態レジスタ(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(ロード)の命令の結果。
モニタに基づくデバッガにおいて、プログラマは単一割当てを用いる必要がある。また、全ての命令を順に実行するために明らかにする必要がある。
CPU状態と異なり、記憶状態は、記憶の終了を向上させることを許容する。図33において、実行パケットc−eの記憶が終了する。したがって、(全ての走査が終了した後に更新される)記憶表示は、CPUの前の3サイクルとなる。これが4遅延スロットを有するロードに一致しないような場合にも、プログラマは、ロード値がロード命令を通じてステップする直前の表示に表れた値であると認識する必要がある。全てのアクセスがCPU境界に順に表れるので、記憶表示は自己矛盾しない。
リアルタイムデバッグ:モニタモード:リアルタイムデバッグは、マイクロプロセッサ1がユーザコードを実行する間ユーザに対して可視できるようにする。変数を表示すると共に、アッセンブリ及びハイレベル言語(HLL)の観点から両者を変更することが出来る。このリアルタイムデバッグそれ自体は、エミュレーション論理に依存しない。通常、デバックモニタは、バックグランドタスク又は、より高いプライオリティの割込みによって駆動されるリアルタイムタスクの存在で実行する非常に低いレベルの割込みサービスルーチンである。モニタは、デバッガが存在するホストと通信する。最低レベルのデバッガはメモリを要求することができ、レジスタは読出し及び修正動作を行う。通信は、シリアルポートのような周辺装置、共有メモリ、又は(ADRのような)専用のメッセージ通過ハードウェアを通じて発生することが出来る。モニタコードの発展を考察すると、
コードサイズ:モニタコードサイズを最小にする必要がある。
パフォーマンス:モニタコードは、十分なユーザアクセス可能性を提供するように十分高速に実行する必要がある。
単一ステッピング:デバッガでは2タイプのステッピングを実行する。
1.ハイレベル言語のステッピングステートメント。
2.サイクル間に基づくステッピング実行パケット。
伝送路の可視性がCPUのプログラミングに重要であるので、デバッガは命令ステッピング(命令のE1からE5までの全ての方法の命令のステッピング)をサポートする必要がない。代わりに、ステップ機構によって、全ての状態が単一伝送路フェーズを継続できるのみである。
エミュレーション停止の後、実行パケットステッピングは、一部再開(図30)に続く停止伝送路走査シーケンス(図28)によって実行される。特に、再開は、1サイクルを継続するように許容される。その後、エミュレーション停止シーケンスはそのまま全部が再度発生する。
1)HLLコンパイラは、順番に終了する意外な結果(side−effects)を発生させるコードを発生させることが出来る。しかしながら、これは、高性能コードを達成することを思い切って禁止する。また、この制限は、順番通りでない実行が許容されるときにのみ発生する問題がある。
2)XDSは、複数の停止を実行することが出来ると共に、特別なHLLステートメントの結果を隔離することが出来るように走査する。オブジェクトのデバッグ情報を嵌め込む新たな方法を発展させて、この方法を容易にする必要がある。それに加えて、(アッセンブリ及びHLLの両方の)混合モードディスプレイにおいて、どのアッセンブリ命令がディスプレイに見えるような伝送路のどのフェーズを終了するかを示す方法を発展させる必要がある。この方法の不都合は、ユーザが新たな記憶位置又は表示用の記号値を要求することが出来ないおそれである。このような情報は既に消失している。その理由は、その値が有効であるときを超えて一部の処理を実行した場合があるためである。両解決は、この章の現在のエミュレーションの記載を用いると実現可能である。
プログラムメモリのSWI命令の適切な命令へのソフトウェア置換を、ユーザのモニタプログラムによって行う。割込みがイネーブルされると共に、SWIが、割込みを中止する最高のプライオリティである場合、これはSWIがDCにあるときに行われる。より高いプライオリティの割込みがある場合、SWIは、割込みからのリターンに応答して再度フェッチされる。したがって、再度出会うことになる。SWI−認識は、この認識が取り出された分岐の遅延スロットに存在することによって、すなわち、AINTがイネーブルされない場合に延期される。
メガモジュールテストアクセスポート(MTAP)
再び図15を参照すると、メガモジュールテストアクセスポート(MTAP)305がIEEE1149.1規格テストアクセスポートの機能の部分集合をサポートする。メガモジュール300のMTAPはマイクロプロセッサ1のピンを直接ドライブしないので、境界スキャンをサポートする必要はない。MTAP305は1149.1対応JTAG状態マシンと、遠隔ホスト51のスキャン制御装置とメガモジュール領域テストポート(DTP)310、320および330との間の通信を提供する。JTAGインターフェースに加えて、MTAP305は、前節で論じたように、テストサポート、DTPの自動実行制御、性能上の大きな利点を提供するデータ・ストリーム制御機構、マイクロプロセッサエミュレーションのサポートおよび性能の解析を提供する。MTAP305のテスト機能セットはプロダクション自動テストパターン発生(ATPG)パターンの適用をサポートする。機能テストパターンはエミュレーション能力を使用してロード、実行およびデバッグできる。
実時間エミュレーションサポートは、プロセッサが割込みおよび多重タスクを引き続きサービスしている間プログラマモデルの実行制御と可視性を提供する。実時間サポートはまたアプリケーションによるデバッガを通じてもアクセス可能であり、遠隔テスト/エミュレーション制御装置に接続しない組込型解析機能の使用を含む。
メガモジュール(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)の急速な初期化を保証するために提供される。
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−0xlFがJTAG特定の使用のために予約される。これらの演算コードに関連するスキャンパスおよびコマンドはIEEE1149.1仕様書に定義されている。この演算コード空間は現時点では部分的にのみ定義され、このグループの定義されない演算コードはすべて将来の使用のために予約される。ここでこのグループの任意の演算コードを公衆演算コードと呼ぶ。
0x20−0x2Fの中の演算コードはデータスキャンパスを選択するためにエミュレーションおよびテストコマンドとして定義される。JTAG状態マシンがJTAG SHIFT_DR状態(選択されたデータレジスタをシフト)にあるとき、演算コードはデータスキャンパス選択として利用される。JTAG状態マシンがJTAG IDLE状態にあるときは同じ演算コードがコマンドとして利用される。JTAG状態をDTP制御状態にマップするテストモードでは、JTAG演算コードはまた制御コードをDTPに直接適用するためにも利用される。演算コードのこうした3つの使用法の各々は互いに分断されている。この文書はそれらを独立して論じる。
公衆または専用スキャンパスが表43で簡単に説明される。
表43.公衆および専用スキャンパス
JTAG_IR JTAG命令レジスタ。命令レジスタ演算コードはデー
タスキャンパスを選択するか、またはコマンドを指定す
る。
BYPASS データバイパスレジスタ。この1ビットレジスタは明示
データパスがJTAG IR演算コードによって選択
されないときデフォールトスキャンパスを提供するため
に使用される。
ECR エミュレーション制御レジスタ。このレジスタはメガモ
ジュールクロック設定の選択、メガモジュールモード(
エミュレーションまたはテスト)の選択およびDTPの
プログラマブル制御を提供するために利用される。
DTP_SCTL DTPスキャン制御レジスタ。このレジスタはDTPモ
ジュールスキャンイネーブルビット(MSENB)を保
持するために使用される。MSENBビットはすべての
DTPデータモジュールに対して存在する。MSENB
ビットを1にセットすると、モジュールのDTPがアン
ロックされDTP_DATAパスがスキャンされるとき
(SHIFT−DR)関連するDTPデータがDTP_
DATAスキャンパスに追加される。
DTP_SDAT DTPスキャンデータ。このスキャンパスはすべてのD
TPのスキャンモジュールへのアクセスを提供する。こ
のパスには各DTP内のすべてのスキャンモジュールへ
のモジュールバイパスビットが含まれる。DTPスキャ
ンモジュールは、モジュールのDTPがアンロックされ
モジュールのMSENBビットが設定される場合それら
のバイパスビットの後DTP_SDATスキャンパスに
対してイネーブルである。別言すれば、このパスの長さ
は現在ロックされていない領域に設定されたMSENB
ビットの数によって変化する。それらの領域がアンロッ
クされそれらのMSENBビットがDTPスキャン制御
レジスタに設定されるならば、1からすべてのDTPス
キャンモジュールが同時に追加される。DTP_SDA
Tパスのスキャンを試みる前に、DTPモジュールがス
キャンされるすべての領域についてMTAP305を使
用してクロックをUCLKからTCLKに切換えなけれ
ばならない。このパスに関連する専用スキャンの考察に
ついては10.2.6節を参照されたい。
EVT_CNTR イベントカウンタ。このスキャンパスにはすべてのMT
AP305のカウンタのSRLが含まれる。
DATA_STRM データストリーム。このスキャンパスはデータストリー
ムスキャン操作をサポートする。
SEA_SCTL SE解析スキャン制御レジスタ。このレジスタはSE解
析DTPのモジュールスキャンイネーブルビット(MS
ENB)を保持するために使用される。SEのMSEN
BレジスタはメガモジュールDTPのMSENBレジス
タと同一である。
SEA_SDAT SE解析スキャンデータレジスタ。このスキャンパスは
SE解析DTPのスキャンモジュールへのアクセスを提
供する。SEのDTPサポートはメガモジュールDTP
と同一である。
さらに図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状態を通じて遷移するとき選択されたデータスキャンパスとキャプチャおよびアップデートされたレジスタはJTAG IR中のコマンドに依存する。データを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は各スキャンパスへの要求の詳細を示す。
IR JTAG SCAN DR CAPTURE、 パスの
CHAIN UPDATE、 説明
SHIFT パス選択
SCTL_HALT DTP_SCTL SCTL_SEL DTP MODULE SCAN ENABLE
SCTL_CNTL DTP_SCTL SCTL_SEL DTP MODULE SCAN ENABLE
SDAT_HALT DTP_SDAT SDAT_SEL DPT MODULE DATA SCAN
SDAT_CNTL DTP_SDAT SDAT_SEL DTP MODULE DATA SCAN
SECR ECR SECR_SEL DIRECT ECT レジスタ
SEVT_CNTR EVT_CNTR SCTR_SEL DIRECT EVENT COUNTER
SDAT_STRM DATA _STRM STRM_SEL DIRECT MEGAMODULE EDDATA2
SEA _CNTL SEA_SCTL SECT_SEL SE DTP MODULESCAN ENABLE
SEA _DATA SEA_SDAT SEDT_SEL SE DTP DATA SCAN
選択信号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の影ビットに転送するために使用される。
図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を参照されたい。
STRAP ストラップ装置モジュール。このビットはECRの装
置モードビットから設定される。設定されるとメガモ
ジュールがストラップモードにあることを表示する。
このビットはモードが(エミュレーションまたはテス
トからストラップに)不意に切換えられているかどう
か判断するために使用される。
TCLK_SEL 選択されたテストクロック。このビットは1のとき、
テストクロック(TCLK)がすべてのアンロック領
域に切換えられていることを示す。TCLKがイネー
ブルのとき、アンロック領域はTCLKレートでデー
タスキャンを行える状態にあり(スキャンクロック切
換は後で説明される)、かつ/またはTCLKレート
で機能クロックを動作させている。TCLK_SEL
ステータスビットの状態はラッチされ、クロックの切
換が完了するまで(SWINPROGがイナクティブ
)修正されない。
IRBUSY 命令レジスタが使用中。このビットはJTAGインタ
ーフェースが他の演算で使用中であることを示す(詳
細は10.2.4節を参照)。JTAG IRは影付
きなので、IRはスキャンできるが(SHIFT_I
R)IRBUSYビットがクリアされるまでアップデ
ート(UPDATE_IR)できない。このビットは
JTAG TLR状態の後論理0状態であり、MTA
Pコマンドが出されるまで0のままである。
SYNC_ERR 同期スキャンエラー。このビットは、MTAP305
モジュールがスキャンが開始できない状態にあるとき
データスキャンが試行されたことを示す。スキャンは
中止されクロックは切換えられない。このビットはス
キャンとCSMスティミュラスの両方をブロックする
。このステータスビットはECRをロックすることに
よって消去される。
DONE_TGLE 実行済みトグル。このビットは、最後のIR 停止ス
テータススキャン以来CPU_DONEがイナクティ
ブ状態からアクティブになったことを示す。CPU_
DONE信号の立上がりがDONE_TGLE SR
Lによってキャプチャされる。停止ステータスが選択
されるとDONE_TGLE信号はCAPTURE_
IR JTAG状態の間IRシフトレジスタにロード
され消去される。
RST_TGLE リセットトグル。このステータスビットは最後のIR
エラーステータススキャン以来RST_TKNがイナ
クティブ状態からアクティブになったことを示す。R
ST_TKN信号の立上がりがRST_TGLE S
RLによってキャプチャされる。エラーステータスが
選択されると、RST_TGLE信号はCAPTUR
E_IR JTAG状態の間IRシフトレジスタにロ
ードされ、RST_TGLE SRLは消去される。
MINT_TGLE メッセージ割込みトグル。このステータスビットは、
最後のIR実時間ステータススキャン以来MINT_
TKNがイナクティブ状態からアクティブになったこ
とを示す。MINT_TKN信号の立上がりがMIN
T_TGLE SRLによってキャプチャされる。実
時間ステータスが選択されると、MINT_TGLE
信号はCAPTURE_IR JTAG状態の間IR
シフトレジスタにロードされ、MINT_TGLE
SRLは消去される。
AINT_TGLE 解析割込みトグル。このステータスビットは最後のI
R実時間ステータススキャン以来AINT_TKNが
イナクティブ状態からアクティブになったことを示す
。AINT_TKN信号の立上がりがAINT_TG
LE SRLによってキャプチャされる。実時間ステ
ータスが選択されると、AINT_TGLE信号はC
APTURE_IR JTAG状態の間IRシフトレ
ジスタにロードされ、AINT_TGLE SRLは
消去される。
MSGSW_TGLE メッセージ切換トグル。このステータスビットは最後
のIR実時間ステータススキャン以来MSGSWがイ
ナクティブ状態からアクティブになったことを示す。
MSGSW信号の立上がりがMSGSW_TGLE
SRLによってキャプチャされる。実時間ステータス
が選択されると、MSGSW_TGLE信号はCAP
TURE_IR JTAG状態の間IRシフトレジス
タにロードされ、MSGSW_TGLE SRLは消
去される。
STRY_TGLE ストリーム準備エラートグル。STRY_TGLE
SRLは前のJTAGコマンドがSDAT_STRM
コマンドのときのみ設定できる。
STRY_TGLE SRLはCPU_DONEがM
TAPカウンタのXFER_DATA信号の立上がり
でアクティブでないとき設定される。この条件は、前
のld/stがCPUのEDDATA1レジスタとの
次のデータ転送に先立って進められないことを示す。
エミュレーションエラーステータスが選択されると、
STRY_TGLE信号はCAPTURE_IR J
TAG状態の間IRシフトレジスタにロードされ、S
TRY_TGLE SRLは消去される。
STSW_TGLE ストリーム切換エラートグル。STSW_TGLE
SRLは前のJTAGコマンドがSDAT_STRM
コマンドのときのみ設定できる。STSW_TGLE
SRLはECRのTERMフィールドのMPSDコ
ードがMTAPカウンタのXFER_DATA信号の
立上がりのMPSDバスをドライブしないとき設定さ
れる。この条件はUSLKがTCLKとの関係でゆっ
くり動作し、データストリーム機能をサポートしない
ことを示す。エミュレーションエラーステータスが選
択されると、STSW_TGLE信号はCAPTUR
E_IR JTAG状態の間IRシフトレジスタにロ
ードされ、STSW_TGLE SRLは消去される
。
CSM_EXE CSM EXE状態。コード状態マシンEXE状態ビ
ット(EXE状態がCSMの出力に適用される場合1
)。詳細は図39参照。
CSM_LOCK CSMロック状態。コード状態マシンLOCK状態ビ
ット。詳細は図39参照。
C1、C0、Ce CSM出力。このフィールドはDTPに適用されたD
SM MPSDコードである。詳細は図39参照。
1)CAPTURE_DRおよびUPDATE_DR JTAG状態と組み合わせて使用されるSHIFT_DR JTAG状態と制御論理のためのスキャンパスの選択。
2)専用演算コードがJTAG IRにあり、JTAG状態マシンがJTAG IDLE状態に遷移するとき発生する専用コマンドの処置の決定。
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に関して後で論じられる。
コード 説明
0xFF BYPASS。この命令はバイパススキャンパスをイネーブルにす
る。このパスは単一シフトレジスタ段階である。これは必要なJT
AG公衆演算コードであり、JTAG IEEE1149.1仕様
の7.4節に包含される。
0x20 SDAT_HALT。この命令はDTP_SDATスキャンパスを
選択する。DTP_SDATスキャンパスに関する特殊スキャンの
考察に関しては、「MTAP MPSDコード発生器」に関する後
の節を参照されたい。この演算コードに関連するコマンドは、エミ
ュレーション制御レジスタ(ECR)のEXEビットフィールドか
らプレロードされたMPSDコード値を使用して、開始MPSDコ
ード発生シーケンスをMTAP305のコード状態マシン(CSM
)に発行する。追加機能はテストモードで提供される。
0x21 SDAT_CNTL。この命令はDTP_SDATスキャンパスを
選択する。DTP_SDATスキャンパスに関する特殊スキャンの
考察に関してはMTAP MPSDコード発生器に関する後の節を
参照されたい。この演算コードに関連するコマンドは、エミュレー
ション制御レジスタ(ECR)のTERMビットフィールドからプ
レロードされたMPSDコード値を使用して、開始MPSDコード
発生シーケンスをMTAP305のコード状態マシン(CSM)に
発行する。
0x22 SCTL_HALT。この命令はDTP_SCTLスキャンパスを
選択する。この演算コードに関連するコマンドは各プロセッサのE
MUOEN0イベント論理をECRのEMUCビットによって選択
されたイベントがイナクティブ状態に戻るまで禁止しイナクティブ
状態にする。追加機能はテストモードで提供される。
0x23 SCTL_CNTL。この命令はDTP_SCTLスキャンパスを
選択する。この演算コードに関連するコマンドは各プロセッサのE
MUOEN1イベント論理をECRのEMUCビットによって選択
されたイベントがイナクティブ状態に戻るまで禁止しイナクティブ
状態にする。追加機能はテストモードで提供される。
0x24 SECR。この命令はエミュレーション制御レジスタ(ECR)ス
キャンパスを選択する。ECRパスに関する特殊スキャンの考察に
ついては「MTAPコード状態マシン」に関する後の節を参照され
たい。この演算コードに関連するコマンドはMTAP305に指示
してDTP(CSM_LOCK)に適用される現行MPSDをロッ
ク(「フリーズ」)する。コードは演算コードSDAT_HALT
またはSDAT_CNTLによって発生するコマンドが発行される
までロックされたままである。このロックプロセスはECRのスキ
ャンの前に必要である。CSM_LOCKコマンドを有効にするに
はJTAG IDLE状態に入らなければならない。SYNC_E
RR MTAPステータスビットもCSM_LOCKコマンドが有
効になると消去される。
0x25 SMM_ID。この命令は、この命令のためにIDバス値と共にC
APTURE_DRによってロードされるEVT_CNTRスキャ
ンパスを選択する。IDバスはCPUの制御ステータスレジスタ(
CSR)の16MSビット中の修正および装置タイプ情報からなる
。このデータはCSRがプロセッサによってアクセス可能なときス
キャン可能でなければならない。この命令に関連するコマンドはな
い。
0x26 SEVT_CNTR。この命令はMTAP305のイベントカウン
タスキャンパスを選択する。この命令に関連するコマンド(LEV
T_CNTR)はカウンタの影ビットをロードする。
0x27 SGABORT。この命令に関連するコマンドはMTAPの開始発
生器を消去する。この命令はバイパススキャンパスを選択する。
0x28 XAINT。この命令に関連するコマンドは解析割込み(AINT
)を発生する。この命令はバイパススキャンパスを選択する。
0x29 XMSGINT。この命令に関連するコマンドはメッセージ割込み
(MSGINT)を発生する。この命令はバイパススキャンパスを
選択する。
0x2A SDAT_STRM。この命令はデータストリームスキャンパスを
選択する。この命令に関連するコマンドは開始データストリームプ
ロセスである。データストリームプロセスは、CSMおよびMTA
Pカウンタによって制御されるが、これらは共に正しく設定されな
ければならない。
0x30 SEA_DATA。この命令はSE解析データスキャンパスを選択
する。この命令に関連するコマンドはない。
0x32 SEA_CNTL。この命令はSE解析制御スキャンパスを選択す
る。この命令に関連するコマンドはない。
注:MTAP305は演算コード0x20〜0x23、0x30、0x32および0x24によって選択されたスキャンパスに追加制限を配置する(「MTAPコード状態マシン」および「MTAP MPSDコード発生器」に関する後の節を参照すること)。明確に識別されないスキャンパスはバイパスパスを選択し将来の使用のために予約される。
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は各領域のクロックを制御するよう設計されている。
さらに図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スキャンパスに関するスキャン制御を発生する。
コード発生器570はECRモードビット、TAP状態、DTP JTAG IR制御演算コードのデコードおよびMPSDコード状態マシンから入力を得て、DTPに供給されるMPSDコードを作成する。
図38はMTAPエミュレーション制御レジスタ520を示す。エミュレーション制御レジスタ(ECR)520はMTAP305内の専用スキャンパス452(図35)である。これはJTAG命令レジスタに配置されたSECR演算コードによって指定される。ECRはシフトレジスタおよび影レジスタとして実現されるが、すべてのビットが影付きではない。エミュレーション制御レジスタのフィールドが表47で説明される。
MCS メガモジュールクロック選択:装置モードビットがスト
ラップまたはエミュレーションに設定されている場合、
このビットは機能クロックをUCLKからTCLKに切
換える。逆に、このビットが消去されると機能クロック
はTCLKからUCLKに切換えられる。切換選択はこ
のビットの影ラッチによって制御され、影ラッチがアッ
プデートされるとクロックが切換えられる。TRST−
またはTLR JTAG状態はこのビットを消去し、U
CLKを選択する。UCLKがTCLKに切換えられる
場合、すべてのMTAP論理はオフになる。
機能クロックを切換えるとき、すべての領域テストポー
トをアンロックし、MCSビットを変更する前にPAU
Sを適用することによって全装置のグリッチのないクロ
ック切換を促進するのはエミュレーションソフトウェア
の責任である。
ATPGモードが選択され、MCSビットが設定される
と、テストモードについてMTAPのMPSDコードマ
ッピングは禁止される。すべての領域スキャンチェーン
はATPGモードについて設定される(すべてのSRL
はスキャンパスに多重化される)。このモードは、AT
PGモードの間プロセッサの標準JTAG制御を可能に
するために利用される。
DEVM[1:0] 装置モード:メガモジュールの動作モードを定義する2
ビット。これらのモードビットは常にイネーブルである
。これら2つのECRビットはTRSTが発生するとき
1になる。表48は装置モードフィールドを定義する。
EMUC[3.0] EMUピン設定フィールド−このフィールドはEMU0
「1:0」ピンとEMU0EN[1:0]動作モード(
共有または専用)をドライブするイベントを選択するた
めに利用される。EMU0およびEMU1信号の最小パ
ルス幅は5n秒である。表54はこのフィールドを定義
する。
EXE[1:0] MPSD EXEコード−このフィールドは、領域テス
トポートに適用するためにMPSDコード状態マシンに
よって選択されMPSDコード発生器に供給される2ビ
ットのMPSDコード(C0、Ce)からなる。MPS
Dコードのリストが表50に示される。このフィールド
はTRST−またはTLR JTAG状態によってFU
NCに初期化される。
TERM[1:0] MPSD TERMコード−このフィールドはMPSD
EXEコードフィールドと同一である。
REVT「2:0」 遠隔イベントフィールド−遠隔イベントフィールドは、
CSMがLOCKED状態にないとき、MPSDコード
状態マシンをEXECUTE状態(ECRからEXEコ
ードを選択)からTERMINATE状態(ECRから
TERMコードを選択)に、またその逆に遷移する条件
を指定するために使用される3ビットである。次のコー
ドはCSMがLOCKED状態にないことを想定する。
CSMはコマンド制御ブロックによって管理されLOC
KED状態を離れてEXECUTEまたはTERMIN
ATE状態に入る。コマンドは、存在するとき、REV
Tモードフィールドによって指定されるディレクティブ
をオーバーライドする。表51は遠隔イベントフィール
ドを定義する。このフィールドはTRST−またはTL
R JTAG状態によって000に初期化される。
DLCK[3:0] DTPロックフィールド−DLCKフィールドはDTP
(CPU、解析、メガモジュール、SE)毎の1ロック
ビットからなる。各ロックビットはそのDTPに経路指
定されるロック信号をドライブする。各DTPロックビ
ットは、新しいMPSDコードまたはクロックソース情
報がロックされない領域に適用される間、現行状態(M
PSDコードおよびクロックソース)がその現行値でロ
ックまたは「フリーズ」されているかどうかを示す。ロ
ックレジスタはシャドウされている。IDLEの間ロッ
クスキャンレジスタビットは影ロックラッチにロードさ
れる。ロック信号は影ラッチからドライブされる。これ
によってすべてのDTPは同じUCLKエッジで新しい
ロック状態を見ることができる。また、ロックはCSM
が新しいMPSDコードを適用し、(必要な場合)クロ
ック切換が完了し、ひいてはDTPが新しいMPSDコ
ードと選択された正しいクロックでロックされた後DT
Pに適用される。このフィールドはすべてのDTPをロ
ックされない状態にするTRST−またはTLR JT
AG状態によって0000に初期化される。STRP_
DEVMもロック影ラッチを消去する。表52はDTP
ロックフィールドを定義する。
STSL[1:0] ステータス選択フィールド−STSLフィールドは4つ
のステータス信号グループの1つを選択するために利用
される。STSLフィールド値はTRST−およびTL
R JTAG状態によって00にリセットされる。ST
SLレジスタはシャドウされない。表53はこのフィー
ルドを定義する。
00 ATPGモード−TCLKはメガモジュール全体にソースを有する。J
TAG TAP状態は(MCSが0の場合)MPSDコード発生器によ
って直接MPSDコードにマップされる。ATPG_DEVM信号はア
クティブにドライブされる。領域のマスタークロックはHALT、PA
US、SCTLまたはSDAT状態によってゲートオフされる。これは
CNTLまたはFUNCがテストポートに適用されるまでゲートオフさ
れたままである。これは、HALTがテストポートに適用されるときプ
ロセッサがバスのコンテンションまたはキャッシュの状態と無関係に即
時停止されることを意味する。
01 エミュレーションモード−MPSDコード状態マシン530は、DTP
シフトコードがDTP_SDATおよびDTP_SCTLスキャンパス
を選択するSHIFT_DR TAP状態およびJTAG演算コードか
らMPSDコード発生器によって作成される間MPSDコード発生器5
70を通じてMPSD実行コードを発生する。クロック制御はMPSD
コード状態マシン530によって提供され、MPSDコード状態マシン
によって供給されるMPSDコードに依存する。EMU_DEVM信号
はアクティブにドライブされる。領域のマスタークロックはPAUS、
SCTLまたはSDAT状態によってゲートオフされる。これはHAL
T、CNTLまたはFUNCがテストポートに適用されるまでゲートオ
フされたままである。
10 予備
11 MPSDストラップモード−装置モードは、TRSTが論理ゼロである
かまたはJTAG TAPがTLR状態を通じて遷移するときこの値に
初期化される。フィールドもECRスキャンを通じてこの状態に設定さ
れる。このモードによってMPSDコード発生器はMPSD機能RUN
(FUNC)コードを各領域に出力し、機能クロックが選択され、すべ
ての領域がロックされない状態になる。STRP_DEVM信号はアク
ティブにドライブされる。装置モードビットはデコードされたモード信
号を各領域にドライブする。
表49はMCSビットと装置モードフィールドビットに基づいてクロック選択テーブルを定義する。
装置モード MCS 機能クロック選択 DTPクロック選択
ATPG 0 TCLK TCLK_SEL
ATPG 1 TCLK TCLK_SEL
EMUまたはSTRAP 0 UCLK UCLK_SEL
EMUまたはSTRAP 1 TCLK TCLK_SEL
C0 Ce MPSDコード
1 1 FUNC
1 0 CNTL
0 1 HALT
0 0 PAUS
表51.遠隔イベントフィールド
000 CSMは現行状態にある。
001 EVTA(10.2.8節参照)がイナクティブ状態からアクティブ
状態に遷移する場合CSMはTERMINATE状態に移行する。
010 EXECUTE状態の1クロック後、CMSは即時TERMINAT
E状態に移行する。
011 EVTAがイナクティブからアクティブ状態に遷移する場合、状態を
EXEからTERMに、またはTERMからEXEに切換える。SW
BP_DECまたはABP_DETがアクティブの場合TERMから
EXEへの遷移は禁止される。
100 CSMはアクティブMTAPカウンタについてMTAP_BORRO
W信号を待ち、TERMINATE状態を適用する。
101 MTAPカウンタのXFER_DATA信号によってCSMがTER
MからEXEに1クロックの間遷移し、その後TERMに戻る。
110 予備
111 予備
このフィールドはTRST−またはTLR JTAG状態によって0
00に初期化される。
XXX1 CPULOCK−CPUロック
XX1X ANALOCK−解析ロック
X1XX MMLOCK−メガモジュールロック
1XXX SEALOCK−SE解析ロック
表53.ステータス選択フィールド
0 選択されたストラップステータス
1 選択された停止エミュレーションステータス
2 選択された実時間エミュレーションステータス
EMUC EMUφ0 EMUφ1 EMUOE[1:0]モード
0000 HI−Z HI−Z 共に共有
0001 HI−Z OC 共に共有
0010 OC HI−Z 共に共有
0011 OC OC 共に共有
0100 TP HI−Z EMU0O専用/EMU01共有
0101 TP TP 共に共有
0110 HI−Z OC 共に共有
0111 TP OC EMU0O専用/EMU01共有
1000 TP HI−Z EMU0O専用/EMU01共有
1XXX TP TP 共に共有
高インピーダンス HI−Z
オープンコレクタ OC
トーテムポール TP
EMUC EMUφ0 EMUφ1 EMUφE0 EMUOE1
0000 HI-Z HI-Z 0 0
0001 HI-Z 0 0 1 CPU_DONEまたはAINT_TKNがアクテ
ィブの場合
HI-Z HI-Z 0 0 CPU_DONEまたはAINT_TKNがイナク
ティブの場合
0010 0 HI-Z 1 0 CPU_DONEまたはAINT_TKNがアクテ
ィブの場合
HI-Z HI-Z 0 0 CPU_DONEまたはAINT_TKNがイナク
ティブの場合
0011 0 0 1 1 CPU_DONEまたはAINT_TKNがアクテ
ィブの場合
HI-Z HI-Z 0 0 CPU_DONEまたはAINT_TKNがイナク
ティブの場合
0100 MTAP_BORROW HI-Z 1 0
0101 MTAP_BORROW CPU_DONE 1 1
0110 HI-Z SWBP_DEC ABP_DET 0 1 SWBP_DECまたはABP_DETがアクテ
ィブ
0 0 SWBP_DECおよびABP_DETがイナク
ティブ
0111 CPU_DONE SWBO_DEC 1 1 SWBP_DECまたはABP_DETがアクテ
ィブ
ABP_DET
0 0 SWBP_DECおよびABP_DETがイナク
ティブ
1000 MSGFLG HI-Z 1 0
1001 PSA0[33] PSA0[17] 1 1
1010 PSA1[33] PSA1[17] 1 1
1011 PSA2[36] PSA2[18] 1 1
1100 PSA3[36] PSA3[18] 1 1
1101 PSA4[33] PSA4[17] 1 1
1110 PSA5[20] PSA5[10] 1 1
1111 拡張PSAのための予備
注:EMU0OUTおよびEMU1OUTをドライブする信号はすべて指定された信号のローアクティブバージョンである。MTAP_BORROW信号は1クロック幅パルスで後の節で定義される。
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が適用されるか、または現在選択されたクロックが不能(電源オフ)になっていることを保証しなければならない。
ECR520は、たとえホストソフトウェアがECR状態をチェックするのであっても、ソフトウェアがまずCSMをロックしなければスキャンできない。
再び図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ローによってリセットされる。
表55.開始パルス発生
状態0 JTAGコマンド要求(START_REQT)がアクティブにドラ
イブされる。
状態1 START_REQTがUCLKに同期し(START_REQI)
、IRBUSYを設定する。
状態2 START_REQ1が今度はSTART_REQ2を設定する。こ
の時点でSTART_REQT、IRBUSY、START_REQ
1およびSTART_REQ2が設定されている。
状態3 START_REQTがSTART_REQ2によってリセットされ
る。
状態4 START_REQ1がリセットされる。この時点でIRBUSYお
よびSTART_REQ2が設定され、START_REQTおよび
START_REQ1がリセットされる。
状態5 SWINPROGが誤りの場合、START_REQ1ロー、STA
RT_REQ2ハイおよびSTART_OKハイの組み合わせがST
ARTを発生する。
状態6 STARTがSTART_REQ2をリセットする。STARTは唯
一の単一クロックパルスである。
状態7 START_REQ2ローおよびSTART_REQTローによって
IRBUSYがリセットされる。
さらに図38を参照すると、信号SWINPROGは、JTAG演算コードが0x20〜0x23、0x30、0x32または0x24(領域スキャンパスまたはECRの選択の際目標となるすべてのコマンド)の場合、STARTの発生を禁止する。
START発生状態マシンの真理値表が表56によって示される。
状態 TCLKでクロック UCLKでクロック
TO IDLE START_REQT IRBUSY START_REQ1 START_REQ2 START
0 0 0 0 0 0
0 0 0 0 0 0
*1 0 0 0 0 0
0 0 *1 0 0 0 0
1 0 1 *1 *1 0 0
2 0 1 1 1 *1 0
3 0 *0 1 1 1 0
4 0 0 1 *0 1 0
5 0 0 1 0 1 *1
6 0 0 1 0 *0 0
7 0 0 *0 0 0 0
*−状態の実際の変化
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に示す。
CSM_EXE (0x20)このコマンドはCSMを管理してECRの
EXEビットフィールドをMPSDコード発生器に適用
し、LOCKED状態をリセットしてEXECUTE状
態に入る。
CSM_TERM (0x21)このコマンドはCSMを管理してECRの
TERMビットフィールドをMPSDコード発生器に適
用し、LOCKED状態をリセットしてTERMINA
TE状態に入る。
IF_CLR0 イナクティブ状態に復帰する。EMUI0インターフェ
ースのパルスキャッチャが消去される。
IF_CLR1 (0x23)このコマンドはMTAP内のEMU制御ブ
ロックを管理してEMUO1をドライブする信号を、イ
ナクティブ状態に復帰するまで禁止する。EMUI1イ
ンターフェースのパルスキャッチャが消去される。
CSM_LOCK (0x24)このコマンドはCSMを管理してLOCK
ED状態に入るようにするが、現行のコードは「フリー
ズ」またはロックされMPSDコード発生器に適用され
る。
LEVT_CNTR (0x26)このコマンドはMTAPカウンタの影ビッ
トのUCLK同期ロードを開始する。
SGABORT (0x27)JTAG状態マシンがIDLE状態にある
間、開始発生器を消去状態にし、IRBUSYを消去す
る。
XAINT (0x28)このコマンドはXAINT信号を、解析割
込み(AINT)を発生するCPU領域にドライブする
。
XMSGINT (0x29)このコマンドはXMSGINT信号をメッ
セージ割込み(MSGINT)を発生するCPU領域に
ドライブする。
SDAT_STRM (0x2A)このコマンドはデータストリームプロセス
を開始する。このコマンドはCSMを管理してECRの
TERMビットフィールドをMPSDコード発生器に適
用し、LOCKED状態をリセットしてTERMINA
TE状態に入る。またSHIFT_DRをイネーブルに
して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コードがロックされない領域に適用されている間に発生する。
コードレジスタ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状態と共に次のクロックでロードされる。
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の発生を禁止する。
表58.HALTからPAUSへのコードの遷移
PAUS NOW TCLKON UCLKSYNC UCLK SEL TCLKSYNC TCLK SEL SWINPROG
0 0 1 1 0 0 0
1 1 1 1 0 0 1
1 1 0 1 0 0 1
1 1 0 0 0 0 1
1 1 0 0 1 0 1
1 1 0 0 1 1 1
1 1 0 0 1 1
PAUS NOW TCLKON UCLKSYNC UCLK SEL TCLKSYNC TCLK SEL SWINPROG
1 1 0 0 1 1 0
1 0 0 0 1 1 1
1 0 0 0 0 1 1
1 0 0 0 0 0 1
1 0 1 0 0 0 1
1 0 1 1 0 0 1
0 0 1 1 0 0 0
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に示される。
CSM_LOCK CSM_EXE
TERMINATE 0 0
EXECUTE 0 1
LOCKED 1 0
LOCKED 1 1
注:上記で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を供給する。
コード発生器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であることを保証するときのみ発生できる。
表61.STRAPコード発生OR項の役割
C1 C0 Ce
MPSD_STRAP 1 1 1
コード状態マシン − CSM_C0 CSM_Ce
MPSDデータの SHIFT_DR 0 − −
スキャン
MPSD制御の SHIFT_DR 0 1 −
スキャン
ATPG_TEST − 0 0
−−− −−− −−−
結果として生じる 1 1 1
論理OR
C1 C0 Ce
MPSD_STRAP 0 0 1
コード状態マシン (注参照) − CSM_C0 CSM_Ce
MPSDデータの SHIFT_DR 0 − −
スキャン
MPSD制御の SHIFT_DR 0 1 −
スキャン
ATPG_TEST − 0 0
−−− −−− −−−
MPSDデータまたは 1 CSM_C0 CSM_Ce
制御のスキャンなし
MPSDデータの CSM_Ce=0 0 0 0
スキャン、CSM _C0=0
MPSD制御のスキャン CSM_Ce=0 0 1 0
注:CSM530は、MPSDデータまたは制御をスキャンする前にPAUSコードを表明するようプログラムしなければならない。CSM中のPAUSコードなしに発生するMPSD DATAおよび制御の付記についてはJTAG状態ダイアグラムからのC1およびC0の貢献は禁止される。
表63.ATPGモードOR項の役割
C1 C0 Ce
MPSD_STRAP 0 0 0
コード状態マシン (注参照) − X X
MPSDデータの SHIFT_DR 0 − −
スキャン
MPSD制御の SHIFT_DR 0 1 −
スキャン
ATPG_TESTなし SHIFT_DR − MAP 0 MAP Ce
−−− −−− −−−
MPSDデータまたは 1 MAP 0 MAP Ce
制御のスキャンなし
MPSDデータの
スキャン、CSM _C0=0 CSM_Ce=0 0 0 0
MPSD制御のスキャン CSM_Ce=0 0 1 0
注:上記の表の「−」は、コードソースがコード発生器の出力状態に貢献しない状態を示す。さまざまなモードに関するC1、C0およびCeの扱いは図64に示す。
MTPAリセット ・論理1の2つのECRモードビットから得られたST
RAPがFUNCコードを発生し、他のすべてのコード
値をオーバーライドする。
MPSD制御および ・SCAN_C1は、SHIFT_DR状態がTAPに
MPSDデータの よって発生し、JTAG命令が0x20〜0x23、0
スキャン x30および0x32のとき論理0に設定される(MP
SDデータまたはMPSD制御がスキャンされる)。
・SCAN_C0は、SHIFT_DR状態がTAPに
よって発生し、JTAG命令レジスタが0x22〜0x
23、0X30および0X32のとき論理1に設定され
る(MPSD制御がスキャンされる)。
コード状態マシン ・CSM_C0およびCSM_CeはMPSDコード状
態マシンによって発生する。この値はプログラム可能で
PAUS(MPSDデータまたは制御互換状態のスキャ
ン)、HALT、CNTLおよびFUNCのコードを発
生するために使用される。
・CSM_C1はSHIFT_DRでないか、MPSD
データまたは制御スキャンでないときのものである。
ATPGモード ・MAP_C0は、ECRモードビットがATPGモー
ドを指定するときJTAG状態ダイアグラムから発生す
る。この信号はSHIFT_DR状態で論理0なので、
SCAN_COとの競合が避けられる。
・MAP_CeはECRモードビットがATPGモード
を指定するときJTAG状態ダイアグラムから発生する
。この信号はSHIFT_DR状態で論理0なので、S
CAN_Ceとの競合が避けられる。
・MAP_C1は、SHIFT_DRでないか、MPS
Dデータまたは制御スキャンでないときのものである。
表65はエミュレーションおよびATPGモード両方の状態デコードを示す。
JTAG状態 エミュレーションモード ATPGモード
のMPSD状態 のMPSD状態
Test-Logic-Reset FUNC FUNC
Run-Test/Idle PAUS CSM*
Select DR-Scan PAUS HALT
Capture DR-Scan PAUS PAUS
Shift DR** SDAT/SCTL/PAUS SDAT/SCTL/PAUS **
Exit1 DR PAUS PAUS
Pause DR PAUS PAUS
Exit2 DR PAUS PAUS
Update DR PAUS HALT
Select IR-Scan PAUS HALT
Capture IR-Scan PAUS HALT
Shift IR PAUS HALT
Exit1 IR PAUS HALT
Pause IR PAUS HALT
Exit2 IR PAUS HALT
Update IR PAUS HALT
*CSMはアンロックされ、EXEまたはTRMがJTAG IR演算コード毎に適用される。
**パスはエミュレーションモードと同様JTAG IR中の演算コードによって選択される。選択されたDTPパスはないことがあるが、PAUSマッピングが含まれることがある。
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を適用する。また、ロックされていないテストポートのみはクロックが切換えられる。
領域がアンロックの過程にあるとき、クロック切換信号の状態は、アンロックされた領域のクロックの状態に一致するものでなければならない。状態が一致しない場合同期なしのクロックの切換が発生する。この状況はソフトウェアによって避けられる。
図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に定義するように発生する。
IRBUSYアクティブ コマンドが機能クロックを要求する場合FCL
K_REQをアクティブにドライブする
CSM出力HALT (新しいコードがコマンドによって開始される
または中止 場合)IRBUSYがイナクティブになる前に
CSMがMPSDコードを適用し、IRBUS
YとFCLK_REQをアクティブに維持する
CSM状態との間のオーバーラップを生じるこ
とが予想される。
ATPGモード FCLK_REQをアクティブにドライブし、
ATPGモードの機能クロックをイネーブルに
する。
EMUIイベントアクティブ FCLK_REQがアクティブにドライブされ
てラッチされるので、解析モジュールがEMU
Iイベントをキャプチャし、解析ホールトがC
PUによって処理されるようにする。ラッチさ
れたFLCK_REQはIF_CLRコマンド
によってTLRに消去される。
メガモジュールがパワーダウン状態にある場合、CSMがCNTLまたはFUNCを適用するときCPU_DONEをイナクティブにドライブしなければならないことにも注意されたい。CSMがHALTを適用するときCPU DONEはアクティブにドライブしなければならない。
AUXビットはカウンタのシフトパス中の唯一のビットで、SMM_IDスキャンの間IDバスのための16番目のビットとして利用される。SMM_IDスキャン動作の間、カウンタのシフトレジスタの16ビットにはCAPTURE DR状態によって16ビットIDバスの値がロードされる。
カウンタモードフィールドは選択された機能のためのカウンタ631の設定に利用される。表67はカウンタ630のCMビットフィールドを定義し、表68はCESビットフィールドを定義する。
00 性能プロファイルモード。このモードではカウンタイベント選択(CE
S[2:0])ビットが、CPU_DONEがイナクティブの間カウン
タを減らすイベントを選択する。カウンタの10ビットすべてはダウン
カウンタとして利用される。カウンタは0x3FFにロールオーバーす
る。このモードでは、カウンタはTBC(テストバス制御装置)のイベ
ントカウンタへのスケーラとして利用される。MTAP_BORROW
信号はECRのEMUCビットを通じて選択され、EMUO0信号にド
ライブされる。
01 実行制御モード。このモードではカウンタ631はEXEがDTPに適
用される、EXEを適用するSTARTから開始される機能クロック毎
に減らされる。カウンタの10ビットすべてはダウンカウンタとして利
用される。MTAP305_BORROW信号が発生するとカウンタは
不能になる。ECRのREVTフィールドが100に設定されると、C
SMはMTAP_BORROWを待ってTERMINATE状態を適用
する。このモードによってEXEはN+1機能クロックについて適用さ
れる。
10 データストリーミングモード。このモードではイベントカウンタ631
のシフトレジスタの5LSBがカウンタを形成するために使用される。
カウンタはSHIFT_DRがアクティブなTCLK毎に減らされる。
カウンタはSDAT_STRM JTAGコマンドによってイネーブル
になる。カウンタの5ビットのみがダウンカウンタとして利用される。
このモードではカウンタは0x1fにロールオーバーする。0x01か
ら0x00への遷移でカウンタはXFER_DATA信号を発生する。
この信号はCPU領域にドライブされる。ストア命令がCPUのIRに
ある場合、XFER_DATAがDDATA_02レジスタをスキャン
レジスタ(EDDATA2)からロードするために利用される。ロード
命令がCPUのIRにある場合、XFER DATAがDDATA I
2レジスタからスキャンレジスタ(EDDATA2)をアップデートす
るために利用される。ECRのREVTフィールドが101に設定され
る場合、CSMは1つのUCLKについてEXE(CNTL)を適用し
、その後TERM(E1ALT)に戻る。CAPTURE_DRの間、
シフトレジスタには他のモードと同様UCLKカウンタの値はロードさ
れない。
000 カウンタを減らすためにUCLKを選択
001 サイクル毎に1つカウンタを減らすためにSTALL信号イナクティ
ブを選択
010 パイプラインが機能停止するクロック毎にカウンタを減らすためにS
TALL信号アクティブを選択
011 割込みパイプラインコンテキスト切換の間カウンタを減らすためにI
CNTX信号を選択
100 各割込みについてカウンタを減らすためにJACK信号を選択。割込
みカウントを提供
101 各分岐命令が選択される毎にカウンタを減らすためにBRTK信号を
選択。分岐カウントを提供
110 E1パイプライン段階中で選択される各NOP毎にカウンタを減らす
ためにNOPを選択。NOPカウントを提供。
111 各実行されたパケット(E1にないNOP)毎にカウンタを減らすた
めにNOP−信号を選択。パケットカウントを提供。
特殊エミュレーション(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であるべきである。
SEA_DET SE解析モジュールの検出。この信号はMTAP
への入力であり、SEが存在することを示すステ
ータス信号として使用される。この信号はまた、
SEA_SDATおよびSEA_SCTLスキャ
ンパスをイネーブルにする。
SEA_LOCK SE DTPロック。この信号はECRにソース
を有し、SEのDTPをロックまたはアンロック
するために利用される。
SEA_SIN SE MTAPスキャンイン。SEのスキャンポ
ートはメガモジュールDTPスキャンポートと独
立である。
SEA_SOUT SE MTAPスキャンアウト。
SEA_C0 SE MPSD C0ビット。このビットはメガ
モジュールDTP MPSD C0ビットと同一
である。
SEA_C1 SE MPSD C1ビット。このビットはDT
P MPSD C1ビットと同一である。
SEA_Ce SE MPSD Ceビット。このビットはDT
P MPSD Ceビットと同一である。
SEA_SHIFTDR SE JTAG SHIFT_DR状態。
SEA_UPDATEDR SE JTAG UPDATE_DR状態。
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に関して詳細に説明される。
表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および境界論理が接続がない場合リセット状態に維持されることを保証する。
EMUステータス
再び図43を参照すると、マイクロプロセッサ1のCPUまたはオンチップメモリシステムの中でさまざまなエミュレーションステータスビットが発生する。これらの信号はMTAP305にレベルとしてもたらされる。それらはCAPTURE−IR状態の間JTAG IR580のシフトレジスタにラッチされる。表70は停止モードエミュレーションステータス信号を説明する。表71は実時間モードエミュレーションステータス信号を説明する。表72はCPUエミュレーションステータス信号を説明する。表73はCPUエミュレーションイベント信号を説明する。
CPU_DONE CPU実行済み。この信号は、CPUの命令パイプ
ラインがエミュレーションイベント(DTP停止、
ソフトウェアブレークポイント(SWBP)または
解析ブレークポイント(ABP))によって実行可
能状態で機能停止されたことを示す。
SWBP_DEC CPUの命令パイプラインがCPUのデコードパイ
プライン段階でソフトウェアブレークポイント(S
WBP)によって実行可能状態で機能停止された。
ABP_DET 解析ブレークポイントの検出。この信号はCPUの
命令パイプラインが解析ブレークポイントによって
実行可能状態で機能停止されたことを示す。
表71.実時間モードエミュレーションステータス信号
RST_TKN リセット検出。この信号はメガモジュールのリセッ
トが発生したことを示す。この信号は、コンテキス
ト切換が完了し、E1にリセットサービスルーチン
の第1有効演算コードがロードされるまでアクティ
ブにドライブされない。
MINT_TKN 選択されたメッセージの割込み。この信号はメッセ
ージの割込みがなされたことを示す。この信号は、
コンテキスト切換が完了し、E1にリセットサービ
スルーチンの第1有効演算コードがロードされるま
でアクティブにドライブされない。
AINT_TKN 選択された解析割込み。この信号は解析の割込みが
なされたことを示す。この信号は、コンテキスト切
換が完了し、E1にリセットサービスルーチンの第
1有効演算コードがロードされるまでアクティブに
ドライブされない。
MSGFLG メッセージフラグ。この信号はメッセージハンドシ
ェーク通信のためのフラグを提供する。
MSGSW メッセージ切換。この信号はメッセージスキャンプ
ロセスを制御する実時間モニタを可能にするために
利用されるEVTA CSMイベントとして利用さ
れる。
MINT_EN メッセージ割込みイネーブル。このステータス信号
は割込みがなされるとき唯一真である。従って、G
E、NMEおよびMSGEでマスクしなければなら
ない。
AINT_EN メッセージ割込みイネーブル。このステータス信号
は割込みがなされるとき唯一真である。従って、G
E,NMIEおよびAIE(PRIが0の場合)で
マスクしなければならない。
表73.CPUエミュレーションイベント信号
STALL 命令パイプライン機能停止
IACK 割込み応答
ICNTX 割込みコンテキスト切換。この信号は割込みコンテキス
ト切換のアクティブ期間である。
BRTK 選択される分岐
NOP 選択されるE1パイプライン段階のNOP
ここで使用される「適用される」「接続される」および「接続」という用語は電気的に接続されることを意味し、電気的接続パスに追加素子がある場合を含む。
本発明は例示としての実施例に関して説明されたが、この説明は限定する意味で構成されることを意図したものではない。この説明に関して本発明のさまざまな他の実施例が当業技術分野に熟練した者には明らかであろう。添付の請求項が本発明の真の範囲と精神の範囲内にある実施例のこれらの修正を包含することが考慮される。
(1)データ処理システム内のプロセッサをデバッグする方法において、前記プロセッサがマルチワード命令レジスタを備え、前記方法が、
通常の演算方法により、前記マルチワード命令レジスタに保持されているシステムコードを実行する段階と、
前記プロセッサの通常の演算を停止する段階と、
前記プロセッサの前記マルチワード命令レジスタに保持されている一連のデバッグコード命令を実行し、前記プロセッサ上でデバッグ動作を行う段階と、
前記データ処理システム内で無関係な演算が一切発生しないような方法で前記マルチワード命令レジスタ内の前記システムコードの実行を継続する段階と、を含むデバッグ方法。
(2)デバッグコードを実行する前記段階が、
少なくとも2つのプロセッサ命令から成るデバッグコードの並びをプロセッサマルチワード命令レジスタに導く段階と、
通常の演算方法により前記デバッグコードの並びを実行することにより、前記プロセッサ内の第1メモリに保持されている第1データにアクセスし、かつ、前記プロセッサの少なくとも第1記憶素子に前記第1データを記憶する段階と、
前記第1データを、前記第1記憶素子から前記プロセッサのテストポートに転送する段階と、をさらに含む第1項記載の方法。
(3)前記通常の演算を停止する前記段階が、外部デバッグシステムから前記テストポートを介してデバッグコマンドを受信する段階をさらに含む第2項記載の方法。
(4)通常の演算方法により前記デバッグコードの並びを実行する前記段階が、前記デバッグコードの並びの最後の命令が実行されると、それに応じて、前記外部デバッグシステムに前記テストポートを介して通知を送る段階をさらに含む第3項記載の方法。
(5)前記デバッグコードの停止と実行、および前記システムコードの実行の継続を行う前記段階が、前記データ処理システム内に無関係な記憶サイクルを一切引き起こさない第4項記載の方法。
(6)前記第1データを転送する前記段階が、直列スキャンパスを介して前記第1データを前記第1記憶素子から前記プロセッサの前記テストポートに転送する段階をさらに含む第5項記載の方法。
前記マルチワード命令レジスタに保持されているシステムコードを通常の演算方法により実行する回路と、
プロセッサの前記通常の演算を停止する回路と、
前記プロセッサの前記マルチワード命令レジスタに保持されているデバッグコード命令の並びを受信および実行することにより、前記プロセッサ上でデバッグ動作を行う回路と、
前記データ処理システム内で関係のない演算が一切発生しない方法で、前記マルチワード命令レジスタに保持されている前記システムコードの実行を復元する回路と、を含むマイクロプロセッサ。
(8)マルチワード命令実行パイプラインを有するマイクロプロセッサと、
前記マイクロプロセッサに接続されるプログラム命令を保持するメモリと、
前記マイクロプロセッサに接続されるディスクドライブと、から成るデータ処理システムにおいて、
前記マイクロプロセッサが、
前記マルチワード命令レジスタに保持されているシステムコードを通常の演算方法により実行する回路と、
前記プロセッサの前記通常の演算を停止する回路と、
前記プロセッサの前記マルチワード命令レジスタに保持されているデバッグコード命令の並びを受信および実行することにより、前記プロセッサ上でデバッグ動作を行う回路と、
前記データ処理システム内で関係のない演算が一切発生しない方法で、前記マルチワード命令レジスタに保持されている前記システムコードの実行を復元する回路と、をさらに具備するデータ処理システム。
外部テストシステム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−25311XX)
上記出願は、いずれも本願と同時期に出願され、この文章中に引用されている。
10a〜10c フェッチ/デコードユニット
20 レジスタファイル
22,23 メモリ
50 エミュレーションユニット
60,61 周辺装置
Claims (2)
- データ処理システム内のマルチワード命令レジスタを備えたプロセッサをデバッグする方法であって、
通常の演算方法で、命令実行パイプライン内のマルチワード命令レジスタからのシステムコードを実行するステップと、
少なくとも第1の部分的に実行された命令を外部テストシステムに格納することにより前記プロセッサの前記通常の演算を中断するステップと、
前記マルチワード命令レジスタへの命令のフェッチを停止するステップと、
デバッグコード命令の第1のシーケンスを前記外部テストシステムから前記マルチワード命令レジスタへ転送するステップと、
デバッグ動作を前記プロセッサ上で実行するために、前記デバッグコード命令のシーケンスを前記プロセッサのマルチワード命令レジスタ内で実行するステップと、
少なくとも前記第1の部分的に実行された命令を前記外部テストシステムから前記マルチワード命令レジスタに復元して、命令のフェッチを有効にし、前記プロセッサの通常の演算を開始することによって、前記マルチワード命令レジスタ内で前記システムコードの実行を再開するステップと、
を含む、前記方法。 - マルチワード命令レジスタを有するマイクロプロセッサを備えたデータ処理システムであって、前記マイクロプロセッサは更に、
前記マルチワード命令レジスタからのシステムコードを通常の演算方法で実行するために前記マルチワード命令レジスタに接続された命令実行パイプラインと、
少なくとも第1の部分的に実行された命令を外部テストシステムに保存することによって前記プロセッサの前記通常の演算を停止するために、前記命令実行パイプラインおよび前記マルチワード命令レジスタに接続されたエミュレーション回路であって、該エミュレーション回路は、前記マルチワード命令レジスタへの命令のフェッチを停止し、デバッグコードの第1のシーケンスを前記外部テストシステムから前記マルチワード命令レジスタへ転送するように動作可能であり、更に、少なくとも前記第1の部分的に実行された命令を前記外部テストシステムから前記マルチワード命令レジスタへ復元し、命令のフェッチを有効にするように動作可能である、前記エミュレーション回路とを含み、
前記命令実行パイプラインは、更に、プロセッサのマルチワード命令レジスタ内のデバッグコードの前記第1のシーケンスを実行して前記プロセッサ上でデバッグ動作を行い、その後、前記マルチワード命令レジスタ内の復元された前記少なくとも第1の部分的に実行された命令の実行を再開する、前記データ処理システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3426196P | 1996-12-20 | 1996-12-20 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9370528A Division JPH10187491A (ja) | 1996-12-20 | 1997-12-22 | データ処理システムのデバッグ中にマルチワード命令レジスタを利用する方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007004832A true JP2007004832A (ja) | 2007-01-11 |
Family
ID=21875290
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9370528A Pending JPH10187491A (ja) | 1996-12-20 | 1997-12-22 | データ処理システムのデバッグ中にマルチワード命令レジスタを利用する方法 |
JP2006276539A Pending JP2007004832A (ja) | 1996-12-20 | 2006-10-10 | データ処理システムのデバッグ中にマルチワード命令レジスタを利用する方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9370528A Pending JPH10187491A (ja) | 1996-12-20 | 1997-12-22 | データ処理システムのデバッグ中にマルチワード命令レジスタを利用する方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6065106A (ja) |
EP (1) | EP0849671B1 (ja) |
JP (2) | JPH10187491A (ja) |
DE (1) | DE69729057T2 (ja) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69424370T2 (de) * | 1993-11-05 | 2001-02-15 | Intergraph Corp | Befehlscachespeicher mit Kreuzschienenschalter |
US6145027A (en) * | 1997-07-09 | 2000-11-07 | Texas Instruments Incorporated | DMA controller with split channel transfer capability and FIFO buffering allowing transmit channel to get ahead of corresponding receive channel by preselected number of elements |
US6571359B1 (en) * | 1999-12-13 | 2003-05-27 | Intel Corporation | Systems and methods for testing processors |
US6557116B1 (en) * | 1999-02-19 | 2003-04-29 | Texas Instruments Incorporated | Emulation suspension mode with frame controlled resource access |
US6643803B1 (en) * | 1999-02-19 | 2003-11-04 | Texas Instruments Incorporated | Emulation suspend mode with instruction jamming |
US6367071B1 (en) * | 1999-03-02 | 2002-04-02 | Lucent Technologies Inc. | Compiler optimization techniques for exploiting a zero overhead loop mechanism |
US6405300B1 (en) * | 1999-03-22 | 2002-06-11 | Sun Microsystems, Inc. | Combining results of selectively executed remaining sub-instructions with that of emulated sub-instruction causing exception in VLIW processor |
US6311311B1 (en) * | 1999-08-19 | 2001-10-30 | International Business Machines Corporation | Multiple input shift register (MISR) signatures used on architected registers to detect interim functional errors on instruction stream test |
US7100027B1 (en) * | 1999-12-13 | 2006-08-29 | Intel Corporation | System and method for reproducing system executions using a replay handler |
US6754892B1 (en) * | 1999-12-15 | 2004-06-22 | Transmeta Corporation | Instruction packing for an advanced microprocessor |
US6704857B2 (en) * | 1999-12-23 | 2004-03-09 | Pts Corporation | Methods and apparatus for loading a very long instruction word memory |
US6934937B1 (en) * | 2000-03-30 | 2005-08-23 | Broadcom Corporation | Multi-channel, multi-service debug on a pipelined CPU architecture |
US6681321B1 (en) * | 2000-04-20 | 2004-01-20 | International Business Machines Corporation | Method system and apparatus for instruction execution tracing with out of order processors |
US7366876B1 (en) | 2000-10-31 | 2008-04-29 | Analog Devices, Inc. | Efficient emulation instruction dispatch based on instruction width |
US6944848B2 (en) * | 2001-05-03 | 2005-09-13 | International Business Machines Corporation | Technique using persistent foci for finite state machine based software test generation |
US6466048B1 (en) | 2001-05-23 | 2002-10-15 | Mosaid Technologies, Inc. | Method and apparatus for switchably selecting an integrated circuit operating mode |
JP2002358060A (ja) * | 2001-06-01 | 2002-12-13 | Seiko Epson Corp | 表示制御システム、表示サービス提供システム及び表示制御プログラム、並びに表示制御方法 |
US7257805B2 (en) | 2001-11-09 | 2007-08-14 | International Business Machines Corporation | Restoring debugging breakpoints subsequent to program code modifications |
JP2004013602A (ja) * | 2002-06-07 | 2004-01-15 | Handotai Rikougaku Kenkyu Center:Kk | データ駆動プロセッサのエミュレーションシステム |
US9003376B2 (en) * | 2002-08-09 | 2015-04-07 | Texas Instruments Incorporated | Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems |
GB2395302B (en) * | 2002-11-13 | 2005-12-28 | Advanced Risc Mach Ltd | Hardware driven state save/restore in a data processing system |
US7698539B1 (en) * | 2003-07-16 | 2010-04-13 | Banning John P | System and method of instruction modification |
US7606997B1 (en) | 2003-07-18 | 2009-10-20 | Guillermo Rozas | Method and system for using one or more address bits and an instruction to increase an instruction set |
JP4409349B2 (ja) * | 2004-04-27 | 2010-02-03 | Okiセミコンダクタ株式会社 | デバッグ回路およびデバッグ制御方法 |
US7523351B2 (en) * | 2004-09-27 | 2009-04-21 | Ceva D.S.P. Ltd | System and method for providing mutual breakpoint capabilities in computing device |
US20070006042A1 (en) * | 2005-06-30 | 2007-01-04 | International Business Machines Corporation | Software debug support for cache flush with access to external data location(s) through debug port |
US7778806B2 (en) * | 2006-03-29 | 2010-08-17 | Hitachi, Ltd | Method and apparatus for simulating microcomputer-based systems |
US7987075B2 (en) * | 2008-06-30 | 2011-07-26 | Hitachi, Ltd | Apparatus and method to develop multi-core microcomputer-based systems |
FR2996321B1 (fr) * | 2012-10-03 | 2014-10-24 | Emulation And Verification Engineering | Procede et dispositif de sauvegarde d'un etat d'un circuit sous test emule dans un emulateur et de son environnement de test logiciel, et procede et dispositif de restauration correspondants |
US9417988B2 (en) * | 2013-02-26 | 2016-08-16 | Red Hat, Inc. | Tracking subclasses of and operations performed by generic objects in a computer system |
CN103473045A (zh) * | 2013-08-27 | 2013-12-25 | 广州华多网络科技有限公司 | 一种生成接口文档的方法及装置 |
CN103488462B (zh) * | 2013-09-06 | 2016-04-13 | 暨南大学 | 一种改进型8051ip核 |
US9619214B2 (en) | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
GB2530050B (en) * | 2014-09-10 | 2021-07-21 | Advanced Risc Mach Ltd | Debugging in a data processing apparatus |
US10169014B2 (en) | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
US9588746B2 (en) | 2014-12-19 | 2017-03-07 | International Business Machines Corporation | Compiler method for generating instructions for vector operations on a multi-endian processor |
US10481203B2 (en) | 2015-04-04 | 2019-11-19 | Nvidia Corporation | Granular dynamic test systems and methods |
US9880821B2 (en) | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US9594668B1 (en) * | 2015-09-04 | 2017-03-14 | International Business Machines Corporation | Debugger display of vector register contents after compiler optimizations for vector instructions |
US10281524B2 (en) | 2015-10-27 | 2019-05-07 | Nvidia Corporation | Test partition external input/output interface control for test partitions in a semiconductor |
US10095603B2 (en) * | 2017-01-09 | 2018-10-09 | International Business Machines Corporation | Pre-fetching disassembly code for remote software debugging |
US10754759B1 (en) * | 2018-02-05 | 2020-08-25 | Xilinx, Inc. | Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit |
US11152076B2 (en) * | 2019-09-23 | 2021-10-19 | Arm Limited | Apparatus and method for executing debug instructions |
CN110688821B (zh) * | 2019-09-27 | 2023-10-13 | 北京中电华大电子设计有限责任公司 | 一种复杂算法的测试激励生成器及其控制方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4701921A (en) * | 1985-10-23 | 1987-10-20 | Texas Instruments Incorporated | Modularized scan path for serially tested logic circuit |
US4811345A (en) * | 1986-12-16 | 1989-03-07 | Advanced Micro Devices, Inc. | Methods and apparatus for providing a user oriented microprocessor test interface for a complex, single chip, general purpose central processing unit |
US4860290A (en) * | 1987-06-02 | 1989-08-22 | Texas Instruments Incorporated | Logic circuit having individually testable logic modules |
US5535331A (en) * | 1987-09-04 | 1996-07-09 | Texas Instruments Incorporated | Processor condition sensing circuits, systems and methods |
US5084814A (en) * | 1987-10-30 | 1992-01-28 | Motorola, Inc. | Data processor with development support features |
GB2266606B (en) * | 1992-04-27 | 1996-02-14 | Intel Corp | A microprocessor with an external command mode |
US5537538A (en) * | 1993-12-15 | 1996-07-16 | Silicon Graphics, Inc. | Debug mode for a superscalar RISC processor |
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 |
FR2720174B1 (fr) * | 1994-05-20 | 1996-08-14 | Sgs Thomson Microelectronics | Procédé pour tester le déroulement d'un programme d'instructions exécutées par un circuit intégré spécialisé, et circuit intégré spécialisé s'y rapportant. |
-
1997
- 1997-11-19 US US08/974,741 patent/US6065106A/en not_active Expired - Lifetime
- 1997-12-18 DE DE69729057T patent/DE69729057T2/de not_active Expired - Lifetime
- 1997-12-18 EP EP97310414A patent/EP0849671B1/en not_active Expired - Lifetime
- 1997-12-22 JP JP9370528A patent/JPH10187491A/ja active Pending
-
2006
- 2006-10-10 JP JP2006276539A patent/JP2007004832A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP0849671B1 (en) | 2004-05-12 |
JPH10187491A (ja) | 1998-07-21 |
DE69729057T2 (de) | 2005-05-12 |
DE69729057D1 (de) | 2004-06-17 |
EP0849671A3 (en) | 2000-03-29 |
US6065106A (en) | 2000-05-16 |
EP0849671A2 (en) | 1998-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3820311B2 (ja) | データ処理システムのデバッグ中に命令実行パイプラインを管理する方法 | |
JP2007004832A (ja) | データ処理システムのデバッグ中にマルチワード命令レジスタを利用する方法 | |
JP3916745B2 (ja) | データ処理システムのデバッグ中の単一ステッププロセッサパイプラインおよび下位システムパイプライン | |
US6055649A (en) | Processor test port with scan chains and data streaming | |
US6016555A (en) | Non-intrusive software breakpoints in a processor instruction execution pipeline | |
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 | |
US6564339B1 (en) | Emulation suspension mode handling multiple stops and starts | |
US6567933B1 (en) | Emulation suspension mode with stop mode extension | |
US6842811B2 (en) | Methods and apparatus for scalable array processor interrupt detection and response | |
US6343358B1 (en) | Executing multiple debug instructions | |
US6591378B1 (en) | Debug controller in a data processor and method therefor | |
US6557116B1 (en) | Emulation suspension mode with frame controlled resource access | |
US7689815B2 (en) | Debug instruction for use in a data processing system | |
JP2008507025A (ja) | 集積回路テスト用エミュレーション及びデバッグインターフェイス | |
Chen et al. | Software-based self-testing with multiple-level abstractions for soft processor cores | |
JP3746367B2 (ja) | プロセッサ命令実行パイプラインにおける非侵入ソフトウェアブレークポイント | |
JP4386974B2 (ja) | スキャンチェーンおよびデータストリーム機能を備えたプロセッサテストポート | |
JP3916746B2 (ja) | データ処理システムのデバッグ中にプロセッサパイプラインおよびサブシステムパイプライン間の同期を維持すする方法と装置 | |
US20090055632A1 (en) | Emulation Scheme for Programmable Pipeline Fabric | |
Park et al. | Design methodology for on-chip-based processor debugger | |
Melear | Emulation techniques for microcontrollers with internal caches and multiple execution units | |
Manual | P6 Family of Processors | |
Beck | T0 Engineering Data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080125 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080425 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080501 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080526 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080529 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080625 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080630 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081003 |