CN107003921A - 具有有限状态机控制的可重配置测试访问端口 - Google Patents
具有有限状态机控制的可重配置测试访问端口 Download PDFInfo
- Publication number
- CN107003921A CN107003921A CN201480083595.XA CN201480083595A CN107003921A CN 107003921 A CN107003921 A CN 107003921A CN 201480083595 A CN201480083595 A CN 201480083595A CN 107003921 A CN107003921 A CN 107003921A
- Authority
- CN
- China
- Prior art keywords
- test
- processor
- access port
- finite state
- state machine
- 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.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 529
- 238000000034 method Methods 0.000 claims description 67
- 230000009471 action Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 63
- 238000005538 encapsulation Methods 0.000 description 51
- 238000003860 storage Methods 0.000 description 42
- 238000012545 processing Methods 0.000 description 37
- 230000008569 process Effects 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 17
- 230000007246 mechanism Effects 0.000 description 17
- 230000000875 corresponding effect Effects 0.000 description 16
- 239000000872 buffer Substances 0.000 description 14
- 239000003795 chemical substances by application Substances 0.000 description 13
- 238000013461 design Methods 0.000 description 13
- 238000007667 floating Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 238000011068 loading method Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 241000894007 species Species 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000033228 biological regulation Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 239000002253 acid Substances 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 239000010752 BS 2869 Class D Substances 0.000 description 1
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 206010038743 Restlessness Diseases 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 150000007513 acids Chemical class 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000009413 insulation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- 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/31701—Arrangements for setting the Unit Under Test [UUT] in a test mode
-
- 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/31727—Clock circuits aspects, e.g. test clock circuit details, timing aspects for signal generation, circuits for testing clocks
-
- 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/3177—Testing of logic operation, e.g. by logic analysers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/27—Built-in tests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Microcomputers (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
处理器包括用于实现具有有限状态机控制的可重配置测试访问端口的逻辑。多个测试访问端口每个可以包括有限状态机,用于能够对处理器实现不同测试接口,其包括JTAG IEEE 1149.1、JTAG IEEE 1149.7和串行线调试。
Description
技术领域
本公开关于处理逻辑、微处理器和关联指令集架构的领域,该指令集架构在由处理器或其他处理逻辑执行时执行逻辑、数学或其他函数运算。
背景技术
微处理器(或简单地“处理器”)可通过测试访问端口支持外部测试,这些测试访问端口可以用于调试处理器功能性。处理器测试访问的一个标准是联合测试行动小组(JTAG)标准,也称为IEEE 1149.1标准测试访问端口和边界扫描架构,其可使用四个接口引脚和一个可选引脚来实现。使用两个引脚的处理器测试访问的其他标准包括JTAG(IEEE 1149.7)和ARM Holdings, Ltd.(ARM调试接口v5)的串行线调试(SWD)。因为这样的标准之间的架构差异,具有不同外部调试工具的处理器测试访问端口的互操作性可能受到限制。
附图说明
实施例通过示例并且没有限制地在附图的图中图示。
图1A是根据本公开的实施例用处理器形成的示范性计算机系统的框图,该处理器可以包括执行单元用于执行指令。
图1B图示根据本公开的实施例的数据处理系统。
图1C图示用于执行文本串比较操作的数据处理系统的其他实施例。
图2是根据本公开的实施例对于处理器的微架构的框图,该处理器可以包括逻辑电路用于执行指令。
图3A图示根据本公开的实施例的多媒体寄存器中的各种封装数据类型(packeddata type)表示。
图3B图示根据本公开的实施例的可能寄存器中数据存储格式。
图3C图示根据本公开的实施例的多媒体寄存器中的各种有符号和无符号封装数据类型表示。
图3D图示操作编码格式的实施例。
图3E图示根据本公开的实施例的另一个可能操作编码格式,其具有四十个或以上的位。
图3F图示根据本公开的实施例的再另一个可能操作编码格式。
图4A是图示根据本公开的实施例的有序流水线和寄存器重命名段、乱序发出/执行流水线的框图。
图4B是图示根据本公开的实施例要包括在处理器中的有序架构代码和寄存器重命名逻辑、乱序发出/执行逻辑的框图。
图5A是根据本公开的实施例的处理器的框图。
图5B是根据本公开的实施例的核的示例实现的框图。
图6是根据本公开的实施例的系统的框图。
图7是根据本公开的实施例的第二系统的框图。
图8是根据本公开的实施例的第三系统的框图。
图9是根据本公开的实施例的芯片上系统的框图。
图10图示根据本公开的实施例的处理器,其包含可以执行至少一个指令的中央处理单元和图形处理单元。
图11是图示根据本公开的实施例IP核的开发的框图。
图12图示根据本公开的实施例、不同类型的处理器如何可以仿真第一类型的指令。
图13图示根据本公开的实施例对比用于将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
图14是根据本公开的实施例的处理器的指令集架构的框图。
图15是根据本公开的实施例的处理器的指令集架构的更详细框图。
图16是根据本公开的实施例的处理器的指令集架构的执行流水线的框图。
图17是根据本公开的实施例用于使用处理器的电子设备的框图。
图18图示根据本公开的实施例用于实现具有有限状态机控制的可重配置测试访问端口的可重配置测试访问端口系统的示例实施例。
图19图示根据本公开的实施例用于实现具有有限状态机控制的可重配置测试访问端口的可重配置测试访问端口有限状态机的示例实施例。
图20图示根据本公开的实施例实现具有限状态机控制的可重配置测试访问端口的示例方法的图示。
具体实施方式
下列描述描述了用于实现具有有限状态机控制的可重配置测试访问端口的处理器中的处理逻辑。在下列描述中,阐述许多特定细节,例如处理逻辑、处理器类型、微架构条件、事件、使能机构及类似物,以便提供对本公开的实施例的更全面理解。然而,本领域内技术人员将意识到实施例可以在没有这样的特定细节的情况下实践。另外,未详细示出一些众所周知的结构、电路及类似物以避免不必要地混淆本公开的实施例。
尽管下列实施例参考处理器描述,其他实施例能适用于其他类型的集成电路和逻辑设备。本公开的实施例的相似技术和教导可以适用于其他类型的电路或半导体器件,其可以从更高流水线吞吐量和提高的性能中获益。本公开的实施例的教导能适用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器并且可以应用于其中可以执行数据操纵或管理的任何处理器和机器。另外,下列描述提供示例,并且附图为了说明目的示出各种示例。然而,因为这些示例仅预计提供本公开的实施例的示例而不提供本公开的实施例的所有可能实现的穷举列表,不应在限制性意义上解释这些示例。
尽管下面的示例在执行单元和逻辑电路的上下文中描述指令处理和分发,本公开的其他实施例可以通过存储在机器可读、有形介质上的数据或指令来完成,这些数据或指令在由机器执行时促使该机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开的实施例关联的功能在机器可执行指令中体现。指令可以用于促使可以用指令编程的通用或专用处理器执行本公开的步骤。本公开的实施例可以作为计算机程序产品或软件提供,其可以包括具有存储在其上的指令的机器或计算机可读介质,这些指令可以用于对计算机(或其他电子设备)编程来执行根据本公开的实施例的一个或多个操作。此外,本公开的实施例的步骤可以由特定硬件部件(其包含用于执行步骤的固定功能逻辑)或由编程计算机部件和固定功能硬件部件的任何组合执行。
用于对逻辑编程来执行本公开的实施例的指令可以存储在系统中的存储器内,例如DRAM、高速缓存、闪速存储器或其他存储。此外,这些指令可以经由网络或通过其他计算机可读介质而分发。从而机器可读介质可以包括用于采用由机器(例如,计算机)可读的形式存储或传送信息的任何机构,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪速存储器或有形的机器可读存储,其在经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传送信息中使用。因此,计算机可读介质可以包括任何类型的有形机器可读介质,其适合于采用由机器(例如,计算机)可读的形式存储或传送电子指令或信息。
设计可以历经各种阶段,从创建到模拟到制造。代表设计的数据可以采用许多方式代表设计。首先,如可在模拟中有用的,硬件可使用硬件描述语言或另一个功能描述语言来表示。另外,具有逻辑和/或晶体管门的电路级模型可以在设计过程的某些阶段产生。此外,设计在某一阶段可以达到代表硬件模型中各种设备的物理布局的数据的级别。在使用一些半导体制造技术的情况下,代表硬件模型的数据可以是规定对于用于产生集成电路的掩模的不同掩模层上各种特征的存在或缺乏的数据。在设计的任何表示中,数据可采用机器可读介质的任何形式存储。存储器或磁或光存储(例如盘)可以是用于存储经由光或电波传送的信息的机器可读介质,调制或用别的方式产生该光或电波来传送这样的信息。当传送指示或承载代码或设计的电载波时,就执行电信号的复制、缓冲或重传来说,做出新的复制。从而,通信提供商或网络提供商可以将例如编码到载波内的信息等体现本公开的实施例的技术的物品至少暂时存储在有形的机器可读介质上。
在现代处理器中,许多不同的执行单元可以用于处理并且执行多种代码和指令。一些指令可以较快完成,而其他可花费许多时钟周期来完成。指令的吞吐量越快,处理器的总性能越好。从而,尽可能快地执行尽可能多的指令,这将是有利的。然而,存在某些指令(例如浮点指令、加载/存储操作、数据移动等),其具有较大复杂性并且从执行时间和处理器资源方面需要更多。
随着更多的计算机系统在互联网、文本和多媒体应用中使用,随时间已引入额外处理器支持。在一个实施例中,指令集可以与一个或多个计算机架构关联,包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可以由一个或多个微架构实现,其可以包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可以共享共同指令集的至少一部分。例如,Intel® Pentium 4处理器、Intel® Core™处理器和来自加利福尼亚州Sunnyvale 的Advanced Micro Devices, Inc.的处理器实现x86指令集的几乎相同版本(具有已增加有较新版本的一些扩展),但具有不同的内部设计。相似地,由其他处理器开发公司(例如ARM Holdings, Ltd.、MIPS,或它们的被许可方或采纳者)设计的处理器可以共享共同指令集的至少一部分,但可以包括不同的处理器设计。例如,ISA的相同寄存器架构可以采用不同方式在不同微架构中使用新的或众所周知的技术实现,其包括专用物理寄存器、一个或多个动态分配物理寄存器(使用寄存器重命名机制(例如,使用寄存器别名表(RAT))、重排序缓冲器(ROB)和引退寄存器堆。在一个实施例中,寄存器可以包括一个或多个寄存器、寄存器架构、寄存器堆或软件编程方可以能够或可以不能寻址的其他寄存器集。
指令可以包括一个或多个指令格式。在一个实施例中,指令格式可以指示各种字段(位的数量、位的位点,等),以除其他外还规定待执行的操作和将执行操作所针对的操作数。在另外的实施例中,一些指令格式可以由指令模板(或子格式)进一步定义。例如,指定指令格式的指令模板可以定义成具有指令格式字段的不同子集和/或定义成具有不同解释的指定字段。在一个实施例中,指令可以使用指令格式(并且,如果被定义的话,在该指令格式的指令模板中的给定一个模板中)来表达并且规定或指示操作以及操作将在其上操作的操作数。
科学、金融、自动向量化通用RMS(识别、采掘和合成)以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压、视频识别算法和音频操纵)可以需要对大量数据项执行相同操作。在一个实施例中,单指令多数据(SIMD)指的是促使处理器对多个数据元素执行操作的指令类型。SIMD技术可以在可以将寄存器中的位逻辑划分成许多大小固定或大小可变的数据元素(其中的每个代表独立值)的处理器中使用。例如,在一个实施例中,64位寄存器中的位可以组织为源操作数,其包含四个独立16位数据元素,其中的每个代表独立16位值。该类型的数据可以称为‘封装’数据类型或‘向量’数据类型,并且具有该数据类型的操作数称为封装数据操作数或向量操作数。在一个实施例中,封装数据项或向量可以是存储在单个寄存器内的封装数据元素序列,并且封装数据操作数或向量操作数可以是SIMD指令(或‘封装数据指令’或‘向量指令’)的源或目的地操作数。在一个实施例中,SIMD指令规定单向量运算,其要对两个源向量操作数执行来生成具有相同或不同大小、相同或不同数量的数据元素并且处于相同或不同数据元素顺序的目的地向量操作数(也称为结果向量操作数)。
例如由具有指令集(其包括x86、MMX™、流播SIMD扩展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令)的Intel® Core™处理器、ARM处理器(例如ARM Cortex®系列处理器,其具有包括向量浮点(VFP)和/或NEON指令的指令集)和MIPS处理器(例如由中国科学院计算技术研究所(ICT)开发的Loongson系列处理器)采用的等等的SIMD技术实现应用性能的显著提高(Core™和MMX™是加利福尼亚州Santa Clara的Intel Corporation的注册商标或商标)。
在一个实施例中,目的地和源寄存器/数据可以是代表对应数据或操作的源和目的地的通称。在一些实施例中,它们可以由寄存器、存储器或具有除描述的那些以外的名称或功能的其他存储区实现。例如,在一个实施例中,“DEST1”可以是暂时存储寄存器或其他存储区,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他存储区,等等。在其他实施例中,SRC和DEST存储区中的两个或以上可以对应于相同存储区(例如,SIMD寄存器)内的不同数据存储元素。在一个实施例中,源寄存器中的一个还可以通过例如将对第一和第二源数据执行的操作的结果写回充当目的地寄存器的两个源寄存器中的一个而充当目的地寄存器。
图1A是根据本公开的实施例用可以包括执行单元来执行指令的处理器形成的示范性计算机系统的框图。系统100可以包括例如处理器102等部件,用于采用执行单元(其包括逻辑)以根据本公开(例如在本文描述的实施例中)执行对于过程数据的算法。系统100可以代表基于PENTIUM® III、PENTIUM® 4、Xeon™、Itanium®、XScale™和/或StrongARM™微处理器(从加利福尼亚州Santa Clara 的Intel Corporation可获得)的处理系统,但还可以使用其他系统(其包括具有其他微处理器、工程化工作站、机顶盒及类似物的PC)。在一个实施例中,样本系统100可以执行从华盛顿州Redmond的Microsoft Corporation可获得的WINDOWS™操作系统的版本,但还可以使用其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面。从而,本公开的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本公开的备选实施例可以在例如手持设备和嵌入式应用等其他设备中使用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字拍摄装置、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器(network hub)、广域网(WAN)交换机或可以执行根据至少一个实施例的一个或多个指令的任何其他系统。
计算机系统100可以包括处理器102,其可以包括一个或多个执行单元108用于执行算法来执行根据本公开的一个实施例的至少一个指令。一个实施例可以在单个处理器桌面或服务器系统的上下文中使用,但在多处理器系统中可以包括其他实施例。系统100可以是‘集线器(hub)’系统架构的示例。系统100可以包括处理器102,用于处理数据信号。处理器102可以包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器,或任何其他处理器设备,例如数字信号处理器。在一个实施例中,处理器102可以耦合于处理器总线110,其可以在处理器102与系统100中的其他部件之间传送数据信号。系统100的元件可以执行熟悉本领域的人员众所周知的常规功能。
在一个实施例中,处理器102包括1级(L1)内部高速缓存存储器104。根据架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在另一个实施例中,高速缓存存储器可以驻存在处理器102外部。其他实施例还可以包括内部和外部高速缓存的组合,这取决于特定实现和需要。寄存器堆106可以将不同类型的数据存储在各种寄存器中,其包括整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
执行单元108(其包括用于执行整数和浮点操作的逻辑)也驻存在处理器102中。处理器102还可以包括微代码(u码)ROM,其存储对于某些宏指令的微代码。在一个实施例中,执行单元108可以包括用于处理封装指令集109的逻辑。通过在通用处理器102的指令集中包括封装指令集109,连同关联电路来执行指令,由许多多媒体应用使用的操作可以使用通用处理器102中的封装数据执行。从而,许多多媒体应用可以通过使用全宽处理器数据总线而加速并且更高效执行以用于对封装数据执行操作。这可以消除跨处理器数据总线来传输较小数据单位以每次对一个数据元素执行一个或多个操作的需要。
执行单元108的实施例也可以在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中使用。系统100可以包括存储器120。存储器120可以实现为动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其他存储器设备。存储器120可以存储由可以被处理器102执行的数据信号所代表的指令和/或数据。
系统逻辑芯片116可以耦合于处理器总线110和存储器120。系统逻辑芯片116可以包括存储器控制器集线器(memory controller hub)(MCH)。处理器102可以经由处理器总线110与MCH 116通信。MCH 116为了指令和数据的存储并且为了图形命令、数据和纹理的存储而提供到处理器120的高带宽存储器路径118。MCH 116可以引导在处理器102、存储器120与系统100中的其他部件之间的数据信号并且还在处理器总线110、存储器120与系统I/O122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可以提供图形端口用于耦合于图形控制器112。MCH 116可以通过存储器接口118耦合于存储器120。图形卡112可以通过加速图形端口(AGP)互连114耦合于MCH 116。
系统100可以使用专用集线器接口总线122以使MCH 116耦合于I/O控制器集线器(ICH)130。在一个实施例中,ICH 130可以提供经由本地I/O总线到一些I/O设备的直接连接。本地I/O总线可以包括高速I/O总线,用于使外设连接到存储器120、芯片集和处理器102。示例可以包括音频控制器、固件集线器(闪速BIOS)128、无线收发器126、数据存储124、遗留I/O控制器(其包含用户输入和键盘接口)、串行扩展端口(例如通用串行总线(USB))和网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备或其他大容量存储设备。
对于系统的另一个实施例,根据一个实施例,指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。对于一个这样的系统的存储器可以包括闪速存储器。该闪速存储器可以位于与处理器和其他系统部件相同的晶片(die)上。另外,例如存储器控制器或图形控制器等其他逻辑块也可以位于芯片上系统上。
图1B图示数据处理系统140,其实现本公开的实施例的原理。本领域内技术人员将容易意识到本文描述的实施例可以与备选处理系统一起操作而不偏离本公开的实施例的范围。
根据一个实施例,计算机系统140包括用于执行至少一个指令的处理核159。在一个实施例中,处理核159代表任何类型的架构的处理单元,其包括但不限于CISC、RISC或VLIW型架构。处理核159还可以适合于在一个或多个工艺技术中制造,并且通过足够详细地在机器可读介质上表示而可以适合于促进所述制造。
处理核159包括执行单元142、寄存器堆145的集和解码器144。处理核159还可以包括额外电路(未示出),其对于理解本公开的实施例可以不是必需的。执行单元142可以执行由处理核159接收的指令。除执行典型处理器指令外,执行单元142可以执行封装指令集143中的指令用于对封装数据格式执行操作。封装指令集143可以包括用于执行本公开的实施例的指令和其他封装指令。执行单元142可以通过内部总线耦合于寄存器堆145。寄存器堆145可以代表处理核159上的存储区用于存储信息,其包括数据。如之前提到的,理解,可以存储封装数据的存储区可能不是关键的。执行单元142可以耦合于解码器144。解码器144可以将由处理核159接收的指令解码成控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行合适的操作。在一个实施例中,解码器可以解释指令的操作码,其将指示对在指令内指示的对应数据应执行什么操作。
处理核159可以与总线141耦合用于与各种其他系统设备通信,这些系统设备可以包括但不限于例如同步动态随机存取存储器(SDRAM)控制146、静态随机存取存储器(SRAM)控制147、突发闪速存储器接口148、个人计算机存储卡国际协会(PCMCIA)/快闪(CF)卡控制149、液晶显示器(LCD)控制150、直接存储器访问(DMA)控制器151和备选总线主机接口152。在一个实施例中,数据处理系统140还可以包括I/O桥154,用于经由I/O总线153与各种I/O设备通信。这样的I/O设备可以包括但不限于例如通用异步接收器/传送器(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例提供移动、网络和/或无线通信和可以执行SIMD操作(其包括文本串比较操作)的处理核159。处理核159可用以下来编程:各种音频、视频、成像和通信算法,其包括离散变换,例如沃尔什-哈达玛变换(Walsh-Hadamard transform)、快速傅里叶变换(FFT)、离散余弦变换(DCT)和它们相应的逆变换;压缩/解压技术,例如彩色空间变换、视频编码运动估计或视频解码运动补偿;和调制/解调(MODEM)功能,例如脉冲编码调制(PCM)。
图1C图示执行SIMD文本串比较操作的数据处理系统的其他实施例。在一个实施例中,数据处理系统160可以包括主处理器166、SIMD协处理器161、高速缓存存储器167和输入/输出系统168。输入/输出系统168可以可选地耦合于无线接口169。SIMD协处理器161可以执行操作,其包括根据一个实施例的指令。在一个实施例中,处理核170可以适合于在一个或多个工艺技术中制造,并且通过足够详细地在机器可读介质上表示而可以适合于促进数据处理系统160(其包括处理核170)中的全部或部分的制造。
在一个实施例中,SIMD协处理器161包括执行单元162和寄存器堆164的集。主处理器165的一个实施例包括解码器165,用于识别指令集163的指令(其包括根据一个实施例的指令)以供执行单元162执行。在其他实施例中,SIMD协处理器161还包括解码器165的至少部分,用于对指令集163的指令解码。处理核170还可以包括额外电路(未示出),其对于理解本公开的实施例可以不是必需的。
在操作中,主处理器166执行数据处理指令流,其控制通用型数据处理操作,这些操作包括与高速缓存存储器167和输入/输出系统168的交互。SIMD协处理器指令可以嵌入数据处理指令流内。主处理器166的解码器165将这些SIMD协处理器识别为是应由附连SIMD协处理器161执行的类型。因此,主处理器166在协处理器总线166上发出这些SIMD协处理器指令(或代表SIMD协处理器指令的控制信号)。这些指令可以由任何附连SIMD协处理器从该协处理器总线166接收。在该情况下,SIMD协处理器161可以接受并且执行针对它的任何接收SIMD协处理器指令。
数据可以经由无线接口169接收以供SIMD协处理器指令处理。对于一个示例,语音通信可以采用数字信号的形式接收,该数字信号可以由SIMD协处理器指令处理来重新生成代表语音通信的数字音频样本。对于另一个示例,压缩音频和/或视频可以采用数字位流的形式接收,该数字位流可以由SIMD协处理器指令处理来重新生成数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SIMD协处理器161可以集成到单个处理核170内,该单个处理核170包括执行单元162、寄存器堆164的集和解码器165,用于识别指令集163的指令,其包括根据一个实施例的指令。
图2是根据本公开的实施例可以包括逻辑电路用于执行指令的处理器200的微架构的框图。在一些实施例中,根据一个实施例可以实现指令来对具有字节、字、双字、四字等大小以及数据类型(例如单和双精度整数和浮点数据类型)的数据元素操作。在一个实施例中,有序前端201可以实现处理器200的一部分,其可以提取待执行的指令并且使这些指令准备稍后在处理器流水线中使用。前端201可以包括若干单元。在一个实施例中,指令预提取器(prefetcher)226从存储器提取指令并且将这些指令馈送到指令解码器228,其进而对这些指令解码或解释它们。例如,在一个实施例中,解码器将接收的指令解码为机器可以执行的一个或多个操作,叫作“微指令”或“微操作”(也叫作微op或uop)。在其他实施例中,解码器将指令解析成操作码和对应数据和控制字段,其可以由微架构使用来执行根据一个实施例的操作。在一个实施例中,跟踪高速缓存230可以将解码的uop组装到uop队列234中的程序排序序列或踪迹以供执行。当跟踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需要的uop。
一些指令可以转换成单个微op,而其他需要若干微op来完成全操作。在一个实施例中,如果需要超过四个微op来完成指令,解码器228可以访问微代码ROM 232来执行指令。在一个实施例中,指令可以解码成少量微op用于在指令解码器228处理。在另一个实施例中,如果需要许多微op来完成操作,指令可以存储在微代码ROM 232内。跟踪高速缓存230指的是入口点可编程逻辑阵列(PLA),用于确定用于从微代码ROM 232读取微代码序列来完成根据一个实施例的一个或多个指令的正确微指令指针。在微代码ROM 232完成对于指令的定序微op之后,机器的前端201可以恢复从跟踪高速缓存230提取微op。
乱序执行引擎203可以准备指令以供执行。乱序执行逻辑具有许多缓冲器以在指令流沿流水线向下进行并且被调度以供执行时平滑它们并且对其重新排序来优化性能。分配器逻辑分配每个uop所需要以供执行的机器缓冲器和资源。寄存器重命名逻辑在寄存器堆中的条目上对逻辑寄存器重命名。分配器还对两个uop队列(一个针对存储器操作并且一个针对非存储器操作)中的一个中的每个uop分配条目,这在以下的指令调度器前面:存储器调度器、快速调度器202、慢/一般浮点调度器204和简单浮点调度器206。Uop调度器202、204、206基于它们的相关输入寄存器操作数源的准备就绪和uop完成它们的操作所需要的执行资源的可用性来确定uop是否准备执行。一个实施例的快速调度器202可以在每半个主时钟周期上调度而其他调度器每主处理器时钟周期仅可以调度一次。调度器仲裁调派端口来调度uop以供执行。
寄存器堆208、210可以设置在调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。寄存器堆208、210中的每个分别执行整数和浮点操作。每个寄存器堆208、210可以包括旁路网络,其可以将刚刚完成的还未写入寄存器堆的结果旁路或转发到新的相关uop。整数寄存器堆208和浮点寄存器堆210可以与另一个传达数据。在一个实施例中,整数寄存器堆208可以分成两个独立寄存器堆,一个寄存器堆针对低阶三十二位数据并且第二寄存器堆针对高阶三十二位数据。因为浮点指令典型地具有在宽度上从64至128个位的操作数,浮点寄存器堆210可以包括128位宽的条目。
执行块211可以包含执行单元212、214、216、218、220、222、224。执行单元212、214、216、218、220、222、224可以执行指令。执行块211可以包括寄存器堆208、210,其存储微指令执行所需要的整数和浮点数据操作数值。在一个实施例中,处理器200可以包括许多执行单元:地址生成单元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢ALU 220、浮点ALU222、浮点移动单元224。在另一个实施例中,浮点执行块222、224可以执行浮点、MMX、SIMD和SSE或其他操作。在再另一个实施例中,浮点ALU 222可以包括64位x 64位浮点除法器(divider),用于执行除法、平方根和余数(remainder)微op。在各种实施例中,牵涉浮点值的指令可以用浮点硬件来处理。在一个实施例中,ALU操作可以传递到高速ALU执行单元216、218。高速ALU 216、218可以以半个时钟周期的高效延迟来执行快速操作。在一个实施例中,大部分复杂整数操作转到慢ALU 220,因为慢ALU 220可以包括对于长延迟型操作(例如乘数、移位、标志逻辑和分支处理)的整数执行硬件。存储器加载/存储操作由AGU 212、214执行。在一个实施例中,整数ALU 216、218、220可以对64位数据操作数执行整数操作。在其他实施例中,可以实现ALU 216、218、220来支持多种数据位大小,其包括十六、三十二、128、256等。相似地,可以实现浮点单元222、224来支持具有各种宽度的位的一系列操作数。在一个实施例中,浮点单元222、224可以结合SIMD和多媒体指令对128位宽的封装数据操作数操作。
在一个实施例中,uop调度器202、204、206在父类加载完成执行之前调派相关操作。因为在处理器200中可以推测性地调度和执行uop,处理器200还可以包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,在流水线中可以存在运行中的相关操作,其对调度器留下暂时不正确的数据。回放机构跟踪并且重新执行使用不正确数据的指令。仅相关操作可需要被回放并且可以允许完成独立操作。处理器的一个实施例的调度器和回放机构还可以设计成捕捉对于文本串比较操作的指令序列。
术语“寄存器”可以指的是板载处理器存储位点,其可以用作用于识别操作数的指令的部分。就是说,寄存器可以是可能来自处理器外部的可用的那些(从编程方的角度来看)。然而,在一些实施例中,寄存器可不限于特定类型的电路。相反,寄存器可以存储数据、提供数据,并且执行本文描述的功能。本文描述的寄存器可以由处理器内的电路使用任何数量的不同技术实现,例如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆还包含对于封装数据的八个多媒体SIMD寄存器。对于下文的论述,寄存器可以理解为设计成持有封装数据的数据寄存器,例如用来自加利福尼亚州SantaClara 的Intel Corporation的MMX技术实现的微处理器中的 64位宽MMX™寄存器(在一些实例中也称为‘mm’寄存器)。这些MMX寄存器(采用整数和浮点形式都可用)可以用伴随SIMD和SSE指令的封装数据元素来操作。相似地,涉及SSE2、SSE3、SSE4或以后(一般称为“SSEx”)技术的128位宽XMM寄存器可以持有这样的封装数据操作数。在一个实施例中,在存储封装数据和整数数据中,寄存器不必区分这两个数据类型。在一个实施例中,整数和浮点可以包含在相同寄存器堆或不同寄存器堆中。此外,在一个实施例中,浮点和整数数据可以存储在不同寄存器或相同寄存器中。
在下列图的示例中,可以描述许多数据操作数。图3A图示根据本公开的实施例在多媒体寄存器中的各种封装数据类型表示。图3A图示对于128位宽操作数的封装字节310、封装字320和封装双字(dword)330的数据类型。该示例的封装字节格式310可以是128位长并且包含十六个封装字节数据元素。字节例如可以定义为八位数据。对于每个字节数据元素的信息可以存储在位7至位0(对于字节0)、位15至位8(对于字节1)、位23至位16(对于字节2)和最后位120至位127(对于字节15)中。从而,在寄存器中可以使用所有可用位。该存储设置使处理器的存储效率增加。随着访问十六个数据元素,现在也可以并行对十六个数据元素执行一个操作。
一般,数据元素可以包括存储在单个寄存器或存储器位点(具有相同长度的其他数据元素)中的个体数据片段(piece)。在涉及SSEx技术的封装数据序列中,存储在XMM寄存器中的数据元素的数量是128位除以个体数据元素的位的长度。相似地,在涉及MMX和SSE技术的封装数据序列中,存储在MMX寄存器中的数据元素的数量可以是64位除以个体数据元素的位的长度。尽管在图3A中图示的数据类型可以是128位长,本公开的实施例还可以用64位宽或其他大小的操作数来操作。该示例的封装字格式320可以是128位长并且包含八个封装字数据元素。每个封装字包含十六位的信息。图3A的封装双字格式330可以是128位长并且包含四个封装双字数据元素。每个封装双字数据元素包含三十二位的信息。封装四字是128位长并且包含两个封装四字数据元素。
图3B图示根据本公开的实施例的可能寄存器中数据存储格式。每个封装数据可以包括超过一个独立数据元素。图示三个封装数据格式:封装半个341、封装单个342和封装双343。封装半个341、封装单个342和封装双343的一个实施例包含固定点数据元素。对于另一个实施例,封装半个341、封装单个342和封装双343中的一个或多个可以包含浮点数据元素。封装半个341的一个实施例可以是128位长,其包含八个16位数据元素。封装单个342的一个实施例是128位长并且包含四个32位数据元素。封装双343的一个实施例是128位长并且包含两个64位数据元素。将意识到这样的封装数据格式可以进一步扩展到其他寄存器长度,例如到96位、160位、192位、224位、256位或更多。
图3C图示根据本公开的实施例在多媒体寄存器中的各种有符号和无符号封装数据类型表示。无符号封装字节表示344图示SIMD寄存器中无符号封装字节的存储。对于每个字节数据元素的信息可以存储在位7至位0(对于字节0)、位15至位8(对于字节1)、位23至位16(对于字节2)等,并且最后位120至位127(对于字节15)。从而,所有可用位可以在寄存器中使用。该存储设置可以使处理器的存储效率增加。随着访问十六个数据元素,现在也可以采用并行方式对十六个数据元素执行一个操作。有符号封装字节表示345图示有符号封装字节的存储。注意每个字节数据元素的第八个位可以是符号指示符。无符号封装字表示346图示字七至字零可以如何存储在SIMD寄存器中。有符号封装字表示347可以与寄存器中无符号封装字表示346相似。注意每个字数据元素的第十六个位可以是符号指示符。无符号封装双字表示348示出如何存储双字数据元素。有符号封装双字表示349可以与寄存器中无符号封装双字表示348相似。注意必需的符号位可以是每个双字数据元素的第三十二个位。
图3D图示操作编码(操作码)的实施例。此外,格式360可以包括寄存器/存储器操作数寻址模式,其与在“IA-32 Intel Architecture Software Developer's ManualVolume 2: Instruction Set Reference(从加利福尼亚州Santa Clara 的IntelCorporation在万维网(www) intel.com/design/litcentr上可获得)中描述的操作码格式类型相对应。在一个实施例中,指令可以由字段361和362中的一个或多个编码。可以识别每指令多至两个操作数位点,其包括多至两个源操作数标识符364和365。在一个实施例中,目的地操作数标识符366可以与源操作数标识符364相同,而在其他实施例中它们可以不同。在另一个实施例,目的地操作数标识符366可以与源操作数标识符365相同,而在其他实施例中它们可以不同。在一个实施例中,由源操作数标识符364和365识别的源操作数中的一个被文本串比较操作的结果盖写,而在其他实施例中标识符364对应于源寄存器元素并且标识符365对应于目的地寄存器元素。在一个实施例中,操作数标识符364和365可以识别32位或64位源和目的地操作数。
图3E图示根据本公开的实施例的另一个可能操作编码(操作码)格式370,其具有四十个或以上的位。操作码格式370与操作码格式360相对应并且包括可选的前缀字节378。根据一个实施例的指令可以由字段378、371和372中的一个或多个编码。每指令多至两个操作数位点可以由源操作数标识符374和375并且由前缀字节378识别。在一个实施例中,前缀字节378可以用于识别32位或64位源和目的地操作数。在一个实施例中,目的地操作数标识符376可以与源操作数标识符374相同,而在其他实施例中它们可以不同。对于另一个实施例,目的地操作数标识符376可以与源操作数标识符375相同,而在其他实施例中它们可以不同。在一个实施例中,指令对由操作数标识符374和375识别的操作数中的一个或多个操作并且由操作数标识符374和375识别的一个或多个操作数可以被指令的结果盖写,而在其他实施例中,由标识符374和375识别的操作数可以写入另一个寄存器中的另一个数据元素。操作码格式360和370允许寄存器到寄存器、存储器到寄存器、由存储器对寄存器、由寄存器对寄存器、通过立即值(immediate)对寄存器、寄存器到存储器的寻址,其部分由MOD字段363和373并且由可选的标度-索引-基址(scale-index-base)和位移字节规定。
图3F图示根据本公开的实施例的再另一个可能操作编码(操作码)格式。64位单指令多数据(SIMD)架构操作可以通过协处理器数据处理(CDP)指令来执行。操作编码(操作码)格式380描绘一个这样的CDP指令,其具有CDP操作码字段382-389。对于另一个实施例,该类CDP指令操作可以由字段383、384、387和388中的一个或多个编码。可以识别每指令多至三个操作数位点,其包括多至两个源操作数标识符385和390和一个目的地操作数标识符386。协处理器的一个实施例可以对八、十六、三十二和64位值操作。在一个实施例中,可以对整数数据元素执行指令。在一些实施例中,指令可以使用条件字段381有条件地执行。对于一些实施例,源数据大小可以由字段383编码。在一些实施例中,零(Z)、负(N)、进位(C)和溢出(V)检测可以在SIMD字段上进行。对于一些指令,饱和类型可以由字段384编码。
图4A是图示根据本公开的实施例的有序流水线和寄存器重命名段、乱序发出/执行流水线的框图。图4B是图示根据本公开的实施例要包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发出/执行逻辑的框图。图4A中的实线框图示有序流水线,而虚线框图示寄存器重命名、乱序发出/执行流水线。相似地,图4B中的实线框图示有序架构逻辑,而虚线框图示寄存器重命名逻辑和乱序发出/执行逻辑。
在图4A中,处理器流水线400可以包括提取段402、长度解码段404、解码段406、分配段408、重命名段410、调度(也称为调派或发出)段412、寄存器读取/存储器读取段414、执行段416、写回/存储器写段418、异常处理段422和提交段424。
在图4B中,箭头指示两个或以上单元之间的耦合并且箭头方向指示那些单元之间的数据流的方向。图4B示出处理器核490,其包括耦合于执行引擎单元450的前端单元430,并且两者都可以耦合于存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或备选核类型。在一个实施例中,核490可以是专用核,例如网络或通信核、压缩引擎、图形核或类似物。
前端单元430可以包括分支预测单元432,其耦合于指令高速缓存单元434。指令高速缓存单元434可以耦合于指令翻译后备缓冲器(TLB)436。TLB 436可以耦合于指令提取单元438,其耦合于解码单元440。解码单元440可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,它们从原始指令解码或用别的方式反映原始指令或可以从原始指令得到。解码器可以使用各种不同的机构实现。适合机构的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,指令高速缓存单元434可以进一步耦合于存储器单元470中的2级(L2)高速缓存单元476。解码单元440可以耦合于执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450可以包括重命名/分配器单元452,其耦合于引退单元454和一个或多个调度器单元456的集。调度器单元456代表任何数量的不同调度器,其包括预留站、中央指令窗口等。调度器单元456可以耦合于物理寄存器堆单元458。物理寄存器堆单元458中的每个代表一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同数据类型,例如标量整数、标量浮点、封装整数、封装浮点、向量整数、向量浮点等、状态(例如,是待执行的下一个指令的地址的指令指针)等。物理寄存器堆单元458可以与引退单元154重叠来说明可以实现寄存器重命名和乱序执行所采用的多种方式(例如,使用一个或多个重排序缓冲器以及一个或多个引退寄存器堆、使用一个或多个未来文件、一个或多个历史缓冲器以及一个或多个引退寄存器堆;使用寄存器映射和寄存器池;等)。一般,架构寄存器可以从处理器外部或从编程方的角度可见。寄存器可不限于任何已知特定类型的电路。各种不同类型的寄存器可以是适合的,只要它们存储并且提供如本文描述的数据即可。适合寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等。引退单元454和物理寄存器堆单元458可以耦合于执行集群460。执行集群460可以包括一个或多个执行单元462的集和一个或多个存储器访问单元464的集。执行单元462可以对各种类型的数据(例如,标量浮点、封装整数、封装浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集的许多执行单元,其他实施例可以仅包括一个执行单元或多个执行单元,其全部执行所有功能。调度器单元456、物理寄存器堆单元458和执行集群460示出为可能是复数,因为某些实施例对某些类型的数据/操作(例如,标量整数流水线、标量浮点/封装整数/封装浮点/向量整数/向量浮点流水线,和/或存储器访问流水线,每个具有它们自己的调度器单元、物理寄存器堆单元和/或执行集群-并且在独立存储器访问流水线的情况下,可以实现某些实施例,其中仅该流水线的执行集群具有存储器访问单元464)创建独立流水线。还应理解在使用独立流水线的情况下,这些流水线中的一个或多个可以是乱序发出/执行并且余下的是有序的。
存储器访问单元464集可以耦合于存储器单元470,其可以包括耦合于数据高速缓存单元474的数据TLB单元472,该数据高速缓存单元474耦合于2级(L2)高速缓存单元476。在一个示范性实施例中,存储器访问单元464可以包括加载单元、存储地址单元和存储数据单元,其中的每个可以耦合于存储器单元470中的数据TLB单元472。L2高速缓存单元476可以耦合于一个或多个其他级高速缓存并且最终耦合于主存储器。
通过示例,示范性寄存器重命名、乱序发出/执行核架构可以如下实现流水线400:1)指令提取438可以执行提取和长度解码段402和404;2)解码单元440可以执行解码段406;3)重命名/分配器单元452可以执行分配段408和重命名段410;4)调度器单元456可以执行调度段412;5)物理寄存器堆单元458和存储器单元470可以执行寄存器读取/存储器读取段414;执行集群460可以执行执行段416;6)存储器单元470和物理寄存器堆单元458可以执行写回/存储器写段418;7)在异常处理段422的执行中可以牵涉各种单元;以及8)引退单元454和物理寄存器堆单元458可以执行提交段424。
核490可以支持一个或多个指令集(例如,x86指令集(具有添加有较新版本的一些扩展));加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集;加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(具有可选的额外扩展,例如NEON)。
应理解核可以采用多种方式支持多线程化(执行两个或以上并行操作或线程集)。多线程化支持可以例如通过包括时间分片多线程化、同时多线程化(其中单个物理核对物理核正同时多线程化的线程中的每个提供逻辑核)或其组合来执行。这样的组合可以包括例如时间分片提取和解码以及之后的同时多线程化,例如在Intel® Hyperthreading技术中。
尽管寄存器重命名可以在乱序执行的上下文中描述,应理解寄存器重命名可以在有序架构中使用。尽管处理器的图示实施例还可以包括独立指令和数据高速缓存单元434/474和共享L2高速缓存单元476,其他实施例可以具有对于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存,或多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。在其他实施例中,高速缓存中的全部可以在核和/或处理器外部。
图5A是根据本公开的实施例的处理器500的框图。在一个实施例中,处理器500可以包括多核处理器。处理器500可以包括系统代理510,其通信耦合于一个或多个核502。此外,核502和系统代理510可以通信耦合于一个或多个高速缓存506。核520、系统代理510和高速缓存506可以经由一个或多个存储器控制单元552而通信耦合。此外,核502、系统代理510和高速缓存506可以经由存储器控制单元552通信耦合于图形模块560。
处理器500可以包括用于互连核502、系统代理510和高速缓存506以及图形模块560的任何适合的机构。在一个实施例中,处理器500可以包括基于环的互连单元508,用于互连核502、系统代理510和高速缓存506以及图形模块560。在其他实施例中,处理器500可以包括用于互连这样的单元的任何数量的众所周知的技术。基于环的互连单元508可以使用存储器控制单元552来促进互连。
处理器500可以包括存储器层级,其包括核内的一级或多级高速缓存、一个或多个共享高速缓存单元(例如高速缓存506)或耦合于集成存储器控制器单元552的集的外部存储器(未示出)。高速缓存506可以包括任何适合的高速缓存。在一个实施例中,高速缓存506可以包括一个或多个中间级高速缓存(例如2级(L2)、3级(L3)、4级(L4))或其他级高速缓存)、最后级高速缓存(LLC)和/或其组合。
在各种实施例中,核502中的一个或多个可以执行多线程化。系统代理510可以包括用于协调并且操作核502的部件。系统代理单元510可以包括例如功率控制单元(PCU)。PCU可以是或包括用于调节核502的功率状态所需要的逻辑和部件。系统代理510可以包括显示引擎512,用于驱动一个或多个外部连接的显示器或图形模块560。系统代理510可以包括对于图形的通信总线的接口1214。在一个实施例中,接口1214可以由PCI Express(PCIe)实现。在另外的实施例中,接口1214可以由PCI Express Graphics(PEG)实现。系统代理510可以包括直接媒体接口(DMI)516。DMI 516可以在计算机系统的主板或其他部分上的不同桥之间提供链路。系统代理510可以包括PCIe桥1218,用于提供到计算系统的其他元件的PCIe链路。PCIe链路1218可以使用存储器控制器1220和一致性逻辑1222实现。
核520可以采用任何适合的方式实现。核502从架构和/或指令集方面可以是同构或异构的。在一个实施例中,核502中的一些可以是有序的,而其他可以是乱序的。在另一个实施例中,核502中的两个或以上可以执行相同指令集,而其他可以仅执行该指令集的子集或不同的指令集。
处理器500可以包括通用处理器,例如Core™ i3、i5、i7、2 Duo和Quad、Xeon™、Itanium™、XScale™或StrongARM™处理器,其可以从加利福尼亚州Santa Clara 的IntelCorporation可获得。处理器500可以由另一个公司提供,例如ARM Holdings, Ltd、MIPS等。处理器500可以是专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器或类似物。处理器500可以在一个或多个芯片上实现。处理器500可以是一个或多个衬底的一部分和/或可以使用工艺技术(例如,BiCMOS、CMOS或NMOS)中的任一个在一个或多个衬底上实现。
在一个实施例中,高速缓存506中的指定一个可以被多个核520共享。在另一个实施例中,高速缓存506中的指定一个可以专用于一个核502。对核503指派高速缓存506可以由高速缓存控制器或其他机构处理。高速缓存506中的指定一个可以由两个或以上的核502通过实现指定高速缓存506的时间切片而共享。
图形模块560可以实现集成图形处理子系统。在一个实施例中,图形模块560可以包括图形处理器。此外,图形模块560可以包括媒体引擎565。媒体引擎565可以提供媒体编码和视频解码。
图5B是根据本公开的实施例的核502的示例实现的框图。核502可以包括前端570,其通信耦合于乱序引擎580。核502可以通过高速缓存层级503而通信耦合于处理器500的其他部分。
前端570可以采用任何适合的方式实现,例如完全或部分由如上文描述的前端201实现。在一个实施例中,前端570可以通过高速缓存层级503与处理器500的其他部分通信。在另外的实施例中,前端570可以从处理器500的部分提取指令并且在将这些指令传递到乱序执行引擎580时使它们准备稍后在处理器流水线中使用。
乱序执行引擎580可以采用任何适合的方式实现,例如完全或部分由如上文描述的乱序执行引擎203实现。乱序执行引擎580可以使从前端570接收的指令准备供执行。乱序执行引擎580可以包括分配模块1282。在一个实施例中,分配模块1282可以分配处理器500的资源或其他资源(例如寄存器或缓冲器)来执行指定指令。分配模块1282可以在调度器(例如存储器调度器、快速调度器或浮点调度器)中进行分配。这样的调度器在图5B中可以由资源调度器584表示。分配模块1282可以完全或部分由结合图2描述的分配逻辑实现。资源调度器584可以基于指定资源的源准备就绪以及执行指令所需要的执行资源的可用性来确定指令何时准备执行。资源调度器584可以由例如如上文描述的调度器202、204、206实现。资源调度器584可以对一个或多个资源调度指令的执行。在一个实施例中,这样的资源可以在核502内部,并且可以例如图示为资源586。在另一个实施例中,这样的资源可以在核502外部并且可以由例如高速缓存层级503可访问。资源可以包括例如存储器、高速缓存、寄存器堆或寄存器。核502内部的资源可以由图5B中的资源586表示。在必要时,写入资源586或从资源586读取的值可以通过例如高速缓存层级503与处理器500的其他部分协调。因为指令是指派的资源,可以将它们放入重排序缓冲器588。重排序缓冲器588可以在执行指令时跟踪它们并且可以基于处理器500的任何适合的准则来选择性地对它们的指令重排序。在一个实施例中,重排序缓冲器588可以识别可以独立执行的指令或一系列指令。这样的指令或指令系列可以与其他这样的指令并行执行。核502中的并行执行可以由任何适合数量的独立执行块或虚拟处理器执行。在一个实施例中,共享资源-例如存储器、寄存器和高速缓存-可以对于指定核502内的多个虚拟处理器是可访问的。在其他实施例中,共享资源可以对于处理器500内的多个处理实体是可访问的。
高速缓存层级503可以采用任何适合的方式实现。例如,高速缓存层级503可以包括一个或多个较低或中间级高速缓存,例如高速缓存572、574。在一个实施例中,高速缓存层级503可以包括LLC 595,其通信耦合于高速缓存572、574。在另一个实施例中,LLC 595可以在对于处理器500的所有处理实体可访问的模块590中实现。在另外的实施例中,模块590可以在来自Intel, Inc.的处理器的非核模块中实现。模块590可以包括对于核502执行所必需但可不在核502内实现的处理器500的部分或子系统。除LLC 595外,模块590可以包括例如硬件接口、存储器一致性协调器、处理器间互连、指令流水线或存储器控制器。对于处理器500可用的RAM 599的访问可以通过模块590并且更特定地通过LLC 595进行。此外,核502的其他实例可以相似地访问模块590。核502的实例的协调可以部分通过模块590而得以促进。
图6-8可以图示适合于包括处理器500的示范性系统,而图9可以图示示范性芯片上系统(SoC),其可以包括核502中的一个或多个。本领域内已知的对于膝上型电脑、台式机、手持PC、个人数字助理、工程化工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和实现也可以是适合的。一般,包含如本文公开的处理器和/或其他执行逻辑的很多种系统或电子设备一般可以是适合的。
图6示出根据本公开的实施例的系统600的框图。系统600可以包括一个或多个处理器610、615,其可以耦合于图形存储器控制器集线器(GMCH)620。额外处理器615的可选性质在图6中用虚线指示。
每个处理器610、615可以是处理器500的某一版本。然而,应注意集成图形逻辑和集成存储器控制单元可不在处理器610、615中存在。图6图示GMCH 620可以耦合于存储器640,其可以是例如动态随机存取存储器(DRAM)。DRAM对于至少一个实施例可以与非易失性高速缓存关联。
GMCH 620可以是芯片集或芯片集的一部分。GMCH 620可以与处理器610、615通信并且控制处理器610、615与存储器640之间的交互。GMCH 620还可以充当处理器610、615与系统600的其他元件之间的加速总线接口。在一个实施例中,GMCH 620经由多点总线(例如前端总线(FSB)695)而与处理器610、615通信。
此外,GMCH 620可以耦合于显示器645(例如平板显示器)。在一个实施例中,GMCH620可以包括集成图形加速器。GMCH 620可以进一步耦合于输入/输出(I/O)控制器集线器(ICH)650,其可以用于使各种外围设备耦合于系统600。外部图形设备660可以包括连同另一个外围设备670一起耦合于ICH 650的分立图形设备。
在其他实施例中,在系统600中还可以存在额外或不同的处理器。例如,额外处理器610、615可以包括可以与处理器610相同的额外处理器、可以与处理器610异构或不对称的额外处理器、加速器(例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。从品质(包括架构、微架构、热、功耗特性及类似物)的度量谱方面来看,在物理资源610、615之间可以存在多种差异。这些差异可以使它们自身有效地表现为处理器610、615之中的不对称和异构性。对于至少一个实施例,各种处理器610、615可以驻存在相同的晶片封装(die package)中。
图7示出根据本公开的实施例的第二系统700的框图。如在图7中示出的,多处理器系统700可以包括点到点互连系统,并且可以包括经由点到点互连750而耦合的第一处理器770和第二处理器780。处理器770和780中的每个可以是处理器500的某一版本(作为处理器610、615中的一个或多个)。
尽管图7可以图示两个处理器770、780,要理解本公开的范围不受此限制。在其他实施例中,在指定处理器中可以存在一个或多个额外处理器。
示出处理器770和780,其分别包括集成存储器控制器单元772和782。处理器770还可以包括点到点(P-P)接口776和778作为它的总线控制器单元的部分;相似地,第二处理器780可以包括P-P接口786和788。处理器770、780可以使用P-P接口电路778、788经由点到点(P-P)接口750来交换信息。如在图7中示出的,IMC 772和782可以使处理器耦合于相应存储器,即存储器732和存储器734,其在一个实施例中可以是本地附连到相应处理器的主存储器的部分。
处理器770、780每个可以使用点到点接口电路776、794、786、798经由个体P-P接口752、754而与芯片集790交换信息。在一个实施例中,芯片集790还可以经由高性能图形接口739而与高性能图形电路738交换信息。
共享高速缓存(未示出)可以包括在任一处理器中或在两个处理器外部,然而经由P-P互连与处理器连接,使得如果处理器被放置到低功率模式则任一或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片集790可以经由接口796耦合于第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PCI)总线,或例如PCI Express总线或另一个第三代I/O互连总线等总线,但本公开的范围不受此限制。
如在图7中示出的,各种I/O设备714连同总线桥718可以耦合于第一总线716,该总线桥718使第一总线716耦合于第二总线720。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。各种设备可以耦合第二总线720,其包括例如键盘和/或鼠标722、通信设备727和存储单元728,例如盘驱动器或其他大容量存储设备,其在一个实施例中可以包括指令/代码和数据730。此外,音频I/O 724可以耦合于第二总线720。注意其他架构可以是可能的。例如,代替图7的点到点架构,系统可以实现多点总线或其他这样的架构。
图8示出根据本公开的实施例的第三系统800的框图。图7和图8中的类似元件具有类似的标号,并且图7的某些方面已经从图8省略以避免混淆图8的其他方面。
图8图示处理器870、880可以分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可以包括集成存储器控制器单元,例如在上文连同图5和7描述的。另外,CL 872、882还可以包括I/O控制逻辑。图8图示不仅存储器832、834可以耦合于CL 872、882,而且I/O设备814也可以耦合于控制逻辑872、882。遗留I/O设备815可以耦合于芯片集890。
图9示出根据本公开的实施例的SoC 900的框图。图5中的相似元件具有类似的标号。虚线框也可表示更先进SoC上的可选特征。互连单元902可以耦合于:应用处理器910,其可以包括一个或多个核902A-N的集和共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一个或多个媒体处理器920的集,其可以包括集成图形逻辑908、用于提供静物和/或视频拍摄装置功能性的图像处理器924、用于提供硬件音频加速的音频处理器926和用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器访问(DMA)单元932;和显示单元940,用于耦合于一个或多个外部显示器。
图10图示根据本公开的实施例的处理器,其包含可以执行至少一个指令的中央处理单元(CPU)和图形处理单元(GPU)。在一个实施例中,执行根据至少一个实施例的操作的指令可以由CPU执行。在另一个实施例中,指令可以由GPU执行。在再另一个实施例中,指令可以通过由GPU和CPU执行的操作的组合来执行。例如,在一个实施例中,根据一个实施例的指令可被接收和解码以供在GPU上执行。然而,解码指令内的一个或多个操作可以由CPU执行并且结果返回GPU以用于指令的最后引退。相反,在一些实施例中,CPU可以充当主处理器并且GPU充当协处理器。
在一些实施例中,从高度并行吞吐量处理器获益的指令可可以由GPU执行,而从处理器(其从深度流水化架构获益)的性能获益的指令可以由CPU执行。例如,图形、科学应用、金融应用和其他并行工作负荷可以从GPU的性能获益并且相应地被执行,而更多的有序应用(例如操作系统内核或应用代码)可以更适合CPU。
在图10中,处理器1000包括CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、存储器接口控制器1045、MIPI控制器1050、闪速存储器控制器1055、双数据速率(DDR)控制器1060、安全引擎1065和I2S/I2C控制器1070。其他逻辑和电路可以包括在图10的处理器中,其包括更多CPU或GPU和其他外围接口控制器。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性数据实现,该代表性数据代表处理器内的各种逻辑,其在被机器读取时促使该机器装配逻辑来执行本文描述的技术。这样的表示(称为“IP核”)可以存储在有形的机器可读介质(“带”)上并且供应给各种客户或装配设施来装入实际上制作逻辑或处理器的装配机器。例如,IP核(例如由ARM Holdings, Ltd.开发的Cortex™系列处理器和中国科学院计算技术研究所(ICT)开发的Loongson IP核)可授权或出售给各种客户或被许可方(例如TexasInstruments、Qualcomm,、Apple或Samsung)并且在由这些客户或被许可方生产的处理器中实现。
图11图示框图,其图示根据本公开的实施例的IP核的开发。存储1130可以包括模拟软件1120和/或硬件或软件模型1110。在一个实施例中,代表IP核设计的数据可以经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160提供给存储1130。由模拟工具和模型生成的IP核信息然后可以传送到装配设施,在这里它可以由第三方装配,用于执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可以对应于第一类型或架构(例如,x86)并且在具有不同类型或架构(例如,ARM)的处理器上翻译或仿真。根据一个实施例的指令因此可以在任何处理器或处理器类型上执行,其包括ARM、x86、MIPS、GPU或其他处理器类型或架构。
图12图示根据本公开的实施例、不同类型的处理器如何可以仿真第一类型的指令。在图12中,程序1205包含可以执行与根据一个实施例的指令相同或大致相同功能的一些指令。然而,程序1205的指令可以具有与处理器1215不同或不兼容的类型和/或格式,这意指程序1205中该类型的指令可能不能由处理器1215本机执行。然而,借助于仿真逻辑1210,程序1205的指令可以翻译成可以被处理器1215本机执行的指令。在一个实施例中,仿真逻辑可以在硬件中体现。在另一个实施例中,仿真逻辑可以在有形的机器可读介质中体现,该有形的机器可读介质包含用于将程序1205中该类型的指令翻译成由处理器1215本机可执行的类型的软件。在其他实施例中,仿真逻辑可以是固定功能(fixed function)或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施例中,仿真逻辑在处理器外部存在并且可以由第三方提供。在一个实施例中,处理器可以通过执行处理器中包含或与处理器关联的微代码或固件而加载有形的机器可读介质(其包含软件)中体现的仿真逻辑。
图13图示根据本公开的实施例对比用于将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在图示的实施例中,指令转换器可以是软件指令转换器,但指令转换器可以在软件、固件、硬件或其各种组合中实现。图13示出采用高级语言1302的程序可以使用x86编译器1304编译来生成x86二进制代码1306,其可以由具有至少一个x86指令集核1316的处理器本机执行。具有至少一个x86指令集核1316的处理器代表任何处理器,其可以通过以下而执行与具有至少一个x86指令集核的Intel处理器大致相同的功能以便实现与具有至少一个x86指令集核的Intel处理器大致相同的结果:兼容地执行或用别的方式处理(1)Intel x86指令集核的指令集的相当大一部分或(2)以在具有至少一个x86指令集核的Intel处理器上运行为目标的应用或其他软件的目标代码版本。x86编译器1304代表可以可操作成生成x86二进制代码1306(例如,目标代码)的编译器,这些x86二进制代码1306可以在具有或没有额外链接处理的情况下在具有至少一个x86指令集核1316的处理器上执行。相似地,图13示出采用高级语言1302的程序可以使用备选指令集编译器1308编译来生成备选指令集二进制代码1310,其可以由没有至少一个x86指令集核1314的处理器(例如,具有执行加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集和/或执行加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集的核的处理器)本机执行。指令转换器1312可以用于将x86二进制代码1306转换成可以由没有x86指令集核1314的处理器本机执行的代码。该转换代码可不与备选指令集二进制代码1310相同;然而,转换代码将完成一般操作并且由来自备选指令集的指令构成。从而,指令转换器1312代表软件、固件、硬件或其组合,其通过仿真、模拟或任何其他过程而允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1306。
图14是根据本公开的实施例的处理器的指令集架构1400的框图。指令集架构1400可以包括任何适合数量或种类的部件。
例如,指令集架构1400可以包括处理实体,例如一个或多个核1406、1407和图形处理单元1415。核1406、1407可以通过任何适合的机构(例如通过总线或高速缓存)通信耦合于指令集架构1400的余下部分。在一个实施例中,核1406、1407可以通过L2高速缓存控制1408(其可以包括总线接口单元1409和L2高速缓存1410)而通信耦合。核1406、1407和图形处理单元1415可以通过互连1410而通信耦合于彼此以及指令集架构1400的剩余部分。在一个实施例中,图形处理单元1415可以使用视频代码1420,其限定将对特定视频信号编码和解码以供输出所采用的方式。
指令集架构1400还可以包括用于与电子设备或系统的其他部分接口或通信的任何数量或种类的接口、控制器或其他机构。这样的机构可以促进与例如外设、通信设备、其他处理器或存储器的交互。在图14的示例中,指令集架构1400可以包括液晶显示器(LCD)视频接口1425、订户接口模块(SIM)接口1430、引导ROM接口1435、同步动态随机存取存储器(SDRAM)控制器1440、闪速控制器1445和串行外围接口(SPI)主单元1450。LCD视频接口1425可以提供视频信号从例如GPU 1415的输出并且通过例如移动工业处理器接口(MIPI)1490或高清晰度多媒体接口(HDMI)1495将其提供到显示器。这样的显示器可以包括例如LCD。SIM接口1430可以提供对或从SIM卡或设备的访问。SDRAM控制器1440可以提供对或从例如SDRAM芯片或模块等存储器的访问。闪速控制器1445可以提供对或从例如闪速存储器或RAM的其他实例等存储器的访问。SPI主单元1450可以提供对或从通信模块(例如蓝牙模块1470、高速3G调制解调器1475、全球定位系统模块1480或实现例如802.11等通信标准的无线模块1485)的访问。
图15是根据本公开的实施例的处理器的指令集架构1500的更详细框图。指令架构1500可以实现指令集架构1400的一个或多个方面。此外,指令集架构1500可以图示用于在处理器内执行指令的模块和机构。
指令架构1500可以包括存储器系统1540,其通信耦合于一个或多个执行实体1565。此外,指令架构1500可以包括高速缓存和总线接口单元,例如通信耦合于执行实体1565和存储器系统1540的单元1510。在一个实施例中,指令到执行实体1564内的加载可以由一个或多个执行段执行。这样的段可以包括例如指令预提取段1530、双指令解码段1550、寄存器重命名段1555、发出段1560和写回段1570。
执行实体1565可以包括任何适合数量和种类的机构,处理器可以通过这些机构执行指令。在图15的示例中,执行实体1565可以包括ALU/乘法单元(MUL)1566、ALU 1567和浮点单元(FPU)1568。在一个实施例中,这样的实体可以使用指定地址1569内包含的信息。执行实体1565结合段1530、1550、1555、1560、1570可以共同形成执行单元。
单元1510可以采用任何适合的方式实现。在一个实施例中,单元1510可以执行高速缓存控制。在这样的实施例中,单元1510从而可以包括高速缓存1525。高速缓存1525在另外的实施例中可以实现为具有任何适合大小(例如零、128k、256k、512k、1M或2M字节存储器)的L2统一高速缓存。在另一个另外的实施例中,高速缓存1525可以在纠错码存储器中实现。在另一个实施例中,单元1510可以执行到处理器或电子设备的其他部分的总线接口。在这样的实施例中,单元1510从而可以包括总线接口单元1520,用于通过互连、处理器内总线、处理器间总线或其他通信总线、端口或线路来通信。总线接口单元1520可以提供接口以便执行例如存储器和输入/输出地址的生成以用于在执行实体1565与指令架构1500外部的系统的部分之间传输数据。
为了进一步促进该功能,总线接口单元1520可以包括中断控制和分配单元1511,用于对处理器或电子设备的其他部分生成中断和其他通信。在一个实施例中,总线接口单元1520可以包括窥探控制单元1512,其处理对于多个处理器核的高速缓存访问和一致性。在另外的实施例中,为了提供这样的功能性,窥探控制单元1512可以包括高速缓存到高速缓存传输单元,其处理不同高速缓存之间的信息交换。在另一个另外的实施例中,窥探控制单元1512可以包括一个或多个窥探过滤器1514,其监测其他高速缓存(未示出)的一致性使得高速缓存控制器(例如单元1510)不必直接执行这样的监测。单元1510可以包括任何适合数量的计时器1515,用于使指令架构1500的动作同步。单元1510还可以包括AC端口1516。
存储器系统1540可以包括用于为指令架构1500的处理需要存储信息的任何适合数量和种类的机构。在一个实施例中,存储器系统1540可以包括加载存储单元1530,用于存储信息,例如写入存储器或寄存器或从它们读回的缓冲器(buffer)。在另一个实施例中,存储器系统1540可以包括翻译后备缓冲器(TLB)1545,其提供物理与虚拟地址之间的地址值的查找。在再另一个实施例中,总线接口单元1520可以包括存储器管理单元(MMU)1544,用于促进对虚拟存储器的访问。在再另一个实施例中,存储器系统1504可以包括预提取器1543,用于在实际上需要要执行这样的指令之前从存储器请求指令以便减少延迟。
执行指令的指令架构1500的操作可以通过不同段来执行。例如,使用单元1510,指令预提取段1530可以通过预提取器1543访问指令。检索的指令可以存储在指令高速缓存1532中。预提取段1530可以启用快循环模式的选项1531,并且执行形成循环的一系列指令,该循环小到足以适配于指定高速缓存内。在一个实施例中,这样的执行可以在不需要访问来自例如指令高速缓存1532的额外指令的情况下执行。预提取什么指令的确定可以通过例如分支预测单元1535做出,该分支预测单元1535可以访问全局历史1536中的执行的指示、目标地址1537的指示或返回栈1538的内容来确定接着将执行代码的分支1557中的哪个。这样的分支因此可能被预提取。分支1557可以通过如下文描述的其他段的操作而产生。指令预提取段1530可以向双指令解码段提供指令以及关于未来指令的任何预测。
双指令解码段1550可以将接收的指令翻译成可以执行的基于微代码的指令。双指令解码段1550可以每时钟周期同时对两个指令解码。此外,双指令解码段1550可以将它的结果传递给寄存器重命名段1555。另外,双指令解码段1550可以从它的微代码的解码和最终执行来确定任何所得的分支。这样的结果可以输入分支1557。
寄存器重命名段1555可以将对虚拟寄存器或其他资源的引用翻译成对物理寄存器或资源的引用。寄存器重命名段1555可以包括寄存器池1556中这样的映射的指示。寄存器重命名段1555可以在接收时更改指令并且将结果发送到发出段1560。
发出段1560可以向执行实体1565发出或调派命令。这样的发出可以采用乱序方式执行。在一个实施例中,多个指令在执行之前可以保持在发出段1560。发出段1560可以包括指令队列1561,用于保持这样的多个命令。指令可以由发出段1560基于任何可接受准则(例如用于指定指令执行的资源的可用性或适用性)对特定处理实体1565发出。在一个实施例中,发出段1560可以对指令队列1561内的指令重排序使得接收的第一指令可能不是执行的第一指令。基于指令队列1561的排序,可以向分支1557提供额外分支信息。发出段1560可以将指令传递到执行实体1565以供执行。
在执行时,写回段1570可以将数据写入寄存器、队列或指令集架构1500的其他结构来传达指定命令的完成。根据在发出段1560中设置的指令的顺序,写回段1570的操作可以能够执行额外指令。指令集架构1500的性能可以由跟踪单元1575监测或调试。
图16是根据本公开的实施例对于处理器的指令集架构的执行流水线1600的框图。执行流水线1600可以图示例如图15的指令集架构1500的操作。
执行流水线1600可以包括步骤或操作的任何适合的组合。在1605,可以进行接下来待执行的分支的预测。在一个实施例中,这样的预测可以基于指令之前的执行及其结果。在1610,对应于预测的执行分支的指令可以加载到指令高速缓存内。在1615,指令高速缓存中一个或多个这样的指令可以被提取以供执行。在1620,已被提取的指令可以解码为微代码或更特定的机器语言。在一个实施例中,可以对多个指令同时解码。在1625,对解码指令内的寄存器或其他资源的引用可以被重新指派。例如,对虚拟寄存器的引用可以用对对应物理寄存器的引用代替。在1630,可以向队列调派指令以供执行。在1640,可以执行指令。这样的执行可以采用任何适合的方式执行。在1650,可以向适合的执行实体发出指令。执行指令所采用的方式可以取决于执行指令的特定实体。例如,在1655,ALU可以执行算术函数。ALU可以对它的操作使用单个时钟周期,以及两个移位器。在一个实施例中,可以采用两个ALU,并且从在1655可以执行两个指令。在1660,可以做出所得的分支的确定。程序计数器可以用于指定分支将走向的目的地。1660可以在单个时钟周期内执行。在1665,可以由一个或多个FPU执行浮点算法。浮点运算可需要多个时钟周期来执行,例如两至十个周期。在1670,可以执行乘法和除法运算。这样的运算可以在四个时钟周期中执行。在1675,可以执行对寄存器或流水线1600的其他部分的加载和存储操作。这些操作可以包括加载和存储地址。这样的操作可以在四个时钟周期中执行。在1680,可以执行写回操作如1655-1675的所得操作所需要的。
图17是根据本公开的实施例用于使用处理器1710的电子设备1700的框图。电子设备1700可以包括例如笔记本、超级本、计算机、塔式服务器、机架式服务器、刀片式服务器、膝上型电脑、台式机、平板、移动设备、电话、嵌入式计算机或任何其他适合的电子设备。
电子设备1700可以包括处理器1710,其通信耦合于任何适合数量或种类的部件、外设、模块或设备。这样的耦合可以由任何适合种类的总线或接口完成,例如I2C总线、系统管理总线(SMBus)、低引脚计数(LPC)总线、SPI、高清晰度音频(HDA)总线、串行高级技术附件(SATA)总线、USB总线(版本1、2、3)或通用异步接收器/传送器(UART)总线。
这样的部件可以包括例如显示器1724、触屏1725、触控板1730、近场通信(NFC)单元1745、传感器集线器1740、热传感器1746、高速芯片集(EC)1735、可信平台模块(TPM)1738、BIOS/固件/闪速存储器1722、数字信号处理器1760、驱动器1720(例如固态驱动器(SSD)或硬盘驱动器(HDD))、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS)、拍摄装置1754(例如USB 3.0拍摄装置)或低功率双数据速率(LPDDR)存储器单元1715(采用例如LPDDR3标准实现)。这些部件每个可以采用任何适合的方式实现。
此外,在各种实施例中,其他部件可以通过上文论述的部件通信耦合于处理器1710。例如,加速器1741、环境光传感器(ALS)1742、罗盘1743和陀螺仪1744可以通信耦合于传感器集线器1740。热传感器1739、风扇1737、键盘1746和触控板1730可以通信耦合于EC1735。扬声器1763、耳机1746和麦克风1765可以通信耦合于音频单元1764,其进而可以通信耦合于DSP 1760。音频单元1764可以包括例如音频编解码器和D类放大器。SIM卡1757可以通信耦合于WWAN单元1756。例如WLAN单元1750和蓝牙单元1752以及WWAN单元1756等部件可以采用下一代形状因子(NGFF)实现。
本公开的实施例牵涉用于实现具有有限状态机控制的可重配置测试访问端口的处理器中的逻辑。
图18图示根据本公开的实施例用于在处理器1801中实现具有有限状态机控制的可重配置测试访问端口的可重配置TAP系统1800的示例实施例。
如指出的,不同测试访问端口标准可以具有架构差异,其防止或限制具有不同外部调试工具的处理器测试访问端口的互操作性。例如,JTAG(IEEE 1149.1)向处理器引出线(pinout)添加4个连接器引脚和1个可选引脚来实现可以分别支持处理器内在测试中的不同部件的不同测试访问端口(TAP)的串行菊花链。JTAG(IEEE 1149.7)和SWD可以向处理器引出线添加2个连接器引脚并且实现不同测试访问端口的星形或并行拓扑。这三个共同标准的引出线在表1中总结。注意为了清楚起见关于测试访问端口的下列描述和图省略接地连接:
,
注意尽管SWD可以指数据访问端口(DAP)而不是测试访问端口,术语“测试访问端口”或“TAP”在本文用于代表JTAG TAP和SWD DAP两者,其中每个标准在描述的上下文中专门引用。
因为表1中示出的标准之间的架构差异,不同标准之间的互操作性可受到限制。例如,在使用具有菊花链配置的JTAG(IEEE 1149.1)时,对所有测试访问端口的访问经由对辅助测试访问端口(subTAP)提供访问的主测试访问端口控制器而进行。在该情况下,旁路指令添加到每个测试命令用于对subTAP寻址,这在测试过程中产生额外位并且可增加测试时间,特别在存在更大数量的subTAP时如此。由于这些原因,可期望使用2引脚测试访问端口标准,例如JTAG(IEEE 1149.7)或SWD,因为是单个层级层实现对所有测试访问端口的直接访问的并行拓扑。
因为测试访问端口在处理器1801上的硬件中实现,实现互操作性牵涉支持不同测试访问端口接口。因为处理器1801的引出线是宝贵资源,在实现不同测试访问端口接口时重用某些引脚,这可以是可取的。例如,在具有5引脚JTAG(IEEE 1149.1)接口的处理器上可以对2引脚测试访问端口接口重用TCK和TMS引脚。然而,因为主JTAG(IEEE 1149.1)测试访问端口由于安全状态和存储在数据寄存器(DR)中的某些调试设置而可取决于TCK和TMS,特别对于2引脚测试访问端口接口重用TMS引脚在重用测试访问端口接口时可能将主JTAG(IEEE 1149.1)测试访问端口置于未知状态,这是不可取的。此外,还可期望并行测试访问端口架构(其中直接访问所有测试访问端口并且它们具有相同优先级)的使用。例如,在并行测试访问端口架构中,被重用的测试访问端口可以保持闲置,并且因此可以消耗很少或不消耗功率。
如将进一步详细描述的,处理器1801中的逻辑可以实现可重配置TAP系统1800,其具有使用有限状态机1804的带TMS引脚1812(也称为“处理器测试模式连接器”)的有限状态机控制的并行架构。采用该方式,JTAG测试访问端口接口和串行线调试测试访问端口接口都可以同时得到可重配置TAP系统1800的支持。具有有限状态机控制的可重配置TAP系统1800还可以在使用低引脚计数测试访问端口接口来访问测试访问端口1802时使未使用的引脚能够重新用于其他目的。本文描述的具有有限状态机控制的可重配置TAP系统1800可以进一步使处理器1802能够支持使用不同测试基础设施,例如测试设备和代码,由此实现处理器1801的使用的较大兼容性和易用性。
在图18中示出的可重配置TAP系统1800中,测试访问端口1802a和1802b示出为代表多个测试访问端口1802。将理解多个测试访问端口1802可以包括较大数量的测试访问端口1802。在某些实施例中,测试访问端口1802a可以包括主测试访问端口控制器并且可以对其他测试访问端口(例如测试访问端口1802b)具有某一调试模式控制。在一些实施例中,所有测试访问端口1802在实现和功能性方面大致相似。
由图18中的测试访问端口1802a和1802b表示的测试访问端口1802可以包括各种输入和输出。在测试访问端口1802中,TDI可以是连接到处理器1801的输入引脚TDI 1810的测试数据输入。在测试访问端口1802中,TCK可以是连接到处理器1801的输入引脚TCK 1814的测试时钟输入。在测试访问端口1802中,TRSI可以是连接到处理器1801的输入引脚TRST1816的测试复位输入。在测试访问端口1802中,TDO可以是连接到处理器1801的输出引脚TDO 1818的测试数据输出。在可重配置测试访问端口系统1800中,TDI 1810、TDO 1818和TRST 1816在存在时可以是到相应处理器输入引脚的可重用连接。例如,在未使用时,TDI1810、TDO 1818和TRST 1816可以是在处理器1801上用于其他调试目的或其他一般目的的引脚。
在可重配置TAP系统1800中,到TDO 1818的输出连接可以使用复用器1806从测试访问端口1802的TOD之中选择。对于该目的,测试访问端口1802可以具有结合有限状态机1804操作的锁定寄存器(LR)。LR对于处理器上的每个测试访问端口1802可以包括1个位并且每个测试访问端口1802可以维持LR的实例。采用该方式,每个测试访问端口1802可以感知可重配置TAP系统1800中的每个其他测试访问端口1802的锁定状态。单个LR或LR的组合因此可以用于使单个TDO从测试访问端口1802切换到TDO 1818。注意LR可以链接到调试数据寄存器1820中包括的全局锁定寄存器。
可重配置TAP系统1800还可以使用调试指令寄存器1808和调试数据寄存器1820来控制有限状态机1804。调试指令寄存器1808可以由外部测试系统所控制,外部测试系统操作可重配置TAP系统1800来对特定测试目的定义命令和事件。调试指令寄存器1808可以具有特定位用于寻址特定测试访问端口1802以及对于测试访问端口1802和有限状态机1804的命令。调试数据寄存器1820可以结合测试访问端口1802一起用于存储调试状态信息或其他数据用于测试或调试目的。例如,调试数据寄存器1820可以在例如测试访问端口1802闲置或不活动时存储与有限状态机1804关联的状态值,使得测试访问端口1802可以从所定义的状态恢复操作。调试数据寄存器1820可以进一步包括全局锁定寄存器。
在可重配置TAP系统1800中,有限状态机1804a可以专用于测试访问端口1802a,有限状态机1804b可以专用于测试访问端口1802b,等等直至专用于期望数量的测试访问端口1802和有限状态机1804。有限状态机1804可以控制TMS 1812的连接和使用,该TMS 1812可以是输入引脚或双向引脚,这取决于在特定时间选择的与可重配置TAP系统1800一起使用的测试接口。例如,在测试访问端口1802实现JTAG(IEEE 1149.1)测试接口时,TMS可以是连接到TMS 1812的测试模式选择输入。在测试访问端口1802实现JTAG(IEEE 1149.7)或SWD测试接口时,TMS可以是连接到TMS 1812的串行数据输入/输出。
在也与有限状态机1804关联的可重配置TAP系统1800中,具有模式选择输出(MSO),示出为从测试访问端口1802到有限状态机1804的输出。来自测试访问端口1802的模式选择输出可以对有限状态机1804指示测试访问端口1802是使用JTAG还是SWD协议和测试接口操作。注意不同过程可以用于从JTAG与SWD测试接口切换。在一个实施例中,调试指令寄存器1808中的改变可以促使测试访问端口1802在JTAG与SWD测试接口之间改变,这可以由到有限状态机1804的模式选择输出所指示。在指定实施例中,TMS 1812上的特定输入序列(例如16位切换序列)可以用于在JTAG与SWD测试接口之间切换,这可以由到有限状态机1804的模式选择输出所指示。
图19图示根据本公开的实施例用于在处理器1801中实现具有有限状态机控制的可重配置测试访问端口的可重配置TAP有限状态机1900的示例实施例。有限状态机1900可以是图18中的有限状态机1804的实施例。
在有限状态机1900中示出四个状态。旁路1902可以是起始或基本状态,其中所有测试访问端口1802处于闲置状态并且TMS 1812未连接到任何测试访问端口1802。在旁路1902中,有限状态机1900可以从调试数据寄存器1820向测试访问端口1802中的TMS输出值来使测试访问端口1802维持在期望状态。在旁路1902中,对于所有测试访问端口1802的LR的所有值可以是零或可没有设置位。当有限状态机1900在旁路1902中时,对于所有测试访问端口1802的所有有限状态机1900在旁路1902中。在旁路1902中,可重配置TAP系统1800可以消耗很少或不消耗功率。旁路1902可以通过释放1908而达成,该释放1908在下文进一步详细描述。在某些实施例中,当有限状态机1900在旁路1902中,测试访问端口1802可以默认实现JTAG测试接口。从而,在旁路1902中,每个测试访问端口1802可以处于JTAG测试逻辑复位状态。
JTAG 1904可以是有限状态机1900中的操作状态。在有限状态机1900转变到JTAG1904时,在所有有限状态机1900中所有测试访问端口1802可以转变到JTAG 1904。对应地,每个测试访问端口1802可以在进入JTAG 1904时转变到JTAG运行-测试/闲置状态。然而,仅一个测试访问端口1802(如由LR中的设置位指定的)可以被锁定并且可以在指定时间主动使用某些测试接口引脚。例如,第一测试访问端口1802a可以被启用并且可以设置对应于第一测试访问端口1802a的LR中的位。在某些实施例中,使有限状态机1900转变到JTAG 1904并且选择第一测试访问端口可以使用调试指令寄存器1808来完成。
因为每个测试访问端口1802维持LR,所有测试访问端口1802感知第一测试访问端口1802a是活动的。在JTAG 1904中,可以启用第一测试访问端口1802a用于使用JTAG(IEEE1149.1)测试接口操作,如上文描述的。在JTAG 1904中,可以启用第一测试访问端口1802a用于使用JTAG(IEEE 1149.7)测试接口操作,如上文描述的。除1802a以外的所有其他测试访问端口1802可以在JTAG 1904中保持闲置,即使对于所有其他测试访问端口1802的相应有限状态机1804(对应于有限状态机1900)可以保持在JTAG 1904中也如此。
尽管第一有限状态机1804a(对应于有限状态机1900)在JTAG 1904中,第一测试访问端口1802a可以离开JTAG运行-测试/闲置状态并且开始执行JTAG扫描来实现期望的测试接口活动。到和从JTAG运行-测试/闲置状态的转变可以由用户输入经由TMS 1812来控制。因为从TMS 1812到第一测试访问端口1802a的输入通过第一有限状态机1804a来路由,第一有限状态机1804a可以感知第一测试访问端口1802a目前参与的特定JTAG状态或活动。在JTAG测试接口活动完毕同时第一有限状态机1804a在JTAG 1904中时,第一测试访问端口1802a可以返回JTAG运行-测试/闲置状态,其可以促使第一有限状态机1804a转变到释放1908、清除对于第一有限状态机1804a的锁定寄存器并且然后转变回到旁路1902。
然而,当第一有限状态机1804a在JTAG 1904中时,第一测试访问端口1802a可以例如经由TMS 1812接收切换命令以从JTAG测试接口切换到串行线调试测试接口。切换命令可以是JTAG-SWD切换命令,例如在到第一测试访问端口1802a的TMS输入处接收的某一16位序列。当在第一测试访问端口1802a处接收切换命令时,第一测试访问端口1802a可以指示切换命令内部实现,其通过使用到第一有限状态机1804a的MSO输出。在经由MSO输入接收第一测试访问端口1802a已经启用串行线调试测试接口这一指示时,第一有限状态机1804a(对应于有限状态机1900)可以从JTAG 1904转变到串行线调试1906。从MSO到第一有限状态机1804a的硬件输入可以具有优先级并且可以立即由第一有限状态机1804a对其作用。当第一有限状态机1804a在串行线调试1906时,所有其他余下的有限状态机1804可以保持在JTAG1904并且锁定寄存器可以继续指示第一测试访问端口1802a被锁定使用。
当第一有限状态机1804a(对应于有限状态机1900)在串行线调试1906时,与上文描述的切换命令相似,切换到JTAG测试接口的后续切换命令可以被第一测试访问端口1802a接收。然后,第一测试访问端口1802a可以使用到第一有限状态机1804a的MSO输出来指示后续切换命令。在从第一测试访问端口1802a的MSO输出检测到改变时,第一有限状态机1804a可以立即转变到释放1908、清除第一有限状态机1804a的锁定寄存器位,并且然后转变回到旁路1902。
在释放1908中,自动硬件控制可以使TMS 1812从所有测试访问端口1802断开并且所有LR可以重设为零或无设置位并且有效状态机1900然后可以转变回到旁路1902。采用该方式,操作测试访问端口1802的用户或软件程序可不必对测试访问端口1802解锁或可不必管理有限状态机1900的状态以便使用可重配置TAP系统1800。
图20是根据本公开的实施例用于在处理器中实现具有有限状态机控制的可重配置测试访问端口的示例方法2000的图示。
在2002,可以接收用户输入,其指示供在第一测试访问端口使用的测试接口,该测试接口使用处理器测试模式连接器。在2002,用户输入可以是对调试指令寄存器的访问。该调试指令寄存器可以由期望经由测试接口访问处理器的用户访问。根据本公开的实施例,对调试指令寄存器的访问可以牵涉对处理器的寄存器级访问来配置测试接口。根据本公开的实施例,第一测试访问端口可以是经由测试接口而可访问的多个测试访问端口中的任意一个。根据本公开的实施例,测试访问端口中的每个(例如测试访问端口1802)可以用如在图18中示出的相应有限状态机(FSM)1804实现。
在2004,所有有限状态机(包括对应于第一测试访问端口的第一有限状态机)可以从旁路状态转变到JTAG状态,并且可以设置对于第一测试访问端口的锁定寄存器位。采用该方式,对于所有测试访问端口的所有锁定寄存器可以设置成指示第一测试访问端口被锁定的相同值。基于锁定寄存器中的设置位,从第一测试访问端口的测试数据输出可以路由到连接器的测试数据输出引脚,而从其他测试访问端口的测试数据输出未连接。
在2006,做出是否选择串行线调试测试接口的决定。串行线调试接口的选择可以通过向第一测试访问端口发送如上文描述的切换命令而做出。在某些实施例中,在2006的决定可以基于调试指令寄存器中的值而做出。在一些实施例中,在2006的决定可以基于与调试指令寄存器关联的调试数据寄存器中的值而做出。在特定实施例中,在2006的决定可以基于从第一测试访问端口的MSO输出中的改变而做出。当2006的结果为NO时,则选择JTAG测试接口。当2006的结果是YES时,则选择串行线调试。
在2008,当2006的结果是NO时,启用第一测试访问端口来实现JTAG测试接口。JTAG(IEEE 1149.1)测试接口可以使用处理器测试模式连接器作为输入。JTAG(IEEE 1149.7)测试接口可以使用处理器测试模式连接器作为双向输入/输出。在实现或启用JTAG测试接口时,可以由用户执行JTAG测试活动。
在2009,可以检测JTAG测试活动的终止。例如,第一有限状态机可以检测到第一测试访问端口已返回JTAG运行-测试/闲置状态来检测JTAG测试活动的终止。
在2010,当2006的结果是YES时,仅第一有限状态机从JTAG状态转变到串行线调试状态。对于所有其他测试访问端口的所有其他有限状态机保持在JTAG状态。在2012,启用第一测试访问端口以使用处理器测试模式连接器作为双向输入/输出来实现串行线调试测试接口。在2013,串行线调试测试接口的终止可以由第一有限状态机经由MSO信号来检测。
在2016,所有有限状态机(其包括第一有限状态机)可以转变到释放状态并且可以重设所有锁定寄存器位。在2018,处理器测试模式连接器可以断开,并且所有有限状态机可以转变到旁路状态。
方法2000可以通过任何适合的准则来发起。此外,尽管方法2000描述特定要素的操作,方法2000可以由任何适合组合或类型的要素执行。例如,方法2000可以由图1-19中图示的要素或可操作成实现方法2000的任何其他系统实现。如此,对于方法2000的优选初始化点和构成方法2000的元素的顺序可以取决于选择的实现。在一些实施例中,一些要素可以可选地被省略、重复或组合。
本文公开的机构的实施例可以在硬件、软件、固件或这样的实现方案的组合中实现。本公开的实施例可实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(其包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。
程序代码可应用于输入指令来执行本文描述的功能并且生成输出信息。该输出信息可采用已知方式应用于一个或多个输出设备。为了该申请,处理系统可包括具有处理器的任何系统;例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以采用高级程序式或面向对象的编程语言实现来与处理系统通信。根据期望,程序代码还可以采用汇编或机器语言实现。实际上,本文描述的机构在范围上不限于任何特定编程语言。在任何情况下,语言可以是编译或解释的语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该机器可读介质代表处理器内的各种逻辑,其在被机器读取时促使该机器装配逻辑来执行本文描述的技术。这样的表示(称为“IP核”)可以存储在有形的机器可读介质上并且供应给各种客户或装配设施来装入实际上制作逻辑或处理器的装配机器。
这样的机器可读存储介质可以无限制地包括由机器或设备制造或形成的物品的非暂时性有形设置,其包括存储介质,例如硬盘、任何其他类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)和磁光盘;半导体器件,例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁或光卡,或适合于存储电子指令的任何类型的介质。
因此,本公开的实施例还可以包括非暂时性有形机器可读介质,其包含指令或包含设计数据,例如硬件描述语言(HDL),其限定本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以称作程序产品。
在一些情况下,指令转换器可用于将来自源指令集的指令转换成目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、动态二进制翻译,其包括动态编译)、变换、仿真或用别的方式转换成要由核处理的一个或多个其他指令。指令转换器可以在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、处理器之外或部分在处理器上并且部分在处理器之外。
处理器可以包括测试数据输出连接器、处理器测试模式连接器和多个测试访问端口,其包括第一测试访问端口。在处理器中,第一测试访问端口可以包括测试时钟输入、测试数据输入、测试数据输出、锁定寄存器(其包括第一逻辑,用于控制对测试数据输出连接器的测试数据输出的选择)、第一测试模式连接器,和耦合于处理器测试模式连接器的第一有限状态机。在处理器中,第一有限状态机可以包括:第二逻辑,用于实现联合测试行动小组(JTAG)状态以启用第一测试访问端口来实现JTAG测试接口;和第三逻辑,用于实现串行线调试状态以启用第一测试访问端口来实现串行线调试测试接口。
在处理器的公开实施例中的任一个中,当JTAG测试接口是IEEE 1149.1测试接口时,第二逻辑可以使用测试时钟输入、测试数据输入、第一测试模式连接器(作为来自处理器测试模式连接器的输入)和测试数据输出。在处理器的公开实施例中的任一个中,当JTAG测试接口是IEEE 1149.7测试接口时,第二逻辑可以使用测试时钟输入和作为经由处理器测试模式连接器的双向连接的第一测试模式连接器。在处理器的公开实施例中的任一个中,第一测试访问端口可以基于在处理器测试模式连接器处接收的指令向第一有限状态机输出模式选择输出信号,该模式选择输出信号对第一有限状态机指示第一测试访问端口正在实现JTAG测试接口和串行线调试测试接口中的一个。
在处理器的公开实施例中的任一个中,第一有限状态机可以基于来自第一测试访问端口的模式选择输出而从JTAG状态转变到串行线调试状态。在处理器中,当测试接口是串行线调试测试接口时,第三逻辑可以使用测试时钟输入和作为经由处理器测试模式连接器的双向连接的第一测试模式连接器来实现串行线调试测试接口。
在处理器的公开实施例中的任一个中,多个测试访问端口中的每个可以使用处理器上的测试时钟连接器引脚、处理器上的测试数据输入连接器引脚、处理器上的测试数据输出连接器引脚和处理器测试模式连接器中的至少一个而单独可访问。在处理器中,处理器可以进一步包括调试指令寄存器,其包括第五逻辑,用于控制分别与多个有限状态机关联的多个测试访问端口中的每个。在处理器中,多个有限状态机可以包括第一有限状态机。
在处理器的公开实施例中的任一个中,锁定寄存器可以进一步包括对应于多个测试访问端口的多个位,和第六逻辑,用于使用锁定寄存器中的设置位来确定多个测试访问端口中的哪个使测试数据输出连接到测试数据输出连接器。
在处理器的公开实施例中的任一个中,第一有限状态机可以包括第七逻辑,用于实现从释放状态可达到的旁路状态,该旁路状态指示多个测试访问端口闲置,并且处理器测试模式连接器与多个测试访问端口断开。在处理器的公开实施例中的任一个中,第一有限状态机可以包括第八逻辑,用于实现从JTAG状态和串行线调试状态可达到的释放状态,该释放状态指示处理器测试模式连接器从第一测试访问端口断开、锁定寄存器被清除并且第一有限状态机正转变到旁路状态。
方法可以包括在处理器内控制多个测试访问端口(其分别包括多个有限状态机),其包括控制多个有限状态机中的状态。在方法中,多个测试访问端口可以包括第一测试访问端口。在方法中,第一测试访问端口可以包括测试时钟输入、测试数据输入、测试数据输出、控制到处理器上的测试数据输出连接器引脚的测试数据输出的选择的锁定寄存器、第一测试模式连接器以及耦合于处理器上的处理器测试模式连接器的第一有限状态机,该第一有限状态机包括在多个有限状态机中。在方法中,控制多个有限状态机中的状态可以包括由第一有限状态机启用第一测试访问端口来实现联合测试行动小组(JTAG)测试接口以及实现串行线调试测试接口。
在公开实施例中的任一个中,方法可以包括由第一有限状态机启用第一测试访问端口以使用测试时钟输入、测试数据输入、作为来自处理器测试模式连接器的输入的第一测试模式连接器以及测试数据输出来实现JTAG IEEE 1149.1测试接口。在公开实施例中的任一个中,方法可以包括由第一有限状态机启用第一测试访问端口以使用测试时钟输入和作为经由处理器测试模式连接器的双向连接的第一测试模式连接器来实现JTAG IEEE1149.7测试接口。在公开的实施例中的任一个中,方法可以包括由第一测试访问端口基于在处理器测试模式连接器处接收的指令向第一有限状态机输出模式选择输出信号,该模式选择输出信号对第一有限状态机指示第一测试访问端口正在实现JTAG测试接口和串行线调试测试接口中的一个。
在公开的实施例中的任一个中,方法可以包括由第一有限状态机基于来自第一测试访问端口的模式选择输出而从JTAG状态转变到串行线调试状态。在公开的实施例中的任一个中,方法可以包括由第一有限状态机启用第一测试访问端口以使用测试时钟输入和作为经由处理器测试模式连接器的双向连接的第一测试模式连接器来实现串行线调试测试接口。
在公开的实施例中的任一个中,方法可以包括使用处理器上的测试时钟连接器引脚、处理器上的测试数据输入连接器引脚、处理器上的测试数据输出连接器引脚和处理器测试模式连接器中的至少一个来单独访问多个测试访问端口中的每个。
在方法的公开实施例中的任一个中,锁定寄存器可以包括多个位,其对应于多个测试访问端口。在公开的实施例中的任一个中,方法可以包括基于锁定寄存器中的设置位来确定多个测试访问端口中的哪个使测试数据输出连接到测试数据输出连接器引脚。
在方法的公开实施例中的任一个中,第一有限状态机可以包括从释放状态可达到的旁路状态,该旁路状态指示多个测试访问端口闲置,并且处理器测试模式连接器未连接到多个测试访问端口。在方法的公开实施例中的任一个中,第一有限状态机可以包括从旁路状态可达到的JTAG状态,该JTAG状态指示第一测试访问端口正在实现JTAG测试接口。
在方法的公开实施例中的任一个中,第一有限状态机可以包括从JTAG状态可达到的串行线调试状态,该串行线调试状态指示第一测试访问端口正在实现串行线调试测试接口。
在方法的公开实施例中的任一个中,第一有限状态机可以包括从JTAG状态和串行线调试状态可达到的释放状态,该释放状态指示处理器测试模式连接器从第一测试访问端口断开、锁定寄存器被清除并且第一有限状态机转变到旁路状态。
系统可以包括处理器,其包括测试数据输出连接器、处理器测试模式连接器和多个测试访问端口,该多个测试访问端口包括第一测试访问端口。在系统中,第一测试访问端口可以包括测试时钟输入、测试数据输入、测试数据输出、锁定寄存器(其包括第一逻辑,用于控制到测试数据输出连接器的测试数据输出的选择)、第一测试模式连接器和耦合于处理器测试模式连接器的第一有限状态机。在系统中,第一有限状态机可以包括:第二逻辑,用于实现联合测试行动小组(JTAG)状态以启用第一测试访问端口来实现JTAG测试接口;和第三逻辑,用于实现串行线调试状态以启用第一测试访问端口来实现串行线调试测试接口。
在系统的公开实施例中的任一个中,当JTAG测试接口是IEEE 1149.1测试接口时,第二逻辑可以使用测试时钟输入、测试数据输入、第一测试模式连接器(作为来自处理器测试模式连接的输入)和测试数据输出。在系统的公开实施例中的任一个中,当JTAG测试接口是IEEE 1149.7测试接口时,第二逻辑可以使用测试时钟输入和作为经由处理器测试模式连接器的双向连接的第一测试模式连接器。在处理器的公开实施例中的任一个中,第一测试访问端口可以基于在处理器测试模式连接器处接收的指令向第一有限状态机输出模式选择输出信号,该模式选择输出信号对第一有限状态机指示第一测试访问端口正在实现JTAG测试接口和串行线调试测试接口中的一个。
在系统的公开实施例中的任一个中,第一有限状态机可以基于来自第一测试访问端口的模式选择输出而从JTAG状态转变到串行线调试状态。在系统中,当测试接口是串行线调试测试接口时,第三逻辑可以使用测试时钟输入和作为经由处理器测试模式连接器的双向连接的第一测试模式连接器来实现串行线调试测试接口。
在系统的公开实施例中的任一个中,多个测试访问端口中的每个可以使用系统上测试时钟连接器引脚、系统上测试数据输入连接器引脚、系统上测试数据输出连接器引脚和处理器测试模式连接器中的至少一个而单独可访问。在系统中,处理器可以进一步包括调试指令寄存器,其包括第五逻辑,用于控制分别与多个有限状态机关联的多个测试访问端口中的每个。在系统中,多个有限状态机可以包括第一有限状态机。
在系统的公开实施例中的任一个中,锁定寄存器可以进一步包括对应于多个测试访问端口的多个位,和第六逻辑,用于使用锁定寄存器中的设置位来确定多个测试访问端口中的哪个使测试数据输出连接到测试数据输出连接器。
在系统的公开实施例中的任一个中,第一有限状态机可以包括第七逻辑,用于实现从释放状态可达到的旁路状态,该旁路状态指示多个测试访问端口闲置,并且处理器测试模式连接器与多个测试访问端口断开。在系统的公开实施例中的任一个中,第一有限状态机可以包括第八逻辑,用于实现从JTAG状态和串行线调试状态可达到的释放状态,该释放状态指示处理器测试模式连接器从第一测试访问端口断开、锁定寄存器被清除并且第一有限状态机正转变到旁路状态。
从而,公开用于执行根据至少一个实施例的一个或多个指令的技术。尽管某些示范性实施例已经在附图中描述和示出,要理解这样的实施例仅仅说明而对其他实施例不是限制性的,并且这样的实施例不限于示出和描述的特定构造和设置,因为在本领域内技术人员研究该公开时可想到各种其他修改。在像这样的技术的领域中,增长是快速的并且不容易预见进一步发展,公开的实施例可以从设置和细节方面能容易修改,如通过实现技术发展而促成,这不偏离本公开的原理或附上的权利要求的范围。
Claims (20)
1.一种处理器,其包括:
测试数据输出连接器;
处理器测试模式连接器;
多个测试访问端口,其包括第一测试访问端口,所述第一测试访问端口包括:
测试时钟输入;
测试数据输入;
测试数据输出;
锁定寄存器,其包括第一逻辑,用于控制到所述测试数据输出连接器的测试数据输出的选择;
第一测试模式连接器;以及
第一有限状态机,其耦合于所述处理器测试模式连接器,所述第一有限状态机包括:
第二逻辑,用于实现联合测试行动小组(JTAG)状态以启用所述第一测试访问端口来实现JTAG测试接口;以及
第三逻辑,用于实现串行线调试状态以启用所述第一测试访问端口来实现串行线调试测试接口。
2.如权利要求1所述的处理器,其中:
当所述JTAG测试接口是IEEE 1149.1测试接口时,所述第二逻辑要使用所述测试时钟输入、所述测试数据输入、作为来自所述处理器测试模式连接器的输入的所述第一测试模式连接器,和所述测试数据输出;
当所述JTAG测试接口是IEEE 1149.7测试接口时,所述第二逻辑要使用所述测试时钟输入和作为经由所述处理器测试模式连接器的双向连接的所述第一测试模式连接器;以及
所述第一测试访问端口要基于在所述处理器测试模式连接器处接收的指令向所述第一有限状态机输出模式选择输出信号,所述模式选择输出信号用于对所述第一有限状态机指示所述第一测试访问端口要实现所述JTAG测试接口和所述串行线调试测试接口中的一个。
3.如权利要求2所述的处理器,其中:
所述第一有限状态机要基于来自所述第一测试访问端口的模式选择输出而从所述JTAG状态转变到所述串行线调试状态;
当所述测试接口是串行线调试测试接口时,所述第三逻辑要使用所述测试时钟输入和作为经由所述处理器测试模式连接器的双向连接的所述第一测试模式连接器来实现所述串行线调试测试接口。
4.如权利要求1所述的处理器,其中:
所述多个测试访问端口中的每个使用以下中的至少一个而单独可访问:
所述处理器上的测试时钟连接器引脚;
所述处理器上的测试数据输入连接器引脚;
所述处理器上的测试数据输出连接器引脚;以及
所述处理器测试模式连接器;
所述处理器进一步包括调试指令寄存器,用于控制分别与多个有限状态机关联的多个测试访问端口中的每个;以及
所述多个有限状态机包括所述第一有限状态机。
5. 如权利要求1所述的处理器,其中所述锁定寄存器进一步包括:
对应于所述多个测试访问端口的多个位;以及
第六逻辑,用于使用所述锁定寄存器中的设置位来确定所述多个测试访问端口中的哪个使测试数据输出连接到所述测试数据输出连接器。
6.如权利要求1所述的处理器,其中所述第一有限状态机包括:
第七逻辑,用于实现从释放状态可达到的旁路状态,所述旁路状态用于指示:
所述多个测试访问端口闲置;并且
所述处理器测试模式连接器与所述多个测试访问端口断开;以及
第八逻辑,用于实现从所述JTAG状态和所述串行线调试状态可达到的释放状态,所述释放状态用于指示:
所述处理器测试模式连接器从所述第一测试访问端口断开;
所述锁定寄存器被清除;以及
所述第一有限状态机转变到所述旁路状态。
7.一种方法,其包括,在处理器内:
控制多个测试访问端口,其分别包括多个有限状态机,所述控制包括控制所述多个有限状态机中的状态,其中所述多个测试访问端口包括第一测试访问端口,其包括:
测试时钟输入;
测试数据输入;
测试数据输出;
锁定寄存器,其控制到所述处理器上的测试数据输出连接器引脚的测试数据输出的选择;
第一测试模式连接器;以及
第一有限状态机,其耦合于所述处理器上的处理器测试模式连接器,所述第一有限状态机包括在所述多个有限状态机中;以及
由所述第一有限状态机启用所述第一测试访问端口以用于:
实现联合测试行动小组(JTAG)测试接口;以及
实现串行线调试测试接口。
8.如权利要求7所述的方法,其进一步包括:
由所述第一有限状态机启用所述第一测试访问端口以使用所述测试时钟输入、所述测试数据输入、作为来自所述处理器测试模式连接器的输入的所述第一测试模式连接器以及所述测试数据输出来实现JTAG IEEE 1149.1测试接口;
由所述第一有限状态机启用所述第一测试访问端口以使用所述测试时钟输入和作为经由所述处理器测试模式连接器的双向连接的所述第一测试模式连接器来实现JTAG IEEE1149.7测试接口;以及
由所述第一测试访问端口基于在所述处理器测试模式连接器处接收的指令向所述第一有限状态机输出模式选择输出信号,所述模式选择输出信号对所述第一有限状态机指示所述第一测试访问端口正在实现所述JTAG测试接口和所述串行线调试测试接口中的一个。
9.如权利要求8所述的方法,其进一步包括:
由所述第一有限状态机基于来自所述第一测试访问端口的模式选择输出而从所述JTAG状态转变到所述串行线调试状态;
由所述第一有限状态机启用所述第一测试访问端口以使用所述测试时钟输入和作为经由所述处理器测试模式连接器的双向连接的所述第一测试模式连接器来实现所述串行线调试测试接口。
10.如权利要求7所述的方法,其进一步包括使用以下中的至少一个来单独访问所述多个测试访问端口中的每个:
所述处理器上的测试时钟连接器引脚;
所述处理器上的测试数据输入连接器引脚;
所述处理器上的测试数据输出连接器引脚;以及
所述处理器测试模式连接器。
11. 如权利要求7所述的方法,其中:
所述锁定寄存器包括多个位,其对应于所述多个测试访问端口;以及
所述方法进一步包括基于所述锁定寄存器中的设置位确定所述多个测试访问端口中的哪个使测试数据输出连接到所述测试数据输出连接器引脚。
12.如权利要求7所述的方法,其中所述第一有限状态机包括:
从释放状态可达到的旁路状态,所述旁路状态用于指示:
所述多个测试访问端口闲置;并且
所述处理器测试模式连接器未连接到所述多个测试访问端口;以及
从所述旁路状态可达到的JTAG状态,所述JTAG状态用于指示所述第一测试访问端口正在实现所述JTAG测试接口。
13.如权利要求12所述的方法,其中所述第一有限状态机进一步包括从所述JTAG状态可达到的串行线调试状态,所述串行线调试状态用于指示所述第一测试访问端口正在实现所述串行线调试测试接口。
14.如权利要求13所述的方法,其中所述第一有限状态机进一步包括从所述JTAG状态和所述串行线调试状态可达到的释放状态,所述释放状态用于指示:
所述处理器测试模式连接器从所述第一测试访问端口断开;
所述锁定寄存器被清除;以及
所述第一有限状态机转变到所述旁路状态。
15.一种系统,其包括处理器,所述处理器包括:
测试数据输出连接器;
处理器测试模式连接器;
多个测试访问端口,其包括第一测试访问端口,所述第一测试访问端口包括:
测试时钟输入;
测试数据输入;
测试数据输出;
锁定寄存器,其包括第一逻辑,用于控制到所述测试数据输出连接器的测试数据输出的选择;
第一测试模式连接器;以及
第一有限状态机,其耦合于所述处理器测试模式连接器,所述第一有限状态机包括:
第二逻辑,用于实现联合测试行动小组(JTAG)状态以启用所述第一测试访问端口来实现JTAG测试接口;以及
第三逻辑,用于实现串行线调试状态以启用所述第一测试访问端口来实现串行线调试测试接口。
16.如权利要求15所述的系统,其中:
当所述JTAG测试接口是IEEE 1149.1测试接口时,所述第二逻辑要使用所述测试时钟输入、所述测试数据输入、作为来自所述处理器测试模式连接器的输入的所述第一测试模式连接器和所述测试数据输出;
当所述JTAG测试接口是IEEE 1149.7测试接口时,所述第二逻辑要使用所述测试时钟输入和作为经由所述处理器测试模式连接器的双向连接的所述第一测试模式连接器;以及
所述第一测试访问端口要基于在所述处理器测试模式连接器处接收的指令向所述第一有限状态机输出模式选择输出信号,所述模式选择输出信号用于对所述第一有限状态机指示所述第一测试访问端口要实现所述JTAG测试接口和所述串行线调试测试接口中的一个。
17. 如权利要求16所述的系统,其中:
所述第一有限状态机要基于来自所述第一测试访问端口的模式选择输出而从所述JTAG状态转变到所述串行线调试状态;以及
当所述测试接口是串行线调试测试接口时,所述第三逻辑要使用所述测试时钟输入和作为经由所述处理器测试模式连接器的双向连接的所述第一测试模式连接器来实现所述串行线调试测试接口。
18.如权利要求15所述的系统,其中:
所述多个测试访问端口中的每个使用以下中的至少一个而单独可访问:
所述系统上测试时钟连接器引脚;
所述系统上测试数据输入连接器引脚;
所述系统上测试数据输出连接器引脚;以及
所述处理器测试模式连接器;
所述处理器进一步包括调试指令寄存器,用于控制分别与多个有限状态机关联的多个测试访问端口中的每个;以及
所述多个有限状态机包括所述第一有限状态机。
19. 如权利要求15所述的系统,其中所述锁定寄存器进一步包括:
对应于所述多个测试访问端口的多个位;以及
第六逻辑,用于使用所述锁定寄存器中的设置位来确定所述多个测试访问端口中的哪个使测试数据输出连接到所述测试数据输出连接器。
20.如权利要求15所述的系统,其中所述第一有限状态机包括:
第七逻辑,用于实现从释放状态可达到的旁路状态,所述旁路状态用于指示:
所述多个测试访问端口闲置;并且
所述处理器测试模式连接器与所述多个测试访问端口断开;以及
第八逻辑,用于实现从所述JTAG状态和所述串行线调试状态可达到的释放状态,所述释放状态用于指示:
所述处理器测试模式连接器从所述第一测试访问端口断开;
所述锁定寄存器被清除;以及
所述第一有限状态机转变到所述旁路状态。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/094478 WO2016101090A1 (en) | 2014-12-22 | 2014-12-22 | Reconfigurable test access port with finite state machine control |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003921A true CN107003921A (zh) | 2017-08-01 |
CN107003921B CN107003921B (zh) | 2021-04-27 |
Family
ID=56148835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480083595.XA Active CN107003921B (zh) | 2014-12-22 | 2014-12-22 | 具有有限状态机控制的可重配置测试访问端口 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10267850B2 (zh) |
EP (1) | EP3238065A4 (zh) |
CN (1) | CN107003921B (zh) |
WO (1) | WO2016101090A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109412831A (zh) * | 2018-08-29 | 2019-03-01 | 无锡华云数据技术服务有限公司 | 一种基于fsm管理虚拟端口的方法及云平台 |
CN111459545A (zh) * | 2020-03-27 | 2020-07-28 | 广东速美达自动化股份有限公司 | 一种fpga的寄存器资源的优化方法及装置 |
CN112068945A (zh) * | 2020-09-16 | 2020-12-11 | 厦门势拓御能科技有限公司 | 一种优化嵌入式系统中优先级反转方法 |
CN114186854A (zh) * | 2021-12-10 | 2022-03-15 | 北京得瑞领新科技有限公司 | Ssd设备量产测试方法、装置、存储介质及设备 |
CN118275868A (zh) * | 2024-05-31 | 2024-07-02 | 南京博芯科技有限公司 | 一种基于fpga的边界扫描测试方法及系统 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10686539B2 (en) * | 2015-05-29 | 2020-06-16 | Avago Technologies International Sales Pte. Limited | Flexible debug observation point insertion in pipeline designs |
US10481990B2 (en) | 2016-06-13 | 2019-11-19 | Intel Corporation | Apparatuses and methods for a multiple master capable debug interface |
US10067854B2 (en) * | 2016-10-25 | 2018-09-04 | Xilinx, Inc. | System and method for debugging software executed as a hardware simulation |
US10656203B1 (en) * | 2019-02-18 | 2020-05-19 | Qualcomm Incorporated | Low pin count test controller |
CN109918319B (zh) * | 2019-03-22 | 2021-03-05 | 深圳忆联信息系统有限公司 | 一种固态硬盘控制器加速方法及其系统 |
US10962594B2 (en) * | 2019-05-23 | 2021-03-30 | Bae Systems Information And Electronic Systems Integration Inc. | Debug interface recorder and replay unit |
CN112015602A (zh) * | 2019-05-30 | 2020-12-01 | 鸿富锦精密电子(天津)有限公司 | 调试装置及具有所述调试装置的电子装置 |
RU195892U1 (ru) * | 2019-10-30 | 2020-02-07 | Федеральное государственное унитарное предприятие "Государственный научно-исследовательский институт авиационных систем" (ФГУП "ГосНИИАС") | Модуль процессорный |
US10949586B1 (en) * | 2020-07-01 | 2021-03-16 | Xilinx, Inc. | Post-synthesis insertion of debug cores |
CN112052132B (zh) * | 2020-09-11 | 2022-09-06 | 厦门紫光展锐科技有限公司 | 通过sdio接口调试外挂芯片的方法、装置、设备和介质 |
CN114428638A (zh) | 2020-10-29 | 2022-05-03 | 平头哥(上海)半导体技术有限公司 | 指令发射单元、指令执行单元、相关装置和方法 |
US20220187788A1 (en) * | 2020-12-12 | 2022-06-16 | Microchip Technology Incorporated | Automatic Assignment of Device Debug Communication Pins |
CN116235150A (zh) * | 2020-12-12 | 2023-06-06 | 微芯片技术股份有限公司 | 设备调试通信引脚的自动分配 |
CN114089172B (zh) * | 2021-11-22 | 2024-04-09 | 中国电子科技集团公司第五十八研究所 | 一种pcie io扩展芯片的jtag调试方法 |
US11714649B2 (en) * | 2021-11-29 | 2023-08-01 | Shandong Lingneng Electronic Technology Co., Ltd. | RISC-V-based 3D interconnected multi-core processor architecture and working method thereof |
TWI799025B (zh) * | 2021-12-22 | 2023-04-11 | 技嘉科技股份有限公司 | 自動測試介面卡連接埠的處理系統、控制設備與處理方法 |
US11860228B2 (en) * | 2022-05-11 | 2024-01-02 | Xilinx, Inc. | Integrated circuit chip testing interface with reduced signal wires |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060248426A1 (en) * | 2000-12-22 | 2006-11-02 | Miner David E | Test access port |
US20080065934A1 (en) * | 2006-09-13 | 2008-03-13 | Texas Instruments Incorporated | Device test and debug using power and ground terminals |
US20080148343A1 (en) * | 2006-12-19 | 2008-06-19 | International Business Machines Corporation | Debugging security mechanism for soc asic |
US20090228231A1 (en) * | 2007-12-24 | 2009-09-10 | Stmicroelectronics Pvt. Ltd. | Low pin interface testing module |
US20100223518A1 (en) * | 2005-12-23 | 2010-09-02 | Peter Logan Harrod | Diagnostic mode switching |
US20110066907A1 (en) * | 2009-09-14 | 2011-03-17 | Texas Instruments Incorporated | Method and apparatus for device access port selection |
US20120150477A1 (en) * | 2010-12-10 | 2012-06-14 | Stmicroelectronics S.R.L. | Driving circuit of a test access port |
CN102880536A (zh) * | 2012-09-07 | 2013-01-16 | 杭州中天微系统有限公司 | 一种多核处理器的jtag调试方法 |
US20140053023A1 (en) * | 2012-08-16 | 2014-02-20 | Texas Instruments Incorporated | Pseudo dedicated debug port with an application interface |
-
2014
- 2014-12-22 WO PCT/CN2014/094478 patent/WO2016101090A1/en active Application Filing
- 2014-12-22 CN CN201480083595.XA patent/CN107003921B/zh active Active
- 2014-12-22 EP EP14908661.3A patent/EP3238065A4/en not_active Withdrawn
- 2014-12-22 US US15/528,689 patent/US10267850B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060248426A1 (en) * | 2000-12-22 | 2006-11-02 | Miner David E | Test access port |
US20100223518A1 (en) * | 2005-12-23 | 2010-09-02 | Peter Logan Harrod | Diagnostic mode switching |
US20080065934A1 (en) * | 2006-09-13 | 2008-03-13 | Texas Instruments Incorporated | Device test and debug using power and ground terminals |
US20080148343A1 (en) * | 2006-12-19 | 2008-06-19 | International Business Machines Corporation | Debugging security mechanism for soc asic |
US20090228231A1 (en) * | 2007-12-24 | 2009-09-10 | Stmicroelectronics Pvt. Ltd. | Low pin interface testing module |
US20110066907A1 (en) * | 2009-09-14 | 2011-03-17 | Texas Instruments Incorporated | Method and apparatus for device access port selection |
US20120150477A1 (en) * | 2010-12-10 | 2012-06-14 | Stmicroelectronics S.R.L. | Driving circuit of a test access port |
US20140053023A1 (en) * | 2012-08-16 | 2014-02-20 | Texas Instruments Incorporated | Pseudo dedicated debug port with an application interface |
CN102880536A (zh) * | 2012-09-07 | 2013-01-16 | 杭州中天微系统有限公司 | 一种多核处理器的jtag调试方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109412831A (zh) * | 2018-08-29 | 2019-03-01 | 无锡华云数据技术服务有限公司 | 一种基于fsm管理虚拟端口的方法及云平台 |
CN111459545A (zh) * | 2020-03-27 | 2020-07-28 | 广东速美达自动化股份有限公司 | 一种fpga的寄存器资源的优化方法及装置 |
CN111459545B (zh) * | 2020-03-27 | 2022-07-22 | 广东速美达自动化股份有限公司 | 一种fpga的寄存器资源的优化方法及装置 |
CN112068945A (zh) * | 2020-09-16 | 2020-12-11 | 厦门势拓御能科技有限公司 | 一种优化嵌入式系统中优先级反转方法 |
CN112068945B (zh) * | 2020-09-16 | 2024-05-31 | 厦门势拓御能科技有限公司 | 一种优化嵌入式系统中优先级反转方法 |
CN114186854A (zh) * | 2021-12-10 | 2022-03-15 | 北京得瑞领新科技有限公司 | Ssd设备量产测试方法、装置、存储介质及设备 |
CN118275868A (zh) * | 2024-05-31 | 2024-07-02 | 南京博芯科技有限公司 | 一种基于fpga的边界扫描测试方法及系统 |
CN118275868B (zh) * | 2024-05-31 | 2024-08-09 | 南京博芯科技有限公司 | 一种基于fpga的边界扫描测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2016101090A1 (en) | 2016-06-30 |
US10267850B2 (en) | 2019-04-23 |
EP3238065A4 (en) | 2018-08-01 |
US20170269157A1 (en) | 2017-09-21 |
EP3238065A1 (en) | 2017-11-01 |
CN107003921B (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107003921A (zh) | 具有有限状态机控制的可重配置测试访问端口 | |
TWI731892B (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
CN108369509B (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
CN103970509B (zh) | 对条件循环进行矢量化的装置、方法、处理器、处理系统以及机器可读介质 | |
CN104915181B (zh) | 用于条件存储器错误帮助抑制的方法、处理器和处理系统 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108369513A (zh) | 用于加载-索引-和-收集操作的指令和逻辑 | |
TWI743064B (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
CN108351863A (zh) | 用于可编程结构层级结构和高速缓存的指令和逻辑 | |
CN107209722A (zh) | 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN105745630B (zh) | 用于在集群宽执行机器中的存储器访问的指令和逻辑 | |
TWI720056B (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
CN107729048A (zh) | 提供向量压缩和旋转功能的指令和逻辑 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN108292229A (zh) | 用于重新出现的相邻聚集的指令和逻辑 | |
CN108351835A (zh) | 用于高速缓存控制操作的指令和逻辑 | |
CN108292232A (zh) | 用于加载索引和分散操作的指令和逻辑 | |
CN108351784A (zh) | 用于在乱序处理器中进行有序处理的指令和逻辑 | |
CN106575219A (zh) | 针对用于处理运算的向量格式的指令和逻辑技术领域 | |
CN107003839A (zh) | 用于移位和乘法器的指令和逻辑 | |
CN108351785A (zh) | 用于部分减少操作的指令和逻辑 | |
CN107077421A (zh) | 用于页表游走改变位的指令和逻辑 | |
CN108369571A (zh) | 用于偶数和奇数向量get操作的指令和逻辑 | |
CN109791493A (zh) | 用于乱序集群化解码中的负载平衡的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |