CN107077421B - 用于页表游走改变位的指令和逻辑 - Google Patents
用于页表游走改变位的指令和逻辑 Download PDFInfo
- Publication number
- CN107077421B CN107077421B CN201580063901.8A CN201580063901A CN107077421B CN 107077421 B CN107077421 B CN 107077421B CN 201580063901 A CN201580063901 A CN 201580063901A CN 107077421 B CN107077421 B CN 107077421B
- Authority
- CN
- China
- Prior art keywords
- page table
- address
- table walk
- logic
- memory
- 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.)
- Active
Links
Images
Classifications
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
处理器包括二进制翻译器、存储器管理单元和监测器单元。该二进制翻译器包括用于翻译代码区并且对区内的翻译指令重排序来产生事务的逻辑。存储器管理单元包括用于从事务接收存储器指令来访问存储器中的地址、基于在之前的页表游走期间对地址设置的位来确定在事务执行期间地址是否与之前的页表游走关联以及基于地址与之前的页表游走关联这一确定允许执行存储器指令的逻辑。监测器单元包括用于规定在事务执行期间指定地址是否与之前的页表游走关联的逻辑。
Description
技术领域
本公开关于处理逻辑、微处理器和关联指令集架构的领域,该指令集架构在由处理器或其他处理逻辑执行时执行逻辑、数学或其他功能操作。本公开进一步关于处理自修改代码和与虚拟存储器的交互的领域。
背景技术
多处理器系统变得越来越普遍。多处理器系统的应用的范围从最高性能系统直到嵌入式低功率计算机。多处理器系统的应用包括动态域分区一直到桌面计算。为了利用多处理器系统,待执行的代码可分成多个线程以供各种处理实体执行。每个线程可以彼此并行执行。此外,为了提高处理实体的效用,可能采用乱序执行。乱序执行可能在对这样的指令的所需输入变得可用时执行指令。从而,在代码序列中较晚出现的指令可在代码序列中较早出现的指令之前执行。这些一起与虚拟存储器和系统的存储器模型交互。
附图说明
实施例通过示例并且没有限制地在附图的图中图示。
图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图示用于在使用二进制翻译时设置改变位的方法的示例实施例。
具体实施方式
下列描述描述了对于与可以结合处理器、虚拟处理器、封装、计算机系统或其他处理装置内的二进制翻译或与之关联出现的页表游走(page table walk)关联的改变位的指令和处理逻辑。这样的位可以包括指示指定页表是否被访问过或者是脏的(即,被修改)的位。这样的处理装置可以包括乱序处理器。二进制翻译可以包括例如自修改代码、交叉修改代码或直接存储器访问(DMA)修改的代码。在下列描述中,阐述许多特定细节,例如处理逻辑、处理器类型、微架构条件、事件、使能机构及类似物,以便提供对本公开的实施例的更全面理解。然而,本领域内技术人员将意识到实施例可以在没有这样的特定细节的情况下实践。另外,未详细示出一些众所周知的结构、电路及类似物以避免不必要地混淆本公开的实施例。
尽管下列实施例参考处理器描述,其他实施例能适用于其他类型的集成电路和逻辑设备。本公开的实施例的相似技术和教导可以适用于其他类型的电路或半导体器件,其可以从更高流水线吞吐量和提高的性能中获益。本公开的实施例的教导能适用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位、16位或8位数据操作的处理器或机器并且可以应用于其中可以执行数据操纵或管理的任何处理器和机器。另外,下列描述提供示例,并且附图为了说明目的示出各种示例。然而,因为这些示例仅预计提供本公开的实施例的示例而不提供本公开的实施例的所有可能实现的穷举列表,不应在限制性意义上解释这些示例。
尽管下面的示例在执行单元和逻辑电路的上下文中描述指令处理和分发,本公开的其他实施例可以通过存储在机器可读、有形介质上的数据或指令来完成,这些数据或指令在由机器执行时促使该机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开的实施例关联的功能在机器可执行指令中体现。指令可以用于促使可以用指令编程的通用或专用处理器执行本公开的步骤。本公开的实施例可以作为计算机程序产品或软件提供,其可以包括具有存储在其上的指令的机器或计算机可读介质,这些指令可以用于对计算机(或其他电子设备)编程来执行根据本公开的实施例的一个或多个操作。此外,本公开的实施例的步骤可以由特定硬件部件(其包含用于执行步骤的固定功能逻辑)或由编程计算机部件和固定功能硬件部件的任何组合执行。
用于对逻辑编程来执行本公开的实施例的指令可以存储在系统中的存储器内,例如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)。在其他实施例中,解码器将指令解析成操作码和对应数据和控制字段,其可以由微架构使用来执行根据一个实施例的操作。在一个实施例中,跟踪高速缓存(trace cache)230可以将解码的uop组装到uop队列234中的程序排序序列或踪迹(trace)以供执行。当跟踪高速缓存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位浮点除法器,用于执行除法、平方根和余数(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可以与引退单元454重叠来说明可以实现寄存器重命名和乱序执行所采用的多种方式(例如,使用一个或多个重排序缓冲器以及一个或多个引退寄存器堆、使用一个或多个未来文件、一个或多个历史缓冲器以及一个或多个引退寄存器堆;使用寄存器映射和寄存器池;等)。一般,架构寄存器可以从处理器外部或从编程方的角度可见。寄存器可能不限于任何已知特定类型的电路。各种不同类型的寄存器可以是适合的,只要它们存储并且提供如本文描述的数据即可。适合寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等。引退单元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可以是微架构。指令架构1500可以实现指令集架构1400的一个或多个方面。此外,指令架构1500可以图示用于在处理器内执行指令的模块和机构。
指令架构1500可以包括存储器系统1540,其通信耦合于一个或多个执行实体1565。此外,指令架构1500可以包括高速缓存和总线接口单元,例如通信耦合于执行实体1565和存储器系统1540的单元1510。在一个实施例中,指令到执行实体1565内的加载可以由一个或多个执行段执行。这样的段可以包括例如指令预提取段1530、双指令解码段1550、寄存器重命名段1555、发出段1560和写回段1570。
在一个实施例中,存储器系统1540可以包括执行指令指针1580。执行指令指针1580可以存储识别由多个线束(strand)表示的线程内乱序发出段1560中的一批指令内的最旧的未调派指令的值。执行指令指针1580可以在发出段1560中计算并且传播到加载单元。指令可以存储在一批指令内。该批指令可以在由多个线束表示的线程内。最旧指令可以对应于最低程序顺序(PO)值。PO可以包括指令的唯一数字。PO可以在对指令排序中使用来确保代码的正确执行语义。PO可以通过例如评估指令中编码的PO的增量而不是绝对值等的机制来重建。这样的重建PO可以称为RPO。尽管在本文可以引用PO,这样的PO可以与RPO能互换地使用。线束可以包括指令的序列,它们是彼此依赖的数据。线束可以由二进制翻译器在编译时设置。执行线束的硬件可以根据各种指令的PO按顺序执行指定线束的指令。线程可以包括多个线束使得不同线束的指令可以彼此依赖。指定线束的PO可以是线束中还未调派以从发出段执行的最旧指令的PO。因此,考虑到具有多个线束的线程,每个线束包括通过PO排序的指令,执行指令指针1580可以存储乱序发出段1560中的线程的线束之中的最旧-由最低数字图示-PO。
在另一个实施例中,存储器系统1540可以包括引退指针1582。引退指针1582可以存储识别最后的引退指令的PO的值。引退指针1582可以由例如引退单元454设置。如果没有指令已经被引退,引退指针1582可以包括空值。
执行实体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,用于存储与写入存储器或寄存器或从它们读回的指令有关的信息。在另一个实施例中,存储器系统1540可以包括翻译后备缓冲器(TLB)1545,其提供物理与虚拟地址之间的地址值的查找。在再另一个实施例中,总线接口单元1520可以包括存储器管理单元(MMU)1544,用于促进对虚拟存储器的访问。在再另一个实施例中,存储器系统1540可以包括预提取器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)实现。
本公开的实施例牵涉对于与页表游走关联的二进制翻译的翻译中位设置的指令和逻辑。位设置可以具有已被访问(.A)或变脏(.D)(或被写入)的页表的指定。图18是根据本公开的实施例对于二进制翻译的翻译中位设置的系统1800的图示。系统1800可以包括处理器1802,其在来自指令流1804的指令的二进制翻译期间执行位设置。尽管某些元件在图18中可以示出为执行描述的动作,系统1800或处理器1802的任何适合部分可以实现功能性或执行本文描述的动作。
系统1800可以包括在一个或多个处理器(例如处理器1802)内部或与之通信耦合的存储器1812。存储器1812可以在物理存储器地址中组织,但从逻辑或虚拟存储器方面可以在处理器1802中引用或由处理器1802的元件引用。为了在逻辑与物理存储器之间映射,系统1800可以包括页表1816。在进行对虚拟存储器的访问时,可以在适合的页表1816中查找对应的物理地址。页表1816可以在系统1800中采用任何适合的方式或在任何适合的地方实现。例如,页表1816可以实现为存储器1812中的数据结构。为了加速查找操作,处理器1802可以对来自页表1816的一个或多个条目高速缓存。处理器1802可以采用任何适合的方式或在任何适合的位点对页表高速缓存。例如,处理器1802可以将页表高速缓存在翻译后备缓冲器(TLB)1830中。TLB 1830可以在内容可寻址存储器中实现。从而,TLB 1830可以包括高速缓存的页表(CPT)1832。尽管CPT 1832描述为‘页表’,它们可以实现页表的信息的任何适合子集,例如逻辑与物理存储器之间的映射。页表的高速缓存可以由例如存储器管理单元(MMU)1828控制。在虚拟地址需要翻译成物理地址来满足例如来自指令流1804的指令的执行时,可以对于待执行的翻译的对应CPT 1832来搜索TLB 1830。如果在TLB 1830中对于对应CPT 1832存在命中,则可以返回物理地址并且执行继续。然而,如果在TLB 1830中对于对应CPT 1832存在未命中,则MMU 1828可以促使PMH 1834执行页表游走来找到合适的页表1816以通过例如访问其他级高速缓存或页表1816的实际版本来执行映射。页表游走可以由例如页面未命中处理部件(PMH)1834执行。此外,新的映射可以由于未命中而高速缓存到TLB 1830。
页表还可以包括位来指示是否已经经由页表映射来访问页面。这样的位可以称为‘.A’位。页表还可以包括位来指示是否已经经由页表映射来修改页内容。这样的位可以称为‘.D’位。在页表游走期间,PMH 1834可以设置它遇到的干净(clear)的.A位。此外,在页表游走期间,如果促成页表游走的指令是存储操作或指令,PMH 1834可以设置它遇到的.D位。另外,如果TLB 1830中的命中产生具有清零的.D位的条目,则可以触发页表游走以便在必要时设置.D位。这可以经受上文提到的相同约束:仅在TLB中的命中是存储操作或指令时设置.D。
二进制翻译可以包括在指令运行时间期间修改代码。可以执行二进制翻译来增加指令级并行性,其中代码区可以乱序执行。二进制翻译可以通过将‘访客’或非本机指令的序列翻译成‘主机’或本机硬件指令的序列来执行‘访客’指令集。结果可以包括‘翻译’。本地主机然后可以执行翻译来模拟原始访客代码。在各种实施例中,二进制翻译可以牵涉重排序访客加载和存储来更好地增加指令级并行性。然而,重排序加载和存储还可以对更新页表的.A和.D位的隐式存储重排序。二进制翻译可以包括代码修改。设备可以写它随后执行的指令,其可以称为“自修改代码”。此外,设备可以写另一个设备随后执行的指令,其可以称为“交叉修改代码”。另外,外部代理可写内部代理随后执行的指令,其可以包括由“DMA修改代码”促成的修改,但除DMA以外的机构可以用于改变代码。二进制翻译可以由二进制翻译器1810执行。二进制翻译器可以在处理器1802内或系统1800内但在处理器1802外部实现。二进制翻译器1810可以采用任何适合的方式实现。在一个实施例中,二进制翻译器1810可以由硬件设备实现,该硬件设备包括在处理器1802中实现的有限状态机和逻辑。在另一个实施例中,二进制翻译器1810可以由软件中的指令实现。在各种实施例中,二进制翻译器1810可以由硬件和软件的组合实现。二进制翻译器1810可以将它的结果写入任何适合位点,例如存储器。
二进制翻译器1810的使用可丢失在某些页表访问上的执行。首先,二进制翻译器1810可以如上文描述的那样对存储器操作重排序。然而,例如更新.A和.D位(其指示页表被访问过或变脏)的隐式存储等存储器访问可能不能重排序。这是因为.A和.D存储可需要根据存储器模型排序并且重排序可违背模型。调和二进制翻译与设置的.A和.D位的一个方法是完全有序执行指令区。然而,该方法可能是缓慢的。如果忽略冲突,对一些存储器操作重排序可违背存储器排序并且导致错误。
在一个实施例中,系统1800可以评估存储器重排序是否可见,并且根据它是否不可见而在二进制翻译期间执行位设置。在这样的实施例中,如果重排序操作可见,系统1800可以确定对设置的.A和.D位重排序可存在问题。如果存储器操作在代码的数据独立区中,它们可能不可见。如果设置的.A和.D位在代码的数据依赖区中,可仍存在存储器排序问题。因此,在一个实施例中,系统1800可以确定在翻译中对设置的.A和.D位重排序是否正确或可允许,并且如果是这样的话,允许从翻译内执行访问它们的操作。否则,可以使用例如强制有序执行等方法。
二进制翻译中的排序可以包括在硬件原子区上构建翻译,其可以叫做‘事务’。在一个实施例中,系统1800可以确定对具有设置的.A或.D位的页面的写是否触及不可高速缓存存储器类型。如果是这样的话,存储器操作的重排序可成问题并且相反可以使用强制有序操作。在另一个实施例中,系统1800可以确定对具有设置的.A或.D位的页面的写是否与也被相同事务中的显式加载或存储所触及的位点重叠。如果是这样的话,存储器操作的重排序可成问题并且相反可以使用强制有序执行。许多设置的.A和.D位产生于用户空间代码,其没有读或写页表的特权。此外,操作系统代码可以隔离页表访问,因为另外可能出现竞争条件。然而,如果对具有设置的.A或.D位的页面的写在与显式加载或存储相同的事务内,则重排序可成问题。在再另一个实施例中,一旦完成事务,因为设置的.A和.D位的问题可未波及其他事务,重排序可能并不成问题。在大部分情形下,冲突可以使.A或.D可见,这可能是罕见的。从而,在一些系统中,更常见情况可能被惩罚,因为.A和.D可以视为它们可能可见(这可以使执行变慢)。因为冲突可能是罕见的,使用翻译中的.A或.D位可能多半是正确的,这可以更快。从而,检测实际上不常见的情况的机构可以允许在大部分情形中更好地使用翻译中的.A和.D位。
为了在与设置的.A或.D位关联的二进制翻译期间监测有问题的存储器操作,系统1800可以包括任何适合的机构,其包括上文论述的那些。在一个实施例中,系统1800可以包括监视器单元1834,但如本文描述的监视器单元1834的功能性可以在系统1800的任何适合部分中实现。监视器单元1834可以包括监测单元、过滤器或用于执行本文描述的功能性的其他逻辑。在另一个实施例中,监视器单元1834可以监测存储器事务,并且如果其中的加载或存储与监视器单元1834所跟踪的地址匹配,可以中止事务并且事务例如有序地重新执行。所跟踪的地址可以包括具有设置的它们的.A或.D位的那些。在再另一个实施例中,在设置.A或.D位的TLB 1830未命中时,在页表游走中使用的新地址可以插入监视器单元1800用于进一步监视。另外,事务可以在页表游走后中止以及重新执行。
在一个实施例中,与监视器单元1834所识别的监视位点重叠的加载或存储可以导致事务执行被终止并且以例如有序执行而重新开始。可以对于每个新的事务清除监视器单元1834。在另一个实施例中,如果事务遇到太多.A或.D位,监视器单元1834可能溢出,从而导致事务执行被终止并且以例如有序执行而重新开始。在再另一个实施例中,如果直到事务结束没有中止,可以允许完成事务。
处理器1802可以采用任何适合的方式实现来并行且乱序执行多个指令。在一个实施例中,处理器1802可以执行指令使得指令被提取、发出和未按程序顺序执行。除存储器和可中断指令以外的所有指令可未按程序顺序被提交或引退。然而,在一个实施例中,存储器和可中断指令可能有序被提交或引退(相对或整体)。这样的有序提交和引退可以是误预测或可能的数据依赖过错或错误的结果。有序执行可以包括根据相继PO值的执行。乱序执行可以包括不一定遵循相继PO值的执行。系统1800可以图示处理器1802的元件,其也可以包括任何部件、处理器核、逻辑处理器、处理器或其他处理实体或元件,例如图1-17中图示的那些。
二进制翻译器1810可以采用任何适合的方式实现。在一个实施例中,二进制翻译器1810可以由硬件设备实现,该硬件设备包括在处理器1802中实现的有限状态机和逻辑。在另一个实施例中,二进制翻译器1810可以由软件中的指令实现。在各种实施例中,二进制翻译器1810可以由硬件和软件的组合实现。二进制翻译器1810可以将它的结果写入任何适合位点,例如存储器。这样的存储器可以包括例如专用存储器或到一般可访问存储器的一部分。
在一个实施例中,由系统1800待处理的代码可以包括主机代码和访客代码。主机代码可以包括由处理器(例如处理器1802)待执行的代码。访客代码可以包括由例如二进制翻译器1810翻译的代码。因此,包括主机代码的存储器可以称为主机存储器并且包括访客代码的存储器可以称为访客存储器。
二进制翻译器1810可以读取访客代码序列并且生成主机代码序列作为翻译的结果。在执行时,主机代码应具有如同直接执行访客代码一样相同效果。因此,系统1800可以保留被翻译代码和原始代码的等同功能性。访客代码(翻译的输入)可以采用任何适合的格式实现。访客代码通常可以包括对于处理器格式的指令,例如对于x86处理器的指令。此外,访客代码通常还可以包括对于假设、通用或虚拟处理器的指令。这样的指令可以包括例如采用处理器独立形式的Java字节码。从翻译产生的主机代码可以采用任何适合的格式实现。主机代码通常可以包括采用处理器格式的代码,并且还可以包括采用对于虚拟处理器的格式的指令。如在系统1800内使用的主机代码和访客代码格式可以不同,但在一些实施例中可以相同。例如,二进制翻译器1810可以读取x86格式化的指令并且产生x86格式化的指令。得到的指令在执行时既可以实现输入指令的原始功能性也保存执行跟踪(performance-tracing)信息。访客代码在翻译前可以经受代码修改。在修改访客代码时,修改的效果应如同访客代码被适合的硬件处理器执行一样等同。二进制翻译器1810从而可以运行修改的访客代码,如同它被硬件处理器运行一样。
二进制翻译器1810可以读取访客代码中的指令并且生成主机指令。如上文论述的,这些生成的主机指令可以称为翻译并且翻译代码的原子区可以称为事务。由例如处理器1802或解释器的翻译执行可以包括如同执行原始访客指令一样相同的效果。
处理器1802可以包括前端1806,用于从存储器或指令流1804提取指令。指令流1804的内容可以由二进制翻译器1810翻译或可以由二进制翻译器1810产生。指令可以由解码器1808解码。执行单元1820中的每个可以在由调度器/分配器1810分配、调度和调派指令时执行它们。另外,核或处理器1802可以包括引退单元1822连同高级存储缓冲器(SSB)1826和引退排序缓冲器(ROB)1824以用于处理指令的引退和提交。处理器1802的一个或多个部分可以组织为一个或多个核或非核区。
可以标记由处理器1802待执行的各种操作以在引退时执行。这样的标记可以比其他执行更慢但可以确保排序性质。此外,一些操作可以使SSB 1826停止和释放。在存储操作的执行和引退后,可以请求高级存储缓冲器的释放。这样的高级存储可以包括已被执行、引退但还未提交给数据高速缓存或处理器1802的其他方面的存储操作。
可以从加载和存储方面描述系统1800的操作。然而,系统1800可以相似地处理其他指令,其包括加载或存储到存储器的若干存储器操作数。此外,系统1800可以处理可能每操作数触及多个TLB条目的操作。
在操作中,一系列指令可以由二进制翻译器1810翻译以供执行单元1820执行。该系列指令可以包括指令的原子区中的那些。所得的事务可以对一个或多个执行单元的乱序执行而设置。
在事务中的指令包括存储器访问(例如加载、存储或使用这些中的一个的指令)时,执行单元1820可以请求与加载源或目的地或存储目的地关联的地址。该地址请求可以由存储器子系统做出,该存储器子系统可以包括高速缓存层级(未示出)。请求可以由MMU1828处理。MMU 1828可以首先确定在本地TLB 1832和页表的高速缓存版本(CPT 1832)中是否存在如由指令请求的逻辑地址到如驻存在存储器1812内的物理地址的映射。如果是这样的话,MMU 1812可以翻译地址并且做出存储器子系统的部分的请求。如果否的话,可已经出现TLB未命中并且MMU 1828可以请求由PMH 1834处理未命中。PMH可以通过各种级高速缓存和存储器1812执行页表游走来获得对于请求的关联页表1816的内容。页表游走所触及或修改的每个页表地址可以通过根据情况设置.A或.D位来标记。页表映射可以返回MMU 1828。新的页表可以提供给TLB 1830。事务可以重新开始。
在一个实施例中,PMH 1834可以采用在页表游走期间被修改或访问且其.A或.D位被设置的页表的指示填充监视器单元1836。在另一个实施例中,在后续存储器指令执行期间,MMU 1828可以检查监视器单元1836来确定指定地址是否与在PMH 1834的页表游走期间使它的页表的.A或.D位设置所关联。如果是这样的话,监视器单元1836可以返回存在所请求的地址这一指示,并且从而关联的页表的.A或.D位不干净。在一个实施例中,MMU 1828或监视器单元1836可以基于该确定终止事务的执行。事务可以使用有序执行而不是乱序执行来重新执行。如果指定地址没有在PMH 1834的页表游走期间设置它的页表的.A或.D位,则这样的位可以是干净的,并且地址可能不在监视器单元1836中。在另一个实施例中,MMU1828或监视器单元1836可以基于该确定允许进一步执行事务。
在一个实施例中,在PMH 1834试图在推测性页表游走(对于已翻译的事务)期间设置.A或.D位,可以标记关联的指令以在引退时执行。此外,如果持有.A或.D位的存储器类型是不可高速缓存的,可以中止事务并且相反使用有序执行。
系统1800可以使用多级页表,在该情况下在页表游走期间可以读取若干页表来对TLB 1830构建最后的条目。改变页表的存储可以改变页表游走的操作。从而,对于不同游走的.A和.D位和关联的映射可以根据何时出现存储而相对变化。因此,在一个实施例中,在页表游走中读取的所有位点可以添加到监视器单元1836,即使对指定位点未设置.A或.D位也如此。这可以防止任何重排序存储更新页表以及改变游走。
单个事务可以产生若干页表游走,其中设置.A或.D位。通过设置这些位,可以出现相同结果而不管游走出现(并且从而设置位)的顺序。此外,事务内的执行和产生事务的区的原子性质可以确保存储器1802中没有其他核可以观察其中重排序的操作。另外,监视器单元1836可以确保事务内的存储没有改变影响实际使用哪些页表位点的位点。
如上文论述的,在页表游走后将新的条目插入监视器单元1836时,事务被中止并且重新开始。事务可以重新开始来保证监视器单元1836将所监视的位点与事务触及的所有地址(其包括对于在促成.A和.D位的设置的操作之前在事务中出现的加载和存储的地址)相比较。系统1800从而可以将设置的.A和.D位与“较早的”加载或存储相比较。这些较早的加载和存储可已经被二进制翻译器1810重排序但实际上在原始代码指令是“较晚”的。
在一个实施例中,中止或终止事务也可以丢弃.A和.D更新。从而,在再遇设置这些位的操作时,监视器单元1836可以证实设置的每个.A和.D位已经在监视器单元1836中存在。如果它们已经存在,则可以允许设置继续进行。可未添加新的监视器单元1836。在遇到“新的”地址(例如另一个.A或.D位设置未命中,或页表自设置监视器单元1836以来已改变)时。地址可以添加到监视器单元1836并且事务重新开始。
在一个实施例中,终止和重新开始操作可受到限制,而不是允许其永远循环。在向监视器单元1836添加条目时可需要终止和重新开始,但这样的操作也消耗监视器单元1836中的空间。从而,事务可以完成或它将耗尽监视器单元1836中的空间,从而中止事务以使用不同方法。因此,保证执行中的正向进程,其中事务具有设置.A和.D位的若干存储器操作,以及其中在事务中,其中页表在事务重试之间改变。
TLB 1830中的条目可以是推测性的。如果完成事务,其中的推测性条目是有效的,但如果事务中止(其包括与监视器无关的中止)则可以是无效的。从而,如果TLB 1830支持推测性条目(在事务中止时丢弃),在一个实施例中,条目可以加载到TLB 1830内,标记为推测性的。如果TLB 1830不支持推测性条目,条目应由存储器操作形成和消耗,但可能不输入TLB 1830。在相同事务中的若干操作使用相同映射时,每次可能重建映射。相同事务的后来使用未设置新的位,并且从而未导致事务中止和重新开始。从页表游走的重新游走离开可以通过PMH 1834的特定设计而加速。事务提交可以提交推测性.A和.D位更新。
在事务提交时,SSB 1826可能被释放来确保排序。例如,假设访客顺序是
并且LD Z隐式设置.A位。二进制翻译器1810可以将这些重排序成
如果SSB 1826未被释放,则.A位的设置可以在Y之前达到全局顺序(GO)。使SSB1826释放可以确保在事务提交之前所有存储是GO并且因此原子地表现为代码的其他部分。重排序从而可以不可见。
可以采取这些步骤以遵循.A和.D位排序规则的特定集。其他处理器和系统可以包括不同的排序规则,其可以允许优化或施加可以考虑另外的限制。例如,容忍更富积极性的TLB 1830条目预提取的排序规则还可以减少监视器中所需要的条目的数量。
此外,这些步骤可以假设事务中的主机操作未提供关于原始访客顺序的信息。向例如MMU 1828、PMH 1834和监视器单元1836等部件提供访客排序信息,这可以由于其他原因而是有利的。如果这样的数据在.A和.D位的设置期间可用,数据可以用于跳过对一些指令的监视。在一个实施例中,在跨.A或.D位设置未对负载或加载重排序时可以跳过监视,即使在事务中的其他加载和存储关于彼此重排序时也如此。另外,步骤描述为单个事务范围内的示例。
二进制翻译器1810可以跨事务进行存储器操作推测。例如,加载较早在循环中并且从而在较早的事务中可以被“升起”一个或多个迭代。访客存储器模型可能阻止推测性地设置.A和.D位,如果它们设置.A或.D位,这进而阻止执行这样的“升起”加载。系统1800可以允许.A和.D位的翻译中设置。此外,系统1800可以包括用于指示何时跨事务推测存储器操作并且从而将需要中止的机构。在一个实施例中,二进制翻译器1810可以将特定存储器操作标记为“推测的”。如果推测的操作试图设置.A或.D位,MMU 1828(或系统1800的另一个适合的部分)可以中止它们。在另一个实施例中,二进制翻译器1810可以对事务标记跨事务已经推测至少一个存储器操作。如果存储器操作试图设置.A或.D位,MMU 1828(或另一个适合的机构)可以中止这样的存储器操作。无论是否跨事务推测特定操作,可以进行这样的终止。
如上文论述的,鉴于设置的.A或.D位评估存储器指令的各种步骤可以由系统1800的任何适合的部分实现。例如,这些可以由PMU 1434、二进制翻译器1810、MMU 1828或监视器单元1838设置。这些的功能性可以在必要时组合。此外,这些可以在硬件或硬件和内置软件的组合中实现。
图19是根据本公开的实施例的监视器单元1836和它的操作的更详细图示。如上文论述的,页表的访问可以通过首先查看页表是否高速缓存在TLB 1830中而进行。如果存在未命中,则该未命中可以由PMH 1834处理,该PMH 1834可以执行页表游走来获得正确映射。在页表游走期间可以注意设置的每个.A和.D位,以及其中使用的所有地址。这些可以插入监视器单元1836。
监视器单元1836可以采用任何适合的方式实现,例如用内容可寻址存储器。监视器单元1836可以是名义上关联的。此外,监视器单元1836可以由任何适合的数据结构(例如哈希表或布隆过滤器(Bloom filter))实现,假定该结构实现监视器所需要的基本操作。监视器单元1836可以需要它从不对新的地址报告“已经看到”或“存在”。
监视器单元1836可以包括地址或地址标签的索引。此外,它对于每个条目可以包括指示地址是否“存在”的位,这意指地址由PMH 1834填充,如与页表游走关联。监视器单元1836的所有值初始可以设置成无效。在由PMH 1834或另一个元件输入游走地址时,这些地址可以标记为有效。
在例如存储或加载等后续存储器操作时,可以访问监视器单元1836来查看在页表游走期间是否遇到和标记该地址。如果地址与监视器单元1836中的条目匹配,它可以返回“存在”来指示找到地址。事务从而可以被中止并且采用有序执行方式重新开始。如果地址与监视器单元1836中的任何有效条目不匹配,它可以返回“不存在”来指示未找到地址。可以允许指令执行。
图20图示根据本公开的实施例对于二进制翻译的翻译中位设置的方法2000的示例实施例。在一个实施例中,方法2000可以用系统1800执行。方法2000可以由例如PMH1834、监视器单元1836、二进制翻译器1819或MMU 1828等元件执行。方法2000可以在任何适合的点开始并且可以按照任何适合的顺序执行。在一个实施例中,方法2000可以在2005开始。
在2005,可以接收待执行的指令的原子区。指令区可以由二进制翻译器翻译。此外,指令可以重排序。可以进入翻译的执行。在一个实施例中,监视器可以被清除。
在2010,可以确定在由翻译的原子区产生的事务中是否有待执行的额外指令或剩余工作。如果是这样的话,方法2000可以前进到2015。否则,方法2000可以前进到2065。
在2015,可以选择加载或存储指令或操作(其包括或暗指这样的指令或它的等同物)以供执行。在一个实施例中,可以确定对于指令的目的地地址是否包括在监视器单元中,如之前识别为与页表游走关联的。如果是这样的话,方法2000可以前进到2060。否则,方法2000可以前进到2020。
在2020,可以确定对于地址的映射(或单独接收的另一个指令的地址的映射)在TLB中的页表中是否可用。如果存在TLB未命中,方法2000可以前进到2025。否则,方法2000可以前进到2030。
在2025,可以执行指令。执行可以推进到下一个指令。方法2000可以前进到2010。
在2030,可以执行页表游走来获得正确页表。在一个实施例中,可以确定页表游走是否完全在可高速缓存存储器内进行,或是否牵涉不可高速缓存存储器。如果页表游走完全在可高速缓存存储器内进行,方法2000可以前进到2035。否则,方法2000可以前进到2060。
在2035,在一个实施例中,可以确定在页表游走期间是否设置任何.A或.D位。如果否的话,方法2000可以前进到2040。否则,方法2000可以前进到2045。
在2045,在一个实施例中,可以确定是否需要向监视器单元添加任何新的地址。这些新的地址可以包括设置的.A或.D位的那些的地址。此外,新的地址可以包括在页表游走时遇到的地址。如果任何地址不在监视器单元内,方法2000可以前进到2050。否则,方法2000可以前进到2040。
在2040,TLB可以加载有新近找到的页表。可以重新开始指令的执行。方法2000可以前进到2010。
在2050,在一个实施例中,可以确定监视器单元是否满或溢出。如果是这样的话,方法2000可以前进到2060。否则,方法2000可以前进到2055。
在2055,在一个实施例中,可以确定翻译中位设置将对目前的事务正确运作。在另一个实施例中,另外不在监视器单元内的新的地址可以添加到监视器单元并且设置为有效。TLB可以加载有新近找到的页表。事务的执行可以被中止并且事务执行重新开始。方法2000可以前进到2010。
在2060,在一个实施例中,可以确定翻译中位设置将未对目前的事务正确运作。如需要的话,TLB可以加载有新近找到的页表。事务的执行可以被中止。事务可以例如有序执行。
在2065因为对于事务不需要执行额外工作,可以确定在事务执行期间是否设置任何.A或.D位。如果是这样的话,关联指令可能已经设置成在引退时执行,并且因此在2070处可以使SSB释放。在2075,可以提交事务。方法2000可以终止或可选地重复。
尽管上文描述的方法图示特定元件的操作,方法可以由任何适合组合或类型的元件执行。例如,上文的方法可以由图1-19中图示的元件或可操作成实现方法的任何其他系统实现。如此,对于方法的优选初始化点和构成方法的要素的顺序可以取决于选择的实现。在一些实施例中,一些要素可以可选地被省略、重组、重复或组合。此外,方法中的一些或全部可以完全或部分彼此并行执行。
本文公开的机构的实施例可以在硬件、软件、固件或这样的实现方式的组合中实现。本公开的实施例可实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(其包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。
程序代码可应用于输入指令来执行本文描述的功能并且生成输出信息。该输出信息可采用已知方式应用于一个或多个输出设备。为了该申请,处理系统包括具有处理器的任何系统;例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以采用高级程序式或面向对象的编程语言实现来与处理系统通信。根据期望,程序代码还可以采用汇编或机器语言实现。实际上,本文描述的机构在范围上不限于任何特定编程语言。在任何情况下,语言可以是编译或解释的语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该代表性指令代表处理器内的各种逻辑,其在被机器读取时促使该机器装配逻辑来执行本文描述的技术。这样的表示(称为“IP核”)可以存储在有形的机器可读介质上并且供应给各种客户或制造设施来装入实际上制作逻辑或处理器的装配机器。
这样的机器可读存储介质可以无限制地包括由机器或设备制造或形成的物品的非暂时性有形设置,其包括存储介质,例如硬盘、任何其他类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)和磁光盘;半导体器件,例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁或光卡,或适合于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还可以包括非暂时性有形机器可读介质,其包含指令或包含设计数据,例如硬件描述语言(HDL),其限定本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以称作程序产品。
在一些情况下,指令转换器可用于将来自源指令集的指令转换成目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、动态二进制翻译,其包括动态编译)、变型、仿真或用别的方式转换成要由核处理的一个或多个其他指令。指令转换器可以在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、离开处理器或部分在处理器上并且部分离开处理器。
从而,公开根据至少一个实施例的用于执行一个或多个指令的技术。尽管某些示范性实施例已经在附图中描述和示出,要理解这样的实施例仅仅说明而不限制其他实施例,并且这样的实施例不限于示出和描述的特定构造和设置,因为在本领域内技术人员研究该公开时可想到各种其他修改。在例如这样的技术领域中,增长是快速的并且不容易预见进一步发展,公开的实施例可以从设置和细节方面能容易修改,如通过实现技术发展而促进的,这不偏离本公开的原理或附上的权利要求的范围。
Claims (27)
1.一种处理器,其包括:
二进制翻译器,其包括第一逻辑,用于翻译代码区并且对所述代码区内的翻译的指令重排序来产生事务;
存储器管理单元,其包括:
第二逻辑,用于从所述事务接收存储器指令来访问存储器中的地址;
第三逻辑,用于基于在之前的页表游走期间对地址设置的位来确定在所述事务执行期间所述地址是否与所述之前的页表游走关联;以及
第四逻辑,用于基于所述地址与所述之前的页表游走是否关联这一确定而允许执行所述存储器指令;以及
监测器单元,其包括第五逻辑,用于规定在所述事务执行期间指定地址是否与所述之前的页表游走关联。
2.如权利要求1所述的处理器,其中所述监测器单元进一步包括第六逻辑,用于规定在所述事务执行期间所述指定地址是否在所述之前的页表游走期间被访问过。
3.如权利要求1所述的处理器,其中所述监测器单元进一步包括第六逻辑,用于规定在所述事务执行期间是否在所述之前的页表游走期间写入过所述指定地址。
4.如权利要求1所述的处理器,其进一步包括页面未命中处理单元,该页面未命中处理单元包括:
第六逻辑,用于响应于所述存储器管理单元的页表未命中而执行页表游走;
第七逻辑,用于确定在所述页表游走期间读或写的地址;以及
第八逻辑,用于采用在所述页表游走期间读或写的所确定的地址来填充所述监测器单元。
5.如权利要求1所述的处理器,其中所述存储器管理单元进一步包括:
第六逻辑,用于基于所述地址与任何之前的页表游走关联的确定来中止所述事务的执行;以及
第七逻辑,用于基于所述地址与任何之前的页表游走关联这一确定采用有序方式重新执行所述事务。
6.如权利要求1所述的处理器,其进一步包括引退单元,所述引退单元包括:
第六逻辑,用于确定是否由于所述之前的页表游走而为页表设置任何位;以及
第七逻辑,用于基于由于所述之前的页表游走而为页表设置位这一确定使高级存储缓冲器释放。
7.如权利要求1所述的处理器,其中所述存储器管理单元进一步包括:
第六逻辑,用于确定所述之前的页表游走是否完全或部分在不可高速缓存存储器内实施;以及
第七逻辑,用于基于所述之前的页表游走在不可高速缓存存储器内完全或部分实施这一确定来中止所述事务的执行;以及
第八逻辑,用于基于所述之前的页表游走在不可高速缓存存储器内完全或部分实施这一确定而采用有序方式重新执行所述事务。
8.一种用于二进制翻译的方法,其包括,在处理器内:
翻译代码区并且对所述代码区内的翻译的指令重排序来产生事务;
接收存储器指令来访问存储器中的地址;
基于在之前的页表游走期间对地址设置的位来确定在所述事务执行期间所述地址是否与所述之前的页表游走关联;
基于所述地址与所述之前的页表游走关联这一确定而允许执行所述存储器指令;以及
规定在所述事务执行期间指定地址是否与所述之前的页表游走关联。
9.如权利要求8所述的方法,其进一步包括规定在所述事务执行期间是否在所述之前的页表游走期间访问过所述指定地址。
10.如权利要求8所述的方法,其进一步包括规定在所述事务执行期间是否在所述之前的页表游走期间写入过所述指定地址。
11.如权利要求8所述的方法,其进一步包括:
响应于所述存储器管理单元的页表未命中来执行页表游走;
确定在所述页表游走期间读或写的地址;以及
用在所述页表游走期间读或写的所确定的地址来填充监测器单元。
12.如权利要求8所述的方法,其进一步包括:
基于所述地址与任何之前的页表游走关联这一确定来中止所述事务的执行;以及
基于所述地址与任何之前的页表游走关联这一确定而采用有序方式重新执行所述事务。
13.如权利要求8所述的方法,其进一步包括:
确定是否由于所述之前的页表游走而为页表设置任何位;以及
基于由于所述之前的页表游走而为页表设置位这一确定来使高级存储缓冲器释放。
14.一种用于二进制翻译的系统,其包括:
二进制翻译器,其包括第一逻辑,用于翻译代码区并且对所述代码区内的翻译的指令重排序来产生事务;
存储器管理单元,其包括:
第二逻辑,用于接收存储器指令来访问存储器中的地址;
第三逻辑,用于基于在之前的页表游走期间对地址设置的位来确定在所述事务执行期间所述地址是否与所述之前的页表游走关联;以及
第四逻辑,用于基于所述地址与所述之前的页表游走关联这一确定而允许执行所述存储器指令;以及
监测器单元,其包括第五逻辑,用于规定在所述事务执行期间指定地址是否与所述之前的页表游走关联。
15.如权利要求14所述的系统,其中所述监测器单元进一步包括第六逻辑,用于规定在所述事务执行期间是否在所述之前的页表游走期间访问过所述指定地址。
16.如权利要求14所述的系统,其中所述监测器单元进一步包括第六逻辑,用于规定在所述事务执行期间是否在所述之前的页表游走期间写入过所述指定地址。
17.如权利要求14所述的系统,其进一步包括页面未命中处理单元,所述页面未命中处理单元包括:
第六逻辑,用于响应于所述存储器管理单元的页表未命中来执行页表游走;
第七逻辑,用于确定在所述页表游走期间读或写的地址;以及
第八逻辑,用于采用在所述页表游走期间读或写的所确定的地址来填充所述监测器单元。
18.如权利要求14所述的系统,其中所述存储器管理单元进一步包括:
第六逻辑,用于基于所述地址与任何之前的页表游走关联这一确定来中止所述事务的执行;以及
第七逻辑,用于基于所述地址与任何之前的页表游走关联这一确定采用有序方式重新执行所述事务。
19.如权利要求14所述的系统,其进一步包括引退单元,所述引退单元包括:
第六逻辑,用于确定是否由于所述之前的页表游走而为页表设置任何位;以及
第七逻辑,用于基于由于所述之前的页表游走而为页表设置位这一确定使高级存储缓冲器释放。
20.如权利要求14所述的系统,其中所述存储器管理单元进一步包括:
第六逻辑,用于确定所述之前的页表游走是否完全或部分在不可高速缓存存储器内实施;以及
第七逻辑,用于基于所述之前的页表游走在不可高速缓存存储器内完全或部分实施这一确定而中止所述事务的执行;以及
第八逻辑,用于基于所述之前的页表游走在不可高速缓存存储器内完全或部分实施这一确定而采用有序方式重新执行所述事务。
21.一种用于二进制翻译的装置,其包括:
用于翻译代码区并且对所述代码区内的翻译的指令重排序来产生事务的部件;
用于接收存储器指令来访问存储器中的地址的部件;
用于基于在之前的页表游走期间对地址设置的位来确定在所述事务执行期间所述地址是否与所述之前的页表游走关联的部件;
用于基于所述地址与所述之前的页表游走关联这一确定而允许执行所述存储器指令的部件;以及
用于规定在所述事务执行期间指定地址是否与所述之前的页表游走关联的部件。
22.如权利要求21所述的装置,其进一步包括用于规定在所述事务执行期间是否在所述之前的页表游走期间访问过所述指定地址的部件。
23.如权利要求21所述的装置,其进一步包括用于规定在所述事务执行期间是否在所述之前的页表游走期间写入过所述指定地址的部件。
24.如权利要求21所述的装置,其进一步包括:
用于响应于所述存储器管理单元的页表未命中来执行页表游走的部件;
用于确定在所述页表游走期间读或写的地址的部件;以及
用于用在所述页表游走期间读或写的所确定的地址来填充监测器单元的部件。
25.如权利要求21所述的装置,其进一步包括:
用于基于所述地址与任何之前的页表游走关联这一确定来中止所述事务的执行的部件;以及
用于基于所述地址与任何之前的页表游走关联这一确定而采用有序方式重新执行所述事务的部件。
26.如权利要求21所述的装置,其进一步包括:
用于确定是否由于所述之前的页表游走而为页表设置任何位的部件;以及
用于基于由于所述之前的页表游走而为页表设置位这一确定来使高级存储缓冲器释放的部件。
27.一种计算机可读介质,具有存储在其上的指令,所述指令在执行时促使计算机执行如权利要求8-13中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/580,569 US20160179662A1 (en) | 2014-12-23 | 2014-12-23 | Instruction and logic for page table walk change-bits |
US14/580569 | 2014-12-23 | ||
PCT/US2015/061616 WO2016105720A1 (en) | 2014-12-23 | 2015-11-19 | Instruction and logic for page table walk change-bits |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107077421A CN107077421A (zh) | 2017-08-18 |
CN107077421B true CN107077421B (zh) | 2021-08-17 |
Family
ID=56129547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580063901.8A Active CN107077421B (zh) | 2014-12-23 | 2015-11-19 | 用于页表游走改变位的指令和逻辑 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20160179662A1 (zh) |
EP (1) | EP3238025A1 (zh) |
CN (1) | CN107077421B (zh) |
TW (1) | TWI630480B (zh) |
WO (1) | WO2016105720A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180004521A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Processors, methods, and systems to identify stores that cause remote transactional execution aborts |
CN106250348B (zh) * | 2016-07-19 | 2019-02-12 | 北京工业大学 | 一种基于gpu访存特性的异构多核架构缓存管理方法 |
US10866902B2 (en) * | 2016-12-28 | 2020-12-15 | Intel Corporation | Memory aware reordered source |
KR20180079584A (ko) * | 2016-12-30 | 2018-07-11 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작 방법 |
US11210232B2 (en) | 2019-02-08 | 2021-12-28 | Samsung Electronics Co., Ltd. | Processor to detect redundancy of page table walk |
CN110181928B (zh) * | 2019-07-09 | 2021-09-21 | 苏州微影激光技术有限公司 | 一种丝网印刷版的制版装置及制版方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5367705A (en) * | 1990-06-29 | 1994-11-22 | Digital Equipment Corp. | In-register data manipulation using data shift in reduced instruction set processor |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6219773B1 (en) * | 1993-10-18 | 2001-04-17 | Via-Cyrix, Inc. | System and method of retiring misaligned write operands from a write buffer |
US6477527B2 (en) * | 1997-05-09 | 2002-11-05 | International Business Machines Corporation | System, method, and program for object building in queries over object views |
US6519682B2 (en) * | 1998-12-04 | 2003-02-11 | Stmicroelectronics, Inc. | Pipelined non-blocking level two cache system with inherent transaction collision-avoidance |
US20020046305A1 (en) * | 1999-02-17 | 2002-04-18 | Babaian Boris A. | Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables |
US6615337B1 (en) * | 2001-08-09 | 2003-09-02 | Advanced Micro Devices, Inc. | Method and apparatus for maintaining coherency in a translation lookaside buffer |
KR100493884B1 (ko) * | 2003-01-09 | 2005-06-10 | 삼성전자주식회사 | 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩 |
US7334123B2 (en) * | 2003-05-02 | 2008-02-19 | Advanced Micro Devices, Inc. | Computer system including a bus bridge for connection to a security services processor |
US7739476B2 (en) * | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
US7516365B2 (en) * | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
US8661204B2 (en) * | 2007-08-15 | 2014-02-25 | University Of Rochester, Office Of Technology Transfer | Mechanism to support flexible decoupled transactional memory |
US8195898B2 (en) * | 2007-12-27 | 2012-06-05 | Intel Corporation | Hybrid transactions for low-overhead speculative parallelization |
US7904668B2 (en) * | 2007-12-31 | 2011-03-08 | Oracle America, Inc. | Optimistic semi-static transactional memory implementations |
CN101587447B (zh) * | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
US8566565B2 (en) * | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
CN101739298B (zh) * | 2008-11-27 | 2013-07-31 | 国际商业机器公司 | 共享缓存管理方法和系统 |
US9003171B2 (en) * | 2010-06-23 | 2015-04-07 | Apple Inc. | Page fault prediction for processing vector instructions |
US9009445B2 (en) * | 2011-10-20 | 2015-04-14 | Apple Inc. | Memory management unit speculative hardware table walk scheme |
US10387324B2 (en) * | 2011-12-08 | 2019-08-20 | Intel Corporation | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution |
US8682877B2 (en) * | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9086987B2 (en) * | 2012-09-07 | 2015-07-21 | International Business Machines Corporation | Detection of conflicts between transactions and page shootdowns |
US9189417B2 (en) * | 2012-11-08 | 2015-11-17 | Advanced Micro Devices, Inc. | Speculative tablewalk promotion |
US20140281236A1 (en) * | 2013-03-14 | 2014-09-18 | William C. Rash | Systems and methods for implementing transactional memory |
GB2514107B (en) * | 2013-05-13 | 2020-07-29 | Advanced Risc Mach Ltd | Page table data management |
US9971627B2 (en) * | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
-
2014
- 2014-12-23 US US14/580,569 patent/US20160179662A1/en not_active Abandoned
-
2015
- 2015-11-19 WO PCT/US2015/061616 patent/WO2016105720A1/en active Application Filing
- 2015-11-19 CN CN201580063901.8A patent/CN107077421B/zh active Active
- 2015-11-19 EP EP15873937.5A patent/EP3238025A1/en not_active Withdrawn
- 2015-11-20 TW TW104138530A patent/TWI630480B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5367705A (en) * | 1990-06-29 | 1994-11-22 | Digital Equipment Corp. | In-register data manipulation using data shift in reduced instruction set processor |
Also Published As
Publication number | Publication date |
---|---|
WO2016105720A1 (en) | 2016-06-30 |
TW201640354A (zh) | 2016-11-16 |
US20160179662A1 (en) | 2016-06-23 |
CN107077421A (zh) | 2017-08-18 |
TWI630480B (zh) | 2018-07-21 |
EP3238025A1 (en) | 2017-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351863B (zh) | 用于可编程结构层级结构和高速缓存的指令和逻辑 | |
CN108292215B (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108292229B (zh) | 用于重新出现的相邻聚集的指令和逻辑 | |
US9870209B2 (en) | Instruction and logic for reducing data cache evictions in an out-of-order processor | |
CN109791513B (zh) | 用于检测数值累加误差的指令和逻辑 | |
CN108369516B (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN108351835B (zh) | 用于高速缓存控制操作的指令和逻辑 | |
TWI738682B (zh) | 用於載入索引和散佈元件的處理器、方法及系統 | |
KR101923289B1 (ko) | 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직 | |
CN108351784B (zh) | 用于在乱序处理器中进行有序处理的指令和逻辑 | |
US10338920B2 (en) | Instructions and logic for get-multiple-vector-elements operations | |
US9569212B2 (en) | Instruction and logic for a memory ordering buffer | |
CN107077421B (zh) | 用于页表游走改变位的指令和逻辑 | |
US10540178B2 (en) | Eliminating redundant stores using a protection designator and a clear designator | |
US20160179549A1 (en) | Instruction and Logic for Loop Stream Detection | |
CN106575219B (zh) | 针对用于处理运算的向量格式的指令和逻辑技术领域 | |
CN108292271B (zh) | 用于向量置换的指令和逻辑 | |
US9582432B2 (en) | Instruction and logic for support of code modification in translation lookaside buffers | |
WO2018009378A1 (en) | Register reclamation | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
US20210096866A1 (en) | Instruction length decoding | |
US10133582B2 (en) | Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor | |
US20160179552A1 (en) | Instruction and logic for a matrix scheduler | |
US20190042247A1 (en) | Instruction and logic for predication and implicit destination | |
CN107408035B (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 |